ZGlmZiAtLWdpdCBhL0FVVEhPUlMgYi9BVVRIT1JTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYTE3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9BVVRIT1JTCkBAIC0wLDAgKzEsMzA5IEBACitUaGlzIGZpbGUgaXMgaGVyZSBmb3IgcGVvcGxlIHRvIGxpc3QgdGhlaXIgY29udHJpYnV0aW9ucyB0byB0aGUKK25ldHBlcmYgYmVuY2htYXJrLiBXaGVuIHlvdSBlbmhhbmNlIG9yIGZpeCBzb21ldGhpbmcsIHB1dCB5b3VyIG5hbWUKK2FuZCBhIGRlc2NyaXB0aW9uIG9mIHRoZSB3aGF0L3doZXJlL3doZXkvd2h5L2hvdyBoZXJlLiBJZiB5b3UgbGlrZSwKK2ZlZWwgZnJlZSB0byBpbmNsdWRlIGFuIGVtYWlsIGFkZHJlc3MuIAorCitJIHdvdWxkIGxpa2UgdG8gYXBvbG9naXplIGluIGFkdmFuY2UgdG8gYW55b25lIEkndmUgZm9yZ290dGVuIHRvCitpbmNsdWRlLgorCitSaWNrIEpvbmVzIDxyYWpAY3VwLmhwLmNvbT4KK1Jlc3BvbnNpYmxlIGZvciBpbml0aWFsIHBhY2thZ2luZyBhbmQgcmVsZWFzZSBvZiBuZXRwZXJmIGFuZAorImVkaXRvcmlhbCIgY29udGludWl0eSBmb3Igc3Vic2VxdWVudCByZWxlYXNlcy4gCisKK0thcmVuIENob3kKK0NvZGUgdG8gYWxsb3cgbmV0c2VydmVyIHRvIHJ1biBhcyBhIHN0YW5kYWxvbmUgZGFlbW9uLiAKKworRGF2ZSBTaGllbGQgPGRhdmVzQGNzYy5saXYuYWMudWs+CitXcm90ZSB0aGUgZmlyc3QgcmV2aXNpb24gb2YgdGhlIG5ldHBlcmYgYW5kIG5ldHNlcnZlciBtYW5wYWdlcy4KKworU2FyciBCbHVtc29uIDxzYXJyQGNpdGkudW1pY2guZWR1PgorRml4ZXMgZm9yIEFJWCAzLjEgYW5kIDMuMi4gQWxzbyBmaXhlcyBmb3IgU29sYXJpcyAyLjEgd2l0aG91dAorcmVhbGl6aW5nIGl0IDstKSAKKworSmVmZiBTbWl0cyA8amdzQHVzbC5jb20+CitGaXhlcyBmb3IgVENQX1JSIGFuZCBVRFBfUlIgb24gc3l0ZW1zIHdpdGggYW4gaHRvbmwgdGhhdCBpcyBub3QgYSBuby1vcC4KKworV2FycmVuIEJ1cm5ldHQgPHNvbWV3aGVyZSBpbiBLYW5zYXM+CitFeGFtcGxlIGNvZGUgZm9yIERMUEkgdGVzdHMuCisKK1NldmVyYWwgRm9sa3MKK0NvZGUgdG8gdGVsbCBTdW5PUyA0IHRvICpub3QqIHJlc3RhcnQgc3lzdGVtIGNhbGxzIG9uIHJlY2VpcHQgb2YgYQorc2lnbmFsLiAKKworRm9yZSBTeXN0ZW1zIEluYy4KK01hbnBhZ2VzIGZvciB0aGUgRk9SRSBBUEkgYW5kIHF1ZXN0aW9uIGFuc3dlcmluZworCitEYXZpZCBDaGFubmluCitBY2Nlc3MgdG8gc3lzdGVtcyBydW5uaW5nIHRoZSBGb3JlIEFUTSBBUEkKKworSm9uYXRoYW4gU3RvbmUgPGpvbmF0aGFuQERTRy5TdGFuZm9yZC5FRFU+CitJbmNsdWRlIGZpbGUgZml4ZXMgZm9yIFVsdHJpeAorCitCcnVjZSBCYXJuZXR0IDxiYXJuZXR0QGdyeW1vaXJlLmNyZC5nZS5jb20+CitCdW5jaGVzIG9mIHdhcm5pbmdzIGZpeGVzIGFuZCBsaW50IHBpY2tzIGZvciBTb2xhcmlzIDIuMworCitIZXJtYW4gRGllcmtzIGV0IGFsIDxkaWVya3NAYXVzdGluLmlibS5jb20+CitDb2RlIHRvIGNhbGN1bGF0ZSBjb25maWRlbmNlIGludGVydmFscyBmb3IgdGVzdHMKKworSGFsIE11cnJheSA8bXVycmF5QHBhLmRlYy5jb20+CitIZWxwZnVsIHN1Z2dlc3Rpb25zIGZvciB0aGUgc2NyaXB0cyB0byBtYWtlIHRoZW0gbW9yZSBjb21wYXRpYmxlIHdpdGgKK3RoZSBuZXRwZXJmIGRhdGFiYXNlIChodHRwOi8vd3d3LmN1cC5ocC5jb20vbmV0cGVyZi9OZXRwZXJmUGFnZS5odG1sKS4KK0hpcyBwcm9tcHRpbmcgZmluYWxseSBnb3QgbWUgb2ZmIG15IHdoYXRldmVyIHRvIHB1dCB0aGUgY29uZmlkZW5jZQoraW50ZXJ2YWwgc3R1ZmYgZnJvbSB0aGUgZ3V5cyBhdCBJQk0gaW50byBuZXRwZXJmCisKK1BldGVyIFNrb3BwIHBkc0Bjcy5jb2x1bWJpYS5lZHUKK0ZpeGVzIHRvIG1ha2UgbmV0cGVyZiBtb3JlIHNlY3VyZS4JCisKK1RvbSBXaWxzb24gPHRjd2lsc29uQG5ld2JyaWRnZS5jb20+CitBIGZpeCB0byBzZW5kX3VkcF9yciB0byBjb3JyZWN0IGJvZ3VzIHRocm91Z2hwdXQgdmFsdWVzLgorCitUaG9yc3RlbiBMb2NrZXJ0IDx0aG9sb0B0ZXRoZXJsZXNzLmNvbT4KK0EgYnVuY2ggb2YgY2xlYW4tdXAgZm9yIHRoZSAqQlNEIE9TZXMKKworU2VyZ2UgUGFjaGtvdnNreSA8cHNAb2Npc2dpNy51bml6aC5jaD4KK0NvZGUgZm9yIGxvdy1wcmlvcml0eSBzb2FrZXIgcHJvY2VzcyBmb3IgQUlYIGFuZCBTR0kKKworVGhlIGZpbmUgZm9sa3MgYXQgQWRhcHRlYworVGhlIGluaXRpYWwgcG9ydCBvZiBuZXRwZXJmICgxLjlQTDQpIHRvIFdpbmRvd3MgTlQgMy41MS4KKworUm9iaW4gQ2FsbGVuZGVyIDxyb2Jpbl9jYWxsZW5kZXJAVk5FVC5JQk0uQ09NPgorVGhlIFBQQyBiaW5hcmllcyBmb3IgdGhlIDEuOVBMNCBwb3J0IG9mIG5ldHBlcmYgdG8gTlQgYW5kIGZvciBhc3NvcnRlZAorY29kZSBjbGVhbi11cHMgYW5kIGhlbHAgd2l0aCBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLgorCisiVG9kZCBKLiBEZXJyIiA8dGpkQGZvcmUuY29tPgorRm9yIG9mZmVyaW5nIHRvIHRha2Utb24gc3VwcG9ydCBvZiB0aGUgRm9yZSBBVE0gQVBJIGZpbGVzIHdpdGggMi4xIGFuZAorZm9yIGhpcyBoZWxwIGluIG1ha2luZyB0aGUgdGFyIGZpbGVzIGFuZCBzdWNoIG1vcmUgdXNlci1mcmllbmRseQorCitNaWNoYWVsIFNodWxkbWFuIDxtaWNoYWVsc0BpbmV0Lm5vPgorSW1wcm92ZW1lbnRzIHRvIHRoZSBtYWtlZmlsZSBhbmQgYWRkaXRpb25hbCBjaGVja3MgZm9yIE9wZW5CU0QKK0NoYW5nZXMgdG8gbWFrZSBuZXRwZXJmIG1vcmUgcHJvZmlsaW5nIGZyaWVuZGx5CisKK0tyaXMgQ29yd2luCitkaXNjb3Zlcnkgb2YgYSBkZWJ1ZyBzdGF0ZW1lbnQgb3V0c2lkZSBvZiBpZiAoZGVidWcpIHRoYXQgbWF5IGhhdmUKK2JlZW4gdGhlIGNhdXNlIG9mIGFsbCB0aGUgbmFzdHkgY29ubmVjdGlvbiByZWZ1c2VkIGVycm9ycyBpbiByYW5kb20KK1VEUF9SUiB0ZXN0cy4uLiAKKworQ2hhcmxlcyBIYXJyaXMKK0luaXRpYWwgcHJvdG90eXBlIG9mIHRoZSBUQ1BfU0VOREZJTEUgdGVzdCBzdXBwb3J0CisKK1BoaWxpcCBQaXNoaW9uZXJpIG9mIENvcm5lbAorQ29udmVyc2lvbiBvZiB0aGUgbmV0cGVyZi5wcyBtYW51bCB0byBQREYgZm9ybWF0LgorCitUaGUgSGV3bGV0dC1QYWNrYXJkIE9wZW5WTVMgZm9sa3MKK0Fzc2lzdGFuY2Ugd2l0aCB0aGUgcG9ydCB0byBPcGVuVk1TCisKK011bmVjaGlrYSBTVU1JS0FXQSBAIEtBTUUgUHJvamVjdCAvIEZyZWVCU0Qub3JnCitJUHY2IGZpeGVzCisKK0phbiBJdmVuIG9mIENFUk4KK2luaXRpYWwgbW9kcyBmb3Igc2VuZGZpbGUoKSB1bmRlciBMaW51eAorCitGYWJyaWNlIEJhY2NoZWxsYQorZm9yIHBvaW50aW5nLW91dCB0aGF0IFNvbGFyaXMgOSBoYXMgYSBjb3B5IG9mIExpbnV4IHNlbmRmaWxlKCkKKworQW5kcmV3IEdhbGxhdGluIAorZm9yIGFzc2lzdGFuY2Ugd2l0aCB0aGUgRnJlZUJTRCBzeXNjdGwoKSBzdHVmZiwgYW5kIGxhdGVyIG1ha2luZyBpdAorY2FsaWJyYXRpb24tZnJlZQorZml4ZXMgdG8gY29uZmlndXJlIHRvIHJlY29nbml6ZSBTb2xhcmlzIDExCitmaXhlcyB0byBuZXRjcHVfcHJvY3N0YXQuYyBmb3IgbGF0ZXIgbGludXgga2VybmVscword29ya2Fyb3VuZHMgdG8gZ2V0IExpbnV4IHRvIHJlcG9ydCBFTk9CVUZTIG9uIFRYIHF1ZXVlIG92ZXJmbG93cworCitNYXJrIENvb3BlcgorcG9pbnRpbmctb3V0IHRoZSBuZWVkIGZvciAtbHJlc29sdiB3aGVuIGNvbXBpbGluZyAtRERPX0ROUyBvbiBSZWRIYXQKKzcuMQorCitDYXJsIE1hc2NvdHQgCitmaW5kaW5nIHNvbWUgY3V0LWFuZC1wYXN0ZSBlcm9ycyBpbiBjcmVhdGVfZGF0YV9zb2NrZXQgZXJyb3IgbG9nZ2luZworCitGYWJyaWNlIEJhY2NoZWxsYQorRml4ZXMgZm9yIC1ESElTVE9HUkFNIGFuZCAtRFVOSVggb24gTWFjIE9TIFgsIHVwZGF0ZXMgdG8gdXNhZ2Ugc3RyaW5ncworCitTcGVuY2VyIEZyaW5rCitGaXhlcyBhbmQgQ2xlYW51cCBmb3IgV0lOMzIuICBNYW55IG92ZXIgbWFueSB5ZWFycy4KKworTmljaG9sYXMgVGhvbWFzCitGaXhlcyBmb3IgRExQSSBvbiBTVlI0IFN0cmVhbXMgdW5kZXIgTGludXgKKworRGF2ZSBDcmFpZworRml4ZXMgZm9yIGdldGFkZHJpbmZvIGVycm9yIHJldHVybnMKKworRGF2aWQgTW9zYmVyZ2VyIG9mIEhQCitXb3JrYXJvdW5kIGZvciB0aGUgTGludXggZ2V0c29ja29wdCgpIGJ1ZyB0aGF0IHJldHVybnMgbW9yZSB0aGFuIHRoYXQKK2ZvciB3aGljaCBvbmUgYXNrZWQuCisKK1N0ZXBoZW4gQnVyZ2VyIG9mIEhQCitDb2RlIHRvIGltcGxlbWVudCB0aGUgbmV0c2VydmVyIENQVSBiaW5kaW5nLgorCitWbGFkaXNsYXYgIlZsYWQiIFlhc2V2aWNoIG9mIEhQCitJbml0aWFsIFNDVFAgdGVzdHMuICBFbmhhbmNlbWVudHMgdG8gdGhlIGNvbmZpZ3VyZS5hYyBzb3VyY2VzIHRvIHNob3cKK3RoZSB3YXkgdG8gbWFrZSBtYW55IG9mIHRoZSBMSUJTPSJmb28iIGJlZm9yZSAuL2NvbmZpZ3VyZSB1bm5lY2Vzc2FyeS4KKworUGFkbWFuYWJoYW4gIlBhZGR1IiBTIE4gb2YgSFAKK1BhdGNoZXMgZm9yIC9wcm9jL3N0YXQgQ1BVIHV0aWwgYW5kIHJlY3ZfdGNwX3JyLgorCitDYXJ5IENvdXRhbnQgYW5kIG90aGVyIGhwLW1hYy11c2VycyBvZiBIUAorQWNjZXNzIHRvIE1hYyBPUyBYIHN5c3RlbXMgZm9yIHBvcnRpbmcgbmV0cGVyZiAyLjQuMAorCitDaHJpcyBCZXJ0aW4gb2YgSFAKK0FjY2VzcyB0byBBSVggZm9yIGluaXRpYWwgcG9ydGluZyBvZiBuZXRwZXJmIDIuNC4wCisKK0phbWVzIENhcmxzb24KK0Fzc2lzdGFuY2UgZmluZGluZyB0aGUgcmlnaHQgbWFnaWMgdG8gY29tcGlsZSBTQ1RQIG9uIFNvbGFyaXMgMTAuCisKK0dhdmluIAorUG9pbnRlcnMgb24gU29sYXJpcyAxMCBNaWNyb3N0YXRlIGFjY291bnRpbmcuCisKK0JyZW50IERyYW5leQorR2V0dGluZyBuZXRjcHVfcGVyZnN0YXQuYyBpbiBydW5uaW5nIG9yZGVyIG9uIEFJWCBhbmQgb3RoZXIgbWlzYworZml4dXBzIGluIHBsYWNlcyBzdWNoIGFzIEJTRC4KKworU2FtdWVsIFlpbmcKK0NoYW5nZSBzdHJ1Y3Qgc29ja2FkZHIgdG8gc3RydWN0IHNvY2thZGRyIHN0b3JhZ2UgaW4gbmV0c2VydmVyLmMKKworUm9kb2xwaG8gQm9lcgorRml4IGZvciBkZWZhdWx0IG1lc3NhZ2Ugc2l6ZSBpbiBVRFBfU1RSRUFNIHdoZW4gZGVmdWFsdCBTT19TTkRCVUYgc2l6ZQoraXMgPiBtYXggVURQIGRhdGFncmFtIHNpemUuCisKK01pY2hhZWwgRG9yZmYKK0dldHRpbmcgbmV0cGVyZi9uZXRzZXJ2ZXIgdG8gY29tcGlsZSB1bmRlciBXaW5kb3dzIHdpdGggTVMgVmlzdWFsCitTdHVkaW8gMjAwMworCitHZW9yZ2UgRGF2aXMKK0NoYW5nZXMgdG8gZGVhbCB3aXRoIGRpZmZlcmVudCBmbG9hdGluZy1wb2ludCBmb3JtYXRzLgorCitBbm9ueW1vdXMKK0NoYW5nZXMgdG8gcmV0cmlldmUgQ1BVIHV0aWwgb24gTWFjT1MgWC4KKworRGlja29uIFJlZWQKK1BhdGNoZXMgdG8gYXR0ZW5kIHRvIHNvbWUgd2luZG93cyBpbiBUQ1BfQ1JSIGFuZCBUQ1BfQ0MgdW5kZXIgV2luZG93cworCitCcmV0IE1jS2VlIDxicmV0QGhwLmNvbT4KK0ZpeGVzIHRvIGdldCBuZXRjcHVfbG9vcGVyIGNvbXBpbGluZyBhbmQgd29ya2luZyBhZnRlciB0aGUgIm5ldGNwdSIKK3NwbGl0CisKK0hhbnMgQmxvbQorSW1wcm92ZW1lbnRzIHRvIGNsb3NpbmcvcmVkaXJlY3Rpbmcgc3RkaW4vc3Rkb3V0L3N0ZGVyciBpbiBuZXRzZXJ2ZXIKKworTWFydGluIEJyb3duCitSUE0gc3VwcG9ydCBpbiB0aGUgZm9ybSBvZiBuZXRwZXJmLnNwZWMuaW4gYW5kIHJlbGF0ZWQgY29uZmlndXJlLmFjCitldGMgY2hhbmdlcworCitTaGlscGkgQWdhcndhbAorQ2hhbmdlcyB0byBhbGxvdyBVRFBfU1RSRUFNIHRvIHVzZSBjb25uZWN0ZWQgc29ja2V0cyBvbiBib3RoIHNpZGVzLgorCitTdGV2ZSBSZWluaGFyZHQgPHN0ZXZlckBlZWNzLnVtaWNoLmVkdT4KK0ZpeGVzIGZvciBidWZmZXIgZmlsbGluZy4KKworR2lzbGUgVmFuZW0KK0ZpeGVzIGZvciBXaW5kb3dzIGNvbXBpbGF0aW9uIHVuZGVyIE1pbmdXL2djYy4KKworU2NvdHQgV2VpdHplbmthbXAKK1BhdGNoZXMgdG8gZW5hYmxlIGRlbW8gbW9kZSBpbiB0aGUgVURQX1NUUkVBTSB0ZXN0CisKK0VtaXIgSGFsZXBvdmljCitGZWVkYmFjayBvbiB0aGUgbWFudWFsCisKK0tvdWhlaSBTdXRvdQorR2VuZXJhdGUgbmV0cGVyZl92ZXJzaW9uLmggYW5kIG5ldHBlcmYuc3BlYyB2aWEgY29uZmlndXJlIHJhdGhlciB0aGFuCittYWtlZmlsZSwgaW5jbHVkZSBsaW1pdHMgdG8gZ2V0IFBhdGhNQVggb24gRnJlZUJTRC4KKworRGFuIFlvc3QKK0ZpeCB0byBmZmx1c2goKSBlYWNoIGludGVyaW0gcmVzdWx0IGluIGRlbW8gbW9kZSB0byBtYWtlIHRoaW5ncworaGFwcGllciBmb3IgZm9sa3MgcmVkaXJlY3Rpbmcgc2FtZSB0byBhIGZpbGUuCisKK0FsZXhhbmRlciBEdXljaworRml4ZXMgdG8gcmVwbGFjZSBzdHJ1Y3Qgc29ja2FkZHJfaW4gd2l0aCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQorRml4ZXMgdG8gVURQX1JSIHRvIHByZWNsdWRlIGhhbmdzIG9uIFdpbmRvd3MKK0ZpemVzIHRvIFVEUF9SUiB0byBob25vdXIgLWYgYW5kIC1CIG9wdGlvbnMKKworQW5vbnltb3VzCitTdXBwb3J0IGZvciBzZW5kZmlsZSgpIG9uIE9TWAorCitNYXR0IFdhZGRlbAorRml4IHRvIHVzZSB2Zm9yaygpIGluc3RlYWQgb2YgZm9yaygpIG9uIHBsYXRmb3JtcyB3aXRob3V0IGZvcmsoKQorCitTaW1vbiBCdXJnZSA8c2ltb25iQE5ldEJTRC5vcmc+CitGaXhlcyBmb3IgKkJTRCBDUFUgdXRpbC4KKworQWRhbSBCaWRlbWEKK0ZpeGVzIGZvciBsYXVuY2hpbmcgbmV0c2VydmVyIGNoaWxkcmVuIHdoZW4gdGhlIHBhdGggdG8gbmV0c2VydmVyLmV4ZQoraXMgdmVyeSBsb25nLiAKKworR2lzbGUgVmFuZW0KK01pbmdXIGNuZCBNU0RPUyAoZGpncHApIGNsZWFudXBzLgorCitCcnVubyBDb3JuZWMKK0ZpeGVzIHRvIHN1cHBseSBzb21lIG1pc3NpbmcgZnByaW50ZiBmb3JtYXQgc3RhdGVtZW50cy4KKworSm9zZSBQZWRybyBPbGl2ZWlyYQorTGludXggY29tcGlsYXRpb24gZml4ZXMgd2hlbiBTQ1RQIGFuZCBEQ0NQIGFyZSBlbmFibGVkLiBDaGFuZ2VzIHRvCitjb25maWd1cmUuYWMgdG8gYWxsb3cgaXQgdG8gaW5oZXJpdCBjb21waWxlciBmbGFncyBmcm9tIGVudmlyb25tZW50Cit2YXJpYWJsZXMuCisKK1BhbCBCYXJhbnlhaQorVHlwbyBpbiBuZXR0ZXN0X2RscGkuYworCitCcmlhbiBIYWxleQorQ2hhbmdlcyB0byBhbGxvdyBzb21ldGhpbmcgbGlrZSBuZXRwZXJmIC1IIDo6MSB0byB3b3JrCisKK0ZyYW5rIFNjaHVzdGVyCitEaXNjb3ZlcmluZyB0aGF0IEZyZWVCU0QgOC5YIGFsc28gZG9lcyBub3QgbmVlZCBhbiBTQ1RQIGxpYnJhcnkKKworSm9zc2VsaW4gQ29zdGFuemkKK0RFQlVHX0xPR19GSUxFIHBhdGNoIGZvciBBbmRyb2lkCisKK0RvbmdzaGVuZyBTb25nCitBc3NvcnRlZCBXaW5kb3dzIGZpeGVzCisKK0h1c2hhbiBKaWEKK0ZpeCB0byBhY3R1YWxseSBydW4gU0NUUF9SUl9NQU5ZIHdoZW4gcmVxdWVzdGVkCisKK0RhdmlkIE1hY01haG9uIGRhdmlkbUBhc3Ryby5iZXJrZWxleS5lZHUKK0ZpeCB0byBhbGxvdyBjb25maWd1cmUgaW4gYSBidWlsZCBkaXJlY3RvcnkuCitSZW1vdmUgZHVwbGljYXRlIGh0b25sIGluIHJlY3ZfdWRwX3N0cmVhbSgpLgorCitNYXNhbmFyaSBJaWRhCitDbGVhbnVwcyBmb3IgdGhlIG1hbnVhbC4KKworQW1pciBWaWRhaQorUGF0Y2ggZnJvbSB3aGljaCBjaGFuZ2VzIHRvIHNldCBTT19QUklPUklUWSB3ZXJlIGJhc2VkLgorCitBbGV4YW5kZXIgRHV5Y2sKK1VuY292ZXJpbmcgYW4gb3V0IG9mIGJvdW5kcyBhY2Nlc3Mgb2YgdGhlIG5ldHBlcmZfb3V0cHV0X3NvdXJjZSBhcnJheS4KKworQmpvZXJuIEEuIFplZWIgLSBhIHBhdGNoIHRvIGVuYWJsZSBuZXRwZXJmIHRvIGNvcnJlY3RseSBtYW5pcHVsYXRlCitJUHY2IGFkZHJlc3NlcyBpbiB0aGUgY29udHJvbCBtZXNzYWdlLgorCitTaGFjaGFyIFJhaW5kZWwgLSBhIHBhdGNoIHRvIGJyaW5nIHRoZSAiZ2V0IGxpbnV4IHRvIGVtaXQgRU5PQlVGUyIKK2Z1bmN0aW9uYWxpdHkgZnJvbSBjbGFzc2ljIG5ldHBlcmYgdGVzdHMgdG8gdGhlIG9tbmkgdGVzdHMuCisKK0NoZW1hIEdvbnphbGV6IC0gZml4ZXMgZm9yIHNvbWUgYXNzb3J0ZWQgd2FybmluZ3MuCisKK0RhdmUgVGFodCAtIGNoYW5nZXMgZm9yIHN5bWJvbGljIGhhbmRsaW5nIG9mIFRPUyB2YWx1ZXMKKworRGF2aWQgQWhlcm4gLSBmaXggZm9yIGFuIGluY29ycmVjdCBwb2ludGVyIGNoZWNrCisKK0ppbSBOZWxsIC0gRml4IGZvciBTb2xhcmlzIDExLjEgY29tcGlsYXRpb24gcHJvYmxlbSBpbiBkc2NwLmMKKworU3RldmVuIE5vb25hbiAtIGZvdW5kIGEgdmFyaWFibGUgbmFtZSBidWcgZm9yIHRoZSBldmVyIHVubGlrZWx5IGNhc2UKK29mIGEgcGxhdGZvcm0gbm90IGRlZmluaW5nIFNPX1NOREJVRgorCitBbW9zIEtvbmcgLSBhIGZpeCB0byByZXBvcnQgdGhlIGNvcnJlY3Qgc2VuZCBzaXplIGluIGEgbWlncmF0ZWQKK1RDUF9NQUVSVFMgdGVzdC4gQnVnIHJlcG9ydGVkIGJ5IFdlbmxpIFF1YW4KKworRXJpYyBEdW1hemV0IC0gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgbGF1bmNoaW5nIG1hbnkgbmV0cGVyZnMgYXQKK29uY2UgYnkgb2J0YWluaW5nIHRoZSAxNiBieXRlcyBvZiByYW5kb21uZXNzIGZvciB0aGUgVVVJRCB2aWEgc2xpZ2h0bHkKK2RpZmZlcmVudCBtZWFucy4gIER1bXAgVENQX0lORk8gcmVzdWx0cyB0byBzdGRlcnIgd2hlbiBlaXRoZXIgZGVidWcgPgorMSBvciBEVU1QX1RDUF9JTkZPIGVudnZhciBpcyBzZXQuICBCdW1wIHRoZSBsaXN0ZW4gYmFja2xvZyBmb3IgdGhlCitjb250cm9sIGVuZHBvaW50IHRvIDEwMjQuCisKK0RhdmlkIERlY290aWdueSAtIGEgc2VyaWVzIG9mIGNsZWFudXBzIGFuZCBlbmhhbmNlbWVudHMgaW4gdGhlIGFyZWEgb2YKK0NQVSB1dGlsaXphdGlvbiByZXBvcnRpbmcgYW5kIG1ha2luZyBjZXJ0YWluIHRoYXQgc2FuaXR5IGNoZWNrcyBhcmUKK21hZGUgb24gdGhlIHNpemUgb2YgdGhpbmdzIGJlaW5nIHBhc3NlZCBpbiBjb250cm9sIG1lc3NhZ2VzLgorCitZYW9nb25nIFdhbmcgLSBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIC1OIHRlc3Qtc3BlY2lmaWMgb3B0aW9uIHRvIGhhdmUKK3RoZSBVRFAgc29ja2V0IGNvbm5lY3RlZCBhdCB0aGUgbmV0c2VydmVyIHNpZGUuCisKK1dlaWppYSBTb25nIC0gYSBmaXggaW5zcGlyYXRpb24gZm9yIGEgTlVMTCBwb2ludGVyIHByb2JsZW0uCisKK0dpc2xlIFZhbmVtIC0gc29tZSBXaW5kb3dzIGNvbXBpbGF0aW9uIGZpeGVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvQW5kcm9pZC5tayBiL0FuZHJvaWQubWsKaW5kZXggZTI3ZTBkZS4uNTdmMjA5ZCAxMDA2NDQKLS0tIGEvQW5kcm9pZC5taworKysgYi9BbmRyb2lkLm1rCkBAIC0xNCwyOSArMTQsNDAgQEAKIAogTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQogCi1MX0RFRlMgOj0gLURIQVZFX0NPTkZJR19ICi1MX0NGTEFHUyA6PSAkKExfREVGUykKLUxfVVNFX0NQVV9TT1VSQ0UgOj0gbmV0Y3B1X25vbmUuYworbmV0cGVyZl9DRkxBR1MgOj0gXAorICAtRF9HTlVfU09VUkNFIFwKKyAgLURIQVZFX0NPTkZJR19IIFwKKyAgLWluY2x1ZGUgdW5pc3RkLmggXAorICAtaW5jbHVkZSBzeXMvc2VuZGZpbGUuaCBcCisgIC1Xbm8tc2lnbi1jb21wYXJlIFwKKyAgLVduby11bnVzZWQtcGFyYW1ldGVyIFwKIAotTF9DT01NT05fU1JDIDo9IGhpc3QuaCBuZXRsaWIuYyBuZXRzaC5jIG5ldHRlc3RfYnNkLmMgbmV0dGVzdF9kbHBpLmMgXAotICBuZXR0ZXN0X3VuaXguYyBuZXR0ZXN0X3h0aS5jIG5ldHRlc3Rfc2N0cC5jIG5ldHRlc3Rfc2RwLmMKLQotbmV0cGVyZl9TT1VSQ0VTIDo9IG5ldHBlcmYuYyAkKExfQ09NTU9OX1NSQykgJChMX1VTRV9DUFVfU09VUkNFKQotbmV0c2VydmVyX1NPVVJDRVMgOj0gbmV0c2VydmVyLmMgJChMX0NPTU1PTl9TUkMpICQoTF9VU0VfQ1BVX1NPVVJDRSkKK25ldHBlcmZfU1JDX0ZJTEVTIDo9IFwKKyAgc3JjL2RzY3AuYyBcCisgIHNyYy9uZXRjcHVfcHJvY3N0YXQuYyBcCisgIHNyYy9uZXRsaWIuYyBcCisgIHNyYy9uZXRzaC5jIFwKKyAgc3JjL25ldHRlc3RfYnNkLmMgXAorICBzcmMvbmV0dGVzdF9kbHBpLmMgXAorICBzcmMvbmV0dGVzdF9vbW5pLmMgXAorICBzcmMvbmV0dGVzdF91bml4LmMgXAorICBzcmMvbmV0dGVzdF94dGkuYyBcCisgIHNyYy9uZXR0ZXN0X3NjdHAuYyBcCisgIHNyYy9uZXR0ZXN0X3NkcC5jIFwKKyAgc3JjL25ldF91dWlkLmMgXAogCiBpbmNsdWRlICQoQ0xFQVJfVkFSUykKIExPQ0FMX01PRFVMRSA6PSBuZXRwZXJmCiBMT0NBTF9NT0RVTEVfUEFUSCA6PSAkKFRBUkdFVF9PVVRfT1BUSU9OQUxfRVhFQ1VUQUJMRVMpCiBMT0NBTF9NT0RVTEVfVEFHUyA6PSBlbmcKLUxPQ0FMX0NGTEFHUyA6PSAkKExfQ0ZMQUdTKQotTE9DQUxfU1JDX0ZJTEVTIDo9ICQobmV0cGVyZl9TT1VSQ0VTKQorTE9DQUxfQ0ZMQUdTIDo9ICQobmV0cGVyZl9DRkxBR1MpCitMT0NBTF9TUkNfRklMRVMgOj0gc3JjL25ldHBlcmYuYyAkKG5ldHBlcmZfU1JDX0ZJTEVTKQogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCiAKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQogTE9DQUxfTU9EVUxFIDo9IG5ldHNlcnZlcgogTE9DQUxfTU9EVUxFX1BBVEggOj0gJChUQVJHRVRfT1VUX09QVElPTkFMX0VYRUNVVEFCTEVTKQogTE9DQUxfTU9EVUxFX1RBR1MgOj0gZW5nCi1MT0NBTF9DRkxBR1MgOj0gJChMX0NGTEFHUykKLUxPQ0FMX1NSQ19GSUxFUyA6PSAkKG5ldHNlcnZlcl9TT1VSQ0VTKQorTE9DQUxfQ0ZMQUdTIDo9ICQobmV0cGVyZl9DRkxBR1MpCitMT0NBTF9TUkNfRklMRVMgOj0gc3JjL25ldHNlcnZlci5jICQobmV0cGVyZl9TUkNfRklMRVMpCiBpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKLQpkaWZmIC0tZ2l0IGEvTk9USUNFIGIvQ09QWUlORwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTk9USUNFCnJlbmFtZSB0byBDT1BZSU5HCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk0MDJiMQotLS0gL2Rldi9udWxsCisrKyBiL0NoYW5nZUxvZwpAQCAtMCwwICsxIEBACitTZWUgdGhlIGZpbGUgUmVsZWFzZV9Ob3Rlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9DbGVhblNwZWMubWsgYi9DbGVhblNwZWMubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NGUxYjYuLjAwMDAwMDAKLS0tIGEvQ2xlYW5TcGVjLm1rCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyBJZiB5b3UgZG9uJ3QgbmVlZCB0byBkbyBhIGZ1bGwgY2xlYW4gYnVpbGQgYnV0IHdvdWxkIGxpa2UgdG8gdG91Y2gKLSMgYSBmaWxlIG9yIGRlbGV0ZSBzb21lIGludGVybWVkaWF0ZSBmaWxlcywgYWRkIGEgY2xlYW4gc3RlcCB0byB0aGUgZW5kCi0jIG9mIHRoZSBsaXN0LiAgVGhlc2Ugc3RlcHMgd2lsbCBvbmx5IGJlIHJ1biBvbmNlLCBpZiB0aGV5IGhhdmVuJ3QgYmVlbgotIyBydW4gYmVmb3JlLgotIwotIyBFLmcuOgotIyAgICAgJChjYWxsIGFkZC1jbGVhbi1zdGVwLCB0b3VjaCAtYyBleHRlcm5hbC9zcWxpdGUvc3FsaXRlMy5oKQotIyAgICAgJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChQUk9EVUNUX09VVCkvb2JqL1NUQVRJQ19MSUJSQVJJRVMvbGliel9pbnRlcm1lZGlhdGVzKQotIwotIyBBbHdheXMgdXNlICJ0b3VjaCAtYyIgYW5kICJybSAtZiIgb3IgInJtIC1yZiIgdG8gZ3JhY2VmdWxseSBkZWFsIHdpdGgKLSMgZmlsZXMgdGhhdCBhcmUgbWlzc2luZyBvciBoYXZlIGJlZW4gbW92ZWQuCi0jCi0jIFVzZSAkKFBST0RVQ1RfT1VUKSB0byBnZXQgdG8gdGhlICJvdXQvdGFyZ2V0L3Byb2R1Y3QvYmxhaC8iIGRpcmVjdG9yeS4KLSMgVXNlICQoT1VUX0RJUikgdG8gcmVmZXIgdG8gdGhlICJvdXQiIGRpcmVjdG9yeS4KLSMKLSMgSWYgeW91IG5lZWQgdG8gcmUtZG8gc29tZXRoaW5nIHRoYXQncyBhbHJlYWR5IG1lbnRpb25lZCwganVzdCBjb3B5Ci0jIHRoZSBjb21tYW5kIGFuZCBhZGQgaXQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC4gIEUuZy4sIGlmIGEgY2hhbmdlCi0jIHRoYXQgeW91IG1hZGUgbGFzdCB3ZWVrIHJlcXVpcmVkIHRvdWNoaW5nIGEgZmlsZSBhbmQgYSBjaGFuZ2UgeW91Ci0jIG1hZGUgdG9kYXkgcmVxdWlyZXMgdG91Y2hpbmcgdGhlIHNhbWUgZmlsZSwganVzdCBjb3B5IHRoZSBvbGQKLSMgdG91Y2ggc3RlcCBhbmQgYWRkIGl0IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0jCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyBORVdFUiBDTEVBTiBTVEVQUyBNVVNUIEJFIEFUIFRIRSBFTkQgT0YgVEhFIExJU1QKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSMgRm9yIGV4YW1wbGU6Ci0jJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChPVVRfRElSKS90YXJnZXQvY29tbW9uL29iai9BUFBTL0FuZHJvaWRUZXN0c19pbnRlcm1lZGlhdGVzKQotIyQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgcm0gLXJmICQoT1VUX0RJUikvdGFyZ2V0L2NvbW1vbi9vYmovSkFWQV9MSUJSQVJJRVMvY29yZV9pbnRlcm1lZGlhdGVzKQotIyQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgZmluZCAkKE9VVF9ESVIpIC10eXBlIGYgLW5hbWUgIklHVGFsa1Nlc3Npb24qIiAtcHJpbnQwIHwgeGFyZ3MgLTAgcm0gLWYpCi0jJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChQUk9EVUNUX09VVCkvZGF0YS8qKQotCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyBORVdFUiBDTEVBTiBTVEVQUyBNVVNUIEJFIEFUIFRIRSBFTkQgT0YgVEhFIExJU1QKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGNhZjdjCi0tLSAvZGV2L251bGwKKysrIGIvSU5TVEFMTApAQCAtMCwwICsxLDIyOSBAQAorQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwordW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgorCitCYXNpYyBJbnN0YWxsYXRpb24KKz09PT09PT09PT09PT09PT09PQorCisgICBUaGVzZSBhcmUgZ2VuZXJpYyBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zLgorCisgICBUaGUgYGNvbmZpZ3VyZScgc2hlbGwgc2NyaXB0IGF0dGVtcHRzIHRvIGd1ZXNzIGNvcnJlY3QgdmFsdWVzIGZvcgordmFyaW91cyBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyB1c2VkIGR1cmluZyBjb21waWxhdGlvbi4gIEl0IHVzZXMKK3Rob3NlIHZhbHVlcyB0byBjcmVhdGUgYSBgTWFrZWZpbGUnIGluIGVhY2ggZGlyZWN0b3J5IG9mIHRoZSBwYWNrYWdlLgorSXQgbWF5IGFsc28gY3JlYXRlIG9uZSBvciBtb3JlIGAuaCcgZmlsZXMgY29udGFpbmluZyBzeXN0ZW0tZGVwZW5kZW50CitkZWZpbml0aW9ucy4gIEZpbmFsbHksIGl0IGNyZWF0ZXMgYSBzaGVsbCBzY3JpcHQgYGNvbmZpZy5zdGF0dXMnIHRoYXQKK3lvdSBjYW4gcnVuIGluIHRoZSBmdXR1cmUgdG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgYW5kIGEKK2ZpbGUgYGNvbmZpZy5sb2cnIGNvbnRhaW5pbmcgY29tcGlsZXIgb3V0cHV0ICh1c2VmdWwgbWFpbmx5IGZvcgorZGVidWdnaW5nIGBjb25maWd1cmUnKS4KKworICAgSXQgY2FuIGFsc28gdXNlIGFuIG9wdGlvbmFsIGZpbGUgKHR5cGljYWxseSBjYWxsZWQgYGNvbmZpZy5jYWNoZScKK2FuZCBlbmFibGVkIHdpdGggYC0tY2FjaGUtZmlsZT1jb25maWcuY2FjaGUnIG9yIHNpbXBseSBgLUMnKSB0aGF0IHNhdmVzCit0aGUgcmVzdWx0cyBvZiBpdHMgdGVzdHMgdG8gc3BlZWQgdXAgcmVjb25maWd1cmluZy4gIChDYWNoaW5nIGlzCitkaXNhYmxlZCBieSBkZWZhdWx0IHRvIHByZXZlbnQgcHJvYmxlbXMgd2l0aCBhY2NpZGVudGFsIHVzZSBvZiBzdGFsZQorY2FjaGUgZmlsZXMuKQorCisgICBJZiB5b3UgbmVlZCB0byBkbyB1bnVzdWFsIHRoaW5ncyB0byBjb21waWxlIHRoZSBwYWNrYWdlLCBwbGVhc2UgdHJ5Cit0byBmaWd1cmUgb3V0IGhvdyBgY29uZmlndXJlJyBjb3VsZCBjaGVjayB3aGV0aGVyIHRvIGRvIHRoZW0sIGFuZCBtYWlsCitkaWZmcyBvciBpbnN0cnVjdGlvbnMgdG8gdGhlIGFkZHJlc3MgZ2l2ZW4gaW4gdGhlIGBSRUFETUUnIHNvIHRoZXkgY2FuCitiZSBjb25zaWRlcmVkIGZvciB0aGUgbmV4dCByZWxlYXNlLiAgSWYgeW91IGFyZSB1c2luZyB0aGUgY2FjaGUsIGFuZCBhdAorc29tZSBwb2ludCBgY29uZmlnLmNhY2hlJyBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndCB3YW50IHRvIGtlZXAsIHlvdQorbWF5IHJlbW92ZSBvciBlZGl0IGl0LgorCisgICBUaGUgZmlsZSBgY29uZmlndXJlLmFjJyAob3IgYGNvbmZpZ3VyZS5pbicpIGlzIHVzZWQgdG8gY3JlYXRlCitgY29uZmlndXJlJyBieSBhIHByb2dyYW0gY2FsbGVkIGBhdXRvY29uZicuICBZb3Ugb25seSBuZWVkCitgY29uZmlndXJlLmFjJyBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgaXQgb3IgcmVnZW5lcmF0ZSBgY29uZmlndXJlJyB1c2luZworYSBuZXdlciB2ZXJzaW9uIG9mIGBhdXRvY29uZicuCisKK1RoZSBzaW1wbGVzdCB3YXkgdG8gY29tcGlsZSB0aGlzIHBhY2thZ2UgaXM6CisKKyAgMS4gYGNkJyB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHBhY2thZ2UncyBzb3VyY2UgY29kZSBhbmQgdHlwZQorICAgICBgLi9jb25maWd1cmUnIHRvIGNvbmZpZ3VyZSB0aGUgcGFja2FnZSBmb3IgeW91ciBzeXN0ZW0uICBJZiB5b3UncmUKKyAgICAgdXNpbmcgYGNzaCcgb24gYW4gb2xkIHZlcnNpb24gb2YgU3lzdGVtIFYsIHlvdSBtaWdodCBuZWVkIHRvIHR5cGUKKyAgICAgYHNoIC4vY29uZmlndXJlJyBpbnN0ZWFkIHRvIHByZXZlbnQgYGNzaCcgZnJvbSB0cnlpbmcgdG8gZXhlY3V0ZQorICAgICBgY29uZmlndXJlJyBpdHNlbGYuCisKKyAgICAgUnVubmluZyBgY29uZmlndXJlJyB0YWtlcyBhd2hpbGUuICBXaGlsZSBydW5uaW5nLCBpdCBwcmludHMgc29tZQorICAgICBtZXNzYWdlcyB0ZWxsaW5nIHdoaWNoIGZlYXR1cmVzIGl0IGlzIGNoZWNraW5nIGZvci4KKworICAyLiBUeXBlIGBtYWtlJyB0byBjb21waWxlIHRoZSBwYWNrYWdlLgorCisgIDMuIE9wdGlvbmFsbHksIHR5cGUgYG1ha2UgY2hlY2snIHRvIHJ1biBhbnkgc2VsZi10ZXN0cyB0aGF0IGNvbWUgd2l0aAorICAgICB0aGUgcGFja2FnZS4KKworICA0LiBUeXBlIGBtYWtlIGluc3RhbGwnIHRvIGluc3RhbGwgdGhlIHByb2dyYW1zIGFuZCBhbnkgZGF0YSBmaWxlcyBhbmQKKyAgICAgZG9jdW1lbnRhdGlvbi4KKworICA1LiBZb3UgY2FuIHJlbW92ZSB0aGUgcHJvZ3JhbSBiaW5hcmllcyBhbmQgb2JqZWN0IGZpbGVzIGZyb20gdGhlCisgICAgIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBieSB0eXBpbmcgYG1ha2UgY2xlYW4nLiAgVG8gYWxzbyByZW1vdmUgdGhlCisgICAgIGZpbGVzIHRoYXQgYGNvbmZpZ3VyZScgY3JlYXRlZCAoc28geW91IGNhbiBjb21waWxlIHRoZSBwYWNrYWdlIGZvcgorICAgICBhIGRpZmZlcmVudCBraW5kIG9mIGNvbXB1dGVyKSwgdHlwZSBgbWFrZSBkaXN0Y2xlYW4nLiAgVGhlcmUgaXMKKyAgICAgYWxzbyBhIGBtYWtlIG1haW50YWluZXItY2xlYW4nIHRhcmdldCwgYnV0IHRoYXQgaXMgaW50ZW5kZWQgbWFpbmx5CisgICAgIGZvciB0aGUgcGFja2FnZSdzIGRldmVsb3BlcnMuICBJZiB5b3UgdXNlIGl0LCB5b3UgbWF5IGhhdmUgdG8gZ2V0CisgICAgIGFsbCBzb3J0cyBvZiBvdGhlciBwcm9ncmFtcyBpbiBvcmRlciB0byByZWdlbmVyYXRlIGZpbGVzIHRoYXQgY2FtZQorICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK0NvbXBpbGVycyBhbmQgT3B0aW9ucworPT09PT09PT09PT09PT09PT09PT09CisKKyAgIFNvbWUgc3lzdGVtcyByZXF1aXJlIHVudXN1YWwgb3B0aW9ucyBmb3IgY29tcGlsYXRpb24gb3IgbGlua2luZyB0aGF0Cit0aGUgYGNvbmZpZ3VyZScgc2NyaXB0IGRvZXMgbm90IGtub3cgYWJvdXQuICBSdW4gYC4vY29uZmlndXJlIC0taGVscCcKK2ZvciBkZXRhaWxzIG9uIHNvbWUgb2YgdGhlIHBlcnRpbmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKyAgIFlvdSBjYW4gZ2l2ZSBgY29uZmlndXJlJyBpbml0aWFsIHZhbHVlcyBmb3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCitieSBzZXR0aW5nIHZhcmlhYmxlcyBpbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluIHRoZSBlbnZpcm9ubWVudC4gIEhlcmUKK2lzIGFuIGV4YW1wbGU6CisKKyAgICAgLi9jb25maWd1cmUgQ0M9Yzg5IENGTEFHUz0tTzIgTElCUz0tbHBvc2l4CisKKyAgICpOb3RlIERlZmluaW5nIFZhcmlhYmxlczo6LCBmb3IgbW9yZSBkZXRhaWxzLgorCitDb21waWxpbmcgRm9yIE11bHRpcGxlIEFyY2hpdGVjdHVyZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICBZb3UgY2FuIGNvbXBpbGUgdGhlIHBhY2thZ2UgZm9yIG1vcmUgdGhhbiBvbmUga2luZCBvZiBjb21wdXRlciBhdCB0aGUKK3NhbWUgdGltZSwgYnkgcGxhY2luZyB0aGUgb2JqZWN0IGZpbGVzIGZvciBlYWNoIGFyY2hpdGVjdHVyZSBpbiB0aGVpcgorb3duIGRpcmVjdG9yeS4gIFRvIGRvIHRoaXMsIHlvdSBtdXN0IHVzZSBhIHZlcnNpb24gb2YgYG1ha2UnIHRoYXQKK3N1cHBvcnRzIHRoZSBgVlBBVEgnIHZhcmlhYmxlLCBzdWNoIGFzIEdOVSBgbWFrZScuICBgY2QnIHRvIHRoZQorZGlyZWN0b3J5IHdoZXJlIHlvdSB3YW50IHRoZSBvYmplY3QgZmlsZXMgYW5kIGV4ZWN1dGFibGVzIHRvIGdvIGFuZCBydW4KK3RoZSBgY29uZmlndXJlJyBzY3JpcHQuICBgY29uZmlndXJlJyBhdXRvbWF0aWNhbGx5IGNoZWNrcyBmb3IgdGhlCitzb3VyY2UgY29kZSBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgYGNvbmZpZ3VyZScgaXMgaW4gYW5kIGluIGAuLicuCisKKyAgIElmIHlvdSBoYXZlIHRvIHVzZSBhIGBtYWtlJyB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGBWUEFUSCcKK3ZhcmlhYmxlLCB5b3UgaGF2ZSB0byBjb21waWxlIHRoZSBwYWNrYWdlIGZvciBvbmUgYXJjaGl0ZWN0dXJlIGF0IGEKK3RpbWUgaW4gdGhlIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS4gIEFmdGVyIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUKK3BhY2thZ2UgZm9yIG9uZSBhcmNoaXRlY3R1cmUsIHVzZSBgbWFrZSBkaXN0Y2xlYW4nIGJlZm9yZSByZWNvbmZpZ3VyaW5nCitmb3IgYW5vdGhlciBhcmNoaXRlY3R1cmUuCisKK0luc3RhbGxhdGlvbiBOYW1lcworPT09PT09PT09PT09PT09PT09CisKKyAgIEJ5IGRlZmF1bHQsIGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCB0aGUgcGFja2FnZSdzIGZpbGVzIGluCitgL3Vzci9sb2NhbC9iaW4nLCBgL3Vzci9sb2NhbC9tYW4nLCBldGMuICBZb3UgY2FuIHNwZWNpZnkgYW4KK2luc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBgL3Vzci9sb2NhbCcgYnkgZ2l2aW5nIGBjb25maWd1cmUnIHRoZQorb3B0aW9uIGAtLXByZWZpeD1QQVRIJy4KKworICAgWW91IGNhbiBzcGVjaWZ5IHNlcGFyYXRlIGluc3RhbGxhdGlvbiBwcmVmaXhlcyBmb3IKK2FyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlcyBhbmQgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzLiAgSWYgeW91CitnaXZlIGBjb25maWd1cmUnIHRoZSBvcHRpb24gYC0tZXhlYy1wcmVmaXg9UEFUSCcsIHRoZSBwYWNrYWdlIHdpbGwgdXNlCitQQVRIIGFzIHRoZSBwcmVmaXggZm9yIGluc3RhbGxpbmcgcHJvZ3JhbXMgYW5kIGxpYnJhcmllcy4KK0RvY3VtZW50YXRpb24gYW5kIG90aGVyIGRhdGEgZmlsZXMgd2lsbCBzdGlsbCB1c2UgdGhlIHJlZ3VsYXIgcHJlZml4LgorCisgICBJbiBhZGRpdGlvbiwgaWYgeW91IHVzZSBhbiB1bnVzdWFsIGRpcmVjdG9yeSBsYXlvdXQgeW91IGNhbiBnaXZlCitvcHRpb25zIGxpa2UgYC0tYmluZGlyPVBBVEgnIHRvIHNwZWNpZnkgZGlmZmVyZW50IHZhbHVlcyBmb3IgcGFydGljdWxhcgora2luZHMgb2YgZmlsZXMuICBSdW4gYGNvbmZpZ3VyZSAtLWhlbHAnIGZvciBhIGxpc3Qgb2YgdGhlIGRpcmVjdG9yaWVzCit5b3UgY2FuIHNldCBhbmQgd2hhdCBraW5kcyBvZiBmaWxlcyBnbyBpbiB0aGVtLgorCisgICBJZiB0aGUgcGFja2FnZSBzdXBwb3J0cyBpdCwgeW91IGNhbiBjYXVzZSBwcm9ncmFtcyB0byBiZSBpbnN0YWxsZWQKK3dpdGggYW4gZXh0cmEgcHJlZml4IG9yIHN1ZmZpeCBvbiB0aGVpciBuYW1lcyBieSBnaXZpbmcgYGNvbmZpZ3VyZScgdGhlCitvcHRpb24gYC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYJyBvciBgLS1wcm9ncmFtLXN1ZmZpeD1TVUZGSVgnLgorCitPcHRpb25hbCBGZWF0dXJlcworPT09PT09PT09PT09PT09PT0KKworICAgU29tZSBwYWNrYWdlcyBwYXkgYXR0ZW50aW9uIHRvIGAtLWVuYWJsZS1GRUFUVVJFJyBvcHRpb25zIHRvCitgY29uZmlndXJlJywgd2hlcmUgRkVBVFVSRSBpbmRpY2F0ZXMgYW4gb3B0aW9uYWwgcGFydCBvZiB0aGUgcGFja2FnZS4KK1RoZXkgbWF5IGFsc28gcGF5IGF0dGVudGlvbiB0byBgLS13aXRoLVBBQ0tBR0UnIG9wdGlvbnMsIHdoZXJlIFBBQ0tBR0UKK2lzIHNvbWV0aGluZyBsaWtlIGBnbnUtYXMnIG9yIGB4JyAoZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0pLiAgVGhlCitgUkVBRE1FJyBzaG91bGQgbWVudGlvbiBhbnkgYC0tZW5hYmxlLScgYW5kIGAtLXdpdGgtJyBvcHRpb25zIHRoYXQgdGhlCitwYWNrYWdlIHJlY29nbml6ZXMuCisKKyAgIEZvciBwYWNrYWdlcyB0aGF0IHVzZSB0aGUgWCBXaW5kb3cgU3lzdGVtLCBgY29uZmlndXJlJyBjYW4gdXN1YWxseQorZmluZCB0aGUgWCBpbmNsdWRlIGFuZCBsaWJyYXJ5IGZpbGVzIGF1dG9tYXRpY2FsbHksIGJ1dCBpZiBpdCBkb2Vzbid0LAoreW91IGNhbiB1c2UgdGhlIGBjb25maWd1cmUnIG9wdGlvbnMgYC0teC1pbmNsdWRlcz1ESVInIGFuZAorYC0teC1saWJyYXJpZXM9RElSJyB0byBzcGVjaWZ5IHRoZWlyIGxvY2F0aW9ucy4KKworU3BlY2lmeWluZyB0aGUgU3lzdGVtIFR5cGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIFRoZXJlIG1heSBiZSBzb21lIGZlYXR1cmVzIGBjb25maWd1cmUnIGNhbm5vdCBmaWd1cmUgb3V0CithdXRvbWF0aWNhbGx5LCBidXQgbmVlZHMgdG8gZGV0ZXJtaW5lIGJ5IHRoZSB0eXBlIG9mIG1hY2hpbmUgdGhlIHBhY2thZ2UKK3dpbGwgcnVuIG9uLiAgVXN1YWxseSwgYXNzdW1pbmcgdGhlIHBhY2thZ2UgaXMgYnVpbHQgdG8gYmUgcnVuIG9uIHRoZQorX3NhbWVfIGFyY2hpdGVjdHVyZXMsIGBjb25maWd1cmUnIGNhbiBmaWd1cmUgdGhhdCBvdXQsIGJ1dCBpZiBpdCBwcmludHMKK2EgbWVzc2FnZSBzYXlpbmcgaXQgY2Fubm90IGd1ZXNzIHRoZSBtYWNoaW5lIHR5cGUsIGdpdmUgaXQgdGhlCitgLS1idWlsZD1UWVBFJyBvcHRpb24uICBUWVBFIGNhbiBlaXRoZXIgYmUgYSBzaG9ydCBuYW1lIGZvciB0aGUgc3lzdGVtCit0eXBlLCBzdWNoIGFzIGBzdW40Jywgb3IgYSBjYW5vbmljYWwgbmFtZSB3aGljaCBoYXMgdGhlIGZvcm06CisKKyAgICAgQ1BVLUNPTVBBTlktU1lTVEVNCisKK3doZXJlIFNZU1RFTSBjYW4gaGF2ZSBvbmUgb2YgdGhlc2UgZm9ybXM6CisKKyAgICAgT1MgS0VSTkVMLU9TCisKKyAgIFNlZSB0aGUgZmlsZSBgY29uZmlnLnN1YicgZm9yIHRoZSBwb3NzaWJsZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZC4gIElmCitgY29uZmlnLnN1YicgaXNuJ3QgaW5jbHVkZWQgaW4gdGhpcyBwYWNrYWdlLCB0aGVuIHRoaXMgcGFja2FnZSBkb2Vzbid0CituZWVkIHRvIGtub3cgdGhlIG1hY2hpbmUgdHlwZS4KKworICAgSWYgeW91IGFyZSBfYnVpbGRpbmdfIGNvbXBpbGVyIHRvb2xzIGZvciBjcm9zcy1jb21waWxpbmcsIHlvdSBzaG91bGQKK3VzZSB0aGUgYC0tdGFyZ2V0PVRZUEUnIG9wdGlvbiB0byBzZWxlY3QgdGhlIHR5cGUgb2Ygc3lzdGVtIHRoZXkgd2lsbAorcHJvZHVjZSBjb2RlIGZvci4KKworICAgSWYgeW91IHdhbnQgdG8gX3VzZV8gYSBjcm9zcyBjb21waWxlciwgdGhhdCBnZW5lcmF0ZXMgY29kZSBmb3IgYQorcGxhdGZvcm0gZGlmZmVyZW50IGZyb20gdGhlIGJ1aWxkIHBsYXRmb3JtLCB5b3Ugc2hvdWxkIHNwZWNpZnkgdGhlCisiaG9zdCIgcGxhdGZvcm0gKGkuZS4sIHRoYXQgb24gd2hpY2ggdGhlIGdlbmVyYXRlZCBwcm9ncmFtcyB3aWxsCitldmVudHVhbGx5IGJlIHJ1bikgd2l0aCBgLS1ob3N0PVRZUEUnLgorCitTaGFyaW5nIERlZmF1bHRzCis9PT09PT09PT09PT09PT09CisKKyAgIElmIHlvdSB3YW50IHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgYGNvbmZpZ3VyZScgc2NyaXB0cyB0byBzaGFyZSwKK3lvdSBjYW4gY3JlYXRlIGEgc2l0ZSBzaGVsbCBzY3JpcHQgY2FsbGVkIGBjb25maWcuc2l0ZScgdGhhdCBnaXZlcworZGVmYXVsdCB2YWx1ZXMgZm9yIHZhcmlhYmxlcyBsaWtlIGBDQycsIGBjYWNoZV9maWxlJywgYW5kIGBwcmVmaXgnLgorYGNvbmZpZ3VyZScgbG9va3MgZm9yIGBQUkVGSVgvc2hhcmUvY29uZmlnLnNpdGUnIGlmIGl0IGV4aXN0cywgdGhlbgorYFBSRUZJWC9ldGMvY29uZmlnLnNpdGUnIGlmIGl0IGV4aXN0cy4gIE9yLCB5b3UgY2FuIHNldCB0aGUKK2BDT05GSUdfU0lURScgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBzaXRlIHNjcmlwdC4KK0Egd2FybmluZzogbm90IGFsbCBgY29uZmlndXJlJyBzY3JpcHRzIGxvb2sgZm9yIGEgc2l0ZSBzY3JpcHQuCisKK0RlZmluaW5nIFZhcmlhYmxlcworPT09PT09PT09PT09PT09PT09CisKKyAgIFZhcmlhYmxlcyBub3QgZGVmaW5lZCBpbiBhIHNpdGUgc2hlbGwgc2NyaXB0IGNhbiBiZSBzZXQgaW4gdGhlCitlbnZpcm9ubWVudCBwYXNzZWQgdG8gYGNvbmZpZ3VyZScuICBIb3dldmVyLCBzb21lIHBhY2thZ2VzIG1heSBydW4KK2NvbmZpZ3VyZSBhZ2FpbiBkdXJpbmcgdGhlIGJ1aWxkLCBhbmQgdGhlIGN1c3RvbWl6ZWQgdmFsdWVzIG9mIHRoZXNlCit2YXJpYWJsZXMgbWF5IGJlIGxvc3QuICBJbiBvcmRlciB0byBhdm9pZCB0aGlzIHByb2JsZW0sIHlvdSBzaG91bGQgc2V0Cit0aGVtIGluIHRoZSBgY29uZmlndXJlJyBjb21tYW5kIGxpbmUsIHVzaW5nIGBWQVI9dmFsdWUnLiAgRm9yIGV4YW1wbGU6CisKKyAgICAgLi9jb25maWd1cmUgQ0M9L3Vzci9sb2NhbDIvYmluL2djYworCit3aWxsIGNhdXNlIHRoZSBzcGVjaWZpZWQgZ2NjIHRvIGJlIHVzZWQgYXMgdGhlIEMgY29tcGlsZXIgKHVubGVzcyBpdCBpcworb3ZlcnJpZGRlbiBpbiB0aGUgc2l0ZSBzaGVsbCBzY3JpcHQpLgorCitgY29uZmlndXJlJyBJbnZvY2F0aW9uCis9PT09PT09PT09PT09PT09PT09PT09CisKKyAgIGBjb25maWd1cmUnIHJlY29nbml6ZXMgdGhlIGZvbGxvd2luZyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IGl0CitvcGVyYXRlcy4KKworYC0taGVscCcKK2AtaCcKKyAgICAgUHJpbnQgYSBzdW1tYXJ5IG9mIHRoZSBvcHRpb25zIHRvIGBjb25maWd1cmUnLCBhbmQgZXhpdC4KKworYC0tdmVyc2lvbicKK2AtVicKKyAgICAgUHJpbnQgdGhlIHZlcnNpb24gb2YgQXV0b2NvbmYgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYGNvbmZpZ3VyZScKKyAgICAgc2NyaXB0LCBhbmQgZXhpdC4KKworYC0tY2FjaGUtZmlsZT1GSUxFJworICAgICBFbmFibGUgdGhlIGNhY2hlOiB1c2UgYW5kIHNhdmUgdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3RzIGluIEZJTEUsCisgICAgIHRyYWRpdGlvbmFsbHkgYGNvbmZpZy5jYWNoZScuICBGSUxFIGRlZmF1bHRzIHRvIGAvZGV2L251bGwnIHRvCisgICAgIGRpc2FibGUgY2FjaGluZy4KKworYC0tY29uZmlnLWNhY2hlJworYC1DJworICAgICBBbGlhcyBmb3IgYC0tY2FjaGUtZmlsZT1jb25maWcuY2FjaGUnLgorCitgLS1xdWlldCcKK2AtLXNpbGVudCcKK2AtcScKKyAgICAgRG8gbm90IHByaW50IG1lc3NhZ2VzIHNheWluZyB3aGljaCBjaGVja3MgYXJlIGJlaW5nIG1hZGUuICBUbworICAgICBzdXBwcmVzcyBhbGwgbm9ybWFsIG91dHB1dCwgcmVkaXJlY3QgaXQgdG8gYC9kZXYvbnVsbCcgKGFueSBlcnJvcgorICAgICBtZXNzYWdlcyB3aWxsIHN0aWxsIGJlIHNob3duKS4KKworYC0tc3JjZGlyPURJUicKKyAgICAgTG9vayBmb3IgdGhlIHBhY2thZ2UncyBzb3VyY2UgY29kZSBpbiBkaXJlY3RvcnkgRElSLiAgVXN1YWxseQorICAgICBgY29uZmlndXJlJyBjYW4gZGV0ZXJtaW5lIHRoYXQgZGlyZWN0b3J5IGF1dG9tYXRpY2FsbHkuCisKK2Bjb25maWd1cmUnIGFsc28gYWNjZXB0cyBzb21lIG90aGVyLCBub3Qgd2lkZWx5IHVzZWZ1bCwgb3B0aW9ucy4gIFJ1bgorYGNvbmZpZ3VyZSAtLWhlbHAnIGZvciBtb3JlIGRldGFpbHMuCisKZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJiZDk1ZQotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsNCBAQAorCitBVVRPTUFLRV9PUFRJT05TID0gZGlzdC1iemlwMiBkaXN0LXppcAorU1VCRElSUyA9IHNyYyBkb2MKK0VYVFJBX0RJU1QgPSBSRUFETUUuKiBSZWxlYXNlX05vdGVzIGluZXRfbnRvcC5jIGF1dG9nZW4uc2ggbTQKZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YyYTJlNgotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsNzIyIEBACisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKworIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0CisjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFLgorCitAU0VUX01BS0VACitWUEFUSCA9IEBzcmNkaXJACitwa2dkYXRhZGlyID0gJChkYXRhZGlyKS9AUEFDS0FHRUAKK3BrZ2luY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL0BQQUNLQUdFQAorcGtnbGliZGlyID0gJChsaWJkaXIpL0BQQUNLQUdFQAorcGtnbGliZXhlY2RpciA9ICQobGliZXhlY2RpcikvQFBBQ0tBR0VACithbV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNkCitpbnN0YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NAoraW5zdGFsbF9zaF9QUk9HUkFNID0gJChpbnN0YWxsX3NoKSAtYworaW5zdGFsbF9zaF9TQ1JJUFQgPSAkKGluc3RhbGxfc2gpIC1jCitJTlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQordHJhbnNmb3JtID0gJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKQorTk9STUFMX0lOU1RBTEwgPSA6CitQUkVfSU5TVEFMTCA9IDoKK1BPU1RfSU5TVEFMTCA9IDoKK05PUk1BTF9VTklOU1RBTEwgPSA6CitQUkVfVU5JTlNUQUxMID0gOgorUE9TVF9VTklOU1RBTEwgPSA6CitidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAoraG9zdF90cmlwbGV0ID0gQGhvc3RACit0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACitzdWJkaXIgPSAuCitESVNUX0NPTU1PTiA9IFJFQURNRSAkKGFtX19jb25maWd1cmVfZGVwcykgJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKKwkkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL2NvbmZpZy5oLmluIFwKKwkkKHNyY2RpcikvbmV0cGVyZi5zcGVjLmluICQodG9wX3NyY2RpcikvY29uZmlndXJlIEFVVEhPUlMgXAorCUNPUFlJTkcgQ2hhbmdlTG9nIElOU1RBTEwgTkVXUyBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiBkZXBjb21wIFwKKwlpbnN0YWxsLXNoIG1pc3NpbmcgbWtpbnN0YWxsZGlycworQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAorYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2Rpcikvc3JjL21pc3NpbmcvbTQvc2FsZW4ubTQgXAorCSQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCithbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAorCSQoQUNMT0NBTF9NNCkKK2FtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTID0gY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBcCisgY29uZmlndXJlLmxpbmVubyBjb25maWcuc3RhdHVzLmxpbmVubworbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycworQ09ORklHX0hFQURFUiA9IGNvbmZpZy5oCitDT05GSUdfQ0xFQU5fRklMRVMgPSBuZXRwZXJmLnNwZWMKK0NPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CitTT1VSQ0VTID0KK0RJU1RfU09VUkNFUyA9CitSRUNVUlNJVkVfVEFSR0VUUyA9IGFsbC1yZWN1cnNpdmUgY2hlY2stcmVjdXJzaXZlIGR2aS1yZWN1cnNpdmUgXAorCWh0bWwtcmVjdXJzaXZlIGluZm8tcmVjdXJzaXZlIGluc3RhbGwtZGF0YS1yZWN1cnNpdmUgXAorCWluc3RhbGwtZHZpLXJlY3Vyc2l2ZSBpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIFwKKwlpbnN0YWxsLWh0bWwtcmVjdXJzaXZlIGluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAorCWluc3RhbGwtcGRmLXJlY3Vyc2l2ZSBpbnN0YWxsLXBzLXJlY3Vyc2l2ZSBpbnN0YWxsLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZSBpbnN0YWxsZGlycy1yZWN1cnNpdmUgcGRmLXJlY3Vyc2l2ZSBcCisJcHMtcmVjdXJzaXZlIHVuaW5zdGFsbC1yZWN1cnNpdmUKK1JFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTID0gbW9zdGx5Y2xlYW4tcmVjdXJzaXZlIGNsZWFuLXJlY3Vyc2l2ZQlcCisgIGRpc3RjbGVhbi1yZWN1cnNpdmUgbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKK0FNX1JFQ1VSU0lWRV9UQVJHRVRTID0gJChSRUNVUlNJVkVfVEFSR0VUUzotcmVjdXJzaXZlPSkgXAorCSQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFM6LXJlY3Vyc2l2ZT0pIHRhZ3MgVEFHUyBjdGFncyBDVEFHUyBcCisJZGlzdGRpciBkaXN0IGRpc3QtYWxsIGRpc3RjaGVjaworRVRBR1MgPSBldGFncworQ1RBR1MgPSBjdGFncworRElTVF9TVUJESVJTID0gJChTVUJESVJTKQorRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKK2Rpc3RkaXIgPSAkKFBBQ0tBR0UpLSQoVkVSU0lPTikKK3RvcF9kaXN0ZGlyID0gJChkaXN0ZGlyKQorYW1fX3JlbW92ZV9kaXN0ZGlyID0gXAorICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIpIjsgdGhlbiBcCisgICAgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC0yMDAgLWV4ZWMgY2htb2QgdSt3IHt9ICc7JyBcCisgICAgICAmJiBybSAtcmYgIiQoZGlzdGRpcikiIFwKKyAgICAgIHx8IHsgc2xlZXAgNSAmJiBybSAtcmYgIiQoZGlzdGRpcikiOyB9OyBcCisgIGVsc2UgOjsgZmkKK2FtX19yZWxhdGl2aXplID0gXAorICBkaXIwPWBwd2RgOyBcCisgIHNlZF9maXJzdD0ncyxeXChbXi9dKlwpLy4qJCQsXDEsJzsgXAorICBzZWRfcmVzdD0ncyxeW14vXSovKiwsJzsgXAorICBzZWRfbGFzdD0ncyxeLiovXChbXi9dKlwpJCQsXDEsJzsgXAorICBzZWRfYnV0bGFzdD0ncywvKlteL10qJCQsLCc7IFwKKyAgd2hpbGUgdGVzdCAtbiAiJCRkaXIxIjsgZG8gXAorICAgIGZpcnN0PWBlY2hvICIkJGRpcjEiIHwgc2VkIC1lICIkJHNlZF9maXJzdCJgOyBcCisgICAgaWYgdGVzdCAiJCRmaXJzdCIgIT0gIi4iOyB0aGVuIFwKKyAgICAgIGlmIHRlc3QgIiQkZmlyc3QiID0gIi4uIjsgdGhlbiBcCisgICAgICAgIGRpcjI9YGVjaG8gIiQkZGlyMCIgfCBzZWQgLWUgIiQkc2VkX2xhc3QiYC8iJCRkaXIyIjsgXAorICAgICAgICBkaXIwPWBlY2hvICIkJGRpcjAiIHwgc2VkIC1lICIkJHNlZF9idXRsYXN0ImA7IFwKKyAgICAgIGVsc2UgXAorICAgICAgICBmaXJzdDI9YGVjaG8gIiQkZGlyMiIgfCBzZWQgLWUgIiQkc2VkX2ZpcnN0ImA7IFwKKyAgICAgICAgaWYgdGVzdCAiJCRmaXJzdDIiID0gIiQkZmlyc3QiOyB0aGVuIFwKKyAgICAgICAgICBkaXIyPWBlY2hvICIkJGRpcjIiIHwgc2VkIC1lICIkJHNlZF9yZXN0ImA7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgZGlyMj0iLi4vJCRkaXIyIjsgXAorICAgICAgICBmaTsgXAorICAgICAgICBkaXIwPSIkJGRpcjAiLyIkJGZpcnN0IjsgXAorICAgICAgZmk7IFwKKyAgICBmaTsgXAorICAgIGRpcjE9YGVjaG8gIiQkZGlyMSIgfCBzZWQgLWUgIiQkc2VkX3Jlc3QiYDsgXAorICBkb25lOyBcCisgIHJlbGRpcj0iJCRkaXIyIgorRElTVF9BUkNISVZFUyA9ICQoZGlzdGRpcikudGFyLmd6ICQoZGlzdGRpcikudGFyLmJ6MiAkKGRpc3RkaXIpLnppcAorR1pJUF9FTlYgPSAtLWJlc3QKK2Rpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMgPSBmaW5kIC4gLXR5cGUgZiAtcHJpbnQKK2FtX19kaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzID0gJChkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSBcCisgIHwgc2VkICdzfF5cLi98JChwcmVmaXgpL3wnIHwgZ3JlcCAtdiAnJChpbmZvZGlyKS9kaXIkJCcKK2Rpc3RjbGVhbmNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAorQUNMT0NBTCA9IEBBQ0xPQ0FMQAorQU1UQVIgPSBAQU1UQVJACitBVVRPQ09ORiA9IEBBVVRPQ09ORkAKK0FVVE9IRUFERVIgPSBAQVVUT0hFQURFUkAKK0FVVE9NQUtFID0gQEFVVE9NQUtFQAorQVdLID0gQEFXS0AKK0NDID0gQENDQAorQ0NERVBNT0RFID0gQENDREVQTU9ERUAKK0NGTEFHUyA9IEBDRkxBR1NACitDUFAgPSBAQ1BQQAorQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAorREVGUyA9IEBERUZTQAorREVQRElSID0gQERFUERJUkAKK0VDSE9fQyA9IEBFQ0hPX0NACitFQ0hPX04gPSBARUNIT19OQAorRUNIT19UID0gQEVDSE9fVEAKK0VHUkVQID0gQEVHUkVQQAorRVhFRVhUID0gQEVYRUVYVEAKK0dSRVAgPSBAR1JFUEAKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5TVEFMTF9TVFJJUF9QUk9HUkFNQAorTERGTEFHUyA9IEBMREZMQUdTQAorTElCT0JKUyA9IEBMSUJPQkpTQAorTElCUyA9IEBMSUJTQAorTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK01BS0VJTkZPID0gQE1BS0VJTkZPQAorTUtESVJfUCA9IEBNS0RJUl9QQAorTkVUQ1BVX1NPVVJDRSA9IEBORVRDUFVfU09VUkNFQAorT0JKRVhUID0gQE9CSkVYVEAKK1BBQ0tBR0UgPSBAUEFDS0FHRUAKK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKK1BBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAorUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKK1BBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAorUkFOTElCID0gQFJBTkxJQkAKK1NFVF9NQUtFID0gQFNFVF9NQUtFQAorU0hFTEwgPSBAU0hFTExACitTVFJJUCA9IEBTVFJJUEAKK1ZFUlNJT04gPSBAVkVSU0lPTkAKK2Fic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACithYnNfc3JjZGlyID0gQGFic19zcmNkaXJACithYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACithYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0NDID0gQGFjX2N0X0NDQAorYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACithbV9fbGVhZGluZ19kb3QgPSBAYW1fX2xlYWRpbmdfZG90QAorYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKK2FtX190YXIgPSBAYW1fX3RhckAKK2FtX191bnRhciA9IEBhbV9fdW50YXJACitiaW5kaXIgPSBAYmluZGlyQAorYnVpbGQgPSBAYnVpbGRACitidWlsZF9hbGlhcyA9IEBidWlsZF9hbGlhc0AKK2J1aWxkX2NwdSA9IEBidWlsZF9jcHVACitidWlsZF9vcyA9IEBidWlsZF9vc0AKK2J1aWxkX3ZlbmRvciA9IEBidWlsZF92ZW5kb3JACitidWlsZGRpciA9IEBidWlsZGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2RhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorZG9jZGlyID0gQGRvY2RpckAKK2R2aWRpciA9IEBkdmlkaXJACitleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK2hvc3QgPSBAaG9zdEAKK2hvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKK2hvc3RfY3B1ID0gQGhvc3RfY3B1QAoraG9zdF9vcyA9IEBob3N0X29zQAoraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACitodG1sZGlyID0gQGh0bWxkaXJACitpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACitpbmZvZGlyID0gQGluZm9kaXJACitpbnN0YWxsX3NoID0gQGluc3RhbGxfc2hACitsaWJkaXIgPSBAbGliZGlyQAorbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAorbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKK2xvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKK21hbmRpciA9IEBtYW5kaXJACitta2Rpcl9wID0gQG1rZGlyX3BACitvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACitwZGZkaXIgPSBAcGRmZGlyQAorcHJlZml4ID0gQHByZWZpeEAKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKK3BzZGlyID0gQHBzZGlyQAorc2JpbmRpciA9IEBzYmluZGlyQAorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACitzcmNkaXIgPSBAc3JjZGlyQAorc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAordGFyZ2V0ID0gQHRhcmdldEAKK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACit0YXJnZXRfY3B1ID0gQHRhcmdldF9jcHVACit0YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAordGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAordG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAordG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK0FVVE9NQUtFX09QVElPTlMgPSBkaXN0LWJ6aXAyIGRpc3QtemlwCitTVUJESVJTID0gc3JjIGRvYworRVhUUkFfRElTVCA9IFJFQURNRS4qIFJlbGVhc2VfTm90ZXMgaW5ldF9udG9wLmMgYXV0b2dlbi5zaCBtNAorYWxsOiBjb25maWcuaAorCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFsbC1yZWN1cnNpdmUKKworLlNVRkZJWEVTOgorYW0tLXJlZnJlc2g6IE1ha2VmaWxlCisJQDoKKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJQGZvciBkZXAgaW4gJD87IGRvIFwKKwkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4gXAorCSAgICAqJCRkZXAqKSBcCisJICAgICAgZWNobyAnIGNkICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSc7IFwKKwkgICAgICAkKGFtX19jZCkgJChzcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IFwKKwkJJiYgZXhpdCAwOyBcCisJICAgICAgZXhpdCAxOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBNYWtlZmlsZSc7IFwKKwkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCisJICAkKEFVVE9NQUtFKSAtLWdudSBNYWtlZmlsZQorLlBSRUNJT1VTOiBNYWtlZmlsZQorTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCUBjYXNlICckPycgaW4gXAorCSAgKmNvbmZpZy5zdGF0dXMqKSBcCisJICAgIGVjaG8gJyAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMnOyBcCisJICAgICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1czs7IFwKKwkgICopIFwKKwkgICAgZWNobyAnIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKKwllc2FjOworCiskKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKKwkkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCisKKyQodG9wX3NyY2RpcikvY29uZmlndXJlOiAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJJChhbV9fY2QpICQoc3JjZGlyKSAmJiAkKEFVVE9DT05GKQorJChBQ0xPQ0FMX000KTogICQoYW1fX2FjbG9jYWxfbTRfZGVwcykKKwkkKGFtX19jZCkgJChzcmNkaXIpICYmICQoQUNMT0NBTCkgJChBQ0xPQ0FMX0FNRkxBR1MpCiskKGFtX19hY2xvY2FsX200X2RlcHMpOgorCitjb25maWcuaDogc3RhbXAtaDEKKwlAaWYgdGVzdCAhIC1mICRAOyB0aGVuIHJtIC1mIHN0YW1wLWgxOyBlbHNlIDo7IGZpCisJQGlmIHRlc3QgISAtZiAkQDsgdGhlbiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBzdGFtcC1oMTsgZWxzZSA6OyBmaQorCitzdGFtcC1oMTogJChzcmNkaXIpL2NvbmZpZy5oLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQHJtIC1mIHN0YW1wLWgxCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyBjb25maWcuaAorJChzcmNkaXIpL2NvbmZpZy5oLmluOiAgJChhbV9fY29uZmlndXJlX2RlcHMpIAorCSgkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9IRUFERVIpKQorCXJtIC1mIHN0YW1wLWgxCisJdG91Y2ggJEAKKworZGlzdGNsZWFuLWhkcjoKKwktcm0gLWYgY29uZmlnLmggc3RhbXAtaDEKK25ldHBlcmYuc3BlYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL25ldHBlcmYuc3BlYy5pbgorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAKKworIyBUaGlzIGRpcmVjdG9yeSdzIHN1YmRpcmVjdG9yaWVzIGFyZSBtb3N0bHkgaW5kZXBlbmRlbnQ7IHlvdSBjYW4gY2QKKyMgaW50byB0aGVtIGFuZCBydW4gYG1ha2UnIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGlzIE1ha2VmaWxlLgorIyBUbyBjaGFuZ2UgdGhlIHZhbHVlcyBvZiBgbWFrZScgdmFyaWFibGVzOiBpbnN0ZWFkIG9mIGVkaXRpbmcgTWFrZWZpbGVzLAorIyAoMSkgaWYgdGhlIHZhcmlhYmxlIGlzIHNldCBpbiBgY29uZmlnLnN0YXR1cycsIGVkaXQgYGNvbmZpZy5zdGF0dXMnCisjICAgICAod2hpY2ggd2lsbCBjYXVzZSB0aGUgTWFrZWZpbGVzIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4geW91IHJ1biBgbWFrZScpOworIyAoMikgb3RoZXJ3aXNlLCBwYXNzIHRoZSBkZXNpcmVkIHZhbHVlcyBvbiB0aGUgYG1ha2UnIGNvbW1hbmQgbGluZS4KKyQoUkVDVVJTSVZFX1RBUkdFVFMpOgorCUBmYWlsPSBmYWlsY29tPSdleGl0IDEnOyBcCisJZm9yIGYgaW4geCAkJE1BS0VGTEFHUzsgZG8gXAorCSAgY2FzZSAkJGYgaW4gXAorCSAgICAqPSogfCAtLVsha10qKTs7IFwKKwkgICAgKmsqKSBmYWlsY29tPSdmYWlsPXllcyc7OyBcCisJICBlc2FjOyBcCisJZG9uZTsgXAorCWRvdF9zZWVuPW5vOyBcCisJdGFyZ2V0PWBlY2hvICRAIHwgc2VkIHMvLXJlY3Vyc2l2ZS8vYDsgXAorCWxpc3Q9JyQoU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gIi4iOyB0aGVuIFwKKwkgICAgZG90X3NlZW49eWVzOyBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQtYW0iOyBcCisJICBlbHNlIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldCI7IFwKKwkgIGZpOyBcCisJICAoJChhbV9fY2QpICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQkbG9jYWxfdGFyZ2V0KSBcCisJICB8fCBldmFsICQkZmFpbGNvbTsgXAorCWRvbmU7IFwKKwlpZiB0ZXN0ICIkJGRvdF9zZWVuIiA9ICJubyI7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgIiQkdGFyZ2V0LWFtIiB8fCBleGl0IDE7IFwKKwlmaTsgdGVzdCAteiAiJCRmYWlsIgorCiskKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKToKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAorCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKKwkgIGNhc2UgJCRmIGluIFwKKwkgICAgKj0qIHwgLS1bIWtdKik7OyBcCisJICAgICprKikgZmFpbGNvbT0nZmFpbD15ZXMnOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwlkb3Rfc2Vlbj1ubzsgXAorCWNhc2UgIiRAIiBpbiBcCisJICBkaXN0Y2xlYW4tKiB8IG1haW50YWluZXItY2xlYW4tKikgbGlzdD0nJChESVNUX1NVQkRJUlMpJyA7OyBcCisJICAqKSBsaXN0PSckKFNVQkRJUlMpJyA7OyBcCisJZXNhYzsgXAorCXJldj0nJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgcmV2PSIkJHN1YmRpciAkJHJldiI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCXJldj0iJCRyZXYgLiI7IFwKKwl0YXJnZXQ9YGVjaG8gJEAgfCBzZWQgcy8tcmVjdXJzaXZlLy9gOyBcCisJZm9yIHN1YmRpciBpbiAkJHJldjsgZG8gXAorCSAgZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gIi4iOyB0aGVuIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldC1hbSI7IFwKKwkgIGVsc2UgXAorCSAgICBsb2NhbF90YXJnZXQ9IiQkdGFyZ2V0IjsgXAorCSAgZmk7IFwKKwkgICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJCRsb2NhbF90YXJnZXQpIFwKKwkgIHx8IGV2YWwgJCRmYWlsY29tOyBcCisJZG9uZSAmJiB0ZXN0IC16ICIkJGZhaWwiCit0YWdzLXJlY3Vyc2l2ZToKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIHRlc3QgIiQkc3ViZGlyIiA9IC4gfHwgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSB0YWdzKTsgXAorCWRvbmUKK2N0YWdzLXJlY3Vyc2l2ZToKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIHRlc3QgIiQkc3ViZGlyIiA9IC4gfHwgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBjdGFncyk7IFwKKwlkb25lCisKK0lEOiAkKEhFQURFUlMpICQoU09VUkNFUykgJChMSVNQKSAkKFRBR1NfRklMRVMpCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJbWtpZCAtZklEICQkdW5pcXVlCit0YWdzOiBUQUdTCisKK1RBR1M6IHRhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSBjb25maWcuaC5pbiAkKFRBR1NfREVQRU5ERU5DSUVTKSBcCisJCSQoVEFHU19GSUxFUykgJChMSVNQKQorCXNldCB4OyBcCisJaGVyZT1gcHdkYDsgXAorCWlmICgkKEVUQUdTKSAtLWV0YWdzLWluY2x1ZGUgLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCSAgaW5jbHVkZV9vcHRpb249LS1ldGFncy1pbmNsdWRlOyBcCisJICBlbXB0eV9maXg9LjsgXAorCWVsc2UgXAorCSAgaW5jbHVkZV9vcHRpb249LS1pbmNsdWRlOyBcCisJICBlbXB0eV9maXg9OyBcCisJZmk7IFwKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9IC47IHRoZW4gOjsgZWxzZSBcCisJICAgIHRlc3QgISAtZiAkJHN1YmRpci9UQUdTIHx8IFwKKwkgICAgICBzZXQgIiQkQCIgIiQkaW5jbHVkZV9vcHRpb249JCRoZXJlLyQkc3ViZGlyL1RBR1MiOyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgY29uZmlnLmguaW4gJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZG9uZSB8IFwKKwkgICQoQVdLKSAneyBmaWxlc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9OyB9J2A7IFwKKwlzaGlmdDsgXAorCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCisJICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCisJICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAorCSAgZWxzZSBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAkJHVuaXF1ZTsgXAorCSAgZmk7IFwKKwlmaQorY3RhZ3M6IENUQUdTCitDVEFHUzogY3RhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSBjb25maWcuaC5pbiAkKFRBR1NfREVQRU5ERU5DSUVTKSBcCisJCSQoVEFHU19GSUxFUykgJChMSVNQKQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSBjb25maWcuaC5pbiAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCisJICBkb25lIHwgXAorCSAgJChBV0spICd7IGZpbGVzWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAorCSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07IH0nYDsgXAorCXRlc3QgLXogIiQoQ1RBR1NfQVJHUykkJHVuaXF1ZSIgXAorCSAgfHwgJChDVEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxBR1MpICQoQ1RBR1NfQVJHUykgXAorCSAgICAgJCR1bmlxdWUKKworR1RBR1M6CisJaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgIFwKKwkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKKwkgICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgIiQkaGVyZSIKKworZGlzdGNsZWFuLXRhZ3M6CisJLXJtIC1mIFRBR1MgSUQgR1RBR1MgR1JUQUdTIEdTWU1TIEdQQVRIIHRhZ3MKKworZGlzdGRpcjogJChESVNURklMRVMpCisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisJdGVzdCAtZCAiJChkaXN0ZGlyKSIgfHwgbWtkaXIgIiQoZGlzdGRpcikiCisJQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCXRvcHNyY2RpcnN0cmlwPWBlY2hvICIkKHRvcF9zcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKwlsaXN0PSckKERJU1RGSUxFUyknOyBcCisJICBkaXN0X2ZpbGVzPWBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgXAorCSAgc2VkIC1lICJzfF4kJHNyY2RpcnN0cmlwL3x8O3QiIFwKKwkgICAgICAtZSAic3xeJCR0b3BzcmNkaXJzdHJpcC98JCh0b3BfYnVpbGRkaXIpL3w7dCJgOyBcCisJY2FzZSAkJGRpc3RfZmlsZXMgaW4gXAorCSAgKi8qKSAkKE1LRElSX1ApIGBlY2hvICIkJGRpc3RfZmlsZXMiIHwgXAorCQkJICAgc2VkICcvXC8vIWQ7c3xefCQoZGlzdGRpcikvfDtzLC9bXi9dKiQkLCwnIHwgXAorCQkJICAgc29ydCAtdWAgOzsgXAorCWVzYWM7IFwKKwlmb3IgZmlsZSBpbiAkJGRpc3RfZmlsZXM7IGRvIFwKKwkgIGlmIHRlc3QgLWYgJCRmaWxlIHx8IHRlc3QgLWQgJCRmaWxlOyB0aGVuIGQ9LjsgZWxzZSBkPSQoc3JjZGlyKTsgZmk7IFwKKwkgIGlmIHRlc3QgLWQgJCRkLyQkZmlsZTsgdGhlbiBcCisJICAgIGRpcj1gZWNobyAiLyQkZmlsZSIgfCBzZWQgLWUgJ3MsL1teL10qJCQsLCdgOyBcCisJICAgIGlmIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWxlIjsgdGhlbiBcCisJICAgICAgZmluZCAiJChkaXN0ZGlyKS8kJGZpbGUiIC10eXBlIGQgISAtcGVybSAtNzAwIC1leGVjIGNobW9kIHUrcnd4IHt9IFw7OyBcCisJICAgIGZpOyBcCisJICAgIGlmIHRlc3QgLWQgJChzcmNkaXIpLyQkZmlsZSAmJiB0ZXN0ICQkZCAhPSAkKHNyY2Rpcik7IHRoZW4gXAorCSAgICAgIGNwIC1mcFIgJChzcmNkaXIpLyQkZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgY3AgLWZwUiAkJGQvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgZWxzZSBcCisJICAgIHRlc3QgLWYgIiQoZGlzdGRpcikvJCRmaWxlIiBcCisJICAgIHx8IGNwIC1wICQkZC8kJGZpbGUgIiQoZGlzdGRpcikvJCRmaWxlIiBcCisJICAgIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCisJQGxpc3Q9JyQoRElTVF9TVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAuOyB0aGVuIDo7IGVsc2UgXAorCSAgICB0ZXN0IC1kICIkKGRpc3RkaXIpLyQkc3ViZGlyIiBcCisJICAgIHx8ICQoTUtESVJfUCkgIiQoZGlzdGRpcikvJCRzdWJkaXIiIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwlAbGlzdD0nJChESVNUX1NVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9IC47IHRoZW4gOjsgZWxzZSBcCisJICAgIGRpcjE9JCRzdWJkaXI7IGRpcjI9IiQoZGlzdGRpcikvJCRzdWJkaXIiOyBcCisJICAgICQoYW1fX3JlbGF0aXZpemUpOyBcCisJICAgIG5ld19kaXN0ZGlyPSQkcmVsZGlyOyBcCisJICAgIGRpcjE9JCRzdWJkaXI7IGRpcjI9IiQodG9wX2Rpc3RkaXIpIjsgXAorCSAgICAkKGFtX19yZWxhdGl2aXplKTsgXAorCSAgICBuZXdfdG9wX2Rpc3RkaXI9JCRyZWxkaXI7IFwKKwkgICAgZWNobyAiIChjZCAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSB0b3BfZGlzdGRpcj0iJCRuZXdfdG9wX2Rpc3RkaXIiIGRpc3RkaXI9IiQkbmV3X2Rpc3RkaXIiIFxcIjsgXAorCSAgICBlY2hvICIgICAgIGFtX19yZW1vdmVfZGlzdGRpcj06IGFtX19za2lwX2xlbmd0aF9jaGVjaz06IGFtX19za2lwX21vZGVfZml4PTogZGlzdGRpcikiOyBcCisJICAgICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgXAorCSAgICAgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIFwKKwkgICAgICAgIHRvcF9kaXN0ZGlyPSIkJG5ld190b3BfZGlzdGRpciIgXAorCSAgICAgICAgZGlzdGRpcj0iJCRuZXdfZGlzdGRpciIgXAorCQlhbV9fcmVtb3ZlX2Rpc3RkaXI9OiBcCisJCWFtX19za2lwX2xlbmd0aF9jaGVjaz06IFwKKwkJYW1fX3NraXBfbW9kZV9maXg9OiBcCisJICAgICAgICBkaXN0ZGlyKSBcCisJICAgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwktdGVzdCAtbiAiJChhbV9fc2tpcF9tb2RlX2ZpeCkiIFwKKwl8fCBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTc1NSBcCisJCS1leGVjIGNobW9kIHUrcnd4LGdvK3J4IHt9IFw7IC1vIFwKKwkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWxpbmtzIDEgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKKwkgICEgLXR5cGUgZCAhIC1wZXJtIC00MDAgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKKwkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWV4ZWMgJChpbnN0YWxsX3NoKSAtYyAtbSBhK3Ige30ge30gXDsgXAorCXx8IGNobW9kIC1SIGErciAiJChkaXN0ZGlyKSIKK2Rpc3QtZ3ppcDogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWMgPiQoZGlzdGRpcikudGFyLmd6CisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCitkaXN0LWJ6aXAyOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IEJaSVAyPSQke0JaSVAyLS05fSBiemlwMiAtYyA+JChkaXN0ZGlyKS50YXIuYnoyCisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisKK2Rpc3QtbHppcDogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBsemlwIC1jICQke0xaSVBfT1BULS05fSA+JChkaXN0ZGlyKS50YXIubHoKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC1sem1hOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGx6bWEgLTkgLWMgPiQoZGlzdGRpcikudGFyLmx6bWEKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC14ejogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBYWl9PUFQ9JCR7WFpfT1BULS1lfSB4eiAtYyA+JChkaXN0ZGlyKS50YXIueHoKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC10YXJaOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGNvbXByZXNzIC1jID4kKGRpc3RkaXIpLnRhci5aCisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisKK2Rpc3Qtc2hhcjogZGlzdGRpcgorCXNoYXIgJChkaXN0ZGlyKSB8IEdaSVA9JChHWklQX0VOVikgZ3ppcCAtYyA+JChkaXN0ZGlyKS5zaGFyLmd6CisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCitkaXN0LXppcDogZGlzdGRpcgorCS1ybSAtZiAkKGRpc3RkaXIpLnppcAorCXppcCAtcnEgJChkaXN0ZGlyKS56aXAgJChkaXN0ZGlyKQorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0IGRpc3QtYWxsOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IEdaSVA9JChHWklQX0VOVikgZ3ppcCAtYyA+JChkaXN0ZGlyKS50YXIuZ3oKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgQlpJUDI9JCR7QlpJUDItLTl9IGJ6aXAyIC1jID4kKGRpc3RkaXIpLnRhci5iejIKKwktcm0gLWYgJChkaXN0ZGlyKS56aXAKKwl6aXAgLXJxICQoZGlzdGRpcikuemlwICQoZGlzdGRpcikKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworIyBUaGlzIHRhcmdldCB1bnRhcnMgdGhlIGRpc3QgZmlsZSBhbmQgdHJpZXMgYSBWUEFUSCBjb25maWd1cmF0aW9uLiAgVGhlbgorIyBpdCBndWFyYW50ZWVzIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyBzZWxmLWNvbnRhaW5lZCBieSBtYWtpbmcgYW5vdGhlcgorIyB0YXJmaWxlLgorZGlzdGNoZWNrOiBkaXN0CisJY2FzZSAnJChESVNUX0FSQ0hJVkVTKScgaW4gXAorCSoudGFyLmd6KikgXAorCSAgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnRhci5neiB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnRhci5iejIqKSBcCisJICBiemlwMiAtZGMgJChkaXN0ZGlyKS50YXIuYnoyIHwgJChhbV9fdW50YXIpIDs7XAorCSoudGFyLmx6bWEqKSBcCisJICBsem1hIC1kYyAkKGRpc3RkaXIpLnRhci5sem1hIHwgJChhbV9fdW50YXIpIDs7XAorCSoudGFyLmx6KikgXAorCSAgbHppcCAtZGMgJChkaXN0ZGlyKS50YXIubHogfCAkKGFtX191bnRhcikgOztcCisJKi50YXIueHoqKSBcCisJICB4eiAtZGMgJChkaXN0ZGlyKS50YXIueHogfCAkKGFtX191bnRhcikgOztcCisJKi50YXIuWiopIFwKKwkgIHVuY29tcHJlc3MgLWMgJChkaXN0ZGlyKS50YXIuWiB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnNoYXIuZ3oqKSBcCisJICBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWRjICQoZGlzdGRpcikuc2hhci5neiB8IHVuc2hhciA7O1wKKwkqLnppcCopIFwKKwkgIHVuemlwICQoZGlzdGRpcikuemlwIDs7XAorCWVzYWMKKwljaG1vZCAtUiBhLXcgJChkaXN0ZGlyKTsgY2htb2QgYSt3ICQoZGlzdGRpcikKKwlta2RpciAkKGRpc3RkaXIpL19idWlsZAorCW1rZGlyICQoZGlzdGRpcikvX2luc3QKKwljaG1vZCBhLXcgJChkaXN0ZGlyKQorCXRlc3QgLWQgJChkaXN0ZGlyKS9fYnVpbGQgfHwgZXhpdCAwOyBcCisJZGNfaW5zdGFsbF9iYXNlPWAkKGFtX19jZCkgJChkaXN0ZGlyKS9faW5zdCAmJiBwd2QgfCBzZWQgLWUgJ3MsXlteOlxcL106W1xcL10sLywnYCBcCisJICAmJiBkY19kZXN0ZGlyPSIkJHtUTVBESVItL3RtcH0vYW0tZGMtJCQkJC8iIFwKKwkgICYmIGFtX19jd2Q9YHB3ZGAgXAorCSAgJiYgJChhbV9fY2QpICQoZGlzdGRpcikvX2J1aWxkIFwKKwkgICYmIC4uL2NvbmZpZ3VyZSAtLXNyY2Rpcj0uLiAtLXByZWZpeD0iJCRkY19pbnN0YWxsX2Jhc2UiIFwKKwkgICAgJChBTV9ESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTKSBcCisJICAgICQoRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUykgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgZHZpIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGNoZWNrIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbGNoZWNrIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHVuaW5zdGFsbCBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkaXN0dW5pbnN0YWxsY2hlY2tfZGlyPSIkJGRjX2luc3RhbGxfYmFzZSIgXAorCSAgICAgICAgZGlzdHVuaW5zdGFsbGNoZWNrIFwKKwkgICYmIGNobW9kIC1SIGEtdyAiJCRkY19pbnN0YWxsX2Jhc2UiIFwKKwkgICYmICh7IFwKKwkgICAgICAgKGNkIC4uLy4uICYmIHVtYXNrIDA3NyAmJiBta2RpciAiJCRkY19kZXN0ZGlyIikgXAorCSAgICAgICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBERVNURElSPSIkJGRjX2Rlc3RkaXIiIGluc3RhbGwgXAorCSAgICAgICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBERVNURElSPSIkJGRjX2Rlc3RkaXIiIHVuaW5zdGFsbCBcCisJICAgICAgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIERFU1RESVI9IiQkZGNfZGVzdGRpciIgXAorCSAgICAgICAgICAgIGRpc3R1bmluc3RhbGxjaGVja19kaXI9IiQkZGNfZGVzdGRpciIgZGlzdHVuaW5zdGFsbGNoZWNrOyBcCisJICAgICAgfSB8fCB7IHJtIC1yZiAiJCRkY19kZXN0ZGlyIjsgZXhpdCAxOyB9KSBcCisJICAmJiBybSAtcmYgIiQkZGNfZGVzdGRpciIgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgZGlzdCBcCisJICAmJiBybSAtcmYgJChESVNUX0FSQ0hJVkVTKSBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkaXN0Y2xlYW5jaGVjayBcCisJICAmJiBjZCAiJCRhbV9fY3dkIiBcCisJICB8fCBleGl0IDEKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKwlAKGVjaG8gIiQoZGlzdGRpcikgYXJjaGl2ZXMgcmVhZHkgZm9yIGRpc3RyaWJ1dGlvbjogIjsgXAorCSAgbGlzdD0nJChESVNUX0FSQ0hJVkVTKSc7IGZvciBpIGluICQkbGlzdDsgZG8gZWNobyAkJGk7IGRvbmUpIHwgXAorCSAgc2VkIC1lIDFoIC1lIDFzLy4vPS9nIC1lIDFwIC1lIDF4IC1lICckJHAnIC1lICckJHgnCitkaXN0dW5pbnN0YWxsY2hlY2s6CisJQHRlc3QgLW4gJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIHx8IHsgXAorCSAgZWNobyAnRVJST1I6IHRyeWluZyB0byBydW4gJEAgd2l0aCBhbiBlbXB0eScgXAorCSAgICAgICAnJCQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknID4mMjsgXAorCSAgZXhpdCAxOyBcCisJfTsgXAorCSQoYW1fX2NkKSAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgfHwgeyBcCisJICBlY2hvICdFUlJPUjogY2Fubm90IGNoZGlyIGludG8gJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgPiYyOyBcCisJICBleGl0IDE7IFwKKwl9OyBcCisJdGVzdCBgJChhbV9fZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgfCB3YyAtbGAgLWVxIDAgXAorCSAgIHx8IHsgZWNobyAiRVJST1I6IGZpbGVzIGxlZnQgYWZ0ZXIgdW5pbnN0YWxsOiIgOyBcCisJICAgICAgICBpZiB0ZXN0IC1uICIkKERFU1RESVIpIjsgdGhlbiBcCisJICAgICAgICAgIGVjaG8gIiAgKGNoZWNrIERFU1RESVIgc3VwcG9ydCkiOyBcCisJICAgICAgICBmaSA7IFwKKwkgICAgICAgICQoZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgOyBcCisJICAgICAgICBleGl0IDE7IH0gPiYyCitkaXN0Y2xlYW5jaGVjazogZGlzdGNsZWFuCisJQGlmIHRlc3QgJyQoc3JjZGlyKScgPSAuIDsgdGhlbiBcCisJICBlY2hvICJFUlJPUjogZGlzdGNsZWFuY2hlY2sgY2FuIG9ubHkgcnVuIGZyb20gYSBWUEFUSCBidWlsZCIgOyBcCisJICBleGl0IDEgOyBcCisJZmkKKwlAdGVzdCBgJChkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMpIHwgd2MgLWxgIC1lcSAwIFwKKwkgIHx8IHsgZWNobyAiRVJST1I6IGZpbGVzIGxlZnQgaW4gYnVpbGQgZGlyZWN0b3J5IGFmdGVyIGRpc3RjbGVhbjoiIDsgXAorCSAgICAgICAkKGRpc3RjbGVhbmNoZWNrX2xpc3RmaWxlcykgOyBcCisJICAgICAgIGV4aXQgMTsgfSA+JjIKK2NoZWNrLWFtOiBhbGwtYW0KK2NoZWNrOiBjaGVjay1yZWN1cnNpdmUKK2FsbC1hbTogTWFrZWZpbGUgY29uZmlnLmgKK2luc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1yZWN1cnNpdmUKK2luc3RhbGxkaXJzLWFtOgoraW5zdGFsbDogaW5zdGFsbC1yZWN1cnNpdmUKK2luc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLXJlY3Vyc2l2ZQoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtcmVjdXJzaXZlCit1bmluc3RhbGw6IHVuaW5zdGFsbC1yZWN1cnNpdmUKKworaW5zdGFsbC1hbTogYWxsLWFtCisJQCQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0KKworaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stcmVjdXJzaXZlCitpbnN0YWxsLXN0cmlwOgorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQorbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKKworY2xlYW4tZ2VuZXJpYzoKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCisKK21haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorY2xlYW46IGNsZWFuLXJlY3Vyc2l2ZQorCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1hbQorCitkaXN0Y2xlYW46IGRpc3RjbGVhbi1yZWN1cnNpdmUKKwktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKKwktcm0gLWYgTWFrZWZpbGUKK2Rpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBkaXN0Y2xlYW4tdGFncworCitkdmk6IGR2aS1yZWN1cnNpdmUKKworZHZpLWFtOgorCitodG1sOiBodG1sLXJlY3Vyc2l2ZQorCitodG1sLWFtOgorCitpbmZvOiBpbmZvLXJlY3Vyc2l2ZQorCitpbmZvLWFtOgorCitpbnN0YWxsLWRhdGEtYW06CisKK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1yZWN1cnNpdmUKKworaW5zdGFsbC1kdmktYW06CisKK2luc3RhbGwtZXhlYy1hbToKKworaW5zdGFsbC1odG1sOiBpbnN0YWxsLWh0bWwtcmVjdXJzaXZlCisKK2luc3RhbGwtaHRtbC1hbToKKworaW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tcmVjdXJzaXZlCisKK2luc3RhbGwtaW5mby1hbToKKworaW5zdGFsbC1tYW46CisKK2luc3RhbGwtcGRmOiBpbnN0YWxsLXBkZi1yZWN1cnNpdmUKKworaW5zdGFsbC1wZGYtYW06CisKK2luc3RhbGwtcHM6IGluc3RhbGwtcHMtcmVjdXJzaXZlCisKK2luc3RhbGwtcHMtYW06CisKK2luc3RhbGxjaGVjay1hbToKKworbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKKwktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKKwktcm0gLXJmICQodG9wX3NyY2RpcikvYXV0b200dGUuY2FjaGUKKwktcm0gLWYgTWFrZWZpbGUKK21haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKKworbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLXJlY3Vyc2l2ZQorCittb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tZ2VuZXJpYworCitwZGY6IHBkZi1yZWN1cnNpdmUKKworcGRmLWFtOgorCitwczogcHMtcmVjdXJzaXZlCisKK3BzLWFtOgorCit1bmluc3RhbGwtYW06CisKKy5NQUtFOiAkKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKSAkKFJFQ1VSU0lWRV9UQVJHRVRTKSBhbGwgXAorCWN0YWdzLXJlY3Vyc2l2ZSBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAgdGFncy1yZWN1cnNpdmUKKworLlBIT05ZOiAkKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKSAkKFJFQ1VSU0lWRV9UQVJHRVRTKSBDVEFHUyBHVEFHUyBcCisJYWxsIGFsbC1hbSBhbS0tcmVmcmVzaCBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKKwljdGFncyBjdGFncy1yZWN1cnNpdmUgZGlzdCBkaXN0LWFsbCBkaXN0LWJ6aXAyIGRpc3QtZ3ppcCBcCisJZGlzdC1semlwIGRpc3QtbHptYSBkaXN0LXNoYXIgZGlzdC10YXJaIGRpc3QteHogZGlzdC16aXAgXAorCWRpc3RjaGVjayBkaXN0Y2xlYW4gZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBcCisJZGlzdGNsZWFuLXRhZ3MgZGlzdGNsZWFuY2hlY2sgZGlzdGRpciBkaXN0dW5pbnN0YWxsY2hlY2sgZHZpIFwKKwlkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gXAorCWluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gXAorCWluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBcCisJaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBcCisJaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgXAorCWluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgaW5zdGFsbGRpcnMtYW0gXAorCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKKwltb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLXJlY3Vyc2l2ZSBcCisJdW5pbnN0YWxsIHVuaW5zdGFsbC1hbQorCisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9ORVdTCmRpZmYgLS1naXQgYS9OT1RJQ0UgYi9OT1RJQ0UKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uZDI0ODQyZgotLS0gL2Rldi9udWxsCisrKyBiL05PVElDRQpAQCAtMCwwICsxIEBACitDT1BZSU5HClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMjllMjcKLS0tIC9kZXYvbnVsbAorKysgYi9SRUFETUUKQEAgLTAsMCArMSw0OSBAQAorCitCRSBTVVJFIFRPIFJFQUQgVEhFIE1BTlVBTC4gRVZFTiBUSE9VR0ggSVQgTUFZIEJFIE9VVERBVEVELgorCitUaGlzIGlzIGEgYnJpZWYgcmVhZG1lIGZpbGUgZm9yIHRoZSBuZXRwZXJmIFRDUC9VRFAvc29ja2V0cy9ldGMKK3BlcmZvcm1hbmNlIGJlbmNobWFyay4gVGhpcyBpcyBoZXJlIG1vc3RseSBhcyBhIGJvb3Qtc3RyYXAuIFRoZSByZWFsCitpbmZvcm1hdGlvbiBpcyBpbiB0aGUgbWFudWFsLCB3aGljaCBjYW4gYmUgZm91bmQgaW4gbmV0cGVyZi5wcyBhbmQKK29ubGluZSBmcm9tIGh0dHA6Ly93d3cubmV0cGVyZi5vcmcvbmV0cGVyZi9OZXRwZXJmUGFnZS5odG1sLiBUaGUKK3NvdXJjZXMsIGFuZCBhIGxpbWl0ZWQgbnVtYmVyIG9mIGJpbmFyaWVzLCBjYW4gYmUgZm91bmQgZnJvbQorZnRwOi8vZnRwLmN1cC5ocC5jb20vZGlzdC9uZXR3b3JraW5nL2JlbmNobWFya3MvbmV0cGVyZi8gLgorCitCRSBTVVJFIFRPIFJFQUQgVEhFIE1BTlVBTC4gRVZFTiBUSE9VR0ggSVQgTUFZIEJFIE9VVERBVEVELgorCitUaGVyZSBpcyBhIENPUFlSSUdIVCBmaWxlIGluY2x1ZGVkLiAgSXQgaXMgY2FsbGVkIENPUFlJTkcgYmVjYXVzZSB0aGF0CitpcyB3aGF0IGF1dG9zb21ldGhpbmdvcm90aGVyIHdhbnRlZC4gSXQgaXMgYmFzZWQgb24gd2hhdCB0aGUgSFAgTGVnYWwKK0VhZ2xlcyBnYXZlIG1lLiBJIGFtIG5vdCBzdXJlIGlmIHRoZSBsZWdhbGVzZSBpcyBjbGVhciwgYnV0IHRoZSBpbnRlbnQKK2lzIHRvIHNheSAiSGVyZSBpcyBhIGJlbmNobWFyay4gVXNlIGl0IGluIGdvb2QgaGVhbHRoLiBQYXNzIGl0IGFsb25nLAorcG9ydCBpdCwgZW5oYW5jZSBpdC4gWW91IGRpZG4ndCBwYXkgZm9yIHRoaXMgdG9vbCwgc28gZG9uJ3QgZXhwZWN0IGl0Cit0byBiZSBwZXJmZWN0IDstKSIgVGhlIHJlc3Qgb2YgaXQgaXMgdGhlcmUgdG8ga2VlcCB0aGUgbGF5ZXJzIGhhcHB5Li4uICAKKworV2hpbGUgdGhlIGNvcHlyaWdodCBpcyBwcmV0dHkgbXVjaCBpbiBzcGlyaXQgYW4gIm9wZW4gc291cmNlIiBvbmUsIGl0CitpcyBub3QgaW4gbGV0dGVyIC0gSSBuZXZlciB0b29rIHRoZSB0aW1lIHRvIHRyeSB0byBnZXQgaXQgYXBwcm92ZWQuCitJZiB5b3UgZmVlbCBzdHJvbmdseSBhYm91dCB0aGUgbGljZW5zZSBvZiB0aGUgY29kZSB5b3UgdXNlIGFuZCB3YW50Citzb21ldGhpbmcgdW5kZXIgdGhlIEdQTCwgY29uc2lkZXIgbmV0cGVyZjQ6CisKK2h0dHA6Ly93d3cubmV0cGVyZi5vcmcvc3ZuL25ldHBlcmY0L3RydW5rCisKK0ZlZWwgZnJlZSB0byByZXBvcnQgbmV0cGVyZiByZXN1bHRzIGluIHB1YmxpYyBmb3J1bXMsIGJ1dCBwbGVhc2UgYmUKK2V4Y3J1Y2lhdGluZ2x5IGNvbXBsZXRlIGluIHlvdXIgZGVzY3JpcHRpb24gb2YgdGhlIHRlc3QgZW52b3Jpbm1lbnQuCitUaGUgb2xkIG5ldHBlcmYgZGF0YWJhc2UgYXQ6CisKKyAgaHR0cDovL3d3dy5uZXRwZXJmLm9yZy9uZXRwZXJmL05ldHBlcmZQYWdlLmh0bWwKKworaXMgbm8gbW9yZSAtIG9yIHJhdGhlciB0aGUgdXRpbGl0aWVzIGZvciBhY2Nlc3NpbmcgaXQgbm8gbG9uZ2VyIHJ1bi4KK1RoZSBkYXRhIGlzIHN0aWxsIHByZXNlbnQgaW4gdGhlIHRyZWUsIGFsYmVpdCBfVkVSWV8gb2xkIG5vdy4KKworVGhlcmUgaXMgYW4gSW50ZXJuZXQgbWFpbGluZyBsaXN0IGRldm90ZWQgdG8gbmV0cGVyZi4gSXQgaXMgY2FsbGVkCituZXRwZXJmLXRhbGsgYW5kIGl0IGlzIGhvc3RlZCBvbiBuZXRwZXJmLm9yZy4gU3Vic2NyaXB0aW9uIHJlcXVlc3RzCitzaG91bGQgZ28gdG8gbmV0cGVyZi10YWxrLXJlcXVlc3RAbmV0cGVyZi5vcmcuCisKK1BsZWFzZSBETyBOT1QgU0VORCBzdWJzY3JpcHRpb24gcmVxdWVzdHMgdG8gbmV0cGVyZi10YWxrIQorCitJZiB5b3UgcnVuIGludG8gc2V2ZXJlIGRpZmZpY3VsdGllcywgb3IgYXJlIGp1c3QgZmVlbGluZyBjaGF0dHksCitwbGVhc2UgZmVlbCBmcmVlIHRvIGRyb3Agc29tZSBlbWFpbCB0byBtZSAtIFJpY2sgSm9uZXMKKzxyaWNrLmpvbmVzMkBocC5jb20+LiBCZSBzdXJlIHRvIGluY2x1ZGUgYSBtZWFuaW5nZnVsIHN1YmplY3QgbGluZXMuCisKK2hhcHB5IGJlbmNobWFya2luZywgCityaWNrIGpvbmVzCisKK0JFIFNVUkUgVE8gUkVBRCBUSEUgTUFOVUFMLiBFVkVOIFRIT1VHSCBJVCBNQVkgQkUgT1VUREFURUQuCmRpZmYgLS1naXQgYS9SRUFETUUuYWl4IGIvUkVBRE1FLmFpeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTkzZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLmFpeApAQCAtMCwwICsxLDM4IEBACitQc2V1ZG8tcmFuZG9tIHRoaW5ncyBhYm91dCBuZXRwZXJmIG9uIEFJWDoKKworV2hpbGUgaXQgX3Nob3VsZF8gbm90IGJlIG5lY2Vzc2FyeSBpbiB0aGUgcmVsZWFzZSBiaXRzLCB0aGUgcmMgYml0cworZm9yIG5ldHBlcmYgMi40LjAgcmVxdWlyZWQ6CisKKyAgICBjb25maWd1cmUgX21heV8gbmVlZDoKKworICAgIENGTEFHUz0iLXFjcGx1c2NtdCAtbHBlcmZzdGF0IgorCisgICAgdW50aWwgc3VjaCB0aW1lIGFzIFJpY2sgSm9uZXMgY2FuIGZpZ3VyZS1vdXQgb3IgYmUgdG9sZCBob3cgdG8KKyAgICBhdXRvbWFnaWNhbGx5IGFkZCB0aG9zZSB1c2luZyB0aGUgY29uZmlndXJlIHNjcmlwdCAoaGludCBoaW50IDopCisKK1RoZSByZWxlYXNlIGJpdHMgc2hvdWxkIGJlIE9LIHdpdGhvdXQgdGhlIGFib3ZlLiAgRGVwZW5kaW5nIG9uIHRoZQorbmFtZSB1c2VkIHRvIGludm9rZSB0aGUgY29tcGlsZXIsIHRoZSAtcW11bWJsZSBvcHRpb24gbWF5IGJlIGltcGxpY2l0LgorCitBSVggaW5jbHVkZSBmaWxlcyBoYXZlIGEgVkVSWSB1bmZvcnR1bmVhdGUgc2V0IG9mICNkZWZpbmUncyBpbiB0aGVtCitmb3IgcGhyYXNlcyBuZXR3b3JrIG9yaWVudGVkIHByb2dyYW1zIGFyZSBRVUlURSBsaWtlbHkgdG8gaGF2ZSBpbgordGhlaXIgc291cmNlIC0gInJlbV9hZGRyIiBhbmQgInJlbV9zaXplIiBBICJjb3VzaW4iIG9mIHRoZSBOZXRwZXJmCitDb250cmlidXRpbmcgRWRpdG9yIHJlcG9ydHMgdGhpcyBpbnRlcmZlcmVzIHdpdGggLS1lbmFibGUtZGxwaQorY29tcGlsYXRpb24gYW5kIHRoYXQgaXQgd2FzIGFsc28gYSBwcm9ibGVtIGZvciBNeVNRTCBjb21waWx0aW9uLgorV2hpbGUgd2UgYXdhaXQgSUJNJ3MgQVBBUiB3aXRoIGJhdGVkIGJyZWF0aCwgbmV0cGVyZiBoYXMgYmVlbiBrbHVkZ2VkCit0byB3b3JrYXJvdW5kIHRoaXMgYnVnIGluIElCTSdzIGluY2x1ZGUgZmlsZXMuICBJdCBoYXMgYmVlbiByZXBvcnRlZAordGhhdCBhICJQTVIiIDM0OTQwLDIxMiw4NDggaGFzIGJlZW4gc3VibWl0dGVkIHRvIElCTSBpbiByZWxhdGlvbiB0bwordGhpcyBidWcgaW4gdGhlaXIgaGVhZGVyIGZpbGVzLgorCitDb3V0ZXN5IG9mIEphbiBLcnVlZ2VyIG9mIFRVSSBJbmZvdGVjLCBHZXJtYW55IHdlIGhhdmUgYSBwb2ludGVyIHRvCithIHdvcmthcm91bmQgZm9yIHByb2JsZW1zIHdpdGggY29tcGlsYXRpb24gb24gQUlYIDYuMToKKworaHR0cHM6Ly93d3ctMzA0LmlibS5jb20vc3VwcG9ydC9kb2N2aWV3Lndzcz91aWQ9aXNnMUlWMDE3MzYKKword2hlbiB5b3UgZ2V0IGVycm9ycyBsaWtlOgorY29uZmlnLnN0YXR1czogY3JlYXRpbmcgc3JjL25ldHBlcmZfdmVyc2lvbi5oCisgICAgICAgIGdjYyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4gICAgICAgLU1UIG5ldGxpYi5vIC1NRCAtTVAgLU1GIC5kZXBzL25ldGxpYi5UcG8gLWMgLW8gbmV0bGliLm8gbmV0bGliLmMKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL2NvcnJhbC5oOjI1LAorICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9saWJwZXJmc3RhdC5oOjI4LAorICAgICAgICAgICAgICAgICBmcm9tIG5ldGxpYi5oOjY3OSwKKyAgICAgICAgICAgICAgICAgZnJvbSBuZXRsaWIuYzoxNjY6CisvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbjZfdmFyLmg6NjU6IGVycm9yOiBhcnJheSB0eXBlIGhhcyBpbmNvbXBsZXRlIGVsZW1lbnQgdHlwZQpkaWZmIC0tZ2l0IGEvUkVBRE1FLmhwdXggYi9SRUFETUUuaHB1eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODE4NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLmhwdXgKQEAgLTAsMCArMSwzMSBAQAorQSBub3RlIGFib3V0IENQVSB1dGlsaXphdGlvbi4uLgorCitGb3IgSFAtVVggMTEuMCA8PSBzeXN0ZW0gPCAxMS4yMyB0aGUgY29uZmlndXJlIHNjcmlwdCB3aWxsIHNlbGVjdCB0aGUKKyJwc3RhdCIgQ1BVIHV0aWxpemF0aW9uIG1lY2hhbmlzbS4gIFRoaXMgbWVjaGFuaXNtIGlzIHRoZSBmYW1pbGlhcgorSFAtVVggaWRsZSBjb3VudGVyIG1lY2hhbmlzbSAoZm9yIGFsbCBpbmNlbnNlIGFuZCBwb3Jwb2lzZXMpIGFuZAorcmVxdWlyZXMgY2FsaWJyYXRpb24uICBTZWUgc3JjL25ldGNwdV9wc3RhdC5jIGZvciBhbGwgdGhlIGRldGFpbHMuCisKK0ZvciBIUC1VWCAxMS4yMyA+PSBzeXN0ZW0sIHRoZSBjb25maWd1cmUgc2NyaXB0IHdpbGwgc2VsZWN0IHRoZQorInBzdGF0bmV3IiBDUFUgdXRpbGl6YXRpb24gbWVjaGFuaXNtLiAgMTEuMjMgYWRkcyBjeWNsZSBjb3VudHMgZm9yCit1c2VyLCBrZXJuZWwgYW5kIGludGVycnVwdCBtb2RlcyB0byB0aGUgaWRsZSBjeWNsZSBjb3VudGVyLiAgQXMgc3VjaCwKK2l0IF9zaG91bGRfIGJlIHBvc3NpYmxlIHRvIHNpbXBseSB0YWtlIHRoZSBzdW0gb2YgdGhlIGZvdXIgYW5kIHRoZQorZnJhY3Rpb25zIGFuZCBrbm93IGhvdyBtdWNoIHRpbWUgd2FzIHNwZW50IGluIGVhY2ggbW9kZS4KK0hPV0VWRVIuLi4gdGhlcmUgaXMgYSBidWcgaW4gdGhlIGFjY291bnRpbmcgZm9yIGludGVycnVwdCBjeWNsZXMsCit3aGVyZSBpbnRlcnJ1cHQgY3ljbGVzIGdvIG1pc3NpbmcuICBTT09PLCBzaW5jZSB0aGVyZSBpcyBhbiBhY2N1cmF0ZQord2F5IHRvIGtub3cgd2hhdCB0aGUgdG90YWwgbnVtYmVyIG9mIGN5Y2xlcyBzaG91bGQgaGF2ZSBiZWVuIG92ZXIgdGhlCitpbnRlcnZhbCwgYW5kIHdlIGtub3cgKGFzcy11LW1lKSB0aGF0IHRoZSBpZGxlIGN5Y2xlIGNvdW50ZXIgaXMgZ29vZAorKHNpbmNlIHRoZSBwc3RhdCBtZWNoYW5pc20gaGFzIHRlc3RlZCB0aGF0IG9uZSBPSyksIHdlIHdpbGwgdGFrZSB0aGUKK3JhdGlvIG9mIGlkbGUgdG8gdG90YWwgY3ljbGVzIHRvIGNvbXB1dGUgQ1BVIHV0aWwuICAKKworV2Ugd2lsbCBzdGlsbCBjYWxjdWxhdGUgZnJhY3Rpb25zIGZvciB1c2VyLCBrZXJuZWwgYW5kIGludGVycnVwdCwgYW5kCityZXBvcnQgdGhlbSBpbiBkZWJ1ZyAoLWQpIG91dHB1dCwgYnV0IHdpdGggYSB3YXJuaW5nIGZvciBpbnRlcnJ1cHQKK3RpbWUuICBTZWUgc3JjL25ldGNwdV9wc3RhdG5ldy5jIGZvciBhbGwgdGhlIGRldGFpbHMuCisKK1VwIHRocm91Z2ggSFAtVVggMTEuMjMgKGFrYSAxMWlWMikgaWYgeW91IGVuYWJsZSBidXJzdCBtb2RlLCBhbmQKK2hhcHBlbiB0byBzZW5kIHN1Yi1NU1MgcmVxdWVzdHMgYW5kL29yIHJlc3BvbnNlcyB5b3UgX2Nhbm5vdF8gYXNzdW1lCit0aGF0IHRoZSBwYWNrZXQgcGVyIHNlY29uZCByYXRlIG9uIHRoZSB3aXJlIHdpbGwgbWF0Y2ggdGhlIHRyYW5zYWN0aW9uCitwZXIgc2Vjb25kIHJhdGUgcmVwb3J0ZWQgYnkgbmV0cGVyZiwgZXZlbiBpZiB5b3Ugc2V0IFRDUF9OT0RFTEFZIHdpdGgKK3RoZSB0ZXN0LXNwZWNpZmljIC1EIG9wdGlvbi4gIFRoZSBIUC1VWCAxMS5YIFRDUCBzdGFjayBsaWtlbHkgd2lsbCBiZQorZ2VuZXJhdGluZyBzb21lIGltbWVkaWF0ZSAnc3RhbmRhbG9uZScgQUNLbm93bGVkZ2VtZW50cyB3aGljaCBtYXkgbm90CitiZSBnZW5lcmF0ZWQgYnkgb3RoZXIgc3RhY2tzLiAgVGhpcyBoYXMgYmVlbiByZXBvcnRlZCB0byB0aGUgSFAtVVggVENQCitmb2xrcywgYW5kIGFuIGFubm91bmNlbWVudCB3aWxsIGJlIG1hZGUgd2hlbiB0aGF0IGlzc3VlIGlzIHJlc29sdmVkLgpkaWZmIC0tZ2l0IGEvUkVBRE1FLm9zeCBiL1JFQURNRS5vc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZGJlNQotLS0gL2Rldi9udWxsCisrKyBiL1JFQURNRS5vc3gKQEAgLTAsMCArMSw0IEBACitJZiB5b3UgYXJlIHJlYWRpbmcgdGhpcywgaXQgc3VnZ2VzdHMgeW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YKK25ldHBlcmYgaW4gd2hpY2ggdGhlIGlzc3VlIG9mIGZpbGUvZGlyZWN0b3J5IG5hbWUgY2FzZSBpbnNlbnNpdGl2aXR5CitpbiBPU1ggaGFzIGJlZW4gd29ya2VkLWFyb3VuZCBieSByZW5hbWluZyB0aGUgTmV0UGVyZiBhbmQgTmV0U2VydmVyCitkaXJlY3RvcmllcyB0byBOZXRQZXJmRGlyIGFuZCBOZXRTZXJ2ZXJEaXIgcmVzcGVjdGl2ZWx5LgpkaWZmIC0tZ2l0IGEvUkVBRE1FLm92bXMgYi9SRUFETUUub3ZtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzdiODlkCi0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLm92bXMKQEAgLTAsMCArMSw2NiBAQAorRmVicnVhcnkgMTEsIDIwMDMKKworQXQgdGhlIHRpbWUgb2YgdGhlIGluaXRpYWwgcG9ydCwgSSB3YXMgbm90IGF3YXJlIG9mIGEgbWFrZSBmYWNpbGl0eQorZm9yIE9wZW5WTVMuICBTbywgSSB3b3VsZCBqdXN0IGNvbXBpbGUgYW5kIGxpbmsgdGhlIHZhcmlvdXMgZmlsZXMgYnkKK2hhbmQ6CisKKyAgICQgY2MgbmV0cGVyZi5jCisgICAkIGNjIG5ldGxpYi5jCisgICAkIGNjIG5ldHNoLmMKKyAgICQgY2MgbmV0dGVzdF9ic2QuYworICAgJCBjYyBuZXRzZXJ2ZXIuYworICAgJCBsaW5rL2V4ZT1uZXRwZXJmIG5ldHBlcmYub2JqLG5ldHNoLm9iaixuZXRsaWIub2JqLG5ldHRlc3RfYnNkLm9iagorICAgJCBsaW5rL2V4ZT1uZXRzZXJ2ZXIgbmV0c2VydmVyLm9iaixuZXRzaC5vYmosbmV0bGliLm9iaixuZXR0ZXN0X2JzZC5vYmoKKworSW5zdGFsbGF0aW9uIGZvciBPcGVuVk1TIGhhcyBhIGZldyBkaWZmZXJlbmNlcyBmcm9tIGluc3RhbGxhdGlvbiB1bmRlcgorc2F5IFVuaXguICBUaGVyZSBpcyBubyBpbmV0ZCBmb3IgVk1TIC0gaG93ZXZlciwgdGhlcmUgaXMgdGhlIGNvbmNlcHQKK29mIGFuIGFkZGluZyBhbiBhdXhpbGxpYXJ5IHNlcnZpY2UgdGhhdCBzZWVtcyBxdWl0ZSBzaW1pbGFyLgorCitUbyBjb25maWd1cmUgbmV0cGVyZiBmb3Igb3BlcmF0aW9uIGFzIGFuIGF1eGlsbGlhcnkgc2VydmljZSwgeW91IHdpbGwKK25lZWQgdG8gZWRpdC91c2UgdGhlIG5ldHNlcnZlcl9ydW4uY29tIGZpbGUgYW5kIGFsdGVyIHRoZSAicGF0aCIgdG8KK25ldHNlcnZlciBhY2NvcmRpbmdseS4gIFRoZSB2ZXJzaW9uIHRoYXQgc2hpcHMgaXMgc2V0dXAgZm9yIHdoZXJlIFJpY2sKK0pvbmVzIGRpZCBoaXMgaW5pdGlhbCBwb3J0aW5nIHdvcmsgYW5kIG1vc3QgbGlrZWx5IGlzIG5vdCBhcHJvcHJpYXRlCitmb3IgeW91IDopCisKKyAgICQgIGRlZmluZSBzeXMkb3V0cHV0IHN5cyRzeXNyb290OltuZXRwZXJmXWhlbGxvX3NlcnZpY2UubG9nIAorICAgJCAgZGVmaW5lIHN5cyRlcnJvciAgc3lzJHN5c3Jvb3Q6W25ldHBlcmZdaGVsbG9fc2VydmljZS5sb2cgCisgICAkICBydW4gc3lzJHN5c3Jvb3Q6W25ldHBlcmZdbmV0c2VydmVyLmV4ZSAKKworVGhlbiBpdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byAiZGVmaW5lIiBuZXRwZXJmIChuZXRzZXJ2ZXIpIGFzIGFuCithdXhpbGxpYXJ5IHNlcnZpY2UuIFRoaXMgd2lsbCBuZWVkIHRvIGJlIGN1c3RvbWl6ZWQgYXMgYXByb3ByaWF0ZSBmb3IKK3lvdXIgc3lzdGVtCisKKyAgICQgdGNwaXAgc2V0IHNlcnZpY2UgbmV0c2VydmVyIC0gCisgICBfJCAvcG9ydD0xMjg2NSAtIAorICAgXyQgL3Byb3RvY29sPXRjcCAtIAorICAgXyQgL3VzZXI9c3lzdGVtIC0gCisgICBfJCAvbGltaXQ9NDggLQorICAgXyQgL3Byb2Nlc3NfbmFtZT1uZXRzZXJ2ZXIgLSAKKyAgIF8kIC9maWxlPXN5cyRzeXNyb290OltuZXRwZXJmXW5ldHNlcnZlcl9ydW4uY29tIAorCitBbmQgdGhlbiBpdCBpcyBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoZSBzZXJ2aWNlOgorCiskIHRjcGlwIGVuYWJsZSBzZXJ2aWNlIG5ldHNlcnZlcgorCitJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoZSBzZXJ2aWNlLCB5b3UgY2FuIGlzc3VlIHRoZSBjb21tYW5kCisKKyQgdGNwaXAgc2V0IG5vc2VydmljZSBuZXRzZXJ2ZXIKKworQnkgZGVmYXVsdCwgT3BlblZNUyBpcyBjYXNlLWluc2Vuc2l0aXZlIHdpdGggY29tbWFuZGxpbmVzLCBhbmQgd2lsbAorZG93bnNoaWZ0IGV2ZXJ5dGhpbmcgdG8gbG93ZXIgY2FzZS4gIFRoaXMgZG9lcyBub3QgaW50ZXJhY3Qgd2VsbCB3aXRoCituZXRwZXJmJ3MgdXNlIG9mIGNvbW1hbmQtbGluZSBvcHRpb25zIGxpa2UgIi1IIiBhbmQgIi1oIiB3aXRoIHJhdGhlcgorZGlmZmVyZW50IG1lYW5pbmdzLgorCitUbyB3b3JrYXJvdW5kIHRoYXQsIHRoZSBmb2xsb3dpbmcgZGVmaW5lcyBhcmUgYmVsaWV2ZWQgdG8gYmUKK3N1ZmZpY2llbnQuCisKKyQgZGVmaW5lICBERUNDJEFSR1ZfUEFSU0VfU1RZTEUgICAgICAgRU5BQkxFCiskIGRlZmluZSAgREVDQyRFRlNfQ0FTRV9QUkVTRVJWRSAgICAgIEVOQUJMRQorJCBkZWZpbmUgIERFQ0MkUE9TSVhfU0VFS19TVFJFQU1fRklMRSBFTkFCTEUKKyQgZGVmaW5lICBERUNDJEVGU19DSEFSU0VUICAgICAgICAgICAgRU5BQkxFCiskIHNldCBwcm9jZXNzIC9wYXJzZV9zdHlsZT1leHRlbmRlZAorCitJIGRvIG5vdCBrbm93IGlmIHRoaXMgd2lsbCBiZSBzb21ldGhpbmcgb25lIGNhbiBhbHNvIGRvIGZvciB0aGUKK25ldHNlcnZlciAtIHByZXN1bWVhYmx5IG9uZSBjb3VsZCBwdXQgdGhlc2UgdGhpbmdzIGluIHRoZQorbmV0c2VydmVyX3J1bi5jb20gZmlsZSAoZ3Vlc3NpbmcpLiBBdCBwcmVzZW50IHRob3VnaCBJJ3ZlIG5vdCB0cmllZAordGhhdCwgYW5kIEknbSBhbHNvIG5vdCBzdXJlIHRoYXQgbmV0c2VydmVyIGhhcyBhbnkgdXBwZXItY2FzZSBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvUkVBRE1FLnNvbGFyaXMgYi9SRUFETUUuc29sYXJpcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBjYTEwCi0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLnNvbGFyaXMKQEAgLTAsMCArMSwyOSBAQAorVW50aWwgdGhlIHJlbGVhc2UgYml0cyB0aGUgZm9sbG93aW5nIHdhcyB0cnVlOgorCisgICAgVW50aWwgc3VjaCB0aW1lIGFzIFJpY2sgSm9uZXMgY2FuIGZpZ3VyZS1vdXQgb3IgYmUgdG9sZCBob3cgdG8gbWFrZSBpdAorICAgIGF1dG9tYWdpYyBpbiB0aGUgY29uZmlndXJlIHNjcmlwdCwgcHJpb3IgdG8gY29uZmlndXJlIG9uIHNvbGFyaXMsIHlvdQorICAgIG1heSBuZWVkOgorCisgICAgQ0ZMQUdTPSItbHNvY2tldCAtbG5zbCAtbGtzdGF0IgorCisgICAgYW5kIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIGNvbXBpbGUgdGhlIFNDVFAgdGVzdHM6CisKKyAgICBDRkxBR1M9Ii1seG5ldCAtbHNvY2tldCAtbG5zbCAtbGtzdGF0IC1EX1hPUEVOX1NPVVJDRT01MDAgLURfX0VYVEVOU0lPTlNfXyIKKworYXMgdGhlIHJlbGVhc2UgYml0cyBoYXZlIGEgInNtYXJ0ZXIiIGNvbmZpZ3VyZSBzY3JpcHQsIGFuZCB0aGUgU0NUUAordGVzdHMgdXNlIGxpYnNjdHAsIHRoZSBhYm92ZSBubyBsb25nZXIgYXBwbGllcy4gIEl0IHNob3VsZCBhbGwganVzdCBiZQorYXV0b21hZ2ljIChhbHRob3VnaCBmb3IgU0NUUCB5b3Ugc3RpbGwgbXVzdCAtLWVuYWJsZS1zY3RwIGF0IGNvbmZpZ3VyZQordGltZSkKKworQmV3YXJlIENQVSB1dGlsIGZpZ3VyZXMgb24gYW55dGhpbmcgYmVmb3JlIFNvbGFyaXMgMTAgdGhhdCBkb2VzIG5vdAorc2F5IDEwMCUsIGFuZCBzdGlsbCBiZSBhIHRyaWZmbGUgY2F1dGlvdXMgd2l0aCBTb2xhcmlzIDEwIENQVSB1dGlsCityZXBvcnRzLiAgVGhlIENQVSB0aW1lIGFjY291bnRpbmcgbWVjaGFuaXNtcyBlaXRoZXIgZG8gbm90IHRyYWNrIHRpbWUKK3NwZW50IHNlcnZpY2luZyBpbnRlcnJ1cHRzLCBvciBkbyBzbyBpbiBwYXJhbGxlbCB3aXRoIHRpbWUgc3BlbnQgaW4KK3VzZXIva2VybmVsL2lkbGUgd2hpY2ggbWVhbnMgdGhhdCBzb21lIGlkbGUgdGltZSBpc24ndCBfcmVhbGx5XyBpZGxlCit0aW1lLgorCitBbmQgYmV5b25kIHRoYXQsIGl0IGlzIHN0aWxsIG5vdCBjbGVhciBpZiB0aGUgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydGVkCitvbiBzeXN0ZW1zIHdpdGggaGFyZHdhcmUgdGhyZWFkaW5nIHN1cHBvcnQgKGVnIFVsdHJhU1BBUkMtVDEpIGlzCityZWFsbHkgYWNjdXJhdGUgZXZlbiBpZ25vcmluZyB0aGUgaXNzdWUgd2l0aCBpbnRlcnJ1cHQgdGltZS4gIEl0IGlzCitsaWtlbHkgdGhhdCB0byBiZSB0cnVlbHkgYWNjdXJhdGUsIGl0IGlzIG5lY2Vzc2FyeSB0byBrbm93IGhvdyBtdWNoCisicmVhbCB3b3JrIiBhbnkgb25lIHN0cmFuZCBwZXJmb3JtZWQuCmRpZmYgLS1naXQgYS9SRUFETUUudm13YXJlIGIvUkVBRE1FLnZtd2FyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjk5NmQyCi0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLnZtd2FyZQpAQCAtMCwwICsxLDE1IEBACitDb21waWxpbmcgZm9yIFZNd2FyZSBpcyBzb21ld2hhdCBsaWtlIGNvbXBpbGluZyBmb3IgV2luZG93cyAtIHRoZXJlIGlzCithIHNlcGFyYXRlLCBzdGFuZGFsb25lIG1ha2VmaWxlIG9uZSB1c2VzLiAgSW4gdGhpcyBjYXNlLCBpdCBpcworc3JjL01ha2VmaWxlLnV3LiAgU28sIHRvIGJ1aWxkIHRoZSBiaXRzLCBjZCB0byBzcmMvIGFuZCBtYWtlIC1mCitNYWtlZmlsZS51dy4KKworQXQgcHJlc2VudCwgdGhlIG1ha2VmaWxlIGlzIHNldHVwIHRvIHVzZSBhIG51bWJlciBvZiB0aGUgIm5vbmUiIGZpbGVzCistIGluIHBhcnRpY3VsYXIgbmV0Y3B1X25vbmUuYy4gIFdoZW4vaWYgd2UgZW5hYmxlIHRoZSAib21uaSIgdGVzdHMKK3dlJ2xsIHBlcmhhcHMgc2VlIHRoZSBhZGRpdGlvbiBvZiBhIG51bWJlciBvZiBvdGhlciAibm9uZSIgZmlsZXMgYXMKK3dlbGwuCisKK0Fsc28sIHNlZW1zIHRoZSB3YXkgdGhpbmdzIGFyZSAicnVuIiB1bmRlciBWTXdhcmUgaXMgZW5vdWdoIGRpZmZlcmVudAordGhhdCB0aGUgc2NyaXB0cywgc2hvdWxkIHlvdSBjaG9zZSB0byB1c2UgdGhlbSwgd2lsbCBuZWVkIHRvIGJlCittb2RpZmllZC4gIFRoZSBpbml0aWFsIHNldCBvZiBwYXRjaGVzIG1ha2Ugc29tZSBhcmJpdHJhcnkgY2hhbmdlcyB0aGF0CituZWVkIHRvIGJlIHJlLXdvcmtlZCB3aXRoIHNvbWUgIlRvIHJ1biB0aGlzIHVuZGVyIFZNd2FyZSB1bmNvbW1lbnQKK3RoaXMgbGluZSIgb3Igc29tZXN1Y2guCmRpZmYgLS1naXQgYS9SRUFETUUud2luZG93cyBiL1JFQURNRS53aW5kb3dzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWUwZGMKLS0tIC9kZXYvbnVsbAorKysgYi9SRUFETUUud2luZG93cwpAQCAtMCwwICsxLDEwOSBAQAorSXQgaGFzIGJlZW4gcmVwb3J0ZWQgdGhhdCB2ZXJzaW9ucyBvZiBuZXRwZXJmIGhhdmUgY29uZmlndXJlZCBhbmQNCitjb21waWxlZCB1bmRlciBDeWd3aW4uICANCisNCitJdCBpcyBhbHNvIGtub3duIHRoYXQgbmV0cGVyZiBoYXMgY29tcGlsZWQgdXNpbmcgdGhlIFdpbmRvd3MgRERLLg0KK0hlcmUgaXMgYSBza2VsZXRvbiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGRvIHNvOg0KKw0KK1N0ZXBzIGFyZToNCisNCitBKSBJbnN0YWxsIHRoZSBXaW5kb3dzIGRyaXZlciBkZXZlbG9wZXIga2l0IChpZiBub3QgYWxyZWFkeSBkb25lKS4NCisNCitCKSBvcGVuIGEgQ21kIHdpbmRvd3MgKGkuZS4sIGEgRE9TIGJveCkgZm9yIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQNCisgICAodGFyZ2V0IE9TIHZlcnNpb247IGZyZWUgdnMgY2hlY2tlZCBidWlsZDsgeDg2LCBBTUQ2NCwgb3IgSUE2NCkuDQorICAgVGhpcyBpcyBwaWNrZWQgZnJvbSB0aGUgIlN0YXJ0XERldmVsb3BlciBLaXRzIiBwYXRoLg0KKw0KK0MpIGVudGVyIHRoZSBzcmNcTmV0UGVyZkRpciBkaXJlY3RvcnkNCisNCitEKSBFZGl0IHNvdXJjZXMgdG8gZW5hYmxlIGFueSBkZXNpcmVkIG9wdGlvbmFsIGZlYXR1cmVzIChlZw0KKyAgIC1EV0FOVF9ISVNUT0dSQU0pIG9yIHRvIHJlbW92ZSBmZWF0dXJlcyB3aGljaCB5b3VyIHZlcnNpb24gb2YNCisgICBXaW5kb3dzIG1pZ2h0IG5vdCBzdXBwb3J0IChlZyAtREhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0UpDQorDQorRSkgd2hpbGUgc3RpbGwgaW4gdGhlIHNyY1xOZXRwZXJmRGlyIGRpcmVjdG9yeSB0eXBlICJidWlsZCAvY0QiLg0KKw0KK0YpIFJlcGVhdCBzdGVwcyBDIHRocm91Z2ggRSBpbiBzcmNcTmV0U2VydmVyRGlyDQorDQorRykgdGhlIHRhcmdldCBmaWxlcyB3aWxsIGJlIGluIGEgZGlyZWN0b3J5IGxpa2U6DQorICAgTmV0UGVyZkRpclxvYmpjaGtfd25ldF9JQTY0XElBNjQsIE5ldFNlcnZlckRpclxvYmpjaGtfd25ldF9JQTY0XElBNjQNCisgICBOZXRQZXJmRGlyXG9iamZyZV93bmV0X3g4NlxpMzg2LCBvciBOZXRQZXJmRGlyXG9iamZyZV93bmV0X0FNRDY0XGFtZDY0DQorDQorTk9URTogSWYgYW55IGNvbXBvbmVudHMgb2YgdGhlIHBhdGggKGllIHRoZSBmdWxsIG5hbWVzIG9mIHRoZSBmaWxlcywNCitpbmNsdWRpbmcgcGFyZW50IGRpcmVjdG9yaWVzKSBjb250YWluIHNwYWNlcyAoZWcgIk15IERvY3VtZW50cyIpLA0KK2J1aWxkIHdpbGwgY2hhcmdlIG9mZiBpbnRvIHRoZSB3ZWVkcy4NCisNCitJZiB5b3UgZG8gbm90IHdhbnQgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZXMsIGVkaXQgdGhlIHNvdXJjZXMgZmlsZXMNCithbmQgcmVtb3ZlIHRoZSAtRHMgZm9yIFdBTlRfREVNTywgV0FOVF9ISVNUT0dSQU0gYW5kL29yIFdBTlRfSU5URVJWQUxTDQorDQorQW5kIGlmIHRoYXQgd2VyZW4ndCBlbm91Z2gsIGl0IGlzIGFsc28ga25vd24gdGhhdCBuZXRwZXJmIGhhcyBiZWVuDQorY29tcGlsZWQgdXNpbmcgTVMgVmlzdWFsIFN0dWRpbyAyMDAzLiAgSGVyZSBhcmUgdGhlIGluc3RydWN0aW9ucyBmcm9tDQordGhlIHBlcnNvbiB3aG8gbWFkZSB0aGF0IHdvcmsgKFNlZSBBdXRob3JzKToNCisNCisxLiAgVW5kZXIgdGhlIFBST0pFQ1QgdGFiLCA8cHJvamVjdCBuYW1lPiBQUk9QRVJUSUVTLCBMSU5LRVIgZm9sZGVyLA0KK1NlbGVjdCBDT01NQU5EIExJTkUgYW5kIGFkZCBXUzJfMzIubGliIGluIHRoZSB3aGl0ZXNwYWNlIGxhYmVsZWQNCitBZGRpdGlvbmFsIE9wdGlvbnM6DQorIA0KKyANCisyLiAgVW5kZXIgdGhlIFBST0pFQ1QgdGFiLCA8cHJvamVjdCBuYW1lPiBQUk9QRVJUSUVTLCBDL0MrKyBmb2xlZGVyLA0KK1NlbGVjdCBQcmVwcm9jZXNzb3IsIE9uIHRoZSByaWdodCwgYWRkIERPX0lQVjY7IGF0IHRoZSBlbmQgb2YgdGhlDQorUHJlcHJvY2Vzc29yIERlZmluaXRpb25zIHdoaXRlc3BhY2UuDQorIA0KKyANCitIZSBnb2VzIG9uIHRvIHNheToNCisgDQorTk9URTogV0hFTiBDT01QTElORyBORVRTRVJWRVIsIGl0IHdvcmtzLCBidXQgSSBnb3QgaXNzdWVkIHRoZQ0KK2ZvaWxsb3dpbmcgd2FybmlnbnMgaW4gbXkgYnVpbGQ6DQorIA0KKw0KKy0tLS0tLSBSZWJ1aWxkIEFsbCBzdGFydGVkOiBQcm9qZWN0OiBuZXRzZXJ2ZXIsIENvbmZpZ3VyYXRpb246IERlYnVnIFdpbjMyIC0tLS0tLQ0KKw0KK0RlbGV0aW5nIGludGVybWVkaWF0ZSBmaWxlcyBhbmQgb3V0cHV0IGZpbGVzIGZvciBwcm9qZWN0ICduZXRzZXJ2ZXInLCBjb25maWd1cmF0aW9uICdEZWJ1Z3xXaW4zMicuDQorDQorQ29tcGlsaW5nLi4uDQorDQorbmV0dGVzdF9ic2QuYw0KKw0KK2c6XFByb2dyYW0gRmlsZXNcbmV0cGVyZlxuZXRwZXJmLTIuNC4xcmMxXHNyY1xuZXR0ZXN0X2JzZC5jKDg0NikgOiB3YXJuaW5nIEM0MjY3OiAnZnVuY3Rpb24nIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICdpbnQnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGENCisNCitnOlxQcm9ncmFtIEZpbGVzXG5ldHBlcmZcbmV0cGVyZi0yLjQuMXJjMVxzcmNcbmV0dGVzdF9ic2QuYygxMzAzKSA6IHdhcm5pbmcgQzQyNjc6ICdmdW5jdGlvbicgOiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ2ludCcsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQ0KKw0KK2c6XFByb2dyYW0gRmlsZXNcbmV0cGVyZlxuZXRwZXJmLTIuNC4xcmMxXHNyY1xuZXR0ZXN0X2JzZC5jKDIwMjApIDogd2FybmluZyBDNDI2NzogJ2Z1bmN0aW9uJyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAnaW50JywgcG9zc2libGUgbG9zcyBvZiBkYXRhDQorDQorZzpcUHJvZ3JhbSBGaWxlc1xuZXRwZXJmXG5ldHBlcmYtMi40LjFyYzFcc3JjXG5ldHRlc3RfYnNkLmMoNTA4MCkgOiB3YXJuaW5nIEM0MjY3OiAnZnVuY3Rpb24nIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICdpbnQnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGENCisNCitnOlxQcm9ncmFtIEZpbGVzXG5ldHBlcmZcbmV0cGVyZi0yLjQuMXJjMVxzcmNcbmV0dGVzdF9ic2QuYyg1NzE1KSA6IHdhcm5pbmcgQzQyNjc6ICdmdW5jdGlvbicgOiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ2ludCcsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQ0KKw0KK2c6XFByb2dyYW0gRmlsZXNcbmV0cGVyZlxuZXRwZXJmLTIuNC4xcmMxXHNyY1xuZXR0ZXN0X2JzZC5jKDY1OTEpIDogd2FybmluZyBDNDI2NzogJ2Z1bmN0aW9uJyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAnaW50JywgcG9zc2libGUgbG9zcyBvZiBkYXRhDQorDQorZzpcUHJvZ3JhbSBGaWxlc1xuZXRwZXJmXG5ldHBlcmYtMi40LjFyYzFcc3JjXG5ldHRlc3RfYnNkLmMoODAxMykgOiB3YXJuaW5nIEM0MjY3OiAnZnVuY3Rpb24nIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICdpbnQnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGENCisNCitnOlxQcm9ncmFtIEZpbGVzXG5ldHBlcmZcbmV0cGVyZi0yLjQuMXJjMVxzcmNcbmV0dGVzdF9ic2QuYygxMTEyMykgOiB3YXJuaW5nIEM0MjY3OiAnZnVuY3Rpb24nIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICdpbnQnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGENCisNCituZXRzaC5jDQorDQorbmV0c2VydmVyLmMNCisNCitnOlxQcm9ncmFtIEZpbGVzXG5ldHBlcmZcbmV0cGVyZi0yLjQuMXJjMVxzcmNcbmV0c2VydmVyLmMoNDU3KSA6IHdhcm5pbmcgQzQyNjc6ICdmdW5jdGlvbicgOiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ2ludCcsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQ0KKw0KK25ldGxpYi5jDQorDQorZzpcUHJvZ3JhbSBGaWxlc1xuZXRwZXJmXG5ldHBlcmYtMi40LjFyYzFcc3JjXG5ldGxpYi5jKDI0NzApIDogd2FybmluZyBDNDI2NzogJ2Z1bmN0aW9uJyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAnaW50JywgcG9zc2libGUgbG9zcyBvZiBkYXRhDQorDQorZzpcUHJvZ3JhbSBGaWxlc1xuZXRwZXJmXG5ldHBlcmYtMi40LjFyYzFcc3JjXG5ldGxpYi5jKDI0ODApIDogd2FybmluZyBDNDI2NzogJ2Z1bmN0aW9uJyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAnaW50JywgcG9zc2libGUgbG9zcyBvZiBkYXRhDQorDQorbmV0Y3B1X250cGVyZi5jDQorDQoraW5ldF9udG9wLmMNCisNCitHZW5lcmF0aW5nIENvZGUuLi4NCisNCitMaW5raW5nLi4uDQorDQorQnVpbGQgbG9nIHdhcyBzYXZlZCBhdCAiZmlsZTovL2c6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcQWRtaW5pc3RyYXRvclxNeSBEb2N1bWVudHNcVmlzdWFsIFN0dWRpbyBQcm9qZWN0c1xuZXRzZXJ2ZXJcRGVidWdcQnVpbGRMb2cuaHRtIg0KKw0KK25ldHNlcnZlciAtIDAgZXJyb3IocyksIDExIHdhcm5pbmcocykNCisNCisgDQorDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEb25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitSZWJ1aWxkIEFsbDogMSBzdWNjZWVkZWQsIDAgZmFpbGVkLCAwIHNraXBwZWQNCisNCmRpZmYgLS1naXQgYS9SZWxlYXNlX05vdGVzIGIvUmVsZWFzZV9Ob3RlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTk0YWVkCi0tLSAvZGV2L251bGwKKysrIGIvUmVsZWFzZV9Ob3RlcwpAQCAtMCwwICsxLDEwODkgQEAKK1RoZXNlIGFyZSB0aGUgUmVsZWFzZSBOb3RlcyBmb3IgUmV2aXNpb24gMi43LjAgb2YgbmV0cGVyZjoKKworKikgQWRkIGJpdHMvcyAoLWYgYikgYW5kIEJ5dGVzL3MgKC1mIEIpIGFzIHNlbGVjdGFibGUgdGhyb3VnaHB1dAorICAgdW5pdHMuIFRoaXMgbWF5IG1ha2UgbGlmZSBlYXNpZXIgZm9yIGZvbGtzIGRvaW5nIHBvc3QtcHJvY2Vzc2luZyBvZgorICAgdGhpbmdzIGxpa2UgaW50ZXJpbSByZXN1bHRzLgorCisqKSBNaXNjZWxhbmVvdXMgZml4ZXMKKworKikgTXVjaCBvZiB0aGUgbm93LXNlZW1pbmcga3J1ZnQgZm9yIHRoaW5ncyBwZXJpcGhlcmFsIHRvIG5ldHBlcmYncworICAgY29yZSBtaXNzaW9uIC0gaGF2ZSBiZWVuIHJlbW92ZWQgdGhvdWdoIHRoZSBjb2RlIGl0c2VsZiByZW1haW5zIGluCisgICB0aGUgcmVwb3NpdG9yeS4gIFNvLCB0aGluZ3MgbGlrZSBsb29raW5nLXVwIGVncmVzcyBpbnRlcmZhY2UsCisgICBkcml2ZXIvc2xvdCBpbmZvcm1hdGlvbiBldGMgaGF2ZSBiZWVuIGRpc2FibGVkIGluIGEgbWFubmVyCisgICByZXF1aXJpbmcgbW9yZSB0aGFuIGp1c3QgYSAuL2NvbmZpZ3VyZSB0byBicmluZy1iYWNrLgorCisgICBJdCB3YXNuJ3QgY2xlYXIgdGhvc2UgZmVhdHVyZXMgd2VyZSBiZWluZyB1c2VkLiAgVGhpcyBpcyBhIHRlc3Qgb2YKKyAgIHRoYXQgaHlwb3RoZXNpcy4KKworVGhlc2UgYXJlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciBSZXZpc2lvbiAyLjYuMCBvZiBuZXRwZXJmOgorCisqKSBJbml0aWFsIHBhc3MgYXQgc3VwcG9ydCBmb3IgLS1lbmFibGUtaW50ZXJ2YWxzIChXQU5UX0lOVEVSVkFMUykgZm9yCisgICBXaW5kb3dzLCBjb3VydGVzeSBvZiBKb25hdGhhbiBDb29rLgorCisqKSBXaGVuIGluIGRlbW8gbW9kZSAoLi9jb25maWd1cmUgLS1lbmFibGUtZGVtbyBhbmQgYSBnbG9iYWwgLUQKKyAgIDxpbnRlcnZhbD4gb3B0aW9uIG5ldHBlcmYgd2lsbCBtYWtlIHN1cmUgaXQgZW1pdHMgIm9uZSBsYXN0CisgICBpbnRlcnZhbCByZXN1bHQiIHdoZW4gdGhlIHRlc3QgaXMgdGVybWluYXRlZC4gIFRoaXMgc2hvdWxkIGFzc2lzdAorICAgd2hlbiBwb3N0LXByb2Nlc3NpbmcgcmVzdWx0cyB0aHJvdWdoIHRoZSBsaWtlcyBvZiBycmR0b29sIHdoZW4KKyAgIHRoZXJlIGlzIGEgc2xvdy1kb3duIGluIHRoZSBwZXJmb3JtYW5jZSBqdXN0IGF0IHRoZSBlbmQgdGhhdCB3b3VsZAorICAgaGF2ZSBzdHJldGNoZWQgdGhlIGludGVydmFsIHRvIGJleW9uZCB0aGUgdGVzdCB0ZXJtaW5hdGlvbi4KKworKikgQSBmaXggdG8gaGF2ZSB0aGUgQUZfVU5JWCB0ZXN0cyByZWFsaXplIHRoYXQgdGhlIHZhbHVlIGZvciAidGFrZQorICAgdGhlIHN5c3RlbSBkZWZhdWx0IiBzb2NrZXQgYnVmZmVyIHNpemUgYmVjYW1lIC0xIHllYXJzIGFnby4gIEJ1ZworICAgZm91bmQgYnkgRXJpYyBEdW1hemV0LgorCisqKSBJbmNsdWRlIGEgcGF0Y2ggZnJvbSBEYXZlIFRhaHQgdG8gZW5hYmxlIHN5bWJvbGljIG1hbmlwdWxhdGlvbiBvZgorICAgSVBfVE9TIHZhbHVlcy4KKworKikgSW5jbHVkZSBhIHBhdGNoIGZyb20gU2FjaGFyIFJhaW5kZWwgdG8gZW5hYmxlIHRoZSBvbW5pIHRlc3RzIHRvIGdldAorICAgRU5PQlVGUyB1bmRlciBMaW51eCB3aGVuIHRoZSBzb2NrZXQgYnVmZmVyIGlzIGxhcmdlciB0aGFuIHRoZSB0eAorICAgcXVldWUgb2YgdGhlIGVncmVzcyBpbnRlcmZhY2UuICBUaGlzIHdpbGwgaGVscCBwcmVjbHVkZSBuZXRwZXJmJ3MKKyAgIHJlcG9ydGluZyBhIGxhcmdlciB0aGFuIGxpbmstcmF0ZSBzZW5kLXNpZGUgZmlndXJlLgorCisqKSBGaXggYSBwcm9ibGVtIHdpdGggbGF0ZSBjaGVja2luZyBvZiB0aGUgcmV0dXJuIGZyb20gc2VsZWN0KCkgaW4KKyAgIHNyYy9uZXRzZXJ2ZXIuYy4gUmVwb3J0ZWQgYnkgV2FxYXIgU2hlaWtoLgorCisqKSBBIG5ldyBnbG9iYWwgLVogb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIG5ldHBlcmYgYW5kIG5ldHNlcnZlci4KKyAgIFRoaXMgdGFrZXMgYXMgYW4gYXJndW1lbnQgYSBwYXNzcGhyYXNlLiAgSW4gdGhlIGNhc2Ugb2YgbmV0c2VydmVyCisgICBpdCB3aWxsIGV4cGVjdCBhIGNvbnRyb2wgbWVzc2FnZSB3aXRoIHRoZSBwYXNzcGhyYXNlIGFzIHRoZSBmaXJzdAorICAgdGhpbmcgaXQgcmVjZWl2ZXMgb24gdGhlIGNvbnRyb2wgY29ubmVjdGlvbi4gIElmIG5ldHNlcnZlciBkb2VzIG5vdAorICAgcmVjZWl2ZSBhIGNvbnRyb2wgbWVzc2FnZSB3aXRoIHRoZSBwYXNzcGhyYXNlIGl0IHdpbGwgY2xvc2UgdGhlCisgICBjb250cm9sIGNvbm5lY3Rpb24gYW5kIG1vdmUtb24uICBJZiB0aGUgbmV0c2VydmVyIHJlY2VpdmVzIGEKKyAgIGNvbnRyb2wgbWVzc2FnZSB3aXRoIGEgcGFzc3ByaGFzZSB3aGVuIGl0IGlzIG5vdCBsb29raWduIGZvciBvbmUsCisgICBpdCB3aWxsIGJlIGlnbm9yZWQuIFRoZXJlIGlzIGF0IHByZXNlbnQgYSAyMCBzZWNvbmQgdGltZW91dCBvbiB0aGUKKyAgIGF0dGVtcHRlZCByZWNlaXB0IG9mIHRoZSByZXF1ZXN0IG1lc3NhZ2UuIEluIHRoZSBjYXNlIG9mIG5ldHBlcmYsCisgICB0aGUgcGFzc3BocmFzZSB3aWxsIGJlIHRoZSBmaXJzdCB0aGluZyBzZW50IG9uIHRoZSBjb250cm9sCisgICBjb25uZWN0aW9uLiAgVGhlcmUgaXMgbm8gcmVzcG9uc2UgdG8gYSBwYXNzcGhyYXNlIGNvbnRyb2wgbWVzc2FnZS4KKworKikgRGVtbyBtb2RlIG91dHB1dCBmb3JtYXQgd2lsbCBub3cgdHJhY2sgdGhlIG9tbmkgb3V0cHV0IGZvcm1hdC4gU28sCisgICBpZiB0aGUgb21uaSBvdXB1dCBmb3JtYXQgaXMgQ1NWIHRoZW4gdGhlIGludGVyaW0gcmVzdWx0cyB3aWxsIGJlCisgICBlbWl0dGVkIGluIGNzdi4gTGlrZXdpc2UgZm9yIGtleXZhbC4gIElmIHRoZSBtb2RlIGlzIGh1bWFuIChkZWZhdWx0CisgICBhbmQgdGVzdC1zcGVjaWZpYyAtTykgdGhlbiB0aGUgb3V0cHV0IHJlbWFpbnMgdW5jaGFuZ2VkLiAgS2V5dmFsCisgICBvdXRwdXQgaW5jbHVkZXMgdGhlIGNvdW50IG9mIGludGVydmFsLCB3aXRoIGEgbWluZCB0b3dhcmRzIGJlaW5nCisgICBhYmxlIHRvIHNvdXJjZSBpdCBpbiBzaGVsbHMgYW5kIHdoYXRub3QuICBTdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0CisgICBub3RpY2UuCisKKyopIEEgcGF0Y2ggdG8gY29ycmVjdGx5IGhhbmRsZSBJUHY2IGFkZHJlc3NlcyBpbiB0aGUgY29udHJvbCBtZXNzYWdlcywKKyAgIGNvdXJ0ZXN5IG9mIEJqb2VybiBaZWViLgorCisqKSBUaGUgZ2xvYmFsIC1GIG9wdGlvbiBjYW4gbm93IGJlIHVzZWQgc3BlY2lmeSBhIGxvY2FsIGFuZC9vciByZW1vdGUKKyAgIGZpbGwgZmlsZS4KKworKikgSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNldC9nZXQgdGhlIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtCisgICBiZWluZyB1c2VkIGJ5IGVpdGhlciBlbmQgb2YgdGhlIHRlc3QgY29ubmVjdGlvbiB3aGVuIHVzaW5nIHRoZSBvbW5pCisgICBjb2RlLiAgVGhlIG91dHB1dCBzZWxlY3RvcnMgYXJlIExPQ0FMX0NPTkdfQ09OVFJPTCBhbmQKKyAgIFJFTU9URV9DT05HX0NPTlRST0wgYW5kIHNldHRpbmcgaXMgdmlhIHRoZSB0ZXN0LXNwZWNpZmljIC1LIG9wdGlvbi4KKworKikgU3RvcCBsZWFraW5nIGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBsb29raW5nLXVwIHByb2JhYmxlIGVncmVzcworICAgaW50ZXJmYWNlIG5hbWVzIGFuZCBJL08gc2xvdCBudW1iZXJzLgorCisqKSBUaGUgZ2xvYmFsIC1ZIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBzZXQgSVBfVE9TIG9uIHRob3NlIHBsYXRmb3JtcworICAgd2hpY2ggc3VwcG9ydCBpdC4gIFNpbmNlIHRoaXMgaXMgc3BlY2lmaWMgdG8gSVAgKHY0IG9yIHY2KSBpdCBtYXkKKyAgIG1vdmUgdG8gYSB0ZXN0LXNwZWNpZmljIG90aW9uIGluIHRoZSBmdXR1cmUuICBJdCBpcyBwcmVzZW50bHkKKyAgIGdsb2JhbCBmb3IgZm9vbGlzaCBjb25zaXN0ZW5jeSB3aXRoIHRoZSAteSBvcHRpb24gdG8gc2V0CisgICBTT19QUklPUklUWS4KKworKikgVGhlIGdsb2JhbCAteSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc2V0IFNPX1BSSU9SSVRZIG9uIHRob3NlCisgICBwbGF0Zm9ybXMgd2hpY2ggc3VwcG9ydCBpdC4gIEJhc2VkIG9uIHBhdGNoZXMgZnJvbSBBbWlyIFZpZGFpLgorCisqKSBUaGUgY29udHJvbCBtZXNzYWdlIHNpemUgaGFzIGJlZW4gaW5jcmVhc2VkIGZyb20gMjU2IGJ5dGVzIHRvIDUxMgorICAgYnl0ZXMuIFRISVMgV0lMTCBCUkVBSyBDT01QQVRBQklMSVRZIFdJVEggUFJFVklPVVMgVkVSU0lPTlMgT0YKKyAgIE5FVFBFUkYuIEhvd2V2ZXIsIHdlIG5lZWQgbW9yZSByb29tIG9uIHRoZSBwaW5oZWFkIG9uIHdoaWNoIHRoZQorICAgYW5nZWxzIGRhbmNlLgorCisqKSBNYWtlIHRoZSAic3VtIiBmaWVsZCBvZiB0aGUgaGlzdG9ncmFtIHN0cnVjdHVyZSBhIDY0IGJpdCBpbnQgdG8KKyAgIGF2b2lkIGhhdmluZyBpdCB3cmFwLWFyb3VuZCBvbiB0ZXN0cyB3aGVyZSB0aGUgc3VtIG9mIGFsbCB0aGUKKyAgIG1lYXN1cmVkIGxhdGVuY2llcyB3YXMgbGFyZ2VyIHRoYW4gMzEgYml0cy4gVGhpcyB3YXMgY2F1c2luZworICAgc3RhdGlzdGljcyBsaWtlIHN0ZGRldiB0byBnbyBuZWdhdGl2ZSBpbiBzb21lIGNhc2VzLgorCisqKSBJZiB0aGUgdGltZSBkZWx0YSBiZXR3ZWVuIHR3byBldmVudHMgaXMgbmVnYXRpdmUsIGRvIG5vdCBib3RoZXIKKyAgIGRvaW5nIGFueSBtYXRoIHdpdGggaXQgaW4gdGhlIGhpc3RvZ3JhbS9zdGF0aXN0aWNzIGNvZGUsIGp1c3QKKyAgIGluY3JlbWVudCB0aGUgcmlkaWN1bG91cyBjb3VudCBhbmQgbW92ZS1vbi4KKworKikgRml4ZWQgYSBidWcgd2hpY2ggY2F1c2VkIGxvY2FsIHRyYW5zcG9ydCByZXRyYW5zbWlzc2lvbnMgdG8gYmUKKyAgIHJlcG9ydGVkIGFzIC0xIGV2ZW4gdGhvdWdoIHRoZSBnZXRzb2Nrb3B0KCkgY2FsbCB3YXMKKyAgIHN1Y2Nlc3NmdWwuIChMaW51eCkuICBMYXRlciBpbmNsdWRlZCByZW1vdGUgdHJhbnNwb3J0CisgICByZXRyYW5zbWlzc2lvbnMuCisKKyopIFRoZSBzcmMvbmV0dGVzdF9vbW5pLmMgYW5kIHJlLXdyaXR0ZW4gc3JjL25ldHNlcnZlci5jIGNvZGUgYXJlIG5vdworICAga25vd24gdG8gaGF2ZSBjb21waWxlZCB1bmRlciBXaW5kb3dzIDcgeDY0IHdpdGggdGhlIE1pY3Jvc29mdAorICAgV0RLLiBUaGVyZSByZW1haW5zIGEgdGltaW5nIGlzc3VlIHdpdGggY29uZmlkZW5jZSBpbnRlcnZhbHMgd2hpY2gKKyAgIGlzIHlldCB0byBiZSBhZGRyZXNzZWQsIGFuZCBtYXkgaGF2ZSBiZWVuIHRoZXJlIGZvciBhZ2VzLiBOZXRzZXJ2ZXIKKyAgIGhhcyBiZWVuIHJ1biBhcyBhIG5vbi1zcGF3bmluZyAoLWYpIHNlcnZlciwgbmV0cGVyZiBoYXMgYmVlbiBydW4sCisgICBib3RoIGhhdmUgcnVuICJjbGFzc2ljIiBhbmQgIm9tbmkiIHRlc3RzLgorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIFJldmlzaW9uIDIuNS4wIG9mIG5ldHBlcmY6CisKKyopIEFkZCBhIG5ldyAtTiBvcHRpb24gdG8gbmV0c2VydmVyIHdoaWNoIHdpbGwgc3VwcHJlc3MgYWxsIGNyZWF0aW9uCisgICBvZiBkZWJ1ZyBmaWxlcyBhbmQgc28gZGVidWdnaW5nIG91dHB1dC4gIFdoaWxlIHRoaXMgd291bGQgcHV0IGEKKyAgIHNlcmlvdXMgY3JpbXAgaW4gZGVidWdnaW5nIGEgcHJvYmxlbSBpbiBuZXRzZXJ2ZXIsIGl0IHdpbGwgZW5hYmxlCisgICBmb2xrcyB1c2luZyBzbWFsbCBlbWJlZGRlZCBzeXN0ZW1zIHRvIGF2b2lkIHNvYWtpbmctdXAgdGhlaXIgL3RtcAorICAgZmlsZXN5c3RlbSB3aXRoIGNsdXR0ZXIuCisKKyopIEEgcmVmYWN0b3JpbmcgYW5kIHBhcnRpYWwgcmUtd3JpdGUgb2YgdGhlIHNyYy9uZXRzZXJ2ZXIuYyBjb2RlIHRvCisgICB1bnRhbmdsZSB5ZWFycyBvZiBhY2N1bXVsYXRlZCBzcGFnaGV0dGkgY29kZS4gIEluY2x1ZGVkIGlzIHRoZQorICAgYWJpbGl0eSB0byBub3QgZGFlbW9uaXplIG5ldHNlcnZlciB3aGVuIGxhdW5jaGVkIGZyb20gdGhlCisgICBjb21tYW5kLWxpbmUgKC1EKSBhbmQgYWxzbyB0byBub3QgZm9yay9zcGF3biBjaGlsZCBwcm9jZXNzZXMgdXBvbgorICAgdGhlIGFjY2VwdGFuY2Ugb2YgYSBjb250cm9sIGNvbm5lY3Rpb24gKC1mKS4gIENvbWJpbmVkLCB0aGUgdHdvCisgICBvcHRpb25zIHdpbGwgY2F1c2UgbmV0c2VydmVyIHRvIHJlbWFpbiBpbiB0aGUgZm9yZ3JvdW5kIGFuZCBub3QKKyAgIHNwYXduIGNoaWxkcmVuIC0gaW4gZWZmZWN0IG5ldHNlcnZlciB3aWxsIGhhbmRsZSBvbmx5IG9uZSB0ZXN0IGF0IGEKKyAgIHRpbWUuCisKKyopIEFzIGl0IGhhcyBiZWVuIHR3byB5ZWFycyBzaW5jZSB0aGUgZGVmZWN0IGluIFNvbGFyaXMgZ2V0YWRkcmluZm8oKQorICAgd2FzIHN1Ym1pdHRlZCwgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgYSBmaXggaXMgYXZhaWxhYmxlLCBzbyBpdAorICAgc2hvdWxkIG5vIGxvbmdlciBiZSBuZWNlc3NhcnkgdG8gImhpZGUiIHRoZSAiSGV5IHlvdXIgcGxhdGZvcm0ncworICAgZ2V0YWRkcmluZm8oKSBjYWxsIGlzIGJ1Z2d5IiB3YXJuaW5nLiAgQ29uc2VxdWVudGx5LCBpdCBpcyBubworICAgbG9uZ2VyIGJlaW5nIHN1cHByZXNzZWQuCisKKyopIEEgbmV3IGdsb2JhbCBjb21tYW5kIGxpbmUgb3B0aW9uIC0gLVMgLSBoYXMgYmVlbiBhZGRlZCB0byBlbmFibGUKKyAgIHNldHRpbmcgb2YgU09fS0VFUEFMSVZFIG9uIHRoZSBkYXRhIHNvY2tldC4gIFRoaXMgd2lsbCBhZmZlY3QgdGhlCisgICBuZXRwZXJmIHNpZGUgb2YgdGhlICJjbGFzc2ljIiBuZXRwZXJmIHRlc3RzLCBhbmQgd2lsbCBhbHNvIGFmZmVjdAorICAgdGhlIG5ldHNlcnZlciBzaWRlIG9mIGFuICJvbW5pIiBvciBtaWdyYXRlZCBjbGFzc2ljIHRlc3QgYXMgb25seQorICAgdGhlIGNvbnRyb2wgbWVzc2FnZSBmb3IgdGhlIG9tbmkgdGVzdHMgaGFzIHRoZSByZXF1aXNpdGUgZmxhZ3MKKyAgIGZpZWxkIHRvIGNvbW11bmljYXRlIHRoZSBkZXNpcmUgdG8gc2V0IFNPX0tFRVBBTElWRS4KKworICAgT3N0ZW5zaWJseSwgdGhpcyBtYXkgaGVscCB3aGVuIG5ldHBlcmYgaXMgKGFiKXVzZWQgaW4gZnVuY3Rpb25hbAorICAgdGVzdGluZyBzaXR1YXRpb25zIGFuZCBuZXRzZXJ2ZXJzIGVuZC11cCBvcnBoYW5lZCBhbmQgb3V0IGluIHRoZQorICAgY29sZCBiZWNhdXNlIHRoZWlyIGNvcnJlc3BvbmRpbmcgbmV0cGVyZnMgd2VudCBhd2F5IGFuZCB0aGUKKyAgIG5vdGlmaWNhdGlvbiB3YXMgbG9zdCBhbWlkIHRoZSByb2FyIG9mIHRyYWZmaWMgb3Zlci1zYXR1cmF0aW5nIHRoZQorICAgaW50ZXJjb25uZWN0KHMpLgorCisgICBUaGUgZGVmYXVsdCBpcyB0byBiZWhhdmUgYXMgYmVmb3JlIC0gU09fS0VFUEFMSVZFIG5vdCBzZXQuCisKKyopIEJhc2Ugb24gdGhlIGZyZXF1ZW5jeSBhdCB3aGljaCB0aGUgYXV0aG9yIGhhcyB1c2VkIHRoZQorICAgZnVuY3Rpb25hbGl0eSwgdGhlIGRlZmF1bHQgZm9yIC0tZW5hYmxlLWJ1cnN0IGlzIG5vdyAieWVzLiIgIFRvCisgICBkaXNhYmxlIHN1cHBvcnQgZm9yIGJ1cnN0IG1vZGUgb25lIG11c3Qgbm93IGluY2x1ZGUgYQorICAgLS1lbmFibGUtYnVyc3Q9bm8gd2hlbiBwZXJmb3JtaW5nIHRoZSAuL2NvbmZpZ3VyZSBwcmlvciB0bworICAgY29tcGlsaW5nIHRoZSBiaXRzLgorCisqKSBUaGUgb3V0cHV0IG9mIHRoZSAtRCBnbG9iYWwgY29tbWFuZCBsaW5lIG9wdGlvbiAoLi9jb25maWd1cmUKKyAgIC0tZW5hYmxlLWRlbW8pIGhhcyBiZWVuIGVuaGFuY2VkIHRvIGluY2x1ZGUgc2Vjb25kcyBhbmQKKyAgIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggYXMgcmV0dXJuZWQgYnkgYSBnZXR0aW1lb2ZkYXkoKSBjYWxsCisgICB3aXRoIGEgbnVsbCBwb2ludGVyIGZvciB0aGUgdGltZXpvbmUuICBUaGlzIGlzIGluIHN1cHBvcnQgb2YgYmVpbmcKKyAgIGFibGUgdG8gZWFzaWx5IHNob3ZlIGludGVyaW0gcmVzdWx0cyBpbnRvIGFuIHJyZHRvb2wgUm91bmQtUm9iaW4KKyAgIERhdGFiYXNlIChSUkQpLgorCisqKSBUaGUgIm9tbmkiIHRlc3RzIHdpbGwgYmUgY29tcGlsZWQtaW4gYnkgZGVmYXVsdCwgYW5kIFdBTlRfTUlHUkFUSU9OCisgICBpcyB0aGUgZGVmYXVsdC4gIE9uZSBtdXN0IC4vY29uZmlndXJlIHdpdGggLS1lbmFibGUtb21uaT1ubyB0bworICAgZGlzYWJsZSB0aGlzLgorCisqKSBXaGVuIC4vY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWludGVydmFscyBhbmQgaW50ZXJ2YWxzIGFyZQorICAgYWN0dWFsbHkgdXNlZCwgdGhlIHJvdW5kLXRyaXAgbGF0ZW5jeSByZXBvcnRlZCBieSBhbiBvbW5pIChvcgorICAgbWlncmF0ZWQgY2xhc3NpYykgcmVxdWVzdC9yZXNwb25zZSB0ZXN0IHNob3VsZCBiZXR0ZXIgcmVmbGVjdAorICAgcmVhbGl0eSByYXRoZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBwYWNpbmcgaW50ZXJ2YWwuICBJdCBhbmQgdGhlCisgICBNRUFOX0xBVEVOQ1kgZnJvbSB0aGUgaGlzdG9ncmFtIGFuZCAtaiBvdXRwdXQgd2lsbCBzdGlsbCBkaWZmZXIKKyAgIHNsaWdodGx5IGFuZCBwcm9iYWJseSBhbHdheXMgd2lsbC4KKworKikgVGhlIGhpc3RvZ3JhbSBjb2RlIGhhcyBiZWVuIGVuaGFuY2VkIHRvIHRyYWNrIG1vcmUgdGhhbiBvbmUgbGF0ZW5jeQorICAgYXQgYSB0aW1lIGFuZCBzbyAtLWVuYWJsZS1oaXN0b2dyYW0gYW5kIC0tZW5hYmxlLWJ1cnN0IGFyZSBub3cKKyAgIGNvbXBhdGlibGUgLSBmb3IgdGhlIG9tbmkgdGVzdHMgb3IgbWlncmF0ZWQgImNsYXNzaWMiIHRlc3RzIG9ubHkKKyAgIGhvd2V2ZXIuICBUaGlzIGNoYW5nZSB3YXMgaW5zcGlyZWQvaW5zdGlnYXRlZCBieSBKaW0gR2V0dHlzIGFuZCBoaXMKKyAgIHdvcmsgb24gb3Zlcmx5LWxhcmdlIHF1ZXVlcyBvZiBidWZmZXJzCisKKyopIFdBTlRfTUlHUkFUSU9OIGlzIGVuYWJsZWQgd2hlbiBvbmUgc3BlY2lmaWVzIC0tZW5hYmxlLW9tbmkgb24gdGhlCisgICBjb25maWd1cmUgY29tbWFuZCBsaW5lLgorCisqKSBNYXNzYWdlIGFuZCBlbmNvcnBvcmF0ZSBhIHBhdGNoIGZyb20gR29vZ2xlIHRoYXQgZW5hYmxlcworICAgcmFuZG9taXphdGlvbiBvZiB0aGUgSVAgYWRkcmVzc2VzIHVzZWQgaW4gYSB0ZXN0LiAgQW4gb3B0aW9uYWwgbWFzaworICAgbGVuZ3RoIGluIHRoZSBzdGFuZGFyZCAnLycgbm90YXRpb24gY2FuIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlCisgICBJUC9uYW1lIGluIHRoZSB0ZXN0LXNwZWNpZmljIC1IIG9yIC1MIG9wdGlvbnMgb2YgYW4gT21uaSB0ZXN0LgorCisqKSBNYXNzYWdlIGFuZCBpbmNsdWRlIGEgREVCVUdfTE9HX0ZJTEUgcGF0Y2ggZm9yIEFuZHJvaWQgZnJvbQorICAgSm9zc2VsaW4gQ29zdGFuemkKKworKikgQWRkIGludGlhbCBhdHRlbXB0IHRvIHJlcG9ydCBTbG90IElEIG9uIEhQLVVYIDExLjMxLgorCisqKSBBZGQgZ2xvYmFsIC1zIG9wdGlvbiB0byBjYXVzZSBvbW5pIHRlc3RzIHRvIHBhdXNlIGJldHdlZW4KKyAgIHNldHRpbmctdXAgdGhlIHRlc3QgYW5kIGFjdHVhbGx5IHN0YXJ0aW5nIGl0LiAgcGF1c2UgaXMgaW4gc2Vjb25kcy4KKyAgIFBvb3IgbWFuJ3Mgd2F5IHRvIChhdHRlbXB0IHRvKSBhdm9pZCBpc3N1ZXMgd2hlbiBzdGFydGluZyBtYW55LAorICAgTWFueSwgTUFOWSBjb25jdXJyZW50IG5ldHBlcmYgdGVzdHMuIEJhc2VkIG9uIHBhdGNoZXMgZnJvbSBHb29nbGUuCisKKyopIEFkZGl0aW9uYWwgdGltaW5nIHN0YXRpc3RpY3Mgd2lsbCBiZSBrZXB0IGJ5IHRoZSBvbW5pIHRlc3RzIHdoZW4KKyAgIHRoZSBnbG9iYWwgIi1qIiBvcHRpb24gaXMgc3BlY2lmaWVkLiAgVGhlIGFkZGl0aW9uYWwgc3RhdGlzdGljcyBhcmUKKyAgIG1pbiwgbWF4LCBtZWFuLCBzdGRkZXYgYW5kIHRoZSA1MHRoLCA5MHRoIGFuZCA5OXRoIHBlcmNlbnRpbGVzIG9uCisgICB0aGUgdGltaW5ncyBtZWFzdXJlZCBieSBoaXN0b2dyYW1zLiBCYXNlZCBvbiBwYXRjaGVzIGZyb20gR29vZ2xlLgorCisqKSBBZGQgYSB3b3JrYXJvdW5kIHRvIGdldCBMaW51eCB0byByZXBvcnQgVFggcXVldWUgZHJvcHMgaW4gYQorICAgVURQX1NUUkVBTSB0ZXN0IHdoZW4gdGhlIHNvY2tldCBidWZmZXIgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUKKyAgIFRYIHF1ZXVlLiAgUHJvdmlkZWQgYnkgQW5kcmV3IEdhbGxhdGluLgorCisqKSBGaXggdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdG8ga25vdyBpdCBkb2VzIG5vdCBoYXZlIHRvIGxvb2sgZm9yIGFuIAorICAgU0NUUCBsaWJyYXJ5IG9uIEZyZWVCU0QgOC5YCisKKyopIFRoZSBCU0QgYW5kICJvbW5pIiB0ZXN0cyBub3cgaGF2ZSBhIHRlc3Qtc3BlY2lmaWMgLVIgb3B0aW9uIHdoaWNoCisgICBpcyBhIGJvb2xlYW4gY29udHJvbGxpbmcgd2hldGhlciBvciBub3QgU09fRE9OVFJPVVRFIHdpbGwgYmUgc2V0IG9uCisgICB0aGUgZGF0YSBzb2NrZXQuICBCeSBkZWZhdWx0LCBhbnkgdW5pZGlyZWN0aW9uYWwgVURQIHRlc3Qgd2lsbCBoYXZlCisgICBTT19ET05UUk9VVEUgc2V0IHVubGVzcyBhIC1SIDEgb3B0aW9uIGlzIGdpdmVuLiAgQWxsIG90aGVyIHRlc3RzCisgICAoaW5jbHVkaW5nIFVEUCByZXF1ZXN0L3Jlc3BvbnNlIHRlc3RzKSB3aWxsIG5vdCBoYXZlIFNPX0RPTlRST1VURQorICAgc2V0IHVubGVzcyBhIC1SIDAgb3B0aW9uIGlzIGdpdmVuLiAgVGhpcyBpcyBwdXQgaW50byBwbGFjZSB0byBtYWtlCisgICBpdCB0YWtlIGxvbmdlciBmb3IgYmxpdGhlcmluZyBpZGlvdHMgdG8gc2hvb3QgdGhlbXNlbHZlcyBpbiB0aGUKKyAgIGZvb3QgYnkgcnVubmluZyB0ZXN0cyBvbiBzZXR1cHMgdGhleSBzaG91bGRuJ3QuCisKKyopIEF0IGxlYXN0IHRoZSBiZWdpbm5pbmdzIG9mIHN1cHBvcnQgZm9yIFJEUywgYmFzZWQgb24gYSBjaXJjYSAyMDA3CisgICBwYXRjaCBhZ2FpbnN0IDIuNC4yIGJ5IFZsYWRpbWlyIFNva29sb3Zza3kuIFJhdGhlciB0aGFuIGNyZWF0ZSB0aGUKKyAgICJSRFNfU1RSRUFNIiB0ZXN0IG9mIGhpcyBwYXRjaCwgdGhlIGludGVudGlvbiB0aGlzIHRpbWUgYXJvdW5kIGlzCisgICB0byBlbmFibGUgUkRTIGZvciB0aGUgIm9tbmkiIHRlc3RzIGJ5IHVzaW5nIGFuIG9tbmkgdGVzdC1zcGVjaWZpYworICAgLVQgcmRzIHNwZWNpZnllciBmb3IgdGhlICJ0cmFuc3BvcnQiIHRvIHVzZS4KKworKikgTWlzc2luZyBmcHJpbnRmIGZvcm1hdCBzdGF0ZW1lbnRzIHByb3ZpZGVkIGJ5IEJydW5vIENvcm5lYworCisqKSBOdW1lcm91cyBjbGVhbnVwcyBmcm9tIEpvc2UgUGVkcm8gT2xpdmVpcmEKKworKikgRml4ZXMgdG8gYWxsb3cgbmV0cGVyZiAtSCA6OjEgdG8gd29yayB3aXRob3V0IGhhdmluZyB0byBhZGQgLTYgb3IKKyAgICBhbiBBRl9JTkVUNiAtTCBvcHRpb24KKworVGhlc2UgYXJlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciBSZXZpc2lvbiAyLjQuNSBvZiBuZXRwZXJmOgorCitUaGluZ3MgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2U6CisKKyopIEZpeGVzIGZvciBMaW51eCBwcm9jc3RhdC1iYXNlZCBDUFUgdXRpbGl6YXRpb24gb24gbmV3ZXIga2VybmVscworICAgZnJvbSBBbmRyZXcgR2FsbGF0aW4uCisKKyopIEZpeCBmb3IgYSBUQ1BfUlIgaGFuZyBmcm9tIE1pY2hhZWwgU2h1bGRtYW4KKworKikgQ29tcGlsYXRpb24gY2xlYW51cHMgZm9yIE1pbmdXIGNuZCBNU0RPUyAoZGpncHApIG91cnRlc3kgb2YgR2lzbGUKKyAgIFZhbmVtLgorCisqKSBDaGFuZ2VzIHRvIGVuYWJsZSBjb21waWxhdGlvbiBhbmQgYnVpbGRpbmcgb2YgbmV0cGVyZiBmb3IKKyAgIFZNd2FyZS4gS3Vkb3MgdG8gdGhlIHBlcnNvbiB3aG8gZGlkIHRoZSBmaXJzdCBwb3J0LCBJIHdpbGwgYmUgaGFwcHkKKyAgIHRvIG5hbWUgdGhhdCBwZXJzb24gd2hlbiB0b2xkIGl0IGlzIE9LIDopCisKKyopIEZpeGVzIGZyb20gQWRhbSBCaWRlbWEgZm9yIGxhdW5jaGluZyBuZXRzZXJ2ZXIgY2hpbGRyZW4gd2hlbiB0aGUKKyAgIHBhdGggdG8gbmV0c2VydmVyLmV4ZSBpcyB2ZXJ5IGxvbmcuICAKKworKikgRm9yIHRoZSBmaXJzdCB0aW1lLCBuZXRwZXJmMiBoYXMgYSBkZXBlbmRlbmN5LCBhbGJlaXQgb3B0aW9uYWwsIG9uCisgICBhbm90aGVyIG5vbi1iYXNlLW9zIGJpdCBvZiBjb2RlIC0gbGlic21iaW9zIHVuZGVyIExpbnV4LiAgSXQgd2lsbAorICAgYXR0ZXB0IHRvIGRldGVjdCB0aGlzIGF0IGNvbXBpbGUgdGltZSBhbmQgdXNlIGl0IHRvIHJlcG9ydCB0aGUKKyAgIHN5c3RlbSBtb2RlbCBuYW1lIGluIGFuIG9tbmkgdGVzdC4gIElmIGxpYnNtYmlvcyBpcyB0aGVyZSB3ZSB3aWxsCisgICB0cnkgdG8gdXNlIGl0LCBvdGhlcndpc2Ugd2Ugd2lsbCBub3QuICBJZiB0aGUgYXNzb2NpYXRlZCBpbmNsdWRlCisgICBmaWxlIGlzIGFsc28gdGhlcmUgKGVnIHRoZSAtZGV2IHBhY2thZ2UgaW4gYXB0LWdldC1zcGVhayksIHdlIHdpbGwKKyAgIHVzZSBpdCB0byBnZXQgdGhlIHByb3RvdHlwZSBmb3IgU01CSU9TR2V0U3lzdGVtTmFtZSwgb3RoZXJ3aXNlIHdlCisgICBtYWtlIGEgZ3Vlc3MgYXMgdG8gdGhlIHByb3RvdHlwZSBmb3IgU01CSU9TR2V0U3lzdGVtTmFtZSgpLCB3aGljaAorICAgaXMgdGhlIG9ubHkgY2FsbCB3ZSBtYWtlIHRvIGxpYnNtYmlvcy4KKworKikgRml4ZXMgZm9yIEJTRCBDUFUgdXRpbGl6YXRpb24gdG8gZGVhbCB3aXRoIGRpZmZlcmVudCBCU0QgdmFyaWFudHMKKyAgIHVzaW5nIGRpZmZlcmVudCB0eXBlcy4gIENvdXJ0ZXN5IG9mIFNpbW9uIEJ1cmdlIDxzaW1vbmJATmV0QlNELm9yZz4KKworKikgVGhlICJvbW5pIiBzdWl0ZSBoYXMgYmVlbiBhZGRlZCBvbiBhbiBleHBlcmltZW50YWwgYmFzaXMuICBJZiBpdAorICAgd29ya3Mtb3V0IHRoZW4gbWFueSBvZiB0aGUgdGVzdHMgaW4gc3JjL25ldHRlc3RfYnNkLmMsCisgICBzcmMvbmV0dGVzdF9zZHAuYywgYW5kIHNyYy9uZXR0ZXN0X3NjdHAuYyB3aWxsIGJlICJtaWdyYXRlZCIgdG8gdXNlCisgICB0aGUgIm9tbmkgaW5mcmFzdHJ1Y3R1cmUiIChha2EgdHdvIHJvdXRpbmVzIHRvIG1lYXN1cmUgdGhlbQorICAgYWxsLi4uKS4gIEFwYXJ0IGZyb20gcmVkdWNlZCBzb2NrZXQgY29kZSwgdGhlIG9tbmkgc3VpdGUgaGFzCisgICB1c2VyLWNvbmZpZ3VyYWJsZSBvdXRwdXQgaW4gZWl0aGVyICJodW1hbiByZWFkYWJsZSwiIENTViBvcgorICAga2V5d29yZD12YWx1ZSBmb3JtYXQuICBCeSBkZWZhdWx0LCBhIFZFUlkgbGFyZ2UgcXVhbnRpdHkgb2YgZGF0YSBpcworICAgb3V0cHV0IHdoZW4gYXNraW5nIGZvciBjc3YgZm9ybWF0ICh0ZXN0LXNwZWNpZmljIC1vIG9wdGlvbikgb3IKKyAgIGtleXdvcmQgZm9ybWF0ICh0ZXN0LXNwZWNpZmljIC1rIG9wdGlvbikuICBUaGUgb21uaSBzdWl0ZSBpcyBub3QKKyAgIHlldCBkb2N1bWVudGVkICh0aGVyZSBhcmUgc29tZSBhcy15ZXQgdW5kaWFnbm9zZWQgcHJvYmxlbXMgd2l0aAorICAgZG9jL25ldHBlcmYudGV4aSBpbiBlbWFjcyB0ZXhpbmZvIG1vZGUgYW5kIHVwZGF0aW5nIG5vZGVzIGFuZCBsaW5rcworICAgYW5kIHN1Y2ggLSBhbnkgaGVscCB0aGVyZSB3b3VsZCBiZSBhcHByZWNpYXRlZCkgYnV0IHRoZXJlIGlzIGEKKyAgIHNtYWxsIHRleHQgZmlsZSBpbiBkb2MvIGRlc2NyaWJpbmcgdGhlIG5hbWVzIChtb3N0KSBvZiB0aGUKKyAgIGF2YWlsYWJsZSBvdXRwdXQncy4gIEZvciB0aGUgbW9zdCB1cC10by1kYXRlIGxpc3QgY29uc3VsdAorICAgc3JjL25ldHRlc3Rfb21uaS5jIGFuZCB0aGUgZW51bSBuZXRwZXJmX291dHB1dF9uYW1lLiBPciwgeW91IGNhbgorICAgcGFzcy1pbiBhICJmaWxlbmFtZSIgb2YgJz8nIHRvIGVpdGhlciBvZiB0aGUgLU8sIC1vIG9yIC1rIG9wdGlvbnMKKyAgIGFuZCBuZXRwZXJmIHdpbGwgZW1pdCBhIGxpc3Qgb2YgdGhlIGtub3duIGF2YWlsYWJsZSBvdXRwdXRzLgorCisqKSBDb21pbmcgYWxvbmcgZm9yIHRoZSByaWRlIGFyZSBzb21lIG5ldyBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcyB0bworICAgZGV0ZXJtaW5lIHRoZSBwcm9iYWJsZSBlZ3Jlc3MgaW50ZXJmYWNlIGZvciBlYWNoIGVuZCBvZiBhIHRlc3QsIGFzCisgICB3ZWxsIGFzIGRyaXZlciBpbmZvcm1hdGlvbiBmb3IgdGhhdCBpbnRlcmZhY2UuICBUaGVyZSBpcyBhbHNvCisgICByZXBvcnRpbmcgb2YgInVuYW1lIiBsaWtlIGluZm9ybWF0aW9uIGZvciBib3RoIGxvY2FsIGFuZCByZW1vdGUKKyAgIHN5c3RlbSwgYW5kIGV2ZW50dWFsbHkgcGVyaGFwcyBzb21ldGhpbmcgYWJvdXQgdGhlIHZlbmRvcidzIG1vZGVsCisgICBuYW1lIGZvciB0aGUgc3lzdGVtcyBhcyB3ZWxsIGFzIHRoZSBwcm9jZXNzb3IgdHlwZXMuICBUaGUgZW5kIGdvYWwKKyAgIGlzIHRvIG1ha2UgaXQgZWFzeSB0byBnZXQgbW9zdCBpZiBub3QgYWxsIHdoYXQgb25lIHdvdWxkIHdhbnQgaW4gYQorICAgZGF0YWJhc2Ugb2YgbmV0cGVyZiByZXN1bHRzLgorCisqKSBUaGUgVURQX1JSIHRlc3Qgbm93IHVuZGVyc3RhbmRzIHRoZSBnbG9iYWwgLWYgb3B0aW9uIHRvIGNoYW5nZQorICAgb3V0cHV0IHVuaXRzLiAgSXQgYWxzbyB1bmRlcnN0YW5kcyB0aGUgLUIgb3B0aW9uIHRvIHRhZworICAgcmVzdWx0cy4gQ291cnRlc3kgb2YgQWxleGFuZGVyIER1eWNrLgorCisqKSBBIGZpeCBoYXMgYmVlbiBhZGRlZCBmb3IgaGFuZ2luZyBVRFBfUlIgdGVzdHMgdW5kZXIKKyAgIFdpbmRvd3MuIENvdXJ0ZXN5IG9mIEFsZXhhbmRlciBEdXljay4KKworKikgVXNlIHZmb3JrKCkgb24gdGhvc2UgcGxhdGZvcm1zIHdpdGhvdXQgZm9yaygpLCBjb3VydGVzeSBvZiBNYXR0CisgICBXYWRkZWwKKworKikgVHJhY2sgdGhlIGJvdW5jaW5nIGludGVyZmFjZXMgdGhhdCBhcmUgbGludXggcHJvY2Vzc29yIGFmZmluaXR5CisKKyopIEZpeGVzIGZvciBTb2xhcmlzIHNlbmRmaWxldiB1c2FnZS4KKworKikgQSBUQ1BfTVNTIHRlc3QgaGFzIGJlZW4gYWRkZWQgd2hpY2ggd2lsbCByZXBvcnQgdGhlIE1TUyBmb3IgYSBkYXRhCisgICBjb25uZWN0aW9uIHNldHVwIGFzIGlmIHRoZSB0ZXN0IHdlcmUgYSBUQ1BfU1RSRUFNIHRlc3QuICBXaGlsZSB0aGUKKyAgIHJlbW90ZSAobmV0c2VydmVyKSBpcyB0cmlja2VkIGludG8gdGhpbmtpbmcgaXQgaXMgdG8gYWNjZXB0IGEKKyAgIFRDUF9TVFJFQU0gdGVzdCwgbm8gYWN0dWFsIGRhdGEgd2lsbCBmbG93IG92ZXIgdGhlIGNvbm5lY3Rpb24uCisgICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIE1TUyBpcyBvbmUgd2hpY2ggbWlnaHQgY2hhbmdlIG92ZXIgdGhlIGxpZmUKKyAgIG9mIHRoZSBjb25uZWN0aW9uLCBpdCB3aWxsIG5vdCBiZSByZWZsZWN0ZWQgaW4gdGhlIHRlc3Qgb3V0cHV0LgorICAgU2hvdWxkIHRoaXMgcHJvdmUgdG8gYmUgYSBwcm9ibGVtIGEgc2luZ2xlIHNlbmQoKSBjYW4gYmUgYXJyYW5nZWQKKyAgIGFsb25nIHdpdGggdGhlIHJldHVybiBvZiB0aGUgc2h1dGRvd24oKTtyZWN2KCkgaGFuZHNoYWtlLgorCisgICBUaGUgaWRlYSBpcyB0aGF0IHRoaXMgbWlnaHQgYmUgdXNlZnVsIGZvciBuZXRwZXJmIHNjcmlwdHMgd2FudGluZworICAgdG8gcGFyYW1ldGVyaXplIHRoaW5ncyBiYXNlZCBvbiB0aGUgTVNTIC0gZm9yIGV4YW1wbGUgdGhlCisgICBwYWNrZXRfYnl0ZV9zY3JpcHQuCisKKyopIFRoZSB3aWR0aCBvZiB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBjYW4gYmUgc3BlY2lmaWVkIGluIGZyYWN0aW9ucworICAgb2YgYSBwZXJjZW50IGZvciB0aGUgY29uZmlkZW5jZSBvZiBhIGNsZWFuLCBjbG9zZSwgY29tZm9ydGFibGUKKyAgIGNhbGN1bGF0aW9uLiA6KQorCisqKSBIb25vciB0aGUgZ2xvYmFsIC1CIG9wdGlvbiBpbiBhIFRDUF9TRU5ERklMRSB0ZXN0LgorCisqKSBDb3JyZWN0IHRoZSBzZW5zZSBvZiBTZW5kL1JlY3YgaW4gdGhlIGJhbm5lciBvZiBhIFRDUF9NQUVSVFMgdGVzdC4KKworVGhlc2UgYXJlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciBSZXZpc2lvbiAyLjQuNCBvZiBuZXRwZXJmOgorCitUaGluZ3MgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2U6CisKKyopIFRoZSBMT0NfQ1BVIGFuZCBSRU1fQ1BVIHRlc3RzIHdpbGwgcmVwb3J0IHRoZWlyIHJlc3BlY3RpdmUgYmVsaWVmcworICAgYXMgdG8gdGhlIG51bWJlciBvZiBDUFVzIHByZXNlbnQgd2hlbiB0aGUgdmVyYm9zaXR5IGlzIHNldCB0byBtb3JlCisgICB0aGFuIG9uZS4gIFRoaXMgY2FuIGJlIHVzZWQgd2hlbiB0cnlpbmcgdG8gZGlhZ25vc2UgaXNzdWVzIHdpdGggQ1BVCisgICB1dGlsaXphdGlvbi4KKworKikgQSBraW5kIHNvdWwgd2hvIHdpc2hlcyB0byByZW1haW4gYW5vbnltb3VzIHByb3ZpZGVkIGEgcGF0Y2ggdG8KKyAgIGVuYWJsZSB1c2Ugb2Ygc2VuZGZpbGUoKSBvbiBPU1guCisKKyopIEZpeCBhIG1pc3BsYWNlZCBcbiBpbiBhIGZvcm1hdCBzdHJpbmcgb2Ygc2VuZF90Y3BfbWFlcnRzLCBjb3VydGVzeQorICAgb2YgQWxleGFuZGVyIER1eWNrLgorCisqKSBUaGVyZSBpcyBhbiBleHBlcmltZW50YWwgZ2xvYmFsIC1yIG9wdGlvbiB3aGljaCB3aWxsIGFsbG93IG9uZSB0bworICAgaW5jbHVkZSBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLCBidXQgbWFrZSB0aGUgZGVjaXNpb24gYWJvdXQKKyAgIGhpdHRpbmcgY29uZmlkZW5jZSBiYXNlZCBvbiB0aGUgcmVzdWx0IG9ubHkuICBUaGUgdGVzdCBiYW5uZXIgd2lsbAorICAgcmVmbGVjdHMgdGhpcyB3aGVuIC1yIGlzIHVzZWQuCisKKyopIEl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gc3BlY2lmeSBhIGZpbGUgd2l0aCB0aGUgZ2xvYmFsIC1GCisgICBvcHRpb24gd2hlbiBydW5uaW5nIGEgX1NFTkRGSUxFIHRlc3QuICBOZXRwZXJmIHdpbGwgY3JlYXRlIGEKKyAgIHRlbXBvcmFyeSBmaWxlIGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHJhbmRvbSBkYXRhIGFuZCB1c2UgdGhhdC4gIElmCisgICBydW5uaW5nIGFnZ3JlZ2F0ZSB0ZXN0cyBpdCBpcyBzdHJvbmdseSBzdWdnZXN0ZWQgb25lIHVzZSBhIC1GCisgICBvcHRpb24uIE90aGVyd2lzZSwgdGhlIG92ZXJoZWFkIHNwZW50IGNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHRoZQorICAgdGVtcG9yYXJ5IGZpbGUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgQ1BVIHV0aWxpemF0aW9uIGNhbGN1bGF0aW9uLgorCisqKSBUaGUgY29uZmlndXJlIHNjcmlwdCByZWNvZ25pemVzIFNvbGFyaXMgMTEgYW5kIHNlbGVjdHMgdGhlIGNvcnJlY3QKKyAgIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc20gLSBvciByYXRoZXIgaXQgc2VsZWN0cyB0aGUgc2FtZSBtZWNoYW5pc20KKyAgIGFzIGlzIHVzZWQgaW4gU29sYXJpcyAxMC4gIEZpeCBjb3VydGVzeSBvZiBBbmRyZXcgR2FsbGF0aW4uCisKKyopIENvbnZlcnQgYSBudW1iZXIgb2Ygc3RydWN0IHNvY2thZGRyX2luJ3MgdG8gc3RydWN0CisgICBzb2NrYWRkcl9zdG9yYWdlJ3MgYW5kIGFkZCByZXF1aXNpdGUgY2FzdHMgdG8gZGVhbCB3aXRoIHNvbWUgYWJvcnQKKyAgIHByb2JsZW1zIG9uIFdpbmRvd3MgYW5kIHBlcmhhcHMgb3RoZXIgcGxhdGZvcm1zIGFzIHdlbGwuIEt1ZG9zIHRvCisgICBBbGV4YW5kZXIgRHV5Y2suCisKKyopIE9uZSBjYW4gbm93IHBhc3MgYSB2YWx1ZSBvZiAneCcgdG8gdGhlIGdsb2JhbCAtZiBvcHRpb24gdG8gc3BlY2lmeQorICAgdGhlIHVuaXRzIGFzIHRyYW5zYWN0aW9ucyBwZXIgc2Vjb25kLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgYW55CisgICByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHdoaWNoIGlzIGRldGVybWluZWQgYnkgdGhlcmUgYmVpbmcgYSAiZG91YmxlCisgICBgciciIGluIHRoZSBuYW1lIC0gZWcgIlJSLCIgInJyLCIgIlJyLCIgb3IgInJSLiIgIEF0IHByZXNlbnQgb25seQorICAgdGhlIFRDUF9SUiB0ZXN0IGFjdHVhbGx5IGxvb2tzIGZvciB0aGlzIHRvIGJlIHNldC4KKworKikgT25lIGNhbiByZXF1ZXN0IGJpdHMvYnl0ZXMgcGVyIHNlY29uZCBhcyB0aGUgcHJpbWFyeSBvdXRwdXQgb2YgYQorICAgVENQX1JSIHRlc3QgYnkgc2V0dGluZyB0aGUgZ2xvYmFsIC1mIG9wdGlvbiB0byBba21nS01HXSBhcyB3aXRoIGFueQorICAgb2YgdGhlICJTVFJFQU0iIHRlc3RzLiAgVGhpcyBjb252ZXJ0cyB0aGUgcHJpbWFyeSB0aHJvdWdocHV0IG1ldHJpYworICAgdG8gYSBiaXRyYXRlIChieXRlcmF0ZSkgZm9sbG93aW5nIHRoZSB2ZXJib3NpdHkgcnVsZXMgZm9yIGEgU1RSRUFNCisgICB0ZXN0LiAgU2VydmljZSBkZW1hbmQgcmVtYWlucyB1c2VjL1RyYW5zYWN0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICBzZXR0aW5nIG9mIHRoZSBnbG9iYWwgLWYgb3B0aW9uLgorCisgICBBIHZlcmJvc2l0eSBsZXZlbCBvZiAyIG9yIG1vcmUgd2lsbCBjYXVzZSB0aGUgVENQX1JSIHRlc3QgdG8gcmVwb3J0CisgICBjYWxjdWxhdGVkIGF2ZXJhZ2UgUlRUIGxhdGVuY3ksIHRyYW5zYWN0aW9uIHJhdGUsIGFuZCBpbmJvdW5kIGFuZAorICAgb3V0Ym91bmQgdHJhbnNmZXIgcmF0ZXMgcmVnYXJkbGVzcyBvZiB0aGUgcHJpbWFyeSB1bml0cyBzZWxlY3RlZAorICAgd2l0aCB0aGUgZ2xvYmFsIC1mIHBhcmFtdGVyLiAgSWYgdGhlIHByaW1hcnkgb3V0cHV0IGlzIHRyYW5zYWN0aW9ucworICAgcGVyIHNlY29uZCwgdGhlIHJlcG9ydGVkIGluYm91bmQgYW5kIG91dGJvdW5kIHRyYW5zZmVyIHJhdGVzIHdpbGwKKyAgIGJlIDEwXjYgYml0cyBwZXIgc2Vjb25kLCBvdGhlcndpc2UsIHRoZXkgaG9ub3IgdGhlIHNldHRpbmcgb2YgdGhlCisgICBnbG9iYWwgLWYgb3B0aW9uLgorCisgICBBbGwgb2YgdGhpcyBpcyBFWFBFUklNRU5UQUwgYW5kIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgcHJpb3IKKyAgIG5vdGljZSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgbmV0cGVyZi4KKworKikgUmVwbGFjZSAiYnJlYWsiIHdpdGggImJyZWFrIDIiIGluIGFjaW5jbHVkZS5tNCBmb3IgYSBzb2NrbGVuIG1hY3JvCisKKyopIFRoZSBkZWZhdWx0IGZvciB0aGUgcmVxdWVzdGVkIHNvY2tldCBidWZmZXIgc2l6ZSBpcyBjaGFuZ2VkIGZyb20gMAorICAgdG8gLTEgdG8gZW5hYmxlIHBhc3NpbmcgYSB2YWx1ZSBvZiAwIHVuZGVyIFdpbmRvd3MsIHdoaWNoIHRlbGxzIHRoYXQKKyAgIHN0YWNrIG9uZSB3aXNoZXMgdG8gZW5hYmxlIGNvcHktYXZvaWRhbmNlLgorCisqKSBDYWxsIGZmbHVzaCgpIG9uIGVhY2ggaW50ZXJpbSByZXN1bHQgZGlzcGxheWVkIGluIGRlbW8gbW9kZSB0byBtYWtlCisgICB0aGluZ3MgaGFwcGllciBmb3IgZm9sa3MgcmVkaXJlY3Rpbmcgc2FtZSB0byBhIGZpbGUuICBGcm9tIERhbgorICAgWW9zdC4KKworKikgSW4gdGhlb3J5IGVhY2ggZGlzdGluY3QgbmV0c2VydmVyIGNoaWxkIHdpbGwgaGF2ZSBhIGRlYnVnIGxvZyB3aXRoCisgICBpdHMgcGlkIGFwcGVuZGVkIHRvIHRoZSBuYW1lLCBzb21ld2hhdCBsaWtlIHdoYXQgYXBwZWFycyB0byBoYXBwZW4KKyAgIHVuZGVyIFdpbmRvd3MuCisKKyopIEEgbmV3IGdsb2JhbCwgY29tbWFuZC1saW5lIG9wdGlvbiB0byBuZXRwZXJmIGFuZCBuZXRzZXJ2ZXIgaGFzIGJlZW4KKyAgIGFkZGVkLiBUaGUgLVYgb3B0aW9uIHdpbGwgY2F1c2UgbmV0cGVyZi9uZXRzZXJ2ZXIgdG8gZGlzcGxheSBpdHMKKyAgIHZlcnNpb24gYW5kIGV4aXQuCisKKyopIFNldHRpbmcgLUkgd2l0aG91dCBzZXR0aW5nIC1pIHdpbGwgbm93IGltcGxpY2l0bHkgc2V0IHRoZSBpdGVyYXRpb24KKyAgIG1pbmltdW0gYW5kIG1heGltdW1zIGFzIGlmIGEgLWkgMTAsMyB3ZXJlIHNldC4gIEFsc28sIHNvbWUgZnVydGhlcgorICAgc2FuaXR5IGNoZWNraW5nIG9uIHRoZSBib3VuZHMgZm9yIGVhY2ggaXMgbWFkZS4KKworKikgRml4ZWQgYSB0eXBvIGluIHRoZSBtYW51YWwgKGZvdW5kIGJ5IEVtaXIgSGFsZXBvdmljKSBzbyB0aGUKKyAgIGRlc2NyaXB0aW9uIGZvciB0aGUgLXMgYW5kIC1TIG9wdGlvbnMgcHJvcGVybHkgc3BlY2lmaWVzIHRoZXkKKyAgIGFmZmVjdCB0aGUgZGF0YSBjb25uZWN0aW9uLgorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIFJldmlzaW9uIDIuNC4zIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZToKKworKikgVGhlIFVEUF9TVFJFQU0gdGVzdCBpbmNsdWRlcyAtLWVuYWJsZS1kZW1vIHN1cHBvcnQsIGNvdXJ0ZXN5IG9mCisgICBwYXRjaGVzIGZyb20gU2NvdHQgV2VpdHplbmthbXAuCisKKyopIFRoZSBuZXR0ZXN0X2Rucy4qIGZpbGVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJlbGVhc2UgYW5kIHRoZQorICAgcmVwb3NpdG9yeS4gIFRob3NlIHdpc2hpbmcgdG8gcGVyZm9ybSBETlMgc2VydmVyIHRlc3RzIHNob3VsZAorICAgbWlncmF0ZSB0byBuZXRwZXJmNCB3aGljaCBoYXMgYmV0dGVyIHN1cHBvcnQgZm9yIEROUyB0ZXN0LgorCisqKSBGaXhlcyBmb3IgY29tcGlsaW5nIHVuZGVyIFdpbmRvd3Mgd2l0aCBNaW5ndy9nY2MgY291cnRlc3kgb2YgR2lzbGUKKyAgIFZhbmVtLgorCisqKSBBIG5ldyBnbG9iYWwgb3B0aW9uIC0gLU4gLSBoYXMgYmVlbiBhZGRlZC4gV2hlbiBzcGVjaWZpZWQsIHRoaXMKKyAgIG9wdGlvbiB3aWxsIHRlbGwgbmV0cGVyZiB0byBub3QgYm90aGVyIHRvIHRyeSB0byBlc3RhYmxpc2ggYQorICAgY29udHJvbCBjb25uZWN0aW9uIHdpdGggYSByZW1vdGUgbmV0c2VydmVyLiAgSW5zdGVhZCwgbmV0cGVyZiB3aWxsCisgICBvbmx5IGF0dGVtcHQgdG8gbWFrZSBhIGRhdGEgY29ubmVjdGlvbiB0byB0aGUgcmVtb3RlIHN5c3RlbS4gIEJ5CisgICBkZWZhdWx0LCB0aGlzIHdpbGwgYmUgdG8gdGhlICJkaXNjYXJkIiBzZXJ2aWNlIGZvciBhICJTVFJFQU0iIG9yCisgICAiU0VOREZJTEUiIHRlc3QsIHRoZSAiZWNobyIgc2VydmljZSBmb3IgYSAiUlIiIHRlc3QgYW5kIHRoZQorICAgImNoYXJnZW4iIHNlcnZpY2UgZm9yIGEgIk1BRVJUUyIgdGVzdC4gIEFueSAicmVtb3RlIiBzZXR0aW5ncyBhcmUKKyAgIGNoYW5nZWQgdG8gcmVmbGVjdCB0aGVpciBiZWluZyB1bnVzZWQgaW4gdGhlIHRlc3QsIGFuZCBhICJubworICAgY29udHJvbCIgdGFnIGlzIGFkZGVkIHRvIHRoZSB0ZXN0IGJhbm5lciB3aGVuIC1OIGlzIHNwZWNpZmllZC4KKworICAgVGhpcyBzdGlsbCBuZWVkcyB0byBiZSBwcm9wYWdhdGVkIHRvIG90aGVyIHRlc3QgZmlsZXMgLSBhdCBsZWFzdAorICAgZm9yIHRob3NlIGZvciB3aGljaCBpdCBtYXkgbWFrZSBzZW5zZS4KKworKikgVGhlIHRlc3RzIGluIG5ldHRlc3RfYnNkLmMgaGF2ZSBiZWVuIGFsdGVyZWQgdG8gbm90IGFjdHVhbGx5IHRha2UKKyAgIHRpbWVzdGFtcHMgYW5kIGRlbHRhcyBpbiAtLWVuYWJsZS1oaXN0b2dyYW0gdW5sZXNzIHRoZSB2ZXJib3NpdHkKKyAgIGxldmVsIGhhcyBiZWVuIHNldCB0byBhY3R1YWxseSBkaXNwbGF5IGEgaGlzdG9ncmFtLiAgVGhpcyByZWR1Y2VzCisgICB0aGUgb3ZlcmhlYWQgbWVhc3VyYWJseSwgZXZlbiBvbiBzeXN0ZW1zIHdpdGggImZhc3QiIHRpbWUgY2FsbHMsCisgICB3aGljaCBfbWF5XyBtZWFuIHRoYXQgYSBmdXR1cmUgcmVsZWFzZSBvZiBuZXRwZXJmIG1heSBoYXZlCisgICBoaXN0b2dyYW0gc3VwcG9ydCBlbmFibGVkIGJ5IGRlZmF1bHQuCisKKyAgIFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byBvdGhlciB0ZXN0IGZpbGVzLiAgUGF0Y2hlcworICAgZnJvbSB0aGUgY29tbXVuaXR5IHdvdWxkIGJlIG1vc3Qgd2VsY29tZSA6KQorCisqKSBFbGltaW5hdGUgYSBib2d1cyBmcHJpbnRmIGZyb20gdGhlIHNpZ25hbCBjYXRjaGluZyByb3V0aW5lIHdoaWNoCisgICB3YXMgYmVpbmcgZXhlY3V0ZWQgd2hlbiBib3RoIGludGVydmFscyBhbmQgZGVtbyBtb2RlIHdlcmUgYWN0aXZlIGF0CisgICB0aGUgc2FtZSB0aW1lLgorCisqKSBUaGUgbmV0dGVzdF9pcHY2LiogZmlsZXMgYXJlIG5vIGxvbmdlciBpbmNsdWRlZCBpbiB0aGUgc291cmNlCisgICB0YXIvemlwIGZpbGUuIElQdjYgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBzdWJzdW1lZCBpbnRvIHRoZQorICAgbmV0dGVzdF9ic2QuKiBmaWxlcyBmb3Igc29tZSB0aW1lIG5vdy4gCisKKyopIFVzZSBhIGhpZ2hlciByZXNvbHV0aW9uICJ0aW1lIiBzb3VyY2UgZm9yIEhJU1RPR1JBTSBzdXBwb3J0IHVuZGVyCisgICBXaW5kb3dzLCBjb3VydGVzeSBvZiBTcGVuY2VyIEZyaW5rLiBQcmlvciB0byB0aGlzIGl0IGhhZCBubyBiZXR0ZXIKKyAgIHRoYW4gMTBtcyBncmFudWxhcml0eSB3aGljaCBjb3VsZCBsZWFkIHRvIHNvbWUgcmF0aGVyIHN0cmFuZ2UKKyAgIGxvb2tpbmcgcmVzdWx0cyA6KQorCisqKSBBIGJ1ZyBmaXggcmVwb3J0aW5nIHJlY3Zfc2l6ZSByYXRoZXIgdGhhbiBzZW5kX3NpemUgaW4gVENQX01BRVJUUworICAgd2hlbiBDUFUgdXRpbGl6YXRpb24gd2FzIHJlcXVlc3RlZC4KKworKikgQSBidWcgZml4IGZvciBidWZmZXIgZmlsbGluZyBmcm9tIGEgZmlsZSB0byBwcm9wZXJseSBhZHZhbmNlIHRoZQorICAgYnVmZmVyIHBvaW50ZXIgd2hlbiB0aGUgZmlsZSBpcyBzbWFsbGVyIHRoYW4gdGhlIHNlbmQgYnVmZmVyLgorCisqKSBFbmFibGUgY2VydGFpbiBVRFAgdGVzdHMgd2hpY2ggcHJldmlvdXNseSB1c2VkIHVuY29ubmVjdGVkIHNvY2tldHMgCisgICB0byB1c2UgY29ubmVjdGVkIHNvY2tldHMuICBDb3VydGVzeSBvZiBTaGlscGkgQWdhcndhbC4KKworKikgVGhlIE9TWCBDUFUgdXRpbGl6YXRpb24gY29kZSBhY3R1YWxseSBnZXRzIHB1dCBpbnRvIHRoZSB0YXJiYWxsIGluCisgICBhIG1ha2UgZGlzdCBub3cgOikKKworKikgVGhlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGdldGFkZHJpbmZvIHJldHVybmVkIGFpX3Byb3RvY29sIGFuZC9vcgorICAgYWlfc29ja3R5cGUncyBtYXRjaGluZyB0aGF0IHdoaWNoIHdlIHJlcXVlc3RlZCBpcyBkb25lIGZvciBhbGwgc29ja2V0CisgICBhbmQvb3IgcHJvdG9jb2wgdHlwZXMgYW5kIGEgd2FybmluZyBpcyBlbWl0dGVkIGlmIGl0IHJldHVybnMgYW55IHdoaWNoCisgICBkbyBub3QgbWF0Y2guCisKKyopIFRoZSBsaW51eCBDUFUgYWZmaW5pdHkgY29kZSBoYXMgYmVlbiBtYWRlIGNhcGFibGUgb2YgYmluZGluZyB0bworICAgQ1BVJ3MgPj0zMiBvbiBhIDMyLWJpdCBjb21waWxhdGlvbiBhbmQgPj02NCBvbiBhIDY0LWJpdAorICAgY29tcGlsYXRpb24uCisKKyopIE1vcmUgY29tcGxldGUgY2xvc2luZy9yZWRpcmVjdGluZyBvZiBzdGRpbi9zdGRvdXQvc3RkZXJyL3doZXJlIGluCisgICBuZXRzZXJ2ZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8gbGF1bmNoIG5ldHNlcnZlciBhdCB0aGUgZmFyLWVuZCBvZiBhCisgICByZW1vdGUgc2hlbGwuICBDb3VydGVzeSBvZiBIYW5zIEJsb20uCisKKyopIFNlbmRmaWxlIGNoYW5nZXMgZm9yIFNvbGFyaXMgY291cnRlc3kgb2YgQW5kcmV3IEdhbGxhdGluLgorCisqKSAic3BlYyIgZmlsZSBzdXBwb3J0IHRvIGdlbmVyYXRlIFJQTXMgY291cnRlc3kgb2YgTWFydGluIEJyb3duCisKK1RoZXNlIGFyZSB0aGUgUmVsZWFzZSBOb3RlcyBmb3IgUmV2aXNpb24gMi40LjIgb2YgbmV0cGVyZjoKKworVGhpbmdzIGNoYW5nZWQgaW4gdGhpcyByZWxlYXNlOgorCisqKSBGaXhlcyBmb3IgZmxvYXRpbmcgcG9pbnQgZm9ybWF0IGRpZmZlcmVuY2VzLCBjb3VydGVzeSBvZiBHZW9yZ2UKKyAgIERhdmlzLgorCisqKSBBZGRpdGlvbnMgZm9yIENQVSB1dGlsIHN1cHBvcnQgb24gTWFjT1MgWCwgY291cnRlc3kgb2YgQW5vbnltb3VzLgorCisqKSBQcm9jZXNzb3IgYWZmaW5pdHkgaXMgbm93IHN1cHBvcnRlZCBvbiBBSVggNS4zIChwZXJoYXBzIGVhcmxpZXIpCisgICB2aWEgdGhlIGJpbmRwcm9jZXNzb3Igc3lzdGVtIGNhbGwuCisKKyopIEZpeGVzIGZvciB0ZXN0IGxvY2t1cHMgd2l0aCBUQ1BfQ1JSIGFuZCBUQ1BfQ0MgdW5kZXIgV2luZG93cworICAgY291cnRlc3kgb2YgRGlrb24gUmVlZC4KKworKikgRml4ZXMgdG8gbmV0Y3B1X2xvb3Blci5jIHRvIGdldCBpdCB0byBhY3R1YWxseSBjb21waWxlIDopCisKKyopIEhhdmUgbmV0Y3B1X2xvb3BlciB1c2UgdGhlIGJpbmRfdG9fc3BlY2lmaWNfcHJvY2Vzc29yKCkgY2FsbAorICAgcHJvdmlkZWQgYnkgbmV0bGliIHNpbmNlIHRoYXQga25vd3MgYWJvdXQgbW9yZSBwbGF0Zm9ybXMgdGhhbiB0aGUKKyAgIGNvZGUgaW4gbmV0Y3B1X2xvb3BlciBkaWQuIFRoZSBsb29wZXIgQ1BVIGJpbmRpbmcgd2lsbCB1c2UgYQorICAgbWFwcGluZyB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENQVSBpZCdzIG9uIHRoZSBzeXN0ZW0gbWF5IG5vdCBiZQorICAgYSBjb250aWd1b3VzIHNwYWNlIHN0YXJ0aW5nIGZyb20gemVyby4gIEF0IHByZXNlbnQsIHRoZSBjb2RlIHRoYXQKKyAgIHNldHVwcyB0aGUgbWFwcGluZyBvbmx5IGtub3dzIGFib3V0IHJldHJpZXZpbmcgYWN0dWFsIENQVSBpZHMgdW5kZXIKKyAgIEhQLVVYLgorCisqKSBUaGUgbmV0Y3B1X3N5c2N0bCBtZXRob2QgYmVjb21lcyBjYWxpYnJhdGlvbi1mcmVlLCBjb3VydGVzeSBvZiAKKyAgIEFuZHJldyBHYWxsYXRpbgorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIFJldmlzaW9uIDIuNC4xIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZToKKworKikgVGhlcmUgaXMgbm93IGEgLUIgZ2xvYmFsIGNvbW1hbmQtbGluZSBhcmd1bWVudCB0aGF0IHdpbGwgYXBwZW5kIGl0cworICAgcGFyYW1ldGVyIGFzIGEgc3RyaW5nIHRvIHRoZSBlbmQgb2YgcmVzdWx0IGxpbmVzIHdoZW4gdGVzdCBiYW5uZXJzCisgICBoYXZlIGJlZW4gc3VwcHJlc3NlZC4gIHRoaXMgaXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggb25lCisgICByZXN1bHQgZnJvbSBhbm90aGVyIHdoZW4gYWdncmVnYXRlIHJlc3R1bHRzIGFyZSBiZWluZyBydW4gaW4KKyAgIHBhcmFsbGVsLCB3aXRob3V0IGhhdmluZyB0byByZXNvcnQgdG8gaGF2aW5nIHRoZSBpbmRpdmlkdWFsIHJlc3VsdHMKKyAgIHNoZWxsIHJlZGlyZWN0ZWQgdG8gYSBmaWxlLiBUaGlzIGhhcyBiZWVuIGRvbmUgZm9yIHNvbWUgb2YgdGhlCisgICB0ZXN0cyBpbiBuZXR0ZXN0X2JzZC5jLCBidXQgbm90IGFsbCBvZiB0aGVtLCBub3IgZm9yIHRoZSB0ZXN0cyBpbgorICAgdGhlIG90aGVyIG5ldHRlc3RfbXVtYmxlLmMgZmlsZXMuCisKKyopIFRoZXJlIGlzIG5vdyBhbiAtLWVuYWJsZS1zcGluIGNvbmZpZ3VyZSBvcHRpb24gdGhhdCB3aWxsIGVuYWJsZQorICAgaW50ZXJ2YWxzIGlmIG5vdCBhbHJlYWR5IGVuYWJsZWQgYW5kIHdpbGwgaGF2ZSB0aGUgc2VuZGVyIHNpdCBhbmQKKyAgIHNwaW4gaW4gYSB0aWdodCBsb29wIHVudGlsIHRpbWUgZm9yIHRoZSBuZXh0IGludGVydmFsIHJhdGhlciB0aGFuCisgICB3YWl0IGZvciBhbiBpbnRlcnZhbCB0aW1lciB0byBleHBpcmUuICBUaGlzIG1lYW5zIGl0IHNob3VsZCBiZQorICAgcG9zc2libGUgdG8gaGF2ZSBhIG11Y2ggZmluZXIgZ3JhbnVsYXJpdHkgb24gdGhlIGludGVydmFsLCBhdCB0aGUKKyAgIGV4cGVuc2Ugb2YgYW4gRVhUUkVNRSBpbmNyZWFzZSBpbiBDUFUgdXRpbGl6YXRpb24uICAoVG8gdGhlIGV4dGVudAorICAgSSdtIGNvbnNpZGVyaW5nIGRpc2FibGluZyBtZWFzdXJlbWVudCBvZiBsb2NhbCBDUFUgdXRpbGl6YXRpb24gd2hlbgorICAgdGhhdCBtb2RlIGlzIGVuYWJsZWQsIGFuZCBidXJzdHMgaGF2ZSBiZWVuIHJlcXVlc3RlZCAtIHlvdXIKKyAgIGZlZWRiYWNrIG9uIHRoYXQgdG9waWMgd291bGQgYmUgbW9zdCBhcHByZWNpYXRlZCkgCisKKyAgIElmIG9ubHkgLS1lbmFibGUtaW50ZXJ2YWxzIGlzIHVzZWQgd2l0aCBjb25maWd1cmUsIHRoZSBvbGQgc2V0IHRoZQorICAgaW50ZXJ2YWwgdGltZXIgYW5kIHdhaXQgbWV0aG9kIGlzIHN0aWxsIHVzZWQuCisKKyAgIElmIC0tZW5hYmxlLXNwaW4gaXMgY29uZmlndXJlZCwgdGhlIHRlc3QgYmFubmVyIHdpbGwgaW5jbHVkZSAic3BpbgorICAgaW50ZXJ2YWxzIiByYXRoZXIgdGhhbiB0aGUgImludGVydmFscyIgZnJvbSBhIHBsYWluCisgICAtLWVuYWJsZS1pbnRlcnZhbHMuICBUaGUgc2l0IGFuZCBzcGluIHdpbGwgZWl0aGVyIHVzZQorICAgZ2V0dGltZW9mZGF5KCksIG9yIGdldGhydGltZSgpIGlmIGdldGhydGltZSgpIGlzIGF2YWlsYWJsZS4KKworICAgVGhpcyBoYXMgYmVlbiBpbXBsZW1lbnRlZCBpbiB0aGUgdGVzdHMgb2YgbmV0dGVzdF9ic2QuYyBidXQgbm9uZSBvZgorICAgdGhlIG90aGVycy4gIFZvbHVudGVlcnMgd291bGQgYmUgbW9zdCB3ZWxjb21lLiAgSSB3b3VsZCBlbnRlcnRhaW4KKyAgIHRoZSBub3Rpb24gb2YgbWFraW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBhIHNlcmllcyBvZiBpbmxpbmUKKyAgIGZ1bmN0aW9ucyBpbiBuZXRsaWIuIFRoaXMgaG9sZHMgdHJ1ZSBmb3IgdGhlIGRlbW8gbW9kZSAtIHdoeSB3aWxsCisgICBiZWNvbWUgY2xlYXIgd2hlbiB5b3UgbG9vayBhdCBuZXR0ZXN0X2JzZC5jLiAgV2hpbGUgdGhpbmdzIGFyZQorICAgY29uc2lkZXJhYmx5IGNsZWFuZXIgdGhhbiB0aGV5IHdlcmUgYmVmb3JlLCB3aXRoIHJldXNlIHdpdGhpbgorICAgbmV0dGVzdF9ic2QuYywgdGhlcmUgaXMgbm8gcmVzdXNlIHdpdGggdGhlIHJlc3Qgb2YgdGhlCisgICBuZXR0ZXN0X211bWJsZS5jIGZpbGVzLgorCisqKSB0aGUgLXcgb3B0aW9uIGZvciB0aGUgaW50ZXJ2YWwgdGltZSBub3cgdGFrZXMgdGhyZWUgb3B0aW9uYWwKKyAgIHN1ZmZpeGVzLiBpZiB0aGUgc3VmZml4IGlzICdtJyAoZWcgMTBtKSBpdCB3aWxsIGFzc3VtZSB0aGUgdXNlciBoYXMKKyAgIHNwZWNpZmllZCB0aW1lIGluIHVuaXRzIG9mIG1pbGxpc2Vjb25kcy4gIGlmIHRoZSBzdWZmaXggaXMgJ3UnIGl0CisgICB3aWxsIGFzc3VtZSBtaWNyb3NlY29uZHMsIGFuZCBpZiAncycgc2Vjb25kcy4gbm8gc3VmZml4IHJlbWFpbnMKKyAgIG1pbGxpc2Vjb25kcyBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkgd2l0aCBwcmV2aW91cyBuZXRwZXJmCisgICB2ZXJzaW9ucy4KKworKikgSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIHdpdGgKKyAgIC0tZW5hYmxlLWludGVydmFscy4KKworVGhlc2UgYXJlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciBSZXZpc2lvbiAyLjQuMSBvZiBuZXRwZXJmOgorCitUaGluZ3MgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2U6CisKKyopIG5ldGNwdV9wc3RhdG5ldy5jIGhhcyBiZWVuIGFsdGVyZWQgdG8gd29ya2Fyb3VuZCBhIGJ1ZyBpbiB0aGUKKyAgIGludGVycnVwdCBjeWNsZSBhY2NvdW50aW5nIGluIEhQLVVYIDExLjIzIHRoYXQgaXMgbm90IGV4cGVjdGVkIHRvCisgICBiZSByZXNvbHZlZCB1bnRpbCBhIGxhdGVyIHJlbGVhc2UuICBiYXNpY2FsbHksIHNvbWUgaW50ZXJydXB0IHRpbWUKKyAgIGlzIG5vdCBjb3VudGVkLCB3aGljaCBtZWFucyB0aGUgc3VtIG9mIGlkbGUsIHVzZXIsIGtlcm5lbCBhbmQKKyAgIGludGVycnVwdCBpcyBsZXNzIHRoYW4gdGhlIGN5Y2xlcyBwZXIgc2Vjb25kIG11bHRpcGxpZWQgYnkgdGhlCisgICBlbGFwc2VkIHRpbWUuICB0aGUgd29ya2Fyb3VuZCBwcmVzZXJ2ZXMgdGhlICJubyBjYWxpYnJhdGlvbgorICAgcmVxdWlyZWQiIG5hdHVyZSBvZiB0aGUgcHN0YXRuZXcgQ1BVIHV0aWxpemF0aW9uIG1lY2hhbmlzbS4gIHlvdQorICAgY2FuIHNlZSBtb3JlIGluIG5ldGNwdV9wc3RhdG5ldy5jIGFuZC9vciBpbiBkZWJ1ZyBvdXRwdXQuCisKKyopIGluIG5ldGxpYi5jIHJlY3ZfcmVzcG9uc2UgaGFzIGJlZW4gcmVuYW1lZAorICAgcmVjdl9yZXNwb25zZV90aW1lZChhZGRsX3RpbWUpIHdoaWNoIGlzIG5vdyB1c2VkIGluCisgICBjYWxpYnJhdGVfcmVtb3RlX2NwdSBpbiBwbGFjZSBvZiB0aGUgInNsZWVwKDQwKTtyZWN2X3Jlc3BvbnNlKCkiCisgICBzZXF1ZW5jZS4gIFRoaXMgdGhlbiBhbGxvd3MgdGhlIFJFTV9DUFUgdGVzdCB0byBjb21wbGV0ZSBpbiBsZXNzCisgICB0aGFuIDQwIHNlY29uZHMgd2hlbiB0aGUgcmVtb3RlJ3MgQ1BVIHV0aWxpemF0aW9uIG1lY2hhbmlzbSBkb2VzCisgICBub3QgcmVxdWlyZSBjYWxpYnJhdGlvbi4gIFRoZSB2YWx1ZSBvZiAiYWRkbF90aW1lIiBpcyBhZGRlZCB0byB0aGUKKyAgIHRjX3NlYyBmaWVsZCBvZiB0aGUgc2VsZWN0KCkgdGltZW91dC4gIEEgIm5ldyIgcmVjdl9yZXNwb25zZSBoYXMKKyAgIGJlZW4gYWRkZWQgdGhhdCBzaW1wbHkgY2FsbHMgcmVjdl9yZXNwb25zZV90aW1lZCgwKSAtIHRoaXMgaXMgdG8KKyAgIG1pbmltaXplIHRoZSBudW1iZXIgb2YgY2hhbmdlcyBuZWVkZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlLgorCisqKSBob3BlZnVsbHksIHRoaXMgcmVsZWFzZSBmaXhlcyBwcm9ibGVtcyBwZW9wbGUgaGF2ZSBiZWVuIGhhdmluZyB3aXRoCisgICB0aGUgY29uZmlndXJlIHNjcmlwdCBmYWlsaW5nIHdoZW4gcGlja2luZyBhIHR5cGUgZm9yIHNvY2tsZW5fdC4KKyAgIG5vdywgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGFuIGVycm9yLCBpdCBlbWl0cyBhIHdhcm5pbmcgYW5kIHNpbXBseQorICAgdHJpZXMgc29ja2xlbl90CisKKyopIHRoZSBjb25maWd1cmUgc2NyaXB0IG5vIGxvbmdlciBsb29rcyBmb3IgdGhlIHNpemUgb2YgYW4gaW5fcG9ydF90CisKKyopIG5ldGxpYi5jIG5vdyBoYXMgY29kZSB0byBwZXJmb3JtIHByb2Nlc3NvciBiaW5kaW5nIGZvciBUcnU2NCwgYnV0CisgICB0aGUgY29uZmlndXJlIHNjcmlwdCBtYXkgb3IgbWF5IG5vdCBkZXRlY3QgaXQgY29ycmVjdGx5LiBUaGlzIG1lYW5zCisgICB0aGF0IG9uZSBtYXkgaGF2ZSB0byBlZGl0IHRoZSBjb25maWcuaCBmaWxlIGJ5IGhhbmQgdG8gZ2V0IHRoZQorICAgZnVuY3Rpb25hbGl0eS4KKworKikgaXQgaXMga25vd24gdGhhdCBuZXRwZXJmIHdpbGwgY29tcGlsZSB1bmRlciBXaW5kb3dzIFhQIGFuZCAyMDAzCisgICB1c2luZyB0aGUgRERLIGl0IGlzIHBvc3NpYmxlIHRoYXQgbmV0cGVyZiAyLjQuMSB3aWxsIGNvbXBpbGUgb24gYQorICAgV2luZG93cyBzeXN0ZW0gdW5kZXIgVkMrKy9WaXN1YWwgU3R1ZGlvLiAgSXQgbWlnaHQgZXZlbiB3b3JrIS0pIFNlZQorICAgdGhlIFJFQURNRS53aW5kb3cgZmlsZSBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgorCitUaGluZ3MgX05PVF8gY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2U6CisKKyopIFRoZSBhdXRvbWFnaWMgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgbnVtYmVyIGFuZCB0eXBlIG9mIHBhcmFtZXRlcnMgdG8KKyAgIHNjaGVkX3NldGFmZmluaXR5IHVuZGVyIExpbnV4IHJlbWFpbnMgYnJpdHRsZSBhdCBiZXN0LgorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIFJldmlzaW9uIDIuNC4wIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZToKKworKikgTmV0cGVyZiBoYXMgYmVlbiBjb252ZXJ0ZWQgdG8gdXNlIGEgY29uZmlndXJlIHNjcmlwdC4gIFllcyBib3lzIGFuZAorICAgZ2lybHMsIGFmdGVyIDEyIHllYXJzIG9mIGRpc3RyaWJ1dGluZyBuZXRwZXJmIHdpdGgganVzdCBhIG1ha2VmaWxlCisgICBJIGhhdmUgZmluYWxseSBiaXR0ZW4gdGhlIGJ1bGxldCBhbmQgY2FzdCBteSBmYXRlIHRvIGF1dG9jb25mLAorICAgYXV0b21ha2UsIGV0Yy4gIFRvIGdldCB0aGUgbW9zdCBiYXNpYyBuZXRwZXJmIGJ1aWx0IGFsbCB5b3Ugc2hvdWxkCisgICBuZWVkIHRvIGRvIGlzOgorCisgICBjZCB0byB0aGUgbmV0cGVyZiBkaXJlY3RvcnkKKyAgIC4vY29uZmlndXJlCisgICBtYWtlCisgICBhbmQgcGVyaGFwcworICAgbWFrZSBpbnN0YWxsCisKKyAgIChOb3RlLCBJJ3ZlIG5vdCBkb25lIG11Y2ggd2l0aCBtYWtlIGluc3RhbGwgLSBJJ20gaGVtbWluZyBhbmQKKyAgIGhhd2luZyBvdmVyIHdoYXQgdGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGxvY2F0aW9uIHNob3VsZCBiZSkKKworICAgUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgSSd2ZSB0cmllZCB0byB1c2UKKyAgIGF1dG9jb25mIGV0IGFsLiBJIGFtIHN1cmUgdGhlcmUgYXJlIHRoaW5ncyB0aGF0IHNob3VsZCBiZSBkb25lCisgICBkaWZmZXJlbnRseSBhbmQgd291bGQgd2VsY29tZSBhbnkgYW5kIGFsbCBjb25zdHJ1Y3RpdmUgY3JpdGljaXNtcy4KKworICAgSSBzdXNwZWN0IHRoZXJlIGFyZSBzZXZlcmFsIHBsYWNlcyB3aGVyZSBJJ3ZlIG5vdCBmdWxseQorICAgZGVtb25zdHJhdGVkIGJlaW5nIG9mIHRoZSBhdXRvY29uZiBib2R5IC0gcGFydGljdWxhcnkgYXMgcGVydGFpbnMKKyAgIHRvIGluY2x1ZGUgZmlsZXMgYmVpbmcgaW4gIiNpZiBtdW1ibGUgI2VuZGlmIiBibG9ja3MuICBGaXhlcyB3b3VsZAorICAgYmUgbW9zdCB3ZWxjb21lLgorCisqKSBTcGVha2luZyBvZiBiZWNvbW1pbmcgb25lIHdpdGggdmFyaW91cyBHTlUgdG9vbHMsIHdvcmsgb24gYSBuZXcKKyAgIG5ldHBlcmYgbWFudWFsIGhhcyBiZWd1biwgd2l0aCB0aGUgc291cmNlIGJlaW5nIGEgdGV4aW5mbyBkb2N1bWVudAorICAgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gImFsbCIgdGhlIG90aGVyIGZvcm1hdHMuICBUaGlzIHJlc2lkZXMgaW4gZG9jLworICAgLgorCisqKSBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgcGFydHMgb2YgQ1BVIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50IGhhdmUKKyAgIGJlZW4gYnJva2VuLW91dCBpbnRvIHNlcGFyYXRlIC5jIGZpbGVzIGFuZCBzZWxlY3RlZCBhdCBjb25maWd1cmUKKyAgIHRpbWUgYSBsYSB0aGUgcGNhcF9tdW1ibGUgZmlsZXMgb2YgdGNwZHVtcC4gIFRoaXMgbWFrZXMKKyAgIHNyYy9uZXRsaWIuYyBfbXVjaF8gZWFzaWVyIHRvIHJlYWQgYW5kIHRoZSBhZGRpdGlvbiBvZiBuZXcgQ1BVCisgICB1dGlsaXphdGlvbiBtZWNoYW5pc21zIG11Y2ggZWFzaWVyLgorCisqKSBOZXcgSFAtVVggMTEuMjMgYW5kIFNvbGFyaXMgMTAgQ1BVIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50CisgICBtZWNoYW5pc21zIChjYWxsZWQgcHN0YXRuZXcgYW5kIGtzdGF0MTAgcmVzcGVjdGl2ZWx5KSBuZWVkIG5vCisgICBjYWxpYnJhdGlvbiBzdGVwLiAgQm90aCBoYXZlIHZhcmlhdGlvbnMgb24gbWljcm9zdGF0ZSBhY2NvdW50aW5nLgorICAgSFAtVVggMTEuMjMgc3RpbGwgaWRlbnRpZmllcyB0aGUgbWV0aG9kIGluIHRoZSBoZWFkZXJzIGFzICdQJyBmb3IKKyAgIHBzdGF0LiAgVGhlIGtzdGF0MTAgbWV0aG9kIGlzIGlkZW50aWZpZWQgYXMgJ00nIGZvciBNaWNyb3N0YXRlLgorCisgICBTY3JpcHRzIHdoaWNoIG1ha2UgY2FsaWJyYXRpb24gcnVucyB3aXRoIExPQ19DUFUgYW5kIFJFTV9DUFUgbWF5CisgICBjb250aW51ZSB0byBkbyBzbywgdGhleSB3aWxsIGp1c3QgcnVuIGZvcnR5IHRvIGVpZ2h0eSBzZWNvbmRzCisgICBmYXN0ZXIgb24gcGxhdGZvcm1zIHdpdGggdGhlIGNhbGlicmF0aW9uLWZyZWUgQ1BVIHV0aWwgbWVjaGFuaXNtcy4KKworKikgQXV0b21hdGljIGRldGVjdGlvbiBvZiBDUFUgdXRpbGl6YXRpb24gbWVjaGFuaXNtIGZvciBIUC1VWCwgTGludXgsCisgICBBSVgsICpCU0QgYW5kIFNvbGFyaXMuICBJZiB5b3UgZG8gbm90IGxpa2Ugd2hhdCB0aGUgY29uZmlndXJlCisgICBzY3JpcHQgc2VsZWN0cywgeW91IGNhbiB1c2UgLS1lbmFibGUtY3B1dXRpbD08Zm9vPiAuCisKKyopIFRoZSAidGltZXMiIChha2EgJ1QnKSBDUFUgdXRpbGl6YXRpb24gbWVjaGFuaXNtIGhhcyBiZWVuIHJlbW92ZWQuCisgICBJdCB3YXMgbmV2ZXIgdmVyeSBhY2N1cmF0ZSBhdCBhbGwsIG9ubHkgc2hvd2luZyBDUFUgdGltZSBjaGFyZ2VkIHRvCisgICB0aGUgcHJvY2VzcywgYW5kIHdpdGggaW50ZXJydXB0cyBhbmQgb3RoZXIgbmV0d29yayBwcm9jZXNzaW5nIGl0IGlzCisgICByYXJlbHkgY2hhZ2VkIHRvIGEgb3IgdGhlIGNvcnJlY3QgcHJvY2Vzcy4gIEl0IGFuZCBvdGhlciBtZXRob2RzCisgICBtYXkgcmVtYWluIGluIHRoZSBmb3JtYXRfY3B1X21ldGhvZCgpIHJvdXRpbmUgb2Ygc3JjL25ldGxpYi5jIGZvcgorICAgaGlzdG9yaWNhbCBwdXJwb3NlcyBvbmx5LgorCisqKSBDQVZFQVQgLSB0aGUgImtzdGF0IiBtZWNoYW5pc20gaXMgS05PV04gVE8gQkUgQk9HVVMgZm9yIFNvbGFyaXMuCisgICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRpbWUgc3BlbnQgcHJvY2Vzc2luZyBpbnRlcnJ1cHRzLCBhbmQKKyAgIG5ldHdvcmtpbmcgYmVuY2htYXJrcyB3aWxsIGdlbmVyYXRlIGF0IGxlYXN0IGEgZmV3IG9mIHRob3NlLi4uCisgICBUaGlzIGFmZmVjdHMgX0FMTF8gdmVyc2lvbnMgb2YgU29sYXJpcyB3aXRoIGtzdGF0LgorCisgICBTbywgZG8gTk9UIHRydXN0IGFueSBDUFUgdXRpbCBmaWd1cmVzIHdoZXJlIG5ldHBlcmYgc2F5cyB0aGUgbWV0aG9kCisgICB3YXMgJ0snIGZvciBrc3RhdCAtIHVubGVzcyBwZXJoYXBzIGl0IHJlcG9ydHMgMTAwJSBDUFUgdXRpbC4KKworICAgU29sYXJpcyAxMCB0YWtlcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiBhZGRpbmcgbWljcm9zdGF0ZQorICAgYWNjb3VudGluZyBzaW1pbGFyIHRvIHdoYXQgbmV0cGVyZiB1c2VzIG9uIEhQLVVYIDExLjIzLiAgSE9XRVZFUiwKKyAgIFNvbGFyaXMgMTAncyBhY2NvdW50aW5nIGZvciB1c2VyL2tlcm5lbC9pZGxlIGlzIGRvbmUgaW4gX3BhcmFsbGVsXworICAgd2l0aCBpbnRlcnJ1cHQsIHdoaWNoIG1lYW5zIHRoZXkgb3ZlcmxhcC4gRG91YmxlcGx1c3VuZ29vZC4gTmV0cGVyZgorICAgYXR0ZW1wdHMgdG8gY29tcGVuc2F0ZSBmb3IgdGhhdCB3aXRoIHNvbWUgaGFuZHdhdmluZworICAgKHNyYy9uZXRjcHVfa3N0YXQxMC5jKQorCisqKSBJbml0aWFsIHN1cHBvcnQgZm9yIFNDVFAgaGFzIGJlZW4gYWRkZWQgd2l0aCB0aGUgU0NUUF9TVFJFQU0gYW5kCisgICBTQ1RQX1JSIHRlc3RzLiAgVGhlc2UgdGVzdHMgdXNlIHRoZSBsaWJzY3RwIG1lY2hhbmlzbXMgZm9yCisgICBpbmNyZWFzZWQgcG9ydGFiaWxpdHkuICBJdCBoYXMgYmVlbiBleHBsYWluZWQgdGhhdCBsaWJzY3RwIHNob3VsZAorICAgbm90IGltcGFydCBhbGwgdGhhdCBtdWNoIG92ZXJoZWFkIGFuZCBpdCBkb2VzIG1ha2UgdGhpbmdzIHJhdGhlcgorICAgc2ltcGxlci4KKworKikgTmV0cGVyZiBub3cgdXNlcyBnZXRhZGRyaW5mbygpIHRvIHJlc29sdmUgaG9zdG5hbWVzIGFuZCBJUAorICAgYWRkcmVzc2VzLiBBIHJlcGxhY2VtZW50IGdldGFkZHJpbmZvKCkgaXMgcHJvdmlkZWQgZm9yIHRob3NlCisgICBwbGF0Zm9ybXMgd2hlcmUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2Fubm90IHRlbGwgdGhhdCBnZXRhZGRyaW5mbworICAgaXMgcHJlc2VudC4gICAKKworICAgVGhlcmUgYXJlIGNhc2VzIHdoZXJlIGEgaG9zdCdzIGdldGFkZHJpbmZvIGNhbGwgbWF5IHJldHVybiByZXN1bHRzCisgICB0aGF0IGlnbm9yZSB0aGUgaGludHMgZm9yIHByb3RvY29sLiAgTmV0cGVyZiBjYXRjaGVzIHRoZXNlIGFuZAorICAgcmVwb3J0cyBhIHdhcm5pbmcgc28geW91IGNhbiBwZXN0ZXIgeW91ciBPUyBzb3VyY2UgZm9yIGZpeGVzLgorCisgICBTb2xhcmlzIGdldGFkZHJpbmZvKCkgc2VlbXMgdG8gcmV0dXJuIHJlc3VsdHMgd2l0aCBTQ1RQIHByb2NvdG9sCisgICBjbGVhcmVkLgorCisgICBNYWMgT1MgWCBnZXRhZGRyaW5mbyBib3RjaGVzIHdoZW4gdGhlIHNlcnZpY2UvcG9ydCBpcyBzcGVjaWZpZWQgYXMKKyAgICIwIiBzbyBvbmUgbXVzdCBzcGVjaWZ5IGEgcG9ydCBudW1iZXIgb24gdGhlIG5ldHBlcmYgY29tbWFuZCBsaW5lLgorCisgICBBSVggNS5zb21ldGhpbmcgZ2V0YWRkcmluZm8gaGFzIGEgZGlmZmVyZW50IGJ1dCBzaW1pbGFyIHByb2JsZW0KKyAgIHdpdGggIjAiIGFzIGEgcG9ydC9zZXJ2aWNlIG5hbWUgYXMgd2VsbC4KKworICAgTGludXggMi42IGFuZCBIUC1VWCAxMWkgZ2V0YWRkcmluZm8gc2VlbSB0byBiZSBmaW5lIC0gYXQgbGVhc3QgYXMKKyAgIGZhciBhcyBuZXRwZXJmIGdvZXMgOikKKworKikgQSAiRGVtbyBNb2RlIiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgbWFpbiBCU0QgU29ja2V0cy9UQ1AvVURQIHRlc3RzOgorICAgVENQX1NUUkVBTSwgVENQX01BRVJUUywgVENQX1NFTkRGSUxFLCBUQ1BfUlIsIFRDUF9DQywgVENQX0NSUiBhbmQKKyAgIFVEUF9SUi4gSXQgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIFVEUF9TVFJFQU0uICBUaGlzIG1vZGUgaXMgZW5hYmxlZAorICAgd2l0aCAtLWVuYWJsZS1kZW1vIHdoZW4gY29uZmlndXJpbmcgbmV0cGVyZiwgd2hpY2ggYWN0aXZhdGVzIGEKKyAgIGdsb2JhbCAiLUQiIG9wdGlvbi4gIEJ5IGRlZmF1bHQsIC1EIHdpbGwgY2F1c2UgaW50ZXJpbSByZXN1bHRzCisgICAodGhyb3VnaHB1dCBvciB0cmFuc2FjdGlvbnMvcyBvbmx5LCBub3QgQ1BVIHV0aWwpIGZyb20gdGhlCisgICBuZXRwZXJmJ3MgcGVyc3BlY3RpdmUgdG8gYmUgZW1pdHRlZCBubyBzb29uZXIgdGhhbiBvbmNlIHBlciBzZWNvbmQuCisgICBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgY2FuIHNwZWNpZnkgYW5vdGhlciBpbnRlcnZhbCBpbiB1bml0cworICAgKGZsb2F0aW5nIHBvaW50KSBvZiBzZWNvbmRzOgorCisgICAgICAtRCAxLjUKKworICAgd2lsbCBtYWtlIHRoZSByZXBvcnRpbmcgaW50ZXJ2YWwgYXQgbGVhc3QgMS41IHNlY29uZHMuCisKKyAgIFRoaXMgbW9kZSBtYWtlcyBubyB1c2Ugb2YgZXhwbGljaXQgaW50ZXJ2YWwgdGltZXJzIHNpbmNlIHRoYXQgY2FuCisgICBiZSBzbywgd2VsbCBmdW4gb24gZGlmZmVyZW50IHBsYXRmb3Jtcy4gIEluc3RlYWQsIGFuIGluaXRpYWwgZ3Vlc3MKKyAgIG9mIGhvdyBtYW55IHVuaXRzIG9mIHdvcmsgbXVzdCBiZSBkb25lIHRvIGNvbnN1bWUgdGhlIGRlc2lyZWQKKyAgIHJlcG9ydGluZyBpbnRlcnZhbCBpcyBtYWRlLCBhbmQgdGhhdCBndWVzcyBpcyByZWZpbmVkIHRocm91Z2hvdXQKKyAgIHRoZSBlbnRpcmUgdGVzdC4gIElmIHNvbWV0aGluZyBoYXBwZW5zIHRvIGRyYW1hdGljYWxseSBzbG93LWRvd24KKyAgIHRoZSB0ZXN0LCB0aGUgcmVwcm90aW5nIGludGVydmFsIG1heSBiZWNvbWUgbXVzdCBsYXJnZXIgZm9yIGEgZmV3CisgICBpbnRlcnZhbHMuICBXaGVuIHRoaW5ncyBzcGVlZC11cCBpdCBpcyBkZXRlY3RlZCB2ZXJ5IHF1aWNrbHkuICBBcworICAgd2l0aCB0aGUgLS1lbmFibGUtaGlzdG9yZ3JhbSBzdXBwb3J0LCBpZiBnZXRocnRpbWUoKSBpcyBhdmFpbGFibGUKKyAgIG9uIHRoZSBwbGF0Zm9ybSwgaXQgd2lsbCBiZSB1c2VkIGluIGxpZXUgb2YgZ2V0dGltZW9mZGF5KCkuICBJbiBhbnkKKyAgIGNhc2UsIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gZ2V0dGltZW9mZGF5KCkvZ2V0aHJ0aW1lKCkgaXMgbXVjaCwKKyAgIE11Y2gsIE1VQ0ggc21hbGxlciB0aGFuIGZvciAtLWVuYWJsZS1oaXN0b2dyYW0gc28gd2hpbGUgdGhlcmUgbWF5CisgICBiZSBhIG1lYXN1cmFibGUgZWZmZWN0IG9uIHRoZSByZXN1bHRzLCBpdCBzaG91bGQgYmUgcmF0aGVyIHNtYWxsLgorCisqKSBUaGUgZ2xvYmFsIC1IIG9wdGlvbiBoYXMgYmVlbiBlbmhhbmNlZCB0byB0YWtlIGFuIG9wdGlvbmFsIGFkZHJlc3MKKyAgIGZhbWlseSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgY29udHJvbCBjb25uZWN0aW9uOgorCisgICAtSCA8cmVtb3RlPiw8ZmFtaWx5PgorCisgICBVbmxpa2Ugb3RoZXIgY29tbWEtc2VwYXJhdGVkIG9wdGlvbnMsIHdoZXJlIHNwZWNpZnlpbmcgb25seSBvbmUKKyAgIHRoaW5nIHdpbGwgc2V0IGJvdGgsIGhlcmUgc3BlY2lmeWluZyBvbmx5IG9uZSB0aGluZyB3aWxsIGJlCisgICBhc3MtdS1tZS1kIHRvIGJlIHRoZSA8cmVtb3RlPiBhbmQgd2lsbCBsZWF2ZSA8ZmFtaWx5PiBkZWZhdWx0ZWQKKyAgIChBRl9VTlNQRUMpLiAgIEZhbWlseSBjYW4gYmUgc3BlY2lmaWVkIGFzICI0IiBvciAiaW5ldCIgZm9yCisgICBBRl9JTkVULCAiNiIgb3IgImluZXQ2IiBmb3IgQUZfSU5FVDYuCisKKyopIEEgbmV3IGdsb2JhbCAtTCBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gc3BlY2lmeSB0aGUgbG9jYWwgbmFtZS9JUAorICAgYW5kL29yIGFkZHJlc3MgZmFtaWx5IGZvciB0aGUgY29udHJvbCBjb25uZWN0aW9uOgorCisgICAtTCA8bG9jYWw+LDxmYW1pbHk+CisKKyAgIFVubGlrZSBvdGhlciBjb21tYS1zZXBhcmF0ZWQgb3B0aW9ucywgd2hlcmUgc3BlY2lmeWluZyBvbmx5IG9uZQorICAgdGhpbmcgd2lsbCBzZXQgYm90aCwgaGVyZSBzcGVjaWZ5aW5nIG9ubHkgb25lIHRoaW5nIHdpbGwgYmUKKyAgIGFzcy11LW1lLWQgdG8gYmUgdGhlIDxsb2NhbD4gYW5kIHdpbGwgbGVhdmUgPGZhbWlseT4gZGVmYXVsdGVkCisgICAoQUZfVU5TUEVDKS4gIEZhbWlseSBjYW4gYmUgc3BlY2lmaWVkIGFzICI0IiBvciAiaW5ldCIgZm9yCisgICBBRl9JTkVULCAiNiIgb3IgImluZXQ2IiBmb3IgQUZfSU5FVDYuCisKKyopIFRlc3Qtc3BlY2lmaWMgLUggYW5kIC1MIG9wdGlvbnMgYXJlIHByZXNlbnQgZm9yIHRoZSBUQ1AsIFVEUCBhbmQKKyAgIFNDVFAgdGVzdHMsIHdoaWNoIGFyZSBub3cgKGludGVuZGVkIHRvIGJlKSBJUCBwcm90b2NvbCB2ZXJzaW9uCisgICBhZ25vc3RpYy4KKworKikgR2xvYmFsIC00IGFuZCAtNiBvcHRpb25zIHdpbGwgc2V0IHRoZSBib3RoIHRoZSBsb2NhbCBhbmQgcmVtb3RlCisgICBhZGRyZXNzIGZhbWlseSB0byBlaXRoZXIgQUZfSU5FVCBvciBBRl9JTkVUNiByZXNwZWN0aXZlbHkuCisKKyopIFRlc3Qtc3BlY2lmaWMgLTQgYW5kIC02IG9wdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIGZvciBUQ1AsIFVEUCBhbmQKKyAgIFNDVFAgdGVzdHMuCisKKyopIFNpbmNlIHRoZSBiYXNpYyBUQ1AgVURQIGFuZCBTQ1RQIHRlc3RzIGFyZSBubyBsb25nZXIgSVB2NC1vbmx5LCB0aGUKKyAgIG5ldHRlc3RfaXB2Ni5bY2hdIGZpbGVzIGFyZSBvbmx5IGluY2x1ZGVkIGluIHRoZSBzb3VyY2UKKyAgIGRpc3RyaWJ1dGlvbiBmb3IgaGlzdG9yaWNhbCBpbnRlcmVzdC4KKworKikgVGhlIG1haW4gdGVzdCBiYW5uZXJzIGZvciB0aGUgVENQLCBVRFAgYW5kIFNDVFAgdGVzdHMgaGF2ZSBiZWVuCisgICBlbmhhbmNlZCB0byBnaXZlIGJvdGggbG9jYWwgYW5kIHJlbW90ZSBhZGRyZXNzaW5nIGluZm9ybWF0aW9uIGZvcgorICAgdGhlIGRhdGEgY29ubmVjdGlvbi4KKworKikgQ29tcGlsYXRpb24gdW5kZXIgV2luZG93cyBpcyBsaWtlbHkgRlVCQVIgYXQgdGhpcyBwb2ludC4gIEkgX2hvcGVfCisgICB0byBzdGFydCB0cnlpbmcgdG8gZG8gYnVpbGRzIHVuZGVyIHRoZSBEREsgc29vbiwgYnV0IGFtIG5vdCBzdXJlCisgICB3aGVuIEknbGwgYmUgYWJsZSB0byBzdGFydC4gIEFueSBhbmQgYWxsIGFzc2lzdGFuY2UgeW91IGNhbiBnaXZlCisgICB0aGVyZSB3b3VsZCBiZSBtb3N0IHdlbGNvbWUuCisKKyopIFZhcmlvdXMgYW5kIHN1bmRyeSBmaXhlcy4gIFRDUF9SUiBzaG91bGQgbm8gbG9uZ2VyIGdvIGludG8gYW4KKyAgIGluZmluaXRlIGxvb3Agd2hlbiB5b3UgYWJvcnQgbmV0cGVyZi4gIEknbSBzdXJlIHRoZXJlIGFyZSBvdGhlcnMuCisKKyopIFVuaXggZG9tYWluIHNvY2tldCB0ZXN0cyBhcmUgY29tcGlsZWQtaW4gd2l0aCAtLWVuYWJsZS11bml4PXllcyBhdAorICAgY29uZmlndXJlIHRpbWUuCisKKyopIERMUEkgdGVzdHMgYXJlIGNvbXBpbGVkLWluIHdpdGggLS1lbmFibGUtZGxwaT15ZXMgYXQgY29uZmlndXJlCisgICB0aW1lLgorCisqKSBYVEkgdGVzdHMgYXJlIGNvbXBpbGVkLWluIHdpdGggLS1lbmFibGUteHRpPXllcyBhdCBjb25maWd1cmUgdGltZS4gCisKK1RoaW5ncyBub3QgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2U6CisKKyopIFNlZW1zIGxpa2UgZXZlcnl0aGluZyBoYXMgY2hhbmdlZCA6KQorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIFJldmlzaW9uIDIuM3BsMiBvZiBuZXRwZXJmOgorCitUaGluZ3MgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2UKKworKikgT25lIGNhbiBiaW5kIG5ldHBlcmYgb3IgbmV0c2VydmVyIHRvIHNwZWNpZmljIENQVXMgd2l0aCB0aGUgLVQKKyAgIG9wdGlvbi4gVGhpcyBpcyBhIGdlbmVyYWxpemF0aW9uIG9mIHNvbWUgSFAtVVggYW5kIG5ldHNlcnZlciBzcGVjaWZpYworICAgd29yayBmcm9tIDIuM3BsMS4KKworKikgRXh0ZW5kIHRoZSBrbHVkZ2UgdG8gd29ya2Fyb3VuZCB0aGUgTGludXggc2V0c29ja29wdC9nZXRzb2Nrb3B0CisgICBiaXp6YXJyZW5lc3MgdG8gdGhlIHNvY2tldCBidWZmZXIgc2l6ZXMgZm9yIHRoZSByZW1vdGUgc2lkZSBpbgorICAgYWRkaXRpb24gdG8gdGhlIGxvY2FsIHNpZGUuCisKKyopIEZpeCB0aGUgbGFjayBvZiBpbml0aWFsaXphdGlvbiBvZiB0aW1lc191cCBpbiByZWN2X3RjcF9tYWVydHMoKQorICAgdGhhdCBjYXVzZWQgY29uZmlkZW5jZSBpbnRlcnZhbHMgdG8gZmFpbCBtaXNlcmFibHkuCisKKyopIE90aGVyIG1pc2MgZml4ZXMgLSB0aGFuIHlvdSB0byBhbGwgb2YgeW91IHdobyBzZW50IHRoZW0uCisKK1RoZXNlIGFyZSB0aGUgUmVsZWFzZSBOb3RlcyBmb3IgcmV2aXNpb24gMi4zcGwxIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZQorCisqKSBUaGUgYmluZCgpIGNhbGwgaW4gY3JlYXRlX2RhdGFfc29ja2V0KCkgaW4gdGhlIGZpbGUgbmV0dGVzdF9ic2QuYworICAgaXMgbm8gbG9uZ2VyIGNvbmRpdGlvbmFsIG9uIHRoZSB1c2VyJ3Mgc3BlY2lmeWluZyBhbiBJUCBhZGRyZXNzIG9yCisgICBwb3J0IG51bWJlciB0byB3aGljaCB0aGUgZGF0YSBzb2NrZXQgc2hvdWxkIGJlIGJvdW5kLiAgVGhpcyBmaXhlcworICAgdGhlICJjb25uZWN0aW9uIHJlZnVzZWQiIGVycm9ycyBpbiB0aGUgVURQIHRlc3RzLgorCisqKSBTb21lIGV4cGVyaW1lbnRhbCBjb2RlIHRvIGFsbG93IG9uZSB0byBzcGVjaWZ5IGEgQ1BVIHRvIHdoaWNoIHRoZQorICAgcmVtb3RlIG5ldHNlcnZlciBzaG91bGQgYmUgYm91bmQuICBUaGlzIGlzIGludGVuZGVkIHRvIGFsbG93IG9uZSB0bworICAgZ2V0IGdyZWF0ZXIgY2VydGFpbnR5IChhcyBpbiBjb25maWRlbmNlIGludGVydmFscykgb24gU01QCisgICBzeXN0ZW1zLiBBdCBwcmVzZW50IHRoZSBmdW5jdGlvbmFsaXR5IGlzIEhQLVVYIHNwZWNpZmljLgorICAgU3VibWl0dGFscyBvZiBjaGFuZ2VzIGZvciBhIG1vcmUgZ2VuZXJhbCBhcHByb2FjaCBhcmUgd2VsY29tZWQuCisKK1RoZXNlIGFyZSB0aGUgUmVsZWFzZSBOb3RlcyBmb3IgcmV2aXNpb24gMi4zIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZQorCisqKSBUaGUgdXNlciBjYW4gbm93IHNwZWNpZnkgbG9jYWwgYW5kL29yIHJlbW90ZSBwb3J0IG51bWJlcnMgZm9yIHRoZQorICAgZGF0YSBjb25uZWN0aW9uIHVzaW5nIHRoZSAtUCB0ZXN0LXNwZWNpZmljIG9wdGlvbi4gIFRoaXMgaXMgdG8KKyAgIHN1cHBvcnQgdGhvc2UgZm9sa3Mgd2hvIHdhbnQgdG8gcnVuIG5ldHBlcmYgdGhyb3VnaCB0aG9zZSBldmlsLAorICAgZW5kLXRvLWVuZC1icmVha2luZyB0aGluZ3Mga25vd24gYXMgZmlyZXdhbGxzLi4uIDopICBUaGlzIGNoYW5nZXMKKyAgIHRoZSBmb3JtYXQgb2Ygc29tZSBvZiB0aGUgY29udHJvbCBtZXNzYWdlcywgaGVuY2UgdGhlIGJ1bXAgaW4gdGhlCisgICB1cGRhdGUgbnVtYmVyIGluIHRoZSBWVUYuIFdoaWxlIGl0IG1heSBiZSBwb3NzaWJsZSB0byBtaXggMi4zIGFuZAorICAgcHJlLTIuMyBuZXRwZXJmIGFuZCBuZXRzZXJ2ZXIsIGl0IGlzIG5vdCBzdXBwb3J0ZWQuCisKKyopIFRoZSB1c2VyIGNhbiBub3cgc3BlY2lmeSBsb2NhbCBhbmQvb3IgcmVtb3RlIElQIGFkZHJlc3NlcyBmb3IgdGhlCisgICBkYXRhIGNvbm5lY3Rpb24gdXNpbmcgdGhlIC1JIHRlc3Qtc3BlY2lmaWMgb3B0aW9uLiAgVGhpcyBpcyB0bworICAgc3VwcG9ydCB0aG9zZSBmb2xrcyB3aG8gd2FudCB0byBydW4gbmV0cGVyZiB0aHJvdWdoIHRob3NlIGV2aWwsCisgICBlbmQtdG8tZW5kLWJyZWFraW5nIHRoaW5ncyBrbm93biBhcyBmaXJld2FsbHMuLi4gOikgVGhpcyBjaGFuZ2VzCisgICB0aGUgZm9ybWF0IG9mIHNvbWUgb2YgdGhlIGNvbnRyb2wgbWVzc2FnZXMsIGhlbmNlIHRoZSBidW1wIGluIHRoZQorICAgdXBkYXRlIG51bWJlciBpbiB0aGUgVlVGLiBXaGlsZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gbWl4IDIuMyBhbmQKKyAgIHByZS0yLjMgbmV0cGVyZiBhbmQgbmV0c2VydmVyLCBpdCBpcyBub3Qgc3VwcG9ydGVkLgorCisqKSBTZXQgRExfbXVtYmxlICBtZXNzYWdlIHByaW9yaXRpZXMgaW4gdGhlIERMUEkgdGVzdHMKKworKikgRml4IGVycm9yIHJldHVybiBjaGVjayBmb3IgZ2V0YWRkcmluZm8oKQorCisqKSBUaG9zZSBzeXN0ZW1zIHdpdGggZ2V0aHJ0aW1lKCkgY2FuIGRlZmluZSAtREhBVkVfR0VUSFJUSU1FIHRvIHVzZQorICAgZ2V0aHJ0aW1lKCkgaW5zdGVhZCBvZiBnZXR0aW1lb2ZkYXkoKSBhbmQgcmVkdWNlIHRoZSBtZWFzdXJlbWVudAorICAgb3ZlcmhlYWQgd2hlbiBlbmFibGluZyB0aGUgLURISVNUT0dSQU0gZnVuY3Rpb25hbGl0eS4KKworKikgVGhlIGRlZmF1bHQgZm9yIC1ESElTVE9HUkFNIGNvbXBpbGF0aW9uIG5vdyBhZGRzIGEgVU5JVF9VU0VDIGFuZAorICAgVEVOX1VTRUMgcm93IGFuZCByZW5hbWVzIFRFTlRIX01TRUMgdG8gSFVORFJFRF9VU0VDLiAgSWYgeW91IHdhbnQKKyAgIHRoZSBvbGQgYmVoYXZpb3VyIGFkZCAtRE9MRF9ISVNUT0dSQU0gdG8gQ0ZMQUdTLgorCisqKSBBZGQgbWlzc2luZyAnIScgaW4gdGhlIHJlY3ZfdWRwKl9zdHJlYW0gc28gd2UgcmVjb2duaXplIHRoZSBlbmQgb2YgCisgICBhIHRpbWVkIHRlc3QgY29ycmVjdGx5LgorCisqKSBSZXBsYWNlICJ8fCIgd2l0aCAiJiYiIHRvIGZpeCBhbiBpbmZpbml0ZSBsb29wIGluCisgICByZWN2X3RjcF9jb25uX3JyKCkgbW9zdCBsaWtlbHkgaW50cm9kdWNlZCBpbiAyLjJwbDUuIAorCisqKSBDb2RlIGhhcyBiZWVuIGFkZGVkIHRvIGtsdWRnZSBhcm91bmQgdGhlIGJ1ZyBpbiBMaW51eCBnZXRzb2Nrb3B0KCkKKyAgIHdoZXJlIGl0IGFsbW9zdCBhbHdheXMgcmV0dXJucyB0d2ljZSB0aGUgdmFsdWUgZm9yIHdoaWNoIG9uZQorICAgYXNrcyB1bmxpa2UgdmlydHVhbGx5IGV2ZXJ5IG90aGVyIHN0YWNrIG9uIHRoZSBmYWNlIG9mIHRoZQorICAgcGxhbmV0LiBUaGlzIHdhcyBkb2luZyBzb21lIHVucGxlYXNhbnQgdGhpbmdzIHRvIHRlc3RzIGluIHdoaWNoCisgICBjb25maWRlbmNlIGludGVydmFscyB3ZXJlIHJlcXVlc3RlZC4gCisKK1RoaW5ncyBub3QgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2UKKworKikgTG90cyA6KQorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIHJldmlzaW9uIDIuMnBsNSBvZiBuZXRwZXJmOgorCitUaGluZ3MgY2hhbmdlZCBpbiB0aGlzIHJlbGVhc2UKKworKikgSW1wcm92ZWQgKHBlcmhhcHMgZXZlbiB1c2FibGUgOikgc3VwcG9ydCBmb3IgV2luZG93cywgaW5jbHVkaW5nCitjb21waWxhdGlvbiBhbmQgcnVuIG9uIFdpbjY0LgorCisqKSBGaXhlcyBmb3IgTWFjT1MgWCBhbmQgRnJlZUJTRAorCitUaGluZ3Mgbm90IGNoYW5nZWQgaW4gdGhpcyByZWxlYXNlCisKKyopIFNwZWNpZnlpbmcgdGhlIHBvcnQgbnVtYmVyKHMpIGZvciB0aGUgZGF0YSBjb25uZWN0aW9uCisKK1RoZXNlIGFyZSB0aGUgUmVsZWFzZSBOb3RlcyBmb3IgUmV2aXNpb24gMi4ycGw0IG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZQorCisqKSBVU0VfU1lTQ1RMIGF2YWlsYWJsZSBvbiBzdWl0YWJsZSBGcmVlQlNEIHJlbGVhc2VzIHRvIG1lYXN1cmUgQ1BVCisgICB1dGlsaXphdGlvbiB3aXRob3V0IGhhdmluZyB0byByZXNvcnQgdG8gLURVU0VfTE9PUEVSLgorCisqKSBJbmNsdWRlIFNvbGFyaXMgOSB3aXRoIHRoZSBMaW51eCBzZW5kZmlsZSBwYXRoIHVuZGVyIC1ESEFWRV9TRU5ERklMRQorCitUaGlzIHN0aWxsIG91dHN0YW5kaW5nIGluIHRoaXMgcmVsZWFzZQorCisqKSBLbm93aW5nIHdoeSBzaWduYWxzIGFyZSBub3QgaW50ZXJydXB0aW5nIHNvY2tldCBjYWxscyB1bmRlcgorICAgT3BlblZNUy4gIEEgcXVpY2sgdHJ5IHRvIHVzZSB0aHJlYWRzIGZvciB0aW1pbmcgYSBsYSBXaW4zMiB3b3JrZWQsCisgICBidXQgYWxzbyBjdXQgcGVyZm9ybWFuY2UgaW4gaGFsZi4gIEFueSBhbmQgYWxsIGFzc2lzdGFuY2UgaW4gdGhpcworICAgYXJlYSB3b3VsZCBiZSBtb3N0IHdlbGNvbWUuCisKK1RoZXNlIGFyZSB0aGUgUmVsZWFzZSBOb3RlcyBmb3IgcmV2aXNvaW4gMi4ycGwzIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZQorCisqKSBJIHN0YXJ0ZWQgcHJhY3RpY2luZyB3aGF0IEkgcHJlYWNoIGFuZCB3aWxsIHNldCBTT19SRVVTRUFERFIgYmVmb3JlCisgICBuZXRzZXJ2ZXIgdHJpZXMgdG8gYmluZCB0byBpdHMgd2VsbC1rbm93biBwb3J0LgorCisqKSBJbml0aWFsIHBvcnQgdG8gT3BlblZNUy4gIFRoaXMgaW5jbHVkZXMgc3VwcG9ydCBmb3IgdGhlIE9WTVMKKyAgIEF1eGlsbGlhcnkgc2VydmVyIChpbmV0ZCByZXBsYWNlbWVudCkuICBTZWUgUkVBRE1FLm92bXMgZm9yIG1vcmUKKyAgIGRldGFpbHMgb24gd2hhdCBpcyBpbnZvbHZlZCBpbiBjb21waWxpbmcgYW5kIHJ1bm5pbmcgbmV0cGVyZiB1bmRlcgorICAgT3BlblZNUy4KKworKikgVGVzdG5hbWUgY29tcGFyaXNvbnMgYXJlIG5vdyBjYXNlIGluc2Vuc2l0aXZlLiAgVGhpcyBpcyBhIHNpZGUKKyAgIGVmZmVjdCBvZiBPcGVuVk1TIGRvd25zaGlmdGluZyBjb21tYW5kbGluZXMgdG8gbG93ZXJjYXNlLiAgSSBtYWRlCisgICB0aGUgY2hhbmdlIGFuZCBkZWNpZGVkIGl0IHdhcyBPSyB0byBrZWVwIGl0IHRoYXQgd2F5LCBldmVuIHRob3VnaAorICAgZm9yIE9wZW5WTVMgb25lIF9oYXNfIHRvIHNldCB0aGUgcmlnaHQgZGVmaW5lcyB0byBkaXNhYmxlIHRoYXQKKyAgIGRvd25zaGlmdGluZyBvciB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgd2lsbCBub3Qgd29yay4gRm9yIGV4YW1wbGUKKyAgICItSCIgd2lsbCBiZWNvbWUgIi1oIiB3aGljaCBpc24ndCBxdWl0ZSB0aGUgc2FtZSB0aGluZy4uLgorCisqKSBNaXNjIGZpeGVzIGZvciBuZXR0ZXN0X2lwdjYuYy4KKworKikgU3VwcG9ydCBmb3Igc2VuZGZpbGUoKSB1bmRlciBMaW51eAorCitUaGlucyBJIHdvdWxkIGxpa2UgdG8gaGF2ZSBjaGFuZ2VkIGJ1dCBkaWQgbm90IGtub3cgaG93IG9yIGRpZG4ndCBoYXZlCit0aW1lOgorCisqKSBBbGxvdyBuZXRzZXJ2ZXIgdG8gcnVuIGFzIGEgc3RhbmRhbG9uZSBkYWVtb24gdW5kZXIgT3BlblZNUworKikgQWxsb3cgbmV0c2VydmVyIHRvIHJ1biBhcyBhIHN0YW5kYWxvbmUgZGFlbW9uIHVuZGVyIFdpbmRvd3MKKyopIFJlZGlzY292ZXIgYW4gaW5ldGQtbGlrZSBmYWNpbGl0eSBmb3IgV2luZG93cworKikgRmlndXJlLW91dCBob3cgdG8gZ2V0IGxvdy1vdmVyaGVhZCwgYWNjdXJhdGUsIHBlci1DUFUgdXRpbGl6YXRpb24KKyAgIGZpZ3VyZXMgdW5kZXIgT3BlblZNUworKikgR2V0IHRoZSBVRFBfUlIgYW5kIFVEUF9TVFJFQU0gdGVzdHMgdG8gd29yayB1bmRlciBPcGVuVk1TLCBhbmQgZ2V0CisgICB0aGUgVENQX1JSIHRlc3QgdG8gd29yayBiYXNlZCBvbiB0aW1lIHJhdGhlciB0aGFuIHRyYW5zYWN0aW9uCisgICBjb3VudC4gIFRoZXJlIGlzIHNvbWUgYnVnIChwb3NzaWJseSBpbiBPcGVuVk1TPykgd2hlcmUgdGhlIFNJR0FMUk0KKyAgIGZpcmVzLCBidXQgYSBzb2NrZXQgY2FsbCB3aWxsIG5vdCByZXR1cm4gYW4gRUlOVFIuCisKK1RoaW5ncyB0aGF0IGNoYW5nZWQgcHJpb3IgdG8gdGhpcyByZWxlYXNlOgorCisqKSBBZGRpdGlvbiBvZiB0aGUgVENQX01BRVJUUyB0ZXN0IC0gdGhpcyBpcyBhIFRDUF9TVFJFQU0gdGVzdCB3aGVyZQorICAgdGhlIGRhdGEgZmxvd3MgZnJvbSB0aGUgbmV0c2VydmVyIHRvIHRoZSBuZXRwZXJmIHJhdGhlciB0aGFuIGZyb20KKyAgIHRoZSBuZXRwZXJmIHRvIHRoZSBuZXRzZXJ2ZXIuICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gdGhvc2UKKyAgIHNpdHVhdGlvbnMgd2hlcmUgbmV0cGVyZiAobmV0c2VydmVyKSBpcyBpbnN0YWxsZWQgb24gYSByZW1vdGUKKyAgIHN5c3RlbSwgYnV0IHRoZSB0ZXN0ZXIgaGFzIG5vIHNoZWxsIGFjY2VzcyBhbmQgd2lzaGVzIHRvIGdldAorICAgcGVyZm9ybWFuY2UgZGF0YSBmb3IgdGhlIHBhdGggZnJvbSBuZXRzZXJ2ZXIgdG8gbmV0cGVyZi4KKworVGhlc2UgYXJlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciB0aGUgMi4yIHJldmlzaW9uIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBjaGFuZ2VkIGluIHRoaXMgcmVsZWFzZQorCisqKSBWYXJpb3VzIGFuZCBzdW5kcnkgYnVncyBmaXhlZCAoaW4gdGhlb3J5KSBmb3IgcGxhdGZvcm1zIHN1Y2ggYXMKKyAgIEZyZWVCU0QgYW5kIExpbnV4LiBJZiBJIGxlZnQtb3V0IHlvdXIgYnVnIGZpeCwgaXQgd2FzIHB1cmVseQorICAgYWNjaWRlbnRhbCAtIG15IG1pbmQgaGFzIGEgdmVyeSBzbWFsbCBjYWNoZSwgYW5kIHNvbWV0aW1lcyBJIHdpbGwKKyAgICJsb3NlIiBlbWFpbCBpbiB0aGUgc2h1ZmZsZS4KKworKikgSW5pdGlhbCBzdXBwb3J0IGZvciBzZW5kZmlsZSgpIG9uIEhQLVVYLiBUaGlzIHRlc3Qgd2lsbCB1c2UgdGhlCisgICBzZW5kZmlsZSgpIGNhbGwgaW5zdGVhZCBvZiBzZW5kKCkgdG8gc2VuZCBkYXRhIHRvIHRoZQorICAgcmVtb3RlLiBOZXRwZXJmICJsaWVzIiB0byBuZXRzZXJ2ZXIgYW5kIGNhbGxzIGl0IGEgVENQX1NUUkVBTSB0ZXN0CisgICBzaW5jZSB3aGF0IG5ldHNlcnZlciBuZWVkcyB0byBkbyBpcyBleGFjdGx5IHRoZSBzYW1lLiBBIGZ1dHVyZQorICAgcGF0Y2ggbWF5IGNoYW5nZSB0aGF0IGFuZCBzaW1wbHkgaGF2ZSBuZXRzZXJ2ZXIgY2FsbCB0aGUgc2FtZQorICAgcm91dGluZSBmb3IgYm90aCB0ZXN0IHR5cGVzLiBLdWRvcyB0byBDaGFybGVzIEhhcnJpcyBmb3IgdGhlCisgICBpbml0aWFsIHByb3RvdHlwZS4KKworKikgVGhlIEZvcmUgQVRNIEFQSSBhbmQgSGlQUEkgdGVzdHMgaGF2ZSBiZWVuIGRyb3BwZWQgZnJvbSB0aGUKKyAgIGRpc3RyaWJ1dGlvbi4gCisKK1RoaW5ncyBJIHdvdWxkIGhhdmUgbGlrZWQgdG8gaGF2ZSBjaGFuZ2VkLCBidXQgZGlkIG5vdCBoYXZlIHRpbWUgZm9yOgorCisqKSBDb252ZXJzaW9uIG9mIHRoZSBzb3VyY2UgYW5kIG1ha2VmaWxlIHRvIHVzZSB0aGUgR05VIGNvbmZpZ3VyZS9hdXRvY29uZiAKKyAgIHV0aWxpdHkgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGZvbGtzIHRvIGJ1aWxkIGJ5IG5vdCBoYXZpbmcgdG8gZWRpdAorICAgbWFrZWZpbGVzLi4uIFlvdSB3aWxsIG5vdGljZSB0aGF0IEkgaGF2ZSBzdGFydGVkIHRvIHN3aXRjaCBmcm9tCisgICAiRE9fTVVNQkxFIiB0byAiSEFWRV9NVU1CTEUiCisKK2FzIGFsd2F5cyAtIGhhcHB5IGJlbmNobWFya2luZywKKworcmljayBqb25lcyA8cmFqQGN1cC5ocC5jb20+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBhcmUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIHRoZSAyLjFwbDMgcmV2aXNpb24gb2YgbmV0cGVyZjoKKworKikgQW4gT0JPQiAoT2ZmIEJ5IE9uZSBCdWcpIGluIG5ldGxpYi5jIHRoYXQgd2FzIGNhdXNpbmcgYSBjb3JlIGR1bXAKKyAgIG9uIElyaXggc2hvdWxkIGJlIGZpeGVkLgorCisqKSBJcml4IHN5c3RlbXMgc2hvdWxkIG5vdyBiZSBhYmxlIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENQVSdzCisgICBwcmVzZW50IGF1dG9tYWdpY2FsbHkgKGNvZGUgZnJvbSBvdXRzaWRlLCBub3QgdGVzdGVkIHlldCBiZWNhdXNlIEkKKyAgIGhhdmUgbm8gTVAgSXJpeCBzeXN0ZW1zIGF0IG15IGRpc3Bvc2FsKQorCisqKSBBbiBhbHBoYSB2ZXJzaW9uIG9mIGEgVENQX0NDIHRlc3QgaGFzIGJlZW4gYWRkZWQgLSB0aGlzIGlzIGEKKyAgIFRDUF9DUlIgdGVzdCB3aXRoIG91dCB0aGUgIlJSLiIKKworKikgVGhlIC1BZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgbWFrZWZpbGUuIElmIHNvbWVvbmUgaGFzCisgICBhIG5pY2Ugd2F5IHRvIGF1dG9tYWdpY2FsbHkgZ2VuZXJhdGUgdGhlIGNvcnJlY3QgbWFrZWZpbGUgZm9yCisgICBkaWZmZXJlbnQgcGxhdGZvcm1zIEkgd291bGQgbGlrZSB0byBsZWFybiBob3cuCisKK2hhcHB5IGJlbmNobWFya2luZywKKworcmljayBqb25lcyA8cmFqQGN1cC5ocC5jb20+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgYXJlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciB0aGUgMi4xIHJldmlzaW9uIG9mIG5ldHBlcmY6CisKK1RoaW5ncyBDaGFuZ2VkIGluIHRoaXMgcmVsZWFzZToKKworKikgVGhlIFhUSSAoVmVyc2lvbiAyIG9mIHRoZSBzcGVjKSB0ZXN0cyBhcmUgbm93IGRvY3VtZW50ZWQgaW4gdGhlCisgICBtYW51YWwuIAorCisqKSBUaGUgVENQX0NSUiAoQ29ubmVjdCBSZXF1ZXN0L1Jlc3BvbnNlKSB0ZXN0IGlzIG5vdyBkb2N1bWVudGVkIGluCisgICB0aGUgbWFudWFsLCBpbmNsdWRpbmcgYSBkZXNjcmlwdGlvbiBvZiBob3cgaXQgbWltaWNzIHRoZSBiZWhhdmlvdXIKKyAgIG9mIGh0dHAgKHRoZSBwcm90b2NvbCB1bmRlcmx5aW5nIHRoZSBXV1cpLgorCisqKSBTdXBwb3J0IGZvciBmb3IgV2luZG93cyBOVCAzLjUxIE9TIGluIHRoZSBCU0QgU29ja2V0cyB0ZXN0cyAob2ssIHNvCisgICB0aGV5IGFyZSByZWFsbHkgV2luc29jayBpbiB0aGF0IGNhc2UgOikuIE90aGVyIHRlc3Qgc3VpdGVzIG1heSBiZQorICAgcG9ydGVkIGFzIHJlcXVpcmVkL2Rlc2lyZWQvYXBwcm9wcmlhdGUuIAorCisqKSBUZXN0cyBmb3IgVENQIGFuZCBVRFAsIHVzaW5nIHRoZSBJUHY2IGV4dGVuc2lvbnMgdG8gQlNEIHNvY2tldHMgYXJlCisgICBpbmNsdWRlZCBpbiB0aGlzIHJlbGVhc2UuIFRoZXkgYXJlIGluY2x1ZGVkIGJ5IGFkZGluZyAtRFVTRV9JUHY2IHRvCisgICB0aGUgbWFrZWZpbGUgYW5kIHJlY29tcGlsaW5nLgorCisqKSBTdXBwb3J0IGZvciBhICJsb25nIGxvbmciIGRhdGF0eXBlIHNob3VsZCBvbmx5IGJlIHJlcXVpcmVkIGZvcgorICAgLURVU0VfUFNUQVQgY29tcGlsYXRpb24gd2hpY2ggaXMgYW4gSFAtVVggb25seSB0aGluZy4gVGhlCisgICAqdW5idW5kbGVkKiBIUCBjb21waWxlcnMgZnJvbSBhdCBsZWFzdCAiSFA5MjQ1My0wMSBBLjA5LjYxIEhQIEMKKyAgIENvbXBpbGVyIiBhbmQgbGF0ZXIgc2hvdWxkIGhhdmUgdGhlIHJlcXVpcmVkIHN1cHBvcnQuIFRoZSBidW5kbGVkCisgICBjb21waWxlciBtYXkgbm90LiBHQ0Mgc2hvdWxkIHdvcmsgLSBjaGVjayB0aGUgYXJjaGl2ZXMgbGlzdGVkIGluCisgICB0aGUgY29tcC5zeXMuaHAuaHB1eCBGQVEgZm9yIGNvcGllcy4gVGhlIEZBUSBpcyBhcmNoaXZlZCBvbgorICAgcnRmbS5taXQuZWR1IHVuZGVyIHRoZSBwYXRoIHB1Yi91c2VuZXQvY29tcC5zeXMuaHAuaHB1eC4KKworKikgQSAicHJvcGVyIiBmaXggZm9yIGRvdWJsZSBkYXRhIHR5cGUgYWxpZ25tZW50IGhhcyBiZWVuIGluY2x1ZGVkLgorCisqKSBBIG5ldyBzY3JpcHQgaXMgaW5jbHVkZWQgd2l0aCB0aGlzIHJlbGVhc2Ugd2hpY2ggY2FuIGJlIHVzZWQgdG8KKyAgIG1lYXN1cmUgYWdncmVnYXRlIFRDUF9SUiBwZXJmb3JtYW5jZSAobXVsdGlwbGUsIGNvbmN1cnJlbnQKKyAgIGluc3RhbmNlcyBvZiB0aGUgVENQX1JSIHRlc3QpLiBBIHJlbGF0ZWQgdXNlIG9mIHRoaXMgc2NyaXB0IHdvdWxkCisgICBiZSBtZWFzdXJpbmcgTVAgc2NhbGluZy4gQSBzaW5nbGUtYnl0ZSBUQ1BfUlIgdGVzdCBpcyBnb29kIGZvciB0aGlzCisgICBwdXJwb3NlIGZvciB0d28gcmVhc29uczoKKworICAgICAgMSkgaXQgZXhjZXJjaXNlcyB0aGUgY29udHJvbC9wcm90b2NvbCBwYXRocyBoZWF2aWx5IHdpdGhvdXQKKyAgICAgICAgIHVzaW5nIG11Y2ggaW4gdGhlIHdheSBvZiBkYXRhIGNvcGllcyB3aGljaCBtYXkgYmUgZWFzaWVyIHRvCisgICAgICAgICBzY2FsZS4KKyAgICAgIDIpIG1vc3Qgc3lzdGVtcyBjYW4gZWFzaWx5IHNhdHVyYXRlIGNhcmRzIHdpdGggYmFuZHdpZHRoLCBidXQKKyAgICAgICAgIG5vdCBzbyBlYXNpbHkgd2l0aCByZXF1ZXN0L3Jlc3BvbnNlCisKKyAgIE9mIGNvdXJzZSwgZmVlZGJhY2sgb24gdGhpcyBpcyBtb3N0IHdlbGNvbWUuCisKKyopIFdoZW4gbWVhc3VyaW5nIENQVSB1dGlsaXphdGlvbiwgdGhlIHVuaXRzIGZvciBzZXJ2aWNlIGRlbWFuZCBoYXZlCisgICBiZWVuIGNoYW5nZWQgZnJvbSBtaWxsaXNlY29uZHMgKGRlc2lnbmF0ZWQgbXMpIG9mIENQVSBwZXIgdW5pdCAoS0IKKyAgIG9yIFRyYW5zYWN0aW9uKSB0byBtaWNyb3NlY29uZHMgKGRlc2dpbmF0ZWQgdXMpLgorCisqKSBGb3IgYWNjdXJhdGUgcmVwb3J0aW5nIG9mIHNlcnZpY2UgZGVtYW5kLCBuZXRwZXJmIG5lZWRzIHRvIGtub3cgdGhlCisgICBudW1iZXIgb2YgQ1BVJ3MgcHJlc2VudCBvbiBhIHN5c3RlbS4gT24gc29tZSBzeXN0ZW1zIChIUC1VWCksIHRoaXMKKyAgIGlzIGF1dG9tYXRpYy4gRm9yIG90aGVycyAoQWxsKSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGFkZCBhIGdsb2JhbCAiLW4KKyAgIDxudW1jcHU+IiBvcHRpb24gdG8gYm90aCBuZXRwZXJmIGFuZCBuZXRzZXJ2ZXIuCisKKyAgICEhIElGIFRISVMgSVMgTEVGVC1PVVQgQ1BVIFVUSUxJWkFUSU9OIEFORCBTRVJWSUNFIERFTUFORCBGT1IgISEKKwkgICAgICEhIE1VTFRJLVBST0NFU1NPUiBTWVNURU1TIFdJTEwgQkUgV1JPTkcuICEhCisKKyAgIElmIHlvdSBrbm93IG9mIHdheXMgdG8gcHJvZ3JhbWF0aWNhbGx5IGRldGVybWluZSB0aGUgbnVtYmVyIG9mCisgICBhY3RpdmUgQ1BVcyBvbiBhIHN5c3RlbSwgcGxlYXNlIGxldCB0aGUgYXV0aG9yIFJpY2sgSm9uZXMKKyAgIDxyYWpAY3VwLmhwLmNvbT4ga25vdy4KKworKikgb3RoZXIgdGhpbmdzIEkndmUgcHJvYmFibHkgZm9yZ290dGVuIDopCisKK1RoaW5ncyBOb3QgQ2hhbmdlZCBpbiB0aGlzIHJlbGVhc2U6CisKKyopIFRoZSBhbmNpbGxhcnkgdGVzdCBzdWl0ZXMgYXJlIGVzc2VudGlhbGx5IHVuY2hhbmdlZCAtIERMUEksCisgICBIaVBQSS9MTEEsIFVuaXggRG9tYWluLCBhbmQgRm9yZSBBVE0gQVBJLiBVbmxlc3MgdGhlcmUgaXMgbXVjaAorICAgaW50ZXJlc3QgZXhwcmVzc2VkIGluIHRoZXNlIHRlc3RzLCAyLjEgbWF5IGJlIHRoZSBsYXN0IHJlbGVhc2UgaW4KKyAgIHdoaWNoIHRoZXkgYXJlIGluY2x1ZGVkLiBUaGUgb3JkZXIgb2YgcmV0aXJlbWVudCB3b3VsZCBsaWtlbHkgYmUKKyAgIFVuaXggRG9tYWluLCBIaVBQSS9MTEEsIEZvcmUgQVRNIEFQSSwgYW5kIHRoZW4gRExQSS4KKworTWlzY2VsYW5lb3VzIENvbW1lbnRzOgorCisqKSBUaGUgLURVU0VfTE9PUEVSIENQVSB1dGlsaXphdGlvbiBfc2VlbXNfIHRvIGJlIG5pY2UgYW5kIGxvdy1pbXBhY3QKKyAgIG9uIEhQLVVYLCBEaWdpdGFsIFVuaXgsIGFuZCBJUklYLiBJdCBkb2VzIG5vdCB5ZXQgc2VlbSB0byBiZQorICAgbG93LWltcGFjdCBvbiBTb2xhcmlzIChJIG5lZWQgYW4gZXhhbXBsZSBvZiBwcmlvY250bCB1c2FnZSksIEFJWAorICAgKHNldHByaSBvbmx5IHdvcmtzIGlmIHlvdSBhcmUgcm9vdCksIGFuZCBOVCAobm90IHN1cmUgb2YgdGhlCisgICByZWFzb24pLiBIZWxwIHdpdGggdGhvc2UgcHJvYmxlbXMgd291bGQgYmUgbW9zdCBhcHByZWNpYXRlZC4KZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODk1MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvYWNpbmNsdWRlLm00CkBAIC0wLDAgKzEsMzQxIEBACisKK2RubCBUaGlzIGNvbWVzIGZyb20gbGliY3VybCdzIGFjaW5jbHVkZS5tNC4gIGl0IGlzIG5vdCBjbGVhciBpZiB0aGlzCitkbmwgaXMgb3JpZ2luYWwgbGliY3VybCBjb2RlLCBvciBvdGhlciBjb2RlLCBzbyB3ZSBpbmNsdWRlIHRoZSBsaWJjdXJsCitkbmwgY29weXJpZ2h0IGhlcmUKK2RubAorZG5sIAorZG5sIENvcHlyaWdodCAoYykgMTk5NiAtIDIwMDUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPi4KK2RubCAKK2RubCBBbGwgcmlnaHRzIHJlc2VydmVkLgorZG5sIAorZG5sIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlCitkbmwgd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0Citkbmwgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgorZG5sIAorZG5sIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitkbmwgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitkbmwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVCBPRiBUSElSRCBQQVJUWSBSSUdIVFMuIElOCitkbmwgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCitkbmwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCitkbmwgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UKK2RubCBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCitkbmwgCitkbmwgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgYSBjb3B5cmlnaHQgaG9sZGVyIHNoYWxsIG5vdAorZG5sIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncworZG5sIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gb2YgdGhlIGNvcHlyaWdodCBob2xkZXIuCisKK2RubCBDaGVjayBmb3Igc29ja2xlbl90OiBoaXN0b3JpY2FsbHkgb24gQlNEIGl0IGlzIGFuIGludCwgYW5kIGluCitkbmwgUE9TSVggMWcgaXQgaXMgYSB0eXBlIG9mIGl0cyBvd24sIGJ1dCBzb21lIHBsYXRmb3JtcyB1c2UgZGlmZmVyZW50CitkbmwgdHlwZXMgZm9yIHRoZSBhcmd1bWVudCB0byBnZXRzb2Nrb3B0LCBnZXRwZWVybmFtZSwgZXRjLiAgU28gd2UKK2RubCBoYXZlIHRvIHRlc3QgdG8gZmluZCBzb21ldGhpbmcgdGhhdCB3aWxsIHdvcmsuCisKK2RubCBSZW1vdmUgdGhlIEFDX0NIRUNLX1RZUEUgLSBvbiBIUC1VWCBpdCB3b3VsZCBmaW5kIGEgc29ja2xlbl90LCBidXQgdGhlIAorZG5sIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIGdldHNvY2tvcHQgZXQgYWwgd2lsbCBub3QgYWN0dWFsbHkgdXNlIAorZG5sIHNvY2tsZW5fdCBhcmdzIHVubGVzcyBfWE9QRU5fU09VUkNFX0VYVEVOREVEIGlzIGRlZmluZWQuIHNvLCB0aGUKK2RubCBBQ19DSEVDS19UWVBFIHdpbGwgZmluZCBhIHNvY2tsZW5fdCBhbmQgdGhpbmsgYWxsIGlzIGhhcHBpbmVzcyBhbmQKK2RubCBqb3kgd2hlbiB5b3Ugd2lsbCByZWFsbHkgZ2V0IHdhcm5pbmdzIGFib3V0IG1pc21hdGNoIHR5cGVzIC0gdHlwZQorZG5sIG1pc21hdGNoZXMgdGhhdCB3b3VsZCBiZSBwb3NzaWJseSBCYWQgKHRtKSBpbiBhIDY0LWJpdCBjb21waWxlLgorZG5sIHJhaiAyMDA1LTA1LTExIHRoaXMgY2hhbmdlIG1heSBiZSByZWRpc3RyaWJ1dGVkIGF0IHdpbGwgCisKK2RubCBhbHNvLCBhZGRlZCAiZXh0ZXJuIiB0byB0aGUgImludCBnZXRwZWVybmFtZSIgaW4gYW4gYXR0ZW1wdCB0byByZXNvbHZlCitkbmwgYW4gaXNzdWUgd2l0aCB0aGlzIGNvZGUgdW5kZXIgU29sYXJpcyAyLjkuICB0aGlzIHRvbyBtYXkgYmUgCitkbmwgcmVkaXN0cmlidXRlZCBhdCB3aWxsCisKKworQUNfREVGVU4oW09MRF9UWVBFX1NPQ0tMRU5fVF0sCitbCisgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzb2NrbGVuX3QgZXF1aXZhbGVudF0pCisgICAgICBBQ19DQUNIRV9WQUwoW2N1cmxfY3Zfc29ja2xlbl90X2VxdWl2XSwKKyAgICAgIFsKKyAgICAgICAgICMgU3lzdGVtcyBoYXZlIGVpdGhlciAic3RydWN0IHNvY2thZGRyICoiIG9yCisgICAgICAgICAjICJ2b2lkICoiIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gZ2V0cGVlcm5hbWUKKyAgICAgICAgIGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2PQorICAgICAgICAgZm9yIGFyZzIgaW4gInN0cnVjdCBzb2NrYWRkciIgdm9pZDsgZG8KKyAgICAgICAgICAgIGZvciB0IGluIGludCBzaXplX3QgdW5zaWduZWQgbG9uZyAidW5zaWduZWQgbG9uZyIgc29ja2xlbl90OyBkbworICAgICAgICAgICAgICAgQUNfVFJZX0NPTVBJTEUoWworICAgICAgICAgICAgICAgICAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgICAgICAgICAgICAgICAgI2VuZGlmCisKKyAgICAgICAgICAgICAgICAgIGV4dGVybiBpbnQgZ2V0cGVlcm5hbWUgKGludCwgJGFyZzIgKiwgJHQgKik7CisgICAgICAgICAgICAgICBdLFsKKyAgICAgICAgICAgICAgICAgICR0IGxlbjsKKyAgICAgICAgICAgICAgICAgIGdldHBlZXJuYW1lKDAsMCwmbGVuKTsKKyAgICAgICAgICAgICAgIF0sWworICAgICAgICAgICAgICAgICAgY3VybF9jdl9zb2NrbGVuX3RfZXF1aXY9IiR0IgorICAgICAgICAgICAgICAgICAgYnJlYWsgMgorICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgIGRvbmUKKworICAgICAgICAgaWYgdGVzdCAieCRjdXJsX2N2X3NvY2tsZW5fdF9lcXVpdiIgPSB4OyB0aGVuCisgICAgICAgICMgdGFrZSBhIHdpbGQgZ3Vlc3MKKyAgICAgICAgICAgIGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2PSJzb2NrbGVuX3QiCisgICAgICAgICAgICBBQ19NU0dfV0FSTihbQ2Fubm90IGZpbmQgYSB0eXBlIHRvIHVzZSBpbiBwbGFjZSBvZiBzb2NrbGVuX3QsIGd1ZXNzaW5nIHNvY2tsZW5fdF0pCisgICAgICAgICBmaQorICAgICAgXSkKKyAgICAgIEFDX01TR19SRVNVTFQoJGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2KQorICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKG5ldHBlcmZfc29ja2xlbl90LCAkY3VybF9jdl9zb2NrbGVuX3RfZXF1aXYsCisgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZSB0byB1c2UgaW4gcGxhY2Ugb2Ygc29ja2xlbl90IGlmIG5vdCBkZWZpbmVkXSkKK10pCisKKworZG5sICoKK2RubCAqIENvcHlyaWdodCAoYykgMjAwMSAgTW90b3l1a2kgS2FzYWhhcmEKK2RubCAqCitkbmwgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK2RubCAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworZG5sICogYXJlIG1ldDoKK2RubCAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CitkbmwgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCitkbmwgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorZG5sICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorZG5sICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KK2RubCAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCitkbmwgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKK2RubCAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorZG5sICogCitkbmwgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorZG5sICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCitkbmwgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK2RubCAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlNCRQorZG5sICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorZG5sICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK2RubCAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworZG5sICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK2RubCAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitkbmwgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitkbmwgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitkbmwgKgorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBoX2Vycm5vLgorZG5sICoKK0FDX0RFRlVOKFtBQ19ERUNMX0hfRVJSTk9dLAorW0FDX0NBQ0hFX0NIRUNLKGZvciBoX2Vycm5vIGRlY2xhcmF0aW9uIGluIG5ldGRiLmgsIGFjX2N2X2RlY2xfaF9lcnJubywKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8bmV0ZGIuaD5dXSwgW1sKK2hfZXJybm8gPSAwOworXV0pXSxbYWNfY3ZfZGVjbF9oX2Vycm5vPXllc10sW2FjX2N2X2RlY2xfaF9lcnJubz1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl9kZWNsX2hfZXJybm8iID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhfRVJSTk9fREVDTEFSRUQsIDEsCitbRGVmaW5lIHRvIDEgaWYgYGhfZXJybm8nIGlzIGRlY2xhcmVkIGJ5IDxuZXRkYi5oPl0pCitmaV0pCisKK2RubCAqCitkbmwgKiBDb3B5cmlnaHQgKGMpIDIwMDEgIE1vdG95dWtpIEthc2FoYXJhCitkbmwgKgorZG5sICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CitkbmwgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2RubCAqIGFyZSBtZXQ6CitkbmwgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorZG5sICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorZG5sICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKK2RubCAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCitkbmwgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworZG5sICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCitkbmwgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KK2RubCAqIAorZG5sICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKK2RubCAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorZG5sICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitkbmwgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTQkUKK2RubCAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK2RubCAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitkbmwgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK2RubCAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitkbmwgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorZG5sICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorZG5sICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorZG5sICoKKworZG5sICogCitkbmwgKiBDaGVjayBmb3Igc3RydWN0IHNvY2thZGRyX2luNgorZG5sICoKK0FDX0RFRlVOKFtBQ19TVFJVQ1RfU09DS0FERFJfSU42XSwKK1tBQ19DQUNIRV9DSEVDSyhmb3Igc3RydWN0IHNvY2thZGRyX2luNiwgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2luNiwKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dXSwgW1sKK3N0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcmVzczsKK11dKV0sW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9pbjY9eWVzXSxbYWNfY3Zfc3RydWN0X3NvY2thZGRyX2luNj1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfaW42IiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjYsIDEsCitbRGVmaW5lIHRvIDEgaWYgPG5ldGluZXQvaW4uaD4gZGVmaW5lcyBgc3RydWN0IHNvY2thZGRyX2luNiddKQorZmldKQorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQorZG5sICogCitBQ19ERUZVTihbQUNfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VdLAorW0FDX0NBQ0hFX0NIRUNLKGZvciBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSwgYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+XV0sIFtbCitzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyZXNzOworXV0pXSxbYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2U9eWVzXSxbYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2U9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UiID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0UsIDEsCitbRGVmaW5lIHRvIDEgaWYgPG5ldGluZXQvaW4uaD4gZGVmaW5lcyBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnXSkKK2ZpXSkKKworZG5sICoKK2RubCAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMyAgTW90b3l1a2kgS2FzYWhhcmEKK2RubCAqCitkbmwgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK2RubCAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworZG5sICogYXJlIG1ldDoKK2RubCAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CitkbmwgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCitkbmwgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorZG5sICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorZG5sICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KK2RubCAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCitkbmwgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKK2RubCAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorZG5sICogCitkbmwgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorZG5sICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCitkbmwgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK2RubCAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlNCRQorZG5sICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorZG5sICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK2RubCAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworZG5sICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK2RubCAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitkbmwgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitkbmwgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitkbmwgKgorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBzb2NrbGVuX3QuCitkbmwgKiAKK0FDX0RFRlVOKFtBQ19UWVBFX1NPQ0tMRU5fVF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzb2NrbGVuX3RdLCBhY19jdl90eXBlX3NvY2tsZW5fdCwKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl1dLCBbWworc29ja2xlbl90IHNvY2tsZW47CitdXSldLFthY19jdl90eXBlX3NvY2tsZW5fdD15ZXNdLFthY19jdl90eXBlX3NvY2tsZW5fdD1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl90eXBlX3NvY2tsZW5fdCIgIT0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKHNvY2tsZW5fdCwgaW50LAorW0RlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IG9yIDxzeXMvc29ja2V0Lmg+IGRvZXMgbm90IGRlZmluZS5dKQorZmldKQorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBpbl9wb3J0X3QuCitkbmwgKiAKK0FDX0RFRlVOKFtBQ19UWVBFX0lOX1BPUlRfVF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBpbl9wb3J0X3RdLCBhY19jdl90eXBlX2luX3BvcnRfdCwKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dXSwgW1sKK2luX3BvcnRfdCBpbl9wb3J0OworXV0pXSxbYWNfY3ZfdHlwZV9pbl9wb3J0X3Q9eWVzXSxbYWNfY3ZfdHlwZV9pbl9wb3J0X3Q9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9pbl9wb3J0X3QiICE9IHllczsgdGhlbgorICAgIGFjX2N2X3Npbl9wb3J0X3NpemU9dW5rbm93bgorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNpbl9wb3J0KSA9PSBzaXplb2YobG9uZykpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3Npbl9wb3J0X3NpemU9bG9uZ10sW10sW10pCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2luX3BvcnQpID09IHNpemVvZihpbnQpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zaW5fcG9ydF9zaXplPWludF0sW10sW10pCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2luX3BvcnQpID09IHNpemVvZihzaG9ydCkpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3Npbl9wb3J0X3NpemU9c2hvcnRdLFtdLFtdKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNpbl9wb3J0KSA9PSBzaXplb2YoY2hhcikpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3Npbl9wb3J0X3NpemU9Y2hhcl0sW10sW10pCisgICAgaWYgdGVzdCAiJGFjX2N2X3Npbl9wb3J0X3NpemUiID0gdW5rbm93bjsgdGhlbgorCUFDX01TR19FUlJPUihbRmFpbGVkIHRvIGdldCBzaXplIG9mIHNpbl9wb3J0IGluIHN0cnVjdCBzb2NrYWRkcl9pbi5dKQorICAgIGZpCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKGluX3BvcnRfdCwgdW5zaWduZWQgJGFjX2N2X3Npbl9wb3J0X3NpemUsCitbRGVmaW5lIHRvIGB1bnNpZ25lZCBjaGFyJywgYHVuc2lnbmVkIHNob3J0JywgYHVuc2lnbmVkIGludCcgb3IKK2B1bnNpZ25lZCBsb25nJyBhY2NvcmRpbmcgd2l0aCBzaXplIG9mIGBzaW5fcG9ydCcgaW4gYHN0cnVjdCBzb2NrYWRkcl9pbicsCitpZiA8c3lzL3R5cGVzLmg+LCA8c3lzL3NvY2tldC5oPiBvciA8bmV0aW5ldC9pbi5oPiBkb2VzIG5vdCBkZWZpbmUKK2Bpbl9wb3J0X3QnLl0pCitmaV0pCisKK2RubCAqIAorZG5sICogQ2hlY2sgZm9yIHNhX2ZhbWlseV90LgorZG5sICogCitBQ19ERUZVTihbQUNfVFlQRV9TQV9GQU1JTFlfVF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzYV9mYW1pbHlfdF0sIGFjX2N2X3R5cGVfc2FfZmFtaWx5X3QsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dXSwgW1sKK3NhX2ZhbWlseV90IHNhX2ZhbWlseTsKK11dKV0sW2FjX2N2X3R5cGVfc2FfZmFtaWx5X3Q9eWVzXSxbYWNfY3ZfdHlwZV9zYV9mYW1pbHlfdD1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl90eXBlX3NhX2ZhbWlseV90IiAhPSB5ZXM7IHRoZW4KKyAgICBhY19jdl9zYV9mYW1pbHlfc2l6ZT11bmtub3duCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHIgYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNhX2ZhbWlseSkgPT0gc2l6ZW9mKGxvbmcpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zYV9mYW1pbHlfc2l6ZT1sb25nXSxbXSxbXSkKKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkciBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2FfZmFtaWx5KSA9PSBzaXplb2YoaW50KSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2FfZmFtaWx5X3NpemU9aW50XSxbXSxbXSkKKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkciBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2FfZmFtaWx5KSA9PSBzaXplb2Yoc2hvcnQpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zYV9mYW1pbHlfc2l6ZT1zaG9ydF0sW10sW10pCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHIgYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNhX2ZhbWlseSkgPT0gc2l6ZW9mKGNoYXIpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zYV9mYW1pbHlfc2l6ZT1jaGFyXSxbXSxbXSkKKyAgICBpZiB0ZXN0ICIkYWNfY3Zfc2FfZmFtaWx5X3NpemUiID0gdW5rbm93bjsgdGhlbgorCUFDX01TR19FUlJPUihbRmFpbGVkIHRvIGdldCBzaXplIG9mIHNhX2ZhbWlseSBpbiBzdHJ1Y3Qgc29ja2FkZHIuXSkKKyAgICBmaQorICAgIEFDX0RFRklORV9VTlFVT1RFRChzYV9mYW1pbHlfdCwgdW5zaWduZWQgJGFjX2N2X3NhX2ZhbWlseV9zaXplLAorW0RlZmluZSB0byBgdW5zaWduZWQgY2hhcicsIGB1bnNpZ25lZCBzaG9ydCcsIGB1bnNpZ25lZCBpbnQnIG9yCitgdW5zaWduZWQgbG9uZycgYWNjb3JkaW5nIHdpdGggc2l6ZSBvZiBgc2FfZmFtaWx5JyBpbiBgc3RydWN0IHNvY2thZGRyJywKK2lmIDxzeXMvdHlwZXMuaD4gb3IgPHN5cy9zb2NrZXQuaD4gZG9lcyBub3QgZGVmaW5lIGBzYV9mYW1pbHlfdCcuXSkKK2ZpXSkKZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MGIxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9hY2xvY2FsLm00CkBAIC0wLDAgKzEsOTg1IEBACisjIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS4xMS4zIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsCisjIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKyMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuCisKK200X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKK200X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjhdLCwKK1ttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42OC4KK1lvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEl0IG1heSB3b3JrLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8uCitJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KK1RvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMQorCisjIEFNX0FVVE9NQUtFX1ZFUlNJT04oVkVSU0lPTikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBdXRvbWFrZSBYLlkgdHJhY2VzIHRoaXMgbWFjcm8gdG8gZW5zdXJlIGFjbG9jYWwubTQgaGFzIGJlZW4KKyMgZ2VuZXJhdGVkIGZyb20gdGhlIG00IGZpbGVzIGFjY29tcGFueWluZyBBdXRvbWFrZSBYLlkuCisjIChUaGlzIHByaXZhdGUgbWFjcm8gc2hvdWxkIG5vdCBiZSBjYWxsZWQgb3V0c2lkZSB0aGlzIGZpbGUuKQorQUNfREVGVU4oW0FNX0FVVE9NQUtFX1ZFUlNJT05dLAorW2FtX19hcGlfdmVyc2lvbj0nMS4xMScKK2RubCBTb21lIHVzZXJzIGZpbmQgQU1fQVVUT01BS0VfVkVSU0lPTiBhbmQgbWlzdGFrZSBpdCBmb3IgYSB3YXkgdG8KK2RubCByZXF1aXJlIHNvbWUgbWluaW11bSB2ZXJzaW9uLiAgUG9pbnQgdGhlbSB0byB0aGUgcmlnaHQgbWFjcm8uCittNF9pZihbJDFdLCBbMS4xMS4zXSwgW10sCisgICAgICBbQUNfRkFUQUwoW0RvIG5vdCBjYWxsICQwLCB1c2UgQU1fSU5JVF9BVVRPTUFLRShbJDFdKS5dKV0pZG5sCitdKQorCisjIF9BTV9BVVRPQ09ORl9WRVJTSU9OKFZFUlNJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGFjbG9jYWwgdHJhY2VzIHRoaXMgbWFjcm8gdG8gZmluZCB0aGUgQXV0b2NvbmYgdmVyc2lvbi4KKyMgVGhpcyBpcyBhIHByaXZhdGUgbWFjcm8gdG9vLiAgVXNpbmcgbTRfZGVmaW5lIHNpbXBsaWZpZXMKKyMgdGhlIGxvZ2ljIGluIGFjbG9jYWwsIHdoaWNoIGNhbiBzaW1wbHkgaWdub3JlIHRoaXMgZGVmaW5pdGlvbi4KK200X2RlZmluZShbX0FNX0FVVE9DT05GX1ZFUlNJT05dLCBbXSkKKworIyBBTV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9OCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBBTV9BVVRPTUFLRV9WRVJTSU9OIHNvIHRoZXkgY2FuIGJlIHRyYWNlZC4KKyMgVGhpcyBmdW5jdGlvbiBpcyBBQ19SRVFVSVJFZCBieSBBTV9JTklUX0FVVE9NQUtFLgorQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dLAorW0FNX0FVVE9NQUtFX1ZFUlNJT04oWzEuMTEuM10pZG5sCittNF9pZm5kZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLAorICBbbTRfY29weShbbTRfUEFDS0FHRV9WRVJTSU9OXSwgW0FDX0FVVE9DT05GX1ZFUlNJT05dKV0pZG5sCitfQU1fQVVUT0NPTkZfVkVSU0lPTihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSkpXSkKKworIyBBTV9BVVhfRElSX0VYUEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxCisKKyMgRm9yIHByb2plY3RzIHVzaW5nIEFDX0NPTkZJR19BVVhfRElSKFtmb29dKSwgQXV0b2NvbmYgc2V0cworIyAkYWNfYXV4X2RpciB0byBgJHNyY2Rpci9mb28nLiAgSW4gb3RoZXIgcHJvamVjdHMsIGl0IGlzIHNldCB0bworIyBgJHNyY2RpcicsIGAkc3JjZGlyLy4uJywgb3IgYCRzcmNkaXIvLi4vLi4nLgorIworIyBPZiBjb3Vyc2UsIEF1dG9tYWtlIG11c3QgaG9ub3IgdGhpcyB2YXJpYWJsZSB3aGVuZXZlciBpdCBjYWxscyBhCisjIHRvb2wgZnJvbSB0aGUgYXV4aWxpYXJ5IGRpcmVjdG9yeS4gIFRoZSBwcm9ibGVtIGlzIHRoYXQgJHNyY2RpciAoYW5kCisjIHRoZXJlZm9yZSAkYWNfYXV4X2RpciBhcyB3ZWxsKSBjYW4gYmUgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlLAorIyBkZXBlbmRpbmcgb24gaG93IGNvbmZpZ3VyZSBpcyBydW4uICBUaGlzIGlzIHByZXR0eSBhbm5veWluZywgc2luY2UKKyMgaXQgbWFrZXMgJGFjX2F1eF9kaXIgcXVpdGUgdW51c2FibGUgaW4gc3ViZGlyZWN0b3JpZXM6IGluIHRoZSB0b3AKKyMgc291cmNlIGRpcmVjdG9yeSwgYW55IGZvcm0gd2lsbCB3b3JrIGZpbmUsIGJ1dCBpbiBzdWJkaXJlY3RvcmllcyBhCisjIHJlbGF0aXZlIHBhdGggbmVlZHMgdG8gYmUgYWRqdXN0ZWQgZmlyc3QuCisjCisjICRhY19hdXhfZGlyL21pc3NpbmcKKyMgICAgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRpcmVjdG9yeSBpZiAkYWNfYXV4X2RpciBpcyByZWxhdGl2ZQorIyAkdG9wX3NyY2Rpci8kYWNfYXV4X2Rpci9taXNzaW5nCisjICAgIGZhaWxzIGlmICRhY19hdXhfZGlyIGlzIGFic29sdXRlLAorIyAgICBmYWlscyB3aGVuIGNhbGxlZCBmcm9tIGEgc3ViZGlyZWN0b3J5IGluIGEgVlBBVEggYnVpbGQgd2l0aAorIyAgICAgICAgICBhIHJlbGF0aXZlICRhY19hdXhfZGlyCisjCisjIFRoZSByZWFzb24gb2YgdGhlIGxhdHRlciBmYWlsdXJlIGlzIHRoYXQgJHRvcF9zcmNkaXIgYW5kICRhY19hdXhfZGlyCisjIGFyZSBib3RoIHByZWZpeGVkIGJ5ICRzcmNkaXIuICBJbiBhbiBpbi1zb3VyY2UgYnVpbGQgdGhpcyBpcyB1c3VhbGx5CisjIGhhcm1sZXNzIGJlY2F1c2UgJHNyY2RpciBpcyBgLicsIGJ1dCB0aGluZ3Mgd2lsbCBicm9rZSB3aGVuIHlvdQorIyBzdGFydCBhIFZQQVRIIGJ1aWxkIG9yIHVzZSBhbiBhYnNvbHV0ZSAkc3JjZGlyLgorIworIyBTbyB3ZSBjb3VsZCB1c2Ugc29tZXRoaW5nIHNpbWlsYXIgdG8gJHRvcF9zcmNkaXIvJGFjX2F1eF9kaXIvbWlzc2luZywKKyMgaWZmIHdlIHN0cmlwIHRoZSBsZWFkaW5nICRzcmNkaXIgZnJvbSAkYWNfYXV4X2Rpci4gIFRoYXQgd291bGQgYmU6CisjICAgYW1fYXV4X2Rpcj0nXCQodG9wX3NyY2RpcikvJ2BleHByICIkYWNfYXV4X2RpciIgOiAiJHNyY2Rpci8vKlwoLipcKSJgCisjIGFuZCB0aGVuIHdlIHdvdWxkIGRlZmluZSAkTUlTU0lORyBhcworIyAgIE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9taXNzaW5nIgorIyBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFzIE1JU1NJTkcgaXMgbm90IGNhbGxlZCBmcm9tIGNvbmZpZ3VyZSwgYmVjYXVzZQorIyB1bmZvcnR1bmF0ZWx5ICQodG9wX3NyY2RpcikgaGFzIG5vIG1lYW5pbmcgaW4gY29uZmlndXJlLgorIyBIb3dldmVyIHRoZXJlIGFyZSBvdGhlciB2YXJpYWJsZXMsIGxpa2UgQ0MsIHdoaWNoIGFyZSBvZnRlbiB1c2VkIGluCisjIGNvbmZpZ3VyZSwgYW5kIGNvdWxkIHRoZXJlZm9yZSBub3QgdXNlIHRoaXMgImZpeGVkIiAkYWNfYXV4X2Rpci4KKyMKKyMgQW5vdGhlciBzb2x1dGlvbiwgdXNlZCBoZXJlLCBpcyB0byBhbHdheXMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuCisjIGFic29sdXRlIFBBVEguICBUaGUgZHJhd2JhY2sgaXMgdGhhdCB1c2luZyBhYnNvbHV0ZSBwYXRocyBwcmV2ZW50IGEKKyMgY29uZmlndXJlZCB0cmVlIHRvIGJlIG1vdmVkIHdpdGhvdXQgcmVjb25maWd1cmF0aW9uLgorCitBQ19ERUZVTihbQU1fQVVYX0RJUl9FWFBBTkRdLAorW2RubCBSZWx5IG9uIGF1dG9jb25mIHRvIHNldCB1cCBDRFBBVEggcHJvcGVybHkuCitBQ19QUkVSRVEoWzIuNTBdKWRubAorIyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYAorXSkKKworIyBBTV9DT05ESVRJT05BTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NywgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOAorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA5CisKKyMgQU1fQ09ORElUSU9OQUwoTkFNRSwgU0hFTEwtQ09ORElUSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBhIGNvbmRpdGlvbmFsLgorQUNfREVGVU4oW0FNX0NPTkRJVElPTkFMXSwKK1tBQ19QUkVSRVEoMi41MilkbmwKKyBpZmVsc2UoWyQxXSwgW1RSVUVdLCAgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBjb25kaXRpb246ICQxXSldLAorCVskMV0sIFtGQUxTRV0sIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0pXSlkbmwKK0FDX1NVQlNUKFskMV9UUlVFXSlkbmwKK0FDX1NVQlNUKFskMV9GQUxTRV0pZG5sCitfQU1fU1VCU1RfTk9UTUFLRShbJDFfVFJVRV0pZG5sCitfQU1fU1VCU1RfTk9UTUFLRShbJDFfRkFMU0VdKWRubAorbTRfZGVmaW5lKFtfQU1fQ09ORF9WQUxVRV8kMV0sIFskMl0pZG5sCitpZiAkMjsgdGhlbgorICAkMV9UUlVFPQorICAkMV9GQUxTRT0nIycKK2Vsc2UKKyAgJDFfVFJVRT0nIycKKyAgJDFfRkFMU0U9CitmaQorQUNfQ09ORklHX0NPTU1BTkRTX1BSRSgKK1tpZiB0ZXN0IC16ICIkeyQxX1RSVUV9IiAmJiB0ZXN0IC16ICIkeyQxX0ZBTFNFfSI7IHRoZW4KKyAgQUNfTVNHX0VSUk9SKFtbY29uZGl0aW9uYWwgIiQxIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5Ll1dKQorZmldKV0pCisKKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LAorIyAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDEyCisKKyMgVGhlcmUgYXJlIGEgZmV3IGRpcnR5IGhhY2tzIGJlbG93IHRvIGF2b2lkIGxldHRpbmcgYEFDX1BST0dfQ0MnIGJlCisjIHdyaXR0ZW4gaW4gY2xlYXIsIGluIHdoaWNoIGNhc2UgYXV0b21ha2UsIHdoZW4gcmVhZGluZyBhY2xvY2FsLm00LAorIyB3aWxsIHRoaW5rIGl0IHNlZXMgYSAqdXNlKiwgYW5kIHRoZXJlZm9yZSB3aWxsIHRyaWdnZXIgYWxsIGl0J3MKKyMgQyBzdXBwb3J0IG1hY2hpbmVyeS4gIEFsc28gbm90ZSB0aGF0IGl0IG1lYW5zIHRoYXQgYXV0b3NjYW4sIHNlZWluZworIyBDQyBldGMuIGluIHRoZSBNYWtlZmlsZSwgd2lsbCBhc2sgZm9yIGFuIEFDX1BST0dfQ0MgdXNlLi4uCisKKworIyBfQU1fREVQRU5ERU5DSUVTKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIGhvdyB0aGUgY29tcGlsZXIgaW1wbGVtZW50cyBkZXBlbmRlbmN5IGNoZWNraW5nLgorIyBOQU1FIGlzICJDQyIsICJDWFgiLCAiR0NKIiwgb3IgIk9CSkMiLgorIyBXZSB0cnkgYSBmZXcgdGVjaG5pcXVlcyBhbmQgdXNlIHRoYXQgdG8gc2V0IGEgc2luZ2xlIGNhY2hlIHZhcmlhYmxlLgorIworIyBXZSBkb24ndCBBQ19SRVFVSVJFIHRoZSBjb3JyZXNwb25kaW5nIEFDX1BST0dfQ0Mgc2luY2UgdGhlIGxhdHRlciB3YXMKKyMgbW9kaWZpZWQgdG8gaW52b2tlIF9BTV9ERVBFTkRFTkNJRVMoQ0MpOyB3ZSB3b3VsZCBoYXZlIGEgY2lyY3VsYXIKKyMgZGVwZW5kZW5jeSwgYW5kIGdpdmVuIHRoYXQgdGhlIHVzZXIgaXMgbm90IGV4cGVjdGVkIHRvIHJ1biB0aGlzIG1hY3JvLAorIyBqdXN0IHJlbHkgb24gQUNfUFJPR19DQy4KK0FDX0RFRlVOKFtfQU1fREVQRU5ERU5DSUVTXSwKK1tBQ19SRVFVSVJFKFtBTV9TRVRfREVQRElSXSlkbmwKK0FDX1JFUVVJUkUoW0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSlkbmwKK0FDX1JFUVVJUkUoW0FNX01BS0VfSU5DTFVERV0pZG5sCitBQ19SRVFVSVJFKFtBTV9ERVBfVFJBQ0tdKWRubAorCitpZmVsc2UoWyQxXSwgQ0MsICAgW2RlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD1dLAorICAgICAgIFskMV0sIENYWCwgIFtkZXBjYz0iJENYWCIgIGFtX2NvbXBpbGVyX2xpc3Q9XSwKKyAgICAgICBbJDFdLCBPQkpDLCBbZGVwY2M9IiRPQkpDIiBhbV9jb21waWxlcl9saXN0PSdnY2MzIGdjYyddLAorICAgICAgIFskMV0sIFVQQywgIFtkZXBjYz0iJFVQQyIgIGFtX2NvbXBpbGVyX2xpc3Q9XSwKKyAgICAgICBbJDFdLCBHQ0osICBbZGVwY2M9IiRHQ0oiICBhbV9jb21waWxlcl9saXN0PSdnY2MzIGdjYyddLAorICAgICAgICAgICAgICAgICAgIFtkZXBjYz0iJCQxIiAgIGFtX2NvbXBpbGVyX2xpc3Q9XSkKKworQUNfQ0FDSEVfQ0hFQ0soW2RlcGVuZGVuY3kgc3R5bGUgb2YgJGRlcGNjXSwKKyAgICAgICAgICAgICAgIFthbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZV0sCitbaWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbgorICAjIFdlIG1ha2UgYSBzdWJkaXIgYW5kIGRvIHRoZSB0ZXN0cyB0aGVyZS4gIE90aGVyd2lzZSB3ZSBjYW4gZW5kIHVwCisgICMgbWFraW5nIGJvZ3VzIGZpbGVzIHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCBhbmQgbmV2ZXIgcmVtb3ZlLiAgRm9yCisgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCisgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKKyAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorICBta2RpciBjb25mdGVzdC5kaXIKKyAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKKyAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KKyAgY3AgIiRhbV9kZXBjb21wIiBjb25mdGVzdC5kaXIKKyAgY2QgY29uZnRlc3QuZGlyCisgICMgV2Ugd2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVjYXVzZQorICAjIGl0IGhlbHBzIHRvIGRldGVjdCBpbmFwcGxpY2FibGUgZGVwZW5kZW5jeSBtb2Rlcy4gIEZvciBpbnN0YW5jZQorICAjIGJvdGggVHJ1NjQncyBjYyBhbmQgSUNDIHN1cHBvcnQgLU1EIHRvIG91dHB1dCBkZXBlbmRlbmNpZXMgYXMgYQorICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBpbGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBlbmRlbmNpZXMgaW4KKyAgIyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2hpbGUgVHJ1NjQgd2lsbCBwdXQgdGhlbSBpbiB0aGUgb2JqZWN0CisgICMgZGlyZWN0b3J5LgorICBta2RpciBzdWIKKworICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCisgIGlmIHRlc3QgIiRhbV9jb21waWxlcl9saXN0IiA9ICIiOyB0aGVuCisgICAgIGFtX2NvbXBpbGVyX2xpc3Q9YHNlZCAtbiBbJ3MvXiMqXChbYS16QS1aMC05XSpcKSkkL1wxL3AnXSA8IC4vZGVwY29tcGAKKyAgZmkKKyAgYW1fX3VuaXZlcnNhbD1mYWxzZQorICBtNF9jYXNlKFskMV0sIFtDQ10sCisgICAgW2Nhc2UgIiAkZGVwY2MgIiBpbiAjKAorICAgICAqXCAtYXJjaFwgKlwgLWFyY2hcICopIGFtX191bml2ZXJzYWw9dHJ1ZSA7OworICAgICBlc2FjXSwKKyAgICBbQ1hYXSwKKyAgICBbY2FzZSAiICRkZXBjYyAiIGluICMoCisgICAgICpcIC1hcmNoXCAqXCAtYXJjaFwgKikgYW1fX3VuaXZlcnNhbD10cnVlIDs7CisgICAgIGVzYWNdKQorCisgIGZvciBkZXBtb2RlIGluICRhbV9jb21waWxlcl9saXN0OyBkbworICAgICMgU2V0dXAgYSBzb3VyY2Ugd2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVzZSBzb21lIGNvbXBpbGVycworICAgICMgbGlrZSB0byB3cmFwIGxhcmdlIGRlcGVuZGVuY3kgbGlzdHMgb24gY29sdW1uIDgwICh3aXRoIFwpLCBhbmQKKyAgICAjIHdlIHNob3VsZCBub3QgY2hvb3NlIGEgZGVwY29tcCBtb2RlIHdoaWNoIGlzIGNvbmZ1c2VkIGJ5IHRoaXMuCisgICAgIworICAgICMgV2UgbmVlZCB0byByZWNyZWF0ZSB0aGVzZSBmaWxlcyBmb3IgZWFjaCB0ZXN0LCBhcyB0aGUgY29tcGlsZXIgbWF5CisgICAgIyBvdmVyd3JpdGUgc29tZSBvZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRoIG9ic2N1cmUgY29tbWFuZCBsaW5lcy4KKyAgICAjIFRoaXMgaGFwcGVucyBhdCBsZWFzdCB3aXRoIHRoZSBBSVggQyBjb21waWxlci4KKyAgICA6ID4gc3ViL2NvbmZ0ZXN0LmMKKyAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNjsgZG8KKyAgICAgIGVjaG8gJyNpbmNsdWRlICJjb25mdHN0JyRpJy5oIicgPj4gc3ViL2NvbmZ0ZXN0LmMKKyAgICAgICMgVXNpbmcgYDogPiBzdWIvY29uZnRzdCRpLmgnIGNyZWF0ZXMgb25seSBzdWIvY29uZnRzdDEuaCB3aXRoCisgICAgICAjIFNvbGFyaXMgOCdzIHsvdXNyLH0vYmluL3NoLgorICAgICAgdG91Y2ggc3ViL2NvbmZ0c3QkaS5oCisgICAgZG9uZQorICAgIGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1b3RlfSIgPiBjb25mbWYKKworICAgICMgV2UgY2hlY2sgd2l0aCBgLWMnIGFuZCBgLW8nIGZvciB0aGUgc2FrZSBvZiB0aGUgImRhc2htc3Rkb3V0IgorICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBTdW5Qcm8gQysrIGNvbXBpbGVyIGRvZXMgbm90IHByb3Blcmx5CisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5kIHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMuICBBbHNvLCBzb21lIEludGVsCisgICAgIyB2ZXJzaW9ucyBoYWQgdHJvdWJsZSB3aXRoIG91dHB1dCBpbiBzdWJkaXJzCisgICAgYW1fX29iaj1zdWIvY29uZnRlc3QuJHtPQkpFWFQtb30KKyAgICBhbV9fbWludXNfb2JqPSItbyAkYW1fX29iaiIKKyAgICBjYXNlICRkZXBtb2RlIGluCisgICAgZ2NjKQorICAgICAgIyBUaGlzIGRlcG1vZGUgY2F1c2VzIGEgY29tcGlsZXIgcmFjZSBpbiB1bml2ZXJzYWwgbW9kZS4KKyAgICAgIHRlc3QgIiRhbV9fdW5pdmVyc2FsIiA9IGZhbHNlIHx8IGNvbnRpbnVlCisgICAgICA7OworICAgIG5vc2lkZWVmZmVjdCkKKyAgICAgICMgYWZ0ZXIgdGhpcyB0YWcsIG1lY2hhbmlzbXMgYXJlIG5vdCBieSBzaWRlLWVmZmVjdCwgc28gdGhleSdsbAorICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZAorICAgICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgPSB4eWVzOyB0aGVuCisJY29udGludWUKKyAgICAgIGVsc2UKKwlicmVhaworICAgICAgZmkKKyAgICAgIDs7CisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKKyAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAorICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KKyAgICAgIGFtX19vYmo9Y29uZnRlc3QuJHtPQkpFWFQtb30KKyAgICAgIGFtX19taW51c19vYmo9CisgICAgICA7OworICAgIG5vbmUpIGJyZWFrIDs7CisgICAgZXNhYworICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXAorICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9JGFtX19vYmogXAorICAgICAgIGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcCisgICAgICAgJFNIRUxMIC4vZGVwY29tcCAkZGVwY2MgLWMgJGFtX19taW51c19vYmogc3ViL2NvbmZ0ZXN0LmMgXAorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJgorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3QxLmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICAgICBncmVwIHN1Yi9jb25mdHN0Ni5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmCisgICAgICAgZ3JlcCAkYW1fX29iaiBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZSB3YXJuaW5ncworICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLgorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToKKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBmaQorICBkb25lCisKKyAgY2QgLi4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorZWxzZQorICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCitmaQorXSkKK0FDX1NVQlNUKFskMURFUE1PREVdLCBbZGVwbW9kZT0kYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdKQorQU1fQ09ORElUSU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBbCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcCisgICYmIHRlc3QgIiRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzXSkKK10pCisKKworIyBBTV9TRVRfREVQRElSCisjIC0tLS0tLS0tLS0tLS0KKyMgQ2hvb3NlIGEgZGlyZWN0b3J5IG5hbWUgZm9yIGRlcGVuZGVuY3kgZmlsZXMuCisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUworQUNfREVGVU4oW0FNX1NFVF9ERVBESVJdLAorW0FDX1JFUVVJUkUoW0FNX1NFVF9MRUFESU5HX0RPVF0pZG5sCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19sZWFkaW5nX2RvdH1kZXBzIl0pZG5sCitdKQorCisKKyMgQU1fREVQX1RSQUNLCisjIC0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX0RFUF9UUkFDS10sCitbQUNfQVJHX0VOQUJMRShkZXBlbmRlbmN5LXRyYWNraW5nLAorWyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9yc10pCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KKyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKKyAgQU1ERVBCQUNLU0xBU0g9J1wnCisgIGFtX19ub2RlcD0nX25vJworZmkKK0FNX0NPTkRJVElPTkFMKFtBTURFUF0sIFt0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm9dKQorQUNfU1VCU1QoW0FNREVQQkFDS1NMQVNIXSlkbmwKK19BTV9TVUJTVF9OT1RNQUtFKFtBTURFUEJBQ0tTTEFTSF0pZG5sCitBQ19TVUJTVChbYW1fX25vZGVwXSlkbmwKK19BTV9TVUJTVF9OT1RNQUtFKFthbV9fbm9kZXBdKWRubAorXSkKKworIyBHZW5lcmF0ZSBjb2RlIHRvIHNldCB1cCBkZXBlbmRlbmN5IHRyYWNraW5nLiAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOAorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjc2VyaWFsIDUKKworIyBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwKK1t7CisgICMgQXV0b2NvbmYgMi42MiBxdW90ZXMgLS1maWxlIGFyZ3VtZW50cyBmb3IgZXZhbCwgYnV0IG5vdCB3aGVuIGZpbGVzCisgICMgYXJlIGxpc3RlZCB3aXRob3V0IC0tZmlsZS4gIExldCdzIHBsYXkgc2FmZSBhbmQgb25seSBlbmFibGUgdGhlIGV2YWwKKyAgIyBpZiB3ZSBkZXRlY3QgdGhlIHF1b3RpbmcuCisgIGNhc2UgJENPTkZJR19GSUxFUyBpbgorICAqXCcqKSBldmFsIHNldCB4ICIkQ09ORklHX0ZJTEVTIiA7OworICAqKSAgIHNldCB4ICRDT05GSUdfRklMRVMgOzsKKyAgZXNhYworICBzaGlmdAorICBmb3IgbWYKKyAgZG8KKyAgICAjIFN0cmlwIE1GIHNvIHdlIGVuZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgorICAgIG1mPWBlY2hvICIkbWYiIHwgc2VkIC1lICdzLzouKiQvLydgCisgICAgIyBDaGVjayB3aGV0aGVyIHRoaXMgaXMgYW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1ha2VmaWxlIG9yIG5vdC4KKyAgICAjIFdlIHVzZWQgdG8gbWF0Y2ggb25seSB0aGUgZmlsZXMgbmFtZWQgYE1ha2VmaWxlLmluJywgYnV0CisgICAgIyBzb21lIHBlb3BsZSByZW5hbWUgdGhlbTsgc28gaW5zdGVhZCB3ZSBsb29rIGF0IHRoZSBmaWxlIGNvbnRlbnQuCisgICAgIyBHcmVwJ2luZyB0aGUgZmlyc3QgbGluZSBpcyBub3QgZW5vdWdoOiBzb21lIHBlb3BsZSBwb3N0LXByb2Nlc3MKKyAgICAjIGVhY2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9uIHRvcCBvZiBlYWNoIGZpbGUgdG8gc2F5IHNvLgorICAgICMgR3JlcCdpbmcgdGhlIHdob2xlIGZpbGUgaXMgbm90IGdvb2QgZWl0aGVyOiBBSVggZ3JlcCBoYXMgYSBsaW5lCisgICAgIyBsaW1pdCBvZiAyMDQ4LCBidXQgYWxsIHNlZCdzIHdlIGtub3cgaGF2ZSB1bmRlcnN0YW5kIGF0IGxlYXN0IDQwMDAuCisgICAgaWYgc2VkIC1uICdzLF4jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UuKixYLHAnICIkbWYiIHwgZ3JlcCBYID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgZGlycGFydD1gQVNfRElSTkFNRSgiJG1mIilgCisgICAgZWxzZQorICAgICAgY29udGludWUKKyAgICBmaQorICAgICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBESVIsIGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlCisgICAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2UnLgorICAgIERFUERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAvL3AnIDwgIiRtZiJgCisgICAgdGVzdCAteiAiJERFUERJUiIgJiYgY29udGludWUKKyAgICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAiJG1mImAKKyAgICB0ZXN0IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUKKyAgICBhbV9fcXVvdGU9YHNlZCAtbiAncy9eYW1fX3F1b3RlID0gLy9wJyA8ICIkbWYiYAorICAgICMgV2hlbiB1c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0CisgICAgVT1gc2VkIC1uICdzL15VID0gLy9wJyA8ICIkbWYiYAorICAgICMgRmluZCBhbGwgZGVwZW5kZW5jeSBvdXRwdXQgZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZpbGVzIHdpdGgKKyAgICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBpcyB0aGUKKyAgICAjIHNpbXBsZXN0IGFwcHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElSKSB0byBpdHMgYWN0dWFsIHZhbHVlIGluIHRoZQorICAgICMgZXhwYW5zaW9uLgorICAgIGZvciBmaWxlIGluIGBzZWQgLW4gIgorICAgICAgcy9eJGFtX19pbmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJUikuKlwpJGFtX19xdW90ZSInJC9cMS9wJyA8IiRtZiIgfCBcCisJIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdzL1wkVS8nIiRVIicvZydgOyBkbworICAgICAgIyBNYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBleGlzdHMuCisgICAgICB0ZXN0IC1mICIkZGlycGFydC8kZmlsZSIgJiYgY29udGludWUKKyAgICAgIGZkaXI9YEFTX0RJUk5BTUUoWyIkZmlsZSJdKWAKKyAgICAgIEFTX01LRElSX1AoWyRkaXJwYXJ0LyRmZGlyXSkKKyAgICAgICMgZWNobyAiY3JlYXRpbmcgJGRpcnBhcnQvJGZpbGUiCisgICAgICBlY2hvICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSIKKyAgICBkb25lCisgIGRvbmUKK30KK10pIyBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFMKKworCisjIEFNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgbWFjcm8gc2hvdWxkIG9ubHkgYmUgaW52b2tlZCBvbmNlIC0tIHVzZSB2aWEgQUNfUkVRVUlSRS4KKyMKKyMgVGhpcyBjb2RlIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiBhdXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFja2luZworIyBpcyBlbmFibGVkLiAgRklYTUUuICBUaGlzIGNyZWF0ZXMgZWFjaCBgLlAnIGZpbGUgdGhhdCB3ZSB3aWxsCisjIG5lZWQgaW4gb3JkZXIgdG8gYm9vdHN0cmFwIHRoZSBkZXBlbmRlbmN5IGhhbmRsaW5nIGNvZGUuCitBQ19ERUZVTihbQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdLAorW0FDX0NPTkZJR19DT01NQU5EUyhbZGVwZmlsZXNdLAorICAgICBbdGVzdCB4IiRBTURFUF9UUlVFIiAhPSB4IiIgfHwgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwKKyAgICAgW0FNREVQX1RSVUU9IiRBTURFUF9UUlVFIiBhY19hdXhfZGlyPSIkYWNfYXV4X2RpciJdKQorXSkKKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgOAorCisjIEFNX0NPTkZJR19IRUFERVIgaXMgb2Jzb2xldGUuICBJdCBoYXMgYmVlbiByZXBsYWNlZCBieSBBQ19DT05GSUdfSEVBREVSUy4KK0FVX0RFRlVOKFtBTV9DT05GSUdfSEVBREVSXSwgW0FDX0NPTkZJR19IRUFERVJTKCRAKV0pCisKKyMgRG8gYWxsIHRoZSB3b3JrIGZvciBBdXRvbWFrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsCisjIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMTYKKworIyBUaGlzIG1hY3JvIGFjdHVhbGx5IGRvZXMgdG9vIG11Y2guICBTb21lIGNoZWNrcyBhcmUgb25seSBuZWVkZWQgaWYKKyMgeW91ciBwYWNrYWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVhbC4KKworIyBBTV9JTklUX0FVVE9NQUtFKFBBQ0tBR0UsIFZFUlNJT04sIFtOTy1ERUZJTkVdKQorIyBBTV9JTklUX0FVVE9NQUtFKFtPUFRJT05TXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhlIGNhbGwgd2l0aCBQQUNLQUdFIGFuZCBWRVJTSU9OIGFyZ3VtZW50cyBpcyB0aGUgb2xkIHN0eWxlCisjIGNhbGwgKHByZSBhdXRvY29uZi0yLjUwKSwgd2hpY2ggaXMgYmVpbmcgcGhhc2VkIG91dC4gIFBBQ0tBR0UKKyMgYW5kIFZFUlNJT04gc2hvdWxkIG5vdyBiZSBwYXNzZWQgdG8gQUNfSU5JVCBhbmQgcmVtb3ZlZCBmcm9tCisjIHRoZSBjYWxsIHRvIEFNX0lOSVRfQVVUT01BS0UuCisjIFdlIHN1cHBvcnQgYm90aCBjYWxsIHN0eWxlcyBmb3IgdGhlIHRyYW5zaXRpb24uICBBZnRlcgorIyB0aGUgbmV4dCBBdXRvbWFrZSByZWxlYXNlLCBBdXRvY29uZiBjYW4gbWFrZSB0aGUgQUNfSU5JVAorIyBhcmd1bWVudHMgbWFuZGF0b3J5LCBhbmQgdGhlbiB3ZSBjYW4gZGVwZW5kIG9uIGEgbmV3IEF1dG9jb25mCisjIHJlbGVhc2UgYW5kIGRyb3AgdGhlIG9sZCBjYWxsIHN1cHBvcnQuCitBQ19ERUZVTihbQU1fSU5JVF9BVVRPTUFLRV0sCitbQUNfUFJFUkVRKFsyLjYyXSlkbmwKK2RubCBBdXRvY29uZiB3YW50cyB0byBkaXNhbGxvdyBBTV8gbmFtZXMuICBXZSBleHBsaWNpdGx5IGFsbG93CitkbmwgdGhlIG9uZXMgd2UgY2FyZSBhYm91dC4KK200X3BhdHRlcm5fYWxsb3coW15BTV9bQS1aXStGTEFHUyRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAoraWYgdGVzdCAiYGNkICRzcmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIjsgdGhlbgorICAjIFVzZSAtSSQoc3JjZGlyKSBvbmx5IHdoZW4gJChzcmNkaXIpICE9IC4sIHNvIHRoYXQgbWFrZSdzIG91dHB1dAorICAjIGlzIG5vdCBwb2xsdXRlZCB3aXRoIHJlcGVhdGVkICItSS4iCisgIEFDX1NVQlNUKFthbV9faXNyY10sIFsnIC1JJChzcmNkaXIpJ10pX0FNX1NVQlNUX05PVE1BS0UoW2FtX19pc3JjXSlkbmwKKyAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCisgIGlmIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuICJtYWtlIGRpc3RjbGVhbiIgdGhlcmUgZmlyc3RdKQorICBmaQorZmkKKworIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbgorICBpZiAoY3lncGF0aCAtLXZlcnNpb24pID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnCisgIGVsc2UKKyAgICBDWUdQQVRIX1c9ZWNobworICBmaQorZmkKK0FDX1NVQlNUKFtDWUdQQVRIX1ddKQorCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCitkbmwgRGlzdGluZ3Vpc2ggYmV0d2VlbiBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjYWxscy4KK200X2lmdmFsKFskMl0sCitbbTRfaWZ2YWwoWyQzXSwgW19BTV9TRVRfT1BUSU9OKFtuby1kZWZpbmVdKV0pZG5sCisgQUNfU1VCU1QoW1BBQ0tBR0VdLCBbJDFdKWRubAorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWyQyXSldLAorW19BTV9TRVRfT1BUSU9OUyhbJDFdKWRubAorZG5sIERpYWdub3NlIG9sZC1zdHlsZSBBQ19JTklUIHdpdGggbmV3LXN0eWxlIEFNX0FVVE9NQUtFX0lOSVQuCittNF9pZihtNF9pZmRlZihbQUNfUEFDS0FHRV9OQU1FXSwgMSltNF9pZmRlZihbQUNfUEFDS0FHRV9WRVJTSU9OXSwgMSksIDExLCwKKyAgW200X2ZhdGFsKFtBQ19JTklUIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBwYWNrYWdlIGFuZCB2ZXJzaW9uIGFyZ3VtZW50c10pXSlkbmwKKyBBQ19TVUJTVChbUEFDS0FHRV0sIFsnQUNfUEFDS0FHRV9UQVJOQU1FJ10pZG5sCisgQUNfU1VCU1QoW1ZFUlNJT05dLCBbJ0FDX1BBQ0tBR0VfVkVSU0lPTiddKV0pZG5sCisKK19BTV9JRl9PUFRJT04oW25vLWRlZmluZV0sLAorW0FDX0RFRklORV9VTlFVT1RFRChQQUNLQUdFLCAiJFBBQ0tBR0UiLCBbTmFtZSBvZiBwYWNrYWdlXSkKKyBBQ19ERUZJTkVfVU5RVU9URUQoVkVSU0lPTiwgIiRWRVJTSU9OIiwgW1ZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2VdKV0pZG5sCisKKyMgU29tZSB0b29scyBBdXRvbWFrZSBuZWVkcy4KK0FDX1JFUVVJUkUoW0FNX1NBTklUWV9DSEVDS10pZG5sCitBQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pZG5sCitBTV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0pCitBTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9jb25mKQorQU1fTUlTU0lOR19QUk9HKEFVVE9NQUtFLCBhdXRvbWFrZS0ke2FtX19hcGlfdmVyc2lvbn0pCitBTV9NSVNTSU5HX1BST0coQVVUT0hFQURFUiwgYXV0b2hlYWRlcikKK0FNX01JU1NJTkdfUFJPRyhNQUtFSU5GTywgbWFrZWluZm8pCitBQ19SRVFVSVJFKFtBTV9QUk9HX0lOU1RBTExfU0hdKWRubAorQUNfUkVRVUlSRShbQU1fUFJPR19JTlNUQUxMX1NUUklQXSlkbmwKK0FDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5sCisjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgorIyBzb21lIHBsYXRmb3Jtcy4KK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwKK19BTV9JRl9PUFRJT04oW3Rhci11c3Rhcl0sIFtfQU1fUFJPR19UQVIoW3VzdGFyXSldLAorCSAgICAgIFtfQU1fSUZfT1BUSU9OKFt0YXItcGF4XSwgW19BTV9QUk9HX1RBUihbcGF4XSldLAorCQkJICAgICBbX0FNX1BST0dfVEFSKFt2N10pXSldKQorX0FNX0lGX09QVElPTihbbm8tZGVwZW5kZW5jaWVzXSwsCitbQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ0NdLAorCQkgIFtfQU1fREVQRU5ERU5DSUVTKENDKV0sCisJCSAgW2RlZmluZShbQUNfUFJPR19DQ10sCisJCQkgIGRlZm4oW0FDX1BST0dfQ0NdKVtfQU1fREVQRU5ERU5DSUVTKENDKV0pXSlkbmwKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sCisJCSAgW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0sCisJCSAgW2RlZmluZShbQUNfUFJPR19DWFhdLAorCQkJICBkZWZuKFtBQ19QUk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX09CSkNdLAorCQkgIFtfQU1fREVQRU5ERU5DSUVTKE9CSkMpXSwKKwkJICBbZGVmaW5lKFtBQ19QUk9HX09CSkNdLAorCQkJICBkZWZuKFtBQ19QUk9HX09CSkNdKVtfQU1fREVQRU5ERU5DSUVTKE9CSkMpXSldKWRubAorXSkKK19BTV9JRl9PUFRJT04oW3NpbGVudC1ydWxlc10sIFtBQ19SRVFVSVJFKFtBTV9TSUxFTlRfUlVMRVNdKV0pZG5sCitkbmwgVGhlIGBwYXJhbGxlbC10ZXN0cycgZHJpdmVyIG1heSBuZWVkIHRvIGtub3cgYWJvdXQgRVhFRVhULCBzbyBhZGQgdGhlCitkbmwgYGFtX19FWEVFWFQnIGNvbmRpdGlvbmFsIGlmIF9BTV9DT01QSUxFUl9FWEVFWFQgd2FzIHNlZW4uICBUaGlzIG1hY3JvCitkbmwgaXMgaG9va2VkIG9udG8gX0FDX0NPTVBJTEVSX0VYRUVYVCBlYXJseSwgc2VlIGJlbG93LgorQUNfQ09ORklHX0NPTU1BTkRTX1BSRShkbmwKK1ttNF9wcm92aWRlX2lmKFtfQU1fQ09NUElMRVJfRVhFRVhUXSwKKyAgW0FNX0NPTkRJVElPTkFMKFthbV9fRVhFRVhUXSwgW3Rlc3QgLW4gIiRFWEVFWFQiXSldKV0pZG5sCitdKQorCitkbmwgSG9vayBpbnRvIGBfQUNfQ09NUElMRVJfRVhFRVhUJyBlYXJseSB0byBsZWFybiBpdHMgZXhwYW5zaW9uLiAgRG8gbm90CitkbmwgYWRkIHRoZSBjb25kaXRpb25hbCByaWdodCBoZXJlLCBhcyBfQUNfQ09NUElMRVJfRVhFRVhUIG1heSBiZSBmdXJ0aGVyCitkbmwgbWFuZ2xlZCBieSBBdXRvY29uZiBhbmQgcnVuIGluIGEgc2hlbGwgY29uZGl0aW9uYWwgc3RhdGVtZW50LgorbTRfZGVmaW5lKFtfQUNfQ09NUElMRVJfRVhFRVhUXSwKK200X2RlZm4oW19BQ19DT01QSUxFUl9FWEVFWFRdKVttNF9wcm92aWRlKFtfQU1fQ09NUElMRVJfRVhFRVhUXSldKQorCisKKyMgV2hlbiBjb25maWcuc3RhdHVzIGdlbmVyYXRlcyBhIGhlYWRlciwgd2UgbXVzdCB1cGRhdGUgdGhlIHN0YW1wLWggZmlsZS4KKyMgVGhpcyBmaWxlIHJlc2lkZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBjb25maWcgaGVhZGVyCisjIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFyZSBudW1iZXJlZCB0byBoYXZlIGRpZmZlcmVudCBuYW1lcy4KKworIyBBdXRvY29uZiBjYWxscyBfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LICh3aGVuIGRlZmluZWQpIGluIHRoZQorIyBsb29wIHdoZXJlIGNvbmZpZy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28gd2UgY2FuIGdlbmVyYXRlCisjIG91ciBzdGFtcCBmaWxlcyB0aGVyZS4KK0FDX0RFRlVOKFtfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LXSwKK1sjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCitfYW1fYXJnPSQxCitfYW1fc3RhbXBfY291bnQ9MQorZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJzIDo7IGRvCisgIGNhc2UgJF9hbV9oZWFkZXIgaW4KKyAgICAkX2FtX2FyZyB8ICRfYW1fYXJnOiogKQorICAgICAgYnJlYWsgOzsKKyAgICAqICkKKyAgICAgIF9hbV9zdGFtcF9jb3VudD1gZXhwciAkX2FtX3N0YW1wX2NvdW50ICsgMWAgOzsKKyAgZXNhYworZG9uZQorZWNobyAidGltZXN0YW1wIGZvciAkX2FtX2FyZyIgPmBBU19ESVJOQU1FKFsiJF9hbV9hcmciXSlgL3N0YW1wLWhbXSRfYW1fc3RhbXBfY291bnRdKQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxCisKKyMgQU1fUFJPR19JTlNUQUxMX1NICisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgJGluc3RhbGxfc2guCitBQ19ERUZVTihbQU1fUFJPR19JTlNUQUxMX1NIXSwKK1tBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sCitpZiB0ZXN0IHgiJHtpbnN0YWxsX3NofSIgIT0geHNldDsgdGhlbgorICBjYXNlICRhbV9hdXhfZGlyIGluCisgICpcICogfCAqXAkqKQorICAgIGluc3RhbGxfc2g9Ilwke1NIRUxMfSAnJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCciIDs7CisgICopCisgICAgaW5zdGFsbF9zaD0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL2luc3RhbGwtc2giCisgIGVzYWMKK2ZpCitBQ19TVUJTVChpbnN0YWxsX3NoKV0pCisKKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAyCisKKyMgQ2hlY2sgd2hldGhlciB0aGUgdW5kZXJseWluZyBmaWxlLXN5c3RlbSBzdXBwb3J0cyBmaWxlbmFtZXMKKyMgd2l0aCBhIGxlYWRpbmcgZG90LiAgRm9yIGluc3RhbmNlIE1TLURPUyBkb2Vzbid0LgorQUNfREVGVU4oW0FNX1NFVF9MRUFESU5HX0RPVF0sCitbcm0gLXJmIC50c3QgMj4vZGV2L251bGwKK21rZGlyIC50c3QgMj4vZGV2L251bGwKK2lmIHRlc3QgLWQgLnRzdDsgdGhlbgorICBhbV9fbGVhZGluZ19kb3Q9LgorZWxzZQorICBhbV9fbGVhZGluZ19kb3Q9XworZmkKK3JtZGlyIC50c3QgMj4vZGV2L251bGwKK0FDX1NVQlNUKFthbV9fbGVhZGluZ19kb3RdKV0pCisKKyMgQ2hlY2sgdG8gc2VlIGhvdyAnbWFrZScgdHJlYXRzIGluY2x1ZGVzLgkgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA0CisKKyMgQU1fTUFLRV9JTkNMVURFKCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgdG8gc2VlIGhvdyBtYWtlIHRyZWF0cyBpbmNsdWRlcy4KK0FDX0RFRlVOKFtBTV9NQUtFX0lOQ0xVREVdLAorW2FtX21ha2U9JHtNQUtFLW1ha2V9CitjYXQgPiBjb25maW5jIDw8ICdFTkQnCithbV9fZG9pdDoKKwlAZWNobyB0aGlzIGlzIHRoZSBhbV9fZG9pdCB0YXJnZXQKKy5QSE9OWTogYW1fX2RvaXQKK0VORAorIyBJZiB3ZSBkb24ndCBmaW5kIGFuIGluY2x1ZGUgZGlyZWN0aXZlLCBqdXN0IGNvbW1lbnQgb3V0IHRoZSBjb2RlLgorQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlXSkKK2FtX19pbmNsdWRlPSIjIgorYW1fX3F1b3RlPQorX2FtX3Jlc3VsdD1ub25lCisjIEZpcnN0IHRyeSBHTlUgbWFrZSBzdHlsZSBpbmNsdWRlLgorZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNvbmZtZgorIyBJZ25vcmUgYWxsIGtpbmRzIG9mIGFkZGl0aW9uYWwgb3V0cHV0IGZyb20gYG1ha2UnLgorY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbGAgaW4gIygKKyp0aGVcIGFtX19kb2l0XCB0YXJnZXQqKQorICBhbV9faW5jbHVkZT1pbmNsdWRlCisgIGFtX19xdW90ZT0KKyAgX2FtX3Jlc3VsdD1HTlUKKyAgOzsKK2VzYWMKKyMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLgoraWYgdGVzdCAiJGFtX19pbmNsdWRlIiA9ICIjIjsgdGhlbgorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZtZgorICAgY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbGAgaW4gIygKKyAgICp0aGVcIGFtX19kb2l0XCB0YXJnZXQqKQorICAgICBhbV9faW5jbHVkZT0uaW5jbHVkZQorICAgICBhbV9fcXVvdGU9IlwiIgorICAgICBfYW1fcmVzdWx0PUJTRAorICAgICA7OworICAgZXNhYworZmkKK0FDX1NVQlNUKFthbV9faW5jbHVkZV0pCitBQ19TVUJTVChbYW1fX3F1b3RlXSkKK0FDX01TR19SRVNVTFQoWyRfYW1fcmVzdWx0XSkKK3JtIC1mIGNvbmZpbmMgY29uZm1mCitdKQorCisjIEZha2UgdGhlIGV4aXN0ZW5jZSBvZiBwcm9ncmFtcyB0aGF0IEdOVSBtYWludGFpbmVycyB1c2UuICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA4CisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDYKKworIyBBTV9NSVNTSU5HX1BST0coTkFNRSwgUFJPR1JBTSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQU1fTUlTU0lOR19QUk9HXSwKK1tBQ19SRVFVSVJFKFtBTV9NSVNTSU5HX0hBU19SVU5dKQorJDE9JHskMS0iJHthbV9taXNzaW5nX3J1bn0kMiJ9CitBQ19TVUJTVCgkMSldKQorCisKKyMgQU1fTUlTU0lOR19IQVNfUlVOCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgTUlTU0lORyBpZiBub3QgZGVmaW5lZCBzbyBmYXIgYW5kIHRlc3QgaWYgaXQgc3VwcG9ydHMgLS1ydW4uCisjIElmIGl0IGRvZXMsIHNldCBhbV9taXNzaW5nX3J1biB0byB1c2UgaXQsIG90aGVyd2lzZSwgdG8gbm90aGluZy4KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX0hBU19SVU5dLAorW0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwKK0FDX1JFUVVJUkVfQVVYX0ZJTEUoW21pc3NpbmddKWRubAoraWYgdGVzdCB4IiR7TUlTU0lORytzZXR9IiAhPSB4c2V0OyB0aGVuCisgIGNhc2UgJGFtX2F1eF9kaXIgaW4KKyAgKlwgKiB8ICpcCSopCisgICAgTUlTU0lORz0iXCR7U0hFTEx9IFwiJGFtX2F1eF9kaXIvbWlzc2luZ1wiIiA7OworICAqKQorICAgIE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9taXNzaW5nIiA7OworICBlc2FjCitmaQorIyBVc2UgZXZhbCB0byBleHBhbmQgJFNIRUxMCitpZiBldmFsICIkTUlTU0lORyAtLXJ1biB0cnVlIjsgdGhlbgorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgLS1ydW4gIgorZWxzZQorICBhbV9taXNzaW5nX3J1bj0KKyAgQUNfTVNHX1dBUk4oW2BtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nXSkKK2ZpCitdKQorCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxCisKKyMgQU1fUFJPR19NS0RJUl9QCisjIC0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBmb3IgYG1rZGlyIC1wJy4KK0FDX0RFRlVOKFtBTV9QUk9HX01LRElSX1BdLAorW0FDX1BSRVJFUShbMi42MF0pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX01LRElSX1BdKWRubAorZG5sIEF1dG9tYWtlIDEuOCB0byAxLjkuNiB1c2VkIHRvIGRlZmluZSBta2Rpcl9wLiAgV2Ugbm93IHVzZSBNS0RJUl9QLAorZG5sIHdoaWxlIGtlZXBpbmcgYSBkZWZpbml0aW9uIG9mIG1rZGlyX3AgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCitkbmwgQE1LRElSX1BAIGlzIG1hZ2ljOiBBQ19PVVRQVVQgYWRqdXN0cyBpdHMgdmFsdWUgZm9yIGVhY2ggTWFrZWZpbGUuCitkbmwgSG93ZXZlciB3ZSBjYW5ub3QgZGVmaW5lIG1rZGlyX3AgYXMgJChNS0RJUl9QKSBmb3IgdGhlIHNha2Ugb2YKK2RubCBNYWtlZmlsZS5pbnMgdGhhdCBkbyBub3QgZGVmaW5lIE1LRElSX1AsIHNvIHdlIGRvIG91ciBvd24KK2RubCBhZGp1c3RtZW50IHVzaW5nIHRvcF9idWlsZGRpciAod2hpY2ggaXMgZGVmaW5lZCBtb3JlIG9mdGVuIHRoYW4KK2RubCBNS0RJUl9QKS4KK0FDX1NVQlNUKFtta2Rpcl9wXSwgWyIkTUtESVJfUCJdKWRubAorY2FzZSAkbWtkaXJfcCBpbgorICBbW1xcLyRdXSogfCA/OltbXFwvXV0qKSA7OworICAqLyopIG1rZGlyX3A9IlwkKHRvcF9idWlsZGRpcikvJG1rZGlyX3AiIDs7Citlc2FjCitdKQorCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDUKKworIyBfQU1fTUFOR0xFX09QVElPTihOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19BTV9NQU5HTEVfT1BUSU9OXSwKK1tbX0FNX09QVElPTl9dbTRfYnBhdHN1YnN0KCQxLCBbW15hLXpBLVowLTlfXV0sIFtfXSldKQorCisjIF9BTV9TRVRfT1BUSU9OKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCBvcHRpb24gTkFNRS4gIFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzIG9wdGlvbi4KK0FDX0RFRlVOKFtfQU1fU0VUX09QVElPTl0sCitbbTRfZGVmaW5lKF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCAxKV0pCisKKyMgX0FNX1NFVF9PUFRJT05TKE9QVElPTlMpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPUFRJT05TIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgQXV0b21ha2Ugb3B0aW9ucy4KK0FDX0RFRlVOKFtfQU1fU0VUX09QVElPTlNdLAorW200X2ZvcmVhY2hfdyhbX0FNX09wdGlvbl0sIFskMV0sIFtfQU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkKKworIyBfQU1fSUZfT1BUSU9OKE9QVElPTiwgSUYtU0VULCBbSUYtTk9ULVNFVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhlY3V0ZSBJRi1TRVQgaWYgT1BUSU9OIGlzIHNldCwgSUYtTk9ULVNFVCBvdGhlcndpc2UuCitBQ19ERUZVTihbX0FNX0lGX09QVElPTl0sCitbbTRfaWZzZXQoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIFskMl0sIFskM10pXSkKKworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4gICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSwgMjAwMywgMjAwNSwgMjAwOAorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA1CisKKyMgQU1fU0FOSVRZX0NIRUNLCisjIC0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX1NBTklUWV9DSEVDS10sCitbQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmVdKQorIyBKdXN0IGluIGNhc2UKK3NsZWVwIDEKK2VjaG8gdGltZXN0YW1wID4gY29uZnRlc3QuZmlsZQorIyBSZWplY3QgdW5zYWZlIGNoYXJhY3RlcnMgaW4gJHNyY2RpciBvciB0aGUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkKKyMgbmFtZS4gIEFjY2VwdCBzcGFjZSBhbmQgdGFiIG9ubHkgaW4gdGhlIGxhdHRlci4KK2FtX2xmPScKKycKK2Nhc2UgYHB3ZGAgaW4KKyAgKltbXFxcIlwjXCRcJlwnXGAkYW1fbGZdXSopCisgICAgQUNfTVNHX0VSUk9SKFt1bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZV0pOzsKK2VzYWMKK2Nhc2UgJHNyY2RpciBpbgorICAqW1tcXFwiXCNcJFwmXCdcYCRhbV9sZlwgXAldXSopCisgICAgQUNfTVNHX0VSUk9SKFt1bnNhZmUgc3JjZGlyIHZhbHVlOiBgJHNyY2RpciddKTs7Citlc2FjCisKKyMgRG8gYHNldCcgaW4gYSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MKKyMgYXJndW1lbnRzLiAgTXVzdCB0cnkgLUwgZmlyc3QgaW4gY2FzZSBjb25maWd1cmUgaXMgYWN0dWFsbHkgYQorIyBzeW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRoZSBtb2QgdGltZSBvZiBzeW1saW5rcworIyAoZWcgRnJlZUJTRCByZXR1cm5zIHRoZSBtb2QgdGltZSBvZiB0aGUgc3ltbGluaydzIGNvbnRhaW5pbmcKKyMgZGlyZWN0b3J5KS4KK2lmICgKKyAgIHNldCBYIGBscyAtTHQgIiRzcmNkaXIvY29uZmlndXJlIiBjb25mdGVzdC5maWxlIDI+IC9kZXYvbnVsbGAKKyAgIGlmIHRlc3QgIiRbKl0iID0gIlgiOyB0aGVuCisgICAgICAjIC1MIGRpZG4ndCB3b3JrLgorICAgICAgc2V0IFggYGxzIC10ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29uZnRlc3QuZmlsZWAKKyAgIGZpCisgICBybSAtZiBjb25mdGVzdC5maWxlCisgICBpZiB0ZXN0ICIkWypdIiAhPSAiWCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcCisgICAgICAmJiB0ZXN0ICIkWypdIiAhPSAiWCBjb25mdGVzdC5maWxlICRzcmNkaXIvY29uZmlndXJlIjsgdGhlbgorCisgICAgICAjIElmIG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFwcGVuCisgICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBpdCBpbmhlcml0cyBhCisgICAgICAjIGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMgaGFzIGFjdHVhbGx5CisgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuCisgICAgICBBQ19NU0dfRVJST1IoW2xzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KK2FsaWFzIGluIHlvdXIgZW52aXJvbm1lbnRdKQorICAgZmkKKworICAgdGVzdCAiJFsyXSIgPSBjb25mdGVzdC5maWxlCisgICApCit0aGVuCisgICAjIE9rLgorICAgOgorZWxzZQorICAgQUNfTVNHX0VSUk9SKFtuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyEKK0NoZWNrIHlvdXIgc3lzdGVtIGNsb2NrXSkKK2ZpCitBQ19NU0dfUkVTVUxUKHllcyldKQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxCisKKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QKKyMgc3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAgVGhpcyBpcyBlc3BlY2lhbGx5CisjIGFubm95aW5nIGluIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudHMsIHdoZXJlIHRoZSBidWlsZCdzIHN0cmlwCisjIGlzIHVubGlrZWx5IHRvIGhhbmRsZSB0aGUgaG9zdCdzIGJpbmFyaWVzLgorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9ub3IgYSBTVFJJUFBST0cgdmFyaWFibGUsIHNvIHdlCisjIGFsd2F5cyB1c2UgaW5zdGFsbC1zaCBpbiBgbWFrZSBpbnN0YWxsLXN0cmlwJywgYW5kIGluaXRpYWxpemUKKyMgU1RSSVBQUk9HIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBTVFJJUCB2YXJpYWJsZSAoc2V0IGJ5IHRoZSB1c2VyKS4KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU1RSSVBdLAorW0FDX1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sCisjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXIKKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQKKyMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UKKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uCitkbmwgRG9uJ3QgdGVzdCBmb3IgJGNyb3NzX2NvbXBpbGluZyA9IHllcywgYmVjYXVzZSBpdCBtaWdodCBiZSBgbWF5YmUnLgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0gbm87IHRoZW4KKyAgQUNfQ0hFQ0tfVE9PTChbU1RSSVBdLCBbc3RyaXBdLCA6KQorZmkKK0lOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCQoaW5zdGFsbF9zaCkgLWMgLXMiCitBQ19TVUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQorCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAzCisKKyMgX0FNX1NVQlNUX05PVE1BS0UoVkFSSUFCTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmV2ZW50IEF1dG9tYWtlIGZyb20gb3V0cHV0dGluZyBWQVJJQUJMRSA9IEBWQVJJQUJMRUAgaW4gTWFrZWZpbGUuaW4uCisjIFRoaXMgbWFjcm8gaXMgdHJhY2VkIGJ5IEF1dG9tYWtlLgorQUNfREVGVU4oW19BTV9TVUJTVF9OT1RNQUtFXSkKKworIyBBTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQdWJsaWMgc2lzdGVyIG9mIF9BTV9TVUJTVF9OT1RNQUtFLgorQUNfREVGVU4oW0FNX1NVQlNUX05PVE1BS0VdLCBbX0FNX1NVQlNUX05PVE1BS0UoJEApXSkKKworIyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFyYmFsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAyCisKKyMgX0FNX1BST0dfVEFSKEZPUk1BVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwgaW4gZm9ybWF0IEZPUk1BVC4KKyMgRk9STUFUIHNob3VsZCBiZSBvbmUgb2YgYHY3JywgYHVzdGFyJywgb3IgYHBheCcuCisjCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX190YXIpIHRoYXQgaXMgYSBjb21tYW5kCisjIHdyaXRpbmcgdG8gc3Rkb3V0IGEgRk9STUFULXRhcmJhbGwgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5CisjICR0YXJkaXIuCisjICAgICB0YXJkaXI9ZGlyZWN0b3J5ICYmICQoYW1fX3RhcikgPiByZXN1bHQudGFyCisjCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX191bnRhcikgdGhhdCBleHRyYWN0IHN1Y2gKKyMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4KKyMgICAgICQoYW1fX3VudGFyKSA8IHJlc3VsdC50YXIKK0FDX0RFRlVOKFtfQU1fUFJPR19UQVJdLAorWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gIFllcywgaXQncyBzdGlsbCB1c2VkCisjIGluIHRoZSB3aWxkIDotKCAgV2Ugc2hvdWxkIGZpbmQgYSBwcm9wZXIgd2F5IHRvIGRlcHJlY2F0ZSBpdCAuLi4KK0FDX1NVQlNUKFtBTVRBUl0sIFsnJCR7VEFSLXRhcn0nXSkKK200X2lmKFskMV0sIFt2N10sCisgICAgIFthbV9fdGFyPSckJHtUQVItdGFyfSBjaG9mIC0gIiQkdGFyZGlyIicgYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJ10sCisgICAgIFttNF9jYXNlKFskMV0sIFt1c3Rhcl0sLCBbcGF4XSwsCisgICAgICAgICAgICAgIFttNF9mYXRhbChbVW5rbm93biB0YXIgZm9ybWF0XSldKQorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY3JlYXRlIGEgJDEgdGFyIGFyY2hpdmVdKQorIyBMb29wIG92ZXIgYWxsIGtub3duIG1ldGhvZHMgdG8gY3JlYXRlIGEgdGFyIGFyY2hpdmUgdW50aWwgb25lIHdvcmtzLgorX2FtX3Rvb2xzPSdnbnV0YXIgbTRfaWYoWyQxXSwgW3VzdGFyXSwgW3BsYWludGFyXSkgcGF4IGNwaW8gbm9uZScKK19hbV90b29scz0ke2FtX2N2X3Byb2dfdGFyXyQxLSRfYW1fdG9vbHN9CisjIERvIG5vdCBmb2xkIHRoZSBhYm92ZSB0d28gbGluZSBpbnRvIG9uZSwgYmVjYXVzZSBUcnU2NCBzaCBhbmQKKyMgU29sYXJpcyBzaCB3aWxsIG5vdCBncm9rIHNwYWNlcyBpbiB0aGUgcmhzIG9mIGAtJy4KK2ZvciBfYW1fdG9vbCBpbiAkX2FtX3Rvb2xzCitkbworICBjYXNlICRfYW1fdG9vbCBpbgorICBnbnV0YXIpCisgICAgZm9yIF9hbV90YXIgaW4gdGFyIGdudXRhciBndGFyOworICAgIGRvCisgICAgICBBTV9SVU5fTE9HKFskX2FtX3RhciAtLXZlcnNpb25dKSAmJiBicmVhaworICAgIGRvbmUKKyAgICBhbV9fdGFyPSIkX2FtX3RhciAtLWZvcm1hdD1tNF9pZihbJDFdLCBbcGF4XSwgW3Bvc2l4XSwgWyQxXSkgLWNoZiAtICInIiQkdGFyZGlyIicKKyAgICBhbV9fdGFyXz0iJF9hbV90YXIgLS1mb3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkdGFyZGlyIicKKyAgICBhbV9fdW50YXI9IiRfYW1fdGFyIC14ZiAtIgorICAgIDs7CisgIHBsYWludGFyKQorICAgICMgTXVzdCBza2lwIEdOVSB0YXI6IGlmIGl0IGRvZXMgbm90IHN1cHBvcnQgLS1mb3JtYXQ9IGl0IGRvZXNuJ3QgY3JlYXRlCisgICAgIyB1c3RhciB0YXJiYWxsIGVpdGhlci4KKyAgICAodGFyIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxICYmIGNvbnRpbnVlCisgICAgYW1fX3Rhcj0ndGFyIGNoZiAtICIkJHRhcmRpciInCisgICAgYW1fX3Rhcl89J3RhciBjaGYgLSAiJHRhcmRpciInCisgICAgYW1fX3VudGFyPSd0YXIgeGYgLScKKyAgICA7OworICBwYXgpCisgICAgYW1fX3Rhcj0ncGF4IC1MIC14ICQxIC13ICIkJHRhcmRpciInCisgICAgYW1fX3Rhcl89J3BheCAtTCAteCAkMSAtdyAiJHRhcmRpciInCisgICAgYW1fX3VudGFyPSdwYXggLXInCisgICAgOzsKKyAgY3BpbykKKyAgICBhbV9fdGFyPSdmaW5kICIkJHRhcmRpciIgLXByaW50IHwgY3BpbyAtbyAtSCAkMSAtTCcKKyAgICBhbV9fdGFyXz0nZmluZCAiJHRhcmRpciIgLXByaW50IHwgY3BpbyAtbyAtSCAkMSAtTCcKKyAgICBhbV9fdW50YXI9J2NwaW8gLWkgLUggJDEgLWQnCisgICAgOzsKKyAgbm9uZSkKKyAgICBhbV9fdGFyPWZhbHNlCisgICAgYW1fX3Rhcl89ZmFsc2UKKyAgICBhbV9fdW50YXI9ZmFsc2UKKyAgICA7OworICBlc2FjCisKKyAgIyBJZiB0aGUgdmFsdWUgd2FzIGNhY2hlZCwgc3RvcCBub3cuICBXZSBqdXN0IHdhbnRlZCB0byBoYXZlIGFtX190YXIKKyAgIyBhbmQgYW1fX3VudGFyIHNldC4KKyAgdGVzdCAtbiAiJHthbV9jdl9wcm9nX3Rhcl8kMX0iICYmIGJyZWFrCisKKyAgIyB0YXIvdW50YXIgYSBkdW1teSBkaXJlY3RvcnksIGFuZCBzdG9wIGlmIHRoZSBjb21tYW5kIHdvcmtzCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKKyAgbWtkaXIgY29uZnRlc3QuZGlyCisgIGVjaG8gR3JlcE1lID4gY29uZnRlc3QuZGlyL2ZpbGUKKyAgQU1fUlVOX0xPRyhbdGFyZGlyPWNvbmZ0ZXN0LmRpciAmJiBldmFsICRhbV9fdGFyXyA+Y29uZnRlc3QudGFyXSkKKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LnRhcjsgdGhlbgorICAgIEFNX1JVTl9MT0coWyRhbV9fdW50YXIgPGNvbmZ0ZXN0LnRhcl0pCisgICAgZ3JlcCBHcmVwTWUgY29uZnRlc3QuZGlyL2ZpbGUgPi9kZXYvbnVsbCAyPiYxICYmIGJyZWFrCisgIGZpCitkb25lCitybSAtcmYgY29uZnRlc3QuZGlyCisKK0FDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJvZ190YXJfJDFdLCBbYW1fY3ZfcHJvZ190YXJfJDE9JF9hbV90b29sXSkKK0FDX01TR19SRVNVTFQoWyRhbV9jdl9wcm9nX3Rhcl8kMV0pXSkKK0FDX1NVQlNUKFthbV9fdGFyXSkKK0FDX1NVQlNUKFthbV9fdW50YXJdKQorXSkgIyBfQU1fUFJPR19UQVIKKworbTRfaW5jbHVkZShbc3JjL21pc3NpbmcvbTQvc2FsZW4ubTRdKQorbTRfaW5jbHVkZShbYWNpbmNsdWRlLm00XSkKZGlmZiAtLWdpdCBhL2F1dG9nZW4uc2ggYi9hdXRvZ2VuLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJjODM4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9hdXRvZ2VuLnNoCkBAIC0wLDAgKzEsNSBAQAorIyEgL2Jpbi9zaAorCithY2xvY2FsIC1JIHNyYy9taXNzaW5nL200IFwKKyYmIGF1dG9tYWtlICAtLWFkZC1taXNzaW5nIFwKKyYmIGF1dG9jb25mICYmIGF1dG9oZWFkZXIKZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZDUyODFlCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC0wLDAgKzEsMTQ2NiBAQAorIyEgL2Jpbi9zaAorIyBBdHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMDUtMDgtMDMnCisKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKKyMgMDIxMTAtMTMwMSwgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIgPHBlckBib3RobmVyLmNvbT4uCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorIyBkaWZmIGFuZCBhIHByb3Blcmx5IGZvcm1hdHRlZCBDaGFuZ2VMb2cgZW50cnkuCisjCisjIFRoaXMgc2NyaXB0IGF0dGVtcHRzIHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lIHNpbWlsYXIgdG8KKyMgY29uZmlnLnN1Yi4gIElmIGl0IHN1Y2NlZWRzLCBpdCBwcmludHMgdGhlIHN5c3RlbSBuYW1lIG9uIHN0ZG91dCwgYW5kCisjIGV4aXRzIHdpdGggMC4gIE90aGVyd2lzZSwgaXQgZXhpdHMgd2l0aCAxLgorIworIyBUaGUgcGxhbiBpcyB0aGF0IHRoaXMgY2FuIGJlIGNhbGxlZCBieSBjb25maWd1cmUgc2NyaXB0cyBpZiB5b3UKKyMgZG9uJ3Qgc3BlY2lmeSBhbiBleHBsaWNpdCBidWlsZCBzeXN0ZW0gdHlwZS4KKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5hbWUgb2YgdGhlIHN5c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCisgICAgICAgZXhpdCAxIDs7CisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgIGV4aXQgMQorZmkKKwordHJhcCAnZXhpdCAxJyAxIDIgMTUKKworIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQorIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcworIyB0ZW1wb3JhcnkgZmlsZXMgdG8gYmUgY3JlYXRlZCBhbmQsIGFzIHlvdSBjYW4gc2VlIGJlbG93LCBpdCBpcyBhCisjIGhlYWRhY2hlIHRvIGRlYWwgd2l0aCBpbiBhIHBvcnRhYmxlIGZhc2hpb24uCisKKyMgSGlzdG9yaWNhbGx5LCBgQ0NfRk9SX0JVSUxEJyB1c2VkIHRvIGJlIG5hbWVkIGBIT1NUX0NDJy4gV2Ugc3RpbGwKKyMgdXNlIGBIT1NUX0NDJyBpZiBkZWZpbmVkLCBidXQgaXQgaXMgZGVwcmVjYXRlZC4KKworIyBQb3J0YWJsZSB0bXAgZGlyZWN0b3J5IGNyZWF0aW9uIGluc3BpcmVkIGJ5IHRoZSBBdXRvY29uZiB0ZWFtLgorCitzZXRfY2NfZm9yX2J1aWxkPScKK3RyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNvZGUiIDAgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgMSAyIDEzIDE1IDsKKzogJHtUTVBESVI9L3RtcH0gOworIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKKyB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAorIHsgdG1wPSRUTVBESVIvY2ctJCQgJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSAmJiBlY2hvICJXYXJuaW5nOiBjcmVhdGluZyBpbnNlY3VyZSB0ZW1wIGRpcmVjdG9yeSIgPiYyIDsgfSB8fAorIHsgZWNobyAiJG1lOiBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAkVE1QRElSIiA+JjIgOyBleGl0IDEgOyB9IDsKK2R1bW15PSR0bXAvZHVtbXkgOwordG1wZmlsZXM9IiRkdW1teS5jICRkdW1teS5vICRkdW1teS5yZWwgJGR1bW15IiA7CitjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCisgLCwpICAgIGVjaG8gImludCB4OyIgPiAkZHVtbXkuYyA7CisJZm9yIGMgaW4gY2MgZ2NjIGM4OSBjOTkgOyBkbworCSAgaWYgKCRjIC1jIC1vICRkdW1teS5vICRkdW1teS5jKSA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICAgICBDQ19GT1JfQlVJTEQ9IiRjIjsgYnJlYWsgOworCSAgZmkgOworCWRvbmUgOworCWlmIHRlc3QgeCIkQ0NfRk9SX0JVSUxEIiA9IHggOyB0aGVuCisJICBDQ19GT1JfQlVJTEQ9bm9fY29tcGlsZXJfZm91bmQgOworCWZpCisJOzsKKyAsLCopICAgQ0NfRk9SX0JVSUxEPSRDQyA7OworICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1RfQ0MgOzsKK2VzYWMgOyBzZXRfY2NfZm9yX2J1aWxkPSA7JworCisjIFRoaXMgaXMgbmVlZGVkIHRvIGZpbmQgdW5hbWUgb24gYSBQeXJhbWlkIE9TeCB3aGVuIHJ1biBpbiB0aGUgQlNEIHVuaXZlcnNlLgorIyAoZ2hhemlAbm9jLnJ1dGdlcnMuZWR1IDE5OTQtMDgtMjQpCitpZiAodGVzdCAtZiAvLmF0dGJpbi91bmFtZSkgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCVBBVEg9JFBBVEg6Ly5hdHRiaW4gOyBleHBvcnQgUEFUSAorZmkKKworVU5BTUVfTUFDSElORT1gKHVuYW1lIC1tKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfTUFDSElORT11bmtub3duCitVTkFNRV9SRUxFQVNFPWAodW5hbWUgLXIpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9SRUxFQVNFPXVua25vd24KK1VOQU1FX1NZU1RFTT1gKHVuYW1lIC1zKSAyPi9kZXYvbnVsbGAgIHx8IFVOQU1FX1NZU1RFTT11bmtub3duCitVTkFNRV9WRVJTSU9OPWAodW5hbWUgLXYpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9WRVJTSU9OPXVua25vd24KKworIyBOb3RlOiBvcmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBjYXNlIGJyYW5jaGVzIGFyZSBub3QgZXhjbHVzaXZlLgorCitjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgICAgKjpOZXRCU0Q6KjoqKQorCSMgTmV0QlNEIChuYnNkKSB0YXJnZXRzIHNob3VsZCAod2hlcmUgYXBwbGljYWJsZSkgbWF0Y2ggb25lIG9yCisJIyBtb3JlIG9mIHRoZSB0dXBwbGVzOiAqLSotbmV0YnNkZWxmKiwgKi0qLW5ldGJzZGFvdXQqLAorCSMgKi0qLW5ldGJzZGVjb2ZmKiBhbmQgKi0qLW5ldGJzZCouICBGb3IgdGFyZ2V0cyB0aGF0IHJlY2VudGx5CisJIyBzd2l0Y2hlZCB0byBFTEYsICotKi1uZXRic2QqIHdvdWxkIHNlbGVjdCB0aGUgb2xkCisJIyBvYmplY3QgZmlsZSBmb3JtYXQuICBUaGlzIHByb3ZpZGVzIGJvdGggZm9yd2FyZAorCSMgY29tcGF0aWJpbGl0eSBhbmQgYSBjb25zaXN0ZW50IG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIHRoZQorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LgorCSMKKwkjIE5vdGU6IE5ldEJTRCBkb2Vzbid0IHBhcnRpY3VsYXJseSBjYXJlIGFib3V0IHRoZSB2ZW5kb3IKKwkjIHBvcnRpb24gb2YgdGhlIG5hbWUuICBXZSBhbHdheXMgc2V0IGl0IHRvICJ1bmtub3duIi4KKwlzeXNjdGw9InN5c2N0bCAtbiBody5tYWNoaW5lX2FyY2giCisJVU5BTUVfTUFDSElORV9BUkNIPWAoL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIC91c3Ivc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bilgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm1lYikgbWFjaGluZT1hcm1lYi11bmtub3duIDs7CisJICAgIGFybSopIG1hY2hpbmU9YXJtLXVua25vd24gOzsKKwkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKKwkgICAgc2gzZWIpIG1hY2hpbmU9c2gtdW5rbm93biA7OworCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duIDs7CisJZXNhYworCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3JtYXQsIGlmIGl0IGhhcyBzd2l0Y2hlZAorCSMgdG8gRUxGIHJlY2VudGx5LCBvciB3aWxsIGluIHRoZSBmdXR1cmUuCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm0qfGkzODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJfCBncmVwIF9fRUxGX18gPi9kZXYvbnVsbAorCQl0aGVuCisJCSAgICAjIE9uY2UgYWxsIHV0aWxpdGllcyBjYW4gYmUgRUNPRkYgKG5ldGJzZGVjb2ZmKSBvciBhLm91dCAobmV0YnNkYW91dCkuCisJCSAgICAjIFJldHVybiBuZXRic2QgZm9yIGVpdGhlci4gIEZJWD8KKwkJICAgIG9zPW5ldGJzZAorCQllbHNlCisJCSAgICBvcz1uZXRic2RlbGYKKwkJZmkKKwkJOzsKKwkgICAgKikKKwkgICAgICAgIG9zPW5ldGJzZAorCQk7OworCWVzYWMKKwkjIFRoZSBPUyByZWxlYXNlCisJIyBEZWJpYW4gR05VL05ldEJTRCBtYWNoaW5lcyBoYXZlIGEgZGlmZmVyZW50IHVzZXJsYW5kLCBhbmQKKwkjIHRodXMsIG5lZWQgYSBkaXN0aW5jdCB0cmlwbGV0LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBuZWVkCisJIyBrZXJuZWwgdmVyc2lvbiBpbmZvcm1hdGlvbiwgc28gaXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggYQorCSMgc3VpdGFibGUgdGFnLCBpbiB0aGUgc3R5bGUgb2YgbGludXgtZ251LgorCWNhc2UgIiR7VU5BTUVfVkVSU0lPTn0iIGluCisJICAgIERlYmlhbiopCisJCXJlbGVhc2U9Jy1nbnUnCisJCTs7CisJICAgICopCisJCXJlbGVhc2U9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy1fXS4qL1wuLydgCisJCTs7CisJZXNhYworCSMgU2luY2UgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgorCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgorCSMgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KKwllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSIKKwlleGl0IDs7CisgICAgKjpPcGVuQlNEOio6KikKKwlVTkFNRV9NQUNISU5FX0FSQ0g9YGFyY2ggfCBzZWQgJ3MvT3BlbkJTRC4vLydgCisJZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOmVra29CU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1hY3BwYzpNaXJCU0Q6KjoqKQorCWVjaG8gcG93ZXJwcGMtdW5rbm93bi1taXJic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6TWlyQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1taXJic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGFscGhhOk9TRjE6KjoqKQorCWNhc2UgJFVOQU1FX1JFTEVBU0UgaW4KKwkqNC4wKQorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAorCQk7OworCSo1LiopCisJICAgICAgICBVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAorCQk7OworCWVzYWMKKwkjIEFjY29yZGluZyB0byBDb21wYXEsIC91c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgorCSMgT1NGLzEgYW5kIFRydTY0IHN5c3RlbXMgcHJvZHVjZWQgc2luY2UgMTk5NS4gIEkgaG9wZSB0aGF0CisJIyBjb3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQorCSMgdHlwZXMgdGhyb3VnaCBoZWFkIC1uIDEsIHNvIHdlIG9ubHkgZGV0ZWN0IHRoZSB0eXBlIG9mIENQVSAwLgorCUFMUEhBX0NQVV9UWVBFPWAvdXNyL3NiaW4vcHNyaW5mbyAtdiB8IHNlZCAtbiAtZSAncy9eICBUaGUgYWxwaGEgXCguKlwpIHByb2Nlc3Nvci4qJC9cMS9wJyB8IGhlYWQgLW4gMWAKKwljYXNlICIkQUxQSEFfQ1BVX1RZUEUiIGluCisJICAgICJFVjQgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY0LjUgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiTENBNCAoMjEwNjYvMjEwNjgpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CisJICAgICJFVjUgKDIxMTY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1IiA7OworCSAgICAiRVY1LjYgKDIxMTY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NTYiIDs7CisJICAgICJFVjUuNiAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU2IiA7OworCSAgICAiRVY1LjcgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NyIgOzsKKwkgICAgIkVWNiAoMjEyNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjYiIDs7CisJICAgICJFVjYuNyAoMjEyNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2NyIgOzsKKwkgICAgIkVWNi44Q0IgKDIxMjY0QykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOEFMICgyMTI2NEIpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhDWCAoMjEyNjREKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi45QSAoMjEyNjQvRVY2OUEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY5IiA7OworCSAgICAiRVY3ICgyMTM2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NyIgOzsKKwkgICAgIkVWNy45ICgyMTM2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjc5IiA7OworCWVzYWMKKwkjIEEgUG4ubiB2ZXJzaW9uIGlzIGEgcGF0Y2hlZCB2ZXJzaW9uLgorCSMgQSBWbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCB2ZXJzaW9uLgorCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCBmaWVsZCB0ZXN0IHZlcnNpb24uCisJIyBBIFhuLm4gdmVyc2lvbiBpcyBhbiB1bnJlbGVhc2VkIGV4cGVyaW1lbnRhbCBiYXNlbGV2ZWwuCisJIyAxLjIgdXNlcyAiMS4yIiBmb3IgdW5hbWUgLXIuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisJZXhpdCA7OworICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiopCisJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPworCSMgU2hvdWxkIHdlIGNoYW5nZSBVTkFNRV9NQUNISU5FIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5hbWUgaW5zdGVhZAorCSMgb2YgdGhlIHNwZWNpZmljIEFscGhhIG1vZGVsPworCWVjaG8gYWxwaGEtcGMtaW50ZXJpeAorCWV4aXQgOzsKKyAgICAyMTA2NDpXaW5kb3dzX05UOjUwOjMpCisJZWNobyBhbHBoYS1kZWMtd2lubnQzLjUKKwlleGl0IDs7CisgICAgQW1pZ2EqOlVOSVhfU3lzdGVtX1Y6NC4wOiopCisJZWNobyBtNjhrLXVua25vd24tc3lzdjQKKwlleGl0IDs7CisgICAgKjpbQWFdbWlnYVtPb11bU3NdOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hbWlnYW9zCisJZXhpdCA7OworICAgICo6W01tXW9ycGhbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbW9ycGhvcworCWV4aXQgOzsKKyAgICAqOk9TLzM5MDoqOiopCisJZWNobyBpMzcwLWlibS1vcGVuZWRpdGlvbgorCWV4aXQgOzsKKyAgICAqOnovVk06KjoqKQorCWVjaG8gczM5MC1pYm0tenZtb2UKKwlleGl0IDs7CisgICAgKjpPUzQwMDoqOiopCisgICAgICAgIGVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwlleGl0IDs7CisgICAgYXJtOlJJU0MqOjEuWzAxMl0qOip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQorCWVjaG8gYXJtLWFjb3JuLXJpc2NpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXJtOnJpc2NvczoqOip8YXJtOlJJU0NPUzoqOiopCisJZWNobyBhcm0tdW5rbm93bi1yaXNjb3MKKwlleGl0IDs7CisgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKKwllY2hvIGhwcGExLjEtaGl0YWNoaS1oaXV4bXBwCisJZXhpdCA7OworICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6KjoqKQorCSMgYWtlZUB3cGRpczAzLndwYWZiLmFmLm1pbCAoRWFybGUgRi4gQWtlKSBjb250cmlidXRlZCBNSVMgYW5kIE5JTEUuCisJaWYgdGVzdCAiYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAiID0gYXR0IDsgdGhlbgorCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1zeXN2MworCWVsc2UKKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtYnNkCisJZmkKKwlleGl0IDs7CisgICAgTklMRSo6KjoqOmRjb3N4KQorCWVjaG8gcHlyYW1pZC1weXJhbWlkLXN2cjQKKwlleGl0IDs7CisgICAgRFJTPzYwMDA6dW5peDo0LjA6NiopCisJZWNobyBzcGFyYy1pY2wtbng2CisJZXhpdCA7OworICAgIERSUz82MDAwOlVOSVhfU1Y6NC4yKjo3KiB8IERSUz82MDAwOmlzaXM6NC4yKjo3KikKKwljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KKwkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OworCWVzYWMgOzsKKyAgICBzdW40SDpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIGk4NnBjOlN1bk9TOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo2KjoqKQorCSMgQWNjb3JkaW5nIHRvIGNvbmZpZy5zdWIsIHRoaXMgaXMgdGhlIHByb3BlciB3YXkgdG8gY2Fub25pY2FsaXplCisJIyBTdW5PUzYuICBIYXJkIHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKKwkjIGl0J3MgbGlrZWx5IHRvIGJlIG1vcmUgbGlrZSBTb2xhcmlzIHRoYW4gU3VuT1M0LgorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMzYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOio6KikKKwljYXNlICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCisJICAgIFNlcmllcyp8UzQqKQorCQlVTkFNRV9SRUxFQVNFPWB1bmFtZSAtdmAKKwkJOzsKKwllc2FjCisJIyBKYXBhbmVzZSBMYW5ndWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgorCWVjaG8gc3BhcmMtc3VuLXN1bm9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fLydgCisJZXhpdCA7OworICAgIHN1bjMqOlN1bk9TOio6KikKKwllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzdW4qOio6NC4yQlNEOiopCisJVU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmludCBzdWJzdHIoJDUsMSwzKX0nKSAyPi9kZXYvbnVsbGAKKwl0ZXN0ICJ4JHtVTkFNRV9SRUxFQVNFfSIgPSAieCIgJiYgVU5BTUVfUkVMRUFTRT0zCisJY2FzZSAiYC9iaW4vYXJjaGAiIGluCisJICAgIHN1bjMpCisJCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJICAgIHN1bjQpCisJCWVjaG8gc3BhcmMtc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCQk7OworCWVzYWMKKwlleGl0IDs7CisgICAgYXVzaHA6U3VuT1M6KjoqKQorCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQgaXMgYSBsaXR0bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQorICAgICMgY2FuIGJlIHZpcnR1YWxseSBldmVyeXRoaW5nIChldmVyeXRoaW5nIHdoaWNoIGlzIG5vdAorICAgICMgImF0YXJpc3QiIG9yICJhdGFyaXN0ZSIgYXQgbGVhc3Qgc2hvdWxkIGhhdmUgYSBwcm9jZXNzb3IKKyAgICAjID4gbTY4MDAwKS4gIFRoZSBzeXN0ZW0gbmFtZSByYW5nZXMgZnJvbSAiTWlOVCIgb3ZlciAiRnJlZU1pTlQiCisgICAgIyB0byB0aGUgbG93ZXJjYXNlIHZlcnNpb24gIm1pbnQiIChvciAiZnJlZW1pbnQiKS4gIEZpbmFsbHkKKyAgICAjIHRoZSBzeXN0ZW0gbmFtZSAiVE9TIiBkZW5vdGVzIGEgc3lzdGVtIHdoaWNoIGlzIGFjdHVhbGx5IG5vdAorICAgICMgTWlOVC4gIEJ1dCBNaU5UIGlzIGRvd253YXJkIGNvbXBhdGlibGUgdG8gVE9TLCBzbyB0aGlzIHNob3VsZAorICAgICMgYmUgbm8gcHJvYmxlbS4KKyAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKyAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGF0YXJpKjoqTWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKyAgICAgICAgZXhpdCA7OworICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWlsYW4qOipNaU5UOio6KiB8IG1pbGFuKjoqbWludDoqOiogfCAqbWlsYW4qOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKyAgICAgICAgZXhpdCA7OworICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKKyAgICAgICAgZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9CisgICAgICAgIGV4aXQgOzsKKyAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKKyAgICAgICAgZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KKyAgICAgICAgZXhpdCA7OworICAgIG02OGs6bWFjaHRlbjoqOiopCisJZWNobyBtNjhrLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHBvd2VycGM6bWFjaHRlbjoqOiopCisJZWNobyBwb3dlcnBjLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFJJU0MqOk1hY2g6KjoqKQorCWVjaG8gbWlwcy1kZWMtbWFjaF9ic2Q0LjMKKwlleGl0IDs7CisgICAgUklTQyo6VUxUUklYOio6KikKKwllY2hvIG1pcHMtZGVjLXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgVkFYKjpVTFRSSVgqOio6KikKKwllY2hvIHZheC1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAyMDIwOkNMSVg6KjoqIHwgMjQzMDpDTElYOio6KikKKwllY2hvIGNsaXBwZXItaW50ZXJncmFwaC1jbGl4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaXBzOio6KjpVTUlQUyB8IG1pcHM6KjoqOlJJU0NvcykKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKyNpZmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBmb3IgcHJpbnRmKCkgcHJvdG90eXBlICovCisJaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyNlbHNlCisJaW50IG1haW4gKGFyZ2MsIGFyZ3YpIGludCBhcmdjOyBjaGFyICphcmd2W107IHsKKyNlbmRpZgorCSNpZiBkZWZpbmVkIChob3N0X21pcHMpICYmIGRlZmluZWQgKE1JUFNFQikKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TWVNWKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3lzdlxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChTWVNUWVBFX1NWUjQpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzdnI0XG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfQlNENDMpIHx8IGRlZmluZWQoU1lTVFlQRV9CU0QpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNic2RcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjZW5kaWYKKwkgIGV4aXQgKC0xKTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJgorCSAgZHVtbXlhcmc9YGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdzL1woWzAtOV0qXCkuKi9cMS9wJ2AgJiYKKwkgIFNZU1RFTV9OQU1FPWAkZHVtbXkgJGR1bW15YXJnYCAmJgorCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hvIG1pcHMtbWlwcy1yaXNjb3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE1vdG9yb2xhOlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtbW90b3JvbGEtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTW90b3JvbGE6Kjo0LjM6UEw4LSopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOio6KjpQb3dlck1BWF9PUyB8IFN5bmVyZ3k6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTmlnaHRfSGF3azpQb3dlcl9VTklYOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VydW5peAorCWV4aXQgOzsKKyAgICBtODhrOkNYL1VYOjcqOiopCisJZWNobyBtODhrLWhhcnJpcy1jeHV4NworCWV4aXQgOzsKKyAgICBtODhrOio6NCo6UjQqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2NAorCWV4aXQgOzsKKyAgICBtODhrOio6Myo6UjMqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgOzsKKyAgICBBVmlpT046ZGd1eDoqOiopCisgICAgICAgICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisgICAgICAgIFVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJaWYgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODEwMCBdIHx8IFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMTAgXQorCXRoZW4KKwkgICAgaWYgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSBtODhrZGd1eGVsZnggXSB8fCBcCisJICAgICAgIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0geCBdCisJICAgIHRoZW4KKwkJZWNobyBtODhrLWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CisJICAgIGVsc2UKKwkJZWNobyBtODhrLWRnLWRndXhiY3Mke1VOQU1FX1JFTEVBU0V9CisJICAgIGZpCisJZWxzZQorCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwlmaQorIAlleGl0IDs7CisgICAgTTg4KjpEb2xwaGluT1M6KjoqKQkjIERvbHBoaW5PUyAoU1ZSMykKKwllY2hvIG04OGstZG9scGhpbi1zeXN2MworCWV4aXQgOzsKKyAgICBNODgqOio6UjMqOiopCisJIyBEZWx0YSA4OGsgc3lzdGVtIHJ1bm5pbmcgU1ZSMworCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgOzsKKyAgICBYRDg4KjoqOio6KikgIyBUZWt0cm9uaXggWEQ4OCBzeXN0ZW0gcnVubmluZyBVVGVrViAoU1ZSMykKKwllY2hvIG04OGstdGVrdHJvbml4LXN5c3YzCisJZXhpdCA7OworICAgIFRlazQzWzAtOV1bMC05XTpVVGVrOio6KikgIyBUZWt0cm9uaXggNDMwMCBzeXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCisJZWNobyBtNjhrLXRla3Ryb25peC1ic2QKKwlleGl0IDs7CisgICAgKjpJUklYKjoqOiopCisJZWNobyBtaXBzLXNnaS1pcml4YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fL2cnYAorCWV4aXQgOzsKKyAgICA/Pz8/Pz8/PzpBSVg/OlsxMl0uMToyKSAgICMgQUlYIDIuMi4xIG9yIEFJWCAyLjEuMSBpcyBSVC9QQyBBSVguCisJZWNobyByb21wLWlibS1haXggICAgICMgdW5hbWUgLW0gZ2l2ZXMgYW4gOCBoZXgtY29kZSBDUFUgaWQKKwlleGl0IDs7ICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2ZXMgJ0FJWCAnCisgICAgaSo4NjpBSVg6KjoqKQorCWVjaG8gaTM4Ni1pYm0tYWl4CisJZXhpdCA7OworICAgIGlhNjQ6QUlYOio6KikKKwlpZiBbIC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6MjozKQorCWlmIGdyZXAgYm9zMzI1IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCXNlZCAncy9eCQkvLycgPDwgRU9GID4kZHVtbXkuYworCQkjaW5jbHVkZSA8c3lzL3N5c3RlbWNmZy5oPgorCisJCW1haW4oKQorCQkJeworCQkJaWYgKCFfX3Bvd2VyX3BjKCkpCisJCQkJZXhpdCgxKTsKKwkJCXB1dHMoInBvd2VycGMtaWJtLWFpeDMuMi41Iik7CisJCQlleGl0KDApOworCQkJfQorRU9GCisJCWlmICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgCisJCXRoZW4KKwkJCWVjaG8gIiRTWVNURU1fTkFNRSIKKwkJZWxzZQorCQkJZWNobyByczYwMDAtaWJtLWFpeDMuMi41CisJCWZpCisJZWxpZiBncmVwIGJvczMyNCAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJZWNobyByczYwMDAtaWJtLWFpeDMuMi40CisJZWxzZQorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yCisJZmkKKwlleGl0IDs7CisgICAgKjpBSVg6KjpbNDVdKQorCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJQk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDs7CisgICAgaWJtcnQ6NC40QlNEOip8cm9tcC1pYm06QlNEOiopCisJZWNobyByb21wLWlibS1ic2Q0LjQKKwlleGl0IDs7CisgICAgaWJtcnQ6KkJTRDoqfHJvbXAtaWJtOkJTRDoqKSAgICAgICAgICAgICMgY292ZXJzIFJUL1BDIEJTRCBhbmQKKwllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCisJZXhpdCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXBvcnQ6IHJvbXAtaWJtIEJTRCA0LjMKKyAgICAqOkJPU1g6KjoqKQorCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAorCWV4aXQgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5c3YzCisJZXhpdCA7OworICAgIDkwMDAvWzM0XT8/OjQuM2JzZDoxLio6KikKKwllY2hvIG02OGstaHAtYnNkCisJZXhpdCA7OworICAgIGhwMzAwOjQuNEJTRDoqOiogfCA5MDAwL1szNF0/Pzo0LjNic2Q6Mi4qOiopCisJZWNobyBtNjhrLWhwLWJzZDQuNAorCWV4aXQgOzsKKyAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAwMC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkgICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCisgICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgICAgICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8IEVPRiA+JGR1bW15LmMKKworICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQorICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KKworICAgICAgICAgICAgICBpbnQgbWFpbiAoKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKyAgICAgICAgICAgICAgICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKyAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKKyAgICAgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgorICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisgICAgICAgICAgICAgIAkgICAgc3dpdGNoIChiaXRzKQorICAgICAgICAgICAgICAJCXsKKyAgICAgICAgICAgICAgCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisgICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJCX0gYnJlYWs7CisgICAgICAgICAgICAgICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisgICAgICAgICAgICAgIAkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICBleGl0ICgwKTsKKyAgICAgICAgICAgICAgfQorRU9GCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0KKwl0aGVuCisJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKworCSAgICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZworCSAgICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJuZWwgYW5kIGEgY29tcGlsZXIKKwkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05VIGFuZCBIUCB1c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKKwkgICAgIworCSAgICAjICQgQ0NfRk9SX0JVSUxEPWNjIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTIuMHctaHAtaHB1eDExLjIzCisJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTY0LWhwLWhwdXgxMS4yMworCisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCBfX0xQNjRfXyA+L2Rldi9udWxsCisJICAgIHRoZW4KKwkJSFBfQVJDSD0iaHBwYTIuMHciCisJICAgIGVsc2UKKwkJSFBfQVJDSD0iaHBwYTY0IgorCSAgICBmaQorCWZpCisJZWNobyAke0hQX0FSQ0h9LWhwLWhwdXgke0hQVVhfUkVWfQorCWV4aXQgOzsKKyAgICBpYTY0OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwllY2hvIGlhNjQtaHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCA7OworICAgIDMwNTAqOkhJLVVYOio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaW5jbHVkZSA8dW5pc3RkLmg+CisJaW50CisJbWFpbiAoKQorCXsKKwkgIGxvbmcgY3B1ID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKwkgIC8qIFRoZSBvcmRlciBtYXR0ZXJzLCBiZWNhdXNlIENQVV9JU19IUF9NQzY4SyBlcnJvbmVvdXNseSByZXR1cm5zCisJICAgICB0cnVlIGZvciBDUFVfUEFfUklTQzFfMC4gIENQVV9JU19QQV9SSVNDIHJldHVybnMgY29ycmVjdAorCSAgICAgcmVzdWx0cywgaG93ZXZlci4gICovCisJICBpZiAoQ1BVX0lTX1BBX1JJU0MgKGNwdSkpCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKGNwdSkKKwkJeworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzJfMDogcHV0cyAoImhwcGEyLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGRlZmF1bHQ6IHB1dHMgKCJocHBhLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJfQorCSAgICB9CisJICBlbHNlIGlmIChDUFVfSVNfSFBfTUM2OEsgKGNwdSkpCisJICAgIHB1dHMgKCJtNjhrLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZWxzZSBwdXRzICgidW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGV4aXQgKDApOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVjaG8gdW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIKKwlleGl0IDs7CisgICAgOTAwMC83Pz86NC4zYnNkOio6KiB8IDkwMDAvOD9bNzldOjQuM2JzZDoqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1ic2QKKwlleGl0IDs7CisgICAgOTAwMC84Pz86NC4zYnNkOio6KikKKwllY2hvIGhwcGExLjAtaHAtYnNkCisJZXhpdCA7OworICAgICo5Pz8qOk1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKwllY2hvIGhwcGExLjAtaHAtbXBlaXgKKwlleGl0IDs7CisgICAgaHA3Pz86T1NGMToqOiogfCBocDg/Wzc5XTpPU0YxOio6KiApCisJZWNobyBocHBhMS4xLWhwLW9zZgorCWV4aXQgOzsKKyAgICBocDg/PzpPU0YxOio6KikKKwllY2hvIGhwcGExLjAtaHAtb3NmCisJZXhpdCA7OworICAgIGkqODY6T1NGMToqOiopCisJaWYgWyAteCAvdXNyL3NiaW4vc3lzdmVyc2lvbiBdIDsgdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxbWsKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjEKKwlmaQorCWV4aXQgOzsKKyAgICBwYXJpc2MqOkxpdGVzKjoqOiopCisJZWNobyBocHBhMS4xLWhwLWxpdGVzCisJZXhpdCA7OworICAgIEMxKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCisJZWNobyBjMS1jb252ZXgtYnNkCisgICAgICAgIGV4aXQgOzsKKyAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMyKjoqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKyAgICAgICAgZXhpdCA7OworICAgIEMzNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzNCo6KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisgICAgICAgIGV4aXQgOzsKKyAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCisJZWNobyBjMzgtY29udmV4LWJzZAorICAgICAgICBleGl0IDs7CisgICAgQzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDNCo6KikKKwllY2hvIGM0LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCA7OworICAgIENSQVkqWS1NUDoqOio6KikKKwllY2hvIHltcC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKltBLVpdOTA6KjoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBcCisJfCBzZWQgLWUgJ3MvQ1JBWS4qXChbQS1aXTkwXCkvXDEvJyBcCisJICAgICAgLWUgeS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8gXAorCSAgICAgIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUUzoqOio6KikKKwllY2hvIHQ5MC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlQzRToqOio6KikKKwllY2hvIGFscGhhZXY1LWNyYXktdW5pY29zbWske1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpTVjE6KjoqOiopCisJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgKjpVTklDT1MvbXA6KjoqKQorCWVjaG8gY3JheW52LWNyYXktdW5pY29zbXAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCisJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKyAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAgICBlY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorICAgICAgICBleGl0IDs7CisgICAgNTAwMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisgICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCisgICAgICAgIGVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDs7CisgICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHNwYXJjKjpCU0QvT1M6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkJTRC9PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpGcmVlQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYAorCWV4aXQgOzsKKyAgICBpKjpDWUdXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBpKjpNSU5HVyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluZ3czMgorCWV4aXQgOzsKKyAgICBpKjp3aW5kb3dzMzIqOiopCisgICAgCSMgdW5hbWUgLW0gaW5jbHVkZXMgIi1wYyIgb24gdGhpcyBzeXN0ZW0uCisgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOlBXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCisJZXhpdCA7OworICAgIHg4NjpJbnRlcml4KjpbMzRdKikKKwllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1wuLiovLycKKwlleGl0IDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2OldpbmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCisJZXhpdCA7OworICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVtKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIEl0IGFsc28gY29uZmxpY3RzIHdpdGggcHJlLTIuMCB2ZXJzaW9ucyBvZiBBVCZUIFVXSU4uIFNob3VsZCB3ZQorCSMgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2YgaTM4Nj8KKwllY2hvIGk1ODYtcGMtaW50ZXJpeAorCWV4aXQgOzsKKyAgICBpKjpVV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy11d2luCisJZXhpdCA7OworICAgIGFtZDY0OkNZR1dJTio6KjoqIHwgeDg2XzY0OkNZR1dJTio6KjoqKQorCWVjaG8geDg2XzY0LXVua25vd24tY3lnd2luCisJZXhpdCA7OworICAgIHAqOkNZR1dJTio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwcmVwKjpTdW5PUzo1Lio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgICo6R05VOio6KikKKwkjIHRoZSBHTlUgc3lzdGVtCisJZWNobyBgZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCisJZXhpdCA7OworICAgICo6R05VLyo6KjoqKQorCSMgb3RoZXIgc3lzdGVtcyB3aXRoIEdOVSBsaWJjIGFuZCB1c2VybGFuZAorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWBlY2hvICR7VU5BTUVfU1lTVEVNfSB8IHNlZCAncyxeW14vXSovLCwnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AtZ251CisJZXhpdCA7OworICAgIGkqODY6TWluaXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5peAorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3JpczpMaW51eDoqOiopCisJZWNobyBjcmlzLWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGNyaXN2MzI6TGludXg6KjoqKQorCWVjaG8gY3Jpc3YzMi1heGlzLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBmcnY6TGludXg6KjoqKQorICAgIAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpYTY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTMycio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbWlwczpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI3VuZGVmIENQVQorCSN1bmRlZiBtaXBzCisJI3VuZGVmIG1pcHNlbAorCSNpZiBkZWZpbmVkKF9fTUlQU0VMX18pIHx8IGRlZmluZWQoX19NSVBTRUwpIHx8IGRlZmluZWQoX01JUFNFTCkgfHwgZGVmaW5lZChNSVBTRUwpCisJQ1BVPW1pcHNlbAorCSNlbHNlCisJI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKKwlDUFU9bWlwcworCSNlbHNlCisJQ1BVPQorCSNlbmRpZgorCSNlbmRpZgorRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgXkNQVT1gCisJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KKwk7OworICAgIG1pcHM2NDpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI3VuZGVmIENQVQorCSN1bmRlZiBtaXBzNjQKKwkjdW5kZWYgbWlwczY0ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT1taXBzNjRlbAorCSNlbHNlCisJI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKKwlDUFU9bWlwczY0CisJI2Vsc2UKKwlDUFU9CisJI2VuZGlmCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCBeQ1BVPWAKKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQorCTs7CisgICAgb3IzMjpMaW51eDoqOiopCisJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBwYzpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBwYzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBhbHBoYTpMaW51eDoqOiopCisJY2FzZSBgc2VkIC1uICcvXmNwdSBtb2RlbC9zL14uKjogXCguKlwpL1wxL3AnIDwgL3Byb2MvY3B1aW5mb2AgaW4KKwkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFscGhhZXY1IDs7CisJICBFVjU2KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NTYgOzsKKwkgIFBDQTU2KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIFBDQTU3KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2IDs7CisJICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKKwkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworICAgICAgICBlc2FjCisJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCBsZC5zby4xID4vZGV2L251bGwKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwlleGl0IDs7CisgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVsCisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdudSA7OworCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAorCWV4aXQgOzsKKyAgICBzaDY0KjpMaW51eDoqOiopCisgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzaCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzcGFyYzpMaW51eDoqOiogfCBzcGFyYzY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeDg2XzY0OkxpbnV4Oio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwkjIFRoZSBCRkQgbGlua2VyIGtub3dzIHdoYXQgdGhlIGRlZmF1bHQgb2JqZWN0IGZpbGUgZm9ybWF0IGlzLCBzbworCSMgZmlyc3Qgc2VlIGlmIGl0IHdpbGwgdGVsbCB1cy4gY2QgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHByZXZlbnQKKwkjIHByb2JsZW1zIHdpdGggb3RoZXIgcHJvZ3JhbXMgb3IgZGlyZWN0b3JpZXMgY2FsbGVkIGBsZCcgaW4gdGhlIHBhdGguCisJIyBTZXQgTENfQUxMPUMgdG8gZW5zdXJlIGxkIG91dHB1dHMgbWVzc2FnZXMgaW4gRW5nbGlzaC4KKwlsZF9zdXBwb3J0ZWRfdGFyZ2V0cz1gY2QgLzsgTENfQUxMPUMgbGQgLS1oZWxwIDI+JjEgXAorCQkJIHwgc2VkIC1uZSAnL3N1cHBvcnRlZCB0YXJnZXRzOi8hZAorCQkJCSAgICBzL1sgCV1bIAldKi8gL2cKKwkJCQkgICAgcy8uKnN1cHBvcnRlZCB0YXJnZXRzOiAqLy8KKwkJCQkgICAgcy8gLiovLworCQkJCSAgICBwJ2AKKyAgICAgICAgY2FzZSAiJGxkX3N1cHBvcnRlZF90YXJnZXRzIiBpbgorCSAgZWxmMzItaTM4NikKKwkJVEVOVEFUSVZFPSIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudSIKKwkJOzsKKwkgIGEub3V0LWkzODYtbGludXgpCisJCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtZ251YW91dCIKKwkJZXhpdCA7OworCSAgY29mZi1pMzg2KQorCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWNvZmYiCisJCWV4aXQgOzsKKwkgICIiKQorCQkjIEVpdGhlciBhIHByZS1CRkQgYS5vdXQgbGlua2VyIChsaW51eC1nbnVvbGRsZCkgb3IKKwkJIyBvbmUgdGhhdCBkb2VzIG5vdCBnaXZlIHVzIHVzZWZ1bCAtLWhlbHAuCisJCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtZ251b2xkbGQiCisJCWV4aXQgOzsKKwllc2FjCisJIyBEZXRlcm1pbmUgd2hldGhlciB0aGUgZGVmYXVsdCBjb21waWxlciBpcyBhLm91dCBvciBlbGYKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKwkjaWZkZWYgX19FTEZfXworCSMgaWZkZWYgX19HTElCQ19fCisJIyAgaWYgX19HTElCQ19fID49IDIKKwlMSUJDPWdudQorCSMgIGVsc2UKKwlMSUJDPWdudWxpYmMxCisJIyAgZW5kaWYKKwkjIGVsc2UKKwlMSUJDPWdudWxpYmMxCisJIyBlbmRpZgorCSNlbHNlCisJI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKwlMSUJDPWdudQorCSNlbHNlCisJTElCQz1nbnVhb3V0CisJI2VuZGlmCisJI2VuZGlmCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJQkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwIF5MSUJDPWAKKwl0ZXN0IHgiJHtMSUJDfSIgIT0geCAmJiB7CisJCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwkJZXhpdAorCX0KKwl0ZXN0IHgiJHtURU5UQVRJVkV9IiAhPSB4ICYmIHsgZWNobyAiJHtURU5UQVRJVkV9IjsgZXhpdDsgfQorCTs7CisgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKKwkjIHB0eCA0LjAgZG9lcyB1bmFtZSAtcyBjb3JyZWN0bHksIHdpdGggRFlOSVgvcHR4IGluIHRoZXJlLgorCSMgZWFybGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVuYW1lIGluIGJvdGgKKwkjIHN5c25hbWUgYW5kIG5vZGVuYW1lLgorCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CisJZXhpdCA7OworICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCisgICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKyAgICAgICAgIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgorICAgICAgICAjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgorICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsKKyAgICBpKjg2Ok9TLzI6KjoqKQorCSMgSWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmQgYHVuYW1lJywgdGhlbiBFTVggVW5peCBjb21wYXRpYmlsaXR5CisJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW9zMi1lbXgKKwlleGl0IDs7CisgICAgaSo4NjpYVFMtMzAwOio6U1RPUCkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zdG9wCisJZXhpdCA7OworICAgIGkqODY6YXRoZW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hdGhlb3MKKwlleGl0IDs7CisgICAgaSo4NjpzeWxsYWJsZToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5bGxhYmxlCisJZXhpdCA7OworICAgIGkqODY6THlueE9TOjIuKjoqIHwgaSo4NjpMeW54T1M6My5bMDFdKjoqIHwgaSo4NjpMeW54T1M6NC4wKjoqKQorCWVjaG8gaTM4Ni11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaSo4NjoqRE9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXNkb3NkamdwcAorCWV4aXQgOzsKKyAgICBpKjg2Oio6NC4qOiogfCBpKjg2OlNZU1RFTV9WOjQuKjoqKQorCVVOQU1FX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkICdzL1wvTVAkLy8nYAorCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9saW5rLmggPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5pdmVsLXN5c3Yke1VOQU1FX1JFTH0KKwllbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9CisJZmkKKwlleGl0IDs7CisgICAgaSo4NjoqOjU6WzY3OF0qKQorICAgIAkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIgNi4KKwljYXNlIGAvYmluL3VuYW1lIC1YIHwgZ3JlcCAiXk1hY2hpbmUiYCBpbgorCSAgICAqNDg2KikJICAgICBVTkFNRV9NQUNISU5FPWk0ODYgOzsKKwkgICAgKlBlbnRpdW0pCSAgICAgVU5BTUVfTUFDSElORT1pNTg2IDs7CisJICAgICpQZW50KnwqQ2VsZXJvbikgVU5BTUVfTUFDSElORT1pNjg2IDs7CisJZXNhYworCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsKKyAgICBpKjg2Oio6My4yOiopCisJaWYgdGVzdCAtZiAvdXNyL29wdGlvbnMvY2IubmFtZTsgdGhlbgorCQlVTkFNRV9SRUw9YHNlZCAtbiAncy8uKlZlcnNpb24gLy9wJyA8L3Vzci9vcHRpb25zL2NiLm5hbWVgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1pc2MkVU5BTUVfUkVMCisJZWxpZiAvYmluL3VuYW1lIC1YIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX1JFTD1gKC9iaW4vdW5hbWUgLVh8Z3JlcCBSZWxlYXNlfHNlZCAtZSAncy8uKj0gLy8nKWAKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCBpODA0ODYgPi9kZXYvbnVsbCkgJiYgVU5BTUVfTUFDSElORT1pNDg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50aXVtJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk1ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnQgKklJJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk2ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0gUHJvJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk2ODYKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNjbyRVTkFNRV9SRUwKKwllbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2MzIKKwlmaQorCWV4aXQgOzsKKyAgICBwYzoqOio6KikKKwkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKKyAgICAgICAgIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKyAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTM4Ni4KKwllY2hvIGkzODYtcGMtbXNkb3NkamdwcAorICAgICAgICBleGl0IDs7CisgICAgSW50ZWw6TWFjaDozKjoqKQorCWVjaG8gaTM4Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQorCWVjaG8gaTg2MC1pbnRlbC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVBU0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwlleGl0IDs7CisgICAgbWluaSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02ODAxMC1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMuNTFtKQorCWVjaG8gbTY4ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQtTklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKwl0ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnOyBleGl0OyB9IDs7CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDozLjAgfCBTSEcyOio6NC4wOjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVzdCAtciAvZXRjLy5yZWxpZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKyAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKKwllY2hvIG02OGstdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1jNjgwMzA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwllY2hvIG02OGstYXRhcmktc3lzdjQKKwlleGl0IDs7CisgICAgVFNVTkFNSTpMeW54T1M6Mi4qOiopCisJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKKwllY2hvIHJzNjAwMC11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXJQQzpMeW54T1M6Mi4qOiogfCBQb3dlclBDOkx5bnhPUzozLlswMV0qOiogfCBQb3dlclBDOkx5bnhPUzo0LjAqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTTVtCRV1TOlVOSVhfU1Y6KjoqKQorCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDs7CisgICAgUk0qOlNJTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDs7CisgICAgKjpTSU5JWC0qOio6KikKKwlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tc25pLXN5c3Y0CisJZWxzZQorCQllY2hvIG5zMzJrLXNuaS1zeXN2CisJZmkKKwlleGl0IDs7CisgICAgUEVOVElVTToqOjQuMCo6KikgIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKKyAgICAgICAgICAgICAgICAgICAgICAjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+CisgICAgICAgIGVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKyAgICAgICAgZXhpdCA7OworICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQorCSMgRnJvbSBHZXJhbGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KKwkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKwllY2hvIGhwcGExLjEtc3RyYXR1cy1zeXN2NAorCWV4aXQgOzsKKyAgICAqOio6KjpGVFgqKQorCSMgRnJvbSBzZWFuZkBzd2RjLnN0cmF0dXMuY29tLgorCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgIGkqODY6Vk9TOio6KikKKwkjIEZyb20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tc3RyYXR1cy12b3MKKwlleGl0IDs7CisgICAgKjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICBtYzY4KjpBL1VYOio6KikKKwllY2hvIG02OGstYXBwbGUtYXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBuZXdzKjpORVdTLU9TOjYqOiopCisJZWNobyBtaXBzLXNvbnktbmV3c29zNgorCWV4aXQgOzsKKyAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKKwlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KKwkgICAgICAgIGVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwllbHNlCisJICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWZpCisgICAgICAgIGV4aXQgOzsKKyAgICBCZUJveDpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gaGFyZHdhcmUgbWFkZSBieSBCZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWJlLWJlb3MKKwlleGl0IDs7CisgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBvciBNYWMgY2xvbmUsIFBQQyBvbmx5LgorCWVjaG8gcG93ZXJwYy1hcHBsZS1iZW9zCisJZXhpdCA7OworICAgIEJlUEM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWJlb3MKKwlleGl0IDs7CisgICAgU1gtNDpTVVBFUi1VWDoqOiopCisJZWNobyBzeDQtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTU6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g1LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC02OlNVUEVSLVVYOio6KikKKwllY2hvIHN4Ni1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEYXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NPUj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgICo4NikgVU5BTUVfUFJPQ0VTU09SPWk2ODYgOzsKKwkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOnByb2NudG8qOio6KiB8ICo6UU5YOlswMTIzNDU2Nzg5XSo6KikKKwlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYAorCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRoZW4KKwkJVU5BTUVfUFJPQ0VTU09SPWkzODYKKwkJVU5BTUVfTUFDSElORT1wYworCWZpCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tJHtVTkFNRV9NQUNISU5FfS1udG8tcW54JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlFOWDoqOjQqKQorCWVjaG8gaTM4Ni1wYy1xbngKKwlleGl0IDs7CisgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zci10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk5vblN0b3AtVVg6KjoqKQorCWVjaG8gbWlwcy1jb21wYXEtbm9uc3RvcHV4CisJZXhpdCA7OworICAgIEJTMjAwMDpQT1NJWCo6KjoqKQorCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgorCWV4aXQgOzsKKyAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS0ke1VOQU1FX1NZU1RFTX0tJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlBsYW45Oio6KikKKwkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVzZSAkY3B1dHlwZSBpbnN0ZWFkLiAzODYKKwkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgorCSMgb3BlcmF0aW5nIHN5c3RlbXMuCisJaWYgdGVzdCAiJGNwdXR5cGUiID0gIjM4NiI7IHRoZW4KKwkgICAgVU5BTUVfTUFDSElORT1pMzg2CisJZWxzZQorCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlwZSIKKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXBsYW45CisJZXhpdCA7OworICAgICo6VE9QUy0xMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMxMAorCWV4aXQgOzsKKyAgICAqOlRFTkVYOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdGVuZXgKKwlleGl0IDs7CisgICAgS1MxMDpUT1BTLTIwOio6KiB8IEtMMTA6VE9QUy0yMDoqOiogfCBUWVBFNDpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLWRlYy10b3BzMjAKKwlleGl0IDs7CisgICAgWEtMLTE6VE9QUy0yMDoqOiogfCBUWVBFNTpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXhrbC10b3BzMjAKKwlleGl0IDs7CisgICAgKjpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdG9wczIwCisJZXhpdCA7OworICAgICo6SVRTOio6KikKKwllY2hvIHBkcDEwLXVua25vd24taXRzCisJZXhpdCA7OworICAgIFNFSToqOio6U0VJVVgpCisgICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RHJhZ29uRmx5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCisJZXhpdCA7OworICAgICo6KlZNUzoqOiopCisgICAgCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgQSopIGVjaG8gYWxwaGEtZGVjLXZtcyA7IGV4aXQgOzsKKwkgICAgSSopIGVjaG8gaWE2NC1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBWKikgZWNobyB2YXgtZGVjLXZtcyA7IGV4aXQgOzsKKwllc2FjIDs7CisgICAgKjpYRU5JWDoqOlN5c1YpCisJZWNobyBpMzg2LXBjLXhlbml4CisJZXhpdCA7OworICAgIGkqODY6c2t5b3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5BTUVfUkVMRUFTRX1gIHwgc2VkIC1lICdzLyAuKiQvLycKKwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgMT4mMgorCitldmFsICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisjaWZkZWYgX1NFUVVFTlRfCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBkZWZpbmVkIChNSVBTRUIpCisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3MiLiAgUGVyaGFwcyBCRkQgc2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4gICovCisgIHByaW50ZiAoIm1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNpZmRlZiBORVdTT1M0CisgICAgICAgICAgIjQiCisjZWxzZQorCSAgIiIKKyNlbmRpZgorICAgICAgICAgKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19hcm0pICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKKyAgcHJpbnRmICgiYXJtLWFjb3JuLXJpc2NpeFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChocDMwMCkgJiYgIWRlZmluZWQgKGhwdXgpCisgIHByaW50ZiAoIm02OGstaHAtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE5lWFQpCisjaWYgIWRlZmluZWQgKF9fQVJDSElURUNUVVJFX18pCisjZGVmaW5lIF9fQVJDSElURUNUVVJFX18gIm02OGsiCisjZW5kaWYKKyAgaW50IHZlcnNpb247CisgIHZlcnNpb249YChob3N0aW5mbyB8IHNlZCAtbiAncy8uKk5lWFQgTWFjaCBcKFswLTldKlwpLiovXDEvcCcpIDI+L2Rldi9udWxsYDsKKyAgaWYgKHZlcnNpb24gPCA0KQorICAgIHByaW50ZiAoIiVzLW5leHQtbmV4dHN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy1uZXh0LW9wZW5zdGVwJWRcbiIsIF9fQVJDSElURUNUVVJFX18sIHZlcnNpb24pOworICBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTVVMVElNQVgpIHx8IGRlZmluZWQgKG4xNikKKyNpZiBkZWZpbmVkIChVTUFYVikKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLXN5c3ZcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaWYgZGVmaW5lZCAoQ01VKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtbWFjaFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX18zODZCU0RfXykKKyAgcHJpbnRmICgiaTM4Ni1wYy1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoc2VxdWVudCkKKyNpZiBkZWZpbmVkIChpMzg2KQorICBwcmludGYgKCJpMzg2LXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2lmIGRlZmluZWQgKG5zMzIwMDApCisgIHByaW50ZiAoIm5zMzJrLXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfU0VRVUVOVF8pCisgICAgc3RydWN0IHV0c25hbWUgdW47CisKKyAgICB1bmFtZSgmdW4pOworCisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYyIiwgMikgPT0gMCkgeworCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgyXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMSIsIDIpID09IDApIHsgLyogWFhYIGlzIFYxIGNvcnJlY3Q/ICovCisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDFcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eFxuIik7IGV4aXQgKDApOworCisjZW5kaWYKKworI2lmIGRlZmluZWQgKHZheCkKKyMgaWYgIWRlZmluZWQgKHVsdHJpeCkKKyMgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorIyAgaWYgZGVmaW5lZCAoQlNEKQorIyAgIGlmIEJTRCA9PSA0MworICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0LjNcbiIpOyBleGl0ICgwKTsKKyMgICBlbHNlCisjICAgIGlmIEJTRCA9PSAxOTkwMDYKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zcmVub1xuIik7IGV4aXQgKDApOworIyAgICBlbHNlCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBleGl0ICgwKTsKKyMgIGVuZGlmCisjIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLXVsdHJpeFxuIik7IGV4aXQgKDApOworIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChhbGxpYW50KSAmJiBkZWZpbmVkIChpODYwKQorICBwcmludGYgKCJpODYwLWFsbGlhbnQtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworICBleGl0ICgxKTsKK30KK0VPRgorCiskQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgorCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCisjIEFwb2xsb3MgcHV0IHRoZSBzeXN0ZW0gdHlwZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBlY2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorCisjIENvbnZleCB2ZXJzaW9ucyB0aGF0IHByZWRhdGUgdW5hbWUgY2FuIHVzZSBnZXRzeXNpbmZvKDEpCisKK2lmIFsgLXggL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyBdCit0aGVuCisgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAgaW4KKyAgICBjMSopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMyKikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIGMzNCopCisJZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMzgqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzQqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBlc2FjCitmaQorCitjYXQgPiYyIDw8RU9GCiskMDogdW5hYmxlIHRvIGd1ZXNzIHN5c3RlbSB0eXBlCisKK1RoaXMgc2NyaXB0LCBsYXN0IG1vZGlmaWVkICR0aW1lc3RhbXAsIGhhcyBmYWlsZWQgdG8gcmVjb2duaXplCit0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLiBJdCBpcyBhZHZpc2VkIHRoYXQgeW91Citkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24gb2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KKworICBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9jZ2ktYmluL3ZpZXdjdnMvKmNoZWNrb3V0Ki9jb25maWcvY29uZmlnL2NvbmZpZy5ndWVzcworYW5kCisgIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLnN1YgorCitJZiB0aGUgdmVyc2lvbiB5b3UgcnVuICgkMCkgaXMgYWxyZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKK3NlbmQgdGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJlCitwZXJ0aW5lbnQgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIG5lZWRlZAoraW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgorCitjb25maWcuZ3Vlc3MgdGltZXN0YW1wID0gJHRpbWVzdGFtcAorCit1bmFtZSAtbSA9IGAodW5hbWUgLW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKworL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbGAKKworaG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+L2Rldi9udWxsYAorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbGAKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbGAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsYAorCitVTkFNRV9NQUNISU5FID0gJHtVTkFNRV9NQUNISU5FfQorVU5BTUVfUkVMRUFTRSA9ICR7VU5BTUVfUkVMRUFTRX0KK1VOQU1FX1NZU1RFTSAgPSAke1VOQU1FX1NZU1RFTX0KK1VOQU1FX1ZFUlNJT04gPSAke1VOQU1FX1ZFUlNJT059CitFT0YKKworZXhpdCAxCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL2NvbmZpZy5oIGIvY29uZmlnLmgKaW5kZXggZmY4ZGI2NS4uZjIwMTczZCAxMDA2NDQKLS0tIGEvY29uZmlnLmgKKysrIGIvY29uZmlnLmgKQEAgLTE2LDkgKzE2LDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJpbmRfdG9fY3B1X2lkJyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX0JJTkRfVE9fQ1BVX0lEICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmNvcHknIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX0JDT1BZIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiemVybycgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfQlpFUk8gMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRhZW1vbicgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfREFFTU9OIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlbmRpYW4uaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfRU5ESUFOX0ggMQogCkBAIC00MCw2ICs0Niw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhydGltZScgZnVuY3Rpb24uICovCiAvKiAjdW5kZWYgSEFWRV9HRVRIUlRJTUUgKi8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRpZmFkZHJzJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9HRVRJRkFERFJTIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRuYW1laW5mbycgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfR0VUTkFNRUlORk8gMQogCkBAIC01Miw2ICs2MSw5IEBACiAvKiBEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgSUNTQy1FWFMgdGVzdHMuICovCiAvKiAjdW5kZWYgSEFWRV9JQ1NDX0VYUyAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlmYWRkcnMuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfSUZBRERSU19IIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbmV0X250b2EnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX0lORVRfTlRPQSAxCiAKQEAgLTk0LDggKzEwNiwxNCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfTElNSVRTX0ggMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L3NvY2tldC5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9MSU5VWF9TT0NLRVRfSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGNwLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX0xJTlVYX1RDUF9IIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjZGVmaW5lIEhBVkVfTUFMTE9DX0ggMSAqLworI2RlZmluZSBIQVZFX01BTExPQ19IIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1jcHknIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX01FTUNQWSAxCkBAIC0xMjEsMTQgKzEzOSwyMyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX05FVElORVRfSU5fSCAxCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pbl9zeXN0bS5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9ORVRJTkVUX0lOX1NZU1RNX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaXAuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfTkVUSU5FVF9JUF9IIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L3NjdHAuaD4gaGVhZGVyIGZpbGUuICovCiAvKiAjdW5kZWYgSEFWRV9ORVRJTkVUX1NDVFBfSCAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByb2Nlc3Nvcl9iaW5kJyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX1BST0NFU1NPUl9CSU5EICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2NoZWQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU0NIRURfSCAxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0YWZmaW5pdHknIGZ1bmN0aW9uLiAqLwotLyogI2RlZmluZSBIQVZFX1NDSEVEX1NFVEFGRklOSVRZIDEgKi8KKyNkZWZpbmUgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSAxCiAKIC8qIERlZmluZSB0byAxIGlmIGBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUnIGhhcyBhCiAgICBgc2N0cF9hZGFwdGF0aW9uX2xheWVyX2V2ZW50JyBtZW1iZXIgKi8KQEAgLTEzOCwxMSArMTY1LDE3IEBACiAjZGVmaW5lIEhBVkVfU0VMRUNUIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW5kZmlsZScgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9TRU5ERklMRSAqLyAKKyNkZWZpbmUgSEFWRV9TRU5ERklMRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0c2lkJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TRVRTSUQgMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9TSUdOQUxfSCAxCiAKKy8qIERlZmluZSBpZiBzdHJ1Y3Qgc29ja2FkZHIgaGFzIHRoZSBzYV9sZW4gbWVtYmVyICovCisvKiAjdW5kZWYgSEFWRV9TT0NLQUREUl9TQV9MRU4gKi8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX1NPQ0tFVCAxCiAKQEAgLTE3OSw5ICsyMTIsMTUgQEAKIC8qIERlZmluZSB0byAxIGlmIDxuZXRpbmV0L2luLmg+IGRlZmluZXMgYHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlJyAqLwogI2RlZmluZSBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFIDEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXNjYWxsLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU0NBTExfSCAxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2lvY3RsLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX1NZU19JT0NUTF9IIDEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvaXBjLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19JUENfSCAxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL21tYW4uaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfU1lTX01NQU5fSCAxCiAKQEAgLTE5NCwxOCArMjMzLDI3IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfU1lTX1NPQ0tFVF9IIDEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc29ja2lvLmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfU1lTX1NPQ0tJT19IICovCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2luZm8uaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lTX1NZU0lORk9fSCAxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPHN5cy93YWl0Lmg+IHRoYXQgaXMgUE9TSVguMSBjb21wYXRpYmxlLiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9TWVNfV0FJVF9IIDEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0b3VwcGVyJyBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9UT1VQUEVSIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfVU5BTUUgMQogCkBAIC0yNDAsMTMgKzI4OCwxNiBAQAogI2RlZmluZSBQQUNLQUdFX05BTUUgIm5ldHBlcmYiCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIm5ldHBlcmYgMi40LjQiCisjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJuZXRwZXJmIDIuNy4wIgogCiAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCiAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibmV0cGVyZiIKIAorLyogRGVmaW5lIHRvIHRoZSBob21lIHBhZ2UgZm9yIHRoaXMgcGFja2FnZS4gKi8KKyNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKKwogLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIyLjQuNCIKKyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIyLjcuMCIKIAogLyogRGVmaW5lIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMgKGBpbnQnIG9yIGB2b2lkJykuICovCiAjZGVmaW5lIFJFVFNJR1RZUEUgdm9pZApAQCAtMjgyLDE2ICszMzMsMTkgQEAKIC8qICN1bmRlZiBVU0VfUEVSRlNUQVQgKi8KIAogLyogVXNlIExpbnV4J3MgcHJvY3N0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuICovCi0jZGVmaW5lIFVTRV9QUk9DX1NUQVQgMQorI2RlZmluZSBVU0VfUFJPQ19TVEFUIC8qKi8KIAogLyogVXNlIEhQLVVYJ3MgcHN0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuICovCiAvKiAjdW5kZWYgVVNFX1BTVEFUICovCiAKLS8qIFVzZSBGcmVlQlNEJ3Mgc3lzY3RsIGludGVyZmFjZSB0byBtZWFzdXJlIENQVSB1dGlsLiAqLworLyogVXNlIE11bWJsZUJTRCdzIHN5c2N0bCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC4gKi8KIC8qICN1bmRlZiBVU0VfU1lTQ1RMICovCiAKIC8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KLSNkZWZpbmUgVkVSU0lPTiAiMi40LjQiCisjZGVmaW5lIFZFUlNJT04gIjIuNy4wIgorCisvKiBEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgRENDUCB0ZXN0cy4gKi8KKy8qICN1bmRlZiBXQU5UX0RDQ1AgKi8KIAogLyogRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgZGVtbyBzdXBwb3J0LiBNYXkgYWZmZWN0IHJlc3VsdHMuICovCiAvKiAjdW5kZWYgV0FOVF9ERU1PICovCkBAIC0zMDAsNyArMzU0LDcgQEAKIC8qICN1bmRlZiBXQU5UX0RMUEkgKi8KIAogLyogRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgaW5pdGlhbCBfUlIgYnVyc3Qgc3VwcG9ydC4gTWF5IGFmZmVjdCByZXN1bHRzLiAqLwotLyogI3VuZGVmIFdBTlRfRklSU1RfQlVSU1QgKi8KKyNkZWZpbmUgV0FOVF9GSVJTVF9CVVJTVCAvKiovCiAKIC8qIERlZmluZSB0byBvbmUgdG8gZW5hYmxlIGhpc3RvZ3JhbSBzdXBwb3J0LiBNYXkgYWZmZWN0IHJlc3VsdHMuICovCiAvKiAjdW5kZWYgV0FOVF9ISVNUT0dSQU0gKi8KQEAgLTMwOCw4ICszNjIsMTQgQEAKIC8qIERlZmluZSB0byBvbmUgdG8gZW5hYmxlIHBhY2VkIG9wZXJhdGlvbiBzdXBwb3J0LiBNYXkgYWZmZWN0IHJlc3VsdHMuICovCiAvKiAjdW5kZWYgV0FOVF9JTlRFUlZBTFMgKi8KIAorLyogRGVmaW5lIHRvIG9uZSB0byBtaWdyYXRlIGNsYXNzaWMgdG8gT01OSSB0ZXN0cy4gKi8KKyNkZWZpbmUgV0FOVF9NSUdSQVRJT04gLyoqLworCisvKiBEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgT01OSSB0ZXN0cy4gKi8KKyNkZWZpbmUgV0FOVF9PTU5JIC8qKi8KKwogLyogRGVmaW5lIHRvIG9uZSB0byBpbmNsdWRlIFNDVFAgdGVzdHMuICovCi0vKiAjZGVmaW5lIFdBTlRfU0NUUCAxICovCisvKiAjdW5kZWYgV0FOVF9TQ1RQICovCiAKIC8qIERlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBTRFAgdGVzdHMuICovCiAvKiAjdW5kZWYgV0FOVF9TRFAgKi8KQEAgLTMzNCw3ICszOTQsNyBAQAogLyogI3VuZGVmIGNvbnN0ICovCiAKIC8qIHR5cGUgdG8gdXNlIGluIHBsYWNlIG9mIHNvY2tsZW5fdCBpZiBub3QgZGVmaW5lZCAqLwotI2RlZmluZSBuZXRwZXJmX3NvY2tsZW5fdCBzaXplX3QKKyNkZWZpbmUgbmV0cGVyZl9zb2NrbGVuX3QgdW5zaWduZWQKIAogLyogRGVmaW5lIHRvIGBsb25nIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCiAvKiAjdW5kZWYgb2ZmX3QgKi8KZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDExMjBkYQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy5oLmluCkBAIC0wLDAgKzEsNDA1IEBACisvKiBjb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KKworLyogRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgZGlydHkgYnVmZmVyIHN1cHBvcnQuIE1heSBhZmZlY3QgcmVzdWx0cy4gKi8KKyN1bmRlZiBESVJUWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFsYXJtJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0FMQVJNCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YXJwYS9pbmV0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfQVJQQV9JTkVUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiaW5kcHJvY2Vzc29yJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JJTkRQUk9DRVNTT1IKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiaW5kX3RvX2NwdV9pZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9CSU5EX1RPX0NQVV9JRAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJ6ZXJvJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JaRVJPCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGFlbW9uJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0RBRU1PTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVuZGlhbi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VORElBTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXJybm8uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9FUlJOT19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9GQ05UTF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZm9yaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GT1JLCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0YWRkcmluZm8nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUQUREUklORk8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRocnRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUSFJUSU1FCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aWZhZGRycycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRJRkFERFJTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0bmFtZWluZm8nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUTkFNRUlORk8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwYWdlc2l6ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRQQUdFU0laRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHRpbWVvZmRheScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkKKworLyogRGVmaW5lIHRvIG9uZSB0byBpbmNsdWRlIElDU0MtRVhTIHRlc3RzLiAqLworI3VuZGVmIEhBVkVfSUNTQ19FWFMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpZmFkZHJzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfSUZBRERSU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaW5ldF9udG9hJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0lORVRfTlRPQQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9JTkVUX05UT1AKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBleHMnIGxpYnJhcnkgKC1sZXhzKS4gKi8KKyN1bmRlZiBIQVZFX0xJQkVYUworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtzdGF0JyBsaWJyYXJ5ICgtbGtzdGF0KS4gKi8KKyN1bmRlZiBIQVZFX0xJQktTVEFUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KKyN1bmRlZiBIQVZFX0xJQk0KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtYWNoJyBsaWJyYXJ5ICgtbG1hY2gpLiAqLworI3VuZGVmIEhBVkVfTElCTUFDSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5zbCcgbGlicmFyeSAoLWxuc2wpLiAqLworI3VuZGVmIEhBVkVfTElCTlNMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGVyZnN0YXQnIGxpYnJhcnkgKC1scGVyZnN0YXQpLiAqLworI3VuZGVmIEhBVkVfTElCUEVSRlNUQVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY3RwJyBsaWJyYXJ5ICgtbHNjdHApLiAqLworI3VuZGVmIEhBVkVfTElCU0NUUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNkcCcgbGlicmFyeSAoLWxzZHApLiAqLworI3VuZGVmIEhBVkVfTElCU0RQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGxpYnJhcnkgKC1sc2VuZGZpbGUpLiAqLworI3VuZGVmIEhBVkVfTElCU0VOREZJTEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGxpYnJhcnkgKC1sc29ja2V0KS4gKi8KKyN1bmRlZiBIQVZFX0xJQlNPQ0tFVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTUlUU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvc29ja2V0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfU09DS0VUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC90Y3AuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9UQ1BfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hbGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01BTExPQ19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtY3B5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01FTUNQWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01FTU9SWV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtc2V0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01FTVNFVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgYG1tYXAnIHN5c3RlbSBjYWxsLiAqLworI3VuZGVmIEhBVkVfTU1BUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1wY3RsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01QQ1RMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXVubWFwJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01VTk1BUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGRiLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUREJfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ORVRJTkVUX0lOX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luX3N5c3RtLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pcC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSVBfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvc2N0cC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfU0NUUF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJvY2Vzc29yX2JpbmQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFJPQ0VTU09SX0JJTkQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzY2hlZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRhZmZpbml0eScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorCisvKiBEZWZpbmUgdG8gMSBpZiBgc3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlJyBoYXMgYQorICAgYHNjdHBfYWRhcHRhdGlvbl9sYXllcl9ldmVudCcgbWVtYmVyICovCisjdW5kZWYgSEFWRV9TQ1RQX0FEQVBUQVRJT05fTEFZRVJfRVZFTlQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxlY3QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VMRUNUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VOREZJTEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRzaWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VUU0lECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2lnbmFsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU0lHTkFMX0gKKworLyogRGVmaW5lIGlmIHN0cnVjdCBzb2NrYWRkciBoYXMgdGhlIHNhX2xlbiBtZW1iZXIgKi8KKyN1bmRlZiBIQVZFX1NPQ0tBRERSX1NBX0xFTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNvY2tldCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TT0NLRVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzcXJ0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NRUlQKKworLyogRGVmaW5lIHRvIDEgaWYgc3RkYm9vbC5oIGNvbmZvcm1zIHRvIEM5OS4gKi8KKyN1bmRlZiBIQVZFX1NUREJPT0xfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURElOVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1RETElCX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJjYXNlY21wJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkNBU0VDTVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJjaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSQ0hSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3Ryc3RyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlNUUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSVE9VTAorCisvKiBEZWZpbmUgdG8gMSBpZiA8bmV0aW5ldC9pbi5oPiBkZWZpbmVzIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScgKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzY2FsbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU0NBTExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9pb2N0bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19JT0NUTF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2lwYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19JUENfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX01NQU5fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wYXJhbS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19QQVJBTV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NlbGVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU09DS0VUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc29ja2lvLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NPQ0tJT19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1RBVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2luZm8uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1lTSU5GT19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfVElNRV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19XQUlUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0b3VwcGVyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1RPVVBQRVIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VTkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1VOSVNURF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdmZvcmsnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVkZPUksKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2Zm9yay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1ZGT1JLX0gKKworLyogRGVmaW5lIHRvIDEgaWYgYGZvcmsnIHdvcmtzLiAqLworI3VuZGVmIEhBVkVfV09SS0lOR19GT1JLCisKKy8qIERlZmluZSB0byAxIGlmIGB2Zm9yaycgd29ya3MuICovCisjdW5kZWYgSEFWRV9XT1JLSU5HX1ZGT1JLCisKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBfQm9vbCcuICovCisjdW5kZWYgSEFWRV9fQk9PTAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaF9lcnJubycgaXMgZGVjbGFyZWQgYnkgPG5ldGRiLmg+ICovCisjdW5kZWYgSF9FUlJOT19ERUNMQVJFRAorCisvKiBOYW1lIG9mIHBhY2thZ2UgKi8KKyN1bmRlZiBQQUNLQUdFCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX05BTUUKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfU1RSSU5HCisKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKworLyogRGVmaW5lIHRvIHRoZSBob21lIHBhZ2UgZm9yIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1VSTAorCisvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorCisvKiBEZWZpbmUgYXMgdGhlIHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycyAoYGludCcgb3IgYHZvaWQnKS4gKi8KKyN1bmRlZiBSRVRTSUdUWVBFCisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhcmcgMSBmb3IgYHNlbGVjdCcuICovCisjdW5kZWYgU0VMRUNUX1RZUEVfQVJHMQorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYXJncyAyLCAzIGFuZCA0IGZvciBgc2VsZWN0Jy4gKi8KKyN1bmRlZiBTRUxFQ1RfVFlQRV9BUkcyMzQKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGFyZyA1IGZvciBgc2VsZWN0Jy4gKi8KKyN1bmRlZiBTRUxFQ1RfVFlQRV9BUkc1CisKKy8qIERlZmluZSB0byAxIGlmIHRoZSBgc2V0cGdycCcgZnVuY3Rpb24gdGFrZXMgbm8gYXJndW1lbnQuICovCisjdW5kZWYgU0VUUEdSUF9WT0lECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIFNURENfSEVBREVSUworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgY2FuIHNhZmVseSBpbmNsdWRlIGJvdGggPHN5cy90aW1lLmg+IGFuZCA8dGltZS5oPi4gKi8KKyN1bmRlZiBUSU1FX1dJVEhfU1lTX1RJTUUKKworLyogVXNlIFNvbGFyaXMncyBrc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC4gKi8KKyN1bmRlZiBVU0VfS1NUQVQKKworLyogVXNlIGxvb3Blci9zb2FrZXIgcHJvY2Vzc2VzIHRvIG1lYXN1cmUgQ1BVIHV0aWwuICovCisjdW5kZWYgVVNFX0xPT1BFUgorCisvKiBVc2UgTWFjT1MgWCdzIGhvc3RfaW5mbyBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC4gKi8KKyN1bmRlZiBVU0VfT1NYCisKKy8qIFVzZSBBSVgncyBwZXJmc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC4gKi8KKyN1bmRlZiBVU0VfUEVSRlNUQVQKKworLyogVXNlIExpbnV4J3MgcHJvY3N0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuICovCisjdW5kZWYgVVNFX1BST0NfU1RBVAorCisvKiBVc2UgSFAtVVgncyBwc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC4gKi8KKyN1bmRlZiBVU0VfUFNUQVQKKworLyogVXNlIE11bWJsZUJTRCdzIHN5c2N0bCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC4gKi8KKyN1bmRlZiBVU0VfU1lTQ1RMCisKKy8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KKyN1bmRlZiBWRVJTSU9OCisKKy8qIERlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBEQ0NQIHRlc3RzLiAqLworI3VuZGVmIFdBTlRfRENDUAorCisvKiBEZWZpbmUgdG8gb25lIHRvIGVuYWJsZSBkZW1vIHN1cHBvcnQuIE1heSBhZmZlY3QgcmVzdWx0cy4gKi8KKyN1bmRlZiBXQU5UX0RFTU8KKworLyogRGVmaW5lIHRvIG9uZSB0byBpbmNsdWRlIERMUEkgdGVzdHMuICovCisjdW5kZWYgV0FOVF9ETFBJCisKKy8qIERlZmluZSB0byBvbmUgdG8gZW5hYmxlIGluaXRpYWwgX1JSIGJ1cnN0IHN1cHBvcnQuIE1heSBhZmZlY3QgcmVzdWx0cy4gKi8KKyN1bmRlZiBXQU5UX0ZJUlNUX0JVUlNUCisKKy8qIERlZmluZSB0byBvbmUgdG8gZW5hYmxlIGhpc3RvZ3JhbSBzdXBwb3J0LiBNYXkgYWZmZWN0IHJlc3VsdHMuICovCisjdW5kZWYgV0FOVF9ISVNUT0dSQU0KKworLyogRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgcGFjZWQgb3BlcmF0aW9uIHN1cHBvcnQuIE1heSBhZmZlY3QgcmVzdWx0cy4gKi8KKyN1bmRlZiBXQU5UX0lOVEVSVkFMUworCisvKiBEZWZpbmUgdG8gb25lIHRvIG1pZ3JhdGUgY2xhc3NpYyB0byBPTU5JIHRlc3RzLiAqLworI3VuZGVmIFdBTlRfTUlHUkFUSU9OCisKKy8qIERlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBPTU5JIHRlc3RzLiAqLworI3VuZGVmIFdBTlRfT01OSQorCisvKiBEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgU0NUUCB0ZXN0cy4gKi8KKyN1bmRlZiBXQU5UX1NDVFAKKworLyogRGVmaW5lIHRvIG9uZSB0byBpbmNsdWRlIFNEUCB0ZXN0cy4gKi8KKyN1bmRlZiBXQU5UX1NEUAorCisvKiBEZWZpbmUgdG8gb25lIHRvIHNwaW4gd2FpdGluZyBvbiBwYWNlZCBvcGVyYXRpb24uIFdJTEwgQUZGRUZDVCBDUFUKKyAgIFVUSUxJWkFUSU9OICovCisjdW5kZWYgV0FOVF9TUElOCisKKy8qIERlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBVbml4IERvbWFpbiBzb2NrZXQgdGVzdHMuICovCisjdW5kZWYgV0FOVF9VTklYCisKKy8qIERlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBYVEkgdGVzdHMuICovCisjdW5kZWYgV0FOVF9YVEkKKworLyogTnVtYmVyIG9mIGJpdHMgaW4gYSBmaWxlIG9mZnNldCwgb24gaG9zdHMgd2hlcmUgdGhpcyBpcyBzZXR0YWJsZS4gKi8KKyN1bmRlZiBfRklMRV9PRkZTRVRfQklUUworCisvKiBEZWZpbmUgZm9yIGxhcmdlIGZpbGVzLCBvbiBBSVgtc3R5bGUgaG9zdHMuICovCisjdW5kZWYgX0xBUkdFX0ZJTEVTCisKKy8qIERlZmluZSB0byBlbXB0eSBpZiBgY29uc3QnIGRvZXMgbm90IGNvbmZvcm0gdG8gQU5TSSBDLiAqLworI3VuZGVmIGNvbnN0CisKKy8qIHR5cGUgdG8gdXNlIGluIHBsYWNlIG9mIHNvY2tsZW5fdCBpZiBub3QgZGVmaW5lZCAqLworI3VuZGVmIG5ldHBlcmZfc29ja2xlbl90CisKKy8qIERlZmluZSB0byBgbG9uZyBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworI3VuZGVmIG9mZl90CisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBwaWRfdAorCisvKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgc2l6ZV90CisKKy8qIERlZmluZSBhcyBgZm9yaycgaWYgYHZmb3JrJyBkb2VzIG5vdCB3b3JrLiAqLworI3VuZGVmIHZmb3JrCmRpZmYgLS1naXQgYS9jb25maWcuc3ViIGIvY29uZmlnLnN1YgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xYzM2NmRmCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnLnN1YgpAQCAtMCwwICsxLDE1NzkgQEAKKyMhIC9iaW4vc2gKKyMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMDUtMDctMDgnCisKKyMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgorIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCisjIGNhbiBoYW5kbGUgdGhhdCBtYWNoaW5lLiAgSXQgZG9lcyBub3QgaW1wbHkgQUxMIEdOVSBzb2Z0d2FyZSBjYW4uCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCAtIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisjIDAyMTEwLTEzMDEsIFVTQS4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0CisjIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMKKyMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCisjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KKyMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCisKKyMgVGhpcyBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwgR05VIHBhY2thZ2VzCisjIGFuZCByZWNvZ25pemUgYWxsIHRoZSBDUFUgdHlwZXMsIHN5c3RlbSB0eXBlcyBhbmQgYWxpYXNlcworIyB0aGF0IGFyZSBtZWFuaW5nZnVsIHdpdGggKmFueSogR05VIHNvZnR3YXJlLgorIyBFYWNoIHBhY2thZ2UgaXMgcmVzcG9uc2libGUgZm9yIHJlcG9ydGluZyB3aGljaCB2YWxpZCBjb25maWd1cmF0aW9ucworIyBpdCBkb2VzIG5vdCBzdXBwb3J0LiAgVGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2gKKyMgYSBmYWlsdXJlIHRvIHN1cHBvcnQgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZyb20gYSBtZWFuaW5nbGVzcworIyBjb25maWd1cmF0aW9uLgorCisjIFRoZSBnb2FsIG9mIHRoaXMgZmlsZSBpcyB0byBtYXAgYWxsIHRoZSB2YXJpb3VzIHZhcmlhdGlvbnMgb2YgYSBnaXZlbgorIyBtYWNoaW5lIHNwZWNpZmljYXRpb24gaW50byBhIHNpbmdsZSBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorIyBvciBpbiBzb21lIGNhc2VzLCB0aGUgbmV3ZXIgZm91ci1wYXJ0IGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBJdCBpcyB3cm9uZyB0byBlY2hvIGFueSBvdGhlciB0eXBlIG9mIHNwZWNpZmljYXRpb24uCisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dIENQVS1NRlItT1BTWVMKKyAgICAgICAkMCBbT1BUSU9OXSBBTElBUworCitDYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIG5hbWUuCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCisKK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIKKyAgICAgICBleGl0IDEgOzsKKworICAgICpsb2NhbCopCisgICAgICAgIyBGaXJzdCBwYXNzIHRocm91Z2ggYW55IGxvY2FsIG1hY2hpbmUgdHlwZXMuCisgICAgICAgZWNobyAkMQorICAgICAgIGV4aXQgOzsKKworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworY2FzZSAkIyBpbgorIDApIGVjaG8gIiRtZTogbWlzc2luZyBhcmd1bWVudCRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworIDEpIDs7CisgKikgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKK2VzYWMKKworIyBTZXBhcmF0ZSB3aGF0IHRoZSB1c2VyIGdhdmUgaW50byBDUFUtQ09NUEFOWSBhbmQgT1Mgb3IgS0VSTkVMLU9TIChpZiBhbnkpLgorIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KK21heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAorY2FzZSAkbWF5YmVfb3MgaW4KKyAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwgXAorICBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCisgICAgb3M9LSRtYXliZV9vcworICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCisgICAgOzsKKyAgKikKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzLy1bXi1dKiQvLydgCisgICAgaWYgWyAkYmFzaWNfbWFjaGluZSAhPSAkMSBdCisgICAgdGhlbiBvcz1gZWNobyAkMSB8IHNlZCAncy8uKi0vLS8nYAorICAgIGVsc2Ugb3M9OyBmaQorICAgIDs7Citlc2FjCisKKyMjIyBMZXQncyByZWNvZ25pemUgY29tbW9uIG1hY2hpbmVzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcyBzbworIyMjIHRoYXQgdGhpbmdzIGxpa2UgY29uZmlnLnN1YiBkZWNzdGF0aW9uLTMxMDAgd29yay4gIFdlIGFsc28KKyMjIyByZWNvZ25pemUgc29tZSBtYW51ZmFjdHVyZXJzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcywgc28gd2UKKyMjIyBjYW4gcHJvdmlkZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIGJlbG93LgorY2FzZSAkb3MgaW4KKwktc3VuKm9zKikKKwkJIyBQcmV2ZW50IGZvbGxvd2luZyBjbGF1c2UgZnJvbSBoYW5kbGluZyB0aGlzIGludmFsaWQgaW5wdXQuCisJCTs7CisJLWRlYyogfCAtbWlwcyogfCAtc2VxdWVudCogfCAtZW5jb3JlKiB8IC1wYzUzMiogfCAtc2dpKiB8IC1zb255KiB8IFwKKwktYXR0KiB8IC03MzAwKiB8IC0zMzAwKiB8IC1kZWx0YSogfCAtbW90b3JvbGEqIHwgLXN1blsyMzRdKiB8IFwKKwktdW5pY29tKiB8IC1pYm0qIHwgLW5leHQgfCAtaHAgfCAtaXNpKiB8IC1hcG9sbG8gfCAtYWx0b3MqIHwgXAorCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCisJLWNbMTIzXSogfCAtY29udmV4KiB8IC1zdW4gfCAtY3JkcyB8IC1vbXJvbiogfCAtZGcgfCAtdWx0cmEgfCAtdHRpKiB8IFwKKwktaGFycmlzIHwgLWRvbHBoaW4gfCAtaGlnaGxldmVsIHwgLWdvdWxkIHwgLWNibSB8IC1ucyB8IC1tYXNzY29tcCB8IFwKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5KQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1zY291dCkKKwkJOzsKKwktd3JzKQorCQlvcz0tdnh3b3JrcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1c29zKikKKwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKyAJLWNob3J1c3JkYikKKyAJCW9zPS1jaG9ydXNyZGIKKwkJYmFzaWNfbWFjaGluZT0kMQorIAkJOzsKKwktaGl1eCopCisJCW9zPS1oaXV4d2UyCisJCTs7CisJLXNjbzUpCisJCW9zPS1zY28zLjJ2NQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzQpCisJCW9zPS1zY28zLjJ2NAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMi5bNC05XSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy9zY28zLjIuL3NjbzMuMnYvJ2AKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjJ2WzQtOV0qKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbyopCisJCW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXVkayopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktaXNjKQorCQlvcz0taXNjMi4yCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktY2xpeCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1pbnRlcmdyYXBoCisJCTs7CisJLWlzYyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3NudCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsKKwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2RlIGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGNsaXBwZXIgXAorCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKKwl8IGZyMzAgfCBmcnYgXAorCXwgaDgzMDAgfCBoODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0IFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgfCBtYXhxIHwgbWNvcmUgXAorCXwgbWlwcyB8IG1pcHNiZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAorCXwgbWlwczY0IHwgbWlwczY0ZWwgXAorCXwgbWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKKwl8IG1pcHM2NG9yaW9uIHwgbWlwczY0b3Jpb25lbCBcCisJfCBtaXBzNjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBlbCBcCisJfCBtaXBzNjR2cjQzMDAgfCBtaXBzNjR2cjQzMDBlbCBcCisJfCBtaXBzNjR2cjUwMDAgfCBtaXBzNjR2cjUwMDBlbCBcCisJfCBtaXBzNjR2cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBcCisJfCBtaXBzaXNhMzIgfCBtaXBzaXNhMzJlbCBcCisJfCBtaXBzaXNhMzJyMiB8IG1pcHNpc2EzMnIyZWwgXAorCXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAorCXwgbWlwc2lzYTY0cjIgfCBtaXBzaXNhNjRyMmVsIFwKKwl8IG1pcHNpc2E2NHNiMSB8IG1pcHNpc2E2NHNiMWVsIFwKKwl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCisJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAorCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbXMxIFwKKwl8IG1zcDQzMCBcCisJfCBuczE2ayB8IG5zMzJrIFwKKwl8IG9yMzIgXAorCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBwY2JlIFwKKwl8IHB5cmFtaWQgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2g2NCB8IHNoNjRsZSBcCisJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAorCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiBcCisJfCBzdHJvbmdhcm0gXAorCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKKwl8IHY4NTAgfCB2ODUwZSBcCisJfCB3ZTMyayBcCisJfCB4ODYgfCB4c2NhbGUgfCB4c2NhbGVlW2JsXSB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB6OGspCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCW0zMmMpCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMikKKwkJIyBNb3Rvcm9sYSA2OEhDMTEvMTIuCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbm9uZQorCQk7OworCW04ODExMCB8IG02ODBbMTIzNDZdMCB8IG02ODM/MiB8IG02ODM2MCB8IG01MjAwIHwgdjcwIHwgdzY1IHwgejhrKQorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKKwkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKKwkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCisJaSo4NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtcGMKKwkgIDs7CisJIyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29yZC4KKwkqLSotKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgwLSogXAorCXwgYTI5ay0qIFwKKwl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1Ni0qIHwgYWxwaGFldjZbNzhdLSogXAorCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8IGFscGhhNjRldjU2LSogfCBhbHBoYTY0ZXY2Wzc4XS0qIFwKKwl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCisJfCBhdnItKiBcCisJfCBiZmluLSogfCBiczIwMDAtKiBcCisJfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiB8IGM1NHgtKiB8IGM1NXgtKiB8IGM2eC0qIFwKKwl8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCisJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisJfCBlbHhzaS0qIFwKKwl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKKwl8IGg4MzAwLSogfCBoODUwMC0qIFwKKwl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCisJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAorCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbTMyci0qIHwgbTMycmxlLSogXAorCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKKwl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiBcCisJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCisJfCBtaXBzMTYtKiBcCisJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAorCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjRvcmlvbi0qIHwgbWlwczY0b3Jpb25lbC0qIFwKKwl8IG1pcHM2NHZyNDEwMC0qIHwgbWlwczY0dnI0MTAwZWwtKiBcCisJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2NHZyNDMwMGVsLSogXAorCXwgbWlwczY0dnI1MDAwLSogfCBtaXBzNjR2cjUwMDBlbC0qIFwKKwl8IG1pcHM2NHZyNTkwMC0qIHwgbWlwczY0dnI1OTAwZWwtKiBcCisJfCBtaXBzaXNhMzItKiB8IG1pcHNpc2EzMmVsLSogXAorCXwgbWlwc2lzYTMycjItKiB8IG1pcHNpc2EzMnIyZWwtKiBcCisJfCBtaXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAorCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRzYjEtKiB8IG1pcHNpc2E2NHNiMWVsLSogXAorCXwgbWlwc2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCisJfCBtaXBzdHgzOS0qIHwgbWlwc3R4MzllbC0qIFwKKwl8IG1taXgtKiBcCisJfCBtczEtKiBcCisJfCBtc3A0MzAtKiBcCisJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKwl8IG9yaW9uLSogXAorCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCisJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAorCXwgcHlyYW1pZC0qIFwKKwl8IHJvbXAtKiB8IHJzNjAwMC0qIFwKKwl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoYmUtKiBcCisJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKKwl8IHNwYXJjLSogfCBzcGFyYzY0LSogfCBzcGFyYzY0Yi0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAorCXwgc3BhcmNsaXRlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCisJfCB0YWhvZS0qIHwgdGh1bWItKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0cm9uLSogXAorCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHZheC0qIFwKKwl8IHdlMzJrLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKwl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhLSogXAorCXwgeW1wLSogXAorCXwgejhrLSopCisJCTs7CisJbTMyYy0qKQorCQk7OworCSMgUmVjb2duaXplIHRoZSB2YXJpb3VzIG1hY2hpbmUgbmFtZXMgYW5kIGFsaWFzZXMgd2hpY2ggc3RhbmQKKwkjIGZvciBhIENQVSB0eXBlIGFuZCBhIGNvbXBhbnkgYW5kIHNvbWV0aW1lcyBldmVuIGFuIE9TLgorCTM4NmJzZCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LWJzZAorCQk7OworCTNiMSB8IDczMDAgfCA3MzAwLWF0dCB8IGF0dC03MzAwIHwgcGM3MzAwIHwgc2FmYXJpIHwgdW5peHBjKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1hdHQKKwkJOzsKKwkzYiopCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJYTI5a2hpZikKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisgICAgCWFiYWN1cykKKwkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNoaW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJYmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNfbWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWlnYXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQKKwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lzdgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1ic2QKKwkJOzsKKwlhdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQlvcz0tYXV4CisJCTs7CisJYmFsYW5jZSkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCWM5MCkKKwkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19tYWNoaW5lPWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19tYWNoaW5lPWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNfbWFjaGluZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNpY19tYWNoaW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJhc2ljX21hY2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJYmFzaWNfbWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQliYXNpY19tYWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTZjKQorCQliYXNpY19tYWNoaW5lPWNyMTZjLXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWNyZHMgfCB1bm9zKQorCQliYXNpY19tYWNoaW5lPW02OGstY3JkcworCQk7OworCWNyaXN2MzIgfCBjcmlzdjMyLSogfCBldHJheGZzKikKKwkJYmFzaWNfbWFjaGluZT1jcmlzdjMyLWF4aXMKKwkJOzsKKwljcmlzIHwgY3Jpcy0qIHwgZXRyYXgqKQorCQliYXNpY19tYWNoaW5lPWNyaXMtYXhpcworCQk7OworCWNyeCkKKwkJYmFzaWNfbWFjaGluZT1jcngtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CisJZGEzMCB8IGRhMzAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKwkJOzsKKwlkZWNzdGF0aW9uIHwgZGVjc3RhdGlvbi0zMTAwIHwgcG1heCB8IHBtYXgtKiB8IHBtaW4gfCBkZWMzMTAwIHwgZGVjc3RhdG4pCisJCWJhc2ljX21hY2hpbmU9bWlwcy1kZWMKKwkJOzsKKwlkZWNzeXN0ZW0xMCogfCBkZWMxMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMTAKKwkJOzsKKwlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMjAKKwkJOzsKKwlkZWx0YSB8IDMzMDAgfCBtb3Rvcm9sYS0zMzAwIHwgbW90b3JvbGEtZGVsdGEgXAorCSAgICAgIHwgMzMwMC1tb3Rvcm9sYSB8IGRlbHRhLW1vdG9yb2xhKQorCQliYXNpY19tYWNoaW5lPW02OGstbW90b3JvbGEKKwkJOzsKKwlkZWx0YTg4KQorCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKwkJb3M9LXN5c3YzCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4MiotYnVsbCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZWJtb24yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LWVibW9uCisJCTs7CisJZWx4c2kpCisJCWJhc2ljX21hY2hpbmU9ZWx4c2ktZWx4c2kKKwkJb3M9LWJzZAorCQk7OworCWVuY29yZSB8IHVtYXggfCBtbWF4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLWVuY29yZQorCQk7OworCWVzMTgwMCB8IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9TRSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlmeDI4MDApCisJCWJhc2ljX21hY2hpbmU9aTg2MC1hbGxpYW50CisJCTs7CisJZ2VuaXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstbnMKKwkJOzsKKwlnbWljcm8pCisJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KKwkJb3M9LXN5c3YKKwkJOzsKKwlnbzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWdvMzIKKwkJOzsKKwloMzA1MHIqIHwgaGl1eCopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJaDgzMDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJaDgzMDB4cmF5KQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9LXhyYXkKKwkJOzsKKwloODUwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODUwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloYXJyaXMpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LXN5c3YzCisJCTs7CisJaHAzMDAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHAzMDBic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0tYnNkCisJCTs7CisJaHAzMDBocHV4KQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWhwdXgKKwkJOzsKKwlocDNrOVswLTldWzAtOV0gfCBocDlbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocDlrMlswLTldWzAtOV0gfCBocDlrMzFbMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtaHAKKwkJOzsKKwlocDlrM1syLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQk7OworCWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azc4WzAtOV0gfCBocDc4WzAtOV0pCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0gfCBocDgwWzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwcGEtbmV4dCkKKwkJb3M9LW5leHRzdGVwMworCQk7OworCWhwcGFvc2YpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tb3NmCisJCTs7CisJaHBwcm8pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tcHJvZWxmCisJCTs7CisJaTM3MC1pYm0qIHwgaWJtKikKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQk7OworIyBJJ20gbm90IHN1cmUgd2hhdCAiU3lzdjMyIiBtZWFucy4gIFNob3VsZCB0aGlzIGJlIHN5c3YzLjI/CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJCW9zPS1zeXN2CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlwcworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCisJCW9zPS1zeXN2CisJCTs7CisJbWluZ3czMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJbWluaWZyYW1lKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1jb252ZXJnZW50CisJCTs7CisJKm1pbnQgfCAtbWludFswLTldKiB8ICpNaU5UIHwgKk1pTlRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworCW1pcHMzKi0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYAorCQk7OworCW1pcHMzKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgorCQk7OworCW1vbml0b3IpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwltb3JwaG9zKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQlvcz0tbW9ycGhvcworCQk7OworCW1zZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1zZG9zCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwluY3IzMDAwKQorCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCisJCW9zPS1zeXN2NAorCQk7OworCW5ldGJzZDM4NikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LW5ldGJzZAorCQk7OworCW5ldHdpbmRlcikKKwkJYmFzaWNfbWFjaGluZT1hcm12NGwtcmViZWwKKwkJb3M9LWxpbnV4CisJCTs7CisJbmV3cyB8IG5ld3M3MDAgfCBuZXdzODAwIHwgbmV3czkwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MxMDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzLTM2MDAgfCByaXNjLW5ld3MpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZWN2NzApCisJCWJhc2ljX21hY2hpbmU9djcwLW5lYworCQlvcz0tc3lzdgorCQk7OworCW5leHQgfCBtKi1uZXh0ICkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5leHQKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1uZXh0c3RlcCogKQorCQkJOzsKKwkJICAgIC1uczIqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAyCisJCQk7OworCQkgICAgKikKKwkJICAgICAgb3M9LW5leHRzdGVwMworCQkJOzsKKwkJZXNhYworCQk7OworCW5oMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5oWzQ1XTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5pbmR5OTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW5pbmR5CisJCTs7CisJbW9uOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW1vbjk2MAorCQk7OworCW5vbnN0b3B1eCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQorCQlvcz0tbm9uc3RvcHV4CisJCTs7CisJbnAxKQorCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorCQk7OworCW5zci10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNyLXRhbmRlbQorCQk7OworCW9wNTBuLSogfCBvcDYwYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlvcGVucmlzYyB8IG9wZW5yaXNjLSopCisJCWJhc2ljX21hY2hpbmU9b3IzMi11bmtub3duCisJCTs7CisJb3M0MDApCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LW9zNDAwCisJCTs7CisJT1NFNjgwMDAgfCBvc2U2ODAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCW9zNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstbm9uZQorCQlvcz0tb3M2OGsKKwkJOzsKKwlwYS1oaXRhY2hpKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1eHdlMgorCQk7OworCXBhcmFnb24pCisJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorCQlvcz0tb3NmCisJCTs7CisJcGJkKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXR0aQorCQk7OworCXBiYikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXR0aQorCQk7OworCXBjNTMyIHwgcGM1MzItKikKKwkJYmFzaWNfbWFjaGluZT1uczMyay1wYzUzMgorCQk7OworCXBlbnRpdW0gfCBwNSB8IGs1IHwgazYgfCBuZXhnZW4gfCB2aWFjMykKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCTs7CisJcGVudGl1bXBybyB8IHA2IHwgNng4NiB8IGF0aGxvbiB8IGF0aGxvbl8qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtaWkgfCBwZW50aXVtMiB8IHBlbnRpdW1paWkgfCBwZW50aXVtMykKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bTQpCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1wYworCQk7OworCXBlbnRpdW0tKiB8IHA1LSogfCBrNS0qIHwgazYtKiB8IG5leGdlbi0qIHwgdmlhYzMtKikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bXByby0qIHwgcDYtKiB8IDZ4ODYtKiB8IGF0aGxvbi0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtaWktKiB8IHBlbnRpdW0yLSogfCBwZW50aXVtaWlpLSogfCBwZW50aXVtMy0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtNC0qKQorCQliYXNpY19tYWNoaW5lPWk3ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwbikKKwkJYmFzaWNfbWFjaGluZT1wbi1nb3VsZAorCQk7OworCXBvd2VyKQliYXNpY19tYWNoaW5lPXBvd2VyLWlibQorCQk7OworCXBwYykJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJOzsKKwlwcGMtKikJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxlIHwgcG93ZXJwYy1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KKwkJOzsKKwlwcGNsZS0qIHwgcG93ZXJwY2xpdHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0KQliYXNpY19tYWNoaW5lPXBvd2VycGM2NC11bmtub3duCisJCTs7CisJcHBjNjQtKikgYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NGxlIHwgcG93ZXJwYzY0bGl0dGxlIHwgcHBjNjQtbGUgfCBwb3dlcnBjNjQtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLXVua25vd24KKwkJOzsKKwlwcGM2NGxlLSogfCBwb3dlcnBjNjRsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBzMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LWlibQorCQk7OworCXB3MzIpCisJCWJhc2ljX21hY2hpbmU9aTU4Ni11bmtub3duCisJCW9zPS1wdzMyCisJCTs7CisJcm9tNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJcm1bNDZdMDApCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zaWVtZW5zCisJCTs7CisJcnRwYyB8IHJ0cGMtKikKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCXMzOTAgfCBzMzkwLSopCisJCWJhc2ljX21hY2hpbmU9czM5MC1pYm0KKwkJOzsKKwlzMzkweCB8IHMzOTB4LSopCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCTs7CisJc2EyOTIwMCkKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJc2IxKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMS11bmtub3duCisJCTs7CisJc2IxZWwpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxZWwtdW5rbm93bgorCQk7OworCXNlaSkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorCQlvcz0tc2VpdXgKKwkJOzsKKwlzZXF1ZW50KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQk7OworCXNoKQorCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCXNoNjQpCisJCWJhc2ljX21hY2hpbmU9c2g2NC11bmtub3duCisJCTs7CisJc3BhcmNsaXRlLXdycyB8IHNpbXNvLXdycykKKwkJYmFzaWNfbWFjaGluZT1zcGFyY2xpdGUtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJc3BzNykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YyCisJCTs7CisJc3B1cikKKwkJYmFzaWNfbWFjaGluZT1zcHVyLXVua25vd24KKwkJOzsKKwlzdDIwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay10YW5kZW0KKwkJOzsKKwlzdHJhdHVzKQorCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cworCQlvcz0tc3lzdjQKKwkJOzsKKwlzdW4yKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJOzsKKwlzdW4yb3MzKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjJvczQpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuM29zMykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuM29zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuNG9zMykKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjRvczQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40c29sMikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJc3VuMyB8IHN1bjMtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQk7OworCXN1bjQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJc3VuMzg2IHwgc3VuMzg2aSB8IHJvYWRydW5uZXIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zdW4KKwkJOzsKKwlzdjEpCisJCWJhc2ljX21hY2hpbmU9c3YxLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXN5bW1ldHJ5KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwl0M2UpCisJCWJhc2ljX21hY2hpbmU9YWxwaGFldjUtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJdDkwKQorCQliYXNpY19tYWNoaW5lPXQ5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0aWM1NHggfCBjNTR4KikKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eCB8IGM1NXgqKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNnggfCBjNngqKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKwkJb3M9LWNvZmYKKwkJOzsKKwl0eDM5KQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5LXVua25vd24KKwkJOzsKKwl0eDM5ZWwpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzllbC11bmtub3duCisJCTs7CisJdG9hZDEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTAteGtsCisJCW9zPS10b3BzMjAKKwkJOzsKKwl0b3dlciB8IHRvd2VyLTMyKQorCQliYXNpY19tYWNoaW5lPW02OGstbmNyCisJCTs7CisJdHBmKQorCQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQlvcz0tdHBmCisJCTs7CisJdWRpMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwl1bHRyYTMpCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ueXUKKwkJb3M9LXN5bTEKKwkJOzsKKwl2ODEwIHwgbmVjdjgxMCkKKwkJYmFzaWNfbWFjaGluZT12ODEwLW5lYworCQlvcz0tbm9uZQorCQk7OworCXZheHYpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQlvcz0tc3lzdgorCQk7OworCXZtcykKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCW9zPS12bXMKKwkJOzsKKwl2cHAqfHZ4fHZ4LSopCisJCWJhc2ljX21hY2hpbmU9ZjMwMS1mdWppdHN1CisJCTs7CisJdnh3b3Jrczk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3M2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3MyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl3NjUqKQorCQliYXNpY19tYWNoaW5lPXc2NS13ZGMKKwkJb3M9LW5vbmUKKwkJOzsKKwl3ODlrLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS13aW5ib25kCisJCW9zPS1wcm9lbGYKKwkJOzsKKwl4Ym94KQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwl4cHMgfCB4cHMxMDApCisJCWJhc2ljX21hY2hpbmU9eHBzMTAwLWhvbmV5d2VsbAorCQk7OworCXltcCkKKwkJYmFzaWNfbWFjaGluZT15bXAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJejhrLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16OGstdW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJbm9uZSkKKwkJYmFzaWNfbWFjaGluZT1ub25lLW5vbmUKKwkJb3M9LW5vbmUKKwkJOzsKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBtYW51ZmFjdHVyZXIgb2YgY2VydGFpbiBDUFUgdHlwZXMuICBJdCBpcyBpbgorIyBzb21lIGNhc2VzIHRoZSBvbmx5IG1hbnVmYWN0dXJlciwgaW4gb3RoZXJzLCBpdCBpcyB0aGUgbW9zdCBwb3B1bGFyLgorCXc4OWspCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS13aW5ib25kCisJCTs7CisJb3A1MG4pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlvcDYwYykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7OworCXJvbXApCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0KKwkJOzsKKwltbWl4KQorCQliYXNpY19tYWNoaW5lPW1taXgta251dGgKKwkJOzsKKwlyczYwMDApCisJCWJhc2ljX21hY2hpbmU9cnM2MDAwLWlibQorCQk7OworCXZheCkKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCTs7CisJcGRwMTApCisJCSMgdGhlcmUgYXJlIG1hbnkgY2xvbmVzLCBzbyBERUMgaXMgbm90IGEgc2FmZSBiZXQKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC11bmtub3duCisJCTs7CisJcGRwMTEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTEtZGVjCisJCTs7CisJd2UzMmspCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQorCQliYXNpY19tYWNoaW5lPXNoLXVua25vd24KKwkJOzsKKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJY3lkcmEpCisJCWJhc2ljX21hY2hpbmU9Y3lkcmEtY3lkcm9tZQorCQk7OworCW9yaW9uKQorCQliYXNpY19tYWNoaW5lPW9yaW9uLWhpZ2hsZXZlbAorCQk7OworCW9yaW9uMTA1KQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaGlnaGxldmVsCisJCTs7CisJbWFjIHwgbXB3IHwgbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCisJCTs7CisJcG1hYyB8IHBtYWMtbXB3KQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYXBwbGUKKwkJOzsKKwkqLXVua25vd24pCisJCSMgTWFrZSBzdXJlIHRvIG1hdGNoIGFuIGFscmVhZHktY2Fub25pY2FsaXplZCBtYWNoaW5lIG5hbWUuCisJCTs7CisJKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworCisjIEhlcmUgd2UgY2Fub25pY2FsaXplIGNlcnRhaW4gYWxpYXNlcyBmb3IgbWFudWZhY3R1cmVycy4KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLWRpZ2l0YWwqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2RpZ2l0YWwuKi9kZWMvJ2AKKwkJOzsKKwkqLWNvbW1vZG9yZSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvY29tbW9kb3JlLiovY2JtLydgCisJCTs7CisJKikKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgbWFudWZhY3R1cmVyLXNwZWNpZmljIGFsaWFzZXMgZm9yIGNlcnRhaW4gb3BlcmF0aW5nIHN5c3RlbXMuCisKK2lmIFsgeCIkb3MiICE9IHgiIiBdCit0aGVuCitjYXNlICRvcyBpbgorICAgICAgICAjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworICAgICAgICAjIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkIHdpdGggdmFsaWQgc3lzdGVtIHR5cGVzLgorCSMgLXNvbGFyaXMqIGlzIGEgYmFzaWMgc3lzdGVtIHR5cGUsIHdpdGggdGhpcyBvbmUgZXhjZXB0aW9uLgorCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCisJCTs7CisJLXNvbGFyaXMpCisJCW9zPS1zb2xhcmlzMgorCQk7OworCS1zdnI0KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXVuaXh3YXJlKikKKwkJb3M9LXN5c3Y0LjJ1dworCQk7OworCS1nbnUvbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8Z251L2xpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCSMgRmlyc3QgYWNjZXB0IHRoZSBiYXNpYyBzeXN0ZW0gdHlwZXMuCisJIyBUaGUgcG9ydGFibGUgc3lzdGVtcyBjb21lcyBmaXJzdC4KKwkjIEVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gQSAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQgY29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KKwktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1pbml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCisJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLXNvbGFyaXMqIHwgLXN5bSogXAorCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAorCSAgICAgIHwgLWFvcyogXAorCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCisJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1ydHUqIHwgLXhlbml4KiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogfCAtb3BlbmJzZCogXAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LXVjbGliYyogfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAorCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCisJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCisJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCisJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAorCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KikKKwkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJCTs7CisJLXFueCopCisJCWNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkJICAgIHg4Ni0qIHwgaSo4Ni0qKQorCQkJOzsKKwkJICAgICopCisJCQlvcz0tbnRvJG9zCisJCQk7OworCQllc2FjCisJCTs7CisJLW50by1xbngqKQorCQk7OworCS1udG8qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bnRvfG50by1xbnh8J2AKKwkJOzsKKwktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCisJICAgICAgfCAtd2luZG93cyogfCAtb3N4IHwgLWFidWcgfCAtbmV0d2FyZSogfCAtb3M5KiB8IC1iZW9zKiB8IC1oYWlrdSogXAorCSAgICAgIHwgLW1hY29zKiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8IC1sbmV3cyopCisJCTs7CisJLW1hYyopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xtYWN8bWFjb3N8J2AKKwkJOzsKKwktbGludXgtZGlldGxpYmMpCisJCW9zPS1saW51eC1kaWV0bGliYworCQk7OworCS1saW51eCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xsaW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwktc3Vub3M1KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNXxzb2xhcmlzMnwnYAorCQk7OworCS1zdW5vczYqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c3Vub3M2fHNvbGFyaXMzfCdgCisJCTs7CisJLW9wZW5lZCopCisJCW9zPS1vcGVuZWRpdGlvbgorCQk7OworICAgICAgICAtb3M0MDAqKQorCQlvcz0tb3M0MDAKKwkJOzsKKwktd2luY2UqKQorCQlvcz0td2luY2UKKwkJOzsKKwktb3Nmcm9zZSopCisJCW9zPS1vc2Zyb3NlCisJCTs7CisJLW9zZiopCisJCW9zPS1vc2YKKwkJOzsKKwktdXRlayopCisJCW9zPS1ic2QKKwkJOzsKKwktZHluaXgqKQorCQlvcz0tYnNkCisJCTs7CisJLWFjaXMqKQorCQlvcz0tYW9zCisJCTs7CisJLWF0aGVvcyopCisJCW9zPS1hdGhlb3MKKwkJOzsKKwktc3lsbGFibGUqKQorCQlvcz0tc3lsbGFibGUKKwkJOzsKKwktMzg2YnNkKQorCQlvcz0tYnNkCisJCTs7CisJLWN0aXgqIHwgLXV0cyopCisJCW9zPS1zeXN2CisJCTs7CisJLW5vdmEqKQorCQlvcz0tcnRtay1ub3ZhCisJCTs7CisJLW5zMiApCisJCW9zPS1uZXh0c3RlcDIKKwkJOzsKKwktbnNrKikKKwkJb3M9LW5zaworCQk7OworCSMgUHJlc2VydmUgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHNpbml4NS4KKwktc2luaXg1LiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzaW5peHxzeXN2fCdgCisJCTs7CisJLXNpbml4KikKKwkJb3M9LXN5c3Y0CisJCTs7CisgICAgICAgIC10cGYqKQorCQlvcz0tdHBmCisJCTs7CisJLXRyaXRvbiopCisJCW9zPS1zeXN2MworCQk7OworCS1vc3MqKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktc3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXN2cjMpCisJCW9zPS1zeXN2MworCQk7OworCS1zeXN2cjQpCisJCW9zPS1zeXN2NAorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgLXN5c3ZyNC4KKwktc3lzdiopCisJCTs7CisJLW9zZSopCisJCW9zPS1vc2UKKwkJOzsKKwktZXMxODAwKikKKwkJb3M9LW9zZQorCQk7OworCS14ZW5peCkKKwkJb3M9LXhlbml4CisJCTs7CisJLSptaW50IHwgLW1pbnRbMC05XSogfCAtKk1pTlQgfCAtTWlOVFswLTldKikKKwkJb3M9LW1pbnQKKwkJOzsKKwktYXJvcyopCisJCW9zPS1hcm9zCisJCTs7CisJLWthb3MqKQorCQlvcz0ta2FvcworCQk7OworCS16dm1vZSkKKwkJb3M9LXp2bW9lCisJCTs7CisJLW5vbmUpCisJCTs7CisJKikKKwkJIyBHZXQgcmlkIG9mIHRoZSBgLScgYXQgdGhlIGJlZ2lubmluZyBvZiAkb3MuCisJCW9zPWBlY2hvICRvcyB8IHNlZCAncy9bXi1dKi0vLydgCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogc3lzdGVtIFxgJG9zXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKK2Vsc2UKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IGNvbWUgd2l0aCB2YXJpb3VzIG1hY2hpbmVzLgorIyBUaGUgdmFsdWUgc2hvdWxkIGJlIHdoYXQgdGhlIHZlbmRvciBjdXJyZW50bHkgc2hpcHMgb3V0IHRoZSBkb29yIHdpdGggdGhlaXIKKyMgbWFjaGluZSBvciBwdXQgYW5vdGhlciB3YXksIHRoZSBtb3N0IHBvcHVsYXIgb3MgcHJvdmlkZWQgd2l0aCB0aGUgbWFjaGluZS4KKworIyBOb3RlIHRoYXQgaWYgeW91J3JlIGdvaW5nIHRvIHRyeSB0byBtYXRjaCAiLU1BTlVGQUNUVVJFUiIgaGVyZSAoc2F5LAorIyAiLXN1biIpLCB0aGVuIHlvdSBoYXZlIHRvIHRlbGwgdGhlIGNhc2Ugc3RhdGVtZW50IHVwIHRvd2FyZHMgdGhlIHRvcAorIyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgT3RoZXJ3aXNlLCBjb2RlIGFib3ZlCisjIHdpbGwgc2lnbmFsIGFuIGVycm9yIHNheWluZyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcKKyMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQuCisKK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLWFjb3JuKQorCQlvcz0tcmlzY2l4MS4yCisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1pKQorCQlvcz0tYW91dAorCQk7OworICAgIGM0eC0qIHwgdGljNHgtKikKKyAgICAgICAgb3M9LWNvZmYKKyAgICAgICAgOzsKKwkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50cnkuCisJcGRwMTAtKikKKwkJb3M9LXRvcHMyMAorCQk7OworCXBkcDExLSopCisJCW9zPS1ub25lCisJCTs7CisJKi1kZWMgfCB2YXgtKikKKwkJb3M9LXVsdHJpeDQuMgorCQk7OworCW02OCotYXBvbGxvKQorCQlvcz0tZG9tYWluCisJCTs7CisJaTM4Ni1zdW4pCisJCW9zPS1zdW5vczQuMC4yCisJCTs7CisJbTY4MDAwLXN1bikKKwkJb3M9LXN1bm9zMworCQkjIFRoaXMgYWxzbyBleGlzdHMgaW4gdGhlIGNvbmZpZ3VyZSBwcm9ncmFtLCBidXQgd2FzIG5vdCB0aGUKKwkJIyBkZWZhdWx0LgorCQkjIG9zPS1zdW5vczQKKwkJOzsKKwltNjgqLWNpc2NvKQorCQlvcz0tYW91dAorCQk7OworCW1pcHMqLWNpc2NvKQorCQlvcz0tZWxmCisJCTs7CisJbWlwcyotKikKKwkJb3M9LWVsZgorCQk7OworCW9yMzItKikKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLXR0aSkJIyBtdXN0IGJlIGJlZm9yZSBzcGFyYyBlbnRyeSBvciB3ZSBnZXQgdGhlIHdyb25nIG9zLgorCQlvcz0tc3lzdjMKKwkJOzsKKwlzcGFyYy0qIHwgKi1zdW4pCisJCW9zPS1zdW5vczQuMS4xCisJCTs7CisJKi1iZSkKKwkJb3M9LWJlb3MKKwkJOzsKKwkqLWhhaWt1KQorCQlvcz0taGFpa3UKKwkJOzsKKwkqLWlibSkKKwkJb3M9LWFpeAorCQk7OworICAgIAkqLWtudXRoKQorCQlvcz0tbW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkKKwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkKKwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0qIHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQorCQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJCW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNjdXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkqLW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJOzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJzZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlvcz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhwdgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwgYnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFjdHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWFpeCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsKKwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9yPWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdlbml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJdmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3MqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikKKwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMKKworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzkzNTg3MwotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZQpAQCAtMCwwICsxLDg2NTYgQEAKKyMhIC9iaW4vc2gKKyMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4IGZvciBuZXRwZXJmIDIuNy4wLgorIworIworIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisjCisjCisjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCisgIHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKAorICAqcG9zaXgqKSA6CisgICAgc2V0IC1vIHBvc2l4IDs7ICMoCisgICopIDoKKyAgICAgOzsKK2VzYWMKK2ZpCisKKworYXNfbmw9JworJworZXhwb3J0IGFzX25sCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgorYXNfZWNobz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KKyMgUHJlZmVyIGEga3NoIHNoZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLAorIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KK2lmIHRlc3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwKKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJworICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKK2VsaWYgKHRlc3QgIlhgcHJpbnRmICVzICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJworZWxzZQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEkYXNfbmwiJworICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKKyAgZWxzZQorICAgIGFzX2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCisgICAgYXNfZWNob19uX2JvZHk9J2V2YWwKKyAgICAgIGFyZz0kMTsKKyAgICAgIGNhc2UgJGFyZyBpbiAjKAorICAgICAgKiIkYXNfbmwiKikKKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKKwlhcmc9YGV4cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OworICAgICAgZXNhYzsKKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKKyAgICAnCisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5CisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycKKyAgZmkKKyAgZXhwb3J0IGFzX2VjaG9fYm9keQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCitmaQorCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgeworICAgIChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8CisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycKKyAgfQorZmkKKworCisjIElGUworIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgorIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkCisjIHNwbGl0dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCitJRlM9IiAiIgkkYXNfbmwiCisKKyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CitjYXNlICQwIGluICMoKAorICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CisgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgICAgOzsKK2VzYWMKKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKKyMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgorICBhc19teXNlbGY9JDAKK2ZpCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCisgICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCisgIGV4aXQgMQorZmkKKworIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbgorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdCAxIgorIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZAorIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUuMi4xNC4KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCisgICYmICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwgOgorZG9uZQorUFMxPSckICcKK1BTMj0nPiAnCitQUzQ9JysgJworCisjIE5MUyBudWlzYW5jZXMuCitMQ19BTEw9QworZXhwb3J0IExDX0FMTAorTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFCisKKyMgQ0RQQVRILgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCitpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgPSB4OyB0aGVuCisgIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCisgICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCisgIGFsaWFzIC1nICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicKKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKK2Vsc2UKKyAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygKKyAgKnBvc2l4KikgOgorICAgIHNldCAtbyBwb3NpeCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorIgorICBhc19yZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQorYXNfZm5fc3VjY2VzcyAoKSB7IGFzX2ZuX3JldHVybiAwOyB9Cithc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0dXJuIDE7IH0KK2FzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0KK2FzX2ZuX3JldF9mYWlsdXJlICgpIHsgcmV0dXJuIDE7IH0KKworZXhpdGNvZGU9MAorYXNfZm5fc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9Cithc19mbl9mYWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KK2FzX2ZuX3JldF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfc3VjY2VzcyBmYWlsZWQuOyB9Cithc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X2ZhaWx1cmUgc3VjY2VlZGVkLjsgfQoraWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0IHggPSBcIlwkMVwiICk7IHRoZW4gOgorCitlbHNlCisgIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLgorZmkKK3Rlc3QgeFwkZXhpdGNvZGUgPSB4MCB8fCBleGl0IDEiCisgIGFzX3N1Z2dlc3RlZD0iICBhc19saW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzFhPVwkTElORU5PCisgIGFzX2xpbmVub18yPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8KKyAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIgJiYKKyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4aXQgMQordGVzdCBcJCgoIDEgKyAxICkpID0gMiB8fCBleGl0IDEiCisgIGlmIChldmFsICIkYXNfcmVxdWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCitlbHNlCisgIGFzX2hhdmVfcmVxdWlyZWQ9bm8KK2ZpCisgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geHllcyAmJiAoZXZhbCAiJGFzX3N1Z2dlc3RlZCIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKworZWxzZQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCithc19mb3VuZD1mYWxzZQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICBhc19mb3VuZD06CisgIGNhc2UgJGFzX2RpciBpbiAjKAorCSAvKikKKwkgICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCisJICAgICAjIFRyeSBvbmx5IHNoZWxscyB0aGF0IGV4aXN0LCB0byBzYXZlIHNldmVyYWwgZm9ya3MuCisJICAgICBhc19zaGVsbD0kYXNfZGlyLyRhc19iYXNlCisJICAgICBpZiB7IHRlc3QgLWYgIiRhc19zaGVsbCIgfHwgdGVzdCAtZiAiJGFzX3NoZWxsLmV4ZSI7IH0gJiYKKwkJICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgQ09ORklHX1NIRUxMPSRhc19zaGVsbCBhc19oYXZlX3JlcXVpcmVkPXllcworCQkgICBpZiB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19zdWdnZXN0ZWQiIHwgYXNfcnVuPWEgIiRhc19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgorICBicmVhayAyCitmaQorZmkKKwkgICBkb25lOzsKKyAgICAgICBlc2FjCisgIGFzX2ZvdW5kPWZhbHNlCitkb25lCiskYXNfZm91bmQgfHwgeyBpZiB7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4ZSI7IH0gJiYKKwkgICAgICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1aXJlZCIgfCBhc19ydW49YSAiJFNIRUxMIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIENPTkZJR19TSEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKK2ZpOyB9CitJRlM9JGFzX3NhdmVfSUZTCisKKworICAgICAgaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiICE9IHg7IHRoZW4gOgorICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQorCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCisJIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKwkjIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCisJQkFTSF9FTlY9L2Rldi9udWxsCisJRU5WPS9kZXYvbnVsbAorCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgorCWV4cG9ydCBDT05GSUdfU0hFTEwKKwljYXNlICQtIGluICMgKCgoKAorCSAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CisJICAqdiogKSBhc19vcHRzPS12IDs7CisJICAqeCogKSBhc19vcHRzPS14IDs7CisJICAqICkgYXNfb3B0cz0gOzsKKwllc2FjCisJZXhlYyAiJENPTkZJR19TSEVMTCIgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQorZmkKKworICAgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKKyAgJGFzX2VjaG8gIiQwOiBUaGlzIHNjcmlwdCByZXF1aXJlcyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRoYW4gYWxsIgorICAkYXNfZWNobyAiJDA6IHRoZSBzaGVsbHMgdGhhdCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiIKKyAgaWYgdGVzdCB4JHtaU0hfVkVSU0lPTitzZXR9ID0geHNldCA7IHRoZW4KKyAgICAkYXNfZWNobyAiJDA6IEluIHBhcnRpY3VsYXIsIHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCIKKyAgICAkYXNfZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iCisgIGVsc2UKKyAgICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFib3V0IHlvdXIgc3lzdGVtLAorJDA6IGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzCiskMDogbWVzc2FnZS4gVGhlbiBpbnN0YWxsIGEgbW9kZXJuIHNoZWxsLCBvciBtYW51YWxseSBydW4KKyQwOiB0aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuIgorICBmaQorICBleGl0IDEKK2ZpCitmaQorZmkKK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CitleHBvcnQgU0hFTEwKKyMgVW5zZXQgbW9yZSB2YXJpYWJsZXMga25vd24gdG8gaW50ZXJmZXJlIHdpdGggYmVoYXZpb3Igb2YgY29tbW9uIHRvb2xzLgorQ0xJQ09MT1JfRk9SQ0U9IEdSRVBfT1BUSU9OUz0KK3Vuc2V0IENMSUNPTE9SX0ZPUkNFIEdSRVBfT1BUSU9OUworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE00c2ggU2hlbGwgRnVuY3Rpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIGFzX2ZuX3Vuc2V0IFZBUgorIyAtLS0tLS0tLS0tLS0tLS0KKyMgUG9ydGFibHkgdW5zZXQgVkFSLgorYXNfZm5fdW5zZXQgKCkKK3sKKyAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQorfQorYXNfdW5zZXQ9YXNfZm5fdW5zZXQKKworIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuCithc19mbl9zZXRfc3RhdHVzICgpCit7CisgIHJldHVybiAkMQorfSAjIGFzX2ZuX3NldF9zdGF0dXMKKworIyBhc19mbl9leGl0IFNUQVRVUworIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUiIGNvbnRleHQuCithc19mbl9leGl0ICgpCit7CisgIHNldCArZQorICBhc19mbl9zZXRfc3RhdHVzICQxCisgIGV4aXQgJDEKK30gIyBhc19mbl9leGl0CisKKyMgYXNfZm5fbWtkaXJfcAorIyAtLS0tLS0tLS0tLS0tCisjIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4KK2FzX2ZuX21rZGlyX3AgKCkKK3sKKworICBjYXNlICRhc19kaXIgaW4gIygKKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7OworICBlc2FjCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgeworICAgIGFzX2RpcnM9CisgICAgd2hpbGUgOjsgZG8KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCisgICAgICAqKSBhc19xZGlyPSRhc19kaXI7OworICAgICAgZXNhYworICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKKyAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19kaXIiIHx8CiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWCIkYXNfZGlyIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCisgICAgZG9uZQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKworCit9ICMgYXNfZm5fbWtkaXJfcAorIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCisjIGltcGxlbWVudGF0aW9ucy4KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCisgIHsKKyAgICBldmFsICQxKz1cJDIKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXBwZW5kICgpCisgIHsKKyAgICBldmFsICQxPVwkJDFcJDIKKyAgfQorZmkgIyBhc19mbl9hcHBlbmQKKworIyBhc19mbl9hcml0aCBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKKyMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cworIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgorICBldmFsICdhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPSQoKCAkKiApKQorICB9JworZWxzZQorICBhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWAKKyAgfQorZmkgIyBhc19mbl9hcml0aAorCisKKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorYXNfZm5fZXJyb3IgKCkKK3sKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgorICBhc19mbl9leGl0ICRhc19zdGF0dXMKK30gIyBhc19mbl9lcnJvcgorCitpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKK2Vsc2UKKyAgYXNfYmFzZW5hbWU9ZmFsc2UKK2ZpCisKK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc19kaXJuYW1lPWRpcm5hbWUKK2Vsc2UKKyAgYXNfZGlybmFtZT1mYWxzZQorZmkKKworYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8CiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgvIiQwIiB8CisgICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCithc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJworYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKKworCisgIGFzX2xpbmVub18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8KKyAgYXNfbGluZW5vXzI9JExJTkVOTyBhc19saW5lbm9fMmE9JExJTkVOTworICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAhPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKKyAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgeworICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkKKyAgc2VkIC1uICcKKyAgICBwCisgICAgL1skXUxJTkVOTy89CisgICcgPCRhc19teXNlbGYgfAorICAgIHNlZCAnCisgICAgICBzL1skXUxJTkVOTy4qLyYtLworICAgICAgdCBsaW5lbm8KKyAgICAgIGIKKyAgICAgIDpsaW5lbm8KKyAgICAgIE4KKyAgICAgIDpsb29wCisgICAgICBzL1skXUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KKyAgICAgIHQgbG9vcAorICAgICAgcy8tXG4uKi8vCisgICAgJyA+JGFzX21lLmxpbmVubyAmJgorICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIgfHwKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBhc19mbl9leGl0IDE7IH0KKworICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcworICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKKyAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4KKyAgLiAiLi8kYXNfbWUubGluZW5vIgorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3QgY29tbWFuZC4KKyAgZXhpdAorfQorCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQorY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKKy1uKikKKyAgY2FzZSBgZWNobyAneHlcYydgIGluCisgICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgorICB4eSkgIEVDSE9fQz0nXGMnOzsKKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbAorICAgICAgIEVDSE9fVD0nCSc7OworICBlc2FjOzsKKyopCisgIEVDSE9fTj0nLW4nOzsKK2VzYWMKKworcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlCitlbHNlCisgIHJtIC1mIGNvbmYkJC5kaXIKKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorZmkKK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz0nbG4gLXMnCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgorICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuCisgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAorICAgICAgYXNfbG5fcz0nY3AgLXAnCisgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz1sbgorICBlbHNlCisgICAgYXNfbG5fcz0nY3AgLXAnCisgIGZpCitlbHNlCisgIGFzX2xuX3M9J2NwIC1wJworZmkKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKK3JtZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKKworaWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKK2lmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdGVzdF94PSd0ZXN0IC14JworZWxzZQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBhc19sc19MX29wdGlvbj1MCisgIGVsc2UKKyAgICBhc19sc19MX29wdGlvbj0KKyAgZmkKKyAgYXNfdGVzdF94PScKKyAgICBldmFsIHNoIC1jICdcJycKKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorCXRlc3QgLWQgIiQxLy4iOworICAgICAgZWxzZQorCWNhc2UgJDEgaW4gIygKKwktKilzZXQgIi4vJDEiOzsKKwllc2FjOworCWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKAorCT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkKKyAgICAnXCcnIHNoCisgICcKK2ZpCithc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisKKwordGVzdCAtbiAiJERKRElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAorZXhlYyA2PiYxCisKKyMgTmFtZSBvZiB0aGUgaG9zdC4KKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKKyMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgorYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCisKKyMKKyMgSW5pdGlhbGl6YXRpb25zLgorIworYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9sb2NhbAorYWNfY2xlYW5fZmlsZXM9CithY19jb25maWdfbGlib2JqX2Rpcj0uCitMSUJPQkpTPQorY3Jvc3NfY29tcGlsaW5nPW5vCitzdWJkaXJzPQorTUZMQUdTPQorTUFLRUZMQUdTPQorCisjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KK1BBQ0tBR0VfTkFNRT0nbmV0cGVyZicKK1BBQ0tBR0VfVEFSTkFNRT0nbmV0cGVyZicKK1BBQ0tBR0VfVkVSU0lPTj0nMi43LjAnCitQQUNLQUdFX1NUUklORz0nbmV0cGVyZiAyLjcuMCcKK1BBQ0tBR0VfQlVHUkVQT1JUPScnCitQQUNLQUdFX1VSTD0nJworCithY191bmlxdWVfZmlsZT0ic3JjL2hpc3QuaCIKK2FjX2NvbmZpZ19saWJvYmpfZGlyPXNyYy9taXNzaW5nCisjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCithY19pbmNsdWRlc19kZWZhdWx0PSJcCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR19ICisjIGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKKyMgIGluY2x1ZGUgPG1lbW9yeS5oPgorIyBlbmRpZgorIyBpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1RSSU5HU19ICisjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVERJTlRfSAorIyBpbmNsdWRlIDxzdGRpbnQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYiCisKK2FjX2hlYWRlcl9saXN0PQorYWNfc3Vic3RfdmFycz0nYW1fX0VYRUVYVF9GQUxTRQorYW1fX0VYRUVYVF9UUlVFCitMVExJQk9CSlMKK05FVENQVV9TT1VSQ0UKK05FRURfTElCQ09NUEFUX0ZBTFNFCitORUVEX0xJQkNPTVBBVF9UUlVFCitMSUJPQkpTCitFR1JFUAorR1JFUAorQ1BQCitSQU5MSUIKK2FtX19mYXN0ZGVwQ0NfRkFMU0UKK2FtX19mYXN0ZGVwQ0NfVFJVRQorQ0NERVBNT0RFCithbV9fbm9kZXAKK0FNREVQQkFDS1NMQVNICitBTURFUF9GQUxTRQorQU1ERVBfVFJVRQorYW1fX3F1b3RlCithbV9faW5jbHVkZQorREVQRElSCitPQkpFWFQKK0VYRUVYVAorYWNfY3RfQ0MKK0NQUEZMQUdTCitMREZMQUdTCitDRkxBR1MKK0NDCithbV9fdW50YXIKK2FtX190YXIKK0FNVEFSCithbV9fbGVhZGluZ19kb3QKK1NFVF9NQUtFCitBV0sKK21rZGlyX3AKK01LRElSX1AKK0lOU1RBTExfU1RSSVBfUFJPR1JBTQorU1RSSVAKK2luc3RhbGxfc2gKK01BS0VJTkZPCitBVVRPSEVBREVSCitBVVRPTUFLRQorQVVUT0NPTkYKK0FDTE9DQUwKK1ZFUlNJT04KK1BBQ0tBR0UKK0NZR1BBVEhfVworYW1fX2lzcmMKK0lOU1RBTExfREFUQQorSU5TVEFMTF9TQ1JJUFQKK0lOU1RBTExfUFJPR1JBTQordGFyZ2V0X29zCit0YXJnZXRfdmVuZG9yCit0YXJnZXRfY3B1Cit0YXJnZXQKK2hvc3Rfb3MKK2hvc3RfdmVuZG9yCitob3N0X2NwdQoraG9zdAorYnVpbGRfb3MKK2J1aWxkX3ZlbmRvcgorYnVpbGRfY3B1CitidWlsZAordGFyZ2V0X2FsaWFzCitob3N0X2FsaWFzCitidWlsZF9hbGlhcworTElCUworRUNIT19UCitFQ0hPX04KK0VDSE9fQworREVGUworbWFuZGlyCitsb2NhbGVkaXIKK2xpYmRpcgorcHNkaXIKK3BkZmRpcgorZHZpZGlyCitodG1sZGlyCitpbmZvZGlyCitkb2NkaXIKK29sZGluY2x1ZGVkaXIKK2luY2x1ZGVkaXIKK2xvY2Fsc3RhdGVkaXIKK3NoYXJlZHN0YXRlZGlyCitzeXNjb25mZGlyCitkYXRhZGlyCitkYXRhcm9vdGRpcgorbGliZXhlY2Rpcgorc2JpbmRpcgorYmluZGlyCitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lCitwcmVmaXgKK2V4ZWNfcHJlZml4CitQQUNLQUdFX1VSTAorUEFDS0FHRV9CVUdSRVBPUlQKK1BBQ0tBR0VfU1RSSU5HCitQQUNLQUdFX1ZFUlNJT04KK1BBQ0tBR0VfVEFSTkFNRQorUEFDS0FHRV9OQU1FCitQQVRIX1NFUEFSQVRPUgorU0hFTEwnCithY19zdWJzdF9maWxlcz0nJworYWNfdXNlcl9vcHRzPScKK2VuYWJsZV9vcHRpb25fY2hlY2tpbmcKK2VuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCitlbmFibGVfbGFyZ2VmaWxlCitlbmFibGVfaGlzdG9ncmFtCitlbmFibGVfZGlydHkKK2VuYWJsZV9kZW1vCitlbmFibGVfdW5peGRvbWFpbgorZW5hYmxlX2RscGkKK2VuYWJsZV9kY2NwCitlbmFibGVfb21uaQorZW5hYmxlX3h0aQorZW5hYmxlX3NkcAorZW5hYmxlX2V4cworZW5hYmxlX3NjdHAKK2VuYWJsZV9pbnRlcnZhbHMKK2VuYWJsZV9zcGluCitlbmFibGVfYnVyc3QKK2VuYWJsZV9jcHV1dGlsCisnCisgICAgICBhY19wcmVjaW91c192YXJzPSdidWlsZF9hbGlhcworaG9zdF9hbGlhcwordGFyZ2V0X2FsaWFzCitDQworQ0ZMQUdTCitMREZMQUdTCitMSUJTCitDUFBGTEFHUworQ1BQJworCisKKyMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9ucy4KK2FjX2luaXRfaGVscD0KK2FjX2luaXRfdmVyc2lvbj1mYWxzZQorYWNfdW5yZWNvZ25pemVkX29wdHM9CithY191bnJlY29nbml6ZWRfc2VwPQorIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgKKyMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KK2NhY2hlX2ZpbGU9L2Rldi9udWxsCitleGVjX3ByZWZpeD1OT05FCitub19jcmVhdGU9Citub19yZWN1cnNpb249CitwcmVmaXg9Tk9ORQorcHJvZ3JhbV9wcmVmaXg9Tk9ORQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1zLHgseCwKK3NpbGVudD0KK3NpdGU9CitzcmNkaXI9Cit2ZXJib3NlPQoreF9pbmNsdWRlcz1OT05FCit4X2xpYnJhcmllcz1OT05FCisKKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25zLgorIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCisjIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAorIyBieSBkZWZhdWx0IHdpbGwgYWN0dWFsbHkgY2hhbmdlLgorIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KKyMgKFRoZSBsaXN0IGZvbGxvd3MgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzLikKK2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJworc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKK2xpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJworZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCitzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJworc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJworaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCitvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCitkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nCitpbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJworaHRtbGRpcj0nJHtkb2NkaXJ9JworZHZpZGlyPScke2RvY2Rpcn0nCitwZGZkaXI9JyR7ZG9jZGlyfScKK3BzZGlyPScke2RvY2Rpcn0nCitsaWJkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYicKK2xvY2FsZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJworbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nCisKK2FjX3ByZXY9CithY19kYXNoZGFzaD0KK2ZvciBhY19vcHRpb24KK2RvCisgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgorICBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKyAgICBldmFsICRhY19wcmV2PVwkYWNfb3B0aW9uCisgICAgYWNfcHJldj0KKyAgICBjb250aW51ZQorICBmaQorCisgIGNhc2UgJGFjX29wdGlvbiBpbgorICAqPT8qKSBhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7OworICAqPSkgICBhY19vcHRhcmc9IDs7CisgICopICAgIGFjX29wdGFyZz15ZXMgOzsKKyAgZXNhYworCisgICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuCisKKyAgY2FzZSAkYWNfZGFzaGRhc2gkYWNfb3B0aW9uIGluCisgIC0tKQorICAgIGFjX2Rhc2hkYXNoPXllcyA7OworCisgIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpCisgICAgYWNfcHJldj1iaW5kaXIgOzsKKyAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1iaW49KiB8IC0tYmk9KikKKyAgICBiaW5kaXI9JGFjX29wdGFyZyA7OworCisgIC1idWlsZCB8IC0tYnVpbGQgfCAtLWJ1aWwgfCAtLWJ1aSB8IC0tYnUpCisgICAgYWNfcHJldj1idWlsZF9hbGlhcyA7OworICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikKKyAgICBidWlsZF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXAorICB8IC0tY2FjaGUtZiB8IC0tY2FjaGUtIHwgLS1jYWNoZSB8IC0tY2FjaCB8IC0tY2FjIHwgLS1jYSB8IC0tYykKKyAgICBhY19wcmV2PWNhY2hlX2ZpbGUgOzsKKyAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcCisgIHwgLS1jYWNoZS1mPSogfCAtLWNhY2hlLT0qIHwgLS1jYWNoZT0qIHwgLS1jYWNoPSogfCAtLWNhYz0qIHwgLS1jYT0qIHwgLS1jPSopCisgICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7CisKKyAgLS1jb25maWctY2FjaGUgfCAtQykKKyAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7OworCisgIC1kYXRhZGlyIHwgLS1kYXRhZGlyIHwgLS1kYXRhZGkgfCAtLWRhdGFkKQorICAgIGFjX3ByZXY9ZGF0YWRpciA7OworICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1kYXRhZD0qKQorICAgIGRhdGFkaXI9JGFjX29wdGFyZyA7OworCisgIC1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGkgfCAtLWRhdGFyb290ZCB8IC0tZGF0YXJvb3QgXAorICB8IC0tZGF0YXJvbyB8IC0tZGF0YXJvIHwgLS1kYXRhcikKKyAgICBhY19wcmV2PWRhdGFyb290ZGlyIDs7CisgIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpPSogfCAtLWRhdGFyb290ZD0qIFwKKyAgfCAtLWRhdGFyb290PSogfCAtLWRhdGFyb289KiB8IC0tZGF0YXJvPSogfCAtLWRhdGFyPSopCisgICAgZGF0YXJvb3RkaXI9JGFjX29wdGFyZyA7OworCisgIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZGlzYWJsZS1cKC4qXCknYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCisgICAgICAqIgorImVuYWJsZV8kYWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS1kaXNhYmxlLSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PW5vIDs7CisKKyAgLWRvY2RpciB8IC0tZG9jZGlyIHwgLS1kb2NkaSB8IC0tZG9jIHwgLS1kbykKKyAgICBhY19wcmV2PWRvY2RpciA7OworICAtZG9jZGlyPSogfCAtLWRvY2Rpcj0qIHwgLS1kb2NkaT0qIHwgLS1kb2M9KiB8IC0tZG89KikKKyAgICBkb2NkaXI9JGFjX29wdGFyZyA7OworCisgIC1kdmlkaXIgfCAtLWR2aWRpciB8IC0tZHZpZGkgfCAtLWR2aWQgfCAtLWR2aSB8IC0tZHYpCisgICAgYWNfcHJldj1kdmlkaXIgOzsKKyAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZpZGk9KiB8IC0tZHZpZD0qIHwgLS1kdmk9KiB8IC0tZHY9KikKKyAgICBkdmlkaXI9JGFjX29wdGFyZyA7OworCisgIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCisgICAgICAqIgorImVuYWJsZV8kYWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS1lbmFibGUtJGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKKyAgICBlc2FjCisgICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsKKworICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBcCisgIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAtLWV4ZWMtIFwKKyAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpCisgICAgYWNfcHJldj1leGVjX3ByZWZpeCA7OworICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwKKyAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKKyAgfCAtLWV4ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopCisgICAgZXhlY19wcmVmaXg9JGFjX29wdGFyZyA7OworCisgIC1nYXMgfCAtLWdhcyB8IC0tZ2EgfCAtLWcpCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMuCisgICAgd2l0aF9nYXM9eWVzIDs7CisKKyAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkKKyAgICBhY19pbml0X2hlbHA9bG9uZyA7OworICAtaGVscD1yKiB8IC0taGVscD1yKiB8IC0taGVsPXIqIHwgLS1oZT1yKiB8IC1ociopCisgICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7OworICAtaGVscD1zKiB8IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopCisgICAgYWNfaW5pdF9oZWxwPXNob3J0IDs7CisKKyAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pCisgICAgYWNfcHJldj1ob3N0X2FsaWFzIDs7CisgIC1ob3N0PSogfCAtLWhvc3Q9KiB8IC0taG9zPSogfCAtLWhvPSopCisgICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLWh0bWxkaXIgfCAtLWh0bWxkaXIgfCAtLWh0bWxkaSB8IC0taHRtbGQgfCAtLWh0bWwgfCAtLWh0bSB8IC0taHQpCisgICAgYWNfcHJldj1odG1sZGlyIDs7CisgIC1odG1sZGlyPSogfCAtLWh0bWxkaXI9KiB8IC0taHRtbGRpPSogfCAtLWh0bWxkPSogfCAtLWh0bWw9KiB8IC0taHRtPSogXAorICB8IC0taHQ9KikKKyAgICBodG1sZGlyPSRhY19vcHRhcmcgOzsKKworICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcCisgIHwgLS1pbmNsdWQgfCAtLWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpCisgICAgYWNfcHJldj1pbmNsdWRlZGlyIDs7CisgIC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcCisgIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8IC0taW5jbD0qIHwgLS1pbmM9KikKKyAgICBpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKKworICAtaW5mb2RpciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5mKQorICAgIGFjX3ByZXY9aW5mb2RpciA7OworICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQorICAgIGluZm9kaXI9JGFjX29wdGFyZyA7OworCisgIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpCisgICAgYWNfcHJldj1saWJkaXIgOzsKKyAgLWxpYmRpcj0qIHwgLS1saWJkaXI9KiB8IC0tbGliZGk9KiB8IC0tbGliZD0qKQorICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaSB8IC0tbGliZXhlY2QgfCAtLWxpYmV4ZWMgXAorICB8IC0tbGliZXhlIHwgLS1saWJleCB8IC0tbGliZSkKKyAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsKKyAgLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGk9KiB8IC0tbGliZXhlY2Q9KiB8IC0tbGliZXhlYz0qIFwKKyAgfCAtLWxpYmV4ZT0qIHwgLS1saWJleD0qIHwgLS1saWJlPSopCisgICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxvY2FsZWRpciB8IC0tbG9jYWxlZGlyIHwgLS1sb2NhbGVkaSB8IC0tbG9jYWxlZCB8IC0tbG9jYWxlKQorICAgIGFjX3ByZXY9bG9jYWxlZGlyIDs7CisgIC1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGlyPSogfCAtLWxvY2FsZWRpPSogfCAtLWxvY2FsZWQ9KiB8IC0tbG9jYWxlPSopCisgICAgbG9jYWxlZGlyPSRhY19vcHRhcmcgOzsKKworICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpIHwgLS1sb2NhbHN0YXRlZCBcCisgIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IHwgLS1sb2NhbHMpCisgICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7CisgIC1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSogfCAtLWxvY2Fsc3RhdGVkPSogXAorICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0qIHwgLS1sb2NhbHM9KikKKyAgICBsb2NhbHN0YXRlZGlyPSRhY19vcHRhcmcgOzsKKworICAtbWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1tKQorICAgIGFjX3ByZXY9bWFuZGlyIDs7CisgIC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1hPSogfCAtLW09KikKKyAgICBtYW5kaXI9JGFjX29wdGFyZyA7OworCisgIC1uZnAgfCAtLW5mcCB8IC0tbmYpCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4KKyAgICB3aXRoX2ZwPW5vIDs7CisKKyAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKKyAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pCisgICAgbm9fY3JlYXRlPXllcyA7OworCisgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAorICB8IC0tbm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8IC0tbm8tcikKKyAgICBub19yZWN1cnNpb249eWVzIDs7CisKKyAgLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaSB8IC0tb2xkaW5jbHVkZWQgXAorICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwKKyAgfCAtLW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQorICAgIGFjX3ByZXY9b2xkaW5jbHVkZWRpciA7OworICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwKKyAgfCAtLW9sZGluY2x1ZGU9KiB8IC0tb2xkaW5jbHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSogXAorICB8IC0tb2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8IC0tbz0qKQorICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkgfCAtLXByZWYgfCAtLXByZSB8IC0tcHIgfCAtLXApCisgICAgYWNfcHJldj1wcmVmaXggOzsKKyAgLXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9KiB8IC0tcHI9KiB8IC0tcD0qKQorICAgIHByZWZpeD0kYWNfb3B0YXJnIDs7CisKKyAgLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS1wcmVmIFwKKyAgfCAtLXByb2dyYW0tcHJlIHwgLS1wcm9ncmFtLXByIHwgLS1wcm9ncmFtLXApCisgICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7OworICAtcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKKyAgfCAtLXByb2dyYW0tcHJlZj0qIHwgLS1wcm9ncmFtLXByZT0qIHwgLS1wcm9ncmFtLXByPSogfCAtLXByb2dyYW0tcD0qKQorICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwgLS1wcm9ncmFtLXN1ZmYgXAorICB8IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykKKyAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7CisgIC1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSogXAorICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopCisgICAgcHJvZ3JhbV9zdWZmaXg9JGFjX29wdGFyZyA7OworCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbyB8IC0tcHJvZ3JhbS10cmFuc2YgXAorICB8IC0tcHJvZ3JhbS10cmFucyB8IC0tcHJvZ3JhbS10cmFuIFwKKyAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0tcHJvZ3JhbS10KQorICAgIGFjX3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7OworICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9yPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXAorICB8IC0tcHJvZ3JhbS10cmFucz0qIHwgLS1wcm9ncmFtLXRyYW49KiBcCisgIHwgLS1wcm9nci10cmE9KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikKKyAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSRhY19vcHRhcmcgOzsKKworICAtcGRmZGlyIHwgLS1wZGZkaXIgfCAtLXBkZmRpIHwgLS1wZGZkIHwgLS1wZGYgfCAtLXBkKQorICAgIGFjX3ByZXY9cGRmZGlyIDs7CisgIC1wZGZkaXI9KiB8IC0tcGRmZGlyPSogfCAtLXBkZmRpPSogfCAtLXBkZmQ9KiB8IC0tcGRmPSogfCAtLXBkPSopCisgICAgcGRmZGlyPSRhY19vcHRhcmcgOzsKKworICAtcHNkaXIgfCAtLXBzZGlyIHwgLS1wc2RpIHwgLS1wc2QgfCAtLXBzKQorICAgIGFjX3ByZXY9cHNkaXIgOzsKKyAgLXBzZGlyPSogfCAtLXBzZGlyPSogfCAtLXBzZGk9KiB8IC0tcHNkPSogfCAtLXBzPSopCisgICAgcHNkaXI9JGFjX29wdGFyZyA7OworCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQorICAgIHNpbGVudD15ZXMgOzsKKworICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikKKyAgICBhY19wcmV2PXNiaW5kaXIgOzsKKyAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKKyAgfCAtLXNiaT0qIHwgLS1zYj0qKQorICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7OworCisgIC1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGkgXAorICB8IC0tc2hhcmVkc3RhdGVkIHwgLS1zaGFyZWRzdGF0ZSB8IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwKKyAgfCAtLXNoYXJlZHN0IHwgLS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwKKyAgfCAtLXNoYSB8IC0tc2gpCisgICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7OworICAtc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwKKyAgfCAtLXNoYXJlZHN0YXRlZD0qIHwgLS1zaGFyZWRzdGF0ZT0qIHwgLS1zaGFyZWRzdGF0PSogfCAtLXNoYXJlZHN0YT0qIFwKKyAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hhcmVkPSogfCAtLXNoYXJlPSogfCAtLXNoYXI9KiBcCisgIHwgLS1zaGE9KiB8IC0tc2g9KikKKyAgICBzaGFyZWRzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXNpdGUgfCAtLXNpdGUgfCAtLXNpdCkKKyAgICBhY19wcmV2PXNpdGUgOzsKKyAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwgLS1zaXQ9KikKKyAgICBzaXRlPSRhY19vcHRhcmcgOzsKKworICAtc3JjZGlyIHwgLS1zcmNkaXIgfCAtLXNyY2RpIHwgLS1zcmNkIHwgLS1zcmMgfCAtLXNyKQorICAgIGFjX3ByZXY9c3JjZGlyIDs7CisgIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopCisgICAgc3JjZGlyPSRhY19vcHRhcmcgOzsKKworICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lzY29uZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcCisgIHwgLS1zeXNjb24gfCAtLXN5c2NvIHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQorICAgIGFjX3ByZXY9c3lzY29uZmRpciA7OworICAtc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25mZD0qIHwgLS1zeXNjb25mPSogXAorICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0tc3lzPSogfCAtLXN5PSopCisgICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFyIHwgLS10YSB8IC0tdCkKKyAgICBhY19wcmV2PXRhcmdldF9hbGlhcyA7OworICAtdGFyZ2V0PSogfCAtLXRhcmdldD0qIHwgLS10YXJnZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLS10PSopCisgICAgdGFyZ2V0X2FsaWFzPSRhY19vcHRhcmcgOzsKKworICAtdiB8IC12ZXJib3NlIHwgLS12ZXJib3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQorICAgIHZlcmJvc2U9eWVzIDs7CisKKyAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtVikKKyAgICBhY19pbml0X3ZlcnNpb249OiA7OworCisgIC13aXRoLSogfCAtLXdpdGgtKikKKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCisgICAgICAqIgorIndpdGhfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9vcmlnIgorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OworICAgIGVzYWMKKyAgICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsKKworICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJ3aXRoXyRhY191c2Vyb3B0IgorIiopIDs7CisgICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLXdpdGhvdXQtJGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKKyAgICBlc2FjCisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PW5vIDs7CisKKyAgLS14KQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgteC4KKyAgICB3aXRoX3g9eWVzIDs7CisKKyAgLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZSB8IC0teC1pbmNsdWQgfCAtLXgtaW5jbHUgXAorICB8IC0teC1pbmNsIHwgLS14LWluYyB8IC0teC1pbiB8IC0teC1pKQorICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7OworICAteC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14LWluY2x1PSogXAorICB8IC0teC1pbmNsPSogfCAtLXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1pPSopCisgICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7CisKKyAgLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8IC0teC1saWJyYXJpIFwKKyAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14LWxpIHwgLS14LWwpCisgICAgYWNfcHJldj14X2xpYnJhcmllcyA7OworICAteC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14LWxpYnJhcmk9KiBcCisgIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgtbD0qKQorICAgIHhfbGlicmFyaWVzPSRhY19vcHRhcmcgOzsKKworICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246IFxgJGFjX29wdGlvbicKK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCisgICAgOzsKKworICAqPSopCisgICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpcKT0nYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygKKyAgICAgICcnIHwgWzAtOV0qIHwgKlshXyRhc19jcl9hbG51bV0qICkKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7CisgICAgZXNhYworICAgIGV2YWwgJGFjX2VudnZhcj1cJGFjX29wdGFyZworICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7CisKKyAgKikKKyAgICAjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyCisgICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpbnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyCisgICAgOiAiJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0iCisgICAgOzsKKworICBlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgorICBhY19vcHRpb249LS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0vZydgCisgIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iCitmaQorCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiOyB0aGVuCisgIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4KKyAgICBubykgOzsKKyAgICBmYXRhbCkgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiIDs7CisgICAgKikgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMiA7OworICBlc2FjCitmaQorCisjIENoZWNrIGFsbCBkaXJlY3RvcnkgYXJndW1lbnRzIGZvciBjb25zaXN0ZW5jeS4KK2ZvciBhY192YXIgaW4JZXhlY19wcmVmaXggcHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgXAorCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwKKwkJb2xkaW5jbHVkZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNkaXIgXAorCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpcgorZG8KKyAgZXZhbCBhY192YWw9XCQkYWNfdmFyCisgICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuCisgIGNhc2UgJGFjX3ZhbCBpbgorICAgICovICkKKyAgICAgIGFjX3ZhbD1gZXhwciAiWCRhY192YWwiIDogJ1hcKC4qW14vXVwpJyBcfCAiWCRhY192YWwiIDogJ1hcKC4qXCknYAorICAgICAgZXZhbCAkYWNfdmFyPVwkYWNfdmFsOzsKKyAgZXNhYworICAjIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZXMuCisgIGNhc2UgJGFjX3ZhbCBpbgorICAgIFtcXC8kXSogfCA/OltcXC9dKiApICBjb250aW51ZTs7CisgICAgTk9ORSB8ICcnICkgY2FzZSAkYWNfdmFyIGluICpwcmVmaXggKSBjb250aW51ZTs7IGVzYWM7OworICBlc2FjCisgIGFzX2ZuX2Vycm9yICQ/ICJleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgorZG9uZQorCisjIFRoZXJlIG1pZ2h0IGJlIHBlb3BsZSB3aG8gZGVwZW5kIG9uIHRoZSBvbGQgYnJva2VuIGJlaGF2aW9yOiBgJGhvc3QnCisjIHVzZWQgdG8gaG9sZCB0aGUgYXJndW1lbnQgb2YgLS1ob3N0IGV0Yy4KKyMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KK2J1aWxkPSRidWlsZF9hbGlhcworaG9zdD0kaG9zdF9hbGlhcwordGFyZ2V0PSR0YXJnZXRfYWxpYXMKKworIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgoraWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuCisgIGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiID0geDsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGlmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCisgICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQiID4mMgorICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCisgICAgY3Jvc3NfY29tcGlsaW5nPXllcworICBmaQorZmkKKworYWNfdG9vbF9wcmVmaXg9Cit0ZXN0IC1uICIkaG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9wcmVmaXg9JGhvc3RfYWxpYXMtCisKK3Rlc3QgIiRzaWxlbnQiID0geWVzICYmIGV4ZWMgNj4vZGV2L251bGwKKworCithY19wd2Q9YHB3ZGAgJiYgdGVzdCAtbiAiJGFjX3B3ZCIgJiYKK2FjX2xzX2RpPWBscyAtZGkgLmAgJiYKK2FjX3B3ZF9sc19kaT1gY2QgIiRhY19wd2QiICYmIGxzIC1kaSAuYCB8fAorICBhc19mbl9lcnJvciAkPyAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWluZWQiCit0ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwKKyAgYXNfZm5fZXJyb3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKKworCisjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCitpZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgorICBhY19zcmNkaXJfZGVmYXVsdGVkPXllcworICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCisgIGFjX2NvbmZkaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfbXlzZWxmIiB8fAorJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAorCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFzX215c2VsZiIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgiJGFzX215c2VsZiIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKVteL10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wpLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgIHNyY2Rpcj0kYWNfY29uZmRpcgorICBpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbgorICAgIHNyY2Rpcj0uLgorICBmaQorZWxzZQorICBhY19zcmNkaXJfZGVmYXVsdGVkPW5vCitmaQoraWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KKyAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRzcmNkaXIiCitmaQorYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIgorYWNfYWJzX2NvbmZkaXI9YCgKKwljZCAiJHNyY2RpciIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9yICQ/ICIkYWNfbXNnIgorCXB3ZClgCisjIFdoZW4gYnVpbGRpbmcgaW4gcGxhY2UsIHNldCBzcmNkaXI9LgoraWYgdGVzdCAiJGFjX2Fic19jb25mZGlyIiA9ICIkYWNfcHdkIjsgdGhlbgorICBzcmNkaXI9LgorZmkKKyMgUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBzcmNkaXIuCisjIERvdWJsZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVidWdnaW5nIGluZm8KKyMgbWVzcyB1cCBNLXggZ2RiIGluIEVtYWNzLgorY2FzZSAkc3JjZGlyIGluCisqLykgc3JjZGlyPWBleHByICJYJHNyY2RpciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNyY2RpciIgOiAnWFwoLipcKSdgOzsKK2VzYWMKK2ZvciBhY192YXIgaW4gJGFjX3ByZWNpb3VzX3ZhcnM7IGRvCisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9CisgIGV2YWwgYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0KKyAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9Citkb25lCisKKyMKKyMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4KKyMKK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCisgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgorICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCisgIGNhdCA8PF9BQ0VPRgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgbmV0cGVyZiAyLjcuMCB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgorCitUbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgorCitEZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KKworQ29uZmlndXJhdGlvbjoKKyAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQorICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKKyAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2FnZXMKKyAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQorICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJworICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcworICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10KKworSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KKyAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KKworQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQorYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywKK2ZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCisKK0ZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgorCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KKyAgLS1zYmluZGlyPURJUiAgICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KKyAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCisgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCisgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KKyAgLS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KKyAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQorICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQorICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFkLW9ubHkgYXJjaC4taW5kZXBlbmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdCisgIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10KKyAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxlLWRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUi9sb2NhbGVdCisgIC0tbWFuZGlyPURJUiAgICAgICAgICAgIG1hbiBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCisgIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL25ldHBlcmZdCisgIC0taHRtbGRpcj1ESVIgICAgICAgICAgIGh0bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorICAtLWR2aWRpcj1ESVIgICAgICAgICAgICBkdmkgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorICAtLXBkZmRpcj1ESVIgICAgICAgICAgICBwZGYgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1bWVudGF0aW9uIFtET0NESVJdCitfQUNFT0YKKworICBjYXQgPDxcX0FDRU9GCisKK1Byb2dyYW0gbmFtZXM6CisgIC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYICAgICAgICAgICAgcHJlcGVuZCBQUkVGSVggdG8gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMKKyAgLS1wcm9ncmFtLXN1ZmZpeD1TVUZGSVggICAgICAgICAgICBhcHBlbmQgU1VGRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzCisgIC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT1QUk9HUkFNICAgcnVuIHNlZCBQUk9HUkFNIG9uIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzCisKK1N5c3RlbSB0eXBlczoKKyAgLS1idWlsZD1CVUlMRCAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbZ3Vlc3NlZF0KKyAgLS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCisgIC0tdGFyZ2V0PVRBUkdFVCAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgY29tcGlsZXJzIGZvciBUQVJHRVQgW0hPU1RdCitfQUNFT0YKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCisgIGNhc2UgJGFjX2luaXRfaGVscCBpbgorICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbmV0cGVyZiAyLjcuMDoiOzsKKyAgIGVzYWMKKyAgY2F0IDw8XF9BQ0VPRgorCitPcHRpb25hbCBGZWF0dXJlczoKKyAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucworICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCisgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9ycworICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCisgIC0tZW5hYmxlLWhpc3RvZ3JhbSAgICAgIGluY2x1ZGUgaW5kaXZpZHVhbCBvcCB0aW1pbmcsIG1heSBhZmZlY3QgcmVzdWx0CisgIC0tZW5hYmxlLWRpcnR5ICAgICAgICAgIHdyaXRlIHRvIGJ1ZmZlcnMgZWFjaCB0aW1lLCBtYXkgYWZmZWN0IHJlc3VsdAorICAtLWVuYWJsZS1kZW1vICAgICAgICAgICBlbWl0IGludGVyaW0gcmVzdWx0cyBkdXJpbmcgdGhlIHJ1bi4gTWF5IGFmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLgorICAtLWVuYWJsZS11bml4ZG9tYWluICAgICBpbmNsdWRlIFVuaXggRG9tYWluIHNvY2tldCB0ZXN0cworICAtLWVuYWJsZS1kbHBpICAgICAgICAgICBpbmNsdWRlIERMUEkgKGxpbmstbGF5ZXIpIHRlc3RzCisgIC0tZW5hYmxlLWRjY3AgICAgICAgICAgIGluY2x1ZGUgRENDUCB0ZXN0cworICAtLWVuYWJsZS1vbW5pICAgICAgICAgICBpbmNsdWRlIE9NTkkgdGVzdHMKKyAgLS1lbmFibGUteHRpICAgICAgICAgICAgaW5jbHVkZSBYVEkgc29ja2V0IHRlc3RzCisgIC0tZW5hYmxlLXNkcCAgICAgICAgICAgIGluY2x1ZGUgU0RQIHNvY2tldCB0ZXN0cworICAtLWVuYWJsZS1leHMgICAgICAgICAgICBpbmNsdWRlIElDU0MgYXN5bmMgc29ja2V0cyB0ZXN0cworICAtLWVuYWJsZS1zY3RwICAgICAgICAgICBpbmNsdWRlIHRlc3RzIHRvIG1lYXN1cmUgU0NUUCBwZXJmb3JtYW5jZQorICAtLWVuYWJsZS1pbnRlcnZhbHMgICAgICBpbmNsdWRlIGFiaWxpdHkgdG8gcGFjZSBvcGVyYXRpb25zLCBtYXkgYWZmZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdAorICAtLWVuYWJsZS1zcGluICAgICAgICAgICBwYWNlZCBvcGVyYXRpb25zICgtLWVuYWJsZS1pbnRlcnZhbHMpIHNob3VsZCBzaXQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW4gLSBXSUxMIGFmZmVjdCByZXN1bHQKKyAgLS1lbmFibGUtYnVyc3QgICAgICAgICAgaW5jbHVkZSBpbnRpYWwgcmVxdWVzdCBidXJzdCBhYmlsaXR5IGluIF9SUiB0ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5IGFmZmVjdCByZXN1bHQKKyAgLS1lbmFibGUtY3B1dXRpbCAgICAgICAgaW5jbHVkZSBjb2RlIHRvIG1lYXN1cmUgQ1BVIHV0aWxpemF0aW9uIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBtZWNoYW5pc20KKworU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorICBDRkxBR1MgICAgICBDIGNvbXBpbGVyIGZsYWdzCisgIExERkxBR1MgICAgIGxpbmtlciBmbGFncywgZS5nLiAtTDxsaWIgZGlyPiBpZiB5b3UgaGF2ZSBsaWJyYXJpZXMgaW4gYQorICAgICAgICAgICAgICBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGxpYiBkaXI+CisgIExJQlMgICAgICAgIGxpYnJhcmllcyB0byBwYXNzIHRvIHRoZSBsaW5rZXIsIGUuZy4gLWw8bGlicmFyeT4KKyAgQ1BQRkxBR1MgICAgKE9iamVjdGl2ZSkgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZgorICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KKyAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKKworVXNlIHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBtYWRlIGJ5IGBjb25maWd1cmUnIG9yIHRvIGhlbHAKK2l0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KKworUmVwb3J0IGJ1Z3MgdG8gdGhlIHBhY2thZ2UgcHJvdmlkZXIuCitfQUNFT0YKK2FjX3N0YXR1cz0kPworZmkKKworaWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAicmVjdXJzaXZlIjsgdGhlbgorICAjIElmIHRoZXJlIGFyZSBzdWJkaXJzLCByZXBvcnQgdGhlaXIgc3BlY2lmaWMgLS1oZWxwLgorICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRpcnNfYWxsOyBkbyB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250aW51ZQorICAgIHRlc3QgLWQgIiRhY19kaXIiIHx8CisgICAgICB7IGNkICIkc3JjZGlyIiAmJiBhY19wd2Q9YHB3ZGAgJiYgc3JjZGlyPS4gJiYgdGVzdCAtZCAiJGFjX2RpciI7IH0gfHwKKyAgICAgIGNvbnRpbnVlCisgICAgYWNfYnVpbGRkaXI9LgorCitjYXNlICIkYWNfZGlyIiBpbgorLikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CisqKQorICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYAorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCisgIGFjX3RvcF9idWlsZGRpcl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3N8L1teXFwvXSp8Ly4ufGc7c3wvfHwnYAorICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluCisgICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKyAgKikgIGFjX3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7CisgIGVzYWMgOzsKK2VzYWMKK2FjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZAorYWNfYWJzX2J1aWxkZGlyPSRhY19wd2QkYWNfZGlyX3N1ZmZpeAorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToKK2FjX3RvcF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeAorCitjYXNlICRzcmNkaXIgaW4KKyAgLikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgorICAgIGFjX3NyY2Rpcj0uCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1YgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QgOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLgorICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7CisgICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7OworICAqKSAjIFJlbGF0aXZlIG5hbWUuCisgICAgYWNfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19kaXJfc3VmZml4CisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsKK2VzYWMKK2FjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bfc3JjZGlyJGFjX2Rpcl9zdWZmaXgKKworICAgIGNkICIkYWNfZGlyIiB8fCB7IGFjX3N0YXR1cz0kPzsgY29udGludWU7IH0KKyAgICAjIENoZWNrIGZvciBndWVzdGVkIGNvbmZpZ3VyZS4KKyAgICBpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiOyB0aGVuCisgICAgICBlY2hvICYmCisgICAgICAkU0hFTEwgIiRhY19zcmNkaXIvY29uZmlndXJlLmdudSIgLS1oZWxwPXJlY3Vyc2l2ZQorICAgIGVsaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUiOyB0aGVuCisgICAgICBlY2hvICYmCisgICAgICAkU0hFTEwgIiRhY19zcmNkaXIvY29uZmlndXJlIiAtLWhlbHA9cmVjdXJzaXZlCisgICAgZWxzZQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogbm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBpbiAkYWNfZGlyIiA+JjIKKyAgICBmaSB8fCBhY19zdGF0dXM9JD8KKyAgICBjZCAiJGFjX3B3ZCIgfHwgeyBhY19zdGF0dXM9JD87IGJyZWFrOyB9CisgIGRvbmUKK2ZpCisKK3Rlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cworaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgorICBjYXQgPDxcX0FDRU9GCituZXRwZXJmIGNvbmZpZ3VyZSAyLjcuMAorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4CisKK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK1RoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCitfQUNFT0YKKyAgZXhpdAorZmkKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBBdXRvY29uZiBpbml0aWFsaXphdGlvbi4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyeSB0byBjb21waWxlIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KK2FjX2ZuX2NfdHJ5X2NvbXBpbGUgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CisgIGlmIHsgeyBhY190cnk9IiRhY19jb21waWxlIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY29tcGlsZSIpIDI+Y29uZnRlc3QuZXJyCisgIGFjX3N0YXR1cz0kPworICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKKyAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCisgIGZpCisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHsKKwkgdGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciIHx8CisJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKKyAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dDsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJYWNfcmV0dmFsPTEKK2ZpCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUKKworIyBhY19mbl9jX3RyeV9saW5rIExJTkVOTworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gbGluayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCithY19mbl9jX3RyeV9saW5rICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAgIH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgeworCSB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyB8fAorCSAkYXNfdGVzdF94IGNvbmZ0ZXN0JGFjX2V4ZWV4dAorICAgICAgIH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWFjX3JldHZhbD0xCitmaQorICAjIERlbGV0ZSB0aGUgSVBBL0lQTyAoSW50ZXIgUHJvY2VkdXJhbCBBbmFseXNpcy9PcHRpbWl6YXRpb24pIGluZm9ybWF0aW9uCisgICMgY3JlYXRlZCBieSB0aGUgUEdJIGNvbXBpbGVyIChjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vKSwgYXMgaXQgd291bGQKKyAgIyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFsc28gZGVsZXRlIGEgZGlyZWN0b3J5IHRoYXQgaXMKKyAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAgV2UgZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgorICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2xpbmsKKworIyBhY19mbl9jX3RyeV9jcHAgTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIHByZXByb2Nlc3MgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLgorYWNfZm5fY190cnlfY3BwICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSA+IGNvbmZ0ZXN0LmkgJiYgeworCSB0ZXN0IC16ICIkYWNfY19wcmVwcm9jX3dhcm5fZmxhZyRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCisgICAgICAgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgYWNfcmV0dmFsPTEKK2ZpCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NwcAorCisjIGFjX2ZuX2NfdHJ5X3J1biBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gbGluayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuIEFzc3VtZXMKKyMgdGhhdCBleGVjdXRhYmxlcyAqY2FuKiBiZSBydW4uCithY19mbl9jX3RyeV9ydW4gKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgeyBjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnkiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorICAgICAgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgICAgYWNfcmV0dmFsPSRhY19zdGF0dXMKK2ZpCisgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190cnlfcnVuCisKKyMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcKKyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5kIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUgorIyBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2Vsc2UKKyAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyAkMiB1c2FiaWxpdHkuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcworZWxzZQorICBhY19oZWFkZXJfY29tcGlsZXI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjY7IH0KKworIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHByZXNlbmNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKK2Vsc2UKKyAgYWNfaGVhZGVyX3ByZXByb2M9bm8KK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVyX3ByZXByb2MiID4mNjsgfQorCisjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gIygoCisgIHllczpubzogKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KKyAgICA7OworICBubzp5ZXM6KiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9CisgICAgOzsKK2VzYWMKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgZXZhbCAiJDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKKworIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlIExJTkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBIRUFERVIgZXhpc3RzIGFuZCBjYW4gYmUgY29tcGlsZWQgdXNpbmcgdGhlIGluY2x1ZGUgZmlsZXMgaW4KKyMgSU5DTFVERVMsIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAorI2luY2x1ZGUgPCQyPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQzPXllcyIKK2Vsc2UKKyAgZXZhbCAiJDM9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZQorCisjIGFjX2ZuX2NfY2hlY2tfdHlwZSBMSU5FTk8gVFlQRSBWQVIgSU5DTFVERVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIFRZUEUgZXhpc3RzIGFmdGVyIGhhdmluZyBpbmNsdWRlZCBJTkNMVURFUywgc2V0dGluZyBjYWNoZQorIyB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9jX2NoZWNrX3R5cGUgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIkMz1ubyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoJDIpKQorCSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWluICgpCit7CitpZiAoc2l6ZW9mICgoJDIpKSkKKwkgICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBldmFsICIkMz15ZXMiCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja190eXBlCisKKyMgYWNfZm5fY19jaGVja19mdW5jIExJTkVOTyBGVU5DIFZBUgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgRlVOQyBleGlzdHMsIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseQorYWNfZm5fY19jaGVja19mdW5jICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworLyogRGVmaW5lICQyIHRvIGFuIGlubm9jdW91cyB2YXJpYW50LCBpbiBjYXNlIDxsaW1pdHMuaD4gZGVjbGFyZXMgJDIuCisgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KKyNkZWZpbmUgJDIgaW5ub2N1b3VzXyQyCisKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICQyICgpOyBiZWxvdy4KKyAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KKworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKworI3VuZGVmICQyCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgJDIgKCk7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIF9fc3R1Yl8kMiB8fCBkZWZpbmVkIF9fc3R1Yl9fXyQyCitjaG9rZSBtZQorI2VuZGlmCisKK2ludAorbWFpbiAoKQoreworcmV0dXJuICQyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQzPXllcyIKK2Vsc2UKKyAgZXZhbCAiJDM9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2NoZWNrX2Z1bmMKKworIyBhY19mbl9jX2NoZWNrX21lbWJlciBMSU5FTk8gQUdHUiBNRU1CRVIgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJpZXMgdG8gZmluZCBpZiB0aGUgZmllbGQgTUVNQkVSIGV4aXN0cyBpbiB0eXBlIEFHR1IsIGFmdGVyIGluY2x1ZGluZworIyBJTkNMVURFUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9jX2NoZWNrX21lbWJlciAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyLiQzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4kMy4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskNCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ1CitpbnQKK21haW4gKCkKK3sKK3N0YXRpYyAkMiBhY19hZ2dyOworaWYgKGFjX2FnZ3IuJDMpCityZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkND15ZXMiCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ1CitpbnQKK21haW4gKCkKK3sKK3N0YXRpYyAkMiBhY19hZ2dyOworaWYgKHNpemVvZiBhY19hZ2dyLiQzKQorcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDQ9eWVzIgorZWxzZQorICBldmFsICIkND1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQ0CisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2NoZWNrX21lbWJlcgorY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCitUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQorcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KKworSXQgd2FzIGNyZWF0ZWQgYnkgbmV0cGVyZiAkYXNfbWUgMi43LjAsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisKKyAgJCAkMCAkQAorCitfQUNFT0YKK2V4ZWMgNT4+Y29uZmlnLmxvZworeworY2F0IDw8X0FTVU5BTUUKKyMjIC0tLS0tLS0tLSAjIworIyMgUGxhdGZvcm0uICMjCisjIyAtLS0tLS0tLS0gIyMKKworaG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorCisvdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYAorCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9ob3N0aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8fCBlY2hvIHVua25vd25gCisvYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCisvYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisKK19BU1VOQU1FCisKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAkYXNfZWNobyAiUEFUSDogJGFzX2RpciIKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCit9ID4mNQorCitjYXQgPiY1IDw8X0FDRU9GCisKKworIyMgLS0tLS0tLS0tLS0gIyMKKyMjIENvcmUgdGVzdHMuICMjCisjIyAtLS0tLS0tLS0tLSAjIworCitfQUNFT0YKKworCisjIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLgorIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBpbGUgdXAuCisjIFN0cmlwIG91dCAtLXNpbGVudCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVjb3JkIGl0IGZvciBmdXR1cmUgcnVucy4KKyMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KKyMgTWFrZSB0d28gcGFzc2VzIHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgorYWNfY29uZmlndXJlX2FyZ3M9CithY19jb25maWd1cmVfYXJnczA9CithY19jb25maWd1cmVfYXJnczE9CithY19tdXN0X2tlZXBfbmV4dD1mYWxzZQorZm9yIGFjX3Bhc3MgaW4gMSAyCitkbworICBmb3IgYWNfYXJnCisgIGRvCisgICAgY2FzZSAkYWNfYXJnIGluCisgICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51ZSA7OworICAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCisgICAgICBjb250aW51ZSA7OworICAgICpcJyopCisgICAgICBhY19hcmc9YCRhc19lY2hvICIkYWNfYXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgIGVzYWMKKyAgICBjYXNlICRhY19wYXNzIGluCisgICAgMSkgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMCAiICckYWNfYXJnJyIgOzsKKyAgICAyKQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMSAiICckYWNfYXJnJyIKKyAgICAgIGlmIHRlc3QgJGFjX211c3Rfa2VlcF9uZXh0ID0gdHJ1ZTsgdGhlbgorCWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4KKyAgICAgIGVsc2UKKwljYXNlICRhY19hcmcgaW4KKwkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSogXAorCSAgfCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdhcyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXAorCSAgfCAtcSB8IC1xdWlldCB8IC0tcSogfCAtc2lsZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXAorCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCisJICAgIGNhc2UgIiRhY19jb25maWd1cmVfYXJnczAgIiBpbgorCSAgICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioiICckYWNfYXJnJyAiKiApIGNvbnRpbnVlIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgIC0qICkgYWNfbXVzdF9rZWVwX25leHQ9dHJ1ZSA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MgIiAnJGFjX2FyZyciCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorZG9uZQoreyBhY19jb25maWd1cmVfYXJnczA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7fQoreyBhY19jb25maWd1cmVfYXJnczE9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczE7fQorCisjIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlCisjIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQorIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCisjIFdBUk5JTkc6IFVzZSAnXCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhlIHdpdGhpbiB0aGUgdHJhcC4KKyMgV0FSTklORzogRG8gbm90IHN0YXJ0IHRoZSB0cmFwIGNvZGUgd2l0aCBhIG5ld2xpbmUsIGR1ZSB0byBhIEZyZWVCU0QgNC4wIGJ1Zy4KK3RyYXAgJ2V4aXRfc3RhdHVzPSQ/CisgICMgU2F2ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLgorICB7CisgICAgZWNobworCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIENhY2hlIHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMiCisgICAgZWNobworICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCisoCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcnYDsgZG8KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICBjYXNlICRhY192YWwgaW4gIygKKyAgICAqJHthc19ubH0qKQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoCisgICAgICAqX2N2XyopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygKKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoCisgICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7OworICAgICAgZXNhYyA7OworICAgIGVzYWMKKyAgZG9uZQorICAoc2V0KSAyPiYxIHwKKyAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFgIGluICMoCisgICAgKiR7YXNfbmx9YWNfc3BhY2U9XCAqKQorICAgICAgc2VkIC1uIFwKKwkicy8nXCcnLydcJydcXFxcJ1wnJydcJycvZzsKKwkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1wnJ1xcMidcJycvcCIKKyAgICAgIDs7ICMoCisgICAgKikKKyAgICAgIHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCisgICAgICA7OworICAgIGVzYWMgfAorICAgIHNvcnQKKykKKyAgICBlY2hvCisKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE91dHB1dCB2YXJpYWJsZXMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIyIKKyAgICBlY2hvCisgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfdmFycworICAgIGRvCisgICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICAgIGNhc2UgJGFjX3ZhbCBpbgorICAgICAgKlwnXCcnKikgYWNfdmFsPWAkYXNfZWNobyAiJGFjX3ZhbCIgfCBzZWQgInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7OworICAgICAgZXNhYworICAgICAgJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIgorICAgIGRvbmUgfCBzb3J0CisgICAgZWNobworCisgICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgorICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCisgICAgICBlY2hvCisgICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcworICAgICAgZG8KKwlldmFsIGFjX3ZhbD1cJCRhY192YXIKKwljYXNlICRhY192YWwgaW4KKwkqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7CisJZXNhYworCSRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyIKKyAgICAgIGRvbmUgfCBzb3J0CisgICAgICBlY2hvCisgICAgZmkKKworICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgorICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjCisjIyBjb25mZGVmcy5oLiAjIworIyMgLS0tLS0tLS0tLS0gIyMiCisgICAgICBlY2hvCisgICAgICBjYXQgY29uZmRlZnMuaAorICAgICAgZWNobworICAgIGZpCisgICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIgorICAgICRhc19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIgorICB9ID4mNQorICBybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYKKyAgICBybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVzICYmCisgICAgZXhpdCAkZXhpdF9zdGF0dXMKKycgMAorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvCisgIHRyYXAgJ2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IGFzX2ZuX2V4aXQgMScgJGFjX3NpZ25hbAorZG9uZQorYWNfc2lnbmFsPTAKKworIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KK3JtIC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcy5oCisKKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZzLmgKKworIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIgorX0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1FIgorX0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIgorX0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIiRQQUNLQUdFX1NUUklORyIKK19BQ0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1VSTCAiJFBBQ0tBR0VfVVJMIgorX0FDRU9GCisKKworIyBMZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3QgYW4gYWx0ZXJuYXRlIGNhY2hlIGZpbGUgaWYgaXQgd2FudHMgdG8uCisjIFByZWZlciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLgorYWNfc2l0ZV9maWxlMT1OT05FCithY19zaXRlX2ZpbGUyPU5PTkUKK2lmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KKyAgIyBXZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0ZS4KKyAgY2FzZSAkQ09ORklHX1NJVEUgaW4gIygoCisgICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsKKyAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFOzsKKyAgICAqKSAgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICBlc2FjCitlbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUKKyAgYWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQorZWxzZQorICBhY19zaXRlX2ZpbGUxPSRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQorICBhY19zaXRlX2ZpbGUyPSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUKK2ZpCitmb3IgYWNfc2l0ZV9maWxlIGluICIkYWNfc2l0ZV9maWxlMSIgIiRhY19zaXRlX2ZpbGUyIgorZG8KKyAgdGVzdCAieCRhY19zaXRlX2ZpbGUiID0geE5PTkUgJiYgY29udGludWUKKyAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRhY19zaXRlX2ZpbGUiICYmIHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQorICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4mNQorICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwKKyAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisgIGZpCitkb25lCisKK2lmIHRlc3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbgorICAjIFNvbWUgdmVyc2lvbnMgb2YgYmFzaCB3aWxsIGZhaWwgdG8gc291cmNlIC9kZXYvbnVsbCAoc3BlY2lhbCBmaWxlcworICAjIGFjdHVhbGx5KSwgc28gd2UgYXZvaWQgZG9pbmcgdGhhdC4gIERKR1BQIGVtdWxhdGVzIGl0IGFzIGEgcmVndWxhciBmaWxlLgorICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGNhY2hlX2ZpbGUiICYmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQorICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4KKyAgICAgIFtcXC9dKiB8ID86W1xcL10qICkgLiAiJGNhY2hlX2ZpbGUiOzsKKyAgICAgICopICAgICAgICAgICAgICAgICAgICAgIC4gIi4vJGNhY2hlX2ZpbGUiOzsKKyAgICBlc2FjCisgIGZpCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgID4kY2FjaGVfZmlsZQorZmkKKworYXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9saXN0ICIgc3RkbGliLmgiCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3QgIiB1bmlzdGQuaCIKK2FzX2ZuX2FwcGVuZCBhY19oZWFkZXJfbGlzdCAiIHN5cy9wYXJhbS5oIgorIyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhhdmUga2VwdCB0aGUgc2FtZQorIyB2YWx1ZS4KK2FjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQorZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KKyAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZQorICBldmFsIGFjX25ld192YWw9XCRhY19lbnZfJHthY192YXJ9X3ZhbHVlCisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQgaW4KKyAgICBzZXQsKQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKKyAgICAsc2V0KQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CisgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OworICAgICwpOzsKKyAgICAqKQorICAgICAgaWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgorCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLgorCWFjX29sZF92YWxfdz1gZWNobyB4ICRhY19vbGRfdmFsYAorCWFjX25ld192YWxfdz1gZWNobyB4ICRhY19uZXdfdmFsYAorCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbgorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGFjX2NhY2hlX2NvcnJ1cHRlZD06CisJZWxzZQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGV2YWwgJGFjX3Zhcj1cJGFjX29sZF92YWwKKwlmaQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7fQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBjdXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFsJyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQorICAgICAgZmk7OworICBlc2FjCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4KKyAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCisgICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgorICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgKikgYWNfYXJnPSRhY192YXI9JGFjX25ld192YWwgOzsKKyAgICBlc2FjCisgICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluCisgICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFjeS4KKyAgICAgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIgOzsKKyAgICBlc2FjCisgIGZpCitkb25lCitpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9CisgIGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQorZmkKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNYWluIGJvZHkgb2Ygc2NyaXB0LiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKworIyBJbmhlcml0IGNvbXBpbGVyIGZsYWdzIGZyb20gdGhlIGVudmlyb25tZW50Li4uCitDRkxBR1M9IiR7Q0ZMQUdTOj19IgorQ1hYRkxBR1M9IiR7Q1hYRkxBR1M6PX0iCisKKyMgdXNlIHRoZSB0YXJnZXQgdmVyc2lvbiByYXRoZXIgdGhhbiBob3N0IC0gb25lIGRheSB3ZSBtYXkgd2FudCBjcm9zcy1jb21waWxlCithY19hdXhfZGlyPQorZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KKyAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgorICAgIGJyZWFrCisgIGZpCitkb25lCitpZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKK2ZpCisKKyMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAorIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgorIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5CisjIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCithY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KKworCisjIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCiskU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2J1aWxkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKKyAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzImAKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIgNQorYWNfY3ZfYnVpbGQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxkX2FsaWFzYCB8fAorICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9idWlsZCIgPiY2OyB9CitjYXNlICRhY19jdl9idWlsZCBpbgorKi0qLSopIDs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsKK2VzYWMKK2J1aWxkPSRhY19jdl9idWlsZAorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworc2V0IHggJGFjX2N2X2J1aWxkCitzaGlmdAorYnVpbGRfY3B1PSQxCitidWlsZF92ZW5kb3I9JDIKK3NoaWZ0OyBzaGlmdAorIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6CitidWlsZF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9ob3N0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KKyAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQKK2Vsc2UKKyAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaG9zdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQorY2FzZSAkYWNfY3ZfaG9zdCBpbgorKi0qLSopIDs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OworZXNhYworaG9zdD0kYWNfY3ZfaG9zdAorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworc2V0IHggJGFjX2N2X2hvc3QKK3NoaWZ0Citob3N0X2NwdT0kMQoraG9zdF92ZW5kb3I9JDIKK3NoaWZ0OyBzaGlmdAorIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6Citob3N0X29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRob3N0X29zIGluICpcICopIGhvc3Rfb3M9YGVjaG8gIiRob3N0X29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl90YXJnZXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICJ4JHRhcmdldF9hbGlhcyIgPSB4OyB0aGVuCisgIGFjX2N2X3RhcmdldD0kYWNfY3ZfaG9zdAorZWxzZQorICBhY19jdl90YXJnZXQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJHRhcmdldF9hbGlhc2AgfHwKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJHRhcmdldF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90YXJnZXQiID4mNQorJGFzX2VjaG8gIiRhY19jdl90YXJnZXQiID4mNjsgfQorY2FzZSAkYWNfY3ZfdGFyZ2V0IGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCB0YXJnZXQiICIkTElORU5PIiA1OzsKK2VzYWMKK3RhcmdldD0kYWNfY3ZfdGFyZ2V0CithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfdGFyZ2V0CitzaGlmdAordGFyZ2V0X2NwdT0kMQordGFyZ2V0X3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK3RhcmdldF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkdGFyZ2V0X29zIGluICpcICopIHRhcmdldF9vcz1gZWNobyAiJHRhcmdldF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCisjIFRoZSBhbGlhc2VzIHNhdmUgdGhlIG5hbWVzIHRoZSB1c2VyIHN1cHBsaWVkLCB3aGlsZSAkaG9zdCBldGMuCisjIHdpbGwgZ2V0IGNhbm9uaWNhbGl6ZWQuCit0ZXN0IC1uICIkdGFyZ2V0X2FsaWFzIiAmJgorICB0ZXN0ICIkcHJvZ3JhbV9wcmVmaXgkcHJvZ3JhbV9zdWZmaXgkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgPSBcCisgICAgTk9ORU5PTkVzLHgseCwgJiYKKyAgcHJvZ3JhbV9wcmVmaXg9JHt0YXJnZXRfYWxpYXN9LQorCithbV9fYXBpX3ZlcnNpb249JzEuMTEnCisKKyMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAorIyBzbyBvbmUgc2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCisjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoKKyMgU3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsCisjIFN1bk9TIC91c3IvZXRjL2luc3RhbGwKKyMgSVJJWCAvc2Jpbi9pbnN0YWxsCisjIEFJWCAvYmluL2luc3RhbGwKKyMgQW1pZ2FPUyAvQy9pbnN0YWxsLCB3aGljaCBpbnN0YWxscyBib290YmxvY2tzIG9uIGZsb3BweSBkaXNjcworIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcKKyMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncworIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgorIyBPUy8yJ3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFudGljCisjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KKyMgUmVqZWN0IGluc3RhbGwgcHJvZ3JhbXMgdGhhdCBjYW5ub3QgaW5zdGFsbCBtdWx0aXBsZSBmaWxlcy4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIgPiY2OyB9CitpZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KK2lmICR7YWNfY3ZfcGF0aF9pbnN0YWxsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICMgQWNjb3VudCBmb3IgcGVvcGxlIHdobyBwdXQgdHJhaWxpbmcgc2xhc2hlcyBpbiBQQVRIIGVsZW1lbnRzLgorY2FzZSAkYXNfZGlyLyBpbiAjKCgKKyAgLi8gfCAuLy8gfCAvW2NDXS8qIHwgXAorICAvZXRjLyogfCAvdXNyL3NiaW4vKiB8IC91c3IvZXRjLyogfCAvc2Jpbi8qIHwgL3Vzci9hZnN3cy9iaW4vKiB8IFwKKyAgPzpbXFwvXW9zMltcXC9daW5zdGFsbFtcXC9dKiB8ID86W1xcL11PUzJbXFwvXUlOU1RBTExbXFwvXSogfCBcCisgIC91c3IvdWNiLyogKSA7OworICAqKQorICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuCisgICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9tIE9TRiBzaW5jZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290CisgICAgIyBieSBkZWZhdWx0LgorICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8KKyAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworCWlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCI7IH07IHRoZW4KKwkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCisJICAgIGdyZXAgZHNwbXNnICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgIyBBSVggaW5zdGFsbC4gIEl0IGhhcyBhbiBpbmNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9uLgorCSAgICA6CisJICBlbGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCisJICAgIGdyZXAgcHdwbHVzICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuCisJICAgIDoKKwkgIGVsc2UKKwkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGlyCisJICAgIGVjaG8gb25lID4gY29uZnRlc3Qub25lCisJICAgIGVjaG8gdHdvID4gY29uZnRlc3QudHdvCisJICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorCSAgICBpZiAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgLWMgY29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byAiYHB3ZGAvY29uZnRlc3QuZGlyIiAmJgorCSAgICAgIHRlc3QgLXMgY29uZnRlc3Qub25lICYmIHRlc3QgLXMgY29uZnRlc3QudHdvICYmCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3Qub25lICYmCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3QudHdvCisJICAgIHRoZW4KKwkgICAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMiCisJICAgICAgYnJlYWsgMworCSAgICBmaQorCSAgZmkKKwlmaQorICAgICAgZG9uZQorICAgIGRvbmUKKyAgICA7OworZXNhYworCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGlyCisKK2ZpCisgIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCisgICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9pbnN0YWxsCisgIGVsc2UKKyAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVsbCBzY3JpcHQuICBEb24ndCBjYWNoZSBhCisgICAgIyB2YWx1ZSBmb3IgSU5TVEFMTCB3aXRoaW4gYSBzb3VyY2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbAorICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCisgICAgIyByZW1vdmVkLCBvciBpZiB0aGUgdmFsdWUgaXMgYSByZWxhdGl2ZSBuYW1lLgorICAgIElOU1RBTEw9JGFjX2luc3RhbGxfc2gKKyAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJElOU1RBTEwiID4mNQorJGFzX2VjaG8gIiRJTlNUQUxMIiA+JjY7IH0KKworIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNlcyBpbiAke3Zhci12YWx9LgorIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4KK3Rlc3QgLXogIiRJTlNUQUxMX1BST0dSQU0iICYmIElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScKKwordGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScKKwordGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLi4uICIgPiY2OyB9CisjIEp1c3QgaW4gY2FzZQorc2xlZXAgMQorZWNobyB0aW1lc3RhbXAgPiBjb25mdGVzdC5maWxlCisjIFJlamVjdCB1bnNhZmUgY2hhcmFjdGVycyBpbiAkc3JjZGlyIG9yIHRoZSBhYnNvbHV0ZSB3b3JraW5nIGRpcmVjdG9yeQorIyBuYW1lLiAgQWNjZXB0IHNwYWNlIGFuZCB0YWIgb25seSBpbiB0aGUgbGF0dGVyLgorYW1fbGY9JworJworY2FzZSBgcHdkYCBpbgorICAqW1xcXCJcI1wkXCZcJ1xgJGFtX2xmXSopCisgICAgYXNfZm5fZXJyb3IgJD8gInVuc2FmZSBhYnNvbHV0ZSB3b3JraW5nIGRpcmVjdG9yeSBuYW1lIiAiJExJTkVOTyIgNTs7Citlc2FjCitjYXNlICRzcmNkaXIgaW4KKyAgKltcXFwiXCNcJFwmXCdcYCRhbV9sZlwgXAldKikKKyAgICBhc19mbl9lcnJvciAkPyAidW5zYWZlIHNyY2RpciB2YWx1ZTogXGAkc3JjZGlyJyIgIiRMSU5FTk8iIDU7OworZXNhYworCisjIERvIGBzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzCisjIGFyZ3VtZW50cy4gIE11c3QgdHJ5IC1MIGZpcnN0IGluIGNhc2UgY29uZmlndXJlIGlzIGFjdHVhbGx5IGEKKyMgc3ltbGluazsgc29tZSBzeXN0ZW1zIHBsYXkgd2VpcmQgZ2FtZXMgd2l0aCB0aGUgbW9kIHRpbWUgb2Ygc3ltbGlua3MKKyMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRpbWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nCisjIGRpcmVjdG9yeSkuCitpZiAoCisgICBzZXQgWCBgbHMgLUx0ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29uZnRlc3QuZmlsZSAyPiAvZGV2L251bGxgCisgICBpZiB0ZXN0ICIkKiIgPSAiWCI7IHRoZW4KKyAgICAgICMgLUwgZGlkbid0IHdvcmsuCisgICAgICBzZXQgWCBgbHMgLXQgIiRzcmNkaXIvY29uZmlndXJlIiBjb25mdGVzdC5maWxlYAorICAgZmkKKyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUKKyAgIGlmIHRlc3QgIiQqIiAhPSAiWCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcCisgICAgICAmJiB0ZXN0ICIkKiIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4KKworICAgICAgIyBJZiBuZWl0aGVyIG1hdGNoZWQsIHRoZW4gd2UgaGF2ZSBhIGJyb2tlbiBscy4gIFRoaXMgY2FuIGhhcHBlbgorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQorICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQorICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQgInNhbmUiLgorICAgICAgYXNfZm5fZXJyb3IgJD8gImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KK2FsaWFzIGluIHlvdXIgZW52aXJvbm1lbnQiICIkTElORU5PIiA1CisgICBmaQorCisgICB0ZXN0ICIkMiIgPSBjb25mdGVzdC5maWxlCisgICApCit0aGVuCisgICAjIE9rLgorICAgOgorZWxzZQorICAgYXNfZm5fZXJyb3IgJD8gIm5ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFuIGRpc3RyaWJ1dGVkIGZpbGVzIQorQ2hlY2sgeW91ciBzeXN0ZW0gY2xvY2siICIkTElORU5PIiA1CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK3Rlc3QgIiRwcm9ncmFtX3ByZWZpeCIgIT0gTk9ORSAmJgorICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzJl4mJHByb2dyYW1fcHJlZml4JjskcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIKKyMgVXNlIGEgZG91YmxlICQgc28gbWFrZSBpZ25vcmVzIGl0LgordGVzdCAiJHByb2dyYW1fc3VmZml4IiAhPSBOT05FICYmCisgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9InMmXCQmJHByb2dyYW1fc3VmZml4JjskcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIKKyMgRG91YmxlIGFueSBcIG9yICQuCisjIEJ5IGRlZmF1bHQgd2FzIGBzLHgseCcsIHJlbW92ZSBpdCBpZiB1c2VsZXNzLgorYWNfc2NyaXB0PSdzL1tcXCRdLyYmL2c7cy87cyx4LHgsJC8vJworcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1gJGFzX2VjaG8gIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiB8IHNlZCAiJGFjX3NjcmlwdCJgCisKKyMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKK2FtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKKworaWYgdGVzdCB4IiR7TUlTU0lORytzZXR9IiAhPSB4c2V0OyB0aGVuCisgIGNhc2UgJGFtX2F1eF9kaXIgaW4KKyAgKlwgKiB8ICpcCSopCisgICAgTUlTU0lORz0iXCR7U0hFTEx9IFwiJGFtX2F1eF9kaXIvbWlzc2luZ1wiIiA7OworICAqKQorICAgIE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9taXNzaW5nIiA7OworICBlc2FjCitmaQorIyBVc2UgZXZhbCB0byBleHBhbmQgJFNIRUxMCitpZiBldmFsICIkTUlTU0lORyAtLXJ1biB0cnVlIjsgdGhlbgorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgLS1ydW4gIgorZWxzZQorICBhbV9taXNzaW5nX3J1bj0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBcYG1pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9yIG1pc3NpbmciID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogXGBtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nIiA+JjI7fQorZmkKKworaWYgdGVzdCB4IiR7aW5zdGFsbF9zaH0iICE9IHhzZXQ7IHRoZW4KKyAgY2FzZSAkYW1fYXV4X2RpciBpbgorICAqXCAqIHwgKlwJKikKKyAgICBpbnN0YWxsX3NoPSJcJHtTSEVMTH0gJyRhbV9hdXhfZGlyL2luc3RhbGwtc2gnIiA7OworICAqKQorICAgIGluc3RhbGxfc2g9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9pbnN0YWxsLXNoIgorICBlc2FjCitmaQorCisjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXIKKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQKKyMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UKKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSBubzsgdGhlbgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCisgIGFjX2N2X3Byb2dfU1RSSVA9IiRTVFJJUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX1NUUklQPSIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK1NUUklQPSRhY19jdl9wcm9nX1NUUklQCitpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1RSSVAiID4mNQorJGFzX2VjaG8gIiRTVFJJUCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1RSSVAiOyB0aGVuCisgIGFjX2N0X1NUUklQPSRTVFJJUAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfU1RSSVA9IiRhY19jdF9TVFJJUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X1NUUklQPSJzdHJpcCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9TVFJJUD0kYWNfY3ZfcHJvZ19hY19jdF9TVFJJUAoraWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X1NUUklQIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfU1RSSVAiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9TVFJJUCIgPSB4OyB0aGVuCisgICAgU1RSSVA9IjoiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgU1RSSVA9JGFjX2N0X1NUUklQCisgIGZpCitlbHNlCisgIFNUUklQPSIkYWNfY3ZfcHJvZ19TVFJJUCIKK2ZpCisKK2ZpCitJTlNUQUxMX1NUUklQX1BST0dSQU09IlwkKGluc3RhbGxfc2gpIC1jIC1zIgorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wLi4uICIgPiY2OyB9CitpZiB0ZXN0IC16ICIkTUtESVJfUCI7IHRoZW4KKyAgaWYgJHthY19jdl9wYXRoX21rZGlyKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi9vcHQvc2Z3L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIG1rZGlyIGdta2RpcjsgZG8KKwkgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisJICAgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfSB8fCBjb250aW51ZQorCSAgIGNhc2UgYCIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAtLXZlcnNpb24gMj4mMWAgaW4gIygKKwkgICAgICdta2RpciAoR05VIGNvcmV1dGlscykgJyogfCBcCisJICAgICAnbWtkaXIgKGNvcmV1dGlscykgJyogfCBcCisJICAgICAnbWtkaXIgKGZpbGV1dGlscykgJzQuMSopCisJICAgICAgIGFjX2N2X3BhdGhfbWtkaXI9JGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dAorCSAgICAgICBicmVhayAzOzsKKwkgICBlc2FjCisJIGRvbmUKKyAgICAgICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKKworICB0ZXN0IC1kIC4vLS12ZXJzaW9uICYmIHJtZGlyIC4vLS12ZXJzaW9uCisgIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9ta2RpcitzZXR9IiA9IHNldDsgdGhlbgorICAgIE1LRElSX1A9IiRhY19jdl9wYXRoX21rZGlyIC1wIgorICBlbHNlCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQorICAgICMgdmFsdWUgZm9yIE1LRElSX1Agd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKKyAgICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcworICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4KKyAgICBNS0RJUl9QPSIkYWNfaW5zdGFsbF9zaCAtZCIKKyAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1LRElSX1AiID4mNQorJGFzX2VjaG8gIiRNS0RJUl9QIiA+JjY7IH0KKworbWtkaXJfcD0iJE1LRElSX1AiCitjYXNlICRta2Rpcl9wIGluCisgIFtcXC8kXSogfCA/OltcXC9dKikgOzsKKyAgKi8qKSBta2Rpcl9wPSJcJCh0b3BfYnVpbGRkaXIpLyRta2Rpcl9wIiA7OworZXNhYworCitmb3IgYWNfcHJvZyBpbiBnYXdrIG1hd2sgbmF3ayBhd2sKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19BV0srOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbgorICBhY19jdl9wcm9nX0FXSz0iJEFXSyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX0FXSz0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQVdLPSRhY19jdl9wcm9nX0FXSworaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBV0siID4mNQorJGFzX2VjaG8gIiRBV0siID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkQVdLIiAmJiBicmVhaworZG9uZQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAiID4mNjsgfQorc2V0IHggJHtNQUtFLW1ha2V9CithY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9BQ0VPRgorU0hFTEwgPSAvYmluL3NoCithbGw6CisJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUlJScKK19BQ0VPRgorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZyAuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgorY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGxgIGluCisgICpAQEAlJSU9Pyo9QEBAJSUlKikKKyAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXM7OworICAqKQorICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PW5vOzsKK2VzYWMKK3JtIC1mIGNvbmZ0ZXN0Lm1ha2UKK2ZpCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQgPSB5ZXM7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKyAgU0VUX01BS0U9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFrZX0iCitmaQorCitybSAtcmYgLnRzdCAyPi9kZXYvbnVsbAorbWtkaXIgLnRzdCAyPi9kZXYvbnVsbAoraWYgdGVzdCAtZCAudHN0OyB0aGVuCisgIGFtX19sZWFkaW5nX2RvdD0uCitlbHNlCisgIGFtX19sZWFkaW5nX2RvdD1fCitmaQorcm1kaXIgLnRzdCAyPi9kZXYvbnVsbAorCitpZiB0ZXN0ICJgY2QgJHNyY2RpciAmJiBwd2RgIiAhPSAiYHB3ZGAiOyB0aGVuCisgICMgVXNlIC1JJChzcmNkaXIpIG9ubHkgd2hlbiAkKHNyY2RpcikgIT0gLiwgc28gdGhhdCBtYWtlJ3Mgb3V0cHV0CisgICMgaXMgbm90IHBvbGx1dGVkIHdpdGggcmVwZWF0ZWQgIi1JLiIKKyAgYW1fX2lzcmM9JyAtSSQoc3JjZGlyKScKKyAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCisgIGlmIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gInNvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gXCJtYWtlIGRpc3RjbGVhblwiIHRoZXJlIGZpcnN0IiAiJExJTkVOTyIgNQorICBmaQorZmkKKworIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbgorICBpZiAoY3lncGF0aCAtLXZlcnNpb24pID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnCisgIGVsc2UKKyAgICBDWUdQQVRIX1c9ZWNobworICBmaQorZmkKKworCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCisgUEFDS0FHRT0nbmV0cGVyZicKKyBWRVJTSU9OPScyLjcuMCcKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFBBQ0tBR0UgIiRQQUNLQUdFIgorX0FDRU9GCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBWRVJTSU9OICIkVkVSU0lPTiIKK19BQ0VPRgorCisjIFNvbWUgdG9vbHMgQXV0b21ha2UgbmVlZHMuCisKK0FDTE9DQUw9JHtBQ0xPQ0FMLSIke2FtX21pc3NpbmdfcnVufWFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259In0KKworCitBVVRPQ09ORj0ke0FVVE9DT05GLSIke2FtX21pc3NpbmdfcnVufWF1dG9jb25mIn0KKworCitBVVRPTUFLRT0ke0FVVE9NQUtFLSIke2FtX21pc3NpbmdfcnVufWF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSJ9CisKKworQVVUT0hFQURFUj0ke0FVVE9IRUFERVItIiR7YW1fbWlzc2luZ19ydW59YXV0b2hlYWRlciJ9CisKKworTUFLRUlORk89JHtNQUtFSU5GTy0iJHthbV9taXNzaW5nX3J1bn1tYWtlaW5mbyJ9CisKKyMgV2UgbmVlZCBhd2sgZm9yIHRoZSAiY2hlY2siIHRhcmdldC4gIFRoZSBzeXN0ZW0gImF3ayIgaXMgYmFkIG9uCisjIHNvbWUgcGxhdGZvcm1zLgorIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgWWVzLCBpdCdzIHN0aWxsIHVzZWQKKyMgaW4gdGhlIHdpbGQgOi0oICBXZSBzaG91bGQgZmluZCBhIHByb3BlciB3YXkgdG8gZGVwcmVjYXRlIGl0IC4uLgorQU1UQVI9JyQke1RBUi10YXJ9JworCithbV9fdGFyPSckJHtUQVItdGFyfSBjaG9mIC0gIiQkdGFyZGlyIicgYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJworCisKKworCisKK2FjX2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMgY29uZmlnLmgiCisKKyMgQUNfQ09ORklHX0hFQURFUihjb25maWcuaCkKKworCisKKyMgbWFrZSBzdXJlIHdlIGJ1aWxkIG5ldHBlcmZfdmVyc2lvbi5oCit0b3VjaCAgJHthY190b3Bfc3JjZGlyfXNyYy9uZXRwZXJmX3ZlcnNpb24uaC5pbgorCisjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Z2NjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCisgIGFjX2N0X0NDPSRDQworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9ImdjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCisgICAgQ0M9IiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDQz0kYWNfY3RfQ0MKKyAgZmkKK2Vsc2UKKyAgQ0M9IiRhY19jdl9wcm9nX0NDIgorZmkKKworaWYgdGVzdCAteiAiJENDIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Y2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJHthY190b29sX3ByZWZpeH1jYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICBmaQorZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19wcm9nX3JlamVjdGVkPW5vCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KKyAgICAgICBhY19wcm9nX3JlamVjdGVkPXllcworICAgICAgIGNvbnRpbnVlCisgICAgIGZpCisgICAgYWNfY3ZfcHJvZ19DQz0iY2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2lmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4KKyAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0LgorICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKKyAgc2hpZnQKKyAgaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRoZSBib2d1cyBvbmUuCisgICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgorICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgorICAgIHNoaWZ0CisgICAgYWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9JEAiCisgIGZpCitmaQorZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICAgIHRlc3QgLW4gIiRDQyIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgIGZvciBhY19wcm9nIGluIGNsLmV4ZQorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJGFjX2N0X0NDIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitmaQorCitmaQorCisKK3Rlc3QgLXogIiRDQyIgJiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKworIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgorJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbiIgPiY1CitzZXQgWCAkYWNfY29tcGlsZQorYWNfY29tcGlsZXI9JDIKK2ZvciBhY19vcHRpb24gaW4gLS12ZXJzaW9uIC12IC1WIC1xdmVyc2lvbjsgZG8KKyAgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1IgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBzZWQgJzEwYVwKKy4uLiByZXN0IG9mIHN0ZGVyciBvdXRwdXQgZGVsZXRlZCAuLi4KKyAgICAgICAgIDEwcScgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICBmaQorICBybSAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Citkb25lCisKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgYS5vdXQgYS5vdXQuZFNZTSBhLmV4ZSBiLm91dCIKKyMgVHJ5IHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIHdpdGhvdXQgLW8gZmlyc3QsIGRpc3JlZ2FyZCBhLm91dC4KKyMgSXQgd2lsbCBoZWxwIHVzIGRpYWdub3NlIGJyb2tlbiBjb21waWxlcnMsIGFuZCBmaW5kaW5nIG91dCBhbiBpbnR1aXRpb24KKyMgb2YgZXhlZXh0LgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MuLi4gIiA+JjY7IH0KK2FjX2xpbmtfZGVmYXVsdD1gJGFzX2VjaG8gIiRhY19saW5rIiB8IHNlZCAncy8gLW8gKmNvbmZ0ZXN0W14gXSovLydgCisKKyMgVGhlIHBvc3NpYmxlIG91dHB1dCBmaWxlczoKK2FjX2ZpbGVzPSJhLm91dCBjb25mdGVzdC5leGUgY29uZnRlc3QgYS5leGUgYV9vdXQuZXhlIGIub3V0IGNvbmZ0ZXN0LioiCisKK2FjX3JtZmlsZXM9Citmb3IgYWNfZmlsZSBpbiAkYWNfZmlsZXMKK2RvCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9iaiApIDs7CisgICAgKiApIGFjX3JtZmlsZXM9IiRhY19ybWZpbGVzICRhY19maWxlIjs7CisgIGVzYWMKK2RvbmUKK3JtIC1mICRhY19ybWZpbGVzCisKK2lmIHsgeyBhY190cnk9IiRhY19saW5rX2RlZmF1bHQiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rX2RlZmF1bHQiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6CisgICMgQXV0b2NvbmYtMi4xMyBjb3VsZCBzZXQgdGhlIGFjX2N2X2V4ZWV4dCB2YXJpYWJsZSB0byBgbm8nLgorIyBTbyBpZ25vcmUgYSB2YWx1ZSBvZiBgbm8nLCBvdGhlcndpc2UgdGhpcyB3b3VsZCBsZWFkIHRvIGBFWEVFWFQgPSBubycKKyMgaW4gYSBNYWtlZmlsZS4gIFdlIHNob3VsZCBub3Qgb3ZlcnJpZGUgYWNfY3ZfZXhlZXh0IGlmIGl0IHdhcyBjYWNoZWQsCisjIHNvIHRoYXQgdGhlIHVzZXIgY2FuIHNob3J0LWNpcmN1aXQgdGhpcyB0ZXN0IGZvciBjb21waWxlcnMgdW5rbm93biB0bworIyBBdXRvY29uZi4KK2ZvciBhY19maWxlIGluICRhY19maWxlcyAnJworZG8KKyAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9iaiApCisJOzsKKyAgICBbYWJdLm91dCApCisJIyBXZSBmb3VuZCB0aGUgZGVmYXVsdCBleGVjdXRhYmxlLCBidXQgZXhlZXh0PScnIGlzIG1vc3QKKwkjIGNlcnRhaW5seSByaWdodC4KKwlicmVhazs7CisgICAgKi4qICkKKwlpZiB0ZXN0ICIke2FjX2N2X2V4ZWV4dCtzZXR9IiA9IHNldCAmJiB0ZXN0ICIkYWNfY3ZfZXhlZXh0IiAhPSBubzsKKwl0aGVuIDo7IGVsc2UKKwkgICBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKKwlmaQorCSMgV2Ugc2V0IGFjX2N2X2V4ZWV4dCBoZXJlIGJlY2F1c2UgdGhlIGxhdGVyIHRlc3QgZm9yIGl0IGlzIG5vdAorCSMgc2FmZTogY3Jvc3MgY29tcGlsZXJzIG1heSBub3QgYWRkIHRoZSBzdWZmaXggaWYgZ2l2ZW4gYW4gYC1vJworCSMgYXJndW1lbnQsIHNvIHdlIG1heSBuZWVkIHRvIGtub3cgaXQgYXQgdGhhdCBwb2ludCBhbHJlYWR5LgorCSMgRXZlbiBpZiB0aGlzIHNlY3Rpb24gbG9va3MgY3J1ZnR5OiBpdCBoYXMgdGhlIGFkdmFudGFnZSBvZgorCSMgYWN0dWFsbHkgd29ya2luZy4KKwlicmVhazs7CisgICAgKiApCisJYnJlYWs7OworICBlc2FjCitkb25lCit0ZXN0ICIkYWNfY3ZfZXhlZXh0IiA9IG5vICYmIGFjX2N2X2V4ZWV4dD0KKworZWxzZQorICBhY19maWxlPScnCitmaQoraWYgdGVzdCAteiAiJGFjX2ZpbGUiOyB0aGVuIDoKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CiskYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4uLiAiID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYWNfZmlsZSIgPiY2OyB9CithY19leGVleHQ9JGFjX2N2X2V4ZWV4dAorCitybSAtZiAtciBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCBiLm91dAorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzLi4uICIgPiY2OyB9CitpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6CisgICMgSWYgYm90aCBgY29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBvYnNlcnZhYmxlKQorIyBjYXRjaCBgY29uZnRlc3QuZXhlJy4gIEZvciBpbnN0YW5jZSB3aXRoIEN5Z3dpbiwgYGxzIGNvbmZ0ZXN0JyB3aWxsCisjIHdvcmsgcHJvcGVybHkgKGkuZS4sIHJlZmVyIHRvIGBjb25mdGVzdC5leGUnKSwgd2hpbGUgaXQgd29uJ3Qgd2l0aAorIyBgcm0nLgorZm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCisgIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZQorICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKSA7OworICAgICouKiApIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAorCSAgYnJlYWs7OworICAgICogKSBicmVhazs7CisgIGVzYWMKK2RvbmUKK2Vsc2UKKyAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCitybSAtZiBjb25mdGVzdCBjb25mdGVzdCRhY19jdl9leGVleHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXhlZXh0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZXhlZXh0IiA+JjY7IH0KKworcm0gLWYgY29uZnRlc3QuJGFjX2V4dAorRVhFRVhUPSRhY19jdl9leGVleHQKK2FjX2V4ZWV4dD0kRVhFRVhUCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworRklMRSAqZiA9IGZvcGVuICgiY29uZnRlc3Qub3V0IiwgInciKTsKKyByZXR1cm4gZmVycm9yIChmKSB8fCBmY2xvc2UgKGYpICE9IDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxlcyBjb25mdGVzdC5vdXQiCisjIENoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgorIyB0aGUgY29tcGlsZXIgaXMgYnJva2VuLCBvciB3ZSBjcm9zcyBjb21waWxlLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXM7IHRoZW4KKyAgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgaWYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfY3ZfZXhlZXh0JworICB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfdHJ5IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4KKyAgICBjcm9zc19jb21waWxpbmc9bm8KKyAgZWxzZQorICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KKwljcm9zc19jb21waWxpbmc9eWVzCisgICAgZWxzZQorCXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KK0lmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKyAgICBmaQorICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY3Jvc3NfY29tcGlsaW5nIiA+JjUKKyRhc19lY2hvICIkY3Jvc3NfY29tcGlsaW5nIiA+JjY7IH0KKworcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdCRhY19jdl9leGVleHQgY29uZnRlc3Qub3V0CithY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9vYmpleHQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqCitpZiB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZSIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2NvbXBpbGUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6CisgIGZvciBhY19maWxlIGluIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqIGNvbmZ0ZXN0Lio7IGRvCisgIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZTsKKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSApIDs7CisgICAgKikgYWNfY3Zfb2JqZXh0PWBleHByICIkYWNfZmlsZSIgOiAnLipcLlwoLipcKSdgCisgICAgICAgYnJlYWs7OworICBlc2FjCitkb25lCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCit7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X29iamV4dCIgPiY2OyB9CitPQkpFWFQ9JGFjX2N2X29iamV4dAorYWNfb2JqZXh0PSRPQkpFWFQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAiID4mNjsgfQoraWYgJHthY19jdl9jX2NvbXBpbGVyX2dudSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisjaWZuZGVmIF9fR05VQ19fCisgICAgICAgY2hva2UgbWUKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY29tcGlsZXJfZ251PXllcworZWxzZQorICBhY19jb21waWxlcl9nbnU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2FjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21waWxlcl9nbnUKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9CitpZiB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4KKyAgR0NDPXllcworZWxzZQorICBHQ0M9CitmaQorYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQorYWNfc2F2ZV9DRkxBR1M9JENGTEFHUworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19jY19nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfc2F2ZV9jX3dlcnJvcl9mbGFnPSRhY19jX3dlcnJvcl9mbGFnCisgICBhY19jX3dlcnJvcl9mbGFnPXllcworICAgYWNfY3ZfcHJvZ19jY19nPW5vCisgICBDRkxBR1M9Ii1nIgorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Byb2dfY2NfZz15ZXMKK2Vsc2UKKyAgQ0ZMQUdTPSIiCisgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcKKwkgQ0ZMQUdTPSItZyIKKwkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Byb2dfY2NfZz15ZXMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcHJvZ19jY19nIiA+JjY7IH0KK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KKyAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUworZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1nIC1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0iLWciCisgIGZpCitlbHNlCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9CisgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2NjX2M4OSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2N2X3Byb2dfY2NfYzg5PW5vCithY19zYXZlX0NDPSRDQworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25mLnNoLiAgKi8KK3N0cnVjdCBidWYgeyBpbnQgeDsgfTsKK0ZJTEUgKiAoKnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7CitzdGF0aWMgY2hhciAqZSAocCwgaSkKKyAgICAgY2hhciAqKnA7CisgICAgIGludCBpOworeworICByZXR1cm4gcFtpXTsKK30KK3N0YXRpYyBjaGFyICpmIChjaGFyICogKCpnKSAoY2hhciAqKiwgaW50KSwgY2hhciAqKnAsIC4uLikKK3sKKyAgY2hhciAqczsKKyAgdmFfbGlzdCB2OworICB2YV9zdGFydCAodixwKTsKKyAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKKyAgdmFfZW5kICh2KTsKKyAgcmV0dXJuIHM7Cit9CisKKy8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQgaGFzCisgICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMuCisgICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVuZm9ydHVuYXRlbHksIGluc3RlYWQgYXJlIHNpbGVudGx5IHRyZWF0ZWQKKyAgIGFzICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJvciwgdW50aWwgLXN0ZCBpcyBhZGRlZCB0byBnZXQKKyAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4KKyAgIGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdzIG5lY2Vzc2FyeSB0byB3cml0ZSAnXHgwMCc9PTAgdG8gZ2V0IHNvbWV0aGluZworICAgdGhhdCdzIHRydWUgb25seSB3aXRoIC1zdGQuICAqLworaW50IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0xXTsKKworLyogSUJNIEMgNiBmb3IgQUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQsIGJ1dCBpdCByZXBsYWNlcyBtYWNybyBwYXJhbWV0ZXJzCisgICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4gICovCisjZGVmaW5lIEZPTyh4KSAneCcKK2ludCB4bGM2X2NjX2FycmF5W0ZPTyhhKSA9PSAneCcgPyAxIDogLTFdOworCitpbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsKK3N0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9Oworc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307CitpbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKK2ludCBhcmdjOworY2hhciAqKmFyZ3Y7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBdICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorZm9yIGFjX2FyZyBpbiAnJyAtcWxhbmdsdmw9ZXh0Yzg5IC1xbGFuZ2x2bD1hbnNpIC1zdGQgXAorCS1BZSAiLUFhIC1EX0hQVVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJT05TX18iCitkbworICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKKyAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAorICB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSAieG5vIiAmJiBicmVhaworZG9uZQorcm0gLWYgY29uZnRlc3QuJGFjX2V4dAorQ0M9JGFjX3NhdmVfQ0MKKworZmkKKyMgQUNfQ0FDSEVfVkFMCitjYXNlICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiBpbgorICB4KQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1CiskYXNfZWNobyAibm9uZSBuZWVkZWQiID4mNjsgfSA7OworICB4bm8pCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVuc3VwcG9ydGVkIiA+JjUKKyRhc19lY2hvICJ1bnN1cHBvcnRlZCIgPiY2OyB9IDs7CisgICopCisgICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19jODkiCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2M4OSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjY7IH0gOzsKK2VzYWMKK2lmIHRlc3QgIngkYWNfY3ZfcHJvZ19jY19jODkiICE9IHhubzsgdGhlbiA6CisKK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK0RFUERJUj0iJHthbV9fbGVhZGluZ19kb3R9ZGVwcyIKKworYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlcGZpbGVzIgorCisKK2FtX21ha2U9JHtNQUtFLW1ha2V9CitjYXQgPiBjb25maW5jIDw8ICdFTkQnCithbV9fZG9pdDoKKwlAZWNobyB0aGlzIGlzIHRoZSBhbV9fZG9pdCB0YXJnZXQKKy5QSE9OWTogYW1fX2RvaXQKK0VORAorIyBJZiB3ZSBkb24ndCBmaW5kIGFuIGluY2x1ZGUgZGlyZWN0aXZlLCBqdXN0IGNvbW1lbnQgb3V0IHRoZSBjb2RlLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2UuLi4gIiA+JjY7IH0KK2FtX19pbmNsdWRlPSIjIgorYW1fX3F1b3RlPQorX2FtX3Jlc3VsdD1ub25lCisjIEZpcnN0IHRyeSBHTlUgbWFrZSBzdHlsZSBpbmNsdWRlLgorZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNvbmZtZgorIyBJZ25vcmUgYWxsIGtpbmRzIG9mIGFkZGl0aW9uYWwgb3V0cHV0IGZyb20gYG1ha2UnLgorY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbGAgaW4gIygKKyp0aGVcIGFtX19kb2l0XCB0YXJnZXQqKQorICBhbV9faW5jbHVkZT1pbmNsdWRlCisgIGFtX19xdW90ZT0KKyAgX2FtX3Jlc3VsdD1HTlUKKyAgOzsKK2VzYWMKKyMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLgoraWYgdGVzdCAiJGFtX19pbmNsdWRlIiA9ICIjIjsgdGhlbgorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZtZgorICAgY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVsbGAgaW4gIygKKyAgICp0aGVcIGFtX19kb2l0XCB0YXJnZXQqKQorICAgICBhbV9faW5jbHVkZT0uaW5jbHVkZQorICAgICBhbV9fcXVvdGU9IlwiIgorICAgICBfYW1fcmVzdWx0PUJTRAorICAgICA7OworICAgZXNhYworZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJF9hbV9yZXN1bHQiID4mNQorJGFzX2VjaG8gIiRfYW1fcmVzdWx0IiA+JjY7IH0KK3JtIC1mIGNvbmZpbmMgY29uZm1mCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nOworZmkKKworaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuCisgIGFtX2RlcGNvbXA9IiRhY19hdXhfZGlyL2RlcGNvbXAiCisgIEFNREVQQkFDS1NMQVNIPSdcJworICBhbV9fbm9kZXA9J19ubycKK2ZpCisgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuCisgIEFNREVQX1RSVUU9CisgIEFNREVQX0ZBTFNFPScjJworZWxzZQorICBBTURFUF9UUlVFPScjJworICBBTURFUF9GQUxTRT0KK2ZpCisKKworCitkZXBjYz0iJENDIiAgIGFtX2NvbXBpbGVyX2xpc3Q9CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0KK2lmICR7YW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuCisgICMgV2UgbWFrZSBhIHN1YmRpciBhbmQgZG8gdGhlIHRlc3RzIHRoZXJlLiAgT3RoZXJ3aXNlIHdlIGNhbiBlbmQgdXAKKyAgIyBtYWtpbmcgYm9ndXMgZmlsZXMgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBuZXZlciByZW1vdmUuICBGb3IKKyAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKKyAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAorICAjIGluIEQnLgorICBybSAtcmYgY29uZnRlc3QuZGlyCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQorICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgorICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0ZXN0LmRpcgorICBjZCBjb25mdGVzdC5kaXIKKyAgIyBXZSB3aWxsIGJ1aWxkIG9iamVjdHMgYW5kIGRlcGVuZGVuY2llcyBpbiBhIHN1YmRpcmVjdG9yeSBiZWNhdXNlCisgICMgaXQgaGVscHMgdG8gZGV0ZWN0IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVzLiAgRm9yIGluc3RhbmNlCisgICMgYm90aCBUcnU2NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAtTUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhCisgICMgc2lkZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1dCBJQ0Mgd2lsbCBwdXQgdGhlIGRlcGVuZGVuY2llcyBpbgorICAjIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3aWxsIHB1dCB0aGVtIGluIHRoZSBvYmplY3QKKyAgIyBkaXJlY3RvcnkuCisgIG1rZGlyIHN1YgorCisgIGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUKKyAgaWYgdGVzdCAiJGFtX2NvbXBpbGVyX2xpc3QiID0gIiI7IHRoZW4KKyAgICAgYW1fY29tcGlsZXJfbGlzdD1gc2VkIC1uICdzL14jKlwoW2EtekEtWjAtOV0qXCkpJC9cMS9wJyA8IC4vZGVwY29tcGAKKyAgZmkKKyAgYW1fX3VuaXZlcnNhbD1mYWxzZQorICBjYXNlICIgJGRlcGNjICIgaW4gIygKKyAgICAgKlwgLWFyY2hcICpcIC1hcmNoXCAqKSBhbV9fdW5pdmVyc2FsPXRydWUgOzsKKyAgICAgZXNhYworCisgIGZvciBkZXBtb2RlIGluICRhbV9jb21waWxlcl9saXN0OyBkbworICAgICMgU2V0dXAgYSBzb3VyY2Ugd2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVzZSBzb21lIGNvbXBpbGVycworICAgICMgbGlrZSB0byB3cmFwIGxhcmdlIGRlcGVuZGVuY3kgbGlzdHMgb24gY29sdW1uIDgwICh3aXRoIFwpLCBhbmQKKyAgICAjIHdlIHNob3VsZCBub3QgY2hvb3NlIGEgZGVwY29tcCBtb2RlIHdoaWNoIGlzIGNvbmZ1c2VkIGJ5IHRoaXMuCisgICAgIworICAgICMgV2UgbmVlZCB0byByZWNyZWF0ZSB0aGVzZSBmaWxlcyBmb3IgZWFjaCB0ZXN0LCBhcyB0aGUgY29tcGlsZXIgbWF5CisgICAgIyBvdmVyd3JpdGUgc29tZSBvZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRoIG9ic2N1cmUgY29tbWFuZCBsaW5lcy4KKyAgICAjIFRoaXMgaGFwcGVucyBhdCBsZWFzdCB3aXRoIHRoZSBBSVggQyBjb21waWxlci4KKyAgICA6ID4gc3ViL2NvbmZ0ZXN0LmMKKyAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNjsgZG8KKyAgICAgIGVjaG8gJyNpbmNsdWRlICJjb25mdHN0JyRpJy5oIicgPj4gc3ViL2NvbmZ0ZXN0LmMKKyAgICAgICMgVXNpbmcgYDogPiBzdWIvY29uZnRzdCRpLmgnIGNyZWF0ZXMgb25seSBzdWIvY29uZnRzdDEuaCB3aXRoCisgICAgICAjIFNvbGFyaXMgOCdzIHsvdXNyLH0vYmluL3NoLgorICAgICAgdG91Y2ggc3ViL2NvbmZ0c3QkaS5oCisgICAgZG9uZQorICAgIGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1b3RlfSIgPiBjb25mbWYKKworICAgICMgV2UgY2hlY2sgd2l0aCBgLWMnIGFuZCBgLW8nIGZvciB0aGUgc2FrZSBvZiB0aGUgImRhc2htc3Rkb3V0IgorICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBTdW5Qcm8gQysrIGNvbXBpbGVyIGRvZXMgbm90IHByb3Blcmx5CisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5kIHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMuICBBbHNvLCBzb21lIEludGVsCisgICAgIyB2ZXJzaW9ucyBoYWQgdHJvdWJsZSB3aXRoIG91dHB1dCBpbiBzdWJkaXJzCisgICAgYW1fX29iaj1zdWIvY29uZnRlc3QuJHtPQkpFWFQtb30KKyAgICBhbV9fbWludXNfb2JqPSItbyAkYW1fX29iaiIKKyAgICBjYXNlICRkZXBtb2RlIGluCisgICAgZ2NjKQorICAgICAgIyBUaGlzIGRlcG1vZGUgY2F1c2VzIGEgY29tcGlsZXIgcmFjZSBpbiB1bml2ZXJzYWwgbW9kZS4KKyAgICAgIHRlc3QgIiRhbV9fdW5pdmVyc2FsIiA9IGZhbHNlIHx8IGNvbnRpbnVlCisgICAgICA7OworICAgIG5vc2lkZWVmZmVjdCkKKyAgICAgICMgYWZ0ZXIgdGhpcyB0YWcsIG1lY2hhbmlzbXMgYXJlIG5vdCBieSBzaWRlLWVmZmVjdCwgc28gdGhleSdsbAorICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZAorICAgICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgPSB4eWVzOyB0aGVuCisJY29udGludWUKKyAgICAgIGVsc2UKKwlicmVhaworICAgICAgZmkKKyAgICAgIDs7CisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKKyAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAorICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KKyAgICAgIGFtX19vYmo9Y29uZnRlc3QuJHtPQkpFWFQtb30KKyAgICAgIGFtX19taW51c19vYmo9CisgICAgICA7OworICAgIG5vbmUpIGJyZWFrIDs7CisgICAgZXNhYworICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXAorICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9JGFtX19vYmogXAorICAgICAgIGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcCisgICAgICAgJFNIRUxMIC4vZGVwY29tcCAkZGVwY2MgLWMgJGFtX19taW51c19vYmogc3ViL2NvbmZ0ZXN0LmMgXAorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJgorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3QxLmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICAgICBncmVwIHN1Yi9jb25mdHN0Ni5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmCisgICAgICAgZ3JlcCAkYW1fX29iaiBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZSB3YXJuaW5ncworICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLgorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToKKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgICBhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBmaQorICBkb25lCisKKyAgY2QgLi4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorZWxzZQorICBhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPiY1CiskYXNfZWNobyAiJGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA+JjY7IH0KK0NDREVQTU9ERT1kZXBtb2RlPSRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZQorCisgaWYKKyAgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vIFwKKyAgJiYgdGVzdCAiJGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA9IGdjYzM7IHRoZW4KKyAgYW1fX2Zhc3RkZXBDQ19UUlVFPQorICBhbV9fZmFzdGRlcENDX0ZBTFNFPScjJworZWxzZQorICBhbV9fZmFzdGRlcENDX1RSVUU9JyMnCisgIGFtX19mYXN0ZGVwQ0NfRkFMU0U9CitmaQorCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yYW5saWI7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgIGFjX2N2X3Byb2dfUkFOTElCPSIkUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfUkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitSQU5MSUI9JGFjX2N2X3Byb2dfUkFOTElCCitpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJBTkxJQiIgPiY1CiskYXNfZWNobyAiJFJBTkxJQiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbgorICBhY19jdF9SQU5MSUI9JFJBTkxJQgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKK2lmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkFOTElCIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfUkFOTElCIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfUkFOTElCIiA9IHg7IHRoZW4KKyAgICBSQU5MSUI9IjoiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgUkFOTElCPSRhY19jdF9SQU5MSUIKKyAgZmkKK2Vsc2UKKyAgUkFOTElCPSIkYWNfY3ZfcHJvZ19SQU5MSUIiCitmaQorCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYW4gQU5TSSBDLWNvbmZvcm1pbmcgY29uc3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFuIEFOU0kgQy1jb25mb3JtaW5nIGNvbnN0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfY29uc3QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworLyogRklYTUU6IEluY2x1ZGUgdGhlIGNvbW1lbnRzIHN1Z2dlc3RlZCBieSBQYXVsLiAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworICAvKiBVbHRyaXggbWlwcyBjYyByZWplY3RzIHRoaXMuICAqLworICB0eXBlZGVmIGludCBjaGFyc2V0WzJdOworICBjb25zdCBjaGFyc2V0IGNzOworICAvKiBTdW5PUyA0LjEuMSBjYyByZWplY3RzIHRoaXMuICAqLworICBjaGFyIGNvbnN0ICpjb25zdCAqcGNwY2M7CisgIGNoYXIgKipwcGM7CisgIC8qIE5FQyBTVlI0LjAuMiBtaXBzIGNjIHJlamVjdHMgdGhpcy4gICovCisgIHN0cnVjdCBwb2ludCB7aW50IHgsIHk7fTsKKyAgc3RhdGljIHN0cnVjdCBwb2ludCBjb25zdCB6ZXJvID0gezAsMH07CisgIC8qIEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcy4KKyAgICAgSXQgZG9lcyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29uc3QgWCogcG9pbnRlciBmcm9tIGFub3RoZXIgaW4KKyAgICAgYW4gYXJtIG9mIGFuIGlmLWV4cHJlc3Npb24gd2hvc2UgaWYtcGFydCBpcyBub3QgYSBjb25zdGFudAorICAgICBleHByZXNzaW9uICovCisgIGNvbnN0IGNoYXIgKmcgPSAic3RyaW5nIjsKKyAgcGNwY2MgPSAmZyArIChnID8gZy1nIDogMCk7CisgIC8qIEhQVVggNy4wIGNjIHJlamVjdHMgdGhlc2UuICovCisgICsrcGNwY2M7CisgIHBwYyA9IChjaGFyKiopIHBjcGNjOworICBwY3BjYyA9IChjaGFyIGNvbnN0ICpjb25zdCAqKSBwcGM7CisgIHsgLyogU0NPIDMuMnY0IGNjIHJlamVjdHMgdGhpcy4gICovCisgICAgY2hhciAqdDsKKyAgICBjaGFyIGNvbnN0ICpzID0gMCA/IChjaGFyICopIDAgOiAoY2hhciBjb25zdCAqKSAwOworCisgICAgKnQrKyA9IDA7CisgICAgaWYgKHMpIHJldHVybiAwOworICB9CisgIHsgLyogU29tZW9uZSB0aGlua3MgdGhlIFN1biBzdXBwb3NlZGx5LUFOU0kgY29tcGlsZXIgd2lsbCByZWplY3QgdGhpcy4gICovCisgICAgaW50IHhbXSA9IHsyNSwgMTd9OworICAgIGNvbnN0IGludCAqZm9vID0gJnhbMF07CisgICAgKytmb287CisgIH0KKyAgeyAvKiBTdW4gU0MxLjAgQU5TSSBjb21waWxlciByZWplY3RzIHRoaXMgLS0gYnV0IG5vdCB0aGUgYWJvdmUuICovCisgICAgdHlwZWRlZiBjb25zdCBpbnQgKmlwdHI7CisgICAgaXB0ciBwID0gMDsKKyAgICArK3A7CisgIH0KKyAgeyAvKiBBSVggWEwgQyAxLjAyLjAuMCByZWplY3RzIHRoaXMgc2F5aW5nCisgICAgICAgImsuYyIsIGxpbmUgMi4yNzogMTUwNi0wMjUgKFMpIE9wZXJhbmQgbXVzdCBiZSBhIG1vZGlmaWFibGUgbHZhbHVlLiAqLworICAgIHN0cnVjdCBzIHsgaW50IGo7IGNvbnN0IGludCAqYXBbM107IH07CisgICAgc3RydWN0IHMgKmI7IGItPmogPSA1OworICB9CisgIHsgLyogVUxUUklYLTMyIFYzLjEgKFJldiA5KSB2Y2MgcmVqZWN0cyB0aGlzICovCisgICAgY29uc3QgaW50IGZvbyA9IDEwOworICAgIGlmICghZm9vKSByZXR1cm4gMDsKKyAgfQorICByZXR1cm4gIWNzWzBdICYmICF6ZXJvLng7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2NfY29uc3Q9eWVzCitlbHNlCisgIGFjX2N2X2NfY29uc3Q9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29uc3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX2NvbnN0IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2NfY29uc3QgPSBubzsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBjb25zdCAvKiovIiA+PmNvbmZkZWZzLmgKKworZmkKKworCisjIENoZWNrcyBmb3IgbGlicmFyaWVzLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbG0iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxtLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9tX21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG0gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworcmV0dXJuIG1haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX21fbWFpbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX21fbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbV9tYWluIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX21fbWFpbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9tX21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJNIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sbSAkTElCUyIKKworZmkKK2FjX2N2X2xpYl9tPWFjX2N2X2xpYl9tX21haW4KKworCisjIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAiID4mNjsgfQorIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KK2lmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisgIENQUD0KK2ZpCitpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgorICBpZiAke2FjX2N2X3Byb2dfQ1BQKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZAorICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRDQyAtRSAtdHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCisgICAgZG8KKyAgICAgIGFjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKwkJICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorICBicmVhaworZmkKKworICAgIGRvbmUKKyAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCisKK2ZpCisgIENQUD0kYWNfY3ZfcHJvZ19DUFAKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19DUFA9JENQUAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1BQIiA+JjUKKyRhc19lY2hvICIkQ1BQIiA+JjY7IH0KK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKwkJICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorCitlbHNlCisgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9HUkVQKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAteiAiJEdSRVAiOyB0aGVuCisgIGFjX3BhdGhfR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGdyZXAgZ2dyZXA7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX0dSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICB7IHRlc3QgLWYgIiRhY19wYXRoX0dSRVAiICYmICRhc190ZXN0X3ggIiRhY19wYXRoX0dSRVAiOyB9IHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9HUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9HUkVQCitjYXNlIGAiJGFjX3BhdGhfR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9HUkVQPSIkYWNfcGF0aF9HUkVQIiBhY19wYXRoX0dSRVBfZm91bmQ9Ojs7CisqKQorICBhY19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJ0dSRVAnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfR1JFUCIgLWUgJ0dSRVAkJyAtZSAnLShjYW5ub3QgbWF0Y2gpLScgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0dSRVBfbWF4LTB9OyB0aGVuCisgICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKyAgICAgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIKKyAgICAgIGFjX3BhdGhfR1JFUF9tYXg9JGFjX2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJyZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX0dSRVBfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgIGZpCitlbHNlCisgIGFjX2N2X3BhdGhfR1JFUD0kR1JFUAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9HUkVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9HUkVQIiA+JjY7IH0KKyBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBlZ3JlcC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0VHUkVQKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgZWNobyBhIHwgJEdSRVAgLUUgJyhhfGIpJyA+L2Rldi9udWxsIDI+JjEKKyAgIHRoZW4gYWNfY3ZfcGF0aF9FR1JFUD0iJEdSRVAgLUUiCisgICBlbHNlCisgICAgIGlmIHRlc3QgLXogIiRFR1JFUCI7IHRoZW4KKyAgYWNfcGF0aF9FR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGVncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9FR1JFUD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIHsgdGVzdCAtZiAiJGFjX3BhdGhfRUdSRVAiICYmICRhc190ZXN0X3ggIiRhY19wYXRoX0VHUkVQIjsgfSB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfRUdSRVAgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0VHUkVQCitjYXNlIGAiJGFjX3BhdGhfRUdSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfRUdSRVA9IiRhY19wYXRoX0VHUkVQIiBhY19wYXRoX0VHUkVQX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdFR1JFUCcgPj4gImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9FR1JFUCIgJ0VHUkVQJCcgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0VHUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIKKyAgICAgIGFjX3BhdGhfRUdSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9FR1JFUF9mb3VuZCAmJiBicmVhayAzCisgICAgZG9uZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfRUdSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0VHUkVQPSRFR1JFUAorZmkKKworICAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVAiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX0VHUkVQIiA+JjY7IH0KKyBFR1JFUD0iJGFjX2N2X3BhdGhfRUdSRVAiCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9oZWFkZXJfc3RkYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2hlYWRlcl9zdGRjPXllcworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICA6CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQorIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQorIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMpKQorI2Vsc2UKKyMgZGVmaW5lIElTTE9XRVIoYykgXAorCQkgICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAorCQkgICAgIHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKKwkJICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjZW5kaWYKKworI2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKK2ludAorbWFpbiAoKQoreworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKKwl8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKKyAgICAgIHJldHVybiAyOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9oZWFkZXJfc3RkYyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5cy93YWl0LmggdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5cy93YWl0LmggdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfaGVhZGVyX3N5c193YWl0X2grOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpZm5kZWYgV0VYSVRTVEFUVVMKKyMgZGVmaW5lIFdFWElUU1RBVFVTKHN0YXRfdmFsKSAoKHVuc2lnbmVkIGludCkgKHN0YXRfdmFsKSA+PiA4KQorI2VuZGlmCisjaWZuZGVmIFdJRkVYSVRFRAorIyBkZWZpbmUgV0lGRVhJVEVEKHN0YXRfdmFsKSAoKChzdGF0X3ZhbCkgJiAyNTUpID09IDApCisjZW5kaWYKKworaW50CittYWluICgpCit7CisgIGludCBzOworICB3YWl0ICgmcyk7CisgIHMgPSBXSUZFWElURUQgKHMpID8gV0VYSVRTVEFUVVMgKHMpIDogMTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfc3lzX3dhaXRfaD15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N5c193YWl0X2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zeXNfd2FpdF9oIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N5c193YWl0X2giID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c193YWl0X2ggPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfV0FJVF9IIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKKyMgbGV0cyBrZWVwIHRoaXMgaW4gc29tZSBzZW1ibGVuY2Ugb2YgYWxwaGFiZXRpY2FsIG9yZGVyCisjIE9uIElSSVggNS4zLCBzeXMvdHlwZXMgYW5kIGludHR5cGVzLmggYXJlIGNvbmZsaWN0aW5nLgorZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCisJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAorIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKworZm9yIGFjX2hlYWRlciBpbiBhcnBhL2luZXQuaCBlbmRpYW4uaCBlcnJuby5oIGZjbnRsLmggaWZhZGRycy5oIGxpbWl0cy5oIGxpbnV4L3RjcC5oIGxpbnV4L3NvY2tldC5oIG1hbGxvYy5oIG5ldGRiLmggbmV0aW5ldC9pbi5oIG5ldGluZXQvc2N0cC5oIHNjaGVkLmggc2lnbmFsLmggc3RkbGliLmggc3RyaW5nLmggc3RyaW5ncy5oIHN5c2NhbGwuaCBzeXMvaW9jdGwuaCBzeXMvbW1hbi5oIHN5cy9wYXJhbS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdC5oIHN5cy90aW1lLmggc3lzL3dhaXQuaCBzeXMvaXBjLmggc3lzL3NvY2tpby5oIHN5cy9zeXNpbmZvLmggc3lzL3dhaXQuaCBzdGRsaWIuaCB1bmlzdGQuaCBuZXRpbmV0L2luX3N5c3RtLmggbmV0aW5ldC9pcC5oCitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKworIyBTb21lIHBsYXRmb3JtcyByZXF1aXJlIHRoZXNlLiAgVGhlcmUgbWF5IGJlIGEgYmV0dGVyIHdheS4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxzb2NrZXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxzb2NrZXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NvY2tldF9tYWluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxzb2NrZXQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworcmV0dXJuIG1haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3NvY2tldF9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfc29ja2V0X21haW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NvY2tldF9tYWluIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3NvY2tldF9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NvY2tldF9tYWluIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCU09DS0VUIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sc29ja2V0ICRMSUJTIgorCitmaQorYWNfY3ZfbGliX3NvY2tldD1hY19jdl9saWJfc29ja2V0X21haW4KKworaWYgdGVzdCAiJGFjX2N2X2xpYl9zb2NrZXRfbWFpbiIgPSB5ZXMgOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbG5zbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbG5zbC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfbnNsX21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG5zbCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CityZXR1cm4gbWFpbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfbnNsX21haW49eWVzCitlbHNlCisgIGFjX2N2X2xpYl9uc2xfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbnNsX21haW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfbnNsX21haW4iID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfbnNsX21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJOU0wgMQorX0FDRU9GCisKKyAgTElCUz0iLWxuc2wgJExJQlMiCisKK2ZpCithY19jdl9saWJfbnNsPWFjX2N2X2xpYl9uc2xfbWFpbgorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbHNlbmRmaWxlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sc2VuZGZpbGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NlbmRmaWxlX21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHNlbmRmaWxlICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKK3JldHVybiBtYWluICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9zZW5kZmlsZV9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfc2VuZGZpbGVfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc2VuZGZpbGVfbWFpbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9zZW5kZmlsZV9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NlbmRmaWxlX21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJTRU5ERklMRSAxCitfQUNFT0YKKworICBMSUJTPSItbHNlbmRmaWxlICRMSUJTIgorCitmaQorYWNfY3ZfbGliX3NlbmRmaWxlPWFjX2N2X2xpYl9zZW5kZmlsZV9tYWluCisKKyAgICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xhcmdlZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2xhcmdlZmlsZTsKK2ZpCisKK2lmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubzsgdGhlbgorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc3lzX2xhcmdlZmlsZV9DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9bm8KKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICAgYWNfc2F2ZV9DQz0kQ0MKKyAgICAgICB3aGlsZSA6OyBkbworCSAjIElSSVggNi4yIGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZhdWx0LAorCSAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCisJIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CisJIENDPSIkQ0MgLW4zMiIKKwkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAorCSBicmVhaworICAgICAgIGRvbmUKKyAgICAgICBDQz0kYWNfc2F2ZV9DQworICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKKyAgICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNjsgfQorICBpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgIT0gbm87IHRoZW4KKyAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQworICBmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB3aGlsZSA6OyBkbworICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubzsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCisgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCisgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQorCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisJCSAgICAgID8gMSA6IC0xXTsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQ7IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPXVua25vd24KKyAgYnJlYWsKK2RvbmUKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNjsgfQorY2FzZSAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgaW4gIygKKyAgbm8gfCB1bmtub3duKSA7OworICAqKQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMKK19BQ0VPRgorOzsKK2VzYWMKK3JtIC1yZiBjb25mdGVzdCoKKyAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3N5c19sYXJnZV9maWxlcys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHdoaWxlIDo7IGRvCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3N5c19sYXJnZV9maWxlcz1ubzsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2RlZmluZSBfTEFSR0VfRklMRVMgMQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCisgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCisgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQorCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisJCSAgICAgID8gMSA6IC0xXTsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGFjX2N2X3N5c19sYXJnZV9maWxlcz11bmtub3duCisgIGJyZWFrCitkb25lCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNjsgfQorY2FzZSAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIGluICMoCisgIG5vIHwgdW5rbm93bikgOzsKKyAgKikKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgX0xBUkdFX0ZJTEVTICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMKK19BQ0VPRgorOzsKK2VzYWMKK3JtIC1yZiBjb25mdGVzdCoKKyAgZmkKK2ZpCisKK2ZpCisKKyMgdGhpcyBvbmUgaXMgZm9yIFRydTY0IGFuZCBiaW5kX3RvX2NwdV9pZAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbG1hY2giID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxtYWNoLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9tYWNoX21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG1hY2ggICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworcmV0dXJuIG1haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX21hY2hfbWFpbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX21hY2hfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbWFjaF9tYWluIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX21hY2hfbWFpbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9tYWNoX21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJNQUNIIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sbWFjaCAkTElCUyIKKworZmkKK2FjX2N2X2xpYl9tYWNoPWFjX2N2X2xpYl9tYWNoX21haW4KKworCisjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYW4gQU5TSSBDLWNvbmZvcm1pbmcgY29uc3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY19jb25zdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisvKiBGSVhNRTogSW5jbHVkZSB0aGUgY29tbWVudHMgc3VnZ2VzdGVkIGJ5IFBhdWwuICovCisjaWZuZGVmIF9fY3BsdXNwbHVzCisgIC8qIFVsdHJpeCBtaXBzIGNjIHJlamVjdHMgdGhpcy4gICovCisgIHR5cGVkZWYgaW50IGNoYXJzZXRbMl07CisgIGNvbnN0IGNoYXJzZXQgY3M7CisgIC8qIFN1bk9TIDQuMS4xIGNjIHJlamVjdHMgdGhpcy4gICovCisgIGNoYXIgY29uc3QgKmNvbnN0ICpwY3BjYzsKKyAgY2hhciAqKnBwYzsKKyAgLyogTkVDIFNWUjQuMC4yIG1pcHMgY2MgcmVqZWN0cyB0aGlzLiAgKi8KKyAgc3RydWN0IHBvaW50IHtpbnQgeCwgeTt9OworICBzdGF0aWMgc3RydWN0IHBvaW50IGNvbnN0IHplcm8gPSB7MCwwfTsKKyAgLyogQUlYIFhMIEMgMS4wMi4wLjAgcmVqZWN0cyB0aGlzLgorICAgICBJdCBkb2VzIG5vdCBsZXQgeW91IHN1YnRyYWN0IG9uZSBjb25zdCBYKiBwb2ludGVyIGZyb20gYW5vdGhlciBpbgorICAgICBhbiBhcm0gb2YgYW4gaWYtZXhwcmVzc2lvbiB3aG9zZSBpZi1wYXJ0IGlzIG5vdCBhIGNvbnN0YW50CisgICAgIGV4cHJlc3Npb24gKi8KKyAgY29uc3QgY2hhciAqZyA9ICJzdHJpbmciOworICBwY3BjYyA9ICZnICsgKGcgPyBnLWcgOiAwKTsKKyAgLyogSFBVWCA3LjAgY2MgcmVqZWN0cyB0aGVzZS4gKi8KKyAgKytwY3BjYzsKKyAgcHBjID0gKGNoYXIqKikgcGNwY2M7CisgIHBjcGNjID0gKGNoYXIgY29uc3QgKmNvbnN0ICopIHBwYzsKKyAgeyAvKiBTQ08gMy4ydjQgY2MgcmVqZWN0cyB0aGlzLiAgKi8KKyAgICBjaGFyICp0OworICAgIGNoYXIgY29uc3QgKnMgPSAwID8gKGNoYXIgKikgMCA6IChjaGFyIGNvbnN0ICopIDA7CisKKyAgICAqdCsrID0gMDsKKyAgICBpZiAocykgcmV0dXJuIDA7CisgIH0KKyAgeyAvKiBTb21lb25lIHRoaW5rcyB0aGUgU3VuIHN1cHBvc2VkbHktQU5TSSBjb21waWxlciB3aWxsIHJlamVjdCB0aGlzLiAgKi8KKyAgICBpbnQgeFtdID0gezI1LCAxN307CisgICAgY29uc3QgaW50ICpmb28gPSAmeFswXTsKKyAgICArK2ZvbzsKKyAgfQorICB7IC8qIFN1biBTQzEuMCBBTlNJIGNvbXBpbGVyIHJlamVjdHMgdGhpcyAtLSBidXQgbm90IHRoZSBhYm92ZS4gKi8KKyAgICB0eXBlZGVmIGNvbnN0IGludCAqaXB0cjsKKyAgICBpcHRyIHAgPSAwOworICAgICsrcDsKKyAgfQorICB7IC8qIEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcyBzYXlpbmcKKyAgICAgICAiay5jIiwgbGluZSAyLjI3OiAxNTA2LTAyNSAoUykgT3BlcmFuZCBtdXN0IGJlIGEgbW9kaWZpYWJsZSBsdmFsdWUuICovCisgICAgc3RydWN0IHMgeyBpbnQgajsgY29uc3QgaW50ICphcFszXTsgfTsKKyAgICBzdHJ1Y3QgcyAqYjsgYi0+aiA9IDU7CisgIH0KKyAgeyAvKiBVTFRSSVgtMzIgVjMuMSAoUmV2IDkpIHZjYyByZWplY3RzIHRoaXMgKi8KKyAgICBjb25zdCBpbnQgZm9vID0gMTA7CisgICAgaWYgKCFmb28pIHJldHVybiAwOworICB9CisgIHJldHVybiAhY3NbMF0gJiYgIXplcm8ueDsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY19jb25zdD15ZXMKK2Vsc2UKKyAgYWNfY3ZfY19jb25zdD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19jb25zdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfY29uc3QiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfY19jb25zdCA9IG5vOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIGNvbnN0IC8qKi8iID4+Y29uZmRlZnMuaAorCitmaQorCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJvZmZfdCIgImFjX2N2X3R5cGVfb2ZmX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9vZmZfdCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIG9mZl90IGxvbmcgaW50CitfQUNFT0YKKworZmkKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic2l6ZV90IiAiYWNfY3ZfdHlwZV9zaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9zaXplX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBzaXplX3QgdW5zaWduZWQgaW50CitfQUNFT0YKKworZmkKKworIyBBQ19UWVBFX1NPQ0tMRU5fVAorCisKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNvY2tsZW5fdCBlcXVpdmFsZW50IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzb2NrbGVuX3QgZXF1aXZhbGVudC4uLiAiID4mNjsgfQorICAgICAgaWYgJHtjdXJsX2N2X3NvY2tsZW5fdF9lcXVpdis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICAgICAgICMgU3lzdGVtcyBoYXZlIGVpdGhlciAic3RydWN0IHNvY2thZGRyICoiIG9yCisgICAgICAgICAjICJ2b2lkICoiIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gZ2V0cGVlcm5hbWUKKyAgICAgICAgIGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2PQorICAgICAgICAgZm9yIGFyZzIgaW4gInN0cnVjdCBzb2NrYWRkciIgdm9pZDsgZG8KKyAgICAgICAgICAgIGZvciB0IGluIGludCBzaXplX3QgdW5zaWduZWQgbG9uZyAidW5zaWduZWQgbG9uZyIgc29ja2xlbl90OyBkbworICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisgICAgICAgICAgICAgICAgICAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICAjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgICAgICAgICAgICAgICAjZW5kaWYKKworICAgICAgICAgICAgICAgICAgZXh0ZXJuIGludCBnZXRwZWVybmFtZSAoaW50LCAkYXJnMiAqLCAkdCAqKTsKKworaW50CittYWluICgpCit7CisKKyAgICAgICAgICAgICAgICAgICR0IGxlbjsKKyAgICAgICAgICAgICAgICAgIGdldHBlZXJuYW1lKDAsMCwmbGVuKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgICAgICAgIGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2PSIkdCIKKyAgICAgICAgICAgICAgICAgIGJyZWFrIDIKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICAgICAgICAgZG9uZQorICAgICAgICAgZG9uZQorCisgICAgICAgICBpZiB0ZXN0ICJ4JGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2IiA9IHg7IHRoZW4KKyAgICAgICAgIyB0YWtlIGEgd2lsZCBndWVzcworICAgICAgICAgICAgY3VybF9jdl9zb2NrbGVuX3RfZXF1aXY9InNvY2tsZW5fdCIKKyAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ2Fubm90IGZpbmQgYSB0eXBlIHRvIHVzZSBpbiBwbGFjZSBvZiBzb2NrbGVuX3QsIGd1ZXNzaW5nIHNvY2tsZW5fdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDYW5ub3QgZmluZCBhIHR5cGUgdG8gdXNlIGluIHBsYWNlIG9mIHNvY2tsZW5fdCwgZ3Vlc3Npbmcgc29ja2xlbl90IiA+JjI7fQorICAgICAgICAgZmkKKworZmkKKworICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjdXJsX2N2X3NvY2tsZW5fdF9lcXVpdiIgPiY1CiskYXNfZWNobyAiJGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2IiA+JjY7IH0KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBuZXRwZXJmX3NvY2tsZW5fdCAkY3VybF9jdl9zb2NrbGVuX3RfZXF1aXYKK19BQ0VPRgorCisKKworIyBBQ19UWVBFX0lOX1BPUlRfVAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaF9lcnJubyBkZWNsYXJhdGlvbiBpbiBuZXRkYi5oIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBoX2Vycm5vIGRlY2xhcmF0aW9uIGluIG5ldGRiLmguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZGVjbF9oX2Vycm5vKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8bmV0ZGIuaD4KK2ludAorbWFpbiAoKQoreworCitoX2Vycm5vID0gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2RlY2xfaF9lcnJubz15ZXMKK2Vsc2UKKyAgYWNfY3ZfZGVjbF9oX2Vycm5vPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kZWNsX2hfZXJybm8iID4mNQorJGFzX2VjaG8gIiRhY19jdl9kZWNsX2hfZXJybm8iID4mNjsgfQoraWYgdGVzdCAiJGFjX2N2X2RlY2xfaF9lcnJubyIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSF9FUlJOT19ERUNMQVJFRCAxIiA+PmNvbmZkZWZzLmgKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfc3RvcmFnZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CitpbnQKK21haW4gKCkKK3sKKworc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcmVzczsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlPXllcworZWxzZQorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfc3RvcmFnZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfc3RvcmFnZSIgPiY2OyB9CitpZiB0ZXN0ICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0UgMSIgPj5jb25mZGVmcy5oCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hlYWRlcl90aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCitpbnQKK21haW4gKCkKK3sKK2lmICgoc3RydWN0IHRtICopIDApCityZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfdGltZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3RpbWU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl90aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3RpbWUiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3RpbWUgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1FIDEiID4+Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdGRib29sLmggdGhhdCBjb25mb3JtcyB0byBDOTkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0ZGJvb2wuaCB0aGF0IGNvbmZvcm1zIHRvIEM5OS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9oZWFkZXJfc3RkYm9vbF9oKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2lmbmRlZiBib29sCisgImVycm9yOiBib29sIGlzIG5vdCBkZWZpbmVkIgorI2VuZGlmCisjaWZuZGVmIGZhbHNlCisgImVycm9yOiBmYWxzZSBpcyBub3QgZGVmaW5lZCIKKyNlbmRpZgorI2lmIGZhbHNlCisgImVycm9yOiBmYWxzZSBpcyBub3QgMCIKKyNlbmRpZgorI2lmbmRlZiB0cnVlCisgImVycm9yOiB0cnVlIGlzIG5vdCBkZWZpbmVkIgorI2VuZGlmCisjaWYgdHJ1ZSAhPSAxCisgImVycm9yOiB0cnVlIGlzIG5vdCAxIgorI2VuZGlmCisjaWZuZGVmIF9fYm9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkCisgImVycm9yOiBfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCBpcyBub3QgZGVmaW5lZCIKKyNlbmRpZgorCisJc3RydWN0IHMgeyBfQm9vbCBzOiAxOyBfQm9vbCB0OyB9IHM7CisKKwljaGFyIGFbdHJ1ZSA9PSAxID8gMSA6IC0xXTsKKwljaGFyIGJbZmFsc2UgPT0gMCA/IDEgOiAtMV07CisJY2hhciBjW19fYm9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkID09IDEgPyAxIDogLTFdOworCWNoYXIgZFsoYm9vbCkgMC41ID09IHRydWUgPyAxIDogLTFdOworCS8qIFNlZSBib2R5IG9mIG1haW4gcHJvZ3JhbSBmb3IgJ2UnLiAgKi8KKwljaGFyIGZbKF9Cb29sKSAwLjAgPT0gZmFsc2UgPyAxIDogLTFdOworCWNoYXIgZ1t0cnVlXTsKKwljaGFyIGhbc2l6ZW9mIChfQm9vbCldOworCWNoYXIgaVtzaXplb2Ygcy50XTsKKwllbnVtIHsgaiA9IGZhbHNlLCBrID0gdHJ1ZSwgbCA9IGZhbHNlICogdHJ1ZSwgbSA9IHRydWUgKiAyNTYgfTsKKwkvKiBUaGUgZm9sbG93aW5nIGZhaWxzIGZvcgorCSAgIEhQIGFDKysvQU5TSSBDIEIzOTEwQiBBLjA1LjU1IFtEZWMgMDQgMjAwM10uICovCisJX0Jvb2wgblttXTsKKwljaGFyIG9bc2l6ZW9mIG4gPT0gbSAqIHNpemVvZiBuWzBdID8gMSA6IC0xXTsKKwljaGFyIHBbLTEgLSAoX0Jvb2wpIDAgPCAwICYmIC0xIC0gKGJvb2wpIDAgPCAwID8gMSA6IC0xXTsKKwkvKiBDYXRjaCBhIGJ1ZyBpbiBhbiBIUC1VWCBDIGNvbXBpbGVyLiAgU2VlCisJICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMDMtMTIvbXNnMDIzMDMuaHRtbAorCSAgIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctY29yZXV0aWxzLzIwMDUtMTEvbXNnMDAxNjEuaHRtbAorCSAqLworCV9Cb29sIHEgPSB0cnVlOworCV9Cb29sICpwcSA9ICZxOworCitpbnQKK21haW4gKCkKK3sKKworCWJvb2wgZSA9ICZzOworCSpwcSB8PSBxOworCSpwcSB8PSAhIHE7CisJLyogUmVmZXIgdG8gZXZlcnkgZGVjbGFyZWQgdmFsdWUsIHRvIGF2b2lkIGNvbXBpbGVyIG9wdGltaXphdGlvbnMuICAqLworCXJldHVybiAoIWEgKyAhYiArICFjICsgIWQgKyAhZSArICFmICsgIWcgKyAhaCArICFpICsgISFqICsgIWsgKyAhIWwKKwkJKyAhbSArICFuICsgIW8gKyAhcCArICFxICsgIXBxKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2hlYWRlcl9zdGRib29sX2g9eWVzCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRib29sX2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRib29sX2giID4mNQorJGFzX2VjaG8gIiRhY19jdl9oZWFkZXJfc3RkYm9vbF9oIiA+JjY7IH0KK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgIl9Cb29sIiAiYWNfY3ZfdHlwZV9fQm9vbCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl90eXBlX19Cb29sIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfX0JPT0wgMQorX0FDRU9GCisKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1NUREJPT0xfSCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgc29ja2FkZHIgc3RydWN0IGhhcyBzYV9sZW4gbWVtYmVyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHNvY2thZGRyIHN0cnVjdCBoYXMgc2FfbGVuIG1lbWJlci4uLiAiID4mNjsgfQorICAgICAgICBpZiAke2FjX2N2X3NvY2thZGRyX2hhc19zYV9sZW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyMgICAgICAgICAgICAgICBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgICAgICAgICAgICAgICBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CitpbnQKK21haW4gKCkKK3sKK3VfaW50IGkgPSBzaXplb2YoKChzdHJ1Y3Qgc29ja2FkZHIgKikwKS0+c2FfbGVuKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3NvY2thZGRyX2hhc19zYV9sZW49eWVzCitlbHNlCisgIGFjX2N2X3NvY2thZGRyX2hhc19zYV9sZW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zb2NrYWRkcl9oYXNfc2FfbGVuIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc29ja2FkZHJfaGFzX3NhX2xlbiIgPiY2OyB9CisgICAgICAgICAgICAgICAgaWYgdGVzdCAkYWNfY3Zfc29ja2FkZHJfaGFzX3NhX2xlbiA9IHllcyA7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TT0NLQUREUl9TQV9MRU4gMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgZmkKKworCisjIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCisjIEFDX0ZVTkNfRVJST1JfQVRfTElORQorYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAicGlkX3QiICJhY19jdl90eXBlX3BpZF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcGlkX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBwaWRfdCBpbnQKK19BQ0VPRgorCitmaQorCitmb3IgYWNfaGVhZGVyIGluIHZmb3JrLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInZmb3JrLmgiICJhY19jdl9oZWFkZXJfdmZvcmtfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfdmZvcmtfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1ZGT1JLX0ggMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworZm9yIGFjX2Z1bmMgaW4gZm9yayB2Zm9yaworZG8gOgorICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCitkb25lCisKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3JrIiA9IHh5ZXM7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBmb3JrIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIGZvcmsuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY19mb3JrX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9Y3Jvc3MKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworCisJICAvKiBCeSBSdWVkaWdlciBLdWhsbWFubi4gKi8KKwkgIHJldHVybiBmb3JrICgpIDwgMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPXllcworZWxzZQorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID4mNjsgfQorCitlbHNlCisgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz0kYWNfY3ZfZnVuY19mb3JrCitmaQoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geGNyb3NzOyB0aGVuCisgIGNhc2UgJGhvc3QgaW4KKyAgICAqLSotYW1pZ2FvcyogfCAqLSotbXNkb3NkamdwcCopCisgICAgICAjIE92ZXJyaWRlLCBhcyB0aGVzZSBzeXN0ZW1zIGhhdmUgb25seSBhIGR1bW15IGZvcmsoKSBzdHViCisgICAgICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8KKyAgICAgIDs7CisgICAgKikKKyAgICAgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz15ZXMKKyAgICAgIDs7CisgIGVzYWMKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfZm9ya193b3JrcyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogcmVzdWx0ICRhY19jdl9mdW5jX2Zvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjI7fQorZmkKK2FjX2N2X2Z1bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY192Zm9yayIgPSB4eWVzOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgdmZvcmsiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgdmZvcmsuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY192Zm9ya193b3Jrcys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY192Zm9ya193b3Jrcz1jcm9zcworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisvKiBUaGFua3MgdG8gUGF1bCBFZ2dlcnQgZm9yIHRoaXMgdGVzdC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaWZkZWYgSEFWRV9WRk9SS19ICisjIGluY2x1ZGUgPHZmb3JrLmg+CisjZW5kaWYKKy8qIE9uIHNvbWUgc3BhcmMgc3lzdGVtcywgY2hhbmdlcyBieSB0aGUgY2hpbGQgdG8gbG9jYWwgYW5kIGluY29taW5nCisgICBhcmd1bWVudCByZWdpc3RlcnMgYXJlIHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgcGFyZW50LiAgVGhlIGNvbXBpbGVyCisgICBpcyB0b2xkIGFib3V0IHRoaXMgd2l0aCAjaW5jbHVkZSA8dmZvcmsuaD4sIGJ1dCBzb21lIGNvbXBpbGVycworICAgKGUuZy4gZ2NjIC1PKSBkb24ndCBncm9rIDx2Zm9yay5oPi4gIFRlc3QgZm9yIHRoaXMgYnkgdXNpbmcgYQorICAgc3RhdGljIHZhcmlhYmxlIHdob3NlIGFkZHJlc3MgaXMgcHV0IGludG8gYSByZWdpc3RlciB0aGF0IGlzCisgICBjbG9iYmVyZWQgYnkgdGhlIHZmb3JrLiAgKi8KK3N0YXRpYyB2b2lkCisjaWZkZWYgX19jcGx1c3BsdXMKK3NwYXJjX2FkZHJlc3NfdGVzdCAoaW50IGFyZykKKyMgZWxzZQorc3BhcmNfYWRkcmVzc190ZXN0IChhcmcpIGludCBhcmc7CisjZW5kaWYKK3sKKyAgc3RhdGljIHBpZF90IGNoaWxkOworICBpZiAoIWNoaWxkKSB7CisgICAgY2hpbGQgPSB2Zm9yayAoKTsKKyAgICBpZiAoY2hpbGQgPCAwKSB7CisgICAgICBwZXJyb3IgKCJ2Zm9yayIpOworICAgICAgX2V4aXQoMik7CisgICAgfQorICAgIGlmICghY2hpbGQpIHsKKyAgICAgIGFyZyA9IGdldHBpZCgpOworICAgICAgd3JpdGUoLTEsICIiLCAwKTsKKyAgICAgIF9leGl0IChhcmcpOworICAgIH0KKyAgfQorfQorCitpbnQKK21haW4gKCkKK3sKKyAgcGlkX3QgcGFyZW50ID0gZ2V0cGlkICgpOworICBwaWRfdCBjaGlsZDsKKworICBzcGFyY19hZGRyZXNzX3Rlc3QgKDApOworCisgIGNoaWxkID0gdmZvcmsgKCk7CisKKyAgaWYgKGNoaWxkID09IDApIHsKKyAgICAvKiBIZXJlIGlzIGFub3RoZXIgdGVzdCBmb3Igc3BhcmMgdmZvcmsgcmVnaXN0ZXIgcHJvYmxlbXMuICBUaGlzCisgICAgICAgdGVzdCB1c2VzIGxvdHMgb2YgbG9jYWwgdmFyaWFibGVzLCBhdCBsZWFzdCBhcyBtYW55IGxvY2FsCisgICAgICAgdmFyaWFibGVzIGFzIG1haW4gaGFzIGFsbG9jYXRlZCBzbyBmYXIgaW5jbHVkaW5nIGNvbXBpbGVyCisgICAgICAgdGVtcG9yYXJpZXMuICA0IGxvY2FscyBhcmUgZW5vdWdoIGZvciBnY2MgMS40MC4zIG9uIGEgU29sYXJpcworICAgICAgIDQuMS4zIHNwYXJjLCBidXQgd2UgdXNlIDggdG8gYmUgc2FmZS4gIEEgYnVnZ3kgY29tcGlsZXIgc2hvdWxkCisgICAgICAgcmV1c2UgdGhlIHJlZ2lzdGVyIG9mIHBhcmVudCBmb3Igb25lIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMsCisgICAgICAgc2luY2UgaXQgd2lsbCB0aGluayB0aGF0IHBhcmVudCBjYW4ndCBwb3NzaWJseSBiZSB1c2VkIGFueSBtb3JlCisgICAgICAgaW4gdGhpcyByb3V0aW5lLiAgQXNzaWduaW5nIHRvIHRoZSBsb2NhbCB2YXJpYWJsZSB3aWxsIHRodXMKKyAgICAgICBtdW5nZSBwYXJlbnQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgKi8KKyAgICBwaWRfdAorICAgICAgcCA9IGdldHBpZCgpLCBwMSA9IGdldHBpZCgpLCBwMiA9IGdldHBpZCgpLCBwMyA9IGdldHBpZCgpLAorICAgICAgcDQgPSBnZXRwaWQoKSwgcDUgPSBnZXRwaWQoKSwgcDYgPSBnZXRwaWQoKSwgcDcgPSBnZXRwaWQoKTsKKyAgICAvKiBDb252aW5jZSB0aGUgY29tcGlsZXIgdGhhdCBwLi5wNyBhcmUgbGl2ZTsgb3RoZXJ3aXNlLCBpdCBtaWdodAorICAgICAgIHVzZSB0aGUgc2FtZSBoYXJkd2FyZSByZWdpc3RlciBmb3IgYWxsIDggbG9jYWwgdmFyaWFibGVzLiAgKi8KKyAgICBpZiAocCAhPSBwMSB8fCBwICE9IHAyIHx8IHAgIT0gcDMgfHwgcCAhPSBwNAorCXx8IHAgIT0gcDUgfHwgcCAhPSBwNiB8fCBwICE9IHA3KQorICAgICAgX2V4aXQoMSk7CisKKyAgICAvKiBPbiBzb21lIHN5c3RlbXMgKGUuZy4gSVJJWCAzLjMpLCB2Zm9yayBkb2Vzbid0IHNlcGFyYXRlIHBhcmVudAorICAgICAgIGZyb20gY2hpbGQgZmlsZSBkZXNjcmlwdG9ycy4gIElmIHRoZSBjaGlsZCBjbG9zZXMgYSBkZXNjcmlwdG9yCisgICAgICAgYmVmb3JlIGl0IGV4ZWNzIG9yIGV4aXRzLCB0aGlzIG11bmdlcyB0aGUgcGFyZW50J3MgZGVzY3JpcHRvcgorICAgICAgIGFzIHdlbGwuICBUZXN0IGZvciB0aGlzIGJ5IGNsb3Npbmcgc3Rkb3V0IGluIHRoZSBjaGlsZC4gICovCisgICAgX2V4aXQoY2xvc2UoZmlsZW5vKHN0ZG91dCkpICE9IDApOworICB9IGVsc2UgeworICAgIGludCBzdGF0dXM7CisgICAgc3RydWN0IHN0YXQgc3Q7CisKKyAgICB3aGlsZSAod2FpdCgmc3RhdHVzKSAhPSBjaGlsZCkKKyAgICAgIDsKKyAgICByZXR1cm4gKAorCSAvKiBXYXMgdGhlcmUgc29tZSBwcm9ibGVtIHdpdGggdmZvcmtpbmc/ICAqLworCSBjaGlsZCA8IDAKKworCSAvKiBEaWQgdGhlIGNoaWxkIGZhaWw/ICAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLikgICovCisJIHx8IHN0YXR1cworCisJIC8qIERpZCB0aGUgdmZvcmsvY29tcGlsZXIgYnVnIG9jY3VyPyAgKi8KKwkgfHwgcGFyZW50ICE9IGdldHBpZCgpCisKKwkgLyogRGlkIHRoZSBmaWxlIGRlc2NyaXB0b3IgYnVnIG9jY3VyPyAgKi8KKwkgfHwgZnN0YXQoZmlsZW5vKHN0ZG91dCksICZzdCkgIT0gMAorCSApOworICB9Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPXllcworZWxzZQorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MiID4mNjsgfQorCitmaTsKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA9IHhjcm9zczsgdGhlbgorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPSRhY19jdl9mdW5jX3Zmb3JrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogcmVzdWx0ICRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzIGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjI7fQorZmkKKworaWYgdGVzdCAieCRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9XT1JLSU5HX1ZGT1JLIDEiID4+Y29uZmRlZnMuaAorCitlbHNlCisKKyRhc19lY2hvICIjZGVmaW5lIHZmb3JrIGZvcmsiID4+Y29uZmRlZnMuaAorCitmaQoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dPUktJTkdfRk9SSyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBBQ19GVU5DX01BTExPQworCisKKworICBmb3IgYWNfaGVhZGVyIGluICRhY19oZWFkZXJfbGlzdAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAorIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKworCisKKworCisKKworZm9yIGFjX2Z1bmMgaW4gZ2V0cGFnZXNpemUKK2RvIDoKKyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZ2V0cGFnZXNpemUiICJhY19jdl9mdW5jX2dldHBhZ2VzaXplIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2dldHBhZ2VzaXplIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfR0VUUEFHRVNJWkUgMQorX0FDRU9GCisKK2ZpCitkb25lCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2luZyBtbWFwLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKKy8qIG1hbGxvYyBtaWdodCBoYXZlIGJlZW4gcmVuYW1lZCBhcyBycGxfbWFsbG9jLiAqLworI3VuZGVmIG1hbGxvYworCisvKiBUaGFua3MgdG8gTWlrZSBIYWVydGVsIGFuZCBKaW0gQXZlcmEgZm9yIHRoaXMgdGVzdC4KKyAgIEhlcmUgaXMgYSBtYXRyaXggb2YgbW1hcCBwb3NzaWJpbGl0aWVzOgorCW1tYXAgcHJpdmF0ZSBub3QgZml4ZWQKKwltbWFwIHByaXZhdGUgZml4ZWQgYXQgc29tZXdoZXJlIGN1cnJlbnRseSB1bm1hcHBlZAorCW1tYXAgcHJpdmF0ZSBmaXhlZCBhdCBzb21ld2hlcmUgYWxyZWFkeSBtYXBwZWQKKwltbWFwIHNoYXJlZCBub3QgZml4ZWQKKwltbWFwIHNoYXJlZCBmaXhlZCBhdCBzb21ld2hlcmUgY3VycmVudGx5IHVubWFwcGVkCisJbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJlIGFscmVhZHkgbWFwcGVkCisgICBGb3IgcHJpdmF0ZSBtYXBwaW5ncywgd2Ugc2hvdWxkIHZlcmlmeSB0aGF0IGNoYW5nZXMgY2Fubm90IGJlIHJlYWQoKQorICAgYmFjayBmcm9tIHRoZSBmaWxlLCBub3IgbW1hcCdzIGJhY2sgZnJvbSB0aGUgZmlsZSBhdCBhIGRpZmZlcmVudAorICAgYWRkcmVzcy4gIChUaGVyZSBoYXZlIGJlZW4gc3lzdGVtcyB3aGVyZSBwcml2YXRlIHdhcyBub3QgY29ycmVjdGx5CisgICBpbXBsZW1lbnRlZCBsaWtlIHRoZSBpbmZhbW91cyBpMzg2IHN2cjQuMCwgYW5kIHN5c3RlbXMgd2hlcmUgdGhlCisgICBWTSBwYWdlIGNhY2hlIHdhcyBub3QgY29oZXJlbnQgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYnVmZmVyIGNhY2hlCisgICBsaWtlIGVhcmx5IHZlcnNpb25zIG9mIEZyZWVCU0QgYW5kIHBvc3NpYmx5IGNvbnRlbXBvcmFyeSBOZXRCU0QuKQorICAgRm9yIHNoYXJlZCBtYXBwaW5ncywgd2Ugc2hvdWxkIGNvbnZlcnNlbHkgdmVyaWZ5IHRoYXQgY2hhbmdlcyBnZXQKKyAgIHByb3BhZ2F0ZWQgYmFjayB0byBhbGwgdGhlIHBsYWNlcyB0aGV5J3JlIHN1cHBvc2VkIHRvIGJlLgorCisgICBHcmVwIHdhbnRzIHByaXZhdGUgZml4ZWQgYWxyZWFkeSBtYXBwZWQuCisgICBUaGUgbWFpbiB0aGluZ3MgZ3JlcCBuZWVkcyB0byBrbm93IGFib3V0IG1tYXAgYXJlOgorICAgKiBkb2VzIGl0IGV4aXN0IGFuZCBpcyBpdCBzYWZlIHRvIHdyaXRlIGludG8gdGhlIG1tYXAnZCBhcmVhCisgICAqIGhvdyB0byB1c2UgaXQgKEJTRCB2YXJpYW50cykgICovCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNpZiAhZGVmaW5lZCBTVERDX0hFQURFUlMgJiYgIWRlZmluZWQgSEFWRV9TVERMSUJfSAorY2hhciAqbWFsbG9jICgpOworI2VuZGlmCisKKy8qIFRoaXMgbWVzcyB3YXMgY29waWVkIGZyb20gdGhlIEdOVSBnZXRwYWdlc2l6ZS5oLiAgKi8KKyNpZm5kZWYgSEFWRV9HRVRQQUdFU0laRQorIyBpZmRlZiBfU0NfUEFHRVNJWkUKKyMgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIHN5c2NvbmYoX1NDX1BBR0VTSVpFKQorIyBlbHNlIC8qIG5vIF9TQ19QQUdFU0laRSAqLworIyAgaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorIyAgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorIyAgIGlmZGVmIEVYRUNfUEFHRVNJWkUKKyMgICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgRVhFQ19QQUdFU0laRQorIyAgIGVsc2UgLyogbm8gRVhFQ19QQUdFU0laRSAqLworIyAgICBpZmRlZiBOQlBHCisjICAgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBOQlBHICogQ0xTSVpFCisjICAgICBpZm5kZWYgQ0xTSVpFCisjICAgICAgZGVmaW5lIENMU0laRSAxCisjICAgICBlbmRpZiAvKiBubyBDTFNJWkUgKi8KKyMgICAgZWxzZSAvKiBubyBOQlBHICovCisjICAgICBpZmRlZiBOQlBDCisjICAgICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgTkJQQworIyAgICAgZWxzZSAvKiBubyBOQlBDICovCisjICAgICAgaWZkZWYgUEFHRVNJWkUKKyMgICAgICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgUEFHRVNJWkUKKyMgICAgICBlbmRpZiAvKiBQQUdFU0laRSAqLworIyAgICAgZW5kaWYgLyogbm8gTkJQQyAqLworIyAgICBlbmRpZiAvKiBubyBOQlBHICovCisjICAgZW5kaWYgLyogbm8gRVhFQ19QQUdFU0laRSAqLworIyAgZWxzZSAvKiBubyBIQVZFX1NZU19QQVJBTV9IICovCisjICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgODE5MgkvKiBwdW50IHRvdGFsbHkgKi8KKyMgIGVuZGlmIC8qIG5vIEhBVkVfU1lTX1BBUkFNX0ggKi8KKyMgZW5kaWYgLyogbm8gX1NDX1BBR0VTSVpFICovCisKKyNlbmRpZiAvKiBubyBIQVZFX0dFVFBBR0VTSVpFICovCisKK2ludAorbWFpbiAoKQoreworICBjaGFyICpkYXRhLCAqZGF0YTIsICpkYXRhMzsKKyAgY29uc3QgY2hhciAqY2RhdGEyOworICBpbnQgaSwgcGFnZXNpemU7CisgIGludCBmZCwgZmQyOworCisgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7CisKKyAgLyogRmlyc3QsIG1ha2UgYSBmaWxlIHdpdGggc29tZSBrbm93biBnYXJiYWdlIGluIGl0LiAqLworICBkYXRhID0gKGNoYXIgKikgbWFsbG9jIChwYWdlc2l6ZSk7CisgIGlmICghZGF0YSkKKyAgICByZXR1cm4gMTsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgKihkYXRhICsgaSkgPSByYW5kICgpOworICB1bWFzayAoMCk7CisgIGZkID0gY3JlYXQgKCJjb25mdGVzdC5tbWFwIiwgMDYwMCk7CisgIGlmIChmZCA8IDApCisgICAgcmV0dXJuIDI7CisgIGlmICh3cml0ZSAoZmQsIGRhdGEsIHBhZ2VzaXplKSAhPSBwYWdlc2l6ZSkKKyAgICByZXR1cm4gMzsKKyAgY2xvc2UgKGZkKTsKKworICAvKiBOZXh0LCBjaGVjayB0aGF0IHRoZSB0YWlsIG9mIGEgcGFnZSBpcyB6ZXJvLWZpbGxlZC4gIEZpbGUgbXVzdCBoYXZlCisgICAgIG5vbi16ZXJvIGxlbmd0aCwgb3RoZXJ3aXNlIHdlIHJpc2sgU0lHQlVTIGZvciBlbnRpcmUgcGFnZS4gICovCisgIGZkMiA9IG9wZW4gKCJjb25mdGVzdC50eHQiLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19UUlVOQywgMDYwMCk7CisgIGlmIChmZDIgPCAwKQorICAgIHJldHVybiA0OworICBjZGF0YTIgPSAiIjsKKyAgaWYgKHdyaXRlIChmZDIsIGNkYXRhMiwgMSkgIT0gMSkKKyAgICByZXR1cm4gNTsKKyAgZGF0YTIgPSAoY2hhciAqKSBtbWFwICgwLCBwYWdlc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQyLCAwTCk7CisgIGlmIChkYXRhMiA9PSBNQVBfRkFJTEVEKQorICAgIHJldHVybiA2OworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAgICBpZiAoKihkYXRhMiArIGkpKQorICAgICAgcmV0dXJuIDc7CisgIGNsb3NlIChmZDIpOworICBpZiAobXVubWFwIChkYXRhMiwgcGFnZXNpemUpKQorICAgIHJldHVybiA4OworCisgIC8qIE5leHQsIHRyeSB0byBtbWFwIHRoZSBmaWxlIGF0IGEgZml4ZWQgYWRkcmVzcyB3aGljaCBhbHJlYWR5IGhhcworICAgICBzb21ldGhpbmcgZWxzZSBhbGxvY2F0ZWQgYXQgaXQuICBJZiB3ZSBjYW4sIGFsc28gbWFrZSBzdXJlIHRoYXQKKyAgICAgd2Ugc2VlIHRoZSBzYW1lIGdhcmJhZ2UuICAqLworICBmZCA9IG9wZW4gKCJjb25mdGVzdC5tbWFwIiwgT19SRFdSKTsKKyAgaWYgKGZkIDwgMCkKKyAgICByZXR1cm4gOTsKKyAgaWYgKGRhdGEyICE9IG1tYXAgKGRhdGEyLCBwYWdlc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKKwkJICAgICBNQVBfUFJJVkFURSB8IE1BUF9GSVhFRCwgZmQsIDBMKSkKKyAgICByZXR1cm4gMTA7CisgIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgIGlmICgqKGRhdGEgKyBpKSAhPSAqKGRhdGEyICsgaSkpCisgICAgICByZXR1cm4gMTE7CisKKyAgLyogRmluYWxseSwgbWFrZSBzdXJlIHRoYXQgY2hhbmdlcyB0byB0aGUgbWFwcGVkIGFyZWEgZG8gbm90CisgICAgIHBlcmNvbGF0ZSBiYWNrIHRvIHRoZSBmaWxlIGFzIHNlZW4gYnkgcmVhZCgpLiAgKFRoaXMgaXMgYSBidWcgb24KKyAgICAgc29tZSB2YXJpYW50cyBvZiBpMzg2IHN2cjQuMC4pICAqLworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAgICAqKGRhdGEyICsgaSkgPSAqKGRhdGEyICsgaSkgKyAxOworICBkYXRhMyA9IChjaGFyICopIG1hbGxvYyAocGFnZXNpemUpOworICBpZiAoIWRhdGEzKQorICAgIHJldHVybiAxMjsKKyAgaWYgKHJlYWQgKGZkLCBkYXRhMywgcGFnZXNpemUpICE9IHBhZ2VzaXplKQorICAgIHJldHVybiAxMzsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgaWYgKCooZGF0YSArIGkpICE9ICooZGF0YTMgKyBpKSkKKyAgICAgIHJldHVybiAxNDsKKyAgY2xvc2UgKGZkKTsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllcworZWxzZQorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX01NQVAgMSIgPj5jb25mZGVmcy5oCisKK2ZpCitybSAtZiBjb25mdGVzdC5tbWFwIGNvbmZ0ZXN0LnR4dAorCitmb3IgYWNfaGVhZGVyIGluIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0LmgKK2RvIDoKKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0eXBlcyBvZiBhcmd1bWVudHMgZm9yIHNlbGVjdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB0eXBlcyBvZiBhcmd1bWVudHMgZm9yIHNlbGVjdC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX3NlbGVjdF9hcmdzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgZm9yIGFjX2FyZzIzNCBpbiAnZmRfc2V0IConICdpbnQgKicgJ3ZvaWQgKic7IGRvCisgZm9yIGFjX2FyZzEgaW4gJ2ludCcgJ3NpemVfdCcgJ3Vuc2lnbmVkIGxvbmcgaW50JyAndW5zaWduZWQgaW50JzsgZG8KKyAgZm9yIGFjX2FyZzUgaW4gJ3N0cnVjdCB0aW1ldmFsIConICdjb25zdCBzdHJ1Y3QgdGltZXZhbCAqJzsgZG8KKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaWZkZWYgSEFWRV9TWVNfU0VMRUNUX0gKKyMgaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisKK2ludAorbWFpbiAoKQoreworZXh0ZXJuIGludCBzZWxlY3QgKCRhY19hcmcxLAorCQkJCQkgICAgJGFjX2FyZzIzNCwgJGFjX2FyZzIzNCwgJGFjX2FyZzIzNCwKKwkJCQkJICAgICRhY19hcmc1KTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3NlbGVjdF9hcmdzPSIkYWNfYXJnMSwkYWNfYXJnMjM0LCRhY19hcmc1IjsgYnJlYWsgMworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBkb25lCisgZG9uZQorZG9uZQorIyBQcm92aWRlIGEgc2FmZSBkZWZhdWx0IHZhbHVlLgorOiAiJHthY19jdl9mdW5jX3NlbGVjdF9hcmdzPWludCxpbnQgKixzdHJ1Y3QgdGltZXZhbCAqfSIKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19zZWxlY3RfYXJncyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfc2VsZWN0X2FyZ3MiID4mNjsgfQorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPScsJworc2V0IGR1bW15IGBlY2hvICIkYWNfY3ZfZnVuY19zZWxlY3RfYXJncyIgfCBzZWQgJ3MvXCovXCovZydgCitJRlM9JGFjX3NhdmVfSUZTCitzaGlmdAorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNFTEVDVF9UWVBFX0FSRzEgJDEKK19BQ0VPRgorCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0VMRUNUX1RZUEVfQVJHMjM0ICgkMikKK19BQ0VPRgorCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0VMRUNUX1RZUEVfQVJHNSAoJDMpCitfQUNFT0YKKworcm0gLWYgY29uZnRlc3QqCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBzZXRwZ3JwIHRha2VzIG5vIGFyZ3VtZW50IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc2V0cGdycCB0YWtlcyBubyBhcmd1bWVudC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX3NldHBncnBfdm9pZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjaGVjayBzZXRwZ3JwIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CisvKiBJZiB0aGlzIHN5c3RlbSBoYXMgYSBCU0Qtc3R5bGUgc2V0cGdycCB3aGljaCB0YWtlcyBhcmd1bWVudHMsCisgIHNldHBncnAoMSwgMSkgd2lsbCBmYWlsIHdpdGggRVNSQ0ggYW5kIHJldHVybiAtMSwgaW4gdGhhdCBjYXNlCisgIGV4aXQgc3VjY2Vzc2Z1bGx5LiAqLworICByZXR1cm4gc2V0cGdycCAoMSwxKSAhPSAtMTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfc2V0cGdycF92b2lkPW5vCitlbHNlCisgIGFjX2N2X2Z1bmNfc2V0cGdycF92b2lkPXllcworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfc2V0cGdycF92b2lkIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVuY19zZXRwZ3JwX3ZvaWQiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19zZXRwZ3JwX3ZvaWQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgU0VUUEdSUF9WT0lEIDEiID4+Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfdHlwZV9zaWduYWwrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKK2ludAorbWFpbiAoKQoreworcmV0dXJuICooc2lnbmFsICgwLCAwKSkgKDApID09IDE7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfdHlwZV9zaWduYWw9aW50CitlbHNlCisgIGFjX2N2X3R5cGVfc2lnbmFsPXZvaWQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3R5cGVfc2lnbmFsIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfdHlwZV9zaWduYWwiID4mNjsgfQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFJFVFNJR1RZUEUgJGFjX2N2X3R5cGVfc2lnbmFsCitfQUNFT0YKKworCisjIEFDX0ZVTkNfU1RBVAorIyByZW1vdmUgcHN0YXRfZ2V0ZHluYW1pYyAoYXQgbGVhc3QgZm9yIG5vdykgc2luY2Ugd2UgZG9uJ3QgZG8KKyMgYW55dGhpbmcgY29uZGl0aW9uYWwgd2l0aCB0aGUgY2hlY2sgYW55d2F5Li4uCitmb3IgYWNfZnVuYyBpbiBhbGFybSBiemVybyBkYWVtb24gZ2V0aG9zdGJ5bmFtZSBnZXRocnRpbWUgZ2V0dGltZW9mZGF5IGluZXRfbnRvYSBtZW1zZXQgbWVtY3B5IG11bm1hcCBzZWxlY3Qgc2V0c2lkIHNvY2tldCBzcXJ0IHN0cmNhc2VjbXAgc3RyY2hyIHN0cnN0ciBzdHJ0b3VsIHVuYW1lIHRvdXBwZXIKK2RvIDoKKyAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorZG9uZQorCisKKyNBQ19DT05GSUdfU1VCRElSUyhzcmMvbWlzc2luZykKKworIyBkb2VzIHRoaXMgcGxhdGZvcm0gbmVlZCB0aGUgcmVwbGFjZW1lbnQgZ2V0YWRkcmluZm8KK2ZvciBhY19mdW5jIGluIGdldG5hbWVpbmZvIGdldGFkZHJpbmZvIGluZXRfbnRvcCBnZXRpZmFkZHJzCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2RvbmUKKworIyBBQ19SRVBMQUNFX0ZVTkNTKFtnZXRhZGRyaW5mb10pCisKKworaWYgdGVzdCAiJGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm8kYWNfY3ZfZnVuY19nZXRuYW1laW5mbyIgIT0geWVzeWVzIDsgdGhlbgorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBSZXF1ZXN0aW5nIHJlcGxhY2VtZW50IGdldGFkZHJpbmZvL2dldG5hbWVpbmZvIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFJlcXVlc3RpbmcgcmVwbGFjZW1lbnQgZ2V0YWRkcmluZm8vZ2V0bmFtZWluZm8iID4mNjt9CisgICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBnZXRhZGRyaW5mby4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgZ2V0YWRkcmluZm8uJGFjX29iamV4dCIKKyA7OworZXNhYworCisgICBIQVZFX01JU1NJTkc9eWVzCitmaQoraWYgdGVzdCAiJGFjX2N2X2Z1bmNfaW5ldF9udG9wIiAhPSB5ZXMgOyB0aGVuCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFJlcXVlc3RpbmcgcmVwbGFjZW1lbnQgaW5ldF9udG9wIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFJlcXVlc3RpbmcgcmVwbGFjZW1lbnQgaW5ldF9udG9wIiA+JjY7fQorICAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgaW5ldF9udG9wLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBpbmV0X250b3AuJGFjX29iamV4dCIKKyA7OworZXNhYworCisgICBIQVZFX01JU1NJTkc9eWVzCitmaQorIGlmIHRlc3QgIiRIQVZFX01JU1NJTkciID0gInllcyI7IHRoZW4KKyAgTkVFRF9MSUJDT01QQVRfVFJVRT0KKyAgTkVFRF9MSUJDT01QQVRfRkFMU0U9JyMnCitlbHNlCisgIE5FRURfTElCQ09NUEFUX1RSVUU9JyMnCisgIE5FRURfTElCQ09NUEFUX0ZBTFNFPQorZmkKKworCitmb3IgYWNfZnVuYyBpbiBzZW5kZmlsZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzZW5kZmlsZSIgImFjX2N2X2Z1bmNfc2VuZGZpbGUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2VuZGZpbGUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TRU5ERklMRSAxCitfQUNFT0YKKworZmkKK2RvbmUKKworCitmb3IgYWNfZnVuYyBpbiB1bmFtZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ1bmFtZSIgImFjX2N2X2Z1bmNfdW5hbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdW5hbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9VTkFNRSAxCitfQUNFT0YKKworZmkKK2RvbmUKKworCisjIGNoZWNrIGZvciB0aGUgdmFyaW91cyBDUFUgYmluZGluZyBjYWxscworZm9yIGFjX2Z1bmMgaW4gbXBjdGwgcHJvY2Vzc29yX2JpbmQgc2NoZWRfc2V0YWZmaW5pdHkgYmluZF90b19jcHVfaWQgYmluZHByb2Nlc3NvcgorZG8gOgorICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCitkb25lCisKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGVuYWJsaW5nIGhpc3RvZ3JhbSBzdXBwb3J0CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byBpbmNsdWRlIGhpc3RvZ3JhbSBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBoaXN0b2dyYW0gc3VwcG9ydC4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaGlzdG9ncmFtIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2hpc3RvZ3JhbStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2hpc3RvZ3JhbTsKK2ZpCisKKworY2FzZSAiJGVuYWJsZV9oaXN0b2dyYW0iIGluCisJeWVzKQorCQl1c2VfaGlzdG9ncmFtPXRydWUKKwkJOzsKKwlubykKKwkJdXNlX2hpc3RvZ3JhbT1mYWxzZQorCQk7OworCScnKQorCQkjIHdoYXRldmVyCisJCXVzZV9oaXN0b2dyYW09ZmFsc2UKKwkJOzsKKwkqKQorCQlhc19mbl9lcnJvciAkPyAiLS1lbmFibGUtaGlzdG9ncmFtIHRha2VzIHllcyBvciBubyIgIiRMSU5FTk8iIDUKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9oaXN0b2dyYW0KK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworaWYgJHVzZV9oaXN0b2dyYW0KK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgV0FOVF9ISVNUT0dSQU0gLyoqLyIgPj5jb25mZGVmcy5oCisKK2ZpCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgZW5hYmxpbmcgaGlzdG9ncmFtIHN1cHBvcnQKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgZGlydHkgc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgZGlydHkgc3VwcG9ydC4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGlydHkgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZGlydHkrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9kaXJ0eTsKK2ZpCisKKworY2FzZSAiJGVuYWJsZV9kaXJ0eSIgaW4KKwl5ZXMpCisJCXVzZV9kaXJ0eT10cnVlCisJCTs7CisJbm8pCisJCXVzZV9kaXJ0eT1mYWxzZQorCQk7OworCScnKQorCQkjIHdoYXRldmVyCisJCXVzZV9kaXJ0eT1mYWxzZQorCQk7OworCSopCisJCWFzX2ZuX2Vycm9yICQ/ICItLWVuYWJsZS1kaXJ0eSB0YWtlcyB5ZXMgb3Igbm8iICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKK2lmICR1c2VfZGlydHkKK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworaWYgJHVzZV9kaXJ0eQordGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBESVJUWSAvKiovIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGVuYWJsaW5nIGRlbW8gc3VwcG9ydAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBkZW1vIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBpbmNsdWRlIGRlbW8gc3VwcG9ydC4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGVtbyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9kZW1vK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZGVtbzsKK2ZpCisKKworY2FzZSAiJGVuYWJsZV9kZW1vIiBpbgorCXllcykKKwkJdXNlX2RlbW89dHJ1ZQorCQk7OworCW5vKQorCQl1c2VfZGVtbz1mYWxzZQorCQk7OworCScnKQorCQkjIHdoYXRldmVyCisJCXVzZV9kZW1vPWZhbHNlCisJCTs7CisJKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLWRlbW8gdGFrZXMgeWVzIG9yIG5vIiAiJExJTkVOTyIgNQorCQk7OworZXNhYworCitpZiAkdXNlX2RlbW8KK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworaWYgJHVzZV9kZW1vCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFdBTlRfREVNTyAvKiovIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGluY2x1ZGluZyB0aGUgQUZfVU5JWCB0ZXN0cworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBVbml4LWRvbWFpbiBzb2NrZXQgdGVzdHMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBpbmNsdWRlIFVuaXgtZG9tYWluIHNvY2tldCB0ZXN0cy4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdW5peGRvbWFpbiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV91bml4ZG9tYWluK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfdW5peGRvbWFpbjsKK2ZpCisKKworY2FzZSAiJGVuYWJsZV91bml4ZG9tYWluIiBpbgorICAgICB5ZXMpCisJCXVzZV91bml4ZG9tYWluPXRydWUKKwkJOzsKKyAgICAgbm8pCisJCXVzZV91bml4ZG9tYWluPWZhbHNlCisJCTs7CisgICAgICcnKQorCQl1c2VfdW5peGRvbWFpbj1mYWxzZQorCQk7OworICAgICAqKQorCQlhc19mbl9lcnJvciAkPyAiLS1lbmFibGUtdW5peGRvbWFpbiB0YWtlcyB5ZXMgb3Igbm8iICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKK2lmICR1c2VfdW5peGRvbWFpbgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCitpZiAkdXNlX3VuaXhkb21haW4KK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgV0FOVF9VTklYIC8qKi8iID4+Y29uZmRlZnMuaAorCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBETFBJIHRlc3RzCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byBpbmNsdWRlIERMUEkgdGVzdHMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBpbmNsdWRlIERMUEkgdGVzdHMuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRscGkgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZGxwaStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2RscGk7CitmaQorCisKK2Nhc2UgIiRlbmFibGVfZGxwaSIgaW4KKyAgICAgeWVzKQorCQl1c2VfZGxwaT10cnVlCisJCTs7CisgICAgIG5vKQorCQl1c2VfZGxwaT1mYWxzZQorCQk7OworICAgICAnJykKKwkJdXNlX2RscGk9ZmFsc2UKKwkJOzsKKyAgICAgKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLWRscGkgdGFrZXMgeWVzIG9yIG5vIiAiJExJTkVOTyIgNQorCQk7OworZXNhYworCitpZiAkdXNlX2RscGkKK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworaWYgJHVzZV9kbHBpCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFdBTlRfRExQSSAvKiovIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGluY2x1ZGluZyB0aGUgRENDUCB0ZXN0cworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBEQ0NQIHRlc3RzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBEQ0NQIHRlc3RzLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kY2NwIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2RjY3Arc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9kY2NwOworZmkKKworCitjYXNlICIkZW5hYmxlX2RjY3AiIGluCisgICAgIHllcykKKwkJdXNlX2RjY3A9dHJ1ZQorCQk7OworICAgICBubykKKwkJdXNlX2RjY3A9ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV9kY2NwPWZhbHNlCisJCTs7CisgICAgICopCisJCWFzX2ZuX2Vycm9yICQ/ICItLWVuYWJsZS1kY2NwIHRha2VzIHllcyBvciBubyIgIiRMSU5FTk8iIDUKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9kY2NwCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKK2lmICR1c2VfZGNjcAordGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBXQU5UX0RDQ1AgLyoqLyIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgc2VlIGlmIHdlIHNob3VsZCBiZSBpbmNsdWRpbmcgdGhlIE9NTkkgdGVzdHMKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgT01OSSB0ZXN0cyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgT01OSSB0ZXN0cy4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb21uaSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9vbW5pK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfb21uaTsKK2ZpCisKKworY2FzZSAiJGVuYWJsZV9vbW5pIiBpbgorICAgICB5ZXMpCisJCXVzZV9vbW5pPXRydWUKKwkJOzsKKyAgICAgbm8pCisJCXVzZV9vbW5pPWZhbHNlCisJCTs7CisgICAgICcnKQorCQl1c2Vfb21uaT10cnVlCisJCTs7CisgICAgICopCisJCWFzX2ZuX2Vycm9yICQ/ICItLWVuYWJsZS1vbW5pIHRha2VzIHllcyBvciBubyIgIiRMSU5FTk8iIDUKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9vbW5pCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKK2lmICR1c2Vfb21uaQordGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBXQU5UX09NTkkgLyoqLyIgPj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZpbmUgV0FOVF9NSUdSQVRJT04gLyoqLyIgPj5jb25mZGVmcy5oCisKK2ZpCisKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGluY2x1ZGluZyB0aGUgWFRJIHRlc3RzCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byBpbmNsdWRlIFhUSSB0ZXN0cyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgWFRJIHRlc3RzLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS14dGkgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfeHRpK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfeHRpOworZmkKKworCitjYXNlICIkZW5hYmxlX3h0aSIgaW4KKyAgICAgeWVzKQorCQl1c2VfeHRpPXRydWUKKwkJOzsKKyAgICAgbm8pCisJCXVzZV94dGk9ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV94dGk9ZmFsc2UKKwkJOzsKKyAgICAgKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLXh0aSB0YWtlcyB5ZXMgb3Igbm8iICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKK2lmICR1c2VfeHRpCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKK2lmICR1c2VfeHRpCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFdBTlRfWFRJIC8qKi8iID4+Y29uZmRlZnMuaAorCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBTRFAgdGVzdHMKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgU0RQIHRlc3RzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBTRFAgdGVzdHMuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXNkcCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9zZHArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9zZHA7CitmaQorCisKK2Nhc2UgIiRlbmFibGVfc2RwIiBpbgorICAgICB5ZXMpCisJCSMgcHJvYmFibHkgbmVlZCB0byBiZSBhIGJpdCBtb3JlIHNvcGhpc3RpY2F0ZWQgaGVyZQorCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0X29wZW4gaW4gLWxzZHAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRfb3BlbiBpbiAtbHNkcC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfc2RwX3Rfb3Blbis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sc2RwICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciB0X29wZW4gKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiB0X29wZW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3NkcF90X29wZW49eWVzCitlbHNlCisgIGFjX2N2X2xpYl9zZHBfdF9vcGVuPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zZHBfdF9vcGVuIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3NkcF90X29wZW4iID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfc2RwX3Rfb3BlbiIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlNEUCAxCitfQUNFT0YKKworICBMSUJTPSItbHNkcCAkTElCUyIKKworZmkKKworCQl1c2Vfc2RwPXRydWUKKwkJOzsKKyAgICAgbm8pCisJCXVzZV9zZHA9ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV9zZHA9ZmFsc2UKKwkJOzsKKyAgICAgKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLXNkcCB0YWtlcyB5ZXMgb3Igbm8iICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKK2lmICR1c2Vfc2RwCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKK2lmICR1c2Vfc2RwCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFdBTlRfU0RQIC8qKi8iID4+Y29uZmRlZnMuaAorCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBJQ1NDLUVYUyB0ZXN0cworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBJQ1NDLUVYUyB0ZXN0cyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgSUNTQy1FWFMgdGVzdHMuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWV4cyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9leHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9leHM7CitmaQorCisKK2Nhc2UgIiRlbmFibGVfZXhzIiBpbgorICAgICB5ZXMpCisJCXVzZV9leHM9dHJ1ZQorCQlhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic3lzL2V4cy5oIiAiYWNfY3ZfaGVhZGVyX3N5c19leHNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX2V4c19oIiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisgIHVzZV9leHM9ZmFsc2UKK2ZpCisKKworCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBleHNfaW5pdCBpbiAtbGV4cyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZXhzX2luaXQgaW4gLWxleHMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2V4c19leHNfaW5pdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZXhzICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBleHNfaW5pdCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGV4c19pbml0ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9leHNfZXhzX2luaXQ9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9leHNfZXhzX2luaXQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2V4c19leHNfaW5pdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9leHNfZXhzX2luaXQiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfZXhzX2V4c19pbml0IiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCRVhTIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sZXhzICRMSUJTIgorCitlbHNlCisgIHVzZV9leHM9ZmFsc2UKK2ZpCisKKwkJOzsKKyAgICAgbm8pCisJCXVzZV9leHM9ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV9leHM9ZmFsc2UKKwkJOzsKKyAgICAgKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLWV4cyB0YWtlcyB5ZXMgb3Igbm8iICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKK2lmICR1c2VfZXhzCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKK2lmICR1c2VfZXhzCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfSUNTQ19FWFMgLyoqLyIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgc2VlIGlmIHdlIHNob3VsZCBiZSBlbmFibGluZyBTQ1RQIHN1cHBvcnQKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc2N0cCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9zY3RwK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfc2N0cDsKK2ZpCisKKworY2FzZSAiJGVuYWJsZV9zY3RwIiBpbgorCXllcykKKwkJdXNlX3NjdHA9dHJ1ZQorCQlmb3IgYWNfaGVhZGVyIGluIG5ldGluZXQvc2N0cC5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJuZXRpbmV0L3NjdHAuaCIgImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaCIgIgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ORVRJTkVUX1NDVFBfSCAxCitfQUNFT0YKKworZWxzZQorICB1c2Vfc2N0cD1mYWxzZQorZmkKKworZG9uZQorCisJCWNhc2UgIiRob3N0IiBpbgorCQkqLSotZnJlZWJzZDc4LiopCisJCQkjIEZyZWVCU0QgNy54IGFuZCBsYXRlciBTQ1RQIHN1cHBvcnQgZG9lc24ndCBuZWVkIC1sc2N0cC4KKwkJCTs7CisJCSopCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWluIGluIC1sc2N0cCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbHNjdHAuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NjdHBfbWFpbis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sc2N0cCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CityZXR1cm4gbWFpbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfc2N0cF9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfc2N0cF9tYWluPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zY3RwX21haW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfc2N0cF9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NjdHBfbWFpbiIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlNDVFAgMQorX0FDRU9GCisKKyAgTElCUz0iLWxzY3RwICRMSUJTIgorCitlbHNlCisgIHVzZV9zY3RwPWZhbHNlCitmaQorYWNfY3ZfbGliX3NjdHA9YWNfY3ZfbGliX3NjdHBfbWFpbgorCisJCQk7OworCQllc2FjCisJCWFjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlIiAic2N0cF9hZGFwdGF0aW9uX2xheWVyX2V2ZW50IiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9zY3RwX2V2ZW50X3N1YnNjcmliZV9zY3RwX2FkYXB0YXRpb25fbGF5ZXJfZXZlbnQiICIjaW5jbHVkZSA8bmV0aW5ldC9zY3RwLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X21lbWJlcl9zdHJ1Y3Rfc2N0cF9ldmVudF9zdWJzY3JpYmVfc2N0cF9hZGFwdGF0aW9uX2xheWVyX2V2ZW50IiA9IHh5ZXM7IHRoZW4gOgorCitmaQorCisJCWlmIHRlc3QgIiRhY19jdl9tZW1iZXJfc3RydWN0X3NjdHBfZXZlbnRfc3Vic2NyaWJlX3NjdHBfYWRhcHRhdGlvbl9sYXllcl9ldmVudCIgPSAieWVzIjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1NDVFBfQURBUFRBVElPTl9MQVlFUl9FVkVOVCAxIiA+PmNvbmZkZWZzLmgKKworCQlmaQorCQk7OworCW5vKQorCQl1c2Vfc2N0cD1mYWxzZQorCQk7OworCScnKQorCQkjIHdoYXRldmVyCisJCXVzZV9zY3RwPWZhbHNlCisJCTs7CisJKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLXNjdHAgdGFrZXMgeWVzIG9yIG5vIiAiJExJTkVOTyIgNQorCQk7OworZXNhYworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBTQ1RQIHRlc3RzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBTQ1RQIHRlc3RzLi4uICIgPiY2OyB9CisKK2lmICR1c2Vfc2N0cAordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCitpZiAkdXNlX3NjdHAKK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgV0FOVF9TQ1RQIC8qKi8iID4+Y29uZmRlZnMuaAorCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgZW5hYmxpbmcgcGFjZWQgc2VuZHMKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGluY2x1ZGUgcGFjZWQgc2VuZCAoaW50ZXJ2YWxzKSBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBwYWNlZCBzZW5kIChpbnRlcnZhbHMpIHN1cHBvcnQuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWludGVydmFscyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9pbnRlcnZhbHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9pbnRlcnZhbHM7CitmaQorCisKK2Nhc2UgIiRlbmFibGVfaW50ZXJ2YWxzIiBpbgorCXllcykKKwkJdXNlX2ludGVydmFscz10cnVlCisJCTs7CisJbm8pCisJCXVzZV9pbnRlcnZhbHM9ZmFsc2UKKwkJOzsKKwknJykKKwkJdXNlX2ludGVydmFscz1mYWxzZQorCQk7OworCSopCisJCWFzX2ZuX2Vycm9yICQ/ICItLWVuYWJsZS1pbnRlcnZhbHMgdGFrZXMgeWVzIG9yIG5vIiAiJExJTkVOTyIgNQorCQk7OworZXNhYworCitpZiAkdXNlX2ludGVydmFscwordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCitpZiAkdXNlX2ludGVydmFscwordGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBXQU5UX0lOVEVSVkFMUyAvKiovIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBzZWUgaWYgcGFjZWQgc2VuZHMgc2hvdWxkIHdhaXQgYW5kIHNwaW4KKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHBhY2VkIHNlbmRzIHNob3VsZCBzcGluIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgcGFjZWQgc2VuZHMgc2hvdWxkIHNwaW4uLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXNwaW4gd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfc3BpbitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3NwaW47CitmaQorCisKK2Nhc2UgIiRlbmFibGVfc3BpbiIgaW4KKwl5ZXMpCisJCXVzZV9zcGluPXRydWUKKwkJOzsKKwlubykKKwkJdXNlX3NwaW49ZmFsc2UKKwkJOzsKKwknJykKKwkJdXNlX3NwaW49ZmFsc2UKKwkJOzsKKwkqKQorCQlhc19mbl9lcnJvciAkPyAiLS1lbmFibGUtc3BpbiB0YWtlcyB5ZXMgb3Igbm8iICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKK2lmICR1c2Vfc3BpbgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCitpZiAkdXNlX3NwaW4KK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgV0FOVF9JTlRFUlZBTFMgLyoqLyIgPj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZpbmUgV0FOVF9TUElOIC8qKi8iID4+Y29uZmRlZnMuaAorCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgZW5hYmxpbmcgaW5pdGlhbCByZXF1ZXN0IGJ1cnN0cworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBpbml0aWFsIGJ1cnN0IHN1cHBvcnQgaW4gX1JSIHRlc3RzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5jbHVkZSBpbml0aWFsIGJ1cnN0IHN1cHBvcnQgaW4gX1JSIHRlc3RzLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1idXJzdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9idXJzdCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2J1cnN0OworZmkKKworCitjYXNlICIkZW5hYmxlX2J1cnN0IiBpbgorCXllcykKKwkJdXNlX2J1cnN0PXRydWUKKwkJOzsKKwlubykKKwkJdXNlX2J1cnN0PWZhbHNlCisJCTs7CisJJycpCisJCXVzZV9idXJzdD10cnVlCisJCTs7CisJKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLWJ1cnN0IHRha2VzIHllcyBvciBubyIgIiRMSU5FTk8iIDUKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9idXJzdAordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCitpZiAkdXNlX2J1cnN0Cit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFdBTlRfRklSU1RfQlVSU1QgLyoqLyIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgdGltZSB0byBzZWUgYWJvdXQgQ1BVIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIENQVSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudCB0eXBlIHRvIHVzZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGljaCBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnQgdHlwZSB0byB1c2UuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWNwdXV0aWwgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfY3B1dXRpbCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2NwdXV0aWw7CitmaQorCisKK05FVENQVV9TT1VSQ0U9IiRlbmFibGVfY3B1dXRpbCIKK2Nhc2UgIiRlbmFibGVfY3B1dXRpbCIgaW4KKwlwc3RhdCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUFNUQVQgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJOzsKKwlwc3RhdG5ldykKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUFNUQVQgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJOzsKKyAgICAgICAgcGVyZnN0YXQpCisgICAgICAgICAgICAgICAgdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUEVSRlNUQVQgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbHBlcmZzdGF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWluIGluIC1scGVyZnN0YXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3BlcmZzdGF0X21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHBlcmZzdGF0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKK3JldHVybiBtYWluICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9wZXJmc3RhdF9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfcGVyZnN0YXRfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcGVyZnN0YXRfbWFpbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9wZXJmc3RhdF9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3BlcmZzdGF0X21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJQRVJGU1RBVCAxCitfQUNFT0YKKworICBMSUJTPSItbHBlcmZzdGF0ICRMSUJTIgorCitmaQorYWNfY3ZfbGliX3BlcmZzdGF0PWFjX2N2X2xpYl9wZXJmc3RhdF9tYWluCisKKyAgICAgICAgICAgICAgICA7OworCisJbG9vcGVyKQorCQl1c2VfY3B1dXRpbD10cnVlCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9MT09QRVIgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJOzsKKwlwcm9jc3RhdCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUFJPQ19TVEFUIC8qKi8iID4+Y29uZmRlZnMuaAorCisJCTs7CisJa3N0YXQpCisJCXVzZV9jcHV1dGlsPXRydWUKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX0tTVEFUIC8qKi8iID4+Y29uZmRlZnMuaAorCisJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxrc3RhdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbGtzdGF0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9rc3RhdF9tYWluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxrc3RhdCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CityZXR1cm4gbWFpbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfa3N0YXRfbWFpbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2tzdGF0X21haW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2tzdGF0X21haW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfa3N0YXRfbWFpbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9rc3RhdF9tYWluIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCS1NUQVQgMQorX0FDRU9GCisKKyAgTElCUz0iLWxrc3RhdCAkTElCUyIKKworZmkKK2FjX2N2X2xpYl9rc3RhdD1hY19jdl9saWJfa3N0YXRfbWFpbgorCisJCTs7CisJa3N0YXQxMCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfS1NUQVQgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbGtzdGF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sa3N0YXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2tzdGF0X21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGtzdGF0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKK3JldHVybiBtYWluICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9rc3RhdF9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfa3N0YXRfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfa3N0YXRfbWFpbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9rc3RhdF9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2tzdGF0X21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJLU1RBVCAxCitfQUNFT0YKKworICBMSUJTPSItbGtzdGF0ICRMSUJTIgorCitmaQorYWNfY3ZfbGliX2tzdGF0PWFjX2N2X2xpYl9rc3RhdF9tYWluCisKKwkJOzsKKwlvc3gpCisJCXVzZV9jcHV1dGlsPXRydWUKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX09TWCAvKiovIiA+PmNvbmZkZWZzLmgKKworCQk7OworCScnKQorIyBpYTY0LWhwLWhwdXgxMS4yMworIyBpMzg2LXBjLXNvbGFyaXMyLjEwCisjIGd1ZXNzIGl0IGF1dG9tYWdpY2FsbHkgaW4gYSBuaWNlIGJpZyBjYXNlIHN0YXRlbWVudAorCQljYXNlICR0YXJnZXQgaW4KKwkJICAgICAqLSotbGludXgqKQorCQkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUFJPQ19TVEFUIC8qKi8iID4+Y29uZmRlZnMuaAorCisJCQllbmFibGVfY3B1dXRpbD0icHJvY3N0YXQgLSBhdXRvIgorCQkJTkVUQ1BVX1NPVVJDRT0icHJvY3N0YXQiCisJCQk7OworCQkgICAgICotKi1ocHV4MTEuMjMgfCAqLSotaHB1eDExLjMxKQorCQkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUFNUQVQgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJCWVuYWJsZV9jcHV1dGlsPSJwc3RhdG5ldyAtIGF1dG8iCisJCQlORVRDUFVfU09VUkNFPSJwc3RhdG5ldyIKKwkJCTs7CisJCSAgICAgKi0qLWhwdXgxMSogfCAqLSotaHB1eDEwKikKKwkJCXVzZV9jcHV1dGlsPXRydWUKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1BTVEFUIC8qKi8iID4+Y29uZmRlZnMuaAorCisJCQllbmFibGVfY3B1dXRpbD0icHN0YXQgLSBhdXRvIgorCQkJTkVUQ1BVX1NPVVJDRT0icHN0YXQiCisJCQk7OworCQkgICAgICotKi1haXg1LiogfCAqLSotYWl4Ni4qKQorCQkJdXNlX3B1dXRpbD10cnVlCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9QRVJGU1RBVCAvKiovIiA+PmNvbmZkZWZzLmgKKworCQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbHBlcmZzdGF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWluIGluIC1scGVyZnN0YXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3BlcmZzdGF0X21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHBlcmZzdGF0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKK3JldHVybiBtYWluICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9wZXJmc3RhdF9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfcGVyZnN0YXRfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcGVyZnN0YXRfbWFpbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9wZXJmc3RhdF9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3BlcmZzdGF0X21haW4iID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJQRVJGU1RBVCAxCitfQUNFT0YKKworICBMSUJTPSItbHBlcmZzdGF0ICRMSUJTIgorCitmaQorYWNfY3ZfbGliX3BlcmZzdGF0PWFjX2N2X2xpYl9wZXJmc3RhdF9tYWluCisKKwkJCWVuYWJsZV9jcHV1dGlsPSJwZXJmc3RhdCAtIGF1dG8iCisJCQlORVRDUFVfU09VUkNFPSJwZXJmc3RhdCIKKwkJCTs7CisJCSAgICAgKi0qLXNvbGFyaXMyLjEqKQorCQkJdXNlX2NwdXV0aWw9dHJ1ZQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfS1NUQVQgLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxrc3RhdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbGtzdGF0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9rc3RhdF9tYWluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxrc3RhdCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CityZXR1cm4gbWFpbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfa3N0YXRfbWFpbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2tzdGF0X21haW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2tzdGF0X21haW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfa3N0YXRfbWFpbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9rc3RhdF9tYWluIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCS1NUQVQgMQorX0FDRU9GCisKKyAgTElCUz0iLWxrc3RhdCAkTElCUyIKKworZmkKK2FjX2N2X2xpYl9rc3RhdD1hY19jdl9saWJfa3N0YXRfbWFpbgorCisJCQllbmFibGVfY3B1dXRpbD0ia3N0YXQxMCAtIGF1dG8iCisJCQlORVRDUFVfU09VUkNFPSJrc3RhdDEwIgorCQkJOzsKKwkJICAgICAqLSotc29sYXJpczIuKikKKwkJCXVzZV9jcHV1dGlsPXRydWUKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX0tTVEFUIC8qKi8iID4+Y29uZmRlZnMuaAorCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWluIGluIC1sa3N0YXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxrc3RhdC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfa3N0YXRfbWFpbis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sa3N0YXQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworcmV0dXJuIG1haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2tzdGF0X21haW49eWVzCitlbHNlCisgIGFjX2N2X2xpYl9rc3RhdF9tYWluPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9rc3RhdF9tYWluIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2tzdGF0X21haW4iID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfa3N0YXRfbWFpbiIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQktTVEFUIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sa3N0YXQgJExJQlMiCisKK2ZpCithY19jdl9saWJfa3N0YXQ9YWNfY3ZfbGliX2tzdGF0X21haW4KKworCQkJZW5hYmxlX2NwdXV0aWw9ImtzdGF0IC0gYXV0byIKKwkJCU5FVENQVV9TT1VSQ0U9ImtzdGF0IgorCQkJOzsKKyAgICAgICAgICAgICAgICAgICAgICotKi1mcmVlYnNkWzQtOF0uKiB8ICotKi1uZXRic2RbMS05XS4qICkKKwkJCXVzZV9jcHV1dGlsPXRydWUKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1NZU0NUTCAvKiovIiA+PmNvbmZkZWZzLmgKKworCQkJZW5hYmxlX2NwdXV0aWw9InN5c2N0bCAtIGF1dG8iCisJCQlORVRDUFVfU09VUkNFPSJzeXNjdGwiCisJCQk7OworCQkgICAgKi0qLWRhcndpbiopCisJCQl1c2VfY3B1dXRpbD10cnVlCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9PU1ggLyoqLyIgPj5jb25mZGVmcy5oCisKKwkJCWVuYWJsZV9jcHV1dGlsPSJvc3ggLSBhdXRvIgorCQkJTkVUQ1BVX1NPVVJDRT0ib3N4IgorCQkJOzsKKwkJICAgICAqKQorCQkJdXNlX2NwdXV0aWw9ZmFsc2UKKwkJCU5FVENQVV9TT1VSQ0U9Im5vbmUiCisJCQllbmFibGVfY3B1dXRpbD0ibm9uZS4gQ29uc2lkZXIgdGVhY2hpbmcgY29uZmlndXJlIGFib3V0IHlvdXIgcGxhdGZvcm0uIgorCQkJOzsKKwkJZXNhYworCQk7OworCW5vbmUpCisJCXVzZV9jcHV1dGlsPWZhbHNlCisJCTs7CisJKikKKwkJYXNfZm5fZXJyb3IgJD8gIi0tZW5hYmxlLWNwdXV0aWwgdGFrZXMga3N0YXQsIGtzdGF0MTAsIGxvb3Blciwgb3N4LCBwZXJmc3RhdCwgcHJvY3N0YXQsIHBzdGF0LCBwc3RhdG5ldywgc3lzY3RsIG9yIG5vbmUiICIkTElORU5PIiA1CisJCTs7Citlc2FjCisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogXCIkZW5hYmxlX2NwdXV0aWxcIiIgPiY1CiskYXNfZWNobyAiXCIkZW5hYmxlX2NwdXV0aWxcIiIgPiY2OyB9CisKKworCisKKyMgbm93IHNwaXQgaXQgYWxsIG91dAorYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIHNyYy9uZXRwZXJmX3ZlcnNpb24uaCBzcmMvTWFrZWZpbGUgc3JjL21pc3NpbmcvTWFrZWZpbGUgc3JjL21pc3NpbmcvbTQvTWFrZWZpbGUgZG9jL01ha2VmaWxlIGRvYy9leGFtcGxlcy9NYWtlZmlsZSBuZXRwZXJmLnNwZWMiCisKKworY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCisjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKKyMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyZQorIyBzY3JpcHRzIGFuZCBjb25maWd1cmUgcnVucywgc2VlIGNvbmZpZ3VyZSdzIG9wdGlvbiAtLWNvbmZpZy1jYWNoZS4KKyMgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3QKKyMgd2FudCB0byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgorIworIyBjb25maWcuc3RhdHVzIG9ubHkgcGF5cyBhdHRlbnRpb24gdG8gdGhlIGNhY2hlIGZpbGUgaWYgeW91IGdpdmUgaXQKKyMgdGhlIC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLgorIworIyBgYWNfY3ZfZW52X2ZvbycgdmFyaWFibGVzIChzZXQgb3IgdW5zZXQpIHdpbGwgYmUgb3ZlcnJpZGRlbiB3aGVuCisjIGxvYWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWduZWQgdGhlCisjIGZvbGxvd2luZyB2YWx1ZXMuCisKK19BQ0VPRgorCisjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAorIyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4KKyMgU28sIHdlIGtpbGwgdmFyaWFibGVzIGNvbnRhaW5pbmcgbmV3bGluZXMuCisjIFVsdHJpeCBzaCBzZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwKKyMgYW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBmaWxlIHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuCisoCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnYDsgZG8KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICBjYXNlICRhY192YWwgaW4gIygKKyAgICAqJHthc19ubH0qKQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoCisgICAgICAqX2N2XyopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygKKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoCisgICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7OworICAgICAgZXNhYyA7OworICAgIGVzYWMKKyAgZG9uZQorCisgIChzZXQpIDI+JjEgfAorICAgIGNhc2UgJGFzX25sYChhY19zcGFjZT0nICc7IHNldCkgMj4mMWAgaW4gIygKKyAgICAqJHthc19ubH1hY19zcGFjZT1cICopCisgICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlczogZG91YmxlLXF1b3RlCisgICAgICAjIHN1YnN0aXR1dGlvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcLgorICAgICAgc2VkIC1uIFwKKwkicy8nLydcXFxcJycvZzsKKwkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1xcMicvcCIKKyAgICAgIDs7ICMoCisgICAgKikKKyAgICAgICMgYHNldCcgcXVvdGVzIGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuCisgICAgICBzZWQgLW4gIi9eW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qPS9wIgorICAgICAgOzsKKyAgICBlc2FjIHwKKyAgICBzb3J0CispIHwKKyAgc2VkICcKKyAgICAgL15hY19jdl9lbnZfL2IgZW5kCisgICAgIHQgY2xlYXIKKyAgICAgOmNsZWFyCisgICAgIHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8KKyAgICAgdCBlbmQKKyAgICAgcy9eXChbXj1dKlwpPVwoLipcKSQvXDE9JHtcMT1cMn0vCisgICAgIDplbmQnID4+Y29uZmNhY2hlCitpZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNhY2hlID4vZGV2L251bGwgMj4mMTsgdGhlbiA6OyBlbHNlCisgIGlmIHRlc3QgLXcgIiRjYWNoZV9maWxlIjsgdGhlbgorICAgIGlmIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQorICAgICAgaWYgdGVzdCAhIC1mICIkY2FjaGVfZmlsZSIgfHwgdGVzdCAtaCAiJGNhY2hlX2ZpbGUiOyB0aGVuCisJY2F0IGNvbmZjYWNoZSA+IiRjYWNoZV9maWxlIgorICAgICAgZWxzZQorICAgICAgICBjYXNlICRjYWNoZV9maWxlIGluICMoCisgICAgICAgICovKiB8ID86KikKKwkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiJCQgJiYKKwkgIG12IC1mICIkY2FjaGVfZmlsZSIkJCAiJGNhY2hlX2ZpbGUiIDs7ICMoCisgICAgICAgICopCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiA7OworCWVzYWMKKyAgICAgIGZpCisgICAgZmkKKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgIGZpCitmaQorcm0gLWYgY29uZmNhY2hlCisKK3Rlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKKyMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJlZml4LgordGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworCitERUZTPS1ESEFWRV9DT05GSUdfSAorCithY19saWJvYmpzPQorYWNfbHRsaWJvYmpzPQorVT0KK2ZvciBhY19pIGluIDogJExJQk9CSlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBjb250aW51ZQorICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBpbnN0YWxsZWQuCisgIGFjX3NjcmlwdD0ncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJworICBhY19pPWAkYXNfZWNobyAiJGFjX2kiIHwgc2VkICIkYWNfc2NyaXB0ImAKKyAgIyAyLiBQcmVwZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUgorICAjICAgIHdpbGwgYmUgc2V0IHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgTElCT0JKUyBvYmplY3RzIGFyZSBidWlsdC4KKyAgYXNfZm5fYXBwZW5kIGFjX2xpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFjX2lcJFUuJGFjX29iamV4dCIKKyAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaSInJFUubG8nCitkb25lCitMSUJPQkpTPSRhY19saWJvYmpzCisKK0xUTElCT0JKUz0kYWNfbHRsaWJvYmpzCisKKworIGlmIHRlc3QgLW4gIiRFWEVFWFQiOyB0aGVuCisgIGFtX19FWEVFWFRfVFJVRT0KKyAgYW1fX0VYRUVYVF9GQUxTRT0nIycKK2Vsc2UKKyAgYW1fX0VYRUVYVF9UUlVFPScjJworICBhbV9fRVhFRVhUX0ZBTFNFPQorZmkKKworaWYgdGVzdCAteiAiJHtBTURFUF9UUlVFfSIgJiYgdGVzdCAteiAiJHtBTURFUF9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQoraWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQoraWYgdGVzdCAteiAiJHtORUVEX0xJQkNPTVBBVF9UUlVFfSIgJiYgdGVzdCAteiAiJHtORUVEX0xJQkNPTVBBVF9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk5FRURfTElCQ09NUEFUXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQorCis6ICIke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfSIKK2FjX3dyaXRlX2ZhaWw9MAorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQorYXNfd3JpdGVfZmFpbD0wCitjYXQgPiRDT05GSUdfU1RBVFVTIDw8X0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQorIyEgJFNIRUxMCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuCisjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKKyMgY29uZmlndXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4KKworZGVidWc9ZmFsc2UKK2FjX2NzX3JlY2hlY2s9ZmFsc2UKK2FjX2NzX3NpbGVudD1mYWxzZQorCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorZXhwb3J0IFNIRUxMCitfQVNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTEKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCisgIHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKAorICAqcG9zaXgqKSA6CisgICAgc2V0IC1vIHBvc2l4IDs7ICMoCisgICopIDoKKyAgICAgOzsKK2VzYWMKK2ZpCisKKworYXNfbmw9JworJworZXhwb3J0IGFzX25sCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgorYXNfZWNobz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KKyMgUHJlZmVyIGEga3NoIHNoZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLAorIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KK2lmIHRlc3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwKKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJworICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKK2VsaWYgKHRlc3QgIlhgcHJpbnRmICVzICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJworZWxzZQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEkYXNfbmwiJworICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKKyAgZWxzZQorICAgIGFzX2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCisgICAgYXNfZWNob19uX2JvZHk9J2V2YWwKKyAgICAgIGFyZz0kMTsKKyAgICAgIGNhc2UgJGFyZyBpbiAjKAorICAgICAgKiIkYXNfbmwiKikKKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKKwlhcmc9YGV4cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OworICAgICAgZXNhYzsKKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKKyAgICAnCisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5CisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycKKyAgZmkKKyAgZXhwb3J0IGFzX2VjaG9fYm9keQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCitmaQorCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgeworICAgIChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8CisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycKKyAgfQorZmkKKworCisjIElGUworIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgorIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkCisjIHNwbGl0dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCitJRlM9IiAiIgkkYXNfbmwiCisKKyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CitjYXNlICQwIGluICMoKAorICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CisgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgICAgOzsKK2VzYWMKKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKKyMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgorICBhc19teXNlbGY9JDAKK2ZpCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCisgICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCisgIGV4aXQgMQorZmkKKworIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbgorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdCAxIgorIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZAorIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUuMi4xNC4KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCisgICYmICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwgOgorZG9uZQorUFMxPSckICcKK1BTMj0nPiAnCitQUzQ9JysgJworCisjIE5MUyBudWlzYW5jZXMuCitMQ19BTEw9QworZXhwb3J0IExDX0FMTAorTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFCisKKyMgQ0RQQVRILgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCisKKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorYXNfZm5fZXJyb3IgKCkKK3sKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgorICBhc19mbl9leGl0ICRhc19zdGF0dXMKK30gIyBhc19mbl9lcnJvcgorCisKKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLgorYXNfZm5fc2V0X3N0YXR1cyAoKQoreworICByZXR1cm4gJDEKK30gIyBhc19mbl9zZXRfc3RhdHVzCisKKyMgYXNfZm5fZXhpdCBTVEFUVVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0LgorYXNfZm5fZXhpdCAoKQoreworICBzZXQgK2UKKyAgYXNfZm5fc2V0X3N0YXR1cyAkMQorICBleGl0ICQxCit9ICMgYXNfZm5fZXhpdAorCisjIGFzX2ZuX3Vuc2V0IFZBUgorIyAtLS0tLS0tLS0tLS0tLS0KKyMgUG9ydGFibHkgdW5zZXQgVkFSLgorYXNfZm5fdW5zZXQgKCkKK3sKKyAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQorfQorYXNfdW5zZXQ9YXNfZm5fdW5zZXQKKyMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UKKyMgYWR2YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cgYW1vcnRpemVkIGxpbmVhciBncm93dGggb3ZlcgorIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0eXBpY2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2ZQorIyBpbXBsZW1lbnRhdGlvbnMuCitpZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQorICB7CisgICAgZXZhbCAkMSs9XCQyCisgIH0nCitlbHNlCisgIGFzX2ZuX2FwcGVuZCAoKQorICB7CisgICAgZXZhbCAkMT1cJCQxXCQyCisgIH0KK2ZpICMgYXNfZm5fYXBwZW5kCisKKyMgYXNfZm5fYXJpdGggQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCisjIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1bWVudHMKKyMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuCitpZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXJpdGggKCkKKyAgeworICAgIGFzX3ZhbD0kKCggJCogKSkKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXJpdGggKCkKKyAgeworICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVxIDFgCisgIH0KK2ZpICMgYXNfZm5fYXJpdGgKKworCitpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKK2Vsc2UKKyAgYXNfYmFzZW5hbWU9ZmFsc2UKK2ZpCisKK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc19kaXJuYW1lPWRpcm5hbWUKK2Vsc2UKKyAgYXNfZGlybmFtZT1mYWxzZQorZmkKKworYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8CiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgvIiQwIiB8CisgICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCithc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJworYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKKworRUNIT19DPSBFQ0hPX049IEVDSE9fVD0KK2Nhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoCistbiopCisgIGNhc2UgYGVjaG8gJ3h5XGMnYCBpbgorICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4KKyAgeHkpICBFQ0hPX0M9J1xjJzs7CisgICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlYIDYuMWAgPiAvZGV2L251bGwKKyAgICAgICBFQ0hPX1Q9JwknOzsKKyAgZXNhYzs7CisqKQorICBFQ0hPX049Jy1uJzs7Citlc2FjCisKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCitpZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KKyAgcm0gLWYgY29uZiQkLmRpci9jb25mJCQuZmlsZQorZWxzZQorICBybSAtZiBjb25mJCQuZGlyCisgIG1rZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKK2ZpCitpZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCisgIGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGFzX2xuX3M9J2xuIC1zJworICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6CisgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBmaWxlIGRpcicgZmFpbC4KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4KKyAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLgorICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKKyAgICAgIGFzX2xuX3M9J2NwIC1wJworICBlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGFzX2xuX3M9bG4KKyAgZWxzZQorICAgIGFzX2xuX3M9J2NwIC1wJworICBmaQorZWxzZQorICBhc19sbl9zPSdjcCAtcCcKK2ZpCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCitybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCisKKworIyBhc19mbl9ta2Rpcl9wCisjIC0tLS0tLS0tLS0tLS0KKyMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgorYXNfZm5fbWtkaXJfcCAoKQoreworCisgIGNhc2UgJGFzX2RpciBpbiAjKAorICAtKikgYXNfZGlyPS4vJGFzX2Rpcjs7CisgIGVzYWMKKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7CisgICAgYXNfZGlycz0KKyAgICB3aGlsZSA6OyBkbworICAgICAgY2FzZSAkYXNfZGlyIGluICMoCisgICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OyAjJygKKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7CisgICAgICBlc2FjCisgICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgorICAgICAgYXNfZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhc19kaXIiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXClbXi9dLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKKyAgICBkb25lCisgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgorICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgorCisKK30gIyBhc19mbl9ta2Rpcl9wCitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicKK2Vsc2UKKyAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKKyAgYXNfbWtkaXJfcD1mYWxzZQorZmkKKworaWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc190ZXN0X3g9J3Rlc3QgLXgnCitlbHNlCisgIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgIGFzX2xzX0xfb3B0aW9uPUwKKyAgZWxzZQorICAgIGFzX2xzX0xfb3B0aW9uPQorICBmaQorICBhc190ZXN0X3g9JworICAgIGV2YWwgc2ggLWMgJ1wnJworICAgICAgaWYgdGVzdCAtZCAiJDEiOyB0aGVuCisJdGVzdCAtZCAiJDEvLiI7CisgICAgICBlbHNlCisJY2FzZSAkMSBpbiAjKAorCS0qKXNldCAiLi8kMSI7OworCWVzYWM7CisJY2FzZSBgbHMgLWxkJyRhc19sc19MX29wdGlvbicgIiQxIiAyPi9kZXYvbnVsbGAgaW4gIygoCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQorICAgICdcJycgc2gKKyAgJworZmkKK2FzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94CisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KK2FzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKKworCitleGVjIDY+JjEKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNYWluIGJvZHkgb2YgJENPTkZJR19TVEFUVVMgc2NyaXB0LiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKK19BU0VPRgordGVzdCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyMgU2F2ZSB0aGUgbG9nIG1lc3NhZ2UsIHRvIGtlZXAgJDAgYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bworIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCisjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgorYWNfbG9nPSIKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgbmV0cGVyZiAkYXNfbWUgMi43LjAsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisKKyAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUworICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKKyAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUworICBDT05GSUdfQ09NTUFORFMgPSAkQ09ORklHX0NPTU1BTkRTCisgICQgJDAgJEAKKworb24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCisiCisKK19BQ0VPRgorCitjYXNlICRhY19jb25maWdfZmlsZXMgaW4gKiIKKyIqKSBzZXQgeCAkYWNfY29uZmlnX2ZpbGVzOyBzaGlmdDsgYWNfY29uZmlnX2ZpbGVzPSQqOzsKK2VzYWMKKworY2FzZSAkYWNfY29uZmlnX2hlYWRlcnMgaW4gKiIKKyIqKSBzZXQgeCAkYWNfY29uZmlnX2hlYWRlcnM7IHNoaWZ0OyBhY19jb25maWdfaGVhZGVycz0kKjs7Citlc2FjCisKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuCitjb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMiCitjb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJzIgorY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIgorCitfQUNFT0YKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfY3NfdXNhZ2U9IlwKK1xgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90aGVyIGNvbmZpZ3VyYXRpb24gYWN0aW9ucworZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICBVbmxlc3MgdGhlIGZpbGVzCithbmQgYWN0aW9ucyBhcmUgc3BlY2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQuCisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4uLgorCisgIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgdGhlbiBleGl0CisgICAgICAtLWNvbmZpZyAgICAgcHJpbnQgY29uZmlndXJhdGlvbiwgdGhlbiBleGl0CisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudAorICAgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcworICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKKyAgICAgIC0tcmVjaGVjayAgICB1cGRhdGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUgY29uZGl0aW9ucworICAgICAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQorICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQorICAgICAgLS1oZWFkZXI9RklMRVs6VEVNUExBVEVdCisgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gaGVhZGVyIEZJTEUKKworQ29uZmlndXJhdGlvbiBmaWxlczoKKyRjb25maWdfZmlsZXMKKworQ29uZmlndXJhdGlvbiBoZWFkZXJzOgorJGNvbmZpZ19oZWFkZXJzCisKK0NvbmZpZ3VyYXRpb24gY29tbWFuZHM6CiskY29uZmlnX2NvbW1hbmRzCisKK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVyLiIKKworX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2FjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCithY19jc192ZXJzaW9uPSJcXAorbmV0cGVyZiBjb25maWcuc3RhdHVzIDIuNy4wCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsCisgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgorCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisKK2FjX3B3ZD0nJGFjX3B3ZCcKK3NyY2Rpcj0nJHNyY2RpcicKK0lOU1RBTEw9JyRJTlNUQUxMJworTUtESVJfUD0nJE1LRElSX1AnCitBV0s9JyRBV0snCit0ZXN0IC1uICJcJEFXSyIgfHwgQVdLPWF3aworX0FDRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyMgVGhlIGRlZmF1bHQgbGlzdHMgYXBwbHkgaWYgdGhlIHVzZXIgZG9lcyBub3Qgc3BlY2lmeSBhbnkgZmlsZS4KK2FjX25lZWRfZGVmYXVsdHM9Ogord2hpbGUgdGVzdCAkIyAhPSAwCitkbworICBjYXNlICQxIGluCisgIC0tKj0/KikKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAorICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdYW149XSo9XCguKlwpJ2AKKyAgICBhY19zaGlmdD06CisgICAgOzsKKyAgLS0qPSkKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAorICAgIGFjX29wdGFyZz0KKyAgICBhY19zaGlmdD06CisgICAgOzsKKyAgKikKKyAgICBhY19vcHRpb249JDEKKyAgICBhY19vcHRhcmc9JDIKKyAgICBhY19zaGlmdD1zaGlmdAorICAgIDs7CisgIGVzYWMKKworICBjYXNlICRhY19vcHRpb24gaW4KKyAgIyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4KKyAgLXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCisgICAgYWNfY3NfcmVjaGVjaz06IDs7CisgIC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdiB8IC1WICkKKyAgICAkYXNfZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDs7CisgIC0tY29uZmlnIHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29uIHwgLS1jbyB8IC0tYyApCisgICAgJGFzX2VjaG8gIiRhY19jc19jb25maWciOyBleGl0IDs7CisgIC0tZGVidWcgfCAtLWRlYnUgfCAtLWRlYiB8IC0tZGUgfCAtLWQgfCAtZCApCisgICAgZGVidWc9OiA7OworICAtLWZpbGUgfCAtLWZpbCB8IC0tZmkgfCAtLWYgKQorICAgICRhY19zaGlmdAorICAgIGNhc2UgJGFjX29wdGFyZyBpbgorICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgJycpIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGZpbGUgYXJndW1lbnQiIDs7CisgICAgZXNhYworICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGVhZGVyIHwgLS1oZWFkZSB8IC0taGVhZCB8IC0taGVhICkKKyAgICAkYWNfc2hpZnQKKyAgICBjYXNlICRhY19vcHRhcmcgaW4KKyAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgIGVzYWMKKyAgICBhc19mbl9hcHBlbmQgQ09ORklHX0hFQURFUlMgIiAnJGFjX29wdGFyZyciCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGUgfCAtLWgpCisgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKKyAgICBhc19mbl9lcnJvciAkPyAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIjs7CisgIC0taGVscCB8IC0taGVsIHwgLWggKQorICAgICRhc19lY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDs7CisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKKyAgICBhY19jc19zaWxlbnQ9OiA7OworCisgICMgVGhpcyBpcyBhbiBlcnJvci4KKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJworVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7CisKKyAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCisgICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsKKworICBlc2FjCisgIHNoaWZ0Citkb25lCisKK2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQorCitpZiAkYWNfY3Nfc2lsZW50OyB0aGVuCisgIGV4ZWMgNj4vZGV2L251bGwKKyAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLXNpbGVudCIKK2ZpCisKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitpZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KKyAgc2V0IFggJyRTSEVMTCcgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgorICBzaGlmdAorICBcJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgorICBDT05GSUdfU0hFTEw9JyRTSEVMTCcKKyAgZXhwb3J0IENPTkZJR19TSEVMTAorICBleGVjICJcJEAiCitmaQorCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2V4ZWMgNT4+Y29uZmlnLmxvZworeworICBlY2hvCisgIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3MvLi4uJC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YCisjIyBSdW5uaW5nICRhc19tZS4gIyMKK19BU0JPWAorICAkYXNfZWNobyAiJGFjX2xvZyIKK30gPiY1CisKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjCisjIElOSVQtQ09NTUFORFMKKyMKK0FNREVQX1RSVUU9IiRBTURFUF9UUlVFIiBhY19hdXhfZGlyPSIkYWNfYXV4X2RpciIKKworX0FDRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKworIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCitmb3IgYWNfY29uZmlnX3RhcmdldCBpbiAkYWNfY29uZmlnX3RhcmdldHMKK2RvCisgIGNhc2UgJGFjX2NvbmZpZ190YXJnZXQgaW4KKyAgICAiY29uZmlnLmgiKSBDT05GSUdfSEVBREVSUz0iJENPTkZJR19IRUFERVJTIGNvbmZpZy5oIiA7OworICAgICJkZXBmaWxlcyIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZXBmaWxlcyIgOzsKKyAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CisgICAgInNyYy9uZXRwZXJmX3ZlcnNpb24uaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzcmMvbmV0cGVyZl92ZXJzaW9uLmgiIDs7CisgICAgInNyYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzcmMvTWFrZWZpbGUiIDs7CisgICAgInNyYy9taXNzaW5nL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHNyYy9taXNzaW5nL01ha2VmaWxlIiA7OworICAgICJzcmMvbWlzc2luZy9tNC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzcmMvbWlzc2luZy9tNC9NYWtlZmlsZSIgOzsKKyAgICAiZG9jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRvYy9NYWtlZmlsZSIgOzsKKyAgICAiZG9jL2V4YW1wbGVzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRvYy9leGFtcGxlcy9NYWtlZmlsZSIgOzsKKyAgICAibmV0cGVyZi5zcGVjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG5ldHBlcmYuc3BlYyIgOzsKKworICAqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKKyAgZXNhYworZG9uZQorCisKKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKKyMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90LgorIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQorIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KK2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCisgIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzCisgIHRlc3QgIiR7Q09ORklHX0hFQURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hFQURFUlM9JGNvbmZpZ19oZWFkZXJzCisgIHRlc3QgIiR7Q09ORklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENPTkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1hbmRzCitmaQorCisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUKKyMgc2ltcGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIGFnYWluc3QgaGF2aW5nIGl0IGhlcmUsIGFuZCBpbiBhZGRpdGlvbiwKKyMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcy4KKyMgSG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KKyMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZDoKKyMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBiZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgorJGRlYnVnIHx8Cit7CisgIHRtcD0gYWNfdG1wPQorICB0cmFwICdleGl0X3N0YXR1cz0kPworICA6ICIke2FjX3RtcDo9JHRtcH0iCisgIHsgdGVzdCAhIC1kICIkYWNfdG1wIiB8fCBybSAtZnIgIiRhY190bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCisnIDAKKyAgdHJhcCAnYXNfZm5fZXhpdCAxJyAxIDIgMTMgMTUKK30KKyMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLgorCit7CisgIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29uZlhYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgorICB0ZXN0IC1kICIkdG1wIgorfSAgfHwKK3sKKyAgdG1wPS4vY29uZiQkLSRSQU5ET00KKyAgKHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpCit9IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJTkVOTyIgNQorYWNfdG1wPSR0bXAKKworIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19GSUxFUyBzZWN0aW9uLgorIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMgY29uZmlnLmgnLgoraWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4KKworCithY19jcj1gZWNobyBYIHwgdHIgWCAnXDAxNSdgCisjIE9uIGN5Z3dpbiwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBgYCBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgaWduY3IuCisjIEJ1dCB3ZSBrbm93IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJlIGVtcHR5IGF0IHRoaXMKKyMgcG9pbnQsIHNvIHdlIGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suCitpZiB0ZXN0ICJ4JGFjX2NyIiA9IHg7IHRoZW4KKyAgZXZhbCBhY19jcj1cJFwnXFxyXCcKK2ZpCithY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251bGxgCitpZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbgorICBhY19jc19hd2tfY3I9J1xccicKK2Vsc2UKKyAgYWNfY3NfYXdrX2NyPSRhY19jcgorZmkKKworZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKK19BQ0VPRgorCisKK3sKKyAgZWNobyAiY2F0ID5jb25mJCRzdWJzLmF3ayA8PF9BQ0VPRiIgJiYKKyAgZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJgorICBlY2hvICJfQUNFT0YiCit9ID5jb25mJCRzdWJzLnNoIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKK2FjX2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnXidgCithY19kZWxpbT0nJSFfISMgJworZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvCisgIC4gLi9jb25mJCRzdWJzLnNoIHx8CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorCisgIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgCisgIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1fbnVtOyB0aGVuCisgICAgYnJlYWsKKyAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgIGVsc2UKKyAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgorICBmaQorZG9uZQorcm0gLWYgY29uZiQkc3Vicy5zaAorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKK19BQ0VPRgorc2VkIC1uICcKK2gKK3MvXi9TWyIvOyBzLyEuKi8iXT0vCitwCitnCitzL15bXiFdKiEvLworOnJlcGwKK3QgcmVwbAorcy8nIiRhY19kZWxpbSInJC8vCit0IGRlbGltCis6bmwKK2gKK3MvXCguXHsxNDhcfVwpLi4qL1wxLwordCBtb3JlMQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxuIlxcLworcAorbgorYiByZXBsCis6bW9yZTEKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KK3AKK2cKK3MvLlx7MTQ4XH0vLwordCBubAorOmRlbGltCitoCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8KK3QgbW9yZTIKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvCitwCitiCis6bW9yZTIKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KK3AKK2cKK3MvLlx7MTQ4XH0vLwordCBkZWxpbQorJyA8Y29uZiQkc3Vicy5hd2sgfCBzZWQgJworL15bXiIiXS97CisgIE4KKyAgcy9cbi8vCit9CisnID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCitybSAtZiBjb25mJCRzdWJzLmF3aworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitfQUNBV0sKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCisgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxCisgIEZTID0gIgciCisKK30KK3sKKyAgbGluZSA9ICQgMAorICBuZmllbGRzID0gc3BsaXQobGluZSwgZmllbGQsICJAIikKKyAgc3Vic3RlZCA9IDAKKyAgbGVuID0gbGVuZ3RoKGZpZWxkWzFdKQorICBmb3IgKGkgPSAyOyBpIDwgbmZpZWxkczsgaSsrKSB7CisgICAga2V5ID0gZmllbGRbaV0KKyAgICBrZXlsZW4gPSBsZW5ndGgoa2V5KQorICAgIGlmIChTX2lzX3NldFtrZXldKSB7CisgICAgICB2YWx1ZSA9IFNba2V5XQorICAgICAgbGluZSA9IHN1YnN0cihsaW5lLCAxLCBsZW4pICIiIHZhbHVlICIiIHN1YnN0cihsaW5lLCBsZW4gKyBrZXlsZW4gKyAzKQorICAgICAgbGVuICs9IGxlbmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkKKyAgICAgIHN1YnN0ZWQgPSAxCisgICAgfSBlbHNlCisgICAgICBsZW4gKz0gMSArIGtleWxlbgorICB9CisKKyAgcHJpbnQgbGluZQorfQorCitfQUNBV0sKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQoraWYgc2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2NyL2ciCitlbHNlCisgIGNhdAorZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAvc3Vicy5hd2siIFwKKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQorX0FDRU9GCisKKyMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29sZSAkKHNyY2RpciksCisjICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZW50cmllcyBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCisjIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQorIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgoraWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4KKyAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKK2gKK3MvLy8KK3MvXi86Lworcy9bCSBdKiQvOi8KK3MvOlwkKHNyY2Rpcik6LzovZworcy86XCR7c3JjZGlyfTovOi9nCitzLzpAc3JjZGlyQDovOi9nCitzL146Ki8vCitzLzoqJC8vCit4CitzL1woPVsJIF0qXCkuKi9cMS8KK0cKK3MvXG4vLworcy9eW149XSo9WwkgXSokLy8KK30nCitmaQorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiCisKKyMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfSEVBREVSUyBzZWN0aW9uLgorIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19IRUFERVJTLgorIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBNYWtlZmlsZScuCitpZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCitjYXQgPiIkYWNfdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sgfHwKK0JFR0lOIHsKK19BQ0VPRgorCisjIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gYW4gYXdrIHNjcmlwdCBgZGVmaW5lcy5hd2snLCBlbWJlZGRlZCBhcworIyBoZXJlLWRvY3VtZW50IGluIGNvbmZpZy5zdGF0dXMsIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHByb3BlciB2YWx1ZXMgaW50bworIyBjb25maWcuaC5pbiB0byBwcm9kdWNlIGNvbmZpZy5oLgorCisjIENyZWF0ZSBhIGRlbGltaXRlciBzdHJpbmcgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb25mZGVmcy5oLCB0byBlYXNlCisjIGhhbmRsaW5nIG9mIGxvbmcgbGluZXMuCithY19kZWxpbT0nJSFfISMgJworZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIDo7IGRvCisgIGFjX3R0PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAiJGFjX3R0IjsgdGhlbgorICAgIGJyZWFrCisgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfSEVBREVSUyIgIiRMSU5FTk8iIDUKKyAgZWxzZQorICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAiCisgIGZpCitkb25lCisKKyMgRm9yIHRoZSBhd2sgc2NyaXB0LCBEIGlzIGFuIGFycmF5IG9mIG1hY3JvIHZhbHVlcyBrZXllZCBieSBuYW1lLAorIyBsaWtld2lzZSBQIGNvbnRhaW5zIG1hY3JvIHBhcmFtZXRlcnMgaWYgYW55LiAgUHJlc2VydmUgYmFja3NsYXNoCisjIG5ld2xpbmUgc2VxdWVuY2VzLgorCithY193b3JkX3JlPVtfJGFzX2NyX0xldHRlcnNdW18kYXNfY3JfYWxudW1dKgorc2VkIC1uICcKK3MvLlx7MTQ4XH0vJiciJGFjX2RlbGltIicvZwordCByc2V0Cis6cnNldAorcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSovIC8KK3QgZGVmCitkCis6ZGVmCitzL1xcJC8vCit0IGJzbmwKK3MvWyJcXF0vXFwmL2cKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorRFsiXDEiXT0iIFwzIi9wCitzL14gXCgnIiRhY193b3JkX3JlIidcKVsJIF0qXCguKlwpL0RbIlwxIl09IiBcMiIvcAorZAorOmJzbmwKK3MvWyJcXF0vXFwmL2cKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorRFsiXDEiXT0iIFwzXFxcXFxcbiJcXC9wCit0IGNvbnQKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpWwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyXFxcXFxcbiJcXC9wCit0IGNvbnQKK2QKKzpjb250CituCitzLy5cezE0OFx9LyYnIiRhY19kZWxpbSInL2cKK3QgY2xlYXIKKzpjbGVhcgorcy9cXCQvLwordCBic25sYworcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIi9wCitkCis6YnNubGMKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcXFxcXG4iXFwvcAorYiBjb250CisnIDxjb25mZGVmcy5oIHwgc2VkICcKK3MvJyIkYWNfZGVsaW0iJy8iXFxcCisiL2cnID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorICBmb3IgKGtleSBpbiBEKSBEX2lzX3NldFtrZXldID0gMQorICBGUyA9ICIHIgorfQorL15bXHQgXSojW1x0IF0qKGRlZmluZXx1bmRlZilbXHQgXSskYWNfd29yZF9yZShbXHQgKF18XCQpLyB7CisgIGxpbmUgPSBcJCAwCisgIHNwbGl0KGxpbmUsIGFyZywgIiAiKQorICBpZiAoYXJnWzFdID09ICIjIikgeworICAgIGRlZnVuZGVmID0gYXJnWzJdCisgICAgbWFjMSA9IGFyZ1szXQorICB9IGVsc2UgeworICAgIGRlZnVuZGVmID0gc3Vic3RyKGFyZ1sxXSwgMikKKyAgICBtYWMxID0gYXJnWzJdCisgIH0KKyAgc3BsaXQobWFjMSwgbWFjMiwgIigiKSAjKQorICBtYWNybyA9IG1hYzJbMV0KKyAgcHJlZml4ID0gc3Vic3RyKGxpbmUsIDEsIGluZGV4KGxpbmUsIGRlZnVuZGVmKSAtIDEpCisgIGlmIChEX2lzX3NldFttYWNyb10pIHsKKyAgICAjIFByZXNlcnZlIHRoZSB3aGl0ZSBzcGFjZSBzdXJyb3VuZGluZyB0aGUgIiMiLgorICAgIHByaW50IHByZWZpeCAiZGVmaW5lIiwgbWFjcm8gUFttYWNyb10gRFttYWNyb10KKyAgICBuZXh0CisgIH0gZWxzZSB7CisgICAgIyBSZXBsYWNlICN1bmRlZiB3aXRoIGNvbW1lbnRzLiAgVGhpcyBpcyBuZWNlc3NhcnksIGZvciBleGFtcGxlLAorICAgICMgaW4gdGhlIGNhc2Ugb2YgX1BPU0lYX1NPVVJDRSwgd2hpY2ggaXMgcHJlZGVmaW5lZCBhbmQgcmVxdWlyZWQKKyAgICAjIG9uIHNvbWUgc3lzdGVtcyB3aGVyZSBjb25maWd1cmUgd2lsbCBub3QgZGVjaWRlIHRvIGRlZmluZSBpdC4KKyAgICBpZiAoZGVmdW5kZWYgPT0gInVuZGVmIikgeworICAgICAgcHJpbnQgIi8qIiwgcHJlZml4IGRlZnVuZGVmLCBtYWNybywgIiovIgorICAgICAgbmV4dAorICAgIH0KKyAgfQorfQoreyBwcmludCB9CitfQUNBV0sKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKK2ZpICMgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIgorCisKK2V2YWwgc2V0IFggIiAgOkYgJENPTkZJR19GSUxFUyAgOkggJENPTkZJR19IRUFERVJTICAgIDpDICRDT05GSUdfQ09NTUFORFMiCitzaGlmdAorZm9yIGFjX3RhZworZG8KKyAgY2FzZSAkYWNfdGFnIGluCisgIDpbRkhMQ10pIGFjX21vZGU9JGFjX3RhZzsgY29udGludWU7OworICBlc2FjCisgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCisgIDpbRkhMXSo6Kik7OworICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsKKyAgOltGSF0tKSBhY190YWc9LTotOzsKKyAgOltGSF0qKSBhY190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsKKyAgZXNhYworICBhY19zYXZlX0lGUz0kSUZTCisgIElGUz06CisgIHNldCB4ICRhY190YWcKKyAgSUZTPSRhY19zYXZlX0lGUworICBzaGlmdAorICBhY19maWxlPSQxCisgIHNoaWZ0CisKKyAgY2FzZSAkYWNfbW9kZSBpbgorICA6TCkgYWNfc291cmNlPSQxOzsKKyAgOltGSF0pCisgICAgYWNfZmlsZV9pbnB1dHM9CisgICAgZm9yIGFjX2YKKyAgICBkbworICAgICAgY2FzZSAkYWNfZiBpbgorICAgICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7OworICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhlbiBpbiB0aGUgc291cmNlIHRyZWUKKwkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCisJICMgYmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuCisJIHRlc3QgLWYgIiRhY19mIiB8fAorCSAgIGNhc2UgJGFjX2YgaW4KKwkgICBbXFwvJF0qKSBmYWxzZTs7CisJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OworCSAgIGVzYWMgfHwKKwkgICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OworICAgICAgZXNhYworICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYworICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKKyAgICBkb25lCisKKyAgICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAorICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICAgIGNvbmZpZ3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJworCWAnIGJ5IGNvbmZpZ3VyZS4nCisgICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQorICAgIGZpCisgICAgIyBOZXV0cmFsaXplIHNwZWNpYWwgY2hhcmFjdGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFjZW1lbnQgc3RyaW5ncy4KKyAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygKKyAgICAqXCYqIHwgKlx8KiB8ICpcXCogKQorICAgICAgIGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3VyZV9pbnB1dCIgfAorICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAorICAgICopIGFjX3NlZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7OworICAgIGVzYWMKKworICAgIGNhc2UgJGFjX3RhZyBpbgorICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGluIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgZXNhYworCisgIGFjX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhY19maWxlIiB8fAorJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhY19maWxlIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgYXNfZGlyPSIkYWNfZGlyIjsgYXNfZm5fbWtkaXJfcAorICBhY19idWlsZGRpcj0uCisKK2Nhc2UgIiRhY19kaXIiIGluCisuKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKyopCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgCisgICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4KKyAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4KKyAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OworICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsKKyAgZXNhYyA7OworZXNhYworYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCithY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4CisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OgorYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4CisKK2Nhc2UgJHNyY2RpciBpbgorICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCisgICAgYWNfc3JjZGlyPS4KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZCA7OworICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCisgICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKKyAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7CisgICopICMgUmVsYXRpdmUgbmFtZS4KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZmaXgKKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OworZXNhYworYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAorCisKKyAgY2FzZSAkYWNfbW9kZSBpbgorICA6RikKKyAgIworICAjIENPTkZJR19GSUxFCisgICMKKworICBjYXNlICRJTlNUQUxMIGluCisgIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKKyAgKikgYWNfSU5TVEFMTD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRJTlNUQUxMIDs7CisgIGVzYWMKKyAgYWNfTUtESVJfUD0kTUtESVJfUAorICBjYXNlICRNS0RJUl9QIGluCisgIFtcXC8kXSogfCA/OltcXC9dKiApIDs7CisgICovKikgYWNfTUtESVJfUD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRNS0RJUl9QIDs7CisgIGVzYWMKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIElmIHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBrbm93IGFib3V0IGRhdGFyb290ZGlyLCBleHBhbmQgaXQuCisjIEZJWE1FOiBUaGlzIGhhY2sgc2hvdWxkIGJlIHJlbW92ZWQgYSBmZXcgeWVhcnMgYWZ0ZXIgMi42MC4KK2FjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQorYWNfc2VkX2RhdGFyb290PScKKy9kYXRhcm9vdGRpci8geworICBwCisgIHEKK30KKy9AZGF0YWRpckAvcAorL0Bkb2NkaXJAL3AKKy9AaW5mb2RpckAvcAorL0Bsb2NhbGVkaXJAL3AKKy9AbWFuZGlyQC9wJworY2FzZSBgZXZhbCAic2VkIC1uIFwiXCRhY19zZWRfZGF0YXJvb3RcIiAkYWNfZmlsZV9pbnB1dHMiYCBpbgorKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7OworKkBkYXRhZGlyQCp8KkBkb2NkaXJAKnwqQGluZm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30KK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisgIGFjX2RhdGFyb290ZGlyX2hhY2s9JworICBzJkBkYXRhZGlyQCYkZGF0YWRpciZnCisgIHMmQGRvY2RpckAmJGRvY2RpciZnCisgIHMmQGluZm9kaXJAJiRpbmZvZGlyJmcKKyAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcKKyAgcyZAbWFuZGlyQCYkbWFuZGlyJmcKKyAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycgOzsKK2VzYWMKK19BQ0VPRgorCisjIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNyY2RpcicgPSBgLicuCisjIFNoZWxsIGNvZGUgaW4gY29uZmlndXJlLmFjIG1pZ2h0IHNldCBleHRyYXN1Yi4KKyMgRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfc2VkX2V4dHJhPSIkYWNfdnBzdWIKKyRleHRyYXN1YgorX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCis6dAorL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYgorc3xAY29uZmlndXJlX2lucHV0QHwkYWNfc2VkX2NvbmZfaW5wdXR8O3QgdAorcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0CitzJkB0b3BfYnVpbGRfcHJlZml4QCYkYWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0CitzJkBzcmNkaXJAJiRhY19zcmNkaXImO3QgdAorcyZAYWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdAorcyZAdG9wX3NyY2RpckAmJGFjX3RvcF9zcmNkaXImO3QgdAorcyZAYWJzX3RvcF9zcmNkaXJAJiRhY19hYnNfdG9wX3NyY2RpciY7dCB0CitzJkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQKK3MmQGFic19idWlsZGRpckAmJGFjX2Fic19idWlsZGRpciY7dCB0CitzJkBhYnNfdG9wX2J1aWxkZGlyQCYkYWNfYWJzX3RvcF9idWlsZGRpciY7dCB0CitzJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0CitzJkBNS0RJUl9QQCYkYWNfTUtESVJfUCY7dCB0CiskYWNfZGF0YXJvb3RkaXJfaGFjaworIgorZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAiJGFjX3RtcC9zdWJzLmF3ayIgXAorICA+JGFjX3RtcC9vdXQgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisKK3Rlc3QgLXogIiRhY19kYXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQiOyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3AnIFwKKyAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJword2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJword2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjI7fQorCisgIHJtIC1mICIkYWNfdG1wL3N0ZGluIgorICBjYXNlICRhY19maWxlIGluCisgIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OworICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7CisgIGVzYWMgXAorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyA7OworICA6SCkKKyAgIworICAjIENPTkZJR19IRUFERVIKKyAgIworICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCisgICAgeworICAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIKKyAgICB9ID4iJGFjX3RtcC9jb25maWcuaCIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgaWYgZGlmZiAiJGFjX2ZpbGUiICIkYWNfdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2O30KKyAgICBlbHNlCisgICAgICBybSAtZiAiJGFjX2ZpbGUiCisgICAgICBtdiAiJGFjX3RtcC9jb25maWcuaCIgIiRhY19maWxlIiBcCisJfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgZmkKKyAgZWxzZQorICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJGFjX3RtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlIC0iICIkTElORU5PIiA1CisgIGZpCisjIENvbXB1dGUgIiRhY19maWxlIidzIGluZGV4IGluICRjb25maWdfaGVhZGVycy4KK19hbV9hcmc9IiRhY19maWxlIgorX2FtX3N0YW1wX2NvdW50PTEKK2ZvciBfYW1faGVhZGVyIGluICRjb25maWdfaGVhZGVycyA6OyBkbworICBjYXNlICRfYW1faGVhZGVyIGluCisgICAgJF9hbV9hcmcgfCAkX2FtX2FyZzoqICkKKyAgICAgIGJyZWFrIDs7CisgICAgKiApCisgICAgICBfYW1fc3RhbXBfY291bnQ9YGV4cHIgJF9hbV9zdGFtcF9jb3VudCArIDFgIDs7CisgIGVzYWMKK2RvbmUKK2VjaG8gInRpbWVzdGFtcCBmb3IgJF9hbV9hcmciID5gJGFzX2Rpcm5hbWUgLS0gIiRfYW1fYXJnIiB8fAorJGFzX2V4cHIgWCIkX2FtX2FyZyIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkX2FtX2FyZyIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkX2FtX2FyZyIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkX2FtX2FyZyIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRfYW1fYXJnIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2Avc3RhbXAtaCRfYW1fc3RhbXBfY291bnQKKyA7OworCisgIDpDKSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFuZHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXhlY3V0aW5nICRhY19maWxlIGNvbW1hbmRzIiA+JjY7fQorIDs7CisgIGVzYWMKKworCisgIGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbgorICAgICJkZXBmaWxlcyI6QykgdGVzdCB4IiRBTURFUF9UUlVFIiAhPSB4IiIgfHwgeworICAjIEF1dG9jb25mIDIuNjIgcXVvdGVzIC0tZmlsZSBhcmd1bWVudHMgZm9yIGV2YWwsIGJ1dCBub3Qgd2hlbiBmaWxlcworICAjIGFyZSBsaXN0ZWQgd2l0aG91dCAtLWZpbGUuICBMZXQncyBwbGF5IHNhZmUgYW5kIG9ubHkgZW5hYmxlIHRoZSBldmFsCisgICMgaWYgd2UgZGV0ZWN0IHRoZSBxdW90aW5nLgorICBjYXNlICRDT05GSUdfRklMRVMgaW4KKyAgKlwnKikgZXZhbCBzZXQgeCAiJENPTkZJR19GSUxFUyIgOzsKKyAgKikgICBzZXQgeCAkQ09ORklHX0ZJTEVTIDs7CisgIGVzYWMKKyAgc2hpZnQKKyAgZm9yIG1mCisgIGRvCisgICAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4KKyAgICBtZj1gZWNobyAiJG1mIiB8IHNlZCAtZSAncy86LiokLy8nYAorICAgICMgQ2hlY2sgd2hldGhlciB0aGlzIGlzIGFuIEF1dG9tYWtlIGdlbmVyYXRlZCBNYWtlZmlsZSBvciBub3QuCisgICAgIyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBNYWtlZmlsZS5pbicsIGJ1dAorICAgICMgc29tZSBwZW9wbGUgcmVuYW1lIHRoZW07IHNvIGluc3RlYWQgd2UgbG9vayBhdCB0aGUgZmlsZSBjb250ZW50LgorICAgICMgR3JlcCdpbmcgdGhlIGZpcnN0IGxpbmUgaXMgbm90IGVub3VnaDogc29tZSBwZW9wbGUgcG9zdC1wcm9jZXNzCisgICAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4KKyAgICAjIEdyZXAnaW5nIHRoZSB3aG9sZSBmaWxlIGlzIG5vdCBnb29kIGVpdGhlcjogQUlYIGdyZXAgaGFzIGEgbGluZQorICAgICMgbGltaXQgb2YgMjA0OCwgYnV0IGFsbCBzZWQncyB3ZSBrbm93IGhhdmUgdW5kZXJzdGFuZCBhdCBsZWFzdCA0MDAwLgorICAgIGlmIHNlZCAtbiAncyxeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlLiosWCxwJyAiJG1mIiB8IGdyZXAgWCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIGRpcnBhcnQ9YCRhc19kaXJuYW1lIC0tICIkbWYiIHx8CiskYXNfZXhwciBYIiRtZiIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkbWYiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJG1mIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRtZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRtZiIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKVteL10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wpLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgICAgZWxzZQorICAgICAgY29udGludWUKKyAgICBmaQorICAgICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBESVIsIGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlCisgICAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2UnLgorICAgIERFUERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAvL3AnIDwgIiRtZiJgCisgICAgdGVzdCAteiAiJERFUERJUiIgJiYgY29udGludWUKKyAgICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAiJG1mImAKKyAgICB0ZXN0IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUKKyAgICBhbV9fcXVvdGU9YHNlZCAtbiAncy9eYW1fX3F1b3RlID0gLy9wJyA8ICIkbWYiYAorICAgICMgV2hlbiB1c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0CisgICAgVT1gc2VkIC1uICdzL15VID0gLy9wJyA8ICIkbWYiYAorICAgICMgRmluZCBhbGwgZGVwZW5kZW5jeSBvdXRwdXQgZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZpbGVzIHdpdGgKKyAgICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBpcyB0aGUKKyAgICAjIHNpbXBsZXN0IGFwcHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElSKSB0byBpdHMgYWN0dWFsIHZhbHVlIGluIHRoZQorICAgICMgZXhwYW5zaW9uLgorICAgIGZvciBmaWxlIGluIGBzZWQgLW4gIgorICAgICAgcy9eJGFtX19pbmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJUikuKlwpJGFtX19xdW90ZSInJC9cMS9wJyA8IiRtZiIgfCBcCisJIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdzL1wkVS8nIiRVIicvZydgOyBkbworICAgICAgIyBNYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBleGlzdHMuCisgICAgICB0ZXN0IC1mICIkZGlycGFydC8kZmlsZSIgJiYgY29udGludWUKKyAgICAgIGZkaXI9YCRhc19kaXJuYW1lIC0tICIkZmlsZSIgfHwKKyRhc19leHByIFgiJGZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGZpbGUiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWCIkZmlsZSIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKVteL10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wpLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgICAgICBhc19kaXI9JGRpcnBhcnQvJGZkaXI7IGFzX2ZuX21rZGlyX3AKKyAgICAgICMgZWNobyAiY3JlYXRpbmcgJGRpcnBhcnQvJGZpbGUiCisgICAgICBlY2hvICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSIKKyAgICBkb25lCisgIGRvbmUKK30KKyA7OworCisgIGVzYWMKK2RvbmUgIyBmb3IgYWNfdGFnCisKKworYXNfZm5fZXhpdCAwCitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCisKK3Rlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorCisKKyMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KKyMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgorIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4KKyMgYnkgY29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVzIHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdG8gaXQ7IGl0cworIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwKKyMgZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKKyMgYXBwZW5kZWQgdG8gYnkgY29uZmlnLnN0YXR1cy4gIFdoZW4gY29taW5nIGJhY2sgdG8gY29uZmlndXJlLCB3ZQorIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4KK2lmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgorICBhY19jc19zdWNjZXNzPToKKyAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQorICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgorICAgIGFjX2NvbmZpZ19zdGF0dXNfYXJncz0iJGFjX2NvbmZpZ19zdGF0dXNfYXJncyAtLXF1aWV0IgorICBleGVjIDU+L2Rldi9udWxsCisgICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKKyAgZXhlYyA1Pj5jb25maWcubG9nCisgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgorICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0IDEKK2ZpCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30KK2ZpCisKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzAxMDkwCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmFjCkBAIC0wLDAgKzEsNzQ0IEBACisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCisKK0ZVTEwtUEFDS0FHRS1OQU1FPW5ldHBlcmYKK1ZFUlNJT049Mi43LjAKK0JVRy1SRVBPUlQtQUREUkVTUz1uZXRwZXJmLWZlZWRiYWNrQG5ldHBlcmYub3JnCisKK0FDX1BSRVJFUSgyLjU5KQorQUNfSU5JVChuZXRwZXJmLCAyLjcuMCkKKworIyBJbmhlcml0IGNvbXBpbGVyIGZsYWdzIGZyb20gdGhlIGVudmlyb25tZW50Li4uCitDRkxBR1M9IiR7Q0ZMQUdTOj19IgorQ1hYRkxBR1M9IiR7Q1hYRkxBR1M6PX0iCisKKyMgdXNlIHRoZSB0YXJnZXQgdmVyc2lvbiByYXRoZXIgdGhhbiBob3N0IC0gb25lIGRheSB3ZSBtYXkgd2FudCBjcm9zcy1jb21waWxlCitBQ19DQU5PTklDQUxfVEFSR0VUCitBQ19DT05GSUdfU1JDRElSKFtzcmMvaGlzdC5oXSkKK0FNX0lOSVRfQVVUT01BS0UoW2Rpc3QtemlwXSkKK0FNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCisjIEFDX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCisKK0FDX0NPTkZJR19MSUJPQkpfRElSKHNyYy9taXNzaW5nKQorCisjIG1ha2Ugc3VyZSB3ZSBidWlsZCBuZXRwZXJmX3ZlcnNpb24uaAordG91Y2ggICR7YWNfdG9wX3NyY2Rpcn1zcmMvbmV0cGVyZl92ZXJzaW9uLmguaW4KKworIyBDaGVja3MgZm9yIHByb2dyYW1zLgorQUNfUFJPR19DQworQUNfUFJPR19SQU5MSUIKKworQUNfQ19DT05TVAorCisjIENoZWNrcyBmb3IgbGlicmFyaWVzLgorQUNfSEFWRV9MSUJSQVJZKG0pCisKKyMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCitBQ19IRUFERVJfU1REQworQUNfSEVBREVSX1NZU19XQUlUCisKKyMgbGV0cyBrZWVwIHRoaXMgaW4gc29tZSBzZW1ibGVuY2Ugb2YgYWxwaGFiZXRpY2FsIG9yZGVyCitBQ19DSEVDS19IRUFERVJTKFthcnBhL2luZXQuaCBlbmRpYW4uaCBlcnJuby5oIGZjbnRsLmggaWZhZGRycy5oIGxpbWl0cy5oIGxpbnV4L3RjcC5oIGxpbnV4L3NvY2tldC5oIG1hbGxvYy5oIG5ldGRiLmggbmV0aW5ldC9pbi5oIG5ldGluZXQvc2N0cC5oIHNjaGVkLmggc2lnbmFsLmggc3RkbGliLmggc3RyaW5nLmggc3RyaW5ncy5oIHN5c2NhbGwuaCBzeXMvaW9jdGwuaCBzeXMvbW1hbi5oIHN5cy9wYXJhbS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdC5oIHN5cy90aW1lLmggc3lzL3dhaXQuaCBzeXMvaXBjLmggc3lzL3NvY2tpby5oIHN5cy9zeXNpbmZvLmggc3lzL3dhaXQuaCBzdGRsaWIuaCB1bmlzdGQuaCBuZXRpbmV0L2luX3N5c3RtLmggbmV0aW5ldC9pcC5oXSkKKworIyBTb21lIHBsYXRmb3JtcyByZXF1aXJlIHRoZXNlLiAgVGhlcmUgbWF5IGJlIGEgYmV0dGVyIHdheS4KK0FDX0hBVkVfTElCUkFSWShzb2NrZXQpCitpZiB0ZXN0ICIkYWNfY3ZfbGliX3NvY2tldF9tYWluIiA9IHllcyA7IHRoZW4KKyAgICBBQ19IQVZFX0xJQlJBUlkobnNsKQorICAgIEFDX0hBVkVfTElCUkFSWShzZW5kZmlsZSkKKyAgICBBQ19TWVNfTEFSR0VGSUxFCitmaQorCisjIHRoaXMgb25lIGlzIGZvciBUcnU2NCBhbmQgYmluZF90b19jcHVfaWQKK0FDX0hBVkVfTElCUkFSWShtYWNoKQorCisjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCitBQ19DX0NPTlNUCitBQ19UWVBFX09GRl9UCitBQ19UWVBFX1NJWkVfVAorIyBBQ19UWVBFX1NPQ0tMRU5fVAorCitPTERfVFlQRV9TT0NLTEVOX1QKKworIyBBQ19UWVBFX0lOX1BPUlRfVAorQUNfREVDTF9IX0VSUk5PCitBQ19TVFJVQ1RfU09DS0FERFJfU1RPUkFHRQorQUNfSEVBREVSX1RJTUUKK0FDX0hFQURFUl9TVERCT09MCitBQ19DSEVDS19TQV9MRU4oYWNfY3Zfc29ja2FkZHJfaGFzX3NhX2xlbikKKworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgorIyBBQ19GVU5DX0VSUk9SX0FUX0xJTkUKK0FDX0ZVTkNfRk9SSworIyBBQ19GVU5DX01BTExPQworQUNfRlVOQ19NTUFQCitBQ19GVU5DX1NFTEVDVF9BUkdUWVBFUworQUNfRlVOQ19TRVRQR1JQCitBQ19UWVBFX1NJR05BTAorIyBBQ19GVU5DX1NUQVQKKyMgcmVtb3ZlIHBzdGF0X2dldGR5bmFtaWMgKGF0IGxlYXN0IGZvciBub3cpIHNpbmNlIHdlIGRvbid0IGRvCisjIGFueXRoaW5nIGNvbmRpdGlvbmFsIHdpdGggdGhlIGNoZWNrIGFueXdheS4uLgorQUNfQ0hFQ0tfRlVOQ1MoW2FsYXJtIGJ6ZXJvIGRhZW1vbiBnZXRob3N0YnluYW1lIGdldGhydGltZSBnZXR0aW1lb2ZkYXkgaW5ldF9udG9hIG1lbXNldCBtZW1jcHkgbXVubWFwIHNlbGVjdCBzZXRzaWQgc29ja2V0IHNxcnQgc3RyY2FzZWNtcCBzdHJjaHIgc3Ryc3RyIHN0cnRvdWwgdW5hbWUgdG91cHBlcl0pCisKKyNBQ19DT05GSUdfU1VCRElSUyhzcmMvbWlzc2luZykKKworIyBkb2VzIHRoaXMgcGxhdGZvcm0gbmVlZCB0aGUgcmVwbGFjZW1lbnQgZ2V0YWRkcmluZm8KK0FDX0NIRUNLX0ZVTkNTKFtnZXRuYW1laW5mbyBnZXRhZGRyaW5mbyBpbmV0X250b3AgZ2V0aWZhZGRyc10pCisjIEFDX1JFUExBQ0VfRlVOQ1MoW2dldGFkZHJpbmZvXSkKKworCitpZiB0ZXN0ICIkYWNfY3ZfZnVuY19nZXRhZGRyaW5mbyRhY19jdl9mdW5jX2dldG5hbWVpbmZvIiAhPSB5ZXN5ZXMgOyB0aGVuCisgICBBQ19NU0dfTk9USUNFKFtSZXF1ZXN0aW5nIHJlcGxhY2VtZW50IGdldGFkZHJpbmZvL2dldG5hbWVpbmZvXSkKKyAgIEFDX0xJQk9CSihnZXRhZGRyaW5mbykKKyAgIEhBVkVfTUlTU0lORz15ZXMKK2ZpCitpZiB0ZXN0ICIkYWNfY3ZfZnVuY19pbmV0X250b3AiICE9IHllcyA7IHRoZW4KKyAgIEFDX01TR19OT1RJQ0UoW1JlcXVlc3RpbmcgcmVwbGFjZW1lbnQgaW5ldF9udG9wXSkKKyAgIEFDX0xJQk9CSihpbmV0X250b3ApCisgICBIQVZFX01JU1NJTkc9eWVzCitmaQorQU1fQ09ORElUSU9OQUwoTkVFRF9MSUJDT01QQVQsIHRlc3QgIiRIQVZFX01JU1NJTkciID0gInllcyIpCisKK0FDX0NIRUNLX0ZVTkNTKHNlbmRmaWxlKQorCitBQ19DSEVDS19GVU5DUyh1bmFtZSkKKworIyBjaGVjayBmb3IgdGhlIHZhcmlvdXMgQ1BVIGJpbmRpbmcgY2FsbHMKK0FDX0NIRUNLX0ZVTkNTKG1wY3RsIHByb2Nlc3Nvcl9iaW5kIHNjaGVkX3NldGFmZmluaXR5IGJpbmRfdG9fY3B1X2lkIGJpbmRwcm9jZXNzb3IpCisKKyMgc2VlIGlmIHdlIHNob3VsZCBiZSBlbmFibGluZyBoaXN0b2dyYW0gc3VwcG9ydAorCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBpbmNsdWRlIGhpc3RvZ3JhbSBzdXBwb3J0KQorCitBQ19BUkdfRU5BQkxFKGhpc3RvZ3JhbSwKKwlbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWhpc3RvZ3JhbV0sW2luY2x1ZGUgaW5kaXZpZHVhbCBvcCB0aW1pbmcsIG1heSBhZmZlY3QgcmVzdWx0XSkgXSkKKworY2FzZSAiJGVuYWJsZV9oaXN0b2dyYW0iIGluCisJeWVzKQorCQl1c2VfaGlzdG9ncmFtPXRydWUKKwkJOzsKKwlubykKKwkJdXNlX2hpc3RvZ3JhbT1mYWxzZQorCQk7OworCScnKQorCQkjIHdoYXRldmVyCisJCXVzZV9oaXN0b2dyYW09ZmFsc2UKKwkJOzsKKwkqKQorCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWhpc3RvZ3JhbSB0YWtlcyB5ZXMgb3Igbm9dKQorCQk7OworZXNhYworCitpZiAkdXNlX2hpc3RvZ3JhbQordGhlbgorCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitpZiAkdXNlX2hpc3RvZ3JhbQordGhlbgorCUFDX0RFRklORShbV0FOVF9ISVNUT0dSQU1dLCxbRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgaGlzdG9ncmFtIHN1cHBvcnQuIE1heSBhZmZlY3QgcmVzdWx0cy5dKQorZmkKKyMgc2VlIGlmIHdlIHNob3VsZCBiZSBlbmFibGluZyBoaXN0b2dyYW0gc3VwcG9ydAorCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBpbmNsdWRlIGRpcnR5IHN1cHBvcnQpCisKK0FDX0FSR19FTkFCTEUoZGlydHksCisJW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1kaXJ0eV0sW3dyaXRlIHRvIGJ1ZmZlcnMgZWFjaCB0aW1lLCBtYXkgYWZmZWN0IHJlc3VsdF0pIF0pCisKK2Nhc2UgIiRlbmFibGVfZGlydHkiIGluCisJeWVzKQorCQl1c2VfZGlydHk9dHJ1ZQorCQk7OworCW5vKQorCQl1c2VfZGlydHk9ZmFsc2UKKwkJOzsKKwknJykKKwkJIyB3aGF0ZXZlcgorCQl1c2VfZGlydHk9ZmFsc2UKKwkJOzsKKwkqKQorCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWRpcnR5IHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2VfZGlydHkKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKHllcykKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKG5vKQorZmkKKworaWYgJHVzZV9kaXJ0eQordGhlbgorCUFDX0RFRklORShbRElSVFldLCxbRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgZGlydHkgYnVmZmVyIHN1cHBvcnQuIE1heSBhZmZlY3QgcmVzdWx0cy5dKQorZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGVuYWJsaW5nIGRlbW8gc3VwcG9ydAorCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBpbmNsdWRlIGRlbW8gc3VwcG9ydCkKKworQUNfQVJHX0VOQUJMRShkZW1vLAorCVtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZGVtb10sW2VtaXQgaW50ZXJpbSByZXN1bHRzIGR1cmluZyB0aGUgcnVuLiBNYXkgYWZmZWN0IHJlc3VsdHMuXSldKQorCitjYXNlICIkZW5hYmxlX2RlbW8iIGluCisJeWVzKQorCQl1c2VfZGVtbz10cnVlCisJCTs7CisJbm8pCisJCXVzZV9kZW1vPWZhbHNlCisJCTs7CisJJycpCisJCSMgd2hhdGV2ZXIKKwkJdXNlX2RlbW89ZmFsc2UKKwkJOzsKKwkqKQorCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWRlbW8gdGFrZXMgeWVzIG9yIG5vXSkKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9kZW1vCit0aGVuCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK2lmICR1c2VfZGVtbwordGhlbgorCUFDX0RFRklORShbV0FOVF9ERU1PXSwsW0RlZmluZSB0byBvbmUgdG8gZW5hYmxlIGRlbW8gc3VwcG9ydC4gTWF5IGFmZmVjdCByZXN1bHRzLl0pCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBBRl9VTklYIHRlc3RzCisKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGluY2x1ZGUgVW5peC1kb21haW4gc29ja2V0IHRlc3RzKQorCitBQ19BUkdfRU5BQkxFKHVuaXhkb21haW4sCisJW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS11bml4ZG9tYWluXSxbaW5jbHVkZSBVbml4IERvbWFpbiBzb2NrZXQgdGVzdHNdKV0pCisKK2Nhc2UgIiRlbmFibGVfdW5peGRvbWFpbiIgaW4KKyAgICAgeWVzKQorCQl1c2VfdW5peGRvbWFpbj10cnVlCisJCTs7CisgICAgIG5vKQkKKwkJdXNlX3VuaXhkb21haW49ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV91bml4ZG9tYWluPWZhbHNlCisJCTs7CisgICAgICopCisJCUFDX01TR19FUlJPUihbLS1lbmFibGUtdW5peGRvbWFpbiB0YWtlcyB5ZXMgb3Igbm9dKQorCQk7OworZXNhYworCitpZiAkdXNlX3VuaXhkb21haW4KK3RoZW4KKwlBQ19NU0dfUkVTVUxUKHllcykKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKG5vKQorZmkKKworaWYgJHVzZV91bml4ZG9tYWluCit0aGVuCisJQUNfREVGSU5FKFtXQU5UX1VOSVhdLCxbRGVmaW5lIHRvIG9uZSB0byBpbmNsdWRlIFVuaXggRG9tYWluIHNvY2tldCB0ZXN0cy5dKQorZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGluY2x1ZGluZyB0aGUgRExQSSB0ZXN0cworCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBpbmNsdWRlIERMUEkgdGVzdHMpCisKK0FDX0FSR19FTkFCTEUoZGxwaSwKKwlbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWRscGldLFtpbmNsdWRlIERMUEkgKGxpbmstbGF5ZXIpIHRlc3RzXSldKQorCitjYXNlICIkZW5hYmxlX2RscGkiIGluCisgICAgIHllcykKKwkJdXNlX2RscGk9dHJ1ZQorCQk7OworICAgICBubykJCisJCXVzZV9kbHBpPWZhbHNlCisJCTs7CisgICAgICcnKQorCQl1c2VfZGxwaT1mYWxzZQorCQk7OworICAgICAqKQorCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWRscGkgdGFrZXMgeWVzIG9yIG5vXSkKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9kbHBpCit0aGVuCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK2lmICR1c2VfZGxwaQordGhlbgorCUFDX0RFRklORShbV0FOVF9ETFBJXSwsW0RlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBETFBJIHRlc3RzLl0pCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBEQ0NQIHRlc3RzCisKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGluY2x1ZGUgRENDUCB0ZXN0cykKKworQUNfQVJHX0VOQUJMRShkY2NwLAorCVtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZGNjcF0sW2luY2x1ZGUgRENDUCB0ZXN0c10pXSkKKworY2FzZSAiJGVuYWJsZV9kY2NwIiBpbgorICAgICB5ZXMpCisJCXVzZV9kY2NwPXRydWUKKwkJOzsKKyAgICAgbm8pCQorCQl1c2VfZGNjcD1mYWxzZQorCQk7OworICAgICAnJykKKwkJdXNlX2RjY3A9ZmFsc2UKKwkJOzsKKyAgICAgKikKKwkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1kY2NwIHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2VfZGNjcAordGhlbgorCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitpZiAkdXNlX2RjY3AKK3RoZW4KKwlBQ19ERUZJTkUoW1dBTlRfRENDUF0sLFtEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgRENDUCB0ZXN0cy5dKQorZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGluY2x1ZGluZyB0aGUgT01OSSB0ZXN0cworCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBpbmNsdWRlIE9NTkkgdGVzdHMpCisKK0FDX0FSR19FTkFCTEUob21uaSwKKwlbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW9tbmldLFtpbmNsdWRlIE9NTkkgdGVzdHNdKV0pCisKK2Nhc2UgIiRlbmFibGVfb21uaSIgaW4KKyAgICAgeWVzKQorCQl1c2Vfb21uaT10cnVlCisJCTs7CisgICAgIG5vKQkKKwkJdXNlX29tbmk9ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV9vbW5pPXRydWUKKwkJOzsKKyAgICAgKikKKwkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1vbW5pIHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2Vfb21uaQordGhlbgorCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitpZiAkdXNlX29tbmkKK3RoZW4KKwlBQ19ERUZJTkUoW1dBTlRfT01OSV0sLFtEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgT01OSSB0ZXN0cy5dKQorCUFDX0RFRklORShbV0FOVF9NSUdSQVRJT05dLCxbRGVmaW5lIHRvIG9uZSB0byBtaWdyYXRlIGNsYXNzaWMgdG8gT01OSSB0ZXN0cy5dKQorZmkKKworCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBYVEkgdGVzdHMKKworQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgdG8gaW5jbHVkZSBYVEkgdGVzdHMpCisKK0FDX0FSR19FTkFCTEUoeHRpLAorCVtBU19IRUxQX1NUUklORyhbLS1lbmFibGUteHRpXSxbaW5jbHVkZSBYVEkgc29ja2V0IHRlc3RzXSldKQorCitjYXNlICIkZW5hYmxlX3h0aSIgaW4KKyAgICAgeWVzKQorCQl1c2VfeHRpPXRydWUKKwkJOzsKKyAgICAgbm8pCQorCQl1c2VfeHRpPWZhbHNlCisJCTs7CisgICAgICcnKQorCQl1c2VfeHRpPWZhbHNlCisJCTs7CisgICAgICopCisJCUFDX01TR19FUlJPUihbLS1lbmFibGUteHRpIHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2VfeHRpCit0aGVuCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK2lmICR1c2VfeHRpCit0aGVuCisJQUNfREVGSU5FKFtXQU5UX1hUSV0sLFtEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgWFRJIHRlc3RzLl0pCitmaQorCisjIHNlZSBpZiB3ZSBzaG91bGQgYmUgaW5jbHVkaW5nIHRoZSBTRFAgdGVzdHMKKworQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgdG8gaW5jbHVkZSBTRFAgdGVzdHMpCisKK0FDX0FSR19FTkFCTEUoc2RwLAorCVtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtc2RwXSxbaW5jbHVkZSBTRFAgc29ja2V0IHRlc3RzXSldKQorCitjYXNlICIkZW5hYmxlX3NkcCIgaW4KKyAgICAgeWVzKQorCQkjIHByb2JhYmx5IG5lZWQgdG8gYmUgYSBiaXQgbW9yZSBzb3BoaXN0aWNhdGVkIGhlcmUKKwkJQUNfQ0hFQ0tfTElCKHNkcCx0X29wZW4pCisJCXVzZV9zZHA9dHJ1ZQorCQk7OworICAgICBubykJCisJCXVzZV9zZHA9ZmFsc2UKKwkJOzsKKyAgICAgJycpCisJCXVzZV9zZHA9ZmFsc2UKKwkJOzsKKyAgICAgKikKKwkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1zZHAgdGFrZXMgeWVzIG9yIG5vXSkKKwkJOzsKK2VzYWMKKworaWYgJHVzZV9zZHAKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKHllcykKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKG5vKQorZmkKKworaWYgJHVzZV9zZHAKK3RoZW4KKwlBQ19ERUZJTkUoW1dBTlRfU0RQXSwsW0RlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBTRFAgdGVzdHMuXSkKK2ZpCisKKyMgc2VlIGlmIHdlIHNob3VsZCBiZSBpbmNsdWRpbmcgdGhlIElDU0MtRVhTIHRlc3RzCisKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGluY2x1ZGUgSUNTQy1FWFMgdGVzdHMpCisKK0FDX0FSR19FTkFCTEUoZXhzLAorCVtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZXhzXSxbaW5jbHVkZSBJQ1NDIGFzeW5jIHNvY2tldHMgdGVzdHNdKV0pCisKK2Nhc2UgIiRlbmFibGVfZXhzIiBpbgorICAgICB5ZXMpCisJCXVzZV9leHM9dHJ1ZQorCQlBQ19DSEVDS19IRUFERVIoc3lzL2V4cy5oLCxbdXNlX2V4cz1mYWxzZV0pCisJCUFDX0NIRUNLX0xJQihleHMsZXhzX2luaXQsLFt1c2VfZXhzPWZhbHNlXSkKKwkJOzsKKyAgICAgbm8pCQorCQl1c2VfZXhzPWZhbHNlCisJCTs7CisgICAgICcnKQorCQl1c2VfZXhzPWZhbHNlCisJCTs7CisgICAgICopCisJCUFDX01TR19FUlJPUihbLS1lbmFibGUtZXhzIHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2VfZXhzCit0aGVuCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK2lmICR1c2VfZXhzCit0aGVuCisJQUNfREVGSU5FKFtIQVZFX0lDU0NfRVhTXSwsW0RlZmluZSB0byBvbmUgdG8gaW5jbHVkZSBJQ1NDLUVYUyB0ZXN0cy5dKQorZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGVuYWJsaW5nIFNDVFAgc3VwcG9ydAorCisKK0FDX0FSR19FTkFCTEUoc2N0cCwKKwlbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXNjdHBdLFtpbmNsdWRlIHRlc3RzIHRvIG1lYXN1cmUgU0NUUCBwZXJmb3JtYW5jZSBdKV0pCisKK2Nhc2UgIiRlbmFibGVfc2N0cCIgaW4KKwl5ZXMpCisJCXVzZV9zY3RwPXRydWUKKwkJQUNfQ0hFQ0tfSEVBREVSUyhuZXRpbmV0L3NjdHAuaCwsdXNlX3NjdHA9ZmFsc2UsCitbWworI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KK11dKQorCQljYXNlICIkaG9zdCIgaW4KKwkJKi0qLWZyZWVic2RbNzhdLiopCisJCQkjIEZyZWVCU0QgNy54IGFuZCBsYXRlciBTQ1RQIHN1cHBvcnQgZG9lc24ndCBuZWVkIC1sc2N0cC4KKwkJCTs7CisJCSopCisJCQlBQ19IQVZFX0xJQlJBUlkoc2N0cCwsdXNlX3NjdHA9ZmFsc2UpCisJCQk7OworCQllc2FjCisJCUFDX0NIRUNLX01FTUJFUihzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUuc2N0cF9hZGFwdGF0aW9uX2xheWVyX2V2ZW50LAorCQkJCSwgLCBbI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPl0pCisJCWlmIHRlc3QgIiRhY19jdl9tZW1iZXJfc3RydWN0X3NjdHBfZXZlbnRfc3Vic2NyaWJlX3NjdHBfYWRhcHRhdGlvbl9sYXllcl9ldmVudCIgPSAieWVzIjsgdGhlbgorCQkJQUNfREVGSU5FKFtIQVZFX1NDVFBfQURBUFRBVElPTl9MQVlFUl9FVkVOVF0sIDEsCisJCQkJICBbRGVmaW5lIHRvIDEgaWYgYHN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmliZScgaGFzIGEgYHNjdHBfYWRhcHRhdGlvbl9sYXllcl9ldmVudCcgbWVtYmVyXSkKKwkJZmkKKwkJOzsKKwlubykKKwkJdXNlX3NjdHA9ZmFsc2UKKwkJOzsKKwknJykKKwkJIyB3aGF0ZXZlcgorCQl1c2Vfc2N0cD1mYWxzZQorCQk7OworCSopCisJCUFDX01TR19FUlJPUihbLS1lbmFibGUtc2N0cCB0YWtlcyB5ZXMgb3Igbm9dKQorCQk7OworZXNhYworCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBpbmNsdWRlIFNDVFAgdGVzdHMpCisKK2lmICR1c2Vfc2N0cAordGhlbgorCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitpZiAkdXNlX3NjdHAKK3RoZW4KKwlBQ19ERUZJTkUoW1dBTlRfU0NUUF0sLFtEZWZpbmUgdG8gb25lIHRvIGluY2x1ZGUgU0NUUCB0ZXN0cy5dKQorZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGVuYWJsaW5nIHBhY2VkIHNlbmRzCisKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBpbmNsdWRlIHBhY2VkIHNlbmQgKGludGVydmFscykgc3VwcG9ydF0pCisKK0FDX0FSR19FTkFCTEUoaW50ZXJ2YWxzLAorCVtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaW50ZXJ2YWxzXSxbaW5jbHVkZSBhYmlsaXR5IHRvIHBhY2Ugb3BlcmF0aW9ucywgbWF5IGFmZmVjdCByZXN1bHRdKV0pCisKK2Nhc2UgIiRlbmFibGVfaW50ZXJ2YWxzIiBpbgorCXllcykKKwkJdXNlX2ludGVydmFscz10cnVlCisJCTs7CisJbm8pCisJCXVzZV9pbnRlcnZhbHM9ZmFsc2UKKwkJOzsKKwknJykKKwkJdXNlX2ludGVydmFscz1mYWxzZQorCQk7OworCSopCisJCUFDX01TR19FUlJPUihbLS1lbmFibGUtaW50ZXJ2YWxzIHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2VfaW50ZXJ2YWxzCit0aGVuCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK2lmICR1c2VfaW50ZXJ2YWxzCit0aGVuCisJQUNfREVGSU5FKFtXQU5UX0lOVEVSVkFMU10sLFtEZWZpbmUgdG8gb25lIHRvIGVuYWJsZSBwYWNlZCBvcGVyYXRpb24gc3VwcG9ydC4gTWF5IGFmZmVjdCByZXN1bHRzLl0pCitmaQorCisjIHNlZSBpZiBwYWNlZCBzZW5kcyBzaG91bGQgd2FpdCBhbmQgc3BpbgorCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgcGFjZWQgc2VuZHMgc2hvdWxkIHNwaW5dKQorCitBQ19BUkdfRU5BQkxFKHNwaW4sCisJW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zcGluXSxbcGFjZWQgb3BlcmF0aW9ucyAoLS1lbmFibGUtaW50ZXJ2YWxzKSBzaG91bGQgc2l0IGFuZCBzcGluIC0gV0lMTCBhZmZlY3QgcmVzdWx0XSldKQorCitjYXNlICIkZW5hYmxlX3NwaW4iIGluCisJeWVzKQorCQl1c2Vfc3Bpbj10cnVlCisJCTs7CisJbm8pCisJCXVzZV9zcGluPWZhbHNlCisJCTs7CisJJycpCisJCXVzZV9zcGluPWZhbHNlCisJCTs7CisJKikKKwkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1zcGluIHRha2VzIHllcyBvciBub10pCisJCTs7Citlc2FjCisKK2lmICR1c2Vfc3BpbgordGhlbgorCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitpZiAkdXNlX3NwaW4KK3RoZW4KKwlBQ19ERUZJTkUoW1dBTlRfSU5URVJWQUxTXSwsW0RlZmluZSB0byBvbmUgdG8gZW5hYmxlIHBhY2VkIG9wZXJhdGlvbiBzdXBwb3J0LiBNYXkgYWZmZWN0IHJlc3VsdHMuXSkKKwlBQ19ERUZJTkUoW1dBTlRfU1BJTl0sLFtEZWZpbmUgdG8gb25lIHRvIHNwaW4gd2FpdGluZyBvbiBwYWNlZCBvcGVyYXRpb24uIFdJTEwgQUZGRUZDVCBDUFUgVVRJTElaQVRJT05dKQorZmkKKworIyBzZWUgaWYgd2Ugc2hvdWxkIGJlIGVuYWJsaW5nIGluaXRpYWwgcmVxdWVzdCBidXJzdHMKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGluY2x1ZGUgaW5pdGlhbCBidXJzdCBzdXBwb3J0IGluIF9SUiB0ZXN0c10pCisKK0FDX0FSR19FTkFCTEUoYnVyc3QsCisJW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1idXJzdF0sW2luY2x1ZGUgaW50aWFsIHJlcXVlc3QgYnVyc3QgYWJpbGl0eSBpbiBfUlIgdGVzdHMsIG1heSBhZmZlY3QgcmVzdWx0XSldKQorCitjYXNlICIkZW5hYmxlX2J1cnN0IiBpbgorCXllcykKKwkJdXNlX2J1cnN0PXRydWUKKwkJOzsKKwlubykKKwkJdXNlX2J1cnN0PWZhbHNlCisJCTs7CisJJycpCisJCXVzZV9idXJzdD10cnVlCisJCTs7CisJKikKKwkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1idXJzdCB0YWtlcyB5ZXMgb3Igbm9dKQorCQk7OworZXNhYworCitpZiAkdXNlX2J1cnN0Cit0aGVuCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK2lmICR1c2VfYnVyc3QKK3RoZW4KKwlBQ19ERUZJTkUoW1dBTlRfRklSU1RfQlVSU1RdLCxbRGVmaW5lIHRvIG9uZSB0byBlbmFibGUgaW5pdGlhbCBfUlIgYnVyc3Qgc3VwcG9ydC4gTWF5IGFmZmVjdCByZXN1bHRzLl0pCitmaQorCisjIHRpbWUgdG8gc2VlIGFib3V0IENQVSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMKKworQUNfTVNHX0NIRUNLSU5HKFt3aGljaCBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnQgdHlwZSB0byB1c2VdKQorCitBQ19BUkdfRU5BQkxFKGNwdXV0aWwsCisJW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jcHV1dGlsXSxbaW5jbHVkZSBjb2RlIHRvIG1lYXN1cmUgQ1BVIHV0aWxpemF0aW9uIHVzaW5nIHNwZWNpZmllZCBtZWNoYW5pc21dKV0pCisKK05FVENQVV9TT1VSQ0U9IiRlbmFibGVfY3B1dXRpbCIKK2Nhc2UgIiRlbmFibGVfY3B1dXRpbCIgaW4KKwlwc3RhdCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCQlBQ19ERUZJTkUoW1VTRV9QU1RBVF0sLFtVc2UgSFAtVVgncyBwc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC5dKQorCQk7OworCXBzdGF0bmV3KQorCQl1c2VfY3B1dXRpbD10cnVlCisJCUFDX0RFRklORShbVVNFX1BTVEFUXSwsW1VzZSBIUC1VWCdzIHBzdGF0IGludGVyZmFjZSB0byBtZWFzdXJlIENQVSB1dGlsLl0pCisJCTs7CisgICAgICAgIHBlcmZzdGF0KQorICAgICAgICAgICAgICAgIHVzZV9jcHV1dGlsPXRydWUKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW1VTRV9QRVJGU1RBVF0sLFtVc2UgQUlYJ3MgcGVyZnN0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuXSkKKwkJQUNfSEFWRV9MSUJSQVJZKHBlcmZzdGF0KQorICAgICAgICAgICAgICAgIDs7CisKKwlsb29wZXIpCisJCXVzZV9jcHV1dGlsPXRydWUKKwkJQUNfREVGSU5FKFtVU0VfTE9PUEVSXSwsW1VzZSBsb29wZXIvc29ha2VyIHByb2Nlc3NlcyB0byBtZWFzdXJlIENQVSB1dGlsLl0pCisJCTs7CQkKKwlwcm9jc3RhdCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCQlBQ19ERUZJTkUoW1VTRV9QUk9DX1NUQVRdLCxbVXNlIExpbnV4J3MgcHJvY3N0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuXSkKKwkJOzsKKwlrc3RhdCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCQlBQ19ERUZJTkUoW1VTRV9LU1RBVF0sLFtVc2UgU29sYXJpcydzIGtzdGF0IGludGVyZmFjZSB0byBtZWFzdXJlIENQVSB1dGlsLl0pCisJCUFDX0hBVkVfTElCUkFSWShrc3RhdCkKKwkJOzsKKwlrc3RhdDEwKQorCQl1c2VfY3B1dXRpbD10cnVlCisJCUFDX0RFRklORShbVVNFX0tTVEFUXSwsW1VzZSBTb2xhcmlzJ3Mga3N0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuXSkKKwkJQUNfSEFWRV9MSUJSQVJZKGtzdGF0KQorCQk7OworCW9zeCkKKwkJdXNlX2NwdXV0aWw9dHJ1ZQorCQlBQ19ERUZJTkUoW1VTRV9PU1hdLCxbVXNlIE1hY09TIFgncyBob3N0X2luZm8gaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuXSkKKwkJOzsKKwknJykKKyMgaWE2NC1ocC1ocHV4MTEuMjMKKyMgaTM4Ni1wYy1zb2xhcmlzMi4xMAorIyBndWVzcyBpdCBhdXRvbWFnaWNhbGx5IGluIGEgbmljZSBiaWcgY2FzZSBzdGF0ZW1lbnQKKwkJY2FzZSAkdGFyZ2V0IGluCisJCSAgICAgKi0qLWxpbnV4KikKKwkJCXVzZV9jcHV1dGlsPXRydWUKKwkJCUFDX0RFRklORShbVVNFX1BST0NfU1RBVF0sLFtVc2UgTGludXgncyBwcm9jc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC5dKQorCQkJZW5hYmxlX2NwdXV0aWw9InByb2NzdGF0IC0gYXV0byIKKwkJCU5FVENQVV9TT1VSQ0U9InByb2NzdGF0IgorCQkJOzsKKwkJICAgICAqLSotaHB1eDExLjIzIHwgKi0qLWhwdXgxMS4zMSkKKwkJCXVzZV9jcHV1dGlsPXRydWUKKwkJCUFDX0RFRklORShbVVNFX1BTVEFUXSwsW1VzZSBIUC1VWCdzIHBzdGF0IGludGVyZmFjZSB0byBtZWFzdXJlIENQVSB1dGlsLl0pCisJCQllbmFibGVfY3B1dXRpbD0icHN0YXRuZXcgLSBhdXRvIgorCQkJTkVUQ1BVX1NPVVJDRT0icHN0YXRuZXciCisJCQk7OworCQkgICAgICotKi1ocHV4MTEqIHwgKi0qLWhwdXgxMCopCisJCQl1c2VfY3B1dXRpbD10cnVlCisJCQlBQ19ERUZJTkUoW1VTRV9QU1RBVF0sLFtVc2UgSFAtVVgncyBwc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC5dKQorCQkJZW5hYmxlX2NwdXV0aWw9InBzdGF0IC0gYXV0byIKKwkJCU5FVENQVV9TT1VSQ0U9InBzdGF0IgorCQkJOzsKKwkJICAgICAqLSotYWl4NS4qIHwgKi0qLWFpeDYuKikKKwkJCXVzZV9wdXV0aWw9dHJ1ZQorCQkJQUNfREVGSU5FKFtVU0VfUEVSRlNUQVRdLCxbVXNlIEFJWCdzIHBlcmZzdGF0IGludGVyZmFjZSB0byBtZWFzdXJlIENQVSB1dGlsLl0pCisJCQlBQ19IQVZFX0xJQlJBUlkocGVyZnN0YXQpCisJCQllbmFibGVfY3B1dXRpbD0icGVyZnN0YXQgLSBhdXRvIgorCQkJTkVUQ1BVX1NPVVJDRT0icGVyZnN0YXQiCisJCQk7OworCQkgICAgICotKi1zb2xhcmlzMi4xKikKKwkJCXVzZV9jcHV1dGlsPXRydWUKKwkJCUFDX0RFRklORShbVVNFX0tTVEFUXSwsW1VzZSBTb2xhcmlzJ3Mga3N0YXQgaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuXSkKKwkJCUFDX0hBVkVfTElCUkFSWShrc3RhdCkKKwkJCWVuYWJsZV9jcHV1dGlsPSJrc3RhdDEwIC0gYXV0byIKKwkJCU5FVENQVV9TT1VSQ0U9ImtzdGF0MTAiCisJCQk7OworCQkgICAgICotKi1zb2xhcmlzMi4qKQorCQkJdXNlX2NwdXV0aWw9dHJ1ZQorCQkJQUNfREVGSU5FKFtVU0VfS1NUQVRdLCxbVXNlIFNvbGFyaXMncyBrc3RhdCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC5dKQorCQkJQUNfSEFWRV9MSUJSQVJZKGtzdGF0KQorCQkJZW5hYmxlX2NwdXV0aWw9ImtzdGF0IC0gYXV0byIKKwkJCU5FVENQVV9TT1VSQ0U9ImtzdGF0IgorCQkJOzsKKyAgICAgICAgICAgICAgICAgICAgICotKi1mcmVlYnNkW1s0LThdXS4qIHwgKi0qLW5ldGJzZFtbMS05XV0uKiApCisJCQl1c2VfY3B1dXRpbD10cnVlCisJCQlBQ19ERUZJTkUoW1VTRV9TWVNDVExdLCxbVXNlIE11bWJsZUJTRCdzIHN5c2N0bCBpbnRlcmZhY2UgdG8gbWVhc3VyZSBDUFUgdXRpbC5dKQorCQkJZW5hYmxlX2NwdXV0aWw9InN5c2N0bCAtIGF1dG8iCisJCQlORVRDUFVfU09VUkNFPSJzeXNjdGwiCisJCQk7OworCQkgICAgKi0qLWRhcndpbiopCisJCQl1c2VfY3B1dXRpbD10cnVlCisJCQlBQ19ERUZJTkUoW1VTRV9PU1hdLCxbVXNlIE1hY09TIFgncyBob3N0X2luZm8gaW50ZXJmYWNlIHRvIG1lYXN1cmUgQ1BVIHV0aWwuXSkKKwkJCWVuYWJsZV9jcHV1dGlsPSJvc3ggLSBhdXRvIgorCQkJTkVUQ1BVX1NPVVJDRT0ib3N4IgorCQkJOzsKKwkJICAgICAqKQorCQkJdXNlX2NwdXV0aWw9ZmFsc2UKKwkJCU5FVENQVV9TT1VSQ0U9Im5vbmUiCisJCQllbmFibGVfY3B1dXRpbD0ibm9uZS4gQ29uc2lkZXIgdGVhY2hpbmcgY29uZmlndXJlIGFib3V0IHlvdXIgcGxhdGZvcm0uIgorCQkJOzsKKwkJZXNhYworCQk7OworCW5vbmUpCisJCXVzZV9jcHV1dGlsPWZhbHNlCisJCTs7CisJKikKKwkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1jcHV1dGlsIHRha2VzIGtzdGF0LCBrc3RhdDEwLCBsb29wZXIsIG9zeCwgcGVyZnN0YXQsIHByb2NzdGF0LCBwc3RhdCwgcHN0YXRuZXcsIHN5c2N0bCBvciBub25lXSkKKwkJOzsKK2VzYWMKKworCUFDX01TR19SRVNVTFQoIiRlbmFibGVfY3B1dXRpbCIpCisKK0FDX1NVQlNUKE5FVENQVV9TT1VSQ0UpCisKKworIyBub3cgc3BpdCBpdCBhbGwgb3V0CitBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlCisgICAgICAgICAgICAgICAgIHNyYy9uZXRwZXJmX3ZlcnNpb24uaAorICAgICAgICAgICAgICAgICBzcmMvTWFrZWZpbGUKKwkJIHNyYy9taXNzaW5nL01ha2VmaWxlCisJCSBzcmMvbWlzc2luZy9tNC9NYWtlZmlsZQorCQkgZG9jL01ha2VmaWxlCisJCSBkb2MvZXhhbXBsZXMvTWFrZWZpbGUKKyAgICAgICAgICAgICAgICAgbmV0cGVyZi5zcGVjXSkKKworQUNfT1VUUFVUCmRpZmYgLS1naXQgYS9kZXBjb21wIGIvZGVwY29tcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZGI1ZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvZGVwY29tcApAQCAtMCwwICsxLDQ3OSBAQAorIyEgL2Jpbi9zaAorCisjIGRlcGNvbXAgLSBjb21waWxlIGEgcHJvZ3JhbSBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcyBhcyBzaWRlLWVmZmVjdHMKKyMgQ29weXJpZ2h0IDE5OTksIDIwMDAsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorIyAwMjExMS0xMzA3LCBVU0EuCisKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbGV4YW5kcmUgT2xpdmEgPG9saXZhQGRjYy51bmljYW1wLmJyPi4KKworaWYgdGVzdCAteiAiJGRlcG1vZGUiIHx8IHRlc3QgLXogIiRzb3VyY2UiIHx8IHRlc3QgLXogIiRvYmplY3QiOyB0aGVuCisgIGVjaG8gImRlcGNvbXA6IFZhcmlhYmxlcyBzb3VyY2UsIG9iamVjdCBhbmQgZGVwbW9kZSBtdXN0IGJlIHNldCIgMT4mMgorICBleGl0IDEKK2ZpCisjIGBsaWJ0b29sJyBjYW4gYWxzbyBiZSBzZXQgdG8gYHllcycgb3IgYG5vJy4KKworaWYgdGVzdCAteiAiJGRlcGZpbGUiOyB0aGVuCisgICBiYXNlPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAncyxeLiovLCwnIC1lICdzLFwuXChbXi5dKlwpJCwuUFwxLCdgCisgICBkaXI9YGVjaG8gIiRvYmplY3QiIHwgc2VkICdzLC8uKiQsLywnYAorICAgaWYgdGVzdCAiJGRpciIgPSAiJG9iamVjdCI7IHRoZW4KKyAgICAgIGRpcj0KKyAgIGZpCisgICAjIEZJWE1FOiBzaG91bGQgYmUgX2RlcHMgb24gRE9TLgorICAgZGVwZmlsZT0iJGRpci5kZXBzLyRiYXNlIgorZmkKKwordG1wZGVwZmlsZT0ke3RtcGRlcGZpbGUtYGVjaG8gIiRkZXBmaWxlIiB8IHNlZCAncy9cLlwoW14uXSpcKSQvLlRcMS8nYH0KKworcm0gLWYgIiR0bXBkZXBmaWxlIgorCisjIFNvbWUgbW9kZXMgd29yayBqdXN0IGxpa2Ugb3RoZXIgbW9kZXMsIGJ1dCB1c2UgZGlmZmVyZW50IGZsYWdzLiAgV2UKKyMgcGFyYW1ldGVyaXplIGhlcmUsIGJ1dCBzdGlsbCBsaXN0IHRoZSBtb2RlcyBpbiB0aGUgYmlnIGNhc2UgYmVsb3csCisjIHRvIG1ha2UgZGVwZW5kLm00IGVhc2llciB0byB3cml0ZS4gIE5vdGUgdGhhdCB3ZSAqY2Fubm90KiB1c2UgYSBjYXNlCisjIGhlcmUsIGJlY2F1c2UgdGhpcyBmaWxlIGNhbiBvbmx5IGNvbnRhaW4gb25lIGNhc2Ugc3RhdGVtZW50LgoraWYgdGVzdCAiJGRlcG1vZGUiID0gaHA7IHRoZW4KKyAgIyBIUCBjb21waWxlciB1c2VzIC1NIGFuZCBubyBleHRyYSBhcmcuCisgIGdjY2ZsYWc9LU0KKyAgZGVwbW9kZT1nY2MKK2ZpCisKK2lmIHRlc3QgIiRkZXBtb2RlIiA9IGRhc2hYbXN0ZG91dDsgdGhlbgorICAgIyBUaGlzIGlzIGp1c3QgbGlrZSBkYXNobXN0ZG91dCB3aXRoIGEgZGlmZmVyZW50IGFyZ3VtZW50LgorICAgZGFzaG1mbGFnPS14TQorICAgZGVwbW9kZT1kYXNobXN0ZG91dAorZmkKKworY2FzZSAiJGRlcG1vZGUiIGluCitnY2MzKQorIyMgZ2NjIDMgaW1wbGVtZW50cyBkZXBlbmRlbmN5IHRyYWNraW5nIHRoYXQgZG9lcyBleGFjdGx5IHdoYXQKKyMjIHdlIHdhbnQuICBZYXkhICBOb3RlOiBmb3Igc29tZSByZWFzb24gbGlidG9vbCAxLjQgZG9lc24ndCBsaWtlCisjIyBpdCBpZiAtTUQgLU1QIGNvbWVzIGFmdGVyIHRoZSAtTUYgc3R1ZmYuICBIbW0uCisgICIkQCIgLU1UICIkb2JqZWN0IiAtTUQgLU1QIC1NRiAiJHRtcGRlcGZpbGUiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBtdiAiJHRtcGRlcGZpbGUiICIkZGVwZmlsZSIKKyAgOzsKKworZ2NjKQorIyMgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBnZXQgZGVwZW5kZW5jeSBvdXRwdXQgZnJvbSBnY2MuICBIZXJlJ3MKKyMjIHdoeSB3ZSBwaWNrIHRoaXMgcmF0aGVyIG9ic2N1cmUgbWV0aG9kOgorIyMgLSBEb24ndCB3YW50IHRvIHVzZSAtTUQgYmVjYXVzZSB3ZSdkIGxpa2UgdGhlIGRlcGVuZGVuY2llcyB0byBlbmQKKyMjICAgdXAgaW4gYSBzdWJkaXIuICBIYXZpbmcgdG8gcmVuYW1lIGJ5IGhhbmQgaXMgdWdseS4KKyMjICAgKFdlIG1pZ2h0IGVuZCB1cCBkb2luZyB0aGlzIGFueXdheSB0byBzdXBwb3J0IG90aGVyIGNvbXBpbGVycy4pCisjIyAtIFRoZSBERVBFTkRFTkNJRVNfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlIG1ha2VzIGdjYyBhY3QgbGlrZQorIyMgICAtTU0sIG5vdCAtTSAoZGVzcGl0ZSB3aGF0IHRoZSBkb2NzIHNheSkuCisjIyAtIFVzaW5nIC1NIGRpcmVjdGx5IG1lYW5zIHJ1bm5pbmcgdGhlIGNvbXBpbGVyIHR3aWNlIChldmVuIHdvcnNlCisjIyAgIHRoYW4gcmVuYW1pbmcpLgorICBpZiB0ZXN0IC16ICIkZ2NjZmxhZyI7IHRoZW4KKyAgICBnY2NmbGFnPS1NRCwKKyAgZmkKKyAgIiRAIiAtV3AsIiRnY2NmbGFnJHRtcGRlcGZpbGUiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIGFscGhhPUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoKKyMjIFRoZSBzZWNvbmQgLWUgZXhwcmVzc2lvbiBoYW5kbGVzIERPUy1zdHlsZSBmaWxlIG5hbWVzIHdpdGggZHJpdmUgbGV0dGVycy4KKyAgc2VkIC1lICdzL15bXjpdKjogLyAvJyBcCisgICAgICAtZSAncy9eWyckYWxwaGEnXTpcL1teOl0qOiAvIC8nIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisjIyBUaGlzIG5leHQgcGllY2Ugb2YgbWFnaWMgYXZvaWRzIHRoZSBgZGVsZXRlZCBoZWFkZXIgZmlsZScgcHJvYmxlbS4KKyMjIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiBhIGhlYWRlciBmaWxlIHdoaWNoIGFwcGVhcnMgaW4gYSAuUCBmaWxlCisjIyBpcyBkZWxldGVkLCB0aGUgZGVwZW5kZW5jeSBjYXVzZXMgbWFrZSB0byBkaWUgKGJlY2F1c2UgdGhlcmUgaXMKKyMjIHR5cGljYWxseSBubyB3YXkgdG8gcmVidWlsZCB0aGUgaGVhZGVyKS4gIFdlIGF2b2lkIHRoaXMgYnkgYWRkaW5nCisjIyBkdW1teSBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggaGVhZGVyIGZpbGUuICBUb28gYmFkIGdjYyBkb2Vzbid0IGRvCisjIyB0aGlzIGZvciB1cyBkaXJlY3RseS4KKyAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIHwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIHB1dCBhIHNwYWNlIGJlZm9yZSB0aGUgYDonLiAgT24gdGhlIHRoZW9yeQorIyMgdGhhdCB0aGUgc3BhY2UgbWVhbnMgc29tZXRoaW5nLCB3ZSBhZGQgYSBzcGFjZSB0byB0aGUgb3V0cHV0IGFzCisjIyB3ZWxsLgorIyMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyMjIGNvcnJlY3RseS4gIEJyZWFraW5nIGl0IGludG8gdHdvIHNlZCBpbnZvY2F0aW9ucyBpcyBhIHdvcmthcm91bmQuCisgICAgc2VkIC1lICdzL15cXCQvLycgLWUgJy9eJC9kJyAtZSAnLzokL2QnIHwgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaHApCisgICMgVGhpcyBjYXNlIGV4aXN0cyBvbmx5IHRvIGxldCBkZXBlbmQubTQgZG8gaXRzIHdvcmsuICBJdCB3b3JrcyBieQorICAjIGxvb2tpbmcgYXQgdGhlIHRleHQgb2YgdGhpcyBzY3JpcHQuICBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSBydW4sCisgICMgc2luY2UgaXQgaXMgY2hlY2tlZCBmb3IgYWJvdmUuCisgIGV4aXQgMQorICA7OworCitzZ2kpCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgICIkQCIgIi1XcCwtTUR1cGRhdGUsJHRtcGRlcGZpbGUiCisgIGVsc2UKKyAgICAiJEAiIC1NRHVwZGF0ZSAiJHRtcGRlcGZpbGUiCisgIGZpCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisKKyAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuICAjIHllcywgdGhlIHNvdXJjZWZpbGUgZGVwZW5kIG9uIG90aGVyIGZpbGVzCisgICAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKKworICAgICMgQ2xpcCBvZmYgdGhlIGluaXRpYWwgZWxlbWVudCAodGhlIGRlcGVuZGVudCkuICBEb24ndCB0cnkgdG8gYmUKKyAgICAjIGNsZXZlciBhbmQgcmVwbGFjZSB0aGlzIHdpdGggc2VkIGNvZGUsIGFzIElSSVggc2VkIHdvbid0IGhhbmRsZQorICAgICMgbGluZXMgd2l0aCBtb3JlIHRoYW4gYSBmaXhlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoNDA5NiBpbgorICAgICMgSVJJWCA2LjIgc2VkLCA4MTkyIGluIElSSVggNi41KS4gIFdlIGFsc28gcmVtb3ZlIGNvbW1lbnQgbGluZXM7CisgICAgIyB0aGUgSVJJWCBjYyBhZGRzIGNvbW1lbnRzIGxpa2UgYCM6ZmVjJyB0byB0aGUgZW5kIG9mIHRoZQorICAgICMgZGVwZW5kZW5jeSBsaW5lLgorICAgIHRyICcgJyAnCisnIDwgIiR0bXBkZXBmaWxlIiBcCisgICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIHwgXAorICAgIHRyICcKKycgJyAnID4+ICRkZXBmaWxlCisgICAgZWNobyA+PiAkZGVwZmlsZQorCisgICAgIyBUaGUgc2Vjb25kIHBhc3MgZ2VuZXJhdGVzIGEgZHVtbXkgZW50cnkgZm9yIGVhY2ggaGVhZGVyIGZpbGUuCisgICAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIFwKKyAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyAtZSAncy8kLzovJyBcCisgICA+PiAkZGVwZmlsZQorICBlbHNlCisgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKKyAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKKyAgICAjICJpbmNsdWRlIGJhc2VuYW1lLlBsbyIgc2NoZW1lLgorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworYWl4KQorICAjIFRoZSBDIGZvciBBSVggQ29tcGlsZXIgdXNlcyAtTSBhbmQgb3V0cHV0cyB0aGUgZGVwZW5kZW5jaWVzCisgICMgaW4gYSAudSBmaWxlLiAgSW4gb2xkZXIgdmVyc2lvbnMsIHRoaXMgZmlsZSBhbHdheXMgbGl2ZXMgaW4gdGhlCisgICMgY3VycmVudCBkaXJlY3RvcnkuICBBbHNvLCB0aGUgQUlYIGNvbXBpbGVyIHB1dHMgYCRvYmplY3Q6JyBhdCB0aGUKKyAgIyBzdGFydCBvZiBlYWNoIGxpbmU7ICRvYmplY3QgZG9lc24ndCBoYXZlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KKyAgIyBWZXJzaW9uIDYgdXNlcyB0aGUgZGlyZWN0b3J5IGluIGJvdGggY2FzZXMuCisgIHN0cmlwcGVkPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAncy9cKC4qXClcLi4qJC9cMS8nYAorICB0bXBkZXBmaWxlPSIkc3RyaXBwZWQudSIKKyAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgIiRAIiAtV2MsLU0KKyAgZWxzZQorICAgICIkQCIgLU0KKyAgZmkKKyAgc3RhdD0kPworCisgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbiA6CisgIGVsc2UKKyAgICBzdHJpcHBlZD1gZWNobyAiJHN0cmlwcGVkIiB8IHNlZCAncyxeLiovLCwnYAorICAgIHRtcGRlcGZpbGU9IiRzdHJpcHBlZC51IgorICBmaQorCisgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICBlbHNlCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICAgIGV4aXQgJHN0YXQKKyAgZmkKKworICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KKyAgICBvdXRuYW1lPSIkc3RyaXBwZWQubyIKKyAgICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJy4KKyAgICAjIERvIHR3byBwYXNzZXMsIG9uZSB0byBqdXN0IGNoYW5nZSB0aGVzZSB0bworICAgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KKyAgICBzZWQgLWUgInMsXiRvdXRuYW1lOiwkb2JqZWN0IDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgICAgc2VkIC1lICJzLF4kb3V0bmFtZTogXCguKlwpJCxcMTosIiA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICBlbHNlCisgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKKyAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKKyAgICAjICJpbmNsdWRlIGJhc2VuYW1lLlBsbyIgc2NoZW1lLgorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaWNjKQorICAjIEludGVsJ3MgQyBjb21waWxlciB1bmRlcnN0YW5kcyBgLU1EIC1NRiBmaWxlJy4gIEhvd2V2ZXIgb24KKyAgIyAgICBpY2MgLU1EIC1NRiBmb28uZCAtYyAtbyBzdWIvZm9vLm8gc3ViL2Zvby5jCisgICMgSUNDIDcuMCB3aWxsIGZpbGwgZm9vLmQgd2l0aCBzb21ldGhpbmcgbGlrZQorICAjICAgIGZvby5vOiBzdWIvZm9vLmMKKyAgIyAgICBmb28ubzogc3ViL2Zvby5oCisgICMgd2hpY2ggaXMgd3JvbmcuICBXZSB3YW50OgorICAjICAgIHN1Yi9mb28ubzogc3ViL2Zvby5jCisgICMgICAgc3ViL2Zvby5vOiBzdWIvZm9vLmgKKyAgIyAgICBzdWIvZm9vLmM6CisgICMgICAgc3ViL2Zvby5oOgorICAjIElDQyA3LjEgd2lsbCBvdXRwdXQKKyAgIyAgICBmb28ubzogc3ViL2Zvby5jIHN1Yi9mb28uaAorICAjIGFuZCB3aWxsIHdyYXAgbG9uZyBsaW5lcyB1c2luZyBcIDoKKyAgIyAgICBmb28ubzogc3ViL2Zvby5jIC4uLiBcCisgICMgICAgIHN1Yi9mb28uaCAuLi4gXAorICAjICAgICAuLi4KKworICAiJEAiIC1NRCAtTUYgIiR0bXBkZXBmaWxlIgorICBzdGF0PSQ/CisgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICBlbHNlCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICAgIGV4aXQgJHN0YXQKKyAgZmkKKyAgcm0gLWYgIiRkZXBmaWxlIgorICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJywKKyAgIyBvciBgZm9vLm86IGRlcDEuaCBkZXAyLmggXCcsIG9yIGAgZGVwMy5oIGRlcDQuaCBcJy4KKyAgIyBEbyB0d28gcGFzc2VzLCBvbmUgdG8ganVzdCBjaGFuZ2UgdGhlc2UgdG8KKyAgIyBgJG9iamVjdDogZGVwZW5kZW50LmgnIGFuZCBvbmUgdG8gc2ltcGx5IGBkZXBlbmRlbnQuaDonLgorICBzZWQgInMsXlteOl0qOiwkb2JqZWN0IDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgICMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyAgIyBjb3JyZWN0bHkuICBCcmVha2luZyBpdCBpbnRvIHR3byBzZWQgaW52b2NhdGlvbnMgaXMgYSB3b3JrYXJvdW5kLgorICBzZWQgJ3MsXlteOl0qOiBcKC4qXCkkLFwxLDtzL15cXCQvLzsvXiQvZDsvOiQvZCcgPCAiJHRtcGRlcGZpbGUiIHwKKyAgICBzZWQgLWUgJ3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCit0cnU2NCkKKyAgICMgVGhlIFRydTY0IGNvbXBpbGVyIHVzZXMgLU1EIHRvIGdlbmVyYXRlIGRlcGVuZGVuY2llcyBhcyBhIHNpZGUKKyAgICMgZWZmZWN0LiAgYGNjIC1NRCAtbyBmb28ubyAuLi4nIHB1dHMgdGhlIGRlcGVuZGVuY2llcyBpbnRvIGBmb28uby5kJy4KKyAgICMgQXQgbGVhc3Qgb24gQWxwaGEvUmVkaGF0IDYuMSwgQ29tcGFxIENDQyBWNi4yLTUwNCBzZWVtcyB0byBwdXQKKyAgICMgZGVwZW5kZW5jaWVzIGluIGBmb28uZCcgaW5zdGVhZCwgc28gd2UgY2hlY2sgZm9yIHRoYXQgdG9vLgorICAgIyBTdWJkaXJlY3RvcmllcyBhcmUgcmVzcGVjdGVkLgorICAgZGlyPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3wvW14vXSokfC98J2AKKyAgIHRlc3QgIngkZGlyIiA9ICJ4JG9iamVjdCIgJiYgZGlyPQorICAgYmFzZT1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8Xi4qL3x8JyAtZSAncy9cLm8kLy8nIC1lICdzL1wubG8kLy8nYAorCisgICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICAgIHRtcGRlcGZpbGUxPSIkZGlyLmxpYnMvJGJhc2UubG8uZCIKKyAgICAgIHRtcGRlcGZpbGUyPSIkZGlyLmxpYnMvJGJhc2UuZCIKKyAgICAgICIkQCIgLVdjLC1NRAorICAgZWxzZQorICAgICAgdG1wZGVwZmlsZTE9IiRkaXIkYmFzZS5vLmQiCisgICAgICB0bXBkZXBmaWxlMj0iJGRpciRiYXNlLmQiCisgICAgICAiJEAiIC1NRAorICAgZmkKKworICAgc3RhdD0kPworICAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgICBlbHNlCisgICAgICBybSAtZiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIgorICAgICAgZXhpdCAkc3RhdAorICAgZmkKKworICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUxIjsgdGhlbgorICAgICAgdG1wZGVwZmlsZT0iJHRtcGRlcGZpbGUxIgorICAgZWxzZQorICAgICAgdG1wZGVwZmlsZT0iJHRtcGRlcGZpbGUyIgorICAgZmkKKyAgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbgorICAgICAgc2VkIC1lICJzLF4uKlwuW2Etel0qOiwkb2JqZWN0OiwiIDwgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKKyAgICAgICMgVGhhdCdzIGEgdGFiIGFuZCBhIHNwYWNlIGluIHRoZSBbXS4KKyAgICAgIHNlZCAtZSAncyxeLipcLlthLXpdKjpbCSBdKiwsJyAtZSAncywkLDosJyA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICAgZWxzZQorICAgICAgZWNobyAiI2R1bW15IiA+ICIkZGVwZmlsZSIKKyAgIGZpCisgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICA7OworCisjbm9zaWRlZWZmZWN0KQorICAjIFRoaXMgY29tbWVudCBhYm92ZSBpcyB1c2VkIGJ5IGF1dG9tYWtlIHRvIHRlbGwgc2lkZS1lZmZlY3QKKyAgIyBkZXBlbmRlbmN5IHRyYWNraW5nIG1lY2hhbmlzbXMgZnJvbSBzbG93ZXIgb25lcy4KKworZGFzaG1zdGRvdXQpCisgICMgSW1wb3J0YW50IG5vdGU6IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBtb2RlLCBhIGNvbXBpbGVyICptdXN0KgorICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LCByZWdhcmRsZXNzIG9mIC1vLgorICAiJEAiIHx8IGV4aXQgJD8KKworICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorCisgICMgUmVtb3ZlIGAtbyAkb2JqZWN0Jy4KKyAgSUZTPSIgIgorICBmb3IgYXJnCisgIGRvCisgICAgY2FzZSAkYXJnIGluCisgICAgLW8pCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAkb2JqZWN0KQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgICAgc2hpZnQgIyAkYXJnCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgIHRlc3QgLXogIiRkYXNobWZsYWciICYmIGRhc2htZmxhZz0tTQorICAjIFJlcXVpcmUgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIHNlYXJjaGluZyBmb3IgYDonCisgICMgaW4gdGhlIHRhcmdldCBuYW1lLiAgVGhpcyBpcyB0byBjb3BlIHdpdGggRE9TLXN0eWxlIGZpbGVuYW1lczoKKyAgIyBhIGRlcGVuZGVuY3kgc3VjaCBhcyBgYzovZm9vL2JhcicgY291bGQgYmUgc2VlbiBhcyB0YXJnZXQgYGMnIG90aGVyd2lzZS4KKyAgIiRAIiAkZGFzaG1mbGFnIHwKKyAgICBzZWQgJ3M6XlsgIF0qW146IF1bXjpdW146XSpcOlsgICAgXSo6JyIkb2JqZWN0IidcOiA6JyA+ICIkdG1wZGVwZmlsZSIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICB0ciAnICcgJworJyA8ICIkdG1wZGVwZmlsZSIgfCBcCisjIyBTb21lIHZlcnNpb25zIG9mIHRoZSBIUFVYIDEwLjIwIHNlZCBjYW4ndCBwcm9jZXNzIHRoaXMgaW52b2NhdGlvbgorIyMgY29ycmVjdGx5LiAgQnJlYWtpbmcgaXQgaW50byB0d28gc2VkIGludm9jYXRpb25zIGlzIGEgd29ya2Fyb3VuZC4KKyAgICBzZWQgLWUgJ3MvXlxcJC8vJyAtZSAnL14kL2QnIC1lICcvOiQvZCcgfCBzZWQgLWUgJ3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCitkYXNoWG1zdGRvdXQpCisgICMgVGhpcyBjYXNlIG9ubHkgZXhpc3RzIHRvIHNhdGlzZnkgZGVwZW5kLm00LiAgSXQgaXMgbmV2ZXIgYWN0dWFsbHkKKyAgIyBydW4sIGFzIHRoaXMgbW9kZSBpcyBzcGVjaWFsbHkgcmVjb2duaXplZCBpbiB0aGUgcHJlYW1ibGUuCisgIGV4aXQgMQorICA7OworCittYWtlZGVwZW5kKQorICAiJEAiIHx8IGV4aXQgJD8KKyAgIyBSZW1vdmUgYW55IExpYnRvb2wgY2FsbAorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorICAjIFggbWFrZWRlcGVuZAorICBzaGlmdAorICBjbGVhcmVkPW5vCisgIGZvciBhcmcgaW4gIiRAIjsgZG8KKyAgICBjYXNlICRjbGVhcmVkIGluCisgICAgbm8pCisgICAgICBzZXQgIiI7IHNoaWZ0CisgICAgICBjbGVhcmVkPXllcyA7OworICAgIGVzYWMKKyAgICBjYXNlICIkYXJnIiBpbgorICAgIC1EKnwtSSopCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyI7IHNoaWZ0IDs7CisgICAgIyBTdHJpcCBhbnkgb3B0aW9uIHRoYXQgbWFrZWRlcGVuZCBtYXkgbm90IHVuZGVyc3RhbmQuICBSZW1vdmUKKyAgICAjIHRoZSBvYmplY3QgdG9vLCBvdGhlcndpc2UgbWFrZWRlcGVuZCB3aWxsIHBhcnNlIGl0IGFzIGEgc291cmNlIGZpbGUuCisgICAgLSp8JG9iamVjdCkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIjsgc2hpZnQgOzsKKyAgICBlc2FjCisgIGRvbmUKKyAgb2JqX3N1ZmZpeD0iYGVjaG8gJG9iamVjdCB8IHNlZCAncy9eLipcLi8uLydgIgorICB0b3VjaCAiJHRtcGRlcGZpbGUiCisgICR7TUFLRURFUEVORC1tYWtlZGVwZW5kfSAtbyIkb2JqX3N1ZmZpeCIgLWYiJHRtcGRlcGZpbGUiICIkQCIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICBzZWQgJzEsMmQnICIkdG1wZGVwZmlsZSIgfCB0ciAnICcgJworJyB8IFwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgdGhlIEhQVVggMTAuMjAgc2VkIGNhbid0IHByb2Nlc3MgdGhpcyBpbnZvY2F0aW9uCisjIyBjb3JyZWN0bHkuICBCcmVha2luZyBpdCBpbnRvIHR3byBzZWQgaW52b2NhdGlvbnMgaXMgYSB3b3JrYXJvdW5kLgorICAgIHNlZCAtZSAncy9eXFwkLy8nIC1lICcvXiQvZCcgLWUgJy86JC9kJyB8IHNlZCAtZSAncy8kLyA6LycgPj4gIiRkZXBmaWxlIgorICBybSAtZiAiJHRtcGRlcGZpbGUiICIkdG1wZGVwZmlsZSIuYmFrCisgIDs7CisKK2NwcCkKKyAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQuCisgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICAgIHNoaWZ0CisgICAgZG9uZQorICAgIHNoaWZ0CisgIGZpCisKKyAgIyBSZW1vdmUgYC1vICRvYmplY3QnLgorICBJRlM9IiAiCisgIGZvciBhcmcKKyAgZG8KKyAgICBjYXNlICRhcmcgaW4KKyAgICAtbykKKyAgICAgIHNoaWZ0CisgICAgICA7OworICAgICRvYmplY3QpCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAqKQorICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgICBzaGlmdCAjICRhcmcKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIiRAIiAtRSB8CisgICAgc2VkIC1uICcvXiMgWzAtOV1bMC05XSogIlwoW14iXSpcKSIuKi8gczo6IFwxIFxcOnAnIHwKKyAgICBzZWQgJyQgczogXFwkOjonID4gIiR0bXBkZXBmaWxlIgorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIGNhdCA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICBzZWQgPCAiJHRtcGRlcGZpbGUiICcvXiQvZDtzL14gLy87cy8gXFwkLy87cy8kLyA6LycgPj4gIiRkZXBmaWxlIgorICBybSAtZiAiJHRtcGRlcGZpbGUiCisgIDs7CisKK21zdmlzdWFsY3BwKQorICAjIEltcG9ydGFudCBub3RlOiBpbiBvcmRlciB0byBzdXBwb3J0IHRoaXMgbW9kZSwgYSBjb21waWxlciAqbXVzdCoKKyAgIyBhbHdheXMgd3JpdGUgdGhlIHByZXByb2Nlc3NlZCBmaWxlIHRvIHN0ZG91dCwgcmVnYXJkbGVzcyBvZiAtbywKKyAgIyBiZWNhdXNlIHdlIG11c3QgdXNlIC1vIHdoZW4gcnVubmluZyBsaWJ0b29sLgorICAiJEAiIHx8IGV4aXQgJD8KKyAgSUZTPSIgIgorICBmb3IgYXJnCisgIGRvCisgICAgY2FzZSAiJGFyZyIgaW4KKyAgICAiLUdtInwiL0dtInwiLUdpInwiL0dpInwiLVpJInwiL1pJIikKKwlzZXQgZm5vcmQgIiRAIgorCXNoaWZ0CisJc2hpZnQKKwk7OworICAgICopCisJc2V0IGZub3JkICIkQCIgIiRhcmciCisJc2hpZnQKKwlzaGlmdAorCTs7CisgICAgZXNhYworICBkb25lCisgICIkQCIgLUUgfAorICBzZWQgLW4gJy9eI2xpbmUgWzAtOV1bMC05XSogIlwoW14iXSpcKSIvIHM6OmVjaG8gImBjeWdwYXRoIC11IFxcIlwxXFwiYCI6cCcgfCBzb3J0IHwgdW5pcSA+ICIkdG1wZGVwZmlsZSIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBlY2hvICIkb2JqZWN0IDogXFwiID4gIiRkZXBmaWxlIgorICAuICIkdG1wZGVwZmlsZSIgfCBzZWQgJ3MlICVcXCAlZycgfCBzZWQgLW4gJy9eXCguKlwpJC8gczo6CVwxIFxcOnAnID4+ICIkZGVwZmlsZSIKKyAgZWNobyAiCSIgPj4gIiRkZXBmaWxlIgorICAuICIkdG1wZGVwZmlsZSIgfCBzZWQgJ3MlICVcXCAlZycgfCBzZWQgLW4gJy9eXCguKlwpJC8gczo6XDFcOjpwJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworbm9uZSkKKyAgZXhlYyAiJEAiCisgIDs7CisKKyopCisgIGVjaG8gIlVua25vd24gZGVwbW9kZSAkZGVwbW9kZSIgMT4mMgorICBleGl0IDEKKyAgOzsKK2VzYWMKKworZXhpdCAwCmRpZmYgLS1naXQgYS9kb2MvTWFrZWZpbGUuYW0gYi9kb2MvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxNjdhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDIyIEBACisjIHdoYXQgaXMgeW91ciBwaGlsb3NvcGh5IC0gZGlzdHJpYnV0ZSBwcmUtbWFkZSAucGRmIGV0IGFsIGluIGEgbWFrZSBkaXN0CisjIG9yIG5vdD8gIGNob29zZSB5b3VyIEVYVFJBX0RJU1QgbGluZSBhY2NvcmRpbmdseQorIyBFWFRSQV9ESVNUID0gbmV0cGVyZi5tYW4gbmV0c2VydmVyLm1hbiBuZXRwZXJmLnR4dCBuZXRwZXJmLmh0bWwgbmV0cGVyZi54bWwgbmV0cGVyZl9vbGQucHMgbmV0cGVyZi5wZGYgbmV0cGVyZi5wcyBuZXRwZXJmLnRleGkgZXhhbXBsZXMKKworU1VCRElSUyA9IGV4YW1wbGVzCisKK0VYVFJBX0RJU1QgPSBuZXRwZXJmLm1hbiBuZXRzZXJ2ZXIubWFuIG5ldHBlcmZfb2xkLnBzIG5ldHBlcmYudGV4aSAKK21hbjFfTUFOUyA9IG5ldHBlcmYubWFuIG5ldHNlcnZlci5tYW4KK2luZm9fVEVYSU5GT1MgPSBuZXRwZXJmLnRleGkKK0NMRUFORklMRVMgPSBuZXRwZXJmLnR4dCBuZXRwZXJmLnhtbCBuZXRwZXJmLmh0bWwKKworbmV0cGVyZi5odG1sOiAkKGluZm9fVEVYSU5GT1MpCisJJChNQUtFSU5GTykgJChBTV9NQUtFSU5GT0ZMQUdTKSAkKE1BS0VJTkZPRkxBR1MpIC0taHRtbCAtLW5vLXNwbGl0IC1JICQoc3JjZGlyKSBcCisgICAgICAgICAtbyAkQCBgdGVzdCAtZiAnJDwnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQ8CisKK25ldHBlcmYudHh0OiAkKGluZm9fVEVYSU5GT1MpCisJJChNQUtFSU5GTykgJChBTV9NQUtFSU5GT0ZMQUdTKSAkKE1BS0VJTkZPRkxBR1MpIC0tcGxhaW50ZXh0IC1JICQoc3JjZGlyKSBcCisgICAgICAgICAtbyAkQCBgdGVzdCAtZiAnJDwnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQ8CisKK25ldHBlcmYueG1sOiAkKGluZm9fVEVYSU5GT1MpCisJJChNQUtFSU5GTykgJChBTV9NQUtFSU5GT0ZMQUdTKSAkKE1BS0VJTkZPRkxBR1MpIC0teG1sIC1JICQoc3JjZGlyKSBcCisgICAgICAgICAtbyAkQCBgdGVzdCAtZiAnJDwnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQ8CmRpZmYgLS1naXQgYS9kb2MvTWFrZWZpbGUuaW4gYi9kb2MvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZkMzVkOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDg5MSBAQAorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCisjIEBjb25maWd1cmVfaW5wdXRACisKKyMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgorIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworQFNFVF9NQUtFQAorCisjIHdoYXQgaXMgeW91ciBwaGlsb3NvcGh5IC0gZGlzdHJpYnV0ZSBwcmUtbWFkZSAucGRmIGV0IGFsIGluIGEgbWFrZSBkaXN0CisjIG9yIG5vdD8gIGNob29zZSB5b3VyIEVYVFJBX0RJU1QgbGluZSBhY2NvcmRpbmdseQorIyBFWFRSQV9ESVNUID0gbmV0cGVyZi5tYW4gbmV0c2VydmVyLm1hbiBuZXRwZXJmLnR4dCBuZXRwZXJmLmh0bWwgbmV0cGVyZi54bWwgbmV0cGVyZl9vbGQucHMgbmV0cGVyZi5wZGYgbmV0cGVyZi5wcyBuZXRwZXJmLnRleGkgZXhhbXBsZXMKK1ZQQVRIID0gQHNyY2RpckAKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACitwa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKK2FtX19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QKK2luc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMKK0lOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCitOT1JNQUxfSU5TVEFMTCA9IDoKK1BSRV9JTlNUQUxMID0gOgorUE9TVF9JTlNUQUxMID0gOgorTk9STUFMX1VOSU5TVEFMTCA9IDoKK1BSRV9VTklOU1RBTEwgPSA6CitQT1NUX1VOSU5TVEFMTCA9IDoKK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRACitob3N0X3RyaXBsZXQgPSBAaG9zdEAKK3RhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK3N1YmRpciA9IGRvYworRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChzcmNkaXIpL01ha2VmaWxlLmluIHRleGluZm8udGV4CitBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9zcmMvbWlzc2luZy9tNC9zYWxlbi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKK2FtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCisJJChBQ0xPQ0FMX000KQorbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycworQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9jb25maWcuaAorQ09ORklHX0NMRUFOX0ZJTEVTID0KK0NPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CitTT1VSQ0VTID0KK0RJU1RfU09VUkNFUyA9CitJTkZPX0RFUFMgPSAkKHNyY2RpcikvbmV0cGVyZi5pbmZvCithbV9fVEVYSU5GT19URVhfRElSID0gJChzcmNkaXIpCitEVklTID0gbmV0cGVyZi5kdmkKK1BERlMgPSBuZXRwZXJmLnBkZgorUFNTID0gbmV0cGVyZi5wcworSFRNTFMgPSBuZXRwZXJmLmh0bWwKK1RFWElORk9TID0gbmV0cGVyZi50ZXhpCitURVhJMkRWSSA9IHRleGkyZHZpCitURVhJMlBERiA9ICQoVEVYSTJEVkkpIC0tcGRmIC0tYmF0Y2gKK01BS0VJTkZPSFRNTCA9ICQoTUFLRUlORk8pIC0taHRtbAorQU1fTUFLRUlORk9IVE1MRkxBR1MgPSAkKEFNX01BS0VJTkZPRkxBR1MpCitEVklQUyA9IGR2aXBzCitSRUNVUlNJVkVfVEFSR0VUUyA9IGFsbC1yZWN1cnNpdmUgY2hlY2stcmVjdXJzaXZlIGR2aS1yZWN1cnNpdmUgXAorCWh0bWwtcmVjdXJzaXZlIGluZm8tcmVjdXJzaXZlIGluc3RhbGwtZGF0YS1yZWN1cnNpdmUgXAorCWluc3RhbGwtZHZpLXJlY3Vyc2l2ZSBpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIFwKKwlpbnN0YWxsLWh0bWwtcmVjdXJzaXZlIGluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAorCWluc3RhbGwtcGRmLXJlY3Vyc2l2ZSBpbnN0YWxsLXBzLXJlY3Vyc2l2ZSBpbnN0YWxsLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZSBpbnN0YWxsZGlycy1yZWN1cnNpdmUgcGRmLXJlY3Vyc2l2ZSBcCisJcHMtcmVjdXJzaXZlIHVuaW5zdGFsbC1yZWN1cnNpdmUKK2FtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChpbmZvZGlyKSIgIiQoREVTVERJUikkKG1hbjFkaXIpIgorYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7CithbV9fdnBhdGhfYWRqID0gY2FzZSAkJHAgaW4gXAorICAgICQoc3JjZGlyKS8qKSBmPWBlY2hvICIkJHAiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCisgICAgKikgZj0kJHA7OyBcCisgIGVzYWM7CithbV9fc3RyaXBfZGlyID0gZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7CithbV9faW5zdGFsbF9tYXggPSA0MAorYW1fX25vYmFzZV9zdHJpcF9zZXR1cCA9IFwKKyAgc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYAorYW1fX25vYmFzZV9zdHJpcCA9IFwKKyAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAiOyBkb25lIHwgc2VkIC1lICJzfCQkc3JjZGlyc3RyaXAvfHwiCithbV9fbm9iYXNlX2xpc3QgPSAkKGFtX19ub2Jhc2Vfc3RyaXBfc2V0dXApOyBcCisgIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwICQkcCI7IGRvbmUgfCBcCisgIHNlZCAic3wgJCRzcmNkaXJzdHJpcC98IHw7IicgLyAuKlwvLyFzLyAuKi8gLi87IHMsXCggLipcKS9bXi9dKiQkLFwxLCcgfCBcCisgICQoQVdLKSAnQkVHSU4geyBmaWxlc1siLiJdID0gIiIgfSB7IGZpbGVzWyQkMl0gPSBmaWxlc1skJDJdICIgIiAkJDE7IFwKKyAgICBpZiAoKytuWyQkMl0gPT0gJChhbV9faW5zdGFsbF9tYXgpKSBcCisgICAgICB7IHByaW50ICQkMiwgZmlsZXNbJCQyXTsgblskJDJdID0gMDsgZmlsZXNbJCQyXSA9ICIiIH0gfSBcCisgICAgRU5EIHsgZm9yIChkaXIgaW4gZmlsZXMpIHByaW50IGRpciwgZmlsZXNbZGlyXSB9JworYW1fX2Jhc2VfbGlzdCA9IFwKKyAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKKyAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CittYW4xZGlyID0gJChtYW5kaXIpL21hbjEKK05ST0ZGID0gbnJvZmYKK01BTlMgPSAkKG1hbjFfTUFOUykKK1JFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTID0gbW9zdGx5Y2xlYW4tcmVjdXJzaXZlIGNsZWFuLXJlY3Vyc2l2ZQlcCisgIGRpc3RjbGVhbi1yZWN1cnNpdmUgbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKK0FNX1JFQ1VSU0lWRV9UQVJHRVRTID0gJChSRUNVUlNJVkVfVEFSR0VUUzotcmVjdXJzaXZlPSkgXAorCSQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFM6LXJlY3Vyc2l2ZT0pIHRhZ3MgVEFHUyBjdGFncyBDVEFHUyBcCisJZGlzdGRpcgorRVRBR1MgPSBldGFncworQ1RBR1MgPSBjdGFncworRElTVF9TVUJESVJTID0gJChTVUJESVJTKQorRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKK2FtX19yZWxhdGl2aXplID0gXAorICBkaXIwPWBwd2RgOyBcCisgIHNlZF9maXJzdD0ncyxeXChbXi9dKlwpLy4qJCQsXDEsJzsgXAorICBzZWRfcmVzdD0ncyxeW14vXSovKiwsJzsgXAorICBzZWRfbGFzdD0ncyxeLiovXChbXi9dKlwpJCQsXDEsJzsgXAorICBzZWRfYnV0bGFzdD0ncywvKlteL10qJCQsLCc7IFwKKyAgd2hpbGUgdGVzdCAtbiAiJCRkaXIxIjsgZG8gXAorICAgIGZpcnN0PWBlY2hvICIkJGRpcjEiIHwgc2VkIC1lICIkJHNlZF9maXJzdCJgOyBcCisgICAgaWYgdGVzdCAiJCRmaXJzdCIgIT0gIi4iOyB0aGVuIFwKKyAgICAgIGlmIHRlc3QgIiQkZmlyc3QiID0gIi4uIjsgdGhlbiBcCisgICAgICAgIGRpcjI9YGVjaG8gIiQkZGlyMCIgfCBzZWQgLWUgIiQkc2VkX2xhc3QiYC8iJCRkaXIyIjsgXAorICAgICAgICBkaXIwPWBlY2hvICIkJGRpcjAiIHwgc2VkIC1lICIkJHNlZF9idXRsYXN0ImA7IFwKKyAgICAgIGVsc2UgXAorICAgICAgICBmaXJzdDI9YGVjaG8gIiQkZGlyMiIgfCBzZWQgLWUgIiQkc2VkX2ZpcnN0ImA7IFwKKyAgICAgICAgaWYgdGVzdCAiJCRmaXJzdDIiID0gIiQkZmlyc3QiOyB0aGVuIFwKKyAgICAgICAgICBkaXIyPWBlY2hvICIkJGRpcjIiIHwgc2VkIC1lICIkJHNlZF9yZXN0ImA7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgZGlyMj0iLi4vJCRkaXIyIjsgXAorICAgICAgICBmaTsgXAorICAgICAgICBkaXIwPSIkJGRpcjAiLyIkJGZpcnN0IjsgXAorICAgICAgZmk7IFwKKyAgICBmaTsgXAorICAgIGRpcjE9YGVjaG8gIiQkZGlyMSIgfCBzZWQgLWUgIiQkc2VkX3Jlc3QiYDsgXAorICBkb25lOyBcCisgIHJlbGRpcj0iJCRkaXIyIgorQUNMT0NBTCA9IEBBQ0xPQ0FMQAorQU1UQVIgPSBAQU1UQVJACitBVVRPQ09ORiA9IEBBVVRPQ09ORkAKK0FVVE9IRUFERVIgPSBAQVVUT0hFQURFUkAKK0FVVE9NQUtFID0gQEFVVE9NQUtFQAorQVdLID0gQEFXS0AKK0NDID0gQENDQAorQ0NERVBNT0RFID0gQENDREVQTU9ERUAKK0NGTEFHUyA9IEBDRkxBR1NACitDUFAgPSBAQ1BQQAorQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAorREVGUyA9IEBERUZTQAorREVQRElSID0gQERFUERJUkAKK0VDSE9fQyA9IEBFQ0hPX0NACitFQ0hPX04gPSBARUNIT19OQAorRUNIT19UID0gQEVDSE9fVEAKK0VHUkVQID0gQEVHUkVQQAorRVhFRVhUID0gQEVYRUVYVEAKK0dSRVAgPSBAR1JFUEAKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5TVEFMTF9TVFJJUF9QUk9HUkFNQAorTERGTEFHUyA9IEBMREZMQUdTQAorTElCT0JKUyA9IEBMSUJPQkpTQAorTElCUyA9IEBMSUJTQAorTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK01BS0VJTkZPID0gQE1BS0VJTkZPQAorTUtESVJfUCA9IEBNS0RJUl9QQAorTkVUQ1BVX1NPVVJDRSA9IEBORVRDUFVfU09VUkNFQAorT0JKRVhUID0gQE9CSkVYVEAKK1BBQ0tBR0UgPSBAUEFDS0FHRUAKK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKK1BBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAorUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKK1BBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAorUkFOTElCID0gQFJBTkxJQkAKK1NFVF9NQUtFID0gQFNFVF9NQUtFQAorU0hFTEwgPSBAU0hFTExACitTVFJJUCA9IEBTVFJJUEAKK1ZFUlNJT04gPSBAVkVSU0lPTkAKK2Fic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACithYnNfc3JjZGlyID0gQGFic19zcmNkaXJACithYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACithYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0NDID0gQGFjX2N0X0NDQAorYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACithbV9fbGVhZGluZ19kb3QgPSBAYW1fX2xlYWRpbmdfZG90QAorYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKK2FtX190YXIgPSBAYW1fX3RhckAKK2FtX191bnRhciA9IEBhbV9fdW50YXJACitiaW5kaXIgPSBAYmluZGlyQAorYnVpbGQgPSBAYnVpbGRACitidWlsZF9hbGlhcyA9IEBidWlsZF9hbGlhc0AKK2J1aWxkX2NwdSA9IEBidWlsZF9jcHVACitidWlsZF9vcyA9IEBidWlsZF9vc0AKK2J1aWxkX3ZlbmRvciA9IEBidWlsZF92ZW5kb3JACitidWlsZGRpciA9IEBidWlsZGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2RhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorZG9jZGlyID0gQGRvY2RpckAKK2R2aWRpciA9IEBkdmlkaXJACitleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK2hvc3QgPSBAaG9zdEAKK2hvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKK2hvc3RfY3B1ID0gQGhvc3RfY3B1QAoraG9zdF9vcyA9IEBob3N0X29zQAoraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACitodG1sZGlyID0gQGh0bWxkaXJACitpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACitpbmZvZGlyID0gQGluZm9kaXJACitpbnN0YWxsX3NoID0gQGluc3RhbGxfc2hACitsaWJkaXIgPSBAbGliZGlyQAorbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAorbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKK2xvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKK21hbmRpciA9IEBtYW5kaXJACitta2Rpcl9wID0gQG1rZGlyX3BACitvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACitwZGZkaXIgPSBAcGRmZGlyQAorcHJlZml4ID0gQHByZWZpeEAKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKK3BzZGlyID0gQHBzZGlyQAorc2JpbmRpciA9IEBzYmluZGlyQAorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACitzcmNkaXIgPSBAc3JjZGlyQAorc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAordGFyZ2V0ID0gQHRhcmdldEAKK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACit0YXJnZXRfY3B1ID0gQHRhcmdldF9jcHVACit0YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAordGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAordG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAordG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1NVQkRJUlMgPSBleGFtcGxlcworRVhUUkFfRElTVCA9IG5ldHBlcmYubWFuIG5ldHNlcnZlci5tYW4gbmV0cGVyZl9vbGQucHMgbmV0cGVyZi50ZXhpIAorbWFuMV9NQU5TID0gbmV0cGVyZi5tYW4gbmV0c2VydmVyLm1hbgoraW5mb19URVhJTkZPUyA9IG5ldHBlcmYudGV4aQorQ0xFQU5GSUxFUyA9IG5ldHBlcmYudHh0IG5ldHBlcmYueG1sIG5ldHBlcmYuaHRtbAorYWxsOiBhbGwtcmVjdXJzaXZlCisKKy5TVUZGSVhFUzoKKy5TVUZGSVhFUzogLmR2aSAuaHRtbCAuaW5mbyAucGRmIC5wcyAudGV4aQorJChzcmNkaXIpL01ha2VmaWxlLmluOiAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKKwlAZm9yIGRlcCBpbiAkPzsgZG8gXAorCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCisJICAgICokJGRlcCopIFwKKwkgICAgICAoIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaCApIFwKKwkgICAgICAgICYmIHsgaWYgdGVzdCAtZiAkQDsgdGhlbiBleGl0IDA7IGVsc2UgYnJlYWs7IGZpOyB9OyBcCisJICAgICAgZXhpdCAxOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBkb2MvTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgZG9jL01ha2VmaWxlCisuUFJFQ0lPVVM6IE1ha2VmaWxlCitNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQGNhc2UgJyQ/JyBpbiBcCisJICAqY29uZmlnLnN0YXR1cyopIFwKKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoOzsgXAorCSAgKikgXAorCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcCisJZXNhYzsKKworJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCisKKyQodG9wX3NyY2RpcikvY29uZmlndXJlOiAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKEFDTE9DQUxfTTQpOiAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKKworLnRleGkuaW5mbzoKKwlyZXN0b3JlPTogJiYgYmFja3VwZGlyPSIkKGFtX19sZWFkaW5nX2RvdClhbSQkJCQiICYmIFwKKwlhbV9fY3dkPWBwd2RgICYmICQoYW1fX2NkKSAkKHNyY2RpcikgJiYgXAorCXJtIC1yZiAkJGJhY2t1cGRpciAmJiBta2RpciAkJGJhY2t1cGRpciAmJiBcCisJaWYgKCQoTUFLRUlORk8pIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwkgIGZvciBmIGluICRAICRALVswLTldICRALVswLTldWzAtOV0gJChAOi5pbmZvPSkuaVswLTldICQoQDouaW5mbz0pLmlbMC05XVswLTldOyBkbyBcCisJICAgIGlmIHRlc3QgLWYgJCRmOyB0aGVuIG12ICQkZiAkJGJhY2t1cGRpcjsgcmVzdG9yZT1tdjsgZWxzZSA6OyBmaTsgXAorCSAgZG9uZTsgXAorCWVsc2UgOjsgZmkgJiYgXAorCWNkICIkJGFtX19jd2QiOyBcCisJaWYgJChNQUtFSU5GTykgJChBTV9NQUtFSU5GT0ZMQUdTKSAkKE1BS0VJTkZPRkxBR1MpIC1JICQoc3JjZGlyKSBcCisJIC1vICRAICQ8OyBcCisJdGhlbiBcCisJICByYz0wOyBcCisJICAkKGFtX19jZCkgJChzcmNkaXIpOyBcCisJZWxzZSBcCisJICByYz0kJD87IFwKKwkgICQoYW1fX2NkKSAkKHNyY2RpcikgJiYgXAorCSAgJCRyZXN0b3JlICQkYmFja3VwZGlyLyogYGVjaG8gIi4vJEAiIHwgc2VkICdzfFteL10qJCR8fCdgOyBcCisJZmk7IFwKKwlybSAtcmYgJCRiYWNrdXBkaXI7IGV4aXQgJCRyYworCisudGV4aS5kdmk6CisJVEVYSU5QVVRTPSIkKGFtX19URVhJTkZPX1RFWF9ESVIpJChQQVRIX1NFUEFSQVRPUikkJFRFWElOUFVUUyIgXAorCU1BS0VJTkZPPSckKE1BS0VJTkZPKSAkKEFNX01BS0VJTkZPRkxBR1MpICQoTUFLRUlORk9GTEFHUykgLUkgJChzcmNkaXIpJyBcCisJJChURVhJMkRWSSkgJDwKKworLnRleGkucGRmOgorCVRFWElOUFVUUz0iJChhbV9fVEVYSU5GT19URVhfRElSKSQoUEFUSF9TRVBBUkFUT1IpJCRURVhJTlBVVFMiIFwKKwlNQUtFSU5GTz0nJChNQUtFSU5GTykgJChBTV9NQUtFSU5GT0ZMQUdTKSAkKE1BS0VJTkZPRkxBR1MpIC1JICQoc3JjZGlyKScgXAorCSQoVEVYSTJQREYpICQ8CisKKy50ZXhpLmh0bWw6CisJcm0gLXJmICQoQDouaHRtbD0uaHRwKQorCWlmICQoTUFLRUlORk9IVE1MKSAkKEFNX01BS0VJTkZPSFRNTEZMQUdTKSAkKE1BS0VJTkZPRkxBR1MpIC1JICQoc3JjZGlyKSBcCisJIC1vICQoQDouaHRtbD0uaHRwKSAkPDsgXAorCXRoZW4gXAorCSAgcm0gLXJmICRAOyBcCisJICBpZiB0ZXN0ICEgLWQgJChAOi5odG1sPS5odHApICYmIHRlc3QgLWQgJChAOi5odG1sPSk7IHRoZW4gXAorCSAgICBtdiAkKEA6Lmh0bWw9KSAkQDsgZWxzZSBtdiAkKEA6Lmh0bWw9Lmh0cCkgJEA7IGZpOyBcCisJZWxzZSBcCisJICBpZiB0ZXN0ICEgLWQgJChAOi5odG1sPS5odHApICYmIHRlc3QgLWQgJChAOi5odG1sPSk7IHRoZW4gXAorCSAgICBybSAtcmYgJChAOi5odG1sPSk7IGVsc2Ugcm0gLVJmICQoQDouaHRtbD0uaHRwKSAkQDsgZmk7IFwKKwkgIGV4aXQgMTsgXAorCWZpCiskKHNyY2RpcikvbmV0cGVyZi5pbmZvOiBuZXRwZXJmLnRleGkgCituZXRwZXJmLmR2aTogbmV0cGVyZi50ZXhpIAorbmV0cGVyZi5wZGY6IG5ldHBlcmYudGV4aSAKKy5kdmkucHM6CisJVEVYSU5QVVRTPSIkKGFtX19URVhJTkZPX1RFWF9ESVIpJChQQVRIX1NFUEFSQVRPUikkJFRFWElOUFVUUyIgXAorCSQoRFZJUFMpIC1vICRAICQ8CisKK3VuaW5zdGFsbC1kdmktYW06CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChEVklTKSc7IHRlc3QgLW4gIiQoZHZpZGlyKSIgfHwgbGlzdD07IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgICQoYW1fX3N0cmlwX2RpcikgXAorCSAgZWNobyAiIHJtIC1mICckKERFU1RESVIpJChkdmlkaXIpLyQkZiciOyBcCisJICBybSAtZiAiJChERVNURElSKSQoZHZpZGlyKS8kJGYiOyBcCisJZG9uZQorCit1bmluc3RhbGwtaHRtbC1hbToKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKEhUTUxTKSc7IHRlc3QgLW4gIiQoaHRtbGRpcikiIHx8IGxpc3Q9OyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICAkKGFtX19zdHJpcF9kaXIpIFwKKwkgIGVjaG8gIiBybSAtcmYgJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCisJICBybSAtcmYgIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiI7IFwKKwlkb25lCisKK3VuaW5zdGFsbC1pbmZvLWFtOgorCUAkKFBSRV9VTklOU1RBTEwpCisJQGlmIHRlc3QgLWQgJyQoREVTVERJUikkKGluZm9kaXIpJyAmJiBcCisJICAgIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uICYmIFwKKwkgICAgIGluc3RhbGwtaW5mbyAtLXZlcnNpb24gMj4mMSB8IHNlZCAxcSB8IGdyZXAgLWkgLXYgZGViaWFuKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCSAgbGlzdD0nJChJTkZPX0RFUFMpJzsgXAorCSAgZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBcCisJICAgIHJlbGZpbGU9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3N8Xi4qL3x8J2A7IFwKKwkgICAgZWNobyAiIGluc3RhbGwtaW5mbyAtLWluZm8tZGlyPSckKERFU1RESVIpJChpbmZvZGlyKScgLS1yZW1vdmUgJyQoREVTVERJUikkKGluZm9kaXIpLyQkcmVsZmlsZSciOyBcCisJICAgIGlmIGluc3RhbGwtaW5mbyAtLWluZm8tZGlyPSIkKERFU1RESVIpJChpbmZvZGlyKSIgLS1yZW1vdmUgIiQoREVTVERJUikkKGluZm9kaXIpLyQkcmVsZmlsZSI7IFwKKwkgICAgdGhlbiA6OyBlbHNlIHRlc3QgISAtZiAiJChERVNURElSKSQoaW5mb2RpcikvJCRyZWxmaWxlIiB8fCBleGl0IDE7IGZpOyBcCisJICBkb25lOyBcCisJZWxzZSA6OyBmaQorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQoSU5GT19ERVBTKSc7IFwKKwlmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIFwKKwkgIHJlbGZpbGU9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3N8Xi4qL3x8J2A7IFwKKwkgIHJlbGZpbGVfaT1gZWNobyAiJCRyZWxmaWxlIiB8IHNlZCAnc3xcLmluZm8kJHx8O3N8JCR8Lml8J2A7IFwKKwkgIChpZiB0ZXN0IC1kICIkKERFU1RESVIpJChpbmZvZGlyKSIgJiYgY2QgIiQoREVTVERJUikkKGluZm9kaXIpIjsgdGhlbiBcCisJICAgICBlY2hvICIgY2QgJyQoREVTVERJUikkKGluZm9kaXIpJyAmJiBybSAtZiAkJHJlbGZpbGUgJCRyZWxmaWxlLVswLTldICQkcmVsZmlsZS1bMC05XVswLTldICQkcmVsZmlsZV9pWzAtOV0gJCRyZWxmaWxlX2lbMC05XVswLTldIjsgXAorCSAgICAgcm0gLWYgJCRyZWxmaWxlICQkcmVsZmlsZS1bMC05XSAkJHJlbGZpbGUtWzAtOV1bMC05XSAkJHJlbGZpbGVfaVswLTldICQkcmVsZmlsZV9pWzAtOV1bMC05XTsgXAorCSAgIGVsc2UgOjsgZmkpOyBcCisJZG9uZQorCit1bmluc3RhbGwtcGRmLWFtOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQoUERGUyknOyB0ZXN0IC1uICIkKHBkZmRpcikiIHx8IGxpc3Q9OyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICAkKGFtX19zdHJpcF9kaXIpIFwKKwkgIGVjaG8gIiBybSAtZiAnJChERVNURElSKSQocGRmZGlyKS8kJGYnIjsgXAorCSAgcm0gLWYgIiQoREVTVERJUikkKHBkZmRpcikvJCRmIjsgXAorCWRvbmUKKwordW5pbnN0YWxsLXBzLWFtOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQoUFNTKSc7IHRlc3QgLW4gIiQocHNkaXIpIiB8fCBsaXN0PTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgJChhbV9fc3RyaXBfZGlyKSBcCisJICBlY2hvICIgcm0gLWYgJyQoREVTVERJUikkKHBzZGlyKS8kJGYnIjsgXAorCSAgcm0gLWYgIiQoREVTVERJUikkKHBzZGlyKS8kJGYiOyBcCisJZG9uZQorCitkaXN0LWluZm86ICQoSU5GT19ERVBTKQorCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOyBcCisJbGlzdD0nJChJTkZPX0RFUFMpJzsgXAorCWZvciBiYXNlIGluICQkbGlzdDsgZG8gXAorCSAgY2FzZSAkJGJhc2UgaW4gXAorCSAgICAkKHNyY2RpcikvKikgYmFzZT1gZWNobyAiJCRiYXNlIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAorCSAgZXNhYzsgXAorCSAgaWYgdGVzdCAtZiAkJGJhc2U7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAorCSAgYmFzZV9pPWBlY2hvICIkJGJhc2UiIHwgc2VkICdzfFwuaW5mbyQkfHw7c3wkJHwuaXwnYDsgXAorCSAgZm9yIGZpbGUgaW4gJCRkLyQkYmFzZSAkJGQvJCRiYXNlLVswLTldICQkZC8kJGJhc2UtWzAtOV1bMC05XSAkJGQvJCRiYXNlX2lbMC05XSAkJGQvJCRiYXNlX2lbMC05XVswLTldOyBkbyBcCisJICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKKwkgICAgICByZWxmaWxlPWBleHByICIkJGZpbGUiIDogIiQkZC9cKC4qXCkiYDsgXAorCSAgICAgIHRlc3QgLWYgIiQoZGlzdGRpcikvJCRyZWxmaWxlIiB8fCBcCisJCWNwIC1wICQkZmlsZSAiJChkaXN0ZGlyKS8kJHJlbGZpbGUiOyBcCisJICAgIGVsc2UgOjsgZmk7IFwKKwkgIGRvbmU7IFwKKwlkb25lCisKK21vc3RseWNsZWFuLWFtaW5mbzoKKwktcm0gLXJmIG5ldHBlcmYuYXV4IG5ldHBlcmYuY3AgbmV0cGVyZi5jcHMgbmV0cGVyZi5mbiBuZXRwZXJmLmZucyBcCisJICBuZXRwZXJmLmt5IG5ldHBlcmYua3lzIG5ldHBlcmYubG9nIG5ldHBlcmYucGcgbmV0cGVyZi5wZ3MgXAorCSAgbmV0cGVyZi50bXAgbmV0cGVyZi50b2MgbmV0cGVyZi50cCBuZXRwZXJmLnRwcyBuZXRwZXJmLnZyIFwKKwkgIG5ldHBlcmYudnJzCisKK2NsZWFuLWFtaW5mbzoKKwktdGVzdCAteiAibmV0cGVyZi5kdmkgbmV0cGVyZi5wZGYgbmV0cGVyZi5wcyBuZXRwZXJmLmh0bWwiIFwKKwl8fCBybSAtcmYgbmV0cGVyZi5kdmkgbmV0cGVyZi5wZGYgbmV0cGVyZi5wcyBuZXRwZXJmLmh0bWwKKworbWFpbnRhaW5lci1jbGVhbi1hbWluZm86CisJQGxpc3Q9JyQoSU5GT19ERVBTKSc7IGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgaV9pPWBlY2hvICIkJGkiIHwgc2VkICdzfFwuaW5mbyQkfHw7c3wkJHwuaXwnYDsgXAorCSAgZWNobyAiIHJtIC1mICQkaSAkJGktWzAtOV0gJCRpLVswLTldWzAtOV0gJCRpX2lbMC05XSAkJGlfaVswLTldWzAtOV0iOyBcCisJICBybSAtZiAkJGkgJCRpLVswLTldICQkaS1bMC05XVswLTldICQkaV9pWzAtOV0gJCRpX2lbMC05XVswLTldOyBcCisJZG9uZQoraW5zdGFsbC1tYW4xOiAkKG1hbjFfTUFOUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwl0ZXN0IC16ICIkKG1hbjFkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChtYW4xZGlyKSIKKwlAbGlzdD0nJChtYW4xX01BTlMpJzsgdGVzdCAtbiAiJChtYW4xZGlyKSIgfHwgZXhpdCAwOyBcCisJeyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkaSI7IGRvbmU7IFwKKwl9IHwgd2hpbGUgcmVhZCBwOyBkbyBcCisJICBpZiB0ZXN0IC1mICQkcDsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IGVjaG8gIiQkcCI7IFwKKwlkb25lIHwgXAorCXNlZCAtZSAnbjtzLC4qLywsO3A7aDtzLC4qXC4sLDtzLF5bXjFdWzAtOWEtel0qJCQsMSw7eCcgXAorCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJyB8IFwKKwlzZWQgJ047TjtzLFxuLCAsZycgfCB7IFwKKwlsaXN0PTsgd2hpbGUgcmVhZCBmaWxlIGJhc2UgaW5zdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRiYXNlIiA9ICIkJGluc3QiOyB0aGVuIGxpc3Q9IiQkbGlzdCAkJGZpbGUiOyBlbHNlIFwKKwkgICAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRmaWxlJyAnJChERVNURElSKSQobWFuMWRpcikvJCRpbnN0JyI7IFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICIkJGZpbGUiICIkKERFU1RESVIpJChtYW4xZGlyKS8kJGluc3QiIHx8IGV4aXQgJCQ/OyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwlmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIHRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAorCSAgICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKG1hbjFkaXIpJyI7IFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgIiQoREVTVERJUikkKG1hbjFkaXIpIiB8fCBleGl0ICQkPzsgfTsgXAorCWRvbmU7IH0KKwordW5pbnN0YWxsLW1hbjE6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChtYW4xX01BTlMpJzsgdGVzdCAtbiAiJChtYW4xZGlyKSIgfHwgZXhpdCAwOyBcCisJZmlsZXM9YHsgZm9yIGkgaW4gJCRsaXN0OyBkbyBlY2hvICIkJGkiOyBkb25lOyBcCisJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipcLiwsO3MsXlteMV1bMC05YS16XSokJCwxLDt4JyBcCisJICAgICAgLWUgJ3MsXC5bMC05YS16XSokJCwsOyQodHJhbnNmb3JtKTtHO3MsXG4sLiwnYDsgXAorCWRpcj0nJChERVNURElSKSQobWFuMWRpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCisKKyMgVGhpcyBkaXJlY3RvcnkncyBzdWJkaXJlY3RvcmllcyBhcmUgbW9zdGx5IGluZGVwZW5kZW50OyB5b3UgY2FuIGNkCisjIGludG8gdGhlbSBhbmQgcnVuIGBtYWtlJyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhpcyBNYWtlZmlsZS4KKyMgVG8gY2hhbmdlIHRoZSB2YWx1ZXMgb2YgYG1ha2UnIHZhcmlhYmxlczogaW5zdGVhZCBvZiBlZGl0aW5nIE1ha2VmaWxlcywKKyMgKDEpIGlmIHRoZSB2YXJpYWJsZSBpcyBzZXQgaW4gYGNvbmZpZy5zdGF0dXMnLCBlZGl0IGBjb25maWcuc3RhdHVzJworIyAgICAgKHdoaWNoIHdpbGwgY2F1c2UgdGhlIE1ha2VmaWxlcyB0byBiZSByZWdlbmVyYXRlZCB3aGVuIHlvdSBydW4gYG1ha2UnKTsKKyMgKDIpIG90aGVyd2lzZSwgcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgb24gdGhlIGBtYWtlJyBjb21tYW5kIGxpbmUuCiskKFJFQ1VSU0lWRV9UQVJHRVRTKToKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAorCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKKwkgIGNhc2UgJCRmIGluIFwKKwkgICAgKj0qIHwgLS1bIWtdKik7OyBcCisJICAgICprKikgZmFpbGNvbT0nZmFpbD15ZXMnOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwlkb3Rfc2Vlbj1ubzsgXAorCXRhcmdldD1gZWNobyAkQCB8IHNlZCBzLy1yZWN1cnNpdmUvL2A7IFwKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGVjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiBcCisJICAgIGRvdF9zZWVuPXllczsgXAorCSAgICBsb2NhbF90YXJnZXQ9IiQkdGFyZ2V0LWFtIjsgXAorCSAgZWxzZSBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQiOyBcCisJICBmaTsgXAorCSAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSAkJGxvY2FsX3RhcmdldCkgXAorCSAgfHwgZXZhbCAkJGZhaWxjb207IFwKKwlkb25lOyBcCisJaWYgdGVzdCAiJCRkb3Rfc2VlbiIgPSAibm8iOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICIkJHRhcmdldC1hbSIgfHwgZXhpdCAxOyBcCisJZmk7IHRlc3QgLXogIiQkZmFpbCIKKworJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUyk6CisJQGZhaWw9IGZhaWxjb209J2V4aXQgMSc7IFwKKwlmb3IgZiBpbiB4ICQkTUFLRUZMQUdTOyBkbyBcCisJICBjYXNlICQkZiBpbiBcCisJICAgICo9KiB8IC0tWyFrXSopOzsgXAorCSAgICAqayopIGZhaWxjb209J2ZhaWw9eWVzJzs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZG90X3NlZW49bm87IFwKKwljYXNlICIkQCIgaW4gXAorCSAgZGlzdGNsZWFuLSogfCBtYWludGFpbmVyLWNsZWFuLSopIGxpc3Q9JyQoRElTVF9TVUJESVJTKScgOzsgXAorCSAgKikgbGlzdD0nJChTVUJESVJTKScgOzsgXAorCWVzYWM7IFwKKwlyZXY9Jyc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAiLiI7IHRoZW4gOjsgZWxzZSBcCisJICAgIHJldj0iJCRzdWJkaXIgJCRyZXYiOyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwlyZXY9IiQkcmV2IC4iOyBcCisJdGFyZ2V0PWBlY2hvICRAIHwgc2VkIHMvLXJlY3Vyc2l2ZS8vYDsgXAorCWZvciBzdWJkaXIgaW4gJCRyZXY7IGRvIFwKKwkgIGVjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQtYW0iOyBcCisJICBlbHNlIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldCI7IFwKKwkgIGZpOyBcCisJICAoJChhbV9fY2QpICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQkbG9jYWxfdGFyZ2V0KSBcCisJICB8fCBldmFsICQkZmFpbGNvbTsgXAorCWRvbmUgJiYgdGVzdCAteiAiJCRmYWlsIgordGFncy1yZWN1cnNpdmU6CisJbGlzdD0nJChTVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICB0ZXN0ICIkJHN1YmRpciIgPSAuIHx8ICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgdGFncyk7IFwKKwlkb25lCitjdGFncy1yZWN1cnNpdmU6CisJbGlzdD0nJChTVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICB0ZXN0ICIkJHN1YmRpciIgPSAuIHx8ICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgY3RhZ3MpOyBcCisJZG9uZQorCitJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCisJICBkb25lIHwgXAorCSAgJChBV0spICd7IGZpbGVzWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAorCSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07IH0nYDsgXAorCW1raWQgLWZJRCAkJHVuaXF1ZQordGFnczogVEFHUworCitUQUdTOiB0YWdzLXJlY3Vyc2l2ZSAkKEhFQURFUlMpICQoU09VUkNFUykgICQoVEFHU19ERVBFTkRFTkNJRVMpIFwKKwkJJChUQUdTX0ZJTEVTKSAkKExJU1ApCisJc2V0IHg7IFwKKwloZXJlPWBwd2RgOyBcCisJaWYgKCQoRVRBR1MpIC0tZXRhZ3MtaW5jbHVkZSAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICBpbmNsdWRlX29wdGlvbj0tLWV0YWdzLWluY2x1ZGU7IFwKKwkgIGVtcHR5X2ZpeD0uOyBcCisJZWxzZSBcCisJICBpbmNsdWRlX29wdGlvbj0tLWluY2x1ZGU7IFwKKwkgIGVtcHR5X2ZpeD07IFwKKwlmaTsgXAorCWxpc3Q9JyQoU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgdGVzdCAhIC1mICQkc3ViZGlyL1RBR1MgfHwgXAorCSAgICAgIHNldCAiJCRAIiAiJCRpbmNsdWRlX29wdGlvbj0kJGhlcmUvJCRzdWJkaXIvVEFHUyI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZG9uZSB8IFwKKwkgICQoQVdLKSAneyBmaWxlc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9OyB9J2A7IFwKKwlzaGlmdDsgXAorCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCisJICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCisJICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAorCSAgZWxzZSBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAkJHVuaXF1ZTsgXAorCSAgZmk7IFwKKwlmaQorY3RhZ3M6IENUQUdTCitDVEFHUzogY3RhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXAorCQkkKFRBR1NfRklMRVMpICQoTElTUCkKKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdW5pcXVlIiBcCisJICB8fCAkKENUQUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcCisJICAgICAkJHVuaXF1ZQorCitHVEFHUzoKKwloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXAorCSAgJiYgJChhbV9fY2QpICQodG9wX3NyY2RpcikgXAorCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIgorCitkaXN0Y2xlYW4tdGFnczoKKwktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncworCitkaXN0ZGlyOiAkKERJU1RGSUxFUykKKwlAbGlzdD0nJChNQU5TKSc7IGlmIHRlc3QgLW4gIiQkbGlzdCI7IHRoZW4gXAorCSAgbGlzdD1gZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgJCRwOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgICBpZiB0ZXN0IC1mICIkJGQkJHAiOyB0aGVuIGVjaG8gIiQkZCQkcCI7IGVsc2UgOjsgZmk7IGRvbmVgOyBcCisJICBpZiB0ZXN0IC1uICIkJGxpc3QiICYmIFwKKwkgICAgZ3JlcCAnYWIgaGVscDJtYW4gaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWdlJyAkJGxpc3QgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgIGVjaG8gImVycm9yOiBmb3VuZCBtYW4gcGFnZXMgY29udGFpbmluZyB0aGUgXGBtaXNzaW5nIGhlbHAybWFuJyByZXBsYWNlbWVudCB0ZXh0OiIgPiYyOyBcCisJICAgIGdyZXAgLWwgJ2FiIGhlbHAybWFuIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoaXMgcGFnZScgJCRsaXN0IHwgc2VkICdzL14vICAgICAgICAgLycgPiYyOyBcCisJICAgIGVjaG8gIiAgICAgICB0byBmaXggdGhlbSwgaW5zdGFsbCBoZWxwMm1hbiwgcmVtb3ZlIGFuZCByZWdlbmVyYXRlIHRoZSBtYW4gcGFnZXM7IiA+JjI7IFwKKwkgICAgZWNobyAiICAgICAgIHR5cGljYWxseSBcYG1ha2UgbWFpbnRhaW5lci1jbGVhbicgd2lsbCByZW1vdmUgdGhlbSIgPiYyOyBcCisJICAgIGV4aXQgMTsgXAorCSAgZWxzZSA6OyBmaTsgXAorCWVsc2UgOjsgZmkKKwlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCWxpc3Q9JyQoRElTVEZJTEVTKSc7IFwKKwkgIGRpc3RfZmlsZXM9YGZvciBmaWxlIGluICQkbGlzdDsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBcCisJICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAvfHw7dCIgXAorCSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKKwljYXNlICQkZGlzdF9maWxlcyBpbiBcCisJICAqLyopICQoTUtESVJfUCkgYGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCisJCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcgfCBcCisJCQkgICBzb3J0IC11YCA7OyBcCisJZXNhYzsgXAorCWZvciBmaWxlIGluICQkZGlzdF9maWxlczsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGUgfHwgdGVzdCAtZCAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAorCSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKKwkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSokJCwsJ2A7IFwKKwkgICAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJGZpbGUiOyB0aGVuIFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgaWYgdGVzdCAtZCAkKHNyY2RpcikvJCRmaWxlICYmIHRlc3QgJCRkICE9ICQoc3JjZGlyKTsgdGhlbiBcCisJICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICBlbHNlIFwKKwkgICAgdGVzdCAtZiAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwlAbGlzdD0nJChESVNUX1NVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9IC47IHRoZW4gOjsgZWxzZSBcCisJICAgIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRzdWJkaXIiIFwKKwkgICAgfHwgJChNS0RJUl9QKSAiJChkaXN0ZGlyKS8kJHN1YmRpciIgXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorCUBsaXN0PSckKERJU1RfU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgZGlyMT0kJHN1YmRpcjsgZGlyMj0iJChkaXN0ZGlyKS8kJHN1YmRpciI7IFwKKwkgICAgJChhbV9fcmVsYXRpdml6ZSk7IFwKKwkgICAgbmV3X2Rpc3RkaXI9JCRyZWxkaXI7IFwKKwkgICAgZGlyMT0kJHN1YmRpcjsgZGlyMj0iJCh0b3BfZGlzdGRpcikiOyBcCisJICAgICQoYW1fX3JlbGF0aXZpemUpOyBcCisJICAgIG5ld190b3BfZGlzdGRpcj0kJHJlbGRpcjsgXAorCSAgICBlY2hvICIgKGNkICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHRvcF9kaXN0ZGlyPSIkJG5ld190b3BfZGlzdGRpciIgZGlzdGRpcj0iJCRuZXdfZGlzdGRpciIgXFwiOyBcCisJICAgIGVjaG8gIiAgICAgYW1fX3JlbW92ZV9kaXN0ZGlyPTogYW1fX3NraXBfbGVuZ3RoX2NoZWNrPTogYW1fX3NraXBfbW9kZV9maXg9OiBkaXN0ZGlyKSI7IFwKKwkgICAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiBcCisJICAgICAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgXAorCSAgICAgICAgdG9wX2Rpc3RkaXI9IiQkbmV3X3RvcF9kaXN0ZGlyIiBcCisJICAgICAgICBkaXN0ZGlyPSIkJG5ld19kaXN0ZGlyIiBcCisJCWFtX19yZW1vdmVfZGlzdGRpcj06IFwKKwkJYW1fX3NraXBfbGVuZ3RoX2NoZWNrPTogXAorCQlhbV9fc2tpcF9tb2RlX2ZpeD06IFwKKwkgICAgICAgIGRpc3RkaXIpIFwKKwkgICAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIFwKKwkgIHRvcF9kaXN0ZGlyPSIkKHRvcF9kaXN0ZGlyKSIgZGlzdGRpcj0iJChkaXN0ZGlyKSIgXAorCSAgZGlzdC1pbmZvCitjaGVjay1hbTogYWxsLWFtCitjaGVjazogY2hlY2stcmVjdXJzaXZlCithbGwtYW06IE1ha2VmaWxlICQoSU5GT19ERVBTKSAkKE1BTlMpCitpbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtcmVjdXJzaXZlCitpbnN0YWxsZGlycy1hbToKKwlmb3IgZGlyIGluICIkKERFU1RESVIpJChpbmZvZGlyKSIgIiQoREVTVERJUikkKG1hbjFkaXIpIjsgZG8gXAorCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsgXAorCWRvbmUKK2luc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlCitpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1yZWN1cnNpdmUKK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZQordW5pbnN0YWxsOiB1bmluc3RhbGwtcmVjdXJzaXZlCisKK2luc3RhbGwtYW06IGFsbC1hbQorCUAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtCisKK2luc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZQoraW5zdGFsbC1zdHJpcDoKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKK21vc3RseWNsZWFuLWdlbmVyaWM6CisKK2NsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ0xFQU5GSUxFUykiIHx8IHJtIC1mICQoQ0xFQU5GSUxFUykKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCisKK21haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorY2xlYW46IGNsZWFuLXJlY3Vyc2l2ZQorCitjbGVhbi1hbTogY2xlYW4tYW1pbmZvIGNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tYW0KKworZGlzdGNsZWFuOiBkaXN0Y2xlYW4tcmVjdXJzaXZlCisJLXJtIC1mIE1ha2VmaWxlCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi10YWdzCisKK2R2aTogZHZpLXJlY3Vyc2l2ZQorCitkdmktYW06ICQoRFZJUykKKworaHRtbDogaHRtbC1yZWN1cnNpdmUKKworaHRtbC1hbTogJChIVE1MUykKKworaW5mbzogaW5mby1yZWN1cnNpdmUKKworaW5mby1hbTogJChJTkZPX0RFUFMpCisKK2luc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuCisKK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1yZWN1cnNpdmUKKworaW5zdGFsbC1kdmktYW06ICQoRFZJUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwl0ZXN0IC16ICIkKGR2aWRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKGR2aWRpcikiCisJQGxpc3Q9JyQoRFZJUyknOyB0ZXN0IC1uICIkKGR2aWRpcikiIHx8IGxpc3Q9OyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQoZHZpZGlyKSciOyBcCisJICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQoZHZpZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lCitpbnN0YWxsLWV4ZWMtYW06CisKK2luc3RhbGwtaHRtbDogaW5zdGFsbC1odG1sLXJlY3Vyc2l2ZQorCitpbnN0YWxsLWh0bWwtYW06ICQoSFRNTFMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChodG1sZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQoaHRtbGRpcikiCisJQGxpc3Q9JyQoSFRNTFMpJzsgbGlzdDI9OyB0ZXN0IC1uICIkKGh0bWxkaXIpIiB8fCBsaXN0PTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIiB8fCB0ZXN0IC1kICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgJChhbV9fc3RyaXBfZGlyKSBcCisJICBkMj0kJGQkJHA7IFwKKwkgIGlmIHRlc3QgLWQgIiQkZDIiOyB0aGVuIFwKKwkgICAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCisJICAgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiIgfHwgZXhpdCAxOyBcCisJICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZDInLyogJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCisJICAgICQoSU5TVEFMTF9EQVRBKSAiJCRkMiIvKiAiJChERVNURElSKSQoaHRtbGRpcikvJCRmIiB8fCBleGl0ICQkPzsgXAorCSAgZWxzZSBcCisJICAgIGxpc3QyPSIkJGxpc3QyICQkZDIiOyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwl0ZXN0IC16ICIkJGxpc3QyIiB8fCB7IGVjaG8gIiQkbGlzdDIiIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKGh0bWxkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChodG1sZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lOyB9CitpbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1yZWN1cnNpdmUKKworaW5zdGFsbC1pbmZvLWFtOiAkKElORk9fREVQUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwl0ZXN0IC16ICIkKGluZm9kaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChpbmZvZGlyKSIKKwlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsgXAorCWxpc3Q9JyQoSU5GT19ERVBTKSc7IHRlc3QgLW4gIiQoaW5mb2RpcikiIHx8IGxpc3Q9OyBcCisJZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBcCisJICBjYXNlICQkZmlsZSBpbiBcCisJICAgICQoc3JjZGlyKS8qKSBmaWxlPWBlY2hvICIkJGZpbGUiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCisJICBlc2FjOyBcCisJICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBkPS47IGVsc2UgZD0kKHNyY2Rpcik7IGZpOyBcCisJICBmaWxlX2k9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3N8XC5pbmZvJCR8fDtzfCQkfC5pfCdgOyBcCisJICBmb3IgaWZpbGUgaW4gJCRkLyQkZmlsZSAkJGQvJCRmaWxlLVswLTldICQkZC8kJGZpbGUtWzAtOV1bMC05XSBcCisJICAgICAgICAgICAgICAgJCRkLyQkZmlsZV9pWzAtOV0gJCRkLyQkZmlsZV9pWzAtOV1bMC05XSA7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAkJGlmaWxlOyB0aGVuIFwKKwkgICAgICBlY2hvICIkJGlmaWxlIjsgXAorCSAgICBlbHNlIDogOyBmaTsgXAorCSAgZG9uZTsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQoaW5mb2RpciknIjsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgIiQoREVTVERJUikkKGluZm9kaXIpIiB8fCBleGl0ICQkPzsgZG9uZQorCUAkKFBPU1RfSU5TVEFMTCkKKwlAYW1fX3J1bl9pbnN0YWxsaW5mbz15ZXM7IFwKKwljYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKKwkgIG58bm98Tk8pIGFtX19ydW5faW5zdGFsbGluZm89bm87OyBcCisJICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxIFwKKwkgICAgICAgfHwgYW1fX3J1bl9pbnN0YWxsaW5mbz1ubzs7IFwKKwllc2FjOyBcCisJaWYgdGVzdCAkJGFtX19ydW5faW5zdGFsbGluZm8gPSB5ZXM7IHRoZW4gXAorCSAgbGlzdD0nJChJTkZPX0RFUFMpJzsgdGVzdCAtbiAiJChpbmZvZGlyKSIgfHwgbGlzdD07IFwKKwkgIGZvciBmaWxlIGluICQkbGlzdDsgZG8gXAorCSAgICByZWxmaWxlPWBlY2hvICIkJGZpbGUiIHwgc2VkICdzfF4uKi98fCdgOyBcCisJICAgIGVjaG8gIiBpbnN0YWxsLWluZm8gLS1pbmZvLWRpcj0nJChERVNURElSKSQoaW5mb2RpciknICckKERFU1RESVIpJChpbmZvZGlyKS8kJHJlbGZpbGUnIjtcCisJICAgIGluc3RhbGwtaW5mbyAtLWluZm8tZGlyPSIkKERFU1RESVIpJChpbmZvZGlyKSIgIiQoREVTVERJUikkKGluZm9kaXIpLyQkcmVsZmlsZSIgfHwgOjtcCisJICBkb25lOyBcCisJZWxzZSA6IDsgZmkKK2luc3RhbGwtbWFuOiBpbnN0YWxsLW1hbjEKKworaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLXJlY3Vyc2l2ZQorCitpbnN0YWxsLXBkZi1hbTogJChQREZTKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCXRlc3QgLXogIiQocGRmZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQocGRmZGlyKSIKKwlAbGlzdD0nJChQREZTKSc7IHRlc3QgLW4gIiQocGRmZGlyKSIgfHwgbGlzdD07IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBlY2hvICIkJGQkJHAiOyBcCisJZG9uZSB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCisJd2hpbGUgcmVhZCBmaWxlczsgZG8gXAorCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICckKERFU1RESVIpJChwZGZkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChwZGZkaXIpIiB8fCBleGl0ICQkPzsgZG9uZQoraW5zdGFsbC1wczogaW5zdGFsbC1wcy1yZWN1cnNpdmUKKworaW5zdGFsbC1wcy1hbTogJChQU1MpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChwc2RpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKHBzZGlyKSIKKwlAbGlzdD0nJChQU1MpJzsgdGVzdCAtbiAiJChwc2RpcikiIHx8IGxpc3Q9OyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQocHNkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChwc2RpcikiIHx8IGV4aXQgJCQ/OyBkb25lCitpbnN0YWxsY2hlY2stYW06CisKK21haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tcmVjdXJzaXZlCisJLXJtIC1mIE1ha2VmaWxlCittYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYworCittb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tcmVjdXJzaXZlCisKK21vc3RseWNsZWFuLWFtOiBtb3N0bHljbGVhbi1hbWluZm8gbW9zdGx5Y2xlYW4tZ2VuZXJpYworCitwZGY6IHBkZi1yZWN1cnNpdmUKKworcGRmLWFtOiAkKFBERlMpCisKK3BzOiBwcy1yZWN1cnNpdmUKKworcHMtYW06ICQoUFNTKQorCit1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1kdmktYW0gdW5pbnN0YWxsLWh0bWwtYW0gdW5pbnN0YWxsLWluZm8tYW0gXAorCXVuaW5zdGFsbC1tYW4gdW5pbnN0YWxsLXBkZi1hbSB1bmluc3RhbGwtcHMtYW0KKwordW5pbnN0YWxsLW1hbjogdW5pbnN0YWxsLW1hbjEKKworLk1BS0U6ICQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMpICQoUkVDVVJTSVZFX1RBUkdFVFMpIGN0YWdzLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwIHRhZ3MtcmVjdXJzaXZlCisKKy5QSE9OWTogJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUykgJChSRUNVUlNJVkVfVEFSR0VUUykgQ1RBR1MgR1RBR1MgXAorCWFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tYW1pbmZvIGNsZWFuLWdlbmVyaWMgXAorCWN0YWdzIGN0YWdzLXJlY3Vyc2l2ZSBkaXN0LWluZm8gZGlzdGNsZWFuIGRpc3RjbGVhbi1nZW5lcmljIFwKKwlkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBcCisJaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgXAorCWluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIFwKKwlpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBcCisJaW5zdGFsbC1tYW4xIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgXAorCWluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIFwKKwlpbnN0YWxsZGlycyBpbnN0YWxsZGlycy1hbSBtYWludGFpbmVyLWNsZWFuIFwKKwltYWludGFpbmVyLWNsZWFuLWFtaW5mbyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAorCW1vc3RseWNsZWFuLWFtaW5mbyBtb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gXAorCXRhZ3MgdGFncy1yZWN1cnNpdmUgdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSB1bmluc3RhbGwtZHZpLWFtIFwKKwl1bmluc3RhbGwtaHRtbC1hbSB1bmluc3RhbGwtaW5mby1hbSB1bmluc3RhbGwtbWFuIFwKKwl1bmluc3RhbGwtbWFuMSB1bmluc3RhbGwtcGRmLWFtIHVuaW5zdGFsbC1wcy1hbQorCisKK25ldHBlcmYuaHRtbDogJChpbmZvX1RFWElORk9TKQorCSQoTUFLRUlORk8pICQoQU1fTUFLRUlORk9GTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtLWh0bWwgLS1uby1zcGxpdCAtSSAkKHNyY2RpcikgXAorICAgICAgICAgLW8gJEAgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPAorCituZXRwZXJmLnR4dDogJChpbmZvX1RFWElORk9TKQorCSQoTUFLRUlORk8pICQoQU1fTUFLRUlORk9GTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtLXBsYWludGV4dCAtSSAkKHNyY2RpcikgXAorICAgICAgICAgLW8gJEAgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPAorCituZXRwZXJmLnhtbDogJChpbmZvX1RFWElORk9TKQorCSQoTUFLRUlORk8pICQoQU1fTUFLRUlORk9GTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtLXhtbCAtSSAkKHNyY2RpcikgXAorICAgICAgICAgLW8gJEAgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPAorCisjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLgorIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCisuTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvTWFrZWZpbGUuYW0gYi9kb2MvZXhhbXBsZXMvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ5YTU3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9leGFtcGxlcy9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDE4IEBACitFWFRSQV9ESVNUID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBhcnJfc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHBhY2tldF9ieXRlX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgc2N0cF9zdHJlYW1fc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBzbmFwc2hvdF9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHRjcF9yYW5nZV9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgdGNwX3JyX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICB0Y3Bfc3RyZWFtX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHVkcF9ycl9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgdWRwX3N0cmVhbV9zY3JpcHQgXAorCWJsb2F0LnNoIFwKKwlydW5lbW9tbmlhZ2dkZW1vLnNoIFwKKwlydW5lbW9tbmlhZ2cyLnNoIFwKKwlydW5lbW9tbmkuc2gKKwluZXRwZXJmX2J5X2ZsYXZvci5weSBcCisJcG9zdF9wcm9jLnB5IFwKKwlmaW5kX21heF9idXJzdC5zaAorCmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvTWFrZWZpbGUuaW4gYi9kb2MvZXhhbXBsZXMvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjNzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9leGFtcGxlcy9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDM1NCBAQAorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCisjIEBjb25maWd1cmVfaW5wdXRACisKKyMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgorIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworQFNFVF9NQUtFQAorVlBBVEggPSBAc3JjZGlyQAorcGtnZGF0YWRpciA9ICQoZGF0YWRpcikvQFBBQ0tBR0VACitwa2dpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9AUEFDS0FHRUAKK3BrZ2xpYmRpciA9ICQobGliZGlyKS9AUEFDS0FHRUAKK3BrZ2xpYmV4ZWNkaXIgPSAkKGxpYmV4ZWNkaXIpL0BQQUNLQUdFQAorYW1fX2NkID0gQ0RQQVRIPSIkJHtaU0hfVkVSU0lPTisufSQoUEFUSF9TRVBBUkFUT1IpIiAmJiBjZAoraW5zdGFsbF9zaF9EQVRBID0gJChpbnN0YWxsX3NoKSAtYyAtbSA2NDQKK2luc3RhbGxfc2hfUFJPR1JBTSA9ICQoaW5zdGFsbF9zaCkgLWMKK2luc3RhbGxfc2hfU0NSSVBUID0gJChpbnN0YWxsX3NoKSAtYworSU5TVEFMTF9IRUFERVIgPSAkKElOU1RBTExfREFUQSkKK3RyYW5zZm9ybSA9ICQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSkKK05PUk1BTF9JTlNUQUxMID0gOgorUFJFX0lOU1RBTEwgPSA6CitQT1NUX0lOU1RBTEwgPSA6CitOT1JNQUxfVU5JTlNUQUxMID0gOgorUFJFX1VOSU5TVEFMTCA9IDoKK1BPU1RfVU5JTlNUQUxMID0gOgorYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKK2hvc3RfdHJpcGxldCA9IEBob3N0QAordGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAorc3ViZGlyID0gZG9jL2V4YW1wbGVzCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHNyY2RpcikvTWFrZWZpbGUuaW4KK0FDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKK2FtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL3NyYy9taXNzaW5nL200L3NhbGVuLm00IFwKKwkkKHRvcF9zcmNkaXIpL2FjaW5jbHVkZS5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKKwkkKEFDTE9DQUxfTTQpCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzCitDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCitDT05GSUdfQ0xFQU5fRklMRVMgPQorQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KK1NPVVJDRVMgPQorRElTVF9TT1VSQ0VTID0KK0RJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCitBQ0xPQ0FMID0gQEFDTE9DQUxACitBTVRBUiA9IEBBTVRBUkAKK0FVVE9DT05GID0gQEFVVE9DT05GQAorQVVUT0hFQURFUiA9IEBBVVRPSEVBREVSQAorQVVUT01BS0UgPSBAQVVUT01BS0VACitBV0sgPSBAQVdLQAorQ0MgPSBAQ0NACitDQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAorQ0ZMQUdTID0gQENGTEFHU0AKK0NQUCA9IEBDUFBACitDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NZR1BBVEhfVyA9IEBDWUdQQVRIX1dACitERUZTID0gQERFRlNACitERVBESVIgPSBAREVQRElSQAorRUNIT19DID0gQEVDSE9fQ0AKK0VDSE9fTiA9IEBFQ0hPX05ACitFQ0hPX1QgPSBARUNIT19UQAorRUdSRVAgPSBARUdSRVBACitFWEVFWFQgPSBARVhFRVhUQAorR1JFUCA9IEBHUkVQQAorSU5TVEFMTCA9IEBJTlNUQUxMQAorSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACitJTlNUQUxMX1NDUklQVCA9IEBJTlNUQUxMX1NDUklQVEAKK0lOU1RBTExfU1RSSVBfUFJPR1JBTSA9IEBJTlNUQUxMX1NUUklQX1BST0dSQU1ACitMREZMQUdTID0gQExERkxBR1NACitMSUJPQkpTID0gQExJQk9CSlNACitMSUJTID0gQExJQlNACitMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTUFLRUlORk8gPSBATUFLRUlORk9ACitNS0RJUl9QID0gQE1LRElSX1BACitORVRDUFVfU09VUkNFID0gQE5FVENQVV9TT1VSQ0VACitPQkpFWFQgPSBAT0JKRVhUQAorUEFDS0FHRSA9IEBQQUNLQUdFQAorUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACitQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAorUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACitQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACitQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAorUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACitSQU5MSUIgPSBAUkFOTElCQAorU0VUX01BS0UgPSBAU0VUX01BS0VACitTSEVMTCA9IEBTSEVMTEAKK1NUUklQID0gQFNUUklQQAorVkVSU0lPTiA9IEBWRVJTSU9OQAorYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKK2Fic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKK2Fic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKK2Fic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACithbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKK2FtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACithbV9fcXVvdGUgPSBAYW1fX3F1b3RlQAorYW1fX3RhciA9IEBhbV9fdGFyQAorYW1fX3VudGFyID0gQGFtX191bnRhckAKK2JpbmRpciA9IEBiaW5kaXJACitidWlsZCA9IEBidWlsZEAKK2J1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAorYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUAKK2J1aWxkX29zID0gQGJ1aWxkX29zQAorYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKK2J1aWxkZGlyID0gQGJ1aWxkZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitkb2NkaXIgPSBAZG9jZGlyQAorZHZpZGlyID0gQGR2aWRpckAKK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAoraG9zdCA9IEBob3N0QAoraG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAoraG9zdF9jcHUgPSBAaG9zdF9jcHVACitob3N0X29zID0gQGhvc3Rfb3NACitob3N0X3ZlbmRvciA9IEBob3N0X3ZlbmRvckAKK2h0bWxkaXIgPSBAaHRtbGRpckAKK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKK2luZm9kaXIgPSBAaW5mb2RpckAKK2luc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKK2xpYmRpciA9IEBsaWJkaXJACitsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACitsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAorbWFuZGlyID0gQG1hbmRpckAKK21rZGlyX3AgPSBAbWtkaXJfcEAKK29sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKK3BkZmRpciA9IEBwZGZkaXJACitwcmVmaXggPSBAcHJlZml4QAorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAorcHNkaXIgPSBAcHNkaXJACitzYmluZGlyID0gQHNiaW5kaXJACitzaGFyZWRzdGF0ZWRpciA9IEBzaGFyZWRzdGF0ZWRpckAKK3NyY2RpciA9IEBzcmNkaXJACitzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACit0YXJnZXQgPSBAdGFyZ2V0QAordGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlhc0AKK3RhcmdldF9jcHUgPSBAdGFyZ2V0X2NwdUAKK3RhcmdldF9vcyA9IEB0YXJnZXRfb3NACit0YXJnZXRfdmVuZG9yID0gQHRhcmdldF92ZW5kb3JACit0b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACit0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorRVhUUkFfRElTVCA9IFwKKyAgICAgICBhcnJfc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHBhY2tldF9ieXRlX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgc2N0cF9zdHJlYW1fc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBzbmFwc2hvdF9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHRjcF9yYW5nZV9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgdGNwX3JyX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICB0Y3Bfc3RyZWFtX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHVkcF9ycl9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgdWRwX3N0cmVhbV9zY3JpcHQgXAorCWJsb2F0LnNoIFwKKwlydW5lbW9tbmlhZ2dkZW1vLnNoIFwKKwlydW5lbW9tbmlhZ2cyLnNoIFwKKwlydW5lbW9tbmkuc2gKKworYWxsOiBhbGwtYW0KKworLlNVRkZJWEVTOgorJChzcmNkaXIpL01ha2VmaWxlLmluOiAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKKwlAZm9yIGRlcCBpbiAkPzsgZG8gXAorCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCisJICAgICokJGRlcCopIFwKKwkgICAgICAoIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaCApIFwKKwkgICAgICAgICYmIHsgaWYgdGVzdCAtZiAkQDsgdGhlbiBleGl0IDA7IGVsc2UgYnJlYWs7IGZpOyB9OyBcCisJICAgICAgZXhpdCAxOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBkb2MvZXhhbXBsZXMvTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgZG9jL2V4YW1wbGVzL01ha2VmaWxlCisuUFJFQ0lPVVM6IE1ha2VmaWxlCitNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQGNhc2UgJyQ/JyBpbiBcCisJICAqY29uZmlnLnN0YXR1cyopIFwKKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoOzsgXAorCSAgKikgXAorCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcCisJZXNhYzsKKworJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCisKKyQodG9wX3NyY2RpcikvY29uZmlndXJlOiAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKEFDTE9DQUxfTTQpOiAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKK3RhZ3M6IFRBR1MKK1RBR1M6CisKK2N0YWdzOiBDVEFHUworQ1RBR1M6CisKKworZGlzdGRpcjogJChESVNURklMRVMpCisJQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCXRvcHNyY2RpcnN0cmlwPWBlY2hvICIkKHRvcF9zcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKwlsaXN0PSckKERJU1RGSUxFUyknOyBcCisJICBkaXN0X2ZpbGVzPWBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgXAorCSAgc2VkIC1lICJzfF4kJHNyY2RpcnN0cmlwL3x8O3QiIFwKKwkgICAgICAtZSAic3xeJCR0b3BzcmNkaXJzdHJpcC98JCh0b3BfYnVpbGRkaXIpL3w7dCJgOyBcCisJY2FzZSAkJGRpc3RfZmlsZXMgaW4gXAorCSAgKi8qKSAkKE1LRElSX1ApIGBlY2hvICIkJGRpc3RfZmlsZXMiIHwgXAorCQkJICAgc2VkICcvXC8vIWQ7c3xefCQoZGlzdGRpcikvfDtzLC9bXi9dKiQkLCwnIHwgXAorCQkJICAgc29ydCAtdWAgOzsgXAorCWVzYWM7IFwKKwlmb3IgZmlsZSBpbiAkJGRpc3RfZmlsZXM7IGRvIFwKKwkgIGlmIHRlc3QgLWYgJCRmaWxlIHx8IHRlc3QgLWQgJCRmaWxlOyB0aGVuIGQ9LjsgZWxzZSBkPSQoc3JjZGlyKTsgZmk7IFwKKwkgIGlmIHRlc3QgLWQgJCRkLyQkZmlsZTsgdGhlbiBcCisJICAgIGRpcj1gZWNobyAiLyQkZmlsZSIgfCBzZWQgLWUgJ3MsL1teL10qJCQsLCdgOyBcCisJICAgIGlmIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWxlIjsgdGhlbiBcCisJICAgICAgZmluZCAiJChkaXN0ZGlyKS8kJGZpbGUiIC10eXBlIGQgISAtcGVybSAtNzAwIC1leGVjIGNobW9kIHUrcnd4IHt9IFw7OyBcCisJICAgIGZpOyBcCisJICAgIGlmIHRlc3QgLWQgJChzcmNkaXIpLyQkZmlsZSAmJiB0ZXN0ICQkZCAhPSAkKHNyY2Rpcik7IHRoZW4gXAorCSAgICAgIGNwIC1mcFIgJChzcmNkaXIpLyQkZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgY3AgLWZwUiAkJGQvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgZWxzZSBcCisJICAgIHRlc3QgLWYgIiQoZGlzdGRpcikvJCRmaWxlIiBcCisJICAgIHx8IGNwIC1wICQkZC8kJGZpbGUgIiQoZGlzdGRpcikvJCRmaWxlIiBcCisJICAgIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCitjaGVjay1hbTogYWxsLWFtCitjaGVjazogY2hlY2stYW0KK2FsbC1hbTogTWFrZWZpbGUKK2luc3RhbGxkaXJzOgoraW5zdGFsbDogaW5zdGFsbC1hbQoraW5zdGFsbC1leGVjOiBpbnN0YWxsLWV4ZWMtYW0KK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtCit1bmluc3RhbGw6IHVuaW5zdGFsbC1hbQorCitpbnN0YWxsLWFtOiBhbGwtYW0KKwlAJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtZGF0YS1hbQorCitpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQoraW5zdGFsbC1zdHJpcDoKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKK21vc3RseWNsZWFuLWdlbmVyaWM6CisKK2NsZWFuLWdlbmVyaWM6CisKK2Rpc3RjbGVhbi1nZW5lcmljOgorCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQorCS10ZXN0IC4gPSAiJChzcmNkaXIpIiB8fCB0ZXN0IC16ICIkKENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKQorCittYWludGFpbmVyLWNsZWFuLWdlbmVyaWM6CisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlIgorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKK2NsZWFuOiBjbGVhbi1hbQorCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1hbQorCitkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQorCS1ybSAtZiBNYWtlZmlsZQorZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tZ2VuZXJpYworCitkdmk6IGR2aS1hbQorCitkdmktYW06CisKK2h0bWw6IGh0bWwtYW0KKworaHRtbC1hbToKKworaW5mbzogaW5mby1hbQorCitpbmZvLWFtOgorCitpbnN0YWxsLWRhdGEtYW06CisKK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQorCitpbnN0YWxsLWR2aS1hbToKKworaW5zdGFsbC1leGVjLWFtOgorCitpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1hbQorCitpbnN0YWxsLWh0bWwtYW06CisKK2luc3RhbGwtaW5mbzogaW5zdGFsbC1pbmZvLWFtCisKK2luc3RhbGwtaW5mby1hbToKKworaW5zdGFsbC1tYW46CisKK2luc3RhbGwtcGRmOiBpbnN0YWxsLXBkZi1hbQorCitpbnN0YWxsLXBkZi1hbToKKworaW5zdGFsbC1wczogaW5zdGFsbC1wcy1hbQorCitpbnN0YWxsLXBzLWFtOgorCitpbnN0YWxsY2hlY2stYW06CisKK21haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tYW0KKwktcm0gLWYgTWFrZWZpbGUKK21haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKKworbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLWFtCisKK21vc3RseWNsZWFuLWFtOiBtb3N0bHljbGVhbi1nZW5lcmljCisKK3BkZjogcGRmLWFtCisKK3BkZi1hbToKKworcHM6IHBzLWFtCisKK3BzLWFtOgorCit1bmluc3RhbGwtYW06CisKKy5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKKworLlBIT05ZOiBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuIFwKKwlkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBcCisJaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgXAorCWluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIFwKKwlpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBcCisJaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIFwKKwlpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgXAorCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKKwltb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbQorCisJbmV0cGVyZl9ieV9mbGF2b3IucHkgXAorCXBvc3RfcHJvYy5weSBcCisJZmluZF9tYXhfYnVyc3Quc2gKKworIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4KKyMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLk5PRVhQT1JUOgpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL2Fycl9zY3JpcHQgYi9kb2MvZXhhbXBsZXMvYXJyX3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYmNmM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4YW1wbGVzL2Fycl9zY3JpcHQKQEAgLTAsMCArMSwzODYgQEAKKyMgdGhpcyBpcyByZXRhaW5lZCBtb3N0bHkgZm9yIGhpc3RvcmljYWwgcHVycG9zZXMgYW5kIG1heSBub3QgYmUKKyMgdXAgdG8gZGF0ZSBmb3IgY29udGVtcG9yYXJ5IG5ldHBlcmYgdmVyc2lvbnMKKyMKKyMgYSBzY3JpcHQgdGhhdCBjYW4gYmUgdXNlZCB0byBtZWFzdXJlIGFnZ3JlZ2F0ZSBuZXRwZXJmIHBlcmZvcm1hbmNlLAorIyBvcmlnaW5hbCBhdXRob3IgaXMgTWlrZSBUcmF5bm9yLiBNb2RpZmljYXRpb25zIHRvIGNyZWF0ZSB0aGUKKyMgIm5ldHBlcmYgVENQX0FSUiB0ZXN0IiBieSByaWNrIGpvbmVzCisjCisKK2luaXRfcGFybXMoKSB7CisgIFRFU1RfVElNRT02MAorICBOVEVTVD0zCisgIFRPTEVSQU5DRT0xNQorICBNQVhfUkVUUklFUz0zCisKKyAgTkVUUEVSRj0iL3Vzci9sb2NhbC9uZXRwZXJmL25ldHBlcmYiCisgIE5FVFBFUkY9Ii4vbmV0cGVyZiIKKworICBOUFJPQ19MSVNUPSIiCisgIFJSX1NJWkVTPSIiCisgIFJFTV9IT1NUX0xJU1Q9IiIKKyAgREVWRklMRUxJU1Q9IiIKKyAgTExBPTAKKyAgVENQPTEKKyAgVURQPTAKKyAgR1BST0Y9MAorfQorCitzZXRfZGVmYXVsdF9wYXJtcygpIHsKKyAgaWYgWyAiWCROUFJPQ19MSVNUIiA9ICJYIiBdCisgIHRoZW4KKyAgICBOUFJPQ19MSVNUPSIxIgorICBmaQorICAKKyAgaWYgWyAiWCRSRU1fSE9TVF9MSVNUIiA9ICJYIiBdCisgIHRoZW4KKyAgICBSRU1fSE9TVF9MSVNUPSIxMjcuMC4wLjEiCisgIGZpCisKKyAgaWYgWyAiWCRSUl9TSVpFUyIgPSAiWCIgXQorICB0aGVuCisgICAgUlJfU0laRVM9IjEsMSIKKyAgZmkKKworICBOSE9TVFM9YGVjaG8gJFJFTV9IT1NUX0xJU1QgfCBhd2sgJ3twcmludGYgIiVkIixORn0nYAorICBHUFJPRl9SVU5fVElNRT1gZXhwciAkVEVTVF9USU1FIC0gMjBgCit9CisKK3VzYWdlKCkgeworbW9yZSA8PCBARU9GCisKKyQqCisKKyAgICBVU0FHRTogc2NhbGVfc2NyaXB0IHt0ZXN0X29wdGlvbnN9IHtob3N0bGlzdH0KKworICAgIE1lYXN1cmUgbWF4aW11bSBzeXN0ZW0gbmV0d29yayB0aHJvdWdocHV0LgorCisgICAgVGhlIGZvbGxvd2luZyBhcmUgb3B0aW9uYWwgcGFyYW1ldGVyczoKKworICAgICAgICAtdCBuc2VjCQk6IENhdXNlcyBlYWNoIHRlc3QgdG8gYmUgcnVuIGZvciBuc2VjIHNlY29uZHMuCisgICAgICAgIC1ncHJvZiBzeXN0ZW0JOiBUYWtlIGEgZ3Byb2Ygc2FtcGxlIGR1cmluZyB0aGUgdGVzdC4gIHN5c3RlbQorICAgICAgICAgICAgICAgICAgCSAgaXMgdGhlIG5hbWUgb2YgdGhlIGtlcm5lbCB0aGUgc3lzdGVtIHdhcyBib290ZWQKKyAgICAgICAgICAgICAgICAgIAkgIHdpdGguCisgICAgICAgIC1uICJucHJvY2xpc3QiCTogT25lIHNlcmllcyBvZiB0ZXN0cyBpcyBydW4gZm9yIGVhY2ggc3BhY2Utc2VwYXJhdGVkCisgICAgICAgICAgICAgICAgICAJICB2YWx1ZSBpbiBucHJvY2xpc3QuCisgICAgICAgIC1yICJzaXplbGlzdCIJOiBPbmUgc2VyaWVzIG9mIHRlc3RzIGlzIHJ1biBmb3IgZWFjaCBzcGFjZS1zZXBhcmF0ZWQKKyAgICAgICAgICAgICAgICAJICByZXF1ZXN0LHJlcGx5IHBhaXIgaW4gc2l6ZWxpc3QuCisJaG9zdGxpc3QJOiBBIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGhvc3RzIHRvIHRlc3QgYWdhaW5zdC4KKworICAgICAgICArfC10Y3AJCTogUnVuL0Rvbid0IHJ1biBUQ1AgdGVzdHMuCisgICAgICAgICt8LXVkcAkJOiBSdW4vRG9uJ3QgcnVuIFVEUCB0ZXN0cy4KKyAgICAgICAgK3wtbGxhIAkJOiBSdW4vRG9uJ3QgcnVuIExMQSB0ZXN0czsgdGhpcyBvcHRpb24gYWxzbyByZXF1aXJlcyAKKwkJCSAgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIGxpc3Qgb2YgbmV0d29yayBkZXZpY2UgZmlsZXMKKyAgICAgICAgCSAgICAJICB1c2luZyB0aGUgLWQgb3B0aW9uIGRlc2NyaWJlZCBiZWxvdy4KKworICAgIFRoZSBmb2xsb3dpbmcgb3B0aW9uIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB1c2luZyB0aGUgLWxsYSBvcHRpb24KKyAgICBkZXNjcmliZWQgYWJvdmU6CisKKyAgICAgICAgLWQgImRldmZpbGVsc3QiIDogV2hlcmUgZGV2ZmlsZWxzdCBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAJICBvZiBuZXR3b3JrIGRldmljZSBmaWxlIHBhaXJzLiAgRWFjaCBwYWlyIGluCisgICAgICAgICAgICAgICAgICAJICB0aGUgbGlzdCBjb250YWlucyB0d28gZGV2aWNlIGZpbGUgbmFtZXMsCisgICAgICAgICAgICAgIAkgIAkgIHNlcGFyYXRlZCBieSBhIGNvbW1hIChlZy4gL2Rldi9sYW4wLC9kZXYvbGFuMSksCisgICAgICAgICAgICAgICAgIAkgIHdoZXJlIHRoZSBkZXZpY2UgZmlsZSBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgIAkgIGNvbW1hIGlzIGZvciB0aGUgbG9jYWwgc3lzdGVtIGFuZCB0aGUgZGV2aWNlCisgICAgICAgICAgICAgICAgCSAgZmlsZSBvbiB0aGUgcmlnaHQgc2lkZSBpcyBmb3IgdGhlIHJlbW90ZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgIAkgIEEgZGV2aWNlIGZpbGUgcGFpciBtdXN0IGJlIHNwZWNpZmllZCBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgIAkgIHJlbW90ZSBob3N0IHdoaWNoIGlzIHNwZWNpZmllZC4KKworICAgIEV4YW1wbGVzOgorCisgICAgICAgIHNjYWxlX3NjcmlwdCAtbiAiOCAxNiIgLXVkcCBMR3MzN1UxIExHczM3VTIgLXIgIjEsMSAxMDAsMTAwIgorCisgICAgICAgIHNjYWxlX3NjcmlwdCAtdCAxMDAwIC1uICIxNiIgLXRjcCAtZ3Byb2YgL3N0YW5kL3ZtdW5peCBMR3MzN1UxIExHczM3VTIKKworICAgICAgICBzY2FsZV9zY3JpcHQgLW4gNCAtbGxhIC1kIC9kZXYvbGFuMCwvZGV2L2xhbjAgL2Rldi9sYW4xLC9kZXYvbGFuMCBcXAorICAgICAgICAgIExHczM3VTEgTEdzMzdVMgorICAgICAgICAKK0BFT0YKK30KKworY2hlY2tfdXNhZ2UoKSB7CisgIGlmIFsgYGV4cHIgJFRDUCArICRVRFAgKyAkTExBYCAtZXEgMCBdCisgIHRoZW4KKyAgICB1c2FnZSAkMDogRVJST1I6IE11c3Qgc3BlY2lmeSBhIHRlc3QKKyAgICBleGl0CisgIGZpCisKKyAgaWYgWyAkTExBIC1lcSAxIF0KKyAgdGhlbiAgCisgICAgTkRFVj1gZWNobyAkREVWRklMRUxJU1QgfCBhd2sgJ3twcmludGYgIiVkIixORn0nYAorICAgIGlmIFsgJE5ERVYgLW5lICROSE9TVFMgXQorICAgIHRoZW4KKyAgICAgIHVzYWdlICQwOiBFUlJPUjogTnVtYmVyIG9mIGRldmljZSBmaWxlcyBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgaG9zdHMKKyAgICAgIGV4aXQKKyAgICBmaQorICBmaQorCisgIGZvciBIT1NUIGluICRSRU1fSE9TVF9MSVNUCisgIGRvCisgICAgaWYgWyBgL2V0Yy9waW5nICRIT1NUIDEwMCAxIHwgYXdrICcvdHJhbnNtaXR0ZWQve3ByaW50ICQ0fSdgMCAtbmUgMTAgXSAKKyAgICB0aGVuCisgICAgICB1c2FnZSAkMDogRVJST1I6IENhbm5vdCBwaW5nIGhvc3Q6ICRIT1NUCisgICAgICBleGl0CisgICAgZmkKKyAgZG9uZQorCisgIGlmIFsgJEdQUk9GIC1lcSAxIF0KKyAgdGhlbgorICAgIGlmIFsgISAtciAkR1BST0ZfS0VSTkVMIF0KKyAgICB0aGVuCisgICAgICB1c2FnZSAkMDogRVJST1I6IENhbm5vdCBmaW5kIHN5c3RlbSBmaWxlOiAkR1BST0ZfS0VSTkVMCisgICAgICBleGl0CisgICAgZmkKKyAgICBpZiBbICRHUFJPRl9SVU5fVElNRSAtbGUgODAwIF0KKyAgICB0aGVuCisgICAgICBlY2hvICJcbldBUk5JTkc6IEdQUk9GIFJVTiBUSU1FIExFU1MgVEhBTiA4MDAgU0VDT05EU1xuIgorICAgIGZpCisgIGZpCit9CisKK2Rpc3BsYXlfaGVhZHN0b25lKCkgeworY2F0IDw8IEBFT0YKKworJFRFU1ROQU1FIEFnZ3JlZ2F0ZSBSRVFVRVNUL1JFU1BPTlNFIFRFU1QgdG8gJFJFTV9IT1NUX0xJU1QKK0xvY2FsIC9SZW1vdGUKK1NvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBUcmFucy4gICAgIE51bS4KK1NlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBSYXRlICAgICAgIENvbmN1cnJlbnQKK2J5dGVzICBCeXRlcyAgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgIE5ldHBlcmZzCisKK0BFT0YKK30KKworZGlzcGxheV90ZXN0X2Jhbm5lcigpIHsKK2NhdCA8PCBARU9GCitARU9GCit9CisKK2J1aWxkX3NhcF9saXN0KCkgeworICAgICAgTFNBUD00CisgICAgICBTQVBMSVNUPSIiCisgICAgICBQUk9DPTAKKyAgICAgIHdoaWxlIFsgJFBST0MgLWx0ICROUFJPQ1MgXQorICAgICAgZG8KKyAgICAgICAgUFJPQz1gZXhwciAkUFJPQyArIDFgCisgICAgICAgIExTQVA9YGV4cHIgJExTQVAgKyA0YAorICAgICAgICBSU0FQPWBleHByICRMU0FQICsgMmAKKyAgICAgICAgU0FQTElTVD0iJFNBUExJU1QgJExTQVAsJFJTQVAiCisgICAgICBkb25lCit9CisKK3N0YXJ0X2dwcm9mKCkgeworICBpZiBbICRHUFJPRiAtZXEgMSBdCisgIHRoZW4KKyAgICAoIGtnbW9uIC1oOyBrZ21vbiAtcjsgc2xlZXAgMTA7IGtnbW9uIC1iOyBzbGVlcCAkR1BST0ZfUlVOX1RJTUU7IGtnbW9uIC1oOyBrZ21vbiAtcCAkR1BST0ZfS0VSTkVMOyBtdiBnbW9uLm91dCBnbW9uLm91dC4kVEVTVC4kTlBST0NTICkmCisgIGZpCit9CisKK3N0YXJ0XzFfcHJvY19wZXJfaG9zdCgpIHsKKyAgSE9TVE5VTT0wCisgIGZvciBIT1NUIGluICRSRU1fSE9TVF9MSVNUCisgIGRvCisgICAgaWYgWyAiJFRFU1QiID0gIkhJUFBJX1JSIiBdCisgICAgdGhlbgorICAgICAgUFJPQ05VTT1gZXhwciAkUFJPQ05VTSArIDFgCisgICAgICBTQVA9YGVjaG8gJFNBUExJU1QgfCBhd2sgIntwcmludCBcXCQkUFJPQ05VTX0iYAorICAgICAgU0FQPSItcyAkU0FQIgorICAgICAgSE9TVE5VTT1gZXhwciAkSE9TVE5VTSArIDFgCisgICAgICBERVZGSUxFPWBlY2hvICRERVZGSUxFTElTVCB8IGF3ayAie3ByaW50IFxcJCRIT1NUTlVNfSJgCisgICAgICBERVZGSUxFPSItRCAkREVWRklMRSIKKyAgICBmaQorICAgICRORVRQRVJGIC10ICRURVNUIC1sICRURVNUX1RJTUUgLUggJEhPU1QgLVAwIC12MCAtLSBcCisgICAgICAkQ09XICRERVZGSUxFICRTQVAgJFJSX1NJWkUgJFNFTkRfU0laRSAkU09DS0VUX1NJWkUgJgorICBkb25lCit9CisKK3N0YXJ0X25fcHJvY3NfcGVyX2hvc3QoKSB7CisgIFBST0M9MAorICB3aGlsZSBbICRQUk9DIC1sdCAkMSBdCisgIGRvCisgICAgUFJPQ05VTT1gZXhwciAkUFJPQyBcKiAke05IT1NUU31gCisgICAgc3RhcnRfMV9wcm9jX3Blcl9ob3N0ICYKKyAgICBQUk9DPWBleHByICRQUk9DICsgMWAKKyAgZG9uZQorICB3YWl0Cit9CisKK3J1bl8xX3Rlc3QoKSB7CisJc3RhcnRfbl9wcm9jc19wZXJfaG9zdCAkUFJPQ1NfUEVSX0hPU1QgfFwKKyAgICAgICAgICBhd2sgJ0JFR0lOIHttYXg9MDttaW49OTk5OTk7c3VtPTA7bj0wfQkJCQlcCisgICAgICAgICAgICAge3N1bSArPSAkMTtuKys7YXZlPXN1bS9ufSAJCQkJCVwKKyAgICAgICAgICAgICAkMTxtaW4ge21pbj0kMX0gCQkJCQkJXAorICAgICAgICAgICAgICQxPm1heCB7bWF4PSQxfSAJCQkJCQlcCisgICAgICAgICAgICAge2Vycmw9KGF2ZS1taW4pL2F2ZTtlcnJtPShtYXgtYXZlKS9hdmU7ZXJyPWVycmx9CQlcCisgICAgICAgICAgICAgZXJybT5lcnJsIHtlcnI9ZXJybX0JCQkJCVwKKyAgICAgICAgICAgICBFTkQge3ByaW50ZiAiQWdncmVnYXRlIHRocm91Z2hwdXQ6ICUyLjJmIFRQUyAgKy8tICUyLjJmICUlXG4iLHN1bSxlcnIqMTAwfScKK30KKworcnVuX3Rlc3Rfbl90aW1lcygpIHsKKyAgUkVUUlk9MAorICBURVNUX0NPVU5UPTAKKyAgd2hpbGUgWyAkVEVTVF9DT1VOVCAtbHQgJDEgXQorICBkbworICAgIFRFU1RfQ09VTlQ9YGV4cHIgJFRFU1RfQ09VTlQgKyAxYAorICAgIHN0YXJ0X2dwcm9mCisgICAgcnVuXzFfdGVzdCA+IC5ydW5fdGVzdF9uX2ZpbGUKKyAgICBjYXQgLnJ1bl90ZXN0X25fZmlsZQorICAgIEVSUk9SX0xWTD1gYXdrICd7cHJpbnQgaW50KCQ2KzAuOTkpfScgLnJ1bl90ZXN0X25fZmlsZWAKKyAgICBpZiBbICRFUlJPUl9MVkwgLWd0ICRUT0xFUkFOQ0UgXQorICAgIHRoZW4KKyAgICAgIFJFVFJZPWBleHByICRSRVRSWSArIDFgCisgICAgICBpZiBbICRSRVRSWSAtbGUgJE1BWF9SRVRSSUVTIF0KKyAgICAgIHRoZW4KKyAgICAgICAgVEVTVF9DT1VOVD1gZXhwciAkVEVTVF9DT1VOVCAtIDFgCisgICAgICAgIFRFU1RfVElNRT1gZXhwciAkVEVTVF9USU1FIFwqIDJgCisgICAgICBlbHNlCisJZWNobyAiISEhVGhpcyBpcyBhbiBJTlZBTElEIFJVTiBvZiB0aGUgYXJyX3NjcmlwdCEhISIgPiYyCisJZWNobyAiISEhVU5BQkxFIHRvIGhpdCBUT0xFUkFOQ0Ugb2YgIiAkVE9MRVJBTkNFICIhISEiID4mMgorCWVjaG8gIlBsZWFzZSBzZWxlY3QgYSBsb25nZXIgaW5pdGlhbCB0aW1lIGFuZCB0cnkgYWdhaW4uIiA+JjIKKyAgICAgICBleGl0CisgICAgICBmaQorICAgIGZpCisgIGRvbmUKK30KKworZG9fcmVxX3JyX3NpemVzKCkgeworICBmb3IgUzIgaW4gJFJSX1NJWkVTCisgICAgZG8KKyAgICAgIFJSX1NJWkU9Ii1yICRTMiIKKyAgICAgIGRpc3BsYXlfdGVzdF9iYW5uZXIgJE5QUk9DUyAkVEVTVCAkUzIKKyAgICAgIHJ1bl90ZXN0X25fdGltZXMgJE5URVNUID4gLmRvX3Nlcmllc19maWxlCisgICAgICBUUFM9YGF3ayAiaW50KFwkNiswLjk5KTw9JFRPTEVSQU5DRSB7cHJpbnR9IiAuZG9fc2VyaWVzX2ZpbGUgfFwKKyAgICAgICAgYXdrICdCRUdJTiB7c3VtPTA7bj0xfQlcCisgICAgICAgICAgICAgc3VtPjAge24rK30JXAorICAgICAgICAgICAgIHtzdW0rPSQzfQkJXAorICAgICAgICAgICAgIEVORCB7cHJpbnRmICIlMi4yZlxuIiwoc3VtKS8obil9J2AKKyAgICBTT0NLX1NFTkQ9YGVjaG8gJFNPQ0tFVF9TSVpFIHwgYXdrICd7cHJpbnQgJDJ9J2AKKyAgICBTT0NLX1JFQ1Y9YGVjaG8gJFNPQ0tFVF9TSVpFIHwgYXdrICd7cHJpbnQgJDR9J2AKKyAgICBSRVFfU0laRT1gZWNobyAkUzIgfCBhd2sgLUYiLCIgJ3twcmludCAkMX0nYAorICAgIFJTUF9TSVpFPWBlY2hvICRTMiB8IGF3ayAtRiIsIiAne3ByaW50ICQyfSdgCisgICAgZWNobyAgJFNPQ0tfU0VORCAkU09DS19SRUNWICRSRVFfU0laRSAkUlNQX1NJWkUgJFRFU1RfVElNRSAkVFBTICRQUk9DUyB8XAorICAgIGF3ayAne3ByaW50ZiAiJTVkICAlNWQgICU1ZCAgICAlNWQgICAlNWQgICAgJTguMmYgICAlNWQiLCQxLCQyLCQzLCQ0LCQ1LCQ2LCQ3fScKKyAgICBkb25lCit9CisKK3RjcF90ZXN0KCkgeworICAgICNSdW4gdGhlIFRDUCBSUiB0ZXN0cworICAgIFRFU1Q9IlRDUF9SUiIKKyAgICBTRU5EX1NJWkU9IiIKKyAgICBTT0NLRVRfU0laRT0iLXMgODE5MiAtUyA4MTkyIgorICAgIENPVz0iLVYiCisgICAgZG9fcmVxX3JyX3NpemVzCisgICAgZWNobworfQorCit1ZHBfdGVzdCgpIHsgIAorICAgICNSdW4gdGhlIFVEUCBSUiB0ZXN0cworICAgIFRFU1Q9IlVEUF9SUiIKKyAgICBTRU5EX1NJWkU9IiIKKyAgICBTT0NLRVRfU0laRT0iLXMgOTIxNiAtUyA5MjE2IgorICAgIENPVz0iLVYiCisgICAgZG9fcmVxX3JyX3NpemVzCisgICAgZWNobworfQorCitsbGFfdGVzdCgpIHsgIAorICAgICNSdW4gdGhlIFVEUCBSUiB0ZXN0cworICAgIFRFU1Q9IkhJUFBJX1JSIgorICAgIFNFTkRfU0laRT0iIgorICAgIFNPQ0tFVF9TSVpFPSIiCisgICAgQ09XPSIiCisgICAgYnVpbGRfc2FwX2xpc3QKKyAgICBkb19yZXFfcnJfc2l6ZXMKKyAgICBlY2hvCit9CisKK2RvX3JlcV9wcm9jcygpIHsKKyAgaWYgWyAkVENQIC1lcSAxIF0KKyAgdGhlbgorICAgIFRFU1ROQU1FPSJUQ1AiCisgICAgZGlzcGxheV9oZWFkc3RvbmUKKyAgICBmb3IgUFJPQ1MgaW4gJE5QUk9DX0xJU1QgIAorICAgICAgZG8KKyAgICAgICAgI0RldGVybWluZSBudW1iZXIgb2YgcHJvY3MgcGVyIGhvc3QKKyAgICAgICAgUFJPQ1NfUEVSX0hPU1Q9YGVjaG8gJFBST0NTICRSRU1fSE9TVF9MSVNUIHwgYXdrICd7cHJpbnRmICIlZCIsKCQxK05GLTIpLyhORi0xKX0nYAorICAgICAgICBOUFJPQ1M9YGV4cHIgJFBST0NTX1BFUl9IT1NUIFwqICROSE9TVFNgCisgICAgICAgIHRjcF90ZXN0CisgICAgICBkb25lCisgIGZpCisKKyAgaWYgWyAkVURQIC1lcSAxIF0KKyAgdGhlbgorICAgIFRFU1ROQU1FPSJVRFAiCisgICAgZGlzcGxheV9oZWFkc3RvbmUKKyAgICBmb3IgUFJPQ1MgaW4gJE5QUk9DX0xJU1QgIAorICAgICAgZG8KKyAgICAgICAgI0RldGVybWluZSBudW1iZXIgb2YgcHJvY3MgcGVyIGhvc3QKKyAgICAgICAgUFJPQ1NfUEVSX0hPU1Q9YGVjaG8gJFBST0NTICRSRU1fSE9TVF9MSVNUIHwgYXdrICd7cHJpbnRmICIlZCIsKCQxK05GLTIpLyhORi0xKX0nYAorICAgICAgICBOUFJPQ1M9YGV4cHIgJFBST0NTX1BFUl9IT1NUIFwqICROSE9TVFNgCisgICAgICAgIHVkcF90ZXN0CisgICAgICBkb25lCisgIGZpCisKKyAgaWYgWyAkTExBIC1lcSAxIF0KKyAgdGhlbgorICAgIFRFU1ROQU1FPSJMTEEiCisgICAgZGlzcGxheV9oZWFkc3RvbmUKKyAgICBmb3IgUFJPQ1MgaW4gJE5QUk9DX0xJU1QgIAorICAgICAgZG8KKyAgICAgICAgI0RldGVybWluZSBudW1iZXIgb2YgcHJvY3MgcGVyIGhvc3QKKyAgICAgICAgUFJPQ1NfUEVSX0hPU1Q9YGVjaG8gJFBST0NTICRSRU1fSE9TVF9MSVNUIHwgYXdrICd7cHJpbnRmICIlZCIsKCQxK05GLTIpLyhORi0xKX0nYAorICAgICAgICBOUFJPQ1M9YGV4cHIgJFBST0NTX1BFUl9IT1NUIFwqICROSE9TVFNgCisgICAgICAgIGxsYV90ZXN0CisgICAgICBkb25lCisgIGZpCit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW5pdF9wYXJtcworCitQQVJNUz0iJHswIyMqL30gJHtAfSIKKworIyBQYXJzZSB0aGUgY29tbWFuZCBsaW5lCit3aGlsZSBbICQjICE9IDAgXQorZG8KKyAgY2FzZSAkMSBpbgorICAgIFwtZ3Byb2YpIEdQUk9GPTEKKyAgICAgICAgICAgICBHUFJPRl9LRVJORUw9JDIKKyAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgIDs7CisgICAgXC10KSAgICAgVEVTVF9USU1FPSQyCisgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgOzsKKyAgICBcLW4pICAgICBOUFJPQ19MSVNUPSIkTlBST0NfTElTVCAkMiIKKyAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgIDs7CisgICAgXCtsbGEpICAgTExBPTEKKyAgICAgICAgICAgICA7OworICAgIFwrdGNwKSAgIFRDUD0xCisgICAgICAgICAgICAgOzsKKyAgICBcK3VkcCkgICBVRFA9MQorICAgICAgICAgICAgIDs7CisgICAgXC1sbGEpICAgTExBPTAKKyAgICAgICAgICAgICA7OworICAgIFwtdGNwKSAgIFRDUD0wCisgICAgICAgICAgICAgOzsKKyAgICBcLXVkcCkgICBVRFA9MAorICAgICAgICAgICAgIDs7CisgICAgXC1kKSAgICAgREVWRklMRUxJU1Q9IiRERVZGSUxFTElTVCAkMiIKKyAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgIDs7CisgICAgXC1yKSAgICAgUlJfU0laRVM9IiRSUl9TSVpFUyAkMiIKKyAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgIDs7CisgICAgXC0qKSAgICAgdXNhZ2UgJDA6IEVSUk9SOiBVbmV4cGVjdGVkIHBhcmFtdGVyOiAkMQorICAgICAgICAgICAgIGV4aXQKKyAgICAgICAgICAgICA7OworICAgICopICAgICAgIFJFTV9IT1NUX0xJU1Q9IiRSRU1fSE9TVF9MSVNUICQxIgorICAgICAgICAgICAgIDs7CisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworc2V0X2RlZmF1bHRfcGFybXMKK2NoZWNrX3VzYWdlCitkb19yZXFfcHJvY3MKKwpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL2Jsb2F0LnNoIGIvZG9jL2V4YW1wbGVzL2Jsb2F0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAwOTQ3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXhhbXBsZXMvYmxvYXQuc2gKQEAgLTAsMCArMSwxMjMgQEAKKyMgdGhpcyBpcyBhIHF1aWNrIGFuZCBkaXJ0eSBzY3JpcHQgdG8gcnVuIGEgbmV0cGVyZiBUQ1BfUlIgYW5kCisjIFRDUF9TVFJFQU0gdGVzdCBjb25jdXJyZW50bHkgdG8gYWxsb3cgb25lIHRvIHNlZSB0aGUgZWZmZWN0IG9mCisjIGJ1ZmZlciBibG9hdCBvbiBsYXRlbmN5LiAgV2UgYXNzdW1lIHRoYXQgbmV0cGVyZiBoYXMgYmVlbiBjb21waWxlZAorIyB3aXRoIGRlbW8tbW9kZSBlbmFibGVkIHZpYSAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1kZW1vCisKK05FVFBFUkY9YHdoaWNoIG5ldHBlcmZgCitpZiBbICQ/IC1uZSAwIF0KK3RoZW4KKyAgICBlY2hvICJVbmFibGUgdG8gZmluZCBhIG5ldHBlcmYgYmluYXJ5LiIKKyAgICBleGl0IC0xCitmaQorCitDSFVOSz02MAorCisjIGZpcnN0LCBzdGFydCB0aGUgVENQX1JSIHRlc3QKK1JSX1NUQVJUPWBkYXRlICslc2AKK2VjaG8gIlN0YXJ0aW5nIG5ldHBlcmYgVENQX1JSIGF0ICRSUl9TVEFSVCIgfCB0ZWUgYmxvYXQubG9nCisjIGEgbmVnYXRpdmUgdmFsdWUgZm9yIHRoZSBkZW1vIGludGVydmFsICgtRCkgd2lsbCBjYXVzZSBuZXRwZXJmIHRvCisjIG1ha2UgZ2V0dGltZW9mZGF5KCkgY2FsbHMgYWZ0ZXIgZXZlcnkgdHJhbnNhY3Rpb24uIHRoaXMgd2lsbCByZXN1bHQKKyMgaW4gbW9yZSBhY2N1cmF0ZSBkZW1vIGludGVydmFscyBvbmNlIHRoZSBTVFJFQU0gdGVzdCBraWNrcy1pbiwgYnV0IGEKKyMgc29tZXdoYXQgbG93ZXIgdHJhbnNhY3Rpb24gcmF0ZS4gIG5vdCB1bmxpa2UgZW5hYmxpbmcgaGlzdG9ncmFtCisjIG1vZGUuCituZXRwZXJmIC1IICQxIC1sIDcyMDAgLXQgVENQX1JSIC1EIC0wLjUgLXYgMiAtLSAtciAxIDI+JjEgPiBuZXRwZXJmX3JyLm91dCAmCisKKyMgc2xlZXAgQ0hVTksgc2Vjb25kcworc2xlZXAgJENIVU5LCisKKyMgbm93IHJ1biB0aGUgVENQX1NUUkVBTSB0ZXN0CisKK1NUUkVBTV9TVEFSVD1gZGF0ZSArJXNgCitlY2hvICJTdGFydGluZyBuZXRwZXJmIFRDUF9TVFJFQU0gdGVzdCBhdCAkU1RSRUFNX1NUQVJUIiB8IHRlZSAtYSBibG9hdC5sb2cKK25ldHBlcmYgLUggJDEgLWwgYGV4cHIgJENIVU5LIFwqIDJgIC10IFRDUF9TVFJFQU0gLUQgMC4yNSAtdiAyIC0tIC1tIDFLIDI+JjEgPiBuZXRwZXJmX3N0cmVhbS5vdXQKK1NUUkVBTV9TVE9QPWBkYXRlICslc2AKK2VjaG8gIk5ldHBlcmYgVENQX1NUUkVBTSB0ZXN0IHN0b3BwZWQgYXQgJFNUUkVBTV9TVE9QIiB8IHRlZSAtYSBibG9hdC5sb2cKKworIyBzbGVlcCBhbm90aGVyIENIVU5LIHNlY29uZHMKK3NsZWVwICRDSFVOSworCitwa2lsbCAtQUxSTSBuZXRwZXJmCitSUl9TVE9QPWBkYXRlICslc2AKK2VjaG8gIk5ldHBlcmYgVENQX1JSIHRlc3Qgc3RvcHBlZCBhdCAkUlJfU1RPUCIgfCB0ZWUgLWEgYmxvYXQubG9nCisKK1JSRFRPT0w9YHdoaWNoIHJyZHRvb2xgCitpZiBbICQ/IC1uZSAwIF0KK3RoZW4KKyAgICBlY2hvICJVbmFibGUgdG8gZmluZCBycmR0b29sLiAgWW91IHdpbGwgaGF2ZSB0byBwb3N0LXByb2Nlc3MgdGhlIHJlc3VsdHMgYnkgaGFuZCIKKyAgICBleGl0IDAKK2ZpCisKK01JTl9USU1FU1RBTVA9YGdyZXAgSW50ZXJpbSBuZXRwZXJmX3JyLm91dCB8IGhlYWQgLTEgfCBhd2sgJ3twcmludCBpbnQoJDEwKX0nYAorTUFYX1RJTUVTVEFNUD1gZ3JlcCBJbnRlcmltIG5ldHBlcmZfcnIub3V0IHwgdGFpbCAtMSB8IGF3ayAne3ByaW50IGludCgkMTApfSdgCitNQVhfSU5URVJWQUw9YGdyZXAgSW50ZXJpbSBuZXRwZXJmX3JyLm91dCB8IGF3ayAnQkVHSU57bWF4PTAuMH0gKCQ2ID4gbWF4KSB7bWF4ID0gJDZ9RU5Ee3ByaW50IGludChtYXgpICsgMX0nYAorTEVOR1RIPWBleHByICRNQVhfVElNRVNUQU1QIC0gJE1JTl9USU1FU1RBTVBgCisKKyRSUkRUT09MIGNyZWF0ZSBuZXRwZXJmX3JyLnJyZCAtLXN0ZXAgMSAtLXN0YXJ0ICRNSU5fVElNRVNUQU1QIFwKKyAgICBEUzp0cHM6R0FVR0U6JE1BWF9JTlRFUlZBTDpVOlUgUlJBOkFWRVJBR0U6MC41OjE6JExFTkdUSAorCisjIG5vdyBmaWxsIGl0Cithd2sgLXYgcnJkdG9vbD0kUlJEVE9PTCAnKCQxID09ICJJbnRlcmltIil7cHJpbnRmKCIlcyB1cGRhdGUgbmV0cGVyZl9yci5ycmQgJS4zZjolZlxuIixycmR0b29sLCQxMCwkMyl9JyBuZXRwZXJmX3JyLm91dCB8IHNoCisKKyMgbm93IHBvc3QgcHJvY2VzcyB0aGUgdGNwX3N0cmVhbSB0ZXN0LiB3ZSBjb3VsZCB1c2UgU1RSRUFNX1NUQVJUIGFuZAorIyBTVFJFQU1fU1RPUCBidXQgdGhlc2Ugd2lsbCBiZSBqdXN0IGEgYml0IG1vcmUgYWNjdXJhdGUKK1NUUkVBTV9NSU5fVElNRVNUQU1QPWBncmVwIEludGVyaW0gbmV0cGVyZl9zdHJlYW0ub3V0IHwgaGVhZCAtMSB8IGF3ayAne3ByaW50IGludCgkMTApfSdgCitTVFJFQU1fTUFYX1RJTUVTVEFNUD1gZ3JlcCBJbnRlcmltIG5ldHBlcmZfc3RyZWFtLm91dCB8IHRhaWwgLTEgfCBhd2sgJ3twcmludCBpbnQoJDEwKX0nYAorU1RSRUFNX01BWF9JTlRFUlZBTD1gZ3JlcCBJbnRlcmltIG5ldHBlcmZfc3RyZWFtLm91dCB8IGF3ayAnQkVHSU57bWF4PTAuMH0gKCQ2ID4gbWF4KSB7bWF4ID0gJDZ9RU5Ee3ByaW50IGludChtYXgpICsgMX0nYAorU1RSRUFNX0xFTkdUSD1gZXhwciAkU1RSRUFNX01BWF9USU1FU1RBTVAgLSAkU1RSRUFNX01JTl9USU1FU1RBTVBgCisKKyRSUkRUT09MIGNyZWF0ZSBuZXRwZXJmX3N0cmVhbS5ycmQgLS1zdGVwIDEgLS1zdGFydCAkU1RSRUFNX01JTl9USU1FU1RBTVAgXAorICAgIERTOm1icHM6R0FVR0U6JFNUUkVBTV9NQVhfSU5URVJWQUw6VTpVIFJSQTpBVkVSQUdFOjAuNToxOiRTVFJFQU1fTEVOR1RICisKKyMgbm93IGZpbGwgaXQKK2F3ayAtdiBycmR0b29sPSRSUkRUT09MICcoJDEgPT0gIkludGVyaW0iKXtwcmludGYoIiVzIHVwZGF0ZSBuZXRwZXJmX3N0cmVhbS5ycmQgJS4zZjolZlxuIixycmR0b29sLCQxMCwkMyl9JyBuZXRwZXJmX3N0cmVhbS5vdXQgfCBzaAorCisKKyMgbm93IGdyYXBoIGl0LiB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgY2hhcnQgaXMgYXQgbGVhc3QgODAwIHBpeGVscworIyB3aWRlLCBhbmQgaGFzIGVub3VnaCBwaXhlbHMgZm9yIGV2ZXJ5IGRhdGEgcG9pbnQKKworV0lEVEg9JExFTkdUSAoraWYgWyAkV0lEVEggLWx0IDgwMCBdCit0aGVuCisgICAgV0lEVEg9ODAwCitmaQorCitTSVpFPSItdyAkV0lEVEggLWggNDAwIgorCisjIHdlIHdhbnQgdG8gZmluZCB0aGUgc2NhbGluZyBmYWN0b3IgZm9yIHRoZSB0aHJvdWdocHV0LCB3aXRoIHRoZSBnb2FsCisjIGJlaW5nIHRoYXQgbGF0ZW5jeSBjYW4gZ28gdG8gdGhlIHRvcCBvZiB0aGUgY2hhcnRzIGFuZCB0aHJvdWdocHV0CisjIHdpbGwgZ28gaGFsZi13YXkgdXAKKworTUFYTEFUTUFYQlBTPWAkUlJEVE9PTCBncmFwaCAvZGV2L251bGwgXAorICAgIC0tc3RhcnQgJE1JTl9USU1FU1RBTVAgLS1lbmQgJE1BWF9USU1FU1RBTVAgXAorICAgIERFRjp0cmFucz1uZXRwZXJmX3JyLnJyZDp0cHM6QVZFUkFHRSBcCisgICAgQ0RFRjpsYXRlbmN5PTEuMCx0cmFucywvIFwKKyAgICBWREVGOm1heGxhdGVuY3k9bGF0ZW5jeSxNQVhJTVVNIFwKKyAgICBERUY6bWJwcz1uZXRwZXJmX3N0cmVhbS5ycmQ6bWJwczpBVkVSQUdFIFwKKyAgICBDREVGOmJwcz1tYnBzLDIwMDAwMDAsXCogXAorICAgIFZERUY6bWF4YnBzPWJwcyxNQVhJTVVNIFwKKyAgICBQUklOVDptYXhsYXRlbmN5OiIlLjIwbGYiIFwKKyAgICBQUklOVDptYXhicHM6IiUuMjBsZiIgfCBzZWQgMWRgCisKKyMgc2hvdWxkIEkgY2hlY2sgdGhlIGNvbXBsZXRpb24gc3RhdHVzIG9mIHRoZSBwcmV2aW91cyBjb21tYW5kPworIyBwcm9iYWJseSA6KQorCitTQ0FMRT1gZWNobyAkTUFYTEFUTUFYQlBTIHwgYXdrICd7cHJpbnQgJDIvJDF9J2AKKworJFJSRFRPT0wgZ3JhcGggYmxvYXQuc3ZnIC0taW1nZm9ybWF0IFNWRyBcCisgICAgJFNJWkUgXAorICAgIC0tbG93ZXItbGltaXQgMCBcCisgICAgLS1zdGFydCAkTUlOX1RJTUVTVEFNUCAtLWVuZCAkTUFYX1RJTUVTVEFNUCBcCisgICAgLXQgIkVmZmVjdCBvZiBidWxrIHRyYW5zZmVyIG9uIGxhdGVuY3kgdG8gJDEiIFwKKyAgICAtdiAiU2Vjb25kcyIgXAorICAgIC0tcmlnaHQtYXhpcyAkU0NBTEU6MCBcCisgICAgLS1yaWdodC1heGlzLWxhYmVsICJCaXRzIHBlciBTZWNvbmQiIFwKKyAgICBERUY6dHJhbnM9bmV0cGVyZl9yci5ycmQ6dHBzOkFWRVJBR0UgXAorICAgIENERUY6bGF0ZW5jeT0xLjAsdHJhbnMsLyBcCisgICAgTElORTI6bGF0ZW5jeSMwMEZGMDA4MDoiVENQX1JSIExhdGVuY3kiIFwKKyAgICBERUY6bWJwcz1uZXRwZXJmX3N0cmVhbS5ycmQ6bWJwczpBVkVSQUdFIFwKKyAgICBDREVGOmJwcz1tYnBzLDEwMDAwMDAsXCogXAorICAgIENERUY6c2Jwcz1icHMsJFNDQUxFLC8gXAorICAgIExJTkUyOnNicHMjMDAwMEZGRjA6IlRDUF9TVFJFQU0gVGhyb3VnaHB1dCIgXAorICAgIFZSVUxFOiR7U1RSRUFNX1NUQVJUfSNGRjAwMDA4MDoiVENQX1NUUkVBTSBzdGFydCIgXAorICAgIFZSVUxFOiR7U1RSRUFNX1NUT1B9IzAwMDAwMDgwOiJUQ1BfU1RSRUFNIHN0b3AiIFwKKyAgICAtLXgtZ3JpZCBTRUNPTkQ6MTA6U0VDT05EOjYwOlNFQ09ORDo2MDowOiVYCmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvcGFja2V0X2J5dGVfc2NyaXB0IGIvZG9jL2V4YW1wbGVzL3BhY2tldF9ieXRlX3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNzZiNDlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4YW1wbGVzL3BhY2tldF9ieXRlX3NjcmlwdApAQCAtMCwwICsxLDIwMiBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgc2NyaXB0IHJ1bnMgYSBzZXJpZXMgb2YgbmV0cGVyZiB0ZXN0cyBpbnRlbmRlZCB0byBnYXRoZXIgdGhlIAorIyByYXcgbWF0ZXJpYWwgbmVjZXNzYXJ5IHRvIGFycml2ZSBhdCBlc3RpbWF0ZXMgZm9yIHRoZSBjb3N0IG9mCisjIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBhIFRDUCBzZWdtZW50LCB0aGUgY29zdCBvZiBlYWNoIGFkZGl0aW9uYWwgYnl0ZQorIyBhbmQgdGhlIGNvc3Qgb2YgZWFjaCBpbmNyZW1lbnRhbCBzZWdtZW50LgorIyAKKyMgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRhdGEgcG9pbnRzIGdhdGhlcmVkIGJ5IHRoaXMgc2NyaXB0IC0gaXQgbWlnaHQKKyMgcnVuIGZvciBhIGNvbnNpZGVyYWJsZSBsZW5ndGggb2YgdGltZS4KKyMKKyMgcmljayBqb25lcyA0Lzk5CisjCisjIHRlYWNoIGl0IGFib3V0IHByb2Nlc3NvciBhZmZpbml0eSBhbmQgdGhlIFRDUF9NU1MgdGVzdAorIyByaWNrIGpvbmVzIDIwMDctMTEtMDgKKyMKKworaWYgWyAkIyAtZ3QgMiBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHBhY2tldF9ieXRlX3NjcmlwdCBob3N0bmFtZSBbQ1BVXSIKKyAgZXhpdCAxCitmaQorCitpZiBbICQjIC1lcSAwIF07IHRoZW4KKyAgZWNobyAidHJ5IGFnYWluLCBjb3JyZWN0bHkgLT4gcGFja2V0X2J5dGVfc2NyaXB0IGhvc3RuYW1lIFtDUFVdIgorICBleGl0IDEKK2ZpCisKKyMgd2hlcmUgaXMgbmV0cGVyZgorTkVUUEVSRl9ESVI9JHtORVRQRVJGX0RJUjo9L29wdC9uZXRwZXJmMi9iaW59CisKKworIyBhdCB3aGF0IHBvcnQgd2lsbCBuZXRzZXJ2ZXIgYmUgd2FpdGluZz8gSWYgeW91IGRlY2lkZSB0byBydW4KKyMgbmV0c2VydmVyIGF0IGEgZGlmZmVybmV0IHBvcnQgdGhhbiB0aGUgZGVmYXVsdCBvZiAxMjg2NSwgdGhlbiBzZXQKKyMgdGhlIHZhbHVlIG9mIE5FVFBFUkZfUE9SVCBhcHJvcHJpYXRlbHkKKyMgTkVUUEVSRl9QT1JUPSItcCBzb21lX290aGVyX3BvcnRudW0iCitORVRQRVJGX1BPUlQ9JHtORVRQRVJGX1BPUlQ6PSIifQorCisKKyMgVGhlIHRlc3QgbGVuZ3RoIGluIHNlY29uZHMKK05FVFBFUkZfVElNRT0ke05FVFBFUkZfVElNRTo9MzB9CisKKyMgSG93IGFjY3VyYXRlIHdlIHdhbnQgdGhlIGVzdGltYXRlIG9mIHBlcmZvcm1hbmNlOiAKKyMgICAgICBtYXhpbXVtIGFuZCBtaW5pbXVtIHRlc3QgaXRlcmF0aW9ucyAoLWkpCisjICAgICAgY29uZmlkZW5jZSBsZXZlbCAoOTkgb3IgOTUpIGFuZCBpbnRlcnZhbCAocGVyY2VudCkKK05FVFBFUkZfU1RBVFM9JHtORVRQRVJGX1NUQVRTOj0iLWkgMzAsMyAtSSA5OSw1In0KKworIyBUaGUgc29ja2V0IHNpemVzIHRoYXQgd2Ugd2lsbCBiZSB0ZXN0aW5nIC0gdXNpbmcgLTEgd2lsbCBsZXQgaXQgCisjIGJlIHRoZSBzeXN0ZW0gZGVmYXVsdC4KK05FVFBFUkZfU0tUUz0ke05FVFBFUkZfU0tUUzo9Ii0xIn0KKworIyBUaGUgQ1BVIGFmZmluaXR5IHRvIGJlIGFwcGxpZWQKK05FVFBFUkZfQUZGSU5JVFk9JHtORVRQRVJGX0FGRklOSVRZOj0iIn0KKworIyBORVRQRVJGX0NNRCBpcyBhbiBhbWFsZ2FtIG9mIHByZXZpb3VzIHZhcmlhYmxlcworTkVUUEVSRl9DTUQ9IiR7TkVUUEVSRl9ESVJ9L25ldHBlcmYgJHtORVRQRVJGX0FGRklOSVRZfSIKKworIyBpZiB0aGVyZSBhcmUgdHdvIHBhcm1zLCBwYXJtIG9uZSBpdCB0aGUgaG9zdG5hbWUgYW5kIHBhcm0gdHdvIHdpbGwKKyMgYmUgYSBDUFUgaW5kaWNhdG9yLiBhY3R1YWxseSwgYW55dGhpbmcgYXMgYSBzZWNvbmQgcGFybSB3aWxsIGNhdXNlCisjIHRoZSBDUFUgdG8gYmUgbWVhc3VyZWQsIGJ1dCB3ZSB3aWxsICJhZHZlcnRpc2UiIGl0IHNob3VsZCBiZSAiQ1BVIgorCitpZiBbICQjIC1lcSAyIF07IHRoZW4KKyAgUkVNX0hPU1Q9JDEKKyAgTE9DX0NQVT0iLWMiCisgIFJFTV9DUFU9Ii1DIgorZmkKKworaWYgWyAkIyAtZXEgMSBdOyB0aGVuCisgIFJFTV9IT1NUPSQxCitmaQorCitNU1M9YCRORVRQRVJGX0NNRCAtSCAkUkVNX0hPU1QgLXQgVENQX01TUyAtUCAwIC12IDBgCisKKyMgVGhlIHJlcXVlc3QscmVzcG9uc2Ugc2l6ZXMgdGhhdCB3ZSB3aWxsIGJlIHVzaW5nLiBUaGUgbmV0cGVyZgorIyBjb21tYW5kIHBhcnNlciB3aWxsIHRyZWF0ICIxIiB0aGUgc2FtZSBhcyAiMSwxIiAtIEkgdXNlIDEsMSB0bworIyByZW1lbWJlciB0aGF0IGl0IGlzICJyZXF1ZXN0LHJlc3BvbnNlIgorCisjIHN0YXJ0IGF0IG9uZSBhbmQgbXVsdGlwbHkgYnkgdHdvIG9uIG91ciB3YXkgdG8gdGhlIE1TUworYmFyPTEKK3doaWxlIFsgJGJhciAtbHQgJE1TUyBdCitkbworIE5FVFBFUkZfUkVRUz0iJHtORVRQRVJGX1JFUVN9ICRiYXIiCisgYmFyPWBleHByICRiYXIgXCogMmAKK2RvbmUKKworIyBhbmQgbm93IG11bHRpcGxlcyBvZiB0aGUgbXNzIGFuZCB0aGF0IHBsdXMgb25lCitmb3IgaSBpbiAxIDIgMworZG8KKyBiYXI9YGV4cHIgJE1TUyBcKiAkaWAKKyBORVRQRVJGX1JFUVM9IiR7TkVUUEVSRl9SRVFTfSAkYmFyIgorIE5FVFBFUkZfUkVRUz0iJHtORVRQRVJGX1JFUVN9IGBleHByICRiYXIgKyAxYCIKK2RvbmUKKworYmFyPTEKK3doaWxlIFsgJGJhciAtbHQgJE1TUyBdCitkbworICBORVRQRVJGX1JFU1A9IiR7TkVUUEVSRl9SRVNQfSAkYmFyIgorICBiYXI9YGV4cHIgJGJhciBcKiAyYAorZG9uZQorCitmb3IgaSBpbiAxIDIgMworZG8KKyBiYXI9YGV4cHIgJE1TUyBcKiAkaWAKKyBORVRQRVJGX1JFU1A9IiR7TkVUUEVSRl9SRVNQfSAkYmFyIgorIE5FVFBFUkZfUkVTUD0iJHtORVRQRVJGX1JFU1B9IGBleHByICRiYXIgKyAxYCIKK2RvbmUKKworCisKKyMgSWYgd2UgYXJlIG1lYXN1cmluZyBDUFUgdXRpbGl6YXRpb24sIHRoZW4gd2UgY2FuIHNhdmUgYmVhdWNvdXAKKyMgdGltZSBieSBzYXZpbmcgdGhlIHJlc3VsdHMgb2YgdGhlIENQVSBjYWxpYnJhdGlvbiBhbmQgcGFzc2luZworIyB0aGVtIGluIGR1cmluZyB0aGUgcmVhbCB0ZXN0cy4gU28sIHdlIGV4ZWN1dGUgdGhlIG5ldyBDUFUgInRlc3RzIgorIyBvZiBuZXRwZXJmIGFuZCBwdXQgdGhlIHZhbHVlcyBpbnRvIHNoZWxsIHZhcnMuCitjYXNlICRMT0NfQ1BVIGluCitcLWMpIExPQ19SQVRFPWAkTkVUUEVSRl9DTUQgJFBPUlQgLXQgTE9DX0NQVWA7OworKikgTE9DX1JBVEU9IiIKK2VzYWMKKworY2FzZSAkUkVNX0NQVSBpbgorXC1DKSBSRU1fUkFURT1gJE5FVFBFUkZfQ01EICRQT1JUIC10IFJFTV9DUFUgLUggJFJFTV9IT1NUYDs7CisqKSBSRU1fUkFURT0iIgorZXNhYworCisjIFRoaXMgZGlzYWJsZXMgaGVhZGVyIGRpc3BsYXkKK05PX0hEUj0iLVAgMCIKK05PX0hEUj0iIgorCitmb3IgU09DS0VUX1NJWkUgaW4gJE5FVFBFUkZfU0tUUworIGRvCisgIGVjaG8KKyAgZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CisgICMgd2UgZWNobyB0aGUgY29tbWFuZCBsaW5lIGZvciBjdXQgYW5kIHBhc3RlIHRvIHRoIGRhdGFiYXNlCisgIGVjaG8gJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgLXQgVENQX1JSIFwKKyAgICAgICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRORVRQRVJGX1NUQVRTIC0tXAorICAgICAgIC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKKyAgZWNobworICBlY2hvIGFuZCB0aGVzZSBzZXR0aW5ncyBmb3Igc2VuZCBzaXplcyAkTkVUUEVSRl9SRVFTCisgIGVjaG8KKworICBmb3IgUkVRIGluICRORVRQRVJGX1JFUVMKKyAgZG8KKyAgICMgc2luY2Ugd2UgaGF2ZSB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBzdHVmZiwgd2UgZG8gbm90CisgICAjIG5lZWQgdG8gcmVwZWF0IGEgdGVzdCBtdWx0aXBsZSB0aW1lcyBmcm9tIHRoZSBzaGVsbAorICAgJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgJE5PX0hEUiBcCisgICAtdCBUQ1BfUlIgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkTkVUUEVSRl9TVEFUUyAtLVwKKyAgIC1yICR7UkVRfSwxIC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKKyAgIE5PX0hEUj0iLVAgMCIKKyAgZG9uZQorICBlY2hvCisgIGVjaG8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIE5PX0hEUj0iIgorICBlY2hvIFRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToKKyAgIyB3ZSBlY2hvIHRoZSBjb21tYW5kIGxpbmUgZm9yIGN1dCBhbmQgcGFzdGUgdG8gdGggZGF0YWJhc2UKKyAgZWNobyAkTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCAtdCBUQ1BfUlIgXAorICAgICAgICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJE5FVFBFUkZfU1RBVFMgLS1cCisgICAgICAgLXMgJFNPQ0tFVF9TSVpFIC1TICRTT0NLRVRfU0laRQorICBlY2hvIGFuZCB0aGVzZSBzZXR0aW5ncyBmb3IgcmVzcG9uc2Ugc2l6ZXMgJE5FVFBFUkZfUkVTUAorICBlY2hvCisgIGZvciBSRVNQIGluICRORVRQRVJGX1JFU1AKKyAgIGRvCisgICAjIHNpbmNlIHdlIGhhdmUgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgc3R1ZmYsIHdlIGRvIG5vdAorICAgIyBuZWVkIHRvIHJlcGVhdCBhIHRlc3QgbXVsdGlwbGUgdGltZXMgZnJvbSB0aGUgc2hlbGwKKyAgICRORVRQRVJGX0NNRCAkUE9SVCAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCAkTk9fSERSIFwKKyAgIC10IFRDUF9SUiAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRORVRQRVJGX1NUQVRTIC0tXAorICAgLXIgMSwke1JFU1B9IC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKKyAgIE5PX0hEUj0iLVAgMCIKKyBkb25lCisgIGVjaG8KKyAgZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgTk9fSERSPSIiCisgIGVjaG8gVGVzdGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lOgorICAjIHdlIGVjaG8gdGhlIGNvbW1hbmQgbGluZSBmb3IgY3V0IGFuZCBwYXN0ZSB0byB0aCBkYXRhYmFzZQorICBlY2hvICRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC1sICRORVRQRVJGX1RJTUUgLUggJFJFTV9IT1NUIC10IFRDUF9TVFJFQU1cCisgICAgICAgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkTkVUUEVSRl9TVEFUUyAtLVwKKyAgICAgICAtcyAkU09DS0VUX1NJWkUgLVMgJFNPQ0tFVF9TSVpFCisgIGVjaG8gYW5kIHRoZXNlIHNldHRpbmdzIGZvciByZXNwb25zZSBzaXplcyAkTkVUUEVSRl9SRVNQCisgIGVjaG8KKyAgZm9yIFJFUSBpbiAkTkVUUEVSRl9SRVFTCisgICBkbworICAgIyBzaW5jZSB3ZSBoYXZlIHRoZSBjb25maWRlbmNlIGludGVydmFsIHN0dWZmLCB3ZSBkbyBub3QKKyAgICMgbmVlZCB0byByZXBlYXQgYSB0ZXN0IG11bHRpcGxlIHRpbWVzIGZyb20gdGhlIHNoZWxsCisgICAkTkVUUEVSRl9DTUQgJFBPUlQgLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgJE5PX0hEUiBcCisgICAtdCBUQ1BfU1RSRUFNICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJE5FVFBFUkZfU1RBVFMgLS1cCisgICAtbSAke1JFUX0gLXMgJFNPQ0tFVF9TSVpFIC1TICRTT0NLRVRfU0laRSAtRAorICAgTk9fSERSPSItUCAwIgorIGRvbmUKK2RvbmUKKworIyBUaGUgdGVzdCBsZW5ndGggaW4gc2Vjb25kcyBmb3IgdGhlIENSUiB0ZXN0LCB3aGljaCBuZWVkcyB0byBiZQorIyAgICBsb25nZXIgZm9yIGEgY29ubmVjdC9yZXF1ZXN0L3Jlc3BvbnNlIHRlc3QKKworTkVUUEVSRl9DUlJfVElNRT0ke05FVFBFUkZfQ1JSX1RJTUU6PTEyMH0KKworIyBub3cgd2UgZG8gdGhlIFRDUF9DUlIgdGVzdAorZWNobworZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLWwgJE5FVFBFUkZfQ1JSX1RJTUUgLUggJFJFTV9IT1NUIC10IFRDUF9DUlJcCisgICAgICAgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkTkVUUEVSRl9TVEFUUyAtLVwKKyAgICAgICAtcyAkU09DS0VUX1NJWkUgLVMgJFNPQ0tFVF9TSVpFCitlY2hvCiskTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtbCAkTkVUUEVSRl9DUlJfVElNRSAtSCAkUkVNX0hPU1QgLXQgVENQX0NSUlwKKyAgICAgICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRORVRQRVJGX1NUQVRTIC0tXAorICAgICAgIC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKZGlmZiAtLWdpdCBhL2RvYy9leGFtcGxlcy9ydW5lbW9tbmkuc2ggYi9kb2MvZXhhbXBsZXMvcnVuZW1vbW5pLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YTllOWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXhhbXBsZXMvcnVuZW1vbW5pLnNoCkBAIC0wLDAgKzEsMTkxIEBACisjIGEgc2NyaXB0IHRvIHJ1biBhIHNldCBvZiBzaW5nbGUtaW5zdGFuY2UgbmV0cGVyZiB0ZXN0cworIyBiZXR3ZWVuIHR3byBtYWNoaW5lcworCisjIHRoZSBsZW5ndGggaW4gc2Vjb25kcyBvZiBlYWNoIHRlc3QgaXRlcmF0aW9uLiB0aGUgYWN0dWFsCisjIHJ1biB0aW1lIHdpbGwgdGhlbiBiZSBzb21ld2hlcmUgYmV0d2VlbiB0aGF0IHRpbWVzIG1pbgorIyBhbmQgbWF4IGl0ZXJhdGlvbiBmb3IgY29uZmlkZW5jZSBpbnRlcnZhbHMKK2xlbmd0aD0zMAorCisjIHVubGlrZSB0aGUgYWdncmVnYXRlIHNjcmlwdCwgd2UgZG8gbm90IGhhdmUgdG8gd29ycnkKKyMgYWJvdXQgZXZlcnlvbmUgYWxsIHJ1bm5pbmcgYXQgdGhlIHNhbWUgdGltZSwgc28gd2UgY2FuCisjIHNhdmUgc29tZSB0aW1lIHdpdGggYSBsb3dlciBtaW5pbXVtIGl0ZXJhdGlvbiBjb3VudAorY29uZmlkZW5jZT0iLWkgMzAsMyIKKworIyB0aGUgQ1BVcyB0byB3aGljaCB0aGUgbmV0cGVyZiBwcm9jZXNzIHdpbGwgYmUgYm91bmQKKyMgdmlhIHRoZSAtVCBnbG9iYWwgb3B0aW9uCituZXRwZXJmX0NQVXM9IjAgMSAyIgorCisjIHRoZSBDUFVzIHRvIHdoaWNoIHRoZSBuZXRzZXJ2ZXIgcHJvY2VzcyB3aWxsIGJlIGJvdW5kCisjIHZpYSB0aGUgLVQgZ2xvYmFsIG9wdGlvbgorbmV0c2VydmVyX0NQVXM9IjAgMSAyIgorCisjIHRoZSBob3N0L0lQIHRvIHVzZSBmb3IgdGhlIGNvbnRyb2wgY29ubmVjdGlvbgorY29udHJvbF9ob3N0PTE5Mi4xNjguMC4yNgorCisjIHRoZSBsaXN0IG9mIGhvc3QvSVAgYWRkcmVzc2VzIHRvIGFjdHVhbGx5IG1lYXN1cmUgb3ZlcgorcmVtb3RlX2hvc3RzPSIxOTIuMTY4LjAuMjYgZmU4MDo6MjA3OjQzZmY6ZmUwNTo1OTBhJWV0aDAiCisKKyNyZXFzPSIxMjggMjU2IDUxMiAxMDI0IgorcmVxcz0iNjQgMTI4IDI1NiA1MTIgMTAyNCAxNDYwIDIwNDggNDA5NiA4MTkyIgorCisjIHRoZSBidXJzdCBzaXplIGZvciBidXJzdGVkIFJSIHRlc3RzCitidXJzdHM9IjAgMSAyIDQgOCAxNiAzMiA2NCAxMjggMjU2IgorCitIRFI9Ii1QIDEiCisjIC1PIG1lYW5zICJodW1hbiIgLW8gbWVhbnMgImNzdiIgLWsgbWVhbnMgImtleXZhbCIKKyMgImFsbCIgbWVhbnMgZW1pdCBldmVyeXRoaW5nLiAgb3RoZXJ3aXNlLCBzcGVjaWZ5IGEKKyMgbGlzdCBvZiBvdXRwdXQgc2VsZWN0b3JzIGRpcmVjdGx5IG9yIGEgZmlsZW5hbWUgd2l0aAorIyB0aGVtIHRoZXJlaW4uICBubyBwYXJhbWV0ZXIgbWVhbnMgYSBkZWZhdWx0IHNldCB3aWxsCisjIGJlIGVtaXR0ZWQgYmFzZWQgb24gdGhlIHRlc3QgdHlwZQorQ1NWPSItbyBhbGwiCisjQ1NWPSItTyBhbGwiCisKKyMgd2hpY2ggb2YgdGhlIHRlc3RzIHNob3VsZCB3ZSBkbz8KK0RPX1RDUF9TVFJFQU1fQVVUTz0xCitET19UQ1BfU1RSRUFNX1NPUFQ9MQorRE9fVENQX0JJRElSPTEKK0RPX1RDUF9SUj0xCitET19UQ1BfQ0M9MAorRE9fVENQX0JJRElSX1JFUT0wCitET19VRFBfQklESVJfUkVRPTAKK0RPX1VEUF9TVFJFQU09MQorCisjIHdoZW4gdGhpcyBpcyBzZXQgdG8gMCB0aGVuIG5ldHBlcmYgYW5kIG5ldHNlcnZlciBhcmUgYm91bmQKKyMgdG8gdGhlIHNhbWUgQ1BVIG51bWJlciBhbmQgd2UgZG8gbm90IHdhbGsgdGhyb3VnaCBhbGwgdGhlCisjIGNvbWJpbmF0aW9ucy4gIG9uZSBjYW4gZG8gdGhpcyB3aGVuIHRoZSB0d28gc3lzdGVtcyBhcmUKKyMgb3RoZXJ3aXNlIGlkZW50aWNhbC4gIHdoZW4gdGhleSBhcmUgbm90LCB0aGVuIHJ1bm5pbmcKKyMgdGhyb3VnaCB0aGUgZnVsbCBtYXRyaXggbWF5IGJlIGluZGljYXRlZAorRlVMTF9NQVRSSVg9MAorCisjIGhlcmUgeW91IHNob3VsZCBlY2hvIHNvbWUgdGhpbmdzIGFib3V0IHRoZSB0ZXN0IGFuZCBpdHMKKyMgZW52aXJvbm1lbnQgYW5kIGluIHBhcnRpY3VsYXIgdGhvc2UgdGhpbmdzIG5vdCBhdXRvbWFnaWNhbGx5CisjIGRldGVybWluZWQgYnkgbmV0cGVyZgorZWNobyBJIE5FRUQgVE8gRURJVCBUSEUgU0NSSVBUCitlY2hvIGludGVycnVwdHMgQ1BVIDAgd2l0aCBDUFUgMSBvdGhlciBzb2NrZXQgQ1BVIDIgc2FtZSBzb2NrZXQKK2VjaG8gYWQzODZhIGluIGRsMzgwIGc1IDJ4IDUxNjBAM0dIeiB0byBzYW1lCisKKyMgYW5kIGF3YXkgd2UgZ28KK2ZvciBkYXRhIGluICRyZW1vdGVfaG9zdHMKK2RvCisKKyAgaWYgWyAkRE9fVENQX1NUUkVBTV9BVVRPIC1lcSAxIF0KKyAgdGhlbgorICAgIGVjaG8gVENQX1NUUkVBTSB0byAkZGF0YSBhdXRvdHVuaW5nCisgICAgZm9yIGkgaW4gJG5ldHBlcmZfQ1BVcworICAgIGRvIAorICAgICAgaWYgWyAkRlVMTF9NQVRSSVggLWVxIDEgXSAKKyAgICAgIHRoZW4KKyAgICAgICAgc2V0PSRuZXRzZXJ2ZXJfQ1BVcworICAgICAgZWxzZQorICAgICAgICBzZXQ9JGkKKyAgICAgIGZpCisgICAgICBmb3IgaiBpbiAkc2V0CisgICAgICBkbyAKKyAgICAgICAgbmV0cGVyZiAkSERSIC1UICRpLCRqIC10IG9tbmkgLWMgLUMgLUggJGNvbnRyb2xfaG9zdCAtbCAkbGVuZ3RoICRjb25maWRlbmNlIC0tICRDU1YgLUggJGRhdGEgLW0gNjRLO0hEUj0iLVAgMCI7CisgICAgICBkb25lCisgICAgZG9uZQorICBmaQorCisgIGlmIFsgJERPX1RDUF9TVFJFQU1fU09QVCAtZXEgMSBdCisgIHRoZW4KKyAgICBlY2hvIFRDUF9TVFJFQU0gdG8gJGRhdGEKKyAgICBIRFI9Ii1QIDEiCisgICAgZm9yIGkgaW4gJG5ldHBlcmZfQ1BVcworICAgIGRvCisgICAgICBpZiBbICRGVUxMX01BVFJJWCAtZXEgMSBdIAorICAgICAgdGhlbgorICAgICAgICBzZXQ9JG5ldHNlcnZlcl9DUFVzCisgICAgICBlbHNlCisgICAgICAgIHNldD0kaQorICAgICAgZmkKKyAgICAgIGZvciBqIGluICRzZXQKKyAgICAgIGRvCisgICAgICAgIG5ldHBlcmYgJEhEUiAtVCAkaSwkaiAtdCBvbW5pIC1jIC1DIC1IICRjb250cm9sX2hvc3QgLWwgJGxlbmd0aCAkY29uZmlkZW5jZSAtLSAkQ1NWIC1IICRkYXRhIC1zIDFNIC1TIDFNIC1tIDY0SztIRFI9Ii1QIDAiOworICAgICAgZG9uZQorICAgIGRvbmUKKyAgZmkKKworICBpZiBbICRET19UQ1BfQklESVIgLWVxIDEgXQorICB0aGVuCisgICAgZWNobyBiaWRpciBUQ1BfUlIgTUVHQUJJVFMgdG8gJGRhdGEKKyAgICBIRFI9Ii1QIDEiCisgICAgZm9yIGkgaW4gJG5ldHBlcmZfQ1BVcworICAgIGRvCisgICAgICBpZiBbICRGVUxMX01BVFJJWCAtZXEgMSBdIAorICAgICAgdGhlbgorICAgICAgICBzZXQ9JG5ldHNlcnZlcl9DUFVzCisgICAgICBlbHNlCisgICAgICAgIHNldD0kaQorICAgICAgZmkKKyAgICAgIGZvciBqIGluICRzZXQKKyAgICAgIGRvCisgICAgICAgIG5ldHBlcmYgJEhEUiAtVCAkaSwkaiAtdCBvbW5pIC1mIG0gLWMgLUMgLUggJGNvbnRyb2xfaG9zdCAtbCAkbGVuZ3RoICRjb25maWRlbmNlIC0tICRDU1YgIC1IICRkYXRhIC1zIDFNIC1TIDFNIC1yIDY0SyAtYiAxMjsgSERSPSItUCAwIjsKKyAgICAgIGRvbmUKKyAgICBkb25lCisgIGZpCisKKyAgaWYgWyAkRE9fVENQX1JSIC1lcSAxIF0KKyAgdGhlbgorICAgIGVjaG8gVENQX1JSIHRvICRkYXRhCisgICAgSERSPSItUCAxIgorICAgIGZvciBpIGluICRuZXRwZXJmX0NQVXMKKyAgICBkbworICAgICAgaWYgWyAkRlVMTF9NQVRSSVggLWVxIDEgXSAKKyAgICAgIHRoZW4KKyAgICAgICAgc2V0PSRuZXRzZXJ2ZXJfQ1BVcworICAgICAgZWxzZQorICAgICAgICBzZXQ9JGkKKyAgICAgIGZpCisgICAgICBmb3IgaiBpbiAkc2V0CisgICAgICBkbworICAgICAgICBuZXRwZXJmICRIRFIgLVQgJGksJGogLXQgb21uaSAtYyAtQyAtSCAkY29udHJvbF9ob3N0IC1sICRsZW5ndGggJGNvbmZpZGVuY2UgLS0gJENTViAtSCAkZGF0YSAtciAxOyBIRFI9Ii1QIDAiOworICAgICAgZG9uZQorICAgIGRvbmUKKyAgZmkKKyAgCisgIGlmIFsgJERPX1RDUF9CSURJUl9SRVEgLWVxIDEgXQorICB0aGVuCisgICAgZWNobyBiaWRpciBUQ1BfUlIgTUVHQUJJVFMgdG8gJGRhdGEgYWx0ZXJpbmcgcmVxL3JzcCBzaXplIGFuZCBidXJzdAorICAgIEhEUj0iLVAgMSIKKyAgICBmb3IgaSBpbiAkbmV0cGVyZl9DUFVzCisgICAgZG8KKyAgICAgIGZvciByZXEgaW4gJHJlcXM7IGRvCisgICAgICAgIGZvciBidXJzdCBpbiAkYnVyc3RzOyBkbworICAgICAgICAgIG5ldHBlcmYgJEhEUiAtVCAkaSAtdCBvbW5pIC1mIG0gLWMgLUMgLUggJGNvbnRyb2xfaG9zdCAtbCAkbGVuZ3RoICRjb25maWRlbmNlIC0tICRDU1YgLUggJGRhdGEgLXMgMU0gLVMgMU0gLXIgJHJlcSAtYiAkYnVyc3QgLUQ7SERSPS0iUCAwIjsKKyAgICAgICAgZG9uZQorICAgICAgZG9uZQorICAgIGRvbmUKKyAgZmkKKworICBpZiBbICRET19VRFBfQklESVJfUkVRIC1lcSAxIF0KKyAgdGhlbgorICAgIGVjaG8gYmlkaXIgVURQX1JSICBNRUdBQklUUyB0byAkZGF0YSBhbHRlcmluZyByZXEvcnNwIHNpemUgYW5kIGJ1cnN0CisgICAgSERSPSItUCAxIgorICAgIGZvciBpIGluICRuZXRwZXJmX0NQVXMKKyAgICBkbworICAgICAgIGZvciByZXEgaW4gJHJlcXM7IGRvCisgICAgICAgICBmb3IgYnVyc3QgaW4gJGJ1cnN0czsgZG8KKyAgICAgICAgICAgbmV0cGVyZiAkSERSIC1UICRpIC10IG9tbmkgLWYgbSAtYyAtQyAtSCAkY29udHJvbF9ob3N0IC1sICRsZW5ndGggJGNvbmZpZGVuY2UgLS0gJENTViAtSCAkZGF0YSAtcyAxTSAtUyAxTSAtciAkcmVxIC1iICRidXJzdCAtVCB1ZHA7SERSPS0iUCAwIjsKKyAgICAgICAgIGRvbmUKKyAgICAgICBkb25lCisgICAgZG9uZQorICBmaQorCisgIGlmIFsgJERPX1VEUF9TVFJFQU0gLWVxIDEgXQorICB0aGVuCisgICAgZWNobyBVRFBfU1RSRUFNICBNRUdBQklUUyB0byAkZGF0YSBhbHRlcmluZyBzZW5kIHNpemUsIG5vIGNvbmZpZGVuY2UgaW50dmxzCisgICAgY29uZmlkZW5jZT0iICIKKyAgICBlY2hvIENQVXMgJG5ldHBlcmZfQ1BVcyByZXFzICRyZXFzCisgICAgSERSPSItUCAxIgorICAgIGZvciBpIGluICRuZXRwZXJmX0NQVXMKKyAgICBkbworICAgICAgZm9yIHJlcSBpbiAkcmVxczsgZG8KKyAgICAgICAgbmV0cGVyZiAkSERSIC1UICRpIC10IG9tbmkgLWYgbSAtYyAtQyAtSCAkY29udHJvbF9ob3N0IC1sICRsZW5ndGggJGNvbmZpZGVuY2UgLS0gJENTViAtSCAkZGF0YSAtcyAxTSAtUyAxTSAtbSAkcmVxIC1UIHVkcDtIRFI9LSJQIDAiOworICAgICAgZG9uZQorICAgIGRvbmUKKyAgZmkKKworZG9uZQorCitjYXQgL3Byb2MvbWVtaW5mbworY2F0IC9wcm9jL2NwdWluZm8KZGlmZiAtLWdpdCBhL2RvYy9leGFtcGxlcy9ydW5lbW9tbmlhZ2cyLnNoIGIvZG9jL2V4YW1wbGVzL3J1bmVtb21uaWFnZzIuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAzODU2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9leGFtcGxlcy9ydW5lbW9tbmlhZ2cyLnNoCkBAIC0wLDAgKzEsMTQ4IEBACisjc2V0IC14CisjIGVkaXQgYW5kIGFkZCB0byB0aGlzIGFycmF5IGFzIG5lY2Vzc2FyeQorIyB0aGUgaG9zdHMgeW91IHdpbGwgdXNlIHNob3VsZCBiZSBjb250aWd1b3VzCisjIHN0YXJ0aW5nIGF0IGluZGV4IHplcm8KK3JlbW90ZV9ob3N0c1swXT0xOTIuMTY4LjIuMworcmVtb3RlX2hvc3RzWzFdPTE5Mi4xNjguMy41CityZW1vdGVfaG9zdHNbMl09MTkyLjE2OC40LjYKK3JlbW90ZV9ob3N0c1szXT0xOTIuMTY4LjUuNworcmVtb3RlX2hvc3RzWzRdPTE5Mi4xNjguMi41CityZW1vdGVfaG9zdHNbNV09MTkyLjE2OC4zLjMKK3JlbW90ZV9ob3N0c1s2XT0xOTIuMTY4LjQuNworcmVtb3RlX2hvc3RzWzddPTE5Mi4xNjguNS42CityZW1vdGVfaG9zdHNbOF09MTkyLjE2OC4yLjYKK3JlbW90ZV9ob3N0c1s5XT0xOTIuMTY4LjMuNworcmVtb3RlX2hvc3RzWzEwXT0xOTIuMTY4LjQuMworcmVtb3RlX2hvc3RzWzExXT0xOTIuMTY4LjUuNQorcmVtb3RlX2hvc3RzWzEyXT0xOTIuMTY4LjIuNworcmVtb3RlX2hvc3RzWzEzXT0xOTIuMTY4LjMuNgorcmVtb3RlX2hvc3RzWzE0XT0xOTIuMTY4LjQuNQorcmVtb3RlX2hvc3RzWzE1XT0xOTIuMTY4LjUuMworCisjIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCisjIG51bWJlciBvZiB2YWxpZCBob3N0cyBpbiB0aGUgYXJyYXkgYWJvdmUKK251bV9jbGk9MTYKKworIyB0aGlzIHdpbGwgYmUgdGhlIGxlbmd0aCBvZiBlYWNoIGluZGl2aWR1YWwgdGVzdAorIyBpdGVyYXRpb24KK2xlbmd0aD0zMAorCisjIHRoaXMgd2lsbCBiZSB0aGUgc2V0dGluZ3MgZm9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzCisjIHlvdSBjYW4gdXNlIGEgc21hbGxlciBudW1iZXIgb2YgaXRlcmF0aW9ucyBidXQKKyMgdG8gZW5zdXJlIHRoYXQgZXZlcnlvbmUgaXMgcnVubmluZyBhdCB0aGUgc2FtZSB0aW1lCisjIHRoZSBtaW4gYW5kIG1heCBpdGVyYXRpb25zIE1VU1QgYmUgdGhlIHNhbWUKK2NvbmZpZGVuY2U9Ii1pIDMwLDMwIgorCisjIHRoZSBkaWZmZXJlbnQgbnVtYmVyIG9mIGNvbmN1cnJlbnQgc2Vzc2lvbnMgdG8gYmUgcnVuCisjIGlmIHlvdSBkbyBub3Qgc3RhcnQgd2l0aCBvbmUgY29uY3VycmVudCBzZXNzaW9uIHRoZSAKKyMgdGVzdCBoZWFkZXJzIG1heSBub3QgYmUgd2hlcmUgb25lIHdhbnRzIHRoZW0gYW5kIHlvdQorIyBtYXkgbmVlZCB0byBlZGl0IHRoZSBvdXRwdXQgdG8gaG9pc3QgdGhlIHRlc3QgaGVhZGVyCisjIHVwIGFib3ZlIHRoZSBmaXJzdCByZXN1bHQKK2NvbmN1cnJlbnRfc2Vzc2lvbnM9IjEgNCA4IDE2IDMyIDY0IgorCisjIHRoZSBzb2NrZXQgYnVmZmVyIHNpemVzIC0geW91IG1heSBuZWVkIHRvIHR3ZWFrCisjIHNvbWUgc3lzdGVtIHNldHRpbmdzIHRvIGFsbG93IDFNIHNvY2tldCBidWZmZXJzCitzb2NrZXRfc2l6ZXM9IiAtcyAxTSAtUyAxTSIKKworIyB0aGUgYnVyc3Qgc2l6ZXMgaW4gdGhlIGFnZ3JlZ2F0ZSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3RzCisjYnVyc3Rfc2l6ZXM9IjAgMSA0IDE2IDY0IDI1NiAxMDI0IgorYnVyc3Rfc2l6ZXM9IjAgMSA0IDE2IgorCisjIHRoaXMgZW5zdXJlcyB0aGUgdGVzdCBoZWFkZXIgb2YgYXQgbGVhc3Qgb25lIGluc3RhbmNlIAorIyBpcyBkaXNwbGF5ZWQKK0hEUj0iLVAgMSIKKworIyAtTyBtZWFucyAiaHVtYW4iIC1vIG1lYW5zICJjc3YiIGFuZCAtayBtZWFucyAia2V5dmFsIgorIyAiYWxsIiBtZWFucyBlbWl0IGV2ZXJ5dGhpbmcgaXQga25vd3MgdG8gZW1pdC4gb21pdCAiYWxsIgorIyBhbmQgd2hhdCBpcyBlbWl0dGVkIHdpbGwgZGVwZW5kIG9uIHRoZSB0ZXN0LiBjYW4gY3VzdG9taXplCisjIHdpdGggZGlyZWN0IG91dHB1dCBzZWxlY3Rpb24gb3Igc3BlY2lmeWluZyBhIGZpbGUgd2l0aAorIyBvdXRwdXQgc2VsZWN0b3JzIGluIGl0CitDU1Y9Ii1vIGFsbCIKKworIyBzaG91bGQgdGVzdHMgb3V0Ym91bmQgcmVsYXRpdmUgdG8gdGhpcyBzeXN0ZW0gYmUgcnVuPworRE9fU1RSRUFNPTAKKworIyBzaG91bGQgdGVzdHMgaW5ib3VuZCByZWxhdGl2ZSB0byB0aGlzIHN5c3RlbSBiZSBydW4/CitET19NQUVSVFM9MAorCisjIHNob3VsZCBzYW1lIGNvbm5lY3Rpb24gYmlkaXJlY3Rpb25hbCB0ZXN0cyBiZSBydW4/CitET19CSURJUj0xCisKKyMgc2hvdWxkIGFnZ3JlYWd0ZSBzaW5nbGUtYnl0ZSByZXF1ZXN0L3Jlc3BvbnNlIGJlIHJ1bj8KKyMgdGhpcyBjYW4gYmUgdXNlZCB0byB0cnkgdG8gZ2V0IGEgbWF4aW11bSBQUFMgZmlndXJlCitET19SUkFHRz0xCisKKyMgaGVyZSB5b3Ugc2hvdWxkIGVjaG8tb3V0IHNvbWUgdGhpbmdzIGFib3V0IHRoZSB0ZXN0CisjIHBhcnRpY3VsYXJseSB0aG9zZSB0aGluZ3MgdGhhdCB3aWxsIG5vdCBiZSBhdXRvbWFnaWNhbGx5CisjIGNhcHR1cmVkIGJ5IG5ldHBlcmYuCitlY2hvIGludGVycnVwdHMgc3ByZWFkIHdoZXJldmVyIGlycWJhbGFuY2VkIHB1dCB0aGVtCitlY2hvIDR4QUQzODZBIGluIERMNzg1IEc1IFNMRVMxMUI2LCBIUC92ZW5kb3IgZHJpdmVycworZWNobyBmb3VyIGRsNTg1IEc1IGNsaWVudHMgcmg1LjIsIGVhY2ggd2l0aCB0d28gQUQzODZBCisKKyMgYW5kIGhlcmUgd2UgZ28KKyAgaWYgWyAkRE9fU1RSRUFNIC1lcSAxIF07IHRoZW4KKyAgZWNobyBUQ1BfU1RSRUFNCisgIGZvciBpIGluICRjb25jdXJyZW50X3Nlc3Npb25zOyBkbworICAgIGo9MDsgCisgICAgTkVUVVVJRD1gbmV0cGVyZiAtdCB1dWlkYDsKKyAgICBlY2hvICRpIGNvbmN1cnJlbnQgc3RyZWFtcyBpZCAkTkVUVVVJRDsKKyAgICB3aGlsZSBbICRqIC1sdCAkaSBdOyBkbyAKKyAgICAgIGNsaWVudD1gZXhwciAkaiAlICRudW1fY2xpYCA7CisgICAgICBuZXRwZXJmICRIRFIgLXQgb21uaSAtYyAtQyAtSCAke3JlbW90ZV9ob3N0c1skY2xpZW50XX0gLWwgJGxlbmd0aCAkY29uZmlkZW5jZSAtLSAkQ1NWIC1IICR7cmVtb3RlX2hvc3RzWyRjbGllbnRdfSAkc29ja2V0X3NpemVzIC1tIDY0SyAtdSAkTkVUVVVJRCAmIEhEUj0iLVAgMCI7CisgICAgICBqPWBleHByICRqICsgMWA7CisgICAgZG9uZTsKKyAgICB3YWl0OworICBkb25lCisgIGZpCisjCisgIGlmIFsgJERPX01BRVJUUyAtZXEgMSBdOyB0aGVuCisgIGVjaG8gVENQX01BRVJUUworICBmb3IgaSBpbiAkY29uY3VycmVudF9zZXNzaW9uczsgZG8KKyAgICBqPTA7CisgICAgTkVUVVVJRD1gbmV0cGVyZiAtdCB1dWlkYDsKKyAgICBlY2hvICRpIGNvbmN1cnJlbnQgc3RyZWFtcyBpZCAkTkVUVVVJRDsKKyAgICB3aGlsZSBbICRqIC1sdCAkaSBdOyBkbworICAgICAgY2xpZW50PWBleHByICRqICUgJG51bV9jbGlgIDsKKyAgICAgIG5ldHBlcmYgJEhEUiAtdCBvbW5pIC1jIC1DIC1IICR7cmVtb3RlX2hvc3RzWyRjbGllbnRdfSAtbCAkbGVuZ3RoICRjb25maWRlbmNlIC0tICRDU1YgLUggJHtyZW1vdGVfaG9zdHNbJGNsaWVudF19ICRzb2NrZXRfc2l6ZXMgLU0gLDY0SyAtdSAkTkVUVVVJRCAmIEhEUj0iLVAgMCI7CisgICAgICBqPWBleHByICRqICsgMWA7CisgICAgZG9uZTsKKyAgICB3YWl0OworICBkb25lCisgIGZpCisKKyAgaWYgWyAkRE9fQklESVIgLWVxIDEgXTsgdGhlbgorICBlY2hvIGJpZGlyIFRDUF9SUiBNRUdBQklUUworICBIRFI9Ii1QIDEiCisgIGZvciBpIGluICRjb25jdXJyZW50X3Nlc3Npb25zOworICAgIGRvIGo9MDsKKyAgICBORVRVVUlEPWBuZXRwZXJmIC10IHV1aWRgOworICAgIGVjaG8gJGkgY29uY3VycmVudCBzdHJlYW1zIGlkICRORVRVVUlEOworICAgIHdoaWxlIFsgJGogLWx0ICRpIF07IGRvCisgICAgICBjbGllbnQ9YGV4cHIgJGogJSAkbnVtX2NsaWAgOworICAgICAgbmV0cGVyZiAkSERSICAtdCBvbW5pIC1mIG0gLWMgLUMgLUggJHtyZW1vdGVfaG9zdHNbJGNsaWVudF19IC1sICRsZW5ndGggJGNvbmZpZGVuY2UgLS0gJENTViAgLUggJHtyZW1vdGVfaG9zdHNbJGNsaWVudF19IC1zIDFNIC1TIDFNIC1yIDY0SyAtYiAxMiAtdSAkTkVUVVVJRCAmIEhEUj0iLVAgMCI7CisgICAgICBqPWBleHByICRqICsgMWA7CisgICAgZG9uZTsKKyAgICB3YWl0OworICBkb25lCisgIGZpCisKKyAgaWYgWyAkRE9fUlJBR0cgLWVxIDEgXTsgdGhlbgorICBlY2hvIFRDUF9SUiBhZ2dyZWdhdGVzCisgIEhEUj0iLVAgMSIKKyAgZm9yIGkgaW4gJGNvbmN1cnJlbnRfc2Vzc2lvbnM7IGRvCisgICAgTkVUVVVJRD1gbmV0cGVyZiAtdCB1dWlkYDsKKyAgICBlY2hvICRpIGNvbmN1cnJlbnQgc3RyZWFtcyBpZCAkTkVUVVVJRDsKKyAgICBmb3IgYiBpbiAkYnVyc3Rfc2l6ZXM7IGRvCisgICAgICBlY2hvIGJ1cnN0IG9mICRiOworICAgICAgaj0wOworICAgICAgd2hpbGUgWyAkaiAtbHQgJGkgXTsgZG8KKyAgICAgICAgY2xpZW50PWBleHByICRqICUgJG51bV9jbGlgIDsKKyAgICAgICAgbmV0cGVyZiAkSERSICAtdCBvbW5pIC1mIHggLWMgLUMgLUggJHtyZW1vdGVfaG9zdHNbJGNsaWVudF19IC1sICRsZW5ndGggJGNvbmZpZGVuY2UgLS0gJENTViAgLUggJHtyZW1vdGVfaG9zdHNbJGNsaWVudF19IC1yIDEgLWIgJGIgLUQgLXUgJE5FVFVVSUQgJiBIRFI9Ii1QIDAiOworICAgICAgICBqPWBleHByICRqICsgMWA7CisgICAgICBkb25lOworICAgICAgd2FpdDsKKyAgICBkb25lOworICBkb25lCisgIGZpCisKK2NhdCAvcHJvYy9tZW1pbmZvCmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvcnVuZW1vbW5pYWdnZGVtby5zaCBiL2RvYy9leGFtcGxlcy9ydW5lbW9tbmlhZ2dkZW1vLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjMxN2ZmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZXhhbXBsZXMvcnVuZW1vbW5pYWdnZGVtby5zaApAQCAtMCwwICsxLDI1MSBAQAorIyB0aGlzIGlzIGEgcXVpY2sgYW5kIGRpcnR5IG1pZ3JhdGlvbiBvZiBydW5lbW9tbmlhZ2cyLnNoIHRvIHRoZSAKKyMgLS1lbmFibGUtZGVtbyBtb2RlIG9mIGFnZ3JlZ2F0ZSB0ZXN0aW5nCitmdW5jdGlvbiBraWxsX25ldHBlcmZzIHsKKyAgICBwa2lsbCAtQUxSTSBuZXRwZXJmCisKKyAgICBwZ3JlcCAtUCAxIC1mIG5ldHBlcmYgPiAvZGV2L251bGwKKyAgICB3aGlsZSBbICQ/IC1lcSAwIF0KKyAgICBkbworCXNsZWVwIDEKKwlwZ3JlcCAtUCAxIC1mIG5ldHBlcmYgPiAvZGV2L251bGwKKyAgICBkb25lCit9CisKK2Z1bmN0aW9uIHJ1bl9jbWQgeworCisgICAgTk9XPWBkYXRlICslcy4lTmAKKyAgICBlY2hvICJTdGFydGluZyBuZXRwZXJmcyBhdCAkTk9XIGZvciAkVEVTVCIgfCB0ZWUgJFRFU1RMT0cKKyAgICBpPTA7CisKKyMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBvdXIgbG9hZCBsZXZlbCBwYXVzZXMKKyAgICBQQVVTRV9BVD0xCisKKworICAgIHdoaWxlIFsgJGkgLWx0ICRNQVhfSU5TVEFOQ0VTIF0KKyAgICBkbworCVRBUkdFVD0ke1JFTU9URV9IT1NUU1tgZXhwciAkaSAlICROVU1fUkVNT1RFX0hPU1RTYF19CisJZWNobyAiU3RhcnRpbmcgbmV0cGVyZnMgb24gbG9jYWxob3N0IHRhcmdldGluZyAke1RBUkdFVH0gZm9yICRURVNUIiB8IHRlZSAtYSAkVEVTVExPRworCWlkPWBwcmludGYgIiUuNWQiICRpYAorCSRORVRQRVJGIC1IICRUQVJHRVQgJE5FVFBFUkZfQ01EIDI+JjEgPiBuZXRwZXJmXyR7VEVTVH1fJHtpZH1fdG9fJHtUQVJHRVR9Lm91dCAmCisKKyAgICAjIGdpdmUgaXQgYSBtb21lbnQgdG8gZ2V0IGdvaW5nCisJc2xlZXAgMQorCisJaT1gZXhwciAkaSArIDFgCisKKwlpZiBbICRpICAtZXEgJFBBVVNFX0FUIF0gJiYgWyAkaSAtbmUgJE1BWF9JTlNUQU5DRVMgXQorCXRoZW4KKwkgICAgTk9XPWBkYXRlICslcy4lTmAKKwkgICAgZWNobyAiUGF1c2luZyBmb3IgJERVUkFUSU9OIHNlY29uZHMgYXQgJE5PVyB3aXRoICRpIG5ldHBlcmZzIHJ1bm5pbmcgZm9yICRURVNUIiB8IHRlZSAtYSAkVEVTVExPRworCSAgICBzbGVlcCAkRFVSQVRJT04KKwkgICAgUEFVU0VfQVQ9YGV4cHIgJFBBVVNFX0FUIFwqIDJgCisJICAgIE5PVz1gZGF0ZSArJXMuJU5gCisJICAgIGVjaG8gIlJlc3VtaW5nIGF0ICROT1cgZm9yICRURVNUIiB8IHRlZSAtYSAkVEVTVExPRworCWZpICAgIAorICAgIGRvbmUKKworICAgIE5PVz1gZGF0ZSArJXMuJU5gCisgICAgZWNobyAiTmV0cGVyZnMgc3RhcnRlZCBieSAkTk9XIGZvciAkVEVTVCIgfCB0ZWUgLWEgJFRFU1RMT0cKKworI3dhaXQgZm9yIG91ciB0ZXN0IGR1cmF0aW9uCisgICAgc2xlZXAgJERVUkFUSU9OCisKKyNrbHVkZ2V5IGJ1dCB0aGlzIHNsZWVwIHNob3VsZCBtZWFuIHRoYXQgYW5vdGhlciBpbnRlcmltIHJlc3VsdCB3aWxsIGJlIGVtaXR0ZWQKKyAgICBzbGVlcCAzCisKKyMgc3RvcCBhbGwgdGhlIG5ldHBlcmZzCisgICAgTk9XPWBkYXRlICslcy4lTmAKKyAgICBlY2hvICJOZXRwZXJmcyBzdG9wcGluZyAkTk9XIGZvciAkVEVTVCIgfCB0ZWUgLWEgJFRFU1RMT0cKKyAgICBraWxsX25ldHBlcmZzCisgICAgCisgICAgTk9XPWBkYXRlICslcy4lTmAKKyAgICBlY2hvICJOZXRwZXJmcyBzdG9wcGVkICROT1cgZm9yICRURVNUIiB8IHRlZSAtYSAkVEVTVExPRworCit9CisKKyMgdmVyeSBtdWNoIGxpa2UgcnVuX2NtZCwgYnV0IGl0IHJ1bnMgdGhlIHRlc3RzIG9uZSBhdCBhIHRpbWUgcmF0aGVyCisjIHRoYW4gaW4gcGFyYWxsZWwuICBXZSBrZWVwIHRoZSBzYW1lIGxvZ2dpbmcgc3RyaW5ncyB0byBiZSBjb21wYXRpYmxlCisjIChob3BlZnVsbHkpIHdpdGggdGhlIHBvc3QgcHJvY2Vzc2luZyBzY3JpcHQsIGV2ZW4gdGhvdWdoIHRoZXkgZG9uJ3QKKyMgbWFrZSBhbGwgdGhhdCBtdWNoIHNlbnNlIDopCisKK2Z1bmN0aW9uIHJ1bl9jbWRfc2VyaWFsIHsKKworICAgIE5PVz1gZGF0ZSArJXMuJU5gCisgICAgZWNobyAiU3RhcnRpbmcgbmV0cGVyZnMgYXQgJE5PVyBmb3IgJFRFU1QiIHwgdGVlICRURVNUTE9HCisgICAgaT0wOworCisjIHRoZSBzdGFydGluZyBwb2ludCBmb3Igb3VyIGxvYWQgbGV2ZWwgcGF1c2VzCisgICAgUEFVU0VfQVQ9MQorCisKKyAgICB3aGlsZSBbICRpIC1sdCAkTlVNX1JFTU9URV9IT1NUUyBdCisgICAgZG8KKwlUQVJHRVQ9JHtSRU1PVEVfSE9TVFNbYGV4cHIgJGkgJSAkTlVNX1JFTU9URV9IT1NUU2BdfQorCWVjaG8gIlN0YXJ0aW5nIG5ldHBlcmZzIG9uIGxvY2FsaG9zdCB0YXJnZXRpbmcgJHtUQVJHRVR9IGZvciAkVEVTVCIgfCB0ZWUgLWEgJFRFU1RMT0cKKwlpZD1gcHJpbnRmICIlLjVkIiAkaWAKKwkkTkVUUEVSRiAtSCAkVEFSR0VUICRORVRQRVJGX0NNRCAyPiYxID4gbmV0cGVyZl8ke1RFU1R9XyR7aWR9X3RvXyR7VEFSR0VUfS5vdXQgJgorCisgICAgIyBnaXZlIGl0IGEgbW9tZW50IHRvIGdldCBnb2luZworCXNsZWVwIDEKKworCWk9YGV4cHIgJGkgKyAxYAorCisJTk9XPWBkYXRlICslcy4lTmAKKwllY2hvICJQYXVzaW5nIGZvciAkRFVSQVRJT04gc2Vjb25kcyBhdCAkTk9XIHdpdGggJGkgbmV0cGVyZnMgcnVubmluZyBmb3IgJFRFU1QiIHwgdGVlIC1hICRURVNUTE9HCisJIyB0aGUgcGx1cyB0d28gaXMgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBmdWxsIHNldCBvZiBpbnRlcmltCisJIyByZXN1bHRzLiAgcHJvYmFibHkgbm90IG5lY2Vzc2FyeSBoZXJlIGJ1dCB3ZSB3YW50IHRvIGJlCisJIyBjZXJ0YWluCisJc2xlZXAgYGV4cHIgJERVUkFUSU9OICsgMWAKKwlraWxsX25ldHBlcmZzCisJTk9XPWBkYXRlICslcy4lTmAKKwlUSEVOPWBlY2hvICROT1cgfCBhd2sgLUYgIi4iICd7cHJpbnRmKCIlZC4lZCIsJDEtMSwkMil9J2AKKwllY2hvICJSZXN1bWluZyBhdCAkVEhFTiBmb3IgJFRFU1QiIHwgdGVlIC1hICRURVNUTE9HCisKKyAgICBkb25lCisKKyAgICBOT1c9YGRhdGUgKyVzLiVOYAorICAgIGVjaG8gIk5ldHBlcmZzIHN0YXJ0ZWQgYnkgJE5PVyBmb3IgJFRFU1QiIHwgdGVlIC1hICRURVNUTE9HCisKKyMgc3RvcCBhbGwgdGhlIG5ldHBlcmZzIC0gb2YgY291cnNlIGFjdHVhbGx5IHRoZXkgaGF2ZSBhbGwgYmVlbgorIyBzdG9wcGVkIGFscmVhZHksIHdlIGp1c3Qgd2FudCB0aGUgbG9nIGVudHJpZXMKKyAgICBOT1c9YGRhdGUgKyVzLiVOYAorICAgIGVjaG8gIk5ldHBlcmZzIHN0b3BwaW5nICROT1cgZm9yICRURVNUIiB8IHRlZSAtYSAkVEVTVExPRworICAgIGtpbGxfbmV0cGVyZnMKKyAgICBOT1c9YGRhdGUgKyVzLiVOYAorICAgIGVjaG8gIk5ldHBlcmZzIHN0b3BwZWQgJE5PVyBmb3IgJFRFU1QiIHwgdGVlIC1hICRURVNUTE9HCit9CisKKyMgaGVyZSB0aGVuIGlzIHRoZSAibWFpbiIgcGFydAorCitpZiBbICEgLWYgLi9yZW1vdGVfaG9zdHMgXQordGhlbgorICAgIGVjaG8gIlRoaXMgc2NyaXB0IHJlcXVpcmVzIGEgcmVtb3RlX2hvc3RzIGZpbGUiCisgICAgZXhpdCAtMQorZmkKKy4gLi9yZW1vdGVfaG9zdHMKKworIyBob3cgbWFueSBwcm9jZXNzb3JzIGFyZSB0aGVyZSBvbiB0aGlzIHN5c3RlbQorTlVNX0NQVVM9YGdyZXAgcHJvY2Vzc29yIC9wcm9jL2NwdWluZm8gfCB3YyAtbGAKKworIyB0aGUgbnVtYmVyIG9mIG5ldHBlcmYgaW5zdGFuY2VzIHdlIHdpbGwgcnVuIHdpbGwgYmUgdXAgdG8gMnggdGhlCisjIG51bWJlciBvZiBDUFVzCitNQVhfSU5TVEFOQ0VTPWBleHByICROVU1fQ1BVUyBcKiAyYAorCisjIGJ1dCBhdCBsZWFzdCBhcyBtYW55IGFzIHRoZXJlIGFyZSBlbnRyaWVzIGluIHJlbW90ZV9ob3N0cworaWYgWyAkTUFYX0lOU1RBTkNFUyAtbHQgJE5VTV9SRU1PVEVfSE9TVFMgXQordGhlbgorICAgIE1BWF9JTlNUQU5DRVM9JE5VTV9SRU1PVEVfSE9TVFMKK2ZpCisKKyMgYWxsb3cgdGhlIG5ldHBlcmYgYmluYXJ5IHRvIGJlIHVzZWQgdG8gYmUgb3ZlcnJpZGRlbiAKK05FVFBFUkY9JHtORVRQRVJGOj0ibmV0cGVyZiJ9CisKK2lmIFsgJE5VTV9SRU1PVEVfSE9TVFMgLWx0IDIgXQordGhlbgorICAgIGVjaG8gIlRoZSBsaXN0IG9mIHJlbW90ZSBob3N0cyBpcyB0b28gc2hvcnQuICBUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IDIuIgorICAgIGV4aXQgLTEKK2ZpCisKKyMgd2UgYXNzdW1lIHRoYXQgbmV0c2VydmVycyBhcmUgYWxyZWFkeSBydW5uaW5nIG9uIGFsbCB0aGUgbG9hZCBnZW5lcmF0b3JzCisKK0RVUkFUSU9OPTEyMAorIyBkbyBub3QgaGF2ZSBhIHV1aWRnZW4/IHRoZW4gdXNlIHRoZSBvbmUgaW4gbmV0cGVyZgorTVlfVVVJRD1gdXVpZGdlbmAKKyMgd2l0aCB0b3Atb2YtdHJ1bmsgd2UgY291bGQgbWFrZSB0aGlzIDAgYW5kIHJ1biBmb3JldmVyCisjIGJ1dCB0d28gaG91cnMgaXMgc29tZXRoaW5nIG9mIGEgZmFpbHNhZmUgaWYgdGhlIHNpZ25hbHMKKyMgZ2V0IGxvc3QKK0xFTkdUSD0iLWwgNzIwMCIKK09VVFBVVD0iLW8gYWxsIgorCitET19TVFJFQU09MTsKK0RPX01BRVJUUz0xOworIyBOT1RFISAgVGhlIEJpZGlyIHRlc3QgZGVwZW5kcyBvbiBiZWluZyBhYmxlIHRvIHNldCBhIHNvY2tldCBidWZmZXIKKyMgc2l6ZSBncmVhdGVyIHRoYW4gMTMgKiA2NEtCIG9yIDgzMiBLQiBvciB0aGVyZSBpcyBhIHJpc2sgb2YgdGhlIHRlc3QKKyMgaGFuZ2luZy4gIElmIHlvdSBhcmUgcnVubmluZyBsaW51eCwgbWFrZSBjZXJ0YWluIHRoYXQKKyMgbmV0LmNvcmUuW3J8d11tZW1fbWF4IGFyZSBzdWZmaWNpZW50bHkgbGFyZ2UKK0RPX0JJRElSPTE7CitET19SUkFHRz0xOworRE9fUlI9MTsKK0RPX0FOQ0lMTEFSWT0xOworCisjIFVEUF9SUiBmb3IgVFBDL1BQUyB1c2luZyBzaW5nbGUtYnl0ZSB0cmFuc2FjdGlvbnMuIHdlIGRvIG5vdCB1c2UKKyMgVENQX1JSIGFueSBsb25nZXIgYmVjYXVzZSBhbnkgcGFja2V0IGxvc3NlcyBvciBvdGhlciBtYXR0ZXJzCisjIGFmZmVjdGluZyB0aGUgY29uZ2VzdGlvbiB3aW5kb3cgd2lsbCBicmVhayBvdXIgZGVzaXJlIHRoYXQgdGhlcmUgYmUKKyMgYSBvbmUgdG8gb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gcmVxdWVzdHMvcmVzcG9uc2VzIGFuZCBwYWNrZXRzLgoraWYgWyAkRE9fUlJBR0cgLWVxIDEgXTsgdGhlbgorICAgIEJVUlNUPWBmaW5kX21heF9idXJzdC5zaCAke1JFTU9URV9IT1NUU1swXX1gCisgICAgaWYgWyAkQlVSU1QgLWVxIC0xIF07IHRoZW4KKyAgICAgICAgIyB1c2UgYSB2YWx1ZSB0aGF0IGZpbmRfbWF4X2J1cnN0IHdpbGwgbm90IGhhdmUgcGlja2VkCisgICAgICAgIEJVUlNUPTkKKyAgICAgICAgZWNobyAiZmluZF9tYXhfYnVyc3Quc2ggcmV0dXJuZWQgLTEgc28gcGlja2luZyBhIGJ1cnN0IG9mICRCVVJTVCIKKyAgICBmaQorICAgIFRFU1Q9InRwcyIKKyAgICBURVNUTE9HPSJuZXRwZXJmX3Rwcy5sb2ciCisgICAgTkVUUEVSRl9DTUQ9Ii1EIDAuNSAtYyAtQyAtZiB4IC1QIDAgLXQgb21uaSAkTEVOR1RIIC12IDIgLS0gLXIgMSAtYiAkQlVSU1QgLWUgMSAtVCB1ZHAgLXUgJE1ZX1VVSUQgJE9VVFBVVCIKKyAgICBydW5fY21kCitmaQorCisjIEJpZGlyZWN0aW9uYWwgdXNpbmcgYnVyc3QtbW9kZSBUQ1BfUlIgYW5kIGxhcmdlIHJlcXVlc3QvcmVzcG9uc2Ugc2l6ZQoraWYgWyAkRE9fQklESVIgLWVxIDEgXTsgdGhlbgorICAgIFRFU1Q9ImJpZGlyZWN0aW9uYWwiCisgICAgVEVTVExPRz0ibmV0cGVyZl9iaWRpcmVjdGlvbmFsLmxvZyIKKyAgICBORVRQRVJGX0NNRD0iLUQgMC41IC1jIC1DIC1mIG0gLVAgMCAtdCBvbW5pICRMRU5HVEggLXYgMiAtLSAtciA2NEsgLXMgMU0gLVMgMU0gLWIgMTIgLXUgJE1ZX1VVSUQgJE9VVFBVVCIKKyAgICBydW5fY21kCitmaQorCisjIFRDUF9TVFJFQU0gYWthIG91dGJvdW5kIHdpdGggYSA2NEsgc2VuZCBzaXplCisjIHRoZSBuZXRwZXJmIGNvbW1hbmQgaXMgZXZlcnl0aGluZyBidXQgbmV0cGVyZiAtSCBtdW1ibGUKK2lmIFsgJERPX1NUUkVBTSAtZXEgMSBdO3RoZW4KKyAgICBURVNUPSJvdXRib3VuZCIKKyAgICBURVNUTE9HPSJuZXRwZXJmX291dGJvdW5kLmxvZyIKKyAgICBORVRQRVJGX0NNRD0iLUQgMC41IC1jIC1DIC1mIG0gLVAgMCAtdCBvbW5pICRMRU5HVEggLXYgMiAtLSAtbSA2NEsgLXUgJE1ZX1VVSUQgJE9VVFBVVCIKKyAgICBydW5fY21kCitmaQorCisjIFRDUF9NQUVSVFMgYWthIGluYm91bmQgd2l0aCBhIDY0SyBzZW5kIHNpemUgLSB3aHkgaXMgdGhpcyBvbmUgbGFzdD8KKyMgYmVjYXVzZSBwcmVzZW50bHkgd2hlbiBJIHBraWxsIHRoZSBuZXRwZXJmIG9mIGEgIk1BRVJUUyIgdGVzdCwgdGhlCisjIG5ldHNlcnZlciBkb2VzIG5vdCBiZWhhdmUgd2VsbCBhbmQgaXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byBnZXQgaXQKKyMgdG8gYmVoYXZlIHdlbGwuICBidXQgd2Ugd2lsbCBzdGlsbCBoYXZlIGFsbCB0aGUgaW50ZXJpbSByZXN1bHRzIGV2ZW4KKyMgaWYgd2UgZG9uJ3QgZ2V0IHRoZSBmaW5hbCByZXN1bHRzLCB0aGUgdXNlZnVsIHBhcnRzIG9mIHdoaWNoIHdpbGwgYmUKKyMgdGhlIHNhbWUgYXMgdGhlIG90aGVyIHRlc3RzIGFueXdheQoraWYgWyAkRE9fTUFFUlRTIC1lcSAxIF07IHRoZW4KKyAgICBURVNUPSJpbmJvdW5kIgorICAgIFRFU1RMT0c9Im5ldHBlcmZfaW5ib3VuZC5sb2ciCisgICAgTkVUUEVSRl9DTUQ9Ii1EIDAuNSAtYyAtQyAtZiBtIC1QIDAgLXQgb21uaSAkTEVOR1RIIC12IDIgLS0gLW0gLDY0SyAtdSAkTVlfVVVJRCAkT1VUUFVUIgorICAgIHJ1bl9jbWQKK2ZpCisKKyMgQSBzaW5nbGUtc3RyZWFtIG9mIHN5bmNocm9ub3VzLCBuby1idXJzdCBUQ1BfUlIgaW4gYW4gImFnZ3JlZ2F0ZSIKKyMgc2NyaXB0PyAgWWVzLCBiZWNhdXNlIHRoZSB3YXkgdGhlIGFnZ3JlZ2F0ZSB0ZXN0cyB3b3JrLCB3aGlsZSB0aGVyZQorIyBpcyBhIHdheSB0byBzZWUgd2hhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgYSBzaW5nbGUgYnVsayB0cmFuc2ZlciB3YXMsCisjIHRoZXJlIGlzIG5vIHdheSB0byBzZWUgYSBiYXNpYyBsYXRlbmN5IC0gYnkgdGhlIHRpbWUKKyMgZmluZF9tYXhfYnVyc3Quc2ggaGFzIGNvbXBsZXRlZCwgd2UgYXJlIHBhc3QgYSBidXJzdCBzaXplIG9mIDAKK2lmIFsgJERPX1JSIC1lcSAxIF07IHRoZW4KKyAgICBpZiBbICREVVJBVElPTiAtbHQgNjAgXTsgdGhlbgorCURVUkFUSU9OPTYwCisgICAgZmkKKyAgICBURVNUPSJzeW5jX3RwcyIKKyAgICBURVNUTE9HPSJuZXRwZXJmX3N5bmNfdHBzLmxvZyIKKyAgICBORVRQRVJGX0NNRD0iLUQgMC41IC1jIC1DIC1mIHggLVAgMCAtdCBvbW5pICRMRU5HVEggLXYgMiAtLSAtciAxIC11ICRNWV9VVUlEICRPVVRQVVQiCisgICAgcnVuX2NtZF9zZXJpYWwKK2ZpCisKKworIyBub3cgc29tZSBhbmNpbGxhcnkgdGhpbmdzIHdoaWNoIG1heSBub3IgbWF5IG5vdCB3b3JrIG9uIHlvdXIgcGxhdGZvcm0KK2lmIFsgJERPX0FOQ0lMTEFSWSAtZXEgMSBdO3RoZW4KKyAgICBkbWlkZWNvZGUgMj4mMSA+IGRtaWRlY29kZS50eHQKKyAgICB1bmFtZSAtYSAyPiYxID4gdW5hbWUudHh0CisgICAgY2F0IC9wcm9jL2NwdWluZm8gMj4mMSA+IGNwdWluZm8udHh0CisgICAgY2F0IC9wcm9jL21lbWluZm8gMj4mMSA+IG1lbWluZm8udHh0CisgICAgaWZjb25maWcgLWEgMj4mMSA+IGlmY29uZmlnLnR4dAorICAgIG5ldHN0YXQgLXJuIDI+JjEgPiBuZXRzdGF0LnR4dAorICAgIGRwa2cgLWwgMj4mMSA+IGRwa2cudHh0CisgICAgcnBtIC1xYSAyPiYxID4gcnBtLnR4dAorICAgIGNhdCAvcHJvYy9pbnRlcnJ1cHRzIDI+JjEgPiBpbnRlcnJ1cHRzLnR4dAorICAgIGk9MAorICAgIHdoaWxlIFsgJGkgLWx0IGBleHByICROVU1fUkVNT1RFX0hPU1RTIC0gMWAgXQorICAgIGRvCisJdHJhY2Vyb3V0ZSAke1JFTU9URV9IT1NUU1skaV19ID4gdHJhY2Vyb3V0ZV8ke1JFTU9URV9IT1NUU1skaV19LnR4dAorCWk9YGV4cHIgJGkgKyAxYAorICAgIGRvbmUKK2ZpCmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvc2N0cF9zdHJlYW1fc2NyaXB0IGIvZG9jL2V4YW1wbGVzL3NjdHBfc3RyZWFtX3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWU2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4YW1wbGVzL3NjdHBfc3RyZWFtX3NjcmlwdApAQCAtMCwwICsxLDEwMCBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgaXMgYW4gZXhhbXBsZSBzY3JpcHQgZm9yIHVzaW5nIG5ldHBlcmYuIEZlZWwgZnJlZSB0byBtb2RpZnkgaXQgCisjIGFzIG5lY2Vzc2FyeSwgYnV0IEkgd291bGQgc3VnZ2VzdCB0aGF0IHlvdSBjb3B5IHRoaXMgb25lIGZpcnN0LgorIyAKKyMgVGhpcyB2ZXJzaW9uIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBjb25maWRlbmNlCisjIGludGVydmFsIHN1cHBvcnQgaW4gcmV2aXNpb24gMi4wIG9mIG5ldHBlcmYuIGl0IGhhcyBhbHNvIGJlZW4gYWx0ZXJlZAorIyB0byBtYWtlIHN1Ym1pdHRpbmcgaXRzIHJlc3V0bHMgdG8gdGhlIG5ldHBlcmYgZGF0YWJhc2UgZWFzaWVyCisjIHJhaiAxMS85NAorIworIyB1c2FnZTogdGNwX3N0cmVhbV9zY3JpcHQgaG9zdG5hbWUgW0NQVV0KKyMKKworaWYgWyAkIyAtZ3QgMiBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHNjdHBfc3RyZWFtX3NjcmlwdCBob3N0bmFtZSBbQ1BVXSIKKyAgZXhpdCAxCitmaQorCitpZiBbICQjIC1lcSAwIF07IHRoZW4KKyAgZWNobyAidHJ5IGFnYWluLCBjb3JyZWN0bHkgLT4gc2N0cF9zdHJlYW1fc2NyaXB0IGhvc3RuYW1lIFtDUFVdIgorICBleGl0IDEKK2ZpCisKKyMgd2hlcmUgdGhlIHByb2dyYW1zIGFyZQorI05FVEhPTUU9L3Vzci9sb2NhbC9uZXRwZXJmCisjTkVUSE9NRT0iL29wdC9uZXRwZXJmIgorTkVUSE9NRT0uCisKKyMgYXQgd2hhdCBwb3J0IHdpbGwgbmV0c2VydmVyIGJlIHdhaXRpbmc/IElmIHlvdSBkZWNpZGUgdG8gcnVuCisjIG5ldHNlcnZlciBhdCBhIGRpZmZlcm5ldCBwb3J0IHRoYW4gdGhlIGRlZmF1bHQgb2YgMTI4NjUsIHRoZW4gc2V0CisjIHRoZSB2YWx1ZSBvZiBQT1JUIGFwcm9wcmlhdGVseQorI1BPUlQ9Ii1wIHNvbWVfb3RoZXJfcG9ydG51bSIKK1BPUlQ9IiIKKworIyBUaGUgdGVzdCBsZW5ndGggaW4gc2Vjb25kcworVEVTVF9USU1FPTYwCisKKyMgSG93IGFjY3VyYXRlIHdlIHdhbnQgdGhlIGVzdGltYXRlIG9mIHBlcmZvcm1hbmNlOiAKKyMgICAgICBtYXhpbXVtIGFuZCBtaW5pbXVtIHRlc3QgaXRlcmF0aW9ucyAoLWkpCisjICAgICAgY29uZmlkZW5jZSBsZXZlbCAoOTkgb3IgOTUpIGFuZCBpbnRlcnZhbCAocGVyY2VudCkKK1NUQVRTX1NUVUZGPSItaSAxMCwyIC1JIDk5LDUiCisKKyMgVGhlIHNvY2tldCBzaXplcyB0aGF0IHdlIHdpbGwgYmUgdGVzdGluZworU09DS0VUX1NJWkVTPSI1NzM0NCAzMjc2OCA4MTkyIgorCisjIFRoZSBzZW5kIHNpemVzIHRoYXQgd2Ugd2lsbCBiZSB1c2luZworU0VORF9TSVpFUz0iNDA5NiA4MTkyIDMyNzY4IgorCisjIGlmIHRoZXJlIGFyZSB0d28gcGFybXMsIHBhcm0gb25lIGl0IHRoZSBob3N0bmFtZSBhbmQgcGFybSB0d28gd2lsbAorIyBiZSBhIENQVSBpbmRpY2F0b3IuIGFjdHVhbGx5LCBhbnl0aGluZyBhcyBhIHNlY29uZCBwYXJtIHdpbGwgY2F1c2UKKyMgdGhlIENQVSB0byBiZSBtZWFzdXJlZCwgYnV0IHdlIHdpbGwgImFkdmVydGlzZSIgaXQgc2hvdWxkIGJlICJDUFUiCisKK2lmIFsgJCMgLWVxIDIgXTsgdGhlbgorICBSRU1fSE9TVD0kMQorICBMT0NfQ1BVPSItYyIKKyAgUkVNX0NQVT0iLUMiCitmaQorCitpZiBbICQjIC1lcSAxIF07IHRoZW4KKyAgUkVNX0hPU1Q9JDEKK2ZpCisKKyMgSWYgd2UgYXJlIG1lYXN1cmluZyBDUFUgdXRpbGl6YXRpb24sIHRoZW4gd2UgY2FuIHNhdmUgYmVhdWNvdXAKKyMgdGltZSBieSBzYXZpbmcgdGhlIHJlc3VsdHMgb2YgdGhlIENQVSBjYWxpYnJhdGlvbiBhbmQgcGFzc2luZworIyB0aGVtIGluIGR1cmluZyB0aGUgcmVhbCB0ZXN0cy4gU28sIHdlIGV4ZWN1dGUgdGhlIG5ldyBDUFUgInRlc3RzIgorIyBvZiBuZXRwZXJmIGFuZCBwdXQgdGhlIHZhbHVlcyBpbnRvIHNoZWxsIHZhcnMuCitjYXNlICRMT0NfQ1BVIGluCitcLWMpIExPQ19SQVRFPWAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC10IExPQ19DUFVgOzsKKyopIExPQ19SQVRFPSIiCitlc2FjCisKK2Nhc2UgJFJFTV9DUFUgaW4KK1wtQykgUkVNX1JBVEU9YCRORVRIT01FL25ldHBlcmYgJFBPUlQgLXQgUkVNX0NQVSAtSCAkUkVNX0hPU1RgOzsKKyopIFJFTV9SQVRFPSIiCitlc2FjCisKKyMgdGhpcyB3aWxsIGRpc2FibGUgaGVhZGVycworTk9fSERSPSItUCAwIgorCitmb3IgU09DS0VUX1NJWkUgaW4gJFNPQ0tFVF9TSVpFUworICBkbworICBmb3IgU0VORF9TSVpFIGluICRTRU5EX1NJWkVTCisgICAgZG8KKyAgICBlY2hvCisgICAgZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBlY2hvCisgICAgIyB3ZSBlY2hvIHRoZSBjb21tYW5kIGxpbmUgZm9yIGN1dCBhbmQgcGFzdGUgCisgICAgZWNobyAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC1sICRURVNUX1RJTUUgLUggJFJFTV9IT1NUIC10IFNDVFBfU1RSRUFNXAorICAgICAgICAgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkU1RBVFNfU1RVRkYgLS1cCisgICAgICAgICAtbSAkU0VORF9TSVpFIC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKKworICAgIGVjaG8KKyAgICAjIHNpbmNlIHdlIGhhdmUgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgc3R1ZmYsIHdlIGRvIG5vdAorICAgICMgbmVlZCB0byByZXBlYXQgYSB0ZXN0IG11bHRpcGxlIHRpbWVzIGZyb20gdGhlIHNoZWxsCisgICAgJE5FVEhPTUUvbmV0cGVyZiAkUE9SVCAtbCAkVEVTVF9USU1FIC1IICRSRU1fSE9TVCAtdCBTQ1RQX1NUUkVBTVwKKyAgICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLVwKKyAgICAtbSAkU0VORF9TSVpFIC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKKworICAgIGRvbmUKKyAgZG9uZQpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL3NuYXBzaG90X3NjcmlwdCBiL2RvYy9leGFtcGxlcy9zbmFwc2hvdF9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWVkMjU1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9leGFtcGxlcy9zbmFwc2hvdF9zY3JpcHQKQEAgLTAsMCArMSwyMjIgQEAKKyMhL2Jpbi9zaAorI3NldCAteAorIworIyBUaGlzIGlzIGEgc2NyaXB0IHRvIGdlbmVyYXRlIGEgcXVpY2sgInNuYXBzaG90IiBvZiBwZXJmb3JtYW5jZSBmb3IgYQorIyBwYWlyIG9mIG5vZGVzLiBBdCBmaXJzdCwgaXQgd2lsbCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGVzdHM6CisjCisjIFRDUCBTdHJlYW0gdGVzdCB3aXRoIDU2S0Igc29ja2V0IGJ1ZmZlcnMgYW5kIDRLQiBzZW5kcworIyBUQ1AgU3RyZWFtIHRlc3Qgd2l0aCAzMktCIHNvY2tldCBidWZmZXJzIGFuZCA0S0Igc2VuZHMKKyMgVENQIFJlcXVlc3QvUmVzcG9uc2UgdGVzdCB3aXRoIDEgYnl0ZSByZXF1ZXN0cyBhbmQgMSBieXRlIHJlc3BvbnNlcworIyBVRFAgUmVxdWVzdC9SZXNwb25zZSB0ZXN0IHdpdGggMSBieXRlIHJlcXVlc3RzIGFuZCAxIGJ5dGUgcmVzcG9uc2VzCisjIFVEUCBSZXF1ZXN0L1Jlc3BvbnNlIHRlc3Qgd2l0aCA1MTYgYnl0ZSByZXF1ZXN0cyBhbmQgNCBieXRlIHJlc3BvbnNlcworIyBVRFAgU3RyZWFtIHRlc3Qgd2l0aCAzMktCIHNvY2tldCBidWZmZXJzIGFuZCA0S0Igc2VuZHMKKyMgVURQIFN0cmVhbSB0ZXN0IHdpdGggMzJLQiBzb2NrZXQgYnVmZmVycyBhbmQgMUtCIHNlbmRzCisjCisjIEFsbCB0ZXN0cyB3aWxsIHJ1biBmb3Igc2l4dHkgc2Vjb25kcy4gQ29uZmlkZW5jZSBpbnRlcnZhbHMgYXJlIHVzZWQKKyMgdG8gaW5zdXJlIHRoZSByZXBlYXRhYmlsaXR5IG9mIHRoZSB0ZXN0LiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNvb25lc3QKKyMgdGhlIHNjcmlwdCB3aWxsIGJlIGZpbmlzaGVkIGlzIDIxIG1pbnV0ZXMuCisjCisjIFRoaXMgc2NyaXB0IHRha2VzIHR3byBwYXJhbWV0ZXJzLiBUaGUgZmlyc3QgcGFybSBpcyB0aGUgbmFtZSBvZiB0aGUKKyMgcmVtb3RlIGhvc3QuIEl0IGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyLiBUaGUgc2Vjb25kIHdpbGwgZWl0aGVyCisjIGVuYWJsZSBvciBkaXNhYmxlIENQVSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMuIEl0IGlzIGFuIG9wdGlvbmFsCisjIHBhcmFtZXRlciB3aGljaCBkZWZhdWx0cyB0byBubyBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLgorIworIyB1c2FnZTogc25hcHNob3Rfc2NyaXB0IGhvc3RuYW1lIFtDUFVdCisjCisjIG1vZCA2LzI5Lzk1IC0gZWNobyBwcm9ncmVzcyBpbmZvcm1hdGlvbiB0byBzdGRlcnIgc28gdGhhdCB3ZSBjYW4gCisjICAgICAgICAgICAgICAgc2VlIGZvcndhcmQgcHJvZ3Jlc3MgZXZlbiB3aGVuIHRoZSByZXN1bHRzIGFyZSAKKyMgICAgICAgICAgICAgICByZS1kaXJlY3RlZCB0byBhIGZpbGUKKyMKKyMgbW9kIDUvMjcvOTYgLSBzd2l0Y2ggZnJvbSBORVRIT01FIHRvIE5FVFBFUkYgYW5kIHRha2UgdGhlIHVzZXIncyB2YWx1ZQorIyAgICAgICAgICAgICAgIGlmIGl0IGlzIGFscmVhZHkgc2V0CisjCisjIG1vZCA4LzEyLzk2IC0gZml4IHRoZSBkZWZhdWx0IG5ldHBlcmYgY29tbWFuZCB2YXJpYWJsZSBzbyBpdCBmaW5kcyB0aGUKKyMgICAgICAgICAgICAgICBleGVjdXRhYmxlIGFuZCBub3QgdGhlIGRpcmVjdG9yeS4uLgorIworIyBGaXJzdCwgbGV0IHVzIHNldC11cCBzb21lIG9mIHRoZSBkZWZhdWx0cworIworIyB3aGVyZSBpcyBuZXRwZXJmIGluc3RhbGxlZCwgdGhlcmUgYXJlIGEgZmV3IHBvc3NpYmxlIHBsYWNlczoKKworTkVUUEVSRl9DTUQ9JHtORVRQRVJGX0NNRDo9L29wdC9uZXRwZXJmL25ldHBlcmZ9CisKKworIyB0aGVyZSBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIHR3byBwYXJtcyBwYXNzZWQKKworaWYgWyAkIyAtZ3QgMiBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHNuYXBzaG90X3NjcmlwdCBob3N0bmFtZSBbQ1BVXSIKKyAgZXhpdCAxCitmaQorCitpZiBbICQjIC1lcSAwIF07IHRoZW4KKyAgZWNobyAidHJ5IGFnYWluLCBjb3JyZWN0bHkgLT4gc25hcHNob3Rfc2NyaXB0IGhvc3RuYW1lIFtDUFVdIgorICBleGl0IDEKK2ZpCisKKyMgaWYgdGhlcmUgYXJlIHR3byBwYXJtcywgcGFybSBvbmUgaXQgdGhlIGhvc3RuYW1lIGFuZCBwYXJtIHR3byB3aWxsCisjIGJlIGEgQ1BVIGluZGljYXRvci4gYWN0dWFsbCwgYW55dGhpbmcgYXMgYSBzZWNvbmQgcGFybSB3aWxsIGNhdXNlCisjIHRoZSBDUFUgdG8gYmUgbWVhc3VyZWQsIGJ1dCB3ZSB3aWxsICJhZHZlcnRpc2UiIGl0IHNob3VsZCBiZSAiQ1BVIgorCitpZiBbICQjIC1lcSAyIF07IHRoZW4KKyAgUkVNX0hPU1Q9JDEKKyAgTE9DX0NQVT0iLWMiCisgIFJFTV9DUFU9Ii1DIgorZmkKKworaWYgWyAkIyAtZXEgMSBdOyB0aGVuCisgIFJFTV9IT1NUPSQxCitmaQorCisjIGF0IHdoYXQgcG9ydCB3aWxsIG5ldHNlcnZlciBiZSB3YWl0aW5nPyBJZiB5b3UgZGVjaWRlIHRvIHJ1bgorIyBuZXRzZXJ2ZXIgYXQgYSBkaWZmZXJuZXQgcG9ydCB0aGFuIHRoZSBkZWZhdWx0IG9mIDEyODY1LCB0aGVuIHNldAorIyB0aGUgdmFsdWUgb2YgUE9SVCBhcHJvcHJpYXRlbHkKKyNORVRQRVJGX1BPUlQ9Ii1wIHNvbWVfb3RoZXJfcG9ydG51bSIKK05FVFBFUkZfUE9SVD0ke05FVFBFUkZfUE9SVDo9IiJ9CisKKyMgSG93IGFjY3VyYXRlIHdlIHdhbnQgdGhlIGVzdGltYXRlIG9mIHBlcmZvcm1hbmNlOiAKKyMgICAgICBtYXhpbXVtIGFuZCBtaW5pbXVtIHRlc3QgaXRlcmF0aW9ucyAoLWkpCisjICAgICAgY29uZmlkZW5jZSBsZXZlbCAoOTkgb3IgOTUpIGFuZCBpbnRlcnZhbCAocGVyY2VudCkKK1NUQVRTX1NUVUZGPSItaSAxMCwzIC1JIDk5LDUiCisKKyMgbGVuZ3RoIGluIHRpbWUgb2YgdGhlIHRlc3QgLSBzaG91bGQgYmUgNjAgc2Vjb25kcworTkVUUEVSRl9USU1FPSR7TkVUUEVSRl9USU1FOj02MH0KKworIyB3aGVyZSBpcyB0aGUgYml0YnVja2V0PworQklUQlVDS0VUPSIvZGV2L251bGwiCisKKyMgYW5ub3VuY2Ugc3RhcnQgb2YgdGVzdAorZWNobyBOZXRwZXJmIHNuYXBzaG90IHNjcmlwdCBzdGFydGVkIGF0IGBkYXRlYCA+JjIKKworIyBJZiB3ZSBhcmUgbWVhc3VyaW5nIENQVSB1dGlsaXphdGlvbiwgdGhlbiB3ZSBjYW4gc2F2ZSBiZWF1Y291cCB0aW1lCisjIGJ5IHNhdmluZyB0aGUgcmVzdWx0cyBvZiB0aGUgQ1BVIGNhbGlicmF0aW9uIGFuZCBwYXNzaW5nIHRoZW0gaW4KKyMgZHVyaW5nIHRoZSByZWFsIHRlc3RzLiBTbywgd2UgZXhlY3V0ZSB0aGUgbmV3IENQVSAidGVzdHMiIG9mIG5ldHBlcmYKKyMgYW5kIHB1dCB0aGUgdmFsdWVzIGludG8gc2hlbGwgdmFycy4KKworY2FzZSAkTE9DX0NQVSBpbgorXC1jKSBMT0NfUkFURT1gJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgTE9DX0NQVWA7OworKikgTE9DX1JBVEU9IiIKK2VzYWMKKworY2FzZSAkUkVNX0NQVSBpbgorXC1DKSBSRU1fUkFURT1gJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgUkVNX0NQVSAtSCAkUkVNX0hPU1RgOzsKKyopIFJFTV9SQVRFPSIiCitlc2FjCisKKyMgV2Ugd2lsbCBwZXJmb3JtIHRocmVlIHR3ZW50eSBzZWNvbmQgd2FybS11cCB0ZXN0cyBhdCB0aGlzIHBvaW50LCBidXQKKyMgd2Ugd2lsbCBub3QgZGlzcGxheSB0aGUgcmVzdWx0cyBvZiB0aG9zZSB0ZXN0cy4gVGhpcyBpcyB1bmxpa2VseSB0bworIyBtYWtlIGFueSBkaWZmZXJlbmNlIGluIHRoZSByZXN1bHRzIGV4Y2VwdCByaWdodCBhZnRlciBhIHN5c3RlbQorIyByZWJvb3QsIGJ1dCB0aGlzIGlzIHN1cHBvc2VkIHRvIGJlIHJhdGhlciAiZ2VuZXJhbC4iIFdlIHdpbGwgZG8gYQorIyBUQ1Agc3RyZWFtIGFuZCBhIFRDUCByZXEvcmVzcCB0ZXN0CisKK1dBUk1fVElNRT0iMTAiCisKKyRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC1sICRXQVJNX1RJTUUgLXQgVENQX1NUUkVBTSAtSCAkUkVNX0hPU1QgLS0gXAorICAtcyAzMjc2OCAtUyAzMjc2OCAtbSA0MDk2ID4gJHtCSVRCVUNLRVR9CiskTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtbCAkV0FSTV9USU1FIC10IFRDUF9TVFJFQU0gLUggJFJFTV9IT1NUIC0tIFwKKyAgLXMgMzI3NjggLVMgMzI3NjggLW0gOTYgPiAke0JJVEJVQ0tFVH0KKyRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC1sICRXQVJNX1RJTUUgLXQgVENQX1JSIC1IICRSRU1fSE9TVCAtLSBcCisgIC1yIDEsMSA+ICR7QklUQlVDS0VUfQorCisjIFRoZSB3YXJtLXVwcyBhcmUgY29tcGxldGUsIHNvIHBlcmZvcm0gdGhlIHJlYWwgdGVzdHMgZmlyc3QsIHRoZQorIyBzdHJlYW0gdGVzdHMsIHRoZW4gdGhlIHJlcXVlc3QvcmVzcG9uc2UKKworZWNobyBTdGFydGluZyA1Nng0ICBUQ1BfU1RSRUFNIHRlc3RzIGF0IGBkYXRlYCA+JjIKKworIyBhIDU2eDQgVENQX1NUUkVBTSB0ZXN0CitlY2hvCitlY2hvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CitlY2hvICRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC10IFRDUF9TVFJFQU0gLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgXAorICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLSBcCisgIC1zIDU3MzQ0IC1TIDU3MzQ0IC1tIDQwOTYKK2VjaG8KKyRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC10IFRDUF9TVFJFQU0gLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgXAorICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLSBcCisgIC1zIDU3MzQ0IC1TIDU3MzQ0IC1tIDQwOTYKK2VjaG8KK2VjaG8KKyMgYSAzMng0IFRDUF9TVFJFQU0gdGVzdAorZWNobyBTdGFydGluZyAzMng0ICBUQ1BfU1RSRUFNIHRlc3RzIGF0IGBkYXRlYCA+JjIKK2VjaG8KK2VjaG8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvIFRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToKK2VjaG8gJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgVENQX1NUUkVBTSAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCBcCisgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkU1RBVFNfU1RVRkYgLS0gXAorIC1zIDMyNzY4IC1TIDMyNzY4IC1tIDQwOTYgCitlY2hvCiskTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtdCBUQ1BfU1RSRUFNIC1sICRORVRQRVJGX1RJTUUgLUggJFJFTV9IT1NUIFwKKyAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLSBcCisgLXMgMzI3NjggLVMgMzI3NjggLW0gNDA5NiAKK2VjaG8KK2VjaG8KKyMgYSBzaW5nbGUtYnl0ZSBUQ1BfUlIKK2VjaG8gU3RhcnRpbmcgMSwxICAgVENQX1JSICAgICB0ZXN0cyBhdCBgZGF0ZWAgPiYyCitlY2hvCitlY2hvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CitlY2hvICRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC10IFRDUF9SUiAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCBcCisgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkU1RBVFNfU1RVRkYgLS0gXAorIC1yIDEsMQorZWNobworJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgVENQX1JSIC1sICRORVRQRVJGX1RJTUUgLUggJFJFTV9IT1NUIFwKKyAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLSBcCisgLXIgMSwxCitlY2hvCitlY2hvCitlY2hvIFN0YXJ0aW5nIDEsMSAgIFVEUF9SUiAgICAgdGVzdHMgYXQgYGRhdGVgID4mMgorZWNobworZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gVGVzdGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lOgorIyBhIHNpbmdsZS1ieXRlIFVEUF9SUgorZWNobyAkTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtdCBVRFBfUlIgLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgXAorICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJFNUQVRTX1NUVUZGIC0tIFwKKyAtciAxLDEKK2VjaG8KKyRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC10IFVEUF9SUiAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCBcCisgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkU1RBVFNfU1RVRkYgLS0gXAorIC1yIDEsMQorZWNobworZWNobworIyBhIFVEUF9SUiB0ZXN0IG11Y2ggbGlrZSB0ZnRwCitlY2hvIFN0YXJ0aW5nIDUxMiw0IFVEUF9SUiAgICAgdGVzdHMgYXQgYGRhdGVgID4mMgorZWNobworZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gVGVzdGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lOgorZWNobyAkTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtdCBVRFBfUlIgLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgXAorICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJFNUQVRTX1NUVUZGIC0tIFwKKyAtciA1MTYsNAorZWNobworJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgVURQX1JSIC1sICRORVRQRVJGX1RJTUUgLUggJFJFTV9IT1NUIFwKKyAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLSAtciA1MTYsNAorIyBhIDMyeDQgVURQX1NUUkVBTSB0ZXN0CitlY2hvIFN0YXJ0aW5nIDMyeDQgIFVEUF9TVFJFQU0gdGVzdHMgYXQgYGRhdGVgID4mMgorZWNobworZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gVGVzdGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lOgorZWNobyAkTkVUUEVSRl9DTUQgJE5FVFBFUkZfUE9SVCAtdCBVRFBfU1RSRUFNIC1sICRORVRQRVJGX1RJTUUgLUggJFJFTV9IT1NUIFwKKyAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLSBcCisgLXMgMzI3NjggLVMgMzI3NjggLW0gNDA5NgorZWNobworJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgVURQX1NUUkVBTSAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCBcCisgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkU1RBVFNfU1RVRkYgLS0gXAorIC1zIDMyNzY4IC1TIDMyNzY4IC1tIDQwOTYKK2VjaG8KK2VjaG8KKyMgYSAzMngxIFVEUF9TVFJFQU0gdGVzdAorZWNobyBTdGFydGluZyAzMngxICBVRFBfU1RSRUFNIHRlc3RzIGF0IGBkYXRlYCA+JjIKK2VjaG8KK2VjaG8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvIFRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToKK2VjaG8gJE5FVFBFUkZfQ01EICRORVRQRVJGX1BPUlQgLXQgVURQX1NUUkVBTSAtbCAkTkVUUEVSRl9USU1FIC1IICRSRU1fSE9TVCBcCisgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAkU1RBVFNfU1RVRkYgLS0gXAorIC1zIDMyNzY4IC1TIDMyNzY4IC1tIDEwMjQKK2VjaG8KKyRORVRQRVJGX0NNRCAkTkVUUEVSRl9QT1JUIC10IFVEUF9TVFJFQU0gLWwgJE5FVFBFUkZfVElNRSAtSCAkUkVNX0hPU1QgXAorICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJFNUQVRTX1NUVUZGIC0tIFwKKyAtcyAzMjc2OCAtUyAzMjc2OCAtbSAxMDI0CitlY2hvCitlY2hvCisKKyMgYW5kIHRoYXQncyB0aGF0CitlY2hvIFRlc3RzIGNvbXBsZXRlZCBhdCBgZGF0ZWAgPiYyCisKK2VjaG8KZGlmZiAtLWdpdCBhL2RvYy9leGFtcGxlcy90Y3BfcmFuZ2Vfc2NyaXB0IGIvZG9jL2V4YW1wbGVzL3RjcF9yYW5nZV9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzdlYjhiNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9leGFtcGxlcy90Y3BfcmFuZ2Vfc2NyaXB0CkBAIC0wLDAgKzEsMTA5IEBACisjIS9iaW4vc2gKKyMKKyMgc3RyZWFtX3JhbmdlCisjCisjIGdlbmVyYXRlIGEgd2hvbGUgbG90IG9mIG51bWJlcnMgZnJvbSBuZXRwZXJmIHRvIHNlZSB0aGUgZWZmZWN0cworIyBvZiBzZW5kIHNpemUgb24gdGhydXB1dAorIworCisjCisjIHVzYWdlIDogdGNwX3N0cmVhbV9yYW5nZSBob3N0bmFtZSBbQ1BVXQorIworCitpZiBbICQjIC1ndCAyIF07IHRoZW4KKwllY2hvICJ0cnkgYWdhaW4sIGNvcnJlY3RseSAtPiB0Y3Bfc3RyZWFtX3JhbmdlIGhvc3RuYW1lIFtDUFVdIgorCWV4aXQgMQorZmkKKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHRjcF9zdHJlYW1fcmFuZ2UgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworIyBpZiB0aGVyZSBhcmUgdHdvIHBhcm1zLCBwYXJtIG9uZSBpdCB0aGUgaG9zdG5hbWUgYW5kIHBhcm0gdHdvIHdpbGwKKyMgYmUgYSBDUFUgaW5kaWNhdG9yLiBhY3R1YWxseSwgYW55dGhpbmcgYXMgYSBzZWNvbmQgcGFybSB3aWxsIGNhdXNlCisjIHRoZSBDUFUgdG8gYmUgbWVhc3VyZWQsIGJ1dCB3ZSB3aWxsICJhZHZlcnRpc2UiIGl0IHNob3VsZCBiZSAiQ1BVIgorCitpZiBbICQjIC1lcSAyIF07IHRoZW4KKyAgUkVNX0hPU1Q9JDEKKyAgTE9DX0NQVT0iLWMiCisgIFJFTV9DUFU9Ii1DIgorZmkKKworaWYgWyAkIyAtZXEgMSBdOyB0aGVuCisgIFJFTV9IT1NUPSQxCitmaQorCisjIGF0IHdoYXQgcG9ydCB3aWxsIG5ldHNlcnZlciBiZSB3YWl0aW5nPyBJZiB5b3UgZGVjaWRlIHRvIHJ1bgorIyBuZXRzZXJ2ZXIgYXQgYSBkaWZmZXJuZXQgcG9ydCB0aGFuIHRoZSBkZWZhdWx0IG9mIDEyODY1LCB0aGVuIHNldAorIyB0aGUgdmFsdWUgb2YgUE9SVCBhcHJvcHJpYXRlbHkKKyNQT1JUPSItcCBzb21lX290aGVyX3BvcnRudW0iCitQT1JUPSIiCisKKyMgd2hlcmUgaXMgbmV0cGVyZiwgYW5kIGFyZSB0aGVyZSBhbnkgImNvbnN0YW50IiBvcHRpb25zIHN1Y2ggYXMgCisjIHRoZSBuZXRzZXJ2ZXIgcG9ydCBudW1iZXIKKyNORVRIT01FPS91c3IvZXRjL25ldF9wZXJmCitORVRIT01FPSIuIgorTkVUUEVSRj0kTkVUSE9NRS9uZXRwZXJmICRQT1JUCisKKyMgSG93IGFjY3VyYXRlIHdlIHdhbnQgdGhlIGVzdGltYXRlIG9mIHBlcmZvcm1hbmNlOiAKKyMgICAgICBtYXhpbXVtIGFuZCBtaW5pbXVtIHRlc3QgaXRlcmF0aW9ucyAoLWkpCisjICAgICAgY29uZmlkZW5jZSBsZXZlbCAoOTkgb3IgOTUpIGFuZCBpbnRlcnZhbCAocGVyY2VudCkKK1NUQVRTX1NUVUZGPSItaSAxMCwyIC1JIDk5LDMiCisKKyMKKyMgc29tZSBzdHVmZiBmb3IgdGhlIGFyaXRobWV0aWMgCisjCisjIHdlIHN0YXJ0IGF0IHN0YXJ0LCBhbmQgdGhlbiBtdWx0aXBseSBieSBNVUxUIGFuZCBhZGQgQURELiBieSBjaGFuZ2luZworIyB0aGVzZSBudW1iZXJzLCB3ZSBjYW4gZG91YmxlIGVhY2ggdGltZSwgb3IgaW5jcmVhc2UgYnkgYSBmaXhlZAorIyBhbW91bnQsIG9yIGdvIHVwIGJ5IDR4LCB3aGF0ZXZlciB3ZSBsaWtlLi4uCisjCitTVEFSVD0xCisKK0VORD02NTUzNgorCitNVUxUPTQKKworQUREPTAKKworIyBJZiB3ZSBhcmUgbWVhc3VyaW5nIENQVSB1dGlsaXphdGlvbiwgdGhlbiB3ZSBjYW4gc2F2ZSBiZWF1Y291cAorIyB0aW1lIGJ5IHNhdmluZyB0aGUgcmVzdWx0cyBvZiB0aGUgQ1BVIGNhbGlicmF0aW9uIGFuZCBwYXNzaW5nCisjIHRoZW0gaW4gZHVyaW5nIHRoZSByZWFsIHRlc3RzLiBTbywgd2UgZXhlY3V0ZSB0aGUgbmV3IENQVSAidGVzdHMiCisjIG9mIG5ldHBlcmYgYW5kIHB1dCB0aGUgdmFsdWVzIGludG8gc2hlbGwgdmFycy4KK2Nhc2UgJExPQ19DUFUgaW4KK1wtYykgTE9DX1JBVEU9YCRORVRQRVJGIC10IExPQ19DUFVgOzsKKyopIExPQ19SQVRFPSIiCitlc2FjCisKK2Nhc2UgJFJFTV9DUFUgaW4KK1wtQykgUkVNX1JBVEU9YCRORVRQRVJGIC10IFJFTV9DUFUgLUggJFJFTV9IT1NUYDs7CisqKSBSRU1fUkFURT0iIgorZXNhYworCitUSU1FPSI2MCIKKworIworIyB0aGUgbWF4aW11bSBzb2NrZXQgYnVmZmVyIHNpemUgaXMgc3lzdGVtIGRlcGVuZGVudC4gZm9yIHRoZQorIyAiY2Fubm9uaWNhbCIgdGVzdHMgd2UgdXNlIDMyS0IsIGJ1dCB0aGlzIGNhbiBiZSBhbHRlcmVkCisjCitTT0NLRVRfU0laRT0iLXMgMzI3NjggLVMgMzI3NjgiCisKK01FU1NBR0U9JFNUQVJUCit3aGlsZSBbICRNRVNTQUdFIC1sZSAkRU5EIF07IGRvCisgIGVjaG8KKyAgZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CisgIGVjaG8gICRORVRQRVJGIC1sICRUSU1FIC1IICRSRU1fSE9TVCAtdCBUQ1BfU1RSRUFNXAorICAgICAgICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLVwKKyAgICAgICAgLW0gJE1FU1NBR0UgJFNPQ0tFVF9TSVpFIAorICBlY2hvCisgICRORVRQRVJGIC1sICRUSU1FIC1IICRSRU1fSE9TVCAtdCBUQ1BfU1RSRUFNXAorICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLVwKKyAgLW0gJE1FU1NBR0UgJFNPQ0tFVF9TSVpFCisKKyAgTUVTU0FHRT1gZXhwciAkTUVTU0FHRSArICRBRERgCisgIE1FU1NBR0U9YGV4cHIgJE1FU1NBR0UgXCogJE1VTFRgCisKK2RvbmUKK2VjaG8KKwpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL3RjcF9ycl9zY3JpcHQgYi9kb2MvZXhhbXBsZXMvdGNwX3JyX3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMDdkN2FjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4YW1wbGVzL3RjcF9ycl9zY3JpcHQKQEAgLTAsMCArMSwxMDMgQEAKKyMhL2Jpbi9zaAorIworIyBUaGlzIGlzIGFuIGV4YW1wbGUgc2NyaXB0IGZvciB1c2luZyBuZXRwZXJmLiBGZWVsIGZyZWUgdG8gbW9kaWZ5IGl0IAorIyBhcyBuZWNlc3NhcnksIGJ1dCBJIHdvdWxkIHN1Z2dlc3QgdGhhdCB5b3UgY29weSB0aGlzIG9uZSBmaXJzdC4KKyMKKyMgCisjIFRoaXMgdmVyc2lvbiBoYXMgYmVlbiBtb2RpZmllZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29uZmlkZW5jZQorIyBpbnRlcnZhbCBzdXBwb3J0IGluIHJldmlzaW9uIDIuMCBvZiBuZXRwZXJmLiBpdCBoYXMgYWxzbyBiZWVuIGFsdGVyZWQKKyMgdG8gbWFrZSBzdWJtaXR0aW5nIGl0cyByZXN1dGxzIHRvIHRoZSBuZXRwZXJmIGRhdGFiYXNlIGVhc2llcgorIyByYWogMTEvOTQKKyMKKyMgdXNhZ2U6IHRjcF9ycl9zY3JpcHQgaG9zdG5hbWUgW0NQVV0KKyMKKworaWYgWyAkIyAtZ3QgMiBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHRjcF9ycl9zY3JpcHQgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHRjcF9ycl9zY3JpcHQgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworIyB3aGVyZSB0aGUgcHJvZ3JhbXMgYXJlCisjTkVUSE9NRT0vdXNyL2xvY2FsL25ldHBlcmYKKyNORVRIT01FPSIvb3B0L25ldHBlcmYiCitORVRIT01FPS4KKworIyBhdCB3aGF0IHBvcnQgd2lsbCBuZXRzZXJ2ZXIgYmUgd2FpdGluZz8gSWYgeW91IGRlY2lkZSB0byBydW4KKyMgbmV0c2VydmVyIGF0IGEgZGlmZmVybmV0IHBvcnQgdGhhbiB0aGUgZGVmYXVsdCBvZiAxMjg2NSwgdGhlbiBzZXQKKyMgdGhlIHZhbHVlIG9mIFBPUlQgYXByb3ByaWF0ZWx5CisjUE9SVD0iLXAgc29tZV9vdGhlcl9wb3J0bnVtIgorUE9SVD0iIgorCisjIFRoZSB0ZXN0IGxlbmd0aCBpbiBzZWNvbmRzCitURVNUX1RJTUU9NjAKKworIyBIb3cgYWNjdXJhdGUgd2Ugd2FudCB0aGUgZXN0aW1hdGUgb2YgcGVyZm9ybWFuY2U6IAorIyAgICAgIG1heGltdW0gYW5kIG1pbmltdW0gdGVzdCBpdGVyYXRpb25zICgtaSkKKyMgICAgICBjb25maWRlbmNlIGxldmVsICg5OSBvciA5NSkgYW5kIGludGVydmFsIChwZXJjZW50KQorU1RBVFNfU1RVRkY9Ii1pIDEwLDMgLUkgOTksNSIKKworIyBUaGUgc29ja2V0IHNpemVzIHRoYXQgd2Ugd2lsbCBiZSB0ZXN0aW5nIC0gdXNpbmcgemVybyB3aWxsIGxldCBpdCAKKyMgYmUgdGhlIHN5c3RlbSBkZWZhdWx0LgorU09DS0VUX1NJWkVTPSIwIgorCisjIFRoZSByZXF1ZXN0LHJlc3BvbnNlIHNpemVzIHRoYXQgd2Ugd2lsbCBiZSB1c2luZy4gVGhlIG5ldHBlcmYKKyMgY29tbWFuZCBwYXJzZXIgd2lsbCB0cmVhdCAiMSIgdGhlIHNhbWUgYXMgIjEsMSIgLSBJIHVzZSAxLDEgdG8KKyMgcmVtZW1iZXIgdGhhdCBpdCBpcyAicmVxdWVzdCxyZXNwb25zZSIKK1JSX1NJWkVTPSIxLDEgNjQsNjQgMTAwLDIwMCAxMjgsODE5MiIKKworIyBpZiB0aGVyZSBhcmUgdHdvIHBhcm1zLCBwYXJtIG9uZSBpdCB0aGUgaG9zdG5hbWUgYW5kIHBhcm0gdHdvIHdpbGwKKyMgYmUgYSBDUFUgaW5kaWNhdG9yLiBhY3R1YWxseSwgYW55dGhpbmcgYXMgYSBzZWNvbmQgcGFybSB3aWxsIGNhdXNlCisjIHRoZSBDUFUgdG8gYmUgbWVhc3VyZWQsIGJ1dCB3ZSB3aWxsICJhZHZlcnRpc2UiIGl0IHNob3VsZCBiZSAiQ1BVIgorCitpZiBbICQjIC1lcSAyIF07IHRoZW4KKyAgUkVNX0hPU1Q9JDEKKyAgTE9DX0NQVT0iLWMiCisgIFJFTV9DUFU9Ii1DIgorZmkKKworaWYgWyAkIyAtZXEgMSBdOyB0aGVuCisgIFJFTV9IT1NUPSQxCitmaQorCisjIElmIHdlIGFyZSBtZWFzdXJpbmcgQ1BVIHV0aWxpemF0aW9uLCB0aGVuIHdlIGNhbiBzYXZlIGJlYXVjb3VwCisjIHRpbWUgYnkgc2F2aW5nIHRoZSByZXN1bHRzIG9mIHRoZSBDUFUgY2FsaWJyYXRpb24gYW5kIHBhc3NpbmcKKyMgdGhlbSBpbiBkdXJpbmcgdGhlIHJlYWwgdGVzdHMuIFNvLCB3ZSBleGVjdXRlIHRoZSBuZXcgQ1BVICJ0ZXN0cyIKKyMgb2YgbmV0cGVyZiBhbmQgcHV0IHRoZSB2YWx1ZXMgaW50byBzaGVsbCB2YXJzLgorY2FzZSAkTE9DX0NQVSBpbgorXC1jKSBMT0NfUkFURT1gJE5FVEhPTUUvbmV0cGVyZiAkUE9SVCAtdCBMT0NfQ1BVYDs7CisqKSBMT0NfUkFURT0iIgorZXNhYworCitjYXNlICRSRU1fQ1BVIGluCitcLUMpIFJFTV9SQVRFPWAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC10IFJFTV9DUFUgLUggJFJFTV9IT1NUYDs7CisqKSBSRU1fUkFURT0iIgorZXNhYworCisjIFRoaXMgZGlzYWJsZXMgaGVhZGVyIGRpc3BsYXkKK05PX0hEUj0iLVAgMCIKKworZm9yIFNPQ0tFVF9TSVpFIGluICRTT0NLRVRfU0laRVMKKyBkbworICBmb3IgUlJfU0laRSBpbiAkUlJfU0laRVMKKyAgIGRvCisgICBlY2hvCisgICBlY2hvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CisgICAjIHdlIGVjaG8gdGhlIGNvbW1hbmQgbGluZSBmb3IgY3V0IGFuZCBwYXN0ZSB0byB0aCBkYXRhYmFzZQorICAgZWNobyAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC1sICRURVNUX1RJTUUgLUggJFJFTV9IT1NUIC10IFRDUF9SUiBcCisgICAgICAgICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJFNUQVRTX1NUVUZGIC0tXAorICAgICAgICAtciAkUlJfU0laRSAtcyAkU09DS0VUX1NJWkUgLVMgJFNPQ0tFVF9TSVpFCisgICBlY2hvCisgICAjIHNpbmNlIHdlIGhhdmUgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgc3R1ZmYsIHdlIGRvIG5vdAorICAgIyBuZWVkIHRvIHJlcGVhdCBhIHRlc3QgbXVsdGlwbGUgdGltZXMgZnJvbSB0aGUgc2hlbGwKKyAgICRORVRIT01FL25ldHBlcmYgJFBPUlQgLWwgJFRFU1RfVElNRSAtSCAkUkVNX0hPU1QgLXQgVENQX1JSIFwKKyAgICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJFNUQVRTX1NUVUZGIC0tXAorICAgLXIgJFJSX1NJWkUgLXMgJFNPQ0tFVF9TSVpFIC1TICRTT0NLRVRfU0laRQorIGRvbmUKK2RvbmUKK2VjaG8KZGlmZiAtLWdpdCBhL2RvYy9leGFtcGxlcy90Y3Bfc3RyZWFtX3NjcmlwdCBiL2RvYy9leGFtcGxlcy90Y3Bfc3RyZWFtX3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMjVmNWZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4YW1wbGVzL3RjcF9zdHJlYW1fc2NyaXB0CkBAIC0wLDAgKzEsMTAwIEBACisjIS9iaW4vc2gKKyMKKyMgVGhpcyBpcyBhbiBleGFtcGxlIHNjcmlwdCBmb3IgdXNpbmcgbmV0cGVyZi4gRmVlbCBmcmVlIHRvIG1vZGlmeSBpdCAKKyMgYXMgbmVjZXNzYXJ5LCBidXQgSSB3b3VsZCBzdWdnZXN0IHRoYXQgeW91IGNvcHkgdGhpcyBvbmUgZmlyc3QuCisjIAorIyBUaGlzIHZlcnNpb24gaGFzIGJlZW4gbW9kaWZpZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbmZpZGVuY2UKKyMgaW50ZXJ2YWwgc3VwcG9ydCBpbiByZXZpc2lvbiAyLjAgb2YgbmV0cGVyZi4gaXQgaGFzIGFsc28gYmVlbiBhbHRlcmVkCisjIHRvIG1ha2Ugc3VibWl0dGluZyBpdHMgcmVzdXRscyB0byB0aGUgbmV0cGVyZiBkYXRhYmFzZSBlYXNpZXIKKyMgcmFqIDExLzk0CisjCisjIHVzYWdlOiB0Y3Bfc3RyZWFtX3NjcmlwdCBob3N0bmFtZSBbQ1BVXQorIworCitpZiBbICQjIC1ndCAyIF07IHRoZW4KKyAgZWNobyAidHJ5IGFnYWluLCBjb3JyZWN0bHkgLT4gdGNwX3N0cmVhbV9zY3JpcHQgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHRjcF9zdHJlYW1fc2NyaXB0IGhvc3RuYW1lIFtDUFVdIgorICBleGl0IDEKK2ZpCisKKyMgd2hlcmUgdGhlIHByb2dyYW1zIGFyZQorI05FVEhPTUU9L3Vzci9sb2NhbC9uZXRwZXJmCisjTkVUSE9NRT0iL29wdC9uZXRwZXJmIgorTkVUSE9NRT0uCisKKyMgYXQgd2hhdCBwb3J0IHdpbGwgbmV0c2VydmVyIGJlIHdhaXRpbmc/IElmIHlvdSBkZWNpZGUgdG8gcnVuCisjIG5ldHNlcnZlciBhdCBhIGRpZmZlcmVudCBwb3J0IHRoYW4gdGhlIGRlZmF1bHQgb2YgMTI4NjUsIHRoZW4gc2V0CisjIHRoZSB2YWx1ZSBvZiBQT1JUIGFwcm9wcmlhdGVseQorI1BPUlQ9Ii1wIHNvbWVfb3RoZXJfcG9ydG51bSIKK1BPUlQ9IiIKKworIyBUaGUgdGVzdCBsZW5ndGggaW4gc2Vjb25kcworVEVTVF9USU1FPTYwCisKKyMgSG93IGFjY3VyYXRlIHdlIHdhbnQgdGhlIGVzdGltYXRlIG9mIHBlcmZvcm1hbmNlOiAKKyMgICAgICBtYXhpbXVtIGFuZCBtaW5pbXVtIHRlc3QgaXRlcmF0aW9ucyAoLWkpCisjICAgICAgY29uZmlkZW5jZSBsZXZlbCAoOTkgb3IgOTUpIGFuZCBpbnRlcnZhbCAocGVyY2VudCkKK1NUQVRTX1NUVUZGPSItaSAxMCwyIC1JIDk5LDUiCisKKyMgVGhlIHNvY2tldCBzaXplcyB0aGF0IHdlIHdpbGwgYmUgdGVzdGluZworU09DS0VUX1NJWkVTPSIxMjhLIDU3MzQ0IDMyNzY4IDgxOTIiCisKKyMgVGhlIHNlbmQgc2l6ZXMgdGhhdCB3ZSB3aWxsIGJlIHVzaW5nCitTRU5EX1NJWkVTPSI0MDk2IDgxOTIgMzI3NjgiCisKKyMgaWYgdGhlcmUgYXJlIHR3byBwYXJtcywgcGFybSBvbmUgaXQgdGhlIGhvc3RuYW1lIGFuZCBwYXJtIHR3byB3aWxsCisjIGJlIGEgQ1BVIGluZGljYXRvci4gYWN0dWFsbHksIGFueXRoaW5nIGFzIGEgc2Vjb25kIHBhcm0gd2lsbCBjYXVzZQorIyB0aGUgQ1BVIHRvIGJlIG1lYXN1cmVkLCBidXQgd2Ugd2lsbCAiYWR2ZXJ0aXNlIiBpdCBzaG91bGQgYmUgIkNQVSIKKworaWYgWyAkIyAtZXEgMiBdOyB0aGVuCisgIFJFTV9IT1NUPSQxCisgIExPQ19DUFU9Ii1jIgorICBSRU1fQ1BVPSItQyIKK2ZpCisKK2lmIFsgJCMgLWVxIDEgXTsgdGhlbgorICBSRU1fSE9TVD0kMQorZmkKKworIyBJZiB3ZSBhcmUgbWVhc3VyaW5nIENQVSB1dGlsaXphdGlvbiwgdGhlbiB3ZSBjYW4gc2F2ZSBiZWF1Y291cAorIyB0aW1lIGJ5IHNhdmluZyB0aGUgcmVzdWx0cyBvZiB0aGUgQ1BVIGNhbGlicmF0aW9uIGFuZCBwYXNzaW5nCisjIHRoZW0gaW4gZHVyaW5nIHRoZSByZWFsIHRlc3RzLiBTbywgd2UgZXhlY3V0ZSB0aGUgbmV3IENQVSAidGVzdHMiCisjIG9mIG5ldHBlcmYgYW5kIHB1dCB0aGUgdmFsdWVzIGludG8gc2hlbGwgdmFycy4KK2Nhc2UgJExPQ19DUFUgaW4KK1wtYykgTE9DX1JBVEU9YCRORVRIT01FL25ldHBlcmYgJFBPUlQgLXQgTE9DX0NQVWA7OworKikgTE9DX1JBVEU9IiIKK2VzYWMKKworY2FzZSAkUkVNX0NQVSBpbgorXC1DKSBSRU1fUkFURT1gJE5FVEhPTUUvbmV0cGVyZiAkUE9SVCAtdCBSRU1fQ1BVIC1IICRSRU1fSE9TVGA7OworKikgUkVNX1JBVEU9IiIKK2VzYWMKKworIyB0aGlzIHdpbGwgZGlzYWJsZSBoZWFkZXJzCitOT19IRFI9Ii1QIDAiCisKK2ZvciBTT0NLRVRfU0laRSBpbiAkU09DS0VUX1NJWkVTCisgIGRvCisgIGZvciBTRU5EX1NJWkUgaW4gJFNFTkRfU0laRVMKKyAgICBkbworICAgIGVjaG8KKyAgICBlY2hvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIGVjaG8KKyAgICAjIHdlIGVjaG8gdGhlIGNvbW1hbmQgbGluZSBmb3IgY3V0IGFuZCBwYXN0ZSAKKyAgICBlY2hvICRORVRIT01FL25ldHBlcmYgJFBPUlQgLWwgJFRFU1RfVElNRSAtSCAkUkVNX0hPU1QgLXQgVENQX1NUUkVBTVwKKyAgICAgICAgICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgJFNUQVRTX1NUVUZGIC0tXAorICAgICAgICAgLW0gJFNFTkRfU0laRSAtcyAkU09DS0VUX1NJWkUgLVMgJFNPQ0tFVF9TSVpFCisKKyAgICBlY2hvCisgICAgIyBzaW5jZSB3ZSBoYXZlIHRoZSBjb25maWRlbmNlIGludGVydmFsIHN0dWZmLCB3ZSBkbyBub3QKKyAgICAjIG5lZWQgdG8gcmVwZWF0IGEgdGVzdCBtdWx0aXBsZSB0aW1lcyBmcm9tIHRoZSBzaGVsbAorICAgICRORVRIT01FL25ldHBlcmYgJFBPUlQgLWwgJFRFU1RfVElNRSAtSCAkUkVNX0hPU1QgLXQgVENQX1NUUkVBTVwKKyAgICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFICRTVEFUU19TVFVGRiAtLVwKKyAgICAtbSAkU0VORF9TSVpFIC1zICRTT0NLRVRfU0laRSAtUyAkU09DS0VUX1NJWkUKKworICAgIGRvbmUKKyAgZG9uZQpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL3VkcF9ycl9zY3JpcHQgYi9kb2MvZXhhbXBsZXMvdWRwX3JyX3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YzU4NDE4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4YW1wbGVzL3VkcF9ycl9zY3JpcHQKQEAgLTAsMCArMSwxMDMgQEAKKyMhL2Jpbi9zaAorIworIyBUaGlzIGlzIGFuIGV4YW1wbGUgc2NyaXB0IGZvciB1c2luZyBuZXRwZXJmLiBGZWVsIGZyZWUgdG8gbW9kaWZ5IGl0IAorIyBhcyBuZWNlc3NhcnksIGJ1dCBJIHdvdWxkIHN1Z2dlc3QgdGhhdCB5b3UgY29weSB0aGlzIG9uZSBmaXJzdC4KKyMKKyMKKyMgdW5jb21tZW50IHRoZSBuZXh0IGxpbmUgaWYgeW91IHRoaW5rIHRoZSBzY3JpcHQgaXMgYnJva2VuCisjc2V0IC14CisKKworaWYgWyAkIyAtZ3QgMiBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHVkcF9ycl9zY3JpcHQgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gInRyeSBhZ2FpbiwgY29ycmVjdGx5IC0+IHVkcF9ycl9zY3JpcHQgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworIyB3aGVyZSB0aGUgcHJvZ3JhbXMgYXJlCisKKyNORVRIT01FPS91c3IvbG9jYWwvbmV0cGVyZgorI05FVEhPTUU9Ii9vcHQvbmV0cGVyZiIKK05FVEhPTUU9Ii4iCisKKyMgYXQgd2hhdCBwb3J0IHdpbGwgbmV0c2VydmVyIGJlIHdhaXRpbmc/IElmIHlvdSBkZWNpZGUgdG8gcnVuCisjIG5ldHNlcnZlciBhdCBhIGRpZmZlcm5ldCBwb3J0IHRoYW4gdGhlIGRlZmF1bHQgb2YgMTI4NjUsIHRoZW4gc2V0CisjIHRoZSB2YWx1ZSBvZiBQT1JUIGFwcm9wcmlhdGVseQorI1BPUlQ9Ii1wIHNvbWVfb3RoZXJfcG9ydG51bSIKK1BPUlQ9IiIKKworCisjIFRoZSB0ZXN0IGxlbmd0aCBpbiBzZWNvbmRzCisKK1RFU1RfVElNRT02MAorCisjIEhvdyBhY2N1cmF0ZSB3ZSB3YW50IHRoZSBlc3RpbWF0ZSBvZiBwZXJmb3JtYW5jZTogCisjICAgICAgbWF4aW11bSBhbmQgbWluaW11bSB0ZXN0IGl0ZXJhdGlvbnMgKC1pKQorIyAgICAgIGNvbmZpZGVuY2UgbGV2ZWwgKDk5IG9yIDk1KSBhbmQgaW50ZXJ2YWwgKHBlcmNlbnQpCisKK1NUQVRTX1NUVUZGPSItaSAxMCwyIC1JIDk5LDEwIgorCisjIFRoZSBzb2NrZXQgc2l6ZXMgdGhhdCB3ZSB3aWxsIGJlIHRlc3RpbmcgLSAtMSBtZWFucyB1c2UgZGVmYXVsdAorIyBub3QgbXVjaCBwb2ludCBpbiBjaGFuZ2luZyB0aGUgc29ja2V0IGJ1ZmZlciBmb3IgYSBVRFAgcmVxdWVzdC8KKyMgcmVzcG9uc2UgdGVzdCAtIHVubGVzcyB5b3Ugd2FudCB0byBoYXZlIHJlcXVlc3RzL3Jlc3BvbnNlcyB3aGljaCAKKyMgYXJlIGxhcmdlciB0aGFuIHRoZSBkZWZhdWx0CisKK1NPQ0tFVF9TSVpFUz0iLTEiCisKKyMgVGhlIHNlbmQgc2l6ZXMgdGhhdCB3ZSB3aWxsIGJlIHVzaW5nCisKK1JSX1NJWkVTPSIxLDEgNjQsNjQgMTAwLDIwMCAxMDI0LDEwMjQiCisKKyMgaWYgdGhlcmUgYXJlIHR3byBwYXJtcywgcGFybSBvbmUgaXQgdGhlIGhvc3RuYW1lIGFuZCBwYXJtIHR3byB3aWxsCisjIGJlIGEgQ1BVIGluZGljYXRvci4gYWN0dWFsbHksIGFueXRoaW5nIGFzIGEgc2Vjb25kIHBhcm0gd2lsbCBjYXVzZQorIyB0aGUgQ1BVIHRvIGJlIG1lYXN1cmVkLCBidXQgd2Ugd2lsbCAiYWR2ZXJ0aXNlIiBpdCBzaG91bGQgYmUgIkNQVSIKKworaWYgWyAkIyAtZXEgMiBdOyB0aGVuCisgIFJFTV9IT1NUPSQxCisgIExPQ19DUFU9Ii1jIgorICBSRU1fQ1BVPSItQyIKK2ZpCisKK2lmIFsgJCMgLWVxIDEgXTsgdGhlbgorICBMT0NfQ1BVPSIiCisgIFJFTV9DUFU9IiIKKyAgUkVNX0hPU1Q9JDEKK2ZpCisKKyMgSWYgd2UgYXJlIG1lYXN1cmluZyBDUFUgdXRpbGl6YXRpb24sIHRoZW4gd2UgY2FuIHNhdmUgYmVhdWNvdXAKKyMgdGltZSBieSBzYXZpbmcgdGhlIHJlc3VsdHMgb2YgdGhlIENQVSBjYWxpYnJhdGlvbiBhbmQgcGFzc2luZworIyB0aGVtIGluIGR1cmluZyB0aGUgcmVhbCB0ZXN0cy4gU28sIHdlIGV4ZWN1dGUgdGhlIG5ldyBDUFUgInRlc3RzIgorIyBvZiBuZXRwZXJmIGFuZCBwdXQgdGhlIHZhbHVlcyBpbnRvIHNoZWxsIHZhcnMuCitjYXNlICRMT0NfQ1BVIGluCitcLWMpIExPQ19SQVRFPWAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC10IExPQ19DUFVgOzsKKyopIExPQ19SQVRFPSIiCitlc2FjCisKK2Nhc2UgJFJFTV9DUFUgaW4KK1wtQykgUkVNX1JBVEU9YCRORVRIT01FL25ldHBlcmYgJFBPUlQgLXQgUkVNX0NQVSAtSCAkUkVNX0hPU1RgOzsKKyopIFJFTV9SQVRFPSIiCitlc2FjCisKKyMgVGhpcyB0dXJucy1vZmYgdGhlIGRpc3BsYXkgaGVhZGVycworTk9fSERSPSItUCAwIgorCitmb3IgU09DS0VUX1NJWkUgaW4gJFNPQ0tFVF9TSVpFUworZG8KKyAgZm9yIFJSX1NJWkUgaW4gJFJSX1NJWkVTCisgIGRvCisgIGVjaG8KKyAgZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CisgIGVjaG8gJE5FVEhPTUUvbmV0cGVyZiAkUE9SVCAtbCAkVEVTVF9USU1FIC1IICRSRU1fSE9TVCAkU1RBVFNfU1RVRkYgXAorICAgICAgICAgICAgICAgICAgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAtdCBVRFBfUlIgLS1cCisgICAgICAgICAgICAgICAgICAtciAkUlJfU0laRSAtcyAkU09DS0VUX1NJWkUgLVMgJFNPQ0tFVF9TSVpFCisgICRORVRIT01FL25ldHBlcmYgJFBPUlQgLWwgJFRFU1RfVElNRSAtSCAkUkVNX0hPU1QgJFNUQVRTX1NUVUZGIFwKKyAgICAkTE9DX0NQVSAkTE9DX1JBVEUgJFJFTV9DUFUgJFJFTV9SQVRFIC10IFVEUF9SUiAkTk9fSERSIC0tXAorICAgICAgICAgICAgICAgICAgLXIgJFJSX1NJWkUgLXMgJFNPQ0tFVF9TSVpFIC1TICRTT0NLRVRfU0laRQorICBkb25lCitkb25lCitlY2hvCmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvdWRwX3N0cmVhbV9zY3JpcHQgYi9kb2MvZXhhbXBsZXMvdWRwX3N0cmVhbV9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdkNTI0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9leGFtcGxlcy91ZHBfc3RyZWFtX3NjcmlwdApAQCAtMCwwICsxLDEwMCBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgaXMgYW4gZXhhbXBsZSBzY3JpcHQgZm9yIHVzaW5nIG5ldHBlcmYuIEZlZWwgZnJlZSB0byBtb2RpZnkgaXQgCisjIGFzIG5lY2Vzc2FyeSwgYnV0IEkgd291bGQgc3VnZ2VzdCB0aGF0IHlvdSBjb3B5IHRoaXMgb25lIGZpcnN0LgorIyBUaGlzIHNjcmlwdCBwZXJmb3JtcyB2YXJpb3VzIFVEUCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gdGVzdHMuCisjCisKK2lmIFsgJCMgLWd0IDIgXTsgdGhlbgorICBlY2hvICJ0cnkgYWdhaW4sIGNvcnJlY3RseSAtPiB1ZHBfc3RyZWFtX3NjcmlwdCBob3N0bmFtZSBbQ1BVXSIKKyAgZXhpdCAxCitmaQorCitpZiBbICQjIC1lcSAwIF07IHRoZW4KKyAgZWNobyAidHJ5IGFnYWluLCBjb3JyZWN0bHkgLT4gdWRwX3N0cmVhbV9zY3JpcHQgaG9zdG5hbWUgW0NQVV0iCisgIGV4aXQgMQorZmkKKworIyB3aGVyZSB0aGUgcHJvZ3JhbXMgYXJlCisKKyNORVRIT01FPS91c3IvbG9jYWwvbmV0cGVyZgorI05FVEhPTUU9Ii9vcHQvbmV0cGVyZiIKK05FVEhPTUU9Ii4iCisKKyMgYXQgd2hhdCBwb3J0IHdpbGwgbmV0c2VydmVyIGJlIHdhaXRpbmc/IElmIHlvdSBkZWNpZGUgdG8gcnVuCisjIG5ldHNlcnZlciBhdCBhIGRpZmZlcm5ldCBwb3J0IHRoYW4gdGhlIGRlZmF1bHQgb2YgMTI4NjUsIHRoZW4gc2V0CisjIHRoZSB2YWx1ZSBvZiBQT1JUIGFwcm9wcmlhdGVseQorI1BPUlQ9Ii1wIHNvbWVfb3RoZXJfcG9ydG51bSIKK1BPUlQ9IiIKKworIyBUaGUgdGVzdCBsZW5ndGggaW4gc2Vjb25kcworVEVTVF9USU1FPTYwCisKKyMgSG93IGFjY3VyYXRlIHdlIHdhbnQgdGhlIGVzdGltYXRlIG9mIHBlcmZvcm1hbmNlOiAKKyMgICAgICBtYXhpbXVtIGFuZCBtaW5pbXVtIHRlc3QgaXRlcmF0aW9ucyAoLWkpCisjICAgICAgY29uZmlkZW5jZSBsZXZlbCAoOTkgb3IgOTUpIGFuZCBpbnRlcnZhbCAocGVyY2VudCkKKworU1RBVFNfU1RVRkY9Ii1pIDEwLDIgLUkgOTksMTAiCisKKyMgVGhlIHNvY2tldCBzaXplcyB0aGF0IHdlIHdpbGwgYmUgdGVzdGluZy4gVGhpcyBzaG91bGQgYmUgYSBsaXN0IG9mCisjIGludGVnZXJzIHNlcGFyYXRlZCBieSBzcGFjZXMKKworU09DS0VUX1NJWkVTPSIzMjc2OCIKKworIyBUaGUgc2VuZCBzaXplcyB0aGF0IHdlIHdpbGwgYmUgdXNpbmcuIFVzaW5nIHNlbmQgc2l6ZXMgdGhhdCByZXN1bHQKKyMgaW4gVURQIHBhY2tldHMgd2hpY2ggYXJlIGxhcmdlciB0aGFuIGxpbmsgc2l6ZSBjYW4gYmUgYSBiYWQgdGhpbmcgdG8gZG8uCisjIGZvciBGRERJLCB5b3UgY2FuIHRhY2stb24gYSA0MDk2IGRhdGEgcG9pbnQKKworU0VORF9TSVpFUz0iNjQgMTAyNCAxNDcyIgorCisjIGlmIHRoZXJlIGFyZSB0d28gcGFybXMsIHBhcm0gb25lIGl0IHRoZSBob3N0bmFtZSBhbmQgcGFybSB0d28gd2lsbAorIyBiZSBhIENQVSBpbmRpY2F0b3IuIGFjdHVhbGx5LCBhbnl0aGluZyBhcyBhIHNlY29uZCBwYXJtIHdpbGwgY2F1c2UKKyMgdGhlIENQVSB0byBiZSBtZWFzdXJlZCwgYnV0IHdlIHdpbGwgImFkdmVydGlzZSIgaXQgc2hvdWxkIGJlICJDUFUiCisKK2lmIFsgJCMgLWVxIDIgXTsgdGhlbgorICBSRU1fSE9TVD0kMQorICBMT0NfQ1BVPSItYyIKKyAgUkVNX0NQVT0iLUMiCitmaQorCitpZiBbICQjIC1lcSAxIF07IHRoZW4KKyAgTE9DX0NQVT0iIgorICBSRU1fQ1BVPSIiCisgIFJFTV9IT1NUPSQxCitmaQorCisjIElmIHdlIGFyZSBtZWFzdXJpbmcgQ1BVIHV0aWxpemF0aW9uLCB0aGVuIHdlIGNhbiBzYXZlIGJlYXVjb3VwCisjIHRpbWUgYnkgc2F2aW5nIHRoZSByZXN1bHRzIG9mIHRoZSBDUFUgY2FsaWJyYXRpb24gYW5kIHBhc3NpbmcKKyMgdGhlbSBpbiBkdXJpbmcgdGhlIHJlYWwgdGVzdHMuIFNvLCB3ZSBleGVjdXRlIHRoZSBuZXcgQ1BVICJ0ZXN0cyIKKyMgb2YgbmV0cGVyZiBhbmQgcHV0IHRoZSB2YWx1ZXMgaW50byBzaGVsbCB2YXJzLgorY2FzZSAkTE9DX0NQVSBpbgorXC1jKSBMT0NfUkFURT1gJE5FVEhPTUUvbmV0cGVyZiAkUE9SVCAtdCBMT0NfQ1BVYDs7CisqKSBMT0NfUkFURT0iIgorZXNhYworCitjYXNlICRSRU1fQ1BVIGluCitcLUMpIFJFTV9SQVRFPWAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC10IFJFTV9DUFUgLUggJFJFTV9IT1NUYDs7CisqKSBSRU1fUkFURT0iIgorZXNhYworCisjIFRoaXMgd2lsbCB0ZWxsIG5ldHBlcmYgdGhhdCBoZWFkZXJzIGFyZSBub3QgdG8gYmUgZGlzcGxheWVkCitOT19IRFI9Ii1QIDAiCisKK2ZvciBTT0NLRVRfU0laRSBpbiAkU09DS0VUX1NJWkVTCitkbworICBmb3IgU0VORF9TSVpFIGluICRTRU5EX1NJWkVTCisgIGRvCisgICAgZWNobworICAgIGVjaG8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgZWNobyBUZXN0aW5nIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6CisgICAgZWNobyAkTkVUSE9NRS9uZXRwZXJmICRQT1JUIC1sICRURVNUX1RJTUUgLUggJFJFTV9IT1NUICRTVEFUU19TVFVGRiBcCisgICAgICAgICAgICRMT0NfQ1BVICRMT0NfUkFURSAkUkVNX0NQVSAkUkVNX1JBVEUgLXQgVURQX1NUUkVBTSAtLSBcCisgICAgICAgICAgIC1tICRTRU5EX1NJWkUgLXMgJFNPQ0tFVF9TSVpFIC1TICRTT0NLRVRfU0laRQorCisgICAgJE5FVEhPTUUvbmV0cGVyZiAkUE9SVCAtbCAkVEVTVF9USU1FIC1IICRSRU1fSE9TVCAkU1RBVFNfU1RVRkYgXAorICAgICAgJExPQ19DUFUgJExPQ19SQVRFICRSRU1fQ1BVICRSRU1fUkFURSAtdCBVRFBfU1RSRUFNIC0tIFwKKyAgICAgIC1tICRTRU5EX1NJWkUgLXMgJFNPQ0tFVF9TSVpFIC1TICRTT0NLRVRfU0laRQorCisgIGRvbmUKK2RvbmUKK2VjaG8KZGlmZiAtLWdpdCBhL2RvYy9uZXRwZXJmLmluZm8gYi9kb2MvbmV0cGVyZi5pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNTVmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvbmV0cGVyZi5pbmZvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9uZXRwZXJmLm1hbiBiL2RvYy9uZXRwZXJmLm1hbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWEzNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL25ldHBlcmYubWFuCkBAIC0wLDAgKzEsMjM3IEBACisuVEggbmV0cGVyZiAxICIiCisuU0ggTkFNRQorCituZXRwZXJmIFwtIGEgbmV0d29yayBwZXJmb3JtYW5jZSBiZW5jaG1hcmsKKworLlNIIFNZTk9QU0lTCisKKy5CIG5ldHBlcmYKK1tnbG9iYWwgb3B0aW9uc10gLS0gW3Rlc3Qgc3BlY2lmaWMgb3B0aW9uc10KKworLlNIIERFU0NSSVBUSU9OCisuQiBOZXRwZXJmCitpcyBhIGJlbmNobWFyayB0aGF0IGNhbiBiZSB1c2VkIHRvIG1lYXN1cmUgdmFyaW91cyBhc3BlY3RzIG9mCituZXR3b3JraW5nIHBlcmZvcm1hbmNlLgorQ3VycmVudGx5LCBpdHMgZm9jdXMgaXMgb24gYnVsayBkYXRhIHRyYW5zZmVyIGFuZCByZXF1ZXN0L3Jlc3BvbnNlCitwZXJmb3JtYW5jZSB1c2luZyBlaXRoZXIgVENQIG9yIFVEUCwgYW5kIHRoZSBCZXJrZWxleSBTb2NrZXRzCitpbnRlcmZhY2UuIEluIGFkZGl0aW9uLCB0ZXN0cyBmb3IgRExQSSwgYW5kIFVuaXggRG9tYWluCitTb2NrZXRzLCB0ZXN0cyBmb3IgSVB2NiBtYXkgYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC1pbi4KKworLlNTIEdMT0JBTCBPUFRJT05TCisKKy5UUAorLkIgXC00CitVc2UgQUZfSU5FVCAoYWthIElQdjQpIGFkZHJlc3NpbmcgZm9yIHRoZSBjb250cm9sIGFuZCBwb3NzaWJseSBkYXRhCitjb25uZWN0aW9ucy4gCisuVFAKKy5CIFwtNgorVXNlIEFGX0lORVQ2IChha2EgSVB2NikgYWRkcmVzc2luZyBmb3IgdGhlIGNvbnRyb2wgYW5kIHBvc3NpYmx5IGRhdGEKK2Nvbm5lY3Rpb25zLgorLlRQCisuQiBcLWEgc2l6ZXNwZWMKK0FsdGVyIHRoZSBzZW5kIGFuZCByZWNlaXZlIGJ1ZmZlciBhbGlnbm1lbnRzIG9uIHRoZSBsb2NhbCBzeXN0ZW0uCitUaGlzIGRlZmF1bHRzIHRvIDggYnl0ZXMuCisuVFAKKy5CIFwtQSBzaXplc3BlYworQXMgLWEsIGJ1dCBmb3IgdGhlIHJlbW90ZSBzeXN0ZW0uCisuVFAKKy5CIFwtQiBicmFuZHN0cgorQWRkIGJyYW5kc3RyIHRvIHRoZSBvdXRwdXQgb2YgYSB0ZXN0IHdpdGggYmFubmVycyBkaXNhYmxlZC4KKy5UUAorLkIgXC1jIFtyYXRlXQorUmVxdWVzdCBDUFUgdXRpbGl6YXRpb24gYW5kIHNlcnZpY2UgZGVtYW5kIGNhbGN1bGF0aW9ucyBmb3IgdGhlCitsb2NhbCBzeXN0ZW0uIElmIHRoZSBvcHRpb25hbCByYXRlIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQsCisuQiBuZXRwZXJmCit3aWxsIHVzZSB0aGF0IGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIHJhdGUgaXRzZWxmLgorLlRQCisuQiBcLUMgW3JhdGVdCitBcyAtYywgYnV0IGZvciB0aGUgcmVtb3RlIHN5c3RlbS4KKy5UUAorLkIgXC1kCitJbmNyZWFzZSB0aGUgcXVhbnRpdHkgb2YgZGVidWdnaW5nIG91dHB1dCBkaXNwbGF5ZWQgZHVyaW5nCithIHRlc3QgKHBvc3NpYmx5IGF0IHRoZSBleHBlbnNlIG9mIHBlcmZvcm1hbmNlKS4KKy5UUAorLkIgXC1EIFtzZWNzLHVuaXRzXSAoKikKK0Rpc3BsYXkgaW50ZXJpbSByZXN1bHRzIGF0IGxlYXN0IGV2ZXJ5IHNlY3Mgc2Vjb25kcyB1bmluZyB1bml0cyBhcyB0aGUKK2luaXRpYWwgZ3Vlc3MgZm9yIHVuaXRzIHBlciBzZWNvbmQuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgd2hlbgorbmV0cGVyZiBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtZGVtby4KKy5UUAorLkIgXC1mIEdNS2dtaworQ2hhbmdlIHRoZSB1bml0cyBvZiBtZWFzdXJlIGZvciAqX1NUUkVBTSB0ZXN0cy4gQ2FwaXRhbCBsZXR0ZXJzIGFyZQorcG93ZXJzIG9mIHR3bywgbG93ZXJjYXNlIGFyZSBwb3dlcnMgb2YgdGVuLgorLlRQCisuQiBcLUYgZmlsbF9maWxlCitQcmUtZmlsbCB0aGUgc2VuZCBidWZmZXJzIHdpdGggZGF0YSBmcm9tIHRoZSBuYW1lZCBmaWxlLiBUaGlzIGlzCitpbnRlbmRlZCB0byBwcm92aWRlIGEgbWVhbnMgZm9yIGF2b2lkaW5nIGJ1ZmZlcnMgdGhhdCBhcmUgZmlsbGVkIHdpdGgKK2RhdGEgd2hpY2ggaXMgdHJpdmlhbGx5IGVhc3kgdG8gY29tcHJlc3MuIEEgZ29vZCBjaG9pY2UgZm9yIGEgZmlsZQordGhhdCBzaG91bGQgYmUgcHJlc2VudCBvbiBhbnkgc3lzdGVtIGlzIHRoaXMgbWFucGFnZSAtIG5ldHBlcmYubWFuLgorT3RoZXIgZmlsZXMgbWF5IGJlIHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKy5UUAorLkIgXC1oCitEaXNwbGF5IGEgdXNhZ2Ugc3RyaW5nLCBhbmQgZXhpdC4KKy5UUAorLkIgXC1IIG5hbWV8aXAsZmFtaWx5ICgqKQorU2V0IHRoZSBob3N0bmFtZSAob3IgSVAgYWRkcmVzcykgYW5kIGFkZHJlc3MgZmFtaWx5IHRvIHVzZSB0bworZXN0YWJsaXNoIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gdG8gdGhlIHJlbW90ZSBzeXN0ZW0uIFBhc3NpbmcgYQorc2luZ2xlIG5hbWUgd2l0aCBubyBjb21tYSB3aWxsIG9ubHkgc2V0IHJlbW90ZV9ob3N0IGFuZCB3aWxsIGxlYXZlCitzZWxlY3Rpb24gb2YgYWRkcmVzcyBmYW1pbHkgZm9yIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gdG8gdGhlIHN0YWNrIG9yCitieSBhIC00IC1yIC02IGNvbW1hbmQgbGluZSBvcHRpb24uCisuVFAKKy5CIFwtaSBtYXgsbWluCitTZXQgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgd2hlbiB0cnlpbmcgdG8gcmVhY2gKK2NlcnRhaW4gY29uZmlkZW5jZSBsZXZlbHMuCisuVFAKKy5CIFwtagorSW5zdHJ1Y3QgbmV0cGVyZiB0byBjYWxjdWxhdGUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIG9uIHRpbWluZyB3aGVuCitydW5uaW5nIGFuIG9tbmkgdGVzdC4gIERpc3BsYXkgb2Ygc2FpZCBzdGF0aXN0aWNzIHdpbGwgZGVwZW5kIG9uIHRoZQorcHJlc2VuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHNlbGVjdG9ycyBpbiB0aGUgb3V0cHV0CitzZWxlY3Rpb24uIFRoZXNlIGFyZSBNSU5fTEFURU5DWSwgTUFYX0xBVEVOQ1ksIFA1MF9MQVRFTkNZLAorUDkwX0xBVEVOQ1ksIFA5OV9MQVRFTkNZLCBNRUFOX0xBVEVOQ1kgYW5kIFNURERFVl9MQVRFTkNZLgorLlRQCisuQiBcLUkgbHZsLFssaW50dmxdCitTcGVjaWZ5IHRoZSBjb25maWRlbmNlIGxldmVsIChlaXRoZXIgOTUgb3IgOTkgLSA5OSBpcyB0aGUgZGVmYXVsdCkgYW5kCit0aGUgd2lkdGggb2YgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgYXMgYSBwZXJjZW50YWdlIChkZWZhdWx0IDEwKQorLlRQCisuQiBcLWwgdGVzdGxlbgorU3BlY2lmeSB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXN0IChkZWZhdWx0IDEwIHNlY29uZHMpLgorQSBuZWdhdGl2ZSB2YWx1ZSBzZXRzIHRoZSBudW1iZXIgb2YgcmVxdWVzdC9yZXNwb25zZSB0cmFuc2FjdGlvbnMsCitvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIGZvciBhIHN0cmVhbSB0ZXN0LgorLlRQCisuQiBcLUwgbmFtZXxpcCxmYW0gKCopCitTZXQgdGhlIGxvY2FsIG5hbWV8SVAgYW5kL29yIGFkZHJlc3MgZmFtaWx5IGZvciB0aGUgc29ja2V0IHVzZWQgZm9yCit0aGUgY29udHJvbCBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgbmV0c2VydmVyLgorLlRQCisuQiBcLW4gbnVtY3B1cworU3BlY2lmeSB0aGUgbnVtYmVyIG9mIENQVSdzIGluIHRoZSBzeXN0ZW0gb24gdGhvc2Ugc3lzdGVtcyBmb3Igd2hpY2gKK25ldHBlcmYgaGFzIG5vIHdheSB0byBmaW5kIHRoZSBudW1iZXIgb2YgQ1BVJ3MgcHJvZ3JhbWF0aWNhbGx5LiAKKy5UUAorLkIgXC1OCitUaGlzIG9wdGlvbiB3aWxsIHRlbGwgbmV0cGVyZiB0byBub3QgZXN0YWJsaXNoIGEgY29udHJvbCBjb25uZWN0aW9uIHRvCithIHJlbW90ZSAgbmV0c2VydmVyLiAgSW5zdGVhZCBpdCB3aWxsIHRyeSB0byBlc3RhYmxpc2ggYSBkYXRhCitjb25uZWN0aW9uIGRpcmVjdGx5LCB1c2luZyBvbmx5IHRoZSBpbmZvcm1hdGlvbiBzdXBwbGllZCBieSB0aGUKK2NvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIGFuZC9vciBpbnRlcm5hbCBkZWZhdWx0cy4gIFVubGVzcyBvdGhlciBwb3J0cworYXJlIHByb3ZpZGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUsIGJ5IGRlZmF1bHQgdGhlIGRhdGEgY29ubmVjdGlvbiB3aWxsCitiZSB0byB0aGUgImRpc2NhcmQiIHBvcnQgZm9yIGEgIlNUUkVBTSIgb3IgIlNFTkRGSUxFIiB0ZXN0LCB0aGUgImVjaG8iCitwb3J0IGZvciBhbiAiUlIiIHRlc3Qgb3IgdGhlICJjaGFyZ2VuIiBwb3J0IGZvciBhICJNQUVSVFMiIHRlc3QuCisuVFAKKy5CIFwtbyBzaXplc3BlYworU2V0IGFuIG9mZnNldCBmcm9tIHRoZSBhbGlnbm1lbnQgc3BlY2lmaWVkIHdpdGggLWEuCisuVFAKKy5CIFwtTyBzaXplc3BlYworQXMgLW8sIGJ1dCBmb3IgdGhlIHJlbW90ZSBzeXN0ZW0uCisuVFAKKy5CIFwtcCBwb3J0bnVtLGxvY3BvcnQgKCopCitEaXJlY3QgdGhlIGNvbnRyb2wgY29ubmVjdGlvbiB0byBhIG5ldHNlcnZlciBsaXN0ZW5pbmcgb24gdGhlCitzcGVjaWZpZWQgcG9ydCwgcmF0aGVyIHRoYW4gdXNpbmcgYSAibmV0cGVyZiIgZW50cnkgaW4KKy9ldGMvc2VydmljZXMgb3IgdGhlIGludGVybmFsIGRlZmF1bHQgKHBvcnQgMTI4NjUpLiBJZiAiLGxvY3BvcnQiIGlzCitzcGVjaWZpZWQgdGhlIGNvbnRyb2wgY29ubmVjdGlvbiB3aWxsIGJlIGVzdGFibGlzaGVkIGZyb20gdGhhdCBsb2NhbAorcG9ydCBudW1iZXIuICBTcGVjaWZ5aW5nIGEgc2luZ2xlIHBvcnQgbnVtYmVyIHdpdGggbm8gY29tbWEgd2lsbAorc3BlY2lmeSBvbmx5IHRoZSByZW1vdGUgbmV0c2VydmVyIHBvcnQgbnVtYmVyIGFuZCB3aWxsIGxlYXZlIGxvY2FsCitwb3J0IG51bWJlciBzZWxlY3Rpb24gdG8gdGhlIHN0YWNrLiAgCisuVFAKKy5CIFwtUCAwfDEKK1Nob3cgKDEpIG9yIHN1cHByZXNzICgwKSB0aGUgdGVzdCBiYW5uZXIuCisuVFAKKy5CIFwtUworVGhpcyBvcHRpb24gd2lsbCBjYXVzZSBhbiBhdHRlbXB0IHRvIHNldCBTT19LRUVQQUxJVkUgb24gdGhlIGVuZHMgb2YKK3RoZSBkYXRhIGNvbm5lY3Rpb24gZm9yIHRlc3RzIHVzaW5nIEJTRCBTb2NrZXRzLiAgSXQgd2lsbCBiZSBtYWRlIG9uCit0aGUgbmV0cGVyZiBzaWRlIG9mIGNsYXNzaWMgdGVzdHMsIGFuZCBib3RoIG5ldHBlcmYgYW5kIG5ldHNlcnZlciBzaWRlCitvZiBhbiBvbW5pIG9yIG1pZ3JhdGVkIHRlc3QuCisuVFAKKy5CIFwtcyBzZWNvbmRzCitUaGlzIHdpbGwgY2F1c2UgbmV0cGVyZiB0byBzbGVlcCAic2Vjb25kcyIgc2Vjb25kcyBiZWZvcmUgdHJhbnNmZXJyaW5nCitkYXRhIG92ZXIgdGhlIGRhdGEgY29ubmVjdGlvbi4KKy5UUAorLkIgXC10IHRlc3RuYW1lCitTcGVjaWZ5IHRoZSB0ZXN0IHRvIHBlcmZvcm0uCitWYWxpZCB0ZXN0bmFtZXMgaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgbm9yIGFsd2F5cyBjb21waWxlZC1pbjoKKy5SUworLlJTCisubmYKKy5JIFRDUF9TVFJFQU0KKy5JIFRDUF9TRU5ERklMRQorLkkgVENQX01BRVJUUworLkkgVENQX1JSCisuSSBUQ1BfQ1JSCisuSSBVRFBfU1RSRUFNCisuSSBVRFBfUlIKKy5JIERMQ09fU1RSRUFNCisuSSBETENPX1JSCisuSSBETENMX1NUUkVBTQorLkkgRExDTF9SUgorLkkgU1RSRUFNX1NUUkVBTQorLkkgU1RSRUFNX1JSCisuSSBER19TVFJFQU0KKy5JIERHX1JSCisuSSBTQ1RQX1NUUkVBTQorLkkgU0NUUF9TVFJFQU1fTUFOWQorLkkgU0NUUF9SUgorLkkgU0NUUF9SUl9NQU5ZCisuSSBMT0NfQ1BVCisuSSBSRU1fQ1BVCisuZmkKKy5SRQorLlJFCisuVFAKKy5CIFwtVCBsY3B1LHJlbWNwdQorUmVxdWVzdCB0aGF0IG5ldHBlcmYgYmUgYm91bmQgdG8gQ1BVIGxjcHUgYW5kL29yIG5ldHNlcnZlciBiZSBib3VuZCB0bworQ1BVIHJjcHUuCisuVFAKKy5CIFwtdiB2ZXJib3NpdHkKK1NldCB0aGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgdGVzdCAob25seSB3aXRoIC1QKS4KKy5UUAorLkIgXC1WCitEaXNwbGF5IHRoZSBuZXRwZXJmIHZlcnNpb24gYW5kIGV4aXQuCisKKy5TUyBURVNUIFNQRUNJRklDIE9QVElPTlMKKworLlRQCisuQiBcLWgKK0Rpc3BsYXkgYSB1c2FnZSBzdHJpbmcgYmFzZWQgb24gdGhlIHRlc3QgbmFtZSBzZXQgd2l0aCAtdCwgYW5kIGV4aXQuCisKK1BsZWFzZSBjb25zdWx0IHRoZSBuZXRwZXJmIG1hbnVhbAorLkkgCitDYXJlIGFuZCBGZWVkaW5nIG9mIE5ldHBlcmYgMi41LlgKKyhkb2MvbmV0cGVyZi5bcGRmfGh0bWx8dHh0XSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIE9yIHlvdSBjYW4gam9pbiBhbmQKK3NlbmQgZW1haWwgdG8gbmV0cGVyZi10YWxrQG5ldHBlcmYub3JnLgorCisuU0ggTk9URQorRm9yIHRob3NlIG9wdGlvbnMgdGFraW5nIHR3byBwYXJtcywgYXQgbGVhc3Qgb25lIG11c3QgYmUgc3BlY2lmaWVkOworc3BlY2lmeWluZyBvbmUgdmFsdWUgd2l0aG91dCBhIGNvbW1hIHdpbGwgc2V0IGJvdGggcGFybXMgdG8gdGhhdAordmFsdWUsIHNwZWNpZnlpbmcgYSB2YWx1ZSB3aXRoIGEgbGVhZGluZyBjb21tYSB3aWxsIHNldCBqdXN0IHRoZQorc2Vjb25kIHBhcm0sIGEgdmFsdWUgd2l0aCBhIHRyYWlsaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIGZpcnN0LiBUbworc2V0IGVhY2ggcGFybSB0byB1bmlxdWUgdmFsdWVzLCBzcGVjaWZ5IGJvdGggYW5kIHNlcGFyYXRlIHRoZW0gd2l0aCBhCitjb21tYS4KKworKiBGb3IgdGhlc2Ugb3B0aW9ucyB0YWtpbmcgdHdvIHBhcm1zLCBzcGVjaWZ5aW5nIG9uZSB2YWx1ZSB3aXRoIG5vCitjb21tYSB3aWxsIG9ubHkgc2V0IHRoZSBmaXJzdCBwYXJtIGFuZCB3aWxsIGxlYXZlIHRoZSBzZWNvbmQgYXQgdGhlCitkZWZhdWx0IHZhbHVlLiBUbyBzZXQgdGhlIHNlY29uZCB2YWx1ZSBpdCBtdXN0IGJlIHByZWNlZGVkIHdpdGggYQorY29tbWEgb3IgYmUgYSBjb21tYS1zZXBhcmF0ZWQgcGFpci4gVGhpcyBpcyB0byByZXRhaW4gcHJldmlvdXMgbmV0cGVyZgorYmVoYXZpb3VyLgorCisKKy5TSCBCVUdTIAorVGhlcmUgYXJlIGJvdW5kIHRvIGJlIGJ1Z3MuIElmIHlvdSB0aGluayB5b3UgaGF2ZSBmb3VuZCBhIGJ1ZywgcGxlYXNlCittZW50aW9uIGl0IGluIG5ldHBlcmYtdGFsa0BuZXRwZXJmLm9yZy4gIExpc3QgbWVtYmVyc2hpcCBpcyByZXF1aXJlZAordG8gc2VuZCBlbWFpbCB0byB0aGUgbGlzdC4gIFNlZQoraHR0cDovL3d3dy5uZXRwZXJmLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbmV0cGVyZi10YWxrIC4gSWYgYWxsCitlbHNlIGZhaWxzIHNlbmQgZW1haWwgdG8gbmV0cGVyZi1mZWVkYmFja0BuZXRwZXJmLm9yZy4KKworLlNIIFNFRSBBTFNPCisuQlIgbmV0c2VydmVyICgxKQorLmJyCisuSQorQ2FyZSBhbmQgRmVlZGluZyBvZiBOZXRwZXJmIDIuNS5YCisuYnIKK2h0dHA6Ly93d3cubmV0cGVyZi5vcmcvCisKKy5TSCBBVVRIT1JTCitIUCBJbmZvcm1hdGlvbiBOZXR3b3JrcyBEaXZpc2lvbiAtIE5ldHdvcmtpbmcgUGVyZm9ybWFuY2UgVGVhbS4KKy5icgorUmljayBKb25lcwk8cmljay5qb25lczJAaHAuY29tPgorLmJyCitLYXJlbiBDaG95CUhQIElORAorLmJyCitEYXZlIFNoaWVsZAk8ZGF2ZXNAY3NjLmxpdi5hYy51az4JKG1hbiBwYWdlcykKKy5icgorT3RoZXJzIHRvbyBudW1lcm91cyB0byBtZW50aW9uIGhlcmUgLSBzZWUgdGhlIEFVVEhPUlMgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL25ldHBlcmYudGV4aSBiL2RvYy9uZXRwZXJmLnRleGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIzMmU2MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9uZXRwZXJmLnRleGkKQEAgLTAsMCArMSw0MTUwIEBACitcaW5wdXQgdGV4aW5mbyAgIEBjIC0qLXRleGluZm8tKi0KK0BjICUqKnN0YXJ0IG9mIGhlYWRlcgorQHNldGZpbGVuYW1lIG5ldHBlcmYuaW5mbworQHNldHRpdGxlIENhcmUgYW5kIEZlZWRpbmcgb2YgTmV0cGVyZiAyLjYuWAorQGMgJSoqZW5kIG9mIGhlYWRlcgorCitAY29weWluZworVGhpcyBpcyBSaWNrIEpvbmVzJyBmZWVibGUgYXR0ZW1wdCBhdCBhIFRleGluZm8tYmFzZWQgbWFudWFsIGZvciB0aGUKK25ldHBlcmYgYmVuY2htYXJrLiAKKworQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAyMDA1LTIwMTIgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKK0BxdW90YXRpb24KK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudAorcGVyIHRoZSB0ZXJtcyBvZiB0aGUgbmV0cGVyZiBzb3VyY2UgbGljZW5zZSwgYSBjb3B5IG9mIHdoaWNoIGNhbiBiZQorZm91bmQgaW4gdGhlIGZpbGUgQGZpbGV7Q09QWUlOR30gb2YgdGhlIGJhc2ljIG5ldHBlcmYgZGlzdHJpYnV0aW9uLgorQGVuZCBxdW90YXRpb24KK0BlbmQgY29weWluZworCitAdGl0bGVwYWdlCitAdGl0bGUgQ2FyZSBhbmQgRmVlZGluZyBvZiBOZXRwZXJmCitAc3VidGl0bGUgVmVyc2lvbnMgMi42LjAgYW5kIExhdGVyCitAYXV0aG9yIFJpY2sgSm9uZXMgQGVtYWlse3JpY2suam9uZXMyQEBocC5jb219CitAYyB0aGlzIGlzIGhlcmUgdG8gc3RhcnQgdGhlIGNvcHlyaWdodCBwYWdlCitAcGFnZQorQHZza2lwIDBwdCBwbHVzIDFmaWxsbAorQGluc2VydGNvcHlpbmcKK0BlbmQgdGl0bGVwYWdlCisKK0BjIGJlZ2luIHdpdGggYSB0YWJsZSBvZiBjb250ZW50cworQGNvbnRlbnRzCisKK0BpZm5vdHRleAorQG5vZGUgVG9wLCBJbnRyb2R1Y3Rpb24sIChkaXIpLCAoZGlyKQorQHRvcCBOZXRwZXJmIE1hbnVhbAorCitAaW5zZXJ0Y29weWluZworQGVuZCBpZm5vdHRleAorCitAbWVudQorKiBJbnRyb2R1Y3Rpb246OiAgICAgICAgICAgICAgICBBbiBpbnRyb2R1Y3Rpb24gdG8gbmV0cGVyZiAtIHdoYXQgaXQKK2lzIGFuZCB3aGF0IGl0IGlzIG5vdC4KKyogSW5zdGFsbGluZyBOZXRwZXJmOjogICAgICAgICAgSG93IHRvIGdvIGFib3V0IGluc3RhbGxpbmcgbmV0cGVyZi4KKyogVGhlIERlc2lnbiBvZiBOZXRwZXJmOjogICAgICAgCisqIEdsb2JhbCBDb21tYW5kLWxpbmUgT3B0aW9uczo6ICAKKyogVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEJ1bGsgRGF0YSBUcmFuc2Zlcjo6ICAKKyogVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIFJlcXVlc3QvUmVzcG9uc2UgOjogIAorKiBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQWdncmVnYXRlIFBlcmZvcm1hbmNlOjogIAorKiBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQmlkaXJlY3Rpb25hbCBUcmFuc2Zlcjo6ICAKKyogVGhlIE9tbmkgVGVzdHM6OiAgICAgICAgICAgICAgCisqIE90aGVyIE5ldHBlcmYgVGVzdHM6OiAgICAgICAgIAorKiBBZGRyZXNzIFJlc29sdXRpb246OiAgICAgICAgICAKKyogRW5oYW5jaW5nIE5ldHBlcmY6OiAgICAgICAgICAgCisqIE5ldHBlcmY0OjogICAgICAgICAgICAgICAgICAgIAorKiBDb25jZXB0IEluZGV4OjogICAgICAgICAgICAgICAKKyogT3B0aW9uIEluZGV4OjogICAgICAgICAgICAgICAgCitAZW5kIG1lbnUKKworQG5vZGUgSW50cm9kdWN0aW9uLCBJbnN0YWxsaW5nIE5ldHBlcmYsIFRvcCwgVG9wCitAY2hhcHRlciBJbnRyb2R1Y3Rpb24KKworQGNpbmRleCBJbnRyb2R1Y3Rpb24KKworTmV0cGVyZiBpcyBhIGJlbmNobWFyayB0aGF0IGNhbiBiZSB1c2UgdG8gbWVhc3VyZSB2YXJpb3VzIGFzcGVjdCBvZgorbmV0d29ya2luZyBwZXJmb3JtYW5jZS4gIFRoZSBwcmltYXJ5IGZvY2kgYXJlIGJ1bGsgKGFrYQordW5pZGlyZWN0aW9uYWwpIGRhdGEgdHJhbnNmZXIgYW5kIHJlcXVlc3QvcmVzcG9uc2UgcGVyZm9ybWFuY2UgdXNpbmcKK2VpdGhlciBUQ1Agb3IgVURQIGFuZCB0aGUgQmVya2VsZXkgU29ja2V0cyBpbnRlcmZhY2UuICBBcyBvZiB0aGlzCit3cml0aW5nLCB0aGUgdGVzdHMgYXZhaWxhYmxlIGVpdGhlciB1bmNvbmRpdGlvbmFsbHkgb3IgY29uZGl0aW9uYWxseQoraW5jbHVkZToKKworQGl0ZW1pemUgQGJ1bGxldAorQGl0ZW0KK1RDUCBhbmQgVURQIHVuaWRpcmVjdGlvbmFsIHRyYW5zZmVyIGFuZCByZXF1ZXN0L3Jlc3BvbnNlIG92ZXIgSVB2NCBhbmQKK0lQdjYgdXNpbmcgdGhlIFNvY2tldHMgaW50ZXJmYWNlLgorQGl0ZW0KK1RDUCBhbmQgVURQIHVuaWRpcmVjdGlvbmFsIHRyYW5zZmVyIGFuZCByZXF1ZXN0L3Jlc3BvbnNlIG92ZXIgSVB2NAordXNpbmcgdGhlIFhUSSBpbnRlcmZhY2UuCitAaXRlbQorTGluay1sZXZlbCB1bmlkaXJlY3Rpb25hbCB0cmFuc2ZlciBhbmQgcmVxdWVzdC9yZXNwb25zZSB1c2luZyB0aGUgRExQSQoraW50ZXJmYWNlLiAKK0BpdGVtCitVbml4IGRvbWFpbiBzb2NrZXRzCitAaXRlbQorU0NUUCB1bmlkaXJlY3Rpb25hbCB0cmFuc2ZlciBhbmQgcmVxdWVzdC9yZXNwb25zZSBvdmVyIElQdjQgYW5kIElQdjYKK3VzaW5nIHRoZSBzb2NrZXRzIGludGVyZmFjZS4KK0BlbmQgaXRlbWl6ZQorCitXaGlsZSBub3QgZXZlcnkgcmV2aXNpb24gb2YgbmV0cGVyZiB3aWxsIHdvcmsgb24gZXZlcnkgcGxhdGZvcm0KK2xpc3RlZCwgdGhlIGludGVudGlvbiBpcyB0aGF0IGF0IGxlYXN0IHNvbWUgdmVyc2lvbiBvZiBuZXRwZXJmIHdpbGwKK3dvcmsgb24gdGhlIGZvbGxvd2luZyBwbGF0Zm9ybXM6CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtCitVbml4IC0gYXQgbGVhc3QgYWxsIHRoZSBtYWpvciB2YXJpYW50cy4KK0BpdGVtCitMaW51eAorQGl0ZW0KK1dpbmRvd3MKK0BpdGVtCitPdGhlcnMKK0BlbmQgaXRlbWl6ZQorCitOZXRwZXJmIGlzIG1haW50YWluZWQgYW5kIGluZm9ybWFsbHkgc3VwcG9ydGVkIHByaW1hcmlseSBieSBSaWNrCitKb25lcywgd2hvIGNhbiBwZXJoYXBzIGJlIGJlc3QgZGVzY3JpYmVkIGFzIE5ldHBlcmYgQ29udHJpYnV0aW5nCitFZGl0b3IuICBOb24tdHJpdmlhbCBhbmQgdmVyeSBhcHByZWNpYXRlZCBhc3Npc3RhbmNlIGNvbWVzIGZyb20gb3RoZXJzCitpbiB0aGUgbmV0d29yayBwZXJmb3JtYW5jZSBjb21tdW5pdHksIHdobyBhcmUgdG9vIG51bWVyb3VzIHRvIG1lbnRpb24KK2hlcmUuIFdoaWxlIGl0IGlzIG9mdGVuIHVzZWQgYnkgdGhlbSwgbmV0cGVyZiBpcyBOT1Qgc3VwcG9ydGVkIHZpYSBhbnkKK29mIHRoZSBmb3JtYWwgSGV3bGV0dC1QYWNrYXJkIHN1cHBvcnQgY2hhbm5lbHMuICBZb3Ugc2hvdWxkIGZlZWwgZnJlZQordG8gbWFrZSBlbmhhbmNlbWVudHMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gbmV0cGVyZiB0byBzdWl0IHlvdXIKK25lZmFyaW91cyBwb3Jwb2lzZXMsIHNvIGxvbmcgYXMgeW91IHN0YXkgd2l0aGluIHRoZSBndWlkZWxpbmVzIG9mIHRoZQorbmV0cGVyZiBjb3B5cmlnaHQuICBJZiB5b3UgZmVlbCBzbyBpbmNsaW5lZCwgeW91IGNhbiBzZW5kIHlvdXIgY2hhbmdlcwordG8KK0BlbWFpbHtuZXRwZXJmLWZlZWRiYWNrQEBuZXRwZXJmLm9yZyxuZXRwZXJmLWZlZWRiYWNrfSBmb3IgcG9zc2libGUKK2luY2x1c2lvbiBpbnRvIHN1YnNlcXVlbnQgdmVyc2lvbnMgb2YgbmV0cGVyZi4KKworSXQgaXMgdGhlIENvbnRyaWJ1dGluZyBFZGl0b3IncyBiZWxpZWYgdGhhdCB0aGUgbmV0cGVyZiBsaWNlbnNlIHdhbGtzCitsaWtlIG9wZW4gc291cmNlIGFuZCB0YWxrcyBsaWtlIG9wZW4gc291cmNlLiBIb3dldmVyLCB0aGUgbGljZW5zZSB3YXMKK25ldmVyIHN1Ym1pdHRlZCBmb3IgYGBjZXJ0aWZpY2F0aW9uJycgYXMgYW4gb3BlbiBzb3VyY2UgbGljZW5zZS4gIElmCit5b3Ugd291bGQgcHJlZmVyIHRvIG1ha2UgY29udHJpYnV0aW9ucyB0byBhIG5ldHdvcmtpbmcgYmVuY2htYXJrIHVzaW5nCithIGNlcnRpZmllZCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBwbGVhc2UgY29uc2lkZXIgbmV0cGVyZjQsIHdoaWNoIGlzCitkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTHYyLgorCitUaGUgQGVtYWlse25ldHBlcmYtdGFsa0BAbmV0cGVyZi5vcmcsbmV0cGVyZi10YWxrfSBtYWlsaW5nIGxpc3QgaXMKK2F2YWlsYWJsZSB0byBkaXNjdXNzIHRoZSBjYXJlIGFuZCBmZWVkaW5nIG9mIG5ldHBlcmYgd2l0aCBvdGhlcnMgd2hvCitzaGFyZSB5b3VyIGludGVyZXN0IGluIG5ldHdvcmsgcGVyZm9ybWFuY2UgYmVuY2htYXJraW5nLiBUaGUKK25ldHBlcmYtdGFsayBtYWlsaW5nIGxpc3QgaXMgYSBjbG9zZWQgbGlzdCAodG8gZGVhbCB3aXRoIHNwYW0pIGFuZCB5b3UKK211c3QgZmlyc3Qgc3Vic2NyaWJlIGJ5IHNlbmRpbmcgZW1haWwgdG8KK0BlbWFpbHtuZXRwZXJmLXRhbGstcmVxdWVzdEBAbmV0cGVyZi5vcmcsbmV0cGVyZi10YWxrLXJlcXVlc3R9LgorCisKK0BtZW51CisqIENvbnZlbnRpb25zOjogICAgICAgICAgICAgICAgIAorQGVuZCBtZW51CisKK0Bub2RlIENvbnZlbnRpb25zLCAgLCBJbnRyb2R1Y3Rpb24sIEludHJvZHVjdGlvbgorQHNlY3Rpb24gQ29udmVudGlvbnMKKworQSBAZGZue3NpemVzcGVjfSBpcyBhIG9uZSBvciB0d28gaXRlbSwgY29tbWEtc2VwYXJhdGVkIGxpc3QgdXNlZCBhcyBhbgorYXJndW1lbnQgdG8gYSBjb21tYW5kLWxpbmUgb3B0aW9uIHRoYXQgY2FuIHNldCBvbmUgb3IgdHdvLCByZWxhdGVkCituZXRwZXJmIHBhcmFtZXRlcnMuICBJZiB5b3Ugd2lzaCB0byBzZXQgYm90aCBwYXJhbWV0ZXJzIHRvIHNlcGFyYXRlCit2YWx1ZXMsIGl0ZW1zIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgYSBjb21tYToKKworQGV4YW1wbGUKK3BhcmFtZXRlcjEscGFyYW1ldGVyMgorQGVuZCBleGFtcGxlCisKK0lmIHlvdSB3aXNoIHRvIHNldCB0aGUgZmlyc3QgcGFyYW1ldGVyIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIHZhbHVlIG9mCit0aGUgc2Vjb25kIGZyb20gaXRzIGRlZmF1bHQsIHlvdSBzaG91bGQgZm9sbG93IHRoZSBmaXJzdCBpdGVtIHdpdGggYQorY29tbWE6CisKK0BleGFtcGxlCitwYXJhbWV0ZXIxLAorQGVuZCBleGFtcGxlCisKKworTGlrZXdpc2UsIHByZWNlZGUgdGhlIGl0ZW0gd2l0aCBhIGNvbW1hIGlmIHlvdSB3aXNoIHRvIHNldCBvbmx5IHRoZQorc2Vjb25kIHBhcmFtZXRlcjoKKworQGV4YW1wbGUKKyxwYXJhbWV0ZXIyCitAZW5kIGV4YW1wbGUKKworQW4gaXRlbSB3aXRoIG5vIGNvbW1hczoKKworQGV4YW1wbGUKK3BhcmFtZXRlcjFhbmQyCitAZW5kIGV4YW1wbGUKKword2lsbCBzZXQgYm90aCBwYXJhbWV0ZXJzIHRvIHRoZSBzYW1lIHZhbHVlLiAgVGhpcyBsYXN0IG1vZGUgaXMgb25lIG9mCit0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQuCisKK1RoZXJlIGlzIGFub3RoZXIgdmFyaWFudCBvZiB0aGUgY29tbWEtc2VwYXJhdGVkLCB0d28taXRlbSBsaXN0IGNhbGxlZAorYSBAZGZue29wdGlvbnNwZWN9IHdoaWNoIGlzIGxpa2UgYSBzaXplc3BlYyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBhCitzaW5nbGUgaXRlbSB3aXRoIG5vIGNvbW1hOgorCitAZXhhbXBsZQorcGFyYW1ldGVyMQorQGVuZCBleGFtcGxlCisKK3dpbGwgb25seSBzZXQgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIgYW5kIHdpbGwgbGVhdmUgdGhlCitzZWNvbmQgcGFyYW1ldGVyIGF0IGl0cyBkZWZhdWx0IHZhbHVlLgorCitOZXRwZXJmIGhhcyB0d28gdHlwZXMgb2YgY29tbWFuZC1saW5lIG9wdGlvbnMuICBUaGUgZmlyc3QgYXJlIGdsb2JhbAorY29tbWFuZCBsaW5lIG9wdGlvbnMuICBUaGV5IGFyZSBlc3NlbnRpYWxseSBhbnkgb3B0aW9uIG5vdCB0aWVkIHRvIGEKK3BhcnRpY3VsYXIgdGVzdCBvciBncm91cCBvZiB0ZXN0cy4gIEFuIGV4YW1wbGUgb2YgYSBnbG9iYWwKK2NvbW1hbmQtbGluZSBvcHRpb24gaXMgdGhlIG9uZSB3aGljaCBzZXRzIHRoZSB0ZXN0IHR5cGUgLSBAb3B0aW9uey10fS4KKworVGhlIHNlY29uZCB0eXBlIG9mIG9wdGlvbnMgYXJlIHRlc3Qtc3BlY2lmaWMgb3B0aW9ucy4gIFRoZXNlIGFyZQorb3B0aW9ucyB3aGljaCBhcmUgb25seSBhcHBsaWNhYmxlIHRvIGEgcGFydGljdWxhciB0ZXN0IG9yIHNldCBvZgordGVzdHMuICBBbiBleGFtcGxlIG9mIGEgdGVzdC1zcGVjaWZpYyBvcHRpb24gd291bGQgYmUgdGhlIHNlbmQgc29ja2V0CitidWZmZXIgc2l6ZSBmb3IgYSBUQ1BfU1RSRUFNIHRlc3QuCisKK0dsb2JhbCBjb21tYW5kLWxpbmUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGZpcnN0IHdpdGggdGVzdC1zcGVjaWZpYworb3B0aW9ucyBmb2xsb3dpbmcgYWZ0ZXIgYSBAY29kZXstLX0gYXMgaW46CisKK0BleGFtcGxlCituZXRwZXJmIDxnbG9iYWw+IC0tIDx0ZXN0LXNwZWNpZmljPgorQGVuZCBleGFtcGxlCisKKworQG5vZGUgSW5zdGFsbGluZyBOZXRwZXJmLCBUaGUgRGVzaWduIG9mIE5ldHBlcmYsIEludHJvZHVjdGlvbiwgVG9wCitAY2hhcHRlciBJbnN0YWxsaW5nIE5ldHBlcmYKKworQGNpbmRleCBJbnN0YWxsYXRpb24KKworTmV0cGVyZidzIHByaW1hcnkgZm9ybSBvZiBkaXN0cmlidXRpb24gaXMgc291cmNlIGNvZGUuICBUaGlzIGFsbG93cworaW5zdGFsbGF0aW9uIG9uIHN5c3RlbXMgb3RoZXIgdGhhbiB0aG9zZSB0byB3aGljaCB0aGUgYXV0aG9ycyBoYXZlCityZWFkeSBhY2Nlc3MgYW5kIHRodXMgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGJpbmFyaWVzLiAgVGhlcmUgYXJlIHR3bworc3R5bGVzIG9mIG5ldHBlcmYgaW5zdGFsbGF0aW9uLiAgVGhlIGZpcnN0IHJ1bnMgdGhlIG5ldHBlcmYgc2VydmVyCitwcm9ncmFtIC0gbmV0c2VydmVyIC0gYXMgYSBjaGlsZCBvZiBpbmV0ZC4gIFRoaXMgcmVxdWlyZXMgdGhlCitpbnN0YWxsZXIgdG8gaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gZWRpdCB0aGUgZmlsZXMKK0BmaWxley9ldGMvc2VydmljZXN9IGFuZCBAZmlsZXsvZXRjL2luZXRkLmNvbmZ9IG9yIHRoZWlyCitwbGF0Zm9ybS1zcGVjaWZpYyBlcXVpdmFsZW50cy4KKworVGhlIHNlY29uZCBzdHlsZSBpcyB0byBydW4gbmV0c2VydmVyIGFzIGEgc3RhbmRhbG9uZSBkYWVtb24uICBUaGlzCitzZWNvbmQgbWV0aG9kIGRvZXMgbm90IHJlcXVpcmUgZWRpdCBwcml2aWxlZ2VzIG9uIEBmaWxley9ldGMvc2VydmljZXN9CithbmQgQGZpbGV7L2V0Yy9pbmV0ZC5jb25mfSBidXQgZG9lcyBtZWFuIHlvdSBtdXN0IHJlbWVtYmVyIHRvIHJ1biB0aGUKK25ldHNlcnZlciBwcm9ncmFtIGV4cGxpY2l0bHkgYWZ0ZXIgZXZlcnkgc3lzdGVtIHJlYm9vdC4KKworVGhpcyBtYW51YWwgYXNzdW1lcyB0aGF0IHRob3NlIHdpc2hpbmcgdG8gbWVhc3VyZSBuZXR3b3JraW5nCitwZXJmb3JtYW5jZSBhbHJlYWR5IGtub3cgaG93IHRvIHVzZSBhbm9ueW1vdXMgRlRQIGFuZC9vciBhIHdlYgorYnJvd3Nlci4gSXQgaXMgYWxzbyBleHBlY3RlZCB0aGF0IHlvdSBoYXZlIGF0IGxlYXN0IGEgcGFzc2luZworZmFtaWxpYXJpdHkgd2l0aCB0aGUgbmV0d29ya2luZyBwcm90b2NvbHMgYW5kIGludGVyZmFjZXMgaW52b2x2ZWQuIEluCithbGwgaG9uZXN0eSwgaWYgeW91IGRvIG5vdCBoYXZlIHN1Y2ggZmFtaWxpYXJpdHksIGxpa2VseSBhcyBub3QgeW91CitoYXZlIHNvbWUgZXhwZXJpZW5jZSB0byBnYWluIGJlZm9yZSBhdHRlbXB0aW5nIG5ldHdvcmsgcGVyZm9ybWFuY2UKK21lYXN1cmVtZW50cy4gIFRoZSBleGNlbGxlbnQgdGV4dHMgYnkgYXV0aG9ycyBzdWNoIGFzIFN0ZXZlbnMsIEZlbm5lcgorYW5kIFJ1ZG9mZiBhbmQvb3IgU3RhbGxpbmdzIHdvdWxkIGJlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzLiBUaGVyZSBhcmUKK2xpa2VseSBvdGhlciBleGNlbGxlbnQgc291cmNlcyBvdXQgdGhlcmUgYXMgd2VsbC4KKworQG1lbnUKKyogR2V0dGluZyBOZXRwZXJmIEJpdHM6OiAgICAgICAgCisqIEluc3RhbGxpbmcgTmV0cGVyZiBCaXRzOjogICAgIAorKiBWZXJpZnlpbmcgSW5zdGFsbGF0aW9uOjogICAgICAKK0BlbmQgbWVudQorCitAbm9kZSBHZXR0aW5nIE5ldHBlcmYgQml0cywgSW5zdGFsbGluZyBOZXRwZXJmIEJpdHMsIEluc3RhbGxpbmcgTmV0cGVyZiwgSW5zdGFsbGluZyBOZXRwZXJmCitAc2VjdGlvbiBHZXR0aW5nIE5ldHBlcmYgQml0cworCitHemlwcGVkIHRhciBmaWxlcyBvZiBuZXRwZXJmIHNvdXJjZXMgY2FuIGJlIHJldHJpZXZlZCB2aWEgCitAdXJlZntmdHA6Ly9mdHAubmV0cGVyZi5vcmcvbmV0cGVyZixhbm9ueW1vdXMgRlRQfQorZm9yIGBgcmVsZWFzZWQnJyB2ZXJzaW9ucyBvZiB0aGUgYml0cy4gIFByZS1yZWxlYXNlIHZlcnNpb25zIG9mIHRoZQorYml0cyBjYW4gYmUgcmV0cmlldmVkIHZpYSBhbm9ueW1vdXMgRlRQIGZyb20gdGhlCitAdXJlZntmdHA6Ly9mdHAubmV0cGVyZi5vcmcvbmV0cGVyZi9leHBlcmltZW50YWwsZXhwZXJpbWVudGFsfSBzdWJkaXJlY3RvcnkuCisKK0ZvciBjb252ZW5pZW5jZSBhbmQgZWFzZSBvZiByZW1lbWJlcmluZywgYSBsaW5rIHRvIHRoZSBkb3dubG9hZCBzaXRlCitpcyBwcm92aWRlZCB2aWEgdGhlIAorQHVyZWZ7aHR0cDovL3d3dy5uZXRwZXJmLm9yZy8sIE5ldHBlcmZQYWdlfQorCitUaGUgYml0cyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZGlzY3JldGUgcmVsZWFzZSBvZiBuZXRwZXJmIGFyZQorQHVyZWZ7aHR0cDovL3d3dy5uZXRwZXJmLm9yZy9zdm4vbmV0cGVyZjIvdGFncyx0YWdnZWR9IGZvciByZXRyaWV2YWwKK3ZpYSBzdWJ2ZXJzaW9uLiAgRm9yIGV4YW1wbGUsIHRoZXJlIGlzIGEgdGFnIGZvciB0aGUgZmlyc3QgdmVyc2lvbgorY29ycmVzcG9uZGluZyB0byB0aGlzIHZlcnNpb24gb2YgdGhlIG1hbnVhbCAtIAorQHVyZWZ7aHR0cDovL3d3dy5uZXRwZXJmLm9yZy9zdm4vbmV0cGVyZjIvdGFncy9uZXRwZXJmLTIuNi4wLG5ldHBlcmYKKzIuNi4wfS4gIFRob3NlIHdpc2hpbmcgdG8gYmUgb24gdGhlIGJsZWVkaW5nIGVkZ2Ugb2YgbmV0cGVyZgorZGV2ZWxvcG1lbnQgY2FuIHVzZSBzdWJ2ZXJzaW9uIHRvIGdyYWIgdGhlCitAdXJlZntodHRwOi8vd3d3Lm5ldHBlcmYub3JnL3N2bi9uZXRwZXJmMi90cnVuayx0b3Agb2YgdHJ1bmt9LiAgV2hlbgorZml4aW5nIGJ1Z3Mgb3IgbWFraW5nIGVuaGFuY2VtZW50cywgcGF0Y2hlcyBhZ2FpbnN0IHRoZSB0b3Atb2YtdHJ1bmsKK2FyZSBwcmVmZXJyZWQuCisKK1RoZXJlIGFyZSBsaWtlbHkgb3RoZXIgcGxhY2VzIGFyb3VuZCB0aGUgSW50ZXJuZXQgZnJvbSB3aGljaCBvbmUgY2FuCitkb3dubG9hZCBuZXRwZXJmIGJpdHMuICBUaGVzZSBtYXkgYmUgc2ltcGxlIG1pcnJvcnMgb2YgdGhlIG1haW4KK25ldHBlcmYgc2l0ZSwgb3IgdGhleSBtYXkgYmUgbG9jYWwgdmFyaWFudHMgb24gbmV0cGVyZi4gIEFzIHdpdGgKK2FueXRoaW5nIG9uZSBkb3dubG9hZHMgZnJvbSB0aGUgSW50ZXJuZXQsIHRha2UgY2FyZSB0byBtYWtlIHN1cmUgaXQgaXMKK3doYXQgeW91IHJlYWxseSB3YW50ZWQgYW5kIGlzbid0IHNvbWUgbWFsaWNpb3VzIFRyb2phbiBvciB3aGF0bm90LgorQ2F2ZWF0IGRvd25sb2FkZXIuCisKK0FzIGEgZ2VuZXJhbCBydWxlLCBiaW5hcmllcyBvZiBuZXRwZXJmIGFuZCBuZXRzZXJ2ZXIgYXJlIG5vdAorZGlzdHJpYnV0ZWQgZnJvbSBmdHAubmV0cGVyZi5vcmcuICBGcm9tIHRpbWUgdG8gdGltZSBhIGtpbmQgc291bCBvcgorc291bHMgaGFzIHBhY2thZ2VkIG5ldHBlcmYgYXMgYSBEZWJpYW4gcGFja2FnZSBhdmFpbGFibGUgdmlhIHRoZQorYXB0LWdldCBtZWNoYW5pc20gb3IgYXMgYW4gUlBNLiAgSSB3b3VsZCBiZSBtb3N0IGludGVyZXN0ZWQgaW4KK2xlYXJuaW5nIGhvdyB0byBlbmhhbmNlIHRoZSBtYWtlZmlsZXMgdG8gbWFrZSB0aGF0IGVhc2llciBmb3IgcGVvcGxlLgorCitAbm9kZSBJbnN0YWxsaW5nIE5ldHBlcmYgQml0cywgVmVyaWZ5aW5nIEluc3RhbGxhdGlvbiwgR2V0dGluZyBOZXRwZXJmIEJpdHMsIEluc3RhbGxpbmcgTmV0cGVyZgorQHNlY3Rpb24gSW5zdGFsbGluZyBOZXRwZXJmCisKK09uY2UgeW91IGhhdmUgZG93bmxvYWRlZCB0aGUgdGFyIGZpbGUgb2YgbmV0cGVyZiBzb3VyY2VzIG9udG8geW91cgorc3lzdGVtKHMpLCBpdCBpcyBuZWNlc3NhcnkgdG8gdW5wYWNrIHRoZSB0YXIgZmlsZSwgY2QgdG8gdGhlIG5ldHBlcmYKK2RpcmVjdG9yeSwgcnVuIGNvbmZpZ3VyZSBhbmQgdGhlbiBtYWtlLiAgTW9zdCBvZiB0aGUgdGltZSBpdCBzaG91bGQgYmUKK3N1ZmZpY2llbnQgdG8ganVzdDoKKworQGV4YW1wbGUKK2d6Y2F0IG5ldHBlcmYtPHZlcnNpb24+LnRhci5neiB8IHRhciB4ZiAtCitjZCBuZXRwZXJmLTx2ZXJzaW9uPgorLi9jb25maWd1cmUKK21ha2UKK21ha2UgaW5zdGFsbAorQGVuZCBleGFtcGxlCisKK01vc3Qgb2YgdGhlIGBgdXN1YWwnJyBjb25maWd1cmUgc2NyaXB0IG9wdGlvbnMgc2hvdWxkIGJlIHByZXNlbnQKK2RlYWxpbmcgd2l0aCB3aGVyZSB0byBpbnN0YWxsIGJpbmFyaWVzIGFuZCB3aGF0bm90LiAgCitAZXhhbXBsZQorLi9jb25maWd1cmUgLS1oZWxwCitAZW5kIGV4YW1wbGUKK3Nob3VsZCBsaXN0IGFsbCBvZiB0aG9zZSBhbmQgbW9yZS4gIFlvdSBtYXkgZmluZCB0aGUgQGNvZGV7LS1wcmVmaXh9CitvcHRpb24gaGVscGZ1bCBpbiBkZWNpZGluZyB3aGVyZSB0aGUgYmluYXJpZXMgYW5kIHN1Y2ggd2lsbCBiZSBwdXQKK2R1cmluZyB0aGUgQGNvZGV7bWFrZSBpbnN0YWxsfS4KKworQHZpbmRleCAtLWVuYWJsZS1jcHV1dGlsLCBDb25maWd1cmUKK0lmIHRoZSBuZXRwZXJmIGNvbmZpZ3VyZSBzY3JpcHQgZG9lcyBub3Qga25vdyBob3cgdG8gYXV0b21hZ2ljYWxseQorZGV0ZWN0IHdoaWNoIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc20gdG8gdXNlIG9uIHlvdXIgcGxhdGZvcm0geW91IG1heQord2FudCB0byBhZGQgYSBAY29kZXstLWVuYWJsZS1jcHV1dGlsPW11bWJsZX0gb3B0aW9uIHRvIHRoZSBjb25maWd1cmUKK2NvbW1hbmQuICAgSWYgeW91IGhhdmUga25vd2xlZGdlIGFuZC9vciBleHBlcmllbmNlIHRvIGNvbnRyaWJ1dGUgdG8KK3RoYXQgYXJlYSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgQGVtYWlse25ldHBlcmYtZmVlZGJhY2tAQG5ldHBlcmYub3JnfS4KKworQHZpbmRleCAtLWVuYWJsZS14dGksIENvbmZpZ3VyZQorQHZpbmRleCAtLWVuYWJsZS11bml4ZG9tYWluLCBDb25maWd1cmUKK0B2aW5kZXggLS1lbmFibGUtZGxwaSwgQ29uZmlndXJlCitAdmluZGV4IC0tZW5hYmxlLXNjdHAsIENvbmZpZ3VyZQorU2ltaWxhcmx5LCBpZiB5b3Ugd2FudCB0ZXN0cyB1c2luZyB0aGUgWFRJIGludGVyZmFjZSwgVW5peCBEb21haW4KK1NvY2tldHMsIERMUEkgb3IgU0NUUCBpdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhZGQgb25lIG9yIG1vcmUKK0Bjb2Rley0tZW5hYmxlLVt4dGl8dW5peGRvbWFpbnxkbHBpfHNjdHBdPXllc30gb3B0aW9ucyB0byB0aGUgY29uZmlndXJlCitjb21tYW5kLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGUgY29uZmlndXJlIHNjcmlwdCB3aWxsIG5vdCBpbmNsdWRlCit0aG9zZSB0ZXN0cyBhdXRvbWFnaWNhbGx5LgorCitAdmluZGV4IC0tZW5hYmxlLW9tbmksIENvbmZpZ3VyZQorU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDIuNS4wLCBuZXRwZXJmIGJlZ2FuIG1pZ3JhdGluZyBtb3N0IG9mIHRoZQorYGBjbGFzc2ljJycgbmV0cGVyZiB0ZXN0cyBmb3VuZCBpbiBAZmlsZXtzcmMvbmV0dGVzdF9ic2QuY30gdG8gdGhlCitzby1jYWxsZWQgYGBvbW5pJycgdGVzdHMgKGFrYSBgYHR3byByb3V0aW5lcyB0byBydW4gdGhlbSBhbGwnJykgZm91bmQKK2luIEBmaWxle3NyYy9uZXR0ZXN0X29tbmkuY30uICBUaGlzIG1pZ3JhdGlvbiBlbmFibGVzIGEgbnVtYmVyIG9mIG5ldworZmVhdHVyZXMgc3VjaCBhcyBncmVhdGVyIGNvbnRyb2wgb3ZlciB3aGF0IG91dHB1dCBpcyBpbmNsdWRlZCwgYW5kIG5ldwordGhpbmdzIHRvIG91dHB1dC4gIFRoZSBgYG9tbmknJyB0ZXN0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiAyLjUuMAorYW5kIGEgbnVtYmVyIG9mIHRoZSBjbGFzc2ljIHRlc3RzIGFyZSBtaWdyYXRlZCAtIHlvdSBjYW4gdGVsbCBpZiBhCit0ZXN0IGhhcyBiZWVuIG1pZ3JhdGVkCitmcm9tIHRoZSBwcmVzZW5jZSBvZiBAY29kZXtNSUdSQVRFRH0gaW4gdGhlIHRlc3QgYmFubmVyLiAgSWYgeW91CitlbmNvdW50ZXIgcHJvYmxlbXMgd2l0aCBlaXRoZXIgdGhlIG9tbmkgb3IgbWlncmF0ZWQgdGVzdHMsIHBsZWFzZQorZmlyc3QgYXR0ZW1wdCB0byBvYnRhaW4gcmVzb2x1dGlvbiB2aWEKK0BlbWFpbHtuZXRwZXJmLXRhbGtAQG5ldHBlcmYub3JnfSBvcgorQGVtYWlse25ldHBlcmYtZmVlZGJhY2tAQG5ldHBlcmYub3JnfS4gIElmIHRoYXQgaXMgdW5zdWNjZXNzZnVsLCB5b3UKK2NhbiBhZGQgYSBAY29kZXstLWVuYWJsZS1vbW5pPW5vfSB0byB0aGUgY29uZmlndXJlIGNvbW1hbmQgYW5kIHRoZQorb21uaSB0ZXN0cyB3aWxsIG5vdCBiZSBjb21waWxlZC1pbiBhbmQgdGhlIGNsYXNzaWMgdGVzdHMgd2lsbCBub3QgYmUKK21pZ3JhdGVkLgorCitTdGFydGluZyB3aXRoIHZlcnNpb24gMi41LjAsIG5ldHBlcmYgaW5jbHVkZXMgdGhlIGBgYnVyc3QgbW9kZScnCitmdW5jdGlvbmFsaXR5IGluIGEgZGVmYXVsdCBjb21waWxhdGlvbiBvZiB0aGUgYml0cy4gIElmIHlvdSBlbmNvdW50ZXIKK3Byb2JsZW1zIHdpdGggdGhpcywgcGxlYXNlIGZpcnN0IGF0dGVtcHQgdG8gb2J0YWluIGhlbHAgdmlhCitAZW1haWx7bmV0cGVyZi10YWxrQEBuZXRwZXJmLm9yZ30gb3IKK0BlbWFpbHtuZXRwZXJmLWZlZWRiYWNrQEBuZXRwZXJmLm9yZ30uICBJZiB0aGF0IGlzIHVuc3VjY2Vzc2Z1bCwgeW91CitjYW4gYWRkIGEgQGNvZGV7LS1lbmFibGUtYnVyc3Q9bm99IHRvIHRoZSBjb25maWd1cmUgY29tbWFuZCBhbmQgdGhlCitidXJzdCBtb2RlIGZ1bmN0aW9uYWxpdHkgd2lsbCBub3QgYmUgY29tcGlsZWQtaW4uCisKK09uIHNvbWUgcGxhdGZvcm1zLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZWNlZGUgdGhlIGNvbmZpZ3VyZQorY29tbWFuZCB3aXRoIGEgQ0ZMQUdTIGFuZC9vciBMSUJTIHZhcmlhYmxlIGFzIHRoZSBuZXRwZXJmIGNvbmZpZ3VyZQorc2NyaXB0IGlzIG5vdCB5ZXQgc21hcnQgZW5vdWdoIHRvIHNldCB0aGVtIGl0c2VsZi4gIFdoZW5ldmVyIHBvc3NpYmxlLAordGhlc2UgcmVxdWlyZW1lbnRzIHdpbGwgYmUgZm91bmQgaW4gQGZpbGV7UkVBRE1FLkB2YXJ7cGxhdGZvcm19fSBmaWxlcy4KK0V4cGVydGlzZSBhbmQgYXNzaXN0YW5jZSBpbiBtYWtpbmcgdGhhdCBtb3JlIGF1dG9tYWdpYyBpbiB0aGUKK2NvbmZpZ3VyZSBzY3JpcHQgd291bGQgYmUgbW9zdCB3ZWxjb21lLgorCitAY2luZGV4IExpbWl0aW5nIEJhbmR3aWR0aAorQGNpbmRleCBCYW5kd2lkdGggTGltaXRhdGlvbgorQHZpbmRleCAtLWVuYWJsZS1pbnRlcnZhbHMsIENvbmZpZ3VyZQorQHZpbmRleCAtLWVuYWJsZS1oaXN0b2dyYW0sIENvbmZpZ3VyZQorT3RoZXIgb3B0aW9uYWwgY29uZmlndXJlLXRpbWUgc2V0dGluZ3MgaW5jbHVkZQorQGNvZGV7LS1lbmFibGUtaW50ZXJ2YWxzPXllc30gdG8gZ2l2ZSBuZXRwZXJmIHRoZSBhYmlsaXR5IHRvIGBgcGFjZScnCitpdHMgX1NUUkVBTSB0ZXN0cyBhbmQgQGNvZGV7LS1lbmFibGUtaGlzdG9ncmFtPXllc30gdG8gaGF2ZSBuZXRwZXJmCitrZWVwIGEgaGlzdG9ncmFtIG9mIGludGVyZXN0aW5nIHRpbWVzLiAgRWFjaCBvZiB0aGVzZSB3aWxsIGhhdmUgc29tZQorZWZmZWN0IG9uIHRoZSBtZWFzdXJlZCByZXN1bHQuICBJZiB5b3VyIHN5c3RlbSBzdXBwb3J0cworQGNvZGV7Z2V0aHJ0aW1lKCl9IHRoZSBlZmZlY3Qgb2YgdGhlIGhpc3RvZ3JhbSBtZWFzdXJlbWVudCBzaG91bGQgYmUKK21pbmltaXplZCBidXQgcHJvYmFibHkgc3RpbGwgbWVhc3VyYWJsZS4gIEZvciBleGFtcGxlLCB0aGUgaGlzdG9ncmFtCitvZiBhIG5ldHBlcmYgVENQX1JSIHRlc3Qgd2lsbCBiZSBvZiB0aGUgaW5kaXZpZHVhbCB0cmFuc2FjdGlvbiB0aW1lczoKK0BleGFtcGxlCituZXRwZXJmIC10IFRDUF9SUiAtSCBsYWcgLXYgMgorVENQIFJFUVVFU1QvUkVTUE9OU0UgVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIGxhZy5ocGwuaHAuY29tICgxNS40Ljg5LjIxNCkgcG9ydCAwIEFGX0lORVQgOiBoaXN0b2dyYW0KK0xvY2FsIC9SZW1vdGUKK1NvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBUcmFucy4KK1NlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBSYXRlICAgICAgICAgCitieXRlcyAgQnl0ZXMgIGJ5dGVzICAgIGJ5dGVzICAgc2Vjcy4gICAgcGVyIHNlYyAgIAorCisxNjM4NCAgODczODAgIDEgICAgICAgIDEgICAgICAgMTAuMDAgICAgMzUzOC44MiAgIAorMzI3NjggIDMyNzY4IAorQWxpZ25tZW50ICAgICAgT2Zmc2V0CitMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlCitTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdgorICAgIDggICAgICAwICAgICAgIDAgICAgICAwCitIaXN0b2dyYW0gb2YgcmVxdWVzdC9yZXNwb25zZSB0aW1lcworVU5JVF9VU0VDICAgICA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDAKK1RFTl9VU0VDICAgICAgOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwCitIVU5EUkVEX1VTRUMgIDogICAgMDogMzQ0ODA6ICAxMTE6ICAgMTM6ICAgMTI6ICAgIDY6ICAgIDk6ICAgIDM6ICAgIDQ6ICAgIDcKK1VOSVRfTVNFQyAgICAgOiAgICAwOiAgIDYwOiAgIDUwOiAgIDUxOiAgIDQ0OiAgIDQ0OiAgIDcyOiAgMTE5OiAgMTAwOiAgMTAxCitURU5fTVNFQyAgICAgIDogICAgMDogIDEwNTogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMAorSFVORFJFRF9NU0VDICA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDA6ICAgIDAKK1VOSVRfU0VDICAgICAgOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwOiAgICAwCitURU5fU0VDICAgICAgIDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMDogICAgMAorPjEwMF9TRUNTOiAwCitISVNUX1RPVEFMOiAgICAgIDM1MzkxCitAZW5kIGV4YW1wbGUKKworVGhlIGhpc3RvZ3JhbSB5b3Ugc2VlIGFib3ZlIGlzIGJhc2ljYWxseSBhIGJhc2UtMTAgbG9nIGhpc3RvZ3JhbSB3aGVyZQord2UgY2FuIHNlZSB0aGF0IG1vc3Qgb2YgdGhlIHRyYW5zYWN0aW9uIHRpbWVzIHdlcmUgb24gdGhlIG9yZGVyIG9mIG9uZQoraHVuZHJlZCB0byBvbmUtaHVuZHJlZCwgbmluZXR5LW5pbmUgbWljcm9zZWNvbmRzLCBidXQgdGhleSB3ZXJlCitvY2Nhc2lvbmFsbHkgYXMgbG9uZyBhcyB0ZW4gdG8gbmluZXRlZW4gbWlsbGlzZWNvbmRzCisKK1RoZSBAb3B0aW9uey0tZW5hYmxlLWRlbW89eWVzfSBjb25maWd1cmUgb3B0aW9uIHdpbGwgY2F1c2UgY29kZSB0byBiZQoraW5jbHVkZWQgdG8gcmVwb3J0IGludGVyaW0gcmVzdWx0cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZSByYXRlIGF0Cit3aGljaCBpbnRlcmltIHJlc3VsdHMgYXJlIHJlcG9ydGVkIGNhbiB0aGVuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZQorZ2xvYmFsIEBvcHRpb257LUR9IG9wdGlvbi4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBAb3B0aW9uey1EfSBvdXRwdXQ6CisKK0BleGFtcGxlCiskIHNyYy9uZXRwZXJmIC1EIDEuMzUgLUggdGFyZHkuaHBsLmhwLmNvbSAtZiBNCitNSUdSQVRFRCBUQ1AgU1RSRUFNIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byB0YXJkeS5ocGwuaHAuY29tICgxNS45LjExNi4xNDQpIHBvcnQgMCBBRl9JTkVUIDogZGVtbworSW50ZXJpbSByZXN1bHQ6ICAgIDUuNDEgTUJ5dGVzL3Mgb3ZlciAxLjM1IHNlY29uZHMgZW5kaW5nIGF0IDEzMDg3ODk3NjUuODQ4CitJbnRlcmltIHJlc3VsdDogICAxMS4wNyBNQnl0ZXMvcyBvdmVyIDEuMzYgc2Vjb25kcyBlbmRpbmcgYXQgMTMwODc4OTc2Ny4yMDYKK0ludGVyaW0gcmVzdWx0OiAgIDE2LjAwIE1CeXRlcy9zIG92ZXIgMS4zNiBzZWNvbmRzIGVuZGluZyBhdCAxMzA4Nzg5NzY4LjU2NgorSW50ZXJpbSByZXN1bHQ6ICAgMjAuNjYgTUJ5dGVzL3Mgb3ZlciAxLjM2IHNlY29uZHMgZW5kaW5nIGF0IDEzMDg3ODk3NjkuOTIyCitJbnRlcmltIHJlc3VsdDogICAyMi43NCBNQnl0ZXMvcyBvdmVyIDEuMzYgc2Vjb25kcyBlbmRpbmcgYXQgMTMwODc4OTc3MS4yODUKK0ludGVyaW0gcmVzdWx0OiAgIDIzLjA3IE1CeXRlcy9zIG92ZXIgMS4zNiBzZWNvbmRzIGVuZGluZyBhdCAxMzA4Nzg5NzcyLjY0NworSW50ZXJpbSByZXN1bHQ6ICAgMjMuNzcgTUJ5dGVzL3Mgb3ZlciAxLjM3IHNlY29uZHMgZW5kaW5nIGF0IDEzMDg3ODk3NzQuMDE2CitSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAKK1NvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIAorU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgCitieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICBNQnl0ZXMvc2VjICAKKworIDg3MzgwICAxNjM4NCAgMTYzODQgICAgMTAuMDYgICAgICAxNy44MSAgIAorQGVuZCBleGFtcGxlCisKK05vdGljZSBob3cgdGhlIHVuaXRzIG9mIHRoZSBpbnRlcmltIHJlc3VsdCB0cmFjayB0aGF0IHJlcXVlc3RlZCBieSB0aGUKK0BvcHRpb257LWZ9IG9wdGlvbi4gIEFsc28gbm90aWNlIHRoYXQgc29tZXRpbWVzIHRoZSBpbnRlcnZhbCB3aWxsIGJlCitsb25nZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSBAb3B0aW9uey1EfSBvcHRpb24uICBUaGlzIGlzCitub3JtYWwgYW5kIHN0ZW1zIGZyb20gaG93IGRlbW8gbW9kZSBpcyBpbXBsZW1lbnRlZCBub3QgYnkgcmVseWluZyBvbgoraW50ZXJ2YWwgdGltZXJzIG9yIGZyZXF1ZW50IGNhbGxzIHRvIGdldCB0aGUgY3VycmVudCB0aW1lLCBidXQgYnkKK2NhbGN1bGF0aW5nIGhvdyBtYW55IHVuaXRzIG9mIHdvcmsgbXVzdCBiZSBwZXJmb3JtZWQgdG8gdGFrZSBhdCBsZWFzdAordGhlIGRlc2lyZWQgaW50ZXJ2YWwuCisKK1Rob3NlIGZhbWlsaWFyIHdpdGggdGhpcyBvcHRpb24gaW4gZWFybGllciB2ZXJzaW9ucyBvZiBuZXRwZXJmIHdpbGwKK25vdGUgdGhlIGFkZGl0aW9uIG9mIHRoZSBgYGVuZGluZyBhdCcnIHRleHQuICBUaGlzIGlzIHRoZSB0aW1lIGFzCityZXBvcnRlZCBieSBhIEBjb2Rle2dldHRpbWVvZmRheSgpfSBjYWxsIChvciBpdHMgZW11bGF0aW9uKSB3aXRoIGEKK0Bjb2Rle05VTEx9IHRpbWV6b25lIHBvaW50ZXIuICBUaGlzIGFkZGl0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgaXQKK2Vhc2llciB0byBpbnNlcnQgaW50ZXJpbSByZXN1bHRzIGludG8gYW4KK0B1cmVme2h0dHA6Ly9vc3Mub2V0aWtlci5jaC9ycmR0b29sL2RvYy9ycmR0b29sLmVuLmh0bWwscnJkdG9vbH0KK1JvdW5kLVJvYmluIERhdGFiYXNlIChSUkQpLiAgQSBsaWtlbHkgYnVnLXJpZGRsZWQgZXhhbXBsZSBvZiBkb2luZyBzbworY2FuIGJlIGZvdW5kIGluIEBmaWxle2RvYy9leGFtcGxlcy9uZXRwZXJmX2ludGVyaW1fdG9fcnJkLnNofS4gIFRoZQordGltZSBpcyByZXBvcnRlZCBvdXQgdG8gbWlsbGlzZWNvbmRzIHJhdGhlciB0aGFuIG1pY3Jvc2Vjb25kcyBiZWNhdXNlCit0aGF0IGlzIHRoZSBtb3N0IHJyZHRvb2wgdW5kZXJzdGFuZHMgYXMgb2YgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgorCitBcyBvZiB0aGlzIHdyaXRpbmcsIGEgQGNvZGV7bWFrZSBpbnN0YWxsfSB3aWxsIG5vdCBhY3R1YWxseSB1cGRhdGUgdGhlCitmaWxlcyBAZmlsZXsvZXRjL3NlcnZpY2VzfSBhbmQvb3IgQGZpbGV7L2V0Yy9pbmV0ZC5jb25mfSBvciB0aGVpcgorcGxhdGZvcm0tc3BlY2lmaWMgZXF1aXZhbGVudHMuICBJdCByZW1haW5zIG5lY2Vzc2FyeSB0byBwZXJmb3JtIHRoYXQKK2JpdCBvZiBpbnN0YWxsYXRpb24gbWFnaWMgYnkgaGFuZC4gIFBhdGNoZXMgdG8gdGhlIG1ha2VmaWxlIHNvdXJjZXMgdG8KK2VmZmVjdCBhbiBhdXRvbWFnaWMgZWRpdGluZyBvZiB0aGUgbmVjZXNzYXJ5IGZpbGVzIHRvIGhhdmUgbmV0cGVyZgoraW5zdGFsbGVkIGFzIGEgY2hpbGQgb2YgaW5ldGQgd291bGQgYmUgbW9zdCB3ZWxjb21lLgorCitTdGFydGluZyB0aGUgbmV0c2VydmVyIGFzIGEgc3RhbmRhbG9uZSBkYWVtb24gc2hvdWxkIGJlIGFzIGVhc3kgYXM6CitAZXhhbXBsZQorJCBuZXRzZXJ2ZXIKK1N0YXJ0aW5nIG5ldHNlcnZlciBhdCBwb3J0IDEyODY1CitTdGFydGluZyBuZXRzZXJ2ZXIgYXQgaG9zdG5hbWUgMC4wLjAuMCBwb3J0IDEyODY1IGFuZCBmYW1pbHkgMAorQGVuZCBleGFtcGxlCisKK092ZXIgdGltZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBtZXNzYWdlcyBuZXRzZXJ2ZXIgcHJpbnRzIHRvIHRoZSBzY3JlZW4KK21heSBjaGFuZ2UgYnV0IHRoZSBnaXN0IHdpbGwgcmVtYWluIHRoZSBzYW1lLgorCitJZiB0aGUgY29tcGlsYXRpb24gb2YgbmV0cGVyZiBvciBuZXRzZXJ2ZXIgaGFwcGVucyB0byBmYWlsLCBmZWVsIGZyZWUKK3RvIGNvbnRhY3QgQGVtYWlse25ldHBlcmYtZmVlZGJhY2tAQG5ldHBlcmYub3JnfSBvciBqb2luIGFuZCBhc2sgaW4KK0BlbWFpbHtuZXRwZXJmLXRhbGtAQG5ldHBlcmYub3JnfS4gIEhvd2V2ZXIsIGl0IGlzIHF1aXRlIGltcG9ydGFudAordGhhdCB5b3UgaW5jbHVkZSB0aGUgYWN0dWFsIGNvbXBpbGF0aW9uIGVycm9ycyBhbmQgcGVyaGFwcyBldmVuIHRoZQorY29uZmlndXJlIGxvZyBpbiB5b3VyIGVtYWlsLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIHRoYXQgbXVjaCBtb3JlCitkaWZmaWN1bHQgZm9yIHNvbWVvbmUgdG8gYXNzaXN0IHlvdS4KKworQG5vZGUgVmVyaWZ5aW5nIEluc3RhbGxhdGlvbiwgICwgSW5zdGFsbGluZyBOZXRwZXJmIEJpdHMsIEluc3RhbGxpbmcgTmV0cGVyZgorQHNlY3Rpb24gVmVyaWZ5aW5nIEluc3RhbGxhdGlvbgorCitCYXNpY2FsbHksIG9uY2UgbmV0cGVyZiBpcyBpbnN0YWxsZWQgYW5kIG5ldHNlcnZlciBpcyBjb25maWd1cmVkIGFzIGEKK2NoaWxkIG9mIGluZXRkLCBvciBsYXVuY2hlZCBhcyBhIHN0YW5kYWxvbmUgZGFlbW9uLCBzaW1wbHkgdHlwaW5nOgorQGV4YW1wbGUKK25ldHBlcmYKK0BlbmQgZXhhbXBsZQorc2hvdWxkIHJlc3VsdCBpbiBvdXRwdXQgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOgorQGV4YW1wbGUKKyQgbmV0cGVyZgorVENQIFNUUkVBTSBURVNUIGZyb20gMC4wLjAuMCAoMC4wLjAuMCkgcG9ydCAwIEFGX0lORVQgdG8gbG9jYWxob3N0LmxvY2FsZG9tYWluICgxMjcuMC4wLjEpIHBvcnQgMCBBRl9JTkVUCitSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAKK1NvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIAorU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgCitieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAxMF42Yml0cy9zZWMgIAorCisgODczODAgIDE2Mzg0ICAxNjM4NCAgICAxMC4wMCAgICAyOTk3Ljg0ICAgCitAZW5kIGV4YW1wbGUKKworCitAbm9kZSBUaGUgRGVzaWduIG9mIE5ldHBlcmYsIEdsb2JhbCBDb21tYW5kLWxpbmUgT3B0aW9ucywgSW5zdGFsbGluZyBOZXRwZXJmLCBUb3AKK0BjaGFwdGVyIFRoZSBEZXNpZ24gb2YgTmV0cGVyZgorCitAY2luZGV4IERlc2lnbiBvZiBOZXRwZXJmCisKK05ldHBlcmYgaXMgZGVzaWduZWQgYXJvdW5kIGEgYmFzaWMgY2xpZW50LXNlcnZlciBtb2RlbC4gIFRoZXJlIGFyZQordHdvIGV4ZWN1dGFibGVzIC0gbmV0cGVyZiBhbmQgbmV0c2VydmVyLiAgR2VuZXJhbGx5IHlvdSB3aWxsIG9ubHkKK2V4ZWN1dGUgdGhlIG5ldHBlcmYgcHJvZ3JhbSwgd2l0aCB0aGUgbmV0c2VydmVyIHByb2dyYW0gYmVpbmcgaW52b2tlZAorYnkgdGhlIHJlbW90ZSBzeXN0ZW0ncyBpbmV0ZCBvciBoYXZpbmcgYmVlbiBwcmV2aW91c2x5IHN0YXJ0ZWQgYXMgaXRzCitvd24gc3RhbmRhbG9uZSBkYWVtb24uCisKK1doZW4geW91IGV4ZWN1dGUgbmV0cGVyZiBpdCB3aWxsIGVzdGFibGlzaCBhIGBgY29udHJvbCBjb25uZWN0aW9uJycgdG8KK3RoZSByZW1vdGUgc3lzdGVtLiAgVGhpcyBjb25uZWN0aW9uIHdpbGwgYmUgdXNlZCB0byBwYXNzIHRlc3QKK2NvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIHJlc3VsdHMgdG8gYW5kIGZyb20gdGhlIHJlbW90ZSBzeXN0ZW0uCitSZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIHRlc3QgdG8gYmUgcnVuLCB0aGUgY29udHJvbCBjb25uZWN0aW9uIHdpbGwKK2JlIGEgVENQIGNvbm5lY3Rpb24gdXNpbmcgQlNEIHNvY2tldHMuICBUaGUgY29udHJvbCBjb25uZWN0aW9uIGNhbiB1c2UKK2VpdGhlciBJUHY0IG9yIElQdjYuCisKK09uY2UgdGhlIGNvbnRyb2wgY29ubmVjdGlvbiBpcyB1cCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KK2hhcyBiZWVuIHBhc3NlZCwgYSBzZXBhcmF0ZSBgYGRhdGEnJyBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbmVkIGZvciB0aGUKK21lYXN1cmVtZW50IGl0c2VsZiB1c2luZyB0aGUgQVBJJ3MgYW5kIHByb3RvY29scyBhcHByb3ByaWF0ZSBmb3IgdGhlCitzcGVjaWZpZWQgdGVzdC4gIFdoZW4gdGhlIHRlc3QgaXMgY29tcGxldGVkLCB0aGUgZGF0YSBjb25uZWN0aW9uIHdpbGwKK2JlIHRvcm4tZG93biBhbmQgcmVzdWx0cyBmcm9tIHRoZSBuZXRzZXJ2ZXIgd2lsbCBiZSBwYXNzZWQtYmFjayB2aWEgdGhlCitjb250cm9sIGNvbm5lY3Rpb24gYW5kIGNvbWJpbmVkIHdpdGggbmV0cGVyZidzIHJlc3VsdCBmb3IgZGlzcGxheSB0bwordGhlIHVzZXIuCisKK05ldHBlcmYgcGxhY2VzIG5vIHRyYWZmaWMgb24gdGhlIGNvbnRyb2wgY29ubmVjdGlvbiB3aGlsZSBhIHRlc3QgaXMgaW4KK3Byb2dyZXNzLiAgQ2VydGFpbiBUQ1Agb3B0aW9ucywgc3VjaCBhcyBTT19LRUVQQUxJVkUsIGlmIHNldCBhcyB5b3VyCitzeXN0ZW1zJyBkZWZhdWx0LCBtYXkgcHV0IHBhY2tldHMgb3V0IG9uIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gd2hpbGUKK2EgdGVzdCBpcyBpbiBwcm9ncmVzcy4gIEdlbmVyYWxseSBzcGVha2luZyB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24KK3RoZSByZXN1bHRzLgorCitAbWVudQorKiBDUFUgVXRpbGl6YXRpb246OiAgICAgICAgICAgICAKK0BlbmQgbWVudQorCitAbm9kZSBDUFUgVXRpbGl6YXRpb24sICAsIFRoZSBEZXNpZ24gb2YgTmV0cGVyZiwgVGhlIERlc2lnbiBvZiBOZXRwZXJmCitAc2VjdGlvbiBDUFUgVXRpbGl6YXRpb24KK0BjaW5kZXggQ1BVIFV0aWxpemF0aW9uCisKK0NQVSB1dGlsaXphdGlvbiBpcyBhbiBpbXBvcnRhbnQsIGFuZCBhbGFzIGFsbC10b28gaW5mcmVxdWVudGx5CityZXBvcnRlZCBjb21wb25lbnQgb2YgbmV0d29ya2luZyBwZXJmb3JtYW5jZS4gIFVuZm9ydHVuYXRlbHksIGl0IGNhbgorYmUgb25lIG9mIHRoZSBtb3N0IGRpZmZpY3VsdCBtZXRyaWNzIHRvIG1lYXN1cmUgYWNjdXJhdGVseSBhbmQKK3BvcnRhYmx5LiAgTmV0cGVyZiB3aWxsIGRvIGl0cyBsZXZlbCBiZXN0IHRvIHJlcG9ydCBhY2N1cmF0ZQorQ1BVIHV0aWxpemF0aW9uIGZpZ3VyZXMsIGJ1dCBzb21lIGNvbWJpbmF0aW9ucyBvZiBwcm9jZXNzb3IsIE9TIGFuZAorY29uZmlndXJhdGlvbiBtYXkgbWFrZSB0aGF0IGRpZmZpY3VsdC4KKworQ1BVIHV0aWxpemF0aW9uIGluIG5ldHBlcmYgaXMgcmVwb3J0ZWQgYXMgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMCUKK3JlZ2FyZGxlc3Mgb2YgdGhlIG51bWJlciBvZiBDUFVzIGludm9sdmVkLiAgSW4gYWRkaXRpb24gdG8gQ1BVCit1dGlsaXphdGlvbiwgbmV0cGVyZiB3aWxsIHJlcG9ydCBhIG1ldHJpYyBjYWxsZWQgYSBAZGZue3NlcnZpY2UKK2RlbWFuZH0uICBUaGUgc2VydmljZSBkZW1hbmQgaXMgdGhlIG5vcm1hbGl6YXRpb24gb2YgQ1BVIHV0aWxpemF0aW9uCithbmQgd29yayBwZXJmb3JtZWQuICBGb3IgYSBfU1RSRUFNIHRlc3QgaXQgaXMgdGhlIG1pY3Jvc2Vjb25kcyBvZiBDUFUKK3RpbWUgY29uc3VtZWQgdG8gdHJhbnNmZXIgb24gS0IgKEsgPT0gMTAyNCkgb2YgZGF0YS4gIEZvciBhIF9SUiB0ZXN0CitpdCBpcyB0aGUgbWljcm9zZWNvbmRzIG9mIENQVSB0aW1lIGNvbnN1bWVkIHByb2Nlc3NpbmcgYSBzaW5nbGUKK3RyYW5zYWN0aW9uLiAgIEZvciBib3RoIENQVSB1dGlsaXphdGlvbiBhbmQgc2VydmljZSBkZW1hbmQsIGxvd2VyIGlzCitiZXR0ZXIuIAorCitTZXJ2aWNlIGRlbWFuZCBjYW4gYmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHRyeWluZyB0byBnYXVnZSB0aGUKK2VmZmVjdCBvZiBhIHBlcmZvcm1hbmNlIGNoYW5nZS4gIEl0IGlzIGVzc2VudGlhbGx5IGEgbWVhc3VyZSBvZgorZWZmaWNpZW5jeSwgd2l0aCBzbWFsbGVyIHZhbHVlcyBiZWluZyBtb3JlIGVmZmljaWVudCBhbmQgdGh1cworYGBiZXR0ZXIuJycKKworTmV0cGVyZiBpcyBjb2RlZCB0byBiZSBhYmxlIHRvIHVzZSBvbmUgb2Ygc2V2ZXJhbCwgZ2VuZXJhbGx5CitwbGF0Zm9ybS1zcGVjaWZpYyBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnQgbWVjaGFuaXNtcy4gIFNpbmdsZQorbGV0dGVyIGNvZGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIENQVSBwb3J0aW9uIG9mIHRoZSB0ZXN0IGJhbm5lciB0bworaW5kaWNhdGUgd2hpY2ggbWVjaGFuaXNtIHdhcyB1c2VkIG9uIGVhY2ggb2YgdGhlIGxvY2FsIChuZXRwZXJmKSBhbmQKK3JlbW90ZSAobmV0c2VydmVyKSBzeXN0ZW0uCisKK0FzIG9mIHRoaXMgd3JpdGluZyB0aG9zZSBjb2RlcyBhcmU6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gVQorVGhlIENQVSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudCBtZWNoYW5pc20gd2FzIHVua25vd24gdG8gbmV0cGVyZiBvcgorbmV0cGVyZi9uZXRzZXJ2ZXIgd2FzIG5vdCBjb21waWxlZCB0byBpbmNsdWRlIENQVSB1dGlsaXphdGlvbgorbWVhc3VyZW1lbnRzLiBUaGUgY29kZSBmb3IgdGhlIG51bGwgQ1BVIHV0aWxpemF0aW9uIG1lY2hhbmlzbSBjYW4gYmUKK2ZvdW5kIGluIEBmaWxle3NyYy9uZXRjcHVfbm9uZS5jfS4KK0BpdGVtIEkKK0FuIEhQLVVYLXNwZWNpZmljIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc20gd2hlcmVieSB0aGUga2VybmVsCitpbmNyZW1lbnRlZCBhIHBlci1DUFUgY291bnRlciBieSBvbmUgZm9yIGVhY2ggdHJpcCB0aHJvdWdoIHRoZSBpZGxlCitsb29wLiBUaGlzIG1lY2hhbmlzbSB3YXMgb25seSBhdmFpbGFibGUgb24gc3BlY2lhbGx5LWNvbXBpbGVkIEhQLVVYCitrZXJuZWxzIHByaW9yIHRvIEhQLVVYIDEwIGFuZCBpcyBtZW50aW9uZWQgaGVyZSBvbmx5IGZvciB0aGUgc2FrZSBvZgoraGlzdG9yaWNhbCBjb21wbGV0ZW5lc3MgYW5kIHBlcmhhcHMgYXMgYSBzdWdnZXN0aW9uIHRvIHRob3NlIHdobyBtaWdodAorYmUgYWx0ZXJpbmcgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMuIFdoaWxlIHJhdGhlciBzaW1wbGUsIHBlcmhhcHMgZXZlbgorc2ltcGxpc3RpYywgdGhpcyBtZWNoYW5pc20gd2FzIHF1aXRlIHJvYnVzdCBhbmQgd2FzIG5vdCBhZmZlY3RlZCBieQordGhlIGNvbmNlcm5zIG9mIHN0YXRpc3RpY2FsIG1ldGhvZHMsIG9yIG1ldGhvZHMgYXR0ZW1wdGluZyB0byB0cmFjawordGltZSBpbiBlYWNoIG9mIHVzZXIsIGtlcm5lbCwgaW50ZXJydXB0IGFuZCBpZGxlIG1vZGVzIHdoaWNoIHJlcXVpcmUKK3F1aXRlIGNhcmVmdWwgYWNjb3VudGluZy4gIEl0IGNhbiBiZSB0aG91Z2h0LW9mIGFzIHRoZSBpbi1rZXJuZWwKK3ZlcnNpb24gb2YgdGhlIGxvb3BlciBAY29kZXtMfSBtZWNoYW5pc20gd2l0aG91dCB0aGUgY29udGV4dCBzd2l0Y2gKK292ZXJoZWFkLiBUaGlzIG1lY2hhbmlzbSByZXF1aXJlZCBjYWxpYnJhdGlvbi4KK0BpdGVtIFAKK0FuIEhQLVVYLXNwZWNpZmljIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc20gd2hlcmVieSB0aGUga2VybmVsCitrZWVwcy10cmFjayBvZiB0aW1lIChpbiB0aGUgZm9ybSBvZiBDUFUgY3ljbGVzKSBzcGVudCBpbiB0aGUga2VybmVsCitpZGxlIGxvb3AgKEhQLVVYIDEwLjAgdG8gMTEuMzEgaW5jbHVzaXZlKSwgb3Igd2hlcmUgdGhlIGtlcm5lbCBrZWVwcwordHJhY2sgb2YgdGltZSBzcGVudCBpbiBpZGxlLCB1c2VyLCBrZXJuZWwgYW5kIGludGVycnVwdCBwcm9jZXNzaW5nCisoSFAtVVggMTEuMjMgYW5kIGxhdGVyKS4gIFRoZSBmb3JtZXIgcmVxdWlyZXMgY2FsaWJyYXRpb24sIHRoZSBsYXR0ZXIKK2RvZXMgbm90LiAgVmFsdWVzIGluIGVpdGhlciBjYXNlIGFyZSByZXRyaWV2ZWQgdmlhIG9uZSBvZiB0aGUgcHN0YXQoMikKK2ZhbWlseSBvZiBjYWxscywgaGVuY2UgdGhlIHVzZSBvZiB0aGUgbGV0dGVyIEBjb2Rle1B9LiAgVGhlIGNvZGUgZm9yCit0aGVzZSBtZWNoYW5pc21zIGlzIGZvdW5kIGluIEBmaWxle3NyYy9uZXRjcHVfcHN0YXQuY30gYW5kCitAZmlsZXtzcmMvbmV0Y3B1X3BzdGF0bmV3LmN9IHJlc3BlY3RpdmVseS4KK0BpdGVtIEsKK0EgU29sYXJpcy1zcGVjaWZpYyBDUFUgdXRpbGl6YXRpb24gbWVjaGFuaXNtIHdoZXJlYnkgdGhlIGtlcm5lbCBrZWVwcwordHJhY2sgb2YgdGlja3MgKGVnIEhaKSBzcGVudCBpbiB0aGUgaWRsZSBsb29wLiAgVGhpcyBtZXRob2QgaXMKK3N0YXRpc3RpY2FsIGFuZCBpcyBrbm93biB0byBiZSBpbmFjY3VyYXRlIHdoZW4gdGhlIGludGVycnVwdCByYXRlIGlzCithYm92ZSBlcHNpbG9uIGFzIHRpbWUgc3BlbnQgcHJvY2Vzc2luZyBpbnRlcnJ1cHRzIGlzIG5vdCBzdWJ0cmFjdGVkCitmcm9tIGlkbGUuICBUaGUgdmFsdWUgaXMgcmV0cmlldmVkIHZpYSBhIGtzdGF0KCkgY2FsbCAtIGhlbmNlIHRoZSB1c2UKK29mIHRoZSBsZXR0ZXIgQGNvZGV7S30uICBTaW5jZSB0aGlzIG1lY2hhbmlzbSB1c2VzIHVuaXRzIG9mIHRpY2tzIChIWikKK3RoZSBjYWxpYnJhdGlvbiB2YWx1ZSBzaG91bGQgaW52YXJpYWJseSBtYXRjaCBIWi4gKEVnIDEwMCkgVGhlIGNvZGUKK2ZvciB0aGlzIG1lY2hhbmlzbSBpcyBpbXBsZW1lbnRlZCBpbiBAZmlsZXtzcmMvbmV0Y3B1X2tzdGF0LmN9LgorQGl0ZW0gTQorQSBTb2xhcmlzLXNwZWNpZmljIG1lY2hhbmlzbSBhdmFpbGFibGUgb24gU29sYXJpcyAxMCBhbmQgbGF0dGVyIHdoaWNoCit1c2VzIHRoZSBuZXcgbWljcm9zdGF0ZSBhY2NvdW50aW5nIG1lY2hhbmlzbXMuICBUaGVyZSBhcmUgdHdvLCBhbGFzLAorb3ZlcmxhcHBpbmcsIG1lY2hhbmlzbXMuICBUaGUgZmlyc3QgdHJhY2tzIG5hbm9zZWNvbmRzIHNwZW50IGluIHVzZXIsCitrZXJuZWwsIGFuZCBpZGxlIG1vZGVzLiBUaGUgc2Vjb25kIG1lY2hhbmlzbSB0cmFja3MgbmFub3NlY29uZHMgc3BlbnQKK2luIGludGVycnVwdC4gIFNpbmNlIHRoZSBtZWNoYW5pc21zIG92ZXJsYXAsIG5ldHBlcmYgZ29lcyB0aHJvdWdoIHNvbWUKK2hhbmQtd2F2aW5nIHRvIHRyeSB0byBgYGZpeCcnIHRoZSBwcm9ibGVtLiAgU2luY2UgdGhlIGFjY3VyYWN5IG9mIHRoZQoraGFuZHdhdmluZyBjYW5ub3QgYmUgY29tcGxldGVseSBkZXRlcm1pbmVkLCBvbmUgbXVzdCBwcmVzdW1lIHRoYXQKK3doaWxlIGJldHRlciB0aGFuIHRoZSBAY29kZXtLfSBtZWNoYW5pc20sIHRoaXMgbWVjaGFuaXNtIHRvbyBpcyBub3QKK3dpdGhvdXQgaXNzdWVzLiAgVGhlIHZhbHVlcyBhcmUgcmV0cmlldmVkIHZpYSBrc3RhdCgpIGNhbGxzLCBidXQgdGhlCitsZXR0ZXIgY29kZSBpcyBzZXQgdG8gQGNvZGV7TX0gdG8gZGlzdGluZ3Vpc2ggdGhpcyBtZWNoYW5pc20gZnJvbSB0aGUKK2V2ZW4gbGVzcyBhY2N1cmF0ZSBAY29kZXtLfSBtZWNoYW5pc20uICBUaGUgY29kZSBmb3IgdGhpcyBtZWNoYW5pc20gaXMKK2ltcGxlbWVudGVkIGluIEBmaWxle3NyYy9uZXRjcHVfa3N0YXQxMC5jfS4KK0BpdGVtIEwKK0EgbWVjaGFuaXNtIGJhc2VkIG9uIGBgbG9vcGVyJydvciBgYHNvYWtlcicnIHByb2Nlc3NlcyB3aGljaCBzaXQgaW4KK3RpZ2h0IGxvb3BzIGNvdW50aW5nIGFzIGZhc3QgYXMgdGhleSBwb3NzaWJseSBjYW4uIFRoaXMgbWVjaGFuaXNtCitzdGFydHMgYSBsb29wZXIgcHJvY2VzcyBmb3IgZWFjaCBrbm93biBDUFUgb24gdGhlIHN5c3RlbS4gIFRoZSBlZmZlY3QKK29mIHByb2Nlc3NvciBoeXBlcnRocmVhZGluZyBvbiB0aGUgbWVjaGFuaXNtIGlzIG5vdCB5ZXQga25vd24uICBUaGlzCittZWNoYW5pc20gZGVmaW5pdGVseSByZXF1aXJlcyBjYWxpYnJhdGlvbi4gIFRoZSBjb2RlIGZvciB0aGUKK2BgbG9vcGVyJydtZWNoYW5pc20gY2FuIGJlIGZvdW5kIGluIEBmaWxle3NyYy9uZXRjcHVfbG9vcGVyLmN9CitAaXRlbSBOCitBIE1pY3Jvc29mdCBXaW5kb3dzLXNwZWNpZmljIG1lY2hhbmlzbSwgdGhlIGNvZGUgZm9yIHdoaWNoIGNhbiBiZQorZm91bmQgaW4gQGZpbGV7c3JjL25ldGNwdV9udHBlcmYuY30uICBUaGlzIG1lY2hhbmlzbSB0b28gaXMgYmFzZWQgb24KK3doYXQgYXBwZWFycyB0byBiZSBhIGZvcm0gb2YgbWljcm8tc3RhdGUgYWNjb3VudGluZyBhbmQgcmVxdWlyZXMgbm8KK2NhbGlicmF0aW9uLiAgT24gbGFwdG9wcywgb3Igb3RoZXIgc3lzdGVtcyB3aGljaCBtYXkgZHluYW1pY2FsbHkgYWx0ZXIKK3RoZSBDUFUgZnJlcXVlbmN5IHRvIG1pbmltaXplIHBvd2VyIGNvbnN1bXB0aW9uLCBpdCBoYXMgYmVlbiBzdWdnZXN0ZWQKK3RoYXQgdGhpcyBtZWNoYW5pc20gbWF5IGJlY29tZSBzbGlnaHRseSBjb25mdXNlZCwgaW4gd2hpY2ggY2FzZSB1c2luZworQklPUy91RUZJIHNldHRpbmdzIHRvIGRpc2FibGUgdGhlIHBvd2VyIHNhdmluZyB3b3VsZCBiZSBpbmRpY2F0ZWQuCisKK0BpdGVtIFMKK1RoaXMgbWVjaGFuaXNtIHVzZXMgQGZpbGV7L3Byb2Mvc3RhdH0gb24gTGludXggdG8gcmV0cmlldmUgdGltZQorKHRpY2tzKSBzcGVudCBpbiBpZGxlIG1vZGUuICBJdCBpcyB0aG91Z2h0IGJ1dCBub3Qga25vd24gdG8gYmUKK3JlYXNvbmFibHkgYWNjdXJhdGUuICBUaGUgY29kZSBmb3IgdGhpcyBtZWNoYW5pc20gY2FuIGJlIGZvdW5kIGluCitAZmlsZXtzcmMvbmV0Y3B1X3Byb2NzdGF0LmN9LgorQGl0ZW0gQworQSBtZWNoYW5pc20gc29tZXdoYXQgc2ltaWxhciB0byBAY29kZXtTfSBidXQgdXNpbmcgdGhlIHN5c2N0bCgpIGNhbGwKK29uIEJTRC1saWtlIE9wZXJhdGluZyBzeXN0ZW1zICgqQlNEIGFuZCBNYWNPUyBYKS4gIFRoZSBjb2RlIGZvciB0aGlzCittZWNoYW5pc20gY2FuIGJlIGZvdW5kIGluIEBmaWxle3NyYy9uZXRjcHVfc3lzY3RsLmN9LgorQGl0ZW0gT3RoZXJzCitPdGhlciBtZWNoYW5pc21zIGluY2x1ZGVkIGluIG5ldHBlcmYgaW4gdGhlIHBhc3QgaGF2ZSBpbmNsdWRlZCB1c2luZwordGhlIHRpbWVzKCkgYW5kIGdldHJ1c2FnZSgpIGNhbGxzLiAgVGhlc2UgY2FsbHMgYXJlIGFjdHVhbGx5IHJhdGhlcgorcG9vcmx5IHN1aXRlZCB0byB0aGUgdGFzayBvZiBtZWFzdXJpbmcgQ1BVIG92ZXJoZWFkIGZvciBuZXR3b3JraW5nIGFzCit0aGV5IHRlbmQgdG8gYmUgcHJvY2Vzcy1zcGVjaWZpYyBhbmQgbXVjaCBuZXR3b3JrLXJlbGF0ZWQgcHJvY2Vzc2luZworY2FuIGhhcHBlbiBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgcHJvY2VzcywgaW4gcGxhY2VzIHdoZXJlIGl0IGlzIG5vdAorYSBnaXZlbiBpdCB3aWxsIGJlIGNoYXJnZWQgdG8gdGhlIGNvcnJlY3QsIG9yIGV2ZW4gYSBwcm9jZXNzLiAgVGhleQorYXJlIG1lbnRpb25lZCBoZXJlIGFzIGEgd2FybmluZyB0byBhbnlvbmUgc2VlaW5nIHRob3NlIG1lY2hhbmlzbXMgdXNlZAoraW4gb3RoZXIgbmV0d29ya2luZyBiZW5jaG1hcmtzLiAgVGhlc2UgbWVjaGFuaXNtcyBhcmUgbm90IGF2YWlsYWJsZSBpbgorbmV0cGVyZiAyLjQuMCBhbmQgbGF0ZXIuCitAZW5kIHRhYmxlCisKK0ZvciBtYW55IHBsYXRmb3JtcywgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2lsbCBjaG9zZSB0aGUgYmVzdCBhdmFpbGFibGUKK0NQVSB1dGlsaXphdGlvbiBtZWNoYW5pc20uICBIb3dldmVyLCBzb21lIHBsYXRmb3JtcyBoYXZlIG5vCitwYXJ0aWN1bGFybHkgZ29vZCBtZWNoYW5pc21zLiAgT24gdGhvc2UgcGxhdGZvcm1zLCBpdCBpcyBwcm9iYWJseSBiZXN0Cit0byB1c2UgdGhlIGBgTE9PUEVSJycgbWVjaGFuaXNtIHdoaWNoIGlzIGJhc2ljYWxseSBzb21lIG51bWJlciBvZgorcHJvY2Vzc2VzIChhcyBtYW55IGFzIHRoZXJlIGFyZSBwcm9jZXNzb3JzKSBzaXR0aW5nIGluIHRpZ2h0IGxpdHRsZQorbG9vcHMgY291bnRpbmcgYXMgZmFzdCBhcyB0aGV5IGNhbi4gIFRoZSByYXRlIGF0IHdoaWNoIHRoZSBsb29wZXJzCitjb3VudCB3aGVuIHRoZSBzeXN0ZW0gaXMgYmVsaWV2ZWQgdG8gYmUgaWRsZSBpcyBjb21wYXJlZCB3aXRoIHRoZSByYXRlCit3aGVuIHRoZSBzeXN0ZW0gaXMgcnVubmluZyBuZXRwZXJmIGFuZCB0aGUgcmF0aW8gaXMgdXNlZCB0byBjb21wdXRlCitDUFUgdXRpbGl6YXRpb24uCisKK0luIHRoZSBwYXN0LCBuZXRwZXJmIGluY2x1ZGVkIHNvbWUgbWVjaGFuaXNtcyB0aGF0IG9ubHkgcmVwb3J0ZWQgQ1BVCit0aW1lIGNoYXJnZWQgdG8gdGhlIGNhbGxpbmcgcHJvY2Vzcy4gIFRob3NlIG1lY2hhbmlzbXMgaGF2ZSBiZWVuCityZW1vdmVkIGZyb20gbmV0cGVyZiB2ZXJzaW9ucyAyLjQuMCBhbmQgbGF0ZXIgYmVjYXVzZSB0aGV5IGFyZQoraG9wZWxlc3NseSBpbmFjY3VyYXRlLiAgTmV0d29ya2luZyBjYW4gYW5kIG9mdGVuIHJlc3VsdHMgaW4gQ1BVIHRpbWUKK2JlaW5nIHNwZW50IGluIHBsYWNlcyAtIHN1Y2ggYXMgaW50ZXJydXB0IGNvbnRleHRzIC0gdGhhdCBkbyBub3QgZ2V0CitjaGFyZ2VkIHRvIGEgb3IgdGhlIGNvcnJlY3QgcHJvY2Vzcy4KKworSW4gZmFjdCwgdGltZSBzcGVudCBpbiB0aGUgcHJvY2Vzc2luZyBvZiBpbnRlcnJ1cHRzIGlzIGEgY29tbW9uIGlzc3VlCitmb3IgbWFueSBDUFUgdXRpbGl6YXRpb24gbWVjaGFuaXNtcy4gIEluIHBhcnRpY3VsYXIsIHRoZSBgYFBTVEFUJycKK21lY2hhbmlzbSB3YXMgZXZlbnR1YWxseSBrbm93biB0byBoYXZlIHByb2JsZW1zIGFjY291bnRpbmcgZm9yIGNlcnRhaW4KK2ludGVycnVwdCB0aW1lIHByaW9yIHRvIEhQLVVYIDExLjExICgxMWl2MSkuICBIUC1VWCAxMWl2MiBhbmQgbGF0ZXIKK2FyZSBrbm93bi9wcmVzdW1lZCB0byBiZSBnb29kLiBUaGUgYGBLU1RBVCcnIG1lY2hhbmlzbSBpcyBrbm93biB0bworaGF2ZSBwcm9ibGVtcyBvbiBhbGwgdmVyc2lvbnMgb2YgU29sYXJpcyB1cCB0byBhbmQgaW5jbHVkaW5nIFNvbGFyaXMKKzEwLiAgRXZlbiB0aGUgbWljcm9zdGF0ZSBhY2NvdW50aW5nIGF2YWlsYWJsZSB2aWEga3N0YXQgaW4gU29sYXJpcyAxMAoraGFzIGlzc3VlcywgdGhvdWdoIHBlcmhhcHMgbm90IGFzIGJhZCBhcyB0aG9zZSBvZiBwcmlvciB2ZXJzaW9ucy4KKworVGhlIC9wcm9jL3N0YXQgbWVjaGFuaXNtIHVuZGVyIExpbnV4IGlzIGluIHdoYXQgdGhlIGF1dGhvciB3b3VsZAorY29uc2lkZXIgYW4gYGB1bmNlcnRhaW4nJyBjYXRlZ29yeSBhcyBpdCBhcHBlYXJzIHRvIGJlIHN0YXRpc3RpY2FsLAord2hpY2ggbWF5IGFsc28gaGF2ZSBpc3N1ZXMgd2l0aCB0aW1lIHNwZW50IHByb2Nlc3NpbmcgaW50ZXJydXB0cy4KKworSW4gc3VtbWFyeSwgYmUgc3VyZSB0byBgYHNhbml0eS1jaGVjaycnIHRoZSBDUFUgdXRpbGl6YXRpb24gZmlndXJlcword2l0aCBvdGhlciBtZWNoYW5pc21zLiAgSG93ZXZlciwgcGxhdGZvcm0gdG9vbHMgc3VjaCBhcyB0b3AsIHZtc3RhdCBvcgorbXBzdGF0IGFyZSBvZnRlbiBiYXNlZCBvbiB0aGUgc2FtZSBtZWNoYW5pc21zIHVzZWQgYnkgbmV0cGVyZi4KKworQG1lbnUKKyogQ1BVIFV0aWxpemF0aW9uIGluIGEgVmlydHVhbCBHdWVzdDo6ICAKK0BlbmQgbWVudQorCitAbm9kZSBDUFUgVXRpbGl6YXRpb24gaW4gYSBWaXJ0dWFsIEd1ZXN0LCAgLCBDUFUgVXRpbGl6YXRpb24sIENQVSBVdGlsaXphdGlvbgorQHN1YnNlY3Rpb24gQ1BVIFV0aWxpemF0aW9uIGluIGEgVmlydHVhbCBHdWVzdAorCitUaGUgQ1BVIHV0aWxpemF0aW9uIG1lY2hhbmlzbXMgdXNlZCBieSBuZXRwZXJmIGFyZSBgYGlubGluZScnIGluIHRoYXQKK3RoZXkgYXJlIHJ1biBieSB0aGUgc2FtZSBuZXRwZXJmIG9yIG5ldHNlcnZlciBwcm9jZXNzIGFzIGlzIHJ1bm5pbmcKK3RoZSB0ZXN0IGl0c2VsZi4gIFRoaXMgd29ya3MganVzdCBmaW5lIGZvciBgYGJhcmUgaXJvbicnIHRlc3RzIGJ1dAorcnVucyBpbnRvIGEgcHJvYmxlbSB3aGVuIHVzaW5nIHZpcnR1YWwgbWFjaGluZXMuCisKK1RoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB2aXJ0dWFsIGd1ZXN0IGFuZCBoeXBlcnZpc29yIGNhbiBiZSB0aG91Z2h0CitvZiBhcyBiZWluZyBzaW1pbGFyIHRvIHRoYXQgYmV0d2VlbiBhIHByb2Nlc3MgYW5kIGtlcm5lbCBpbiBhIGJhcmUKK2lyb24gc3lzdGVtLiAgQXMgc3VjaCwgKG0pYW55IENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc21zIHVzZWQgaW4gdGhlCit2aXJ0dWFsIGd1ZXN0IGFyZSBzaW1pbGFyIHRvIGBgcHJvY2Vzcy1sb2NhbCcnIG1lY2hhbmlzbXMgaW4gYSBiYXJlCitpcm9uIHNpdHVhdGlvbi4gIEhvd2V2ZXIsIGp1c3QgYXMgd2l0aCBiYXJlIGlyb24gYW5kIHByb2Nlc3MtbG9jYWwKK21lY2hhbmlzbXMsIG11Y2ggbmV0d29ya2luZyBwcm9jZXNzaW5nIGhhcHBlbnMgb3V0c2lkZSB0aGUgY29udGV4dCBvZgordGhlIHZpcnR1YWwgZ3Vlc3QuICBJdCB0YWtlcyBwbGFjZSBpbiB0aGUgaHlwZXJ2aXNvciwgYW5kIGlzIG5vdAordmlzaWJsZSB0byBtZWNoYW5pc21zIHJ1bm5pbmcgaW4gdGhlIGd1ZXN0KHMpLiAgRm9yIHRoaXMgcmVhc29uLCBvbmUKK3Nob3VsZCBub3QgcmVhbGx5IHRydXN0IENQVSB1dGlsaXphdGlvbiBmaWd1cmVzIHJlcG9ydGVkIGJ5IG5ldHBlcmYgb3IKK25ldHNlcnZlciB3aGVuIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsIGd1ZXN0LgorCitJZiBvbmUgaXMgbG9va2luZyB0byBtZWFzdXJlIHRoZSBhZGRlZCBvdmVyaGVhZCBvZiBhIHZpcnR1YWxpemF0aW9uCittZWNoYW5pc20sIHJhdGhlciB0aGFuIHJlbHkgb24gQ1BVIHV0aWxpemF0aW9uLCBvbmUgY2FuIHJlbHkgaW5zdGVhZAorb24gbmV0cGVyZiBfUlIgdGVzdHMgLSBwYXRoLWxlbmd0aHMgYW5kIG92ZXJoZWFkcyBjYW4gYmUgYSBzaWduaWZpY2FudAorZnJhY3Rpb24gb2YgdGhlIGxhdGVuY3ksIHNvIGluY3JlYXNlcyBpbiBvdmVyaGVhZCBzaG91bGQgYXBwZWFyIGFzCitkZWNyZWFzZXMgaW4gdHJhbnNhY3Rpb24gcmF0ZS4gIFdoYXRldmVyIHlvdSBkbywgQGJ7RE8gTk9UfSByZWx5IG9uCit0aGUgdGhyb3VnaHB1dCBvZiBhIF9TVFJFQU0gdGVzdC4gIEFjaGlldmluZyBsaW5rLXJhdGUgY2FuIGJlIGRvbmUgdmlhCithIG11bHRpdHVkZSBvZiBvcHRpb25zIHRoYXQgbWFzayBvdmVyaGVhZCByYXRoZXIgdGhhbiBlbGltaW5hdGUgaXQuCisKK0Bub2RlIEdsb2JhbCBDb21tYW5kLWxpbmUgT3B0aW9ucywgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEJ1bGsgRGF0YSBUcmFuc2ZlciwgVGhlIERlc2lnbiBvZiBOZXRwZXJmLCBUb3AKK0BjaGFwdGVyIEdsb2JhbCBDb21tYW5kLWxpbmUgT3B0aW9ucworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGVhY2ggb2YgdGhlIGdsb2JhbCBjb21tYW5kLWxpbmUgb3B0aW9ucworYXZhaWxhYmxlIGluIHRoZSBuZXRwZXJmIGFuZCBuZXRzZXJ2ZXIgYmluYXJpZXMuICBFc3NlbnRpYWxseSwgaXQgaXMKK2FuIGV4cGFuZGVkIHZlcnNpb24gb2YgdGhlIHVzYWdlIGluZm9ybWF0aW9uIGRpc3BsYXllZCBieSBuZXRwZXJmIG9yCituZXRzZXJ2ZXIgd2hlbiBpbnZva2VkIHdpdGggdGhlIEBvcHRpb257LWh9IGdsb2JhbCBjb21tYW5kLWxpbmUKK29wdGlvbi4KKworQG1lbnUKKyogQ29tbWFuZC1saW5lIE9wdGlvbnMgU3ludGF4OjogIAorKiBHbG9iYWwgT3B0aW9uczo6ICAgICAgICAgICAgICAKK0BlbmQgbWVudQorCitAbm9kZSBDb21tYW5kLWxpbmUgT3B0aW9ucyBTeW50YXgsIEdsb2JhbCBPcHRpb25zLCBHbG9iYWwgQ29tbWFuZC1saW5lIE9wdGlvbnMsIEdsb2JhbCBDb21tYW5kLWxpbmUgT3B0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc2VjdGlvbiBDb21tYW5kLWxpbmUgT3B0aW9ucyBTeW50YXgKKworUmV2aXNpb24gMS44IG9mIG5ldHBlcmYgaW50cm9kdWNlZCBlbm91Z2ggbmV3IGZ1bmN0aW9uYWxpdHkgdG8gb3ZlcnJ1bgordGhlIEVuZ2xpc2ggYWxwaGFiZXQgZm9yIG1uZW1vbmljIGNvbW1hbmQtbGluZSBvcHRpb24gbmFtZXMsIGFuZCB0aGUKK2F1dGhvciB3YXMgbm90IGFuZCBpcyBub3QgcXVpdGUgcmVhZHkgdG8gc3dpdGNoIHRvIHRoZSBjb250ZW1wb3JhcnkKK0BvcHRpb257LS1tdW1ibGV9IHN0eWxlIG9mIGNvbW1hbmQtbGluZSBvcHRpb25zLiAoQ2FsbCBoaW0gYSBMdWRkaXRlCitpZiB5b3Ugd2lzaCA6KS4KKworRm9yIHRoaXMgcmVhc29uLCB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgd2VyZSBzcGxpdCBpbnRvIHR3byBwYXJ0cyAtCit0aGUgZmlyc3QgYXJlIHRoZSBnbG9iYWwgY29tbWFuZC1saW5lIG9wdGlvbnMuICBUaGV5IGFyZSBvcHRpb25zIHRoYXQKK2FmZmVjdCBuZWFybHkgYW55IGFuZCBldmVyeSB0ZXN0IHR5cGUgb2YgbmV0cGVyZi4gIFRoZSBzZWNvbmQgdHlwZSBhcmUKK3RoZSB0ZXN0LXNwZWNpZmljIGNvbW1hbmQtbGluZSBvcHRpb25zLiAgQm90aCBhcmUgZW50ZXJlZCBvbiB0aGUgc2FtZQorY29tbWFuZCBsaW5lLCBidXQgdGhleSBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG9uZSBhbm90aGVyIGJ5IGEgQGNvZGV7LS19Citmb3IgY29ycmVjdCBwYXJzaW5nLiAgR2xvYmFsIGNvbW1hbmQtbGluZSBvcHRpb25zIGNvbWUgZmlyc3QsIGZvbGxvd2VkCitieSB0aGUgQGNvZGV7LS19IGFuZCB0aGVuIHRlc3Qtc3BlY2lmaWMgY29tbWFuZC1saW5lIG9wdGlvbnMuICBJZiB0aGVyZQorYXJlIG5vIHRlc3Qtc3BlY2lmaWMgb3B0aW9ucyB0byBiZSBzZXQsIHRoZSBAY29kZXstLX0gbWF5IGJlIG9taXR0ZWQuICBJZgordGhlcmUgYXJlIG5vIGdsb2JhbCBjb21tYW5kLWxpbmUgb3B0aW9ucyB0byBiZSBzZXQsIHRlc3Qtc3BlY2lmaWMKK29wdGlvbnMgbXVzdCBzdGlsbCBiZSBwcmVjZWRlZCBieSBhIEBjb2Rley0tfS4gIEZvciBleGFtcGxlOgorQGV4YW1wbGUKK25ldHBlcmYgPGdsb2JhbD4gLS0gPHRlc3Qtc3BlY2lmaWM+CitAZW5kIGV4YW1wbGUKK3NldHMgYm90aCBnbG9iYWwgYW5kIHRlc3Qtc3BlY2lmaWMgb3B0aW9uczoKK0BleGFtcGxlCituZXRwZXJmIDxnbG9iYWw+CitAZW5kIGV4YW1wbGUKK3NldHMganVzdCBnbG9iYWwgb3B0aW9ucyBhbmQ6CitAZXhhbXBsZQorbmV0cGVyZiAtLSA8dGVzdC1zcGVjaWZpYz4KK0BlbmQgZXhhbXBsZQorc2V0cyBqdXN0IHRlc3Qtc3BlY2lmaWMgb3B0aW9ucy4KKworQG5vZGUgR2xvYmFsIE9wdGlvbnMsICAsIENvbW1hbmQtbGluZSBPcHRpb25zIFN5bnRheCwgR2xvYmFsIENvbW1hbmQtbGluZSBPcHRpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIEdsb2JhbCBPcHRpb25zCisKK0B0YWJsZSBAY29kZQorQHZpbmRleCAtYSwgR2xvYmFsCitAaXRlbSAtYSA8c2l6ZXNwZWM+CitUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGFsdGVyIHRoZSBhbGlnbm1lbnQgb2YgdGhlIGJ1ZmZlcnMgdXNlZCBpbgordGhlIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBjYWxscyBvbiB0aGUgbG9jYWwgc3lzdGVtLi4gQ2hhbmdpbmcgdGhlCithbGlnbm1lbnQgb2YgdGhlIGJ1ZmZlcnMgY2FuIGZvcmNlIHRoZSBzeXN0ZW0gdG8gdXNlIGRpZmZlcmVudCBjb3B5CitzY2hlbWVzLCB3aGljaCBjYW4gaGF2ZSBhIG1lYXN1cmFibGUgZWZmZWN0IG9uIHBlcmZvcm1hbmNlLiAgSWYgdGhlCitwYWdlIHNpemUgZm9yIHRoZSBzeXN0ZW0gd2VyZSA0MDk2IGJ5dGVzLCBhbmQgeW91IHdhbnQgdG8gcGFzcworcGFnZS1hbGlnbmVkIGJ1ZmZlcnMgYmVnaW5uaW5nIG9uIHBhZ2UgYm91bmRhcmllcywgeW91IGNvdWxkIHVzZQorQHNhbXB7LWEgNDA5Nn0uICBCeSBkZWZhdWx0IHRoZSB1bml0cyBhcmUgYnl0ZXMsIGJ1dCBzdWZmaXggb2YgYGBHLCcnCitgYE0sJycgb3IgYGBLJycgd2lsbCBzcGVjaWZ5IHRoZSB1bml0cyB0byBiZSAyXjMwIChHQiksIDJeMjAgKE1CKSBvcgorMl4xMCAoS0IpIHJlc3BlY3RpdmVseS4gQSBzdWZmaXggb2YgYGBnLCcnIGBgbScnIG9yIGBgaycnIHdpbGwgc3BlY2lmeQordW5pdHMgb2YgMTBeOSwgMTBeNiBvciAxMF4zIGJ5dGVzIHJlc3BlY3RpdmVseS4gW0RlZmF1bHQ6IDggYnl0ZXNdCisKK0B2aW5kZXggLUEsIEdsb2JhbAorQGl0ZW0gLUEgPHNpemVzcGVjPgorVGhpcyBvcHRpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSBAb3B0aW9uey1hfSBvcHRpb24gd2l0aCB0aGUgZGlmZmVyZW5jZQorYmVpbmcgaXQgYWZmZWN0cyBhbGlnbm1lbnRzIGZvciB0aGUgcmVtb3RlIHN5c3RlbS4KKworQHZpbmRleCAtYiwgR2xvYmFsCitAaXRlbSAtYiA8c2l6ZT4KK1RoaXMgb3B0aW9uIGlzIG9ubHkgcHJlc2VudCB3aGVuIG5ldHBlcmYgaGFzIGJlZW4gY29uZmlndXJlIHdpdGgKKy0tZW5hYmxlLWludGVydmFscz15ZXMgcHJpb3IgdG8gY29tcGlsYXRpb24uICBJdCBzZXRzIHRoZSBzaXplIG9mIHRoZQorYnVyc3Qgb2Ygc2VuZCBjYWxscyBpbiBhIF9TVFJFQU0gdGVzdC4gIFdoZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCit0aGUgQG9wdGlvbnstd30gb3B0aW9uIGl0IGNhbiBjYXVzZSB0aGUgcmF0ZSBhdCB3aGljaCBkYXRhIGlzIHNlbnQgdG8KK2JlIGBgcGFjZWQuJycKKworQHZpbmRleCAtQiwgR2xvYmFsCitAaXRlbSAtQiA8c3RyaW5nPgorVGhpcyBvcHRpb24gd2lsbCBjYXVzZSBAb3B0aW9uezxzdHJpbmc+fSB0byBiZSBhcHBlbmRlZCB0byB0aGUgYnJpZWYKKyhzZWUgLVApIG91dHB1dCBvZiBuZXRwZXJmLgorCitAdmluZGV4IC1jLCBHbG9iYWwKK0BpdGVtIC1jIFtyYXRlXQorVGhpcyBvcHRpb24gd2lsbCBhc2sgdGhhdCBDUFUgdXRpbGl6YXRpb24gYW5kIHNlcnZpY2UgZGVtYW5kIGJlCitjYWxjdWxhdGVkIGZvciB0aGUgbG9jYWwgc3lzdGVtLiAgRm9yIHRob3NlIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc21zCityZXF1aXJpbmcgY2FsaWJyYXRpb24sIHRoZSBvcHRpb25zIHJhdGUgcGFyYW1ldGVyIG1heSBiZSBzcGVjaWZpZWQgdG8KK3ByZWNsdWRlIHJ1bm5pbmcgYW5vdGhlciBjYWxpYnJhdGlvbiBzdGVwLCBzYXZpbmcgNDAgc2Vjb25kcyBvZiB0aW1lLgorRm9yIHRob3NlIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc21zIHJlcXVpcmluZyBubyBjYWxpYnJhdGlvbiwgdGhlCitvcHRpb25hbCByYXRlIHBhcmFtZXRlciB3aWxsIGJlIHV0dGVybHkgYW5kIGNvbXBsZXRlbHkgaWdub3JlZC4KK1tEZWZhdWx0OiBubyBDUFUgbWVhc3VyZW1lbnRzXQorCitAdmluZGV4IC1DLCBHbG9iYWwKK0BpdGVtIC1DIFtyYXRlXQorVGhpcyBvcHRpb24gcmVxdWVzdHMgQ1BVIHV0aWxpemF0aW9uIGFuZCBzZXJ2aWNlIGRlbWFuZCBjYWxjdWxhdGlvbnMKK2ZvciB0aGUgcmVtb3RlIHN5c3RlbS4gIEl0IGlzIG90aGVyd2lzZSBpZGVudGljYWwgdG8gdGhlIEBvcHRpb257LWN9CitvcHRpb24uCisKK0B2aW5kZXggLWQsIEdsb2JhbAorQGl0ZW0gLWQKK0VhY2ggaW5zdGFuY2Ugb2YgdGhpcyBvcHRpb24gd2lsbCBpbmNyZWFzZSB0aGUgcXVhbnRpdHkgb2YgZGVidWdnaW5nCitvdXRwdXQgZGlzcGxheWVkIGR1cmluZyBhIHRlc3QuICBJZiB0aGUgZGVidWdnaW5nIG91dHB1dCBsZXZlbCBpcyBzZXQKK2hpZ2ggZW5vdWdoLCBpdCBtYXkgaGF2ZSBhIG1lYXN1cmFibGUgZWZmZWN0IG9uIHBlcmZvcm1hbmNlLgorRGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgbG9jYWwgc3lzdGVtIGlzIHByaW50ZWQgdG8gc3Rkb3V0LgorRGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcmVtb3RlIHN5c3RlbSBpcyBzZW50IGJ5IGRlZmF1bHQgdG8gdGhlCitmaWxlIEBmaWxley90bXAvbmV0cGVyZi5kZWJ1Z30uIFtEZWZhdWx0OiBubyBkZWJ1Z2dpbmcgb3V0cHV0XQorCitAdmluZGV4IC1ELCBHbG9iYWwKK0BpdGVtIC1EIFtpbnRlcnZhbCx1bml0c10KK1RoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gbmV0cGVyZiBpcyBjb25maWd1cmVkIHdpdGgKKy0tZW5hYmxlLWRlbW89eWVzLiAgV2hlbiBzZXQsIGl0IHdpbGwgY2F1c2UgbmV0cGVyZiB0byBlbWl0IHBlcmlvZGljCityZXBvcnRzIG9mIHBlcmZvcm1hbmNlIGR1cmluZyB0aGUgcnVuLiAgW0B2YXJ7aW50ZXJ2YWx9LEB2YXJ7dW5pdHN9XQorZm9sbG93IHRoZSBzZW1hbnRpY3Mgb2YgYW4gb3B0aW9uc3BlYy4gSWYgc3BlY2lmaWVkLAorQHZhcntpbnRlcnZhbH0gZ2l2ZXMgdGhlIG1pbmltdW0gaW50ZXJ2YWwgaW4gcmVhbCBzZWNvbmRzLCBpdCBkb2VzIG5vdAoraGF2ZSB0byBiZSB3aG9sZSBzZWNvbmRzLiAgVGhlIEB2YXJ7dW5pdHN9IHZhbHVlIGNhbiBiZSB1c2VkIGZvciB0aGUKK2ZpcnN0IGd1ZXNzIGFzIHRvIGhvdyBtYW55IHVuaXRzIG9mIHdvcmsgKGJ5dGVzIG9yIHRyYW5zYWN0aW9ucykgbXVzdAorYmUgZG9uZSB0byB0YWtlIGF0IGxlYXN0IEB2YXJ7aW50ZXJ2YWx9IHNlY29uZHMuIElmIG9taXR0ZWQsCitAdmFye2ludGVydmFsfSBkZWZhdWx0cyB0byBvbmUgc2Vjb25kIGFuZCBAdmFye3VuaXRzfSB0byB2YWx1ZXMKK3NwZWNpZmljIHRvIGVhY2ggdGVzdCB0eXBlLgorCitAdmluZGV4IC1mLCBHbG9iYWwKK0BpdGVtIC1mIEd8TXxLfGd8bXxrfHgKK1RoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGNoYW5nZSB0aGUgcmVwb3J0aW5nIHVuaXRzIGZvciBfU1RSRUFNCit0ZXN0cy4gIEFyZ3VtZW50cyBvZiBgYEcsJycgYGBNLCcnIG9yIGBgSycnIHdpbGwgc2V0IHRoZSB1bml0cyB0bworMl4zMCwgMl4yMCBvciAyXjEwIGJ5dGVzL3MgcmVzcGVjdGl2ZWx5IChFRyBwb3dlciBvZiB0d28gR0IsIE1CIG9yCitLQikuICBBcmd1bWVudHMgb2YgYGBnLCcnIGBgLG0nJyBvciBgYGsnJyB3aWxsIHNldCB0aGUgdW5pdHMgdG8gMTBeOSwKKzEwXjYgb3IgMTBeMyBiaXRzL3MgcmVzcGVjdGl2ZWx5LiAgQW4gYXJndW1lbnQgb2YgYGB4JycgcmVxdWVzdHMgdGhlCit1bml0cyBiZSB0cmFuc2FjdGlvbnMgcGVyIHNlY29uZCBhbmQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBhCityZXF1ZXN0LXJlc3BvbnNlIHRlc3QuIFtEZWZhdWx0OiBgYG0nJyBvciAxMF42IGJpdHMvc10KKworQHZpbmRleCAtRiwgR2xvYmFsCitAaXRlbSAtRiA8ZmlsbGZpbGU+CitUaGlzIG9wdGlvbiBzcGVjaWZpZWQgdGhlIGZpbGUgZnJvbSB3aGljaCBzZW5kIHdoaWNoIGJ1ZmZlcnMgd2lsbCBiZQorcHJlLWZpbGxlZCAuICBXaGlsZSB0aGUgYnVmZmVycyB3aWxsIGNvbnRhaW4gZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQKK2ZpbGUsIHRoZSBmaWxlIGlzIG5vdCBmdWxseSB0cmFuc2ZlcnJlZCB0byB0aGUgcmVtb3RlIHN5c3RlbSBhcyB0aGUKK3JlY2VpdmluZyBlbmQgb2YgdGhlIHRlc3Qgd2lsbCBub3Qgd3JpdGUgdGhlIGNvbnRlbnRzIG9mIHdoYXQgaXQKK3JlY2VpdmVzIHRvIGEgZmlsZS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJlLWZpbGwgdGhlIHNlbmQgYnVmZmVycword2l0aCBkYXRhIGhhdmluZyBkaWZmZXJlbnQgY29tcHJlc3NpYmlsaXR5IGFuZCBzbyBpcyB1c2VmdWwgd2hlbgorbWVhc3VyaW5nIHBlcmZvcm1hbmNlIG92ZXIgbWVjaGFuaXNtcyB3aGljaCBwZXJmb3JtIGNvbXByZXNzaW9uLiAKKworV2hpbGUgcHJldmlvdXNseSByZXF1aXJlZCBmb3IgYSBUQ1BfU0VOREZJTEUgdGVzdCwgbGF0ZXIgdmVyc2lvbnMgb2YKK25ldHBlcmYgcmVtb3ZlZCB0aGF0IHJlc3RyaWN0aW9uLCBjcmVhdGluZyBhIHRlbXBvcmFyeSBmaWxlIGFzCituZWVkZWQuICBXaGlsZSB0aGUgYXV0aG9yIGNhbm5vdCByZWNhbGwgZXhhY3RseSB3aGVuIHRoYXQgdG9vayBwbGFjZSwKK2l0IGlzIGtub3duIHRvIGJlIHVubmVjZXNzYXJ5IGluIHZlcnNpb24gMi41LjAgYW5kIGxhdGVyLgorCitAdmluZGV4IC1oLCBHbG9iYWwKK0BpdGVtIC1oCitUaGlzIG9wdGlvbiBjYXVzZXMgbmV0cGVyZiB0byBkaXNwbGF5IGl0cyBgYGdsb2JhbCcnIHVzYWdlIHN0cmluZyBhbmQKK2V4aXQgdG8gdGhlIGV4Y2x1c2lvbiBvZiBhbGwgZWxzZS4KKworQHZpbmRleCAtSCwgR2xvYmFsCitAaXRlbSAtSCA8b3B0aW9uc3BlYz4KK1RoaXMgb3B0aW9uIHdpbGwgc2V0IHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgc3lzdGVtIGFuZCBvciB0aGUgYWRkcmVzcworZmFtaWx5IHVzZWQgZm9yIHRoZSBjb250cm9sIGNvbm5lY3Rpb24uICBGb3IgZXhhbXBsZToKK0BleGFtcGxlCistSCBsaW5nZXIsNAorQGVuZCBleGFtcGxlCit3aWxsIHNldCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIHN5c3RlbSB0byBgYGxpbmdlcicnIGFuZCB0ZWxscyBuZXRwZXJmIHRvCit1c2UgSVB2NCBhZGRyZXNzaW5nIG9ubHkuCitAZXhhbXBsZQorLUggLDYKK0BlbmQgZXhhbXBsZQord2lsbCBsZWF2ZSB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIHN5c3RlbSBhdCBpdHMgZGVmYXVsdCwgYW5kIHJlcXVlc3QKK3RoYXQgb25seSBJUHY2IGFkZHJlc3NlcyBiZSB1c2VkIGZvciB0aGUgY29udHJvbCBjb25uZWN0aW9uLgorQGV4YW1wbGUKKy1IIGxhZworQGVuZCBleGFtcGxlCit3aWxsIHNldCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIHN5c3RlbSB0byBgYGxhZycnIGFuZCBsZWF2ZSB0aGUKK2FkZHJlc3MgZmFtaWx5IHRvIEFGX1VOU1BFQyB3aGljaCBtZWFucyBzZWxlY3Rpb24gb2YgSVB2NCB2cyBJUHY2IGlzCitsZWZ0IHRvIHRoZSBzeXN0ZW0ncyBhZGRyZXNzIHJlc29sdXRpb24uICAKKworQSB2YWx1ZSBvZiBgYGluZXQnJyBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBgYDQnJyB0byByZXF1ZXN0IElQdjQgb25seQorYWRkcmVzc2luZy4gIFNpbWlsYXJseSwgYSB2YWx1ZSBvZiBgYGluZXQ2JycgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YKK2BgNicnIHRvIHJlcXVlc3QgSVB2NiBvbmx5IGFkZHJlc3NpbmcuICBBIHZhbHVlIG9mIGBgMCcnIGNhbiBiZSB1c2VkCit0byByZXF1ZXN0IGVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2luZyBhcyBuYW1lIHJlc29sdXRpb24gZGljdGF0ZXMuCisKK0J5IGRlZmF1bHQsIHRoZSBvcHRpb25zIHNldCB3aXRoIHRoZSBnbG9iYWwgQG9wdGlvbnstSH0gb3B0aW9uIGFyZQoraW5oZXJpdGVkIGJ5IHRoZSB0ZXN0IGZvciBpdHMgZGF0YSBjb25uZWN0aW9uLCB1bmxlc3MgYSB0ZXN0LXNwZWNpZmljCitAb3B0aW9uey1IfSBvcHRpb24gaXMgc3BlY2lmaWVkLgorCitJZiBhIEBvcHRpb257LUh9IG9wdGlvbiBmb2xsb3dzIGVpdGhlciB0aGUgQG9wdGlvbnstNH0gb3IgQG9wdGlvbnstNn0KK29wdGlvbnMsIHRoZSBmYW1pbHkgc2V0dGluZyBzcGVjaWZpZWQgd2l0aCB0aGUgLUggb3B0aW9uIHdpbGwgb3ZlcnJpZGUKK3RoZSBAb3B0aW9uey00fSBvciBAb3B0aW9uey02fSBvcHRpb25zIGZvciB0aGUgcmVtb3RlIGFkZHJlc3MKK2ZhbWlseS4gSWYgbm8gYWRkcmVzcyBmYW1pbHkgaXMgc3BlY2lmaWVkLCBzZXR0aW5ncyBmcm9tIGEgcHJldmlvdXMKK0BvcHRpb257LTR9IG9yIEBvcHRpb257LTZ9IG9wdGlvbiB3aWxsIHJlbWFpbi4gIEluIGEgbnV0c2hlbGwsIHRoZQorbGFzdCBleHBsaWNpdCBnbG9iYWwgY29tbWFuZC1saW5lIG9wdGlvbiB3aW5zLgorCitbRGVmYXVsdDogIGBgbG9jYWxob3N0JycgZm9yIHRoZSByZW1vdGUgbmFtZS9JUCBhZGRyZXNzIGFuZCBgYDAnJyAoZWcKK0FGX1VOU1BFQykgZm9yIHRoZSByZW1vdGUgYWRkcmVzcyBmYW1pbHkuXQorCitAdmluZGV4IC1JLCBHbG9iYWwKK0BpdGVtIC1JIDxvcHRpb25zcGVjPgorVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgY2FsY3VsYXRpb24gb2YgY29uZmlkZW5jZSBpbnRlcnZhbHMgYW5kIHNldHMKK3RoZSBjb25maWRlbmNlIGFuZCB3aWR0aCBwYXJhbWV0ZXJzIHdpdGggdGhlIGZpcnN0IGhhbGYgb2YgdGhlCitvcHRpb25zcGVjIGJlaW5nIGVpdGhlciA5OSBvciA5NSBmb3IgOTklIG9yIDk1JSBjb25maWRlbmNlCityZXNwZWN0aXZlbHkuICBUaGUgc2Vjb25kIHZhbHVlIG9mIHRoZSBvcHRpb25zcGVjIHNwZWNpZmllcyB0aGUgd2lkdGgKK29mIHRoZSBkZXNpcmVkIGNvbmZpZGVuY2UgaW50ZXJ2YWwuICBGb3IgZXhhbXBsZQorQGV4YW1wbGUKKy1JIDk5LDUKK0BlbmQgZXhhbXBsZQorYXNrcyBuZXRwZXJmIHRvIGJlIDk5JSBjb25maWRlbnQgdGhhdCB0aGUgbWVhc3VyZWQgbWVhbiB2YWx1ZXMgZm9yCit0aHJvdWdocHV0IGFuZCBDUFUgdXRpbGl6YXRpb24gYXJlIHdpdGhpbiArLy0gMi41JSBvZiB0aGUgYGByZWFsJycKK21lYW4gdmFsdWVzLiAgSWYgdGhlIEBvcHRpb257LWl9IG9wdGlvbiBpcyBzcGVjaWZpZWQgYW5kIHRoZQorQG9wdGlvbnstSX0gb3B0aW9uIGlzIG9taXR0ZWQsIHRoZSBjb25maWRlbmNlIGRlZmF1bHRzIHRvIDk5JSBhbmQgdGhlCit3aWR0aCB0byA1JSAoZ2l2aW5nICsvLSAyLjUlKQorCitJZiBjbGFzc2ljIG5ldHBlcmYgdGVzdCBjYWxjdWxhdGVzIHRoYXQgdGhlIGRlc2lyZWQgY29uZmlkZW5jZQoraW50ZXJ2YWxzIGhhdmUgbm90IGJlZW4gbWV0LCBpdCBlbWl0cyBhIG5vdGljZWFibGUgd2FybmluZyB0aGF0IGNhbm5vdAorYmUgc3VwcHJlc3NlZCB3aXRoIHRoZSBAb3B0aW9uey1QfSBvciBAb3B0aW9uey12fSBvcHRpb25zOgorCitAZXhhbXBsZQorbmV0cGVyZiAtSCB0YXJkeS5jdXAgLWkgMyAtSSA5OSw1CitUQ1AgU1RSRUFNIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byB0YXJkeS5jdXAuaHAuY29tICgxNS4yNDQuNDQuNTgpIHBvcnQgMCBBRl9JTkVUIDogKy8tMi41JSBAIDk5JSBjb25mLgorISEhIFdBUk5JTkcKKyEhISBEZXNpcmVkIGNvbmZpZGVuY2Ugd2FzIG5vdCBhY2hpZXZlZCB3aXRoaW4gdGhlIHNwZWNpZmllZCBpdGVyYXRpb25zLgorISEhIFRoaXMgaW1wbGllcyB0aGF0IHRoZXJlIHdhcyB2YXJpYWJpbGl0eSBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCB0aGF0CishISEgbXVzdCBiZSBpbnZlc3RpZ2F0ZWQgYmVmb3JlIGdvaW5nIGZ1cnRoZXIuCishISEgQ29uZmlkZW5jZSBpbnRlcnZhbHM6IFRocm91Z2hwdXQgICAgICA6ICA2LjglCishISEgICAgICAgICAgICAgICAgICAgICAgIExvY2FsIENQVSB1dGlsICA6ICAwLjAlCishISEgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBDUFUgdXRpbCA6ICAwLjAlCisKK1JlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIAorU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgCitTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICAKK2J5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgIDEwXjZiaXRzL3NlYyAgCisKKyAzMjc2OCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAxICAgICAgNDAuMjMgICAKK0BlbmQgZXhhbXBsZQorCitJbiB0aGUgZXhhbXBsZSBhYm92ZSB3ZSBzZWUgdGhhdCBuZXRwZXJmIGRpZCBub3QgbWVldCB0aGUgZGVzaXJlZAorY29uZmlkZW5jZSBpbnRlcnZhbHMuICBJbnN0ZWFkIG9mIGJlaW5nIDk5JSBjb25maWRlbnQgaXQgd2FzIHdpdGhpbgorKy8tIDIuNSUgb2YgdGhlIHJlYWwgbWVhbiB2YWx1ZSBvZiB0aHJvdWdocHV0IGl0IGlzIG9ubHkgY29uZmlkZW50IGl0Cit3YXMgd2l0aGluICsvLTMuNCUuICBJbiB0aGlzIGV4YW1wbGUsIGluY3JlYXNpbmcgdGhlIEBvcHRpb257LWl9CitvcHRpb24gKGRlc2NyaWJlZCBiZWxvdykgYW5kL29yIGluY3JlYXNpbmcgdGhlIGl0ZXJhdGlvbiBsZW5ndGggd2l0aAordGhlIEBvcHRpb257LWx9IG9wdGlvbiBtaWdodCByZXNvbHZlIHRoZSBzaXR1YXRpb24uCisKK0luIGFuIGV4cGxpY2l0IGBgb21uaScnIHRlc3QsIGZhaWx1cmUgdG8gbWVldCB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbHMKK3dpbGwgbm90IHJlc3VsdCBpbiBuZXRwZXJmIGVtaXR0aW5nIGEgd2FybmluZy4gIFRvIHZlcmlmeSB0aGUgaGl0dGluZywKK29yIG5vdCwgb2YgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIG9uZSB3aWxsIG5lZWQgdG8gaW5jbHVkZSB0aGVtIGFzCitwYXJ0IG9mIGFuIEByZWZ7T21uaSBPdXRwdXQgU2VsZWN0aW9uLG91dHB1dCBzZWxlY3Rpb259IGluIHRoZQordGVzdC1zcGVjaWZpYyBAb3B0aW9uey1vfSwgQG9wdGlvbnstT30gb3IgQG9wdGlvbntrfSBvdXRwdXQgc2VsZWN0aW9uCitvcHRpb25zLiAgVGhlIHdhcm5pbmcgYWJvdXQgbm90IGhpdHRpbmcgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIHdpbGwKK3JlbWFpbiBpbiBhIGBgbWlncmF0ZWQnJyBjbGFzc2ljIG5ldHBlcmYgdGVzdC4KKworQHZpbmRleCAtaSwgR2xvYmFsCitAaXRlbSAtaSA8c2l6ZXNwZWM+CitUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBjYWxjdWxhdGlvbiBvZiBjb25maWRlbmNlIGludGVydmFscyBhbmQgc2V0cwordGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gcnVuIGluIGF0dGVtcHRpbmcgdG8KK2FjaGlldmUgdGhlIGRlc2lyZWQgY29uZmlkZW5jZSBpbnRlcnZhbC4gIFRoZSBmaXJzdCB2YWx1ZSBzZXRzIHRoZQorbWF4aW11bSBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW4sIHRoZSBzZWNvbmQsIHRoZSBtaW5pbXVtLiAgVGhlCittYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIGlzIHNpbGVudGx5IGNhcHBlZCBhdCAzMCBhbmQgdGhlIG1pbmltdW0KK2lzIHNpbGVudGx5IGZsb29yZWQgYXQgMy4gIE5ldHBlcmYgcmVwZWF0cyB0aGUgbWVhc3VyZW1lbnQgdGhlIG1pbmltdW0KK251bWJlciBvZiBpdGVyYXRpb25zIGFuZCBjb250aW51ZXMgdW50aWwgaXQgcmVhY2hlcyBlaXRoZXIgdGhlCitkZXNpcmVkIGNvbmZpZGVuY2UgaW50ZXJ2YWwsIG9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zLAord2hpY2hldmVyIGNvbWVzIGZpcnN0LiAgQSBjbGFzc2ljIG9yIG1pZ3JhdGVkIG5ldHBlcmYgdGVzdCB3aWxsIG5vdAorZGlzcGxheSB0aGUgYWN0dWFsIG51bWJlciBvZiBpdGVyYXRpb25zIHJ1bi4gQW4gQHJlZntUaGUgT21uaQorVGVzdHMsb21uaSB0ZXN0fSB3aWxsIGVtaXQgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHJ1biBpZiB0aGUKK0Bjb2Rle0NPTkZJREVOQ0VfSVRFUkFUSU9OfSBvdXRwdXQgc2VsZWN0b3IgaXMgaW5jbHVkZWQgaW4gdGhlCitAcmVme09tbmkgT3V0cHV0IFNlbGVjdGlvbixvdXRwdXQgc2VsZWN0aW9ufS4KKworSWYgdGhlIEBvcHRpb257LUl9IG9wdGlvbiBpcyBzcGVjaWZpZWQgYW5kIHRoZSBAb3B0aW9uey1pfSBvcHRpb24KK29taXR0ZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgaXMgc2V0IHRvIDEwIGFuZCB0aGUgbWluaW11bQordG8gdGhyZWUuCisKK091dHB1dCBvZiBhIHdhcm5pbmcgdXBvbiBub3QgaGl0dGluZyB0aGUgZGVzaXJlZCBjb25maWRlbmNlIGludGVydmFscworZm9sbG93cyB0aGUgZGVzY3JpcHRpb24gcHJvdmlkZWQgZm9yIHRoZSBAb3B0aW9uey1JfSBvcHRpb24uCisKK1RoZSB0b3RhbCB0ZXN0IHRpbWUgd2lsbCBiZSBzb21ld2hlcmUgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bQorbnVtYmVyIG9mIGl0ZXJhdGlvbnMgbXVsdGlwbGllZCBieSB0aGUgdGVzdCBsZW5ndGggc3VwcGxpZWQgYnkgdGhlCitAb3B0aW9uey1sfSBvcHRpb24uCisKK0B2aW5kZXggLWosIEdsb2JhbAorQGl0ZW0gLWoKK1RoaXMgb3B0aW9uIGluc3RydWN0cyBuZXRwZXJmIHRvIGtlZXAgYWRkaXRpb25hbCB0aW1pbmcgc3RhdGlzdGljcword2hlbiBleHBsaWNpdGx5IHJ1bm5pbmcgYW4gQHJlZntUaGUgT21uaSBUZXN0cyxvbW5pIHRlc3R9LiAgVGhlc2UgY2FuCitiZSBvdXRwdXQgd2hlbiB0aGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1vfSwgQG9wdGlvbnstT30gb3IKK0BvcHRpb257LWt9IEByZWZ7T21uaSBPdXRwdXQgU2VsZWN0b3JzLG91dHB1dCBzZWxlY3RvcnN9IGluY2x1ZGUgb25lCitvciBtb3JlIG9mOgorCitAaXRlbWl6ZQorQGl0ZW0gTUlOX0xBVEVOQ1kKK0BpdGVtIE1BWF9MQVRFTkNZCitAaXRlbSBQNTBfTEFURU5DWQorQGl0ZW0gUDkwX0xBVEVOQ1kKK0BpdGVtIFA5OV9MQVRFTkNZCitAaXRlbSBNRUFOX0xBVEVOQ1kKK0BpdGVtIFNURERFVl9MQVRFTkNZCitAZW5kIGl0ZW1pemUKKworVGhlc2Ugc3RhdGlzdGljcyB3aWxsIGJlIGJhc2VkIG9uIGFuIGV4cGFuZGVkICgxMDAgYnVja2V0cyBwZXIgcm93CityYXRoZXIgdGhhbiAxMCkgaGlzdG9ncmFtIG9mIHRpbWVzIHJhdGhlciB0aGFuIGEgdGVycmlibHkgbG9uZyBsaXN0IG9mCitpbmRpdmlkdWFsIHRpbWVzLiAgQXMgc3VjaCwgdGhlcmUgd2lsbCBiZSBzb21lIHNsaWdodCBlcnJvciB0aGFua3MgdG8KK3RoZSBidWNrZXRpbmcuIEhvd2V2ZXIsIHRoZSByZWR1Y3Rpb24gaW4gc3RvcmFnZSBhbmQgcHJvY2Vzc2luZworb3ZlcmhlYWRzIGlzIHdlbGwgd29ydGggaXQuICBXaGVuIHJ1bm5pbmcgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIG9uZQorbWlnaHQgZ2V0IHNvbWUgaWRlYSBvZiB0aGUgZXJyb3IgYnkgY29tcGFyaW5nIHRoZSBAcmVme09tbmkgT3V0cHV0CitTZWxlY3RvcnMsQGNvZGV7TUVBTl9MQVRFTkNZfX0gY2FsY3VsYXRlZCBmcm9tIHRoZSBoaXN0b2dyYW0gd2l0aCB0aGUKK0Bjb2Rle1JUX0xBVEVOQ1l9IGNhbGN1bGF0ZWQgZnJvbSB0aGUgbnVtYmVyIG9mIHJlcXVlc3QvcmVzcG9uc2UKK3RyYW5zYWN0aW9ucyBhbmQgdGhlIHRlc3QgcnVuIHRpbWUuCisKK0luIHRoZSBjYXNlIG9mIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0IHRoZSBsYXRlbmNpZXMgd2lsbCBiZQordHJhbnNhY3Rpb24gbGF0ZW5jaWVzLiAgSW4gdGhlIGNhc2Ugb2YgYSByZWNlaXZlLW9ubHkgdGVzdCB0aGV5IHdpbGwKK2JlIHRpbWUgc3BlbnQgaW4gdGhlIHJlY2VpdmUgY2FsbC4gIEluIHRoZSBjYXNlIG9mIGEgc2VuZC1vbmx5IHRlc3QKK3RoZXkgd2lsbCBiZSB0aW1lIHNwZW50IGluIHRoZSBzZW5kIGNhbGwuIFRoZSB1bml0cyB3aWxsIGJlCittaWNyb3NlY29uZHMuIEFkZGVkIGluIG5ldHBlcmYgMi41LjAuCisKK0B2aW5kZXggLWwsIEdsb2JhbAorQGl0ZW0gLWwgdGVzdGxlbgorVGhpcyBvcHRpb24gY29udHJvbHMgdGhlIGxlbmd0aCBvZiBhbnkgQGJ7b25lfSBpdGVyYXRpb24gb2YgdGhlIHJlcXVlc3RlZAordGVzdC4gIEEgcG9zaXRpdmUgdmFsdWUgZm9yIEB2YXJ7dGVzdGxlbn0gd2lsbCBydW4gZWFjaCBpdGVyYXRpb24gb2YKK3RoZSB0ZXN0IGZvciBhdCBsZWFzdCBAdmFye3Rlc3RsZW59IHNlY29uZHMuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorQHZhcnt0ZXN0bGVufSB3aWxsIHJ1biBlYWNoIGl0ZXJhdGlvbiBmb3IgdGhlIGFic29sdXRlIHZhbHVlIG9mCitAdmFye3Rlc3RsZW59IHRyYW5zYWN0aW9ucyBmb3IgYSBfUlIgdGVzdCBvciBieXRlcyBmb3IgYSBfU1RSRUFNIHRlc3QuCitDZXJ0YWluIHRlc3RzLCBub3RhYmx5IHRob3NlIHVzaW5nIFVEUCBjYW4gb25seSBiZSB0aW1lZCwgdGhleSBjYW5ub3QKK2JlIGxpbWl0ZWQgYnkgdHJhbnNhY3Rpb24gb3IgYnl0ZSBjb3VudC4gIFRoaXMgbGltaXRhdGlvbiBtYXkgYmUKK3JlbGF4ZWQgaW4gYW4gQHJlZntUaGUgT21uaSBUZXN0cyxvbW5pfSB0ZXN0LgorCitJbiBzb21lIHNpdHVhdGlvbnMsIGluZGl2aWR1YWwgaXRlcmF0aW9ucyBvZiBhIHRlc3QgbWF5IHJ1biBmb3IgbG9uZ2VyCitmb3IgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBieSB0aGUgQG9wdGlvbnstbH0gb3B0aW9uLiAgSW4KK3BhcnRpY3VsYXIsIHRoaXMgbWF5IG9jY3VyIGZvciB0aG9zZSB0ZXN0cyB3aGVyZSB0aGUgc29ja2V0IGJ1ZmZlcgorc2l6ZShzKSBhcmUgc2lnbmlmaWNhbnRseSBsb25nZXIgdGhhbiB0aGUgYmFuZHdpZHRoWGRlbGF5IHByb2R1Y3Qgb2YKK3RoZSBsaW5rKHMpIG92ZXIgd2hpY2ggdGhlIGRhdGEgY29ubmVjdGlvbiBwYXNzZXMsIG9yIHRob3NlIHRlc3RzCit3aGVyZSB0aGVyZSBtYXkgYmUgbm9uLXRyaXZpYWwgbnVtYmVycyBvZiByZXRyYW5zbWlzc2lvbnMuCisKK0lmIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGFyZSBlbmFibGVkIHZpYSBlaXRoZXIgQG9wdGlvbnstSX0gb3IKK0BvcHRpb257LWl9IHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIG5ldHBlcmYgdGVzdCB3aWxsIGJlIHNvbWV3aGVyZQorYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBpdGVyYXRpb24gY291bnQgbXVsdGlwbGllZCBieQorQHZhcnt0ZXN0bGVufS4KKworQHZpbmRleCAtTCwgR2xvYmFsCitAaXRlbSAtTCA8b3B0aW9uc3BlYz4KK1RoaXMgb3B0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgQG9wdGlvbnstSH0gb3B0aW9uIHdpdGggdGhlIGRpZmZlcmVuY2UKK2JlaW5nIGl0IHNldHMgdGhlIF9sb2NhbF8gaG9zdG5hbWUvSVAgYW5kL29yIGFkZHJlc3MgZmFtaWx5CitpbmZvcm1hdGlvbi4gIFRoaXMgb3B0aW9uIGlzIGdlbmVyYWxseSB1bm5lY2Vzc2FyeSwgYnV0IGNhbiBiZSB1c2VmdWwKK3doZW4geW91IHdpc2ggdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldHBlcmYgY29udHJvbCBhbmQgZGF0YQorY29ubmVjdGlvbnMgZ28gdmlhIGRpZmZlcmVudCBwYXRocy4gIEl0IGNhbiBhbHNvIGNvbWUtaW4gaGFuZHkgaWYgb25lCitpcyB0cnlpbmcgdG8gcnVuIG5ldHBlcmYgdGhyb3VnaCB0aG9zZSBldmlsLCBlbmQtdG8tZW5kIGJyZWFraW5nCit0aGluZ3Mga25vd24gYXMgZmlyZXdhbGxzLgorCitbRGVmYXVsdDogMC4wLjAuMCAoZWcgSU5BRERSX0FOWSkgZm9yIElQdjQgYW5kIDo6MCBmb3IgSVB2NiBmb3IgdGhlCitsb2NhbCBuYW1lLiAgQUZfVU5TUEVDIGZvciB0aGUgbG9jYWwgYWRkcmVzcyBmYW1pbHkuXQorCitAdmluZGV4IC1uLCBHbG9iYWwKK0BpdGVtIC1uIG51bWNwdXMKK1RoaXMgb3B0aW9uIHRlbGxzIG5ldHBlcmYgaG93IG1hbnkgQ1BVcyBpdCBzaG91bGQgYXNzLXUtbWUgYXJlIGFjdGl2ZQorb24gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHBlcmYuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGlzIHVzZWQgZm9yIHRoZQorQHJlZntDUFUgVXRpbGl6YXRpb24sQ1BVIHV0aWxpemF0aW9ufSBhbmQgc2VydmljZSBkZW1hbmQgY2FsY3VsYXRpb25zLgorT24gY2VydGFpbiBzeXN0ZW1zLCBuZXRwZXJmIGlzIGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVJ3MKK2F1dG9tYWdpY2FsbHkuIFRoaXMgb3B0aW9uIHdpbGwgb3ZlcnJpZGUgYW55IG51bWJlciBuZXRwZXJmIG1pZ2h0IGJlCithYmxlIHRvIGRldGVybWluZSBvbiBpdHMgb3duLgorCitOb3RlIHRoYXQgdGhpcyBvcHRpb24gZG9lcyBfbm90XyBzZXQgdGhlIG51bWJlciBvZiBDUFVzIG9uIHRoZSBzeXN0ZW0KK3J1bm5pbmcgbmV0c2VydmVyLiAgV2hlbiBuZXRwZXJmL25ldHNlcnZlciBjYW5ub3QgYXV0b21hZ2ljYWxseQorZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGF0IGNhbiBvbmx5IGJlIHNldCBmb3IgbmV0c2VydmVyIHZpYSBhCituZXRzZXJ2ZXIgQG9wdGlvbnstbn0gY29tbWFuZC1saW5lIG9wdGlvbi4KKworQXMgaXQgaXMgYWxtb3N0IHVuaXZlcnNhbGx5IHBvc3NpYmxlIGZvciBuZXRwZXJmL25ldHNlcnZlciB0bworZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVcyBvbiB0aGUgc3lzdGVtIGF1dG9tYWdpY2FsbHksIDk5IHRpbWVzIG91dAorb2YgMTAgdGhpcyBvcHRpb24gc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYW5kIG1heSBiZSByZW1vdmVkIGluIGEKK2Z1dHVyZSByZWxlYXNlIG9mIG5ldHBlcmYuCisKK0B2aW5kZXggLU4sIEdsb2JhbAorQGl0ZW0gLU4KK1RoaXMgb3B0aW9uIHRlbGxzIG5ldHBlcmYgdG8gZm9yZ28gZXN0YWJsaXNoaW5nIGEgY29udHJvbAorY29ubmVjdGlvbi4gVGhpcyBtYWtlcyBpdCBpcyBwb3NzaWJsZSB0byBydW4gc29tZSBsaW1pdGVkIG5ldHBlcmYKK3Rlc3RzIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIG5ldHNlcnZlciBvbiB0aGUgcmVtb3RlIHN5c3RlbS4KKworV2l0aCB0aGlzIG9wdGlvbiBzZXQsIHRoZSB0ZXN0IHRvIGJlIHJ1biBpcyB0byBnZXQgYWxsIHRoZSBhZGRyZXNzaW5nCitpbmZvcm1hdGlvbiBpdCBuZWVkcyB0byBlc3RhYmxpc2ggaXRzIGRhdGEgY29ubmVjdGlvbiBmcm9tIHRoZSBjb21tYW5kCitsaW5lIG9yIGludGVybmFsIGRlZmF1bHRzLiAgSWYgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQgYnkKK3Rlc3Qtc3BlY2lmaWMgY29tbWFuZCBsaW5lIG9wdGlvbnMsIHRoZSBkYXRhIGNvbm5lY3Rpb24gZm9yIGEKK2BgU1RSRUFNJycgb3IgYGBTRU5ERklMRScnIHRlc3Qgd2lsbCBiZSB0byB0aGUgYGBkaXNjYXJkJycgcG9ydCwgYW4KK2BgUlInJyB0ZXN0IHdpbGwgYmUgdG8gdGhlIGBgZWNobycnIHBvcnQsIGFuZCBhIGBgTUVBUlRTJycgdGVzdCB3aWxsCitiZSB0byB0aGUgY2hhcmdlbiBwb3J0LiAgCisKK1RoZSByZXNwb25zZSBzaXplIG9mIGFuIGBgUlInJyB0ZXN0IHdpbGwgYmUgc2lsZW50bHkgc2V0IHRvIGJlIHRoZQorc2FtZSBhcyB0aGUgcmVxdWVzdCBzaXplLiAgT3RoZXJ3aXNlIHRoZSB0ZXN0IHdvdWxkIGhhbmcgaWYgdGhlCityZXNwb25zZSBzaXplIHdhcyBsYXJnZXIgdGhhbiB0aGUgcmVxdWVzdCBzaXplLCBvciB3b3VsZCByZXBvcnQgYW4KK2luY29ycmVjdCwgaW5mbGF0ZWQgdHJhbnNhY3Rpb24gcmF0ZSBpZiB0aGUgcmVzcG9uc2Ugc2l6ZSB3YXMgbGVzcwordGhhbiB0aGUgcmVxdWVzdCBzaXplLgorCitTaW5jZSB0aGVyZSBpcyBubyBjb250cm9sIGNvbm5lY3Rpb24gd2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGl0CitpcyBub3QgcG9zc2libGUgdG8gc2V0IGBgcmVtb3RlJycgcHJvcGVydGllcyBzdWNoIGFzIHNvY2tldCBidWZmZXIKK3NpemUgYW5kIHRoZSBsaWtlIHZpYSB0aGUgbmV0cGVyZiBjb21tYW5kIGxpbmUuIE5vciBpcyBpdCBwb3NzaWJsZSB0bworcmV0cmlldmUgc3VjaCBpbnRlcmVzdGluZyByZW1vdGUgaW5mb3JtYXRpb24gYXMgQ1BVIHV0aWxpemF0aW9uLgorVGhlc2UgaXRlbXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgdmFsdWVzIHdoaWNoIHNob3VsZCBtYWtlIGl0CitpbW1lZGlhdGVseSBvYnZpb3VzIHRoYXQgd2FzIHRoZSBjYXNlLgorCitUaGUgb25seSB3YXkgdG8gY2hhbmdlIHJlbW90ZSBjaGFyYWN0ZXJpc3RpY3Mgc3VjaCBhcyBzb2NrZXQgYnVmZmVyCitzaXplIG9yIHRvIG9idGFpbiBpbmZvcm1hdGlvbiBzdWNoIGFzIENQVSB1dGlsaXphdGlvbiBpcyB0byBlbXBsb3kKK3BsYXRmb3JtLXNwZWNpZmljIG1ldGhvZHMgb24gdGhlIHJlbW90ZSBzeXN0ZW0uICBGcmFua2x5LCBpZiBvbmUgaGFzCithY2Nlc3MgdG8gdGhlIHJlbW90ZSBzeXN0ZW0gdG8gZW1wbG95IHRob3NlIG1ldGhvZHMgb25lIGF1Z2h0IHRvIGJlCithYmxlIHRvIHJ1biBhIG5ldHNlcnZlciB0aGVyZS4gIEhvd2V2ZXIsIHRoYXQgYWJpbGl0eSBtYXkgbm90IGJlCitwcmVzZW50IGluIGNlcnRhaW4gYGBzdXBwb3J0Jycgc2l0dWF0aW9ucywgaGVuY2UgdGhlIGFkZGl0aW9uIG9mIHRoaXMKK29wdGlvbi4KKworQWRkZWQgaW4gbmV0cGVyZiAyLjQuMy4KKworQHZpbmRleCAtbywgR2xvYmFsCitAaXRlbSAtbyA8c2l6ZXNwZWM+CitUaGUgdmFsdWUocykgcGFzc2VkLWluIHdpdGggdGhpcyBvcHRpb24gd2lsbCBiZSB1c2VkIGFzIGFuIG9mZnNldAorYWRkZWQgdG8gdGhlIGFsaWdubWVudCBzcGVjaWZpZWQgd2l0aCB0aGUgQG9wdGlvbnstYX0gb3B0aW9uLiAgRm9yCitleGFtcGxlOgorQGV4YW1wbGUKKy1vIDMgLWEgNDA5NgorQGVuZCBleGFtcGxlCit3aWxsIGNhdXNlIHRoZSBidWZmZXJzIHBhc3NlZCB0byB0aGUgbG9jYWwgKG5ldHBlcmYpIHNlbmQgYW5kIHJlY2VpdmUKK2NhbGxzIHRvIGJlZ2luIHRocmVlIGJ5dGVzIHBhc3QgYW4gYWRkcmVzcyBhbGlnbmVkIHRvIDQwOTYKK2J5dGVzLiBbRGVmYXVsdDogMCBieXRlc10KKworQHZpbmRleCAtTywgR2xvYmFsCitAaXRlbSAtTyA8c2l6ZXNwZWM+CitUaGlzIG9wdGlvbiBiZWhhdmVzIGp1c3QgYXMgdGhlIEBvcHRpb257LW99IG9wdGlvbiBidXQgb24gdGhlIHJlbW90ZQorKG5ldHNlcnZlcikgc3lzdGVtIGFuZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBAb3B0aW9uey1BfQorb3B0aW9uLiBbRGVmYXVsdDogMCBieXRlc10KKworQHZpbmRleCAtcCwgR2xvYmFsCitAaXRlbSAtcCA8b3B0aW9uc3BlYz4KK1RoZSBmaXJzdCB2YWx1ZSBvZiB0aGUgb3B0aW9uc3BlYyBwYXNzZWQtaW4gd2l0aCB0aGlzIG9wdGlvbiB0ZWxscworbmV0cGVyZiB0aGUgcG9ydCBudW1iZXIgYXQgd2hpY2ggaXQgc2hvdWxkIGV4cGVjdCB0aGUgcmVtb3RlIG5ldHNlcnZlcgordG8gYmUgbGlzdGVuaW5nIGZvciBjb250cm9sIGNvbm5lY3Rpb25zLiAgVGhlIHNlY29uZCB2YWx1ZSBvZiB0aGUKK29wdGlvbnNwZWMgd2lsbCByZXF1ZXN0IG5ldHBlcmYgdG8gYmluZCB0byB0aGF0IGxvY2FsIHBvcnQgbnVtYmVyCitiZWZvcmUgZXN0YWJsaXNoaW5nIHRoZSBjb250cm9sIGNvbm5lY3Rpb24uICBGb3IgZXhhbXBsZQorQGV4YW1wbGUKKy1wIDEyMzQ1CitAZW5kIGV4YW1wbGUKK3RlbGxzIG5ldHBlcmYgdGhhdCB0aGUgcmVtb3RlIG5ldHNlcnZlciBpcyBsaXN0ZW5pbmcgb24gcG9ydCAxMjM0NSBhbmQKK2xlYXZlcyBzZWxlY3Rpb24gb2YgdGhlIGxvY2FsIHBvcnQgbnVtYmVyIGZvciB0aGUgY29udHJvbCBjb25uZWN0aW9uCit1cCB0byB0aGUgbG9jYWwgVENQL0lQIHN0YWNrIHdoZXJlYXMKK0BleGFtcGxlCistcCAsMzIxMDkKK0BlbmQgZXhhbXBsZQorbGVhdmVzIHRoZSByZW1vdGUgbmV0c2VydmVyIHBvcnQgYXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgMTI4NjUgYW5kCitjYXVzZXMgbmV0cGVyZiB0byBiaW5kIHRvIHRoZSBsb2NhbCBwb3J0IG51bWJlciAzMjEwOSBiZWZvcmUKK2Nvbm5lY3RpbmcgdG8gdGhlIHJlbW90ZSBuZXRzZXJ2ZXIuCisKK0luIGdlbmVyYWwsIHNldHRpbmcgdGhlIGxvY2FsIHBvcnQgbnVtYmVyIGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gb25lCitpcyBsb29raW5nIHRvIHJ1biBuZXRwZXJmIHRocm91Z2ggdGhvc2UgZXZpbCwgZW5kLXRvLWVuZCBicmVha2luZwordGhpbmdzIGtub3duIGFzIGZpcmV3YWxscy4KKworQHZpbmRleCAtUCwgR2xvYmFsCitAaXRlbSAtUCAwfDEKK0EgdmFsdWUgb2YgYGAxJycgZm9yIHRoZSBAb3B0aW9uey1QfSBvcHRpb24gd2lsbCBlbmFibGUgZGlzcGxheSBvZgordGhlIHRlc3QgYmFubmVyLiAgQSB2YWx1ZSBvZiBgYDAnJyB3aWxsIGRpc2FibGUgZGlzcGxheSBvZiB0aGUgdGVzdAorYmFubmVyLiBPbmUgbWlnaHQgd2FudCB0byBkaXNhYmxlIGRpc3BsYXkgb2YgdGhlIHRlc3QgYmFubmVyIHdoZW4KK3J1bm5pbmcgdGhlIHNhbWUgYmFzaWMgdGVzdCB0eXBlIChlZyBUQ1BfU1RSRUFNKSBtdWx0aXBsZSB0aW1lcyBpbgorc3VjY2Vzc2lvbiB3aGVyZSB0aGUgdGVzdCBiYW5uZXJzIHdvdWxkIHRoZW4gc2ltcGx5IGJlIHJlZHVuZGFudCBhbmQKK3VubmVjZXNzYXJpbHkgY2x1dHRlciB0aGUgb3V0cHV0LiBbRGVmYXVsdDogMSAtIGRpc3BsYXkgdGVzdCBiYW5uZXJzXQorCitAdmluZGV4IC1zLCBHbG9iYWwKK0BpdGVtIC1zIDxzZWNvbmRzPgorVGhpcyBvcHRpb24gd2lsbCBjYXVzZSBuZXRwZXJmIHRvIHNsZWVwIEBzYW1wezxzZWNvbmRzPn0gYmVmb3JlCithY3R1YWxseSB0cmFuc2ZlcnJpbmcgZGF0YSBvdmVyIHRoZSBkYXRhIGNvbm5lY3Rpb24uICBUaGlzIG1heSBiZQordXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgb25lIHdpc2hlcyB0byBzdGFydCBhIGdyZWF0IG1hbnkgbmV0cGVyZgoraW5zdGFuY2VzIGFuZCBkbyBub3Qgd2FudCB0aGUgZWFybGllciBvbmVzIGFmZmVjdGluZyB0aGUgYWJpbGl0eSBvZgordGhlIGxhdGVyIG9uZXMgdG8gZ2V0IGVzdGFibGlzaGVkLgorCitBZGRlZCBzb21ld2hlcmUgYmV0d2VlbiB2ZXJzaW9ucyAyLjQuMyBhbmQgMi41LjAuCisKK0B2aW5kZXggLVMsIEdsb2JhbAorQGl0ZW0gLVMKK1RoaXMgb3B0aW9uIHdpbGwgY2F1c2UgYW4gYXR0ZW1wdCB0byBiZSBtYWRlIHRvIHNldCBTT19LRUVQQUxJVkUgb24KK3RoZSBkYXRhIHNvY2tldCBvZiBhIHRlc3QgdXNpbmcgdGhlIEJTRCBzb2NrZXRzIGludGVyZmFjZS4gIFRoZQorYXR0ZW1wdCB3aWxsIGJlIG1hZGUgb24gdGhlIG5ldHBlcmYgc2lkZSBvZiBhbGwgdGVzdHMsIGFuZCB3aWxsIGJlCittYWRlIG9uIHRoZSBuZXRzZXJ2ZXIgc2lkZSBvZiBhbiBAcmVme1RoZSBPbW5pIFRlc3RzLG9tbml9IG9yCitAcmVme01pZ3JhdGVkIFRlc3RzLG1pZ3JhdGVkfSB0ZXN0LiAgTm8gaW5kaWNhdGlvbiBvZiBmYWlsdXJlIGlzIGdpdmVuCit1bmxlc3MgZGVidWcgb3V0cHV0IGlzIGVuYWJsZWQgd2l0aCB0aGUgZ2xvYmFsIEBvcHRpb257LWR9IG9wdGlvbi4KKworQWRkZWQgaW4gdmVyc2lvbiAyLjUuMC4KKworQHZpbmRleCAtdCwgR2xvYmFsCitAaXRlbSAtdCB0ZXN0bmFtZQorVGhpcyBvcHRpb24gaXMgdXNlZCB0byB0ZWxsIG5ldHBlcmYgd2hpY2ggdGVzdCB5b3Ugd2lzaCB0byBydW4uICBBcyBvZgordGhpcyB3cml0aW5nLCB2YWxpZCB2YWx1ZXMgZm9yIEB2YXJ7dGVzdG5hbWV9IGluY2x1ZGU6CitAaXRlbWl6ZQorQGl0ZW0KK0ByZWZ7VENQX1NUUkVBTX0sIEByZWZ7VENQX01BRVJUU30sIEByZWZ7VENQX1NFTkRGSUxFfSwgQHJlZntUQ1BfUlJ9LCBAcmVme1RDUF9DUlJ9LCBAcmVme1RDUF9DQ30KK0BpdGVtCitAcmVme1VEUF9TVFJFQU19LCBAcmVme1VEUF9SUn0KK0BpdGVtCitAcmVme1hUSV9UQ1BfU1RSRUFNfSwgIEByZWZ7WFRJX1RDUF9SUn0sIEByZWZ7WFRJX1RDUF9DUlJ9LCBAcmVme1hUSV9UQ1BfQ0N9CitAaXRlbQorQHJlZntYVElfVURQX1NUUkVBTX0sIEByZWZ7WFRJX1VEUF9SUn0KK0BpdGVtCitAcmVme1NDVFBfU1RSRUFNfSwgQHJlZntTQ1RQX1JSfQorQGl0ZW0KK0ByZWZ7RExDT19TVFJFQU19LCBAcmVme0RMQ09fUlJ9LCAgQHJlZntETENMX1NUUkVBTX0sIEByZWZ7RExDTF9SUn0KK0BpdGVtCitAcmVme090aGVyIE5ldHBlcmYgVGVzdHMsTE9DX0NQVX0sIEByZWZ7T3RoZXIgTmV0cGVyZiBUZXN0cyxSRU1fQ1BVfQorQGl0ZW0KK0ByZWZ7VGhlIE9tbmkgVGVzdHMsT01OSX0KK0BlbmQgaXRlbWl6ZQorTm90IGFsbCB0ZXN0cyBhcmUgYWx3YXlzIGNvbXBpbGVkIGludG8gbmV0cGVyZi4gIEluIHBhcnRpY3VsYXIsIHRoZQorYGBYVEksJycgYGBTQ1RQLCcnIGBgVU5JWERPTUFJTiwnJyBhbmQgYGBETConJyB0ZXN0cyBhcmUgb25seSBpbmNsdWRlZCBpbgorbmV0cGVyZiB3aGVuIGNvbmZpZ3VyZWQgd2l0aAorQG9wdGlvbnstLWVuYWJsZS1beHRpfHNjdHB8dW5peGRvbWFpbnxkbHBpXT15ZXN9LgorCitOZXRwZXJmIG9ubHkgcnVucyBvbmUgdHlwZSBvZiB0ZXN0IG5vIG1hdHRlciBob3cgbWFueSBAb3B0aW9uey10fQorb3B0aW9ucyBtYXkgYmUgcHJlc2VudCBvbiB0aGUgY29tbWFuZC1saW5lLiAgVGhlIGxhc3QgQG9wdGlvbnstdH0KK2dsb2JhbCBjb21tYW5kLWxpbmUgb3B0aW9uIHdpbGwgZGV0ZXJtaW5lIHRoZSB0ZXN0IHRvIGJlCitydW4uIFtEZWZhdWx0OiBUQ1BfU1RSRUFNXQorCitAdmluZGV4IC1ULCBHbG9iYWwKK0BpdGVtIC1UIDxvcHRpb25zcGVjPgorVGhpcyBvcHRpb24gY29udHJvbHMgdGhlIENQVSwgYW5kIHByb2JhYmx5IGJ5IGV4dGVuc2lvbiBtZW1vcnksCithZmZpbml0eSBvZiBuZXRwZXJmIGFuZC9vciBuZXRzZXJ2ZXIuCitAZXhhbXBsZQorbmV0cGVyZiAtVCAxCitAZW5kIGV4YW1wbGUKK3dpbGwgYmluZCBib3RoIG5ldHBlcmYgYW5kIG5ldHNlcnZlciB0byBgYENQVSAxJycgb24gdGhlaXIgcmVzcGVjdGl2ZQorc3lzdGVtcy4KK0BleGFtcGxlCituZXRwZXJmIC1UIDEsCitAZW5kIGV4YW1wbGUKK3dpbGwgYmluZCBqdXN0IG5ldHBlcmYgdG8gYGBDUFUgMScnIGFuZCB3aWxsIGxlYXZlIG5ldHNlcnZlciB1bmJvdW5kLgorQGV4YW1wbGUKK25ldHBlcmYgLVQgLDIKK0BlbmQgZXhhbXBsZQord2lsbCBsZWF2ZSBuZXRwZXJmIHVuYm91bmQgYW5kIHdpbGwgYmluZCBuZXRzZXJ2ZXIgdG8gYGBDUFUgMi4nJworQGV4YW1wbGUKK25ldHBlcmYgLVQgMSwyCitAZW5kIGV4YW1wbGUKK3dpbGwgYmluZCBuZXRwZXJmIHRvIGBgQ1BVIDEnJyBhbmQgbmV0c2VydmVyIHRvIGBgQ1BVIDIuJycKKworVGhpcyBjYW4gYmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIGludmVzdGlnYXRpbmcgcGVyZm9ybWFuY2UgaXNzdWVzCitpbnZvbHZpbmcgd2hlcmUgcHJvY2Vzc2VzIHJ1biByZWxhdGl2ZSB0byB3aGVyZSBOSUMgaW50ZXJydXB0cyBhcmUKK3Byb2Nlc3NlZCBvciB3aGVyZSBOSUNzIGFsbG9jYXRlIHRoZWlyIERNQSBidWZmZXJzLgorCitAdmluZGV4IC12LCBHbG9iYWwKK0BpdGVtIC12IHZlcmJvc2l0eQorVGhpcyBvcHRpb24gY29udHJvbHMgaG93IHZlcmJvc2UgbmV0cGVyZiB3aWxsIGJlIGluIGl0cyBvdXRwdXQsIGFuZCBpcworb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBAb3B0aW9uey1QfSBvcHRpb24uIElmIHRoZQordmVyYm9zaXR5IGlzIHNldCB0byBhIHZhbHVlIG9mIGBgMCcnIHRoZW4gb25seSB0aGUgdGVzdCdzIFNGTSAoU2luZ2xlCitGaWd1cmUgb2YgTWVyaXQpIGlzIGRpc3BsYXllZC4gIElmIGxvY2FsIEByZWZ7Q1BVIFV0aWxpemF0aW9uLENQVQordXRpbGl6YXRpb259IGlzIHJlcXVlc3RlZCB2aWEgdGhlIEBvcHRpb257LWN9IG9wdGlvbiB0aGVuIHRoZSBTRk0gaXMKK3RoZSBsb2NhbCBzZXJ2aWNlIGRlbWFuZC4gIE90aGVyc2lzZSwgaWYgcmVtb3RlIENQVSB1dGlsaXphdGlvbiBpcworcmVxdWVzdGVkIHZpYSB0aGUgQG9wdGlvbnstQ30gb3B0aW9uIHRoZW4gdGhlIFNGTSBpcyB0aGUgcmVtb3RlCitzZXJ2aWNlIGRlbWFuZC4gIElmIG5laXRoZXIgbG9jYWwgbm9yIHJlbW90ZSBDUFUgdXRpbGl6YXRpb24gYXJlCityZXF1ZXN0ZWQgdGhlIFNGTSB3aWxsIGJlIHRoZSBtZWFzdXJlZCB0aHJvdWdocHV0IG9yIHRyYW5zYWN0aW9uIHJhdGUKK2FzIGltcGxpZWQgYnkgdGhlIHRlc3Qgc3BlY2lmaWVkIHdpdGggdGhlIEBvcHRpb257LXR9IG9wdGlvbi4KKworSWYgdGhlIHZlcmJvc2l0eSBsZXZlbCBpcyBzZXQgdG8gYGAxJycgdGhlbiB0aGUgYGBub3JtYWwnJyBuZXRwZXJmCityZXN1bHQgb3V0cHV0IGZvciBlYWNoIHRlc3QgaXMgZGlzcGxheWVkLgorCitJZiB0aGUgdmVyYm9zaXR5IGxldmVsIGlzIHNldCB0byBgYDInJyB0aGVuIGBgZXh0cmEnJyBpbmZvcm1hdGlvbiB3aWxsCitiZSBkaXNwbGF5ZWQuICBUaGlzIG1heSBpbmNsdWRlLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8gdGhlIG51bWJlciBvZgorc2VuZCBvciByZWN2IGNhbGxzIG1hZGUgYW5kIHRoZSBhdmVyYWdlIG51bWJlciBvZiBieXRlcyBwZXIgc2VuZCBvcgorcmVjdiBjYWxsLCBvciBhIGhpc3RvZ3JhbSBvZiB0aGUgdGltZSBzcGVudCBpbiBlYWNoIHNlbmQoKSBjYWxsIG9yIGZvcgorZWFjaCB0cmFuc2FjdGlvbiBpZiBuZXRwZXJmIHdhcyBjb25maWd1cmVkIHdpdGgKK0BvcHRpb257LS1lbmFibGUtaGlzdG9ncmFtPXllc30uIFtEZWZhdWx0OiAxIC0gbm9ybWFsIHZlcmJvc2l0eV0KKworSW4gYW4gQHJlZntUaGUgT21uaSBUZXN0cyxvbW5pfSB0ZXN0IHRoZSB2ZXJib3NpdHkgc2V0dGluZyBpcyBsYXJnZWx5CitpZ25vcmVkLCBzYXZlIGZvciB3aGVuIGFza2luZyBmb3IgdGhlIHRpbWUgaGlzdG9ncmFtIHRvIGJlIGRpc3BsYXllZC4KK0luIHZlcnNpb24gMi41LjAgYW5kIGxhdGVyIHRoZXJlIGlzIG5vIEByZWZ7T21uaSBPdXRwdXQgU2VsZWN0b3JzLG91dHB1dAorc2VsZWN0b3J9IGZvciB0aGUgaGlzdG9ncmFtIGFuZCBzbyBpdCByZW1haW5zIGRpc3BsYXllZCBvbmx5IHdoZW4gdGhlCit2ZXJib3NpdHkgbGV2ZWwgaXMgc2V0IHRvIDIuCisKK0B2aW5kZXggLVYsIEdsb2JhbAorQGl0ZW0gLVYKK1RoaXMgb3B0aW9uIGRpc3BsYXlzIHRoZSBuZXRwZXJmIHZlcnNpb24gYW5kIHRoZW4gZXhpdHMuCisKK0FkZGVkIGluIG5ldHBlcmYgMi40LjQuCisKK0B2aW5kZXggLXcsIEdsb2JhbAorQGl0ZW0gLXcgdGltZQorSWYgbmV0cGVyZiB3YXMgY29uZmlndXJlZCB3aXRoIEBvcHRpb257LS1lbmFibGUtaW50ZXJ2YWxzPXllc30gdGhlbgordGhpcyB2YWx1ZSB3aWxsIHNldCB0aGUgaW50ZXItYnVyc3QgdGltZSB0byB0aW1lIG1pbGxpc2Vjb25kcywgYW5kIHRoZQorQG9wdGlvbnstYn0gb3B0aW9uIHdpbGwgc2V0IHRoZSBudW1iZXIgb2Ygc2VuZHMgcGVyIGJ1cnN0LiAgVGhlIGFjdHVhbAoraW50ZXItYnVyc3QgdGltZSBtYXkgdmFyeSBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSdzIHRpbWVyIHJlc29sdXRpb24uCisKK0B2aW5kZXggLVcsIEdsb2JhbAorQGl0ZW0gLVcgPHNpemVzcGVjPgorVGhpcyBvcHRpb24gY29udHJvbHMgdGhlIG51bWJlciBvZiBidWZmZXJzIGluIHRoZSBzZW5kIChmaXJzdCBvciBvbmx5Cit2YWx1ZSkgYW5kIG9yIHJlY2VpdmUgKHNlY29uZCBvciBvbmx5IHZhbHVlKSBidWZmZXIgcmluZ3MuICBVbmxpa2UKK3NvbWUgYmVuY2htYXJrcywgbmV0cGVyZiBkb2VzIG5vdCBjb250aW51b3VzbHkgc2VuZCBvciByZWNlaXZlIGZyb20gYQorc2luZ2xlIGJ1ZmZlci4gIEluc3RlYWQgaXQgcm90YXRlcyB0aHJvdWdoIGEgcmluZyBvZgorYnVmZmVycy4gW0RlZmF1bHQ6IE9uZSBtb3JlIHRoYW4gdGhlIHNpemUgb2YgdGhlIHNlbmQgb3IgcmVjZWl2ZQorc29ja2V0IGJ1ZmZlciBzaXplcyAoQG9wdGlvbnstc30gYW5kL29yIEBvcHRpb257LVN9IG9wdGlvbnMpIGRpdmlkZWQKK2J5IHRoZSBzZW5kIEBvcHRpb257LW19IG9yIHJlY2VpdmUgQG9wdGlvbnstTX0gYnVmZmVyIHNpemUKK3Jlc3BlY3RpdmVseV0KKworQHZpbmRleCAtNCwgR2xvYmFsCitAaXRlbSAtNAorU3BlY2lmeWluZyB0aGlzIG9wdGlvbiB3aWxsIHNldCBib3RoIHRoZSBsb2NhbCBhbmQgcmVtb3RlIGFkZHJlc3MKK2ZhbWlsaWVzIHRvIEFGX0lORVQgLSB0aGF0IGlzIHVzZSBvbmx5IElQdjQgYWRkcmVzc2VzIG9uIHRoZSBjb250cm9sCitjb25uZWN0aW9uLiAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIHN1YnNlcXVlbnQgQG9wdGlvbnstNn0sCitAb3B0aW9uey1IfSBvciBAb3B0aW9uey1MfSBvcHRpb24uICBCYXNpY2FsbHksIHRoZSBsYXN0IG9wdGlvbgorZXhwbGljaXRseSBzcGVjaWZ5aW5nIGFuIGFkZHJlc3MgZmFtaWx5IHdpbnMuICBVbmxlc3Mgb3ZlcnJpZGRlbiBieSBhCit0ZXN0LXNwZWNpZmljIG9wdGlvbiwgdGhpcyB3aWxsIGJlIGluaGVyaXRlZCBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbgorYXMgd2VsbC4KKworQHZpbmRleCAtNiwgR2xvYmFsCitAaXRlbSAtNgorU3BlY2lmeWluZyB0aGlzIG9wdGlvbiB3aWxsIHNldCBib3RoIGxvY2FsIGFuZCBhbmQgcmVtb3RlIGFkZHJlc3MKK2ZhbWlsaWVzIHRvIEFGX0lORVQ2IC0gdGhhdCBpcyB1c2Ugb25seSBJUHY2IGFkZHJlc3NlcyBvbiB0aGUgY29udHJvbAorY29ubmVjdGlvbi4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBzdWJzZXF1ZW50IEBvcHRpb257LTR9LAorQG9wdGlvbnstSH0gb3IgQG9wdGlvbnstTH0gb3B0aW9uLiAgQmFzaWNhbGx5LCB0aGUgbGFzdCBhZGRyZXNzIGZhbWlseQorZXhwbGljaXRseSBzcGVjaWZpZWQgd2lucy4gIFVubGVzcyBvdmVycmlkZGVuIGJ5IGEgdGVzdC1zcGVjaWZpYworb3B0aW9uLCB0aGlzIHdpbGwgYmUgaW5oZXJpdGVkIGZvciB0aGUgZGF0YSBjb25uZWN0aW9uIGFzIHdlbGwuCisKK0BlbmQgdGFibGUKKworCitAbm9kZSBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQnVsayBEYXRhIFRyYW5zZmVyLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgUmVxdWVzdC9SZXNwb25zZSAsIEdsb2JhbCBDb21tYW5kLWxpbmUgT3B0aW9ucywgVG9wCitAY2hhcHRlciBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQnVsayBEYXRhIFRyYW5zZmVyCisKK1RoZSBtb3N0IGNvbW1vbmx5IG1lYXN1cmVkIGFzcGVjdCBvZiBuZXR3b3JrZWQgc3lzdGVtIHBlcmZvcm1hbmNlIGlzCit0aGF0IG9mIGJ1bGsgb3IgdW5pZGlyZWN0aW9uYWwgdHJhbnNmZXIgcGVyZm9ybWFuY2UuICBFdmVyeW9uZSB3YW50cwordG8ga25vdyBob3cgbWFueSBiaXRzIG9yIGJ5dGVzIHBlciBzZWNvbmQgdGhleSBjYW4gcHVzaCBhY3Jvc3MgdGhlCituZXR3b3JrLiBUaGUgY2xhc3NpYyBuZXRwZXJmIGNvbnZlbnRpb24gZm9yIGEgYnVsayBkYXRhIHRyYW5zZmVyIHRlc3QKK25hbWUgaXMgdG8gdGFjayBhIGBgX1NUUkVBTScnIHN1ZmZpeCB0byBhIHRlc3QgbmFtZS4KKworQG1lbnUKKyogSXNzdWVzIGluIEJ1bGsgVHJhbnNmZXI6OiAgICAgCisqIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHM6OiAgCitAZW5kIG1lbnUKKworQG5vZGUgSXNzdWVzIGluIEJ1bGsgVHJhbnNmZXIsIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMsIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBCdWxrIERhdGEgVHJhbnNmZXIsIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBCdWxrIERhdGEgVHJhbnNmZXIKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHNlY3Rpb24gSXNzdWVzIGluIEJ1bGsgVHJhbnNmZXIKKworVGhlcmUgYXJlIGFueSBudW1iZXIgb2YgdGhpbmdzIHdoaWNoIGNhbiBhZmZlY3QgdGhlIHBlcmZvcm1hbmNlIG9mIGEKK2J1bGsgdHJhbnNmZXIgdGVzdC4gIAorCitDZXJ0YWlubHksIGFic2VudCBjb21wcmVzc2lvbiwgYnVsay10cmFuc2ZlciB0ZXN0cyBjYW4gYmUgbGltaXRlZCBieQordGhlIHNwZWVkIG9mIHRoZSBzbG93ZXN0IGxpbmsgaW4gdGhlIHBhdGggZnJvbSB0aGUgc291cmNlIHRvIHRoZQorZGVzdGluYXRpb24uICBJZiB0ZXN0aW5nIG92ZXIgYSBnaWdhYml0IGxpbmssIHlvdSB3aWxsIG5vdCBzZWUgbW9yZQordGhhbiBhIGdpZ2FiaXQgOikgU3VjaCBzaXR1YXRpb25zIGNhbiBiZSBkZXNjcmliZWQgYXMgYmVpbmcKK0BkZm57bmV0d29yay1saW1pdGVkfSBvciBAZGZue05JQy1saW1pdGVkfS4KKworQ1BVIHV0aWxpemF0aW9uIGNhbiBhbHNvIGFmZmVjdCB0aGUgcmVzdWx0cyBvZiBhIGJ1bGstdHJhbnNmZXIgdGVzdC4KK0lmIHRoZSBuZXR3b3JraW5nIHN0YWNrIHJlcXVpcmVzIGEgY2VydGFpbiBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIG9yCitDUFUgY3ljbGVzIHBlciBLQiBvZiBkYXRhIHRyYW5zZmVycmVkLCBhbmQgdGhlIENQVSBpcyBsaW1pdGVkIGluIHRoZQorbnVtYmVyIG9mIGluc3RydWN0aW9ucyBvciBjeWNsZXMgaXQgY2FuIHByb3ZpZGUsIHRoZW4gdGhlIHRyYW5zZmVyIGNhbgorYmUgZGVzY3JpYmVkIGFzIGJlaW5nIEBkZm57Q1BVLWJvdW5kfS4gIAorCitBIGJ1bGstdHJhbnNmZXIgdGVzdCBjYW4gYmUgQ1BVIGJvdW5kIGV2ZW4gd2hlbiBuZXRwZXJmIHJlcG9ydHMgbGVzcwordGhhbiAxMDAlIENQVSB1dGlsaXphdGlvbi4gIFRoaXMgY2FuIGhhcHBlbiBvbiBhbiBNUCBzeXN0ZW0gd2hlcmUgb25lCitvciBtb3JlIG9mIHRoZSBDUFVzIHNhdHVyYXRlIGF0IDEwMCUgYnV0IG90aGVyIENQVSdzIHJlbWFpbiBpZGxlLgorVHlwaWNhbGx5LCBhIHNpbmdsZSBmbG93IG9mIGRhdGEsIHN1Y2ggYXMgdGhhdCBmcm9tIGEgc2luZ2xlIGluc3RhbmNlCitvZiBhIG5ldHBlcmYgX1NUUkVBTSB0ZXN0IGNhbm5vdCBtYWtlIHVzZSBvZiBtdWNoIG1vcmUgdGhhbiB0aGUgcG93ZXIKK29mIG9uZSBDUFUuIEV4Y2VwdGlvbnMgdG8gdGhpcyBnZW5lcmFsbHkgb2NjdXIgd2hlbiBuZXRwZXJmIGFuZC9vcgorbmV0c2VydmVyIHJ1biBvbiBDUFUocykgb3RoZXIgdGhhbiB0aGUgQ1BVKHMpIHRha2luZyBpbnRlcnJ1cHRzIGZyb20KK3RoZSBOSUMocykuIEluIHRoYXQgY2FzZSwgb25lIG1pZ2h0IHNlZSBhcyBtdWNoIGFzIHR3byBDUFVzJyB3b3J0aCBvZgorcHJvY2Vzc2luZyBiZWluZyB1c2VkIHRvIHNlcnZpY2UgdGhlIGZsb3cgb2YgZGF0YS4KKworRGlzdGFuY2UgYW5kIHRoZSBzcGVlZC1vZi1saWdodCBjYW4gYWZmZWN0IHBlcmZvcm1hbmNlIGZvciBhCitidWxrLXRyYW5zZmVyOyBvZnRlbiB0aGlzIGNhbiBiZSBtaXRpZ2F0ZWQgYnkgdXNpbmcgbGFyZ2VyIHdpbmRvd3MuCitPbmUgY29tbW9uIGxpbWl0IHRvIHRoZSBwZXJmb3JtYW5jZSBvZiBhIHRyYW5zcG9ydCB1c2luZyB3aW5kb3ctYmFzZWQKK2Zsb3ctY29udHJvbCBpczoKK0BleGFtcGxlCitUaHJvdWdocHV0IDw9IFdpbmRvd1NpemUvUm91bmRUcmlwVGltZQorQGVuZCBleGFtcGxlCitBcyB0aGUgc2VuZGVyIGNhbiBvbmx5IGhhdmUgYSB3aW5kb3cncy13b3J0aCBvZiBkYXRhIG91dHN0YW5kaW5nIG9uCit0aGUgbmV0d29yayBhdCBhbnkgb25lIHRpbWUsIGFuZCB0aGUgc29vbmVzdCB0aGUgc2VuZGVyIGNhbiByZWNlaXZlIGEKK3dpbmRvdyB1cGRhdGUgZnJvbSB0aGUgcmVjZWl2ZXIgaXMgb25lIFJvdW5kVHJpcFRpbWUgKFJUVCkuICBUQ1AgYW5kCitTQ1RQIGFyZSBleGFtcGxlcyBvZiBzdWNoIHByb3RvY29scy4KKworUGFja2V0IGxvc3NlcyBhbmQgdGhlaXIgZWZmZWN0cyBjYW4gYmUgcGFydGljdWxhcmx5IGJhZCBmb3IKK3BlcmZvcm1hbmNlLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgaWYgdGhlIHBhY2tldCBsb3NzZXMgcmVzdWx0IGluCityZXRyYW5zbWlzc2lvbiB0aW1lb3V0cyBmb3IgdGhlIHByb3RvY29sKHMpIGludm9sdmVkLiAgQnkgdGhlIHRpbWUgYQorcmV0cmFuc21pc3Npb24gdGltZW91dCBoYXMgaGFwcGVuZWQsIHRoZSBmbG93IG9yIGNvbm5lY3Rpb24gaGFzIHNhdAoraWRsZSBmb3IgYSBjb25zaWRlcmFibGUgbGVuZ3RoIG9mIHRpbWUuCisKK09uIG1hbnkgcGxhdGZvcm1zLCBzb21lIHZhcmlhbnQgb24gdGhlIEBjb21tYW5ke25ldHN0YXR9IGNvbW1hbmQgY2FuCitiZSB1c2VkIHRvIHJldHJpZXZlIHN0YXRpc3RpY3MgYWJvdXQgcGFja2V0IGxvc3MgYW5kCityZXRyYW5zbWlzc2lvbi4gRm9yIGV4YW1wbGU6CitAZXhhbXBsZQorbmV0c3RhdCAtcCB0Y3AKK0BlbmQgZXhhbXBsZQord2lsbCByZXRyaWV2ZSBUQ1Agc3RhdGlzdGljcyBvbiB0aGUgSFAtVVggT3BlcmF0aW5nIFN5c3RlbS4gIE9uIG90aGVyCitwbGF0Zm9ybXMsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmV0cmlldmUgc3RhdGlzdGljcyBmb3IgYQorc3BlY2lmaWMgcHJvdG9jb2wgYW5kIHNvbWV0aGluZyBsaWtlOgorQGV4YW1wbGUKK25ldHN0YXQgLXMKK0BlbmQgZXhhbXBsZQord291bGQgYmUgdXNlZCBpbnN0ZWFkLgorCitNYW55IHRpbWVzLCBzdWNoIG5ldHdvcmsgc3RhdGlzdGljcyBhcmUga2VlcCBzaW5jZSB0aGUgdGltZSB0aGUgc3RhY2sKK3N0YXJ0ZWQsIGFuZCB3ZSBhcmUgb25seSByZWFsbHkgaW50ZXJlc3RlZCBpbiBzdGF0aXN0aWNzIGZyb20gd2hlbgorbmV0cGVyZiB3YXMgcnVubmluZy4gIEluIHN1Y2ggc2l0dWF0aW9ucyBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mOgorQGV4YW1wbGUKK25ldHN0YXQgLXAgdGNwID4gYmVmb3JlCituZXRwZXJmIC10IFRDUF9tdW1ibGUuLi4KK25ldHN0YXQgLXAgdGNwID4gYWZ0ZXIKK0BlbmQgZXhhbXBsZQoraXMgaW5kaWNhdGVkLiAgVGhlCitAdXJlZntmdHA6Ly9mdHAuY3VwLmhwLmNvbS9kaXN0L25ldHdvcmtpbmcvdG9vbHMvLGJlZm9yZWFmdGVyfSB1dGlsaXR5CitjYW4gYmUgdXNlZCB0byBzdWJ0cmFjdCB0aGUgc3RhdGlzdGljcyBpbiBAZmlsZXtiZWZvcmV9IGZyb20gdGhlCitzdGF0aXN0aWNzIGluIEBmaWxle2FmdGVyfToKK0BleGFtcGxlCitiZWZvcmVhZnRlciBiZWZvcmUgYWZ0ZXIgPiBkZWx0YQorQGVuZCBleGFtcGxlCithbmQgdGhlbiBvbmUgY2FuIGxvb2sgYXQgdGhlIHN0YXRpc3RpY3MgaW4gQGZpbGV7ZGVsdGF9LiAgQmVmb3JlYWZ0ZXIKK2lzIGRpc3RyaWJ1dGVkIGluIHNvdXJjZSBmb3JtIHNvIG9uZSBjYW4gY29tcGlsZSBpdCBvbiB0aGUgcGxhdGZvcm0ocykKK29mIGludGVyZXN0LiAKKworSWYgcnVubmluZyBhIHZlcnNpb24gMi41LjAgb3IgbGF0ZXIgYGBvbW5pJycgdGVzdCB1bmRlciBMaW51eCBvbmUgY2FuCitpbmNsdWRlIGVpdGhlciBvciBib3RoIG9mOgorQGl0ZW1pemUKK0BpdGVtIExPQ0FMX1RSQU5TUE9SVF9SRVRSQU5TCitAaXRlbSBSRU1PVEVfVFJBTlNQT1JUX1JFVFJBTlMKK0BlbmQgaXRlbWl6ZQorCitpbiB0aGUgdmFsdWVzIHByb3ZpZGVkIHZpYSBhIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstb30sIEBvcHRpb257LU99LAorb3IgQG9wdGlvbnsta30gb3V0cHV0IHNlbGN0aW9uIG9wdGlvbiBhbmQgbmV0cGVyZiB3aWxsIHJlcG9ydCB0aGUKK3JldHJhbnNtaXNzaW9ucyBleHBlcmllbmNlZCBvbiB0aGUgZGF0YSBjb25uZWN0aW9uLCBhcyByZXBvcnRlZCB2aWEgYQorQGNvZGV7Z2V0c29ja29wdChUQ1BfSU5GTyl9IGNhbGwuICBJZiBjb25maWRlbmNlIGludGVydmFscyBoYXZlIGJlZW4KK3JlcXVlc3RlZCB2aWEgdGhlIGdsb2JhbCBAb3B0aW9uey1JfSBvciBAb3B0aW9uey1pfSBvcHRpb25zLCB0aGUKK3JlcG9ydGVkIHZhbHVlKHMpIHdpbGwgYmUgZm9yIHRoZSBsYXN0IGl0ZXJhdGlvbi4gIElmIHRoZSB0ZXN0IGlzIG92ZXIKK2EgcHJvdG9jb2wgb3RoZXIgdGhhbiBUQ1AsIG9yIG9uIGEgcGxhdGZvcm0gb3RoZXIgdGhhbiBMaW51eCwgdGhlCityZXN1bHRzIGFyZSB1bmRlZmluZWQuCisKK1doaWxlIGl0IHdhcyB3cml0dGVuIHdpdGggSFAtVVgncyBuZXRzdGF0IGluIG1pbmQsIHRoZQorQHVyZWZ7ZnRwOi8vZnRwLmN1cC5ocC5jb20vZGlzdC9uZXR3b3JraW5nL2JyaWVmcy9hbm5vdGF0ZWRfbmV0c3RhdC50eHQsYW5ub3RhdGVkCituZXRzdGF0fSB3cml0ZXVwIG1heSBiZSBoZWxwZnVsIHdpdGggb3RoZXIgcGxhdGZvcm1zIGFzIHdlbGwuCisKK0Bub2RlIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMsICAsIElzc3VlcyBpbiBCdWxrIFRyYW5zZmVyLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQnVsayBEYXRhIFRyYW5zZmVyCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKKworTWFueSBgYHRlc3Qtc3BlY2lmaWMnJyBvcHRpb25zIGFyZSBhY3R1YWxseSBjb21tb24gYWNyb3NzIHRoZQorZGlmZmVyZW50IHRlc3RzLiAgRm9yIHRob3NlIHRlc3RzIGludm9sdmluZyBUQ1AsIFVEUCBhbmQgU0NUUCwgd2hldGhlcgordXNpbmcgdGhlIEJTRCBTb2NrZXRzIG9yIHRoZSBYVEkgaW50ZXJmYWNlIHRob3NlIGNvbW1vbiBvcHRpb25zCitpbmNsdWRlOgorCitAdGFibGUgQGNvZGUKK0B2aW5kZXggLWgsIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1oCitEaXNwbGF5IHRoZSB0ZXN0LXN1aXRlLXNwZWNpZmljIHVzYWdlIHN0cmluZyBhbmQgZXhpdC4gIEZvciBhIFRDUF8gb3IKK1VEUF8gdGVzdCB0aGlzIHdpbGwgYmUgdGhlIHVzYWdlIHN0cmluZyBmcm9tIHRoZSBzb3VyY2UgZmlsZQorbmV0dGVzdF9ic2QuYy4gIEZvciBhbiBYVElfIHRlc3QsIHRoaXMgd2lsbCBiZSB0aGUgdXNhZ2Ugc3RyaW5nIGZyb20KK3RoZSBzb3VyY2UgZmlsZSBuZXR0ZXN0X3h0aS5jLiAgRm9yIGFuIFNDVFAgdGVzdCwgdGhpcyB3aWxsIGJlIHRoZQordXNhZ2Ugc3RyaW5nIGZyb20gdGhlIHNvdXJjZSBmaWxlIG5ldHRlc3Rfc2N0cC5jLgorCitAaXRlbSAtSCA8b3B0aW9uc3BlYz4KK05vcm1hbGx5LCB0aGUgcmVtb3RlIGhvc3RuYW1lfElQIGFuZCBhZGRyZXNzIGZhbWlseSBpbmZvcm1hdGlvbiBpcworaW5oZXJpdGVkIGZyb20gdGhlIHNldHRpbmdzIGZvciB0aGUgY29udHJvbCBjb25uZWN0aW9uIChlZyBnbG9iYWwKK2NvbW1hbmQtbGluZSBAb3B0aW9uey1IfSwgQG9wdGlvbnstNH0gYW5kL29yIEBvcHRpb257LTZ9IG9wdGlvbnMpLgorVGhlIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstSH0gd2lsbCBvdmVycmlkZSB0aG9zZSBzZXR0aW5ncyBmb3IgdGhlCitkYXRhIChha2EgdGVzdCkgY29ubmVjdGlvbiBvbmx5LiAgU2V0dGluZ3MgZm9yIHRoZSBjb250cm9sIGNvbm5lY3Rpb24KK2FyZSBsZWZ0IHVuY2hhbmdlZC4KKworQHZpbmRleCAtTCwgVGVzdC1zcGVjaWZpYworQGl0ZW0gLUwgPG9wdGlvbnNwZWM+CitUaGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1MfSBvcHRpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSB0ZXN0LXNwZWNpZmljCitAb3B0aW9uey1IfSBvcHRpb24gZXhjZXB0IGl0IGFmZmVjdHMgdGhlIGxvY2FsIGhvc3RuYW1lfElQIGFuZCBhZGRyZXNzCitmYW1pbHkgaW5mb3JtYXRpb24uICBBcyB3aXRoIGl0cyBnbG9iYWwgY29tbWFuZC1saW5lIGNvdW50ZXJwYXJ0LCB0aGlzCitpcyBnZW5lcmFsbHkgb25seSB1c2VmdWwgd2hlbiBtZWFzdXJpbmcgdGhvdWdoIHRob3NlIGV2aWwsIGVuZC10by1lbmQKK2JyZWFraW5nIHRoaW5ncyBjYWxsZWQgZmlyZXdhbGxzLgorCitAdmluZGV4IC1tLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtbSBieXRlcworU2V0IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcGFzc2VkLWluIHRvIHRoZSBgYHNlbmQnJyBjYWxscyBvZiBhCitfU1RSRUFNIHRlc3QuICBOb3RlIHRoYXQgdGhpcyBtYXkgaGF2ZSBvbmx5IGFuIGluZGlyZWN0IGVmZmVjdCBvbiB0aGUKK3NpemUgb2YgdGhlIHBhY2tldHMgc2VudCBvdmVyIHRoZSBuZXR3b3JrLCBhbmQgY2VydGFpbiBMYXllciA0Citwcm90b2NvbHMgZG8gX25vdF8gcHJlc2VydmUgb3IgZW5mb3JjZSBtZXNzYWdlIGJvdW5kYXJpZXMsIHNvIHNldHRpbmcKK0BvcHRpb257LW19IGZvciB0aGUgc2VuZCBzaXplIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhlIHJlY2VpdmVyCit3aWxsIHJlY2VpdmUgdGhhdCBtYW55IGJ5dGVzIGF0IGFueSBvbmUgdGltZS4gQnkgZGVmYXVsdCB0aGUgdW5pdHMgYXJlCitieXRlcywgYnV0IHN1ZmZpeCBvZiBgYEcsJycgYGBNLCcnIG9yIGBgSycnIHdpbGwgc3BlY2lmeSB0aGUgdW5pdHMgdG8KK2JlIDJeMzAgKEdCKSwgMl4yMCAoTUIpIG9yIDJeMTAgKEtCKSByZXNwZWN0aXZlbHkuIEEgc3VmZml4IG9mIGBgZywnJworYGBtJycgb3IgYGBrJycgd2lsbCBzcGVjaWZ5IHVuaXRzIG9mIDEwXjksIDEwXjYgb3IgMTBeMyBieXRlcworcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZToKK0BleGFtcGxlCitAY29kZXstbSAzMkt9CitAZW5kIGV4YW1wbGUKK3dpbGwgc2V0IHRoZSBzaXplIHRvIDMyS0Igb3IgMzI3NjggYnl0ZXMuIFtEZWZhdWx0OiB0aGUgbG9jYWwgc2VuZAorc29ja2V0IGJ1ZmZlciBzaXplIGZvciB0aGUgY29ubmVjdGlvbiAtIGVpdGhlciB0aGUgc3lzdGVtJ3MgZGVmYXVsdCBvcgordGhlIHZhbHVlIHNldCB2aWEgdGhlIEBvcHRpb257LXN9IG9wdGlvbi5dCisKK0B2aW5kZXggLU0sIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1NIGJ5dGVzCitTZXQgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwYXNzZWQtaW4gdG8gdGhlIGBgcmVjdicnIGNhbGxzIG9mIGEKK19TVFJFQU0gdGVzdC4gIFRoaXMgd2lsbCBiZSBhbiB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGJ5dGVzCityZWNlaXZlZCBwZXIgcmVjZWl2ZSBjYWxsLiBCeSBkZWZhdWx0IHRoZSB1bml0cyBhcmUgYnl0ZXMsIGJ1dCBzdWZmaXgKK29mIGBgRywnJyBgYE0sJycgb3IgYGBLJycgd2lsbCBzcGVjaWZ5IHRoZSB1bml0cyB0byBiZSAyXjMwIChHQiksIDJeMjAKKyhNQikgb3IgMl4xMCAoS0IpIHJlc3BlY3RpdmVseS4gIEEgc3VmZml4IG9mIGBgZywnJyBgYG0nJyBvciBgYGsnJword2lsbCBzcGVjaWZ5IHVuaXRzIG9mIDEwXjksIDEwXjYgb3IgMTBeMyBieXRlcyByZXNwZWN0aXZlbHkuIEZvcgorZXhhbXBsZToKK0BleGFtcGxlCitAY29kZXstTSAzMkt9CitAZW5kIGV4YW1wbGUKK3dpbGwgc2V0IHRoZSBzaXplIHRvIDMyS0Igb3IgMzI3NjggYnl0ZXMuIFtEZWZhdWx0OiB0aGUgcmVtb3RlIHJlY2VpdmUKK3NvY2tldCBidWZmZXIgc2l6ZSBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiAtIGVpdGhlciB0aGUgc3lzdGVtJ3MKK2RlZmF1bHQgb3IgdGhlIHZhbHVlIHNldCB2aWEgdGhlIEBvcHRpb257LVN9IG9wdGlvbi5dCisKK0B2aW5kZXggLVAsIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1QIDxvcHRpb25zcGVjPgorU2V0IHRoZSBsb2NhbCBhbmQvb3IgcmVtb3RlIHBvcnQgbnVtYmVycyBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbi4KKworQHZpbmRleCAtcywgVGVzdC1zcGVjaWZpYworQGl0ZW0gLXMgPHNpemVzcGVjPgorVGhpcyBvcHRpb24gc2V0cyB0aGUgbG9jYWwgKG5ldHBlcmYpIHNlbmQgYW5kIHJlY2VpdmUgc29ja2V0IGJ1ZmZlcgorc2l6ZXMgZm9yIHRoZSBkYXRhIGNvbm5lY3Rpb24gdG8gdGhlIHZhbHVlKHMpIHNwZWNpZmllZC4gIE9mdGVuLCB0aGlzCit3aWxsIGFmZmVjdCB0aGUgYWR2ZXJ0aXNlZCBhbmQvb3IgZWZmZWN0aXZlIFRDUCBvciBvdGhlciB3aW5kb3csIGJ1dAorb24gc29tZSBwbGF0Zm9ybXMgaXQgbWF5IG5vdC4gQnkgZGVmYXVsdCB0aGUgdW5pdHMgYXJlIGJ5dGVzLCBidXQKK3N1ZmZpeCBvZiBgYEcsJycgYGBNLCcnIG9yIGBgSycnIHdpbGwgc3BlY2lmeSB0aGUgdW5pdHMgdG8gYmUgMl4zMAorKEdCKSwgMl4yMCAoTUIpIG9yIDJeMTAgKEtCKSByZXNwZWN0aXZlbHkuICBBIHN1ZmZpeCBvZiBgYGcsJycgYGBtJycKK29yIGBgaycnIHdpbGwgc3BlY2lmeSB1bml0cyBvZiAxMF45LCAxMF42IG9yIDEwXjMgYnl0ZXMKK3Jlc3BlY3RpdmVseS4gRm9yIGV4YW1wbGU6CitAZXhhbXBsZQorQGNvZGV7LXMgMTI4S30KK0BlbmQgZXhhbXBsZQorV2lsbCByZXF1ZXN0IHRoZSBsb2NhbCBzZW5kIGFuZCByZWNlaXZlIHNvY2tldCBidWZmZXIgc2l6ZXMgdG8gYmUKKzEyOEtCIG9yIDEzMTA3MiBieXRlcy4gCisKK1doaWxlIHRoZSBoaXN0b3JpYyBleHBlY3RhdGlvbiBpcyB0aGF0IHNldHRpbmcgdGhlIHNvY2tldCBidWZmZXIgc2l6ZQoraGFzIGEgZGlyZWN0IGVmZmVjdCBvbiBzYXkgdGhlIFRDUCB3aW5kb3csIHRvZGF5IHRoYXQgbWF5IG5vdCBob2xkCit0cnVlIGZvciBhbGwgc3RhY2tzLiBGdXJ0aGVyLCB3aGlsZSB0aGUgaGlzdG9yaWMgZXhwZWN0YXRpb24gaXMgdGhhdAordGhlIHZhbHVlIHNwZWNpZmllZCBpbiBhIEBjb2Rle3NldHNvY2tvcHQoKX0gY2FsbCB3aWxsIGJlIHRoZSB2YWx1ZSByZXR1cm5lZAordmlhIGEgQGNvZGV7Z2V0c29ja29wdCgpfSBjYWxsLCBhdCBsZWFzdCBvbmUgc3RhY2sgaXMga25vd24gdG8gZGVsaWJlcmF0ZWx5CitpZ25vcmUgaGlzdG9yeS4gIFdoZW4gcnVubmluZyB1bmRlciBXaW5kb3dzIGEgdmFsdWUgb2YgMCBtYXkgYmUgdXNlZAord2hpY2ggd2lsbCBiZSBhbiBpbmRpY2F0aW9uIHRvIHRoZSBzdGFjayB0aGUgdXNlciB3YW50cyB0byBlbmFibGUgYQorZm9ybSBvZiBjb3B5IGF2b2lkYW5jZS4gW0RlZmF1bHQ6IC0xIC0gdXNlIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IHNvY2tldAorYnVmZmVyIHNpemVzXQorCitAdmluZGV4IC1TIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1TIDxzaXplc3BlYz4KK1RoaXMgb3B0aW9uIHNldHMgdGhlIHJlbW90ZSAobmV0c2VydmVyKSBzZW5kIGFuZC9vciByZWNlaXZlIHNvY2tldAorYnVmZmVyIHNpemVzIGZvciB0aGUgZGF0YSBjb25uZWN0aW9uIHRvIHRoZSB2YWx1ZShzKSBzcGVjaWZpZWQuCitPZnRlbiwgdGhpcyB3aWxsIGFmZmVjdCB0aGUgYWR2ZXJ0aXNlZCBhbmQvb3IgZWZmZWN0aXZlIFRDUCBvciBvdGhlcgord2luZG93LCBidXQgb24gc29tZSBwbGF0Zm9ybXMgaXQgbWF5IG5vdC4gQnkgZGVmYXVsdCB0aGUgdW5pdHMgYXJlCitieXRlcywgYnV0IHN1ZmZpeCBvZiBgYEcsJycgYGBNLCcnIG9yIGBgSycnIHdpbGwgc3BlY2lmeSB0aGUgdW5pdHMgdG8KK2JlIDJeMzAgKEdCKSwgMl4yMCAoTUIpIG9yIDJeMTAgKEtCKSByZXNwZWN0aXZlbHkuICBBIHN1ZmZpeCBvZiBgYGcsJycKK2BgbScnIG9yIGBgaycnIHdpbGwgc3BlY2lmeSB1bml0cyBvZiAxMF45LCAxMF42IG9yIDEwXjMgYnl0ZXMKK3Jlc3BlY3RpdmVseS4gIEZvciBleGFtcGxlOgorQGV4YW1wbGUKK0Bjb2Rley1TIDEyOEt9CitAZW5kIGV4YW1wbGUKK1dpbGwgcmVxdWVzdCB0aGUgcmVtb3RlIHNlbmQgYW5kIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplcyB0byBiZQorMTI4S0Igb3IgMTMxMDcyIGJ5dGVzLiAKKworV2hpbGUgdGhlIGhpc3RvcmljIGV4cGVjdGF0aW9uIGlzIHRoYXQgc2V0dGluZyB0aGUgc29ja2V0IGJ1ZmZlciBzaXplCitoYXMgYSBkaXJlY3QgZWZmZWN0IG9uIHNheSB0aGUgVENQIHdpbmRvdywgdG9kYXkgdGhhdCBtYXkgbm90IGhvbGQKK3RydWUgZm9yIGFsbCBzdGFja3MuICBGdXJ0aGVyLCB3aGlsZSB0aGUgaGlzdG9yaWMgZXhwZWN0YXRpb24gaXMgdGhhdAordGhlIHZhbHVlIHNwZWNpZmllZCBpbiBhIEBjb2Rle3NldHNvY2tvcHQoKX0gY2FsbCB3aWxsIGJlIHRoZSB2YWx1ZSByZXR1cm5lZAordmlhIGEgQGNvZGV7Z2V0c29ja29wdCgpfSBjYWxsLCBhdCBsZWFzdCBvbmUgc3RhY2sgaXMga25vd24gdG8gZGVsaWJlcmF0ZWx5CitpZ25vcmUgaGlzdG9yeS4gIFdoZW4gcnVubmluZyB1bmRlciBXaW5kb3dzIGEgdmFsdWUgb2YgMCBtYXkgYmUgdXNlZAord2hpY2ggd2lsbCBiZSBhbiBpbmRpY2F0aW9uIHRvIHRoZSBzdGFjayB0aGUgdXNlciB3YW50cyB0byBlbmFibGUgYQorZm9ybSBvZiBjb3B5IGF2b2lkYW5jZS4gW0RlZmF1bHQ6IC0xIC0gdXNlIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IHNvY2tldAorYnVmZmVyIHNpemVzXQorCitAdmluZGV4IC00LCBUZXN0LXNwZWNpZmljCitAaXRlbSAtNAorU2V0IHRoZSBsb2NhbCBhbmQgcmVtb3RlIGFkZHJlc3MgZmFtaWx5IGZvciB0aGUgZGF0YSBjb25uZWN0aW9uIHRvCitBRl9JTkVUIC0gaWUgdXNlIElQdjQgYWRkcmVzc2luZyBvbmx5LiAgSnVzdCBhcyB3aXRoIHRoZWlyIGdsb2JhbAorY29tbWFuZC1saW5lIGNvdW50ZXJwYXJ0cyB0aGUgbGFzdCBvZiB0aGUgQG9wdGlvbnstNH0sIEBvcHRpb257LTZ9LAorQG9wdGlvbnstSH0gb3IgQG9wdGlvbnstTH0gb3B0aW9uIHdpbnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgYWRkcmVzcworZmFtaWxpZXMuCisKK0B2aW5kZXggLTYsIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC02CitUaGlzIG9wdGlvbiBpcyBpZGVudGljYWwgdG8gaXRzIEBvcHRpb257LTR9IGNvdXNpbiwgYnV0IHJlcXVlc3RzIElQdjYKK2FkZHJlc3NlcyBmb3IgdGhlIGxvY2FsIGFuZCByZW1vdGUgZW5kcyBvZiB0aGUgZGF0YSBjb25uZWN0aW9uLgorCitAZW5kIHRhYmxlCisKKworQG1lbnUKKyogVENQX1NUUkVBTTo6ICAgICAgICAgICAgICAgICAgCisqIFRDUF9NQUVSVFM6OiAgICAgICAgICAgICAgICAgIAorKiBUQ1BfU0VOREZJTEU6OiAgICAgICAgICAgICAgICAKKyogVURQX1NUUkVBTTo6ICAgICAgICAgICAgICAgICAgCisqIFhUSV9UQ1BfU1RSRUFNOjogICAgICAgICAgICAgIAorKiBYVElfVURQX1NUUkVBTTo6ICAgICAgICAgICAgICAKKyogU0NUUF9TVFJFQU06OiAgICAgICAgICAgICAgICAgCisqIERMQ09fU1RSRUFNOjogICAgICAgICAgICAgICAgIAorKiBETENMX1NUUkVBTTo6ICAgICAgICAgICAgICAgICAKKyogU1RSRUFNX1NUUkVBTTo6ICAgICAgICAgICAgICAgCisqIERHX1NUUkVBTTo6ICAgICAgICAgICAgICAgICAgIAorQGVuZCBtZW51CisKK0Bub2RlIFRDUF9TVFJFQU0sIFRDUF9NQUVSVFMsIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMsIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0BzdWJzZWN0aW9uIFRDUF9TVFJFQU0KKworVGhlIFRDUF9TVFJFQU0gdGVzdCBpcyB0aGUgZGVmYXVsdCB0ZXN0IGluIG5ldHBlcmYuICBJdCBpcyBxdWl0ZQorc2ltcGxlLCB0cmFuc2ZlcnJpbmcgc29tZSBxdWFudGl0eSBvZiBkYXRhIGZyb20gdGhlIHN5c3RlbSBydW5uaW5nCituZXRwZXJmIHRvIHRoZSBzeXN0ZW0gcnVubmluZyBuZXRzZXJ2ZXIuICBXaGlsZSB0aW1lIHNwZW50Citlc3RhYmxpc2hpbmcgdGhlIGNvbm5lY3Rpb24gaXMgbm90IGluY2x1ZGVkIGluIHRoZSB0aHJvdWdocHV0CitjYWxjdWxhdGlvbiwgdGltZSBzcGVudCBmbHVzaGluZyB0aGUgbGFzdCBvZiB0aGUgZGF0YSB0byB0aGUgcmVtb3RlIGF0Cit0aGUgZW5kIG9mIHRoZSB0ZXN0IGlzLiAgVGhpcyBpcyBob3cgbmV0cGVyZiBrbm93cyB0aGF0IGFsbCB0aGUgZGF0YQoraXQgc2VudCB3YXMgcmVjZWl2ZWQgYnkgdGhlIHJlbW90ZS4gIEluIGFkZGl0aW9uIHRvIHRoZSBAcmVme09wdGlvbnMKK2NvbW1vbiB0byBUQ1AgVURQIGFuZCBTQ1RQIHRlc3RzLG9wdGlvbnMgY29tbW9uIHRvIFNUUkVBTSB0ZXN0c30sIHRoZQorZm9sbG93aW5nIHRlc3Qtc3BlY2lmaWMgb3B0aW9ucyBjYW4gYmUgaW5jbHVkZWQgdG8gcG9zc2libHkgYWx0ZXIgdGhlCitiZWhhdmlvciBvZiB0aGUgdGVzdDoKKworQHRhYmxlIEBjb2RlCitAaXRlbSAtQworVGhpcyBvcHRpb24gd2lsbCBzZXQgVENQX0NPUksgbW9kZSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIG9uIHRob3NlCitzeXN0ZW1zIHdoZXJlIFRDUF9DT1JLIGlzIGRlZmluZWQgKHR5cGljYWxseSBMaW51eCkuICBBIGZ1bGwKK2Rlc2NyaXB0aW9uIG9mIFRDUF9DT1JLIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBtYW51YWwsIGJ1dCBpbiBhCitudXRzaGVsbCBpdCBmb3JjZXMgc3ViLU1TUyBzZW5kcyB0byBiZSBidWZmZXJlZCBzbyBldmVyeSBzZWdtZW50IHNlbnQKK2lzIE1heGltdW0gU2VnbWVudCBTaXplIChNU1MpIHVubGVzcyB0aGUgYXBwbGljYXRpb24gcGVyZm9ybXMgYW4KK2V4cGxpY2l0IGZsdXNoIG9wZXJhdGlvbiBvciB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuICBBdCBwcmVzZW50CituZXRwZXJmIGRvZXMgbm90IHBlcmZvcm0gYW55IGV4cGxpY2l0IGZsdXNoIG9wZXJhdGlvbnMuICBTZXR0aW5nCitUQ1BfQ09SSyBtYXkgaW1wcm92ZSB0aGUgYml0cmF0ZSBvZiB0ZXN0cyB3aGVyZSB0aGUgYGBzZW5kIHNpemUnJworKEBvcHRpb257LW19IG9wdGlvbikgaXMgc21hbGxlciB0aGFuIHRoZSBNU1MuICBJdCBzaG91bGQgYWxzbyBpbXByb3ZlCisobWFrZSBzbWFsbGVyKSB0aGUgc2VydmljZSBkZW1hbmQuCisKK1RoZSBMaW51eCB0Y3AoNykgbWFucGFnZSBzdGF0ZXMgdGhhdCBUQ1BfQ09SSyBjYW5ub3QgYmUgdXNlZCBpbgorY29uanVuY3Rpb24gd2l0aCBUQ1BfTk9ERUxBWSAoc2V0IHZpYSB0aGUgQG9wdGlvbnstZH0gb3B0aW9uKSwgaG93ZXZlcgorbmV0cGVyZiBkb2VzIG5vdCB2YWxpZGF0ZSBjb21tYW5kLWxpbmUgb3B0aW9ucyB0byBlbmZvcmNlIHRoYXQuCisKK0BpdGVtIC1ECitUaGlzIG9wdGlvbiB3aWxsIHNldCBUQ1BfTk9ERUxBWSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIG9uIHRob3NlCitzeXN0ZW1zIHdoZXJlIFRDUF9OT0RFTEFZIGlzIGRlZmluZWQuICBUaGlzIGRpc2FibGVzIHNvbWV0aGluZyBrbm93bgorYXMgdGhlIE5hZ2xlIEFsZ29yaXRobSwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gbWFrZSB0aGUgc2VnbWVudHMgVENQCitzZW5kcyBhcyBsYXJnZSBhcyByZWFzb25hYmx5IHBvc3NpYmxlLiAgU2V0dGluZyBUQ1BfTk9ERUxBWSBmb3IgYQorVENQX1NUUkVBTSB0ZXN0IHNob3VsZCBlaXRoZXIgaGF2ZSBubyBlZmZlY3Qgd2hlbiB0aGUgc2VuZCBzaXplCisoQG9wdGlvbnstbX0gb3B0aW9uKSBpcyBsYXJnZXIgdGhhbiB0aGUgTVNTIG9yIHdpbGwgZGVjcmVhc2UgcmVwb3J0ZWQKK2JpdHJhdGUgYW5kIGluY3JlYXNlIHNlcnZpY2UgZGVtYW5kIHdoZW4gdGhlIHNlbmQgc2l6ZSBpcyBzbWFsbGVyIHRoYW4KK3RoZSBNU1MuICBUaGlzIHN0ZW1zIGZyb20gVENQX05PREVMQVkgY2F1c2luZyBlYWNoIHN1Yi1NU1Mgc2VuZCB0byBiZQoraXRzIG93biBUQ1Agc2VnbWVudCByYXRoZXIgdGhhbiBiZWluZyBhZ2dyZWdhdGVkIHdpdGggb3RoZXIgc21hbGwKK3NlbmRzLiAgVGhpcyBtZWFucyBtb3JlIHRyaXBzIHVwIGFuZCBkb3duIHRoZSBwcm90b2NvbCBzdGFjayBwZXIgS0Igb2YKK2RhdGEgdHJhbnNmZXJyZWQsIHdoaWNoIG1lYW5zIGdyZWF0ZXIgQ1BVIHV0aWxpemF0aW9uLgorCitJZiBzZXR0aW5nIFRDUF9OT0RFTEFZIHdpdGggQG9wdGlvbnstRH0gYWZmZWN0cyB0aHJvdWdocHV0IGFuZC9vcgorc2VydmljZSBkZW1hbmQgZm9yIHRlc3RzIHdoZXJlIHRoZSBzZW5kIHNpemUgKEBvcHRpb257LW19KSBpcyBsYXJnZXIKK3RoYW4gdGhlIE1TUyBpdCBzdWdnZXN0cyB0aGUgVENQL0lQIHN0YWNrJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlCitOYWdsZSBBbGdvcml0aG0gX21heV8gYmUgYnJva2VuLCBwZXJoYXBzIGludGVycHJldGluZyB0aGUgTmFnbGUKK0FsZ29yaXRobSBvbiBhIHNlZ21lbnQgYnkgc2VnbWVudCBiYXNpcyByYXRoZXIgdGhhbiB0aGUgcHJvcGVyIHVzZXIKK3NlbmQgYnkgdXNlciBzZW5kIGJhc2lzLiAgSG93ZXZlciwgYSBiZXR0ZXIgdGVzdCBvZiB0aGlzIGNhbiBiZQorYWNoaWV2ZWQgd2l0aCB0aGUgQHJlZntUQ1BfUlJ9IHRlc3QuCisKK0BlbmQgdGFibGUKKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgYmFzaWMgVENQX1NUUkVBTSB0ZXN0LCBpbiB0aGlzIGNhc2UgZnJvbSBhCitEZWJpYW4gTGludXggKDIuNiBrZXJuZWwpIHN5c3RlbSB0byBhbiBIUC1VWCAxMWl2MiAoSFAtVVggMTEuMjMpCitzeXN0ZW06CisKK0BleGFtcGxlCiskIG5ldHBlcmYgLUggbGFnCitUQ1AgU1RSRUFNIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byBsYWcuaHBsLmhwLmNvbSAoMTUuNC44OS4yMTQpIHBvcnQgMCBBRl9JTkVUCitSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAKK1NvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIAorU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgCitieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAxMF42Yml0cy9zZWMgIAorCisgMzI3NjggIDE2Mzg0ICAxNjM4NCAgICAxMC4wMCAgICAgIDgwLjQyICAgCitAZW5kIGV4YW1wbGUKKworV2Ugc2VlIHRoYXQgdGhlIGRlZmF1bHQgcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUgZm9yIHRoZSByZWNlaXZlcgorKGxhZyAtIEhQLVVYIDExLjIzKSBpcyAzMjc2OCBieXRlcywgYW5kIHRoZSBkZWZhdWx0IHNvY2tldCBzZW5kIGJ1ZmZlcgorc2l6ZSBmb3IgdGhlIHNlbmRlciAoRGViaWFuIDIuNiBrZXJuZWwpIGlzIDE2Mzg0IGJ5dGVzLCBob3dldmVyIExpbnV4Citkb2VzIGBgYXV0byB0dW5pbmcnJyBvZiBzb2NrZXQgYnVmZmVyIGFuZCBUQ1Agd2luZG93IHNpemVzLCB3aGljaAorbWVhbnMgdGhlIHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIG1heSBiZSBkaWZmZXJlbnQgYXQgdGhlIGVuZCBvZiB0aGUKK3Rlc3QgdGhhbiBpdCB3YXMgYXQgdGhlIGJlZ2lubmluZy4gIFRoaXMgaXMgYWRkcmVzc2VkIGluIHRoZSBAcmVme1RoZQorT21uaSBUZXN0cyxvbW5pIHRlc3RzfSBhZGRlZCBpbiB2ZXJzaW9uIDIuNS4wIGFuZCBAcmVme09tbmkgT3V0cHV0CitTZWxlY3Rpb24sb3V0cHV0IHNlbGVjdGlvbn0uICBUaHJvdWdocHV0IGlzIGV4cHJlc3NlZCBhcyAxMF42IChha2EKK01lZ2EpIGJpdHMgcGVyIHNlY29uZCwgYW5kIHRoZSB0ZXN0IHJhbiBmb3IgMTAgc2Vjb25kcy4gIElQdjQKK2FkZHJlc3NlcyAoQUZfSU5FVCkgd2VyZSB1c2VkLgorCitAbm9kZSBUQ1BfTUFFUlRTLCBUQ1BfU0VOREZJTEUsIFRDUF9TVFJFQU0sIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gVENQX01BRVJUUworCitBIFRDUF9NQUVSVFMgKE1BRVJUUyBpcyBTVFJFQU0gYmFja3dhcmRzKSB0ZXN0IGlzIGBganVzdCBsaWtlJycgYQorQHJlZntUQ1BfU1RSRUFNfSB0ZXN0IGV4Y2VwdCB0aGUgZGF0YSBmbG93cyBmcm9tIHRoZSBuZXRzZXJ2ZXIgdG8gdGhlCituZXRwZXJmLiBUaGUgZ2xvYmFsIGNvbW1hbmQtbGluZSBAb3B0aW9uey1GfSBvcHRpb24gaXMgaWdub3JlZCBmb3IKK3RoaXMgdGVzdCB0eXBlLiAgVGhlIHRlc3Qtc3BlY2lmaWMgY29tbWFuZC1saW5lIEBvcHRpb257LUN9IG9wdGlvbiBpcworaWdub3JlZCBmb3IgdGhpcyB0ZXN0IHR5cGUuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIFRDUF9NQUVSVFMgdGVzdCBiZXR3ZWVuIHRoZSBzYW1lIHR3byBzeXN0ZW1zCithcyBpbiB0aGUgZXhhbXBsZSBmb3IgdGhlIEByZWZ7VENQX1NUUkVBTX0gdGVzdC4gIFRoaXMgdGltZSB3ZSByZXF1ZXN0CitsYXJnZXIgc29ja2V0IGJ1ZmZlcnMgd2l0aCBAb3B0aW9uey1zfSBhbmQgQG9wdGlvbnstU30gb3B0aW9uczoKKworQGV4YW1wbGUKKyQgbmV0cGVyZiAtSCBsYWcgLXQgVENQX01BRVJUUyAtLSAtcyAxMjhLIC1TIDEyOEsKK1RDUCBNQUVSVFMgVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIGxhZy5ocGwuaHAuY29tICgxNS40Ljg5LjIxNCkgcG9ydCAwIEFGX0lORVQKK1JlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIAorU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgCitTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICAKK2J5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgIDEwXjZiaXRzL3NlYyAgCisKKzIyMTE4NCAxMzEwNzIgMTMxMDcyICAgIDEwLjAzICAgICAgODEuMTQgICAKK0BlbmQgZXhhbXBsZQorCitXaGVyZSB3ZSBzZWUgdGhhdCBMaW51eCwgdW5saWtlIEhQLVVYLCBtYXkgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZQoraW4gYSBAY29kZXtnZXRzb2Nrb3B0KCl9IGFzIHdhcyByZXF1ZXN0ZWQgaW4gdGhlIHByaW9yIEBjb2Rle3NldHNvY2tvcHQoKX0uCisKK1RoaXMgdGVzdCBpcyBpbmNsdWRlZCBtb3JlIGZvciBiZW5jaG1hcmtpbmcgY29udmVuaWVuY2UgdGhhbiBhbnl0aGluZworZWxzZS4KKworQG5vZGUgVENQX1NFTkRGSUxFLCBVRFBfU1RSRUFNLCBUQ1BfTUFFUlRTLCBPcHRpb25zIGNvbW1vbiB0byBUQ1AgVURQIGFuZCBTQ1RQIHRlc3RzCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIFRDUF9TRU5ERklMRQorCitUaGUgVENQX1NFTkRGSUxFIHRlc3QgaXMgYGBqdXN0IGxpa2UnJyBhIEByZWZ7VENQX1NUUkVBTX0gdGVzdCBleGNlcHQKK25ldHBlcmYgdGhlIHBsYXRmb3JtJ3MgQGNvZGV7c2VuZGZpbGUoKX0gY2FsbCBpbnN0ZWFkIG9mIGNhbGxpbmcKK0Bjb2Rle3NlbmQoKX0uICBPZnRlbiB0aGlzIHJlc3VsdHMgaW4gYSBAZGZue3plcm8tY29weX0gb3BlcmF0aW9uCit3aGVyZSBkYXRhIGlzIHNlbnQgZGlyZWN0bHkgZnJvbSB0aGUgZmlsZXN5c3RlbSBidWZmZXIgY2FjaGUuICBUaGlzCitfc2hvdWxkXyByZXN1bHQgaW4gbG93ZXIgQ1BVIHV0aWxpemF0aW9uIGFuZCBwb3NzaWJseSBoaWdoZXIKK3Rocm91Z2hwdXQuICBJZiBpdCBkb2VzIG5vdCwgdGhlbiB5b3UgbWF5IHdhbnQgdG8gY29udGFjdCB5b3VyCit2ZW5kb3IocykgYmVjYXVzZSB0aGV5IGhhdmUgYSBwcm9ibGVtIG9uIHRoZWlyIGhhbmRzLgorCitaZXJvLWNvcHkgbWVjaGFuaXNtcyBtYXkgYWxzbyBhbHRlciB0aGUgY2hhcmFjdGVyaXN0aWNzIChzaXplIGFuZAorbnVtYmVyIG9mIGJ1ZmZlcnMgcGVyKSBvZiBwYWNrZXRzIHBhc3NlZCB0byB0aGUgTklDLiAgSW4gbWFueSBzdGFja3MsCit3aGVuIGEgY29weSBpcyBwZXJmb3JtZWQsIHRoZSBzdGFjayBjYW4gYGByZXNlcnZlJycgc3BhY2UgYXQgdGhlCitiZWdpbm5pbmcgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBmb3IgdGhpbmdzIGxpa2UgVENQLCBJUCBhbmQgTGluaworaGVhZGVycy4gIFRoaXMgdGhlbiBoYXMgdGhlIHBhY2tldCBjb250YWluZWQgaW4gYSBzaW5nbGUgYnVmZmVyIHdoaWNoCitjYW4gYmUgZWFzaWVyIHRvIERNQSB0byB0aGUgTklDLiAgV2hlbiBubyBjb3B5IGlzIHBlcmZvcm1lZCwgdGhlcmUgaXMKK25vIG9wcG9ydHVuaXR5IHRvIHJlc2VydmUgc3BhY2UgZm9yIGhlYWRlcnMgYW5kIHNvIGEgcGFja2V0IHdpbGwgYmUKK2NvbnRhaW5lZCBpbiB0d28gb3IgbW9yZSBidWZmZXJzLgorCitBcyBvZiBzb21lIHRpbWUgYmVmb3JlIHZlcnNpb24gMi41LjAsIHRoZSBAcmVme0dsb2JhbCBPcHRpb25zLGdsb2JhbAorQG9wdGlvbnstRn0gb3B0aW9ufSBpcyBubyBsb25nZXIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4gIElmIGl0IGlzIG5vdAorc3BlY2lmaWVkLCBuZXRwZXJmIHdpbGwgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUsIHdoaWNoIGl0IHdpbGwgZGVsZXRlCithdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LiAgSWYgdGhlIEBvcHRpb257LUZ9IG9wdGlvbiBpcyBzcGVjaWZpZWQgaXQKK211c3QgcmVmZXJlbmNlIGEgZmlsZSBvZiBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUgc2VuZCByaW5nCisoQHhyZWZ7R2xvYmFsIE9wdGlvbnMsdGhlIGdsb2JhbCBAb3B0aW9uey1XfSBvcHRpb259LikgbXVsdGlwbGllZCBieQordGhlIHNlbmQgc2l6ZSAoQHhyZWZ7T3B0aW9ucyBjb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCB0ZXN0cyx0aGUKK3Rlc3Qtc3BlY2lmaWMgQG9wdGlvbnstbX0gb3B0aW9ufS4pLiAgQWxsIG90aGVyIFRDUC1zcGVjaWZpYyBvcHRpb25zCityZW1haW4gYXZhaWxhYmxlIGFuZCBvcHRpb25hbC4KKworSW4gdGhpcyBmaXJzdCBleGFtcGxlOgorQGV4YW1wbGUKKyQgbmV0cGVyZiAtSCBsYWcgLUYgLi4vc3JjL25ldHBlcmYgLXQgVENQX1NFTkRGSUxFIC0tIC1zIDEyOEsgLVMgMTI4SworVENQIFNFTkRGSUxFIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byBsYWcuaHBsLmhwLmNvbSAoMTUuNC44OS4yMTQpIHBvcnQgMCBBRl9JTkVUCithbGxvY19zZW5kZmlsZV9idWZfcmluZzogc3BlY2lmaWVkIGZpbGUgdG9vIHNtYWxsLgorZmlsZSBtdXN0IGJlIGxhcmdlciB0aGFuIHNlbmRfd2lkdGggKiBzZW5kX3NpemUKK0BlbmQgZXhhbXBsZQorCit3ZSBzZWUgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGZpbGUgaXMgdG9vIHNtYWxsLiAgSGVyZToKKworQGV4YW1wbGUKKyQgbmV0cGVyZiAtSCBsYWcgLUYgL2Jvb3Qvdm1saW51ei0yLjYuOC0xLTY4NiAtdCBUQ1BfU0VOREZJTEUgLS0gLXMgMTI4SyAtUyAxMjhLCitUQ1AgU0VOREZJTEUgVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIGxhZy5ocGwuaHAuY29tICgxNS40Ljg5LjIxNCkgcG9ydCAwIEFGX0lORVQKK1JlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIAorU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgCitTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICAKK2J5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgIDEwXjZiaXRzL3NlYyAgCisKKzEzMTA3MiAyMjExODQgMjIxMTg0ICAgIDEwLjAyICAgICAgODEuODMgICAKK0BlbmQgZXhhbXBsZQorCit3ZSByZXNvbHZlIHRoYXQgaXNzdWUgYnkgc2VsZWN0aW5nIGEgbGFyZ2VyIGZpbGUuCisKKworQG5vZGUgVURQX1NUUkVBTSwgWFRJX1RDUF9TVFJFQU0sIFRDUF9TRU5ERklMRSwgT3B0aW9ucyBjb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCB0ZXN0cworQHN1YnNlY3Rpb24gVURQX1NUUkVBTQorCitBIFVEUF9TVFJFQU0gdGVzdCBpcyBzaW1pbGFyIHRvIGEgQHJlZntUQ1BfU1RSRUFNfSB0ZXN0IGV4Y2VwdCBVRFAgaXMKK3VzZWQgYXMgdGhlIHRyYW5zcG9ydCByYXRoZXIgdGhhbiBUQ1AuCisKK0BjaW5kZXggTGltaXRpbmcgQmFuZHdpZHRoCitBIFVEUF9TVFJFQU0gdGVzdCBoYXMgbm8gZW5kLXRvLWVuZCBmbG93IGNvbnRyb2wgLSBVRFAgcHJvdmlkZXMgbm9uZQorYW5kIG5laXRoZXIgZG9lcyBuZXRwZXJmLiAgSG93ZXZlciwgaWYgeW91IHdpc2gsIHlvdSBjYW4gY29uZmlndXJlCituZXRwZXJmIHdpdGggQGNvZGV7LS1lbmFibGUtaW50ZXJ2YWxzPXllc30gdG8gZW5hYmxlIHRoZSBnbG9iYWwKK2NvbW1hbmQtbGluZSBAb3B0aW9uey1ifSBhbmQgQG9wdGlvbnstd30gb3B0aW9ucyB0byBwYWNlIGJ1cnN0cyBvZgordHJhZmZpYyBvbnRvIHRoZSBuZXR3b3JrLgorCitUaGlzIGhhcyBhIG51bWJlciBvZiBpbXBsaWNhdGlvbnMuCisKK1RoZSBiaWdnZXN0IG9mIHRoZXNlIGltcGxpY2F0aW9ucyBpcyB0aGUgZGF0YSB3aGljaCBpcyBzZW50IG1pZ2h0IG5vdAorYmUgcmVjZWl2ZWQgYnkgdGhlIHJlbW90ZS4gIEZvciB0aGlzIHJlYXNvbiwgdGhlIG91dHB1dCBvZiBhCitVRFBfU1RSRUFNIHRlc3Qgc2hvd3MgYm90aCB0aGUgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHRocm91Z2hwdXQuICBPbgorc29tZSBwbGF0Zm9ybXMsIGl0IG1heSBiZSBwb3NzaWJsZSBmb3IgdGhlIHNlbmRpbmcgdGhyb3VnaHB1dCB0byBiZQorcmVwb3J0ZWQgYXMgYSB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcmF0ZSBvZiB0aGUgbGluay4gIFRoaXMKK2lzIGNvbW1vbiB3aGVuIHRoZSBDUFUocykgYXJlIGZhc3RlciB0aGFuIHRoZSBuZXR3b3JrIGFuZCB0aGVyZSBpcyBubworQGRmbntpbnRyYS1zdGFja30gZmxvdy1jb250cm9sLgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBVRFBfU1RSRUFNIHRlc3QgYmV0d2VlbiB0d28gc3lzdGVtcyBjb25uZWN0ZWQKK2J5IGEgMTAgR2lnYWJpdCBFdGhlcm5ldCBsaW5rOgorQGV4YW1wbGUKKyQgbmV0cGVyZiAtdCBVRFBfU1RSRUFNIC1IIDE5Mi4xNjguMi4xMjUgLS0gLW0gMzI3NjgKK1VEUCBVTklESVJFQ1RJT05BTCBTRU5EIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byAxOTIuMTY4LjIuMTI1ICgxOTIuMTY4LjIuMTI1KSBwb3J0IDAgQUZfSU5FVAorU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgTWVzc2FnZXMgICAgICAgICAgICAgICAgCitTaXplICAgIFNpemUgICAgIFRpbWUgICAgICAgICBPa2F5IEVycm9ycyAgIFRocm91Z2hwdXQKK2J5dGVzICAgYnl0ZXMgICAgc2VjcyAgICAgICAgICAgICMgICAgICAjICAgMTBeNmJpdHMvc2VjCisKKzEyNDkyOCAgIDMyNzY4ICAgMTAuMDAgICAgICAxMDU2NzIgICAgICAwICAgIDI3NzAuMjAKKzEzNTE2OCAgICAgICAgICAgMTAuMDAgICAgICAxMDQ4NDQgICAgICAgICAgIDI3NDguNTAKKworQGVuZCBleGFtcGxlCisKK1RoZSBmaXJzdCBsaW5lIG9mIG51bWJlcnMgYXJlIHN0YXRpc3RpY3MgZnJvbSB0aGUgc2VuZGluZyAobmV0cGVyZikKK3NpZGUuIFRoZSBzZWNvbmQgbGluZSBvZiBudW1iZXJzIGFyZSBmcm9tIHRoZSByZWNlaXZpbmcgKG5ldHNlcnZlcikKK3NpZGUuICBJbiB0aGlzIGNhc2UsIDEwNTY3MiAtIDEwNDg0NCBvciA4MjggbWVzc2FnZXMgZGlkIG5vdCBtYWtlIGl0CithbGwgdGhlIHdheSB0byB0aGUgcmVtb3RlIG5ldHNlcnZlciBwcm9jZXNzLgorCitJZiB0aGUgdmFsdWUgb2YgdGhlIEBvcHRpb257LW19IG9wdGlvbiBpcyBsYXJnZXIgdGhhbiB0aGUgbG9jYWwgc2VuZAorc29ja2V0IGJ1ZmZlciBzaXplIChAb3B0aW9uey1zfSBvcHRpb24pIG5ldHBlcmYgd2lsbCBsaWtlbHkgYWJvcnQgd2l0aAorYW4gZXJyb3IgbWVzc2FnZSBhYm91dCBob3cgdGhlIHNlbmQgY2FsbCBmYWlsZWQ6CisKK0BleGFtcGxlCituZXRwZXJmIC10IFVEUF9TVFJFQU0gLUggMTkyLjE2OC4yLjEyNQorVURQIFVOSURJUkVDVElPTkFMIFNFTkQgVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIDE5Mi4xNjguMi4xMjUgKDE5Mi4xNjguMi4xMjUpIHBvcnQgMCBBRl9JTkVUCit1ZHBfc2VuZDogZGF0YSBzZW5kIGVycm9yOiBNZXNzYWdlIHRvbyBsb25nCitAZW5kIGV4YW1wbGUKKworSWYgdGhlIHZhbHVlIG9mIHRoZSBAb3B0aW9uey1tfSBvcHRpb24gaXMgbGFyZ2VyIHRoYW4gdGhlIHJlbW90ZQorc29ja2V0IHJlY2VpdmUgYnVmZmVyLCB0aGUgcmVwb3J0ZWQgcmVjZWl2ZSB0aHJvdWdocHV0IHdpbGwgbGlrZWx5IGJlCit6ZXJvIGFzIHRoZSByZW1vdGUgVURQIHdpbGwgZGlzY2FyZCB0aGUgbWVzc2FnZXMgYXMgYmVpbmcgdG9vIGxhcmdlIHRvCitmaXQgaW50byB0aGUgc29ja2V0IGJ1ZmZlci4KKworQGV4YW1wbGUKKyQgbmV0cGVyZiAtdCBVRFBfU1RSRUFNIC1IIDE5Mi4xNjguMi4xMjUgLS0gLW0gNjUwMDAgLVMgMzI3NjgKK1VEUCBVTklESVJFQ1RJT05BTCBTRU5EIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byAxOTIuMTY4LjIuMTI1ICgxOTIuMTY4LjIuMTI1KSBwb3J0IDAgQUZfSU5FVAorU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgTWVzc2FnZXMgICAgICAgICAgICAgICAgCitTaXplICAgIFNpemUgICAgIFRpbWUgICAgICAgICBPa2F5IEVycm9ycyAgIFRocm91Z2hwdXQKK2J5dGVzICAgYnl0ZXMgICAgc2VjcyAgICAgICAgICAgICMgICAgICAjICAgMTBeNmJpdHMvc2VjCisKKzEyNDkyOCAgIDY1MDAwICAgMTAuMDAgICAgICAgNTM1OTUgICAgICAwICAgIDI3ODYuOTkKKyA2NTUzNiAgICAgICAgICAgMTAuMDAgICAgICAgICAgIDAgICAgICAgICAgICAgIDAuMDAKK0BlbmQgZXhhbXBsZQorCitUaGUgZXhhbXBsZSBhYm92ZSB3YXMgYmV0d2VlbiBhIHBhaXIgb2Ygc3lzdGVtcyBydW5uaW5nIGEgYGBMaW51eCcnCitrZXJuZWwuIE5vdGljZSB0aGF0IHRoZSByZW1vdGUgTGludXggc3lzdGVtIHJldHVybmVkIGEgdmFsdWUgbGFyZ2VyCit0aGFuIHRoYXQgcGFzc2VkLWluIHRvIHRoZSBAb3B0aW9uey1TfSBvcHRpb24uICBJbiBmYWN0LCB0aGlzIHZhbHVlCit3YXMgbGFyZ2VyIHRoYW4gdGhlIG1lc3NhZ2Ugc2l6ZSBzZXQgd2l0aCB0aGUgQG9wdGlvbnstbX0gb3B0aW9uLgorVGhhdCB0aGUgcmVtb3RlIHNvY2tldCBidWZmZXIgc2l6ZSBpcyByZXBvcnRlZCBhcyA2NTUzNiBieXRlcyB3b3VsZAorc3VnZ2VzdCB0byBhbnkgc2FuZSBwZXJzb24gdGhhdCBhIG1lc3NhZ2Ugb2YgNjUwMDAgYnl0ZXMgd291bGQgZml0LAorYnV0IHRoZSBzb2NrZXQgaXNuJ3QgX3JlYWxseV8gNjU1MzYgYnl0ZXMsIGV2ZW4gdGhvdWdoIExpbnV4IGlzCit0ZWxsaW5nIHVzIHNvLiAgR28gZmlndXJlLgorCitAbm9kZSBYVElfVENQX1NUUkVBTSwgWFRJX1VEUF9TVFJFQU0sIFVEUF9TVFJFQU0sIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0BzdWJzZWN0aW9uIFhUSV9UQ1BfU1RSRUFNCisKK0FuIFhUSV9UQ1BfU1RSRUFNIHRlc3QgaXMgc2ltcGx5IGEgQHJlZntUQ1BfU1RSRUFNfSB0ZXN0IHVzaW5nIHRoZSBYVEkKK3JhdGhlciB0aGFuIEJTRCBTb2NrZXRzIGludGVyZmFjZS4gIFRoZSB0ZXN0LXNwZWNpZmljIEBvcHRpb257LVgKKzxkZXZzcGVjPn0gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGxvY2FsIGFuZC9vcgorcmVtb3RlIFhUSSBkZXZpY2UgZmlsZXMsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBAY29kZXt0X29wZW4oKX0gY2FsbAorbWFkZSBieSBuZXRwZXJmIFhUSSB0ZXN0cy4KKworVGhlIFhUSV9UQ1BfU1RSRUFNIHRlc3QgaXMgb25seSBwcmVzZW50IGlmIG5ldHBlcmYgd2FzIGNvbmZpZ3VyZWQgd2l0aAorQGNvZGV7LS1lbmFibGUteHRpPXllc30uICBUaGUgcmVtb3RlIG5ldHNlcnZlciBtdXN0IGhhdmUgYWxzbyBiZWVuCitjb25maWd1cmVkIHdpdGggQGNvZGV7LS1lbmFibGUteHRpPXllc30uCisKK0Bub2RlIFhUSV9VRFBfU1RSRUFNLCBTQ1RQX1NUUkVBTSwgWFRJX1RDUF9TVFJFQU0sIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0BzdWJzZWN0aW9uIFhUSV9VRFBfU1RSRUFNCisKK0FuIFhUSV9VRFBfU1RSRUFNIHRlc3QgaXMgc2ltcGx5IGEgQHJlZntVRFBfU1RSRUFNfSB0ZXN0IHVzaW5nIHRoZSBYVEkKK3JhdGhlciB0aGFuIEJTRCBTb2NrZXRzIEludGVyZmFjZS4gIFRoZSB0ZXN0LXNwZWNpZmljIEBvcHRpb257LVgKKzxkZXZzcGVjPn0gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGxvY2FsIGFuZC9vcgorcmVtb3RlIFhUSSBkZXZpY2UgZmlsZXMsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBAY29kZXt0X29wZW4oKX0gY2FsbAorbWFkZSBieSBuZXRwZXJmIFhUSSB0ZXN0cy4KKworVGhlIFhUSV9VRFBfU1RSRUFNIHRlc3QgaXMgb25seSBwcmVzZW50IGlmIG5ldHBlcmYgd2FzIGNvbmZpZ3VyZWQgd2l0aAorQGNvZGV7LS1lbmFibGUteHRpPXllc30uIFRoZSByZW1vdGUgbmV0c2VydmVyIG11c3QgaGF2ZSBhbHNvIGJlZW4KK2NvbmZpZ3VyZWQgd2l0aCBAY29kZXstLWVuYWJsZS14dGk9eWVzfS4KKworQG5vZGUgU0NUUF9TVFJFQU0sIERMQ09fU1RSRUFNLCBYVElfVURQX1NUUkVBTSwgT3B0aW9ucyBjb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCB0ZXN0cworQHN1YnNlY3Rpb24gU0NUUF9TVFJFQU0KKworQW4gU0NUUF9TVFJFQU0gdGVzdCBpcyBlc3NlbnRpYWxseSBhIEByZWZ7VENQX1NUUkVBTX0gdGVzdCB1c2luZyB0aGUgU0NUUAorcmF0aGVyIHRoYW4gVENQLiAgVGhlIEBvcHRpb257LUR9IG9wdGlvbiB3aWxsIHNldCBTQ1RQX05PREVMQVksIHdoaWNoCitpcyBtdWNoIGxpa2UgdGhlIFRDUF9OT0RFTEFZIG9wdGlvbiBmb3IgVENQLiAgVGhlIEBvcHRpb257LUN9IG9wdGlvbgoraXMgbm90IGFwcGxpY2FibGUgdG8gYW4gU0NUUCB0ZXN0IGFzIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcKK1NDVFBfQ09SSyBvcHRpb24uICBUaGUgYXV0aG9yIGlzIHN0aWxsIGZpZ3VyaW5nLW91dCB3aGF0IHRoZQordGVzdC1zcGVjaWZpYyBAb3B0aW9uey1OfSBvcHRpb24gZG9lcyA6KQorCitUaGUgU0NUUF9TVFJFQU0gdGVzdCBpcyBvbmx5IHByZXNlbnQgaWYgbmV0cGVyZiB3YXMgY29uZmlndXJlZCB3aXRoCitAY29kZXstLWVuYWJsZS1zY3RwPXllc30uIFRoZSByZW1vdGUgbmV0c2VydmVyIG11c3QgaGF2ZSBhbHNvIGJlZW4KK2NvbmZpZ3VyZWQgd2l0aCBAY29kZXstLWVuYWJsZS1zY3RwPXllc30uCisKK0Bub2RlIERMQ09fU1RSRUFNLCBETENMX1NUUkVBTSwgU0NUUF9TVFJFQU0sIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0BzdWJzZWN0aW9uIERMQ09fU1RSRUFNCisKK0EgRExQSSBDb25uZWN0aW9uIE9yaWVudGVkIFN0cmVhbSAoRExDT19TVFJFQU0pIHRlc3QgaXMgdmVyeSBzaW1pbGFyCitpbiBjb25jZXB0IHRvIGEgQHJlZntUQ1BfU1RSRUFNfSB0ZXN0LiAgQm90aCB1c2UgcmVsaWFibGUsCitjb25uZWN0aW9uLW9yaWVudGVkIHByb3RvY29scy4gIFRoZSBETFBJIHRlc3QgZGlmZmVycyBmcm9tIHRoZSBUQ1AKK3Rlc3QgaW4gdGhhdCBpdHMgcHJvdG9jb2wgb3BlcmF0ZXMgb25seSBhdCB0aGUgbGluay1sZXZlbCBhbmQgZG9lcyBub3QKK2luY2x1ZGUgVENQLXN0eWxlIHNlZ21lbnRhdGlvbiBhbmQgcmVhc3NlbWJseS4gIFRoaXMgbGFzdCBkaWZmZXJlbmNlCittZWFucyB0aGF0IHRoZSB2YWx1ZSAgcGFzc2VkLWluICB3aXRoIHRoZSBAb3B0aW9uey1tfSBvcHRpb24gbXVzdCBiZQorbGVzcyB0aGFuIHRoZSBpbnRlcmZhY2UgTVRVLiAgT3RoZXJ3aXNlLCB0aGUgQG9wdGlvbnstbX0gYW5kCitAb3B0aW9uey1NfSBvcHRpb25zIGFyZSBqdXN0IGxpa2UgdGhlaXIgVENQL1VEUC9TQ1RQIGNvdW50ZXJwYXJ0cy4KKworT3RoZXIgRExQSS1zcGVjaWZpYyBvcHRpb25zIGluY2x1ZGU6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gLUQgPGRldnNwZWM+CitUaGlzIG9wdGlvbiBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGZ1bGx5LXF1YWxpZmllZCBuYW1lcyBmb3IgdGhlIGxvY2FsCithbmQvb3IgcmVtb3RlIERMUEkgZGV2aWNlIGZpbGVzLiAgVGhlIHN5bnRheCBpcyBvdGhlcndpc2UgaWRlbnRpY2FsIHRvCit0aGF0IG9mIGEgQGRmbntzaXplc3BlY30uCitAaXRlbSAtcCA8cHBhc3BlYz4KK1RoaXMgb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYWwgYW5kL29yIHJlbW90ZSBETFBJIFBQQShzKS4KK1RoZSBQUEEgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgaW50ZXJmYWNlIG92ZXIgd2hpY2ggdHJhZmZpYyBpcyB0byBiZQorc2VudC9yZWNlaXZlZC4gVGhlIHN5bnRheCBvZiBhIEBkZm57cHBhc3BlY30gaXMgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzCithIEBkZm57c2l6ZXNwZWN9LgorQGl0ZW0gLXMgc2FwIAorVGhpcyBvcHRpb24gc3BlY2lmaWVzIHRoZSA4MDIuMiBTQVAgZm9yIHRoZSB0ZXN0LiAgQSBTQVAgaXMgc29tZXdoYXQKK2xpa2UgZWl0aGVyIHRoZSBwb3J0IGZpZWxkIG9mIGEgVENQIG9yIFVEUCBoZWFkZXIgb3IgdGhlIHByb3RvY29sCitmaWVsZCBvZiBhbiBJUCBoZWFkZXIuICBUaGUgc3BlY2lmaWVkIFNBUCBzaG91bGQgbm90IGNvbmZsaWN0IHdpdGggYW55CitvdGhlciBhY3RpdmUgU0FQcyBvbiB0aGUgc3BlY2lmaWVkIFBQQSdzIChAb3B0aW9uey1wfSBvcHRpb24pLgorQGl0ZW0gLXcgPHNpemVzcGVjPgorVGhpcyBvcHRpb24gc3BlY2lmaWVzIHRoZSBsb2NhbCBzZW5kIGFuZCByZWNlaXZlIHdpbmRvdyBzaXplcyBpbiB1bml0cworb2YgZnJhbWVzIG9uIHRob3NlIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IHNldHRpbmcgc3VjaCB0aGluZ3MuCitAaXRlbSAtVyA8c2l6ZXNwZWM+CitUaGlzIG9wdGlvbiBzcGVjaWZpZXMgdGhlIHJlbW90ZSBzZW5kIGFuZCByZWNlaXZlIHdpbmRvdyBzaXplcyBpbgordW5pdHMgb2YgZnJhbWVzIG9uIHRob3NlIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IHNldHRpbmcgc3VjaCB0aGluZ3MuCitAZW5kIHRhYmxlCisKK1RoZSBETENPX1NUUkVBTSB0ZXN0IGlzIG9ubHkgcHJlc2VudCBpZiBuZXRwZXJmIHdhcyBjb25maWd1cmVkIHdpdGgKK0Bjb2Rley0tZW5hYmxlLWRscGk9eWVzfS4gVGhlIHJlbW90ZSBuZXRzZXJ2ZXIgbXVzdCBoYXZlIGFsc28gYmVlbgorY29uZmlndXJlZCB3aXRoIEBjb2Rley0tZW5hYmxlLWRscGk9eWVzfS4KKworCitAbm9kZSBETENMX1NUUkVBTSwgU1RSRUFNX1NUUkVBTSwgRExDT19TVFJFQU0sIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0BzdWJzZWN0aW9uIERMQ0xfU1RSRUFNCisKK0EgRExQSSBDb25uZWN0aW9uTGVzcyBTdHJlYW0gKERMQ0xfU1RSRUFNKSB0ZXN0IGlzIGFuYWxvZ291cyB0byBhCitAcmVme1VEUF9TVFJFQU19IHRlc3QgaW4gdGhhdCBib3RoIG1ha2UgdXNlIG9mIHVucmVsaWFibGUvYmVzdC1lZmZvcnQsCitjb25uZWN0aW9uLWxlc3MgdHJhbnNwb3J0cy4gIFRoZSBETENMX1NUUkVBTSB0ZXN0IGRpZmZlcnMgZnJvbSB0aGUKK0ByZWZ7VURQX1NUUkVBTX0gdGVzdCBpbiB0aGF0IHRoZSBtZXNzYWdlIHNpemUgKEBvcHRpb257LW19IG9wdGlvbikgbXVzdAorYWx3YXlzIGJlIGxlc3MgdGhhbiB0aGUgbGluayBNVFUgYXMgdGhlcmUgaXMgbm8gSVAtbGlrZSBmcmFnbWVudGF0aW9uCithbmQgcmVhc3NlbWJseSBhdmFpbGFibGUgYW5kIG5ldHBlcmYgZG9lcyBub3QgcHJlc3VtZSB0byBwcm92aWRlIG9uZS4KKworVGhlIHRlc3Qtc3BlY2lmaWMgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIGEgRExDTF9TVFJFQU0gdGVzdCBhcmUgdGhlCitzYW1lIGFzIHRob3NlIGZvciBhIEByZWZ7RExDT19TVFJFQU19IHRlc3QuCisKK1RoZSBETENMX1NUUkVBTSB0ZXN0IGlzIG9ubHkgcHJlc2VudCBpZiBuZXRwZXJmIHdhcyBjb25maWd1cmVkIHdpdGgKK0Bjb2Rley0tZW5hYmxlLWRscGk9eWVzfS4gVGhlIHJlbW90ZSBuZXRzZXJ2ZXIgbXVzdCBoYXZlIGFsc28gYmVlbgorY29uZmlndXJlZCB3aXRoIEBjb2Rley0tZW5hYmxlLWRscGk9eWVzfS4KKworQG5vZGUgU1RSRUFNX1NUUkVBTSwgREdfU1RSRUFNLCBETENMX1NUUkVBTSwgT3B0aW9ucyBjb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCB0ZXN0cworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBTVFJFQU1fU1RSRUFNCisKK0EgVW5peCBEb21haW4gU3RyZWFtIFNvY2tldCBTdHJlYW0gdGVzdCAoU1RSRUFNX1NUUkVBTSkgaXMgc2ltaWxhciBpbgorY29uY2VwdCB0byBhIEByZWZ7VENQX1NUUkVBTX0gdGVzdCwgYnV0IHVzaW5nIFVuaXggRG9tYWluIHNvY2tldHMuICBJdCBpcywKK25hdHVyYWxseSwgbGltaXRlZCB0byBpbnRyYS1tYWNoaW5lIHRyYWZmaWMuICBBIFNUUkVBTV9TVFJFQU0gdGVzdAorc2hhcmVzIHRoZSBAb3B0aW9uey1tfSwgQG9wdGlvbnstTX0sIEBvcHRpb257LXN9IGFuZCBAb3B0aW9uey1TfQorb3B0aW9ucyBvZiB0aGUgb3RoZXIgX1NUUkVBTSB0ZXN0cy4gIEluIGEgU1RSRUFNX1NUUkVBTSB0ZXN0IHRoZQorQG9wdGlvbnstcH0gb3B0aW9uIHNldHMgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgcGlwZXMgd2lsbCBiZQorY3JlYXRlZCByYXRoZXIgdGhhbiBzZXR0aW5nIGEgcG9ydCBudW1iZXIuICBUaGUgZGVmYXVsdCBpcyB0byBjcmVhdGUKK3RoZSBwaXBlcyBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgZm9yIHRoZSBAY29kZXt0ZW1wbmFtKCl9IGNhbGwuCisKK1RoZSBTVFJFQU1fU1RSRUFNIHRlc3QgaXMgb25seSBwcmVzZW50IGlmIG5ldHBlcmYgd2FzIGNvbmZpZ3VyZWQgd2l0aAorQGNvZGV7LS1lbmFibGUtdW5peGRvbWFpbj15ZXN9LiBUaGUgcmVtb3RlIG5ldHNlcnZlciBtdXN0IGhhdmUgYWxzbyBiZWVuCitjb25maWd1cmVkIHdpdGggQGNvZGV7LS1lbmFibGUtdW5peGRvbWFpbj15ZXN9LgorCitAbm9kZSBER19TVFJFQU0sICAsIFNUUkVBTV9TVFJFQU0sIE9wdGlvbnMgY29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgdGVzdHMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gREdfU1RSRUFNCisKK0EgVW5peCBEb21haW4gRGF0YWdyYW0gU29ja2V0IFN0cmVhbSB0ZXN0IChTR19TVFJFQU0pIGlzIHZlcnkgbXVjaAorbGlrZSBhIEByZWZ7VENQX1NUUkVBTX0gdGVzdCBleGNlcHQgdGhhdCBtZXNzYWdlIGJvdW5kYXJpZXMgYXJlIHByZXNlcnZlZC4KK0luIHRoaXMgd2F5LCBpdCBtYXkgYWxzbyBiZSBjb25zaWRlcmVkIHNpbWlsYXIgdG8gY2VydGFpbiBmbGF2b3JzIG9mCitTQ1RQIHRlc3Qgd2hpY2ggY2FuIGFsc28gcHJlc2VydmUgbWVzc2FnZSBib3VuZGFyaWVzLgorCitBbGwgdGhlIG9wdGlvbnMgb2YgYSBAcmVme1NUUkVBTV9TVFJFQU19IHRlc3QgYXJlIGFwcGxpY2FibGUgdG8gYSBER19TVFJFQU0KK3Rlc3QuIAorCitUaGUgREdfU1RSRUFNIHRlc3QgaXMgb25seSBwcmVzZW50IGlmIG5ldHBlcmYgd2FzIGNvbmZpZ3VyZWQgd2l0aAorQGNvZGV7LS1lbmFibGUtdW5peGRvbWFpbj15ZXN9LiBUaGUgcmVtb3RlIG5ldHNlcnZlciBtdXN0IGhhdmUgYWxzbyBiZWVuCitjb25maWd1cmVkIHdpdGggQGNvZGV7LS1lbmFibGUtdW5peGRvbWFpbj15ZXN9LgorCisKK0Bub2RlIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBSZXF1ZXN0L1Jlc3BvbnNlICwgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEFnZ3JlZ2F0ZSBQZXJmb3JtYW5jZSwgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEJ1bGsgRGF0YSBUcmFuc2ZlciwgVG9wCitAY2hhcHRlciBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgUmVxdWVzdC9SZXNwb25zZSAKKworUmVxdWVzdC9yZXNwb25zZSBwZXJmb3JtYW5jZSBpcyBvZnRlbiBvdmVybG9va2VkLCB5ZXQgaXQgaXMganVzdCBhcworaW1wb3J0YW50IGFzIGJ1bGstdHJhbnNmZXIgcGVyZm9ybWFuY2UuICBXaGlsZSB0aGluZ3MgbGlrZSBsYXJnZXIKK3NvY2tldCBidWZmZXJzIGFuZCBUQ1Agd2luZG93cywgYW5kIHN0YXRlbGVzcyBvZmZsb2FkcyBsaWtlIFRTTyBhbmQKK0xSTyBjYW4gY292ZXIgYSBtdWx0aXR1ZGUgb2YgbGF0ZW5jeSBhbmQgZXZlbiBwYXRoLWxlbmd0aCBzaW5zLCB0aG9zZQorc2lucyBjYW5ub3QgZWFzaWx5IGhpZGUgZnJvbSBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdC4gIFRoZSBjb252ZW50aW9uCitmb3IgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QgaXMgdG8gaGF2ZSBhIF9SUiBzdWZmaXguICBUaGVyZSBhcmUKK2hvd2V2ZXIgYSBmZXcgYGByZXF1ZXN0L3Jlc3BvbnNlJycgdGVzdHMgdGhhdCBoYXZlIG90aGVyIHN1ZmZpeGVzLgorCitBIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgcGFydGljdWxhcmx5IHN5bmNocm9ub3VzLCBvbmUgdHJhbnNhY3Rpb24gYXQKK2EgdGltZSB0ZXN0IHN1Y2ggYXMgdGhvc2UgZm91bmQgYnkgZGVmYXVsdCBpbiBuZXRwZXJmLCBpcyBwYXJ0aWN1bGFybHkKK3NlbnNpdGl2ZSB0byB0aGUgcGF0aC1sZW5ndGggb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suICBBbiBfUlIgdGVzdCBjYW4KK2Fsc28gdW5jb3ZlciB0aG9zZSBwbGF0Zm9ybXMgd2hlcmUgdGhlIE5JQ3MgYXJlIHN0cmFwcGVkIGJ5IGRlZmF1bHQKK3dpdGggb3ZlcmJlYXJpbmcgaW50ZXJydXB0IGF2b2lkYW5jZSBzZXR0aW5ncyBpbiBhbiBhdHRlbXB0IHRvCitpbmNyZWFzZSB0aGUgYnVsay10cmFuc2ZlciBwZXJmb3JtYW5jZSAob3IgcmF0aGVyLCBkZWNyZWFzZSB0aGUgQ1BVCit1dGlsaXphdGlvbiBvZiBhIGJ1bGstdHJhbnNmZXIgdGVzdCkuICBUaGlzIHNlbnNpdGl2aXR5IGlzIG1vc3QgYWN1dGUKK2ZvciBzbWFsbCByZXF1ZXN0IGFuZCByZXNwb25zZSBzaXplcywgc3VjaCBhcyB0aGUgc2luZ2xlLWJ5dGUgZGVmYXVsdAorZm9yIGEgbmV0cGVyZiBfUlIgdGVzdC4KKworV2hpbGUgYSBidWxrLXRyYW5zZmVyIHRlc3QgcmVwb3J0cyBpdHMgcmVzdWx0cyBpbiB1bml0cyBvZiBiaXRzIG9yCitieXRlcyB0cmFuc2ZlcnJlZCBwZXIgc2Vjb25kLCBieSBkZWZhdWx0IGEgbXVtYmxlX1JSIHRlc3QgcmVwb3J0cwordHJhbnNhY3Rpb25zIHBlciBzZWNvbmQgd2hlcmUgYSB0cmFuc2FjdGlvbiBpcyBkZWZpbmVkIGFzIHRoZQorY29tcGxldGVkIGV4Y2hhbmdlIG9mIGEgcmVxdWVzdCBhbmQgYSByZXNwb25zZS4gIE9uZSBjYW4gaW52ZXJ0IHRoZQordHJhbnNhY3Rpb24gcmF0ZSB0byBhcnJpdmUgYXQgdGhlIGF2ZXJhZ2Ugcm91bmQtdHJpcCBsYXRlbmN5LiAgSWYgb25lCitpcyBjb25maWRlbnQgYWJvdXQgdGhlIHN5bW1ldHJ5IG9mIHRoZSBjb25uZWN0aW9uLCB0aGUgYXZlcmFnZSBvbmUtd2F5CitsYXRlbmN5IGNhbiBiZSB0YWtlbiBhcyBvbmUtaGFsZiB0aGUgYXZlcmFnZSByb3VuZC10cmlwIGxhdGVuY3kuIEFzIG9mCit2ZXJzaW9uIDIuNS4wIChhY3R1YWxseSBzbGlnaHRseSBiZWZvcmUpIG5ldHBlcmYgc3RpbGwgZG9lcyBub3QgZG8gdGhlCitsYXR0ZXIsIGJ1dCB3aWxsIGRvIHRoZSBmb3JtZXIgaWYgb25lIHNldHMgdGhlIHZlcmJvc2l0eSB0byAyIGZvciBhCitjbGFzc2ljIG5ldHBlcmYgdGVzdCwgb3IgaW5jbHVkZXMgdGhlIGFwcHJvcHJpYXRlIEByZWZ7T21uaSBPdXRwdXQKK1NlbGVjdG9ycyxvdXRwdXQgc2VsZWN0b3J9IGluIGFuIEByZWZ7VGhlIE9tbmkgVGVzdHMsb21uaSB0ZXN0fS4gIEl0Cit3aWxsIGFsc28gYWxsb3cgdGhlIHVzZXIgdG8gc3dpdGNoIHRoZSB0aHJvdWdocHV0IHVuaXRzIGZyb20KK3RyYW5zYWN0aW9ucyBwZXIgc2Vjb25kIHRvIGJpdHMgb3IgYnl0ZXMgcGVyIHNlY29uZCB3aXRoIHRoZSBnbG9iYWwKK0BvcHRpb257LWZ9IG9wdGlvbi4KKworQG1lbnUKKyogSXNzdWVzIGluIFJlcXVlc3QvUmVzcG9uc2U6OiAgCisqIE9wdGlvbnMgQ29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgX1JSIHRlc3RzOjogIAorQGVuZCBtZW51CisKK0Bub2RlIElzc3VlcyBpbiBSZXF1ZXN0L1Jlc3BvbnNlLCBPcHRpb25zIENvbW1vbiB0byBUQ1AgVURQIGFuZCBTQ1RQIF9SUiB0ZXN0cywgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIFJlcXVlc3QvUmVzcG9uc2UgLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgUmVxdWVzdC9SZXNwb25zZQorQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc2VjdGlvbiBJc3N1ZXMgaW4gUmVxdWVzdC9SZXNwb25zZQorCitNb3N0IGlmIG5vdCBhbGwgdGhlIEByZWZ7SXNzdWVzIGluIEJ1bGsgVHJhbnNmZXJ9IGFwcGx5IHRvCityZXF1ZXN0L3Jlc3BvbnNlLiAgVGhlIGlzc3VlIG9mIHJvdW5kLXRyaXAgbGF0ZW5jeSBpcyBldmVuIG1vcmUKK2ltcG9ydGFudCBhcyBuZXRwZXJmIGdlbmVyYWxseSBvbmx5IGhhcyBvbmUgdHJhbnNhY3Rpb24gb3V0c3RhbmRpbmcgYXQKK2EgdGltZS4KKworQSBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBvbmUgdHJhbnNhY3Rpb24gb3V0c3RhbmRpbmcgX1JSIHRlc3Qgc2hvdWxkCitfbmV2ZXJfIGNvbXBsZXRlbHkgc2F0dXJhdGUgdGhlIENQVSBvZiBhIHN5c3RlbS4gIElmIHRlc3RpbmcgYmV0d2Vlbgorb3RoZXJ3aXNlIGV2ZW5seSBtYXRjaGVkIHN5c3RlbXMsIHRoZSBzeW1tZXRyaWMgbmF0dXJlIG9mIGEgX1JSIHRlc3QKK3dpdGggZXF1YWwgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc2l6ZXMgc2hvdWxkIHJlc3VsdCBpbiBlcXVhbCBDUFUKK2xvYWRpbmcgb24gYm90aCBzeXN0ZW1zLiBIb3dldmVyLCB0aGlzIG1heSBub3QgaG9sZCB0cnVlIG9uIE1QCitzeXN0ZW1zLCBwYXJ0aWN1bGFybHkgaWYgb25lIENQVSBiaW5kcyB0aGUgbmV0cGVyZiBhbmQgbmV0c2VydmVyCitkaWZmZXJlbnRseSB2aWEgdGhlIGdsb2JhbCBAb3B0aW9uey1UfSBvcHRpb24uCisKK0ZvciBzbWFsbGVyIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHNpemVzIHBhY2tldCBsb3NzIGlzIGEgYmlnZ2VyIGlzc3VlCithcyB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSBmb3IgYSBAZGZue2Zhc3QgcmV0cmFuc21pdH0gb3IKK3JldHJhbnNtaXNzaW9uIHByaW9yIHRvIGEgcmV0cmFuc21pc3Npb24gdGltZXIgZXhwaXJpbmcuCisKK1ZpcnR1YWxpemF0aW9uIG1heSBjb25zaWRlcmFibHkgaW5jcmVhc2UgdGhlIGVmZmVjdGl2ZSBwYXRoIGxlbmd0aCBvZgorYSBuZXR3b3JraW5nIHN0YWNrLiAgV2hpbGUgdGhpcyBtYXkgbm90IHByZWNsdWRlIGFjaGlldmluZyBsaW5rLXJhdGUKK29uIGEgY29tcGFyYXRpdmVseSBzbG93IGxpbmsgKGVnIDEgR2lnYWJpdCBFdGhlcm5ldCkgb24gYSBfU1RSRUFNCit0ZXN0LCBpdCBjYW4gc2hvdy11cCBhcyBtZWFzdXJhYmx5IGZld2VyIHRyYW5zYWN0aW9ucyBwZXIgc2Vjb25kIG9uIGFuCitfUlIgdGVzdC4gIEhvd2V2ZXIsIHRoaXMgbWF5IHN0aWxsIGJlIG1hc2tlZCBieSBpbnRlcnJ1cHQgY29hbGVzY2luZworaW4gdGhlIE5JQy9kcml2ZXIuCisKK0NlcnRhaW4gTklDcyBoYXZlIHdheXMgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBpbnRlcnJ1cHRzIHNlbnQgdG8KK3RoZSBob3N0LiAgSWYgdGhlc2UgYXJlIHN0cmFwcGVkIGJhZGx5IHRoZXkgY2FuIHNpZ25pZmljYW50bHkgcmVkdWNlCit0aGUgcGVyZm9ybWFuY2Ugb2Ygc29tZXRoaW5nIGxpa2UgYSBzaW5nbGUtYnl0ZSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QuCitTdWNoIHNldHVwcyBhcmUgZGlzdGluZ3Vpc2hlZCBieSBzZXJpb3VzbHkgbG93IHJlcG9ydGVkIENQVSB1dGlsaXphdGlvbgorYW5kIHdoYXQgc2VlbXMgbGlrZSBhIGxvdyAoZXZlbiBpZiBpbiB0aGUgdGhvdXNhbmRzKSB0cmFuc2FjdGlvbiBwZXIKK3NlY29uZCByYXRlLiAgQWxzbywgaWYgeW91IHJ1biBzdWNoIGFuIE9TL2RyaXZlciBjb21iaW5hdGlvbiBvbiBmYXN0ZXIKK29yIHNsb3dlciBoYXJkd2FyZSBhbmQgZG8gbm90IHNlZSBhIGNvcnJlc3BvbmRpbmcgY2hhbmdlIGluIHRoZQordHJhbnNhY3Rpb24gcmF0ZSwgY2hhbmNlcyBhcmUgZ29vZCB0aGF0IHRoZSBkcml2ZXIgaXMgc3RyYXBwaW5nIHRoZQorTklDIHdpdGggYWdncmVzc2l2ZSBpbnRlcnJ1cHQgYXZvaWRhbmNlIHNldHRpbmdzLiAgR29vZCBmb3IgYnVsawordGhyb3VnaHB1dCwgYnV0IGJhZCBmb3IgbGF0ZW5jeS4KKworU29tZSBkcml2ZXJzIG1heSB0cnkgdG8gYXV0b21hZ2ljYWxseSBhZGp1c3QgdGhlIGludGVycnVwdCBhdm9pZGFuY2UKK3NldHRpbmdzLiAgSWYgdGhleSBhcmUgbm90IHRlcnJpYmx5IGdvb2QgYXQgaXQsIHlvdSB3aWxsIHNlZQorY29uc2lkZXJhYmxlIHJ1bi10by1ydW4gdmFyaWF0aW9uIGluIHJlcG9ydGVkIHRyYW5zYWN0aW9uIHJhdGVzLgorUGFydGljdWxhcmx5IGlmIHlvdSBgYG1peC11cCcnIF9TVFJFQU0gYW5kIF9SUiB0ZXN0cy4KKworCitAbm9kZSBPcHRpb25zIENvbW1vbiB0byBUQ1AgVURQIGFuZCBTQ1RQIF9SUiB0ZXN0cywgICwgSXNzdWVzIGluIFJlcXVlc3QvUmVzcG9uc2UsIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBSZXF1ZXN0L1Jlc3BvbnNlCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIE9wdGlvbnMgQ29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgX1JSIHRlc3RzCisKK01hbnkgYGB0ZXN0LXNwZWNpZmljJycgb3B0aW9ucyBhcmUgYWN0dWFsbHkgY29tbW9uIGFjcm9zcyB0aGUKK2RpZmZlcmVudCB0ZXN0cy4gIEZvciB0aG9zZSB0ZXN0cyBpbnZvbHZpbmcgVENQLCBVRFAgYW5kIFNDVFAsIHdoZXRoZXIKK3VzaW5nIHRoZSBCU0QgU29ja2V0cyBvciB0aGUgWFRJIGludGVyZmFjZSB0aG9zZSBjb21tb24gb3B0aW9ucworaW5jbHVkZToKKworQHRhYmxlIEBjb2RlCitAdmluZGV4IC1oLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtaAorRGlzcGxheSB0aGUgdGVzdC1zdWl0ZS1zcGVjaWZpYyB1c2FnZSBzdHJpbmcgYW5kIGV4aXQuICBGb3IgYSBUQ1BfIG9yCitVRFBfIHRlc3QgdGhpcyB3aWxsIGJlIHRoZSB1c2FnZSBzdHJpbmcgZnJvbSB0aGUgc291cmNlIGZpbGUKK0BmaWxle25ldHRlc3RfYnNkLmN9LiAgRm9yIGFuIFhUSV8gdGVzdCwgdGhpcyB3aWxsIGJlIHRoZSB1c2FnZSBzdHJpbmcKK2Zyb20gdGhlIHNvdXJjZSBmaWxlIEBmaWxle3NyYy9uZXR0ZXN0X3h0aS5jfS4gIEZvciBhbiBTQ1RQIHRlc3QsIHRoaXMKK3dpbGwgYmUgdGhlIHVzYWdlIHN0cmluZyBmcm9tIHRoZSBzb3VyY2UgZmlsZQorQGZpbGV7c3JjL25ldHRlc3Rfc2N0cC5jfS4KKworQHZpbmRleCAtSCwgVGVzdC1zcGVjaWZpYworQGl0ZW0gLUggPG9wdGlvbnNwZWM+CitOb3JtYWxseSwgdGhlIHJlbW90ZSBob3N0bmFtZXxJUCBhbmQgYWRkcmVzcyBmYW1pbHkgaW5mb3JtYXRpb24gaXMKK2luaGVyaXRlZCBmcm9tIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGNvbnRyb2wgY29ubmVjdGlvbiAoZWcgZ2xvYmFsCitjb21tYW5kLWxpbmUgQG9wdGlvbnstSH0sIEBvcHRpb257LTR9IGFuZC9vciBAb3B0aW9uey02fSBvcHRpb25zLgorVGhlIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstSH0gd2lsbCBvdmVycmlkZSB0aG9zZSBzZXR0aW5ncyBmb3IgdGhlCitkYXRhIChha2EgdGVzdCkgY29ubmVjdGlvbiBvbmx5LiAgU2V0dGluZ3MgZm9yIHRoZSBjb250cm9sIGNvbm5lY3Rpb24KK2FyZSBsZWZ0IHVuY2hhbmdlZC4gIFRoaXMgbWlnaHQgYmUgdXNlZCB0byBjYXVzZSB0aGUgY29udHJvbCBhbmQgZGF0YQorY29ubmVjdGlvbnMgdG8gdGFrZSBkaWZmZXJlbnQgcGF0aHMgdGhyb3VnaCB0aGUgbmV0d29yay4KKworQHZpbmRleCAtTCwgVGVzdC1zcGVjaWZpYworQGl0ZW0gLUwgPG9wdGlvbnNwZWM+CitUaGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1MfSBvcHRpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSB0ZXN0LXNwZWNpZmljCitAb3B0aW9uey1IfSBvcHRpb24gZXhjZXB0IGl0IGFmZmVjdHMgdGhlIGxvY2FsIGhvc3RuYW1lfElQIGFuZCBhZGRyZXNzCitmYW1pbHkgaW5mb3JtYXRpb24uICBBcyB3aXRoIGl0cyBnbG9iYWwgY29tbWFuZC1saW5lIGNvdW50ZXJwYXJ0LCB0aGlzCitpcyBnZW5lcmFsbHkgb25seSB1c2VmdWwgd2hlbiBtZWFzdXJpbmcgdGhvdWdoIHRob3NlIGV2aWwsIGVuZC10by1lbmQKK2JyZWFraW5nIHRoaW5ncyBjYWxsZWQgZmlyZXdhbGxzLgorCitAdmluZGV4IC1QLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtUCA8b3B0aW9uc3BlYz4KK1NldCB0aGUgbG9jYWwgYW5kL29yIHJlbW90ZSBwb3J0IG51bWJlcnMgZm9yIHRoZSBkYXRhIGNvbm5lY3Rpb24uCisKK0B2aW5kZXggLXIsIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1yIDxzaXplc3BlYz4KK1RoaXMgb3B0aW9uIHNldHMgdGhlIHJlcXVlc3QgKGZpcnN0IHZhbHVlKSBhbmQvb3IgcmVzcG9uc2UgKHNlY29uZAordmFsdWUpIHNpemVzIGZvciBhbiBfUlIgdGVzdC4gQnkgZGVmYXVsdCB0aGUgdW5pdHMgYXJlIGJ5dGVzLCBidXQgYQorc3VmZml4IG9mIGBgRywnJyBgYE0sJycgb3IgYGBLJycgd2lsbCBzcGVjaWZ5IHRoZSB1bml0cyB0byBiZSAyXjMwCisoR0IpLCAyXjIwIChNQikgb3IgMl4xMCAoS0IpIHJlc3BlY3RpdmVseS4gIEEgc3VmZml4IG9mIGBgZywnJyBgYG0nJworb3IgYGBrJycgd2lsbCBzcGVjaWZ5IHVuaXRzIG9mIDEwXjksIDEwXjYgb3IgMTBeMyBieXRlcworcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZToKK0BleGFtcGxlCitAY29kZXstciAxMjgsMTZLfQorQGVuZCBleGFtcGxlCitXaWxsIHNldCB0aGUgcmVxdWVzdCBzaXplIHRvIDEyOCBieXRlcyBhbmQgdGhlIHJlc3BvbnNlIHNpemUgdG8gMTYgS0IKK29yIDE2Mzg0IGJ5dGVzLiBbRGVmYXVsdDogMSAtIGEgc2luZ2xlLWJ5dGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgXQorCitAdmluZGV4IC1zLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtcyA8c2l6ZXNwZWM+CitUaGlzIG9wdGlvbiBzZXRzIHRoZSBsb2NhbCAobmV0cGVyZikgc2VuZCBhbmQgcmVjZWl2ZSBzb2NrZXQgYnVmZmVyCitzaXplcyBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiB0byB0aGUgdmFsdWUocykgc3BlY2lmaWVkLiAgT2Z0ZW4sIHRoaXMKK3dpbGwgYWZmZWN0IHRoZSBhZHZlcnRpc2VkIGFuZC9vciBlZmZlY3RpdmUgVENQIG9yIG90aGVyIHdpbmRvdywgYnV0CitvbiBzb21lIHBsYXRmb3JtcyBpdCBtYXkgbm90LiBCeSBkZWZhdWx0IHRoZSB1bml0cyBhcmUgYnl0ZXMsIGJ1dCBhCitzdWZmaXggb2YgYGBHLCcnIGBgTSwnJyBvciBgYEsnJyB3aWxsIHNwZWNpZnkgdGhlIHVuaXRzIHRvIGJlIDJeMzAKKyhHQiksIDJeMjAgKE1CKSBvciAyXjEwIChLQikgcmVzcGVjdGl2ZWx5LiAgQSBzdWZmaXggb2YgYGBnLCcnIGBgbScnCitvciBgYGsnJyB3aWxsIHNwZWNpZnkgdW5pdHMgb2YgMTBeOSwgMTBeNiBvciAxMF4zIGJ5dGVzCityZXNwZWN0aXZlbHkuIEZvciBleGFtcGxlOgorQGV4YW1wbGUKK0Bjb2Rley1zIDEyOEt9CitAZW5kIGV4YW1wbGUKK1dpbGwgcmVxdWVzdCB0aGUgbG9jYWwgc2VuZCAobmV0cGVyZikgYW5kIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplcwordG8gYmUgMTI4S0Igb3IgMTMxMDcyIGJ5dGVzLgorCitXaGlsZSB0aGUgaGlzdG9yaWMgZXhwZWN0YXRpb24gaXMgdGhhdCBzZXR0aW5nIHRoZSBzb2NrZXQgYnVmZmVyIHNpemUKK2hhcyBhIGRpcmVjdCBlZmZlY3Qgb24gc2F5IHRoZSBUQ1Agd2luZG93LCB0b2RheSB0aGF0IG1heSBub3QgaG9sZAordHJ1ZSBmb3IgYWxsIHN0YWNrcy4gIFdoZW4gcnVubmluZyB1bmRlciBXaW5kb3dzIGEgdmFsdWUgb2YgMCBtYXkgYmUKK3VzZWQgd2hpY2ggd2lsbCBiZSBhbiBpbmRpY2F0aW9uIHRvIHRoZSBzdGFjayB0aGUgdXNlciB3YW50cyB0byBlbmFibGUKK2EgZm9ybSBvZiBjb3B5IGF2b2lkYW5jZS4gW0RlZmF1bHQ6IC0xIC0gdXNlIHRoZSBzeXN0ZW0ncyBkZWZhdWx0Citzb2NrZXQgYnVmZmVyIHNpemVzXQorCitAdmluZGV4IC1TLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtUyA8c2l6ZXNwZWM+CitUaGlzIG9wdGlvbiBzZXRzIHRoZSByZW1vdGUgKG5ldHNlcnZlcikgc2VuZCBhbmQvb3IgcmVjZWl2ZSBzb2NrZXQKK2J1ZmZlciBzaXplcyBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiB0byB0aGUgdmFsdWUocykgc3BlY2lmaWVkLgorT2Z0ZW4sIHRoaXMgd2lsbCBhZmZlY3QgdGhlIGFkdmVydGlzZWQgYW5kL29yIGVmZmVjdGl2ZSBUQ1Agb3Igb3RoZXIKK3dpbmRvdywgYnV0IG9uIHNvbWUgcGxhdGZvcm1zIGl0IG1heSBub3QuIEJ5IGRlZmF1bHQgdGhlIHVuaXRzIGFyZQorYnl0ZXMsIGJ1dCBhIHN1ZmZpeCBvZiBgYEcsJycgYGBNLCcnIG9yIGBgSycnIHdpbGwgc3BlY2lmeSB0aGUgdW5pdHMKK3RvIGJlIDJeMzAgKEdCKSwgMl4yMCAoTUIpIG9yIDJeMTAgKEtCKSByZXNwZWN0aXZlbHkuICBBIHN1ZmZpeCBvZgorYGBnLCcnIGBgbScnIG9yIGBgaycnIHdpbGwgc3BlY2lmeSB1bml0cyBvZiAxMF45LCAxMF42IG9yIDEwXjMgYnl0ZXMKK3Jlc3BlY3RpdmVseS4gIEZvciBleGFtcGxlOgorQGV4YW1wbGUKK0Bjb2Rley1TIDEyOEt9CitAZW5kIGV4YW1wbGUKK1dpbGwgcmVxdWVzdCB0aGUgcmVtb3RlIChuZXRzZXJ2ZXIpIHNlbmQgYW5kIHJlY2VpdmUgc29ja2V0IGJ1ZmZlcgorc2l6ZXMgdG8gYmUgMTI4S0Igb3IgMTMxMDcyIGJ5dGVzLgorCitXaGlsZSB0aGUgaGlzdG9yaWMgZXhwZWN0YXRpb24gaXMgdGhhdCBzZXR0aW5nIHRoZSBzb2NrZXQgYnVmZmVyIHNpemUKK2hhcyBhIGRpcmVjdCBlZmZlY3Qgb24gc2F5IHRoZSBUQ1Agd2luZG93LCB0b2RheSB0aGF0IG1heSBub3QgaG9sZAordHJ1ZSBmb3IgYWxsIHN0YWNrcy4gIFdoZW4gcnVubmluZyB1bmRlciBXaW5kb3dzIGEgdmFsdWUgb2YgMCBtYXkgYmUKK3VzZWQgd2hpY2ggd2lsbCBiZSBhbiBpbmRpY2F0aW9uIHRvIHRoZSBzdGFjayB0aGUgdXNlciB3YW50cyB0byBlbmFibGUKK2EgZm9ybSBvZiBjb3B5IGF2b2lkYW5jZS4gIFtEZWZhdWx0OiAtMSAtIHVzZSB0aGUgc3lzdGVtJ3MgZGVmYXVsdAorc29ja2V0IGJ1ZmZlciBzaXplc10KKworQHZpbmRleCAtNCwgVGVzdC1zcGVjaWZpYworQGl0ZW0gLTQKK1NldCB0aGUgbG9jYWwgYW5kIHJlbW90ZSBhZGRyZXNzIGZhbWlseSBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiB0bworQUZfSU5FVCAtIGllIHVzZSBJUHY0IGFkZHJlc3Npbmcgb25seS4gIEp1c3QgYXMgd2l0aCB0aGVpciBnbG9iYWwKK2NvbW1hbmQtbGluZSBjb3VudGVycGFydHMgdGhlIGxhc3Qgb2YgdGhlIEBvcHRpb257LTR9LCBAb3B0aW9uey02fSwKK0BvcHRpb257LUh9IG9yIEBvcHRpb257LUx9IG9wdGlvbiB3aW5zIGZvciB0aGVpciByZXNwZWN0aXZlIGFkZHJlc3MKK2ZhbWlsaWVzLgorCitAdmluZGV4IC02IFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC02CitUaGlzIG9wdGlvbiBpcyBpZGVudGljYWwgdG8gaXRzIEBvcHRpb257LTR9IGNvdXNpbiwgYnV0IHJlcXVlc3RzIElQdjYKK2FkZHJlc3NlcyBmb3IgdGhlIGxvY2FsIGFuZCByZW1vdGUgZW5kcyBvZiB0aGUgZGF0YSBjb25uZWN0aW9uLgorCitAZW5kIHRhYmxlCisKK0BtZW51CisqIFRDUF9SUjo6ICAgICAgICAgICAgICAgICAgICAgIAorKiBUQ1BfQ0M6OiAgICAgICAgICAgICAgICAgICAgICAKKyogVENQX0NSUjo6ICAgICAgICAgICAgICAgICAgICAgCisqIFVEUF9SUjo6ICAgICAgICAgICAgICAgICAgICAgIAorKiBYVElfVENQX1JSOjogICAgICAgICAgICAgICAgICAKKyogWFRJX1RDUF9DQzo6ICAgICAgICAgICAgICAgICAgCisqIFhUSV9UQ1BfQ1JSOjogICAgICAgICAgICAgICAgIAorKiBYVElfVURQX1JSOjogICAgICAgICAgICAgICAgICAKKyogRExDTF9SUjo6ICAgICAgICAgICAgICAgICAgICAgCisqIERMQ09fUlI6OiAgICAgICAgICAgICAgICAgICAgIAorKiBTQ1RQX1JSOjogICAgICAgICAgICAgICAgICAgICAKK0BlbmQgbWVudQorCitAbm9kZSBUQ1BfUlIsIFRDUF9DQywgT3B0aW9ucyBDb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCBfUlIgdGVzdHMsIE9wdGlvbnMgQ29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgX1JSIHRlc3RzCitAc3Vic2VjdGlvbiBUQ1BfUlIKK0BjaW5kZXggTWVhc3VyaW5nIExhdGVuY3kKK0BjaW5kZXggTGF0ZW5jeSwgUmVxdWVzdC1SZXNwb25zZQorCitBIFRDUF9SUiAoVENQIFJlcXVlc3QvUmVzcG9uc2UpIHRlc3QgaXMgcmVxdWVzdGVkIGJ5IHBhc3NpbmcgYSB2YWx1ZQorb2YgYGBUQ1BfUlInJyB0byB0aGUgZ2xvYmFsIEBvcHRpb257LXR9IGNvbW1hbmQtbGluZSBvcHRpb24uICBBIFRDUF9SUgordGVzdCBjYW4gYmUgdGhvdWdodC1vZiBhcyBhIHVzZXItc3BhY2UgdG8gdXNlci1zcGFjZSBAY29kZXtwaW5nfSB3aXRoCitubyB0aGluayB0aW1lIC0gaXQgaXMgYnkgZGVmYXVsdCBhIHN5bmNocm9ub3VzLCBvbmUgdHJhbnNhY3Rpb24gYXQgYQordGltZSwgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LgorCitUaGUgdHJhbnNhY3Rpb24gcmF0ZSBpcyB0aGUgbnVtYmVyIG9mIGNvbXBsZXRlIHRyYW5zYWN0aW9ucyBleGNoYW5nZWQKK2RpdmlkZWQgYnkgdGhlIGxlbmd0aCBvZiB0aW1lIGl0IHRvb2sgdG8gcGVyZm9ybSB0aG9zZSB0cmFuc2FjdGlvbnMuCisKK0lmIHRoZSB0d28gU3lzdGVtcyBVbmRlciBUZXN0IGFyZSBvdGhlcndpc2UgaWRlbnRpY2FsLCBhIFRDUF9SUiB0ZXN0Cit3aXRoIHRoZSBzYW1lIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHNpemUgc2hvdWxkIGJlIHN5bW1ldHJpYyAtIGl0CitzaG91bGQgbm90IG1hdHRlciB3aGljaCB3YXkgdGhlIHRlc3QgaXMgcnVuLCBhbmQgdGhlIENQVSB1dGlsaXphdGlvbgorbWVhc3VyZWQgc2hvdWxkIGJlIHZpcnR1YWxseSB0aGUgc2FtZSBvbiBlYWNoIHN5c3RlbS4gIElmIG5vdCwgaXQKK3N1Z2dlc3RzIHRoYXQgdGhlIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc20gYmVpbmcgdXNlZCBtYXkgaGF2ZSBzb21lLAord2VsbCwgaXNzdWVzIG1lYXN1cmluZyBDUFUgdXRpbGl6YXRpb24gY29tcGxldGVseSBhbmQgYWNjdXJhdGVseS4KKworVGltZSB0byBlc3RhYmxpc2ggdGhlIFRDUCBjb25uZWN0aW9uIGlzIG5vdCBjb3VudGVkIGluIHRoZSByZXN1bHQuICBJZgoreW91IHdhbnQgY29ubmVjdGlvbiBzZXR1cCBvdmVyaGVhZHMgaW5jbHVkZWQsIHlvdSBzaG91bGQgY29uc2lkZXIgdGhlCitAcmVme1RDUF9DQyxUUENfQ0N9IG9yIEByZWZ7VENQX0NSUixUQ1BfQ1JSfSB0ZXN0cy4KKworSWYgc3BlY2lmeWluZyB0aGUgQG9wdGlvbnstRH0gb3B0aW9uIHRvIHNldCBUQ1BfTk9ERUxBWSBhbmQgZGlzYWJsZQordGhlIE5hZ2xlIEFsZ29yaXRobSBpbmNyZWFzZXMgdGhlIHRyYW5zYWN0aW9uIHJhdGUgcmVwb3J0ZWQgYnkgYQorVENQX1JSIHRlc3QsIGl0IGltcGxpZXMgdGhlIHN0YWNrKHMpIG92ZXIgd2hpY2ggdGhlIFRDUF9SUiB0ZXN0IGlzCitydW5uaW5nIGhhdmUgYSBicm9rZW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIE5hZ2xlIEFsZ29yaXRobS4gIExpa2VseQorYXMgbm90IHRoZXkgYXJlIGludGVycHJldGluZyBOYWdsZSBvbiBhIHNlZ21lbnQgYnkgc2VnbWVudCBiYXNpcworcmF0aGVyIHRoYW4gYSB1c2VyIHNlbmQgYnkgdXNlciBzZW5kIGJhc2lzLiAgWW91IHNob3VsZCBjb250YWN0IHlvdXIKK3N0YWNrIHZlbmRvcihzKSB0byByZXBvcnQgdGhlIHByb2JsZW0gdG8gdGhlbS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHR3byBzeXN0ZW1zIHJ1bm5pbmcgYSBiYXNpYyBUQ1BfUlIgdGVzdCBvdmVyIGEKKzEwIEdpZ2FiaXQgRXRoZXJuZXQgbGluazoKKworQGV4YW1wbGUKK25ldHBlcmYgLXQgVENQX1JSIC1IIDE5Mi4xNjguMi4xMjUKK1RDUCBSRVFVRVNUL1JFU1BPTlNFIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byAxOTIuMTY4LjIuMTI1ICgxOTIuMTY4LjIuMTI1KSBwb3J0IDAgQUZfSU5FVAorTG9jYWwgL1JlbW90ZQorU29ja2V0IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLgorU2VuZCAgIFJlY3YgICBTaXplICAgICBTaXplICAgIFRpbWUgICAgIFJhdGUgICAgICAgICAKK2J5dGVzICBCeXRlcyAgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgCisKKzE2Mzg0ICA4NzM4MCAgMSAgICAgICAgMSAgICAgICAxMC4wMCAgICAyOTE1MC4xNSAgIAorMTYzODQgIDg3MzgwIAorQGVuZCBleGFtcGxlCisKK0luIHRoaXMgZXhhbXBsZSB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc2l6ZXMgd2VyZSBvbmUgYnl0ZSwgdGhlCitzb2NrZXQgYnVmZmVycyB3ZXJlIGxlZnQgYXQgdGhlaXIgZGVmYXVsdHMsIGFuZCB0aGUgdGVzdCByYW4gZm9yIGFsbAorb2YgMTAgc2Vjb25kcy4gIFRoZSB0cmFuc2FjdGlvbiBwZXIgc2Vjb25kIHJhdGUgd2FzIHJhdGhlciBnb29kIGZvcgordGhlIHRpbWUgOikKKworQG5vZGUgVENQX0NDLCBUQ1BfQ1JSLCBUQ1BfUlIsIE9wdGlvbnMgQ29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgX1JSIHRlc3RzCitAc3Vic2VjdGlvbiBUQ1BfQ0MKK0BjaW5kZXggQ29ubmVjdGlvbiBMYXRlbmN5CitAY2luZGV4IExhdGVuY3ksIENvbm5lY3Rpb24gRXN0YWJsaXNobWVudAorCitBIFRDUF9DQyAoVENQIENvbm5lY3QvQ2xvc2UpIHRlc3QgaXMgcmVxdWVzdGVkIGJ5IHBhc3NpbmcgYSB2YWx1ZSBvZgorYGBUQ1BfQ0MnJyB0byB0aGUgZ2xvYmFsIEBvcHRpb257LXR9IG9wdGlvbi4gIEEgVENQX0NDIHRlc3Qgc2ltcGx5CittZWFzdXJlcyBob3cgZmFzdCB0aGUgcGFpciBvZiBzeXN0ZW1zIGNhbiBvcGVuIGFuZCBjbG9zZSBjb25uZWN0aW9ucworYmV0d2VlbiBvbmUgYW5vdGhlciBpbiBhIHN5bmNocm9ub3VzIChvbmUgYXQgYSB0aW1lKSBtYW5uZXIuICBXaGlsZQordGhpcyBpcyBjb25zaWRlcmVkIGFuIF9SUiB0ZXN0LCBubyByZXF1ZXN0IG9yIHJlc3BvbnNlIGlzIGV4Y2hhbmdlZAorb3ZlciB0aGUgY29ubmVjdGlvbi4KKworQGNpbmRleCBQb3J0IFJldXNlCitAY2luZGV4IFRJTUVfV0FJVAorVGhlIGlzc3VlIG9mIFRJTUVfV0FJVCByZXVzZSBpcyBhbiBpbXBvcnRhbnQgb25lIGZvciBhIFRDUF9DQyB0ZXN0LgorQmFzaWNhbGx5LCBUSU1FX1dBSVQgcmV1c2UgaXMgd2hlbiBhIHBhaXIgb2Ygc3lzdGVtcyBjaHVybiB0aHJvdWdoCitjb25uZWN0aW9ucyBmYXN0IGVub3VnaCB0aGF0IHRoZXkgd3JhcCB0aGUgMTYtYml0IHBvcnQgbnVtYmVyIHNwYWNlIGluCitsZXNzIHRpbWUgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBUSU1FX1dBSVQgc3RhdGUuICBXaGlsZSBpdCBpcyBpbmRlZWQKK3RoZW9yZXRpY2FsbHkgcG9zc2libGUgdG8gYGByZXVzZScnIGEgY29ubmVjdGlvbiBpbiBUSU1FX1dBSVQsIHRoZQorY29uZGl0aW9ucyB1bmRlciB3aGljaCBzdWNoIHJldXNlIGlzIHBvc3NpYmxlIGFyZSByYXRoZXIgcmFyZS4gIEFuCithdHRlbXB0IHRvIHJldXNlIGEgY29ubmVjdGlvbiBpbiBUSU1FX1dBSVQgY2FuIHJlc3VsdCBpbiBhIG5vbi10cml2aWFsCitkZWxheSBpbiBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuCisKK0Jhc2ljYWxseSwgYW55IHRpbWUgdGhlIGNvbm5lY3Rpb24gY2h1cm4gcmF0ZSBhcHByb2FjaGVzOgorCitTaXplb2YoY2xpZW50cG9ydHNwYWNlKSAvIExlbmd0aG9mKFRJTUVfV0FJVCkKKwordGhlcmUgaXMgdGhlIHJpc2sgb2YgVElNRV9XQUlUIHJldXNlLiAgVG8gbWluaW1pemUgdGhlIGNoYW5jZXMgb2YgdGhpcworaGFwcGVuaW5nLCBuZXRwZXJmIHdpbGwgYnkgZGVmYXVsdCBzZWxlY3QgaXRzIG93biBjbGllbnQgcG9ydCBudW1iZXJzCitmcm9tIHRoZSByYW5nZSBvZiA1MDAwIHRvIDY1NTM1LiAgT24gc3lzdGVtcyB3aXRoIGEgNjAgc2Vjb25kCitUSU1FX1dBSVQgc3RhdGUsIHRoaXMgc2hvdWxkIGFsbG93IHJvdWdobHkgMTAwMCB0cmFuc2FjdGlvbnMgcGVyCitzZWNvbmQuICBUaGUgc2l6ZSBvZiB0aGUgY2xpZW50IHBvcnQgc3BhY2UgdXNlZCBieSBuZXRwZXJmIGNhbiBiZQorY29udHJvbGxlZCB2aWEgdGhlIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstcH0gb3B0aW9uLCB3aGljaCB0YWtlcyBhCitAZGZue3NpemVzcGVjfSBhcyBhIHZhbHVlIHNldHRpbmcgdGhlIG1pbmltdW0gKGZpcnN0IHZhbHVlKSBhbmQKK21heGltdW0gKHNlY29uZCB2YWx1ZSkgcG9ydCBudW1iZXJzIHVzZWQgYnkgbmV0cGVyZiBhdCB0aGUgY2xpZW50IGVuZC4KKworU2luY2Ugbm8gcmVxdWVzdHMgb3IgcmVzcG9uc2VzIGFyZSBleGNoYW5nZWQgZHVyaW5nIGEgVENQX0NDIHRlc3QsCitvbmx5IHRoZSBAb3B0aW9uey1IfSwgQG9wdGlvbnstTH0sIEBvcHRpb257LTR9IGFuZCBAb3B0aW9uey02fSBvZiB0aGUKK2BgY29tbW9uJycgdGVzdC1zcGVjaWZpYyBvcHRpb25zIGFyZSBsaWtlbHkgdG8gaGF2ZSBhbiBlZmZlY3QsIGlmIGFueSwKK29uIHRoZSByZXN1bHRzLiAgVGhlIEBvcHRpb257LXN9IGFuZCBAb3B0aW9uey1TfSBvcHRpb25zIF9tYXlfIGhhdmUKK3NvbWUgZWZmZWN0IGlmIHRoZXkgYWx0ZXIgdGhlIG51bWJlciBhbmQvb3IgdHlwZSBvZiBvcHRpb25zIGNhcnJpZWQgaW4KK3RoZSBUQ1AgU1lOY2hyb25pemUgc2VnbWVudHMsIHN1Y2ggYXMgV2luZG93IFNjYWxpbmcgb3IgVGltZXN0YW1wcy4KK1RoZSBAb3B0aW9uey1QfSBhbmQgQG9wdGlvbnstcn0gb3B0aW9ucyBhcmUgdXR0ZXJseSBpZ25vcmVkLgorCitTaW5jZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHRlYXItZG93biBmb3IgVENQIGlzIG5vdCBzeW1tZXRyaWMsCithIFRDUF9DQyB0ZXN0IGlzIG5vdCBzeW1tZXRyaWMgaW4gaXRzIGxvYWRpbmcgb2YgdGhlIHR3byBzeXN0ZW1zIHVuZGVyCit0ZXN0LgorCitAbm9kZSBUQ1BfQ1JSLCBVRFBfUlIsIFRDUF9DQywgT3B0aW9ucyBDb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCBfUlIgdGVzdHMKK0BzdWJzZWN0aW9uIFRDUF9DUlIKK0BjaW5kZXggTGF0ZW5jeSwgQ29ubmVjdGlvbiBFc3RhYmxpc2htZW50CitAY2luZGV4IExhdGVuY3ksIFJlcXVlc3QtUmVzcG9uc2UKKworVGhlIFRDUCBDb25uZWN0L1JlcXVlc3QvUmVzcG9uc2UgKFRDUF9DUlIpIHRlc3QgaXMgcmVxdWVzdGVkIGJ5CitwYXNzaW5nIGEgdmFsdWUgb2YgYGBUQ1BfQ1JSJycgdG8gdGhlIGdsb2JhbCBAb3B0aW9uey10fSBjb21tYW5kLWxpbmUKK29wdGlvbi4gIEEgVENQX0NSUiB0ZXN0IGlzIGxpa2UgYSBtZXJnZXIgb2YgYSBAcmVme1RDUF9SUn0gYW5kCitAcmVme1RDUF9DQ30gdGVzdCB3aGljaCBtZWFzdXJlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgZXN0YWJsaXNoaW5nIGEKK2Nvbm5lY3Rpb24sIGV4Y2hhbmdpbmcgYSBzaW5nbGUgcmVxdWVzdC9yZXNwb25zZSB0cmFuc2FjdGlvbiwgYW5kCit0ZWFyaW5nLWRvd24gdGhhdCBjb25uZWN0aW9uLiAgVGhpcyBpcyB2ZXJ5IG11Y2ggbGlrZSB3aGF0IGhhcHBlbnMgaW4KK2FuIEhUVFAgMS4wIG9yIEhUVFAgMS4xIGNvbm5lY3Rpb24gd2hlbiBIVFRQIEtlZXBhbGl2ZXMgYXJlIG5vdCB1c2VkLgorSW4gZmFjdCwgdGhlIFRDUF9DUlIgdGVzdCB3YXMgYWRkZWQgdG8gbmV0cGVyZiB0byBzaW11bGF0ZSBqdXN0IHRoYXQuCisKK1NpbmNlIGEgcmVxdWVzdCBhbmQgcmVzcG9uc2UgYXJlIGV4Y2hhbmdlZCB0aGUgQG9wdGlvbnstcn0sCitAb3B0aW9uey1zfSBhbmQgQG9wdGlvbnstU30gb3B0aW9ucyBjYW4gaGF2ZSBhbiBlZmZlY3Qgb24gdGhlCitwZXJmb3JtYW5jZS4KKworVGhlIGlzc3VlIG9mIFRJTUVfV0FJVCByZXVzZSBleGlzdHMgZm9yIHRoZSBUQ1BfQ1JSIHRlc3QganVzdCBhcyBpdAorZG9lcyBmb3IgdGhlIFRDUF9DQyB0ZXN0LiAgU2ltaWxhcmx5LCBzaW5jZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQKK2FuZCB0ZWFyLWRvd24gaXMgbm90IHN5bW1ldHJpYywgYSBUQ1BfQ1JSIHRlc3QgaXMgbm90IHN5bW1ldHJpYyBldmVuCit3aGVuIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBzaXplcyBhcmUgdGhlIHNhbWUuCisKK0Bub2RlIFVEUF9SUiwgWFRJX1RDUF9SUiwgVENQX0NSUiwgT3B0aW9ucyBDb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCBfUlIgdGVzdHMKK0BzdWJzZWN0aW9uIFVEUF9SUgorQGNpbmRleCBMYXRlbmN5LCBSZXF1ZXN0LVJlc3BvbnNlCitAY2luZGV4IFBhY2tldCBMb3NzCisKK0EgVURQIFJlcXVlc3QvUmVzcG9uc2UgKFVEUF9SUikgdGVzdCBpcyByZXF1ZXN0ZWQgYnkgcGFzc2luZyBhIHZhbHVlCitvZiBgYFVEUF9SUicnIHRvIGEgZ2xvYmFsIEBvcHRpb257LXR9IG9wdGlvbi4gIEl0IGlzIHZlcnkgbXVjaCB0aGUKK3NhbWUgYXMgYSBUQ1BfUlIgdGVzdCBleGNlcHQgVURQIGlzIHVzZWQgcmF0aGVyIHRoYW4gVENQLgorCitVRFAgZG9lcyBub3QgcHJvdmlkZSBmb3IgcmV0cmFuc21pc3Npb24gb2YgbG9zdCBVRFAgZGF0YWdyYW1zLCBhbmQKK25ldHBlcmYgZG9lcyBub3QgYWRkIGFueXRoaW5nIGZvciB0aGF0IGVpdGhlci4gIFRoaXMgbWVhbnMgdGhhdCBpZgorX2FueV8gcmVxdWVzdCBvciByZXNwb25zZSBpcyBsb3N0LCB0aGUgZXhjaGFuZ2Ugb2YgcmVxdWVzdHMgYW5kCityZXNwb25zZXMgd2lsbCBzdG9wIGZyb20gdGhhdCBwb2ludCB1bnRpbCB0aGUgdGVzdCB0aW1lciBleHBpcmVzLgorTmV0cGVyZiB3aWxsIG5vdCByZWFsbHkgYGBrbm93JycgdGhpcyBoYXMgaGFwcGVuZWQgLSB0aGUgb25seSBzeW1wdG9tCit3aWxsIGJlIGEgbG93IHRyYW5zYWN0aW9uIHBlciBzZWNvbmQgcmF0ZS4gIElmIEBvcHRpb257LS1lbmFibGUtYnVyc3R9Cit3YXMgaW5jbHVkZWQgaW4gdGhlIEBjb2Rle2NvbmZpZ3VyZX0gY29tbWFuZCBhbmQgYSB0ZXN0LXNwZWNpZmljCitAb3B0aW9uey1ifSBvcHRpb24gdXNlZCwgdGhlIFVEUF9SUiB0ZXN0IHdpbGwgYGBzdXJ2aXZlJycgdGhlIGxvc3Mgb2YKK3JlcXVlc3RzIGFuZCByZXNwb25zZXMgdW50aWwgdGhlIHN1bSBpcyBvbmUgbW9yZSB0aGFuIHRoZSB2YWx1ZSBwYXNzZWQKK3ZpYSB0aGUgQG9wdGlvbnstYn0gb3B0aW9uLiBJdCB3aWxsIHRob3VnaCBhbG1vc3QgY2VydGFpbmx5IHJ1biBtb3JlCitzbG93bHkuCisKK1RoZSBuZXRwZXJmIHNpZGUgb2YgYSBVRFBfUlIgdGVzdCB3aWxsIGNhbGwgQGNvZGV7Y29ubmVjdCgpfSBvbiBpdHMKK2RhdGEgc29ja2V0IGFuZCB0aGVuY2Vmb3J0aCB1c2UgdGhlIEBjb2Rle3NlbmQoKX0gYW5kIEBjb2Rle3JlY3YoKX0KK3NvY2tldCBjYWxscy4gIFRoZSBuZXRzZXJ2ZXIgc2lkZSBvZiBhIFVEUF9SUiB0ZXN0IHdpbGwgbm90IGNhbGwKK0Bjb2Rle2Nvbm5lY3QoKX0gYW5kIHdpbGwgdXNlIEBjb2Rle3JlY3Zmcm9tKCl9IGFuZCBAY29kZXtzZW5kdG8oKX0KK2NhbGxzLiAgVGhpcyBtZWFucyB0aGF0IGV2ZW4gaWYgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHNpemVzIGFyZSB0aGUKK3NhbWUsIGEgVURQX1JSIHRlc3QgaXMgX25vdF8gc3ltbWV0cmljIGluIGl0cyBsb2FkaW5nIG9mIHRoZSB0d28KK3N5c3RlbXMgdW5kZXIgdGVzdC4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgVURQX1JSIHRlc3QgYmV0d2VlbiB0d28gb3RoZXJ3aXNlCitpZGVudGljYWwgdHdvLUNQVSBzeXN0ZW1zIGpvaW5lZCB2aWEgYSAxIEdpZ2FiaXQgRXRoZXJuZXQgbmV0d29yazoKKworQGV4YW1wbGUKKyQgbmV0cGVyZiAtVCAxIC1IIDE5Mi4xNjguMS4yMTMgLXQgVURQX1JSIC1jIC1DCitVRFAgUkVRVUVTVC9SRVNQT05TRSBURVNUIGZyb20gMC4wLjAuMCAoMC4wLjAuMCkgcG9ydCAwIEFGX0lORVQgdG8gMTkyLjE2OC4xLjIxMyAoMTkyLjE2OC4xLjIxMykgcG9ydCAwIEFGX0lORVQKK0xvY2FsIC9SZW1vdGUKK1NvY2tldCBTaXplICAgUmVxdWVzdCBSZXNwLiAgRWxhcHNlZCBUcmFucy4gICBDUFUgICAgQ1BVICAgIFMuZGVtICAgUy5kZW0KK1NlbmQgICBSZWN2ICAgU2l6ZSAgICBTaXplICAgVGltZSAgICBSYXRlICAgICBsb2NhbCAgcmVtb3RlIGxvY2FsICAgcmVtb3RlCitieXRlcyAgYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgIHNlY3MuICAgcGVyIHNlYyAgJSBJICAgICUgSSAgICB1cy9UciAgIHVzL1RyCisKKzY1NTM1ICA2NTUzNSAgMSAgICAgICAxICAgICAgMTAuMDEgICAxNTI2Mi40OCAgIDEzLjkwICAxNi4xMSAgMTguMjIxICAyMS4xMTYKKzY1NTM1ICA2NTUzNSAKK0BlbmQgZXhhbXBsZQorCitUaGlzIGV4YW1wbGUgaW5jbHVkZXMgdGhlIEBvcHRpb257LWN9IGFuZCBAb3B0aW9uey1DfSBvcHRpb25zIHRvCitlbmFibGUgQ1BVIHV0aWxpemF0aW9uIHJlcG9ydGluZyBhbmQgc2hvd3MgdGhlIGFzeW1tZXRyeSBpbiBDUFUKK2xvYWRpbmcuICBUaGUgQG9wdGlvbnstVH0gb3B0aW9uIHdhcyB1c2VkIHRvIG1ha2Ugc3VyZSBuZXRwZXJmIGFuZAorbmV0c2VydmVyIHJhbiBvbiBhIGdpdmVuIENQVSBhbmQgZGlkIG5vdCBtb3ZlIGFyb3VuZCBkdXJpbmcgdGhlIHRlc3QuCisKK0Bub2RlIFhUSV9UQ1BfUlIsIFhUSV9UQ1BfQ0MsIFVEUF9SUiwgT3B0aW9ucyBDb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCBfUlIgdGVzdHMKK0BzdWJzZWN0aW9uIFhUSV9UQ1BfUlIKK0BjaW5kZXggTGF0ZW5jeSwgUmVxdWVzdC1SZXNwb25zZQorCitBbiBYVElfVENQX1JSIHRlc3QgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgYSBAcmVme1RDUF9SUn0gdGVzdCBvbmx5Cit1c2luZyB0aGUgWFRJIHJhdGhlciB0aGFuIEJTRCBTb2NrZXRzIGludGVyZmFjZS4gSXQgaXMgcmVxdWVzdGVkIGJ5CitwYXNzaW5nIGEgdmFsdWUgb2YgYGBYVElfVENQX1JSJycgdG8gdGhlIEBvcHRpb257LXR9IGdsb2JhbAorY29tbWFuZC1saW5lIG9wdGlvbi4KKworVGhlIHRlc3Qtc3BlY2lmaWMgb3B0aW9ucyBmb3IgYW4gWFRJX1RDUF9SUiB0ZXN0IGFyZSB0aGUgc2FtZSBhcyB0aG9zZQorZm9yIGEgVENQX1JSIHRlc3Qgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIEBvcHRpb257LVggPGRldnNwZWM+fSBvcHRpb24gdG8KK3NwZWNpZnkgdGhlIG5hbWVzIG9mIHRoZSBsb2NhbCBhbmQvb3IgcmVtb3RlIFhUSSBkZXZpY2UgZmlsZShzKS4KKworQG5vZGUgWFRJX1RDUF9DQywgWFRJX1RDUF9DUlIsIFhUSV9UQ1BfUlIsIE9wdGlvbnMgQ29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgX1JSIHRlc3RzCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIFhUSV9UQ1BfQ0MKK0BjaW5kZXggTGF0ZW5jeSwgQ29ubmVjdGlvbiBFc3RhYmxpc2htZW50CisKK0FuIFhUSV9UQ1BfQ0MgdGVzdCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBhIEByZWZ7VENQX0NDLFRDUF9DQ30KK3Rlc3QsIG9ubHkgdXNpbmcgdGhlIFhUSSByYXRoZXIgdGhhbiBCU0QgU29ja2V0cyBpbnRlcmZhY2UuCisKK1RoZSB0ZXN0LXNwZWNpZmljIG9wdGlvbnMgZm9yIGFuIFhUSV9UQ1BfQ0MgdGVzdCBhcmUgdGhlIHNhbWUgYXMgdGhvc2UKK2ZvciBhIFRDUF9DQyB0ZXN0IHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBAb3B0aW9uey1YIDxkZXZzcGVjPn0gb3B0aW9uIHRvCitzcGVjaWZ5IHRoZSBuYW1lcyBvZiB0aGUgbG9jYWwgYW5kL29yIHJlbW90ZSBYVEkgZGV2aWNlIGZpbGUocykuCisKK0Bub2RlIFhUSV9UQ1BfQ1JSLCBYVElfVURQX1JSLCBYVElfVENQX0NDLCBPcHRpb25zIENvbW1vbiB0byBUQ1AgVURQIGFuZCBTQ1RQIF9SUiB0ZXN0cworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBYVElfVENQX0NSUgorQGNpbmRleCBMYXRlbmN5LCBDb25uZWN0aW9uIEVzdGFibGlzaG1lbnQKK0BjaW5kZXggTGF0ZW5jeSwgUmVxdWVzdC1SZXNwb25zZQorCitUaGUgWFRJX1RDUF9DUlIgdGVzdCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBhCitAcmVme1RDUF9DUlIsVENQX0NSUn0gdGVzdCwgb25seSB1c2luZyB0aGUgWFRJIHJhdGhlciB0aGFuIEJTRCBTb2NrZXRzCitpbnRlcmZhY2UuCisKK1RoZSB0ZXN0LXNwZWNpZmljIG9wdGlvbnMgZm9yIGFuIFhUSV9UQ1BfQ1JSIHRlc3QgYXJlIHRoZSBzYW1lIGFzIHRob3NlCitmb3IgYSBUQ1BfUlIgdGVzdCB3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgQG9wdGlvbnstWCA8ZGV2c3BlYz59IG9wdGlvbiB0bworc3BlY2lmeSB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsIGFuZC9vciByZW1vdGUgWFRJIGRldmljZSBmaWxlKHMpLgorCitAbm9kZSBYVElfVURQX1JSLCBETENMX1JSLCBYVElfVENQX0NSUiwgT3B0aW9ucyBDb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCBfUlIgdGVzdHMKK0BzdWJzZWN0aW9uIFhUSV9VRFBfUlIKK0BjaW5kZXggTGF0ZW5jeSwgUmVxdWVzdC1SZXNwb25zZQorCitBbiBYVElfVURQX1JSIHRlc3QgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgYSBVRFBfUlIgdGVzdCBvbmx5IHVzaW5nCit0aGUgWFRJIHJhdGhlciB0aGFuIEJTRCBTb2NrZXRzIGludGVyZmFjZS4gIEl0IGlzIHJlcXVlc3RlZCBieSBwYXNzaW5nCithIHZhbHVlIG9mIGBgWFRJX1VEUF9SUicnIHRvIHRoZSBAb3B0aW9uey10fSBnbG9iYWwgY29tbWFuZC1saW5lCitvcHRpb24uCisKK1RoZSB0ZXN0LXNwZWNpZmljIG9wdGlvbnMgZm9yIGFuIFhUSV9VRFBfUlIgdGVzdCBhcmUgdGhlIHNhbWUgYXMgdGhvc2UKK2ZvciBhIFVEUF9SUiB0ZXN0IHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBAb3B0aW9uey1YIDxkZXZzcGVjPn0KK29wdGlvbiB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBsb2NhbCBhbmQvb3IgcmVtb3RlIFhUSSBkZXZpY2UKK2ZpbGUocykuCisKK0Bub2RlIERMQ0xfUlIsIERMQ09fUlIsIFhUSV9VRFBfUlIsIE9wdGlvbnMgQ29tbW9uIHRvIFRDUCBVRFAgYW5kIFNDVFAgX1JSIHRlc3RzCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIERMQ0xfUlIKK0BjaW5kZXggTGF0ZW5jeSwgUmVxdWVzdC1SZXNwb25zZQorCitAbm9kZSBETENPX1JSLCBTQ1RQX1JSLCBETENMX1JSLCBPcHRpb25zIENvbW1vbiB0byBUQ1AgVURQIGFuZCBTQ1RQIF9SUiB0ZXN0cworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBETENPX1JSCitAY2luZGV4IExhdGVuY3ksIFJlcXVlc3QtUmVzcG9uc2UKKworQG5vZGUgU0NUUF9SUiwgICwgRExDT19SUiwgT3B0aW9ucyBDb21tb24gdG8gVENQIFVEUCBhbmQgU0NUUCBfUlIgdGVzdHMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gU0NUUF9SUgorQGNpbmRleCBMYXRlbmN5LCBSZXF1ZXN0LVJlc3BvbnNlCisKK0Bub2RlIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBBZ2dyZWdhdGUgUGVyZm9ybWFuY2UsIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgUmVxdWVzdC9SZXNwb25zZSAsIFRvcAorQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAY2hhcHRlciBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQWdncmVnYXRlIFBlcmZvcm1hbmNlCitAY2luZGV4IEFnZ3JlZ2F0ZSBQZXJmb3JtYW5jZQorQHZpbmRleCAtLWVuYWJsZS1idXJzdCwgQ29uZmlndXJlCisKK1VsdGltYXRlbHksIEByZWZ7TmV0cGVyZjQsTmV0cGVyZjR9IHdpbGwgYmUgdGhlIHByZWZlcnJlZCBiZW5jaG1hcmsgdG8KK3VzZSB3aGVuIG9uZSB3YW50cyB0byBtZWFzdXJlIGFnZ3JlZ2F0ZSBwZXJmb3JtYW5jZSBiZWNhdXNlIG5ldHBlcmYKK2hhcyBubyBzdXBwb3J0IGZvciBleHBsaWNpdCBzeW5jaHJvbml6YXRpb24gb2YgY29uY3VycmVudCB0ZXN0cy4gVW50aWwKK25ldHBlcmY0IGlzIHJlYWR5IGZvciBwcmltZSB0aW1lLCBvbmUgY2FuIG1ha2UgdXNlIG9mIHRoZSBoZXVyaXN0aWNzCithbmQgcHJvY2VkdXJlcyBtZW50aW9uZWQgaGVyZSBmb3IgdGhlIDg1JSBzb2x1dGlvbi4KKworVGhlcmUgYXJlIGEgZmV3IHdheXMgdG8gbWVhc3VyZSBhZ2dyZWdhdGUgcGVyZm9ybWFuY2Ugd2l0aCBuZXRwZXJmLgorVGhlIGZpcnN0IGlzIHRvIHJ1biBtdWx0aXBsZSwgY29uY3VycmVudCBuZXRwZXJmIHRlc3RzIGFuZCBjYW4gYmUKK2FwcGxpZWQgdG8gYW55IG9mIHRoZSBuZXRwZXJmIHRlc3RzLiAgVGhlIHNlY29uZCBpcyB0byBjb25maWd1cmUKK25ldHBlcmYgd2l0aCBAY29kZXstLWVuYWJsZS1idXJzdH0gYW5kIGlzIGFwcGxpY2FibGUgdG8gdGhlIFRDUF9SUgordGVzdC4gVGhlIHRoaXJkIGlzIGEgdmFyaWF0aW9uIG9uIHRoZSBmaXJzdC4KKworQG1lbnUKKyogUnVubmluZyBDb25jdXJyZW50IE5ldHBlcmYgVGVzdHM6OiAgCisqIFVzaW5nIC0tZW5hYmxlLWJ1cnN0OjogICAgICAgIAorKiBVc2luZyAtLWVuYWJsZS1kZW1vOjogICAgICAgICAKK0BlbmQgbWVudQorCitAbm9kZSAgUnVubmluZyBDb25jdXJyZW50IE5ldHBlcmYgVGVzdHMsIFVzaW5nIC0tZW5hYmxlLWJ1cnN0LCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQWdncmVnYXRlIFBlcmZvcm1hbmNlLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQWdncmVnYXRlIFBlcmZvcm1hbmNlCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIFJ1bm5pbmcgQ29uY3VycmVudCBOZXRwZXJmIFRlc3RzCisKK0ByZWZ7TmV0cGVyZjQsTmV0cGVyZjR9IGlzIHRoZSBwcmVmZXJyZWQgYmVuY2htYXJrIHRvIHVzZSB3aGVuIG9uZQord2FudHMgdG8gbWVhc3VyZSBhZ2dyZWdhdGUgcGVyZm9ybWFuY2UgYmVjYXVzZSBuZXRwZXJmIGhhcyBubyBzdXBwb3J0Citmb3IgZXhwbGljaXQgc3luY2hyb25pemF0aW9uIG9mIGNvbmN1cnJlbnQgdGVzdHMuICBUaGlzIGxlYXZlcworbmV0cGVyZjIgcmVzdWx0cyB2dWxuZXJhYmxlIHRvIEBkZm57c2tld30gZXJyb3JzLgorCitIb3dldmVyLCBzaW5jZSB0aGVyZSBhcmUgdGltZXMgd2hlbiBuZXRwZXJmNCBpcyB1bmF2YWlsYWJsZSBpdCBtYXkgYmUKK25lY2Vzc2FyeSB0byBydW4gbmV0cGVyZi4gVGhlIHNrZXcgZXJyb3IgY2FuIGJlIG1pbmltaXplZCBieSBtYWtpbmcKK3VzZSBvZiB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBmdW5jdGlvbmFsaXR5LiAgVGhlbiBvbmUgc2ltcGx5CitsYXVuY2hlcyBtdWx0aXBsZSB0ZXN0cyBmcm9tIHRoZSBzaGVsbCB1c2luZyBhIEBjb2Rle2Zvcn0gbG9vcCBvciB0aGUKK2xpa2U6CisKK0BleGFtcGxlCitmb3IgaSBpbiAxIDIgMyA0CitkbworbmV0cGVyZiAtdCBUQ1BfU1RSRUFNIC1IIHRhcmR5LmN1cC5ocC5jb20gLWkgMTAgLVAgMCAmCitkb25lCitAZW5kIGV4YW1wbGUKKword2hpY2ggd2lsbCBydW4gZm91ciwgY29uY3VycmVudCBAcmVme1RDUF9TVFJFQU0sVENQX1NUUkVBTX0gdGVzdHMgZnJvbQordGhlIHN5c3RlbSBvbiB3aGljaCBpdCBpcyBleGVjdXRlZCB0byB0YXJkeS5jdXAuaHAuY29tLiAgRWFjaAorY29uY3VycmVudCBuZXRwZXJmIHdpbGwgaXRlcmF0ZSAxMCB0aW1lcyB0aGFua3MgdG8gdGhlIEBvcHRpb257LWl9CitvcHRpb24gYW5kIHdpbGwgb21pdCB0aGUgdGVzdCBiYW5uZXJzIChvcHRpb24gQG9wdGlvbnstUH0pIGZvcgorYnJldml0eS4gIFRoZSBvdXRwdXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczoKKworQGV4YW1wbGUKKyA4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAyMzUuMTUgICAKKyA4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAyMzUuMDkgICAKKyA4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAyMzUuMzggICAKKyA4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAyMzMuOTYKK0BlbmQgZXhhbXBsZQorCitXZSBjYW4gdGFrZSB0aGUgc3VtIG9mIHRoZSByZXN1bHRzIGFuZCBiZSByZWFzb25hYmx5IGNvbmZpZGVudCB0aGF0Cit0aGUgYWdncmVnYXRlIHBlcmZvcm1hbmNlIHdhcyA5NDAgTWJpdHMvcy4gIFRoaXMgbWV0aG9kIGRvZXMgbm90IG5lZWQKK3RvIGJlIGxpbWl0ZWQgdG8gb25lIHN5c3RlbSBzcGVha2luZyB0byBvbmUgb3RoZXIgc3lzdGVtLiAgSXQgY2FuIGJlCitleHRlbmRlZCB0byBvbmUgc3lzdGVtIHRhbGtpbmcgdG8gTiBvdGhlciBzeXN0ZW1zLiAgSXQgY291bGQgYmUgYXMgc2ltcGxlIGFzOgorQGV4YW1wbGUKK2ZvciBob3N0IGluICdmb28gYmFyIGJheiBiaW5nJworZG8KK25ldHBlcmYgLXQgVENQX1NUUkVBTSAtSCAkaG9zdHMgLWkgMTAgLVAgMCAmCitkb25lCitAZW5kIGV4YW1wbGUKK0EgbW9yZSBjb21wbGljYXRlZC9zb3BoaXN0aWNhdGVkIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluCitAZmlsZXtkb2MvZXhhbXBsZXMvcnVuZW1vbW5pYWdnMi5zaH0gd2hlcmUuCisKK0lmIHlvdSBzZWUgd2FybmluZ3MgYWJvdXQgbmV0cGVyZiBub3QgYWNoaWV2aW5nIHRoZSBjb25maWRlbmNlCitpbnRlcnZhbHMsIHRoZSBiZXN0IHRoaW5nIHRvIGRvIGlzIHRvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YKK2l0ZXJhdGlvbnMgd2l0aCBAb3B0aW9uey1pfSBhbmQvb3IgaW5jcmVhc2UgdGhlIHJ1biBsZW5ndGggb2YgZWFjaAoraXRlcmF0aW9uIHdpdGggQG9wdGlvbnstbH0uCisKK1lvdSBjYW4gYWxzbyBlbmFibGUgbG9jYWwgKEBvcHRpb257LWN9KSBhbmQvb3IgcmVtb3RlIChAb3B0aW9uey1DfSkKK0NQVSB1dGlsaXphdGlvbjoKKworQGV4YW1wbGUKK2ZvciBpIGluIDEgMiAzIDQKK2RvCituZXRwZXJmIC10IFRDUF9TVFJFQU0gLUggdGFyZHkuY3VwLmhwLmNvbSAtaSAxMCAtUCAwIC1jIC1DICYKK2RvbmUKKworODczODAgIDE2Mzg0ICAxNjM4NCAgICAxMC4wMyAgICAgICAyMzUuNDcgICAzLjY3ICAgICA1LjA5ICAgICAxMC4yMjYgIDE0LjE4MCAKKzg3MzgwICAxNjM4NCAgMTYzODQgICAgMTAuMDMgICAgICAgMjM0LjczICAgMy42NyAgICAgNS4wOSAgICAgMTAuMjYwICAxNC4yMjUgCis4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAgIDIzNC42NCAgIDMuNjcgICAgIDUuMTAgICAgIDEwLjI2MyAgMTQuMjMxIAorODczODAgIDE2Mzg0ICAxNjM4NCAgICAxMC4wMyAgICAgICAyMzQuODcgICAzLjY3ICAgICA1LjA5ICAgICAxMC4yNTMgIDE0LjIxNQorQGVuZCBleGFtcGxlCisKK0lmIHRoZSBDUFUgdXRpbGl6YXRpb25zIHJlcG9ydGVkIGZvciB0aGUgc2FtZSBzeXN0ZW0gYXJlIHRoZSBzYW1lIG9yCit2ZXJ5IHZlcnkgY2xvc2UgeW91IGNhbiBiZSByZWFzb25hYmx5IGNvbmZpZGVudCB0aGF0IHNrZXcgZXJyb3IgaXMKK21pbmltaXplZC4gIFByZXN1bWFibHkgb25lIGNvdWxkIHRoZW4gb21pdCBAb3B0aW9uey1pfSBidXQgdGhhdCBpcworbm90IGFkdmlzZWQsIHBhcnRpY3VsYXJseSB3aGVuL2lmIHRoZSBDUFUgdXRpbGl6YXRpb24gYXBwcm9hY2hlcyAxMDAKK3BlcmNlbnQuICBJbiB0aGUgZXhhbXBsZSBhYm92ZSB3ZSBzZWUgdGhhdCB0aGUgQ1BVIHV0aWxpemF0aW9uIG9uIHRoZQorbG9jYWwgc3lzdGVtIHJlbWFpbnMgdGhlIHNhbWUgZm9yIGFsbCBmb3VyIHRlc3RzLCBhbmQgaXMgb25seSBvZmYgYnkKKzAuMDEgb3V0IG9mIDUuMDkgb24gdGhlIHJlbW90ZSBzeXN0ZW0uICBBcyB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlCitzeXN0ZW0gaW5jcmVhc2VzLCBhbmQgc28gdG9vIHRoZSBvZGRzIG9mIHNhdHVyYXRpbmcgYSBzaW5nbGUgQ1BVLCB0aGUKK2FjY3VyYWN5IG9mIHNpbWlsYXIgQ1BVIHV0aWxpemF0aW9uIGltcGx5aW5nIGxpdHRsZSBza2V3IGVycm9yIGlzCitkaW1pbmlzaGVkLiAgVGhpcyBpcyBhbHNvIHRoZSBjYXNlIGZvciB0aG9zZSBpbmNyZWFzaW5nbHkgcmFyZSBzaW5nbGUKK0NQVSBzeXN0ZW1zIGlmIHRoZSB1dGlsaXphdGlvbiBpcyByZXBvcnRlZCBhcyAxMDAlIG9yIHZlcnkgY2xvc2UgdG8KK2l0LgorCitAcXVvdGF0aW9uCitAYntOT1RFOiBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IG5ldHBlcmYgaXMgY2FsY3VsYXRpbmcKK3N5c3RlbS13aWRlIENQVSB1dGlsaXphdGlvbi4gIFdoZW4gY2FsY3VsYXRpbmcgdGhlIHNlcnZpY2UgZGVtYW5kCisodGhvc2UgbGFzdCB0d28gY29sdW1ucyBpbiB0aGUgb3V0cHV0IGFib3ZlKSBlYWNoIG5ldHBlcmYgYXNzdW1lcyBpdAoraXMgdGhlIG9ubHkgdGhpbmcgcnVubmluZyBvbiB0aGUgc3lzdGVtLiAgVGhpcyBtZWFucyB0aGF0IGZvcgorY29uY3VycmVudCB0ZXN0cyB0aGUgc2VydmljZSBkZW1hbmRzIHJlcG9ydGVkIGJ5IG5ldHBlcmYgd2lsbCBiZQord3JvbmcuICBPbmUgaGFzIHRvIGNvbXB1dGUgc2VydmljZSBkZW1hbmRzIGZvciBjb25jdXJyZW50IHRlc3RzIGJ5CitoYW5kLn0KK0BlbmQgcXVvdGF0aW9uCisKK0lmIHlvdSB3aXNoIHlvdSBjYW4gYWRkIGEgdW5pcXVlLCBnbG9iYWwgQG9wdGlvbnstQn0gb3B0aW9uIHRvIGVhY2gKK2NvbW1hbmQgbGluZSB0byBhcHBlbmQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGUgb3V0cHV0OgorCitAZXhhbXBsZQorZm9yIGkgaW4gMSAyIDMgNAorZG8KK25ldHBlcmYgLXQgVENQX1NUUkVBTSAtSCB0YXJkeS5jdXAuaHAuY29tIC1CICJ0aGlzIGlzIHRlc3QgJGkiIC1pIDEwIC1QIDAgJgorZG9uZQorCis4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAyMzQuOTAgICB0aGlzIGlzIHRlc3QgNAorODczODAgIDE2Mzg0ICAxNjM4NCAgICAxMC4wMyAgICAgMjM0LjQxICAgdGhpcyBpcyB0ZXN0IDIKKzg3MzgwICAxNjM4NCAgMTYzODQgICAgMTAuMDMgICAgIDIzNS4yNiAgIHRoaXMgaXMgdGVzdCAxCis4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAzICAgICAyMzUuMDkgICB0aGlzIGlzIHRlc3QgMworQGVuZCBleGFtcGxlCisKK1lvdSB3aWxsIG5vdGljZSB0aGF0IHRoZSB0ZXN0cyBjb21wbGV0ZWQgaW4gYW4gb3JkZXIgb3RoZXIgdGhhbiB0aGV5Cit3ZXJlIHN0YXJ0ZWQgZnJvbSB0aGUgc2hlbGwuICBUaGlzIHVuZGVyc2NvcmVzIHdoeSB0aGVyZSBpcyBhIHRocmVhdAorb2Ygc2tldyBlcnJvciBhbmQgd2h5IG5ldHBlcmY0IHdpbGwgZXZlbnR1YWxseSBiZSB0aGUgcHJlZmVycmVkIHRvb2wKK2ZvciBhZ2dyZWdhdGUgdGVzdHMuICBFdmVuIGlmIHlvdSBzZWUgdGhlIE5ldHBlcmYgQ29udHJpYnV0aW5nIEVkaXRvcgorYWN0aW5nIHRvIHRoZSBjb250cmFyeSEtKQorCitAbWVudQorKiBJc3N1ZXMgaW4gUnVubmluZyBDb25jdXJyZW50IFRlc3RzOjogIAorQGVuZCBtZW51CisKK0Bub2RlIElzc3VlcyBpbiBSdW5uaW5nIENvbmN1cnJlbnQgVGVzdHMsICAsIFJ1bm5pbmcgQ29uY3VycmVudCBOZXRwZXJmIFRlc3RzLCBSdW5uaW5nIENvbmN1cnJlbnQgTmV0cGVyZiBUZXN0cworQHN1YnNlY3Rpb24gSXNzdWVzIGluIFJ1bm5pbmcgQ29uY3VycmVudCBUZXN0cworCitJbiBhZGRpdGlvbiB0byB0aGUgYWZvcmVtZW50aW9uZWQgaXNzdWUgb2Ygc2tldyBlcnJvciwgdGhlcmUgY2FuIGJlCitvdGhlciBpc3N1ZXMgdG8gY29uc2lkZXIgd2hlbiBydW5uaW5nIGNvbmN1cnJlbnQgbmV0cGVyZiB0ZXN0cy4KKworRm9yIGV4YW1wbGUsIHdoZW4gcnVubmluZyBjb25jdXJyZW50IHRlc3RzIG92ZXIgbXVsdGlwbGUgaW50ZXJmYWNlcywKK29uZSBpcyBub3QgYWx3YXlzIGFzc3VyZWQgdGhhdCB0aGUgdHJhZmZpYyBvbmUgdGhpbmtzIHdlbnQgb3ZlciBhCitnaXZlbiBpbnRlcmZhY2UgYWN0dWFsbHkgZGlkIHNvLiAgSW4gcGFydGljdWxhciwgdGhlIExpbnV4IG5ldHdvcmtpbmcKK3N0YWNrIHRha2VzIGEgcGFydGljdWxhcmx5IHN0cm9uZyBzdGFuY2Ugb24gaXRzIGZvbGxvd2luZyB0aGUgc28KK2NhbGxlZCBAc2FtcHt3ZWFrIGVuZCBzeXN0ZW0gbW9kZWx9LiAgQXMgc3VjaCwgaXQgaXMgd2lsbGluZyB0byBhbnN3ZXIKK0FSUCByZXF1ZXN0cyBmb3IgYW55IG9mIGl0cyBsb2NhbCBJUCBhZGRyZXNzZXMgb24gYW55IG9mIGl0cworaW50ZXJmYWNlcy4gIElmIG11bHRpcGxlIGludGVyZmFjZXMgYXJlIGNvbm5lY3RlZCB0byB0aGUgc2FtZQorYnJvYWRjYXN0IGRvbWFpbiwgdGhlbiBldmVuIGlmIHRoZXkgYXJlIGNvbmZpZ3VyZWQgaW50byBzZXBhcmF0ZSBJUAorc3VibmV0cyB0aGVyZSBpcyBubyBhIHByaW9yaSB3YXkgb2Yga25vd2luZyB3aGljaCBpbnRlcmZhY2Ugd2FzCithY3R1YWxseSB1c2VkIGZvciB3aGljaCBjb25uZWN0aW9uKHMpLiAgVGhpcyBjYW4gYmUgYWRkcmVzc2VkIGJ5CitzZXR0aW5nIHRoZSBAc2FtcHthcnBfaWdub3JlfSBzeXNjdGwgYmVmb3JlIGNvbmZpZ3VyaW5nIGludGVyZmFjZXMuCisKK0FzIGl0IGlzIHF1aXRlIGltcG9ydGFudCwgd2Ugd2lsbCByZXBlYXQgdGhhdCBpdCBpcyB2ZXJ5IGltcG9ydGFudCB0bworcmVtZW1iZXIgdGhhdCBlYWNoIGNvbmN1cnJlbnQgbmV0cGVyZiBpbnN0YW5jZSBpcyBjYWxjdWxhdGluZworc3lzdGVtLXdpZGUgQ1BVIHV0aWxpemF0aW9uLiAgV2hlbiBjYWxjdWxhdGluZyB0aGUgc2VydmljZSBkZW1hbmQgZWFjaAorbmV0cGVyZiBhc3N1bWVzIGl0IGlzIHRoZSBvbmx5IHRoaW5nIHJ1bm5pbmcgb24gdGhlIHN5c3RlbS4gIFRoaXMKK21lYW5zIHRoYXQgZm9yIGNvbmN1cnJlbnQgdGVzdHMgdGhlIHNlcnZpY2UgZGVtYW5kcyByZXBvcnRlZCBieQorbmV0cGVyZiBAYnt3aWxsIGJlIHdyb25nfS4gIE9uZSBoYXMgdG8gY29tcHV0ZSBzZXJ2aWNlIGRlbWFuZHMgZm9yCitjb25jdXJyZW50IHRlc3RzIGJ5IGhhbmQKKworUnVubmluZyBjb25jdXJyZW50IHRlc3RzIGNhbiBhbHNvIGJlY29tZSBkaWZmaWN1bHQgd2hlbiB0aGVyZSBpcyBubworb25lIGBgY2VudHJhbCcnIG5vZGUuICBSdW5uaW5nIHRlc3RzIGJldHdlZW4gcGFpcnMgb2Ygc3lzdGVtcyBtYXkgYmUKK21vcmUgZGlmZmljdWx0LCBjYWxsaW5nIGZvciByZW1vdGUgc2hlbGwgY29tbWFuZHMgaW4gdGhlIGZvciBsb29wCityYXRoZXIgdGhhbiBuZXRwZXJmIGNvbW1hbmRzLiAgVGhpcyBpbnRyb2R1Y2VzIG1vcmUgc2tldyBlcnJvciwgd2hpY2gKK3RoZSBjb25maWRlbmNlIGludGVydmFscyBtYXkgbm90IGJlIGFibGUgdG8gc3VmZmljaWVudGx5IG1pdGlnYXRlLgorT25lIHBvc3NpYmlsaXR5IGlzIHRvIGFjdHVhbGx5IHJ1biB0aHJlZSBjb25zZWN1dGl2ZSBuZXRwZXJmIHRlc3RzIG9uCitlYWNoIG5vZGUgLSB0aGUgZmlyc3QgYmVpbmcgYSB3YXJtLXVwLCB0aGUgbGFzdCBiZWluZyBhIGNvb2wtZG93bi4KK1RoZSBpZGVhIHRoZW4gaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHRpbWUgaXQgdGFrZXMgdG8gZ2V0IGFsbCB0aGUKK25ldHBlcmZzIHN0YXJ0ZWQgaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGZpcnN0IG5ldHBlcmYgY29tbWFuZAoraW4gdGhlIHNlcXVlbmNlIG9mIHRocmVlLiAgU2ltaWxhcmx5LCBpdCBhc3N1bWVzIHRoYXQgYWxsIGBgbWlkZGxlJycKK25ldHBlcmZzIHdpbGwgY29tcGxldGUgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUgYGBsYXN0JycgbmV0cGVyZnMKK2NvbXBsZXRlLgorCitAbm9kZSAgVXNpbmcgLS1lbmFibGUtYnVyc3QsIFVzaW5nIC0tZW5hYmxlLWRlbW8sIFJ1bm5pbmcgQ29uY3VycmVudCBOZXRwZXJmIFRlc3RzLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQWdncmVnYXRlIFBlcmZvcm1hbmNlCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIFVzaW5nIC0gLWVuYWJsZS1idXJzdAorCitTdGFydGluZyBpbiB2ZXJzaW9uIDIuNS4wIEBjb2Rley0tZW5hYmxlLWJ1cnN0PXllc30gaXMgdGhlIGRlZmF1bHQsCit3aGljaCBtZWFucyBvbmUgbm8gbG9uZ2VyIG11c3Q6CisKK0BleGFtcGxlCitjb25maWd1cmUgLS1lbmFibGUtYnVyc3QKK0BlbmQgZXhhbXBsZQorCitUbyBoYXZlIGJ1cnN0LW1vZGUgZnVuY3Rpb25hbGl0eSBwcmVzZW50IGluIG5ldHBlcmYuICBUaGlzIGVuYWJsZXMgYQordGVzdC1zcGVjaWZpYyBAb3B0aW9uey1iIG51bX0gb3B0aW9uIGluIEByZWZ7VENQX1JSLFRDUF9SUn0sCitAcmVme1VEUF9SUixVRFBfUlJ9IGFuZCBAcmVme1RoZSBPbW5pIFRlc3RzLG9tbml9IHRlc3RzLgorCitOb3JtYWxseSwgbmV0cGVyZiB3aWxsIGF0dGVtcHQgdG8gcmFtcC11cCB0aGUgbnVtYmVyIG9mIG91dHN0YW5kaW5nCityZXF1ZXN0cyB0byBAb3B0aW9ue251bX0gcGx1cyBvbmUgdHJhbnNhY3Rpb25zIGluIGZsaWdodCBhdCBvbmUgdGltZS4KK1RoZSByYW1wLXVwIGlzIHRvIGF2b2lkIHRyYW5zYWN0aW9ucyBiZWluZyBzbWFzaGVkIHRvZ2V0aGVyIGludG8gYQorc21hbGxlciBudW1iZXIgb2Ygc2VnbWVudHMgd2hlbiB0aGUgdHJhbnNwb3J0J3MgY29uZ2VzdGlvbiB3aW5kb3cgKGlmCithbnkpIGlzIHNtYWxsZXIgYXQgdGhlIHRpbWUgdGhhbiB3aGF0IG5ldHBlcmYgd2FudHMgdG8gaGF2ZQorb3V0c3RhbmRpbmcgYXQgb25lIHRpbWUuIElmLCBob3dldmVyLCB0aGUgdXNlciBzcGVjaWZpZXMgYSBuZWdhdGl2ZQordmFsdWUgZm9yIEBvcHRpb257bnVtfSB0aGlzIHJhbXAtdXAgaXMgYnlwYXNzZWQgYW5kIHRoZSBidXJzdCBvZiBzZW5kcworaXMgbWFkZSB3aXRob3V0IGNvbnNpZGVyYXRpb24gb2YgdHJhbnNwb3J0IGNvbmdlc3Rpb24gd2luZG93LgorCitUaGlzIGJ1cnN0LW1vZGUgaXMgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBvciBldmVuIGluIGNvbmp1bmN0aW9uCit3aXRoIG11bHRpcGxlLWNvbmN1cnJlbnQgX1JSIHRlc3RzIGFuZCBhcyBhIHdheSB0byBpbXBsZW1lbnQgYQorc2luZ2xlLWNvbm5lY3Rpb24sIGJpZGlyZWN0aW9uYWwgYnVsay10cmFuc2ZlciB0ZXN0LiAgV2hlbiBydW4gd2l0aAoranVzdCBhIHNpbmdsZSBpbnN0YW5jZSBvZiBuZXRwZXJmLCBpbmNyZWFzaW5nIHRoZSBidXJzdCBzaXplIGNhbgorZGV0ZXJtaW5lIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgcGVyIHNlY29uZCB3aGljaCBjYW4gYmUKK3NlcnZpY2VkIGJ5IGEgc2luZ2xlIHByb2Nlc3M6CisKK0BleGFtcGxlCitmb3IgYiBpbiAwIDEgMiA0IDggMTYgMzIKK2RvIAorIG5ldHBlcmYgLXYgMCAtdCBUQ1BfUlIgLUIgIi1iICRiIiAtSCBocGNwYzEwOCAtUCAwIC0tIC1iICRiCitkb25lCisKKzk0NTcuNTkgLWIgMAorOTk3NS4zNyAtYiAxCisxMDAwMC42MSAtYiAyCisyMDA4NC40NyAtYiA0CisyOTk2NS4zMSAtYiA4Cis3MTkyOS4yNyAtYiAxNgorMTA5NzE4LjE3IC1iIDMyCitAZW5kIGV4YW1wbGUKKworVGhlIGdsb2JhbCBAb3B0aW9uey12fSBhbmQgQG9wdGlvbnstUH0gb3B0aW9ucyB3ZXJlIHVzZWQgdG8gbWluaW1pemUKK3RoZSBvdXRwdXQgdG8gdGhlIHNpbmdsZSBmaWd1cmUgb2YgbWVyaXQgd2hpY2ggaW4gdGhpcyBjYXNlIHRoZQordHJhbnNhY3Rpb24gcmF0ZS4gIFRoZSBnbG9iYWwgQGNvZGV7LUJ9IG9wdGlvbiB3YXMgdXNlZCB0byBtb3JlCitjbGVhcmx5IGxhYmVsIHRoZSBvdXRwdXQsIGFuZCB0aGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1ifSBvcHRpb24KK2VuYWJsZWQgYnkgQGNvZGV7LS1lbmFibGUtYnVyc3R9IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zCitpbiBmbGlnaHQgYXQgb25lIHRpbWUuCisKK05vdywgc2luY2UgdGhlIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstRH0gb3B0aW9uIHdhcyBub3Qgc3BlY2lmaWVkIHRvCitzZXQgVENQX05PREVMQVksIHRoZSBzdGFjayB3YXMgZnJlZSB0byBgYGJ1bmRsZScnIHJlcXVlc3RzIGFuZC9vcgorcmVzcG9uc2VzIGludG8gVENQIHNlZ21lbnRzIGFzIGl0IHNhdyBmaXQsIGFuZCBzaW5jZSB0aGUgZGVmYXVsdAorcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc2l6ZSBpcyBvbmUgYnl0ZSwgdGhlcmUgY291bGQgaGF2ZSBiZWVuIHNvbWUKK2NvbnNpZGVyYWJsZSBidW5kbGluZyBldmVuIGluIHRoZSBhYnNlbmNlIG9mIHRyYW5zcG9ydCBjb25nZXN0aW9uCit3aW5kb3cgaXNzdWVzLiAgSWYgb25lIHdhbnRzIHRvIHRyeSB0byBhY2hpZXZlIGEgY2xvc2VyIHRvCitvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gYSByZXF1ZXN0IGFuZCByZXNwb25zZSBhbmQgYSBUQ1AKK3NlZ21lbnQsIGFkZCB0aGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1EfSBvcHRpb246CisKK0BleGFtcGxlCitmb3IgYiBpbiAwIDEgMiA0IDggMTYgMzIKK2RvCisgbmV0cGVyZiAtdiAwIC10IFRDUF9SUiAtQiAiLWIgJGIgLUQiIC1IIGhwY3BjMTA4IC1QIDAgLS0gLWIgJGIgLUQKK2RvbmUKKworIDg2OTUuMTIgLWIgMCAtRAorIDE5OTY2LjQ4IC1iIDEgLUQKKyAyMDY5MS4wNyAtYiAyIC1ECisgNDk4OTMuNTggLWIgNCAtRAorIDYyMDU3LjMxIC1iIDggLUQKKyAxMDg0MTYuODggLWIgMTYgLUQKKyAxMTQ0MTEuNjYgLWIgMzIgLUQKK0BlbmQgZXhhbXBsZQorCitZb3UgY2FuIHNlZSB0aGF0IHRoaXMgaGFzIGEgcmF0aGVyIGxhcmdlIGVmZmVjdCBvbiB0aGUgcmVwb3J0ZWQKK3RyYW5zYWN0aW9uIHJhdGUuICBJbiB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2UsIHRoZSBhdXRob3IgYmVsaWV2ZXMgaXQKK3JlbGF0ZXMgdG8gaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIHRlc3QgYW5kIGludGVycnVwdCBjb2FsZXNjaW5nCitzZXR0aW5ncyBpbiB0aGUgZHJpdmVyIGZvciB0aGUgTklDcyB1c2VkLgorCitAcXVvdGF0aW9uCitAYntOT1RFOiBFdmVuIGlmIHlvdSBzZXQgdGhlIEBvcHRpb257LUR9IG9wdGlvbiB0aGF0IGlzIHN0aWxsIG5vdCBhCitndWFyYW50ZWUgdGhhdCBlYWNoIHRyYW5zYWN0aW9uIGlzIGluIGl0cyBvd24gVENQIHNlZ21lbnRzLiAgWW91CitzaG91bGQgZ2V0IGludG8gdGhlIGhhYml0IG9mIHZlcmlmeWluZyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlCit0cmFuc2FjdGlvbiByYXRlIGFuZCB0aGUgcGFja2V0IHJhdGUgdmlhIG90aGVyIG1lYW5zLn0KK0BlbmQgcXVvdGF0aW9uCisKK1lvdSBjYW4gYWxzbyBjb21iaW5lIEBjb2Rley0tZW5hYmxlLWJ1cnN0fSBmdW5jdGlvbmFsaXR5IHdpdGgKK2NvbmN1cnJlbnQgbmV0cGVyZiB0ZXN0cy4gIFRoaXMgd291bGQgdGhlbiBiZSBhbiBgYGFnZ3JlZ2F0ZSBvZgorYWdncmVnYXRlcycnIGlmIHlvdSBsaWtlOgorCitAZXhhbXBsZQorCitmb3IgaSBpbiAxIDIgMyA0CitkbworIG5ldHBlcmYgLUggaHBjcGMxMDggLXYgMCAtUCAwIC1pIDEwIC1CICJhZ2dyZWdhdGUgJGkgLWIgOCAtRCIgLXQgVENQX1JSIC0tIC1iIDggLUQgJgorZG9uZQorCisgNDY2NjguMzggYWdncmVnYXRlIDQgLWIgOCAtRAorIDQ0ODkwLjY0IGFnZ3JlZ2F0ZSAyIC1iIDggLUQKKyA0NTcwMi4wNCBhZ2dyZWdhdGUgMSAtYiA4IC1ECisgNDYzNTIuNDggYWdncmVnYXRlIDMgLWIgOCAtRAorCitAZW5kIGV4YW1wbGUKKworU2luY2UgZWFjaCBuZXRwZXJmIGRpZCBoaXQgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLCB3ZSBjYW4gYmUKK3JlYXNvbmFibHkgY2VydGFpbiB0aGF0IHRoZSBhZ2dyZWdhdGUgdHJhbnNhY3Rpb24gcGVyIHNlY29uZCByYXRlIHdhcwordGhlIHN1bSBvZiBhbGwgZm91ciBjb25jdXJyZW50IHRlc3RzLCBvciBzb21ldGhpbmcganVzdCBzaHkgb2YgMTg0LDAwMAordHJhbnNhY3Rpb25zIHBlciBzZWNvbmQuICBUbyBnZXQgc29tZSBpZGVhIGlmIHRoYXQgd2FzIGFsc28gdGhlIHBhY2tldAorcGVyIHNlY29uZCByYXRlLCB3ZSBjb3VsZCBicmFja2V0IHRoYXQgQGNvZGV7Zm9yfSBsb29wIHdpdGggc29tZXRoaW5nCit0byBnYXRoZXIgc3RhdGlzdGljcyBhbmQgcnVuIHRoZSByZXN1bHRzIHRocm91Z2gKK0B1cmVme2Z0cDovL2Z0cC5jdXAuaHAuY29tL2Rpc3QvbmV0d29ya2luZy90b29scyxiZWZvcmVhZnRlcn06CisKK0BleGFtcGxlCisvdXNyL3NiaW4vZXRodG9vbCAtUyBldGgyID4gYmVmb3JlCitmb3IgaSBpbiAxIDIgMyA0CitkbworIG5ldHBlcmYgLUggMTkyLjE2OC4yLjEwOCAtbCA2MCAtdiAwIC1QIDAgLUIgImFnZ3JlZ2F0ZSAkaSAtYiA4IC1EIiAtdCBUQ1BfUlIgLS0gLWIgOCAtRCAmCitkb25lCit3YWl0CisvdXNyL3NiaW4vZXRodG9vbCAtUyBldGgyID4gYWZ0ZXIKKworIDUyMzEyLjYyIGFnZ3JlZ2F0ZSAyIC1iIDggLUQKKyA1MDEwNS42NSBhZ2dyZWdhdGUgNCAtYiA4IC1ECisgNTA4OTAuODIgYWdncmVnYXRlIDEgLWIgOCAtRAorIDUwODY5LjIwIGFnZ3JlZ2F0ZSAzIC1iIDggLUQKKworYmVmb3JlYWZ0ZXIgYmVmb3JlIGFmdGVyID4gZGVsdGEKKworZ3JlcCBwYWNrZXRzIGRlbHRhCisgICAgIHJ4X3BhY2tldHM6IDEyMjUxNTQ0CisgICAgIHR4X3BhY2tldHM6IDEyMjUxNTUwCisKK0BlbmQgZXhhbXBsZQorCitUaGlzIGV4YW1wbGUgdXNlcyBAY29kZXtldGh0b29sfSBiZWNhdXNlIHRoZSBzeXN0ZW0gYmVpbmcgdXNlZCBpcworcnVubmluZyBMaW51eC4gIE90aGVyIHBsYXRmb3JtcyBoYXZlIG90aGVyIHRvb2xzIC0gZm9yIGV4YW1wbGUgSFAtVVgKK2hhcyBsYW5hZG1pbjoKKworQGV4YW1wbGUKK2xhbmFkbWluIC1nIG1pYnN0YXRzIDxwcGE+CitAZW5kIGV4YW1wbGUKKworYW5kIG9mIGNvdXJzZSBvbmUgY291bGQgaW5zdGVhZCB1c2UgQGNvZGV7bmV0c3RhdH0uCisKK1RoZSBAY29kZXt3YWl0fSBpcyBpbXBvcnRhbnQgYmVjYXVzZSB3ZSBhcmUgbGF1bmNoaW5nIGNvbmN1cnJlbnQKK25ldHBlcmZzIGluIHRoZSBiYWNrZ3JvdW5kLiAgV2l0aG91dCBpdCwgdGhlIHNlY29uZCBldGh0b29sIGNvbW1hbmQKK3dvdWxkIGJlIHJ1biBiZWZvcmUgdGhlIHRlc3RzIGZpbmlzaGVkIGFuZCBwZXJoYXBzIGV2ZW4gYmVmb3JlIHRoZQorbGFzdCBvZiB0aGVtIGdvdCBzdGFydGVkIQorCitUaGUgc3VtIG9mIHRoZSByZXBvcnRlZCB0cmFuc2FjdGlvbiByYXRlcyBpcyAyMDQxNzggb3ZlciA2MCBzZWNvbmRzLAord2hpY2ggaXMgYSB0b3RhbCBvZiAxMjI1MDY4MCB0cmFuc2FjdGlvbnMuICBFYWNoIHRyYW5zYWN0aW9uIGlzIHRoZQorZXhjaGFuZ2Ugb2YgYSByZXF1ZXN0IGFuZCBhIHJlc3BvbnNlLCBzbyB3ZSBtdWx0aXBseSB0aGF0IGJ5IDIgdG8KK2Fycml2ZSBhdCAyNDUwMTM2MC4KKworVGhlIHN1bSBvZiB0aGUgZXRodG9vbCBzdGF0cyBpcyAyNDUwMzA5NCBwYWNrZXRzIHdoaWNoIG1hdGNoZXMgd2hhdAorbmV0cGVyZiB3YXMgcmVwb3J0aW5nIHZlcnkgd2VsbC4gCisKK0hhZCB0aGUgcmVxdWVzdCBvciByZXNwb25zZSBzaXplIGRpZmZlcmVkLCB3ZSB3b3VsZCBuZWVkIHRvIGtub3cgaG93CitpdCBjb21wYXJlZCB3aXRoIHRoZSBAZGZue01TU30gZm9yIHRoZSBjb25uZWN0aW9uLgorCitKdXN0IGZvciBncmlucywgaGVyZSBpcyB0aGUgZXhlcmNpc2UgcmVwZWF0ZWQsIHVzaW5nIEBjb2Rle25ldHN0YXR9CitpbnN0ZWFkIG9mIEBjb2Rle2V0aHRvb2x9CisKK0BleGFtcGxlCituZXRzdGF0IC1zIC10ID4gYmVmb3JlCitmb3IgaSBpbiAxIDIgMyA0CitkbworIG5ldHBlcmYgLWwgNjAgLUggMTkyLjE2OC4yLjEwOCAtdiAwIC1QIDAgLUIgImFnZ3JlZ2F0ZSAkaSAtYiA4IC1EIiAtdCBUQ1BfUlIgLS0gLWIgOCAtRCAmIGRvbmUKK3dhaXQKK25ldHN0YXQgLXMgLXQgPiBhZnRlcgorCisgNTEzMDUuODggYWdncmVnYXRlIDQgLWIgOCAtRAorIDUxODQ3LjczIGFnZ3JlZ2F0ZSAyIC1iIDggLUQKKyA1MDY0OC4xOSBhZ2dyZWdhdGUgMyAtYiA4IC1ECisgNTM2MDUuODYgYWdncmVnYXRlIDEgLWIgOCAtRAorCitiZWZvcmVhZnRlciBiZWZvcmUgYWZ0ZXIgPiBkZWx0YQorCitncmVwIHNlZ21lbnRzIGRlbHRhCisgICAgMTI0NDU3MDggc2VnbWVudHMgcmVjZWl2ZWQKKyAgICAxMjQ0NTczMCBzZWdtZW50cyBzZW5kIG91dAorICAgIDEgc2VnbWVudHMgcmV0cmFuc21pdGVkCisgICAgMCBiYWQgc2VnbWVudHMgcmVjZWl2ZWQuCitAZW5kIGV4YW1wbGUKKworVGhlIHN1bXMgYXJlIGxlZnQgYXMgYW4gZXhlcmNpc2UgdG8gdGhlIHJlYWRlciA6KQorCitUaGluZ3MgYmVjb21lIGNvbnNpZGVyYWJseSBtb3JlIGNvbXBsaWNhdGVkIGlmIHRoZXJlIGFyZSBub24tdHJ2aWFsCitwYWNrZXQgbG9zc2VzIGFuZC9vciByZXRyYW5zbWlzc2lvbnMuCisKK09mIGNvdXJzZSBhbGwgdGhpcyBjaGVja2luZyBpcyB1bm5lY2Vzc2FyeSBpZiB0aGUgdGVzdCBpcyBhIFVEUF9SUgordGVzdCBiZWNhdXNlIFVEUCBgYG5ldmVyJycgYWdncmVnYXRlcyBtdWx0aXBsZSBzZW5kcyBpbnRvIHRoZSBzYW1lIFVEUAorZGF0YWdyYW0sIGFuZCB0aGVyZSBhcmUgbm8gQUNLbm93bGVkZ2VtZW50cyBpbiBVRFAuICBUaGUgbG9zcyBvZiBhCitzaW5nbGUgcmVxdWVzdCBvciByZXNwb25zZSB3aWxsIG5vdCBicmluZyBhIGBgYnVyc3QnJyBVRFBfUlIgdGVzdCB0byBhCitzY3JlZWNoaW5nIGhhbHQsIGJ1dCBpdCB3aWxsIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucworb3V0c3RhbmRpbmcgYXQgYW55IG9uZSB0aW1lLiAgQSBgYGJ1cnN0JycgVURQX1JSIHRlc3QgQGJ7d2lsbH0gY29tZSB0byBhCitoYWx0IGlmIHRoZSBzdW0gb2YgdGhlIGxvc3QgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyByZWFjaGVzIHRoZSB2YWx1ZQorc3BlY2lmaWVkIGluIHRoZSB0ZXN0LXNwZWNpZmljIEBvcHRpb257LWJ9IG9wdGlvbi4KKworQG5vZGUgVXNpbmcgLS1lbmFibGUtZGVtbywgICwgVXNpbmcgLS1lbmFibGUtYnVyc3QsIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBBZ2dyZWdhdGUgUGVyZm9ybWFuY2UKK0BzZWN0aW9uIFVzaW5nIC0gLWVuYWJsZS1kZW1vCisKK09uZSBjYW4KK0BleGFtcGxlCitjb25maWd1cmUgLS1lbmFibGUtZGVtbworQGVuZCBleGFtcGxlCithbmQgY29tcGlsZSBuZXRwZXJmIHRvIGVuYWJsZSBuZXRwZXJmIHRvIGVtaXQgYGBpbnRlcmltIHJlc3VsdHMnJyBhdAorc2VtaS1yZWd1bGFyIGludGVydmFscy4gIFRoaXMgZW5hYmxlcyBhIGdsb2JhbCBAY29kZXstRH0gb3B0aW9uIHdoaWNoCit0YWtlcyBhIHJlcG9ydGluZyBpbnRlcnZhbCBhcyBhbiBhcmd1bWVudC4gIFdpdGggdGhhdCBzcGVjaWZpZWQsIHRoZQorb3V0cHV0IG9mIG5ldHBlcmYgd2lsbCB0aGVuIGxvb2sgc29tZXRoaW5nIGxpa2UKKworQGV4YW1wbGUKKyQgc3JjL25ldHBlcmYgLUQgMS4yNQorTUlHUkFURUQgVENQIFNUUkVBTSBURVNUIGZyb20gMC4wLjAuMCAoMC4wLjAuMCkgcG9ydCAwIEFGX0lORVQgdG8gbG9jYWxob3N0LmxvY2FsZG9tYWluICgpIHBvcnQgMCBBRl9JTkVUIDogZGVtbworSW50ZXJpbSByZXN1bHQ6IDI1NDI1LjUyIDEwXjZiaXRzL3Mgb3ZlciAxLjI1IHNlY29uZHMgZW5kaW5nIGF0IDEzMjc5NjIwNzguNDA1CitJbnRlcmltIHJlc3VsdDogMjU0ODYuODIgMTBeNmJpdHMvcyBvdmVyIDEuMjUgc2Vjb25kcyBlbmRpbmcgYXQgMTMyNzk2MjA3OS42NTUKK0ludGVyaW0gcmVzdWx0OiAyNTQ3NC45NiAxMF42Yml0cy9zIG92ZXIgMS4yNSBzZWNvbmRzIGVuZGluZyBhdCAxMzI3OTYyMDgwLjkwNQorSW50ZXJpbSByZXN1bHQ6IDI1NTIzLjQ5IDEwXjZiaXRzL3Mgb3ZlciAxLjI1IHNlY29uZHMgZW5kaW5nIGF0IDEzMjc5NjIwODIuMTU1CitJbnRlcmltIHJlc3VsdDogMjUwNTMuNTcgMTBeNmJpdHMvcyBvdmVyIDEuMjcgc2Vjb25kcyBlbmRpbmcgYXQgMTMyNzk2MjA4My40MjkKK0ludGVyaW0gcmVzdWx0OiAyNTM0OS42NCAxMF42Yml0cy9zIG92ZXIgMS4yNSBzZWNvbmRzIGVuZGluZyBhdCAxMzI3OTYyMDg0LjY3OQorSW50ZXJpbSByZXN1bHQ6IDI1MjkyLjg0IDEwXjZiaXRzL3Mgb3ZlciAxLjI1IHNlY29uZHMgZW5kaW5nIGF0IDEzMjc5NjIwODUuOTMyCitSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAKK1NvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIAorU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgCitieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAxMF42Yml0cy9zZWMgIAorCisgODczODAgIDE2Mzg0ICAxNjM4NCAgICAxMC4wMCAgICAyNTM3NS42NiAgIAorQGVuZCBleGFtcGxlCitUaGUgdW5pdHMgb2YgdGhlIGBgSW50ZXJpbSByZXN1bHQnJyBsaW5lcyB3aWxsIGZvbGxvdyB0aGUgdW5pdHMKK3NlbGVjdGVkIHZpYSB0aGUgZ2xvYmFsIEBjb2Rley1mfSBvcHRpb24uICBJZiB0aGUgdGVzdC1zcGVjaWZpYworQGNvZGV7LW99IG9wdGlvbiBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlIGZvcm1hdCB3aWxsIGJlCitDU1Y6CitAZXhhbXBsZQorLi4uCisyOTc4LjgxLE1CeXRlcy9zLDEuMjUsMTMyNzk2MjI5OC4wMzUKKy4uLgorQGVuZCBleGFtcGxlCitJZiB0aGUgdGVzdC1zcGVjaWZpYyBAY29kZXsta30gb3B0aW9uIGlzIHVzZWQgdGhlIGZvcm1hdCB3aWxsIGJlCitrZXl2YWwgd2l0aCBlYWNoIGtleXZhbCBiZWluZyBnaXZlbiBhbiBpbmRleDoKK0BleGFtcGxlCisuLi4KK05FVFBFUkZfSU5URVJJTV9SRVNVTFRbMl09MjUuMDAKK05FVFBFUkZfVU5JVFNbMl09MTBeOWJpdHMvcworTkVUUEVSRl9JTlRFUlZBTFsyXT0xLjI1CitORVRQRVJGX0VORElOR1syXT0xMzI3OTYyMzU3LjI0OQorLi4uCitAZW5kIGV4YW1wbGUKK1RoZSBleHBlY3RhdGlvbiBpcyBpdCBtYXkgYmUgZWFzaWVyIHRvIHV0aWxpemUgdGhlIGtleXZhbHMgaWYgdGhleQoraGF2ZSBpbmRpY2VzLgorCitCdXQgaG93IGRvZXMgdGhpcyBoZWxwIHdpdGggYWdncmVnYXRlIHRlc3RzPyAgV2VsbCwgd2hhdCBvbmUgY2FuIGRvIGlzCitzdGFydCB0aGUgbmV0cGVyZnMgdmlhIGEgc2NyaXB0LCBnaXZpbmcgZWFjaCBhIFZlcnkgTG9uZyAodG0pIHJ1bgordGltZS4gIERpcmVjdCB0aGUgb3V0cHV0IHRvIGEgZmlsZSBwZXIgaW5zdGFuY2UuICBUaGVuLCBvbmNlIGFsbCB0aGUKK25ldHBlcmZzIGhhdmUgYmVlbiBzdGFydGVkLCB0YWtlIGEgdGltZXN0YW1wIGFuZCB3YWl0IGZvciBzb21lIGRlc2lyZWQKK3Rlc3QgaW50ZXJ2YWwuICBPbmNlIHRoYXQgaW50ZXJ2YWwgZXhwaXJlcyB0YWtlIGFub3RoZXIgdGltZXN0YW1wIGFuZAordGhlbiBzdGFydCB0ZXJtaW5hdGluZyB0aGUgbmV0cGVyZnMgYnkgc2VuZGluZyB0aGVtIGEgU0lHQUxSTSBzaWduYWwKK3ZpYSB0aGUgbGlrZXMgb2YgdGhlIEBjb2Rle2tpbGx9IG9yIEBjb2Rle3BraWxsfSBjb21tYW5kLiAgVGhlCituZXRwZXJmcyB3aWxsIHRlcm1pbmF0ZSBhbmQgZW1pdCB0aGUgcmVzdCBvZiB0aGUgYGB1c3VhbCcnIG91dHB1dCwgYW5kCit5b3UgY2FuIHRoZW4gYnJpbmcgdGhlIGZpbGVzIHRvIGEgY2VudHJhbCBsb2NhdGlvbiBmb3IgcG9zdAorcHJvY2Vzc2luZyB0byBmaW5kIHRoZSBhZ2dyZWdhdGUgcGVyZm9ybWFuY2Ugb3ZlciB0aGUgYGB0ZXN0IGludGVydmFsLicnICAKKworVGhpcyBtZXRob2QgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCBpdCBkb2VzIG5vdCByZXF1aXJlIGFkdmFuY2UKK2tub3dsZWRnZSBvZiBob3cgbG9uZyBpdCB0YWtlcyB0byBnZXQgbmV0cGVyZiB0ZXN0cyBzdGFydGVkIGFuZC9vcgorc3RvcHBlZC4gIEl0IGRvZXMgdGhvdWdoIHJlcXVpcmUgc3VmZmljaWVudGx5IHN5bmNocm9uaXplZCBjbG9ja3Mgb24KK2FsbCB0aGUgdGVzdCBzeXN0ZW1zLgorCitXaGlsZSBjYWxscyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBjYW4gYmUgaW5leHBlbnNpdmUsIHRoYXQgbmVpdGhlcgoraGFzIGJlZW4gbm9yIGlzIHVuaXZlcnNhbGx5IHRydWUuICBGb3IgdGhhdCByZWFzb24gbmV0cGVyZiB0cmllcyB0bworbWluaW1pemUgdGhlIG51bWJlciBvZiBzdWNoIGBgdGltZXN0YW1waW5nJycgY2FsbHMgKGVnCitAY29kZXtnZXR0aW1lb2ZkYXl9KSBjYWxscyBpdCBtYWtlcyB3aGVuIGluIGRlbW8gbW9kZS4gIFJhdGhlciB0aGFuCit0YWtlIGEgdGltZXN0YW1wIGFmdGVyIGVhY2ggQGNvZGV7c2VuZH0gb3IgQGNvZGV7cmVjdn0gY2FsbCBjb21wbGV0ZXMKK25ldHBlcmYgdHJpZXMgdG8gZ3Vlc3MgaG93IG1hbnkgdW5pdHMgb2Ygd29yayB3aWxsIGJlIHBlcmZvcm1lZCBvdmVyCit0aGUgZGVzaXJlZCBpbnRlcnZhbC4gIE9ubHkgb25jZSB0aGF0IG1hbnkgdW5pdHMgb2Ygd29yayBoYXZlIGJlZW4KK2NvbXBsZXRlZCB3aWxsIG5ldHBlcmYgY2hlY2sgdGhlIHRpbWUuICBJZiB0aGUgcmVwb3J0aW5nIGludGVydmFsIGhhcworcGFzc2VkLCBuZXRwZXJmIHdpbGwgZW1pdCBhbiBgYGludGVyaW0gcmVzdWx0LicnICBJZiB0aGUgaW50ZXJ2YWwgaGFzCitub3QgcGFzc2VkLCBuZXRwZXJmIHdpbGwgdXBkYXRlIGl0cyBlc3RpbWF0ZSBmb3IgdW5pdHMgYW5kIGNvbnRpbnVlLgorCitBZnRlciBhIGJpdCBvZiB0aG91Z2h0IG9uZSBjYW4gc2VlIHRoYXQgaWYgdGhpbmdzIGBgc3BlZWQtdXAnJyBuZXRwZXJmCit3aWxsIHN0aWxsIGhvbm9yIHRoZSBpbnRlcnZhbC4gIEhvd2V2ZXIsIGlmIHRoaW5ncyBgYHNsb3ctZG93bicnCituZXRwZXJmIG1heSBiZSBsYXRlIHdpdGggYW4gYGBpbnRlcmltIHJlc3VsdC4nJyAgSGVyZSBpcyBhbiBleGFtcGxlIG9mCitib3RoIG9mIHRob3NlIGhhcHBlbmluZyBkdXJpbmcgYSB0ZXN0IC0gd2l0aCB0aGUgaW50ZXJ2YWwgYmVpbmcKK2hvbm9yZWQgd2hpbGUgdGhyb3VnaHB1dCBpbmNyZWFzZXMsIGFuZCB0aGVuIGFib3V0IGhhbGYtd2F5IHRocm91Z2gKK3doZW4gYW5vdGhlciBuZXRwZXJmIChub3Qgc2hvd24pIGlzIHN0YXJ0ZWQgd2Ugc2VlIHRoaW5ncyBzbG93aW5nIGRvd24KK2FuZCBuZXRwZXJmIG5vdCBoaXR0aW5nIHRoZSBpbnRlcnZhbCBhcyBkZXNpcmVkLgorQGV4YW1wbGUKKyQgc3JjL25ldHBlcmYgLUQgMiAtSCB0YXJkeS5ocGwuaHAuY29tIC1sIDIwCitNSUdSQVRFRCBUQ1AgU1RSRUFNIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byB0YXJkeS5ocGwuaHAuY29tICgpIHBvcnQgMCBBRl9JTkVUIDogZGVtbworSW50ZXJpbSByZXN1bHQ6ICAgMzYuNDYgMTBeNmJpdHMvcyBvdmVyIDIuMDEgc2Vjb25kcyBlbmRpbmcgYXQgMTMyNzk2Mzg4MC41NjUKK0ludGVyaW0gcmVzdWx0OiAgIDU5LjE5IDEwXjZiaXRzL3Mgb3ZlciAyLjAwIHNlY29uZHMgZW5kaW5nIGF0IDEzMjc5NjM4ODIuNTY5CitJbnRlcmltIHJlc3VsdDogICA3My4zOSAxMF42Yml0cy9zIG92ZXIgMi4wMSBzZWNvbmRzIGVuZGluZyBhdCAxMzI3OTYzODg0LjU3NgorSW50ZXJpbSByZXN1bHQ6ICAgODQuMDEgMTBeNmJpdHMvcyBvdmVyIDIuMDMgc2Vjb25kcyBlbmRpbmcgYXQgMTMyNzk2Mzg4Ni42MDMKK0ludGVyaW0gcmVzdWx0OiAgIDc1LjYzIDEwXjZiaXRzL3Mgb3ZlciAyLjIxIHNlY29uZHMgZW5kaW5nIGF0IDEzMjc5NjM4ODguODE0CitJbnRlcmltIHJlc3VsdDogICA1NS41MiAxMF42Yml0cy9zIG92ZXIgMi43MiBzZWNvbmRzIGVuZGluZyBhdCAxMzI3OTYzODkxLjUzOAorSW50ZXJpbSByZXN1bHQ6ICAgNzAuOTQgMTBeNmJpdHMvcyBvdmVyIDIuMTEgc2Vjb25kcyBlbmRpbmcgYXQgMTMyNzk2Mzg5My42NTAKK0ludGVyaW0gcmVzdWx0OiAgIDgwLjY2IDEwXjZiaXRzL3Mgb3ZlciAyLjEzIHNlY29uZHMgZW5kaW5nIGF0IDEzMjc5NjM4OTUuNzc3CitJbnRlcmltIHJlc3VsdDogICA4Ni40MiAxMF42Yml0cy9zIG92ZXIgMi4xMiBzZWNvbmRzIGVuZGluZyBhdCAxMzI3OTYzODk3LjkwMQorUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgCitTb2NrZXQgU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgICAgICAgICAKK1NpemUgICBTaXplICAgIFNpemUgICAgIFRpbWUgICAgIFRocm91Z2hwdXQgIAorYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgICAgc2Vjcy4gICAgMTBeNmJpdHMvc2VjICAKKworIDg3MzgwICAxNjM4NCAgMTYzODQgICAgMjAuMzQgICAgICA2OC44NyAgIAorQGVuZCBleGFtcGxlCitTbyBsb25nIGFzIHlvdXIgcG9zdC1wcm9jZXNzaW5nIG1lY2hhbmlzbSBjYW4gYWNjb3VudCBmb3IgdGhhdCwgdGhlcmUKK3Nob3VsZCBiZSBubyBwcm9ibGVtLiAgQXMgdGltZSBwYXNzZXMgdGhlcmUgbWF5IGJlIGNoYW5nZXMgdG8gdHJ5IHRvCitpbXByb3ZlIHRoZSBuZXRwZXJmJ3MgaG9ub3JpbmcgdGhlIGludGVydmFsIGJ1dCBvbmUgc2hvdWxkIG5vdAorYXNzLXUtbWUgaXQgd2lsbCBhbHdheXMgZG8gc28uICBPbmUgc2hvdWxkIG5vdCBhc3N1bWUgdGhlIHByZWNpc2lvbgord2lsbCByZW1haW4gZml4ZWQgLSBmdXR1cmUgdmVyc2lvbnMgbWF5IGNoYW5nZSBpdCAtIHBlcmhhcHMgZ29pbmcKK2JleW9uZCB0ZW50aHMgb2Ygc2Vjb25kcyBpbiByZXBvcnRpbmcgdGhlIGludGVydmFsIGxlbmd0aCBldGMuCisKK0Bub2RlIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyLCBUaGUgT21uaSBUZXN0cywgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEFnZ3JlZ2F0ZSBQZXJmb3JtYW5jZSwgVG9wCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BjaGFwdGVyIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyCisKK1RoZXJlIGFyZSB0d28gd2F5cyB0byB1c2UgbmV0cGVyZiB0byBtZWFzdXJlIHRoZSBwZXJmb3JtYW5jZSBvZgorYmlkaXJlY3Rpb25hbCB0cmFuc2Zlci4gIFRoZSBmaXJzdCBpcyB0byBydW4gY29uY3VycmVudCBuZXRwZXJmIHRlc3RzCitmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGUgc2Vjb25kIGlzIHRvIGNvbmZpZ3VyZSBuZXRwZXJmIHdpdGgKK0Bjb2Rley0tZW5hYmxlLWJ1cnN0fSBhbmQgdXNlIGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoZQorQHJlZntUQ1BfUlIsVENQX1JSfSB0ZXN0LgorCitXaGlsZSBuZWl0aGVyIG1ldGhvZCBpcyBtb3JlIGBgY29ycmVjdCcnIHRoYW4gdGhlIG90aGVyLCBlYWNoIGlzIGRvaW5nCitzbyBpbiBkaWZmZXJlbnQgd2F5cywgYW5kIHRoYXQgaGFzIHBvc3NpYmxlIGltcGxpY2F0aW9ucy4gIEZvcgoraW5zdGFuY2UsIHVzaW5nIHRoZSBjb25jdXJyZW50IG5ldHBlcmYgdGVzdCBtZWNoYW5pc20gbWVhbnMgdGhhdAorbXVsdGlwbGUgVENQIGNvbm5lY3Rpb25zIGFuZCBtdWx0aXBsZSBwcm9jZXNzZXMgYXJlIGludm9sdmVkLCB3aGVyZWFzCit1c2luZyB0aGUgc2luZ2xlIGluc3RhbmNlIG9mIFRDUF9SUiB0aGVyZSBpcyBvbmx5IG9uZSBUQ1AgY29ubmVjdGlvbgorYW5kIG9uZSBwcm9jZXNzIG9uIGVhY2ggZW5kLiAgVGhleSBtYXkgYmVoYXZlIGRpZmZlcmVudGx5LCBlc3BlY2lhbGx5CitvbiBhbiBNUCBzeXN0ZW0uCisKK0BtZW51CisqIEJpZGlyZWN0aW9uYWwgVHJhbnNmZXIgd2l0aCBDb25jdXJyZW50IFRlc3RzOjogIAorKiBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyIHdpdGggVENQX1JSOjogIAorKiBJbXBsaWNhdGlvbnMgb2YgQ29uY3VycmVudCBUZXN0cyB2cyBCdXJzdCBSZXF1ZXN0L1Jlc3BvbnNlOjogIAorQGVuZCBtZW51CisKK0Bub2RlICBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyIHdpdGggQ29uY3VycmVudCBUZXN0cywgQmlkaXJlY3Rpb25hbCBUcmFuc2ZlciB3aXRoIFRDUF9SUiwgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEJpZGlyZWN0aW9uYWwgVHJhbnNmZXIsIFVzaW5nIE5ldHBlcmYgdG8gTWVhc3VyZSBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIEJpZGlyZWN0aW9uYWwgVHJhbnNmZXIgd2l0aCBDb25jdXJyZW50IFRlc3RzCisKK0lmIHdlIGhhZCB0d28gaG9zdHMgRnJlZCBhbmQgRXRoZWwsIHdlIGNvdWxkIHNpbXBseSBydW4gYSBuZXRwZXJmCitAcmVme1RDUF9TVFJFQU0sVENQX1NUUkVBTX0gdGVzdCBvbiBGcmVkIHBvaW50aW5nIGF0IEV0aGVsLCBhbmQgYQorY29uY3VycmVudCBuZXRwZXJmIFRDUF9TVFJFQU0gdGVzdCBvbiBFdGhlbCBwb2ludGluZyBhdCBGcmVkLCBidXQKK3NpbmNlIHRoZXJlIGFyZSBubyBtZWNoYW5pc21zIHRvIHN5bmNocm9uaXplIG5ldHBlcmYgdGVzdHMgYW5kIHdlCit3b3VsZCBiZSBzdGFydGluZyB0ZXN0cyBmcm9tIHR3byBkaWZmZXJlbnQgc3lzdGVtcywgdGhlcmUgaXMgYQorY29uc2lkZXJhYmxlIHJpc2sgb2Ygc2tldyBlcnJvci4KKworRmFyIGJldHRlciB3b3VsZCBiZSB0byBydW4gc2ltdWx0YW5lb3VzIFRDUF9TVFJFQU0gYW5kCitAcmVme1RDUF9NQUVSVFMsVENQX01BRVJUU30gdGVzdHMgZnJvbSBqdXN0IEBie29uZX0gc3lzdGVtLCB1c2luZyB0aGUKK2NvbmNlcHRzIGFuZCBwcm9jZWR1cmVzIG91dGxpbmVkIGluIEByZWZ7UnVubmluZyBDb25jdXJyZW50IE5ldHBlcmYKK1Rlc3RzLFJ1bm5pbmcgQ29uY3VycmVudCBOZXRwZXJmIFRlc3RzfS4gSGVyZSB0aGVuIGlzIGFuIGV4YW1wbGU6CisKK0BleGFtcGxlCitmb3IgaSBpbiAxCitkbworIG5ldHBlcmYgLUggMTkyLjE2OC4yLjEwOCAtdCBUQ1BfU1RSRUFNIC1CICJvdXRib3VuZCIgLWkgMTAgLVAgMCAtdiAwIFwKKyAgIC0tIC1zIDI1NksgLVMgMjU2SyAmCisgbmV0cGVyZiAtSCAxOTIuMTY4LjIuMTA4IC10IFRDUF9NQUVSVFMgLUIgImluYm91bmQiICAtaSAxMCAtUCAwIC12IDAgXAorICAgLS0gLXMgMjU2SyAtUyAyNTZLICYKK2RvbmUKKworIDg5Mi42NiBvdXRib3VuZAorIDg5MS4zNCBpbmJvdW5kCitAZW5kIGV4YW1wbGUKKworV2UgaGF2ZSB1c2VkIGEgQGNvZGV7Zm9yfSBsb29wIGluIHRoZSBzaGVsbCB3aXRoIGp1c3Qgb25lIGl0ZXJhdGlvbgorYmVjYXVzZSB0aGF0IHdpbGwgYmUgQGJ7bXVjaH0gZWFzaWVyIHRvIGdldCBib3RoIHRlc3RzIHN0YXJ0ZWQgYXQgbW9yZSBvcgorbGVzcyB0aGUgc2FtZSB0aW1lIHRoYW4gZG9pbmcgaXQgYnkgaGFuZC4gIFRoZSBnbG9iYWwgQG9wdGlvbnstUH0gYW5kCitAb3B0aW9uey12fSBvcHRpb25zIGFyZSB1c2VkIGJlY2F1c2Ugd2UgYXJlbid0IGludGVyZXN0ZWQgaW4gYW55dGhpbmcKK290aGVyIHRoYW4gdGhlIHRocm91Z2hwdXQsIGFuZCB0aGUgZ2xvYmFsIEBvcHRpb257LUJ9IG9wdGlvbiBpcyB1c2VkCit0byB0YWcgZWFjaCBvdXRwdXQgc28gd2Uga25vdyB3aGljaCB3YXMgaW5ib3VuZCBhbmQgd2hpY2ggb3V0Ym91bmQKK3JlbGF0aXZlIHRvIHRoZSBzeXN0ZW0gb24gd2hpY2ggd2Ugd2VyZSBydW5uaW5nIG5ldHBlcmYuICBPZiBjb3Vyc2UKK3RoYXQgc2Vuc2UgaXMgc3dpdGNoZWQgb24gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHNlcnZlciA6KSAgVGhlIHVzZSBvZgordGhlIGdsb2JhbCBAb3B0aW9uey1pfSBvcHRpb24gaXMgZXhwbGFpbmVkIGluIEByZWZ7UnVubmluZyBDb25jdXJyZW50CitOZXRwZXJmIFRlc3RzLFJ1bm5pbmcgQ29uY3VycmVudCBOZXRwZXJmIFRlc3RzfS4KKworQmVnaW5uaW5nIHdpdGggdmVyc2lvbiAyLjUuMCB3ZSBjYW4gYWNjb21wbGlzaCBhIHNpbWlsYXIgcmVzdWx0IHdpdGgKK3RoZSBAcmVme1RoZSBPbW5pIFRlc3RzLHRoZSBvbW5pIHRlc3RzfSBhbmQgQHJlZntPbW5pIE91dHB1dAorU2VsZWN0b3JzLG91dHB1dCBzZWxlY3RvcnN9OgorCitAZXhhbXBsZQorZm9yIGkgaW4gMQorZG8KKyAgbmV0cGVyZiAtSCAxOTIuMTY4LjEuMyAtdCBvbW5pIC1sIDEwIC1QIDAgLS0gXAorICAgIC1kIHN0cmVhbSAtcyAyNTZLIC1TIDI1NksgLW8gdGhyb3VnaHB1dCxkaXJlY3Rpb24gJgorICBuZXRwZXJmIC1IIDE5Mi4xNjguMS4zIC10IG9tbmkgLWwgMTAgLVAgMCAtLSBcCisgICAgLWQgbWFlcnRzIC1zIDI1NksgLVMgMjU2SyAtbyB0aHJvdWdocHV0LGRpcmVjdGlvbiAmCitkb25lCisKKzgwNS4yNixSZWNlaXZlCis4MjguNTQsU2VuZAorQGVuZCBleGFtcGxlCisKK0Bub2RlICBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyIHdpdGggVENQX1JSLCBJbXBsaWNhdGlvbnMgb2YgQ29uY3VycmVudCBUZXN0cyB2cyBCdXJzdCBSZXF1ZXN0L1Jlc3BvbnNlLCBCaWRpcmVjdGlvbmFsIFRyYW5zZmVyIHdpdGggQ29uY3VycmVudCBUZXN0cywgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEJpZGlyZWN0aW9uYWwgVHJhbnNmZXIKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHNlY3Rpb24gQmlkaXJlY3Rpb25hbCBUcmFuc2ZlciB3aXRoIFRDUF9SUgorCitTdGFydGluZyB3aXRoIHZlcnNpb24gMi41LjAgdGhlIEBjb2Rley0tZW5hYmxlLWJ1cnN0fSBjb25maWd1cmUgb3B0aW9uCitkZWZhdWx0cyB0byBAY29kZXt5ZXN9LCBhbmQgc3RhcnRpbmcgc29tZSB0aW1lIGJlZm9yZSB2ZXJzaW9uIDIuNS4wCitidXQgYWZ0ZXIgMi40LjAgdGhlIGdsb2JhbCBAb3B0aW9uey1mfSBvcHRpb24gd291bGQgYWZmZWN0IHRoZQorYGB0aHJvdWdocHV0JycgcmVwb3J0ZWQgYnkgcmVxdWVzdC9yZXNwb25zZSB0ZXN0cy4gIElmIG9uZSB1c2VzIHRoZQordGVzdC1zcGVjaWZpYyBAb3B0aW9uey1ifSBvcHRpb24gdG8gaGF2ZSBzZXZlcmFsIGBgdHJhbnNhY3Rpb25zJycgaW4KK2ZsaWdodCBhdCBvbmUgdGltZSBhbmQgdGhlIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstcn0gb3B0aW9uIHRvCitpbmNyZWFzZSB0aGVpciBzaXplLCB0aGUgdGVzdCBsb29rcyBtb3JlIGFuZCBtb3JlIGxpa2UgYQorc2luZ2xlLWNvbm5lY3Rpb24gYmlkaXJlY3Rpb25hbCB0cmFuc2ZlciB0aGFuIGEgc2ltcGxlCityZXF1ZXN0L3Jlc3BvbnNlIHRlc3QuCisKK1NvLCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciBvbmUgY2FuIGRvIHNvbWV0aGluZyBsaWtlOgorCitAZXhhbXBsZQorbmV0cGVyZiAtZiBtIC10IFRDUF9SUiAtSCAxOTIuMTY4LjEuMyAtdiAyIC0tIC1iIDYgLXIgMzJLIC1TIDI1NksgLVMgMjU2SworTUlHUkFURUQgVENQIFJFUVVFU1QvUkVTUE9OU0UgVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIDE5Mi4xNjguMS4zICgxOTIuMTY4LjEuMykgcG9ydCAwIEFGX0lORVQgOiBpbnRlcnZhbCA6IGZpcnN0IGJ1cnN0IDYKK0xvY2FsIC9SZW1vdGUKK1NvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICAKK1NlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBUaHJvdWdocHV0IAorYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIDEwXjZiaXRzL3NlYyAgIAorCisxNjM4NCAgODczODAgIDMyNzY4ICAgIDMyNzY4ICAgMTAuMDAgICAgMTgyMS4zMCAgIAorNTI0Mjg4IDUyNDI4OAorQWxpZ25tZW50ICAgICAgT2Zmc2V0ICAgICAgICAgUm91bmRUcmlwICBUcmFucyAgICBUaHJvdWdocHV0CitMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlICBMYXRlbmN5ICAgIFJhdGUgICAgIDEwXjZiaXRzL3MKK1NlbmQgICBSZWN2ICAgIFNlbmQgICBSZWN2ICAgIHVzZWMvVHJhbiAgcGVyIHNlYyAgT3V0Ym91bmQgICBJbmJvdW5kCisgICAgOCAgICAgIDAgICAgICAgMCAgICAgIDAgICAyMDE1LjQwMiAgIDM0NzMuMjUyIDkxMC40OTIgICAgOTEwLjQ5MgorQGVuZCBleGFtcGxlCisKK3RvIGdldCBhIGJpZGlyZWN0aW9uYWwgYnVsay10aHJvdWdocHV0IHJlc3VsdC4gQXMgb25lIGNhbiBzZWUsIHRoZSAtdgorMiBvdXRwdXQgd2lsbCBpbmNsdWRlIGEgbnVtYmVyIG9mIGludGVyZXN0aW5nLCByZWxhdGVkIHZhbHVlcy4KKworQHF1b3RhdGlvbgorQGJ7Tk9URTogVGhlIGxvZ2ljIGJlaGluZCBAY29kZXstLWVuYWJsZS1idXJzdH0gaXMgdmVyeSBzaW1wbGUsIGFuZCB0aGVyZQorYXJlIG5vIGNhbGxzIHRvIEBjb2Rle3BvbGwoKX0gb3IgQGNvZGV7c2VsZWN0KCl9IHdoaWNoIG1lYW5zIHdlIHdhbnQKK3RvIG1ha2Ugc3VyZSB0aGF0IHRoZSBAY29kZXtzZW5kKCl9IGNhbGxzIHdpbGwgbmV2ZXIgYmxvY2ssIG9yIHdlIHJ1bgordGhlIHJpc2sgb2YgZGVhZGxvY2sgd2l0aCBlYWNoIHNpZGUgc3R1Y2sgdHJ5aW5nIHRvIGNhbGwgQGNvZGV7c2VuZCgpfQorYW5kIG5laXRoZXIgY2FsbGluZyBAY29kZXtyZWN2KCl9Ln0KK0BlbmQgcXVvdGF0aW9uCisKK0ZvcnR1bmF0ZWx5LCB0aGlzIGlzIGVhc2lseSBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZyBhIGBgbGFyZ2UgZW5vdWdoJycKK3NvY2tldCBidWZmZXIgc2l6ZSB3aXRoIHRoZSB0ZXN0LXNwZWNpZmljIEBvcHRpb257LXN9IGFuZCBAb3B0aW9uey1TfQorb3B0aW9ucy4gIFByZXNlbnRseSB0aGlzIG11c3QgYmUgcGVyZm9ybWVkIGJ5IHRoZSB1c2VyLiAgRnV0dXJlCit2ZXJzaW9ucyBvZiBuZXRwZXJmIG1pZ2h0IGF0dGVtcHQgdG8gZG8gdGhpcyBhdXRvbWFnaWNhbGx5LCBidXQgdGhlcmUKK2FyZSBzb21lIGlzc3VlcyB0byBiZSB3b3JrZWQtb3V0LiAKKworQG5vZGUgSW1wbGljYXRpb25zIG9mIENvbmN1cnJlbnQgVGVzdHMgdnMgQnVyc3QgUmVxdWVzdC9SZXNwb25zZSwgICwgQmlkaXJlY3Rpb25hbCBUcmFuc2ZlciB3aXRoIFRDUF9SUiwgVXNpbmcgTmV0cGVyZiB0byBNZWFzdXJlIEJpZGlyZWN0aW9uYWwgVHJhbnNmZXIKK0BzZWN0aW9uIEltcGxpY2F0aW9ucyBvZiBDb25jdXJyZW50IFRlc3RzIHZzIEJ1cnN0IFJlcXVlc3QvUmVzcG9uc2UKKworVGhlcmUgYXJlIHBlcmhhcHMgc3VidGxlIGJ1dCBpbXBvcnRhbnQgZGlmZmVyZW5jZXMgYmV0d2VlbiB1c2luZworY29uY3VycmVudCB1bmlkaXJlY3Rpb25hbCB0ZXN0cyB2cyBhIGJ1cnN0LW1vZGUgcmVxdWVzdCB0byBtZWFzdXJlCitiaWRpcmVjdGlvbmFsIHBlcmZvcm1hbmNlLgorCitCcm9hZGx5IHNwZWFraW5nLCBhIHNpbmdsZSBgYGNvbm5lY3Rpb24nJyBvciBgYGZsb3cnJyBvZiB0cmFmZmljCitjYW5ub3QgbWFrZSB1c2Ugb2YgdGhlIHNlcnZpY2VzIG9mIG1vcmUgdGhhbiBvbmUgb3IgdHdvIENQVXMgYXQgZWl0aGVyCitlbmQuICBXaGV0aGVyIG9uZSBvciB0d28gQ1BVcyB3aWxsIGJlIHVzZWQgcHJvY2Vzc2luZyBhIGZsb3cgd2lsbAorZGVwZW5kIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHN0YWNrKHMpIGludm9sdmVkIGFuZCB3aGV0aGVyIG9yIG5vdAordGhlIGdsb2JhbCBAb3B0aW9uey1UfSBvcHRpb24gaGFzIGJlZW4gdXNlZCB0byBiaW5kIG5ldHBlcmYvbmV0c2VydmVyCit0byBzcGVjaWZpYyBDUFVzLgorCitXaGVuIHVzaW5nIGNvbmN1cnJlbnQgdGVzdHMgdGhlcmUgd2lsbCBiZSB0d28gY29uY3VycmVudCBjb25uZWN0aW9ucworb3IgZmxvd3MsIHdoaWNoIG1lYW5zIHRoYXQgdXB3YXJkcyBvZiBmb3VyIENQVXMgd2lsbCBiZSBlbXBsb3llZAorcHJvY2Vzc2luZyB0aGUgcGFja2V0cyAoZ2xvYmFsIEBvcHRpb257LVR9IHVzZWQsIG5vIG1vcmUgdGhhbiB0d28gaWYKK25vdCksIGhvd2V2ZXIsIHdpdGgganVzdCBhIHNpbmdsZSwgYmlkaXJlY3Rpb25hbCByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QKK25vIG1vcmUgdGhhbiB0d28gQ1BVcyB3aWxsIGJlIGVtcGxveWVkIChvbmx5IG9uZSBpZiB0aGUgZ2xvYmFsCitAb3B0aW9uey1UfSBpcyBub3QgdXNlZCkuCisKK0lmIHRoZXJlIGlzIGEgQ1BVIGJvdHRsZW5lY2sgb24gZWl0aGVyIHN5c3RlbSB0aGlzIG1heSByZXN1bHQgaW4KK3JhdGhlciBkaWZmZXJlbnQgcmVzdWx0cyBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcy4KKworQWxzbywgd2l0aCBhIGJpZGlyZWN0aW9uYWwgcmVxdWVzdC9yZXNwb25zZSB0ZXN0IHRoZXJlIGlzIHNvbWV0aGluZyBvZgorYSBuYXR1cmFsIGJhbGFuY2Ugb3Igc3luY2hyb25pemF0aW9uIGJldHdlZW4gaW5ib3VuZCBhbmQgb3V0Ym91bmQgLSBhCityZXNwb25zZSB3aWxsIG5vdCBiZSBzZW50IHVudGlsIGEgcmVxdWVzdCBpcyByZWNlaXZlZCwgYW5kIChvbmNlIHRoZQorYnVyc3QgbGV2ZWwgaXMgcmVhY2hlZCkgYSBzdWJzZXF1ZW50IHJlcXVlc3Qgd2lsbCBub3QgYmUgc2VudCB1bnRpbCBhCityZXNwb25zZSBpcyByZWNlaXZlZC4gIFRoaXMgbWF5IG1hc2sgZmF2b3JpdGlzbSBpbiB0aGUgTklDIGJldHdlZW4KK2luYm91bmQgYW5kIG91dGJvdW5kIHByb2Nlc3NpbmcuCisKK1dpdGggdHdvIGNvbmN1cnJlbnQgdW5pZGlyZWN0aW9uYWwgdGVzdHMgdGhlcmUgaXMgbm8gc3VjaAorc3luY2hyb25pemF0aW9uIG9yIGJhbGFuY2UgYW5kIGFueSBmYXZvcml0aXNtIGluIHRoZSBOSUMgbWF5IGJlIGV4cG9zZWQuCisKK0Bub2RlIFRoZSBPbW5pIFRlc3RzLCBPdGhlciBOZXRwZXJmIFRlc3RzLCBVc2luZyBOZXRwZXJmIHRvIE1lYXN1cmUgQmlkaXJlY3Rpb25hbCBUcmFuc2ZlciwgVG9wCitAY2hhcHRlciBUaGUgT21uaSBUZXN0cworCitCZWdpbm5pbmcgd2l0aCB2ZXJzaW9uIDIuNS4wLCBuZXRwZXJmIGJlZ2lucyBhIG1pZ3JhdGlvbiB0byB0aGUKK0BzYW1we29tbml9IHRlc3RzIG9yIGBgVHdvIHJvdXRpbmVzIHRvIG1lYXN1cmUgdGhlbSBhbGwuJycgIFRoZSBjb2RlIGZvcgordGhlIG9tbmkgdGVzdHMgY2FuIGJlIGZvdW5kIGluIEBmaWxle3NyYy9uZXR0ZXN0X29tbmkuY30gYW5kIHRoZSBnb2FsCitpcyB0byBtYWtlIGl0IGVhc2llciBmb3IgbmV0cGVyZiB0byBzdXBwb3J0IG11bHRpcGxlIHByb3RvY29scyBhbmQKK3JlcG9ydCBhIGdyZWF0IG1hbnkgYWRkaXRpb25hbCB0aGluZ3MgYWJvdXQgdGhlIHN5c3RlbXMgdW5kZXIgdGVzdC4KK0FkZGl0aW9uYWxseSwgYSBmbGV4aWJsZSBvdXRwdXQgc2VsZWN0aW9uIG1lY2hhbmlzbSBpcyBwcmVzZW50IHdoaWNoCithbGxvd3MgdGhlIHVzZXIgdG8gY2hvc2Ugc3BlY2lmaWNhbGx5IHdoYXQgdmFsdWVzIHNoZSB3aXNoZXMgdG8gaGF2ZQorcmVwb3J0ZWQgYW5kIGluIHdoYXQgZm9ybWF0LgorCitUaGUgb21uaSB0ZXN0cyBhcmUgaW5jbHVkZWQgYnkgZGVmYXVsdCBpbiB2ZXJzaW9uIDIuNS4wLiAgVG8gZGlzYWJsZQordGhlbSwgb25lIG11c3Q6CitAZXhhbXBsZQorLi9jb25maWd1cmUgLS1lbmFibGUtb21uaT1ubyAuLi4KK0BlbmQgZXhhbXBsZQorCithbmQgcmVtYWtlIG5ldHBlcmYuICBSZW1ha2luZyBuZXRzZXJ2ZXIgaXMgb3B0aW9uYWwgYmVjYXVzZSBldmVuIGluCisyLjUuMCBpdCBoYXMgYGB1bm1pZ3JhdGVkJycgbmV0c2VydmVyIHNpZGUgcm91dGluZXMgZm9yIHRoZSBjbGFzc2ljCisoZWcgQGZpbGV7c3JjL25ldHRlc3RfYnNkLmN9KSB0ZXN0cy4KKworQG1lbnUKKyogTmF0aXZlIE9tbmkgVGVzdHM6OiAgICAgICAgICAgCisqIE1pZ3JhdGVkIFRlc3RzOjogICAgICAgICAgICAgIAorKiBPbW5pIE91dHB1dCBTZWxlY3Rpb246OiAgICAgICAKK0BlbmQgbWVudQorCitAbm9kZSBOYXRpdmUgT21uaSBUZXN0cywgTWlncmF0ZWQgVGVzdHMsIFRoZSBPbW5pIFRlc3RzLCBUaGUgT21uaSBUZXN0cworQHNlY3Rpb24gTmF0aXZlIE9tbmkgVGVzdHMKKworT25lIGFjY2VzcyB0aGUgb21uaSB0ZXN0cyBgYG5hdGl2ZWx5JycgYnkgdXNpbmcgYSB2YWx1ZSBvZiBgYE9NTkknJword2l0aCB0aGUgZ2xvYmFsIEBvcHRpb257LXR9IHRlc3Qtc2VsZWN0aW9uIG9wdGlvbi4gIFRoaXMgd2lsbCB0aGVuCitjYXVzZSBuZXRwZXJmIHRvIHVzZSB0aGUgY29kZSBpbiBAZmlsZXtzcmMvbmV0dGVzdF9vbW5pLmN9IGFuZCBpbgorcGFydGljdWxhciB0aGUgdGVzdC1zcGVjaWZpYyBvcHRpb25zIHBhcnNlciBmb3IgdGhlIG9tbmkgdGVzdHMuICBUaGUKK3Rlc3Qtc3BlY2lmaWMgb3B0aW9ucyBmb3IgdGhlIG9tbmkgdGVzdHMgYXJlIGEgc3VwZXJzZXQgb2YgdGhvc2UgZm9yCitgYGNsYXNzaWMnJyB0ZXN0cy4gIFRoZSBvcHRpb25zIGFkZGVkIGJ5IHRoZSBvbW5pIHRlc3RzIGFyZToKKworQHRhYmxlIEBjb2RlCitAdmluZGV4IC1jLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtYworVGhpcyBleHBsaWNpdGx5IGRlY2xhcmVzIHRoYXQgdGhlIHRlc3QgaXMgdG8gaW5jbHVkZSBjb25uZWN0aW9uCitlc3RhYmxpc2htZW50IGFuZCB0ZWFyLWRvd24gYXMgaW4gZWl0aGVyIGEgVENQX0NSUiBvciBUQ1BfQ0MgdGVzdC4KKworQHZpbmRleCAtZCwgVGVzdC1zcGVjaWZpYworQGl0ZW0gLWQgPGRpcmVjdGlvbj4KK1RoaXMgb3B0aW9uIHNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgdGVzdCByZWxhdGl2ZSB0byB0aGUgbmV0cGVyZgorcHJvY2Vzcy4gIEFzIG9mIHZlcnNpb24gMi41LjAgb25lIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBpbiBhCitjYXNlLWluc2Vuc2l0aXZlIG1hbm5lcjoKKworQHRhYmxlIEBjb2RlCitAaXRlbSBzZW5kLCBzdHJlYW0sIHRyYW5zbWl0LCB4bWl0IG9yIDIgCitBbnkgb2Ygd2hpY2ggd2lsbCBjYXVzZSBuZXRwZXJmIHRvIHNlbmQgdG8gdGhlIG5ldHNlcnZlci4KK0BpdGVtIHJlY3YsIHJlY2VpdmUsIG1hZXJ0cyBvciA0CitBbnkgb2Ygd2hpY2ggd2lsbCBjYXVzZSBuZXRzZXJ2ZXIgdG8gc2VuZCB0byBuZXRwZXJmLgorQGl0ZW0gcnIgb3IgNgorRWl0aGVyIG9mIHdoaWNoIHdpbGwgY2F1c2UgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QuCitAZW5kIHRhYmxlCisKK0FkZGl0aW9uYWxseSwgb25lIGNhbiBzcGVjaWZ5IHR3byBkaXJlY3Rpb25zIHNlcGFyYXRlZCBieSBhICd8JworY2hhcmFjdGVyIGFuZCB0aGV5IHdpbGwgYmUgT1InZWQgdG9nZXRoZXIuICBJbiB0aGlzIHdheSBvbmUgY2FuIHVzZQordGhlICcnU2VuZHxSZWN2JycgdGhhdCB3aWxsIGJlIGVtaXR0ZWQgYnkgdGhlIEByZWZ7T21uaSBPdXRwdXQKK1NlbGVjdG9ycyxESVJFQ1RJT059IEByZWZ7T21uaSBPdXRwdXQgU2VsZWN0aW9uLG91dHB1dCBzZWxlY3Rvcn0gd2hlbgordXNlZCB3aXRoIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LgorCitAdmluZGV4IC1rLCBUZXN0LXNwZWNpZmljCitAaXRlbSAtayBbQHJlZntPbW5pIE91dHB1dCBTZWxlY3Rpb24sb3V0cHV0IHNlbGVjdG9yfV0KK1RoaXMgb3B0aW9uIHNldHMgdGhlIHN0eWxlIG9mIG91dHB1dCB0byBgYGtleXZhbCcnIHdoZXJlIGVhY2ggbGluZSBvZgorb3V0cHV0IGhhcyB0aGUgZm9ybToKK0BleGFtcGxlCitrZXk9dmFsdWUKK0BlbmQgZXhhbXBsZQorRm9yIGV4YW1wbGU6CitAZXhhbXBsZQorJCBuZXRwZXJmIC10IG9tbmkgLS0gLWQgcnIgLWsgIlRIUk9VR0hQVVQsVEhST1VHSFBVVF9VTklUUyIKK09NTkkgVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIGxvY2FsaG9zdC5sb2NhbGRvbWFpbiAoMTI3LjAuMC4xKSBwb3J0IDAgQUZfSU5FVCA6IGRlbW8KK1RIUk9VR0hQVVQ9NTkwOTIuNjUKK1RIUk9VR0hQVVRfVU5JVFM9VHJhbnMvcworQGVuZCBleGFtcGxlCisKK1VzaW5nIHRoZSBAb3B0aW9uey1rfSBvcHRpb24gd2lsbCBvdmVycmlkZSBhbnkgcHJldmlvdXMsIHRlc3Qtc3BlY2lmaWMKK0BvcHRpb257LW99IG9yIEBvcHRpb257LU99IG9wdGlvbi4KKworQHZpbmRleCAtbywgVGVzdC1zcGVjaWZpYworQGl0ZW0gLW8gW0ByZWZ7T21uaSBPdXRwdXQgU2VsZWN0aW9uLG91dHB1dCBzZWxlY3Rvcn1dCitUaGlzIG9wdGlvbiBzZXRzIHRoZSBzdHlsZSBvZiBvdXRwdXQgdG8gYGBDU1YnJyB3aGVyZSB0aGVyZSB3aWxsIGJlCitvbmUgbGluZSBvZiBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLCBwcmVjZWRlZCBieSBvbmUgbGluZSBvZiBjb2x1bW4KK25hbWVzIHVubGVzcyB0aGUgZ2xvYmFsIEBvcHRpb257LVB9IG9wdGlvbiBpcyB1c2VkIHdpdGggYSB2YWx1ZSBvZiAwOgorQGV4YW1wbGUKKyQgbmV0cGVyZiAtdCBvbW5pIC0tIC1kIHJyIC1vICJUSFJPVUdIUFVULFRIUk9VR0hQVVRfVU5JVFMiCitPTU5JIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byBsb2NhbGhvc3QubG9jYWxkb21haW4gKDEyNy4wLjAuMSkgcG9ydCAwIEFGX0lORVQgOiBkZW1vCitUaHJvdWdocHV0LFRocm91Z2hwdXQgVW5pdHMKKzYwOTk5LjA3LFRyYW5zL3MKK0BlbmQgZXhhbXBsZQorCitVc2luZyB0aGUgQG9wdGlvbnstb30gb3B0aW9uIHdpbGwgb3ZlcnJpZGUgYW55IHByZXZpb3VzLCB0ZXN0LXNwZWNpZmljCitAb3B0aW9uey1rfSBvciBAb3B0aW9uey1PfSBvcHRpb24uCisKK0B2aW5kZXggLU8sIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1PIFtAcmVme09tbmkgT3V0cHV0IFNlbGVjdGlvbixvdXRwdXQgc2VsZWN0b3J9XQorVGhpcyBvcHRpb24gc2V0cyB0aGUgc3R5bGUgb2Ygb3V0cHV0IHRvIGBgaHVtYW4gcmVhZGFibGUnJyB3aGljaCB3aWxsCitsb29rIHF1aXRlIHNpbWlsYXIgdG8gY2xhc3NpYyBuZXRwZXJmIG91dHB1dDoKK0BleGFtcGxlCiskIG5ldHBlcmYgLXQgb21uaSAtLSAtZCByciAtTyAiVEhST1VHSFBVVCxUSFJPVUdIUFVUX1VOSVRTIgorT01OSSBURVNUIGZyb20gMC4wLjAuMCAoMC4wLjAuMCkgcG9ydCAwIEFGX0lORVQgdG8gbG9jYWxob3N0LmxvY2FsZG9tYWluICgxMjcuMC4wLjEpIHBvcnQgMCBBRl9JTkVUIDogZGVtbworVGhyb3VnaHB1dCBUaHJvdWdocHV0IAorICAgICAgICAgICBVbml0cyAgICAgIAorICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgIAorNjA0OTIuNTcgICBUcmFucy9zCitAZW5kIGV4YW1wbGUKKworVXNpbmcgdGhlIEBvcHRpb257LU99IG9wdGlvbiB3aWxsIG92ZXJyaWRlIGFueSBwcmV2aW91cywgdGVzdC1zcGVjaWZpYworQG9wdGlvbnsta30gb3IgQG9wdGlvbnstb30gb3B0aW9uLgorCitAdmluZGV4IC10LCBUZXN0LXNwZWNpZmljCitAaXRlbSAtdAorVGhpcyBvcHRpb24gZXhwbGljaXRseSBzZXRzIHRoZSBzb2NrZXQgdHlwZSBmb3IgdGhlIHRlc3QncyBkYXRhCitjb25uZWN0aW9uLiBBcyBvZiB2ZXJzaW9uIDIuNS4wIHRoZSBrbm93biBzb2NrZXQgdHlwZXMgaW5jbHVkZQorYGBzdHJlYW0nJyBhbmQgYGBkZ3JhbScnIGZvciBTT0NLX1NUUkVBTSBhbmQgU09DS19ER1JBTSByZXNwZWN0aXZlbHkuCisKK0B2aW5kZXggLVQsIFRlc3Qtc3BlY2lmaWMKK0BpdGVtIC1UIDxwcm90b2NvbD4KK1RoaXMgb3B0aW9uIGlzIHVzZWQgdG8gZXhwbGljaXRseSBzZXQgdGhlIHByb3RvY29sIHVzZWQgZm9yIHRoZQordGVzdC4gSXQgaXMgY2FzZS1pbnNlbnNpdGl2ZS4gQXMgb2YgdmVyc2lvbiAyLjUuMCB0aGUgcHJvdG9jb2xzIGtub3duCit0byBuZXRwZXJmIGluY2x1ZGU6CitAdGFibGUgQGNvZGUKK0BpdGVtIFRDUAorU2VsZWN0IHRoZSBUcmFuc21pc3Npb24gQ29udHJvbCBQcm90b2NvbAorQGl0ZW0gVURQCitTZWxlY3QgdGhlIFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wKK0BpdGVtIFNEUAorU2VsZWN0IHRoZSBTb2NrZXRzIERpcmVjdCBQcm90b2NvbAorQGl0ZW0gRENDUAorU2VsZWN0IHRoZSBEYXRhZ3JhbSBDb25nZXN0aW9uIENvbnRyb2wgUHJvdG9jb2wKK0BpdGVtIFNDVFAKK1NlbGVjdCB0aGUgU3RyZWFtIENvbnRyb2wgVHJhbnNwb3J0IFByb3RvY29sCitAaXRlbSB1ZHBsaXRlCitTZWxlY3QgVURQIExpdGUKK0BlbmQgdGFibGUKKworVGhlIGRlZmF1bHQgaXMgaW1wbGljaXQgYmFzZWQgb24gb3RoZXIgc2V0dGluZ3MuCitAZW5kIHRhYmxlCisKK1RoZSBvbW5pIHRlc3RzIGFsc28gZXh0ZW5kIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzb21lIG9mIHRoZSBjbGFzc2ljLAordGVzdC1zcGVjaWZpYyBvcHRpb25zIGZvciB0aGUgQlNEIFNvY2tldHMgdGVzdHM6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gLW0gPG9wdGlvbnNwZWM+CitUaGlzIGNhbiBzZXQgdGhlIHNlbmQgc2l6ZSBmb3IgZWl0aGVyIG9yIGJvdGggb2YgdGhlIG5ldHBlcmYgYW5kCituZXRzZXJ2ZXIgc2lkZXMgb2YgdGhlIHRlc3Q6CitAZXhhbXBsZQorLW0gMzJLCitAZW5kIGV4YW1wbGUKK3NldHMgb25seSB0aGUgbmV0cGVyZi1zaWRlIHNlbmQgc2l6ZSB0byAzMjc2OCBieXRlcywgYW5kIG9yJ3MtaW4KK3RyYW5zbWl0IGZvciB0aGUgZGlyZWN0aW9uLiBUaGlzIGlzIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGJlaGF2aW91ciBhcworZm9yIHRoZSBjbGFzc2ljIHRlc3RzLgorQGV4YW1wbGUKKy1tICwzMksKK0BlbmQgZXhhbXBsZQorc2V0cyBvbmx5IHRoZSBuZXRzZXJ2ZXIgc2lkZSBzZW5kIHNpemUgdG8gMzI3NjggYnl0ZXMgYW5kIG9yJ3MtaW4KK3JlY2VpdmUgZm9yIHRoZSBkaXJlY3Rpb24uCitAZXhhbXBsZQorLW0gMTZLLDMySworc2V0cyB0aGUgbmV0cGVyZiBzaWRlIHNlbmQgc2l6ZSB0byAxNjI4NCBieXRlcywgdGhlIG5ldHNlcnZlciBzaWRlCitzZW5kIHNpemUgdG8gMzI3NjggYnl0ZXMgYW5kIHRoZSBkaXJlY3Rpb24gd2lsbCBiZSAiU2VuZHxSZWN2LiIKK0BlbmQgZXhhbXBsZQorQGl0ZW0gLU0gPG9wdGlvbnNwZWM+CitUaGlzIGNhbiBzZXQgdGhlIHJlY2VpdmUgc2l6ZSBmb3IgZWl0aGVyIG9yIGJvdGggb2YgdGhlIG5ldHBlcmYgYW5kCituZXRzZXJ2ZXIgc2lkZXMgb2YgdGhlIHRlc3Q6CitAZXhhbXBsZQorLU0gMzJLCitAZW5kIGV4YW1wbGUKK3NldHMgb25seSB0aGUgbmV0c2VydmVyIHNpZGUgcmVjZWl2ZSBzaXplIHRvIDMyNzY4IGJ5dGVzIGFuZCBvcidzLWluCitzZW5kIGZvciB0aGUgdGVzdCBkaXJlY3Rpb24uCitAZXhhbXBsZQorLU0gLDMySworQGVuZCBleGFtcGxlCitzZXRzIG9ubHkgdGhlIG5ldHBlcmYgc2lkZSByZWNlaXZlIHNpemUgdG8gMzI3NjggYnl0ZXMgYW5kIG9yJ3MtaW4KK3JlY2VpdmUgZm9yIHRoZSB0ZXN0IGRpcmVjdGlvbi4KK0BleGFtcGxlCistTSAxNkssMzJLCitAZW5kIGV4YW1wbGUKK3NldHMgdGhlIG5ldHNlcnZlciBzaWRlIHJlY2VpdmUgc2l6ZSB0byAxNjM4NCBieXRlcyBhbmQgdGhlIG5ldHBlcmYKK3NpZGUgcmVjZWl2ZSBzaXplIHRvIDMyNzY4IGJ5dGVzIGFuZCB0aGUgZGlyZWN0aW9uIHdpbGwgYmUgIlNlbmR8UmVjdi4iCitAZW5kIHRhYmxlCisKK0Bub2RlIE1pZ3JhdGVkIFRlc3RzLCBPbW5pIE91dHB1dCBTZWxlY3Rpb24sIE5hdGl2ZSBPbW5pIFRlc3RzLCBUaGUgT21uaSBUZXN0cworQHNlY3Rpb24gTWlncmF0ZWQgVGVzdHMKKworQXMgb2YgdmVyc2lvbiAyLjUuMCBzZXZlcmFsIHRlc3RzIGhhdmUgYmVlbiBtaWdyYXRlZCB0byB1c2UgdGhlIG9tbmkKK2NvZGUgaW4gQGZpbGV7c3JjL25ldHRlc3Rfb21uaS5jfSBmb3IgdGhlIGNvcmUgb2YgdGhlaXIgdGVzdGluZy4gIEEKK21pZ3JhdGVkIHRlc3QgcmV0YWlucyBhbGwgaXRzIHByZXZpb3VzIG91dHB1dCBjb2RlIGFuZCBzbyBzaG91bGQgc3RpbGwKK2BgbG9vayBhbmQgZmVlbCcnIGp1c3QgbGlrZSBhIHByZS0yLjUuMCB0ZXN0IHdpdGggb25lIGV4Y2VwdGlvbiAtIHRoZQorZmlyc3QgbGluZSBvZiB0aGUgdGVzdCBiYW5uZXJzIHdpbGwgaW5jbHVkZSB0aGUgd29yZCBgYE1JR1JBVEVEJycgYXQKK3RoZSBiZWdpbm5pbmcgYXMgaW46CisKK0BleGFtcGxlCiskIG5ldHBlcmYKK01JR1JBVEVEIFRDUCBTVFJFQU0gVEVTVCBmcm9tIDAuMC4wLjAgKDAuMC4wLjApIHBvcnQgMCBBRl9JTkVUIHRvIGxvY2FsaG9zdC5sb2NhbGRvbWFpbiAoMTI3LjAuMC4xKSBwb3J0IDAgQUZfSU5FVCA6IGRlbW8KK1JlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIAorU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgCitTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICAKK2J5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgIDEwXjZiaXRzL3NlYyAgCisKKyA4NzM4MCAgMTYzODQgIDE2Mzg0ICAgIDEwLjAwICAgIDI3MTc1LjI3ICAgCitAZW5kIGV4YW1wbGUKKworVGhlIHRlc3RzIG1pZ3JhdGVkIGluIHZlcnNpb24gMi41LjAgYXJlOgorQGl0ZW1pemUKK0BpdGVtIFRDUF9TVFJFQU0KK0BpdGVtIFRDUF9NQUVSVFMKK0BpdGVtIFRDUF9SUgorQGl0ZW0gVENQX0NSUgorQGl0ZW0gVURQX1NUUkVBTQorQGl0ZW0gVURQX1JSCitAZW5kIGl0ZW1pemUKKworSXQgaXMgZXhwZWN0ZWQgdGhhdCBmdXR1cmUgcmVsZWFzZXMgd2lsbCBoYXZlIGFkZGl0aW9uYWwgdGVzdHMKK21pZ3JhdGVkIHRvIHVzZSB0aGUgYGBvbW5pJycgZnVuY3Rpb25hbGl0eS4KKworSWYgb25lIHVzZXMgYGBvbW5pLXNwZWNpZmljJycgdGVzdC1zcGVjaWZpYyBvcHRpb25zIGluIGNvbmp1bmN0aW9uCit3aXRoIGEgbWlncmF0ZWQgdGVzdCwgaW5zdGVhZCBvZiB1c2luZyB0aGUgY2xhc3NpYyBvdXRwdXQgY29kZSwgdGhlCituZXcgb21uaSBvdXRwdXQgY29kZSB3aWxsIGJlIHVzZWQuIEZvciBleGFtcGxlIGlmIG9uZSB1c2VzIHRoZQorQG9wdGlvbnsta30gdGVzdC1zcGVjaWZpYyBvcHRpb24gd2l0aCBhIHZhbHVlIG9mCitgYE1JTl9MQVRFTkNZLE1BWF9MQVRFTkNZJycgd2l0aCBhIG1pZ3JhdGVkIFRDUF9SUiB0ZXN0IG9uZSB3aWxsIHNlZToKKworQGV4YW1wbGUKKyQgbmV0cGVyZiAtdCB0Y3BfcnIgLS0gLWsgVEhST1VHSFBVVCxUSFJPVUdIUFVUX1VOSVRTCitNSUdSQVRFRCBUQ1AgUkVRVUVTVC9SRVNQT05TRSBURVNUIGZyb20gMC4wLjAuMCAoMC4wLjAuMCkgcG9ydCAwIEFGX0lORVQgdG8gbG9jYWxob3N0LmxvY2FsZG9tYWluICgxMjcuMC4wLjEpIHBvcnQgMCBBRl9JTkVUIDogZGVtbworVEhST1VHSFBVVD02MDA3NC43NAorVEhST1VHSFBVVF9VTklUUz1UcmFucy9zCitAZW5kIGV4YW1wbGUKK3JhdGhlciB0aGFuOgorQGV4YW1wbGUKKyQgbmV0cGVyZiAtdCB0Y3BfcnIKK01JR1JBVEVEIFRDUCBSRVFVRVNUL1JFU1BPTlNFIFRFU1QgZnJvbSAwLjAuMC4wICgwLjAuMC4wKSBwb3J0IDAgQUZfSU5FVCB0byBsb2NhbGhvc3QubG9jYWxkb21haW4gKDEyNy4wLjAuMSkgcG9ydCAwIEFGX0lORVQgOiBkZW1vCitMb2NhbCAvUmVtb3RlCitTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuCitTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIAorYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICAKKworMTYzODQgIDg3MzgwICAxICAgICAgICAxICAgICAgIDEwLjAwICAgIDU5NDIxLjUyICAgCisxNjM4NCAgODczODAgCitAZW5kIGV4YW1wbGUKKworQG5vZGUgT21uaSBPdXRwdXQgU2VsZWN0aW9uLCAgLCBNaWdyYXRlZCBUZXN0cywgVGhlIE9tbmkgVGVzdHMKK0BzZWN0aW9uIE9tbmkgT3V0cHV0IFNlbGVjdGlvbgorCitUaGUgb21uaSB0ZXN0LXNwZWNpZmljIEBvcHRpb257LWt9LCBAb3B0aW9uey1vfSBhbmQgQG9wdGlvbnstT30KK29wdGlvbnMgdGFrZSBhbiBvcHRpb25hbCBAY29kZXtvdXRwdXQgc2VsZWN0b3J9IGJ5IHdoaWNoIHRoZSB1c2VyIGNhbgorY29uZmlndXJlIHdoYXQgdmFsdWVzIGFyZSByZXBvcnRlZC4gIFRoZSBvdXRwdXQgc2VsZWN0b3IgY2FuIHRha2UKK3NldmVyYWwgZm9ybXM6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gQGZpbGV7ZmlsZW5hbWV9CitUaGUgb3V0cHV0IHNlbGVjdGlvbnMgd2lsbCBiZSByZWFkIGZyb20gdGhlIG5hbWVkIGZpbGUuIFdpdGhpbiB0aGUKK2ZpbGUgdGhlcmUgY2FuIGJlIHVwIHRvIGZvdXIgbGluZXMgb2YgY29tbWEtc2VwYXJhdGVkIG91dHB1dAorc2VsZWN0b3JzLiBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IG11bHRpLWxpbmUgYmxvY2tzIG9mIG91dHB1dCBhcmUgZW1pdHRlZAord2hlbiB0aGUgQG9wdGlvbnstT30gb3B0aW9uIGlzIHVzZWQuICBUaGlzIG91dHB1dCwgd2hpbGUgbm90IGlkZW50aWNhbCB0bworYGBjbGFzc2ljJycgbmV0cGVyZiBvdXRwdXQsIGlzIGluc3BpcmVkIGJ5IGl0LiAgTXVsdGlwbGUgbGluZXMgaGF2ZSBubworZWZmZWN0IGZvciBAb3B0aW9uey1rfSBhbmQgQG9wdGlvbnstb30gb3B0aW9ucy4gIFB1dHRpbmcgb3V0cHV0CitzZWxlY3Rpb25zIGluIGEgZmlsZSBjYW4gYmUgdXNlZnVsIHdoZW4gdGhlIGxpc3Qgb2Ygc2VsZWN0aW9ucyBpcyBsb25nLgorQGl0ZW0gY29tbWEgYW5kL29yIHNlbWktY29sb24tc2VwYXJhdGVkIGxpc3QKK1RoZSBvdXRwdXQgc2VsZWN0aW9ucyB3aWxsIGJlIHBhcnNlZCBmcm9tIGEgY29tbWEgYW5kL29yCitzZW1pLWNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIG91dHB1dCBzZWxlY3RvcnMuIFdoZW4gdGhlIGxpc3QgaXMgZ2l2ZW4KK3RvIGEgQG9wdGlvbnstT30gb3B0aW9uIGEgc2VtaS1jb2xvbiBzcGVjaWZpZXMgYSBuZXcgb3V0cHV0IGJsb2NrCitzaG91bGQgYmUgc3RhcnRlZC4gIFNlbWktY29sb25zIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBjb21tYXMgd2hlbgordXNlZCB3aXRoIHRoZSBAb3B0aW9uey1rfSBvciBAb3B0aW9uey1vfSBvcHRpb25zLiAgRGVwZW5kaW5nIG9uIHRoZQorY29tbWFuZCBpbnRlcnByZXRlciBiZWluZyB1c2VkLCB0aGUgc2VtaS1jb2xvbiBtYXkgaGF2ZSB0byBiZSBlc2NhcGVkCitzb21laG93IHRvIGtlZXAgaXQgZnJvbSBiZWluZyBpbnRlcnByZXRlZCBieSB0aGUgY29tbWFuZCBpbnRlcnByZXRlci4KK1RoaXMgY2FuIG9mdGVuIGJlIGRvbmUgYnkgZW5jbG9zaW5nIHRoZSBlbnRpcmUgbGlzdCBpbiBxdW90ZXMuCitAaXRlbSBhbGwKK0lmIHRoZSBrZXl3b3JkIEBie2FsbH0gaXMgc3BlY2lmaWVkIGl0IG1lYW5zIHRoYXQgYWxsIGtub3duIG91dHB1dAordmFsdWVzIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4gIFRoaXMgY2FuIGJlIGEKK2dyZWF0IGRlYWwgb2Ygb3V0cHV0LiAgQXMgb2YgdmVyc2lvbiAyLjUuMCB0aGVyZSBhcmUgMTU3IGRpZmZlcmVudAorb3V0cHV0IHNlbGVjdG9ycy4KK0BpdGVtID8KK0lmIGEgYGA/JycgaXMgZ2l2ZW4gYXMgdGhlIG91dHB1dCBzZWxlY3Rpb24sIHRoZSBsaXN0IG9mIGFsbCBrbm93bgorb3V0cHV0IHNlbGVjdG9ycyB3aWxsIGJlIGRpc3BsYXllZCBhbmQgbm8gdGVzdCBhY3R1YWxseSBydW4uICBXaGVuCitwYXNzZWQgdG8gdGhlIEBvcHRpb257LU99IG9wdGlvbiB0aGV5IHdpbGwgYmUgbGlzdGVkIG9uZSBwZXIKK2xpbmUuIE90aGVyd2lzZSB0aGV5IHdpbGwgYmUgbGlzdGVkIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuICBJdCBtYXkKK2JlIG5lY2Vzc2FyeSB0byBwcm90ZWN0IHRoZSBgYD8nJyBmcm9tIHRoZSBjb21tYW5kIGludGVycHJldGVyIGJ5Citlc2NhcGluZyBpdCBvciBlbmNsb3NpbmcgaXQgaW4gcXVvdGVzLgorQGl0ZW0gbm8gc2VsZWN0b3IKK0lmIG5vdGhpbmcgaXMgZ2l2ZW4gdG8gdGhlIEBvcHRpb257LWt9LCBAb3B0aW9uey1vfSBvciBAb3B0aW9uey1PfQorb3B0aW9uIHRoZW4gdGhlIGNvZGUgc2VsZWN0cyBhIGRlZmF1bHQgc2V0IG9mIG91dHB1dCBzZWxlY3RvcnMKK2luc3BpcmVkIGJ5IGNsYXNzaWMgbmV0cGVyZiBvdXRwdXQuIFRoZSBmb3JtYXQgd2lsbCBiZSB0aGUgQHNhbXB7aHVtYW4KK3JlYWRhYmxlfSBmb3JtYXQgZW1pdHRlZCBieSB0aGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1PfSBvcHRpb24uCitAZW5kIHRhYmxlCisKK1RoZSBvcmRlciBvZiBldmFsdWF0aW9uIHdpbGwgZmlyc3QgY2hlY2sgZm9yIGFuIG91dHB1dCBzZWxlY3Rpb24uICBJZgorbm9uZSBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgQG9wdGlvbnsta30sIEBvcHRpb257LW99IG9yIEBvcHRpb257LU99CitvcHRpb24gbmV0cGVyZiB3aWxsIHNlbGVjdCBhIGRlZmF1bHQgYmFzZWQgb24gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUKK3Rlc3QuICBJZiB0aGVyZSBpcyBhbiBvdXRwdXQgc2VsZWN0aW9uLCB0aGUgY29kZSB3aWxsIGZpcnN0IGNoZWNrIGZvcgorQHNhbXB7P30sIHRoZW4gY2hlY2sgdG8gc2VlIGlmIGl0IGlzIHRoZSBtYWdpYyBAc2FtcHthbGx9IGtleXdvcmQuCitBZnRlciB0aGF0IGl0IHdpbGwgY2hlY2sgZm9yIGVpdGhlciBAc2FtcHssfSBvciBAc2FtcHs7fSBpbiB0aGUKK3NlbGVjdGlvbiBhbmQgdGFrZSB0aGF0IHRvIG1lYW4gaXQgaXMgYSBjb21tYSBhbmQvb3IKK3NlbWktY29sb24tc2VwYXJhdGVkIGxpc3QuIElmIG5vbmUgb2YgdGhvc2UgY2hlY2tzIG1hdGNoLCBuZXRwZXJmIHdpbGwgdGhlbgorYXNzdW1lIHRoZSBvdXRwdXQgc3BlY2lmaWNhdGlvbiBpcyBhIGZpbGVuYW1lIGFuZCBhdHRlbXB0IHRvIG9wZW4gYW5kCitwYXJzZSB0aGUgZmlsZS4KKworQG1lbnUKKyogT21uaSBPdXRwdXQgU2VsZWN0b3JzOjogICAgICAgCitAZW5kIG1lbnUKKworQG5vZGUgT21uaSBPdXRwdXQgU2VsZWN0b3JzLCAgLCBPbW5pIE91dHB1dCBTZWxlY3Rpb24sIE9tbmkgT3V0cHV0IFNlbGVjdGlvbgorQHN1YnNlY3Rpb24gT21uaSBPdXRwdXQgU2VsZWN0b3JzCisKK0FzIG9mIHZlcnNpb24gMi41LjAgdGhlIG91dHB1dCBzZWxlY3RvcnMgYXJlOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIE9VVFBVVF9OT05FCitUaGlzIGlzIGVzc2VudGlhbGx5IGEgbnVsbCBvdXRwdXQuICBGb3IgQG9wdGlvbnsta30gb3V0cHV0IGl0IHdpbGwKK3NpbXBseSBhZGQgYSBsaW5lIHRoYXQgcmVhZHMgYGBPVVRQVVRfTk9ORT0nJyB0byB0aGUgb3V0cHV0LiBGb3IKK0BvcHRpb257LW99IGl0IHdpbGwgY2F1c2UgYW4gZW1wdHkgYGBjb2x1bW4nJyB0byBiZSBpbmNsdWRlZC4gRm9yCitAb3B0aW9uey1PfSBvdXRwdXQgaXQgd2lsbCBjYXVzZSBleHRyYSBzcGFjZXMgdG8gc2VwYXJhdGUgYGByZWFsJycgb3V0cHV0LgorQGl0ZW0gU09DS0VUX1RZUEUKK1RoaXMgd2lsbCBjYXVzZSB0aGUgc29ja2V0IHR5cGUgKGVnIFNPQ0tfU1RSRUFNLCBTT0NLX0RHUkFNKSBmb3IgdGhlCitkYXRhIGNvbm5lY3Rpb24gdG8gYmUgb3V0cHV0LgorQGl0ZW0gUFJPVE9DT0wKK1RoaXMgd2lsbCBjYXVzZSB0aGUgcHJvdG9jb2wgdXNlZCBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiB0byBiZSBkaXNwbGF5ZWQuCitAaXRlbSBESVJFQ1RJT04KK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBkYXRhIGZsb3cgZGlyZWN0aW9uIHJlbGF0aXZlIHRvIHRoZSBuZXRwZXJmCitwcm9jZXNzLiBVbml0czogU2VuZCBvciBSZWN2IGZvciBhIHVuaWRpcmVjdGlvbmFsIGJ1bGstdHJhbnNmZXIgdGVzdCwKK29yIFNlbmR8UmVjdiBmb3IgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QuCitAaXRlbSBFTEFQU0VEX1RJTUUKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBlbGFwc2VkIHRpbWUgaW4gc2Vjb25kcyBmb3IgdGhlIHRlc3QuCitAaXRlbSBUSFJPVUdIUFVUCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgdGhyb3VnaHB1dCBmb3IgdGhlIHRlc3QuIFVuaXRzOiBBcyByZXF1ZXN0ZWQgdmlhCit0aGUgZ2xvYmFsIEBvcHRpb257LWZ9IG9wdGlvbiBhbmQgZGlzcGxheWVkIGJ5IHRoZSBUSFJPVUdIUFVUX1VOSVRTCitvdXRwdXQgc2VsZWN0b3IuCitAaXRlbSBUSFJPVUdIUFVUX1VOSVRTCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgdW5pdHMgZm9yIHdoYXQgaXMgZGlzcGxheWVkIGJ5IHRoZQorQGNvZGV7VEhST1VHSFBVVH0gb3V0cHV0IHNlbGVjdG9yLgorQGl0ZW0gTFNTX1NJWkVfUkVRCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbG9jYWwgKG5ldHBlcmYpIHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIChha2EKK1NPX1NOREJVRikgcmVxdWVzdGVkIHZpYSB0aGUgY29tbWFuZCBsaW5lLiBVbml0czogQnl0ZXMuCitAaXRlbSBMU1NfU0laRQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGxvY2FsIChuZXRwZXJmKSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZQorKFNPX1NOREJVRikgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGRhdGEgY29ubmVjdGlvbiBzb2NrZXQgd2FzIGNyZWF0ZWQuCitQZWN1bGlhcml0aWVzIG9mIGRpZmZlcmVudCBuZXR3b3JraW5nIHN0YWNrcyBtYXkgbGVhZCB0byB0aGlzCitkaWZmZXJpbmcgZnJvbSB0aGUgc2l6ZSByZXF1ZXN0ZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIExTU19TSVpFX0VORAorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGxvY2FsIChuZXRwZXJmKSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZQorKFNPX1NOREJVRikgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IGlzIGNsb3NlZC4KK1BlY3VsaWFyaXRpZXMgb2YgZGlmZmVyZW50IG5ldHdvcmtpbmcgc3RhY2tzIG1heSBsZWFkIHRoaXMgdG8gZGlmZmVyCitmcm9tIHRoZSBzaXplIHJlcXVlc3RlZCB2aWEgdGhlIGNvbW1hbmQgbGluZSBhbmQvb3IgdGhlIHNpemUKK2ltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IHdhcyBjcmVhdGVkLiBVbml0czogQnl0ZXMuCitAaXRlbSBMU1JfU0laRV9SRVEKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBsb2NhbCAobmV0cGVyZikgcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUgKGFrYQorU09fUkNWQlVGKSByZXF1ZXN0ZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIExTUl9TSVpFCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbG9jYWwgKG5ldHBlcmYpIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplCisoU09fUkNWQlVGKSBpbW1lZGlhdGVseSBhZnRlciB0aGUgZGF0YSBjb25uZWN0aW9uIHNvY2tldCB3YXMgY3JlYXRlZC4KK1BlY3VsaWFyaXRpZXMgb2YgZGlmZmVyZW50IG5ldHdvcmtpbmcgc3RhY2tzIG1heSBsZWFkIHRvIHRoaXMKK2RpZmZlcmluZyBmcm9tIHRoZSBzaXplIHJlcXVlc3RlZCB2aWEgdGhlIGNvbW1hbmQgbGluZS4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gTFNSX1NJWkVfRU5ECitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbG9jYWwgKG5ldHBlcmYpIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplCisoU09fUkNWQlVGKSBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRhdGEgY29ubmVjdGlvbiBzb2NrZXQgaXMgY2xvc2VkLgorUGVjdWxpYXJpdGllcyBvZiBkaWZmZXJlbnQgbmV0d29ya2luZyBzdGFja3MgbWF5IGxlYWQgdGhpcyB0byBkaWZmZXIKK2Zyb20gdGhlIHNpemUgcmVxdWVzdGVkIHZpYSB0aGUgY29tbWFuZCBsaW5lIGFuZC9vciB0aGUgc2l6ZQoraW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGRhdGEgY29ubmVjdGlvbiBzb2NrZXQgd2FzIGNyZWF0ZWQuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIFJTU19TSVpFX1JFUQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIHJlbW90ZSAobmV0c2VydmVyKSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZSAoYWthCitTT19TTkRCVUYpIHJlcXVlc3RlZCB2aWEgdGhlIGNvbW1hbmQgbGluZS4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gUlNTX1NJWkUKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSByZW1vdGUgKG5ldHNlcnZlcikgc2VuZCBzb2NrZXQgYnVmZmVyIHNpemUKKyhTT19TTkRCVUYpIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IHdhcyBjcmVhdGVkLgorUGVjdWxpYXJpdGllcyBvZiBkaWZmZXJlbnQgbmV0d29ya2luZyBzdGFja3MgbWF5IGxlYWQgdG8gdGhpcworZGlmZmVyaW5nIGZyb20gdGhlIHNpemUgcmVxdWVzdGVkIHZpYSB0aGUgY29tbWFuZCBsaW5lLiBVbml0czogQnl0ZXMuCitAaXRlbSBSU1NfU0laRV9FTkQKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSByZW1vdGUgKG5ldHNlcnZlcikgc2VuZCBzb2NrZXQgYnVmZmVyIHNpemUKKyhTT19TTkRCVUYpIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZGF0YSBjb25uZWN0aW9uIHNvY2tldCBpcyBjbG9zZWQuCitQZWN1bGlhcml0aWVzIG9mIGRpZmZlcmVudCBuZXR3b3JraW5nIHN0YWNrcyBtYXkgbGVhZCB0aGlzIHRvIGRpZmZlcgorZnJvbSB0aGUgc2l6ZSByZXF1ZXN0ZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUgYW5kL29yIHRoZSBzaXplCitpbW1lZGlhdGVseSBhZnRlciB0aGUgZGF0YSBjb25uZWN0aW9uIHNvY2tldCB3YXMgY3JlYXRlZC4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gUlNSX1NJWkVfUkVRCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgcmVtb3RlIChuZXRzZXJ2ZXIpIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplIChha2EKK1NPX1JDVkJVRikgcmVxdWVzdGVkIHZpYSB0aGUgY29tbWFuZCBsaW5lLiBVbml0czogQnl0ZXMuCitAaXRlbSBSU1JfU0laRQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIHJlbW90ZSAobmV0c2VydmVyKSByZWNlaXZlIHNvY2tldCBidWZmZXIgc2l6ZQorKFNPX1JDVkJVRikgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGRhdGEgY29ubmVjdGlvbiBzb2NrZXQgd2FzIGNyZWF0ZWQuCitQZWN1bGlhcml0aWVzIG9mIGRpZmZlcmVudCBuZXR3b3JraW5nIHN0YWNrcyBtYXkgbGVhZCB0byB0aGlzCitkaWZmZXJpbmcgZnJvbSB0aGUgc2l6ZSByZXF1ZXN0ZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIFJTUl9TSVpFX0VORAorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIHJlbW90ZSAobmV0c2VydmVyKSByZWNlaXZlIHNvY2tldCBidWZmZXIgc2l6ZQorKFNPX1JDVkJVRikgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IGlzIGNsb3NlZC4KK1BlY3VsaWFyaXRpZXMgb2YgZGlmZmVyZW50IG5ldHdvcmtpbmcgc3RhY2tzIG1heSBsZWFkIHRoaXMgdG8gZGlmZmVyCitmcm9tIHRoZSBzaXplIHJlcXVlc3RlZCB2aWEgdGhlIGNvbW1hbmQgbGluZSBhbmQvb3IgdGhlIHNpemUKK2ltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IHdhcyBjcmVhdGVkLiBVbml0czogQnl0ZXMuCitAaXRlbSBMT0NBTF9TRU5EX1NJWkUKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBzaXplIG9mIHRoZSBidWZmZXJzIG5ldHBlcmYgcGFzc2VkIGluIGFueQorYGBzZW5kJycgY2FsbHMgaXQgbWFkZSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIGZvciBhCitub24tcmVxdWVzdC9yZXNwb25zZSB0ZXN0LiBVbml0czogQnl0ZXMuCitAaXRlbSBMT0NBTF9SRUNWX1NJWkUKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBzaXplIG9mIHRoZSBidWZmZXJzIG5ldHBlcmYgcGFzc2VkIGluIGFueQorYGByZWNlaXZlJycgY2FsbHMgaXQgbWFkZSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIGZvciBhCitub24tcmVxdWVzdC9yZXNwb25zZSB0ZXN0LiBVbml0czogQnl0ZXMuCitAaXRlbSBSRU1PVEVfU0VORF9TSVpFCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVycyBuZXRzZXJ2ZXIgcGFzc2VkIGluIGFueQorYGBzZW5kJycgY2FsbHMgaXQgbWFkZSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIGZvciBhCitub24tcmVxdWVzdC9yZXNwb25zZSB0ZXN0LiBVbml0czogQnl0ZXMuCitAaXRlbSBSRU1PVEVfUkVDVl9TSVpFCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVycyBuZXRzZXJ2ZXIgcGFzc2VkIGluIGFueQorYGByZWNlaXZlJycgY2FsbHMgaXQgbWFkZSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIGZvciBhCitub24tcmVxdWVzdC9yZXNwb25zZSB0ZXN0LiBVbml0czogQnl0ZXMuCitAaXRlbSBSRVFVRVNUX1NJWkUKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0cyBuZXRwZXJmIHNlbnQgaW4gYQorcmVxdWVzdC1yZXNwb25zZSB0ZXN0LiBVbml0czogQnl0ZXMuCitAaXRlbSBSRVNQT05TRV9TSVpFCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgc2l6ZSBvZiB0aGUgcmVzcG9uc2VzIG5ldHNlcnZlciBzZW50IGluIGEKK3JlcXVlc3QtcmVzcG9uc2UgdGVzdC4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gTE9DQUxfQ1BVX1VUSUwKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBvdmVyYWxsIENQVSB1dGlsaXphdGlvbiBkdXJpbmcgdGhlIHRlc3QgYXMKK21lYXN1cmVkIGJ5IG5ldHBlcmYuIFVuaXRzOiAwIHRvIDEwMCBwZXJjZW50LgorQGl0ZW0gTE9DQUxfQ1BVX1BFUkNFTlRfVVNFUgorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIENQVSBmcmFjdGlvbiBzcGVudCBpbiB1c2VyIG1vZGUgZHVyaW5nIHRoZSB0ZXN0CithcyBtZWFzdXJlZCBieSBuZXRwZXJmLiBPbmx5IHN1cHBvcnRlZCBieSBuZXRjcHVfcHJvY3N0YXQuIFVuaXRzOiAwIHRvCisxMDAgcGVyY2VudC4KK0BpdGVtIExPQ0FMX0NQVV9QRVJDRU5UX1NZU1RFTQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIENQVSBmcmFjdGlvbiBzcGVudCBpbiBzeXN0ZW0gbW9kZSBkdXJpbmcgdGhlIHRlc3QKK2FzIG1lYXN1cmVkIGJ5IG5ldHBlcmYuIE9ubHkgc3VwcG9ydGVkIGJ5IG5ldGNwdV9wcm9jc3RhdC4gVW5pdHM6IDAgdG8KKzEwMCBwZXJjZW50LgorQGl0ZW0gTE9DQUxfQ1BVX1BFUkNFTlRfSU9XQUlUCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgZnJhY3Rpb24gb2YgdGltZSB3YWl0aW5nIGZvciBJL08gdG8gY29tcGxldGUKK2R1cmluZyB0aGUgdGVzdCBhcyBtZWFzdXJlZCBieSBuZXRwZXJmLiBPbmx5IHN1cHBvcnRlZCBieQorbmV0Y3B1X3Byb2NzdGF0LiBVbml0czogMCB0byAxMDAgcGVyY2VudC4KK0BpdGVtIExPQ0FMX0NQVV9QRVJDRU5UX0lSUQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGZyYWN0aW9uIG9mIHRpbWUgc2VydmljaW5nIGludGVycnVwdHMgZHVyaW5nIHRoZQordGVzdCBhcyBtZWFzdXJlZCBieSBuZXRwZXJmLiBPbmx5IHN1cHBvcnRlZCBieSBuZXRjcHVfcHJvY3N0YXQuIFVuaXRzOgorMCB0byAxMDAgcGVyY2VudC4KK0BpdGVtIExPQ0FMX0NQVV9QRVJDRU5UX1NXSU5UUgorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGZyYWN0aW9uIG9mIHRpbWUgc2VydmljaW5nIHNvZnRpcnFzIGR1cmluZyB0aGUKK3Rlc3QgYXMgbWVhc3VyZWQgYnkgbmV0cGVyZi4gT25seSBzdXBwb3J0ZWQgYnkgbmV0Y3B1X3Byb2NzdGF0LiBVbml0czoKKzAgdG8gMTAwIHBlcmNlbnQuCitAaXRlbSBMT0NBTF9DUFVfTUVUSE9ECitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbWV0aG9kIHVzZWQgYnkgbmV0cGVyZiB0byBtZWFzdXJlIENQVQordXRpbGl6YXRpb24uIFVuaXRzOiBzaW5nbGUgY2hhcmFjdGVyIGRlbm90aW5nIG1ldGhvZC4KK0BpdGVtIExPQ0FMX1NECitUaGlzIHdpbGwgZGlzcGxheSB0aGUgc2VydmljZSBkZW1hbmQsIG9yIHVuaXRzIG9mIENQVSBjb25zdW1lZCBwZXIKK3VuaXQgb2Ygd29yaywgYXMgbWVhc3VyZWQgYnkgbmV0cGVyZi4gVW5pdHM6IG1pY3Jvc2Vjb25kcyBvZiBDUFUKK2NvbnN1bWVkIHBlciBlaXRoZXIgS0IgKEs9PTEwMjQpIG9mIGRhdGEgdHJhbnNmZXJyZWQgb3IgcmVxdWVzdC9yZXNwb25zZQordHJhbnNhY3Rpb24uIAorQGl0ZW0gUkVNT1RFX0NQVV9VVElMCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgb3ZlcmFsbCBDUFUgdXRpbGl6YXRpb24gZHVyaW5nIHRoZSB0ZXN0IGFzCittZWFzdXJlZCBieSBuZXRzZXJ2ZXIuIFVuaXRzIDAgdG8gMTAwIHBlcmNlbnQuCitAaXRlbSBSRU1PVEVfQ1BVX1BFUkNFTlRfVVNFUgorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIENQVSBmcmFjdGlvbiBzcGVudCBpbiB1c2VyIG1vZGUgZHVyaW5nIHRoZSB0ZXN0CithcyBtZWFzdXJlZCBieSBuZXRzZXJ2ZXIuIE9ubHkgc3VwcG9ydGVkIGJ5IG5ldGNwdV9wcm9jc3RhdC4gVW5pdHM6IDAgdG8KKzEwMCBwZXJjZW50LgorQGl0ZW0gUkVNT1RFX0NQVV9QRVJDRU5UX1NZU1RFTQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIENQVSBmcmFjdGlvbiBzcGVudCBpbiBzeXN0ZW0gbW9kZSBkdXJpbmcgdGhlIHRlc3QKK2FzIG1lYXN1cmVkIGJ5IG5ldHNlcnZlci4gT25seSBzdXBwb3J0ZWQgYnkgbmV0Y3B1X3Byb2NzdGF0LiBVbml0czogMCB0bworMTAwIHBlcmNlbnQuCitAaXRlbSBSRU1PVEVfQ1BVX1BFUkNFTlRfSU9XQUlUCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgZnJhY3Rpb24gb2YgdGltZSB3YWl0aW5nIGZvciBJL08gdG8gY29tcGxldGUKK2R1cmluZyB0aGUgdGVzdCBhcyBtZWFzdXJlZCBieSBuZXRzZXJ2ZXIuIE9ubHkgc3VwcG9ydGVkIGJ5CituZXRjcHVfcHJvY3N0YXQuIFVuaXRzOiAwIHRvIDEwMCBwZXJjZW50LgorQGl0ZW0gUkVNT1RFX0NQVV9QRVJDRU5UX0lSUQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGZyYWN0aW9uIG9mIHRpbWUgc2VydmljaW5nIGludGVycnVwdHMgZHVyaW5nIHRoZQordGVzdCBhcyBtZWFzdXJlZCBieSBuZXRzZXJ2ZXIuIE9ubHkgc3VwcG9ydGVkIGJ5IG5ldGNwdV9wcm9jc3RhdC4gVW5pdHM6CiswIHRvIDEwMCBwZXJjZW50LgorQGl0ZW0gUkVNT1RFX0NQVV9QRVJDRU5UX1NXSU5UUgorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGZyYWN0aW9uIG9mIHRpbWUgc2VydmljaW5nIHNvZnRpcnFzIGR1cmluZyB0aGUKK3Rlc3QgYXMgbWVhc3VyZWQgYnkgbmV0c2VydmVyLiBPbmx5IHN1cHBvcnRlZCBieSBuZXRjcHVfcHJvY3N0YXQuIFVuaXRzOgorMCB0byAxMDAgcGVyY2VudC4KK0BpdGVtIFJFTU9URV9DUFVfTUVUSE9ECitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbWV0aG9kIHVzZWQgYnkgbmV0c2VydmVyIHRvIG1lYXN1cmUgQ1BVCit1dGlsaXphdGlvbi4gVW5pdHM6IHNpbmdsZSBjaGFyYWN0ZXIgZGVub3RpbmcgbWV0aG9kLgorQGl0ZW0gUkVNT1RFX1NECitUaGlzIHdpbGwgZGlzcGxheSB0aGUgc2VydmljZSBkZW1hbmQsIG9yIHVuaXRzIG9mIENQVSBjb25zdW1lZCBwZXIKK3VuaXQgb2Ygd29yaywgYXMgbWVhc3VyZWQgYnkgbmV0c2VydmVyLiBVbml0czogbWljcm9zZWNvbmRzIG9mIENQVQorY29uc3VtZWQgcGVyIGVpdGhlciBLQiAoSz09MTAyNCkgb2YgZGF0YSB0cmFuc2ZlcnJlZCBvcgorcmVxdWVzdC9yZXNwb25zZSB0cmFuc2FjdGlvbi4KK0BpdGVtIFNEX1VOSVRTCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgdW5pdHMgZm9yIExPQ0FMX1NEIGFuZCBSRU1PVEVfU0QKK0BpdGVtIENPTkZJREVOQ0VfTEVWRUwKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBjb25maWRlbmNlIGxldmVsIHJlcXVlc3RlZCBieSB0aGUgdXNlciBlaXRoZXIKK2V4cGxpY2l0bHkgdmlhIHRoZSBnbG9iYWwgQG9wdGlvbnstSX0gb3B0aW9uLCBvciBpbXBsaWNpdGx5IHZpYSB0aGUKK2dsb2JhbCBAb3B0aW9uey1pfSBvcHRpb24uICBUaGUgdmFsdWUgd2lsbCBiZSBlaXRoZXIgOTUgb3IgOTkgaWYKK2NvbmZpZGVuY2UgaW50ZXJ2YWxzIGhhdmUgYmVlbiByZXF1ZXN0ZWQgb3IgMCBpZiB0aGV5IHdlcmUgbm90LiBVbml0czoKK1BlcmNlbnQKK0BpdGVtIENPTkZJREVOQ0VfSU5URVJWQUwKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSB3aWR0aCBvZiB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCByZXF1ZXN0ZWQKK2VpdGhlciBleHBsaWNpdGx5IHZpYSB0aGUgZ2xvYmFsIEBvcHRpb257LUl9IG9wdGlvbiBvciBpbXBsaWNpdGx5IHZpYQordGhlIGdsb2JhbCBAb3B0aW9uey1pfSBvcHRpb24uICBVbml0czogV2lkdGggaW4gcGVyY2VudCBvZiBtZWFuIHZhbHVlCitjb21wdXRlZC4gQSB2YWx1ZSBvZiAtMS4wIG1lYW5zIHRoYXQgY29uZmlkZW5jZSBpbnRlcnZhbHMgd2VyZSBub3QgcmVxdWVzdGVkLgorQGl0ZW0gQ09ORklERU5DRV9JVEVSQVRJT04KK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSBudW1iZXIgb2YgdGVzdCBpdGVyYXRpb25zIG5ldHBlcmYgdW5kZXJ0b29rLAorcGVyaGFwcyB3aGlsZSBhdHRlbXB0aW5nIHRvIGFjaGlldmUgdGhlIHJlcXVlc3RlZCBjb25maWRlbmNlIGludGVydmFsCithbmQgbGV2ZWwuIElmIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIHdlcmUgcmVxdWVzdGVkIHZpYSB0aGUgY29tbWFuZCBsaW5lCit0aGVuIHRoZSB2YWx1ZSB3aWxsIGJlIGJldHdlZW4gMyBhbmQgMzAuICBJZiBjb25maWRlbmNlIGludGVydmFscyB3ZXJlCitub3QgcmVxdWVzdGVkIHRoZSB2YWx1ZSB3aWxsIGJlIDEuICBVbml0czogSXRlcmF0aW9ucworQGl0ZW0gVEhST1VHSFBVVF9DT05GSUQKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSB3aWR0aCBvZiB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBhY3R1YWxseQorYWNoaWV2ZWQgZm9yIEBjb2Rle1RIUk9VR0hQVVR9IGR1cmluZyB0aGUgdGVzdC4gIFVuaXRzOiBXaWR0aCBvZgoraW50ZXJ2YWwgYXMgcGVyY2VudGFnZSBvZiByZXBvcnRlZCB0aHJvdWdocHV0IHZhbHVlLgorQGl0ZW0gTE9DQUxfQ1BVX0NPTkZJRAorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIHdpZHRoIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsIGFjdHVhbGx5CithY2hpZXZlZCBmb3Igb3ZlcmFsbCBDUFUgdXRpbGl6YXRpb24gb24gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHBlcmYKKyhAY29kZXtMT0NBTF9DUFVfVVRJTH0pIGR1cmluZyB0aGUgdGVzdCwgaWYgQ1BVIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50Cit3YXMgZW5hYmxlZC4gIFVuaXRzOiBXaWR0aCBvZiBpbnRlcnZhbCBhcyBwZXJjZW50YWdlIG9mIHJlcG9ydGVkIENQVQordXRpbGl6YXRpb24uCitAaXRlbSBSRU1PVEVfQ1BVX0NPTkZJRAorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIHdpZHRoIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsIGFjdHVhbGx5CithY2hpZXZlZCBmb3Igb3ZlcmFsbCBDUFUgdXRpbGl6YXRpb24gb24gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHNlcnZlcgorKEBjb2Rle1JFTU9URV9DUFVfVVRJTH0pIGR1cmluZyB0aGUgdGVzdCwgaWYgQ1BVIHV0aWxpemF0aW9uCittZWFzdXJlbWVudCB3YXMgZW5hYmxlZC4gVW5pdHM6IFdpZHRoIG9mIGludGVydmFsIGFzIHBlcmNlbnRhZ2Ugb2YKK3JlcG9ydGVkIENQVSB1dGlsaXphdGlvbi4KK0BpdGVtIFRSQU5TQUNUSU9OX1JBVEUKK1RoaXMgd2lsbCBkaXNwbGF5IHRoZSB0cmFuc2FjdGlvbiByYXRlIGluIHRyYW5zYWN0aW9ucyBwZXIgc2Vjb25kIGZvcgorYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QgZXZlbiBpZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGEgdGhyb3VnaHB1dCBpbgordW5pdHMgb2YgYml0cyBvciBieXRlcyBwZXIgc2Vjb25kIHZpYSB0aGUgZ2xvYmFsIEBvcHRpb257LWZ9CitvcHRpb24uIEl0IGlzIHVuZGVmaW5lZCBmb3IgYSBub24tcmVxdWVzdC9yZXNwb25zZSB0ZXN0LiBVbml0czoKK1RyYW5zYWN0aW9ucyBwZXIgc2Vjb25kLgorQGl0ZW0gUlRfTEFURU5DWQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGF2ZXJhZ2Ugcm91bmQtdHJpcCBsYXRlbmN5IGZvciBhCityZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIGFjY291bnRpbmcgZm9yIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgaW4gZmxpZ2h0CithdCBvbmUgdGltZS4gSXQgaXMgdW5kZWZpbmVkIGZvciBhIG5vbi1yZXF1ZXN0L3Jlc3BvbnNlIHRlc3QuIFVuaXRzOgorTWljcm9zZWNvbmRzIHBlciB0cmFuc2FjdGlvbgorQGl0ZW0gQlVSU1RfU0laRQorVGhpcyB3aWxsIGRpc3BsYXkgdGhlIGBgYnVyc3Qgc2l6ZScnIG9yIGFkZGVkIHRyYW5zYWN0aW9ucyBpbiBmbGlnaHQKK2luIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0IGFzIHJlcXVlc3RlZCB2aWEgYSB0ZXN0LXNwZWNpZmljCitAb3B0aW9uey1ifSBvcHRpb24uICBUaGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBpbiBmbGlnaHQgYXQgb25lIHRpbWUKK3dpbGwgYmUgb25lIGdyZWF0ZXIgdGhhbiB0aGlzIHZhbHVlLiAgSXQgaXMgdW5kZWZpbmVkIGZvciBhCitub24tcmVxdWVzdC9yZXNwb25zZSB0ZXN0LiBVbml0czogYWRkZWQgVHJhbnNhY3Rpb25zIGluIGZsaWdodC4KK0BpdGVtIExPQ0FMX1RSQU5TUE9SVF9SRVRSQU5TCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbnVtYmVyIG9mIHJldHJhbnNtaXNzaW9ucyBleHBlcmllbmNlZCBvbiB0aGUKK2RhdGEgY29ubmVjdGlvbiBkdXJpbmcgdGhlIHRlc3QgYXMgZGV0ZXJtaW5lZCBieSBuZXRwZXJmLiAgQSB2YWx1ZSBvZgorLTEgbWVhbnMgdGhlIGF0dGVtcHQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcmV0cmFuc21pc3Npb25zIGZhaWxlZAorb3IgdGhlIGNvbmNlcHQgd2FzIG5vdCB2YWxpZCBmb3IgdGhlIGdpdmVuIHByb3RvY29sIG9yIHRoZSBtZWNoYW5pc20KK2lzIG5vdCBrbm93biBmb3IgdGhlIHBsYXRmb3JtLiBBIHZhbHVlIG9mIC0yIG1lYW5zIGl0IHdhcyBub3QKK2F0dGVtcHRlZC4gQXMgb2YgdmVyc2lvbiAyLjUuMCB0aGUgbWVhbmluZyBvZiB2YWx1ZXMgYXJlIGluIGZsdXggYW5kCitzdWJqZWN0IHRvIGNoYW5nZS4gIFVuaXRzOiBudW1iZXIgb2YgcmV0cmFuc21pc3Npb25zLgorQGl0ZW0gUkVNT1RFX1RSQU5TUE9SVF9SRVRSQU5TCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgbnVtYmVyIG9mIHJldHJhbnNtaXNzaW9ucyBleHBlcmllbmNlZCBvbiB0aGUKK2RhdGEgY29ubmVjdGlvbiBkdXJpbmcgdGhlIHRlc3QgYXMgZGV0ZXJtaW5lZCBieSBuZXRzZXJ2ZXIuICBBIHZhbHVlCitvZiAtMSBtZWFucyB0aGUgYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbnMKK2ZhaWxlZCBvciB0aGUgY29uY2VwdCB3YXMgbm90IHZhbGlkIGZvciB0aGUgZ2l2ZW4gcHJvdG9jb2wgb3IgdGhlCittZWNoYW5pc20gaXMgbm90IGtub3duIGZvciB0aGUgcGxhdGZvcm0uIEEgdmFsdWUgb2YgLTIgbWVhbnMgaXQgd2FzCitub3QgYXR0ZW1wdGVkLiBBcyBvZiB2ZXJzaW9uIDIuNS4wIHRoZSBtZWFuaW5nIG9mIHZhbHVlcyBhcmUgaW4gZmx1eAorYW5kIHN1YmplY3QgdG8gY2hhbmdlLiAgVW5pdHM6IG51bWJlciBvZiByZXRyYW5zbWlzc2lvbnMuCitAaXRlbSBUUkFOU1BPUlRfTVNTCitUaGlzIHdpbGwgZGlzcGxheSB0aGUgTWF4aW11bSBTZWdtZW50IFNpemUgKGFrYSBNU1MpIG9yIGl0cyBlcXVpdmFsZW50Citmb3IgdGhlIHByb3RvY29sIGJlaW5nIHVzZWQgZHVyaW5nIHRoZSB0ZXN0LiAgQSB2YWx1ZSBvZiAtMSBtZWFucworZWl0aGVyIHRoZSBjb25jZXB0IG9mIGFuIE1TUyBkaWQgbm90IGFwcGx5IHRvIHRoZSBwcm90b2NvbCBiZWluZyB1c2VkLAorb3IgdGhlcmUgd2FzIGFuIGVycm9yIGluIHJldHJpZXZpbmcgaXQuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIExPQ0FMX1NFTkRfVEhST1VHSFBVVAorVGhlIHRocm91Z2hwdXQgYXMgbWVhc3VyZWQgYnkgbmV0cGVyZiBmb3IgdGhlIHN1Y2Nlc3NmdWwgYGBzZW5kJycKK2NhbGxzIGl0IG1hZGUgb24gdGhlIGRhdGEgY29ubmVjdGlvbi4gVW5pdHM6IGFzIHJlcXVlc3RlZCB2aWEgdGhlCitnbG9iYWwgQG9wdGlvbnstZn0gb3B0aW9uIGFuZCBkaXNwbGF5ZWQgdmlhIHRoZSBAY29kZXtUSFJPVUdIUFVUX1VOSVRTfQorb3V0cHV0IHNlbGVjdG9yLgorQGl0ZW0gTE9DQUxfUkVDVl9USFJPVUdIUFVUCitUaGUgdGhyb3VnaHB1dCBhcyBtZWFzdXJlZCBieSBuZXRwZXJmIGZvciB0aGUgc3VjY2Vzc2Z1bCBgYHJlY2VpdmUnJworY2FsbHMgaXQgbWFkZSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uLiBVbml0czogYXMgcmVxdWVzdGVkIHZpYSB0aGUKK2dsb2JhbCBAb3B0aW9uey1mfSBvcHRpb24gYW5kIGRpc3BsYXllZCB2aWEgdGhlIEBjb2Rle1RIUk9VR0hQVVRfVU5JVFN9CitvdXRwdXQgc2VsZWN0b3IuCitAaXRlbSBSRU1PVEVfU0VORF9USFJPVUdIUFVUCitUaGUgdGhyb3VnaHB1dCBhcyBtZWFzdXJlZCBieSBuZXRzZXJ2ZXIgZm9yIHRoZSBzdWNjZXNzZnVsIGBgc2VuZCcnCitjYWxscyBpdCBtYWRlIG9uIHRoZSBkYXRhIGNvbm5lY3Rpb24uIFVuaXRzOiBhcyByZXF1ZXN0ZWQgdmlhIHRoZQorZ2xvYmFsIEBvcHRpb257LWZ9IG9wdGlvbiBhbmQgZGlzcGxheWVkIHZpYSB0aGUgQGNvZGV7VEhST1VHSFBVVF9VTklUU30KK291dHB1dCBzZWxlY3Rvci4KK0BpdGVtIFJFTU9URV9SRUNWX1RIUk9VR0hQVVQKK1RoZSB0aHJvdWdocHV0IGFzIG1lYXN1cmVkIGJ5IG5ldHNlcnZlciBmb3IgdGhlIHN1Y2Nlc3NmdWwgYGByZWNlaXZlJycKK2NhbGxzIGl0IG1hZGUgb24gdGhlIGRhdGEgY29ubmVjdGlvbi4gVW5pdHM6IGFzIHJlcXVlc3RlZCB2aWEgdGhlCitnbG9iYWwgQG9wdGlvbnstZn0gb3B0aW9uIGFuZCBkaXNwbGF5ZWQgdmlhIHRoZSBAY29kZXtUSFJPVUdIUFVUX1VOSVRTfQorb3V0cHV0IHNlbGVjdG9yLgorQGl0ZW0gTE9DQUxfQ1BVX0JJTkQKK1RoZSBDUFUgdG8gd2hpY2ggbmV0cGVyZiB3YXMgYm91bmQsIGlmIGF0IGFsbCwgZHVyaW5nIHRoZSB0ZXN0LiBBCit2YWx1ZSBvZiAtMSBtZWFucyB0aGF0IG5ldHBlcmYgd2FzIG5vdCBleHBsaWNpdGx5IGJvdW5kIHRvIGEgQ1BVCitkdXJpbmcgdGhlIHRlc3QuIFVuaXRzOiBDUFUgSUQKK0BpdGVtIExPQ0FMX0NQVV9DT1VOVAorVGhlIG51bWJlciBvZiBDUFVzIChjb3JlcywgdGhyZWFkcykgZGV0ZWN0ZWQgYnkgbmV0cGVyZi4gVW5pdHM6IENQVSBjb3VudC4KK0BpdGVtIExPQ0FMX0NQVV9QRUFLX1VUSUwKK1RoZSB1dGlsaXphdGlvbiBvZiB0aGUgQ1BVIG1vc3QgaGVhdmlseSB1dGlsaXplZCBkdXJpbmcgdGhlIHRlc3QsIGFzCittZWFzdXJlZCBieSBuZXRwZXJmLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNlZSBpZiBhbnkgb25lIENQVSBvZiBhCittdWx0aS1DUFUgc3lzdGVtIHdhcyBzYXR1cmF0ZWQgZXZlbiB0aG91Z2ggdGhlIG92ZXJhbGwgQ1BVIHV0aWxpemF0aW9uCithcyByZXBvcnRlZCBieSBAY29kZXtMT0NBTF9DUFVfVVRJTH0gd2FzIGxvdy4gVW5pdHM6IDAgdG8gMTAwJSAKK0BpdGVtIExPQ0FMX0NQVV9QRUFLX0lECitUaGUgaWQgb2YgdGhlIENQVSBtb3N0IGhlYXZpbHkgdXRpbGl6ZWQgZHVyaW5nIHRoZSB0ZXN0IGFzIGRldGVybWluZWQKK2J5IG5ldHBlcmYuIFVuaXRzOiBDUFUgSUQuCitAaXRlbSBMT0NBTF9DUFVfTU9ERUwKK01vZGVsIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvY2Vzc29yKHMpIHByZXNlbnQgb24gdGhlIHN5c3RlbSBydW5uaW5nCituZXRwZXJmLiBBc3N1bWVzIGFsbCBwcm9jZXNzb3JzIGluIHRoZSBzeXN0ZW0gKGFzIHBlcmNlaXZlZCBieQorbmV0cGVyZikgb24gd2hpY2ggbmV0cGVyZiBpcyBydW5uaW5nIGFyZSB0aGUgc2FtZSBtb2RlbC4gVW5pdHM6IFRleHQKK0BpdGVtIExPQ0FMX0NQVV9GUkVRVUVOQ1kKK1RoZSBmcmVxdWVuY3kgb2YgdGhlIHByb2Nlc3NvcihzKSBvbiB0aGUgc3lzdGVtIHJ1bm5pbmcgbmV0cGVyZiwgYXQKK3RoZSB0aW1lIG5ldHBlcmYgbWFkZSB0aGUgY2FsbC4gIEFzc3VtZXMgdGhhdCBhbGwgcHJvY2Vzc29ycyBwcmVzZW50CitpbiB0aGUgc3lzdGVtIHJ1bm5pbmcgbmV0cGVyZiBhcmUgcnVubmluZyBhdCB0aGUgc2FtZQorZnJlcXVlbmN5LiBVbml0czogTUh6CitAaXRlbSBSRU1PVEVfQ1BVX0JJTkQKK1RoZSBDUFUgdG8gd2hpY2ggbmV0c2VydmVyIHdhcyBib3VuZCwgaWYgYXQgYWxsLCBkdXJpbmcgdGhlIHRlc3QuIEEKK3ZhbHVlIG9mIC0xIG1lYW5zIHRoYXQgbmV0cGVyZiB3YXMgbm90IGV4cGxpY2l0bHkgYm91bmQgdG8gYSBDUFUKK2R1cmluZyB0aGUgdGVzdC4gVW5pdHM6IENQVSBJRAorQGl0ZW0gUkVNT1RFX0NQVV9DT1VOVAorVGhlIG51bWJlciBvZiBDUFVzIChjb3JlcywgdGhyZWFkcykgZGV0ZWN0ZWQgYnkgbmV0c2VydmVyLiBVbml0czogQ1BVCitjb3VudC4KK0BpdGVtIFJFTU9URV9DUFVfUEVBS19VVElMCitUaGUgdXRpbGl6YXRpb24gb2YgdGhlIENQVSBtb3N0IGhlYXZpbHkgdXRpbGl6ZWQgZHVyaW5nIHRoZSB0ZXN0LCBhcworbWVhc3VyZWQgYnkgbmV0c2VydmVyLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNlZSBpZiBhbnkgb25lIENQVSBvZiBhCittdWx0aS1DUFUgc3lzdGVtIHdhcyBzYXR1cmF0ZWQgZXZlbiB0aG91Z2ggdGhlIG92ZXJhbGwgQ1BVIHV0aWxpemF0aW9uCithcyByZXBvcnRlZCBieSBAY29kZXtSRU1PVEVfQ1BVX1VUSUx9IHdhcyBsb3cuIFVuaXRzOiAwIHRvIDEwMCUKK0BpdGVtIFJFTU9URV9DUFVfUEVBS19JRAorVGhlIGlkIG9mIHRoZSBDUFUgbW9zdCBoZWF2aWx5IHV0aWxpemVkIGR1cmluZyB0aGUgdGVzdCBhcyBkZXRlcm1pbmVkCitieSBuZXRzZXJ2ZXIuIFVuaXRzOiBDUFUgSUQuCitAaXRlbSBSRU1PVEVfQ1BVX01PREVMCitNb2RlbCBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2Nlc3NvcihzKSBwcmVzZW50IG9uIHRoZSBzeXN0ZW0gcnVubmluZworbmV0c2VydmVyLiBBc3N1bWVzIGFsbCBwcm9jZXNzb3JzIGluIHRoZSBzeXN0ZW0gKGFzIHBlcmNlaXZlZCBieQorbmV0c2VydmVyKSBvbiB3aGljaCBuZXRzZXJ2ZXIgaXMgcnVubmluZyBhcmUgdGhlIHNhbWUgbW9kZWwuIFVuaXRzOgorVGV4dAorQGl0ZW0gUkVNT1RFX0NQVV9GUkVRVUVOQ1kKK1RoZSBmcmVxdWVuY3kgb2YgdGhlIHByb2Nlc3NvcihzKSBvbiB0aGUgc3lzdGVtIHJ1bm5pbmcgbmV0c2VydmVyLCBhdAordGhlIHRpbWUgbmV0c2VydmVyIG1hZGUgdGhlIGNhbGwuICBBc3N1bWVzIHRoYXQgYWxsIHByb2Nlc3NvcnMgcHJlc2VudAoraW4gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHNlcnZlciBhcmUgcnVubmluZyBhdCB0aGUgc2FtZQorZnJlcXVlbmN5LiBVbml0czogTUh6CitAaXRlbSBTT1VSQ0VfUE9SVAorVGhlIHBvcnQgSUQvc2VydmljZSBuYW1lIHRvIHdoaWNoIHRoZSBkYXRhIHNvY2tldCBjcmVhdGVkIGJ5IG5ldHBlcmYKK3dhcyBib3VuZC4gIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgZGF0YSBzb2NrZXQgd2FzIG5vdCBleHBsaWNpdGx5Citib3VuZCB0byBhIHBvcnQgbnVtYmVyLiBVbml0czogQVNDSUkgdGV4dC4KK0BpdGVtIFNPVVJDRV9BRERSCitUaGUgbmFtZS9hZGRyZXNzIHRvIHdoaWNoIHRoZSBkYXRhIHNvY2tldCBjcmVhdGVkIGJ5IG5ldHBlcmYgd2FzCitib3VuZC4gQSB2YWx1ZSBvZiAwLjAuMC4wIG1lYW5zIHRoZSBkYXRhIHNvY2tldCB3YXMgbm90IGV4cGxpY2l0bHkKK2JvdW5kIHRvIGFuIGFkZHJlc3MuIFVuaXRzOiBBU0NJSSB0ZXh0LgorQGl0ZW0gU09VUkNFX0ZBTUlMWQorVGhlIGFkZHJlc3MgZmFtaWx5IHRvIHdoaWNoIHRoZSBkYXRhIHNvY2tldCBjcmVhdGVkIGJ5IG5ldHBlcmYgd2FzCitib3VuZC4gIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgZGF0YSBzb2NrZXQgd2FzIG5vdCBleHBsaWNpdGx5IGJvdW5kIHRvCithIGdpdmVuIGFkZHJlc3MgZmFtaWx5LiBVbml0czogQVNDSUkgdGV4dC4KK0BpdGVtIERFU1RfUE9SVAorVGhlIHBvcnQgSUQgdG8gd2hpY2ggdGhlIGRhdGEgc29ja2V0IGNyZWF0ZWQgYnkgbmV0c2VydmVyIHdhcyBib3VuZC4gQQordmFsdWUgb2YgMCBtZWFucyB0aGUgZGF0YSBzb2NrZXQgd2FzIG5vdCBleHBsaWNpdGx5IGJvdW5kIHRvIGEgcG9ydAorbnVtYmVyLiAgVW5pdHM6IEFTQ0lJIHRleHQuCitAaXRlbSBERVNUX0FERFIKK1RoZSBuYW1lL2FkZHJlc3Mgb2YgdGhlIGRhdGEgc29ja2V0IGNyZWF0ZWQgYnkgbmV0c2VydmVyLiAgVW5pdHM6CitBU0NJSSB0ZXh0LgorQGl0ZW0gREVTVF9GQU1JTFkKK1RoZSBhZGRyZXNzIGZhbWlseSB0byB3aGljaCB0aGUgZGF0YSBzb2NrZXQgY3JlYXRlZCBieSBuZXRzZXJ2ZXIgd2FzCitib3VuZC4gQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZSBkYXRhIHNvY2tldCB3YXMgbm90IGV4cGxpY2l0bHkgYm91bmQgdG8KK2EgZ2l2ZW4gYWRkcmVzcyBmYW1pbHkuIFVuaXRzOiBBU0NJSSB0ZXh0LgorQGl0ZW0gTE9DQUxfU0VORF9DQUxMUworVGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGBgc2VuZCcnIGNhbGxzIG1hZGUgYnkgbmV0cGVyZiBhZ2FpbnN0IGl0cworZGF0YSBzb2NrZXQuIFVuaXRzOiBDYWxscy4KK0BpdGVtIExPQ0FMX1JFQ1ZfQ0FMTFMKK1RoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBgYHJlY2VpdmUnJyBjYWxscyBtYWRlIGJ5IG5ldHBlcmYgYWdhaW5zdCBpdHMKK2RhdGEgc29ja2V0LiBVbml0czogQ2FsbHMuCitAaXRlbSBMT0NBTF9CWVRFU19QRVJfUkVDVgorVGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIGJ5dGVzIHBlciBgYHJlY2VpdmUnJyBjYWxsIG1hZGUgYnkgbmV0cGVyZgorYWdhaW5zdCBpdHMgZGF0YSBzb2NrZXQuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIExPQ0FMX0JZVEVTX1BFUl9TRU5ECitUaGUgYXZlcmFnZSBudW1iZXIgb2YgYnl0ZXMgcGVyIGBgc2VuZCcnIGNhbGwgbWFkZSBieSBuZXRwZXJmIGFnYWluc3QKK2l0cyBkYXRhIHNvY2tldC4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gTE9DQUxfQllURVNfU0VOVAorVGhlIG51bWJlciBvZiBieXRlcyBzdWNjZXNzZnVsbHkgc2VudCBieSBuZXRwZXJmIHRocm91Z2ggaXRzIGRhdGEKK3NvY2tldC4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gTE9DQUxfQllURVNfUkVDVkQKK1RoZSBudW1iZXIgb2YgYnl0ZXMgc3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGJ5IG5ldHBlcmYgdGhyb3VnaCBpdHMgZGF0YQorc29ja2V0LiBVbml0czogQnl0ZXMuCitAaXRlbSBMT0NBTF9CWVRFU19YRkVSRAorVGhlIHN1bSBvZiBieXRlcyBzZW50IGFuZCByZWNlaXZlZCBieSBuZXRwZXJmIHRocm91Z2ggaXRzIGRhdGEKK3NvY2tldC4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gTE9DQUxfU0VORF9PRkZTRVQKK1RoZSBvZmZzZXQgZnJvbSB0aGUgYWxpZ25tZW50IG9mIHRoZSBidWZmZXJzIHBhc3NlZCBieSBuZXRwZXJmIGluIGl0cworYGBzZW5kJycgY2FsbHMuIFNwZWNpZmllZCB2aWEgdGhlIGdsb2JhbCBAb3B0aW9uey1vfSBvcHRpb24gYW5kCitkZWZhdWx0cyB0byAwLiBVbml0czogQnl0ZXMuCitAaXRlbSBMT0NBTF9SRUNWX09GRlNFVAorVGhlIG9mZnNldCBmcm9tIHRoZSBhbGlnbm1lbnQgb2YgdGhlIGJ1ZmZlcnMgcGFzc2VkIGJ5IG5ldHBlcmYgaW4gaXRzCitgYHJlY2VpdmUnJyBjYWxscy4gU3BlY2lmaWVkIHZpYSB0aGUgZ2xvYmFsIEBvcHRpb257LW99IG9wdGlvbiBhbmQKK2RlZmF1bHRzIHRvIDAuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIExPQ0FMX1NFTkRfQUxJR04KK1RoZSBhbGlnbm1lbnQgb2YgdGhlIGJ1ZmZlcnMgcGFzc2VkIGJ5IG5ldHBlcmYgaW4gaXRzIGBgc2VuZCcnIGNhbGxzCithcyBzcGVjaWZpZWQgdmlhIHRoZSBnbG9iYWwgQG9wdGlvbnstYX0gb3B0aW9uLiBEZWZhdWx0cyB0byA4LiBVbml0czoKK0J5dGVzLgorQGl0ZW0gTE9DQUxfUkVDVl9BTElHTgorVGhlIGFsaWdubWVudCBvZiB0aGUgYnVmZmVycyBwYXNzZWQgYnkgbmV0cGVyZiBpbiBpdHMgYGByZWNlaXZlJycKK2NhbGxzIGFzIHNwZWNpZmllZCB2aWEgdGhlIGdsb2JhbCBAb3B0aW9uey1hfSBvcHRpb24uIERlZmF1bHRzIHRvCis4LiBVbml0czogQnl0ZXMuCitAaXRlbSBMT0NBTF9TRU5EX1dJRFRICitUaGUgYGB3aWR0aCcnIG9mIHRoZSByaW5nIG9mIGJ1ZmZlcnMgdGhyb3VnaCB3aGljaCBuZXRwZXJmIGN5Y2xlcyBhcworaXQgbWFrZXMgaXRzIGBgc2VuZCcnIGNhbGxzLiAgRGVmYXVsdHMgdG8gb25lIG1vcmUgdGhhbiB0aGUgbG9jYWwgc2VuZAorc29ja2V0IGJ1ZmZlciBzaXplIGRpdmlkZWQgYnkgdGhlIHNlbmQgc2l6ZSBhcyBkZXRlcm1pbmVkIGF0IHRoZSB0aW1lCit0aGUgZGF0YSBzb2NrZXQgaXMgY3JlYXRlZC4gQ2FuIGJlIHVzZWQgdG8gbWFrZSBuZXRwZXJmIG1vcmUgcHJvY2Vzc29yCitkYXRhIGNhY2hlIHVuZnJpZW5kbHkuIFVuaXRzOiBudW1iZXIgb2YgYnVmZmVycy4KK0BpdGVtIExPQ0FMX1JFQ1ZfV0lEVEgKK1RoZSBgYHdpZHRoJycgb2YgdGhlIHJpbmcgb2YgYnVmZmVycyB0aHJvdWdoIHdoaWNoIG5ldHBlcmYgY3ljbGVzIGFzCitpdCBtYWtlcyBpdHMgYGByZWNlaXZlJycgY2FsbHMuICBEZWZhdWx0cyB0byBvbmUgbW9yZSB0aGFuIHRoZSBsb2NhbAorcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUgZGl2aWRlZCBieSB0aGUgcmVjZWl2ZSBzaXplIGFzIGRldGVybWluZWQKK2F0IHRoZSB0aW1lIHRoZSBkYXRhIHNvY2tldCBpcyBjcmVhdGVkLiBDYW4gYmUgdXNlZCB0byBtYWtlIG5ldHBlcmYKK21vcmUgcHJvY2Vzc29yIGRhdGEgY2FjaGUgdW5mcmllbmRseS4gVW5pdHM6IG51bWJlciBvZiBidWZmZXJzLgorQGl0ZW0gTE9DQUxfU0VORF9ESVJUWV9DT1VOVAorVGhlIG51bWJlciBvZiBieXRlcyB0byBgYGRpcnR5JycgKHdyaXRlIHRvKSBiZWZvcmUgbmV0cGVyZiBtYWtlcyBhCitgYHNlbmQnJyBjYWxsLiBTcGVjaWZpZWQgdmlhIHRoZSBnbG9iYWwgQG9wdGlvbnsta30gb3B0aW9uLCB3aGljaAorcmVxdWlyZXMgdGhhdCAtLWVuYWJsZS1kaXJ0eT15ZXMgd2FzIHNwZWNpZmllZCB3aXRoIHRoZSBjb25maWd1cmUKK2NvbW1hbmQgcHJpb3IgdG8gYnVpbGRpbmcgbmV0cGVyZi4gVW5pdHM6IEJ5dGVzLgorQGl0ZW0gTE9DQUxfUkVDVl9ESVJUWV9DT1VOVAorVGhlIG51bWJlciBvZiBieXRlcyB0byBgYGRpcnR5JycgKHdyaXRlIHRvKSBiZWZvcmUgbmV0cGVyZiBtYWtlcyBhCitgYHJlY3YnJyBjYWxsLiBTcGVjaWZpZWQgdmlhIHRoZSBnbG9iYWwgQG9wdGlvbnsta30gb3B0aW9uIHdoaWNoCityZXF1aXJlcyB0aGF0IC0tZW5hYmxlLWRpcnR5IHdhcyBzcGVjaWZpZWQgd2l0aCB0aGUgY29uZmlndXJlIGNvbW1hbmQKK3ByaW9yIHRvIGJ1aWxkaW5nIG5ldHBlcmYuIFVuaXRzOiBCeXRlcy4KK0BpdGVtIExPQ0FMX1JFQ1ZfQ0xFQU5fQ09VTlQKK1RoZSBudW1iZXIgb2YgYnl0ZXMgbmV0cGVyZiBzaG91bGQgcmVhZCBgYGNsZWFubHknJyBiZWZvcmUgbWFraW5nIGEKK2BgcmVjZWl2ZScnIGNhbGwuIFNwZWNpZmllZCB2aWEgdGhlIGdsb2JhbCBAb3B0aW9uey1rfSBvcHRpb24gd2hpY2gKK3JlcXVpcmVzIHRoYXQgLS1lbmFibGUtZGlydHkgd2FzIHNwZWNpZmllZCB3aXRoIGNvbmZpZ3VyZSBjb21tYW5kCitwcmlvciB0byBidWlsZGluZyBuZXRwZXJmLiAgQ2xlYW4gcmVhZHMgc3RhcnQgd2VyZSBkaXJ0eSB3cml0ZXMgZW5kZWQuCitVbml0czogQnl0ZXMuCitAaXRlbSBMT0NBTF9OT0RFTEFZCitJbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgc2V0dGluZyB0aGUgdGVzdCBwcm90b2NvbC1zcGVjaWZpYyBgYG5vCitkZWxheScnIChlZyBUQ1BfTk9ERUxBWSkgb3B0aW9uIG9uIHRoZSBkYXRhIHNvY2tldCB1c2VkIGJ5IG5ldHBlcmYgd2FzCityZXF1ZXN0ZWQgYnkgdGhlIHRlc3Qtc3BlY2lmaWMgQG9wdGlvbnstRH0gb3B0aW9uIGFuZAorc3VjY2Vzc2Z1bC4gVW5pdHM6IDAgbWVhbnMgbm8sIDEgbWVhbnMgeWVzLgorQGl0ZW0gTE9DQUxfQ09SSworSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IFRDUF9DT1JLIHdhcyBzZXQgb24gdGhlIGRhdGEgc29ja2V0IHVzZWQgYnkKK25ldHBlcmYgYXMgcmVxdWVzdGVkIHZpYSB0aGUgdGVzdC1zcGVjaWZpYyBAb3B0aW9uey1DfSBvcHRpb24uIDEgbWVhbnMKK3llcywgMCBtZWFucyBuby9ub3QgYXBwbGljYWJsZS4KK0BpdGVtIFJFTU9URV9TRU5EX0NBTExTCitAaXRlbSBSRU1PVEVfUkVDVl9DQUxMUworQGl0ZW0gUkVNT1RFX0JZVEVTX1BFUl9SRUNWCitAaXRlbSBSRU1PVEVfQllURVNfUEVSX1NFTkQKK0BpdGVtIFJFTU9URV9CWVRFU19TRU5UCitAaXRlbSBSRU1PVEVfQllURVNfUkVDVkQKK0BpdGVtIFJFTU9URV9CWVRFU19YRkVSRAorQGl0ZW0gUkVNT1RFX1NFTkRfT0ZGU0VUCitAaXRlbSBSRU1PVEVfUkVDVl9PRkZTRVQKK0BpdGVtIFJFTU9URV9TRU5EX0FMSUdOCitAaXRlbSBSRU1PVEVfUkVDVl9BTElHTgorQGl0ZW0gUkVNT1RFX1NFTkRfV0lEVEgKK0BpdGVtIFJFTU9URV9SRUNWX1dJRFRICitAaXRlbSBSRU1PVEVfU0VORF9ESVJUWV9DT1VOVAorQGl0ZW0gUkVNT1RFX1JFQ1ZfRElSVFlfQ09VTlQKK0BpdGVtIFJFTU9URV9SRUNWX0NMRUFOX0NPVU5UCitAaXRlbSBSRU1PVEVfTk9ERUxBWQorQGl0ZW0gUkVNT1RFX0NPUksKK1RoZXNlIGFyZSBhbGwgbGlrZSB0aGVpciBgYExPQ0FMXycnIGNvdW50ZXJwYXJ0cyBvbmx5IGZvciB0aGUKK25ldHNlcnZlciByYXRoZXIgdGhhbiBuZXRwZXJmLgorQGl0ZW0gTE9DQUxfU1lTTkFNRQorVGhlIG5hbWUgb2YgdGhlIE9TIChlZyBgYExpbnV4JycpIHJ1bm5pbmcgb24gdGhlIHN5c3RlbSBvbiB3aGljaAorbmV0cGVyZiB3YXMgcnVubmluZy4gVW5pdHM6IEFTQ0lJIFRleHQKK0BpdGVtIExPQ0FMX1NZU1RFTV9NT0RFTAorVGhlIG1vZGVsIG5hbWUgb2YgdGhlIHN5c3RlbSBvbiB3aGljaCBuZXRwZXJmIHdhcyBydW5uaW5nLiBVbml0czoKK0FTQ0lJIFRleHQuCitAaXRlbSBMT0NBTF9SRUxFQVNFCitUaGUgcmVsZWFzZSBuYW1lL251bWJlciBvZiB0aGUgT1MgcnVubmluZyBvbiB0aGUgc3lzdGVtIG9uIHdoaWNoCituZXRwZXJmICB3YXMgcnVubmluZy4gVW5pdHM6IEFTQ0lJIFRleHQKK0BpdGVtIExPQ0FMX1ZFUlNJT04KK1RoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgT1MgcnVubmluZyBvbiB0aGUgc3lzdGVtIG9uIHdoaWNoIG5ldHBlcmYKK3dhcyBydW5uaW5nLiBVbml0czogQVNDSUkgVGV4dAorQGl0ZW0gTE9DQUxfTUFDSElORQorVGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lIG9uIHdoaWNoIG5ldHBlcmYgd2FzCitydW5uaW5nLiBVbml0czogQVNDSUkgVGV4dC4KK0BpdGVtIFJFTU9URV9TWVNOQU1FCitAaXRlbSBSRU1PVEVfU1lTVEVNX01PREVMCitAaXRlbSBSRU1PVEVfUkVMRUFTRQorQGl0ZW0gUkVNT1RFX1ZFUlNJT04KK0BpdGVtIFJFTU9URV9NQUNISU5FCitUaGVzZSBhcmUgYWxsIGxpa2UgdGhlaXIgYGBMT0NBTF8nJyBjb3VudGVycGFydHMgb25seSBmb3IgdGhlCituZXRzZXJ2ZXIgcmF0aGVyIHRoYW4gbmV0cGVyZi4KK0BpdGVtIExPQ0FMX0lOVEVSRkFDRV9OQU1FCitUaGUgbmFtZSBvZiB0aGUgcHJvYmFibGUgZWdyZXNzIGludGVyZmFjZSB0aHJvdWdoIHdoaWNoIHRoZSBkYXRhCitjb25uZWN0aW9uIHdlbnQgb24gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHBlcmYuIEV4YW1wbGU6IGV0aDAuIFVuaXRzOgorQVNDSUkgVGV4dC4KK0BpdGVtIExPQ0FMX0lOVEVSRkFDRV9WRU5ET1IKK1RoZSB2ZW5kb3IgSUQgb2YgdGhlIHByb2JhYmxlIGVncmVzcyBpbnRlcmZhY2UgdGhyb3VnaCB3aGljaCB0cmFmZmljCitvbiB0aGUgZGF0YSBjb25uZWN0aW9uIHdlbnQgb24gdGhlIHN5c3RlbSBydW5uaW5nIG5ldHBlcmYuIFVuaXRzOgorSGV4YWRlY2ltYWwgSURzIGFzIG1pZ2h0IGJlIGZvdW5kIGluIGEgQGZpbGV7cGNpLmlkc30gZmlsZSBvciBhdAorQHVyZWZ7aHR0cDovL3BjaWlkcy5zb3VyY2Vmb3JnZS5uZXQvLHRoZSBQQ0kgSUQgUmVwb3NpdG9yeX0uCitAaXRlbSBMT0NBTF9JTlRFUkZBQ0VfREVWSUNFCitUaGUgZGV2aWNlIElEIG9mIHRoZSBwcm9iYWJsZSBlZ3Jlc3MgaW50ZXJmYWNlIHRocm91Z2ggd2hpY2ggdHJhZmZpYworb24gdGhlIGRhdGEgY29ubmVjdGlvbiB3ZW50IG9uIHRoZSBzeXN0ZW0gcnVubmluZyBuZXRwZXJmLiBVbml0czoKK0hleGFkZWNpbWFsIElEcyBhcyBtaWdodCBiZSBmb3VuZCBpbiBhIEBmaWxle3BjaS5pZHN9IGZpbGUgb3IgYXQKK0B1cmVme2h0dHA6Ly9wY2lpZHMuc291cmNlZm9yZ2UubmV0Lyx0aGUgUENJIElEIFJlcG9zaXRvcnl9LgorQGl0ZW0gTE9DQUxfSU5URVJGQUNFX1NVQlZFTkRPUgorVGhlIHN1Yi12ZW5kb3IgSUQgb2YgdGhlIHByb2JhYmxlIGVncmVzcyBpbnRlcmZhY2UgdGhyb3VnaCB3aGljaAordHJhZmZpYyBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIHdlbnQgb24gdGhlIHN5c3RlbSBydW5uaW5nCituZXRwZXJmLiBVbml0czogSGV4YWRlY2ltYWwgSURzIGFzIG1pZ2h0IGJlIGZvdW5kIGluIGEgQGZpbGV7cGNpLmlkc30KK2ZpbGUgb3IgYXQgQHVyZWZ7aHR0cDovL3BjaWlkcy5zb3VyY2Vmb3JnZS5uZXQvLHRoZSBQQ0kgSUQKK1JlcG9zaXRvcnl9LgorQGl0ZW0gTE9DQUxfSU5URVJGQUNFX1NVQkRFVklDRQorVGhlIHN1Yi1kZXZpY2UgSUQgb2YgdGhlIHByb2JhYmxlIGVncmVzcyBpbnRlcmZhY2UgdGhyb3VnaCB3aGljaAordHJhZmZpYyBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIHdlbnQgb24gdGhlIHN5c3RlbSBydW5uaW5nCituZXRwZXJmLiBVbml0czogSGV4YWRlY2ltYWwgSURzIGFzIG1pZ2h0IGJlIGZvdW5kIGluIGEgQGZpbGV7cGNpLmlkc30KK2ZpbGUgb3IgYXQgQHVyZWZ7aHR0cDovL3BjaWlkcy5zb3VyY2Vmb3JnZS5uZXQvLHRoZSBQQ0kgSUQKK1JlcG9zaXRvcnl9LgorQGl0ZW0gTE9DQUxfRFJJVkVSX05BTUUKK1RoZSBuYW1lIG9mIHRoZSBkcml2ZXIgdXNlZCBmb3IgdGhlIHByb2JhYmxlIGVncmVzcyBpbnRlcmZhY2UgdGhyb3VnaAord2hpY2ggdHJhZmZpYyBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIHdlbnQgb24gdGhlIHN5c3RlbSBydW5uaW5nCituZXRwZXJmLiBVbml0czogQVNDSUkgVGV4dC4KK0BpdGVtIExPQ0FMX0RSSVZFUl9WRVJTSU9OCitUaGUgdmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBkcml2ZXIgdXNlZCBmb3IgdGhlIHByb2JhYmxlIGVncmVzcworaW50ZXJmYWNlIHRocm91Z2ggd2hpY2ggdHJhZmZpYyBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIHdlbnQgb24gdGhlCitzeXN0ZW0gcnVubmluZyBuZXRwZXJmLiBVbml0czogQVNDSUkgVGV4dC4KK0BpdGVtIExPQ0FMX0RSSVZFUl9GSVJNV0FSRQorVGhlIGZpcm13YXJlIHZlcnNpb24gZm9yIHRoZSBkcml2ZXIgdXNlZCBmb3IgdGhlIHByb2JhYmxlIGVncmVzcworaW50ZXJmYWNlIHRocm91Z2ggd2hpY2ggdHJhZmZpYyBvbiB0aGUgZGF0YSBjb25uZWN0aW9uIHdlbnQgb24gdGhlCitzeXN0ZW0gcnVubmluZyBuZXRwZXJmLiBVbml0czogQVNDSUkgVGV4dC4KK0BpdGVtIExPQ0FMX0RSSVZFUl9CVVMKK1RoZSBidXMgYWRkcmVzcyBvZiB0aGUgcHJvYmFibGUgZWdyZXNzIGludGVyZmFjZSB0aHJvdWdoIHdoaWNoIHRyYWZmaWMKK29uIHRoZSBkYXRhIGNvbm5lY3Rpb24gd2VudCBvbiB0aGUgc3lzdGVtIHJ1bm5pbmcgbmV0cGVyZi4gVW5pdHM6CitBU0NJSSBUZXh0LgorQGl0ZW0gTE9DQUxfSU5URVJGQUNFX1NMT1QKK1RoZSBzbG90IElEIG9mIHRoZSBwcm9iYWJsZSBlZ3Jlc3MgaW50ZXJmYWNlIHRocm91Z2ggd2hpY2ggdHJhZmZpYworb24gdGhlIGRhdGEgY29ubmVjdGlvbiB3ZW50IG9uIHRoZSBzeXN0ZW0gcnVubmluZyBuZXRwZXJmLiBVbml0czoKK0FTQ0lJIFRleHQuCitAaXRlbSBSRU1PVEVfSU5URVJGQUNFX05BTUUKK0BpdGVtIFJFTU9URV9JTlRFUkZBQ0VfVkVORE9SCitAaXRlbSBSRU1PVEVfSU5URVJGQUNFX0RFVklDRQorQGl0ZW0gUkVNT1RFX0lOVEVSRkFDRV9TVUJWRU5ET1IKK0BpdGVtIFJFTU9URV9JTlRFUkZBQ0VfU1VCREVWSUNFCitAaXRlbSBSRU1PVEVfRFJJVkVSX05BTUUKK0BpdGVtIFJFTU9URV9EUklWRVJfVkVSU0lPTgorQGl0ZW0gUkVNT1RFX0RSSVZFUl9GSVJNV0FSRQorQGl0ZW0gUkVNT1RFX0RSSVZFUl9CVVMKK0BpdGVtIFJFTU9URV9JTlRFUkZBQ0VfU0xPVAorVGhlc2UgYXJlIGFsbCBsaWtlIHRoZWlyIGBgTE9DQUxfJycgY291bnRlcnBhcnRzIG9ubHkgZm9yIHRoZQorbmV0c2VydmVyIHJhdGhlciB0aGFuIG5ldHBlcmYuCitAaXRlbSBMT0NBTF9JTlRFUlZBTF9VU0VDUworVGhlIGludGVydmFsIGF0IHdoaWNoIGJ1cnN0cyBvZiBvcGVyYXRpb25zIChzZW5kcywgcmVjZWl2ZXMsCit0cmFuc2FjdGlvbnMpIHdlcmUgYXR0ZW1wdGVkIGJ5IG5ldHBlcmYuICBTcGVjaWZpZWQgYnkgdGhlCitnbG9iYWwgQG9wdGlvbnstd30gb3B0aW9uIHdoaWNoIHJlcXVpcmVzIC0tZW5hYmxlLWludGVydmFscyB0byBoYXZlCitiZWVuIHNwZWNpZmllZCB3aXRoIHRoZSBjb25maWd1cmUgY29tbWFuZCBwcmlvciB0byBidWlsZGluZworbmV0cGVyZi4gVW5pdHM6IE1pY3Jvc2Vjb25kcyAodGhvdWdoIHNwZWNpZmllZCBieSBkZWZhdWx0IGluCittaWxsaXNlY29uZHMgb24gdGhlIGNvbW1hbmQgbGluZSkKK0BpdGVtIExPQ0FMX0lOVEVSVkFMX0JVUlNUCitUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgKHNlbmRzLCByZWNlaXZlcywgdHJhbnNhY3Rpb25zIGRlcGVuZGluZyBvbgordGhlIHRlc3QpIHdoaWNoIHdlcmUgYXR0ZW1wdGVkIGJ5IG5ldHBlcmYgZWFjaCBMT0NBTF9JTlRFUlZBTF9VU0VDUwordW5pdHMgb2YgdGltZS4gU3BlY2lmaWVkIGJ5IHRoZSBnbG9iYWwgQG9wdGlvbnstYn0gb3B0aW9uIHdoaWNoCityZXF1aXJlcyAtLWVuYWJsZS1pbnRlcnZhbHMgdG8gaGF2ZSBiZWVuIHNwZWNpZmllZCB3aXRoIHRoZSBjb25maWd1cmUKK2NvbW1hbmQgcHJpb3IgdG8gYnVpbGRpbmcgbmV0cGVyZi4gIFVuaXRzOiBudW1iZXIgb2Ygb3BlcmF0aW9ucyBwZXIgYnVyc3QuCitAaXRlbSBSRU1PVEVfSU5URVJWQUxfVVNFQ1MKK1RoZSBpbnRlcnZhbCBhdCB3aGljaCBidXJzdHMgb2Ygb3BlcmF0aW9ucyAoc2VuZHMsIHJlY2VpdmVzLAordHJhbnNhY3Rpb25zKSB3ZXJlIGF0dGVtcHRlZCBieSBuZXRzZXJ2ZXIuICBTcGVjaWZpZWQgYnkgdGhlCitnbG9iYWwgQG9wdGlvbnstd30gb3B0aW9uIHdoaWNoIHJlcXVpcmVzIC0tZW5hYmxlLWludGVydmFscyB0byBoYXZlCitiZWVuIHNwZWNpZmllZCB3aXRoIHRoZSBjb25maWd1cmUgY29tbWFuZCBwcmlvciB0byBidWlsZGluZworbmV0cGVyZi4gVW5pdHM6IE1pY3Jvc2Vjb25kcyAodGhvdWdoIHNwZWNpZmllZCBieSBkZWZhdWx0IGluCittaWxsaXNlY29uZHMgb24gdGhlIGNvbW1hbmQgbGluZSkKK0BpdGVtIFJFTU9URV9JTlRFUlZBTF9CVVJTVAorVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIChzZW5kcywgcmVjZWl2ZXMsIHRyYW5zYWN0aW9ucyBkZXBlbmRpbmcgb24KK3RoZSB0ZXN0KSB3aGljaCB3ZXJlIGF0dGVtcHRlZCBieSBuZXRwZXJmIGVhY2ggTE9DQUxfSU5URVJWQUxfVVNFQ1MKK3VuaXRzIG9mIHRpbWUuIFNwZWNpZmllZCBieSB0aGUgZ2xvYmFsIEBvcHRpb257LWJ9IG9wdGlvbiB3aGljaAorcmVxdWlyZXMgLS1lbmFibGUtaW50ZXJ2YWxzIHRvIGhhdmUgYmVlbiBzcGVjaWZpZWQgd2l0aCB0aGUgY29uZmlndXJlCitjb21tYW5kIHByaW9yIHRvIGJ1aWxkaW5nIG5ldHBlcmYuICBVbml0czogbnVtYmVyIG9mIG9wZXJhdGlvbnMgcGVyIGJ1cnN0LgorQGl0ZW0gTE9DQUxfU0VDVVJJVFlfVFlQRV9JRAorQGl0ZW0gTE9DQUxfU0VDVVJJVFlfVFlQRQorQGl0ZW0gTE9DQUxfU0VDVVJJVFlfRU5BQkxFRF9OVU0KK0BpdGVtIExPQ0FMX1NFQ1VSSVRZX0VOQUJMRUQKK0BpdGVtIExPQ0FMX1NFQ1VSSVRZX1NQRUNJRklDCitAaXRlbSBSRU1PVEVfU0VDVVJJVFlfVFlQRV9JRAorQGl0ZW0gUkVNT1RFX1NFQ1VSSVRZX1RZUEUKK0BpdGVtIFJFTU9URV9TRUNVUklUWV9FTkFCTEVEX05VTQorQGl0ZW0gUkVNT1RFX1NFQ1VSSVRZX0VOQUJMRUQKK0BpdGVtIFJFTU9URV9TRUNVUklUWV9TUEVDSUZJQworQSBidW5jaCBvZiBzdHVmZiByZWxhdGVkIHRvIHdoYXQgc29ydCBvZiBzZWN1cml0eSBtZWNoYW5pc21zIChlZworU0VMSU5VWCkgd2VyZSBlbmFibGVkIG9uIHRoZSBzeXN0ZW1zIGR1cmluZyB0aGUgdGVzdC4KK0BpdGVtIFJFU1VMVF9CUkFORAorVGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgd2l0aCB0aGUgZ2xvYmFsIEBvcHRpb257LUJ9CitvcHRpb24uIFVuaXRzOiBBU0NJSSBUZXh0LgorQGl0ZW0gVVVJRAorVGhlIHVuaXZlcnNhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlc3QsIGVpdGhlcgorZ2VuZXJhdGVkIGF1dG9tYWdpY2FsbHkgYnkgbmV0cGVyZiwgb3IgcGFzc2VkIHRvIG5ldHBlcmYgdmlhIGFuIG9tbmkKK3Rlc3Qtc3BlY2lmaWMgQG9wdGlvbnstdX0gb3B0aW9uLiBOb3RlOiBGdXR1cmUgdmVyc2lvbnMgbWF5IG1ha2UgdGhpcworYSBnbG9iYWwgY29tbWFuZC1saW5lIG9wdGlvbi4gVW5pdHM6IEFTQ0lJIFRleHQuCitAaXRlbSBNSU5fTEFURU5DWQorVGhlIG1pbmltdW0gYGBsYXRlbmN5Jycgb3Igb3BlcmF0aW9uIHRpbWUgKHNlbmQsIHJlY2VpdmUgb3IKK3JlcXVlc3QvcmVzcG9uc2UgZXhjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSB0ZXN0KSBhcyBtZWFzdXJlZCBvbiB0aGUKK25ldHBlcmYgc2lkZSB3aGVuIHRoZSBnbG9iYWwgQG9wdGlvbnstan0gb3B0aW9uIHdhcyBzcGVjaWZpZWQuIFVuaXRzOgorTWljcm9zZWNvbmRzLgorQGl0ZW0gTUFYX0xBVEVOQ1kKK1RoZSBtYXhpbXVtIGBgbGF0ZW5jeScnIG9yIG9wZXJhdGlvbiB0aW1lIChzZW5kLCByZWNlaXZlIG9yCityZXF1ZXN0L3Jlc3BvbnNlIGV4Y2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgdGVzdCkgYXMgbWVhc3VyZWQgb24gdGhlCituZXRwZXJmIHNpZGUgd2hlbiB0aGUgZ2xvYmFsIEBvcHRpb257LWp9IG9wdGlvbiB3YXMgc3BlY2lmaWVkLiBVbml0czoKK01pY3Jvc2Vjb25kcy4KK0BpdGVtIFA1MF9MQVRFTkNZCitUaGUgNTB0aCBwZXJjZW50aWxlIHZhbHVlIG9mIGBgbGF0ZW5jeScnIG9yIG9wZXJhdGlvbiB0aW1lIChzZW5kLCByZWNlaXZlIG9yCityZXF1ZXN0L3Jlc3BvbnNlIGV4Y2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgdGVzdCkgYXMgbWVhc3VyZWQgb24gdGhlCituZXRwZXJmIHNpZGUgd2hlbiB0aGUgZ2xvYmFsIEBvcHRpb257LWp9IG9wdGlvbiB3YXMgc3BlY2lmaWVkLiBVbml0czoKK01pY3Jvc2Vjb25kcy4KK0BpdGVtIFA5MF9MQVRFTkNZCitUaGUgOTB0aCBwZXJjZW50aWxlIHZhbHVlIG9mIGBgbGF0ZW5jeScnIG9yIG9wZXJhdGlvbiB0aW1lIChzZW5kLCByZWNlaXZlIG9yCityZXF1ZXN0L3Jlc3BvbnNlIGV4Y2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgdGVzdCkgYXMgbWVhc3VyZWQgb24gdGhlCituZXRwZXJmIHNpZGUgd2hlbiB0aGUgZ2xvYmFsIEBvcHRpb257LWp9IG9wdGlvbiB3YXMgc3BlY2lmaWVkLiBVbml0czoKK01pY3Jvc2Vjb25kcy4KK0BpdGVtIFA5OV9MQVRFTkNZCitUaGUgOTl0aCBwZXJjZW50aWxlIHZhbHVlIG9mIGBgbGF0ZW5jeScnIG9yIG9wZXJhdGlvbiB0aW1lIChzZW5kLCByZWNlaXZlIG9yCityZXF1ZXN0L3Jlc3BvbnNlIGV4Y2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgdGVzdCkgYXMgbWVhc3VyZWQgb24gdGhlCituZXRwZXJmIHNpZGUgd2hlbiB0aGUgZ2xvYmFsIEBvcHRpb257LWp9IG9wdGlvbiB3YXMgc3BlY2lmaWVkLiBVbml0czoKK01pY3Jvc2Vjb25kcy4KK0BpdGVtIE1FQU5fTEFURU5DWQorVGhlIGF2ZXJhZ2UgYGBsYXRlbmN5Jycgb3Igb3BlcmF0aW9uIHRpbWUgKHNlbmQsIHJlY2VpdmUgb3IKK3JlcXVlc3QvcmVzcG9uc2UgZXhjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSB0ZXN0KSBhcyBtZWFzdXJlZCBvbiB0aGUKK25ldHBlcmYgc2lkZSB3aGVuIHRoZSBnbG9iYWwgQG9wdGlvbnstan0gb3B0aW9uIHdhcyBzcGVjaWZpZWQuIFVuaXRzOgorTWljcm9zZWNvbmRzLgorQGl0ZW0gU1REREVWX0xBVEVOQ1kKK1RoZSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgYGBsYXRlbmN5Jycgb3Igb3BlcmF0aW9uIHRpbWUgKHNlbmQsIHJlY2VpdmUgb3IKK3JlcXVlc3QvcmVzcG9uc2UgZXhjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSB0ZXN0KSBhcyBtZWFzdXJlZCBvbiB0aGUKK25ldHBlcmYgc2lkZSB3aGVuIHRoZSBnbG9iYWwgQG9wdGlvbnstan0gb3B0aW9uIHdhcyBzcGVjaWZpZWQuIFVuaXRzOgorTWljcm9zZWNvbmRzLgorQGl0ZW0gQ09NTUFORF9MSU5FCitUaGUgZnVsbCBjb21tYW5kIGxpbmUgdXNlZCB3aGVuIGludm9raW5nIG5ldHBlcmYuIFVuaXRzOiBBU0NJSSBUZXh0LgorQGl0ZW0gT1VUUFVUX0VORAorV2hpbGUgZW1pdHRlZCB3aXRoIHRoZSBsaXN0IG9mIG91dHB1dCBzZWxlY3RvcnMsIGl0IGlzIGlnbm9yZWQgd2hlbgorc3BlY2lmaWVkIGFzIGFuIG91dHB1dCBzZWxlY3Rvci4KK0BlbmQgdGFibGUKKworQG5vZGUgT3RoZXIgTmV0cGVyZiBUZXN0cywgQWRkcmVzcyBSZXNvbHV0aW9uLCBUaGUgT21uaSBUZXN0cywgVG9wCitAY2hhcHRlciBPdGhlciBOZXRwZXJmIFRlc3RzCisKK0FwYXJ0IGZyb20gdGhlIHR5cGljYWwgcGVyZm9ybWFuY2UgdGVzdHMsIG5ldHBlcmYgY29udGFpbnMgc29tZSB0ZXN0cword2hpY2ggY2FuIGJlIHVzZWQgdG8gc3RyZWFtbGluZSBtZWFzdXJlbWVudHMgYW5kIHJlcG9ydGluZy4gIFRoZXNlCitpbmNsdWRlIENQVSByYXRlIGNhbGlicmF0aW9uIChwcmVzZW50KSBhbmQgaG9zdCBpZGVudGlmaWNhdGlvbiAoZnV0dXJlCitlbmhhbmNlbWVudCkuCisKK0BtZW51CisqIENQVSByYXRlIGNhbGlicmF0aW9uOjogICAgICAgIAorKiBVVUlEIEdlbmVyYXRpb246OiAgICAgICAgICAgICAKK0BlbmQgbWVudQorCitAbm9kZSBDUFUgcmF0ZSBjYWxpYnJhdGlvbiwgVVVJRCBHZW5lcmF0aW9uLCBPdGhlciBOZXRwZXJmIFRlc3RzLCBPdGhlciBOZXRwZXJmIFRlc3RzCitAc2VjdGlvbiBDUFUgcmF0ZSBjYWxpYnJhdGlvbgorCitTb21lIG9mIHRoZSBDUFUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnQgbWVjaGFuaXNtcyBvZiBuZXRwZXJmIHdvcmsgYnkKK2NvbXBhcmluZyB0aGUgcmF0ZSBhdCB3aGljaCBzb21lIGNvdW50ZXIgaW5jcmVtZW50cyB3aGVuIHRoZSBzeXN0ZW0gaXMKK2lkbGUgd2l0aCB0aGUgcmF0ZSBhdCB3aGljaCB0aGF0IHNhbWUgY291bnRlciBpbmNyZW1lbnRzIHdoZW4gdGhlCitzeXN0ZW0gaXMgcnVubmluZyBhIG5ldHBlcmYgdGVzdC4gIFRoZSByYXRpbyBvZiB0aG9zZSByYXRlcyBpcyB1c2VkIHRvCithcnJpdmUgYXQgYSBDUFUgdXRpbGl6YXRpb24gcGVyY2VudGFnZS4KKworVGhpcyBtZWFucyB0aGF0IG5ldHBlcmYgbXVzdCBrbm93IHRoZSByYXRlIGF0IHdoaWNoIHRoZSBjb3VudGVyCitpbmNyZW1lbnRzIHdoZW4gdGhlIHN5c3RlbSBpcyBwcmVzdW1lZCB0byBiZSBgYGlkbGUuJycgIElmIGl0IGRvZXMgbm90Citrbm93IHRoZSByYXRlLCBuZXRwZXJmIHdpbGwgbWVhc3VyZSBpdCBiZWZvcmUgc3RhcnRpbmcgYSBkYXRhIHRyYW5zZmVyCit0ZXN0LiAgVGhpcyBjYWxpYnJhdGlvbiBzdGVwIHRha2VzIDQwIHNlY29uZHMgZm9yIGVhY2ggb2YgdGhlIGxvY2FsIG9yCityZW1vdGUgc3lzdGVtcywgYW5kIGlmIHJlcGVhdGVkIGZvciBlYWNoIG5ldHBlcmYgdGVzdCB3b3VsZCBtYWtlIHRha2luZworcmVwZWF0ZWQgbWVhc3VyZW1lbnRzIHJhdGhlciBzbG93LgorCitUaHVzLCB0aGUgbmV0cGVyZiBDUFUgdXRpbGl6YXRpb24gb3B0aW9ucyBAb3B0aW9uey1jfSBhbmQgYW5kCitAb3B0aW9uey1DfSBjYW4gdGFrZSBhbiBvcHRpb25hbCBjYWxpYnJhdGlvbiB2YWx1ZS4gIFRoaXMgdmFsdWUgaXMKK3VzZWQgYXMgdGhlIGBgaWRsZSByYXRlJycgYW5kIHRoZSBjYWxpYnJhdGlvbiBzdGVwIGlzIG5vdAorcGVyZm9ybWVkLiBUbyBkZXRlcm1pbmUgdGhlIGlkbGUgcmF0ZSwgbmV0cGVyZiBjYW4gYmUgdXNlZCB0byBydW4KK3NwZWNpYWwgdGVzdHMgd2hpY2ggb25seSByZXBvcnQgdGhlIHZhbHVlIG9mIHRoZSBjYWxpYnJhdGlvbiAtIHRoZXkKK2FyZSB0aGUgTE9DX0NQVSBhbmQgUkVNX0NQVSB0ZXN0cy4gIFRoZXNlIHJldHVybiB0aGUgY2FsaWJyYXRpb24gdmFsdWUKK2ZvciB0aGUgbG9jYWwgYW5kIHJlbW90ZSBzeXN0ZW0gcmVzcGVjdGl2ZWx5LiAgQSBjb21tb24gd2F5IHRvIHVzZQordGhlc2UgdGVzdHMgaXMgdG8gc3RvcmUgdGhlaXIgcmVzdWx0cyBpbnRvIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZAordXNlIHRoYXQgaW4gc3Vic2VxdWVudCBuZXRwZXJmIGNvbW1hbmRzOgorCitAZXhhbXBsZQorTE9DX1JBVEU9YG5ldHBlcmYgLXQgTE9DX0NQVWAKK1JFTV9SQVRFPWBuZXRwZXJmIC1IIDxyZW1vdGU+IC10IFJFTV9DUFVgCituZXRwZXJmIC1IIDxyZW1vdGU+IC1jICRMT0NfUkFURSAtQyAkUkVNX1JBVEUgLi4uIC0tIC4uLgorLi4uCituZXRwZXJmIC1IIDxyZW1vdGU+IC1jICRMT0NfUkFURSAtQyAkUkVNX1JBVEUgLi4uIC0tIC4uLgorQGVuZCBleGFtcGxlCisKK0lmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIG5ldHBlcmYgdG8gbWVhc3VyZSBhZ2dyZWdhdGUgcmVzdWx0cywgaXQgaXMKK2ltcG9ydGFudCB0byB1c2UgdGhlIExPQ19DUFUgYW5kIFJFTV9DUFUgdGVzdHMgdG8gZ2V0IHRoZSBjYWxpYnJhdGlvbgordmFsdWVzIGZpcnN0IHRvIGF2b2lkIGlzc3VlcyB3aXRoIHNvbWUgb2YgdGhlIGFnZ3JlZ2F0ZSBuZXRwZXJmIHRlc3RzCit0cmFuc2ZlcnJpbmcgZGF0YSB3aGlsZSBvdGhlcnMgYXJlIGBgaWRsZScnIGFuZCBnZXR0aW5nIGJvZ3VzCitjYWxpYnJhdGlvbiB2YWx1ZXMuICBXaGVuIHJ1bm5pbmcgYWdncmVnYXRlIHRlc3RzLCBpdCBpcyB2ZXJ5CitpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBhbnkgb25lIGluc3RhbmNlIG9mIG5ldHBlcmYgZG9lcyBub3Qga25vdworYWJvdXQgdGhlIG90aGVyIGluc3RhbmNlcyBvZiBuZXRwZXJmLiAgSXQgd2lsbCByZXBvcnQgZ2xvYmFsIENQVQordXRpbGl6YXRpb24gYW5kIHdpbGwgY2FsY3VsYXRlIHNlcnZpY2UgZGVtYW5kIGJlbGlldmluZyBpdCB3YXMgdGhlCitvbmx5IHRoaW5nIGNhdXNpbmcgdGhhdCBDUFUgdXRpbGl6YXRpb24uICBTbywgeW91IGNhbiB1c2UgdGhlIENQVQordXRpbGl6YXRpb24gcmVwb3J0ZWQgYnkgbmV0cGVyZiBpbiBhbiBhZ2dyZWdhdGUgdGVzdCwgYnV0IHlvdSBoYXZlIHRvCitjYWxjdWxhdGUgc2VydmljZSBkZW1hbmRzIGJ5IGhhbmQuCisKK0Bub2RlIFVVSUQgR2VuZXJhdGlvbiwgICwgQ1BVIHJhdGUgY2FsaWJyYXRpb24sIE90aGVyIE5ldHBlcmYgVGVzdHMKK0BzZWN0aW9uIFVVSUQgR2VuZXJhdGlvbgorCitCZWdpbm5pbmcgd2l0aCB2ZXJzaW9uIDIuNS4wIG5ldHBlcmYgY2FuIGdlbmVyYXRlIFVuaXZlcnNhbGx5IFVuaXF1ZQorSURlbnRpZmllcnMgKFVVSURzKS4gIFRoaXMgY2FuIGJlIGRvbmUgZXhwbGljaXRseSB2aWEgdGhlIGBgVVVJRCcnCit0ZXN0OgorQGV4YW1wbGUKKyQgbmV0cGVyZiAtdCBVVUlECisyYzg1NjFhZS05ZWJkLTExZTAtYTI5Ny0wZjViZmEwMzQ5ZDAKK0BlbmQgZXhhbXBsZQorCitJbiBhbmQgb2YgaXRzZWxmLCB0aGlzIGlzIG5vdCB0ZXJyaWJseSB1c2VmdWwsIGJ1dCB1c2VkIGluIGNvbmp1bmN0aW9uCit3aXRoIHRoZSB0ZXN0LXNwZWNpZmljIEBvcHRpb257LXV9IG9wdGlvbiBvZiBhbiBgYG9tbmknJyB0ZXN0IHRvIHNldAordGhlIFVVSUQgZW1pdHRlZCBieSB0aGUgQHJlZntPbW5pIE91dHB1dCBTZWxlY3RvcnMsVVVJRH0gb3V0cHV0CitzZWxlY3RvciwgaXQgY2FuIGJlIHVzZWQgdG8gdGllLXRvZ2V0aGVyIHRoZSBzZXBhcmF0ZSBpbnN0YW5jZXMgb2YgYW4KK2FnZ3JlZ2F0ZSBuZXRwZXJmIHRlc3QuICBTYXksIGZvciBpbnN0YW5jZSBpZiB0aGV5IHdlcmUgaW5zZXJ0ZWQgaW50bworYSBkYXRhYmFzZSBvZiBzb21lIHNvcnQuCisKK0Bub2RlIEFkZHJlc3MgUmVzb2x1dGlvbiwgRW5oYW5jaW5nIE5ldHBlcmYsIE90aGVyIE5ldHBlcmYgVGVzdHMsIFRvcAorQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAY2hhcHRlciBBZGRyZXNzIFJlc29sdXRpb24KKworTmV0cGVyZiB2ZXJzaW9ucyAyLjQuMCBhbmQgbGF0ZXIgaGF2ZSBtZXJnZWQgSVB2NCBhbmQgSVB2NiB0ZXN0cyBzbwordGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRlc3RzIGluIEBmaWxle3NyYy9uZXR0ZXN0X2lwdjYuY30gaGFzIGJlZW4KK3N1YnN1bWVkIGludG8gdGhlIHRlc3RzIGluIEBmaWxle3NyYy9uZXR0ZXN0X2JzZC5jfSAgVGhpcyBoYXMgYmVlbgorYWNjb21wbGlzaGVkIGluIHBhcnQgYnkgc3dpdGNoaW5nIGZyb20gQGNvZGV7Z2V0aG9zdGJ5bmFtZSgpfXRvCitAY29kZXtnZXRhZGRyaW5mbygpfSBleGNsdXNpdmVseS4gIFdoaWxlIGl0IHdhcyB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlCit0byBnZXQgbXVsdGlwbGUgcmVzdWx0cyBmb3IgYSBob3N0bmFtZSBmcm9tIEBjb2Rle2dldGhvc3RieW5hbWUoKX0gaXQKK3dhcyBnZW5lcmFsbHkgdW5saWtlbHkgYW5kIG5ldHBlcmYncyBpZ25vcmluZyBvZiB0aGUgc2Vjb25kIGFuZCBsYXRlcgorcmVzdWx0cyB3YXMgbm90IG11Y2ggb2YgYW4gaXNzdWUuCisKK05vdyB3aXRoIEBjb2Rle2dldGFkZHJpbmZvfSBhbmQgcGFydGljdWxhcmx5IHdpdGggQUZfVU5TUEVDIGl0IGlzCitpbmNyZWFzaW5nbHkgbGlrZWx5IHRoYXQgYSBnaXZlbiBob3N0bmFtZSB3aWxsIGhhdmUgbXVsdGlwbGUKK2Fzc29jaWF0ZWQgYWRkcmVzc2VzLiAgVGhlIEBjb2Rle2VzdGFibGlzaF9jb250cm9sKCl9IHJvdXRpbmUgb2YKK0BmaWxle3NyYy9uZXRsaWIuY30gd2lsbCBpbmRlZWQgYXR0ZW1wdCB0byBjaG9zZSBmcm9tIGFtb25nIGFsbCB0aGUKK21hdGNoaW5nIElQIGFkZHJlc3NlcyB3aGVuIGVzdGFibGlzaGluZyB0aGUgY29udHJvbCBjb25uZWN0aW9uLgorTmV0cGVyZiBkb2VzIG5vdCBfcmVhbGx5XyBjYXJlIGlmIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gaXMgSVB2NCBvcgorSVB2NiBvciBldmVuIG1peGVkIG9uIGVpdGhlciBlbmQuCisKK0hvd2V2ZXIsIHRoZSBpbmRpdmlkdWFsIHRlc3RzIHN0aWxsIGFzcy11LW1lIHRoYXQgdGhlIGZpcnN0IHJlc3VsdCBpbgordGhlIGFkZHJlc3MgbGlzdCBpcyB0aGUgb25lIHRvIGJlIHVzZWQuICBXaGV0aGVyIG9yIG5vdCB0aGlzIHdpbGwKK3R1cm4tb3V0IHRvIGJlIGFuIGlzc3VlIGhhcyB5ZXQgdG8gYmUgZGV0ZXJtaW5lZC4KKworSWYgeW91IGRvIHJ1biBpbnRvIHByb2JsZW1zIHdpdGggdGhpcywgdGhlIGVhc2llc3Qgd29ya2Fyb3VuZCBpcyB0bworc3BlY2lmeSBJUCBhZGRyZXNzZXMgZm9yIHRoZSBkYXRhIGNvbm5lY3Rpb24gZXhwbGljaXRseSBpbiB0aGUKK3Rlc3Qtc3BlY2lmaWMgQG9wdGlvbnstSH0gYW5kIEBvcHRpb257LUx9IG9wdGlvbnMuICBBdCBzb21lIHBvaW50LCB0aGUKK25ldHBlcmYgdGVzdHMgX21heV8gdHJ5IHRvIGJlIG1vcmUgc29waGlzdGljYXRlZCBpbiB0aGVpciBwYXJzaW5nIG9mCityZXR1cm5zIGZyb20gQGNvZGV7Z2V0YWRkcmluZm8oKX0gLSBzdHJhdy1tYW4gcGF0Y2hlcyB0bworQGVtYWlse25ldHBlcmYtZmVlZGJhY2tAQG5ldHBlcmYub3JnfSB3b3VsZCBvZiBjb3Vyc2UgYmUgbW9zdCB3ZWxjb21lCis6KQorCitOZXRwZXJmIGhhcyBsZXZlcmFnZWQgY29kZSBmcm9tIG90aGVyIG9wZW4tc291cmNlIHByb2plY3RzIHdpdGgKK2FtZW5hYmxlIGxpY2Vuc2luZyB0byBwcm92aWRlIGEgcmVwbGFjZW1lbnQgQGNvZGV7Z2V0YWRkcmluZm8oKX0gY2FsbAorb24gdGhvc2UgcGxhdGZvcm1zIHdoZXJlIHRoZSBAY29tbWFuZHtjb25maWd1cmV9IHNjcmlwdCBiZWxpZXZlcyB0aGVyZQoraXMgbm8gbmF0aXZlIGdldGFkZHJpbmZvIGNhbGwuICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZSByZXBsYWNlbWVudAorQGNvZGV7Z2V0YWRkcmluZm8oKX0gYXMgYmVlbiB0ZXN0ZWQgb24gSFAtVVggMTEuMCBhbmQgdGhlbiBwcmVzdW1lZCB0bworcnVuIGVsc2V3aGVyZS4KKworQG5vZGUgRW5oYW5jaW5nIE5ldHBlcmYsIE5ldHBlcmY0LCBBZGRyZXNzIFJlc29sdXRpb24sIFRvcAorQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAY2hhcHRlciBFbmhhbmNpbmcgTmV0cGVyZgorCitOZXRwZXJmIGlzIGNvbnN0YW50bHkgZXZvbHZpbmcuICBJZiB5b3UgZmluZCB5b3Ugd2FudCB0byBtYWtlCitlbmhhbmNlbWVudHMgdG8gbmV0cGVyZiwgYnkgYWxsIG1lYW5zIGRvIHNvLiAgSWYgeW91IHdpc2ggdG8gYWRkIGEgbmV3CitgYHN1aXRlJycgb2YgdGVzdHMgdG8gbmV0cGVyZiB0aGUgZ2VuZXJhbCBpZGVhIGlzIHRvOgorCitAZW51bWVyYXRlCitAaXRlbQorQWRkIGZpbGVzIEBmaWxle3NyYy9uZXR0ZXN0X211bWJsZS5jfSBhbmQgQGZpbGV7c3JjL25ldHRlc3RfbXVtYmxlLmh9Cit3aGVyZSBtdW1ibGUgaXMgcmVwbGFjZWQgd2l0aCBzb21ldGhpbmcgbWVhbmluZ2Z1bCBmb3IgdGhlIHRlc3Qtc3VpdGUuCitAaXRlbQorQWRkIHN1cHBvcnQgZm9yIGFuIGFwcHJvcHJpYXRlIEBvcHRpb257LS1lbmFibGUtbXVtYmxlfSBvcHRpb24gaW4KK0BmaWxle2NvbmZpZ3VyZS5hY30uCitAaXRlbQorRWRpdCBAZmlsZXtzcmMvbmV0cGVyZi5jfSwgQGZpbGV7bmV0c2guY30sIGFuZCBAZmlsZXtuZXRzZXJ2ZXIuY30gYXMKK3JlcXVpcmVkLCB1c2luZyAjaWZkZWYgV0FOVF9NVU1CTEUuCitAaXRlbQorQ29tcGlsZSBhbmQgdGVzdAorQGVuZCBlbnVtZXJhdGUKKworSG93ZXZlciwgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBgb21uaScnIHRlc3RzIGluIHZlcnNpb24gMi41LjAgaXQKK2lzIHByZWZlcnJlZCB0aGF0IG9uZSBhdHRlbXB0IHRvIG1ha2UgdGhlIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvCitAZmlsZXtzcmMvbmV0dGVzdF9vbW5pLmN9IHJhdGhlciB0aGFuIGFkZGluZyBuZXcgc291cmNlIGZpbGVzLCB1bmxlc3MKK3RoaXMgd291bGQgbWFrZSB0aGUgb21uaSB0ZXN0cyBlbnRpcmVseSB0b28gY29tcGxpY2F0ZWQuCisKK0lmIHlvdSB3aXNoIHRvIHN1Ym1pdCB5b3VyIGNoYW5nZXMgZm9yIHBvc3NpYmxlIGluY2x1c2lvbiBpbnRvIHRoZQorbWFpbmxpbmUgc291cmNlcywgcGxlYXNlIHRyeSB0byBiYXNlIHlvdXIgY2hhbmdlcyBvbiB0aGUgbGF0ZXN0CithdmFpbGFibGUgc291cmNlcy4gKEB4cmVme0dldHRpbmcgTmV0cGVyZiBCaXRzfS4pIGFuZCB0aGVuIHNlbmQgZW1haWwKK2Rlc2NyaWJpbmcgdGhlIGNoYW5nZXMgYXQgYSBoaWdoIGxldmVsIHRvCitAZW1haWx7bmV0cGVyZi1mZWVkYmFja0BAbmV0cGVyZi5vcmd9IG9yIHBlcmhhcHMKK0BlbWFpbHtuZXRwZXJmLXRhbGtAQG5ldHBlcmYub3JnfS4gIElmIHRoZSBjb25zZW5zdXMgaXMgcG9zaXRpdmUsIHRoZW4KK3NlbmRpbmcgY29udGV4dCBAY29tbWFuZHtkaWZmfSByZXN1bHRzIHRvCitAZW1haWx7bmV0cGVyZi1mZWVkYmFja0BAbmV0cGVyZi5vcmd9IGlzIHRoZSBuZXh0IHN0ZXAuICBGcm9tIHRoYXQKK3BvaW50LCBpdCBpcyBhIG1hdHRlciBvZiBwZXN0ZXJpbmcgdGhlIE5ldHBlcmYgQ29udHJpYnV0aW5nIEVkaXRvcgordW50aWwgaGUgZ2V0cyB0aGUgY2hhbmdlcyBpbmNvcnBvcmF0ZWQgOikKKworQG5vZGUgIE5ldHBlcmY0LCBDb25jZXB0IEluZGV4LCBFbmhhbmNpbmcgTmV0cGVyZiwgVG9wCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BjaGFwdGVyIE5ldHBlcmY0CisKK05ldHBlcmY0IGlzIHRoZSBzaG9ydGhhbmQgbmFtZSBnaXZlbiB0byB2ZXJzaW9uIDQuWC5YIG9mIG5ldHBlcmYuCitUaGlzIGlzIHJlYWxseSBhIHNlcGFyYXRlIGJlbmNobWFyayBtb3JlIHRoYW4gYSBuZXdlciB2ZXJzaW9uIG9mCituZXRwZXJmLCBidXQgaXQgaXMgYSBkZXNjZW5kYW50IG9mIG5ldHBlcmYgc28gdGhlIG5ldHBlcmYgbmFtZSBpcwora2VwdC4gIFRoZSBmYWNldGlvdXMgd2F5IHRvIGRlc2NyaWJlIG5ldHBlcmY0IGlzIHRvIHNheSBpdCBpcyB0aGUKK2VnZy1sYXlpbmctd29vbGx5LW1pbGstcGlnIHZlcnNpb24gb2YgbmV0cGVyZiA6KSAgVGhlIG1vcmUgcmVzcGVjdGZ1bAord2F5IHRvIGRlc2NyaWJlIGl0IGlzIHRvIHNheSBpdCBpcyB0aGUgdmVyc2lvbiBvZiBuZXRwZXJmIHdpdGggc3VwcG9ydAorZm9yIHN5bmNocm9uaXplZCwgbXVsdGlwbGUtdGhyZWFkLCBtdWx0aXBsZS10ZXN0LCBtdWx0aXBsZS1zeXN0ZW0sCituZXR3b3JrLW9yaWVudGVkIGJlbmNobWFya2luZy4KKworTmV0cGVyZjQgaXMgc3RpbGwgdW5kZXJnb2luZyBldm9sdXRpb24uIFRob3NlIHdpc2hpbmcgdG8gd29yayB3aXRoIG9yCitvbiBuZXRwZXJmNCBhcmUgZW5jb3VyYWdlZCB0byBqb2luIHRoZQorQHVyZWZ7aHR0cDovL3d3dy5uZXRwZXJmLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbmV0cGVyZi1kZXYsbmV0cGVyZi1kZXZ9CittYWlsaW5nIGxpc3QgYW5kL29yIHBlcnVzZSB0aGUKK0B1cmVme2h0dHA6Ly93d3cubmV0cGVyZi5vcmcvc3ZuL25ldHBlcmY0L3RydW5rLGN1cnJlbnQgc291cmNlc30uCisKK0Bub2RlIENvbmNlcHQgSW5kZXgsIE9wdGlvbiBJbmRleCwgTmV0cGVyZjQsIFRvcAorQHVubnVtYmVyZWQgQ29uY2VwdCBJbmRleAorCitAcHJpbnRpbmRleCBjcAorCitAbm9kZSBPcHRpb24gSW5kZXgsICAsIENvbmNlcHQgSW5kZXgsIFRvcAorQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAdW5udW1iZXJlZCBPcHRpb24gSW5kZXgKKworQHByaW50aW5kZXggdnIKK0BieWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCitAYyAgTG9jYWxXb3JkczogIHRleGluZm8gc2V0ZmlsZW5hbWUgc2V0dGl0bGUgdGl0bGVwYWdlIHZza2lwIHB0IGZpbGxsIGlmbm90dGV4CitAYyAgTG9jYWxXb3JkczogIGluc2VydGNvcHlpbmcgY2luZGV4IGRmbiB1cmVmIHByaW50aW5kZXggY3AKZGlmZiAtLWdpdCBhL2RvYy9uZXRwZXJmX29sZC5wcyBiL2RvYy9uZXRwZXJmX29sZC5wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmRiNDIwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL25ldHBlcmZfb2xkLnBzCkBAIC0wLDAgKzEsMjQwMTQgQEAKKyUhUFMtQWRvYmUtMy4wCislJUNyZWF0b3I6IChJbnRlcmxlYWYsIEluYy4pCislJUNvcHlyaWdodDogKENvcHlyaWdodChjKSAxOTkzIEludGVybGVhZiwgSW5jLikKKyUlVmVyc2lvbjogNi4wIDAKKyUlQm91bmRpbmdCb3g6IDAgMCA2MTIgNzkyCislJUZvcjogKHJhaikKKyUlQ3JlYXRpb25EYXRlOiAoVHVlLCBGZWIgMjcsIDE5OTYgMTY6NTM6MzkpCislJVRpdGxlOiAoTmV0cGVyZikKKyUlUGFnZXM6IChhdGVuZCkKKyUlRG9jdW1lbnROZWVkZWRSZXNvdXJjZXM6IChhdGVuZCkKKyUlRG9jdW1lbnRTdXBwbGllZFJlc291cmNlczogKGF0ZW5kKQorJSVEb2N1bWVudFByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlRG9jdW1lbnRDdXN0b21Db2xvcnM6IChhdGVuZCkKKyVJTEVBRkpvYiBUaWNrZXQgU3RhcnQKKyVJTEVBRlByaW50VG86ICJkZXZpY2UiCislSUxFQUZDb2xsYXRlOiAiVHJ1ZSIKKyVJTEVBRkNvcGllczogIjEiCislSUxFQUZDb3ZlclBhZ2U6ICJGYWxzZSIKKyVJTEVBRkNyb3BNYXJrczogIk9mZiIKKyVJTEVBRkR1cGxleDogIk5vbmUiCislSUxFQUZGYWNlOiAiRG93biIKKyVJTEVBRk1hbnVhbEZlZWQ6ICJUcnVlIgorJUlMRUFGUGFnZVNpemU6ICJMZXR0ZXIiCislSUxFQUZDZW50ZXI6ICJOb25lIgorJUlMRUFGU2NhbGU6ICIxMDAiCislSUxFQUZBdXRvU2NhbGU6ICJGYWxzZSIKKyVJTEVBRkF1dG9QYWdlU2l6ZTogIlRydWUiCislSUxFQUZGaWx0QXJnczogIi1ubXNnIC1kZWYgJyMtcHBkI0dFTkVSSUMuUFBEIy1lIy1kcHMjQTMjJyAiCislSUxFQUZGaWx0ZXI6ICJwbDJwcyIKKyVJTEVBRlNwb29sOiAibiIKKyVJTEVBRk1vZGVsOiAiR2VuZXJpYyBQb3N0U2NyaXB0IgorJUlMRUFGUFBERmlsZTogIkdFTkVSSUMuUFBEIgorJUlMRUFGRmlsdGVyTG9jOiAiZGVza3RvcCIKKyVJTEVBRkpvYiBUaWNrZXQgRW5kCislJUVuZENvbW1lbnRzCislJUJlZ2luUHJvbG9nCit1c2VyZGljdCAvSWxlYWZfNi4wLjAgNDAwIGRpY3QgZHVwIGJlZ2luIHB1dAorL01BSk9SIDYgZGVmL01JTk9SIDAgZGVmL1NVQiAwIGRlZgorL2JkZiB7YmluZCBkZWZ9IGJpbmQgZGVmCisvaWxwdXQge0lsZWFmXzYuMC4wIDMgMSByb2xsIGR1cCBiZWdpbiBwdXR9IGJkZgorL2lsZGVmIHtiaW5kIGVuZCBkZWZ9IGJkZgorL2xkZntsb2FkIGRlZn1iZGYKKy94ZGZ7ZXhjaCBkZWZ9YmRmCisvc2Rme3N0cmluZyBkZWZ9YmRmCisvaW1hdHJpeFsxLjAgMC4wIDAuMCAtMS4wIDAuMCAwLjBdZGVmCisvTUFYQ0hBUlMgMTI4IGRlZgorL1ZNSEVBRCAxMDAwIGRlZgorL0JPR1VTV0lEVEggLTEgZGVmCisvbWVzZyA2NCBzZGYKKy9jaGFyc3RyIDEyIHNkZgorL2lzdHIgMyBzZGYKKy9JTEVuY29kaW5nIDI1NiBhcnJheSBkZWYKKy9JTFN5bUJFbmMgMjU2IGFycmF5IGRlZgorL0lMRGluZ2JhdHMgMjU2IGFycmF5IGRlZgorL3RyYXNoaGVhcCAxMDI0IHNkZgorL2Vtc2cxIDI1NiBzZGYKKy9lbXNnMiAyNTYgc2RmCisvaW5jaHs3MiBtdWx9YmRmCisvcGdzdGF0ZSAwIGRlZi9EUEl4IDAgZGVmL0RQSXkgMCBkZWYKKy9QU2ZvbnRvYmogMTAyNCBkaWN0IGRlZgorL0JpbmFyeU1vZGUgZmFsc2UgZGVmCisvTCAvbGluZXRvIGxkZgorL00gL21vdmV0byBsZGYKKy9DIC9jbG9zZXBhdGggbGRmCisvTiAvbmV3cGF0aCBsZGYKKy9MVyAvc2V0bGluZXdpZHRoIGxkZgorL0dTIC9nc2F2ZSBsZGYKKy9HUiAvZ3Jlc3RvcmUgbGRmCisvU0YgL3NldGZvbnQgbGRmCisvU0QgL3NldGRhc2ggbGRmCisvQ0QgL2NvdW50ZGljdHN0YWNrIGxkZgorJSBVc2VyIGRlZmluYWJsZSBtYWNyb3MgZm9yIGN1c3RvbSBwcm9sb2d1ZXMKKy9CT0oge30gZGVmCisvRU9KIHt9IGRlZgorL0JPUyB7fSBkZWYKKy9FT1Mge30gZGVmCislCisvaW5pdGlhbGl6ZSB7SWxlYWZfNi4wLjAgYmVnaW59IGJkZgorL3Rlcm1pbmF0ZSAvZW5kIGxkZgorL25wb3AgeworCXtwb3B9IHJlcGVhdAorfSBiZGYKKyUKKwkvaGxpbmUgMCBkZWYgL3kgMTEgZGVmIC9qaXNoZHIgMCBkZWYKKwkvbmwgey95IHkgLjMzIHN1YiBkZWYgMSBpbmNoIHkgaW5jaCBNfSBiZGYKKy9oZWFkZXJwYWdleworCS8jY29waWVzIDEgZGVmCisJL2ppc2hkciB4ZGYKKwlqaXNoZHIgeworCQkvR290aGljQkJCLU1lZGl1bS04M3B2LVJLU0otSCBmaW5kZm9udCAxNCBzY2FsZWZvbnQgc2V0Zm9udAorCX0geworCQkvSGVsdmV0aWNhLUJvbGQvSUxoZWx2YiBJTEVuY29kaW5nIDAgUmVFbmNvZGUKKwkJL0lMaGVsdmIgZmluZGZvbnQgMTggc2NhbGVmb250IHNldGZvbnQKKwl9IGlmZWxzZQorCW5sIG5sIG5sCisgICAgICAgIGhsaW5lIGxlbmd0aCBkdXAgZHVwCisJMjUgZ3R7MjYgc3ViIGR1cCBobGluZSBleGNoKCggIC4uLikpcHV0fSB7cG9wIDB9aWZlbHNlCisJZXhjaCAxIHN1YiAtMSAzIC0xIHJvbGx7aGxpbmUgZXhjaCBnZXQgc2hvdyBubH1mb3IKKwlqaXNoZHIgeworCQkvR290aGljQkJCLU1lZGl1bS04M3B2LVJLU0otSCBmaW5kZm9udCA4IHNjYWxlZm9udCBzZXRmb250CisJfSB7CisJCS9IZWx2ZXRpY2EgZmluZGZvbnQgOCBzY2FsZWZvbnQgc2V0Zm9udAorCX0gaWZlbHNlCisJMSBpbmNoIGR1cCBNCisJZW1zZzEgMCBnZXQgMCBuZXsxIGluY2ggLjc1IGluY2ggTSBlbXNnMSBzaG93fWlmCisJZW1zZzIgMCBnZXQgMCBuZXsxIGluY2ggLjUgaW5jaCBNIGVtc2cyIHNob3d9aWYKK30gYmRmCislCisvbGxpbmUgMCBkZWYKKy9sb2dtZXsKKwkoXHRJbnRlcmxlYWY6OnBsMnBzIDUuNi4wXG4pcHJpbnQKKwlsbGluZSBsZW5ndGggZHVwIGR1cCAKKwk1IGd0IHs1IHN1Yn17cG9wIDB9aWZlbHNlCisJZXhjaCAxIHN1YiAtMSAzIC0xIHJvbGx7KFx0SW50ZXJsZWFmOjopcHJpbnQgbGxpbmUgZXhjaCBnZXQgcHJpbnQoXG4pcHJpbnR9Zm9yCisJZmx1c2gKK31iZGYKKyUKKwkvbXNnIC9wcmludCBsb2FkIGRlZgorL3Zja3sJJSBzdGFjayA9PiBtYWpvciBtaW5vciBzdWIKKwkzIGNvcHkKKwlNQUpPUiBuZSBleGNoIE1JTk9SIG5lIG9yIGV4Y2ggU1VCIG5lIG9yIHsKKwkJaGVhZGVycGFnZQorCQk0IHtubH0gcmVwZWF0CisJCShJbnRlcmxlYWY6OiBGQVRBTCBFUlJPUjogcHNwcm8ucHMgYW5kIHBsMnBzIHZlcnNpb25zIGRvIG5vdCBhZ3JlZS5cbikKKwkJZHVwIG1zZyBzaG93IG5sCisJCShJbnRlcmxlYWY6OiBwc3Byby5wcyBWZXJzaW9uIDUuNi4wXG4pIGR1cCBtc2cgc2hvdyBubAorCQkoSW50ZXJsZWFmOjogcGwycHMgVmVyc2lvbiApIGR1cCBtc2cgc2hvdworCQkzIHttZXNnIGN2cyBkdXAgbXNnIHNob3cgKC4pIGR1cCBtc2cgc2hvd30gcmVwZWF0CisJCXNob3dwYWdlCisJCXF1aXQgCisJfSB7MyBucG9wfSBpZmVsc2UKK31iZGYKKyUKKy9lbHsKKwltYXRyaXggY3VycmVudG1hdHJpeCA4IDEgcm9sbAorCXRyYW5zbGF0ZSByb3RhdGUgc2NhbGUgMCAwIDEgNSAtMiByb2xsIGFyYyBzZXRtYXRyaXgKK31iZGYKKy9hZGRjb25pY3sKKwltYXRyaXggY3VycmVudG1hdHJpeCA5IDEgcm9sbAorCXRyYW5zbGF0ZSByb3RhdGUgc2NhbGUKKwkwIDAgMSA2IC0zIHJvbGwgMSBlcXthcmN9e2FyY259aWZlbHNlCisJc2V0bWF0cml4Cit9YmRmCisvZHB7MSBzZXRsaW5lam9pbiAxIHNldGxpbmVjYXAgc3Ryb2tlfWJkZgorL0FMSUdOX05PTkUgMCBkZWYvQUxJR05fT1BFTiAxIGRlZi9BTElHTl9DTE9TRSAyIGRlZgorL1BQV0FESiBbMCAwIDQgOCAxMiAxNiAyMF1kZWYKKy9NSU5TQ0FMRSAuMSBkZWYKKyUKKy9wbERpY3QgNyBkaWN0IGlscHV0CisJL2Rpc3QgMCBkZWYgL3kxIDAgZGVmIC94MSAwIGRlZiAveW1vdmV0byAwIGRlZiAveG1vdmV0byAwIGRlZgorCS95MiAwIGRlZiAveDIgMCBkZWYKKy9wbGVueworCXBsRGljdCBiZWdpbgorCS9kaXN0IDAgZGVmCisJZmxhdHRlbnBhdGgKKwl7CisJCS95MSB4ZGYveDEgeGRmCisJCS95bW92ZXRvIHkxIGRlZi94bW92ZXRvIHgxIGRlZgorCX0KKwl7CisJCS95MiB4ZGYveDIgeGRmCisJCS9kaXN0IGRpc3QgeTIgeTEgc3ViIGR1cCBtdWwKKwkJeDIgeDEgc3ViIGR1cCBtdWwgYWRkIHNxcnQgYWRkIGRlZgorCQkveTEgeTIgZGVmL3gxIHgyIGRlZgorCX0KKwl7fQorCXsKKwkJL3kyIHltb3ZldG8gZGVmL3gyIHhtb3ZldG8gZGVmCisJCS9kaXN0IGRpc3QgeTIgeTEgc3ViIGR1cCBtdWwKKwkJeDIgeDEgc3ViIGR1cCBtdWwgYWRkIHNxcnQgYWRkIGRlZgorCQkveTEgeTIgZGVmL3gxIHgyIGRlZgorCX0KKwlwYXRoZm9yYWxsIGRpc3QKKwllbmQKK31pbGRlZgorJQorL3NwRGljdCAyMSBkaWN0IGlscHV0CisJL3N0eWxlIDAgZGVmL3dpZHRoIDAgZGVmL3BhdHRlcm4gMCBkZWYKKwkvc2NhbGV1cCAwIGRlZi9pbmR4IDAgZGVmL2FkaiAwIGRlZgorCS92YWwgMCBkZWYvaXN6ZXJvIDAgZGVmL29mZnNldCAwIGRlZgorCS9wYXR0ZXJubGVuIDAgZGVmL24gMCBkZWYvZXh0cmFsZW4gMCBkZWYKKwkvaGFsZnBhdGxlbiAwIGRlZi9zY2FsZTEgMCBkZWYvc2NhbGUyIDAgZGVmCisJL29mZnNldCAwIGRlZi9maXJzdGRhc2ggMCBkZWYvZGFzaHBjdCAwIGRlZgorCS9wYXRobGVuIDAgZGVmL3ggMCBkZWYveSAwIGRlZgorL3NldHBlbnBhdHsKKwlzcERpY3QgYmVnaW4KKwklCisJL3BhdHRlcm5sZW4gMCBkZWYvaXN6ZXJvIDAgZGVmCisJL3N0eWxlIHhkZi93aWR0aCB4ZGYvcGF0dGVybiB4ZGYKKwkvc2NhbGV1cCBEUEl4IDMwMCBkaXYgZGVmCisJL2luZHggd2lkdGggMSBhZGQgc2NhbGV1cCBkaXYgNCBkaXYgY3ZpIGRlZgorCWluZHggMSBndCBpbmR4IDcgbHQgYW5kIHsKKwkJL2FkaiBQUFdBREogaW5keCBnZXQgc2NhbGV1cCBtdWwgZGVmCisJCS9pbmR4IDAgZGVmCisJCXBhdHRlcm4geworCQkJL2lzemVybyBpbmR4IDIgbW9kIGRlZiBpc3plcm8KKwkJCTAgbmUge2FkaiBhZGQvdmFsIHhkZn0gey92YWwgeGRmfSBpZmVsc2UKKwkJCXBhdHRlcm4gaW5keCB2YWwgcHV0IC9pbmR4IGluZHggMSBhZGQgZGVmCisJCX0gZm9yYWxsCisJfWlmCisJJQorCS9wYXRobGVuIHBsZW4gZGVmCisJcGF0dGVybntwYXR0ZXJubGVuIGFkZC9wYXR0ZXJubGVuIHhkZn1mb3JhbGwKKwlzdHlsZSBBTElHTl9OT05FIGVxe31pZgorCSUKKwlzdHlsZSBBTElHTl9DTE9TRSBlcXsKKwkJL24gcGF0aGxlbiBwYXR0ZXJubGVuIGRpdiBjdmkgZGVmCisJCS9leHRyYWxlbiBwYXRobGVuIGN2aSBwYXR0ZXJubGVuIGN2aSBtb2QgZGVmCisJCS9oYWxmcGF0bGVuIHBhdHRlcm5sZW4gMiBkaXYgZGVmCisJCWV4dHJhbGVuIGhhbGZwYXRsZW4gZ3Qgey9uIG4gMSBhZGQgZGVmfSBpZgorCQluIDAgZXEgey9uIDEgZGVmfSBpZgorCQkvc2NhbGUxIHBhdGhsZW4gbiBwYXR0ZXJubGVuIG11bCBkaXYgZGVmCisJCXNjYWxlMSBNSU5TQ0FMRSBndHsKKwkJCS9pbmR4IDAgZGVmCisJCQlwYXR0ZXJueworCQkJCXNjYWxlMSBtdWwvdmFsIHhkZgorCQkJCXZhbCAwIGVxey92YWwgMSBkZWZ9aWYKKwkJCQlwYXR0ZXJuIGluZHggdmFsIGN2aSBwdXQKKwkJCQkvaW5keCBpbmR4IDEgYWRkIGRlZgorCQkJfWZvcmFsbAorCQl9aWYKKwkJL29mZnNldCBwYXR0ZXJuIDAgZ2V0IDIgZGl2IHJvdW5kIGRlZgorCX1pZgorCSUKKwlzdHlsZSBBTElHTl9PUEVOIGVxeworCQkvZmlyc3RkYXNoIHBhdHRlcm4gMCBnZXQgZGVmCisJCS9kYXNocGN0IGZpcnN0ZGFzaCBwYXR0ZXJubGVuIGRpdiBkZWYKKwkJL24gcGF0aGxlbiBwYXR0ZXJubGVuIGRpdiBkYXNocGN0IHN1YiBjdmkgZGVmCisJCS9zY2FsZTEgcGF0aGxlbiBuIGRhc2hwY3QgYWRkIHBhdHRlcm5sZW4gbXVsIGRpdiBkZWYKKwkJL3NjYWxlMiBwYXRobGVuIG4gZGFzaHBjdCBhZGQgMSBhZGQgcGF0dGVybmxlbiBtdWwgZGl2IGRlZgorCQkveCBzY2FsZTIgMSBzdWIgYWJzIGRlZgorCQkveSBzY2FsZTEgMSBzdWIgYWJzIGRlZgorCQl4IHkgbHR7L3NjYWxlMSBzY2FsZTIgZGVmfWlmCisJCXNjYWxlMSBNSU5TQ0FMRSBndHsKKwkJCS9pbmR4IDAgZGVmCisJCQlwYXR0ZXJueworCQkJCXNjYWxlMSBtdWwvdmFsIHhkZgorCQkJCXZhbCAwIGVxey92YWwgMSBkZWZ9aWYKKwkJCQlwYXR0ZXJuIGluZHggdmFsIGN2aSBwdXQKKwkJCQkvaW5keCBpbmR4IDEgYWRkIGRlZgorCQkJfWZvcmFsbAorCQkJL29mZnNldCAwIGRlZgorCQl9aWYKKwl9aWYKKwlwYXR0ZXJuIG9mZnNldCBzZXRkYXNoCisJZW5kCit9aWxkZWYKKyUKKy9ocG9zIDAgZGVmIC92cG9zIDAgZGVmIC9zRW5kIDAgZGVmCisvbXNwIDAgZGVmIC9uc3AgMCBkZWYgL3N0ciAwIGRlZgorL3N7CisJL21zcCB4ZGYvc0VuZCB4ZGYvbnNwIHhkZi92cG9zIHhkZi9ocG9zIHhkZi9zdHIgeGRmCisJaHBvcyB2cG9zIG1vdmV0bworCW1zcCAtMSBuZQorCXtzRW5kIGhwb3Mgc3ViIHN0ciBzdHJpbmd3aWR0aCBwb3Agc3ViIG5zcCBkaXYgMCBtc3Agc3RyIHdpZHRoc2hvd30KKwl7c3RyIHNob3d9CisJaWZlbHNlCit9YmRmCislCisvUkwgL3JsaW5ldG8gbGRmCisvUk0gL3Jtb3ZldG8gbGRmCisvUkMgL3JjdXJ2ZXRvIGxkZgorL3B0c3ogMCBkZWYKKy9lY3sKKwkvcHRzeiB4ZGYvdnBvcyB4ZGYvaHBvcyB4ZGYKKwlnc2F2ZQorCW5ld3BhdGggaHBvcyB2cG9zIG1vdmV0bworCXB0c3ogRFBJeCA3MiBkaXYgbXVsIDEwMDAgZGl2IGR1cCBuZWcgc2NhbGUKKwkzMCAtMTEwIFJNIDU3MyAwIFJMIDAgODczIFJMIC01NzMgMCBSTCAwIC04NzMgUkwKKwk0MCA4MzMgUk0gNDkzIDAgUkwgMCAtNzkzIFJMIC00OTMgMCBSTCAwIDc5MyBSTAorCTE5NCAtMTM3IFJNIDk0IDAgUkwgMCA5NCBSTCAtOTQgMCBSTCAwIC05NCBSTAorCTEwIC0xNzYgUk0gMCAtODMgLTE2MiAtOTUgLTE2MiAtMjU3IFJDCisJMCAtMTE5IDEwOSAtMTc0IDIwOCAtMTc0IFJDIDExNiAwIDIwMSA2OSAyMDEgMTcyIFJDCisJMCAzNCBSTCAtODMgMCBSTCA0IC02MyAtNiAtMTQ4IC0xMTkgLTE0OCBSQworCS03NCAwIC0xMjggNDggLTEyOCAxMjEgUkMgMCAxMzMgMTU4IDEzNiAxNTggMjUyIFJDCisJMCA0NSAwIDk1IDAgOTUgUkMgLTc1IDAgUkwgMCAwIDAgLTUyIDAgLTk1IFJDCisJY2xvc2VwYXRoIGZpbGwKKwlncmVzdG9yZQorfWJkZgorJQorL2lscntCaW5hcnlNb2Rle3JlYWRzdHJpbmd9e3JlYWRoZXhzdHJpbmd9aWZlbHNlfWJkZgorJQorL2Ric2l6ZSAwIGRlZi9jZiAwIGRlZgorL2NjZFsKKyAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCisgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAorIDB7MX17Mn17M317NH17NX17Nn17N317OH17OX17MTB9ezExfXsxMn17MTN9ezE0fXsxNX0KKyB7MTZ9ezE3fXsxOH17MTl9ezIwfXsyMX17MjJ9ezIzfXsyNH17MjV9ezI2fXsyN317Mjh9ezI5fXszMH17MzF9CisgezMyfXszM317MzR9ezM1fXszNn17Mzd9ezM4fXszOX17NDB9ezQxfXs0Mn17NDN9ezQ0fXs0NX17NDZ9ezQ3fQorIHs0OH17NDl9ezUwfXs1MX17NTJ9ezUzfXs1NH17NTV9ezU2fXs1N317NTh9ezU5fXs2MH17NjF9ezYyfXs2M30KKyB7dDFfMX17dDFfMn17MyB0MX17NCB0MX17NSB0MX17NiB0MX17NyB0MX17OCB0MX0KKyB7OSB0MX17MTAgdDF9ezExIHQxfXsxMiB0MX17MTMgdDF9ezE0IHQxfXsxNSB0MX17MTYgdDF9Cisge3QyXzF9e3QyXzJ9ezMgdDJ9ezQgdDJ9ezUgdDJ9ezYgdDJ9ezcgdDJ9ezggdDJ9CisgezkgdDJ9ezEwIHQyfXsxMSB0Mn17MTIgdDJ9e2RpdHRvfXtybn17cmF3fQorXWRlZgorL3QxdGFiWworIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKKyAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCisgMTYjMDAgMTYjMDEgMTYjMDIgMTYjMDQgMTYjMDggMTYjMTAgMTYjMjAgMTYjNDAKKyAxNiM4MCAxNiMwMyAxNiMwNiAxNiMwYyAxNiMxOCAxNiMzMCAxNiM2MCAxNiNjMAorIDE2IzA3IDE2IzBlIDE2IzFjIDE2IzM4IDE2IzcwIDE2I2UwIDE2IzBmIDE2IzFlCisgMTYjM2MgMTYjNzggMTYjZjAgMTYjMWYgMTYjM2UgMTYjN2MgMTYjZjggMTYjM2YKKyAxNiM3ZSAxNiNmYyAxNiM3ZiAxNiNmZSAxNiNmZiAxNiNhMCAxNiM5MCAxNiM4OAorIDE2Izg0IDE2IzgyIDE2IzgxIDE2IzUwIDE2IzQ4IDE2IzQ0IDE2IzQyIDE2IzQxCisgMTYjMjggMTYjMjQgMTYjMjIgMTYjMjEgMTYjMTQgMTYjMTIgMTYjMTEgMTYjMGEKKyAxNiMwOSAxNiMwNSAxNiMwMCAxNiMwMCAxNiMwMCAxNiMwMCAxNiMwMCAxNiMwMCAKK11kZWYKKy9ybnsKKwljZiByZWFkIHBvcCAzMiBzdWIgNiBiaXRzaGlmdCBjZiByZWFkIHBvcCAzMiBzdWIgb3IKK31iZGYKKy90MV8xeworCTIgY29weSAyIGNvcHkKKwlnZXQgY2YgcmVhZCBwb3AgdDF0YWIgZXhjaCBnZXQgeG9yIHB1dCAxCit9YmRmCisvdDFfMnsKKwkyIGNvcHkgMiBjb3B5CisJZ2V0IGNmIHJlYWQgcG9wIHQxdGFiIGV4Y2ggZ2V0IHhvciBwdXQgMSBhZGQKKwkyIGNvcHkgMiBjb3B5CisJZ2V0IGNmIHJlYWQgcG9wIHQxdGFiIGV4Y2ggZ2V0IHhvciBwdXQgMQorfWJkZgorL3QxeworCXsyIGNvcHkgMiBjb3B5IGdldCBjZiByZWFkIHBvcCB0MXRhYiBleGNoIGdldCB4b3IgcHV0IDEgYWRkfXJlcGVhdAorCTAKK31iZGYKKy9zMSAxIHNkZgorL3QyXzF7CisJMiBjb3B5IDIgY29weQorCWdldCBjZiBzMSByZWFkaGV4c3RyaW5nIHBvcCAwIGdldCB4b3IgcHV0IDEKK31iZGYKKy90Ml8yeworCTIgY29weSAyIGNvcHkKKwlnZXQgY2YgczEgcmVhZGhleHN0cmluZyBwb3AgMCBnZXQgeG9yIHB1dCAxIGFkZAorCTIgY29weSAyIGNvcHkKKwlnZXQgY2YgczEgcmVhZGhleHN0cmluZyBwb3AgMCBnZXQgeG9yIHB1dCAxCit9YmRmCisvdDJ7CisJezIgY29weSAyIGNvcHkgZ2V0IGNmIHMxIHJlYWRoZXhzdHJpbmcgcG9wIDAgZ2V0IHhvciBwdXQgMSBhZGR9cmVwZWF0CisJMAorfWJkZgorL2RpdHRveworCWRic2l6ZQorfWJkZgorL3Jhd3sKKwkyIGNvcHkgcG9wCisJY2YgZXhjaCByZWFkaGV4c3RyaW5nIHBvcCBwb3AKKwlkYnNpemUKK31iZGYKKy9kbHsKKwlkbGluZSAwIGNmIGVzIHJlYWRsaW5lIHBvcAorCXtjY2QgZXhjaCBnZXQgZXhlYyBhZGR9Zm9yYWxsIHBvcAorCTAgZGJzaXplIGdldGludGVydmFsCit9YmRmCisvcmhleCB7Y3VycmVudGZpbGUgZXhjaCByZWFkaGV4c3RyaW5nIHBvcH0gYmRmCisvbmVnMVNldHsKKyAJMCAxIDIgaW5kZXggbGVuZ3RoIDEgc3ViIHsxIGluZGV4IGV4Y2ggMjU1IHB1dH0gZm9yCisJcG9wCit9YmRmCisvc2NyZWVuU2V0eworCWN1cnJlbnRzY3JlZW4KKwkzIGluZGV4IGR1cCBsZW5ndGggMCBlcSB7cG9wfSB7ZXhjaCBwb3B9IGlmZWxzZQorCWV4Y2gKKwk0IGluZGV4IGR1cCAtMSBlcSB7cG9wfSB7ZXhjaCBwb3B9IGlmZWxzZQorCWV4Y2gKKwkzIC0xIHJvbGwKKwk1IGluZGV4IGR1cCAtMSBlcSB7cG9wfSB7ZXhjaCBwb3B9IGlmZWxzZQorCTMgMSByb2xsCisJc2V0c2NyZWVuCisJMyBucG9wCit9YmRmCisvdERpY3QgOSBkaWN0IGlscHV0CisJL21hcHN6IDAgZGVmL3RmIDAgZGVmCisJL3dtYXAgMCBkZWYvYm1hcCAwIGRlZi9nbWFwIDAgZGVmL3JtYXAgMCBkZWYvY2xyIDAgZGVmCisvdHJhbnMgeworCXREaWN0IGJlZ2luCisJL21hcHN6IHhkZi93bWFwIHhkZi9ibWFwIHhkZi9nbWFwIHhkZi9ybWFwIHhkZi9jbHIgeGRmCisJL3RmIHtleGNoIG1hcHN6IG11bCByb3VuZCBjdmkgZ2V0fSBiZGYKKwlzeXN0ZW1kaWN0IC9zZXRjb2xvcnRyYW5zZmVyIGtub3duIGNsciBhbmR7CisJCXJtYXAgbGVuZ3RoIDAgbmUge3tybWFwIHRmfX0ge3t9fSBpZmVsc2UKKwkJZ21hcCBsZW5ndGggMCBuZSB7e2dtYXAgdGZ9fSB7e319IGlmZWxzZQorCQlibWFwIGxlbmd0aCAwIG5lIHt7Ym1hcCB0Zn19IHt7fX0gaWZlbHNlCisJCXt9IHNldGNvbG9ydHJhbnNmZXIKKwl9eworCQl3bWFwIGxlbmd0aCAwIG5lIHsKKwkJIFtjdXJyZW50dHJhbnNmZXIgL2V4ZWMgbG9hZCB3bWFwIC90ZiBsb2FkIC9leGVjIGxvYWRdCisJCSBjdnggc2V0dHJhbnNmZXIKKwkJfSBpZgorCX0gaWZlbHNlCisJZW5kCit9aWxkZWYKKy9jRGljdCA2IGRpY3QgaWxwdXQKKwkvc2wgMCBkZWYvciAwIGRlZi9nIDAgZGVmL2IgMCBkZWYvdyAwIGRlZgorL2NscmltZ3sKKwljRGljdCBiZWdpbgorCS9zbCB4ZGYKKwkvciBzbCBzZGYvZyBzbCBzZGYvYiBzbCBzZGYvdyBzbCBzZGYKKworCXN5c3RlbWRpY3QgL2NvbG9yaW1hZ2Uga25vd24geworCQl7ciByaGV4fSB7ZyByaGV4fSB7YiByaGV4IHcgcmhleCBwb3B9IHRydWUgMyBjb2xvcmltYWdlCisJfXsKKwkJe3IgcmhleCBwb3AgZyByaGV4IHBvcCBiIHJoZXggcG9wIHcgcmhleH0gaW1hZ2UKKwl9IGlmZWxzZQorCWVuZAorfWlsZGVmCisvaURpY3QgOSBkaWN0IGlscHV0CisJL2Ric2l6ZSAwIGRlZi9jZiAwIGRlZi9tc2sgMCBkZWYvY21wcnMgMCBkZWYKKwkvZXMgMCBkZWYvZGxpbmUgMCBkZWYKKy9pbGltZ3sKKwlpRGljdCBiZWdpbgorCS9jbXBycyB4ZGYvbXNrIHhkZi9kYnNpemUgeGRmCisJL2RsaW5lIGRic2l6ZSBzZGYgZGxpbmUgbmVnMVNldAorCisJbXNrIDEgZXEgeworCQljbXBycyAxIGVxIHsKKwkJCS9jZiBjdXJyZW50ZmlsZSBkZWYvZXMgZGJzaXplIHNkZgorCQkJe2RsfWltYWdlbWFzaworCQl9CisJCXt7ZGxpbmUgcmhleH0gaW1hZ2VtYXNrfSBpZmVsc2UKKyAJfQorIAl7e2RsaW5lIHJoZXh9IGltYWdlfSBpZmVsc2UKKwllbmQKK31pbGRlZgorL2JsYW5rSW1neworCS9kYnNpemUgeGRmCisJL3NjYW5saW5lIGRic2l6ZSBzZGYgc2NhbmxpbmUgbmVnMVNldAorCXtzY2FubGluZX1pbWFnZQorfWRlZgorJQorL3dtb2RlIDAgZGVmL25ld2VuY29kaW5nIDAgZGVmL25ld25hbWUgMCBkZWYKKy9SZUVuY29kZXsKKwkvd21vZGUgeGRmL25ld2VuY29kaW5nIHhkZi9uZXduYW1lIHhkZgorCWZpbmRmb250IGR1cCBtYXhsZW5ndGggMSBhZGQgZGljdCBiZWdpbgorCXsgMSBpbmRleCAvRklEIG5lCisJCXtkZWZ9IHtwb3AgcG9wfSBpZmVsc2UKKwl9IGZvcmFsbAorCWN1cnJlbnRkaWN0IGVuZAorCWR1cCAvRm9udE5hbWUgbmV3bmFtZSBwdXQKKwluZXdlbmNvZGluZyAtMSBuZSB7ZHVwIC9FbmNvZGluZyBuZXdlbmNvZGluZyBwdXR9IGlmCisgICAgICAgIHdtb2RlIDEgZXEgd21vZGUgMiBlcSBvcntkdXAgL1dNb2RlIDEgcHV0fWlmCisgICAgICAgIHdtb2RlIDIgZXF7ZHVwIC9DRGV2UHJvYyB7cG9wIHBvcCBwb3AgcG9wIDAgZXhjaCAtMTAwMCBleGNoIDIgZGl2IDEwMDB9IHB1dH1pZgorCW5ld25hbWUgZXhjaCBkZWZpbmVmb250IHBvcAorfSBiZGYKKy9jaGFyc3RyIDAgZGVmL2VuY29kaW5nIDAgZGVmL2kgMCBkZWYKKy9pbnNlcnRjaGFybnVteworCS9jaGFyc3RyIDEyIHNkZgorCSUKKwkvZW5jb2RpbmcgeGRmL2kgeGRmCisJKGNoYXIpY2hhcnN0ciBjb3B5IHBvcAorCWkgaXN0ciBjdnMgcG9wCisJY2hhcnN0ciA0IDMgc3RyaW5nIHB1dGludGVydmFsCisJZW5jb2RpbmcgaSBjaGFyc3RyIGN2biBwdXQKK31iZGYKK0lMRW5jb2RpbmcgMFsKKy9BYWN1dGUvQWNpcmN1bWZsZXgvQWRpZXJlc2lzL0FncmF2ZS9BcmluZy9BdGlsZGUvQ2NlZGlsbGEvRWFjdXRlCisvRWNpcmN1bWZsZXgvRWRpZXJlc2lzL0VncmF2ZS9JYWN1dGUvSWNpcmN1bWZsZXgvSWRpZXJlc2lzL0lncmF2ZS9OdGlsZGUKKy9PYWN1dGUvT2NpcmN1bWZsZXgvT2RpZXJlc2lzL09ncmF2ZS9PdGlsZGUvU2Nhcm9uL1VhY3V0ZS9VY2lyY3VtZmxleAorL1VkaWVyZXNpcy9VZ3JhdmUvWWRpZXJlc2lzL1pjYXJvbi9jaGFyMjgvY2hhcjI5L2NoYXIzMC9jaGFyMzEKKy9zcGFjZS9leGNsYW0vcXVvdGVkYmwvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9hbXBlcnNhbmQvcXVvdGVyaWdodAorL3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaAorL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuCisvZWlnaHQvbmluZS9jb2xvbi9zZW1pY29sb24vbGVzcy9lcXVhbC9ncmVhdGVyL3F1ZXN0aW9uCisvYXQvQS9CL0MvRC9FL0YvRworL0gvSS9KL0svTC9NL04vTworL1AvUS9SL1MvVC9VL1YvVworL1gvWS9aL2JyYWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0cmlnaHQvYXNjaWljaXJjdW0vdW5kZXJzY29yZQorL3F1b3RlbGVmdC9hL2IvYy9kL2UvZi9nCisvaC9pL2ovay9sL20vbi9vCisvcC9xL3Ivcy90L3Uvdi93CisveC95L3ovYnJhY2VsZWZ0L2Jhci9icmFjZXJpZ2h0L2FzY2lpdGlsZGUvcXVvdGVkYmxsZWZ0CisvYWFjdXRlL2FjaXJjdW1mbGV4L2FkaWVyZXNpcy9hZ3JhdmUvYXJpbmcvYXRpbGRlL2NjZWRpbGxhL2VhY3V0ZQorL2VjaXJjdW1mbGV4L2VkaWVyZXNpcy9lZ3JhdmUvaWFjdXRlL2ljaXJjdW1mbGV4L2lkaWVyZXNpcy9pZ3JhdmUvbnRpbGRlCisvb2FjdXRlL29jaXJjdW1mbGV4L29kaWVyZXNpcy9vZ3JhdmUvb3RpbGRlL3NjYXJvbi91YWN1dGUvdWNpcmN1bWZsZXgKKy91ZGllcmVzaXMvdWdyYXZlL3lkaWVyZXNpcy96Y2Fyb24vY2hhcjE1Ni9jaGFyMTU3L2NoYXIxNTgvY2hhcjE1OQorL2NoYXIxNjAvZXhjbGFtZG93bi9jZW50L3N0ZXJsaW5nL2ZyYWN0aW9uL3llbi9mbG9yaW4vc2VjdGlvbgorL2N1cnJlbmN5L3F1b3Rlc2luZ2xlL3F1b3RlZGJsbGVmdC9ndWlsbGVtb3RsZWZ0L2d1aWxzaW5nbGxlZnQvZ3VpbHNpbmdscmlnaHQvZmkvZmwKKy9jaGFyMTc2L2VuZGFzaC9kYWdnZXIvZGFnZ2VyZGJsL3BlcmlvZGNlbnRlcmVkL2NoYXIxODEvcGFyYWdyYXBoL2J1bGxldAorL3F1b3Rlc2luZ2xiYXNlL3F1b3RlZGJsYmFzZS9xdW90ZWRibHJpZ2h0L2d1aWxsZW1vdHJpZ2h0L2VsbGlwc2lzL3BlcnRob3VzYW5kL2NoYXIxOTAvcXVlc3Rpb25kb3duCisvY2hhcjE5Mi9ncmF2ZS9hY3V0ZS9jaXJjdW1mbGV4L3RpbGRlL21hY3Jvbi9icmV2ZS9kb3RhY2NlbnQKKy9kaWVyZXNpcy9jaGFyMjAxL3JpbmcvY2VkaWxsYS9jaGFyMjA0L2h1bmdhcnVtbGF1dC9vZ29uZWsvY2Fyb24KKy9lbWRhc2gvY2hhcjIwOS9jaGFyMjEwL2NoYXIyMTEvY2hhcjIxMi9jaGFyMjEzL2NoYXIyMTQvY2hhcjIxNQorL2NoYXIyMTYvY2hhcjIxNy9jaGFyMjE4L2NoYXIyMTkvY2hhcjIyMC9jaGFyMjIxL2NoYXIyMjIvY2hhcjIyMworL2NoYXIyMjQvQUUvY2hhcjIyNi9vcmRmZW1pbmluZS9jaGFyMjI4L2NoYXIyMjkvY2hhcjIzMC9jaGFyMjMxCisvTHNsYXNoL09zbGFzaC9PRS9vcmRtYXNjdWxpbmUvY2hhcjIzNi9jaGFyMjM3L2NoYXIyMzgvY2hhcjIzOQorL2NoYXIyNDAvYWUvY2hhcjI0Mi9jaGFyMjQzL2NoYXIyNDQvZG90bGVzc2kvY2hhcjI0Ni9jaGFyMjQ3CisvbHNsYXNoL29zbGFzaC9vZS9nZXJtYW5kYmxzL2NoYXIyNTIvY2hhcjI1My9jaGFyMjU0L2NoYXIyNTUKK11wdXRpbnRlcnZhbAorSUxTeW1CRW5jIDMyWworL3NwYWNlL2xvZ2ljYWxvci9hcnJvd3JpZ2h0L2Fycm93ZGJsbGVmdC9hcnJvd2RibHVwCisvYXJyb3dkYmxyaWdodC9sb3plbmdlL2Fycm93aG9yaXpleC9hbmdsZWxlZnQvcmVnaXN0ZXJzYW5zCisvVXBzaWxvbjEvcGx1c21pbnVzL3NlY29uZC9hbmdsZS9ncmVhdGVyZXF1YWwKKy9yYWRpY2FsL2VsbGlwc2lzL0lmcmFrdHVyL3NwYWRlL2xlc3NlcXVhbAorL21pbnV0ZS9kZWdyZWUvZnJhY3Rpb24vZmxvcmluL2luZmluaXR5CisvYXBwcm94ZXF1YWwvaW50ZWdyYWwvcHJvcGVyc3VwZXJzZXQvcGFyZW5yaWdodGJ0L2Fycm93dXAKKy9icmFja2V0cmlnaHR0cC9hbGVwaC9hcnJvd2RibGJvdGgvYnJhY2VyaWdodGJ0L2ludGVncmFsYnQKKy9ub3RzdWJzZXQvYnJhY2tldGxlZnRidC90cmFkZW1hcmtzYW5zL2JyYWNlbGVmdHRwL2JyYWNlbGVmdG1pZAorL2JyYWNlbGVmdGJ0L2JyYWNrZXRsZWZ0dHAvYnJhY2VleC9hcHBsZS9hbmdsZXJpZ2h0CisvcGFyZW5yaWdodGV4L3BhcmVucmlnaHR0cC9hcnJvd2Rvd24vZGl2aWRlL2VsZW1lbnQKKy9zdW1tYXRpb24vYnJhY2tldGxlZnRleC9wYXJlbmxlZnR0cC9wYXJlbmxlZnRidC9kb3RtYXRoCisvY29weXJpZ2h0c2Fucy9pbnRlZ3JhbGV4L3BhcmVubGVmdGV4L2ludGVncmFsdHAvcmVnaXN0ZXJzZXJpZgorL2ludGVyc2VjdGlvbi90cmFkZW1hcmtzZXJpZi9hcnJvd2RibGRvd24vZ3JhZGllbnQvbG9naWNhbG5vdAorL3JlZmxleHN1YnNldC9lcXVpdmFsZW5jZS9wcm9wZXJzdWJzZXQvcGFydGlhbGRpZmYvYXJyb3dib3RoCisvY2lyY2xlbXVsdGlwbHkvaGVhcnQvYnJhY2tldHJpZ2h0ZXgvYnJhY2VyaWdodG1pZC9lbXB0eXNldAorL2JyYWNrZXRyaWdodGJ0L1JmcmFrdHVyL3Byb3BvcnRpb25hbC9yZWZsZXhzdXBlcnNldC9jYXJyaWFnZXJldHVybgorL25vdGVxdWFsL25vdGVsZW1lbnQvZGlhbW9uZC9jbHViL2JyYWNlcmlnaHR0cAorL2Fycm93bGVmdC93ZWllcnN0cmFzcy9idWxsZXQvY2lyY2xlcGx1cy9tdWx0aXBseQorL2Fycm93dmVydGV4L2NvcHlyaWdodHNlcmlmL3VuaW9uL3Byb2R1Y3QvbG9naWNhbGFuZAorXXB1dGludGVydmFsCiswIDEgMzJ7SUxTeW1CRW5jIGluc2VydGNoYXJudW19Zm9yCisxMjcgMSAyNTV7SUxTeW1CRW5jIGluc2VydGNoYXJudW19Zm9yCitJTERpbmdiYXRzIDBbCisvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCisvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCisvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCisvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCisvc3BhY2UvYTEvYTIvYTIwMi9hMy9hNC9hNS9hMTE5CisvYTExOC9hMTE3L2ExMS9hMTIvYTEzL2ExNC9hMTUvYTE2CisvYTEwNS9hMTcvYTE4L2ExOS9hMjAvYTIxL2EyMi9hMjMKKy9hMjQvYTI1L2EyNi9hMjcvYTI4L2E2L2E3L2E4CisvYTkvYTEwL2EyOS9hMzAvYTMxL2EzMi9hMzMvYTM0CisvYTM1L2EzNi9hMzcvYTM4L2EzOS9hNDAvYTQxL2E0MgorL2E0My9hNDQvYTQ1L2E0Ni9hNDcvYTQ4L2E0OS9hNTAKKy9hNTEvYTUyL2E1My9hNTQvYTU1L2E1Ni9hNTcvYTU4CisvYTU5L2E2MC9hNjEvYTYyL2E2My9hNjQvYTY1L2E2NgorL2E2Ny9hNjgvYTY5L2E3MC9hNzEvYTcyL2E3My9hNzQKKy9hMjAzL2E3NS9hMjA0L2E3Ni9hNzcvYTc4L2E3OS9hODEKKy9hODIvYTgzL2E4NC9hOTcvYTk4L2E5OS9hMTAwLy5ub3RkZWYKKy8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKKy8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKKy8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi9hMjA1L2EyMDYvYTg1L2E4Ni9hODcKKy9hODgvYTg5L2E5MC9hOTEvYTkyL2E5My9hOTQvYTk1CisvYTk2L2ExMDEvYTEwMi9hMTAzL2ExMDQvYTEwNi9hMTA3L2ExMDgKKy9hMTEyL2ExMTEvYTExMC9hMTA5L2ExMjAvYTEyMS9hMTIyL2ExMjMKKy9hMTI0L2ExMjUvYTEyNi9hMTI3L2ExMjgvYTEyOS9hMTMwL2ExMzEKKy9hMTMyL2ExMzMvYTEzNC9hMTM1L2ExMzYvYTEzNy9hMTM4L2ExMzkKKy9hMTQwL2ExNDEvYTE0Mi9hMTQzL2ExNDQvYTE0NS9hMTQ2L2ExNDcKKy9hMTQ4L2ExNDkvYTE1MC9hMTUxL2ExNTIvYTE1My9hMTU0L2ExNTUKKy9hMTU2L2ExNTcvYTE1OC9hMTU5L2ExNjAvYTE2MS9hMTYzL2ExNjQKKy9hMTk2L2ExNjUvYTE5Mi9hMTY2L2ExNjcvYTE2OC9hMTY5L2ExNzAKKy9hMTcxL2ExNzIvYTE3My9hMTYyL2ExNzQvYTE3NS9hMTc2L2ExNzcKKy9hMTc4L2ExNzkvYTE5My9hMTgwL2ExOTkvYTE4MS9hMjAwL2ExODIKKy8ubm90ZGVmL2EyMDEvYTE4My9hMTg0L2ExOTcvYTE4NS9hMTk0L2ExOTgKKy9hMTg2L2ExOTUvYTE4Ny9hMTg4L2ExODkvYTE5MC9hMTkxLy5ub3RkZWZdcHV0aW50ZXJ2YWwKKyUKKy9uZXdGb250Cit7CisJZmluZGZvbnQgaW1hdHJpeCBtYWtlZm9udAorCWV4Y2ggRFBJeCA3MiBkaXYgbXVsIHNjYWxlZm9udAorfSBiZGYKKy93bW9kZSAwIGRlZi9lbmNvZGluZyAwIGRlZi9JTGZvbnQgMCBkZWYvUFNmb250IDAgZGVmL3B0c2l6ZSAwIGRlZgorL2RlY2xhcmVORm9udHsKKwkvd21vZGUgeGRmL2VuY29kaW5nIHhkZi9JTGZvbnQgeGRmL1BTZm9udCB4ZGYvcHRzaXplIHhkZgorCUZvbnREaXJlY3RvcnkgSUxmb250IGtub3duIGZhbHNlIGVxe1BTZm9udCBJTGZvbnQgZW5jb2Rpbmcgd21vZGUgUmVFbmNvZGV9aWYKKwlwdHNpemUgSUxmb250IG5ld0ZvbnQKK31iZGYKKy9kZWNsYXJlUkZvbnR7CSUgc3RhY2sgPT4gUHJpbnRlcmxlYWYgRm9udCBOYW1lCisJUFNmb250b2JqIGV4Y2ggMiBjb3B5IGR1cCAxMCBkaWN0IGR1cCBiZWdpbgorCS9Gb250VHlwZSAzIGRlZgorCS9Gb250TWF0cml4W0RQSXggMzAwIGRpdiAwIDAgRFBJeSAzMDAgZGl2IDAgMF1kZWYKKwkvRm9udEJCb3hbMCAwIDAgMF1kZWYKKwkvRW5jb2RpbmcgSUxFbmNvZGluZyBkZWYKKwkvQnVpbGRDaGFyeworCQkwIGJlZ2luCisJCS9jaGFyIHhkZgorCQkvZm9udGRpY3QgeGRmCisJCS9jaGFybmFtZSBmb250ZGljdC9FbmNvZGluZyBnZXQgY2hhciBnZXQgZGVmCisJCS9jaGFyaW5mbyBmb250ZGljdC9DaGFyRGF0YSBnZXQgY2hhcm5hbWUgZ2V0IGRlZgorCQkvd3ggY2hhcmluZm8gMCBnZXQgZGVmCisJCWNoYXJpbmZvIDAgZ2V0IEJPR1VTV0lEVEggZXEKKwkJe3B1dGVycmNoYXJ9CisJCXsKKwkJCS9jaGFyYmJveCBjaGFyaW5mbyAxIDQgZ2V0aW50ZXJ2YWwgZGVmCisJCQl3eCAwIGNoYXJiYm94IGFsb2FkIHBvcCBzZXRjYWNoZWRldmljZQkKKwkJCWNoYXJpbmZvIDUgZ2V0IGNoYXJpbmZvIDYgZ2V0IHRydWUKKwkJCWZvbnRkaWN0L2ltYWdlbWFza21hdHJpeCBnZXQKKwkJCWR1cCA1IGNoYXJpbmZvIDggZ2V0IHB1dAorCQkJZHVwIDQgY2hhcmluZm8gNyBnZXQgcHV0CisJCQljaGFyaW5mbyA5IGdldAorCQkJaW1hZ2VtYXNrCisJCX0KKyAgCQlpZmVsc2UKKwkJZW5kCisgCX1kZWYKKyAJL0J1aWxkQ2hhciBsb2FkIDAgNyBkaWN0IHB1dAorIAkvaW1hZ2VtYXNrbWF0cml4WzEgMCAwIDEgMCAwXWRlZgorIAkvQ2hhckRhdGEgTUFYQ0hBUlMgZGljdCBkZWYKKyAJZW5kCisgCWRlZmluZWZvbnQgcHV0IGdldAorIAkvQ2hhckRhdGEgZ2V0L3NwYWNlWzE2IDAgMCAxIDEgMTYgMSAwIDBbPDAwPl1jdnhdcHV0Cit9ZGVmCislCisvZWdEaWN0IDMgZGljdCBpbHB1dAorCS9jaG51bSAwIGRlZi9mb250IDAgZGVmL3cgMCBkZWYKKy9udW1Mb2FkRW1wdHlHbHlwaHsKKwllZ0RpY3QgYmVnaW4KKwkvY2hudW0geGRmL2ZvbnQgeGRmL3cgeGRmCisJdyBmb250IFBTZm9udG9iaiBmb250IGdldC9FbmNvZGluZyBnZXQgY2hudW0gZ2V0CisJTG9hZEVtcHR5R2x5cGgKKwllbmQKK31pbGRlZgorL3B1dGVycmNoYXJ7CisJUFNmb250b2JqIGVycmZvbnRuYW1lIGdldCBkdXAKKwkvQnVpbGRDaGFyIGdldCBlcnJjaGFybm8gZXhjaCBleGVjCisJKFx0SW50ZXJsZWFmOjpvdXQgb2YgVk0gbG9hZGluZyBiaXRtYXAoPykuIFRyeSBicmVha2luZyB1cCBkb2N1bWVudFxuKQorCWR1cCBwcmludCBmbHVzaAorCWVtc2cxIGNvcHkgcG9wCit9ZGVmCisvUVVJVHsKKwkoXHRJbnRlcmxlYWY6OmNvbXBsZXRlbHkgb3V0IG9mIG1lbW9yeS4gXG5cdFRyeSBicmVha2luZyB1cCB0aGUgZG9jdW1lbnQgXG4pCisJZHVwIHByaW50IGZsdXNoCisJZW1zZzIgY29weSBwb3Agc3RvcAorfWRlZgorL2xnRGljdCAxNSBkaWN0IGlscHV0CisJL2NoYXJubyAwIGRlZi9mb250bmFtZSAwIGRlZi9oZWlnaHQgMCBkZWYvd2lkdGggMCBkZWYKKwkvaHNpemUgMCBkZWYvbmJ5dGVzIDAgZGVmL2dseXBoIDAgZGVmL3R4IDAgZGVmL3R5IDAgZGVmL2xseSAwIGRlZgorCS9sbHggMCBkZWYvdXJ4IDAgZGVmL2xzYiAwIGRlZi9nbHlwaCAwIGRlZi9Ob1ZNSGVhZCAwIGRlZgorL0xvYWRHbHlwaHsKKwlsZ0RpY3QgYmVnaW4KKwklCisJL2NoYXJubyB4ZGYvZm9udG5hbWUgeGRmL2hlaWdodCB4ZGYvdmFkaiB4ZGYvd2lkdGggeGRmL2hzaXplIHhkZi9sc2IgeGRmCisJL05vVk1IZWFkIHZtc3RhdHVzIGV4Y2ggc3ViIGV4Y2ggcG9wIGR1cAorCSBWTUhFQUQgMiBpZGl2IGx0e1FVSVR9aWYKKwkgVk1IRUFEIGx0e3RydWV9e2ZhbHNlfWlmZWxzZSBkZWYKKwkvbmJ5dGVzIGhzaXplIDE1IGFkZCAxNiBpZGl2IDIgbXVsIGhlaWdodCBtdWwgZGVmCQorCU5vVk1IZWFkIG5vdHsvZ2x5cGggbmJ5dGVzIHNkZn1pZgorCWN1cnJlbnRmaWxlIE5vVk1IZWFkIHt0cmFzaGhlYXAgMCBuYnl0ZXMgZ2V0aW50ZXJ2YWx9e2dseXBofWlmZWxzZQorCXJlYWRoZXhzdHJpbmcgMiBucG9wCisJL2hzaXplIGhzaXplIDE1IGFkZCAxNiBpZGl2IDE2IG11bCBkZWYKKwkvbGx5IGhlaWdodCB2YWRqIGFkZCBkZWYKKwkvdXJ4IGhzaXplIGxzYiBhZGQgZGVmCisJL3R4IGxzYiBuZWcgZGVmCisJL3R5IHZhZGogbmVnIGRlZgorCVBTZm9udG9iaiBmb250bmFtZSBnZXQgZHVwIC9FbmNvZGluZyBnZXQgY2hhcm5vIGdldAorCWV4Y2ggL0NoYXJEYXRhIGdldCBleGNoCisJTm9WTUhlYWQge1tCT0dVU1dJRFRIXX0KKwl7W3dpZHRoIGxzYiBsbHkgdXJ4IHZhZGogaHNpemUgaGVpZ2h0IHR4IHR5W2dseXBoXWN2eF19aWZlbHNlCisJcHV0IGVuZAorfWlsZGVmCislCisJL3NjZnJxIDAgZGVmL3NjYW5nIDAgZGVmCisvc29saWRGaWxseworCS9zY2ZycSB4ZGYvc2NhbmcgeGRmL3NjcHJvYyB4ZGYKKwlnc2F2ZQorIAlzY2ZycSAtMSBuZSBzY2FuZyAtMSBuZSBvciAvc2Nwcm9jIGxvYWQgbGVuZ3RoIDAgbmUgb3J7CisJCXNjZnJxIHNjYW5nIC9zY3Byb2MgbG9hZCBzY3JlZW5TZXQKKyAJfWlmCisJZW9maWxsCisJZ3Jlc3RvcmUKK31iZGYKKwkvcGF0Y2hhciAwIGRlZi9wZmZvbnRuYW1lIDAgZGVmCisJL2ZpbGxwYXRzZXQgey9wYXRjaGFyIHhkZi9wZmZvbnRuYW1lIHhkZn0gZGVmCisJL3BhdHN0ciAxIHNkZgorL3BhdHRlcm5GaWxseworCS9zY2ZycSB4ZGYvc2NhbmcgeGRmL3NjcHJvYyB4ZGYKKwlnc2F2ZSAKKyAJc2NmcnEgLTEgbmUgc2NhbmcgLTEgbmUgb3IgL3NjcHJvYyBsb2FkIGxlbmd0aCAwIG5lIG9yeworCQlzY2ZycSBzY2FuZyAvc2Nwcm9jIGxvYWQgc2NyZWVuU2V0CisgCX1pZgorCWN1cnJlbnRmb250IFBTZm9udG9iaiBwZmZvbnRuYW1lIGdldCBzZXRmb250IHBGaWxsCisJZHVwIG51bGwgbmV7c2V0Zm9udH17cG9wfWlmZWxzZQorCWdyZXN0b3JlCit9YmRmCisvcGZEaWN0IDcgZGljdCBpbHB1dAorCS9wYXR5IDAgZGVmL3BhdHggMCBkZWYvI2NoYXJzIDAgZGVmCisJL3J5IDAgZGVmL3J4IDAgZGVmL2x5IDAgZGVmL2x4IDAgZGVmCisvcEZpbGx7CisJcGZEaWN0IGJlZ2luCisJZ3NhdmUgMSAxIDEgc2V0cmdiY29sb3IgZW9maWxsIGdyZXN0b3JlCisJJSBzZXR1cCBmYWN0b3JzCisJcGF0c3RyIDAgcGF0Y2hhciBwdXQKKwlwYXRzdHIgc3RyaW5nd2lkdGggcG9wCisJL3BhdHkgZXhjaCBkZWYvcGF0eCBwYXR5IGRlZgorCSUgc2V0dXAgcmVnaW9uCisJZW9jbGlwCQorCXBhdGhiYm94CisJL3J5IGV4Y2ggZmxvb3IgZGVmCisJL3J4IGV4Y2ggZmxvb3IgZGVmCisJL2x5IGV4Y2ggY2VpbGluZyBjdmkKKwlkdXAgMCBsdHtwYXR5IHN1Yn1pZiBjdmkKKwlkdXAgcGF0eSBjZWlsaW5nIGN2aSBtb2Qgc3ViIGRlZgorCS9seCBleGNoIGNlaWxpbmcgY3ZpCisJZHVwIDAgbHR7cGF0eCBzdWJ9aWYgY3ZpCisJZHVwIHBhdHggY2VpbGluZyBjdmkgbW9kIHN1YiBkZWYKKwkvcnkgcnkgcGF0eSBhZGQgZGVmCisJL2x5IGx5IHBhdHkgc3ViIGRlZgorCW5ld3BhdGgKKwklIGJsYXN0Y2hhcnMKKwkvI2NoYXJzIHJ4IGx4IHN1YiBwYXR4IGRpdiBjZWlsaW5nIGN2aSBkZWYKKwlseSBwYXR5IHJ5e2x4IGV4Y2ggTSAjY2hhcnN7cGF0c3RyIHNob3d9cmVwZWF0fWZvcgorCW5ld3BhdGgKKwllbmQKK31pbGRlZgorJQorL0JlZ2luRXBzZnsKKwkvSUxCNEVwc2Ygc2F2ZSBkZWYKKwkvY2xwe25ld3BhdGggbW92ZXRvIGxpbmV0byBsaW5ldG8gbGluZXRvIGNsb3NlcGF0aCBjbGlwfSBkZWYKKwkvSUxEaWN0Q250IGNvdW50ZGljdHN0YWNrIGRlZgorCS9JTE9wQ250IGNvdW50IDEgc3ViIGRlZgorCTAgc2V0Z3JheSAwIHNldGxpbmVjYXAKKwkxIHNldGxpbmV3aWR0aCAwIHNldGxpbmVqb2luCisJMTAgc2V0bWl0ZXJsaW1pdCBbXSAwIHNldGRhc2ggbmV3cGF0aAorCS9zaG93cGFnZSB7fSBkZWYKK31kZWYKKy9FbmRFcHNmeworCWNvdW50IElMT3BDbnQgc3ViIHtwb3B9IHJlcGVhdAorCWNvdW50ZGljdHN0YWNrIElMRGljdENudCBzdWIge2VuZH0gcmVwZWF0CisJSUxCNEVwc2YgcmVzdG9yZQorfWRlZgorJQorL2NscHtuZXdwYXRoIE0gTCBMIEwgY2xvc2VwYXRoIGNsaXB9YmRmCislCisJL2NtIDAgZGVmL3BndyAwIGRlZi9wZ2wgMCBkZWYvY24gMCBkZWYvcHcgMCBkZWYKKwkvcHcyIDAgZGVmL2xueCAwIGRlZi9sbnkgMCBkZWYKKy9jcm9wZGVmc1sKK3t9ICUgMAoreyAlIDEKKwkwIDAgTSBsbnggbmVnIDAgTAorCTAgMCBNIDAgbG55IG5lZyBMCit9Cit7ICUgMgorCTAgMCBNIGxueCAwIEwKKwkwIDAgTSAwIGxueSBMCit9Cit7ICUgMworCWxueCAuMjUgbXVsIG5lZyAwIE0gbG54IG5lZyAwIEwKKwkwIGxueSAuMjUgbXVsIG5lZyBNIDAgbG55IG5lZyBMCit9Cit7ICUgNAorCWxueCAuMjUgbXVsIDAgTSBsbnggMCBMCisJMCBsbnkgLjI1IG11bCBNIDAgbG55IEwKK30KK3sgJSA1CisJbG54IG5lZyAwIE0gbG54IDAgTAorCTAgbG55IG5lZyBNIDAgbG55IEwKK30KK3sgICUgNgorCVtsbnggLjc1IG11bCBsbnggLjUwIG11bF0wIHNldGRhc2gKKwlsbnggbmVnIDAgTSBsbnggMCBMIDAgbG55IG5lZyBNIDAgbG55IEwKK30KK3sgJSA3CisJY24gMSBlcSBjbiAzIGVxIG9yIHs5MCByb3RhdGV9aWYKKwkwIDAgTSBsbnggbmVnIDAgTAorCTAgbG55IE0gMCBsbnkgbmVnIEwKKwljbiAxIGVxIGNuIDMgZXEgb3IgezkwIG5lZyByb3RhdGV9aWYKKwkvY24gY24gMSBhZGQgZGVmCit9CitdZGVmCisvY3V0bWFya3N7CSVzdGFjazogcGdsZW4gcGd3aWQgY210eXBlID0+IC0tLSAgCisJMCBTU0cgW10gMCBzZXRkYXNoCisJL2NtIHhkZi9wZ3dpZCB4ZGYvcGdsZW4geGRmCisJL3B3IERQSXggODAgZGl2IGRlZi9wdzIgcHcgMiBkaXYgZGVmCisJL2xueCBEUEl4IDQgZGl2IGRlZi9sbnkgRFBJeSA0IGRpdiBkZWYKKwlwdyBMVworCS9jbiAwIGRlZiBuZXdwYXRoCisJJSB1cHBlciBsZWZ0IGNvcm5lcgorCXB3MiBuZWcgcHcyIG5lZyB0cmFuc2xhdGUKKwljcm9wZGVmcyBjbSBnZXQgZXhlYworCSUgdXBwZXIgcmlnaHQgY29ybmVyCisJcGd3aWQgcHcgYWRkIDAgdHJhbnNsYXRlCisJOTAgcm90YXRlIGNyb3BkZWZzIGNtIGdldCBleGVjIDkwIG5lZyByb3RhdGUKKwklIGxvd2VyIHJpZ2h0IGNvcm5lcgorCTAgcGdsZW4gcHcgYWRkIHRyYW5zbGF0ZQorCTE4MCByb3RhdGUgY3JvcGRlZnMgY20gZ2V0IGV4ZWMgMTgwIG5lZyByb3RhdGUKKwklIGxvd2VyIGxlZnQgY29ybmVyCisJcGd3aWQgcHcgYWRkIG5lZyAwIHRyYW5zbGF0ZQorCTI3MCByb3RhdGUgY3JvcGRlZnMgY20gZ2V0IGV4ZWMgMjcwIG5lZyByb3RhdGUKKwlkcAorfWJkZgorL2JvcCB7L3Bnc3RhdGUgc2F2ZSBkZWZ9IGJkZgorL2VvcCB7cGdzdGF0ZSByZXN0b3JlIHNob3dwYWdlfSBiZGYKKy9uZGYKK3sKKwkxIGluZGV4IHdoZXJlIHtwb3AgcG9wIHBvcH0ge2R1cCB4Y2hlY2sge2JpbmR9IGlmIGRlZn0gaWZlbHNlCit9IGJkZgorL3NldGNteWtjb2xvcgoreworCTQgY29weSBwb3AgYWRkIGFkZAorCTAgZXEKKwkJezEgc3ViIG5lZyBzZXRncmF5IDMgbnBvcH0KKwkJeworCQkJMSBzdWIgNCAxIHJvbGwKKyAgICAgICAgCQkzIHsKKyAgICAgICAgICAgICAgICAJCTMgaW5kZXggYWRkIG5lZyBkdXAgMCBsdCB7cG9wIDB9IGlmCisgICAgICAgICAgICAgICAgCQkzIDEgcm9sbAorICAgICAgICAJCX0gcmVwZWF0CisJCQlzZXRyZ2Jjb2xvciBwb3AKKwkJfQorCWlmZWxzZQorfSBuZGYKKy9wYWNrZWRhcnJheQoreworCWFycmF5IGFzdG9yZSByZWFkb25seQorfSBuZGYKKy9maW5kY215a2N1c3RvbWNvbG9yCit7CisJNSBwYWNrZWRhcnJheQorfSBuZGYKKy9zZXRjdXN0b21jb2xvcgoreworCWV4Y2gKKwlhbG9hZCBwb3AgcG9wCisJNCB7NCBpbmRleCBtdWwgNCAxIHJvbGx9IHJlcGVhdAorCTUgLTEgcm9sbCBwb3AKKwlzZXRjbXlrY29sb3IKK30gbmRmCisvc2V0c2VwYXJhdGlvbmdyYXkge3NldGdyYXl9IG5kZgorL1NTRyB7c2V0c2VwYXJhdGlvbmdyYXl9IGRlZgorL0ZDIHtmaW5kY215a2N1c3RvbWNvbG9yIGRlZn0gYmRmCisvQ0Mge3NldGN1c3RvbWNvbG9yfSBkZWYKKy9pbGZlYXRlbmR7CisJc3RvcHBlZCBjbGVhcnRvbWFyayBDRCBleGNoIHN1YiBkdXAKKwkwIGd0IHt7ZW5kfSByZXBlYXR9IHtwb3B9IGlmZWxzZQorfWJkZgorZW5kIAorJSVFbmRQcm9sb2cKKyUlQmVnaW5TZXR1cAorSWxlYWZfNi4wLjAgL2luaXRpYWxpemUgZ2V0IGV4ZWMKKzAgMCA2IHZjaworJSVJbmNsdWRlRmVhdHVyZTogKk1hbnVhbEZlZWQgVHJ1ZQorJSVJbmNsdWRlRmVhdHVyZTogKlBhZ2VSZWdpb24gTGV0dGVyCislJUluY2x1ZGVGZWF0dXJlOiAqRHVwbGV4IE5vbmUKKyUlRW5kU2V0dXAKKyUlUGFnZTogKDEpIDEKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoYgorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGIKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hiIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NCBwdXQKK2R1cCAzIC9DMDA0NSBwdXQKK2R1cCA0IC9DMDA0NiBwdXQKK2R1cCA1IC9DMDA0OSBwdXQKK2R1cCA2IC9DMDA1MCBwdXQKK2R1cCA3IC9DMDA1MyBwdXQKK2R1cCA4IC9DMDA1NCBwdXQKK2R1cCA5IC9DMDA1NyBwdXQKK2R1cCAxMCAvQzAwNTggcHV0CitkdXAgMTEgL0MwMDY1IHB1dAorZHVwIDEyIC9DMDA2NiBwdXQKK2R1cCAxMyAvQzAwNjcgcHV0CitkdXAgMTQgL0MwMDY4IHB1dAorZHVwIDE1IC9DMDA3MCBwdXQKK2R1cCAxNiAvQzAwNzIgcHV0CitkdXAgMTcgL0MwMDczIHB1dAorZHVwIDE4IC9DMDA3OCBwdXQKK2R1cCAxOSAvQzAwODAgcHV0CitkdXAgMjAgL0MwMDgyIHB1dAorZHVwIDIxIC9DMDA5NyBwdXQKK2R1cCAyMiAvQzAwOTggcHV0CitkdXAgMjMgL0MwMDk5IHB1dAorZHVwIDI0IC9DMDEwMCBwdXQKK2R1cCAyNSAvQzAxMDEgcHV0CitkdXAgMjYgL0MwMTAyIHB1dAorZHVwIDI3IC9DMDEwNCBwdXQKK2R1cCAyOCAvQzAxMDUgcHV0CitkdXAgMjkgL0MwMTA3IHB1dAorZHVwIDMwIC9DMDEwOCBwdXQKK2R1cCAzMSAvQzAxMDkgcHV0CitkdXAgMzIgL0MwMTEwIHB1dAorZHVwIDMzIC9DMDExMSBwdXQKK2R1cCAzNCAvQzAxMTIgcHV0CitkdXAgMzUgL0MwMTE0IHB1dAorZHVwIDM2IC9DMDExNSBwdXQKK2R1cCAzNyAvQzAxMTYgcHV0CitkdXAgMzggL0MwMTE3IHB1dAorZHVwIDM5IC9DMDExOCBwdXQKK2R1cCA0MCAvQzAxMTkgcHV0CitkdXAgNDEgL0MwMTIxIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xNiAtMjA5IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMEVBMTU3QzYyNTgzRkFBMDE4RjM2OUYxMEMyNjdFNUE2ODkKKzE0QjNDRjA1RDdFM0U3MzAxQTFEMTEzQworQjg3OTY5QjBCN0EzM0RGREU1Cis2MTA0MUM4QQorNzlFMEM1NUYwNzUxOTkwMzEzNzA2MTA0MzAKKzBEMTk5OTNDNjZBOTA0RTBBMzkzMDk3QzMzRTJCNTMzQzc1MUIwM0RCMjkyRDNGMTZBMzdBRUU2NDBCM0NCOEY3RDQ3RjJFNDRCMkFCRkI0QzgzQ0ZFMTc5NjIyODkwNTE2QkVDOUVDNDFFMjg3RkFCMThGCis0Njc1MkE5OAorQjUyNDE5N0Y3OTc0OTQ5OEYxQjgxQjQ5OUUKKzVCMTczNzg0REY4REE5RTQ1M0NEMDgzOUIzM0JBMEQ2N0U2MTNGQ0I0MTZFRUUKKzlBNTFEQTQ5Cis0NjQ2NjIyRjIyQjEzNDczRUJERjk2QTBEQQorOEEzNDkzMjJFOEQ5NENEMEU5MUM5OUVBMEMzQkMwOTQ2Mjg5OUM2QkRERTYxODc0QkNEQjUwMTAxQzQ5RjEKK0UxNzQzRERCCitBQTI4RUE3NUJENTc4NTBFQTlEOTM3MTUwQgorODVBQ0Y0MjZFMzRCMzE4MzEzMUJDOTc5REI0NThFMEVCQUFCNjZEN0Y1Q0VDODIwMDVGM0VFNERCNEJBQkNCQTIwN0VFMkY0NjY5MjU1NjJGREJDQTExMjk0MkNEMzZGQTUzOTAwOTFFODcyNTAyMzY0RTE5QkY3CitFQjI0MkFBRgorMzlEOEY0QkZBRTZFQTI3RjhBQzdBMUFFRTAKK0E1NkJFODA4QzEwRjE3RUI2QjVEOTFCNTY5NURFQjZFRDIyREQxNkYyNTc0RDcyOTM1RTVFQzdDNzU3NUM2QjE4MjI2NTk2OERBOEVCNkRBNjhDMEJBQkZGRDZGNDhGMzM0NzkyQUNFNjJFQzM1M0ExRDRFNkREMzdCQkVGMkFFQzJFNzlGMzFFMUY5QkNDOUYxQTMzQUUzOUVBRjI2REI0OUQ1QTYwMQorNEFDMjFBNjEKKzMwQUUzOTFGMkJFODBDQkNGRTM4M0ExRkY4Cis4QTY5MkZEMDlGNDQ4QzlDNUY0QjAzQjYwNjVFMDZBRDBGRkRBNjhGRkRDNjE5QUZBQTNCMEY5Q0MxMENBMDg1NzA5RjhCQjJFMEQyMUQyMDQxMzkyOTAwM0Q4NDc3MTQzNTYyQUJBNERGQkY2QTMzM0EzNEU4NzAwMTdERUFCRUIwNzY2Q0YwRjFGNzkwMzEyMDMwMTIxQjc1QjA5NzFBQzY1M0I1QjBGMDU4Cis0RUIxNjg2QworNDQyQUU1OEM1OTgzMUU3NTNGQTg1QUEwNDY4MworMjMwNTJEMTJBM0MyNDEwRjU4OEQ1MTMxMUQ2MTU3NzRFRkJDODI2QUZENTJERUNGQjJGOTAzREQ5MEVFMjhFNDNEODcwMDJCM0JEQjM2QzQ3QTZCMEM1NENFRTlBOEQ3QzQ1Q0REQjUwRDhGRDRGNjM1NkIwNkY1Mjg4MTU4MzhEMjMwNkRDRDAzNUFDNDk2ODc2ODVBQjY0QTJGNzk1RDY3Rjg1ODYyRDcxNkRDNDRBOUFGQkI5REMxQ0JCQTAyOUFCNjAzMTgKKzk4MkE4QjFCCitEMkZGQkIwMkZEMDExNzNFNUNEODBFMzc1NzBBCisxQ0NGMTY4Njk5MTg4RjRDNkVCNTk4QTRFMUMxQkM4ODA2MjIyNzY3MkEwODlCQjZFNzU3Njk4RDQ0Mzg5RjlBNjJGOEE3QTg4NDM0OEEzQzk5MTRGNTc3OEQxQzFEOEM0NTJBMzI2MDkzQTkwRkI0RDNCMUM0RDM1ODMzRjU0QjVGQjBFQ0M2Q0Q4MkRGN0Y0REJDOTdCQjg4MkJDRjIxMzY4RkM5QjRCN0QyQ0ZFREE5QTA4RDdCMjhFMDcxN0VDQTNCMjIzMAorNDJDRTlDREEKK0EyQkU0N0JCRkM0RkNGMzdFRThGRTZEMkRDCisxOEVCNEMwMjc1RjM1OTI5QzJENTA3NjlGQjYzMDJDQTczNjFEQjRFQjc5Mzc2REE5MjMyQzJGREFBQTNBRDkwMjEzQzIzRUE1QkU3RENCNTE5OThBQUQwMjJEOUI1RjFENTE3OTYwRjk0NzEKKzFCREIzRDRGCis1QTFFN0VDMzQyOTRFQjU3M0NDREVGQjE0OUNCCis2NzQxMEMzMEI0MkZFRTg2RjZGQUNCMDM2NzcyNTIxMjczQTgzOUQ4ODAyRDJENzVGOUUzM0Y5RjRBMENDMjRDMzRFNzI1MzE3MEU0Mjg4MjhCQjU1MUVBOUEyNTEzNDcwMkE0N0Y4NDlFMkEwQjRBM0Q0MzkyNTJFRjUxNDFGNDI3MDI3Qjc5Q0QyNDhCN0VFNDFBOEMxMDZFRUY1REUzQkU1OTZDQ0JCOTBCM0IxODlBQjM1RERFQjM1NDJBQzZBNzUzRUZCNTM4RkU3OUQ3NDVFMzQyCitCMTIxNTBDNgorODhFQzkyMDhGMkU0MENFNjVCMTQzMDMxRDk2NAorREE4MDkzNEI1MEVCODY5NzVGMEZCNTE3MTYxRjNDNkZCNjM3MUU5QzdCQ0JDMDkxQkI0MTdERkI1REMyRTJDNTYxMTMxNDAxNDMwREVCODM3MkUzREM3NjgxNzY1QzUwMzk1NjM2MDYwRTI4NzIyOTM1RDZERTgzNzZGOTM1NzU3RkY1Qjg4Q0UyNTA1MjhDQTNEREUxOTdFNDlCQkREM0ExOTk3QTk4MEIwQThEMDRGQ0VFMTRBOTc4NjU2REM3NzFGMDQ0MTUyNTg5RTA0RTAwNzYxMTQ2ODk2RDBDM0ZCMjg4MkRCODFDNjJFMDA5MDNEMAorNDg2NjVDOTkKK0RENzlBMkFDODk0RkZENDdCNzNBOERERTE4MTMKK0E4NEUzMjZFOEQ2OTk3RTRCNzVCQTAwODE1QTk4OEI3QzA2N0I5NDVFMEVFOEI4OUE1MzA4MDEzRUJENTFCNURGOEM5OTc2RkZCMjUzQTQ4RUQ0MkUwM0IyM0RENDk1NTA4OTg2MTc2QUVGNDEzODFDMzk4QjcwQTYwNjQyQ0IzN0RBOEY5NkEwRDdDMUMyQjQxNzQ2Q0FFMjQzOTM3NzgzMjM0QzJEMDQ5N0U3Qzk1QTBBNEQ5QUZBNzMyQTI4RUY0NEIyMDgxNTE0Njk0NTgKK0M0MTA5NEZCCitGNjM5RjI2NjU5RjU2RUIyRTAyNDRCODAwRQorQTE1QUY4QzFDMTYxNTBCRTZDRTdEQkMwQkVCRDY3NzY3NDgwNzQ4QUNBMTUwQTdCQkY4MjJENzdDNDkxN0U1NUVCNUM5QTc0OTdBOTIyMDM5NDZGMUUyOEE1NTRDMEE3MjJGMTMyMTlDMjdFOEQzMEZFQkZGMjREOEU1NDY3RDFDMzZGMDhGMUEzOTMyNkNERDkzMzU2REI2RUEzODBDNDJDMkM1MkQwRkU2MDIxCiswMTIzREVDOQorQjhFREY5NDNGNzI1MTNBRjkyQTAxNUFDNUQ2QgorNUY4QjVBMTRBOUNFNjNFRkIwRUUxQkZFRDkxREIyMUFDOUM2OUI0NEQzRDBEQ0FFNkJDODgwNTIzNDQ0OTE5MUVDNjQzQTM0MDEwMkI0MDQzMTExMTlCRUVDNTI2MzcxN0E1MDU3RDU4MzY3QTc0MEJBMTg4REMwQUIyRUE5NkM0NjQwQUZGREJEM0E2QzU5QTRBRDc4MDQ1RTFDQkNDQzdEODY3QTBBMDU5Nzk2OEEyMTExODlDRDVDMTQ5QUNGQ0YyODFERUUKKzA4NTA0NzJCCis4MUM1RkExQUVFRjcyMzkyN0I1NzE3OUM1QzNGCisyRkE4QTlEOEVENDgwQTIzODgzNTc5MTk4REVDODNGQjQ5QzExMEYzQUMxNTdCNjFGRUM4NkUzMTFFNkUwNTM5OTMxNTE4NDM0QTU0RDA3MzZEOUNBRkQ0QTA3QTA0QUJGRTQ3QjU3QkY1MzM0RDYxNjdFOEJDNkJENkUxMzc3NURDRkEyRDFEQ0EzNzY5RjdCRDRENTUzODc5MzMzOEUwMDBFQjQ5N0VDRjgzREVEMUM3NjRBRUE5ODg0MTM1RDkwMjAzQkYxQzQxRTc0QUYyODczQTZCNzIzNDU1MjE0RjNGREFGQUU4QjQ3OTg1Cis1RTkwQ0FFMgorODk3NTNDQUIyQjNENkFCRURFNjA4NUNGMkQKKzg1QjFDRTZGODY1NTFERjYzMDZGMDVGQjg3MkJGODQyQTQzOEMwM0YxNkE4QjdENUU4QzY0MUIxNjM5REM0MTE1QkVENDBEREUwREUxM0ZBOUQxQkE4Rjk1NTg5RUQ5NTgxQ0EwQ0Y5MUREOTlEMzhBMDI2NEFEQkM2QTcKK0Q3ODhDMzg5CitFMDExM0QzQjJCRTIyOUQ2RUY1MTk4NUU4NgorOUUxMTg3RTc2M0RBNEE3Rjc2MEE4QzlGMDJDQjA2MDI5QTgwNUIyQTJGQkFBQzY2MEU5NDZCQ0VFQjE3MzQ1MTc1RDMwMzc1MDlDMzgxRkIyMzI0MDQ2MzZDNjk4OTMxQjI5MjIzM0I4NTlGNzM2NDEyMzI4NDM4MjdCMzQxQTZBNTcxMDVGQjZCNzk3N0QzQjNCQkQ3RDg3NjMzNEI1NzExNTk5MzQ1Rjc3MUUwNkRCOUUyNTVEQzEzNDNDMworRkFDMDYzQ0UKKzVGMzMwMEJCNTk1REVBQjgwQzQ4NDI4NzA2MDMKK0QyQUQ5NjEyNjMzMkUxQjQ3NEIzQjZFNjMxNDcyNDkyNEUyQTE4MkFFMUJGQzY1N0MzQTc2MzEyNTMwQUI3NTU4RTQwNTg2MzQwQTFDQkFDOUJGMUIyMkI4MjkzRjg4OTA0MUVENTY1MzJCNkVCMTEyRDBDQTQ5RkU3NERGRUU3NUQ0OUUwOEE5QUI0OEM3QUM5NkQ0QzM2MUFBNzgyMkY3RUFGMTI1NTYxQzgxMDg3MTBEREM3QkU1MDU3NkZGMkJCMDQ0ODA5CitFNDc2NjgyRgorMzU0OTQ3RDhFMzI3RjgwMDk5RTVENTNBQjA1NgorQjlFQUU2NjlDNDMzRTk2MjA1MUNGNDAxQTk3MjBFNjRCQUIzMkM1MjZEMEZBMjkwOTU5NTUxQThCNzczNkRDMkQxNjJBODJFQkVEQjE4NDYwRTI5RUM2QUU1MkI2MDAyODQzNzcyMzZBQzZCRTFCNDI3MDY4QUUyMzQ0MjAxOUQ1MjI3OTQyQTE0RUM5OUUxQzA5NDI5NjVGMjRDQTA2MTcyOTYyQkVERjZCMEJENTFGRkU1M0RDQzJDMjZGRDgxNzg1NUEzQjUxODMyNDk1QjkxNEJDQUJCNTYzRTUyNkRDMDAwMkFFMkUyCisxNEQ0MDY2RgorQkMwMjAwNDg4RjdEMzcxNENFQkM3NDBGQzRFQgorQTFDODQ5OUQ5M0E2QkRCRkREMzVEQkU4RTBDRjk2RERBQThDNjAyRUM2N0Y2OUZDRjdBQUE3ODI3NkYxMjA1RTRDM0JDRDRBNTk2Q0VCNDFFQzA2RjE3MEMyMDM2NENBQkYyNjlGMTkzMzI2RUZBQkQwNUU4Qjc1RURDNEY3NkYxRkNBRTk5QUVGRkU0MjgzMDBCRUY2MTk0QzBGNTFCM0Y1MzIxMTI3OTZFMzI5NDJGMEJFNTM4RTlBM0ZDMTZBMDM2RTdDMzFGRDI4MzIyQjNFMEU5RjBDNjA5QURDMDBDQzZEMDE1NTRBODI0OEZGNkZCN0MyQTMxREY2Cis4NzE3CitCMTUwQTAyRgorNEI2MzNFODUKKzkxQjdBMjAzQUIxNzVERkJBMUE4MTVCNzM5Cis4OEU2NDk5ODk0MjM1NzYzMjQ3Mjc5Qzc5NEQwQzMyNTNERjQ2RDEzMDREMzZGNUEzRDcyNzkzRDNGN0ExRkQ2RDU3QjAzOEQ3NTEyRTZBMDFFQjYyNURCREJCODQ2RkU4MTIwNTZFNTRDRUI0Mjg5NzIxOUJDODdDN0JCREM5RDRGQjdBMTY4NzA0RjNGN0M1MzkyMDlCQzhBNjBGODVCNzhDRkNDOTc1NDMwNjM1OTUzMDhDRUM4NjE0MAorNzQyRTIzOTcKKzI1MDQyNzcxMDU4MDhBMUZDNEU1NkEzQUE0CisyNTg0MTgxRDc5ODJCMDBFMDRFMEQzMEZBMUFDRThEQjFEOEYyMTFGRjA2QzZBNkYzNDQxOTVBRDg3NEIzMkFCRERDNjMyNUVERTM2ODBFNEJERjRDQzE3Nzc5OTNFQzI3NjgzNTVEODkxMjg0NTJGNUNGREREMDdDOURDQ0RDRjNEMTIzQTgyRThBMzZGQUM2QUNDQTY1MUJDN0Y5Q0JFMTBCNAorMEZBQzk4MzAKKzg0ODczNjFBRDNBRTJCODZCOEFFQjQ3RTExOTQKKzEzREQ5NTU2NUMzQjZENzc1NURDMDM5MDVEOURDNTg5MzVCMkQxQUE0QjE4MjkyRTkxNURBRkE0NzFFMTU4MDNGNTgzNjQ2QjAwRTQwMUVCMTQ3RjE5NUFGQzlFRTM3RURENTQ3MkQ2Q0QwMEUzNzgzNENGQjgyNkFEMEFEOUZENzlFRTJGOEE3OUNGNjI2NkY5MzM4MTg0RTFCNjRFNUZCRkE0NjlEN0ZGQ0RGNEQwMzhBRTI1NDlCQzE3MEM3MjZCNzQxQkZCQUIxM0VEQ0E1MTE2NjdENworRUY3OUIyOTYKKzVGNEY5QzNERDQ2MURGQjUyMTcwMkE3RkY5CitFRTYxQjA2RUYyRjVDOTU3MUY2RDI5NjAxOUQyRjg4QjhDMDY0RjM2QTcyNzU4RkJFMEI1NzJEREQ0RDBEMEY3M0MxQjJEMzY3M0M5MEFBM0Y5QzE5RjIwMTMwNjBCQjYxRTEyNDJGRkIwOEVFOUVGRkQ2QkZEOThERUJERkE0REZDQ0Q0Q0NGN0I1QUFFMjQ3QkYyMTVBNkM0NEI0N0NCNkFDNjE4MEEzMjJCRTBGMTA5MjNFQjZGCis4N0Y3Mjk1QgorNjVBODlDOTJCNjYxRTMxRjUwRDREMzI0OTcKKzEyNDcxRTg1MEFGRUQ4NjYwRTVDRjRFMjRGREU2RTk0QzEwMzUyQUZFOEFBMUIwNkQ5ODY2QTU0RTFFN0FBRTcwNjNBM0EwMTVGQjM3RDI4MjY2MzRCM0NDQjBDQTJEQjhDRkUzRjdCRjQ3RENEMTgxQTExNzBFMzQ0RTFCQkUzNENFRjk3Nzc5NDBDMUVGNUJDNEExQTQ4ODM0NERCQjBBQkM3OUE2MDRBNTIwMDBBQjA1RUYwNzVGRQorM0I1Qjc3RjkKK0Q3QjNBNDhCN0JGMThBQjRGQTRDM0QyQTY4QjIKKzM2NjEwMkFCMDAzQ0U0RThDNDI3NTcxODM3MjdFMTE0Qzg1ODI1RTFFQjc5Mzk3RTFGREE4NEZFRTU5MTVCMTQ4Q0U5RUU1Rjk3RERFOTNCNDBCMzhDM0IyNjMwRkE3QkIwMTZCRDBCNTNDNUE2QjI2MjFCRDM0RjJFMjI3MzlERjIyQ0I3OEJBMzQ3NUExNjcyMDc0RTlBNzc2MjREOEMyRkQ1QUFEMjRDRTExMDU3MUQ4NkMzOTg1RDFCQ0MzMzBDMDVCQjk3NjNBNDA4QkQKKzhBREQwMzExCisyQUVCQkZBN0FERUM4NTMxNTRFODU3NkU3MgorQTgxODY1NzA1REVGMzgwQzk0MTlGMTFENzUxM0EzNUY3OTEzMkJGMkJEQ0UxOENGRUY1MjMyQjI0QTRBQ0M4MEZDNDNFQTZFNDRFQzAzRTdBRkVDQzQ3NDc4MUNEMTI3RUI3QTg3REJDNTNDMkQ4MUMyOUE4RDhDMDIyNDI1NzYwQjJCRjExQzlFQUU4NkU5MzhBQzhENDVFMDJDCitEQzZGOTE5MworMzVDNjI5MDMyQUJGODlDQjIyMzQ5RUI5OTk3MAorN0EyMjlFMkU2OEY5MkRDNTVEMjdDN0I0NUU2MUI1MDA3NDBBMTRDQTFENzEyMDRFQkNGQUY5MThFNTFGMEE3OEVBOUNEOTBCODg0REQ1MjUzMEMzNkQyREUzRTMyMEFDNzA0NEFGODU3OEUwMEMzMkVFMEQ3QTU2ODMzMkI1QkNCNTdENTQxRTQzRDFDRDU4OTQ0MDEwREY4OUMxMEY5RDg2OTM5N0FDRDFFNDY2N0U3OTkwN0Q3OENCNzk5NEY3MTE3Q0ZEQTJCOEM0MTQxMDI1MTEyRkYyODAyREJBMzEyMEVGOUQwREJGRjc0NDdERTJENTg0NTU3RDQ5CitGMkE0CiswRTNECis2OUU0Nzg0OQorQkE5NDU3MzU2MTNDQkZGMUU2OTE2RTZCNTUKKzVCMzE2NzBDRERFNDVBQTdGN0Q0RTM5RDE5MTk0ODA3MTk3MjlDRUE2QkMzQUM2ODJBNTgxMTVGQTJFNzdCQTZCQUQxRTkwMDQ1OTczMTNBRTlFN0RGNkU5MjE3NzE0NTk5MTNCMEFBCis5RjRGOTJGNAorOTk2QzVFRTc2NkYxMUQwNEIxQTE5NUQ4MDg2NgorMkI3Rjc3MUJBNUMyQTdCMkQ5NURDMjlENzk0MTZBNkU5Q0VEQjBBMjJCRjQ1MTVDMjNBQkZCMEY4NzYwNzFBODYyQkMyQkQ4ODdDNUNFRUQxMkRDMTlFQkNFQTBCQjAwNEIyOUI4OTNFQkJFQ0VBNkE5NUREMEU1NTc3QTQ1OTNBQ0IwQUEzMEE2NjFFNzA1NEYyODI4OTIzNUYwRTc5MkI3RDIwRTk2RjJDQkZFMTMwMDJGRUVDRTU2N0E2ODNDQjk2QkRDQzU2MTM3MDNDQkZDN0IzQkNGMTc0RjExQjQxM0I0REE3Q0JFNUY4OUIyMTBBMjIxM0NDNEVCCiszMDBDCitEQkU0MEJGMTZGRjFBMjU1QTdENTY2NDIwQzY1MzI5MUE0Qzc2RTFGQzlGOTIzQjVGQzg2QURFQworMkYzQTcxMjIKKzFCMjlBNDAwQkFBMjQzQzk0Mjg1QUIxRDJEMUEKKzYyNEY1OEIzMkY1NzIwNEEyOTgyQjFBQjM3NkQwNjdFRDZBMEYxM0NGRDJCQ0MwNkU1QkIyNTRBRDlCNkEyOTQ4NDQ4MUY1NzYyNjc3NDM1QTdCQUIwMDIxNkFENDYxQTYwRTE0NDVBNUUzQzQ0N0E3OTQxNDBFMTZDMTUyNUQwM0YyNzIyNTE4Njk2MjYzOUU4MzNCQkE3RTMzMjY4MTM3OEE0M0EzNDEyOTE1RjQ2NkI0OURERTg3QzMzNTdGRjIzQzA5QTU5N0Q4RjAwCisyODlDQ0NCNworNjBDM0FGNjJBODAwMUE4NDRCMEVDQURGQUUKK0Y4MEVDMkI2QkI4RDE2QkVDMUQ5NTdCRUY4QjhBMjAwRUU5QzlCODIxQUMxMkY1ODk0M0IwMkM1NEM5RUZDQTZBNkY2RjkzNUQxNUU2MDYyOEQyNzFCOTg4ODVBNDRCNzlEMkNCNDMyNUQxNkZERDMyNUJFREFBOURCNkE0NjJBQzFDNkE1MzAyNjk1CisxNUU2QTE1NgorODlGMUQwRTM1NUIxN0IzRjY1MkM4OTc5NEZENQorMzdEN0FDODcwQkI5QzA5OTc4RDQyRDUzM0U1OTRDQjBGMTIzRjI1MUQxRTI1ODYzNDVBQkQ0QzAxMEM2QzU5MzE5OTYwQzhFMTJEMjc0MDUyRTUzOThEMzk2NTMyREY5MjIyQTkwQUY4QzlFMjlDRTg4MUM3MTY0RDRCMzhCMzZDNTJEMUY1RDA4NjlBOTlCMTAzREQxQ0EzNjE0N0Q2OTdBNzdBREMwRTlDOUY5MTlERUExODBBODg0OURGM0Y3MEE5NkMxMDc3RDgzMjI0QjM4QzEyODU3RUUzOTcwQzNGNworMDZERTRFRjMKK0Y0NjVFRUQ0MEMwQzBDQ0VFQkMxNTlBOEFECis4NTU4RjA0OTJCMUFDODRDRTIxQjA5MUU3RTMyOTA0RjAwQjgxQjM2NkU5N0U3RkM2RTkxMDE2QzZEM0NEMjZFNDgxRjMxQTgyRDlBMEVCRDhCMkEzQUJERTk5NERDNkEyMzA5OEM5MUREMUMxODYzNkM3RTk1Mzk5RUY3RUZEMTBBNTNEMDRFODBCNTkwMkMxQTU3M0FBQjVFOUJERUI1QjhCN0Q5REFENTJDMjIzMDI2Cis5QkZCNzQzQQorQkEzQ0EyMzQwMDNDOTdCRDJEQjVFNjg0MDBDNgorNzA2RDI5REZDMEQ1MjM4NEMyOTFCRDE2ODk3QTQ4NEIxRTZDMTA4NTRDMkQ4MjNBODZFRjAzMUJBNDAwOEM3RTY1QkFCNkEyQzcwNjYyNjIyRTgyMDU4ODYxOUY0OTdBNURDNUNGMDAyQkNCNzFEM0ExRDg3NTcxNjU0NUU0N0FCNjQ5OTQwMkQxODdFRjA4MUY1NEVBMkIyMzA0OUFGQ0MxN0NCOUUwMzE1NjJCMDE0RTJDNDlCODkyMTRGNUY2NDY1RDRFMTBCMDg4RDNENDVCMzJBQ0EzQjM5NzE3RDkwQjNDRjQ3MTAxNkEzNkYzREMKKzlDN0U3RjdCCitFNEYzNzhGN0ZFREJBQUM1RjUwNEUyNEM1OAorMjkyN0U2RjQyM0FENzA2NjAxNUE3MzE2RURGMEFFRDU3MjYxNjdCNjZENUNGRDE2M0Y5MjM5NEZBODdFRjM3N0YzQzI5NjY0MjY4QzNBNUM1NTgxRTgxRTY2MzRFRUVFNjY0QTg0NzVBREJFNTk4NEI4Q0VDQTY5QTE3ODY2OTcxNDgwMUVDRAorNDJDQzY3REIKK0VFRDEzODkxQzc5RTQ5N0I5QzQ2Q0QzODNECiszODU3RjExQzU5QTE0REJFQUQzNzYzNzQ5OTA0RjRBQzkxQzVFNURENDdDMTJFREVCRUUyMTQ4OTZFOTAzOTkwRDNFMTVGOTFDMUJCRTEwREJGQzQyNDdFNEIwREJCMDEzNDAyNkU3NEM4MkE3MjQ3MzlBQzE1QTk1QTRBM0RBNzZCNzZCMjJCMTFCMDE0RTNDQzVGMzlCRDMyRjA5RDAyQzBDOUFGNEI0MDU1QUMxNEMyMkI0OQorM0FCMjQ1M0UKKzEwNjFBMTFCQUQ4NjUyMTQ0NkM3REU1RjI2CitBQjhGQzAxOURENjgxMzA2RUU1QjNEOTQ0NzRGNTM3NEM2OEExMkQwMTc2N0UxMzJDQkQ4Njk3NzdCMzdERkNFNDU0MkIwRTg5NEI5QUQ3MjI2NDIxMDczQ0FCQzlDQkNBNTYyNDUxREJBOUE4NzhGODgxMERBRTNDN0FBQkUxREQ1RDA0ODAwM0QxQ0RFQ0JEQjFCQzFGNDA0ODU5QTAyQjU0OEYzQzUwOENCMzg5MUNBMUU5Q0UwCitBQzlCM0M5QworOUFEMDFBRkQzQURCMkU0NTI3NTVEMzQwOTAwMgorQ0FFMUM5MDQyOTA2MDE0QTRBNTdGMUY0ODgwNDMwMTYyOENFMTY3RjAyODVCMEI1OTRCMjA1RDQ3NjU5ODQ2ODQwNkM1QTQ1MTBGMDQ3OEYwNzUzMzZGRUJFODVCOTgwNkIzMkRGMzVGMkIxMUNFQkYwNzI5NjM4QkVENDE1MzAyQjU0NjQ1N0U1QkIyQTRCM0JGNTUxMkU2MTMzQTI2MjA2QzM4RERFRUE2RTJFMDVGMUM2QjU2NEREMDIzNjAzRjJBMTMxODIzOTJFODkwNTVEOTAzMjZFNENBMEJBRjA4OUEwNDZGNzJCOUVENzY4MTYzOEFGQUY0RkU5Cis0QTEyCis5MkZFNDJBRkI3MzUxQzExOURDMDY0Cis4REQwRjE2RAorMjM5MkVCQjE5MjBGRjQxNzc4RTI5NjVERDc2MworMTI3NkQ1MTZEODM1RDlBRUFCRjk4RjQ4RUQ3QTU4QTYyNzlDQkIwRDYzMTgyMDUzN0JBMTJCRENENzNGNDgxQTM1QTFERTEzNEM0OEM3RDdBNzJBRTI0MEFDRTk4OThFNzYyMzhEOEQ0Mjk0OTMyMTUyQjlGNzE3NEQ3NkQ1MTVERjY1OTA0ODg3ODM0N0U4MEZFODI2RkU4QzFGRDkwQjI0RjlCM0VBQzRERUNEMUY3NDQyMjdGQ0VBMTNBREE3RjM5NkY1NzhDRUI4ODMxRURCNzgxQkNBMjIyMjk1OTRFQzRDMEMxODFDNDdBOEU1MzFENDc4MTE1RDE3Cis0NEIyCis4OQorNjY5RUJEOUIKKzEyQjhCNzU1RjcwRkQ3MUYzOTU2Nzk2M0U2RUMKKzkxN0JDNkZFQTdDRUU5NjQKKzVEQzdDRTJECitFQ0YyQjVCNTYwMzMxNjdDQkREMTNDODhFQTYwM0U2Qjg0REEyNEQ5RDIwQ0FEQzhFNjBBQTRCQThDRUFDQzI5OEVDMAorNEJBOEEzMzhFOEI1M0FENkM5N0YzNzM4RUY5NUI4NEM5M0YzMjM3MEQzNUZEQjE4MTM0QzBDRDhBOEY5QTdDNTE3RjMwMDVFRDRFOAorRDU0NDMyQTc5Q0M0QzBFMzkzRTJFN0MzQjk5RkI5MURCNjlBODRDNjNEQzRBQUZFQTE5M0M0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiaQorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGJpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYmkgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDYzIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzg0IC0xMyA0NzEgNjgzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0IzRkJBRUM4MjZBQzdFMUUyMAorMjUwRTNBQUJEREE5QUREMzBGODZFMDc0MTdENDE1QTVDNUYzQzc1QjJEMDgyNkJFQjZGMzAxMzYwN0VEOEE2NjMwMjA4MzlDOTA0MUY0RjdDNzk3OEVBMzQ1MUMwRjgzQTIyQTU5QTE4M0QzQUIwQUI5REMxRERGMzc1MjE3QTg5Qjc1NTZBNTU2RTdDOEJENkVENjREM0U5QjE5RkVGQTZEQkYyQThCMUQ3QTRBRDFBQjdBNkRGODgwRjdFRkIzRTVERjRDMTNBNjZCQUMxMQorNTZEQzU5Q0MKK0VFQzg0QTQ1RDgxNjE0QUMxQjk3QjhBMkY4MUQKKzlBOUQzQkFBRjFGQjIxMTgKK0VDMEQyQzdFCisxQTFENjA3QjgyOEZBMTJCNkVGNjhDN0VCNTYxNUY5MzQ3MDdDQTVCNDYxOUZFOERGRjBEMzdFMzU1MENFQ0ZDOEEyQworRjhGMjIzRTQ2RTExQzhBMTRENThBRDEzOTA2RTg5ODU2MTZDMEJEOTExRDZCMjNERTZEQzI5RDRENURCRDRCNkE2MTk1NjU4NkU4NAorNUQ1RTI1QTJGNjgxMTg3MkRDODZDMjM4QzkyQTdFRkYxOTA1RDZERDZCNTVGOTgwRjk1NTczCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gyNGIgMjQuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE4YiAxOC4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoNzJiaSA3Mi4wMCAvUFNPd3N0ZHV0Y2hiaSBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMjRiIFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDEyMTkyNTIyMTkyMzFhMGE+IDQ2MzkgMjk2NSAwIDYxMzkgLTEgcword3N0OmR1dGNoMThiIFNGCis8MGIwMTEyMTkyNTI4MjEyMzFkMDExMz4gMjkyMiAzNDczIDAgNDY0MiAtMSBzCis8MTkyMzFhMjEyMzFmMTUyMDE3MTkwMTBjMTkyMDE3MWIxZjE1MjMxZD4gNDYzMSAzNDczIDAgNzg1MyAtMSBzCis8MTEyMDFhMjEyMzFmMTUyNTFjMjEyMDAxMTIxOTI1MjgyMTIzMWQyNDAxMGUxYzI3MWMyNDFjMjEyMD4gMzI2MSA1NjI1IDAgNzUxNCAtMSBzCis8MTAxOTI4MWUxOTI1MjUwMzEzPiAzNDczIDU5MzAgMCA0OTg0IC0xIHMKKzwxNTE3MWQxNTIzMTgwMTBkMjExZjIyMTUyMDI5PiA0OTczIDU5MzAgMCA3MzAzIC0xIHMKKzwwZj4gNDE2NiA2MjM1IDAgNDM1NyAtMSBzCis8MTkxNjIzPiA0MzQzIDYyMzUgMCA0NzkyIC0xIHMKKzwyNjE1MjMyOTAxMDUwNzAyMDEwNTA5MDkwOD4gNDc5OCA2MjM1IDAgNjYxMCAtMSBzCitOCis1MyBMVworW10gMCBTRAorMC4wMCAwLjAwIDAuMDAgMC4wMCBzZXRjbXlrY29sb3IKKzEyMi4wMzQwIC0zOS44MTI2IDAgNTMxLjYwODUgNTMxLjYxMjAgMzkuODQ3NiA2NDcxLjI1MTAgOTcxNy42NzcwIGFkZGNvbmljCisxNDcuNzUxMiAtMzIuMjg4NyAwIDUzMS45NDc2IDUzMS45NTI1IC0yNy43NDU3IDcyNjkuMDE2MiA5MjU3LjM0MjcgYWRkY29uaWMKKzY5LjkwNDkgLTExMC4wNzYwIDAgNTMxLjk1MDQgNTMxLjk0MzggLTkuODk5NCA3MjY5LjA2OTUgODMzNS4yOTg0IGFkZGNvbmljCistNzEuODE1NiAxMzkuMDczNiAwIDUzMi4wNDg0IDUzMi4wNTI3IDQwLjkzNDkgNjU0Ni4zNzMxIDgxNDcuMDc3NyBhZGRjb25pYworLTExOC40NTc3IDk5LjcyODQgMCA1MzEuNTgxNCA1MzEuNTc1OCA0NS4wMDAwIDU4NjIuNjQ5NSA4NjU2LjU3NTUgYWRkY29uaWMKKy0xNjEuNjk3NCAxNy43MTY5IDAgNTMyLjA0ODkgNTMyLjA0NDYgNDEuNjQ1MSA1Njk0LjQ0NTkgOTQyNC41MjM4IGFkZGNvbmljCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorTgorMTcgTFcKKzAuMDAgMC4wMCAwLjAwIDAuMDAgc2V0Y215a2NvbG9yCistNDEuMTE2OCAxMzguODgyNyAwIDUzMi4wNDY1IDUzMi4wNTMxIDQxLjExNzQgNjU0NS45NTA2IDgxNDcuOTk3NyBhZGRjb25pYworNTk2NSA5ODgzIE0KKzQwLjA2MzUgLTEzOS4zMjExIDEgNTMyLjA0OTcgNTMyLjA0NDkgMTkuMzI5OSA1Njk0LjExMDcgOTQyNS4wNzY3IGFkZGNvbmljCis1NTk3IDkxMTkgTQorMTE5Ljk5OTcgLTYwLjAyODggMSA1MzIuMDQ1MSA1MzIuMDQ5OSAwLjAwMDAgNTg2My4wMjAyIDg2NTguMjI5OSBhZGRjb25pYworNzAwMyA3ODc0IE0KKy0xMjAuMDAwMCA2MC4wMzAwIDEgNTMyLjA1MDkgNTMyLjA0NjYgMC4wMDAwIDcyNjkuMDI1NyA4MzM0Ljc2NTggYWRkY29uaWMKKy0yOC45NDg4IDE1MS4wMjI0IDEgNTMyLjA0ODcgNTMyLjA1MzUgLTMxLjA1MTQgNzI2OC45NzgyIDkyNTYuNzcwNSBhZGRjb25pYworNDQuOTk5OCAtMTM0Ljk5OTQgMSA1MzIuMDQ5NyA1MzIuMDQ2MiAtNDUuMDAwMCA2NDcwLjk1MjAgOTcxOC4wMDM1IGFkZGNvbmljCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorTgorLTQxLjExNjggMTM4Ljg4MjcgMCA1MzIuMDQ2NSA1MzIuMDUzMSA0MS4xMTc0IDY1NDUuOTUwNiA4MTQ3Ljk5NzcgYWRkY29uaWMKKzU5NjUgOTg4MyBNCis0MC4wNjM1IC0xMzkuMzIxMSAxIDUzMi4wNDk3IDUzMi4wNDQ5IDE5LjMyOTkgNTY5NC4xMTA3IDk0MjUuMDc2NyBhZGRjb25pYworNTU5NyA5MTE5IE0KKzExOS45OTk3IC02MC4wMjg4IDEgNTMyLjA0NTEgNTMyLjA0OTkgMC4wMDAwIDU4NjMuMDIwMiA4NjU4LjIyOTkgYWRkY29uaWMKKzcwMDMgNzg3NCBNCistMTIwLjAwMDAgNjAuMDMwMCAxIDUzMi4wNTA5IDUzMi4wNDY2IDAuMDAwMCA3MjY5LjAyNTcgODMzNC43NjU4IGFkZGNvbmljCistMjguOTQ4OCAxNTEuMDIyNCAxIDUzMi4wNDg3IDUzMi4wNTM1IC0zMS4wNTE0IDcyNjguOTc4MiA5MjU2Ljc3MDUgYWRkY29uaWMKKzQ0Ljk5OTggLTEzNC45OTk0IDEgNTMyLjA0OTcgNTMyLjA0NjIgLTQ1LjAwMDAgNjQ3MC45NTIwIDk3MTguMDAzNSBhZGRjb25pYworZHAKKzAgTFcKK04KKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis3NzMwIDgwNjkgTQorQworTgorNzczMCA5NTIzIE0KK0MKK04KKzY0NzEgMTAyNTEgTQorQworTgorNTIzMyA5NjkxIE0KK0MKK04KKzU0MDIgODM5MSBNCitDCitOCis2NTQ2IDc2MTUgTQorQworTgorMC4wMCAwLjAwIDAuMDAgMC4wMCBzZXRjbXlrY29sb3IKKzU5MTYgODY2OCBNCis3MDI2IDg2NjggTAorNzAyNiA4NjY4IEwKKzcwMjYgODkxNyBMCis1OTE2IDg5MTcgTAorQwore30gLTEuMCAtMS4wIHNvbGlkRmlsbAorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKK04KKzU5MTYgODY2OCBNCis3MDI2IDg2NjggTAorNzAyNiA4NjY4IEwKKzcwMjYgODkxNyBMCis1OTE2IDg5MTcgTAorQworMTcgTFcKK04KKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis1NzcwIDc4MDMgTQorMzkwNiA3ODAzIEwKK2RwCitOCis1MjYxIDgxNDIgTQorMzM5OCA4MTQyIEwKK2RwCitOCis1MDA3IDg0ODEgTQorMzE0NCA4NDgxIEwKK2RwCitOCis1MDA3IDg4MjAgTQorMzE0NCA4ODIwIEwKK2RwCitOCis0OTIzIDkxNTkgTQorMzA1OSA5MTU5IEwKK2RwCitOCis0ODM4IDk0OTcgTQorMjk3NCA5NDk3IEwKK2RwCitOCis1MDkyIDk4MzYgTQorMzIyOCA5ODM2IEwKK2RwCitOCis1NzcwIDEwMTc1IE0KKzM5MDYgMTAxNzUgTAorZHAKK3dzdDpkdXRjaDcyYmkgU0YKKzwwMT4gNjM1NCA5MzE5IDAgNjk3NiAtMSBzCit3c3Q6ZHV0Y2gyNGIgU0YKKzwxND4gNDI5MyA0NDkwIDAgNDU5MSAtMSBzCis8MTkyNzFjMjQxYzIxMjAwMTA2MDQwNT4gNDU4MyA0NDkwIDAgNjQ4NSAtMSBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6CislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMikgMgorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDUwIHB1dAorZHVwIDMgL0MwMDU4IHB1dAorZHVwIDQgL0MwMDY1IHB1dAorZHVwIDUgL0MwMDY2IHB1dAorZHVwIDYgL0MwMDc3IHB1dAorZHVwIDcgL0MwMDc4IHB1dAorZHVwIDggL0MwMDgwIHB1dAorZHVwIDkgL0MwMDk3IHB1dAorZHVwIDEwIC9DMDA5OSBwdXQKK2R1cCAxMSAvQzAxMDEgcHV0CitkdXAgMTIgL0MwMTAyIHB1dAorZHVwIDEzIC9DMDEwMyBwdXQKK2R1cCAxNCAvQzAxMDQgcHV0CitkdXAgMTUgL0MwMTA1IHB1dAorZHVwIDE2IC9DMDEwNyBwdXQKK2R1cCAxNyAvQzAxMDkgcHV0CitkdXAgMTggL0MwMTEwIHB1dAorZHVwIDE5IC9DMDExMSBwdXQKK2R1cCAyMCAvQzAxMTIgcHV0CitkdXAgMjEgL0MwMTE0IHB1dAorZHVwIDIyIC9DMDExNSBwdXQKK2R1cCAyMyAvQzAxMTYgcHV0CitkdXAgMjQgL0MwMTE3IHB1dAorZHVwIDI1IC9DMDExOSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTIzOCA5MjAgNzIyXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY5OUEzNEUzNjQ5ODQyQjE5NEY0OUQ4NDUwNjlERjg1NDkzCisxNTM5MDI1RDhCN0U1RjhCMUM1RDJDOTEKK0FDMzlBMThEOEJGMEM5MEQ5NQorNkRCMjU0MEQKK0FFQTcwNEYxMkI2QUNCQjdDMkU1Njg4RDBFCitCRUFDRkY0OTg2QzAyNUQ4N0YyMzE0QzlGODgxNDMyOEMyOUEzNTg0RDQ2MDZCRkJBMTE4RjZEREFDNkVCNjhERjkzNTBDNjc3QTA2NEFBQjFCNUJFMjBDQkU5QjI4Q0RCMjg4MkRBRDEwQkFGRUIyRDFEMTQ3RTcwRTkwNEQwQ0RBREUwNzU2Qjg1M0QzMTBGQjkyRkY5Q0Q5MzZFRUY3MUI3MjlGMDcyNjY0RDY5MjBGOTQKKzE1NzU1NTlBCiswNTZGMTEyQTRFOEZCNUM4QjY2NThERjY4NworQzlBNzc1RDkzNzk3NkQ0QTNFNDQzNkExOEExNEEwNzRFOTg5MUNGMUExM0M2QkEwNTk1MTk3ODE2OEQzMUMxMDM1QjU3MjdGRUQ1RDA5M0EyRTY1OUM0NTE5QkI4Mjk5MDEzQTRDN0YyNTlDCis2QTRCRTc4QworMDc3NjU2M0QyMEE1OTk3QjQ4M0U3NkVGRjAyMgorM0RCOUFDQTY4QUVDNURGRDUyQjc4NEVCQjBGRkYyODlDQ0I4QjhCQzBDOTU0NjI5REQwMjA3QjlBMzFBOTk4RDZFMTlENjIwQjE1ODNCNDY4QTlGODY1MUI0NzZDNkRCREIwQ0ZEMTA2NDE4QzFGQzE2MTY0NDI4QTc1MjQ5NEY5RkVDMTE2MjQ0OUUzQzA3OTAxMjNDMzYyMEVCNkRFMzM3QkE4QkQwMDdBNDgxMzhEMjA3Q0E2NjIwNkU2RDczNzdGM0Y3MEY4MjY3Q0FENUUxOUFFMjQwRjQ1MUNBMkFFQjYzNjEKK0RBMThEMkQyCis5RDc3NUM3RTc5RUE1NDJBQkM2MDJDM0I1RTE2CitGREFDQjlBNzVFMDExRDdCRUNCMDk4RjZFQjhGQ0UwOUQ0Q0VERkU3MDBGQ0IxRUVCREY0RkUzQjk5QzA0NTlCNzUxODA2RTY4RUU4OTMwMjExNjM3OTE1MzJFRjZBMkVGMzk0NkU0QkEzMEU4OUUxQkE2MEFEMjQxQ0ZFMjQ3MjNDMzczNDZFREI5Rjc4RkUxNTc5RTg2OUY3NUU1MjhBRDkxRDkxNUZENTJDQzI0QTMzMkU3RTM1MTY2MjVFNEJERUM4MjIyMjAzQ0UyNzdENTlGOTVDMzI5OTEzNTRBOThGNjlCNTAzNTIwODVFMkM2MzkzNDk2QTIxMTAKKzk1MzUKKzRBCitFMzM0RjQ1QQorNjNBQTlFRUIyRTg2RTg1RTM1Q0U1MkNCNjU4MworRkE0QzZGNjQxQTA5MjNDOTI1QjIwRTk5MTEyQUY5RDc4OUY3RTlBQUNBNTM0MEU1QTdBQkUyRDA3Qjg2RTJFODVDMkYyMDk2RDc1NzI3QjYyQjI5QzNBNjk2MTk2NjMyOTEwODg2QUNFRDg4N0EzMTg3Njc2MUZFODk1RDNDMDAxMjlBOTQwRUQ5QUE3NDg3MDlEQkMwQjYzQzlDRTdEOUMzMEEyMEIxNkMxNTFEN0QxNUQ2ODhGODdEREU0RkM5NzEzOEY2NDJGRTU2MzIyNURFNEY1MDU1QjNBMEM3CitFOUE4NDEyRgorNDY0MzI3MTVGQzc4NUJBMTkxN0ZEMjU3MTEKKzBBQjYzRkZFODVEM0RBMzRFNjI3QzAxQjUyQjA3OTlENDg2NDkyRUY5MEVCREVCQ0MyRURDNEVFQTkyNzI5NzQwMkZFNzFEQkREQTY0N0NEMzFBRkU0MTcxNkIxMTFFNDgyMkMxMTU2QzI4NzdEN0ZGQkVFNzdFNDUzMUFGOTNDREI5RTVBOUFFMTZCRUNCOEEzRDA5RkIwM0MyMjMyM0I5RUZCRDNCMTE5ODFFNjI5OTVDNDBBRTcKK0U2REVERTcyCis0Q0MzQzg2QjZDRUI3N0Y2Qzc2Q0Y2MzE5QUM1CiszNEQyNTc5OEMxQUNERDE0NkU2MUE3QTk4MTcyMTgyQ0JGRTU4QTREODUzNEIzOEFGMDBDN0I0MDM2MjVFQzAxQUEyMTBDOTI3ODdGNEVDMjc4MEJFNUMzRjAxMzA3RkEzMEVEMjAyMEFCNzhBMjc5Q0M0QzMzNjYwRUJFMDI4MjkzNDNGQjczOEE4RkM2NDM0OTJCQkJCQjJDODk5NDk4M0VCQUUwMzUxRkQzMjg2MTAwNDgyNDJEM0IxQTZFN0ZBRTM3OTdBMDI3QTEzNzQ0MDYzQgorRjFCMkEzNTMKKzJBMjAwQzIzMUY0RTBFQUIwNEExMTVBQzVENkIKKzVGOEI1QTE0QjE0Q0UzQTJGMjgxQ0I2MjdDOEZDQjgwMTJFMkE0MkEzQ0VBRUU1MzgzNTJERTA4MzkzOUZCRDM3MkVGOTc1QkIxNzNGODc1OTFFOUIwRDFEMjg1MzQxRDgzMTQ0OEZGRTFGRjFFMkRDRDM4MUEyRDgyRTAwQjI4MDMyMUFEMDIwNTVBRUUzOTdERjlENTQ4OTdEN0JFNkRGQ0U2NzM2MjFGMEIyREFBRTk3OEQxN0FEMzdCNUUyMEI1Njg2RTQ3MzEwRTRFOEVCQzNBNzYxNDMzNUQzMzU0NDE5NTU1MDEwQjEzREE0NDQ5QUEyQUZDMkEyMAorQjcyNAorMDlGOEU5CisxOUZDN0I5QgorNzYzOUQ5OTdCOTNDNkJDRjk3NjJBNkYwRTMKKzU4QkI5NkM4QjkxOEI5MUJBQzMxMUQ4RTI2MkEzNzhDQjIyMjE3N0NCQTZFRjFGMEUxMkY5MjI0MzZERjIwMEVGMjlEM0ZFRTBFQTUxNzUwMDEyQjQ4Mjk0ODcxNTg4OTVGNkNBOUY0QTlBRTNGRkY5N0EwN0IxNjREMzZFM0JDNUUxQjhFRjYzRkEwRDVBQkU4MTQ5NDAwMTZGRkNDNzBGNTcyCis2QjA5OUMxOAorQTNBOUE5RDMyRDUxQzAxRDQ2MDVFNzY4NkQKK0YwM0Y4MEIyODU4ODY2NEQ1OTYwMDY3NDgwOTJBOEUxMENCNzIyQzlGRUIwMDExRTg2QUYyNDQ2NzIwOERCM0Y5NDY1NDA0MEY0RTAyRDUzMkQ4QTYyMTREQ0FGNTBBOEFFMEUwQkNDOTdFMTk4NDM1MDVERjU1NzlBMDY2OTAyNjI1Qjc0RTUzNkUwQTMzOTEzOUI2OEZBNDcwQTUwQTkzMTM0REU2OUQ3Q0ZFQzRCNTAKK0NCMDNCRTI5Cis2M0NCNTdERjcxRUE2ODdBNDRDRUI1QzRCRAorQTVBMDkzRjQwNjYwNjk3QjZERjU3Q0VBRDYzQ0Q2NTI0RjBCNzNFNDYzQjAxMzcxMDk0RTg0N0Y3MkQ5MEUxRjUyQTI0RTM4QkIyOTNGQUZFNTREOUZCOUQwMUMwOTIzM0VBMUQzRjI2MkNDRDdFNzBGMTFGQzIzNjFDM0VFQUVCN0JCN0I1MkZFMjVENUExQjJGQjI2QkFDRDE5MTEzQjBGNkE2REJCOUJCMzRBNDg2N0U1NEI3MworQUIzNEUwQTAKK0EyMDg5QTczOTZFQTk1QzRDQ0MyNDFCM0IyMDYKKzVBMTU2MEIxNTY5ODQ5MDcxNTQ1RDJENzA1QjE2MTFGN0I2RDAxRTM5NDgxMkFFQUM3QTg5RTA0QzA2MjkyOUM3QkRERjBEODI0NDQxRjAzREVBODYyQzA1REQ5OUM0RDIzQUUxNURGNjQ2N0RBRDNDOEIxMjM1QkU5M0M0RTZEODlFMDIzQjgxOUZEODg0NUIxNTAyNTJBOTUwRDJGQzA5NkY3REZFQ0MxNTgwN0UzNEYzOThENTQzOTM3NEI4QzU3RDhCQkU0MEYwNkNGMzUwMzlEMUJENENBQUNBM0E0MDU0NzgyRTU3QUE5OEZBMEE1NzVCNzVFNkExMAorODlCRgorMkZFNkRDNkNEMTEyOEZCOUNDQTYwMzg1MzgyMTEwQTY0NzA1MjYxMEQyRjJBOEYxMTlBQkQyNDU4MEYwNzIwRjUzMkJFMUNEQTkxNjRFNDcyN0Q2QTU2MkU0NDNDNAorRUI1QjJFOTIKK0NDODUyMDNBN0NDMTlGOUJCQkUwQkUxNEE2MkYKKzlGNTgyM0I3OTNDMDQ3RTUwRTU2QjBFRDlENjI5NUQ4RTA5MTFBQTU4REM3MTEwQkExOTI3MUVCMzJBQjYyMzNGRTg2REVDNUQ2RkQwREJBNzYzREVBNDRBMUI2RUM0M0FGMjI0NjRDNDUzRkQyOUZERkFENTUyNDYxNUFDOEI2MzgzN0RGRkREMTAxQzQzRTIwRkM5NzI5RjkyNjQyMDAyODI4MzQzMTU0NzM1REJGRDI4RkVBMDJFNTE0N0U2QkU5ODc3RTZENTIwQTQ3RTc2NEFCNDM1QTEzCisxM0U4QUQ4NworRERDODVFNzkxOUFEMUMzMDU5NkQxREVBNjMKKzE5NjdENjYzRjlFQ0RDOEE5NzY0NjZCRUMzRDYwRTdGQUMxRTJGNThDMEM1NDUzMkZEOUI4NjQyRDA2MThBNjJGRkVFQjAyRjkxMjcyMEMyRjcwOERCMDY3NjAxRkFFMDk3QzZFMzg2MUVDNDJGMUY5MzJGM0VGNjZCNjAyMUU3MzkzMEM4RjcyODc4REVCNDU3MDNBOTM4NTFERTQ4MzUKK0Q5RjEzREFECis5MDM4Qjc4Q0MxOENGODNCRjY0NDQzNkQzQjZECitCNkVEMjEyRTA5M0IzNTdDMzU1NzFFNDc5RDlGRDRGRUVCMTEzOTZFRjYyMUUzQjlCMjcwNEE5MDFBRTUxQ0QyMzBERDM0MTQwMUI1NkQxQjZEOTI2QjUxMEY2NTQ5QkYwQUYzQjhDMjNFRjUwRUMxMzcxOUVFMjM0REVGQkM0MTgyMzQzRTRGMkQ5NzBFMEJBNkJGOTY5QTZCQkM0REI4Q0E1RkMxMjkwRTEzRDhBODkwOTM3RDI3QkVFODgxRUUxQUY1RDMzOTU2NDdGRDRDNkUyRDhGMzY2MUE3MERCQUM3MEIxMjlGQTE3OUFDMEM3OUE0NDk1RjgzNUQKKzAyNTMKKzhGMTY2QUQ1QjFBMzZEMkYzNDIwQkE1MUFCNzBEOEMwMjA5QzlGMkM0RkMxN0NENzQ1MThENTlDNEY2ODA4MjU0OURDODAKKzVBRjFEQjMxCisyNTMwRUE3MTRGNTQ2MENDQzI1OTgwNTZFRkRFCis4NzU3QkQ0MDQxQzJBMDI0RTAxMkEzNUM0NEQ4NTFGRkExMDg3MjJFREY0QjMyQzFBRTYyQjY1NjE5QzMxRjkxRDc4QzcyRDg3MDJDMDQ3NkQwMTMwNDk5NDIyOTdBQTQxNzExMDA1REQ3MjZDRjEzMEQ2Njg3OTQyMkQ0QzBENEUyRjAzNDRDQzBEQTYwNkNDMEFFNzk0MTUwQ0FGOTNERUI5Q0YxQzk4QjRCN0ZDNkE3Nzc5QTNBMTFBMjRDOTlDREFGRTVGMUQ3Q0ZBMkVGNTk2MTg5REZBRUZCQUVBMjNCQTI1RjFDQzQ0RTBFM0Y5RDYzNTI3RDRCOTYKK0JBQTEKKzZFMUUxQTA3QUU0QzUzQzIxREFEMkQ5NDIxMzkyMTREQjgzRTk5QjEyQzQxQ0I3Nzg4M0Q0QTM4QzZGRkIxCitGMEY2RjA1OQorNEQwREUyMjQ4RTlCMDYwMzQ3QTIyRTA4NzlDNQorODUxNkFDMTQ1OTU0NzdFMDgyQURCNzY5MzkwMkM5NDU0NDlFRjVERTIwREI1MjFEMDE4MDNGMUY1QkEwREUyQUEzNENDMTNENUE2NDg3MEJCRDA2MUMyODFCRUExMDYzNDI3Qzg3ODUwMEZGRTBGQkVGRkE2MTg1NUVENUQ0MDA4MThCMTkwNUU1Qjk5NEVFRkNDQjRBRjdDRjY5ODk4MDExRDdGNEIwRDM5NzBFMDNCNzlEQkQ2MkE0MDQ5RjBBRENFMjFCQzhBMzhDN0RFN0MwNUIwMTdBCitGOUJCMjhGOAorQjU5NDI3NDQ3MTUxQjQ1QjkyRURCODU5QTkKK0Y5QTI1N0EzQzZDMjI1QUQzMzREN0RGN0IzQjE0Nzg4MjFDNzNBRjhFRjg2OURFNzgxQzRFRkVERTMzOUY0OUFFNUIwNUM4MEQwMjQyOEMxMjdENTExRjQ1QTVDNTE0NkE0MjA3MjhCMTk0RDA5N0FBNzc2MTBFQzdBQTc2MDU2QkE2NDIyRDM5QjhCCitFMEUxODg4MworNTE5NDIxQjNEN0IwNDUxMDY5REZDMTQ0NzIzRgorNTQwMzQ1M0UwNTE3NUY3QjE2MTkxRDdFNDVFQzlGMjRCMThERUQ1OTIwRTZBMkZEN0I3RUU5RUU5OTQ4Mzg0REY1NzEyMTMzN0U5Qjc1RkJBQjYxQjhCNjY4Nzk3ODI5QzE4QkZGNUM5MzlGRjVFMTM5MzM1MjRENThBMkVBNDAxOUMxRjI1Qzg5NTdGQkRGNkE5OTRDQkRCQzcwQzBEMzg4OURDNDRCMTNFQjhFMEI5NTM3REVBNTkwNUY2NTY1QjNCRTU2QzQzREJGOEMyRjQ0Q0NFRUU4NENFRjMyRjY4QzJFRTE0QkRFNDYwMAorQkZCMjkzNjAKKzU0MTUzNDE5RDBBRUY4M0VDMDUwMzUzODMyCiswMUNERTQzRUQ3MzczRkIzQzQxREM3MkY0QkMwRkZCOEQ3QkNGNDg5MEQwMzJDRkMyNTA2RkU0RDc2RENFNEE4REUwNURFQjRDOTk2RjRGMkUxQUU3RjE3NTQwMkIxMkIzQUZDRkZCREZBODA4NTEwRkU2MEVFQUMyNTlBQjhDNzEwMTIxQzc2NzIwQjc2RDZFRUI0OUUyQTE1N0ZFMEU4RDZGQkYyMUI3MzcxMTMKKzNGNzc0RDEwCiswMUI4QTZBQzNCNjQ0QjM1MzM2QTQ4NUMyNTc2Cis5MTI4MTQ1NEZBM0EwQzE2M0FCNzJENUFBNzg4ODMyRTI0RUY2OTIyOEJEN0U2RTBDODhEREU3MDFCNjY3RjE4RjJCMzlFQUFCNUM4NEE5RUJBNzIxNDM1N0Q2QkI0OEM4RTA2MkUxMzJFMUREMUFFMTc3MkFEQTQ2NzFFNDlFODRCMzRENjQwMjU2MkJEQjE4NjhCMzNBNTFFOERGQTk3NjQ4MTc2QjQyNUExNDZEQkY0QUIxMUYxNDhBMjM4MUQ2NDgzMzcxRkVDMkE0NUQxMUNBRUMzNEM1OUVGQ0VCNTUxNDlCM0NGOERGNjgwMjQ5MjhFQzNBNgorNEU5OUZBQjMKKzhFNTM0ODMxREVEODAyRDdBODQzQUJDQUNFCitGRjhGODM3MDI4M0JCN0MzNkI4NTgzRjI0NjY4NzIxQkMzMTExNkQ4M0NGRDBCRjlDQkU2NUZDQThGQjVENTVDOTQ4NTFGNzFCRTdCRkE4RkMxRjE4NjkwRDVBNUZGM0Q4REJFNTNEOTA3MjIzOEQwMERGMDgwMUM0M0NEQUIxREY3QkM4RjVBNzUKKzNFODk0M0Y5CitCOUNEMDg4ODExNjYzMkM1OUQzNTQ2QkU0NQorNUQwN0U5ODQxMzM4MzM1REExMjMyRDEwMEMzMEMyOUQ3OTA5RThDMjg1MTQ4N0Q1RDkwM0Y4RTkyMThCOTNBRTcwNkMzNUE4M0JDRUM3REM1QkFBQjJFNjNFM0JGQjUwQ0ZGQkIyMzEyMTQ0MjhFRkU0ODBFRTgwNkEwNjE4MUFGQURFRTBCNDhFOUM1MUFBMEZDRURCNTJDQkREQzYzQzRCMzc2QTMxNUU0MUUwMzE2NDk3MkUwRTU0NjJGQjRFQjBBQgorMUI0NDM2NkUKKzEzRkIwRTNFMkE1NzA1OTkxMjFEMTlDQTAzRUIKK0UyRjFFRUU1RTNENkE5NTlGQkZGNTM3REE2N0Y4RTFEOTQ3MDVBNzc0OTg1MTVDMjYwOUM4QUZBRkQzOEQ0M0VBQTVGRUJEOUY2NzU1ODlENzkzOUQ4OTRCNTZCRkRGQzVCNjMzOUY1RjEyOTU0RDQxN0QwN0REMkNCM0M1MDIwNjUwMEY3RkU5MEJBN0I0MzFDQTExOEY0NzI5RjE0MDVCNDY4ODc1QTVGODRFOTdDM0YwQzBCOTdFRTExMkVDOEY0REFCN0YwNjQ4OUYxMjUzMDk0MTFDQTBFNzZCQjM2NERBMzlEQjFDQjczMzE2RkIwMDFBRDQ5NDkzNgorRUY5MgorNjI1NTBCNkYxQjlEMzU2QzNFRDFBOERCQzI4RgorQjFCM0QyMUMKK0YzRDk1QkUxNDI4NzY0NEQyNjJFMEMxMzhDNTQKKzAxMkM2RTAwQ0NDNDYxM0MKK0RCMTZEN0EwCisxQUVFM0FBRDNBRUI2RkE0Q0E0N0E1MDc5QkI2MkY0OEE2RDIwNTVDOTZCNEJDMjI2NkQ5OUU1MTRDNTdBRDgwRkU1NworMkIyNjAxNTQ2MURERTRFMjk1NjkwMEU0ODI2MTI0MEFCNDMxM0EyNEUzNzAwOEUwN0E4QkI5OTI3RjM0MzBENjY4NjRENDUzQ0Y3MAorNzk1QjY1RkZFRDIzODU5NjM5OTU0NzRFOTU2QTI4RURGNjE1NTYxMTU2MzE1QzNCRDcxMDI2CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ2IHB1dAorZHVwIDMgL0MwMDQ4IHB1dAorZHVwIDQgL0MwMDc2IHB1dAorZHVwIDUgL0MwMDgzIHB1dAorZHVwIDYgL0MwMDg0IHB1dAorZHVwIDcgL0MwMDk3IHB1dAorZHVwIDggL0MwMDk5IHB1dAorZHVwIDkgL0MwMTAxIHB1dAorZHVwIDEwIC9DMDEwMiBwdXQKK2R1cCAxMSAvQzAxMDMgcHV0CitkdXAgMTIgL0MwMTA0IHB1dAorZHVwIDEzIC9DMDEwNSBwdXQKK2R1cCAxNCAvQzAxMDggcHV0CitkdXAgMTUgL0MwMTEwIHB1dAorZHVwIDE2IC9DMDExMSBwdXQKK2R1cCAxNyAvQzAxMTYgcHV0CitkdXAgMTggL0MwMTE3IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzAgLTIwOSA2MzYgNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVEOUE0MzI3REEzOUNCMkRGRDc0ODhEQzMwQTgzQkQ2NTM2Cis1NDAwMTUxREFDMTA0MjY2QkU0RUJDQUUKKzRCMDgzMjEwMTZFMjhBQjRDOAorRDU2NEREMzcKKzM1NTA1RDg0MTE0Njk3NkVERkI0QkQ3MjlBCisyRjQ5RENDRDZCNEVDRTFEQUMzMkVBNTY3OTYxM0I3ODk0RUU2MUM3MjA1MEI2RENBMDgzMzQwMDBDNEExNgorNjgwQTM3ODEKKzI4MzJFRjI5OTJCMTEwNEVFMzZBMkJFQzA2Cis5MTg3RjU0REJCRDE0Q0I0OEZCRTgxOTUyMEVBOUUwNTdBRkExNTlENjIyRDc0QzVDNENCNEM0RTJGNzBENDhDMjhDNThBQzI1OUU0MUYzNkQ2QTE5M0YxRjEwMTM3RjhGNTY0MkUwREEzMjBFOTNFMUEwNzc0Q0Y5QTA2QTE1QThFNEEyQjM4MTYzQ0Q0MTBDOTk3RjEzMTIyOUY2QQorRDMzMkZCNkIKKzJGQkY0NTY0NTlCNjA4NjNCQThDMUY5MEZGCiszMEJEQzk3MUFFN0VCRDYyNzYxQjAyMzg0MEQ2OTFEOEIwOUExRjEwQzJCQjJBNjJFMEUwQTk4NjgwRjcwQUExOUMyRTFBNUQ2NDdGN0U5MDA2MkU5RERDQ0M1MThCNDdFREE5OUJFMzNBNkYwNjBBMDY1Q0JCREZCQ0REQzU0MzhCNDEwRDY5NzNDRDkzNkI0OQorQ0U1MTFCMEQKKzY1QzYxQkJCOEFGOEFBMEZGOUI3Rjc2REJGQjUKKzc4M0RCM0MwMzY0OUNBMDlDQjU5Mzk0Q0JFOEI5MjcwNkJENEE5MkY0N0JCQ0RDMDkwRDVGQzQzQkVDMEJBMkQzQjlERTY4QkFFNTBFMkM2RjI3NTRCQTdEMzc3MUMxMEI3RTVGREYyNkY1MjhCOTBGODFDQ0JCMkRDNDA0MjEzMEE4MkQ2NDdGMEYwMDg5REIyNTE2MUVGOUE2OTEyMjRCNDY5RUU3MjYyRDJEMTM4OTA5QkY1RDU1M0FCOTJGODNBMzg4RjA5MjEyRkY4RjZGNzI3NEIyNTRFOTdCQjREODBERjU1NDYwQ0I5OThCQzhEMDI2NEE5RjAxNworQjg5MgorOTk1RDgxOTEKKzkzMTc0MjQ3M0VCQ0M1OTlFNTA2QzY3NkRFCis3Q0IxQURDNzFBRTc1NjNBMkQ1QjlFOUI5QkU4NkU5MDI4MzJEQzQ2RTYyNzkwRTBDRDBBMDkwMzBCQzY2NjNEMkFEQ0Y5ODI1QTk2MkI5MTEzNDU1MzQ1QUExMEUyODBGRkM3RTNDMjBFQzMzQzM3OTQ5RDI2ODUwMTJBQjk3RkIxOUUxNjQ4REMxNzE0REY0OQorNEM4QUYzNUIKKzRDOEQ1MTU0MEVENzZFRDUwRjk2QjA5RkVGMUUKKzg4MDFCMjlCNjc0Rjk1NTFBOUI5MzAyOEIwRjY2Qjk1OEY5MzQ3MURCQTAzMUZFMDA0MjFDODQzRUU0NDcxRUQ4QUUzODM2QjEwMTI4NDREMDYzRkRGQjZDRDZGQzA0OTFCMUE1MzY5RDQ1OTBEMTc3Q0ZGREREQzI1QTMxREM2Qzc1MzM3RDg5QjBFQjA4OTdBNEMwNEZGMkM2NjEzQUU2NzMzRUY5Q0Q2QkQyQTY5RTBGQzZGRjAxREY3Rjc3MzMyOEI0N0ZFNDVENkNFRTAyMTA1Q0E4NUU5RDdBNDBCNTJFMzNCQzU4QTkyMDU1MEM0NDVGRkJDQjU2OAorRTZGOAorNkU4NzZFMUYKKzQ4QTI2Q0NGCitBNDQ1QjYxN0Y2QTQ3NUVERTUwNDBFNDI5QgorNTkwMDBCQTBCMTBEOTk3M0YwNkZDQUE0NTRBNjhGRDA0QjMzRDlFQjk1OUYxMjA0Njg3NzRENkUwQ0RGNTkzQjFGQkRENzY4QjU4NUYyQTZBMkJBQUM2QTM4Rjc4NTM4NjU4RTA1OTVFNTRDRTREMUE2N0JGOTBGN0U5QTAwMTkyNjBGODFGQzg5OTI2RUM0OEEwQTVEMDExN0FGN0ZEMTA1MDEKKzkxMzUzNTE5CitGOEE2NDdCMzM0QjhEQTFGNDI1REIzQjkxNAorQTBDNzc0M0JGNTc2QTZFRDhBREQ3OUE0NzdFRURBMUU1MDBERUI1NkQ2NkM1ODE1MDNDQzY5MEE0NTREQ0ZGRUM0NDExOTU0OTM2MkY0NkZGMDQyMzE0MjZFMjg3RkM0NDNFQUFENThENjYyRDIyQ0E1MTBCRjg0RDQ5MDkyN0M2OTE0QjNGQkQxMkIwMUM0NTY1NzREQzM3QkZDREQ1RTdGNjFEN0I0QjlGNUZDMUNFNzY2NTcxNgorMjY4RDQwNUYKK0M2QUM3NjlFQUI5QkY4NUI1RDM3RDk5M0NDCitDMjk5MkU0NDlFMTE2Q0IxMzg4QUE3MzI4MEZFNEExQ0MwNTdBNTk3NDVEMkY5OTUzRTIwMDY2OTU3MzFFNTBBMjUyNDFCOEY5RTlDREQyRkE0MEZDRTdFQjFDODVBRDc2NDdCMkE2NEMyNTJFRDlFOUQ1NzAwQzNGRTIyRUJDQUMzOEJCRTk4Q0IxQjZBMjBFMkY0OUZENUVCMTZBRjNCNjlBNkI0OTdGM0E3NDk5OTEzOTExQTcxQjgKKzJEQTE1RjdFCis5QjFDODk2MjkyNEJCRjBFOTcxMkVEOTI1QzU1CitFNEIwREYwRUYwQjZCOUFBMURGMTYwODQ3NkE4RDg4RjQ3QzU4NkFGQTNFRkM2OTBCNzhBQ0E5RkU4QjlFOTE0RUM4RDVFRDc5NTAzNzFEQjM3NTJGODY0MDJFRDUyRTUwMzQ0ODIyNDBBQkM2QTZCMjQ2NDBCODZDRTU2MzI3QjNFNkJFQ0M1QkM0MDgyOTVGOTMwRjNCN0NEODFEQkNCRjcwQTAwNjE1RDE1QjUwOEIwMzdGMERGQUExREM5OTVCMjk0M0NBRTc4MEI1RTEyODQ4MkEzMkFEMzY1MEIyNjM2NzhDRkQ3NzRBNDZBOEE4MTVEOUVFOEQyRkYKKzU1OTIKKzlBNjVBNDg3RENDNTQ2OTgyNDUzMTgyNDdDMkY2MkIzOTY5RkJCNDU5NDBCNEUyNDY2Njk3OUFGNDFBRTRERkY4NkE5QjU3QkMxCitERjZGOTZCMworRDU2Q0U5NUMxOEQ2MkNERTdDREI2RDc2MzI5NAorN0M0QUIzQUY4Q0Y4N0FGNEM5MDFDNzEyRjZBQ0Q5Q0Y1MTk1OEVFNzA4MERDNTdBRTAyNzM1NUFERDE2ODBFNEIwMEVERTMyMDc2RTQ4RjNGNTEwMUIwNThBNDI1MjREN0E1RTNGQ0JEMzlCQ0I2QURDQjc0RjRGMUNEM0JBNjE4RUU2MDYxMUM0RkEyMjBCREQ1MjIyN0YyRTk3M0U4MEIzMUFCNUYxQUEyNzVDNEVBMTA3OEZBM0Y4RDlENTY1MThGMzA2QTQ1NUU2RUFCRQorNkNGQUQxRUEKKzNFRDMxMTBCMEY2NThEQ0YyQjBGQjE3NThCCitBQzY3RTE0Mjk5Q0VFMEQ2RDQ1QjNBMTdGM0VDM0UyMTZCQUM3N0MyNEIyQzI1N0JCREVFRjA2QTkwODFDODc0QTFDNjlBRkRGRDQ2MERBMjU5M0M2QjQ5QUIzMDE5QjY2RjA2RDg3ODVCMkIxRDVGMEJCRkEzM0U4QjJGRkQ2ODQxQjg0NkQxQUQ3QUNGMjY1ODU2RDc5RDVBRjQKKzFERkQ0RkMzCis3NTQ2QzY5QzdGRUY0MEY3NjQwMDI4MzE3QworNkZGRTNBMkQxRUE0QjExMDBEQkU5MjU1OTg4NTM1RkFDRjIwQzFEQzdBNjZCODkwQUJEMkU0QTVCNjY5RjlDNTRDODk2OEQ3NzMyNkVCNDI0QTQ0MUIxNDQwNUY5NkY2NkNDRTlCMzAKKzQ2NzFGMzcxCitBRDlEMzc3RjdBMTg1QTQ1RDJBRjYwNUQ1RDg2CitDQzA2RTgwMjMwMjlDRkY5RDM4MUFFOTUzQjNGRTY0REU4RTMwNEVDNEJFRUVEQzNFREE2RjIzNjk5NUY2Q0RBNTFBQjk2OTJCNTM1M0ZGMTI0RjdFRjZFNUNFMTQ5MkMzMjU5OTk2OTg5MERDRTQ2NEEyNkY5NUFBOEFBOUFBNTFFMTEzMTVGMUYyQTU4OTE1QzAyRTkyMDQ2M0MxRTQzNENCMjNGQUFCNDEzOUIyNTFBMjFDQTFENzVGRTk1NENGQUY3MkFBMEVGMUI3QQorREQzMEYyQzcKKzdFRTUwNjBDN0M2MkYzMjJFNEZDRDI3OEMxCitDQkIyRDg3QjUxQTMyMjA1Q0NFNkUwRUI1RDUwRTZERTk5NzhCRTk4Mzc1MzYxQTdBN0JFMkJCODk2OEE2Mjc0NTA2NzA3NERFNEU1RDJGNjg5MERFQUQ4QTExODlCNUM4QUE1RjE2QTNERjFGMTBFM0E0MzE2MzFGODc2MTFBOTBBRTNGMjY5MEI3NgorRkZFNTdFNzUKKzRERUNCNjgxMEVDRDBDMEM1NEFBNDlEMzE2CiswNTVGMTJDODM4QzQ4NjkyRERENkNBODkwRUIxRTVBMTEzRDA1NTY2REEzNTI1NjY3QUM4MjEyNzRDNEYwRDI4NDk2MDI1QTlCMjk4OTk5RjFFMzUxODRGOTg3NUVGMzZCMTIxNzUxNDMxQTc2QzY0Njk3MjY5QTFFMUUxNzdBMURCNzhEOTFBCis0N0I5QUFCMgorQjgxMzMzNkYxMDlENkE1MUM2NDk1OTg1NzgKK0NDMUM0MzdFMTYxOTdENEI2M0E4RjEzREQ5MEVCNjQwM0I1Qzc4REYxOUNEM0Y3RTM2MDZDODA5NTU3RTA1Q0YzRjQ3QTA1MDAxMkExNEExODE0ODdCREVENkQzMDNGQUM2MjgwRUZBMjFBNEFDNTcwMzI5QjIzNDE2NTcwQjgyRUM5RkJGMUZCOEY3MjlEN0U2NENEQjlBMzU4OTdFNTU5NjREREREMTU0QzhFMjAyQUVGNUM4CitFRjE5MTQ2QworRkRDQTVBNzU3NUM0MEQ4MDgxQ0RDNDQwM0M3MQorQTM2RkVFQ0IzMjVDMEU1NworRjQxRDQxRjgKK0FGMTBCRDI4QjE3RkY5NkJBQjEwODJEMEY1RDk5QkZENTE3Njc0QjIzMTYwQjc3OENGQjYyNENBNzZFRTU3RjFBMkI2CisyRTE1RTJCQ0RCQTJDNzcxNjVGMDA3NDAyMTY2RUE1Q0I3ODRGMUMxRUE1QkZBREVDNTdERTZFQjc5OEZCODg5REI4NzU4NTQ2Nzc0CisyODlFMDUzQTdCRDM4OEQyNzBERkJBNDg1OTkzQTE3MkFGMTgzNjRDREJDODY2MDRGQjVBRTQKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IENvdXJpZXIKKy93c3Q6Y291cnBzMTAgMTAuMDAgL0NvdXJpZXIgL3dzdDpjb3VycHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MDcwYjE3MTQwYjE1MGMwMzAxMDQwMTA1MGIxMjBhMGUxMTA5MTUxMDAxMGMxMzE1MDEwNjBiMDkxNjE4MTUwZjEyMGQwMTA3MGIxNzE5MTMxNTEwMDEwOD4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwwYjE1MGMxMzE1MTEwOTEyMGEwYj4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDI+IDk0MzQgMTMzMDAgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2EyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTMyMiAxMzI4MCA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjgwIDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI4MCAzIDcxMzMgMzIgcword3N0OmR1dGNoMTRiIFNGCis8MDUwOTA4MTEwZDEwMGY+IDEyNzEgMTQ1OCAwIDIwNTUgLTEgcworPDAwMDMwMjAwMDYwYzA5MDAwNDA5MGIwNzBlMDAwNTExMTIwYTBhPiAyMDU1IDE0NTggNCA0MDA3IDAgcword3N0OmNvdXJwczEwIFNGCis8MjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQzNmY3MDc5NzI2OTY3Njg3NDIwMjg0MzI5MjAzMTM5MzkzMzJjMzEzOTM5MzQyYzMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiAxMjcxIDIyNjMgMTggODI2NyAzMiBzCis8MjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA0MTRjNGMyMDUyNDk0NzQ4NTQ1MzIwNTI0NTUzNDU1MjU2NDU0NDJlPiAxMjcxIDI0NjcgMjcgNjA0MSAzMiBzCis8MjAyMDU0Njg2NTIwNjU2ZTYzNmM2ZjczNjU2NDIwNzM2ZjY2NzQ3NzYxNzI2NTIwNjE2ZTY0MjA2NDZmNjM3NTZkNjU2ZTc0Njk2ZjZlMjA2OTZlNjM2Yzc1NjQ2NTczMjA2MzZmNzA3OTcyNjk2NzY4NzQ2NTY0MjA3NzZmNzI2YjczMjA2ZjY2PiAxMjcxIDI4NzUgMTAgODU4NSAzMiBzCis8MjAyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjJlMjA0NjZmNzIyMDYxNzMyMDZjNmY2ZTY3MjA2MTczMjA3OTZmNzUyMDYzNmY2ZDcwNmM3OTIwNzc2OTc0NjgyMDc0Njg2NTIwNjY2ZjZjNmM2Zjc3Njk2ZTY3PiAxMjcxIDMwODAgMTIgODI2NyAzMiBzCis8MjAyMDZjNjk2ZDY5NzQ2MTc0Njk2ZjZlNzMyYzIwNzk2Zjc1MjA2MTcyNjUyMDY4NjU3MjY1NjI3OTIwNjE3NTc0Njg2ZjcyNjk3YTY1NjQyMDc0NmYyMDI4NjkyOTIwNzU3MzY1MmMyMDcyNjU3MDcyNmY2NDc1NjM2NTJjMjA2MTZlNjQ+IDEyNzEgMzI4NCAxMSA4MzczIDMyIHMKKzwyMDIwNmQ2ZjY0Njk2Njc5MjA3NDY4NjUyMDczNmY2Njc0Nzc2MTcyNjUyMDYxNmU2NDIwNjQ2ZjYzNzU2ZDY1NmU3NDYxNzQ2OTZmNmUyYzIwNjE2ZTY0MjA3NDZmMjAyODY5NjkyOTIwNjQ2OTczNzQ3MjY5NjI3NTc0NjUyMDc0Njg2NT4gMTI3MSAzNDg4IDExIDgzNzMgMzIgcworPDIwMjA3MzZmNjY3NDc3NjE3MjY1MjA2MTZlNjQyMDY0NmY2Mzc1NmQ2NTZlNzQ2MTc0Njk2ZjZlMmMyMDY5NmU2MzZjNzU2NDY5NmU2NzIwNmQ2ZjY0Njk2NjY5NjM2MTc0Njk2ZjZlNzMyYzIwNjY2ZjcyPiAxMjcxIDM2OTIgNyA3NDE5IDMyIHMKKzwyMDIwNmU2ZjZlYjE2MzZmNmQ2ZDY1NzI2MzY5NjE2YzIwNzA3NTcyNzA2ZjczNjU3MzIwNmY2ZTZjNzkyZT4gMTI3MSAzODk2IDQgNDU1NyAzMiBzCis8MjAyMDMxMmUyMDIwNTQ2ODY1MjA2NTZlNjM2YzZmNzM2NTY0MjA3MzZmNjY3NDc3NjE3MjY1MjA2MTZlNjQyMDY0NmY2Mzc1NmQ2NTZlNzQ2MTc0Njk2ZjZlMjA2OTczMjA2ZDYxNjQ2NTIwNjE3NjYxNjk2YzYxNjI2YzY1MjA2MTc0MjA2ZTZmPiAxMjcxIDQzMDQgMTMgODU4NSAzMiBzCis8MjAyMDIwMjAyMDIwNjM2ODYxNzI2NzY1MjA2OTZlMjA2ZjcyNjQ2NTcyMjA3NDZmMjA2MTY0NzY2MTZlNjM2NTIwNzQ2ODY1MjA2NzY1NmU2NTcyNjE2YzIwNjQ2NTc2NjU2YzZmNzA2ZDY1NmU3NDIwNmY2Nj4gMTI3MSA0NTA4IDE0IDc1MjUgMzIgcworPDIwMjAyMDIwMjAyMDY4Njk2NzY4YjE3MDY1NzI2NjZmNzI2ZDYxNmU2MzY1MjA2ZTY1NzQ3NzZmNzI2YjY5NmU2NzIwNzA3MjZmNjQ3NTYzNzQ3MzJlPiAxMjcxIDQ3MTIgOCA1ODI5IDMyIHMKKzwyMDIwMzIyZTIwMjA1OTZmNzUyMDZkNjE3OTIwNmU2Zjc0MjA2NDY1NmM2NTc0NjUyMDYxNmU3OTIwNjM2ZjcwNzk3MjY5Njc2ODc0MjA2ZTZmNzQ2OTYzNjU3MzIwNjM2ZjZlNzQ2MTY5NmU2NTY0MjA2OTZlMjA3NDY4NjU+IDEyNzEgNTEyMCAxMyA3OTQ5IDMyIHMKKzwyMDIwMjAyMDIwMjA3MzZmNjY3NDc3NjE3MjY1MjA2ZjcyMjA2NDZmNjM3NTZkNjU2ZTc0NjE3NDY5NmY2ZTJlMjA0MTZjNmMyMDY4NjE3MjY0MjA2MzZmNzA2OTY1NzMyYzIwNjE2ZTY0MjA2MzZmNzA2OTY1NzMyMDY5NmU+IDEyNzEgNTMyNCAxNCA3OTQ5IDMyIHMKKzwyMDIwMjAyMDIwMjA3MzZmNzU3MjYzNjUyMDYzNmY2NDY1MjA2ZjcyMjA2ZjYyNmE2NTYzNzQyMDYzNmY2NDY1MjA2NjZmNzI2ZDJjMjA2ZjY2MjA3NDY4NjUyMDczNmY2Njc0Nzc2MTcyNjUyMDZmNzI+IDEyNzEgNTUyOCAxNSA3MzEzIDMyIHMKKzwyMDIwMjAyMDIwMjA2NDZmNjM3NTZkNjU2ZTc0NjE3NDY5NmY2ZTIwMjg2OTZlNjM2Yzc1NjQ2OTZlNjcyMDZkNmY2NDY5NjY2OTYzNjE3NDY5NmY2ZTczMjkyMDZkNzU3Mzc0MjA2MzZmNmU3NDYxNjk2ZTIwNjE3NDIwNmM2NTYxNzM3ND4gMTI3MSA1NzMyIDEyIDgzNzMgMzIgcworPDIwMjAyMDIwMjAyMDZmNmU2NTIwNmY2NjIwNzQ2ODY1MjA2MzZmNzA3OTcyNjk2NzY4NzQyMDZlNmY3NDY5NjM2NTczMmU+IDEyNzEgNTkzNyAxMCA0OTgxIDMyIHMKKzwyMDIwMzMyZTIwMjA1NDY4NjUyMDY1NmU2MzZjNmY3MzY1NjQyMDczNmY2Njc0Nzc2MTcyNjUyMDYxNmU2NDIwNjQ2ZjYzNzU2ZDY1NmU3NDYxNzQ2OTZmNmUyMDY4NjE3MzIwNmU2Zjc0MjA2MjY1NjU2ZTIwNzM3NTYyNmE2NTYzNzQ2NTY0PiAxMjcxIDYzNDUgMTIgODQ3OSAzMiBzCis8MjAyMDIwMjAyMDIwNzQ2ZjIwNzQ2NTczNzQ2OTZlNjcyMDYxNmU2NDIwNzE3NTYxNmM2OTc0NzkyMDYzNmY2ZTc0NzI2ZjZjMjA2MTZlNjQyMDY5NzMyMDZlNmY3NDIwNjEyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjJlPiAxMjcxIDY1NDkgMTYgODU4NSAzMiBzCis8MjAyMDIwMjAyMDIwNzA3MjZmNjQ3NTYzNzQyZTIwNDE3NDIwNjEyMDY2NzU3NDc1NzI2NTIwNzQ2OTZkNjUyYzIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmMmUyMDZkNjE3OTIwNmY3MjIwNmQ2MTc5MjA2ZTZmNzQ+IDEyNzEgNjc1MyAxNiA4MzczIDMyIHMKKzwyMDIwMjAyMDIwMjA2ZjY2NjY2NTcyMjA2MTIwNzY2NTcyNzM2OTZmNmUyMDZmNjYyMDc0Njg2NTIwNzM2ZjY2NzQ3NzYxNzI2NTIwNjE2ZTY0MjA2NDZmNjM3NTZkNjU2ZTc0NjE3NDY5NmY2ZTIwNjE3MzIwNjEyMDcwNzI2ZjY0NzU2Mzc0MmU+IDEyNzEgNjk1NyAxNiA4NTg1IDMyIHMKKzwyMDIwMzQyZTIwMjA1NDQ4NDUyMDUzNGY0NjU0NTc0MTUyNDUyMDQxNGU0NDIwNDQ0ZjQzNTU0ZDQ1NGU1NDQxNTQ0OTRmNGUyMDQ5NTMyMDUwNTI0ZjU2NDk0NDQ1NDQyMGJhNDE1MzIwNDk1M2JhMmU+IDEyNzEgNzM2NSAxMSA3MzEzIDMyIHMKKzwyMDIwMjAyMDIwMjA0ODQ1NTc0YzQ1NTQ1NGIxNTA0MTQzNGI0MTUyNDQyMDQzNGY0ZDUwNDE0ZTU5MjA0NDRmNDU1MzIwNGU0ZjU0MjA1NzQxNTI1MjQxNGU1NDIwNTQ0ODQxNTQyMDU0NDg0NTIwNTU1MzQ1MmM+IDEyNzEgNzU2OSAxMyA3NjMxIDMyIHMKKzwyMDIwMjAyMDIwMjA1MjQ1NTA1MjRmNDQ1NTQzNTQ0OTRmNGUyYzIwNGQ0ZjQ0NDk0NjQ5NDM0MTU0NDk0ZjRlMjA0ZjUyMjA0NDQ5NTM1NDUyNDk0MjU1NTQ0OTRmNGUyMDRmNDYyMDU0NDg0NTIwNTM0ZjQ2NTQ1NzQxNTI0NTIwNGY1Mj4gMTI3MSA3NzczIDEzIDgzNzMgMzIgcworPDIwMjAyMDIwMjAyMDQ0NGY0MzU1NGQ0NTRlNTQ0MTU0NDk0ZjRlMjA1NzQ5NGM0YzIwNGU0ZjU0MjA0OTRlNDY1MjQ5NGU0NzQ1MjA0MTIwNTQ0ODQ5NTI0NDIwNTA0MTUyNTQ1OTI3NTMyMDQ5NGU1NDQ1NGM0YzQ1NDM1NDU1NDE0Yz4gMTI3MSA3OTc3IDEzIDgyNjcgMzIgcworPDIwMjAyMDIwMjAyMDUwNTI0ZjUwNDU1MjU0NTkyMDUyNDk0NzQ4NTQ1MzJlMjA0ODUwMjA0NDRmNDU1MzIwNGU0ZjU0MjA1NzQxNTI1MjQxNGU1NDIwNTQ0ODQxNTQyMDU0NDg0NTIwNTM0ZjQ2NTQ1NzQxNTI0NTIwNGY1Mj4gMTI3MSA4MTgxIDE1IDc5NDkgMzIgcworPDIwMjAyMDIwMjAyMDQ0NGY0MzU1NGQ0NTRlNTQ0MTU0NDk0ZjRlMjA0OTUzMjA0NTUyNTI0ZjUyMjA0NjUyNDU0NTJlMjA0ODUwMjA0NDQ5NTM0MzRjNDE0OTRkNTMyMDQxNGM0YzIwNTc0MTUyNTI0MTRlNTQ0OTQ1NTMyYz4gMTI3MSA4Mzg1IDEzIDc5NDkgMzIgcworPDIwMjAyMDIwMjAyMDQ1NTg1MDUyNDU1MzUzMjA0MTRlNDQyMDQ5NGQ1MDRjNDk0NTQ0MmMyMDU3NDk1NDQ4MjA1MjQ1NDc0MTUyNDQyMDU0NGYyMDU0NDg0NTIwNTM0ZjQ2NTQ1NzQxNTI0NTIwNDE0ZTQ0MjA1NDQ4NDU+IDEyNzEgODU4OSAxNSA3ODQzIDMyIHMKKzwyMDIwMjAyMDIwMjA0NDRmNDM1NTRkNDU0ZTU0NDE1NDQ5NGY0ZTJlMjA0ODUwMjA1MzUwNDU0MzQ5NDY0OTQzNDE0YzRjNTkyMDQ0NDk1MzQzNGM0MTQ5NGQ1MzIwNDE0YzRjMjA1NzQxNTI1MjQxNGU1NDQ5NDU1MzIwNGY0Nj4gMTI3MSA4NzkzIDEyIDgwNTUgMzIgcworPDIwMjAyMDIwMjAyMDRkNDU1MjQzNDg0MTRlNTQ0MTQyNDk0YzQ5NTQ1OTIwNDE0ZTQ0MjA0NjQ5NTQ0ZTQ1NTM1MzIwNDY0ZjUyMjA0MTIwNTA0MTUyNTQ0OTQzNTU0YzQxNTIyMDUwNTU1MjUwNGY1MzQ1MmU+IDEyNzEgODk5OCAxMiA3NTI1IDMyIHMKKzwyMDIwMzUyZTIwMjA0ODQ1NTc0YzQ1NTQ1NGIxNTA0MTQzNGI0MTUyNDQyMDQzNGY0ZDUwNDE0ZTU5MjA1NzQ5NGM0YzIwNGU0ZjU0MjA0OTRlMjA0MTRlNTkyMDQ1NTY0NTRlNTQyMDQyNDUyMDRjNDk0MTQyNGM0NTIwNDY0ZjUyMjA0MTRlNTk+IDEyNzEgOTQwNiAxNCA4NTg1IDMyIHMKKzwyMDIwMjAyMDIwMjA0NDQ5NTI0NTQzNTQyYzIwNDk0ZTQ0NDk1MjQ1NDM1NDJjMjA1MzUwNDU0MzQ5NDE0YzJjMjA0OTRlNDM0OTQ0NDU0ZTU0NDE0YzIwNGY1MjIwNDM0ZjRlNTM0NTUxNTU0NTRlNTQ0OTQxNGMyMDQ0NDE0ZDQxNDc0NTUzPiAxMjcxIDk2MTAgMTIgODQ3OSAzMiBzCis8MjAyMDIwMjAyMDIwMjg0OTRlNDM0YzU1NDQ0OTRlNDcyMDRjNGY1MzU0MjA1MDUyNGY0NjQ5NTQ1MzI5MjA1MjQ1NGM0MTU0NDU0NDIwNTQ0ZjIwNDE0ZTU5MjA1NTUzNDUyYzIwNTI0NTUwNTI0ZjQ0NTU0MzU0NDk0ZjRlMmM+IDEyNzEgOTgxNCAxMyA4MDU1IDMyIHMKKzwyMDIwMjAyMDIwMjA0ZDRmNDQ0OTQ2NDk0MzQxNTQ0OTRmNGUyYzIwNGY1MjIwNDQ0OTUzNTQ1MjQ5NDI1NTU0NDk0ZjRlMjA0ZjQ2MjA1NDQ4NDUyMDUzNGY0NjU0NTc0MTUyNDUyMDRmNTIyMDQ0NGY0MzU1NGQ0NTRlNTQ0MTU0NDk0ZjRlMmU+IDEyNzEgMTAwMTggMTMgODU4NSAzMiBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgQ291cmllcgorJSUrIGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMykgMworJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDM5IHB1dAorZHVwIDQgL0MwMDQwIHB1dAorZHVwIDUgL0MwMDQxIHB1dAorZHVwIDYgL0MwMDQ0IHB1dAorZHVwIDcgL0MwMDQ1IHB1dAorZHVwIDggL0MwMDQ2IHB1dAorZHVwIDkgL0MwMDQ3IHB1dAorZHVwIDEwIC9DMDA0OCBwdXQKK2R1cCAxMSAvQzAwNDkgcHV0CitkdXAgMTIgL0MwMDUwIHB1dAorZHVwIDEzIC9DMDA1MSBwdXQKK2R1cCAxNCAvQzAwNTIgcHV0CitkdXAgMTUgL0MwMDUzIHB1dAorZHVwIDE2IC9DMDA1NCBwdXQKK2R1cCAxNyAvQzAwNTUgcHV0CitkdXAgMTggL0MwMDU2IHB1dAorZHVwIDE5IC9DMDA1NyBwdXQKK2R1cCAyMCAvQzAwNTggcHV0CitkdXAgMjEgL0MwMDU5IHB1dAorZHVwIDIyIC9DMDA2MyBwdXQKK2R1cCAyMyAvQzAwNjUgcHV0CitkdXAgMjQgL0MwMDY2IHB1dAorZHVwIDI1IC9DMDA2NyBwdXQKK2R1cCAyNiAvQzAwNjggcHV0CitkdXAgMjcgL0MwMDY5IHB1dAorZHVwIDI4IC9DMDA3MCBwdXQKK2R1cCAyOSAvQzAwNzEgcHV0CitkdXAgMzAgL0MwMDcyIHB1dAorZHVwIDMxIC9DMDA3MyBwdXQKK2R1cCAzMiAvQzAwNzYgcHV0CitkdXAgMzMgL0MwMDc3IHB1dAorZHVwIDM0IC9DMDA3OCBwdXQKK2R1cCAzNSAvQzAwODAgcHV0CitkdXAgMzYgL0MwMDgzIHB1dAorZHVwIDM3IC9DMDA4NCBwdXQKK2R1cCAzOCAvQzAwODUgcHV0CitkdXAgMzkgL0MwMDg3IHB1dAorZHVwIDQwIC9DMDA4OSBwdXQKK2R1cCA0MSAvQzAwOTYgcHV0CitkdXAgNDIgL0MwMDk3IHB1dAorZHVwIDQzIC9DMDA5OCBwdXQKK2R1cCA0NCAvQzAwOTkgcHV0CitkdXAgNDUgL0MwMTAwIHB1dAorZHVwIDQ2IC9DMDEwMSBwdXQKK2R1cCA0NyAvQzAxMDIgcHV0CitkdXAgNDggL0MwMTAzIHB1dAorZHVwIDQ5IC9DMDEwNCBwdXQKK2R1cCA1MCAvQzAxMDUgcHV0CitkdXAgNTEgL0MwMTA3IHB1dAorZHVwIDUyIC9DMDEwOCBwdXQKK2R1cCA1MyAvQzAxMDkgcHV0CitkdXAgNTQgL0MwMTEwIHB1dAorZHVwIDU1IC9DMDExMSBwdXQKK2R1cCA1NiAvQzAxMTIgcHV0CitkdXAgNTcgL0MwMTEzIHB1dAorZHVwIDU4IC9DMDExNCBwdXQKK2R1cCA1OSAvQzAxMTUgcHV0CitkdXAgNjAgL0MwMTE2IHB1dAorZHVwIDYxIC9DMDExNyBwdXQKK2R1cCA2MiAvQzAxMTggcHV0CitkdXAgNjMgL0MwMTE5IHB1dAorZHVwIDY0IC9DMDEyMCBwdXQKK2R1cCA2NSAvQzAxMjEgcHV0CitkdXAgNjYgL0MwMTIyIHB1dAorZHVwIDY3IC9DMDEyNyBwdXQKK2R1cCA2OCAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yNTYgOTc4IDczOV0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNEMyMkE1MTFCRDVDQTI1RDQ2NTQyNDUzOTIwQTY3ODE0NworQUZDMjFGQTdGNEY1ODYyQ0YxNzA5RjZDCitCRjhDM0VDQ0JGRTQ1MDdEQjUKKzYxMkU0OTFGCiswODdBMTJEMEFEQjgyRjI4REE5M0ZDMjNGNTJDCitDRUFGNTI0OTQwQzc3NjI1OTQ3QUJDMTcyMjAzODQ2NjNCNjQ3ODE1Rjk0Qzk3MzIyRUUzQUEyNjVCRjE4MENBQjNCNzE4Mjc5QUZFMjJGOUNBREU4Q0NEMDk4NThGNzBCQTY0NEYxNDEyQ0RDNkRBRjZGODEwRDJFQTZDNTAyMENEM0Q2NkQxRTBERDQ1Qjc2QTMwMUMwNkIxQ0Y5NjAyODI5RjU0OTEzQkY3ODdBMEEzRjkzMTA5MjREODlGNUMyMkNBNkJCNTczREJFQQorNTcyQzIyOEEKKzlDN0REMDk0NEMxQkFCMkI3QkVFMTMxMkZCCis5QUJGNEQ1RjdCNkY2N0E2MDMwODgyODlEOTgyNjQzMDY1RkM4MTYyOEY3QTM5ODVEMTRGOTBGMzEwOUFCODM2MzYxMTA4MTc4NDAxOTk1OEY2NjdDMEJFQjAzRkY4RjdCRUU1MjM0MDg5RjM5RjYzCitEREY2OENFNworQTYyRkY5NjUzNkVFMTE2Rjg2RUYyRTVCRDMKKzU5OEVDNTI4NTI3NzMwQUY3RDY0NzRBMzQ4MzUwMkVGQkZBNTg2NjQ1MENDNDEyQ0Q1NEIwNTlERURCQUY2MTlFMzkxRTg3NEEyRTgxMkNENTQzMjQ4RTE0RDc1ODY0NEExRkRBOTg1RTY4NTM4MDcwNjc2QUU4RjcyN0Y5QTcyCis4RkE5NUQ0OAorRUExNEQ5QzIwQzIyN0ExMUE0OEYxOEJDQ0UKK0FGMkFEMjlDMjdEMzMyMEQ4NUQ2Nzk4MjdDQzZDNDZCNEE3NENEODAwNzFCMjUwQTZCQjVDRkEwRTVEQTM3NUY2QkU1QzJCMDREQzg4Rjc2MzY5OTYwMkUzMkRFODczQTdGMTE2QkI3QjI1ODQ1RDg1QzI5N0RGNTRCM0FCQworMEU1QTY3NTgKKzNDMUExMzMwNjgwNUY0NEU3OUQwRThGRkY0CisxMDc5MkEyNTY5QzM5QTk3RDhCMTc0NkMxMTE1RDNCREE5RjRGQkI1MkM2NzBBOUU0MDk4RTMzQUZEQTZCNjExQTQ1OEI2N0YwODUzRUU4OEI0RDFCNjAxMTg4OEExOTdBQTQ5RjM5MzBGNTA3MDI5QTQKK0VBOTM4N0MzCisxMEUzMTJDRTFFRTE1QkY4MUM2NTRCNzU0QworNzkzN0Y2NzhGOTUwNkY5MjJFNEQyQTdBNDhDQTdFNzNCRTQwQkI1QzQ3NzZEQgorMUUxMDAwQjEKKzVBQzlGN0U1RDRGNjM0ODJFRTk3ODk4NDBBCis1NjIwQzhERDhGNjhFMTJCOTY1RTQyMEM4NkM1Q0FFRDY0NUE3Q0IzNjdERUEyMkRDNEQ3NTQzQ0I2OEU4MgorM0REQ0VDRUEKKzQ1MjFFRDA4RkJDOEZBOTk3QTZBMTg5RDBDCis5NTRGRjNFRTgzMTY3RENCRDY2Q0U5N0EwMTVDRUIzRERDNUU1NzUyMkMzMTlEQjgyQjQ2NDAzOAorQ0EzRERCMkUKKzAxMTk5OUZGMzc0OEJGQTY5QzdGN0RFOTUxCis3OTg3NUYyMURGQzhFMjA0MzlFRjc0QjgzNTVCM0JFNjA4Q0I3RjcwQzY2MEZBNjk0QTQ0NEI0NjlGN0NEMTMwRTIzQkU5MEY2NEVGRDcwQ0E2QUU3ODc2QjBFMDNEOTUwQTlDNjAyODgwRjEyMUUxOTEzNUU4QzdCNzJDRUYxNTU2N0IzRUVGMDMyQ0YyOUU0MDhECis4RUEyRDU1RAorOTg2MDBBNUZBOTAzRDQ1RDI2MUUzQTRBRkQKK0I3NTA5QTE5QUIzQUUzNDIwNEY2Qzk4QkVFN0M4NEQxRjk0RTE1OTM0OEQzOENFMTgzRTYyNUU0ODA2NjQ0QkM3OUY4QzQxOERGRjlDNjAwMDE1NDczOTI1ODRGMDk4N0RDNzgzNDY0NUM5MjE3NjZEQUExMUNEOTVDNTZBRQorODVCRDU3QTcKKzFDODJBRTY2M0M1QTk1MTAxM0NFNzNGNjMyCiswRTdGQkNFOTUwOTdBNEI1NTM0OENBQjZEMjZGNTY4ODM3QzU3NzkxRjVGRjdFRjY0MUIzQUNGMEQ3REYxM0VFMjhBQUE3MUE2QjdFMDNFN0E4Nzk4MjZGNDkxNjM2Rjg0Q0QyMTg3NDI1QkYyNTFDQ0ZDMzQzNDlBMzBBQzY5RjlBQUJBQUUyQTFGQzhEQUE0N0I0OERDQTQ0MEVGODYxOEI4MEVCQ0U4RUU2MTE5NDJBRUYKKzkyM0RBNEUxCitGQ0M1MUY3NjVDNDJFRjNFQUQ4NjlDMUQzRTY1CisyMjkyOTM5MUEyMTMyMEMxQ0NDQTEyNDY5N0IzMkJBMjY0QzBCNkZFMjIxOEFGOTg2NUFDQzFBMkFEOThFMkM4MEQyRUY3QkNDREQ3QjY1RUU0MzRCMUM1MzM2MDU2OEM1RDVEODcxMERCM0Q3NDlFMUYwNzVFQjUzQTZFQ0NEMTc4RTBGMDlEQTAyREY4MUYzNTdGMjAxNUI2MUJBOUQ0NERBNjVBOEE2MEU2QUEzNTlFMTE5NjQzQjQ1NDE5RDZDQTQwOEEwQjQ5OTBCMURDN0QzRjU4NjM5ODI0MDIKK0E1MzFFMkQ3CitDQTZFQjMwOTFDOUFEMjg2QzVFRkM3Q0VBNgorMDc1RkU0NkFBOEQ3NURDMEI4N0QwOERCRUI1OTg0MzQ0RUNEOEIwRjI3NDZBNjJENTM4NzhEMjE1QTYxMTI1OTcyMEJEREY1QkNEMUMzMjZCMTkzRUY0NjUzOUREMTlBNkY1MTdFQzc5OTBGNkFCNTlGQzIKKzhGQUQ1OUQwCitBQTg4RTlBQTk2NTRBQTU1MjhFNkU1RkNBMworQzZBRDgyMEExQTEwMERBMjMzM0M3QjM5QTk1RDY3QjY0QTQ3QkE4NUM0MzI3OUEzNjkxQkFCQjUwQTc2OUQ2OTc5NDI3QTU3NzRBMzFGQjkwRUU3RkQyNjVENzA1QTJDNkM1MTg1OTQxQUIxRTFBQTUxOUQ5NEUxRkEzNUQ0RjUyRDZFREY2NEVDRkMyN0NDQjJBM0REMENEOTBCMjU0RDhCQjMxREUyQzgwMEI1RUZBRjlBNDIxODNBRDA5MTU3MTgKKzFFNkEyOTJBCis4MDQ2NUQ2ODFBMUY2RUNERTVERjJERTc2MEE5Cis4ODY4QUNCNEU0NjYyM0VCNjIyM0Y3RTk5NjI4MEEyN0YxQzEwRTE1NDdCNjczNUY4MDA0MTc4QkQyMzg2RDBGODQzRUQ2MkJEMkMwOTdDRTVFNzBEMTcxQTA2NEY0RUREOTExRUUyREY2MDMyMTc5MEUyOTI5MjUzN0U2MzQzOTE1MTRCNzJDOUQwQjMzMjlFQzJBREE4Qjk4NzNFMEU1MkRCQ0M4NzY1MTk1NDEyMTgxRUY1NDU1NzA1MTVGNEEyN0RBMjM3QgorN0M4OTg2NUMKKzgzMEE1M0Y2M0Q1QzI1ODEwNTM4QkE3REYyCitFMjEwNjQwQTUxMjlBODBDNzNCNDdFMzAwMDRDQzA0RkMwRTZCMUVBMkFEMjM4QTdBNTQ4N0JBMTcwODk4RTI5QTY3N0I4MjE4RDdEOEY1RDFDOEQ2NAorNEMzNTEyOTMKK0RDRjZEN0VGQTY5OEFFNzNBREM5MzU4QTNBMzMKKzY4NzQ2QTAyQ0E1QTk2NDlEQ0NFODYyMUIxRDZGNkRCODE5REQ0NDcyQjI1RTE4NTNBQTJBMUJFREMwNzI5OEQ5QTM3NTUyMUY1RjE3RjFBMzk2RDI1MDlFOUU0OTJFMjhGMjIwN0E4MkQ0OTkyNzBDRTY0RUM4MEY0RDgyNUIyOUI2NEQ1RTczRjg1MDE4REY4OTdFOEVCQzc1QTYwODEwQkYzNzQ4Q0ZDMzExNENENEZDMkMzQkQ4QUQ2Qjc4NTgzNDEyOTM0NzBDMEU0NzA3NTZCMzNCOUVDMTNCRDYyMzUyM0ZFMDdCMDIzNkZFMTU5NEEKKzY5MkY2MDFCCitFRDNFQzUzQUNEREVGNzgyM0FCQzQ1RDI1NEIwCitGOUMxNzg3M0JGRUZCNDcyNDgzQjY5NjYyRTdDQTdCRjNDMzk0N0ZBRDBGRjI3NDU0NTI0OTQwMkZCNzdDQ0RCRTU2RUZCNjk3ODVDODE5RDUxRERCOUIyOTQ3RDhENjRBQUIyNTlGMTkyQkFEQjU4NkJBRENERDhCNkZDMUU3Mzg2NDdERUNEMEZEMDkzODNGMzA4NTg1MEJFMUVDODA4NDgxOUM2MTgyNTA4RDhGMEEwNEUyQUIxQ0E4NzA2NzI5OUE3MUM4RDEwCitERjlDOUYzRAorREQ1Nzc4QTk2MTUyMkRENTdCOEM4RkMxNzUKK0RDNkZEOUEwMDA3NjgzM0JEQjUzRDJCOEZFQjkwNjNFOTM2Q0EzNUYwMUI2RjU3MjNDNjUwRDY3REI3MTgzQjBDQzMyOUFCMzZBQTJENjE0REU5RjU3QURBN0FFRjQ3OTA3RTVDNjY4QjIyNAorRkI0NkYyNTkKKzRFOTNFMzY2MjJBQUQ1QzM4NUU0MzFDMTBCCitCNEQ5NEEzODJDQjJCRjMyQzlGNTNEQTQxNDYwRDNBMzg2NjdENkQxODg3Q0U4MEJEN0U5NDQ1NEVEMjJEMzBFMzVENkVGOTM0RDJBREMyMzRDRkIzQ0NERDlBMDM0NUJEQzNGQjQ2ODM5QkI2QTIyMzc5NzdFMTQ5NzRERkI1NDExN0I2RkQxNzA2QjhFMjc4NkUxRkNERkMzMzk5NjI4Cis3MDlBRTRERgorOEExREVFOTRCNzM3RDU0ODc2QjY3RjJFRTU1QgorQUJFMUM1QzkyMjhGODFFNUE5MEUyNDc2Rjg2QzgwQjc1OEIyODJBQjE5RTI1OUZBMDU0MzE4OTNERjM5QkM2NUY0OEZDNjEyRjg5NDcwNUQ5OTMyRjhDREVBRUE1NzMzMDYxMEUwRkJFQkREQTExREU5OERDRjIyNEI0MDYyMjRGRjdGRDc3OUExNUMwRUJERURDNzQ1QUUxRjAwQzQ5QjU5Njc0MEJBMDZCNzNBODUwMzM0MzIxOUUwRURFODZDN0JDQzBEODBCRTg3MjMzQgorMDBDQzJFNkYKK0Q4QUQxMzAxQjk3MzAxMEE4RkE3NUExMTlGMjIKKzgyQjBGRDIxREQ3QkM0OTEwNkE5MjhDMkJEQUU3RTlDNzhFNzgzMjczNzU1N0YyMDMxQUEyMzU3OTczMzcxQUU0QzhDREVGQkFCNDQwODY4NkIwRUFCQTFFOUU5OTYwRDYxMTYyMUNCQThBQTBGQzNDOTI1NzFGRDI4RUY1NjNDNDEyODM3QUM0NzNBRjBBMUQ0MUJCRTBDODE5NTk1RjgzNTA4MTYwRjc2MjAzREExMTZDMEE5RjAxQTJEODVGQThCNkQzQzc5M0VBRUY0M0FEMkQzODMyODVBQTUxMzg3QkI4OTk4CitEN0Q1RTU3NQorMUNFQzE3MDI5RUVGOUMzNUZBODE4RkFEMUIyMworOTUzMkE0OTYyM0JEQjk4QjAyQ0I2N0Q5QTg1MTRDMkQ3MUI4RUMyMjhDRjIzMzYzOTdDNkI1QTQyRkQwNkJCMEM4OUMyQkJCMEQ4OURFRUI0RDRDNTFDQjAxNUM5REI4NEREOUUyODJBQTkzNzFBMEFEQTg0NDY1OTM0MzUwQTlBNkNGODU0MDQ4RDNGMjAwQjg5MEUxQThCNkQ3RkI1REU2NjVGMUY4MEVEMjNERUNDRTYyNDUxRkVCMzMzMjlGMERDRDU5MDhGNzA5QzhGMThERERBM0EzODY3RkEzODIzNEY5OENENEI5MkRFNUU0MTJBOURGNEQ4MTgyCisxNTI1CiszMQorNDhFMzQ4QzgKK0Q3OUM4MzA5QkVBNUYwREI2Njc3QTc2M0MzCisxNzhGMzhCQjg0NkIyNjRDNERBOTQyRThCMDE4MTkyOTJBQTc1RDA5RTI3RUFBM0NCRjU3MUE3QjQ5NkRFRDgyMjdFQUM1QzQyODZERUIyNzEwOTcwRUNEOUI0Qjk3NzA5MTFBQjkyQjVDMDNCNTdBOEU3QjI0NDM5RkFCQzI2Q0FEOTBFNERBQjE2NTY4RTQ0QjlFMzczQUZGMEFEOEU0Nzc4NEEzNDZCNDhFNkUyNkE0NEE0NDQxOTNEMkZFMTIzOQorOEE4NEZDODUKKzAzNjk5RjUzRDM3RDdBMEUwQTMxODk3MDBBCitEMTFCMDZBOTlDNEY4MEI3Mjc2ODlBNzhDQTdFQzUzRkZFOTY2Q0EyQ0QyOUU3NjI5NjdGRTE4QUZFMjk2MDIyMUU1NTM5Njg1NDFCRTY0QUYwQUYwNDU5QkNGNzQyNjU3NEEzMUMyNUVDQjQ3MTlCODIyMDU1OEY5RjU2QjRFMzBFQjJERjQ3NzEyMzU3REQ5MDgyMUIzRTFGMDZBMTQ1MzQ1NDQ1OUREQTY5NTg1QTBFREVEOTI0RjNFMjNBRjAwMzM3QTEKKzk5OERBODc4CitDQkEzQTlCMzMwRDBDOUJEMDJENkYyN0Q2RTQ3CitGNEZCOTYwMjA3MDZFMDYzODY0NDk4QUI3Q0VDNjJDMDU0N0Q4OEUwNENCMTlBRDIxNzM2NDBCOUJCQTQ5OEJFMkUyOUNDMzQ3QTY0QzNENzNEOUNCQzM5NTM5Mzg0MzlCNjNGMEU0RkExQTVDN0ZBNjI5NUU2NDg4REJCOTZCQjFFODE4RkU0RDUyQkFERERBOTQ2MEE1MTMxMjZERUJBNjI3QkU1QUIxNzExMTBFMUMzQkFBNDAzRkQ5ODRGMDI0OTYxQ0E4RkMxRTRGRkQ1Mzk4MTY3OEFCRjNBQ0ZGRTQ1RDdDODBCMjAxQTAxM0IzN0JFM0I4RUY0MzYKKzVEQjdCMTE5Cis4MjFFM0Q1OTdFRkZCM0ZFRUUxNDlDM0VFMDZECisxQkI2ODMzRTRDRjY2QzBGRDQ4MkMwOTI5REU5QzA2MkQ3QUVGRDJDMTJBRDQ5QUY2RDhDRTFEQjFDNkQwNTgxOTRFM0ZENDM3RjE5OUM2OTkxRTA4MTJEMkU1RTk3RjQ3ODYwRUQzQzIzRjk1RjlGN0ZCQjI0RTZFQUJGRTUzQkIxQzlGMDZBQTg3Mzk0QzAwNTYwRjYwQzYxQzgwRTU0MTg0QUNFMDczQzQxRDJBNzk2Njc4Q0NDQTQzQjU3OUMxMjg2QUZGMUEwMjg1NjlDRkMKKzIwRDFEMzA3CitCNDFFODM1MTY5OEM2MUQwOTE0QjE4QzdFMzcwCis0Q0RBRDM3RUJGMzAyRTMwNjkyODc3REI2NEEwN0M1NDc3QUY4MDlCRjM2QUMyREJDMjUzMTU4M0FDNzM1OTNDOUQ2Q0U1QzZERDVERjE1NDA5Q0RBNzNENDQ0RTg1ODdFQzcyMDNEMjYwMkE5MTQ2OTRCMTFFNkExMjZDNTMwM0JENEREMUFEN0ZGREFEOTlBOTU2QTlGNDU0Q0UyMDhFM0I3OTBFQzBERUIxQjE3RjYzOTg5ODJGMkM4Nzg3MjhFRkVBMzE5NDg5RjQyRTQwMjAzNzJCOEU1NTM2QkU3MDM3MzZDQjU3QUU1MTg4MDYzQjY5Cis1MzM0REY4MAorNjAzM0Y3RkU2NUY4RUMwMzMxNTczRDk5RkEyRQorRDAzQzQ3NjQxQzkxM0Y4NjRGQUU2RUVFMzVGMUYyNEJDMjQ2Nzc4N0EzN0I3QTNFRDYyNkQyNEQ2OThCQ0UzNzkwMDhDRUQ4NTkwNkQ4MzMxNUZEMTAwNjQ5NzQ4QjlGODk5MDJBNTE3MTVDQTdBNTFBMzlBQUFDODREMTBDQzc5RTQzNThBMEM3RjgxMDA5NjYyNjQzREI4ODBFQkIyODA0NzJDQUUzMDc0RTBBMjI2RDkzOUUxNjdEODNBNkY3MjExQUUwQjAxN0JERjMzNERCMTcwQjA0M0I4NjJFQTFBMzE2OEYzNTQ5QUUyQUVDRjEzOTE1NzNEMDJECiswOEZFCis3MTExMERDNTg2OEREMkM5MkZGM0U3Cis5MjlENjkyQgorM0VCRUFDQkVGODZCOUMxRTNBNkZFNjYyMkUKK0NFQjE1NENFOUYxN0Y4RURGQzBBQjkxQjYyRkM0Qjc2NDIzNzE0RTE5Q0VDMzg4RTIzQzcwQUQ5QjM5OUM0OUJEQUQ2RUQ3Rjc2QzgwRDM3QUUwQjc3RTlFQzlBNEMwOUQ5QUFBMzM1RDM5OTI0RTc3ODg5NkQKK0NEN0QyMTU4Cis1MTU0Nzk4MzYxM0QwMTQ5NzcyMDc4MjE4NQorOUJCMTkxRDU5QzZDNDFEQUUyNkJFMDAyRUEwMTU2NDAxRDlDNzdCMzU5NDYyMEVBMENBRjY3QTExRDkyOEQzNjkyNDBBNEQxMjg4Mzc1NDhERjY4MEVBMjAyMjNCRThERjY5NjcxN0IwNTJBMzQzOEI2OEVDRkM0QzUxQUYxRDgxNzU5OTgxRTNEM0VERgorOURDQkVCMTUKK0JFOUYyOEJERUExODM3MkY2ODg1QkIxMjZGRkUKKzZCRTIzOTEwNDBCODZGMTlENkRGOEFERUUxODA3MzdBNUZDODZBNTFCODA3MEUwODMwQUI5MzBDQUMyODVDNkNBNDk5QzJDN0FFMjEzRDE4MTcyMzU1MzJEQUVGMkZGNjZDMkE0M0Q2QzY2QzUxOTU0N0Q5Qjk5NUM4RUREMDhDRjQyMEJGQkY2NEY0QUY2MTk5QzFFNTE0RkE4QTcxQjVGQjUwRkRFQ0ZCRkM4OEFDMkUyRDAyQzkwN0QxQzc4QkIwQjlCODc3MTdBNEZEMzhFNDg2ODY1Q0EyRjBCNgorOTc4Nzc3MjMKKzdGRDhCMkFDODUyNUZDQTNDRTlCQ0U5RTdBCis3ODdBNUM2QzA4QThCODdBQjc4NUM5NzdFNjhGOUQ2MTUyRjgxRDI0MEVERjZGMjYzMzFDNjA5MUNDMkYwMjVCMTBBREE0Q0QwMUJCMTFFNEI4OTREMjAxNTMxQzI3QkJFMjJFRTg2NkYzMUE2QUI5OTEwODBDMEIzMUMwQjkyN0REQzBDRjA0QTVBMzNGNUU5M0Q0Q0M2QUYwNDlFMTAxODE4NjZFMTk3QjI1NzIxNUE4M0U0ODQzCis5NzAxQUQxMgorMDNCRDExMzc4MkI1NjExMDk0REEyQ0JCRURFMAorNTlEMDI2QTUwRERCMThFNjhFNUMxRkJBMUE0NTE3OURCMEUxMjIwQkM0ODZGQzUyM0NEMkIzNkVDODBGNDkyQjQ2MTFDOUZGRjQxMkE5ODhBODQ4QjI3NTUxRkVENDc5Nzc3M0MzMzhBNDY2MjNGRDVGMzdCOUIyQ0Y0RjVDQjE2MTE0N0RFNkMzRjI4NjFFM0VEQzYzRDlDMzk0MkU4MzgxREQyNUE3RkZFOEU3Mzk1MjQzQkVGOUZFRDRDRDc1QjgyOEE2MTJCOEY1MEU1QTJDMUUKKzI3NDY1Q0Q3Cis0RDk3QkY5QTk0NDVGQUU2QzNGNTAzQ0IxRDQzCis5NzhCMUIwNjc3RDI4RUUwNDY5RUQ1RUZEQjQwMjVFOTUxOUYyNEIzQjY5RTU1QjRDRkE2NjE3NzI2NkRFQkUwQjAzMDNBQkQyMjVCNjhFQUZGRkJENkRCNzg2NDRDQzQyQ0FDRjIxMzM0NDI0NkU5NkJFQkREQUFDNjdDMEYxODYyNzhCRDhFOTZDOUMyRUE5OTFGQ0IyRDU0QTVEMkQ1NTE0Mjc4NDA3NTYzMDJDMUE1NTE2QjgzODc2NTg3MTBCQ0NDNUNFRjM1MkM0QjU3MkFFRTE3M0M3NUExRTI0REE4NzYzN0E1M0NGQUM5RkY0RTEyMkRDQjBBOTMKK0RFMDkKKzJCNzA1MworQTM0MEMyQzUKK0E1Nzc4QjQ1RDA1Qzk0MzdDMTE1NzM1RjE3CisxOEUwQkI1Njk2QjA1RjY0ODA2MTNCMzc0NzNEODEyNDg5M0I2N0JCMTAzNjlBOEY3Q0YzQjlEMjkyQThEMDg0RjU0MUEwQTZEQ0Q0QTc0RjQxMDM5MTA2MTNERTc3QkM4RDk1N0FBRTM5QTQ3M0MyMzZDMTAwN0VFQzIxN0M2MTcyRjc1NkQ0QzIwMzU4ODQ4RjhCMjQ3NTJBNTVBMDU2QUUKK0Y0MzI0QzYzCis4NTE0RDJENDk4REREOTFGNDU1NTdFRkJDMTY2CitFOTM4NENGM0NGRTgxRENERUVBMEFCMjk4NkIzMUY5NTYxMzI1NzBBNjNFMkIzRjA3MDEyRUNBQTBDNkY1QjNCNjVENUMyOUFFMzlBQUE4RUFGNzYzRUY0Q0E5NzcxQUU5Mjc0RkJDQ0E5MzU2RTNBNEFGRUE4NUNCRUM4N0RENjVBMzg1RjBCNzc1QTA5N0M1Q0Q3OEI5NkQ2MUIxQTNDRDgxODMxQjlGNjhCMkJCRjE1NTlBMDZFQTU2QUFFMDU3QTI3QjYyMQorQTBBNDc3RDQKKzY1MkQ2OUE4N0RBNkM2NDcwMDhGOEZBRjI1REIKKzNCNkQ2Nzk2NjE0OTQxOTA3NUE2REVEMjVCODA2MEE3RURFQ0U0ODVGQkE5Mjk5NjhBNUIwRUEyODA5NzQ3MEVFMzRDNDQzNEY2M0IyQkU1NjhDMzZGRTg2NjlCOTFFOTYzMDREQzkwQTA1RkVBRjBEOTM5MjUwODRBMTg4OEE0OTU1N0Y5NkI1MTk1MDI3MzY1MTM0MkNDMUE0M0M2ODI1ODMwRkZDOUMxQUIzMTg1QjAwOEFEMzgyNDc0ODVEN0U2MDg3NTU4RDAxNEE3QzE0MEFBNzMwQzBCRkFEMjQzRjMwMTFBRDI3Qjk1QTc3NDMxOEY4OTNBQjNBRgorNzMyQQorQUM5MDlGRkZGNzhCREQ2QTUwNjQ3NjkwOTcyNTBFMUEKKzdFRDczMTE5CitBODk2RjBBMjFCMEJDQzc3RkQyNDYxRjRCNzFCCis3MDI4NDE1QzVDMTkzODE4NkU3RDdDRjMyMjAzRkQwNEZFRUI2NTNEMkU1MUI0NTk4NEE1RUY1M0Q1MTRDMjA1RDcwRTNDQjcxOEUzREY4M0M4RkExMTg0NUQ4QkFGN0JDRjFGMTlGNzQ4MEFGMTdGRDA4N0MyRjE1ODk0RDVGODg5NUY2NTYzODFENkM2Q0QyRTFGRTRCQUNGRDgzQzI3NUE1MTZDMEFDOUNERUFDNUY5QUVDNEU2NTcyNjA2MEM1Njk1MkIyOUQzQTA0NThFQkI0NEFCNEQ1MTc4NTZBMThFRDczMworRDczMTY2MEYKK0JGMTZFREVCMTNCODVCOUJDODk3NjQyMEM3Cis2RkM3MDVCMUM0MzcxMzc1Nzg5OUJBNEM5RTI5QTVFMDY4Q0E2MjdBQTU3ODRBNkJFMDlDQzEwMjM3OEY5QTJCNTBCNDY3QUE3ODk0MTk2RDFGMkRDNjYwRDE4M0Q3OUMyNjBDOERCMzUzMkQwODhDNDhEMAorRUFEQ0E2RDIKK0U1MEMxMUZGMDlEODA5MEQxN0IwQTZFNTBGREUKKzY0MDgzQUE3N0VDNUY1QzdFOTMyQzc1MEFGNDE5NzUwNjg4NzY3QjEzRERGREUwQkM2RkJBOERCMDc0QTQwQzUyNkVCMEJFM0EwRjNBRTVBRjA1NDYyRUZDMURDOTlERTY3MzdFQTA5RkI5NDUyNDUxQUYzREE0MEIzMzc1Njc3NDIyNTNENjRENjgyMzNDMTAzNUJDRDA1MjgzNUY3NzJCNDkzQUI0QTdGREI0Nzk0NURGNEEwMEZEMkJEMDZBOTBBNDIxREY5OUM4NkE2RTg2M0IyRUFGMjkxMTA4MjhEMjY5QjlCRjZBQjU3OTRENERFN0IwQzZGMDJBMworMUNDMAorRjhDMTYzCis3MkU4MTdDNAorNEY2RTlEMUFFQTQ4NjA5NjE0QjZCMEEyMTYKK0NFQ0QyMzNCOTRCQjM3NjNDNTYxQjg0NDI1RDY4NjIwRTQwOUM4NUYzMTFFRTEwMzAzQ0VCMDBCNzQ2NDc5REZEMUYyQUNCQzAzQTI1NDYzQjFENEZEMUJBNDJDODgzRjkwMThBQTUzQjVGODQ5NTQ4QkUxQUVCMkFGQkI0QjY3NjY2QjQxREIyRTZFRjY5QzY2MjBDM0VBNUQwODdBNjY0QTRFNTdBMjY2N0JCN0NFCitDM0QxRDU4NAorNzFEMjU5MTA4MkUyMTRDMzQyM0E3ODI5RUYKKzcxNUIwN0I3MjBBMTk5OTg4NEU1OTUzMUREQTA3OEUxMDY3MzM3MDlCRjUxMDE0QjZENTQ1NDAyQjJGNjY2NDI1NDM3RDIxMTVENEVBM0IwODIyRUQxQThFOEVBQkE4RjZDQkIzQjczNTMxMzZENjZDN0ZERTZDMDdGREVERjQ4MkQwODMzMTJFMDEzQzAxRjczMEMyRjlGQjY3MzJENEQ4M0ZFCis5MjcwMjJDNgorNDExMURCRjYxOTQxREEyQ0FBNkJDMkE4RDI0NQorM0Q2NUE4QzlFQzBBQjczNTdFQ0QxNDNGQUZBRUZGRTNDMjE5NDY5MUIwQzk4MzFENDkxQkI0NTlDNkJCNzEzNUFCODA2NkU5OTk1NDAzNjRFRUE1RDZGMjg0NURDOEQyMzc0Q0YzREZFMjFBMDYzMzFERTBEMTlDNTI0RjJGQUE3OUM1NTVFNTFFQUM0MTAzNjg0MEIzQUU0REU1NkIxRTAxRDE5N0M1N0M0RDFDN0RCMjdBRTY4MEVBQkRGQTZCNjE4MDVGMEEyNjg1MjhCRDMyMEMwOTQyNjIwRAorRjc3MDhGNjkKKzg3MURCRjRDMDBENkE4MzU2RUI2QTQ4N0YxCis0QjlEOUE1QjlCRjhFREY3NTFCMUZDMDRCMDU0MUY2NUIwQUI1RTdGQURFNTMxRjEwMkU3Q0RCODY5ODMzRDk0QTIwOTUzMkNGNjVBMjlBRDAyQzlCQzdBRkM5NjdFRjYzQUZBNUM3MjcwQkREMkEwMTc4QTBDQzJDMzRDRjdEMjdEOTEwNTE4QTBDMUUzMkIyNzhCNzZFRjNEMTcyQkUwQkQxNjYxNTRBNUVEQkYyRDkyCitDNEM4QjE5RAorRDZCRkY2MDczRjBFQ0JCMEY5RDRDQ0QyRDIKKzQ5RUNGNEIyQkVDQUY3RTE4OUE0RjFDQkNEMDcwMDc3QTdDNEUzQkU1OUUxQjA3NzU4MUQ3NDkxQ0MxMjkwODJERkI1NjQ0RTdENTk1NzY5OUMyNkQ1M0U5QjkwRUE2NzE0RDM2NjlBMzY4NjAxRDU5RjU1RkIzN0JGMTcwRjRGNDQ3OURCQzBGNTkyQUZGMERGMThBQTQ5RDE5M0Q1QjY1OTA5NTgxMkZFNzQ1NDNBNzQwQjIxNDUKKzJBMjUwMTM5Cis3QjAxQzU3RjkzMDJBMzdFQzVGN0Y2NjE4QzM3Cis1RDFFQzM5RDlGODY0MDJFQTcwNEVCMzE2MzI5RjI0QjhGOTI5NkIzN0I3NEM3Q0M1QjM4RDM2NEY3RDlCMThFNUIwQjBGMURBRUU5QjVGNzdGNEQ4RTM2QkQyNUJGOTcxRDNFRUYzOUFBOTdCMEIwRUY0OTFBOUM0N0RBQzhDNUNFRkMzM0E3MzBBNDMyRkE4MDdEQzREOEI3MjJBNDM4NTc1QTM1M0U4ODcyNkNGNjdFQjY1ODdGNjFCMUFEMDk3NjY0NzVENDY4RjdEQjg2NDFGNjlEOUQ2QTgyQjAzMkIyQzc1OURGN0FGQTJGNjE4QzJFQzg2MkFCNDkKK0M2MTQKK0JFODQ4NkQxRjE3QzNENDgyRUUxRjc0REE0NDM4OTVFNTcyQTRCRjRERDI1MDI2OEUzRDNCQjgwQ0Q0NzMxMzczNDlEOEZDRkVBNzQ3ODU1MEM2MUM2RTRDMjk5NDEKKzk0MTYzRDgzCis5NjcyRUU3MjAzRkRGMERGMjA1NkQ5NTE4RUFBCis5Q0NGMzEzMkUwMUREOThEMERGNkNBRDJBNTVFREQ0NTJCQjZGNkRCNUZENkZGOTk3QjI4QUMzOEQ2QzRDQ0E5QTM2NDc0MTlGN0EwRjlGMTcwMzgyMEY4MjFGNTQzNUY2MjJBRERERTgyQUZDRDI2Q0U3RjU3OTk0QzVBNjA3Q0Y5MDU4MzdFMzBEOTczRkQ1MEVERUE1RUZGRjk1OURCQzMyNEY0ODdDN0EzRTI1RjQzMDM3MzNGMkQ0MTdDRTE1NEZEMzlFOUZBQ0Q1NTgyNjZGMzdGMjExMQorRDRGMThEMEUKK0QwMUY2NDU3RDA4RTNCNjYwNjAzMzcyM0JBCisxREU4QzczMTZFRTExODQ5RTQ0RTlEQzRGN0U1NTI1NTVCODlFN0Y5RUFFNjMxOEEzNzdGNEY4NzQzQkExMzdGMDUzRkM0MUEyMUNEN0UyQjRDMDMwOTkwNkJFQUJERkZGQTIwMjM1QkY2NzQyQUQyOTkwQjdGQjdCM0FERERFQzM0ODYwMjk3QzM2MzkxNkYyRTRGRjJCRjQ2RkRFNUFBCitCQ0NERUE1OAorQjdGMzA5QkJGMUEyNzg0QjVCMDU5MEMzNTNGNAorNjRFQUZCOThEQzY3NkEzRTYwOUQ1OUI2NzU3NzFERUIxRjJENkQ0NEZBOEI5REIxMTUzM0VFNjI2NjA3RkFFMDBGRDBEODJGNUY5N0FGQjNDNDI5NDNCQkU0QzlDOUZCNzRCMkNEQkZCNUEyMTMwMkMyMUEwREIzRjhERDJGNzg4RDY5RDI5RjVFM0QwQjYyRUVERkE1MjU0QjMyMjlDRTAzOUQ3RURDOTY2ODNDNUVGMTExREM5Q0RBRDREQUQ4QTUzQTVGNURCMjgyMTkyNTkwNjMyN0ZBQzE1NDMyNUFFMTMwMjlEODc3NkZCOEZFOEYxNUZEODA5MDM5Cis3RkEzCis4NDVGNTZDQzY3MjUxRDgwMUQ4OTJCMUU4NTlERTZBODI2OTBGNzBBRUY1QzVCQjIxQTg5MjQyODg3QjlEODIzMjM2RUVFCis0MTQxN0ZCNgorMzJGNTI2OTI2NjNFRjJENzIxOEYyMDc3NDUKKzQ5QTJENERBNjZEM0VFNjdGRUMxRUQ2NUI5QzhEMkQ1QzA2NUU0RjM0Rjc2NTM0MTM4NUMzMTNDQTJEQUM5RDU0ODE3NDc3MDM4Q0E1RUQ0MEFDQUM2QTJCNUVBRDY1QTZDRDEyQkJEOUFFNAorRkRGNTNDODQKKzc4M0MxNUFEM0UwNjhENjE3NDVDNjJENTc0M0QKKzAwQkUyRjcxMDkzNzU4MEU2MkIwRTU3OTQ3NUFGQkVBQzMxQjlFNzJDMzk1OUM0MjVFNUU5M0EyQzM5QUNFNDczMjk5NTAzNzQ1N0U0RjA1QTYwQkY3MUU1RDg2OTVCMzcxMDRBNDA5RjFGNDNFNjAyREM5NEVGREJENzQxNTcwMDA1NkI5NkJFNjEzRTUxQjgxMkJCRjNCOEI0MzUzNjMyNjE5NDI0Q0EwOUQ0N0I0NDIxRjRERjk3Nzk3Rjg4Q0Q1QjhDODE1MTNFMzI3RjA2QkM2NDA1NjBEMTdFMDA5QTA1RUYxQ0IzQ0U1OEY1ODY1NDYyNEZEQjE3OAorRTA5NworMDk5RUQ4NjdDNUE1REM4NEM3Q0Y1NzZGRjUyQUMzQ0E5RjJCRjg0QUNGM0I3N0YxODQ1NjNDMTE4MEIxOUQKKzdCRTgwOTZECisxM0Y2N0U1OTU5NDBERUVCQTNBQzlCMkQ2OTdDCis3NUNFMkI2MURBMzFBQ0JCQkU4QUI1RUJEQThGOEU5QUY4ODczRUM1RDU3N0VEOEQ5OEY2OEMxREQ0NzNFRjc3NTdDRkUwOUY5OTQ5NkM4RDlCN0Y4QTg3NTc5NjBBQThGNkU4NEQzMjEyOTY4RjM1Q0U0QTRFRkZFN0Q0NzI3NDdEOUI1Q0RDMkI2MEFGRDk5N0YxMjc1OUUzNzlGNzlCN0ZCQkEyNUVDRjQ4OTJFNkI1MjY0MUEzMTc2NEQ0NEQwMUUyNUZFMUQwNUY2OTcxQzNDQkEwQUEKKzgwQTZBODJGCis0RkIyMDE0RkY0RTZCODYzMzdFOTFDRkYyNgorODc1QkM3QjZDNjYwRUEzOUNEQ0Q2NzM3QkZEMDZCQTkyNEY3OTNENDY5RTE0NzQ3RDQ3NzIyRUJGMzVBNURDRDAyMTY2N0RGNzE2OEQwODE4N0E4Q0M1NUI1NjZEM0I4OTBFRTk1RDUyMzUzRjYwMEVCNUIyQjU0QjgxRDM1OTU4NUIwNTQ3QkU3QUUKKzA3NDY1Rjc2Cis2QTdCNkJGMDg0RDhDMzdBNkJGNDU1ODkxMTgwCis0OTMyMDVCRDBFMzcxREMyMjA2RTQ1NzJGRDdCQTNBQkYzMjM0NDU0RUE0RTU4RjExQUY5QUQxMEIzQTM1QzMyOERDRUUzMkI2MUJDMEI2NDAwRjYzQjRFQTI3MjRBOTI3OEE2NERDMDE2NTA4RUM5OUVFNzkwQjcyODFFMjExNkQyNTgxOTQ2RDQwQzJFQUU0OTYxQkZBREQwQzQ5NjA5MjZCRkEwMDRFM0NEQkQ2MjJBMEYyMTUxMTNGMzA3NDEwMjBGQkEwQjU5N0Q3Nzk5NjhDMkNFMkU1NEM3RjhCOEQ0OEE2RDhCNDA0MjNECiswMzY0QkQ1OQorRTMzNDE4QkU5MDc5RjM1NkI1NEQ0QTE5QkM4MAorRjYzODE1OEQ2NTg0RDlDODk0MzhFMUQ2NjQyRDk1RUE1MDk5QTM5OTE1RUUzNzYwRTBGQUZDNUI3NDkyMkFGQjU4QkY5MTBDNjc4OTdGRERCNTZDOTVCOTMzNDdFNEMyOTE5MTU1QkM5RDQ2MUNDQURFNzZEMTRBRkNBMDkzRjlBMTNFREY3MTgyQzUwRjM2QTRDQTQyM0UxMTZEMTQwNDI0MDZCRUQzRDI1MzIzMUJDMjE3NkVCM0UzMjYwMTk2NkIyQzA1M0VFNTZCQ0I4N0UyOEQKK0YyRTQ4NjVCCitFREE5OTc0RTQxMTc2MzBGQ0U0NUM5ODVGOQorQzRFRTk1QkM5ODVDM0IzODNBNUNBMkE0QkVFNDI1OUMxNTZGMzJBRUFEQzYyMTcyMzVBQzM0NUUzRDNFMzRGOEI4RDQxN0QyMDA0RDAzNzREM0Q4NkRCRkM4M0JDOTE5Q0E5QkU0NTg3QTM3QzFENDA4RjJGQ0Y0NDZFNTU1MzNDMzA1NkIwMEY0QUVCNTY1MUFGQTZCOEMxRDc4MjMxRTEwMjY2NUEwRjJFQUNCCitDNDVFODU1RgorNTE4QjUxODc0RTJDQ0ZBMTI4NjkyN0RENzM5MgorRDdBMTAxRTJENzcyRTQ5RkNCNzM1MUUyNjEwNDUyRDMyM0E4ODM4QjgzN0U1NDIwRjIyMjI1ODYxNkIwMDU2MkFDQjU5N0Y3ODREMDYxMjhGOTNGQzk1RTExODc2MEMzNjhDNTI4RjkyNDdBMUJDMDBEQ0JFRDc1QzU4NzA2QURDQjdEMTYyQ0NFMUU5RTVBOThGODhEQTJCOEY3RENBMTcxNjM2QTU5QkM4QkRDRjFEQUU2QzM1MUQwQ0ZBNTdFRjg4MUQzQUMxNDlFQUQ0QzhFNzkzNEQwNERFQ0I0QUY2OEFCQkQ3Mzg1QUIxQkY1RjMwNzNEODYKK0YwQkMxRDJDCiszRjZENTQxOTM1QTBFMTNERDZGOUI1NkMzNgorMTdGRUEyRTdEMTczRkY0QkFFMDlFMUEzNzJCRTg2RURBMEJDMDBDNzg1MjNDMjAyMjFFQUI1RDU1RTc5NzZBMDM4Nzg4NzlGMTVDQTVGREJFMTA4QUI3OEUxODM0OTNFOTY1N0MzQ0UwNDk3NEU4MUFBQjY0QUVGMDdCQ0Y4NjZEM0FGODFDNEMxCitBQUFGMjlCRgorMkE5NkQ4Q0YwQkJEN0RDQTRDREZBMUI3NzMKKzA0QzIxQzM2QTVCMEU1NDlGRTNBNzAxMUY4OEQyREFCNkM0QTgxMTZDMzVENEI3QjJFQjU4OUY0NzkwODZFQUZFMzU4NDU0RDQ1MTdGMTZDQTVEMTlBQUU3OUQ4NjExNzZBMkYxRDgwMEY3NzMzNTkyMzRDQkEzMzYyOEMxMDU3REUyRTdBRTc2NjJFMzA2NUVDMTc0RkRCMkNFNURBNTlFMThEMUU4OTFCQkY0REUyNUE3QTgwQUM3RDdEQzMzNjQ1MkIKK0ZBNTExMEU1CisyNDlBNjMxNzQzREVFQzAwMzlENkI2ODNFMAorMTEzNjQ3QjI4RDU0NTNCOTdCNEE5NTQ2NjIzRTIwM0I1QTQyMENGOTdDMkM2RUFGOURENDAzMEEzNzJDNkQ2MEVFNkIxNkU5MTI3MUI0QzgwNDFGRjAyRjlFNTU0NzdGQTU0RUQ3RkZGQzBDNzEwQkJBMTFCNEM5RDUyREVCNkE0OEY3NkI5MzJFQzcyQUNERTVDMUE5NzQ0MjNERDY3Q0JGMUE4NDMyQzQ2QTU1MUQ1MQorNkVCMDFGQjEKKzUxQTQzMDkxNzg4MUE4OUZCQzEwNzkzNTM2RjYKKzdDMTU4OEVEQTg3MjExNjNDRTkxRTUxNEUyM0QzRTk3MDQ4NTI1RjIyRTk3N0YzMTI0NTFEQzE3REJCMzVGRTIzM0YxOEZEMDcwRjcxOTZDNjA4QjA0NTA2NEY3MThDQTI2QkVCOUNGOEFDRjdENkU2MDc0NkM1RjUyRTI4Qjc5QkZFNjBFRjJFMkNFMTFDMDhCMzM4M0NDRjJGMkIxREFCMkM0RTIzRjIzMDY3RDRGRjE3NUU1MjU5NUQ5MkY1Q0MwMjQzNzRFOTJERjQ2Mzg2NzM0OUFFNzMzMzlCQzAyMEYwRkQ2MzRGMDBGQTFGMUREMDk1RDQyMzREMAorNUFBMgorNUNGMzI0ODlGQzkxQkQwNTBCNDEwN0RBNjlEMAorOTBGMDAwRDcKK0VDNzk0RjhGQ0UxMjA0NDRERjI4M0U3MEUyNEIKK0Q4RDM0NUY1RkFEQzVCOTJBMTAwNUU2OEQ3RTMyQzA0ODMzNkU0OTE2NzE5Qjk1RkQ0NEM4RTlFRDY2N0REMjM2NjhGNTBDNjY2RDUwMEFGMkJCNzE3NTU2RjU0RUZFQzVCQTQ3RDRGRDY5OEMwRDNDMzkxNTIyRTMzODU4QUJDM0RBNzJDOTlFNjM1RTM0NEYwRkIxQkFFMkRBMDc1MTg5REE1OUE4NDM1NTBGMkMwQjI3MTExOTg3RTk4M0Y0OEM2OTYwNDEwNkQ3NjZDODJDNDY0MDRGMzY4NTMyQUM4RjA0ODVCMkY5MjdGMzlCMzI5RkUwN0MyMzVGNgorMUU0OAorOEY3MjBBQzBCMDQ3NDMyM0U2MTVEQkU3RUNDMDREMTYyNTAzNEI1QzQ2OEM5NDNGNDYKK0JEQTc0RTY0CitENkE1OUE1RTdFODIxODM3NDRCODA2ODJFQjE3CisyQUY3ODUzMEU0RDBCN0M1QUZEMDRFOUQ2NEE0QjE5QUJCRjkxRUI4Njc1NTQwNjg3NDM0MThFQUE5NzM0QjQyQTkwOUQyNDI1NDdGQzE4QjBCNTg5NTZCOEY3NkUyNTEzNzQ4MDk4NjMzQUM3RkFGNjlBMjAwMDdFREUwNTdBNzRDNERBMzAwRjQwQjdDMDNGQ0NFQTI5RUM4REI2MzdGOTg3RUFBRUFCNTg2OTZDOTA0NTI2NzExMkI2NkYwRjY1RTM5M0FFQjU1NTAyNDM4NDcwMUM3NEZERjJBOUNCOEI2NTI2NTY5RkU4QTdBQjZGODU4QzhGQzA4NzMKK0IwOTAKK0Q5NjgwQUEwCiszOUQ0NjUwRTA5OTVEN0JEMEM4QzY2NEM2RgorNzMyRjZEMUVGRURDMDA4MDY0QUJCNkQ2NjFCODI1NkFDMzEyMkRCRTU4MTc1QUM1OTNCQjFBMzhCQTY1NUI4ODc3Mjg4NkI5QkQxNjU5NDEwODY0NjJDN0MxMTI5RkI2QzYyM0Q2MjAwNDgyQUY4ODQ3NDA2RTk3NURGRDdGCis3RTRCRUEyMAorODY1RDk0REY5RDYwRkExMEI1MjY3RDk1MkEzNworOUI2NjBGRTMxN0FBOEU1RDQxQkU3NzA0NDQ3MzZGNDk3NDMxQUEwRTZGODAyNzMyQjg2QjUwNDg3RDMyNkE0NEQ1RjA4RjdFMEY3QjQ2RTc3NUZDMjQ3RjY4MzI5RDBGQjY4NzQ2RjkwRUMxMUIwMkIyRjIyOTk5MjU1OEJEMzJFN0VBM0IwNDBDMDg4N0YzOUVGNEU4Mjk3QjcxOTExNUNCMzMwNkUyRUQ3NDA5MkM5RjI0RkNCNzc4NERCOEM1Mzc0MzVCNkI2NTJFRUQ0QjBDCitBMTZFQ0JCNgorQ0RFREQxMENFMzhDMjc4MEQ3NjdEN0E2NUMKKzUyNDgyRDZFOTE2Q0VDQkZCN0RCRkUzNkNFRTEyMkEzQzZBMDRGN0Y5MjJECitCQUZFNTI2NQorRUY4QUQ3Q0VERjkyMkY4QTM2QUZBMEQzQTE4QgorQjVFNDExNUMxNkQ4OTYwNworRDE0OTY4Q0QKK0UzNkNBMjA5QkMxQkE2N0VCQzJGRTlGQzBGQkY4NUQ3RjI2RkFEMTdDNzVDQTI5MzJGRUFENkRDMTUzQkVBREY4RkE1Cis0QzQ5RjZGMEFCRTZDNURDOUFGQjVFNDA4NUEzNUM5QjY2MDRBOUQ4QTQ5OTA2RkZGNzJFN0M0MTU2Mzg0ODgwOThDRTY0QTk1ODM1CitGN0I4NzQ1RkY3N0EzQ0YwQTZDRkJGNzZDNDZCREQ4MDRERDlBNzg5NzcwNzcyRTVCRjgwREYKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDYgcHV0CitkdXAgMyAvQzAwNDkgcHV0CitkdXAgNCAvQzAwNjcgcHV0CitkdXAgNSAvQzAwNjggcHV0CitkdXAgNiAvQzAwNzMgcHV0CitkdXAgNyAvQzAwNzggcHV0CitkdXAgOCAvQzAwNzkgcHV0CitkdXAgOSAvQzAwODMgcHV0CitkdXAgMTAgL0MwMDg0IHB1dAorZHVwIDExIC9DMDA5NyBwdXQKK2R1cCAxMiAvQzAwOTggcHV0CitkdXAgMTMgL0MwMDk5IHB1dAorZHVwIDE0IC9DMDEwMCBwdXQKK2R1cCAxNSAvQzAxMDEgcHV0CitkdXAgMTYgL0MwMTAyIHB1dAorZHVwIDE3IC9DMDEwNSBwdXQKK2R1cCAxOCAvQzAxMDggcHV0CitkdXAgMTkgL0MwMTEwIHB1dAorZHVwIDIwIC9DMDExMSBwdXQKK2R1cCAyMSAvQzAxMTQgcHV0CitkdXAgMjIgL0MwMTE1IHB1dAorZHVwIDIzIC9DMDExNiBwdXQKK2R1cCAyNCAvQzAxMTcgcHV0CitkdXAgMjUgL0MwMTE4IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy00IC0xNyA3NDIgNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY5OUEzNEUzNjQ5ODQyQjE5NEY0OUQ4NDUwNjlERjg1NDkzCisxNTM5MDI1RDhCN0U1RjhCMUM1RDJDOTEKK0FDMzlBMThEOEJGMEM5MEQ5NQorNkRCMjU0MEQKK0FFQTcwNEYxMkFCQUYzRTBBQUFGNTYxNTlCCis3MjRCNjdFQjk3RTJDMzIxNURERjJCMTVDNkVCREUxMTRFRkYwM0M5N0YzQTU4RDlBQkVEMTU1MzI1MEY3MAorMzk2M0YwOEIKK0NBRjkyMkQ0Q0I2OTVBRUU3MDkyMjZFNTNCCis0NkRCNTZDOUQ4OUMzMDNBNjMyOTIxQUQ4NkYzODRCQzk2RTZGNEMxMUM1MkEwQzFEQUZERjgyNzE1RjJENUEyOThGQTlDMkVCN0E5MUUzQzBEREIyNzFFRjNFMDY1MTcwQUIxRUUxQzJGQzUyNzNCOTQxRjIwQUIKKzRGOTk0RTZCCitFNDE2N0QxQTg2RTI0Q0M3QUE5RDA4RUEzOTYxCis2NDlDMDMwOTc2QjkxODEyRTJBNzY5RUQ2NTFGMDkzOTA2NEZBRDYwRDJEQkVDODQ4OEREOTI4RkJCQ0VDRkQ1OTYyREJDREREMzI2MUQ5QkMzOTRDM0JGQzMzMTM3MjI5MjRDRTdGNkU4MjZBMTA3RUJDMjkzQjU1RjgxMzlFRUUxN0M1MjdDMjkyREJBODc0NDVENDc4MjQ2Q0JBQTg1NDIzOUVDRDI3RjI3MUFBMDIxRkUzNUVGRDMwQUExODk5RDQxMDJEQTZEMDJDNDg0CitFMUNCMUJEMgorREM2MkM5NjNFQTFDNDZGNEIxNDE0NDE5RjUKK0U4NTI0NEFEQTQ1OUVDQ0VCOTlCNEY3ODg4MjNGMTg3QkU2ODQ2RkUwNDQxMURDN0VBQkVDQkUxMzlBMkI2OTZGNDA3QkQxRjc4ODVENkQxQjhGMUJEMTE4RERBRUFDMDc1Nzc0RTNFQzREMzRGQTIwNTA0MjYwOTE5NUUyMzhCQjE0M0NBMUVCRDJDODYwMTkwMjU5MDcxMDEwOEU5MUIyRjQ2OEVEQjA1MDI1NgorREZGQzc3MTUKKzQ3QzYwMEE0NDM3RjExRUY3MTQ4NUExRjQ4CiswMEE1MzAzQTQ0MzhDQ0I1NjI4RDlBQUE0RDZDMjNGQzgxM0ZEQjQ5MDBCRDlERDhFRUYwODlEOUY3QjcwRkU0N0JBREMyNUU4NDE4NjY4OTM3NDU1MTcwNzAyODBDOTVBNTY0ODA2Q0I4NjM0MjAxODkzQkVCNzkyOTgzCiszNTRDNkE5NgorMDAxMjgyRDg3RDEwOUFEQUYwOUQ0NkMxMzUKKzRFNUZDMUE2OTAwOTNEMDgyMjM4N0I5NTEzNUVBRUE5NjI3RkRFQjhDRTNFOUJENDIwM0Q2RDU5RUEzODI3OUVBMUJCQUI1QkE4NkNGRjY3MTg4MTcwOUJGQThDRUFCMUY1RjgxRjhBNjJFMzRDODQzNEQxM0JFNjE2ODlGRjMwNDFEQzgxQjYxQ0FDMUVBRjZCQkQxN0RGMERBMDFENDNBQzQyMEQ4RDM1NDEzREQ2NDIwNTRGRDlEODk3NjIKK0EwRTMyNTNFCis0RTVBMzEyOTZCNjExMDU5ODFCRENGMEUwMDlDCitDMzhGQ0JFOTlFMkI3MjUyNTI3QzJCMzAwQTVGMzExRDk2NUMzN0UzNjM1Nzk4NEI0MEEyOEM4RDMyQzk0NzBFMkY2NkU3QTVGNEEyQjcxRTk2Nzg4MDI4MERFNDM2OTZENEJFMEQ2NDM5RjA2NkVCOTEyNjY2QTgzRTBGMEE3NzBDQ0IwNTQyMjI0QzE0RDBFNTc0MkM2OEY3OTNDQTAxMTVDODE1NUZCRUU2REU4QkE1OEJCQzFCMjI3OUZBNzQzRjUyNDA3MDdBQTZGNzM4RDQKKzY4NDM3MTVDCiswNkUxMjZBNzM0QTRENTlBMkEyMUQyNjNDNzc3CisxNEU1RjQwMUM5QTcyRjI1NTQ5NjEwOUI3NjNBN0Q5MDI2MTlFMTEzNTM3RTBCQUY5NjQ5RjcyQTg4NjdDQUQ5QzAzMUQ0NUVBMTE0MzJBQzVBMkM5NTNCNDYyMjU4OUVEMUEyRkYxNEJERUFCNEY5RDg5QzY3OTU2QTY0Rjk1RkNBRjU4OUY4ODJGRDAxOTgyMkQ1QUM0NkJCNjMyNkYxNUMwOUMzREQ3NzYwNjIzNDVBOTMyQUZCQkJERkY5NzNCRDlCNkI5RjU3OEMzMDM0NjNDMkRGQTc0MTA4MjQzQkRGQkJFNjk4NDY3RThFRTEwNkNGRUM2RjI2RDEKK0RBMTQKKzY2MDY0RUQ1CisyQ0FFNjBFRTdGMDQ0MEIzQTYwM0RBOEI1NworNEZENTZCRjQzOTJDQjIxODkzRjVBNjQyQzJFMDBCNkY2RTAxMEJDMzU5NUQyMDVEQkI3MDMwQTRCM0JDQkJFQ0M4OTdGNjA3Rjc1MjI2NTc2NkFCMEVCQzY5NzU4RUI1MDBDQUM1QUZFMTA1QzA2MDY1MDc3QjA3QzkxNkFFRjdBQ0M1NkY4NDRDMjFCRDA1ODEKKzhBNUJGMTlFCiswOUQ3RDc0NjVDMzU5ODlBOUE1NkNFREZBMDFBCis4QkRFMzYyN0ZDQkFDNEIzRkU1MjNDMDEwQzc1MEE3QkNGRkEwMERFNDE3MTk0ODI2QzE0MkIyQkY4RDQ4MzkxMTdCMDA3NzREN0Q2RTdBRTIwOTU0RTQ5MERFNEE2Rjk0ODE5NTRBMzZDODYwQTJEM0E4NUIzMjhENjc0OUFBNzg2MjcxNUM1NThCOUJGMzE1OTQ3MzNDMTk3MjI2QzNBNUE1QzE0RUE4MTAwM0ZCODAxRUZDOEI2QzhCMjU5MTQ5NTdEMjI0MDEwOUZEMjgxRDJDMkZCRjc3ODY4MDY0Rjk5OEYyNEU4RjdBODExOUMyNkJBMjQ0N0RGNTEKK0MyNEMKK0I3QzhBQ0ZDCisxRTVBOEYwQQorNkREMDlFMjc2NkJENjExODIzODE1NEVDN0QKK0JCM0E1ODg0OUUxN0REMzE1QzQ3ODI1QUY5OEQzREFEMTg5QThEMEFDRTMyQjA1RDBGMjhGODI0OUM4OUY4OUM0QjdGOUI5RUE0M0QxNDYyOTM0MDAyREMxMjg0RTVDMzc1QzY5MDEzMzBDODIwNzJFRjcyNDQ5MTUxQUYxODM5OUJGRUI1RkJEOEIxODI5OTY4MzhDODc1Q0YzQjY0RkE2NzZFMzBEMzk4QzRDRjk1QTIyODQzNEYwRTgzCis5QzlFNjFGMworQ0VBOEVDQzA2RjI4NkVDRDJDMTg3MEU5RTcKKzQ1M0M5OUU4QUNGQ0U4RTVERTk1NTUyNEY5M0ExOUMyQ0UxQzYwODA0M0I4MjQ2NDA0Rjg1N0NCN0EwQUQ4NDZCQUJGMjk5QTMxOTAxREZFOUU0RUJFNDY0RjFFRTgxQzc4NjIzOTQ5OUIwMDdBM0E1RDNCRTc1MkU4NEVFMDBEM0M0NENFRTNFQjYxNTUwMkE5MDRFQ0IwOTBGNzZFMEJDN0E5CisyNzg0NkU5RgorOTNFNkI1RDkzNTQ2M0Q0OEM3QTlBODFCRjY1NgorMkVDRTg3NThDRDc0OEE4QkQyRjlCODFBNTFFOTNDQTUwM0E4MzE1ODYzMEI5QTg1N0M0QzNCRkI3MTE3NDY1NDg4RDM2OEI2MjUxQTQzRkEzQUZBNkQwN0VDNTlDMkZFOTdCRERCODUwN0ZCM0MxQjU1MDRDQzlFMjg0NDM3REZFNUEzRTlGNkQxRTcwNjIxMkU3QjU4QUJBQURFMEUyQjQwMjBBQTY5MTg5ODBGODlGNjNGRkJCMEMzRjMzQzRGREI2MEI1ODIyNjVERjdDRDBEMkVBRTlBCitBNTQ0Q0UwQQorRjkxOTAzRTI5OUNCRTRGNUY3Nzg4QTcyNDMKK0MzMDQ0NjIxNjg4MzgwMjc4RDNEODI3NjFCNzYxRkFBNDkxNDRENEM3QzIzMDkzNEI0RDM4NzBERjc3MkEzRjY2RkM2Q0U0NDQ1NEFGNDc2OURGNDM5QjMwMDhCMUNCREQ0OUY4M0M4QkQ1Mjg1MDJBMUQxMkVFODE3OUFBQkM2QzRGMzU2MEI5MTAzMTRFOUNCOEJDMUM2RjA1RTFFNDk2MkMwOEM5ODQ1OUU5MjQwNkE4RDYyN0MKK0RFODNBN0Y1CiswMDMxM0ZDOTlDMzI1RkQxQTY2MzUzRERGQQorOUM4NzEyNUVGNjkyQkZCNTMyQ0Y5QkYyOEUyQkZEOEY1NDlFOEZERjNFMDk2OUIxNkMwMDY1QTI2QThBMjcxOTFFRjhCNTkxQjVCMjI3QTNEM0E4N0UzQzY5NTMwM0EzRkQyNjI1Mjc5MUUwNDA2NDM4QzIyRjRDMTIzOENFNkFDOTdEMzc0NUFERURGN0M1OEQ2QTQwRDhDMkRGOTQ5QUU2RDE0RTBCMkU5NUE1NEI4MDFENEM0OUU0CisxMTFBMUQ0MgorNTc5QjY0QTFERDU5RTgzMjZEMTJCRDUxRTEKKzIzMDBEMjcyOTY1N0JCQTAwNEFCQjQ1ODRGNUM1N0M2QjUzNTlCRjhFOUY5RkZGQUVCRkQ2NTQyQTdCQTMyNzc0QzlGMzREOTkyQzM5QUJEQ0NFOEFENjRCQUMzQUNCMEVCMkNGQzQzQzRDOUExMzEzQ0NCMzFENkVENEMyNDQ5MkU4OEEzNjY3RDIwNjBBNzI1ODZBQkQ0NTk5MQorRDlFNzAwRDgKKzg5OUNEQzU2NzAwREUzNUJBRUQ2OTFBNTNCCitEMzNGOUFFRDk4Qjg0QTE2RkQ1NzhGMzc3QUZBMEQ5MjVENjZDNzQ2MjlDNzgxQ0Q2QUIwNDcwRjYxQzk5OEJFQzAyNUExQTcyMzM4MUI0QUU4RTlEOENENDY4NDc0N0YzQTQ0MEVDMgorRTZDRDFBQjcKKzE1NkRGNzI0MjU2RURCMUM1RUU0QTU0MDQzMkIKKzk3Q0Q3RjY5NUEwQ0FDRUE4MEYxRTVCNDVGODA0MzhCRTAyQzIxRjFENDJERkZBMkY0Q0ZGOTBCNkMwMEI0MDdFOTJCOUI2QzVEMzU1NTQ2NzFGMjIyMzdGMEIxRjk5M0ZBOUNBRDYyMEU1MDdDRDc0QzVEN0I1RTNGODREM0EzRENDMTgyODRFRDg3REZERERCNjU4OEZEQjVGMDA1RTIyQjE1MTI2QkY5NzUyQUUxRUY2MjY3MDZCRkMwMDM0OTlGOTg4RkEzRTMzOTkzCitCN0ZGQzVBMQorNkUwQ0FCMDg4MDk5OEJERUYwQkQ3MDg5MDEKKzAwMERFNjRGOUY3RTFGQzlENEQ1Rjg3MUJBOEEzOTI1RUZFODhEOUVEMjE4NTAwNzkxMkVERTI0Q0RDRjdDREE4QjlFQkIyMDE5RTBFQ0UwRjBEQ0RGMThGQ0NBM0Y1QjgxMzZFN0UzRkU4MjU4MEUxQkZENTA0MjZEMjM5NzE0NTBDQkQzNThDOEM5CitGQzNBNjA2MQorNEYxOTg5OTIwMEQyMjFFRDJCMERGRTUwMUEKK0JERUFCOTMyRDMzMTEwN0UzRDBDOUIzQjI5QjMyNzA5QjFFNEZGRTAzMDIyMzdEQUIyRDZDQkFBRDdFNEUwN0VBNzIxMTNDOTMwQUZBODJCMTBDRDg1NTEwOEQzQkFCRUVDN0NDMUIyRURCMTQzQzVENEQ5RDg5RjRBNUI0NTlBNjQ5QkJDQTIwRTkwRjlDMzBENTg4QUY0N0ZCRTRDQUZFRUIwQUZBRjk5QjBDOUU3NTkKK0M1RDcwRUQ0Cis3Qjg5NzlEOEY2MUZDMzg5RUU0RjkyQjBBOTY1CitCRUEzMUIxRTBDNTE2RjBBODk2NzU1RjNDMTc2RkRCRUE3MUY5NDA5NEE0QzJFNDVEMUFDMUFBQTUwN0RGOTJEQkZFOUVEQzMwNDE5NTFBMEY2M0MzNDE5MEVBREQ2RTlENTJBOEQwQzY3RDkwQzU5NEE2NUQ0RkY1RDQwQUZFQUNBMkRDNTU4OTgxQTdBMDU3RjZBOTQ3RjFFMkM0RjkyMDY2ODRCMjhCRkVFMEZDNEExMDlBQTVGQUZBNjIzMDg4QzVCNjEwMDlCMjg5ODAyMjNFODgwMzY3OUUxRkI2Njk3NDUyQUY3NjY3NjlGQ0ZBOAorODI1OTQwNkQKKzBEN0I5NjRCMDdDRTM5QTNEMTFBMTg4RkUxCiswQTgyNUMzODlCOEMxM0M1MDE3RTE1N0REMDhBRTNDQUFCRjJFM0E1QTY4RThCRjJFN0QyNTQ1QTgxNzUxNUE5MEE3NUVBRUZEMzI2RkFEQTJBNjhENUI4Q0E2MEY3N0Y5Q0UzM0ZFQzJFMTBCOUE2MEY3QkIzNDUyMDA2MTQxOEMzQTIzQTg2CiswRDBBRkUzNAorOUU5NjEzRUFGNzM2N0JEMTFFQjk2MTQ4QjgKKzcyMzJEMTRCRDU2Njc2OEIxQjhBMUMxNkYwMjY4OTI3M0U0QjJERDg2NTU5MzREMkRCMDg4REU4MTVBMDI4ODFFQzNFMzYzRUQ3MTlFRTcwNUFBOEJBRUUwOUI4Q0U0MkNFMjJBRTk4Q0U4NTk3QzExRjZCNzc4MzMwODM1QjAwOTNFRkNBQTI4RjQ1MTFCOTdFQzJCMjZCMDZCRkJCMjI5OTAzRUQ5ODkzQzRGQjkyOUJCRkVBCitEMkVEMTQ3NworMEQwMTAyOUU3MkVDNDI3MTM5MURGMjc4QzQKKzZBNEYyNkRFQTJCN0ZEQzFFQjM5ODFEOUI2RTEyOUMxMTA0MDMxQjA4NUI2RTA2RjgyQzg0NzkxRTE5QTVGMUY0M0QwODc3M0UyNkVCNzU2NURFNDBCQjQ3NEIyRTdCQTE1NDI3MEUyOUE0N0QxMTg5QzlENTFCRTM4QkM0MjY4QzE5QjYyNkQ3RjE4MDYyQzAzRTMyRDQ0NDNENDJDMTdGM0U3QzJCRjg5MzREQTFEQzg1NTlGODEKKzdEMDAxRDkzCitERTQ0Q0ZERUU1RTVBNjZFMUNCRTg4QjIwN0JECitFQUQ5QzAwNzNENDhCODRDCitBQkJEMUREMgorOTI5NkU3NDU0NUE5QjcwRjVCQUQzNEU0ODRERDFBQTI1RERGNjdBOEEwODQwOUJGMEYxMDE5Q0UwREUzRjhBOTBGM0EKK0M5RDYyQkQ0MEVBOTg4NTg2MTVFQjNBRkExMjcwNzRFOEMxNTc4MkIwQUQ5RUJBNURDMDQyQTkyRjI1NDJBRUE0MTNCRjhGMDZDN0YKK0EyOTZGNzgzN0ZGRjlFMTAzQzBFQjhCNDg0QTcxM0VCNDBDQjU5QjM2MDgwRTk0NjA5OUYyNworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoaQorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGkKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hpIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA5NyBwdXQKK2R1cCAyIC9DMDA5OSBwdXQKK2R1cCAzIC9DMDEwMCBwdXQKK2R1cCA0IC9DMDEwMSBwdXQKK2R1cCA1IC9DMDEwNSBwdXQKK2R1cCA2IC9DMDEwOCBwdXQKK2R1cCA3IC9DMDExMiBwdXQKK2R1cCA4IC9DMDExNSBwdXQKK2R1cCA5IC9DMDExNiBwdXQKK2R1cCAxMCAvQzAxMjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE0NCAtMjI3IDUxMyA3MjhdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNUQxMzA5RDE3RjMxQjFGOUMwMEMzNzJFRUU2MUJEQ0FBOTQKKzcyMkVEN0Y1RkExOUIxOERFNTMxNDRCM0IxOUQKKzM2RkYyOTBCQzFCNjVBRUIyOUQ4MTdBQjJEODQzNEYyRjkyQjMzRDAwQ0Y1MTBFNkQyMEUwMEExNTE0OTlBODA5QjgzMkYyNDFBNUFBNTE3MEMxQzkzRkY4NTUyMDVDQjlFMzZFMTAwN0EwNjZENzc3NTkyMTc2ODVGQkIwQzk1N0IyNzgzNUNCOEIzOTA2QTVGOUQ2OTExNEQ3Qzc0MUFDNUJEODI3OEQwRTVDMUQzN0Y3OTYzMDhCMDRGNTUxRjcwMEU5MUNBMkU1RDhBQ0ZFNjBGNjEyQjI1MkU5QjlDREEzOTUwNDA4MThBNTczNjE1QjFENDlEOTVGMgorQTU2RgorRkZENDk3NjM4OTFCNzFBREJFN0E2NThFRkMKKzZFMzcxN0IxCitGRkU4NzkwMjY1RUY5QzZBRjNENEJERTI4OAorODZFOUNDNzFENjk2MDIzNTRFQzU5NUI5MzBDOUU2OUQwNURFOTAxM0UxMEJEMUJGNEU3MEFBRUFFMTNBQzg1MDdBOUM4NjFCRjk0RDZGREQxNkE1RTU4RjRERTE5MDU1QTlBNjc1NkYyRkYwMjlBOTk2NjBBQ0Q0MzA2MThBMEJBMjczRjhBM0U4QzhBRkFEMTRBMDUwMkY1RDg5RkZERkE4RjA4NkY1NTU5MkQxOEM5MjRCNTlGRDFDNUE0QUVCCitGRDFCRUIwNAorQTlFNDQ1QTE5MzdGNTg2NUQ5Mjc0MUJCMkE1RgorNzdFMjgxRkY1MzdGNUZGNzM1NUVENjcwNTAwNjk4OTQyNTE3ODYzNkYxNjJBN0Q1MEZBMzg2MjhEMjdBREQ0QUY4REQzNjIwRjRGMzZDQzAzNEU3NkZDN0JDMDU1QkVFRDEwOUVGRjBEQzg2NjVGQzc5N0Q4RDQ4MkYzMjc5NDJGRDM5MzRDN0Q5OEY3MjM5MDExMTNEOERFRTEwMUQ3RjM4OEFCMjNCOUE4RjBGNEY5NDg2MUU4MjFBRDc2NDhFRDM4Njc3MTdBMkVEQTkzOEI4NkNCMzI4MDdENzRGMzNDRjU5NDc3RDRCOUJDMzFDOTUzQkRDNTc4NjYzCis3OTM5Cis5MkVERTNGMUIwMDdEMTg5OUM0NDRGNzc4MDhBQ0M5Q0Y0RTNDQkM4RDJDRjA2OEJDNzkzQzVGNDNGMkM4RTg2MkMyRDZEMjlGREU0OTNEOEMzNTMwQTkxQzYxN0EwMjIKKzgzMjI0QzA0Cis2NkY3MUMzN0ZCNUNFQjk1NzM3MjczOEVCMTJECitBMTkwRjdCN0RFOTk4OUU3NjExMTlGOUVFMTJGQjhDNjc0QUIzQzAzNjQzNzY3QkNEMEY4NzI0NkI1MkNDRDYxMEQ3NzRGMzA1N0FERDdGNkIxNEUwMDVDRDFCMEE3MDRFMEZDMjVBQzk3ODIyMjVDMzY4QzBEREUzODg0REY0MzQ3NURFRkU3RkRDMjJCODc4RjFBN0QxMzU1MTU4MTA5NEJBNzU5Q0FCODM5MUJGREVBN0EyNUJCMjY4NUNDQzAwOEM1MUMxOTQ3CisxMDc5NUQwMAorQzc0OTg0ODdBM0Q1MDQ4RDM2RDUwM0NDRUQ4OAorNTg0MUVDRTdFNUFBNTZCOUJEMEZDNzA5Mjg1N0JDN0UxNTVENjQ5NzZGRjFEQUFERDlFMEYyQjc0M0U0ODU1NTg3MDY0RTQyOUM2QTc1N0IxRTRGMzZBNDNFREE4NzlGMDlFMTc1MkI3Rjg2NEQ5RjEyMjcyMzRDQzJCNzUzRTEwRjdEMUZBOTIxOEI0NjdFOEUwQ0I1QThCNUJFMDkzNURCQTI0MTBEOUZGMzgzNEVDMThDRjMzQkJDODFBMkZCQkMyRUExMTM1N0E2QTZCNDFFQ0FCM0UxRDE5ODhBMjZFNjY0NTk4RUFCOTM4RDQ1NUYKKzBGRjU3QjM0CitBN0Y2NTUyOUQyMTE3M0U0QTc2MkNDQTkxQTE3CiszNkQ0NTk1MDJDNTBBMEQyOTUzMDNCMUNDNkE0NDAzQjU5OUM4MjFDNTExNzI4NURBQzcxMzMyNjQxQzEzM0MzQzk0Njg0ODI3RkU1NjM0Q0VENUExRDEzM0M0MTk1RTM0OEExQjQ2ODE2NEIwN0JBMDlEOUFGODJGRjdGMzYwRjU0RDA2RjcwREFCNjMzMzYzOTNCRDkwQkI1QTZBNEMwMDhEQkQyMEQ0MzA2OEI0Mjk1QTU4NUU5RTNEMURFMkMwRThBQTNEQzdGCitCMzBGRTg2OAorQTcyQUJEOTVCOTZBRjNGNTJBQzBFMzU2MUJERgorRjg5MTM2MzhBODRFOEFFRDJEQUU3NTAyQzhFNThGREJCNkVGODAwOTk1QzU2N0M1MkZCRTNBMEVGRTM0RDNFRkNGOUUwMTZBRkVEMTlFQUYzOTg4M0UwNUIwQzNDNTQ2QkU2MzI0MkU0RTY0ODkzNjIwNThBN0FDQURCM0E5MTRDQkFBOTk5REI5NzYxNUJDMUNENjdCNzlBRjNDRkNBNjBCNTJDRDA1NDgwNjkwN0RBQ0I5QTdDQzlBRjNDQTJDQUI0ODczNDRCQzhGN0RBRTNEMTEwNERBRjc1MjA5QzM2M0JBREU2RDVFMEMzRjUwODYzREFCMEIyMTdDCisyNkVGCisxMEJBMDE1Rjk4RjRDNEQzMzYzN0M5MDdEQkQyQzQwNjVGQTI2MDBDNURFN0VDRkEyNzA2ODFCMTJENzc2N0E0MDQ4NTk0OUY2RjRGRUNBMTFENzYKK0E2NEY4RDdBCisxREM0MTA0MzA2RkM5MkNCNDBGMzM1OTRBRkU4CiszQzYwNTEwMkExN0EzQjFBQkNFM0FEREFBMEE3NEM3RUZENTc1MzgwQkQxOEU4QUE1N0NENzE1NDUwRjk5M0I1RDlEQjQzNTc3MEQxNkFCQ0VGMjdFQjhCMjg1RTZFRDQxQ0Q3NzA3QzQwMDBGQ0ZBNUMxQTg1REZCMDA4MTlENjEyODY2RTNDOTM2RkYwMkU0MEI4ODA4Mjc0NjhBMzM1RkI3RkFDRUVENzcwMUFDMDZCNDUyMUI0QUEwRERDMDM5RjhBQzdDNzJBMDNEM0ZEMjBCNTI3OTZDNEZERUZENjkyRUVCNjZDRUI5OQorMkRFM0EyMkQKK0QzMDQ4OUE2RkEyOTk3QURFMDhGNTFGNTFGCis3MzU4Q0Y0QjBFRUQ5Mjk0NDM2QUFBNEM2MDlEMkFFMURENDMzNUM0Q0U3NkE0NkNBMEE5OEZFQjg2NEMzNTBENjdGNTE2OEQ0MDZENTM5N0JDN0M5RDI2QTNEQ0MzNUIzOTQ5MzE1Qjc4NjYzQ0ZEMDg1RjE2QTVDREM3NzFBNEVDRTNCRDZCNDA3NzE3QzhFODQwNDQ4MTJCRTU4OUE2NTVBQTA2QkNCN0NCMDgKKzNDOTIyQjM3Cis5N0Q5MTFENkVEQzQ4QUQyQzU0MTk4MjZEOUNDCitENzYzRjVCQUY0NEVEQUFEQ0IzMjAxMDEyMDEyRDYxODJFMzg0QTZDRTkxMEJBQ0JGOTlDRTUwODI1QjlBM0M2NjkwNjczN0RCMDFEQUI1MDczMUJBRUExMzAzNzUyNEIwMTIxNDQyNzM2Rjk1MDE0QkJBQUREMzMyNEM5QkREQThBRUQ4NkU4MDJBNTgxOTE5MEQ1QjI5MjYzOEFERTU3MUY3NTBEMEIwMDJDRTFGQzc3NjI3QTE2MjU2QTlCRDQzMjcwRjI4NUZENDcxRTIxMTBCQ0I0OEFFRjZBRjQ3OUY3NEE3MEUyMjQ5OUFDRkQ3MURGMjBBODM0OTIKK0MzREYKKzk4OTU0NzVEOTJGMDM3NDE1NAorOTYxQUE2NjEKKzZENEYyRDA4NkJCNDYxRkRBREY1MjU4NEY2REEKKzk5MjNBQjc0OTlGQjU0MzIKKzdFNjgyQTMxCis5RkE0RkYzRTJEQTVBOTU4MEVFQjAzMDQ4QUQ5NjMxMUNDNzY1RTFFMjk0QUZFMTU1NTRDMUZGQ0MwODBCQUUzN0Q0QQorN0IyN0UzN0I0Njg2MjQyMzk4NUZCOUQ5NTU1RUJBN0I5N0ZGMTlGM0MyRjY4RjlDOTYwMEZGMTJBOTczQUJCM0UxMEI4RjM4REU0OQorN0YwOERBMjM2MEZCNUYxRUQxODIyNjEzQ0I2OUI0MzQ4NkY4N0YxNzA4MEZERTUyOTAyOTU1CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorZHVwIDIgL0MwMDgzIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzUwIDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzVERDg5QTg3OTBFQUQxOEVGQzc3RDNGRkFFODREQTVECiszMTIwNzRDNEQ1NDJERDVCRUM3MDk2OEY3NURDCisyNTBDMzk1NEU4REZCOEY0ODU3QkZFRjA5MkVCQTQ5RDI0ODk1NUE4NThDNUE1RjU1RjdCOTg3RUEwNkVDODQyOEQ5MzkwODRDODhGNUIxNTdEODBBQjJENzA2QTdFQjkzNkMzNDI5MTczNTg4RDJBQkE2QTI3REM5NEMwQjQ4NEYzMTY2NjM1NTU3OTcwMDRDQkZBNzlFN0I4NTQ1QzgxMEJGOUNBOTJGNjFBQkQ5RTIwMkVEOUU5NTk0M0RGN0E1QUJCRjNDMjBCREUzQjZFRUM5QzBCOTVBNEM5QzFEMzhBQTdDNjc4NkFEQkJCNzlFRTE4M0JEREYxOTQKKzE5NTMKKzY0NDlEQkI3QUU0N0U5RkM2RjNBQkYxRENEN0ExRTI3NEU4N0RBRTkKK0EyMjczN0ZBCis2NDA0QjIxNUEyN0JGQUY2RDBCNTBFOTREMgorMDcxMjNBNUJCMzgwQzg2REI1MDMzRUU3NDMxODFCQkZDQzAzNTY1NzFGNzI5N0EyMDdDMjNGMUU1ODgyNTdGREVGNURGMjI5CitDQUJGM0IzQworOUUwOTg4QzYzQjM1OEFDQTRCNEZFQjAzM0RGQgorRTJFMzg3QTA2QTIzQ0FDQQorOEUxMDRCOTAKK0RGREJENDFGMDYzRThBOERGQTBBQkE0REQ3NDQzMDE1NTI2QUU1MjU1MzE1NTk3Nzc5RTA0RDg1ODQ5MzA1RUE0RjMxCis1Q0RBRDA2RTU4NDFFMUI4MDc0NzYwQzk5NzAyQjhDRjQ0M0Q3NTIxNzREOTk2Qzk0RTY5MDc5N0E5NTg3Q0Y1MDE3REVCMTFFNUZFCiswMjU3NkU5RTA4QjM5Njg4QkJFOTlBMTg2QUE4RkM3RTIyMkY1RTUyQjI5QTdGREYzNzlFRjUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3N5bTpjbGFzMTIgMTIuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyaSAxMi4wMCAvUFNPd3N0ZHV0Y2hpIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MjIyZTNjMzgyZTNhMmYxNDAxMTcwMTE4MmUzNjJjMzEzNTJhM2EzMzAxMmYzNzNhMDEyMTJlMmEzYjNkM2EzMjM2MzAwMTIyMmUzYzNmMzczYTMzMDEyMz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyZTNhMmYzNzNhMzUyYTM2MmMyZT4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MGQ+IDk0MzQgMTMzODUgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyNjcgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI2NyA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjY3IDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI2NyAzIDcxMzMgMzIgcword3N0OmR1dGNoMTRiIFNGCis8MDkwZjBkMTcxMTE0MTM+IDEyNzEgMTQ1OCAwIDIwNTUgLTEgcworPDAwMDMwMjAwMDYxMzE3MTUxNDBlMTgwZDE3MTExNDEzPiAyMDU1IDE0NTggMiAzNzE4IDAgcword3N0OmR1dGNoMTIgU0YKKzwyMjJlM2MzODJlM2EyZjAwMzIzYjAwMmE+IDEyNzEgMjAyMSAyIDIzNTAgMCBzCis8MDAyYjJlMzYyYzMxMzUyYTNhMzM+IDIzNTAgMjAyMSAxIDM0MjcgMCBzCis8MDAzYzMxMmEzYzAwMmMyYTM2MDAyYjJlMDAzZDNiMmUyZDAwM2MzNzAwMzUyZTJhM2IzZDNhMmUwMDNlMmEzYTMyMzczZDNiMDAyYTNiMzgyZTJjM2MzYjAwMzcyZjAwMzYyZTNjM2YzNzNhMzMzMjM2MzAwMDM4MmUzYTJmMzczYT4gMzQyNyAyMDIxIDExIDk0NjEgMCBzCis8NDQ+IDk0NjEgMjAyMSAwIDk1MzEgLTEgcworPDM1MmEzNjJjMmUwOD4gMTI3MSAyMjY2IDAgMTkxNyAtMSBzCis8MDAxZjNjM2IwMDM4M2EzMjM1MmEzYTQxMDAyZjM3MmMzZDNiMDAzMjNiMDAzNzM2MDAyYjNkMzQzMzAwMmQyYTNjMmEwMDNjM2EyYTM2M2IyZjJlM2EwMDJhMzYyZDAwM2EyZTM5M2QyZTNiM2MwOTNhMmUzYjM4MzczNjNiMmUwMDM4MmUzYTJmMzczYTM1MmEzNjJjMmUwMDNkM2IzMjM2MzAwMDJlMzI+IDE5MTcgMjI2NiAxMyA5NDYxIDAgcworPDQ0PiA5NDYxIDIyNjYgMCA5NTMxIC0xIHMKKzwzYzMxMmUzYT4gMTI3MSAyNTEwIDAgMTY0MiAtMSBzCis8MDAyNTE5MjMwMDM3M2EwMDI2MWEyMzAwMmEzNjJkMDAzYzMxMmUwMDE4MmUzYTMzMmUzNDJlNDEwMDI0MzcyYzMzMmUzYzNiMDAzMjM2M2MyZTNhMmYyYTJjMmUwODAwMjUzMTJlM2EyZTAwMmEzYTJlMDAzNzM4M2MzMjM3MzYyYTM0MDAzYzJlM2IzYzNiMDAyYTNlMmEzMjM0MmEyYjM0MmUwMDNjMzc+IDE2NDIgMjUxMCAxNCA5NTMxIDAgcworPDM1MmUyYTNiM2QzYTJlPiAxMjcxIDI3NTUgMCAyMDM4IC0xIHMKKzwwMDNjMzEyZTAwMzgyZTNhMmYzNzNhMzUyYTM2MmMyZTAwMzcyZjAwMWEyMDIzMWYwNjAwMjYzNjMyNDAwMDFhMzczNTJhMzIzNjAwMjQzNzJjMzMyZTNjM2IwNjAwM2MzMTJlMDAxYz4gMjAzOCAyNzU1IDkgNjg1MiAwIHMKKzwzNzNhMmUwMDE3PiA2ODQ0IDI3NTUgMSA3MzM4IDAgcworPDI1MjE+IDczMTggMjc1NSAwIDc2NTggLTEgcworPDAwMTcyMzFmMDAyYTM2MmQwMDNjMzEyZTAwMWUyMzAwMWUzMjIzPiA3NjU4IDI3NTUgNSA5NDYxIDAgcworPDQ0PiA5NDYxIDI3NTUgMCA5NTMxIC0xIHMKKzwyMzFmPiAxMjcxIDMwMDAgMCAxNDgwIC0xIHMKKzwwMDIwMjAxNzAwMzIzNjNjMmUzYTJmMmEyYzJlMDg+IDE0ODAgMzAwMCAyIDI4NzYgMCBzCis8MjUzMTMyM2I+IDEyNzEgMzMyOSAwIDE2NjUgLTEgcworPDAwM2MzNzM3MzQ+IDE2NjUgMzMyOSAxIDIwNjQgMCBzCis8MDAzMjNiMDAzNTJhMzIzNjNjMmEzMjM2MmUyZDAwMmEzNjJkMDAzMjM2MmYzNzNhMzUyYTM0MzQ0MTAwM2IzZDM4MzgzNzNhM2MyZTJkMDAyYjQxMDAzYzMxMmUwMDFmMjIxYTAwMjIyZTNjM2YzNzNhMzMzMjM2MzAwMDIzPiAyMDY0IDMzMjkgMTAgNzkwOSAwIHMKKzwyZTNhMmYzNzNhMzUyYTM2MmMyZTAwMjU+IDc5MDEgMzMyOSAxIDkxMjUgMCBzCis8MmUyYTM1MDg+IDkwOTQgMzMyOSAwIDk1MzEgLTEgcworPDFmM2M+IDEyNzEgMzU3NCAwIDE0MjEgLTEgcworPDAwMzIzYjAwPiAxNDIxIDM1NzQgMiAxNjYyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDcwODBhPiAxNjYyIDM1NzQgMCAyMTE4IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzYjNkMzgzODM3M2EzYzJlMmQwMDNlMzIyYTAwMmEzNjQxMDAzNzJmMDAzYzMxMmU+IDIxMTggMzU3NCA1IDQzNDAgMCBzCis8MDAzNjM3M2EzNTJhMzQwMDFlMmUzZjM0MmUzYzNjMDcyMz4gNDM0MCAzNTc0IDIgNjExOSAwIHMKKzwyYTJjMzMyYTNhMmQwMDNiM2QzODM4MzczYTNjMDAyYzMxMmEzNjM2MmUzNDNiMDgwMDI4PiA2MTExIDM1NzQgMyA4NTcyIDAgcworPDM3M2QwMDJhM2EyZTAwMmYzYTJlMmU+IDg1NDYgMzU3NCAyIDk1MzEgMCBzCis8M2MzNz4gMTI3MSAzODE5IDAgMTQ1NiAtMSBzCis8MDAzNTJhMzMyZTAwMmUzNjMxMmEzNjJjMmUzNTJlMzYzYzNiMDAyYTM2MmQwMDM1MzcyZDMyMmYzMjJjMmEzYzMyMzczNjNiMDAzYzM3MDAzYzMxMzIzYjAwM2MzNzM3MzQwOD4gMTQ1NiAzODE5IDcgNjExMCAwIHMKKzwyNTMxMzIzYjAwMmQzNzJjM2QzNTJlMzYzYzAwMzIzYjAwMzczYTMwMmEzNjMyNDIyZTJkMDAwNDM0MzczNzNiMmUzNDQxMDUwMDMyMzYzYzM3MDAzYjJlM2UyZTNhMmEzNDAwM2IyZTJjM2MzMjM3MzYzYjAwMmEzYjAwMmYzNzM0MzQzNzNmM2IxND4gMTI3MSA0MTQ3IDkgNzQ2NCAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA0NDc2IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDI0MmUyYzNjMzIzNzM2MDAwYjA4MDAzMjNiMDAzZjMxMmEzYzAwNDEzNzNkMDAyYTNhMmUwMDNhMmUyYTJkMzIzNjMwMDAzYTMyMzAzMTNjMDAzNjM3M2YwOD4gMTU4OSA0NDc2IDggNTU3NCAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA0ODA1IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDI0MmUyYzNjMzIzNzM2PiAxNTg5IDQ4MDUgMCAyMjYyIC0xIHMKKzwwMDBjMDgwMDJkMmUzYjJjM2EzMjJiMmUzYjAwMzEzNzNmPiAyMjYyIDQ4MDUgMyAzNzc2IDAgcworPDAwM2MzNzAwMzAyZTNjMDAzYzMxMmUwMDM2MmUzYzM4MmUzYTJmMDAyYjMyM2MzYjAwMmEzNjJkMDAzMTM3M2YwMDNjMzcwMDNiMmUzYzA3M2QzODAwNDEzNzNkM2EwMDNiNDEzYjNjMmUzNTAwM2MzNzAwM2EzZDM2PiAzNzc2IDQ4MDUgMTMgOTIxMyAwIHMKKzwzNjJlM2MzODJlM2EyZjA4PiAxNTg5IDUwNTAgMCAyMzA0IC0xIHMKKzwwMDFmM2MwMDJhMzQzYjM3MDAyZDJlM2IyYzNhMzIyYjJlM2IwMDJhMDAzYjMyMzUzODM0MmUwMDNmMmE0MTAwM2MzNzAwM2UyZTNhMzIyZjQxMDAzYzMxMmEzYzAwM2MzMTJlMDAzMjM2M2IzYzJhMzQzNDJhM2MzMjM3MzYwMDMxMmEzYjAwMmIyZTJlMzYwMDNiM2QyYzJjMmUzYjNiMmYzZDM0MDg+IDIzMDQgNTA1MCAxNCA5MjEzIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDUzNzggMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjQyZTJjM2MzMjM3MzY+IDE1ODkgNTM3OCAwIDIyNjIgLTEgcworPDAwMGQwODAwMmQyZTNiMmMzYTMyMmIyZTNiMDAzYzMxMmUwMDJkMmUzYjMyMzAzNjAwMzcyZjAwMzYyZTNjMzgyZTNhMmYwOD4gMjI2MiA1Mzc4IDYgNTM0MiAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA1NzA3IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDI0MmUyYzNjMzIzNzM2PiAxNTg5IDU3MDcgMCAyMjYyIC0xIHMKKzwwMDBlMDgwMDJkMmUzYjJjM2EzMjJiMmUzYjAwMzYyZTNjMzgyZTNhMmY+IDIyNjIgNTcwNyAzIDQwNDggMCBzCis8MDMzYjAwMmIzZDM0MzMwMDJkMmEzYzJhPiA0MDYwIDU3MDcgMiA1MDc0IDAgcworPDAwM2MzYTJhMzYzYjJmMmUzYTAwM2MyZTNiM2MzYjAwMmEzNjJkMDAzYzMxMmUzMjNhMDAyYzM3MzUzNTJhMzYyZDAwMzQzMjM2MmUwMDM3MzgzYzMyMzczNjNiMDg+IDUwNzQgNTcwNyA3IDkyMTMgMCBzCitzeW06Y2xhczEyIFNGCis8MDI+IDEyNzEgNjAzNSAwIDEzNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyNDJlMmMzYzMyMzczNj4gMTU4OSA2MDM1IDAgMjI2MiAtMSBzCis8MDAwZjA4MDAyZDJlM2IyYzNhMzIyYjJlM2IwMDM2MmUzYzM4MmUzYTJmPiAyMjYyIDYwMzUgMyA0MDc1IDAgcworPDAzM2IwMDNhMmUzOTNkMmUzYjNjMDczYTJlM2IzODM3MzYzYjJlMDAzYzJlM2IzYzNiMDAyYTM2MmQwMDNjMzEyZTMyM2EwMDJjMzczNTM1MmEzNjJkMDAzNzM4M2MzMjM3MzYzYjA4PiA0MDg3IDYwMzUgNiA4OTc5IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDYzNjQgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjQyZTJjM2MzMjM3MzY+IDE1ODkgNjM2NCAwIDIyNjIgLTEgcworPDAwMTAwODAwMmQyZTNiMmMzYTMyMmIyZTNiMDAzYjM3MzUyZT4gMjI2MiA2MzY0IDMgMzgxNyAwIHMKKzwwMDM3MmYwMDNjMzEyZTAwM2IzZDM4MzgzNzNhM2MzMjM2MzAwMDNjMmUzYjNjMDAzYzQxMzgyZTNiMDAzNzJmMDAzNjJlM2MzODJlM2EyZjAwMmEzNjJkMDAzYzMxMmUzMjNhMDAyYzM3MzUzNTJhMzYyZDAwMzQzMjM2MmU+IDM4MTcgNjM2NCAxMSA5MjEzIDAgcworPDM3MzgzYzMyMzczNjNiMDg+IDE1ODkgNjYwOSAwIDIzMTQgLTEgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDY5MzggMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjQyZTJjM2MzMjM3MzY+IDE1ODkgNjkzOCAwIDIyNjIgLTEgcworPDAwMTEwODAwMzgzYTM3M2UzMjJkMmUzYjAwMmEwMDJkMmUzYjJjM2EzMjM4M2MzMjM3MzYwMDM3MmYwMDNjMzEyZTAwMzAzNDM3MmIyYTM0MDAyYzM3MzUzNTJhMzYyZDA3MzQzMjM2MmUwMDM3MzgzYzMyMzczNjNiMDAyZjM3M2EwMDM2MmUzYzM4MmUzYTJmMDg+IDIyNjIgNjkzOCAxMSA4OTc4IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDcyNjYgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjQyZTJjM2MzMjM3MzYwMDEyMDgwMDM4M2EzNzNlMzIyZDJlM2IwMDNiMzczNTJlMDAyZTQwMmEzNTM4MzQyZTNiMDAzNzJmMDAzNjJlM2MzODJlM2EyZjAwM2QzYjJhMzAyZTA4PiAxNTg5IDcyNjYgNyA2Mjg2IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDc1OTUgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjQyZTJjM2MzMjM3MzYwMDEzMDgwMDM0MzIzYjNjM2IwMDNjMzEyZTAwMmMzMTJhMzYzMDJlM2IwMDJhMzYyZDAwMmYzMjQwMmUzYjAwMzIzNjAwM2MzMTMyM2IwMDNhMmUzZTMyM2IzMjM3MzYwMDM3MmYwMDM2MmUzYzM4MmUzYTJmMDg+IDE1ODkgNzU5NSAxMSA3MjE1IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDc5MjQgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjQyZTJjM2MzMjM3MzYwMDBiMGEwODAwMzQzMjNiM2MzYjAwM2IyZTNlMmUzYTJhMzQwMDMzMzYzNzNmMzYwMDM4M2EzNzJiMzQyZTM1M2IwMDNmMzIzYzMxMDAzYzMxMzIzYjAwM2EyZTNlMzIzYjMyMzczNjAwMzcyZjAwMzYyZTNjMzgyZTNhMmYwOD4gMTU4OSA3OTI0IDEwIDc4MDIgMCBzCitzeW06Y2xhczEyIFNGCis8MDI+IDEyNzEgODI1MiAwIDEzNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyNDJlMmMzYzMyMzczNjAwMGIwYjA4MDAzODNhMzczZTMyMmQyZTNiMDAzYjM3MzUyZTAwM2MzYTM3M2QyYjM0MmUzYjMxMzczNzNjMzIzNjMwMDAyYTNiM2IzMjNiM2MyYTM2MmMyZTA4PiAxNTg5IDgyNTIgNSA2NDE3IDAgcworPDI3PiAxMjcxIDg1ODEgMCAxNDgwIC0xIHMKKzwyZTAwM2MzMTJhMzYzMzAwNDEzNzNkMDAzMjM2MDAyYTJkM2UyYTM2MmMyZTAwMmYzNzNhMDA0MTM3M2QzYTAwMmMzNzM1MzUyZTM2M2MzYjA2MDAyYTM2MmQwMDMxMzczODJlMDAzYzMxMmEzYzAwNDEzNzNkMDAyZjMyMzYyZDAwM2MzMTMyM2IwMDNjMzczNzM0MDAzZDNiMmUyZjNkMzQwOD4gMTQ2MyA4NTgxIDE1IDg4OTAgMCBzCis8MjUzMTJlMDAzNTJhMzIzNjNjMmEzMjM2MmUzYTNiMDAzNzJmMDAzNjJlM2MzODJlM2EyZjA4PiAxMjcxIDg5MTAgMyAzNzU5IDAgcworPDI5MjkxZTM3M2YwMDJmMmEzYjNjMDAzMjNiMDAzMjNjMTYwMDFmM2MwMzNiMDAzYjM3MDAyZjJhM2IzYzA2MDAzYzMxMmEzYzAwMDgwODA4MDIwMDE1MDcwNT4gMTI3MSA5MjM4IDkgNDc3NCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA0MTQxMzE5MGYxMzE3MTExNDEzMTYwMDBiMTMwZTAwMDUwZjEwMTExMzExMTcxMTE0MTMxNj4gMTI3MSA5NjgyIDIgMzg3NyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8Mjg+IDEyNzEgMTAwNzQgMCAxNDMzIC0xIHMKKzwzNzNkPiAxNDA3IDEwMDc0IDAgMTYzOSAtMSBzCis8MDAzNTJhNDEwMDM2MzczYzAwMmIyZTAwMmYyYTM1MzIzNDMyMmEzYTAwM2YzMjNjMzEwMDNiMzczNTJlMDAzNzJmMDAzYzMxMmUwMDJjMzczNjNlMmUzNjNjMzIzNzM2M2IwMDJhMzYyZDAwMmQyZTJmMzIzNjMyM2MzMjM3MzYzYjAwM2QzYjJlMmQwMDJiNDEwMDNjMzEzMjNiMDAyZDM3MmMzZDM1MmUzNjNjMDg+IDE2MzkgMTAwNzQgMTUgOTUzMSAwIHMKKzwxZDJlMzYyZTNhMmEzNDM0NDEwNj4gMTI3MSAxMDMxOCAwIDIyMTkgLTEgcworPDAwMzIzYzJlMzUzYjAwMzcyZjAwMzgyYTNhM2MzMjJjM2QzNDJhM2EwMDMyMzUzODM3M2EzYzJhMzYyYzJlMDYwMDJjMzczNTM1MmEzNjJkMDAzNDMyMzYyZTAwMzczODNjMzIzNzM2M2IwNjAwMmEzNjJkMDAyYzM3MzUzNTJhMzYyZDNiPiAyMjE5IDEwMzE4IDkgODY1MCAwIHMKKzwwMDNmMzIzNDM0MDAyYjJlMDAzMjM2PiA4NjUwIDEwMzE4IDMgOTUzMSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBjMTQxMjBlMTAwYjBkMGY+IDEyNzEgMTA1NjMgMCAyMDM1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzYzQxMzgyZTA4MDAxYzMyMzQyZTM2MmEzNTJlM2IwMDJhMzYyZDAwMmMzNzM1MzUyYTM2MmQwMDM0MzIzNjJlMDAzMjNjMmUzNTNiMDAzYTJlMzkzZDMyM2EzMjM2MzAwMDNkM2IyZTNhMDAzYjNkMmIzYjNjMzIzYzNkM2MzMjM3MzYwMDNmMzIzNDM0MDAyYTM4MzgyZTJhM2EwMDMyMzY+IDIwMzUgMTA1NjMgMTIgOTUzMSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA1MDkwMTA2MDUwMjA1MGEwNDAzPiAxMjcxIDEwODA4IDAgMjA0MSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwM2M0MTM4MmUwOD4gMjA0MSAxMDgwOCAxIDI1MzIgMCBzCis8MTcwMD4gMTI3MSAxMTEzNyAxIDE0ODggMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwODA1MGEwNDA4MDcwNDAyPiAxNDg4IDExMTM3IDAgMjE2NyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMzIzYjAwMmEwMDM3MzYyZTAwMzczYTAwM2MzZjM3MDAzMjNjMmUzNTAwMzQzMjNiM2MwMDM4MmEzYjNiMmUyZDAwM2YzMjNjMzEwMDJhMDAyYzM3MzUzNTJhMzYyZDAwMzQzMjM2MmUwMDM3MzgzYzMyMzczNjAwM2MzMTJhM2MwMDJjMmEzNjAwM2IyZTNjMDAzYzMxMmUwMDNlMmEzNDNkMmU+IDIxNjcgMTExMzcgMTggOTUzMSAwIHMKKzwzNzJmPiAxMjcxIDExMzgyIDAgMTQ1NyAtMSBzCis8MDAzNzM2MmUwMDM3M2EwMDNjM2YzNzAwMzYyZTNjMzgyZTNhMmYwMDM4MmEzYTJhMzUyZTNjMmUzYTNiMDgwMDAwMWYyZjAwNDEzNzNkMDAzZjMyM2IzMTAwM2MzNzAwM2IyZTNjMDAyYjM3M2MzMTAwMzgyYTNhMmEzNTJlM2MyZTNhM2IwMDNjMzcwMDNiMmUzODJhM2EyYTNjMmUwMDNlMmEzNDNkMmUzYjA2MDAzMjNjMmUzNTNiPiAxNDU3IDExMzgyIDE3IDk1MzEgMCBzCis8M2IzMTM3M2QzNDJkPiAxMjcxIDExNjI3IDAgMTg3NCAtMSBzCis8MDAyYjJlMDAzYjJlMzgyYTNhMmEzYzJlMmQwMDJiNDEwMDJhMDAyYzM3MzUzNTJhMDAwNzAwMWIzMDAwMjkyOTM4MmEzYTM1MGIwNjM4MmEzYTM1MGMwMjA4MDAxZjJmMDA0MTM3M2QwMDNmMzIzYjMxMDAzYzM3MDAzYjJlM2MwMDNjMzEyZTAwMmYzMjNhM2IzYzAwMzgyYTNhMmEzNTJlM2MyZTNhPiAxODc0IDExNjI3IDE2IDk1MzEgMCBzCis8M2YzMjNjMzEzNzNkM2MwMDJhMzQzYzJlM2EzMjM2MzAwMDNjMzEyZTAwM2UyYTM0M2QyZTAwMzcyZjAwM2MzMTJlMDAzYjJlMmMzNzM2MmQwNjAwNDEzNzNkMDAzYjMxMzczZDM0MmQwMDJmMzczNDM0MzczZjAwM2MzMTJlMDAyZjMyM2EzYjNjMDAzMjNjMmUzNTAwM2YzMjNjMzEwMDJhMDAyYzM3MzUzNTJhMDAwNzAwMWIzMD4gMTI3MSAxMTg3MSAxNyA5NTMxIDAgcworPDI5MjkzODJhM2EzNTBiMDYwMjA4PiAxMjcxIDEyMTE2IDAgMjE2NCAtMSBzCis8MDAyMDMyMzMyZTNmMzIzYjJlMDYwMDM4M2EyZTJjMmUyZDJlMDAzYzMxMmUwMDMyM2MyZTM1MDAzZjMyM2MzMTAwMmEwMDJjMzczNTM1MmEwMDMyMmYwMDQxMzczZDAwM2YzMjNiMzEwMDNjMzcwMDNiMmUzYzAwMzczNjM0NDEwMDNjMzEyZTAwM2IyZTJjMzczNjJkMDAzODJhM2EyYTM1MmU+IDIxNjQgMTIxMTYgMTYgOTQ2MSAwIHMKKzw0ND4gOTQ2MSAxMjExNiAwIDk1MzEgLTEgcworPDNjMmUzYT4gMTI3MSAxMjM2MSAwIDE1MjYgLTEgcworPDAwMDcwMDFiMzAwMDQzMDYzODJhM2EzNTBjMDIwODAwMTczNjAwMzIzYzJlMzUwMDNmMzIzYzMxMzczZDNjPiAxNTI2IDEyMzYxIDYgNDUxMiAwIHMKKzwwMDJhMDAyYzM3MzUzNTJhMDAzZjMyMzQzNDAwM2IyZTNjMDAyYjM3M2MzMTAwMzgyYTNhMmEzNTJlM2MyZTNhM2IwODAwMjUzMTMyM2IwMDM0MmEzYjNjMDAzNTM3MmQyZTAwMzIzYjAwM2MzMTJlPiA0NTEyIDEyMzYxIDExIDk1MzEgMCBzCis8MzczNjJlPiAxMjcxIDEyNjA2IDAgMTYwOCAtMSBzCis8MDAzNTM3M2IzYzAwMmYzYTJlMzkzZDJlMzYzYzM0NDEwMDNkM2IyZTJkMDg+IDE2MDggMTI2MDYgMyAzNjA4IDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDQpIDQKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDA0MCBwdXQKK2R1cCA0IC9DMDA0MSBwdXQKK2R1cCA1IC9DMDA0NCBwdXQKK2R1cCA2IC9DMDA0NSBwdXQKK2R1cCA3IC9DMDA0NiBwdXQKK2R1cCA4IC9DMDA0NyBwdXQKK2R1cCA5IC9DMDA0OCBwdXQKK2R1cCAxMCAvQzAwNDkgcHV0CitkdXAgMTEgL0MwMDUwIHB1dAorZHVwIDEyIC9DMDA1MiBwdXQKK2R1cCAxMyAvQzAwNTggcHV0CitkdXAgMTQgL0MwMDY1IHB1dAorZHVwIDE1IC9DMDA2NiBwdXQKK2R1cCAxNiAvQzAwNjcgcHV0CitkdXAgMTcgL0MwMDY5IHB1dAorZHVwIDE4IC9DMDA3MSBwdXQKK2R1cCAxOSAvQzAwNzMgcHV0CitkdXAgMjAgL0MwMDc3IHB1dAorZHVwIDIxIC9DMDA3OCBwdXQKK2R1cCAyMiAvQzAwODAgcHV0CitkdXAgMjMgL0MwMDgyIHB1dAorZHVwIDI0IC9DMDA4MyBwdXQKK2R1cCAyNSAvQzAwODQgcHV0CitkdXAgMjYgL0MwMDk1IHB1dAorZHVwIDI3IC9DMDA5NiBwdXQKK2R1cCAyOCAvQzAwOTcgcHV0CitkdXAgMjkgL0MwMDk4IHB1dAorZHVwIDMwIC9DMDA5OSBwdXQKK2R1cCAzMSAvQzAxMDAgcHV0CitkdXAgMzIgL0MwMTAxIHB1dAorZHVwIDMzIC9DMDEwMiBwdXQKK2R1cCAzNCAvQzAxMDMgcHV0CitkdXAgMzUgL0MwMTA0IHB1dAorZHVwIDM2IC9DMDEwNSBwdXQKK2R1cCAzNyAvQzAxMDcgcHV0CitkdXAgMzggL0MwMTA4IHB1dAorZHVwIDM5IC9DMDEwOSBwdXQKK2R1cCA0MCAvQzAxMTAgcHV0CitkdXAgNDEgL0MwMTExIHB1dAorZHVwIDQyIC9DMDExMiBwdXQKK2R1cCA0MyAvQzAxMTQgcHV0CitkdXAgNDQgL0MwMTE1IHB1dAorZHVwIDQ1IC9DMDExNiBwdXQKK2R1cCA0NiAvQzAxMTcgcHV0CitkdXAgNDcgL0MwMTE4IHB1dAorZHVwIDQ4IC9DMDExOSBwdXQKK2R1cCA0OSAvQzAxMjAgcHV0CitkdXAgNTAgL0MwMTIxIHB1dAorZHVwIDUxIC9DMDEyMiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5MjAgNzM5XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjE5NTY1RjY2QUI3NENEN0RCQzg2MjExNzlCMjA5RTFCN0Q3CitEQkRFRkRFNDQ3QzExQzQyOUZEMjcyQ0UKKzZBMjNCQURFN0MzRTZFMjkxNworQ0RCQTE4MEUKKzFENDUyMUE0NDNGRjU2Nzc2MkVCNTE5OUM3MTcKK0M4QzA1Q0M0M0RBM0M4QTY3RURERTRCMDU5MTQ1MUE1NTI5QzlGN0Q4NzJGNzBGQkI0MUE5NURCRjc2QjQyQjUxNjY3NzVBQTM4NEY5RTRFREM3MUM3RjcyRkVBRDE1ODMyNTQwQUY1ODZGMTdFQkVENTIxNTc4OTkxODBEMUFBRTM5Nzc1QjRCNUJDMTE5OUE2NUJDNDNBNkYyNkM5RTAxMUVCNEM0OEY5NEM5RjQ1MTIwOUVFNjIxMUZCOEIyQkZGQjg5RTIzNkMyRTgzCis4NjJBMzIyQQorNzM4NTBCMjhDQTc0RjM4RjkwQzI5NDZENUIKKzlGRDhERUNGNTkwMzgxQkMzMThBNUYzMDg4QTZCMTYyMEIxOUE4NkNEMjBBREMyRENCRjgwOTFGMTJCREFBMDdBQTc5OTE2MDE0RjlFQTI5NUNBMEU2MEQ5MzdCMDg1N0E1MUIzQjQwRkIzMEY5REYzRjZDMjhBNEQyODFBQUYwCis0NjQyOTU0QworMzYwMjg5QUI2MkUwRjkxOTA2RTREOEVDMTMKK0MwQjU0MkRCRjVGMzE2NEE0NzdGNTNEOEFGODk1QkZCMTUxQUY5MzMxMjIzRjAxQUNDOTU4RjI2MzY2QUMzRTlBMkY3MEQ5ODkxNTZENjM1NEMyQTI4MDZEQzFGODk4QkRFRTk5NkIwQUIzMkIxQTk4RkZBRDlBMjc1RDNEQgorQjIwNTdGNzIKKzZGMzdFQTcwNTc5NEY1NTY4MjA5MkM5QUJFCis1M0M1NDRERUJGRTU5QkI4NEIwOUVBNTA1MkZBQzJDMjNENjNBODk4QTZCREY5OTA1MjAzRDc1Mzg2RTI4M0VGRDU4NTQxOEZCOUZEREM2QzE2MDBBODg0RDM5NDUwQjdCNzhBMkU4QzBCMzk5MzBBMzIKK0FFMTAxREZFCitEMDQyNDlGMDJCOUMxMDAyNUVBOEIxRTFDMgorRDZBQjkyMjc4M0FCRUVCRDhFNDlGM0EzQjk5ODAwRThDODcxODRFMjIwMTAxNAorMkVDNEFBRTAKKzRENzNEOUJERkU2OTA2NTQ5RTcwMDUxMkM1Cis4RTgzRjQxQ0RFMDlCRkU1NzhENUUxQ0Y4RUM3MzM4M0Q5MTI5QkU5MzAxMDY5REEyMjkzOUY0QjlFRTlERAorM0QwNkUzMzMKKzk0MjRFRjVEOTFEMTQwNTk5MkE1RTAzMTNCCitFNTA5NTQ4QzA2MjZDNkNFMUY2ODI0MzhCOTg2QTI3RjhGMEMwOEY2MTk1QTdGNjA2Qzg2MzdGQgorMTA5QUFFQjYKKzc5NTAxOUU3QjNDRTY2NDFCNTc1OUM1OUEyCitDQjU2NDVERUE2NEM0QUUyOTY3MjI4RDQzQTQ4QTc5NjlDQzkwMjE0NjM0QjBCRDZFQTYxMkZCRTAxNjkxQjZGRjNDMUJGRUIzNUVEMjM4OEU3QTY0NjA0RjRENUUzMTY4RjhGMzk1RUIwRkI3NzM4REJGRDY3OTBFOEQ2QUE4NUQ0NTRDOUE4N0UzMTk4MzRGOUZECis1MEJGNDM1RgorQzhFNzJCNUU0OTM2NDIzMzYxNzBCNDdEMDEKK0NFQTUwRTBEQkIyNDYyODI0REEyRkYzQUU5NEYyMjczRDVGOTREMUJGMjExMzA2REIwNzMzMUY0QjUyODQyN0QzQjFEQTFCM0M0NENDNURDNkZGRERFRjdFRENDN0Q5NjgxQjZEQzQ5NEJGMkRBM0JFQ0FGNTU4N0VCRjA1MQorNzdCRDBFNTgKKzU3Qzc4RkM5RDFCQkI2M0M2NTlGOUY0RTk0CitGQkQ2NkU3Q0JDREFEQjZFODdDNjQ5QzQyMDlDNDIxMzM5RkQwRkJCM0YxNUJCN0U3REZEMjE3MjhFRjcwQzUzQUIxMkMxODQ1MEU3REY5MDM1RkFDN0Q2RTJERTA2NDk5MThENzNERDkxM0YyQTM3NjhBMTkxMzNGMkUzNUU0OTkzMUY2MTE5RDNFNUFEODc0NzBGNTJEQzZFMjk5NkM0M0VFNEY1NUU4NzYxMDIwMzkwMzgKKzYzNEYxQjA4Cis1RDM1MDUyMEVEOTBERURGOTlERjAxOTZFQQorNEJDQjA5RjBCNkM0NzhBMDNGNzhBNkFCMjEyQjU4ODFENEE4MDQ0QTE3QjEyMDg1RDc1MTVEMUI3NDJFNjM1QUQ2MzEzRUY4NDhCRTRCMjQwMUU1QTYyNTRBQjYwNEQ1NDRDREEyODQyQUIyRjlBMzc5OUEKKzk2OTY0MzQ3CitBNkQzN0RBQTJBNEQ1Q0Y3Njg1NjI4QTg3OQorNDlDRDBENEQ0MkNCREExODIzNkFFOTA0REJCNUI5MEY4MTM0QzdBNzY3ODkzMDRCQzJFRjc3NTVDMTIxODZCMzlDMUEzMzEyNzA4RjdDQzhEQ0IwMTU3OUVFNjZGMjA3RDdDQzczNDU3RkE4Cis0QTc3NjU4QQorQjgwMDFDMEIwRUZGNEEyMjVCMDVCNkMwN0JGQgorMjM3OTFBNTk1QUNCREI1OUE0QjU2RERDNThEQTg3NjI1MkU2MkM1OTFEM0JBQTY1Q0M5Qzk5Q0MxREQyNEQ5QjYwMEJDQUNDRjczNTFGREJGQzA4MTM2MDkwQUVDMENDMzMyNzlFRDYxRDM4RUU1MkFDMTM4QUNGNDI4N0VERTZGQjlCMzNBNzBCRjBCMzAyMDhEMUE1NTQxNDcwRjEwQjc4RjRFQjY1NDEyNTIwNjE3MTRBNUE2RDNFNTE4NUI2RjlGNjI0OTE0RDcyMkFGQjUwRUE1QjBDNzExQTI0MEY3QkM5NEYKKzY4NEE3RjU3CitBOTJEMjZCOTE0QTQwRjNCQjZCMzQ1OUREMDVFCitFRUEyNDBGMENGOTA3MkQxOUMyMDg4MjgzM0U3RDdFMzQyNjNBRkFBN0NFRjdBRjMzNTA5Qjg4Q0FFQzhDQTlGRjhFQjJDRDM0RDgwREU5RTNFRDIwN0M1ODdFQzAxNjM5MUZGODFEMDVEMUQ4OTAyM0E2MUM2MTVGQzJEQjZCMDQxODYxNjEzQjVDMTIwQ0ZFRDJCOUJBRjYyNDI3ODk2NDc4RkIzRjNBNURCMTE4QjMxNjZDRDEzOTQ3NzlCRjlFQzQ5NUM2OUE3M0VDNThDRDM0MURERDkwNDRGMUE2NjVDREIzNDhDQjYyMTY2NDZBOTQyOTkzRkFBRkUKKzBDRTUKK0UyCitFQTRCMzhFNQorOTM1QTQ1M0Q0NDlCN0NCNUIxRDQ2NzdBNkQKKzJBRUQ3MzQwOEUyRTdDRTRGRjkxMjJDQzc0NzRFMDgxNjM0MDhFMTQzODNDMjJGRjEzMkUxOUEyN0JBRTMwNjg5REI5NEEwOUNENzU2RDU0QURBNTFFNENFRTQ3NDcxMjMwRjhEMzVCMUNBOUI5MzkwMTc3MzE1OUQwRUJDOTNBM0UzRUZFNzhDREUwM0U2RkQ2QjQ5MEJBRjMzMUZDMDQyNjVFRDY2MTE3NzBGOTI0NkNFNjQ3RTU0QzZCQUFBQTU0CitDQTBBMEI3NworNUYxNkVBMEI0N0U0NzJERTU1NDYwMjU0OEFBMworM0U0NUJDMjc3REM2RDZBRjc2MTI3OTEzQzlBQTFBOTc1M0ZCQjY5QTRDMDg0RTVCMkExMTBDOTRBOTg1RTJDMUM0Qzc1QTI2NTlGMEQzRjdFMkJEQjk1MzgxMjQ3Q0RBODdGNkI4NEIyRjc1NjBBMjdFMjE1NDBGMUFFM0I2MDAwODQ4QjU4QTcyMTE3MjczQTM4RDY1ODNBQkYxODBCOUQyNUM3MUQ4MjlCNjBCQzk5NDU5Q0I4OUY3RjhFRTVENDZEQUNFQ0Q1MDEyNUZGQThGNjMyNEJBRjJGNTJFMkExNTZFQzEyN0M1ODczNTc1Q0Q0QUI0OURERTBBCisyODExREIxMgorNEZEMDgyNjI5MTFEMEIwMUREMDM0OTQ0NEVFRQorMzRBOTIzNTY5QTc1MjMzRDYzQjcyNUQyQzNGMTYwRTI2MzFBMkU5NDVFNTlBQzdDNjU4NDBFODkwMkJDQkQ1OUJGNUEyMEFDMzI0ODgxODAxMkYyRUYxRTMzQ0M4OUU0Q0I5MDQ2N0M2REI5MTFFNUI4OEZGNTE5MkFCNzFCNjBBNTMyQTM5MUM5NjBDNTMxREQ1QTc2RDlBQkUxREZDNzE5NTFGRTlCM0ZBRkVEMzE2MThBREQ4MjEyQTkwQjcxQjc3NzU2QTEwMzQ5NkYwNjY5MEZGNUI4MEFCNDFBQUFEMkVFMzRFOTk1MjE5NEEzRDU5RgorMzExNEFEN0MKKzhENjcxMkU2NDc0MzM3QkVGRDU2QzUyNEUxCis1QzdFNUREMEJBQUYzNDI3NkM5NTYxNDg1Mzc3QjdBMUVFREUwMjIyRjJBN0NBNkNFMDExM0I2RDIxMTg4ODBBRTYwMEE0NDQyQUU2MjY3NDcyQjIyMTlBQzBGNjU5NzUzMzdCMENGNTRBREU5MzhFOEI0MDcxCitGMENBQTgwRQorOUJEMDQ4RTc3OEQ2MDJCMjNEQjAxMDlFNUIyOQorMUIyMEI4NTczNkVERUZCQUE2REM1OTYwMkM1Nzk4Q0VEMkEwODE5MUE3MTZCNDczMzBCRDdGMzQzMUU0RUNDODNENkE3NEM0NTVBNTBFRDk5OTdDRkM1MUNCQ0Q4OTJDNEMyNzExQkU2MkJBQUFFNTcwQTRBQjE2Q0IwQTgyNzNGNTVGQUM1NUJCNDAzRjM1MjNGQkUzRjFGNTZBNjBEQjkxMjlDNDIyQzA4MTg2RUNDNURDMDdCODhDRTU2RkZDMDNCQTc2MTg4MUVEMEU5QjkxMDlGRjY2RTc0MDUyCisxOUIzNjVDRQorNUJGQjdBOUFCOEQ3NUUxREYxN0U5RkRGNkYKK0YzQTA4NDJDMDdGNDVBNUZBMUJEMzFFRUI0REQ1NzE1QTQyQzgzOTFENEQ1REVCNzhCMkIwN0Q5RkFDNTRENzVGM0E1NDNCMTg5RjI1MzBDNkI3NUI5NkYyOTNDOTlEQ0NDREZDMkYzODFGOTBBOERFMDc4OEY0QzU0MDY1QjREMUJBNTUwNzYxNEIzOEM3QUEwQTVBMUZBQTNGQjE4RUU3MEIwRDYyOUVGQTZCMTQ0ODBGRjU1QzQKKzg5NDRCNDAwCisxOUJEQjBCNkE2NDM3RTM3RUJCODkzMEE4ODMzCis1MTAxRjEyNzY4NzBBNThGOEJFNzQyQkMzRDI1NEEyREIyQkE5REY3NzY2RUFGQzIzQzg3Q0Y2MzAxMzY0OTFDRkM0MEI0NzJDNzU2OTA4RDU2ODlGNkU0OTI3ODI1MEY1QkYyNjc2MTdDQzFBN0QxNjMwOUY3MDYxREM3RDREMkZCQzk3Q0MwM0M0NDg0RTkwM0JFRTVGQjVERkI0MUJCRUYyMjgyMjVEOTNEOEFGNzk5Nzg5ODAzQTVDRUE1MDBGRUI4MDNCMzcyMjg0QkNFNUNBNgorNUJDNTkzRTYKK0U2OUZFNzQwRjI5Rjg2RjE3QzQxNUMyNkE2MDEKKzc4QjhFOEY4Qjg1N0JDMTRCQkUxMTVGNUZBODlCQURFQTM1RkVFQTBCQzNCREI0NTJCMEI0OUM3M0UwRkRCOEJCMzY3Q0YzMEQ4NkY5RkUyNkQ5M0Q5RERCODQxOTc2MUY4QzA3NUUxRUZENDc1NzMzMDdFMEEyNDAxRjVFNzU4RUMwQUIzMDY4MEZCNDVBM0VDMDM4RDAwMEMyMkJBNEQxQTY1RUE3NDYxMEVGRkZDNUJGQzVFRDQ2REE1M0U3NDhFMjA2QTc2NDcyOUI3QUEzOUM2QUY0NzI0ODkzRDIxRjRBNDBGQzhBNkFDQkVFNTlEOUI5OTQ4MTdBMAorM0I2Q0ZGQUUKKzNFOTdGN0RFQUM0ODJCMzM5NDJENzY0QTY2QzcKK0Q2QUVFODk3QkFDQzQ1RTNFNjM1QzBDODRDNUUyRDc5NTUxQTg1NjcyMUYxQ0Q2NEVENUM2MkZDNDNDMkEzNTI2RjFDNUJGMDM5QTlCMzVGRDE4N0E3RTUwODExMDA0RUQ3QUMwOTNFMzJGMENCMUI0NkE0M0U3MTI2OEVDNzRFQTQxNEEwMTY0RkJGMDZDNTgxMzBCQjA3MTRGNjI5M0E2NEZFMzVEODM4NkJDMDI3NjY0MjY1OTE4QkM3REJFRjJBNUU2MTczQjQwREQ2QTk4OTFBRTdDQ0EwQUZCNUM2REYyNTc1NDAxQjk1MTc0Q0M5NENGODRBNEEyOQorOUM3MworQ0I0M0U0CitCODFFQTU5NQorNTFBM0Y4NTc5MEE5RDg3RjA5M0YxMTJDNTQKK0IxNUY2QjhGMDA5OTA0QTNFMkVFMkJDNDhENEY5RjAyM0U1NjdDMUNDODc0Q0FCNjI2NjJERUQ5NDRBRUE3NEE1QzVENzlEOUU5NzZGRkUxNzFCMkU3QTEzQTVDRkY2Q0ZEM0VDRjUyQzM3RUIyQUNCNTg4MTdEQTlBMUM0RkE4M0MxMDJGNTg4OTJDNkEyQTBEQkU2QzJDMDcwMzE3M0ZGQQorNDFFMEM4OTQKK0IxNEVCQUVFM0M1QUE3NEIwMEYxN0E0Qzg0CitFRDBCRjYxQTE5MDdERkZGMEEyQkUzMDBDMUIyNTkzRDhFNUJBQjYzRjc1MgorODA0Rjk2QkMKKzI4OTE5QTI2N0NEQ0JFOTU1OTU4RkM2RUFFCis3QkNCQTJENkNGM0M5MjNDQzc0RTlFN0MzRTFCQjg1NzVDM0JDRjI5QTY5QTcxRDc2OThGQTFFQjBCNjdDOUY2OEIyOTU1MzQ4RjA2NDgyRjc5N0IxNDJDRjJCMUM3RTFDOTcwRjM5NEFGN0ExMDM5NUIwNgorMzM4NkNGQkIKKzJFRDM0ODE2NkYyODRFQTU4MzA4OUIwQkQxNEUKK0QxN0VENkNCMENDNkM5QzFGMkNEOTZBQUMzQzVFNTdCQjYxNjU5RjhBQTMyQjFFMTlFMzZCMkMyM0JGOUZCOURFRjQxQzUwMjFGNzJFRDgyNUMzMzNBMjMzRUFDMjA3MzQ0MjRDRUFBQkU5OUMyRjBEQ0U1MjE0NzVBNzk4QTM2MURBRjZFQ0Q1QjA4MTNEOUEzOUI5MTY3RDlDMDI3NzFFNDQyOTUyRDA4OTE0RTRGMUZGMzkwQUNBOEI0RDU1MjlFNDIyMUUwRjU2MUVDMTExRDkzRjY2MjQ3NjI4OEU1MUFGNjFCMTUwNEVBNTg2NjdFNzUzQ0JDNTg2RAorMEU2NgorOERDMkRGCis4NjBFRDhDQgorNjUyQUUyMkQ4MTFGNzIzMDRBRjM5OUUwOUQKKzRFRDU2QTczMkU4NkI4QjlFNEVBNjg5OUIxNkMzQUVENEY2MEMxMTAyMzQ3NUVBQTFGMzk4NTkwMThBQzAxOTJCMTdFOUY2NjkwMjgzNDIyNTg1RjkyNjY3QUM4NkQ4NTc4QTg3NjE2ODFCNkFFNkZGNDlDNDM2ODBFOTU4RkIwNDY1Njg5RDlFRDUzMkFCREM5NkQzRkZCMUU2ODEyQTZCOUQxM0M4RTcxQjM2MUZBCisyRTU5OTcyMworMDI5NEE3NjFCQUE4MUVBOTk2MjdGOEI1OTQKK0YyOUNDRkRBNDYwRkMyOUQzNkIwMEZEMjQxNUVEMjEwRjBFOTkzNjJCMEYxM0EwM0U2OTVBREFEQ0EzMjM1RjE2NTIwNTQ2N0VGNjgwNTEyOTY5N0M0RThBRUE0RTZFRTJBNUE3ODg2QjRENjIzQUEzQkFDN0M4RjIxNkU5NENBOTE3RTU1QjA0NkU1MjlDQjE3RDNCQUUwNDFCNzk4MDI1RDQ4Cis0MjI2MTAwMworNTk2MzM1QjIzNjhGM0U5Rjg5MkI1OUZDNkQ1MgorRUM4NDVCRTQzRjhFN0ZCNzJDMDM1OUIzMzI4MDZCNTY4RDM5N0IxN0FDRUUzMUFDMzZGNTA4QzYwNUJCMEYxODg4NkM1MTZEMUZEOEYwNDBGMTJDOUY5NDBCOTEyOTIxOTNGNDA4MTJBOUQ1NTk1MjZDRkM1QjhFMTM0OUQ0NjdBNEUxMTRFMDg3QzgzOERBQjU2NDQyQzVFMzJFNDUzNkY0MkY3RkEwQkZBNEYwRDYwQTEyNEMwNDBFMTBGRkQzRTJFMTIzNDFDMzE0NTExNEY3QkI2QUE2RDg3OQorMEFFNUU1ODcKK0Y3OThCRTBENzM0MjQ5QkEzOUUyMTZEQzA5Cis2OTREMjQwNjlGODM0OUIxQkI5Q0JDRjlBRDI4QTNBMEQ1MkNGQ0U5NUZENTI2QjdCNTI2NzlEOEE4MEJCQTdBQ0VDQkNCRjJBQzQ0NDNBODA3OEQ3REI5NjFBOEM3MDZGNzhBRUFDNzE4MDNDRjMzNEM3NjI4Mjg1N0YyNzBCNEREQjc3MTVCRTczNDg0QjRGNUVGRUREOEE4REI2OTZCMURBNkM1OUM3NTA3NjI5MzU4Cis0Rjk3NENEMQorQjk3QjEyRDBEQzJBQTU0NjdBMjU1MjRCMDgKK0M3MDU5OUQ1MUJEOUY4RUQzMjQ3MUMzMDREM0JCOTJEMDVFMDlBN0VCQzc0RjMwREJBNjQyMjlGQjIyQjI0MDQwNDlBMTQ5RkU4M0EwQjcyOTEyQzc0QTIzN0M5QTI2NTlERkYxMTVEMDUxN0VDRUVGRUQ2NEI5NDNFNkY4MUVEMzlDMUY0NDkxNTQyRTY1M0E0NUM1RDhBRTA3RjkwM0IyNDgzRTBDMkYyMTAxNkQ2NTc1M0ZFQzYKKzlGOTEyNzcxCisyNTlDM0Q3MDNFRkY4MURDNzI0MzNFQzdFNDQ3Cis0RTE5MjU5MDM0MjNBRTY3NzU0MTdBQkYxRTQzQkQ3Mzk3MjNDNzBGRDYzMzg1MjEyM0M3N0M2OEMzNTI3RjgzQTJBNTY3RTRBRjYwQ0RBRURBREQ2RkQxNTVCNDlDN0E4MEFFNjcwNjU5OTYxREU3QzJFQkVBOTZENUQ0RjE5NTMyQkRCRTc5RDRCQTlFN0Y4OERENDREOEREQkEyNDExMjBGRTNEOEY0MzJDRTE5MzE5QkE4NjI3NUNFQTNBMjc0NTE1RjNEMzAzQzg5MTU0MjkyRkU4N0NBNkU3RUI3RURFRkU1MkE1N0FDNEZDOTE2MUJEMDUyNTE3QzYKKzQ3QzMKKzc0MDc5RjM5REMxQ0RGRjZGQ0UwNkEyRTQyOTA2OTVEQTY0REQ2MjM3QTUwM0Q2NkRCQTk2MTRFMTQwRUUwNkJFQkE0NTAxOTc0RjI3OUUwNzIyOEVGN0YzRjQwRTUKK0U0MjE2MDY0CisyRTY2MjI4MkY3MEM5MTZGNkI0REJFMjEwNUI4Cis2MUZBQzZDMzc4MEJFRTVDQjc1NTcyNUJFQjcxNjFEQURCRUM1M0Y3OUJCQjc2RjRFNDhGNDBFNTZDN0RGNTZFMkVDRUU4NDQwNTZGNjJENzU4QUExRDU3NDRDQ0FEQUQ1MjY1RUMyRTg3N0E1QzRFOTg2MUUyRjlBNUMyQzJEODlCMDE4MUY1MUVEQTQ3OEE1RDFERTYzMzE1QkFEODdGQUNBNDM1MjRCQkY3RTJENzYzQUU3QzA2MTNFOUY3OTdFQ0VFQTJCNkI3MkI0OTJCQzNDRDIwRTFBRAorNjM0Q0NBOTEKK0QzODE2QzlFQzI0RkE3MUQ4RDcxODI4NzNGCitENzg2NkY1RjJCNzFDNjlEQTY0Q0FGNjFFMDc3RTFGREY0NzdBMTVCQ0ZGNzQzQkREQjkyQkIzRURDRjUwQzlGMzg2MEM2M0RCRDUyNjU0RTQ1NTE1OEQ2QkFDRkNCODBBMzcwNkRFNDgyQjA5OERDRDk3M0ZBQjlENENDMjhDNzA5RjdBMDJDNTBGNDczMzZGQTM3OEIwOEIzOEU2MUY5Cis3RERFOEVDQgorNzExMDNGNzAzRDU0Rjg3Njc2M0JEODlCNDlDNAorMEJCMjY3MjYzRjhCNDJBRDc2QjIxNzU1OTZDMjBFREI1Nzk5NkVCNUMzNDYzMTk3RTUzODJENjkxOUMyMEEzM0M0OUE3RjFGN0JENUU1NkQ0NTJEQTZBMTQwNzI5ODgyRTUyQzI0QkRDQjVDOEFEN0JFM0Y2MEIxNjgxMDc5MUEyQjM1NEYxN0EzQzBDNzY0MDE3MDMwMDBBMjUyM0E4MjE4RTcwNTdCNDE2MzkzOTk0RTBEODVENTIzOTExMTgyNTAyMzQ5QjFDQjBEQUVGQUJBODUwNjBCRjUyNjhGODYwMkFEQjUwNkVEOTMwQTNENzE1RjFCNUFBN0FDCitBRUUxCiszNTE2NDE2NEIxNUFBQzVEMEQ0MTZDRjNBNjM1QTcyQ0U4NkQ0OUMzNjJGMjQyQTE3MkNGRTcyNjc5NUQ1QzA1NUMyMDAwCisxNzk2QTQwMAorMDZDODFGQzdFRUVCMDZBM0EwMkM3NDExOTgKK0FGNkEzNTZERENBNDk0MDUwN0M3MjlEMEU4M0JCOURERTEzOTNEMjdEQkJBRkVFMTY2MjYwRENCMTQ1MEI3RTMwRTA1REE2MTAzRjFDNTQ1RDhDOTJGMTI5N0E0ODkyRTY2RjlDOUZDQTc0OQorODIwNDNFOUYKK0ZFODc1QjU2NTg5QjMxOTY1NzFBNzFCRDg4RDYKK0M1Q0Q1NTEwRkMzQzhBNjg2QzVGQ0FGQjk5RDNGQzg1NTAzRUJBRDY5NDBENDQ1ODA1MDc1NEFCODY1NjBCNTg4NERCMkI5REYxRUU3MzA0MzJBMjYzQzlDMTM1M0UwNDY3ODU2REEyRjE2RTEwMDkzNDREMTk2N0NDQTc3MTc1ODVFRTRBRjNENzE4OUVDQUQyRTNENEEwMzk0OTY4MjVDQzg4NTUwOEY3MzU4Mzg4NzQ3Q0Y5QUYzMDk3M0Y5QzBBRTdDNjEyNUU2QjE4Qjg4RDNBNEYyMDIxMkRFM0NGMURFQ0VGM0VERDhDQ0U3QzYzQzZCMDk5ODY3OQorN0MxNgorOEM2NjFBQjQ2RjAzODlFQTg5RkJGMTE4RTExQUVDQ0IyMEVGRDgzMkU3Njc1ODFFMTVGOTcyRUVBQzhBODIKK0YzRkI3REM5CiswODMxNTFDMzAzODVBMzE3QjNCMzkzRkFBNEQ5Cis5MEI2MUNCQTNBRDdBQ0YzRTkzNUI5NkNGNUE0M0E5OTUzNDE0RjQ4NTcxM0E1NTg0RTNCQThEQjI3NUNDODg0RjhCMzkxM0JBQzVBNzYzQzVDQzcxMEVFNDE4NzFDMzdDMzUzNjA0NTU5ODFCOEMxNjA3MjE1MkE2MTBCNDNCQzZERkM5NTgyM0Q2MDRDRTM2QzkzQUY1RjFBRkZFMzA3NTY3OTM5NkM2NkFDQkRCRUUwMUI3Qzc1RDgxQUIyQ0JFNTUzRkFDMjBERkY2RTBCMkZENUUyQzEKKzMzQUU5QzRBCisyMTI5RDJDMUU1QzZDOURGQ0NDNzMyNjRFOQorNDYyMjY2MjczNkRDRTI4NkIyMDFGOUIwODI1ODlBMjUzQkNCOEJFRDhEOUI3QUQzN0U1ODk4NTQyMDUyNTRGODRGMEVEQUMyQ0QzNEFCMzRFRTc1NTE1MzVDOUM0OEFCRUFFOEFERjdDRUEwNjg0MEY0MEExMkRCOUY1N0ZENzBDOEVDNzhGODg0QzcKKzUzQzU2REI0CisyMTA2RkE4RUEyOEQ5ODcwN0IzOTIzMzA5M0FBCitGQTU0RkZBNTk0MzY2QUQxNDIxMTZERTM4MkFDNjI4MDRCMDRCMkJFMTkxREQ5NjA2MTZCREJERTI1MTk4ODZGRUQyNkUzRkFERTg5RkEwQTVCNzFBQkM0NzdCNUNDQ0Y3Nzg2REVGQTY1MDE2QzRGRTIwRTM2M0Y1NDA0QTM3ODQzOEIxMkE0QkY1NEMyNzcxQUU2MThENzcyOUIwN0U3M0ZEOEM4MjBCN0MyNTJGN0ZBRkJEM0U5NTA1QTlBQThFOEFCM0FDRTdFMjc1QTUxRkY0NjE2OTlGNDM5RjU1NTE2MTIyNTI4RjZGNkQwCitERDJFQjQ4QQorQUFFN0M5MUI4OEY3NDVCNUI3OEQ1QjlCQUMKKzBCMjg2NUQ1RTAwRDVCOTBCNjhEOTJDOTI0QjcyNTUyMEZDMzg2OENEMjU5NkIyNUI4NjNFQzFDN0Q0NDY2RkZFMUY1QTBFNDJCN0JDNjdEOURCRTA0NTgxMzU1NzM1RUJCRUQ2MjBFMkRDMkY4QjhENUYyNTYxRDVCMjlGNkZGQjY2Qjg5RDlCRDA4NTJBRTVFQkM5NDI1MTM4Njc3NkIyRDYxNTMwNDQ1MzY5OQorMjQ0QjdFRkUKK0Q0RkE2MEUxNkY2QTA3QjI4OURBOTA3QjJBMTkKKzE1MDEzNUI3MzhBNjMwN0M1RDdBQTAxQjQzMDU2MzA5RTI1NEZDNkMwOEZCOEU0NTgxQzhDRDY0OTdFMDAyQUM0RDdCNTRDODEwNTgwODExNzQ4QTQwM0U1M0JENEEwMzUxMTczQTMwQTM3QTQ1MDE3NzhCQkQ0NUU0Nzc0QjhFNzRCQjlCMEJFNTdFNjI3QUQzRTdEQzMwM0QwMTM3N0FEQUYzQzQ4MUFCRjc3QjlFOUIwNEU5RkI2OTM4Mjg4M0I5OEM0QzY5ODFCNjlCQTQxNDg0OUQzRjdGMkZCRDM0OUExMjUwQzI4MkVGNEQxNDMwQkU3Qjk1Cis5QTgwMTg1OAorRkQ5QjI1MEQyOUZBNjU3MzgzMkY3OTZFOTcKK0U0OTJENzdCMDE3QjVEQTZCRjVFRjY1QkIwN0UzQTI4OEU5QTBBNjc4RUQyQjRBNkE2QzdFNkQ2MjI3Qzk1RDdCRDgzRUUzOEMyMTU4OTA1NkU0RjM2RDE1NkM1OTZGQzgxRTZFMUEwRTIyMkY5RjlGRDQwODFDMEI5ODU0QURDOEVEMDM1QjMyNgorQzhBMTJDQTQKK0Y1Q0Q5MzYxQTVDRjc4RDEwOTY1NEE1MTA0CitEQTM2NTk1NjIzRTQyNEM3MTk5NTY4QkU4NDJDRjY2RjMzN0FBMUIwOTRGOEZGNzYyN0YzNDk0MTFFMjk2MUJCMTQ4NkMzQTVCNzE0N0U1NTBCRjkxQTdBRkI1MkZFOEQ2N0IzNjRCRDEyMUQzQ0VFOUE0MzUwRTQ0OEI5RjlCRUU0NTM0MEEyNjAyMUY2MDlDQkFEQ0Q2NzQwNzRDMDZGRDk4MDVDM0RDODNDNkU5MzA1QTdGMUJCMzU1MTI5Q0MwRkQ0Cis2ODdBRkZGNQorRTQ3MDA1OTc3QUE2OTY2QzM4MEUzQzI4M0UKK0Y5QkREQTk0MzYwNzA2RTg0QTdDMTBGRDhFQkZBRTFGQzQwMzg5NjBGNzMwQkI1RTg1RDY4OTBFNjg4REIzRkEwMjExRUJGQjdBQjI0QzkyQTkwQjZBNDdEODBCMUNCOEQ0QUVFOUQyQUVGNjA5QkFEQ0E2N0FCQ0JGREE3QURFMjBFOUQ0RjE2MzQ1QTUzMzBBQTQzNEExRDZFQkRCMTE4MDE5NDQ2Q0RDQ0RBOEE2N0QKKzQ5RjgwRkY1Cis2MkUzNEZBMTdFNjk2MjREQUU4QUIxMTNBM0UzCis0N0I1Nzk3OEEyQzAxMzFCOEMwRTZGNDA1ODMzQkJENjcyRDQzNjE5NzNCRjY3QTA0RDVCN0NDRDAzMkIwQUVGQzYwNUU3OEZFOTMxMTcwODQzQTg2N0JCRTA0MUY3QUExRDdGMDYwNzk3OUYzOTdDNTAzMjdFM0UwQTM5NUM1OThGNDRDQUFBMDQ1MkM3NkIzMzg1RjIwODk1NkNFQkRFQThEQURDRjU3QjYxNTU3QzZDMDAyQTBCMkJGQjMxMTAzN0E3MzUyQUVDNTQ5M0M0OTU1MzUxQUEyRDcyMkU2NzlFMUQxRDIzQTUxMjUzQTlCQTNBRkI1NEZCOUQKKzc0QjMKK0RFMzBDNDFGMzUwNEFBODIwQzc2RTE2RERFRkUKKzA0RDgxNTM2CitCODY0NzA0QUQxMjYyNEI2RjZCNTFCMTc5QjY5CisxREZDQkQ4MTg2RkRDRkFEMzYxMEIyRUZDQkY2QjAxQTMwNjMzRTU3MEJBMjZCNjM5NUUyQTQ5NUYzRTdBM0RFRjQwMkYzODdFNkE0QzFEQkYwMUUxMDdBMjYyQTI2MjExOThGOTcwNEEyNzkyQ0EyMDUyMjJFMUI5NTY3NTBEQUI0RjE5M0Y2OEVCMzQ2QjY1N0VDMURDQ0UyNjFFMTUyQjlFMTk5RDMwRkVGQ0Y2RDREM0U0MzY1OUE1N0RCMTk4RTcwNDkzQzE2OTY3NDQ3M0I2QTM2NTY2MjcwODQ3QzAyMkMyOTY4QTQwNEE1Qjk3NkFGN0I0NzI3QzUKK0FCMzcKK0UwNDY2REE5NjdCQUYyMkEwOEUzREJGNjMzNEY1MTFFMDIxNkI3MjVFOTkwQzhDNDk1Cis2OTFCMzkyQQorMjUyODgwNUIzQ0EzMjg4ODNDNjNDQkRDOENBQgorQjkxMjBDQjY4MEExOTlFNDQ3QzMyMEFERDQ3NDdFM0RGMTBBQjhCMzQ2NkE2MUU4RTFBQUNDMEQ4OTdGQzE1RjcwREJBOTUwRkFGMTlEMTA0QUREN0I3NkU1QkU0RkREMjQwNDgzRDUxMUE2OTdGMjkxNUIwNkRGRjM5Nzk5QjBENjhGNTZDNzA1RDcyOTNGRERCNDcyMzVCM0Y3RkYwNEVBQ0M3RDZENjY5MjE0REVFQkY5MEM2OTkyNjg4NjUzMTIwRTk0QjNBRDk1QkM1RUU0QzczOUYxMTk3OEFCNjdCNjFEMjYyMkU3MDcwMzVCRUQwMTc0OEVFMzFDCis4MzdCCis1Nzk5MkY0QworRDU0MkY5QjdCNDgyMkU1NUMwMzNGNEQ3NTMKK0Y2Q0MwRjAzOEIxNTk4NzkwODNBNzE3Q0RBMUQ4NkQwMjk5ODUzQzBFMTAzMDk5QjA3N0VCNDA1OThCN0E2RjMyODU4OTRDRUM0Q0IwMkE5RDI3QjhFM0I1Q0Q4REE1NDkzMDlCMTg5QTg1NDRFRTFERDgxOEM4MDkxMUI0NgorMTQzNjc0Q0IKKzUzQjYyQTY2OUIyMzM5MDA0NkJEODJGMzNDQTYKKzFCQzU4N0E1OTNGOEJGMDcKK0M5REUwQTczCitEMDc2NkFCNkI4RTUxREVCNzE1RERFRjE2MjkwQjg3MzE5OTU5MUUzN0UwNTUyRTExNDIwOTMzQTQzMEMzODIxNzMyMQorNUVGOTI5OTQ5QzBCMEVFODk4ODFCNDY2NkY5RkQyN0I0NkYwREFGMjhDM0M3ODZBMzU4RTE0MTM4NUZFMUM1Mzg4Rjg1OTA3RTcyQgorNDA0OThBOEMzRDk1RjUwRTQ5OUI3Qzk1OUI2RDMwREY2ODVEMjgyQUFENTc3RUMzMkQ4M0EyCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxNTIwMmQyYTIwMmIyMTBkMDEwZTAxMGYyMDI4MWUyMzI3MWMyYjI1MDEyMTI5MmIwMTE0MjAxYzJjMmUyYjI0MjgyMjAxMTUyMDJkMzAyOTJiMjUwMTE2PiAyMjA3IDU1OCAwIDczODQgLTEgcworPDIwMmIyMTI5MmIyNzFjMjgxZTIwPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwYz4gOTQzNCAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE1MjAyZDJhMjAyYjIxPiAxMjcxIDE0MzEgMCAxOTgwIC0xIHMKKzwwMDIzMWMyYzAwMmQzMDI5MDAyZDMyMmEyMDJjMDAyOTIxMDAxZTI5MjcyNzFjMjgxZjAwMjYyNDI4MjAwMDI5MmEyZDI0MjkyODJjMDc+IDE5ODAgMTQzMSA3IDU2MTcgMCBzCis8MDAxOTIzMjAwMDIxMjQyYjJjMmQwMDFjMmIyMDAwMjIyNjI5MWQxYzI2MDAxZTI5MjcyNzFjMjgxZjAwMjYyNDI4MjAwMDI5MmEyZDI0MjkyODJjMDc+IDU2MTcgMTQzMSA3IDk1MzEgMCBzCis8MTkyMzIwMzI+IDEyNzEgMTY3NiAwIDE3MjYgLTEgcworPDAwMWMyYjIwMDAyMDJjMmMyMDI4MmQyNDFjMjYyNjMyMDAxYzI4MzIwMDI5MmEyZDI0MjkyODAwMmQyMzFjMmQwMDI0MmMwMDI4MjkyZDAwMmQyNDIwMWYwMDJkMjk+IDE3MjYgMTY3NiA5IDU0NzUgMCBzCis8MDAxYzAwMmExYzJiMmQyNDFlMmUyNjFjMmIwMDJkMjAyYzJkMDUwMDI5MmIwMDIyMmIyOTJlMmEwMDI5MjEwMDJkMjAyYzJkMmMwNzAwMGUyODAwMjAzMTFjMjcyYTI2MjA+IDU0NzUgMTY3NiA5IDk1MzEgMCBzCis8MjkyMT4gMTI3MSAxOTIxIDAgMTQ1NyAtMSBzCis8MDAxYzAwMjIyNjI5MWQxYzI2MDAxZTI5MjcyNzFjMjgxZjAwMjYyNDI4MjAwMDI5MmEyZDI0MjkyOD4gMTQ1NyAxOTIxIDUgNDE2NyAwIHMKKzwwMDI0MmMwMDJkMjMyMDAwMmQyMDJjMmQwMDJkMzIyYTIwMDcwMDE5MjMyMDAwMmMyMDFlMjkyODFmMDAyOTJhMmQyNDI5MjgyYzAwMWMyYjIwMDAyZDIwMmMyZDAwMmMyYTIwMWUyNDIxMjQxZTAwMjkyYTJkMjQyOTI4MmMwNz4gNDE2NyAxOTIxIDExIDk1MzEgMCBzCis8MTkyMzIwMmMyMD4gMTI3MSAyMTY2IDAgMTgxNyAtMSBzCis8MDAxYzJiMjAwMDI5MmEyZDI0MjkyODJjMDAzMDIzMjQxZTIzMDAxYzJiMjAwMDI5MjgyNjMyMDAxYzJhMmEyNjI0MWUxYzFkMjYyMDAwMmQyOTAwMWMwMDJhMWMyYjJkMjQxZTJlMjYxYzJiPiAxODE3IDIxNjYgOSA2NTA0IDAgcworPDAwMmQyMDJjMmQwNzAwMGUyODAwMjAzMTFjMjcyYTI2MjAwMDI5MjEwMDFjMDAyZDIwMmMyZDAwMmMyYTIwMWUyNDIxMjQxZT4gNjUwNCAyMTY2IDcgOTUzMSAwIHMKKzwyOTJhMmQyNDI5Mjg+IDEyNzEgMjQxMSAwIDE4NjIgLTEgcworPDAwMzAyOTJlMjYxZjAwMWQyMDAwMmQyMzIwMDAyYzIwMjgxZjAwMmMyOTFlMjUyMDJkMDAxZDJlMjEyMTIwMmIwMDJjMjQzMzIwMDAyMTI5MmIwMDFjMDAxOTEwMTYxYTE4MTkxNzExMGUxNDAwMmQyMDJjMmQwNzAwMTIyNjI5MWQxYzI2MDAxZTI5MjcyNzFjMjgxZjAwMjYyNDI4MjA+IDE4NjIgMjQxMSAxNCA5NTMxIDAgcworPDI5MmEyZDI0MjkyODJjPiAxMjcxIDI2NTYgMCAxOTQzIC0xIHMKKzwwMDFjMmIyMDAwMmMyYTIwMWUyNDIxMjQyMDFmMDAyMTI0MmIyYzJkMDUwMDJkMjAyYzJkMDAyYzJhMjAxZTI0MjEyNDFlMDAyYzIwMWUyOTI4MWYwNzAwMTkyMzIwMzIwMDI3MmUyYzJkMDAxZDIwMDAyYzIwMmExYzJiMWMyZDIwMWYwMDIxMmIyOTI3MDAyMDFjMWUyMzAwMjkyZDIzMjAyYjAwMWQzMj4gMTk0MyAyNjU2IDE0IDkzNzcgMCBzCis8MDAxYz4gOTM3NyAyNjU2IDEgOTUzMSAwIHMKKzwxYjFiMDYwNjAyPiAxMjcxIDI5MDEgMCAxODMwIC0xIHMKKzwwMDAzMmQzMDI5MDAxZjFjMmMyMzIwMmMwNDA3MDAxMzIxMDAzMjI5MmUwMDMwMjQyYzIzMDAyZDI5MDAyMjI0MmYyMDAwMmQyMDJjMmQwMDJjMmEyMDFlMjQyMTI0MWUwMDI5MmEyZDI0MjkyODJjMDAyOTI4MjYzMjA1MDAyZDIzMjAzMjAwMjcyZTJjMmQwMDFkMjAwMDJhMmIyMDFlMjAxZjIwMWYwMDFkMzI+IDE4MzAgMjkwMSAxNiA5NTMxIDAgcworPDFiMWIwNjA2MDIwNz4gMTI3MSAzMTQ2IDAgMTg4MyAtMSBzCis8MDAwMzExMTIwMDA3MDgyODIwMmQyYTIwMmIyMTAwMDYwNjAwMDYyNzAwMGEwOTBiMGMwND4gMTg4MyAzMTQ2IDUgNDUzMiAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICg1KSA1CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzQgcHV0CitkdXAgMyAvQzAwNDAgcHV0CitkdXAgNCAvQzAwNDEgcHV0CitkdXAgNSAvQzAwNDQgcHV0CitkdXAgNiAvQzAwNDUgcHV0CitkdXAgNyAvQzAwNDYgcHV0CitkdXAgOCAvQzAwNDcgcHV0CitkdXAgOSAvQzAwNTMgcHV0CitkdXAgMTAgL0MwMDU4IHB1dAorZHVwIDExIC9DMDA2MCBwdXQKK2R1cCAxMiAvQzAwNjEgcHV0CitkdXAgMTMgL0MwMDYyIHB1dAorZHVwIDE0IC9DMDA2NCBwdXQKK2R1cCAxNSAvQzAwNjUgcHV0CitkdXAgMTYgL0MwMDY2IHB1dAorZHVwIDE3IC9DMDA2NyBwdXQKK2R1cCAxOCAvQzAwNzAgcHV0CitkdXAgMTkgL0MwMDcyIHB1dAorZHVwIDIwIC9DMDA3MyBwdXQKK2R1cCAyMSAvQzAwNzcgcHV0CitkdXAgMjIgL0MwMDc4IHB1dAorZHVwIDIzIC9DMDA3OSBwdXQKK2R1cCAyNCAvQzAwODAgcHV0CitkdXAgMjUgL0MwMDgyIHB1dAorZHVwIDI2IC9DMDA4NCBwdXQKK2R1cCAyNyAvQzAwODcgcHV0CitkdXAgMjggL0MwMDg5IHB1dAorZHVwIDI5IC9DMDA5NyBwdXQKK2R1cCAzMCAvQzAwOTggcHV0CitkdXAgMzEgL0MwMDk5IHB1dAorZHVwIDMyIC9DMDEwMCBwdXQKK2R1cCAzMyAvQzAxMDEgcHV0CitkdXAgMzQgL0MwMTAyIHB1dAorZHVwIDM1IC9DMDEwMyBwdXQKK2R1cCAzNiAvQzAxMDQgcHV0CitkdXAgMzcgL0MwMTA1IHB1dAorZHVwIDM4IC9DMDEwNyBwdXQKK2R1cCAzOSAvQzAxMDggcHV0CitkdXAgNDAgL0MwMTA5IHB1dAorZHVwIDQxIC9DMDExMCBwdXQKK2R1cCA0MiAvQzAxMTEgcHV0CitkdXAgNDMgL0MwMTEyIHB1dAorZHVwIDQ0IC9DMDExMyBwdXQKK2R1cCA0NSAvQzAxMTQgcHV0CitkdXAgNDYgL0MwMTE1IHB1dAorZHVwIDQ3IC9DMDExNiBwdXQKK2R1cCA0OCAvQzAxMTcgcHV0CitkdXAgNDkgL0MwMTE4IHB1dAorZHVwIDUwIC9DMDExOSBwdXQKK2R1cCA1MSAvQzAxMjAgcHV0CitkdXAgNTIgL0MwMTIxIHB1dAorZHVwIDUzIC9DMDEyMiBwdXQKK2R1cCA1NCAvQzAxMjcgcHV0CitkdXAgNTUgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjU2IDk3OCA3MzldIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMTkxMkIwMERFNUNGQkZBODQ5QkU3RDY3NjkyRDJCNDY2ODkKKzg3NTcxRkY5QUFDOTM5QUQ3Rjg1MDZGNQorRTIxMjY2OEZDMUNEOTNDQTRGCis5MEYwMDBENworRUM3OTRGOEUxRUE4OTMzM0QzQkI0MjYyNzA4MgorQ0EzQTRBM0RCQUZDMjU1NjBGMTFGRTFENjgyNTU2MjYxNUQ4OEVGMjA1NDZBRjIwQkJCNzUwMkE5NTU4RTI0MzA3MThERTc2QTU5QkI2MTVDMUFBRERFNzE4NkFBNjVFMzMzMUMwMDM2NkIxQzdCNURDRUUxRTYwMERGN0FCRTE0M0IzQkI2QkU1QUQ4NDM2MDA4NjBEOEM5M0RCNzIwOTQ1QTcwNzVGOUU3NDc4MjcyNkRDNjVBQjJBRkEwRTgxQjY1OUNGMkNBQkZEREEKK0UxNjNCNTg2CitGRTU0M0U1OTdEODM3NkNDMkUyMjFGRENGNgorQzEwQ0Q5NjhFOEIzMTU2RDIwQzAyQTMyNzkxNTJGNjg3Qzc0NTdFQTk3MTc4MENDRTE2MDVENjM5NUZGNjJDRUVDRjcyQ0MzNDE0QjUxREJGM0E1Qzk3OEM5MDlGNjEzMkE4QzBFMTJDNDhBQTZFODVCRkZBNDBCNEEwMzY5QUYKK0RENjcyMDgwCitBMDlDRDI4ODNBOEY1RjE4OTVERjUxM0QzMQorNTRFMDc3MzgwN0YxRTM2M0Q3RTg2RjgyREY5Qzc4MEVFQUJCQjc3QzA4NDVFNzNEMzVBNUQ5M0IwRDdCQzI1OTIyOTg2NzhDMUIyRUVCOEFEODREN0E5MzBFNTUyMDEwMzA5NkZGMTU2NkM4MDM0RDlGNDA0QTE1RkYyNDVECis5MUI0NzczMworMTA1QzYzQkZFNUFCQzBFQUVCNTZGMkJFQzgKK0RBNzQxMzkyN0ZERjFEQUYxQjFFM0M4QkUwMTAwN0ZCMTVCMDU4QTYyN0VGQkUyODA4MEE1RUMxNjhFMUY1RDAyOEEyMTI3M0ZFMzQ1MEJGNTVEQTBBNTU0MDU1NzExMkQzNDI1MzU1QUQwMzkzNDg0MgorOTdGQjNCQ0QKKzY0QTBCMUQ4MERCN0YwRTE4QUJDMEE4Nzg2CiswODQwN0I5MjlCMEQ1RDlGOUUxRkNCRTlBQ0E4QTI1QTU3OEZBNTU3RTBBMUI4CitDQkUyOEM0OQorRTJEODlBNjY4MEEyOEUwMzUyMUQ0NzgzRjEKKzFCNUYxODg5NUM0NTczNThBMkMxM0I4NjA1QzYyRkNCNDMwM0NDNkQ5MzJCMERFREY2OEZBMTJGMjA5NkNDCiswNTMxNzJFNQorN0NFNUQ3QjMyOTgyMkUyMTExNDQxNjYzOEMKKzNCQjQ1NzA5MzZFMjQ1MUFGOUFFOEI1Q0MyQkQyMjVCNkY1RDY3MDZFMjIwMDc0MTZCMDBCNzJDCis0MDcyMTBGRgorMzEwMzA3Qjc5NEU1RTgxOERDQTU0RjFEMUIKKzIyNzE4REZENjg1OTg0MURGRUM4MjE5NEVBMjZBMTFGMzgxRDAyQTQ5NzgyRUE3MEJDNjlGOUZENUI5NTBCQUExQjM0MTY5QTc3MDNCQUZBRjAyNTY1NDEwRUVDOTk5QkQ5QTIyMjUwNkRCN0FDNkFEQTU4MTZBQTk2Q0I2RTY2MTUwMzhBRDc3QTRCODg2MTY4Mzc1MjVGNTA0NEFGNkE3QTZFMEM2RjBDNkMxQzI5Q0ZBMzQ4ODA0NjE2QTNBOUNDCis5QTQ5NUFBMAorMkJFODY5MzY2ODE1MTg0QkQ4OUVDNjI1MEIKKzJFRTYzNTg0RkYwNEVGRTlDNDBBMEY0N0JFNzg5OTdDRjU3QkMxNzlEN0IxQzM1NTlDNzg0ODE3RTUxNjkyRDM3NEI3Q0IyQzIxNDk0QTg0NUY3NTJFRTYyMkI2NjdFRTcyMDFERkNGMkVCRgorMUE1QThBRUEKK0ZGNTNFNzRGNjZEOTY0RDZGNTU5QjhFMjhCCisyNzlDRjI1Q0Y4QUI3NDc5MUVCRjE1MDY0QkE4NjZGMTMzM0FCODhDQzFDODhCNTY4QTIzN0VGQkYzN0U3Qzc3NjZBRjJEMDE1NDAxQTUwQTUwCisyNDZEOEEzNgorRUZENjc3NjZBNTZCQzdFMTQzNzQwNzRDMjUKKzU2ODZCNzc1RjVDMDcxREY2N0MwNEM2MkEyOUQ0MDdDOTc2NTlEREU2Nzc0NUMyNUE2NzdBMUI5NzA4MkE2QjJCQUNGQzQ1OQorODY5OThFMjMKK0FGNTlCNDc4NTJBMDQxRjIzOTVDMTVEMjBGCitBQUM3OTU0MDMxOTBDMTg5Q0FERTI3NTZCODhGMkQ3ODdBMEY2ODZBRkNEMDczOUIyMTQxREVDN0FFNkQ3OUZENkZDRDgwMzQxMDUyRjgKKzBEMzNBMjFDCitERDUyM0IyQTEyRjBGRDczMkYwRjVENzM3MTQyCis3QkFDODFCM0MxQkFFRjE5OEVDQUU2OUQxN0ZEQTM5RUIxMjMyMDgzRjc0OTUxN0FCNDE2NTFEOEY2OTJDRTA0RjY5ODcyODAzMzZDRjY2QkI2REM2ODE3MUY5RjE4MkJCNTlBNDAyRDMzRkEyNTNGQjUxMjM5NTQ5NjI0OEU3RjU5NEE0MTcxNTdCNzRGOEQ3ODc1NENGQTZGNzM4M0VENTBDQ0VFMDEyNDFGRTUyQkJGOUM5Q0M1MUM4NTY4MjBBMzQzMTczNEIxRUM5NjUyMjkzNUU1M0YwNTYyMjUyOEU0N0JDQTVBNTgwNDY2NTZERjIwMjc4ODEwQTQKKzkwM0QKKzk5NDJFN0E2RjgyM0QxMTc5MUY3NkQzRjMyQzNGQkM5RkY2OTFCOTBBQ0Y2ODhCQUJDMTJDNzI2MUJFNTJGQzVDMDFEQzYyMzNCQkNERTg3QzY5RjFDODI1RTNBOTA3MDg0NTREQzAzN0NDNjNFRDk2MzYwQ0Q2QjM0NzIwNkVERDI0NzY2MThGMEVBNkU1NDcwMUM0QzNBOTBERTY0QkJDMTYwODY0RTAxNjI0MjZEQjIyMjk0NjU0RDVGOUVCNTk1RjAyRkY1MzIxRTUwQUI3MERFOUY4N0M1MzUzOUZFMEE4QjMzMEU5RkZGNzc0Q0NENjAzQ0REREI1QgorOUIKK0RGQUMzODgyCitCNDdBQUQ4MzJDN0U3NDk3MzBGQkQyNEE0NTFBCitCMTlFQTQ2Nzg2MzgzRDdGQUVGMjVEQzc5NDE4NThBNTRDMDQ0QjkzNjYxRUExNEZFMzY2OEUyNERGNjUzNUQyNzY0NEU2OEM1MEE2NkE5OEU1ODIzNjY2RThEOTc2QTMzRDM2MkZFOEJENzk4NjIyNUYzNEM4RUVCNDAxQzcwQ0M1QzFFRDYwRDgxRUYyMkYwNURCQUFGOUVGMUFGMDkxMzlBOUY2RjYyQTUwNUZCQjc0MTYyNDY3NDVFMzkyOEMwM0E0OEJBOTQ1Njg5MDg0QTI2MDk4NDE0ODg2MEI2NzMzOUMyRAorQkE0NEQxNTIKK0Y5OTM3RTVGQzA5Mzc2QUY2NDU1N0UwNUY2MDAKK0ZEMDNDQzUxRjI3RERCODk1QkIzOUYwQjQ4QTRFRDFDQjY1ODYyMURGNjAzNjZDNzlFQUM5QkI4RTNFOEJCNkRGRjE1NzNCMzExOEY0MDk1ODI3RTIxNjIwQzREMUFDRjkwNTNCNjFGRUI2NjhFNjU5NDA5QzM2MDY4RDRGOTVFMzQ1OEVDQ0ZFODE3NENCN0Q3MEQ2MEU1NDFEQjdGMzgwQTJEMjYzMzlGRkVDRERBNTkwM0VCMDZDMDk1MEVCRDcwOUY2NEVGQUZDRDJCMzlCNkZCMDg1NkYyMzI3QTc4OUMxMEZDOEFDNEQ0RjJFMjRCQzZENDc0RTQzQgorRjU1MgorMDEKK0FEQTJDQTRFCis5RUM3NEQ2Mzg1QTg1MENCMzVDRTNFRjAxQworRDEwRUJFMDQ5QjQxRkM2NkZDN0MzNEU3NjRCMjk0NDc1OEVEM0ZDRERGNThGRUQ4NjBFOUQxRjgzOTg4MTUxRjM0QzdDMDJCRDM3MDJBMTdFNDVEQjA4RTM4RTVDNjJGNDYwNjU3MzMwMDlDMzE1RDQ5M0JDMzQ1MEIzOUQxRkQwQkE1MTAzNEEyMTNCMTQyMEU5QkI0QUQxQjdDMkRCMEI5M0Q3MDY1NjI0NTcxMzVGRTg4MjRBRkZFQzJFRURCNjAKKzYwOUMwMzgzCis4NzUzNDMxOEU5RUIwQUNFMTVGN0M2RDVGOUE4CitCQjU5QTgxMzZFNUI0QTExMjYyRUNFMzUyQTM3MzBCRjdEOTkzMjE1Qjg1RDIyNTM2MDg1RThBQUIyOEVENEQ4MTVFMjVBN0JBQUI5Q0NDNTMzQkY0OTMwMTJDQzk2MUY3NzUyOTEzRkQyNkU2QzhDOURGRUQ5RUI4NjJBRjlDOTM4MDQzNzc2QjcxMDEzOUMzMDhCRTI2OTdCMjA5QTAzMjk5ODE3MzMwMzJFQ0FGNjZDMEI1OERCNTBGQ0I0Qzg2QjMzNjVENDY1RDg5QzhFRkEKK0NEN0QyMTU4Cis1MTU0Nzk4MzYxMzlDNzhEQTZEQkIzN0FERTg3CitDMDNBMkREMTY2ODdCMjM4MjM4RUM0MzFDMzM4QUREMzk1MkQyRjE5QTU4RjEyMTY4MjVBQTE3NTRCQTdFRUEwMUYwOTYyMEJBMjdDMThFMEM3N0U3RUQ5QjY5QkQyRDU3Q0RBOTJCNDM2RTNFNDY3NDFBN0UyOEJGNkZBQjM0MUI0OUEyMDdGOTk1QkYwNUI4NTI3MEU3MDczNjdFM0I4NkY5QTc1MTNBRERCRERERkYyQ0JEOUZBMkE0QzZENzI2RDAzMTZFNERFOTMzNjU2MDA0Nzc2MDhDREE2MUQ0QkU1NDU0RjJCOEIxQjlBNjFCQUQ1MzkwRTQ1Q0MKK0JCREUKKzY0RDEwNEIzQUQ2NUE1RjFGMUMwQTMKK0U5QjMxMTVGCitEMTE0OTg1ODM5MUIwQTIyMEEyRTZFMTBENQorNTA1NTIyMzMyQkVBMDNDNzhDODkxMTUxNUU2Mzc3QzRFRjg2RUU5ODlCMUFFRjlCOUZGMzNFNTcxNTY5RTUxRTFCQzREMkMzQ0VCRkU4MDNFRDAxRTE3MUJFQUVFNjVGMDQwQUZENzY5Q0VBREFCRTIxRDg2RgorMTkyOEI3QzUKKzc3MkE0QzAxMzM5MEMyRjRDOTc3MEE0OTMwRUYKKzFFM0U3MzMyMzU3QjY4MDdBRTMyQzA0MzY4QjA1OUVEM0FDNTMwQTMwRkI5RkYxODZCNjlFNTE5N0E4NkU1MkZFNEM2RDc1NDE0RDkxRkE1NzA4MEMzRjY2M0IxMTA5QjgxNzU5MENDNzBDMUU0Qzc0OUNFODczMEU3MjdDMzVENzY1MTI1NDBDMUEzNzE1MUI4Q0UzMTU1QURCNjM1MUI3MUEwNjE3MkVEMDdERTRCQjNFNDBEMjJBNzM5OUNDRjE0MjRBMDUxOTQ3Q0U1RjNGQUE2NUUxMDdFRUUyRAorMTlEMkFCQTQKKzRFQjU1QjQ3NkZCOUFBMUY5NzgxREI1NTg2CiszRTExQTIxNEMxREUwQzk5OTQ4OUI0N0IzRDhDRkIyQkY1MEY3ODlDRjlDRkQ4NzlDNzA4RjMzMzQ5NzI0Nzc1NTQ0OUMyN0ZCMjAzNDI4Q0E1NkRCNjRBNThBNDk2NDA4NEI5QTNCOTk5NjM3MTY1RTY1NzUzRTQ4N0FFMDk4QThDMjdERDU1RDNFOEQ0Qzc4N0QwRUE1MEFDQzVGMzgyNDQzMzYxQURDN0M1QTRERDQ3Q0ZGOTgzCisyMDVDODE5NgorM0RFNTRCRTEzQTQwMDlGQTMxODI0NUEwRTAKKzE3QzMzNTJCMkQ0MjVFMUY1NUI0QTVBRDZBMjU4QjhGMDlCRkYwNjExNTFBMTAzQTVCNzc4QjgzNTRBMjhCMkNEQzc4NTE3Mjg5OEExQjE0NEMwRjVBQjEwODU0QjRFRkU1NDVEREE2Mzg0RUQ0MzlCMDE4OTFBMzg4ODJENTgwRTA2NDFDMUNEQzA2NTMzQkE2NjZFQTY0MkI5OTYzM0Q5NzM0MDQKKzdBN0U1RTdECiszMzhEQzlCRDFEODlCNUNDNUZENzg3NkE4MzE4Cis0RjBGOTNDOTBGREYxMjhDMjMxMzkyRjhEQTM5MTVCNjdDMUJEQzI2N0QwQUU2QTc0NEI4QjJEMTc5MzgxNzNGMDIzQUQ1NzI3MTYwQjM3QURDQzBCQUMwNjUzNjdERTZDQzE4MjBDMTBERjIyQjVDQTQ2QzdBMTIyNkFBNTJDRjVCRDM2RjQzRUUyQkEyRUU1MTY1NzgzMTcwMzgxRkVENEIzMDQ1NEM1RTgwQzBGMDMxRURGNUJGNjU2RTMxNDU3REJEQTU1RDQxQzdDNEM4RTk5MgorRjhBQzVDMjAKKzU2REM5MTQ0NDA5RkZGOERBODc4Rjg2RUQ3ODQKKzkyQzMxQ0U0NENBNkYwNzZDODc1OTlFQjREN0JEMDYwRkY1MjhCNEU4MjEzNDQxNzQxNUVDQzY3QjczNTJBNUExM0QzQ0I3MDFEN0M0ODJFNjFENzAzODg1NkM4NjU2NTM3QTY4RjNDODI5RTg1ODAzNEEzODNEMDU0OTIyNUQ3NDQ4NjBFMTIyRUI4QzRFNDBCQ0Y3QTlBOTE0MDQzN0Y1QjBBRDg1REVDNzE5QjZFQjVCOTU2M0Y2MTQ1M0IyRDdEQkIzMEVFMkU5REVGODAxNjAwMTA4ODA3Q0I5NTNFODAyMTYxRjQ4NDBCMjI3OTkxNzZGRTMxMEQ5QworM0NCOEZFMkQKK0I0NTQ3RUU4MzA3QzU1NkI0ODk4NzdFOUU0CisxMjFENjhGQkM0NzA3NzMwQjU1Rjc3NkMzRDc4NUVGRDU4NDRFQzAxMzE3RTBDRDcwMjYyMDUxQkEyNjMwRDA4RUFBNkVEODM5MzVBRDMwMTcyQTQ5QjlGNjNFNUFFOUFFOUZCNzg5MjU3ODEzRDZEOTkwMjc4QTdGOTAyREQxRjA0NEY1Rjg2NkM1QTZCN0M0MjYwRDlGOEIxQkEwNzFBMzYKKzg1QjgwNDVFCitBNTQ5NzJDQTFEMEUyRDJEMUM2MTFBNEJDMTMyCitBREFEQzkyQzQ2MzhCM0M2Q0RCRUYxODQzRDI2NkYzQTczMUE2MENFOEMzRENFRUFFNTk2RTVDRTEzNTJDNjVGQTYyOEYxQTEzQjkxREZEOTJEQ0JBODM5NkQ2NzcyMkVEM0UxQzg4NTM2NUI1RjVEOTMyNzIyNkI5MTU4NEU0QjU2NzAwNjkxMDgxNEQ2OTg3QzNEQUUwMDkxRTE1MEQxQkQ3MUQ0MDYzQjlGRDgzODc0Mzc2QTgxNURGMUNCMzRERTEyQ0MwNjM3NDMyOEVDOEJERDJBNDVFNzUyRDAzRkZENENGMjA1MTc4Qjg3MjQ3NzYyNkJFRjBFOTgKK0RBNjcKKzU0NTI5NTNEREI3NEFCQUM5OTBGNjZGRUM5MjIyN0U1CitFQjg2MzRDQgorQzZGRTgyNTg4MkNDM0U1RUY4MDI3MjMxNEM0MQorMkM1REI0QTYyOTQ0ODYwNzhCNTMxMTg2QTlCQkY3NzIwNEE4N0E5MDlCRjk1RDZDREI0MEQ2MkMzRUUwM0M2REU5NDUwOUY4QUUxRjM2NzY1NDIyQ0M2QTIwQzEyMEIzRDNGQ0NBMTBFMEYwODhFQzRDNzNEQjM4OUQ3NkM4OTkyODNEMTNGQjI2Qjk1RThBNzE0NjA5QTY0QUNBRkUyN0E1MjhFMzYzQzgzRTk0MjBGRDhENzI0OUVGNTBBNDhBQ0UxMENCOEFDOTNEM0U1NDczQUFERDg5MjU3NDBDMEZGN0JGQjcKKzlDNUYzRDY0CitFQUZBQkZDMDA2QzJDNDIzMjU3OTQ3Qzk4NDlECis3NEM4OUY1RDhCNTY0MENGOTk0ODVDN0RFNEUxRUZCRDM5MDFEQ0RGNTMxOEJFQjNBRjdCQkM1QjcyMEVCODVGNjhDOEZFQ0JDNUU4ODc0NTA1MjMwQ0NCMDY0MEE4Q0QxMEU5RjQ5NkRGOTE1NzE1OThDNTZFOERDRjNCMTVGQzM1RTY3NzRBMTRBMTI1RTVCQjdCNDY5RjAxNEY2QzZCMzcwMzE0NzM2ODAwMUIyMzNGMUYyQ0YzMDk1MzdFQzk3MEIxN0Y4OEY0MDRGQTc3RDc5OTk4NUE3RTNCMkQ0NzMzMzE0NkJDMTJGRjI2NUNFRjA0M0RDMzUyRkIKK0JCRjMKKzM4NzY3MgorMzdGQ0NFMzcKKzkxNkUyRUE0MjMzRERCNTMzOTI1QjdDODdFCisxRDI0QzM0RTFFRTU1MDRDM0I3NDk4Qzg5NjEzODQ3NThEMjZEQUU2RTk4MzI3RjQ0NUMxMTZFOEREQzM3RDU5NzdCOUJDNTkwNEMzMUE0MjYzRTJEQ0E3QjQwMzI0NDcyMjVEODg3RjM3M0JFNUM0NkQ5NDQxQjg3MTYzN0NFNkI1MzFGNTAwMDQ4MUYwNkRBRjYyRkE3RkREQUI4OEFEM0I1OTM1MzEzMzc1NDREMAorMEM3NjBFQjEKKzVFMDI0Q0ZEMjZDN0E3QzMwNDQ1NThCMTAwCis0ODI3QkY5RDRBRDg1MTJFOEZCQTA3MzY4QzBDRjgyMjdERjE5NzI3OTc2REYyNzMyNTFFNTVDNDQ0QkZCQkRERjJGMDdCOTYyNjMxQTFCQTk5ODJERTEyMDk2MEE3OTlEMjgzMEQ4QTM2N0JGNjA1MUIyMTZCNkIwNkE0NUU0OEMzMjU4OThFOUY0REIwNDU5QUU1RDREMkEzQUNGOTg0NDY0OAorMzAyMDY1NDgKKzA5OEQ5NUJFRjk4Q0UyRUJFNjkyQkM1MzFGOTkKKzk5OTA1MzAxOEYzNzg4RUUyQ0JERUNDOTJFNTMwQjdDNzYzMEMzRDcyQTk0RTRDQzdENDk4OTkyRkQzMTAxNDdCQzM1REM1QkIyMDA5QjZCQjI5RkJFOUI3NEY2NjZBNjZCRDYzM0YyRkE1QThEMTdCMzJDOTBGQzY4M0ZEODM1MDg4Mjk2MUE4OTFFM0Y5RkQ2Q0E2OEUwRDY4NTFCQUVGMjkxQ0NBQkQ3M0VEMDczNUZENEZBN0E4RjY0ODJDRUM4QzQwNkQ2NThGNTVFMkQ5N0EzQTg2MzUwRUYKKzJFQjk2ODY2Cis5RUFCMzEzOURERDc3MTBCQTAyODQ4MTNCMgorOThERDFEN0U0RDBERUYyMEQyRjBBQTg0MTVEMENDMTYzRkI3MTMwQUY0RjcxMzU3QUIzNjMwRDhFOEQyNjc0M0M5N0Y1QzcxQ0MwRDhCRUNGNENENDEwOTlCQkU5RjZERjg4MzVBMzdBNjU0QUVBRDE2MDA4RjZFOTc3Mjc1ODJFRjU4M0NFNTFDNDJCMjA0RUYzQkNCQjg0MEMzRUM1NDhDQUVEMDIzNDFDNUEwQkFBNgorOUNDN0JDNTEKKzcyNDE4Nzk4MTYyOEFFMjlCQzhFRDMwMTFECis0RTJFMUExODI2NkI1NjEyNDZFQzNBRTVEODE5RkU1QjQxMDkzQkVFNTJBMTJBQTVERDE2MTgzODVBRjQyNTlCNzM3MkY3NzlDOUUzNDIwM0UwNDYzQzhEMjE1NjUwMjAwODI4Rjg3OERBQkU2NEQ3RENENTJGRUJEMkJCMzc4MUY0NkQzMzgyRTA1MzA4NThERjk3QTBFMTJEMkI4N0VBNUUyRDJCMjNEOERFNUQ4QzM5OTk1N0E0Cis4NDA2NkJERQorOTA5RjQ4QzBCNEFCMzMwMzVDMzcyMzMyOURBMworOUM3RDY2N0FEODc2RkI3NkMwNjM5QzVGMjUyMzc3M0M3MDIwMjc0RkEyOUExNEQ1Q0FCRDg1OEEzODg2RDcyRDYyNkREQUUyNDgyM0JGRDM5NTYyMjA2RDM5NEM0QzA2REZFRUFBNTNFQjk0OTc0MzM2OTRDRDkyMUNEMjEwQUNBMDdGNUU0QzQ2Q0YxMjU0QTE1NEM1NTNGRDI5NTdDOURFQTdENzUxQzQ4Njc5QTc0NTgwN0U5NDQxRDg2MjQ3NzFEQzJFOTczMjM5QTdBM0ZDMjFDREM0QzYwODBDMDkwRjI3MUE0RjE0OTQ2MUQ3NUE5RDUyMTcwMzUyCis4MjM1CitBRjEzNzk1QTIwRTRDNTJEOEU2RjZDQzEyM0ZGNjY5M0MwRUY4NDFBNzNFREUwRjg0NzlGQTY1N0VGRUJENUVBOUI5QzI1RjI2REE1RkIzM0U2NEYyNTBFRTJBMzcyCis4NzU0QTU5QgorMUJDNDJFMzlDMzNGNkY1MzE3NTFCMDBDOTUyRAorRUUxRjZDRTYwQjc1NEM3OUQwM0UwRDgwMDMyNjdEQjc0Nzg4MTlDRTE1NzQ5MUMxNzI0NDEyRTU3OTk2NDJDREM3OTY0NzExM0Q4ODUzMThFM0M3MENBQUQzRTU1QkU2OTRGRUU4MUU4NDgzMkREQ0QwRTI3QjAxNTBFMDVEOEQ4ODk3OTIxREVBNjUxNTZERTVCOTM2MDU4RjQyMzk5RjJBQTkzMkQwNTAzQkVGOUY3OEMyMjc3MjhCQThDNkRCOTdGQjE1M0U0OTdCNzFFRkI0NjQyNDk2OEMKKzVFRkI4NUVBCis1Q0IxMzlFRkNCMkFCODU3N0U2REM3RjZBRQorRTIyRDE4OTI2MDhDMjRBMDlBMUU3MzA5M0VCOUM3N0Y4QTJGODdERURDOThFRjQxNzMwQzYyRUIyNzk1MTY5OTQ2Mzg3MURBRjg1MjQ2MkQ3RUJERDg1MjdBQTkzNTE1NDczMjU1NzYxQzQ5RkEzODM0NjQzMkFBRDIyMDAyMUY1MDNDRTNCRjY2NTE1NEQ1QjY3NkU1RDhENzFDNTU3NworODJGMEEzRTEKK0FFNjg5NEE5NDlEODYyNjg1RUZDRkYyMzI2QjQKKzBFMjdFMDM0NEVDQkU2QTY4OENFNDBDRUQxMTIwREMwNDQzNTdERTdGQjZCQUE0NzE5OEE2NzE5OTE4MUIyODgxNTk2ODdDQ0E5RTA0RDkzQzcyRjgwMkY2MEI0NEZDQjU4QzA4QkQyOEY1RTM1RDBFNjJDMjIwMUE3MkIxNEYyMjREQUE3MDI5RDI3RkJFOEY4MjcwODExN0I2NTM4NjU5MjQ1M0JCRDhDRkM0OTA4OENENDM5NjQ0QTM4QTRGMjlGNkNBQjIyRkI5NzAwRkRDQTRCNzUzRkFDRDE5M0U1QUFEQkI5N0MwMTc5M0M3RTI1QTA3Q0JERUIzQworMkJBOAorOTlGM0FBN0Y3MTE0MkI3QTk0Q0QxNUE1RTc3Qjk1OEQ4NkE0MTQ1OEYyQ0E1M0VGOEVGM0IxNEY2MkZEOTc0RjcwMjMxQQorRjQwNjA0MTEKKzc4NDAwQTVERkM5MDRGQjYzQjM5Q0QyMkNFCis5QzJGM0Q1Qjk2MEVDMTlBOTUzRDM4MTc0MDU0RTQxNDRFRjM2NzlBOEUyNjQxNkE3QjQ3RTQ5NjAzQTUxOEE3RkQwMDI3QkNEMDAwODRGODIzMTkxQkM3NDkwRTFGRTM0QUI5MTQzRkY4M0YKKzNBRTlCOTdDCitENTUxMDc0NUY0MTI5NkU5QzAxMTMxMkZFMkZGCitEMENGM0U1QkMxOUMxRTE3NjQ4QzJCODc0MzQ3Q0E5RTU5OEMxQTA1N0Q2OEE2QzdCMUIzQUJCNEFFRDQ5NTcyRTk3MzlGQ0QyMkY0MUJBOThEMkExRUI2Rjk1NDhEODIzNDMxQzY4NkY4MjhCODVGQzY0QzNGN0ZERUQ4MTg5NTRDNEJDOTZDMjZDRTJCMDUyQjhCODlERjVGQjIzNEFEOTFFQTM4NDY2Mzk0REFEQzNBQ0VDQTMyOEQzQzk3MjgwMjg2RkI4QUU0Q0ZCNUMyNjM2NDJFNjAxQ0YxMTlFRDgxQUUzQ0U0MzYyM0RENEJDRjJGQjY3NjU4RjgKK0EwREYKK0MzODdEQzVFNjQ2N0QxMDE0MjUzODEwMkUxNDY5QkQyNDFCQkNGMzNDMjFFNzYxMzZCMDU0QkJGQzZENkJDCitDMTZCNTJFMAorRTk1MEM1REY0N0QyQkFCNUMwQUMwREQ3OUU3MQorQzUyNzg2N0IxMzU3RUVDRDZCNDEyQkYwNkQ4MTgyMTQyOEY3MzI2OUJDQzU0OTRFRDhBREJERUU5RDU3QTU1MTczRTU4QUVBMjcxODA4RDJDRTY4QzNEMDM1RjdFQjQ4MDFDQkMzMDY5MDQzNjhEMzg0MUVFMUVENENBRjk3NDIxODIxN0NEMDAzNkYxNDBFRDJCOTcyMTJBODhEQjREODU2RUE4MUE2OTE3OTI3Nzc4NjQwNkQxNjQ3MDU4RjFCMEMxOUQwQThEQzlEOUNDNTREQzU4ODg4Cis4OThBMzc2RQorMTQ3QTFEQzk1NUQ5NzBGRkU4QTBCRkE1MTEKKzFBNTc4QUZGRDM0NDA3REVCNEEzMUEzMzM4RTI1N0ZBMEU4N0JDMkJDMzhFQkIxM0VCREE1NTEzQkY5QTI1QUY0NTlFMjVCQzQ4NzZEMTBGMjFCRUE3M0ZBMUZGQzEwNjQ4ODhCOUFDMTk0QjRGN0E4MEYxRTlBMEMyQ0MxQTRGMTY2MEE4RkIxNTQzCitEODU5M0ZBQgorMkJCRDQwMUZERTMzMjVENERFQTBCREVGOEJBNQorNzUzODdERDA0OUM1Mjk0NTg2NDM3MEIwQTVBODYzNUMxRjZGNTVDNUQyRkJDRERFQkUxODU4QkYwNTE4QTk1Nzk0REUwQTFCRTFBRjAzM0VDMjhFNkZCNkUwNTkzNjYzMTc2MDA4QUQ3MEYzMzFFMTVEQkE5NzIyMkRCQUIwOURDQjhBQzg2QkFGQ0EzNEQ5ODBCQ0MzQ0RERjVCMEM4ODMyMDVFQzJCNjYzOEFDQzQ3QjBBQkYxQkEwQ0NGNTI0NTVBQzVFRTI0NEQyMkM1Q0QwOTU5M0Q3QTM2MzkwOUM4OTFBMTZFNkE5MEYxMAorQUE5NEI1Q0MKKzgyMDUxNTFBQUIwQkYwNUYwMzFBNjM2M0RDRUYKK0QyRjNCMjUxMzk0RDQ5NjMzMjBFQ0E0RkIxMjZBMEY5MUNCNzZEMDJEMDkwNUFEMUFFOEI1RTA0QkUzRjM4NUMzQUJFRDE1NDRBODRCNzM2RTZFRjlCODhBRkJGRjMwRERDMzkwNjkxQzQ2ODk5OTlEQkQ4RjIyNEI0OTUwNjVDMDNGQkQzRTc5MjVCQThEMzU0MDlDNEJBMTZGQTYxNTBDRTc1RTNBQkJFQ0I4QUFBQUY4RkU4NDRDQTk0NjJFNDU2ODQ3REFERkNDNTgyN0RFM0VCCis4NTM0QkNGNQorQTgzRjVEQjVFQzJBQjNBMEE3MEVGMUJFQkEKKzUwOTUwNDVBMTAzMTk3M0M1NTAwREM4NEM0MDYzQTcyQzIzNzVCNzZEQUUwODIwRDcxMTFGQkZERkU1QkVDNkU1QzFDNDU5NjgwRDhDMENFRjJGNzI4RDBDQUM1RDA1RDk5MkQwMkNGQkE0OUU0OTQ4OUVBNjJFMDZGRjc2Q0JEQkIwNzgwOUI3QzQxNTVCM0QwRkU1QTVDM0ZCMUE0MUE0NENBN0UxNjdGNDM5NAorQUE5Nzg1OUYKK0MzNjY4OUQzRTJENDdDN0MzOEU1RUEwRUQ1MDMKK0M3QjU1RTFGNERCQURGOEYxN0YzNDczQjlBMjgyQkIzNDZBQjExRUY2REMxMDk4NEIyOURGODdEQTNDRTlEQTZGRkFDRjRDQTc3NDkwMDRGRjY3MzhBNDAwNTRFMEMwMzE2MDc3OTIzMUMxQ0E2RjZDOEE3MzBDNUFBRkE4QTY3MjI4RjdDRjY0M0REQzZFMDAzQTRGMEU4MjVFQkI4MTYxODQ4ODFENDZCNUY4OUQ5QjI4MkI2ODM4QzUzNTNBMUM0Q0VFM0RBMjU2NzQyRTY4MkI5MDVBRjkyNjMwMThERUM5NzY5NzBEMTRDMzAyQTZFMzVCNjdDCitFRjRGQTcwNAorQkE4QTA3M0MwNzFDNjQ3ODJERkQwNDM0NjQKK0E3NUQ5RTBCQzc1OTg1MkNFNTM2QjA1Mjc2NjRCOTQ0MTMzRjBENUI5RkQ2NEY3NTE4MUUxMDc0RjlCQUVEQkI0M0JGM0RDMUQzRkY4QTlEOTg3OEE2QUI4MjY1N0QzRkJFRkQ4RDJFMzdFMTczREZCMTg2NDY0RDVGOTNEQUY2RDRBQUE0OTM2NQorMTI3Rjk1RjMKKzMzRTUxODkxQ0I1MzZBQzY1MDMwOUNGNzk1Cis1MjBBODEyMjY2NjAyRDEzM0E4QkVCOEQ2ODI5MzVEQkM0NzgwQjhGQ0FENEY2OEFDNEYzREI0RTM1RTgxMTVFOTJGRjkwMDkwRTcxNDhGRkIxREMzQkM5N0NGN0E0QTI4NTU5RTg4MzdBN0E1NTM3NjcyNzFDRTVDNTc5RUYzMkNGQ0VFMjU4RkJERjQ2MjdDRjQ0MUYzRTJGMTFDMUNFNUU4MDY0NDdGNEMwNERBQkIzRTIyRkI0QkVEMzI1MTVCNzI4Cis4NUFFNEYyMworMTYzRDkxOEY4MDQ1NjA2MDkwNjE4N0M4MjMKK0Y1MzMwODc4RkQ2MjlGNTQ2OTRBOTg4NkUwNDkxRUVBNTQzRDExODAxMzAxOTg4QzJFQTBBMEQyMDVFM0MyMkJERUUzQUIwMDkxMEM0M0QxNDc0MDZBRjc0MjdBMEQzOTBBQ0E5Mjk4ODMzRTk3QjZFQ0NEMzQxNjBGRERBRDAwRTZBNDRCOEM3ODhGNThCMTMxOUFFRkNBRjU0MTk1MTcwNEVFMjExMDQzQTA2OUM3NTAKK0IwRUQ2QjRDCitBNDZGQTA4QkFBMDAxRDMxMDY0RjA5OTI3QUYzCitBREU4MUZFOTY4REVFMzYyQ0YzOTQ4MjhGMTM2QzUwMjhDNTIyOTk1MjA3OTI2QkQyMDc0NThBQzM3NzhEQzIzREY3MUFBOTU2OUUwNkE3QkY2NzY4MzAxOUE1Nzk0MEQ4M0UzQTM4ODY4NEVBOEYxRUYzOERCNEMyOTlENjJCODc4Qjk5OUNEOEZCMTc0M0Y4RDNBNkZDMDMzREFGNkFDRjdBMDc0ODRDQjE3RDAzMUJEQ0ZCNDA1QTUxMjJFOUVBNTE2Qjg5OEQ3ODRCNzZENEI0RkMyMzNFN0VFNEQyOEVCRUNCREM3RkE2REY5REVDQzdDQTM0RjM2QUUKKzgxOTIKKzE3QjRCNENCQTU3RjQ5M0QzOENBNjA0RUVDREEKK0RFQTUzMzFBCis0MkIzNkRFRjQxNEJFMTYzRTVBNTk5MTRBRDNECitFNjNDQjU5N0JBMDg5M0FBREIwN0E2MDU5NzI5MjQzNzRDRkVEMjRFNzJCMTEwRTM5RDdGQTAxOEUwRkZBMjY3RkU2MTlDNDZCQkNGMDIwREJDQkQyMkY2QTE0RUM5RjAxMkYxOTdDMjVDNjQzMzIxMDk0NTRCMzcyMUUzNDBGREU3OEY1MkE2OUZEN0JFM0I3NEZDNDhDQzg0MzY2M0EzOUM1MkEzM0FEMTY0OUZDMjcxNDI0N0E0M0UxRTM2M0ZFQ0M5NjhFNkQzQjQzRjMzQURGNzI2MkFFMUNGM0IzODA0QzQ3NTFGNjQ1ODQxMDFGQUMyMDI5NzNDNjMKK0FCRDcKK0E5ODYxRENEQjAxQTRCM0U5NjgzRDg3Mjg1RjhFMDA1RjE2RjA3QTVGQjQ0NjNFRjA1CitEMTlBMzhENAorOURBMDYzRTNEMjQyREIwOTY3NTM1NUU4RDY0MworRThDRTdDNjRCMDNCRkM5RDRGMTlBMUU3N0EwQkRBNEM3NkZGOTlDMTNBQkM2MTYyRUQwMjYzQTc3MjI1RTI5NUM0QjZFRTZFNjhDNUNBMkFFMEJDMDUyMTA1MzI0QkM2REM5MkEwOEUwNjg2NUI1NzYwOUIwM0QwMTc5RjcxOTAyMUZGNjU2MUE0NTA0NEIwQTMwNEFEMTA3MDQzNDA0Njg5QTQ5QjM0MjQzODcxQTlDNTZEN0Q5NzEyQURBNjZEQUQwMjk5OURCMEE4RkM3MkQzRUZERjhBODU0QjA2OTgzOTEwMzM0QjIyQkZDQUJDQTU3OEEwQjhEQTdDCitEODEzCis0RjVFRDBFMQorOTM1RjgyRThGMTc3RUVEN0Y5M0RBM0VBRjIKKzBGRDA4NDUzNkJFN0E4OEI0RDlGMzEwMTFDREI0QTlFRjgxREIwNjg1QTUzRTY4Q0UxM0Q5RkM5QzQ4MUE2OTU3RUYxQjdEMkMzQTMyMkU5NTQyMkE4NkJFOTE1NTlDMDg1MkZCNjY3QkUxMjI1NTlGNjdEQzJDOUI0Qzk4RgorODYxM0M0MTIKKzczNUE2MjQ2QjM4MDBCODVCOEQwMUYyMEYxMjYKK0Y5NDY5NEE1OTk2MUEyODQ4QjA1MUY5NTNCRTUxQTMwRjkwMEQwNzU3REY2NUY3Qzk5NDI1MzIyRjI3RjQ5RUIyMDMyQ0Y1MjA5RDJBRUMzMTUyQUI1NEZCNUNFNzExRkNCNzc2OTZGNEUwMkFFNTFENzUwQkRBMjc2QjBGOEUzOUE1NDA4NTRFREVCOUY3Q0YwNDBGMjk3ODUxOTlFMjE1MkU2MkUyNUM1M0JFNjgzNDI3MUVDOTBBMEY3Njk3MTI2QUIxMDFBMkFGQTk4RjgzRQorNUI3Qjc3RkMKK0I3N0ZFQzg1OTFBQjM0QTlFREZFRTJBODM5CitGQjM2NURFNDNBNzI2REE3Nzc2MzczNzk2NUZBNjQzRUZERURDQzlBQjVBMQorQjEwQkIxMjEKK0YwRTI0MkRDNjBBQjcyMjdCMEMyNUE0NjVFOUYKKzAwMkZBNzlBNTQ4MEFFRjcKK0IxRkI4OUFCCisxOEYyNDM3MzQxMDY3REM5RUNERDFENzY1QzEyQzc0RjM3QkNFMDc1MzdEMDI3QjNFMkEwMUFGQkFFM0UxNjFDRkIzNworMEEwMjE2RkUxNjVFRTQwNjlENzc5QTdENzJEQUNFN0U3RjZFMjM0QkVBQzM3OTg5OTRFMkM2Rjk2OTMyNkY1NDEyMTVFQzU5QkIzQQorQUY1N0U2MzA4MTQwMTY0MjE3MjZBRUFERUI1M0EyODhCREUwNkM4RThEMzFCMzdBNDJEMDQ3CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ2IHB1dAorZHVwIDMgL0MwMDUwIHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY5IHB1dAorZHVwIDYgL0MwMDcxIHB1dAorZHVwIDcgL0MwMDczIHB1dAorZHVwIDggL0MwMDc4IHB1dAorZHVwIDkgL0MwMDc5IHB1dAorZHVwIDEwIC9DMDA4MyBwdXQKK2R1cCAxMSAvQzAwODQgcHV0CitkdXAgMTIgL0MwMDk3IHB1dAorZHVwIDEzIC9DMDA5OCBwdXQKK2R1cCAxNCAvQzAwOTkgcHV0CitkdXAgMTUgL0MwMTAwIHB1dAorZHVwIDE2IC9DMDEwMSBwdXQKK2R1cCAxNyAvQzAxMDIgcHV0CitkdXAgMTggL0MwMTAzIHB1dAorZHVwIDE5IC9DMDEwNCBwdXQKK2R1cCAyMCAvQzAxMDUgcHV0CitkdXAgMjEgL0MwMTA4IHB1dAorZHVwIDIyIC9DMDEwOSBwdXQKK2R1cCAyMyAvQzAxMTAgcHV0CitkdXAgMjQgL0MwMTExIHB1dAorZHVwIDI1IC9DMDExMiBwdXQKK2R1cCAyNiAvQzAxMTQgcHV0CitkdXAgMjcgL0MwMTE1IHB1dAorZHVwIDI4IC9DMDExNiBwdXQKK2R1cCAyOSAvQzAxMTcgcHV0CitkdXAgMzAgL0MwMTIxIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xMCAtMjA5IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzRDMjY0RTVGNDVGMDI4NkJEMUIyM0QyNkMzNDYyNkUwN0EKKzVCMDM5REIzNkMxODAwNUVFMzJDRkE2NAorOTA2QjI4NUNCOEJEN0YwOTY4CitENDdGNTI0MgorMjJEQTI5QkI2M0U5MUFEODYyOTEzNjhBRDUKK0E4OEE4QjU3M0U2RUZCQUEzNDNENTRFODBGMTg4NkI2RTYzQURERTg0MTE5MjQwRTBCNDQyQkYyODI0OTk2CitGQTZGNUJDNworNDExMjVDNjQ0MTczMTJBRDgwNkZCOTFBRkMKKzE2RDgyREVDNEI4QUY5MjgwQTMxRjA3QkE2RTI2ODkzRDI4QTUwMUE5NTY2MEE2MkRDNzhGNjNCODc1MTk3MDc0RDdCNDQ2RkQyRjdEQ0Q0RUJBQjJDQ0M4OTE5MEZGRDBDMTZGOUIzN0E3ODMxMDk5OEU1ODRGQjY5NzhDQUIxNDg2MjY1NUYyNUYyRTBDQjBDRTIxMUQxRjY2RkMzNDg1MDMyQzQxMQorODJERjBCOUUKKzdCRjJBQjZCRDdEMTcwMjA1NEJFNDlFNkUyCitDMjdDMEU3ODYyMDYxMkQ5RTFFODkxREQ5OUQ1N0FDMDJFMzJBNkVERjQyMDY3NDIzMzRBREQ1NjlENTY5RDM3NzUzM0QzNDNFNkM4NjQ5N0U3NTcxQkY2QkUyQ0FFNzRBN0FFRUY1QTBDQ0MKKzM4REI1NjJBCitDMDY0ODZDNDU2QkMwNEE3RkY2RDU2MkI0RUQwCis0MEIwNTA3MkI4Njg5ODU0RkU4MkM3RjYyNEE0MTdDNEQ0Nzk3MTIxOURCNDEyQkZFNjU0QUM3MUFFN0QzN0VGRjk5Mjk5MjlBODc0NTM2REQ3QTAyMEY5M0M0MTEzQUNGMUExNzQ4QjE4QjM0MDgwRTU2NkE3QTUyRjI5NDFFNjNEQjEzNERENDMyODI4QkJBNTQxNjUxNkZBMTU2N0RBNEM4NTUyQjE3QTNCRjI2OTVDNTdEMjNGMTc4RTIyQzI4OEU2NzNDNDRFMDQ0MjhCNjgxMUU3QjgwMjBCCis1NTczOENDRQorRDBFMTgzRkFCQzZDMUQ1N0U2MUUxQjcwRUYyMworOEMwMjg0NEE3ODg5QjYwRkZDMkY1MEE1QTRFODVEOTVBMzRGQUQyRTlCMEU2MTA5Mzc3NTUzOTMzQ0NEOTFGODEwQUFBMjIzRkEyRURFMEI5NzM2NjIxNzA2QzQwQ0ExQjNBOTlFMDMxQTFDODhDRjFDNzRERThCRDBCQUU4OTMyNTEzNzc5N0M3MjE1OEYwMjIwOUNBMDBBQ0I5Q0NCMTg5RTA5RkY4NkI0RDlERkVCRjQwN0QzQkVFN0FBQjE1RDgyNUI2NTU3OEFFRjY3RTY0NEI2Mzk4MUJDREQ3RjU4RUVFRTYyMzcyMjIzNQorRkM5QTM1OEQKK0FGQzhDMTlCREVGMzI4RkFEODE5N0NBNEExCisxNEQwOUYwRkYyNzY4MEI1NDdCNjUzNUYxMTY4ODQ5Nzg1QTc0NTEyNjUwODU1QkE0RjZBOUNDMDhDOTRCQzkwRDNEMjM4MkVBNTQzMDg5RENFQjlDREUzQTNBNTJGNjFGRjUyMEJCNkQ4ODM3ODYyOEI1MTI1OTc2NjQzCitCMDY5REVBMgorQ0M2MkFFRjZGMzFCRDQyQ0FFQzc2QzdFOTIKKzY4RTNCRERDOTk3OTY1OEZGRDc0ODZBNDcyNzlGMzI0MzRFQjFFODIyODdCNTg0NDNDNEJBODZERUIyOEM3MEY2OUU4RkE3OTk1RjBDNUQxREY2MEIxODRGMjFGMTIxQUU2RjJENEJDQTBEN0RERDM4NTQ5NjIwM0E1NjFBQTAyRUU4ODNBOEJBMDQyNTVGRUI4OUNFMDlEOEVFNTc1NDFDNTY4NDE2Rjk1N0ZDMjQ0RkRBREM0QUQ4Q0EyMkMKK0ZBOUJDQTMwCitDRDk1ODI4RUQ4OTU4RTA4OEQ5RkU3MEE5QzRECiswMDc2NzE1NThDQkM1NDdDRTFGRUJCNkJGRUE1QTZFRjdDRjgwQUEzNzA0MDE3QkFEQTk3RDUyMEZEMzMyQzZBM0I4MUY5N0NBRDgzMDU2NzE5QkVCRDY3NjhEMUNCMDEzODY1MjZEMzBGMzY5ODRDNzM4QjNBRjVBNEFCQzI4RUYwNzFBMzBFRjY3NUMwMDgzM0NGQ0M4QTE5N0VGN0M1OTFFMDU2MDEzMzlCNkIyNDI5RTFDOUU2ODkwOTNGNzIwQkVCMEQ3NjRERkZCQUVEQzEKKzYwMEZERDlFCis0Mjg0MjVEMjQwNEEyODU1NzZBODE3NjRDRjVFCisxMzFDRTY5M0IzQkI5NDEyODNDM0VCNzJFODQ3NDdBQkU0MjY2RDg1N0QwNkE3QjY2NzMzM0I2MUM4NzAwQUFEMjlEOTRBQTk4QjU3QkYyRjYwREI3NkM3MjRFMkQ5MzJCOTM1Rjg5QjU4OUNGNEFGNkY1Mzk4ODg4OEIxMDMzOTFGNDA2RkVCRUEzRjlFQjIwNTUwQ0IxOTgxMTk0RTIxQzk2MkQ2MkUzMjRDMURFRDAwMjU5MkRDMkUxMTdEMkRFNTg0NkQyQUE5RUNCNkUxRDNENzU5OTlGOUY0NEVGNUEzNTU5ODI1NTk2Mzk1OTYyNkUwNEI2Q0NGMTAKKzE4MDQKKzAzOTlCNzQ3CisxRjk2N0E4MDhDMzc0QUU1QjQzNTBFRUU3OAorQzI0QkU1ODRBMEE4QzZCQkJCRkEwMzQ3NkJEQjZEMDZEQUY3NzZCREZFOEJDODA3NUU1MkM1MjQxMTc3NTA5MkY2RUZFREIzMjM5QUNGQjAzRTlDRjQzRUUwMzIzOUY1QzY5OEQ1NjcyM0MwNjlEREFBNDUyMDY3OEMxOTg2RjE4RjgzRUY0RjBDOEUyODI3MTQKK0Q5NzVFNTA1Cis2QUZBNTlCNDI4NTc3OUU1MjdCQzhCN0MxOEUyCitBN0I1NUE3MTIwNEQ4RjE1QzY5RkYxQUNFQzc3OEI4NThFODEyQkFFNjBFNjg1OTkzNDBERkE5M0UzNjAxMjM4QTE0QzU0NkUzMzA4NTU5QjMyRENBMUNCODZCRUQ1ODY4MEYxNTU1NUVGMUVBMzdDNTVBOTM1QUExMEM3ODA0QjFGOEMyNDk1REE5REJFRTIwQkZGMUQ3Rjg3RjlBQTE4MEFCN0I5MzZBNkE4QTBBMDc0OURERUJERTkwMjg2RDI3QkMyRDg4QzEyQUM3NTM5QjMzMTI2MzE5M0E1QzdGNDg0OTg1Q0VDRUY0MEEyN0YwN0QyMjEzQkU4N0UKKzk2NTIKKzA5QjEwQkIyCiswNzY5OEVGQgorRjI4MEU3NTgxOUM1QkNGQjc4NzRBMEQ4OEEKKzdGNTY2ODgzRTEyODJCNkY5MzQ2ODA1OTEzRjc5RjlGQTlGMjJBMDIzNjc0RTBERjkwMDVFMzdCQThENDJEMzFEM0YxN0Q0OEE5NTJBOEZDOTk4NTQ2MTgwNENFOThGNTUxMTAzQjUzQzA1N0M0MDMxNUQ3MjMzMEIyREFBQzY4NjAzNjE5RkMwNTM0OEIyOTkyNzU1NTFBMENFMkI5Q0E2MkFDNThDM0ExQkZGMTM4NzE2MjhDQzI0RDdECis1QzYzOTAyMgorM0VFODM0QUZFNDhCOEQyMTExODk4RTI4QkQKK0JCNEU5NzVEM0E2NkYxQUJCODI3Njk5RjcxNEFDQkVDNzVBRDIyOTMwNzcyRTBDRjlGOUE0OTZDNTc4RDVDNEU0OTRDRDlEMUEwQUEzMzg1MTU4NjM5OUNCMTUxQzgxOUY4RDRDRDQzQTEwOTc3NDc2QjA4NTFGNEQ1MTU1NzhENEZCOUVGQURBMzkwOTY2M0JERDZFOTA3QUU3NjE2QzI1MEZBCitEREZBM0JDMgorOTUyOTJDRkQ5RTEzNTdFNkZGMkUzRTIwQkJDRAorNDJGNzhDNDY3NTFFNUFFOTgxNzA2RUEzMDYyMEEzRTkxRTc2RUYyQkUzRTEwQ0E4MkFFRDQ0NEM0OTBDQjQ0MEQxQTJDQkVDQjY3NURBMjM1Mjk0QUFEMzU1RDdGNEI0RkQ1RjhEQ0I1RjVDQTE5MzMwNDIwNkJDNzE4QTcxMDA3NjREMzlCQTEyNzE3MjVCMTlEQkJGRUY5NDI1NTM4MkRDMjNDM0NFMDlFQTBCRUI0NzJCNTdERjZCOEU2NTdDQjIxODdFN0I3MjQzRDRBNDkwQzBFQzk0Cis3NzJEOEZDMworQzJGMTc4NDZFNTI4MENDQkQ3MjA1NTcwQUMKKzgzMEY4MUQzRkEwNkQ2QjY2REU3RTk1MDhBNTlCQkZEN0Y1MTY1NkY5QkE3MzZEREY1N0QxNEU1M0E2MUFCM0YyRTJDMzI5QTc5MDFFQjY2RDc2M0Y2MjMxMzA2REU2Q0NCRjlBRkZFOEU5NEJDMEY5RkI1NTZBNTlGODMxNjEwQzU2QUM2NEQzQjRBRDlENTEyRDBCRTc1NjM5MDY5RkZFRTZDNUFDODMwNjM1MEY4MUQ1Njc5ODIKKzFGMThGNzM2CisyOTlGQTNBMjZEOEIxRUNDQzYyNDRDMjZFRAorNkVFQTQ3QzM1N0E4RjI4NzhDODEyRUFEMzNGNDc0QUJDQUNBRjMzM0IxNUU1QjNGQzg5MkE2RTUxQ0ZBNjBDQjkzQzRDQjBFNUYwMDU0RjlENDUyRTQ0OTY1NEQwRDIyNThCMkQ2OTE2MDIzMUQzNkU4MzUzOEYyODJBM0M4NUI0QkI2MjE1NUQyMjEwRjNGMDcwQkY2NjkwRkJERTU1NzkxN0U0QTQ3OEVEQkQ1MjVGNkVCMUM0NTNBCis1NjQyNjhDRQorMzBFREFERDAyNURBODNFQ0UwNDgzMUE2QjQ5MgorNEVCNEYzRDQzMThCQzBBMDFDQjkwOEJGOTY1MzZDNDFBRUNGQ0ZBRENGQjA2NDVCQTZENkFDMTE5NzQwODc1QTJFOEFBM0I3QTcxRURFNjFDNzg3QkVERkRFRkYwNzY3MjZDM0M1NkQ3QzBGQjQxRkM1RTFGNEQwODMxNUEzREE2QkRDRUM0Mjc2RTMxQ0U4MkFFMzQ0MUFBRjg3RTgwMEIwMkMwOTlFNzUzODlGNjgzNDVBQjMzOUU5NDAyNjFEMDFGRkMyQkIzNTBDNEQ3MDU2OTgxQkMxMTM2RDJGQkFDN0NERjgzOTZDMzBGOENFQ0Y0MTU5RjAwQkEzCitGNDU2Cis4RDVBMDkyQkJBNjFBOTAyNDE3NjdENkQ0RTBGOUM1MkExMkEzQTMzODcxNTJDRDk1MkI3RUYxMzcwREQ2M0M3RjgwNDI0RDMyNAorNDlCMzc2QzQKKzg1NjlCOTRBQ0M1MzVEQjBDQjk5QzA2RTA1RjkKK0JFRjE0NDNDN0Q5QTJBQTk1MDM0MTlEMkYwN0VBNUE2MjM4RTc4MzZDMTExNjc3NDAwNTA0MDBFOThBODVFMTQ1RjdCNENDQ0I4RDdBRTg1NDM2OEM0N0I5NjEwOTJFNkU1OEY1OUJFQzc0OUM1OTk5OTJFNTA0RTM0OTU0NDI2OTY1MEIzMjgzNEFBMUE1QUIxMDMzODNENkZGM0VFN0Y2M0EyRkM3MDhCRUU4NTNDMzQ1QThDNDRBQTRCQ0NEMDk4Q0RFMUY5ODg0RjNFNjkKK0RCNTJFN0Q3CitDOUJBNERGQ0FEQUQ5OEVCMkEyRDM4QkZENworNDAwMkFDQ0MxREJENTc1NTNCOTUzM0YzNzE1Mjc1OERGRkI2OUY0OTE2QTQ3REM1NDlGQkMwQUNGNTMzODU2NUI5Q0IyNjVCRUVCMDJENTZEQzZGNDhBMDY2OThFNkZCMUY1MjU5QUE3NEQzNEIwODlFQTdDREM3RUZBN0Q1OEIxNkEwQUNFQjMyQzRBNjA2M0FFODIxMDJFRTk5Cis3MjU1N0NDRAorQ0M2NUJCMzNCMDBGNDdCQjkxOTNFM0UyQ0QKK0NENTA4ODc2NEYzQUZBRjRGQzE4MjE3QzlFMENDODFGMjY5RjVBRUI5QTdDRUY0RDE3QzhCODUxNDVCNjREOTk3NUNERUNCNDRCNTIzNjM5MTFBOThEOTdCQzJDNzc1MTc4RTFDNTYyCisyNzMwNTE0RQorMTY3QjgwNkE1QzhBNDJBMjc4QTY2NzkyMDdDNworNkM5OTk5MDMzQkY2Mzc2NkY5NTI2QUQ2QzhCODU0RTVFRDFBQUMyNEEzQ0FCOUEyM0NCQ0E5RDVDQjQ2MDFBMjUzRTQ5MzFGQUE0QTkzMEJGRERERUM2QUE0QTU2MzMzMTRGQTM1MDU1QzUwMERDODk2NTMzODcxNzY3NEQwNkJCOUZGOUYwNkJDREU4RUI4RjVBMUREMkZENDIzOEI1NDZFRkM5QTVDMDg1OEVBMDAzQUU2RTUzMTExQTNEMDBFNTBCRkEzMjVCQzFFMjFERURFQ0YwQzFDMTdCOTRGNDE3MjkyQzFEOTBDOENFMTAyOEE4QUI2QTVFQjVGCis1NjQxCisxNzFCOTFCNUUwMzk5NjRERjBGMzlCRjRCQTdEMUIzNTk5QkI3MjVDNzQzNUZGRTJFRDRGRkM3RgorMzA0MjQ5NDUKK0FEODk2QzZDMUE2ODMxQkYyOEY3RjY2MEU4MjYKKzJDRDEwQUE0RjFDRkFBMzc5NEVBNDY1MDlDRkJDMjNGMjY0MDJGMDM1RTE5RjBDRUJDMEIzQjZDQkMzNkYyNEQ4Rjc3RDBEQTM2MTFBNkIzNUMxMDc2RDgwMkJDRTc4QzUyOUVCMEM4MkJDQjM4MjAzQTBBNjYyNDZGNTg3MkJEMTEwNzA5QTFBMTYxQzVDMDE3NUI1OEI1MkFFN0UyODZBMDQzOEQ1RDg4N0RBM0M0N0VCNDM2RTc2NkYyMUQ5QjA1Qjg1M0EzOTg2QjI2CitFRkFBRjI5NAorMkU3NUIwNzQ3NzcwRUM5QkUwMjI2NjNCODIKK0UyNTQ0QTZGNDBDQzFEM0Y1MTA2NjQ5RjYyQTc5QzgxQjNDRkRBQkY0RDMyMDk0RkRCNzEzOTZEMjI3QkIzMEM0Qjk2OTdBRDYxRTgxMzg4NTdFRDc4NTlFMDgyQUJBRDA2QjRBQzU5NjJBNkFFOThENDNBQTU1NzkxNjVENzFEQzc0N0U3M0U1NkRECisyMTg5MEI1RgorMkRERjlCNDAzMkM1NUE1MjM5M0M5RTFCMzYzRQorRjVGQTQyNkE4QTc0NTkyOEQ0REQzMEU1NEM3NjNGMTcxMTRGMDRDOThFMjlBNjhBNTIzQ0VFMzNFMDM4NDc4ODBBNjY3NkYwRTA0OTkyNTY0MDI1MzM4QzIwMDUxNDcyREMzQTNFMTNDNURBMTEzMjQ3RDhBN0Y2NDQ0MTQ1NEZDNTdBNkNGNUI0QzdGNzIwM0E2RDVGQjBDNTlCNkFFQzQzMjkxQUZENTZEQTg1RDQyMDg2NzY4MEZERThGQzE0NTVDQUJENTRCRDgxMkNDQTFCNjFGMUZDRkZENjI5REY2NworQkNDNTdCMjcKKzk4ODIxN0JEREE4MjZBRkQ2RTVCRjM1N0M2Cis1RTQ2RjQ3MUJCQzUzMjBBNTE5ODY2OEI1OEI2NTQ4NEMxOTA0MzBGQzg3N0I5QjVCQTZGOTY4MzJENEQxNURGREMxNjQxNDg3MjFCQ0JFMDVDRDE0ODJEQkI3Q0YxMzEzMzM0MkU2NjBDMTg5QTE2QTI1MzAzRDk3NUZDMjUzMkIwQzA1RDAxRjdEOUI5OUMxQjZBQjFBODhGMzc0NEEyMjAyRDBDOUY2RDA4QTVBQzVECis3RDMzQjMyQgorN0ZBRTJBMkVCODM0MjI3NDJDMzE1QjdFNDQwQQorQTNBMDk1Q0JFRTI2NTc4RjVENjFEMkIwNjRCRUY2OTc4RkM3QTFFM0Q2MUZCOEIyMjMwRDcxMEY1MEE5QzcyRDkwMEYyMkE3Q0Q5NEY4QkRBNjRFNEEwODQ3MTI3ODE0ODg1RTExOTEyN0RGREI2RjgzQzhBQTM1RkE1NTM5RjRFMjk2N0E1QTI1MDFBOTY4NjkyOTkyNjU2RjI3NzEwMDg5RkM3QTk2NjAxN0IzMDNENTlGOUQwQUU1MjM5MDBFRTJEQzY3QTk4M0FCMUFDRTJDOUJBODI0NjQxRDJFRDE0MDE0N0MzNTNFODk5MkJBQ0IKKzhGQzYzQjZDCisxRTE4NDM3MEQxMTIyNjVFNkU5QzdFRkQzOQorMzg1NTNBRUExNDhCRjhDOEIxNjU4NkNDQkE5NDAxOEVCQjM4MzI1RTQ2NkIyRUVCMDc1NTFGOEFGM0E4NzZFMDI3NjU1OUQ2ODIwMjkzOEUwQTg5MjMyNTI3MkQ5NTg3NUMyMENGNTk2QTkxMTE1QTA2QzMxMjU1M0U0Mzk5NjM4QTlGN0Y4RQorMEMzNUQ4M0IKK0UzODFDRThCMkIxQ0FCRjIzMDE0MzM0Mjk4CitCOTdFQTA0OTAwMUY4OTA0RUJFRUE0Mjc2MThCM0YxODY2MDc1MEE4QTU2NURFNzcxMzA0Q0NCQzE3NkQxOUQ0RjQyNEUxRDI4MzE2OUUxOUJFOUNGQTJBMzhDQjJFQTQ0ODU3OEUzQjVFQTcwMzJDQzY1RjQ3MzdBRUEyRjk1NEMzQzU3RDc3NkRBRDZGRDhBRDBCRDNEODczODVBNjJDRURCOTUwQjA2ODkyNkNGNkM4NzI2QworOEVFQzM5M0QKK0UxRjhCNzQ2NzAxQTcyODk5QTREOTU4NzRDRkUKK0Q3QzA1MTcxQkNEMzQ5N0E2QzJBQTYyOTAwMTBBMTVGNjY0ODVCQzg1NjJFREM1QkVGRkNCQkYxRDI2MkMzRUM3ODhBRUQ5N0M2NEFFRjU5MTQ2NTlDRDY4OTM1QUNGRjMyOEJBQjY0OTRDQTk4NkVDNjVERTM0MUQ2OTZDNDY3N0EwN0FBQzZEQkM2M0U4NUJCMjkyNDBGRjUyRjcxQUQwMjFCMkU5MUI3NTI3RTQzRUREODlCNTVFOTlGRTIzMkEzNEVBNTk5RDNFMjU5Q0I0REYwMkVBMTlFNkZBQkMxOEY2QjY1NjBEQ0Y3QjUwODI4ODA5RDI4MzAxRAorRTU0QworM0EKKzYwODlGODJECis2M0E4Mjg5NTZDMDNEMEQ5OTVENkU4OEZDRjI5CitDOTg0ODc2QjZGMUI1QjhBCis0OUNCQUVGOQorQkJEQjcyMTlGNUNDOUNCNUM1QkZEMUUzMjlBOUVBREVDQzAzQUM4MTdBMDFFODgyQTNCNEYyQjg5NDEwRUREN0Y1MEUKK0ZDRkY3NjI4MUE3NDUxRTM5MkM1MzkyMzg2MUI2MkUzMDU5RDJBOERFMTJDQkJBNkE3MjU3Rjg1RDczNEUxODE1MkM1NEY0OUM4MUUKKzJBMDZGMkU1QTkwNDc0OUIwRjExOUM2REIzM0YzQTExQUQwQTAzRUY2RDQzNEREMTNFMjhBOAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoaQorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGkKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hpIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NiBwdXQKK2R1cCAzIC9DMDA0NyBwdXQKK2R1cCA0IC9DMDA5NSBwdXQKK2R1cCA1IC9DMDA5NyBwdXQKK2R1cCA2IC9DMDA5OCBwdXQKK2R1cCA3IC9DMDA5OSBwdXQKK2R1cCA4IC9DMDEwMCBwdXQKK2R1cCA5IC9DMDEwMSBwdXQKK2R1cCAxMCAvQzAxMDIgcHV0CitkdXAgMTEgL0MwMTAzIHB1dAorZHVwIDEyIC9DMDEwNCBwdXQKK2R1cCAxMyAvQzAxMDUgcHV0CitkdXAgMTQgL0MwMTA3IHB1dAorZHVwIDE1IC9DMDEwOSBwdXQKK2R1cCAxNiAvQzAxMTAgcHV0CitkdXAgMTcgL0MwMTExIHB1dAorZHVwIDE4IC9DMDExMiBwdXQKK2R1cCAxOSAvQzAxMTQgcHV0CitkdXAgMjAgL0MwMTE1IHB1dAorZHVwIDIxIC9DMDExNiBwdXQKK2R1cCAyMiAvQzAxMTcgcHV0CitkdXAgMjMgL0MwMTE4IHB1dAorZHVwIDI0IC9DMDExOSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTQ0IC0yMzYgNzU3IDcyNV0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OUE3MTE3NzNCMUYwNjJFRkRDRTkzMTk4QTc2NUY4RjU1QQorNkU5RjYwQjQzQUQyMTNCNkY5OTY3NUQ0CitBRTk3NkUyMzE5MDEyQzM3QjAKKzMwMkJFQTQ3CiszQjk4Q0VGMjE4MUY0ODdFNjBCQzY4MjIzQworQTVGODZFN0ExMTVDRkMyQUU5MTY1NDcwRUFFQzY3OENCMERCMjdDMkJDMzM4RjIxNDdFOENENTUyRDFFNDIKKzM4MTJBNjEyCitFM0Y5OERCMjY2QjY1MERGNjZDQTI1ODNEMworOTU4RTlFRTBBMEI2M0I3ODY3RjIyNjgzMjdENzlERDk4NjBEODA3MTNGREE0QjgyRUUKK0E3NEI1NURBCis2MzgxMTUzNzUzMjQ0REZDQkQ3REEyQkFEOQorOTU1RjkwNjEyNTREREM1QTQ4OTA3N0Q5NzAyNzI0NUMwNUQ5NDU5MUY0OEUKK0NFMjlCMkY2CiswRDVGRTIzNTU1QTBGRTc4MTI4RjFBNjRDREQ5CisxQTk3MTg2MzFCMENBOTlFNDY5OTU0RDE3MzZDNjNCQzEwNzYxNzFEMjc0QjM2RTRDOEUzQkVGNUZCOUVGRjM1QzZFNDdDM0QwQTQyQTcwQUJDRDkxRUE1OTIzREE0MzZDRDZCQUEyRTJFQkY5M0QxMzlENUI4QURCRjREM0VCMTZBN0Q0QTBBMEM5QTRFQ0YzQkY0QTY1OTNCQTYxNTEyOTFCMzQ2NzJEQ0FBQkM1OEU2QjBBNkEzRjAyQjUwMDFCM0JCRkNDNzYxOEQ1NzNFN0U3QjZCNTBDNDE3RTQwRkQxQkQzRTlCQ0Q5NEJGRjM3NTVCOUNGQzUzQjgKKzU4NjUKKzI0MzA3NEY5NTRFMjM0QTkxMDNCOEZBREZECiswMEFDQzRBQQorQjc4NTlBODk1MjQyMTg3OTI4RTlDM0JDQTc5NQorNDRCMUEyRjdEOEEwNkNFMTRGMjc5REExMDFBRDQxMkYyN0MyREQ5MTY2QzRBODU5RjJFODhENDJDODc0OUY3ODI2MzMyRjJCMzlEOTVBRkUwNDBGMEM3QTU5NzVCMTVBQTk3REVENUZCMUU2NjI5ODVGN0M5MUZFMzIyQjg4NDkxOTY5MTY1RTY0QTdGQUI4Q0UwMEY4OEY0NjE4NzBERDY4MTk5ODg3OUUwQzFGOTJDRDI5RkEyQTRDQzUwMjg3NkI3Q0JCOEUzQUM2OTgxMzAxRjNGRENBNEZDNUFBM0M0MkQwRDk4MURFQ0VCQ0QxNEM2RkU0NDMxREQzCis5NTdFCitCNkJBMUQ4ODFBRUUxQTgzRTVFRTJDOUY3MDY5QjFGMAorMEI2RDc2OEIKKzIzOUJFMzM0M0FBNzNERTRFQzhDNDY2RThFCis3MTkwODAzODUyNDE4QkJEOUE5MEI3NUIxRTU2MjhEMzgxNzI4OTVGQ0NCQjkyMzcyRUFFNzkyNjNDOTQ5MDZFQ0M0QjgwNjk3QTFGNjFDQThCNDY2NEUwRUJBMDcxMzQ4NzA4MEJFREQ1MDhCRTJDQjkyMUE1RTRFMjQ2N0UyNTBERTM4QUNEOUEyOEZFREQ5NUQ0NzQxRTA4RUFCOUEwQkUyNDcwRkU0RkU0RUJFRjhFODlGMkZBMDU0MzE3N0UKKzBFREI1RjBBCisyNUY2MEUyMTYzMDMwNEZFNjgzMUJFRjQ1MzBCCiszNTFCNjk3QjVDNzkzNDI1NEYxQjU1RkU3NDZCOTM4NzkyNUNERUJGM0RBQjE1QkUyREUyRTgzNTgwQjYzQzdFRjYzODNENjY4MUU5QjI1MjA1NDk4NUREQUE5MUI3MzFCMTM2RDJGRkY0Q0M3MzY2QjQ0RjExNzkzQjgwQzA0QThGMzJGMTBDQTgzNTYxMzgyM0Q4MkQ5QTlGNDM5M0MxQkNDNjM0N0UxNDZFNkNBN0EyOUU5MUVEMDM5OUNBREE5QjQ4ODhBNDFGNEYyOEI4Q0YyREFDRjAyMkUwNkUzM0I3OTg4NTcyQ0EzRENCMDM4MDIyM0MwOTE4RjUKKzlCRjYKK0Y5NjZFNUU5OUUwNjk4QkNBMEIzMzJFQ0NDQjA5Nzk1MENDNzMxRUY3RkFDNEQyM0M1NjkzNzFFMDZGNUI5MENBMEQ2NzI1Qzg3RjIyNUM2NkVFNkYxNDUzOUJEN0NFQgorRjhEMDUzM0EKK0Y1Rjc1MEM1ODg1OTE3MkVCRTk2MUVDOTE5OEIKK0MwM0NFMDRBODE3MzNCQTBEM0Y2NkFEQ0Q3MDI1NTZFRDc3REM2MEIzRUQ1NjNCMjE4RTdDQzY3QzNENzE2MTVFMjFCQ0ZEOUE0N0I3MDcwOTIxMTBENUU2N0EyRDVDMkE1MjEyMjI4MzNFM0I2MzE1QTlCRkQ4NzU2NzBGQkJFQTU2MTBBNzUzMjg5QzcyMTkxMEY3NjEyMzcyMkE3QzYzMjRDNjc4MEMwNkIyRUJDNjY5NTFBMEVBQzU2QzM0NkE0QkNEM0U3NjEKK0NBQjk4MDczCitDRTUxMUZGQTMyMkNCNjA5MDY0M0Q0Nzk5MjQxCiszQjREN0QxRTQ5OEQwRUU3MUNFMUVGQUZCQjNBQUI3MTk4NEY1ODk1N0MxRjAyREYyOERCRTZENEM5NjQwQTlDNjA3QUM2QUYyMDg5MDMzMkQ5MTZCMTU2QzM4MkQwRjRFQUZGNzk1QkZFRDdFNDIzREE2QUY2QzExQUY2NjE2NzExM0VCMDE2NEMyNjMzMENCODE0OTcwMDgyMDlBQ0RGNTE2RkQyQTY0QjkyODA3RkQ1RjBCRDU2NTdFQ0E2QzYyOTE1QjRERkI0QThCMTJFMzlGMzI2ODJBOTMwODkwNjUzQjMyRjMwMjJFNDBDMEVFQTdGRDFCMTAzQUYKK0I4MjUKK0ZBMkRBNEY2CitGODE2OUI1RgorQUNCQkEwQzgzM0E5MThDRjM0MjhEMjYwMjE3MworODEwNUJDRUQwQjcwOTE1NkFDQTQwM0Q0ODI5REM3MERBMDk2NEQyMUMzRUE3RTdBM0MxMTIzN0JGMUIwNThEOERBNTYwOTYxNDMxQjc5NTEwM0U3QTc2MDZBQUEwNzhEQjNCMjVEOTU2QkRCNTc4MUQ5N0VFQjJCNDQ3RkFCQzg1NDU0QkVDQkY2RTdFN0U5QjE1NEEzRjdCMjg0Q0U5NUY4RERDOEQ5OUREQjEyMUE2Q0JFMjBEODgxRTk4REVBRjgzODc0NjM3QUE1Q0ZCMDlFNDM3NjcyMjE5RkI4MjRBREFFQkNEOEM4NDdGNjIyRkFDNjAwNkFDRUMwCis0NkVDCis2MUYwMDdFNjI3QjlFQjAzNzI0NjhDODI4NzlDODg4QTAwMzkwMENBRUE3ODEwQjNGRTAzNzQ1NzA2MTA5RUNFREYxQkE3RERCODk0MEY0MzgyM0EKK0FDNzgzNDRBCisxMTBEMkU3QkE5MzE1NEZDOTdDMkNDREE0QUIzCis5QTI3QUUzMEQ4RTI1Qzg3QTkxN0FDNjY0MDRFOEQ3QUI5REIxRjM5QjMyRTRDNEI5QTcyMEVFMkUzMUI4ODNEODk2RTdEMEQ2MkFBOERGMTBGOTA0Q0NDMDdENjFCRkMwMTU4N0U0MTExMTNCMTIwODc4MzNDM0MzNzg4QTJGODQ3M0Q3QUEyNjNBRDE3MEUxRjFFMjg0Q0RDQkExODg5N0I5MzhGMDFENTFCOEQ5MERBNTNGQkREMENEQUI1MzYyNUNEN0IzODIzODcxQTI5Q0JGRTk0RkQ4NUJFMTMwNTVEQkZDQkZCNDkxQkRDNTBGOUIzMjVENDI4RUYKK0I3RUMKK0RDOEIxMTYxMjUzNjBDNDU4Rjk2Mjk0NEQ2RTBGMzAxMTY1MTA0MjQ2Rjc2RjNCNzFGODIyQworMzVFRkZFQkEKK0Q4NDU2M0I2QkIxMUUwNDJBMDhDNkZDQTE1Q0QKKzA5OEExQjA2OTY5OThFQTZCOTM4NUY4MzE5NjJBOTc2RUU5QzgwNTk4Mjg4NzBDRjNDMzkzRDlFMzlBRTYyNzgyNzY3Q0Q0MTBFNTE2Rjk2RjhDQUI4MUFCMzg3REZDNzNGRUE0MDgwMzYzODA3MkYyRTAwQzVCNTZCMDg5MDE1NjgxMUZENEFDRDUxMDU0NjJDNzQzNUQ4Q0M2NDAzNDE3MkVDMUY1RDgxMDJDRUE2MTNBRTk0RjgyREQzQjRBQTg0N0MxM0MzMUQ3MDYwRTlCRTIwRDk0OEJENzI1QUVDNUJEQkVCQzdFMUNGMTdFMjk1Cis4NDNEQzA2MAorOUE3MjFEN0JDNEU4NkI3NThERTVCQzMyRkU2NQorOEVERjA4ODM0Qjc4QUQzQTAzOTkyNkRCMDhEQ0E1MTdDRTY0RjNFOTMxMjdEMDI3NzZDRDlENDc2RjA1MDFBQkRCQjI3NjI3RUZFNUIyODU3N0YzNDc4NUZCNzgzNEU3RTI2NkVFMTcwRDZDNTExMjY3N0M2M0QzODEzM0JDQzRENTZGN0Y4QkM5OERFREM5N0VBM0IzN0QyQTVGMUM4QTg4N0JDOEU0N0NGQ0RCMTg4MUMyNUY3REE0NzVGNjM0MkFEQUYxMzYwNUNCQTc4QkEzQzY5MjZEMkE0Mjk5MUJBRTUxQUZDRUE4M0U5MjNDNEFENEZDOEU3MTM1CitGMjdECitGMTczN0ZGQTUyMTk1RDM2REE4RjExQUNERENFOUJDMTMyODUKKzZBNDVBQzlCCitDRERBODdFODQzMjIzQ0FGN0IzRUZERkEwN0ZFCis5NDAxMUEwQjg2QUMzMkJDNkMxRTUxMDA2MkIyREEyRjczNEI4QjMxOUQxRjI1RTUxRTBGNTJCQTdEQURFRjVDNUFGNTBFQTdGMkM0NDY4NTQwRENCQjA2MjJGMzBEODdCNjhDQjRENjNCRjUxOTdCODg0NDdCQjcwOUM1NkYzMEM3MDE3MzhERjZDOEQzQUMxOERDNEY3QkREMEUyRDRBODY1NjRGNTcwN0UwRjI5OEZEOEM0QzdDRUZBNUM4QUU5NkZFQTBCRjc3MTRCMTE3MEIwMUNCOTUwMkU0MDU4RjIwNTM3QkQxODFFQkJBMEE3OEQ5MUYxNDhDNjUKKzgxODcKKzRERkEwMDc1REY1NjUzM0QyNkQ3MjUxOEU1Qzg1ODY0RThEOTFDOEZBMjE5NkMyMThFMkZFMzQ3OUVEOTc5OEE5QTgyQzZEREU1Q0Q0RjdCRDJEN0IzRTBDOEYyMEVEMzE0OUNCODNFOTdEREQ2RTAzMzY0OUE5MEQ3NTExNDNBQzkyRDUzNzBBQUY1OTFCQjI0ODNERAorOTA2MDgxNUUKKzRGNDBEN0M3RjIyOTgwQUQwRDJEMDVDMTlBODkKKzYyMDNFNTk4RUZGN0E4QjYzOEFBMkI0OUVCQ0U4MjYwOUQzRkI4RjBGOUQ5MDlDRTlCODg2MzJBN0Y1NTZGMTUzRTM5OTczMzQ3MDlDQ0NERkFCQzAxQzkwM0U4NUQ1NDVBMUFGMjY5NzI0OTNBODQ5QkI3QTIzMzVFMTkyNjVCOEYwMUMyOUU0QzMzRTk4OEUwRUFFNThFQUQ2M0Y5RENEOTA3Njc3NkU2NkY0REQ2ODJCMEYzRTNBODg3NDk1MTlCMzNGNURFMDkxQkY0Njc4Njc4RDc1N0Q0OEFERUNDMjkwNkNFMjM5NTRFMkQwQUI5NDc5NzU1RjBGMQorOEVBQQorQTFERUZFRDgyQTg4NjY1NjBFODFBQjg5RUJCMUUzNDQwMzZCRUREQTREODRFQ0FGOEIKKzM1MDRCMzE4Cis2QzJGNTFDN0RFQzUxQUNGQzg4NENDOEE5MworRDU1OTkwQjA5RkRCMUZCQkFDNjQ0QzMyMjZFM0YwMTU1QjI3RTIzNDUwNTBGQzFDMjdCMjlBQzYwNDc5QTNDNUNDQjZCNjQ0RDYzREM0Nzk2MzQzNTUyRkY1MDQ2NjIzRjA0ODk2OEM4OTBCQTUxNzVGN0QwNTk1ODhFNjY3QkZDQzU3RjdDMDA4OUI1ODdEODIyMjdERjMwRjREMDhENzIxRkMxNkFDNUI5MDMzNDMzNUUwNjk1QkM1RjVDOAorOUIwQ0I2MEEKKzg4RkQyMzgxRjU1QTkxNUVDQzVGMEYwNDczRDUKKzk4M0M4NjcxNEMxQThFRDdGMjJCQ0ZENUJCMjAyMzRBNjRFNDY5MzM1N0I3Q0ZFNTcyNjdFNTgyNzg2MTc4NjM3MUQ1NzJERTU0QTZENkU5QTVFRUY3M0I0Mjc5Rjk0QTkwOTBGNjk3RDVEMkIyNTAyQ0U3NDdDMzNBOEI3MDgyMjQzNUJFNUQzNzdDOEQxRURFRDRBRkJBRTUyMURGMThGNjJGMDI3MURDRTExODYyNEJERTRENTlDMDQyQzc4RkEwQTRFNDA0QjcwRTFGNEEzNEFBOEU3RDI2M0M5N0JBNTMzQzU1RTMxRUI2OTZCQTVGRkI5ODhDMjMwMQorM0ZDQQorQTdCRDg4RkNDRUMwNjQ1REY2MUM0NTVFOTg2QUU4MTA5NDNFQUUxMTRCQTlBOEJDQTcyNENDRDREMjgwQjBFNTdDMDQzMDc5ODgxNUI3MENEQUJDCis4RUM5MTU5OQorOUUwRkFERjE2NTNDM0ZEREFGRjk3MjdBNjMKKzJFREQyNTA1NDg4MDdFMzRDN0E3MDEzRjAxREQzRjFFQUE1MkY4MTQ2QTc2REIyNDk1Q0EyRDYwRkIwQTg0RjY2QUFENEJBMTU3RDFFRUIzNjcwMTU3RDk3OEFEODc4MzdFQjI1NzlGRDY3MTA3ODA0NTE0RkFDMzlGNzVFMjU1OTIyQUE2QzRDQzQyMjZEQjBFOTc0Q0Q1MkRFMkM5NkEzOTJEQkVDQkVDQkU4RDQ4NjIyNEVCCitFRkYwQkZCNgorOUY3MjAwMkM2QTBDNUUwQzU2NkQ4MTI2MDM0NQorNzU2RTc5M0EwOTlEMEI1Q0I4MUUyOUU3NkRERDAzMzkzNDMyOUE3RDc3M0JGRjk3ODEzQTQzODdGQkI0RkQ1MkZGRjNGNEQ2MzUxRkVFRDZEN0Y4NEYwRkQ2NzYxODY2ODI5RDVDRUI4ODY0OEIxMTRBMEUzQzY0NTkxOUI5QURDRjIwRkJEODZCMUIwNEU3RjAzOUE3NUU3OTk4NDA5Rjg3RTNDQkQ3RUQ2NUNGQTY2QTRFRDVGQjc2RkRBNDA5Q0U3NEIzRDYyQTVFMDcxQThBQTc1MzFEODEyNDIwOTQzRTg2MTY0MzlCNEIKK0RFNDJGNzI5CisxRUIyMkZDMkEyRkJGODJFRkNDNEZENTdCMAorODkxRkJBMkVGMEE3NkI0OTY2NUI0NDZEOUQ3QjEwNUJDQjQ0NzkzRUZGNDlERUQ5QTE1RUQyMDNDRjc2NUUxRUU3QjhGNkY5OERBODE0RDRFM0Y4ODY1NjA2N0U5QTFBQjc4MTU4MjM0M0IwNUI0OEUzMzU1NDY4MEM2QTYwNkVGRTFFMEJCOTc5MUE5MTY1Qjc4Njk1MkZDNTM0RjA3QjIwNEUxM0VGQkM5RTQyCitBRkUyRTVEMworNTY5NDUxMjBCNzk2NTQ2RTVFMzE2NTU1REExQQorMjI3MDBBODc1QjU0NTEwN0RGREQ0OEE4RUUyRjNFQ0RDMzUyMEIzOEQ4QkQ3QUIyQ0E1QUUxQUM3NUI4NzAzMzc1Mzg2NkE4NzlFMjNBRTkwMUUyNDREN0FBQ0Y0MzUwQkFCRkVBQkMwMkE4QkJFNjUxMTc1MkY2MjMwMDBDNjk5RTJGQ0I5MEU5QjU0RDc0NjVFNUUwMjQ1MDA1MDIzNTY0MkRCOTMzRUNGN0JFMUJFRDI5QUM2NTgzMDcxOEM4MDJFQjE0QzcyREEwMkIwQkRGM0Q0NUVENzM0MjE1OTMxRDczNkRBODQzRDQ1QzEyMThERjRFNjNCQ0Q1CitCOTE4CisyOTg5QzBDMDY3OTE4NDRFNjY3QTFDQTY2RTQyNzYzNTgzMDBEMDNCQkU2RURGCiszNEU5NDU2NQorOUE2REMwMkNERjEwNjdDOTU3MkM0MUJDQzEKKzYwRkIxRDc5NDg2ODY3MTc1NTU1QTM3NjFDMUFBRUY4MzY3RjNCNjg4Qzc2NzM5MjcyNzg2M0Y5NUNDNkE2NTgyOEQ2MTZGODM4MTYxOUNDREUzMjYyRDBGMUU2MDBCQkFDRjJBMUZDOUExMUU1NTE0REMzODA5NzAyNTk2MURDOTE3MTU2OEVGNjI1NTQzMjYxMzc2QzEwRDRGNkJCODg5RjBBODU2Rjk4RjVGMjIyNERCNworNUJDNDJBNTEKK0Y3ODhBRjJGRDE1NkM3RUM3MTAxNjdDRjNGMDkKK0QxMUE4NzlBOTE0OEJCMjhCQzIyMjQ3NjI2RUU0REMwOUMwMzcwNzM2QjEyM0Q2MDJEQjY2MjYwNjM5MTkxQTMwQjM0NkEzQTA4Q0EyMDUyQ0YyOTdFQUYyQzNGMEVDNkRCNUU2MDk0ODlGRjk2QkQ3MDI4MkE4MDMxMjk1NTU2ODhDMjYwOEZEMTJGMDVCOUQzMzE2NkFFRDk5ODk0RkE0QjVCQkMzRjA2NzkzRDBEMTgzOENGMkMzQzAwMjBGMDk5NkU5NDE0NjAyNkEwQzc5RDMwNzRDNkU2NDFCNQorQTlBM0JEOUQKK0Q5NTE5RkZBRDgyNDZERjBEMjYxOERGN0Q1MUMKKzQ5MDVCMDFBM0NBRjIyMEYKKzEyNkUzRUVGCis1NTJGM0Q5QzRFMDQ3NTlENUVGQjVENDRGQUQwMDMzRDY1MDE2MjQyNEE4QzExRDE3N0M5MDIxNDQxMEZFQTc2NUJEQQorMzRERTEwRDk4ODQ5NzkzQzU2RjNCRUMwMjlCNkZGNEQ3NDBFMEI5MTU5MERCMjgxNUREQzQwRTlGMzUxOTg5RDc4QzAxMEQ1NDUxRgorQjUxNkQwNDFCQUZDNTExNEJBNUE5MTM5Rjc4QzdCQkYwMTBFMzE5QzJFNkFGQ0I5NUEzOTA2CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJpIDEyLjAwIC9QU093c3RkdXRjaGkgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNGIgMTQuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxNjIxMmYyYjIxMmQyMjBhMDEwZjAxMTAyMTI5MWYyNDI4MWQyZDI2MDEyMjJhMmQwMTE1MjExZDJlMzAyZDI1MjkyMzAxMTYyMTJmMzIyYTJkMjYwMTE4PiAyMjA3IDU1OCAwIDczODQgLTEgcworPDIxMmQyMjJhMmQyODFkMjkxZjIxPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwOT4gOTQzNCAxMzM4NSAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI2NyAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjY3IDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyNjcgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjY3IDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxNGIgU0YKKzwwYTEwMGUxYzE0MTgxNz4gMTI3MSAxNDU4IDAgMjA1NSAtMSBzCis8MDAwMzAyMDAwNzE3MWIxYzBjMTUxNTE0MTcxMjAwMDgxMDFjMTkxMDFhMTE+IDIwNTUgMTQ1OCAzIDQyNjggMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE2MjEyZjJiMjEyZDIyPiAxMjcxIDIwMzggMCAxOTgwIC0xIHMKKzwwMDJiMmQyNTI4MWQyZDM0MDAyMjJhMmQyODAwMmEyMjAwMjAyNTJlMmYyZDI1MWUzMDJmMjUyYTI5MDAyNTJlMDAyZTJhMzAyZDFmMjEwMDFmMmEyMDIxMDcwMDFhMjQyNTJlMDAyNTJlMDAyZjJhMDAxZDI3MjcyYTMyMDAyNTI5MmUyZjFkMjcyNzFkMmYyNTJhMjkwMDJhMjkwMDJlMzQyZTJmMjEyODJlMDAyYTJmMjQ+IDE5ODAgMjAzOCAxNSA5NDYxIDAgcworPDM3PiA5NDYxIDIwMzggMCA5NTMxIC0xIHMKKzwyMTJkPiAxMjcxIDIyODMgMCAxNDU3IC0xIHMKKzwwMDJmMjQxZDI5MDAyZjI0MmEyZTIxMDAyZjJhMDAzMjI0MjUxZjI0MDAyZjI0MjEwMDFkMzAyZjI0MmEyZDJlMDAyNDFkMzEyMTAwMWQxZjFmMjEyZTJlMDAxZDI5MjA+IDE0NTcgMjI4MyA5IDU4NTYgMCBzCis8MDAyZjI0MzAyZTAwMmYyNDIxMDAxZDFlMjUyNzI1MmYzNDAwMmYyYTAwMWYyZDIxMWQyZjIxMDAxZTI1MjkxZDJkMjUyMTJlMDcwMDFhMjQyMTJkMjE+IDU4NTYgMjI4MyA3IDk1MzEgMCBzCis8MWQyZDIxPiAxMjcxIDI1MjggMCAxNTYyIC0xIHMKKzwwMDJmMzIyYTAwMzIxZDM0MmUwMDJmMmEwMDI1MjkyZTJmMWQyNzI3MDAyOTIxMmYyYjIxMmQyMjA3MDAxYTI0MjEwMDIyMjUyZDJlMmYwMDJkMzAyOTJlMDAyZjI0MjEwMDI5MjEyZjJiMjEyZDIyMDAyZTIxMmQzMTIxMmQwMDJiMmQyYTIzMmQxZDI4MDUwMDI5MjEyZjJlMjEyZDMxMjEyZDA1MDAxZDJlMDAxZDAwMWYyNDI1MjcyMD4gMTU2MiAyNTI4IDE2IDk1MzEgMCBzCis8MmEyMj4gMTI3MSAyNzczIDAgMTQ1NyAtMSBzCis8MDAyNTI5MjEyZjIwMDUwMDMyMjQyNTFmMjQwMDJkMjEyYzMwMjUyZDIxMmUwMDJmMjQxZDJmMDAyZjI0MjEwMDI1MjkyZTJmMWQyNzI3MjEyZDAwMmEyMjAwMjkyMTJmMmIyMTJkMjIwMDFlMjEwMDFkMWUyNzIxMDAyZjJhMDAyMTIwMjUyZjAwMmYyNDIxMDAyMjI1MjcyMTJlMDA+IDE0NTcgMjc3MyAxNSA4MTI0IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDMwOTE1MDcwMzE0MDkxMzE3MGQwNzA5MTQ+IDgxMjQgMjc3MyAwIDkxMzcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDFkMjkyMD4gOTEzNyAyNzczIDEgOTUzMSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDkxNTA3MDMwZDEwMDkxNTA4MDIwNzExMTAwYT4gMTI3MSAzMDE4IDAgMjUwMCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMDMyYTJkMDAyZjI0MjEyNTJkMDAyMTJjMzAyNTMxMWQyNzIxMjkyZjA0MDcwMDFhMjQyMTAwMmUyMTFmMmEyOTIwMDAyNTJlMDAyZjJhMDAyZDMwMjkwMDI5MjEyZjJlMjEyZDMxMjEyZDAwMWQyZTAwMWQwMDJlMmYxZDI5MjAxZDI3MmEyOTIxMDAyMDFkMjEyODJhMjkwNz4gMjUwMCAzMDE4IDEzIDk1MzEgMCBzCis8MWEyNDI1MmU+IDEyNzEgMzI2MyAwIDE2NjUgLTEgcworPDAwMmUyMTFmMmEyOTIwMDAyODIxMmYyNDJhMjAwMDIwMmEyMTJlMDAyOTJhMmYwMDJkMjEyYzMwMjUyZDIxMDAyMTIwMjUyZjAwMWYxZDJiMWQxZTI1MjcyNTJmMjUyMTJlMDAyYTI5PiAxNjY1IDMyNjMgOCA2MzU5IDAgcworPDAwMDA+IDYzNTkgMzI2MyAyIDY0NTYgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA5MTUwNzAzMTQwOTEzMTcwZDA3MDkxND4gNjQ1NiAzMjYzIDAgNzQ2OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMWQyOTIwMDA+IDc0NjkgMzI2MyAyIDc5MDMgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA5MTUwNzAzMGQxMDA5MTUwODAyMDcxMTEwMGE+IDc5MDMgMzI2MyAwIDkxMzIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwNzAwMWUzMDJmPiA5MTMyIDMyNjMgMSA5NTMxIDAgcworPDIwMmEyMTJlPiAxMjcxIDM1MDcgMCAxNjg5IC0xIHMKKzwwMDI4MjExZDI5PiAxNjg5IDM1MDcgMSAyMjI1IDAgcworPDAwMmYyNDFkMmYwMDM0MmEzMDAwMjgzMDJlMmYwMDJkMjEyODIxMjgxZTIxMmQwMDJmMmEwMDJkMzAyOTAwMmYyNDIxMDAyOTIxMmYyZTIxMmQzMTIxMmQwMDJiMmQyYTIzMmQxZDI4MDAyMTMzMmIyNzI1MWYyNTJmMjczNDA3MDAxYTI0MjEwMDJlMjExZjJhMjkyMDAwMjgyMTJmMjQ+IDIyMjUgMzUwNyAxMyA5NDYxIDAgcworPDM3PiA5NDYxIDM1MDcgMCA5NTMxIC0xIHMKKzwyYTIwPiAxMjcxIDM3NTIgMCAxNTAzIC0xIHMKKzwwMDI1MmUwMDJkMjEyYzMwMjUyZDIxMjAwMDIyMmEyZDAwMWI+IDE1MDMgMzc1MiA0IDMxMDcgMCBzCis8MjUyOTIwMmEzMjJlMDAxNjFhPiAzMDk5IDM3NTIgMSA0MDg0IDAgcworPDA3PiA0MDUzIDM3NTIgMCA0MTA2IC0xIHMKKzwxYTI0MjUyZT4gMTI3MSA0MDg2IDAgMTY2NSAtMSBzCis8MDAyODFkMjkzMDFkMjcwMDFkMmUyZTMwMjgyMTJlMDAyZjI0MWQyZjAwMmYyNDJhMmUyMTAwMzIyNTJlMjQyNTI5MjMwMDJmMmEwMDI4MjExZDJlMzAyZDIxMDAyOTIxMmYzMjJhMmQyNjI1MjkyMz4gMTY2NSA0MDg2IDggNzA0NCAwIHMKKzwwMDJiMjEyZDIyMmEyZDI4MWQyOTFmMjEwMDFkMjcyZDIxMWQyMDM0MDAyNjI5MmEzMj4gNzA0NCA0MDg2IDMgOTUzMSAwIHMKKzwyNDJhMzI+IDEyNzEgNDMzMSAwIDE2NDYgLTEgcworPDAwMmYyYTAwMzAyZTIxMDAxZDI5MmEyOTM0MjgyYTMwMmUwMDEyMWExOD4gMTY0NiA0MzMxIDQgMzc3OCAwIHMKKzwwNz4gMzc0MyA0MzMxIDAgMzc5NiAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwNjEwMWMxYzE0MTcxMjAwMWMxMzEwMDAxNzEwMWMxOTEwMWExMTAwMGQxNDFjMWIwMDExMWExODE2MDAxYzEzMTAwMDA3MTcxYzEwMWExNzEwMWM+IDEyNzEgNDc4NiA2IDUwMzEgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDEyPiAxMjcxIDUxODYgMCAxNDAyIC0xIHMKKzwyYTJkPiAxMzk0IDUxODYgMCAxNTkxIC0xIHMKKzwwMDJmMjQyYTJlMjEwMDJiMjEyYTJiMjcyMTAwMWYyYTI5MjkyMTFmMmYyMTIwMDAyZjJhMDAyZjI0MjEwMDE0MjkyZjIxMmQyOTIxMmYwNTAwMjkyMTJmMmIyMTJkMjIwMDI1MmUwMDFkMzExZDI1MjcxZDFlMjcyMTAwMzEyNTFkMDAxYjFiMWI+IDE1OTEgNTE4NiAxMSA3ODM3IDAgcworPDA3MDAxNDIyMDAzNDJhMzAwMDFkMmQyMTAwMjkyYTJmMDAxZjJhMjk+IDc4MDYgNTE4NiA1IDk0NjEgMCBzCis8Mzc+IDk0NjEgNTE4NiAwIDk1MzEgLTEgcworPDI5MjExZjJmMjEyMD4gMTI3MSA1NDMxIDAgMTg3NSAtMSBzCis8MDAyZjJhMDAyZjI0MjEwMDE0MjkyZjIxMmQyOTIxMmYwMDJlMzAxZjI0MDAyZjI0MWQyZjAwMzQyYTMwMDAxZjFkMjkwMDMwMmUyMTAwMWIxYjFiPiAxODc1IDU0MzEgOSA1ODY4IDAgcworPDA1MDAyZjI0MjEyOT4gNTgzNyA1NDMxIDEgNjM0NSAwIHMKKzwwMDM0MmEzMDAwMjgxZDM0MDAxZTIxMDAxZDFlMjcyMTAwMmYyYTAwMmQyMTJmMmQyNTIxMzEyMTAwMjkyMTJmMmIyMTJkMjI+IDYzNDUgNTQzMSA3IDk1MzEgMCBzCis8MzEyNTFkPiAxMjcxIDU2NzYgMCAxNTMwIC0xIHMKKzwwMDEyMWExODAwMmEyZDAwMWQyOTAwMTIxYTE4MDAyODFkMjUyNzAwMmUyMTJkMzEyMTJkMDcwMDE0MjIwMDFkMjcyNzAwMjEyNzJlMjEwMDIyMWQyNTI3MmUwNTAwMzQyYTMwMDAxZjFkMjkwMDJlMjEyOTIwMDAyMTI4MWQyNTI3MDAyZjJhMDAxNjIxMmYyYjIxMmQyMjAwMTk+IDE1MzAgNTY3NiAxNyA4MzYxIDAgcworPDIxMmMzMDIxMmUyZjAwMGIyOTIxMmY+IDgzNTMgNTY3NiAxIDk0NjEgMCBzCis8Mzc+IDk0NjEgNTY3NiAwIDk1MzEgLTEgcworPDJiMjEyZDIyMDYyZDIxMmMzMDIxMmUyZjBlMjkyMTJmMmIyMTJkMjIwNzFmMzAyYjA3MjQyYjA3MWYyYTI4MGQwNz4gMTI3MSA1OTIxIDAgNDY5MiAtMSBzCis8MTQyMj4gMTI3MSA2MjU0IDAgMTQyMiAtMSBzCis8MDAzNDJhMzAwMDI0MWQzMTIxMDAxZDAwMWIxYjFiMDAxZTJkMmEzMjJlMjEyZDA1MDAzNDJhMzAwMDFmMWQyOTAwMmQyMTJmMmQyNTIxMzEyMTAwMjkyMTJmMmIyMTJkMjIwMDMxMjUxZDAwMmYyNDIxMDAxNjIxMmYyYjIxMmQyMjAwMTg+IDE0MjIgNjI1NCAxMyA3NTcyIDAgcworPDFkMjMyMTA3MDAxNDJmMDAyNTJlMDAyNzJhMWYxZDJmMjEyMDAwMWQyZj4gNzU2NCA2MjU0IDQgOTIxMSAwIHMKKzwwMDBiMWQ+IDkyMTEgNjI1NCAxIDk1MzEgMCBzCis8MjQyZDIxMjIwYzAyMjQyZjJmMmIwYTA4MDgzMjMyMzIwNzFmMzAyYjA3MjQyYjA3MWYyYTI4MDgyOTIxMmYyYjIxMmQyMjA4MTYyMTJmMmIyMTJkMjIxOD4gMTI3MSA2NDk5IDAgNTYwNiAtMSBzCis8MWQyMzIxMDcyNDJmMjgyNzAyMGQwMDFhMjQyMTAwMTYyMTJmMmIyMTJkMjI+IDU1OTggNjQ5OSAyIDc4MDIgMCBzCis8MDAxOD4gNzgwMiA2NDk5IDEgNzk2NyAwIHMKKzwxZDIzMjEwMDBiMDgxZDBkMDcwMDEyPiA3OTU5IDY0OTkgMiA5MDQ4IDAgcworPDJhMjcyNzJhMzI+IDkwNDAgNjQ5OSAwIDk1MzEgLTEgcworPDJmMjQyMT4gMTI3MSA2NzQ0IDAgMTU2MSAtMSBzCis8MDAyNzI1MjkyNjJlMDAyMjJkMmEyODAwMmYyNDFkMmYwMDJiMWQyMzIxMDc+IDE1NjEgNjc0NCA0IDM0NzggMCBzCis8MTYyMTJmMmIyMTJkMjI+IDEyNzEgNzA3NyAwIDE5ODAgLTEgcworPDAwMmUyYTMwMmQxZjIxMDAxZTI1MmYyZTAwMWQyZDIxMDAxZDI3MmUyYTAwMWQzMTFkMjUyNzFkMWUyNzIxMDAzMTI1MWQwMDFkMjkyYTI5MzQyODJhMzAyZTAwMTIxYTE4MDAyMjJkMmEyODAwPiAxOTgwIDcwNzcgMTAgNjgwMiAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDExMWMxOTAyMGUxZDE5MDIxMzE5MDIwZTE4MTY+IDY4MDIgNzA3NyAwIDgxNTYgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDI1MjkwMDJmMjQyMTAwMjAyNTJkMjExZjJmMmEyZDM0PiA4MTU2IDcwNzcgMyA5NTMxIDAgcword3N0OmR1dGNoMTJpIFNGCis8MDgwZDE0MTUwMzEwMDkxNTE4MTExMzBlMGQxMDBiMDMwNjA5MTAwNzBjMGYwNTEzMGUxND4gMTI3MSA3MzIyIDAgMzcwNyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA3MDAwMDFjPiAzNzA3IDczMjIgMiAzOTg2IDAgcworPDJhMzAwMDJlMjQyYTMwMjcyMDAwMzAyZTIxMDA+IDM5NjAgNzMyMiAzIDUxOTMgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwZDE0MTcwYzFhMWUwMDE2MTgwZjEwPiA1MTkzIDczMjIgMSA2MzEwIDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDJmMmQxZDI5MmUyMjIxMmQyZTAwMzIyNDIxMjkwMDFlMmQyNTI5MjMyNTI5MjMwMDJhMzEyMTJkMDAyZjI0MjEwMDFlMjUyZjJlPiA2MzEwIDczMjIgNiA5NTMxIDAgcworPDFkMmU+IDEyNzEgNzU2NyAwIDE0NTcgLTEgcworPDAwMzQyYTMwMDAzMjI1MjcyNzAwMWUyMTAwMjMyZDFkMWUxZTI1MjkyMzAwMmYyNDIxMDAyNzFkMmYyMTJlMmYwMDFmMmEyYjM0MDAyYTIyMDAyZjI0MjUyZTAwMjAyYTFmMzAyODIxMjkyZjAwMWQyNzJhMjkyMzAwMzIyNTJmMjQwMDJmMjQyMTAwMjkyMTJmMmIyMTJkMjIwMDExMDAyZTJhMzAyZDFmMjEwMDIyMjUyNzIxMmUwNz4gMTQ1NyA3NTY3IDE3IDk1MzEgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwODA5MGIwNT4gMTI3MSA3OTAxIDAgMTg2NiAtMSBzCis8MDQwMD4gMTg3MCA3OTAxIDEgMTk3NSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxNzI3MjAyMTJkMDAzMTIxMmQyZTI1MmEyOTJlMDAyYTIyPiAxOTc1IDc5MDEgMyAzNTY4IDAgcworPDAwMjkyMTJmMmIyMTJkMjIwMDMyMjEyZDIxMDAxZDMxMWQyNTI3MWQxZTI3MjEwMDMxMjUxZDAwMWQyOTJhMjkzNDI4MmEzMDJlMDAxMjFhMTgwMDIyMmQyYTI4MDA+IDM1NjggNzkwMSA4IDc5NzIgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwZTE4MTUwMjEzMTkwMjBlMTgxNj4gNzk3MiA3OTAxIDAgODk1MSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMzAyOTIwMjEyZD4gODk1MSA3OTAxIDEgOTUzMSAwIHMKKzwyZjI0MjE+IDEyNzEgODE0NSAwIDE1NjEgLTEgcworPDAwMjAyNTJkMjExZjJmMmEyZDM0MDA+IDE1NjEgODE0NSAyIDI0NDcgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwODBkMTQxNTAzMTAwOTE1MTgxMTEzMGUwZDEwMGIwMzA2MDkxMDA3MGMwZjA1MTMwZTE0MDM+IDI0NDcgODE0NSAwIDQ5NDEgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwNzAwMTcyZjI0MjEyZDAwMmUyMTJkMzEyMTJkMmUwMDJhMjkwMDJmMjQyMTAwMTQyOTJmMjEyZDI5MjEyZjAwMjgxZDM0PiA0OTQxIDgxNDUgNiA4MDIxIDAgcworPDAwMjQxZDMxMjEwMDFmMmEyYjI1MjEyZTA3MDAxYTI0MjE+IDgwMjEgODE0NSAzIDk1MzEgMCBzCis8MzYyYjJkMjUyODFkMmQzNDAyPiAxMjcxIDgzOTAgMCAyMTc5IC0xIHMKKzwwMDJiMjcxZDFmMjEwMDJmMmEwMDIzMmEwMDIyMmEyZDAwMjkyMTJmMmIyMTJkMjIwMDFlMjUyZjJlMDAyNTJlMDAyMjJmMmIwNzFmMzAyYjA3MjQyYjA3MWYyYTI4MDc+IDIxNzkgODM5MCA4IDYyODAgMCBzCis8MWIyNDI1MjcyMT4gMTI3MSA4NzI0IDAgMTgxNyAtMSBzCis8MDAyZjI0MjEwMDI5MjEyZjJiMjEyZDIyMDAyZTJhMzAyZDFmMjEwMDFlMjUyZjJlMDAxZjFkMjkwMDFlMjEwMDJiMjcxZDFmMjEyMDAwMWQyOTM0MzIyNDIxMmQyMT4gMTgxNyA4NzI0IDggNjA0OSAwIHMKKzwwMDJhMjkwMDJmMjQyMTAwMmUzNDJlMmYyMTI4MDUwMDJmMjQyNTJlMDAyODFkMjkzMDFkMjcwMDMyMjUyNzI3MDAxZDJlMmUzMDI4MjE+IDYwNDkgODcyNCA3IDk1MzEgMCBzCis8MmYyNDFkMmY+IDEyNzEgODk2OSAwIDE2MzAgLTEgcworPDAwMmYyNDIxMDAyZTJhMzAyZDFmMjEwMDFlMjUyZjJlMDAxZDJkMjEwMDJiMjcxZDFmMjEyMDAwMjUyOTAwMmYyNDIxMDAyMDI1MmQyMTFmMmYyYTJkMzQ+IDE2MzAgODk2OSA4IDU0MzcgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMDAzMTExMjE1MDMxMDA5MTUxMjA5MTMwYTAzMTQxMzA3PiA1NDM3IDg5NjkgMSA2Nzg0IDAgcword3N0OmR1dGNoMTIgU0YKKzwwNzAwMDAxOD4gNjc4NCA4OTY5IDIgNzA3NiAwIHMKKzwyZDIxMzEyNTJhMzAyZTAwMmQyMTMxMjUyZTI1MmEyOTJlMDAyYTIyMDAyOTIxMmYyYjIxMmQyMj4gNzA3MiA4OTY5IDMgOTUzMSAwIHMKKzwzMjIxMmQyMT4gMTI3MSA5MjE0IDAgMTcwNSAtMSBzCis8MDAxZDJlMmUzMDI4MjEyMD4gMTcwNSA5MjE0IDEgMjUyNyAwIHMKKzwwMDJmMmEwMDFlMjEwMDJiMjcxZDFmMjEyMDAwMjUyOTAwPiAyNTI3IDkyMTQgNSAzOTE0IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDMxNjE0MTMwMzA5MTUwNzAzMTAwOTE1MDQxMjA5MTMwYTAzMTQxMzA3PiAzOTE0IDkyMTQgMCA1NjAwIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDUwMDFlMzAyZjAwMmYyNDI1MmUwMDI0MWQyZTAwMWUyMTIxMjkwMDFmMjQxZDI5MjMyMTIwMDAyZjJhMDAxZTIxMmYyZjIxMmQwMDIxMjgyYjI0MWQ+IDU2MDAgOTIxNCA4IDk0NjEgMCBzCis8Mzc+IDk0NjEgOTIxNCAwIDk1MzEgLTEgcworPDJlMjUzNTIxPiAxMjcxIDk0NTggMCAxNjA3IC0xIHMKKzwwMDJmMjQxZDJmMDAyOTIxMmYyYjIxMmQyMjAwMjUyZTAwMjkyYTJmMDAxZDI5MDAyYTIyMjIyNTFmMjUxZDI3MDAxMzIxMzIyNzIxMmYyZjA2MTg+IDE2MDcgOTQ1OCA3IDUzODYgMCBzCis8MWQxZjI2MWQyZDIwMDAyYjJkMmEyMDMwMWYyZjA3MDAxYz4gNTM3OCA5NDU4IDIgNzAzNiAwIHMKKzwyYTMwMDAxZDJkMjEwMDIyMmQyMTIxPiA3MDEwIDk0NTggMiA4MDIwIDAgcworPDAwMmYyYTAwMmIyNzFkMWYyMTAwMjkyMTJmMmIyMTJkMjI+IDgwMjAgOTQ1OCAzIDk1MzEgMCBzCis8MzIyNDIxMmQyMTMxMjEyZD4gMTI3MSA5NzAzIDAgMjEwMyAtMSBzCis8MDAzNDJhMzAwMDI3MjUyNjIxMDUwMDJiMmQyYTMxMjUyMDIxMjAwMDJmMjQxZDJmMDAzNDJhMzAwMDI4MWQyNjIxMDAyZjI0MjEwMDI5MjExZjIxMmUyZTFkMmQzNDAwMjgyYTIwMjUyMjI1MWYxZDJmMjUyYTI5MmUwMDJmMmEwMDJmMjQyMTAwMmUxZjJkMjUyYjJmMmUwNz4gMjEwMyA5NzAzIDEyIDg5MjMgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwNzE3MWIxYzBjMTUxNTE0MTcxMjAwMWMxMzEwMDAwZDE0MWMxYj4gMTI3MSAxMDE1OSAyIDI4OTAgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE3MjkxZjIxPiAxMjcxIDEwNTU4IDAgMTc1NyAtMSBzCis8MDAzNDJhMzAwMDI0MWQzMTIxMDAyYjI3MWQxZjIxMjAwMDJmMjQyMTAwMjkyMTJmMmIyMTJkMjIwMDJlMmEzMDJkMWYyMTAwMWUyNTJmMmUwMDJhMjkyZjJhMDAyZjI0MjEwMDJlMzQyZTJmMjEyODA1MDAyNTJmMDAyNTJlMDAyOTIxMWYyMTJlMmUxZDJkMzQwMDJmMmEwMDFmMmEyODJiMjUyNzIxMDAyZjI0MjEyOD4gMTc1NyAxMDU1OCAxNiA5NTMxIDAgcworPDFkMjkyMD4gMTI3MSAxMDgwMyAwIDE2MDggLTEgcworPDAwMmIyMTJkMjIyYTJkMjgwMDJlMmEyODIxMDAyMTIwMjUyZjI1MjkyMzAwMmYxZDJlMjYyZTA3MDAxYTI0MjUyZTAwMmUyMTFmMmYyNTJhMjkwMDFkMmUyZTMwMjgyMTJlMDAyZjI0MWQyZjAwMzQyYTMwMDAyNDFkMzEyMTAwMjEyNzIxMWYyZjIxMjAwMDJmMmEwMDI1MjkyZTJmMWQyNzI3MDAyZjI0MjE+IDE2MDggMTA4MDMgMTQgOTUzMSAwIHMKKzwxZTIxMjkxZjI0MjgxZDJkMjY+IDEyNzEgMTEwNDggMCAyMjg0IC0xIHMKKzwwMDJlMjEyZDMxMjEyZDA1MDAyOTIxMmYyZTIxMmQzMTIxMmQwNTAwMWQyZTAwMWQwMDFmMjQyNTI3MjAwMDJhMjIwMDI1MjkyMTJmMjAwNz4gMjI4NCAxMTA0OCA3IDU1ODQgMCBzCis8MWEyNDIxPiAxMjcxIDExMzgyIDAgMTYzMSAtMSBzCis8MDAyOTIxMmYyYjIxMmQyMjAwMjAyNTJlMmYyZDI1MWUzMDJmMjUyYTI5MDAyNTI5MWYyNzMwMjAyMTJlMDAxZDAwMjgxZDI2MjEyMjI1MjcyMTAwMzIyNDI1MWYyNDAwMWQyZTJlMzAyODIxMmUwMDJmMjQyMTAwMjEzMzI1MmUyZjIxMjkxZjIxMDAyYTIyMDAyZjI0MjEwMDIwMjUyZDIxMWYyZjJhMmQzNDAwPiAxNjMxIDExMzgyIDEzIDkxMzggMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzExMTIxNTAzPiA5MTM4IDExMzgyIDAgOTUzMSAtMSBzCis8MTAwOTE1MTIwOTEzMGE+IDEyNzEgMTE2MjcgMCAxODY4IC0xIHMKKzwwMj4gMTg2NCAxMTYyNyAwIDE5MTcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDE0MjIwMDM0MmEzMDAwMjAyYTAwMjkyYTJmMDAzMjI1MmUyNDAwMmYyYTAwMjQxZDMxMjEwMDI5MjEyZjJiMjEyZDIyMDAyNTI5MmUyZjFkMjcyNzIxMjAwMDJmMjQyMTJkMjEwNTAwMjUyZjAwMzIyNTI3MjcwMDFlMjEwMDI5MjExZjIxMmUyZTFkMmQzNDAwMjIyYTJkMDAzNDJhMzAwMDJmMmEwMDIxMjAyNTJmPiAxOTE3IDExNjI3IDE4IDk1MzEgMCBzCis8MmYyNDIxPiAxMjcxIDExODcxIDAgMTU2MSAtMSBzCis8MDAyODFkMjYyMTIyMjUyNzIxMDcwMDFhPiAxNTYxIDExODcxIDIgMjY1NiAwIHMKKzwyYTAwMWQyZTJlMjUyZTJmMDAyNTI5MDAyZjI0MjUyZTAwMmIyZDJhMWYyMTJlMmUwNTAwMmExZTMxMjUyYTMwMmUwMDI4MWQyZDI2MjEyZDJlMDAyNDFkMzEyMTAwMWUyMTIxMjkwMDJiMjcxZDFmMjEyMDAwMjUyOTAwMmYyNDIxMDAyODFkMjYyMTIyMjUyNzIxMDAyZjJhPiAyNjI1IDExODcxIDEzIDk1MzEgMCBzCis8MjUyOTIwMjUxZjFkMmYyMT4gMTI3MSAxMjExNiAwIDE5OTEgLTEgcworPDAwMzIyNDFkMmYwMDI4MzAyZTJmMDAxZTIxMDAxZjI0MWQyOTIzMjEyMDA3MDAwZjI3MmUyYTA1MDAyZTJhMjgyMTAwMmUzNDJlMmYyMTI4MmUwMDJkMjEyYzMwMjUyZDIxPiAxOTkxIDEyMTE2IDggNjUzNSAwIHMKKzwwMDIwMjUyMjIyMjEyZDIxMjkyZjAwMWYyYTI4MmIyNTI3MjEwMDJlMzIyNTJmMWYyNDIxMmUwMDFkMjkyMDAwMjcyNT4gNjUzNSAxMjExNiA1IDk0NjEgMCBzCis8Mzc+IDk0NjEgMTIxMTYgMCA5NTMxIC0xIHMKKzwxZTJkMWQyZDI1MjEyZTA3PiAxMjcxIDEyMzYxIDAgMTk0OCAtMSBzCis8MDAxMj4gMTk0OCAxMjM2MSAxIDIxMTMgMCBzCis8MmEyZDAwMmYyNDJhMmUyMTAwMmUzNDJlMmYyMTI4MmUwMDMyMjQyMTJkMjEwMDJmMjQyMTAwMmQyMTJjMzAyNTJkMjEyODIxMjkyZjJlMDAzMjIxMmQyMTAwMjYyOTJhMzIyOTAwMmYyYTAwMmYyNDIxMDAxZDMwMmYyNDJhMmQyZTA1MDAxZjJhMjgyODIxMjkyZjJlMDAyNDFkMzEyMT4gMjEwNSAxMjM2MSAxMiA5NTMxIDAgcworPDFlMjEyMTI5PiAxMjcxIDEyNjA2IDAgMTcxMCAtMSBzCis8MDAxZDIwMjAyMTIwMDAyZjJhMDAyZjI0MjEwMDI4MWQyNjIxMjIyNTI3MjEwNz4gMTcxMCAxMjYwNiA0IDM3OTMgMCBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoNikgNgorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDM2IHB1dAorZHVwIDQgL0MwMDQwIHB1dAorZHVwIDUgL0MwMDQxIHB1dAorZHVwIDYgL0MwMDQ0IHB1dAorZHVwIDcgL0MwMDQ1IHB1dAorZHVwIDggL0MwMDQ2IHB1dAorZHVwIDkgL0MwMDQ3IHB1dAorZHVwIDEwIC9DMDA0OCBwdXQKK2R1cCAxMSAvQzAwNDkgcHV0CitkdXAgMTIgL0MwMDUwIHB1dAorZHVwIDEzIC9DMDA1NCBwdXQKK2R1cCAxNCAvQzAwNTggcHV0CitkdXAgMTUgL0MwMDYwIHB1dAorZHVwIDE2IC9DMDA2MiBwdXQKK2R1cCAxNyAvQzAwNjUgcHV0CitkdXAgMTggL0MwMDY2IHB1dAorZHVwIDE5IC9DMDA2NyBwdXQKK2R1cCAyMCAvQzAwNjggcHV0CitkdXAgMjEgL0MwMDY5IHB1dAorZHVwIDIyIC9DMDA3MSBwdXQKK2R1cCAyMyAvQzAwNzIgcHV0CitkdXAgMjQgL0MwMDczIHB1dAorZHVwIDI1IC9DMDA3NyBwdXQKK2R1cCAyNiAvQzAwNzggcHV0CitkdXAgMjcgL0MwMDc5IHB1dAorZHVwIDI4IC9DMDA4MCBwdXQKK2R1cCAyOSAvQzAwODIgcHV0CitkdXAgMzAgL0MwMDgzIHB1dAorZHVwIDMxIC9DMDA4NCBwdXQKK2R1cCAzMiAvQzAwODUgcHV0CitkdXAgMzMgL0MwMDg4IHB1dAorZHVwIDM0IC9DMDA5NSBwdXQKK2R1cCAzNSAvQzAwOTcgcHV0CitkdXAgMzYgL0MwMDk4IHB1dAorZHVwIDM3IC9DMDA5OSBwdXQKK2R1cCAzOCAvQzAxMDAgcHV0CitkdXAgMzkgL0MwMTAxIHB1dAorZHVwIDQwIC9DMDEwMiBwdXQKK2R1cCA0MSAvQzAxMDMgcHV0CitkdXAgNDIgL0MwMTA0IHB1dAorZHVwIDQzIC9DMDEwNSBwdXQKK2R1cCA0NCAvQzAxMDcgcHV0CitkdXAgNDUgL0MwMTA4IHB1dAorZHVwIDQ2IC9DMDEwOSBwdXQKK2R1cCA0NyAvQzAxMTAgcHV0CitkdXAgNDggL0MwMTExIHB1dAorZHVwIDQ5IC9DMDExMiBwdXQKK2R1cCA1MCAvQzAxMTMgcHV0CitkdXAgNTEgL0MwMTE0IHB1dAorZHVwIDUyIC9DMDExNSBwdXQKK2R1cCA1MyAvQzAxMTYgcHV0CitkdXAgNTQgL0MwMTE3IHB1dAorZHVwIDU1IC9DMDExOCBwdXQKK2R1cCA1NiAvQzAxMTkgcHV0CitkdXAgNTcgL0MwMTIwIHB1dAorZHVwIDU4IC9DMDEyMSBwdXQKK2R1cCA1OSAvQzAxMjIgcHV0CitkdXAgNjAgL0MwMTI3IHB1dAorZHVwIDYxIC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5MjAgNzY2XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjI0N0RBN0ZDOTFCOUZFQkE4MjkyNUM3QjdBOUIwRDIyREQxCis3QzBFOUE3MDkzNjA4RjE0MTA1NDZGMDAKKzA5Rjk4NTMxQjU5NTlCNTg4QworNzlDQzMxMDMKKzA0OTUyQTI1OUI4MUU0NTIxMTFCMTYxODg5RjIKKzMzNDdENUI2MEJDQkVFOURFQTMyMEVDMzZGOEY4RTQ0ODVDMDNDRDZFRUIzRjg4MjE4MDA4NkNFMDQ3MUUxQ0ExQTRGMkVCMUQ3OTg1NEZBRUM5RTA5NUZFMjZDRkJDQTEzM0UzNjEyNENERUJCN0Q4QTg1MzAwQUQxRjBGOTE2RUU3MzBDQjlDMjEwMzYxQjgyN0ZGNjM3NTEwQTQ3QTIwQjQ3N0Q2Nzg4RDBDNEU0OEIxMTk1QzMyOTM3OEFBMUQ4NTc0QTZGRDZCRTg0Cis4QzFDN0M4QworODgwNTQ3OTVGRkU3RDgzODhCQTUzMjRBNDFBMgorQzJFOTg4NTQ5NTRDMkY5REEzQzcwRDEyRTJGOTBDQkI4RTdBMjZBRjYwNUIxMDRFNDI0NUJENTFFNTg1QzY5OTUzRDcyNkJEM0NBQjUxRUM1RjFBNDdGQTI4NzUzOTE5OEU4MTg1NEQ0Rjk2RTZDRUUyQTkzNkZBMjk2OEJGMzI3QzNBMTk4RDFBNTlGRkExNzMwOTJCNjc0RjYyMDhCRTcwQTlDM0Y4OEJDOUIzQjUzQzY3MEY5RDg5MjFFRTlBNTY1MEM5RTIxRThGRTNGMDdFNzg3MUY3NTlGODA3QTkxRTQ3RENDMEZCRkI3NjYwNTRDQTFCRTJDRDU4CitGREM3Cis3RjRCRTFEMUNCQkFDQTEyQzA0NDYzQzYKK0FEMzRFNkVGCitCQzU5RUUwOURFQTA2RjAxNkVDMDI1NUZEQworQ0UwQjIwOEY2QkRENjM1MTlDMzQxNzYxRDk0OTc3N0EzRUM0Qzg5OTg3M0RGRDJEQ0YzRjVGN0ZFRUIwNzA1RjhCMTFCQkU0NjMxQjlCNTlERDY5RjRDOEJCRUQzRTJERTJCQTQ2QURDMEQ2RjUxMjk0MjgzREVFMTUzQzhFQzUKKzM2NzBDMkVBCis5QUU4QTBEMUIyQjZCQTI3QUY3MzAzMEE5RgorMzA0MEM5MjE1NkM5MUFENDQwMDg4MDJCOUY3MEExRjVEQzJFODVCQ0MzMTc0QjAzM0Y0RjVBQzAwNzZBNzgzRTk5MEZEMkIyOTZDQTFBMTU3QTc4RjAyODQyRjU3NjY4N0MzODA2M0Q2Q0JBODRENjk4NzBCMTE1QTMxRjQ5CisyQTM5QTg1MAorQ0I5NDAwNkI1NTE2NUUwMTAwQTU2N0ZCNjYKK0E2N0FCMkU5RTg1MzUzNzUwOEZBMjQwQjFFREZENjEyMDU0OUY2RThGRjJDQzU5MTk5ODAzODYzMTdDNjZENjE4MkEzNDJDM0Y1NDkxNUVCMkU0REQzRUREMkNCMURCQUIxRTUwNTM2NkI5NDdBNTBENAorQjkzNDA5MEMKKzBEOEE1RTg3NDMwM0UwRkMzNEE4OTYyRUYwCitEQjYxOEVFRTQ1RkZENTc2N0FDRTkzQTBCMDZBQzBDQ0E3OUI3OUEyQ0I0MUMwCis1OENCRDdCNworRDRFRkFFN0IzODhGOTA1NDA1NDdDMkE2MDcKKzRCMjYzREZCQUYwMjE0QkU1NjU4NDJGRThDRjc0OEE4Nzg3OTIyODFBNTk3RUQyNkYwMjcxM0MyNzQ2MjdDCis2MUY5MTRERgorRjE3ODM2Njg2QkNENjhDQTAxMTBFMEY1MEEKK0ZBNzczRUQwQ0M4MDU4NjcyQ0NBMUI4M0I0MkNEMjMzREY0QTQyRTQwMTFEQURFODg5MkUzQUQxCis3NzJEOEZDMworQzJGMTc4NDc5N0Y2NTg0QzBCQTJDMkFEMTYKKzlGRjM0MjY2N0I0MDc3RTA1RTc4MjFCNzlBNDA4RjkzMzBENTcyODIwRjQ0M0UyRUIxQjdGRjJCNUM3QjkzNzFCRUJBRjI0NkVDQUMyQ0RFMkIxQzIwQTJFNzgyOUYzQTcyN0E2QzE2QzVBOTBGQ0IxNkM3ODBDRjBDMzc3ODVBMUUzMkZCRjM2MEY3MUQ0MEU3NzkKKzBBNTc5MzdBCitBMTFBN0RFQjlERDgxM0I4MUFBMjZCMzkzQQorOTg1NjlFNTkyMjc4MjZBNENDQ0REMUJGNTlBRDJGOUUwMkU2NDE2MzU4QjlFQjBCQkZDRUFGQjA3RTcwQzE3MTBFN0RGRUI0QzhEQTYwNEY5NTgxM0ZDMjhCMTRDMEE3N0EyMEE1MThBM0NENTcxQUI5RjFDQjkzMkNDQkNCCis0MzRCRUZGNworNUQzQTE1RERERTIyRDUxQTA2OTRBRDRBMkQKK0FBQ0ExOTJFMzBFRTVERjE3RTQ5NUU5MjRFQzgwODU0NkVFQkZDOTNFQUVCQjRCM0RDRUU1OTgxMDA5QUQzOTNFQTY5MkMyQkUxNkZDNUNBOTM1NkFCMTM2ODVFMUYyMDhFM0E2QTA3RUY1QTI4N0IwQ0NBQkEyODZGRDZGNDJGMDE4RjQ3RDcyMzI5QzY4NTdGQzVFMzE0NzBGMjEyMkVFNTkwQkRDRDdCOUI0RTkzNkIyQworNzBCOUQzODkKKzA1QzEwODNFMkFDNTM3NTJENzU2NjRFRjFGNkYKKzNBOEY0MEZDOTA5NEY5RkU5RjM5QTFGNjUwRjc5NUIwNjU0NjUwQjQ0RkFGRUQyNEJBOTlCMTQ4MTk0QThFMEFCQTVCMkJCNzVFMDdEMENDRjFDMkQ5QjUzOERCODIyQkE2MDcxQzQ1QkU1QkRGNEY1RUNEQkQ2RkQ4QjlCQUI5MEUxN0M0MjdEMDg3OTgyOTFFMjk2NjI0NjZGMjJDMDRCRkQwQ0ExMjk4N0MzREM0RURENzNFOEQ2RjMyRkY0RkQxOUUzOTRBCisxMzU4NUFCMworRUFDN0U2QTE2QTBGOTE5OTE4M0ZDQUI2RTQKKzBFNDg1OTgyRTBCNEEzMUNBQ0VCODhFODczRTNEQTcwQjQ5NDI0REQwMDQ3NjkyRkNGMjlDRjJBMjMzMjVBMDUwRDkxQTcyNjQ5N0YzOTVCMEFEQTU0NEIzMTI4NzNGMDYwQUYwOTY2RkNFQworMzNFNUQzNjAKKzIxOEZBRjJEQzBFRkNGRTYxQUYzRTMxOEI5Cis4M0U1NzY2OEYyN0NENTExQ0ZBNzUxNDBEQ0RFMzU4RTA5MDAxNjE1M0IwRUJGRUZGNDA0NjEzMEE3NDYwRTRGNERCMTU5RTBDMkM1OTYyNUVGCis0QzUxOTFFRAorOEZFMDNFRERBMjVFMkVDOTcxQ0QzRUYxNzgKKzIwRjAyOEQzQkI2RjFBMzExMjhBNDgwNjk0NTg1Q0UzRDlEMUZEMkYyREUwNTZDQzdEMDkxRDE5RkRGREZFNzlGODg3MjZEOEIxQ0NCMQorQjg4NzM4OEEKKzI1Q0Q4NEVBOUE2QjUyOENBODM1RkUzNDY4MTgKKzZFQ0Q5MEUyN0NGOTQwQjU3MkMxRUVDNjk2MDZGRkIwN0U4MjUyQjkxQ0M5NDE1OEMyREQ4NDM0QUE5MEUwRjkyOERGMDdCQzg5RUVFQTdCNDIzRjdCODQwNzQ5OEJFMDZENEQ3Q0VGMTZDN0U0QTFFREQ4NjY3REUyNzI5MEIwQzFGQzc0QjQ4REU5MzY0MTExMzQ3ODBDQUFBN0JEQzhDNjYyOUJCM0M4MjE2QzY3MENGNjMwODcwNkFFODY1RDNDN0Y1MTM0NEU4QjU4M0Q0MUZEREZGOUFDNDg3NUI3MDZCQUEwCitFQTRBMjQ4NAorQjQ3NkQxMjM1Mzk2NTEzRDQ2MDhEQjlGM0UzRgorQkUwODRBMkQ0NDA0RTgzNEU5REVCN0U5QjhDRENGMzcwNTlGMkQ5RUNFNzBFMzQwMUFDOTc5Q0M3MUI4NjRFNzMzN0YwMkZDMjhFMUQ1RTIwRkQ2MzVGMzk2OTMxMTk0OEZGQTMxOEM4QjAyNURCN0E3ODBFNkFCMzI0NkY3NDRBMjk4QzdEMzI3MTQ2RTI3NUI5MjQ5NENGRkEwMkQyMkQ5N0JFMkJDN0Y1NjBEQTYwRDdEQTkwMEJEMjNGRDRBNTFDNkExNjk4ODUxOThBNDcxNzk2MzdBMzg1M0IwNzdCNTQwNDhERTc5OTNBMDdEMzIzRjBCMENCQzk3Cis5NTVECitDMAorRTJDN0UzQUYKK0ZCREY3QUMyNkMxMEU4RDA0QzlDQjIwQTYxCis3Mjc1QjRCRTAwMTFGMEMxMTE4QjJFODdFNTY3OEVBMzFCOUU1MDkxMTZDRjg0MjVGNTBEQ0JDRjMyNjEzQUQ4MzBCOEIxRENGMENCMDdCQkI1MEE1RDQzQTQwRTI1NDAzRDUwNjIxQjY5NDNBNzNENDU4MzdGNzlBODg2NkMwOTYzMTdFMzI5NDkwMENBQThBNzRDOTlENjA1MDVGRTZCQ0E0RDI0NEJBMUYyMEU5NjIzQzQ0N0FFNjQ1Q0VEN0YzRgorN0Y2MEY1NUUKKzI4RjJCNDFCQkEwODI0Qjc3MTRDMjA1Mjk0Cis1OTdCMDkzOEUzNjQ0MURCQUZFRUI0MzIxMjVBOTQ5RjEwOEJFMUMxQUEyOTA2M0U0OEZFMjAzMUNFODhDNUFCMEJBNjZBQzY3Mjk2M0QzNUY5MjJGMDBDMTcyOTkwN0RFRkY4RkFFQzM3RUJFNUI4NjU0OEMxMkRCMEVFRjlFMTVFQkRGRDYxMUYyQzVEMUFFQjc5NTA1MTRGMzUyOTNBRUNCMTgzNkE1MUFEOTUzMUZENDEwMDVEQTgwRkM4N0JCNjY5QTEKK0RFNDc5N0M2CisxNDRBOUVBMjIxQkIyODIwRjY5MTYzNUNFQUY3Cis1MzNBQTg4NDVGQzNFQTA2RjY3Q0JGQkI0M0U3MUI0MEVFMDVCOTkyOTU1NDlEOUUzNUE0RkM2QTNCMUZEMENENTVGRkNFNzE4NjU2Nzc0RkEzRjdGNzM1MkYyQTU5RThBNTNDQUZBNEE1MEEyQjQ5RDA0NTBCMzcyOTI0NzJDMTY3QTc2RjM1MzFBNTU0NjQ1Qzc3MzBGMkFERTAyMkQ0Mzg2RjlFN0QxNzAzNzkzQzI5NEFFODNFRDQ2QTZEREE0MURCRTRFN0IzN0YyRjVCQkUzRjY1OEFCQzE4NzIxNjRENjk5MjNBNTM0QkUxMjAzQ0I5QTBFMDMxMEEKKzYzRTcxQTI5Cis0MjA5NDUyRTk4NTBCMkQ2OThCNjNBNjdCNTFBCitFOEIxMkU1QjRFNzc2NTYyREM3MUNCMzYyMEFDQTNCODc5RDQ1QzM3QTJGNkRBNUNGODQ3NDQ5OTM5REM5OTU3Rjk4MDdGQUY5MjdDMEZGNTc3NEQzMzZEMzg3QTFFNzFBMDkwQzc2MzczMjRDRDIyRkM3NDlDQUQ1Q0NEQkE0NTczMUVCODRDMUI1NDZGQzRBRjYwRUQxRTFFRDdFMDg5QUMyN0Y4QUQwMEQ2MEFEMUExQzJDN0M4QTlCRTU1MEEyOEE0MjZFN0EwMzZCOEM2QTA4QUY3RDYzN0M3NjIzNzBGNjE0MkZFMkIzMUJFMEM0RDIzCisyOTE3MURGRAorNDk2MDQzQjIwRjMyNzEwQjYzNThDMURGQzNFNAorNDAxMkY4ODJCNzk2QkU2QjlFODZBOTdDMjBDNjYzRTA3OTNDN0Y1RDE2MDU1MTg0RDAxMjkzREI5QzQxQkFFNzU5OTJDNjFGRjQ4MkRGMTQwMTVFMTM0MTVDQTkxN0IzOTMyNzAyRjE1ODJCODZDNDgwNDg0QzE0OUE1Q0YxRjRGMDNCMzRGM0NBNzQ2QkJFMzgwQjg5RTQ0MDFCNDM4NDFFRjMxMzRBN0IyMkRBNjJFOTU3RTQwMkM1RURGMjQ1NDY1OTdFQUI3QTZENkI0NDlFOUZCODFBMDVDNzlEOTE4RTgzQzdCRkM4MTUzNzg2NjE5OUI3NzRCNzBFCis4NjRGCis4NzhEMUVGMjNDNzE1RkZBNkVDRkM2CiswNUUyQzI2QQorRjc4QkU1RDBCMDBCNTYyMTdFMDNFREU2NkUKKzY1NTdFN0JEMUFBMjA4MDcyRDhDNjBDNTVGNDgzRkM1QUExN0YyMUQ3RDNGQjREQUEzNDc5MTJDNjNCOTA3MzhDMzAyRThBRjQwRjQ1RTZERDFFMTQwNEJBODlEMjc0RDdEOUZGQkMyNzEzNkJCNzZGREQ0QkMKK0ZENTk4NjE0CitFMDcxODM3QzA1RjFDRkZCMjdGQjVCNENDQTgyCis1RENDNkRDNURGMzA5QkIwRkFEQkU5RDEyNzRBMDczNENEODVCRjk5RTA0RTU2NjI2OEM2QzIyMTQ2MThDNkJGMTQ1QTU2NDQxMUY0OUYyMUU1ODcyQUE1OEE2NTgwRENCOUYzNzA4MDJDREJFRDA3RTYwNTM2RDE3QUUzQTlGNDUyMjk1MTJGQzZDMjc4QkUzOTNCRUUyMThGQTUyMDhGMTNCRDZCRUU3ODI3QTU1MUNFRTcwODM1N0Y0OUFEOUFDRTNDREJFMjZFQThEMzhERjY2QzhBMDU2ODM3QTMKKzZENDVBM0JGCisxRkU2MzFBRDkwMjhFOEFCNTIwOUU4M0UzMworNkJBMEE5MjZEMjk2MkVDRTYzMDI5MjNENDUxODBFNDQ1RDYxRDEyQjIzNTY2NEU2OTlEMUJERjJEOUVDRUVDRUY3MzFGODA5NzhEMDhFQTA2ODU4RkRGQjBFMTFGNkZFNDBEODE3MEVFRUYyQTk3M0VFMDk0RTc3NjQxRkQ0MDcxRkMwMEJFNUM0RDc4NjIyOUQ5NzBERDE3MDZERDQ3MzJCNjM0MUE3OEM0NjVFODkwMEVDOTBEQworQTdDOUE4QkYKKzAzOUY3NUI3Q0E0Q0Q5OEFBQjUzQzQwM0VDCis0QkNEMEI3NTZFRDY1ODYzNkE3NjAwNzA3NDIyMTgwQjVBREVGN0MzRTNFQzhGOTc2QkYzREEyOUVFODAzODBDQzcxMzFBRjQ4N0ZBMjcxOTE4MjBDQzFCRUIwN0Y4NDZDQ0YwRjdFQjlGMkIxN0QyOTFBOTVCNUIzMEI1QTlBREI1N0U2RkJDMkZFNjk5OUM2RjNGRDY1ODA2MTU5QzdBMjYxMzMxCis5MDc0NUI4MgorMDZGMTM1ODU0OEI4NUI4MzI5NzAxQjc0MjNGRgorNDNFQkE0NTc5MDAzODkwRDlBREExOUVGNzFGNEEzQURDQTJCQTFFRkQ3NjExRTNGRkM5MzA4NzQwOTIzQTE2NTY5RkRGQkQzOTJFRkI4RURGMTMzMjBCQzhCNkFBOTI1NEYxRkQ3OTg0OEIwQzk1QzQwQjc4RkVEMjc3MkZDMjI3OUU1N0RGMEEwNzBFMEQ5NjdGN0RGOTAzNDZGMUQwNjUxNkREMzA5QkNFQ0U2MUUwNUUyMEQ5M0VCQTBCQTdENTgyMjhBQjI2RjRDQkJBNjFDMTkKK0UwRTk3RkUxCis2ODQxNTAzQkRCNjk4RDY3MDFCMDkxMjZFNjE3Cis5RkY0QzVEREU0QUZCQTdEQUI1RDA5MUVGRkQxQjVEOUQwRDQ1QkZGMzhFNkUzQUNFQTRBNUUwOTdDRjYzM0VFODA5RjBBNkYwMTcxM0Y4MEI3Q0UyQjg1QjY2MUU0NTdFMjRCRjU4NzIzNzdEMEI3MjJBOTFEOTVBMTVDNDI0MDE1QTNBNkMwQzFBNkY0RDg2RTU2MjlGNTIxRjQ4MzlFNkU1OTI5MjYxRDREQ0ZCMzUzMTg5NDc2ODFFODYzNkVGM0M2MTRGMTA1NDQ2N0M4RjZGMTFFRkE3QjZGRkU3NEY4M0FCQjZGOUY1NTE4QjRGNzlCODBGNjU0OTQKKzFDQzJCQUQzCitCMTVCQzExRjJEMTU0NzAyOUM5NDlDMTA2RkZDCis1NEVGQzA2RkNEMjM5OTE2OUQ0OEJENkZCMkRERjRGOEY2M0FFOUIzNDdDRUVGRTg5OEYzQUVCMkFCQTUzRkY5NTM4MEI0MTU2QTkyRDlBRkRBREQ3MDg3RDZCNzIwRjY4RERDQkNERTlCREQ4NzQyM0NBRjY1MkQ0RDlGQ0UyRTY3NjdCOUM5RUZDNDQzQ0U0Nzk3QzE4RUY1ODkzMjVBNUYxNzM2ODg3NDYyQkEwQ0REMEI2RjBBMjMwMEQ4NjY5MENENkNCRDIyNkJFQzYzOEVDRjI3QTY1MjJDMDYxNEZFMDE3QUE5OTVCODg5ODkyMTlDNDY2Nzg4RDgKKzdFNEQKKzNBMUU0RQorQUQyOTk3MzQKKzk2MjU1MTc3QUQzOEYzOTVDNDZFQkM0NDRFCitDREE5OThFN0U0OTlCODlFNUQ4REE4QjFFQUNFRkY2QkU3Mjk5MEI4NEIzRjBCODFENDIyRUMxNEMzMUExM0Y4NjU2QkE3MzU5NDMwQjlBMzJCRTM2RTYzOEY5NzY4Nzg0NTc3MUU4QjY4NzdGQjAzMzkzODhCRjgxOTZBQzM3NjA2MDlGQ0E0RjVFNjY2MTU1RjhDMDk0OUU0RUVFNTA5NTIKKzRGQTdCM0U1CitCNjRFRUIwQ0I0ODE1MTI5QkRFREJBRDVCNjQ5Cis0QkVEQzlCOTZENzYwQ0Q5OEJFMzgyMEQwMDY5MkNBNkUzRjUwODM0OTA2QjJBRTg0Nzk4MUQ3MDNFODBBNjY3OTBFMTg2OUJGNzcxMUEwQUJFQkE2NTFDMUUzQkEwNzVFQTA3OUU0QTk1NzU0OEE5M0YwNDM0QkU3MDlFOTM2QjcyN0VEQ0ZBRkQ4NTNDNzNFRjQxMTQ0QTEwODcwOERGNzA0RkVCMDEwRkJDQkQxRUZBNjdERTM4NzBFNzMwMzZCMzFCMDUxMQorNDczQjU3OEYKKzNEREYzNkY3QzY3QTJGMzFFNERFNTE3NDYzRDQKKzAxMDZEOUI3M0IzMjVFMDJBMTdBRTNFMEFGNERDMkQwOTc3Qjc4RDY5RkNERjMzNDlBMkNDQzYwOTE1MDY0MjQxN0VGMzkyN0I2MjNCNzgxNjlGNzBGQjBGMkUwODIxMjk2MDlBOUI5RTkxMjRDQjhBRjA0MkVFRjI3QjM4NTQwNjVBM0RDMTJGRUQ3NDA0ODk0MEZFMTY2NkJEMjk5NkQxQkY1REI3RkM0ODBFRENGMjdFM0UyMThCODNDRTIyMEVFOEU4NjQzNTJDRERENTY5RDc4NzZFNjE0QkEyQzYyRDA5QjNENzgxQzE2RURENEE2MjBFNjU1MjU0NgorQ0ZCNQorOTVFMUZFODBEMUIyQ0IxRkIxMEY2NzgxM0ZDRjlGRDY2RjA3MjBCQjg4QjZGRjZCRDlBRkI3QjBGMDc3QUE0MjgzMDNGMERGMzNFRTIzCis4MzFDOUNCNworNEIyQjZBMzVDQUNBMEJGQzE2QzVEQzVERUQKKzc0M0E3RUQ0OUUxMzg0NTVCQzk5NUMzRjY5MDY1QjRGNDJCQ0U4MjA2NUJECis0M0ZERjlFMworMEVEMkNCMzg0OTJBMEJFNTg3NTBBRjE1RTZGNgorNkQ1ODg5QUE4QkFGNkY0NDI1NUI4QkZEQTBFMTJDQ0E2RDQ4NDhBNzAwQjdBREIwQ0VFQzY0NEYyQUQ3ODhGRDI3QjAxNTA5Qzk3Q0VGQUQ2MDdBREQ2QjFGNTVGOUQ5NjgzMTBCMjg4RUYxNzNGN0ZGOTRCNjU3OTUyRjcxRDg5NkFDM0ExNThDQ0E1NDY5REZCNDQzMkY5MzAxMkVCQUZCNEZEMjBERjEwRUY2NDVDNTU4RkIxREU3RTM3OUM4QzUyMzMxRTM1MzE2RDA4RDBCMkM3QjlBN0YwQTEwMTQ3QTVEMjMzNTY4REJBRDgzNDdFN0E2M0MwQjFCCitGMzBCCis3MjI1M0QKKzM1NTgyMjYyCis5Qzc2REE5NjVBRTVFNDJDMDM5Qzc0MDQ0NgorQzNEMzExRjc5QzU3MzA3OUVFNzkwQTIyQjk2QURBNjAwRTcwODEyNkZDNkNERDA4Q0JBOEQ3NDNDMzk0NENGODM0M0UwN0M1ODUzODVBQTU5MzQwMDAxRjMzQzg3NEYxOUUwQTEwMDMyMjk3ODI3RjFEMjE3NzcyRjBDN0VGMDM2NEFGMjhDNjU0MjI1OThGOTlERTFCMDA5QzY2RjgwOUU5RUYyQTI2MjJENUIzOUYKKzVDN0ZBRjQzCiszQjY5OTZFMDZERUYyRjA5QzVBRDEyOEE2MgorNDc1QTM5NDU4QTNBMDFDQzcyRUU0Q0Y3RDRGQUQ0NkFFRDVFREI5QkQ3NjA5RkI0MTcyQ0JENkNDRkI3QjhCOTJBMzU3OTQ5NkU5MTMzRDBCRjcwRjczMkJDODY4OUY2RDIyNkYwMzFBQjQ5N0I2QzAwNkU4OTUwQzBBNkQ1OUREQUZGMzg2REZBRTM3RkUzOTlDNjIxN0Q3MUZBNkFCRjhFQUQKKzAxMjcxNUQxCis5RkFCMzIxNTE2QTI2MzMyRDU0MUFGQkRDM0M2CitEQTcyMkVDRjM0NTQyRUJFMjA4NjFCOUU2RUM0Mjk2NjAyODQzOUE3REIzQjg1Nzk5NDcxQjE4NEQ2NjY4MjdDMDA5QjkxNDY3MjJBRDA0REU2ODZFMUI1OTU3MUYzQzlENjRBNUUzQ0JEREI5MDI4QjBEMzg5REMwMEI5MzI1RTE1NzlDQzk2MjFBMTNBQjRCQkFENDU0ODcxNjg1QTM5Qjc1MEFGNTFBRDdDN0MyNTkzM0NDMDNGNzMyOEU3NjI3QUU0Q0E2MDAzQjNFOTdENUVCOTEzOEIxQ0E2Cis2MEEwODZCMQorQjM1NjMzNjI4QjFEQTM2QkVDNzc0QTY1RUIKKzlENDc4MkIwMDMzRDE5RjM1QTZBMDQ1QzJFREI3RThCRjQ0NjQ5QTFCOTUxRTRBRTBCNkFDMTcwMDdDNjZCQUI2RjM2MzFBNDU1RDVCMzM1RjhENjQ1OTM1MkQ0QjYzNDIzNUQ2OEY1MEIyMjc4MEQxOEVDRUE5N0I1NjkyMjhDMTY4RkQ1M0U1RERCOEZFRDdEMEI1NzRBOTNERDlBQjRGRkEwRjg5OENCNThDODI4NEEKKzc1ODQwNDRBCitGMDk1MzE5RjgzMUFDOEU3QjYwODAwODlBMAorOUVGNzQ4N0NDRUZEMkU4OTU5QkZDNEZGNTNGMkNGRDFDN0M0MEI3QTREOEVDM0ZCMkQ4QTQwNTBCODM1OTI1MkI0ODVFMjgzMkI5NUY1RTIyRkUxNjRFOERCMjUxN0IyNUJCRkJBQ0Y1MjhFMkIzQkE4RTZEMzNEMTNGREExRkIxOEVGRUUwQjI1RTdDMDBEQTAxOTRFNTVCMDVFOTlCNTcxNjlDOEFBNUVFQTYxQUUyODJEMTRCMgorNEU3QTJBOUQKKzVEMTkyM0VGNkEwMjRBMDNENjI4NzkzODU2MkIKKzIyMDM1NjVGNDYwOEIyRTAwMEUwOTVBQzU0NDFGQUUyQTM1QjEzRkU3RUYyOTE4NTlBNDlGNDJGMEQzNUMxNzhGQUFGNjRCNzRGNzk4QjBBMjk4NTkyNTkwQzFCMEM2MkExQUQwMTc1ODlEM0RFNjgxQUIxMTlGMkI0MjdCQjQyNDdFRTY3OUQ1MUM4NzBFRkI5QjgyRUI0NjkxOTA0RUU0MUQ1QkIzMzA3NURERjRCNUMzOEY2ODdBMzg0Rjk1MjRGOUYyQzg3RDdFNjI0RDAxRUQxRUI2OUZEMkMzODIxMUQ4OTM5MzBGREExMjU5NDY2NTJGRjI0MTBFMAorRDNFNworQjAyQzE1RDI2Q0E1ODFCNjg3RjM1RDExMUM2QzcwMzA1MUU3NTk1NDFCRDNEQTAyMjhGREI4QkFCRDI3QjExQ0I5ODA4Qjc5RDYzMjIwRkQ2MDMzMkE4OEM2NzdCNAorMTk4MEM3M0YKKzUwRDM5MENEQUJGNDJEOTI5OUQwNTc0QjA1MDQKKzNDRURENzAxRjQ0MDJFQzIxOUIyNTI0N0Q3QzJBQjE4RTNGNTYzMTdBRDZFNjQ2MkNBNjdCNTdCOUNFQTgyRjkyRTExOTY2OTI4OUZCOTc0ODBCMjk3OERFQUY2OEUzNUM3OUE3RTE3MTM3MUYzQkM5MjJGRjg4NDQ2N0FBM0M3RTQ1NDVGOTAyMjY5MjI4NDZENjZCQ0YwNDhDNkM2RDhFMTUzN0IzRThGQjJFNjNFOEU0NDZGNzUyNkQ2MUU3QzgyQkQ4RDkwMUU3Q0E2QzYzMUMxOTE0MEI5CitGQkQ1REYzNQorMzk4QTNGOEE3MUZEQzBDREFGQTAyRTREQTUKKzMzNUVDRkZDMDI3MjNFQzk3REM0RDc0NzRBMUUwRTY0NTJGODhEQzBCQjhFODg5OTA5NjNCREU0OUNFMzBFQTlFODY5MEQ1NUJDNEU2MTlBQUM4N0M2Qzg1NUZBNERDRjJBMDk3M0E1OEI3Q0MzNDg2QkU4QUE3MDg2QzYxMDJDNzYwQjhDQkI4QTVCMDY2OTVBRDU1Q0MwNDg4NzA2MDEKK0JBNTA4ODVGCiswNkIzQzJENzdFNEVGRjlDNzNCODZFNEREM0M3Cis1MUUzRkQ2QTNBRjZFNUNDMkE3NENGQkY2RThGODAxRDZEREU3MzBFQjQwMTU3QUNGMjU5MTRFOTY1NkYxQzhGN0ZDRDcyRDdBRERDNDk4MjgyRDJDNURCQTUxMUU5ODVFMEM4QTc3NTBENTgyQTUyNTNCRUIxNDk4QjQwOTU1RDNENTM0QjYwNEJDNDRGRjQwOTYxQjFEQUYzMDMyRUYxQzU0QUEwN0QyMzRBRkQxNTk4MzU5MzQwNTYxOUQ3NzY4RkI5OUMwQTI0ODMwODJBMjVFRTNBNkJDRUNEMjU2MkQ0NUMxOTVFMEY4QTRFQjcwN0UxOEVFRTcxMkEKK0JFNEYKKzEzNjdGMDcwRUY3QjlGRTFDNDdENTNCMkJBRjM3RDcxQjg3MkVBRjQxQzcwOTk1QTcyN0Q0ODczODlCMUEyM0VDMTEwODgKK0MzQjFFMzE1CitDQ0Q4MzFDMUU4REJCOENBNUU2MkQxODVGMAorNTFFQzVFQTc2QUI0NEFCQjc2M0U4MzQ2NDlFQTA2QTA2QkE1MzdFMDZGRjJDMEM3MEYyNjA0NjhEMjQzNUY2MTVGMzI0MUNBOTZDMjExQkJEQTQ3RUY0NDBENEVCQUExOTEyQkJCMTNBQkE1CitDRUE4MkU4QworNDVFMjMzMTUxNTRGMzUzMzMzMTZGRTJCOUU4NworMkREOTlCNjY4QzExOERCRjM0NDVGRUFDRDk4MzI5RjkyNkU3QUYyRTlCNjE0OUE0MDY5QTQ0RkMxRThGRTlDQjg3RUVCNDk0RDQ3MDkwMjM3NjRBOTMwOUUyNERCMkZGRDUzNTM0MEE5MzNBNUE3NjVBNkJFMkZFMzlERkU5MDIyMTRBODFGQzIyREZBNUM0NTY2M0REQTAzRDhBMUE3NjYzREU0MkFFNDJERTUzMzBCNDczM0VBOTg4REU1RjJCRTQ1QTc3QjI4REEyNjNENDBFOTBDNDJCNjNGQzYxNzlDMTBGMkE3RTUyRjYyRDJDQjg3NEJCOERCNkMyCitGQjc2Cis0NzcxMTM1RDc3MTRGRjQxM0I3RjFFOEFCMzgyQjJCOTEzQUM5Mzg3OTI3Qzg2NUFFQzFCODFGMzk3RjA4NQorQTcyQzMwRTEKKzI5NTZFMzQyQUY2Q0RDN0JEMzlBNEM2NjBBMjcKK0Y2MTlBQkMwNEFEMzJCMTI2MThCOTBFMUM0M0IwQzNCNDAyNkFGNjMyQTNFQjQ5RDE0QzA2MjA2NjRCN0QxOUQ4Rjk4OUJDRkNEMjUwRDdCQTIwQUJFMEU4M0ZENDEwREU3NEE3RDFEREE5OENBNDhEODE2QzMyMTY3MTAzNEEzQzQxQUE3M0IwQ0JBRDQxRDJERUVBQjdBMkE1NkU4REMzRjNBRDc2NTNGQzYxNzY2QkM0MDdCMjAyQzg4QTFCQzE5MjA4MzEyRTYwQzVDNjI2RUE0MDdCNAorQzMwNTQ2NkMKKzk0ODQxQkM3MUY0NkVFOTM2NzAxQzdEQTlDCis4NDYyMDVFNTgyRkM4NEEwNzBENTNFNDg5ODU4OTJFMEJCQzE1OENBMkFBMTcxNUQwMTZBRjZFNzI0NUNCMkIzOTQ0QTMwMTMwODc1M0VDOEY5QTA5NUM0RDlCNDQ3QzlCMUREQzYwNDc2RTU4QjQwRjY4NjM5RkNBMjZFQjczOUEwODMyMTdENjBBMworQUIyRTMwRTEKKzdDRUI5NUVENjc3NzZGMkVBNkE3NkZDNkQxMEEKK0YzMDUzNzNFODU3NDdENUFGMjQ4NkREOTQ5Rjc2QzE3OUI4NThGMTY2OTY2MURBNjU4MjJENkIzNEJCQUYyQUYzRjQ5NTI5NEFCQTkxQ0Q0RTQ4OTg1QzI4N0I0QkM0OUM2OTg0ODdCNDZEMzM1OEMyM0I3MTAzOUE5MkNEMzFFMDAzN0U2N0MyOUQ4NzYyM0VBQjE5MzhDNkQwQTVFMzkzMTAwMkVEQTA3NDMxMzdFMzVGMzA3Nzc0RDlCRjhCRTdCN0UyODQyNUVEQ0MxRUFFMDZDQjFGRjY2Q0JENkUyRjVBOUUyOTU5RjM0MjUKK0IzMkY3ODdECitGRjAzMTA2NjREOTY2QTVBNUVBNDY3RUM3RUY4CitGMzREMDBERkJBQzk5RDQ4QjVERTM5NDMwRUREOUIzMzRCODE2OEQ3RUY1NUE1RjVDMTFCMzg4MTI2MjI0MTVDRjhGNjcwM0Y1NTA4ODI2QjkyRDREMUE3MDVBNTRENkEzRjhCNEMyMjQ1M0FENjFFNUFCREM5OEFDRjkwMjc3MkVBNDk0OTE3Q0Y5NTJDODEzOUZBRjkxOENBMDgxODkzOTQ3QzgwQjQ2NDc5Qjc2NzEyN0RCRDhFOTQ3MTU2ODk4RDhBODE4QzhFREFFQjI4OTYyRgorRUZBOEY3QjQKK0JDRjVBMDBFNzRFRTM5RTZGMDg4MUU0Qzc3CiszODFBRTQyRERBNTNGMkMxRjFCREM4Q0U2RUEwM0ExNDgwOUI3MDI0RUUyNUI0NDEyOTI4NDdFQzFFRkYxQUMzQjQ1NzdCRTM2RUJCNDZDMjg5QjlFRTMwNzZFNTE2MDE3NEMwMzMwNTk3OUFCMDZGQ0NCNTI5QjMxMDNFRjRENDFDQzY4OUU4NDMyMUIyNzhBRUMyREEyMDJBQTlGNTNEOUNFMjZFQjBBMTlCMjkKKzA1QUM2QjBCCis1MEMyNEQ5Mzk5QTk4QkJBOEVDNUQ1M0VFQjQ0CiswOTEwMzYxRThBQzJCNkVBNDVBMTY3RTI4QzNFRjhDNTU2NjEwMDY2RUMxNEEzRDA3NzhENDk0MEFCODFDQ0JCMkM0RTY2NUVBMTE2MjNBNEIxQ0I2REIzOTA5ODJFNUNFQjI5MTcyQ0M5MzM2OTgxMzRENkE2QUIyMEQ4OUU0OTc0N0VBNTk2NzdFMERDMUVGQTQ3QUE2RkQwNzAxMUZBNDhBQ0I4MDkxQzM3OEUzRjQyNUJGNTc5QUY1ODY1QURBODMzMEYzM0Q4MUQyOURGMkExNDcwQzZGMjdCMzI1Mjc4N0M5MjZBQUM0MDQ0ODI3M0RFNDAyMQorNDNBOTQ1MjMKK0EyMzEwM0VERTgxM0UwNDU4OTdBNTdFRkRECis2QkFCQkIyQkJFMTU3RDFBMkQ1MzAxOEMwNzQyQ0JCNkNBNjdGQjBFRjE4MjY2RUYzNEEwQUZBQkI0Njc2MTk1Nzg2ODE1QTY4RjVENjU0NEIxQUQxOEY1OENBNjgxMDg0REYzNjJGMDJBREFCRjRFQTFFMkNCQzJCMjhDODFBQjFDOTZDNzRERTIKKzYxNjRGNUFFCiszODJCNzQ5Mjg3MEZFMjNBNDcxRTY1RTY1QQorOEVEMTNFMEFGNjUwOEE1RDRDOTk4QkY5QTgyQUM5MkMzQjUwNjlCNUFGQjcyNDk1NjdBNkNERENCQjkyMTREMkJBODkyMTNENkQxRjA1QUY4RUI5QkEyRkUxQkYyMjRCOTJGNUI0NTJENDYxMkM5RjM3ODNGRjcxOURFMkQzQTA5NkI0NDQ2MTlGNjhBMjNBQTQxMjc3RDY4MDYzMTM2M0VDNDBEQjhFREE1RjNGODY5RDhEOUJBNEU0RUY5NUIyODhGMQorRDI0QzNFMjQKKzc5OUUxNzc0QjU0MTAzRjc4MjMzQjVBMzIxCiszMjUwRTRCNEUzMjVGNERGMDc0QTQ2Nzk5OUVFQjdFMjE3MzQxMTczNEFCRjMwRkVFQzY2MUEwQkYzRURDOTM4NDc2ODY4QzlBNEZCQUUwMkQ3RDA2QTcxNjk0NTJBMzcwQTFCODY3ODM4REYyQzk4ODZGRkM3MzVDQzg0QTMwRjc3NjNCMkUzQkVCOUVGQzQ0NDk4MTM4MkU5ODFCQ0RGMjAwOTVBRUE3QTEzRUVDREI5Cis4NEFDMTJCRAorRDZCQ0EwNjg0RjExQjgyRDk5QTQxNjQ0QkYxMgorM0RBNzhERDY2QzI3Njk0NDYzNEU2QURGQzY3RUU5Q0JFQkVDOEE2QTYyMjM5M0U0OTg5MjdFRDRGNzJFNTg3MkVFMUY2RTUwMTg1QkRDNzU5N0Q3RkJFNzI4NjY2NURDNjIwNTVENzRFODcyMDdDOUY0MkVGOUE4MkVFNkFEOEE0NURDOUYyN0I4QUI1NTk2RUY1Q0RCOTRERjdBRjlFMEM2RUU1N0I3QzQxNjAzMDU3QzJFRkVBQzc0NTlCQTI2MDg4NkYwRTcyQkZENkUzRTI5OUQ1MjMxQTkyRkE4RDlEN0JGMTA0OUNFQzMyN0FCQjdDQ0U4QzhGQkUxCitBMDA3Cis0RDYxODY1MkRERTQ4RjAwRjNGODNBMjZBNUI4Cis3ODk1Qjg2MAorQ0UyQTMyQ0MwRUVFQ0ZFMjBBMUE5QUM3M0IzMQorRTMzQUUwOUI4RkJCNDczRUE2QTE3RTE0QzZDMEUxQjYzNDUxOTMxMzAyRkE0RDcxMDcwMDY1RDlGNzYzRjFDMTc5OUQwQzI4RDA3NTg3MTAwOTZBRDM4MjdBRUExNDhGMDI2OTg2NUNDNjFDNDU2QzAwMkY4RkM0RjgxQjFFRUYwNzk0NTBGNkZCN0ZDRjIxQ0FEMTkyQUQ1QzdCNjYwN0FDNDhFM0E1RUM3Qjc0MTNBNThGRTY1Nzg0NTg0QTdDOTQ0NTNCMENCMEM5OUE5OTYwQ0ZCNDk5QTg1RjhBMTk0NTc5RDBCQzYxNEI4QkM2QUEyNDc4RUM2RDgxCis2NUM0CitBQTdDMTc4NkI5MkNEMjFBNjZGQzkwN0UxQzNENEE4QkE0MjRFRkJDNzM4QjcwRDM4RAorMUY1QTM5QkUKKzZBQjQwMDZFMzNFM0VEQ0Q5RDhDOTZGOTAxQkYKKzZEOTgxNkZGREVENTRFMzlCMEI2NTYxMjYyRkM0QTg2Mjc3M0I1Qzc5RDQ1QkJGMkYyOEM4NjcxMUEwN0JBMkM5MTRFQzE4QTBEREE5QjNGRkM3RkE1MTJCQUMyM0RGRDg5MjRGMzJEMEU4QzNCM0YwODY4QkY2NjdCOTBGNDNFNjVGMTY2RkY0RjU4NDIwNTUyNzgzNDNGMDQwQ0U0Nzk1NDIxM0JEOTZDNEFEQUVGMjJEMDQ3NzdCNzM0MEQwMDYxODJGNzhGMjY4MEY0NTA2NUNBOTc1RjEwMTIwMkU1M0QwNjBEMTVDNDhCMDEzRUI1QkYyMUMyOUUxMQorRkVBRQorQkQ3RERBNDQKK0I0M0ZGNUM1RTVFOUZGRjhFMkNFMDhDMzk1CiszRjk5QTM2MTY0QzlDNzc1RUI0QkU3N0M1NDI4MzVDQjgzREU2NEIxNDUzODVGMUQ0Rjc4MDZEMzE3MDgxQTRBOUE5RjM5RDIzRkNGQzREQzFBQzhCRjE1ODc3RTJDQ0VGNzk3RDJFM0UwMUQ0QTZCQzkwOTAzNDRCRTY2QUYKK0RBNjNFQkEwCisxNzlCRDdEMDFGMjgyQkExRTNERjFGNzAxODM3Cis2RjY4RDI3QTdERjIxRDRFQ0NBNDY4M0FFQUQwMDkzM0M1QkNFMjYzQTZERjkxQTY0Mjg2RjE1NEEzN0EzODc1RTUzMkUzQkNEOTg2OTM1RUE3RTM4NDYwRTUyODU5NjJFOTUwQUZGRjExRTcxQjFCMDQzMTk0RkRFMjc0OUQwQTM3QjgwM0VCM0Y2M0U4MDZEMzIxQzU5M0VBRDExMTg2Mzk3MkQwRjVFQTY2MUQ5RjZFMzcxRTRBRUZDQUQyNTY0ODU4MkRDNkY4MTVBRDJBRUMKKzQ4OTFFNDhBCis5MTA4OEI0RENDNEY0QUNFOThGQzRDRjVEOQorN0U1QzI1M0U3QkY1MkNDN0U5RUFBMUE2MkY0REMzOTMxN0EyNUE2RkU5ODMKKzFDMzQ5RkM4CitCNTU3ODVCQzlFNDY2M0ZGNjE0MkY0QjBFNUJBCitEQjZFNTZGNzM0RTZDMzlFCitDMDYzRTM4QQorN0IxRjg3OUU1MENBQjRGQTNFRkM5MzU5OTUwNTcwRDk3RTY4M0JGN0U0M0MzMzhGNzA0NTc4ODQ2QkJBMzU0NkJCQkUKKzZGRTM1OEMxQURCQkMyODBCNTFBRUMxMjMxOEVBMzJFMkY5OUVDNjVBNTI3QzlDRjEzRUZCOTQ3NTMxRjlGRjdCNzMzRTQ2NjczOUEKK0VDMDk4NEZEMzRGRkE3RUE4NEMyQjkzRTY2RjAxNTY1RkQ5RUQyNDVBOTBBOTZDMkM1NzVENworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoYgorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGIKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hiIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NSBwdXQKK2R1cCAzIC9DMDA0NyBwdXQKK2R1cCA0IC9DMDA0OSBwdXQKK2R1cCA1IC9DMDA1MCBwdXQKK2R1cCA2IC9DMDA1MyBwdXQKK2R1cCA3IC9DMDA1NCBwdXQKK2R1cCA4IC9DMDA1NiBwdXQKK2R1cCA5IC9DMDA2MCBwdXQKK2R1cCAxMCAvQzAwNjIgcHV0CitkdXAgMTEgL0MwMDY4IHB1dAorZHVwIDEyIC9DMDA3MiBwdXQKK2R1cCAxMyAvQzAwODAgcHV0CitkdXAgMTQgL0MwMDgyIHB1dAorZHVwIDE1IC9DMDA4NSBwdXQKK2R1cCAxNiAvQzAwODYgcHV0CitkdXAgMTcgL0MwMDk3IHB1dAorZHVwIDE4IC9DMDA5OCBwdXQKK2R1cCAxOSAvQzAwOTkgcHV0CitkdXAgMjAgL0MwMTAwIHB1dAorZHVwIDIxIC9DMDEwMSBwdXQKK2R1cCAyMiAvQzAxMDIgcHV0CitkdXAgMjMgL0MwMTAzIHB1dAorZHVwIDI0IC9DMDEwNCBwdXQKK2R1cCAyNSAvQzAxMDUgcHV0CitkdXAgMjYgL0MwMTA3IHB1dAorZHVwIDI3IC9DMDEwOCBwdXQKK2R1cCAyOCAvQzAxMDkgcHV0CitkdXAgMjkgL0MwMTEwIHB1dAorZHVwIDMwIC9DMDExMSBwdXQKK2R1cCAzMSAvQzAxMTIgcHV0CitkdXAgMzIgL0MwMTE0IHB1dAorZHVwIDMzIC9DMDExNSBwdXQKK2R1cCAzNCAvQzAxMTYgcHV0CitkdXAgMzUgL0MwMTE3IHB1dAorZHVwIDM2IC9DMDExOCBwdXQKK2R1cCAzNyAvQzAxMTkgcHV0CitkdXAgMzggL0MwMTIxIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yMSAtMjA5IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzQ0QjM2RDM1MTEyMTk4MTZBNUMyN0QzNTAyQzYxODdCQ0UKKzM5MTJDNzFEQkYwNTIyM0ZGQ0MzM0Q2NworQTc1RjgwNDM5RDlDOUFBOTUxCis4MDMyQkQxMAorRkQ1QUZDRDE3N0Q5RUYwODNFQTNDRThBOTQKKzNFQjQ1NTMyRDZFRjI5M0M2ODE4RkJEMUNFQjRFRjkzNTQxQUU0MDNBNEQ0RkQKK0IzNkE3NjM5CitENUU0MEU4NEYyQTI3NDM5REVCNTBFQzc0QworMjBFNDk3REZGRTI5NTc5MDQ0RUZEOEZFQkY4OTJDNUY4RDM0NjhGMTNGQ0ZDQjUyODE0NQorNTJFMzQxQjkKKzU5RUI2QTEzQ0IzMjVFMUM2RTI1NThDMEJBCiswMkRFMDUxQkE5QjcwRDFEMDY5REY5RjA2RDczQjMyRTA1QzMzRkFGMTU5RjIwNTMyQzZBMENDMDhERjk1QUIyMjc1MDIwRjI4RDNCMEZERUU1REEzQzVFMjVGNzZCNzQ3QTYxMDMxQTRBQzMwRjBCNDkwRUU3NzkKKzNFN0YzRDJFCitFNkQ4Q0FBOTA4MDQxNkNEMjEyOEMyRkFCRQorMkU5REMzQjVFM0YzQzkxN0Y4NjQ0OUIwOEY4NTZCNjlEMEZCREZFQzE2RDM4MEQ0Q0NFMTVGNjVCMzdEQjM0QjY1NDIzRUJBQjVEOEM4MTdBNURCRUMwNTU4ODM0RjRFNUFDMkJGNjVFQTY0Njk0NzMzMEUyMDIwQzRGNDA0RkVBNTdBNzFBRjkxNTU5NTRCRUVGOThDRjMzMjU3RjNDMDc5Qzg5MjFGCitCQUUwMEYwRQorRjcxNkM3RUVCMEFDQjc0MTRCMkFCNDVBODcKK0I3OTAyQjI4NEQxOTA2QThGOTE0RTc2OEEyNzhFREY4MkU1NjQyQzI1OTlGQzgyNjQ4QzYxQkZBNkRGRThBNUFEMTZDMjczQ0E5RDhBQkY2MDgzRkZDQUZDOTcwODhBNjFCRDkyMzA4N0VFOUFENjc1RERDOTY4ODgzM0Y3ODQyRjA4ODZEQzYyQURDRUZFRjY0QTNGNzJBMDY4QzMzNzk2RDdENUFFRTNGQkIKKzlCM0MzNTZDCitBOEQ5MjA5QUIwQTQ5NkM2MDE0QTFBOUU4RkM2CisyNEZGNDREMjRBOTA0QTM2NjlBM0Y4RkFCNzIyQkVGOUFEQTk5RjNBQzY0MkU2Rjg3NjQ1MjNDODE0NjdEQzY0NkJDNTI5NkY4QzVEREFBMkExRkEyM0Q4MkMzNkU3NDRGRUE3OEU5NzFCQ0M0RjBFMjg1MDg5MUZCNUFFOUY4QTQyMjFGRjAzOERBMTY5NjY3MjBDQjUzMjA3QjMxNTg1RkI4OEE4MzEwNTdCRUUxMDQ4QUFGNkRFMjEzNTAxMDlGMjBFQkI2NAorOEE0RjNBN0QKK0MwQTk4QTcwQ0U5QTQxRjk2RUM5OEJGQzdFMTAKKzczNjZFQjkwQjAwNUMyNzA4OTlGNTY0Q0NERkIzNTgzQjJFRDFCNkVDRkE1RTI0NjdCOEY1NUJBNUE2NDZCM0FBQjk4QkQ2MkI1RTkyMDQwMjM4MjExQjBCMEU0MTk1RTkwOTA0NjhEODEwQUFDRTdBQkJDN0FFOUZDRkJCNkExOTE4NDY3MTBFQ0YxMDBGMEQxRDg5QUE3NzJFM0I4NUQwRTY4Njk3MkRDNUY3NjhBRUNEOEIyQUVFNkQ2OTE0QzUzRTFCRTQ3RUQ0MjA2NDMyMjk4RDE2RDZEN0I1RUUwNjNBRkRBQ0YwMkM2Njg4NDdCQjMKKzdCQkZCOTg1CitCOTYzMzlDMUU1OTk4QzY1Rjk5NDYwQkNCOAorMUEwNzhBMERDMDU4MENBNjM1Qjc3NTNFQ0ZBM0I2MDI5RTU5MTIwRUYwOEEyNEIzQzNCNjA3M0I0MzY0QjQ5RjM5RTJENzIxNzcyRkQzRDA1OQorQjM4QTVGMTkKKzNDREQ2MDI1ODMxQ0JGNDAwNkVDRkNFNjg3Cis2RTRFNzcwQzJCNDhGMjU5OEREQzczNjBCQzI0NEJGMjIwMTczREUyNDRDQzg3MjA5NTZGRURERjQwRDI5NjhENzdBMTg2OUREN0ExQjIKKzMwRDZENTk4CisyRTlBOTcxNDA0N0VGQkQ5MjU5NENBMzQ4RgorRjU3OEEyMURBMTA2RjkyNDFFRDg3NDhDOURGQkYyMzI3NUQ4NUExMkNGNTUyRDEzNUExMkFDNjE0NjI4MDMwOUQ2MUZBNjFGMUFCNUU3Mzg5NEYwOThEQjlEOERDRURGOTJEODExNTg2NUY3QkNEMjk0OUY0NzMzMEMwMjdBODI2NzE1MjBCMzQ2NTc5NzlERUEwMTVDREMzQ0RDREYxNDAzOUQxQzE4QTdDQzEyCisxNkMxRjIyRAorQjIyMURDMEUyQTVBMDZGNkQ2NTM3QkVBQzkzOQorRDc4Mjk2MDc3QzZDNUQyQURCRjc2NDQyNkQ2RDJBNDcwQjg3M0M0NDI0OEEyQ0MwODEzNjY0MDkwMzM4MzgwMDAxRjdDMjlBQTEwNDc4RTU2MkU2OENDNjkxRjMwRENCNDg1NzRDQ0NCMjU4Njk5NkVDNDc5QTA0NjNEODlBRkFCNUI3RjhCRjkxNEYwRTMxQ0I1NUQxRTlDMThFNjlCNzdDNkQyMEFGMzk5Q0Q0MzBGMjczMUIyMEEwOUQ4RTA0NEM3NDZCNDY1OUFFNTg2NDkyMDFEQjhEOTQyQjg3QjI5NEUyOEQ2Nzc5NjAzRAorOTc4RkI0QTgKKzRFREIyMzdDNkU4NjczNjk3NDc3RkQ0QUIzMjEKKzZERjZBQzMwMEEzMjMzNzczQkJCMzhBRjBFRTU1RkNBOUE4RTUzQkJERTRCM0JCQTYyNDNFMDM0QTM4Q0EyMjY5RDJCQkFFNzY3OTI5RkZCQUJFNjI1RjMzNUZCQkIwRUJFQjJDMzNEMDAxRTZFNDNDQTMxMkI3NjI1OUJBNTU5QkU4REU1RTc2QkI5MTk3QjNCMkM5NkFCQTZENDVCQkI3M0M1NjRENTgxMDREQUIyMzk0MTk5MDA3MUQ1RkVDODA0RDcyODhBCisyNkQ4REUyQworRTZEOTFFMDYyQUIwNTlGRDExOUUzOTlGNzU4MQorMURCQTU5M0U1M0Y0N0RFMEE2MjBERDVCRDk0Qzk5RTZGMjlBQ0ZBREE3MEEyQTI3RjE0NTA4NjEwRUE2MDA2M0Q0QTJDMDI3QTRDQkNCMjE2NjMzOTRFNDMzQTUyRDNFQjNFRDdEOTgzQjQ5MEUyQzYxQzBEMzJGNDJCNEQ2REZCRUU4MjdCMEFFNjdEMDQwMzM2NjQ4MDkzNUUxMDJDRkFEQjVDRkY4MDQ5Q0MwNUM3RTM4M0MzOUU3QzA5QjlGRjE5RDNEREJFNUZCMkY5RDVCNzY5Nzk3QzIyRUM3NUI2MTA3Qzg0QTkwCiszNzE2REVCMworQzIxNDdERUJDRkVDMzlFRjY2NDZCNzQ1N0MzNgorQkY5QTA4NDYwQTg0RDQ0MjA4OUYxMzAwREVDMjRFRDlGQ0Y0QzlFQTVBQTlCN0MwOTVEMEEwNjM4MkEzNjA5NzFFRjc2QTRDNTAyNzE1NENGRDhBMUJCODNGMUI3QUNGQ0VFODA0MEFBMzMxRUY4MUY4M0E2OTcxQTg4NTFGNkQxMzJDQzVERUMxNjM4NTlEMzlDMUY2N0FCMjhEOUNCQzVGN0RCQjVGNjBDQURFRTQwOTVDREZCN0MzRjNDMTk5NUJCQzNCREIwMjBCQzIKK0M2QzhCMDI0CitBRTBBMzExQjhDMUJBNUIxNDM3N0Y2QkJEQworMzUyRERENkU0NzZDRUIzMDFFQTQzMDlERDYyRENGNzVFOUY5OTJCQjM2NzZDRjU2NTE3NEY1RUMyMzIwNzEwMTA4QzAxRUZGQzgxMjkyRUU4N0MzRUYwMERGMkY4MzRBMTk1MEI4NUY2RkJENEVBRDNEOUE3RUM5MzRFNjIyNEQwMzJFMkRCRTkwQzc0MzJGREZCNURFRTMxNEY1RTUwQ0IzRDE2NDFBMTVGQ0VFODIKKzFBNzU0QTc3Cis5OENCMDU1QUYwMjNENjBDQTFGRTg5Mzc3ODA4CitGQUE4RTM1NEJBMkFDQkI3OEMxRjAzOEQ1RjRCMkNGRTI4QjAzQkJFNTdDMkUyMDQxQzA2QThBQTAyNzE4OTg2N0FFQkRENEEwMkNDMkREOUMyMUFFNUUxMDYyNjgyRkFBOTY0MDgyRDY1NzBGODRBOENBRUNEOTQ5MzI3NDY0Rjg2RjlGN0IwQTVGRTg1QzRBNTg1RjAxREY0QThENkM2NDVDNDY3REQzMUM1MENGM0NFODg1QjdCOEFBQTUwQTc3M0VENEQ5RTNBN0ExNDYwNzQwMTM0Q0JGMEE2NENERjY1MTk0MDk4QTM4QjQxM0U4MkEwRjhDQTgwM0UKK0QxQjIKKzJGMjg4QTlDCis1MzkyQTExNAorQUM3QkY4MUFFMzBDQTlDQUUyMDMxMzVFMDAKK0FFMzQzODgyMzFERDRDRjI5MzE0Mzk3NDg0NkZCQkY1MTRFOUJFOUJGREVBNzk3ODNBNERCRUYwRTYyQjk0MjlFODAzNDhFOTIzOTU3NTI1OUM2NTcwOEQzN0I0QjhDMTEwQTFGQjE5NjUxQ0ZFMUM3OUUyRjUwMTUzMkUwOEY2MENDNDFGNEI1NDMyN0QzRDRFRkM5OTBERUFFMEY4MDIzQUI5NUZCQ0VFMkY1N0RBMjJCNzkwNTRBOEVBCiswNzg2QTBBMAorNjhENUFBQjY2MDI4NkM4NUJEMjNCNjYxMjQKKzIwMzUzNkNCQTc4MjVGMEE3NjZGOUY0RjAwRkNBRUI4MDNENEI5NTlDRjNBQTM2NERBQTg5MDRCOTk0MzlBQkFDRjBENUY0NUNCQTlGRkQ1ODdFNkVFNzM3RTRCOUY1NTkwMjY4NTcyMzdBODIxQ0UwQTlEMDREOEU4QzYxODAyNEI0NDhERUFGMEY4NENFMjMwQjQ4M0JDODc4QTgzNUUxQTY3CiszRTEyRDVEQworMDMwNkZFRjlFQjEwMTc4OTkyQUYyNEZFRjU1QgorMDZBNjAzNkE3RTEzQjVBNjU2ODA0NDhBQjQ1MzlEMEY3Njg0NDMwRjEwNkVCNDkwMUFCRjQ3QUE4NzE0NUVCMjAwNTk3REE4RTlBNjI2MEExQkZDQkY1RkUxNzIxQzM0M0Q4MkU0NEM2NENGOEM0RDYzNEVCQzhENjFDQzQyQzE2MDQwMjI5Rjg5QzhBODA3RkE2RUI0RTRGNjhBQUZFRDY0OUVDNDJDOUQ4Q0M5QkYxN0RBMEM0RDZFNEI5NjQ1NkY0NjZFMThCQzRDQjVDMkU1M0IxQzQ2CisxNUEzNzA4RQorODQ5RUFFNkM3OTJEQzRGREQ4QUIwQzY1MTQKKzA3QTU4MTAyNUJBNThDQzM0QTkyRThCODlGNDYyQzQ4NkVDMEIwMDNEM0IxNjdDMzFGMTY1NkUxMDMzMERDNjAzMTI1Q0MyQ0MzNjk0MkQ3OTVENUNCRDlFOTBBQjJFREI2QkZENUEzRjAzMjg4NTcxQzczMzc1MzJDQzA1M0UwNUZFNjg1RURFQ0EyRjA0NTJDNDM5QkMxNTE0MUFFMkZFQUVGNENDREVCNkUxOEZFQzkyMEI5Q0QKK0FEREM2MjUzCis1QzI4QjA2NUFCMDQ2MjRDMjZDQTVCREYyQworQzRERUY0NkY3RTUzN0VFOTVGODBCQTU4MEVGRjlCQzQwRjNBMERDOENDQ0Y4RDZGRDUyMTg5Q0Y2MjgyNjQzMzc0Rjg5RkIyMjdDMTYyRTRERUI2M0Y4RTU0NzE2NTk2RjRBNkQxOEQ5OTc1NUFEQjY4Q0Q1MjkwMzg4OEU5RjdCOEE5MEUzRjdEM0MyRUJGQjM0NDczOUUxODk1REE1Q0NCOTUxRjc1RjlENTI4QkMyRUVCNzY1MTFECitEQ0FEQTM1QgorNUFGOEY2NENDMEQ1OTJDRUNFNkQyOTQ1RjI4RgorMTE5MEJFM0ZENjMxNjlDMEYyNjIwQzM2MDRBOEM4NzBGRDFCRkY2MUM2QTQxQTMyOTkxMDg0NkUyNkYxRTUzOUFDQzNGRERBRjFCMjZGQ0REOEJENDA3NTlFMEUzQTdGREI4MTVDMTE1MTVCQ0I4QUVEN0U3OTQ1QkZGMzQwMUEwNUY0MTlDREI3NThCODRCOUE5RENFNUM5REE0NDBFQTk2MjU5MjFBMTQ0ODcxM0EwNTE2OEIyQ0Q5Nzc0Q0MyQUYxNDVGNjIzODY3RjJFQTgwRUJCQTU2Mjc0NjMwNkQxQjMzOTk1QjU1QTk1NzE3Rjg2QUQ3N0FDRkNBCis2NDMwCitDQjRDRTQwMTM5MkJGQjhGRTY2Qjc0ODc1N0NBNjc0RjFENDExMjQxQTcyNUNBRDEyMkQ1MjA4MzI4MTM1N0U3N0JGNTZENkZBRAorQjdGMDc4OTYKK0E0QjMyMzNGMEEyMzg5NEMwNzc3OTBCRjdCNkUKKzQ1QjRGODY3RTc0QUIwNUM5NTY2QTQ5NjYzODhFQzVCQzY5NTBBNzMzNTAxNUVCNEMwMjJGOUM0MUNFRUJENDE5QzgzMzlDNzFDNEI5OEI2OEY1MjU4QTgwQThFREFEN0QxQjE1NTI5OEFGRDI4QTM0QTA2NEFEOTVGMTM4MjA2N0I3QjZGNzE4MERBNUUwM0MwOTc5MTQ1MjgyQ0Y5MzEyNDM3QTc0NTQ1ODdGODZDN0I2NjFDOTE2RDg4QTUzQjAwRjI2NTY2OUFBQkFFQkMKKzk0MEYyNjg4CisyRkJDMEU0NjE5OUZDMkY1RTY3MDNCQzczNgorNkFCRURDMTg4ODg0MzkzRkREMDczNTNCQjAxQkE1NEI4REI5NEVGNTM3QTgwM0JDNDBGOUYyMEM0RkUwMUJEMEFFNTc4QjhENzYxNTVFMEI4NkVFMkFBMjI4OEU4RUYyRjdFQjc3MzJFODFCRjZERDZEMUQyQzlDODIxMTNCRjRBRTE4N0JEMDhFNjM3REIyRDYwRjY1MDM4ODJBCis3RUNDNjFFOAorQkU1QzJBMUU5QUJFN0NFOUIzQkNCMTdGMzcxNAorQ0VDQjNFNTgwRUYwRkRCMkMzQUVGQTUxQTRFM0UwRTlGMjQ3QzNDNjQ0RTc0NzMyQzUyQkZCODREMDQ0MUJFOEU3MkZDNzZGMjY0QTc4NTVFMTQ5NUM3NTZGMzI2NzU4RjM0RkZCMjNFMDM2OTc1MkQ2QzM1RDc4MTM5NzIwNjcyOTFDNDBFODgxNkNDOTkwQUI3MEY0OTZEMjFFNTQxQTdEOTU4NzlDODgzMDVFRjAzNjZBN0NFQjMwMEY0NEYyRkFDMzA1MDE0RDZDNjdENjM1QkYxQ0JGQTAzQjQ5NjIxODMzQkZDMzk1NkE4RDkwQjhBMjQ4NDEzMENBCisxNUFCCisxMkVECisyMEFGREU4NgorMjE3N0QwOUFGMDE3QjBBQTk0OEVEOERBMzEKK0JBRUVCRTczMzI1ODMwODUwRTAzQzVGNkJCQTZDODg4QThGOEQ4MjM3RUVBQjgwQjkxMUZEOTkyNjA3NjNFNDc3QjY2NDEwODNGQzZCMzQzQkIzMDA4Nzk4ODMxRkM2Q0U4MUY3RDJCCis2QjU1Q0U1MQorRjE1MjgzNzgyMjIzMEQ2QjIzRjMxOTI5REQ3MgorMjcxMDhFRkNCMzYyRjUxNTAwNDNGM0MzNjk3NzM4MzE3QTdGQTlDRUJBOTAxMzU2MTMwNTgzRjczQ0U3QzJDMzJGMDUzMUVGQzRDNDQ2MzBDNUYzQ0Y4QjNEMEJCODg3M0U0QjkxMTFFMDc1NUQ5MUFGMEFDMTYwM0FCNDAyMzRGOTQzRDYwNUVFQ0Y3RDY1RjU4Q0VFREJBNzY3RTE3MUU3NzUzQkQ4NTFCMDkyMzBEMTI5Njk5QkM5QzE5M0RCMzdDMzNCRUM4MkQ5NkVDQzk3NEM3NzNCRDA1NzkzRUI3MTQ0MDk5MzgzOEVFRTRDNzYxRUI5MUZCODVECis4RTI4CitDNTE4NzlBM0ZCQjlDNkVBQTBERTQ0ODdBRkEwMkMzMzJENzFENTg4REE2OTNBMDkyMEY1Qjg4RQorNDk0OTEzOEMKKzcyMjdDMDFBQkFEMzJFNDI2Q0E5REFEMjA0MDcKKzZGOENDRjIzQTQ5RjE1QjM5MzFBQURFRDRBQ0Y4MEJCODk5NDBFNzZBM0E4OTFBMzRCNkE2NTMxMjBFNkUzNDEwMTA1MDIwOEFGQ0NDNjhDMkQ3MEYwRjE4Njg1MDMxMDAyNERBODk4NTc0MEQwOUZCRkI3OThGNzMwNENDRkJFODZFODg0QzZGNzgxODlGN0E3ODBCODk5OTg4NjVBQkNEMDMzODQzRkVEQUNENTlCOUQ3N0RCQUIyOUQ5MDVDNUE0MzczQTNFMEFBN0VECisxMTUxOEY1NQorMjlEMzQ1QjdGMDI3M0QzRTc5NzcxNUE3MEEKK0JENDU4NTA3ODNCMTk1QjI3RjBGRUFCNzU4Nzc1NUE0NUIyN0Y0RjI2QUIwNjY1NkYzNjU4MDZFNDUwNjFCM0U5QjkwOUQyMzEzMjQ0MDNFNzNGQjA5OUVFRDBEMkZGRDNCNDFBNkVBNDNDODc2NDYxMUE1NzdEM0I4RjQ4QTAzNUNBOEExOUVDNzIwCis1QjBGMTNGRAorNDc2MjE4RkE2NTgxNDQyNjFCNDFEOTUwMjVEOQorQjcxNzQ5OEU1MjBFNjZDMUYwMjg4QzcyQzdCMjBEODk3QUREQUEyMEQxODlDN0U3ODYwNDk4MzU5N0Q2OTE0NUExNUMwNjhCMjRBMjEzRjU4RUI5NUZDODkwQkRENzdDOUUxNTk1RjEyRjA3RTM1QUFGOTAzNDcyOThBN0ZCQ0M5QkQ0MEQ0NEQyRDJDMUQ3NzM5Q0UyNDhDMzRGMkQzMDM2REMzMjg5NEZCRUQyQTY0MzdBNDgzRjIwQUQwRDUyMUVGMTQyOTEyN0UzQTVFMjREQjcwQjZCRDQyRENBNUNGOQorRDUyNjkwOTIKK0QwQ0QzODkzNEEzMTUwRkM5OEVCRTFCREY5Cis4Mzc4RkMxODcyN0ZFNDEwODE3NzdGNTEzMUYyOEQ3REU3M0UxRUFGQkQwNjA3MjEzNTJCRkYyMjY0NDMwRTJCRTA1OTA3NzMxMURFRkYyRkVEMDg4RkRGMTNFOTkyNDkxNDk1MkNDRjhGNjFCQUIyMUE2MDg1MTc2RDZGRTQyQkU0NzZENDU3NzlGOTgyMTY0MEYyMzk2ODI3N0U3RUFDRDAxOTU4MkVBN0JCNzAxQTlBCisxQzM1QjMyOQorNjE5MEExNTBFQjgwOThEM0U2NTkxRDQwQTk4NAorRTZFNzVBQkFFNDU1ODkyMzEwOUNFNTQyMDJGRkU0MEI1MTQ2MjAwMTEzOEQxNkU4RjAwNTcxQUVCNkJDNkZDMzYyODNDMjYzRUVFQ0UyMDlGQ0YzMDk0MkM1ODRBRDc0MUJFOEYwMjM0N0E5REZBMDIwOUVBNDU0OTI2QzdFNTU0NUIyRDY1NTI3RjYyOUVDRjY0ODNGNzkzQUYyODdCQjZDNzg3MThBRUYzRjU4MTVCQTdFQjA0MzVFNEEwNjk0RkM3ODQ1MDZGNDBERDc2QjA5NjhGOEJBRTI4OTM5RjBGQjQ1N0IzRDhCOTJENUE1OTQKK0VDRTAxRkY5Cis3MzI2OEQzQjM2RDQ0QkIzQjY3MjhCMTFDRgorNUQ4MjREOUIxQTA4NzU5NTVGNjlGMTMxQ0U2MkVBNDdCREVDNEE5MTEyOENEQzFENjU0RUYwQTNCQzJFNUJGNTk3NTRFMTcwQkY0M0JFMDE5RkVFNzAxMEQ0N0U2NjA3REVFREU3NzQ4RkFCOUE4MDA4NUJEMjA2RjlCRkYzMTA3NTBDMTc0OQorNUE4RTVDQzgKKzc5ODI2MjMwMzg1QjNFRDBDMzI3MjE1NjRCCis4NzA5QzU1RjBGRTZEREE3N0YxNTdBRTZCRTJCODcwNEY3QkYyOTA1Nzg0QUFBRDA0M0YyQkM0QzNBRTBFMDcyRjY0N0ZGOEJBQzA0MjNCMTJDNEY4QUREQjE3REYyQkZFMDUwNDNCRTE5MTdFQjkwMzgzNkYyOTA2MjQ0REExNUNCMjlDNkY1MENFRTJGNTk3ODFFNzRCMUY3RERFRUYwNDBERkUyQTRBMkY2NEM2RTIzMUNBRgorMTQzQ0Q5RTcKKzA4QzRGMjgzMDJGRkE1OEUxNzY1RThDNDFDCitFRkE0MTQ4QUE0MEE2QTAwRjE2MTZFMkQxN0RFNDM4QzdDOTk3MkYxMEI0ODQ1NTQxQ0U3QUM4QTI5RkM0MUZCOUU5MDAyOUYzRTE2NzMxNjI2QTJBQTc0RTUwNTZBMDA0NjFFREQ3MDQ2Qzc4RTU0RUU3MjczOEU2NzdDRUQ2NjRBNTI0NEZDRUE1NTNEODA0QUIzRjZGQTg4QTJGRURDNzlBNDNBRjU4QkQ0NDkxMEVFNjNGRjQ4CiswNkYzRDRENgorOTBDQTUxQ0ExODhCRTZEOEMzMjY5MkVDNEREMAorNDE5NDNGMzNGMUI4OUM0MDMxQ0NEODRGQzU5MjNBOUU4REE4QTk4ODk5N0QyMDY2NUJGMjM4QjFFNTEyQ0FBMUM4RDcyOEU1NERERjZCODRBRkY5NDExRDYwMTM2NEVFQTdDQzdCMDYxNURDMEY0NzRGQjJBN0FFN0FEMEJFRTY0RjgxNDA2MjEzQjc1MDAxNjc3Mzk5NTA0RkIwMEY4NEQzQkJERjRFRkNENTg4QTAzMUYyMEUwOEU2Q0VBQzBGQTM5QjJCNENFQjFDMjYyMjRFRjMwQzYxQjk0MTMzRENBNzRCQzk0QTRCNjdCQTZEMkIxNzdBOTgxNERFCis5NzlGCis4MzNCMDhDNDQ4Q0MyNTc0QThBMjI4CiswNzkzNzI2QQorM0UyOUQwODkxOUNDQ0Q2MzAzQjIzRUJGRkJGRgorRDkwOTM1Njk4NkJDN0VGMDJDOUIzRDlFQ0U3MjE5NjU0MzI2NUEwNDU2NDdBODg3NkMzNDRGNEI4QTE4RjBGODRFOTcwRTUwMUJBMTU4RTBDQTNGNzkyMjc2QTFBQkYxODkzQzU0MUY3RTQ3MTZDMzkxMTVERERBNjA0MDMwQTRCMzMyMUU3OEJEMDNDQjlGMkYxRDZCODUwMDJBQjgzQUQ5QUUyQjk2RjBCRDAwNkZEREVFOTAxMzBEODk3QTA4RTEzQUJCM0M4QjgxMEREQjU3RkY1OEEwOTgyQUU2MjJCMUVBN0JFNTZGRDI2Q0Y5MEM3QkZERkNBRjY3CitCODQ4CitDNworQTE2QzlFRTkKK0JCQzY2MUUwMjU0MzU5MDhGQjdFMzc3NTU4RkIKK0RDMUE1MDQzNjVCODFFNEQKKzEyRkFDQThFCis3QTgzMzgwNDgwODRFMUVEOTZGMjQ4MjI5MEIxRjE2RDYwRjg3MTEzQjAzMDRBOTFFOURDREJDMkM2MzQyMzNEQjVDMgorNDEwOEZDMEYyMTU2REU3RUI5MzUxOTg0N0I2MTM3RjEzNTIyRDcyNDI1NDQ1QjI0OUQyNDYxRjRDQjNBNjk0MDFCM0RCQjQ3NDk5NAorQjU5QzAwMTAwRkQ3MjJBQTc2NTJGQzVCMzRERUY0OUEyMzAxOUQyRUEzNjFGREU0NEEyQUNGCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hpCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoaQorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGkgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ2IHB1dAorZHVwIDMgL0MwMDQ3IHB1dAorZHVwIDQgL0MwMDk5IHB1dAorZHVwIDUgL0MwMTAwIHB1dAorZHVwIDYgL0MwMTAxIHB1dAorZHVwIDcgL0MwMTAyIHB1dAorZHVwIDggL0MwMTA1IHB1dAorZHVwIDkgL0MwMTEwIHB1dAorZHVwIDEwIC9DMDExMSBwdXQKK2R1cCAxMSAvQzAxMTIgcHV0CitkdXAgMTIgL0MwMTE0IHB1dAorZHVwIDEzIC9DMDExNSBwdXQKK2R1cCAxNCAvQzAxMTYgcHV0CitkdXAgMTUgL0MwMTE4IHB1dAorZHVwIDE2IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTQ0IC0yMjggNTEzIDcyNF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI1RDdDNzNFMEQ5RkJDMkM1MUZDNUQ3QTRDODQ2NkEwQUNGMworRUY2QTUxRTg1MkVEMDA3N0IyODk0ODAyCitGNkUwRTVCMzMwOTkzRjczRUUKKzA3NzdGMzc1CisxMUZGQzgyNzQzNkZFRURGNDY0Mjg0NjBBQworMjgzNzg2QzA2RkY0QkUzMTdBNzA2ODcwQkQ4RTRFMzFDNkQ3QTMyQUIxNUMyNEQ0QTM2NUQwQzU2OTZCNzkKKzUzQTE3RUUzCis2NThFQkRGNTM1QkE0ODEyNkQ0RTAwNzJGQworQjJBNjg3MTVGMTJBQ0QyM0NERjg3Mjk2NDAzMzRBODFFMkFFNTVDOTMxMjI4NTQwQzQKK0U0Nzg2QjczCitEMTQ4MENBRUI5OUMzREIyMjVBQjkwRUU1NworQkMxNzE5MUVGNUUxMTkwNkFCNjY3OTVBMUU1NUE5MjQ5M0JDNjk5RDM0QTlCMDQ3MjI3RTgwMzYzNTMzMTFEMjY3RTAyQkUxREQzMkQ2N0RGMTVDQTE3OTYxRjlGREI2NjkzODlENDgzNEI5QTQwMEIyMjczQTJBQjUzMjFFQzJGOThDNkIzNzUzNjE1N0QzQUQzRjlFREZFNDJGNEI3NDFBNThCOUQ5MTlFQkQ5NjQ0NkQ1M0FCMUFGNUMzN0JBCitBOENFNzgyNAorQzdGRDRGNzkwNzA1ODM3M0MwRTkzNzA0NkE0MgorQUMwMDU4MTVFQTBDRTc1NUYzMjgxNzg5ODlDQzJDMTI4MDRCQkI2OTc0QkFBODBBN0Q1OEFCQjM5NkEwMzk3OTYyQjQyRTVDQTBGOURDMTEwNzg1NUZCMTZENDU3Mzk1QzdFRUEyQkZEQUIyQkJCQzk3RTgyQzI0NkEwRUEwQTlGNkU4Mzk4QzMzNjlERjgyRTVENDhGMTE0NjE3RjI2Qjk0N0RENjc0Mjc5NURFNTYwMjhDMEVGQzYwNUY5Q0VERjExM0RCQUNCMThBMTYwQkYxNUU1RTJCQkU5MTc1RjBBMjZCRUU3ODM5MkRBMUNFMENFOTUxRjEzNTg4CitFMzk5CisyQUNDRTBGNDNDRTY3MzlENEFFMTBCREQwRDk4Q0Y0MEU4NjRDM0QyNzU1RjI1QTAwRjE0REQ2QjFGMjJGMUM0NUVFMDVBMDQwN0VGNEEzM0M1NTY5NTM3NUYyQTBGNzUKKzc3M0QyOUUzCis3NUY4M0M0MDE2NkFDN0I1MzdFQjYwOTg0REJCCisxNDdDN0UyRjRGOENCRjY5Q0U3RjAzRUY5MzU4MDZBRjNERjE3QzU2ODg5QzVBNTg5REIxNDQ3MjhFQUY0QzFFQkIxMTFGNjg2RDg3M0RGRkMxNEJDMkRGOTZFQzk2MkI1RUUyQzQwMjlEQTYxN0U2REU2QzQxQjI1OTNBQ0Y2REE2MzdERUJDOUNGMkY3Q0QzRjU2QTJERkEwNzMwNUIxQzBFOUY0M0MwQTdGNUVFRTNEMTZEQjI2QTZDMDUwNzIzMkRDM0FGRjk4CitFRjA1QjMxQgorNEUyN0RFNDU2RDMwMjJDNjc5Nzg2MkQyMUZDMAorNjY4OEFCOTNDNjgyODUwRTYyN0RFMEJEMkU2RURDRjI4NjMyQUE2QTVCQThBQTA0RDQ4NEY1QkE2MDdBMTgzQ0I5QTg5N0VCNTRDRUQ5RkUzNDRGQ0NFQjQ4NDFFMjEzRUE5OTBDQkI1RjM5MDhGRDYwMTlGNTc0RDM3NTAyNDhGRjczMzVBQjdBNkM5MzQyOTY0RjlEMzg5MTgxMkIxMEYwN0I5NDQxRjgzM0VDNjY2NTVGNkUyMEM2QTJCNjZFMzEzMDkwNTM0MTZGNUM4MkU2NTdCRjhDQjhCNjgwNEFENjM0RkRFNjA1MTMwRjU2M0RBRDdFMzNERDE0Cis3RkNECis3MjJFRDNDOAorMzY2MkRFNUQKKzRCMEE3OUYyRUZFQjdFRTIzOUYwQ0RDNDM1RUMKK0FFN0I4MzQyQjYzOTQwMEYzMjRDRkJDOENCOENFQzI4QzQ2MzA2QTkzNTdCODBDOTdFREMxMUNGMDk1NEU1Q0IwRDRCM0Q1RTRCMjBFODBCQjc5MEJEQjY2ODJDMjQwQkQxMENBOEM0RjA3MzlEMTlBNUExQjA2QkQ5RTU1M0RCQzFGODU5MUUxQTBFMjZERUNEQThGODc2NzA1MEVDM0I4ODdCNDFFRUQ2NTlFN0E3RUIwM0I1MTU3MjcwMUQyOTBBNzE5MkRFODI3OTlENDI0MjEyNkEzM0JBODc2QkYzRTk2NTlEMEM5QUE2OTZGMzNDCis3MzVERTMyMQorMzhBQzk2NTE1NzBFNjg1MkNENkQwNjNBNDE2QQorQ0I5NTUwNzk3M0U5NTQ1MkEzQ0IzNjJCREZFRjJGOTM4OTg3RUREQzMyRjg4MkI3QjgwODRCMTQ3QThERDNFQTY0NzNGQzA5OERBQzdENjU3QzQ0OUMwMjc3QUZCQTE5NTMzMUVBRkI3QjczRDlFRjlCQTJFQjAyNDBFQjNGMDM2RUE2MjJGMjVCQjYyOUI4NjMyMzIwQUUyM0EzNUU1MzcyMjA4NDZBQUVCQjk5OEFGNjYzQURBRTQ2OTA5NzE0RDQ3Mzc2NEFBQjBBQjMxRjk0Q0UxQkVBMDIyOUZGRkJDNUE2QUZDRTI1MTIzMDM1QjQ2NkMwNTRCOEExCitDQkNBCis2NzdCREMwQTFEQjU2MzRBQ0U1MkQxMEI3OUI0QkQyOTk4NDE1MTE2QzFDMjI5NjY1MQorMzk1NTgzNzUKK0M5QzQ2NUE3MUM3RjkwQTBENzc3MjdEMzhCCis5RUUyNTNGMzk1N0ZDNTE2ODUwN0JGOTQ0Nzc1MkFGRDQ3RUIxNkQ1QjdGODU0RUVEQjg3Q0IzNUUzMUMyM0RCQ0ZGRUQ2MTIxMzk5MUQ4NTFGOUE4OTkyMTJCN0YxODA4NUUwRTdCRjdERDA4MUEyMERGNzBFRDUxNTVDOEI2MkM1QTY1RUNGMDJFNUY0Qzg0NUZBM0E0MzEzRDU1NjlDODFCNDE2OThCMUM4RENGNjU5MjAxMThENjhGREJFCis0NTk1RTM2MQorQUEwRjBCREZFRTQwN0YxMDlFRkI2OENBRTc5OAorOTg3ODVGQTM5MDc0Rjc5Q0M3MEZFQjA3MzYwOURDRERBOUFERjc2ODVEQzE0NzU2RkU5MDZFNkRENjUwQkQxOEU2NjU1RkEzNEQ5N0JBNTE5NkMwQTcxMDNCM0YwQjZCNzM5Q0ZCMENGRDIxOTVBNDAyMDgxRkNERENDMEEzQTg3RDkxRDFGN0MwQTFFMUE0QzU4NjhEQjc0NUY2QUVGQ0Q4OUNDM0FBOEY5QUE2NzA3QTY1NjIxQ0Q2RjNEODQ4QkQ0NDVCRTA0QkI2RkJCNTgyQzZEN0Q3RkFCNDkzMjZEOTA2MThFREUyQzVCMjgwRjBDQTZCMUZGRjg0CitENjcxCitBQzQyQUI2NkZERThGMkE5NTIzMTFCQkQ3QkNFNThGQzVBODVBNkI3MjA4NkZCQjkxNzlDM0U5MEJCNEJFQkYzRDY1QkNFRjg2NDE3NTg1ODY4MTkKK0Y0NUFFQThDCitGQzI1NTg5MjJDRTNEMDc5Q0NENzFEQUQzOAorQzBFRjQ0OERCM0E3NUE1NzlFMDlBMDJEODlBNzIxNUNFN0Q1OTJCRTU2NkJENDZFQTc5QkExRUFGM0NENUNBM0FFMDUxOTY1NTAxOEUxNzNCQzIzREE1ODQ1NjcwNDMxOEMyQjkyMzNBRTIzMDNEQURDMjM2NzQ0NTYyN0RFRjQ2NEVDODc1NTk4MEU0RkIyQjA3NDA5RjAxRDVCMzk5MzBDMDVFMUQzMEE3NUFGN0E4RjNCNjQKKzhFRDE5NDU3Cis0NUM4RDdGODgxNjg0QTc3QzQxNzcyM0EyMzZBCitFREZGNTY3NkNENEQ2ODI3ODI3REJCQkVBMDE1MEM5NTBCRTFFOTY5Q0E5QTREMkYwNUE0RURBNTREMDZBRDFDRTQyRkZBRTRFRDAyQTY2RkI0MDc1Njg3QURDNjM1M0IxOUZFNjA4MkJGNzlDQzQ2QzQ0RTk0MEFFQzg1MDU2NzY1NzNGMzgwOTA0QzIwRjZBN0VDRDc4Nzg5RUIwMDk4NkE2RUVCMEU5QUY2OUI3OUFFNjIyRUJDQjY2OEREN0FDODFCNDI1MjAyMzE3Nzg4NEZGREQ3MDE3RTc5MTAwREExQzk3NTE4MjczRAorMTAzRUU2MzMKKzI0QjEwOEU4QTg4RkM3Q0U1RkU5MjI3OEYzCisxQjJFNTczRjVEN0I3QTAxNDIyMjNBREM2M0Q1QjVGOEE2QjMxMjkxNUFDNzU5NzMzNEUxMzFBNTYyNjIwOUYwQzNDMEU2Rjc2NDJGNDYwMjVBNDQ1NkEwRDE0N0JGRDdFQkI5MTc5NzQzOTkxNDgxNjdENkI3MUUwRjcyRjg0RDJBMEE4REZEMjBFNDUwOEVGOTkyQjQ5N0E5Njk4QTgwNzgwMDg3NDQyNDk5RTYKK0ZGNjFCNkZFCitDRUFEMkEyRjNCMTJGMkFGNEIwOEY3NERDNworMUI1NkI3NEQwRUFFMUM4ODEyNzQwMjMxRDVBQ0U4MEU3RjBDRDNBNTA2QzY1NENEM0U5RDMxMkE3OEREQjIzNzlDRkY0RDNCOEY4QzBFODdCQjUzRDk2NzI5RDFEQkM0ODM3NzYzRUI3MkNCODIxN0M5ODM2MTM1MkYyNEZERUJCRTBGRkQ4MkFCMTFDNTI0QTkwNDcxNjg0RkRDRjBCNkVGNTk3RDk1RjY0RkIwODQ3NjA2CitGOTY4RDNFOAorMjIzQTYyRDU1OEQ2MkU0MDQ1NkRBRTkzNEEKK0FFMUM4Qjg0QTdGRUU3RTBFQTg1NUQ4NUU1M0JGNDg3REFDMkJFOTRFQzg4OUE4MworQkNGRjc0NzUKKzk5MjZFRDI1MTRBNzBBRkYzMUMyODBCNjE1MjQKKzgyN0YzODcwODkwQTQ2MEUKKzE3Qjk5ODk4Cis3Q0E0MzUzODhBODA0OTdBNUNBMkI5RkVDMjExNTA5N0YwMjQzMjMzOTk1RkU0REM0MDdGMzQ2MjY1QzRCOEJGNzcwNQorRDE2MkQwM0YzQzBGRTU5NEMwRjM3MzVFN0M3OUREQzlBRjk4MjJGOUE4QzFBRTIxRDAzMUNBODQ3RjlFMzFBQjMwNjBFQTMyQTQ1MQorQzc4N0MwQTFFODE0Mjg2MjA2MjNGNjZCODY5REYxN0E4OEExMDk0MjkxN0RBMEZFNzI1RENGCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJpIDEyLjAwIC9QU093c3RkdXRjaGkgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MWEyNzM1MzEyNzMzMjgwZTAxMTEwMTEyMjcyZjI1MmEyZTIzMzMyYzAxMjgzMDMzMDExOTI3MjMzNDM2MzMyYjJmMjkwMTFhMjczNTM4MzAzMzJjMDExYz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyNzMzMjgzMDMzMmUyMzJmMjUyNz4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MGQ+IDk0MzQgMTMzMDAgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyODAgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI4MCA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjgwIDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI4MCAzIDcxMzMgMzIgcword3N0OmR1dGNoMTIgU0YKKzwxYjJmMjUyNz4gMTI3MSAxNDMxIDAgMTc1NyAtMSBzCis8MDAzNTJhMjcwMDJlMjMyYzI3MjgyYjJkMjcwMDJiMzQwMDI1MzYzNDM1MzAyZTJiM2IyNzI2MDAyMzM0MDAyZjI3MjcyNjI3MjYwNjAwMzQyYjJlMzEyZDNhMDAyNzJmMzUyNzMzMDAzNTJhMjcwMDI1MzAyZTJlMjMyZjI2MGU+IDE3NTcgMTQzMSAxMCA3NzIzIDAgcworPDAzPiAxMzk4IDE3NzggMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMWMxMTFhMTUwMDE5MWQyMTIyMTExYjFiPiAxNTA0IDE3NzggMiAyNjgzIDAgcword3N0OmR1dGNoMTIgU0YKKzwyODMzMzAyZT4gMTI3MSAyMTI0IDAgMTcxMiAtMSBzCis8MDAzODJiMzUyYTJiMmYwMDM1MmEyNzAwMmYyNzM1MzEyNzMzMjgwMDM0MzAzNjMzMjUyNzAwMjYyYjMzMjcyNTM1MzAzMzNhMDgwMDFmMmEyNzAwMmYyNzM1MzEyNzMzMjgwMDI3MzkyNzI1MzYzNTIzMjQyZDI3MzQwMDM4MmIyZDJkMDAyNDI3MDAyNTMwMmUzMTJiMmQyNzI2MDAyMzJmMjYwMDI1MzAzMTJiMjcyNj4gMTcxMiAyMTI0IDEzIDk1MzEgMCBzCis8MmIyZjM1MzAwMD4gMTI3MSAyMzY5IDEgMTY2NiAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMGEwYjBlMDMwOTA2MGUwYjA2MGMwNz4gMTY2NiAyMzY5IDAgMjY1NiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMzAzMzAwMzUyYTI3MDAyZDMwMjUyMzM1MmIzMDJmMDAzNDMxMjcyNTJiMjgyYjI3MjYwMDJiMmYwMDM1MmEyNzAwMmUyMzJjMjcyODJiMmQyNzA4MDAxOTIzMmMyNzAwMzgyYjJkMmQwMDIzMmQzNDMwMDAyNTMwMzEzYTAwMzUyYTI3MDAzNDIzMmUzMTJkMjcwMDM0MjUzMzJiMzEzNT4gMjY1NiAyMzY5IDE0IDk1MzEgMCBzCis8MjgyYjJkMjczND4gMTI3MSAyNjE0IDAgMTY0MyAtMSBzCis8MDAyYjJmMzUzMDAwMzUyYTI3MDAzNDIzMmUyNzAwMzEyZDIzMjUyNzAwMjMyZjI2MDAzNzI3MzMyYjI4M2EwMDM1MmEyMzM1MDAzNTJhMjczYTAwMjMzMzI3MDAzNDI3MzUwMDM1MzAwMDI0MjcwMDI3MzkyNzI1MzYzNTIzMjQyZDI3MDg+IDE2NDMgMjYxNCAxMyA3NDc0IDAgcworPDE4Mjg+IDEyNzEgMjk2MSAwIDE0MjIgLTEgcworPDAwM2EzMDM2MDAyNjMwMDAyZjMwMzUwMDJhMjMzNzI3MDAzMzMwMzAzNTAwMjMyNTI1MjczNDM0MDYwMDMwMzMwMDI2MzAwMDJmMzAzNTAwMzgyYjM0MmEwMDM1MzAwMDJiMmYzNDM1MjMyZDJkMDAyZjI3MzUzMTI3MzMyODAwMjMzNDAwMjMwMDI1MmEyYjJkMjYwMDMwMjgwMDJiMmYyNzM1MjYwNjAwMzQyYzJiMzEwMDM1MzAwMDM1MmEyNz4gMTQyMiAyOTYxIDIxIDk1MzEgMCBzCis8MzQzNjI0MzQyNzI1MzUyYjMwMmY+IDEyNzEgMzIwNiAwIDIyMTkgLTEgcworPDAwMzUyYjM1MmQyNzI2MDAzYzFkPiAyMjE5IDMyMDYgMiAzMDYyIDAgcworPDM2MmYyZjJiMmYyOTAwMmYyNzM1MzQyNzMzMzcyNzMzMDAyMzM0MDAyMzAwMzQzNTIzMmYyNjIzMmQzMDJmMjcwMDE0MjMyNzJlMzAyZjA4MDIwMD4gMzA1NCAzMjA2IDYgNzA1MyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWEzMDM4PiAxMjcxIDM1NTIgMCAxNjkzIC0xIHMKKzwwMDM1MmEyMzM1MDAzNTJhMjcwMDI3MzkyNzI1MzYzNTIzMjQyZDI3MzQwMDJhMjMzNzI3MDAyNDI3MjcyZjAwMjUzMzI3MjMzNTI3MjYwNj4gMTY5MyAzNTUyIDYgNTIzOCAwIHMKKzwwMDJiMzUwMDJiMzQwMDJmMjcyNTI3MzQzNDIzMzMzYTAwMzUzMDAwMjcyNjJiMzUwMDM1MmEyNz4gNTIzOCAzNTUyIDYgNzQ1MCAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAwMDMwNjBlMDQwMzBkMDYwYzBmMDgwNDA2MGQ+IDc0NTAgMzU1MiAxIDg1MDYgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMjMyZjI2MDA+IDg1MDYgMzU1MiAyIDg5MzAgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA2MGUwNDAzMDgwOT4gODkzMCAzNTUyIDAgOTQ2MSAtMSBzCis8MTA+IDk0NjEgMzU1MiAwIDk1MzEgLTEgcworPDA2MGUwNTAyMDQwYTA5MDc+IDEyNzEgMzc5NyAwIDE5NjkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDI4MmIyZDI3MzQwODAwMTgyODAwM2EzMDM2MDAyYTIzMzcyNzAwMjYyNzI1MmIyNjI3MjYwMDM1MzAwMDJjMjcyNzMxMDAzNTJhMjcwMDJmMjczNTMxMjczMzI4MDAyNzM5MjcyNTM2MzUyMzI0MmQyNzM0MDAzNDMwMmUyNzMxMmQyMzI1MjcwMDMwMzUyYTI3MzMwMDM1MmEyMzJmMDA+IDE5NjkgMzc5NyAxNCA5MTM4IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDMwYTBiMGUwMz4gOTEzOCAzNzk3IDAgOTUzMSAtMSBzCis8MDkwNjBlMGIwNjBjMDc+IDEyNzEgNDA0MiAwIDE4NjggLTEgcword3N0OmR1dGNoMTIgU0YKKzwwNj4gMTg2OCA0MDQyIDAgMTkyMSAtMSBzCis8MDAyMzJkMzUyNzMzMDAzNTJhMjczNDI3MDAyZDJiMmYyNzM0MDAyMzI1MjUzMDMzMjYyYjJmMjkyZDNhMDgwMDFmMmEyYjM0MDAyNzI2MmIzNTJiMmYyOTAwMzQzNTI3MzEwMDI5MjcyZjI3MzMyMzJkMmQzYTAwMzMyNzMyMzYyYjMzMjczNDAwMzMzMDMwMzUwMDIzMjUyNTI3MzQzNDA4PiAxOTIxIDQwNDIgMTEgODg1NCAwIHMKKzwxMT4gMTI3MSA0Mzg4IDAgMTQzNCAtMSBzCis8MjYyNjAwMzUyYTJiMzQwMDJkMmIyZjI3MDAzNTMwMDAzNTJhMjcwMD4gMTQzMCA0Mzg4IDUgMzA2MyAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDYwZTA0MDMwZDA2MGMwZjA4MDQwNjBkPiAzMDYzIDQzODggMCA0MDc2IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAyODJiMmQyNzBlPiA0MDc2IDQzODggMSA0NDc4IDAgcword3N0OmR1dGNoMTJiIFNGCis8MWQxNTIyMWYxNTIwMTY+IDEzOTggNDczNSAwIDIwNTUgLTEgcworPDA0MDUwODA3MDYwMzIyMTMxZj4gMjY2OSA0NzM1IDAgMzUzOCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFmMmEyNzJmMDAyMzI2MjYwMDM1MmEyYjM0MDAyZDJiMmYyNzAwMzUzMDAwMzUyYTI3MDA+IDEyNzEgNTA4MiA2IDM1MzggMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA2MGUwNDAzMDgwOTA2MGUwNTAyMDQwYTA5MDc+IDM1MzggNTA4MiAwIDQ3NjcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDI4MmIyZDI3MGU+IDQ3NjcgNTA4MiAxIDUxNjkgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwxZDE1MjIxZjE1MjAxNjAwMjEyMjIwMTUxMTFjMDAyMjEzMWYwMDFkMWUyNTExMTkyMjAwMjAxZTFlMjIwMDAzMWUxZjIyMDMxZDE1MjIxZjE1MjAxNjAzMWQxNTIyMjExNTIwMjQxNTIwMDAxZDE1MjIyMTE1MjAyNDE1MjA+IDEzOTggNTQyOCA2IDcwODcgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFkPiAxMjcxIDU3NzUgMCAxNDM0IC0xIHMKKzwzNjJmMmYyYjJmMjk+IDE0MjYgNTc3NSAwIDIwNTEgLTEgcworPDAwMjMzNDAwMzMzMDMwMzUwMDJiMzQwMDMxMzMzMDI0MjMyNDJkM2EwMDJmMzAwMDJkMzAyZjI5MjczMzAwMzMyNzMyMzYyYjMzMjcyNjAwMDQxODM1MDAzODIzMzQwMDM2MzQyNzI2MDAzMDJmMDAzMDJkMjYyNzMzMDAzNzI3MzMzNDJiMzAyZjM0MDAzMDI4MDAyZjI3MzUzMTI3MzMyODAwMzgyYTJiMjUyYT4gMjA1MSA1Nzc1IDE2IDk1MzEgMCBzCis8MzMyNzIzMjY+IDEyNzEgNjAyMCAwIDE2NzggLTEgcworPDAwMjgzMzMwMmUwMDA5MjYyNzM3MDkyYzJlMjcyZTA1MDAzNDMwPiAxNjc4IDYwMjAgMyAzNTgyIDAgcworPDAwMmIyODAwM2EzMDM2MDAyMzMzMjcwMDM2MmYyNTMwMmUyODMwMzMzNTIzMjQyZDI3MDAzMzM2MmYyZjJiMmYyOTAwMmYyNzM1MzQyNzMzMzcyNzMzMDAyMzM0MDAzMzMwMzAzNTA2MDAzYTMwMzYwMDI1MjMyZjAwMzEyYjI1MmM+IDM1ODIgNjAyMCAxMSA5NTMxIDAgcworPDIzMmYzMDM1MmEyNzMzPiAxMjcxIDYyNjQgMCAxOTc5IC0xIHMKKzwwMDJiMjYwODAwMWIyZjI1MjcwMDM1MmEyNzAwMjgyYjJkMjczNDAwMmEyMzM3MjcwMDI0MjcyNzJmMDAyNzI2MmIzNTI3MjYwNjAwMmIzNTAwMmIzNDAwMmYyNzI1MjczNDM0MjMzMzNhMDAzNTMwMDAyYTIzMzcyNzAwMmIyZjI3MzUyNjAwMzMyNzA3MjUzMDJmMjgyYjI5MzYzMzI3MDAyYjM1MzQyNzJkMjgwOD4gMTk3OSA2MjY0IDE1IDk1MzEgMCBzCis8MWIyZjAwMjMyZjAwMTcxYzA3MjAyMTAwMzQzYTM0MzUyNzJlMDYwMDM1MmEyYjM0MDAyYjM0MDAyMzI1MjUzMDJlMzEyZDJiMzQyYTI3MjYwMDM4MmIzNTJhMDAzNTJhMjcwMDI1MzAyZTJlMjMyZjI2MGU+IDEyNzEgNjUwOSA5IDcwNTMgMCBzCis8MDM+IDEzOTggNjg1NiAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzE1MjIxMzAzMTkxZDE1MjIxNDAwMDIxMz4gMTUwNCA2ODU2IDIgMjcyMSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWIyZj4gMTI3MSA3MjAyIDAgMTU1OSAtMSBzCis8MDAzNDMwMmUyNzAwMzQzYTM0MzUyNzJlMzQwMDJiMzUwMDJiMzQwMDMxMzAzNDM0MmIyNDJkMjcwMDM1MzAwMDI5MjczNTAwMmIyZjI3MzUyNjAwMzUzMDAwMzMyNzA3MjUzMDJmMjgyYjI5MzYzMzI3MDAyYjM1MzQyNzJkMjgwMDI0M2E+IDE1NTkgNzIwMiAxMiA3MTc2IDAgcworPDAwMzQyNzJmMjYyYjJmMjkwMDJiMzUwMDIzMDAxZTE4MTYxNzIwMWMwMDM4MmIzNTJhPiA3MTc2IDcyMDIgNSA5NTMxIDAgcworPDM1MmEyNz4gMTI3MSA3NDQ3IDAgMTU2MSAtMSBzCis8MDAyYzJiMmQyZDA0MGMwNTAwMjUzMDJlMmUyMzJmMjYwZT4gMTU2MSA3NDQ3IDIgMzE3MSAwIHMKKzwwMz4gMTM5OCA3Nzk0IDAgMTUwNCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDFhMTkxYjFiMDAwMjBjMGYwZDAwMDkxZjE5MTQwMDFlMTYwMDE5MWQxNTIyMTQwYT4gMTUwNCA3Nzk0IDUgMzk5MSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWIyZj4gMTI3MSA4MTQwIDAgMTU1OSAtMSBzCis8MDAzMDM1MmEyNzMzMDAzNDNhMzQzNTI3MmUzNDAwMmIzNTAwMmUyYjI5MmEzNTAwMjQyNzAwMmYyNzI1MjczNDM0MjMzMzNhMDAzNTMwMDAyYzJiMmQyZDAwMjMyZjI2MDAzMzI3MDczNDM1MjMzMzM1MDAzNTJhMjcwMDJiMmYyNzM1MDAyNjIzMjcyZTMwMmYwODAwMTE+IDE1NTkgODE0MCAxNCA4MTI0IDAgcworPDM1MDAzNTJhMmIzNDAwMzEzMDJiMmYzNTA2MDAzMzMwMzAzNT4gODExOSA4MTQwIDMgOTUzMSAwIHMKKzwyMzI1MjUyNzM0MzQ+IDEyNzEgODM4NSAwIDE4MjkgLTEgcworPDAwMmIzNDAwMmYzMDAwMmQzMDJmMjkyNzMzMDAyZjI3MjcyNjI3MjYwMDIzMmYyNjAwM2EzMDM2MDAyNTIzMmYwMDMxMzMzMDI1MjcyNzI2MDAzNTMwMDAzNTJhMjcwMDM3MjczMzJiMjgyYjI1MjMzNTJiMzAyZjAwMzQzNTI3MzEwOD4gMTgyOSA4Mzg1IDEyIDc3MTIgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwxMD4gMTI3MSA4ODcyIDAgMTQwNiAtMSBzCis8MTUyMDE5MTYyNjE5MWQxNzAwMjIxODE1MDAxMjE5MjIyMT4gMTM4OCA4ODcyIDIgMjgxOCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWY+IDEyNzEgOTI5NCAwIDE0MTAgLTEgcworPDMwMDAzNzI3MzMyYjI4M2EwMDM1MmEyNzAwMmIyZjM0MzUyMzJkMmQyMzM1MmIzMDJmMDAzMDI4MDAyZjI3MzUzMTI3MzMyODA2MDAzNDJiMmUzMTJkM2EwMDI3MzkyNzI1MzYzNTI3MDAzNTJhMjcwMDI1MzAyZTJlMjMyZjI2PiAxMzc5IDkyOTQgOSA3MTMwIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzFlMWYyMjAzMWQxNTIyMWYxNTIwMTYwMzFkMTUyMjFmMTUyMDE2PiAxMzk4IDk2NDEgMSAzMjMxIDAgcword3N0OmR1dGNoMTIgU0YKKzwxMT4gMTI3MSA5OTg3IDAgMTQzNCAtMSBzCis8MDAxZjEzMWMyMjFlMWYxZDE1MTExOTAwMzUyNzM0MzUwMDMwMjgwMDBiMGEwMDM0MjcyNTMwMmYyNjM0MDAyNjM2MzMyMzM1MmIzMDJmMDAzNDJhMzAzNjJkMjYwMDI0MjcwMDMxMjczMzI4MzAzMzJlMjcyNjAwMzAzNzI3MzMwMDM1MmEyNzAwMmQzMDMwMzEyNDIzMjUyYzAwMmIyZjM1MjczMz4gMTQzNCA5OTg3IDEzIDk0NjEgMCBzCis8M2Q+IDk0NjEgOTk4NyAwIDk1MzEgLTEgcworPDI4MjMyNTI3MDg+IDEyNzEgMTAyMzIgMCAxNjk3IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBlPiAxMjcxIDEwNzE5IDAgMTQyMCAtMSBzCis8MjMxZDFkMTkxZDE3PiAxNDE2IDEwNzE5IDAgMjA2MCAtMSBzCis8MDAxZDE1MjIyMTE1MjAyNDE1MjAwMDExMjEwMDExMDAyMTIyMTExZDE0MTExYjFlMWQxNTAwMGIxMTE1MWMxZTFkPiAyMDYwIDEwNzE5IDUgNTI0NCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTgyOD4gMTI3MSAxMTE0MSAwIDE0MjIgLTEgcworPDAwM2EzMDM2MDAyNTIzMmYyZjMwMzUwMDJiMmYzNDM1MjMyZDJkMDAyZjI3MzUzMTI3MzMyODAwMjMzNDAwMjMwMDI1MmEyYjJkMjY+IDE0MjIgMTExNDEgNyA0NjA0IDAgcworPDAwMzAyODAwMmIyZjI3MzUyNjA2MDAzYTMwMzYwMDI1MjMyZjAwMzMzNjJmMDAzNTJhMjcwMDJmMjczNTM0MjczMzM3MjczMzAwMjMzNDAwMjMwMDM0MzUyMzJmMjYyMzJkMzAyZjI3MDAyNjIzMjc+IDQ2MDQgMTExNDEgMTEgOTQ2MSAwIHMKKzwzZD4gOTQ2MSAxMTE0MSAwIDk1MzEgLTEgcworPDJlMzAyZjA4PiAxMjcxIDExMzg2IDAgMTczMCAtMSBzCis8MDAxZTJiMmUzMTJkM2E+IDE3MzAgMTEzODYgMSAyMzkxIDAgcworPDAwMjczOTI3MjUzNjM1MjcwMDJmMjczNTM0MjczMzM3MjczMzAwMzgyYjM1MmEwMDM1MmEyNzAwM2MwNzMxMDAwZjMxMzAzMzM1MDAyZjM2MmUyNDI3MzMxMDAyMDAzMDMxMzUyYjMwMmYwMDIzMmYyNjAwMmIzNTAwMzgyYjJkMmQwMDJhMjMzMTMxMmIyZDNhMDAzNDM1MjMzMzM1PiAyMzkxIDExMzg2IDEzIDk1MzEgMCBzCis8MjMyNTI1MjczMTM1MmIyZjI5PiAxMjcxIDExNjMxIDAgMjEyOSAtMSBzCis8MDAzMzI3MzIzNjI3MzQzNTM0MDAzMDJmMDAzNTJhMjcwMDMxMzAzMzM1MDAyZjM2MmUyNDI3MzMwMDNhMzAzNjAwMzQzMTI3MjUyYjI4M2EwOD4gMjEyOSAxMTYzMSA3IDU3NDEgMCBzCis8MDAxODI4MDAzYTMwMzYwMDM0MzEyNzI1MmIyODNhMDAyMzAwMzEzMDMzMzUwMDJmMzYyZTI0MjczMzAwMzAzNTJhMjczMzAwMzUyYTIzMmYwMDM1MmEyNz4gNTc0MSAxMTYzMSA5IDk1MzEgMCBzCis8MmYzMDMzMmUyMzJkPiAxMjcxIDExODc2IDAgMTkyMSAtMSBzCis8MDAyZjI3MzUzMTI3MzMyODAwMzEzMDMzMzUwMDJmMzYyZTI0MjczMzA2MDAzYTMwMzY+IDE5MjEgMTE4NzYgNCA0MzE0IDAgcworPDAwMzQyYTMwMzYyZDI2MDAzMzI3MmUyNzJlMjQyNzMzMDAzNTMwMDAyMzJkMzQzMDAwMzQzMTI3MjUyYjI4M2EwMDNjMDczMTAwMGYzMTMwMzMzNTJmMzYyZTEwMDIwMDIzMzQwMDIzPiA0MzE0IDExODc2IDkgOTUzMSAwIHMKKzwyOTJkMzAyNDIzMmQ+IDEyNzEgMTIxMjEgMCAxODI0IC0xIHMKKzwwMDI1MzAyZTJlMjMyZjI2MDAyZDJiMmYyNzAwMzAzMTM1MmIzMDJmMDAzMDI4MDAyZjI3MzUzMTI3MzMyODA4PiAxODI0IDEyMTIxIDUgNDgxMiAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICg3KSA3CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDQgcHV0CitkdXAgMyAvQzAwNDYgcHV0CitkdXAgNCAvQzAwNTUgcHV0CitkdXAgNSAvQzAwNTggcHV0CitkdXAgNiAvQzAwNjUgcHV0CitkdXAgNyAvQzAwNjYgcHV0CitkdXAgOCAvQzAwNzMgcHV0CitkdXAgOSAvQzAwNzcgcHV0CitkdXAgMTAgL0MwMDc4IHB1dAorZHVwIDExIC9DMDA4MCBwdXQKK2R1cCAxMiAvQzAwODQgcHV0CitkdXAgMTMgL0MwMDk3IHB1dAorZHVwIDE0IC9DMDA5OCBwdXQKK2R1cCAxNSAvQzAwOTkgcHV0CitkdXAgMTYgL0MwMTAwIHB1dAorZHVwIDE3IC9DMDEwMSBwdXQKK2R1cCAxOCAvQzAxMDIgcHV0CitkdXAgMTkgL0MwMTAzIHB1dAorZHVwIDIwIC9DMDEwNCBwdXQKK2R1cCAyMSAvQzAxMDUgcHV0CitkdXAgMjIgL0MwMTA3IHB1dAorZHVwIDIzIC9DMDEwOCBwdXQKK2R1cCAyNCAvQzAxMDkgcHV0CitkdXAgMjUgL0MwMTEwIHB1dAorZHVwIDI2IC9DMDExMSBwdXQKK2R1cCAyNyAvQzAxMTIgcHV0CitkdXAgMjggL0MwMTE0IHB1dAorZHVwIDI5IC9DMDExNSBwdXQKK2R1cCAzMCAvQzAxMTYgcHV0CitkdXAgMzEgL0MwMTE3IHB1dAorZHVwIDMyIC9DMDExOCBwdXQKK2R1cCAzMyAvQzAxMTkgcHV0CitkdXAgMzQgL0MwMTIxIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjM4IDkyMCA3MjJdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzQ4RUQ1MzNBRUI5NkIyNjlEMTYxMkQwOTA3ODExRDAxODUKKzNDODQ5MUU4RkQxRTdEQkI1MTVBNENDRQorMEEyMTI4MURCMTZDQkJFNjg1CiszMDlDNzJCRgorRDdDMTE3RTFBMjM0MzIwMERGRTc0MUNBRDYKKzc3MzY3OTkzNEMwMzNFQkQzNEYxODRCODUzQzdCQjYyNDZCNkQ0OEZEMzkzNEJEODQ4NjY4N0EwMjI2QTMxOUI2ODAyNUUzN0FDNDRCOTc1MDkxM0E3NDMwOUQ2NEQ4OTgwODY3RTVCMjk2RjE3Q0IzMAorNjVFNjA0ODEKK0Q4RTIwOTFFMjA2ODA1Q0NFOEFENjk2MkMzCisxN0MxMzA2RDhBRkIwMkFCRDMyQjY1MDE3NDY4QjU4RDBEQTczNjExN0FBQUQxMkZBNkVCMjVGQzA1NjU4MAorODRBQjM0NzMKKzQ1MDc4RDY1OTFBNUNFREJFODM5OEYxNkUwCis5NjgxODg2QzdCMDQyOTRBNEI4OTRDQzlGNzU3RjVGN0QwMkRCNkQ2M0YwRUM2OTdDRUYzNDE0OERGMzBCOEI2OEZBQjQ4NUIwQUEyMUEyRDk4NjdEOQorOEM1QzA5M0MKKzdCMDNDN0UzOEYwNzk1MjBCNEVBQzc5RThDCis3MUMyQzc4NDVBQjY0ODNGNDIxQ0RDRTczQTMwQ0M3RTcyNDQ5NDNFQjAzMTcyN0M4MUExQjJFOUVEOUZEOUM1OEI0QzI3NzNBMkI0RDE0RjI2NjAxREFCQUM4NUU2RTlFQzEwNzk5MjQ2RDIKKzczODFFMkFGCitGQTU5Nzk4MUU3QzQ1RjBGMkUwOUFCNzcwOTYyCis2RjUyQ0M0Mjk0NDlGMEJEMkI1REEwODZDN0Q2NDZENEM2MDgzNTU1NjUzQUNFRjBFOTMxNTlENTY2OUNDREQ3MjlGNzIxQTJCN0Y2NTcxODYzOTA0MkQ1OTBFMENERjE0OTM1Rjg0MDRCRjk5RTM3QTdEMTcxNzFEMDUyQ0VCRDhDM0ExNDhDM0Q5QzhCOTEyODEwN0Y3NEEyQjRDMEZGNTIzMjM1MkUyNzE5NzhBQjgwRDc3RDFEQURBN0E5RTIwRDE5NDA3NjI0OEEyRUFGNUVFNzlCNzFDRjc4RDQxNTQxMDJGQworQzFGREQzNkMKK0MzODU0MDQwOUFCOTlEMzc3RUFDMUE4MDQwREUKKzFDQjBDNjg0NjE4RUY4RjhDNjNDRjk0RUNENkY1MEIxNEQzQjY3MkE5RkE2NkZDNTUzREJFNjYxQTEyQURGQ0VDMjM5NDQ4M0ZGRjM5QUI1NkE0RURFQkNENzk0RkI4RThDNjQ0QTJEQ0ZEQzc4NDlFMEIzRjBBQjlEN0RCNzc0RUJGMDNEQjIzRDNBQzQ2MEI4QUNERkM3QjVFRDYxQzREM0M4MThFMzk4NUQ5RjNEMEJGRTUxMEU0RkNEODg0MERFQ0I2QjRFQzgxQzMzQjMyMUE2QkJDRUNCNUUxNEYxN0Y4RjM5MjYxNDZEMjdDMDdGMjA2QjJBQUY4RAorMkZFQQorRTIKKzNEMDZFMzMzCis5NDI0RUY1RDkyODc2RkRFMEQ5MUZGNDJFRgorNTJEMDU4RUMxQkE5OTgyREYxQjE2QjdCMDVCMDUxODY0QUQxQkZCMUU0QjU1QTE4NEY3MDZBMTBGMDJCQ0ZCMEI5OTc3RDY1MUNEMkEzQjkyRTM2RTEwNjNBN0NCQUNFM0U5OTIyOUFCQkIzQkMzNDAyNUI2NQorNDUzMEMzNjMKK0FCOENBNTVEQkI1REQ4REEwNjcwNTFDOTI5NkMKKzIxMDAwMDlERjM4NjJFNDY2QjkwQTI1MkI0Mzg4MTY5OTI4MjBEOUY5Nzg1NTIwMzU0MjVBRTE1RjlCQzFCNjk5RDcxNTA4N0IwNUMyQkQ2MjFBRDAwQUFCMUE5RUFCMTBBRDlERUQ4NDUzNUE4MzRDOTI5RTY1RjkzRkUxNjUzQzRBRTcxQzYwRTdCODQ4RTJGMjZCOUYxMzk0RjBENUUwMDhGRDUyNzNCMzMwNEE0N0M2OUUyQkU4MzdEQkMxQzEyQzg1NTM3NkJBQzNGMDc3MUNENEVFQjZGQjREOQorNDkxRTk0NEQKK0FDRDhBMTkyMDQ4NDNFQzdCNTY1ODkwN0NECitBQ0ZDRjQ2QTNCRkNCRUFEOUE3RkI4QUNGMDU1QzZENkREQzY0QjU4Q0MzMjczQzUyMDBFN0VERjEzQzkyQTVBRTRENzlBOTQwNjU4NTQwNDUzQjRBOUEyRDVGOEE3NzhDN0U0NDU2OTIyRDk5REU0QTE5Q0QwRTMxMTFFRDM3QjQ0Q0NDQTFDMEMzMkNFRjhCMzU2NjJCNzM0NTg2MTQ5M0Y4RjAzNTUxQ0YyN0VEQzdCQUU1M0E0CitCQkJGMkRDMgorOUY5ODFBRDYwNzI3QjNEQkE5RDRDQzYyRkRFQQorNDM0MjhDNkZENkVGQTFFMTdBQUExN0UxNzczRDZDRUUzQUVFQjdCQjFEMTQ5QTQ2N0RFNjk2QjU5ODExRDUyNzZDREI0QkQwNzQ3QjU2M0YxMjMwN0Q1QUQzMkUxRTcxNzQ5NjgyQ0YzNDVGMzVBRkQzQzYwMDlCRkIzNjI2OTNFRjFDQTc0NTJCNTY3NzdGOTQ0MDFDMzZEQUVEODQxQ0I5OUIwNjQ2RjQ5MEEyQjcyRTczQ0JBQUE2RUQwNEQxNjIyMEM3MjY0RTE0NjBBOTVCQjcKK0I5NjcwMEE2CiswN0E0QjkyMDc3RTY2RUJGMkMzRTcyRUM0NAorN0JBREQ1QkRDODUwQzIwMDFBMDExQjQ1QTJEOUMyNDI2Q0YwODhGNzc5NDU0QTU5OTRDNjVFRkJGREJGRTc5MDQ1MjA3RkM0RDVCQTJGNUUyQzVGODFFNjBBMEJGMTM2NEY0OTBEMzJGNEExOTczMUQzQ0EyREUwNURFNUU5RkQyOUQyMDUyMkRBNkUwNTY5MDVDMjQ0REE3OTk1MDM2OTFGCis5M0I1MDkyNgorRDdFQzVBQzM0M0VFRkIyNTkzMEU3MzdGRkM5MAorNzgzNjc2NUFENzVBQjc3Q0UxMkNCQTEwNjcxNUI1Q0UxQzQ2NDVCMDZFRTE2MTg5MTdERkE1MTQ4RTMyOUNFRkExQjUxMkVBNzkxMDQ2QjExREZDRUEyQzNGRENFRUY1NDREMkNEMDkyNjE0RkE3NjBBM0VGRjZFQUQ0MUZBMTNERjIzRThDQzg1M0U2MDlEMkFBQzhBQTBGNUFENjM2MTZGRDUwMDU4NzI3NjMxQUQyMEREMzVDOTkxRkJCNTc2MTk2RTdGNEVBMjQ3NTIyMzJDMDYwM0I2OEI3Njc5QUIyODE3NkFCMEFERTNCQjUzRTMzNTlDRjU4NEJFCiszMDJDCis5MkEwMTYKKzNGNDQyRjVGCisyOEYzMzU4NzlFNUE2MTgzNjdDMUREQzExRQorMjM1NzJGOEFBRjdBNEE2RjQ5NTBFQTlEMjFBQTc4QkFCNjk4MENDNUMzNTZCQzE2MjIzMjAwMUM5NTVGN0E3Q0I4NEVBMzY4QUNCREUwRTZDNDM0OUE2MjZDODBFN0UxM0E3M0VEOUE3MDEzREFBQjdDNkMzNjdDQjFBQjgzNjlGRjNFRjVBNEREQjhGNTI3RjY0RjMyMDc1MUFGNDU2NjA3QjNBNzQwREVCMkM5NkYKKzA1MDk2MjRCCis2RTcwOUY2RDg2NkI2NUY2MzU3NzhFRTExNAorRkRBQUI0OTY0M0I1MkY2NzMyRjU0QTZFMTMwQzBDQzREMzMwODNEQ0IwNEM2NjQyM0YxQzQ4MjkzRDRFNEM4NTAzQjUyQ0UyQ0VDQUMzMTM2N0E4OThCQzY5QUM4MTBDOTM1QjE2OEREQzgzOUFDMzAwMDI2MjRFRTBERjhCMzcwRDE0Mjg0NzkyNUNCQkRGQTc3RDkxMDI5RUM1MTk5NkZCMjIKKzcxNENBRjNECitCNDMxRURBMkY0QTQ4Njg5NUYxQTQ2OUEzNUZECis2QkUxQjY0NzdEQTlBRjE3OTgwMEVGRUMwMzI0MDRCNDlCMjU0MUNGQjVBREExQzFCMTYwNTk3QzcyOURGREU5NjBBNzMyM0U2MkM3Qzg4OEM2MTI0MURBNjY1ODhBMEQ5NEIyQUU4NkUwMkI1MjQ3ODU0MDI4NDI2MTlERUQxODczODQ5RTNDQUZEMzBBREU3RTBGOTFGNjBGM0M1NzM5MDhFMTI0OTdBREI4QjcxRDI4MzcyNjMwNzc2RTZBM0MxQTkxRjY1MUQwNDRFQ0Y0MkYyMTk5MTEyNUMyCitFN0MzQTg2RQorOUNDNkNBQkVCRDY3NUMzMzRDNzUyMzk5RjkKKzlEMURFQzU0Q0Y5MTZDOEU4Q0VGNTkzMDQzRTYwRTU1MkI2QjE4RTZCREUwQTkxMTQ1NDBBQzU4MDE2RDkwNzdDMjE4QTY4NjI2MjUyNTVGRDRCODBCMjE0NzRFRDI0RkU5NjRGNzY4RkFBQTZDMDUzMTRCQUVBNjkyQjdDMzY5NzEyOEUzREQzMUNGQzREOUYyNTRBMkQwODNERkY4NkRBQ0NFRjlCQ0IyMkE0OUMwRjEKKzZCNDQzQjg3CiswQzVGRTFEOEFCNTU4QjQ0NDQ4QzEzQUFGMQorQUQxOTA2QThEREMxNDE1OEE0NTk3RkE1MEI3QTUzQUQwQUQ1QjIxOTZCOEFDRDUzMTA5QjdGQTRGODBDMjRCRTQ3MUY3RkZCOTcwQzY0NTA3M0M1Rjk1REYzNzA4Nzg2MDdFOUE0REI3Qjc0RUQyNEM0NENFM0UxOTAyMTZERDhEODc3MTYwM0E0ODY5MkQ0ODZERjU2QTlBQzQ3QkY2MkIyODY5RDgwQjgyQjIyNkU3NTlBRjBBNworNkZCMjRCMjEKK0M4Q0M0RTJCNUVGODNGNDREQTdEMUMxMjQzM0UKK0Q5Q0UwQUY1RDg0RDA5QkM4NzE3NkNGQjBDNjdDRTg4NjA5QzFBM0UyOEM4RkNCQUU3OTk4NEI1MkU3QTVFM0RCN0U1NzEwMzRDMEUwMTlFMkY0NTBGODRFMDNDN0ZDN0U5RTJGMkMxQTQzN0UxQkM1MzIxODBEQjc1QUYxNEZDOTlDREIzRDA1MDE0RTJGREVEOEMzOUY3NDdGM0YzOEVCNTJGNjc3NzQ3MEY0MzQ2RkZFMUIyRkQxMzY3MUJGMzM3RkJCOUQ5RTg2NUYxMUM5NDM4Qzc2N0VDMkI0NTVENjNBMkJERjEyRUIwNkI5NzIxMEY0NEY1MEZCQQorMDU0MworQUM4RkIzRDEzNkVCN0QwM0FFMzczRjFDMDg2RjgzNDJDQTNBNEM1QzRGQTFGNUU1ODhFNjA2QTBDNDZBQjQwMUU1MTQxNEJDRjI3OUYzMzZBRENENjVBQ0UxMTE0RgorQ0I3QkY1NDUKKzIwMDZGOTkyQkM3Mjc0QzdBMTJDRTc3NEFGQ0IKK0QyQkE2MUM2QTBGQjQ5NzhCRTNCMTMxOEUyMjVBRjJCODREOEQ2MTRCNTFGMjM3RUQ0MEJGQTA2RUZCMzlFOEJERThFOUZCRUM0ODRCRjRGMjE1RENFRDZDOTdFRjRCOTRBRkYzRDU1N0IyRUVBNURGQTgzQzJCQ0Q3ODdGOTEwQjZERDc5OEU2Q0Y0MjBBRUEwOTdCQTlCNTEzOTlGQTAyNEQwOTU2OEFGRTc2OTI1MkQ5NTI5NUQ5QTIxNTY2MTNFOTlGQjIzRkU1MTkzRjczOEZBREY4MDA4CitBREUwRTU4MQorNDg5N0JCMEFCQzQzMTk4QjVFOENDNkZFMjYKKzg4NDA0MDBCNzEwMzE4OTMyRUREQkJENDlCMUM2RDYyOEJCQkQ5QTVEMzg5MzFCNjM2QTA0QTc5NjY2Q0I4RkMwODE0QkZCNEQ2RDJCMzdBRDQ2RDAwODJGMTFCNzdGNEJBRTAzNEEzOTJBNjQxMjZDQUI5N0ZGMkRGMzUwMDJEQjc2RTE4NDgyREVCODM1MURCQzExRjBDMzU3QTYzNUQKKzhDNDRBQjI3CitDMDkyRTVCQzkzQTlCNjZGOTdFRDYwMjg2RkM4CitDQkI3MTA5NUIwNUIyQzNCQzFFNDE1OTRGNDlFODBCOTRBRjI5NTEzNTQ4MDg5QjA4MTI0MDI4Q0JGNkU4QjAwMTQ4NTI0MDk5N0M0QjlGNTlBNzE1Qzg1Mzg4QTFFQTA1MDE2NDQyQzVCQUJGQzQ3MDIzNUZCQjEwQjlENTEyNTA4M0IwNzU1RjE4OTVCNDM3QjdFNDU2RTcwN0VBOTVCQUZGQjcxMUREQzdEQkEwMUE0RDhDOTM2RTZCRkU1NUE0NThGMUQ2MDkxQTFCMEYyMjIwNzVEMzA1MEY4MzgxRThGQjI2RjcxOUM4QjFGOUQxQkY5RTAxNjU1NkMKKzkwRkUKKzQ5RTVEMjIyQkZBOTBDQzMxMzhFRkEyNzVEOTQ1RTI3RDUyODdFNENFODY5OTZEMEE4MTRGMzcxQ0Y2QkQ2OTVGNzE1REMKK0RDMDJBODRDCiswRjdCOTg4MDQ0RUI3NzJDQkZCMTdDMTE0NgorM0EzOTNFRjI2RDg5M0QxNkVGRTFDNjQxMzQ1OUMyM0MwMTg2NzYxMDY3Mjc0RjhGMjNFQkQzMDM2RjRBMUM4RTE0RTUyRjc4Qjk2MzU2RDEwQUM4RDhEREVBQ0RCQjdBQzQ2REEzQTgyMUVGCiswMjA1MzQ5MworRDRCQjNBOThEQzYwMTA1OTU2MEM4OTY3NjEzOQorQjk1QjYxNzAzNUY1MTVDMDI5OTM0MERCNERGMjQyMkJBMTM2NUVGMEZGOTQxMTg5QUI0MjQzQkI1QzY5NzUxNTlCMkJFOTFEQ0VFNEQ2RThDQjg4QTNGNkZBN0I5OEU5NjNBOTI5MkUwM0Y0MkI1NTQ4RkQ0ODgyRTk3MkZFQTBCMDBFQThFQzBFQzEzODIyMjRDREZFMUNBMzQzQTg5QUQ5NkU1RTQwNDM1ODBDMzdBMDdDOEQ1QTIxRUFGMjM1MzI1Mzg1MzRGMzU2QzFBQzYzQzZCMkNEN0JFQkFDNERCM0M5NzVCQUE0NjkyQTcxQzBENkM0OUZEQUVFCitGNEE0Cis5MTM1NzlCRkY3NjBCOTg5Qzc5QUVGRUY0NDUzOTk3MUFCOTQ1NkY1MTBGQUI3OTcwMjNEMzI4QjY1M0FCMAorRkZDNUVEOTEKKzJDQzA2Mjc3REQzNkFGMTA1RDI5MDYwMzdFMkIKKzg2Qzg4RjNFMjhDREQxMjc3RTMxRkRFM0FDOTdCQzA0QjQ1MkJBMjZCOTJCQkY3QkQ0MDkyMjc1NkFCNkEyNzQ0QTdDRjZFNkU2ODUxQkE5QTg2N0MwQTBFQkUwMjVDMUQ1N0ZEN0I3NDQxOURDNERDMzg1MTQxOTRCNjIwRTlDQ0QzNUU0MzIzNzRFMUI5NTA4RDY3OTM2QjZFM0Y4MEExREQ3MDRCOUU1MzBCODhGRTRCQzkyMzM2ODNEQzMwODdEODM4RTVGMEVERDdCQkZCOUREMUNBNAorOTQwQzAwQkUKK0E4MjA1MUE3QkIwMjM2ODQyNUE5RDhBRUQwCis4OUFGNzdGMDY1MTU0M0Q1Rjk0NDUyODU0NTdCQUJBRjI0ODY4REY4ODc2MTA0QjFCNTVBNjM2RTBBRjYzQzQ2QTQ3MjA5RDNCRTZBMDlBM0VDMkU1M0IxNEEyQjFDNEU0Q0Y1MDdBNDQ1NkE0QUI4QTA5NjMxMDgwRkE2OEZBN0EwRDQ5NEI5OUUzQQorNjNCNjVGMkIKKzJCOTQwNDI2MjhBQTU2MDc3OTI0RDE5N0U3MzkKK0MxQTFFQzcwRTg0RkU4OTMyREE4OUZBODIxN0JCMTc2OEM5MDcwODAyQTBBNjE4MUVGRkY2NTY3RTJEOEU0NzcwMzhBRTE0NEQ0NkFBMjg1N0EzQkM4OUY2N0FFMkY5NkIwRjdGRUM5MzYxQjdFNUM2RTBGMzg3OUU4RUY3QUU5ODQ3NDI3NkM1RDEzN0YxQ0NCMkY5RkQ1OUZFNTM1RkZDNTQwQjBCOTcwMEQzMkUyNzY2NERCQ0VENDM4N0I1RUY1MDY5M0EwRjJBQjcyQzA1REEzQ0U3OTlGMTYxQzRCNTBCMTBGQjdCRjVBREUKKzBBQ0M1MjU2Cis5NzEyQjYwRUE4RUM4N0IzNTA2ODJCRUU3RQorRDU5RDRCMkZDODgzMzdGNUUwRDM2RDJEMzQzRkExODQ1MENGODEwNThBQTNCRDVGQTE0OEZCQkZFOURENDQzQkY0REI3NEY1QkU4NkM3QUU2ODE5N0VBMjY3RkYxQUI5MzQxN0FGNTU0NjJBOTMwNkY1MkU1OTAzODg5RkFFQjI3M0ZGQzU1MUY0QkIwMEM4MEFBNjY1RjczNThENEU2RDk3MjdCRTM0QjFBMzA1Cis3QUMzNUI0NAorNUM0RTE4OEUzNDcxNDQ3QTAxRUUyREY4RTQ1MgorMzgxMjI5M0E2RUE0NUQ2NjE1NUI2NEFDNTQ1Q0EyRDExREY1QTIwMTJGMUY0RUM4NkM1QjVEODQ1Njg5NTgwNDBGOEYyQkUyNkUwOThEMTY3MEJGN0U3OUY5RjY2ODM5MjlGOUQ3MzVFMzI0NEIzMjI2NkMxOTUwRUUyMjY5ODhDMjVCMjA4QTJCNDQ4NUZFMjVGOTZDNEZFQUQzQTMyQzk3MzNGMjUzOEVBQzc1RTZDNzYyMDc2OERFNzc1MDE4NjM4NDQ4NENFM0VENjUzNkE2MTE2NjkzN0RFRkIxNkI0RDIxQTc0MjA1NjM2MjEzNTZDMENCRjkKK0I5RjhFRUMxCitBREIwRDNFRUY2NDgyMjU4QTcxOTQ0QkREQQorRTFGQjYwOUZDOTBEODRCQjJERTNDNEU2M0EyREJGNzRERDkwOUIzNDczRjIyNTBENDdGMTY2MkE1NUM5QTM5QkFGMEZFOTU4MDlEQ0E4RENFOTQwQUQ2Mjk2NjZCRkIzNjM3RTNCOTVCNEEwODVBNjE5OTY0MzQwRjE3RDAzQjhENjFEODZBQTNFCis1QkQ2NTYxNAorQjg2MTM2NjE4NzEyMUVGQTlGQUQyQUIzNTIKKzhFN0Y4NTFDRTY4NTUwODNGMkUxRTYwMzlGNDZBRjJENTExQzlBOEI0RUJDOEU1NjUyMTdFOTNGNjg5NjYyMDUwREMwOTU2RUYzOTlGQzQyRDZFODcyNjNGRDYwMkM0MDIxRjIzNDNFMkExQkY4N0QyRjM1RDhCOUNEQ0E5RkVCMUZCRTREMDZGMzQyQ0JDRkJFNjg2RjA2QTRDRURCN0E4MTY5NzM5QjQ4QTBCMzgyNUNBMjA0RDUzQ0FEMEJFN0U1OTIKKzIzMTJDRUNECitEODRDN0ExMDYwMDMwQTQ4M0E5OTk0ODJCRgorNDVBMDAzQjg2N0ZEQjVDRjg4NzE5QTQ5NjQwRjE3NENFOTlBNEQxRkFDN0Q2RTlFODA3QzEwOEVDNjA5QTYzOEQ4Q0VFNUExNzg4RTA1MUZGRTA2RTJGREM0QkEwMzVDNjBGRUY3MTg3QTY5RDZFNEZFQUZCNzM1QTExMUJERUUxMjdGMzdGQzM4RTJDOTVGQjVDNDNCNUJBQTk3NTUxQjI4NEQ2OEFFMUFEMDg3NTg5NgorOTc3ODk2Q0UKKzg0MEE4MUUwN0QzRkQ0NkRCQTFCNzBEMDQ2MDUKKzlERDIwN0VCNEMzMDA5NzUxQzVCRDA5QTA4QzhBNkE3MzBBMjIzMzZFQzM4NzQwNjdCNEU2Q0I0MDE2NkNCQTI3NEFFMDY4QzlDNDM1QzVCOUE3QjRCQTk2MEM0QzU1Mzg4NkE4M0RFNDBDNjYyQzdERUU5ODEwMUI5NkY4Q0M3QzA5NDZCODZCRkVERERGOTQ5OTE3REJGMTFDQTlGRTE1RkJFMTU2RkFCMDhGODQ3NTMxQzMxRjJCODFGMjZENUIyMzIzN0IzNEZENDkyNkY0NzAyOUZEMTYwNUVENDZGQkQzMjk2RkFDMDI4OUIxNzExQjU0MjMyMTkyNgorQzFGMQorODgzRkMwQTQ1RkI4REM5RENBN0NFQUM3RjA5NQorODFFQzY0M0UKKzZDOTBENTlDQzY2MTdCQ0Y4NDc4NTFDRTg2RDQKK0UyREI3NjA3OEVCRDc4NUQ1MDE3NDFFMjVCRjdDQTA5Mzg5NEUwRTUwQTdBMzQxRTEwRDJCODY3MDVBMTZBMDUxQTE0NUE4NzZFMjYxM0Q3NTgyMkQwNDA3NzFFRUYyM0UyREY1MTE2N0Q4OUJERkY3MTFBQjIyREQzMzY3NkYxMjZDNjcyODYyQ0JGNDQwQjk3OEUwRUQyREY0MTlCNTNCMzk2NUMzODIxRDc0QUYxRkNFNjY1NTg4RDQxMzE2Qjc0NTIyMEU4NTkyNDE2RjNBRERFREE0NUY2RjZERjdGOTBFQUEwQjIxRUJENEM2NDQzN0U4MTgyQzYzMworMkM4NgorOTRDMjMzRTcKKzVBQjQ4RkMyOUM1RDYwOEM5MDEzNUE3N0I2NjgKK0VERkUwMjhDMUM4NjlFMTIKKzRDQjdBQ0UwCiswMzY5MTFFNDIxNDZGMzQyRkU3NzNERjU5RTRFRTFFOEE2QjVDRDhFRDA5QkM2Q0FENjlDM0Q3NzkzNDkzRjZCMEQ2OQorODY4QzE5NzZDRDlBNEIyMjZBRTMyMUYxOEZERDhFNjFEN0NEQkI3RTIyMTI0RDg4ODRGM0M1ODBBNzMxMjJBNjYyN0ZERjYyNzVDRgorQkJGRjhDNzEyNjZCNEVGODlENkZENkQxRkZCODZFMTlEMjMxRkMyMEY3NzU0QzJGNDAyNDc3CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ3IHB1dAorZHVwIDMgL0MwMDYxIHB1dAorZHVwIDQgL0MwMDY3IHB1dAorZHVwIDUgL0MwMDY5IHB1dAorZHVwIDYgL0MwMDcwIHB1dAorZHVwIDcgL0MwMDcyIHB1dAorZHVwIDggL0MwMDc3IHB1dAorZHVwIDkgL0MwMDc4IHB1dAorZHVwIDEwIC9DMDA3OSBwdXQKK2R1cCAxMSAvQzAwODQgcHV0CitkdXAgMTIgL0MwMDk3IHB1dAorZHVwIDEzIC9DMDA5OSBwdXQKK2R1cCAxNCAvQzAxMDEgcHV0CitkdXAgMTUgL0MwMTAyIHB1dAorZHVwIDE2IC9DMDEwNSBwdXQKK2R1cCAxNyAvQzAxMDggcHV0CitkdXAgMTggL0MwMTA5IHB1dAorZHVwIDE5IC9DMDExMCBwdXQKK2R1cCAyMCAvQzAxMTEgcHV0CitkdXAgMjEgL0MwMTEyIHB1dAorZHVwIDIyIC9DMDExNCBwdXQKK2R1cCAyMyAvQzAxMTUgcHV0CitkdXAgMjQgL0MwMTE2IHB1dAorZHVwIDI1IC9DMDExNyBwdXQKK2R1cCAyNiAvQzAxMjEgcHV0CitkdXAgMjcgL0MwMTIyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xOCAtMjA5IDkxOSA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjk3QzY0QUExMzQxMzc2NTQ0QkM4M0NBQjNGMUQzREM1M0YKK0NDRTZEQTE0N0NENzUzOTQyNEU1MzA4RgorODU1NjNBOTg1REU5M0FEQjE3Cis5QTlBRjg4OQorRjJCNUE0NTlFNTBDNjVGN0IyQzdCNTk2REIKK0I4QUY2NEVDNjdFNzJFMkEzREE5NEU3Qzg0M0JFNDQ4RTIxNzAwNjFCRDZBRkUzQjRDOEIKK0ZEQjk1RTBDCiszRTAwNjZBNjI2RTA1MDMxRUE3REVCRTM5NgorMTE2MjMwRkU4RkJEQzg1MUFFRDI1MTNFODEzRERBMzMyRDBEMDU4RjYyOUY2NkNBOTUzNzhCMjA2RDk2Q0M0RDAxODQ5OTEyCiszNjY1RkNCQgorNEQzMTJFQ0UxQUI1QTkzODcwRjcxQUI3MEFEMQorQzY2MTVCNTEzMURCNjY0NjlGQUE4Q0EzQTdEQTNEMjMwM0U3NUFBRTBGMUIwNTE0QTJCNzFFQzc1NzNCODhEMzZEMTdDRThDRjY1RDJCM0Y2RERDMUEyODcyRUFDMEQ0NzY2NTMyRkZEQTZENzA3Q0IyNzA5QzVERjk2QTVENjM4ODkxMDg5QjFFREJGQThGNDcwMjlEMDFGNTAwNUI3RTFCMkY4MjA4QzBERjNGRDU0N0E4RTQxNzQxMEMzQTQ4RkUzNDRBNkRGMjFFMEFFNworQ0YxQjREMkEKK0EwODFCRkFEMUMyQzg4NTI1OTQzQkUyNkQyQjAKKzYwQzI2MzE2MjU3QTJFM0I1OEEzMDMyNEU0MzZERDZGRkE4M0Y2Q0Y2NDNEQkUxNDU5NURGQzc5MTcyRDg4RkFGMThDNEE3MUMzRkNBOTYxOTU0MjBCNTQ2MjZBRkE0N0E1MUZCQ0IxODhEMDE3RTk4MjJERjY1OEM1NjQxNTQ2NjQ3ODUzQTg3MEM2NUFDM0M5RTYwNjI1MThGMEI5OEZCRTIxNURDQUZGMUFGNDIyRDg5NUY0NDVGQjBEQjEyRTYwQjkxMDBBNjZDRDM1QTZGOTYxOUI3N0U4REYKK0I1MzkzNEYwCitGNDMxNzkxNzI0QUQyMTM4NUNEQ0NBRjcwOTQ4CitBNDQ5MkI5ODJEQzg0QjA3Q0E3NTIxNDEzMjhDRjU3MkM3MURBQkRCQTJCMTQyQzM3NEJDRkNBMkU1QkRCM0I0NjhDOTNEQ0U0Qzc2NDQ3OTE1RjcwRkEyRTg0Mjc3NzQxNjU2REZENUZBMDA4M0IzRDUxMjAzNDRDRDZFQjcwMUM0QTlEQkJBREQ3MDBDNjRDRERFREU5Q0E3ODQyQjYyRjA5MkFEMEYwOEFFRUVDM0Q5NjQ0RDExOUM1ODJFOEMzNkYzNENENworRTQ1NTQ2MEMKKzI2QTZCN0VBN0M3ODYxNTU2MUUwMEU1QjQyRDUKKzY4NzlBNEQ0NTM3QjNEQkNCOTAzNkEzMzFGNEE5RTE3MTc1RkY3MzVCMDU3RjgyQ0REQkU0NDg1MkJEQThBOEQ3OTM1REI3MDQzQzVFRTI4Q0Y0REFDQzQ0MjI0N0YyQzg2OTczRDg2NjU3MjcwMzk1MDQwNEY1RjA4Qjk5QTZEQjA3MkY5MjU2OUFFODY1NTg4QUJGNjdGQTk2Q0I3RjFGMjNBNjhFRjk3MzM0MjYyODM4OUEwN0UzRTBCNzNCMjg4OURCODhDRjRERTM3OTc2QzM0NzlDNjMzOTE4NDQxNzQ5RDUwNzU3MUIyMTEKK0IxMEUwMUQ4Cis3NkE1MkJFOTU1N0Q3M0JBNzdDRTA2MUJENDhFCis2RkI4MDE0QkQ2NUM2Mzg0NTI2OUVFNTE5Q0EwMzQ0ODk1RDIxOEQ1RjU0NTQxRkU4OUFERkRGNzk4MEQyNEY3M0ExQkFDNjlDMTI2RjczQjRERjU2RjlBMDhBOUUxNTNFNUY2RURGMzU0RkJBRjYzMkMwNjVGQzQzNDAwOTE3Q0NERjgwOENCNzFFRjNCREE3QjdDMDY4N0YxMDg3RDcwOENCODg1RjlGRjY3Q0QzRjFDMEY0NzAxNDkyRkFERjEwOTA5RjY0RjE2QjBERTJDMjZGNTBGMTkyNworMjM3OEQ4MUYKKzg2NTdEMTZERjg3RkE3MkMyRkY4N0Y5RjhBCitDQzA5NkQ1MEFDMDcyNTA3NTI3ODVFQTI1N0M5QzFGOEM5MEJGMzJDNEYyQjQwOThFN0JGOTNBRTEzMTcxQTMzQThFQ0Q1RTczNTczNDFCREE1QUZDRkUyOEY4RTREMkIxNUZDNUY0NTdGODcwQTFBNEMwOURCRDQ0RTZBOUY2QTkyMzlCNUY0QzE0MDZGQzVEQTQ2RTlFREREMEEwMjU0RDUzQkVERDc4NTYwMzU0Mzk0MUE3ODQ2MEVGQzRFCiswNzU1NjBBMgorOTkyOERCQjI4NTJGMTVFNTUwQzJBMTVFMkY3MworOUQ3M0Q0OTNBMTVERkZEMEZDNjQzMThFRDFBQ0FGQUY1MTI0MDNBNjIyNUMyNjM0OEYzOEJEMDE2MDdFNzRCM0I3MzdGMDBDOEVGQjg2RUY2NjI2RUE4MTVCQUI0OTMxMkE1Q0M5MkI2NkIzOENBRTQwMEFBNDU0RjJBN0UwODg2MjY0REZEMkM4MEU2QzVDQTI0QTFCREE3REI2NEFBQjg1OEI4NjI1OUUyQTA0MEQ3OUEzRUE5MTc2MzlGQzY2QzQ3MjFGQkYyRTFDMkZENjgzCisxRkJCN0JGNgorQTY4QjNEMDdGRENBNUVCNzM2NTQ5RkUxQUIKK0U1OEJDNjI5RUJDNUJGRkVGMzhCMTlGQ0REREE1MDg5QzMwMDA4QzRDNzk2MkZBMTNBMUZDRjkwRjYwRjBDNjcyNUI0REU3QUM4NTI0QjRDNUEzRjBFOTI4NTBDODRGRDMzOEZFQUNCMTRCMzQ4MEFBQTMyNjA1M0NBMzdENDIwNTRDNTNEN0YxQjExNkZCMjE0CitGREZCQTFCMAorQzcwMTQ0NjQ1NjU1RTg2OEMzRDk5QjEwNjhBNAorQUM5OTI0RjU1OTcyMzdFMTk5MEJEMUJCNjY0NDQ0NEFCNkMwREI3MEFBRTY0NzBBODI2NTE5REY3OTM0NDA4MTg2QTFCNjlDMzQ3M0VCNEJEODZCNkE2MDkzRTgzQkU0OTYwOTVFNkFCQkZFMzQ3N0EzNDMwREFENkNFQTUxOUQzRTVFQjk4NzYxRTc5NkQ3NDg0MkQxMDM2RTYzNkY5NjIzQkVFNUZBREJFREU5NDMyQjQ3NDhEMDQxMjA1RTVCNDYyRkQ1NDY0NjQ1Rjk4ODhBRjJBNTY0QUVDMjBGQUUyNjUwMTc4M0NEQzY5QzIzRUQ5RUJCMDgxRUEzCis2REI5Cis0NkFEMEQxQworOUE3RDEyNzUKKzMzM0ZBRTBBQTA1MTJEMTYwRDI4QTZCMjEyCis2RUM5REI5MDE5QTczNEUxOTdBRThEQzUwNzc2MEE2ODEzQUZCQTQ3MjVCN0E4RDJFRjE5N0U1Njc5NDA4REIzM0Q2Mzk5NURCNjQ3M0M5NzlBODBGOTlBNjg0RkE3MzM3NjZFNTQwMEFEOTI5NzNEMDZBRTZFODVERTMyQjI2REYwMjhERjYxRENGQ0I5ODRBNTc2RTFBRDRFRDM0NDMyNDlCOQorNUMwMTNEMjMKKzk2NEQyMDE3MzhCNDFDOTY0OUMxMTVGMUQxCitFNDU1Q0E4Q0ZGRDI1RTYxMUI0OTZFNjVFOUUzMTA3RDdBN0IyMkIyNDRBRjVGODZDQkFBNDYzNjZGMkRFRkZGMTZDMTUyMTk5NDA4RTA2N0I4MTUxMDdBNjVDODkzODM0MEIxQkUxMjEwMDVFMTFDQUNDRUFBMTU1MjM2Rjk3QTlDREI4NDk0ODA0NDY2QUEwRUU5NjBGQjU2NTRCRDk5QjhBRUNGNERBNjJDQjMwMTcwQzIyOTRDCiszMzUzNTEyQgorMjc2M0I2MUZDOTgyQUFCQ0I0REU2MjU2NkQKK0M4MzdBMjhGNzQzRThFOENDMTgwOTQ3M0REREM5MDRGRUJCQzg3OEEwQzA2MUJCNzFDRjhBNUI5NDY3Qzc5NkVBNkU1MTlDMDBBMTIxMDc2QzBFRjcwMEM4MTVERDlCRTU2MEE2OUYxN0E3Njg4QTEwQTY0OEYxMTNGNTg0Q0QxODk3NTVCQkYxNzA4M0U0N0NEODNGNTc4MkM0MDg3QTgyN0M0OTJGOTg5RkFFNUFGNUNEOTM3RkEzRAorNUI3QThFOTEKKzk2QzkwMTlDM0MyMDY0QzE1OEYzMjBBMjk4CitFMjRBMzg3RUZDNUNEOUJERjlENzE3NjdERUJDODEyNDc0MTg2M0UxMjA0NEMzNkYzQkIzNTlDRDQwNTRDMTcwQjgzQjAxOTZEOTYyRUUyNjlERDc1Qzg3RUM2MDg1NDNGQTMwQzY0QTFFNEM0RDc1MDFCQkU0N0EwNjQxOUM1MTE4OEVEODBDQzBDOUU0NkIwRDgwQkU1NDEzOTAKK0YyRTgzRDk1Cis0RUQ5NkVCMjRCMjQ5M0U5NEI4OUNEQTNDNworMTlEQTJEOUE1Njg0RTlCNDI4MDhCQzU3ODk1OTc4NkVERUIwRTU1RDZGNEU3REREMDBFNkY2RUNEOEQwNDI1NkQ0MEUwODYxMDNGMzEzOTFGRkEwQjE3NDY5QTk1NjBEMjhDMjBDMzIKK0NGRkZCMjFFCisyRDczNDlFMzc2Q0Y4ODZGQ0U4N0ZFMDJGMjlBCiswOEI1RUFDRDg2MTFFRkNFMjI1ODNCRTkzQUJEMTVGODgwNzBBNEFGOTRBMzZBNjA1REMyNjU2MTQ5QUQ5Q0ZFQzkyMTNFMUFDRTc1QTQzMDI5NzZCMEI1N0RDMjFBMTg4RUUxN0Y5QUFERDlDRjk1MjExREM5QkQzNUU1NzdCREVCOTAwQUM3QjE4NUNBOTIzQzVGN0VGNDNERjg2MzcxQkI2Njg1QkZBNzRCOURCMjk3Nzc1OUJCRjlBNEQzOEQxNTU5MkZEMzVCQkU4OUQwRUUxNTQ1NzlDNDkzNzU3MTdGN0MxMEMxMkRGNzMxNTJBQzI5MkYwMzU2REUKK0QzOTMKKzZEM0U1N0I0QTk1Q0EyRDZDQUQ3MTRBRDZBNjFGQUU1QjI2OTRFQjMwRTcwM0Q3QzRFQTVEOTk1Cis5Nzk5NjA4MQorMTEyNDg2OUZBQjZENDdDMjlENUZDNERFNThEQgorRDJERkRDRkNBRTBCQTc3NDBBMjRGOEQ2NEEwRjhFRTgxQUE2QTY0NEY5NzUxMTdDNjE4NjYxRUQ4RjMzRjhDMjlBNTQxN0M0RDkzRDU2N0Y4RUQ2RTI1NTU5MTA2Q0JEM0Y0QjIxMzVGRTIyNEIxRTIyRTQ4RkY2NzQ3OTdFOTc4RDVCNDc0OEJBMEU4NUM5QjFENTgyMDVERTUwNzAyQTIzRkUyMkZERDNCNjRCNDJDQTRBRDU2MzBFQzRDMUQ5RjY5MUU3MzY1MEIxRTUKKzM5NEYwRUE0CiswRDEwNjM2MDdBMTY2MzAyQTY3QjQ4NTg1RgorQjBEMEVCNjBBQUM3MzQ5MzIyODRBRjIxODRERDdENkVGNUFBRkEzMDgxNkI4QzVFNzJBOUIwMEQ3Q0Q0RTI1NUY1OUYwNUVBMzA3NjM0QThBOURCREQ1MzlDRUEzREVGODREMTZCODRDMDVCMUE4N0Q0NTA5RkRFREU3MkM1MkE1Rjg2NjczMTc2OUEKKzgyMDIzQzFBCiszMDNBOURDNUZFMzIxNDUwODc0QzVDM0NDNjg5Cis1QzA3MTdFMjg5N0NDQTVDQUVENDNGQzc2NDBGMEFGRjNGMTEzRTE5N0I4N0FDODFDM0JBMTM1NTgzOTA2ODc1RTMzMDUyMTJFNDgyMUVDMjI5QUUzMjYwOUY4RDgxNjQ1MThCQ0E5MkEyQzNCMjUwNUMwNTFCRUUzMTZENUIxNjk3QTIxNkIxRTExRDZCRTc3MkQ4QjZCMENEMjNBQTQ3NEUzOUNCQTFCOUJDODIwQTUwOTdCMEQ2NDJBOTRFQkM4OEVBRTcwODMzQ0FFMUFERjBDMzM1QTZFMkM2ODQ1N0U0Cis1RDFDNjJFNworODJCQkMzODFGMTk5MDNBOUE0Qzc2RjRGNkYKKzcyOTgxMTZFRDI2NjQ1OTlDNkM3RTU1MzI3N0U1RERGM0RFNjk5MERBNThEMzNFRjE3MTVEOTkxOUM0RTY3NjAxNDBDMUIyNjdBRTI5REZGNzJFOTEwMkFFRTM5NzNDOUU3M0JFOTgzQzkxRjU5NDdEQ0E0OUZBOTI4M0I3QTAyRUM1MTE5QTMzQUE1QTE4MTlCNDNBNjg5MzRBM0UzQTE1NkFBQzlGRUQ4MzZFQ0E1RjMKK0EwMzMxQTA1CiswNzRBNjQ5MEJDQTA4Q0M5QjkzNDE2QzRDRjgxCisyNDlBRjNERDlCRUNDQTRENDMxRTIyMDY3NjAyODRFMEYyMkRCMDc2N0ZCRDE1NTAxMkUwMkE4OTBCQ0M4MUQ4NzAzMzBCRTNFN0JDNzU2QjkwQ0YwODNDMTAwQzQ3QjRDRkQwNUQ1MDc0N0FCRDNCQjQ2NEJERTE2Q0M5MjY0Q0EwNThDRDIzRDA2OTEwOTJCQTA0OTQ4M0QwOTJFNkZBRkYxMzVCMDcyNjJBRTNEN0EwMkUxRkE4OTBCQTQ3MzFEMDBFQUZCMjVBMzFBN0UyNTZFOTM1NjVCNEUxMTE1ODI3REEwMEU5RDE4MjM1QjAzNAorODAzREMzQjcKK0IyRDE5MjAzOTE2RjVFNzYyREExOTc5QzFBCitFMDI5NDNDMTk0NjI0ODY0NjUzRjczNkY0N0MzM0VEOTAwNUU4OTQzODc3REQ3OTZCNTVDOUE4QUE4QkNBQUM3MzEzRTRFN0U4NThGMjkzMTNGMEEwRjU5OTIxNzY0RTA0NjAzMzA4QzhCNTUxMzQwQTVDNTRFMTI1RTI1QzkzQ0NENkVEMDk2CisxQjQ0NjA5MQorMDIxN0MwRTEwQjQwODI3QzEwODFFMDNGQTEKK0Y0RjQ4ODA4ODBBOUVBN0FCQjkxRUJGOTQ3NUQwRjM5QUQ3MjZEQzU4MEU1Mjk3NjRCNjIwN0I4MTk5MTUxN0M4RTBCM0E5ODM5NDNBRDFBRkY5M0YwQUQ5MkEwNEZCNjczOEI4NDY4NjZERDc5ODlCMTc4OTMwQjk4NEMxNURDOUJDQzRGNTMzNTZEMTkyODI0NUVDRDlGRkU0MDBFQjFBNTc1RkIzNTIzMTBERjE5NzFDMjlGCis5RDlGMDRFNAorQ0I0Qjg4RjBFQkJCQkQ1MEI3MjI1NUEwMTZFQQorOTI5MUQ5MzJEOUMzMkU1NTY3Qzg1RjFGNERGNkFCNENGOUQxNTJBMTM3MzZCMUI3NUVBQkYxNTVFNDg5MUJCRDkyQTYwN0U2M0YwRTE1RjNFNERGRTYwQUJFRDM1MzI5REMwNDY0QjIwMDQxRDZDMzJDOTY1QjI1MUFFQTcxQzIyNEFDNzRERUI5QTU2RURGODVCNEJBOTlCNjFDRUNGNDBENjVERURBQ0E4RDJEQ0U1RkEzRDRFREJGMTcxQkU0QkIwRDJDRDRCMjVEMjg2RkVBRkNEMjNBMDlGODVGQ0VEN0Y4MUI2QzdFNEEwRDYxOEUzQkVEMEU3NkIxCisyQUY2CitGRQorNDI5Rjg5NTAKK0NGQ0NFMDdCQjAwQUQ4MUUwQ0QxMjkzQUNFCis4NDg1MkFGMzE2NUU0MUM2QkUyNTkyOEMwMUZERDlFMUYyMTRBM0UxRERGQjlERUVBNkU2Q0E3RDZDQjAxNkI1OEFCRDYxNEI0M0MxQTAyNkEwM0NCQkM3Qzc2RjM4NTNERDY2ODVGRERBMDk3RkE4OTA3QzdCMzIzMworOEZERUQ0QzMKKzFGRDA0RDNGMjRGQTQ0NjIxMTg3RTAwNjJBNkUKKzc3RjMzRUI0MDlBQ0MzQkEKKzEzMjdFRjE0CisxRERFODVENENEM0Y0MjAwMUJDMUZDOEM5ODQ0QTYzMDJDN0UyQzgzMjYzQUFBQTgxQTc5QzFGNDIyMkUzMTg2OTNDRgorN0JBRjk4MzNENUI3MDlCNzVERUZBN0FGMDIwMjNEMzZDMjk3MURBN0RCMjNGMTg3ODQ1MENGMUMyOUJDMTg5RjlDODM1QkIxMTRDRgorOTdCRDE0MEJBODVBMDM1NzA2Rjg4NTREN0FDOTFCRkI3NERCQUE1OTVDMDQxNkQ2NDFCMUNFCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hpCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoaQorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGkgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDQ3IHB1dAorZHVwIDIgL0MwMTAxIHB1dAorZHVwIDMgL0MwMTAyIHB1dAorZHVwIDQgL0MwMTEwIHB1dAorZHVwIDUgL0MwMTExIHB1dAorZHVwIDYgL0MwMTEyIHB1dAorZHVwIDcgL0MwMTE0IHB1dAorZHVwIDggL0MwMTE2IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xNDQgLTIyOCA0ODAgNzI0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MkQ3NDgyOEZGNzNDN0VDNzBGNTM3MEIxQkI5OEVCRERBQworNEUwQkZDNzE0NEU0OTVDQjE3NUJCM0JBNzAKKzMwM0YyQzAwMUE2ODcwOUM5RjY3OTU1MkUxQjUxMUUzRjM0MDg1MUYyOTlEOTY0NjE3CiszRjY1NTMwOAorNzczQTVCN0VBRDhGOTM4NjIyRDZBMzY0RTY1QgorQUFGRDc2N0Y0NjRDRjIwMkE0RTMxNkZFRTFCRjM5RTA3NjQzRkRBMUU4QTRGMDA3MDE1NTcyQTI3NjFDMEEyOUM4QzJFNjgxMzVBMzVDNzBGMzM0N0EwQkY2Q0UzNTg5NjNFQkJDODdGRTIyQTAwNzNBQTREMDkyMTk2MjZDRERGQzEwRUQwQzJBMjZFQjlCQkFEMTgzN0U3RjMyNUIyRUE0MTlCMUY1QUM5MUYxOEEzQTk5MDI2NzFCRjNBQTQyREQ4ODM2NENBRgorQUUyNDQ0OTIKKzNCQjA1NDVCQzdEQTcwMjRENEQ2MTkyRDExMEQKKzA4MzgwNEVENUI1NTBGOEZFMzA2Mjc3OTY0RTVFQUNDMTM2NTYzOTQ5NkM1QjBENUQ0QjE0N0RBRThBOTY2MDE0QzkwN0M5OUVGNTE0MThCRTRDMEQzNDAwMkMwQjkwQUY0NDIyNDY4RDEzRjFFRTM2OTlGN0FBQkNCMzI1MUNCMjMyOTFDREQ4OEFFQTQ4RDU4MTFFNjkyNTM1MTlDOUNCNjY0QkU3RDM3MzRDRUMyN0ZFN0REMTM4ODkyMUM2QzI5QUQ1RDA4RjNBNEI1MzIyOTdERTQwNzE4MDRENjRGQTAzMjExNTQ4Q0RBNDY1REU1Qjk0MDgwNTMwRgorNUMwNQorRkZDMkExNzcKKzQyRkFFNDE0CiszNjlFNUI1RUQxMDY2OUIyNDRCODhGQkU5MzJGCisyMUVFMjdFRjU5MjgwRTk1NUY3REEwQUJEMTNFNTc0NjBBRkE2MjJCRTJCMUNFRDdDMzZBRjczQTgwRTlGOEFDODZGMDI1MDJEQTNGNkE5RjQzMjQ5NUMyQzUwRjQwRTUyN0ExQTYxMDJCOUM1Qjg5REU1OUE2QUQzOEFDOUI1MjIwNDc4QUExOTNENjVGMThEQjc0RTc1REQ4MEJCQjU0NDAyMUFCOEExMUQ3ODA4Mjg4NDQ4NzM3NDNCRDkwMTg2OUNGN0FGM0I4QUZERDJCM0UzRTNEQzFFMjcwQzUwQjY2RjMwQkRCQUExRDVEMERCNTkwQjQ1MUI3MDEKKzJERUQKK0E2OTMzOEE5ODkxMkY5QkI3RTYyNkU2NEJFM0U2RTI2QTlEODM0NDdFRkMxQzYzNjdGCitEMTA5Mjc5MworQjI5RDNFNkMyNDc1RDk5OEI4N0IzRkRBMkMKK0MzNDcyRDZEQ0VCM0YxOTQwM0Y5ODI3N0JEMjI5MjMzQUVCNzY4OURDRTZFQTI3RjMxMjBDQTYxMTlBQTZFQjYwRTcxODM1QzE3QzIxMzRCOTZFOUYyREI3RjlDMjU3RkRFRTJCNkI5NEM2OTFCMEY2MDBFNEFBQkE5RjkxRDc3MkY0Njc5QjI5OTgzNzUwNjNFMUU1Njk2QTFFNEE3OEM0RTZBNDBEQ0NDN0JBMkVDN0JFRTI1QkZBODlGMUEKK0EwMTM4QUYwCis2MkIyRTdGOUI5M0VERTM2MDE5NTQwRTM2QUE3CisxRDQxMTFDQkIxN0Q0MEQxNUZEMTFDQzdBNjZDMkREQzU5OEM3RTk0NjdFQTQ0NEY4NDM1OTAwQ0JCQ0RFRDc5ODBFOTU1OUM5NzMyRDU1QTVFQzg5NDIxMEQxM0FBMjNENEMxMzRBRjA0NUFDOUFCQjk4MkZBRjY4OEQzM0ExNzQ2RTVGNTg1RUREMzY1OTk3NUE3MkEwNzFFMDI5MjUxNENFNEI4REZEM0JEQUFCNzgyQzg4NTNENkI5QzlGOUFGREUzQzA5OTIyOEM3ODZGMzlDODg1M0FCMTkwQkU1MTFBRERDQTE4RDQ3NEE3MzU3M0Y4MTgxQ0ZCNDIKKzUzMzYKKzk2RkRDNzg3NjAxQzZFMkI2MURGQTE2MzBEM0U0QTYzRDFBM0FCNDc5NTFFMEQwMUU2QzQ0Q0ZFMkVCQkU0REE0RDBCQkYxRkU3MEM1NzhCRTYyQQorQTQ4NjExOUUKKzJDOTZEQTA3NDdDOTZEQjlFRjA3MEY2NEVDCitCOUE2ODA4MUZGQjZEREY3MDIxRkE0REQyNTExREU5MDJDREY0M0I0QjU4NDk3M0VBQjMyN0Y5ODM1MDBEQkQ1MTc0QThDQ0ExNDkxMDkzREFCRThFNDExMjk0QkI3N0Q3NzE3ODYyMjg2OEYwQTUxNzg4Q0E5MzczRjA1OTlGQkExQzk5RjdBNkEyMjdBMTQzNjQzQTY3NEYzMjAzRkEyQzRGREZCMThDM0IwNURFRkQwNjAzOQorOTZCMDZGNzgKKzdERjEyQkZCNDk1M0UwRTc4QzVFMzAwQTM5Cis0QTlFMUREMkQyQzNBQzhBMkU4RENEQzNDN0Q0ODM0RjAwQzU5ODI2QzM0RUFCRTg3NjEwNjUxNjEzMzgzODhFOUI3MkJBODg4NjVBOTRCM0ZFQTY5M0ZEQzk4REM2QUQwMDMyQzQ2QjMxQzJDQTE2NzY5RDM3RUQ0QzgxOTA3MzIwQzFCNzMzM0QzQTdFMjczNTA0QTEzOUNBOTFDNkRGNTE1Rjc5NDVCMkQzRTMKK0ZCNkQyRUZFCis3NTQ5RkMyRUQ4MUY2MDMwNzBBRUY1RTQwMjQ2CitERTEwREYyQjc0N0Y5NDJCCis0RkE2Q0E5RQorQTQ0NDZFODdGOTQwRkJBOEQ0MjU0OTM2Mzc5RDEwMkRFNDMxQUZFOTg0NDAyMjc5Mzg1QTczRTFDNjMwRThCMkZBOTgKKzM0ODU0RkYyOEZERjNCQUI5MTYwRTczNjdFRDVFNTFCMjQ5MUQxMjBFQTc5NDBBOUNDMEQxM0YxRUFGM0Y3REI4RjdBNkUyQzVFNTEKKzA2NkNERTI4NTdCODk5MTE2OTY0ODQ0QkZBNDU2MDIxNjM4RTgzNUIzNDRCREY4MUJEQjYwNgorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyaSAxMi4wMCAvUFNPd3N0ZHV0Y2hpIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDBhMTExZTFiMTExYzEyMDUwMTA2MDEwNzExMTkwZjE0MTgwZDFjMTYwMTEyMWExYzAxMDkxMTBkMWQxZjFjMTUxOTEzMDEwYTExMWUyMTFhMWMxNjAxMGI+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MTExYzEyMWExYzE4MGQxOTBmMTE+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDA0PiA5NDM0IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA2MTAxMzBjMTE+IDEyNzEgMTQzMSAwIDE3NTQgLTEgcworPDAwMDQxOTE3MTgxNDEyMTAxYjBjMTgxMDE0MTM+IDE3NTQgMTQzMSAxIDMxNDIgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDBjMTQxMT4gMTI3MSAxODU0IDAgMTYzMSAtMSBzCis8MDAxZDBmMWMxNTFiMWUxZDAwMWIxYzFhMjAxNTEwMTExMDAwMjExNTFlMTQwMDFlMTQxMTAwMTkxMTFlMWIxMTFjMTIwMDEwMTUxZDFlMWMxNTBlMWYxZTE1MWExOTAwMGQxYzExMDAyMTFjMTUxZTFlMTExOTAwMjExNTFlMTQwMDFlMTQxMTAwMGQxZDFkMWYxODFiMWUxNTFhMTkwMDFlMTQwZDFlPiAxNjMxIDE4NTQgMTIgODgzNCAwIHMKKzwwMDE5MTExZTFiMTExYzEyPiA4ODM0IDE4NTQgMSA5NTMxIDAgcworPDE1MWQ+IDEyNzEgMjA5OSAwIDE0MTAgLTEgcworPDAwMTUxOTFkMWUwZDE3MTcxMTEwMDAxNTE5MDA+IDE0MTAgMjA5OSAzIDI0NzAgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMTA1MDYwODAxMDQwMjA4MDYwMjA3MDM+IDI0NzAgMjA5OSAwIDM0NjAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMzAwMDgxMjAwMjIxYTFmMDAxNDBkMjAxMTAwMTAxMTBmMTUxMDExMTAwMDFlMWEwMDE1MTkxZDFlMGQxNzE3MDAxOTExMWUxYjExMWMxMjAwMTUxOTAwMGQwMDEwMTUxMjEyMTExYzExMTkxZTAwMTcxYTBmMGQxZTE1MWExOTAyMDAyMjFhMWYwMDIxMTUxNzE3PiAzNDYwIDIwOTkgMTMgOTUzMSAwIHMKKzwxOTExMTExMD4gMTI3MSAyMzQ0IDAgMTcxMyAtMSBzCis8MDAxZTFhMDAxMTEwMTUxZTAwMTEwZDBmMTQwMDFhMTIwMDFlMTQxMTAwMWQwZjFjMTUxYjFlMDAxMjE1MTcxMTFkMDAwZDE5MTAwMDBkMTcxZTExMWMwMDFlMTQxNTFkMDAxNzE1MTkxMTA1PiAxNzEzIDIzNDQgMTEgNjA2OCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA5MDUwYjA3MGEwODA1MDMwMjE0MTUxODAyMTMwZTE4MTUwZTE2MGY+IDEzOTggMjY5MCAwIDM3NDAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxYTFjMDAxYTE5MTEwMDE3MTUxNjExMDAxNTFlMDIwMDFlMWEwMDBlMTEwMDFkMWExODExMWUxNDE1MTkxMzAwMTcxNTE2MTEwNT4gMTI3MSAzMDM3IDcgNDQxNyAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA5MDUwYjA3MGEwODA1MDMwMjEyMWEwMjEzMGUxODE1MGUxNjBmMDIxMTE0MGQwYzE4MTAxNDEzPiAxMzk4IDMzODQgMCA0NTA0IC0xIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICg4KSA4CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzMgcHV0CitkdXAgMyAvQzAwMzQgcHV0CitkdXAgNCAvQzAwMzkgcHV0CitkdXAgNSAvQzAwNDAgcHV0CitkdXAgNiAvQzAwNDEgcHV0CitkdXAgNyAvQzAwNDIgcHV0CitkdXAgOCAvQzAwNDQgcHV0CitkdXAgOSAvQzAwNDUgcHV0CitkdXAgMTAgL0MwMDQ2IHB1dAorZHVwIDExIC9DMDA0OCBwdXQKK2R1cCAxMiAvQzAwNDkgcHV0CitkdXAgMTMgL0MwMDU2IHB1dAorZHVwIDE0IC9DMDA1OCBwdXQKK2R1cCAxNSAvQzAwNjMgcHV0CitkdXAgMTYgL0MwMDY1IHB1dAorZHVwIDE3IC9DMDA2NiBwdXQKK2R1cCAxOCAvQzAwNjcgcHV0CitkdXAgMTkgL0MwMDY4IHB1dAorZHVwIDIwIC9DMDA2OSBwdXQKK2R1cCAyMSAvQzAwNzAgcHV0CitkdXAgMjIgL0MwMDcxIHB1dAorZHVwIDIzIC9DMDA3MiBwdXQKK2R1cCAyNCAvQzAwNzMgcHV0CitkdXAgMjUgL0MwMDc1IHB1dAorZHVwIDI2IC9DMDA3NiBwdXQKK2R1cCAyNyAvQzAwNzcgcHV0CitkdXAgMjggL0MwMDc4IHB1dAorZHVwIDI5IC9DMDA3OSBwdXQKK2R1cCAzMCAvQzAwODAgcHV0CitkdXAgMzEgL0MwMDgyIHB1dAorZHVwIDMyIC9DMDA4MyBwdXQKK2R1cCAzMyAvQzAwODQgcHV0CitkdXAgMzQgL0MwMDg1IHB1dAorZHVwIDM1IC9DMDA4NiBwdXQKK2R1cCAzNiAvQzAwODcgcHV0CitkdXAgMzcgL0MwMDg4IHB1dAorZHVwIDM4IC9DMDA4OSBwdXQKK2R1cCAzOSAvQzAwOTUgcHV0CitkdXAgNDAgL0MwMDk3IHB1dAorZHVwIDQxIC9DMDA5OCBwdXQKK2R1cCA0MiAvQzAwOTkgcHV0CitkdXAgNDMgL0MwMTAwIHB1dAorZHVwIDQ0IC9DMDEwMSBwdXQKK2R1cCA0NSAvQzAxMDIgcHV0CitkdXAgNDYgL0MwMTAzIHB1dAorZHVwIDQ3IC9DMDEwNCBwdXQKK2R1cCA0OCAvQzAxMDUgcHV0CitkdXAgNDkgL0MwMTA3IHB1dAorZHVwIDUwIC9DMDEwOCBwdXQKK2R1cCA1MSAvQzAxMDkgcHV0CitkdXAgNTIgL0MwMTEwIHB1dAorZHVwIDUzIC9DMDExMSBwdXQKK2R1cCA1NCAvQzAxMTIgcHV0CitkdXAgNTUgL0MwMTEzIHB1dAorZHVwIDU2IC9DMDExNCBwdXQKK2R1cCA1NyAvQzAxMTUgcHV0CitkdXAgNTggL0MwMTE2IHB1dAorZHVwIDU5IC9DMDExNyBwdXQKK2R1cCA2MCAvQzAxMTggcHV0CitkdXAgNjEgL0MwMTE5IHB1dAorZHVwIDYyIC9DMDEyMCBwdXQKK2R1cCA2MyAvQzAxMjEgcHV0CitkdXAgNjQgL0MwMTIyIHB1dAorZHVwIDY1IC9DMDEyNyBwdXQKK2R1cCA2NiAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yNTYgOTc4IDczOV0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNDJEMkM3QzUyOTg4QTE2RDNBRDYzRkEwQTZBNTMxRjU5OAorODJDN0ZERkNGOUY3N0EyOTVGMTFDRkZCCis1QjEyRkQ0MDMzMjM1MjMyNTQKKzRFODZCQTlGCis4NzJENEU1NTM4NDcyMDBCNDg4QTVGQUVFNworMDFFNzQzODVDMzVENDlGQjNCNkRERUQxQTUyMkEwRkFEQTE4QzFBQTRFMjNCOEMwNzBDMEZBMjk3QjIzQUQ4MjI3OUQwOEY5OTFFRjEwNDA5MTU0NTJGRjIwMEJFNjJGNDM1MDE1RTRGOTA3MTlCOEM1OTlGN0MyMDk1RkRGNzA2MjAwNTlCQzZCCis1NEI0MzNCMworQTlBMkM0RjJCMzAxQTMzMTdFQjJBNjM4NjJENgorNUFGNEU4RDQyMzVGNTM2QUY5ODJBQ0E0N0UxNjgxMzJBNTEyOEI5RDRGQ0Q5MjYyOURDMEIwNzExMzg1ODg2Rjg5MTQ0NkQxMjA0NzVDMTEyQkRBOEYyOTBEMEI5QUUyQTUzNkM4ODY4QzEyREI3N0M5NDQxMzA4MUY3NDIxN0M4Q0I4MzVGNENBNjc4N0Y5Q0ZFRkU4MjU0RDYwRkMzNkJFRThCMkNBM0U5QTY4QjREMDlEMzUyRkU4RjIzMDYwNjA5QkM0M0E0NTBGNjgKK0VEM0E4RDk1Cis1OTEzN0VBNjgzRDMwQkYxNkZDNTFDODZGRQorQkIxNTQyNEJBMDYxNjJERDU1OTVFN0Q1Q0M1REI4MzU5RTZCNkQyOTRBMzA4N0E1MDYxQUMyMEE5QzM5QjlCODlDRDNCNTdCRkEzNjlFN0NBRUYwMUY2MkU1MzA0NDhBMjMxNTY1OEFGNzIzNkM2MAorNEQ3OTkwREUKK0I3OTdBQzFCQTE2OURDQUYyNjQ5NDAwQjRECis5QThCRUE1MEU5NjJDQjYxRkIyMkZCQ0E5QjVFMUFGNjEzRUVFQjNCN0E0NTRCRjQ0MDNDMkM1ODM0NkQ3MTM0NzcxMDdGODY1OERGMjA3MUZDMkZDMTFFMEQ4Qzk3NzJBQTczOTI2OEI2Rjg3NzgwRjhCRENFQTM3NzE2MEJBQgorNkJBRUQzNzMKK0UxNjQzMDNEQzNCQjc1NEEwOEI1ODc0MERDCitDNEJBOTg0Qzk1OTdEMDQ3N0U2MTY3MkZFM0U1Rjc3N0NEQkNFNjQwRjdBMDc1OEUxRDU4RkIwNUQxNzI5MjE1RUZCRTFEMjRBOTJDOUY4RTVCRjEyQ0Y2NzQ1NEMyN0U1OEE5NzUxQ0U1ODNBQTk2MUNCMTkxOUVEQUM2MDYKKzBFN0Q1QkQzCis4RDA2Q0IwRkExODA0Nzg5OEE0ODA4RjRBRkU0Cis2MUU1QTJFRkVEMUQ5RDBDNkI2RTRBQzZFMDY5NkIzMTRCREZBNzEzNzU1M0M0RTdDRkExRjMyNUI0REU0RDQ5Q0JGMDlCMUE4OEEwM0ZERTAyODZEQjhDRjdEQTJCM0E0RjMwMUQ3RkZFOEUzQTJFRTAzODUzQjk0MDIxNDVDNUJDNEMyQjc3NTRGMzMzMUMyNjdCODgyMDgzRDk2NDBEOTQxMUI4NURFMjUxMDBBNTlERDBFRDFBRTAyMDgzOUYwRTcwODZEQTIwNzFCOUI4QjlDNTdDRUFDRTE3RDIwOEVCNjc2MkFFMkM5NjA2RjhGQ0NCOThCMTNDQUQKKzkxREMKK0U3QjE4Q0VGQ0UxNDFENEJCOTE4OTk3OUMxNzJGNjBBNUNDRDZBQTgxRDZGMTZCOTVBNUIwNTVFOEQ0NDY4QzhFODJEMTZFNEMwNjkwQUFBNjIwQTM1MDQ3MjJEMUFCOUNGNzQxNDNGODYwQTAwOERFQjk1MkRBMTgyOTUwMQorNkZEQjk1MTMKK0EzREI0NDI4ODhBQTRENjc3MjY5N0U3OUE1CitGNEY2NUZEQzhDMTRFMjAxRTA4NzQ3REEyNzIxREMwMDM4RkEzNTkyRTJBMTkzREU5QkNCOUM5QkE5RUUwRUNDMzk3QUM4RUQzNzRGM0Q5MDFFRUEyQUQ3NTg2Njc0RDk5REZEOTc1ODJGN0VDRDVEQzYKKzc4RDgyNEM4Cis1RkZENjMyRjIxNUVDN0VEQzU1OUE5RDIzNworMkQ1QkUxRTBFNkE3OUMyRDU4NkUxOTdDNjkzMkRBQUI5QjhEMTZDNjBCOTRFNgorQTNDREUyRDEKKzA5QkYxNzc5M0E3NjY5NEU1NTlGN0I1MzIzCis3QTZCRjA5MEFBOEFFREU0ODZGMDIwMkZEQ0QxQkFFQzYyNDA2Rjk0MThENDZFRTg0QjE3RDgwN0UxRDg1RAorQzhEMzA3NzUKKzNGRTEzRURFODQ0NEY4NjcxRjI0OEQwMkVBCiszNTNFQTgzNDQyNkJERUVGQjg5M0E1Q0NDNkExQjVBRDI1MTcyNDdBNzc3MDI2NjI4QjA0RUY2MjJEOTU3MEY1N0QxRTAyOEJFM0JCRTA1NkQzMTM1MkFCQUQ1N0EyREYxNTk0MUQ2OTY5NENDREUyN0VGQURGOTYzNjJDQjZFNUFDNUMxQTVDQkNBODIzNzM0M0MxCis2RkRCOTUxMworQTNEQjQ0Mjg4OEE3MjJFMDAyNjY2NkFEMzAKK0I2NUMxMUMzQTkwMDQwNjYyQUFGMDU0RTUyM0RDQ0M4M0I5QjM4RkU5QTNFRkYyNjZCRDRDQUI2QjA4NkNBNkNGNDMyOTFCODU4MEU4QkUzNUQxNzE4MURFN0IzNkEzMzVCQkJEOTJCOTlBRDRCQUNBMTVDREMzNjMxMTk5MAorNDUzM0UxQzkKK0RBNTY0ODgwRkQ2ODJDNTc0QTUzMUQzNjE3NDMKKzlDMDA2OUI1RTVBNjk1RjU3NDI0MjU3NDM1OEI4MzY3NkJBODMxNDhEOTRBQzdERTFERThERUIwNDFDQjFDRTI1QUFGNkYwMTE3Nzk3RDkzQTYyRUU5MEY2OTAwN0Q4RTc0RTJGMUU2QTZGNjE0RDcyM0E4OThCQTkwQ0NGMDA3RThFQzAwRUFENDQ5NDE1NEY0Rjc0MEFCNTAwREM0Q0JFRjdENEM1RDQ5QjY1QjJCNDgyRkMxMTU4MzYyQjk3MDZENzE5RDA4NUFENjRBNDJFN0E3RTg5OUFDMzg5NDNBQTVEMUIwNTYxMDhCRjI0RjM2RTMKK0RENTJFNzg1CiswRTVFNjEzQzk2REM4NkY4RjJCRDgzQjJFQgorM0JDQjE2RDY5RjQzNEI4NEVBRDRDQzM3RDlFOTI4QTMyNDU5NEU5RDdGM0Q1MzZGNzlGRjYzMTU4NTlDM0RBNURCREYwNkMxQ0NFMzk3ODFCQkIwODY0Rjg1OEM4MjhEMzVGOTQ4MEVGOUI1Cis4NzI4ODRBNQorOTc1NDM3M0RDNEJBMUM5RDA5QjgxRUM2N0ZCMQorNzZGMkVEOTBBNDRERkYyRTUzMkRCQzgwQjAyNENCQjI0N0U4NjU4RTgyNTY2RTc5NTQ1NTRDRkIzRUUwOTQ1MUMyRjlDMzNFQjc1NjdCNDdFMDM3RTNDNTkyMDc1MDkwMjY5RUZFMjRCRUJBMEM3NTE0RkFBMDFDQkU0RjhCMkNCRUNDRjgxNTk5QjVGQkFCRjk1ODgzRTNGNzM0NzQwRDEwOEE1MDg1REIyQjcxQUU4MzFDRjIwRjQ5NDc0RTVCOTM1MEVDRjExNjBDMTQ0QworMzNCMUZEQjMKKzhCOUFCMTBDRkNDOUU0RkEwMkI3RjRERDYzRTMKKzAxMTc3OUVBN0ZBNDNCN0U2MzdCN0Y3MTI0OThFNTA1MzAyMDNGNzk4MUE0NTFFNzVDQjMzNTAxMjgzRTJEMDczRjM3ODg1QzMyMUY0QkNDNEQwOUIxQUFFMzA5NUVGOTUxRDA4RTU2OUJCOEE1Nzk4MDcxMkVGQjkxOTc5ODNGQzA5NDM4NDU1QUJGOTRFRUNCREY3MTIzNDNEQjNFODlCRkNEQkM5NjVFRTQ2RjQxREY3MjA4QjBCNTUwNDM4RTI1MTI3RDA3N0JGOTE4MkE5RkU1NjI2MTNEOURCQjU1QzRDQjY4Cis0NUUzMUZGRQorOUVGRjQ0NEYxOUY0RkFERTA5RTZFOUI4Mjk0MgorNjdDN0I3Q0ZDMzFCQ0NCMDNFNzI3NTU1RDJDRTE5RTU1NUU1MTc2NjM2MjlGNDVBNDI2QjFERjRCNTA4QkYwMTJGOTkxMEFCQkRFQkQwMUEwNjJGN0E5NDY5M0IxNzJGNjExNTE5RUFEODc4MDg0NTkxMDZBMzVCRDQ2QjdCMUIwNjIyRjc5QzQzMkYwRjQ4QjA3MDVBQzA1RDU3QkE1N0U5NkNGQzM1M0E2NDVBMDRGOTcwQUU4RTc3MUFDOTBFNkI0QUYzNjlGOEY5M0M3MEFDODc2Q0E5NjdDQ0QzMTY5QjJGNkJCMTRBN0NDQUVFMUI4Q0M0QkY3QkRCCisyNTg0Cis3NAorMjU1RDlBREEKKzEzQzZGRTA0NUM1MEIyREE1NjU3QzBDQzcwCitCNThBNTAxODQwNzg1QzBBMzE4QzQxMUU2OTBBMUY5RkE1NkE2OUM4NzBGOTdFRDg4OTY2OTRBQzdCQUZEOUJCQ0FDRUE0RjE1OUVFMUNFQjIzMTgzNEVCRjUwNEVDM0UzMzEzNkVDMzY3MDMxMUM2MThFQTM5RUJEMEYxQzI1MDhBOTFBRjEyNjEzRkNGMjY1QzI5NkZFOEQwRTgzRjQzODJEMEI0NTQwNjJBMzhGMUFCNEY1RDYwREQ0MUFDQ0U5MQorNTVBNkNFNDEKK0MwQ0JDNDdEOENDNzk0MDYwMTZDNzA0MkRECitGRjMzQTk1NDc1NTI1OEI4N0FDODQ2QkIzM0I0Mjc4NTU0NzdBMDRCMUU2MEE5NTdFMDRERDRDRTFBNUJCQjZCRUMyRUMxQTFCRDYyMUNCMUQxQzM3MUQ2REUwOTVCMzEwM0VGRjIwRjlDQzE5RDdBM0FEMUY2NEI3RDdBRDA0QTMzQkRBNUUyOERBNDg5RkI2RkI3QTlEMkZBODFENzU0MzNGNjRBMzg0RDY3MTc3ODQ3MEFCQzIxRkRFQ0IwMjU2NzYxNzgKKzQ3MjFGNjIzCis1OEUxRUYxOUZFNjFERUUwNTFDQkIwRERGOUEzCis5NjNEMEIxMUNCNTlCM0NGNzg3NzhCQUM1ODExRjczNTI4RURERTE2NjlDRUFFRkM3QTk5MzREMTZBQzZBQUVBODhEMDY2ODEzNDJFRjY3NjE0QTYwNTU5NTQ1MUJENDVBOENDQUM2QTc0QkUwRTAwMjFDRTY2OUFGQjg2RDMxRUFENEI3MDRCNjQzNDA4RTE5NjdDMEJEQzI3MjhFOUQ0RDQ5M0MwNzZFNEIwMzE0MTU1REIxMTY2NzY2Mzc1RDI4NDc3Q0E5NEQ1MkRGOUZBQUMyNDA5RDU0QzFDQTlDREU0ODQxN0QwRDI5NUE0OTM4NkYxMkREMjQ0NEYKK0ZFRTQ1QjU5Cis1MDBCQjQ2Q0MzNUI1ODZCMUVGQzI1OEEzNDNDCis3MkE4N0Q1MUU4Njk3MDk5RjhDMEEyRDZFODI3QThGODAzMjVBM0MwMEFERDhDRjgxOEVGMkNDNkZCNzc5RDEwQ0VEMTFDNUIzRjkwRDM0ODdERjVENjE3MTdGRDlFMDQ2QzQzQ0Y3QUVERkNBMjFEMDNENTE1NUM4MjYyOTJFRURBNDY0NDdDNTlDNTdFRkE1ODFFNjQ1MUJFM0UyRDUwQjdBOEU3MTc3QkFFNUZEMjMxOEQzMjk1NzVCRjM3RjM2OTgyMDU5ODQ0Rjg5MjJEQ0MKK0E4NENFRjBBCisxMDIyQ0M1MDZDNzBGNzQ3RUE2NDBBN0JBMzRECis3QzY1NjIyNzM4NEVBRjVCQzc5NzY2N0RBN0U5RTI0QUQ2RDhDNTZBNkE3MkQ3OEE0MDUzNERCQ0ExOTk3RUI4NjRDMEMyRjczRjEwOUFFNDc5QUQzNDQyNDA5Q0EyRTE1MUUwQzE5NDNDM0M0MzlBMTBBQUVGM0QzNTE4MjY4NTQwMTAzMTEwOUQwNDRERjQ0QzVGN0QxREI4RTUyQ0MxRjYwNkYxREMzREREOEQ1MDZCRTZGMDYyOEUxMzMzMkU4NDU2MkQ0NDJDMTc5MjVBM0E5M0M2QjA1OTI4QjU0MjdDOThBQzFDNEI5RkY0OTYyOEY1CiszQzk5QkMyRQorREYzMzY2QzZGNjU5RUNGM0Q5NjI5NkJCNzZFMworNjA4MDFFNjAyNjVFMjkwQjlFRjZCQkQzQ0I0RTVDRjcxMkI1NzEyRDkzOTQ3RkMxMkJFNUI0NTA3NjZBNjQwNzM1REIwRTBGNjIzQUY0NEI0NTJFOTNFNTZCMkVEMzJFRUFGMjQxMEYzMTMwQzE0MzAxQjgyRkM5MjJEMDA5MEQ0MDgyRDQwQTVDQ0IwOTEzNEE3NDIyRkZBODQ5NzlFNThGRjVFODU4MDBGNEY0NkMyNjc5MzhGM0Y2M0ZBQkI0MEU4RTUzMThDM0MzNUQzOTBCMTkzRDc1MTY5QUVCM0U0Q0RDQUM1OTNENkUyNTAwOEY4N0RFODFBQ0U5CitEOUMxCitDMjQwQUVEQzQ1NUVERkI0RDY1QUI2CisxNTlERjNBNworRUY1MTRBMDYxREY2REM1MjVCODQyM0I3MEUKK0Q0NEFDNkVGNDVGQUU5NzhERjY3N0Q3NTY1NDc1OTBBNkYyMTNBNTY1MkZBOEFCMUE1MjI1QkQ2MURCOUY5M0ZDMzA1QjM2NzM3RjFFOUY4MEY1NTM0REU3OUM4OTk2N0Y3RTUzODU1OTEwQ0REQTQ1NDBDRTQKKzJFOUE3MDc2Cis2MjhBRkY4QTBFMEJFQTFCNkY2QjA1RjA3NTFGCis5QTZCNDk2MjQzMjVGNTA5MDU4ODQ2QUEzNUM1OUI0RThFNTA5RDQ5MTgxMUE5ODYzODcxOTQ1QkFGMDQ1ODI1NkMyMEM4MjU4NTA5RUYzMjdDMTA3MkRBOTdDMEZCRkNERTQ2MThBM0MxQUEwRkNCMjEzNTFDMTdCQTQzNTNCOTc2RDdGOTk2M0E5MDY2OUMzMkZBMjlDQTE3NkZENjE1RDFEQTk4MUUwQjE2RUJGM0Q1NzFENDY2NTUyRkNCOTQyMkNGMEM1RUY1ODE4MjA3NEFDRjNDQjQ4MDlBNkRDRDY1MDgyNjM4RjhEMjVFREYzRTM2NEFGNzc4RjUKKzhDNDQKKzkzRUVERkRFQTdCQkU1OTRENzlDQkNDOEVBMjFGRjMzRUY4MTNGQUZBRjZDNUU5QzBDNTBBMzU2RTA4QkQ2CitENEEyRTlCMworNjhCMTk3NEE1MERCOUFFRjRBMzIwQ0IyNkUKKzJCRDI0MUI5M0NDNDYxQTkxOTlBRjhBREEzMzQ0Nzc5QjZENzQyQkY0NEZBNDA3MkI2QjNDMjdDNjRDMUJDMTMyRTg4QzMzOTVDRjMzMEExNTdEOUFBNzNGMEJFMzA2MjdFMDMyQTcyNzIxNTFDMTM5OUVDMjkzNEE4RTUwNEVGMzQxMUQ3ODM0N0JCMDUKK0QwQkQ2RjE5Cis5NDQyNkM1QTRENTMwNEEyRUVDRTJDQTc0QjVECitBRkE3MEMzODNDN0U3QzcyMDdDQ0U5NzYxQkNERTUzQzFDMUI5RjBCMjRBRDkxNjc2MDRBMTg3OUVDM0RDMEY4MzI5MkYyMUFDNkFDMzU3NzU0QUIyQUE4QjgwNkVGMkFCMDhBRkZDRUNBMTAzODJDQUUwRDkxMUNGMDJDMzA1MTdDMTQ5REU5MUQzNDYwMjNBQTA4NTY0RjQzMzUyQkEyRjVEQkRCQzRGNDcxNTYxRTM2OTFCMUY4Q0UyQUE5MEE5OTYwRDkwNEQ2N0REOTI4NTExNzlCNzI2REY3QTcKK0I3MzYxNTNECis0MkUxQjAyMzc0QTk4MDJEOTFGNjJFODlCNQorNDVDQzhDRTgyMzM1MTgzRkYyNzdBMjUwNDM0N0E4MUZGOEMyREEwRURBNDEzNDc0NjZEMEQwMzZGOTBEMUY3RTRCMjY5NUUxQzk3MkIwMjMzMzZCNkJBQTFBMTc1M0I3NjMyOEZGNjZGRUIxRjcyQTg3QkU0NEI3NDJDOEREQ0Q2MjcxOEFCQjVCRTI0ODc2OTBFQkIzNzk1MUE4QzdBRDNBMTNFREVCOUU4REVDMDg0NjU3RDYwNworNUM2QzlBMjYKKzAzNDlFMUEwNzAzQkE5MDgzNjhEQzAwREU3CisyNTREQzlENkUwRDhBN0IzODM1Mzc3REQ5MDUyRkEyMjUyRkY2RUU0MUYxRUJCNTkyNjA2NkQ2NUJCNkVDNDEyMkRGNkE3QkU2Q0YzQjY0M0M4NjIzNzdBQzg2NDA2N0MzOTZGOTdEMTUxRjJBQzVGRTY1NzkwMEQ5QjZCMzcwNzZEMUFFQTIwNjE4Nzc4RTk5OTIyMTY1RDE1ODBCOUM1QzkwRDg3Cis4M0YwRERCNgorQTE2MEU3RThFMzM4NEMzN0I1M0QxMjg0ODFGRgorRDU0NThDMURGNDhBOTBCQzVDMjc4MTA0NTcwNDdBMzRGOTZDQzk0OENCNzg1QzdCNUIwMUE2MjNFQ0Q1QTBENUJCNUQ3RjA3NUI4NTdGMjU5QTk4QkZCMkRFMEU2MDY5NjE2OEM3NTI1MjA1Qzk2MUE0QzNBNkYyODZBMUZDRTg2QjBGNEQyMjI1REFDNDM5NDg4ODczRjg1OEJBQTFGRTMzQUU4RkIwQjA4QkM3NUJBOTAwRDY1MjA4QjJFRTI4MzU5NUVFMzg0N0I5RkNDRkUyMzgKKzRERUExODM2Cis2Q0MyRjFEODlFRUE0ODA5MTE1NkI3NUUzMUFGCis4RjVFMTYwNEVFRDdFOTg3QjdEMTM5NUQyNjJBMjM4NEJENEJFMDlDNEUyNjE1Mjg0NzgzMjY3MEMyRDFBRTdEMjJGQkQwRDQzODQ3MjdCNDFDNDBENjY0QUFDOTk4MUY0QThGMzJCMTYxRjc0MUYwN0M5MUUyNEIwRkE2RTU4NzdGMkEwRjIzNzI0MjhDQjI3MzdCRDkxRkQ1NDJENDE5QzU2QkIyRTc1N0ZERTg2QzM1REI0MUE4QTVFMjM3RTA3NTdFOUNCNTREMURFRkU3OUU5NUQ5MkJCQ0MxQzNGQjg0N0Q4NkQzQTNERTFEMUI0MURFMDMyRjU5QUMKKzE1Q0M4NkU3CitBMkY2MjVCODNGNzg1MTc5RTkyMUM1NjdBNjk0CisyOUVBM0QxRUM0QTA0RDk5QjUxNzI1Q0UyRDY5MkE0QkNCMTIxOEU3N0IzMjAzM0E0RThCNTVBMUQ1MDFBRDkwNDRFOTFFNDQzQkIyMUUyNzM4NzlGRjRFOTg2OUQ1NEYxMDYwRTFBNUQ2OUI4RDQyMzhGNjc4RUFDQjZCOTRCQTBDNEIxODBDQzMxMTJCRjhBNThBNEVFRjlCNzcwOTI1QzdDOTYwQzlDNjNGNkZEQzc5RTEwMTdEQzFBQkZBQzc1QjA5NjA0RkU0NEE3MjcxMUFGMjc0MzBCRDgwNTEyQkNCNjE1MUM1Q0NEODNCRThBMUUxM0M4QzZFRDkKKzlFRTkKKzY5QzczOQorRjZBMTRBNkYKK0FCNUM1RkE2NUU5NzA3OTg5MTA1RUEzQjU4CitBMzhBM0FDMjczM0NCQzc4QkJDNUY3NjQ1NzE3QUEyQjZGMkFFMzNGMUQwODVDMkU3NkY3QTQxRkM1QkFGQUVDN0EyMDk4MjU1Q0FDRDdGOENDOTczRUYxRTdCN0QxRkI4REM4RURDMDgxNTA2MkEzMzU1RDkxRkY3QUFDOThEMTVBOTI2MjUzRjdDMEI0NzBEMzAzMEE2MDhDNzBENEM3NjMKKzA2QjczQjM4Cis4NzBFNUY5OUUyQjgzOUY2MEMwMzNDRjQwNEFDCisyRTc3RTVFMzYwRkFBODkzQjk4NzM1OEIyMkM3Mjk4M0YwRDQ5MEMxNTAzRkE5ODJEREY4QzlFRTZGRDBEMTQ4QzU0QTVBM0Q2QTNCQjQ1NkQ1RDY0QUJBODY2NDdCRjUzNzkyNzM5MjBFOURBNzhBNEY0MUU2MEYwQjAzQUE0OUQ2MzIwOTlBQzIyQkFBODVEMzdENEJGQjlFOUQwMTNDQzMyNEE5N0MyRkM2N0E1RDVDRTZDN0Q1QTYxMjBBNTQyMjQxRUFDQgorM0RGMDU2ODkKKzdCMTQyRUM3MjYyNTlFN0U2NzQ2REJFNjYxCitDOUY4RjQ2NzZCRkIyMDAwNjMxMzc0NzlFODVDMjc3QTQxMDRDQkIzMjQzRjVCQTEzMEU0OTA3RDFFMjM1QkM4NEQxRjg3NTYwQ0JDMjI1NTIyN0NBNEIzRUREODUwQTkwOTRFQUE5RkE2QzRFRjUxMzk0QTEwNTU4RkQzMTg0OUY5MDc2OTE4RTEwQkVGMEJGMzlGQ0E2OTcxMTE5MUU3MzMxNTIxNzhFOTJDOTRCMzU3CisxRkIyRjA3QQorRjU2Mjk0REM5MUI5NTE4MzU4MDhBNjFDMTVGNAorNkZEMzZBNzE0NDMwMURDM0NFMjFCRjFERUI3MTJEMUZENzhCNzlEODRFNzgwNjA1NkFDQzUzNEE5NTlFQURCQ0NFOEM3NDZBMzhBODFCMDY4MkMwN0U0QzEwMDNDOTE3Qzc2QTgxNTgyRDcyQjNCNzJFNkYwMThERjYwRTM2M0QxQzRBQTY2RUQ0QzcxRTQ2NkRDM0QwOTQ5NTFCQjJBOURDNzNGODk2MTJBQ0I4REFBQUM2REY3NzVBNzg0NzEzRTcyMEUwODQ2QzVFRkFGRjkyRDUxNTE0NUNFRDFEQjJEOTE2RTZENzkwNjAzRkM3MkE4QUM3REU3NkRDCisyNzg3CisyRDAxRTMwRDE2MDczQTY3ODI1Qzc3QzBGOUQ2QTc2NQorMzRDQTRFNDQKKzQ2MjA5QTdBNzc3QUY3NDdCRDUwNjgyQkVFN0UKK0Q1OUQ0QjJGRkU3NEE1MTNEQkY3RDMwOUJERURFRUE0NTk2MUY5NzQyOTUzOTNCNjBCRjZERDMzQzA0Q0RGQzJCNjRCREVBQjBDMEY2NzU1Q0RGOTU4QjBFQ0E5Q0I5OUNGNDM2RTMxNTdBN0Q4RjI5NzlERDkwOTE2QTU3OEUxREVGQTcyMEQ0NDZDRjlCREI1RTVFNTc3NDEzNDYzQTMwRkY5Q0UzNTU1NTQyODlGN0ZCQTE4NzM3NkY5NkI1RUM1MERBNzQ1NTAwMzA0QUVBM0VGNERFQUFCNUYzMUM3MDExRUM2QjNDQjQ1NUEyQjg3QjI5MTgzMDQ4NgorODZDNworQjdCNDYzRjIxMEM0NkQ5OTcyOEIyN0UwNDc2ODg2MkY5NDNCQkM1NTdDOUM2RjlFRUMzOEFFNDNEODVBMUFERDA4MTQwMEJGOUI1NUM2Cis1MEEyOTJGRQorRjQzNTM1Q0E1MTQ0MkFENzY2NDVEOTUwRUI2NworRDQ0MzM5NEUxOTBFNkQ5OTFCOTEyRjg4NTBDODJCNThERUVGOUI3RUZEOTcwQURFOTg2RjcyMEMzOEQ2MkI4RjJEQTRBMUZERTlDNDM4NERGNEJCODEwMzQ0RTFCNjRENzREOEU3RTI2MkNBQUQ4MUUzMTYwQ0NDNEEwNTE2Nzc5RDEwQkJCOTc3QUNEQTA2QUY4NTQ5QzkxMTZCNzhBOUQ4RTI5RUI0M0MzN0U3RDJFRjBCQzNGNDVFQzQ0M0Q5MUU4NTY1Rjg3OTJFNDRGNzM5MUEwNzIwMDZDNEIzQ0FFOTRDOTcKKzgxOEZERDY3CitCNUY3QzNBMkI5Q0ZCQUJGNjM1NEM1MjZEOAorOUI2QjQ2MjlEMEUxRDBDNDYxN0UwMTNFMTAzNzdCNDk0Qjk4NzVDRjVEOTMKK0VDMEYyRUYzCis2NEU1QjcyRjFEQTgxQkFCRDI4NTAyNzY1MDk0Cis1QTVGRDVDRDM1MkQyMjQxOTYzNjA1N0M2ODg3QjU0RTM5RDhBMDZCQjdEMUI0NUI3N0M4QThDOEZGQzk2QkZFQURBRkY2Njc4MDVBMEQyQkVGREJGNzI0RTE3QTBFQzZGRENENzMwRERERjdDNTZGMEI5M0VDQzZFNEU3Q0VENzcwODhGNzBDNkI5NTdCRDVEQTQ4QkMwOTVGOTlDNkU3NTlCMUFEQzVGNDE5Q0NEMzVFOUM5RThBNjg0NUQxRjg5MTg1Qzg3MDVBRTdBOUVFQzMzMzAzNzY2OTIyNDY1MDFGRUU2QTYzMzFBMjk4NkNBNUYwRTI3NERGMzMKKzg4NTUKK0Y3OUFCRAorRjJBNkVCNEEKKzg0MzA4NzE3RDlBODM2MUQwN0YyRjIyOTY5Cis4MDRENUE4OENDQ0Q0NUMwMjE4RDkzNzlFNzRFQTQ3MkRCODE5OUM4RjVDQTc5ODAzRENFRTQwQzhFRjU3RDE5MTA4MUFBMURDQjUwRDMwQkExNkI0NjUwMzJCNTYyQ0YzNzM2RDc3OTBDOEM5QUVENUNCODdGNUE4NEFFODFBNUNBNDc4RTFENDM3MTAyNzNCQTA4OTFBQTY1NTM3Q0RCQjdDMjI2MjY5NUM1MTBEMAorMzg2NjE0NTkKK0JGNURBQzc0OEI0Njg4MEE3M0ZGQkM3N0FFCiswODQ5MEEyQzE1RjhDNTRENjRERkNGQzhENzMxQkQxQzkxMUI5RUI0M0QxNUM5OTU4RjlFQkEyNzQ3RjY3NkE0QjNEM0JCQTM0QTJFNjBDMTYwRTBDMUU0RTZBQTBEQURGODA1QzhFRkY1OTc0QTdFQzQ2OTZDNkFENDBDNTc4QUE0MzE5RkJEOUU2MzJGMkU0Q0Q4NkJDMURCRUI1OTc5MTQwMgorOUQxRUQxQ0EKK0FGMEE3RUQ5QzgxQzAzODlBNzdEQjYxOEI0NTcKK0Q3MTBDMkI4NjU0N0Q3QzFDQUQ5QzVGQjkyOUVFQzA3MTdDNEZEM0I4RUNGMkMzMjI5OEQ5MUJFMzYxNkY3ODhEQzk3NjA1REM2OEUxNDdGMkVBREE4REFENjk4M0QzODVDMDk1RkY1RTlCNDE5QjYwMDVBNjJGQzc4MUNBQkM0MDQ5MkUxRjUwMkZFQUYxMTQ5QTFCOUExNjg5Njg4QTg2OUFGMTc4Q0NGRjg4RkFGODU5MDkzN0YwQTJEMUM0RUNDRTdFMDQwOUMxQTZGRUJGQzRGNjZCMUU0RjUKKzIwREVFMTExCis1OTNBMTJBQkU5MEE4M0M5MUU2MjRCNzZGNQorODZENTJCNjYxREQ5NTlCOEEwNkExRDdENjg1NDA1RkIyNTI1QzQzQTZEMTZBNEM0RUVENTJDRkREOEQwMkUyQzA2QzlDMUFENjhCQUQ0MDE5NTU4Q0UzODRDQjg0NEJEOURGRjA2NjQ3QzgyQkEyNjJBNkVBMTAxOTI5OTkzODdBQjY4NDRCNEJFMDgwQTA2RTU0OTNENTdBRDZCNUIyODQ5RkZDMEQ4RDJDRjlDMjY4NAorN0IxQzM1NjkKK0M4MEQ2QUNDQ0ZBMDYxRjU5Mjc1ODE5RERGCiswMjNGRjA2QUNBMjA1NTQ4RkJFMEYxMEY1RDRFNzE4QTJEOEUzQTQyOEVFODkxNjJEQzY5MUI2RTYxRjkyNzdCNUEzQjdBMTk1Njc3QkMxN0QyRUUzOTBFRUE0NjM1RDM4MTlFRTBBRUI0ODI2MzYzMzJBOEUxRDZDMzg3MTVCNEQ3RTZGMjk5MUEyMjJBM0VDMkMyMDI2NTU3REFDRTUzMDc4NDQwOERDRURDRkUxNEIzODhBNEIxCis5RURFQTg2OQorM0UyQTI0NjRBQUZGNTM5NDM3RUY1RjY3ODcxRgorQUQ5OTI0NDc2MzhFQ0FGQUIwQUNBMTlBOTlGRTdDQTEzNEE1RDQxNDhFOTNBMDM0MTVDMEU0REI5MDQxMjVEQTQxQkMyN0M2QjNBMEUwN0YwMTI1QzI3OUEyMkJDQUFDNkQ5MjUxMDhFQzM2QzY5NkU2RjBERjYwQUZGMkRBMUMwRDNBREVCODY1Qjk2NEI3MEJDMTlFMDNENjRDQUUxODA0Nzg3NkJCNzAzNzI2OEY0MkI1NUIxOUE2QzQzMjRBQUI4RDIxNzNFNEE0RTMzMUMxRkQyNDk3NEU1N0NENTdDN0VCQUMwQzdDRUFFRkM1NTg3ODhBMzFCMDJFCitGN0NBCitGQ0JGNEQ1RUY1QkE3QjJCNDMwRTEwNkMyMjE5NUZFOUVCNzQyRTIxRTAxNzFFRDIyNEVEOEFBOTY1NTI0RERCMTY2RkEyRTVDRDg2N0JGNjkyNDJENjJDMTY1RTY2CitEQ0VBRDUzNworNDM5MUZBNzM2Q0JERTU1QjI5MTUxNDkxMTQxMworNEJGQjEwRDE2NjE5RjhCMkIyQUJDRjg4MkFDRUY1NzBEOTM4QjdGMzgzQjU0MDNBRDE2MTVBMkZFRjYyQkU3RUJDQjVCMEZGM0RFOEY5QjJBQzFFMDRFNDEyNjYwQjZCQUNFNEVCNjk5RTVENDlGNzg5NkFDMjE5N0I4RTdGQTAxRkQ5NEQ0QjZFRUY1RThFQzdCMTJFODkyOEI5QUExRUE1Qzc3QUE3MjIzMDA2MkU5Qzg4NTMzMzQ0OUMwQTI0NEE1MEE3MTI0QzYwQzdDMjNGMTE0MjlDNDgKKzhCNjg3M0U5CisyOTI0QzcwOTY3NjY5OUU0MkZDOTFFMzBDMAorNkUxMEVCMEVDMUQ0MkNENkNGRTE4MzJGRTk1QTcwQjQ4QjdCMzg0MjE1NTQxOEMzMUE0RkU2NUQ1QjIxNzdCQTdCQjIxQTIxMDVBQTlENkQ1Q0U0MUJFOTgzM0Q5MDRFMkNFQjQ1REQ5RDFFQkFBNEM5REYyQ0Y4QTE2MDYwMTUxRjAwMkE0QThFNjkyREQ1ODJFMjFEMzRGMTM2NzgwMAorN0FCMkZFMjkKK0YwOTI0QUZCQUI4NzAxM0IxRjgwMTRDNUIxODQKK0I0MkVBNTE0QzA5NjcwQUFCREE3RDFCMURERTMxNkY4NTcyRjU3RUZCNUVCNTkzOEU3MTcwREUyMjVEQTA1NUU3RDQ5RDgwMzQ0RDg4MjhGQkVCNTZDQTA0MDREMDEzNzNFOUVDQTE1OTZDRTc2MEIyMjVBRTJBQzI1NzIzMURGQzY5QkVEMzM1OUIxNTMwNkQyQjREMkY5MUEwNDg0QTU0QzNDREE0MDQ5REEzRkQzNjk4NTZDMEQzNzE1M0Q0QzcwNEM5NTZFNDk4M0E3RDA0NjJGMjNCMkI5NjUxNjFCNEY5MjZBMDg2NDdEMzRGMTU1N0JGRkJBRjRFMgorREMwNAorMUZGMTk2REFGMzRDRTE0QTBGRUVDMEI3NjE2ODU0Qjg5QzYwOEE3MkMwNjExNjBEQUFFRDc5RjRFNkFEQUFCRDVFOEM3MgorMDEzQ0Q1MjcKKzUyQTYzMzcwNTJDNENDMEREMUI0QTY4MzNCCitBQ0U4RDA4QTc0NUNGODhGQ0VCRTE4M0E5MDM4NjkwNTBGQ0FBOEFCOURGOTU2MEMyODRCNjY0MEMxRjIyODNGQTdFM0FERDE4OTE4RkQwOEI5NDNFNUJBQzRBMTNGM0EzNTUyQzZDQTMzRTgKKzJCRDRENkE3CisyMjI4OUUzMDFFNkNFN0QxQ0MzQzU2NTYwQzU1Cis0Mzg3NTVEMkQ3NDZENjA4Q0RCQjRCNDU3MEUyOEI3RTcyQUNCMUI2ODU5RDcwREYzQjlFNDU3QUM1QTA2NUQ5QzM3MDgwRkJGMkNCREREMTcxOUVDRjMzNDA0Mzk3RjVGRkQ4QjI0QkY5RjczMzc0OUIzNTE3MjFENDgxNDJCQUI5N0JENzIwMTMzQkU1RUNDOUZGMkYzMjRDMTUxNURBODM5NzJGOEVFNEY1OEM4N0Q2QzU4ODhBNEY1NDAwMkVDQjNDRDA2OTYxMkQxQzYzM0YzMzM2MTFCMDhGNUREODE5NEUzQUZCODYyQ0ZBRDM2MzlEQTU0RDQ1Q0UKKzQ1OTMKK0QxRENGMTkxRDU4MUNFMTQzQTVFQzZCRDJCRjJDODg4RjEzMDBDRTYxQkM5Q0MwQURDRkRGNzI0OEE1OEE1Cis1NDgwMDRGQQorMTM3ODQ3Nzc2MERFM0E2Mzc1OEMxNEM0OUQ2MworMEU2RTFGQjQ3NTEzNjU3OUNBQzY4MjM5MDI5MDBERjJFMjgyRDZCNjY4NUU0MDQ0RTcwRTUyRUM2RjI5REI5OTcwNDQ2REJFNkIwNjVENEIyNjhBRjg3OEFCNEZFMTk1N0UzRjNCNDY0NEI3M0VDNTgxOEYwRkNFMEQ1RTkwQkNBRjMxNEU3MTZBMkNFNTBCNjc3MDAxMENEQ0M2Q0NFMTBBNEIyN0I0RjdDQTU2RDQ4MTc3OUUyMEI2MUM1NzRERUM4NzBDQ0ZDODc4QUQ4OEMxQzA1N0IzCisxODhENTA0RQorMTVGNDdEN0REMzM2MTA5NkNEQzgyOTk1MzIKK0M1OTQwMzU2RDM1ODc0NkI4RTgwMjgyQUJCN0I3RDQzNUE4RjBFQkVCMDNFNURGQURDODUwQTFEMjkxODM0MjJDNTZCMjM0RTlGMTcyM0ZCODhGMDQ1MDBFQkM0NTA1RkQyMkY3NTBENEZFQTJBQzY5M0E4NkJDNDYzNDhBNTJEOURCMUVFQzg3NEI4Cis4Njk4RUExRAorNjE2QjI5RjFGQjMxQ0E5RTE5MjU5QzNENEY3RgorNDExNkIwN0Y4OEE1QzJGMjZFQzFEMjFFMDI1RDc3MjQ3QTNGQzY2RjY3Q0Q5RTc1QTE4QzFCNDgxOUZBRTAzQjZGRTYwODUwMjQxMjg0OEFERTM3N0YwOEQ0NjkxM0I4Q0IyMTVFRkJDRDVCOUE0NEI0MENBMURBQjQ1Mzg5OTlEQ0RDRjM4Q0JCMDBFNjc1MEQzMDU0QUVCMEI3NEMyQkM4ODI3OTQ4MjkwNTU0MEExM0E2N0RFMUY0QTExNzk3QUE1Q0IzOUY4MzFCREI5MTU4RTUyRjFDQkE1RTMzNEM2RTBCRDg5RjY5QThDNQorN0U0OUU4QUYKK0FDNEVCM0IyRDAzREFEN0IyNzA4ODlCMDdCRDAKKzRFQzZDQ0M2NkNGODY2NkU3OTdBNTc4REM0MDY3Q0VDQTU4NTU0NzJCMkJBRDM3ODJGNjU0OEQwNkJFREExMjhDMTEzMDZBQjM0M0M5NTdDMEUzNUU5QjMxQUFCQjYyRkFCMDIyODMzOUVCQjBBNjAzQzkzRTNBQ0JDNDgwRjREREE2RjFEOTA2OUYyQ0ZDMDEzOUU1N0I4MTU0RTNDQjRDRTlCNkE5QTk4MTc0RTEzMTY2RkYyODk1REY1RTVDNjI3M0M3NTE0NkIyN0MyQjUzQ0JGCis3QUE1QURGQworNTFFMDY5NjlDM0U3RDdENENDQjdCRThBNUMKKzI3QUU5NTJGRTNFMEJEQTQzRDFDMzIxQ0M1REU3MDQ2N0VDQzEzRUE4NjgwQTAzODAwOTgyMEU4NTI2RkE3NTE3MDI3OTIxNzY0RDVCRjQxMTZERjc2QUU4MDhEOEM1MjUzRUIyMDNGRjFFRTQxMzRBOERFQjMxMDJCNjdEMjJGOTM1NjAzNDZBMUU4Q0M3Q0MzNzU5MjY0QzY4RDkzQjMxOTNFMUREMENGQTE1QworOTQ0NUZDRjEKKzcxMUQ0NkEzMTY2QkJDRDRFM0YyQkEyRjNEMUMKKzE0RUMzMENCNUMzMDg0MEY3OTlDRkU3ODRCQzg5MDM5QjcwODE0MDc2MzZCNzRBQTMyRjIwRDEzMUY4MkNCMERCOTk4MzY0ODM5N0E1QUEzMzFBRkY4NkY1NDVCQkMyMkEzNkQzOTRGN0FEQzNGM0VBNjhDMjVDODRCOEIyMUVBMEIwRDVBNTk2Mzk5OENBMUE4NjE4M0ZDOEEzMjIyNEJCNkIwREE5RURDMTFGQjlEQUVBMjdFMjU5RDg0NUE2MjFENjRDMUM3NkIwNTMxNEZBMzE1Nzk5RTNCMkNCM0IwMUUxMDVFMURDNDk5OThCRTExNzA0NTMwCitDNzk1M0ExQgorMTlFRjZCQkI0NDNGQUM0OTU4RDQ5RDUyMDYKKzExMTY1QUFGOUNFODFBRUExMDdCMjAzQjhCOTdEOThFQzY0MzJFNzlCMUEwMjY2RENDNzA1NUJEMDEzN0U5RDU2NjZCNkNDNUMzOTgwRjAzNjc0MTU5MjlCNTM3QzkxNTM1N0M2NTEwNjQ4NTJFRTA2Njg3RUQwMTZBQTcyQ0ZBNUZDRTg2OTFFNQorMzFFMjNFQkMKK0JFNDg1RjBGRjVEQkIxNjk5NTRCMjQ5NjExCitCRUFFRTE4MDM3NDAyNzkxMzA2QzQ0MTk1NjcwMTZDQzY5MDhBQ0YzMDIyM0ZBMTNBMjVGODcwMjE4N0Q3Q0Q1QTVBMENBMEU4NkIyMTk5MUNCODVCN0QxMzQwODU0NzJBREZFMzVDM0Q5NUVDRTgwQ0FFNjRDNTFDN0ZEMTJDNEM1NjQ0NkY2MTU1QUIyOTRFRTBFMzJFRkI0QTA3NkJEQTRCNDY1OTMwNzgyNUU0MTU1M0I4MjVGNTA3MkQ3NjRFOTA4CisxNzM0NkZFMgorRkQ0QjZFNjExQTk3RDBFNTcxMTQ5QjM4QTAKK0Q3RTRFNDM0NTIwMzBGNzUzQjNEMTk3MUQ3MTExRTRFNEFFMDRCQjg2RDU5NjRFOUI4NzQ5OEMzQkJERjdBMzU4MzcwMDREODUyNjBBMTk0M0VERjRGOEI1QzE2MDRGNTlFMjczNUU0QjlDRTU2QzdBODk5NTk2MDNENzgxNDNCMzFDRDJFQ0U3RTEwMTVFOTIwNzFCM0UzMjI3OUQyN0REOUZCRUMwNUFENDREMzlCNUEKKzE3Rjg3RjRECisyQkM5N0E3QkNCOTkyRERDRjM1REE0OEIyMjhDCitGNjhFRTAwMzUyODA5NDU1QzIyMzRCMjk1OTZBNkZDMThEQTZFMkVBNTczRDhDNkI4NEVCM0ZERDZEQjY3NkNFREEyMUJDNTMzREJGM0I2NzY2OUM0MEEzRjg2MzE0N0Y4QjZENUM1OTQzNDlCQkUxODE4Qzg2RDgyQkMzOTMzQUEwMDg1QTQyM0U3NEQ5MDAxRTlFQTRCRkE5MUY4OTlFMkY2MzFFQTkxRDg3RDEzMEEwQjE5NzAzQTBGMDkwQzYzNkI5Njk4NEEzNjNCMzFENjRFMjRCN0RCQzVERDcxNDA3QUM4OUYxMkEyMjI5RDg1N0IzRjI5MkUwNEQKK0I2MkYKKzEwMDM1QjcxOEM0REE0RDFDNUE3MzE4RERCMjMKKzYxOEUxRTNCCis0RkRGRkY2OEQ5RTgxNENDNzg2QzRBMTdCNUMzCitFOURBRjA2M0MzMTM1MkU0MDZEMjI0RDJFNTE2NzVCOTZENjE4RjdERkVBQjVBNjNDRDdGNEQ2NEE2MTUzM0MyN0ZCM0UxMjMxQkQ4REUyMTdFODIxMjBDNTJFNUZEMzMxREZEQkJCRDUzMkY2MjU1MDhBQjVGMjhBMzI1MEIzMjUwRjRGOTM4MDUyMEU3NTM1MDRCRUNBMDkxM0RFOTJGRkVCOUVGM0M1RkQ2NzkyMzI0NDU3MzI3QTE2NkRBRUQzMDFEQjlGMDBBMUZBQ0QxQjRENzNCRThCNjU1OTcxREJCNUYxRkMwRTgwOTJCN0RFQzlENDZGMENERDEKKzNGQTMKK0I2MURBOTU3NTQ2QTM2NzcyNUU3NEZFNDI4NjQ0RUVGNzhBOThGNTU1NEQwQ0QyQUMyCis0OUE3QkYxNAorQTI4NTdDQkQ2MzQ0REQ4QUQ0MUI4OThFMjhCRAorQkI0RTk3NURFN0FERTEzRUM0RDhCNUExMDRGQzU1MjkxNUEwNjcwNDgzMTRDMzJEQ0E1NzVDMTU5MjI0QkU5OUY5NUM4QTA0MkY3MzBBNUY3MEI4ODgzMEFGMEY4NjJFNDgzQTY5MTE3MkYxOUNBRTFFRDQxMjI4MDdFNkE2RDBBMDFGMjAxRjAwODI5NTc0OTg0REFBRDQyMjhGNzY5NkJENTQ2QjNBOTAzQzdCOEI5QjQ5RjgzQjI0NzBERTQzNDYxMkEzQUE5MkFEQjRCM0VCRDA2OEUxQzQzQUFDNkVDMTRBMjBDN0VBMUM2QTVEOTg1MzBGNUJGRkE4Cis4OTgwCitGODNFNjhFRQorRDIxODI2NEMzNzc2NENGNEE1MkY5NzFGREMKKzg4RUQ4MjQ0OUI5M0Q2QjdGQTVBNUVGNjFGNDAzODhBQTQ1RDY4NUZEMUNBMEZCN0JCNDEyOTVCQTg3NDQ4MkVGQzYzMDQwQ0EwRkJCRkRGQjMyMzIzODJCMzc5ODY2ODE2QjZDNTVFQzc4NzJBQzM0ODYzN0JENDk4ODk2RgorQTJCOENGMUIKK0JDM0VBNkYzMTg3NkJENzkwQkM1RjAwMTM3QzYKK0FGNTg0MDAyRDNFMjZFMEEwNjI1NDI0NTBCNkI2REJENDEyNjk0RUU0NDdFRDY1QjU1QkVDNkRCQkFCOUUwMjI1RTBCREI4RjhEN0FFMDkyOTA0MTlCNTUzNUEwNEVDNUVEQzRDMzMwNjYxOTc0NDJFNjVDNjZDQTFCQzQ2QURCQUU4QzdCNzREMzc2RTM1MTM0NUZEM0VFMzdCODJCOUJFNEJCNDUwRDQ4MzI1QTE1NzJFMjAyQ0Q1QTIwNzI2M0MzNUI1ODNGQjcyQ0M5OEYyQworREIyNUFEREEKK0M3MEY2RDYzNTUyMkE3NjdCMkM2NDk0RTVFCiszQjE0RkEwOTUyMzQ1OTU5REU5OEY0REREMTlFMUJGOTQzMUNGOTM3MTIxNQorNEIxMEUxMDYKK0YzNjVEMjM2MzUyMTg5MkREMDMyQTgyN0VDMDkKK0M0QTU3NDU3ODcyMjdFRTEKKzgxRTJFQUJGCisxNDg5QkExQzQxMzExMDNGQzBCM0IwMkZFOURFNTE2MzBBQ0EzQzY1RjRBQkQxMkU0RDYwOTRBODVDMUJCRkU5REY0QworRDBDRUQyMTBBRTAxNEFGNDEzM0Q3N0U0QUE1NjkxREU4MEE3MkE5Rjg1RUI2NjlFM0ZFRDBCQkI4Njc2MDYzNDU4ODc3NEU1QUQ0NAorNkE1QkNCNEU3MEU2RDI0RDY5MjkwRDI2NDk3QzRCNUE1MEFDNjY2MTg0RDk1RjI5RjlDMzNGCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ2IHB1dAorZHVwIDMgL0MwMDUxIHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY2IHB1dAorZHVwIDYgL0MwMDY3IHB1dAorZHVwIDcgL0MwMDY4IHB1dAorZHVwIDggL0MwMDY5IHB1dAorZHVwIDkgL0MwMDc4IHB1dAorZHVwIDEwIC9DMDA3OSBwdXQKK2R1cCAxMSAvQzAwODAgcHV0CitkdXAgMTIgL0MwMDgzIHB1dAorZHVwIDEzIC9DMDA4NCBwdXQKK2R1cCAxNCAvQzAwODUgcHV0CitkdXAgMTUgL0MwMDk3IHB1dAorZHVwIDE2IC9DMDA5OSBwdXQKK2R1cCAxNyAvQzAxMDEgcHV0CitkdXAgMTggL0MwMTAyIHB1dAorZHVwIDE5IC9DMDEwMyBwdXQKK2R1cCAyMCAvQzAxMDQgcHV0CitkdXAgMjEgL0MwMTA1IHB1dAorZHVwIDIyIC9DMDEwOCBwdXQKK2R1cCAyMyAvQzAxMTAgcHV0CitkdXAgMjQgL0MwMTExIHB1dAorZHVwIDI1IC9DMDExMiBwdXQKK2R1cCAyNiAvQzAxMTQgcHV0CitkdXAgMjcgL0MwMTE1IHB1dAorZHVwIDI4IC9DMDExNiBwdXQKK2R1cCAyOSAvQzAxMjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMCAtMjA5IDc0MiA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzRERjVDQTIyMzVCNTA1NDUyRUY4MkMxOTM3OEE3ODZFMEIKKzMwMjg4QjA1NDkyRUU0QkI2MTIzQzA0QworM0ZCMzFFM0RBNTE1MURFQ0E0CisyMzgwMzJGQQorRDJGQTdGQjE4MjRENUI2NUI3MkIzM0U3RDkKKzAyM0IzQjhDNDVBOUQ4MEIyRkI2NUY5QkVFQTNDRjc0MzVCNzRGMkFBMjYxRUU3QThCOEU2Q0FGNEYxNkEzCis3N0QyQjAzRAorNjdEQjY4QTEwMkEyMTg3RUVBRUM0MDkyMEY3RQorQjI0RUM4MDNGRjg5OTMzNEQyMjQwNzk4MERGMTFDMDNGQkY0NTdGRjQ5MTVCQkFENzcyNDI4QjE1M0M1NzFGOEMxNUI1OEIzRUVEQTUwRjJGMEZBN0ZGQjk5OTlBQ0RBMjhGREEyOTRENzdDQTk5Q0UxNDZENjExRjkyMDIxQkIxRUUzNzk5QzhCQjhFNTlBNjUxQzlEM0ZENEQ0MEIzRkFENzNBNTM2NDVDOTUxREY5MTYzNEMyRDU5RTdGNUI3MURDQ0Q5NDIyRUUyN0VFMEM5OUM4RDJGNzIxOEFDNEE2RTlDMzgKKzdCRTBENEM0CitFMjJFNTU4MUUyNkJCQTM3MjE0NjIyNThENQorREZCRkQ3REE0MDBCQzc2ODgwQzFERUYyNDM2M0JBQjIyQzUzRjdCM0E4QjQxMTQ1NEFBOTY3MjJBNTFBRTZCNTk3OTU0REE1MUQ2RUQxNTRBQjY4QzU1MUZFOUQyNDdCNkMwRDQyODU2OTk5CitBOEFCMkQ2MQorRTVDMTI0NkRBNERCRUUyRkMwNkY1QTY3NTBFMQorMjQ2NEY3NzI1QUZCMDk2Qjc2M0I0M0U4M0M0QzhDNjRBQkYzQjM1OEMzMUNERTY5QTdCOUVGMTRDRDQwODM5M0Q3NjZCOEMzRjg2MDJBQTY2NjM5NjFCREQ3OTM5QTJCMkRCOTM4QTE2QUM0RDhFN0RDQTFGMkVDNDU4N0Q5QTlGNzg4MzQ4N0MwRUFEQTM2MEM5NzE1MDNBRjdDMkU5RTAwRjJCQ0ZBRDQ0RDFCREU4Q0NGMTRBQjgyQzUyQjJGRDMxQjAxOEQzRTE1NTg5QkE1NEFBRUVGRTg5OTIzNUEzMkU2RDVBRTg4MTc4OTk2MzZFNgorRDEwRjk0MzMKKzMxMUQzQUY5RDA3MURBOEQ5MTRERjY0ODAyQTgKKzIyMjdFRDg5MEU0MDQ3MENCRDVCMERFNzRFQkQ5QkM5OURDRUMxNEQ0N0NDMDk5ODNCRTNCMzcxQkY1MDQ0NTVGRDQ4OTgzMUVDNDY1Njk0Q0E0RUM5Qzg5MjcwMUQ4NDIxMDJERkU1REFEMUM2NTAyNzZFNTEzNEExOTdGRURGOTg0QzlDRTJEQjQ4MjU1MkEwOTY4RDQ0MUYyQzVDMTk0OTA3NDExQUM5QTkzNjA4NDFEM0MzOTBCNUMwMkQwQjNDRTk4RTQ4RTVBNjc0MDEKKzVDODNGQjIzCitGQUIxMUEwRDQ2RjhDNTU0MjUxQUZDRjgzRQorQTA5RUMxRkU3Qzg0QjBGQjRFREQxRDI4MDI4RUU4MzNDMjU4NkExQzFFOUU2QUE1NTc5RDhEN0NGMjAyN0I3QUQ2MEVBQ0FEOEFCMUExMDQzQzc4RkY5RkE0OTE0RDRFMjAxNzU5QTQ3QTVGMDlBQjhBMEMyNjdCQUVGNTY3RjNFODBERjY1Nzc5ODcxQzVGRjczMDZEQ0Y3NkUzQzM0REJEQzdEODg0N0E3NEIwCitERDE2RDY0QgorMjEyQTUzNENCNEJCMDM0QTFBMjAwQzE3QzAyQQorODQ0Q0Q5RjQ4MTdDM0IzMjgyNkExNEYwMDk2QUZGQzkwRDAyODQ2QjBFNUFGRDc3N0Q5OUVBOTUzNEVCNzQ3Mzc3NTU4QzZBQzVGQjc5NzY5RjExNTQwMUY2REI2OEQxNTVERDkxOTBCMEExRkFFNDBGOUIzNTFBOUEyMDc3MzRGQjNBOTgzRDNERjRGNzFCNkM5RkRGRkExQzE4RDREQTk0MzVCRUE0MDZFRjIxNjdCOEFFNkFCNzYyNDRCNTZBNTJBMEQxRjAyMjFFQ0M1M0I0QjdBNDk1MTk5NgorQzlGQTYzMjAKK0ZBQjI5QjA2MERERjA5QjYxODQ2OTQ0NDJBCitBRERCQjRERTAyNjI3NjI3NTkyODBCNTUzNERDMjNEQTJDMjVFMTU4NkYzNDM4RDEzOTFEN0VERDk1NUE5RjVFNzE0RDQyM0M2QTQzMTRFNTkwNTk1M0Y3MEZFNkRGOTU0QTYzQ0E0QTc0NkI5MzcwMjgzQjFFRDQ1MUFENTRBRjlCMkI3QjhFQThEOEI5MDk1MjdEOUQ5RTA4NjVBNzY2QTc2QzdGNkIwMUJBNjZFOTYzQkFEQjcwMUM3Mzg3Cis5OEQ0NUQyMQorQkI0MEM1RDAwQUQ1QzZEQjZFQUQ2QTVDMTgyQworNzc1RkQ4ODczMjUxMTRCMzk4MDFGNTQzQzc3MTIyNDNGN0Y2RTlBOTExREU3Mzc2MEZEQjFDQzlENjM1MDE1NEQ5NTUyQUQyMDExNkUwQkMxMjUyOEFFMzdBODQwNjBCMUNGMTJEQUNDMzU0RjFDQzg5NDg4QTU1REUwNDRCM0ZFRERCMzRENDQyMjI5MDA4OTEwNDY4RjRCMDc4RTUzMDBEMTlCQUMyQUYwNTM0ODVBRjA5MDI5RTM3OTUyRTEwNTMzMDM5OUVENTBFNERCQUIwCis4OUREMENBMAorNDg5Qjc3RjExMjg4NTZERDU1RTc2MzNFM0RDMQorODZBQkEwOEY3OTNGQzZDNDlFQkE1MzY5QTFCQjkwQkY4NUIwNUM3RDIwNEJCRjQ2QkI0QTc2RkVFMjRBMDAzM0I4NzNEODBEMjM3MTZGRENDNEFGRkY0NkM0QkMyQjM2QjNGOTg0NjJGQ0E1QTc2NTQ5OUZEQUE4NzhCMjE2RjBGMkQxRDREOTIzMkZCQ0VFRjY4QUQ1QkM4MkM0QjhENTU1NUZBMDIwQTMzOTZDMUU2NjZFOTc2RjMwNTY1QzRBN0JGMTVGRjEKKzBDMzdEQUJECiszQzNCQjIwNTgzMzI1NjM3MDM0QjcyODA0OUIxCisxNkYxMDk2QTE5OEIxMzVFQjFFQjgxOEJFNDhFN0NFNjg1MDA5MUY1NDhEOTYzMjE3NzEwREU1MzY3NEIxMTJCNDhBNDAxRjA5NTdGNDlDREQwQjJCNUYwNEZCNUFGMzZFNzU2MEExMEFBMkIyQTBCNTg3QjA2MkZDRkI5MEZCOEIxMDFFNEQ3OThBNUE1Nzk5NEE3NkM3OUNFMTdFMUY2ODMwNEU5NDkwQkUyQkZCNTYzOTBDM0VEMzA2MjkwOUIwMjVGQjU1NUYzNUVGQzdBODVDM0E1NjQ4Mzk5OTY2NTUwREY0NEExRDE3MkQxM0U0REZCQkEzQTg2NzEKKzBEQTUKKzI2NUZENjJECitDNTREMTE1MzVBMTE4QUMxMDI2QUJEMkY2RQorNzkzQzMxRUI2NTdBQkJGMjk5MTVCNEI4Q0Q5MkREOEY2RTI0NEE4NDFENDVERkUyRUNCNjgyOEQzMDFCNjMzNjU4RjI5MUJERjJGRTRERjBDQTFGRkJDOThCOEZERTM4Q0QxQjk2NUY0NDk3MkQ1MTNDNTFDQUY2RTMxMDU1N0VBODRGQTRERTlBMEI5NDM0MkYKK0M5MDdGN0Q1CitBMzk5OUFGNEQzRTVFNUI0RTE4QUNCRTNGNkIzCiswNkQxQjhCOTIxN0QzMjc3QTdEQzkxNzRFNzY1MDBDOEY2ODE1RjE5NjJDQzFCM0QwRjIxOURDN0Y2REVFOTc2NDY3NzAyQjY0RTYyRjM3NzhEQTBCRjA0NzcyMjM4MzA5OTQ3Nzk1OEQ0RjhFRjkyNzBEODU0QUM1MDg3RDk1QzdFNEIzRkE3RDczOUY2RTc1MDFGNzY1M0E3NTI3Q0E2MkUwOTVFMkNCQ0RFQkQ3RkI3NjI0RkY5OTRGNjdGOUNDNjQ0NDMzRjRGN0Q1NQorMTM0NUE0QzcKKzlCOTc2NTlFOTM4OTFBMDdCOEMwMDk2OEFFRkIKKzdGNDVDODUwOEM3RTYyMEIwRjdDQkVENjVBMUUzQUYxOEY1RTM4OTNDQ0NCNTZCMUM2RkMwQ0JCNzJDQUUyQzk1NDJGM0VEQjUyN0U5OTU3QjU5RDI2OTMzNkUwQzIwNEM1M0E1MURFRDdFQ0I0NDE1OUZGMjBGNkEyRjM2QzE3ODc1M0FBRjQ4NjFGMEQ2MjE0QjczRjdBRTZDNEZGN0JDOTQ5NEY0OUZDNUU4Mzc2ODlFNzM4QzY1MDZEMkM3MzU2OTgzREFDRTI5RjE4NTI5MEZFOUFCMjgzOURDNjJBOTNGNjA0MUZBNjA3OTYyMjdBQTI5MjM0RkRGRAorMkNCRgorNDZGMjU5MjIKK0I2ODgyMTNECitFOTY4M0U0NEFBMjMyNUQ2QkQ0MjhDRDg3MgorMjVDN0ZGMjg1RTdFRUM4NkNEQzI4RTk4MDFDRTcxNDY1M0VDRkQ3RjgzNzU3RDNGMEY3RTNGQzU1MTFBQjcyODMyOTI2MzNCOUJGMDhBOTU5QUYzRkQxQUU1Qzc0MUYwODVCRkM5N0MxNjY2QkVERTM0NzA5Nzk0RUI2QjM4QTJFNDI5RTQ4MkY3OTNBMUU5OTY0MEZBOTI0NTdCNUQyOEU2RUIKK0Q2QjJERTRGCis1NzlBMTE2NTQ4NUIyMjJDNzZFN0Q3NEMzNgorNDEyRjYxNEI2MDRBQUUxMDVBRUY3RjlFMUE2MUNENTUyMTc5NTk2N0IyNkMzOEQwQzYyRTFGMUI3Q0Q1QzkzNEY0NUEyMDA5NjA0MkM0QTU4QzcwRDBGRUJDOTJFQzA1NDIwNEFBMDMyNUM2NzZENEU5MTQwMkM3QkJEOEI0QTA3NjQ4OTI1OTA1MkJDRDQ5NEJEOEFBODU4QTAzRjg5QzU5M0IzOEI1MUQ0OTUzRkQzMzAyOUM2RQorQ0QyNjYyRkMKKzE0MjhGMUVGQTM3NjgyMEMyNDVCNjc1NzM4Cis5MTYzNkFCRDQ4OUQ5QTgxMkNEMjFGOTZEMTZGQkM4NTE1RTg5NDI1RDQ5OTk2QTY1NzBEMDMyNTNGMTcxMjJCQ0MwRDc1MTg1QTk5QzIwNzIwQkI3MDk0MzVDM0FBQzExNDY5MjQ4ODM1Qzg4MTlDMUU2REY2QUI3QzVBQjY5RkI2MTVDNjhDMTM0NDMxN0Y1RkZCN0VEMjA2QTVGMDUwOTY5QjFENUM3QTgxMTkyMzkyQUMyNTNCQ0QKKzQxNzk2RTFGCiswMjNDRjI2M0ZGNzM1MUFEMTBEMzAzQ0VFRjBECis5RTg5RTY2NkE2RTU1REVBQUU4NTk1REFDQkQ4RTY4ODQyODhGNDE0QTI3RDhCMjNBOUM5Qjc4NEJGOUUxODRBMjhGMjY4MDE5MUEyRUQxRjFEODZEM0E2MEIxMDA1RkFGMjk5RjYyNEE3MDQ4OUNGOURERkVEOEM1NTI3RjY4RUZDMDlCN0JEN0QzNjlGM0IwMjc3QjU3ODQ0NDQwOERGNEJGRUU5NUZCRDY0NzhGQ0VCMjFBQjBENzJDNkM3QTY2M0FEMUMwODU3NjEwMDkxRDgxOUM1NUM1RUI3RTMyNTkxRkE1RkZFMTk2M0NGNzQ0OEY0MjQ5ODY2MjMKKzlBNUMKKzNBQUFGQzk1MjVGMDlFMEVBMDJENEI1NjI1RjRCQzQ3RjM1NDg1MEM4RTNFMEM5RDNDMkRBQUEzMTIyODMxRDY4NTI2MkY1QkVFCitGNkVEMEUzNworMkExRUIzN0I4ODE4NUM5ODU4MzlGQjcxRTdBQgorRTZFRkVCMkFDQzM4MzNCQjlCOUVFQTgwNzdDQTQyRjc3RDVEQ0Q5RDAyNzAwNzE4RjQzMDgyMEY2RTU2NjA1QjQ1OUUzNzJEMURCNDc3QTJCNkQxNjU5NDhCQkQ0OEUzQUQzRDY4RTZGMTFFNjI5MUUxMUNGMEUxQTBEMkEzMkQ4MjFENUU5NUQyQjlENjU1MENFMTNDMTIxMjJBNDhBQzUzNERGNjI1RTA2Qzk5RjkxM0Q3MkRDMzdEMTlCN0Q3OUIwQjQyNUYyOTk1RDNBMgorQTI4MUZDODYKK0VBMzI0MzdBRUMyNjAwNkFFQUM0RjkxMzMzCitENkNEMzg5OURBRDczQUY3ODY1RTQ3RkE5Q0M2MzU1NUI0NDE2MTY4MEU1RkI4QkJCRDVENzI5RDBDRUM0MkY5Q0RFQzhENDkyQkY1RTgzQkM0MzlCMEYyMTM2QzhENzZENUE5NUVEN0NEQjIxQzVBQzJEQUEyRjUyRTdERkJBMDMwRkNFNzA4RjQyNjlENTVEOTVGNjNERDY3NzMKKzk3NkI0NTlECis4QjY3MTE1QzczMEZEOTcxOEEzQTE2NEEwQQorMUZBRUMyOTlEMEQzODBERDVDN0M0RDQzRDlDNTYwMjRCOTc0RDRCRDgyMTA0NTNGNEUyOEJERUVFRjNFMTgxOTVDOENGOUQxRTY1NjVGQjA5NjQyQzhEQTQyRUEzMzkzN0ZBODQxQzQKK0MxRURFRDVECitFRkQ4N0Q3NDA2NThCMTQ4NDNDQjRBNzQzREU2CiszQjdBODM5NTVCQUJGQTFBNTdFNzcwRjMzODJCREM1Q0QyRTNDNDU1OTRGRkU5NjI4MERFNUMwNkQ5OTU3Q0ZENkZDQzNCMzhCOERCMjEwNDkwMjk5NjVFMzE4NzAwREIyMTUzQjBFMzYyRDdFRTc0OTRGQzAxQTM1QUJGNkJFNzg5NEE0MkMwREI2NTM2RjNGMTVEQUY1RTBBRUJFNUJFN0RENEExRkExOEJGRDREQjBFODZDMDYzQTQyODVFM0U2QkJEM0EwMzM3ODQ0NQorNzEyNzI2RUMKKzk0QUQ1NzNGQ0U1RDJFQ0RCMUQyNTM5Njk2Cis3M0RGRjhBQjYyMTlFMUMyRTMzNkY5QUQ5MjEwREM4RTM1Nzc5QTBCQUMxMDM4NjBFM0YzNzlBNENDRDQ2MEI1NDNDMzQzODY1QzU4RkIwNDI1ODAxQzUyOEYyOUYzRTYwMEJCNzQ0RTRGQThDMUQ2NUE4QkZDOEE1MEZCNzI1NkMyODBBNDMzODFCOAorMDI2QTIzMjQKK0QyMzZERUZFNjA0NjZEQ0JBRTUyMDExMEJBRTAKKzFFNjdBNkYzRjQxNzBENzdENzZBQkM1QjJGNkRDNTQ4NDgyMjVGNkEwODc0NTA5QURDMTBGRDQ5ODZFQTgyRUJFODU1NUY4QTBCNzhEMEJCNEQzMjc3RDNDNDc3Njc5OUQ5RDNGMkVDRTk5QTQxMkQ4MUNCRTc4ODYzOTcxM0U3QTNGREFEN0E0NTlGMTk2NTAwMjBEQkY0NkMxNDQ2RjZEOTg5OTNFRjA5RjU3MTdFNDQ5MTlDMzZFMjdGODhDNUQwRTI3ODBFNTAzNzQzNzhENUUzREQzMkFFNTgzQjE4QkUKKzg2NEI4QzBGCiszMzEyOTZCMzI3ODRGRjgyMTg2MjM4NEQwQgorNkJDQTVDNzczOUEzMzlENEIxNTgyRTgxQUM2MjNGNEIzQTFGMTE1OUY2RDExQkM4OTRCNDk3QTRFRUFGNDJGNkM5QUVEMTVGMzZCNEE4MzNFMEE5QUQ3RDJFMzI0QkU5REVDQ0ExMkIwOEI5MjlBMzkyM0E3RkRCQTZCRDI0QkRCQTc5NTIzM0JERjMwRTI1NEM5NjdGRjhGMDkxODNGMUIyQURFMDRBRUYxRjg1RTlDNworRjRCQTEwODYKK0RDNDkyMjlDNjQ0RTA3QkI1NTYwNzdBNzYzQzMKKzE3OEYzOEJCRkQxNDAwODhDNzIzOTUxMERBQUI0Njg1RTkzNkI4NTlCOTJFOUUwMjBBOUJDQkJBQTJGQjY0Nzc2RDgwMDI2NEMxRTVCMzFERDgyMTk1N0JCNDJFMzMyNjU3QzcxNTAzRTMwMDRBOTZGOEM1NTQ0NThFQzc0NEI4MzA1RTA1NDhDRDUzQjczQzM0MDIwQTM0OUQ5NjY4QzA5MDNDMjg5NzI3OEY4NDUyRTAzRkU5QTlDMjNEMDAzOUNCNUJENUM2OEQwMDA0MzA0OTUwRTg3QjVBN0NEQ0JFMDY3RUFBRERFNkYzQUNCNTEyCis3Q0E2QzZERQorQUE1RkMyNzk4MzNGNjg2MjQ5QTIwMUVFRDgKK0I0RTk2QjVDQkI1NDU4RTYyRTdDQjk1NTVBNDdCOUEyM0FGNTU5REM4ODYxQzEzQkRDODhGNjk5RUNDMEEzMUI2NEYyRTI4RUM4MjM4QzY2MDBCQjNBRjc1MzdEMzgxRjVEREM2QzNFMEE5NUJBNjBFOEMzRjRDNEY2ODYyNTkyRDUwNjczMjEKKzkzRUEzQzhGCitDQjdBODc1ODg1MTlERTg4MDA4MTkzOTc0NQorRjlENUVFRUMxRDIyNDRDOTA1NDIzMzU3RjU2ODg1RjE1OTc2NTA5ODI1MDI3ODc0QTFGNDY0OENENjY1RUY2QkY4MzE3QjEzOTRGOTdEMEFCMjk3NDkwNUEzNjRERTg4M0UyRjdDQjE1QUExMzFBQjcxRTNGNEE4NjEKK0QyQzZEOEQxCitFOEFBNEE2N0NERDUzRDhCQUZGM0VEMUZDRDcwCitCNEE2ODU1RUExRTQ5MEE0CisxQzBCNzZFMworRjg3NjYxMjM3NEJGQjdGQjE3MUE3NkQ3NkU0N0Y4RjgzMjdEOTkwNzMzQTNEMzYxQTNCRUE2QkIwQ0NEMDlCRTczNUQKKzgxMEU3RTA1MThDNTA2RTc3NDFFOUU0RUI0NkZDMzgwQjcwQjNBMUI5Njc1NUI4MDc2MzZEQTQ1MUUzODJFRjNBN0M1MDk3MUMzODUKKzQyNERDMTI1RDMzOTczRkVFRENBRTQzRTUwQUExQjM3MUREODU1MTE1NUI2RTI5MURFMzAzNgorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0YiAxNC4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDFjMmMzYTM2MmMzODJkMGUwMTEwMDExMTJjMzQyYTJmMzMyODM4MzEwMTJkMzUzODAxMWIyYzI4MzkzYjM4MzAzNDJlMDExYzJjM2EzZDM1MzgzMTAxMWU+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MmMzODJkMzUzODMzMjgzNDJhMmM+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDBkPiA5NDM0IDEzMzAwIDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjgwIDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyODAgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI4MCAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyODAgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDE0YiBTRgorPDBjMTExMDFjMTUxODE3PiAxMjcxIDE0NTggMCAyMDU1IC0xIHMKKzwwMDAzMDIwMDBkMTQxMTAwMDcxMTFiMTUxMzE3MDAxODEyMDAwOTExMWMxOTExMWExMj4gMjA1NSAxNDU4IDUgNDcwMyAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA3MTExYjE1MTMxNz4gMTI3MSAyMDA3IDAgMTg5OSAtMSBzCis8MDAwNTBmMWIxNTEwMWI+IDE4OTkgMjAwNyAxIDI1MzkgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFjMmMzYTM2MmMzODJkPiAxMjcxIDIzNTMgMCAxOTgwIC0xIHMKKzwwMDMwMzkwMDJiMmMzOTMwMmUzNDJjMmIwMDI4MzgzNTNiMzQyYjAwM2EyZjJjMDAyOTI4MzkzMDJhMDAyYTMyMzAyYzM0M2EwOTM5MmMzODNjMmMzODAwMzMzNTJiMmMzMjBhMDAyMTJmMmMzODJjMDAyODM4MmMwMDNhM2QzNTAwMmMzZTJjMmEzYjNhMjgyOTMyMmMzOTAwMDkwMDM0MmMzYT4gMTk4MCAyMzUzIDEzIDk0NjEgMCBzCis8NDI+IDk0NjEgMjM1MyAwIDk1MzEgLTEgcworPDM2MmMzODJkPiAxMjcxIDI1OTggMCAxNjQzIC0xIHMKKzwwMDI4MzQyYjAwMzQyYzNhMzkyYzM4M2MyYzM4MGEwMDE2MmMzNDJjMzgyODMyMzIzZjAwM2YzNTNiMDAzZDMwMzIzMjAwMzUzNDMyM2YwMDJjM2UyYzJhM2IzYTJjMDAzYTJmMmMwMDM0MmMzYTM2MmMzODJkMDAzNjM4MzUyZTM4MjgzMzAwMDkwMDNhMmYyYzAwMzQyYzNhMzkyYzM4M2MyYzM4MDAzNjM4MzU+IDE2NDMgMjU5OCAxNCA5NDYxIDAgcworPDQyPiA5NDYxIDI1OTggMCA5NTMxIC0xIHMKKzwyZTM4MjgzMz4gMTI3MSAyODQzIDAgMTczNCAtMSBzCis8MDAzZDMwMzIzMjAwMjkyYzAwMzAzNDNjMzUzMTJjMmIwMDI5M2YwMDNhMmYyYzAwMzUzYTJmMmMzODAwMzkzZjM5M2EyYzMzMDQzOTAwMzAzNDJjM2EyYjBhPiAxNzM0IDI4NDMgOCA1NjUxIDAgcworPDI0MmYyYzM0PiAxMjcxIDMxNDYgMCAxODE3IC0xIHMKKzwwMDNmMzUzYjAwMmMzZTJjMmEzYjNhMmMwMDM0MmMzYTM2MmMzODJkMDgwMDNhMmYyYzAwMmQzMDM4MzkzYTAwM2EyZjMwMzQyZTAwM2EyZjI4M2EwMDNkMzAzMjMyMDAyZjI4MzYzNjJjMzQwMDMwMzkwMDNhMmYyYzAwMmMzOTNhMjgyOTMyMzAzOTJmMzMyYzM0M2EwMDM1MmQ+IDE4MTcgMzE0NiAxMyA4Mjg4IDAgcworPDAwMjgwMDJhMzUzNDNhMzgzNTMyMDAyYTM1MzQ+IDgyODggMzE0NiAzIDk0NjEgMCBzCis8NDI+IDk0NjEgMzE0NiAwIDk1MzEgLTEgcworPDM0MmMyYTNhMzAzNTM0PiAxMjcxIDMzOTEgMCAxOTQ0IC0xIHMKKzwwMDNhMzUwMDNhMmYyYzAwMzgyYzMzMzUzYTJjMDAzOTNmMzkzYTJjMzMwYTAwMjEyZjMwMzkwMDJhMzUzNDM0MmMyYTNhMzAzNTM0MDAzZDMwMzIzMjAwMjkyYzAwM2IzOTJjMmIwMDNhMzUwMDM2MjgzOTM5MDAzYTJjMzkzYTAwMmEzNTM0MmQzMDJlM2IzODI4M2EzMDM1MzQwMDMwMzQyZDM1MzgzMzI4PiAxOTQ0IDMzOTEgMTQgOTQ2MSAwIHMKKzw0Mj4gOTQ2MSAzMzkxIDAgOTUzMSAtMSBzCis8M2EzMDM1MzQ+IDEyNzEgMzYzNSAwIDE2MzAgLTEgcworPDAwMjgzNDJiMDAzODJjMzkzYjMyM2EzOTAwM2EzNTAwMjgzNDJiMDAyZDM4MzUzMzAwM2EyZjJjMDAzODJjMzMzNTNhMmMwMDM5M2YzOTNhMmMzMzBhMDAxZj4gMTYzMCAzNjM1IDkgNTc1OSAwIHMKKzwyYzJlMjgzODJiMzIyYzM5MzkwMDM1MmQwMDNhMmYyYzAwM2EzZjM2MmMwMDM1MmQwMDNhMmMzOTNhMDAyOTJjMzAzNDJlMDAzODNiMzQwOD4gNTc1MSAzNjM1IDcgOTE4OSAwIHMKKzwwMDNhMmYyYz4gOTE4OSAzNjM1IDEgOTUzMSAwIHMKKzwyYTM1MzQzYTM4MzUzMjAwMmEzNTM0MzQyYzJhM2EzMDM1MzQwMDNkMzAzMjMyMDAyOTJjMDAyODAwMjExMjFlMDAyYTM1MzQzNDJjMmEzYTMwMzUzNDAwM2IzOTMwMzQyZTAwMTEyMDEzMDAzOTM1MmEzMTJjM2EzOTBhPiAxMjcxIDM4ODAgOSA3MDY0IDAgcworPDFkMzQyYTJjPiAxMjcxIDQxODMgMCAxNzU3IC0xIHMKKzwwMDNhMmYyYzAwMmEzNTM0M2EzODM1MzIwMDJhMzUzNDM0MmMyYTNhMzAzNTM0MDAzMDM5MDAzYjM2MDAyODM0MmIwMDNhMmYyYzAwMmEzNTM0MmQzMDJlM2IzODI4M2EzMDM1MzQwMDMwMzQyZDM1MzgzMzI4M2EzMDM1MzQwMDJmMjgzOTAwMjkyYzJjMzQwMDM2MjgzOTM5MmMyYjA4MDAyODAwMzkyYzM2Mjg+IDE3NTcgNDE4MyAxNCA5NDYxIDAgcworPDQyPiA5NDYxIDQxODMgMCA5NTMxIC0xIHMKKzwzODI4M2EyYz4gMTI3MSA0NDI4IDAgMTYzMSAtMSBzCis8MDAyYTM1MzQzNDJjMmEzYTMwMzUzNDAwM2QzMDMyMzIwMDI5MmMwMDM1MzYyYzM0MmMyYjAwMmQzNTM4MDAzYTJmMmMwMDMzMmMyODM5M2IzODJjMzMyYzM0M2EwMDMwM2EzOTJjMzIyZDAwM2IzOTMwMzQyZTAwM2EyZjJjMDAxMDFlMTgzOTAwMjgzNDJiMDAzNjM4MzUzYTM1MmEzNTMyMzkwMDI4MzY+IDE2MzEgNDQyOCAxNCA5NDYxIDAgcworPDQyPiA5NDYxIDQ0MjggMCA5NTMxIC0xIHMKKzwzNjM4MzUzNjM4MzAyODNhMmM+IDEyNzEgNDY3MyAwIDIxMTggLTEgcworPDAwMmQzNTM4MDAzYTJmMmMwMDNhMmMzOTNhMGEwMDIxMmYyYzAwM2EyYzM5M2EwMDNkMzAzMjMyMDAyOTJjMDAzNjJjMzgyZDM1MzgzMzJjMmIwODAwMjgzNDJiMDAzYTJmMmMwMDM4MmMzOTNiMzIzYTM5MDAzZDMwMzIzMjAwMjkyYzAwMmIzMDM5MzYzMjI4M2YyYzJiMGE+IDIxMTggNDY3MyAxNCA4Njg2IDAgcworPDFjMmMzYTM2MmMzODJkPiAxMjcxIDQ5NzYgMCAxOTgwIC0xIHMKKzwwMDM2MzIyODJhMmMzOTAwMzQzNTAwM2EzODI4MmQyZDMwMmEwMDM1MzQwMDNhMmYyYzAwMmEzNTM0M2EzODM1MzIwMDJhMzUzNDM0MmMyYTNhMzAzNTM0MDAzZDJmMzAzMjJjMDAyOD4gMTk4MCA0OTc2IDkgNjQxMiAwIHMKKzwwMDNhMmMzOTNhMDAzMDM5MDAzMDM0MDAzNjM4MzUyZTM4MmMzOTM5MGEwMDEyMmMzODNhMjgzMDM0MDAyMTEyMWUwMDM1MzY+IDY0MTIgNDk3NiA3IDk0NjEgMCBzCis8NDI+IDk0NjEgNDk3NiAwIDk1MzEgLTEgcworPDNhMzAzNTM0MzkwOD4gMTI3MSA1MjIxIDAgMTc2NCAtMSBzCis8MDAzOTNiMmEyZj4gMTc2NCA1MjIxIDEgMjIwMiAwIHMKKzwwMDI4MzkwMDIwMWQyNzE5MTQxNDFlPiAyMjAyIDUyMjEgMiAzNDI2IDAgcworPDEwMWExODIzMTQwODAwMzAyZDAwMzkyYzNhMDAyODM5MDAzZjM1M2IzODAwMzkzZjM5M2EyYzMzMDQzOTAwMmIyYzJkMjgzYjMyM2EwODAwMzMyODNmMDAzNjNiM2EwMDM2MjgyYTMxMmMzYTM5MDAzNTNiM2EwMDM1MzQwMDNhMmYyYzAwMmEzNTM0PiAzMzk5IDUyMjEgMTMgOTQ2MSAwIHMKKzw0Mj4gOTQ2MSA1MjIxIDAgOTUzMSAtMSBzCis8M2EzODM1MzI+IDEyNzEgNTQ2NiAwIDE1OTUgLTEgcworPDAwMmEzNTM0MzQyYzJhM2EzMDM1MzQwYT4gMTU5NSA1NDY2IDEgMjY5OSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA2MGIwZTAwMGUxYzE1MTYxNTFkMGYxYzE1MTgxNz4gMTI3MSA1ODQ4IDEgMjczNyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTIxZTIyPiAxMjcxIDYxOTQgMCAxNzIzIC0xIHMKKzwwMDNiM2EzMDMyMzA0MDI4M2EzMDM1MzQ+IDE3MjMgNjE5NCAxIDI2ODcgMCBzCis8MDAzMDM5MDAyODAwMmQzODJjMzczYjJjMzQzYTMyM2YwMDM4MmMzNzNiMmMzOTNhMmMyYjAwMzMyYzNhMzgzMDJhMDAzNTJkMDAzNDJjM2EzZDM1MzgzMTMwMzQyZTAwMzYyYzM4MmQzNTM4MzMyODM0MmEyYzBhMDAyMjM0MmQzNTM4M2EzYjM0MjgzYTJjMzIzZjA4PiAyNjg3IDYxOTQgOSA5NTMxIDAgcworPDMwM2E+IDEyNzEgNjQzOSAwIDEzOTggLTEgcworPDAwMmEyODM0MDAyODMyMzkzNTAwMjkyYzAwMzUzNDJjMDAzNTJkMDAzYTJmMmMwMDMzMzUzOTNhMDAyYjMwMmQyZDMwMmEzYjMyM2EwMDMzMmMzYTM4MzAyYTM5MDAzYTM1MDAzMzJjMjgzOTNiMzgyYz4gMTM5OCA2NDM5IDExIDY0NTggMCBzCis8MDAyODJhMmEzYjM4MjgzYTJjMzIzZjBhMDAxYzJjM2EzNjJjMzgyZDAwMzAzOTAwMmIyYzM5MzAyZTM0MmMyYjAwM2EzNT4gNjQ1OCA2NDM5IDUgOTUzMSAwIHMKKzwzYjM5MmM+IDEyNzEgNjY4NCAwIDE1NzMgLTEgcworPDAwMzUzNDJjMDAzNTJkMDAzOTJjM2MyYzM4MjgzMjAwMDUzNjJjMzgyZjI4MzYzOTAwMzYzMjI4M2EyZDM1MzgzMzAwMmIyYzM2MmMzNDJiMmMzNDNhMDYwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDAwMzMyYzI4MzkzYjM4MmMzMzJjMzQzYTAwMzkyYTJmMmMzMzJjMzkwYT4gMTU3MyA2Njg0IDEwIDkxNDggMCBzCis8MDAxMzJjPiA5MTQ4IDY2ODQgMSA5NDYxIDAgcworPDQyPiA5NDYxIDY2ODQgMCA5NTMxIC0xIHMKKzwzNjJjMzQyYjMwMzQyZT4gMTI3MSA2OTI5IDAgMjAwMSAtMSBzCis8MDAzNTM0MDAzYTJmMmMwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDAwMzMyYzI4MzkzYjM4MmMzMzJjMzQzYTAwM2EyYzJhMmYzNDMwMzczYjJjMDAzYjM5MmMyYjA4MDAyODAwM2IzNDMwMzczYjJjMDAzOTMwMzQyZTMyMmMwOTMyMmMzYTNhMmMzODAwMmEzNTJiMmM+IDIwMDEgNjkyOSAxMSA5MTgzIDAgcworPDAwM2QzMDMyMzI+IDkxODMgNjkyOSAxIDk1MzEgMCBzCis8MjkyYz4gMTI3MSA3MTc0IDAgMTQ4OSAtMSBzCis8MDAzMDM0MmEzMjNiMmIyYzJiMDAzMDM0MDAzYTJmMmMwMDEyMWUyMjAwMzYzNTM4M2EzMDM1MzQwMDM1MmQwMDNhMmYyYzAwM2EyYzM5M2EwMDI5MjgzNDM0MmMzODAwMmQzNTM4MDAyOTM1M2EyZjAwM2EyZjJjMDAzMjM1MmEyODMyMDAyODM0MmIwMDM4MmMzMzM1M2EyYzAwMzkzZjM5M2EyYzMzMzkwYT4gMTQ4OSA3MTc0IDE2IDkyNjYgMCBzCis8MjEyZjJjPiAxMjcxIDc0NzcgMCAxNjMxIC0xIHMKKzwwMDJiMmMyZDI4M2IzMjNhMDAxMjFlMjIwMDMzMmMyODM5M2IzODJjMzMyYzM0M2E+IDE2MzEgNzQ3NyAzIDQwNDkgMCBzCis8MDAzYTJjMmEyZjM0MzAzNzNiMmMwMDMwMzkwMDI5MjgzOTJjMmIwMDM1MzQwMDNhMmYyYzAwM2IzOTJjMDAzNTJkMDA0MTMyMzUzNTM2MmMzODM5MDMwMDNkMmYzMDJhMmYwMDNkMzAzMjMyMDAzOTMwM2EwMDMwMzQwMDNhMzAyZTJmM2E+IDQwNDkgNzQ3NyAxMyA5NTMxIDAgcworPDMyMzAzYTNhMzIyYzAwMzIzNTM1MzYzOTAwMmEzNTM0MzkzYjMzMzAzNDJlMDAyODM0M2YwMDEyMWUyMjAwMzIyYzJkM2EwMDM1M2MyYzM4MDAyOTNmMDAzYTJmMmMwMDM0MmMzYTNkMzUzODMxMzAzNDJlMGEwMDIxMmYzMDM5PiAxMjcxIDc3MjIgMTAgNjg5OCAwIHMKKzwwMDMzMmMzYTJmMzUyYj4gNjg5OCA3NzIyIDEgNzYyNyAwIHMKKzwwMDMwMzkwMDM0MzUzYTAwM2QzMDNhMmYzNTNiM2EwMDMwM2EzOTAwMjgyYjJiPiA3NjI3IDc3MjIgNSA5NDYxIDAgcworPDQyPiA5NDYxIDc3MjIgMCA5NTMxIC0xIHMKKzwyYzJiPiAxMjcxIDc5NjYgMCAxNDkyIC0xIHMKKzwwMDM1M2MyYzM4MmYyYzI4MmIwODAwMjkzYjNhMDAzZDJmMmMzODJjM2MyYzM4MDAzNjM1MzkzOTMwMjkzMjJjMDgwMDJhMjgzODJjMDAyZjI4MzkwMDI5MmMyYzM0MDAzYTI4MzEyYzM0MDAzYTM1MDAzMTJjMmMzNjAwM2EyZjI4M2EwMDM1M2MyYzM4MmYyYzI4MmIwMDNhMzUwMDI4MDAzMzMwMzQzMDMzM2IzMzBhPiAxNDkyIDc5NjYgMTUgOTUzMSAwIHMKKzwxODJkPiAxMjcxIDgyMTEgMCAxNDIyIC0xIHMKKzwwMDNmMzUzYjAwM2QzNTNiMzIyYjAwMzIzMDMxMmMwMDNhMzUwMDJlMmMzYTAwMjgzNDAwMmMzOTNhMzAzMzI4M2EyYzAwMzUyZDAwM2EyZjJjMDAzNTNjMmMzODJmMmMyODJiMDgwMDM4M2IzNDAwMzUzNDJjMDAzYTJjMzkzYTAwM2QzMDNhMmYwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDA4MDAyODM0MmIwMDM1MzQyYz4gMTQyMiA4MjExIDE4IDk1MzEgMCBzCis8M2EyYzM5M2E+IDEyNzEgODQ1NiAwIDE1OTUgLTEgcworPDAwM2QzMDNhMmYzNTNiM2EwODAwMjgzNDJiMDAyYTM1MzMzNjI4MzgyYzAwM2EyZjJjMDAzYTJmMzgzNTNiMmUyZjM2M2IzYTM5MGEwMDIyMzkyYzAwMzUyZDAwMzIzNTM1MzYyYzM4MzkwMDMwMzQwMDMzMmMyODM5M2IzODMwMzQyZTAwMTIxZTIyMDAzYjNhMzAzMjMwNDAyODNhMzAzNTM0MDAzMDM5PiAxNTk1IDg0NTYgMTMgOTI0OSAwIHMKKzwwMDMwMzQ+IDkyNDkgODQ1NiAxIDk0NjEgMCBzCis8NDI+IDk0NjEgODQ1NiAwIDk1MzEgLTEgcworPDJiMzAyYTI4M2EyYzJiPiAxMjcxIDg3MDEgMCAxOTMzIC0xIHMKKzwwMDI5M2YwMDNhMmYyYzAwMzIyYzNhM2EyYzM4MDAyYTM1MmIyYzAwNDExYTBhMDM+IDE5MzMgODcwMSA1IDQwMDAgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwOTBhMGQwOD4gMTI3MSA5MDA0IDAgMTg2NiAtMSBzCis8MDQ+IDE4NzAgOTAwNCAwIDE5MjggLTEgcworPDAwPiAxOTI4IDkwMDQgMSAxOTY2IDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDE1PiAxOTY2IDkwMDQgMSAyMTM1IDAgcworPDM1MzgwMDI4MmEyYTNiMzgyODNhMmMwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDAwMzUzNDAwMWIxZTAwMzkzZjM5M2EyYzMzMzkwODAwMzAzYTAwMzAzOTAwMDcyYTM4M2IyYTMwMjgzMjA3MDAzYTJmMjgzYTAwMzQyYzNhMzYyYzM4MmQwMDI4MzQyYjAwMzQyYzNhMzkyYzM4M2MyYzM4PiAyMTI3IDkwMDQgMTMgOTUzMSAwIHMKKzwzMTM0MzUzZD4gMTI3MSA5MjQ5IDAgMTc1NiAtMSBzCis8MDAzYTJmMmMwMDM0M2IzMzI5MmMzODAwMzUyZDAwMzYzODM1MmEyYzM5MzkzNTM4MzkwMDM1MzQwMDNhMmYyYzAwMzkzZjM5M2EyYzMzMGEwMDE1PiAxNzU2IDkyNDkgOCA1NTE5IDAgcworPDM1MzgwMDM5MzUzMzJjMDAzOTNmMzkzYTJjMzMzOTAwMDUxNzFlMDkyMjI1MDYwMDNhMmYzMDM5MDAyYTI4MzQwMDI5MmMwMDJiMmMzYTJjMzg+IDU1MTEgOTI0OSA3IDk0NjEgMCBzCis8NDI+IDk0NjEgOTI0OSAwIDk1MzEgLTEgcworPDMzMzAzNDJjMmI+IDEyNzEgOTQ5NCAwIDE4NDAgLTEgcworPDAwMzYzODM1MmUzODI4MzMzMzI4M2EzMDJhMjgzMjMyM2YwYTAwMWQzYTJmMmMzODAwMzkzZjM5M2EyYzMzMzkwMDM4MmMzNzNiMzAzODJjMDAzYTJmMmMwMDNiMzkyYzAwMzUyZDAwM2EyZjJjMDA0MTA5MzQwMzAwMmUzMjM1MjkyODMyMDAyYTM1MzMzMzI4MzQyYjAwMzIzMDM0MmM+IDE4NDAgOTQ5NCAxMiA5MjMzIDAgcworPDAwMjgzOD4gOTIzMyA5NDk0IDEgOTQ2MSAwIHMKKzw0Mj4gOTQ2MSA5NDk0IDAgOTUzMSAtMSBzCis8MmUzYjMzMmMzNDNhMGE+IDEyNzEgOTczOSAwIDIwMDcgLTEgcworPDE3MWUwOTIyMjU+IDEyNzEgMTAwNDEgMCAyMDg3IC0xIHMKKzwwMDBjMGIwYTI1MDAzNTJkMmQyYzM4MzkwMDI4MDA0MDJjMzgzNTAwMjgyYjJiMzAzYTMwMzUzNDI4MzIwMDM1M2MyYzM4MmYyYzI4MmIwODAwM2MyYzM4M2YwMDI4MmEyYTNiMzgyODNhMmMwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDAwMzMyYzJhMmYyODM0MzAzOTMzPiAyMDg3IDEwMDQxIDExIDk1MzEgMCBzCis8MjkyODM5MmMyYj4gMTI3MSAxMDI4NiAwIDE3OTEgLTEgcworPDAwMzUzNDAwM2EyZjJjMDAzNjM5M2EyODNhMDUwNjAwMzkzZjM5M2EyYzMzMDAyYTI4MzIzMjBhMDAxODJkMDAzZjM1M2IwMDI4MzgyYzAwMmEzNTMzMzYzMDMyMzAzNDJlMDAzNTM0MDAxNzFlMDkyMjI1MDAwYzBiMDgwMDNmMzUzYjAwMzkyZjM1M2IzMjJiMDAzODJjMzYzMjI4MmEyYzAwM2EyZjJjPiAxNzkxIDEwMjg2IDE2IDk1MzEgMCBzCis8NDEwOTEzMjIyMDE0MjcxYTFkMWQxZTE0MWY+IDEyNzEgMTA1MzEgMCAzMTgxIC0xIHMKKzwwMz4gMzE2OSAxMDUzMSAwIDMyNjggLTEgcworPDAwMzAzNDAwM2EyZjJjMDAzMzI4MzEyYzJkMzAzMjJjMDAzZDMwM2EyZjAwNDEwOTEzMjIyMDE0MjcxZTIwMjE+IDMyNjggMTA1MzEgNSA2Njc4IDAgcworPDEwPiA2NjU4IDEwNTMxIDAgNjgyMSAtMSBzCis8MjE+IDY4MDEgMTA1MzEgMCA2OTQwIC0xIHMKKzwwMzAwMjgzNDJiMDAzODJjMmEzNTMzMzYzMDMyMmMwYTAwMjQyZjJjMzQwMDNhMmYzMDM5PiA2OTQ0IDEwNTMxIDQgOTUzMSAwIHMKKzwzMzJjM2EyZjM1MmI+IDEyNzEgMTA3NzYgMCAxOTY3IC0xIHMKKzwwMDMwMzkwMDI5MmMzMDM0MmUwMDNiMzkyYzJiMDgwMDNhMmYyYzAwMzIyYzNhM2EyYzM4MDAyYTM1MmIyYzAwNDExODAzMDAzZDMwMzIzMjAwMjkyYzAwMmIzMDM5MzYzMjI4M2YyYzJiMGE+IDE5NjcgMTA3NzYgMTAgNjUyNiAwIHMKKzwxZDNhMmYyYzM4MDAyYTM1MmIyYzM5MDAzMzI4M2YwMDI5MmMwMDMwMzQyYTMyM2IyYjJjMmIwMDMwMzQwMDMyMjgzYTJjMzgwMDNjMmMzODM5MzAzNTM0MzkwMDM1MmQwMDM0MmMzYTM2MmMzODJkMGEwMDI0MmYyYzM0MDAzYTJmMmMwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDAwMzMyYzJhMmYyOD4gMTI3MSAxMTA3OSAxNCA5NDYxIDAgcworPDQyPiA5NDYxIDExMDc5IDAgOTUzMSAtMSBzCis8MzQzMDM5MzMwMDMwMzkwMDNiMzQzMTM0MzUzZDM0MDgwMDJjMzAzYTJmMmMzODAwMjgwMDQxMjIwMzAwMzUzODAwMjgwMDQxMGYwMzAwM2QzMDMyMzIwMDI5MmMwMDJiMzAzOTM2MzIyODNmMmMyYjBhPiAxMjcxIDExMzI0IDExIDYzNjEgMCBzCis8MTYzODJjMjgzYT4gMTI3MSAxMTYyNyAwIDE4MDMgLTEgcworPDAwMmEyODM4MmMwMDM5MmYzNTNiMzIyYjAwMjkyYzAwMmMzZTJjMzgyYTMwMzkyYzJiMDAzZDJmMmMzNDAwMzIzNTM1MzEzMDM0MmUwMDI4M2EwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzNDBhMDAxMTJjMDAyYTJjMzgzYTI4MzAzNDAwM2YzNTNiMDAyODM4MmMwMDJkMjgzMzMwMzIzMDI4Mzg+IDE4MDMgMTE2MjcgMTQgOTUzMSAwIHMKKzwzZDMwM2EyZj4gMTI3MSAxMTg3MSAwIDE2NTcgLTEgcworPDAwM2EyZjJjMDAzYTJjMmEyZjM0MzAzNzNiMmMwMDI5MmMzMDM0MmUwMDNiMzkyYzJiMDgwMDI4MzQyYjAwMzAzYTM5MDAwMDMwMzMzNjMyMzAyYTI4M2EzMDM1MzQzOTBhMDAxNT4gMTY1NyAxMTg3MSA5IDYwODcgMCBzCis8MzUzODAwMmMzZTI4MzMzNjMyMmMwODAwMjgwMDMzMmMyYTJmMjgzNDMwMzkzMzAwM2EyZjI4M2EwMDMwMzkwMDI5MjgzOTJjMmI+IDYwNzkgMTE4NzEgNiA5NTMxIDAgcworPDM5MzUzMjJjMzIzZjAwMzUzNDAwMTIxZTIyMDAyYTJmMjgzODJlMmMyYjAwM2EzNTAwM2EyZjJjMDAzNDJjM2EzNjJjMzgyZDAwMDUzNDJjM2EzOTJjMzgzYzJjMzgwNjAwMzYzODM1MmEyYzM5MzkwMDI4MzIzNTM0MmMwMDNkMzAzMjMyMDAzMjMwMzEyYzMyM2YwMDNiMzQyYjJjMzgwOTM4MmMzNjM1MzgzYTAwM2EyZjJjPiAxMjcxIDEyMTE2IDEzIDk1MzEgMCBzCis8MzgyYzI4MzI+IDEyNzEgMTIzNjEgMCAxNjIwIC0xIHMKKzwwMDEyMWUyMjAwM2IzYTMwMzIzMDQwMjgzYTMwMzUzND4gMTYyMCAxMjM2MSAyIDMwNjkgMCBzCis8MDAyMDE4MTYxYzE4MTUxODEyMTAxYzIxMWE+IDMwNjkgMTIzNjEgMSA0Njg1IDAgcworPDI2MGEwMDFiM2IyYTJmMDAzNDJjM2EzZDM1MzgzMTAwMzYzODM1MmEyYzM5MzkzMDM0MmUwMDNhMjgzMTJjMzkwMDM2MzIyODJhMmMwMDI4M2QyODNmMDAyZDM4MzUzMzAwM2EyZjJjPiA0NjUwIDEyMzYxIDggOTUzMSAwIHMKKzwzYjM5MmMzOD4gMTI3MSAxMjYwNiAwIDE2NTQgLTEgcworPDAwMzYzODM1MmEyYzM5MzkwMDJhMzUzNDNhMmMzZTNhMGEwMDEyMjgzYzJjMjgzYTAwMTEyYzM0MmEyZjMzMjgzODMxMmMzODAyPiAxNjU0IDEyNjA2IDQgNTE4NCAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICg5KSA5CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzQgcHV0CitkdXAgMyAvQzAwMzkgcHV0CitkdXAgNCAvQzAwNDAgcHV0CitkdXAgNSAvQzAwNDEgcHV0CitkdXAgNiAvQzAwNDQgcHV0CitkdXAgNyAvQzAwNDUgcHV0CitkdXAgOCAvQzAwNDYgcHV0CitkdXAgOSAvQzAwNDcgcHV0CitkdXAgMTAgL0MwMDQ4IHB1dAorZHVwIDExIC9DMDA0OSBwdXQKK2R1cCAxMiAvQzAwNTUgcHV0CitkdXAgMTMgL0MwMDU3IHB1dAorZHVwIDE0IC9DMDA1OCBwdXQKK2R1cCAxNSAvQzAwNjAgcHV0CitkdXAgMTYgL0MwMDYyIHB1dAorZHVwIDE3IC9DMDA2NSBwdXQKK2R1cCAxOCAvQzAwNjYgcHV0CitkdXAgMTkgL0MwMDY3IHB1dAorZHVwIDIwIC9DMDA2OCBwdXQKK2R1cCAyMSAvQzAwNjkgcHV0CitkdXAgMjIgL0MwMDczIHB1dAorZHVwIDIzIC9DMDA3NiBwdXQKK2R1cCAyNCAvQzAwNzcgcHV0CitkdXAgMjUgL0MwMDc4IHB1dAorZHVwIDI2IC9DMDA3OSBwdXQKK2R1cCAyNyAvQzAwODAgcHV0CitkdXAgMjggL0MwMDgzIHB1dAorZHVwIDI5IC9DMDA4NCBwdXQKK2R1cCAzMCAvQzAwODkgcHV0CitkdXAgMzEgL0MwMDkxIHB1dAorZHVwIDMyIC9DMDA5MyBwdXQKK2R1cCAzMyAvQzAwOTUgcHV0CitkdXAgMzQgL0MwMDk3IHB1dAorZHVwIDM1IC9DMDA5OCBwdXQKK2R1cCAzNiAvQzAwOTkgcHV0CitkdXAgMzcgL0MwMTAwIHB1dAorZHVwIDM4IC9DMDEwMSBwdXQKK2R1cCAzOSAvQzAxMDIgcHV0CitkdXAgNDAgL0MwMTAzIHB1dAorZHVwIDQxIC9DMDEwNCBwdXQKK2R1cCA0MiAvQzAxMDUgcHV0CitkdXAgNDMgL0MwMTA2IHB1dAorZHVwIDQ0IC9DMDEwNyBwdXQKK2R1cCA0NSAvQzAxMDggcHV0CitkdXAgNDYgL0MwMTA5IHB1dAorZHVwIDQ3IC9DMDExMCBwdXQKK2R1cCA0OCAvQzAxMTEgcHV0CitkdXAgNDkgL0MwMTEyIHB1dAorZHVwIDUwIC9DMDExNCBwdXQKK2R1cCA1MSAvQzAxMTUgcHV0CitkdXAgNTIgL0MwMTE2IHB1dAorZHVwIDUzIC9DMDExNyBwdXQKK2R1cCA1NCAvQzAxMTggcHV0CitkdXAgNTUgL0MwMTE5IHB1dAorZHVwIDU2IC9DMDEyMCBwdXQKK2R1cCA1NyAvQzAxMjEgcHV0CitkdXAgNTggL0MwMTIyIHB1dAorZHVwIDU5IC9DMDEyNCBwdXQKK2R1cCA2MCAvQzAxMjcgcHV0CitkdXAgNjEgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy01MCAtMjU2IDkyMCA3NjRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMjQ3REE3RkM5MUI5RkVCQTgyOTI1QzdCN0E5QjBEMjJERDEKKzdDMEU5QTcwOTM2MDhGMTQxMDU0NkYwMAorMDlGOTg1MzFCNTk1OUI1ODhDCis3OUNDMzEwMworMDQ5NTJBMjU5QjgxRTQ1MjExMUIxNjE4ODlGMgorMzM0N0Q1QjYwQkNCRUU5REVBMzIwRUMzNkY4RjhFNDQ4NUMwM0NENkVFQjNGODgyMTgwMDg2Q0UwNDcxRTFDQTFBNEYyRUIxRDc5ODU0RkFFQzlFMDk1RkUyNkNGQkNBMTMzRTM2MTI0Q0RFQkI3RDhBODUzMDBBRDFGMEY5MTZFRTczMENCOUMyMTAzNjFCODI3RkY2Mzc1MTBBNDdBMjBCNDc3RDY3ODhEMEM0RTQ4QjExOTVDMzI5Mzc4QUExRDg1NzRBNkZENkJFODQKKzhDMUM3QzhDCis4ODA1NDc5NUZGRThFNkQ4NDczMzlDMjAzNworQ0Y2ODM0RUJGNTdFNTU5QTU0MUJDNDFENDM1NUE3QjkwMUJENkJFQTEzODBFNDlGOTVGNTlFMDZDNTQwMjlEN0QzRTI1RjVDNzlDRjAyQkU1MDM4MDYwOUZCQ0VCQTcwMEIzNDEyMjczRUY4QzFEMAorQ0I1RjlDNUIKKzM2REM0RTQ1MTkxRTQ5MkYzN0FBMTlFQTY2Cis0QzA2MzEyQ0I4OTlGNzYyMjZFNUNENDg3MjYxOUQ4NzI0QjBBNjNCMzkzOTM5NEFGRDY1MDdFQ0RFQzhGODA5MzUzRjIxOUY4QjRDNTVCMEEwNjlCNzY2Qzg5QTY5MDFENDAxQTNDN0UyMTJGODUzMDBENUU5QTZCRENGOThCRgorN0Y3REE3REIKKzdBREQ4QzZGOTU3MUUxQTMxNTYwQjAyQjE5CisxNUNGNDhDREVENTQxOEVBQTZGMjE4QTFGQzIxRUFCQ0NENTRDNDhDODlEMDdDNUM2QzY3RjkzNTU2QURDQTYzNEY1MjJCQTU5RkM2MDM3OEU4QzZFQzQ1RDVCOUZBMjU0N0VBODVGQ0E2RDM2MzM5NTc4RTVBOUIxMjcyQjcKKzVCNkIwMEY2CisxN0REODY1RDc2NjE2MTI1MEE2QkU0MzcyNworODlBNUU0QTgwNjUwQ0M4NThDODBCMEYzMjIzNEEyQzE0NjQ3NDA0QTc3OTI5NEEwQUUwOEFEM0IzNTk3RDhDRTM5N0I0RjBFMEI3RTFCODFFNEEyRjhBMTQ0NUI0OUNFQjM1NzRDNTAyMTE2MDI4MENGCis1ODc2MjZERgorQzVENzFBRkIxNTA0NjlFNjA5QUI3NTBFNDEKK0I3Nzk5N0JCQUIyODg5OTRCRTk1MkM0NjJGMUY4NDI5Q0RDNTFDQjI4NzI5MTYKK0Q0M0U3NzZDCiszNkI0RkZGREQwNkRDNjVCMDU0NjI2OTNDMworMkZFNUIyMEVFRDhDOTA1NTlCMEY1RTRBMzU3MUJDRDZGMjMyNTQ2RkZBM0UzMkNGRUM3RUZGNUY2OTVEMDgKK0FDREQwNkJECitDMTk0RUNBNzdBNDA4RDZFN0ExNDlGN0NERAorRUZERjZBRDQzNjAwNTFCMzJEMEFCN0VFMkVDOUQyQkYyMkNCRTA4NDFERjI2MDA4QTk3RDA4QzYKKzRCODcyRDZFCitGMzgzNkJBNUM1QTlBQzMyRDFBMzY1RkFGQworNjYzODk3NjE1NkU0NDVGNTk3OEI3MjVBNTFCQjQ2NjFFQzEzMTY4MTFEM0Q0OTE4QjA4QkJFNTIyNDEyQjZEMjczQkU5M0M3QzMxQjA0RERGQjlCM0Y1Nzg5QzA3QTI2ODE3NThDODVDOTY0N0M3RTZGREQ0NUYyOTdGRkIxMzA4ODkzQTI5MzMxMkVDQzk3NTFGRAorQUVBQjIxMzEKK0I1QjJERUM4RUU2OUU3RDU1NDY0RUU3QjFECitCRjM1MUZEOTJFMEY1NzMwOTFBREJBMzA4RjI3OTA3OUU2RTNGMUEwRTFEMzM3MzBBNDY2NTBBQTBCOEExRkFCMjQ5RUQzMzcwQ0UyMEIwODVDRTIxODYwODZGQzY4ODVGQ0U4OUM5MzM1RUY5RDE3RUVEMzM1MjA2NkJFMEUKK0RBMDU0RkYzCitGNUU0MEE3NkYyNTY3ODgzMDBGQTNGODFFMgorOTdFN0FFQTNGRTFBQTZBOTRFRThFRkNCODJFRUNEOENFMTM0M0Q1NjlDNTdCRTI5OUM5NUQ5RUM5M0I4QjZCNTI4Q0E2N0RGQzM4MkFFOTk4QUQ4MTQKK0RBQjUyQzUzCitGMTIzM0Q1NzI3MTA4RTgxOTM2MzM4QkNCNjFCCiswM0U2REUxMkQ4QTA3RkY2OTcwM0I0NzI3M0RERTA1NDNCNjY3RkVGOUQ5MzQ5MTNBOTFEMDdFNTA1RDUzQUNCNkI3OUMyMTEwRjZEMzhDOTBCNjUwMkMwNjNBRjcwODM2RjFGNkU3OERGODVDQkM4MkQzQUNDMDkzRTAyRjQ3REExM0E4MUU0OUYwRDJEQ0M3QkRDMjY4MkZCNTMwRTg4QzUwQkZBRDYwNUE3Nzc2RTAxQzI1MjA0MDRGRjBBQTJCQzg0MTk5OUY4Cis3RTk1RUY5MQorOUEwMTU1N0Y4ODkzOTQ0RkY4Mzg0QUYwNTYKKzJDODU2OTRDMjY2REUzNjhERTc4NEYzMTMyMDIxQzhGN0RGOUFBQUUxMDVEMkMxRDkyQTExRUFCMjdBMDVCNzEwNkEzMDczMDI2QzJERThFOERFMzY0QzEzOTc2RURGQTNBNUQxN0U5Mjk5NgorMTM4RUJBOTAKKzcwRjkwQ0U2NDE2MDQ0QzJENUU3NDcwOUM3CiszODk4OUU5MzIzMTI5ODFGNjQ5NEZDNEZCQkJFNDQ1MDA4NUNBOTExOUNCQjYzQzIxRUVEQzI3MzQ2M0YzRDRENjhDRkMxQTZDMDg2REY5MzUxCitCODEzOTJCNQorNENEOEVCOEY4QTRCRDM4RTM3NzAyOUU2QzUKKzc4RjUyMzk3MDE4OTY1MzBFQjRBRTZBNTBFN0Q1RUU2N0M2OTVEQjBCQkY0Nzc2M0FEMEVDNzZERURDOEI3OTNEQTlENTdCOURCNEUyNworMTFENDAwMjMKK0Q3QkVBM0NCMzE0QkZCOTA1M0RCMkEzMUFBQTcKKzQzMkQ3RDNCREZFMzlDMkYzRUZERkE0QkNBMjJFRTc0QTM4MTVERDNDRjI0M0M5N0VEQkQ1RkI5NDc2M0M3M0EzNzI2OEQ3REEzOTJFOEMxMkZFQUIwRTRFOEYxMzBDNTg3MDY4MTZEQzZGOUM3ODZBNTk5OEExMTdCMEQ4RUVCQTk0QTEyRjdENzJGN0E1RkVCQzUyNjc0QzU1NUIzNDk5MTZERDQ0Q0YzNUQ1MDgzQkJGQjlFODkwRkEzQzI2NTE3RkNBMTg0MkY4Mzk4QjE1ODc0NUUxRkE4OTg2NzUxNzU1RjVFCisxM0IzNjEwNgorMkMwRDUxMEVBRjQ4RDBGRDdGQ0EzOUI0M0UwNworOUFBNzFGNUM5REI2OUREOTlDNzJFNEFBRjhCQThENzkxODU5ODI5OEI5NjlCMzZENjA3QzdENEE5MTg2QzI3NUY2N0Y0QjY0RjQ4N0NEMTMzNTQ0MDBDMzg5QTMwNTE1RjhFM0RDOEI3QTE5REQyQTAyODEwMTZGNTIyNjlDNUMyNDc1RkJBRjA2MUYyQzdCNTYzMTgyRTYxMzgxRDY0MTlCNEY2RkU0NTQ2ODE4RUU0RDU0QTQ3QUI3MjU4NDcyMDU0RkE2QjRFNUM3OTQzQkJCRTkzMEYzQ0Q0NjA5MzMxOEEwN0EwRjhDNTVBMUJCQTgxMTlFMDUwRUI4CiswQzQ4Cis3QQorQTVBMTAyNzkKKzVCQjJCOThDNjMzRkE5RTZFODYwMkIwRDJDCisxRTRGNzhGMDcxNDAxODI2M0QwQ0MyMkREMjFCOUQ2MkY0OTUyQUE1MEQzM0Q2NkZGNTY0QkNGQjMzRTU5NjFDOTJGNTAwM0FDQzNFNjBBNEEzOEVBRTU5NjQyRjkwMUVGQzZBOTcxQTg2MTBDOTIxOTVGQTMxRDY3RTY2RTlGRjVGNDE4RTAzMTgwOUFFMEU1RjExNDdFMzM3OUUwREY5MEEyQjIxNTQzNDQ3QzBFMzI2NjBDQjAyODYwQ0RCRUZDNgorQjA0OUY4OUUKK0ZCMDJBQzc2REY1NjY3MzJBMDc2MTI0QTU5Cis0MTBFRjUxODI4RTM3QUNDMkMyNjAzQzIxNzQyRkQyQUQyRjVGNUUwRDQxRjhDQUNDOUE1ODY0MUE3OEM5NUVCMEIzNUUyN0ZEQ0JDMEU0ODk1QkQ4QjBEODE3ODNFRTk1RDhFN0QyRTJDMDQwM0VGOTQ2OEIwNjkwRkUyM0FGMzU3NzVCMjlGQzA1RTY1N0MwMTkzNzUwRjRFODkzQUI2NjVCQ0EyNDMyNzZCQ0FCMTZDNzg2MkVEOTc2MTA3MUJDNzI2QUEKK0E4ODg0Qzg4CitBMzJCOEUxNDBERTNBRjhFRTQ4NDJEMTU4RTg4CitFRTNGNTkwOUE1RjgzODQ1NzYxQkM0QUQ5NzQ0MTQyNTE4RTEyQjY2QjI2NDQ2MEQ2QUU1NjlCREY3NTM2RjA4MEJERjg0MTYwRjU1MDA3NkUwOTE3NjZDMkUwMjg1MjIwMkM1ODFBM0FBNjQ0RUY1MTI0NDgyQ0FGRjA2NjZFOUY4NzQ2QTI0MjQwMTUxREQ3MEREMDVDMjIyRjREM0U4NzVCMEFFQjExM0JDRjQwQzVFQzA1Rjk2MTA4MUI2OTNBMUE2QkE4NEYxM0EzODI1Q0I3MUExNzE2MjBBODMyMUNGNzZDQzk0NEIxRTA1MkZCRUVGQzhEN0I0NjIKK0RCRkNDNzI1CiszMUJDQzZDRUZGMjJENDhGQ0MzRTNENjkyMQorMkU0OURGMDUwM0E5NzI5OTUyRjVEQjcwMjg2QUIxOTdENTVGMTEyMEU0N0U5RENFM0EyNzgzMEMyOTRBNkEwMTc2N0ZBNUM5MTg4NzJBRDMyRDQ0QTIzRUQxODMzQzlGMkU1NDlBOTcxMEY1ODlBMUMxQjc0OAorMjQyRURCQzAKKzk0QTQ4QjlCMUY3NEJDRTk2NkUyNUE4QUEzCitGMTE1MDI2QTc1NDU4QzYzN0Y5REQxNTNEOUU0NTlDMDJENzQwRUZENEQzQzc3QUIzRUFBNDJCRThFOTAwQjE2QzRFMzU0NTQwOUJGRDI4MDMyMjUwRjc1NTA3N0NCMDNENDZCMzY0QUFGMjNFQzgxQzE5RkI5MDczQUM1RTVCODdFNkVERjM4MEJBNDQ2CisxRjQwMkVFMAorMTFDOTM4OTUzN0VEQzJFNUFCRjNGQUJEREI2QworNTBERjI0ODUwQ0ZCOUVDQzc3Mzc5RTA1MDY2QTBDNDg1N0QwNDExMURDODFERDE5MjJBOUM4MEZEQTkwODIwNzkzNTk2QjlDODkzNTAzOEQyRDZBMkJEMzNDM0ZFRDE1OEI4RDExMkI5QUI0RjQ0NTU0OTQxRjhFMTUxNDczNkY1MzY1OEM2NTQ3NEFCQTgyQTM0NDMzODc2NzYwM0I0NTkzMTMzRTJEMEJBQkI3M0MyN0EyQUM1RjkzRDczM0ZCMEUwMDJBMzQ5Njg3NDRBNTZFQTQ1N0I5RTZGOUE5Cis5MzEyODU2NgorQ0RBNTkxRUNCREQzMzNDMURCNEI2MUJEMjAKKzAyM0ZGMDZBQ0I0QjRGMjQyOTJEMzg3QjE0RTg3MjBGMjA2Rjg5RTkwRTQwRDRBQzU3NEJFODBBQ0E5MjU2NzI1QzM2MDk4OTlGMjdCM0FCMzg4NjUyOUM5NDAwQ0MyN0Y5ODI0NjQ4NEMyQUQxN0UxQTRGRUJEREY4MjlGNDRFNjA4RUY0NjE4MjhEMDU1QTFDQjRBRDJFMjgzN0MzMzA0QzA5QkVFMzYyNDU1MTQwQThDNUQyRDQKKzhBODRGQzg1CiswMzY5OUY1M0QyNEY4OEJENjlDRUIzM0U1OAorQTY2OUU3MDRBMzUzQTMyMTBGQkI4OTgzQTkyRDQ1M0VFMUNCREFGMjdCREVFNjZBQ0UyOTNBQzk4QkVCQTBEODAzQTUwNDgwN0I2REQ1MUYwODgyQTQyRjVDNzkxMTBDOUFBQkM0MTExNUZBRDcxNzU3NjE3NjQ3RDdGREVDQTY5OUYwNjMxQTE0NDVGOTRBNDcwRDJENzc1RUUwRjNCMzc2Q0RGMAorODIyREQyM0MKKzQyRTBDRjJFMENDMzRDQ0FFNEUyQTU0NjgyNDkKK0VCQ0M3ODI3NDQyMUI0ODM0NzhCNkE5RDY0RDNGMDE1ODk2RTdDMTY4M0Y0MTA4QThDMjRDRENGMDJGMDlFMzVBREI0MDlERkQ4NjFCQ0NENjNDREQzNUE1QUE3MDI1NzYxQUQwQjI0NTAxQTIzMEQ4MjlCQUZGQkM3Q0JEQTdENzg1MkQ5QjVDQUJGRDA1MTcwNUQ3MkM1MkNGNzdGOUM5OUMzQTQ0NUZBNkM4NDY3MzVGQkRENTJBODE0MDQwMzM2MEVDQ0Q5QjdBRTI2NTMyQjQ0CiszMDE2QThBRQorRkE1OEY4MTU4REE5NEU4Q0RBRUVFM0ZCRTAyOAorRDUxNEM4N0FEMzVEMDczNjg4NDg0MTk1MjhBNUUwMENFRTBCMjgzMkMxNTA2QUQ0RTBCQ0U5NDY1OTIwODRFNUQ3QzdBODYyRDVFRTQxNTNDQUY2NEE4MUEyOUI0NjlEQzg3MDFCRjU3MDZDOURCQTE3ODM3MzFGOERFRDFGNzg3NTdFQTFCNDI0NjcwNzQ1QkY2MDA1NTQyMTJBNEU4OTIzRjFFRjFCNTY1QTdERjIzMzQ4MkI3Q0REQ0RBNTRGOEI2MkZBQ0MyOTM1NDQyRkQ5ODE3MjlDQzI1ODNFQzhCNDNGRUNBQkM1Mzc4RTc4QTQxMDY4MTkyMDA3CisxMzk0CisxNTcwM0UKK0U5MDA2MzUyCis3OTAzOTk0QkJBNkVEOEU1QzQ3RkFCRDU5NQorOUVCNTM5RUFGNzdFODUyNEZDMDlEMTNFMjY0RkI4NEM3OTU2MDgzQkQyNkMxNzIxNTIwMzY4QzVGMjIzRTREOERCOTI2NUFDMjUzRTY2NEE4RDE5NDZFQjk2MTQxREMxMDFEMTE4REM2MUUyQTE5QjY5OTQ1QURBNTlFQTFFNDBDQTExNEMxODQ2RjY4MDE5MDE0NkFCMzBCQjcxNTg5RDgyCisxNkQxMUNGRAorNDhFMUI0RkY2OEEzNTg1REI2QTYxOUVBOTM2RAorMEI2MjM5RjdCNzBDNTRDOEI3NjgyNzE1RTM2MkVDMzRBODM5NjhCNTFBQkVBMEZDQTQ3M0I2OTJCQjBGNzEzQzkwQjY5MjJEQ0FDNDhFQTJFQ0Y0ODlBQzYxMDc4MDVBNkNGRjQwREVCQzkyOTk4NzQ4QUI3QTAwMTEzMEMyNkVFNzA0QTNFREREQzdDRTQ3NTdBNzJCNjJCMjM0OTFEMkNBNUJCRUVENEQ3MUI1QTBBMjRBOTY5REU5QjBEQTlBMDBFOTVBMUIzODFGNzMwNzg2RENDQjY2Q0M4RUE1NzgyNkE5MjkKKzgzRjkzNjk3Cis5QTAyQThCQTVBRTdEODhDQUQ1NTlCQUMwNgorRkUzOEUzRDM3RTA0Mjg1NDQ4NUQ0MzkxNkMzMTYwRkNEMDNEM0NCMzM3QkVBNTdDQzFFQ0U5NTkxQzc4NTQ4REY1QTY2Rjc5NTRGNjAzNEY0RDc5Cis5N0IzQkY3RAorMzg0NEI5RjdCMUFBQUUwMzU3RDMzNzExNTMKKzY5QjVDRkQyQzI0NUM2MjlDRTJBNjNDQUZFQ0Q1MUZFRDRDMTRFRDNGRTcxRDc2NkRFQUNCMDZGQjcxOTc1REYwREY3MjA4QkY0Rjc4MURENjk1QUFFRjAKKzkzMDA1OUEzCiswQzYxQkFEOTNCMjIzQ0RGQkNEOTU1QzJGMworMzRBQzc5QzYzREE4NDMzRjhEMjlFRjI5NEUyQTg2RTNEREYzOTk4ODJCNzgKK0YwNDgxRTQ3Cis2MEY2NkFGRUVCNEFERDU5OTMzMjc2NDJFRUFFCis1NDM3MjU1ODQzMUQzOTk3REQzMjA2MDhBMUMxNjhBQUNERkVCNzUxODFENkQxMTEyNzUxMDQzMTgzOTQ4QTIxN0JCRTQwQzk4QjQ5QkM5RTdFOTRERTIxRTBBQkMxRDc0NTI5MzM4MUUyODAyNUY0MkQwNDBFNzZDOTFGQjhFNUZFNUNGQjgyNzA4QTU5RkVBQjBGQkNCNzZGQjM4NzgyQ0M4REEwN0I2OTUyQ0I3ODYwMzIwNjQ1NkU2Q0UzQjJGNTVBRUY5MTNBMTI0OTdCNENGOUVDQURBMzY1QkIxNjVDQTY1RkJDRTdFMjM2N0M1RTg5NjY5Qzg2RDIKKzQ5RTIKK0FFQzA2OQorMkRGRkVBNkYKKzNDRjE5RDMwREI1QTZDQkNGNDFDNDU4MTZCCis5QUMxMTQ2QjlCMDY2MENCNjg5QzVBN0RFOUNCRDFDNUZGOERGOEI1RkYwMDY0MTMxODJCRjkxRTU2MUI5MTBEOUY2MThCNjE1OTM5QzJENkFEMDJEOEVFNjlDNzM0RDYyQTMzRkU5NjdEQ0UwQTM1RkYzODdDMUVDRDM2RERCMjNBMzNDREIwMzBDQzMwNzE1Q0U4NjM3OTE5NTc2MkYyNEU2MEI3NDA3MUQ3M0ZENworRDcxRjJBOTcKKzk4Q0Y5M0FGODNCQTQxNURGNDQ5MTU3ODUwCitDMDdBQkFCMzI4RTY2REI3NTAxQTVGNEQyODgwQjg2M0RGREJEQ0IxMjgyRUFCNjlFNTcxRkZEMkZEMTZGOTZCNkZFRDM1MjI2QUMwNzBCOTQ1NDA5N0QwMzdEQTczNTY2MTExOUVFMjdCQTVERDFGRTAzNTY0OTNFQUVDRDZDOENBRjQwODg1ODE0MkVDMUI0RTg1M0Y3NkU4OUIxRDQ1MUIyNQorQjc1Q0IxMTEKKzExRDg0NTAwRTRBNDIxM0YxRkIwQjg4QzE4OEQKKzQ2MjgyMDM2NTYxQjRFMUNFMEJBQzNDNTVFRkRCNDMwMUIzQkZDOTRFQTVFN0M3NTM4RTJFMzFEQ0U2NzMwMTQzN0JFOThBQkE2OUM2QUZERjUwODZFMUNEOUQwODBCNEIzNEYwOUQ0MUQ3OTRCN0Y5NENFODNDNEM5OUIwN0U5NTgyRDg3NTVFOThCMzMzRENBQURBMTBCM0NERkQzQTI1QjA0RTdFRDRFMzAzRkZFQzI0NjIyRUEzMDMwQzJGOUY5RkRBM0Y3QTg3M0NFMTQ0ODE1REJDM0ZCN0MKKzQzNDNBQTFBCitCN0QxOTVFMzk3NDc1QTA1MkJERUU0MTg2OQorMjY1OTJFMDk2ODg1MDRENzA4NjZGRkM3ODE5NDM0NDNGRTFCRkU1ODExMTAxRkUxRkMxOEVEN0ZCOTk0OTVENzVERTI0MzU1NEIyNEI4NTkzREJBM0ZCQUNDQkYwOUZFRjhBNEUzMDI1MTUwNUNDQUVEMDQyQzU1MjZCQTZFRjgyMjQzNjUwREQ0NTRCRUM0RUNFRDM5N0JBQTRGRDg3RkNENTcwNjhGOUE1QzRCOTlCRQorRkFDOEQyRTMKKzkyREY3MjFDRTcwNTNBNTU5MEMzNjM2Q0MyCis4RTgxMjE3NUFGMkRDOTFFOTA1NEZFRkZFMkJGQUQ1RDRCQ0Y5NzIwQzVGRTBCOUVEM0U3OTFBQTcwQUYwMjk2QjU4N0UwODI5MUUxMjNENjNBQTI2MUZFQkM0ODg3OTIyRTdGQkI5ODNDQjU2RUQ3ODg4MDMxQUYzRTk3QzdBRjZGNDQwMENCNTlBMTE4NzBDRTJCQ0E5REFBQUYwODEwNkY4NUJFQTMyMUE1NDM0MDNDQkM2NTg1CitBRjI4MkU1NQorQ0JDNUU3QzgyRUI1NDE1NThGRUM4QzQ3MDJGOAorOUY2NjBBRDMxRUZFOTk3QkVDNUVBN0I3MkRBODY4ODJDRjlDRDQ1NDU2M0Y1M0ZBRkNBODAxN0ZEQjJCRDVEMzcwNDEwNDFGM0E4MzQ1NkFEMzIwMzlEQTk1NzczQTQ4MkVFNjA5QzQ1Mzc3NjUxNDk3MjA0RTRFQTdFRkNBNTJEQjFGRTUyNEU3MEY5NzEwQ0E3QzRCODIxMDBBM0RGRjZDOTlCQUMwRkI1Rjg0Mjc2NUJDRDAzRTg1QkQ3RTZEQkM2MUQ0QUZFQUMxMTcyMzUxMzVCRTU5ODVEOUYyN0QxQ0ZENDc2QzVGQUY2NDg1MTg4Q0NBNTFFMDA0Cis4QjRGCisxMzhEQjUwQzYzQ0NDOEFEQ0YzNjJFMTA0ODBBRDI3NkVCNUYxRTZEMDQ2Q0NBMzQxQTdBOEVERkFCOTY2OEYxMjA1OTBCRDc1M0M5RTRGNjA4OEQwMzc2Rjk2QTUyCitEQ0Q2NzM1NQorRkM0MjU1RDJCRURFNzVBRjk0MkQ3NEI0NzMwOQorNDc2Mzc3MDE0NEZEQjI5QTBCRDU1QUQ2MjJCMjdENTlFOUUyQ0VCRUFBMjhCMzk3QkExNzJBMjk0RTE5QzJCNTM3RDJCM0M3RDJBMkJGOTc3OTAzRUE1QTU5MzVGMzkzNjFDMjZCQUZGQzkyRTc4QkRCMDhCQjk5MzhEQ0UxNTIxQThFODg1Q0YwODA0RjA3OUVFQTRDRDcwNDUyRUVGQzUxMTZERDVBMkFGNjQ2QTA2QjMxRDg0OTcwODk3QUZGMkQyODNDNTgzQkY1MjVCMTU1MEY2RkU0RjYKKzJCNTc1QjE1Cis3Mzg0OEFCRDJFOERGMzBDRUFBNTQyNEQyNAorM0FBOEJDN0UyODlEMDk3OTQ1NTY4NTFFMkRCODA0QjU3QzVFRTEyRkQyNUU4MUNGNUM3QjUyN0YxRUU3MkVBNjlBRDI0RUQwRjU1NjlGMUVGNzlFNTFDQjQ2RjI5RTJFRDZBNUUyQjQ4MkFENzRCQzE1OTk1OTlBQ0ZDNEJFQUM0OUNEQjk1RUU4MjlBRjA3RkMyQTZDNEZGNjhGQTQyOAorRDREOUVDRDcKK0NDNkNGRkJEMThEMDk3QjA4NDBGNERBNDA1CiszNTQ5QTkzMDAxRjI1NTgyM0Y5QkNFQ0Y3ODFBQjlBRDJGOEVCQjYyQTQ4NkI3QzBBMzdDQUZFQURENThGOEU0QzY1NjVFMEMzMUUxRjVCREFGQzc5NEMzOEQ2RTg5QzkyNTNBNjJFMjhBMUVBODI5QzY3RjUzNzRBNjI3Q0ZBREJDOEQ2RjExNEUyQzNFMTk2Mjg1NUM4MjE3NkU3RTA3MDU1MDM5QjZBNDA0MzkzNTFENEUwMDhBQUY5RUQwODlGRjk1MTgKKzY5RDg0MDRCCitBNDNFRDhCODcwREQ0RkRGRDgxMDU4MTI4N0NBCis1MkM5MUM5NUVERDQ2OUZBQjlDQTI1NUMyODM4NTlDQ0YxQjU4NTVGMzU2RDVGQTRFRkYwMEVDMzg0QjdDNzkwRjc2MUU1MURDMzVBNTI1NDQzMDIzMzdGQTgzQUJCRjZFRDQ5QTg3QTRCNjU1QzY0NEIyODdBOEZFODNFNTg2RUMwMUQwRDQ0M0ZFOUVCOUI5QzYzMzQ2NTgwQTA2M0I2Q0NCMzdFMDQ0MzM4QzA1NERENDM1NUJCNTkyOEZCNjhFQ0QwMUJBMUM4RUM5QzQxRUY4NjY3Qjg1MUNCREIyNzVDMDE5REJFNzE2MEVERUZFMzNGMkRBNzdGNDYKKzMxMzIKKzRCQzBGMzVCQTY3MEYxODlDMjBCMDQ3Q0FDQTIxMURCNTlFRjRBNzgxNUZERUI1MzA3MkJCN0M1OURDMEJGNjYwMzk4MUEKKzg1MDcwRUMzCiszQThDMjdGNjBFNTMzRjMwNDhGNjRBMENBMQorQzQ2MzEwRjRGRkM2RDE2QzQzNTU0NUZGNTdERENDRUFFOEE4QkM0OTNDRUE1OUFEOEQyOUE4OUU4NTYxMTBBQTQ3REQ1MjE5RUU0N0NEODk1MkVDQzc1NkY3M0IyNDZEQkZERDYwNUVFQjc3CiszRDc1NENGNworQ0FBMDUzOTc5QkU5QjI4MzE3MkFFNDg2MEMzNgorMUI0MzE1MDdDRjIxN0UzN0JEOThBNzc0RUJCNUM0NEYxRTc1QzdGNTVDNjY3NTc4MTEyRUMwQzkyNzA1NEVFNjRDRkUxMjFGOUVDQzUwMTBERUVEMEM5OTExNjkyRjMxOTdCMDQxNkU4QUU3MjY3N0I0M0E2MTg1M0UzNkQwNkE5RjQ3MTNFQUM1RDRBODJBMjNBNUE2RjREOEJCNDFEMkQ4MjhENzhENjNEM0VCQzlGNzdCMUQyQUZCMTFFM0ExNzI5RTA4MUJGNEE0RjQyNTk4MTU3OERBOTAxMUZCQ0VEOEM2M0MzRUU0NjY5MTM3REVGMkUyN0NBNDBGCitFRjY0CiswMTY2RTA3MkMwOTIxNUMzOTk4MjY5NTRDQTY0NDZGODdDREQ5NjgxNTE3QzdBMzhGRjhDQTkyM0Y4QjUxMworNzNFOUZGNzAKKzRCRjM0OEJFODdFRkEyMkU5NjRBNDQwQ0Y5NTIKKzNEM0JGMjNGQzA2MTM3QUNBRTA5NkVCMzU2NkM1Nzg2QkQxOThFRjg2REJCMDlBMjM0NTlBMzM1RDM5OEI1QkRENEIwQkIzQkQzOTJCRkU2REY2M0YxRTVBRTA3QzFBQUE1OENBNzRBNzE2MzlFMkU2MThDMEQwNDI3NERFMDUyMUIwRDExMDNEMDE5MTI4RjlGNTUyM0ZDQzZDOTdENkIxMDFFQTQzQjJCM0E1REYwQUQxMjY3NUE5MDczRTZEMDk3RDIzOTdCN0VDMTZFMEFCNkNBOEE1NAorMjZFMzczNjAKK0IxMDg2MTVERTRBRURDODIzQUFDNjJEMjA1CisxQ0NDQzBBMzI5MTRBRTA0OUFCQTk1RTcyNjEwRjM4OTQxRUVEODQ3RjlBMzgwMTkzNTlCMUYzRUI5RjI0MDc0NzY1NjMzRUVFMDRCNEVGM0Q0NUVFQjY0NDBCRjhBQzIxOUZDMDk0QUEwNTRBMjYyQzMxMTNGNzBCNzBEQUM2QjNBNTZGQzdGMEQ4RQorQUYyQTI4NzgKKzkxQUNENDdCRUI5OTYyQzFDNkQ2RUQ1MzVBOEUKKzEzMEI0NkQzNTcyN0JFQ0I5NEVDRThBMDgwNEZDMTA1OEMwQzg1MUZDMTNDMjBEMjgzMjRGNzg0NzBEODJFRUJCNDUzQjA4NTFDQTIzMjY3RjE1MEEwQjUwREEzNkJCOUU2MTM4M0EyOEY2NEIzQ0QwNjhFMUI4MjVCQTZBRTg5NjlENjg1MDRERjRDMEM3NDM4RDk0Mjg4NzREQjFENTFEQjJGRjkxOTAyRkVBMERDRDc1QThGNEY2OEZEQzMxRDk1QjQ0M0U4NUNENUQyNEEyN0FBQ0Y0RUU5RkJBQ0M1RkI1MDJCRjg4NjYzQUUKKzg2QzA1Q0I4Cis0ODdBQkZGQjk3NEYyQURGMjA1OEM3NTAxMQorMEEwMzIwOEEyQkU3NTRBQjA2ODk2MUJBNTk2NENBNzkyREE0NEEyOTcxNzY3NkM0RUM1ODM4OTI5QzQzRjY2QUM5QjE4MUZBMDEyRERBQzZDRDUxNUFBQUFEMkNDMTJEM0M2NDMzNzA3Q0MwRTM3MTVFQ0YyQzQyM0U2NURDOENFQkE5OUM1MDg5NjNGRkQ4REE4OTZBMUY0REI3MDNGRDgwMjIyM0MxMzRFOEJCCis3RTQxQ0VCQQorQzlEQjA2RDFGNDczQzA1QUFDNzdBMTc3RTRDOQorNjI5Nzc2Nzg4OEY4RjNBQzZDNUFCQTAyOTg0RjYwNjk1Rjc4OTUyMjE4M0M4QjU3RTJEMzc1NzA2OUU3Q0RDQTU4RENDMUU3MzNDQzZFMDVERkQxQzA2RTE1Qjg0NjA3RjQ1MjU0MTgyMEMyMTU1MEVBNDg3QkU3RDQ3MEM4Q0Y3RUI3OENDNkYyNzI0MDkzODYxMzZCRjJGNkM0M0Q0N0YzMzhERTBENEU4OTE4OTM5MTY1NjNGQjVGRjk3NzY2QkE0MzU1Qjg2RDBGRjJGRDZEQTFEQ0Y1QkUxOEY4QjM2Qjk2OTVFQTRGOTAyRTM3OEY0NTE5RDQKKzNFMDU4NEEzCis5RUU3M0RFMDhFNzdCQzFBNTk4RkQ4RDlENQorQjc0NzhBOUFCMkU0RkQ3MUI3QkQzNTcyQ0MwNzFBQTc4N0RGQzlDMjBCMTQxQTM3QjRDRDc4N0VEQjZBMTM5RjlGMzg4QjlEMTk2Mzg1RjQ2NjNDRkJEMDQ2QjBCRjgzRDc2MjAzMUIwNzU4OEFBRTU5OEJBRTc2RDYzMUM1NDkwNDRBOUQzRjA1CiswNTQ4OTZCOQorNDg3QjIwQjkxN0I3QUY3MjE5QjIyOEI2OUYKK0JDQjBFNUREM0EyRDFFREZENkJCQ0E4RDc0MUQ1QUM0MDhCOTUwNjUwRTJDM0Y5NkI5NEE1QkUxMjBFNzA4MEY3NTI0ODA2NzA4OUE0QzUzQzY1MDBGNkRBOThDQUZERUUxREYwQTZFMzQ5MzhGQjRDM0I3NzBFOTE2OThBNkVENDE4M0UwMjNFMDI1OTBCMTAxQTZFODc3RkMwNUM4ODM2ODg4MUU5NkFDRTBGRDdCNTVGQjVBMUQ4MEVEQjNFQUM5NEYKKzU3OTBBNEIzCis3OTIxQjQ1Mjg1N0ZFRUFBNzgyQTdCNzQ4QgorQUQ0QzdBQzVBMERCRTIzMTUxNENBQzI4NTkwNjU2NTcyMEZGNkMzMzA3RThBOUM4MkZCMjhCNDlCN0JDMEJEMTg2QzU1QzQxNUU2NkRENkIyMEI4NTA5RkJCM0VEQzY2NTA1RUZENEQ5QjY0MjE0QkJCNkZCMDE2Nzg5Qzg0MERGQkQ5NEZGQzJDQUY0Q0U4QkMwODI2MkZFQjk5QTQwMjU2MjRCQzYxNTA2NDdDQTE1MQorQTJDOUFCNUMKK0VGREYwRjQwMDRBQjBFOTAxQzE5NUNGODVBMTgKK0M0N0NDMTZERDg5QkEzMDBGQUE3NzZDNDgzQzAxQkU5QjY0NUQ3MEUwMzVGMjQzMDMyQjk1OEEzMEFFODZEMUM1RkIxMDg4RTgwNTI5RkIxQUQ1ODI0MzIyQjI0REUxOTU3QTdCQTg5NTlBODQ1MkJGNjI1MTdFOTM1OUM4MzZEOUFGMTUzRjMyQjMzN0RGMjNDRTE2N0U0OTIzQzE4NTBENEY1NDAyQjM3RDhFNzZDMEYyNzY5RDI5NzM2M0NCQkI3MDc3Qzc1NjBCNTM0REI5MDZGMjZGNzc1ODRCQjlDOTI5NEE4NDEzQjhBMUU3QjhERTk5MUREMTdFQgorNEUyMAorRUJGQzNFQ0Y3NDIwMDM1MTk1MTUwRUU2MUE4MAorQTlDQ0MzMTIKKzc3OTM0MzhBNTM5ODM0QzcxMUJERjU1QjA3NkUKKzE1NzcyN0JCRjM4RkRFMEU4QjYzM0Q4NjhGODMxQjdCRDM4RDBGOThEQTQ0RTRFMERFQUE1N0RGRkFBQTgwRUJGREJGOTdDODE1RTBDMEUzMkNCQjY4OEExNDQ1RjU4RTY3MDNCMUI5QkVFNzIyMjY4NUM4MkNFQTE2QzUzNzZDQ0U1NjdGRjEyM0U0QTVGQzI1RDMwQzUwNkUxQTc3QjBDN0ZBRDQ3OTBGN0I1NjZGOThEMkZDQUI3MUJEN0QyREQ4MDQ4QUM2MkJGMjAxQjlGMDk3M0UzOTY0NTRFODhGQUMwNTczNjA0ODkwNDg3QzRDOEFCREFERjQzRgorRjRFQgorMzhFMDU5Njg2MzY1MDdEOEU2REY2NDY4NURDNEM5OEYxQTJGRDgxRTIwQzBDNEFFQzQKK0UwMEZGQkZCCis1MUU0Rjg5OEIyNkZCNzNDNkE5MTdERjgyMzIzCisyMkIwOUIyM0ZFRkIzNTk0OUM5MzBGRjUyRDZEMUExMkVDMjJFM0ZGRTc0QzFENkIyRTM3OEMzNkM2OTM1QjFCMjI5NzNGREM3QzU2OEZEREVDRkU0MzI3MDJBMTIzMTY2Q0RDMDBERjREMTQ1MDFFNDFBMUVENzNFMEI1OUFFQjA3NDkwMDY5RUY0MENDMENGQTlDMjQ2RTM3QjM5OTA3QkVCMEZDNkRCRjVDOEE1RTIzMEQyNzJDRERCQ0QwNkQyRTJDQkY0QkNERDM4RThCNzIxRkRBMjgwOTQ3NEExQUM3NTc1QzFGODhCMjVERDhEREQ5RDRGREVDNTUKKzFCNUIKKzMyQUI3OTE2CitENDVFQUVGOEE0MEU5RkYzRjFCRjBBMzAxRQorQzlGN0EwN0Q3NjQzQ0ZEQTQwMTdDQ0Y5N0NDQUY0NzlFQTNBQUIyNzNCMTg1QTIwQ0YwOUM1NEEzMzg5MDE3Q0JEMDQyQ0I0QzVENjA5NTU1RkQ3MDQ0RTVGMEQ0OENDNDdDNDMxNjg0ODc1MkFBQzMyOTUwQUJCRTZCOEY1CisxMzA5QzY0RgorNDBCRjcxQjNDNTYwMkRFN0Q1RDgzMzBEOTYKK0NEOEY2ODdFNzU4Qjg0QjBCMTlCNEU5QkE3ODIxOURGQjEyQUNCRjE3OEIyNDIKKzE0NjBEODZECisyQjAzMUYxQUNCNjdDMTAyRTk1RjhCMjhCRTE2CisyNzE3Q0I2MkFCRDRDMzA5RkMyOTI2REU3QTMyRjc2RTQ3QUEzQzU0NTZFMTZBNzcyNzdFMzQ3MDZFRTlFNjdDNjc2NjBGRDQ4NjZFMTU0QjRERkQ1QzREMTgwQ0QxQjM2MEI0MTcxQ0I0RTJDN0M0MEZEOTk1MjQwMkZGMDU2NTRDMkZGNERBOEQzQzYwNzNEMzdBMzRDNUFGMkNENUE4Nzc2ODE3OURFNDdBQTJGQzkzRkJGNzc4RjM2Rjc2MEE3NjZDRjU1Q0EwQTdCQzkzMjQKK0EwQjU3QTg1CisyRDFBMjY0QzY0MDZGRTFBNzhBQ0I5ODk0MQorNkU2QUE5RkFCQTVEQzFCRkZCQkE4NDNENzlGMUU4OTQxRDNGRkJCQTQzNEQKK0ZFOTgyOTVECisyQzQ4NkVBQTI1NTBCMjEwMTFCMTk1N0Y2MkE2Cis1MzAxOEU5ODIwNUU2MDkyCiswMkZCMEJGMAorMTZCQjU5NjE2MjcyNzkzOTNCRDYyMjJCMjMyMTg1RjA0ODAwMTdCRDY3MTA2REZCQzZENjM1MDBGQzk4NUY4N0I1MEUKKzM2ODcwNTJEQTQyOEQyMzU3OEZFODEwMEMzRjIxNkVGMUE1NEY4RTU5RkVERjQyNDA5NkFBOEZFRERCNEEyRUMwNTJDQ0YwN0I2NjMKKzUzODg5NUREOEU4NjMzM0I2NkIyMUNERUFFOTI3MzEwREY5MDUyQ0VGMjgzNzIwQkM1Q0Y3QQorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoYgorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGIKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hiIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NSBwdXQKK2R1cCAzIC9DMDA0NiBwdXQKK2R1cCA0IC9DMDA0NyBwdXQKK2R1cCA1IC9DMDA1MiBwdXQKK2R1cCA2IC9DMDA2NyBwdXQKK2R1cCA3IC9DMDA3MiBwdXQKK2R1cCA4IC9DMDA3OCBwdXQKK2R1cCA5IC9DMDA4MCBwdXQKK2R1cCAxMCAvQzAwODMgcHV0CitkdXAgMTEgL0MwMDg0IHB1dAorZHVwIDEyIC9DMDA4NSBwdXQKK2R1cCAxMyAvQzAwOTcgcHV0CitkdXAgMTQgL0MwMDk4IHB1dAorZHVwIDE1IC9DMDA5OSBwdXQKK2R1cCAxNiAvQzAxMDAgcHV0CitkdXAgMTcgL0MwMTAxIHB1dAorZHVwIDE4IC9DMDEwMiBwdXQKK2R1cCAxOSAvQzAxMDMgcHV0CitkdXAgMjAgL0MwMTA1IHB1dAorZHVwIDIxIC9DMDEwNyBwdXQKK2R1cCAyMiAvQzAxMDggcHV0CitkdXAgMjMgL0MwMTA5IHB1dAorZHVwIDI0IC9DMDExMCBwdXQKK2R1cCAyNSAvQzAxMTEgcHV0CitkdXAgMjYgL0MwMTEyIHB1dAorZHVwIDI3IC9DMDExNCBwdXQKK2R1cCAyOCAvQzAxMTUgcHV0CitkdXAgMjkgL0MwMTE2IHB1dAorZHVwIDMwIC9DMDExNyBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwOSA3OTggNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0Mjc0QzI2NEU1RjQ1RjAyODZCRDFCMjNEMjZDMzQ2MjZFMDdBCis1QjAzOURCMzZDMTgwMDVFRTMyQ0ZBNjQKKzkwNkIyODVDQjhCRDdGMDk2OAorRDQ3RjUyNDIKKzIyREEyOUJCNjNFQTI5QUMxMjkzRDlGMzY1CitGREQwOTI2ODZDRjBENzM5REFFN0I0RUJFQ0RGRTIxQjhCNTgxMEIxNUIzNUQ3Cis4QjFCREI2NgorMDJCNkVEODg2QTc4M0M5RjJFMjk1OURBQ0EKKzlGOEM2ODdDQUM1MEY5OEREM0Q5OUM5MUEzODE2ODk0RjVBMjIzMTgxNDA1NkYyODA1RTQ1MUY2NkI1OTIzCis3OUI0MzREQgorRjcwNjM4QjlGMjA0NEYzQUJFQTExMjM1MjgKKzE0RkI2RkFCRTM3MEY2NDk0QTU0QkQxNzQwRTk2RDg2OThERjM2REQ4MzEzQjA1QjU1NkUKK0UwNDMyNDM2CitEQzAwNjE4RkRDNEU4NkM4RTU4NUU1NDc2RgorQTQ1MUJCRDk3RDBEMzZBNjI5NTAyNDZGNTZFQjA2RjczMjM2MDRFRTkzRDQ1QkY2M0NEMzY4NjM2NUU5RDE2RkZENkRDMEEyNDc5Qzg3NjQzOEVDMkRGNkY4MjZBQzVENkY5NTJCRjJEMDg5MjUyRkQ5MTQKK0U4MTdFNEE2Cis2MTFBMUVGQTgzMjFCQjlFNkZDMjE0NTA1QkU5Cis0NzA2MzIyRjYxNkY2OTk4Qjk5QTA5Q0U3OUY1RTg5ODYxQzFCRjhCM0JBRkZEMDdCMzdCQjEwRTdGOTAxMEQ4OEQ4MzExNTYzQTc1NTlCREFBQTQ3MjI3QkZGRDYxNzExMjEzNDIzRUI0QUZGNTcwNkIxNTJENDQwNThDNkFFRjhFMDdCMUI1NDY5RTczRTVDQkRCQTA4OUYxRUNEMUVGOTQwQ0M0RkY1RjM2RTFBMDVEQzJDMkI1MUQ3MDAzMEQ1M0IxNjJBQkEzNzhBNTA2CitDMjQyRThBQgorM0E1RDQyNTk1RUY2M0MxNzgzNkQzRkE5MkJENAorM0NGRkY2RDAwNzYyODE4QjhBNThENDA1QTBDQTg5RjMwMTA3QjU4NTg5MzczMjM2MDA1RUVBOTlGRjYxRjhCMzMzREE3M0I0OTM4MTIzMjhCN0FBNDkxQTIwMUQ0NDQ0NDAwQTRFQzQwRDIxRkQ4NEJCQjk5OEJEMDcwRjQyNDY5NzA5RUU3OTk2M0QxMzIwN0JCRTExNzBEMzFDRTc1MjU4NTZDQzM1NjcwNzk0NEM2QkU2RjVGRUQ4NzU3RjM3OTJEMzAwQ0VEM0RCOTJENjRFQTBDNDBCOEY5Q0IxRjc1RTJDN0U3OTFBRTMxNworMzhGMzc3NzcKKzQ1QjcyQTJBNDg1QjY2QThCNzY1N0U3QjI5CisxRTgwM0QxNDgzMDE5MDk5NUI3NTEwMUE3MjIyNDI0MkU0MkMxQkU3NEJERTg2QzM5NzU1RUJDMkQyN0QxOERBQUZCMzFENjQyRUFBMTYxNUNCNEFBN0ZDMUNDMzJBNzNEQUY5MDk2QThFOThBOEY5M0NBQ0IyOEUxQTE3NEE5QzVBNUFGNDBDQzIzRjlGNjkxQkQ2NjJGNTM5MEZEMUU2OEVDNTYwNTgwMzU4QzNDQzA1M0FENThFREMxNUYyCis0Mjc4NDlCQgorMDlEQTEyMzNDNjgyMDIxNTFBN0RFODFDRjg4RQorRjFCNEFCRjEzQUNBNDRDNEExM0FENTJCNURCQTFFMzdBRTMyMThENERGMjcyRDMwNjFERDNCMjYyQjA2Q0M1MTE2RTVDRjdEMTE0OUVEMDgyQ0QzOTBEOUIzQkM1M0U1QjY3MTk5NUE3QkI1NkI2RUQyNTBBRDNDOUMyNkZFRkZGRkJGRDlCNkZFNkU5Q0U4RUI4NzYxNTM2NUNBNDYxQTA2M0I3MzM2NUM5OUJCMUZBRTc3RTk2ODczNEZFQTQwRjk4M0E5NDgKKzE5MkNFRjdBCiswMkIxRERFQkJFMEI1NzFFMkU5NEQzOUVGNDM2CitDQkEzMEY4RTcxODc2N0Y5NkYxMEI5NzQ0MzdBRjgxOTBDQkI3MzBCQzg2Q0UyRjM0RTg1QkQ2NDZEQTczQzA0NTRGMjQ3NjhDMEUwMDAwNzA2MjFENkVCQ0JEM0MzODUzQjQ2NUFCQjc3MjVBMjg2QTMxRjQzQjRFNzNBMEUxMDE5OThEREY0RTgzMzZENTY3NDVBMDRFODU1Mjg0OEY0ODkxMENDNzE5MDMxMzgzQzJENDYyNUEyNTVBOEZBNDhEMjlEMUIyOEVFM0M4QzlBM0NBN0REODJCRDk0RDhFNUFGMTlBNDBENDFGODJDNUU3NkYzODBDOTczMjcKK0ExNDIKKzNBMDU4NjI0Cis1RkNFMzdCN0I3NThBOEExNTU0MTMyMEYxQgorQzYxNUU0MkE4MDlEQjUzRDVGMzNEMjI4OTAyNTYxM0UzRkUzMEUzNkQwQzBBNkREQTNGNjdCMUU4QjVGOUFDRDYwMDE1N0QxNkY2NEY0MjNCNDJBNDEyREMyNTNEQjhENjMyQTY0MzVFOTFCQkQxNkMwNDREM0Y1OEYyQ0VBNEQ1RDI0QkFDN0FFNTEwRjIxNzEKKzRGNkREOEIxCisxODI1QjkwODg0MkVDMjcxMUQ5NTIwMUZERTJECisyRTFFQTczNDM0RUNBRURFQjYzRTVBMERDRkRBODAwOTExRTBDNUQ3RDM5N0JFOUE0ODk2QkNGRTM0NDI5MkMxMDdBMDc1NkQ5RDQ2OTA3M0FGNDgzQ0I5NjU4RkY1NzVDNjg4NUIyRkE0MjRDRkIwQjE5NDY4ODc2RDQ0NTAwNzZBRDdGMTJDQUMxNzQ0RTZGMjAwOTM3NDFDMTA1NkU0MjA0OUQzMTdGMDc0RjU1OEFERjNFREU0MzJENTM2OUVFMjI3MkNFMDczNDhGNQorMUY4MDc2QjYKKzkyQ0JENDFCQzU5QThFMDkwRDU1QTZFMjZENTIKK0JFQzIzQzIxNEVDMkNERDI5REFFODUyRjA3MTBCOEFENzZGNjcwNTVDQjU2RTUzQkE2MzkzMjJFRDdGQzM3MjY0MEE5NjQ1Q0Q2M0JFRTAzMUJBM0UxQ0Q5MkZGM0RFOEQ3OThCNjBDNzExOEIwQjZCNTU3NzZCNDI5QkE3REUyRTY2MTI1RDYzNEE2M0U5MDUyOTA4RkZGOTU4QzM3MTRGMzJFRkU5QzNGMjFBMjExQzUwMUZEQUZDQUUzNTNBMjI0OENFQjRERkFFQjYwQTA2RjlBRDU1MTJCMUE1NjEzNDlBRkUyMjEwN0U5NkI3NzkxQkIwQjc5MEUxNgorRjQwMgorNkQ5QkQzNUYKKzlFQ0QyMEJCCitCMkE0MzQ2QjM5NjUzM0ZCRjJEMTFEN0YwOAorMjkzQ0RFQjVCMEQyMTY4RUIwMkYzQzhFQUEyQzhCNkQyMzI3MTU2Rjc0NjM2MkREQTYzN0QzQUI1M0IxRUJERjY0MjEyODc0QkYyQjg3M0ZEQkFGQURBMjlDRDU1RUY1QzY0OTc4NjBCNjQyMURFMDY2MDRFRTRERjZGMzdDRDJDNEVDNTQ1N0M0MkQ1MEU4REY2MkEwNzAwRTcwRDBCMUNFNEE3OTIyOEQxOUJCNjJDNDg1MTA2NTAxMjEKKzdDQjQyQkZGCiswOUY1RjMxRDQ0QTI3NzYyMDRGNkZERjNEOQorMEQyMzJCNTZEQjJENUUxRUQ0MTg1MDI4RTYwQkZFODJFMEE0MzE2QTkzRjQyMTZFRjI5Njk4NUVGNUY3Mjk3MDA4MUVBRTU5NTQzNTNFQUVCMEEyOUVCNzIzQjQ4REZDQzFCMzBBREE1REM0QTU5MTQzMTlGQURFNDM4RjY1OUU4NTlEQUExOEU4NEU0OEIwN0NGMDUwNDA1OEVBNjRFMDUxNDAKK0U1NjA4QjVBCis3RkJDMzZEODZEMDAxMTExRkE2MTZBMDFBRjZDCisxQTUxN0Y4NjcxNjYxNDRENUJFMTk4MkY4RjFDRDJBMUZBNkI2MDM0OTZEQTZFMTg3RTMzMjAxQTRFMUFFM0U2MTFERDg4MkM2RDc1MTUwMDk2RUFCODk3NTU0MDM1QkQ5Q0VFNTIyRDA3NzZFOEUyRDJEQUM3QUNGNTRDMUQyRUNCQUNCMkZGRTM3OTZFMUU3MEMzMDE3MjY2ODE5QkU1MDI5OTMzQzE0QTM3NkI1NDg0ODU3M0M4MTk5NEI5OUMwMDNFRkQyRDJFMTcwRTMwQTRCNzU5N0QKKzREQTY5OTU4Cis4NTBERENENEQ2MTNDODE2MTQ3Mzc2MzY0QgorQUE1ODQ1REYzRjk3NDVGMjJBQjFGMjU4M0YwRDZFOUJCRDI5MTZGRjlBQTczMTMzQjcwMEM5QkEyOTI4NDRFRjc2OEU2QUFEQTBFQzcwMjlGRjVBM0I0NkY2M0NBNzMwOUFBMDg5ODczOTgxMDYwN0YxREUyNjFENUUwOUU5QkFCOUI2N0E1MzY0MEEwOTJCMDVEMERBRERERjEzOUY4MzhDQzFDQTQ0MDE4RkMxMEM4RkE0QjEyQgorNjFCNjJFRDUKKzVDMDM5RUFFQTdBMDUxNUFGQzEwQzY5QUQ1CiswMzRGQzk4NUNCRDA0NzJDQkZDMzc3NUI2ODNFNDIyREYwMzBFQTEzRTkwOEVCOEM0M0YxRUYyOUU4MEY5RjExRkFEM0EyNUY1MTIzQkVFN0Q3RjUxQ0ZENEE1ODEzMUZBRjA5MjAxMDFCQ0U3NTlEM0U2M0FFMjBGMzhFNjIyMEIxNzUxQTM0RDEyOTg0NjdFOUE1Q0UzOEZBQzIwOEYzMkVCN0FCMzc3MzNCMkUwQjlGMDEwMDQzRDYKK0Q5OTVDRjAwCis0QjcxRDVFMUVDREFCNjQ2QTg1MjFFN0M5OTRECisxRDQ5RUNFQzIxMDdENDk3ODFGNzI1RUU3OTUwQkFFRjMyMkQyMDQyRjQzNzY1MTFGQUU5MUU3QUUwQzk4QUI5ODQ5QTYzRkQ1OTNBQjVGRUYwMDg1OTQ2QUUwOUYyMkE3QUYxNjdGM0EyRjRGRUI5OUU4OUFCRERENkJEODVFOUQzRjBDQUUzODI1NTc2QjhDQjA0NEVCQzkzOTE5OTIwQTEwOUY5NEZBMUExMDgwMjI3Qzk1ODUxNzNDQTlCNTczNERGQ0EzRkFERDY5NTY2ODc4MDJBNzY4MzhGQkNCODExMUJBMjM5OTJBQzYzNDZFNTgxMjlDOTYxNUQKKzczOUEKK0Q0NENFQTM5NDJFQkVDRjgxRDEwOUZBMTJEMzM0RkYyMjJBQTNGQzM0NEJCNTYxMjFEMzI3MkJDNjdENzAxMzYzNDhFRTNCNzAxCiszQzlBOUE2OAorQjcxQjRBQUVCOTlERUU4MzQxMTVBNDEwQUMKKzVBQzM1RkNCOUFGRkQzMTVDN0IwRjVDN0JGRTgwMzY4QzJCRUM5ODRGMzgwRUQwODRBM0M4N0Q4N0FCQzRENDAzNUQwQ0IyOTJFRUZBMkMwNTRFNTJCNTFBOThGMkIwNjkxMDE4MjYyMTlCMEExMUZERTdBOTQyRDVGMDhDMTA2RkFEMjJEMkQzQ0E5RDVEMjdFQUFDOUZBOUYyMworOERDNkM1NDIKK0YzRjk1NUY2NjREMDQ1NzBCMDE2OTVFRDY3QUQKKzQ0MTU4MUQ3MEFDRUIzQkRBMTgwRjgwMTU4NTYwREU1NjMyOTkzOTJBNjJDMDUwOEQ2MzM0M0I5MDJGREE0Q0ExMDQyRkMwQkY2Mjg3RjczNDlCMzA0REFGMDA5RkYwREY2QkUzRTBBOTg3QkJERkQ0MTcwMzM2NzRCMDI2MzU3QUZDMENGQ0UxNjI5NDA2RUY5QUVGQjNCRjdBNERDQzA3REYwMkQ0MjMxMjRBQTRDMzZGMENEQkYzOTA3ODJERTgxQUY5ODcxNzI4MDcxNDA0MzM1RjQ0MDdDMzI1RUZCQzRDMUNBQzQ5OUYyQ0EwNjAyRUVCRkZGRkE2MQorRUQ4OQorMTE3NgorMkNCODU1N0UKKzI3QTUzN0NEOEFBMjU5QkQwMjEwRTU5MkM1Cis2N0VGODI0NTMzQzJBODMyOUIwMzQwNDc2MTdFOTZFMzhFMzlENjhGOEI4OTQwQ0NBREI2NDRFQzExQTNFQ0I2RjQwRkRCNzNGMzRDRTg3NUI4N0YzOTEwRjAxMTU3Qjk5NUI3NUQ3NAorRUEzNjI0MDAKKzJEOTIxRTcyQ0IwNjgwN0YxOTRBRjgwMkZFQ0EKKzU4RDZFMzlBQkQ3RDQ3NDIzQzZERDE1MDI4QTQxODVCQzFCMEMyRTlBOEM0Q0E5QjUyOEFDOTBFQjNCMkZFQzg0RDZGMjM2N0FENEU0RjI2ODBGMkZCOTk4QjI1QTJBNTJFQTdBRTlERjQ1M0ZCNzMyQkZENjU0Rjg5NkQwQ0Y5RDM5RDQxRkNGRDk0NzgxNEE4RTUyRTcwRjI4NjU5OUU2RkYxODJGNEJDMkJDQ0NEQ0Q3Njk0RjFGNjNGMjY5NzM3ODc1NTg0QTgxODU4NjdFMTMzQTYwMEZCOTkzNTFBODE3Rjg2MDUzQTZENUIwQ0QxNUM0QjNCNTQyNAorQ0FDRgorQTQ2RUFENEM3QTc1NzUxMjVEQTAxNzdGQUU3NTAyMjZDQkIzRkFGRDkyQzlBOUVGRkIyQjA3NjcKKzU4REI3MUQ3Cis0NzVBQ0Q1MDk5RDNFNjc2RDUxQkU2MzY5RDEzCitGMTVEMjAyRjI5NDQzM0MzNDkzM0VDMzVDRjZGMUIwNjYzQzZGMjhCMTk2MUUwRjk4RDY3NTcyMDRBNkRBNzgxQUEzMzg1RjkyMDYzMjg1MTM3NTU5MDExNzNGOUVDNTBDNzM5NUZFM0ZGNEJCQkQ2NTdEODJDMzkwQTI2RTczNTMxRTYxRkRBOEExMjYyRUY3QzFBQjExN0REMEU5RjREM0MxQjdDNjZBMjlBMEJCNUM0RDRGM0IzQTI2MDVGNTUzMTlERkZBOEJFRjIxNgorNjhENDBBRDIKK0I2NDBDMjBFNTYzNjI3RkI4QTFCRjA3RkNFCiszQUIyODBFMzk5RTkyRTk2Nzc2REQzMUMzMDdEREIyRDcxRkE3QzZFN0FCQjJBNDJCMDcxRjQyMDU3RUUxMjY1NTY3OTFDRkM3QTEzREUwNDk2QzU1MjNFQTIzMzI0RjAyRDE3RkE5MzMxQjcyNTE2RUQzNzc2RDAzQ0RENTYzNTcxNzlFNThDN0UxMgorODg1QTA5M0YKKzVEN0I4QjQzMjc2Nzk2MEI0MThBRTk2NTYzMjEKKzlGODJEOUVFMDFBNjlCQkI4NzlGMzc0MUI0MkU4MzJFQUYxMUYzNzJENzUzRTVBMDMzQkZENkEwREFFQkQ1OEYzRDk4OTVCNDdFRTZBRUYxMTRFRUQzMzc0NkU2NDJBRDI4QTEyOTI3QjZCNDIzREJDOTE2MzdFMzQ0MkZBQTZFQ0FGMjNCODBCNDIwOEI4NUJENEVENzFEQjdDNzNGOEQyQjA0MzMxNzlGQTIzQ0YyODNDMzczNzdFRjI3QzkxRDQ4QzhCQjFFMjUzMjIzNEFEM0M4M0Y3MEFFRUY1MTZEMzIKKzM5MDU1NERBCis2MzRDM0U4QTcwNzM4NDhGQzE1NjBCM0RGNQorRUU1RkZEODJDMzRGNjg1RTM0Q0Q2RDk4RjI0QjJBRUQ3NzkzRkRGQjg4MERDRUJCMUJDMTEwRjE1NDQ0M0UxRTMyRTA2QTU0REEzNjhBQjIyM0QxRDg2QTQzMkU4N0VENTg3MTY3RkUzM0E1QjNBMEY0MzBBQTcwNDY1RUE5QzQyMTE2NUExOTZBQkZCRDJBQzA5NzMzRUMzM0FFMDMwNjdERjFBOUFDQTMwNzdFMUU5MworQ0I1MjBDNzQKKzhDREUzNjQ4REZBRjIzNzMyOTUzNDZENUEwMUUKKzQ3OEIyOEVENzk3ODJFQ0E0MTkwN0FENkJBN0FFM0JBMDIzOEJCNTU3N0I1NUI0QkRDMDhDREU0QjcxMUEyQkJGQzNEQzA3MzI5ODBEQzNEMzczODUyNzk2QjIyODhCNzQwMDFBMTUwMUM2NTFDNEY1NEEyOTlBRTgwREVDRUJCNkJBQkQ4MUVBMDQ3QTZDNEE1RUI4MkIxQ0Y3QjZGOUU4QTg4RDE3Q0ZCNDYyMkY3MTg5MDA4MEJGMDI4MzdEOUI0OENFREVFQjVDNjdFRDVFOTZBOTE3RTNCNkE2QTRBQzFFNkJGRjZEMzA2NUYxNEE5CitDNEYwNDEwNAorNjVDM0MwRDI2RTAxNDdCODBGMzFERTc0M0EKKzYwQkMwRTA0NTJEN0JCQURDMzQ3MjEyQTRCRUY3Q0ZGRTdEMTg1MDBFRUNCM0VBQ0NBMkVFNjUzODMwNEZBOEEwQUJDMzQ5OThDQ0Q4MzU4RDFFNDBFMEQ0OEYwNThERUYyOTU3NTA5MTIzQzAyNjg0NzQ1MDVFQjBDRjA1MkY0NjMyOUNFMTgKK0E0OUY4QkQ0CiswNUI2MUM0M0E1OTkyRThCOEYyQjNGOTJFQworQ0QzODQ2MzMyNjczMkU3NzQ2RDJFMjg5RkEzNDkzRDMyMDhGQUI0RDMwNjBGRDU3REM5Q0IyM0QzQzE4MUI1QzVGNkQxMjA3NjAzNDY1NjRGQzc2MTU0MjAwMzFFRjcwRThEMDYxQ0NEQjMyQjUzMDVCQ0Q3OUM2MzkzODM3MTc4MDk4NTJEQ0JDRjY1N0M2MjMxOEY5RDY2RTBEQkE0QUVGRDY0NTA1OEVCOUVGNTQzNjFBNDgKKzMwMDAwNzYwCis2NThCQzZGOUIwREFGNzlBM0ZCRTgyQkMzMzJGCitEMTIxOTU5MzAyRDlCNzk0CiszOTQwNDBCMAorODlBOENEMUVGRjIwRjI4QkFFNUQ2Q0Y4MTA3REJBRTAxMEE0OEZCMURBOEQ3NEQ5MDhBREI4MzlENDAwMzFFRTk3MEQKKzA5RUZCNjBDMDM0QzUzQjE3OEM5QTMyMTQ4REUwOERDOUQ5MkQ0RjYyQzVBMjE1RTEzRDg0NDlEN0ZDMzFFRjJCRDI0Q0Q1OUYxNDMKKzI5MTM5QjkwMTgwRUMxN0EzMkEzMDhERDY0RDM0QUQ1QUJDMkYyMUE0NTIyQ0U4QzAxMTc4QworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoaQorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGkKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hpIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA4NCBwdXQKK2R1cCAzIC9DMDA5NSBwdXQKK2R1cCA0IC9DMDA5NyBwdXQKK2R1cCA1IC9DMDA5OSBwdXQKK2R1cCA2IC9DMDEwMSBwdXQKK2R1cCA3IC9DMDEwMyBwdXQKK2R1cCA4IC9DMDEwNCBwdXQKK2R1cCA5IC9DMDEwNSBwdXQKK2R1cCAxMCAvQzAxMDggcHV0CitkdXAgMTEgL0MwMTA5IHB1dAorZHVwIDEyIC9DMDExMCBwdXQKK2R1cCAxMyAvQzAxMTEgcHV0CitkdXAgMTQgL0MwMTEyIHB1dAorZHVwIDE1IC9DMDExNCBwdXQKK2R1cCAxNiAvQzAxMTUgcHV0CitkdXAgMTcgL0MwMTE2IHB1dAorZHVwIDE4IC9DMDExNyBwdXQKK2R1cCAxOSAvQzAxMTggcHV0CitkdXAgMjAgL0MwMTIyIHB1dAorZHVwIDIxIC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTQ0IC0yMzYgNzU3IDcyOF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OUQ5QzhCMjBFODc0MjE0RUYyRjlBOEY5NEY1MjM0M0Y1MQorMzA5REQ2MTdDMUVBQTBENEYwMDc3NjY0CitFQzk3RkQyOTU5RkE4ODQzNTMKKzY1RDcyOTkxCis2ODc5NjczNDFGNUU4NjkyRTlBODgxOEU0RjBDCis4NjVGQ0Q3ODM1REI3OTE2Q0EzQjk3RjkwOEFFRjFBNTBBNkQ4RjQ4QzY0MEEwQUY1RUE4OTA4N0M4MDJBNDYyMzZDNzM2NDBBODhGMjY5QjMzQTNENkE3QzI5NzA1ODYwNkYzNjUwQTAzRkUzMDY0MENCMjc3NjlBRUFCQjlCQUVDMUExNjdCMkE4QzgwMjYwRTg1OEQ4RkVDQkQwM0VDMTJBQzJCRjE2MkIzRUZFMzQ1RDlDNkE0QzFDMEUzQzIxMzk1RTU4OUY2MUU2ODY3NDk5NDRCMUQ2QzFFNEEyQjY5CisxQTI4QjZCRQorNUQyMzcwMEExMTFCNkVDODAwRDc0MkMzQkMKKzU4MUY0NjNCQjlBRUE3MUY1NTEyODREODNEQTc3ODZCQjc3MThDMjYwN0U5Cis4NkU1Mzg3MQorM0Q3RUI1MjgyRjYzMEY3RTFBRDVBNjhBMEMzNAorOTZCQ0E3Njg3RUM4Q0M3REY4REVFNkM5NTcyNjE2REVDRjYwNjU5MUZERDIwRDVGNTQyMDBGOTg0MDk0M0EyMkMwOEY2MUNCNzlGNENCNjQwOTI1NjZEQThENUFGQjFFRDI3MkJBMEQxMTBEODE3MTM0ODNDN0U2MTg5RDk4OUMzN0ZGMUEwRDI2MkQzM0FGRTMxQTA5M0E3QkY3NkIzOUJFMEYxOURDRkQwQTk4NjU0MEFENDg5Mzc5OTVFNjZGOTdCMjlENTVDOERGQUFBMkZBMUM3RTQyNUFGNzM5MDNGNzhBQzUxRDQ2M0FBQkQ3NEEwQ0IwMEY3RjM2CiszMjE2CitBMzNFQjREMDUyMzFFMEE3MkQ3MEEyMkE0QQorM0I5M0NGMDMKKzFBNzFFMzQ4N0Q3OUUzRjVGMDIxNERDNDdECis1Nzc1NEU1NTRGNDc1RUIyMjRENzAzMDQ5QzQxOTgyQTk3MDk1MDk1MDkzMjY4NTE1QjU3NTQ1RkM4MDQ3NzRERTM5RDgyQjQxNjc0NDA4NTJFN0JCMDJGMjZFQjJGRTY3RjMzQzc1REM3QTFDNkM0RDU0MDI0QkU0Q0RDNDhCMjY2N0FBQkIyRTYyOUJBOEI4RkZGMjc3Njc5RUUxMkFGNEVEMEVCQTg0RjJGRkEwRkFEQ0VFMjBDOTc3NTE0N0QKK0I3M0Q2M0I0CisyMDUyRjQ4QzUwOTAxOEM4QkU3MEM2RkNCMjM2CitFNjlDMzg1MTM4NzkwQjQ1QUQ2QUZBMDgyNERERkQ0Mjc5MDE3MTA0RTI5MzdGNTU1MUE2OUY0QTBGRjM4NjJERkJFMDlEODE0MjMzRTJBRTY2OEIzNTIxNzQyRkIxRjQ3MUUzRTAyNTUyMTg1NzUzNjM1MjgxNTk2OUIxNTZEQ0EyQjNFMDIzNTIxNzA3MEZBNUY1MjU2RDEzODQ5ODQ3RTQ5NzU4OTBBNjcxRUM5NzY4RDhCNzVBQjA1OUIwNEUzREE0RUM2RUQ4Cis0RTRDQjUyMAorM0IzMEU0MzEyNTkyOUQ1MThBOTJCNDg1MEJERAorMTgxRUI4QTk1RjVBQzJDQjc4NkIyQjE2RkQ0Qjg3MjIwODBBRjdBQzNFNzFCNzVCQzIzMDYwMEY2NUYyMDM2MTE1NTZGMTQyQjQ0OTg2MThDRDA4MTZBQ0RGQTVFQ0EwNzFGM0E0NzdBMDZBRUFCRjA5NUFCNTkxOEY2MzM2N0REMEZDMEY3NTI1RDIxMzMzMDlGMjIxRkEyRDM4QTA1Njk2MzgwN0YzNUY5NjFCOTc2RTZDQkE0NEUxMDZGNTgxRkE4NDBCM0ZGN0QyMzM3RkYwMUJEOTNDNkUwQ0YwQTMyNDAwNUI2NUU2QTZBM0ZGRDhERTFFOEE3RTlCCitGODAxCis0MDEwNzBDNDc0RjMzM0JEMEQ0OTQ0RDRGNEFENENDNEUzNzU5RDJCOEVGRTVBRTkyNzEzQjZEODQ5RjBFQjI5NTgyRTBDN0E4NkY5MkVCMTQ2RUEKK0NGNjZBODk4Cis1QTY0QkIzMEY3MzY3QUZENUM3RDQ2RDI4NkNFCitFRkJCNzFFNTA3RDc2RkRCNDBFQTc0MjIwRTY4OTUzQzc0ODg0RDRBQTU3MDI2RTA5NDNFQkU0RjBDNzZBNDEzQjNCMzEyREVGOEYyRDg3QjM4NEY2NDkxOTFDNUEwMkU0RkMwNkEzOUVBMzJGRDU4QTY3NUE2NEJBOTRCRUJDQzhCRDU4RkIyNzMzMUQ0MDk1MzdCNTU2QzE5NUU5NEFFNUJEMDI5RjZGREVGMERDN0Y0NjBERkQyRUQxQzVDMjA4NTIyNTk3NjAyMjkyNjREN0U5MjU5M0U3Q0ZFOUQwQ0M5NzI2MDVDOTA0Mzg2OEMyMzFDQzZGRTdFQjIKK0MwQzgKK0E1MTM5MDQ2QUFFN0EzNUU1QUQ1MzdENEFBOEI2NjlGOUU4OEY1MDM0NjJDNkYxQTQyRTlBMQorRTU2Njc5ODIKK0NGQUNBOUEzQkUxNjBDQUY3MzlDNDdFOTE1ODEKK0Q0Q0UwRkIyMzVDRUI5OERFMzJFQjkzRTg1QjkxRDRGMUNGNjlEMzQ1MTQ5Q0U1RUY1N0Q0OTc4QkQ2Qjg4MTUwOTQ3MzVEOEQ0RUI2MEEyMTVEMzU3QjBCQzEwNkI5NEJENkNCQkFGRjJDODhGQ0RFODk3QTIyMDAzRTYzMzY0NjY0Q0E5MkY4N0YzMDUzNEQ2N0ZGRDlGMzMyRTIyMzkxRjk5NjdDQTYyMkE4OUFBNTcyOURDMjAyMjY4N0YxNzNDQTE5Njc0NkZERTEzOUFGMkMwREY1MUI0NTkzNTQ1RDMzOUUxRUM4MkQ4MEY4NDk0CitGNjVEOEYwQgorNzE0RTJERjNDRkVEMzNERjRCREEyRjZGMkI4RAorQkU4NUU0RkYzRkEyQUE0OTkxRDMxRTk1NDNENzdEMDgyMkU3N0ExMjBEQzY2RTQ0RjRFQ0Y0RkYwODNGQjRENUI5QjFCNDVCRTlCRTI5NkIyMEYyMDVFMUE2NjhDMEVDNUUyN0M5MUNDQTU5QThCMENENzQzNzI2QThEQ0IxMUExNjhBNTMyREI1MzVBMUQ1QTg1QTA4NzZCQzhFNTc4RUM5RUIzNjZBRkQ5NzczQjAyQjg0NTQ0QzBEQzZGQkE4MkE4ODIxMzM0MworNTAzRTRCQUQKK0RGMDQ2Q0I3ODkzREFBNzhDQkRFNzc4MTYyRTUKKzVBODUzM0M4Mjc5NERGRUUyQTAwRTdEQTA1ODg1NkIwMjMyRDVCMTRBRDIyREE2MDEyMEMxN0FBM0Y1NDM4RUQ0NkVGMjIxREM4RTA2QTJGNDAxMEVCNDVCN0VERTJGQUM0NkQ1RDlCNUE0NkMzRjhCMjZEMzJDRTRCQzM0QUFEQzcyMjg3N0I0MzcxNUU2MTBFNjIyMTBBNUY1MDVFRERCRkU2ODg5QjkzNTFDREM1QUExOEVCRTdFQUE0MjAyQkNFNjBGMjQ0OTNGRUJBMjU5ODVGQTA1OEI2OTRGQkNCNDg0MjI1QUFGMkExQzNFMERERjkzQ0E5NjgyMworNkE0RgorQjM1QUY4RDZCNTQzNkIwNUJFRjUzRUUyODVFQjk0RENENEQzNUYyMzZFQTE2QkMyMDgwNzg3RkVCNkE3QUZGRTk0RTAxMDRDOUEzQzY0NjU4NjFCRDdFQTAyNTVFQ0E4REUyREJGMjZGODdEOUJGRjNGNDVDQzA3MjRERUI2MTA2REIzQjA0ODY1QTMzM0VGNEU1NUE2Cis5QUUxNTlDMQorRDAxMzEyREIyRDQzRjREN0EzMTU2MEM3MTFBNAorMEZFN0ZFNTBGRUE0OTQyQzFGODZCMDU2RUJDMURGQTIwRjVBMEI0OEUwOUFBRkZDRjZDMkI1MTA5RThFMjE1ODc5NzhBNjBFRUM2ODM2NDhBRkU0NzY2MTM5REZFOTQwMEVFNDVEM0VDQ0EwODg0MDU4MjQ5MEE4RDZCMDIwMkVBRTlGNjA4M0M3OTYxNkM0MEY4NjU1ODI5MzBEOUQ2REQzMTEzNkFFRkVEQkM1MjdGOTU5OUVGOTNEQTJFMzVEREM0OUFGMkI4NTU2Q0VGOUIzRTlEMTIyRUU1QTQxQTlBNjA2MTJGMjhFMzNDNDhGRDJCNzQxNTM2MzhECitGMkZECiszN0IwOTcyQjIzN0IxRjZGRjdCQjVCMjREM0Q4OUMxRjdGQTYyQkFGOEQxQjg3MDcwRQorQjFCQjQxQzQKKzY2MDRFMTdEODlDQjAwMzEwNDYxMEU0RjczCiswREFGMkYyREQ0OUMxMUMwRTE0RkZCODI2MEFCM0VGNTY4NjI2NTAzMzdBNjlGNzFBREQzRDgxRTdGNTMxRkE1MTE1MzE2RTVEOTU5QkNFQ0NFQTVFRTdCMzRENjQzMDZFRjg5RDI2MEQ1NDBCNDREQ0Q5M0IwQTZGOUZDNDU1Q0Y3NjI2NzgyNDc0NkM0MTNCQUM5MzY0QzMwMDNDNUM3QUIxNEVBMzM0RjQ5RjQ2MEY5NDUzREM4NEM0RDhFCitDREM1MTcxRQorNUI4RTBEQ0Y4M0MyQjAwMzcxMjI0QTdDQjVBQworMzgwQjFCMjBGNkRDNDJGN0E5RkNDQzNENTE1ODRGRjRDQzQxNzkwRTY3QkMxMDkwNUVDREUxMDJDRjNFNjY2MjY5QTdFODJDRkE1QUZEMzY2MTIxNzE4NkFEMjZFMzA4NjRGNzY0NjNBQTM5RkI1MDZFODExNTNBM0VCNjk5OEFBN0UyODJDMDlBMzg4MERGNTg5QzRFNTYxQjk0MjAwQkUyMkZFQTI0NjEyREFDMzZGMjVBNUU2NTU3N0U3QzM2MkJEMUE5ODkxRjI3RTcwNzQ5MDhDRjY4N0NEMTQ2MDY2NEQ2MDE2NDQ0NzNBNDE0MDE0NURFOTZGMjQ1Cis0OEU2CisyNUQ1MUUyNkUxMEQyNzcyN0Q5OTBDNkI2M0QyOTBCQjdCRUJDREZBNjQzREZCOTc4RTk0OEI4MEIwNTY2QUZEN0YyRUMyMThCNkYyMkYyODBDOUUKK0M5MjcwMDEzCisyNTMzNkU1Rjg3MUU5QUFEMEExQTQwQjQ0QQorRDY1N0FGRjkxODBGREQyM0FCNkFBNDc0NURDOUQwQkUyM0ZERTVEMDFGQ0RCOTY5MTRDODhFMkRDOEJBRkQyQzhFQzhERUY4QjkxMzA2QzM0REZDNkUxNzk4N0YwN0YwN0E0MkMxRTkzRTg1MkU0QkQyQjU2NEVDOUE0NTY2MDI1QjMzRkRDREU1NTBGNzJGMEJEOUE3MEI1QUIxQjQ3MEE2N0E2QjA2NkFFQUI0MTk1NkU4QjIKK0MxOUE2NTZBCisyOUNDQjM2QkJEQ0VFNEZEREExQjg2Njk2QTdBCiszREM0REJFMDcyRUE0MzIwNzc0NTI5MjBGQjE1OTkxM0U5RUY0QzY5MUMyNzc2MEZDNEQ3QTJBOEYwRTY1Mzc3REE0OTFCMjJGMjI1Mjk5QzBGMkEyNEQwMTVDNDIzOTU2OTdFRTM0RTU5NEJEMTQ5OUE1MTAxQkE5QTZFN0IxRjYzOUY0RjE4RTZEOENBQzAzRTkyNTlEMkREMkVFNzIyRUUyQjk5QjM2QjMzNDZENkM2MjU1MEE4QzdCRTFEQjZCNTIxRDUzM0EyRUEzRkU4MDk1MThBRDgxRDJFRUEzRDMxOTA4Rjg0NjFCMgorMTZBNjk0N0QKKzlBOUZGQjY2ODcxNjg4RjkzQTNERkI1REE3CitBNUE5NzQwNzc2NUVGMkU4RDA3NTI2NTBBOEVGOEY5Njc0NjdDQTVEMkEwNDFDNjYwRDJGREQ0MEZEOTU1RkM5OEQ5QjIzNjRFREYxNjIxQjZFQkI1QUI0OTIxRkJENzA1NURERTQ4ODJFQ0M0NDIzNTE1N0NEQzUwNjVDRTE4ODI2RjEyNTlCNzk1MjkwMUJGMkIwNjE3NTQ1ODkwRjNCQkNCMDUyNjUwQ0NGQzgKKzMxN0U0NDJECis5OUQwMTk4MUZGMjA1MDJDMjBBRkNBREQ3NjIxCisyQTM3NTk1NkY3NjM4MUY1ODk4MEM1NkFDNjNENzlBNTc4Q0ZCRDFGQjg3QjdCREU4MkNGQTRBQjJGNTdDRTM3RDlBQjJEMzlBNThBQTQyNDdBMzBEQzQwNzIxN0I5MTYzODRGOEU4RTczQzIzMUI5Rjg2MjJGODlDQTZGREQ2QjAzRTI0MzU2OTU1MTcwN0I1NUQ1MjAzMDhCRjIxNDNGRUM4REY1MzA2NEY5ODQ3OUI1RUJCODdDNTFGODRDMUZCQkNCMzhGOENGRjg0RTg5QTEyNzU3QjAyNTdDQzBBMTMzNTVDOTBEOUFBMDA1NDMxQzU4Nzk5RkZGNkIKKzI1MDcKK0FDMEVCMjA2OEExN0IwMzk0Q0JCQjAyNjgzQ0VGQUY2RjhBOEEzQjNCNzQ5NjAKKzY3RDk2NUY4CitBRDE0NEU2QTZENThEMkEwN0RCNDQwRjQ1RgorQzJFNjA3MzJCMEQyNzc2QURGRjgwMkJBQTVBRjAwOTUwRkQ3Q0UxRDQ5QUI5RERDNDBFNzg2NTRGNzhCQjM1NzIzMkYxQTg1QjFEMDVCMEFEM0M0RDg2QkUwNkE4Q0YyNDRENTk1NDE3MUMzRjJGMTMzNkZDNjUwNUUyQjVCMUMyQzZEODU0QUI4MUYzRjhEN0QxQjU0ODZGMDIwRkZBQUI2QURGMUIwRDZBN0NFQTkxRDIwCis1OUM5RDQxNgorNUNCRjBFNDkxRENENzM4RTJBODhBNTU4MTk1NworRjJEODg0MDZEM0Q3MTE2RkNFNUE3MDc3RkNBNjI2NTBEQUE3MUVBRDcxMjI3RUM1QzdBNjgxNjhCMDFCREYxNEU4RDhDOERFNUNGRjU2QTMyQThGMTdDQThBMTZDNkY4RUFDNjM5NDA1REM0MzBCM0QwQkY1MzY0QTQ0Q0UwN0IwNEM2MzhBRkI4NTM3MTcwRTZFNTA5RDA4QzUwNUIwRjVERTg1NkVFMDgzNUJGRTI0Q0M3MzZBNkMwMjQwREREQjNCN0E5ODhGRUI2QURFQjg5MjUxQTdGRDU3OTg1NUEyQTVDMTNFQTIyNEZCREQ3MTQ3OTNFOEZBRkVDCitFQUU0CitFOEY1OTkxQzJFREE4Mzc3N0UKKzgzNTUwOENECisxMzlCRDU2RTM3M0ZCM0I5RDEyQ0JGRjY3MAorMThBNTY1QjlENTlFRDBFMzhEN0VDMjgzNEVDRkVCRDRBQ0NCQ0I2RjYzQUYyNEVCCisxOEU3QkJGMworNTRGNkRENzJEMEY5QUY2MUY0MjFBNzUxNDRFNworMEJFQTM2OEFCNTUxN0ZFNAorMUUxMzI2ODIKK0Y2RDUyMDhEMjg3Qjc0RkQyQTk5RjI5OEVFNEVBRDg4NTVFMDFBQzkzOEQyMjVCMDE5MjRENTMyRUVFQkM2NkVCQTlBCisxNjE5QzZEODdGN0EwMkQ5RTNCMzI0RjJGOERGMzEwQUI4RjE2REIxNDZFRENBRTM2MUU3NDBBNkQ1N0Y4MkIxMzdCRjBFQjU5MjJBCitCMEZDODZDRDQ5MjdGOTc3RkI5QUM5NUMxMzdFQTQwRTZFMEE2RTMxMDI4QjgyNDU0QjJDRkQKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmkgMTIuMDAgL1BTT3dzdGR1dGNoaSBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0YiAxNC4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDE5MjYzNDMxMjYzMjI3MGUwMTExMDExMjI2MmYyNDI5MmUyMjMyMmMwMTI3MzAzMjAxMTgyNjIyMzMzNTMyMmEyZjI4MDExOTI2MzQzNzMwMzIyYzAxMWI+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MjYzMjI3MzAzMjJlMjIyZjI0MjY+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDBkPiA5NDM0IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDE0YiBTRgorPDBhMTEwZjFkMTQxOTE4PiAxMjcxIDE0NTggMCAyMDU1IC0xIHMKKzwwMDA1MDMwMDBjMWMxNDE4MTMwMDA4MTExZDFhMTExYjEyMDAxZDE5MDAxNzExMGQxYzFlMWIxMTAwMGUxZTE2MTUwMDEwMGQxZDBkMDAxZDFiMGQxODFjMTIxMTFiMDAxYTExMWIxMjE5MWIxNzBkMTgwZjExPiAyMDU1IDE0NTggOSA4NDk3IDAgcword3N0OmR1dGNoMTIgU0YKKzwxZDI5MjY+IDEyNzEgMjA4NiAwIDE2MzEgLTEgcworPDAwMmUzMDMzMzQwMDI0MzAyZTJlMzAyZjAwMzUzMzI2MDAzMDI3PiAxNjMxIDIwODYgNCAzNTA0IDAgcworPDAwMmYyNjM0MzEyNjMyMjcwMDJhMzMwMDJlMjYyMjMzMzUzMjJhMmYyODAwMjMzNTJkMmMwMDI1MjIzNDIyMDAzNDMyMjIyZjMzMjcyNjMyMDAzMTI2MzIyNzMwMzIyZTIyMmYyNDI2MDgwMDFkMjkyYTMzMDAyYTMzMDAyMjJkMzMzMDAwMzIyNj4gMzUwNCAyMDg2IDExIDk0NjEgMCBzCis8M2Q+IDk0NjEgMjA4NiAwIDk1MzEgLTEgcworPDI3MjYzMjMyMjYyNT4gMTI3MSAyMzMwIDAgMTgyOSAtMSBzCis8MDAzNDMwMDAyMjMzMDAzYzMzMzQzMjI2MjIyZTAyMDAzMDMyMDAzYzM1MmYyYTI1MmEzMjI2MjQzNDJhMzAyZjIyMmQwMDMzMzQzMjI2MjIyZTAyMDAzMTI2MzIyNzMwMzIyZTIyMmYyNDI2MDgwMDE1MzMzMzI2MmYzNDJhMjIyZDJkMzkwNjAwMzQyOTI2MzMyNjAwMzQyNjMzMzQzMzAwMzcyYTJkMmQ+IDE4MjkgMjMzMCAxMSA5NTMxIDAgcworPDJlMjYyMjMzMzUzMjI2PiAxMjcxIDI1NzUgMCAyMDM4IC0xIHMKKzwwMDI5MzAzNzAwMjcyMjMzMzQwMDMwMmYyNjAwMzMzOTMzMzQyNjJlMDAyNDIyMmYwMDMzMjYyZjI1MDAyNTIyMzQyMjAwMzQzMDAwMjIyZjMwMzQyOTI2MzIwMDIyMmYyNTA5MzAzMjAwMjkzMDM3MDAyNzIyMzMzNDAwMzQyOTIyMzQwMDMwMzQyOTI2MzIwMDMzMzkzMzM0MjYyZTAwMjQyMjJmPiAyMDM4IDI1NzUgMTYgOTUzMSAwIHMKKzwzMjI2MjQyNjJhMzYyNj4gMTI3MSAyODIwIDAgMTkxNCAtMSBzCis8MDAyYTM0MDg+IDE5MTQgMjgyMCAxIDIxNDcgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYjA2MDkwMDBhMWQxYjExMGQxNzAwMDk+IDEyNzEgMzMwNyAyIDI1ODggMCBzCis8MTExYjEyMTkxYjE3MGQxODBmMTE+IDI1ODAgMzMwNyAwIDM2MjIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxZDI5MjY+IDEyNzEgMzcyOSAwIDE2MzEgLTEgcworPDAwMWQxMzFiMDAzMzM0MzIyNjIyMmUwMDMxMjYzMjI3MzAzMjJlMjIyZjI0MjYwMDM0MjYzMzM0MDAyYTMzMDAzNDI5MjYwMDI1MjYyNzIyMzUyZDM0MDAzNDI2MzMzNDAwMzQzOTMxMjYwMDI3MzAzMjAwMzQyOTI2MDAyZjI2MzQzMTI2MzIyNzAwMzEzMjMwMjgzMjIyMmUwODAwMWQyOTI2MDAzMzJhMmUzMTJkMjYzMzM0PiAxNjMxIDM3MjkgMTUgOTUzMSAwIHMKKzwzNDI2MzMzND4gMTI3MSAzOTc0IDAgMTU5NSAtMSBzCis8MDAyYTMzMDAzMTI2MzIyNzMwMzIyZTI2MjUwMDIzMzkwMDI2MmYzNDI2MzIyYTJmMjgwMDM0MjkyNjAwMjQzMDJlMmUyMjJmMjUwZT4gMTU5NSAzOTc0IDYgNTIxOSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA0MTkxYTFkMDQxODExMWQxYTExMWIxMjA0MTgxMTFkMWExMTFiMTIwMDAyMDcwMD4gMTM5OCA0MzIxIDIgMzYyNiAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBmMDYwYjBkMTEwNjA4MGQxMDExPiAzNjI2IDQzMjEgMCA0NTg1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzcyOTJhMjQyOT4gMTI3MSA0NjY3IDAgMTc5NyAtMSBzCis8MDAzNzJhMmQyZDAwMzEyNjMyMjczMDMyMmUwMDIyMDAwYjBhMDAzMzI2MjQzMDJmMjUwMDM0MjYzMzM0MDAyMzI2MzQzNzI2MjYyZjAwMzQyOTI2MDAyZDMwMjQyMjJkMDAzMzM5MzMzNDI2MmUwMDIyMmYyNTAwMzQyOTI2MDAzMzM5MzMzNDI2MmUwMDJhMjUyNjJmMzQyYTI3MmEyNjI1MDAyMzM5MDA+IDE3OTcgNDY2NyAxNiA5MDE0IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGYwNjBiMGQ+IDkwMTQgNDY2NyAwIDk0NjEgLTEgcworPDE1PiA5NDYxIDQ2NjcgMCA5NTMxIC0xIHMKKzwxMTA2MDgwZDEwMTE+IDEyNzEgNDkxMiAwIDE3ODMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOD4gMTc4MyA0OTEyIDAgMTgzNiAtMSBzCis8MDAxZDI5MjYwMDMzMzAyNDJjMjYzNDAwMjMzNTI3MjcyNjMyMzMwMDMwMmYwMDI2MmEzNDI5MjYzMjAwMjYyZjI1MDAzNzJhMmQyZDAwMjMyNjAwMzMyYTNhMjYyNTAwMjIyNDI0MzAzMjI1MmEyZjI4MDAzNDMwMDAzNDI5MjYwMDMzMzkzMzM0MjYyZTMzMDMwMDI1MjYyNzIyMzUyZDM0MDAyMjJmMjUwMDIyMmQyZD4gMTgzNiA0OTEyIDE2IDk1MzEgMCBzCis8MWQxMzFiPiAxMjcxIDUxNTcgMCAxNjg4IC0xIHMKKzwwMDMwMzEzNDJhMzAyZjMzMDAwNDI2MDgyODA4MDAxZDEzMWIyMTE5MWExNDE1MTcxMT4gMTY4OCA1MTU3IDMgNDM5MCAwIHMKKzwxZTA1MDAzNzJhMmQyZDAwMjMyNjAwMjIzNDAwMzQyOTI2MmEzMjAwMjUyNjI3MjIzNTJkMzQwMDMzMjYzNDM0MmEyZjI4MzMwOD4gNDM2NyA1MTU3IDYgNzQ0MCAwIHMKKzwxZD4gMTI3MSA1NTA0IDAgMTQxMCAtMSBzCis8MzA+IDEzNzkgNTUwNCAwIDE0OTUgLTEgcworPDAwMjIzMzMzMmEzMzM0MDAyYTJmMDAyZTI2MjIzMzM1MzIyYTJmMjgwMDFkMTMxYjAwMzMzNDMyMjYyMjJlMDAzMTI2MzIyNzMwMzIyZTIyMmYyNDI2MDYwMDM0MzczMD4gMTQ5NSA1NTA0IDcgNTk0NSAwIHMKKzwwMDMzMjQzMjJhMzEzNDAwMjcyYTJkMjYzMzAwMjIzMjI2MDAzMTMyMzAzNjJhMjUyNjI1MDAzNzJhMzQyOTAwMzQyOTI2MDAyZjI2MzQzMTI2MzIyNz4gNTk0NSA1NTA0IDcgOTUzMSAwIHMKKzwyNTJhMzMzNDMyMmEyMzM1MzQyYTMwMmYwOD4gMTI3MSA1NzQ4IDAgMjM3NSAtMSBzCis8MDAxZDI5MjYzOT4gMjM3NSA1NzQ4IDEgMjkwNiAwIHMKKzwwMDIyMzIyNjAwPiAyOTA2IDU3NDggMiAzMzQ4IDAgcword3N0OmR1dGNoMTJpIFNGCis8MTEwNTBlMDMxMDExMGYwNjA0MGIwMzEwMDUwZjA5MGUxMT4gMzM0OCA1NzQ4IDAgNDg2NiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMjIyZjI1MDA+IDQ4NjYgNTc0OCAyIDUzNTQgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMTA1MGUwMzBmMDQwYzA3MDYwMzEwMDUwZjA5MGUxMT4gNTM1NCA1NzQ4IDAgNjc2NiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA4MDA+IDY3NjYgNTc0OCAxIDY4OTQgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMj4gNjg5NCA1NzQ4IDAgNzAyNyAtMSBzCis8MDUwZTAzMTAxMTBmMDYwNDBiMDMxMDA1MGYwOTBlMTE+IDcwMDMgNTc0OCAwIDg0NjIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDM3MmEyZDJkMDAyYTJmMzYzMDJjMjY+IDg0NjIgNTc0OCAyIDk1MzEgMCBzCis8MmYyNjM0MzEyNjMyMjc+IDEyNzEgNTk5MyAwIDE5MzMgLTEgcworPDAwMjMyMjMzMjYyNT4gMTkzMyA1OTkzIDEgMjU5NCAwIHMKKzwwMDMwMmYwMDM0MjkyNjAwMzMyNjM0MzQyYTJmMjgwMDMwMjcwMDMzMjQzMjJhMzEzNDAwMzYyMjMyMmEyMjIzMmQyNjMzMDAyNDMwMmYzNDMyMzAyZDJkMmEyZjI4MDAzMzMwMjQyYzI2MzQwMDIyMmYyNTAwMzMyNjJmMjUwMDMzMmEzYTI2MzMwOD4gMjU5NCA1OTkzIDExIDk1MzEgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMj4gMTI3MSA2MjM4IDAgMTQwNCAtMSBzCis8MDUwZTAzMGYwNDBjMDcwNjAzMTAwNTBmMDkwZTExPiAxMzgwIDYyMzggMCAyNzMzIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzNzJhMmQyZDAwMzEyNjMyMjczMDMyMmUwMDIyMDAzMzJhMmUyYTJkMjIzMjAwMzMyNjM0MDAzMDI3MDAzNDI2MzMzNDMzMDYwMDM3MmEzNDI5MDAzNDI5MjYwMDI1MmEyNzI3MjYzMjI2MmYyNDI2MDAyMzI2MmEyZjI4MDAzNDI5MjIzNDAwMzcyOTI2MzIyNj4gMjczMyA2MjM4IDEzIDk1MzEgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMTA1MGUwMzEwMTEwZjA2MDQwYjAzMTAwNTBmMDkwZTExPiAxMjcxIDY0ODMgMCAyNzg5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzNDI2MzMzNDMzMDAzMzMxMjYyNDJhMjcyYTI0MDAyNTIyMzQyMjMxMzAyYTJmMzQzMzA2MDA+IDI3ODkgNjQ4MyA0IDUwNjggMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMTA1MGUwMzBmMDQwYzA3MDYwMzEwMDUwZjA5MGUxMT4gNTA2OCA2NDgzIDAgNjQ4MCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMzcyYTJkMmQwMDMxMjYzMjI3MzAzMjJlMDAzNDI2MzMzNDMzMDAyMjM0MDAzMTMwMmEyZjM0MzMwMDM3MmEzNDI5MmEyZj4gNjQ4MCA2NDgzIDYgOTUzMSAwIHMKKzwyMj4gMTI3MSA2NzI4IDAgMTM3NiAtMSBzCis8MDAzMzMxMjYyNDJhMjcyYTI2MjUwMDMyMjIyZjI4MjYwOD4gMTM3NiA2NzI4IDIgMjg0NyAwIHMKKzwxNjI3PiAxMjcxIDcwNzUgMCAxNDIyIC0xIHMKKzwwMDM5MzAzNTAwMzczMDM1MmQyNTAwMmQyYTJjMjYwMDM0MzAwMDMxMjYzMjI3MzAzMjJlMDAzNDI2MzMzNDMzMDAzMDM0MjkyNjMyMDAzNDI5MjIyZjAwMzQyOTMwMzMyNjAwMjUzMDJmMjYwMDIzMzkwMDM0MjkyNjAwMzMyNDMyMmEzMTM0MzMwNjAwMzkzMDM1MDAyNDIyMmYwMDJhMmYzNjMwMmMyNjAwMmYyNjM0MzEyNjMyMjc+IDE0MjIgNzA3NSAxNyA5NTMxIDAgcworPDJlMjIyZjM1MjIyZDJkMzkwOD4gMTI3MSA3MzE5IDAgMjE1MSAtMSBzCis8MDAxYzMwMmUyNjAwMzAyNzAwMzQyOTI2MDAzMDMxMzQyYTMwMmYzMzAwMzkzMDM1MDAzNzJhMmQyZDAwMmQyYTJjMjYyZDM5MDAzNzIyMmYzNDAwMzQzMDAwMjYzODMxMjYzMjJhMmUyNjJmMzQwMDM3MmEzNDI5MDAyMjMyMjYwZT4gMjE1MSA3MzE5IDEyIDc5NTAgMCBzCis8MDczMz4gMTU4OSA3NjY2IDAgMTg0NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMDA5MTQwNjEwMGUwNjA1PiAyMDMzIDc2NjYgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzcyOTJhMjQyOT4gMzE3NyA3NjY2IDAgMzcwMyAtMSBzCis8MDAzNzJhMmQyZDAwMzMyNjM0MDAzNDI5MjYwMDJkMzAyNDIyMmQwMDMzMjYyZjI1MDAyMjJmMjUwMDMyMjYyNDI2MmEzNjI2MDAzMzMwMjQyYzI2MzQwMDIzMzUyNzI3MjYzMjAwMzMyYTNhMjYzMzAwMzQzMDAwMzQyOTI2PiAzNzAzIDc2NjYgMTIgODg5NSAwIHMKKzwzNjIyMmQzNTI2MDQzMzA1PiAzMTc3IDc5MTEgMCAzOTAwIC0xIHMKKzwwMDMzMzEyNjI0MmEyNzJhMjYyNTA4MDAxZjE0MjYyNzIyMzUyZDM0MGUwMDMzMzkzMzM0MjYyZTAwMjUyNjI3MjIzNTJkMzQwMDMzMzAyNDJjMjYzNDAwMjMzNTI3MjcyNjMyMDAzMzJhM2EyNjMzMjA+IDM5MDAgNzkxMSA3IDg4MDYgMCBzCis8MDcxYz4gMTU4OSA4MjU3IDAgMTg4MiAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMDA5MTQwNjEwMGUwNjA1PiAyMDMzIDgyNTcgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzcyOTJhMjQyOTAwMjMyNjI5MjIzNjI2MzMwMDJiMzUzMzM0MDAyZDJhMmMyNjAwMDczMzAwMjMzNTM0MDAyNzMwMzIwMDM0MjkyNjAwMzIyNjJlMzAzNDI2MDAzMzM5MzMzNDI2MmU+IDMxNzcgODI1NyA5IDc5MjMgMCBzCis8MDcyZT4gMTU4OSA4NjA0IDAgMTk0MCAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMzA0MGExMjA2PiAyMDMzIDg2MDQgMCAyNDk1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzMyNjM0PiAzMTc3IDg2MDQgMCAzNDMyIC0xIHMKKzwwMDM0MjkyNjAwMmQzMDI0MjIyZD4gMzQzMiA4NjA0IDIgNDIzNCAwIHMKKzwwMDMzMjYyZjI1MDAzMzJhM2EyNjAwMzQzMDAwPiA0MjM0IDg2MDQgNCA1MzM1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MTMwNDBhMTIwNj4gNTMzNSA4NjA0IDAgNTc5NyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMjMzOTM0MjYzMzA4MDAxZjE0MjYyNzIyMzUyZDM0MGUwMDJkMzAyNDIyMmQwMDMzMzAyNDJjMjYzNDAwMjMzNTI3MjcyNjMyPiA1Nzk3IDg2MDQgNSA4ODk1IDAgcworPDMzMmEzYTI2MjA+IDMxNzcgODg0OSAwIDM1ODIgLTEgcworPDA3MTg+IDE1ODkgOTE5NSAwIDE5NjcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MTMwNDBhMTIwNj4gMjAzMyA5MTk1IDAgMjQ5NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM3MjkyYTI0Mjk+IDMxNzcgOTE5NSAwIDM3MDMgLTEgcworPDAwMjMyNjI5MjIzNjI2MzMwMDJkMmEyYzI2MDAwNzJlMDYwMDMzMjYzNDM0MmEyZjI4MDAzNDI5MjYwMDMyMjYyNDI2MmEzNjI2MDAzMzJhM2EyNjAwMjczMDMyMDAzNDI5MjY+IDM3MDMgOTE5NSA5IDgxODAgMCBzCis8MDAzMjI2MmUzMDM0MjY+IDgxODAgOTE5NSAxIDg4OTUgMCBzCis8MzMzOTMzMzQyNjJlMDg+IDMxNzcgOTQ0MCAwIDM4MzUgLTEgcworPDAwMWYxNDI2MjcyMjM1MmQzNDBlMDAzMjI2MmUzMDM0MjYwMDMyMjYyNDI2MmEzNjI2MDAzMzMwMjQyYzI2MzQwMDIzMzUyNzI3MjYzMjAwMzMyYTNhMjYyMD4gMzgzNSA5NDQwIDYgNzgwMSAwIHMKKzwwNzJkPiAxNTg5IDk3ODcgMCAxODI0IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDEzMDQwYTEyMDY+IDIwMzMgOTc4NyAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzMzI2MzQ+IDMxNzcgOTc4NyAwIDM0MzIgLTEgcworPDAwMzQyOTI2MDAzNDI2MzMzNDAwMmQyNjJmMjgzNDI5MDAzNDMwPiAzNDMyIDk3ODcgNCA0OTY2IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDAxMzA0MGExMjA2PiA0OTY2IDk3ODcgMSA1NDcwIDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDMzMjYyNDMwMmYyNTMzMDAzNzI5MjYyZjAwMzYyMjJkMzUyNjAwMmEzMzAwMTAwMDBhMDAyMjJmMjUwMDM0MzAwMDNiPiA1NDcwIDk3ODcgOSA4NTY5IDAgcword3N0OmR1dGNoMTJpIFNGCis8MTMwNDBhPiA4NTY5IDk3ODcgMCA4ODI1IC0xIHMKKzwxNT4gODgyNSA5Nzg3IDAgODg5NSAtMSBzCis8MTIwNj4gMzE3NyAxMDAzMiAwIDMzODMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzYj4gMzM4MyAxMDAzMiAwIDM0ODkgLTEgcworPDAwMjMzOTM0MjYzMzAwMzcyOTI2MmYwMDM2MjIyZDM1MjYwMDJhMzMwMDBmMDAwYT4gMzQ4OSAxMDAzMiA2IDU2NTIgMCBzCis8MDcxND4gMTU4OSAxMDM3OCAwIDE5MzcgLTEgcworPDMzMjYzNDAwMzQyOTI2MDAxZDEzMWIyMTE5MWExNDE1MTcxMT4gMzE3NyAxMDM3OCAyIDUzMDQgMCBzCis8MWUwMDMwMzEzNDJhMzAyZjAwMzQzMDAwMzQzMjM1MjYwMDMwMmYwMDIzMzAzNDI5MDAzMzM5MzMzNDI2MmUzMz4gNTI4MSAxMDM3OCA2IDgyNDAgMCBzCis8MWQyOTJhMzM+IDEyNzEgMTA3MjUgMCAxNjY1IC0xIHMKKzwwMDJhMzMwMDJmMzAzNDAwMjIwMDI0MzAyZTMxMmQyNjM0MjYwMDJkMmEzMzM0MDAzMDI3MDAzMDMxMzQyYTMwMmYzMzAwMzQyOTIyMzQwMDI0MjIyZjAwMjIyNzI3MjYyNDM0MDAxZDEzMWIwMDMzMzQzMjI2MjIyZTAwMzEyNjMyMjczMDMyMmUyMjJmMjQyNjA2MDAyMzM1MzQwMDJhMzQwMDI1MzAyNjMzMDAyNDMwMzYyNjMyPiAxNjY1IDEwNzI1IDE3IDk1MzEgMCBzCis8MzQyOTMwMzMyNj4gMTI3MSAxMDk3MCAwIDE3NTggLTEgcworPDAwMzAzMTM0MmEzMDJmMzMwMDM0MjkyMjM0PiAxNzU4IDEwOTcwIDIgMjg2NyAwIHMKKzwwMDIyMzIyNjAwMzUzMzI2MjUwMDJlMzAzMzM0MDAzMDI3MzQyNjJmMDgwMDExMDAyNDMwMmUzMTJkMjYzNDI2MDAyZDJhMzMzNDAwMzAyNzAwMmYyNjM0MzEyNjMyMjcwMDMwMzEzNDJhMzAyZjMzMDAyNDIyMmYwMDIzMjYwMDI3MzAzNTJmMjUwMDJhMmYwMDFjMjYyND4gMjg2NyAxMDk3MCAxNSA5NDYxIDAgcworPDNkPiA5NDYxIDEwOTcwIDAgOTUzMSAtMSBzCis8MzQyYTMwMmY+IDEyNzEgMTEyMTUgMCAxNjMwIC0xIHMKKzwwMDBjMDg+IDE2MzAgMTEyMTUgMSAxODQyIDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDEwKSAxMAorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDM2IHB1dAorZHVwIDQgL0MwMDM5IHB1dAorZHVwIDUgL0MwMDQwIHB1dAorZHVwIDYgL0MwMDQxIHB1dAorZHVwIDcgL0MwMDQ0IHB1dAorZHVwIDggL0MwMDQ1IHB1dAorZHVwIDkgL0MwMDQ2IHB1dAorZHVwIDEwIC9DMDA0NyBwdXQKK2R1cCAxMSAvQzAwNDggcHV0CitkdXAgMTIgL0MwMDQ5IHB1dAorZHVwIDEzIC9DMDA1MCBwdXQKK2R1cCAxNCAvQzAwNTIgcHV0CitkdXAgMTUgL0MwMDU4IHB1dAorZHVwIDE2IC9DMDA2NSBwdXQKK2R1cCAxNyAvQzAwNjYgcHV0CitkdXAgMTggL0MwMDY3IHB1dAorZHVwIDE5IC9DMDA2OCBwdXQKK2R1cCAyMCAvQzAwNjkgcHV0CitkdXAgMjEgL0MwMDcwIHB1dAorZHVwIDIyIC9DMDA3MSBwdXQKK2R1cCAyMyAvQzAwNzIgcHV0CitkdXAgMjQgL0MwMDczIHB1dAorZHVwIDI1IC9DMDA3NiBwdXQKK2R1cCAyNiAvQzAwNzcgcHV0CitkdXAgMjcgL0MwMDc4IHB1dAorZHVwIDI4IC9DMDA3OSBwdXQKK2R1cCAyOSAvQzAwODAgcHV0CitkdXAgMzAgL0MwMDgyIHB1dAorZHVwIDMxIC9DMDA4MyBwdXQKK2R1cCAzMiAvQzAwODQgcHV0CitkdXAgMzMgL0MwMDg1IHB1dAorZHVwIDM0IC9DMDA4NiBwdXQKK2R1cCAzNSAvQzAwODcgcHV0CitkdXAgMzYgL0MwMDg4IHB1dAorZHVwIDM3IC9DMDA4OSBwdXQKK2R1cCAzOCAvQzAwOTUgcHV0CitkdXAgMzkgL0MwMDk3IHB1dAorZHVwIDQwIC9DMDA5OCBwdXQKK2R1cCA0MSAvQzAwOTkgcHV0CitkdXAgNDIgL0MwMTAwIHB1dAorZHVwIDQzIC9DMDEwMSBwdXQKK2R1cCA0NCAvQzAxMDIgcHV0CitkdXAgNDUgL0MwMTAzIHB1dAorZHVwIDQ2IC9DMDEwNCBwdXQKK2R1cCA0NyAvQzAxMDUgcHV0CitkdXAgNDggL0MwMTA3IHB1dAorZHVwIDQ5IC9DMDEwOCBwdXQKK2R1cCA1MCAvQzAxMDkgcHV0CitkdXAgNTEgL0MwMTEwIHB1dAorZHVwIDUyIC9DMDExMSBwdXQKK2R1cCA1MyAvQzAxMTIgcHV0CitkdXAgNTQgL0MwMTEzIHB1dAorZHVwIDU1IC9DMDExNCBwdXQKK2R1cCA1NiAvQzAxMTUgcHV0CitkdXAgNTcgL0MwMTE2IHB1dAorZHVwIDU4IC9DMDExNyBwdXQKK2R1cCA1OSAvQzAxMTggcHV0CitkdXAgNjAgL0MwMTE5IHB1dAorZHVwIDYxIC9DMDEyMCBwdXQKK2R1cCA2MiAvQzAxMjEgcHV0CitkdXAgNjMgL0MwMTIyIHB1dAorZHVwIDY0IC9DMDEyNyBwdXQKK2R1cCA2NSAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yNTYgOTc4IDc2Nl0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNDNFMEVDNTkzNDRDRUYzNjk2NTBBMDM3QjQzODNCMDNENgorMjRDMzA2RTg3RUZERDQ3NzVFQzc4NzQyCitGRUZDRTQ0Qjc2NTU3NDQ2NkMKK0QxQUY3QTgyCitDRkUxOUZFQzA3MDU1MTcxODAzQkUzNUZCNjFGCitERkE1QTRDNzM5QTRFMzk1N0VCN0M2NjIzMzg0NEFDNTFBNkE5MUI0NUI3NUU2QUYxRjc2Nzc5QTRFQTM5RDU1NEM2NzFGMDM5RjZFQTA5MDJFRUFCQzEzMzYzQkREQTUxMDFDQTEyQkI4MTU2RUVDNUFGMEJGOUU2RkZENDFFM0U4Mjk3ODk1RTE1NTRGNTczMTRERTVFNUU3MEMzMkRBNDdGRDMwQTg1MjVEN0VFOUM2MDYwN0VEQjZGRDlGODE2QkJBOTQxNzI3NkY4NQorNjBGNUREQjQKK0EzOTQ4QjMzRUNENzA1MTVFRkIwRjI1RTc3NjYKKzIzRjczN0EwNjU3OEQyQzUwMTk3MUQyMUExQUQwREZCNDZDRjUyODc4NjkxODI0NDRGNDExRkYxMTgyMzAyNjY3MEI5MDdGRjM4MjY2NUYzOUY5NEMwOUUwRTFFNzZEQzBCMDJBNEJGMDlGQjhGMkU1QkU5MDlDRDRDNDE4MzNFQjIyRTBGRUE3NUE0MEQzNUQ3NzAwREUxMzRFNkM1NTZENkE3Q0U1MTJENjMyN0YxRjE3NUM0QTE5QzBGNjRBRTYxRTAwRENBMDNGOEY1RTY0QTVBMjM1RTVENzNCQUM0ODdFM0NFRjVDRUU0QTRDREUxQTY4REJCNUM3NworMjEyRAorMDhGQkY4MDc5QkU1NTMxQjc2MTc5OUUzCitDQUM3MUNFNworOTE1QkM1REEwQTJGOURFOTEzNTFCMUQ4NkYKKzg1QzY4QzM3MjI5MEEwNjQ1QUFCNTdGOUIxNzNFMkY5OUIwRTkwQjI5MTZBRDE0OThBRUFDMTNGNkI5OTc5MEFBMDU3Mjk0RDJDMDU5MkJBMTMxRjM1RTM3ODA2ODEyRTJFQUJBMjc1OThEQUQ2QUMKKzVFRTUyMTc3Cis1NUEwQTQ2Q0E5RDFDNDhDRDUwM0NENTZFQworNUQzNjcxQzkwQzcwQUM5NUQyMEFDQTJCODE0NzI3MzZERkE1QTU3QjY3MzVCQTUyMDk0QzM1QTg5MzM1NEIzRUUyN0VEQ0UyMTE3Mjc2RDRGRkMzNTM5NTc3Q0IzODU1Q0YwRjU3NkM0QjMzMTMzMUU0MUI1NzcyQTI2MEE4MDgKKzM4Q0VGQTQ4Cis3RTYyMkVEOUI1RTE5QzYxMzVCMDZFM0RGMAorQ0EyOEQ5NjJDRkY4QzZBNERFMjdCQzQzMzAzQThFOUU3Q0JBQTgwMDJCQTY3NzA4ODY4QTA2NUNGRkREMUZDRDM4OUI5QUU5MzdGOTA1Q0RFMkNCNzREN0Q4QzZCNUUzOEVCQUZGQ0RFNUNBNzRDRDVGMzdDQUNERjk5NjczCitBQTRBRTNDNQorNkY3NDVDQ0Y2QkIxNjcyMDgzQjQ2MzFCMzMKKzY0QUZBNTRFMDAzMzBEQzNBODMzNDlEOEQ4RDhFQTM4MjNENTdEMTZEOUQzQTQ5RTA0ODhEMUE0NkVEREMzRDFFMDUwRjk3QjY4ODRCREZFMzYyQjNDMTFDQ0Q1NjVBQjE5MkYxQjQwMDVCQzhDQ0Y1NworNzAxQzU2MDgKKzg3Nzg3NTlCOUEwMTY4ODQ2QUEwNDEzNzVBCisyRjM1ODE4MDVGMUE5RjUwM0IyRjg5NUI4RDYwMjM5QjZCOTA4RTY2RjA3REM5Cis0QzAyRkM2RAorMjQ0NkQxODQ5NThFNTlCRUZDRDg1OTA3REYKK0YyODQ5RTRDRkM0RUYyNDM4N0IwNEQwOTgzNjVFMDdDQ0Q2RjI1N0I5NUJEREQxNDE4RDIzNTA1MEQwNjdECisxNTc5OEMxRgorMjQ3Q0U1NkFCMDRDQ0FFOUQzRkEwMDQwRjcKKzE4NTE3RUIyMkI2QTY4Nzc5NkQ4MDM3Qzk4NUQzNUVBMjg0QzAyRDQyQkJDMzQ0RTc1ODM1NkJDCiswOUFDQTQ2MworNjlFOEY0REExQzdDOEE5QUFFRTlEMjZCRkYKKzg0MkUwODc1ODNEMTY5QkMxNUIyMzlEOUU0RDdGOUMzM0Q2M0YwNDQ5MzIyRkZGRTg3RjJFM0FDNkZEMjJGMUJDNDY0OTM2RjUzOTlFMDBCODg1MDk0Njc2NzVBOEQ2QTI4NUMyOThCQ0JEMDQ4MzFENzY3NDEzMDIzMUU2MEY2RUQ0OTc0NDg5RUNBQUUzNzY4QjAKK0VCMzM4MDBCCis5RkQ5NDM5RTU1RDFGRTI2RDg4MzdCNTUxNgorNTBFODg5Mjg4QTA0M0Q1RTA1QTUxQjcxMjQ3RUNFODJFRkRCOTlFRDE4MUVCNTE2QUVDREVGQzE4M0NCMkU0MUU4MDAyMDZGQkQ2NDNDMkI5RUM0Mzc4RTQyNDRFOEY3MUZBN0ZCNkIxNTE1MTY3Mjg5RkFBRjNBMEVCQTcxCitFQzIxOTY4OQorQzg0NzlERjcwOUY4RkI4MEI3NTgzMjEwN0IKK0JFQ0M0RTExRUZDNUFENzBFOTc3RTU2QTM3OThGNDQzN0RFRUJFNTIwQkJDQkU3NUMzQTExN0U5MzVEMTY5NUFBMDQ4QUE5QkM4QjkzNkQ0OTRGQTc3MEIwQTU5NjdENDRERjc5OTE5OTM2RDk2NTZCMEM3NTExRDJEOUVDQkQyQUU2MkY1NUJDRkNFQTgyNEQwNzlENjk4Mzg3MENENjZEMjQ5QUEzRTU2Q0E3N0FCNUM2RAorRUNDQUFCNUQKKzA2RTJBN0ExOTE3RTUzRjlEMjQyQ0QzQjUwCisyQzgxOTBGMzE5OEVBQkIxMzlDMkM3NDA3NzgyRDlDMDlGM0Q5NzI0MDZGMjlDNDY0QzY1OUE1M0RCRUYwNjU3RDg2REU4QUE5ODM4Mzg4RDc2QjkxMzk5N0FBN0MwOEVCMjBEMzM4NkFBOTQyNDZBMzEwRgorMUFBNjg5QkEKKzdGMkNCNzUwRDRBQjk2OURENUU5QzlBNkE1CitBRTE1NEUxRjNBRkNBMjVDMkFFOTI3MEE2OEE4MkZGQTQ0RTIyQjNCOEM0QkFDRjRDOEQwRjFDM0FGNDU2RjNCOUQxMUMzN0YxNTVBRTIwQThDNTQ0NTE0MEQ4MUMxMjdFNDI5NjQzRjlCREEKKzE5MEE1MzAwCitDNzFCNzIyMTY2NUMzRjYyRjFCRDZBRTE5MDkxCisyREFDNjEyRjQzM0M1NUJBNjcyNjJBOTMyNEZBMEU3OUMzMjMwMURBRERCODFEMzRFQ0ZCNkNCQ0Y3MURDMzRDNERFQ0RFRENCM0Q3NDI4MEJFODMxQUI4ODBFNjdGRTRDMDk2MjE5MTMwNkUxREU4N0Q1MUJFMzMwNDZDMEY1ODNGOThENjdCOTc3MzQwMjg0QkQ3RUNDNUVFMzhFNzg2NzdEM0E0NjJBMEM3QkMxNjkzNzBFNjE2M0MyMDRBNkRBQUFCNjZGOEVDODM1MjBGMjJDODZCNzU0QTE5OEIyNzlEMEQ0MQorMDE1MUY5QkQKKzM3QjFBNkMwRDgxNDQ1ODNGMDQxNjQzNzU4QjcKK0IyMTBCQzRFQzRGRDhGNkFDMTREMUMyMDM2MTg5ODIxQTg5ODdGRDY4RTgwMEQxMDYxODlDNzgyQjg5MjlGMENERkMxNzg2NTJFMUNDNzZBNEYxMUE4NDA3MEVBRkJENTY0RjAyMTRBMzhENjZEQThCQ0U4QTExOTIzNUZBOEE3NTkzMEYyNTJEMzdBMkFGNEQxMjg4RjFEMDlGNTMxRjBGQUFFNDk1QzlBOEQ3N0RFQTcwNkY3MUFGREI4RDI3NjgyRTJCQjUwRjZFQzEyQTVEMkY4NTRCQUMwODc2NzE5MkVCMzg0MzM0NjUzM0QwQkYwMTJEOEVENDQyNgorNDdDOQorOTYKK0VFRTdBNjI1CitBMDI4QjY3N0NEQkE0Q0U1MTMwNDc0MUE2QworOTg0NTMzOEZCRjVGOEI5MkJFMzFDNERBQTMzNENCNzQ5MkMxRUNDNThGOUMzQTc2OUFEQkZFOEFBRjVEQ0E4MTc1MUM2RUQyOUZEQTVBNDcxQ0IwODg1Q0QwNjVFM0U3MTdGN0M0OTJEN0Q3NEQ2MkNFOTEyQzM5M0E4OEI1NDQ5MTRFNjU2QTU0MzVBMEEwRERFREI2OTk0MzdGRjcyNjlGOTA3MTIxRkVFQjcwODJDMDFCMDExQkMzMzlDQkVBMjkKK0UzQkI1MUI3CitGQzY1MDA0MTlFN0UyN0JGNTE5NDVERDAxOQorN0EyQjkxMEI2ODcyRjNDREY3Mzk5RkRGNjYxRDYyMjUyNDEwRkZEQkU5NUNBNkY5RkEzNjhFN0QzMjY5QjY0NEQ3ODRCQzhFQTBCRUNBREYxMjUyMTBBQTRCQjM2QTMzRjU0MTRBRTI0QzZBMkREQjczMEYxMjFGMTAxMzBDRTgxQjczMkQ1REZENkVFOTM2RTFFRDdBQzhBMzgzNEU4QUVEQjY0RkE1RTA4NTBCRjVENjNGMTIzQTg4MkFERTBDOUZEREI4Cis3QTY2MkEzMAorRjFFQTk4NENBQkJCRkRFNDVCMTFEMjg5NkI3MworQzE2NEMzMkQxMUZDMDlGNzE3NTNFMTMxRUVBODdCRDM2RjQ1MUU0NTJFMUYwRjU2Rjk4NDQzM0YxNDAzOUI0MzA5N0YwMEVFQ0U5NTdERDdCRjUyREM1NDE0NDBDNjY0MjM0NzQxRUMwNjZFOUQzMTk2RjI1NUM0Qjg1Q0E1RTNBQjIxRDVBREVGOUJCRUIyM0Y0NDM1MkJBRkM0M0UxRkIyOTE1NkIxOTRBNkUyREI2NEZEMDhCNTVFODI3MzZGRkNDOTRGQTlDMTBFREIyQjhCMEM5RDgyNDc1NTk0NDc4MkQ0MDBGNkUyQjEyMTBGN0FDRjM1RTVBNUFFCisxQTQ5MDIyNAorQkEzQ0QwRjNBN0JGQUQxMzQ0QUIwMUFGOUFFNQorM0YzRUM5NTkzQUZEMTJDOTYwRjRGRTVFNzVEREQ4NkIxNzc5MDU4OTFCOTUwNjRBRTZBOTE2NEZDNDlCNTIyQ0E2RTYzMDIyMDIxNkJCMDdDMjhBOTI0ODM0MkUwRDA3MDY1NTMyNUFFMkQ2ODY4QTk2RUZFMjJFMDgxMTRCQzIxNjQxMkMzQzJGNUZCNUI1OTZFOEFBQzkyMUI0MUQyQjc3RTY2NDBCMDMzNzY2NTE0QkM0M0JDNzBEMzhBQ0M5NUNDMDZCMzJBNUY1QUZENDQxCitFNkZBRkI2NworRDFFREE5NDM5OTk3RTJGRTBGQUI2NTY0QTMzNworMTQyMEVBOUUxQjUwNTI3MDc2OEEwRTk3QzY1RDI0NkMzQjYxNjNBMTdFMTU3NzcwNTgxNjZGNDQyNTNCNkY0RUJDQTY0QTlDNzQxNTY5NzkwRTc1MURGRTc1RDQxRDkxRjZGRjg0QjlCRkVGMkVGMTM3QzU5NkM1RDY0QzM4MERFQjk3NjUzMzU3MjFCRkNENEIxOUE1QThGRkJENzBBNDZENDQ5OTcyNkExRDMwMzI3MERFMEJBNThGNTY4MjAxNzFBODQ5MjdGRjU2MUU0OTY1QUZCQjlBRjZDN0RFMTdBQzg3MzdGOEM4OTk0QzcxQkE4RAorOTZFMDQwNDAKK0QxQkFCNkZBMUQ3NkYyNjE5NThEMDU5MUIwQzkKKzI3NjFCQzIwNzFGQzgxMUQ3OTNFQjg3RDY2ODEyMThCRTU3NTM0MkY5QzYxNEJBRkE2MzA2QjE2Q0Q1MDNBNkEyQjc1NEZBQjJDQTFDNUMzNTVCNDc2RjVEREVGMjUyNUI3RTJENjNEOTAxMkFGOUI0NkNENkM3RUVBN0EzOUM3QzhDQTBGMDgyMkJDQTQwRTFGREZFRTIxMzk0M0U1M0U5OUUzMkMwNjhBOTAwM0Q4NDAxRkM5MkFDODMwRTQyODQyNDhFNjRCRjNDRTgxM0M5Mzc0NkIxRkQyNEFBNDI0Nzk5N0Q0NkFBM0NFMTE2Mzk2NDQ2MDlCQTI4OAorQzZENworNEQ3NDA1RkFDMTMzRTI1OEI0QjdBMQorNDc5MkMzRDAKKzdCOEUwOUEwMkYyOTIwRkQ0QTkzMDAxNzI5Cis3ODQxQTIwQTJEQTk3ODEyOURBNzkwRDQ4QzZGNkMyRUExNjJDODI1OTVCNjQ1NzE3RTJDNjcwRjZERjU3RkYwNjMyNUIyRTQzOEQwMjc5MEQ4RTEzMTVCMUUzRTg1NjQyODVERUVFM0M0MEI3MjEwNTI1NTM0Cis4RkUzMzAwOAorRTVGMUEzMDBDNjc2QjEyMjg3OTUxMzBBNDQKK0U4OUMzOUQyMUU4NDQ1NzMzQkUzMEZEM0ZCQTA3RDlGNUExNDNCMjQwRTQ1OUNFRTI2N0IzOUQ5QUFBOEM3NTA1MTgxRjI3QTY5QkUzNTkyODZGNjBENjA1MDgzOTdDRTlGNjg3RTA5QkY0NzIwRTMzQzg5Qjg5NDE3MjU0QkRDRTU3MkQzRDVEMjdDQTQKK0JBMTE2NEMwCitCQkEzRTI3ODRDMUFEODREQjBDQTBDNjhERjNECitDRjM5QzY1MDg3OUJCNTU5QTM0OTAxRjM5Q0Y0QTVDQzQxODkxMEMzMjFEMjdBNjRCODZFOUQ0RkMyODYyNzQwOEVGMzk4RUI1Q0JFRkY5QTZFQTYzNzZDREU3M0Y0RThBNzYwMjMyRTkxRjNBOTM5OTQ4QkJBNEI4NUYyOTU3OUU5Q0EyNkUwNUM3NDRBRjA5QTFCNEQyNUU0OTIxOUJDOEQ3NzY3NDIxRjc5RjgxMzk5M0M1NzZDNTNDQUYwMkFBQjlBODA0MjdGOTBFNTk1QUVGQTRFODhGQUI2OUYKKzk0NkVEQjU3Cis4OEEwOThERDQyQjVGQjcwMzNFNzQ5NDI2RgorQTIwOUNCMUYyNTVBQTExRUYwMjY1QjFGMDU5Q0Q2RjVBMzdGQzAxNENCQzUwNDVBOTk1NTkxMkY3QjVDODQ5NzhFQUIzRDAwMjM0QjIyMEIyMTI5MTBEMjJGNjI2N0QwM0RFRjlBNzgxQjhDNEZDNzY5NkM4MEIwQjkxQTc1QUNGRDg0Q0Y5MkU5QjJBNTRFRkRGNzUxOUJCMDNDQkMyMDgyMjNERjc0REU1OTkzMzdCMDRCMzg4NgorMTQyQ0I4RjgKK0UwNUQzODE0NjNCNUFCMDJGRjIzMDAyQ0VGCitBMUNCOUVERUYxMTAzQTA2QjhEMEFBOUEwMzUzQjU3M0IzQ0U1M0NDOERGQTkyOTZGRENBMTQyRkMzOTlFNjUxOEIyQjJBMEE3MTRBMTA1QURERTFCM0E5MkFCMzQxRDc1NjE5NzcwNkExQTM1OTQ2QTU3QTEzMEVGQ0YxQjdCNjRCRjBBNTdCMURERUE5MzhCMDE4RjdBNDE0MDRDMEUwMDQxQUU4CitFMTI1OUE0QworNTgxOTIwMEQ4RThFQ0RENzYxN0E1NEI1MTI0NgorM0E4NkIxNjI5NEI2MTNCRkQxMDgyNjRBQ0YyMUJGOUFDNzgzNjhFRDE1OTc4Q0I2NjY1Q0IzRDY0MTAwOEE5NDVBMkE3OEFDOUZGRUVERTRBRjYyQjgyODk4RkI0RDY0RTI5MkYwQ0RDMUQ5RjZEQzIwRjE1ODYyRTEzN0FCNzRFQUZGRUFCNDIyQTZBMTE3MkE3NTI5RTI4N0REQzhDMEY4Q0VCNTgwNTI1QjgwQTkyNkUzNkNDOTNDRUM3MkY5RTZEOEFFNDNBMTY1RDI2MzNFOTUKKzZENzIwQzNFCis4OEMzMjVGNzYyODY0OEUzRDkzNUZBMDlEMzgzCis3NDlDRTdGQkRBRkE1N0ZBRUEzMTQyQjIwNzExMTMyQUFFQkY2QjI0QkNFMTk3QTZCNDdDOTE4OTYwMUFFNzFBRTlCNEI5NkY1ODdFRTdGN0VBOTc2RkJGOEMzRUNDQTdCRTFERUNDNEVGMDM5NUY1Nzk2QkUyNDQxQ0ZBMkM0NTA4QUI4NDMyMDRCQjRBNzM1RTJCMDg1Q0Q1REZDRjVGNEM2QzJGQ0QxRkI2NEU3ODQ0MjgyQkJDNkY1OTY1RUM5NzNCNDQ1NENENTQyREY4RkQ1MjVCRUUwNUM4NTNDNjQ0QjlENDkwM0JCQkE3NkNGNENGQkY4MDIwQkIKK0VGNzFDMkVBCis0NzVCMDEwMDI1ODVFNkQ2NTg4MTE5MjM5M0M2Cis4MkI3MzlFQkY4RjJBRjFFM0NCNDVEQkJDMkI0MERFRjhDRUJFOTQzOEVGODg3OTNENTE4QkM4MUMxMTY0ODU5NzlFRjVDQTM4OERENUY4MjUzRjQwNzdEMkYwREI0Q0Q4QTlFQzNFMTYxNEJGN0E0NkREN0EyMjk0NzY1N0EzQzdCMjU1MzIzQzEwNTc3NDg4MzUxN0I4ODE0MEY4MDFEMEJDNzM1MjVCNUMxQjI1NzY2QjA3NTA1NzMxRDMzRTk5MjlEMjhDMjYzODBENTkyNDJFNkE0QUNFRjgzQkZBQjhBODhBNTVGN0NBQjAwNDAxRjVDM0VCNUY0NEEKKzUzRTcKKzNBNjlGRAorRUNDRDQ5NzEKKzY5NDZBRDk1MDgzODkzQjlDQzQzNDY1NDMwCisxQkYyNTg5NzEzQ0EwQjk1QUM4RjI4M0UxMkQyNEVGQUNGOTE1RDY5NDhGNDkwQzY2MzgwQkFCMTQxNjgxOEVFRThEQzQ0ODQ2QjA0OUQ1RkYxOTQzNjEyNjZDOUZGQkUzQjcyOTQxNjREM0MyREFCMzY2NTA3REUzRUM5QzA3MTI1QTlCNDVFMDM2OEEzMUQ2NzhFRTc3QkIxNTU4QUUyMEEKKzBEQ0I2OTUyCisyQTIwQjkwOTFEQzFFMTRDNzAwRkRGQjdENEFFCisyREUxMjg4RkFFMkVEMjkwNjJBOEE3MTdENzI0MkVDODgxMUFGRjIxQjNDQTYwM0U5QTMwNjIxNUMwNjY1REUyMTE0MzQzNUQ3NDFCQTYxRDlDNTBEQUVFM0QzREU4MEZDRkQ0MUFDNzE0QTYwQjZCMzgyOTA2QTI0ODY2RDEyQkQxRDBFRjZBNUE1Q0Y3MjhDQkNGMjg1MTkzODZGNDY1MzFDQUJCQjI0RjEyOUZBRDIzQUMzMjlBOUEzNkZFNTlBODI5ODM5QgorMzVFOEEwNDgKKzk4ODhEOThCNjRCOEFDM0ZDNURBRjFBRUQ4CiswMUQ2MjM5Q0U2NUEyNDJDQkI3MUZGMzIzMTA4QTRFQjIwQjE1MzIzRDQ1N0EzNzMwNDJBQTI0MzhBM0Q4QjU5QjM0OUMzRjg5MTA3RDUyMkI4NkVCRDQzOEZENkVBRDlDMUREQjM1MzdCRUVBMDQ5N0UxNkIxRTEwRUNDNjA1OEMxOTg3ODYxMTc2MzNBNEVGMDNDOEE2Rjc1REI4MTgwOEI3RUVBQzQ2NTAxQUZENTMxCitBN0VBMjA2QworMDU4QTU4RjM1Q0ZCMEIzRDNGOTA4OENBODIxRgorQUI1MUI0NDQ4ODk5MUUxNUJFMTZFMTUzOURDRDIzNTdDMjg4Q0YyM0M4ODBGNzNGMUFGNjVGOTg2ODJGMDNENUE3QzYzNUVEODdBODgzOEYyNjA3NjU1RUE3NUE0MTA0RkU1NjA2NDgyQjU2QjI1RkJFNDRCQTJDREFFMDEyQ0M0RjIzOEU3MUNBMTRGMDc3QThCN0E4RDk1MzY5REMyMTE4NkJBOEVBQjA0NDBEMUFCM0IwNUNEMTZFNDVCRjFDMkNDMTQ5MkM0MzFGMkY0RkVDNkVCQ0YzNjlCOENEMEIzNTg5M0I3NEIwM0VFM0QwRUY3RDQ2NTI1QzY3Cis3QTFGCis0NTdGRTNFQkVENkIzNkU2RDAzMDU3MEMyOUMzMkEyRgorNEJBNTAwMzQKKzE4QzhFOEY0QzY3RDQyMjI4QjZEQzc4MDdBMEMKK0I1M0U0MzI5QzgxRDgyODYwNjExOEVCNjY1QjM0QzNERDUzNzRBRjc0RTU1QUY0NEY0NjI5RjdCRkJFNTUzNDcyNTk0NUMzMkUzQjQyMjM2NDMzMzY0RDI2OUZGREYyNDI4MDAyNTQyNjYzNDA5QjI3MDlEMUM3RjBDRTA0QjUzMkRCMDQyMDNFNDAyRjNFQzNCMTExOTZGN0MyOTRFN0NBM0QwRjg4OEZCMDFBMTBDRTQ5ODhCQUU0QjEyQkFDODA5MjcxQjgwMURDNkQ4QkY3NzYwNDZENDkzMUY2MkM5QkM4NEVGQkY4NzhEODg1Rjk3QkI5N0IxRjVBQworMDNFMAorNTBDQjAzRTVCM0NEN0ZDM0EwNzE3QkRBNDAxNEM3NTIzQ0EyRkIzQ0ZEQUI0NjYxODlCNEEyMzVBNUJDNkNCNUY1RDA4NjRCREMwOTE4CitBRTM1NEVFNAorRjk0M0E3ODU5QjRDQTRFNDk2OTNBRDJCNTdBMworNUFBMzNCNUI5NjBBQTBGQTFDMkVBNzM3RjFDNUM4RUNGOTNEMzRGNzU4NjA0MDI2OUM4NzEwOUY0MjEwNUIyMjU1MTdEMDg3NDMzOTI3ODAyODNDOTY5QTk3RDQ3OTc5MzEyMTVBM0Q5OEExMjU0MDQ3NjcwMjFGOTZBQTAzQzE2N0I4OEU3OUIxQTdCNTUxRkY1RTIyNjJCNzFDMDNGMTIxMzQ1ODJCNEU1RkZBMjczMjE0N0JEMzFENDQ3NzdCNTNEM0U5OTA1RUEzREI3QUE3RDNDNUFCNjgzNDA0NTk1RjhFQjUKKzM0ODg3QkUwCiswNjk3RTA4NEMxRjAzNUY4MjI4NkIwMDZBMAorMUExMDlBOENBNDQxOEY4NjQyMDMwMUJERDQ1ODE1ODkwMjIwMzg4OTg2QzIKKzc1NjAxNjMzCis2QjBDN0MyMzBEMjFFMzg2NUUzRTVBM0U3RDhBCisxMUMwMkY1OTlCNjdFMjM1RjVBNUM5NTMyOEM1QjY3QTdCRTA5NUExQUNGMTBGNDNBNDI3NDhBRUVDMTk2RjIzNTY2RUY1RTA1N0NERjY5QzlFMEY0NTQ3QkExQTU1NkY5RjcxRDNCN0RGMDk2MEIyRTJCNzdGNzA4NTk1NDYwNkJEQkQ1NTFDMzgwQ0M0M0M0OTM0MjNGMzJBRkI5MjkzQTlFREYxNjcxQzE1NkQ4MTcxRTFCODA2RDA1MEY1RTA5MzkwMjE0MUNBNTkyMjEwQTIxNzI0QjhGNkIzRTE3OEFBMTZENkE2Qjg1QjcxRjY4RDc1MjhFMkZCMjAKKzgxMEQKKzlBOEI4NgorQTNCN0I1QzAKK0FFMzZGNDFCQzFDQTI3RjgyRDg3QTg5RTVGCisyNTM0QjMyREJBMEI3OEI2RTExOTgzQTAzNUQ3QUMxN0Y3MjlFMjM0OUFGMDE3MEE0MkNDQTFEN0JBOEY1OEM0M0VBQ0VDMEJFNjQ0Qzc4Q0Q4ODM4MjAyODMzRDU3MTQ1NkYzNTE4M0RGQUU0MERBQUVFQzQxQTM1MjQ5MTFCODY3MjYzNUY2MkRGMjJDMUZEN0E0NjQ4Qjg4OUI2ODg4QTg3RjY2NkUwRjdDRDAzOAorRjlEN0RCODMKKzMyQjczM0FEOUZFMjA5REI1MkQwNDZEMEM4CitCQkU4Qjc3QTkyRUZBMTJDNzA0MEI1MzEyNkM4NkI1RDc1MEMzREFCNzMwQzEyOTQ4RjlFNjk0REQ5QzUyMjdENTVBOUQ5MzdFQjVGNTlFOTc4ODAxN0Q3MzZBNUIyOENDNDFGNDMyNEJBNTBDMENFQTgxRTc0MDQxQzg4MkIxNEZGNzBBOTBCQzUxQ0NGMzFGRjk1QzNFNUYyMDlFRjRCNzdCMAorQTY2REUxNDUKKzRCREZGQzM3OTdCNUM4MzNDMzNGRjEyMTE0NEMKKzMwMzhEM0I0NEY2NzNCQTZFMDIxNEI3REE4MENCMDQ1MzE5MEJFOUNERUQ1REY1MkE1OUFGNTI0N0I2OUUyNDhFNzU2RTQ3MTUzRERFMEUzRTgwODk4ODM0NDIzNEEwOEVGNTkwM0QyN0E5MDMwMUZENEZDMTlFNTNBNzBDMDRGQUI4NDAyMjFCNUMzRENEOEYyRTA4MDgwNjY1Q0E1QkFGRTVFMEJFMjRGMEU4NTA1OUU3MTExQjYzOThDN0ZEQUY3RjlCNDIxMkZEQjI2MkVENkI3QUVGRDMxQUQKKzE1QzMyOERGCitCODRCOTFBMEIyMEM0NEE1NkNCM0Y3Q0VDMQorQjM4RTU2REFBMTVCRjYyMTk5MDkwNkZFMEQzQ0U0MkU5NDY5QTdDMzk5RUE4MzM1M0RFMEZFOTVENjAzRTRCOTA5QkUzN0IzRjAwMTA1NUJERTA1MDk3QTQwRDc1MEVBMTIyMjU2NUFCMjhGMjBDREJEM0VGMTk0ODM2Nzc4QTMwNDZCRTQwMkNCOEJDQkE5NTczMTJFQzZENkQyNjIzQzMxNjc3QzM0NjhBMDFCMzhCRQorNkI2REFDOTAKKzdBOUMxNTNENkRENjk0MDE0QjRBMUUwOUQ0Cis2NzEzNTNFQTdFMUU2MDg2OTExREI4NUU0RjY2ODY0RTc4QjE0NUY5RDZERDJBNDk4QTBEMzY4MTY2MDY0QjMxOTNCNkFBQ0UzNDc5NTYzQkEyQjY0RjA1MzVDM0Y1ODI4NDJERkMzRTA4M0I2MTc4MzYwRDdGQzNDQkUyMkUxOEIzNEZGNEFDRUJBQkM3RTEyNUFCNjc3N0EzQUI5RUQxMTc1MkEyQzg0NDEyODgwMzU1MENDMzFFCitBM0ZDNEVBNAorNDc0QjcyNzg3NjQzMjE5OUY3RTNDMjc2RTNBNQorMTE3MzUwRThFMzhFOTEwQTI3OUU1MjU5MDBCM0U3RDMyRDA5MjJGMzBDNTFDNzc4MEE1RDk3RTFDREY5NTVERjZGMTExRUY1NTJBOTA5MjdBQjVBNjUwRkY5MjgwM0ZBOEJDMkYwMzMzNDlGRjY0Q0M1QTE0MDEzQ0YyRjNFNEIxM0UzNkRGNjIxOEVFOUZERTg1QjBGREVEQzNGODEwMEI5RUFBRjY5QzJBOEVDNUIwMUQ1OEEwODIwNjg1REE0NjMxNDFGNTc1NzgyN0ZGRkQzQ0NDOTJFMDcyQzc4QjdCOEE4REQ0RDBFMjgxRTE2NkRCNjZGREFBNTYzCitGQkI3CiszNkQxOERFRjVGMDczRTRGM0ZDNjhBRUE5ODRFQTAxQjkwNDExOUNGNkE1RDgzQ0M3RjA1RUIyMkYzMjdEQURDOTA4NTdEQTE2NkMxOTM1QjgyQ0Q2QzA5OENDRDlECitERUMzRUZEQgorQkE0RUVERjBCQ0M5ODQ2MDIyMkNCRjM5RDJDMworOTU2OTIzQzk3NjA2NDFERjExRTczMTU5QjMwNjM0RDYwQjc0M0IzNzVBQ0RCOUIyNTUxMkQ3NzE3RDZDMkE1RTBFMTQ0Mzg4MDk1MkRFNzZCQzg3RUU3RTlEQjYzNjQ1NTAxMEU3RTUxNjc0OUQxMzIyMDVFN0MxNzRCM0RDRkIxODYwQkFDRkI4RjZCNzc0MTU1ODM0QUYyQTE3OEM1MjBEMkY5MTVFMDJDM0Y3RUNFNkREQjUwM0RCNjFDMzk1MTc3NzhGOEU2Mzg5QTVCQTA2NkNFNTA0NTYKKzIxQjU1M0E5CitDRTM3ODYzQjY5NDJENjI5OUMyOUREQURBNAorMTNFRTM1ODlFNTQ2NkJFRDQwRTk1MDg0OTNEREY5RDc3QTNBMTUzRDdFNUE1OUQ1QzRCMzhBRUFBOTJBNjJDNUE3NDcyREJFMDYxNTA2MTM3QzcxOUEwMDA1QUFBMzFFNDk3RDA1RDEwQUQwQ0I2QUQ3MjZGQjhCQUNBMTVGOUM2QTIwREZCMzAxOTFENTk1NzJCRjA4NTE3RjhGNzExNAorRDAzQkRENUMKK0QzMTlBOEEzRUIyNTI2M0ZFQjEwNEE4N0FCNEMKK0VENEE4NDg5ODEzQkUxOTREQjk2QTlCOTA4QTAxOTFENEYzOTgyRUY4OUZCNDc3RDM1OTMxOTVDREFEMDk1MUU0RDJGODk0Q0I3NDk0MDE5NDRDMkUyNjBCQUNEQjI0OEY3NkQ1RTUyNUJCQkVCQjdEMjNCNTlFRUQ5QTcyNzMyMjc2NDhFQUE5MzczODIyNjcwQjNCQUEyQkEyNkUxNDhGODExM0UyNEE3MTNGRTY0QkVBMDA3OEU2RTU0NzVFRDQwMzE1QjQxQzVEODQ3Q0ZDMkFDODhDNjY1Q0Q2NEQ1RjhGNzdFM0ZEMjI3RkJGRDEzRjA4NjIyM0U5NAorOTM1MAorQTJGM0JGNUE0ODc4RUM2NzVCOUNDQzM2QTBCQ0RBREY2MzM3QjBGRjQ5RTJEMUNCNEIyMUE3MDU5REI0RjU2OEM3OThERQorN0IxMjA4MzkKKzJEQTRFNzJBOUYzRjkwMDQ0QTRGNzNDRjA2Cis2QzJCOUM1RDYyQkMxMjdBNjhDQThDMTMzMDIxNjk2OEE2MkJDNUJEMkRCRTIyMTA2RDIyOTc3NzkyMTNEQzI5N0IyNjA2MzlGQzY2QTNERTUzQ0JBMUJGN0MxOUNFNjBGRTFBMDc3MzA1QzMKKzAzMTUxQTUwCis0RTNEMzU5OTQwODFDQzJBOEM5ODAwQzFBNTlDCitFRjRDODc3MDQ3OTk5Njg3RTg3MDM0QjgyMzU4QzVDMjNGOURFMDc0NEMzRTAxMzI4QjMyM0ZFMkI3OEVFNjRFMkY5NDNFMkEzMzM1MkE3RjgxQ0E4MUNGNDdBNTExREZCMDZCRDIyRjAyNzIzQzUzQzRFNzU3RkMzNkE4MjRBMDhEOTBFREJDOENGRDNDNTY0QkU3RTJGMTg4NzdGRTFEN0JGQkM0MDRFRjRCQUJFNzk5MzQ4NzU2NjQwREU3QTRBMkQxNzBBRjk2QUQyQTQ0Mzc3ODJBRjlCRUYxRkIwNDZDMDA0NzlGNkY3Nzg4NDI3MEE3MEVFMjY4NkQKK0M3OTcKK0I0MUI4ODk4MjZDMkEyMTg1QTI0MEJENjYyODBGMTkwMTg5MTAzODY5Mzk5NTAzMzZFMzMxN0Q1RTc4NjhCCis1QzEyRjFGNgorMkNFNjkxMTNGQ0VDQ0I1N0YyNzJDM0U5M0RENworM0I2OTYzQUI1OTc4QzZGMUJEQUVFQzNDMzBFRkY1OEE0MkE2NDlBRjBFMjYxQkNFNThGNDI5OEMxOTU5RkQ4ODI4NjZFM0JGOTQxNUQ4MDRGODBCNzA4Nzk4NzIwODNFQjIxQTE2OEJGM0NCQjhDRjU3QjdCRDk0QTA1ODgyRDE1ODc0NkVBRkI1MzI2Q0FCMkQ2NEVEMDE1OTIwRkE3RjhDMjhBNjk4RjM3QUE1MEUzNkQ4QUM4NDU1RjNFNTEyMjlGMDMxNEMyOEU0NTAxNzRERDY4MjE4Cis3NjM1QkE3NAorQTUyRkY5MzY0NDAwRjQ0QzgyREQ3ODIzRkMKKzEwQ0M3NzI0MkRCOTYzOTZBQjY4Qzg1NzA3RjYwRjlGNjBCQzgyMDQ0Qzc2MDIyMUU1QjIyQzQxRkFGMTZDNTc5NzFENEU3NTVCMjU4QjU2MDlFRDU1MjQ1MDZBMTY3OUNFRkI5OTdENTZDOEJGRTI5RjMyRUYwRDBBNjg4NUQ5NjkzODc5NDU1NzhCCis1Qzc4NTFENgorNjZFNzBERDlBRkJCQjM4MjkxMEIzNUNBRDczNgorMzJGOEVFOTc5M0I5MjZEMkI5NDMxN0MxQjlBRUJGQzQwQkRBMDQ2NzcyQzY5NjlEMEZBRjE1MzU2MEZDNDk4NEI4NjJERDRFM0Y2NUFFMDMwRTlFOUY0RTgyNTBDMEIyOTU4MzIzNTlFODQ0RTk1RTc5NDZCRkMzNjcyNUU4RTE3Q0MyODEyRTU4QkZGMjczRjdGMjAzM0M4QTM5OEU4Q0E0QkM4NjgzMUE4N0Y2RDc3N0E2RTc1OEFDQTZEQzkwNjRFOTExNDc2MzgwRjkxNDkwMzUwMDk1RkJEMDJGMUI3OTM5Q0I1RDRFNUM0QgorM0U1NTMzMjgKKzc2QkZEOUZEQUZFMzMxOEI0NEI2RjhBRDg2MzUKKzA5NThBOUU3QzA4QzJDMUZGREE5MjY2MTE1NDQxNkQ0QTJDMkE0NDlFQzc0RTJCREQyNEQ1N0FBRjA4RDdBMzg0QzM1QjNCNTVDODZEOTc1QjBGMTA3QUY2QzA4RThCRUM4OEI0MDZFMkE1NzU0Mzg1QkM2RTJEQkQxOUU4MDY0NzMyNDNCNzM0NzVEMERFNzA5N0NCMkI3Q0E3QzE4RUE1QzZGNTMzMkNBNTREMUExOEYyNDZGM0I3NUU1QUFENUE3QTU1NUE5MUM2NUQ3MDdDMkFBCis1OTZBNkUwMworM0Q4MkFBRDkzRTkwNzgxQjQ0NzBDOTJENzIKKzM2Q0QxRDE5MzY3NkM3RTdFRjM4RkFBMjdFNzIwNTUyRjYxNEFENTY4MjBCOTY5NkUxOUFCRTVBMTM3M0NFQzUyODk4ODExMzA2NjFCQjlFM0EyNDczQzM1MjBGRTBGNDk2NTg3MTQ0RkZDQjNBNzk0QjlERUEzQTA2MzZCQjgxOTM5RjFBNjdGRjJDNzRCQUEwNzVCRDcyNjQ3NDQ5ODIyQTc0MkE4MjFDNUM1MAorMzgwNEVDQ0QKKzgwMDBENzgxNTM3RkNGREU3NDI2ODNEQ0VBOTAKK0FDMzgzRTQ0RTI3QTIzQjFEQTZDQTdDQzYwODE0NzkxMUY0MDNGNDJEQTI4NjA0NkYxMUNBM0FFQjVBMkI5REI1OEQxRjQ3NjA1OUQ0MTVERjQ1NjA1MTRCMDlGMDRFRDY0NzFBNUM0NUY5RkNGNDE2NDFGNERDNDhBOEUzMjYwMzI5ODMyMkIzQzI5MEVFRUREQzJCOTNDOTZEMjA1MzE2MjQwRTkwNTk1RTA5RTdERDcwRDI2MjhFM0FBOTNBQkE5NDIzMDIwOEExRjZEODdFQjMzOEUxQkQyMkZGQzdFQThCODE5M0Y2RDRBQ0M1QTE1NTVBNkMwCis3NEZDQkNCNAorRDJFQjFFRUVFRTIxNkI2NzdCODRFOUZCM0MKKzM5RURENjRERjI3NjE1QzBBMUU5RUQ4NDM3RDU1QTVDMUEzNjRBMzhCNEFEMjY4RkVCQUE3MDc4MDU2ODgwQ0JEODk5RjU1OEVDMDU0MTRCOTQ3MzZDQUNDNTI0OUM0RjAxRTg0QkNBQzY5NDEwNTNCNjFENkE3OEM0NzJBRDJDM0FGN0EyMEFERgorNTRFMkRGOTMKKzczQjJCMDE4QjkxODcyOEZBRjJGOTY3QkNCCis5NzA0NkVBMzU3NDVDMDY1ODdBQTY5Njk1RTdFMjc3MkE2MEI0Qzc2RDFEMTEzQkFCMTVDRUFGRDIxNjRGNUM4N0UxMTgxMUM4RTNGODk1QzkzMTIwQzA5MDkxRkI0MjhERDQ5RDg5QzI2NEI2NEVCRUZFMjFEMzkxOUQ4NjkwQ0E2RTc0RTI4QjE0M0UyNDZFQTJBREUzNjMzM0Y4NUJBREUyRTY5MzcyMERDQkZDRTNGQzVFRDJDMTM2M0NFMDBGRjgxCitFMTgzNjM3NQorMjY1M0E2QzRDNkE3MkNFQTI0RTMzNzA3RTAKKzY4MDcwQjFGODUxQjk1Qzg1RTVDMkE0ODFEMTFEQkFDRTY0RjM0ODMyNzY3NUExMzM3MjM5OTVERjU3RkM3RDA5OTAzMDExNTE5NTgwNEVCMjgxMjVBMzVENjU0MENDMEM0OTU2MTdGQTQ3NjY5QjAxQTQ0MEFDRjUzNjlDMDlEQ0Y0ODUyMUNEMDIzQzgwRTUyNEEwN0QxMUQ3OTk2Njk5QzE3OEU4MzlGM0EyMTFENEUKK0JERDI0QjAyCitERkZCMTU5OTE3MEUwNUFBNjJFMzY0OEJCRDFFCitCRjM2OUU3NkVGODBCNjYwRkZEQjBCQzY5QzZENzY2MDREQUI2NzQ4NkFCNjc2RTA3Mjc3RjYxRjRCNDJCRDYxRkE0ODcyMEU4Qjg5NjA3QzAxRjM4QUQ3MzhBODY5MDI4Q0I0ODIxRUVEQkRDQzAzRDIxRkM3RTFDNkQwRTlFRjQ5NDhCRDExNkY2NkRFNDgzMzgxMzYxQjA1Q0JCRjIzRTcxRjc3Nzc0NUU4RTE0RjFDMDI1Qjc2NUE0QjM3OUEzRTE5MjkzQkZGRjU0NUVEODJCMzE4MEU5MzVEREQxOTFCREE5MEY1MUQwNTAzNDgyQjc2QTZENURCQkUKKzZCQjIKKzk2RDIwNTQ3QjdCNkMyNTgzOTRDNkU0NEVFNzkKK0MwNEU2NkQ0CitERjE3QjE1N0MxRDAxRTk2NDM3M0RDQzM2QkNECis3M0QxNjM3QThGRTQzQUFEQTkzMEE4N0MxNzNCOTE2NEJEODcwODI3NkU4NzYyMzI2NUM2RkVENjFBQThDQTI3QTJGQTk4QkUzNDQ0NTc5MkIxQTVENkQ4RUQ2QTM4MkIxMTdDQTE4QzQyQTBGMTUyMzhGQUY4QjA5NUJEMEQyQUVDOTI3RDE4NzEzOTFGMEYyOEY2QzAxODI2OUFDNDMzQ0VEODQzREU3MjI0MENDOUEzQ0VBQjkyOTYyMDY5RTI1M0ZGNTNDNDY2QjFERkYwMDdDMTBDMUQwNDVCOUM2QjQxM0M5QTM5MzU3OEE0QUQxMTQ5RERENzM3NjUKKzc1NkMKKzVGRTM0OEY3REQ3QThFQUIyMzgxREIyREIyNzc4MEQ2NjFFNEFCMjUzNEQ4Q0M2MzVCCisyQTU3NjRBNAorOTA2QTUyQzJDQzFDNEM4ODFDQTVCNUE0ODA1OQorMjg5MDdGREYzNTc3MTM4MUI1RTE5NjgwMjIwOTFFRUZCODZFNzIxMEEwQzU5QkVFMzA2MUI3RDE2QUU5MjUwNzNDRjAxNzdCMDBCOUIxNTM3QzlCRjY5RENDMEFBMDkyNkU2OEQ5Q0RGOTdCN0FCRjA1RTczNTMzRUFDRjQ4NTQ1REJBNTI2OUI2OTY1MUU4QjU5MkM4MzdBMTQwQTY4MTYwRURCODdBMUUxRjA5RkFFQjJENTcyNjMyMTYyQ0Y0NjZCMTI5MUMyRTY3NTNERTBENkIyMjQ3REJFOTIzOEU4NDIxNDBDOUIyMDUxODFCMkMzNThGQTkyQTFCCiszRTE5CitBRkMzNjlCMgorMkFDNUJEOThGMDJBMDI3MkQ4OTJGRDQ3ODEKK0JEQ0M0RURFQzI0Qjk2NkM3MEQxMENEMUEzQjZGNUI1NENDMjUzODI3NUE0OEFENEM2MkMzMzNCRkE3MDVGQzVFMjZDQjgwQTgzNTFDMEI4MDk2MEE5QkNGQjk3OTFBMTUyQTgxQTY2OUUwODNEMTc3N0JFNjZDOTY5MzdFMAorQTI4NTM0NzgKKzk0MzFBMzQ3NUQ1ODI3QUQzOTVEMTg2OTI1OTcKKzExNjNCMzU0NUVFQTZGM0NFQThGRkVCNkRBNzkyNThFNzZBQkRENjc3NjFGMjY1QjY0NDMxRkJBMUY1MkUxRjBCMTA0M0Q1NzBCMERDNkQwRTgxNDAxQ0EzREI5OTY0NzU1MjIxNTk4RTE3M0IyOEZCRkE0REVFRUJEMjJCMDlGNUI3MEI2MjIxMjIyNzFEODYzMkY2QUY5ODQ3Q0UzRjE2RkI5RUU5NDRCQ0I1MUY3NjREMjBBNjhFQURGQjg0MDg2QjlBNDFENTk5MzY0QTk2RQorQzlGRTY4NUEKK0VDMkE3QUQwREZBODhFMUU5NTZFNzc5QTA5CitGMkVFN0Y2NjJBNUIxNTQ1MTQ2OTM0NjdGNjdENkE5MzI2MUM4REYwMDBBNworRUZDRUUwQUYKK0ZBNDZGMzU3QkNBRDU3QTY3OUNGNkY1QUU0QzQKKzVENjAyN0E1MjJBQjczOUIKKzMwQzRFNEI2Cis1ODczMjI3M0JGQjM4ODhDMUNBM0E3MTEzN0M2MTNBNUMyQTNCMjNGMkUyQUVCRDZFMUVCOTE1RThCNDVFQzMyREFBNQorNzRDQkUxRDI3MzIwNUJBRkVEMUE0ODQ0RThDMzQxRTE4NDEyQUE3OEM1M0NEMUI2MTA1MzlGRjcxNzgwMjExMjExQTVFNTgwNzUwNworMDUyMUYzMkVGM0RCRUFENzE1RDlEOUQ4OTNBMjIyRjQ1OUI4ODdGRDk1OTY2QUZGRDdCQTdGCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ1IHB1dAorZHVwIDMgL0MwMDQ3IHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY3IHB1dAorZHVwIDYgL0MwMDY4IHB1dAorZHVwIDcgL0MwMDY5IHB1dAorZHVwIDggL0MwMDcyIHB1dAorZHVwIDkgL0MwMDczIHB1dAorZHVwIDEwIC9DMDA3OCBwdXQKK2R1cCAxMSAvQzAwNzkgcHV0CitkdXAgMTIgL0MwMDgwIHB1dAorZHVwIDEzIC9DMDA4MyBwdXQKK2R1cCAxNCAvQzAwODQgcHV0CitkdXAgMTUgL0MwMDg1IHB1dAorZHVwIDE2IC9DMDA4OCBwdXQKK2R1cCAxNyAvQzAwOTcgcHV0CitkdXAgMTggL0MwMDk5IHB1dAorZHVwIDE5IC9DMDEwMSBwdXQKK2R1cCAyMCAvQzAxMDIgcHV0CitkdXAgMjEgL0MwMTAzIHB1dAorZHVwIDIyIC9DMDEwNCBwdXQKK2R1cCAyMyAvQzAxMDggcHV0CitkdXAgMjQgL0MwMTA5IHB1dAorZHVwIDI1IC9DMDExMCBwdXQKK2R1cCAyNiAvQzAxMTEgcHV0CitkdXAgMjcgL0MwMTEyIHB1dAorZHVwIDI4IC9DMDExNCBwdXQKK2R1cCAyOSAvQzAxMTUgcHV0CitkdXAgMzAgL0MwMTE2IHB1dAorZHVwIDMxIC9DMDExOSBwdXQKK2R1cCAzMiAvQzAxMjEgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE4IC0yMDkgNzk4IDY5NF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI3NEU4MzM4NjM0NTA0MTFFOTE1OENFNjYwRTNBN0Y3RUY3NworMUQ3MjY2MEJBOTc2NzAwNTM1MTYxQTcxCis0RjA3MDM4OEQzQjVGRjI0QjQKK0M2NDRFOEE4CitEODFGOTc3OTAwOTJGREJBRDYzNTlDMjcwMQorNTFBNTUxOTFERjU3RjE2QUExM0Q5MkUwRTZFNjA3N0I2OTdERjg2QkQ5OUFEQgorNjRBQjA5REYKK0NGRkIyOEU5NTAxRTg2MDUzRjNGQjE5MjY2CisxRDJERDI5RThCRUQwMzI1NDBCRjg4MzZEMzUxQzM5MjM5QjY5QzJEMkZFNDg1MjM0MkNECisyNDQ1QzQ1OAorMTc1NjAwMjYyRTZFODUxQUMxOUE4MUJEQjAKKzgyRkE1MTM0MTAwMjJFMTIzNkEyQUQyNEI2NjkwMDdFRDU3RDc3OThGRDY5QUQ3NUQxOUI4QUUzODdDRkI4MDczMTFDNURFOTNDNzdDNTM0NjEzRUIwN0Q3MDRCQThEQTk0ODAyM0NBNTU3NworNDcxOUM0MTYKKzM3MjNGQjFGNTQ3N0ZEODY0NEZCOUMwNTYwNDUKK0EwMzY5RkY3Mjg2N0NEMzUxQTQ4RjMzQzMzNkFGMDZERDYxMTkyQTNEQ0VFMzI4OTNEODYzRjU1NjZCQTU5ODYxRTBFNzcwRkNBMjNBOTJCMkNDRDE0NUExODk2OTNGRTBGNTVDMjM2RTUxMzE3OEZENDQxMzZGNkQyODI3QzU5OTA3NzJBMEYxRjdCRkJFM0U1RTA5MzI3ODRGMjBGNzMyMzg2MDBEMDk1OEM4MTY0NjBGRDBDMTYwOUZDMjRBQzc0MzAxQ0I4NDQ2MDYwQzQKKzMwMzdEQzNECitGQjVGOEE2MURDNzEwQzNCMkE4QjMxOEU4RAorMzI5NkNGRDYwNDhCNUQ4MzE5ODQzMTY1NDE0RTNERjg5QjkwNTlCRTYyNzg2QjA0NzJGQjg3QTExNERCREY4NUY5ODVEMDdCMzA3MTk5MDZEOTFGMEY0MDQ1MzFCNkY1OEY4RTlGQTI0OUVENUQzQzE4NEM0REIzMkY2RUEzQjZEMUE0MzA0MEE4MTkzMDVGNTYzMzc4ODdDNEU3OEJFNjQyN0FEOTQyMUYzMjMzCis0MkE1MEVBRgorNEQ1Njc1NzY0NUJGMTY4QTk0NTdENDJDOEIzOAorMDZGQTA2MThBNDIwQkFGNEE1M0Q2OTk4MjVERjMyNjM1OURGOUZERjY3QzQ4RjA0RTFGNThBNjZEMzY1ODc1QUFDNDMwNEE2MzFFNTU2NzJFQzcyMTREQUVDOUY0MDlFODQ3RUYyQUMzQ0IxMTFGOEZDRTE4MDVCQjc1MDA1OTU4MjJFNUFEQUZCOUYwREQ2NDREOTMxN0IxNDZEQUY4RDU4QjdDOUE4MDI0OUE2Njk3NUFGREMwNkNCQkRGREJBNzQ4OEM5RkZCMTNDN0NGODFERjY4ODdBMjZERgorREI1NTg1MEEKK0I5QUY4NkIzM0JENjgwQkNEMkM4RTVEQUVEQkQKKzA4RURCQ0JDOTI2QjZBODYxMTlENTU1NDM0QzVCMzA2N0ZEMzU2OTQ3MDU1OTdCNjUwNjhERjRDNzcwQThGNDYyOUI2NkVEMzVEMUFGMDQ5RENGNURDQzJBMTUwM0EyNDQ4MzExNTI3NjhFMUIyNzExRTdBMDExMjAyRTlEQzM1NTJFMTY4OEIyMUMzMjkxREI3MTQ5NEU4MEFCNEQ2RDRDOThGQ0Q5MTRDRkVERjY3QjQxQTE2QkQwQzkyQkY2QzI2MTRDOTk1REQzM0I0RjA0MEVEMTEyNzVBMUVDMjg2NUNGRjJBNTkzNjA0OTMKK0QzMUUxMTE2Cis5ODI1ODA1RTk4MUExOEI3MDU3NjREMDAyMAorM0MyMUYxRDBDNTYzNUFCQzBCOEQ2OENGMEFEOUM1MjZDOThDNEQ1NjRFMDBEOUIxRTEwMEYzNDYxNTA4NjgwRkREQzI4NTRGQkUxQkMzMzNCNEI2NTc1NjEyMDAzNEY0NDkyRkJEOUNFNDEzODY3RjU4MjJGQTRDNjkxQgorMDE4OEFFNTUKKzkyNTVCNTU2MTU5NENGMjk4NURGRkQ1RUJFCitFRjgzRDY5NjZENEU1QjlCN0FGRjFBQkQ2MDk5RUI2ODBEQzNFQzZCN0YzNjJGRTRCRDc4Mjg0NzAyRTEyNEIxNzBCNUI2OENBNThCMEI1Mjc5Qzg1MEJGQUVEQkFFRUU1NjRCRDMwMjIwN0YwQjlGMDA0QjcwRTlCRTMwQTlEMDdFNTNFQkU3OTExREU2Q0E0OEVEMkIzQjIyMzI1MEExOENBMTZFN0EyMDk0NUZENUE0M0U5REQ5QUU2NDJBCis0ODg4NDE2NQorNDkxM0MzNDMxNEIxMkNGOUE3QzAyOUE3MUExQgorRjIxMzAxNjYyRkYwODFDRDkxNDA5MzE2ODk1NjU3QzJFQUJEMEYxOTc2OEIwMEM4QkU3MzI1N0FGRTMzN0E3ODI0QjlCMUVBMjczREMwODNBQjc2QTdFNDZEQTEyODc1ODc4NEE1RUVENEZBREE2MDU5MDE4NDM4RTAyQzZGRTFGNUZENzRCQTlENkZEOTkzMUYwNDQ2MUQ5OTZDN0RDQTIwRTkxNzEzN0JBMTI3NjZFQ0Q2MDM3MzMxNUJDMDM2MEFENTNENTY1Qzg1M0Q2N0Y3CitDNDIyMzA5RAorMEUzREE5MjQ4Q0U2RDBCRjUyMjNBQjkwRUU1NworQkMxNzE5MUVEREY5NENCMUVDNTQ4RDY2REU0RkZFMkI5RDlFQjdGNkJEMkZDMEEzMzgwNDVDQkU4QjZCQzMyN0Y3NzA0Mjc5N0U5MTMxODI2OUNDQ0NBQkM2MkFCNUI1OTVBQkMyNjA1QzM4ODk2QjZBRDI0NjEzMzU0OEMzNDc3MTcyNzJDNDc4NEE2NUY3RUNEQ0QxQzUwOTlBQzNBQkVENzI3QTRBODY3QjMzMTg0MzRDRTBBM0FGNjk4RDQzNUU3MDYxNjkKKzY1MzdFMjI0Cis5ODgzOThCNURGNzJEOEU0MTEwNjk4M0E3Q0ZECisxOUI5REI2NTBCRkQxMjI2REMyMjE3ODk5MUFFMEFCQjJBRTAzODkxNDkxMTI0RDExRkZFNDZBRjg3REY5QTc5NjA3NkQ4RTM1QTU1NDZFQzI3NkYxMjM0QjBDMzE3Mzc1NDgxRDEzNzVGQjExODE3OUM4MzM4NzM4MjY0MDQxOTVCQTBGNTc5RjEyMDc3QzY3RDExQjdBQUI3Qjc5RDc4OTlBNjlERTcwNjg0MUIyQjg5NzlCOUZFQjdDNDE3MzA3NTg0RUVEQjY0NEFDN0EwQTdCN0NFMjIzMjMzRTM2QkM4RTMwNEY2REE3MjgxOUJDNUE1QTBEQkQzRDEKK0YxMEUKK0NEN0EwM0YyCis1NEM4NzIyRjMwNTdCNDJBRUNDODk2QzlFNQorMEE4NUMxRTZCMDI1MzkwNTkwQTc1NDI2NzZDNDg3MkM3OTJBMTY1RUJFNzMwNTkzMzU4MDY5ODRBOTA2OTJCODlFNjg1RjUyMjZEQjZFRTYxQzlENzU5NTY4NTlBRDA2RjBGOENBNEE1M0Y1OTI5NDg0QUY1RDk5RjY1NDdBRTFBQTdENTAxODc0QjkxMzZDQUIKKzgzNUYzNUZECiswRDJFMUE1N0YyNzhCQ0JCRDFFNDIxMkJDQjExCis1MzQ1RDQzMzQ3NUMyRjg0OUE4OUIyQUZFNDZCMzI1QkVEQzY0MzJBODZCMzk2NURDM0NGODAyRTgzOEZBODEyNERDQUQwQ0UyODhDMTVGODZEOURCNDg0MEEwRURGNDlGMjY1RDY4NkM4NTJFMDExRUMyNDI3N0MxQUYwRTI1RjhGREZBRTBEMjkyREM4M0FCMDE4QjFDMTU0Nzg0NzczMzFDMDMyNDIxRDI1QjAzREJENjg2RTgwMDE1ODFBNkRCRUE4NUM5ODc4RjAzMworRjZGRTk3MDAKKzUwNkQwMDJFQUIxQzZDMjYxN0Q0NjJGRTVCMjQKKzkxNkZGRUU5QURBQjI5MzNFQTY5MjFDQTE1MkJERTE4QTZDNUMyOUJGNEM0MkNDQUE4NTEwQ0MxMzM2NkVGNUUwNUFGOENERTgyMUExODJGMEEzNTcwNjkxRkEwMUY3NEZGRTc2RjA1MjhERDMwOTY5REVCNjhCQjg2OTMxQTBBODBCMjQ3RTEyODUxOTI2NUM0MjZDOUI5RTQ2QjZERUVCQzQ4OEM5N0E1QUVGNUFEQjlCMzM3MkQyODRBQTkwNTM3REE2NzRBMjMyMDA1NkRDMjAxNkM0RUEyRjNFMTUzOTMxMDNDNTJBOUIzMThEOTUwRkU4QUZDNUNBMgorRkM4NworN0E3NDkzMTEyMUY2NENCMEZEQzVDMDU3NDg1REI5MTJCQjdCQTdDMjc2NjVCNEMyREJFMDYzNTgzNDdERTM1MDc0QUI1RgorMDc3RTRFREMKKzc4REEwMzcwMUUzQ0QzQzExRDE5NThCQzUxRTIKKzVGREVERTYwNTIwQjdFQzhBMzc5NzAyRUVBMDAyOTEzMzY0QTE3Rjg4NDNBRkM2NzIxNzJFNkRGMjUzOTk5ODIxREM4RTA0MkIzNzFGOUFFNTgyNjBBQTgxNENDMDIwRDlDMDA5OEQwNjdDNThFMjE4NUJBNTZGQUQwNTcwMTYwNzg3ODQyMEMzNTQzQTI2OEE1NTM1MTI4QkE3ODMzMjI2NkRBODFBNUE3QUIzQzI3OTEwNUI2MDlGRDVGNjU1NDA5RTI3NTY5MTlCNjE1RUJGQTM4OTI4NTU4RTJFOTU1QzRDRERBRkFGMDFGNjdCMzAzRjQ2MjMyREY5RAorMUVFMgorNUY3M0RFODQKK0Q5MThEM0ZFCis0Mjc0RkNENjIzRjJBNDczQTM1N0YxMjQ0QworNkI1RTQyMzgzNUQ1NDg2RjZFN0Q5QUNFQUQ2OTg4MTc2NjZBRTgwODdFNDAwMTMxRDQxMDQ3MzA1MTI4NDhGNUVEQkE1RkNCM0M5M0QzREYzQTEyNzI4ODBEOTFGREE3OTlEQjc5MDZFQ0ZBMUZCODVFQjU4M0M1RTExN0FENjJGRjVBNDAyMkRFQjEzQzI4RTQ4QjJGM0Y1ODQ0MDdDMTkwNjkKK0VGOURBMTdCCis3QkJFODkwMEMxMDZEMDg4MzNCOEU1RTJCQworRUY4MjgyQUMxMzdGQzY4RTA3RkQ1NTZGM0M0ODFCQkYwMUQwNjU0ODgwMERCRUFEMDkzQTVBOTQyRDJEMUNEOEIxRDhFNjk5OUY3OUYxOUUxRjY4REZCODk5REE0NjEwNzQ2RDhEQjhGM0E3NjQyQ0QwRkEyODlGMUU0MzA3QTYxMjg3QUQwRkIwQTQ0NTdDNDJCMDBFMUM4Nzc1QTlFNzlBQjJCODE3REVFOTg5QTAzMDM2M0E0OQorM0E2M0Y3RDMKK0E5REJGNkY5NEM2MTQ1RkJCRUM3QzY4MDc3CitBRUY1Qjk5NEMzQTJFQjVGNTYyQ0M1QTI2NTg3RUEyNTVFMEVCRDYwRDYwQUY5NDMwMTE2RDdDQjE3QzI5NTg0RDJCOTJGN0Y4NThCRDBGQkNBMjUyQTU0NjYzQTg4OTFCQjZEMDUyOThDQzU5OTQ4NTEyQkNGMjhEOTA1MUEwMjFBNTNDRUM1QjkwNDlGQjg0OENGQzcyMDk2OEEyRUFBRERBRTFERkZDRjMwREYxOTc3MjczRDc0ODYKK0Y2MzM2NjBDCis5MEFGNTczRTRFNzIwOEQ2RUM2RDI0MTJCRkI1Cis3ODNEQjNDMDVERDJCOTg0OTBBNkFFNkQ2ODcyNTYxOTNEM0EyRUQ2RDMzOEY5MDgxNTVFMEJDRUEwMzE3QUZCMTcwOEI1RUY0OUE0Q0VGODU2Njc3NkVCNkI3RThBN0NDQTlCMTBBRjZFNzY2NkJDMDA1MTFEMUNCMTJDRDRDMjlCNTc2OUU2MjRDRjc0RUNFQTUyRTEyNjA2RUE5RUJGODQzQzUyOTM5QTY2M0M1NDZGREVGQzQzN0IzOERBN0EzQUQ0MDg0RDVCMkE2MDYyQjdFRjRDQ0UzRkRERkY3Rjk0ODk2N0VFNTY3MkFCQzlERTA3NzA5NzlGNkQKK0FFOEIKKzI0RjVCRkNDMkQ3MzZFNEMzMUVEOTYxNjQ0MkU0N0UwQUExQzhGNUVENjU2NzVEMDIwMDlCQ0NERUNFOTY5NjgxNTk1RTY1MjRGCitGOEIzQkE1QworMzM1QjU3NDEyQTc3RDhCN0E5RjY2NkU3RDBFNAorRUE3NTU2QTk4QTg5Q0E5OUQxQUE5OTZFMTBGRkUzNTRFQkZFMzczNjVFNzE4OEMxNzlGRDA0QzkwRTlFRTA5Q0U5MEQ4RjVCMjRERjE4NDZERkExNjhGMzlFRkI4MTVGMUY4QTYyNjQ5QjFDMTcxNDVDMjlFMTVFQ0QyN0FBMTFGQjU0MTg5QkREQzY5ODQ4Q0Y0RjM5NEFCMUFBNDlFRUE4QkMzNzZEM0MzNjNEN0ZFQjU0N0Q5QjA3RThFQUQxQzE4MDE1RTBFRUUxMDk1NgorMkU5QTcwNzYKKzYyOEFGRjhCMzg4RkVDRUMzNkJCMDc2NzlFCitCMkFCREU4OUYzRkE3NzhBQ0RDREY2QzU1NjgwQjQxODY3NUZGRUY3MzcyMzkyRjVGMTk2Q0VBQzhFMERDQkI0MDQ2MDk5QjRFRTEyQTJFMkI1ODgyRDYxNUNCN0YzOUMxQTVDNzNBRAorMUFEMzRFQTkKK0FCQ0ZEMUI4NzVGODNEQTA5OTQwRjIzMjhDNTgKK0RDM0EyRTI3RTQxN0U2REMzRDdGMzFCMjNBNzZEMDMxNDdGRUY5NDJFODE3QkVCRDkzODIzNjg1MjQ1Mzg4MjQwNTgwNUYzNTVDODgxMTUwQjY4NEM2Rjc2NjA5REFCNEYxRDQzMDc1RjM4RTJCRDMwQzU5NzY5NTkwM0YzMEI5Qjg3MjE3ODQxMTgwMUU3MEUzNUUyRUFDQzI3RjZCNjg4N0YyMTlGRTUxQjlBQTgyQkIxNjQ3QTUxOTk3RjE0MkY5NUNEQjkyQTBFNjZGREU2NkVCNzY4RTFFMkEyQjgwQ0Q2MjIxMDVBQkVENkMzRERCOTE0MzkyODk3QQorRkFEOAorMjhCRTRDNUI1NjdEODQzNUU0QURGOEVDOTgxNjIxN0U2NEIyRTA1MzUxMTQ3N0U2NzBEM0U5QzAKK0ZCRkZEQTdDCitBNjAzMzUwOEIxMjIwNzVERjA0N0M3ODgyQzg0CiszMEY5NTMwQUU0Q0JCQTY1QjlFM0JCMzhFN0FCMDVGQzVBN0FCNkZCRUREQjY0NEI1QTA1REM0OUYxRDIxMTBGMDEyQjRCOTdCODk0MDcwRDUyNjhENzNDRUZCQjk1QTkxOUVDMzM3OEFBRTc4OTY1RjZEOTNBRDM3OTQ4MjlEQTQ5MkE2NkRDMzEyQ0U0NENBRDQ5MEIyRUU2NDY4MzcyQzI3NzVCRUVFRTAzN0I2NUQ3QzAzRDhDRkQwNjA4ODdEMTkyRDgwMTdGMkNGRgorRTE5MkJGNzkKKzg2NzRCOUU5QTU0RTQ0M0ZENTRFODRDNjVBCitGOEU3M0ZEMzQ3NjBDRTZBNUM1MjlCNUMwNzdDRjlBNkEzNUY3RDhGRkFCQkYzRTQ2Q0QyMDIyRTNDMjlDRDAxQTNCNTgzN0M2MENBQTZGNUM0MzdFQkY5OTMwODQ1NkZENEVGN0E3QjU0MEEwQzFDMDA4QjRBMjU5RTMzMDI5MzQ1REFFQUY3NUIwQQorMEFGQ0QyRjcKKzQ3OENFRDM0NzhFQUQ1NTUwNjVGOTgyOTM3NkEKK0I4NjdGNDNCODE1QzVERUM4M0YwNjQyMzkyRjNEQkUwRkE3NERDRjEwOTE1RDI2ODdBQkZFNTY1QUM0OTExMzBBMDk1MTM3MDg4NTQ2REJGNUI4QTQ1QkUxNzUwQzg4MjQ3NDM0MzlBQjJBQUIwQzk5OTIzMkZGRTQ1QTM2N0I3OTJGMEVDMTA4QkUxQTBCRkNCM0IyRTYxNzBEMUE0RkNFRDY2MkZDMzkwRTVCMUE0MkI2RjAyNjlGQjA4NUNCMTU5MjgxRjAyRjhGOUEwQTEwODlCOTVFNzdFRDA4Mzg4NTgKK0QxQzc0MjExCitCNjJDOTE1MjVDOUE1OUQ5OUEyOUIwMjc1QQorRjQyMkVCNTREQkYxN0YwMTQ4Qjc2NzY2MjI5MTdCOTlCMzM2RkVDMkI2MjNFQzMxRjJFRDczQTNGMTQ5ODA4NENDQTFFNTY0MEU0MUZFNjhBOENGOURBRDFBNUYwRDhGRDMzNDc0NjYzNzRGOEVCQjU0OTk5MUE2NTNFMUMzN0E5RDMzOTY1N0IxNEM5NjM5QTc1RkY0NkNBMTcxMEQ0MERFNEQxMjc3MUVENzBGREVCNQorNDQzNTFGRUUKKzNGODE1ODI0QzFENkI5MkI0Nzk4OUFFOTUyM0EKK0E2REJCQjUyQTJBMzc5RkQzRjdDQTk4MDJFQjUxRDQ3QkE0MDYyQzlCMkJFRUMwMUE1MjZENTk1NEY0QUZCODRDRDYzOTVCOTlBMDQ3OTA5RENFOUIzMTgxNDVFRUUyQ0QyQkRBQkJBNzY2NTU4MzJFMDFEMUU2RURFNkVFOTE5ODUwMkM4QjgxQkVDMTA0QzlBNDcxMjc1OTQ5NkM4MTY3QjIzQTM3RjhGRTVCNjVDNkY5OEIwNEFCQTQ1MDM5MDg5QzU5QUQxM0JDQ0RFMkFFREExODM5NERDRTAzNEUwMDhEQ0M2NjBDMjZGNjkyQzlCCis0NEJGRUU4MworRTZGOEJBMjZFREU1NzFFRjdFMzgxMUZFMUYKKzAwRDYyMjFBOURGQUY5QzhCMjgxNzI2OEVCMTEwODY0NTI5RkE1M0Y4Q0Y3Q0JGQkFEOUVDQjBEMzk0ODRDMUUwMEQ0RjMwNTAwMkY5RTQ0RTI1NzlGNzhCNzNGQTgzMzBEOEExODg1RjQ4NDk1MkM1MDE0RDZCQkEyQzRGRkExNTM3MERCQUMKKzM4NkQ2MkQwCisxRDE1REI0OTJBMDYyQTFBQTBDOTVGNkQ3QzVBCitERjY5MUQ0QzY2NzQ5OTYyQTQ3ODA4RDM4NzgzNjU1QTdCNEU2RTA5RDk4REFFMDAxMkE1QzE0MUQ2REQxNzcxRDA3RkQ3MUE3QzRFOEI4OTVDQjQ0Q0VCRTVENzg0QjMyRDExN0JGMDhDNUQ2RDE0Q0YzMzZBREQ5OTNCRkFDNTBBQkY0MUU1MEIyMTQ4QTQ0RDBDNkE0QzkwQ0YyNDU0NUNBRDA5Q0Y2QjcxOUQxRDQ0NTM4RTA4MDFBRkVDQTNDM0MyM0ZDRjA0RkQ5MThGNjQyODIyN0MzNzgzM0U0NEM0OEMxRjU0MDRGREUyMEVENUFDN0ZERkUwOTIKKzBFNkMKK0FFNUI3M0Y4QzAyRDU5M0I2MTkzQTkKK0IzQ0IwODlDCis4RTE4QzFBQjQ4NUMyNDdCQTM0MTEzRURCOUVDCis1MTFEMjI1OTAxMEFFNkVBNEIzMDE4QjFGRDY3MkFCMkREMTdGNTE5NEIyODc2NjVEOTg4NzY5QzUzMTBBQkQ5NjhDNjEzNjUyNTczNjlCQThFOTI3QjdCRDM2QzJCMjU3QTRBQTFDREJEN0JCNTBBQ0IzRTdERUMyMzU3Q0FCRkU2NEYwNjU1RERGMjBCRURBMkYxRUE1N0E1RTk5MEZEODY5NzdGOTNGM0Y5MTQyQjg0N0JBMDQyQjdBODY1OUI1NEIzNkJBNUQ1N0NERjAwRkJCRDYyRjUyQUZCNkQ1MTM1RERBNTlDMDRCMTUxNjVCQkIzRTQzNDYxRTMKKzM3MkEKKzlBCiszQkNGOUMxNgorRjRGNDRGM0QzQkI4QjAxQThEMzQ4MjI0RDUwQgorMTExOTkwRDE3NDk3ODg1RAorMUVCQjA0NUYKK0MzMTUyMjU4Q0RCNUY2QzYwNDg1OEI0QTE3RUM5NkRBN0Y0MzZCMDBFQzAxNkJFQjA0NjM4MjFFQTAwRjU5NTkxMDVFCis1QTQyNkM3ODYwMjYyQjc2RTRDQTUzMDc0RTg0RDUyODY2Q0NFQUQ0NjlBRDNCNkYwMkVGQUIxRTMwQjdBNTY4NUZBNjgzRjhEOEI3Cis2OEUwRjE5NzJCQjgxOUY3MTEyRjAzOTZFQjhFRjJCQkQwNUZFOEYxOURBRDJDNDgxNUVERUYKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTUgcHV0CitkdXAgMiAvQzAwOTcgcHV0CitkdXAgMyAvQzAwOTkgcHV0CitkdXAgNCAvQzAxMDAgcHV0CitkdXAgNSAvQzAxMDEgcHV0CitkdXAgNiAvQzAxMDQgcHV0CitkdXAgNyAvQzAxMDUgcHV0CitkdXAgOCAvQzAxMDkgcHV0CitkdXAgOSAvQzAxMTAgcHV0CitkdXAgMTAgL0MwMTExIHB1dAorZHVwIDExIC9DMDExMiBwdXQKK2R1cCAxMiAvQzAxMTQgcHV0CitkdXAgMTMgL0MwMTE1IHB1dAorZHVwIDE0IC9DMDExNiBwdXQKK2R1cCAxNSAvQzAxMTcgcHV0CitkdXAgMTYgL0MwMTE4IHB1dAorZHVwIDE3IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTQ0IC0yMzYgNzU3IDcyM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI1RDg5NUM3OTk0NjlERUU0NEJERkVFQjM4RTJEMzg5RkY4MAorREZDQzFCMDc0NENGQ0EzMDBBRjJBMDgwNUMKKzlCMTQwRDhDNkJFNUY3QkU5OTdGRkMxOEI1RDhFNzRFQjlCMkU5RTgxMDk5CiszQzc2QUI4NworQzEzNkEyNjlDNzcyQTQ0NzI3RTFEMEMwRjdEOAorNDE2NzMwQUZDMTRCODdDQjE1NkFDRTU2NUVBMzIyREM3RkNCRjBCREMzNTdCMzk2QzYzNEZDRDYwRjgyRUI2RTEwMjI3Mzg5RDAyRjA4Q0UwMDA4QTgyRTZBQkU3MzFCQUVENDA5MjVCMUM3NTJFQzVCRDY5OEYzMDk3NUY0NDFFRjc4RjM2QUZBREM0RTJEQjNEQjMxQjlFM0I4QjUwOTY4REFCRjUwMkUyMzJCMkFERDA2REVDQUJDRDU1RkZDOTVDQUI0MDE2NkEwNzU3RjZDQTJDRUM1QTU0NDVFMDMzRDAxOUZBQ0NFNzdENjk4RjU2M0MyQUVFRDBFCitCQUIwCitGMkQ2MzY2OTUzNjBGMUVFMEZCOUU0OTVCMgorMTg0NDM3QzcKK0M5RERERjdEMzI3RUUzRkUwRTZFMEI1MjhDCitDMTIxQ0VEMTRBN0IxOTY2OTAyMDEwMUFFQjVFOUZENUMxNjZFRUMzNDQ1MTdGM0Q4NkFCNkNGMEI0N0E3RDlBNTlDMzZBQjFCMkU3NTQ3RjJEN0EzMTkzQ0VEN0I5OUFBQUFENjJBQzY3NzlBNDRBQ0U3RDdBREU5RTgyQzBCNkU5RTZEMTQ0MzE1QkM0OTMzMzQzMDI2NTgwQ0I1ODdCNTMyMEE0MEYzMEFFQkNDNzVCMEM4QkZGNzhDRkE0RTEKK0NDQTJCQjFECiszOTVCNUIxRDhCRjdDNjA3RjFBOUI4Qzc4RTlFCitDRkREREU3RjM3MjkzNjI1MTk5QUZBNzE2QjQ2MUU0NEFENTQ0NEVBMjQyOENGRjQwRTgzMTU2Mjc2MTI0MEY0QzYxNEJERTExRTE1QjgyMzVDRTJGQUMwRTMwRDRFMjYyMDA1QTJERERBOTQ1RUUzNjFDRDY2NDk2NUI3QUY1QzRGRkEyQUY0NzBGMTM0N0I2NzQzQzJCQkZCNEMxOTk2RjRCM0RDNUExNTI1QjJGOUE2Mjc2OUFEMUVCNjIzMjNDQUM2QjVDQkFDODE3MkUxMDFEOEYwMzU3QkQ1NUFGQjQwODNEMDg3MUMwNjk2QTU4N0RBNUNGQjA3QkEKKzREQTkKK0JGMDA0QUQ1NEVCNDNEODNGQTRFRDA3QjIyN0NERjEzNzlBNEE2MEE3OTU2MzgzNzU3RDBCMDRENUZDODdEQzA5RUQ3NEE2RTg0QTQ0MkVBOERGMzg4OTQxOUVFMENFMgorRUY1RUYzMTYKK0Y3MURERDk4MDNBQTkyRDY1MDMyQ0FGRDg2NkQKKzAwQUQ4RjVFRjJGNDkzODJGRDhGNTdGMjA5OUQ1NDZENzEwQjI3QzlCRjA4N0QyRDJBNDE3Njk4QjEzNDc4RDBCMTFCRDE5QUExQTEyQzI4NzBDMjRBQkRDRTlBNTQwQTE5NjhCMzUzMTI0QUE0RUM5MUZDNkM3QUZFRTg1OUFFQTVERTlDRkFCNEQ1RjBDMTYwRDZDRUJBRTFBRDkxRjVEOEFBNDI0NDk1QUQ4ODMyODk3RkFEQkUxOEY2RDA2OEEzQTQzNTU0MjEKK0Q4QkI2NzkwCiszREI3NjdEODE0NjRGODBBOTY3NjhGODA3NjRECis5NEZFOEE3NDE3QTA2MkE0NENFQUMxNTZDNEVCRUM4RTJCMDI3OTA0OUFGRkJCQjJCOTI1RjkzQjM3MjRBNjAzNEM1NERCMkE2Mjc4Q0E3QTE3MzQ1ODhBQzgzREYyQ0Q1NjhEOUIzNjFDNkM2MEE3REIxMUUxNUE5MDdGODIzRTIxMDA4NjEyMDREQzBDMzYzMkMzNDczQ0NBODBBOEQ3OEFDMEY3MkEwMDVCN0UwMjBENDY4RkM5OUIwRDY5MjhDREU2RkI0NTlCNDQ4OTI3NEI5OEM5RTg4MkM5MzM5RkNDMTdFMjAzQjU2NTFFNERFMjRDQTMyQTJCM0UKKzU3NTMKKzIxMzY3QzJGMjQzNDg4NjZDODM0MEU5MzE2ODE4OUU0RURERTFCMTM4MUFFMzExRkRDM0M3NQorOTMzMDE0QzEKK0VENTcwNzE3NUNDNzM4NEY1RDVBRjQ2QjA3N0YKKzAwQTAyN0ZGQ0VDQzEzRTY3NDc3N0FDQjY3OEYyRjYzODIyMjY0MDY1RjVFNUMwMEJGM0YxNjA4NEJBMTgxMjc0NTEwQzAwRTEyMkI4MEVEMjk1OTAzRDg4OTgyMzI1MUE3QkE1QkM3ODZBRUJCRDZBRTQ0QTNCN0U1MjAzNzgyMTkwODk5N0EwMzZEMDlDMUE4ODhEMkQ5RkFGQzhBNTg4MUIyMDMzMTlBRDRDRjE3MTdGNTlGOUIwQjcxRDRDNkYxNjQ2NURDODE4MTVDODg4N0NDNjZCNTUzMEQ1NzYzRjgyRkRFMzgxMDBDOTZEMzIxCis3OTE0NDdENworNzhEN0M4NTc1RDQzMjRDNzFGRjY4QzVCNjkwRQorREYwMEYzRkU0NTFEMkYzMTc1N0JDOEY2QzM1NUVDMkY5M0Q3QUFBQTU0MjUzMTgyN0FDNjA5RjBGRjJCQTNBNDEyNENEQ0NEMjYzRDEyRUI5Q0U1QkNGN0E2ODY5NkZGNzY0RUU2M0RGRTdBNzJFQTU2NUY3OTVGMjkxQjFGOTQwRTI3Mzc5ODMyQTAwNTc5NzI5NTE2NTE1NDYxNTVGQjQ4RjI3OTdBMzBCQkRCRTZGRjZGNTQ5QkRFQzIyRUQ0MEVBMzkxMDJDRkU5MERDM0FFM0IzRjI1MDZGNTBEQTM5MDA0Qzc3MEZFQjVBOEJEOTFENjRDRjI2MUNCCis3QzQ3Cis2MkRBRUIyOUM1NjBGRDgyRkVDNTE1QkU5ODY0OEEzMTRFMzAwQUVCQjVBMjI5MThBNzczRDg3MzA0RTg0MkZGRjA0MUQ5NkNGODU2NTg1NDc3RjUxRTVDMTZDNEE3RTg3RkUwQjBBMThBRTUyMTQ2QjBBQzA2MkI3MzIzRTlGQjVGQjc1MkFGMjJFNUJGQTU0NTQ2NEIKKzhFNjVERTUyCitGQzQ1OTAxOEJEREEzQ0JENzU5MDNDMjM1QTU5CitCQzE5MUI4NENCNTY2QjBDMDAwNzFFQzAyQUM2NDBGOEYzNDY2NTQ5QjE3QzNDQ0JBMzRFRjhBNkM0RDY1RDE3Njg4Qzc5NUVCNzEzMzY0MUE1RDk5ODhCRjQ0MjY3MEFCQkU3N0Q0RDJGOTJBQTAzMDMzQTREQ0RBMzFBQ0FBNEU5MTJERTcwMEE0RkMwODcyOTEzREYzREQ5RDc5OEY1MTEyRDg4MDg3NjQxMDk2M0Q1NzcxMEI3NkQxNEFGNEEzQUM5NzlFRjAyMjBCQUE1NDhBQzI2MDMwODc1MTAxQTJENTQ0ODQ3QjA0MkVGRjk5MDNEQTY5OEY1RTIKKzcwNEYKKzUwQTVEN0IxMjc0MDY5MzhDNzI5RTM1RENBODY1RUNEMEYxRDgyNDk5NzUxREM5MjNGCis2RUMxRkE5NAorODEyMjRCNTk0RDMxODBBRDAxNjEwOTJEQjgKK0M1QkZEMzlFNzdCMEE3NUMxMkFEQTA5NjIwNkY0MzQ2RTYwMzYwNkZCRDlDMkZDMDBGQUZFQkNCQ0JFQzNBRkMyQUVENkVCNzE5QUM3QzlDMDhGRjBCRDJERDFENjg1RURDQTYwQTI3RUY4MzRFNTYyNDFFODUwQUIyNjBBNjU5MUYwQTc4NzY3RkQ5NzQyMkM0RDc1MjQ2QzYxMTNGRURFQjZENjhGMEQ2Qzk0NzlCQTlCQzRGODc0MDgyMzQKKzUzRjBDQ0JCCis3RjYyMkYzNDg0OTM0NzZDQkVBMzVGNDg5NEE3Cis4QkM3RENFNUM5QTE5ODk0RjZGNjc2RUUyOEUwQTJGMDI5MzFGRDNFMzc5ODhFQUQyM0E4ODMzMjUwNDlDRTE3Q0Q3OTUwRjk5MjA2Mzc1MTFCNzkwMjZBNTYyRDJBQjk2RjBBMjYwMUU0NkRBNzc4QzAzQkIwMjFBQjU5REQyODgxNzZEODI3NUEyNjRFNDlDODBCNzMxMURFNUUwNzU1REVENTNBQTQ3MkQ0NDM1MEQ4NjY3MjdENTQ3RTdBMzA2QzVDQTVDRTVEODg2RDZERDg5REZFNjA2N0Y5MTk0REZENkJFRTU1NDlDNEJGMTZEMTEwMjdCQzAzMzAKKzZCNEEKKzUxRjcwOTlFRjVGOUIxMDY3N0M5MjM2OUY0RTE3QTYzQkY0NTc4M0UyN0U3RTJDQTk2RjFEN0RFMDQ3MjNBREI1NTc2OUMxOEVBQjNBNEE4NzI5QQorRkVEM0QzMDUKK0I2NTJBNkM1NDlGQ0YxMzIyRjhFNTFGNjdBCisxNEI1QjJDNjhCOTgwRTQzNjA4QzUzQjM4NUM1RDg5NjZDNEY3REQ1QkM3QkNGNEM4OUVEQUE3NjUyNzg3NTgyNkM3REIwRUVFNUMxM0EyNzIyNjlFRjk4ODVFNTkzRUMyRUY1MjZFREQxODJFMUNGNDY0MEJEODFCRDk3RjAxRjY1RDk0QUNGMDFBRTE0NkZFN0ZCRkJFMjdDNTczQUREM0UwMTgzRTRGRUJCQ0QwQzkwNjY2RgorNDhBMjZDQ0YKK0E0NDVCNjE2MzExRDRBQjQ2Q0I2Q0VCREJDMEMKKzk5MTM4QTUwODQ3RkJCMzc5RDY5NDkzMjE0NkQyNTIwNzdDRjY2OEQ1RUREMTA5NzdGQkFDNDM2NTFDMDBBODQxNDhEMjJDNDk3QzNDNTI2RUU2QURDNTU4NjFBNTg4Q0RCRTY1RTEwN0QxRjE2NzEzRTAzREIwQTEzMTgwODJENkYxOEFBQUM0ODI0QUM4RDhCRkFCRDIyNUVBMUZENUZDQ0E0RTI0QkIzOENCMkY0NjZDMzAzQjA3NzFCMUEyOTMxNjg2Rjc1MjZBMDQxQUZEODRCRDU3OUZFODdBQzI1RDgyRUNCOUMyMTYxCitCMUYyMDYxMQorMjczMjFCQjE1OTRGNDdDMjIwQTQzNjJBODkKK0U0NkY3REM5OUU3QjMxNEZEQTY5RkM0NkVBQzAyRUFCNjI0NkM1QjQ1ODk2NkE3NjVFNTM1ODc2NDg4QUEyRjY5MkI1NzM3ODcwNjE3MTZGNUFFQ0FFOEUxODcyNjVBQjIwNzQzQTNGNTkxNTI1RUEwMUUwNDVEOTdEMjhCMTRCNjREQkE0ODAzODA1ODU4REM5QTFEMzNEMzYwOUIxMzI4NUI2MDVBQ0E1MTcyNAorOTM1QjI2MkEKKzJCOUIxNjQ4OTU0QUJFRTI0RDdENjQ1MUE3OUYKKzQwNDFCQUYyNEFEQUExRTNENUZCMTY3QjAwQUE1NUNDQTYzQzNDRUU3MTYxMkVFNkRDMDQ4RTVENjU3NjYxMjdCRTUyNkYzNkY2RTJEMEIxRDcyQURBQTQ0MDM5OUZBMDRCRDdCNDMxMEVBOTI0RkFEQkI2NTg2NjhEQkZFODU0RDZGMjQ0OTQ3ODkxRTczM0JEQkU0NTBEMkYzRDk2NDNGNEVGM0E0Rjg2OTRDNUU5RkExMTlFRjdERTQ5ODA1OTQxODk3RTRBOTlFRUJGNjFBOTVCQTlDQUUzMEI1NkNBMzc2NzJBMjk2Q0I5Qjg0OTIxMDQ2RTM5OUMyQworNkM4MworQjhFRTRDQkNDNTg4MTU2OEJBNUYwMUM4QUE5NEYwNEZEMkJDRDNGQjUyMkMxQQorMjdBNEZGRUMKKzFGRjU1RkY3MDVCM0NCQTZBMjlCOUY0OUI0CitCNjA1QTZCQjIyMDQxRjZBMUQ1REQyRTkxMjcxQjdENjJBNTJCRDBBNTJGNEJGMEM4ODM0OTIwNjg5NTIyRjJFOEMxREMxN0U0MjI3ODNCMjZDMzQ1REFDRjE0ODFGNzlDOTE1QzIxNDU0N0EyODAzOEZGNTQxNzY1N0VBNDVDQzM5QjA4NjFGQkIyRjY5OEE3OUI3NTY5RkFGRDBEQzVFNTNEMDk0NkM3ODUyOTEyQzFBNkIKK0Q0QjJERkE0CitDN0E3NjI4NDhFRTM0NjM0MkE4OTdFMjREMgorODk3RDg0OUE4MTU1OTQ5MkIxQjlGNDA1M0EwNzVBQTEwQTM3QTlEQzlCQkFEREE0Cis1RkRFM0IxRQorRjk0QkQzMTM4QjgxNjAxNDZBNjRFNEJDM0VGNAorRjI2NjMwRTAzODA2NUExNworRjYwQjU2NTIKKzI5QkMxN0QzQTQyMDJDMkZERENEODY1NUI0Rjk0RDMzQTg1RkU2NjY3NTNFMkE1RENGRTkzMTJBQjAyMkY5QzczRDc0CitDNzk2OTc4NDY4QTFCQTg0NUUyQTJEREFDQUMwNUQ5NEVFRUUzRERENDc2RDdCODJGMTQyOTk5MDdFQTk0Nzg0RDdDNkYyRjIwMDdBCitEMzQ5NUVEMUNDQUZDMjA5ODEyQURCOTZDMEZEMDg5QjU1NTlGMDcwOTU0Q0YwQzE1RUNBMDEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmkgMTIuMDAgL1BTT3dzdGR1dGNoaSBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxYjJiMzkzNTJiMzcyYzBmMDExMDAxMTEyYjMzMjkyZTMyMjczNzMwMDEyYzM0MzcwMTFhMmIyNzM4M2EzNzJmMzMyZDAxMWIyYjM5M2MzNDM3MzAwMTFkPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDJiMzcyYzM0MzczMjI3MzMyOTJiPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwYzBiPiA5MzQ2IDEzMzAwIDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjgwIDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyODAgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI4MCAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyODAgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDEyYiBTRgorPDEwMGUwOT4gMTI3MSAxNDMxIDAgMTYzNiAtMSBzCis8MDAwZTA1MGMwMDBkMWUxYzEzMTExODAwMGM+IDE2MzYgMTQzMSAzIDMwMDYgMCBzCis8MTMxYzE0MWExYzE4MTExOTEyMTM+IDI5OTggMTQzMSAwIDQwNDAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyMDJlMmI+IDEyNzEgMTc5NyAwIDE2MzEgLTEgcworPDAwMjQyMDE4MDAyMDEyMWQwMDM4MzkzNzJiMjczMjAwMzUyYjM3MmMzNDM3MzIyNzMzMjkyYjAwMzkyYjM4MzkwMDM2M2EyZjM5MmIwMDM4MmYzMjJmMzEyNzM3MDAzOTM0PiAxNjMxIDE3OTcgOCA2MDk5IDAgcworPDAwMzkyZTJiMDAyMDEyMWQyNjFmMjAxZTE0MTAxYTAwMzkyYjM4MzkwOTAwMjQyMDE4MDAzNzJiMzYzYTJmMzcyYjM4PiA2MDk5IDE3OTcgNSA5NTMxIDAgcworPDI3PiAxMjcxIDIwNDIgMCAxMzc2IC0xIHMKKzwwMDJhMmIzYjJmMjkyYjAwMmMyZjMxMmIwMDI4MmIwMDM0MzUyYjMzMmIyYTAwMDgwMDI3MzgwMDM5MmUyYjAwMmEyYjNiMmYyOTJiMDAyYzJmMzEyYjAwMmYzODAwMzUzMTI3MjkyYjJhMDAyZjMzMDAyYTJmMmMyYzJiMzcyYjMzMzkwMDMxMzQyOTI3MzkyZjM0MzMzODAwMzQzMzAwMmEyZjJjMmMyYjM3MmIzMzM5MDAzODNlMzgzOTJiMzIzODA3PiAxMzc2IDIwNDIgMTcgOTUzMSAwIHMKKzwyZjM5PiAxMjcxIDIyODcgMCAxMzk4IC0xIHMKKzwwMDJkMmIzMzJiMzcyNzMxMzEzZTAwMzIzYTM4MzkwMDI4MmIwMDM4MzUyYjI5MmYyYzJmMmIyYTA5MDAyMDJlMmIwMDM4MmYzMjM1MzEyYjM4MzkwMDI0MjAxODAwMjAxMjFkMDAzODM5MzcyYjI3MzIwMDM5MmIzODM5MDAzNDMzMDAxNzFkMDgyMTI0MDAyZjM4MDAzNTJiMzcyYzM0MzczMjJiMmE+IDEzOTggMjI4NyAxNCA5NTMxIDAgcworPDI4M2U+IDEyNzEgMjUzMiAwIDE0NzkgLTEgcworPDAwMmIzMzM5MmIzNzJmMzMyZDAwMzkyZTJiMDAyOTM0MzIzMjI3MzMyYTBmPiAxNDc5IDI1MzIgMyAzNjMzIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDMxYTFiMWUwMzE5MTMxZTFiMTMxYzE0MDMxOTEzMWUxYjEzMWMxNDAwMDIwODAwPiAxMzk4IDI4NDUgMiAzNjI2IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNTA4MGEwZTA1MDYwYTBkMGU+IDM2MjYgMjg0NSAwIDQ1ODUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMD4gNDU4NSAyODQ1IDEgNDYzOCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAyMWU+IDQ2MzggMjg0NSAwIDQ4ODcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDI0MjAxODI2MjAxMjFkMjYxZjIwMWUxNDEwMWEwMD4gNDg4NyAyODQ1IDIgNjkzNSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAyMDIwMDAyMTA+IDY5MzUgMjg0NSAxIDc2NjggMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMGEyYTJiM2IwYTJmMzMyYjM5MjYyOTM0MzkzOD4gNzY2OCAyODQ1IDEgODk2NyAwIHMKKzwzYzJlMmYyOTJlPiAxMjcxIDMxNTkgMCAxNzk3IC0xIHMKKzwwMDNjMmYzMTMxMDAzNTJiMzcyYzM0MzczMjAwMjcwMDBjMGIwMDM4MmIyOTM0MzMyYTAwMzkyYjM4MzkwMDI4MmIzOTNjMmIyYjMzMDAzOTJlMmIwMDMxMzQyOTI3MzEwMDM4M2UzODM5MmIzMjAwMjczMzJhMDAzOTJlMmIwMDM4M2UzODM5MmIzMjAwMmYyYTJiMzMzOTJmMmMyZjJiMmEwMDI4M2UwMD4gMTc5NyAzMTU5IDE2IDkwMTQgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYzA1MDgwYT4gOTAxNCAzMTU5IDAgOTQ2MSAtMSBzCis8MTE+IDk0NjEgMzE1OSAwIDk1MzEgLTEgcworPDBlMDUwNjBhMGQwZT4gMTI3MSAzNDA0IDAgMTc4MyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA5PiAxNzgzIDM0MDQgMCAxODM2IC0xIHMKKzwwMDIwMmUyYjAwMzgzNDI5MzAyYjM5MDAyODNhMmMyYzJiMzczODAwMzQzMzAwMmIyZjM5MmUyYjM3MDAyYjMzMmEwMDNjMmYzMTMxMDAyODJiMDAzODJmM2YyYjJhMDAyNzI5MjkzNDM3MmEyZjMzMmQwMDM5MzQwMDM5MmUyYjAwMzgzZTM4MzkyYjMyMzgwNDAwMmEyYjJjMjczYTMxMzkwMDI3MzMyYTAwMjczMTMxPiAxODM2IDM0MDQgMTYgOTUzMSAwIHMKKzwyMDEyMWQ+IDEyNzEgMzY0OSAwIDE2ODggLTEgcworPDAwMzQzNTM5MmYzNDMzMzgwMDA1MmIwOTJkMDkwMDIwMTIxZDI2MWIxYzEzMTQxOTEwPiAxNjg4IDM2NDkgMyA0MzkwIDAgcworPDI1MDYwMDNjMmYzMTMxMDAyODJiMDAyNzM5MDAzOTJlMmIyZjM3MDAyYTJiMmMyNzNhMzEzOTAwMzgyYjM5MzkyZjMzMmQzODA5PiA0MzY3IDM2NDkgNiA3NDQwIDAgcworPDIwMmUyYj4gMTI3MSAzOTYzIDAgMTYzMSAtMSBzCis8MDAzOTJiMzgzOTAwMzUyNzM3MjczMjJiMzkyYjM3MzgwMDJjMzQzNzAwMjczMzAwMjQyMDE4MjYyMDEyMWQyNjFmMjAxZTE0MTAxYTAwMzkyYjM4MzkwMDI3MzcyYjAwMzkyZTJiMDAzODI3MzIyYjAwMjczODAwMmMzNDM3MDAyNzAwMjAxMjFkMjYxZjIwMWUxNDEwMWE+IDE2MzEgMzk2MyAxMyA5MTc4IDAgcworPDAwMzkyYjM4Mzk+IDkxNzggMzk2MyAxIDk1MzEgMCBzCis8M2MyZjM5MmU+IDEyNzEgNDIwOCAwIDE2NTcgLTEgcworPDAwMzkyZTJiMDAyNzJhMmEyZjM5MmYzNDMzMDAzNDJjMGY+IDE2NTcgNDIwOCAzIDMxMDQgMCBzCis8MDgyND4gMTU4OSA0NTIyIDAgMTkyOSAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwNDA1MTAwZDBiMDUwMz4gMjAzMyA0NTIyIDAgMjcwMCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM4MmIzOTAwMzkyZTJiMDAzMTM0MjkyNzMxMGEzNzJiMzIzNDM5MmIwMDI0MjAxODAwMmEyYjNiMmYyOTJiMDAyYzJmMzEyYjAwMzMyNzMyMmIwMDJjMzczNDMyMDAwMD4gMzE3NyA0NTIyIDkgNzUyNSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA0MDUxMDBkMGIwNTAzPiA3NTI1IDQ1MjIgMCA4MTkyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDk+IDgxOTIgNDUyMiAwIDgyNDUgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MGYwNjBjMDAwZDFlMWMxMzExMTgwMDBjPiAxMjcxIDQ5MzAgMiAyNjE3IDAgcworPDEzMWMxNDFhMWMxODExMTkxMjEzPiAyNjA5IDQ5MzAgMCAzNjUxIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTA+IDEyNzEgNTI5NiAwIDE0MzQgLTEgcworPDAwMjExMzFkMDAzODM5MzcyYjI3MzIwMDM1MmIzNzJjMzQzNzMyMjczMzI5MmIwMDM5MmIzODM5MDAyZjM4MDAzYjJiMzczZTAwMzgyZjMyMmYzMTI3MzcwMDM5MzQwMDI3MDAyMDEyMWQwMDM4MzkzNzJiMjczMjAwMzkyYjM4MzkwOTAwMWMzMzJiMDAyYTJmMmMyYzJiMzcyYjMzMjkyYjAwMmYzODAwMzkyZTI3Mzk+IDE0MzQgNTI5NiAxNiA5NTMxIDAgcworPDM5MmUyYj4gMTI3MSA1NTQxIDAgMTU2MSAtMSBzCis8MDAzODJiMzMyYT4gMTU2MSA1NTQxIDEgMjA0MiAwIHMKKzwwMDM4MmYzZjJiMDAyOTI3MzMzMzM0MzkwMDI4MmIwMDMxMjczNzJkMmIzNzAwMzkyZTI3MzMwMDM5MmUyYjAwMzgzMjI3MzEzMTJiMzcwMDM0MmMwMDM5MmUyYjAwMzEzNDI5MjczMTAwMjczMzJhMDAzNzJiMzIzNDM5MmIwMDM4MzQyOTMwMmIzOTAwMjgzYTJjMmMyYjM3MDAzODJmM2YyYjM4MDk+IDIwNDIgNTU0MSAxNSA5NTMxIDAgcworPDIzMmUyNzM5PiAxMjcxIDU3ODYgMCAxNzcwIC0xIHMKKzwwMDM5MmUyZjM4MDAzMjJiMjczMzM4MDAyZjM4MDAzOTJlMjczOTAwM2UzNDNhMDAzMjNhMzgzOTAwMzIyNzMwMmIwMDI5MmIzNzM5MjcyZjMzMDAzOTJlMjczOTAwM2MyZTJiMzMwMDNlMzQzYTAwMzgzNTJiMjkyZjJjM2UwMDM5MmUyYjAwMDgzMjAwMzQzNTM5MmYzNDMzMDcwMDNlMzQzYTAwM2EzODJiPiAxNzcwIDU3ODYgMTcgOTUzMSAwIHMKKzwyNz4gMTI3MSA2MDMxIDAgMTM3NiAtMSBzCis8MDAzYjI3MzEzYTJiMDAzOTJlMjczOTAwMmYzODAwMzEyYjM4MzgwMDM5MmUyNzMzMDAzNDM3MDAyYjM2M2EyNzMxMDAzOTM0MDAzOTJlMmIwMDM4MzQyOTMwMmIzOTAwMjgzYTJjMmMyYjM3MDAzODJmM2YyYjM4MDAwNTA4MzgwMDI3MzMyYTAwMDgxZjA2MDkwMDEwMzEzODM0MDcwMDM4MmYzMzI5MmIwMDM5MmUyYjAwMjExMzFkPiAxMzc2IDYwMzEgMTkgOTUzMSAwIHMKKzwxZjM5MzcyYjI3MzI+IDEyNzEgNjI3NSAwIDE5MjEgLTEgcworPDAwMzkyYjM4MzkwMDJmMzgwMDMzMzQzOTAwMzkyZTJiMDAyYTJiMmMyNzNhMzEzOTAwMzkyYjM4MzkwNzAwMzkyZTJiMDAwODM5MDA+IDE5MjEgNjI3NSA5IDQ4NzggMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwZTA1MGQwZTA5MDIwODA1PiA0ODc4IDYyNzUgMCA1NjUzIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzNDM1MzkyZjM0MzMwMDMyM2EzODM5MDAyODJiMDAzODM1MmIyOTJmMmMyZjJiMmEwNzAwM2MyZjM5MmUwMDM5MmUyYjAwMzkyYjM4MzkzMzI3MzIyYj4gNTY1MyA2Mjc1IDcgOTUzMSAwIHMKKzwzODJiMzk+IDEyNzEgNjUyMCAwIDE1MjYgLTEgcworPDAwMzkzNDAwMjExMzFkMjYxZjIwMWUxNDEwMWEwOTAwMWYzNDA3MDAyNzAwMzgyZjMyMzUzMTJiMDAyMTEzMWQwMDM4MzkzNzJiMjczMjAwMzkyYjM4MzkwMDI5MzQzMjMyMjczMzJhMDAzMjJmMmQyZTM5MDAzMTM0MzQzMDAwMzgzNDMyMmIzOTJlMmYzMzJkMDAzMTJmMzAyYj4gMTUyNiA2NTIwIDEzIDk1MzEgMCBzCis8MzkyZTJmMzgwZj4gMTI3MSA2NzY1IDAgMTY1MyAtMSBzCis8MDM+IDEzOTggNzA3OSAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzFhMWIxZTAzMTkxMzFlMWIxMzFjMTQwMzE5MTMxZTFiMTMxYzE0MDAwMjA4MDA+IDE1MDQgNzA3OSAzIDM3ODUgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYzA1MDgwYTBlMDUwNjBhMGQwZT4gMzc4NSA3MDc5IDAgNDc0NCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDAyMWUwMD4gNDc0NCA3MDc5IDIgNTA5OSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MjExMzFkMjYxZjIwMWUxNDEwMWEwMDA4MDgwMD4gNTA5OSA3MDc5IDIgNzA2OCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAyMTg+IDcwNjggNzA3OSAwIDc0MjAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDBjMGIwZDBlPiA3NDIwIDcwNzkgMSA3ODk3IDAgcworPDIwMmUyYjM3MmI+IDEyNzEgNzM5MyAwIDE4MTcgLTEgcworPDAwMmYzODAwMjcwMDM4MjkzNzJmMzUzOTAwMzUzNzM0M2IyZjJhMmIyYTAwMzkyZTI3MzkwMDM1MmIzNzJjMzQzNzMyMzgwMDNiMjczNzJmMzQzYTM4MDAyMTEzMWQwMDM4MzkzNzJiMjczMjAwMzUyYjM3MmMzNDM3MzIyNzMzMjkyYjAwMzkyYjM4MzkzODA5MDAxODM5MDAyZjM4MDAyOTI3MzEzMTJiMmE+IDE4MTcgNzM5MyAxNCA5NTMxIDAgcword3N0OmR1dGNoMTJpIFNGCis8MGYwNDBiMDEwZDBlMGMwNTAyMDgwMTBkMDMwYzA3MGIwZT4gMTI3MSA3NjM4IDAgMjg2MyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA5PiAyODYzIDc2MzggMCAyOTE2IC0xIHMKKzwwMDEwMzgwMDNjMmYzOTJlMDAyMDEyMWQwMDM4MzkzNzJiMjczMjAwMzUyYjM3MmMzNDM3MzIyNzMzMjkyYjA3MDAzZTM0M2E+IDI5MTYgNzYzOCA2IDYzOTAgMCBzCis8MDAyOTI3MzMwMDNhMzgyYjAwMzkyZTJiMDAzODI5MzcyZjM1MzkwMDM1MzczNDNiMmYyYTJiMmEwNzAwMzQzNzAwMzUyYjM3PiA2MzkwIDc2MzggNyA5NDYxIDAgcworPDQxPiA5NDYxIDc2MzggMCA5NTMxIC0xIHMKKzwyYzM0MzczMj4gMTI3MSA3ODgzIDAgMTcxMiAtMSBzCis8MDAzOTJiMzgzOTM4MDAzZTM0M2EzNzM4MmIzMTJjMDAzOTM0MDAyZDJiMzkwMDJhMjczOTI3MzUzNDJmMzMzOTM4MDAzMzM0MzkwMDI5MzQzYjJiMzcyYjJhMDAyODNlMDAzOTJlMmIwMDM4MjkzNzJmMzUzOTA5PiAxNzEyIDc4ODMgMTAgNjg0NCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBhMGIwZTA3PiAxMjcxIDgxOTcgMCAxODY2IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MGYwMDIxMTMxZDAwMmYzODAwMjczMzAwM2EzMzM3MmIzMTJmMjcyODMxMmIwMDM1MzczNDM5MzQyOTM0MzEwOTAwMTgzOTAwMmYzODAwMmYzMjM1MzQzNzM5MjczMzM5MDAzOTJlMjczOTAwM2UzNDNhMDAyYjNkMjczMjJmMzMyYjAwMzkyZTJiMDAzNzJiMzgzYTMxMzkzODAwMjkyNzM3MmIyYzNhMzEzMTNlPiAxODY2IDgxOTcgMTQgOTUzMSAwIHMKKzwyNzM4PiAxMjcxIDg0NDEgMCAxNDU3IC0xIHMKKzwwMDM5MmUyYjAwMzcyYjM1MzQzNzM5MmIyYTAwMzgyYjMzMmEwMDM3MjczOTJiMDAyOTI3MzMwMDI4MmIwMDMyM2EyOTJlMDAyZTJmMmQyZTJiMzcwMDM5MmUyNzMzMDAzOTJlMmIwMDI3MjkzOTNhMjczMTAwMzcyYjI5MmIyZjNiMmIwMDM3MjczOTJiMDkwMDE2MzcyYjI3MzkwMDI5MjczNzJiMDAzODJlMzQzYTMxMmE+IDE0NTcgODQ0MSAxNiA5NTMxIDAgcworPDI4MmI+IDEyNzEgODY4NiAwIDE0ODkgLTEgcworPDAwMzkyNzMwMmIzMzAwM2MyZTJiMzM+IDE0ODkgODY4NiAyIDI1ODYgMCBzCis8MDAzNzJiMzUzNDM3MzkyZjMzMmQwMDIxMTMxZDI2MWYyMDFlMTQxMDFhMDAzOTJiMzgzOTAwMzcyYjM4M2EzMTM5MzgwMDM5MzQwMDMyMjczMDJiMDAzODNhMzcyYjAwMzkyZTJiM2UwMDI3MzcyYjAwMzMzNDM5MDAzMjJmMzgzMTJiMjcyYTJmMzMyZDA5PiAyNTg2IDg2ODYgMTEgOTUzMSAwIHMKKzwxNT4gMTI3MSA4OTMxIDAgMTQwMiAtMSBzCis8MzQzNz4gMTM5NCA4OTMxIDAgMTU5MSAtMSBzCis8MDAyYjNkMjczMjM1MzEyYjA3MDAzNDMzMmIwMDM4MmUzNDNhMzEyYTAwPiAxNTkxIDg5MzEgNCAzODQ1IDAgcword3N0OmR1dGNoMTJiIFNGCis8MTExNzFmMTEyMDFkPiAzODQ1IDg5MzEgMCA0NDQ5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzNzJiMzUzNDM3MzkwMDI4MzQzOTJlMDAzODJiMzMyYTAwMjczMzJhMDAzNzJiMjkyYjJmM2IyYjAwMzcyNzM5MmIzODAwPiA0NDQ5IDg5MzEgNyA4MTUyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MWUxYTE1MTMxZTE2MTMxYz4gODE1MiA4OTMxIDAgODkwNiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMmMzNDM3MDAyNz4gODkwNiA4OTMxIDIgOTUzMSAwIHMKKzwyMTEzMWQyNjFmMjAxZTE0MTAxYT4gMTI3MSA5MTc2IDAgMjc4MCAtMSBzCis8MDAzOTJiMzgzOTA5MDAxODJjMDAzZTM0M2EwMDI3MzcyYjAwMmQzNDJmMzMyZDAwMzkzNDAwMzcyYjM1MzQzNzM5MDAyNzAwMzgyZjMzMmQzMTJiMDAzMzNhMzIyODJiMzcwNzAwM2UzNDNhMDAzODJlMzQzYTMxMmEwMDM3MmIzNTM0MzczOTAwMzkyZTJiMDAzNzJiMjkyYjJmM2IyYj4gMjc4MCA5MTc2IDE1IDk1MzEgMCBzCis8MzcyNzM5MmIwOT4gMTI3MSA5NDIxIDAgMTY4NCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYTBiMGUwNz4gMTI3MSA5NzM1IDAgMTg2NiAtMSBzCis8MDQ+IDE4NzAgOTczNSAwIDE5MjggLTEgcworPDAwPiAxOTI4IDk3MzUgMSAxOTgxIDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDE4MmMwMDNlMzQzYTAwM2MzNDNhMzEyYTAwMzEyZjMwMmIwMDM5MzQwMDQwMzUyNzI5MmIwMjAwMzkyZTJiMDAzODJiMzMyYTAwMzcyNzM5MmIwMDM0MmMwMDM5MmUyYjAwMjExMzFkMjYxZjIwMWUxNDEwMWEwMDM5MmIzODM5MDcwMDI3MmEyYTAwMjcwMDA4MTMxODFiPiAxOTgxIDk3MzUgMTYgOTQ2MSAwIHMKKzw0MT4gOTQ2MSA5NzM1IDAgOTUzMSAtMSBzCis8MjAxNDFlPiAxMjcxIDk5ODAgMCAxNzIxIC0xIHMKKzwyMj4gMTY5OCA5OTgwIDAgMTg2MCAtMSBzCis8MTAxOTFmPiAxODM3IDk5ODAgMCAyMjUyIC0xIHMKKzwwMDM5MzQ+IDIyNTIgOTk4MCAxIDI0ODAgMCBzCis8MDAzOTJlMmIwMDMyMjczMDJiMmMyZjMxMmIwNzAwMmEzNDAwMjcwMDQwMzIyNzMwMmIwMDI5MzEyYjI3MzMwMjAwMjczMzJhMDAzNzJiMDgyOTM0MzIzNTJmMzEyYjA5MDAyNT4gMjQ4MCA5OTgwIDkgNzEzMSAwIHMKKzwzNDNhMDAyOTI3MzMwMDM5MmUyYjMzMDAzYTM4MmIwMDM5MmUyYjAwMDgyODAwMjczMzJhPiA3MTA1IDk5ODAgNiA5NTMxIDAgcworPDA4M2M+IDEyNzEgMTAyMjUgMCAxNTkxIC0xIHMKKzwwMDAwMmQzMTM0MjgyNzMxMDAzNDM1MzkyZjM0MzMzODAwMzkzNDAwMzgyYjM5MDAzOTJlMmIwMDI4M2EzNzM4MzkwMDM4MmYzZjJiMDAwNTM4MmIzMzJhMzgwNjAwMjczMzJhMDAzYzI3MmYzOTAwMzkyZjMyMmIwMDA1MzIyZjMxMzEyZjM4MmIyOTM0MzMyYTM4MDYwMDM3MmIzODM1MmIyOTM5MmYzYjJiMzEzZTA5PiAxNTkxIDEwMjI1IDE0IDkyNTQgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwxMDBlMDkwMDBmMDYwYzAwMGQxZTFjMTMxMTE4MDAwYz4gMTI3MSAxMDYzMyAzIDMwMzUgMCBzCis8MTMxYzE0MWExYzE4MTExOTEyMTM+IDMwMjcgMTA2MzMgMCA0MDY5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjAyZTJiPiAxMjcxIDEwOTk5IDAgMTYzMSAtMSBzCis8MDAyNDIwMTgwMDIxMTMxZDAwMzgzOTM3MmIyNzMyMDAzNTJiMzcyYzM0MzczMjI3MzMyOTJiMDAzOTJiMzgzOTAwMzYzYTJmMzkyYjAwMzgyZjMyMmYzMTI3MzcwMDM5MzQwMDM5MmUyYjAwMjExMzFkMjYxZjIwMWUxNDEwMWEwMDM5MmIzODM5MDkwMDI0MjAxODAwMzcyYjM2M2EyZjM3MmIzOD4gMTYzMSAxMDk5OSAxMyA5NTMxIDAgcworPDI3PiAxMjcxIDExMjQ0IDAgMTM3NiAtMSBzCis8MDAyYTJiM2IyZjI5MmIwMDJjMmYzMTJiMDAyODJiMDAzNDM1MmIzMzJiMmEwOTAwMTAzODAwMzkyZTJiMDAyYTJiM2IyZjI5MmIwMDJjMmYzMTJiMDAyZjM4MDAzNTMxMjcyOTJiMmEwMDJmMzMwMDJhMmYyYzJjMmIzNzJiMzMzOTAwMzEzNDI5MjczOTJmMzQzMzM4MDAzNDMzMDAyYTJmMmMyYzJiMzcyYjMzMzkwMDM4M2UzODM5MmIzMjM4MDc+IDEzNzYgMTEyNDQgMTYgOTUzMSAwIHMKKzwyZjM5PiAxMjcxIDExNDg5IDAgMTM5OCAtMSBzCis8MDAyZDJiMzMyYjM3MjczMTMxM2UwMDMyM2EzODM5MDAyODJiMDAzODM1MmIyOTJmMmMyZjJiMmEwOTAwMjAyZTJiMDAzODJmMzIzNTMxMmIzODM5MDAyNDIwMTgwMDIxMTMxZDAwMzgzOTM3MmIyNzMyMDAzOTJiMzgzOTAwMzQzMzAwMTcxZDA4MjEyNDAwMmYzODAwMzUyYjM3MmMzNDM3MzIyYjJhPiAxMzk4IDExNDg5IDE0IDk1MzEgMCBzCis8MjgzZTAwMmIzMzM5MmIzNzJmMzMyZDAwMzkyZTJiMDAyOTM0MzIzMjI3MzMyYTBmPiAxMjcxIDExNzM0IDMgMzYzMyAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAzMWExYjFlMDMxOTEzMWUxYjEzMWMxNDAzMTkxMzFlMWIxMzFjMTQwMDAyMDgwMD4gMTM5OCAxMjA0NyAyIDM2MjYgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYzA1MDgwYTBlMDUwNjBhMGQwZT4gMzYyNiAxMjA0NyAwIDQ1ODUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMD4gNDU4NSAxMjA0NyAxIDQ2MzggMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMjFlPiA0NjM4IDEyMDQ3IDAgNDg4NyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMjQyMDE4MjYyMTEzMWQyNjFmMjAxZTE0MTAxYTAwPiA0ODg3IDEyMDQ3IDIgNjk5MSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAyMDIwMDAyMTA+IDY5OTEgMTIwNDcgMSA3NzI0IDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDBhMmEyYjNiMGEyZjMzMmIzOTI2MjkzMTM5Mzg+IDc3MjQgMTIwNDcgMSA4OTY1IDAgcworPDIwMmUyYj4gMTI3MSAxMjM2MSAwIDE2MzEgLTEgcworPDAwMzkyYjM4MzkwMDM1MjczNzI3MzIyYjM5MmIzNzM4PiAxNjMxIDEyMzYxIDIgMzA3NSAwIHMKKzwwMDJjMzQzNzAwMjczMzAwMjQyMDE4MjYyMTEzMWQyNjFmMjAxZTE0MTAxYTAwMzkyYjM4MzkwMDI3MzcyYjAwMzkyZTJiMDAzODI3MzIyYjAwMjczODAwMmMzNDM3MDAyNzAwMjExMzFkMjYxZjIwMWUxNDEwMWE+IDMwNzUgMTIzNjEgMTEgOTUzMSAwIHMKKzwzOTJiMzgzOT4gMTI3MSAxMjYwNiAwIDE1OTUgLTEgcworPDAwM2MyZjM5MmUwMDM5MmUyYjAwMjcyYTJhMmYzOTJmMzQzMzAwMzQyYzBmPiAxNTk1IDEyNjA2IDQgMzQ4MSAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgxMSkgMTEKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDAzNiBwdXQKK2R1cCA0IC9DMDAzOSBwdXQKK2R1cCA1IC9DMDA0MCBwdXQKK2R1cCA2IC9DMDA0MSBwdXQKK2R1cCA3IC9DMDA0NCBwdXQKK2R1cCA4IC9DMDA0NSBwdXQKK2R1cCA5IC9DMDA0NiBwdXQKK2R1cCAxMCAvQzAwNDcgcHV0CitkdXAgMTEgL0MwMDQ4IHB1dAorZHVwIDEyIC9DMDA0OSBwdXQKK2R1cCAxMyAvQzAwNTAgcHV0CitkdXAgMTQgL0MwMDUyIHB1dAorZHVwIDE1IC9DMDA1NiBwdXQKK2R1cCAxNiAvQzAwNTggcHV0CitkdXAgMTcgL0MwMDYxIHB1dAorZHVwIDE4IC9DMDA2NSBwdXQKK2R1cCAxOSAvQzAwNjYgcHV0CitkdXAgMjAgL0MwMDY3IHB1dAorZHVwIDIxIC9DMDA2OCBwdXQKK2R1cCAyMiAvQzAwNjkgcHV0CitkdXAgMjMgL0MwMDcwIHB1dAorZHVwIDI0IC9DMDA3MSBwdXQKK2R1cCAyNSAvQzAwNzIgcHV0CitkdXAgMjYgL0MwMDczIHB1dAorZHVwIDI3IC9DMDA3NiBwdXQKK2R1cCAyOCAvQzAwNzcgcHV0CitkdXAgMjkgL0MwMDc4IHB1dAorZHVwIDMwIC9DMDA3OSBwdXQKK2R1cCAzMSAvQzAwODAgcHV0CitkdXAgMzIgL0MwMDgyIHB1dAorZHVwIDMzIC9DMDA4MyBwdXQKK2R1cCAzNCAvQzAwODQgcHV0CitkdXAgMzUgL0MwMDg1IHB1dAorZHVwIDM2IC9DMDA4NiBwdXQKK2R1cCAzNyAvQzAwODcgcHV0CitkdXAgMzggL0MwMDg4IHB1dAorZHVwIDM5IC9DMDA4OSBwdXQKK2R1cCA0MCAvQzAwOTUgcHV0CitkdXAgNDEgL0MwMDk2IHB1dAorZHVwIDQyIC9DMDA5NyBwdXQKK2R1cCA0MyAvQzAwOTggcHV0CitkdXAgNDQgL0MwMDk5IHB1dAorZHVwIDQ1IC9DMDEwMCBwdXQKK2R1cCA0NiAvQzAxMDEgcHV0CitkdXAgNDcgL0MwMTAyIHB1dAorZHVwIDQ4IC9DMDEwMyBwdXQKK2R1cCA0OSAvQzAxMDQgcHV0CitkdXAgNTAgL0MwMTA1IHB1dAorZHVwIDUxIC9DMDEwNyBwdXQKK2R1cCA1MiAvQzAxMDggcHV0CitkdXAgNTMgL0MwMTA5IHB1dAorZHVwIDU0IC9DMDExMCBwdXQKK2R1cCA1NSAvQzAxMTEgcHV0CitkdXAgNTYgL0MwMTEyIHB1dAorZHVwIDU3IC9DMDExMyBwdXQKK2R1cCA1OCAvQzAxMTQgcHV0CitkdXAgNTkgL0MwMTE1IHB1dAorZHVwIDYwIC9DMDExNiBwdXQKK2R1cCA2MSAvQzAxMTcgcHV0CitkdXAgNjIgL0MwMTE4IHB1dAorZHVwIDYzIC9DMDExOSBwdXQKK2R1cCA2NCAvQzAxMjAgcHV0CitkdXAgNjUgL0MwMTIxIHB1dAorZHVwIDY2IC9DMDEyMiBwdXQKK2R1cCA2NyAvQzAxMjcgcHV0CitkdXAgNjggL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjU2IDk3OCA3NjZdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMjRDMjJBNTExQkQ1Q0EyNUQ0NjU0MjQ1MzkyMEE2NzgxNDcKK0FGQzIxRkE3RjRGNTg2MkNGMTcwOUY2QworQkY4QzNFQ0NCRkU0NTA3REI1Cis2MTJFNDkxRgorMDg3QTEyRDBBREI4MkYyOERBOTNGQzIzRjUyQworQ0VBRjUyNDk0MEM3NzYyNTk0N0FCQzE3MjIwMzg0NjYzQjY0NzgxNUY5NEM5NzMyMkVFM0FBMjY1QkYxODBDQUIzQjcxODI3OUFGRTIyRjlDQURFOENDRDA5ODU4RjcwQkE2NDRGMTQxMkNEQzZEQUY2RjgxMEQyRUE2QzUwMjBDRDNENjZEMUUwREQ0NUI3NkEzMDFDMDZCMUNGOTYwMjgyOUY1NDkxM0JGNzg3QTBBM0Y5MzEwOTI0RDg5RjVDMjJDQTZCQjU3M0RCRUEKKzU3MkMyMjhBCis5QzdERDA5NDRDMTRDNjlCMDk2REQ1NjlCMkJBCis5RkQ0MDY2QTZDM0VCMEMxREMyNUQ5NUE2NTM0MTUxRjhBOUZEMTM0RUZFQTI2QjgxODdDNTYyODA2QTQxMDkwNUU3MzZCOEQ4MDE5RDFGQjY5QjAxNENCODkwQjlFQjhBRDM4MzEzRUQ2RTlDMTA5NTFEQzhGRDk3Mzk0OEMxOUJFODc2RDAyM0EyN0I4NjlFMTI4MTJGNjU3MEU3MjVBM0NBMjA2MEVERDY1MEM4RDY4NzI2RjJBNzBDNDYyODMzQkU2Rjc2NDlGNTYzMEUyQkI4ODdDMjY0NDlEOUU1NzA0RURCNTZCOEI3NzQ2MjFCMUFGMDM4MjcyNkEKK0Q5MTMKK0I3OERBREQ5MUY4Q0VDRDJENUZGQjE5RgorMTBCQTgzMTEKK0YxRTZEREY0NjVBNjhGQzI3Qzk1MjEwRTU5CitEMEVFQTlDM0Y3QjlCRTUzNEY5Nzk0QjIzRDYxRDMyOTIxQ0NGMUJDMUIyOUZFQkE3MzcyRkQyOTVFQjc4NzYyQjNDRTdDM0IyRkM4NTdDNzVCQ0Q0RTJCNzQxQjBEOTdGMUI1MUUzQjIwQUNDNjc0CitGMkQwNUY2QQorMjU5QkU1MEI0MDVERjY4QUZCRjZDMkVBOEYKKzQzNDlDOUQ0MThFQUQ3MDJCRjNERDNDNTNGQzY0QUNFRTE0MzQyQkJDOTkyNzk0M0I0NkM3Mjk0NkNCOUI1RjFENjI1NTc2QTdFNDdBOTc3ODU5OUMxMjVGMDlBQzY0QzdFMUIxQzVEOEFGRDU0OUREQkNFOTVFMDFDQUZBRjE0Cis2MzMwOTZENQorNkI5ODNGRjhGMzM4OEU5RDVCNTcxMjgwQjMKKzMzMzQxOUM2RDJDMUI5ODNCRTlDNERDQkI0N0QxMkI4RDQ1MEIwNDcwMTlFMTQ0OTk5MjU0OEQ3NDExMTFEQUU4MjhGM0ZCQjBFNjA3Njk5RkMzQzk1Q0QzQzg2MDBDRjc4QTYxOURBREU3QkVFMjA0RkY2OUUzMEUwODI4RgorNEU2N0E2NUMKKzREMEZCNzlDMDFEMDU5REIyNEZFMjBENjY5CitFNjVBRDdENDhFOUQ3MUI4RDIyREQ3OERDOEM0M0I0NjJGMTVBQkQ4QzY2QTcxQTRBQURGRDc5N0Q3QzhDRDU4Q0QyMzZDRUI4OTY3MUU4NjMwQjk3Mjg0MkNFNThFNjVBQjIwODRFNTA0RkRFQThBQUUKK0YxQTZFQjg3CitBRUZBMTU5NzA4NzZGRkFERTlBNTQyNEQyNAorM0FBOEJDN0U3QjNEOTNBQjkwRUI1NjJBRUJFNDc3QUU5QjkyMjE5MDc4MERGNworN0ZERkEwRTAKKzlBMUIwM0U1OUI4NDg4NzEzODA1REE4OTYwCiszMDlBODZGRkI0QTUyNEZERUQyNTQ0RTI2OEMxMjkxNDAxMDhFOEI1MzYzNTJDOUI5RTI0QTdBOEEyMDUzNworQjE0NkFGRUMKK0EwNDcwODA0MEU4MEU0NTAwRjkwMTFEODUyCis2ODUwQTg2MEUwMkE5QTRGOThBMTUzM0FFNkQ1RkZCN0EzOUNFM0FGNTA5ODUxOTc5MTQ0MUY4QQorOTdDNjY5MDIKK0RBM0RCNDJCOEMzRTYxNzAwREQzMDI4NUUxCitBQjc5ODM5NEE5NjQzREY1NzVDOTNBMUU0RkE1NEFCNTBDOTIzMjA3NzdDMTZBOENFREQwNTFFNDJDNTI1QTJGNzZENTMwMjYzOTA1Nzk0Rjc5RUFFQzMxRjM5NkFDNzMxNDM0NDg0QzExMUVCQzc0MDcwMDQ5RkI5RDA1OUUwOTlCNzA1QUJGODgxQzg4MUI5RjFDCis0QzhBNDBBQgorQTU2MkVDODEzNzgwQ0I4N0IwODQ3NTE2RjkKKzE4NTJFMUZBOUEwMkRFQjUyRTY3OTcwMkQzMzU1NDNFRDFFMzEwN0EwN0Q0M0I4QzNERTNCOTZGRjUyNjNFMTQ1REVFREVEOERCODJDNUU3QjdEQjgwMDFBNDRDNjQ5NUNCNzY1NTlCQjA5Mjc1QzEzMjRFMTA1RUE0MzdCRgorRDk1NzgxNDAKKzZDNjgwNjUxMDBDRTE2REU5QTRFNEEzQzIwCisyQTM3ODQwOTU3MUU0RjY0Rjg3NzQ5NEIyMzhGNTc2NTlEQjUwNDIyRjE4MDc0QkIzMDkzOUQ0MTQ5NTJBNkU0RkEyMjM2NDM5MzU5NUExRjNERTgyNjk1NzIwNEFBQTY2MjA3N0IyRjUwQzhFMUU2Q0M3NTIzRkE4MTgzMkNBQjQxNEFGMkVBODJBRDAzQjJFMDVCRDhFQzk5MTlFMUQ2OEUwOTFGQzJDODBFRkRCRjZFRkMKKzFGNzE0MUVECis5REQzODBFMDM1QUM1NDlCQ0RBRjJBQjI3NgorNzVDQTUyMjg2MzJBQTRDMThDQUNEOUQ3QjlEMzE4NjcxOTkzMUM4RTY2NTJGODBCNTZFNUZGRjkxNzhDNDgwMDIwN0Y3NzYzNDNBODQ3MTczODA4Nzk2NTRCMDc1QTM3QzdBMUIyRkEzNjE4NTkwNTNDNjMKK0Y1M0MzRDlBCitENERCNzA3NTlEMjA1MDVEQkVFNEQwMTM0RjZDCisxRkM3NTgzOTZDQUUyNzJCNDhDQ0ZEMUU0MzAxRkRBMjRCOTEyN0I5QTExMDA1MUQ5NkY5NDM3NEY0NENBNzU1NjQ3NUQxQUM2RkZFRUJBRjlERThFRTM2NzE3ODVFMDRDOEQ0NzQyRDg1QjY2RDAwRTk1NkExNjdBQzJCRjY1QzEyODZDMEFERUQwRkJCNDVFRkNENzIxQzk2QTJCNTYzNjBDNUQyM0Y2NENFNjk0QURBNzA2QUI0RDgxMDY4QzEyQjIzRkExQ0NGNjZERDBCMEFDMTM4NzI4NzkyMTJDMjhDMDdEQUI5OTQ2NUE5MUY2RTI0CitENDBBRUE5MgorNjMxMzA4N0JEODcwRTE3NjUzQjlBMEZDNjAKKzA1RkY0MDk3MEMwRUYzQ0ZENzlGMENBNDBERkU1MTA4ODRBQ0UwM0E4OTk5M0Q5MDgxMDAxMDZCQjc4RUJCMjU2NURGMzRCOTQ2ODg4NENDNUU5M0E1MDlDMDZCMUZCMjU3MUJCNjE4MDYwRQorQTZDQkFCNUQKK0YzNTUwQ0NDOUI0RDQ5RDJDN0Q4OTI2OUU4Cis4OEZCQTFFMkE4OUY3NDJEQzQ3RjRFOEFENEI1MjBEMDBCQjY5N0E2NTVCM0U0OEY4RjM4NDJCQUM3Mzg1QkM2RTRENUUyQTkKKzBCMzRDNUU2CisyQUQ2ODBGRDFCQjhGRjM3ODIyOEQ5NkYyMTkxCitBRUI0RDRFREZEMUE1M0E2MDI2MjYyRTk3REI2MkQ4MDg3OUMyMUUxMEUwRDg1MzVFQUI0M0VCNTE3NTExMDRCNUREQzAxOTE0RkVCMDI5QkI5QkUyQ0E0QkE3OTYxQkYyNDAyNUU1MjIyNzk1REQzMzQ2RkJDN0UyRTlBRUIzNTk3NzREMTUzMzk5MDYwQjJCQkI0QzcyNkUzRjBDNDFEQzM3MzI5MEI1RkYyRDZEOEJENUJGQjlBMDE5NjkyNzY3MERCMzM1Q0Y1NEFEMjIwMzJFQjhGQUE5NTEzQjhGOUVEQUY4NQorQTNDQ0NGNDIKK0E3MjFBNEI0NDQxMzgyNEY3MEUwQTRBN0MzQzIKKzFFMzIyQUU2NkFCNzM3Q0JENDlGNzA1NkVEQjgzNUFGREUyREI4OEZGNzYxQ0QxRTQ4NkU2MURGRTU0MTU5REFBM0FCNDE0RDk4QTg0NDlDOTY4QkFDQjQzNjc3OUMzNzI0NTAwMTNDNDFGRjk3MEI5QTA3Mjg0NkRGN0Q5NTNCODg2OTM2OUNEMTc0MDEzNTAzNkRGRTc4NTc1NDc0Q0EzNzE1NURDN0U5MTJDNkI0MEI4NTNCMjFFQUQ2RTUzQzFCQzExMkYzQjA2RDQyOTI4Qjk3NzIwNjY0RDc4M0VDODVBQ0IwN0VDRkEyNzgwQzcxRkQyNDlCODMxRgorMDA3RAorQjMKKzFCRTlGNzA5Cis3Q0YxMkE5RjNFMTg1OTNFRTM0M0UzOUE4RQorNTlBOTQ5MEQxMUFBQzE3NTU2NzY2MEZDQ0RCQUIzRTE3QTU3QkIxQjM2RDY3MzNEN0MzMjk5RDBENzQwMDc1MUQwQ0U3M0M4MEY2NTA3NDA4RTI1RjUzODIxMDk3QkQzQ0Y0NkJGMEY0Mzc5OTVBMzE5QjNBMjJCMDI0OEU5Q0FFQzI4MDMzQ0Q5MjlEMDJGODI4MDcyODZDN0MwQjk0MzBCMzA4MDkxNDE2MDQxQjhENzEwRTYyNTZBMUUwQjE5QjQKKzkxMUIwQUI3CitCRDdCNDE2NUJCOTczMTNDNDY0RjgxQTU1NworN0JENEIyNTU2NTczNjczNUY4OTc3QTE1M0ZGOUZBNzkxOTNBMjlCRjk3RDEzNzM2MkIxRTA4RDRBOUUyMEZGQ0Q1QTQ3MDg3MUJEQjFBQTQxOTMwNTIzMTE2QzI1MjYxQTkxQkQxMUJCOEQ2QUVDNThENEI5NkUzRUVFMTg4NDc3RTQwNTgxRkIyNUM0RDVDRjRFNzNGQThGNjhENThDNjNBN0M0MTI4MEM4REZCNTE0MDUwQjdEQTY5M0RCMkE5RjQyM0RDCis0MTQ3RTNDNgorRjY1NzcwMTJCOUQzNTVEMDgzQUI2MkMxRDEwQgorRUY3RkU3NkM2NkE2QzUxMDcxMUNERDYxODRGNTUxODg2Q0ZBMjFFRDY3NkYzRUM5ODFGMDZGMTBGNjQ5NzA3ODU3OTJCRUJFM0QyMTgxNDg4MUI2MTE4MDgzQ0UzQzM3RDU2RUUzRDdENUQ5RUQxMTYzNzUwNzYyRDBFNDQyNDMxREQ5MjJCNDY0MDVFNkU5NjI3NDE5ODc5RTcyMEI2Q0JFQkUyMjdERTJEOUI4OTMwMTBGRDdBRjkyMjJFQUYyRkI3M0RBODMyRDIyMUVCNzBGQkI5MzhDNjVCMzJCQzI5ODk3MjFGQjU4ODBENjZBNjBGQzNCN0NBMDQ1CitEQURFRUMyNQorRkVFNkEwRDU3NUNGRENFOTIwNTBBNDdFQkU0RAorRDVDMUE0QTdFODcwMjRERDYwNTY2OURDQjJENjQwRDA2NzQ4MTU4RUFBNTU1MUY3QjBEODE0QjAwNzhENzI4N0YwNEY4NDBBNEYwRjhFODkxRTA0RjdCNjY0MzZENzI1MjQ5MjQxREM1MUE0QjE3MDQ0RDExNkExODVFN0VBRkFDNzI4OEIzMUQ5QzNFQjVCRTJDMzIzMTBFQTdFQTdDMUIwMzRFRjdDNTI0ODU2M0Y5MTVGRkMxOUI1MUVBNzQyNEQyOEM3NTlFM0I1QTk3NTIxCitCOTcwMUE1RgorNzIxNzMxRTYzMENENERGNUNDMjk2NTVDRTk0RQorMDc2OEY0RTk1RURBNEY4RDZCNTNDMUFENTBDREI4NzkyNDYzMEMxQjUyOEZEQkE2NzZDODhCMkQzMTgyOEFDQzMyMEQzM0M2NDJGQkUzMjEwRDNDQ0NBMjlDREVDMTM5NjNEMzQ0QzRBM0UxMzBFMzRBOUY3RjU4NkYyNEIyMDE4OTc3RkQwRTFGRTQ2NTJDN0VGMjREQkRGQzVGQzBGODM3NDZGNEQxOTg5ODRCQjM5NkRCQzAxNUUxM0YzNkIwMUJBRDA2MTJCOTgxMDgxQTdFOEY3QzUwQkUzRDRGQjU5MURGRThGODUzOTNBOUFFQTFEMworNDRDOTdDOUUKKzY0QzQxOERBQ0IyQUMwM0EwOEYwMjMwNjlERjgKK0QxNjJBMkI0QTg1M0VEMDU5M0IwQkM1MTkxMjgxQzFFQTYwNzVGNEQ2RkY2QTI5MjRGNDNCMjk1MDU2NDk1MkU5QTJCRjBDRjRCOEI0MTE2N0ZGMjlDN0U3RDEyODQ3NUQxMjlCQkFCRUE0QkUzOTkwNEQ1QkI5MzcxMjY2RkVDNDdCNERENkYxM0M4RjBEQjE0MDRGNTJBNkRGNEE0RTQwMkMzQkYyQjM1QjhBNEIyM0QyNzQyQjlGRTQwM0RGN0YxOTZDQUU5MDIyQzM1RTBGRUQ4OTAyQjE0RDAwMTAwRUQyNzJFNTY4MUQzQjFDRkYzODdEMUZGRjkyOAorNDlFQQorM0FGMDA4MkM3NTI2NThFRUUyOTY3NAorQTA3NzZGMjUKKzg2NTg1NjYzOUQ2OTgxNDUyODc1MDI3NDdECis2RjRDQTFCQUQ3QTkwNkEwREEyQTExQjc3Q0QxRTBCODM5N0QyOTRGNzQzRTQ3QTI4QjBDQkM1RjY3QTc2NUFDRkRFMEZCOTczNjY1RThFRUVEREY1OTI2QkEwMkI1NzkyRTk2OTlCRTNCOTkzRDZERjI1OTZCCis3Qjg5ODc3OAorQUVGMTRBMjI0RjkyRTU0NkQwOTQ2ODJCOEYKK0Y2NUQzRjU5MjBEMTYzQTY2RUJFOTNBNzVFRjhDOEU4QTY3QTQ2QzU3REQ0MUM4Mjc3NDQ3M0IzOTAzRDUxMEQ5MkYzMDZEMUNENEE5RjBGRTZGOTA2OTU0MUFFRTk3NDc4NjYyQ0Y1RUZCMjVEMTVDNzhFMkIzQUY2REI4QTI2OUNBMTIwN0Q4RDE3OEYKK0UwQzdFQzNFCitFNTM2MUM3QzY5ODU5MDVENzc5Nzg1QTU3RjkzCis4M0FBMjM1N0IwN0VFMUFFRTlCRDNFRDY3RURGN0QxOTA3QzZDMEI5OTQxMDZERDkxNkQ3MkRCMzBGQkNCMzM2MkFEMTQ3REVFMjMyRDIyOTUxRkQzQkYwQzNCMUUwMzJCOTAwOEExRjZCMkJBNkY1N0VGQzUwQjdDMTJCMENEMjI4MjhBMkFCMkEwQUFBMzY1ODdDQzIyMTg1MUYyNzVENTQyRTYxRkQ1MkMyQ0VCNjg3MkNBODlDREQ3OEIzRjUzMDQ0NEEzMUE1MkQzNkM5QTBGQTIzMkNBQkYzNTAKK0RDRDUxNUUxCitCMEUxQTAwNENCMDlCREQ0RTYzNDU4QTQzQgorRDQyMzY2RDVERDVGQjVGNzU3MDAwRDQ1ODY4QTU0Njk5OEM3RDREMDM5MjBCMEMyNUM5REU5Q0I4ODg5OUFFNThDNzE0NDY3NzdBRUY2NDhDMkQxNDQ3RDRFN0QwMUZBQzVDMDNBNUU5QTI1QkFDQkM4QjAzRDVGMjdBMEE1QjQyNDJDRTc1Rjc5MUU2RTRGM0NEODQ2MzRERUVFNkI5MDkyMEU3M0JERjU1MUJFRjNEQzVGNEY2MworMzBGOUI2NzEKKzEwQzkzN0I5RjBEQTUwMzY1ODM1MDQzOTAwCitDRjNCQzhENjEyMjlDNzhCRjZDQkUzQTJEOThGMDFBNDFFMTlEOUQwQjRBODY5QTU3NjlEQzBCMkE4RDRFMDJGMjUzQkQ2MjMyNDZBQjBCNEFGOEZDRjU2Njg2REJFQTQwOTA1MTkxREVBMEExMURGNUY5NkM0NUJBOTRBRDZCQkNFQkFDODVGNkNGN0U1NkE0ODM4QUMwOTg1MDkyQ0ZBMUU3RkM5Cis5OEJGMkI0MgorQUQ1RkM0NEY2RDlBQ0U5OEQ1N0M4ODc2QUQ5NQorNDBFRDdEQUY5QzJFRjU2M0JCNEJCQ0Y4MkM1NzQ3NjAzQTNENUFCNzdGMENBODlGRDJGQUM1QThDOTk1QjI4NTYxQTk2M0M2MzI0MEFFRUQ1MEJBOTVFQjc2Rjk1MENGMzcwNDhFOUIyOEFDMDQ2Q0M2RjVFODkwMTQyMUVDQjAyNzRCQ0U0MTgwMkU4MkUyRDUwNEMyQjFDNUE1OUNCNUMxRkVCMUVEM0MyOTVCOEY0NENDMTY2RUM0MzczM0NEN0JBMDRGNjFBOEMzMjQ3MTNFODEKKzg2QTkyODQzCitDMkNGODEwQjM2NkU0NTVFMDM3NTQ1MzU1OTkxCitCNDUxMUUzOTdDMERDNUVEQkExQUM2MUZFQTc1NzYxRjc3ODQ5Rjg5OTQ2NkQ0MTg4QzkyNEZGOEIxMjk3NDgxQTI2Q0NDMDdEQjczMEFGNkQ4QTVGMDE1MDVFRTBDMkEzNDNFMzQ3OUI4MTU0QTEzMkEwMEYyRkZGNEEwRUExNzgyMkM4MTVENTY1ODczNTRGQjA5MTZENTRBNDY0RjJDM0MzM0VEQ0VFODMyQ0JGQUVEN0U3RTgyRkFDNjgwM0UwOEMzRTRGMjQ1M0IxMzI4QzQwMkE4NzNFNjg4RjZEN0Y3MURCQkE0OTg2MEFGQjgyNkM3MUNCOThCM0EKK0NGMTUwQjhECitFM0M1QjE0NjdFQzQzNjcyQzFFRjg0Qzg1NzE4Cis2NjQ1QzQ2NzU3RDRDMzBCN0YxMDU0OUVBMDlBRERCNjU3MDVDNDVDQ0I2RjUwNTJGRTVBMDEyNDEwQjVBNERFRkMzNUU4MjUxNTIwOTBGNDgzMjk4OEI0MzE0NUYxRTg4NkQ2OTJBQ0FDOTM5NzY0QzNDNkIzNzFBMkE5NzBFNERGNzQ2OUQ1MjdGMDkwNjIxRjY5RTlFQTRGN0M4QTdERjVDOUJBRTFGMEY5NzcyNzNBMDZGN0RGREUzMzE2MEZENEM1NzVBMkYwRTA1RjI1QzkwMjAzNUVFRTRGODI2OEVBRTc1MjNBMzAyMzFCMDkzMTlBNjlFRDhFRjMKKzVGMjQKKzNBMDYxOQorQTcyRDk5NzYKK0E1MkRGNjgzNDYzOUM1QkM5Q0YxMDMzMThCCiszN0JEOTZDOTNDNTRCMzU5RDBGMEY5Qjk2Qzk5NTRFNzQyMTE1QkZCOEEzOUU2NEQzOEU3OEJBMkQ3OEJFNkVCMTkxMkFEMEVCQjVDQ0FBQjAzRTk1ODQ4QjZFRjhBMzY3QUNBQ0ExQ0Y1OTA3NDc3MTQzRDNEOTJEMzk1NzQ3MkNCODM5NjYwQ0VGMEQ4MDM3Q0UwRjEwNEE4NTQ2MzA1N0IKKzBEMDJCOTVCCis1MTVCMEJFRjYwQjNBMjlBQUNGOERFMURBMUM4Cis2MkM5QkRDMzA4MTEzMzJBQzhCMEE3NDQ1RDQxQkQ1MTkwRURCOUEwNTNCQ0VBN0I5Qzc0RUJBOUI1MzM5RTQ4QkQ1RjQ1Q0RDNDYzQjA4OTYxOUQ5RDIxOUI4RTE0RUNBQ0Y3NTA1RkEyMURCRjNGNjIzNDc0M0QzNzQzMEE0QjY1NjQ2NUIwRTQ1OENGRTU5NjEzMDNFNkMwNzAzRkQ0MUU3QjNDNkJBMEZCNjM1MDU5MjdCMjZDRkZFN0IyQ0QzRTVEQURCQworQjg2QUE1MzQKKzM5ODlCRTFGQ0IwNjE4MTc4NDlCN0Q2NDk4CitBMEYwQzM1NTY4MDEzNjFCMjZGMTlBRkQ2M0Q4ODk3OEM4OUZCMzJBNTVCQTExM0YzNjBBMUY2QkI5OEVDNjdEMEJCMTg1RDJEQjFERDJENTM3MUY3RURGNjVFM0M3RTg4NzU3MjE1ODNFODNBNTUzMDBBMEE5OUFBMDA5QUU0NDVCMUQ1MjQ3QkQwNUU4RTlFNDhBMTVDMEJFQUY1MTk4NTk2NkU0OEQzMUEzMTEwOTgxCis1MjQwM0RCNworREMyQkVDMjk5MEIwNTk0RDZFN0U1MzlGQjc4MAorMjdDN0ZDRDA2MjQ4MzI5MDBBRDNBNTc1MTdCQzAzRUQ3NUE3OEQ0RTlDM0IyMjc5RUE1MUQxOUY0RjI0MTUxMDI1RUZDMzMyNjczRDkwQ0FBNTBFMDA2OUM5QjY4RTAzRTIxMjI4MUUwN0IzOUU4M0UwRTY3RUQyQzY3MjI3NUY1RDU4Q0ZGMUY1MTkwMzY4ODJDODI4MTVCNzc1RkM0MUE2QjlBRUJDMTk1MDRCNjI3M0I5NUMwNzMxNzZGOTE5MTdEOTI1Qjg5MUUzQjIzMDYyRkVCMDE5QjUwRUQ1MTE2NTZCRjM4Mjg2Mzg2MTdGMDY4RTdBNThBRjM5Cis2N0MzCisyNDQ1MzU0QTZCMjQ5RkZFRkYwRkI1OUIwRENGNkE1OQorMzAzNUE2MTcKKzdBNDc0QUU5RUIxMThBOTdGMzhERDg1MjIxRDUKK0Y5MjEzOUJENkQzQjBGMjNDQjc4QjBBRDFCRUMzMzRCQTZCOTE3RjlDRTkzM0UyREZEMTIyQjJDRDhFMzRCOEU3NkNGNkFERkM2NERFNjFCRjlGRDY4RTQ3RjNGMEJCMTExRDMwQUU4NTY2NzQ4MTcxNEQ3QkNBN0REOTQwRTVBRTEyQUE4N0I5NUZBQ0MyNjg1RkQyRjQ2MEQ4N0M5QTJEMDEzNTg4QjM5MDExNTRCQjMzNUY1RDcwMzYyMTUxQUNFQzhERUNENjE3NUU2MjEyRjZCODQxNThEODMxMDI2MDE3MjhGNTdCMjE4QjQ2MjdGMDhGNDg1RDI5OQorNUUwMQorRDFENzFGQ0FFNTE5N0JDOEFFODkzQjg4MjkzRkQ2MTkzMTNEQUYyRDhFRjFCQzdDODA3RjlFQ0FBODQ1NzMyMUQxMkEzOTA1RDg1RDIwCiszQTMxOTM4NQorQ0M1QTE3MzE0RUFBMzk0N0M2RjAzNkI3QTM2RgorRUJENDg5QzA3NkZGRjU4QjU4Q0NDMTZENERCNTYyNzYxNzk3RTc2MzI2QTY2NDE1QkI3OTA3QjNDRDE3Njc1NEQzMzFBOUM3MzRCOEY5RUEyRkIzNzY1NDREOUJGOUYzNzBCOERENEJCRjA4MjZCMTYxNTlEQjBGNjUxNzcyODhENUYzNEY1NUEwRTlDMzRGMTc1QUQ4NTk4NEU1MTJGNjM2ODE0REU2MzczRERFRjZCRkQ5MDRDOTlCREY0NjVFQzg3MDM1QTc1MzVGRjk1QTY1QTlCNjExNkJFMkRFMjcyNkJDMUYKKzZDMDc5MUY3CitGQTlFMzA3MTBCQzQ4MjVERTM2QzAyQzcyRQorMTM2ODhCQzU4QTg2Qjg4NkEyREQ4Q0Q4RTM1NzU4Mjg4MDIxRDJFMjg3QzkKK0UyOUY3OTFCCitFNTRENUE1NEREMzEwN0Y0RDg4MjQ3REU2RQorRDhEOTFGMzI1NUYxREMzRUYwQzJFOUE1MjlFN0NDQTA0N0Q3QUNENDBCNDhFNTI3RjY3NTA3MDA5RjczRkVGQ0U3NkJBNkQxQzU3Q0UwQjRDNEVGMjFCQzUxMDdEREQ2RDIzQzEyRTkwRDJDQURCQkU0NzAKKzc3QUYxOTE5CitFNEM4MzkzRDlERTIyRTI3MDcwQzZFMDQ3RjA0CiszRjRENzgwRTI5NDQ1QTlCNDlGQUREMzU4MjFCQzlEMDZBNjMxMERCRjdCQTgxRDVGRTc1OTdEOEI3MkM5MDg0Q0RCQjEwQjI2MDAzMzI0MjY4RTlDMDdEMTZCMkQ0MUVENkU4RTlBNjk2M0EzNUU5MEMxQ0E1NENBMjg1ODFBQ0MyMUM2NzQ1NTBBOTJBNkM4NzMyNTcwMjk4NzNBNERFRDhCNjUzNUE0NzJCQTJBMTIxMDRDRTA0MkIyQTczNDg0RURFQ0ZGODU5N0MyNDk3NjdBMjBCQkFCNTIzQ0JFMDg5QzhFRTEyQkZBOTBCQ0VCQThFMzI3QUJGN0EKK0U0MDEKKzcxMUU0RAorM0U0NjY1N0EKKzg3RjhFNUIzNENGNjQ1MDFDNkUwNUM5Mjg5CitENEExNEU5OTcxQzQzMzU5RTJGQ0ZEMzk4MEUxODQ4QzY1M0QxQkIxMzY1QTk2QUZDRjc0MkVGQTRFNjMyMjA3Q0M4MTcxMEIwQzZFMzRCNzQzMzZBQTUzQ0MwODIzMTk5REU3QzhDQkI5NkM0QkRDOTM5NkQxOEI0OUUyMzAwMUJGNDg4MjcyNDlBREQ5ODExMjM5MzA5MUQyMzhFNjRCQTFGODk1NUM3QTlEMEYxNAorRTkxMDhEOUMKKzUzNzU5OTJCMjRFNEZBQ0U4QzlEMzQzMzFCCitGQTlDOUEwODExQTZGNzg0RTNERUQyN0RDNzVBNDZEQzI2RUFERDIwQzI5MjFBOUUyQ0QyOTJCMjNDMUE0QkNFQTNCODM1NTMyMkZBOUM1REY5QUUwNTYzMjU3MkE5NkUxODU1MDE2MzdDNzlDQ0Y2OENBNzlFMTU3RjQ2MzU1MzZEODM5NTJEQ0Y1RTE2NDlERUI2M0VDNjFCRjVDOURBMEEwQQorMUI3OEVDQjEKK0JCQzdGNEI3QjlERUY5MDQ1MzVERTkzRjJFMkQKKzNEREIzNTIyOTFCNzA3OTUyQ0I2RjZDQjAyNkRCRTAzOTA3QjU0Q0U3OEQyNjU0RjdGRUIzQjEyQjRBODREMDdGNUE2ODU3NzlDRDA2QzQ1NEUzRkE3RDAwM0ZEQUVCQTY5NjY2MzA1QzBDNjg4NUM0MkY0MjhDMjQzOThCMDMyQjcwMEU2QzgyMkZFRTY5M0ZEOTBDOTA5MUNGOEFCQzcyRDQ3MUZFODU3OEFFQTc3OTlEODBFMjgwMjI1NUFBQTY1NERDM0JFRjI4QzVGODlENUY3MzhDMDk4QjUKKzU0N0M1QkQwCitBQjBGMEMzQkQyRkM0RkQxQjEyMUUzRjlDQgorNzJCOTlENUJDOUQzODNCMDZCOEQ1Mzk5QUNDQjYyMDI3QkQ2ODk1MjNEODI3MEQxOUJGMjUyREM1MjU3QTUwNEQ3OTFFQTJFNkM1QjdDNzgzQkM3Mzg2RDM2MTc5QkI5MDhEQ0ZFQUIxQkRFODlCMzE5MjUyNTJDQzNDMjE0MTVFNjQ2Q0Q0QTU4MTQyNjZCNUQ1NkVEMUFBRDFDMEU3QjY2NUNGNTIwRTYzRjRBN0M3NworQjYyNjI3MDgKKzVGNjhBNzI2MDk5QjQ5N0I5RkYxMDMzMThCCiszN0JEOTZDOTM5M0EyMUM3OUM3NEIwNDM3NUJFNjAxRkMyQkY2M0ZGOTY4OEFGRkJFNUUyQjBCRURDRkExMkQ4MEQ5QzJGMTkwODE5REVFOEQzN0QwMDFDRUZBNzFGMTdGMEY3MzlCMDdENTRGOTAxNzU5QzYxRUYwMDM0NTFBOUZENkY1RURBODkyMzdEMzg5QUNFNEEyM0FFMzQzQThDN0FFM0RFMDY1RDMwMTFCQkYyRjQ3RDNGCis3NTUxM0E3NgorMzY0MkZFNkM5NzdCQTQ0NUI5NTZCQTBGREZGMQorRTc2Qjc0Q0U2NjdCRTJCMTA3OTcyNUI4Njc5RDM5N0MxN0U3RTRERTg1QjNDRDA4MDdDQzE3NDVDQTJEQzFDQTU1ODc1OTRFN0ExMzJBNTRCRkREQzZCRjg0NURGNjg5RjBDNENFOEY3NjYzQzY2NEQ3MjQ5NTFGMzRDRTVGRDFDOEFCNEIyMDJEMzExRUUxM0ZGNDQ2OEJDMkZCMjA0MzgwQjQ2OTc4RUU4OTlBMkVDOTQzQkVGRUNCNTZGMThBMzY4Njg4RjQ4NjY5MTVFNUY4NDIzMUE1NkVDQkQ4NkMxOUQ5M0I3OUIzMUJCMEExODI0OUY2MDlENDIwCis3MEExCitENkRDQzREQkI2NzdGOTY4OEY0NDc4RDQ0QjJDQzY4NDE1RUJCNDlGQjIxMTg4NEZDMzNCM0NERkRGNDhCQTVENUJGQTVCMkZGMzg1MUYwN0ZFQTY2N0NDNzBDMjdCCitDOTVDRjhGOAorNEQ2RkVGQ0NCN0Q3NkExN0Y1MDlCMENERDVBRQorMkNGQ0FGM0E1QUU2NzE3OTZERTQwMTZFREI4M0E0NUZFNDY4RUVDMEY4RTgwNDE3NUM3NDVGN0YxMkQ1MzcyREEwRUZCN0JGRDk4MDcyQjdBRDAxN0Q4OTk5QzVDRTlGNzlDOTAxOEFBQzU1ODQ1RkI0QzdCMzU1Qjc4NEJBMjJGMDMzNzlFRTZEMThCQkM5M0E2NDI2MDBGNjE4RTEwQUE1NjU0Q0UyQjAyRUJENTlFRkU1MUI4OUFGMjM3OTM2OUEzM0IwNTZDN0JGNkQxNTEyRkJGM0M4RjAKK0NCRjJGMjgyCisyNEY4Qzc5RUUyQjBENDBFRjczMEEzMTRCMworRTU1RURBNUVDRUQ1MDdGMTY3MkFBM0MyOUQ3OUM2NkRBOEZDRDMwQjVGRDExREY3OUUyOEM2NjNCMTIyMkVFRTI2MkQzMzcyRjc0MkYzMTY5RTlDODRDREQxQTZBRTFCRDMzMTk4MTUzNTlCRjZCRTA2QzU2RDU3MzQ1NjkzNzlBM0VCQjI5RjZDRDZFQTRDNDgzOTg5MENGQTZDODQxMworRjUxNzBFMkUKKzk4NTBBOTc0N0VERDM5MDhCRENCNTJDRjk5MTkKK0MxOUU5NzgxN0MxODdDREIxNzUyQkIyMEFGQUEzQzAwNDQ4MUE5RkE4M0E5QURFMDdFODMwNzEyNThEQkNGMDgxQ0UxOTZBRDRGRDA2Nzk4QUUzNjZDOEI4RTY4RTdGOTk0RDc4OUE0MDQxMDk3Q0Y1OEQ3M0M5Mzc4MkEzRDIzNUFDQzlEOTI5MkUxOEZBRDFENjA4ODMxMzJBOTY4QTQxMTIzRkQyOTNBMDNENzlFNDdBRjhBOUVDNzAwMjhEOTM2OTdFQTMwOTJCM0RDOUU0NjZCMzdGNkVFNjAyMUU5MjgxNEQ3ODNGQTc3RjlBMjg3Qzk4MTE4NjBGNQorNDJBMworQzVBMDYyMzRENUUxNzQzNzJDNjY4MzUzQzlFNzAzQTE3NzRDMUFENTMyMTA3M0FFMjFFMkRBNTY1MDZDQzgyMUMzNzQ5OQorQkY1NzE1MTkKKzBGMzUxMUIwQjhFREM2RDVERERGM0YzMzE2CiswMkZFMEZDMUFDMjJFM0JEQjU2MkJEMkZCNjUwOTk1QjgzRDlBQjRBOTQyMjBDREM0RUU1Q0JFRkU0ODBCQzg1RTY3QzIwQTVCRUY0OEJFODAzQzk5Qzg1MTIzRTU1ODIwNDc2NkY4NDFENTMKKzU3QkQ0NDYxCitENTI1MkFBNkRFQkE1MERBODRGMzE1RUVEMjhBCis2MzY4MDlEMTUzRDIzRTMxOEQ3NUY4NDVCQkZFQkYwRTU4MzMxNDYyQUY3NzQ3MUExMDYwM0E3RjVBREYzOTNBQ0NBQ0M2OERDRjVFQzMyQzdEQzg1QjQ2MUQwQ0I2RkMzNUNFMUE1RkU0QTA2MzJGRkE3MkI0QThERDQ1RTI3NDg2RjA4RDRDNTg4NDU1OEFFNzM5RjVFQ0M4MDVERjhCQzczMDI3N0JGNDlBNDhENUFEQzU0RkM2MTY2RTcwMEI1NTQwNDQ3RTNGOTBCNzdCMERBOThCRkM1OUM5MzI1Rjg1Mjg2MjM2QjRCM0I3QThCNEU2OEQ0NDVBQTMKK0ZFMUEKK0E0QjlDNDA3OTU3ODkwN0YzNjI5OEZCNkZGODQwNTkzNjg0QzgzM0NDMjczQ0IxREUzNEE1QUFGOUNDRTM0CitBNzYzNzYyNworNzU5QTJDN0EyODk2RTNEQTQ2MkRBRTMzM0RBMworNzkyRUU2RjkwMkI3RUM4QjY3RTY1RUI0REZFQzVDMDcxRjVGNDg3NDYxMURDQ0NFMzE3NkRFRjI4QUZDNDE1REIzOTJBNjMxQjg4OUNEQjAzQ0NFRDg4MDREODE3OEUxMDk1NDQ1ODE2N0QzRjY5MjcxMTMxRkNBOTIzN0RFODg4REQ1MEEyREQyQ0I3QzlGNjk3QzYwMjQyNEM4M0VCRDAzRjYxREYwNjcxNEJGODBGQ0IxNEI3ODM3MEQwRjVFQ0I2NjlEQzI0MEFCMTM0NUQyMjA5N0NDCiswQzI0RDU4QQorM0I3NDY3NjI0RUM5MEEzMjQ3MTlFMEVGMTcKKzJDNzJBREU5M0VCQjFCQzQ0MjZCODg3NzYyODJBOThEQjA4MzcxQTc1QUJCNTFFQjBFQTA3RjQ0MTgzMjc1Q0RFODk0MDY1NTMwMkZEMjVGOTk3MkM1Qzg4N0ZEOEJCOEY0NzREOThBMTFGMzRBNUUxNkRBRDg1NjVGRjY0Nzk0MzY0MDY5NEJGNEYxCisxOTZFMzJCQworQkE0NTAyQzMxMEJDMjlFNjMzQUU3OUM2MDY0OQorNjE4QkUyRDkyRkJBOTJEQjhGNTVGQTQwMkI4MUI5Q0NDOTNEQjA3QzE5QTNFNTg4ODgxNDk0QkREMjUxQURDQTBDMjNGMDMxMEY3NkQ3NDFDRjM1NkVGNjAwN0JCODk5NjZFNjZCRTI5NTIxNjdEMThDNUNBMjBEQzg0OTZCNDA0MkFGODQ1MDc3QzlFNDEyNkY1Q0E2ODVEQTdBMUY3MTE1MTM4RkEzNTg2NzVEOUE5MDc5ODFFQzA1NjgwOEM5RDQ4MDQ4MUFDMzVCMTYxN0MxMzJCQUMzRTBEQ0UyNjkxMjUzN0I1MEMyMzEzRQorMjdFRDFGOUYKK0UyRURFNkM1RDQ3NDIwMTg5Rjg3RTY2NTZDRkUKKzZEMkExQTY4N0UwRDFBREUyREVBQ0I2RTE1Mjc5NEQ3RkUwQzA4OTk4MEJCNUI1OUNCMDYwNDYxMUYzNDQwNEVDRDcyNENCOTA1MzJBMzAxMTcwNjRFNjc2M0IzMTEyMDBFNjk5OEU3NzBFQ0ZGQjdDMDg0NTE3MDlBM0REQkZDODEyMDdBRTlDQUFFQjE1N0VDMTFERDI1NzNBNzlGMTU2OURFNTAyODcyNEVCMTQ3ODNDOTYzMEEyQjVEMkUzQTY3QUEwOEY2QTUzNzkzMTI4OUU4CiswMjAyREJCNQorOEM0QUZCNUE3N0MwODg1ODNEMTI4NDU2RjkKKzhCODEyMEExQTMzQ0MyOEIwQTMzQUExNkU2QzNDQTg5QTI3MDdFQTgxRDM4NjMyMjU3MDM4MENCMkE5MzkyNDVDODY3M0NBRjg0Q0JGMEM2QzdFQ0I4ODJGQ0ZBRUFFNUFDRDIzMjhDNUQ0NjdDRUVFMjFCQ0ZCN0RCNUQzRjc5NDk4MUIzQTg5ODM0RDNFMzA2QjY1OUE1QkE0NDA3Q0ZDRDFBOTMwRUVDOEU1MworQjZFQzg2QTkKKzMyRURBRTdCNDBENENEQUJGOEQyQzI2MDRFRjUKKzIyMTBGMzQzNjM3NDczODA4RUE2QUNFMjEyOTIzM0EyQ0NBMDI5QkRGNTRBQkFCOTZFRUU5NUY5OUI2RjlDOTVCRDc2RjcxRjE0MkIxMzJGMkM2REQ4OUFDNEFBRDZEOEI1MjM4NzNFMkU0NTlDNjJFRjAyRjg5RkY2NTRDNTA2NDg2MEJDQTc0NTk0NUYyRjFCQjFBNzc5NDdBQjQyNTYwRjExRDAyRUI5MzJGNTlCODIyNTg2MDA0NTM0NjlCQTAwMzIxOUNEMzQwQTFERkFGQTlCOTI1MEVDQ0FGQzQ3RDgxNURDODhDNTlGOTVGQzdCRTlBQURECitDN0EwMDk4OAorRDk2NDgxMkQ4NDlEMzYxRDkwMEVGOTM1MDQKKzJEMzA0OTg2REMzRUM4REI4REM3NEVDRTQ3QUYxMEU1QjcxODg2N0I3MTlBMjYyRTA3NzQ1NkVFN0U0REYxNTk0RDZCOEE5MkVCNDczMjE1QUVERUI2QkFCQjU0NTdFMUEzNzE5NkFCOEVGNTUwNDFDNDZEMzcxOEQ5NEM3RkYzOTQzMTlDNUNFNworRjY5RjBDNkMKKzBCNzUwNEI5QkNCQjRFMkFFM0U1NjIxMDY5Cis5OEY3RkJGQTY0NjlCRTg4NjZEQzlGMzRDRUU5MTYzQzcxMjlBRUE5NDZERUVCMTE0RkUyRTY1NUE5NDJERjkyODIyNjE1MDZFMTFFQTJCNEFBODhBM0JFNDlDNzk2NjhDRDNENzk0RUM3MkUzQTAxNzZFRjZCOUU4MzM5NjJFMUEzMUQzRDgwNDkxMzNEQzQ0NjE0RTNDQjFDRjlEMEQ1QzhCQzFBMkQ4N0FDRjM2QTY3ODYzNDkyNEVEMEQwMEFFNjA5CisyOTgzRDQzRAorMDhBRDA1Qjg2OTNDNkM1OThCQTUwRENBMkUKK0JFRTJGQjkzNjdCQkREMjlDRDYyNkFDNTRBRkVFREEwNjJBQTM2MjhDRTRCMUFDM0NEQUE5QTgzMzJEM0QwOTM5RjJBMTE4NjhCQkZEQ0E0NDVGN0YxNDhBQjMxQTkxNDA3NkQ0MUFFNEMyNTBBNDcxMTdFOTk1N0I5RkE2QjdGNEVBMzNDMENGQzAyMDM2OTBBRTNGMTM4OUIyNEUwMjVDN0QwMjAzQkE0NUJCRkI5NzMKKzlDNUI4NjJBCiswOEQ0ODBGQTE2NTAyRjU1MEI0QkVCNTEyRUFCCis5NUFDODk5RDAyRTlEODAwRDQ3ODBBRkMyNEM3MDAyMDI2MjE2Mjg2NzY1MDQwMzQwRDNCMThEM0U0NkRCNzgyOUYyQjU3ODhBRTg0RjU3MjlGQURGRjdEMzVFMkU2OTVFQ0UzREM4MjUyQTU1QzBGMTk5MDA3MTA3QUY1ODEyQzY4NTlCNUU0MjY4QTVFNTBBMTEwNjdGNzFERTQ3NTAwMzFFOTA4OTQ5M0IyMTRDNjBGMTBGRDdGNUU1NTQ1NkNERTZBRjM2RUFENjQ3ODIwNkNEODk3MjQ4RERGMjk4MTZGRDE2MEI0QTk4QjQ0RkI0MDdFODkyOTM1RkUKKzUzODAKK0M4QkE0RjEwNjZFODk4MDI4RjQ1MkI5MTFDREMKKzhBODA0NURFCis4MkUxRERGNzZFQ0Q1RkQ4RTBCRTYwRTEzMUVECis5QUU5QUU1MUY2RkQzMTU1NzE0MkNDMzNBMEQxQkNBMkUxRkU5N0JGQUQ4NUQzMkQ5MTNFOEExQ0MwM0ZGQURCRjg5QUMxNTcxNkYwQkMzNzgyM0Q3RkE2MjEzQTY1Nzc0OTEzRTdCODNBQURGOTdEOEEwNkM3QzUwMjY3RDFBQjJBOTYyMENDNTM4RDE1OTBFMDM4NTZDNEZBNjREMjk3RkJERjQzRERGNDA3RTcxODBFNjNFMkI5MTYzOEFBMzgxQkI0QTcxOTBFMTgwQTA0MzZFQUY1RjMzMzBEOTYzOEYyMzU3NzUyOUY4MjJBNzU3NDYxOTA3OEE3M0IKK0M0RUYKKzExRTUzNDUzNjg1QTQyRkQ0MUU0NDAxMzg4NzYxNTIxRDAyNDlFN0U1QzZFQ0RGRjI3Cis0MTQ0OTJGMgorRDIyNUZCRUNCNTczRDE0OTI1OENGNTNDQjNFNQorMjc5NDM3NjkyMUU5QzVBNzVDNjZGQTBGQzFGRTlENkZGNDk2NTUzQTI5NDdBNTBCQTkwQTlBRjVEQTg2MzFFNEU2QjVEMDk1QzJCNjY0QkIxQzU1NkNGRERBRDM4RDY1OUE4RjY3NTFDMjA2MTY3QTRFMjEwRTE3M0JBNzVBOTQ5MEE4QTU5MEMyM0JFQzA0ODM4NkU0QjhFMzJDN0U4RTMwMDVDNUI0NTM3MUZBQ0YyQjExRjYwQzFGNDdGNzVGM0NFOENDNEM2NTE1Q0EwRkU3RUYzODhDNzlGNjAyOEI4QkMzOURGN0Q2ODVDODUxQzZGODBGQzdGMURCCis1RTYyCisxRTgyNzFFMAorNTNCODlDODAxNjFDM0ZBMUE1OEU3RDMyN0YKKzBGNEMxMTdGQThFMzRENzVDNkQ3NEZGNDdGOTc3NzI1OTA4RkNGNUE1NEE2Q0MzNDIyQjRBQTZGMjkwNDIxOUZCMUU2RThEQUI3RjlDMzA4NTdEMDQxOUEyODgzM0YxQ0I5NkVBNDM4MzNGQkY1Q0MxQTk3RkREMUQxRDY2MAorMzQ3NTFGN0QKK0E3MzdDNDczOENFMkU4MTMwMUJBNDI4Q0Q4NzIKKzI1QzdGRjI4NDNENkQ3RDBCQUU5OUNDODBCQjg2MzY4MEFEMjY4RTQ2MDE3RTFBRUU0NjhCQTdEMUM1MEE5NDhCRjU2QzFDMDk3REU5MzNCNUE1RjFGRDIwRTE3MjgxN0U3RkU1ODRBQTU3M0Y2Qjg1NDQ2NjZDMkRFRDk5NTEwNDE0MzJCMUYzMUVEMTU4OTdDNTc2NjUxOUZFMjUwMURDQzk4MUQ0OTRFOTcxNEJGQTAwMkNBRkFDNDBFRDVDNEU3MUE3Qzk2RkYyNkRCNUI0OQorN0FCRUE2NDAKKzY2MzI3QUEyNkEzMDIyNzY1QzYzQ0YzOTFBCitEQTJERjQ0MEQ4RTIwQjk4MERDNzdFNTgxNDRCRjJBRDdBNTQ5MzBBRjlCMworMTRFQURBMTIKKzRFM0MwOUIzNTdDRjUxN0ZFNEJCRkNFQkM1NzkKKzlCNDgwNzUxMUI1NjVGQTUKKzY4NUQwQ0RCCisxMUQ5MjEzOEY0RDY0ODExNTEyOEYxQTU5NDYwQTEwOUU0Mzc2RkYwN0M0N0Q0QzYzMDk1MjQxQzM2Q0RDQkRENThCNworQjlDQkYyQ0MyMjYwODkxNjM4RUYxQkJGNUIwREE2Q0NCNEVFNkYyODBDRDIwNkVBQjVGOEMyRkI3N0RBQUVGMURFRkM2RTc0MDY4NgorMzZBQjEwRjM0Q0VCRTg3RDJBNjk4OUM5MjIyMUJEMjFBNTgzQzREOTc1RjkzNDVFNjRDMjNBCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ1IHB1dAorZHVwIDMgL0MwMDQ3IHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY3IHB1dAorZHVwIDYgL0MwMDY4IHB1dAorZHVwIDcgL0MwMDY5IHB1dAorZHVwIDggL0MwMDcyIHB1dAorZHVwIDkgL0MwMDczIHB1dAorZHVwIDEwIC9DMDA3NiBwdXQKK2R1cCAxMSAvQzAwNzggcHV0CitkdXAgMTIgL0MwMDc5IHB1dAorZHVwIDEzIC9DMDA4MCBwdXQKK2R1cCAxNCAvQzAwODMgcHV0CitkdXAgMTUgL0MwMDg0IHB1dAorZHVwIDE2IC9DMDA5NyBwdXQKK2R1cCAxNyAvQzAwOTkgcHV0CitkdXAgMTggL0MwMTAwIHB1dAorZHVwIDE5IC9DMDEwMSBwdXQKK2R1cCAyMCAvQzAxMDIgcHV0CitkdXAgMjEgL0MwMTAzIHB1dAorZHVwIDIyIC9DMDEwNCBwdXQKK2R1cCAyMyAvQzAxMDUgcHV0CitkdXAgMjQgL0MwMTA4IHB1dAorZHVwIDI1IC9DMDEwOSBwdXQKK2R1cCAyNiAvQzAxMTAgcHV0CitkdXAgMjcgL0MwMTExIHB1dAorZHVwIDI4IC9DMDExMiBwdXQKK2R1cCAyOSAvQzAxMTQgcHV0CitkdXAgMzAgL0MwMTE1IHB1dAorZHVwIDMxIC9DMDExNiBwdXQKK2R1cCAzMiAvQzAxMTkgcHV0CitkdXAgMzMgL0MwMTIxIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xOCAtMjA5IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzQ5QkJFNDNBQzEyQTdDMTNCNDdDMjk5RDg5NDgxQzY5REIKKzk0RDUyNkRENzE0MUJDRDY3QTIwRkY5QQorRDdBNjU4QThCODcyMzA3RUVBCis2NUZFREI5QgorRTYyQjRBQ0FEMDVBRjFBNEQ5REExQTU3NTIKK0I1MjIyRURENkM5Qzg5MDg3Mzk2RDZCQjlFMkY4OTJCNTM1RDdDRTE5MTA2NjkKKzMwNjkzMDI3CitFOTNDOTM3MjFDMzBFMzNDMzFBQUE5Nzk1MworNjBDODNENTMwRkRGNjYzQUY5NUNBQzI3NzdBREFBQjA2MzBDRTE4MEMzQjE1MzU4MkM4RAorMDlERjYwMjgKK0JDOTQ1OTBDRjdDOEUyREMxOEFEMUQ1RTVDCis1RjQ3Nzc1QUQ0NzcxNTg5M0UyQ0I4QjY1MjhFNkM3MDcyQ0Y3Q0I4MjM1MjY0MzlGMDVDQ0FCRTVFNTk1RUE4OThCQjI3QUY4NkU4QzM0NjExRTFFMkFGNkY4NzBCODg0MDcyRkEwMEE1NTcKKzZBRjY5QjdECis3MUM0QjA2QTg5M0EzRkQwRERCNUExQzE0N0JCCis0NjgyMUJBNjkwMjBBN0M5QkYzQUY1QzVCQ0IzMjBGMjNENzE3MTYwMTg4NTMyMTRCMTVCQkFBNUI1OTUzMTMwMjI0QzVFMDlGRDAyRDczMjkxRDYxRjc4QzFFRkEzMDBBNjI4N0YxNzExOUM0N0ZCQThENzQ2MzA4QTQxQzIzMUE5NERGODJBOUZCNkVBQzE3OTY3NzBCRjJDNkIwMUFCRTY2OTk3RUI1NTQ5OEU1REFGMTI1NzE4NjlGODVBRjdEOTYxMjM2OUIxNEFFMjQxCis5QTZERjAyOAorRThEQzg3QjhBMDcyQTMzMjNGNTE4RjUyQTIKKzNENjA1MTU1RDJENjQyRTFCRkM2MERCNDVENjU5RjM2RDc1QURENjA0QkQ0RjYwOUI4QjJBRkQzREUwOTEzOUM4MkY2REVEQTdBMTE3RDFDNTAzQzgzOTcyQkE4QkU2MjYwNkQ0NkM4Q0U2RDU2NkMzN0I5NDBBMDk4RDFCMEVDOUZGQkE0MTdGODhGNEQ4NjFEOERBREYwNjlEOEQxQ0Y2MzQ0NEYyNzBGMEQ3NAorNzU2NTYxNjYKKzJEQjFCQkMzRDQ1OUI2OTI0QzBCREY2N0Q4MzYKKzkyRjlFMThFOUExNzE0QjFGN0JERTU2MDkzN0ZGQzAyNUM5RkI5M0Q0RkM3RjQ3NkUwNkMyM0UzMEM1MERFMEQ4OENBODQ2RDRFQzMyRjhEQjU1NDFEQzIyMkM5MEM3MEE2NzE3Q0U5MzZDQjg5QjRGRjA0NkQzQ0E0NkJENkE3QTBGOTE3NjAxMzI4MTlGNjg5ODIyQkM5NDBDMTY3N0M0OEVFNjFERDA2NEMxQUUyRUIxRUUyNEQyNzJDMDYxQTMzRkI3N0I2MzhBNDg2NkI4MzNDRkZFQTVDNTgKK0UzQTQxNEVDCis0RTQxNTc1NzBFNEIzQzNFNTc0RTIwNjlFNjU4CiswOUI3QTFBNUQ2M0NEMDhENzk4NjI1ODlGQTA2N0FEREZFRkE4QkY4MkUwQUVCNjQ4MzcxRDYzRTYwMzEyQTQzOEQyRTRFREQ5MTY3NjA5MTgyMjM2OTU4RjhEN0E4RjZFMUEzQjNCRTZBQUY1N0E0QzU5RUVEQTQ3NTEwMDc5MkM1QUFDQzZDQzg2QzAzNEQxREZDQkMzQ0JCNjQ1NEQyMjU1RjMwQzgxRjFGOTQ5MUMxODQzNkQwRDk0QUYwMDk4MTFFMUI5QTQ1OTcyQ0NBRTM2RTg5MjZBNTc5RjA5N0NDNkIxNDM4MDM5OEZECis5RTJERDk0RQorMjJEODU0QzREMTQ1NkE2Rjg5MUVBNjQ3MkIKKzk5NDgwNkQwQkI5MDZGRjcwNEIxMkREMTI4NjgyMUY3QTkzNDk5NDNFNzg5QjQwN0ExOUU4QUVDMDRGNTY1MTNBOTlEQzQ2NDhCNTk4Nzc5NThERjQyMUEyNzVCNzM4Nzg5M0U4RDUwMjU3OTg3NzQxMTlCNjA1OENCQjkKKzQwNzJFNjIwCitEMTAwQ0Q0N0JDQUUwQzJFRjUwMDE0RkUxRAorQzg5MjFDMEUwRDlFNjFGRkZDRTQ0NTc2QjdEMDhEMTBFQjkxNEQwRTRFOEFFRDYxRjg0MDY5MjkwNDQ1NDEwOEI0RDk3QTg0MjkyOURGQjNFMEFGMUJDNkZERDdBMzRFMzQ3QTVDNDk0RDYwOEVBOUVFMkUwMEQxNzAyNjIxREU2QUQ5NUE1NDNCQzFDQUYzNUMKKzg1MzU1MDIwCis1NEE5MEYwQjczRjlDREFGQjdENUYyNjVCRQorQkRDQTRDNTg3MkQzOUJBNzAwMjlDMDIyOTVCRTFDREE5RUQzOTgyRUI3RDQ4MjU2NzMyNjRGNUFCQkFBMjNEMkJERERDQTcyQjlGRTIzMUJDRUNGRjFFMzgzMUEzOTQzMkJEOUMzNkY5MUM4RjUxREM4RDQ2NEVCNTlGOTRCM0NEMERDQjU4QUI0RkI1MkQ3MkU4RDREQzY0QTIyMTVCNEM3NzNFMUEyOTdBRjg0OUY0Q0Y0NzhGQjI3QUU2NworQjlBQUVDRkYKK0NDN0IwODcyNkQ4NDNEQTVEOTlCNTAxRjIxMkMKKzA0RERDRjE0M0QyNzA5NzMxNDZCNTZENUUxM0Y2MTU3MEQ1Rjc1Q0NCRDIxRjE1MDZDRENGOTVGRUZDQTIwOTlFM0JCRjgwMTgyQTJDOUJFRDNEMzFFRjIwMjI4QUNBN0NGQjVFMzYwQTIxQjdGMzExNDM2QTAzMzY4QzBDRDY5OUE5NEM3RjAwNTQyM0M3RDdBOTM4M0YwNUU2OTAwMzQ2NTBFRjZBNDI3RUQxOUM1QjEzMzM4MTU5QzRCNkFDOTZCRDk5QkQyNTI4NTNGNjVBMworMTM0NUE0QzcKKzlCOTc2NTlFOTJERkQ4M0YwMzhDQjIwOTc0OUMKK0Q4NTk2MzQ2MzFCMDRBQzA2RDIxODhDMDRGQTExOUQ4MUI4Q0YwNzJFMTdEMEE5RDNFMkM4MkUyQjE1Q0U2MDUzOUJCMUI1RkI1RThFMTdEMzJCMjBGOUQ5NEQ4MjBCQzRDQzlDQ0Y4NTRBN0RGNEE4ODQ4N0E1NTc4NDA3RkU5MDA2RTJEM0IyNDgwQzEyMDNEQTNCODVDOTc0RTU1OUI5MDlFN0YzODc2MTVCODQxQjk2QUVBOURFMjVEMTVCOUYyQjJBMkNFCis3OTRERjAxNAorNUQ2QzM0RjM3Q0JBNzFGMUJCNzA4MEE5MDNDQworNDE5MjY4NjBFMEFDNzJCQzhGQzkyQzM3RkQ4RURDMTQ3RjczODUwMzBGMEQ1OTlGRUU1RDA0OTFCQTg4QzdBMUNDRUJDOUEwOEMyNzg4OTBDRTMxOUFGOTdFQ0FCNDMxMzJDMTUxN0Q4NzE2OEM5NEI1RDBEQzUxMEFEM0E4RDk2QzcyNjlENjk3NDc2RTY3OTZFOEVEQTUwMjdBMDVFNTJFN0ZBRDY0MEExMTM3OEQyNzdGMUZGRUUyMzc0QTlEMjkzN0NGOThENUE2OUVFQUE2RThDQTRCMzQ4MTQ2RkM1QkNGRTNCQTU0MDE5Rjc5MjNCMjMxQTgyRTc2CitDRTEzCisyNkM0MDVBQgorNjhBQTgxOUUyNEY2NEJCNjRCQzk5MzdFQTkKK0ZGQUY4QzA3RUExQjlGRjk4QzdFNDIxQ0FFQ0Y5RDgzMjkxOTk1MTUzRTAzNjJGNDVENjJFODY1NkRCRDhCMzg3NzNGOTU1NEM3QzVCMDk1MDUzMkM0MjY3MzJGOUNDRkYwMUU1QUUyRjZFOEE2RjNBQTQyRUFEQjJGOUE4RDUyRDFGMjA0REIzRjRBMTE1NkI2CisyNkQ5RjFCMworREJBQTA4MUNFNDAxNjI0NDkxNkQ5MEY1QzkyQworNjg2RjEyMkRGQjMzNDZEMzhDM0ZERTY3N0FCMThEOTRDRkRCQjUwREY5QUQ2M0ZCMjNENzg5REI2NDM2NEU0QTQwRUQzNUJEMEU2MTlCMjIxQjc5NTY4OTdFRDg2NjQwODZENzcyQjc3NEJFQjRDNjJCQUVFQjhEQzhCMjZENTNDQUI3QjFGMUE1MzQ5MzI4MUMzQTA0NTk0RkJDMTBDOTAyMjQ1NzNGMUM2OEI4N0IzNzIzNDUyRkQxRkNFMDhCNjREOTQxMTI1Q0U3MUMxOTY5NEVFQTc2MDJFNjEyMkNCMTFGM0E3NDdCRDRBRTk5NUE1OUQzMzc0MkM4Cis0OUIzCiszQjk4MUQ3NworQUU3NDJEMjUKKzRCQTZDQkZFNTgzMDQ5NUQ0Njg2NTBBRDIwCitBNzdBQjIzQ0RDRkQ5MkRCRUFBMURFNjk3QkY2OEVERTI5MDE4NkE4QjQ0RjEyNzZGODBBN0Q2MzBFODQ3NDM4QTRBOEQxQTNERTQ2OUNFQjlDREY1NkFFNTk3MzJFQzc1ODVCMjdGQzQ3RTY5NEJFMzQ4OTk4NUU0MkNEMTZCQTU1QTE4MTZCOTBGRkIyNDI2MkRENjhFM0Y0RUI5MjNFQTkwMworOTYxRjQ2MUUKKzgyMUZCRTUzRDI3MkI2RERGRTNEMEZENDRDMzUKKzI1MDMyOUQ1MTk3OTFBNzc0RDYwRUI1QkEzMUNERDc5QjE0NDg5MzQ5RTRBRDRDQjM4MDk1QjEzODYwMjdFQTcwMDRDRDQ5QUExMjRGNEYxNjRFRkUzMEE0OUJGRENEQUNCRDdCQkY3RkRFMEZCNjJFQThDNUYwNTBGRDk2MjE4NzZGRjNBQ0YzRkRBNDdGRDA1NTQxNzI0RDNCRTkzMjgxMjNERUM4QzU4MDc4RDc4QUY1M0U0OEEzMTkxNjcxRjUxNEU1MzU4OEIxMUE1NEM1Q0Q0MzVEOQorNzY1REUxRkUKK0U1NEI4MTU0N0M1QjgwODk4OEM1RUM4RjFDCiswODVEMkVCOUY5ODQwRkFDQTUzNDBGQzI1QjA4ODM2NEY3Mjc4REUxRDQ5QkY5REJDRjcyRkQwODRDMzY1RENGMkI4MzY2QzMzNTFEQ0JFRDA4MDdEOEI5MkRERjczNkI5RTdDNDc0N0UxQzUxRjQ1QjA1NDhBNUFGRTYyQTgwRTkwMENBQzM2RjU1MUQ2MkQxRkRFNTEwOUZEQUVBMTU3RUVBMDBCRTkxRjQwNUNFMEQ4QjlEQjBGCiswMDU5Njk4MQorQzRCOTlCRDJDNkM1M0Q2OENENEQ5MEI2MDYKKzhBNTIzNUE5RUVDNjAxQjk1QzdGRjU4MkU2OEE4MkZEMEExN0Y3MTE3MUU5QzcxNjMyRjU2Q0VGQzgwMkE4MjhENThDNzI4NkYzOUU1QzM1ODk1MDQ3OUUyMTUzQzI4N0UxNzA2MTQ2MDRBMjZCOUZEMDcwMzMyQTZFREE4MEI1QzNBMjExM0ZBRTdBQ0Q3RjNCMzM5MUZCMUY1Njg1MTIzMkFDRTMzQjlFNjg2RTk0NURGRUI3QkYyNgorQkE3NTc0MEYKKzE1MEFENjcyRDA2NzdCOUY0MkIwRjBENkREREUKKzJENjMwRTYwODBFNzJEM0RGQjc5QUY5OTUwREFEQjE1NTE4NzYwNkYzMjk2NTk0NzVFRDVBNUM1RUI1RkY0MkJBRTUyNEQ3N0NERTQ4OEU0NzdERTQxM0Q3RDVFMDEzRjhEMDMwNzM4M0VCQTBEM0UzMEY5MTczMzZCQjhGRjcyOTg1QzlGNTE0NjcxQkEwQkFDNDlCRDA4NThERUJFN0JGNzU2MURGNDVEOTcwM0VDODUzMTkzNTRFMEQ2MjZBMzU4MzIxNUMzNzZBREQzQTJBNjVFREI4MURDNEI0RkJFMUY3RjkwNTM3MjU3RDZCNjEzNzQxRjVEOTQxRQorQUEzNworNDgyRDdEQjk1RDI0RTBCOUFFOTA3QjdDMTAzMTgwRTRBN0U5MzAzQjZCMTU2NTFFNzM5RUFDMjNGMjZDNkNDQ0FFRkRDNTFDNDUKKzU0MTg4NUI3Cis3NDlBMkIxRTk5NTk4QjFBNUY3NTE4REIwNjJCCis1NDBGRDk2QTVFMTFENzFBMjA2NjlFRDY2OTgwMjAwQ0NFMjJGNzc1RDgwNTMwQUVGMjM0Nzk5MzVFNEUwMTMwRTQ1M0QzRTkxQzlDRTRBMUU3MUM5MzY0MUQ1NzhBMTU2NUNBRUVFOEREODYwOEEzNEU0QTFBMEQ2RkU1QkUzRkEyMDQ3RjhCRTI3MjcyMkI4NEMyMTEyNkEzQzRDRkUwMzNFRDAxRTY1NUIwODAxNjNBNkY5ODY1MzU1Q0JBMkFGQ0FERTU1NzM1QjJGRDQ1Cis0NjJBNEQ3NgorQzREREFFREU0RjZDMzE3NkFEN0RDQ0YwREUKKzU0Qjk5NkM3ODUzN0EzMjEwRTExNEUwQUU3QTM1ODZGRDIxQzUzNzRDMkI2M0M3RjM3OUExRjhGOUMwRjRBRDRCQzQwRDQ1RjA5NEJFQTczOEUwNDU0MDEzRkY4NzRCNTQwOEMzRkJEOTZGQzgwMUE1QTI0MjdDNEVEQTI5N0IzRTBGQ0ZEQTFGQzhGNDU4M0IxMzJDNjgwNUY5QQorQTJENzZEMTEKKzJGQTIyRkE5OTM3MkZGQUUxNDAxRDczOTExCisyNzQ2OEREMjY0OTBFQzI0NjI1NzBEMjNGNTZENkI0NTJCNjBCQUVDQzZGN0RFQTJBOUUxQkI0QjFBRDdDRTYyMTBENURDMjZBNjJEN0U4NUM3QTg2NjMyODRDRDhGMDIzRjE2REFBMgorNTZCNUQ2QzUKK0M3RDkwMjE1MDhEM0RGNUNCOTJEOTQxNEE4NkEKK0MzMENENzkxMzU4OTcwNkM3REVGOERCNEM1M0FEMkZBMTk1ODc3RjVGRjk5NjQ5MjM3NUFDQzlDMDk0ODMxMTQ3RjA2MjMyMDBDMjBCNUZGQUZERjJBNDg4QjE0MDI2NUIxRTFEQkQ5RTVCREQ0NzI1QTRCRUE3OUY4RUU4OEY5MkVDNTg0M0I2N0I4RTY3QzE0NjRERTgxQUUzNzI3MEFFRTAxODA3NERBNUVCQTQ1MzhFRDgyQjdFNDIyODgzNjExRTIwRjQzOUI4MTdGRTExQkQ1MDExODc0QTUwREVEQjU5QzkwQzIzMEM5MjBBMUNCMkYyNjA2NTgwOQorNEE0QQorOTkwOEY2QkE0MDdBQkJDQzk3RUE3NDQwNjFFNkZCMUM3NDcxNjA0RTIzRUVGM0NBQzRFRTFFQTkKKzlDNEFGM0I0CitCRjc5NDBEQTgwQTE4Qzc5QTdGQzFFMUVBOEQ5CiszQzRGMzBFQUE0RjUxMjAxQzlFNjMxRTcwNEZBOUIzQUQxQzNBMTRDNEI3RTNDQzVCQTYyQkE5MEE0NzQ1QzRFQjM3MjQ4QTg5MDkwMzk1Q0FEMzhBMzU5QjE2Nzc3Q0VEQ0E0M0M4RkVDREE3QUVFN0QwQTczMTJBMkNEQTg2M0ExNjgyQUU5N0VGNTlFRTBENDA0MjcxNzVCRkU0M0M2NkI1NjRFRDYyNTFGNzNBNjlGMzM4MEIyNjEwNTc3Rjk3NDZCQUU4MzIzQzEwMAorMDEyMjc1MzgKK0YwMzk0MDk0N0U2QkVCN0NERTRDQUM5RDMzCitGQzQ5RTg1RTZCNTZBMzI5M0MyQ0JCNDhFNzM5Q0M4NzY3NUVFMjhCNDQ0MDMwQUIwOEQxNjNGQkUyMTBBMEI1QjcyNTZDRTQ5OEU1M0RCRDQ1NkVEMERCRkU2RjJGRkE4RTNFNjQ2MUQ1Mjc4MUNDQjhBNUZCQTIwMzZBMDdGRTcwN0ZGNDlFQjM5RQorODJCMjkxMzkKK0E3NDk3MzUyNzk0QzM1ODE0NDVENTBCMzE2NTAKK0NCMkZFNDIzREFDMzFDNDNDMjBFODJEMkUwODk4M0I5ODZDNTM1MTRFMzA5MkM1NkVBRkM3OUY2NzIwOEI1RjA1MTVGRUI3N0Y2Q0MwRDM3RTg4OEMwRTNFRDY3N0Q5MTM3NTZFQjZBRTBBMTBEQTcwMEI3NzMwRDJBNzVDMTU2RUJCMzE0NkY5OThBOTdFNDg1RkVBMDQ4NTFFQjhDNkU1MEYxQjU2QURGREI4RkU4Q0MwMjJBOUJBODc5MkJFNkY1MjE4RERDQjc5MDVEMDU1QTZBMTg2OUEzN0Q5MDRFQzAKKzkyRTEyQjIwCitDMDkwMTBCQjg4RDJBN0NBQjA1OTI4QUU2OAorNDAzQUM3RDJCQTc4OEZENUI1NEY2Rjc2QzZERTNFMUVGNEFGRDc5N0IzREY4N0JENUQ0MkM0QkQ4MTVDODQyMTYzMUVFMzMyOUY1QTZCN0Q2NjEzMEREMjUwM0M0MDgwNEZBMjgyMTFFQjVDRjQ0OTM3QkVBMjdEQkJGNjM5MDZCMzM1MkVBMUMwRjJCNjFGRjE5MzIxRDBFMDg5OTc1NDY5MjJFMUQxRTQ4QTM4MDU3OQorMUI4OEI1QjEKKzgxMjUzMjdERjhFNTJGQjMwNkRFOTA3QTE3ODYKKzhBQUNGMzIyNTc5QzgyNEE2OTZDN0U4NDhERkVFQzlBOEIwRjNEN0M2Njg4RkEyRTNGN0MxNDkyNjNBRTUwRjVBMDdCRDg5NDFGOUU3NzdBRDJDMUQyODcwM0IxOTBCOUIyRDQ2MDExNzkyRTQ5ODcwQjc4OEUxQUE1M0E2MDkyRTI0QkExMzQ3QzE0MEEyRDI5NUFDRkEyRTk2QUZBNDFCOTdBQzk5OUExMDk4RDk5NDIzQjEzMjQ5NjRCQzZGRTY4NzRBRTJDMDBCNTI3MkJEREVFRDkzMkFEMDEwMDE4QjcwMEVDRTYzQ0M4NjNDRERCCis4RkFENTlEMAorQUE4OEU5QUI0MDlGNDJEMDRENTBERDQzMTMKK0U0RTk1RUY3QTBGNUM4NzU5RTgxRDVCQ0MyRDU2NEMzODRGM0M4RjVEMjI5RjFCQzg1NzRBRTgwMEJFQjA1ODA2RTJCNDlENzREQzczRkNDNTUwMjc0NEQ1MTQ3RTY2MzQwQzg5NkY0OUUwRkQ5OTZCQjU3OUM3RDcxNDBGMDI1MjU2NTJFRTkKK0ZDMjE2OTBCCitBRkY1MDZENDMxNTZCRTQ2N0ZEQjVBNTk1RjBECis0QTkzQjY1NkM0QjZCNzQ1RkY2NkJBM0E3OTdEREZFQUMxNDJGQUI5OENCQzlFNTRFQkMxMzU0ODE5QTVFMzU0Q0I1Qjc3OTBGNTEyQTFBNkExNUM0MDdBQUEwNzcwM0NCRDhCRDQ0MzZEMTk0RjJFNjQ4RTI3MzhGM0IyNkJCQzc0OTdEQkVCMTQyRUQ2NDI5MjdFOUIxQ0VEOUIzQTdFQzQxQ0Y4RjlBMzY2NjY1MzdENkRCOTJDNjc3NDBFNThBMDNFRjU2MTdFRkMyRThCRjYzQjE2NDg4RjU2NEJGNzQyOTkzM0FFRjQ0MDcyODRFQzQxNkVDMjUwQkIKKzNGOEEKKzVCMDIzRURBMkFDRDQwMTFDOUY1OTEKKzA3MUQ4RjY0CitBMzRDNEI5MEMwMDVDQzc0RjQ4QTAyMjM4OTE3CitFMjcwRkY2QjE4ODIxRUY5RTZGMUQ1NzdFOTk4MTBGNjU3Q0Q0QUUxQkVENDlBNjkwQTQ5MEEzN0UxNUI0NTJFMkU2ODIxQkMwMzNERDcwMkUwMkE1Njc5Q0IzMTNENEVCQkRDOUQ5QkQyNEU2MjU0OTNDNjMzRjg4NkQ1RTA3RUFGMDEwNTZBOUU4MTJCNkY0RDJGRUQ0N0I0QTI3NDM0OTc1QkVCNjU1QjNENzZGOUUyOTcyQTgxNUMwNjIxNEYxQjIzMzVBQ0MzRTRGRjcxOTcwNjJFMENDMTIwNDNENTlGMzdCQjVGQkQyMTg3NEM0ODIwNTcwQjcxODAKKzhENUUKKzRBCitGNEU3OUEwQQorNjBCMDE5NkQ0RTI1Q0Q3RDFEQzMzRDFERDgzRAorQ0VENUIwRDEyRTk3RTM5MAorNTZDRDBFOEQKK0FBQUJBNTJBNjdGODBFODM3NjRGNjdBQTNFNjQyNUUzNDU1QTIxMjQ2RURFNUU3MTQ4M0EyMjJFQTY2NUQ1MjI1QjlDCitGRjI4QjMzRTcxNTVCMEI0RjcwOUY2RTk4NTY2MEIzREYwMzg5QjI2RjY5QjZENDU2RUYzQTgwREE4RUFBRjYwNjREQjY3QUMyRDI1CitENzE1RThCQkYyNDFEMjZEQUI3NjlDODJBQTY3MEM4NDMxNzYyMDRBRTQyRTlDRDMxNTBDMEIKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTcgcHV0CitkdXAgMiAvQzAwOTkgcHV0CitkdXAgMyAvQzAxMDAgcHV0CitkdXAgNCAvQzAxMDEgcHV0CitkdXAgNSAvQzAxMDQgcHV0CitkdXAgNiAvQzAxMDUgcHV0CitkdXAgNyAvQzAxMDggcHV0CitkdXAgOCAvQzAxMDkgcHV0CitkdXAgOSAvQzAxMTEgcHV0CitkdXAgMTAgL0MwMTEyIHB1dAorZHVwIDExIC9DMDExNCBwdXQKK2R1cCAxMiAvQzAxMTUgcHV0CitkdXAgMTMgL0MwMTE2IHB1dAorZHVwIDE0IC9DMDExNyBwdXQKK2R1cCAxNSAvQzAxMTggcHV0CitkdXAgMTYgL0MwMTIyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xNDQgLTIyNyA3NTcgNzI4XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVEN0M3M0UwRDlGQkMyQzUxRkM1RDdBNEM4NDY2QTBBQ0YzCitFRjZBNTFFODU4ODE4OTNGNUY4QkM4NDMwMjA4Cis4N0YzMTAzRjc3MjFFMTM3RkExRjVFMEFBNjY4QjkyRkQ1MjI3OUU2NkMxRjg4RTIyNUYxRDAwNTI1QjAzNjI1NjAwRUVFOUFBMEYzQkM3NzQ4NzVDNzhDOERBMzQ4NUYxNzY3NUM0OTU3NTk5NkE3M0FGQ0RGQzVDMDQzRkYxNTI0MEYyNzY2RDM2MEIyOTVEOUYzNTc1Nzg4MkYyMDIzMUNEMjNENEIxRDQ0NjQ5RkFDMkY5NDZDNTI0NEEyMkY2MkY5OERDODkwMDQ5N0RCODgwRUUzMEJFQzRCRTMwMTFDMTA4QkIxNjAzRkM5RTQ1MDg3QjRDM0Y3QjQKKzM4MEUKK0RCN0JFRERGRDgxMEJGRTU1QTUxRkE5MkU3CitDNUUwMjc2MAorMkZFQTZFMUM3QkM4MTZCMzc5QjlCQjY5MEIKKzNGMUY4RDVEMTNCMkZBMENBMTNCMzJFMjMxQUQ2NzAxRjg1RTcyNEU3M0VFNUNBQjc1MkExRjAxOTI0RTU3RUMzMzI1NjE0N0E5RDE1QzJCRUQxM0U1Qjk4NjhFNDYzRDBDRjk3Q0Y3OTUyMEQxOThFRjdFOUE0RTg0MzM2MTVENDNBREI0MkU3OTU3MDA2ODg2MEFGODE2M0RGQTMyRTFGMUFBOUQ4NEEwNTg5QzMxNkE3NTUxMDc1MzIxNDUxNworNjVCMDI0RUEKKzJDQUUzM0RFQUZFMkZDRkVDMDU1QkNDNkU4MDcKKzhBNTNCNDQ1RDkyMzgyMEMwQjNDM0I3NzVCRkExODU4QjQ5NEEzRTFFRDU3OUI0QjcwMjFCMjc0N0NBN0RCOUJBODEwRDAzQzEyMzg2MEFGNzMyRDZDRUM3QTE3NEU1QURCMkRGMkM0ODQ1OUI3REE5MTA5OUI5RUE0REZEMjcwNjAwNzAwNDdCOEZFRDU3ODUyQkE1NkYwQzc1QjA5RDk1MzE1ODQxQTFENjM3MDAyNjEyRjczMUFGOEVFNDA0N0RFRDVEOEU1M0JBNTUyQkVFRjVENzkwNzBCNkNBQzJCNjhGOEM4MzVCQkU0MTVEOTQ3NEZFMjkzOTNGOQorQUZCNworMzE2OEY4QkFDRUU0Rjc1M0U1Mzc0RjlERDU0RjgxNkYyRkIxNjU2OUNCREZGRTZCRUYyOEFGRkJBOTZFNkQxRDQxNzkwQjlBRDVBNzFBQzQ3RUJCRjA4QUZENjU0QTQxCitCQkI5QjkzNAorMzJDRDNFQTQzQzNENzU2NTBBMDI2Rjk0RUUwNworOEM5Q0QyNTE5RUY1NzIxNTZCMkYzNERFQjc2REM3NkJBOUIyNzA5QTZERDc4QzU1ODk3OENEQzc5MUJGNDM2ODFCQjdBRTkzMjhCQUE3QjI4NEJFRTVBNzQ1NEM3MkE1Q0YyQzlCREU5NDgwNUE1OUZGODQzQkU1MUNDREJGRTY5QzkzNjFFQzZDNDkxQzE4RkEyNjE2Qzc1Qjc3MkU2MTRGMTNDMzhCM0E3Q0FFMzk4NkQyQjE0MkNEREQxREEwNTI1NTZCMEI4MAorQ0QwMDlGNkEKK0IyNjM4NzUwNzAwRDY2RDBBQTU4MTAyMTMxNDEKK0FDMDA4NzgxRjM5OURGMUE4MDQzREJBRUJBRkMyQjRBQjU5NkRBMTA3MUYzRDUwNTY1NUM4QzlFODBGRDlBMUUwRkI1RjcwREI4QTIyN0ZDNUQ4N0UyNUI1OTg1NDYyRDJFNERENDQ2Rjg4NzI0MzJGQTRCRjc4ODlBNkI4MUFBQzlDQjhCODE4MTQxQzREMjM3RDdEQjFGQzVENTFBNTU5Q0QxM0M5MzVCRjFBRTYzOUUyNjFCODM0Mjc4NDFCNTY0MTA4NEY2RjQzRDQ0Q0I3REQ2MEEwRkY0N0U5NENBODZENzFGQzZFRUYzQUMxODkzMENFOTFCMDBDOQorQkQ3MAorNjcxOThFRjBGNTU5NTNERDgyNkEwQzk4MUM3MTkzRTVDQjUzNTkxRkQ5MkQ1RTNFRTRGQTNFCis5MEI4QUZEMworQkQ3RDFBNjUxNDVFNjJCMjQ3NDg0REJFRkQ3RgorOUEzNTRBOENCMkIxOTE2OTgxRjNCMDRDNDQ2RTkxRjlENzg5MEM5OUU3NjhEOUZDNEVBNjI2RDY5OEEwQTMwOTk5MzdDRTBFMTZEMjZEMzhCRkM4QUYyNDkxNEMxQ0FFMjk2N0Q3OUVGREU2OUVGODZFMjM3MzlCNDZCRTdDODM3RDlEMzA2ODhGRDM3NDg2NDlGQkY2ODA4MkZBNEQ3MTYwM0Y0ODNCMDU3RkE2REU0NUVGMzExNTRCNjI1OUYzQjYzM0VGQjNENkEzNTczQjQ3M0VCQTFGMDFERjJDRURCMDI2NzAxMkRDNDUzQkEzMDAKK0MxMTM3OTlDCitENzNEMDU4RkQzMjVDQ0RGRjkxQzdFQ0ZDMEVECitGNUMxQTgzNUZBREQzQTMzRjkwQzZENDBCRTM1QzRDNDRDMUU3NEEwNkJBNUMyMTNBQzNDMzIyMDczMzNGNDE5MjRCNzIyQjQ2N0M0QTI2MjI1N0MyMTM5OEUzQzVFMUVDQTA2RDlBMDAwOUU2Njk1MDcwNzAxNTA2OTBEOTk5QjRCOURFRDY0REVBMjJBQTYyRkNDQjA2RDBDRkZGMzBDRDZBM0YyMTY4NUY4QUY0MzM4MjU0MEMwMDAyNEI3NkZCODZDMjFCRDhGCisxNEI0NEZFRQorRDQ1MzA5Q0I3NjYzOEEzNjBDQzNDNTJDMzc2OAorMzNDQzlDMDdBMkM5NEMyOTIyNTg3MTFBMkUyNjg0QkQ3NzAyMjNFRTg3RThFNTE1MDBFNjZDNDEzQzg4NUREOEY3QjU5MUQ2MTZFMDM1RDBBNEQyNDIyQjAyQTg3QUNBMzU5MTBFMjA0ODMzNTNCOEFFRDhGRDAyN0VEODREQURDOTI3RjA0QUM1RkUyOTBCMjQxMUJBQkU5ODE5QTFCNTQ1NUM0Njc1QzAyRDU4NkZCQzk0NkRDMEQ4QzBENDU2NUQ0N0E0QkExRTAxNzY3QUMwMUJDOTlEMzgwRTI2RUFFRjI4MTExNDBEQTRCQ0IyQjZDREMxNDVFMDIzCis1NTc3Cis0MEM4QzUzRjZDMUQyM0I2NkZCNEM1NDc3ODUxNjU1MTFGRTc1RUZGNURGMDhFM0E4OTBEMjY5NTQyQzc0RTc2RENEQjI3MzM4RjU3OEY3NzQ5RTFCQzU2NDlCNDlDMzVENkVCMDdEOEIyMjA2NTgyRUY0REE1Qzg3MUFGRjBEQzczRDM2NEY1NzFCOUMxQTU1Q0FENjkKK0EzQzg5N0ZGCis2QUYzRjBFRkE1MUY3NjFDRUI1QTA5NjM5NgorQ0E2MkFERDY0MUJCRUI3RjE1QkY3MUVFNjBBMDc2OTc0NjM1OUU2RUQ1MDJEODYyMjE2ODZGNTM4N0ZBRDFDOTlGQzc5RUMzQjY3RDI2REU0NzkxQUI3QzJFM0E4NzhGMTAwREVEQzc3MDc5REU5MzU0Q0FFRTU5MzE1OURDNDgwNDg0MEIzNDZDMEI2M0FGMzA0MkE4RjU1RUQyQ0RENjgxQUUwMkE1NjQ1RTQyNzE5MDg2NDVFNjQ0MzRDOAorNkVDMUZBOTQKKzgxMjI0QjU5NEQzMjRFRUMyMkIxOENGMkZGRUMKK0M2OTREMjZEQTRCMDFFQUMxN0U4MUJEMEExMjAxQjA3MzNGMUEyMzgwNjlDRTY4NUI2MUFCN0MwMzcyREY1MjdGRTEzRTlDNEYwMkZBNEEyQTdCRTlGNjMwNjhFQkI1ODUyQzlGQjdDMEIwREM0ODA2OTlBRTJCOTU3N0RDNDM1Mzc5OUQwMjg3Q0Q5QTVFNkEwOUEwQTcyNUY1OTFFQjEzMUFDRDcyRjk4RDc5MTk5QjdCM0I0MkNGQTVFNTRGMUU3REIxRjkyRUE0RDYwNTVGQ0Y2MjdDNEUyQ0U5MDA0NkE4RTRDMzhFOTk3NDU3OTU5QUY0QzUzMTY1RQorQUEwQworMUVFRkU0MkIzQUYyMThDMTk5QkYxQjk3RkY5RjlCNkVCNjMyNTNCQzM1NTRFOENBMkIzOUYyQ0REMzMxRTczQ0Q3N0Y4NDAzOTM0ODg1MTAzMkU3CisyNkU4Q0NBMgorRjlENEFCOTA5OTY0OEYxNjU5NDRBRDAyRUUKKzgzQTQ5NEZBRDEwNjAxRkNGNTRDMDY2NUYwQjQ3ODdCNTZFOEYwQUQyMkQ4MTRFQkI2NTU0QjYyMkEzMEFDNTdFNDY2QUI0NjgxRjU2NzhEQzVFNjNDN0M0NDdDMEVDRDJCNzA3ODUwN0U5MUJDRjcyNUNFRjUwOEQ2QzQwRTg5RkQ4QTI2NjlEREFGQzFFRkQyQTBENTI0MzRBODI0NDA1MTZDMzkxQjU3QUIxNjlBMEQzNTI3CisyNzRBNTk0OQorQkVDQzM3QjdDNEE5NTUyOUJCMzNGMkMwRUE4RQorMjc5REM2NzAwRURFMENFODUwQTkxNzdDNkU4NTFEMDFENjdCMUZBQTBFRTQ0NkZFOTQ3QjE2QTI0Qjk5QzFDMkU4RDgxNDEzMzdENzA1Njk5NUY0QkE5RDEyNDY1NTE1ODdBQUVGNUU4RkVBOEM4MTI3QkJEREE2Mjk0QUJBNkIzN0I0REI2M0Q5M0JFREFBMzBGQzEyQkQ1MDEyOUEwQTgzQkYzMjQ0MEM3RjQ4MTZDNDc5NzJBREEzNUQzRENBQzY1MTE5MEJBMTkzMTAwNEU3NzcxQzkzRjQzNzY0MTQ4QjFENkJBMkZEQTcKKzgzNjVBQUMyCisxNjREMDc0NjRBOTVDMUMxMTI4OEVDMTg2MworNTNCOUM0QjI5OEU0OUMwOTUwQzhGNTIwNThDQUVGMUEzNDE5OUY4NTNCNzlERTdFMDcxMEU0QjEyNDk3QkYxNTZGODEzQjA1MjFFNzJGNjk5MzU4Q0ZCRDE0QTlENTZDOERDOENGNUY1NkQ2REExODFFMUZFNEQ2NDk2RDI0Mjk3QkVCQTgxQ0RGNDJGNDk4QzAyMjg5MTlBMERCQzUxQzg2ODYzOTkyNUY5RTE2CiswMTNDRDUyNworNTJBNjMzNzA1M0ZDOEUwQzRENTg2OUIyOTYyMAorQkVCRjAxRkRFMTI3OUJCQUZCQjlDOTVGRjY4RUE3ODk3NUU5Q0ZDQzVCNTVGMUFCQTQyMjJDNUY5RjM2REMxNzkzOEEyOUM3M0IyNTIxOTNBRjMzRTU0Nzg5OEEzOEE2QUQzQkExQTYxQTU2RDdEODUzRkUyREY0MjlGODRDM0M2N0Y5NkFCRjIxQzlFODk3ODYwQkU5Rjk3ODYyMkE1MUIzOUIwQjEwN0VCQkEwMzI2RTAwODE3MDg0N0IzOEIzODVCMjY4QUY1RDAzQTExRDU4OUQ0OTIyOTQ4MjYxQkE0NTJFQzEwOTYzRTJENTE4MjFFQkE3RDAyQkZBCitFRjM2CisyRDNBQTkwQjY5NTFDOTY3QTlDOTg4N0U3NDdCMjUzMUNGQUIzOTY5MjQ3NUE0CitFMEUwRjQ1NAorQ0M0Qjg5RUQ5Rjc0MkY5NTU0NzBBMERCNkIKK0M3RDEyQUUxMTRCQkU3QjI2RTFBODk3QzczMTcwM0MyRTQ2RUY1QkQ5Mjc4MzUwNTZCQUU2ODFBRUVERjA3MjcyMzM5NEM5QTFBQzJGOUNDRERBODhCMjcyODgwRjM5RjlDN0E5NDA5NzBBQjlGNzdDNzEzQzQwMDBCQ0YxMDFFNUFGNzYxQkZCOTc3NURENzZBNEFDMEU5NjcxMkM2ODRCMjVGOTBBNjRGNjhGOEM5MkVGMAorNjdFRDgzNUUKKzNFNEUzNzUwNjdGQ0E2QjExQTEyOUFCNzYzMUIKKzMyMTI1ODI4NUE5MUJBODdDQ0I5M0E5ODI5MzQyMTYyRkNDMjI4NUUwMTgwMTZBRDFBMjgyOTRCRkEzNTdFOEY3MTg3NDMxMkZEOTdFQTNBNDJEMTMxNEJDOTIzM0EyOEY2ODFCQ0U4NTZEN0I3NzQ5QTExRUVFRjczQjZGRUYzNDNBRDI4OTRFN0U1MDUwQzMyQ0Y4REFGMzVERTU1MTcwNkM0RTA2NTY0QTkzOUMzRTY3Q0UzQjE2RTlCM0IyMUEyMjkwRkUwNDdCMTU2Rjk2NDI4QzgyMDVCNDJBOTVDNUY4M0I4NjI2Mzc0NDNGM0U1MEI2QkM0OUFDQworRjBBMQorNDJFOEUxQjY4OEFENkNCQzRGCitCQTVENEIzRQorQzc5NDNGQTJEREI3NEY5M0QzRERGNkI1MzM0MAorOEYzRDczMzI2NzJERTE1QgorRTdFMTgzQkIKK0Q4RjJGN0I0MUU0MzYzRkY0MjI0NENFODI5QUE3M0NDNEE3OUQzM0YyQjlGMDgzOUY4OUUzNkUzMDBEQjQ4NTdGMDUyCisxRjM1REQzRjVGQTJCRDFFQzRBMUM4RjQ5NTFGNzk3RUYyQzBCMkM4MjQxODI3OEQ4N0ZCQkY0OThEMkQyRkFCRjg3Q0E2RkRBQzk5Cis1ODYyNEU0MzVFODAwMjkyMTc0QkQwRUE2MENEQjcxQjMyNkM3M0VGN0FBRTMyRkRGMjdENTEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmkgMTIuMDAgL1BTT3dzdGR1dGNoaSBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxZDJlM2MzODJlM2EyZjEwMDExMjAxMTMyZTM2MmMzMTM1MmEzYTMzMDEyZjM3M2EwMTFjMmUyYTNiM2QzYTMyMzYzMDAxMWQyZTNjM2YzNzNhMzMwMTFmPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDJlM2EyZjM3M2EzNTJhMzYyYzJlPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwYzBjPiA5MzQ2IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDEyIFNGCis8MDgyNj4gMTU4OSAxNDMxIDAgMTkyOSAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA0MGYwYzBhMDQwMj4gMjAzMyAxNDMxIDAgMjcwMCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDNiMmUzYz4gMzE3NyAxNDMxIDAgMzQzMiAtMSBzCis8MDAzYzMxMmUwMDM0MzcyYzJhMzQwYTNhMmUzNTM3M2MyZTAwMjYyMjFhMDAyZDJlM2UzMjJjMmUwMDJmMzIzNDJlMDAzNjJhMzUyZTAwMmYzYTM3MzUwMDAwPiAzNDMyIDE0MzEgOSA3NTI1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDMwNDBmMGMwYTA0MDI+IDc1MjUgMTQzMSAwIDgxOTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOT4gODE5MiAxNDMxIDAgODI0NSAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYjBjMGYwNz4gMTI3MSAxNzc4IDAgMTg2NiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDEwMDAyMzE1MWYwMDMyM2IwMDJhMzYwMDNkMzYzYTJlMzQzMjJhMmIzNDJlMDAzODNhMzczYzM3MmMzNzM0MDkwMDFhM2MwMDMyM2IwMDMyMzUzODM3M2EzYzJhMzYzYzAwM2MzMTJhM2MwMDQxMzczZDAwMmU0MDJhMzUzMjM2MmUwMDNjMzEyZTAwM2EyZTNiM2QzNDNjM2IwMDJjMmEzYTJlMmYzZDM0MzQ0MT4gMTg2NiAxNzc4IDE0IDk1MzEgMCBzCis8MmEzYj4gMTI3MSAyMDIzIDAgMTQ1NyAtMSBzCis8MDAzYzMxMmUwMDNhMmUzODM3M2EzYzJlMmQwMDNiMmUzNjJkMDAzYTJhM2MyZTAwMmMyYTM2MDAyYjJlMDAzNTNkMmMzMTAwMzEzMjMwMzEyZTNhMDAzYzMxMmEzNjAwM2MzMTJlMDAyYTJjM2MzZDJhMzQwMDNhMmUyYzJlMzIzZTJlMDAzYTJhM2MyZTA5MDAxODNhMmUyYTNjMDAyYzJhM2EyZTAwM2IzMTM3M2QzNDJkPiAxNDU3IDIwMjMgMTYgOTUzMSAwIHMKKzwyYjJlPiAxMjcxIDIyNjggMCAxNDg5IC0xIHMKKzwwMDNjMmEzMzJlMzYwMDNmMzEyZTM2MDAzYTJlMzgzNzNhM2MzMjM2MzAwMDI2MjIxYTI4MjMxNTFmMjgyMTIyMjAxNjEyMWMwMDNjMmUzYjNjMDAzYTJlM2IzZDM0M2MzYjAwM2MzNzAwMzUyYTMzMmUwMDNiM2QzYTJlMDAzYzMxMmU0MTAwMmEzYTJlMDAzNjM3M2M+IDE0ODkgMjI2OCAxMiA4NzI3IDAgcworPDAwMzUzMjNiMzQyZTJhMmQ+IDg3MjcgMjI2OCAxIDk0NjEgMCBzCis8NDQ+IDk0NjEgMjI2OCAwIDk1MzEgLTEgcworPDMyMzYzMDA5PiAxMjcxIDI1MTMgMCAxNjAxIC0xIHMKKzwwMDE3PiAxNjAxIDI1MTMgMSAxODI2IDAgcworPDM3M2E+IDE4MTggMjUxMyAwIDIwMTUgLTEgcworPDAwMmU0MDJhMzUzODM0MmUwNzAwMzczNjJlMDAzYjMxMzczZDM0MmQwMD4gMjAxNSAyNTEzIDQgNDEzOSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDEwMTgyMDEwMjExZT4gNDEzOSAyNTEzIDAgNDc0MyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwM2EyZTM4MzczYTNjMDAyYjM3M2MzMTAwM2IyZTM2MmQwMDJhMzYyZDAwM2EyZTJjMmUzMjNlMmUwMDNhMmEzYzJlM2IwMD4gNDc0MyAyNTEzIDcgODIxOCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDFmMWIxNTEzMWYxNjEzMWQ+IDgyMTggMjUxMyAwIDg5NzIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDJmMzczYTAwMmE+IDg5NzIgMjUxMyAyIDk1MzEgMCBzCis8MjYyMjFhMjgyMzE1MWYyODIxMjIyMDE2MTIxYz4gMTI3MSAyNzU3IDAgMzI2OSAtMSBzCis8MDAzYzJlM2IzYzA5MDAxYTJmMDA0MTM3M2QwMDJhM2EyZTAwMzAzNzMyMzYzMD4gMzI2OSAyNzU3IDUgNTE2MSAwIHMKKzwwMDNjMzcwMDNhMmUzODM3M2EzYzAwMmEwMDNiMzIzNjMwMzQyZTAwMzYzZDM1MmIyZTNhMDcwMDQxMzczZDAwM2IzMTM3M2QzNDJkMDAzYTJlMzgzNzNhM2MwMDNjMzEyZT4gNTE2MSAyNzU3IDkgOTUzMSAwIHMKKzwzYTJlMmMyZTMyM2UyZT4gMTI3MSAzMDAyIDAgMTkxNCAtMSBzCis8MDAzYTJhM2MyZTA5PiAxOTE0IDMwMDIgMSAyMzgwIDAgcword3N0OmR1dGNoMTJiIFNGCis8MGIwYzBmMDc+IDEyNzEgMzM0OSAwIDE4NjYgLTEgcworPDA0PiAxODcwIDMzNDkgMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCAzMzQ5IDEgMTk5NiAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxYTJmMDA0MTM3M2QwMDNmMzczZDM0MmQwMDM0MzIzMzJlPiAxOTk2IDMzNDkgNCAzNjI2IDAgcworPDAwM2MzNzAwNDMzODJhMmMyZTAyMDAzYzMxMmUwMDNiMmUzNjJkMDAzYTJhM2MyZTAwMzcyZjAwM2MzMTJlMDAyNjIyMWEyODIzMTUxZjI4MjEyMjIwMTYxMjFjMDAzYzJlM2IzYzA3MDAyYTJkMmQwMDJhPiAzNjI2IDMzNDkgMTEgOTUzMSAwIHMKKzwwODE1MWExZDIyMTYyMD4gMTI3MSAzNTk0IDAgMjMxMyAtMSBzCis8MjQ+IDIyOTAgMzU5NCAwIDI0NTIgLTEgcworPDEyMWIyMT4gMjQyOSAzNTk0IDAgMjg0NCAtMSBzCis8MDAzYzM3MDAzYzMxMmUwMDM1MmEzMzJlMmYzMjM0MmUwNzAwMmQzNzAwMmEwMDQzMzUyYTMzMmUwMDJjMzQyZTJhMzYwMjAwMmEzNjJkMDAzYTJlMDgyYzM3MzUzODMyMzQyZTA5MDAyNz4gMjg0NCAzNTk0IDEwIDc4MDggMCBzCis8MzczZDAwMmMyYTM2MDAzYzMxMmUzNjAwM2QzYjJlMDAzYzMxMmU+IDc3ODIgMzU5NCA0IDk1MzEgMCBzCis8MDgyYj4gMTI3MSAzODM5IDAgMTU2MSAtMSBzCis8MDAyYTM2MmQwMDA4M2YwMDAwMzAzNDM3MmIyYTM0MDAzNzM4M2MzMjM3MzYzYjAwM2MzNzAwM2IyZTNjMDAzYzMxMmUwMDJiM2QzYTNiM2MwMDNiMzI0MjJlMDAwNTNiMmUzNjJkM2IwNjAwMmEzNjJkMDAzZjJhMzIzYzAwM2MzMjM1MmUwMDA1MzUzMjM0MzQzMjNiMmUyYzM3MzYyZDNiMDYwMDNhMmUzYjM4MmUyYzNjMzIzZTJlPiAxNTYxIDM4MzkgMTYgOTQ2MSAwIHMKKzw0ND4gOTQ2MSAzODM5IDAgOTUzMSAtMSBzCis8MzQ0MTA5PiAxMjcxIDQwODQgMCAxNDc3IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA2MGEwZDA5PiAxMjcxIDQ1NzAgMCAxNzc2IC0xIHMKKzwwMDA1MWIxYTFhMTMxMTFmMTcxYjFhMDAwYzFkMTcxMzFhMWYxMzEyMDAwZTFmMWQxMzEwMTkwMDBkPiAxNzc2IDQ1NzAgNCA0NjQ3IDAgcworPDEzMWQxNDFiMWQxOTEwMWExMTEzPiA0NjM5IDQ1NzAgMCA1NjgxIC0xIHMKKzwwYjBjMGYwNz4gMTI3MSA0OTkzIDAgMTg2NiAtMSBzCis8MDQ+IDE4NzAgNDk5MyAwIDE5MjggLTEgcworPDAwPiAxOTI4IDQ5OTMgMSAxOTU5IDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDE1MWIxZjFhMDAzYzJlM2IzYzNiMDAyYTNhMmUwMDM2MzczYzAwMmMzNzM1MzgzMjM0MmUyZDA4MzIzNjAwMmI0MTAwMmQyZTJmMmEzZDM0M2MwMDNmMzIzYzMxMDAzNjJlM2MzODJlM2EyZjA5MDAxYTJmMDA0MTM3M2QwMDNmMzIzYjMxMDAzYzM3MDAzNTJlMmEzYjNkM2EyZTAwMzgyZTNhMmYzNzNhPiAxOTU5IDQ5OTMgMTUgOTQ2MSAwIHMKKzw0ND4gOTQ2MSA0OTkzIDAgOTUzMSAtMSBzCis8MzUyYTM2MmMyZT4gMTI3MSA1MjM4IDAgMTg2NCAtMSBzCis8MDAzNzNlMmUzYTAwMTUxYjFmMWEwNzAwNDEzNzNkMDAzZjMyMzQzNDAwMzYyZTJlMmQwMDNjMzcwMDJhMmQyZDAwMmEwMDA4MTUxNTFlMjgxNTFiMWYxYTAwM2MzNzAwM2MzMTJlMDAzNTJhMzMyZTJmMzIzNDJlMDAyYTM2MmQwMDM4MmUzYTMxMmEzODNiMDAyYTJkMmQwMDNjMzc+IDE4NjQgNTIzOCAxNiA5NTMxIDAgcworPDNjMzEyZTAwMjkyOTFiMWExMzIxMTEwMjAwMmEzNjJkMDAzYTJlMDgyYzM3MzUzODMyMzQyZTAwMzYyZTNjMzgyZTNhMmYwMDJhMzYyZDAwMzYyZTNjM2IyZTNhM2UyZTNhMDk+IDEyNzEgNTQ4MiA2IDYwNTAgMCBzCis8MTI+IDEyNzEgNTgyOSAwIDE0MzQgLTEgcworPDAwMTUxYjFmMWEwMDE0MzczNjM2MmUyYzNjMzIzNzM2MDAxZTNhMzIyZTM2M2MyZTJkMDAyMTNjM2EyZTJhMzUwMDNjMmUzYjNjMDAwNTE1MWIxNDFlMjgyMTIyMjAxNjEyMWMwNjAwMzQzNzM3MzMzYjAwM2UyZTNhNDEwMDNiMzIzNTMyMzQyYTNhMDAzYzM3MDAyYTAwMjIxNDFmPiAxNDM0IDU4MjkgMTIgOTUzMSAwIHMKKzwyMTNjM2EyZTJhMzU+IDEyNzEgNjA3NCAwIDE5MjEgLTEgcworPDAwM2MyZTNiM2MwMDA4MDAzYzMxMmU0MTAwMmIzNzNjMzEwMDNkM2IyZTAwM2EyZTM0MzIyYTJiMzQyZTA3PiAxOTIxIDYwNzQgNiA0NjQzIDAgcworPDAwMmMzNzM2MzYyZTJjM2MzMjM3MzYwMDM3M2EzMjJlMzYzYzJlMmQwMDM4M2EzNzNjMzcyYzM3MzQzYjA5MDAyMjMxMmUwMDE1MWIxZjFhMDAzYzJlM2IzYzAwMmQzMjJmMmYyZTNhM2I+IDQ2NDMgNjA3NCA3IDk1MzEgMCBzCis8MmYzYTM3MzU+IDEyNzEgNjMxOSAwIDE3MTIgLTEgcworPDAwM2MzMTJlMDAyMjE0MWYwMDNjMmUzYjNjMDAzMjM2MDAzYzMxMmEzYzAwM2MzMTJlMDAzNTJlM2IzYjJhMzAyZTAwM2IzMjQyMmUwMDM1M2QzYjNjMDAyYTM0M2YyYTQxM2IwMDJiMmUwMDM0MmUzYjNiMDAzYzMxMmEzNjAwMzczYTAwMmUzOTNkMmEzNDAwM2MzNzAwM2MzMTJlMDAzNDM3MmMyYTM0MDAzMjM2M2MyZTNhPiAxNzEyIDYzMTkgMTkgOTQ2MSAwIHMKKzw0ND4gOTQ2MSA2MzE5IDAgOTUzMSAtMSBzCis8MmYyYTJjMmUwNDNiPiAxMjcxIDY1NjQgMCAxNzc4IC0xIHMKKzwwMDFjMjIyMzAwMDgwMDE1MWIxZjFhMDAyZDM3MmUzYjAwMzYzNzNjMDAzODNhMzczZTMyMmQyZTAwMjIxNDFmMDgzYjNjNDEzNDJlMDAzYjJlMzAzNTJlMzYzYzJhM2MzMjM3MzYwMDJhMzYyZDAwM2EyZTJhM2IzYjJlMzUyYjM0NDEwOT4gMTc3OCA2NTY0IDEwIDg1MjkgMCBzCis8MjIzMTJlMDAzYjMyMzUzODM0MmUzYjNjMDAxNTFiMWYxYTAwMTQzNzM2MzYyZTJjM2MzMjM3MzYwMDFlM2EzMjJlMzYzYzJlMmQwMDIxM2MzYTJlMmEzNTAwM2MyZTNiM2MwMDNmMzczZDM0MmQwMDM0MzczNzMzMDAzYjM3MzUyZTNjMzEzMjM2MzAwMDM0MzIzMzJlMDAzYzMxMzIzYjEwPiAxMjcxIDY5MTAgMTEgODkyMyAwIHMKKzwwMz4gMTM5OCA3MjU3IDAgMTUwNCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDAzMWIxYzFmMDMxYTEzMWYxYzEzMWQxNDAzMWExMzFmMWMxMzFkMTQwMDAyMDgwMD4gMTUwNCA3MjU3IDMgMzc4NSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBiMDQwODA5MGQwNDA1MDkwYzBkPiAzNzg1IDcyNTcgMCA0NzQ0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDIxZjAwPiA0NzQ0IDcyNTcgMiA1MDk5IDAgcword3N0OmR1dGNoMTIgU0YKKzwxNTFiMTQxZTI4MjEyMjIwMTYxMjFjMDAwODA4MDA+IDUwOTkgNzI1NyAyIDcyMjQgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMjE5MDA+IDcyMjQgNzI1NyAxIDc2MjkgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDBjMGIwZDBlPiA3NjI5IDcyNTcgMCA4MDUzIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTkyZTNhMmUwMDJhM2EyZTAwM2IzNzM1MmUwMDM3MmYwMDNjMzEyZTAwMTUxYjFmMWEwODNiMzgyZTJjMzIyZjMyMmMwMDJjMzczNTM1MmEzNjJkMDAzNDMyMzYyZTAwMzczODNjMzIzNzM2M2IxMD4gMTI3MSA3NjAzIDggNjczMSAwIHMKKzwwODE1PiAxNTg5IDc5NTAgMCAxOTM3IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDQwZjBjMGEwNDAyPiAyMDMzIDc5NTAgMCAyNzAwIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8M2IzODJlMmMzMjJmNDE+IDMxNzcgNzk1MCAwIDM3OTUgLTEgcworPDAwM2MzMTJlMDAzNDM3MmMyYTM0MDAyYTM2MmQwYTM3M2EwMDNhMmUzNTM3M2MyZTAwMTUxYjFmMWEwMDJkMmUzZTMyMmMyZTAwMmYzMjM0MmUwMDM2MmEzNTJlMDUzYjA2MDAwNTJmM2QzNDM0NDEwOD4gMzc5NSA3OTUwIDkgODg5NSAwIHMKKzwzOTNkMmEzNDMyMmYzMjJlMmQwNjA5PiAzMTc3IDgxOTUgMCA0MTEyIC0xIHMKKzwwMDIxNDEzNjNjMmE0MDAwMzIzYjAwM2MzMTJlMDAzYjJhMzUyZTAwMmEzYjAwM2MzMTJhM2MwMDM3MmYwMDJhMDA+IDQxMTIgODE5NSA5IDY5MTQgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYzA2MTAwNDBjMGEwNDAyPiA2OTE0IDgxOTUgMCA3NTkzIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDk+IDc1OTMgODE5NSAwIDc2NDYgLTEgcworPDA4MzU+IDE1ODkgODU0MSAwIDE5NDAgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwMTA3MGUwND4gMjAzMyA4NTQxIDAgMjQ5NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDNiMzgyZTJjMzIyZjQxPiAzMTc3IDg1NDEgMCAzNzk1IC0xIHMKKzwwMDNjMzEyZTAwM2IyZTM2MmQwMDNiMzI0MjJlMDcwMDMyMzYwMDJiNDEzYzJlM2IwNzAwMmYzNzNhMDAzYzMxMmUwMDM0MzcyYzJhMzQwMDNiNDEzYjNjMmUzNTA5MDAyMjMxMzIzYjAwMzUzZDNiM2MwMDJiMmU+IDM3OTUgODU0MSAxMiA4ODk1IDAgcworPDM0MmUzYjNiPiAzMTc3IDg3ODYgMCAzNTAyIC0xIHMKKzwwMDNjMzEyYTM2MDAzNzNhMDAyZTM5M2QyYTM0MDAzYzM3MDAzYzMxMmUwMDM0MzIzNjMzMDAxYzIyMjMwOT4gMzUwMiA4Nzg2IDcgNjM1OSAwIHMKKzwwODFjPiAxNTg5IDkxMzMgMCAxOTY3IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBmMDEwNzBlMDQ+IDIwMzMgOTEzMyAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzZjMxMzIyYzMxPiAzMTc3IDkxMzMgMCAzNzAzIC0xIHMKKzwwMDJiMmUzMTJhM2UyZTNiMDAzNDMyMzMyZTAwMDgzNTA3MDAzYjJlM2MzYzMyMzYzMDAwM2MzMTJlMDAzYTJlMmMyZTMyM2UyZTAwM2IzMjQyMmUwMDJmMzczYTAwM2MzMTJlPiAzNzAzIDkxMzMgOSA4MTgwIDAgcworPDAwM2EyZTM1MzczYzJlPiA4MTgwIDkxMzMgMSA4ODk1IDAgcworPDNiNDEzYjNjMmUzNTA5PiAzMTc3IDkzNzggMCAzODM1IC0xIHMKKzwwODM4PiAxNTg5IDk3MjQgMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBhMGEwMTBjMGEwNDAyPiAyMDMzIDk3MjQgMCAyNzI1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8M2IyZTNjPiAzMTc3IDk3MjQgMCAzNDMyIC0xIHMKKzwwMDNjMzEyZTAwMzQzNzJjMmEzND4gMzQzMiA5NzI0IDIgNDI2NiAwIHMKKzwwMDJhMzYyZDBhMzczYTAwM2EyZTM1MzczYzJlMDAxNTFiMWYxYTAwMWYxZj4gNDI2NiA5NzI0IDQgNjUwNiAwIHMKKzwxMjA1M2IwNjA5MDAyMTQxMzYzYzJhNDAwMDMyM2IwMDNjMzEyZTAwM2IyYTM1MmUwMDJhM2I+IDY0NzkgOTcyNCA1IDg4OTUgMCBzCis8M2MzMTJhM2M+IDMxNzcgOTk2OSAwIDM1MzYgLTEgcworPDAwMzcyZjAwMmEwMD4gMzUzNiA5OTY5IDMgMzk4NiAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBjMDYxMDA0MGMwYTA0MDI+IDM5ODYgOTk2OSAwIDQ2NjUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOT4gNDY2NSA5OTY5IDAgNDcxOCAtMSBzCis8MDgzYT4gMTU4OSAxMDMxNSAwIDE4NDcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwMTA3MGUwND4gMjAzMyAxMDMxNSAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzYjM4MmUyYzMyMmY0MTAwM2MzMTJlMDAzYTJlMzkzZDJlM2IzYzAwM2IzMjQyMmUwNzAwMzIzNjAwMmI0MTNjMmUzYjA3MDAyZjM3M2EwMDNjMzEyZTAwM2MyZTNiM2MwOT4gMzE3NyAxMDMxNSA4IDcxOTQgMCBzCis8MDgyMD4gMTU4OSAxMDY2MiAwIDE5MjkgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwMTA3MGUwND4gMjAzMyAxMDY2MiAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzYjM4MmUyYzMyMmY0MTAwM2MzMTJlMDAzYTJlM2IzODM3MzYzYjJlMDAzYjMyNDIyZTA3MDAzMjM2MDAyYjQxM2MyZTNiMDcwMDJmMzczYTAwM2MzMTJlMDAzYzJlM2IzYzA5PiAzMTc3IDEwNjYyIDggNzMyMyAwIHMKKzwwODNiPiAxNTg5IDExMDA5IDAgMTg0NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwZjAxMDcwZTA0PiAyMDMzIDExMDA5IDAgMjQ5NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDNiMzgyZTJjMzIyZjQxPiAzMTc3IDExMDA5IDAgMzc5NSAtMSBzCis8MDAzYzMxMmUwMDBmMGIwZDA5MGQwMDIxPiAzNzk1IDExMDA5IDMgNDg1MiAwIHMKKzwxMjFmMDAyZjM3M2EwMDNjMzEyZTAwM2MyZTNiM2MwOTAwMjIzMTMyM2IwMDNiMzEzNzNkMzQyZDAwMzYzNzNjMDAyYzM3MzYyZjM0MzIyYzNjMDAzZjMyM2MzMT4gNDg0NiAxMTAwOSA4IDg4OTUgMCBzCis8MmEzNjQxPiAzMTc3IDExMjUzIDAgMzQ5MyAtMSBzCis8MDAyYTNiM2IzMjMwMzYyZTJkMDAyMT4gMzQ5MyAxMTI1MyAyIDQ0ODAgMCBzCis8MTIxZj4gNDQ3NCAxMTI1MyAwIDQ3NjUgLTEgcworPDA0M2IwOT4gNDc2OSAxMTI1MyAwIDQ5NTYgLTEgcworPDA4M2Y+IDE1ODkgMTE2MDAgMCAxOTA5IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBjMDYxMDA0MGMwYTA0MDI+IDIwMzMgMTE2MDAgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8M2IzODJlMmMzMjJmNDE+IDMxNzcgMTE2MDAgMCAzNzk1IC0xIHMKKzwwMDNjMzEyZTAwMzQzNzJjMmEzNDAwM2IyZTM2MmQwYTNhMmUyYzNlMDAzZjMyMzYyZDM3M2YwMDNiMzI0MjJlM2IwMDMyMzYwMDJmM2EyYTM1MmUzYjAwMDUzZjMxMmUzYTJlMDAyYTNlMmEzMjM0PiAzNzk1IDExNjAwIDkgODgyNSAwIHMKKzw0ND4gODgyNSAxMTYwMCAwIDg4OTUgLTEgcworPDJhMmIzNDJlMDYwOT4gMzE3NyAxMTg0NSAwIDM2OTIgLTEgcworPDA4MjU+IDE1ODkgMTIxOTEgMCAxOTc1IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBjMDYxMDA0MGMwYTA0MDI+IDIwMzMgMTIxOTEgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8M2IzODJlMmMzMjJmNDE+IDMxNzcgMTIxOTEgMCAzNzk1IC0xIHMKKzwwMDNjMzEyZTAwM2EyZTM1MzczYzJlMDAzYjJlMzYyZDBhM2EyZTJjM2UwMDNmMzIzNjJkMzczZjAwM2IzMjQyMmUzYjAwMzIzNjAwMmYzYTJhMzUyZTNiMDAwNTNmMzEyZTNhMmU+IDM3OTUgMTIxOTEgOCA4MzcyIDAgcworPDAwMmEzZTJhMzIzND4gODM3MiAxMjE5MSAxIDg4MjUgMCBzCis8NDQ+IDg4MjUgMTIxOTEgMCA4ODk1IC0xIHMKKzwyYTJiMzQyZTA2MDk+IDMxNzcgMTI0MzYgMCAzNjkyIC0xIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgxMikgMTIKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDAzNiBwdXQKK2R1cCA0IC9DMDAzOSBwdXQKK2R1cCA1IC9DMDA0MCBwdXQKK2R1cCA2IC9DMDA0MSBwdXQKK2R1cCA3IC9DMDA0NCBwdXQKK2R1cCA4IC9DMDA0NSBwdXQKK2R1cCA5IC9DMDA0NiBwdXQKK2R1cCAxMCAvQzAwNDcgcHV0CitkdXAgMTEgL0MwMDQ4IHB1dAorZHVwIDEyIC9DMDA0OSBwdXQKK2R1cCAxMyAvQzAwNTAgcHV0CitkdXAgMTQgL0MwMDUyIHB1dAorZHVwIDE1IC9DMDA1NiBwdXQKK2R1cCAxNiAvQzAwNTggcHV0CitkdXAgMTcgL0MwMDYxIHB1dAorZHVwIDE4IC9DMDA2NSBwdXQKK2R1cCAxOSAvQzAwNjYgcHV0CitkdXAgMjAgL0MwMDY3IHB1dAorZHVwIDIxIC9DMDA2OCBwdXQKK2R1cCAyMiAvQzAwNjkgcHV0CitkdXAgMjMgL0MwMDcyIHB1dAorZHVwIDI0IC9DMDA3MyBwdXQKK2R1cCAyNSAvQzAwNzYgcHV0CitkdXAgMjYgL0MwMDc3IHB1dAorZHVwIDI3IC9DMDA3OCBwdXQKK2R1cCAyOCAvQzAwNzkgcHV0CitkdXAgMjkgL0MwMDgwIHB1dAorZHVwIDMwIC9DMDA4MiBwdXQKK2R1cCAzMSAvQzAwODMgcHV0CitkdXAgMzIgL0MwMDg0IHB1dAorZHVwIDMzIC9DMDA4NSBwdXQKK2R1cCAzNCAvQzAwODcgcHV0CitkdXAgMzUgL0MwMDg4IHB1dAorZHVwIDM2IC9DMDA5NSBwdXQKK2R1cCAzNyAvQzAwOTYgcHV0CitkdXAgMzggL0MwMDk3IHB1dAorZHVwIDM5IC9DMDA5OCBwdXQKK2R1cCA0MCAvQzAwOTkgcHV0CitkdXAgNDEgL0MwMTAwIHB1dAorZHVwIDQyIC9DMDEwMSBwdXQKK2R1cCA0MyAvQzAxMDIgcHV0CitkdXAgNDQgL0MwMTAzIHB1dAorZHVwIDQ1IC9DMDEwNCBwdXQKK2R1cCA0NiAvQzAxMDUgcHV0CitkdXAgNDcgL0MwMTA3IHB1dAorZHVwIDQ4IC9DMDEwOCBwdXQKK2R1cCA0OSAvQzAxMDkgcHV0CitkdXAgNTAgL0MwMTEwIHB1dAorZHVwIDUxIC9DMDExMSBwdXQKK2R1cCA1MiAvQzAxMTIgcHV0CitkdXAgNTMgL0MwMTEzIHB1dAorZHVwIDU0IC9DMDExNCBwdXQKK2R1cCA1NSAvQzAxMTUgcHV0CitkdXAgNTYgL0MwMTE2IHB1dAorZHVwIDU3IC9DMDExNyBwdXQKK2R1cCA1OCAvQzAxMTggcHV0CitkdXAgNTkgL0MwMTE5IHB1dAorZHVwIDYwIC9DMDEyMCBwdXQKK2R1cCA2MSAvQzAxMjEgcHV0CitkdXAgNjIgL0MwMTIyIHB1dAorZHVwIDYzIC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5NzggNzY2XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjI0MTA0ODk1OTE1ODhCNkU3ODIzRDNENzRDMkVBMzJGRTkzCis5RUI4OEFBQjNCNTkxNTc1NDYyRjJFOTYKKzU1Qjg0MzVFMTQxOTY5OUU4MworNDExMTI2MzMKK0IwRkExQTRFQzkyNzg3Q0Q3QTI2QTg3M0Q3QkQKKzFFQ0YxNzVBRDRFQTQ4Qjg3QUVDM0FDQzhCMzhFM0IzOEYxRERGQzU3ODBEMkIwOTA5NDJFOTk3RDY3OUExMzA4MkYwQ0Y1N0ZBNzczNTI5OUY1QzJGN0MwNUZGQTVCRTMwRjlCMkJFNTFENkE0QTJERThEQTdGNTQzQURFQzI5QkY1MEI3MDUyNDNGQUZCNTAyQThDQ0I1M0I5OTc0QkY1QjRBRjY4MkJCM0VGRTU2QTY1OUE3MTJFRkU3NTcwNjcyOEYzMDQyODM0QjFBCitGQkNCMjIzRQorNzE1RThGMTg5QTc2NTdFRDc3MEM3RDhGRjk2QworRThBNUM4Rjk0OTZDMzlFM0M3Rjg0QTkyRUE2MjEzOENBMzVCNTczQzdBMkZENDRFN0Y4NkJGMjUwQ0RCQkE2RTJDMkM0NDc4QUQ4MTAyNUE4MjIxNUMwMDI0NTU5OTgyN0M0QkNCN0Q1QzEzQTVFRUMwQjM1Rjk2N0M4NjI0QjVCRkMzOTY3MEMyOUQ5RkMzMTYwQUZFNUJBNkVGMDNEMTA1Q0ZFQTdGNzI0QzY4NkNGMjg4M0VDREM3NEMzMkM3OTU2MEE0MEUyRDFGRTgxRTE5RThBMTZFOTQwQkVEMkM4QjY4MDJGRDY3NkIxODEyODU3M0FCOTUzOTEwCitFMTgzCisxM0I2MTRCQTNCMUNBN0JFMjBCOTE5MDUKKzQ3RDFGMTZDCitERTE5MEExRjFDMjE4RTYxRjc4QkEyNTFFMAorMDgwNkE3M0RCNDYwM0U5MDc5MjlCRjU0OEEyODhDNEIwMzU2RTFGQTBBRDVCMzNDMDcyODdDNzQ2N0ExN0I2NjA4RUI0M0EyRUZCMEM1MkQwNzBCNzc1NkE4NDQyOUFDNEIyRTVEMzYxQUNFQTU1QworQUE1MjYyMjYKK0JDQzBFMzBGMDVGRkFCNjE3NjZCMzc1QzZGCitBRTU1REMyRjJEMThCOUQ3OEEyMEEyNTAyMUUwRTlBRThEMTFBODFFNDNENDRGOEU2ODc3QTE0RkIyMUJBQTI1RjE5QUREOTBCOTk5NjU3RUQxNTZFQTI1MDM1QjZDN0ZBQ0Y2NDZCNEE0QTM3RkVBNDI3RUMwREI1N0I5RDE5MQorMjdFRjU0OUUKK0I2QTQzNkQwQUM2NTg0MjNBMkJCOEIyQTUxCitFQzM2NDkzNzVGRTgyNjYzRjAwMTMwOTg3RTE0QzBFOTkyMTMyQkJGRTJFRjk1NTRFREMzOTg3RjMxNTk5NkM1MDEzMzc3ODNBM0JGNTVCRjlBMzg2NzdDNDQ4ODQyMUI1QUZFMzk0Q0NGRDI5MjE3MTUyQThGNkUyREU1QUIKK0ZGQzkyNjk3Cis3NUU3QTg2RUIwNERGMDEyRTg3QjYxREFCQgorMjUyRUY5MUU1ODczMzA1MkVDOUJGMDIxQzg3NjlCMjEwMTMwRENENTRBRTI1MkEwNjdERkY0NTAwNEMxRjFBQjk2N0NDOEYxRjM4RjIxM0Y3ODZBN0Y2RkY0NjM1QUU2QTBFMUE1NjhGRDQzNEE4Nzc4Cis2MkIyMjE0RgorNDU3NkUxQzEyNzcyNTY1RDhFMThFMEU4RkYKK0FDNTlDMkE0OEUxMjM2RTgxQjgzOUU5OUMzMkU1NDEwQ0ZFRUI2RkJGQTcxNTUKKzlDN0E3MjJFCis3MjAwMTA2NkQ1MzQzMkQ1NTk2QUFFNjIwOAorRjE4OUQ4Q0JDRUMzQzQ5RkM3QjM4NDcwMDY0MTc3RDhEOTlGN0IxOUQ1NTBDRTgzNzIyQzk1NjQ5ODhFRkEKK0I3OTNGMEIzCitEQTJCRUNGQjYzN0M1MjgzRTlBRUE0NTJBQQorQjUxQTgxODdDNTAxMzY5RjFCNzgzMENENEI5NDU2NUUxMEM5NzA4NjZFQTgyQkM5MjcwNjZGMTgKKzA1NDg5NkI5Cis0ODdCMjBCODZDNDgzNjU4NzA0NTM0NDYzRgorMjVEN0NCMjg0MjY3REZDMjZERTBDRDIwQTE3ODc0RTc4N0E4REExQkM4N0M3NDUwMUM5RTM3MTIzMkFGNTU1MzRCNDE1QTc2MkYwQUFFNzlENzdDNkZBMUFEMzY4NDgxQTQ3OUM1QjcxMDExNzRCNTE3OEYyNkNGODBDMDE0NEUwRUNBNTE1NDFFOTlCMTQ5MTAzMworNDZBQjQ2NEMKKzA1NTAyNUNBRjA0MDJGODlDNkQ3MDYzRjMwCitDQUVFOTE3RkQ0NTI1NzkyMTkzNDkwOTdGNzA2QzYzN0U2MTgyOEQwMERDMjc1MTAyQ0Q3MDNERkE0RDE1MDcxODFDQzUxMzlBRkFBNjc1NTkwQUEzQTM0NTJEOUY2RDU3OTA2RDhDQUM1NEE3N0NCNUNGNjcyQjU5QUFGOEIKK0FFOTJBRkQ4CitDQjQwOEREOTI0NzY5MTNFQTM4ODZDQzQzNAorNTVDNkM0NEUzRDk2NjQ1RTcyQkQ5QTc4QjI5MjNCMTE2NjFFNkFGQjgyMjJENzgxQ0QyREZGQjkxQTRBNzM5RDQ3OEY1OUFEMDQ3REY0ODJCQUQxRTYzNjc4NkIyOUFDOTQ4QzNDNEJDMEZFOEU4N0IyNUI0MUQyMjBFRTU0NkFDMzM0NDVFQzY0NDdBQjJFRDJEODAzOTY2MjgwNzMzMDBGRkFDOEY5MTREMTVGNkExRUIwCiswQ0EwRjI5MgorRDUzOTQ4RkZDNjg1OTA1QzdBRkU4M0VCMTYKKzBFQ0I0RERBNkQxODFDNzZBMThFRUFCRDVGNjVFRDREMEM1QkU0OTEyNjFGQ0FFM0FGOUM3RDI4NUQ3MzA2MEMzMDRFQzA2NDkxMUU5NEI5M0NEODQ1RjUwNjQ3M0FCMkE0MUY3MEIzRTYzQjVCMERBNEIwCis4RUIwM0E3MgorODQ3MTMwODgyMTg0RTlCOEI4MkYxQjI0MzdCQgorQzQyOTVDQ0QxMzI5MTY3MzMwOTBDMDJBRkM5ODc5M0FGM0Y3OUUzRDQwQjM3MzM4NDU2QzQyNzE3MDIxNzcwQTlCOTNFOTQyN0U1RjhGODAzNDZGQzhFNDgxRjlDMUNFMEYwQjc0MDQwNEI5MDBDMEFGMUU1QjY3NENDNTU4NTQxNzFCRkNFM0RGNDkxMUM0REQ0M0VERjRFQzUzODZFM0UwMkMzRDRGNkRGNjc2RjFEMzlCMTAxN0U1RkY1QTkwOTkwNENEOTU1MDNENUVBMThDMTAwRDkzMkRGRDAyODU2MzdCMTc3Mzc2NkNFODgwN0YwOQorRDRERjUxOTYKKzA4ODM0NDRDRTk4MTI3MzdENzU0NDU5NUQxCitFQTk1MjkwMTIwOTA0MjgzRkFDNjNENEVFOEY3MzZFRkZBQzZENjJDNDBFNTE4Mjc0RkY5RjNBQkQ0NkEwMjE3NTVGREUxNDRGNDA2M0Q0QTEyRTU1RTNBNERCMUNFNjExMzcwMTJENTNGNDQKKzRGQ0EzOTM4CitEODlEQjIzN0VBM0Q2MzFFNDU1RUE5RDYzQworMDY0QThGNTlBQjczOTRCQ0Q1QTRDNEI2OEEyQkYwMDgzRUQ5NzdBNUIwRDk2OTk0NDM0RTE1RUYxOTk1NDE5NTRCOTA1NTEzCitBRUJENEUxMAorMDIzRkM4OUJEMjc2M0IwMzI5MkFCREMxNERBRQorQTY2MDAyQUE0Qzc0QjJBMjI0MkJDQzRBQjlFQzMwREY2QUYyRTI5MzIyOTM2ODNDOEQ2QzgyM0ExMkY0MDQyNTdBQzc5NTE2RTE1NTZCQzI5NjIzNDA0NDgyNkY1NTlBMkUxMEE1MjI1RUI0MkExNTc4QTQyREUyNkJFNTk0RkE2NDEyMjRGM0NGMUYzMDcyMTJGNUFBRDM2Q0JFNzcxRUM1QkRCNDhGNzFBNENBODM1NTZBNTdDRDNBMDU1NzBCOUJBMTU0QThBQTkzOTlCRUFBRTVDNTYwMjhEMDU5Q0NERDAyREQKK0YxQjhFNUFGCiswQTJDNDM3Q0YwMUUwRDg2MEZBOEY2NzFFM0E2CiswQ0JCNzQ2RDlFNUU0NjUwRTJENjkxNkVEODQyN0M2QjRDNkUwMDc1RTYwRTE5RDBDODk0NzU3RUE3MEIwMDg3NTNEN0QwNDYwMTA5MUU2Q0FENDk3NDI3ODU3OUMyQ0E5NDk1M0Q4QUQ2NUMwQTVFMjFDQTgyRTYwREU2NTgzMUE1MTY5MzhEODQwREYxMDU5OTMwMEM0NDRBQUQ2ODZBNjZCNzY0Q0M5RkY2N0RGNEFERTEwMzk1MTIzNkQzNzNFNUY5RkRGODY5QTY5OThFOURGRDAxNDQ4MTc0RjBGMzAxNEY0QjQ5QUQxQUEzMUY4NjBFREYyM0VCQTUKK0E4OTAKK0RECis2MkIwRUI5RAorRjIwRENCREIzNUVEQzA3NkM1NTVEREYzNjMKKzc5NjczQjdGM0VFODlCOUFDNTdBRjVGMTVENEI5OUUzOUY5Q0FBREY2QUQ0MTM2QTJEMjJGRkU1QzQwOUY4MzAzRTgyOUUzMkNDODAzMkRERjdBMkNGMThDOUFDOTdCOThGODQ5NjExNTM0M0UxODQ1RkJGMTUxNDlFRTJFRjQzNjk4QTUwRjkyREEwRTY5MEFDRUFDQzBFM0UxMjFGODM2MzQzRDg1OTY5QTFDNjVFRUM0QkNGQzVBOTA5REI1RjU2CitENEJDODQzRQorRkQ2MkM2ODNCOTUzQzU5MEZDOEQ3NzQ2OTMKK0M0NTM3MzYxQkFBOTRBN0Y4Rjk5ODQ2QzlDQUNERjg3ODdDMEQ2QzlEMkEwNDMzMzUzMEI5ODI0MzJEQ0UzREZFM0VDNkEyQ0Y3MUZDRTg2QjI4M0ZFMDU2QjA2MzQ4Rjk0NzA0MTJCRDFGNzgxRkNFNzFFMjQ4QTRBNkYyNUYwNEQxMkMwM0VFNzUzQTg5RUQ2OURFRUU1NTI5NkVDNzUzNzQxMzAyMDk3Q0UwRjdDRUZGNkU0QUFBQkVBQ0M0MkJFNjUwRgorOUUzNzk1MUUKKzYwQjU2RUM1NjVGMDlEMjM1Njg5NENCRUZFNUIKK0QzMUM1QjE0MUE0NUZGNzA2NTI4NzE1OUE1QkQ2REZFMUVDNDI1OTQwMjQzNzA4MEUzNTU5QkY4QjBDRjNDNjVFQkI0N0ZBQkM1MjIyMjc4MkMxRUJDNjA1NEM2Q0UzMzQ4MDBCNDM1QkVEOUUyRTRGODg0MUExODlCREQ1RUE5NjI0N0MyM0UwNEUyMDgxOEE1NzI4OTU3OEMyQkFCQkFBQ0E1QTBGNEQ4RjM2MzRFQzY5NjNEMTJEQTdCNUM2QjhFODBEQUM1NzFBQUQzRDNCMzVGMjFFNUUyRUM5MTEwN0MxQ0NFODVDRjAzMkY5NjI1QTA3N0MxQURBNQorQkJGOTgwQjUKKzI1QkYxMjE0NkIzMTNFMjg3NTdEMTA0MjAyRkIKKzNGNjc3REM0NUIzRTVENzExODZCOTA1Qjg2N0UxMDVGNkNDNEZENzk0QTZFRjVFMzMxRTYwNEM4NUQyRkYwOUQ4QUI4MjJGNDg0MzM5RjAwNzE4Qjk0NkFENjk4Mzk1ODA5RTU2RjIxRjBDRjVEMDk3RDJDRDE4OENFMDgyQzM1RkNCMUE1Njc0QkMzOTI5RTgzNjQ5M0UzNzNFN0MxRjRDQjFEQ0RFMENDQjAzQUIyMENCOTA4QzgxMTFGODlBN0REQTQxREEzQTMyNEEzQ0I4RTIwNTFFNzQ1QzA3N0M1NUNBNjg2RDgyM0REMDdGMjhBRkFFQUQxRTk4MQorQTU1QgorRDMyRTI1NzQ2NURGRDRBNjVFOTY1OQorQjdBMUU1RkQKK0FGNEEyN0I1NTEyOUU5NkYxNjgzMTQ5QkRCCisxNkExQUZFNzcwMzZCRjYwNEM3NDhDQTFBQ0VENDg4Q0E3NTIyNTNBQkJGNThDRDJEMkE0MEFERjc1MzY1QTBBRjM4QzNGOEM2MDI5QTYwMzRGNDY1RjRGQzZGODk0RTczQTk3NjkxMzA3QzUyOEUyRkY4QjgyCisxMkVBREIzRQorMzNGMzZENDE4Q0M5QkRFQjNBMURGMjc4QzQKKzZBNEYyNkRFODExMzM4REUxNTg5MkE4OUM3RjQ3ODdDOTQ5NDA5ODAwNjYwRDI2MkQxMUQ4OTY2MTY1QzU3NDBBMkNEOEJFRDIyNkVERUJBRjU0M0ZBMDc5NTkzQTBDQ0ZCNUREMkU1MkE1N0IxRDYyMjdBN0JFOEJEMkMzMUE2NTgxMDcwREUzNDM2OTkKKzEyMDU1QzRECitCMjVCMEZBQkU5NkY3MkZENUUzMzVBOTAxNDE0Cis2N0E3MTIwN0ZENTAwQ0JFNkZCNTk4OTY3NUUwM0IxMURDQzdDRkYzMTkzMkM2OTMxRDhFRjNDQTJEMUUzMjI1RjE2OUY0NzNFODczNTZCRTY5RDI4QzkyQjhBMUJDNDEzOUY4RjhFMjJDQjlGNzgzQjgzMTA1NEMyQkUxQzQ3QzkwM0FFQzMyODVDN0QyNzJDRjFBQzE4MENBOEY1ODBBNzE0NDVCMjkwMjcwQkJDRURBRTMzRDU4RENGMTZFRUMxREZCNkE5NDYwOTg3QzkwNjlDN0Q3N0NFNzU4QUMKKzM2OTBGQTZECis5NjhBQUREODA4RENBNkIyRDE1MTI1RDhBMQorODlGQkVENDMyQkU1MzE0MUJDMUVDOUZGRUU4OUEyMDk0RDhFN0QzRkVFRkRFN0M1NzZDOEUwRTNCQTU4ODc1QzUxOUNDQTk1NTdGMDE4QzQwRjUwNzI2QTQ1MTE5RjhDMzI3OTVDNjkyQTRFMkM1M0E2QzJCRjY2NUUwQzNBN0QwQkY2QkMzRTUwRTRDRjg2QzVEMzFENzY1MjAzOUM1QTc3MjYwMTk1NzA3RjhFOEJCN0Y0MTY4MgorMzU5NjNDOTkKKzRERjg1QzEzM0M3QTlBQTRDRTI3NEMyNEI2CitCM0E2ODRERDA0OTU4NUIwQTRGNThCRjM2RkZFN0QzQzhCMjEzQUU0NUQ2REYwMjlBMUU4RDA5QTczNDVDNTlCQjRFNDA5RTc4MjQ0M0UyMTJGNzI0N0YzNDBCMzI0QTZERTA1MDI3Nzc0QUIzODlDNjkwNDA4REQwNEM2MzNEMTAyNTYzNUY0QzdEOTAxODU4ODBFOTMwQkFCOUIwQ0UxODdFMUIxCis3NTlERkVDQQorQzlCMDYxOTlFREFDNTc3RTc4NjA5QzdFRkQzOQorMzg1NTNBRUExOTg0QTIwMzczRTkxNENDRjcwMkREMTk2REJFNkU3MUYyQkM2MTg2MEMxNjk4RUQ5Q0Y4NUMzMzcwMzFBM0NDRURCQTRBNzMwMUMxQjFFRjM0OERCQzk5Nzc1MTcxMjg0QzE5REJEQjk3NkVFOEE0QUU2REFBMEU3REJEMUVFMEEyREQ3QzhGMDdCMUUwRDFEQ0JERkJFRDEyN0U4NzBCQ0I2QzIzOTY2OUIzRDIyMzY4Mzg3NzQ4NENERTYxQkRGMEQ0MzQwQTZBQTEKK0I5MzMyMjhECitGQTIwMUE4QkYxOThFQzREMkQxRjJCNkVFN0IzCis3RDE3OEJENDM1NDA0NUE1RkJBQUVFOTk5MzNCMTMyRDg4RTNEQkNGODM3OEEzNTAzRDAzN0IzREZGRjBBRTM3MDZEOTJBODZBREQwMkYwNzdFREJCRTJENTY1QzdFMTU4MkQ0MkE1RjY0MjY5M0YxMDIzMUFDOTZFOUI1QzZCNzlCMjE4OEUzRjAzMDc1RkNEQTJDQjEzQjM0Q0Q3RjA0MEFGQTk0NjlCRjIyRjEyMjU5OEM2RDVFRTU5QTdDNERCODAzQUUxRjNFRkQwQkQ1MTY0MDJFNjZDRDg4NkE5RTMxOTY2OTg5RDc2Q0JEQjQ3QjRCNEQzN0Q5MTUKKzhBODEyRTI1CiszOEFFNkJDNjQ5MjM5MjUyRjQ4OTAzNkVFODkyCis1MTI0MzA1MzlBMjA2NzREMTMyQUI3Qzc5QjJDMjAyMjQyQjVFNTU2QjU5OTY0RjM2NjBBMjI2RTY1MUI5MTA1MzI4REQ3QzI2ODUyRTAyQjMxMTI4Q0JBRkFGNkUwRDZGMEYyRjRFQTJEQkU3RTg1RTZFOTdFMzcxN0M2NkVDQzAzREQ0Mzc0MkJEMTY3QjY5MUVGQjhGMDc3QzEwRDU2MEUzQjM2ODJCNDdCNTU5MkY5QjQ2MjQyOTNFQ0VFN0U1MTUwOTlERTY0RTYxN0JEMzkxQUZBQjU0MDYwOUQ3NEZDN0RERkRGMDZBNzJBMzVBQkM3MDNDMEFCQTkKKzIyQzgKKzQ4OUJGMQorREJCMjBERTkKKzRGQzYwNTVDNzZFOEFBREUxM0M4N0Q3MDgyCiszNzFEM0Q0ODE0RjVDRDRCNDBFMzA1QkI0MTc3ODI1RDk2MjlGQjZBNDdFRkIzMTk4M0JEQkYzQzA4NDc5MzY3QTlGNzA0NjBCNDRGNTY1MjEyMzc1OUM3NURENjZCNjg3QUE2QjY5RDlDRTlGMDUyMUJBQUI3M0I2Mzc2RkNGQzlFNjg4QUU2Mjg5MTYzRTY5NTFFQjUyMzVBNEY1QUFBMTYKK0I2NDlGQzQxCisyRUZEQjcxOEQyQkMwQzhDNEUxRDM0OUZDNkVECisyNDg3OUYwMjAzQzI1NUMzQzM4M0MyQjIzODVBRTJDMDhCRjkxMDgyRUVBREE4MjI1MTExOTAwMDhGQzE4MTE5NjZBNjQ2MTgyRTcxRTUxN0MwMDBDNzVCRkU5NTZERkE0Q0FBMjVDMzNGREI0RkZCRDE0RjBFQzY1NDNGODQ1QkJFQUIzN0M0QjA4MUQ5QTk5ODRBNEJFREI1ODBBQzMxODQ1RTdENzY0OEQyOTNENzhFQjk3OTk4NjBFNTU0QzU1OTVBOTUyNQorQTBBMzA5ODkKKzNEREVFMjFBQkU3OTZFODFCNEMyQ0E1NjgwRjYKKzIyMTE3MjUyNEMwM0Q1MUFDNjMxRUU2MEI2OEVCMEI0NEI1N0ZDQUQ1MEM4NkEzMEE2NjdCQjExRjBGRDY2RTFGOTA4NjMyMkU2MzJERjM5RDFDREY2Mjg1Q0NEM0FGMDZDMEMzNTEyNzlCQ0JCQzMwRjQ3Qjg1MThDQ0E4OEI3RDc1MDYyMDUzRDY3Q0UwMEZEN0VGREU2OUY2NTc3MzRDQUM3QUQ4NDdCM0Q0RUQ2RUZCMUE3NUI5NDhEMDMzQkMwNzI5Q0VERTlGNzgwOUY2NkI2RjQ1NTA2OTlFQURDQkRCMDYwQTE0NEE4MUUzNTZGNzI1MzI4RDE1NAorQUZDQgorRDRGNEUyMDY1ODhBQjlDQ0ZCMTREQUE0N0ZDM0UyQTgKKzY1OTE3RDJGCis1NzYwRkVGNTgzMERDRDZFRDU3RUQ5Q0MwMjdFCitFMjNGM0IzQjVBRDI3MzhEQjY0OUIzQzY3NEE5QzU4Q0JEMTI3MDc0NDU4RTgzMkZEQURDMkQ4RUQxMjY0OUMwQjJCOEEzNURFNTE3OEYwN0U3NjM0RDVBMTNDNDM3MjA1RjlEMkEwNkE0MzI2Njk2NEIzMDI1ODk2QkZFNEI1MTJGN0M0OURGN0Y2Mjc5MDlERjMwQjg5RTA1NTZEMzBEQTExODc1OEZGNzQ4RDQyRUY3MTQ0QjYxNDUxNjE5MTA2MzJENzY4MUJGMzM4REUyNkJCQkYwN0MzQjlFQjkxOUI1Njk2MTFGMEIxRjIwREUxMzJBN0M1MkQ4OTkKK0ZEMzUKKzExOENDMTcwOEE4MkE4RjdENkRBRjQzNzkwQTBGMUQ0QTA1NEYxNzk5NDMxRUU2RDJGNUU5QjM1MThBQkM2QTkyMDUzRUJEODJFM0IyMAorMzIxQkY5Q0YKKzk0N0JCNzkwNzYwMjA4MDlBRjZGQjNBRDZBCitDNTU1NzVFNkU3RkZEREMwOEFBQjI4Rjc4Q0MzQkVDRkZDRERGMTgwOTMwMQorMjY5RTdBNzEKKzc4NjUzOEI1MzNFMzhFREMxODc0QzNFMDIwCis1RTBCQkUwMzIwQTNFMDI3MzJBQUNENzZBMjI4QzcxRDlFQjFBNTYzRjVEMTMzNTc4MUJFMUY5RTFCNUIzQkZEOUVDNjhEOEEyMEY5MTAxQjM2NkUyM0RFNjlCMEJDNjNDNkQyQUJBQ0E5QkM3RjIxRTY1QQorRDQxNEE2NkQKKzQyRjdBM0QyNkE0RjMwRUQxNkVENURGREIxREEKK0U0MjhERUExQTcyOTU1QzkzMDlEODcyOTVFQTI4OUQ5MUVGNUE4Mzg2MDE0RDcxQjVBNjk3OTVBNjE1ODNGMzVEMERCMDEzQzY4MEI3NzVDNTE0RjdDMzZDMUM4NjA1Rjk0MjFFQjIwRjFENkRCM0EwNURFODM0RjQ1RDlBRTUyMzE0MEZGMjIyMDRDMDVEOTlBQkJCNUUwQzVFREYzRDBBRTdDQjExMEFEMzYzNEZCMjAyMEIyMkUwOTk4ODI4OUM2NDAyRjk5RTY1MTQxOTdEOURFRkUyRTcwQjNCNDBGQkQ4NzhFQjVGODY2QzFEQzA4QTdERTcxODI2MgorMEE3NQorRDJGMzBDCisxNERBRUJDMgorRTQzMDVERTdDODVGNUY4MUFFODVDRUM3MDUKK0EyRUI4OUQ3NzMxMEMwQTY3OEU2NTFDOTJEQjkyQjQxRjE0NEY0RUNGNDlGNjQ3OTY5OEUwNDJGMzVBQzZCNTRDOUJEMUVGMjQ0NTVCNkU1NTc2QzU0NDQxNzUzRTA0NTZCQkRCNDVDQUQyQUIxNzUxMERGNzczQjM1RUUwRUQxMTVCOTJBODRBQzRERTg4NjU3NDA5MDEwNTAxNjQ2NUY1QURBQ0Y4M0NGMUFGRDg3CiswRUU1MTU0QworNkZGMjcyQjVGMTc2QkI1NTI2Q0ZCMzNEN0MKKzZEMDM0RUI4RkYwQUQ0MkI3NUQ4OTk4OUEzM0FEQzhGNUNDRjdGNjNBNzg1MkU1MTIzQUYyQzA0ODQzREJBNjRBRkM5NTM5RkNFMjExMTk5NjI2OTlEMDU4MDdBQzBBNzI5NkVFQzUzRDYyRjE5NEZCQzJDQjJGODQzMTVBODZBRjc4NDA0NEEzMzZCNzk3RDREODIwRUVCNDIzMUE4NUZCNjdBCis3Nzk1Qjk4QworQjM0NDZGNUQ0RkIxRTg2QzlBMDYxQTMwQTBGOAorN0Q3QkFGNTNGNzZENERFMkY2Mjk2QUJBNDQxRUYzOTE1QjA5REQyODU2Q0JGOTlCQjk1MTVDNzFENTIyNEREREQ1QkE5NTBFOEQ2NTZBRTc5RTE2OTAwMTA1RUIxMjA0QkE4NkZCNkUxMjA1RkI2MDk4QjU3QjAxQzkyMUU2QzRCNUM1MEREQTE1RDQzQkM0MUM1Q0VBMzgzNzEzM0M5MDY4M0QyODI2QUZGRkFGQzNDQjkxOTM4REYzMURCNTk4QjRBODA3ODc2QjM0Q0U0QjFBNkZGNEUxRTg2RQorRkY2ODAyMzkKKzI5NkNCNDYyQTM4RUYzREFCOUUyNEY1MUYzCitCN0ZDNUM4NzA5QkFBMUZCNTU3NEFDRjI0RTAzM0M0QUY5M0UyMjQxRjZCNjVDRDlBQkNERTkwQTdBNEU1MkYwNEY5MDlGMTYyRTZFNkEzRkZEMkRGNUJCOUI3NjBFQ0I5RjkzQTY1MDNBQTIzMEU0NUY3NkNENEY0QzlGMkNDRjVDMTRDMjZBRTIxOEE5NjBGRDFFMEM2QjRBRjQ4MzlDNTZGQUIzNjIxMzJGOTI0MUVBCitCMzBBQzg4OQorNTE2QjFBQ0NERTY3NzIyMjJBQzVCMEI4MzgKKzNBQ0ZFRTNCRkNFMjI1QTM1MTk2MzREMDk0RUE5NEVBQTE4QUM1QThFQzM1OUY2QTQ5OTBFNjg0QTA3MkMzODZFOThDQTc5NUUwREMzNTc0QjNCMzQwOUYyOEY5OTdGOTBENkM3QzNBNkE1QUQ5QTM5MTRCOEE1MTdEMkE2QjRFOUU0MTI0RTQ2MjkzRjg0OUI5RDcxOEY0OEE0MTA1NjMyNjUwOUNDRkFDREY5NzY3RkNCRDNCMzEKKzhGQUQ1OUQwCitBQTg4RTlBQjQxNDRCQkUwNzU5MzlCOEExMzA2CitBQTc0NDg0MTgzN0ZBQjYzQ0I4NkM4NTRGNDY1MURCRTI0Q0Y5MzU3OEZFOEZDMENBN0I5ODc4RkMyRTVFRkU4MDQ3NDc4RkQ1NDUyM0UwODU5NDgxQURCNjVGNjZBNEZERTUzN0E5ODYxMTJCRjFENjI4NTRCMzE4MENDQjY5RjJDRDYzQzlFNjQ0NTU1MzUxQTdFRkY4ODY0QzRCM0I1MkQ2Rjg0OTJGMERENTM3NEY1NjdBNkE5ODU4N0YzMjkxOUU0MzY2RUM2QzMzNjgyRjU2MUU4MTdFNkVFOUFFM0QzQ0NGRDdDMEJGMTEwRDA4OTlBMTJERTY0RkIKK0EyREYKKzVFNENCQzc3MkEyM0FDMEU5NjBGRUU2MzM4OTQwOEI2NEZDQjNCRjUzNjJBRDZDMUM4OTlFMDgxRkFBMzE1OTU3Q0VBMzE1MEU2NDE5NEM2MjgzMTQwMDYyMDczRDUKK0M3RTQ4OEQzCitGNEZGRTZBQ0Y0NzU4RkUyRTJEMjdFMkNEQTk0CitERjJBQzBGOTA1NTE4MzE3Q0M0QzQ4MkVCRTlDNjJENzlFRDAwNEQ2OEEwNDZGNUQzM0UzMkQ1QzhDRkM5RTI3MUMxOEE1MkQ4MkZDMkUyRTAzOTY5NTIzRDAzMTJEOEY4Nzc4RkUxNDMyNjFDQUU1NDQzODY2MTk1QjRDQjY4MUU5NjkxQTgwQTdGN0MzMTk5NTYxNTEwMDMyRTE5QjgwNTVDREE3Q0M3ODkzQjc3NTk2MkQxQkE3RDQ5NTlDOTM0MUM4MzVGMjMxRkU1MkJERTdGMzE2NzAxMQorQzNGQkQwN0QKKzY5NDREODNFNjZFMUZDQjg3NEQ5RjNBOTA2Cis4RDMyQUNEQkU4MjE2MTBGNjE3QzNGN0QyRTVFQzQyMUU1QjdFQkY5RTg2MjU4MEUzQkNENEJEODM0MTgwRURDQjZCQkY2QzI5NUI3RTM2NDAzMTBFMzNDMjhEMkVBRjgyMDAwMDgwRUQzMDI2RUY0MTQ1OUM5RTg2QzI5RTA0NDFGMzY1QkJCQTBGN0Y4NEIyRDUyNEFDNjgzQ0Y4NTdFCitFQ0E0MEZDQQorNDcyMjZGMUY3N0IxQUIwRkZDOUVGNzE2RTYwNQorNzk5RjM4MDA1NEFBRDRCRTI3RDEwQzFERjE5M0FCMDFGNDIyRTRFOEFBNzYwRjUyOTlGNEFGRDIwQ0YxNEE4OTMxOTU5RjIxNzEzMUU1QUI4NzExMzY3QTcxQjg1QzU1NzJBMEMwQzM4QjQ5MjRCREJEQjMwQjVEOThDQkM0MjMwQjU4MjE3MzM4ODU3NjUyQjQyNjBDQTk2MEY0MjA1RURGQTYyMEY5MjA2ODI3Q0IwMzZCQ0ExQkU5MkYwQUE4OTdBODYzRjU0MzYyNzFCMkFDOEEyRDRCRDU3MTg3MDM1MzVGNEVCMzFBODkzQTIxNzlEOTRGMDE3Mjg1CiswQTNFCitDMEE1RkEwMzUyQTJEMjQ4MjRGOEZBMzIwQkRFMDMzRDZFRDdFNEQ4Q0FCMUM1RjZCRDM1RkI1MDUzQkZGRjMyNkJGODExCis1NDRDREJBQworMjdCNUM2NjBFOTFBMTE0MzIwNThCN0ZGMTYKKzZDNTA3QjQ5M0VCNDUyODY3NUMyNUJBMEMzNEYxOUIyRDEzM0U3NzZBNzc0MTExNUUzM0IxOThERkVDMkY3MDgzQjM3RThBMUJEMUQ3M0M5MkU1OEJGMkQyRjNGMDBGNDU2NkZERDIxMENEQworM0U1NzNEMTEKKzNBRDQzOTVBMzJDMkIyRjY4MTE0QzA0NDczMUIKKzZEQjgwMDc3REQzMjRCQkI0QkU3MzVFMEI5M0M5NEZERkVCMEU1NTE1QjEzNkFDRjg1MzM3QThFQkJDMDRDQTVCNjA5RUYxNEI3MzJCNkJGRUQyNDQ3MURGMEYyMjkwMTYyRUJDRDA4Q0NCMEU0NUJDODIyNjRFMDU0NURDRDVFN0UyNTY4QTc1RTgyNkQzM0IzOTI5QzUzNDg1RTM1QTBDNTQ1MkJEN0JFMTQzOEJCNTlCNkVGMTQ2QTYwNkFGQTkzNERFRDlCNjIwNDcxQTE5RThCNzI0ODc2QTlGQzJDNjdGMjA2MzZCRUFGMDQ5NUE3QURFQzZCNkFGNworMDcyRQorRDRGMTcwREJDOUVDQjExRDBDQTM2MzJFMEFCNDI3MTQyN0Y1ODU2OTY5MTJDMDFCMUVDMDY5QUE1OTdCRUIKKzgwRTU4OUZFCis1NDk4MkM3OEQzMzg0ODdCODJENEIzRDUwMDNECis3OUNEQTYxMzEzQzJFQkRCM0Q4NUMxNUU1RUY2QjRBODhCNjkxMjI1NzM2NDRFMjg2RjNBNjIyRDFBNzlCMEY4NUQxNzYxQUE5RUIwNzIxMjYwNEJEQzE0Q0IzNERCRjk2NDBGQjM3NzgzOUM0RTEwOUU2NDZEODJCNzkxRkI3QzYyREZENzg2M0Q2NjNEN0YwQUU0RDFGQ0Q0M0RBNzdDRjIxNDNBQjc4NjEzNTY5NEEzRDc4MjE3NTFCNkFFNDYxN0U3RDA2ODRENUM4N0FCQ0E0NUYxQUYKKzQxQUI0MTc5CisyN0E1NjRERDUyQjQ4RjBBRUI2RTY2RDIwMworOTdDNDZGRUEzQjdGN0QwQjZCMkFBRUMwRjYxM0ZEMDE0QkNFMUU0RkEwRUMzQ0VGRTRFODk0MUEyNEE0MkQ2MjI2NDUyNzYwNzdBMDdBOUM5MEI5MTIxRTQ5REU1ODc0OTZFRjRFM0MwRjZCNTIzQkM0MzYzQjNGRDNFQjNEMkE4ODY5QjAyODE0MzAKK0UyOEU3NjZBCiszQ0Y2REJBQTdCRjNFNTE4QzM0QTM2NEQ5QzhFCis4QTdFMDQyQTNENDY4OTkxREVFNDQ3NzM4QjIzQTI3MjYyNDExNjcwQUI5OTJFQzc4RTkwQjQ2N0ZEMzMyMjc5QkNFOUI5RjE0RTY0Qzc5NTlCRENEQUM4QkNGNzBCQjYxOUVCRTRDQzVFMzZGQTcxN0ExQUU1QTQyRkMwQjg4QjU4MkZGQ0RDQUI0QUEzQjY3OUZGMzhFMTNBN0U0QTYzNkUyQTJDRjEwNEYwQ0MyQzAxQ0Q2NzlCMTJGNzAxMTk3OEY4OTdCQTBENjE3MThEREUwQkUwRTJCMDFBMTgzM0YwM0MxMzgwODIxQTQ1CitCNUYyQjc0QworRTBENTVFQzUyNTlCOTYzMTZEQjEwRjBEOEVERQorNUUwQkVDNDBCMzRBNDE0NkMyNTQxRDMzMTc2NzZEMDgyREFDQTZDNjBDOTRDN0FDOUY1Q0JGQzEyMEE4RTQ4ODUwM0Q4QjdCMzZFOUJEM0Y4MjE5NThEODJENzBENkQ1MkY3OEE4RDExMDkzQjAxRDNDQkZBNjJGMDJCNkQ4QUQ3RDlFNThERTI3NUUzMDRCRTRCQjUxQUU2NzY2N0NFNDQzOUUwNzJGMkZCQTMyMDcyRUEwOTgwRDYzM0E4QTAzREM3MjIwQUExMUREREQ1OTdFNDAKK0JGMEQ0MzE2CitDMjNBN0VDQjYxNjMwMjg5RDdFNTdGQzUwMgorMDNFRTZFQzZDOENFRUMxMENFNzIzMDRFNTQyMUYzNzYzRjI4MDNGRDA5RDdGMUY0RTc3QkFGNjYwNjQyNUQ2ODBBOTA0QjAxQkUwQkM5ODYwMTM3MTFDNDYzNTkzMkY4RTYwQjA2MzU0QzJGRTFFM0VBNEYxODExOUI5NDkxMEUyRDg4REVBNzBENTEzQ0ZGQkI3N0NGQzM5QTYxNjE3MkQwOUUzNzkxMTJDMTA2Cis4ODU0QTQ3QworREFCRDI0QjdBRTA2ODdDRTdGMzY1RDMzMjhFMAorQ0JFOEQ0QzU1QTQwRkM5RjNEODRFMDRDRDc4ODAxREFGNDlENjM3ODFBMjMyRUFDRjMyODYxMTU4REZGQkUzQ0YxNEZFNTI1NjlCMjlCQkM3MUVEMjIyNDdBMzRCQ0Q2Q0E5OEI2Q0NBQ0M1NTEwMkQ2MzcyMDY2Q0RGNTZFNzMwOUQ2QjA0M0E5QzhFOTBDRTEwRkFFNTkyMzlCRUUyNjVBQTI2NEVBOEU0NzNCMDlDODREMzk3MEM1NjlGQjcxNzUyNTZFQTNBNTA0RDlGMDZFM0IxMjUwQzVBQjdDODIzREUyMDIyODQ4MUNDMjlGNjEzNUQ2MzcKKzFEMjFEOUU1CiswQjQ5MTNEQjJBOEQyQTYyOEZCNjM1NkE0RgorMUIwMTMxN0IwOUUyNENGMjUxMjhENzdBODc5RDI1NEUzQjQ1NkFDNEYzOUM1MjBCQzQwQ0UxQ0E3QzFBNTNBRkUwMTc2Nzk3NDlFNUNEODRCNDlGMThFMjYxMjVFRTZBRjQyMDQyNzIzOTY3MjhFNEIxMzFFMDgxRDRCRTg0NkRFMzQxQkFGRjY0CitDMzEyOTc5OQorQTczOUNCQ0UyMzJCQThGNjg3QkU2QzY1MTAKKzRCMkJDNjBENUVENjM1RjlCOUNFM0JGOEQ5REUyQTZGRjIzRTQ0OTExMDE5NUIwNkE3REQ4RkEzQTRENTNFREE1QkZDOUI5MjFEOUU1QkJGODdFOEFCRjczNUMyMDQyNEM5NUREQkUxM0NFNDU3REZBNEY2RTlFMEI0NjY0MjNBRDFFNzdEODg0QTJDNjBFNkZBMTlEMTQ2M0Q4QTYxRUVFQzk1QTk0NDQ3MUJFMzdDMkFFQ0EzNjY2RTE2OUYxNUUwMjEKK0JERUEyOTRECiszQUU4ODRBMjIyRjZEN0Q3QTVBQ0UzMDU3MworM0JGNzY5RTc5NEU4NkE2RjZFRTI2ODIxNzA2Qjc5NEFCN0Q2MTBCNUZGOTlGODNGNTVEMjI3ODRDQkVDQ0VGMkYwMkQzMTM1MEREOTBBRjU4NjlDNzFBMENFNDAzNzU4QjczNEI5QjEwMzQ0NzNBOTY3ODY2MThGMDJBQTA1OUU1MjJEMUE5OTMyNjM1ODQzMzY4MUYwODU3ODY3OTMxQ0E1QjFCM0I0QTY4OUMzQTFDNgorODY1NUI5NEEKKzVCQTEyOTk0QkRGRjhEMTU5QjQ5QjQ3NDk4ODQKK0Y5Njg1NEMyMEUxNzI4OTg2NTkxOThEMUQ5QTk4MkMzRTFBNjQ0ODMxQkI5MzM1RDc1NzA5RjY0NjMyODQ4OUY0QUJEMkQxNjUyRTFDRjZERjMxODI0NzhBOTk2REMxMUJFNkI3REE0MTgyMjg2MkNDOEZCODdFMjJDN0NGODlCMDA4MTY0ODdGNDJCOTgxODBFRTM5QUY0NEExOTdFNzAxQkE5REZFOTUyRkM5MzJCQzU0ODRFRDQ5REFDQUU1OERDOTIyMUZDQjkwMDlBRTg3NzU2QThEQUFBNDg4RkYzNzVEMzQ4MjQ0ODAzNDEyRUJGMzZCQTEzMzAxRgorRUMwOQorNUZCQUI5RjE0NzhENzU0OUQzMDEwQ0YxQ0QwMQorMDc3MkEwMkMKK0JBOTExREU4REY0MEYzMkIwNzYwMTAzRTY0NTUKK0IyNDRCOUJGRUMwREU4RjhFMDU4NTNEQkIzMjBFQjc0MkY2QUQzRjlFODY1QzY5MUI4ODY5MTlCNDhBNDM3RjdCQ0IzNURCMDZDMjdDRERGQUZFMEUwNTIzNzI1Q0EyMUEyQzMxOTA4MThBNTNGMUYyQjNFQzcxN0ZBRTA2N0Y4Q0I4OUVBNDNGQ0M2RTRFRTI2MTBFRTY0QTNFRTQ0RTA4RjNCNzZERDEzRTIwRjZCRURBN0JCMDJDMDY4ODI1MjQ5ODhFN0VEODk5RTAzNURFQUZEMkJEMkYyMTM1MDEwQkU5MkQzRTc4QUZCQTNBMDVGNDBGQ0VCOTkyNworQzZBNAorMEVDQTgxNzUzMDg2NkVEMzc3Qjg2NDEyRTU3RjJFNDU3RjdEQzA0QkE3Mzk2OTg1MTAKKzBEMjEwNjBFCiswNDY0NDIyNzY3ODcwMjEzOTRCRTU3MTdERkU4Cis3NDY5MjE0NTVENTEwRTlCQTAzNjkxNzAxMzIzNzVBMUM1RkJCN0QzODA0RDRDRUFEQjkzMkY5QTIxNzk4MTA5QkJCQTkyRDQwMzg3MkEyNkUwMEM4MjM1NTNENjU0MzBEOTI2RjA5NDcyRDVFNDg4ODQ2M0NCMDcyQzYwNzIwRjkzMDNCOTdCMUNGNzRFMDAzNkQ3RUZGRjhDOTZGQUNCMzJCRDg4QjNCOUI4QjBDNjY0REI1RUQzOERCMjM3OUFERENBRUJGNzFBRjlCQkEyNjIyNjc5Qjk1Qzc1QjIxREQ1RkQ1QUY2OTQxQURBMzhCMkQ4NDUyNjI4NzMKK0ZBQjMKKzA2RDBBNTYyCitGM0ZERTNDRDk5QzUyNUREN0UwOTMyQzhBOAorOEFCMUNBQzA1RkM3QzY1NzYyMTgwNUE1NTRCNUI3QTRGQjQyRkNDMkExNEQ4QkI2Qzk1RjQxMThFREMyNEU4QzVEQUZFMjdDQTQxNzJBM0ZGMkRBQzNCMUI4QzRDMkI1REY1NUUwOTg1QzYwOTRDNDU5N0ZDMDQ3NEJDN0VBCisyOUQzQkRDNQorMjkxODIxNkE5MTQ3MERCMkIxNDEzNzY2REQKK0U1MEU2MTRFOUQ0QTgzMjREMzVDMEUzREM3OUFGNDJGRDVENjQ2QzFBQkY0CitFQzU2MEQ5NgorMTkxRTkzQzlBOEQ1NjkzREI1RTBEREREN0FFMgorQTI4Q0YxQTI4RjJBMDA2MQorNzc0RDQ3MTMKK0Y4MTkzNENBMUMwMzI1OTczOUVBQjEwMDk1NzNCN0QwMjExNkM1MkEyNTY0NUVCMEREQzREMURGRUYzQjI5NDI1NjBFCisxMDhEMUE5RkY3QUE3NjA2MThDNjc0QjY0QkNCNEE0RkMzNEVBNjg0MTBEODJFMDc2QjFCRTE4NkFDN0NCODJCQUJDMkExRkY5MUUxCitCRTVCRDg1ODA0QUMzNTAwOTQwQkEwMkJCRUJCMTkxMkRBNzkxMDY5NDIyNUNCRjI4NjZDNUEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDUgcHV0CitkdXAgMyAvQzAwNDcgcHV0CitkdXAgNCAvQzAwNTggcHV0CitkdXAgNSAvQzAwNjcgcHV0CitkdXAgNiAvQzAwNjggcHV0CitkdXAgNyAvQzAwNjkgcHV0CitkdXAgOCAvQzAwNzIgcHV0CitkdXAgOSAvQzAwNzMgcHV0CitkdXAgMTAgL0MwMDc2IHB1dAorZHVwIDExIC9DMDA3OCBwdXQKK2R1cCAxMiAvQzAwNzkgcHV0CitkdXAgMTMgL0MwMDgwIHB1dAorZHVwIDE0IC9DMDA4MyBwdXQKK2R1cCAxNSAvQzAwODQgcHV0CitkdXAgMTYgL0MwMDg1IHB1dAorZHVwIDE3IC9DMDA5NyBwdXQKK2R1cCAxOCAvQzAwOTkgcHV0CitkdXAgMTkgL0MwMTAxIHB1dAorZHVwIDIwIC9DMDEwMiBwdXQKK2R1cCAyMSAvQzAxMDUgcHV0CitkdXAgMjIgL0MwMTA3IHB1dAorZHVwIDIzIC9DMDEwOCBwdXQKK2R1cCAyNCAvQzAxMDkgcHV0CitkdXAgMjUgL0MwMTEwIHB1dAorZHVwIDI2IC9DMDExMSBwdXQKK2R1cCAyNyAvQzAxMTIgcHV0CitkdXAgMjggL0MwMTE0IHB1dAorZHVwIDI5IC9DMDExNSBwdXQKK2R1cCAzMCAvQzAxMTYgcHV0CitkdXAgMzEgL0MwMTIwIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xOCAtMjA3IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzRGNTIxMDExQTRGQUIyMjM5Q0M0QzkxRjNFODUxNEEwQjEKK0Q1NkQ2QUM5MjFCNkNCOUE5NUI1ODYyQworOTZFQTEyNDNENkFEQjczMzgwCitGQkE4MUFENQorRTY3MTg3MzgzMTc1M0IwNjJENTQ4NzBBQzMKKzdCODZEQTgxMzcxMzQyM0M2MTZCNzUyRjVCNDc4NTM1RUE1MUFCMzM2QkYyNjIKKzBDMTJBOUI3Cis0MDM2ODhCRUUxREY4MzE5OTBEOTQyQzE0NQorQzIyMDRDRkNBNDc3QTJGQUMxRDZGRkU0OEZCOTVBNzJFMDdFMDA3QTY1QTU1MTMyOUZCNgorRTVDRUJDQTQKKzIxQUE3MDNENTZGQTlGQUZDNTYwODY2MEFECitCMTU4NUQ3NTdDNjlBOUVFMTAzRjAxRTIxMzJGMzczN0E5RDE4N0YwQUY1QTUzNDMwM0Y1REFGMTgxMUY0MjEyMEVEMzdFMzdGOTkxRjJDMzE3REQ2QjkyQTA2QUZBMTc5OUZFOTFCNjY0N0EKKzQyN0U4QzEzCitDRjYwQUU0OEI1RDkwM0NDQzJBNTcxRTkwMjQzCiszRUZCRjAyRTBDQUYzNzI1RTA0NDdCRjkxMTZDNUU4Nzk2RTgxNEFCOENEMUQ2MEY1RUFEMUNCNkRBM0Y3MkFEMTQ1M0Q2QTNCN0ZDMzdBQTlGM0MxRjY3M0M1NTdDRjE3NUFCMTlERkY4RjQ1MkYyMURCOUMyMzkxQzEwOUZGRTY0N0Y3QzcyNTQyQzRFQkU3MzI4NkY1ODIwNTZGMkFDQTQ1NzcwRkRDNjA5NDE1Q0JBRENEMDFCRUQ0REJFNDdDQTBDOUUzRUMyOUJGMDdCCis5ODFGNDVGMworMDI4NUVDMEQ5MTU2RkJBQjhFNEFFQjQwRDYKKzg0NTdCQzhEQTcxMzIyQjc5MkI3QkY0REY3MkFBRDBDOTM0NTc1NjE0NERCRDI2M0JFRkM0QjA0NTlCQzM2RkFDMzY1QjJDRDJGNkRCQ0E2RDFGRjFGRTQ5NDQwQzUyQ0IwQjI3ODQ4MDIwNDcwN0ZEQ0Q4NEIyRUFFRDg1ODUyQkNDMzRBNDVDMjFGRTk1OEEwRTRBRTMwM0M1NUNCNzM1RDMyMkNFRkY1QTlEMworQTE1MDMzMkIKKzA1MjM0M0MwQjE1QjdBREU1MzM0QTUyMTdENzcKKzI5NURFNUVBREQ1ODZENzNDNTExQTlDRUE4REMwMkVDRkNFRTk2NkZGM0Q1NzM4NzE5NDkwQzZFMUU2MzZDRTBEMzNFM0Q4NDgxNDIwQ0YxRTA3RkJENkJDRkU2OUYzMjFCMDMyMDExNEM5MkZFRDJCNjlBODNBRDVDMUU1QzMxRDY2N0VEQjdFNTQxMTJCMzUxNjIyMzVDRkNFRDVDQTZENUJCNzE0MEMxNTFCODczRTNDQThFMEJENzgwMzhBOTBBRTg5RkEzMTUzMkE4OTIwRTM4QTM2QkQ5NEUKKzIwMUIyMDk0CisxNTM0QzUzRTgzRDQwNzY5RDM4ODg0RDUxNUMwCitEOUJDODI2RTU1OEEyQzlERThCQjZDQzFBNDQyNTI0Njg1RTNGQjVCNTg0NzI3M0Q4MTA1QTM4RkVGRUMxOUIwQTAyNzA3RjlFNEM0MzNBOEVGOUE1NzBFRUU0Qjk3NDI5Q0Q3MDY0QzUxQ0FBQzY3QThEODMxNzA4RTFBREQwMkYxREE4NkRFRTBDRUFDRjJBODQzMDNBMEFBREIzQzBDRjkxQUE0ODUyQkNDRjJEMUNCNjQ1MDkxOTQ2RkE3RjYxNzIzMzlCMDhCODVGMUVGQTU3MzQ1MDlBQUY2RjJBQzM1MkYxQzM3MDNGRjZDCitCNUU4NEU1QQorRUZBRUQ1NTc1NjdEMDI2N0VERTU3QzI3QjEKK0RBQjdGNjkxQzY0MTA0MjEzQkVGNjg4NENGNzQ5RDJBNUQ4MTY5N0ZBQzY2Nzg0QkZEQTMyQTZBRUJFQzJCMTE0NUI0RTM0MTBDNzA1NzM1Qjk1RkY0ODg4NzNBNDNBMjY5ODc3Q0Q5QTRCMUJFNEU2NDIzQUUxNkU0QzMKKzY3MDI0MTRFCiswNEQwOTVCNEZBOThERUEyMjAwRkIxNzU4QgorQUM2N0UxNDI5RDQ0MzJGNkMzNUUwNUI2QTRBNzFDMUVEODU3MkM5MTUxMDQ2NkQxQTI5RUUxOUI0MEQ2OTc5MUU2ODg1MjE0OTYyOUUyRkEzRTBENzhEN0JCNkU5MzkxMjExREZDQTUwMDQ5QzUzNEFCMTVFQ0RCQzMyQkVEQjA0Rjk4MThGNURBODZBNDNFMkQKK0YyRDA1RjZBCisyNTlCRTUwQjQzRTA2NzFFMzNDMTQ4QjVBMAorNTIxOTZBQjAyQjlDOUY0MTlEQjI2NTZGREVCQzE3RkZDNzg4MDc2ODk1REZGNjcyNzRFNTY1MDkxMzgzMTA0QTI1N0I5QUM5M0M5NDYzNkNFRUFFREUzNTM1Qjc2Q0FBQUU2REJCQkQ0MEQwNTY2QUQ5MjdCNTQwNjZEOTgwQjBCQjNDNTI2NzVGRDhEQkYxRDgwQjE0REMyQ0IyMzAzRkNFNTEwOTZDQjAzQkVCRjUwMjRGMTg5OTBEMTJCMAorQkMyMjFFNjcKK0YwNzQ3OTU5MzE4OUFERTlBMTZCNEIzMzU3NUEKKzBDRTZBQzNFODM0MTJDNEIwQjYzREZGMDI0NDM0RjQ0N0QxNDI1NUYyQzYxOTJFMUNCODE5MDY4OEU3MEVGNDgxRDlBRURCQkQ3REY2RDhBODE5MjdCNUYzQjI4QTg2RjFBMTk2OEM1Mjg1RkMxNTQ1RTExMTlBRTZEMjg0RkVDM0I2RjZENDZCNjk4M0U5NkIwRDQ2RUY4Rjc0RTA0NUZFMzU3NzdBQ0M0NEI0MzM1M0ZFM0U1RTNFRjI0OUZBOTY2MEM2RjZEQzM5RjY4RDQ0MgorMkQwOTU5QTQKK0VFOUVDNTFEQjZBMEZDNTVEMjcxNUEyRTFFRTgKK0JCMUUyNzE3NzQzOERENjBFM0UzNzdBNEQ2NDMxRDlFRDUwQThBODBCRjNGRDA5OTNCOTU1RDVCNTg3NzZFRjJDMzk2ODQwRTc0RTk4RURFNzcyQzAwQjYzRkRFOUREQTU3QTBEQkY1NUNCQ0Q1QkU2QjU3MDMzNjg5NUY3NkY5NjQ0OTE3REJENjFBQkRDM0Y3N0Y1RjBEMDJEM0Q3NDQ4MzJGQjk4NEUwOTUxOUFDMzUwN0Y3MUZEQ0I2NDVGNzJEMUMyRTVGCitDODA2REMyQworRTU1QUUxMDkwN0VFODBFRTZFNkE3NUVGMkNCRQorRDlGNTA1MTFEMDMwNzVERUYyM0MwNUMyQzM4RDExNkFGNjUzRkJFRTJFNTZDNTA3NDlGMjA0Nzc4OEM0RTA5ODg2RkIzNDQxNTg4RjJGQ0E4RTE0ODk5MzMyOUY0NDA4Qjk5MjIxNURCQjg4M0Q2N0VFRDI1NjAwQ0E2NUYwNTlGMUM4MUE2RTI0N0YzNDkwQkEyRDNBMDQwM0U2Mzg3RTA0NjlEMzVGQTVFQzYyODhDNUQ4NTJGRUQzNjgzQTEwMzcxNzA0OTI1RkEyNzRDMjhCNDgxODA0MjMzQkJGN0IzRjQ5QTYxOTE5MUY4NzM2RDQyNzNGQzFBNTlBCitERDZDCitGRTI0OENERAorN0I1RkE0MkIyQkEyOTk3MUQ1NTYxRUJDQkYKKzc2MTUzQkRGMjExMEYyNkNDRjc4OUY1N0ZBRDY1NkM0MUZGRDRFNzNGRjRFNTk0NkIwQTk0NDlDQTVENkUzRDVDODlGNDY0MEFGMDg0QzY2NzA2RkI2QzA1QTVDMUM5QTVBOUQ5RUU2OUMxMjEwNTdCNTM5NEQ3QkM4NTc5NUNEMjEwNUUzQkZGRTEyOEQ5NUZDCitFNDgwNEMzQQorMUVERjhERkEwRkY4REFBMTQ4MTVBODI5MjUwNAorRjIxRDkzMkMwREFCMjIzMEFDNUNFRDJGM0VFQzZCRUQwQUZCNDVCRUI5QzVFMzIxMEIxRjdDRDYxQTBGQTA2MzM1OEQ4RjZGMUExNzRGRjNDRkYxMDUzMDIzRjdGQjFCQjU4N0Y4RkFFMTRGRTAxMjBCOTBEMEU4RTI0OTY5OTMxRDgxRUMyMEZGRTU2RUVENEFBRTM3NkQyQkY0Qzk2RENDM0VFRDk1REJDQkQ2QkE5ODczRkE3QTE4MzNDQTE1NjZDM0U5NTkyNkM1M0YKKzY0RTQ3QkVFCisyNjczMTczQjFDRjE2NTc4NzZFNEE3QzVGRTI0CiswNEQ3NzQ4MEQ3RDI2NDY5MTE0Q0FCOTUwQTBDMDBEQTJGNTEyODFGQzI5Q0VBQzU5NTM3NzYwNjJGNkE5NUQxOUFBQUIwMEFEOUE2REE2Mjk5ODc3RTQ2NTBCODQ1MDM3NzQ5NzQ1NkE1QjNGMUE4QUFBQUNDQUM2MDNDNTE4QjkzRjJFNjc0RkMxRjZDNzJCMjZGRThCOEZGMDU0RDYwQjBDMTg0MjQ2OEIxRjAxRTQyQzRFNDBGN0M1MkU4REUyNjIxMUVEQ0I3RDI4M0MzQUE5Qjc0MUQxQzNDMDYxMUY3NTk5QzAzNjhDOTFDQjU3NTdDOTY2MEE5NzAKK0UyM0IKKzFFQTQwRDRFCitCNUQxOENFRgorRDdEMEE0QTRBREIxQUFFQzRGOTc1NTVFNDEKKzg1NkQxNzNDNEVCMkQ0QUIwMDc4MjJCMjYzRTkyRTNEOUUxODg2QTAzRDQ2QjhBQkFCRDY5MjVFMjQ4MDA5N0E3QUYyQzI5MDJEMDkyNkE3NUQ5QUJERDg5NUVCMTZBRTRBMTk1RTI0ODI5MkFGRDc5MTdDOTVDNkI1OTk2NEU3RjhEQjcxRDA5MzAxOERCRkExNjAzOEU2REQ3MDNGRkM3MDgyCis5NEJERjgzMAorREI1MzBEODcyOTcyRDA2NTJGMDg2NkEwRTYKK0U5MTIzNDQ4OTQ2RDI0MEFCMTVCQzA5NzA0NUIwNjU2OUQ0QUNDQTAxRTA3MjkzMDA2NjdDNjhFREM5QTYxOTM2Mjc2QUY0OTcwODExQjcyODI2NkJFNEY5RkM5NkQxNERGRjc4QTc0RDU0N0U4RDYzOEY5RjMyNTgxOEM2N0U0QkMzMTI2M0NCNUM4QkY3MjhEQkRERUE4QTU5NzYwNjg0RjVDNTI2RDUzRkM1OEExN0FGMkQzRjgKK0JGMkZERjg4Cis5MDhBN0NCQjJBQ0ZERTY0NzU4RDE5MjYwRQorODA1M0U5NzIzMDA5Rjg2NzU0QzIzMEJBNzc3MjUyREUyMUVCNjNFN0RCMTkwMjU1MjdCRjI1QjBFQUExNjZCM0UzODlBNDU2OTMwMUJCMTA0RDVBNzYzNDA2ODYyNUYzRjAyODgwRDlCMDYyMUE0OTk2OTU2RkFGODRFM0UzODk3RTYxNkVEOTc0QThCN0EzMEJCMTk3RDQxRjIxN0Q3RjJDMzU1OEMzMEMxRjRCRkIzMzU2NTc5QzdGCis2MzBEQTYxQQorMTQzMDA5RkZEQkM1OUFFMUFGRTU0Njc2RjgKKzI2RDdDOEVGNERFQzQyQjBDNzJGREFBN0ZCNDQzNUFCM0ZDMjBCREQ1RjhBNDMxQzJCMEQ1RkJDMTVCMjBDQURBMzZCNTNCODEwOEU5QzQ1RTEyQkYzRjBBQUYwN0RCMDAxQTc1QkRGRjY2QjY2OTg4NTc5RDgwMDEyRUFERkIzRkE1RURCNDBFOTZFQkFGRUFBMTVFODZDOTIxNAorMDFGNUE2ODMKK0E3OERGN0MzNjFDMDFCMjE2NjA5MzZGRDYwRkEKKzAxMERFN0IwQTIwMjQyQkZGMDY0M0I1NUNEQ0ZFQTVDMUEwRjdCQUE4NDE3QTg5QUE1REM5NjZDRTRGNDlFNDE2RTQ4NzE0NjVBMjVFNjc3NzJFODBDRjkwQ0Y5RjgzMTczOTJERjdBRkNDRjZDNjFENTgzNjU3NEEzNkNGQzNBMDc2MzVFMTc0RUM5RjIwOTQzOTY1NEMyNDQ2RjE3RDRGNzY3RkE3NzYyQzU3QzcxQkZCNTU2N0ZBMEUxQUI3OUI3NTRFN0U3MEZEODMyQjJCNjlBNjEwNUE5QUNENkIyNTEwMTUxRDBBMTE2RDFCMDQwNDE5RjlEOUUxMgorNzdCOAorNDRCQworNUVDMzk2OEQKKzhDQkVGRjRBNTU2MkIzNjE4OUFFQkUyQTVDCiswNDVGMTUwMTM2RDdEMEJDMTJGMEIwREExNEQ0MjBDMDhCNEJBNUI2OTI1REMzN0U2NkEzRUY0QUZBQjQ5NzAzOEMxMzU4NjlDMjlBOTcwMEYxNDJCNTlBMDdDOUEyMTkxMzMzQ0MwNworQ0VDOTRGNkQKK0ZFMjc1QzUxOTg1QjdDNDI0NDRCOEEzOUIxQjAKK0YxRUJGQjQ2RDhBRUQ0NkI0MkRBNDk5Njc0MkM3NDg2NTZGQTk3M0I2NTU2ODE4MkZEQzM3NEYwOUUxOEYzNDk1QTQwMTQ5RDA2RjkyQUExRDlEMkRFOERDMUFGMTUyRjU4MjI2QjVBMjRGQjU0NzA3OThFNjBDRkE4ODAyNTVDQzQ2MzI1OTREQzY4OUE0QTk2MEFDRUZCMzM5OUQ3NDg4MDY2MjVEMjQxRjAyMTFGOUMzNDA1MTA2Nzc4REU2QTg4Rjc3QkQ2OUM1RjIxNDJCN0Q2MDZCQjk2RDVCODdCNkFCMzJEODJEMUU1MjZFMTk4REUxMzgyQUZFQworMERGRQorQ0ZGMDlBMTk1MjJEOEEyQkQ1OUY3MDE5OEY0N0M0NkY0QzY1ODk2RUUzQTJCMUYzQzkyN0E1MjAKKzEyQkMzODlDCis5QzBCQTMyNUI3QUYyMkU3QjhBOTJENkNEQjQyCis5NzU3RDJDMkUxN0JGNjA4MEY0RTAyMUM5MEQzQzEyRkM2NjI2MzNBRkE3OENGMzdDQzMxNTI5MDA5M0RGQUM3MjdCOEMzQkM4NEM1QTA5NzVBQzFFMTVGRjlFQTVEOUREQjhCQjk5REU4Q0UyMDNBQTJCRjZBRTE5NkE0NDY4Qjc3RDM1RDcwNzRCMDI4N0VERTEzMjdDMzM3M0E4NTBFMTkyQ0U4RjgzQzI3Q0Y2RDBENTg4RDA1MTlFQjA1NjIzNkYxRDNEMDZCQjE5OAorMUI5NDlGMzgKKzM0QTU1MDYzNTFERkIyNUQ5NkFBOEI1MEJCCitBMEY2OUM2NDBGMEY5ODE5MzM2MzAxMTU0QTQ4NDMwNkVBRjUwNzZERjlCMjY2NTQzQzc0OUMyQjk5QjYyQzlBNDA4MTE0QTZCRjMzREVDRTdBMkE2Q0NBRTQwMURBMUU4NDU0MkVGRkQyREU2QjI2NDU3OUJGRTIzODg1REMwNzQxQUY3NTA0RkZGNQorQzZCOEU4NDAKKzE0NzIzMzY4OUM4RkUxOEM5RkE2QTVGNDE5MjkKK0Q3NUQzQjFFREZEMTlBRkQyQ0RBMUY2OUM0MThENUJGRDI5NDFBODc0NUEyQTYwNDU3NTdBNzkwNDFFMDhDMzVGRkQ5NTAyRTAwQ0U1NDFBN0JDRDQ3RjI3Nzk1RDYyOUIyODBBMzhCN0Q2RjQ5NEFFNjFDNzNFODAyQTZCMEE3RjE3MDEwRTA0MTJDOTY0QTVCQjczOTdBODI4NDIxMjU4MDVCOTNEQTA4OEQ5RDRBQzU4MkZCQjU0NjI2OTY4QUQ1RDdFMDY2NTI5NUZFMDhCMkNCMjkyRjZCMTZDNjkyODEKK0Y0RTgzQzg5Cis1QzhFMEQ3QUZGNzE4M0E1MzYzOEQxMUJGOQorQTNFOEIwRTVBNTYxQzIyNTEyOEJEOTI0N0EyQTU5Nzk0NzhGMjA4OTRBOEFGM0VCMzg4MzJDNDc1OEU0RDkxOUVCMTAyRUVDNTRBQTM0NTU5RTk3QzU3NDc2OTQyODQ1OURGRTBDOThFREQ1QjFENUExRjIxQjIxMEUxOEQ2QThCNjgyMTJGNUQxMERDQTMwMTFEODcxMDEyRDJBQzRCQUJDMEIxNENDMDBDMUQ1NzhERQorQkE2ODZGREMKKzIyOEMyQ0REOTU5OUYwRDhBRTJFOERCNTgzNTEKKzYxNUUyNUVDQjIwOUVBRDQyOURGREU1NzNDQjZGRUI4MEFBQkFDMjJDQkZERjU5RDFCM0ZBNDUzM0ZGQTUzQjI3RTNCMjc5QkRFMjZDNjYyQTNBMDA3NTg5Mzc1MEVDQjFCQzc3M0VCQUI3MjdENkNDN0YwNTZEOTQ1NDg4MjgxQTQzMTlBREQzNzlFRUIxQTYzMkFCQzZDQ0UwRTVBMDhCRDA0MjUxNjYwMzlDRDhFOTczNkJBRTM4N0UzNDQ5RjFCQjFERUMwMTY0QjRENkFBODZDODIwNDhGMzVBNjE1N0ExNURERENCMEQ0MDE1Q0I3CiszNUMyRERBNgorQjA3NTIwRTY4MTMxMzhFMDAyQzQyRTZENDMKKzM4RUU1ODk1QUU0NzQzRkQyNkJDREQ1Nzk3MzJFQzUyOEQyNDZCQzIyNkY5ODAwRjAyMUY4RkU2MjRGRjg5RjcwQjZCODU0RjIxMkI5RTE3MUIwREE1NEIxODE0RThDMTI0RkJDRThCRUJFNDEzMDhCQTQ2ODcyNkFCQ0VGRkYyOTI5NTdFQjYKKzFEMEE1MThGCiszRkRENjI3QzZGMEJEQjQ4NzdGRUU5REQzODU1CiswNUYxQTU4OTU3MzI0QURCMjdFREU2REZDQzk5QzY4NUU2QkJDRTNBNkM4MTI4QkU5MTFDMDhDQkEzQTBBRDhGRUI1MjQ4Qzg4MUZBQUQzQUNDMEIxRTBDNURDNTUxQ0Y3QkIyN0VGRjY0OEZEQzg0NDZCMTAyN0FDNzI5NDkyQjUwMDU2RTM3RkFCQ0E0QzU4RTczN0MzQzAzQ0RGNzlDRjVFQjdENDNCMkY5ODI5MDMwMjFEQkI0QUVEMEU2NTY4NEU1M0Q5OUM2RjhBMzk2REY1M0E2MEMzMERGNzhBQTRGQUIxQ0EzODE2RTZFQzVFOTI1QzYyRUJBNjIKKzc5M0MKKzE2Njg1MzZGMjA5RDBDNDFCRTk1Q0Y4QzJBRjJDRTZCMjg3REM2Qzc1N0NECis5RTU5NEZFMworMTc2QkYzRUM4RTRBNDQ1RjQwMDk5RUFDREI4OAorRjgwNzM0RTc3OTBFNUY2NgorQkMwNUEzNjUKK0M4MkM3MjUwMDlCRTQ4MUFDNDJFOUZDMzNENEE5NDgzRUI1ODlBNDQxOUY2MUI2OEZFQzU1NzJBN0Q4MTI5Q0E1RTA4CitENTA3NzhBNTBDMjg4MkNBMUNFMTM2OTE0NDA4NTY3MzkwRkFDMTYyNEUxRjdDMUI1RDhFMUQwM0Y0MUIzMUY1RkExMTM0MjdEOEFECis3MzAzRTZENzVBQzYzOUJEMkJERTdCQTgxODMxMTI5QzBGQkZBOERDMzBGQzIyOEIyNjM3RDYKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTcgcHV0CitkdXAgMiAvQzAwOTkgcHV0CitkdXAgMyAvQzAxMDAgcHV0CitkdXAgNCAvQzAxMDEgcHV0CitkdXAgNSAvQzAxMDQgcHV0CitkdXAgNiAvQzAxMDUgcHV0CitkdXAgNyAvQzAxMDggcHV0CitkdXAgOCAvQzAxMDkgcHV0CitkdXAgOSAvQzAxMTEgcHV0CitkdXAgMTAgL0MwMTEyIHB1dAorZHVwIDExIC9DMDExNCBwdXQKK2R1cCAxMiAvQzAxMTUgcHV0CitkdXAgMTMgL0MwMTE2IHB1dAorZHVwIDE0IC9DMDExNyBwdXQKK2R1cCAxNSAvQzAxMTggcHV0CitkdXAgMTYgL0MwMTIyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xNDQgLTIyNyA3NTcgNzI4XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVEN0M3M0UwRDlGQkMyQzUxRkM1RDdBNEM4NDY2QTBBQ0YzCitFRjZBNTFFODU4ODE4OTNGNUY4QkM4NDMwMjA4Cis4N0YzMTAzRjc3MjFFMTM3RkExRjVFMEFBNjY4QjkyRkQ1MjI3OUU2NkMxRjg4RTIyNUYxRDAwNTI1QjAzNjI1NjAwRUVFOUFBMEYzQkM3NzQ4NzVDNzhDOERBMzQ4NUYxNzY3NUM0OTU3NTk5NkE3M0FGQ0RGQzVDMDQzRkYxNTI0MEYyNzY2RDM2MEIyOTVEOUYzNTc1Nzg4MkYyMDIzMUNEMjNENEIxRDQ0NjQ5RkFDMkY5NDZDNTI0NEEyMkY2MkY5OERDODkwMDQ5N0RCODgwRUUzMEJFQzRCRTMwMTFDMTA4QkIxNjAzRkM5RTQ1MDg3QjRDM0Y3QjQKKzM4MEUKK0RCN0JFRERGRDgxMEJGRTU1QTUxRkE5MkU3CitDNUUwMjc2MAorMkZFQTZFMUM3QkM4MTZCMzc5QjlCQjY5MEIKKzNGMUY4RDVEMTNCMkZBMENBMTNCMzJFMjMxQUQ2NzAxRjg1RTcyNEU3M0VFNUNBQjc1MkExRjAxOTI0RTU3RUMzMzI1NjE0N0E5RDE1QzJCRUQxM0U1Qjk4NjhFNDYzRDBDRjk3Q0Y3OTUyMEQxOThFRjdFOUE0RTg0MzM2MTVENDNBREI0MkU3OTU3MDA2ODg2MEFGODE2M0RGQTMyRTFGMUFBOUQ4NEEwNTg5QzMxNkE3NTUxMDc1MzIxNDUxNworNjVCMDI0RUEKKzJDQUUzM0RFQUZFMkZDRkVDMDU1QkNDNkU4MDcKKzhBNTNCNDQ1RDkyMzgyMEMwQjNDM0I3NzVCRkExODU4QjQ5NEEzRTFFRDU3OUI0QjcwMjFCMjc0N0NBN0RCOUJBODEwRDAzQzEyMzg2MEFGNzMyRDZDRUM3QTE3NEU1QURCMkRGMkM0ODQ1OUI3REE5MTA5OUI5RUE0REZEMjcwNjAwNzAwNDdCOEZFRDU3ODUyQkE1NkYwQzc1QjA5RDk1MzE1ODQxQTFENjM3MDAyNjEyRjczMUFGOEVFNDA0N0RFRDVEOEU1M0JBNTUyQkVFRjVENzkwNzBCNkNBQzJCNjhGOEM4MzVCQkU0MTVEOTQ3NEZFMjkzOTNGOQorQUZCNworMzE2OEY4QkFDRUU0Rjc1M0U1Mzc0RjlERDU0RjgxNkYyRkIxNjU2OUNCREZGRTZCRUYyOEFGRkJBOTZFNkQxRDQxNzkwQjlBRDVBNzFBQzQ3RUJCRjA4QUZENjU0QTQxCitCQkI5QjkzNAorMzJDRDNFQTQzQzNENzU2NTBBMDI2Rjk0RUUwNworOEM5Q0QyNTE5RUY1NzIxNTZCMkYzNERFQjc2REM3NkJBOUIyNzA5QTZERDc4QzU1ODk3OENEQzc5MUJGNDM2ODFCQjdBRTkzMjhCQUE3QjI4NEJFRTVBNzQ1NEM3MkE1Q0YyQzlCREU5NDgwNUE1OUZGODQzQkU1MUNDREJGRTY5QzkzNjFFQzZDNDkxQzE4RkEyNjE2Qzc1Qjc3MkU2MTRGMTNDMzhCM0E3Q0FFMzk4NkQyQjE0MkNEREQxREEwNTI1NTZCMEI4MAorQ0QwMDlGNkEKK0IyNjM4NzUwNzAwRDY2RDBBQTU4MTAyMTMxNDEKK0FDMDA4NzgxRjM5OURGMUE4MDQzREJBRUJBRkMyQjRBQjU5NkRBMTA3MUYzRDUwNTY1NUM4QzlFODBGRDlBMUUwRkI1RjcwREI4QTIyN0ZDNUQ4N0UyNUI1OTg1NDYyRDJFNERENDQ2Rjg4NzI0MzJGQTRCRjc4ODlBNkI4MUFBQzlDQjhCODE4MTQxQzREMjM3RDdEQjFGQzVENTFBNTU5Q0QxM0M5MzVCRjFBRTYzOUUyNjFCODM0Mjc4NDFCNTY0MTA4NEY2RjQzRDQ0Q0I3REQ2MEEwRkY0N0U5NENBODZENzFGQzZFRUYzQUMxODkzMENFOTFCMDBDOQorQkQ3MAorNjcxOThFRjBGNTU5NTNERDgyNkEwQzk4MUM3MTkzRTVDQjUzNTkxRkQ5MkQ1RTNFRTRGQTNFCis5MEI4QUZEMworQkQ3RDFBNjUxNDVFNjJCMjQ3NDg0REJFRkQ3RgorOUEzNTRBOENCMkIxOTE2OTgxRjNCMDRDNDQ2RTkxRjlENzg5MEM5OUU3NjhEOUZDNEVBNjI2RDY5OEEwQTMwOTk5MzdDRTBFMTZEMjZEMzhCRkM4QUYyNDkxNEMxQ0FFMjk2N0Q3OUVGREU2OUVGODZFMjM3MzlCNDZCRTdDODM3RDlEMzA2ODhGRDM3NDg2NDlGQkY2ODA4MkZBNEQ3MTYwM0Y0ODNCMDU3RkE2REU0NUVGMzExNTRCNjI1OUYzQjYzM0VGQjNENkEzNTczQjQ3M0VCQTFGMDFERjJDRURCMDI2NzAxMkRDNDUzQkEzMDAKK0MxMTM3OTlDCitENzNEMDU4RkQzMjVDQ0RGRjkxQzdFQ0ZDMEVECitGNUMxQTgzNUZBREQzQTMzRjkwQzZENDBCRTM1QzRDNDRDMUU3NEEwNkJBNUMyMTNBQzNDMzIyMDczMzNGNDE5MjRCNzIyQjQ2N0M0QTI2MjI1N0MyMTM5OEUzQzVFMUVDQTA2RDlBMDAwOUU2Njk1MDcwNzAxNTA2OTBEOTk5QjRCOURFRDY0REVBMjJBQTYyRkNDQjA2RDBDRkZGMzBDRDZBM0YyMTY4NUY4QUY0MzM4MjU0MEMwMDAyNEI3NkZCODZDMjFCRDhGCisxNEI0NEZFRQorRDQ1MzA5Q0I3NjYzOEEzNjBDQzNDNTJDMzc2OAorMzNDQzlDMDdBMkM5NEMyOTIyNTg3MTFBMkUyNjg0QkQ3NzAyMjNFRTg3RThFNTE1MDBFNjZDNDEzQzg4NUREOEY3QjU5MUQ2MTZFMDM1RDBBNEQyNDIyQjAyQTg3QUNBMzU5MTBFMjA0ODMzNTNCOEFFRDhGRDAyN0VEODREQURDOTI3RjA0QUM1RkUyOTBCMjQxMUJBQkU5ODE5QTFCNTQ1NUM0Njc1QzAyRDU4NkZCQzk0NkRDMEQ4QzBENDU2NUQ0N0E0QkExRTAxNzY3QUMwMUJDOTlEMzgwRTI2RUFFRjI4MTExNDBEQTRCQ0IyQjZDREMxNDVFMDIzCis1NTc3Cis0MEM4QzUzRjZDMUQyM0I2NkZCNEM1NDc3ODUxNjU1MTFGRTc1RUZGNURGMDhFM0E4OTBEMjY5NTQyQzc0RTc2RENEQjI3MzM4RjU3OEY3NzQ5RTFCQzU2NDlCNDlDMzVENkVCMDdEOEIyMjA2NTgyRUY0REE1Qzg3MUFGRjBEQzczRDM2NEY1NzFCOUMxQTU1Q0FENjkKK0EzQzg5N0ZGCis2QUYzRjBFRkE1MUY3NjFDRUI1QTA5NjM5NgorQ0E2MkFERDY0MUJCRUI3RjE1QkY3MUVFNjBBMDc2OTc0NjM1OUU2RUQ1MDJEODYyMjE2ODZGNTM4N0ZBRDFDOTlGQzc5RUMzQjY3RDI2REU0NzkxQUI3QzJFM0E4NzhGMTAwREVEQzc3MDc5REU5MzU0Q0FFRTU5MzE1OURDNDgwNDg0MEIzNDZDMEI2M0FGMzA0MkE4RjU1RUQyQ0RENjgxQUUwMkE1NjQ1RTQyNzE5MDg2NDVFNjQ0MzRDOAorNkVDMUZBOTQKKzgxMjI0QjU5NEQzMjRFRUMyMkIxOENGMkZGRUMKK0M2OTREMjZEQTRCMDFFQUMxN0U4MUJEMEExMjAxQjA3MzNGMUEyMzgwNjlDRTY4NUI2MUFCN0MwMzcyREY1MjdGRTEzRTlDNEYwMkZBNEEyQTdCRTlGNjMwNjhFQkI1ODUyQzlGQjdDMEIwREM0ODA2OTlBRTJCOTU3N0RDNDM1Mzc5OUQwMjg3Q0Q5QTVFNkEwOUEwQTcyNUY1OTFFQjEzMUFDRDcyRjk4RDc5MTk5QjdCM0I0MkNGQTVFNTRGMUU3REIxRjkyRUE0RDYwNTVGQ0Y2MjdDNEUyQ0U5MDA0NkE4RTRDMzhFOTk3NDU3OTU5QUY0QzUzMTY1RQorQUEwQworMUVFRkU0MkIzQUYyMThDMTk5QkYxQjk3RkY5RjlCNkVCNjMyNTNCQzM1NTRFOENBMkIzOUYyQ0REMzMxRTczQ0Q3N0Y4NDAzOTM0ODg1MTAzMkU3CisyNkU4Q0NBMgorRjlENEFCOTA5OTY0OEYxNjU5NDRBRDAyRUUKKzgzQTQ5NEZBRDEwNjAxRkNGNTRDMDY2NUYwQjQ3ODdCNTZFOEYwQUQyMkQ4MTRFQkI2NTU0QjYyMkEzMEFDNTdFNDY2QUI0NjgxRjU2NzhEQzVFNjNDN0M0NDdDMEVDRDJCNzA3ODUwN0U5MUJDRjcyNUNFRjUwOEQ2QzQwRTg5RkQ4QTI2NjlEREFGQzFFRkQyQTBENTI0MzRBODI0NDA1MTZDMzkxQjU3QUIxNjlBMEQzNTI3CisyNzRBNTk0OQorQkVDQzM3QjdDNEE5NTUyOUJCMzNGMkMwRUE4RQorMjc5REM2NzAwRURFMENFODUwQTkxNzdDNkU4NTFEMDFENjdCMUZBQTBFRTQ0NkZFOTQ3QjE2QTI0Qjk5QzFDMkU4RDgxNDEzMzdENzA1Njk5NUY0QkE5RDEyNDY1NTE1ODdBQUVGNUU4RkVBOEM4MTI3QkJEREE2Mjk0QUJBNkIzN0I0REI2M0Q5M0JFREFBMzBGQzEyQkQ1MDEyOUEwQTgzQkYzMjQ0MEM3RjQ4MTZDNDc5NzJBREEzNUQzRENBQzY1MTE5MEJBMTkzMTAwNEU3NzcxQzkzRjQzNzY0MTQ4QjFENkJBMkZEQTcKKzgzNjVBQUMyCisxNjREMDc0NjRBOTVDMUMxMTI4OEVDMTg2MworNTNCOUM0QjI5OEU0OUMwOTUwQzhGNTIwNThDQUVGMUEzNDE5OUY4NTNCNzlERTdFMDcxMEU0QjEyNDk3QkYxNTZGODEzQjA1MjFFNzJGNjk5MzU4Q0ZCRDE0QTlENTZDOERDOENGNUY1NkQ2REExODFFMUZFNEQ2NDk2RDI0Mjk3QkVCQTgxQ0RGNDJGNDk4QzAyMjg5MTlBMERCQzUxQzg2ODYzOTkyNUY5RTE2CiswMTNDRDUyNworNTJBNjMzNzA1M0ZDOEUwQzRENTg2OUIyOTYyMAorQkVCRjAxRkRFMTI3OUJCQUZCQjlDOTVGRjY4RUE3ODk3NUU5Q0ZDQzVCNTVGMUFCQTQyMjJDNUY5RjM2REMxNzkzOEEyOUM3M0IyNTIxOTNBRjMzRTU0Nzg5OEEzOEE2QUQzQkExQTYxQTU2RDdEODUzRkUyREY0MjlGODRDM0M2N0Y5NkFCRjIxQzlFODk3ODYwQkU5Rjk3ODYyMkE1MUIzOUIwQjEwN0VCQkEwMzI2RTAwODE3MDg0N0IzOEIzODVCMjY4QUY1RDAzQTExRDU4OUQ0OTIyOTQ4MjYxQkE0NTJFQzEwOTYzRTJENTE4MjFFQkE3RDAyQkZBCitFRjM2CisyRDNBQTkwQjY5NTFDOTY3QTlDOTg4N0U3NDdCMjUzMUNGQUIzOTY5MjQ3NUE0CitFMEUwRjQ1NAorQ0M0Qjg5RUQ5Rjc0MkY5NTU0NzBBMERCNkIKK0M3RDEyQUUxMTRCQkU3QjI2RTFBODk3QzczMTcwM0MyRTQ2RUY1QkQ5Mjc4MzUwNTZCQUU2ODFBRUVERjA3MjcyMzM5NEM5QTFBQzJGOUNDRERBODhCMjcyODgwRjM5RjlDN0E5NDA5NzBBQjlGNzdDNzEzQzQwMDBCQ0YxMDFFNUFGNzYxQkZCOTc3NURENzZBNEFDMEU5NjcxMkM2ODRCMjVGOTBBNjRGNjhGOEM5MkVGMAorNjdFRDgzNUUKKzNFNEUzNzUwNjdGQ0E2QjExQTEyOUFCNzYzMUIKKzMyMTI1ODI4NUE5MUJBODdDQ0I5M0E5ODI5MzQyMTYyRkNDMjI4NUUwMTgwMTZBRDFBMjgyOTRCRkEzNTdFOEY3MTg3NDMxMkZEOTdFQTNBNDJEMTMxNEJDOTIzM0EyOEY2ODFCQ0U4NTZEN0I3NzQ5QTExRUVFRjczQjZGRUYzNDNBRDI4OTRFN0U1MDUwQzMyQ0Y4REFGMzVERTU1MTcwNkM0RTA2NTY0QTkzOUMzRTY3Q0UzQjE2RTlCM0IyMUEyMjkwRkUwNDdCMTU2Rjk2NDI4QzgyMDVCNDJBOTVDNUY4M0I4NjI2Mzc0NDNGM0U1MEI2QkM0OUFDQworRjBBMQorNDJFOEUxQjY4OEFENkNCQzRGCitCQTVENEIzRQorQzc5NDNGQTJEREI3NEY5M0QzRERGNkI1MzM0MAorOEYzRDczMzI2NzJERTE1QgorRTdFMTgzQkIKK0Q4RjJGN0I0MUU0MzYzRkY0MjI0NENFODI5QUE3M0NDNEE3OUQzM0YyQjlGMDgzOUY4OUUzNkUzMDBEQjQ4NTdGMDUyCisxRjM1REQzRjVGQTJCRDFFQzRBMUM4RjQ5NTFGNzk3RUYyQzBCMkM4MjQxODI3OEQ4N0ZCQkY0OThEMkQyRkFCRjg3Q0E2RkRBQzk5Cis1ODYyNEU0MzVFODAwMjkyMTc0QkQwRUE2MENEQjcxQjMyNkM3M0VGN0FBRTMyRkRGMjdENTEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmkgMTIuMDAgL1BTT3dzdGR1dGNoaSBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxYjJhMzgzNDJhMzYyYjEwMDExMjAxMTMyYTMyMjgyZDMxMjYzNjJmMDEyYjMzMzYwMTFhMmEyNjM3MzkzNjJlMzIyYzAxMWIyYTM4M2IzMzM2MmYwMTFkPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDJhMzYyYjMzMzYzMTI2MzIyODJhPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwYzBkPiA5MzQ2IDEzMzAwIDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjgwIDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyODAgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI4MCAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyODAgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA2MGEwZDA5PiAxMjcxIDE0MzEgMCAxNzc2IC0xIHMKKzwwMDA1MWExOTE5MTMxMjFlMTUxYTE5MTcxMzFkMWQwMDBlMWUxYzEzMTExOD4gMTc3NiAxNDMxIDIgMzkzMCAwIHMKKzwwYjBjMGYwNz4gMTI3MSAxODI2IDAgMTg2NiAtMSBzCis8MDQ+IDE4NzAgMTgyNiAwIDE5MjggLTEgcworPDAwPiAxOTI4IDE4MjYgMSAxOTU5IDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDE1MTkxZDE4MDAzODJhMzczODM3MDAyNjM2MmEwMDMyMzMzODAwMjgzMzMxMzQyZTMwMmEyOTA4MmUzMjAwMjczZDAwMjkyYTJiMjYzOTMwMzgwMDNiMmUzODJkMDAzMjJhMzgzNDJhMzYyYjA5MDAxODJiMDAzZDMzMzkwMDNiMmUzNzJkMDAzODMzMDAzMTJhMjYzNzM5MzYyYTAwMzQyYTM2MmIzMzM2PiAxOTU5IDE4MjYgMTUgOTQ2MSAwIHMKKzwzZj4gOTQ2MSAxODI2IDAgOTUzMSAtMSBzCis8MzEyNjMyMjgyYT4gMTI3MSAyMDcxIDAgMTg2NCAtMSBzCis8MDAzMzNhMmEzNjAwMTUxOTFkMTgwNzAwM2QzMzM5MDAzYjJlMzAzMDAwMzIyYTJhMjkwMDM4MzMwMDI2MjkyOTAwMjYwMDA4MTUxNTFjMjQxNTE5MWQxODAwMzgzMzAwMzgyZDJhMDAzMTI2MmYyYTJiMmUzMDJhMDAyNjMyMjkwMDM0MmEzNjJkMjYzNDM3MDAyNjI5MjkwMDM4MzM+IDE4NjQgMjA3MSAxNiA5NTMxIDAgcworPDM4MmQyYTAwMjUyNTE5MTgxMzFmMTEwMjAwMjYzMjI5MDAzNjJhMDgyODMzMzEzNDJlMzAyYTAwMzIyYTM4MzQyYTM2MmIwMDI2MzIyOTAwMzIyYTM4MzcyYTM2M2EyYTM2MDk+IDEyNzEgMjMxNiA2IDYwNTAgMCBzCis8MTI+IDEyNzEgMjY0NiAwIDE0MzQgLTEgcworPDAwMTUxOTFkMTgwMDE0MzMzMjMyMmEyODM4MmUzMzMyMzAyYTM3MzcwMDFmMzgzNjJhMjYzMTAwMzgyYTM3MzgwMDA1MTUxOTE0MTkyNDFmMjAxZTE2MTIxYTA2MDAyZTM3MDAyNjMyMjYzMDMzMmMzMzM5MzcwMDM4MzMwMDI2MDAyMTE1MWQyNDFmMjAxZTE2MTIxYT4gMTQzNCAyNjQ2IDEwIDk1MzEgMCBzCis8MzgyYTM3MzgwOT4gMTI3MSAyODkxIDAgMTY0OCAtMSBzCis8MDAyMDJkMmEzZDAwMjczMzM4MmQwMDMxMjYyZjJhMDAzOTM3MmEwMDMzMmIwMDM5MzIzNjJhMzAyZTI2MjczMDJhMDcwMDI4MzMzMjMyMmEyODM4MmUzMzMyMzAyYTM3MzcwMDM4MzYyNjMyMzczNDMzMzYzODM3MDkwMDIwMmQyYTAwMTUxOTFkMTgwMDM4MmEzNzM4MDAyOTJlMmIyYjJhMzYzNzAwMmIzNjMzMzE+IDE2NDggMjg5MSAxMyA5NTMxIDAgcworPDM4MmQyYT4gMTI3MSAzMTM2IDAgMTU2MSAtMSBzCis8MDAyMTE1MWQwMDM4MmEzNzM4MDAyZTMyMDAzODJkMjYzODAwMzgyZDJhMDAzMTJhMzczNzI2MmMyYTAwMzcyZTNlMmEwMDMxMzkzNzM4MDAyNjMwM2IyNjNkMzcwMDI3MmEwMDMwMmEzNzM3MDAzODJkMjYzMjAwMzMzNjAwMmEzNTM5MjYzMD4gMTU2MSAzMTM2IDE0IDc3NDEgMCBzCis8MDAzODMzMDAzODJkMmEwMDMwMmUzMjJmMDAxYTIwMjEwMDA4PiA3NzQxIDMxMzYgNSA5NTMxIDAgcworPDE1MTkxZDE4PiAxMjcxIDMzODEgMCAxNzg3IC0xIHMKKzwwMDI5MzMyYTM3MDAzMjMzMzgwMDM0MzYzMzNhMmUyOTJhMDAxODFkMDgzMDJlMmYyYTAwMzcyYTJjMzEyYTMyMzgyNjM4MmUzMzMyMDAyNjMyMjkwMDM2MmEyNjM3MzcyYTMxMjczMDNkMDAyYjM5MzIyODM4MmUzMzMyMjYzMDJlMzgzZDA3MDAyNjMyMjkwMDM4MmQyYTAwMzIyYTM4MzQyYTM2MmI+IDE3ODcgMzM4MSAxMSA5NTMxIDAgcworPDI3MmEzMjI4MmQzMTI2MzYyZjAwMjkzMzJhMzcwMDMyMzMzODAwMzQzNjJhMzczOTMxMmEwMDM4MzMwMDM0MzYzMzNhMmUyOTJhMDAzMzMyMmEwOT4gMTI3MSAzNjI1IDYgNTM2MiAwIHMKKzwyMDJkMmE+IDEyNzEgMzk1NiAwIDE2MzEgLTEgcworPDAwMzcyZTMxMzQzMDJhMzczODAwMTUxOTFkMTgwMDE0MzMzMjMyMmEyODM4MmUzMzMyMzAyYTM3MzcwMDFmMzgzNjJhMjYzMTAwMzgyYTM3MzgwMDI4MzMzMTMxMjYzMjI5MDAzMDJlMzIyYTAwM2IzMzM5MzAyOTAwMzAzMzMzMmYwMDM3MzMzMTJhMzgyZDJlMzIyYzAwMzAyZTJmMmEwMDM4MmQyZTM3MTA+IDE2MzEgMzk1NiAxMiA5NTMxIDAgcworPDAzPiAxMzk4IDQyODYgMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDMxYTFiMWUwMzE5MTMxZTFiMTMxYzE0MDMxOTEzMWUxYjEzMWMxNDAwMDIwODAwPiAxNTA0IDQyODYgMyAzNzg1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGIwNDA4MDkwZDA0MDUwOTBjMGQ+IDM3ODUgNDI4NiAwIDQ3NDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMjFlMDA+IDQ3NDQgNDI4NiAyIDUwOTkgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE1MTkxNDE5MjQxZjIwMWUxNjEyMWEwMDA4MDgwMD4gNTA5OSA0Mjg2IDIgNzE4OCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAyMTgwMD4gNzE4OCA0Mjg2IDEgNzU5MyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MGMwYjBkMGU+IDc1OTMgNDI4NiAwIDgwMTcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxNzJhMzYyYTAwMjYzNjJhMDAzNzMzMzEyYTAwMzMyYjAwMzgyZDJhMDAxNTE5MWQxODA4MzczNDJhMjgyZTJiMmUyODAwMjgzMzMxMzEyNjMyMjkwMDMwMmUzMjJhMDAzMzM0MzgyZTMzMzIzNzAwMmIzMzM2MDAzODJkMmEwMDE1MTkxNDE5MjQxZjIwMWUxNjEyMWEwMDM4MmEzNzM4MTA+IDEyNzEgNDYxNiAxMiA5NDUzIDAgcworPDA4MTU+IDE1ODkgNDk0NyAwIDE5MzcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MDMwNDBmMGMwYTA0MDI+IDIwMzMgNDk0NyAwIDI3MDAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNzM0MmEyODJlMmIzZD4gMzE3NyA0OTQ3IDAgMzc5NSAtMSBzCis8MDAzODJkMmEwMDMwMzMyODI2MzAwMDI2MzIyOTBhMzMzNjAwMzYyYTMxMzMzODJhMDAxNTE5MWQxODAwMjkyYTNhMmUyODJhMDAyYjJlMzAyYTAwMzIyNjMxMmEwNTM3MDYwMDA1MmIzOTMwMzAzZDA4PiAzNzk1IDQ5NDcgOSA4ODk1IDAgcworPDM1MzkyNjMwMmUyYjJlMmEyOTA2MDk+IDMxNzcgNTE5MiAwIDQxMTIgLTEgcworPDAwMWYzZDMyMzgyNjNjMDAyZTM3MDAzODJkMmEwMDM3MjYzMTJhMDAyNjM3MDAzODJkMjYzODAwMzMyYjAwMjYwMD4gNDExMiA1MTkyIDkgNjkxNCAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBjMDYxMDA0MGMwYTA0MDI+IDY5MTQgNTE5MiAwIDc1OTMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOT4gNzU5MyA1MTkyIDAgNzY0NiAtMSBzCis8MDgzMT4gMTU4OSA1NTIyIDAgMTk0MCAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwZjAxMDcwZTA0PiAyMDMzIDU1MjIgMCAyNDk1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzczNDJhMjgyZTJiM2Q+IDMxNzcgNTUyMiAwIDM3OTUgLTEgcworPDAwMzgyZDJhMDAzNzJhMzIyOTAwMzcyZTNlMmEwNzAwMmUzMjAwMjczZDM4MmEzNzA3MDAyYjMzMzYwMDM4MmQyYTAwMzAzMzI4MjYzMDAwMzczZDM3MzgyYTMxMDkwMDIwMmQyZTM3MDAzMTM5MzczODAwMjcyYT4gMzc5NSA1NTIyIDEyIDg4OTUgMCBzCis8MzAyYTM3Mzc+IDMxNzcgNTc2NyAwIDM1MDIgLTEgcworPDAwMzgyZDI2MzIwMDMzMzYwMDJhMzUzOTI2MzAwMDM4MzMwMDM4MmQyYTAwMzAyZTMyMmYwMDFhMjAyMTA5PiAzNTAyIDU3NjcgNyA2MzU5IDAgcworPDA4MWE+IDE1ODkgNjA5NyAwIDE5NjcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwMTA3MGUwND4gMjAzMyA2MDk3IDAgMjQ5NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDNiMmQyZTI4MmQ+IDMxNzcgNjA5NyAwIDM3MDMgLTEgcworPDAwMjcyYTJkMjYzYTJhMzcwMDMwMmUyZjJhMDAwODMxMDcwMDM3MmEzODM4MmUzMjJjMDAzODJkMmEwMDM2MmEyODJhMmUzYTJhMDAzNzJlM2UyYTAwMmIzMzM2MDAzODJkMmE+IDM3MDMgNjA5NyA5IDgxODAgMCBzCis8MDAzNjJhMzEzMzM4MmE+IDgxODAgNjA5NyAxIDg4OTUgMCBzCis8MzczZDM3MzgyYTMxMDk+IDMxNzcgNjM0MiAwIDM4MzUgLTEgcworPDA4MzQ+IDE1ODkgNjY3MiAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGEwYTAxMGMwYTA0MDI+IDIwMzMgNjY3MiAwIDI3MjUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNzJhMzg+IDMxNzcgNjY3MiAwIDM0MzIgLTEgcworPDAwMzgyZDJhMDAzMDMzMjgyNjMwPiAzNDMyIDY2NzIgMiA0MjY2IDAgcworPDAwMjYzMjI5MGEzMzM2MDAzNjJhMzEzMzM4MmEwMDE1MTkxZDE4MDAxZDFkPiA0MjY2IDY2NzIgNCA2NTA2IDAgcworPDEyMDUzNzA2MDkwMDFmM2QzMjM4MjYzYzAwMmUzNzAwMzgyZDJhMDAzNzI2MzEyYTAwMjYzNz4gNjQ3OSA2NjcyIDUgODg5NSAwIHMKKzwzODJkMjYzOD4gMzE3NyA2OTE3IDAgMzUzNiAtMSBzCis8MDAzMzJiMDAyNjAwPiAzNTM2IDY5MTcgMyAzOTg2IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjEwMDQwYzBhMDQwMj4gMzk4NiA2OTE3IDAgNDY2NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA5PiA0NjY1IDY5MTcgMCA0NzE4IC0xIHMKKzwwODM3PiAxNTg5IDcyNDggMCAxODQ3IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBmMDEwNzBlMDQ+IDIwMzMgNzI0OCAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNzM0MmEyODJlMmIzZD4gMzE3NyA3MjQ4IDAgMzc5NSAtMSBzCis8MDAzODJkMmEwMDBmMGIwZDA5MGQwMDFmPiAzNzk1IDcyNDggMyA0ODUyIDAgcworPDEyMWQwMDJiMzMzNjAwMzgyZDJhMDAzODJhMzczODA5MDAyMDJkMmUzNzAwMzcyZDMzMzkzMDI5MDAzMjMzMzgwMDI4MzMzMjJiMzAyZTI4MzgwMDNiMmUzODJkPiA0ODQ2IDcyNDggOCA4ODk1IDAgcworPDI2MzIzZD4gMzE3NyA3NDkzIDAgMzQ5MyAtMSBzCis8MDAyNjM3MzcyZTJjMzIyYTI5MDAxZj4gMzQ5MyA3NDkzIDIgNDQ4MCAwIHMKKzwxMjFkPiA0NDc0IDc0OTMgMCA0NzY1IC0xIHMKKzwwNDM3MDk+IDQ3NjkgNzQ5MyAwIDQ5NTYgLTEgcworPDA4M2I+IDE1ODkgNzgyMyAwIDE5MDkgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjEwMDQwYzBhMDQwMj4gMjAzMyA3ODIzIDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM3MzQyYTI4MmUyYjNkPiAzMTc3IDc4MjMgMCAzNzk1IC0xIHMKKzwwMDM4MmQyYTAwMzAzMzI4MjYzMDAwMzcyYTMyMjkwYTM2MmEyODNhMDAzYjJlMzIyOTMzM2IwMDM3MmUzZTJhMzcwMDJlMzIwMDJiMzYyNjMxMmEzNzAwMDUzYjJkMmEzNjJhMDAyNjNhMjYyZTMwPiAzNzk1IDc4MjMgOSA4ODI1IDAgcworPDNmPiA4ODI1IDc4MjMgMCA4ODk1IC0xIHMKKzwyNjI3MzAyYTA2MDk+IDMxNzcgODA2OCAwIDM2OTIgLTEgcworPDA4MjI+IDE1ODkgODM5OCAwIDE5NzUgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjEwMDQwYzBhMDQwMj4gMjAzMyA4Mzk4IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM3MzQyYTI4MmUyYjNkPiAzMTc3IDgzOTggMCAzNzk1IC0xIHMKKzwwMDM4MmQyYTAwMzYyYTMxMzMzODJhMDAzNzJhMzIyOTBhMzYyYTI4M2EwMDNiMmUzMjI5MzMzYjAwMzcyZTNlMmEzNzAwMmUzMjAwMmIzNjI2MzEyYTM3MDAwNTNiMmQyYTM2MmE+IDM3OTUgODM5OCA4IDgzNzIgMCBzCis8MDAyNjNhMjYyZTMwPiA4MzcyIDgzOTggMSA4ODI1IDAgcworPDNmPiA4ODI1IDgzOTggMCA4ODk1IC0xIHMKKzwyNjI3MzAyYTA2MDk+IDMxNzcgODY0MyAwIDM2OTIgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MTAxOTE1MWY+IDEyNzEgOTA5MSAwIDE3MTAgLTEgcworPDAwMDYxYTE4MTExNTE5MDAwZTFlMWMxMzExMTgwMDBlMWExMjE2MTMxZTFkPiAxNzEwIDkwOTEgMyAzOTU2IDAgcworPDBiMGMwZjA3PiAxMjcxIDk0ODUgMCAxODY2IC0xIHMKKzwwND4gMTg3MCA5NDg1IDAgMTkyOCAtMSBzCis8MDA+IDE5MjggOTQ4NSAxIDE5NjAgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMjEzMjJlM2MwMDE1MzMzMTI2MmUzMjAwMWYzMzI4MmYyYTM4MDAzODJhMzczODM3MDAyNjM2MmEwMDMyMzMzODAwMjgzMzMxMzQyZTMwMmEyOTAwMmUzMjM4MzMwMDMyMmEzODM0MmEzNjJiMDAyNzNkMDAyOTJhMmIyNjM5MzAzODA5MDAxODJiMDAzZDMzMzkwMDNiMmUzNzJkMDAzODMzPiAxOTYwIDk0ODUgMTUgOTA0NiAwIHMKKzwwMDMxMmEyNj4gOTA0NiA5NDg1IDEgOTQ2MSAwIHMKKzwzZj4gOTQ2MSA5NDg1IDAgOTUzMSAtMSBzCis8MzczOTM2MmEwMDM4MmQyYTAwMzQyYTM2MmIzMzM2MzEyNjMyMjgyYTAwMzMyYjAwMjEzMjJlM2MwMDE1MzMzMTI2MmUzMjAwMWYzMzI4MmYyYTM4MzcwNzAwM2QzMzM5MDAzMTM5MzczODAwMzYyYTI4MzMzMTM0MmUzMDJhMDAzMjJhMzgzNDJhMzYyYjAwMjYzMjI5PiAxMjcxIDk3MzAgMTEgODI0MSAwIHMKKzwwMDMyMmEzODM3MmEzNjNhMmEzNj4gODI0MSA5NzMwIDEgOTExMyAwIHMKKzwwMDNiMmUzODJkPiA5MTEzIDk3MzAgMSA5NTMxIDAgcworPDA4MTUxNTFjMjQyMTFiMTgyMz4gMTI3MSA5OTc1IDAgMjY0OSAtMSBzCis8MDAyNjI5MjkyYTI5MDAzODMzMDAzODJkMmEwMDMxMjYyZjJhMmIyZTMwMmEwOT4gMjY0OSA5OTc1IDQgNDczMiAwIHMKKzwxMj4gMTI3MSAxMDMwNSAwIDE0MzQgLTEgcworPDAwMjEzMjJlM2MwMDE1MzMzMTI2MmUzMjAwMWYzODM2MmEyNjMxMDAxZjMzMjgyZjJhMzgwMDFmMzgzNjJhMjYzMTAwMzgyYTM3MzgwMDA1MWYyMDFlMTYxMjFhMjQxZjIwMWUxNjEyMWEwNjAwMmUzNzAwM2EyYTM2M2QwMDMxMzkyODJkMDAzMDJlMmYyYT4gMTQzNCAxMDMwNSAxMSA5MzM1IDAgcworPDAwMjY+IDkzMzUgMTAzMDUgMSA5NTMxIDAgcworPDIwMTQxZDI0MWYyMDFlMTYxMjFhPiAxMjcxIDEwNTUwIDAgMjcyNCAtMSBzCis8MDAzODJhMzczODA5PiAyNzI0IDEwNTUwIDEgMzE1NCAwIHMKKzwyMDJkMmE+IDEyNzEgMTA4ODAgMCAxNjMxIC0xIHMKKzwwMDFmMmUzMTM0MzAyYTM3MzgwMDIxMzIyZTNjMDAxNTMzMzEyNjJlMzIwMDFmMzgzNjJhMjYzMTAwMWYzMzI4MmYyYTM4MDAxZjM4MzYyYTI2MzEwMDM4MmEzNzM4MDAyODMzMzEzMTI2MzIyOTAwMzAyZTMyMmEwMDNiMzMzOTMwMjkwMDMwMzMzMzJmMDAzNzMzMzEyYTM4MmQyZTMyMmM+IDE2MzEgMTA4ODAgMTIgOTUzMSAwIHMKKzwzMDJlMmYyYT4gMTI3MSAxMTEyNSAwIDE2MDIgLTEgcworPDAwMzgyZDJlMzcxMD4gMTYwMiAxMTEyNSAxIDIwMzcgMCBzCis8MDM+IDEzOTggMTE0NTYgMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDMxYTFiMWUwMzE5MTMxZTFiMTMxYzE0MDMxOTEzMWUxYjEzMWMxNDAwMDIxZTAwPiAxNTA0IDExNDU2IDMgMzY5MiAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWYyMDFlMTYxMjFhMjQxZjIwMWUxNjEyMWE+IDM2OTIgMTE0NTYgMCA1NjU4IC0xIHMKKzwyMDJkMmE+IDEyNzEgMTE3ODYgMCAxNjMxIC0xIHMKKzwwMDA4MTcwMDJjMzAzMzI3MjYzMDAwMjgzMzMxMzEyNjMyMjkwMDMwMmUzMjJhMDAxYzM0MzgyZTMzMzIwMDJlMzcwMDMyMzMzODAwM2EyNjMwMmUyOTAwMmIzMzM2MDAyNjAwMjEzMjJlM2MwMDE1MzMzMTI2MmUzMjAwMWYzMzI4MmYyYTM4MDAzODJhMzczODAwMjYzMjI5MDAzNzJkMzMzOTMwMjk+IDE2MzEgMTE3ODYgMTYgOTUzMSAwIHMKKzwzMjMzMzg+IDEyNzEgMTIwMzEgMCAxNTcyIC0xIHMKKzwwMDI3MmEwMDM3MzQyYTI4MmUyYjJlMmEyOTA5PiAxNTcyIDEyMDMxIDIgMjc1MSAwIHMKKzwxNzJhMzYyYT4gMTI3MSAxMjM2MSAwIDE3MzYgLTEgcworPDAwMjYzNjJhMDAzNzMzMzEyYTAwMzMyYjAwMzgyZDJhMDAyMTMyMmUzYzAwMTUzMzMxMjYyZTMyMDgzNzM0MmEyODJlMmIyZTI4MDAyODMzMzEzMTI2MzIyOTAwMzAyZTMyMmEwMDMzMzQzODJlMzMzMjM3MDAyYjMzMzYwMDM4MmQyYT4gMTczNiAxMjM2MSAxMSA5NTMxIDAgcworPDFmMjAxZTE2MTIxYTI0MWYyMDFlMTYxMjFhPiAxMjcxIDEyNjA2IDAgMzIzNyAtMSBzCis8MDAzODJhMzczODEwPiAzMjM3IDEyNjA2IDEgMzY3MiAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgxMykgMTMKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNiBwdXQKK2R1cCAzIC9DMDA0MCBwdXQKK2R1cCA0IC9DMDA0MSBwdXQKK2R1cCA1IC9DMDA0NCBwdXQKK2R1cCA2IC9DMDA0NSBwdXQKK2R1cCA3IC9DMDA0NiBwdXQKK2R1cCA4IC9DMDA0OSBwdXQKK2R1cCA5IC9DMDA1MSBwdXQKK2R1cCAxMCAvQzAwNTggcHV0CitkdXAgMTEgL0MwMDY1IHB1dAorZHVwIDEyIC9DMDA2NiBwdXQKK2R1cCAxMyAvQzAwNjcgcHV0CitkdXAgMTQgL0MwMDY4IHB1dAorZHVwIDE1IC9DMDA2OSBwdXQKK2R1cCAxNiAvQzAwNzAgcHV0CitkdXAgMTcgL0MwMDcxIHB1dAorZHVwIDE4IC9DMDA3MiBwdXQKK2R1cCAxOSAvQzAwNzMgcHV0CitkdXAgMjAgL0MwMDc3IHB1dAorZHVwIDIxIC9DMDA3OCBwdXQKK2R1cCAyMiAvQzAwNzkgcHV0CitkdXAgMjMgL0MwMDgwIHB1dAorZHVwIDI0IC9DMDA4MiBwdXQKK2R1cCAyNSAvQzAwODMgcHV0CitkdXAgMjYgL0MwMDg0IHB1dAorZHVwIDI3IC9DMDA4NSBwdXQKK2R1cCAyOCAvQzAwODggcHV0CitkdXAgMjkgL0MwMDkxIHB1dAorZHVwIDMwIC9DMDA5MyBwdXQKK2R1cCAzMSAvQzAwOTUgcHV0CitkdXAgMzIgL0MwMDk3IHB1dAorZHVwIDMzIC9DMDA5OCBwdXQKK2R1cCAzNCAvQzAwOTkgcHV0CitkdXAgMzUgL0MwMTAwIHB1dAorZHVwIDM2IC9DMDEwMSBwdXQKK2R1cCAzNyAvQzAxMDIgcHV0CitkdXAgMzggL0MwMTAzIHB1dAorZHVwIDM5IC9DMDEwNCBwdXQKK2R1cCA0MCAvQzAxMDUgcHV0CitkdXAgNDEgL0MwMTA2IHB1dAorZHVwIDQyIC9DMDEwNyBwdXQKK2R1cCA0MyAvQzAxMDggcHV0CitkdXAgNDQgL0MwMTA5IHB1dAorZHVwIDQ1IC9DMDExMCBwdXQKK2R1cCA0NiAvQzAxMTEgcHV0CitkdXAgNDcgL0MwMTEyIHB1dAorZHVwIDQ4IC9DMDExNCBwdXQKK2R1cCA0OSAvQzAxMTUgcHV0CitkdXAgNTAgL0MwMTE2IHB1dAorZHVwIDUxIC9DMDExNyBwdXQKK2R1cCA1MiAvQzAxMTggcHV0CitkdXAgNTMgL0MwMTE5IHB1dAorZHVwIDU0IC9DMDEyMCBwdXQKK2R1cCA1NSAvQzAxMjEgcHV0CitkdXAgNTYgL0MwMTIyIHB1dAorZHVwIDU3IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstNTAgLTI1NiA5MjAgNzY2XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjE5Rjc1RTUzQUMyQUI3NTI0RTYxREQyOTQyQUQ0M0M4NjBDCisyRTE3RUNGMDBDODgzQjY2QTMzMEI5N0IKK0ZCNEE2QUE2RUExMEFFQzY1MQorQzkzMzNGQ0EKKzU2OENEQUI3QkE4REY2QjQxRkY1QzAxNzJGMzIKKzEzNkJDMTA3REVBNjcxRDVBMDRERjA1MDI5Q0VGQTZFNEVBQzAzNjVGMTBDQUMwMEI1QTEwOUNGNTYzQzk5OTc3NTk3QTgxMjEwNDYyRUVGRTlDODExNTAxNDQ0ODI3QTcwRkZGQjIyOTI5NkRDOTU0OTMwQTIwN0ZGRTlBRDNCQzdBMTYyMDBBNjIzRTUxODk0MUEzNzRENjI4MkQ5RjZDRjYyQjM2RTRCNkM5NTJGNTQwRThFQjM3Rjk0Rjk1QUIyRDJGQkE4MDlDNzM1NDkwNjg0QzIyQUMzNjVGMzJBOUYyNDk2N0ZFQzEwQzc0NEZGQzhDNjVBRDE0NAorRkU4NAorOUE5QTVBQTZBOTlGREUwOUQ5NkM4NkY4CitBRDgzMjI0NAorRjMyQTYyQkM0QkNFNkYzMkU4OUYwNkY4N0QKKzEzNTJFNTg5OUFFMDFDOTU1M0IxMEZGMENGMzg4REVCNzU0MjlGMUVBRDFCQzY1MkMzOUE4QjkxRTlGODQ3QzQ5NkM1RTZCNURCQTRGRUU4RDgzNTkwQjFFRkJCQTFBRTM1RUVGMDQwRTA4NDU2QjI5MEY0NzY1RjQ2QzM2QThFCis3M0JDNzUwRAorMTgzREMwRDU1MUMxOEI2NjdBQUQ1NEQ4MjMKKzUwRjhENUZFRDhGRDRENUU2RjVFQjA3OUE3REI4MUIxMjMxNEY5M0Y2MjIxNDVGMTYwRTkxQkI4MzkxN0ZFNzE1N0IxNDZGQURBODVBNjA3N0YxMTE1REZGNzFBNEY1NTc5MUYzQzdBNkEzNjlBMjM2ODQ1MkE2RjZFRTI1MworNkVENTVDMDUKKzkwRDlCMUZGNjZBQ0YxQ0Y1NkVFQ0JENzM2CitDNTk2RDZGQzBGMTgxQUZGQTc5NkYyQTgyQkU5MDEzNkNEMDQzQzg1RTEyQzc5RkMyQUEzRDU3ODUzRDExMUFDRTlDQzBFMkZEQTdBNjM4MTlEM0M5MEYxMzRFMTQ5NDAwRjRBNjM1MTQ3MTQ0MTE3RTcKKzMwMkJFQTQ3CiszQjk4Q0VGMjE4MUNERDk2RTZEQjBCMEJGNQorOENFMzBFNDYwMkUyOEFCMjUwNjFFMTQ1QzE5MTM1NkUzRkFCMDlBOEVDQkJGOQorRjRGODVFNDcKK0NENkNFMEVBNTE3Mjc1NTMwREMzMERCQkMxCiswRTEwODY2NTFCREUxNTA0NzEwMEYxQUIwN0I5RUU2OENFMTMwMTdDRjNDRENCOTgwQTFGQzRBRDA5QUQ3MQorQzA1NERCQTUKKzlCNUYzNDVBOEMyNTFEQ0MyMUEzMTk0NEMxCiswRTEwODY2NTA1MTdERjIwNzgwQ0REQzRBRkVFNERCODVDRjJBNUFDREE2RjAwMzc2OUY1QzYwNTI5RjU2MjVEMDNDNUQ2MkRGQUMxMkFEQjZFQjM3RDQ2MTgxODFDRUEwNTZDMDY3NEI4NUY0NTQyODI4N0QwRkEzOUY3OTkKKzFENkZDQTU4CitDRDlDOTk2OEQ5MTc4MDc3ODRGMThBODcxODZECitFMUI0OTZDNDZBQTRCMjMyNUU5QjIyNkM0OEI3RDA4RDdFQzJEQ0UzMjQxQ0EyQjhBMEQ0REUwNDU4NzIwNDNDOEE3NEE1NUEwRTI1QjY0ODMwMTM1RUYwNDFEOERBN0YwOTNDMzkzOTBENkVDQjg1NTAzM0FDRkNGM0Q0RTExOUYzNTBFNTlGRkI4QTZDOTE3QTY0MzhBQkJFM0JGNEIwNDhEMDMyQkRCMzUxMEQ3NTJBM0I1REMwMDY1QjdBNEI5QTkyMzMyMUE1MUIzRTA2QTkyQTQzNTUwRDIyOUUKK0UxRTM4OUY5CitGN0I5QUY0RDZDNjc5RjRGNEMyOTlGNjcxNgorOEFGN0U2MUZDNDU5Q0U2NkE0MzUzQkMyMURGMzNBNUU5MjIzQzNDNjQxMkI0OUNCNjNCQUJGNzMwMkY0RkI4RTkxNzg4QjYwMTRENzIzRDA2MDhGMzBBNEY4NDYzQzU0MkUwODc2OEYxMTE5CitBQkY0MEQyMQorODkxNzU5NTREMzcxNDBCRTlDNDg4RTc1QkJGNQorOTdEQjQ5RTM3OTA5QkIwMUEzNTFBNUYwMkRDMEY3QUIwQzQ0NDlEQTFDNzg5RDNCODc1MTQ1NkFGQjc0QkUwOEVGOTFEOTU2OENFRDVFNjQyMTgyMTJGQzc4Mzc3MDE2MzY2RDJENUVDRkVDRkJFMjgwMjY3MTRDQTBGNThGMzc0Njg0MzFEQTc4RDAwQUU2NTEyREJGNEI3MkU2QjY0QTE1NEREMjg5NzhBRTM0NDM3RUYxMDQ0RDk5MjgzNERGMUJDMUUyOTU4QzFGRjMxNEQxNDU1RTczNzg5NUM4NTJFMTZDMjkKKzhBMkU2RjlFCis4RTFFNTIzMzVDNjAwNDA3QjM3MkU1RkQxOTk2CitGOEFBRTc5MTU3REI0NzI3NkQ0MENFM0VGQjQ2QzkyQjk1MUE5QTA0RTRENDMwMUZBMjE0MTFCNDhEQjczRDk1N0NCRkI3QkRFRjkwQUI2OTQ4NDQ5RkNBN0ZDOTk4RTExNThCMjM2ODYwNjhGMEFFNzdCRjEwQTE5NEJBOEMzQjI5M0I5NjhGODNCREQ5ODcxMTYwQUE3MDU0NjEwRTZDMjE4NDkzMzM0OTZCMEEwN0Y1MzNEOUNBMEM5OEE2RjAzNzNCNENCMUZGRUZERjA5RUEyMTY5MkQxNTRDMDlDMUIwNEI3QTU1MkI4RUVCRTcxMjU4Njk3OEQxRUIKKzE4MzIKK0M0CisxMEE5N0JBQQorRjBCQUZGRkI5QjI5NDYyNEMxOEREMUQ0M0UKKzhDN0I4MURFRjM3NTVEOEU0ODJFREM0QkM2RjE1QUEwOUEzMjdCREYyMjlCNTRCMzlEMTY3Njc4OTg3OENEQUQ0OTAxMUNBQzA1REI1Mjg4NzE1MkQ4NDUxN0IzRkVEQzc3MDA0MEUxNDM4QURGQUYyQjBERUNCQkM2MTZBOTI5NjgyQjI1N0UzODk5QUI3Q0JGNDlFRDIzQkU2NzYxOEYwMUJCREU4MDMzOEFGQzg4REMyQUExNjZBRTU5RTcyNTE4CiszMjIyOTFCOAorRDM4Rjc1RUY4MTUzQjY3NkIyMDM3QkFGQkMKKzc5RjMzRTA3MUJCM0Q4Qjg1M0Y1Njc2NTYxQUY3RTZDRDE4MDI0QjE4NjBBQTJCNzdDNUVEMThGQjQ5MzU4NjRFNjg0Q0FDODFCOTE3MTIyMTQxODI0RjdEMEJEREE2MjQ2RkVGNTIxNjI4MTgyMEJERUREQzQ3QjYwNDAxRDRDNjQ2QjBEQjBCOEMzM0I4NzJBM0RCMjMwOEJDNDQ4QjA5OEJGRUFDQzgwNTMxQTE1NjBCMEFCNEFFMTVGQzBFMTUwMzNCQworNzU0RkZEQjIKK0E2MUQxNTAzMjQ5NEMyNDI3NTY0MDc4QjA1OTcKKzVCNDYyNUQ1MTUyQjg2Rjg4NTIxOTNCM0Y3NDIwODZGNzRBMkM3MkYwQ0RDNjU2ODlBRUVFM0MzMUZGNUIwMDQ2REFDNDM5Q0E2MkRCOTkxREI5NTk3ODZGQjQ4NzYzNDExQkEyMkFDQTA3QUY2QTMzNkVBRTBDOUVFQzQyRUI0MTM0MUQ4ODBGMkU1N0E0MDQzMDlENkY5RjJDODZGNTE2MjYxOEQ5MzczRjc0QjZEMUNFQTkxQThDMDA1NUNFNEUzREE1MkFCQUY3N0JDN0M1NTQzNThEMTg0NDU1QTRGMzFCMzI1NjAzQTdCOTdEQ0Y1QkVGRTIzNjkyMQorNERCMzZCMDIKKzg5QUVFRDNBRDg0NjMzNEMzNzE5NDFGMEFBRDMKKzI3MzUzM0YwNEU2MzEzNjJEMDExQTM5OERCMkMzNUI2OUZCMzhEMTlDREZFMjBGNjZFQ0NDNjIwQjM0MThFRUU1NjlDQzgyNTBBNTIxNURFMTQ2NzY3ODdFQzk1N0IxOTQ1MThFQkI1MzNBQzI3NjgxRjBEMjQxNTYzQjFFNzc1NjNFRTJDNUUyNDBFMkY4Q0IzOTExMzc1NzNBNkY4QjczNDk2RDBFRTU3RjQxQUJBRkZDQzlGRTc2NEIxMDEwOTc2RDRBMTQzQzc2MTYxOTNFMQorRDhCRDlEQkYKK0ZDM0JGOEE3QzI5N0ZEQjhBNzkzNDRFRjU1NDgKK0U3QkEyMUU0MTEzRjU1RjNDRDI4OTdGNTY2NzA0RTY5RDVEODM0QzdGQjFFM0NFQkQzNDZERDBBQjdCQTg2QzY3N0YxQzkzREExRTYyODQwMUFERUJCNzU5NzYyRUIyMzMwRkE5RDk5QUM3MDgyOTgyN0Y4QjNBQUREQTMyMDE2MEUyMDhGOTlCMzQ1M0YzMTM2NTlCQjA0QUMyNjVCMTlBNDJBQTY2NTFCREE1RUEwRDZFM0YwMTNENjcxN0Q0NDE1NEVFNjYxQ0VERkRGMUYxODRDMjJDQzRFM0ZERUQ0MzdBMzY1MTYxM0FGNjRCRDEyRDQKK0JFRUYwNEQ3CitFOUY0RTFGQTc0NDU3Nzk2NEQ2RDdENjBDNUYxCitFMEM3ODAxMjhFOTAyNkVGMDM0ODcxRUQwRTVCNDU2RTVDRjdDQ0VGMEUwQTFEMkFEOUNBNTBGMDgwM0YyNDYzRTc3QUZGNUFEOTVFMTNEMjkxRjg0Mjc0RENEQkNEMTUxNDIzOTAwOEY2ODNBNTk3NEQ2NjU2MkQ3RTZEQkUzMDQ0NkVEN0E5OEY4QjUxRUE4MUEwNUI0OUI1MjUyMkNEMkM3N0VBQjk4MzE1NzU4ODU2RDVGNjg2RjdFMTZGNzZCN0M0MTAxQkU0QUM1QkIzRUY2NjlFMkRFMUY4RTE2RkI5Mzk4NTFCQjY4MkFEOUY2RkMwQjgyRjdFMDYKKzU5OUIKK0E2OEU3QjFGQTU0NzQyODcyOTIyOTAKK0RGQUJBNzBECis0MkQyRjVDRkU0MDQ2RTlERkE1NkNBRjE5OAorRjEwNzNCN0I1OTg4MzAxOTdFODU5MkFGRDRCNDQxNjU1RURGRTBBN0ZBNzlFNzE2OUU0MTlFRURFNEJERTAwNUUzREVBNERCNzhGM0JFMTFGQTBDNDM2N0IyMjE1NUY0ODM1REFDOTcyMjE5QTI5MzRCNzAxOAorOTEwOENBMEMKKzZGQjRCMUMzQjQ3RUE5N0FEN0YyNTBGNzY3QTUKKzNBODJGOUQ4OTA3ODk2Q0E1MUU2RTE4NUU5QTNBMzE5NDBCQkYxN0Q0OTM1RjJEMDhGMkYyMzMwN0IxMTU2NkFGM0FDNkVCREU4QjMwRTczNjIxRDc0NUM0NUNDRDAxRjRDNTMxNkJGQUNBM0Y3OUY4MkE4MkVGM0E1NkMwOTA5RTM1MzhEREE4ODU5QTE5QjZCNENGQTIxMzJDRTdEQzQ4OUUwMjIxNDlCQTYwOTE2ODc0ODRGMDYzRkM2QjZDMUFBODAyOUU5NkI3MjY2MjgwQzEzMkZFNkIzNkIxQworQ0M3MjYxQ0MKKzkzMkIyRTM0NUU5Q0U3OTFCQ0ZERDI3RjE5CitFNjM1NzgxMTlFOERFNzFDRDQxMjI0RjRGMUZGNjg5NjQ4RDJCQUYwMUY3QUJDREMyRTI5NjkzOTg5QjI4QTZDQTFBRkIxNUI0RDgxQUQ3NUIwOEI1OUE2QTRGQ0ZENUZEOTg5RjY2MkU3OUQxMzJGQTAzM0RERDA5NkY1RjEzMTc1REY4NDgxQjJFRjZEMENCQzA2MDFDNDdGQkIzODk0MTNGN0MxMDIwODlDODg3NUU1RTY2NUI1Cis2NjVEMEUwMworRTZBMUVENkYzRThENjY2MDY0QkUzQ0FFQ0EKK0I3RjNGQjRCMkMxMDdFNzkxQ0FFOTA1MjVDRURCMzk1RDc2NUE0RTlGNkNENDU3RjVFNjA2QkJFMTIyRTg4RDQ2RTUwQ0UyNTMxQ0Y5Nzk4QzRGMTE5RjczMjM1NEIyQUNBQjRFN0NFRTE1MDI3MjFDMzRBMjc4MTEyNjdCOUI1RDBERTFBQ0RBREUyMzUxOEVBMjUxQ0YxOURCNzZCQUMxNzFCQUIKKzlERTlDRUQ1CiswNjM1RkVFOTcyREQ3MUQwQ0U0NzAxQ0Y1MjM1CitDRjY3QjVEQjUyQzAwNURDM0QyODQxRkY0QUU4RUY5MDMxQzI3M0YzRTg0RjYxMDBGRTRGMjlCRkQ2QjI3NTk2RkY2QjJFMTBDNTdDOEMzODlFQzI1RDEzNEEwNTFDOTVDNkExQzNEOUI1QTUzMDNBMzM1NTA2RUE0QjU3NUZGRDdGOUYzODNFMjdERjFDRjhCQTYyNEM4OTAzREFCQjkxMTQwOUQ1QkQ3NUQwMDhBMTNDRTg3NzIxOTlBRUE5QjAxMjhCRkQ4NkI0ODIxOUJGQTg3RgorQUE3MkYzNzcKKzZGMzJBRDQzOTQ4NDVBOTg4NUExRTU5NTdCQ0EKKzBFRTMyNkI5QTgxNzIwOUVGNzU5NjU1RDVGRDdFQUFEREU4MTJDNjc5MDUxNjU4QjIzRDJCMjRCRUQ3MUFDRDQ0RjQwQkI3NEM3RkNFNTFBQkIzNzVGNTE1Q0JFQUFCM0JFQkY0OTZERjdDRTRFRTU0MEEwMUFBNkYzNUUxMTI2NEEyRDk1Rjk1Rjg3QTY5MEZGQUY5RUI2NkUyNjk3Q0NFOTQxRkVBQkZGODQzQzFGNDlERDQyRjMyQzExRDJBMEM0MjU2N0NDMkIyOEVGREM5OTBDNkQyMDhEREU0NEQ5MjFCMzZDMzQ2ODFENzU5ODc2NUMzRTBCNTg1OQorOEQ5NDFDQkYKKzgxMjk4RkMxODI0ODUxNkIwMDU5NDIyOEE1OTQKKzk3NDRGRjQwMDhDNEVEQUFCRUZFQTgyQ0Q3MjM0NUQwNkNFMTE2Q0ZFOTZCMUFCREQwOTQ5MzY1Q0EwREVCQkFDNkIwQjBGRjA0OUE5Q0U2NUE3MTQ5OTQ0QzQ4NzkxN0NCODI1MTc1QjQ2QzVFOTQwNUIwMDk5NTQxMzU4REI2MUVCRTUxMDQyOTc3QTFBREYwMTJBMERFMjBENEY4NzMyOTQ4NUUxMDUyRjFEMjFFMjA2QkFEQTlGRTg5MzYzNzA4RjFFNkVBNTVEOTQyQTUwRUZEMDY4N0E3QTg4ODUzRUEyNjBBM0NBOTAzNUI0MTI3MjY2M0U0NDY4RQorMEE1NworMUY1N0VDCis4RjRCMzFFQgorNTg3OTU5NkQ2RjE4N0ExNzQwRkE3QUYxQ0QKKzI4NDg4QzFGQjA4MTJDNzVDOEZFOTI2NUJBRkMxRTU2ODA1QTgwNEU4OUY2RjkxMzVFOTRFMzUwREQyQUU0MDVBMkZDNjBBMzhENTZCMzVEMUJCQkZCOUU3MkE3RTNDRkFGMEFBOTg0MEYxNTlFQkZCQkU2NzU3ODYzMzI3QzA2NzM4NTBDQkIxQUY4RjcyMkZEMThDMzdENkM2QkJBQTE5RQorQzc1RjlGRjgKKzM2MzhDQkNFRkQwQUVDOUY5NDQwOUFBRkZCQTcKKzUwQTE2QTQ5MzNDM0U0NkZGRDBBRDhFODQ4MzYxNzBDODQyRURBNTQ3RkQzMENBQjE1MkVBM0Q5RjQ0QjlGQURGMjcwODU4MjEzMUY5QzRGNjU3REY3NDc0QURFRjY3NzQ4Rjc2RTcyOEZCOUEyQUJENjdEQzJBRUMyMjAwNjYwRjY5NEZFQkNCMkMyNENFODFFMzYyQTREMjUyNTQ1RkU0NDBBOEZBRDc5QkE3REYyMTU2RjI5NjQ0RDgzODlBN0UwQzJBMTFDCis3MkVFNDk4QgorNzVERDVCMzFFNzFGOTYxOUZDOTM3QTA5MzUzMAorM0VDMTgyMzhCOTAwOUFDRDkyMzA3RUFDRjFCOURDNjYxNTE5OUIyNTE3MzE2MUZGQUFBQjRBNkY0RkU2QkM3MzM1OTY0Q0Q1QURFQjk5REUzRTM3RUU0OTZENkZDQjA4QjRCRkFDRUQ1MEY3M0E0RTVGQzMxMEZFMEE4MzhEMzRCNDU5MjdEREFBNkIwQzU1RjdCMzkxRTBDNDIyMTg1MUZBMjFDQjYyNUEzMDA1QjY1RURFQkYzRDQ0QTgwMURDRTZGMDA3ODA0MzY1N0ZFNzBDMzNGNTZFREM5RDc1MjlCMTU2NDE0RjhGNjY3Q0QzRUQ0NUZFNDhGMUI3CitDNEQwCis3ODQ3MDhCQjg4QzVEQUJGRUJCQTI0ODE4OEJCMEYyMEYyMEIwNDgyRTkzRDdFMkU3MDlBODZDNUVGNDYzNjA3Q0ZEQzVDOEZFNzYzMjYKKzQ4NDJDNjgyCis2NjZGRTdCNUMwRDVFNUVBMDlBNDQ1Njg0RgorNEEyNzcxNjU4MEU3NzMyRkM0OUYzOTUwNjQzMkFCRjZBNkQwQ0E5RjY4MjZEN0YxNzZCMjFEOENGMDhDMTkyMzU1RUVEREVGRTE1RUYzNEE4NUNCCitFNzhFQTYzMworNTczRjIxM0U4MzdDMzVBOUYyQUM5NDIxQTQKKzZBM0ZBM0Y2MTlCMzhBQ0FGQzQyQkNBMjZDQzBEQTc4MTkzNEVGN0Y5RUU3NTUwMDE3MjhFMDdDREQzMzUyMEY4MTIzM0Q5NDZBOUE2NDI3MTQ3QTU0OTkKKzQyNEEwNzVCCitDNzMxQzMxN0E1Nzk5RTM3ODMyNEU3NkQwMQorOTM3RjlDRkVCQ0MyQkU4NTM0QTMzNDZEM0JFOURBNjZCMzk5RTgyNTk5RTgKK0Q4QkY5RjMxCitFOEU0MUVEMEM1QTIzNTg4NThBQ0Q1RjVCMjQ4CitFMDE2MjE1MjUyNjZFM0I3RDlDMERCNzM0MDc4NjkwQTI3QTU1QjQyQThEMjg3QUE3RDRGOTA3ODkzRkJGMjQ4NjJGQUU0NkYwNTMyMEVCOUU3MkZEOUY3NTI0NzQyQThFM0M1OTBCRjIyMzVENkZDODZEM0E2REQzNEQ4QTIwMzAzMTk1NUZENzU1Njk4OEVFRjVCQ0E3MUNDQ0ZBMDU2OEFFMEYyQTExNzM3RjE2QUE2Q0VEODJBRDk0NDIxNzNFRjQ1QTMyMDBDNzY0OTE0QTk5RTM0MTJBM0VENkY1M0U2RjAzQUJCRUU0NTNBRjY4MzRFRjI0QjU3QzgKKzc2MzgKK0Q2RERDQworQjcyQzhCMTgKKzAyQzMwODZDMTM1RjFFMTZBNUI1QTQ4MDU5CisyODkwN0ZERkNCMjEwNzZFQzMzRDQ1RDE2NTEzNjQzQzY3MzQ3NTFGRDhCQjFDOThBN0UxRURGMUE5OTBBNUE5NDQ0QTlDNzY0QjJCNUQxRTM0Qjc1ODc1QzMwMDRCRkNCNjhBNjRBRjlCNDQ5NkVEMzFCQTM2NjNEQUVDODA4OEVDMkU0M0YwMDA5NTJBRDM1Qzc2MEU2MzUwQzE2RTkyQjEzREZFMzU3RjJCMTAwMQorNjZDQzU4NDUKK0YxRjA1QjNDOTMxNjk4MzQ3RjhEQUJFMzAzCitGMjFDMTBCNjU0NURBOTY1RUExMTY5MkNFMTIyQkRCQjkyRUU5OUEzNzg5MEFGNzVCMzI0NDU0NjM0NkJDRjI1NTkyOTU5OEUwNUVCNzkzNzgyNzBGQjgxNkMwRDcwQ0M0NTRFRDE3MTRGMTkxNEU0RTc0QjI2OURBQkI3QTc5QUVBNzA3RDM1OURGNkQyQTI3RTI0M0U5OTUyQjhGNUY0OENCMAorOTA4OUNDMUIKK0NDQjFCNzA2MTFGNkJERTBDNTA1MTg3OUM5QzMKK0M4MDYxODM3N0I4M0FCMzU4RkY2RDdBODkwRTI2MjU0RkUyMTg3N0Y2RUFFNUQ1OTM5NEM2RUUxMzExNURDOTgyMjgxNzZDRjlDN0JBQUI3RTFBMjlCREZCODNFMUQxN0Q0Qzc1MDBDQzM0RjhGQTRGNEQ0NDIxOEQwNDM4MDc3N0YzNjYyQUM0OTI0QjE3MkNFQTQzMjI3OTQxMzE4MjU2QUI1MEEyNURCQTY1OUZENERBMjYwQjk3MzU1MzJDREZEMkFFQ0M4Mjc3NTZFRjQwNkFFQzMxMEI1NDQKKzAxMjMwODg0Cis2QzA0MTJCQjg3NENCNDFDNzUyQkEzMTBBRgorRkE1NzM1NUFBNzIzMzVDMkFEMkQ5RkE2RjIxQjc3NEZEQUUxNEQ5MzE3Q0ZGNEY3N0VENUUxNjhCQjcxODMzNjFEREFDQjk1RjE4ODZDRThBNDc4OUIwOTBGQkJGNkZENUE5RERBQTYxMUZCN0U5MURGODQzQzY4NkM3MjhBNEY1RUUyNTJCNTk3NzJEOTZGMTkzRjA2NjJFQjVCMzE1NUE0M0NBODZGRTNCOTZCRkRBMQorMDRERDM2M0QKKzBENjRGNTAxRTBFOEU4RUJCMzBCRjRBREFECis4NkVGNUJFRTE3NzY5MzAzQjE2MzQ2QTkwNkFCRTUyMDEyQ0JGRDdFRTNCOTMyNTRDNEI3NTdDRjlDOTI4QkZGRjU0NjJDOThDOTVBMjFGNTU4OERBM0MwQzA4MEVGMDQ5OTBFRENBNTZGNTU5MjYyOUQ4MzU0OTU2MjIwNENERDQ5QjgwMTMyQUYzODQyMkQ4MzE1MTdDNDQxRDNBRkQ3QzAyNDczRjU2QTQwQjRDQzA2MTI4RDc1CisyMjQ4NUE1NAorNEMzQUY5ODNEMTA4OTNEMTk3NUNDNzdDNUQ3RAorNjZERkU0MzE1OUM1NDEzOUMzNTI5ODIyQjkyMjAyM0NENUY2MjdFQzZDM0JFNzRGNkFCRTVFQzIzREFCMEVEMjVDRDQzQ0VGQ0E1NEQ1RTY3RkU5NDRBNjM1QTQ3Nzg3MjhCRUYxNjczMEVFNjgyMDcwQUE3QkQ2MUM2MTgwOUE3MEIyMjZFOTZDNzY1MzU1RDBFNDNEMTVGQkU3QzUyNjhFMTM2RjhEQTVFOThCODQ4RkIyNjZBQ0VBOTkzRTVFNjM0N0FGNDBEQjRFMUUxNTE3M0U2OTY0RTYyMEU3QTZFNEMxODNFQzAzQ0UzNTY2NTNBRDk2QTkwNTgxCis4MDhECiszRTQwMkNENTc3OEJFRjgzMTVCNjE1QjM0NUM4MUU2QjE4NzRCMUJCMUMxNzc1MTVFNjc1NzIwQjAyNTU4MkUwNTRDQjcwM0Q0M0U1QURERDk2RTMyRkI5RkJBRjk3Cis3RTI4RTJERgorN0I1RTUwMjBCN0RBQ0YxRkY5QTM4MzQ3REQxMworMzc2ODExMjYxNDhERjhFMENFNTJEOUVBNTc2MDhDRTkzREQ2OUExMjcyMDEwOEY0NTkzNUUzMkU1QTMzQTQ5MjNDODY0MzA5MUEyMUU1NjkwMTc3MjE5QUYwREI1MTU1Qjk3QTFENzgwMzJGMTdDRjkzODcxNEE3REU0OTNFN0ExNDkzMTgyQkE1RkY0OEY2NDQ3NTZDQjNDQjhFMjAwN0E4QTMwRjg3NTMxRDcxNDc2MzcyQTM5MkVCOENCMERBMkY3MjdCRTI4NUJBMDU4Q0M2MjFCOEI4QUEKK0FENTE3OTIyCitDRUJEOEI4NDBCOEI3ODEzODcyREE0NzlFNAorMjc5NDY1QTY2NEU2MzNBRTE0NTJCQ0U3ODQ1RUVEOUZBMDVEM0YwRThCMTdFMkI0NDhCMTlGRjVCOUMyNkY1MUE2NDMyM0U5ODVGMzVDMUYwM0QzODQ4RDk5QjJBNzA2MUU5ODJBOUMwMjcxMDU2QUU0RkUwNzYwQTcyMjkzODUyRkQ0RkFBODkyRTM4NjE4NUM5RjFBQjk5NzBBMEUwOAorRkJCNTIwMjAKK0JGNEJDMzNBNzdFNzAyMTE0Qjc3QTUzNjJBCisyQThBQTNDQUNEQTFGRjFFODExQjU1OEMyRkJBQ0RBOEY5RjE3QTkyOTkyQTlGOEVGOTI4M0Y1RDA4MjE4RUM4QkYwQjM4NDY1Njc5NjRBOEQyRDJBM0JDMjI5NDlCMzM5QTBBRjkwNTAzOTAyODUyOTczQ0U1NzQ2RkY4Mzc5OEI2REZFRTMyMjAxNDZBQUY4OTA1NDZDNTg3MUMxMDA2Qjk1NDc5OTkyNDdERjc4MUEwOUNGRDJDRDc3RDQwMjRCNjg2MEYKK0NCQjc4NTQxCis4MDU5QTc4Q0NGMTFGNjY1Njk5RkFBRDVEMzI0CitCQ0M2Rjc5MEZCMURCMThDOTA0NDQ5NENBRUE4QjM4M0M5RTJEMjJDQjU3OEFBRUQxMjAwMzAyRURGOTNERjM1MEE0NkRFMzdCRUMyQ0U2QjVBMUEyMjBFNUYxNEY5OTU3RjRCMkI4OThDQ0E2NjZBNDcyQURBRjk3ODE5MEZBREZFNjY5NkY5QUY0QzczRDk1MUZEMjY3QjUwRTcyMEE0NTBGQzdFRDgyRTAzNzBEM0YyNUY0NzdGQzQ4MjhDNkE1RTVBRjI1MzYyOERGOEIxQzk5Q0YwRTQ2NDlFRDc0MzhGNkUzNkFBNUZDMUE3NzBEQzY4OEQxQzkwQjAKKzdCNjEKKzY4RjJEOTgzMEVFM0FEMkVGQzNGQTc0QkY1QTQxQUI1MENFMzhFRkMyRDA4MzJFRUVENDJCNjc5M0JDRjY3OEFEQUI4MTMKKzQ1NjM4RjAyCitGQzdEQTcxMkFGRDk3NTBBMzU5OEE4QTM3QgorRjFGOUM1QzBFMTBERTlDQ0MzRTI1MkVGQTExQzJEMUU4Mzk1MkE1RTE0RjA3Q0JDNjk1QkZCMzdDNEY2RDNBQUExMjQyRkM0NDJBNUM3NDkxMzE1RTNGODU0RkZEMzk0MDREREY0OTQ5N0Q5Cis5OTVEODE5MQorOTMxNzQyNDYwN0FENDQyMzA4NjYxOERDOUI0MgorRTMyNTVEOUZDRkFFOTg1RERBN0U3RjdDRDgxRkVBQTdGQkIxNUU2RkNCNzRCMDJDODQyNEJDNTNCRTFBNEI1NDgyREVFNjVBN0E0NDM2QUJCMEM4NjI2MDZCQ0FCNUE0QTNENkYxMURCMjg3NkM0OUY1RDY4RTNGNzFDQUZERTM5QUU1REYzMkE1ODQ1Njk3NTE4RERFMzgwODQ2MkE0MDhENjc1MTU4MTBGRkNCRTA0RjVFRDU4NEFBMTQ3MUJBQTM2QUZCQkU4ODU4OUExRTBBQUI0MjUyNDg5QTYwRDdCREQ3ODE1QzJDMDVDRDVEQkM4Q0M3ODVGNDgzCis3REJDCitBNDM1M0JBNUI3MEY5QkY1QjBFNjFBM0VFODJCRTE1NzI4OUJDOENFM0JBRTU0QkNCRjJEQUFERTgxMjRBNQorQTNBMUQxOTQKK0QyMDMwMzI4QUMxRjZGMjREODUzODdFQzE5N0YKKzA3QzREMTkxRTE0MTBGNkVBM0QzOTRDOEEyOUE2NkJBODNCQkYwQkZCRTUyRjJENjUyMTJENDU3ODJBQ0UyMURGREJFRjJEOEZCNjY3OTZERUUxMzU4OUJFMzI3NDk0MDI3NTYwQzUyNjdDMkYzRTVFMURDRkQ2RTc4NEJENkY4MUI3RDJBNTEwMDhFNzc0MTdENTFDNTU5RTdCRDI3MjIzQkUxODdDMkIwNjM3NjQyMjc0RjYxOEY3RUU5QzE0MjA5QzZGNTU1NjFDQkQ0RThBN0Q0NUQ2RgorOUY1NEFFMkYKKzREQUM0MTBEMEY4NDMzMEYwNEE3RUUxODY1Cis2QUFDM0Q3MzE4RjcwMkQzNTdEOUM2MTk0Q0FERDcxM0IyNTdFNTc1Q0ZCQ0Y3Q0YwNzkwQTg2RTEzQzA2NzMwODQ0RjYyNDI1N0VBNzEwQjk1NjgzOUEwMzZFNEUzRDNGQUM5ODkwNkQ3MUJGQTBDMTVFQUU5QkIzOEQzOURBQTNCNDU0MDFDNjI2NQorRDQyRDE4REIKK0FGMTRCMENBMUM1QzFCMENDQ0MzMzZBNkU0QUIKKzU2N0U0MUZFMzFBNUZDNjY4MTU1OTM0QUZCQkFBNEE0MkZGQjQwNjY1QUVDOEQxRkY1OEI4NEIxMEQ2MDU2NEYwRDVGRUJENUE2RjkxNjQ3RjVFMjYzQUFGMjZDMkVFNzUxOUE4NTgyMUU0REMyMkM2ODMyQUEyOEI3RkI4MzA3QTMyRTA2NTI1QzMxQjlGRUI3NUJDNDYwOUU1RjVDOTZDN0M4MEJGMkNBODUzQkU3NUEzMzI2QjM5RjAwNEMwRUM2Qjc1OTRBNDI2MTkzMUMxODEwQTNEOTNDMUFFRkYyQkJBNTFFM0NDNzkwQzUKK0RBNTM0OUEzCitFN0IxRkRBOUVEQ0MyNzU3MkQ4RjNDRDY2QgorNkI2MjQ4NEQ3MjhERTJENENFQ0U1QjY0QTc2NDc0NUYzODk0REFENzg5QzU3Nzc5OTQ3RDQ5Qjk1MjdERkMyMUMxMUJERERGRjkwOUIxQjM1MEQ1MkQ1MTE2NTZGNEZGQjA4NDhDRkZBMUNBODZFRDFDMTQ2NzFFODY0MDA3ODE3Qjc2ODhFOTY4NUEzOUEwMjc4MkM5QUY2OEVEMzI0QUE4QjI0NTVGRTE1OUI5CiswNjMyOEIxMAorNUY3NzMxRTMyQjA2RjJDNzVFMDRFNzdGQzVGNAorODBDOEYzMDMyQjQxNTlGRDNGQjQwRUFBN0I1MTMzRTZGOUMzRTUwMUI2NTFDODg3NEY5NTJFMDY1QkY5Q0ExNDkzNjdBQkI1RDIyQzhCMDhFMTM0NzFEQkYxOERBQzBCM0VFOTQyQzYwRUFCMjUzNkZGOUY4QTE3QzI2RjQwOTY0NjdCMUE3MDgzMjI3OTc3NDVEMjExMzEwMEFFNEI2NEQyNzEwNThGMjM4MDM2NEU0OTIyQTI0QzBBQUU4RTg4MTFGNkIyOUVCQkVCQTQzREM4RTM1NjFCMDE2QTNBQjVERDQ0REYxNTczREMxRjg1RkJENDI1OEEKK0I1MTY4NjgwCisyRTY4RkIxMTlCQ0REQUM2RERBQkZEREFFNAorNDlGRTY4MThGODU5NkQxNTVDMkNDQzQ2N0FCMzcyRTk2NjZCMUFGNEVEN0Q4QjQyRUUyOEQ1QjQ5NDQ1QTRGMDAxRDZFQTIyQkNCQzk5RTAwNkIxMDEzMDJGMDFBMUZDMjNGQUFEQjE2M0Y2Njc5QzE4MDFEOEUxODQxNDM5N0VFMjZGQjVGMzM4Cis3QzIzNEQyMworMTQzODgwRjc5MUJDREI3OTkxMjcwOENCNUEKKzU1RjRFRDkxNjhFMERENzdBOTVBMzAwNzQyQjY3NjhGOTFENUJFMEI4MjdDQTkyM0ExNjk5NjAxM0QwOERCQzY0ODNGQzVGMUI2RjY4NjIzQTc0MzZGRTVCQzIyNEJCM0UxNzQwMTYxN0YzQzkzQzgxRTI0MEUzQUQ2QjU3RTA2NTBFM0NEQkIyQTBGMkUyNkVENzg3RDRBNzBBRUM1OERBQTI4QzRGMTcwOEEzNTQzQzZBMjY2MEVCQ0EwODQ3OUQ2QzEKK0IyRTFGREZCCitBRDFCNDBDMTY2MjUzQkI4QzY1NUJFNUQxRgorOTFGRkJBNEE1RDRENzJGRUI4NzU3MUE5NEExMzg1REMyMkExQjE2OEIxMDU2ODYyRjNCRkY2Qjk0OUEzMUIyQTY1MUU3OUYxNUVCMkIzMUFFODYxRkVCNTY1NDk4MEM4NkVCMEExNjJFOURDNkJCOTkwRDQ0Q0FCMEM1OENBREE2NUVFNjRCODlGQTkwOTFGQkJFMThBQTU3MUM5QTJBQUFEQzE5NUZCOEQ4RjdDMDY4RQorOUJBMzRENDUKK0ZEOTkyMzg2MDc1RUVFNzhGRjIzRTAzNUQ0NDYKKzhBRTVDNzMwNEZEMDM3MzUzOEU1MjczOUYwRUFBRkEyQzYzODQxOUNERTFFRDgxQzI3RDYyMjJEQUM1REJBRDU2RDNDNDBBQTMxNTRDQUY3M0Y1NDU4NzdENUFGRkU3MjRCNDY2OTYyMjdEN0Y5M0U3QUY5ODA4OEVBQUZGMjkwRTFFNzAxNDZDNjg1NDg1MkNEODc5OUU4N0QzRTE2QUUxOTdDREQ1N0EzMjM0RDdGMzhDREEyRTk4N0E5MTY4OTgyMkZEQTEwNEU5MjIzQjFERDdCMjVBRjE0NUZFODhGNURGOUE3RDNDOEUzNjNGRDQ0QzVDQThDNjI1NworMERBRgorQ0JCNjg3QzE2RTMxQkZFMDgzM0EzQkJGRTk2RgorMDE2NEJGODAKKzkwODAyRkQwREYyRUZBNTNDQzE5M0MxNDRFQzAKK0JGQTg1Mjk3RjczOUVEOEQ1QjMyMzBDODZDMzUwMkNDRkM0MjE1MkNBMzYxMkExRDg3Mjg4MjM4MjYxMkJENkJGMjA1QTY5RUYwMzY0RjA2QTgwNTdCQUM1QkNGMzFBNkI4NDYwOTQ0NEZCNjlGODczNTY4MDREOTE3MUI3NzAzMDI4OTQxRjAxQjVBQTZDQUVGOTFEOEIxQzAxMkIwQTQ2ODQwQ0RCQUNGNEZDRTY1QkMxM0M0N0ZCODAxOERCNDA1QTBGNzA3RUUyQjU1MTg0RjdCNjQxMTJDRUYzRjk2NTFDNDE1RThDRDVGNzFERDEyMDcwNzcwMDBDQgorMzQ5QgorRjFDNkYzRDU5MTk5QzJFMEYwNjRFNDYyQUZFRDkyQjRGMEZCQzk5QzI2QUVGQjBCRDkKK0NFQkU1N0Y2CiswODczMUNEMzYzREFEQTc5NTIyOTVCRDVBQTFBCis1N0RDMEU5NTE0MjY0M0EzQjI2MEMxOUQ1Rjc4M0MzOUI4RTBBQ0FFRUNGQTEyQjc5Q0VBQjUwM0Y3MTcwRjlGNzgxQ0JBOEZBN0U1QUQ4QjRFMUE5MTg2NDIxQzRGQkZBMjkwQUUxMjlCOUZGODg3RDQ1MDEwRkVFOTA5NTgwMzE0QTU3M0IwRjJCRkIxREY0Q0IzQTA0RUZCMjY0REZBOUE4MjJFQUE4NTFCRUYzREE1MUYzMkVFQkU1RjBGMzQ4RjA4REE2NkIzNTE0MTIzN0I2MEZDQUQ4OEYyODI1ODdCN0Y2MzE2M0U0MzhCQzVCNEFFNkE2MDhGQjAKKzk3ODYKKzE4RjZDMUU1CiszNDhCNzA2NjAwMkU4QTdGOEY3NDIyODZCMworNjIwREM5NEFDRDlCQTM4Q0QwOEEwNzlBNEU2M0Q5REJFMTY1MDE1ODc0NjJFRDIxQUFBNjY4MTQxQkUzNkQyMkRCQzIwRkM5RURCRDNGQkFGQjM1MkNGNzRFNkYwMjc1NzVEMzBENEE0ODZFQTZGMUYwRkU2OTM1RDE3RUM4Cis4MTBFQTlCQworMjFENDZCMDAyQzE3NDdENTQ4MTc3RUEwRUIKK0MxRUFERjk2NzAwRDJERTI1NDZERDA4NDk3NEY4MTFFQTM0NzA4QjQ3ODlCCitFNzhDNjlDQworNDZGMkNGNDE2OUU5NjI1MjJFMDNFMDJGOUI5QgorODc3NDIzN0U3MUM5MUE4RgorRUYyRkJEMTkKKzM4NEEzMkQxRTE4RkM3NzI5MTdEQTRFNzM5RDdFN0Q2MEM1MjZBRUM3RDNFOURFMDQ5M0IxOUM0Nzc3MTlBNjQ5NUY0Cis3MTlGMkRCNDQxRDU3OEM2NjczMjE3MDlBQzYzNzczRTYwN0E0M0UzOURCQTJDODUwMjQwQjNBMTJENjVEQjVFMDc1RThCMEQ4MDlCCitGREI5RkZDMzAxQzlCMDE2N0U1MTUyMDdCRDJENDAyNzE1NTUxODQwRkFGMTk5NUUyRUUzMjcKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDUgcHV0CitkdXAgMyAvQzAwNDcgcHV0CitkdXAgNCAvQzAwNTggcHV0CitkdXAgNSAvQzAwNjUgcHV0CitkdXAgNiAvQzAwNjggcHV0CitkdXAgNyAvQzAwNjkgcHV0CitkdXAgOCAvQzAwNzAgcHV0CitkdXAgOSAvQzAwNzMgcHV0CitkdXAgMTAgL0MwMDc3IHB1dAorZHVwIDExIC9DMDA3OCBwdXQKK2R1cCAxMiAvQzAwNzkgcHV0CitkdXAgMTMgL0MwMDgwIHB1dAorZHVwIDE0IC9DMDA4MyBwdXQKK2R1cCAxNSAvQzAwODQgcHV0CitkdXAgMTYgL0MwMDg1IHB1dAorZHVwIDE3IC9DMDA5NyBwdXQKK2R1cCAxOCAvQzAwOTkgcHV0CitkdXAgMTkgL0MwMTAxIHB1dAorZHVwIDIwIC9DMDEwMiBwdXQKK2R1cCAyMSAvQzAxMDMgcHV0CitkdXAgMjIgL0MwMTA0IHB1dAorZHVwIDIzIC9DMDEwNSBwdXQKK2R1cCAyNCAvQzAxMDcgcHV0CitkdXAgMjUgL0MwMTA4IHB1dAorZHVwIDI2IC9DMDEwOSBwdXQKK2R1cCAyNyAvQzAxMTAgcHV0CitkdXAgMjggL0MwMTExIHB1dAorZHVwIDI5IC9DMDExMiBwdXQKK2R1cCAzMCAvQzAxMTQgcHV0CitkdXAgMzEgL0MwMTE1IHB1dAorZHVwIDMyIC9DMDExNiBwdXQKK2R1cCAzMyAvQzAxMTkgcHV0CitkdXAgMzQgL0MwMTIwIHB1dAorZHVwIDM1IC9DMDEyMSBwdXQKK2R1cCAzNiAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE4IC0yMDkgOTE5IDY5NF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI3NEE0QTk4NzZCQzQ2NDJERTVERUNGOTQzQzA2NjMwQkExMAorNDJERUM4NTE0QUNEM0YwRTU3NjI3QUJFCis3NTYzOTM2OUFBQkU1MkUyNTcKKzNFMUY5N0VECis4REUyRjIzNzdDNDMzQzZDOEQ4QTg1MUUxQgorMjEwQzNBQUJBNjBEMEVFRDk3QTgwOTc1QkY2NURBRERGQjhGNEEyQTIzODc1QQorQUEyMjA5QTAKKzM4NTVDOTk3MUNFRTM0MzU0NERERUZCNjA5CisyQTU0RDIxMzgwQzY5NTVBREY4M0YyMzE4MERDNzI2Qzk0ODFFQjY1RTYyOTUzQjUyRUQ2CisyOTc0RDA0NAorQzE0QjI3RTM0NDk4OTk5MDFCRTNFRDNCMDYKKzBFQTZFRUE1MDQwMjRERTI1MENCRjFCMDA3QkU1RjlDMzhBRTY5OUE3MTNGRTM1Qjk5MkY4MDAxRThFRjEzRTJFRUZDN0M5Qjg1NDEwNTcxNUVCNzhFNjZCODAyM0JFMThFQThGNEIyQjdCQQorRUE5ODUxQjMKKzM3QjIyNzRDNUNGQkUyMDIxMjA2QzVCODMwNTEKK0JDNDYwNzZGNzQwNjk2NTVDQ0I3Q0Y4MjQwQUI3Q0IzMUE2ODg3NDhGNDgyNzExRUY2MUM3MkQ1NDM2MjYxMDcxRkJBMzQ5NEVCNjM2MEExQkZBNzBDMUUxNjVBQUE4OTFGRDgyOTM5NjhGNEM5RTc2QzRCMzUyMjVGNjA1QTk4RUI0QzUzRUQxRURENUZDQjhBRTY4OEZCODNCQjE1NEE1QUI1Q0ZGRkI4NTI5QUNDQzM5QjRDMDk4MzBEQ0JBODA1QTNGMkJGMTFDNDQ2NTY4NTJBMEMKKzFBMTQwODNGCis1Q0Y0Njk1MzU4MzY0QzhEODJDRkVGRDFBRAorMEU1NkVFQjNBNjUyNTlEQkZGMzFCRUI4OUJBRDkwOUFGRjFEMzM5NDY0MDcwMkE0REZBNjBDN0IzMzRDQjYxNkQ4NzIyQkU5MTlEQ0MzNTlDRUUzRjM3RUIxNzkzMzYwQzdCNUY1MTQ5RTFENzkyMDk3NjUzMTBEQkIzRkEwRUNDMkZCMzA1RDE4RkZDODIxRjkxQzAyMDI3QTJFQTFDRDcwQkNBRkQxOTAzOEFECitBRDJBMkFBMworQzRGMkZCOThEMjdDRkFGNzdFNkQ2RjdBNzREOQorODVCRUM1MzY0MkQ5RTk3NENFQzBBN0Q5Mzc0M0UwQ0QwN0Q5NjYyMDVENEYzQUIzODdGRUZCNjgzNzlFNEVBRTkzQTAzMDBERDcwMUE1RjE2MkQ3NzlENEUyQzNBNDJBNDYxMkVFOTcwMEM3OUJBNjQxQTM5MkEzRDczNTE4OEQzQ0NFQzY0NUFBMjlBODRCQjg0NDU5NzQ0QTBERkI1MjNCQzI0NEM0QjlBRTk1MDU1NUM5OUI0RDc5NTE0QkI5QUFBOTQzQUFBRDcyQkQ2MjRDRTZENUQxNzk4NworRDVCODRDOUUKK0MzNjUwOEQ5MENBQjBFN0Y4MDU1M0NFNDI1QzEKKzUwMkRDM0UxRTE3OTJFNjQ2MzU5MkM1ODVGMjg2MTFCQkY1OEE2ODQ5MUIyQzg4NEU3MTA5OTY1QTVCNzA2MkZCMDgwQTcxQTQ0Qzg5MzQ0MDYyMkVGQkNERDYzNDU0RjJDRjI5MjIxRTNFRkQxNTUyODg1NzdDQkI1QjUxMjI1MjEyNjlGMERCMjI5NEYwREY4N0U2REYzQUVDMkNCRkM1NEUzN0MyODIxOTMyQjcwNkUxREExNTMyNTM1NTFBNTVDQzA5RTRBCis4OUI4NzlDRQorNTY4RjVEQTk4RTU1MzU5MTM4QjIyMzBGQjYKKzg5RjBEQjVFOEJCOTY2MDMyOTU4MEU2NjgwRkU0MjJCMzkxRkYwQ0M4MjgwQjFCRkVFQ0NDODZBMjM5N0U3MUY3MDlDQkYyMzQxM0VBRDQyQ0QyNDcyOEZFMDkyODU3MkU4QzE3NkE0NzdGNUY0QUNFMkE0Mjk5ODcwRjYKK0MzMUQyNEFFCitCMkM5MUIwQTJBNUM4QTZFMUIxRkExM0U3MDdFCis4OENCQzVCMjYwMTQ2RDM5MDJFODFCNzFFQ0Y3OTM5NzJERTM0Q0M2RDM2MjdEOUFDMkFEREU2NzlERTc2Njg3MDYyM0RFMTI4ODQxOTEyMEU5RTFBQzUzMjgzNTAzQTAxRkM0Qjk3MTA3QjkwQzZDMkQyMjc5QUMzRTExMDg5MEZBMzJBRTczQzFBQTA0QzFFRTM3MEM4QjRERTBGQTM4QUU4NkZBRjFENDQ0QjIwQzc4M0Q4MkMzODJDRkZFNUQzNjQ2MjVEMkY2OEI0RjBBRURBNjFENTYxMworRTdGQzMwRjUKKzlGRDhDMjExOUQ3MkZCRTY5MzZDQkQ1ODNECitBODI1OUUxMTkxRThBNjYzMjMzQjA4REQ0RDY2REJFNzQzOTIyOTk3MkExOURENUVDMjA2QTM0MkI2REIwMUYzREI3NEI0QjZCOTYwREE2NEU4NkZEQjVFQzY5ODdFQzVBRjRGNUYxQzNCQUNCQUJFRUZBMjAxNzdDOUJFNEJGMUFBMTM4RDI5NjQ4RTAxNzM1NUYwOUVDMjEwNkM3QzE3MDdCODVENkNGMjNCQUU0ODcyQjIzRjNGMUIwQTlBCisxMzc4QkYzRgorODQ4NEUwMzkxRTBBNDdBMEY1Q0FFQjhBMjFCMQorRDk1MjI0QjczNEI1RTdBNkYwQzRCNjJBM0JGQTM3RkM5NUM0N0Y0N0Q4NDU0ODQwQTM3MTU3RkRGMkZBN0NFNzRCNTQyOUY2OTgwRkM0QkZDQjRCREE0NTQ5MEIwRDE4MzNGOUFCMzQ4MkVFQzIxRTFDMUMyMDREQ0Q2MjM2MjgxOTlEOEUwRjMwQ0VFN0U4Mjg3RDA5MjkwMzc0Mzg3M0RCOTBCNEZCOTlGNjU4RUQ3QUJDNkQzNDMzNkU0RUVFRDg0OENCQkU2QUI0Mjk2RDI1CitBOEZBNDA0QworMDYwNDJCQ0NDRkVDNkVEN0YxMzdCNjdDMTYxOQorNURFOUQ1OUFBNkZFOTU0NEM5RTcyN0JBMDhDRjdGNDUxMjA3OEY5NzkxNjE1MDYyNzIxRjdDNzNBQzMzMTA1NEYzMzcwMUMzNTNFOTg2MkVGOEEzN0IxRkQ4ODhDNzlGQkYxQUUxRjIxNUYyRUJBMTlDNUM3Qjc2MzgxNkU0NjBFRTlCQ0RFRkVCMzNGN0Y3NzFENkE1OTlGQkQwNzNCODQ1RjIxOTlFQ0VGQ0RFMDc0OUQ5REVCNzVBRDAwMTY2OUQ5MDBDMzUKK0YxODQ1OThGCis5MTA0N0M1NUMzQjI5RjFGODU1NkM5MzA1OEI5CitDOTAzOTU5ODZCQzU3NzZERDAzNUUzRTJBRkZGOEY0MzY3Qjk2NDYyQTBFN0VBMjYyRDk2MTQ3NDlDRjg1QzgxQTZGNUVCNTk4NkUzQTJEMTA4RDhEQ0Q3MjdDQjZGMDIxNjFFQjgxMzc4RTMwNERFQUM0RTRERDZBNkM4MDU1Mjk0QzEyQThEMDExRTNDQjE1OEI3NENCNzZGNTI1RkYwNkVCNkU2Rjg2QTY4MEIzNzNGODY4OEUwQTdFOTdBM0UzRkY0Qzc1NDVGNjAyQTYxODM5OTA3RTVDNjZFMDE1Q0FDQTQ2QUE1ODc1QzgxOTBFRDhEQUI0RjdFRUMKK0ZENTIKKzk2Rjc4RDAyCitGQTdGN0JBRDM2NDlDQzY5NzI1MjU2REM5QworODgyNjRCQTk1RTZEMENDQTE2QkIwQTMxREE2N0YyNDI5NzYzNzU2RDAzQzI5M0M5RjE4OUNFOTE2RTcwMEMwMjFERTIwMzg0OTg2QTY1MzM2RTY0NENDNkUwODczMTA5RkIwQTU4OTE2NDc1MTIyRDQ2QTA2OEY5MjgyNzJCNjEwRjNDQ0ZEMTU5RDVCODFERjkKKzdFOTFCMEE5CiswMjQxNjg5RTlGQjZFRTdFOEVGQzgzNzFEM0M0CitGRUE1QUJBREZBQTg0MzBCMDVDQzY3NURFMTM1NDYxNUMyQkI1REE0QTJDMkQ3RkRFMjNDNTE2OTIxMUM5OURCRjFCMkFBMzdFQTY3MjU2QTQ2RjMzMzdGNjRBMURGNzQyMzIxMTkwOUQyNjkzRTIwQjUwRDFBM0E4MTc1QzIzQzk4NEMwRTZFNTU2NURDRUZGNTBFQzk3QTI3MkU1NjVGM0U1NjUyRTYwOUEwRTFENDJBMTczMDJBNjE0QTMxMDQ4MEFEQTI3MzUwOUYwQgorREY2Q0YwMjkKK0NDMEY1MDE0RjM1MzE5Njg4ODhGM0VFMjFEOUIKK0QyNEI0OEU0NzNGMzZCNThFNTdFQTBFREJGNkYwMTBBREUxMjA0RjYzMTY0OUI5QjI5QTlCNjc1QUY1NjlCRDNBNjA2MjQ5MjExQzJGNDBBMTEyNDcxRTZDNjhDQjM3NkVFRkQ2M0FCMzQ1OEUyNjBFQ0JCM0EwMUYzN0YyQkQxRkQwRDVGODA5M0IzNUU5Njc5NDk4NjBGRkNCRTI5NUE1RDI3Nzk5M0FCNDdDOEQ4NDNGREQ5QjA4MEVGQTBBOTUzOUI4QUY1RUJDOEFDMTAyOTczRjRDMDJFNTI1NjM5NDRBMEE5QjMzNURFNjBEMEJDQ0I1MTFBQ0NDRgorREJCRgorOEExM0I1QTIKKzI1MUNCRUQ4CitBMkVEMkMwNjgxMTYzNUEyREY5NjRFMEFERQorMzUyRTVDN0UyMTBEQzJERTRFRDU0Njg4MDg5ODcwQzQzNUMwM0U2MUJCMkZCMDAyRDM5QjExN0RFOTRGNzNEN0EwNTdCNEI2NTQ3MDJDRDU0MDk5QTI0MTc3NjE1NENDNkQyRTg1OTU5QkNCMjc4ODk0RDBCNTk2NTI5RDY4MjBEMTVGNTczQjNBQjI1QzUzOEEzOUE5QTQyMzNFNDkyNEY3NUEKK0Y0RjU4RjM0CisyMzJEQUVFRkVFRkI5QkI1OTgzMDZCNDRBNworQkREMzVGNjNERUIxQjEyMDk5REVCQjlGREYwOEFBOTU0QTZGRTM0RUVDMjNEREY0NTIzQUM2MjQyQTg1RDNFQTM4NzJBN0E5MjNGRjhGN0Y5MzE1NjU1RUFGMzExQ0E0ODQ3RUNGNERBQTBBQjQ2QjA1RjA3Q0IyNDcwOEM4OTM4MjEzQ0MyRTcxRUYxMjE4QzY5NzlCNUNCQjRFQ0ZDRTc0QjFDRjQ3NDg2NEVFNDA1RDc1QTYyRQorQTY3MjQyNTgKKzIyMDYyNzcwOEJFMDY2MjkxNENBNDRBNzM5CisyRDhFNzkxRDc0QkYyMDNDODE4QzI4RUQ1RTcwQjREOTg5RTI0MjBFRjlFQzJDMzdGODUwRkVGQjI3N0IzRDhGQTNGNTRGMjE0QURCOUU3MDhBREY5M0U4QTY3OEQ3RjQxM0UzMEI1QjFGNjI1MDZCRUZCRDNCQTU3MjVFNzUyQkFBQ0E1NEZEMzkyMkNGM0Y3RDIwN0I2OTM1QjdCQ0YyOTFDQjc0MzIyREE1OUU5NjY3MDU5RUZGOTcKKzlERjUzMTcxCiszODQ3M0NFOTg4OUM1QjI2QjdCNEM1RTBBMTI5Cis1REZBNzVDQzg3MkRDNkRGNDVDOTYwMzY5MzdEM0NFMkI5QTdEMjVDQjQ3MDZGQkZCMjU3MUI5NDczNjQ5NjBEODBDNUZDRjQxNzU5MDU3MEM2MEEwNEIyMDVEM0QzNDFGQTJFQzc5NUUwODJCNDYxRTk4OTc2MDAxRjlGMTk2Q0RDMjE1NTM1MDkyRDFGQjBGODFEQTgwMjlDQjFEMTA5QTExMTBBQkJEOTcwREU5RUM3NjlDODI3OUNGRUMwRUM0NTlEMkRGNTA0MDVGNUQwMUY3NzVDNDFGMTlDODBDNkFFQjA0RkRFODQ1RjIzMDk4RUU0QzIzNURGNDAKKzlCMTYKKzY0Qjg5REYzQjEzRTBENUM0OTM1QTVGMDgwNDg0NjIwN0ZCNDkzQzJGN0M2NEQ3OUVCMkFGOEI0QkFCOTU5RTIwNDIwNTcxOUJECitGQTY2RDA0QgorOTBFOTQwODcxODdENjc5NERCQjk2MkI5RjExMQorRTY2M0U3NTMyMjZDQTgyMjFDMUE5NjlGOTMzNjExOThGODI2QzYxN0UxMzg1N0U5NkQ3M0Q3MTYzQUQ5RkEzRTI1MUEwRTJCMDExRDc1RDVEMkU1QjY2MzA4Njk2N0ZDOUMyQTE3QzVENDdFODAyNzM0Q0I1Q0FBNDRBM0Y0RUFBNDlERDY1NERGOTc0MkI2Qzg3NzBGM0Q5M0VGNjUyQTVBQkMwM0M5MUFENzY4OURCMTEwOThERjY2M0M5NDlDOEREOTg1RDMxNDA3NUUzOAorNUVFOEYwRjMKKzRDMUI4QUYxNjk2QjhDREMzMkY4ODBBNkIyCisxREUzOENGRjZGNTYxMUFDRTEwOTMxMTAwNjNENkE3Mzc3RTE1MTcxMUI0OEIwNEM0NTY3MjVFM0VEQjAxNUFCNTdBNDI1NThEODg0MkZGNjI1NEY5NjlCRTEyQzM2RUJEODM4MDE1MjE1MTA0OTk5OUNGOUFDQTYwQTQ5Qjk0OTEwRDlEN0IwMjQwMUI4MzdFNzZFMjk0QUM1MUEKK0E2NjEzQURECitDMUNEOUU1OUJCNUFFMUM3MjIzNzdGMDFCMjgzCis5NzFFODE4OTZEREU4NDlEREFERDA1OTE4NDk0NUExNDEzRjAwQzk5QkU2QUJCOEU3N0QwNzJCQURCNEFBNEI3QTZDMzZEOTRCQjRBMTc4RkM4NjE2QzI3NEYyNjEwQTBGQTM1M0U1MzI0NkU5NDcxNjM2ODEyMUNCQkM2QTQ0QTg1QkQxQUZCQzY4ODM3OUI4NkZFN0E2OEExNDMyQzg1REU3NTY5Qzg0MjlDMUQ0OTVFQzY0RUYzQzM3QUZBREZCNDRBRTUxNkRCODc1RDgxMzI1NjJEQjlDRkVBMEQyQ0Q5Njc2NjZGNzdGNzg3MDQ1RTYzMzI0QzY4NjgKKzA4OUIKKzU3MzAKKzM4NDBGQ0YwCitEQTYxMTkwMkM0QjFEQTEzRjE3Q0M3MUZDQgorNTA4MUFGM0RGQzAxQzM0NENBMDA4N0IwMjdDMUI2MkE5MjdBRUZCRTQ2NUU1MzZDODU5MzFGNjY4MDg0OUUwMjVGQTQwNkVGQkFDM0U5NzI4RkI5MkZDMjY4NEJDQjVFMkZFNEM4MzYKK0NBOTIxQjQ0CiswMUZGQURCQTUwQThBQUZGODdGRDY1QUJDREFBCiszMDgyNThGQzcwQUYwNzlEODE3NDQ4ODcxOEVGQTU1N0FGNkJBQzM1MThCNjZDMDUyNUJEOEJERTY0RDZDQjE3Mzg2N0QyRThCNUZCMTQzNkU2QkMwM0ExMTgzMDI4MTYyRDA3NDAyQzdBNDFDRkUxNTYwNjc3REU0MDlBNTQ4NTNCOEJBMkZBNDJCRDlGQTA0QzE0NEJERTdEQkEzRDU1QjdGRUNBQ0QwRTQ5RjY0NEY1NzQ3RTNGOEZGMURGNkRBRkVDNTk2QjIyN0NDQzM3RkQ4QzcwODgyRjUzMTM5OERGMkYxREFFREQ1NDM5QTQxN0YwNkI5RTMwMkYKK0M3MjQKK0MxRTcyMkVGNzlCQUQyOTdCNzU0MkMzODM4NjYyNjRBM0JCNjIzNTYwOEI5RDRCOEIwRjBGRDM1CitCOTcyMjQ0NworNjQyRjNFMUZCMTU3NjE1QjcyNTk4NTY4NTczNQorRjBCMEE0N0JEODA4Mzk0RTY0OTRFOUYzQTA2RDU2QjNBM0RGQzlCREJDQzgyQUYwQkJGODdBNTJDODg2REMyNzhCNzQ5QkM3M0FCOUM4N0JDRjAyMDI2RjMxOTU2Njc4NkZBQzQwMkMzRTNCQjk5RUZCQUI2OUM4NTQyQ0I0OTI5MDlGQTY4M0U5NDgxRjFFQzk5QTdFOTREOEFFQkQ1QTdGNUY2OTcwNkRBNjM0M0JDNUJFNDZFODVEQzA5NTVDOUIwMjJDMzVBRkFDMTQKKzc1Nzk4RkJGCiswNjUwMjYyNDFCNDNDMzI4QzJEOTg5OUEzMQorMDdEQTQ4NjFBQzk5Qzc3NzRCODBBNEFDQkJGMzBBM0ZDRTAyQUVFODA1QjM5NkQ1QUI3RDJBNTZBQkYxQTgyNjA4NjdDMDY2MTQxRDI0RUM5NzhFOTRDQjcxNTVGNDIzOUI4MjMxOUJCQTExOUUzMjZBRDVCRjg2QTg4RDJDNzMzQzM3NUY3REU0NzAKK0Y1QjM0NEMwCitGMTlFOUQ1M0E5M0M4NEM4NkQwREVFQjQyNUQzCis3NjAyOTZFRUJEMkE2NzdDMkREMDFCRjUxREQ0MkFEOUI0N0QzODdBMjJBRUJCOEI5QkZDMkVFQTY5QkJCQzhFMjE2MTREMkVBQUQ5N0NDRjhCOEM1NkEzRTc5NEFBRjlDNEFBNTY5RUVBQTEwMTVEQUE1RDRBNjMwODkzOTM4N0NFQzIxNzZEOUVEMDE0NjFBQjE4QUMwRkRENzUxRkRCMzEwRDlFNjhFRjM2M0ZDREJDQzI1QTE4OEI5NEQ2NzQ5OUUzMkQ3N0NBREIwRUQxQjgwMEZCMjYyOTE4OURFOUE4CitCREZEM0U2RQorMTkzMjBFQzUzMkZBMDM3RTBCODE5MkYzNzQKKzYzREYxNUU3NTA4NTVCNUJGMDA4MEU2NEQ5RTIyOEFGMzNCOTM5M0UyRTY4QzE2QzE0Rjg5QjhBOTRGMzI2OEQ0QjA5NUVFRjkwN0UxN0UzQ0UwNTUxMTdGOUY0NDdDRDgyMTRCM0FEQzJCN0Q4Rjk4OTA5Nzk0QzJBQjY4NzVGQzQwQjYwQTUyMEUxNDFDNTIwNzVGQkMzNzFCMUE3QjQ1OTczNDgwNTQ4ODg0RkQzNTIKKzNFOTlCMjcwCitGQjc5RUFCMDVEMDZCOEY2NTE2MTA3NzUzM0VECis5OEEwNzAxODY2NjlENzJFMUZENjM3NTA4NUU5OUNBOTM4RjlGRDc0MjQxMEYwNDkzOTU0MEQ1MkQ1Q0NDQUE5RjQ2ODBGQTYzQkRDOUY1OUMzQTFEQUQyMjkxQUQ1MDk1MEYzNkFCNjgxQzBEQTI1OTkyMzlDMjQxOTExMEUyRkY4NURGQzZCNUQwRTA4NzAyRDNDQjZBMTUxQTVGRkEyNjFGN0U4NkRDREY3Mjc1NTM1NzJGRjU4M0NGNEUwQ0E5M0EyMUQxNzcwQUEzODI0QzlBMjg1Q0E0RDRBNTc0Q0QwMTlBODFGMUIwQUVGNTU4MQorRjcyMDI2OUYKK0U2MjU4QzkwOUE2NEI0MzlFRUY3RjU3QkM1Cis4NDMyQzEyRDE4NzNBNDI0MTMwQkZERTQzQzI0MDc5MEY0OTdCOERFRTRBOTcwRDJEQ0NDMDg5QTM4MUZGMkRCRjAwNjAxQThDRDdFREQ4NDkxRUQzNzdCODQ3NUVERkIxODUwOUNFRTcyN0I4ODk3RjE1NDQ2QkRFREMyMjQzMDNGMjVFRTI1CisxOTE5NjQxNworM0UwRTBGNkQ5NjQyNjE0NEMzOUE0NEVFRUM2NAorMzlEN0FEMDg2MEY5Q0Q2QzQ4OEIxRjMyQzUwRUQyOTYyQkQ3MjcxOTczNzBGQ0E5QzhCMEY4ODI3QkQ0MzVEQkE2NzIwQTVCNjUyRkEyRTMxRUVGNTAzNzU4ODM2MDY5QzM5REVENEUyRTcwMjlGOTk4QTZFNjBDQjFENEI2Q0U3RTFFMzY1NEIzQTVEMkQ3RjlCOTE1QTk0MDhERUM5RkY0RjgwQjUyQ0ZENEIxM0I5NEM3RDcxMDVFODNERDEyOTY2NTc2NzM3Q0Q2N0ZDNUFGNzhDNUVGMDIyOUU0MTkwQTMyNkIyRUI1NTUzOEE3MDRBNkEwNjBFNDE4Cis2M0M5CiszQkUxOTNCQzkwODdCREVGOUE1NDEyCiswQkE5MDY3NworRUE1NjU2NjZBNUVCMkZEMEE3MUY4NDMwRjdDNworNTYzRTMwNkIxRjVBNkZFNUY4NzlCOUYwQTlBMDc2QTQxODE1QjU1RjgyREQzNTg5NDkyNkIyRjA5MTM2NTZCQTMwMTQ5OTM1NEJDMTlDRDQwNjVCM0U4QjA4MDk3ODk0Q0MzMTI5REY0QTJDNEUyQzRFQjQ2M0JCNDU1M0M1QjM5OEE2RkE4MjhERjY5NjUzRDZDOUExOEZEMkJFN0NCOTk4RUUxMTcxMjFGOUQ3QjhFQjlGNEM4OUQ1MUFENkVFRjE4MDUzOTg4RjdGODZCRkREREZFRjNENEVEMERCRjU5QjM3RTNBNTVGREYwNzBEOTlFQzRGMEUyQjJCCis2NjA4Cis1OTlFNjZERTZBOTJFMzM3QjYxNjc3RThDMEJBQkI5NUU3MkQ3MEM0NDA3MQorRDNDOERBNkIKK0QzNDZCNEMxOUQ2NDU5NUQwQjg0NDg2MEE0NUYKK0Y0RjI4NjgzREIzQTE4MzY4NkU3M0IxRDI5RDQ1RUQ3M0FCMUZDM0Q3MEZBQjI5NDBGMzIyNjAyQjVGNkI2ODMzN0FFRDk3MTZFQkNDRkJBN0VFQTIwN0IyODFDMTM4RkRGMTNCOTU2Mjc2MkI2OUJGQ0M0MzVGNkYwOEVFN0IyOTBBRUZBQUI4MTcwNzBCRUNFQUQ5RjQ4Mjk2OTBFQTgxRDZGQzcxMTZBOTlCODZFMTE3ODZGNjM4N0JGM0VFMTA0NERDNjk1Q0REMkI0MkZDRTg0NDFBNjhENjFGMTE1MTE1QkM5RjhCMEU5Qzg5QzQ0RDYwQzI4MDQ0RQorOTNFNAorOTYKKzY1MTBCNjBECis1M0Y3MENFOEEwNkY3NENEOEQ0OUNGNzQwNworMzQ2NjVDNTgzQTVGMjVGQkY1N0ZFNzhDQzJFOTkzODdBMTlBOTIyNTVDMzZBNDRBCis2MzA0NERDOAorRDVGMjRDMTA5RDkxRjhBMjAyNDdENUEyNjkwNgorNDc5NDNCRjdBMjZDNjMzNgorMjdGMzlEQUQKKzRBQzY3OEEyQjlERDdFNEFBOTEyNzhFRTQ1QTVBNEQ4MzdFQjYzQjg3QzJEMDU4ODk4Q0ZCNUQwNEE2OUYyMDQ0QTVGCis5MDNBRUIwMjM0Q0RCNUUyREVDQzVDRjQ0NzJEQTI1RTcyMjdBOUUzRTk5MjM3NzRFQTc1RDRFQTA0ODE2MDYxMzU1QTVGNTgwREU0CiszRTNBMzQyRTM3NEJGRTc1RjUyNTFGRUMxNjE3NjY5QzIxNEQ1NzVFOTE3MTgyRjg4RjhERUIKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTcgcHV0CitkdXAgMiAvQzAwOTkgcHV0CitkdXAgMyAvQzAxMDAgcHV0CitkdXAgNCAvQzAxMDEgcHV0CitkdXAgNSAvQzAxMDUgcHV0CitkdXAgNiAvQzAxMDggcHV0CitkdXAgNyAvQzAxMTIgcHV0CitkdXAgOCAvQzAxMTQgcHV0CitkdXAgOSAvQzAxMTUgcHV0CitkdXAgMTAgL0MwMTE3IHB1dAorZHVwIDExIC9DMDExOCBwdXQKK2R1cCAxMiAvQzAxMjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE0NCAtMjI3IDUxMyA3MjhdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNUQzOEQ0OEVDNzQ2NkZGRUJBNUM3MTQyNTA2RDc4REYyNEYKKzA2MEIzRDZGMjJGNDNDMTYwNUY3RTYxMENFRTAKKzgyMUM2OEZCMTNDMDFEQ0FCNUQwN0VEM0M5Q0E2M0NBNDU4MUFFRTJFRkRBNjZFNEY5Q0JGNzIzQkIyQzI2NzNGMkIxMUI3RDM4RjAyQ0M5RjlBMkM2MDI1RDhFOTU5REZBODlFOUVBMTE2QTZBRTFCNDc1MTBENjA1NzBERUI3MUVFMDFGNTdEQTg3NjVFQTY1MDNGOTdGOTM1RTYwQTcxRTMyQUM5NDQ1NUIwRUMwRTY1Q0EzM0YzOTQ0NzdFRENCMzZBOEU3MTA3MEFCMDNDNkRDMjFCODlENTgwQkJENTExOTNCQkJBRTNEQTZCNzY3QURBNjZFRjg4OQorQTRCMAorRjRENENBOEY3RjgwOEU2NkFFNjZBRUI4NDIKKzA2RTJDMTRFCisyQkNGOEJEQTQ1NUQxMzVGQTgyQzgxODQ1RAorRTY0QzM4N0ZCQjVEQzA4MjRFODAzNTcxRDRCQUQ0OTgzQzU1QzlCOUMxNkVCQjg5QkRBMENCRUI2NDhGMDJCRkIwNzc4Q0ZBQkY1OTI1NTk3NTM3NDAzMDgzMUUwMDU1RTRGODA2ODg3NUU5NTNEOEZBRjhEMzI2NDNGQzhDQUMxNkRBNEY1REI1MTVGNjc1RjE4MDlCMEI3NkM2NEMxOEY4MTQxN0Y4NTgyRTZCNTQzRDBBMUJGRTdBMDJCMTY5CiswMEE4OEM0NworMzRBRkVBNUE5MkZFQ0MxNEFDOTNDM0IzNTg1MworN0Q0RDg2MEZDMDgzNkE0OEQzNzcwRkREQzQ4RDg1RjRERDYyNEE5NTM2MkY2NEE1NjhFQkJBNEExMjdGOUVCMDU0RjE3NTlDNERDNzI1NkZDRjQ3MEZDRkU3NEI3OTRDQ0Y2MjM1OUExMUQ1NjMwRTIyRDc5QUM0Rjk4RjM0REQ4RkI1NDlDNTA0Q0E5RTQwMTg5MUYzRDk1RDdENURDQjQ1ODVFODQ1MDcxNEE2QTBDQTJGRTdCNzcyOEU5RjEyNTIxNUU1MUU1OTFGM0E2OEE4ODg5QUNEMURBNTdGMTNGQTQ2NjU3Nzg3M0EwMDk4MDJCQTdBQjA3NkFECis4NTYwCitGQUUyMzMwOUU2RkY0MDRGQTE1ODVEQkY2QUY4Q0QwRTBDRkUzOUUzNDREOTI1NUUwMTY4NThGQTY1NDQ2N0I3RDQyRDFERTRFQ0JGRjk4QjhDNzE3QkRENUFCQTdDNTkKK0I0NzVDNTc0Cis0RDIwOUU2NTlFOUI1RTM2NkQwNDFBMzE0NENBCitBMUM0RjE5Q0IwMDIzMjkxRkVBMDczNjVGMDdDRjc3MzhEMEFDMTRERDY0MzZGQzZGNjYzMDc1QzFDREZENTE0NkE4MEY0RDk1N0RBREE3RUZGMDMxMzYxNjFGMEE3OUI1OUNCNERGQjAyRkFGQjU4MDc4OERBRUI3RUZCQTBDQzdGMzM5ODFGOUUxM0UwMjA1REVENjMwMDdDNjE3RDg3QUVDNDIyQkZFNzA4NUYxOEY4REQ0MTlFQUY0OUU0RjkxNUY5ODREOTZCCitDREI5MzI1OQorREFENDYyQUUxNTY3MEJBNEY2NEY4OTFENjVBQgorMEU4NzkyN0I5NjFCQUJDMkVDRTM3RDY4MUM2REY1QzNFNEIxRjczODZGRDc3QjEwOTBERDM1ODhBNjQ3MDMwMzUzMUY2NzYwOEQ5MkM4RjdCQjdCRjE2RkU2RTI1QkJBMTRCMDgxRjBDNDkxMjMwMjc3MDAwOEVEM0ZFMjZEODY5RDU3MThFQTM1NjAzMUU2RDM3QzQzMTdGRTcwNDkzMUYyMjQwMUVFMjFFNjZGNEJDRDAzQjI1M0RBRjQ5MkYxRTUzRUI1REM5NkNENTRCQkQ5RTE0MTI4NUE4MzREODY3RTQ1M0RCOUJFMDYzRkEzQjEKKzJENzRENTY0CitFMTM4RDJBNjFFQkRDMzFBMUU4NjFDRURFRkI0Cis5NDFBQ0I2NDBBNzJGQjQzNkM2RDAyMTBCMEI0OTFEMUEwODNCRjA3OURFNDdFRUI4MkUzRkMzN0IxRjg3MTY4RjEzQUI1NkJDNDY4MEZDNTc2MkM1MEI5NzlCM0RBRTZDNUNDOTFBMkU1REI0RjczNjZGMDlGNTEwNzg5RDY0OEZFRUI2ODQ0RTVFQTdBQkE1N0Q3NDcwRTQzRDYzMkI0OURDNDdCMjcwOUIwMEE5QTU5MTFCMkVFNzJEODEwRjQxNURCMjVFRkM1CitCMzVGNTI5OAorRjdDODU3REMwQTlEMDE2OTAzMTEzNjBCNEQzRQorRDc4NUVDNzZDNkY2RDVCM0M3MTZFMTA2MEI4Q0Q1MjgzQUJCMUM0MzdDNUEzQUJDRDQ4QjMxRDkzRjk0MjZCMDFGOTY4MEQ1NzA1NEIxNzlDNTQyMEZBNjVBNTNGQTJDREQ1NzJFMUY5RjhCMzY2REZCOTFEMUE3MjJFRTMxRTQ5QjU0Rjc0MDREQ0Q0RTM4MUQxNjdCM0M4RjM1RUQ5QTM4RjFCMjQ0MTk2OEQ3OTU2MzM5RjM1Q0FCNzlEOTU5MUNBMDM4NTc3RDVBODQzNzA3MkIxNDdFMTRERTQ3ODZENEFFREEwM0FFNTZFQjVFRUI2NUM1QUYxOUFDCis3MUMwCis2QTY5ODBENjc5NkMwMzRGRDUyMjA3ODFENjk0RUVFRkFFRTJCNTJENUMzNjJCQTYxNTQ4RUY4NkQyNEQyRjFGNDNDMTQ4OUJGNzI0OTA1MURGNUEKK0RENDRGMjVCCis0QjBFMzVBNkE3QUMxQkE2OTlCRTY3M0UxRAorN0M3NjU3N0U0N0NGRTUyOTg4MDg3QzhCOTA5NzU3Q0RCQTUzNjM3NzQwQUZFRUVDM0VGRDk1Q0JCNjNERUYzOTIzOUI1M0QyNDVFQzc0NDM1MTlGOTgwN0VFNTRDNzZFM0IwMTBFQjQ5RjVFQkI2NDUyOUVEQUY0MzMxMzBBREE0NUEyMjlFM0IzMjE2MkFGMzE3QjE0RTQwQ0FFQTMxOURDMEI1NjQ2N0RCRTBDNTYzMEZBNkUKKzREOEFGMjNDCiswQ0U0NjQ0RTlCMkFGMDgyM0YyRkQ1ODBERkRGCis0Nzc4MjFBOUYwNzhERkI4RDE3RjYxRjgwRjRCRTc2NThCOUE2QUJEMEUxOTg2MjJGRDg2MkQwMzM0RjIxNkJDNzUyMkFCMjkxMzZFQTYyODcwRThGMDlBRDc4Njg2NURFMkQzMDlDMTEzQzQ1M0U4QjUxRTVGRkM1MEQ1NjBDODA5NTVGNEM0QTM0REY0N0VBMUNGNUY1Rjg4MzM4RUMwQ0U4MDJCOUVDQUY4MUU3MERBNURDNDhBOUM2MkFFNTlDODA3QTQ1NjM3RTEyRTRGMzk4RTAxMUU2NzA5MTlBQzhEM0RGRTM3RjAzQgorMzhFREYyMzgKKzlBMzFENDEzREIyQkY3RjVGODRGNzY2OEI5RDcKKzExMjlGQ0Q1QkQxMDhFQTFFODM1RDdDMTcxNTA2MUFDRUI0NUJEQTYzMkMwQ0FGOUU1RkRGNjVGMTYwMTVGQUU0RDdGNzhBNzZEQ0EyQkYzNTdCQTgwMkY5RThDMDBFMDUxNkMwQjJGQUEzMTMzQkExRTg3NDk3NjVDMUNDREYwNjFBQ0NDNTZCODZERjVFMDkzN0Y2NDI4Q0M5NUVDNTU1QTQzRUI5OTlCMTZDRDEwREM2Mjg0ODU4MzVBMzM0MjUxMDgyQTc4RDk5QzVGREUxRTM5RDUxQTk3OTczODlCNUFGNEIwNkIyODJCQTQyRTk4RjNGRjhDNjQ1RgorRjE0MQorQjQyMjY2N0Q5ODFDNjVBREFDQjBFMDM1NUI1MUY3NTlCMzcyOEExRTYzMDY4QgorMENBNDJCOTAKK0YyMEUxRkI5RUMyNEY0NDhCQzE2MzgxQTk2CitGNzQ2QzI5MDgwQUVBMDI1OTUyMkU2OTE3Q0JFRTAzMDM4ODVCODIxNzBGMTQxQTQzMUJCMTlDMDQzMTY3REZBOEZGNjkyNTI0OEVCMjFBMURFQzgyMTU5QTFDNzIwQjJFRENCNzFBM0VENUY5OEU0QjY0MzFDNzM3NUUzMDUwQzg2QjIyRTczMjNDRUVGMjBFMzlBRTAyMTA4QzEzRDBFOUE0QjY0NUQyRDE2N0IyMkI0OTUKKzJFQzA3MjlECis5RDhCNDA1RjIyMDEzRDNFNTY2Q0QwMzcxMzhCCiszMjk0Q0Q1MTFBQTdEQTBBNjI2MThBREUyOTE5MjgxOTBGQUNGODRFNDI3OUE1MUQxOUUwQzg3MDY3MTlGMzNBN0IxNTRFQzlGMzZBQkRBMzMzNjc0MEJBMjE4N0REMzI5MzU0RDRFQzY1MjYyRjgwNTk5MjVDMDc1QURENTRGOTI2MkQwMzNFMjEyMTgzQkYyQzAyRUMwNTQxQTA2QUU3NjgxNUUyMkY5QjE2MTI5OEM1NTY5QUI3NDAzMTk3NEYyMjMyOTRCNTg5RTU4NTAyRDA4MEVCM0EwNkZBRDFCQUM5RDZCRDdBQzNEOUFDNDk4QUI2M0Y3QzBBQzUKKzRCQjMKKzU4QTQ3RkM2RDRBMzY5NUI1QworRTRFNUM1RjYKK0RCN0E2OERFQzVBNzUwQzcwRjVFRjI1NzkzMzcKK0I5NUJBQzUwMURDOTQxNUEKKzFCMUNGRkJDCis5OEVEOEZBRjdDQTIyQjNGM0U2NzYwQ0M4RkQyRTcxOTE3MDJBMzBBOEQ2NEQzMEZDNTQzRjMxNTYwNEJFNjc2MEJENgorMDFCNEMyMjEzQ0Q3Qzk2MDdDRDA0ODk5MTg0MUQxMURBQkQyMTZBMjUxMkNGNEIwRTQzOTYyQ0RFRTlBMUUzMUZFNUEzODcxMjUyNgorQ0JFRDA4NDMxOTg5NzNCM0IyNUZCNkRGNjVCRDYzNDRBMkU4RDIwRjQ0MEJGMDdCOTkxMTE0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJpIDEyLjAwIC9QU093c3RkdXRjaGkgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTUyNDMyMmYyNDMwMjUwYTAxMGIwMTBjMjQyZDIyMjcyYzIwMzAyYTAxMjUyZTMwMDExNDI0MjAzMTMzMzAyODJkMjYwMTE1MjQzMjM1MmUzMDJhMDExNz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyNDMwMjUyZTMwMmMyMDJkMjIyND4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDgwOT4gOTM0NiAxMzM4NSAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI2NyAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjY3IDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyNjcgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjY3IDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA2MmM+IDE1ODkgMTQzMSAwIDE5NDAgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGIwMTA2MGEwND4gMjAzMyAxNDMxIDAgMjQ5NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMxMjQzMj4gMzE3NyAxNDMxIDAgMzQzMiAtMSBzCis8MDAzMjI3MjQwMDJiMmUyMjIwMmI+IDM0MzIgMTQzMSAyIDQyMzQgMCBzCis8MDAzMTI0MmQyMzAwMzEyODM4MjQwMDMyMmUwMD4gNDIzNCAxNDMxIDQgNTMzNSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBiMDEwNjBhMDQ+IDUzMzUgMTQzMSAwIDU3OTcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDIxMzczMjI0MzEwNzAwMWQwZTI0MjUyMDMzMmIzMjBhMDAyYjJlMjIyMDJiMDAzMTJlMjIyYTI0MzIwMDIxMzMyNTI1MjQzMD4gNTc5NyAxNDMxIDUgODg5NSAwIHMKKzwzMTI4MzgyNDFlPiAzMTc3IDE2NzYgMCAzNTgyIC0xIHMKKzwwNjE0PiAxNTg5IDE5ODAgMCAxOTY3IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBiMDEwNjBhMDQ+IDIwMzMgMTk4MCAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNTI3MjgyMjI3PiAzMTc3IDE5ODAgMCAzNzAzIC0xIHMKKzwwMDIxMjQyNzIwMzQyNDMxMDAyYjI4MmEyNDAwMDYyYzA1MDAzMTI0MzIzMjI4MmQyNjAwMzIyNzI0MDAzMDI0MjIyNDI4MzQyNDAwMzEyODM4MjQwMDI1MmUzMDAwMzIyNzI0PiAzNzAzIDE5ODAgOSA4MTgwIDAgcworPDAwMzAyNDJjMmUzMjI0PiA4MTgwIDE5ODAgMSA4ODk1IDAgcworPDMxMzczMTMyMjQyYzA3PiAzMTc3IDIyMjUgMCAzODM1IC0xIHMKKzwwMDFkMGUyNDI1MjAzMzJiMzIwYTAwMzAyNDJjMmUzMjI0MDAzMDI0MjIyNDI4MzQyNDAwMzEyZTIyMmEyNDMyMDAyMTMzMjUyNTI0MzAwMDMxMjgzODI0MWU+IDM4MzUgMjIyNSA2IDc4MDEgMCBzCis8MDYyZj4gMTU4OSAyNTMwIDAgMTg4MiAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA1MDgwOTA3MDQwMj4gMjAzMyAyNTMwIDAgMjY0MiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMxMjQzMj4gMzE3NyAyNTMwIDAgMzQzMiAtMSBzCis8MDAzMjI3MjQwMDIzMjgzMDI0MjIzMjJlMzAzNzAwMzUyNzI0MzAyNDAwMmYyODJmMjQzMTAwMzUyODJiMmIwMDIxMjQwMDIyMzAyNDIwMzIyNDIzMDcwMDFkMGUyNDI1MjAzMzJiMzIwYTAwMzEzNzMxMzIyNDJjMDAyMzI0PiAzNDMyIDI1MzAgMTAgODgyNSAwIHMKKzwzOT4gODgyNSAyNTMwIDAgODg5NSAtMSBzCis8MjUyMDMzMmIzMj4gMzE3NyAyNzc0IDAgMzU5NSAtMSBzCis8MDAyNTJlMzAwMDMyMjcyNDAwMzIyNDJjMmYyZDIwMmMwMzA0MDAyMjIwMmIyYjFlPiAzNTk1IDI3NzQgNCA1NzY4IDAgcworPDA2MzE+IDE1ODkgMzA3OSAwIDE4NDcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MDkwNTBjMDQwOTA3MDQwMj4gMjAzMyAzMDc5IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM1MjcyODIyMjc+IDMxNzcgMzA3OSAwIDM3MDMgLTEgcworPDAwMzUyODJiMmIwMDMxMjQzMjAwMzIyNzI0MDAyYjJlMjIyMDJiMDAzMTI0MmQyMzAwMjAyZDIzMDAzMDI0MjIyNDI4MzQyNDAwMzEyZTIyMmEyNDMyMDAyMTMzMjUyNTI0MzAwMDMxMjgzODI0MzEwMDMyMmUwMDMyMjcyND4gMzcwMyAzMDc5IDEyIDg4OTUgMCBzCis8MzQyMDJiMzMyNDAzMzEwND4gMzE3NyAzMzI0IDAgMzkwMCAtMSBzCis8MDAzMTJmMjQyMjI4MjUyODI0MjMwNzAwMWQwZTI0MjUyMDMzMmIzMjBhMDAzMTM3MzEzMjI0MmMwMDIzMjQyNTIwMzMyYjMyMDAzMTJlMjIyYTI0MzIwMDIxMzMyNTI1MjQzMDAwMzEyODM4MjQzMTFlPiAzOTAwIDMzMjQgNyA4ODA2IDAgcworPDA2MTk+IDE1ODkgMzYyOCAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MDkwNTBjMDQwOTA3MDQwMj4gMjAzMyAzNjI4IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM1MjcyODIyMjcwMDIxMjQyNzIwMzQyNDMxMDAyOTMzMzEzMjAwMmIyODJhMjQwMDA2MzEwMDIxMzMzMjAwMjUyZTMwMDAzMjI3MjQwMDMwMjQyYzJlMzIyNDAwMzEzNzMxMzIyNDJjPiAzMTc3IDM2MjggOSA3OTIzIDAgcword3N0OmR1dGNoMTJiIFNGCis8MTAxYjE3MjIwMDA2MWMxYTExMTcxYjAwMDYxMTIwMTExNTFlMTExYTAwMGUxYzEyMTgxMzIwMWY+IDEyNzEgNDAxNCAzIDQyMTUgMCBzCis8MGIwYzBmMDc+IDEyNzEgNDM2MiAwIDE4NjYgLTEgcworPDA0PiAxODcwIDQzNjIgMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCA0MzYyIDEgMTk2MCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxYjJkMjgzNjAwMGUyZTJjMjAyODJkMDAxOTJlMjIyYTI0MzIwMDMyMjQzMTMyMzEwMDIwMzAyNDAwMmQyZTMyMDAyMjJlMmMyZjI4MmIyNDIzMDAyODJkMzIyZTAwMmQyNDMyMmYyNDMwMjUwMDIxMzcwMDIzMjQyNTIwMzMyYjMyMDcwMDEzMjUwMDM3MmUzMzAwMzUyODMxMjcwMDMyMmU+IDE5NjAgNDM2MiAxNSA5MDQ2IDAgcworPDAwMmMyNDIwPiA5MDQ2IDQzNjIgMSA5NDYxIDAgcworPDM5PiA5NDYxIDQzNjIgMCA5NTMxIC0xIHMKKzwzMTMzMzAyNDAwMzIyNzI0MDAyZjI0MzAyNTJlMzAyYzIwMmQyMjI0MDAyZTI1MDAxYjJkMjgzNjAwMGUyZTJjMjAyODJkMDAxOTJlMjIyYTI0MzIzMTA1MDAzNzJlMzMwMDJjMzMzMTMyMDAzMDI0MjIyZTJjMmYyODJiMjQwMDJkMjQzMjJmMjQzMDI1MDAyMDJkMjM+IDEyNzEgNDYwNyAxMSA4MjQxIDAgcworPDAwMmQyNDMyMzEyNDMwMzQyNDMwPiA4MjQxIDQ2MDcgMSA5MTEzIDAgcworPDAwMzUyODMyMjc+IDkxMTMgNDYwNyAxIDk1MzEgMCBzCis8MDYwZTBlMTYxZjFiMTUxMzFjPiAxMjcxIDQ4NTIgMCAyNjQ5IC0xIHMKKzwwMDIwMjMyMzI0MjMwMDMyMmUwMDMyMjcyNDAwMmMyMDJhMjQyNTI4MmIyNDA3PiAyNjQ5IDQ4NTIgNCA0NzMyIDAgcworPDBiPiAxMjcxIDUxNTYgMCAxNDM0IC0xIHMKKzwwMDFiMmQyODM2MDAwZTJlMmMyMDI4MmQwMDBlMjAzMjIwMjYzMDIwMmMwMDE5MmUyMjJhMjQzMjAwMTkzMjMwMjQyMDJjMDAzMjI0MzEzMjAwMDMwZTExMWYxOTFhMTgwZjBiMTQwNDAwMjgzMTAwMzQyNDMwMzcwMDJjMzMyMjI3MDAyYjI4MmEyND4gMTQzNCA1MTU2IDExIDkzMDggMCBzCis8MDAyMD4gOTMwOCA1MTU2IDEgOTUzMSAwIHMKKzwxYTBkMTcxZjE5MWExODBmMGIxND4gMTI3MSA1NDAxIDAgMjcyNCAtMSBzCis8MDAzMjI0MzEzMjAwMjQzNjIyMjQyZjMyMDAzMjI3MjAzMjAwMmMyNDMxMzEyMDI2MjQwMDIxMmUzMzJkMjMyMDMwMjgyNDMxMDAyMDMwMjQwMDJmMzAyNDMxMjQzMDM0MjQyMzA3PiAyNzI0IDU0MDEgNyA3MzUxIDAgcworPDFhMjcyND4gMTI3MSA1NzA1IDAgMTYzMSAtMSBzCis8MDAxOTI4MmMyZjJiMjQzMTMyMDAxYjJkMjgzNjAwMGUyZTJjMjAyODJkMDAwZTIwMzIyMDI2MzAyMDJjMDAxOTJlMjIyYTI0MzIwMDE5MzIzMDI0MjAyYzAwMzIyNDMxMzIwMDIyMmUyYzJjMjAyZDIzMDAyYjI4MmQyNDAwMzUyZTMzMmIyMzAwMmIyZTJlMmE+IDE2MzEgNTcwNSAxMSA4OTI2IDAgcworPDAwMzEyZTJjMjQ+IDg5MjYgNTcwNSAxIDk0NjEgMCBzCis8Mzk+IDk0NjEgNTcwNSAwIDk1MzEgLTEgcworPDMyMjcyODJkMjY+IDEyNzEgNTk1MCAwIDE3MzMgLTEgcworPDAwMmIyODJhMjQwMDMyMjcyODMxMGE+IDE3MzMgNTk1MCAyIDI1NTIgMCBzCis8MDI+IDEzOTggNjI1NCAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzFjMWQyMDAzMWIxMzIwMWQxMzFlMTQwMzFiMTMyMDFkMTMxZTE0MDAwMjIwMDA+IDE1MDQgNjI1NCAzIDM2OTIgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDBlMTExZjE5MWExODBmMGIxND4gMzY5MiA2MjU0IDAgNTA3MSAtMSBzCis8MWEyNzI0PiAxMjcxIDY1NTkgMCAxNjMxIC0xIHMKKzwwMDA2MTIwMDI2MmIyZTIxMjAyYjAwMjIyZTJjMmMyMDJkMjMwMDJiMjgyZDI0MDAyZTJmMzIyODJlMmQ+IDE2MzEgNjU1OSA1IDQ2MzIgMCBzCis8MDAyODMxMDAyZDJlMzIwMDM0MjAyYjI4MjMwMDI1MmUzMDAwMjAwMDFiMmQyODM2MDAwZTJlMmMyMDI4MmQwMDE5MmUyMjJhMjQzMjAwMzIyNDMxMzIwMDIwMmQyMzAwMzEyNzJlMzMyYjIzPiA0NjMyIDY1NTkgMTEgOTUzMSAwIHMKKzwyZDJlMzI+IDEyNzEgNjgwNCAwIDE1NzIgLTEgcworPDAwMjEyNDAwMzEyZjI0MjIyODI1MjgyNDIzMDcwMDEyMjQzMDI0MDAyMDMwMjQwMDMxMmUyYzI0MDAyZTI1PiAxNTcyIDY4MDQgNiA0NTQzIDAgcworPDAwMzIyNzI0MDAzMjI0MzEzMjAwMzEyZjI0MjIyODI1MjgyMjAwMjIyZTJjMmMyMDJkMjMwMDJiMjgyZDI0MDAyZTJmMzIyODJlMmQzMTAwMjAzNDIwMjgyYjIwMjEyYjI0MDAyODJkMDAyMD4gNDU0MyA2ODA0IDkgOTUzMSAwIHMKKzwwZTExMWYxOTFhMTgwZjBiMTQ+IDEyNzEgNzA0OCAwIDI2NTAgLTEgcworPDAwMzIyNDMxMzIwNz4gMjY1MCA3MDQ4IDEgMzA4MCAwIHMKKzwwNjJjPiAxNTg5IDczNTMgMCAxOTQwIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBiMDEwNjBhMDQ+IDIwMzMgNzM1MyAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzMTI0MzI+IDMxNzcgNzM1MyAwIDM0MzIgLTEgcworPDAwMzIyNzI0MDAyYjJlMjIyMDJiPiAzNDMyIDczNTMgMiA0MjM0IDAgcworPDAwMzEyNDJkMjMwMDMxMjgzODI0MDAzMjJlMDA+IDQyMzQgNzM1MyA0IDUzMzUgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYjAxMDYwYTA0PiA1MzM1IDczNTMgMCA1Nzk3IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAyMTM3MzIyNDMxMDcwMDFkMGUyNDI1MjAzMzJiMzIwYTAwMmIyZTIyMjAyYjAwMzEyZTIyMmEyNDMyMDAyMTMzMjUyNTI0MzA+IDU3OTcgNzM1MyA1IDg4OTUgMCBzCis8MzEyODM4MjQxZT4gMzE3NyA3NTk4IDAgMzU4MiAtMSBzCis8MDYxND4gMTU4OSA3OTAyIDAgMTk2NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYjAxMDYwYTA0PiAyMDMzIDc5MDIgMCAyNDk1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzUyNzI4MjIyNz4gMzE3NyA3OTAyIDAgMzcwMyAtMSBzCis8MDAyMTI0MjcyMDM0MjQzMTAwMmIyODJhMjQwMDA2MmMwNTAwMzEyNDMyMzIyODJkMjYwMDMyMjcyNDAwMzAyNDIyMjQyODM0MjQwMDMxMjgzODI0MDAyNTJlMzAwMDMyMjcyND4gMzcwMyA3OTAyIDkgODE4MCAwIHMKKzwwMDMwMjQyYzJlMzIyND4gODE4MCA3OTAyIDEgODg5NSAwIHMKKzwzMTM3MzEzMjI0MmMwNz4gMzE3NyA4MTQ3IDAgMzgzNSAtMSBzCis8MDAxZDBlMjQyNTIwMzMyYjMyMGEwMDMwMjQyYzJlMzIyNDAwMzAyNDIyMjQyODM0MjQwMDMxMmUyMjJhMjQzMjAwMjEzMzI1MjUyNDMwMDAzMTI4MzgyNDFlPiAzODM1IDgxNDcgNiA3ODAxIDAgcworPDA2MmY+IDE1ODkgODQ1MSAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MDMwNTA4MDkwNzA0MDI+IDIwMzMgODQ1MSAwIDI2NDIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzMTI0MzI+IDMxNzcgODQ1MSAwIDM0MzIgLTEgcworPDAwMzIyNzI0MDAyMzI4MzAyNDIyMzIyZTMwMzcwMDM1MjcyNDMwMjQwMDJmMjgyZjI0MzEwMDM1MjgyYjJiMDAyMTI0MDAyMjMwMjQyMDMyMjQyMzA3MDAxZDBlMjQyNTIwMzMyYjMyMGEwMDMxMzczMTMyMjQyYzAwMjMyND4gMzQzMiA4NDUxIDEwIDg4MjUgMCBzCis8Mzk+IDg4MjUgODQ1MSAwIDg4OTUgLTEgcworPDI1MjAzMzJiMzI+IDMxNzcgODY5NiAwIDM1OTUgLTEgcworPDAwMjUyZTMwMDAzMjI3MjQwMDMyMjQyYzJmMmQyMDJjMDMwNDAwMjIyMDJiMmIxZT4gMzU5NSA4Njk2IDQgNTc2OCAwIHMKKzwwNjMxPiAxNTg5IDkwMDAgMCAxODQ3IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA5MDUwYzA0MDkwNzA0MDI+IDIwMzMgOTAwMCAwIDI3MTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNTI3MjgyMjI3PiAzMTc3IDkwMDAgMCAzNzAzIC0xIHMKKzwwMDM1MjgyYjJiMDAzMTI0MzIwMDMyMjcyNDAwMmIyZTIyMjAyYjAwMzEyNDJkMjMwMDIwMmQyMzAwMzAyNDIyMjQyODM0MjQwMDMxMmUyMjJhMjQzMjAwMjEzMzI1MjUyNDMwMDAzMTI4MzgyNDMxMDAzMjJlMDAzMjI3MjQ+IDM3MDMgOTAwMCAxMiA4ODk1IDAgcworPDM0MjAyYjMzMjQwMzMxMDQ+IDMxNzcgOTI0NSAwIDM5MDAgLTEgcworPDAwMzEyZjI0MjIyODI1MjgyNDIzMDcwMDFkMGUyNDI1MjAzMzJiMzIwYTAwMzEzNzMxMzIyNDJjMDAyMzI0MjUyMDMzMmIzMjAwMzEyZTIyMmEyNDMyMDAyMTMzMjUyNTI0MzAwMDMxMjgzODI0MzExZT4gMzkwMCA5MjQ1IDcgODgwNiAwIHMKKzwwNjE5PiAxNTg5IDk1NDkgMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA5MDUwYzA0MDkwNzA0MDI+IDIwMzMgOTU0OSAwIDI3MTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNTI3MjgyMjI3MDAyMTI0MjcyMDM0MjQzMTAwMjkzMzMxMzIwMDJiMjgyYTI0MDAwNjMxMDAyMTMzMzIwMDI1MmUzMDAwMzIyNzI0MDAzMDI0MmMyZTMyMjQwMDMxMzczMTMyMjQyYz4gMzE3NyA5NTQ5IDkgNzkyMyAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA4PiAxMjcxIDk5MzUgMCAxMzk5IC0xIHMKKzwxYzFlMTMwMDA1PiAxMzg5IDk5MzUgMSAxODcyIDAgcworPDBmMGEwMDA1MGQwOTAwMGUyMDFlMTMxMTFhPiAxODY3IDk5MzUgMiAzMzI0IDAgcworPDBiMGMwZjA3PiAxMjcxIDEwMjg0IDAgMTg2NiAtMSBzCis8MDQ+IDE4NzAgMTAyODQgMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCAxMDI4NCAxIDE5NzIgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMTA+IDE5NzIgMTAyODQgMSAyMTQ3IDAgcworPDJlMzAyNDAwMGI+IDIxMzkgMTAyODQgMSAyNjQ4IDAgcworPDFhMTQwMDBiMTcxMz4gMjYyOCAxMDI4NCAxIDMzODQgMCBzCis8MDAzMjI0MzEzMjMxMDAyMDMwMjQwMDJkMmUzMjAwMjIyZTJjMmYyODJiMjQyMzAwMjgyZDMyMmUwMDJkMjQzMjJmMjQzMDI1MDAyMTM3MDAyMzI0MjUyMDMzMmIzMjA3MDAxMzI1MDAzNzJlMzMwMDM1MjgzMTI3MDAzMjJlMDAyYzI0MjAzMTMzMzAyND4gMzM4NCAxMDI4NCAxMyA5NTMxIDAgcworPDMyMjcyND4gMTI3MSAxMDUyOCAwIDE1NjEgLTEgcworPDAwMmYyNDMwMjUyZTMwMmMyMDJkMjIyNDAwMmUyNTAwMjIyZTJkMmQyNDIyMzIyODJlMmQzMTAwMmUzNDI0MzAwMDMyMjcyNDAwMTA+IDE1NjEgMTA1MjggNiA1MDE3IDAgcworPDJlMzAyNDAwMGI+IDUwMDkgMTA1MjggMSA1NTA5IDAgcworPDFhMTQwMDBiMTcxMzA1MDAzNzJlMzMwMDJjMzMzMTMyMDAzMDI0MjIyZTJjMmYyODJiMjQwMDJkMjQzMjJmMjQzMDI1MDAyMDJkMjMwMDJkMjQzMj4gNTQ4OSAxMDUyOCA3IDk0NjEgMCBzCis8Mzk+IDk0NjEgMTA1MjggMCA5NTMxIC0xIHMKKzwzMTI0MzAzNDI0MzA+IDEyNzEgMTA3NzMgMCAxODIwIC0xIHMKKzwwMDM1MjgzMjI3MDAwNjBlMGUxNjFmMTAxNjE4MGYwMDIwMjMyMzI0MjMwMDMyMmUwMDMyMjcyNDAwMmMyMDJhMjQyNTI4MmIyNDA3PiAxODIwIDEwNzczIDYgNTgwNiAwIHMKKzwwYjAwMTA+IDEyNzEgMTEwNzggMSAxNjE4IDAgcworPDJlMzAyNDAwMGI+IDE2MTAgMTEwNzggMSAyMTI4IDAgcworPDFhMTQwMDBiMTcxMzAwMTkzMjMwMjQyMDJjMDAzMjI0MzEzMjAwMDMxMDE2MTgwZjFmMTkxYTE4MGYwYjE0MDQwMDI4MzEwMDM0MjQzMDM3MDAyYzMzMjIyNzAwMmIyODJhMjQwMDIwMDAxYjBlMTcxZjE5MWExODBmMGIxNDAwMzIyNDMxMzIwNz4gMjEwOCAxMTA3OCAxMSA5NTI2IDAgcword3N0OmR1dGNoMTJiIFNGCis8MGIwYzBmMDc+IDEyNzEgMTEzODIgMCAxODY2IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MGE+IDE4NjYgMTEzODIgMCAxOTI0IC0xIHMKKzwwMDFhMjcyNDAwMTA+IDE5MjQgMTEzODIgMiAyNTE3IDAgcworPDJlMzAyNDAwMGI+IDI1MDkgMTEzODIgMSAzMDI1IDAgcworPDFhMTQwMDBiMTcxMzAwMjQzNjJmMmUzMDMyMzEwMDIwMmQwMDMzMmQzMDI0MmIyODIwMjEyYjI0MDAyZjMwMmUzMjJlMjIyZTJiMDcwMDEzMzIwMDI4MzEwMDI4MmMyZjJlMzAzMjIwMmQzMjAwMzIyNzIwMzIwMDM3MmUzMzAwMjQzNjIwMmMyODJkMjQ+IDMwMDUgMTEzODIgMTEgOTUzMSAwIHMKKzwzMjI3MjQ+IDEyNzEgMTE2MjcgMCAxNTYxIC0xIHMKKzwwMDMwMjQzMTMzMmIzMjMxMDAyMjIwMzAyNDI1MzMyYjJiMzcwMDIwMzEwMDMyMjcyNDAwMzAyNDJmMmUzMDMyMjQyMzAwMzEyNDJkMjMwMDMwMjAzMjI0MDAyMjIwMmQwMDIxMjQwMDJjMzMyMjI3MDAyNzI4MjYyNzI0MzAwMDMyMjcyMDJkMDAzMjI3MjQwMDIwMjIzMjMzMjAyYjAwMzAyNDIyMjQyODM0MjQwMDMwMjAzMjI0MDc+IDE1NjEgMTE2MjcgMTYgOTUzMSAwIHMKKzwxMTMwMjQyMDMyPiAxMjcxIDExODcxIDAgMTgwMyAtMSBzCis8MDAyMjIwMzAyNDAwMzEyNzJlMzMyYjIzMDAyMTI0MDAzMjIwMmEyNDJkMDAzNTI3MjQyZDAwMzAyNDJmMmUzMDMyMjgyZDI2MDAxMDE2MTgwZjFmMTkxYTE4MGYwYjE0MDAzMjI0MzEzMjAwMzAyNDMxMzMyYjMyMzEwMDMyMmUwMDJjMjAyYTI0MDAzMTMzMzAyNDAwMzIyNzI0Mzc+IDE4MDMgMTE4NzEgMTMgOTUzMSAwIHMKKzwyMDMwMjQ+IDEyNzEgMTIxMTYgMCAxNTYyIC0xIHMKKzwwMDJkMmUzMjAwMmMyODMxMmIyNDIwMjMyODJkMjYwNzAwMTA+IDE1NjIgMTIxMTYgMyAzMTI5IDAgcworPDJlMzAwMDI0MzYyMDJjMmYyYjI0MDUwMDJlMmQyNDAwMzEyNzJlMzMyYjIzMDA+IDMxMjEgMTIxMTYgNCA1MjE0IDAgcword3N0OmR1dGNoMTJiIFNGCis8MTExOTIxMTEyMzFmPiA1MjE0IDEyMTE2IDAgNTgxOCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMzAyNDJmMmUzMDMyMDAyMTJlMzIyNzAwMzEyNDJkMjMwMDIwMmQyMzAwMzAyNDIyMjQyODM0MjQwMDMwMjAzMjI0MzEwMD4gNTgxOCAxMjExNiA3IDg4OTQgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwyMDFjMTUxMzIwMTY+IDg4OTQgMTIxMTYgMCA5NDYyIC0xIHMKKzwyND4gOTQ2MiAxMjExNiAwIDk1MzEgLTEgcworPDEzMWU+IDEyNzEgMTIzNjEgMCAxNDU3IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAyNTJlMzAwMDIwMDAxMDE2MTgwZjFmMTkxYTE4MGYwYjE0MDAzMjI0MzEzMjA3MDAxMzI1MDAzNzJlMzMwMDIwMzAyNDAwMjYyZTI4MmQyNjAwMzIyZTAwMzAyNDJmMmUzMDMyMDAyMDAwMzEyODJkMjYyYjI0MDAyZDMzMmMyMTI0MzAwNTAwMzcyZTMzMDAzMTI3MmUzMzJiMjMwMDMwMjQyZjJlMzAzMj4gMTQ1NyAxMjM2MSAxNiA5NTMxIDAgcworPDMyMjcyND4gMTI3MSAxMjYwNiAwIDE1NjEgLTEgcworPDAwMzAyNDIyMjQyODM0MjQwMDMwMjAzMjI0MDc+IDE1NjEgMTI2MDYgMiAyNzIzIDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDE0KSAxNAorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM2IHB1dAorZHVwIDMgL0MwMDQ0IHB1dAorZHVwIDQgL0MwMDQ1IHB1dAorZHVwIDUgL0MwMDQ2IHB1dAorZHVwIDYgL0MwMDQ3IHB1dAorZHVwIDcgL0MwMDQ4IHB1dAorZHVwIDggL0MwMDQ5IHB1dAorZHVwIDkgL0MwMDUxIHB1dAorZHVwIDEwIC9DMDA1MiBwdXQKK2R1cCAxMSAvQzAwNTMgcHV0CitkdXAgMTIgL0MwMDU4IHB1dAorZHVwIDEzIC9DMDA2MiBwdXQKK2R1cCAxNCAvQzAwNjUgcHV0CitkdXAgMTUgL0MwMDY2IHB1dAorZHVwIDE2IC9DMDA2OCBwdXQKK2R1cCAxNyAvQzAwNjkgcHV0CitkdXAgMTggL0MwMDcwIHB1dAorZHVwIDE5IC9DMDA3MiBwdXQKK2R1cCAyMCAvQzAwNzMgcHV0CitkdXAgMjEgL0MwMDc2IHB1dAorZHVwIDIyIC9DMDA3NyBwdXQKK2R1cCAyMyAvQzAwNzggcHV0CitkdXAgMjQgL0MwMDc5IHB1dAorZHVwIDI1IC9DMDA4MCBwdXQKK2R1cCAyNiAvQzAwODIgcHV0CitkdXAgMjcgL0MwMDgzIHB1dAorZHVwIDI4IC9DMDA4NCBwdXQKK2R1cCAyOSAvQzAwODUgcHV0CitkdXAgMzAgL0MwMDkxIHB1dAorZHVwIDMxIC9DMDA5MyBwdXQKK2R1cCAzMiAvQzAwOTUgcHV0CitkdXAgMzMgL0MwMDk3IHB1dAorZHVwIDM0IC9DMDA5OCBwdXQKK2R1cCAzNSAvQzAwOTkgcHV0CitkdXAgMzYgL0MwMTAwIHB1dAorZHVwIDM3IC9DMDEwMSBwdXQKK2R1cCAzOCAvQzAxMDIgcHV0CitkdXAgMzkgL0MwMTAzIHB1dAorZHVwIDQwIC9DMDEwNCBwdXQKK2R1cCA0MSAvQzAxMDUgcHV0CitkdXAgNDIgL0MwMTA3IHB1dAorZHVwIDQzIC9DMDEwOCBwdXQKK2R1cCA0NCAvQzAxMDkgcHV0CitkdXAgNDUgL0MwMTEwIHB1dAorZHVwIDQ2IC9DMDExMSBwdXQKK2R1cCA0NyAvQzAxMTIgcHV0CitkdXAgNDggL0MwMTE0IHB1dAorZHVwIDQ5IC9DMDExNSBwdXQKK2R1cCA1MCAvQzAxMTYgcHV0CitkdXAgNTEgL0MwMTE3IHB1dAorZHVwIDUyIC9DMDExOCBwdXQKK2R1cCA1MyAvQzAxMTkgcHV0CitkdXAgNTQgL0MwMTIxIHB1dAorZHVwIDU1IC9DMDEyMiBwdXQKK2R1cCA1NiAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yMzggOTIwIDc2Nl0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIxOTAxREU0OEI2NDNDRkI4NTdDRkJCODVFMjUzRUUyRUE1QQorMTc1NTlGNjhBODQ5QTg3OUZGQkQwQjk5CitDRkRBODhGMEMxMjQ1MzE2NEUKKzEzODFCNEY1CitGNTE2QzZGMjRENkRFN0JFNEFEMDMxNDcyMjQ5CitDOEZEQ0U1RDk5QTg4NzZCRTFFMEI3REJDQUE3QTZBMTZCMkMyQjE0NDJGMzQ0QUZGNDgwRjE4M0ZEM0NFQTA1RDE3MzAxRTVENDEyMTkwQkY4RkYwNkY5QURBOEM4OTEzMzY3N0EzRjE2NDQxMzkwNUZEOUFCMjMyRkYzQzZCMTUyNjE3REQ1NzYxQjg2NzM3ODIxNEY4MEFGN0U2MkFFQkFGQkYwODM2REIxNkYzOTYwQTQ1NTE4NzExNjAwQjJBN0YwRDREM0RCQThFNkE0MzREQjVGNjMyQTMwNjM1QkZEN0RFMDE4Nzk2MzgzNDgxRDc5MzQ3QjcxM0EKKzU5NjIKKzg3N0RCNDY2OUM3NTgyMjU3RUQzQjQ2MgorMTk3NkIxOEEKKzFBRUY2Qzk2RDQ5QjMwREM3NDBFOEJBQjNDCis5OUJDQTU5MURGMkNFODdEM0E1ODZCRTQwNDk5M0M0REM3QkFGMkI3MDExNTg4MDQ5N0U0NDE1RUI1QkRCNzA4RjUzMEJEMUYzRDVDMjQ2NjQ5NEVEOUFGMzBERkMwMjIyNDUxMEVDQ0ZENjBGODkyNDUKK0U4NDE0OEVFCis2ODEwMzVBMzlENEY0RTM1MDdCNDU5NjZBOQorRjZDMkZEQTA2RjUyRUQ3RUJDRkFFQUUwNjNBQTY5MEEyQTNCRkUzMTRGQTI1NAorOTA0RjY5M0UKKzhGRjgxN0VENEZGQzQ5QzRGQTYyRjRFMTA2Cis5MzAyOUNFMDQ1OEQ4NDk4Njg1MDEyQ0NFQjYwQTM1RTkxMjU5QUIyRkZGNUI1Q0Q4RDlCRDJDMUZDMTFGRgorQ0VGRkIzM0EKK0Y5MkZBM0Y4NjQ4NTczOUE2REUwRDY3QTQzCisyM0YxN0Q5MUYyRkQ2ODJBMTI0MUIxNkVBMUJBODBERDkyQjJBMzMzMTdEODhEOEUxRjQ1NTg5QworRUI5NjFCOTQKKzExMzBEQTI0NEZCMkNBQjMyRjg0MDU4QTZCCisyN0JGMzU0MkQ1MTBBOEM2QTNEODhBOUEyQ0IxQkJFNTlGQjg2QUYxMTM1NjgyNkNCNzVCOTdCOUUxMDAzN0QyOUJCNjY2RjNFQjQ4REIzMjIwNjVBNDYyQkQ0NEVDNjFDMjI3NDY1NDZDRERGNzRDRTE0NjM1NzBCOTg1QTcxMEU0QTYyMzI3Mjc2NDMwMTdERERGCis3RTJGNkJENgorN0ZDMDU5NDYwQTUzRjFEMTNEQTlEQ0UzNzQKKzc2MkUxNzVEMURDOTkwMkJFRDM2MTZFOUFBODhEQ0IxNzE2Qjk5OTRCM0I0RkYwOEVBNUVDMEE1OTUxNjgzMDQ5NUUzQkE2RjI3RTJFRjA2RjJCM0YyNjkzODM1NTZERUU3NkIzRkU4MThFRDVCODBFMkIzMjk5RUFFM0MzQgorMjI0QTY0NUQKK0MyQUEwRDM0MTU5MjIzREVBRTMyNzc3OTAwOEIKK0Q4NjZDODFBRTRFN0I2MERDOTY3QTIyN0M5NUJDODVCQzJCQkY3NTMxNkNDRTBCOTczQzMyQzM5ODEwMDU1OTIzRkQ2OEYyNzcyREVBRTM0NTcyRUQ3NDU1QkUwNjNGNDVEQUNGMTI5QUZCMTA0MDY4RkQxNDA2MEMzRUYwNUFDMkZFNDE3QjZGN0FBNUIwOTM0QjlBNEE3REY2Q0FGQkQ1QjJEQjkwODgwODkzQkQwNzE2RTZEMEI5RDM1NkQ4OTM5QTM1NkE1REQyMzg5RDE3RDMzQzAxNDNFQTY5MAorQzMzNzczNTYKKzQxQzRFQ0UwMjZGMTIzOTA3MDg3NTg1Nzk3CitGQkQ4NTM0MDJBMDcxMEMwQ0I0RUQyOTZCMEZDRDA5NjgzNEU2QjFFQTdDNDFBODBDMjMwOEU5MDFDQjg3NDFEQjc3QzczNzZFOTRDOUU1NTUwMEMyNzhCQjdGN0FDODc2MUE5MTBDRjYwQjhEQUY2RkZFQworNDUyMTQ1QkEKKzRGMzY2RDg0RkZBMTZFMjNERUFDMjgwN0VCCis1MjAwMEZBOTE2QURFNzU5QTk3RkEwMjI2RDFGOUE2NDI1QzkzQzc2REZGRjI0OUNCQzI2OTkwNzU0NTUxNDUwOEU5OTU2RUNGNTRGNDU3NTg1M0RFODg3MUYzQkJERjgyRUQ1QjY1MDNFMzc5OTUxRjc4MzQ4RTdFNEVDNkZBRTM0OUMxOTU1ODlBNTJFN0JDOEZFRjFEM0JFNEZFODFFODdCOUE4QkNDRTI3RDBBNjJCQzU1Qjc1NDIyNkU4QTE0QQorNTYxQkQ1MjIKKzg5RTA4RDQ4MEZENzlBRTI4N0U1OUZGRDg4CitFMEFBQjU2QUNFQTNGM0JEMDA0ODA4MDI4NDVGRDIxNEREQ0I4NEI0Nzc0MDAxOEQwRUM4NjUzMUREMDlDMURDNERENDZGODNCMUMyNDVEOTZDRDNGMEJCNjI1MzE2QTk5MTJEOEQ4NUQwREYKKzE1Nzc1NzFDCisyQUJCODZEMURBNDk2RjFFRTk0QTVEM0ZEMworQUI2OUUyNDc1MDUyMUYyRUJGQ0UzNkMyMEQ1RkRCMDMyNTlFMkFDMzFDMzEyQjJCNkNGRjkxRjU0RTgzQTMwNjRDRTFBMTY0MzVCOEE5Cis4ODIxNUE3MQorOEUxNkRCNDhBQzJCODkxRDE4RjE3QjdFRDNCMQorOUJCQzc0NkQ2OUUzMTlERjg2MDlFQTdERkU5N0U3NUUwMEYwN0I5RUM5OTU4QUFFMEYzNDEwNUI4MDNBOTM2ODkxMjgyNzA5RDM2NDhFNjg1NTNDQkZERjAyOTE1NUI4ODg1NEFFQURCOTdCMERBMEJFMzcyMTAzMDgzNjU1MDdGQ0IzNjU4OTg0RTFGNDlGNDVEQkUwN0NENkQxN0UwNTQzNDJDNjdEQkE3OUEwMDBCRjEwREQ4RTkyRkYzODcyQkNFQTI3QjhFMjY3QTdFNDM1MjBCNEYwQjRENUVGQjUzNDgwNTIKK0JDODJFMkZFCitFNkNBM0RGQUM5Q0Y1NDEwODE2Q0JEMDFGNTI3CisxNzVBNzAyRDA5MkM1QkJFQTI2Qzk0MUNCN0Y1MjVDQkU2RDZFRDUxRDJFMEJGQzE5RTVFNUYyRUM4RDBBMEQ4NUY0RjdGN0ZCQzVEOUVDQjNENzg2MzA3MDFBQTZFMDQ4Rjc4QTMwOEJGQTdERUUwRjI2MTA2MTI1MDEzQzdCOEEzOEYzQkIyMzFFRDlGMjlBOENDNzk5QUM0MjI3OERDNjNBMDQ4NDJGRjc4MjMyNTg3OTI0MEY4OTg4NjdBRjgzRUYzMjlBQjM4MDg3NDIxNDI2QTNCMkVGNDI5NTdEOTFEMTQ2QzIxMEZCMEJEQzEyODJDRDkyOEEzNjMKKzZFMzcKKzE0CitBNDJCOTg1NQorNEZFRDM5NDRBMDA2MTMzODQxREZBMjlFRjMKKzhDMTRBN0QzQjdBMUEzQzM2NkY3QzQ0NzRCNUU5QzJEQjc0Q0Q0MUU5NzVGQzM4Q0FCOEEzRkE0QTFDREQ5MjcxMjY5NzA5ODIxM0M3MUIxODlBQTY3MEFGQjgxRjAxNjVGMDA4RTBBQTBEMDNCNEQ0MTJCRTFDMTAwM0E5ODhENjRCMkZBNzE3RTYxQzc4M0ZFQUE5QjU0NkVCQURGODk4NUM2NDcwQjY0NDJGOUE2MzRCMTM5RDE0NDkxRjU5QUUxQUVBMworRTVERUEzODEKK0FEQzREN0ZEREJCMjIxOUUwM0NCRUQwRkVGNTMKK0ZGQjkxRTIxOThDNDdFMzY2RDlBNkY4RURENkQ5MTU5NUU5MDkzODRBOTFCM0E5RjU5NTNBQTdDQzg3QzZFMDM5QTEzOUIzNUQ1QUIxNTBGRjBFQTM0MTQxRDQwNzQ0MjNCRTNCQ0Y5NDhGM0Y3QUFEMzkyQ0I0MjA5NDdDQUJDQjBERDU4Njk4MDhFMjk4MjJBODhCMTk0MUQ0MUMzRjIyQ0FENDFDQUUwMENFQjc2OUM4Rjg0RjBFQkNDRTRGRTAzRUFBMTZDNjFDQzlEODFFM0JGRTg4QTg1OTdDRkI0RTIzMjRGODMyQTlGNkJGMkYzREFGOTIyQjlFQgorRUIwOUY1NTYKK0I3MUYwNjQyNDVBQUYyMjVDMzgzRTZCNThCQzgKKzc5REM3MzRENDVDQkZCOTU4NUM5Q0REMTkzQUIzOThGNEFFMTc4QzI1MkYwNTRFRUM5MkQzRkZBNzFFRjg0MUQ2ODYyQTI4RThCQjk4NkI0RDVDMTYxRDAyNTRDQTZFMUU5Q0I5RjE4NjMxRjVBRDI1MENCQjE3NTlGNDAwRkFCNUIxRTMzRTQ2MUFDMjBCMThBQ0JCM0Y0RjA1NkFFREYyMTc2QjI0MzRFNDE1MDA1RUY3RjQwNkE5QUY2QUE4MzJCNjRDQzdGMzY3NDI2OTdDQQorREIwOEUzMzAKK0M1MjU4RjcxRjE3OUE2OUJGRTc0MzQ2NDkzMDgKKzA4NjhGNTZBRjJBQUI1OEYwQTk2M0M3NUI0NDUwRUFCQ0VGRTc5QjIzMjQ4ODNGNEM2RUZGNjMwQTA4NDREMkY1ODBGODlDRTJGMEY0MkJFMTc4RDlERkNENTYzOUY4Qjg4NEYzRjdGMzRBRDIyN0QxMEQyMDdBOTRCQTk5REI5NzgzRTc1ODE0Mzg0NTJCQkE4RThENkEyOEY4MDQ3RTE2NDk0OEFFOTU2Mjg0RjUyOTk4ODY4NTQwMEREMkEwNDhDQUY3NDQ5Q0M4Qzc3OEM4Mjg1REFFQ0YyQjBENDJCNDg3MTBFNTMwMUYzQkEwOERGRDc2NThFMzhCMQorQkMxOQorMDNFNUEyOERDOUQzRDcwMzNFOTM0MAorM0U0MEYwQzAKK0U5MUUyNTIzNDM0N0YwMUZBOURFQzI1NjUwCis3RUIwNTcwNkZBNjIwOUQ2RTIzNjlGMjRDNDhDNUY4RUM1MjAyMUU2MjFGNTA5Q0FEQTFFQzc4NkQ5MTNFRjAxNEU1M0Q3OUU1ODg1MURFNzE3OEQzNDFGMTUxNzQ5NzI5MTU5RDg4NUExMUIwNzBGMkQxNEMxCis0M0M4NTk2MgorQjZDNjcwRENCRUYxREY4Rjg5RTc1MzJCRDEKKzlDRkRENjkyMkEzMDhDODlBRTc2MDUyRjdDMTk3OTZBNDFDMTc2RUMwNDkxQ0YxREY2MTlEOThBM0Q1QjEzOUEyRjFEQUM0NjdCMjNFRENCNjVFMEIzRjc3RjU5RTlCMTUzRjAyQUY3QTM2ODYzNzJGOTAxNEE3MjQ5QzhGRTRBNEVFNDU1QkM0QkI0ODcKKzBDMkU0Nzg2CitGMTJDM0ExM0REOEY0MTE2N0M3OEQyMTBBRkQyCitDMDIxMzEyNTJBMjdDQzg2REQzMkVBNDFENDIyREMxQzZBMDg2RjYzNDVFQzAzNjkzNUE3RDBDMjZERDkzMTk2MjUxOTZDNkVDRkVFMTBFREFGMzE2MzcwRjMwRjFEOEMzQjQyQzBCNTlBRTQ3M0JGOUE2RjRCQkQyODE1OTgyRkQ2MjI4RTFBMzY0ODNCMjRGRUE4RDQ5NDc5MjgwMTA2QzFGM0RFRjdGQjg0NUI0MDhCNEJGMzI4RjdFOERCMkFBMzAxMjE4RTI4RDIxQTM1MzZGNTg2OTQwRDhCRTEKKzZFQUUwMzM5CisyQUYyQjVBNERDOEM1M0E0RDA5MDJGQzBFOQorNjdGNkRFQ0FFNjlBRjM3NkI0OUIxMjM1MjdCOEJENzFCRjNFRTc5MkE0NDA5MDJGNDk0RUYwMkFFNkQ2MkY0OUYwMjNFQkVFNkIxOEMyNzZDNTM0MDk2MzdGQ0Q0OTA1MzZCOUVEOUEyRUEzMkVEQTlGMzNFQzk3NjcyOTc0NkQ4MkM3Q0NDOURCNEI1MkZFODdFNUNFMDBEQjI3NkZGMzNBMzc3NjIxQTM3REJBOTdGOTU1QkQxNQorNjNEMEREQjMKK0MxOTU2RDE0RkM3OEU4QzlCRkU4RTkzNzk3CisxRTk0QzAxQzAwQ0Q3NUVCQUYzNEM0NzMzREY4QzdEQzc4MjhGNjI0Q0E0REMxMDJFODAxNEZFOURGN0U1Qzg1NjNERTI3QzY5NUE3MUMzMTUwN0EyOTU2MUY5QTFBQ0FFMDYzQkVGRTE4QjgwNkY4OEFBRjI5RkREQjQ0N0EwOEZEM0I2REFDNUZCMDA0MDJBMTc4MDhFOUFBN0YzNTQ4RDlCRkJBCiswM0M2QkZGMQorRTY3NDBGNjEzNjgzQjhEQ0E4RjJENEEyNkE2MgorRDcxRkFGMUY3NEZCMjkyOTRDMkQ1RUNDOEVGN0E4OTY5NTI4N0I2MjZENkQ2MzAwQzBFM0Y3RDlDMzkxODdCODRCMDQ3NzJBMjFCRjQ5M0E2M0QyQjYxMTk0OURBRTZERjhBMDdBODQ2RjU0NDVFRTQ2QkQ5MUU3Nzc2MEUxMTk3RTYxQzU3MDYwREZERkYwQUYwMTE5NDhGQzZGNUU0NUE5MDJBOEQ0RjFEQjgyMTRCRTgzNkJGODgzMkI1MzZCNjZCREFGRTcxMzlENDlENEJFNzAKK0E5MzJBQkYyCis5OEJDMTQ5NzA1MTczQjFDNDAxRTk2ODgxQzk1CitDMDVEODY1NDc1QTMyNzcxN0I5RDA5OEI3NDg5QzlEQTBFMjE1QUZBQTNEQkM5M0IyNERFOTQxMDQyRDAwOTUyNzE1NjhBRjlGOTJFNEMwQUFBRkYxNkZBQ0MwRDI3QzhEN0ZCQzYxMDZEM0E0N0EyQzg1MTg5NkU2MTFDQzNDMjVCRkY3RUNGODdDRkM3NDdDM0NFNzUxNTAxMERENTQ2Q0RDODlFMjMwRUFBRDVBMUFFQzZGNzI1QTJFQjU4NDdCRTdBRkRFNjE1OEEyOEM4QzNCRkYzMkJCNUQzRkY0RERENURDOTIzMzdGQUJCMDg5RjA3NTkxQThGRDkKKzBCRDA5QTVFCis0N0QwNTBCQjg3QjNBNDAyNTQzREU4QjBCMjA1CiszRTY5N0VDOUQwRjU3OUFERUU4RkE1MDFENDJCMDcyRUIxQkMxQUU4Q0FCODAyOTg4NjU0OEI3RTc2Nzc4RkMwMDZFQUFGQjJCQUE4N0Y5Q0NBNUU3NzA0NkUyQkRCMUUwN0ZCNzdDNEI4MUY4N0YxNUZCQUQxRTA4MDZGNDY4N0ZGREY1NUNEMzVDOUUzRUM4RTZCRUMwQjRCNUU0MzNFRUU2NzcyRjQ3NUVGNDNBMTJDNzUwMDY2QkI2ODA4Q0UzOTdFODVFNDI5ODIwNDg4QTFEMkI1MjQzMjcyRURDNjEyRjM3NDBEOTk1MTRGMzEzN0U0MjY1RkFEN0QKKzE2NTcKK0IyMzQxNQorMEZBNUNDQ0YKKzgxODZCMzU4NjJBNTUwNzBBOEE1RjY1NjVCCis5NjZCRjY1MDEzODk4MTFFQjlBQTQ4MDczOEQzM0YyMkU1MTJCQjY2NzlDNEVFMkNFQzUxNTFFMTI1N0M3ODRCOEFCMDBBQjg3NDBBM0I1OTIzNjhGRDJBMkFFQTIwNDBFQTA0ODU5MTEwODdFQkEzQkQ2NThFMjczOTgwMkY2RDY4QkM4NDQwNTI5MUREOUUzNjY2Q0M1NDdEQkNGOTg5Q0YKK0E5QjZDMDRBCis2Njg3RDUzNDY1RjE0OTc4OUI5Q0M5ODJCNkEzCis4NEQzNTQ0MDJBNTVCRjk0N0MwQkQ2MkRDRURBQzc1QTA5Qjc2RjhBMDBEOENEOTkyQ0ZEQkNFNzU3N0JCNkM2ODYxQTkwRkUxNkQ4ODBDMEJBOTI5QjVDMkE5QjcwNzlCMTZGMDlEQ0VGRjIyNTk2QkRDMzJBQTIyNzgyNDJGMDZGNjlFREI4RUVDMDQ1QkFGRTkyRTZENkU2ODNFMTREODM2RDNENDlCNDlBMkJFNTNCMTZGRTU2REJCQzM5QTMxMDNDQ0Y0RAorOTkwM0FFM0UKKzFBRDc3M0Q4RjI0MkQwNUFEMzRGQTY1MTUwCis3QzY3MzlGQTU1NjI1OUQ4Qzg2Nzk2NzYzQThEQzJDMkE0NDE1NDQ2Qzc3NjU4QTY4NTBDM0RBN0QyMEE3NEJDQUEwMUJBMzI5OEFFMDk0NDYxQzAKKzAxNkRDMkQwCis3QTBGRUQxRjg1MEU1MjNDRTI1Q0I2RDk0OQorRjRGRDlCMTMxMzkzREQwQzc4QjFCNzMzMDFGODg3Q0I0OUNGQzFENTEzOEUwQjYwRDEyMzFFMDNGOUQ4MThBQ0NGRTJGMDM0RkEzMDFGMTE2OTFFQkE4MQorQTNEMDE3MkEKKzg3QjBBNkRGOTk1NzA4QUZDNDFGOUU4QzY2Cis3MzVDNTlFQUI4MzI0MTYwQTk5MDlBMjY1QTUzNjgwMTdENDA4RTFBNDQ0MAorOEYzNTM3NDAKK0U1OEYwNDg4MUI3RTQ3QUE0NzA0NjM4REY3RTMKKzU5OUY2MkIwOUJCNzUxNjlCREUzRUNEMUM1REMyMTczODM3NkEyQTc2MzA4QjlFM0VBREMyRjczRDExMDI2NUY4ODM4QjFDNkZDQzFGRUExNTE5NzFDNzIyMTdGM0I2OUVGMDFBNDNEQjEyMjVDRjM5QTdBQUFGNTRBMTFDN0Y2NDlCMDNEMzI0ODQyM0MyMzRFQjFBRjlFMEYxQzhFNkVGNTQ4QzRBQkM3MUI2QUUyMUY3QjcwNDFDRjNDNkMzOEJCQzgzMkU3NDg0OTIxNjlGQzk5Q0E5NEZDODAwMUM5QjQyMkQ0RDVDRjAzMkVENjgwRTkyMEVFREFFRgorNDBEOQorNDM3N0E2CiszMUM0REIyNworRjVGNTlCMUIwN0RFMkJFOTNBQURCRTY2QTUKKzNCRTc0OEM0NjdEQTY0MjBCNzIzMjcwOURBMjZGRjk2RjNCRjY5MTRGNThGQ0E4QjJCM0RFODQxNjUwODEyNUYxMTk1Q0VCMzIwN0I0RDI5MTMyOUQyMzRFNzNBMjNBMDJFQzY5M0NEMkVGNUJBRUJBMUNBOUJEQjQxQjI4QTY4NEU3REZFQTZCMEUyQTI1NDM5N0Q4MDQ3MkUzQTM4RjE0MzBGNTU3OUE5N0UzODRBCitFNjZFQkM4MQorRjJFNzVGNUMzMjc1MjM0MTc5OUM5Q0FBNzUKKzhDM0MyMTFGQ0E2RjlENzYzQTUzN0IwRENFRjc0NDk0RUMwRjA0RjE5ODFERDU3QTgyOUJBN0RBNkIzMTk5RjQ3NzA0NjlGNkFENUU2RDM0MjE3MzRCMDkzRTJBOUI5ODAxNUM5NzIzQTQzMDkyRkE1RTI1OUMzRjNDQkZBMTU5MjU0Njc5NjI1Mzg3OThERjMxNkQ3NTU1N0Y4QTc5QUM5NzFFCitENzgwNTM4NQorQjI3MTkzMUE0NDdCOEE2QjBGODlCRDI2RDM4QgorQ0JGMjNCNEM3QUI4OTVDOTI0MDQ4QTY0ODY5NUU2Rjc3MEY2Qjk0REJEMzVDODgyOTY5RUJDMzQ1QjgwQTg2MjNDMTE2MDI4QUI5NzZGNzE0MTQ2MDQyQTQxNDgxNjVBQ0M3QkYxODY4NUI2OUE5MDNFNDUzQjUyRDRFMEM4NThGMDE5NkZGQjE5OEVGOTE2RUMwN0M1MTQzQUI1OUQ0QzNEQ0IwMzRCMUE3MjAyMUVGMzA4MkE0RDJENDVDMUU5NTlCNEVCMjNGMDg4ODUzRTZBRkVFRkMyM0FGQworOEQ0RDNEMUIKK0E4OTUwRjFFNkRBOEIwNTc5OUE5OTM4RUYyCiszNkY0MTQ3QzlFRUU2OTE0NjNGREJDNjlFMUUyQzRGQjYwNkZDMDQ4QUZGQjlEOEM5QTc3MzMxODQyQkQ4MDUxMjJCRUFBMzUyNTk2QUU4MTY3N0QxRDgzQzhEREZDQzlGMkNGNTYzQzFDQzI4MThDQjcwMDIwM0U5N0QwMjUxMDM3Qjc1MEE4QTI4Qzk4QTY0NEZEMEFCNzBFRkFEQjI2MzNGMzNFNDFDMDQ2RDM3MEEzCis3RUUyMDA4RQorOTU0M0VFNEU0Q0JBNTVGOTUxODI2Qjc3ODYKK0YzNUQyMUUzOUM3NkVCRTUxNTY3NjgwMDAyQjIzNjZEQTRDNUZFNUU1M0NFRUQwOUQ4NjE4ODU3MkNDNDRFMkUzQkY4OENBREUyMUIxRTg2OThCQzE2MTJFOUU3MjQ2MDc0QUIxOTkzRTg2RDUzQzM5QTFDOUUwMUU0OEJDRTAxMEE1QUJFNUMwOTg4NUE4QjJGRDUyRTIxNzgzOTAxNjYzNjc1NTM3NDQ2OTgyMUNDNzc2RDhDODkKKzI1OTY5NDE2CitDRjYyOTAwMTVBMjk1OTlFOUM3OTNBMjU5REFECisyQjk3MEI5RDM2OTdDMkQ2RDhFNDdBOUM0OUYxREU2QUQ3NTlFQzY1MTkxQzIxMTA2MzU3RThBRTJFNzJDREQ4MkExNjBCQkEyODc4MEU0ODMzMDc0MEEwNzI2Qjk3NTc4NjE3ODE3MTE4RkVCQjJEQ0U1MTkxQjc1NDkzNjVEOEM5RDZGNDg1MzZENzQxRTQ1MDRDMzI3NDJFRTc2NzIxODU3Qjg3NUY4RDU0ODVCNjMwM0I5ODZFRjExMDZBQkNDQUM2MDFBMjNGRUE3NDBEN0FFOTY0NTQyM0MxRTY1RjFEQjQ2ODJBMDcxMzNBRTRGNDU0ODU5RDVGRjkKKzQ1OEQKKzVCREVCMkIwMTkxM0I3QTE5MzkwQzYzQUQ1RjExQkU3Mzk1QzUyRjhCMEFCRTQwNDQ5RkYyM0QxQjM2QTQxRjk0MENEMkFEMEFCN0M1RkZDQTE4NTAxOTIwNzlGNDcKK0QzMTRBNzg5Cis2RUE4N0QzQzcwNDAzQzZFQzYxOERGN0YwNDM0CitDOTU5OUQwNUY2RjIwQjNGQkM2RDhCNzk5NTVBMjAxRkQ4QTZCNzBENzAyRDFBNUM4N0JGMzM1QTFEOThFQ0Q5MTU4RkJBN0IzNTIyOTQ2RDNGMTc5MkVFN0FENzgwRDM3MDREMkFDQzNCMTlBMDJFMDJGRDk0MzBDREY2RUMxRUYzNTMxNTg2NjVFMkUyRDQ0RTdGM0ZGODlBRjAwRjY4MUE3NTI1RkMxREY4MjNGNjBEMTA3RUMyMDYwREQ4MEQwRERDQ0I1NDRDM0MxMTJFNTBFNEIyQjIzNworQkY4RkRFODMKKzQxQUJBNzlEOUNERDgzMTNGRkZDODJEMUI5Cis0MjNENDhCQTY1NTc5MEZEMjg3NTQyN0IxRThCNzdGMUY3QTZFMUNCRjc3OEFGOUEyNDRDRUIxRUYxMUQ3RTAwMkNERDYyQzA4OENFMTY4ODJCMEE0NzQ4RTg2OTlEMzE5QURFRkI4Q0RCQkQxNTNDRUQ0QUU5MUE5NEZBOTE1N0JDMEI0Q0E2RDNCNUEyNjU3MERCNTM5MTAzMjYyOTUyCitENUY0MjFEMworOTJDREFEMUFGNTFBMzAyMDQ0NkY3NDUyOUNENworOENBREM0MUQwQUFCODdEMzg2ODY3MUFDNTAyNjQ3NzU1RjU2QzI5ODg4QzBEMDNFNzhGRDQxRDY5QkY4REQ5QUE1Qzc1RkY5MTEyMjZBNTcxOENDMTRGOTgyNUE2RENCMDUxNEMyM0VFMUQxNUU2RkU2MzEzRTM5NTFEQjI0NTJFRjAwQjZEOUMzQjU0Q0FDMDE2RDkwMzk0NDdDMEY4RTM5QkQyNUExQkExQzAwQTMwNjIxNTEyMzgyQzI4NkNGN0ExMDk3MzM4RjM3NTlFODY5MEI3OTYyMkExRkRGRkI3N0MxNDA2OTQ1MjA2NEQxRDk1OUJDQjUwNjI4Cis1NjU2CisyMkQ3ODcxRjREMUQyRkRDOENCRDBFRTFFNDI3NTQ2RDdDN0NCRUVDRTBGMkE4MDE0NUJGRkU4MzA4QzExNUFDMzJGN0QzCitEMzQ5NkUwOQorRTI2REM5ODE4QzgyNEQ2REIxQjhEQzQ2RjAKK0JEM0E1OTU4QTMxNTA5MzMwRUMyRjVGQzdGRUIyNkRDNEYzRUQzRjA1NzNDMkQ0NTc0NkVDNjRENTMwRjlGMEFBMDg3MUFFNzIwRUZDQTk1MjJENTI4M0Y2N0U1MkY2M0JEQzE2NENFQURCRgorMkZGODkzNDUKKzVCQzg3NkVERDUzNDhFOTg0RDBFQ0I4ODIyOEIKK0RCOTRCNDgwOTVDMDY0QzUyNjdEQjk4NzM2QzI5MkQxRUVENUNFODg5QzVDQUFEODVERUFDMUQwMDgzQTNEQURBNzNEQTI4OTlEQkQxNjkyNUM0MDFFM0FERDdCQ0U0MEE3NzhBRDdGREI2REU4MkI3N0Y2ODU1RDNEQzM5NDVGMDc5NkRBOUUxRDI1MTlDOEI2NTM5RjRFRjQyRDUzNjY2ODdBOEYyMEM5QTc0OUU1OUE2RjE4NzVGQkYwNkI1NzU2Rjk0NkYxRjE4MzA2OTE4MTFERjgxNzY4Mjg2NDVEQThBQ0IwMzA5RThDN0FEMzQ0NzBCMkQ4RDMxOAorOTRGNAorMDUyMzhENzJFNTA0MUM0OEZDODlFRTJGNDE2NThFMTFGNEEwQ0VDMTkyOTkyMjU3RkEwMkVCOTM1MzFBNUIKKzM4NjQwQTUwCisyOUEyRkU2Qjk0QzhFMTRBOEJFNUE3QUE5RDQ1Cis4ODlDRDRENjFENjcwNTkxNTA0QzIzQkE5NDRCRkQ3MEQ0NTAyNEU3NkU5MDUwMTFCQjZDNUE4ODk4MEQyQkU3ODZDRDJFQkY1MkYwNjYzMTgwRjYxNkI4MzlFMjNCMkIyQzJFOTc4NzkyRTI5OEMzMzQ5M0Y4MzdBQzQyODA4RDYyNjVFOTY1RjYyMDRCRkM0NEU4MkVCMzk4NTdFNUI4N0M3MDA5NkVGNDlCQjgxNzUyODdDRDg0RUQ2ODg0NDQ2QjhDMDZBQ0ZGQzlCRDE5OUU0RTc0RjAKK0M3MDREMzQzCis2MUM2MThEQjI5ODYxMjI3NEU2MDA1QkVFRgorRjNGQTQ1QTMxMDA0RTAxNTQ1OEU3RkQxQkExMkNCQzUzQzcwMTg2RUI1NzYwQ0QwNDU1MEY1NjI3RDQwNzhCNzc1RDEzQjU4MTVFRTA2NEQ5QzQwRTQwN0NBMzQ3NDY5OEJDNEFBNkNDNjY3RDY1Q0IzMzQxMUVGRTczQTdDODJFREIzQ0VFNzJGN0YKKzhCNTVCRTE5Cis3MkQ4MUNDRjY2RjVGQjM5MEIwRTVEMjI2MUE5Cis4NzA0OEI4RDMyQTVBMjA3MjIzNDkxN0YzRENGQjEwRkZEREM5MjY4MDg2RTNDOTNBRERFM0FFNEJERjVERjAyMDZDNTc4NUVDNDgxOTkzQzFGRTVENUVDMDRCOUEyMzU4RTk0NTc5QTk5QUE2N0ZCNEJEQ0JGQTAyMDBFRTA5RTNENUQ3MjUzMEQ4Q0E4RUNDNzhDOTFBRjNFQ0YyOTY3QTc3QjAyQUEyNzcxOTBBNzVDN0IzRTFCOTlBRDlGQzk4QUI3NDQwMDBCMThEMTkzODEyRTc4Nzk0QzZDRTA5MzU2RkM4NEFEQzUxMDI3CiszNzcxRTUwNgorMDMxMENGNjY0OTAzMkMzQUNBQ0QwMDE5QjEKKzBCRjgwMDA0MEMxMjg4OTA4QjZBNTNCMjM2QjBCQ0FGQjYwNjk2QTNDRTA3Q0JCQTBGMEY1MEU5QTVFODI3MTg4NTY0MDUzRUIxMjJDRTRGQUZEMjUxNDU0MzBBNTQ5QzcwNTNEQUJBNDNCRDlENjZGRTg0MkE4OEVEMTkxNUJFMUQ3MTcwNDZGNDYwMERDNERDQjIzOTZGRThDRTEzNjc5NjY4MjgyOTA4OTA3QQorN0VFRDVCNUQKKzE0Q0RGNTdGQTM0MDVERUYxQjUxN0FCRjNGMUUKKzk3M0U4QjRGOTlEODY4NzEwRDZCNUM0QTY1MzJDRDlCQTM3ODI0RDJDNjE4RjE1NzY0NzA3RkMyQjZFN0JEMjg1OEY4QTYwREEzODcwMkU0NTUxQkEyQUVBREY1NUI4NzYxMUZDQkIxOEJDQzk0Q0U2MzcxQTk3REVBNTY2NTgyMTREMzM3OTkzRENFNjE2NDdFMzU2RkVDQkEyQkVCMjg5NEM0NEQ0QTg1MzdERUY0MEQwNTVCQTM1RjNDNzFDNTA0OTc0RUY2QzdFMzE4NkY4NUQxNjUzRjVBRkUzMUVDODU0RkE2RUVFQzg3OTU4NUQ0QkU4QzcxCis4RjM5NkVDNQorMzg4QTNGNUZERkQ5MUUzNTZBMEU2NkE0NUQKK0JDMUJFRTJBQzcxNjFFNzY0MkJFODY2MzU4NzVEQkU1QUQ0MTcyRjQ3ODZBNEYyODJFQTFFNTE2MjNGNUU5NkJFMDg5OUYxNzE0RjI5MzZBN0Y5NTEwQTk2ODUyOUExQUExOEUzNEJGRDUyMDEyQTQ5QTJDNkZDNEEwQTI4RTRCNzM1QkM5QkMyRAorRThCMDdDQ0IKKzA1N0VCRTlBNzc1NzM5OEFEMUQxNTE1OTY0CitCNEQxM0FDRDVCQUYyRTA2QUFDNjIzQjA2QTcyMUEwMzlCRjcxN0YyOTBBNEUzRjM3MDAwRUM3RDk0Nzk0NzkxNEE0OTRENTA0ODBENjM0RkFCQUYzQUM3MjU1OUE1Njg5NEYxMjc3QjNGQzBBMTg2RjE2RTRFRUIzMzhDRjM5MTQ2NjEwNDEyNjNFQjRFREM2MEZGMThBREIyQjVDOUNBNTQ4MUI4MEEzMkFBRkU1MTg3MTU4MjQ1RTYzOEJBNDZBREM0CitBQjFFQzFEOAorRUFDRjdERDhGNDlENzVCQUNEQzAwNUNFMzgKK0JEMUZBNzM1MDRBN0FBQzk0QzdFMURGQzNBMjVFRkRCQjk4RkUwNTA5Q0M0RUJFMTVGRTYwRDI4RkMwRkE1QzhCMERGRTMxOTE3REJDNzU0RTlDNzNFNTdBM0Y5MTI1RDI3NjQ2RTE1MTdCMkNDRjE1OEFDMERBMTZGODNBNjk2M0RCRDU2QzU1RTczRTkxREMzNEQwN0FFMTVEMjM3REU4RDZEMzM5Q0U1Q0ZEM0NGMDIKKzUzOTA3NDk5CitENDBBNDlFQjhDOEVDNDk1N0ZDNjVCRDI1RDUxCisyODNEMTUzREZFQjZGMzBENzc3MDc2MjQzMTk1OTZCODA3REY2NkIwQ0ZGMDA3ODNDMzNFOTJGNTkwMDBFRUQ5QkM2QzIwOTkyOEJDQ0RERkY1QjI5MEY0RUMxRjNBNDA1OTgzRTZBOUJFNzY2Q0VCOURGMUE0MjlGRDFFRTk4NTQyRUNCRkE3NzIwRTkxMEZBOTBFREE2RkFFRTAwQjUzQjI0RUQ0RUQ1RUQxNkNENEMzODc5Q0FEOEY5MDlENEM1RTQxMTEwRjlDOTczOTVGQzMxMkE4ODY2RUI1QTQzOUE5OUFCODYwQTdDRUVDNjgwMDY4RjJFMzUyRkEKK0U3NDgKKzkzMzNFMDZFNUVFQzNEREQ2MzMxODg3MTg0Q0UKK0Q5MjI4ODE0Cis1NDdEMTJBMUVGMDQ0MDAyMzM0ODgwMEREMTNDCiswNDAyMUZDOTVBRjE5MkI3MERFNTJDQjc0ODdFQUE2QjUzNTM4ODk0RTgzNjc4MEQ0N0RGRDAyODZFMTM4NDk3MkNBREQ2RUMwN0U2MTkwNDQ0NkM5NzU3QTZDOTVEQTY3NkQ0Rjk3MEQ4OEZBREQ4MTY4QkM1MjVBNENDMjlDMDZDMUIzNjY1NEQ0Qzk0NzZEN0VFQ0YxODVGMzAyMTU5RjVCNDRFNjc1M0I4M0I5RkUzOTA2RUQyNzgyODZCQzM1OTlFOTdERjAwRkVFNEFCMjdDNzgzNUU5QzY0REJGQTk0ODNCOTBFQ0YxM0FGM0YxMjk5ODE2RERBMzYKKzNEN0IKKzE4OUVEOEZGCitBOTEzQzdEMEJCQ0M3RUJDNzE3MjkzNEUyQQorMEM2NDNCQ0YwRjIzMzVFQzdEOURFRDZDMkJCQzg4NjFBRDUxM0Q0NTYyOEZFQURGODlEOEM0RDYwNTFCMUNFOUIwNTBDMDBDODVBMDQzOTQ3MkI3RDUxQzRENzZCOTc4OEFGQUNEMTk2RkJCM0E5NkZDMzQ2RDM3NkYxNUE3Cis3ODlFMTYxRgorQkU2QzM4NERGMkRGMzhGQ0Y4RDVFOEZDMTMKKzNCMkREOTEyQThENDZDN0UwNjNBREU4MTBFNzcwMEIzRTFDQ0FDNDExODhFCitBMTQyOUM1RQorOTY0MUZEMzg5NDk5RDA4OURFMzlBNTI3RUU0MAorQkU5Q0RFMjU2MEMwNzYzMgorNzkwMTgxMDAKKzQ3RTU4NjhBRUYxNEIyNjVENkJENDFEOEExOThCOUJDNTJBQkI0NThFNTk2MUNDQzRGNDk4NDIzMjI2RURGQzdEQjkzCiswM0FFRjFBOTI1N0QwMDZDMDQ4NTc3MjE5NjBDRUE1NEVERjI3MUYxMjhBRjJDNTJDMDZBMTYwNkU5QjRENjhCOEU3MDAwMzVEOTE3Cis4ODAzQTQ5OUVGNTVENEQ4NzZCMjBCQTBBOUE5Mzk0REI2ODdEMjREM0FGN0U0Mjg0MUM4REMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDUgcHV0CitkdXAgMyAvQzAwNDcgcHV0CitkdXAgNCAvQzAwNzIgcHV0CitkdXAgNSAvQzAxMDEgcHV0CitkdXAgNiAvQzAxMDIgcHV0CitkdXAgNyAvQzAxMTAgcHV0CitkdXAgOCAvQzAxMTEgcHV0CitkdXAgOSAvQzAxMTIgcHV0CitkdXAgMTAgL0MwMTE0IHB1dAorZHVwIDExIC9DMDExNiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwNyA3NTUgNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVEMkZGMUE5RDRDN0JDRjU1RkRDMUY5MUIyMTc3MzIwOUZDCis4ODUyQzM4ODVBNjEyQkE3MzhFQTY2RTMKKzA1QTgwNDZFQTRGOTE2MUMzMAorMjM0RTkzNjIKKzFGOUZDNjdBMkQ5QTZFRTFBNzRERjQ0MzFECitCM0U4MTcxRkFDOUJDMTEyMDBFNUFBNTNGRTVDQTIxMEU4QTdCRjQ1NDVFOENFCitBNEIwNUVCRQorMEM4RDk3RjY0NkQ3MkIxMDA3NDYyNUI1ODYKKzNCQjA5RjJENUNDMjE3NTA1NkJFQTBBM0NDNTJCODY2M0I5Q0ExRkQ3NUM5RURDOThEMTEKKzE2OEVFQkQ2Cis1OTQ4ODUyRjAwMUZCNkQwNTc1QTUwNjcyM0E4CitGNzI2QkUxQjVBOTg0OEE3NTQzQkY1OTM2N0ExMzU4RTVGRThDQjlERUJFNDNCN0RFOUQ3MTU3NUREODY4QUJCN0E2QkQxN0UxMTlCNTg5OUZFMTAyNzAzQUYxMEIxNjc5REFBOTVEOUNFRjhCRjgyN0M5MzZCNkE4RTFFOUUyRTdFN0M2NDA5NEFDNTYyRTVDMUQ2MTMzNjgwQTM4NEUzMkFCQjhGNkVBNUY2Q0M3NkRCRjExMTFCM0YzNkEwMjRDQTFCNkE2RUQwMkVDNTBDNDgyMkFDNTI5NDBGNjE0NzRBMEQ2NDQ1MkI2Mzk1CiszQTgyQzZDNAorNUQ1OUVCRDZGMzBGQTk5OTcxOEFGRjFDODAKKzQ2ODU1MUU4ODYyMzM2MEVDQzJEMkE3NjI1QkUzMTAxNEZFNDc1MUVFMTM0QTBEMTk5QkJFNzg4MjczOTQzQzFBMUExREIyMDQ3NDE2MEFERUYwRDAyQTE0MzQ3RUMzODY5MzIyRDJEOTY0REU5MjMyQkI3MDBCNDI4MDNDMkI3Q0MzMDA4OUEyQTgwMjY1MjFCNkU2N0QyRjk4MjdGQzI1QTM2NzQwNEUyMTZCOTU4QkY5NTkwNzAKKzI1MTFBQkY4Cis1RDhFMEU1NjM3MTE2RjUyOTk1N0ZFQTQ4OQorNjAzQTlEMjM3OTgxNDgyNzYzOEUzMDc2ODIyOTBCQkY1NDkwMjQ1MzQzMTNERDNFMUZFRTk4RkU1OTJCRjk5NDJDNDUwRkVGODI5NURGRDNBODdGRDhEQjI0MjE1MkREQzVFNEY2NkNGNzk0NkM3QjJDRTI3QzAxOEZDNkVCN0UyNTA4MDA3OTI4NTY3RkFGOUE5QUI5RERDQTE3N0NGNEE3MzY4NTU4MDEzOUY1RTVCRUZFOTMwMkFBCiswMEM5OEE1NgorQjFFMTc0NTBGMkQ4ODQ3NzgyMEY2N0E5OTcwMgorMzgyNzAxQ0RDQ0NGMEUxQkM1Q0JEMTlDMTc0OEI1MjRERDQ5NDE0MUQxNzk4QjBEMDdENzQzQUQxOUY4REU1Q0M1MkM2QjA0NzZFREVDQzNCQ0Y2NDJCRjVCMEI2Nzk4ODQyNDdGNzgwMUFGQTJGMzI1QkIwREM0NTVDQTc0M0I3NzFCQ0E4M0E3RUVDOERDNTA0MzI0RDk5MEMwOEMyOEVCRDJBM0M2ODIxN0ZFMUZEMkJFRURBNzcyRDMzRDkyOEI4QzA0MzdDNjg1RDgKKzhBMEUwOTQzCisxOTI4RjQ0RkM3QzIwRjFCNTI4NURGOEYwQgorMUQzNDJGQTRCOEQxRDU2NkFGOTc4QjEyN0IxRDI0ODJEMDA5MjZEQTU3NTdEMzkzRkZFQzE2MjdBQkE4RUI2QjJEMUM2NDJCM0YzOEE3NjNDNEIyMjM0M0YxMzkyMkMzNEE0MzVDM0QyMzEyM0UzMzcyODlFMzE0QTBDRTc4ODU3QkEwOEFBNkFBQTYKK0ExQkFDQTM1Cis0NDEwNUMzNEZEOTdGRjNGNDlGQ0E4RTUwRjkxCitBNzEwRDQ1QjFFOTVCNkUxRTkzRUUzQzIzRTYzOTQ4NTQ2N0YwRTQ4NTY5QzE0OTA2NzBGNzEwRTdBMEE4NzQ3MERDN0Q5RDZEMjdGNjM1REZCOTQzRTAzNEFCRjNGNDExMTE0NUY1NUI5QUE1NjVBRDJGMjUyREQ2MDBCNjAzRTY4QzRFRkFEM0NFRkY1OEE4MjAzNUIyODNBMENCOTQ0NDE3NTM2NkZDNjNDNDRDOTg0RkM3NTIxNEEzNUQzMThEREMyNzBCOTNGMzRBOUVENDA2RDhDMTNGMTNGNjQ3MUY2CiswODg5RjcwRAorMjFFRkM4NUU1MjlFQTRBRURBN0ZDREM1QkYKK0ZDQzVDRTlDRDUzRTBEOUIyMzI5RUNDODJBQjc5Njg2NTQyMzc3OEUyMzM3QTQwODU3QjlDMzgwNjNEOTVFMEEzQ0UxQjg1NjA2NjhEODlGNkIzRUU4QjI3RjNBRDQ2MjA3OTIzRTZDRTI4RDBBNkNGQUU4Q0NEMDNDOTc4MkEwODQ0NzI2NUQzRUVEMTE0OTdFMjRBNjc3QURGNTA4RkRDRTMwMzM2NDA4RENEMTMwMTIKK0M4RURFMDA2CitGMjg5RkY4ODdFODU4MUQzMzgzNDNFMjM2OAorNjkxNzU3MjhCRDdFRDhEQUMwNTg1MDMxRjFCNTMwMUEzOEVFMzYwNkFFMzlFMTdBQ0NCMzEyRjJGMThEOTBENkI1ODQ2QTFFRDY0OEQxMTNGRkIxODY1OEEzRTYyQkQ0M0NGM0YwOEYzNTRBNUI2NjQ1QjY0RjA5NTE4NERFNzBGRjk3Njk3OQorRjJCQjM1MzcKKzk5QjMwQjBCN0VGRTE1MDQwQUVENTU4NDM5RDkKKzcwOTQ4NjRFRDJFMTM3RDcKKzdCQjYzNjAzCisxRTM1OEIwN0RENkNCM0M3RENCRUFFQTc4Mjc1NUZFQ0EwQkY3MDc1QjUwQTIyNDREQzhGMjk3N0YxQTdGNEM0RTBBNAorODlDMzE1NUM0ODNFREM0NUJENzQ0NkYwMDRDRjlGNzI4NUVFQUIxODQyQzQ4NUMyMTBCMkM0NDYwM0E1RUU3QkE2RDZGNDVGNDA2NgorMENDMTUyRDlERTI2NEUzNUQ4RjUwMjVBRTNFRUFGMjM4RDI4MTc0REFDMkZGMzE1NTRDRDY0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hpCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoaQorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGkgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY1IHB1dAorZHVwIDIgL0MwMDc2IHB1dAorZHVwIDMgL0MwMDk3IHB1dAorZHVwIDQgL0MwMDk5IHB1dAorZHVwIDUgL0MwMTAwIHB1dAorZHVwIDYgL0MwMTAxIHB1dAorZHVwIDcgL0MwMTA0IHB1dAorZHVwIDggL0MwMTA1IHB1dAorZHVwIDkgL0MwMTA4IHB1dAorZHVwIDEwIC9DMDEwOSBwdXQKK2R1cCAxMSAvQzAxMTEgcHV0CitkdXAgMTIgL0MwMTEyIHB1dAorZHVwIDEzIC9DMDExNCBwdXQKK2R1cCAxNCAvQzAxMTUgcHV0CitkdXAgMTUgL0MwMTE2IHB1dAorZHVwIDE2IC9DMDExNyBwdXQKK2R1cCAxNyAvQzAxMTggcHV0CitkdXAgMTggL0MwMTIyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xNDQgLTIyNyA3NTcgNzI4XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVEOUE0MzI3REEzOUNCMkRGRDc0ODhEQzMwQTgzQkQ2NTM2Cis1NDAwMTUxREE5ODI1RkZGMzc5MjEwNjM3Qjk5Cis5MzUwNzRCNTQ1QzFBNUMxM0ZGQUVBQ0MxMzQ4MzA3RjE3NEY4OTVENzZCQ0JGNzk2NUI3RENCNUIwODJGMDY5REUzODZENzhEMDY5RkI5M0RENUNENEJGQTBEQUFERkM4NjgyQzAyNTEyQTcwREJEQjMxQTQ5Njc3QzdBOEZDQzY3RTM0RTEzQzUzM0I0MjUzRjI3NkQ2NTkyMUVCMTBGRjczODkwQjgxRjAzRjhCREU3OUVCNEQxMTFFQzIzRTU2NUYzN0ZENTc3MzY4QkRCOEU1OEQzNjVFOTEzOUI4RTEyQTEKK0E3QTRBNThBCitGMzg0QTMwQjNFMzc2N0IyNDMxQTlENzY5QworNjk5QjlDREVBODE5OERBQzAwOEFDODIyODE5NEM5MDFBOUJGMDJERDVEQ0MyNTlFNjM1M0QxMTNBOUFEQjY0RTk1Qzg5MjBFMkZCM0UwQzUxNDVFQkY1MEM2OTZCQTJFNTMxNDZERTY3ODZBNDcwMUMzQzMxNTNCMjJGOTZFQTcyQjU4MTExQzdEMzEzMjk5N0FCQjM5NDg2OTI2QUIwQ0FBNTY4NTAxMTM2QkVBRTdEMkYwNDQxQkExMDk4MAorOUEwNzEwNTgKKzBCNjhCMEFBMTYyN0ExMjRDQ0Y3MjcwRDIyRUYKK0EyMzBDMjYxNTA2OTgzNjcwMzJCQzYyMUYzODhFMjZENjQwN0QxODc3OUE1MEJCMUNDNENCOTg4MUNBMTBGODVFMTg2QTcxNTU4QjJDOUFENjkyOTQ5RkFGNDI3Q0UzRTAzNTA4MDU5Mjg3NjIyMDIxMDk0MDAzMEZBQzM2NEFERTZCNkU5RjE5NDYzM0U3Qjg5QUZGOUZFODA5QzU4OEU3M0NFRDU0NDlCQzUyQUM0QTQ4MUVGQ0M5MDY0ODlCQzUzNDc1QUE1M0ExODUzQUNBMjUwNUZENzA2OEU3RUE1MEVGMzBBMkQ1ODMzQTY1QkQwM0JGRjE1MzgxMAorOEVDMQorRUQ2OUVGODU0N0NEMDdCM0VCN0NGQTZBQjgKK0JFMDkxNTJECis1MUY2ODkyNjk4QUJEQzMzMzQwOTFCMDVBMworQkFBNDlGQ0E2N0MxRkE3REY4MzQyODYyRjYxM0M1M0M0REEzMEU1MEFBQTkzMDk5NTNGQTQ2NjFFMTBGQjhBN0U4NzUxODU3MzJCRkUxQ0FENEUzNjU0MzdGMzcxM0REOEU3NThDRTg3NDJBOUY1Mjc2RUQzNzM3RkQxNjQzNDEwNTRBNzg3RDNDQzAyOTgzQkJFNTc3QzNEQkY5Q0UzOTdEQTRCODNGNDE0ODYyMjI1NjY3QTMyNUM0MTY3REY0CiswNUM5OEU2QgorNzE3M0RCMjNGNDhDMzJGQkZDNDgyMEJCMDg0OQorMEU4OTY4Q0Q3N0Q0NUNCRUI4N0JCQTM5QTY5MUE0RjBERjE3MkIxQUYzNDUxMzk0RjQ0NUQwQzNGMDk3QzgwNEZBNTlGQTA0MzYyN0NGNzdFMzcxNjIxQkJFMzRDODQzQjMxMjFGMEVCNEU5RDU3RjkxRUE4QjczMjM1NjM5NjE1QUNGMTBFODBFOTk1NDk1QTUwMEJGMzc3RUNFOEJDQUQ0NjcyN0RDQkVCNDJBQUQ4ODQzQUU3RjEwNjRDRThCQTAzQUU1RDc4RjIyNDg3QUNDMjYxMjUwRDJDOUFEMzg1MjYyODg0M0RGMzg4OEEyMDM3MEU5RDM3OUM5CiswMjEzCis3MTZCMjUzRDE5OTNFQUIzMERCRjM4NzMwMEVBMTk3QjJBN0MzMTk0NkEwRDA4NTE2NjE3REJGMUI4RkU1OTM1QUVDODcxN0Y1Q0UyNEY0NDEyNzZCMjU3NDhCRDM3QzAKK0FERkQ5NkU3CitDNzExMjZCMjUxN0QxQTg4MkUyODY2NzlBRTVGCis4MDBDNEQ2ODcyNkU0NzM0MkM1NzNFNEI2OTlEOEE4MjQwMDY2MEY2NDE0MTM2NEM1NTAxOTI3M0FBNDE5ODgwQjVCMkI5NzFCNENDMjU2M0Y5NTdEN0I2ODRFRTNBREU2OTJGMUFEMTE5Mjc5Q0Y3RkFFMjM1MzVGQTIxMjA5M0Y5RUUyODZFQUM4MTAzRjA3ODZBQkYxRUYwNEM4OUI5MkRGRjYyNjJGNDdCN0JFODQyNzA3M0ZFM0Q2MDRFRUFBQzYyNkZGQzM1CitGQzU0RTY3RgorOEFBRDZEMUNBMDhFMjZBOUFFM0UyQjY1RDc4NworMzJDNDBGMUYzM0I3MEI0MDA4REM3QTlEODJGNjc5NzRGMEVDNzU1RDc1OTMyNURBOUJBODE0N0U2MURCNkVBRDQ2MTZDMDE3NjU5MTMzN0YzOUNCM0Q3QjU3QzlEOEZFRTU3OEExOUQ3RkE5OUIyQzAyODZDRjkwMUUwNDRFNzg1NjkwRkM5MjhFM0ZBRDI4RjcwQTYzOTQwNkYzNzM3N0FBMTJENDdDODJBMUNBQTE2REY2NDA2OTVCRUI2NTE3MDEzQzlCNzFDOUZENEQwN0QxMTY4MjVCMzcxRDEzOUE3MjZCNDU3M0NCRDg3REI1NjJDMzQwRjc1RDIxCitGQzI2CiszMEZGODczQTc3OEVCQTFBNzAxRkJBMTgxNkRERTJBOEFGQzBFMkFCMERGRDE0RTQ3NTFBMkUKK0U1QjJDRDMxCisyRTU1OTIzODc4MEU3Q0YzNUU1RjMzODIxMTYyCiszQ0I1RDZBNTM3QzA1NkY1MEUwNjgxNUU0NTRDN0FBQzVGN0JDRkYwMjgyMjE4NTdBRUY0N0ZBM0UzMkYwMjUzQTQ0Mjk0Rjk3RTk2OUMxQzM4OUFCMEIwRjkzNDZGMDBGNjk5NEVEMTg4ODhERDdCMUExNzhENjAzOEYyOTg1OTM5RDI4RkNBODdCOTJGM0IzMjg0NDk0RTQ2MzIzMjIxREQwM0VDNTBFQjI2NTk1RDQ3QjlDMTJFNkQ2MjBFMzYwMTY2NTRDREYyMEIyRDZGNjA0MDE5NkNBNDdGNkI4MEVDNUQwN0EwM0Y5RDBCNTlFOAorRkExMUM4ODMKKzNFNTgwNzEzODA2OURGMEY3NTk4ODhDNzYxMUIKKzYwMDdCQ0VFNEIyQzNDMjY5QTJGQjIxODVCRkUxNEM5QjdFN0U0MTdCN0Y0QjdGNDBDNDgzRTcyMTE5RDY4MzE0QjUzMzNFM0Y1QUEwQUI3MkM4MDM1RUYxRTY0QUYzQTZGNkMzMjNGMzAwRkMzM0U1MTk3ODQyNTMxMzdDRjk0OUNGODU1Q0Q5RDhEMThFQUEyQzY5NTJBMEI5MjhFNTdBQTAxRjFBQTBBQ0ZFOEI5REVBRTVDN0YzNTNFNUY4MzBCRUJFRUY4QzUKK0NEQ0MxRTdDCis0MjRDRjQzQTA0MUYwRkREMDJEQkZDOEI5RkM1Cis2NDEwNEExMjk1RTJCQzFFREY4NTc2RDA1NTRCNTI1RUNDRTU3RDFEQjY3QUYwN0VCQTg5NjAwQkE1QUI3MUE5NkIwQTVBN0U0Rjc3OTlDMDcwRDI2OTJDNzAzNDc0NTZBQ0I2MEEyODg5RENFNzEzN0E1Q0NERkY0OURENzE2Qzg3REZDRjk0NEUyM0Q1RUQ4N0JBQzZFRDZCMTUyRkU3MjY3ODYxODJGRjYxQTFBMTlEMUZGQzVCOTE1NERBREZFMTNDQjZCNTk5NTk2QUM5NkM3MjREMTcwMTAzQjdBRTk0NzFDQjg2ODI3MENGNTVCQjhFQ0YzQzRDOTkKK0ZGRDMKKzRERTlDODhFNUYzQjA2REQ3ODYxMzcxQjBGQjdDNTVGMzVEMDUxRjI1OTE4QjA0NTEzOTk4RkI3NjdBOUU5RkEwRTI4RkVBRjAzNzgzMkNGMTlGRDk5NDc1RjZDNTM5NEVGMzQwNTI3OUEwMzdGNjBEQjY4ODEyMDk5MDRBQUExMkM4QzZEQjM1MTk5Qjg5OERFQUJCNAorQzQ5MThENjQKK0EyOTg0NUFGNkJBMkJGN0YxQzI1QUVGOTIzCitFNjc2MDkzNTY1MUFEQjNFODczMjk5NzQ1NUFCMzJCODRENzcxN0MyRDE0QTFFMzk1NTIzOEJBNEUwN0M3MUI3ODU2RUJGQUUyNzI2RUU3QUJFRTJBRkEyOEQ5Q0M1RTlBMkQ1MjExQUVGM0QwRkMyNEUyM0NCQTdDNjQ5NjZDNkUxRDc3QTQ3MzlGNDM3NDZEOTgxNEI3RTY0RjE0MkZFRkE1RDc1RUNBQzM0OEM4RDQ2NTBGODQ1RUM3MzJBCis3NEM2RkFGQQorNENFOEZBRUNCNjZDQUQyMzY0ODMyMjdDNjQ5OQorREM0RTZERTE4QThFOUE2RjJGMEQ4M0Q1QUM4MkVFRDI3QzY5QzM1QTkwRUM1RDU0RTVGQkVCMjQwRjk4REFDOEYyNjQ0RkIxM0Y4MzEzODU4MTk2RDZCQjMwNkRGREVCMDc1OThGODQzNUM3MEZDNjk1NjE4MjhENzRCQzNBMUE4NjY3MTQ2Q0JCMkM5RjI2QUQ5RkRFQUIyQkIyQkREQUI4MEI2OTA1MkY3RTA1MzFDMzU5RjM1OUU0RjdDNERCQkI4RDY2OERFQ0IwMDUzRjlFMEI3QTdGNUMzNTEzOEVDNkQ1QUQ1NjcxMjg5QTk2NDdCRkM0OTYzRDJBCitFOUJFCitGMjNCNTZGRjIwMkUwODUzNzFCOTREQUM2REY1QjIyRTNDQzI3QkFBRUJEQkQ0Qjc5MTE4QUZDQzgzMDI5RDdDMDE4MkM4NDNBQTg3RjRGRDVGRTAKKzE5QzUyOERDCis1NjlBMTAwOTM4MTg2NDc0QkMzQzM0QUM5NworQzY2QzIxRjRCREEwRDc5MjUxQUEwOUQ2RjgzMzQwQjdDMjZFOTg1MkQ2QTdBNDk3QTg5NzVCNDU2REEyODE0Q0I1RTlFRTA1MDZDQUYwOUQ4NDEzNkM0RTA3Qzk1ODExNUI1NTU1RjRFQzg5QUIwMkJEQTQxMjdFMzg0NDlCNjEwNzk0RDlFNUEyOTU1RkIzOUI5Q0NBQjMzNkYwRkVFRUJBQ0Y2NDg4QjEwMENBRjc2OTY2REUKKzU4RUQ5REFBCisyMjRERTU3ODQ4MzlCQjMyNjhDM0Y2QTAzMDRDCitDNDNCN0Y1NjE3OTEyNTQzQUZFOUNBMEE3QzIzNEY1OENGQjMxQ0UxNDU2MjhEMEIyMUM0QTk3Q0MyOUNDODc5N0FDOEEzNTQ4MTYzRkYyNUI0NkUzRkI3NDlGQzcwODNFNkY3NEM5RTFBQkY3QUFBMTMwMTFFNEM3QjkwRDA1NjcyNUJDRDdDMjgwRTI2RENFRUZERTVBREZFOEI4OEJDMzc5RUFDRUI4RTkyQTRBNjhFRjFEQUQ1NUM5Q0YzMERERUEyQTZCRkVEOTJCOTQzNzU0RDE0MEEyNzZFNTNBMTQzMzBBNzZGMEEyQgorNjYwQTMxNDUKKzdDOEFGQkNGMDVBMUNEQjk4REZDMkI5ODRCCis5OUE2Q0E3RTgyRTU3OTQ4QTdEMDNENDVFRTY4NTNFRTJEMzY1MzZCMjk4RjAzNUY5QjI3MUI3NkRDMUUzNzMxMDEwQjYzMkU1M0Q4NzVDM0E2MUVFRUU2NUFENzE1NjBFOTdGOTI5NjA3RDcxREM1RTBFMDkyRUZBOTYzQjBDMUQ1RDBFNjg1QjY2MTI5OUY4QjZBNjM4RjBGNEM2QjMwOTVFOERFNEMzNjVCRjAKK0EwMTg1Qjg1CitEMTU2NDI4RDJCMUVBRDYxQkYzNTk4RjlCMzE0CitBNDhCQkFGRjE4OEQwOTc5RUE3N0QxOTY3RDI2QzUzNDdBODJFNDAyMTc5RTFFMEREQzEzMTcyRTYzODVGRkVBOThCMkY0NjlGNDhGNjM0NEE0MzlGODcxNEY0NTUzMjQ1OEIyNTBBODMzNUQ1Q0FFQTA3NDUzRTQ1NjI1NDREQTdDMzUyMzNCQTA0RjI1NzRDMUZFNUExRTEyRDMyNEQwN0JGNUFFMEUzQzMxNTIyMzA4NkQ4ODQ3MEYwNkI4MjAxNjVEMDY2QzgwRjQ0QjMwOEZERTRBRDU2MUUzQkYyMjU1M0Y4OTZFNEI2NkE5MDNBMEJCRkZDQjU5RjIKKzAwRjkKKzI2RjI4QUM0MDBFNjQzMTg5NEEyMEE3MzUzMjc2NDdBMDEzRTlBNURFNTVDM0EKKzQ5ODFGNDFFCitDOUZBNzVFMjg0QTkzRDBBOENGRjQ1RTQxRgorNDY3NTE5NTM0RDQ4OTE2RkZCMjNFRjIyRTdENkNBRDY1OUQzMThBM0U3NjRDMkM1RThBMjZFQzIzMzIyOENEMjFFMEMwMTdFREZBQkM1OEJFRTJBMzk1QUJCM0UzMTE1NTk1MUY1NjgyNTI1NDZDMzgwNjJGNTlBODgzQkM5MjI1QTU1NzM4NjQxRjcwMTE3OEY3OEE3NDk5MzE3Qzg4MTdGMjYxMTIzNzVBRDJCNUMyRjhECis1RkU1NUM2MAorQzhCRjVDQkUzOTZBOEIxMDQwMkY0MkUwNEFENgorNTEwNzRBN0ZGRjI1MkU4OTNCNDE2NkQ1NUExQUVFRDA5OEYzRDA1QkRGODYzNEE0OEE4QzQzQ0FENUE2NTdBM0U2QTk4RENGRENEMUEzREIxQkMzOEQ5NzNDOUIzNzBGQzVGNTY1NjAxMTg3OTQ4MUU4MUVERUI4OUE3RTMwMEQwQzVGQzk1MjY3NzMwMzhGN0IwRkExOEJGNTAwQkZFOTFDQzBGQjMxMjY1REZBNTc2RTE4ODE4MTBCMUU3NDRBNzVBNzk2QTlEQzQ5NTQ1QTY0NDdGQjM0RUI0RURFQkIwQzREQjE3Qzk2NkRDOTIzRUZBQUM2RDA1OEExCis0QTEyCisxMUVBOUY1QUI1QTlBNEJFRTkKK0I1NTdFMUE4Cis2NkM4QzIyNUI3OUFBRUNFOUNDQjQ2NUFFRDU3CitCQzRBREYwNjAxNjQ5MzM3Cis4MENFRDdDQQorRTc2MjMzMjM0MDcxNUY2OUYyQjIyMTY0NkM1MTE3QkRBMDkxRTUzMUJBQ0I2NUJEQTJDNEQ3OUI2OTFDOTA3RkU1RkMKK0Q4MUVGOUEyODZENUJBNEI5RjRCNTMyRTQxMkRBM0Q5NURDOEI4MjkxNDU5NkE4QjdGQzFENTg0QjBCRjc0NjJGMkE0NUY4REFDQTIKKzIzQ0EzM0Q3OTU4Q0MyOTE5OEMyMTZBQUIwQTFGODc3OUM3MzIwMTk5Qzg2N0VGRDhFMTgwMgorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyaSAxMi4wMCAvUFNPd3N0ZHV0Y2hpIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDE3MjUzMjJmMjUzMDI2MGMwMTBlMDEwZjI1MmQyMzI4MmMyMTMwMmEwMTI2MmUzMDAxMTYyNTIxMzEzMzMwMjkyZDI3MDExNzI1MzIzNTJlMzAyYTAxMTk+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MjUzMDI2MmUzMDJjMjEyZDIzMjU+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDA4MGE+IDkzNDYgMTMzMDAgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyODAgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI4MCA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjgwIDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI4MCAzIDcxMzMgMzIgcword3N0OmR1dGNoMTIgU0YKKzwxYzI4MjU+IDEyNzEgMTQzMSAwIDE2MzEgLTEgcworPDAwMzEyOTJjMmYyYjI1MzEzMjAwMTI+IDE2MzEgMTQzMSAyIDI2MTAgMCBzCis8MmUzMDI1MDAwZT4gMjYwMiAxNDMxIDEgMzEyMCAwIHMKKzwxYzE2MDAwZTE5MTQwMDFiMzIzMDI1MjEyYzAwMzIyNTMxMzIwMDIzMmUyYzJjMjEyZDI0MDAyYjI5MmQyNTAwMzUyZTMzMmIyNDAwMmIyZTJlMmEwMDMxMmUyYzI1MzIyODI5MmQyNzAwMmIyOTJhMjUwMDMyMjgyOTMxMGM+IDMxMDAgMTQzMSAxMCA5MTQ3IDAgcworPDAyPiAxMzk4IDE3NzggMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDMwODA5MGIwMzA3MDUwYjA5MDUwYTA2MDMwNzA1MGIwOTA1MGEwNjAwMDIwYjAwPiAxNTA0IDE3NzggMyAzNjkyIDAgcword3N0OmR1dGNoMTIgU0YKKzwxMjE4MWExMTIwMWIxYzFhMTEwZTE2MDA+IDM2OTIgMTc3OCAxIDUzOTUgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMjA0PiA1Mzk1IDE3NzggMCA1NzM3IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDA+IDU3MzcgMTc3OCAxIDU3OTAgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwZDA2MGEwYjBmMDYwNzBiMGUwZj4gNTc5MCAxNzc4IDAgNjc0OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDEzMjUzMDI1PiAxMjcxIDIxMjQgMCAxNzM2IC0xIHMKKzwwMDIxMzAyNTAwMzEyZTJjMjUwMDJlMjYwMDMyMjgyNTAwMzIyNTMxMzIwMDMxMmYyNTIzMjkyNjI5MjMwMDIzMmUyYzJjMjEyZDI0MDAyYjI5MmQyNTAwMmUyZjMyMjkyZTJkMzEwMDIxMmYyZjJiMjkyMzIxMjIyYjI1MDAzMjJlMDAyMTAwMTIxODFhMTEyMDFiMWMxYTExMGUxNj4gMTczNiAyMTI0IDEzIDk1MzEgMCBzCis8MzIyNTMxMzIwNT4gMTI3MSAyMzY5IDAgMTY0OCAtMSBzCis8MDQyMT4gMTU4OSAyNzE2IDAgMTg3MSAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMTAxMDI+IDIwMzMgMjcxNiAwIDI0NjcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzMzMxMjU+IDMxNzcgMjcxNiAwIDM0NzkgLTEgcworPDAwMzIyODI1MDAwZT4gMzQ3OSAyNzE2IDIgNDAxNCAwIHMKKzwxYzE2MDAwZT4gMzk5NCAyNzE2IDEgNDUzOCAwIHMKKzwyNDIxMmYzMjIxMzIyOTJlMmQwMDE1PiA0NTM0IDI3MTYgMSA1NTgxIDAgcworPDIxMzYyNTMwMDAyZDMzMmMyMjI1MzAwMDIxMjEyYj4gNTU4NSAyNzE2IDIgNzAyNiAwIHMKKzwwMDMyMmUwMDI1MmQyMzIxMmYzMTMzMmIyMTMyMjUwMDJmMjEyMzJhPiA3MDI2IDI3MTYgMyA4ODI1IDAgcworPDM4PiA4ODI1IDI3MTYgMCA4ODk1IC0xIHMKKzwyNTMyMzEwNT4gMzE3NyAyOTYxIDAgMzQ4NSAtMSBzCis8MDAxYjJmMjUyMzI5MjYzNjI5MmQyNzAwMDkwMDJlMzAwMDBhMDAzNTI5MmIyYjAwMzYyOTI1MmIyNDAwMGU+IDM0ODUgMjk2MSA3IDYxNjMgMCBzCis8MGUxNTA5MDYwYTAzMDAyMTJkMjQwMDBiMDAzNTI5MmIyYjAwMzYyOTI1MmIyNDAwMGU+IDYxNTkgMjk2MSA1IDg0NDEgMCBzCis8MGUxNTBiMDU+IDg0MzcgMjk2MSAwIDg4OTUgLTEgcworPDFlMTAyNTI2MjEzMzJiMzIwYz4gMzE3NyAzMjA2IDAgMzk5OCAtMSBzCis8MDAwYjAwMDQwZDAwMGU+IDM5OTggMzIwNiAzIDQ3ODAgMCBzCis8MGUxNTBiMWY+IDQ3NzYgMzIwNiAwIDUyNTAgLTEgcworPDA0MjI+IDE1ODkgMzU1MiAwIDE4NzkgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGUwODEyMDYwZTBjMDYwND4gMjAzMyAzNTUyIDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMxMjUzMj4gMzE3NyAzNTUyIDAgMzQzMiAtMSBzCis8MDAzMjI4MjUwMDJjMjUyMTJkMDAyMjMzMzAzMTMyMDAzMjIxMzAyNzI1MzIwMDIxMmQyNDA2MmUzMDAwMmMyOTJkMjkyYzMzMmMwMDI5MmQwMDMzMmQyOTMyMzEwMDJlMjYwMDJhMjkyYjJlMjIyOTMyMDAyZjIxMjMyYT4gMzQzMiAzNTUyIDExIDg4MjUgMCBzCis8Mzg+IDg4MjUgMzU1MiAwIDg4OTUgLTEgcworPDI1MzIzMTA1PiAzMTc3IDM3OTcgMCAzNDg1IC0xIHMKKzwwMDFjMjgyNTAwMjYyOTMwMzEzMjAwMzQyMTJiMzMyNTAwMjkzMT4gMzQ4NSAzNzk3IDQgNDk3MSAwIHMKKzwwMDMyMjEzMDI3MjUzMjAwMjEyZDI0MDAzMjI4MjUwMDMxMjUyMzJlMmQyNDAwMjkzMTAwMmMyOTJkMjkyYzMzMmMwNTAwMWUxMDI1MjYyMTMzMmIzMjBjPiA0OTcxIDM3OTcgNyA4ODk1IDAgcworPDA3MDMwNzFmPiAzMTc3IDQwNDIgMCAzNTExIC0xIHMKKzwwNDI0PiAxNTg5IDQzODggMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA1MDYxMTBlMGMwNjA0PiAyMDMzIDQzODggMCAyNzAwIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzEyNTMyPiAzMTc3IDQzODggMCAzNDMyIC0xIHMKKzwwMDMyMjgyNTAwMmQyMTJjMjUwMDJlMjYwMDMyMjgyNTAwMGU+IDM0MzIgNDM4OCA1IDUwNTYgMCBzCis8MWMxNjAwMjQyNTM0MjkyMzI1MDAyNjI5MmIyNTAwMzIyZTAwMjIyNT4gNTAzNiA0Mzg4IDQgNjc5OSAwIHMKKzwwMDJlMmYyNTJkMjUyNDA1MDAxZTEwMjUyNjIxMzMyYjMyMGMwMDA2MjQyNTM0MDY+IDY3OTkgNDM4OCAzIDg4OTUgMCBzCis8MjEzMjJjMWY+IDMxNzcgNDYzMyAwIDM1OTQgLTEgcworPDA0MmM+IDE1ODkgNDk4MCAwIDE5NDAgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MTEwMzA5MTAwNj4gMjAzMyA0OTgwIDAgMjQ5NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMxMjUzMj4gMzE3NyA0OTgwIDAgMzQzMiAtMSBzCis8MDAzMjI4MjUwMDJiMmUyMzIxMmIwMDMxMjUyZDI0MDAzMTI5MzcyNTAwMzIyZTAwPiAzNDMyIDQ5ODAgNiA1MzM3IDAgcword3N0OmR1dGNoMTJpIFNGCis8MTEwMzA5MTAwNj4gNTMzNyA0OTgwIDAgNTc5OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMjIzNjMyMjUzMTA1MDAxYzI4MjkzMTAwMmMzMzMxMzIwMDJkMmUzMjAwMjIyNTAwMmIyMTMwMjcyNTMwMDAzMjI4MjEyZD4gNTc5OSA0OTgwIDcgODg5NSAwIHMKKzwzMjI4MjU+IDMxNzcgNTIyNSAwIDM0NjcgLTEgcworPDAwMGU+IDM0NjcgNTIyNSAxIDM2ODMgMCBzCis8MWMxNjAwMTYxYzFkMDUwMDFlMTAyNTI2MjEzMzJiMzIwYzAwMGU+IDM2NjMgNTIyNSAzIDU3MTMgMCBzCis8MWMxNjAwMTYxYzFkMWY+IDU2OTMgNTIyNSAxIDY2NjkgMCBzCis8MDQxNj4gMTU4OSA1NTcxIDAgMTk2NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMTAzMDkxMDA2PiAyMDMzIDU1NzEgMCAyNDk1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzUyODI5MjMyOD4gMzE3NyA1NTcxIDAgMzcwMyAtMSBzCis8MDAyMjI1MjgyMTM0MjUzMTAwMmIyOTJhMjUwMDA0MmMwMzAwMzEyNTMyMzIyOTJkMjcwMDMyMjgyNTAwMzAyNTIzMjUyOTM0MjUwMDMxMjkzNzI1MDAyNjJlMzAwMDMyMjgyNT4gMzcwMyA1NTcxIDkgODE4MCAwIHMKKzwwMDMwMjUyYzJlMzIyNT4gODE4MCA1NTcxIDEgODg5NSAwIHMKKzwzMTM2MzEzMjI1MmMwNT4gMzE3NyA1ODE2IDAgMzgzNSAtMSBzCis8MDAxZTEwMjUyNjIxMzMyYjMyMGMwMDBlPiAzODM1IDU4MTYgMiA0OTI1IDAgcworPDFjMTYwMDE2MWMxZDFmPiA0OTA1IDU4MTYgMSA1ODgxIDAgcworPDA0MmY+IDE1ODkgNjE2MyAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGUwODEyMDYwZTBjMDYwND4gMjAzMyA2MTYzIDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMxMjUzMj4gMzE3NyA2MTYzIDAgMzQzMiAtMSBzCis8MDAzMjI4MjUwMDJmMjUyMTJhMDAyMjIxMmQyNDM1MjkyNDMyMjgwMDMyMjEzMDI3MjUzMjAwMjEyZDI0MDYyZTMwMDAyYzI5MmQyOTJjMzMyYzAwMjkyZDAwMzMyZDI5MzIzMTAwMmUyNj4gMzQzMiA2MTYzIDkgODQyNiAwIHMKKzwwMDJhMjkyYjJlPiA4NDI2IDYxNjMgMSA4ODI1IDAgcworPDM4PiA4ODI1IDYxNjMgMCA4ODk1IC0xIHMKKzwyMjI5MzIzMTA2MzEwNT4gMzE3NyA2NDA4IDAgMzY5MCAtMSBzCis8MDAxYzI4MjUwMDI2MjkzMDMxMzIwMDM0MjEyYjMzMjUwMDI5MzEwMDMyMjEzMDI3MjUzMjAwMjEyZDI0MDAzMjI4MjUwMDMxMjUyMzJlMmQyNDAwMjkzMjAwMmMyOTJkMjkyYzMzMmMwNTAwMWUxMDI1PiAzNjkwIDY0MDggMTEgODgyNSAwIHMKKzwzOD4gODgyNSA2NDA4IDAgODg5NSAtMSBzCis8MjYyMTMzMmIzMjBjPiAzMTc3IDY2NTMgMCAzNjUzIC0xIHMKKzwwMDA3MDMwNzAwMDQwZDAwMmQyNTMyMzUyZTMwMmEwMDIxMzEzMTI5MjcyZDI1MjQxZj4gMzY1MyA2NjUzIDQgNjA1OCAwIHMKKzwwNDE5PiAxNTg5IDY5OTkgMCAxODk0IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBlMDgxMjA2MGUwYzA2MDQ+IDIwMzMgNjk5OSAwIDI3MTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzMTI1MzI+IDMxNzcgNjk5OSAwIDM0MzIgLTEgcworPDAwMzIyODI1PiAzNDMyIDY5OTkgMSAzNzc0IDAgcworPDAwMmMyNTIxMmQwMDIyMjEyZDI0MzUyOTI0MzIyODAwMzIyMTMwMjcyNTMyMDAyMTJkMjQwNjJlMzAwMDJjMjkyZDI5MmMzMzJjMDAyOTJkMDAzMzJkMjkzMjMxMDAyZTI2MDAyYTI5MmIyZT4gMzc3NCA2OTk5IDkgODgyNSAwIHMKKzwzOD4gODgyNSA2OTk5IDAgODg5NSAtMSBzCis8MjIyOTMyMzEwNjMxMDU+IDMxNzcgNzI0NCAwIDM2OTAgLTEgcworPDAwMWMyODI1MDAyNjI5MzAzMTMyMDAzNDIxMmIzMzI1MDAyOTMxMDAzMjIxMzAyNzI1MzIwMDIxMmQyNDAwMzIyODI1MDAzMTI1MjMyZTJkMjQwMDI5MzEwMDJjMjkyZDI5MmMzMzJjMDU+IDM2OTAgNzI0NCAxMCA4NDI2IDAgcworPDAwMWUxMDI1PiA4NDI2IDcyNDQgMSA4ODI1IDAgcworPDM4PiA4ODI1IDcyNDQgMCA4ODk1IC0xIHMKKzwyNjIxMzMyYjMyMGM+IDMxNzcgNzQ4OSAwIDM2NTMgLTEgcworPDAwMDcwMzA3MDAwNDBkMDAyZDI1MzIzNTJlMzAyYTAwMjEzMTMxMjkyNzJkMjUyNDFmPiAzNjUzIDc0ODkgNCA2MDU4IDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDE1KSAxNQorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDM2IHB1dAorZHVwIDQgL0MwMDQwIHB1dAorZHVwIDUgL0MwMDQxIHB1dAorZHVwIDYgL0MwMDQ0IHB1dAorZHVwIDcgL0MwMDQ1IHB1dAorZHVwIDggL0MwMDQ2IHB1dAorZHVwIDkgL0MwMDQ3IHB1dAorZHVwIDEwIC9DMDA0OCBwdXQKK2R1cCAxMSAvQzAwNDkgcHV0CitkdXAgMTIgL0MwMDUzIHB1dAorZHVwIDEzIC9DMDA1OCBwdXQKK2R1cCAxNCAvQzAwNjIgcHV0CitkdXAgMTUgL0MwMDY1IHB1dAorZHVwIDE2IC9DMDA2NiBwdXQKK2R1cCAxNyAvQzAwNjcgcHV0CitkdXAgMTggL0MwMDY4IHB1dAorZHVwIDE5IC9DMDA2OSBwdXQKK2R1cCAyMCAvQzAwNzAgcHV0CitkdXAgMjEgL0MwMDcxIHB1dAorZHVwIDIyIC9DMDA3MiBwdXQKK2R1cCAyMyAvQzAwNzMgcHV0CitkdXAgMjQgL0MwMDc2IHB1dAorZHVwIDI1IC9DMDA3NyBwdXQKK2R1cCAyNiAvQzAwNzggcHV0CitkdXAgMjcgL0MwMDc5IHB1dAorZHVwIDI4IC9DMDA4MCBwdXQKK2R1cCAyOSAvQzAwODIgcHV0CitkdXAgMzAgL0MwMDgzIHB1dAorZHVwIDMxIC9DMDA4NCBwdXQKK2R1cCAzMiAvQzAwODkgcHV0CitkdXAgMzMgL0MwMDkxIHB1dAorZHVwIDM0IC9DMDA5MyBwdXQKK2R1cCAzNSAvQzAwOTUgcHV0CitkdXAgMzYgL0MwMDk2IHB1dAorZHVwIDM3IC9DMDA5NyBwdXQKK2R1cCAzOCAvQzAwOTggcHV0CitkdXAgMzkgL0MwMDk5IHB1dAorZHVwIDQwIC9DMDEwMCBwdXQKK2R1cCA0MSAvQzAxMDEgcHV0CitkdXAgNDIgL0MwMTAyIHB1dAorZHVwIDQzIC9DMDEwMyBwdXQKK2R1cCA0NCAvQzAxMDQgcHV0CitkdXAgNDUgL0MwMTA1IHB1dAorZHVwIDQ2IC9DMDEwNiBwdXQKK2R1cCA0NyAvQzAxMDcgcHV0CitkdXAgNDggL0MwMTA4IHB1dAorZHVwIDQ5IC9DMDEwOSBwdXQKK2R1cCA1MCAvQzAxMTAgcHV0CitkdXAgNTEgL0MwMTExIHB1dAorZHVwIDUyIC9DMDExMiBwdXQKK2R1cCA1MyAvQzAxMTMgcHV0CitkdXAgNTQgL0MwMTE0IHB1dAorZHVwIDU1IC9DMDExNSBwdXQKK2R1cCA1NiAvQzAxMTYgcHV0CitkdXAgNTcgL0MwMTE3IHB1dAorZHVwIDU4IC9DMDExOCBwdXQKK2R1cCA1OSAvQzAxMTkgcHV0CitkdXAgNjAgL0MwMTIwIHB1dAorZHVwIDYxIC9DMDEyMSBwdXQKK2R1cCA2MiAvQzAxMjIgcHV0CitkdXAgNjMgL0MwMTI0IHB1dAorZHVwIDY0IC9DMDEyNyBwdXQKK2R1cCA2NSAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTUwIC0yNTYgOTIwIDc2Nl0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNDNFMEVDNTkzNDRDRUYzNjk2NTBBMDM3QjQzODNCMDNENgorMjRDMzA2RTg3RUZERDQ3NzVFQzc4NzQyCitGRUZDRTQ0Qjc2NTU3NDQ2NkMKK0QxQUY3QTgyCitDRkUxOUZFQzA3MDU1MTcxODAzQkUzNUZCNjFGCitERkE1QTRDNzM5QTRFMzk1N0VCN0M2NjIzMzg0NEFDNTFBNkE5MUI0NUI3NUU2QUYxRjc2Nzc5QTRFQTM5RDU1NEM2NzFGMDM5RjZFQTA5MDJFRUFCQzEzMzYzQkREQTUxMDFDQTEyQkI4MTU2RUVDNUFGMEJGOUU2RkZENDFFM0U4Mjk3ODk1RTE1NTRGNTczMTRERTVFNUU3MEMzMkRBNDdGRDMwQTg1MjVEN0VFOUM2MDYwN0VEQjZGRDlGODE2QkJBOTQxNzI3NkY4NQorNjBGNUREQjQKK0EzOTQ4QjMzRUNENzA1MTVFRkIwRjI1RTc3NjYKKzIzRjczN0EwNjU3OEQyQzUwMTk3MUQyMUExQUQwREZCNDZDRjUyODc4NjkxODI0NDRGNDExRkYxMTgyMzAyNjY3MEI5MDdGRjM4MjY2NUYzOUY5NEMwOUUwRTFFNzZEQzBCMDJBNEJGMDlGQjhGMkU1QkU5MDlDRDRDNDE4MzNFQjIyRTBGRUE3NUE0MEQzNUQ3NzAwREUxMzRFNkM1NTZENkE3Q0U1MTJENjMyN0YxRjE3NUM0QTE5QzBGNjRBRTYxRTAwRENBMDNGOEY1RTY0QTVBMjM1RTVENzNCQUM0ODdFM0NFRjVDRUU0QTRDREUxQTY4REJCNUM3NworMjEyRAorMDhGQkY4MDc5QkU1NTMxQjc2MTc5OUUzCitDQUM3MUNFNworOTE1QkM1REEwREIxN0ZGRDRBQkRFNTExMUEKKzA5RjJGNzBGNjEwNkYzRjYwRUNDNDI0MkFFOTlEQzQ2NUZENDE4NDFFOUI3NTI1RDVDNEIzMkNFQTREQzZGREYxQTIxNjVCQkZBOEE0RUYxMTI4RkIyRkNDRkVDODc4RDc0RTU5QkQ0QTRGOUIwQkVERUZDQTlERDI2NUYxRkE4CitCRkI1QjFDRQorNzA1RThFM0M1QjYwMjQ3MjAwN0QyRkY5MDkKKzNDQkQ2Nzg4MDFGNTJBMzJCMjhFREU0OTIzMDI0RTI1QTg3OTU2NzZDQzU5NEJDNEVDODkzNEUwQTdEQjg3NEFFMDBERDUwN0RFNTMxM0Q0QjJEQzdBMTE2MzNBQzE1RTk5Njk5OUJDOENFNTAxREU1REMxMUVCNDZGNDM5NgorMkY5OURFRUEKK0VGMkMzNTdDQ0REQkE3Njc3QjYyMkRGMEI1Cis1QzEyRkQ5Mjg3RkQ3RDBBRUYzNEJCNUU1OEI1QTU3RjQ1RDY0NTAzNUEzM0I2MEUyOUQ2MEZCOTM2MDA1MTc4MjUxQUYxMDMyODcxMUZDMjQ4RTgzNTBFQUVBNDkzMzg3NTZCQTRCNkY2NzMwMEYzNDQKKzFDQjA0NDFECitFODAyQzI5RUJDNDU5QzA2QzlEQUYxN0M2RAorMkVCMUI4RDZEOTgzN0Y1OTE1NzBENjk0NzY5QTE1QzdBMjE4NTk1RjQ0NDE5QQorRDQwRjhBNEIKKzUxMkNEOEVGQTY1NzVFREQ5QzgxQkI2Q0U3Cis2RkFGQzMxQjE1OTg4OUZDMjU3MzE0MUU4MkExMjhBODlGRUMyQzMwRTRBNzMzNjI0NTM4NTU1RDkzOUUzOQorMUIyMDcyOUYKKzQ3QkM2QzVCQTIxOTVERjFFQTIzMUMzRDBBCitDRTc3NTVBN0RBQkEwMzM5NENDQzg5ODZDQUQyMjQzM0JDMjI4NzlEOEI3RDhCMzM4NzU4ODMzRAorMEMxNTRGNUUKKzU0MEZCRjEzRjRBRDE3MDREOTJFNEQ2RTJDCis0NzlCQzlDN0MyNjdGMEZDNkZEMzg3NzU3NTkxNTlDOTg1REJCOTJBQjhDOUM5QjcwRUYyNkEyREU0NjMxMTk4RUM5NUY3MDlDQUFDMzNGMEZFRDI0QjI4MjI1QjRCNUM0RDJBNTAwQzUwNzc2RDg3MUM0OEYwQjUyM0UyQzdFMEEwQTQ2QjA2Mzg1NUNDMzBGNDM1CisyNjlDQ0QyQworMEU0M0NENjlGODVCRTNCNzNCOTA2MkI4MEYKKzlDNDJGOTRCOTUwQkE1QjZEM0IxRDA1RDRFQ0EwNjg0NzZDRDlCQ0MwRjQ0Mjk3RkQ0QzVGQzYxQjJBMzA1Mzg0MkY5QjAxM0Q2NDlERjZFQUMwM0QxQTA3N0UxQUQyMDNDQzRFOUJDMTA1RjgwNzZGODk2MTFBMzlCMUVFQworRDg4RjE4RkUKK0QxNzdCNDMyMzY4MTIzNzJBQTgyQTU3OTU3CitDRjQ1RjQ3MEJFRTk2NkQ0MTdDOTcyODIyNTgxMEFFRDI4QkQzODI4QTJBODJGNUM5QUYzNjhBMkU0NzIxRTc1MUM4MTAxQ0RERDYyMzNFRTZFODY5OEU2RkJBMDI1MjFDM0UyM0NERERCQjE1OEE5NzM2QzA4MTBEQTdBNzE2REVFREJFRDJDRjUyMDg2QjQ4MzVBMEJCMENBOUU5NjkyMkZFMkY2RUFCRkZCNDExOUNFOEYxNDhCRDhGQjQyQzhCQgorRDg4RUI3NEUKK0FCNUZDMzUzN0E4RERDMzk0NjZBMEUyRjNDCitBMjE4NjlDQ0M0ODM2NTM2RDg3QkU4QzU4MjM2RTEwQTQ5M0Q3NjVGQ0I5QjdEQjA4NDQ1RkM4REJDQjIyOTY4NUZBODNBMjkwMTBBNDA5RkU5MzdGQjNERTA2NTRCMzc2RDc1RDExMzQ3OTAKK0E4REM2RDY3CitFMThBQzVFNDEzRjE3RDgyQzFFNzNDMDk4OQorMkUzRTY1RUJENDI3OEY3NTEyNDlGNzVEOThFMzRGNEIyNUY5OUY5OTFDODhFQkIzRTBDRTYwOTE5NDY0N0FDM0M4MjQyN0IzMjEwM0JDCis5NEUzNjc4QQorQkEwNTJEMDRCNjVFNDg1QTQyRjg5N0QzQjY0RAorMDc5QTNCQTgyNEEzQzE3MTcyODJCMkY5NjYzQzY5N0IwMDVCOUM1QTJENzRFM0E2MkE2MDM4NEI0RUQyMDNCQkIzMjE1QzczOEFBQjU0QjJCQkNENUY5N0Q0NzJERDlBMTIzNTM5NjRBMUUzNzI5NDJFNTc4Q0UyOUJFRUE4ODIyNjY5MDUxOTM2ODBFRDMzRThFOUM5MTdCNUZGNTUyNkJFRDI2NEQxNjdEM0YwQUY1MDRFMDY0Mzk2RDQzMEEzQ0YyRjlBQ0ZERjA5QzI1Mzc1NDYzOUM4MzlCNTk0NUQ0NzNDMTAKKzAyNEM5RDFCCis4NUQ2MEQwRjM3NjM1MjIxMjdBMDIzMTEyNkExCitDQ0I5RTdGNUM0MTM1MzY3QjA2QUNCQjYxMjE0OTdBNTNDOTY3MEZDQjAwNTI4MDVDNkQwMDQ1RkNFQzZBMjNGNzZBRTk1Rjg1MDcwNDkzRTM0RDg4QzczMzM1NkI4MkQ5RkNERTc3RjlERjQ1NjJDRjJGNjExRUU0QTY2QUNGM0JDOUZEQTUzNjgxQUU1OTdGM0JDQ0Q4M0RDNEYyMTI3NENGMjhEOUUwQTA0MEM1RUZGNTBFRjVCODFEQ0ZFQzI3MjZFMkQyMkJBRjRCM0FEM0I0NjM4NDBGNzEzNjYxQzhERjgxMEIxMThFRTEyMTdDRUY5NURDRkY4QjUKK0QwNzYKKzJECitCODU5MUM3QQorOUFBM0I4QzkxMjZDQTRGNEUwNEUyQjE4RkEKKzBENUE3QkFBMEE1RTQyREFGMDdFMERGNTlDRDEwMkYyN0ZDNUVDQzcwQThCNUM5Njc0OTNFRDI4RjdBREY1RTE4NTYwMzIxQjU1RjNCQkM3Q0VFRkI3RTJBNzFBN0E0MUMyMURGNEMyNjM0QjdCQTVBQjRFQTcwNjQ0MzNENzE2RDNGRDMwMjQ0ODhDOENFNUYzMzc0NjA3QjA5RDM0MzVEQTEzOUJENjk0Mzk2RTlCMjFCRTJGNEI1OTk2ODg1MzM5CiszODJDQjFFOQorQjRFRUNBQzM5ODg5NDQyMTg1MTM4OUFEQkIKKzVFMkMyQTM1MDhFQkJCNUQ2RDRFQjZDOEYwNzQyQUIzNjY1RUJCRjIyQTc1QjFGQjVERDI3QkE4QTExRDUwMTZGRUMxOTBFQUNEN0ExNzJBRDIxNjlFMjg4RjUyQkNGNDlFQ0I4RDY2MDA3MzYwMTYxNjcyOEM5MzZGQzRDQTkxQzQzOEJDM0QyNjEyNzcyODBCMDkyNzE0MEY2QURFODdDODYyODU0RTIxQzFFQjg3RTNBNUIwN0E0M0QwODNCRTZDREI2MAorQUUwNzA0MTAKKzE0NjM3ODc1M0U1OURCMURERDAyQTM1MjczMTAKK0EyNDA0OTA0MjlDOUE5QzcwM0NFMzQwNzlBRjgxQTM3OEQzNjQyQTFGQTNFQjE1Rjk2NzE0RjU4QTYyQTkyOUI2NUU1NEY2MkE3OUVBQkEwQTgwNTM2QTA3RkFFMzZCNTA5MkRCMkEwNTI1QUJDRDcxRjM4NzVEOTQxNjUyNEU1QzdGNERBQ0M0OTcxQ0YzMkRGRDAxRTQxQzYyNzUyNzgwRDBDQkY5RDAxODZBMERFNzY2MEI4REM1NUM2ODNCQzBEODhDNzg2N0Q1MkFBQjg2QjUwMkYxNTk4MEZCQ0Y4RUUyNTQxQ0MzNThGM0YyMTk3MEI4RkY3QkFEMgorMUE1ODhGRjUKKzVDQjVGNDMzQkMyQ0ExRjFBQURENjlFODc0MEMKKzU4OUQ2MDRBNENDM0M1QzQ3RUQwQTBCMDA3NEQ2NTAwODdCMzg2MDY2RTBGRjlBQkFGREYyMTJBQTQwQUUwMkM3MkQ0NjYwODQyOURGMzI5M0U5NkRDMzc1Nzk1QTdERDYxMzA4QTU4MDU1NkY1RUM4MTFGRTAyQzMzMkJDQUNENTA5REU2RjBFOUE4RkE4MEJFN0RGOEMwRjQyRDJBRTE5OURERTJBNkY3OUY1REIzRjQ0QUQ4M0ZFQzRDODVDMjM2MDVCNDhDQThENDk4NjE5QQorMzJDOTM1N0EKKzkyMzJGNjU1MTI0NjAxN0RGQ0VCQzdGRUVGQTgKKzQxQjIyNzQ1QzBGQkY4OUM1ODUzNjQ2OTBDNUUwNUY5NTA2QTQxMDhCNDg0NDk3ODdFRTI4OTZDREFCREIxQzU1RTU2QzgzMzIwNEJBNTk2QTZBRkEwNzdCRTcyQTVDMENGNDUzOTk0QTU3MEUyMUQ3RjQwMUEyMzcxRjI4MTAwMEQxNzUzM0MwRUZBRTU2RkUwNEY4MDAxMEJGMkY2RUIzQzUzRjU1QzFEQzBBRjg4NjExMDIyQ0E5QjMyQjBDRTk2RkYyODNCQTZCM0MyNEUxMEU0MTJCQzdEM0IzRUJDNDkyNzUwMjZFQzk4RjQ5NDJBNDEKK0NDMTFERDQ2Cis4Rjg3NkI3NjRBNDg0OEY2NjFEQjA5QzAzNjE4Cis4QUY4NjlFODdGQUQwODZGODYyNTcxMzRBMTczMkU1MDUxNDZGNDVFQUUxNjUyRUNFRkU3N0Y1Q0JFRkMwM0YyN0EwRDVFM0FBMzZCQTVFQjkwMjQ5Qjg4MEUxNDJDRTY2M0U3MDVDRENEN0JBNDI3NDNERDRERkI1MTM5OTcwN0QxNDY2MzdDREFDRjlGNjNBNkNENURFODQ1QTI0QjcyNTNENTBCNEM2NjlGOTE0MUNEODYyMDkzOTg1RjIzNTA0MzcxMUQ5QjIyOEE4Q0JBNzQxMUEwNzMyODhENDQ0RDJBNjQ5REQzRkFBMTE4Njg4OUMxODZCMEVEQUIKK0E0QkMKKzQzNzI4MTQyRUIzRkI2MjJFQkM2RjEKK0YzRjE1N0UxCitDQ0NGMzUzMzcyQjM3QTkzRkQxMEJCMTlFMQorOEI1NzBEQzg0MDBGODRBNUI2NDRDRDJBQzdBRjVDQTdCQUMwQUIzODVFRUE5RkMzNEI4QkY0RDE0QkJENjA3NUQ3MDZEQjE1REQ4OUUzRUYzMTNDNTdGRjU1NENBNkM0MzdDMjBDQzgxNzNBQkZEQzIxOEQ5NgorNTdEQzhCMkUKKzEwNTZBMUZENDE2M0NERkY4NjNDOTgxMUIzCitCNUVEMjBBRDgwMUE5NEZFOTNBNTJEQkU4NzBGM0UyQUI2RUJGODk5MDYxRDNBMEJEN0ZDNEYxQUQ1QzA1MUI3NTNDQTkzNjRDNUU5RkMzRTYzQUIyNEFCNzEzRTM0MDNDNjdFQ0RCMDM5QThDQzNEQ0I3MDUwRjc0QkE5MzU4NzYzQThBNTM3MzZGMUY2CiszOUVFMEJGQQorQjdDRERBMkJCRTEwMDdGNUQzNEUwRDdGMTc4MworRUFBQjgwMzE5MDg3MEZDQ0VBRUUxMkVFNDk2RUI5MjNGODY1NDc4MTczNUYzQTJFMkVEMjdGM0NCOThCMzM3MUUwNDRDOTk4RTM3RURCQUVDRUQzODkxQTlGMTRBMDNEM0VEQUFDMjg2MDIzQzkwODQ2NkNGRTg3MjE3RDI4MTU0QjU3MUFBRDA0OTQ0RERDNTY3QUE4NUQ3NUQ5Mzc3MDM1NzBFMEVDRkRBNDE0NDJGRUYxOTg0QzM3N0I3NERDRDAzQjAwRDVFQTgzN0I3MjMwRERFNjU2QjUyQzE3CitCMEE3MUJGMworQjAwRjczQjEzQkRERkY0MjMyNEZBQkE4MTMKK0ZEQTkzNUZBMTIyQzlERUZENzI2NTM4NzVGODhBNjBENDE0NTRBRTZCNzA4NEMwQUM0QjAyNkJFMTdGRjFCNEZEOUNBRDk2MzM5NDJDN0UxMzM5Rjk4MTdFQzA4M0FFOTM5RjFFQTlFOTc4OUVGRTUzRjlFMDdENDJEQkY0Qzk3NzIxMjI2QkJENDg5NjY0NUREODVBQUI4MkFCM0UwMEE3NEJDNTYxQTM0NDdGMjQ5M0ExQTc0NDYKKzI3QzUxOEVECiswN0U2MzY0NTg0QkY4MkQ2NURCQjc2QzhFQworNjdGNzEzMjgzNDI4QUQ4MTY2RTQxNTNGMENDMEQwREFBQzkxODNCODNDOERDQTAyMTVGODBFNkI3MzBEQUUyN0E2RkFDOTAyNjhFQ0Q2REVGN0E3MjZDQ0I4RUIwOEM5NDlGN0U5MUY3ODU0MDk3NEMyMjg2MjJBNzExQTEwQjYxMERFOEYwRkNDQ0Y3MjFEMzAzMDQ4QkY3NUY4Qzk2NTE2RDk4OAorMjI5Q0M4MEYKKzgyRjA2QkRCMUY1MkQ1REIzN0NGMDJERTlDNUIKKzZBOUVEMjUzNzZEMTdERUY0QjQyM0E3NEM3Rjg5MkZDNDM1RTgwM0RFNDFDMERGRTg0MDdENkY4MDIxNTNCQUFGRUZGNzYzQ0QzNzUyOEYxRUEzNzk3RjhBMDJCNkNERkY0MjYwOTk3Qjg2RDk1NURBMUFBMTI0NkEyRkMxREQyOTRBRjAxN0RBNjNFMEIzQzhBMkNBQUFBNjMxMDc2NEUyQzMxNjc4QjU2NzEyMjA1MjcwOTdBRUNFQjJDRDQzOTkxOEM5QzI4NUJBQTlBQ0JFNEI1CiszNzVENzM4MAorMDBCNDE3N0M5Nzk3MDg4QkY5OEVGQkZFNDQyMworNzJCMDhBMzE3MEY2M0RDNjQ2RDc5OThERjQ2Rjc1MTJDMEEzRDAwMjI2QTY5RDA3RjJGODc4NkNENjcwRjJFNDhFQTE2NTY5MEFGQTE1QkVEMzIyMTY0MEQxNDU4ODIxNDMxMDE5QzM4QTQ0QUJDQ0NBMTVGMUQ5MkE2NUNDQUJDQTg0NjE4NUU1QkEyRUZDOTUxNjhBREUzOTI2QUQzQTBDQzU4Q0FDMDVBRUQ5NjY5QTgxQzFDQzM2Nzk3QjA1ODcyODlBQjgyMTgxQjM4MzRFRjY0RTg3OTg1RTgxREYxQUZDNEIyMjlEOEMwNjdCMTdENDQwQkYzNzZFCis4RTA2OUZCQgorMzkwNkY0RkMyNUE1QTQwQzUwQ0M3RkY1ODJDOAorQUNGOUJGNTZCOTJDNUYzN0RFODg5MDJCODAzQjQ3REJFNjk1QzRERjMxMDA5NTVEQTgzNzQxOEQyNkQ3NkQ5RjlBNEUzNkQ5QTFDMkIyM0I0RjhBQ0NCMDRBNEIyQURBMDFDMEJBOTNBMUM5NEU4MDBGMTQyRkYzRUVEMkRCRUE3MUI2N0U2NThGM0Y5MTE0M0Q1MUY3RTQ4NkNBQTc0MDQwREM2OEI1QjQyRkZFRkQ4MEExM0E4QThCMjU3MEZDQUNFNUUzQTMwREEyM0RBNjU4MENBRTRFODg4NDM4Q0FCMjMxQ0EzMUYxNzM0MTBERUQ0RTNBRTI2MzE0CitBODdCCitFRTZCRDUKKzcyQjM2RDMxCitGMTE4NTBCMDkwOTE4MjlDQjQzQjAyMzdDOAorRTY3RDE3NEUxRTU4RDc5NDk3OTgxMzU1QjYxRTcxRjE3RjRGRkYwRDRGMjgxNDU3RkM5NkE5RDMxRDE5MjBFMDI3RDg5MUE5OUEzOUY2QTc5NjkzRkQxMDdBNTgyODhFNThERUVGQkI1OTJBNkFCMEMyODRERTlDNjRFMTlFNjBENjg4MjdGMTE4N0Y3NzJBNEI4M0Y4QUNFOTRERDgzRUU5CitDOThGNDQ1MQorMjRFNEE5NDc1M0U0ODRBQTAxNTg5MkQ1QkZEQworMzdBOTIxRDFCMTQzRDRCNkQ1Rjc3RkMwQzM3RDU4OTk0NzhDNTdENDExOTcyRTk2MTk3MjMwQTNCQzU3MDY4NkVGMkNENUUxRDc4ODlEMTg1QzlFMTk0MEM1MDg1Mzg2NzY0N0I3N0NGRkNCMTI1NUYxMUEyNzU2NzlGNjEyMUU3M0I5MzQ0MTI4RkZEMTJERDE2MEM1Qzg2QUUxQjhGQjgxQjU4RENEQjYwNUUwNTAwQkQwOEYxNkY1RTFEOTQ1QTc3MUVCRkVCMzczRkY5MjE0OTMwMDM1NTYyMjBERTdCOUI3MjQKKzQ3MTczOTE0Cis0QTQ5QkY4ODcxRkVFNUU3RDZDMTRBRTMwOAorQTlERThFMDYzMTVDMjM2QzVEMjgzNjY2NTQ3MzA3MThBMEI0NjZBMTJBMDBDNjQ5QkQzNTY3NjhFQjUxNjZDRUQwRjQyQ0MwQkE2QkI4NUZCNTMwCiszQTQ0Rjg0RQorRUJDODNFRDUyNEZDMzQ2RTRENEU1QTEzMTgKK0YxMkU2MTRBNDBFODEwMzExN0EyRDdDQTgzNDQ2MTBEOEE5RkJGQUYwNTI3NjA5RkVGQTU1RDA1MzdEOUY2NURDNzRBRjRCMjEwNTk4MTAzQkRFMDQ0OUMKKzMwNDdBNDE2CisxNDVDNjZEMkREMUE0MjhFQkNDOEFGOTYyNgorQjFERjA2MUY3REM1QjFERjVDNTZCMTRCRkY4QzVBMDlFNTU5RTkxM0FEMkUKKzVGMUM2MEJGCitDNDFGQ0M1M0M1NUFEMkMzMEQ4QTAzODc2NQorODhEMzUyREIwOTk5RENEMkNGNDY1RjQ1RjUxMTE1NjUzMkJDN0M0RDI4NzhGQ0VCMUY4MDMxRTZFODBGMzVGQTRCNkUxRUVCNkE2MUJGM0YwMENFQzAyRUVFNzAxOTlBRERDREY0RTFCQzdBQkNGNzQ4RDkKKzU1RjBDM0RGCitCMkQ4QThDRTZFREE2MzQ3OTRBOTBBQjA1QzU3Cis2ODUzRkVEMDRFODVBMzUyNTJBRjEyMTZFQzRCNkJBNDdDNUY0MDAyNDQ0RDFFNTMzQzRBM0JBODIwODJFODVCQjJFNUQxRTA2OUIyOEExNjlDNDAwMzlDRTVDQUFGNDVDMTRDRkIzQTBFMDdBRDYyQjM3MzBEN0VCRTk3ODUwREMxODE1QTM5QzI3OTJGMkU5RjZFNDA4MDEzNjBCNjlFQzA2MTA0QTJDNkM5MDlBNkFCMDU3MzNCQzIwN0ZFRDM3Mzg5NzVFQUY2Njg5M0NGRjkyNzdCRTlGNDJGMjc2N0NEQzY4MTZBREMwNTE2RjQ4RThENkFDRDJGRUUKKzNCMjkKKzRBRkJCNgorNTM1OUI3QjMKKzlGNzFDRDJDQzdFRTVDREM3OUNDRjNENDAzCitDODk5MkEwNzhDRDAwRDYzNjA3MjgxRjU2MTQwMUUyRUNDMzZBMTQ4MzRBREVENzMyOUFBQzQyNzJFOUQyNzc3NjdDRjk4ODVDN0Q4REZBNzY5MTYzQUFCQjQ1MzE0NTA3N0ExNjcyMzgyNUM3RTkyMTJERkM2Mzc2RkZGN0MwOTVGQzg4MjE0MkFFM0I5OTBEMTM3NjdGNDRFNjc4RTMwOUQ3ODBFODc5MjM4RDFDMQorQUFCRDQ4MjEKKzE5RjBEMUREQjhENTcwRkUxMEU3ODMxRDAzCiswOUZDMDZDNjYyQjNGRUQ1MjlGODk2OEZEMDU3NEFCOTI2RTBDOTM1QkUzRTI3OUQwODNBNDgyQ0ZCMkI2REI3RUI2MzBDNEU1OTY5RkMyNzZCQjBCQkVBM0NDMDBCMzEyMDZCOThBQkMyNjU3QjU5Mjk4OEU5MDI5RDgxMUFGODIzNjZDODM2QzZBRDBFNTE0OTNCMUU1RTRENEIyNUUyMUY0RgorRjAyNDJGNzIKKzdFNkM3RUQxRkU2QUY2NTI0QjI5QTdFNzBBRkYKKzVCMTRCMDJCQ0NEMEY4MkFGODQ0MTRFQkI0NTI3QThDMzM2RDVCMDQ3NEVCREM0NTgxRTNFQjQ3MUFCMEIwOEYxODczNDg5QTI0RUM3RjU0OTU3MzIxRTRCRjQxRDQzMTAxODM3Q0RDRTQxQ0JFREJBN0ZFOTdDMUExM0I4RTdENkZCQjAyOTYzMThERTkzNkQwOUM0NUU2NUY4MDQ5RTI1MDAyMzUyNjkwMTkzQUJERTI4RDI3OTI3MEJBNTlGOTJGNDExNzI2MEYzOUEyMEM5NTBGMjcyNDNFMTMKKzEwNjQxM0U3CisyMzFBNDVGNjlGNzM3NTVBNDIwNTU3RDkwMAorODVEOEFGQzA1NzA1MkMyRTREMEQwQkI2NjJGNzVBMUI4MkUxM0I1MERDNkFDQjZCQTk4NTg5NjI0N0U0NEEyMjI1ODdFQUY0M0M0Mjg0OURCN0EyOTNFQUE2M0M5MENCMDQyOUQ4MUZEMzc2QTEwRjgwNTIyRTJFQ0I1OTI5RENCQ0M0M0M3RUU3RjlCQjc2NzZGRUUxQjlCQ0JDQzQ1MzFENDIwMDc0OUVBMDVGMTYzOQorNURGRDgwMDQKK0YxMDQzMjc2OTMwNzJFMDM0MEYzOTlFMDlECis0RUQ1NkE3MzNCODlCNzQ0QkFDM0M3OUNFODRGODIxOUQxRjFERDM0MDg0OTg3MkQ3MTE1N0Y3RTk1MTUwRjU3MDM5NEU4OTE2OUQ5MEE5M0NBRTUyMDZCQUU5NzlERTdBNkYwRkQ2RDJEMkExRjM1RDIxMEQ0QTlFNkNDQkZGOEJDMDQwM0RCMEJGRUNGMzI3NUUzQTA4MjU5QTBDRkJBRjNGQzk4QzFGNUFFRUE2MjFGM0U0OEQ0CiswOTM0OTRBMAorQzEzOTJBOTNFNTQ5RDhBMjRBNzY2QjM3OEZFOAorNjY5MUJCMTIxNzUwQzY0MDZDNEM2Mzg5Q0ExRDNGOTYxNTlEQTlERkQ1MUYxQzg3MDZGM0Q1Rjc1MTA5NzkwNTFFQUQyMTUyMDE2RTVFMDUyRTU1MUM1NjE4OEVCQkVEQzExNzFFRjdDMzg0M0UyRTJCMDY4OUY1NENGRUMzM0NEMzg1QThDRDkwMjE2RjE5NzM4MzMwNEIyQTNBRjBFQTU0NEM1QTY4QTA4OUFGQTc5QzQ3RUZGNjk5OTg1MjRGREJGQTQ0NjFEODMyRjQ0QUIyNDUxMEFFMzI5RjA1MjRGNkY0MDc4NEFBRUM0QUJBREU3Q0VCMUZBRThBCisyNUZECis2RDFGRUUxOUYzRjU3MzlFMjBFNzA2M0Y0RTEyQjc2QUFBQjBEMjUyRTc3MUMyQ0ZDODc4RkEwN0U2NkREM0NCNjM1QzE4QzdEQjYxMjlCRjA4MjU4REMwQTZEMDkwCiszMUI1MzYwMgorM0QzN0Y4QUIyNzMyOTg5ODE1QzdBMzZENzE0NworNTIyMDc4QzlCNjQ5OTYzQUI5RUJCRjA1RjZDREREQzU5QTcyMDlENTlGNDA4Nzg2QzA3OUVFQUMwMjMwQUY1OTE5QURCRjQ0MUVBNjM3OURDNDE5RDFFQjNBNTExNzJDNzdGMzEyQjI3NjZENEU3RkI3NDYxNzVBNEMyNDRDNjEyOTFBODREQUFDOEM5REU3QjQzNDBFNTYxNkRDNzM0M0U0QTMyODhCMTBFQUYwQjZBNDNFMkUzOUFEREVDQUM1OUQ0NDIyNzY4NDVCNTMwQTVCQjAxODQ4MUQKKzZDODREMEM1CitDODhEMDgxNzVCRTM0QkUyRTJCQThFNTQyNAorQzhEMEE4OTk1OTY4RjMyOUIzRDU0NTYxRTk0RkI2QzFDNjYzQUY1N0ZBOTgxMDUzNzU2QjU5QzQwQkFENjkwRjk4MTc2RDZEMkZGRDUxQTM2OTdBMjFBNDQ1OTJGNkEyQjQzNTUxN0U4OUU5QTc5RUIxMDEyMkZDRUFBQjIyNjA1MTE5MkNFMkFGRTBEMTI4RTc5MEJBODk0NzZFQUUxMgorOEI3RUE1OTEKK0VDQzJENzJDNzEwRTU5NUUwMTkwMTBDNDMxCitFMkQ1QkQyNkJGOEVFN0E2MTcwQkY5MTMwM0RCQzIwMTBCNUExM0M0NDlEMThBRTVCRjlBMThGQjdCNjUwQzIwNTVGN0I1NDMzNjlBODAwRjdGQzgzNTc2RkUxN0FBOTg3QkFENjQ0RTY0QUMxOTlGMTkwQTVEQjIwMzU0NjRBNEVEM0VGOENFRUUwNTQxQzE4NTVGRjM5RjFGQkJBN0QzQzg0RDkwRDNEMzgyMTM4RDNEM0M5QUI0QkIxMUExRjUyN0QxMUUKK0U0MDMwQzg1Cis4MTQ2NUU0MkZDNjEzNEQyRjA2QjJGNTg3NTMwCitEMTIyMTRBMzU4OTYxRjc2MDRBNjE2QTE5N0UxQ0RCNDc5NzVGOTNCNjA5N0RGMkQxNURCNDM5RTMyOENFNjhBNzg1QzhFNzcxNDFENEJGMzFDNjUwMTJCRDdGMkFDRjA3QUYyNUQ3QkQ5OUZFRTJEOUExOUI1MjU3MEEyMkVGM0ZBMUJERjFFODk0REZDMDM2ODA2N0EwRUQ2MTRDRDlDNTBGNUMzMTg2QkYyMjI2MzQwNTZFNDhGOERFMEIwNDE0MjM3NEQ4NTA4MDg1MzExMTJCMzA2RjZGOUU5MzRGNUFCMjZEOUY1MTRBQUM1N0EwNUMwQTIzQTY5MjEKKzA4RDcKK0U3QjVEMEY3NzEzODk0NDJGOUNDM0E3RDg3OUM2NjE4RjhGNDQ3QUQ4N0I5NUQ0QkIyMTkwNkRGQkFGRjIwMzA0ODIwQUQKKzI4RDNCRUUxCitGNDhBNjI5RTc2N0EwQTJCMUZENDkwM0VFMQorNDNGMEZGODQ3NzQ1QkRGOUVGOEVCODRFQUZFNjkxRTc2NEJBQ0RBRkM2Q0ZCREUzQTdFOEYxQTU5RDkyMjA4QkZFQzQ5MjkzOEYwMjFGNjBENEY3OTAxMUY4Nzg1QzBBNEQ0OUUzRDA5QjNDCitBN0I4Q0M3QQorRTlBQUU4MDcyQzg0OEZDREMyNTlDRURENkIxQgorREZENUU5QUQ3QTI0NEMyQUU1QjRDMEZGRUVFNUVDOEYzMDY2NjI0MEI0QzM0RDNBNjdBNzJGMzQzNTBDMjFBMDQ5QTI5MjIxQUVFQjU3NUIzN0IyODJBMzJDRURCMUYwREY2RDQ5QzhCRDdERDEyNkQyODlENTlDRTE1QkM1MjBENDA0NDFEQkM1NzFBNUU1MjQ3QjY2RjJFNjU1NzM5NUI1MjBCMkM0NjdCNzU0QTIwOTBDNURCNTUzQTZERjM4MEQxMzdGRjlGRDE5REU3M0JEQjYzRTEyOUVCQTk0NzYxMURBRUNFODY4OERBRjI1OEM2RDY5ODE2MUY2CisyQ0EyCis4QkRFNzgxQ0E1RDk4OTJERUY3OTg4MEE3NjNBQ0E3RDVFOTMzODg5ODJEQzIyRUVFRDAwNDlGMzZCRjBERgorRTRCQUJENEYKK0I0NUZDQ0M3MkE1NjI2RTUzMTk3RkFDNDUzRjAKKzE1MjBFQUQxOTlEMTVBQjhDOTU2MjU5MDFFQUMyMDkwNTA5NDc4MjlENjUwRjRFRTQxREU0NzhBMzg2MzIxMEFBRjcyQTIzRTE3N0YzOUU3MThCQThGNkRGN0MzRjEyNUM0NDU0OURCNTkwMEMwNkY2QzM3N0FCQzVENjMzNjBFNzlFMzczNkNEMEEyRkNBQkFDQzA4OUYwMkUxN0U0MTcwNjZCNjIwMzFEMzM5NTI0M0EzRjJGRkJGRThFNUE3MjdBQkM0M0M1QkVCMUJFOTkyRTc5REM5QgorNjQ2MEIzNTIKKzZBQzdDREQzMEY3MTczMUJGOEEwQzBBQzM5CisyQTJGNzcyQTNFMkUyNzI3Q0NGQzY5MDM0Rjc4MzM4MDQxNEU3RDY1RDE5NUQ0QjkzQThDRkFCOTEyMzU1MTc5ODNBQjIyNUIzQjE4MzA3RTVEREE5ODc3MDREOEU1MjEzNUFBRkI4MzQ1NkNGNTA3MkJCRTY1NUFGNzVGMDY2RjlCRjgxNTI5MkI1MAorQkIyREFDMEQKKzMyOEM0NzQ5RENBN0UxNkJDQkM1QkM5MTY0Q0IKKzkzQkZGRjVDQ0ZGODkyNEY4RjA3QjdBOTBCQUI4RDk4NDcxMkQ2MkY5NzQ5N0VFOTZGMjA4RkQzNTU2OEM3OTA1MEMyMUY0QzRGQUNBQ0QwRThDNzRCMzQ0RTc1MUY3N0U1RTA3Mjk0MkFGMDREQTFERTUwMzcyMkMxMDYzRTlBOEJDRkQzNTUyNUEyOThCMUU4MEIyQ0RFQkI5MEY1OUU2OTNGMTJCNkI0NTVDNDA5RjEyN0QwRTI4OTBFODQ3OEQ2QzY4NTIwMjVGMzVDMzAxRDM2MEQyQzlBNkZCMEY0RTc4QUNBRUEzOUEyMjMKK0I2MkQ3REY2CitGNUU3OEVBMjhFRTBCMDFEMTEyQzM4N0QwMUU0CitGNTZFNUVDMTVGRjlBOUY2QzU2MDhBMzVDNTFFMjgxMzcwNkVBMUM4QjI2NDVDN0JGMTg1NUJDOTU5NDdEOUUwNDI4MzEyMUMzMTkyQkREN0EwQTAzNEFGOUUzQ0FBMkI0NzIxNTQ5NzE5ODdENjZDNzhENzlFRTJBQUVDOEZEN0I5MTQ2REUzNTQ0RUIyNTk2NkY1RTBEMjIyOTFBQTBFMTNDQkNCMzc4QkM4QzhDMTE3NzRCMUU1MjYxNzgzMDczNTQzNTU0QTE0NDFFMzhCMjZCMgorNTU0NkEwNkUKKzI5MDNEMThFQUREQjM1MTVFNjZDMDJDNzJFCisxMzY4OEJDNUEwN0YyNEVGNzc5NTk0OTI4RUU2RURGOEVFNjdDRDk1OENBRDNCQ0FFNzFCQUU4MkVFOTgzNENDRkRGNDVFMzIwMDQ5NUJGMTBBQTY4RUVDMzVFQzQ1QjBGMTFFMUQ1NzBEOUUzQjI3NzY2RTQ4REU0NTMwRTM1NjlGMDEzQTk3MzNGOUQwOTNGMTI3QjM0QzM5RTMzQjhBMzRCNjdEMDdGQkJCMDcKKzM4QTc3MDhECitFQTM3ODAyOUNCQTQxMTczNDhDMzc3RDIyMjE3CiszMTJCMDg3M0ZGRjAwQTBGNTAyNzRBRDlDQkNCODdBNDA2NEMwNjgyQzRCMkEwMDg0NjBBMDBCQUVDMjg3MkRDNEYzMjVDNzc3MDZCQTY4MUQ0MDUxQkVCNTQ2MzM0MzlENUUyNEM5NEM3RTE1NkUwREZDQjE1QzdFRURFQzE0Mzk1QzhGQ0YzMjEwMEE5M0VFMDk0NUQ4NjcwNTE2MjkyRDA0REY4MjdGNTg5M0YzNDVBOTVBNDc5RTNDNkVEODBENkUwQjFERjU2NTA4ODVFQTlCRUM4NDZDODk2RENFRTA3RTZEMzZCNzBCNENGNTI4M0UzOUFBOAorQUEwREI5NUMKKzQ1Q0M5M0FEMDRDMkNBNjUyNEJDMkIyQjNECis2RUQ0RUM2NkEyQTkwREFDRUMxQTFGMkMwRUJFMjU4N0FFMUE3NTE2RkEyOTFFODg0QkREOTYyMkQwM0Y1NUY5ODM5NTlGRkZDMEI1QjAyNkY0NDFEOUE2QUJBNUExQTMxMTU2Q0VBNTg2QTgxQjJGNEI4RjBGNzU2MUNEOTBBOUY0NTQ0NTQ4REQKKzI2QzFFMDBCCis4M0M2N0MxMUIyMzlDMUYxRjlFM0EwNUYwNQorRjIxRTEyM0M3Q0NENjJERTUzOEI3MUFBN0M0NkY0QUU1ODkzQjVDRDg1QTY0MzhGMTU0OTZEMkM2QzM3QzNGRTI4RkMxRjRCRURFOEYwNEY2NTZDMTQ1RTY1MUY2OTE0NUM3Q0Q1RDM3NDM5OEY5QUZBNjFBOTU5M0RCMkFCMTE0QTFCQjZDNTE3RTM1NzFEM0VENTAxMjJCRDVERkRCMDg5MjM2OEU0NkMzN0FDNTc4MDlFOUE4MTI2RkQxNEU1NkEzNQorMkVEODAzMTMKKzI4QjAzNzY4OUEwMDZCM0U0REZBOEI2REY1CitGOTU3MzREODBEQkNCNDQ3OTE2QTRCRDM0MDlCMjRCMUE4QjU4NzY2NTVDNjI4MzVDQTU5OUUwQjk5REVERUJFNzlDMDBFOUFCMEMwQTU3MjExMUNEQUI4M0QxMjA2QThFMjNCN0VDRURDMDVFQTEyMEM1QzRDMzJBQTI3MUQxRUQ4NEYzMjJFRTkwNEYwNjcwQ0FFQzIzQUQyQjkyMTY0NTFBRkZDRkQ1OEI1OTg0RERFCis2OEFCQjkzOAorRkY5NDE0NzI3RTAwMDY4NDZDQjFERTYxNjgwOQorQkI3Q0VCQTYzQTRBMTg2MTFFQTI5QUJENzYyMURDRTIyRERGODE4QUU5MDA2MkM0M0NDQjM3QkFGM0VFRTBGRTk5QUUzQTQzMDcwMDlBN0U2NTBEMzIzN0JDRDMwMUUyRTBCQkM4NjAxRjA1NzVCOTFCNjFCRTQ5NjVBQjVENDQ2ODUxQzYxMkE3REVCMkJENEM3NTU5NkFDNjQzOUU1NUM2OEFCMTVDNTU4NUNCRkFDQjMxQTFCQjRBRjEyOTM0QUJDNEI5MDg0NTQwNEFFRDgxNTRCREY0QUJBMjZDRTRFQjEyREVDMjY2REE1MjYwODg2NjYwQUNGQTM0CisyMzQzCis3MzAyNTFENzI0MUYzMTRGQkFCQjZCQkYxQzhCCiszODgyQzYxMQorRUVFOERFQkVEMTExNkU2MUU1QUIwQUIwNUM1NworNjg1M0ZFRDA4REVCN0Y2NEZCMTIwMzBCQjQzOUFBMTYzNzE4ODM3RTUyNDYxRDZFNEE1OTNDMjBCMjdCMjUxMEE3NjYwODM3ODVFNjcwOUQ2MTU3RTg4N0Y3RUZFOTg2QUVBM0M1OTc2NDU2MUFCNzYyN0Q1NDMxMDFERUNCRDY0MUI2ODg1OEU0RDRCODc4MTVEQkM2RjY5REQyRUMwNzQzRTJFQjk0Mzk3Rjk0NTUyQUYwRTBCN0FFRjI0MTVFM0JDODg1QTRCRjFGMDI5RkJGMDAzNzE4MkUxNkZEMUM0MkYzNkJFOTI4MDI4RTg0MkRFRjcyMjVDMDM5Cis2OEQ2CisyMDQwMjNDQzM2MEIzMTQ3MTg1NEM4OTIwMzY5MURENENDNkU3Q0IzRDM2MTE2NDY3OQorOEFFREFEODUKKzEyREI5Q0VDQjA4OTk5Q0FEOTVGQTM0MjRGMUIKKzc5OTVBOTcyMkRDNkQ4QUQ5QTk5N0RCN0U4RUM1MDVERDAwOEVCRDJGNTVCNTQwNjI1QzkzNTQ1NDYyNUQ3RkQzNkM5RkFDRTNDM0FGOTk0OTg5NjhERkE5OEVDMjI3MDA3MTJGNjBBMEY2OTBGQ0NCOTIzNTcxNzUxNjRBQUY0MkEzMzM3MzRGRTRENjVCNDgzNUVENEM1NzkzNzkyMzg1RTA5ODJDOTlBN0EwNjU2RkI3MDI3OTA5MDQ3Njg4MUM1NjQ2RUY4M0FDQUVCQTU5RjBCQUY2NEFFNEE3NjFEMTJCNjA2NzgwNDhDN0RBODNFRjE5QUZBNTNENQorQTIwQworOURENjM5ODEKKzlDQTlDRTJGMzE4MjE3REE3MzA5NTY3NjVECis2MzdCN0NBQjZCMDFCNTkxQzU4MDRGQ0U3OThFQUUwNDNDMzlGREREMzgxRkE3RjQ4NzcwQjBFQkEyOEMwRTQ0MkIxRTdFRjVGMDBEQTlCMzZEMTJEQzlGRDkyMzlENEUxMzgyNzAwMzI2QzYxQ0MwQ0Q5N0Q2RTA2NzU3NDAKKzhCOERDQjQzCis4RTA3RkEzRERCNDNEOTgzOTVGNjI4MUYxMQorOTJCRkZFREIxOTI4MDdEN0IyOTNENzQ0MTNGRkY0NzUyRjZFNTJGQzI2MEVEOQorM0VGMjgyRjkKKzA1MEU3NzBEMUJCRDIzRDYxODM4NzM0RTY5MUIKK0MxNkM1MDM1ODU5N0E4RjREMEM0NDgxQ0YyMzJBM0QwOTAwMTIwM0Y5RTJCNDM1M0Y1QzZBODNCNjk3OUU1NEI2NEM3MUY4OTBGRDExMzUwMjM5NkQ0Qzk0Q0I5Njc4QzkwQTVDNzQ1Rjc4NzNFN0VDNEE1OTAzNURFNjBDOEFFMjcyNDU0NjIxRDI0NUY1MDNGRUM0QzNBNDFCNjcxQkM2RTZDN0YyOTdEMjE2QURCOUJCRDQ4RDcyOTdGRjkzQzdGQTEyQThCQzkwNDY2QUE0OAorQ0E2RjNFMzgKK0Q3RTg5RDYwM0EzN0U3MkEyRDlCMDA0NEIwCis1MDc0N0U3REVDOEZCQzZBQTgzQ0RFOERGRjQ3OTcxRTU3MTk4OEIxMENGOQorQTMzRDhBNUIKKzQzMDVBQkVERTZFRUM3MjczNUNDNjRERkVDMTEKKzVCQ0RBMzU5MzVENjI1RkQKK0RGMzE5NEFECis1MEY1NEZBMzM2MDg0OUE2ODBCQTU0RjAwM0MzNTA3OEUwN0M3Qzk4RDQzQTA1MjI1NkZDNjFGOThEQjBGRTc5RkFBNQorM0VEMDI5OUMwNEY5OTIzNDI5NjgwRTk5RkM1QzRGODBFRTAzRTE0NjE3MzM3NkUxRkU1MjU2OEZFMkVGNDQyNTlGNEI5NTlCQzA4NgorNzVCRDZDMTU4N0E5QThDMDE4REM4MjU2RjgxQkJDNUIwRTQ5RkUxRkI3OUJGRTExNDEwODNCCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ1IHB1dAorZHVwIDMgL0MwMDQ2IHB1dAorZHVwIDQgL0MwMDQ3IHB1dAorZHVwIDUgL0MwMDUzIHB1dAorZHVwIDYgL0MwMDY3IHB1dAorZHVwIDcgL0MwMDcyIHB1dAorZHVwIDggL0MwMDc4IHB1dAorZHVwIDkgL0MwMDgwIHB1dAorZHVwIDEwIC9DMDA4MiBwdXQKK2R1cCAxMSAvQzAwODMgcHV0CitkdXAgMTIgL0MwMDg0IHB1dAorZHVwIDEzIC9DMDA4NSBwdXQKK2R1cCAxNCAvQzAwOTcgcHV0CitkdXAgMTUgL0MwMDk5IHB1dAorZHVwIDE2IC9DMDEwMSBwdXQKK2R1cCAxNyAvQzAxMDIgcHV0CitkdXAgMTggL0MwMTAzIHB1dAorZHVwIDE5IC9DMDEwNSBwdXQKK2R1cCAyMCAvQzAxMDkgcHV0CitkdXAgMjEgL0MwMTEwIHB1dAorZHVwIDIyIC9DMDExMSBwdXQKK2R1cCAyMyAvQzAxMTIgcHV0CitkdXAgMjQgL0MwMTEzIHB1dAorZHVwIDI1IC9DMDExNCBwdXQKK2R1cCAyNiAvQzAxMTUgcHV0CitkdXAgMjcgL0MwMTE2IHB1dAorZHVwIDI4IC9DMDExNyBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwOSA3OTggNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY5NjM3MjE1MkUzMTYyODNGNDA5QTJCRTNGQjY3QjZDQjJECis2QzM1MTM4ODQ4NDAxRkNGOEQ2NDQxMUEKKzQxRkI0NEQwRTg1NUFEMzlDMgorMEJDRTVDMDIKK0IyRThCNzJDQjBGNUYzQTZBRDU0RkM2OTRFCitFMUNDREI5MjdFRDcxMjI2Q0JGMEMxQzA5ODlDRDJFMTY0Qzg3MjY3OTFERTc2CiszQkFGRTU5MQorMjdEQkFFQzMwRjg1Njk5RjAyRUJCNTg4NjgKKzg4RDRBNkM1Nzk4RDZERTE3REJBNTRCNkYwRkQxRDJDOUU1REM5ODg0N0MzRDg3RERBQUU0M0U2REY1N0VECis4RjM1Mzc0MAorRTU4RjA0ODgxNjc2Q0Y3MDYwRTBENkI1NzAKKzY1NTdCODMxRTEwQzFCMzMxREIxOTRBNzM1QkUxQjk2MTlBNEZDNThCNUQ1MDY5NTA1RjcKKzA3MEZENTE3CitBMUQwRjVDREE5MTA5MjU3NjMxRkEyMDNBRQorMzQxNUFFRUE5RkIzNjA0RUE3NDQ3RUU2MTY2QTUwODM5QUZDNDlBODg2NjZDQTcxRDU5MUI3Q0Y5OTA3NTQ2RTI2QkZGOTRFMzA1QTc1RDJENUEyQjYwNjMyQzk4MzgzNUEwQkY4QjIzNDc4MUZFM0Y4N0ZEQjQ0MTZCOTFCQzcxNDM4OUQxRjRDMDdGRjZBNTAyN0JCRDYyMDkxNkExQkRFODFFNTY4ODk0MgorQTc5OTgyRjAKK0IwMEZDNUNBM0I5QzlFMTlGNTFCNTk1NTI0NjAKKzQzQzg2NTlFM0U5NENCQzUyNkM5MUNCNkQ1NENENUM1MDUzQjVBQjg1MjE3NTdENjZCMDk4MjUwNjEzQzc2QTIwM0I0N0EwREFDMjQ4NTAwOUVGRkZCNTE1N0I2N0M0NTMwQUI4RTI2RDQ1NTMyNzQ5REIxNzQzQUFCRTRGRTk5ODE5QTY0Q0MwQTI0MTNBNDhFQjQ0NEQyOThFRDVGQkM1OThCNzEzMTkyQzhFNzkzODdENDEyRjEwQjBBQzQzQjJEQjIwMzlBNTMxMUNFNUQKKzAwRUY1REQwCitBN0Q2QjhEMDhBRkFCREZFQkJDODcwOTE0Q0YxCitENTIyMTIzRUNCRDBEQ0UzNEJCNkNGMTJBQjAyNjY0NEM0NEYxQzIxNThGMzE2QTY1QUQ5MkY5REFEN0VFNzc5NDYyNjNEQzgxOTc5MTdEOTI3RTBFMTc5NzJDNDhCRUM1RDM3RkNDNjA5Mjc4QUFGMDNCMkY3QUNGMEU0QzU2NTY0RUQ1QkU5RUVFNTI4RkVEMTU3REI3MjcwREJDNTZCRjE1MzVBRTVDRTI3MDZCRDQ3NkQ2ODU3NkUyQzlEQTdBNkM0NjlDRDBCMUVGMDlFQjU4NjAzREFBN0VDMkJCREM5RjI3RkNDNDBDNTZGCis4QzQ3NDk1QgorRjUyOUUyMkNBQkZDMjJCMTYzQjNGNjJBNDIKKzY2RTIzQTEzRThCQzE3MDdCRjMyNEUzOENFMzJCRUI5Q0VDQkU2RDQzMzAwNDYxN0ZERkI4REQ5MURDQjk5NDJCOTE4QkM4NTBBNkVENjA1MEIxNDE2QzkwMEZCNTc4MEExMDAxQjc4M0VBMjdBN0I1RTIyQTRGNTIyM0FDRDMxOUE5QkVGN0EzQ0RGRDNDODkwMDEzMDVERTEwNTAyRkEwN0UyRTE1ODY0RUIwNEE4RkRDQTU5QkE0RDc3MDMKKzAwODY3MUU3CisyNjlFMjAyNUM0RTVDRjE3NjEzNjhGNDQ2MjEwCis0ODRDMUFGOTQ1OTkxQTJCREY5QzBGQjRBRDYzRDAzNDM2NTEzRTMyOTI3N0JFRDA3QjY2QzRGQTY1NDQ0M0RDRTY1NzY0NkFFRURBQTgyOEIxQzU1NTQ2MDYwQkRFREFGQjc4NzZGRTc3MjY5QjFBNUMxQTdGM0MzQ0YzMDU5MDRBNUIyQ0E0QUJERDI4OTQ5QjIyQUY3MDUxMjBGMERDMzhCNTgzRkE1RTNFMDZFMDRDMUQ5NTBGNjUyM0M2MjRDNjk4OUE0QworQzU0QkM3RkYKKzUxMTRCMTU0RDVENzI0NDdERDUyNEMyQTA2OTEKKzFBN0ZCMzZFRjcyRjk0MzgyQTY1MTRBRTRDRTUwQUUwNjg5Q0M0QjI4OEJCNUIyODI4OTRGMUQ3NTM5N0JDRTdBNDIxNDVBQzQ1MkRGMEUyMkJBODA1NjE5NEFGRDk4QUIwOTQwRjk1QjM4QUVGNzI4NTIxODY5RDBFQUU0NzA0NEJGRDkxQzEzMEJBMjk0M0Y3REJCRjM0MTM2OEZDOTY0NjAyMzZGMDM2NEFGQjYwMTEyNjdGRUFDQTk3RDhFQTlGQzY1NTczNDc0NjVBM0MzRTBCMkVEOTBGMTk3NkJDMUQzQzE4OTkwQQorQkU1RDQ4RUIKKzg4RkFFODE0Q0Q4RkFGOEJBOTgwQTA2NTg0QkUKKzJFNkExREZBMDlCRUQxNjU3NEYwRjU0RjA4NDFFRTZDQjUyQjk0NjFEOTU5Q0Y0OTkxRTJDMjgyMTFDNTMyNUI2RjE5NjQxOTc5NDEzNjA5RkZFNUJGOUNFOUNFRTJFRDlBODcyMDg0MDFGQjYyNDgyNEM2QTIwRDM3MzVFMDkwRDIzNkI5QTVEOEMyNEQzNzkzNzNBQ0EwNTJEN0M5RjYyRkE4QTk0NTc5NUE0RDI1ODEwOTEzMjM3NjlGNUFBRTg0QUVCQTZEOTMxQ0VCNEY3QzY3NUMxNUQ5QkMwRjAxQkZBQzFFNDA1QUQ2Rjk4Q0U0OUIwMTM1REY2MgorNEFEMworMEVDNEUxMTUKKzFEODNFMkQwQjBFNzA4MkRBNjI2NjE5RTFFCitCQjcxRDYxNkMxOTFENkU5MDc1MkY0QkFEQTUxRTM5RUU1N0IyQzYwNTIyMkUwODQxMjJEOEE1OTA1NkExNDg4NDQ5Qzk5RjBBMzBDMkVFMzQ5Qzk1MTE3Q0JFQTY3RTQwODUzNzlDNkYzM0NCREEyODMzRTI4QUJEMEE3Q0NENERGMzgzQkVFNTdFODU0Njg1QgorNjNENjE3NzgKKzk5MUQwOUYzNkE0NkRGQzJFQ0FFMkYyMUZCOTQKK0MyRDgzREI4N0VDNEExM0QyNzE5NkFDMzg4NjZENUU2MjYwN0RBQUM0MDJCNTFEMkI3QUFERDg1NTQ4RDM3RTIxMkJCNzI5QzU4NjYxNTk2QjY4OUZENzdBMTMzMkVFNzg4NENGQzk1MEUxMzBGQkI1MDFGMzZCMTIyNjBFMjE1NDMyODBDRDQxMkYwREJFMjAxMDAxMkM5MjNFRjRFMzE3NDY1QTMyRTEwMTExOTU4REE3MUY0M0U0NjY2RDNCNUQ5MjM3ODEyQzU2OTg0CitDQzQzODY3OAorQUQ3MjJFNzRFRTA1NkIzQkI4QTJFOEVBMUQ0OAorMDE4QTRENEQ4OUYwNkQ4Rjk0MkMzQzI5NzZBNzdDMjAyOTExNEQ4RjIzODIzQjlEQzNFQjNDMTdGREU3RTIwMERFQzVEQzUzMTUzNDk2QzFEQTBBRDBDQTcwQkU0RjIzMDU3OEZGMjkzQkZERjREREM3QkE3NEYyNkQ4QzBENzQwNjE3RUM1NEJERTY5NzQxODgwNDY4Njc4RTEwMTdCNkUxOTkwRjdDNTYxMTNFMzJEOEVGODlGMTQ3OThBRUZCNzlENjQxMTFEQjc0REMzNUExQkRDNDEzRTYxRjg5RTNEM0VEMjJENjBDQzBENDQ5NERGQzBDMEMwRDc2Cis1Q0I2CitDNEFFNTNEQgorMjZGMTYwM0YKKzIwN0VFNTZCOTkwOUZENjQ3MTFGQjZBNUYxCiswMzgzNzFEMUIxNzhFMUJCMDExRjY3MjFGQzk5MDM3N0VENkMzNUUzRTVEMkU5NEU4OEY4RUJGRUEzMkM5M0ExRkQ2MDM0ODVDMDIzNDk1MzM2Q0E0OEI0MTYzODUyRDE1NTg2MzMyNjYxN0Q5RDNGRDdEQTAyNTBFRDY3NzcwQTJFNjIxQjdDOTM4MDExQTJEMzZCNDUwQkZEMTdDNzg1MzBDMQorNkVGM0I3OTgKKzVGMUNBQ0NDNUEzOEE5RTc1MjYwRjJBOUY5CisyNkE1ODU1REU3NTk2Qzk5OTQwMDM2QjlGOEQxMTk1NTdEQURGNjE5MDBFQTEyNEZCOTMxQTAxQjkwQTM4Q0YyRjgwN0JGNURFNURBRTVBOEVGMTE5MDI0MDAwN0I1NjdGRThDNEFFQkI5QzBFNDJBN0M1NkQ2QTA5OTQ3NzEzNEU2RjRDQjUzQkI2NTc3MUQxMEJCMjE2OUY2NkYwNUUyODkwMEE3N0ZGODlBQjFCMjVDNzA1RTM3Cis1REY1NENEQworODlDQzIzQUYwOTAyM0E4NzVBMjI0NEE4MTgKKzAxOUJCRTgxOTMzNkNGQzA0RTI5MTQ4Mjk3NDEwNzNBRDhGNjE1M0Q2MDJCNjY5NjMxOTA1NTg4QkI1RkJFODUwMDY0ODVDOEMwRTEyMzlBOTE1NzY4NkQ5QTBCNzE3MDQ5NDQzNDQ5M0E4QjY2Qjk2OTQwMUJBMjQ2ODhFMDhGRUM3NDY1QkJENEE0QzhDQzJBNjc0M0Q3M0VBODE1RDAyNjI5MDQ4QUNBQ0E1RTVBQjhDNTRBQzAzMgorMDhDODI0NkQKKzY3QjQxRTk5RTNDMTdGNzlCNjQzRkIxMkEwMDMKKzhFMTQ3OUU4ODFENDg1NEIyNjZBRDc4RTM0OUUxQjczODI3OThFMTRDNDBFQThDNTk2M0I2NUY4NTQ5QTgyRDBGMEQ0MTAwQTg2MTQyNDFDNDRENENDOUU3RENCNjNCQjczNzlCOEY2QUNENkZCOTQ1NDRGQjhFRUM5MkM0OTZCQzZDNUFGN0ZFODk5M0E3RTkzQzA3OTYyREEwQzVGMTE1RTEwOTc2QzA3ODlCRDA1QTRGODQ1RUVFNkMxMjFCNkIxN0IzMTAyMEQ1REJBQkQwRUZBQjk4RDlFQzQ0MEFGMzg4NEI2RDAwMUE0NzIwQUJERDkxOUIwMjA0RgorNzZBNAorQTQwRTA3QjkzNjBFQTQ3RUE2ODVCRURERDdCNzQ2RTgzNENDMDIyQkU5QzFFNTg2QUJBOUYwMUU3NkVDQTAwQkM4RTlDRUNFRjAKK0M4NzhEMUIzCisxMTNBNTMxNUE2MzVDMTI5NEM0MTVCNTFFOAorOUZDMUU0ODhEMDhBQTE3MjY1RjU5Mzg0OTcwMzdGMjFGOTY3MDlDQkU3MEFEQkVGOTMzMkJCQzQ3NTU1NEMwNEZFMjJCMUY1NkYyQkZFOTRFNkI1OUI2MUYyMjU2N0U1Mjc3RUNFM0RDRURFREE3MTM3Njg0RERGMjdERjYyNkIxRjQ1NTc4QTNGNzFBMjU5NzAzNjFGRUJDMjVECisxQjcwN0Q5QworNjhDOTg0RUMwMDZFNkE5MDFCNEVGQzVGQkZBNQorNjlEQjJERUUzMUE0NDU2MTlCRDFFQTE4OUJFOTEzRUREQkQxN0I3Q0EzODkyNzM1RTQzMzlDRjZGRUM5REFDRDBFM0MxNThEMjYyNkQ4Q0UxODRCMkZFNDEzQTQxRUZFMUQ3NDExNzlCRUEzMDNCQUEyRERBRkNBNTMxNjYwMzQyQ0Y1MzFDMUE5RjgwMEI2QkY4NjQyNEQ3M0FCM0MwRDZFMkYyOTU2RDRCN0YwOEJERkE3NEY4OTlGOUQzRUUyRDhENjY5MDgwREVGNTMyQ0M1NDJGQjBGQjk3NEJGRDQ0RERFMjY5NjgyNzBGRTE3RjQ3QUQ0MUIwRTM0CitBOEY2CitCODQxRjNDQzRDOUI2NkJFMTNCMDZBMzRFNjM0NTUwQUYzNzAzN0E2RkVEQkE2NEJBMTI4M0RDRAorQ0M4NTdCOTAKK0U0MjMzMTA1Nzk1Qzc5QjFGODc3NUVCQTFDMzAKKzYzNDk5RjI0QzUyREZEQTkyMEUwM0Q4RDE0Mzc1QzE5RjZDNDg1Mzg1OTcyQUM1QUExN0FEQTNEMDQ0RUVCNkNFQjZENjZEODRCRTY0NDAyODZGRDNENjVBRTkyOEE3MTJBODIzOTI3MkM0MzNCQjRDRjM4QjQ0RjVGOUM1MEEyQzYxMEVFNzYwQzMwMzBDOUNGQTZFMjFDRkU0ODA2N0VDNTYwRTM1MzdBRTYyODU5RDg1NjFGOTI0OTIwMDQ4NjE3Njc0QkExOTBFMDY4CitDQzUwMDE2MAorRDRBNTlBMTMxRDkzQzFDRDEwQ0Y2RDQwNUUKKzZDRTlDNzMyMDY5N0QwM0FDMjY2N0M4MzJGNDdDMkE2QUFGMkIyOURCQTcyMzhGNjFFRjVEQzlGQjI5NTY4OUVDQzhBRkY0QzEwOEIyRTY3OEExNTFBODE1NEUwOTNGMkJFNTFDRDJCQ0Y0QTFGMEFDNjUwQzlGMEI3NURDQThEQkZGRjlBMjFCNUYwCitFNUE5MzQ3MgorMkU5MTlFRTM2NTUzRjcxQzhCNDlEMjAxNkNDNAorMzI1NkExNkUwNjk0MDRBMzMyNDUyNDQwNTEzMzI4MDhCQzJFQjI2Qzc0MEQxQTU3QkRCMjI5Rjk0RDYyODlDRkREODdCMEIyQUNCRjVBNzc5OTA0QjU4MDNDRjk4NEY0QTA1QkU5MEIxRTY1NEFGNzE1Q0UyNEU4OTlFODc0MjZERUMwMDc3QzE2ODREQjA0OUI4Q0Q4MEM2OTEyNTkyMUQxNjA0M0UzM0ZDN0EyOUM4QzY2Qzk3QkY1NDdENTQ2NDdGNTZDODAyNzg0ODY0NzE5RUZCMTJBMkI3RTgzMDFBNAorNkU1M0MxMDUKK0EzQTg1NUU5MUMzNDhDNDQ4RUI0ODBFQjU1OTcKKzI5QkFGQjUwMjM4MkVCNDY4RTVEMDEyNzBENTc0MTA1MzdEQzdCMTZGRjE0NEQ1RjJDQTk4NUE5QkZCRkI1RTYwNzI5RUUyMjU0M0I1ODBCODNGRUI4RTFGNDFBMzQzOUFDRDVCMjk2ODEyRjZGODA4MkJEQjU4QTYzRDc5N0M5MTA2MTM5OTEwQzJGNDAzRThGRkIzNEQ4N0Q4MkQ5MjU4NUI4MjY4MkY1NDM1MDA5MDE1NTM5QTY4NkQ3MTQyQjY1NzlDNDc1RkRFOTQzMUQ2OAorRkYyRjQzREUKKzc0NzNERDc4RkVGMTEzQjBBMDVFRkZCMzEyCis2REU1MEM3MEFCMkI2QTNDQTI5QkQ2OEExNTQ5QUM5OEU0MDYyNURBNjFDOUQzRURCRjAyNzU2QzE1MzI5RkU2MUY0NTkwMzQ5QzNBRkE5OTJGMjMwNDBBQTBDNjNGNzkwMzFGNTgzQzlFMkQxQzk0ODFCOUIwRTc1MzdEODRGMDc3NTQ2MDI4OTc5MUZBMkFBRTJGNEIxQUExNDVGMjlEQTczQzVGMEQzMDQzRjlFRDEzCis5N0Y0RUVDMworMTg1Mzk5NTg2QTMxNEM2N0Y1MThEMDA2ODgzNQorRDY5QjQ2NTEyOUYxQTZBMTNGNjQ1MEFBODdEQ0M3ODE5QkY5MUMyOUQ4MTIyMkUxRjI3ODE4QUU5NTk1NTdDMzZCMTcxNzU2RjE2NTMwNUEyNjNFQTc5NEU1MkQ5OURFODlCN0E4MUZENUZERDFCNjAwRTU4NDhCMDAxQTg4MDQ1QkYzRjg3MzdCQThCQkNFNEU1NjlBNkYwQjA2NzE0OEQwNTQzMTg3RTYwN0NGQ0VEOUFEQkEwRDNEQzU0OEQ1RDk3OEJFN0UwQzJDMTQ2REY5MkMwRkY0Njk0NjE5MEU3Q0QwODdDOEM0M0I2OEY3MEMKKzVGM0E0NDRFCiswMTFFRDY3RkE0NEU4Qzc2MUYwNzI1QzAzQgorNDEzMkI3QkE4N0MxRkU5MEM1Mjg4RjkzOTBCQjEyQjMxNkU5QTI3REMxN0I3Mjc5NDk0NEMwREVCNTIzMDJFMDM1MTk2RTNCRjc3MzMyNzY1REUwNEU2NTgwM0FBMkZDQjJBNUNBMzREQTZGMzExNzUwNzc0OTMwMDhBMzA5NTAxNDJBM0FEMgorMEM4OUY1ODgKKzM5QTU4MTgxNjQxQkU3NDQ0QUJGNkZCNUM4CitDMUIyMEQxQTQ3Q0RDREJDODE0RTIxQkIxNUZBOEI0RDZBQTJERTFBM0Y3NzZGM0JCOTQxMEVBODA1NTI2QkE5QTBDOEQzRTcxQUIwNEE1NjFFOEM3OUI5MkM4ODAwNUYxREFCNkQ0N0MxOTQzOTc1RDQ5ODdBQjJBMTE2OUZCOEM2MEU2QTgzMEY5QjYyNzZEMTE4N0NFQjU2MEY1NDBDRDc4MkMxOEM0QzE1Q0ZCQUE5QkRDMQorOURCQjIzQzQKKzQ0QTkwODgxMDE0N0MyOEMxRTNFRUEzOUVGM0QKKzJBRkU5MzQ5QjE1MkMwQTIKK0VEMzk2QjM5Cis5OThFNjVEQkRFQ0EzMzEzQ0VBRkRGRjIxOTY5QkMxNzUyNjgyQ0QwMkRGM0FCRDBDRDYxMjk3RDg0OUM3OTE5OTJERgorNkEwRDFFNzQ4OEM1ODk4NDQzM0NGQUNDMzNDN0IyMTIxRkNGMzIwNTgwQUQ5N0IwMTlCOTUzRkExQ0NFOTk5RjdCQTE2NTBEODdFNworRjZGMDI0NEREQjBEMDM5NTQ4RDQwQzIyMUU1N0VDMzAwQ0NDQzcyQThGNEYzRTVENkQ1MTlCCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hpCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoaQorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGkgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ0IHB1dAorZHVwIDMgL0MwMDk1IHB1dAorZHVwIDQgL0MwMDk3IHB1dAorZHVwIDUgL0MwMDk5IHB1dAorZHVwIDYgL0MwMTAxIHB1dAorZHVwIDcgL0MwMTA0IHB1dAorZHVwIDggL0MwMTA1IHB1dAorZHVwIDkgL0MwMTA4IHB1dAorZHVwIDEwIC9DMDEwOSBwdXQKK2R1cCAxMSAvQzAxMTAgcHV0CitkdXAgMTIgL0MwMTExIHB1dAorZHVwIDEzIC9DMDExMiBwdXQKK2R1cCAxNCAvQzAxMTQgcHV0CitkdXAgMTUgL0MwMTE1IHB1dAorZHVwIDE2IC9DMDExNiBwdXQKK2R1cCAxNyAvQzAxMTcgcHV0CitkdXAgMTggL0MwMTE4IHB1dAorZHVwIDE5IC9DMDEyMCBwdXQKK2R1cCAyMCAvQzAxMjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE0NCAtMjM2IDc1NyA3MjhdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjlFQUJDNTNGRjdCMjYzNzY1Mjk2RDM1RUQxQkE0NTE2QkYKKzRCMkQyNDYyRkI2MkU4NzVDNUEzQUEyOQorNTdFREFFNTU5NEM5NEM2NjUxCisyQ0M2RTA1OQorMjhGMTMzMDJDMEE5MzBCQTZENzZEMTg4NTUKK0NDMTY4OTZGNjFDQjYwRDZDNzc3QzQwREYwMzJERTEzNDg3NTAwQzE5MTQ3M0U0NkJGQzkyQzg3OUIxNzRBNjBBNjYxNTJEQzAxRDA0NUJBMjUyRkExNjA1QkNGQUJGMEFEMkNBMDEzOEIKKzdDODk4NjVDCis4MzBBNTNGNjMxODkzMTlEOEM4MkZGMTkyNQorMUIxRDM3MzUzNkUxQTNBMzFCNzg3RjQwODc1RjkyNzk3MjgwNjc5QzJGMTkKK0VGNDBBRkU4CitGQ0M4ODc0QzdGRjU5MTAxRjBCNjc1OTgyNUNDCis0ODM2REQwMUQxRTgwMTkwODQzNTVDMDdFNjk2ODVBNUE0RDU0NTVBRTgwRkNFNkQ1MkM3QjEyNDU4MUQ3RDI3NDYzRTY1REJBODMwMTU1QUQ2OUUwQ0NEMzg1OTdBMDFFQjUwMTU4MDA1MTY4NURGMUY5Rjc3RTY2NThFNEJCRjQxODY2NTgzMjgxODY0RjFGODM4NzRENEY0MzdFRDI2MDZDNzkzQzI1QTUxNkNCNUEwOUQwQzQyRDJFMUI1NjRCMEFCRUZEQzZCRDVCRUU5QUJDNTM2NEFDOUNBMjczQkM3OERDRDgwMzhBN0U5NDhBN0Y3RUJFQTlFNzAKKzU4QTIKKzE3NDVBMEVCOTU0ODI3N0QyRjJCQTI5QzJCCis2OEYxQ0I0NgorREI1RUMwRjNEMjNBQjUyRjE5RDI2OUJENDEKKzgzRjE4RDE2M0Y4NzYzMkQxNkI1NTE5MEE5Mjg0RDdBMkUyNEQ1NkFBODc3RkNEMDg1Q0NEQUVCMDE5ODYwRjlCREQ1RDhDNTdCRjBDQjBCNDE2RUYyN0FBQTUwRDcxQTJDNjM4OUQxODE2QTY2OUQ5MjU4NDA5RjhEQzlEOTIzMkNDQzZGRTYwRTk1MEVEQzQwMjhCRjlENDZGNzg3MUVERDYyNTczQUE0NDkxNDgwRkNGRjg3QjZEQkEyNDg5QQorM0M0RDAxNjgKKzk4OEQxNkZDRTlBOTFBQjIyNTQ5NUVBQTY4NEIKKzhFQURDNUQxQTNDMjg5RkRGRDRBNTY4MDcwQjk4NTU5REZCOENDMEExMUREREMwNDNCQjAwNDRBMzAyRDJBRkRGQzUzQkRFMkIzQjE5RTk3REY0M0FCMTRDQzkxREZENjdCN0I1RUM5NUM5QkVGNTk3MzQ3RERBOTUwMURCNEI3ODY2RDI1QzQ1QkRCRTYwRDNCQkFEMDUzMUU2OEM4OUZDNjU3N0VBRjJERTE2NEJGNzI2MkE0OUEzRTc0RTlERTA3REI5Qjc5NzYKK0IxQjFBNTgwCis5N0YyOEJBQzhERkQ3NTA3NzE0MDQ2QjI5MzkxCisyQjMxQ0FGOTg1NjFBOTkzMzI0Q0Y1ODczRDJDNjA1NzEwNzlFRkJDN0Y1ODNCNUY5NEREMTNENUJGQzI1MzE4MTI4Q0ZFMEY5QzRFOTg1NUMyNUQyNjgxOUM3NDNGMjcyNUJDMzE0NEZEQjgxNTNCNUM4MjNDRjI4QzFDNkQyNkY0MjAzQzQ5QzMyNkQ2MUVFMjZBRERDRTQxQUExOTEyNkVBNTUwOTE5MTE5NTUzQkVBQzhFNzRCNDBFN0ZDQzc5OUM3MzRFNjZCNzAwODk1NzFBNERGM0MyRTk5QzI0RUI2RjJCQzU4MUM0NTBCMkM3RTM5QTEwMTkyRUEKKzAxMkEKKzlDNUJBMzE4MzEyODFGNjY5NEREMjM5RTMwQTM1RjhENDhDOEQ4QTA4OUQ1QzUyNjA0NTM0QworMjk0QkFERjQKKzIwM0VGMEZFMEU1MEI2OTE0QjBCOTRBRUIxRTMKKzExMzgxQUNDMDE3RUI4NUM3OTE5NzI3ODBFREI1MEE1ODVFOTZGODYyRjAzOEQ4MDVBMEQ4RjFFOTNDODI5N0E2MDlFQjZFREJDNjE1QkQ1Rjc5QkQyQzM2OTE1OEQ3OTYzNjk1RDNENjIwMDZDRDY5OTFBMzBEN0Y5RUQwQTkzMUI2RDUzRUY2NTREOTFCRjU3OTY5MzQzOTEwNUU3QzJDRkUxRkVENjc4MzUwNDIwNEY4OEFCMTA5NEIyMDhCNDk4RDREMkRCQjAyQjE2Mzk1N0NFNzQ5MDBBMUUzOUQ4OTY5NTc5RjAwQTFDOTkzQkJGCis0QTAwNDAyRAorOUIwQkEyQzlCMzRGRjNGOUU4QjE4MkEwMjI5NAorNEUwMkNCNkQ3RkQ5REVFMUU4QTcyQjQ4QUQ5RUNEMTkyRkVGNDNBMDBGQkU3QUJCMDc5NTI4RDJFMjhCRUU4NzgwNTdENzdFOTAyMzdGODYxQUZBODIzMTg5N0MzRTRFNUIzM0VBQkM1NTdBQkE2QkU2OTY3RjI2NjlGMTRFNkZENjg5QUMwQjVFMjUzMDBDRTRDMkI4MjM1MkM4Rjk1MDlDMEVGMDdBMTAxMTFBREYxOTQzODc2MjZFMDUzMzIxMzkwQTIxNjhGOAorOTBGMzI2QTAKKzQwNUZBQjQ2QUFGNjM4MjQ0NTZGMjRBMkNFRDkKKzFBNjUwMzJGQjk4RDQxQTg3QkYxRjZGODJFOUYxOUI1ODlENzFCQzBGQzg5RTJBMzNCNjNGNjJENjBGRjRFQzc4QTgwMDFFNkIxNjRGQjVEQzc5Mjc2NDBGNkIzN0MwQkM2OTRENzQyNjg4MUIyM0MzQ0M5OUExOUEyQjVGRUJERDc5NkRGRDNCQkNGRTQyMjVBNjQ2ODNDNzU1ODNCNUEwNDQzRDU3NTBDQTMzOTU1M0NDRTdENUMzRjBDN0VDNjdGODg4OUY1NTQ2RTgyQjk2M0MxMUQ0MkNGRkMzNkVGRDlGNUVFNjlGOThFQTRCRTk3RTVFNkYwMjQ1OAorQUFGOQorRTkzNDA5MzcyN0FCMzFCNjE2MUJEQTdGMUE4M0RGQ0ZBQUREMUIwM0UyQTFFODI0RDU2QkI3RDNCQTg5NjdERTc3MzVFMTVDRjM3RjhFRjBFQTgzRkU2QTQzQjI2NjBGMUFDQkFDNEZBQzAzNjk4NkE5MkI3Mzk2MkVBQUJFODQxNzUxM0EzNDExNDUzRUQzNjRGQ0YyCisxM0U1MEEzOAorQ0FCMUI1MzE3RDI4NzhBRUU2ODIwNTk0MDMwQgorMjY5MDdFNUUzMjU3QzBDNkRGMUQ4OTdDQUQ4MDJENTMzOTM0QzBFNUYxQjNGNUMxQjM3MUZBNTdBMDZBQjhFNkVFMTdDMEE3ODYyMTk3RkE4QkVFQUJGQTdCRUQ1MDNGNEQwNThCODQzODgxMzNEMkYwNjFEMzJEMDBEQzI2QzFCOEZFOUI3NzIyQjgzMzgyN0U5RTkxMjc1NDE2OUQzNTFENDhGRkY2Rjg1RTg4ODM1QjdGMTIxMkFFMDkyQTg2QUYwMURBRDYzQjM3ODM1MUI2QzMyRjU3ODAxRjYyNjZBNUMwRUY2QTJBRTdEOEREMTBBRjhFQThGRDY5CitCNzE5Cis2QzBCRkY2Q0U4NEJDQTdDMjM1QzNGRTgzODM3M0YyQzc5OUQwQ0I1QjZGNkQxNzQzQgorMjE2Rjk1OTQKKzk1NEIzOUQ4NkExQkZCMTBCRDQ4MjI1RTExCiswNjQwQTgxQ0YyMzBBRTQ3QzgyM0FEQjMyQTBCOTY1M0VGNzZCN0I1MUM1ODc1NkI2N0YyQTFFQjA0NTYyOTQ5ODYxNzRFMjFFMEQ4NzJCQURGRTU3RDE5REEwRUY5RTkxRTBCNjY0QzFFOUE3MjlBOTgzQ0UyRURGQzc4MDEwRjMzM0JDQUM1OEEyRjU1MjExNzhGODI5NTg5Q0YxQzkyRjAyNUE0NDExOUY5RDJGMzYwQjRBOTQ2ODU3ODBFCis5MUIxRDMzQQorOUMzNTkxMjE0NTIwMEQ2RTY2NEZFODBDOTlFQworOUIwMDk0Njc0NEJDNjIwNDZEODBDMDI1NEE2RTE0OTQwQkUyRUMxN0U4MzY0NjVBMzJCNTMxNEUzOUE1Q0YzMEE4NUU3MTcyMDA4RDM4NDI1QTUzODYxRDMyOTMyOTFEM0U1MTcwMUREQTdCOTY4MTBBOEE1ODYxMUZFMjcwMzc0Q0Q4MDI5NTBDRjA5MEEwOUUzMDZCQzNBQTNEQ0FDNENBQUUwOEJERTU5MzdCQThBNThGOUZENEFGQjVBRDEyMkMzNzJERTYyODJCN0EzN0NDRTQwRThGNDQ0RDY1OTY3RDI1QTY0NEU3N0E4Qzc1ODk4RTcxNDAxOEU2CitEREQ3CiswRUE5MDRBMzM4MDMzMzhBRkY0QzY3NjdCRDdBNjMxQkYwMjk5N0VFMEJDNDQ2RUExMTREQzg4QUYyREY2NkI5NTgyMzhFNTU5MkM2NUZDMEUxRDEKK0E3NzI0MjBFCis5MzY3MUEzMUVCNzE2RjI2MTI1MzNCQUUxQgorNzUwMzE4MzY1ODMzOTgzNDAwRTkwOTQzOTM0Mjc0RkVEQkE4QzQyQUM3NzdDMUJGMTlENTRCOEJCMDZFMDgxMzA3QkNBMzY0Q0Q5QTVDNzFERDdGMkRFNjIyNThENjM2QTc4ODkxOTkwNTIwODY4Mjc4OUE1NDFEOERDOTdDQzQyQ0VBMTM0ODcwMDVBQ0MyNzNGNjUxODkyNDYwNUQ0NTIxNDBGMDA2MTExNDQ2MkYzMEQzQTIKKzgxOEZERDY3CitCNUY3QzNBMzdGRkFBODg2ODE2OEMzMzhEQ0FFCisyODM5ODg0NkFBQUNGODVCQzdENEMxMEMwNjUyNURGNjQyNDM5NzA1QTU3QzAyOTRFM0Y2QjNFOEFEQkU2RDVGRDA1RTgxMzhGOTU5NDJCNDVDNUQ5RUJEODEwQ0UxRkJEOTZDMzQ0MTMxOTcxMkUxMEQ5QzU2QzA5QkNFMUI0MUM5ODYxOUUzQUFBNDk0OTA3MDc1QjQ0NjczQkI3MjcwQUZDNjg5NTYxNzE0NTZFRjE1MEVBMjIzQTZFODkyNDAyQjBFMjA0MDdGRkQzMjMxQjg4QzY3ODhENDFCOTExNzQyRTFEQkIyNTNDRQorMjVGMDRERkEKKzAwNTUzMjA3RkQ4MDg5MzYxRUMyQjgzMUZBCitDOEIzNUE3MDZFMjVBNTg1RkQyMzlGMTU4QTIwRURDRUEwOENGQzI4RkI1NTIzM0JDOTQ4MUJENDkyMzdEQjcwOUIwRDBDOUUyNDgyRDEwQTIwQzM5MDdGOTExQ0MwRDU1RjBFQTE2NDU1MkZFODgzMUQxQjNCMTM3RkVBQ0IzQkU4NzAwMTJBMTFFNUFGMERBMkY3Qjk4RUU2ODZDNTI1NTMxNjgwMjY4MTRGMjAKK0MxNDBCQzNCCisxMUIxNzhENUJGOEZDRTYyNTc2RTMxNkYyQTY0CitBOEY0NjkzOUU0RjA1NTJGNUNCQzRGM0ZGMEU3QzkzNjc0RkFFMTdGRkZBMTU2NDY5RDI2QTZGNUY0Rjk1NzY0M0M1RkYwODM5RjU2QTJBODdDNzQ1QTcyNUUyQjBGRjVFMTRGRjVCOTlCRjFDQUU3NDZBMTA1RjI5RUY5RTMyODI5RUVDM0RFQjhGM0E1NjgwQTQwRDREMTZGRENFMjYyN0E0N0VERTNGNkM5RTlCMzREN0MzMjQxN0E1NUQ0NjEwQUQ2MDlCM0JGMDc1MUVGQzdERTY3NDJFRDM0NTg0RDg2QzEyNjhGQUVGQzQ2NUE1NzI1QkU5RjFFMTIKK0UwRUQKKzU0NkYzMzlGMUNGNjkxMzMxQkFFNzZBRkJBNEYzNTFDMEM3QTkzQTI1RTRGOEIKKzNGQ0FGMTZBCitDNTVBRTU5Njk3RkYyMjAzRjhGQzcwQzNENQorOERDNDg0QkVEQTE3QTkzMDg1QjUxRkI2MEFFNDgzODQ1Njk3NDY1RTZEQTgxRUYzRjAwOEFBRTAwMjE3RTVCMzVGNkE3RUE1OTMyRjJEODlGN0E2MEZBMkE4REMyMkU0QTM3REY5ODNDRDU4RTA2NDhEQjlFNkE3MjRGNTQzMUYwQjUzOTUzNEIwMTg5QjU4MENGMDY3MjUxNUQxRDdGMUI0RTk0NUUyMUM5MzEyQzgzREFDCitFNzM5Nzc2OAorNzJGM0Y5NDA4ODQ5Nzc5N0M5NzAxM0ZEOTg1OAorQzgyMTlGRTI2RjJBMzlEOTYwNzRFMzE5NTYzQ0MyNzU0NTRCMDNFRUQ2MzY2OTczMjcyMkQxOUVGNUY4Q0ExMUIwNTE5RjEwNEVGNEVFRDk1REJGQzFCMTc4MkUxNkM4REI1MUM2ODlDNTA5M0IyNzVEMTM0MDMzQjBFRjhGODk3MzFEMEQzNTk4REJDRjY5ODQ5OUZCODE1MkRCOTY4M0EwRDY1RDQyM0U0QjIyQjYzQjY0MEYxQkVDOTRFNEM0QTZERDkyQTU5NjY5RUFGMkFBOEVEQjQ5Mzc2MkVFNzAxNEUwMkQzQUM0QzdGQUQwMENFMTMyN0E1OTg2Cis2MEQ5Cis3RDA4REM3QzA2NDY5ODc1MkQ0NUVCNzRDRjhCRURCRjBFRkI0NUE4QTAxQTg1NERDRTZDMjlCRDMzNkIzNENBRDdDNkY1NjFDMDIwCitGOUM3QjlCNAorRDZFRTVCNkNCNTVCMzFBRDg1OTcyN0ZGM0E5MQorRDZFRkY5NzEyMTgwMjc3OTJGQzQyNDUzMjdCQTFENDIxM0EyQUFFMDNDNEY4OTY2Mzc5NjkyNEYyNjUyQUUzNzk2MTFFQ0FDNjQ4QkUyNTBEQjVENDNGOTVCRUVBNTg3NURGNzhDRDEyOEU0NTk1RDE3Q0NGNDA1ODc4QkQwMTc1MzY5RDA3NDc1MkIzNDFGN0RENkQ4OTg4NjA0MUQ4QTk0Mjc2MzJCRTg3REREODEwODUwNkE5OUY3RTc0NDQyQ0Y1MjhGNkEzNTZGMzc0OUEyMEFCRDkwNTc1MzVBQUVBQjdDQ0IxNzgyMDMzQUExMjZEOUYwMDQ0QzMzCitCMkU2CisxNzE0OEU1MDYxN0Q1OEEzQkIKKzAyRjdEMzFFCitGMUQ4QTJGNDRCQjA2NjYxQjNCN0VBNkM3MDZDCiszNDMzOTc3RTQwRUU2NzUxCitDRTFBQUEyMQorNTQxOUU2MDRGMjhEOUUxOUY4OTQwM0U1REVFMDI4NzQ5QUFDODJCNjNEMkFCMDU4MkNEOEY2MEU5MUMwOEQ3REIwODIKK0QxMzc4MEFEQkQ2MUI3NEZENTZGMDBCN0EzQjQ1QUM2ODI5NkFDMkYzRDhCQkY2QTBFMEY3OTMzNzg2MkVFRUYwQzNDN0Y3MjY3NzMKK0M1MDc1MTMwMDQ4NTM1MEVCRDBFOTI4RUMxNkMwRkIxQTU3NzI0NDRBQ0NGNTZDODZENjQzQQorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyaSAxMi4wMCAvUFNPd3N0ZHV0Y2hpIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MWEyOTM4MzQyOTM2MmEwZDAxMGYwMTEwMjkzMjI3MmMzMTI1MzYyZjAxMmEzMzM2MDExOTI5MjUzNzM5MzYyZDMyMmIwMTFhMjkzODNiMzMzNjJmMDExYz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyOTM2MmEzMzM2MzEyNTMyMjcyOT4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MGIwYz4gOTM0NiAxMzM4NSAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI2NyAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjY3IDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyNjcgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjY3IDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxNGIgU0YKKzwwYjEwMGYxYjEzMTYxNT4gMTI3MSAxNDU4IDAgMjA1NSAtMSBzCis8MDAwNTAzMDAwZDFhMTMxNTEyMDAwODEwMWIxNzEwMTkxMTAwMWIxNjAwMTQxMDBlMWExYzE5MTAwMDE5MTAxODFjMTAxYTFiMDQxOTEwMWExNzE2MTUxYTEwMDAxNzEwMTkxMTE2MTkxNDBlMTUwZjEwPiAyMDU1IDE0NTggNyA4MzY0IDAgcword3N0OmR1dGNoMTIgU0YKKzwxZD4gMTI3MSAyMDg2IDAgMTQzNCAtMSBzCis8MjkzNTM5MjkzNzM4MDkzNjI5MzczNDMzMzIzNzI5PiAxNDI2IDIwODYgMCAyODc2IC0xIHMKKzwwMDM0MjkzNjJhMzMzNjMxMjUzMjI3MjkwMDJkMzcwMDM4MmMyOTAwMzcyOTI3MzMzMjI4MDAyNTM2MjkyNTAwMzgyYzI1MzgwMDI3MjUzMjAwMjYyOTAwMmQzMjNhMjkzNzM4MmQyYjI1MzgyOTI4MDAzYjJkMzgyYzAwMzIyOTM4MzQyOTM2MmEwODAwMTUyOTMyPiAyODc2IDIwODYgMTIgOTQ2MSAwIHMKKzw0MT4gOTQ2MSAyMDg2IDAgOTUzMSAtMSBzCis8MjkzNjI1MzAzMDNkPiAxMjcxIDIzMzAgMCAxNzczIC0xIHMKKzwwMDM3MzQyOTI1MmYyZDMyMmIwNjAwMzIyOTM4MzQyOTM2MmEwMDM2MjkzNTM5MjkzNzM4MDkzNjI5MzczNDMzMzIzNzI5MDAzNDI5MzYyYTMzMzYzMTI1MzIyNzI5MDAyZDM3MDAzNTM5MzMzODI5MjgwMDI1MzcwMDQwMzgzNjI1MzIzNzI1MjczODJkMzMzMjM3MDkzNzAyPiAxNzczIDIzMzAgOCA4NTk2IDAgcworPDAwMmEzMzM2MDAyNTAwMmIyZDNhMjkzMj4gODU5NiAyMzMwIDMgOTUzMSAwIHMKKzwzNjI5MzUzOTI5MzczOD4gMTI3MSAyNTc1IDAgMTk0MyAtMSBzCis8MDAyNTMyMjgwMDM2MjkzNzM0MzMzMjM3MjkwMDM3MmQzZTI5MDg+IDE5NDMgMjU3NSAzIDM2MjYgMCBzCis8MDAwZjAwMzgzNjI1MzIzNzI1MjczODJkMzMzMjAwMmQzNzAwMjgyOTJhMmQzMjI5MjgwMDI1MzcwMDM4MmMyOTAwMjkzYzI3MmMyNTMyMmIyOTAwMzMyYTAwMjUwMDM3MmQzMjJiMzAyOTAwMzYyOTM1MzkyOTM3MzgwMDI1MzIyODAwMjU+IDM2MjYgMjU3NSAxMyA5NTMxIDAgcworPDM3MmQzMjJiMzAyOT4gMTI3MSAyODIwIDAgMTc5MiAtMSBzCis8MDAzNjI5MzczNDMzMzIzNzI5MDg+IDE3OTIgMjgyMCAxIDI2ODIgMCBzCis8MDAxND4gMjY4MiAyODIwIDEgMjg0OCAwIHMKKzwzNjMzMzEwMDI1MDAzODM2MjUzMjM3MjUyNzM4MmQzMzMyMDAzNjI1MzgyOTA2MDAzMzMyMjkwMDI3MjUzMjAwMmQzMjJhMjkzNjAwMzMzMjI5MDAzYjI1M2QwMDI1MzIyODAwMzYzMzM5MzIyODA3MzgzNjJkMzQwMDI1M2EyOTM2MjUyYjI5MDAzMDI1MzgyOTMyPiAyODQwIDI4MjAgMTIgOTQ2MSAwIHMKKzw0MT4gOTQ2MSAyODIwIDAgOTUzMSAtMSBzCis8MjczZDA4PiAxMjcxIDMwNjUgMCAxNTEyIC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBjMDYwOT4gMTI3MSAzNTUxIDAgMTY4NSAtMSBzCis8MDAwYT4gMTY4NSAzNTUxIDEgMTg4NyAwIHMKKzwxMDE4MWMxMDFhMWIwNDBhPiAxODgzIDM1NTEgMCAyNjc1IC0xIHMKKzwxMDFhMTcxNjE1MWExMDAwMDk+IDI2NzEgMzU1MSAxIDM1NzEgMCBzCis8MTAxOTExMTYxOTE0MGUxNTBmMTA+IDM1NjMgMzU1MSAwIDQ2MDUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxZjJjMjkwMDFmMTExYzAwMzYyOTM1MzkyOTM3MzgwOTM2MjkzNzM0MzMzMjM3MjkwMDM4MjkzNzM4MDAyNzI1MzIwMDI2MjkwMDJkMzIzYTMzMmYyOTI4PiAxMjcxIDM5NzQgNiA1NDcwIDAgcworPDAwM2IyZDM4MmMwMDMyMjkzODM0MjkzNjJhMDAzODJjMzMzOTJiMmMwMDM4MmMyOTAwMzkzNzI5MDAzMzJhMDAzODJjMjkwMDA3MzgwMDMzMzQzODJkMzMzMj4gNTQ3MCAzOTc0IDkgOTUzMSAwIHMKKzwzYjJkMzgyYz4gMTI3MSA0MjE5IDAgMTY1NyAtMSBzCis8MDAyNTMyMDAyNTM2MmIzOTMxMjkzMjM4MDAzMzJhMDAxZjExMWMyMzFkMWQwODAwMWUzMzA2MDAyNTAwMjQyNDI4MjkyYTI1MzkzMDM4MDIwMDM2MjkzNTM5MjkzNzM4MDkzNjI5MzczNDMzMzIzNzI5MDAyNzMzMzEzMTI1MzIyODAwM2IzMzM5MzAyODAwMzAzMzMzMmYwMDM3MzMzMTI5PiAxNjU3IDQyMTkgMTIgOTQ2MSAwIHMKKzw0MT4gOTQ2MSA0MjE5IDAgOTUzMSAtMSBzCis8MzgyYzJkMzIyYj4gMTI3MSA0NDY0IDAgMTczMyAtMSBzCis8MDAzMDJkMmYyOTAwMzgyYzJkMzcwZD4gMTczMyA0NDY0IDIgMjU1MiAwIHMKKzwwMz4gMTM5OCA0ODExIDAgMTUwNCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDA0MTYxNzFiMDQxNTEwMWIxNzEwMTkxMTA0MTUxMDFiMTcxMDE5MTEwMDAyMDcwMD4gMTUwNCA0ODExIDMgMzc4NSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBlMDYwYTBjMTAwNjA3MGMwZjEwPiAzNzg1IDQ4MTEgMCA0NzQ0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDIxYjAwPiA0NzQ0IDQ4MTEgMiA1MDk5IDAgcword3N0OmR1dGNoMTIgU0YKKzwxZjExMWMyMzFkMWQ+IDUwOTkgNDgxMSAwIDU5NDggLTEgcworPDI1MzIyOD4gMTI3MSA1MTU3IDAgMTYwOCAtMSBzCis8MDAzYjJkMzAzMDAwMzkzNzI5MDAzODJjMjkwMDM3M2QzNzM4MjkzMTAwMjgyOTJhMjUzOTMwMzgwMDM3MzMyNzJmMjkzODAwMjYzOTJhMmEyOTM2MDAzNzJkM2UyOTM3MDYwMDI1MDAyODI5MmEyNTM5MzAzODAwMzYyOTM1MzkyOTM3MzgwMDM3MmQzZTI5MDAzMzJhMDAwYjAwMjYzZDM4MjkwNjAwMjUzMjI4MDAyNT4gMTYwOCA1MTU3IDE3IDg4NTkgMCBzCis8MDAyODI5MmEyNTM5MzAzOD4gODg1OSA1MTU3IDEgOTUzMSAwIHMKKzwzNjI5MzczNDMzMzIzNzI5PiAxMjcxIDU0MDIgMCAyMDcyIC0xIHMKKzwwMDM3MmQzZTI5MDAzMzJhMDAwYjAwMjYzZDM4MjkwOD4gMjA3MiA1NDAyIDQgMzM0NyAwIHMKKzwwZjM3PiAxMjcxIDU3NDggMCAxNTE1IC0xIHMKKzwwMDNiMmQzODJjMDAzODJjMjkwMDM3MzgzNjI5MjUzMTAwMzQyOTM2MmEzMzM2MzEyNTMyMjcyOTAwMzgyOTM3MzgzNzA2MDAyNTAwMzcyNzM2MmQzNDM4MDAyZDM3MDAyNTNhMjUyZDMwMjUyNjMwMjkwMDM4MzMwMDI1MzczNzJkMzczOD4gMTUxNSA1NzQ4IDExIDcxNTkgMCBzCis8MDAzZDMzMzkwMDJkMzIwMDJiMjkzMjI5MzYyNTM4MmQzMjJiMDAxZjExMWMwMDM2Mjk+IDcxNTkgNTc0OCA1IDk0NjEgMCBzCis8NDE+IDk0NjEgNTc0OCAwIDk1MzEgLTEgcworPDM1MzkyOTM3MzgwOTM2MjkzNzM0MzMzMjM3Mjk+IDEyNzEgNTk5MyAwIDI2MTYgLTEgcworPDAwMzQyOTM2MmEzMzM2MzEyNTMyMjcyOTAwMzIzOTMxMjYyOTM2MzcwODAwMTczODAwMmQzNzAwMjcyNTMwMzAyOTI4PiAyNjE2IDU5OTMgNSA1NzA2IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDAxMDA1MGQwMzBlMGUwMzBmMDUwZTA4MGQxMD4gNTcwNiA1OTkzIDEgNjgzOCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDgwMDE2MzMzYjI5M2EyOTM2MDYwMDJkMmEwMDNkMzMzOTAwMzcyYzMzMzkzMDI4MDAzMjI5MjkyOD4gNjgzOCA1OTkzIDUgOTUzMSAwIHMKKzwzODMzPiAxMjcxIDYyMzggMCAxNDU2IC0xIHMKKzwwMDJiMjkzMjI5MzYyNTM4MjkwMDMyMzkzMTI2MjkzNjM3MDAyNTM4MDAzNDMzMmQzMjM4MzcwMDMzMmE+IDE0NTYgNjIzOCA1IDQxMjcgMCBzCis8MDAzZDMzMzkwMDMzM2IzMjAwMjcyYzMzMzMzNzJkMzIyYjA2MDAzODJjMjkzNzI5MDAyNzMzMzEzMTI1MzIyODAwMzAyZDMyMjkwMDMzMzQzODJkMzMzMjM3MDAzYjJkMzAzMDAwMjYyOTAwMzMyYTAwMzkzNzI5MGQ+IDQxMjcgNjIzOCAxMSA5NTMxIDAgcworPDA3MzY+IDE1ODkgNjU4NSAwIDE4NDcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwODE0MDYwZjBkMDYwNT4gMjAzMyA2NTg1IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM3MjkzOD4gMzE3NyA2NTg1IDAgMzQzMiAtMSBzCis8MDAzODJjMjkwMDM2MjkzNTM5MjkzNzM4MDAyNTMyMjgwOTMzMzYwMDM2MjkzNzM0MzMzMjM3MjkwMDM3MmQzZTI5MzcwMDI2MjUzNzI5MjgwMDMzMzIwMD4gMzQzMiA2NTg1IDggNzM4MCAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBmMDgxNDA2MGYwZDA2MDU+IDczODAgNjU4NSAwIDgwNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOD4gODA1OSA2NTg1IDAgODExMiAtMSBzCis8MDczMD4gMTU4OSA2OTMxIDAgMTgyNCAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMjA0MDkxMTA2PiAyMDMzIDY5MzEgMCAyNDk1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzcyOTM4PiAzMTc3IDY5MzEgMCAzNDMyIC0xIHMKKzwwMDM4MmMyOTAwMzgyOTM3MzgwMDI4MzkzNjI1MzgyZDMzMzIwMDI2MjUzNzI5MjgwMDMzMzIwMD4gMzQzMiA2OTMxIDYgNTg2OSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDEyMDQwOTExMDY+IDU4NjkgNjkzMSAwIDYzMzEgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwODAwMTQ+IDYzMzEgNjkzMSAxIDY1NjQgMCBzCis8MzMzNjAwPiA2NTU2IDY5MzEgMSA2ODAyIDAgcword3N0OmR1dGNoMTJpIFNGCis8MTIwNDA5MTEwNj4gNjgwMiA2OTMxIDAgNzI2NCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMGU+IDcyNjQgNjkzMSAxIDc0OTAgMCBzCis8MDAwYTA2MDAzODI5MzczODAwMjgzOTM2MjUzODJkMzMzMj4gNzQ5MCA2OTMxIDMgODg5NSAwIHMKKzwzYjJkMzAzMD4gMzE3NyA3MTc2IDAgMzQ5NCAtMSBzCis8MDAyNjI5MDA+IDM0OTQgNzE3NiAyIDM4NjAgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwxMjA0MDkxMTA2PiAzODYwIDcxNzYgMCA0MzIyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAzNzI5MjczMzMyMjgzNzA4MDAxYjM4MmMyOTM2M2IyZDM3MjkwNjAwMzgyOTM3MzgwMDI4MzkzNjI1MzgyZDMzMzIwMDNiMmQzMDMwMDAyNjI5MDAzZj4gNDMyMiA3MTc2IDcgODMyNyAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDEyMDQwOTExMDY+IDgzMjcgNzE3NiAwIDg3ODkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzZj4gODc4OSA3MTc2IDAgODg5NSAtMSBzCis8MzgzNjI1MzIzNzI1MjczODJkMzMzMjM3MDg+IDMxNzcgNzQyMSAwIDQzMjAgLTEgcworPDA3Mzc+IDE1ODkgNzc2OCAwIDE4NDcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwODE0MDYwZjBkMDYwNT4gMjAzMyA3NzY4IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDNiMmMyZDI3MmM+IDMxNzcgNzc2OCAwIDM3MDMgLTEgcworPDAwM2IyZDMwMzAwMDM3MjkzODAwMzgyYzI5MDAzMDMzMjcyNTMwMDAzNzI5MzIyODAwMjUzMjI4MDAzNjI5MjcyOTJkM2EyOTAwMzczMzI3MmYyOTM4MDAyNjM5MmEyYTI5MzYwMDM3MmQzZTI5MzcwMDM4MzMwMDM4MmMyOT4gMzcwMyA3NzY4IDEyIDg4OTUgMCBzCis8M2EyNTMwMzkyOTA0MzcwNT4gMzE3NyA4MDEzIDAgMzkwMCAtMSBzCis8MDAzNzM0MjkyNzJkMmEyZDI5MjgwODAwMjExMjI5MmEyNTM5MzAzODBkMDAzNzNkMzczODI5MzEwMDI4MjkyYTI1MzkzMDM4MDAzNzMzMjcyZjI5MzgwMDI2MzkyYTJhMjkzNjAwMzcyZDNlMjkzNzIyPiAzOTAwIDgwMTMgNyA4ODA2IDAgcworPDA3MWU+IDE1ODkgODM1OSAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGYwODE0MDYwZjBkMDYwNT4gMjAzMyA4MzU5IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDNiMmMyZDI3MmMwMDI2MjkyYzI1M2EyOTM3MDAyZTM5MzczODAwMzAyZDJmMjkwMDA3MzcwMDI2MzkzODAwMmEzMzM2MDAzODJjMjkwMDM2MjkzMTMzMzgyOTAwMzczZDM3MzgyOTMxPiAzMTc3IDgzNTkgOSA3OTIzIDAgcworPDA3MTI+IDE1ODkgODcwNiAwIDE5MzcgLTEgcworPDM3MjkzODAwMzgyYzI5MDAxZjExMWMyMzFhMWIxMjEzMTgwZj4gMzE3NyA4NzA2IDIgNTMwNCAwIHMKKzwyMDAwMzMzNDM4MmQzMzMyMDAzODMzMDAzODM2MzkyOTAwMzMzMjAwMjYzMzM4MmMwMDM3M2QzNzM4MjkzMTM3PiA1MjgxIDg3MDYgNiA4MjQwIDAgcworPDFmMmMyOT4gMTI3MSA5MDUyIDAgMTYzMSAtMSBzCis8MDAzNjI5MzUzOTI5MzczODAwMjUzMjI4MDAzNjI5MzczNDMzMzIzNzI5MDAzNzJkM2UyOTM3MDAzYjJkMzAzMDAwMjYyOT4gMTYzMSA5MDUyIDYgNDYwMyAwIHMKKzwwMDM4MmMyOTAwMjYzOTJhMmEyOTM2MDAzNzJkM2UyOTM3MDAzNDMzMzczODI5MjgwMDM4MzMwMDM3MjkzMjI4MDAyNTMyMjgwMDM2MjkyNzI5MmQzYTI5MDgwMDFmMmMyOTAwMDczMTAwMjUzMjI4PiA0NjAzIDkwNTIgMTEgOTUzMSAwIHMKKzwwNzE5PiAxMjcxIDkyOTcgMCAxNjQ5IC0xIHMKKzwwMDMzMzQzODJkMzMzMjM3MDAyNTM2MjkwMDMyMzMzODAwMzEyOTI1MzIyZDMyMmIyYTM5MzAwMDJhMzMzNjAwMjUwMDFmMTExYzIzMWQxZDAwMzgyOTM3MzgwODA4MDAwZjM3MDAxZjExMWMwMDJkMzcwMDI1MDAzNzM4MzYyOTI1MzEwMDM0MzYzMzM4MzMyNzMzMzAwMDI1MzIyODAwMzIzMzM4MDAyNT4gMTY0OSA5Mjk3IDE3IDk1MzEgMCBzCis8MzEyOTM3MzcyNTJiMjk+IDEyNzEgOTU0MiAwIDIwMjUgLTEgcworPDAwMzQzNjMzMzgzMzI3MzMzMDA2MDAyZDM4MDAyZDM3MDAzMjI5MjcyOTM3MzcyNTM2M2QwMDM4MzMwMDMwMzMzMzM0MDAzMzMyMDAzNjI5MjcyOTJkM2EyOTM3PiAyMDI1IDk1NDIgOCA1ODU0IDAgcworPDAwMzkzMjM4MmQzMDAwMzgyYzI5MDAyOTMyMzgyZDM2MjkwMDMxMjkzNzM3MjUyYjI5MDAyZDM3MDAyODI5MzAyZDNhMjkzNjI5MjgwODAwMWYyYzI5PiA1ODU0IDk1NDIgNyA5NTMxIDAgcworPDI2MzkyYTJhMjkzNj4gMTI3MSA5Nzg3IDAgMTgyNiAtMSBzCis8MDAzNDMzMmQzMjM4MjkzNjAwMzQyNTM3MzcyOTI4MDAzODMzMDAzODJjMjkwMDJhMmQzNjM3MzgwMDM2MjkyNzI5MmQzYTI5MDAyYTMzMzYwMDI1MzIwMDJkMzIyODJkM2EyZDI4MzkyNTMwMDAzODM2MjUzMjM3MjUyNzM4MmQzMzMyMDAzYjJkMzAzMDAwMjYyOTAwMjUzMDJkMmIzMjI5MjgwMDI1MzIyODAwMzMyYTJhMzcyOTM4PiAxODI2IDk3ODcgMTUgOTUzMSAwIHMKKzwyNTM3PiAxMjcxIDEwMDMyIDAgMTQ1NyAtMSBzCis8MDAzNjI5MzUzOTI5MzczODI5MjgwMDI2M2QwMDM4MmMyOTAwMzkzNzI5MzYwOD4gMTQ1NyAxMDAzMiA0IDM0MjAgMCBzCis8MDAxNzM4MDAzYjJkMzAzMDAwMjYyOTAwMmQzMjI3MzYyOTMxMjkzMjM4MjkyODAwMjYzZDAwMzgyYzI5MDAzMjM5MzEyNjI5MzYwMDMzMmEwMDI2M2QzODI5MzcwMDM2MjkyNzI5MmQzYTI5MjgwMDI5MjUyNzJjMDAzODJkMzEyOTAwMzkzMjM4MmQzMD4gMzQyMCAxMDAzMiAxMyA5NTMxIDAgcworPDM4MmMyOT4gMTI3MSAxMDI3NyAwIDE1NjEgLTEgcworPDAwMjkzMjM4MmQzNjI5MDAzNjI5MzUzOTI5MzczODA5MzYyOTM3MzQzMzMyMzcyOTAwMmQzNzAwMzYyOTI3MjkyZDNhMjkyODA4MDAxZjJjMjkwMDI2MzkyYTJhMjkzNjAwMzQzMzJkMzIzODI5MzYwMDNiMmQzMDMwMDAyNjI5MDAzNjI5MDcyNTMwMmQyYjMyMjkyODAwMjUzMjI4MDAzMzJhMmEzNzI5MzgwMDJhMzMzNj4gMTU2MSAxMDI3NyAxMyA5NTMxIDAgcworPDM4MmMyOT4gMTI3MSAxMDUyMSAwIDE1NjEgLTEgcworPDAwMzIyOTNjMzgwMDM4MzYyNTMyMzcyNTI3MzgyZDMzMzIwOD4gMTU2MSAxMDUyMSAyIDMxMTMgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYzA2MDkwMDA2MTYxNTE1MTAwZjFiMDQwYT4gMTI3MSAxMTAwOCAxIDI2OTggMCBzCis8MTAxODFjMTAxYTFiMDQwYT4gMjY5NCAxMTAwOCAwIDM0ODYgLTEgcworPDEwMWExNzE2MTUxYTEwPiAzNDgyIDExMDA4IDAgNDE5NyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFmMmMyOT4gMTI3MSAxMTQzMSAwIDE2MzEgLTEgcworPDAwMWYxMTFjMjMxMTFkMWQwMDM4MjkzNzM4MDAyZDM3MDAyNTAwMzgyOTM3MzgwMDNiMmMyZDI3MmMwMDMxMmQzMTJkMjczNzAwMzgyYzI5MDAyYzM4MzgzNDAwMzQzNjMzMzgzMzI3MzMzMDAwMzkzNzI5Mjg+IDE2MzEgMTE0MzEgMTEgNjk2OSAwIHMKKzwwMDI2M2QwMDMxMzMzNzM4MDAzYjI5MjYwMDM3MjkzNjNhMjkzNjM3MDgwMDE3MzIzNzM4MjkyNTI4PiA2OTY5IDExNDMxIDUgOTUzMSAwIHMKKzwzMzJhPiAxMjcxIDExNjc1IDAgMTQ1NyAtMSBzCis8MDAzNzJkMzEzNDMwM2QwMDMxMjkyNTM3MzkzNjJkMzIyYjAwMzgyYzI5MDAzNDI5MzYyYTMzMzYzMTI1MzIyNzI5MDAzMzJhMDAzNjI5MzUzOTI5MzczODA5MzYyOTM3MzQzMzMyMzcyOTAwMmQzMjAwMzgyYzI5MDAzNzI1MzEyOTAwMjczMzMyMzIyOTI3MzgyZDMzMzIwNjAwMmQzODAwMjkzNzM4MjUyNj4gMTQ1NyAxMTY3NSAxMiA5NDYxIDAgcworPDQxPiA5NDYxIDExNjc1IDAgOTUzMSAtMSBzCis8MzAyZDM3MmMyOTM3PiAxMjcxIDExOTIwIDAgMTc3MCAtMSBzCis8MDAyNTAwMzIyOTNiMDAyNzMzMzIzMjI5MjczODJkMzMzMjAwMmEzMzM2MDAyOTI1MjcyYzAwMzYyOTM1MzkyOTM3MzgwOTM2MjkzNzM0MzMzMjM3MjkwMDM0MjUyZDM2MDgwMDFmMmMyOTAwMzgyOTM3MzgwNzM3MzQyOTI3MmQyYTJkMjc+IDE3NzAgMTE5MjAgOSA3Nzk4IDAgcworPDAwMzQyNTM2MjUzMTI5MzgyOTM2MzcwMDI1MzYyOTAwMzgyYzI5PiA3Nzk4IDExOTIwIDMgOTUzMSAwIHMKKzwzNzI1MzEyOT4gMTI3MSAxMjE2NSAwIDE3MzYgLTEgcworPDAwMjUzNzAwMzgyYzI5MDAxZjExMWMyMzFkMWQwMDM4MjkzNzM4MDYwMDNiMmQzODJjMDAzMzMyMjkwMDI1MjgyODJkMzgyZDMzMzIwZD4gMTczNiAxMjE2NSA3IDUzNDQgMCBzCis8MDczND4gMTU4OSAxMjUxMiAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGEwNDEzPiAyMDMzIDEyNTEyIDAgMjQwMyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDIxPiAyNDAzIDEyNTEyIDAgMjQ3MiAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMjBhMDgwYj4gMjQ3MiAxMjUxMiAwIDI4NzAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyMj4gMjg3MCAxMjUxMiAwIDI5MzkgLTEgcworPDM3MjkzODAwMzEyZDMyMDkzMTI1M2MwMDM0MzMzNjM4MDAzMjM5MzEyNjI5MzYzNzAwMzkzNzI5MjgwMDI2M2QwMDM4MmMyOTAwMjczMDJkMjkzMjM4MDAzNzJkMjgyOTA4PiAzMTc3IDEyNTEyIDggNzYzMSAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgxNikgMTYKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDAzNiBwdXQKK2R1cCA0IC9DMDA0NCBwdXQKK2R1cCA1IC9DMDA0NSBwdXQKK2R1cCA2IC9DMDA0NiBwdXQKK2R1cCA3IC9DMDA0NyBwdXQKK2R1cCA4IC9DMDA0OCBwdXQKK2R1cCA5IC9DMDA0OSBwdXQKK2R1cCAxMCAvQzAwNTAgcHV0CitkdXAgMTEgL0MwMDUxIHB1dAorZHVwIDEyIC9DMDA1MiBwdXQKK2R1cCAxMyAvQzAwNTQgcHV0CitkdXAgMTQgL0MwMDU4IHB1dAorZHVwIDE1IC9DMDA1OSBwdXQKK2R1cCAxNiAvQzAwNjUgcHV0CitkdXAgMTcgL0MwMDY2IHB1dAorZHVwIDE4IC9DMDA2NyBwdXQKK2R1cCAxOSAvQzAwNjggcHV0CitkdXAgMjAgL0MwMDY5IHB1dAorZHVwIDIxIC9DMDA3MiBwdXQKK2R1cCAyMiAvQzAwNzMgcHV0CitkdXAgMjMgL0MwMDc2IHB1dAorZHVwIDI0IC9DMDA3NyBwdXQKK2R1cCAyNSAvQzAwNzggcHV0CitkdXAgMjYgL0MwMDc5IHB1dAorZHVwIDI3IC9DMDA4MCBwdXQKK2R1cCAyOCAvQzAwODIgcHV0CitkdXAgMjkgL0MwMDgzIHB1dAorZHVwIDMwIC9DMDA4NCBwdXQKK2R1cCAzMSAvQzAwODUgcHV0CitkdXAgMzIgL0MwMDg4IHB1dAorZHVwIDMzIC9DMDA4OSBwdXQKK2R1cCAzNCAvQzAwOTUgcHV0CitkdXAgMzUgL0MwMDk2IHB1dAorZHVwIDM2IC9DMDA5NyBwdXQKK2R1cCAzNyAvQzAwOTggcHV0CitkdXAgMzggL0MwMDk5IHB1dAorZHVwIDM5IC9DMDEwMCBwdXQKK2R1cCA0MCAvQzAxMDEgcHV0CitkdXAgNDEgL0MwMTAyIHB1dAorZHVwIDQyIC9DMDEwMyBwdXQKK2R1cCA0MyAvQzAxMDQgcHV0CitkdXAgNDQgL0MwMTA1IHB1dAorZHVwIDQ1IC9DMDEwNiBwdXQKK2R1cCA0NiAvQzAxMDcgcHV0CitkdXAgNDcgL0MwMTA4IHB1dAorZHVwIDQ4IC9DMDEwOSBwdXQKK2R1cCA0OSAvQzAxMTAgcHV0CitkdXAgNTAgL0MwMTExIHB1dAorZHVwIDUxIC9DMDExMiBwdXQKK2R1cCA1MiAvQzAxMTMgcHV0CitkdXAgNTMgL0MwMTE0IHB1dAorZHVwIDU0IC9DMDExNSBwdXQKK2R1cCA1NSAvQzAxMTYgcHV0CitkdXAgNTYgL0MwMTE3IHB1dAorZHVwIDU3IC9DMDExOCBwdXQKK2R1cCA1OCAvQzAxMTkgcHV0CitkdXAgNTkgL0MwMTIwIHB1dAorZHVwIDYwIC9DMDEyMSBwdXQKK2R1cCA2MSAvQzAxMjIgcHV0CitkdXAgNjIgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy01MCAtMjM4IDkyMCA3NjZdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMjQ2MEMwMUUwQzgxNTZFNkUyRTBGQUNDRUU2MTgxNzA4NDgKK0JGODczMERCMzJCNUQ2ODA2MDQ3M0MyMworOURCQTcwMTA1Mzc0NkYyNjYzCiszOTU2MjRFRAorMEE5ODY4Q0M4MEU3QUEwODY2REEyRjZGRjk0RgorOUUxRTZGM0Q3NTFBQTBGQjI0NTJDMTIxNjU1REI5MjgyRDY0MTc5OTIzRDdGRDEyQ0M1MTQ2RUQ0QTVBNUY3MjUyOEM1NTAwNDYzMDkzM0U0M0NBN0U0NEJCNkQzQTBBQTk1MjRDNzRFRjU2RTYxRDZBMTc1MDRDNjRCMTJERjk4M0M1REJCNEYxQUNFQzcxMzY0QTUzMzdDMkE2OTU4NUNBODRBMkRFMDExRTkwODQyMEI1RUY3NDBGQTg4QURBREY3QTFGNkFDOTFDRjkKKzA2REY2MjUwCis3QTMwQzNFQTJBRjMxNjE5QzVGNDI2MTc5NTI1Cis5NjE4NzIwM0QxMzM4RUFBNDY2OEFGOTk5NDNGN0QzQ0Y4MEZEQzgwM0QxQzRCQjA3MDk5RkFDMTAxMjlGMUI0NzEyODA3MjA0NDU2NDg3MkZCODlCMDBFMEQ0RTU5REUyMTU5MzVFQkE5MjNFMTE5NzRERDc5RkJBMjIxRTQ5ODdFMkRBN0M5M0NBOENDNTY2QkUzODBCNDE3MzAyOUU3OUJEOEZCRDI4MUM3MUU0Q0QyRDM1QjY0QTJERUZCMjlBRDg2MDI5NUY0QTczNDQxQTg0RjlENURFMEU0RTBEMkRBQUJGOTVDRTEyQjVDRTE0NkNFRkFFRTFDQjcKKzIzOEEKK0UzM0MyNDU0QzcwNzE0NzE5NUYyQjFDRAorMjcxOEIwMTcKKzlGMTdGOEQ0QUM2NTlDNDgzRENCMkJDMTE1Cis0MzczMTYxOUYyRjFDOUY2OTYxQTk0QUEyMTc2MDdBOUU2M0ZEQ0Q0MkU4RkI4NkI1MzhCQ0UxQUUyRkUyMTMwRTZCRjZDNjdGMjg1QUFGRTk5MThGOUJFNTA4NDVDRTM4QkZENzQwRjc5Njc1RTc0MTgKK0RCNDlDRjE0CisyMDc3QTFFMTUwNEVGMUM2MzA1RkNBMjY2NQorMzlENzdFOUM0Q0UyRjc0NjMzOTI4RDI1MUZBQzdBQTk3NUJFRjMxRjREQTRENworRkVGNTMzRjQKK0JDNjBCNzc4NTczNjgwQTc2Q0NBNzFCQjA0CitEMDMyMzQ0NTE3REMwODczOUZBOTcyODFBMzI4NjFCMkU5NEYxREQ5Mjc2NTExRTQwRDRGMUFEOTdEOENDNgorRDgyMjg5MzAKKzYwRUJDNTJFRTE1RDMxQTkxN0ZEMEY0MjlBCiszRTA2REMzRUFBMEEzRDgyMDM2OUVFQjAxMzdEM0E4N0UyOTREQUM3RDlGMkEzQzZEMzhDRjA4MgorNEU5NzRERkQKKzdFNEE4Nzk1MENDNEFBNzhGRkUwQUNEOTUxCisxRUFGNDRFMTgyNDk1ODEyRkYwMkJDNjM2NDJCNzM0NkRGMERFRDI3NkVBRDk3RkI1MzJEM0VFMUM2NjgyQjVEMEU2OEI5NUEzNkNBQjdDRjFCQjIxQTUwNTRCNDU0RjZFNzJFMUQ0M0RBNDREQzg3NTU4MzZEOEVBREJGRTBBNDEyQjc4MjAxRjYwQUYxQUJEMjc1CiszOUU5QkE5OAorRTBFREI4RDkzNzQxREVCMTM4MDlBNzUxNEYKKzQxQkI2NTAyQTgxNDI3RDVEQTk5MzEzOTM5NUVCMUY5NUM2RTQzNzcwN0Q2NkUyRTk2QzlGRDE1Q0MxNUQ0NzU2NDc2N0MyRENCMENGNTFDQzE0MkUzNTAxNTdCMTBBMTk5NzkyMUQ1NUE1Q0JENkNCNDU0RjYyNkNGMTQ4MAorNTRFNjE3QzcKKzFGQkZCNkY4QzYzOUZFRkY0MzJGNDNFRjg5Cis3MjI0ODY3QTgzN0M3MTBENTIxQTdENTJDMzY5NjI1QUUwMjJCOTkyNEE4NTA3Q0Y4RkZCRDY3NzExNkUwRDZCNEFEM0QwOTc5Q0Y3QjdDQzRFODc3RDJCOUMyNkNERDI5RjMwNEE0NjdGQTFEQTFBREREMTQxQTU3NjRFRURBQzIzQzYxQUQwMzU0RDhDRkY1QzZDQTJDRDQ5MTg5Nzk4QkY4QjM0QUM3MzI5MEE4MEZDM0QKK0ZDNUIzQzA5CitCOUE5NzVENEY0NDU2QTZCRkY5MDk3M0NCNjQyCisxMDQzRjdDNzhGRTU4NDQxNUI1QzE2MzJFNzVCQzM5MDkyOUU1RUQ2QUVFMUU5OTRFQkREMjFFNTg4MUQ0QUMwQzNENUJFQTZBMjJBMzI3QzM2QjlCNTk5MUUzQzdGQTQwNENFQzVBOUREMjY5N0IxOEE5MTI3QjgwRjcyMzE2QkVEOUU3QzZCMzRBM0QxMzVFQUY3N0Y2MDFFMUQ0MDI2NDNBNDJCMDQwQzk1Qzc2NjJGQUFGQTMyMDE3QzcyMkQxMUY3MkY0RTBFREJEQTZENzQwQzZFNzBBNzkyNjgKKzIwQTQ0OTkwCis5NDk1N0UyRTdGRTBFODExMTZCNkMxMUZDQworQjk3MDg1NjU3MjcyRDAyRUY5RUQ5QzA0NzhEODhFODFGOUQyNjI3NEM0MjAyQjdFQjc5ODJFRDZDNzY0RDY1NzgzNjYxRThGMEUyMDI0NTVFRUVBRDQwNTlDRTZGNEFFMEE5OTExRjMyRkM2ODZDQzY4RUIKK0U0NzIzMDhGCisxQjlGQzNDNjk1RTI3RTE3MkRGQjU2MTQzQUMwCiszQTBGRDE4MDJBQjZERDJERkFBMkQ5M0MxQkIyNTQwNTIyQkUxNEUzNkU4RkU1NkI2NjA1QjEyOTA4OTBDQUU2MUEwQ0EzMzc4ODQ3ODIxMjZCRjAyRTgwRjFCNDUyNzE2Qjc5REUzNzU0OTAxRTdEMkIyMzUyNTJEMkJCQzA1RkQxOTk4OTc3RDM5Qzc5Qjg4QTVDMEU4NTFFMEIzQ0QyNjdGOTVDRjE4NkNGNDQwOTExMzI5NThCODEyNTg1N0M4NUUzRUMwOQorMEZBM0MyQzYKKzBCMTYzRjcwNDcxRkNBMjM3MzYzQjlGMDM2Cis5QjY2QkE2QzM5MkY1NTlGREU5QkMxNzI1NjY2MDJDMEVEQzkzRTQyRTY1MTIzNjQyRjU0ODE2RUU4NDY1QTZDM0E4RERGOUNFNTY2M0JGMTNEMzEyMDU3NUUyQUM1RTgyMzg0RkUzQkU0MUIKK0U5RUJBRkNGCitFMEZFQzhGOUVDM0Y1ODAzQkZFOTg3NTdENQorMzJGQ0Q1QURGMzkyQjNDMUE4NjVERTNFMjYzN0FEOTQzMDNGNjhGRUExQkM4MzgzOTYyQjYwOUYzNUYwMkEyN0VDNkFDQUREOEJDQjNDREU2MjZBNDYxMDg0QzFBRTUzQzI3QUUwMkZDM0NBQTlDNTVDRTNGNTcwQUFFMzI2QjEyN0JENDc3QTU4NTJDRTVGQ0Y5Njk0QjlGMzQyODYyNworMzMyQTA3Q0IKK0Y5REMyM0M5QzFBMURDNjc3OTE1MkQ5NEM4N0EKKzQyQTkxNDhFMzQ2NzNBQUYzQ0Q5QkVFNzI1ODI1MDRCNzI3NUE4NEVGQkM2MjUwOTA1M0QwQjc1QzQwOTg2QjE2NzIyNzFFRUNENzkzNTBDMjYxMkQyNzMzQjQ3NjgwREZFQzY5Q0Q2MUI0MzBDRTc5QUVCRjQxNjdDNUQ2NTc3RjY5QTZGNDQwMUU2MjFCQjU4OTRCOTcxODBBNDM5NUY2N0Q4QzA2NzRDMUNENkZFM0FDQkIzRTkwNTQ1MTc1QzM5QzIxQUIzRUUwNUE3QUY4NTA4MzYwNDcxNzc2NEU0RUZEM0JBCitEM0RBMDZCRAorOEU1Mjc0MUQ2MDgzQkExMkFGQzAxQUExRjRFOAorN0YxRjE4NEZDMDM5NUI1REY2REJBNDc0NkQwRjg1NjhFQUE1RkQwMTY5OEE3Nzc2OThENTNEMjJDQkYyNjQyOTU2RkFDREQ3Qjg0ODk0OUQ5QzM3REE5Q0Y3QkY3RkRBM0I2Q0M3NjYzQjI0NTFFRTk4MjMwQkYyQ0RGMDFBNTQ5RTc4NTgwMEM1Q0NDMTYzMDYyNkMzM0EzRDU4REM0MTZGM0FBODk5RUNBMDU2RDhGRTQzRTI1NDUyMTJGMkQ2ODYxMUQxNzIzQ0I4RjBDQkI2ODU2NjM3M0JDOUQzNDczOTZEMzZBODRBMzk2M0YxRkU0ODMyNUUyRjM2CitEOEQ3CiszMgorRUJBNzU4NjQKKzdDQzNBREZFMEI1NzREREQ4M0EyNTk4Qzk0CisyMjQ2M0Q4QkFGRkVDOTQ3MzM0RTYyRjdCNEI0MDU0NDBFMDA0QkY2M0JFNzAxMzNGRUZEODY0MEZCODAwRjdEQjY3RTQ5OTcxRDJDNUEwRkMwOUVDOTE2Q0ZDMEQ0OUVCM0M5OTRCMzYzODY1NTcyOTA0N0Y0N0MwMEZGQTAzNjEwRDZGMEQ2N0M4QjhEMTE5QTlCNjVGRkJDMzgzREQ1NENFMzAwODAwNkRCM0E5RkUxMTcwM0NFMzJFNTVGNDdERgorNERDMjRCQTcKKzFBNEYwQkIxNjg5QzNCNkM1N0I2MUY4RTc2Cis0MUY1OEFDMUI4MEVCNzk1MzlDNDk1QURBOUNDODRCRkEwMTcyMjYzNUNBMEM1QUM2MTJCQ0UwNkFDOTVFMEQ0NTA5Q0ZGNUJDOTZFQ0JFODQ1M0NDQzE1MjA4QUZGQjc3RjAxRUY1RTQyRkM1QjQ2MDk4OEI2OUI1OTU2REFGMDRDMkQ1RDk5MTRDRTc5MTQyOEY0MTQzNDA5NjNEM0VERDBDMzBENTNCQTA0RkMyRjNCRDgyNEMwNDg3ODRDRTVFMjM0Q0EKK0IyQThCMzM0Cis0MjEzREU1OTczMTgzNTBDQTVFMjM2REQwMjIzCis2REY3MkYxOTVCMDM0NDlFOTk4MUM0OTgzRkYwMzg2OUFBNTdCRjI1MzFEN0RGMzIxMTJEM0I0MDk1MzlBQzUzOTYzOTlDNEUwM0I4NzU2MjJCMDFBMjc3OTBDREM5QkE4QjZGMzI4NDU1NTc1MDgxNDMzNUJDM0I2QTBEQTY1RDI4NENDMDk3ODI3Rjg0RjE5QkU4MDNBMkI5MDg4ODVBQTIyRkI0ODg1MzE1ODQzNTg1QzlDRTE2RDU4NDU4ODdGMzNGRUEzN0UyQjJCNUVGQjI0MDJBNjhEQTFCNjdGMThDOUQzQUIxQzM4MzZBNjY4RUY5MEIxN0E2MUIKK0ExNzI0RTNFCitDM0Y2QjY2RkE0MEIwMUVGMzcyMDM4NjI4OUVCCitEN0NDQjYzMTNEQkE5NUU5OTNDQURCODFGNTJENDI2NzJGNTlGNjNERTQ4QUZDQ0U4QzQ4QkM0MDgxNzEwNTNFRjlDOTcxOEY3OEIwQjg4RTZGQzhBRkFCMEJCRTEyMzRGNTE2NDMzQzY3NzRBMjRBMTU4NEM1MzcwNDVGMEY4M0VGMDE0N0I1NjREN0IzQUQzRDdGQUI4QzdDOUYwRjRBMUNCRTczRDFEQkMwNjJDMUUzNzQ1NzFBRTMzOTY2NDRFMTM5OEY5NDUyMjI5NUQ2QjMyMUY0M0RDQjRFQTdCRThBRkRCRjBCRDY3REVCOUFFRTUwMDUwQ0U0OUQKKzY5OUIKKzAyMzMzMjU3NDcwRjQ1RDFBM0FFMjkKKzZDNzY0NERGCitFNzE3RTBCREY1MkE5QzhCMDgzNDJGRTA4NworNkMwNjg3MzJCOUEwNjAyOEZGOTA4MkVDODlBQjcxQjM3OUI4NDhEM0I5QTZCRjNCQ0M1RTE1MDdCQjkzMDU2RTAwMUZGQzBBNjcwMUE0MTY1NzFBMTg0RUVGQTg5NzdGODY2MEZCMjJFNkQ4MjU5Njg0RDg4RQorRkJCRjkyQTkKKzVBOEQ4QjY2RjZFQTgzQjc4OTlCNjE4NTI5CitGN0NEOEVBMDk3MTAxMEU1RTU4QTgzNkJGNkJFM0ZGQkQ3NjdCM0MyNzNFMzA0RUQ5RUQyNDQ5MzQwM0U5NkU3MDQ3NTMwMjNFRDAyRTdCN0E0RDkwQTkyRTY5OUY3OTk1NTM2MTI2OEY4NUVGRDM2MzlDNDdGNzE3RTBGMjY4NUM1RjI5QTM1OEFDRkY5Cis2MTA0NEZGMAorOTMzQjhGQUIzM0Y1QjM0MENCMzQyMkE3RjQ1OQorQ0Y0N0Y2RjYwQjk1REM4QjYxQkEyMkRERjBEQjg3MjM1NjNGNzE3N0IxMDFCMjUzNDk0Rjg3NzBDOTVDMjg1NjY1NDUzN0IzRUM1ODU3NDMwODdGNDE4QThEQTQ0Njk3RTVDRUI3NDI4NzNDN0RDOUJCQkZGRDEwMTM0NTYyNTZCMzc2NUU2MjFFRTQxMEUxNEM4N0Y1OUU2NzU4OEM5MURBRDZGRDFBOTIxMzY4QzJDNkZGRjcxRUMxODBEQ0I3NDNEOUM3MUZCOUNGRkMyQUZGOEM0Qjk1ODM5Q0I2CitERjJGNEYwOAorRDVENUUwQzgxNDY2QzREQjlCRDJFMDA2NEUKKzU4MzJFODYwNkQ0OUMxMDA1MTlBRjM5QTcxMDE1RDZFQkM1NTNFQ0Q2N0JDRTAwQjlBQ0M4NEE3RkU0N0IzMUJDNzlDNEZEREU2QkU5MjRFQTU5RjFENkRDMEJGRUMyQ0NBRUZFNzdFMUY4QTlFMTkxQzcyNzAwODcyRjBBQTQyOUI4OEQxOTU5QzJBRjdGODFFMUNEMTJGNEVBRkYzRDc2N0FFNUQyQkI4MjI4MjE3MTZFMzNCMDEKKzVFQjlCMzQxCis5M0NGOTBDRTY1RTI0NDQzOTY2QUVBNzY0NQorMURGNjJFOTcyODQ0REQ1NzIyQTdERDcwMjA3MUUxMDZFNjRDNDg5ODAwNTRCMDU2QUFCMzg2NERGQ0MwMUU0QjA0NTYzQTU0MjkzRjVCQjI2NDJFNDNDMzZDQTlCM0UzQzA0RjlFQ0MwN0JCNDYwREU5RTA1NUE4NjNGNjkzMDA3NDFCNUI4NDc5QzI1NEU0QTVFNDU1NkU0NjAxNzI4RUI2MTUzMworOTYzNTJBRjUKKzJFRTUxMDQ2MUM3N0Y5OUJBMzAzNTlFNEMyMkMKK0RBOENGOEI4OTQ5MDExRjk1NzcxODREOEE3QTRGNzFEMEUwQUMyOTNDNkQ2NTZFNDBFOTc5N0Q5MjRDQzYzMUZBNjYxNjBDRkM1QkJBMTk3QUY1NUIzRjhEQTBBMDlCNEIzNEZFMkZEQjc0RTMwMjAxRTE2MEFCRUNDRURCNUJDQjBGNDI1NkI4NzdCRkU4MjlFQTE5ODRDOTI2QzAzMkVGOEVBRUYyNTkxNTNDNDM1MjM2QzU4Q0JGRjkxMEZGRTQ0NjUyOTRGMTA2Q0E4OEQ2QkUxCis5OTYyNjNBOQorMTJFMERFRDE5MzI4NDREOTYyNDhGN0I3Njg3RgorMTY4MUQxMDM3MzM5MjQ0QzUwOTQ1OThGM0I1MDA3RUM5MTQwRjJCREJCQ0QwRjVBRkQxODlGNjJGMDEwNEU5MTQzRDMzNkNFMzFGODY1NUFBRDREOTRENEIzRjU2RjQyMUJCREExMDAzNThBNUIzODkwNkNCMUEwRkE1MzREQjMzMzJDQjhBNTkwNDAxRDMxMzQwNDY0MUU3Q0FFNkFERjhBRjJGNUQzQjdCNjNGRDNBQTY3OTYzOURBMTAwMEQ3NUI0OEEzMEE1RTYzMzkyMkVCQUVBQTQxRTQzNzFEMTA0OTVENEMxNjBCNzhDODZCNzdFQTNDMDU5RjQ1Cis3OEE1QUYyNAorRkNCMjlDNjI5MjRFQTdFNzZENDBDQ0UxRUI1RgorQzNDQjgwMTQyNkZFQ0E0RDMyMUQwOEI4OUVFMEE4OThFNjA3OEQ3NjYxOEMzRUMyMzAwQ0U1MENBRDZCNUU3NTEyMjg4RjBFMkQ1RjkxMUI4REE0OEU3NEFFRURFOUQyRTJEN0NBRERGMUE0NjU5NUQwNkYzMTg1ODc0RkQ1ODVBOTFFMEI3RTk3NkI3NzgwODI1NzI0MDA1OTFFRjgzMzYwQkVGMjREMkQyMkREMEY3NjFEM0QzRDRCREIyRDUxQkNBMkY3RUQ0RUVFQkZEOUVGNDlDREZBQkNFOUUxREJDMzgyNzM5QzRDMzI5RDZDNzkyN0JGNjU0QkEwCis4MTBECitEOTVGQjcKKzQzMDY4NzQxCis4MUQ4QzNCQUVFMzVCQTA0NkU4QzZBMzIyQworN0ZCNEUxMzJDOEVCOTU3OUI3MUM4MzBERjA4QzBGQjQ4MjY1OTgyOUM0NTFCODc4OTYxNTZENDk0NTA0REUxQzcwRkJGMUI3RTRFOEY2QjU4MzQ0NDY4MURERDFGMzIwNUM1NjVFMTUzMTBCNDc3NUVFREU5QzE1OEMxMEQ2OUIzMTY4NEI0QTkzODlGMTlGMTFERjY1NDA1NjA2NUJBODRDCitCMTA3QjU5OQorQTIwMjA0MDRCMTgxNTJCMDdGRjI2MDkzRjQ0QQorNDk3MzEyREQ0QTQ3RTk3NDM2REU0RDQxNEVBRUYxMTk2NUQxNDcyN0I3QjQwMEIwMDBCRTg4NENCNTY3QTBFQzIwODQxNjdBOTg2OUIzOTI5MTE2QTFBMEQ3QTg2RTFERDlBMDI4NEM5OTMwRTI3MDI0ODI2QUE0OEJDMjRFNDg3RjM1RDg1QzE2QjFFNDQ1RTI0RTY3RTY2QTk4QkU2REQxRERCMzM2OTA0RDQ5NzgyNzBDOUFDRUZFNTlBQTg3OENFOTdCN0UKKzY2MDZGOTExCis1MENBOTg0ODE3NEVEMzhGNDE3MERBRTlDN0ZDCitBOUY3RUE1QUFCMjUxOTA3NkI3NzM4MUJENERGOEU1NzQ0OTBDRUQwNjlGMTk1QzVDM0U2M0YxN0UxQjNCMTRGNjdBQUJBQ0M2QkFCNEREQkQ5MDBGMTRDMDAyOTg3RTMzRjFCRDQ5N0RFQUQxODQxNkU1RTI2QjJBMzlGMDQ5Mzc5Qzc5MDIzREY5OEFGMTdGOEI5OUMxRTkzQjQ1OTQ0M0U1RDBEM0Y0ODVGQzYzQjJGNUE4RkRGRjZEMEUwNkExRkY4QTBBMjhGNDVGOTVGNjQwMEYwQjI0NDlCODA5RkZFQkNENDRGMDE1MDY4OEVFOUNFMDZEOTIwM0QKKzM0MUYKK0U2MTEwNzEwNEFGRDg4MUQ5MUJEMzVFRTM5NjI3QUM2MTJBNjU1ODg2MEUyMjc5MTg2NUZFNzk5NDZCNkI5NDJEODBGMUVENkQwMUUyNworMjVGNzlCN0MKKzZDN0Q1MzJBQTFGN0JBMUEyNTgwRTQzMUMxMEIKK0I0RDk0QTM4NzYwRkIxQUJCMTc1MkM1MjYzMkY0RjRCQjRGMzIzQkIzQTU0Mjk5NDlDNEM5OUFFNjdBOTNCNTNERkNGNUU0MzkxMTNCRTg5REFDMURCRTM2QTMwQTAxOTlGQzE1Qzc0QjlENEFGNUExQzFCNEZDQkQ4NDlEM0MwNTBEQjA3RUIwOEVCQjE3Rjg4MkI2MjZDMTM4MjEzQzZEQjRBRDQ3MkQzNjJBQTJCOTVGNjUxNzdGRDU0MDJGRDE2QUE5MTQzNjAwM0U4ODczQjgwQzJCNjZCMEMzNDRCRjI4QzBFCitBNUZENjFGOQorQjQxNjBCQUIxN0E1RTI0QUU2NkM1MDZDRjAKKzAzODI4RTdGRDMwMDgyNDNBMjE5OTNCRjlBNjlEQTRERTBDMjY1OEMwODM4CitFMENBRDU4QworMzRFODUzRDc1RkIzRkYzRkNFM0QwMDJCOTgKKzY5Q0JDMTc3MDM0QTczQUI3RTJCRUZFRjYzMTIyNkM0QzUxMDNEOEFBNjA1MkYzMjE2ODA5RkRCRUY1NTQxOUU5NDI5RkNDODg4RkE4ODg3NUY4REM4NUNDMUNGNkY3REM4RDEyRTZFNjdDRDgyQzlFMzVBCis4NEIyOTBDMAorNTMwNkE2ODZGOUY4NDhCQUFDNzc5NTkxNkM0MgorMUQyNzQ3NkUwMzNBNkRBQzc4MzM5NjhBQkRDOTMwNDcxOTlBMDNBOTU4M0E4NzREQTVGMTRFMUEwRjVENzU3MkVENTE5NkEwNkJFNTUxNzlDM0ZFRjk2OTRFRjE1OUNBMDQyQ0IzMUU2Mzc4QTk5RjZCQTM0RDUwRTZFM0I1QzVCQTc4MUU3NDVGN0FFMzc2RTQ4NDkzNkJEN0MxQzdBRjU5REI3NDQ5QzlGOUMyRjQzQTQwQzI2OTFBODk0OEQ3NjIxNUJDM0IzN0RDNDI3MUFBQTVENzI5NjJBOUM3QTY3NkQ3QTNDNjRBQkFDMzBGMzZCMkEzRTUxQzVECitERDI1Cis4RTdDNTcKKzNFMTVFQUU0Cis0Q0VFMEIyMEJFQUM3REE3MTMzRkNBMDRDMgorRTQzMUVFM0ZFMTE0RkU1REZDNzY2NkMyREEzMTZFM0EzRDNBN0NERUYzMUJBRTNDMDA4QUM1N0Y1NEM5OTQ5MzA1NzQ1QUZGMEE2M0U3RUU3OThDODYxOEREN0EwRjU1NTY0NzNDRENCNjAxOTQ5NEI5ODQ2RTAxNzhFQjhBRTY2RjM5REJDMUNEQjdBQzhCQzQ4OEZBODlGOTlFRDU4ODQ4RDdCMjE0RTg0QTJGQ0YKKzNDNjIwQ0QzCisyQTdGNkRDNjQ5RkIxODk2NEMxNERCRDY3MgorOTlBRTVCNDAyMzk3NTk3NTFFQjEyQUJENEE4NDY1NUIwMDU4MzBFMjIzMTc1MEJERTMxOTczNTMyOEVBQzM5NkUxNkI0MTlFMzE1NTVBNEFBNjBBMTIxMThEMkVBODJGQjcyN0M2NkNBMzNBOTQ5ODAxOTlENEFBQzNCQjMzMjZGRjY1OUEwNEEzNTA4QjI4OTMwQjZCRDFGQUIxMUFBOUI5NDQKKzdBQzA0NTZECiswQUY3RjZGRjVFODM5QkIyREM3MUY5RkMwOEQ5Cis4Q0FGQzkyRTE5Nzk4RjQ4NEExRDUyNzYxRUQ4MjM1NjI0MkU4Q0Q3RThCNEE4NkY3M0QxM0JBOEIwOUNENjk0MzU0OUREREE4MDY4MzRCQkNFNUM1REREMEQ5NDVFRDU4MjM4N0ZGQTAxNEFDODQwRDcyOUE5NzVFNEY2ODhDQjhCRUNCNzZENzY1NDFFNjBDMzZFQzY5RDgzOUE5RjcyQzE5RTEyMTgwQzJDNTE1OTY0RDE5OTU3RkQ3QjI2QTVBQ0MyNDkyMURFNTU5MUYxRjgzMkU0QUFDRjI4Cis3MEY2Q0E4OAorNEVBMkJFMDlCNzkxM0RFNDc5ODU4QTQ0NDUKK0VENDU0REYwMEIzMkEzRUUxOTYwNkI3REVEMjBFQ0JFNDJCN0Y5ODczMzI3RTQ2QkQ3MzJGN0RDREUxNEM2NTREMDM4RUM2Nzg1RkRGMUNERjg3OTA0NEFCOENERTU2RkVENjU1QUEzQjAyRDBBRjk5ODUwMDRBMTVGM0UxMjk3RjNDRTM3QzYzRTUzNTQ5NTRDNjVDMjFGMjZCRTE3MDFFNkQ3MjhCRDYxNjVEMTc4MEQKK0UwQjJDODYyCiszNzY5NjZCQ0Y5MzhEOTA4RTJFMzFDRkI2RgorNTk0RDMyNkREREFGRjA4NTkxMUNBNEZGNTZCQkU0N0E2ODk0QTcwMzEyNkQ3NDU3QTNBNjEyQkE5QjI2ODExRDBFRUY5OTVGRTREQUFBM0RCQzcwRUU2QzgzNjQxRTNCM0VBRTA2NjRERUJCRkZBMTU3OTZFNEFGNEU0ODVBRjlCOEQ4Qzk0Nzk2REQ2Rjg4MzFBMzhFRDkyQTU0NEYyNUEyRUNEQTE5MzJBMzE4OTBEMEQzODQ5QQorQThGRjYxRkUKK0RFOUUzNzdFRkE1ODhBNkUxQ0MwQ0U1QzcyNTEKKzJEMTk2RjhEOEYxMjg4NDI3NkU0QkM3RDg0NzIwN0M5MDVFRDQyQjFFNkE3ODBFNkU3MzNDNENCN0NCRUZEQTI5NjhDREQ1NDc3NUQzOEY4NjMzODkxODE2Q0Q5NjY2MzFGNDQ0MEE3NUM1NUM1OUNGQjE4MDkwNjdBMTAwQUI5QzVEODI2NDY5MTQyQUU2NUM5RTY0N0Y1Mjg0RkRFNUU2N0FBRjdEQzA5MjIyNTdDQzVERDVEMDdDNUVGNEVFNzAyQzJFQzIxQkU2MTFBOTgyOUUxN0YxNkFGNjlDNzhCMDVGQzgzN0QyMzBGQzEwOEU2NTQyMkVCRDhCRgorMEFBMAorMUMyQzMyNTA2NDBFNTYyNDczMEM4NjhFQjE1RTlBOEYwMEIwRjE2ODExOEE2RDc5NjAzRjU2OUM2NzdCNjAyOTdDM0QxNzkzOERCRURGMTk0MEU1RjBBRkY5NzFGQgorREMzN0M4OUEKKzdCRjBENkY1NDY4NDcwMzhCMjUwQTJBMThFMEYKK0Q5NzQxMzVGOTMxMERGMUM1NTEwRDIzNEU2MTk0MUU1NkZBOTA5RkQ2Q0Q3QjFGNjc0REY3Q0M5MTU1NUY1RjI1NkQyMjMxQjI4MjU0N0EwNjAxMkIyRTFGRTExMUE3QzI3NjhFQzk1N0I4MTc2RDhBQzY1NEY1NUM3Q0FFNDQ4RDEzNkMwMzIwMjZBQzdDNTQ2OEQwRDg5NzcwRkQ0QkU1MDQ2OTA5NDE4QjZBMTZEQkFCOEJDRkUyNDI3MEJFNjIxQ0Q5NUYxQTVFQjkxRDkyRDEyRjk3RERCCis4ODRBRThBQworOUNFMDJBNjJGNDFEOEU1QTBENUM1MUU2NEMKK0Y3MkI0QUQ5ODVEOEE1RTU3ODREQTIyREU4MDBGN0U5MkQwRkY5RTkxMTM1NTQzMDEyQ0VDNDNCNDk0Rjk3NEUzOURDMjdCQjFCRThGMjM2MkZBQjc2MUU5ODQ5RDJGNTVCOUNBMjY5MzJBOEVCNjQ1OUQ0M0MxRjkxRTAxM0E2MTI4MjhFNjVFMTJDOUVDMTZDRjlDMDQ1RjdENzY1QzcKK0Y0OTI0M0Y3CitDOTIxMzYzQjExODU2MUJCNTMxQkRFQTREMgorNjI2QTBBRDY2RDhDRDM5RERFNjRGNTRERTQzN0Q4RTM0NEFDRUMxNUYyN0NFNzI0NjVGMzdBRDlCMEVFNUYzQzc1QTRGQzc0NDY3QjgyNUMzOTMxRTE4N0MxRERDREE5RjgzMzZENjFFNkFBRkJGMjRCNUVFMUIwMDZGNzQ5MUJFMzYzNkQ3NTdEMzkwNTc1NzcxMUJENjUzOTUxQjRGRDFGMkI5RjU3ODlBMzIyOThEMjA5QUY5MThCRjM3NTVDNjUyNEY2Cis4Mjc2ODBFRgorRDQ1M0RDNDkyQUM2MTYwREY4NzcwRDNEOTJFQgorNjQ0QTFFODZBOUJGRkRFQUE4MTlFRTUwNTIxQTBCREI1M0Y2NkEwRDJEM0QwQjAxMkMxOUNCNzFBRDg4ODk5NzZBNEY4ODQzM0Q0MjY5QzAwNjNFODE5NTY2QUQ5QzM5NjIyMTc4QjMxMDYwMzVEMkU0OTg0REZBOTI5NDNBODczMzdCOUZCNEExRTFFODlDMTFFOTEyQzhGNDE3NDI0Njk3MzA4NTRBNzhBMjk3MEY4QzY2QzM4QjhFRDlFMzk3NjVERDdGM0FGRjY5NUM4QjFFRTRDM0UyNzJBMjVBQkMyRDA5RTQxOERENjcxODNFQjBGREY2NUQ0NjkyCis2RDFECiswNEMyMTI4MzRFODI1ODEzNzI3RTUzQjRFNTA2RjVGMzEzRThFMzFCMzI1QjFFMDBGRjkwNUM4RjU0NzgzNTJGQkMyREYyCitBRkQwRjQwOQorOERFQjVFMzBGMjEyOTgzQTZENDBCNUI5MTAKK0U0MUFGNEY5OUJBM0E4RTdDM0VBRTFGQTU3MEM4NEYzMzJBQTAzMTUzRjY4NjIxMzlDNDhCQjU1Q0I5NUQ5RDUyRDE1RjY3OUIyRjM0NjMxODc1NDMzNENEN0U4QzBDNkI0NkNCQTU2RUVFRQorMkJBNjJBOEEKKzRFQTBCQzgyOTQ1NDg2NjU3QkUyNDc5QzZFNjUKKzdBNEQ4ODc0ODlBMTYyRjNGNDhFMkQ0OTVCMUI1QjM5RDMwMjdBRTE3NkNGREJGMDhGNTRBQjVFNTQwRTIzQkM1MDlFM0MxNTBDN0FFRkFBRDRGQzc3MDgyQTM2RjM5MEUzMjAyNjQ4QTVFOUQ3RTY4NzFCQkE1NjBCMjZGNzUyRTJBQTE0OENGNjk5OEE5N0M2QUJEODY0OUE5OTk2RUI4NUIzNEYwRDBBRTI0NzQzQjZDMDk5Q0NFQzZBRTU5MTU0OTQ3MUVBRTdEQUQ4NzEwNThFRjNGMjdDOEVGNTNFMUVCMzIyN0JEOTE0RTRFRjA2M0MzRkFEMkVBQgorNDVGMworNzc5OTJEOUM4RDFCQzlBOTgyM0IyMERCMjVGMTAwMTNGNzcwODJDRDQ0M0MyNjEzQ0EyODc4OURBM0EzRUYKK0Q0ODlFMENBCitGMzcwQkYyQTc2OUI4RDJGMENDRjY5NDQ0MzlCCis1OUNERDBDMzgxMEUyRUU2NTFCNDg3QUM3NjZERkIyNEM4MjU1QjY1OEEzMkJCQkMxNUY5NEVFRUQzN0YwQTg0NDc3ODk5Q0U0QjQzNjE3Mzg3MTUyRTU2NzY1RUJEQTRFOUFFOTg5NzEwNTIwRDU5QzdDOTlCMjk4REIxNjY3NjhERDI3NDVENUY2ODRGQjkyRUM0MUQyQ0JBMTVCQjlFNDU5RjQ0RTcxMEE1Q0ZFQ0U4RTYwNUU4MUFDMzE5NTI0NzYzQkQ4QzMzQUMwNTM4OTBBQ0NDNTIKKzY4MUMyMEU3Cis0NzgxRUQ5OEJCQkQyQzRGQzUyREUzMjM5MQorN0Y1QTIwNjBFNjZCOTY5OUREODlFQzU2MkQyMUQzMzYzMTM5M0ExM0VDNDY1NjI4QTFFMDlFQjk2NzI1MzMxNUQ3RUJBMENFMDY0RUNGODRFMDE4MTI3QjQ0MTkyQ0U2Q0U3Q0MxRTE0RTUxQjU5NEM1ODI5Mjc4QjI4MEM0OTU5MDI4MkYxQ0E5MTkKKzYwRUNCQUU4CiswM0IzOTM4RTFGODU0RTQ3OERGMjMyNzQ0MDU2CisxNTkzRjMyQUJBM0YyRTMyODZCMDkyQjNGQUIyMkM5MzA4MjI5MzJGNTNDOTg3OEQwMzI5RjUwQzUwRTAzMDU3MEVFRTI5NzIzRDIwNkY2NzJDMzYwODUwOTMwRDY4MTk1NEVFMDU2NjZCQzBFN0ZGNjk1NDZCODRDQTNBM0ZGRjk5ODYxNENCNjkxMDVENTA1NTM4NkExNUQ3NTkyOUVEOTYwRUFBMzRENzlFNjZFQjIyQUI5MTIwOUNFNzA2MDM5MkU3MkIwQjkyODEzNzQ3MjI1MDYzQzcxNDRGQ0E1OUU1OUE2QTU2NUVDODUzCisyOTAyRDM0MgorQ0EwOTkwQTVGMUM3NTdGNDE5RjYwRUU2MzVBNAorQzhGN0EzQjYzRkNEMDg2OTk5MjZFQzlBNjY5MzlDOTI0QjEwNzMwODIxQ0I3ODIyRTU5MjZEOEIzQkZGNTE2Q0I5NTk5REQ1RjQ0RUVBRTc5QUQ1MjgyMEIzMDMzRUYxN0FGQzExQjNERjFFQThEOEUxMTJFMTBFMUU1RjM2NkFGQUExQkI3QTlCNTYzODkxRTU5MkY5OTM5NUNBODlCRDY5NDk4OTVGRUE4MEEzQzQwMEM2RkY0Q0RBQTAxQzU3QjVFNzA1RDJDRkNBNTNCMkREQjcKKzJEOTI4MkEwCis2RDhDMUFCOTFGOUVFM0QxN0I1MjMxRkI3OQorNTU1RDAzN0RGMDAxMTk0NDBCRUZBMTNGM0YyQjcyOUUzQTg2NjEwNDE0ODkzNTFCREMyMDYxMTNBQzdFRUZBQzlFOTREMDJBRkFBMUMzMDc1Q0YxQUQyNzJDRDExQjZEOERGOUZGNkRFQTRGNENGMDUwOERBMDcyN0VBRjEzQkIyQUM5OUI1MUFCMThBOUNEREVCRDU2NTQ2OUQ2NDFBMEQ2M0E3RERFQjI5RjFFCitCQTFFQTU1OAorODc0MDdFNEVDQTFCQ0Q1NUI4ODM2M0U0ODEwOAorQUU4NzAyM0YwMkM2MjJEMkE5OUUzNDA3MkZEMzdCMEZERTQwNThFNTFGNjY3QzQzOTBBNDNBQkUxQzY0QzkyM0NBNUY1MkQzRDlBMTA4M0JBNjczOUMzRDdBMzNDQkRGNjZCOTNEQTBBNjJFQjEyRjdBNEU3NjgwNDkyQzZFRUM4MjAxNUYzRDJDQ0Q1NzEyMzYwQzZFMkVGMDFFMThENDcxMkQ3NjYxREE5RDM2OTZEMDU1RTY0MjJFQjdDRDUwMzlDNjkxNjU1Q0ZGNjc1NDdFRjgwOUNFODkxNkMxMzY5RTI4QTlCNjNFMzAxM0Y3MjU4NUQ2QjUKKzM3MTFCRjkzCis1MEYzNEVGRUUyQkU1MjI5N0EzMzNDMjJGRQorMjlENUM0OTI3NEI4Q0JGQTQ5NEM5RkFDRDhDMTQ2NTk0NjU0MENEMjhCM0U3QTYxNTBBNDM0RENEQ0VFMkJDREEyOTIxQTUzQTM1NzM5QkEzNkE3ODU1N0ExQ0JGN0M0NkRFRjIyNDI0MjU0MjE3QzA1QkJGRENEODRBRTZCNTA4MjE4MDlEMzE1CitGMUE5ODlCQgorNDMwRDAxQzA1ODQyNDlCODJEMUFGRTM1MDMKKzMxMzc5Q0JGNzIzQkIxNDY5RjQzQTkzNEI5NTg2QzVFNkVBOEUzQTQ0RkI3NkZFM0ZEMzM4ODQwMjFFOTM4RDYwRTNGMDc1NDAzNjUxREU5RDNFNDI4MjA3RTk2NDAwNUYxMEE0M0Q3RkNFMkExRkVFNTMwQ0RBM0QwRjdGMUM2RDJCMkRDMDRCQjI2QUFBOERGODI2RDE5NUIyNjM2QzZGN0ZFRTMxQkJBQzUwREMwRTI3RUU5RkRGNDM2NTlCNzZGQzkKKzE2MzAzMTA2CitFNDlFOTExRTAwNTRGREY0OEIyNkI5MDE3OQorMEIzNzgwQ0QzQTEwNDcyOEI3RkEyNDAzRjk4MEQ1NTg4NEI3RTE5RDg2QURGQUNDNzlCRDhBMUU0NjZFRjY1OTU5RUFGOTE4NUQwMTU4ODE0QzJFODk5ODBFNkE0RkNBNjNFQjA4Qzk4REU2RDMwNTFBM0ExNUFDQjIyRjlEQUJBN0FBQTUxODk3RDMyQ0UyMTBFMUY0RTM5RjlBQzRDRDE0OThDQTE5NTczQzg3N0YwQgorQzYzQzkwNEYKK0M3NTYyQUUxQUZCOTg1QTBCNEMwRUIyOEY0NzAKKzE5M0NBMTNEN0UyNkFBMUUyMUUzRTU1REY4Q0Y2QzkzNzc1QUQ5Qzk5RUU2MUU5RDUyQjhDNUYxQjNFMDZDQ0JCRDhBQkIzMkQ0MDIzMTA4M0ZGMkMyREZFOUVGNzgxOTA1NTAzNDk0NzUzNjhENzRCMEQ3RkE3MDI2QzhGOUQ0MEFDRDVEOEY4RUVEQTBCOTY0MTdFQTcyNjI5RjYzMjNDRjc0NUZDQTFDQzVDMjU5Rjc0M0M2MTY3OEREOEMwN0FDNUM2MUNERjI1MTBDNTU3QTlFMkE1NjAxREJCQjcwOUI4RTQ3NThGMEUwMTlGMEQ3RjBBOEIwQUVFRQorMzlBRQorRjlCODEzMjNBNkI3RkYxMEQwRTI5Q0I3Qzc3OQorNjREMkRGMzQKK0Q1MTBERTJCREVGMTk2MzlFMDc2N0E2NTFFOEIKKzBGQjVCODg2NjEyRjczQTFDOEZDQUE5REU0OTVGODhGNUM0N0QxMDM1QzM1NUFCMEQ0NDYxQkVCMkVCNzlEMjNENUEyMTg3RkYyMTZGRjdBMTg5NjVBNkJDODMxNEY5NjYwOUY5M0ZENDk2NzgwQUM1REExNDg5QThCRDc0OTQ1ODA3MzlBODVCNTZGODVFNzRENUJEMkMyNUU0QkIxMUQwOEU2MjI0OTBDQkM2RTFDRDhDODVEMUQxNTJDN0NEREJGQjQ4NUQxODYzREY5MUFDOEE1MTZEMTg0MDkyODJGNUVEMjZENkM3RDA5REM5QzU3M0Y3NTU1NDM0RQorMzEyOQorQTZGMzlFMkUyOTMzMjdBRDA1NUJERTJFRkU2MDM0OEU3MUM0MDE1NEY1Qjc0NjAxMEEKKzA2MjZBMUE5CitGRTYyQzdGRUNDRjYxNThGRDFCOTJFMDA4MjA0CisxMjdBQURFREY3MTk3N0M5RDk0RDE5MkE4MzU5OTk5MTUwNUMwNjg5QkIxMjJDOTMzQjYwNjEzNDNBNEE0Q0IzNkM0QkM1NTYxNDRDRTI2QTFDMUM4MzFGQTM0QjIwMDMwOTk2QkYzNThENzcyMzEwQ0M0Q0Y4QzM3MEZCQkU4RDAwQzRDRUIwNUM3RjFBMEFFRkQ1RTEwOEM4MTVEMzlGQjJFOEJGOThEM0ZCNURBRjU5MTZENENBRTlFRTMwMTk0MDM1MEM1RDJCQTZBMjIwODQ0QkNBOTc1MUQ5N0FEMUU2RDkxN0I4NkEzM0QwM0MyRjM1OTAyODNBRTMKKzExOEQKKzcxNjk2OEMwCisxMDExRTk1RTZDRTBGMzBBQzc4MTAzMjA4MQorQzA2ODZEQTZCQThDQ0RDMzdDQzIzMjg3Q0VFRkY0NzM3NzhDQzRGOTE3QTU5NzNDNDY5RTg0QTYzOEY5RkZENkNFQTkxQ0I0QjYxMzQ1OUMwQjYzQjE2QkJDMDk0MEU0NUM1RDNFNDhENkExRTM1NzY4OUY3MzU2NzUyMDhFCis3NDJEODlEMAorOTIwM0Y3OEU5QkYwRThGQjI1NUI2NzU3MzgKKzkxNjM2QUJENUZGNjk0QjFDRTlEMDQwMTdGOTQzRjU4MzZGQkYzQTgzMTkzCitCMUVDODFEQQorMUJEQjBGRkU5NjVCNDdGRkRBQjk0NTcwNEE1NAorNkE5QTFBRUE3QzU1QUFBNQorODU2QUNGMjkKK0E4NzFBMUU2MjcwREMxMUIzQjBEMTEwMTlDNjU5RjdCN0ZENDgwQkZERTIzQkJFQTQyNkRDQkFCM0JEQUNBNDIzMUQzCis2MzZGQjlEM0FCMTJDNDA5QzkyNTRDODMzNjE1MjRBMTU5RkUxRjAyMjZEQTEyNzc1MzQ3RjY0Q0ExNEM0MTlGQkEwRDMyN0NFOUVCCitCMDUxMjlCNzkyMzBENzY5MUMyMDVGNjRDOUVFNDlFMDRFRDBCRTQxNUQ1MDE2MzdBQjQ5NTEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDUgcHV0CitkdXAgMyAvQzAwNDcgcHV0CitkdXAgNCAvQzAwNjcgcHV0CitkdXAgNSAvQzAwNjggcHV0CitkdXAgNiAvQzAwNzIgcHV0CitkdXAgNyAvQzAwNzMgcHV0CitkdXAgOCAvQzAwODAgcHV0CitkdXAgOSAvQzAwODIgcHV0CitkdXAgMTAgL0MwMDg0IHB1dAorZHVwIDExIC9DMDA4NSBwdXQKK2R1cCAxMiAvQzAwODggcHV0CitkdXAgMTMgL0MwMDk3IHB1dAorZHVwIDE0IC9DMDA5OSBwdXQKK2R1cCAxNSAvQzAxMDEgcHV0CitkdXAgMTYgL0MwMTAyIHB1dAorZHVwIDE3IC9DMDEwOCBwdXQKK2R1cCAxOCAvQzAxMDkgcHV0CitkdXAgMTkgL0MwMTEwIHB1dAorZHVwIDIwIC9DMDExMSBwdXQKK2R1cCAyMSAvQzAxMTIgcHV0CitkdXAgMjIgL0MwMTEzIHB1dAorZHVwIDIzIC9DMDExNCBwdXQKK2R1cCAyNCAvQzAxMTUgcHV0CitkdXAgMjUgL0MwMTE2IHB1dAorZHVwIDI2IC9DMDExNyBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwNyA3OTggNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY5ODk0MTNFQUM4QzYxMEI4NkI4RDU1NTg3RTU4NDAzMDBECitCN0Q0MUUwNzQ4QUIyMEQ2NUJEMUM0NUQKKzJDNTcyOTc2RjU5QTAyRkQ0RgorNzYwMzhFNUMKKzc1Q0E3MTM1MEM1OUMwRTI5RDI1ODBCMkVBCisxRjFGODlDRkE3MzU3QzM5RTYzNjQ5MTY1MTkyQjU4NzExMUE1NUUzRDIxOENFCitFMTMxNTE0OQorQ0MwQzE5NzY4RURBNDM4QkRCMTNCRUJGM0MKK0Y2MEY0NzU3ODRDMDE5NkE1QjA0NDY5NkQ4QUI2MDkxOTk4NEY5NDk0MDI1OEE3NjgzMDYKKzYyQ0JDMUQ1Cis1NTQ3MUUzNUQ2NThBNEU4NTM3MzdBQkFFMDU2Cis4NDdEMzQzMzhCMUFDM0E0OUQ2MkQ0MDRGRjExNDZDQjdFREZCNDk4RjYyM0U3RjAwM0JFNzI5NEZBNjkyQzhGMkE0QUI1QkQzMTREQ0YzMTI2MUIwMzNCQzJGNTZDNzBFMTc5MUMyMzI5NTIzRTlGRUM5MjA3OThFODk0RTgzMUZDRTFBRUY4NTExMjdCRTk4NUM1QTlCODMwQURCRkZBMEY1QTI3NEU5QTBFNEFDQUUxM0NDQzgzQTU3OUJDQTREMjY2MUEzNjVBNzAzMTU2CitFNDVCMkJGNgorQjRGNjQxNEQ3MTRGMzg2QzQ3QjczNTY5NzMKK0MyRkJBQkZEMDMwNTA4MkI0NTM5ODQwRjMzNTc5NDZBOTM5QkRCN0QxQ0JGOUVFRTAyRDE0NEIzNkMwRkQ2RENBMDA5N0RFRkFEMEU4OUQ2OTAyNjBGNEJEMDJGMDgzNDA4Mzg2NjY1Q0UyMzEwNEQ2RjY3NTNDMjMzQzAzQjFENTk0REE4MjFBODg5Q0Y0MzUwMjFCRjM5OTA5RDEyNjM0NTg5RjVFNTYxMzNDMworM0RGMDgwQjEKKzYyQzc2QzcyRjczNkIzRUYwMkUyOEQyRTJEQkIKKzM3NEJBOEIwNkFCMUVDMkYyRDQzQTYzMDU1MzAxRkVFREE1RjlDRUFEMDExMzMwODlGQ0YyNkY0RDg5QzFGQkQ3NDFDQzVCRTMyNUFBQTIxOTE1NjVCNzBGMkU3RTAwRkI4MzhFNTcwRkJDNDlBMzk0OEFBNzMwQTNBMkI0MTg4NDg3ODNGODQ5NkU0OEM2RjA0RkM1NTQ1RkQ4QUFGODg4NDY3RDFEMUNGRDJBN0UxQ0MxNUYwQUFDMkFGOTYyQkQ5NDBCQUM1NjM5OTAzN0NFNENBNENGQjQyQjdFNDBEQURBOEZGQjZFQTgwMDAKKzBEQzE0REQ0CitDN0I1MEZENTRDM0Y1MDg5MjVFRkNGNDUzMAorQkZDODQ4MUNBMjMwMUQzRTE4MjREMzkzODdEQTI3MzI4QzYzOUYxRENBNkJGMEZCOERFQUZBOTAxRTdCRjA5NDY0NUY2MjcyN0YwN0E3OTY3MUVCQzhGN0FFRENENjQ5MEFGQkFBMDk5N0ZENEI5QzA4MjM3QzVGRjY5MAorNjlBQ0E3MDMKK0Q3Qjk2NjRDRUZGMEIwRTJGRUNENjk5NkI5NUMKKzU5QkExNEQzNEM4MDEyRDkyMTQ1QTFCNDkxMUQ5RTM3RDUzQjMyQUU1NEU0RkFFRkUzNzA0M0RFMzMwRDMzM0Q5NzExNEQ3RDQ4RDQ5QzM2RDkzNzEyMTY3RTRDNTJBODlCODg0N0MzQUJENTU3QTJCRTY3NzUwNzdDOEIxMTQ0Rjg1REU1MDg4M0RCMUQ3NzAwQjU0M0UyRTEyMjNCQUM0NUE2RTQyQTM1MzIwOEVFODRCMzQwOThBRDYyOURERUMyRDEwMDUxCis1RjQ5RUEyMworNTU1REEyQTU4OTZFRDJBQTc3OEZGNDAyNEVBRAorNUNCRjNGNUUxREQ3QTQzMTQ1RTM5QzNBMEY4NTRCOTk5MkYzM0ZDNzE2REZFRUJEMEQ5N0NBRDhFMkY2QTZGQ0IyOTAwMEMyOTMxMjQ2NTJDQjVERkIyQ0RFRDVCNEFFRDcyMTVGODQ0Qzg2MjVDOEI0MkUwRUI1MkM3OTUzRThDMTkxNUU1RDY2MDNFN0E4MUUzOUVENzBFRDY2QjZGOUZENzRDQzRCMDk1QkJFM0JCNzM3QjgxMjJDODM2NTU0OUUwNjRBNUYzNEUxOTA0MkIyODRGMDE5OTQ2MzI2NUQxMjYzOEQ5NjNGCitCMjBGMUJCNgorRkZFOUZCQ0E5MzE2QzQ0NEE2RTlENkRBNDIKKzk3OEE5ODNEM0RGQjcxQUVGREE4NDYxOEJBNDY0QkMzMEY5RDc4MTFCOEE1MUIxQkE1RkFDNjlDOEQzN0Y4NUVCRDMwMDhEMzY3RkE1RkM0MkVGQ0M3MkY2M0IzNEFBMkNFQ0M2QjUyQ0NBQ0JDQTI4NEJEOEJCREZFRDk3QjMzRDE2QTE1QjI1RTBCQjdDMzA5CitEMjY5RkZBQgorNUY0QjBEOEIxQTRDQzE3ODE0RjNFNTI1MjUwNworMjVBOTVEMTU0NUE5NDA5NUNFRDUxRTcxOTg1RTkzMjI4M0FDMDQ1M0ZENDVEQzA2MUMzQTBCQjE1MDY4RDY5MUY0NTYzNjE3RkIyODIyNEJCMTM4OUM0NjNBM0FDOTg5QzQyODU1NEUxQjkzQzNDQTdCODZDRTMzREM1QkEzN0RBNjBGQjBBRTE0Q0JFMTg1QkU4NDFEMzlBNzRGODM3MjY4RTE5MDkzOEVDQzg5RjA1MjBDRDhCMUYwNjNGOEJBNzgzNUE2RkU5RjQyQzcKKzAxMkFBOTYwCitBQTBFOEE1MjFGRTRDQ0IwRjEzNzMwRkM0OEUyCitCMkFFNDNBQUNCREZDMEI0REQ5QURDMzhBOUUyRkI5NTUwNjdCQzI0MTkzMjFDNzk3N0MxM0ZDRjY5MkRFQ0UwNUMzN0ZFOTVEOEVCMzRDQzUzRjdGODAzRURCMDdEOTRGQ0I0RkQ4OTU4NjgzMDQ0NzMyRTlDMEVCN0FCNDRCMUY4MThFQUQyNTQzREM2Q0VEOTg2NEZGRjMwMUIzMEZEMDVEQUE1OENBRTY0MTg1NkEzQUUwMjcxNDNGQTI3NDI1QTUwRkFGREI0RDIzQUI1OUQ3RjIxMEUxNDE0NTdBMDQ3NENFMUJFOUY1QjhGREFBNjRBODQ1NkJEMDEKKzQ3MEIKK0IyQTFBNDY2NDIzMjA3RDAwMUIxQjlGQ0M4RjJENjFERkNCODMxQjVGRTRCRTIyRkZDRTcxREFDMDIzODVEMDFBQjIwRjEKKzQ1NzBEOEM4CiswMzc5NjBDNkZDRjNGNjAzOUM5NDJBQUUyODgxCis2RDk5OTk1NUIzRjcyMEVDMDU2M0U4Qjc3M0I2MEYzRTU3RkY1NDgxNDUyMUFERDFFNTg1MzAyN0NCMURCMjMxOTM0OUYxNUUxMzFCNUE5NkQxNzJGNzU0NkRFMkUyNTg5NjNGNEE2QzFCNzFCOUJGMDVBQjlGQjRFNzYzN0UwNTNDMEY5MzIwOUQzMzY1MDhCOTA2MTk5QTk3QzhFQUMxNDdCRUMyMkRBMkJCMUQxN0E0Q0Q0QjEyQjRBRDc2NkQyMUJEQ0RBMDU0QUNFQjY3Q0Q3MkZEQUU2M0Y1RTlFOTcxNzk2QUQ2RjE5NEU4RUNCMEUzNTZDRDRDODIKKzM1QUEKK0VEMzVCNzRBCis4Qjc4NjIzOQorQjMwMkEwMjNBNzQxRkVBQUFFN0M2M0U0NjcKKzBCOTEyNjE5MDE5MDM4M0NGNUJGMTFCNDE4MEVDRTFFOTgxNDg4MDNFMTg4MThGMjc1RjdERUFEOTVGRDU1NTNGRDhFQTUxNzM5RjUyQ0Y2RDM0NTQyRDVDMzQ0NkM1RjQ5RjJEMkM4ODc5QzcwNTA2QkVERURFRENBNERCMjA2MkY5Nzg2MTVCOEUzODE2OTUwQjhGODdCM0M1MDRBQ0Y2NzAwCis2QUY1MDE0MgorMzBDNTc3Nzk0NzkyRTZCNEU2ODRCQzMyRDMKK0FFQzk5MkI2ODM5NDAyMTYzOUNBQjFGQ0NDODI2M0VGMjkyRDU1NTEzQTg3MzBFNUY4NDNBQ0Q5MDE1RUM1QUI5RURBMzUxMkI0NDIwMTIyNTMxNkM1N0YxNEQ1RjJDNjBCRTA5REQ3MjUwODJDNzIzQUUwQkJERTk3NEM3QzlBRkVFQzkxNjI2M0VBRUZGNTA4MzBBMzJBMEI0QUY2QTlDMTE4QTk4QTlFMzc1NTM3NzM4NEI2NTgKKzU2MzFCOTE5Cis3NERFREM5Q0MwQzUwMTRCOUE4NjQyRkJDMAorODU0NjFDMUZGNjJFMzU0OTAzOUQwNTMzMzYyOEY0OEEyQ0E2M0MxQTU1RUJEODFFNkI2NTRGMzA2MDRBM0Y1NjgzN0Y2MzA5RUE3MDYwNzU2MjVBQ0VERTJCMzJBOEI1OEEyMzVCQ0VBRjIxMDgxOTA1OUMyNzAyNTExNEYwNTA2Qjc0OEIzRjk4NjkwRDE3OEEyNjdBMDgzRUVGRjc2NUQyMzk4NTVBQ0E5MjQ5M0VGMEE3NDdGQ0FECiszQjAwQUE3NgorQ0JDRjM0RDlFRkFBQkJCRUE5NzlDMEM3NTkKKzZFNjE5OTdCQjFDOTRCMTI0MDYyQzQwRUM5OEU4NzQ3NzcyMzY3QTkyRTlDNzFGODg2OUY5NEFDOTE0MEI2NTNENTVDQzRGQUQ5ODU1OEU3NzYwRjBFRDFDOThBOTk3QkM5RDk4QUFBCitGNEZGQUJCMgorQjk5MjUwQ0I5QkFGMzdERUNERDQzMEY5RkUyRgorM0I5MzE2RkNFQzk5RUMyQTIxRUFEQTQ5RTFFNEZCRTBGNjkyMzJGMUQ4OTc3MjAyQTNFMTRGQzczQzRDODdBQjU2OUJFQ0YwMTRCMDhBNjI1MjZCRkUzMzdCQ0VGMkUyNERDOTdFODFBMjE0RjNCQzBGODI4NUVFQjEwMDNGOTE4NDM3NzI4QTE2NUIyQzY1RTNFQUE0NDg0QjZBN0UxREVBRDMxQzc5MzgwQ0MwRDZBQjU2Qjg0Q0Y2QkI3MjdGOUZFN0Y0RUJFRDJGMjU5NDYxMEEzM0RBNjA3NjYxQkJCNDY5QjA4RjExMUE0RUFDRTYwRkZFQkIwRTY5Cis2M0ZBCitDOUI4M0I0RUY5Qjk3NDBCRjFCODhDMjZCQUIyN0IyMTlFNERBOUU2RDQxRjNDNDU0NzdFNjU5RAorRTVDNUU2NEEKKzJGRDcwNUY5Q0E3NzU1NjVDMEIwMzJFRDBDMkMKKzFGQjMxRDNBREYxRkM1NTNEQjNFOTZEODI2NUI5MEUxRjQ4OUM5ODhFMDg3MUMxOEEzMjc3RjM1MEZBRTlFODM4M0JCMjEwOEFCNzQ1ODVEM0VFM0U0MzYwNjdGMjAyNzc5NERGQUYxQUZGQjgwQUZFOUU3RkY3MUMzMUIxMjYyQUQ4N0ExN0UwMDRFMzIxQjRGQjdDRTE1QzMyMUQwMDUyODQ4OEJFNTVFNkM5OTk2RDIyNjNGMUVGQkNCRDlFMzUwOTk0QUUyRjIwQkIyCis5MDAxN0YyMgorMUY2MUQ3Q0I0RTA3ODhGQkE2QUEyQ0Y3ODAKK0RBREJEMkZFRDA3NDM3NjdDRTMzNTIyQjNGNDI3QkNCOTMxOTU2RDE2RkNCNDQ1QzdDRjlERDQxNDVCMzIwQjdDNDc1NUQzMDRFQzFBNDYxMzI1MjAzMzk1RjA2QjQyM0RDNzhGNUI2OTE1MDNEMDhDNEU2REYwOEY5NEYwNDFBQzQzMUJFNUZDREEyCis0MTg1RkUxOQorREY1NTc3NENGOEE2RDI2QjY5QzFDODRGM0QzOQorN0UyNUE3Mzk2ODRFODYyQkZERkU1NTkxMzY1RjU2NUQwNTJEMkY0ODJGMDdDRkNENUM1N0M0NTdFOEVBMUE1NUYyNTU2MTRGNkQxQTE3ODgxRjJCNTkyQTg0MUNEMEQ2MjlCMEM5NDUxOEVBNTA1RTk5QTM0RDlEQTA1NjlDMkE0QUJBQjYxRTFGOEQzNDQyRTkzRkJFOTg5NjRFRkYwNjc0OEI1MUI0RUQwMjg0QTQzNjk1RTk0QjIwQTY2RjU5NzUyOTJDODdBMTY2Rjc2QkJGNEZBRjVBNDNFQUMwMTYwQworRTQ2M0FBQ0MKKzgxNTExMEM2N0UxMkJEQTNCQTgxNTEzNzM5NUIKKzQ0RUZDRUZBOEJDNDEyRDkzQjdEQTQzN0QxNDgxMThFOThGQjgxNzc2RUMxMDkxQTNBQzBDMjg0OTFGN0Y2RkFGODkwNDJCQ0UwMjcyNEZCQzdGQ0M2MEJFNUJDQjk1OUIxMkM4NjNCMTQzNzA1M0I0NDU2MkRBMkE3RjQ3REZDRTE5MTEzRTE1M0ExNkNBQzYwNDgwQTA1RjgwOUU5REZBQjBCQzIyNzYzMUZFMjEyNjhCOTU2NEUxNTRENkZFMUQ0OTlCOEQyMDAwQ0IwMDYwQworRUI2NzEwOTEKKzEwMDNERDk0MUJDMENGMTJGMkZGMjFFOUFFCis1M0EwRTgzM0UzRTY1NzI3OTBFMjVENzUzRjRBRkFBNjA1QTJFNjJDQkMwOTQ4RUVENDdCNkM3QzU2MTk0RkREQjI3MzVEQkE4RUQ2MjIwQzg1MjRBNTU3MDAxREQwMTI0M0Y0RjQxNjIwNDZGNDcyM0M1NTA3MUU0ODg0Mjk3Q0JCNTU4NDREQkQ3NEM4MTBFRDYyN0EzODIxQTg3RkYxOTUzRjkxNjEyMUZGQTY4QzQ3Cis5ODEzOUVBQQorMjNDQzAyNDlCNTBFMzhENEM5MDA3QzMxRjBBRgorMUMyRkQ3NUM4M0JEOTE2OTg3NzlFMTg4RDIwQTg5QkE0RkI1RUFFMkZGMUI1OUFDRjE0MEYxQUMxMTdBREEwQUE0OTJEM0M2MDBENjZEMUNBMkY5MThDNDdBNzlBNTE1ODA4ODJGMzk4QzUwMzI0RDY3MkU2QjdBRDJGNjU3QUNCODRCNjAxQjA5RUVCRkNGQkE5RjI2QjAyRjQzRTI0QzQ4RTgyOTU4NjcwNjg4QzE5Nzc5NzhFNDlFNTQ3OEI4QzhCODcxRTE3Rjk0RTVGQ0VBRUJBMDg3RTIyODcyNUNGRjY2QTBCQTI3M0UxNTk1NTEKKzMyNzQwNUQwCisxNjJCQzk1RkQ1QzQwNTQ4NENBNDg0Q0Y3QgorN0Q1Njk2OEUzRjJGMjFEQzExRUFCRTE1OTNDNzZBMzhBNEEwRUQ4MjNEODNGMTM3Q0NGRUMzQzdDNEM3RTQwNDIwQzU3OEY5RTkyNTQ3QjdFNEQ0OEU0NjI0ODc3ODQzRDdGRDdCRTYwNTU2QkZEQzQ1OERFNjM2RkEyOEU5NzMxM0RGRENDNAorRkY0NkY3NzkKKzZFMDA1OERGNzFCQ0FCRDcwNUNGQ0FBNEJFCitFNDlBNjQ4NENDQjAwMTIzMzg2RTBBOEZGMjBEQUNGODY3ODhDQTc4MDUwQjEzQTVEODZFRkFCMDIyMjAwRTA4N0E5QzVCNjVCRUZCNDkyMzRCMkE2RkZBNTJGMjU3MjYyRUMyQzRCNzZBMEM2ODM5OEJBMDI5QjI2ODU0OTdDMjAzMjAxNTU4QkYwMDhGMzQyRThBMjhBOEFGMTdGQzAwNkQ1MzM1QzkxMzJBNkM5QTQwODFDQgorRkE2RjI5MjgKKzgyOTdERDA5NkFEMTE2MEFCRDY1RDJDODZEM0EKK0QyREE4NTg4QjY1NDY4N0UKK0Q0QzBBNTA3CitEMDI0QzVDQUU4NDY5OUVGRTczRDg2MEVEODc2RDM3OTM5MzM1MTgwNzg4NTcyRDA0MEREMEIxOTE4Q0M3NDg2NUUxQgorMTU1QzcyMEJFMkQ0NzA1NzRGMjQ4Q0RBRTlCQUE3OTI5QjFBMjM1RjEyQUY5RjJFNzQ4RDFGQ0Q2ODU3QjE3RDMzODlGRjVGQUI1QworMEE3NDAxQ0JBQTQ5NzAwNzcxQTQ5ODBDRjBENzdGNDhEMTBEQTVGN0I3MDRDN0Y4MTQ4RjlECiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hpCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoaQorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGkgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDk1IHB1dAorZHVwIDIgL0MwMDk5IHB1dAorZHVwIDMgL0MwMTAwIHB1dAorZHVwIDQgL0MwMTAxIHB1dAorZHVwIDUgL0MwMTA0IHB1dAorZHVwIDYgL0MwMTA1IHB1dAorZHVwIDcgL0MwMTA5IHB1dAorZHVwIDggL0MwMTExIHB1dAorZHVwIDkgL0MwMTEyIHB1dAorZHVwIDEwIC9DMDExNCBwdXQKK2R1cCAxMSAvQzAxMTUgcHV0CitkdXAgMTIgL0MwMTE2IHB1dAorZHVwIDEzIC9DMDExNyBwdXQKK2R1cCAxNCAvQzAxMTggcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE0NCAtMjM2IDc1NyA3MjNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNUQ1NkE0Qzc1NUQ5N0I2MUZEQjRGNDc4QzM2NTIxQTExNzUKKzUwRUFCNUQ2OEIzODA2NjZDNDA2MTgzNjNFCis4NzUyMzRENTkzMkNGOTUyNzhDQkYyNDY0MEFDNDQ5NTVGRTBDNzQyNEE1QgorRTc2N0UwRTgKKzQ0RDAyMTU1MDc5RDE0RDc4OEY1M0FCNDBFCiswMzEwM0E1QTk4QkUxMjNEOTNCM0IxQzRFMkQ5ODhDRTM5RDg3MTI0OUJGQzQxQjhGRTVEMzUxRDQ4NzU3ODY2NzVBM0NFQkRDMTkxRTk1Qzk0MjUyRTk3NjNBMTc0OTBFQ0VCRTgyQzAwN0FCOTZCQUM4N0NDMEU2MUIyMjY3OThDQjI3NjI1MzU3ODk5NzMzOTAyMjBGNTVGOTM1RTlGNDJBMjYyNUZCQzEwNDVBRDE0NjAyMEEzNDJERThBNEEKKzRERTRFNkZECisxRDFGMjdBOUM2RUZDRkUzRjcwRTgwMDEyNkZDCisxNDVERjc4RDhDQTM3NTFEMEYyRTUzOTFCQUM4NzM5RDU2OUM2NUIzNzY3QzNBOUI4ODkzREM4MUZDNjg3NDg4NEUzMkVDQThDRTg5RkQxMkQ5NzRCQTg3MDVDRDNBMjA5NzFERjM1RkFDRDE1Njg0QURDRDIyMUFGOEY3OUE2OEYyRjdFRUY5NzhDMkExM0MyMUU0OEU3Q0JEMUQ0NjVFNkQ0Q0I4OTQyQzM2MDJEOTBCRUYxM0YwNzg4MDlFQzY3MjJCNTg0MjFGMDVCM0Q4ODU3OUU2RUVDOTMzQjk0MEFBQTg0QUM3REZFRjU0MDI5NzE0RjlGOThBRjcKKzk4MkUKK0QwMjY2REJCM0RGM0Q5RkYwRTE1MTkyMUM4NTM3MDZBNDM4ODlFQzcwMDE3Njg1QUVFMDVEMDVBQkU4Mzk3MzEzNDlCMTcyRjczRTU3RTRCRUNFNUIyNzhBMjE1M0EyNgorMTI1QzkyNTMKKzg0MzgxRTRFNzUyNDFDRDI0OEFFQUE3OTQyRDcKK0VDQUY1OURENDIyNjc5QTgyOEQ0MEI0NjFCM0U0NTI2Q0JCQzNDRjdBRkZGMzFDREExQzZEN0U2MkU5ODQ4NDY5NDhBRjc5OERDNjQwODgzQUZFNzk1RDIzMkY2MTQ5ODUwNUZBNjI1M0RDNjYxREZDQTlCMzFCRTY0NUU3RTYzRkFCOUYzRDdDMjZDMjA5MzVCQTIxMjkxMjY1MENGOUJERjBDNzRDQ0QxNEY0RUNERTkwMTBGNDQ2MTY1RDEwOEEyNTVDRkYyNzQKK0YyOTY4NDI3CitCRkZBRkYyMDM1MTM5QzJCMUNDNTU2Rjk5RDZECiswQTdFNkQwRjBBRTU4ODU5NjI4RjhBM0E0ODM1QTYzRjJEMDYzOUM2MkFBNUI4QkE0QjdFMzE3QzIyRkU1RjIwMjUyRDREM0VDMzNFNTg5QkRDMDQyMEQ3Q0UwN0U5RUIwNDU5QjNCMTZGN0NFMTQyQ0Q0RDkwNjRFOEJENTdFMjVFQTE4OTJDM0VCNDEyRjhBODUwMzg5QjNDNEE3Qjg2QTU5QTYwRDg4NkVBMTQwNEE2RTU1MUM5RjA5Mzk1RTY1ODVCRTlDRDIwOEM0Qjk5NUM1OEIxNjMyREIyMkY3MTUxRjhBRTg3MEEyNzZEQjBGMTcyMDQyODQwNTcKKzdFRTQKK0JGMEIxN0Y5MUE0RTk5RDdDRkQyOTdENjRDQTRDMDIwQjM0QzE4RjI2Qzc1MTg1ODIyQjk1RAorREI4NkM1MDgKKzA4QTMzNUY4NThGNkYwQzNDQzRBNTdDOEY2QUEKKzkzNjJFOEE4NDFCMDY5RkVDRjhDNDI4N0U2Nzg0QkM0NjZENjAxOEQ2MjUyREJGQTNDNkQ2OUQyQ0IzQjIzRUE2RTM4MjA4OUZDRjAwQkJEN0U4QkVDMjU1Njg1MjAwNEZEREY5RkNDRTUyQkEyNzNDRUNCMDhBRjcxM0U4RkNDQUI2QjFEOENDQzBBMkU1OEVGNURGRUQ4MEYyMkM4NTVCNUY5NEU1NDlDNDE4MzA5ODczRjZFQUI0QkFCRkVFMDE4OTI3OTIyNUMwQjVGRjFGNzdBNUJBMTk0RkE2M0UzN0NEMzNBMDhGNjg5RUQyOEE2CitCNTdDOTBEMgorMEZGQkI1QzU1QjQxRUY4RDQ0NEVFNjdBRUU2OQorRUZDNzNDRDE1NjhBQTJDM0IxMjU3NkJDNzE2MTBFMEQ3NURDNzI0NkRFNkNBMEQxNzQ4REM3ODk4Mjk4NTRBNDAxQUU0MEY4MTE5NUVEMTM1OTZDRTFBNzRENUM1RDI0OTFFRkYzQkI3QjMxODVBRThENUVDMzhCMkI0NDFCOTQwRDBFRTYzRjUzRUY1Nzg1QTEwODVBQjVBQkRCNzdBODA2QkVDQ0Y0OUZBMjNDOEI3QTNEM0Y0MUUzMkYzQkVBOTIxQjhGQjFEOUU5RDQ3RTJEMzgwQ0U2OUUyNTBGMzY4NUU5OUVFREQ0NjVBRUY5NUM1MjlCQkRBNjQ3CitCODkyCitGNUJENzBDQ0VERDg5NjdERkE3MEIxQzZBQ0QyREI2NTJCMEQxMDZCNjQyREFEMjFDMzA4MzZBNzgzMjZCMEIxMjEwNDUzNDVGMDg1MjBDQzRGMUIxOENENzVBRDU3MDM5MzM2MDlGMjIxQjAyOEY3NjQxMDQ2NDk2RUMwM0EyMEMxM0RERTZBMUUxMDQwNjQzQjhEMTcKKzY4NzUyRUY3CisyOEFFMzBBRDZBMjIyRjk5NTM1MDYxQjJDQworOTk0RDQxRUZFNDJCNEVEM0IxQjlERTg3RUU1MjhDMzc2OUJEQzE2RDlERTA3REM3NTk5MUI3Q0IzQzc1QjU4NjdDQkI1OEI2NDIyMUE1QTE0QTQwMEM1MjQ5QkExRjIwOEQzNDNERDkzRTZENkVBOTE1QjdFOTM5NzE3NTRFRjQwRjZDNzk1RjA5OEFDQkM5NkNFMkY5NEY3Q0Y5QzMxN0JCQUQxMjg2OTQ2OUQwRjlEQ0JGRTRBQjUwREU3NworMjQwQzQ4RkUKK0M2M0M2OEJCNDlDQjQ2ODZDQ0I5NDgyMjg5MTgKKzFEODlDRjc0MDlGNzM4QjAwMTM5M0RENTU1QkM2OTVENDc1MTA1ODkwQTY2RTdDQUEwQzk2NUU2NUJDRkE5NEZERDU0QkVGQzRFN0YyREQwQUIxQzNEODdBOTZFOEM0QTFCOUYyQkEwNUU0MDkzMTU3OERCOTU2RDM3NDA1OUJCMjA1QkM4NEU2NUM4OUJCNDVBMTgwMzVGOUY0QTM1ODgzRDIyODdFNTAxQjRBRjM3NzBBQkIzNDhBODMxNkVDMzA5QUU4MjFGMkEzN0Q1MThGM0ExQTVCREY4QUJBQTVCOEM5QTQzMDE3QTUzRUNBRjJBOUZDODk1NkI1OQorNzUwOAorNUYxMEFGNTQxNDEwNkRCMTczNUY1RjlCRDQ5RjNEQjg5MURCREJCRDJEQ0FEOTFBQjlBRjUwRDBBNzlEQjNFMDNBOTdFQTIyMjUwNDExRDkyMUQ4CisxODQyMzU0RAorM0Q2RDUzOEU0NEZFNzc1NTZDQTY1MTBBRDYKK0JEODdFOUJEN0M1MDQyQzI1RDY2RDUyNEI2MkNFRjdERjJENDhERDEzQ0M5MEE4M0VGNDhDQ0M3MDQ4MjRCNkVCNERBNjkyNEI3OEJFQzRCQzQ0MTdFNjBEQTIzNzJCRjNFQ0MzNzQ1MjlCQTBERjY1NUYxMDhDRTExRDEyNTFCODEyN0IwOTZGNEQ1Q0EwNkU5QzUwMzA4RjFBQzIyQkFCRjEzQzZCNkQxNERBRUU3MDUwMzAwCis2NUM2MjZFMAorQkYwREQ0OEFFRkQxQTQ2MkQxNDU3MjJDMDU2NAorNDg0MDg2NUE4MzNCNzcwQTgzMUQ0MjEwMjY4QkM1RDQyNDgwNjAwRDdDMDZGODI4NDJBNDgxQTNENjQ0MDg1RDEyQkY4N0IzQ0UzQ0QzODMyREMxMTExODlGRkM0RUY3REQ5Q0ZFRkMzOEYxRjJGNjg5NDgwQzBDODMxRTFERjhEM0Y3QzMwNjZGQjNFNTgzM0Q1NEU2RDE0REJEN0Y3RDFEQTM3REVGMEVCQ0JCQTM1NTkyNjYzRUY1RjczMTZDQTE0ODg1NTY4OTUwQzI5NDU2QTM3MkY5MkQ3QzZCRkFCRTMzMzUwM0QxREEKKzM0RDNFMTczCiswNDE3MEY2NjAyMzAwMkQyRURGN0Y3QjBDNQorM0Y4NzgwRDhCOUNBMDFCN0Y4NEVDQjUxRjhCODJFRUExMTFBODVEN0U3NTlGMDVGMUJCNjQwNEQyODhGMEMwNkU3QjQwODBBNzhBODkzQzZBMjExRUQ4MDdGNEQ1NEUyMDI2RkVEQ0FCMEU1QUJFMTc4MTEzQjY3MTNEMUQxQjFBMkU0RDI3RDQxQTI2NzE0NEQxQzk0NUYxRDMyNjdDMDQ2MEZDNzUyNEJDRUM3Cis1OEEwOEE3MAorOTI1RTAwRjVCRUZBMkNENTJCM0U0NEQ4QzFBRgorRUFCNjY2NTVCMzk4MkVGNTBBRkJCRkJFRDcwRENFQUFDMEIxMzU2Qzk5MzBFNzREQzRFMDFGM0VGRkU5RTk1NEY0RDI2NTAwNkVEMENBQTgxQkQwMkVGNjJBQTJBREQ0RURBOUJDQ0QwQTdFNzhBNTYxQ0Q2Rjk3OEE1ODVBNDFCMTFFQjFGNDM0MkIwMjI4MEM1OEVDMzNEQkI5NzI2N0U4REZGMjk3QjVDREE3MzgzMEI0Nzk2NTlCNzVGQTE0OTIwMUFFRTc2Qzc1RDA3QzFCQTYwQzk2NTRGNTM3NUQxMDcyRUJBMzU0N0UwRUQ1M0Q0OTE4RERGQzVGCisyRDlFCis3NEM0QUQxMzk5REU2N0UwMzA5MjYzMEI4NjY5QjdBNzYxREYzMUM4QjgzODZECis4MjZFMDExMQorMjkzNzJDNDk0ODUzRkJBQzVGMzAyRUNGQjkKK0I1RjFGOTcyNzhBRjdEOUVBOENBRUNERTY0NUZGOTRBQzRFQjg5Mjk0NUVFRjAyMjFGMEE1QTkxM0IwQjA3MzNCM0E0REZFMkY4RTA0OTk4NEQwRUFDRkUxRkMxQThCNDYwNDBGQUFFQUFFRDZBOEVEQzFGNTk5NTIwRUZCNDhDOTAyNkY4MTJCQjJEQjEwNDI3RDEwMUYzRUZDQTAzQjMzQjdDMTc1MkExRUYzOTZERjdGMworREQ0NkZDNDAKK0M5NTQ4QjJGRDJFREY3ODgwRTJDNzlFRjIxRjcKKzNBQkMxMjFEMERFNkI1RDgKKzgzRUQ3RkU3Cis2MDcxRTA1MjBBQkM0MzQxODEyRDBCMEI5Q0Q5MDA4RjUyOUM4QjYxNzEyQjY1MENENEVDNUU4QTMyOTczQjU5NkQ5OQorOTVBQkEwNTc3MUMxN0E5MTlFNzg4MEFDRDAxMjc1OUJEQjkwREVGMzM4MEZFRDQ5QzE4NkEzQUI3N0FCMTEzNjREQ0ExRjU1QzM5RgorRkRFOUM2N0QzOTJFQ0Y3N0U5MDk1RkI2QkM5ODA4NDFFMzc3REFDQzg0ODg2NjRFM0U3RkMzCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJpIDEyLjAwIC9QU093c3RkdXRjaGkgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTkyODM3MzMyODM1MjkwZTAxMTAwMTExMjgzMTI2MmIzMDI0MzUyZTAxMjkzMjM1MDExODI4MjQzNjM4MzUyYzMxMmEwMTE5MjgzNzNhMzIzNTJlMDExYj4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyODM1MjkzMjM1MzAyNDMxMjYyOD4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDkwZD4gOTM0NiAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE2Mzc+IDEyNzEgMTQzMSAwIDE0MjEgLTEgcworPDAwMmMzNjAwMmMzMDMzMzIzNTM3MjQzMTM3MDAzNzJiMjQzNzAwMzcyYjJjMzYwMDM3MjgzNjM3MDAzNTM4MzEwMDI5MzIzNTAwMjQwMDM1MjgyNDM2MzIzMTI0MjUyZjI4MDAyZjI4MzEyYTM3MmIwMDMyMjk+IDE0MjEgMTQzMSAxMSA2NDg4IDAgcworPDAwMzcyYzMwMjgwMDA1MDAyNDM3MDAyZjI4MjQzNjM3MDAzNzNhMzIwMDMwMmMzMTM4MzcyODM2MDYwMDFlMmIyYzM2PiA2NDg4IDE0MzEgNyA5NTMxIDAgcworPDJjMzY+IDEyNzEgMTY3NiAwIDE0MTAgLTEgcworPDAwMzUyODJmMjQzNzI4MjcwMDM3MzIwMDM3MmIyODAwMjUyODJiMjQzOTJjMzIzNTAwMzIyOTAwMzkyNDM1MmMzMjM4MzYwMDFlMTIxYjAwMmMzMDMzMmYyODMwMjgzMTM3MjQzNzJjMzIzMTM2MDYwMDE2MjkwMDNjMzIzODAwMzUzODMxPiAxNDEwIDE2NzYgMTEgNzM3NCAwIHMKKzwwMDM3MmIyODAwMzcyODM2MzcwMDI5MzIzNTAwMzYyYjMyMzUzNzI4MzUwMDMzMjgzNTJjPiA3Mzc0IDE2NzYgNSA5NDYxIDAgcworPDNlPiA5NDYxIDE2NzYgMCA5NTMxIC0xIHMKKzwzMjI3MzY+IDEyNzEgMTkyMSAwIDE1ODQgLTEgcworPDAwMzIyOTAwMzcyYzMwMjgwNDAwMzcyYjI4MDAzNTI4MzYzODJmMzczNjAwMjYzMjM4MmYyNzAwMjUyODAwMmIyYzJhMmIyODM1MDAzNzJiMjQzMTAwMzYyODI4MzEwMDJjMzEwMDI0MDAzNjM3MjgyNDI3M2MwNTM2MzcyNDM3MjgwMDI2MzIzMTI3MmMzNzJjMzIzMTA2MDAxZDMyMDQwMDI0MDAyYTMyMzIyNz4gMTU4NCAxOTIxIDE2IDk1MzEgMCBzCis8MWUxMjFiMjIxMjFjMWM+IDEyNzEgMjE2NiAwIDIyNzAgLTEgcworPDAwMjYzMjMwMzAyNDMxMjcwMDJmMmMzMTI4MDAzNzMyMDAzNjJjMzAzODJmMjQzNzI4MDAyNDAwM2EyODI1MDUzNjI4MzUzOTI4MzUwMDMwMmMyYTJiMzcwMDJmMzIzMjJlMDAyZjJjMmUyODBlPiAyMjcwIDIxNjYgOSA3NDMwIDAgcworPDAzPiAxMzk4IDI1MDUgMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDMxNDE1MTkwMzEzMGYxOTE1MGYxNzEwMDMxMzBmMTkxNTBmMTcxMDAwMDIxOTAwPiAxNTA0IDI1MDUgMyAzNjkyIDAgcword3N0OmR1dGNoMTIgU0YKKzwxZTEyMWIyMjEyMWMxYz4gMzY5MiAyNTA1IDAgNDY5MSAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDAyMTEwMD4gNDY5MSAyNTA1IDIgNTAzNyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDkwYTA4PiA1MDM3IDI1MDUgMCA1MzU1IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDIwNjAwPiA1MzU1IDI1MDUgMiA1ODAzIDAgcword3N0OmR1dGNoMTJpIFNGCis8MGEwNDA3MDgwYzA0MDUwODBiMGM+IDU4MDMgMjUwNSAwIDY3NjIgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMjAyMDAwMjE3MDA+IDY3NjIgMjUwNSAzIDc1NDMgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDBiMGEwNDA5MDgwYTBjPiA3NTQzIDI1MDUgMCA4MjMyIC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBjMGEwNzAwMGEwNDA4MDAwOT4gMTI3MSAyOTc1IDIgMjMwNSAwIHMKKzwwZjE2MWEwZjE4MTkwMzA5PiAyMzAxIDI5NzUgMCAzMDkzIC0xIHMKKzwwZjE4MTUxNDEzMTgwZjAwMDg+IDMwODkgMjk3NSAxIDM5ODkgMCBzCis8MGYxNzEwMTQxNzEyMGQxMzBlMGY+IDM5ODEgMjk3NSAwIDUwMjMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxZTJiMjg+IDEyNzEgMzM4NSAwIDE2MzEgLTEgcworPDAwMjAxZTE2PiAxNjMxIDMzODUgMSAyMDU4IDAgcworPDAwMWUxMjFiMDAzNTI4MzQzODI4MzYzNzA3MzUyODM2MzMzMjMxMzYyODAwMzcyODM2MzcwMDI2MjQzMTAwMjUyODAwMmMzMTM5MzIyZTI4MjcwMDNhMmMzNzJiMDAzMTI4MzczMzI4MzUyOTAwMzcyYjMyMzgyYTJiMDAzNzJiMjgwMDM4MzYyODAwMzIyOTAwMzcyYjI4MDAwNTM3MDAzMjMzPiAyMDU4IDMzODUgMTUgOTQ2MSAwIHMKKzwzZT4gOTQ2MSAzMzg1IDAgOTUzMSAtMSBzCis8MzcyYzMyMzE+IDEyNzEgMzYzMCAwIDE2MzAgLTEgcworPDAwM2EyYzM3MmIwMDI0MzEwMDI0MzUyYTM4MzAyODMxMzcwMDMyMjkwMDIwMWUxNjIyMWUxMjFiMjIxYzFjMDYwMDE5MzIzNz4gMTYzMCAzNjMwIDYgNTM1NSAwIHMKKzwwMDI0MmYyZjAwMzYzYzM2MzcyODMwMzYwMDMzMzgzNzAwMzcyYjI4MDAzNTI4MzQzODJjMzYyYzM3MjgwMDI3MjgzOTJjMjYyODAwMjkyYzJmMjgzNjAwMmMzMTAwMzcyYjI4PiA1MzU1IDM2MzAgOSA5NTMxIDAgcworPDM2MjQzMDI4PiAxMjcxIDM4NzUgMCAxNzM2IC0xIHMKKzwwMDJmMzIyNjI0MzcyYzMyMzEwNDAwMzYzMjA0MDAyNDAwMjMyMzI3MjgyOTI0MzgyZjM3MDIwMDM1MjgzNDM4MjgzNjM3MDczNTI4MzYzMzMyMzEzNjI4MDAyNjMyMzAzMDI0MzEyNzAwMzIzMTAwMTUxYjA1MWYyMDAwM2EzMjM4MmYyNzAwMmYzMjMyMmUwMDM2MzIzMDI4MzcyYjJjMzEyYT4gMTczNiAzODc1IDExIDk1MzEgMCBzCis8MmYyYzJlMjg+IDEyNzEgNDEyMCAwIDE2MDIgLTEgcworPDAwMzcyYjJjMzYwZT4gMTYwMiA0MTIwIDEgMjAzNyAwIHMKKzwwMz4gMTM5OCA0NDU5IDAgMTUwNCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDAzMTQxNTE5MDMxMzBmMTkxNTBmMTcxMDAzMTMwZjE5MTUwZjE3MTAwMDAyMDYwMD4gMTUwNCA0NDU5IDMgMzc4NSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBhMDQwNzA4MGMwNDA1MDgwYjBjPiAzNzg1IDQ0NTkgMCA0NzQ0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDIxOTAwPiA0NzQ0IDQ0NTkgMiA1MDk5IDAgcword3N0OmR1dGNoMTIgU0YKKzwyMDFlMTYyMjFlMTIxYjIyMWMxYzAwMDUwNTAwPiA1MDk5IDQ0NTkgMiA2ODk3IDAgcword3N0OmR1dGNoMTJiIFNGCis8MDIwYz4gNjg5NyA0NDU5IDAgNzIyMyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMDcyNzI4MzkwNzJjMzEyODM3MjIyNjMyMzczNj4gNzIyMyA0NDU5IDEgODUyMiAwIHMKKzwyNDMxMjc+IDEyNzEgNDc5OCAwIDE2MDggLTEgcworPDAwM2EyYzJmMmYwMDM4MzYyODAwMzcyYjI4MDAzNjNjMzYzNzI4MzAwMDI3MjgyOTI0MzgyZjM3MDAzNjMyMjYyZTI4MzcwMDI1MzgyOTI5MjgzNTAwMzYyYzNkMjgzNjA0MDAyNDAwMjcyODI5MjQzODJmMzcwMDM1MjgzNDM4MjgzNjM3MDAzNjJjM2QyODAwMzIyOTAwMDkwMDI1M2MzNzI4MDQwMDI0MzEyNzAwMjQ+IDE2MDggNDc5OCAxNyA4ODU5IDAgcworPDAwMjcyODI5MjQzODJmMzc+IDg4NTkgNDc5OCAxIDk1MzEgMCBzCis8MzUyODM2MzMzMjMxMzYyOD4gMTI3MSA1MDQzIDAgMjA3MiAtMSBzCis8MDAzNjJjM2QyODAwMzIyOTAwMDkwMDI1M2MzNzI4MDY+IDIwNzIgNTA0MyA0IDMzNDcgMCBzCis8MWUyYjI4PiAxMjcxIDUzODMgMCAxNjMxIC0xIHMKKzwwMDI2MzIzMDMwMjQzMTI3MDUyZjJjMzEyODAwMzIzMzM3MmMzMjMxMzYwMDI5MzIzNTAwMzcyYjI4MDAyMDFlMTYyMjFlMTIxYjIyMWMxYzAwMzcyODM2MzcwMDI0MzUyODAwMzcyYjI4MDAzNjI0MzAyODAwMjQzNjAwMzcyYjI4MDAxZTEyMWIyMjFjMWMwMDM3MjgzNjM3MDQwMDNhMmMzNzJiPiAxNjMxIDUzODMgMTQgOTUzMSAwIHMKKzwzNzJiMjg+IDEyNzEgNTYyNyAwIDE1NjEgLTEgcworPDAwMjkzMjJmMmYzMjNhMmMzMTJhMDAyNDI3MjcyYzM3MmMzMjMxMzYwZT4gMTU2MSA1NjI3IDIgMzM5OCAwIHMKKzwwNTIwPiAxNTg5IDU5NjcgMCAxOTI5IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDQwZTBiMDkwNDAyPiAyMDMzIDU5NjcgMCAyNzAwIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzYyODM3MDAzNzJiMjgwMDJmMzIyNjI0MmYwNzM1MjgzMDMyMzcyODAwMjAxZTE2MDAyNzI4MzkyYzI2MjgwMDI5MmMyZjI4MDAzMTI0MzAyODAwMjkzNTMyMzAwMDAwPiAzMTc3IDU5NjcgOSA3NTI1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDMwNDBlMGIwOTA0MDI+IDc1MjUgNTk2NyAwIDgxOTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwNj4gODE5MiA1OTY3IDAgODI0NSAtMSBzCis8MWUyYjI4PiAxMjcxIDYzMDYgMCAxNjMxIC0xIHMKKzwwMDM1MjgzNDM4MjgzNjM3MDAyNDMxMjcwMDM1MjgzNjMzMzIzMTM2MjgwMDM2MmMzZDI4MzYwMDNhMmMyZjJmMDAyNTI4MDAzNzJiMjgwMDI1MzgyOTI5MjgzNTAwMzYyYzNkMjgzNjAwMzMzMjM2MzcyODI3MDAzNzMyMDAzNjI4MzEyNzAwMjQzMTI3MDAzNTI4MjYyODJjMzkyODA2MDAxMDM2MDAxZTEyMWIwMDJjMzY+IDE2MzEgNjMwNiAxNyA5NTMxIDAgcworPDI0PiAxMjcxIDY1NTEgMCAxMzc2IC0xIHMKKzwwMDM2MzczNTI4MjQzMDAwMzMzNTMyMzczMjI2MzIyZjAwMjQzMTI3MDAzMTMyMzcwMDI0MDAzMDI4MzYzNjI0MmEyODAwMzMzNTMyMzczMjI2MzIyZjA0MDAyYzM3MDAyYzM2MDAzMTI4MjYyODM2MzYyNDM1M2MwMDM3MzIwMDJmMzIzMjMzMDAzMjMxMDAzNTI4MjYyODJjMzkyODM2MDAzODMxMzcyYzJmMDAzNzJiMjgwMDI4MzEzNzJjMzUyOD4gMTM3NiA2NTUxIDE3IDk1MzEgMCBzCis8MzAyODM2MzYyNDJhMjg+IDEyNzEgNjc5NiAwIDIwMjUgLTEgcworPDAwMmMzNjAwMjcyODJmMmMzOTI4MzUyODI3MDYwMDFlMmIyODAwMjUzODI5MjkyODM1MDAzMzMyMmMzMTM3MjgzNTAwMzMyNDM2MzYyODI3MDAzNzMyMDAzNzJiMjgwMDI5MmMzNTM2MzcwMDM1MjgyNjI4MmMzOTI4MDAyOTMyMzUwMDI0MzEwMDJjMzEyNzJjMzkyYzI3MzgyNDJmMDAzNzM1MjQzMTM2MjQyNjM3MmMzMjMxPiAyMDI1IDY3OTYgMTQgOTUzMSAwIHMKKzwzYTJjMmYyZj4gMTI3MSA3MDQxIDAgMTU4OCAtMSBzCis8MDAyNTI4MDAyNDJmMmMyYTMxMjgyNzAwMjQzMTI3MDAzMjI5MjkzNjI4MzcwMDI0MzYwMDM1MjgzNDM4MjgzNjM3MjgyNzAwMjUzYzAwMzcyYjI4MDAzODM2MjgzNTA2MDAxNjM3MDAzYTJjMmYyZjAwMjUyODAwMmMzMTI2MzUyODMwMjgzMTM3MjgyNzAwMjUzYzAwMzcyYjI4MDAzMTM4MzAyNTI4MzUwMDMyMjk+IDE1ODggNzA0MSAxNyA5NTMxIDAgcworPDI1M2MzNzI4MzY+IDEyNzEgNzI4NiAwIDE3MzQgLTEgcworPDAwMzUyODI2MjgyYzM5MjgyNzAwMjgyNDI2MmIwMDM3MmMzMDI4MDAzODMxMzcyYzJmMDAzNzJiMjgwMDI4MzEzNzJjMzUyODAwMzUyODM0MzgyODM2MzcwNzM1MjgzNjMzMzIzMTM2MjgwMDJjMzYwMDM1MjgyNjI4MmMzOTI4MjcwNjAwMWUyYjI4MDAyNTM4MjkyOTI4MzUwMDMzMzIyYzMxMzcyODM1PiAxNzM0IDcyODYgMTIgOTE2OSAwIHMKKzwwMDNhMmMyZjJmPiA5MTY5IDcyODYgMSA5NTMxIDAgcworPDI1Mjg+IDEyNzEgNzUzMSAwIDE0ODkgLTEgcworPDAwMzUyODA1MjQyZjJjMmEzMTI4MjcwMDI0MzEyNzAwMzIyOTI5MzYyODM3MDAyOTMyMzUwMDM3MmIyODAwMzEyODNiMzcwMDM3MzUyNDMxMzYyNDI2MzcyYzMyMzEwNj4gMTQ4OSA3NTMxIDcgNTczNSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBiMDUwODAwMDk+IDEyNzEgODAwMCAxIDE5MTYgMCBzCis8MGYxNjFhMGYxODE5MDMwOT4gMTkxMiA4MDAwIDAgMjcwNCAtMSBzCis8MGYxODE1MTQxMzE4MGYwMDA4PiAyNzAwIDgwMDAgMSAzNjAwIDAgcworPDBmMTcxMDE0MTcxMjBkMTMwZTBmPiAzNTkyIDgwMDAgMCA0NjM0IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MWYxMzFiPiAxMjcxIDg0MTAgMCAxNzQ0IC0xIHMKKzwwMDM1MjgzNDM4MjgzNjM3MDczNTI4MzYzMzMyMzEzNjI4MDAzMzI4MzUyOTMyMzUzMDI0MzEyNjI4MDAzYTMyMzUyZTM2MDAyZDM4MzYzNzAwMmYyYzJlMjgwMDFlMTIxYjAwMzUyODM0MzgyODM2MzcwNzM1MjgzNjMzMzIzMTM2MjgwMDMzMjgzNTI5MzIzNTMwMjQzMTI2MjgwNj4gMTc0NCA4NDEwIDggOTIwMSAwIHMKKzwwMDEwMmYyZj4gOTIwMSA4NDEwIDEgOTUzMSAwIHMKKzwzNzJiMjg+IDEyNzEgODY1NSAwIDE1NjEgLTEgcworPDAwMzIzMzM3MmMzMjMxMzYwMDI0MzkyNDJjMmYyNDI1MmYyODAwMzcyYjI4MzUyODAwMjQzNTI4MDAzMzM1MjgzNjI4MzEzNzAwMmIyODM1MjgwMDNhMmMzNzJiMDAzNzJiMjgwMDI4M2IyNjI4MzMzNzJjMzIzMTAwMzIyOTAwMzcyYjI4MDAwNTEzMDAzMjMzMzcyYzMyMzEwZj4gMTU2MSA4NjU1IDEzIDg1NTQgMCBzCis8MDAxZTEyMWIyMjE5MWE+IDg1NTQgODY1NSAxIDk0NjEgMCBzCis8M2U+IDk0NjEgODY1NSAwIDk1MzEgLTEgcworPDEzMTQxNzEwPiAxMjcxIDg5MDAgMCAxODg5IC0xIHMKKzwyMT4gMTg2NiA4OTAwIDAgMjAyOCAtMSBzCis8MDAyYjI0MzYwMDMxMzIwMDMwMjgyNDMxMmMzMTJhMDAyOTMyMzUwMDI0MDAxZjEzMWIwMDM3MjgzNjM3MDYwMDFlPiAyMDI4IDg5MDAgOCA1MDI5IDAgcworPDMyMDAyYzMxMzkzMjJlMjgwMDI0MDAxZjEzMWIwMDM1MjgzNDM4MjgzNjM3MDczNTI4MzYzMzMyMzEzNjI4MDAzNzI4MzYzNzA0MDAzODM2MjgwMDI0MzEwMDI0MzUyYTM4PiA0OTk4IDg5MDAgOCA5NDYxIDAgcworPDNlPiA5NDYxIDg5MDAgMCA5NTMxIC0xIHMKKzwzMDI4MzEzNz4gMTI3MSA5MTQ1IDAgMTczNSAtMSBzCis8MDAzMjI5MDAxZjEzMWIyMjFjMWMwMDNhMmMzNzJiMDAzNzJiMjgwMDA1MzcwMDMyMzMzNzJjMzIzMTAwMzczMjAwMzMzNTMyMjczODI2MjgwMDI0MDAyNjMyMzAzMDI0MzEyNzAwMmYyYzJlMjgwMDM2MzIzMDI4MzcyYjJjMzEyYTAwMmYyYzJlMjgwMDM3MmIyYzM2MGU+IDE3MzUgOTE0NSAxNCA4OTkwIDAgcworPDAzPiAxMzk4IDk0ODQgMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDMxNDE1MTkwMzEzMGYxOTE1MGYxNzEwMDMxMzBmMTkxNTBmMTcxMDAwMDIwNjAwPiAxNTA0IDk0ODQgMyAzNzg1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGEwNDA3MDgwYzA0MDUwODBiMGM+IDM3ODUgOTQ4NCAwIDQ3NDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMjE5MDA+IDQ3NDQgOTQ4NCAyIDUwOTkgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFmMTMxYjIyMWMxYz4gNTA5OSA5NDg0IDAgNjAwNCAtMSBzCis8MTAyYTI0MmMzMTA0PiAxMjcxIDk4MjMgMCAxODY5IC0xIHMKKzwwMDI0MDAzNjI2MzUyYzMzMzcwMDJjMzYwMDMzMzUzMjM5MmMyNzI4MjcwMDNhMmIyYzI2MmIwMDNhMmMyZjJmMDAyYTI4MzEyODM1MjQzNzI4MDAzNTI4MzYzODJmMzczNjAwMjkzMjM1MDAzNjMyMzAyODAwMzIyOTAwMzcyYjI4MDAzMDMyMzUyODAwMjYzMjMwMzAzMjMxPiAxODY5IDk4MjMgMTQgOTAwNCAwIHMKKzwwMDI3MjQzNzI0PiA5MDA0IDk4MjMgMSA5NDYxIDAgcworPDNlPiA5NDYxIDk4MjMgMCA5NTMxIC0xIHMKKzwzMzMyMmMzMTM3MzYwNj4gMTI3MSAxMDA2OCAwIDE4ODAgLTEgcworPDAwMTYzNzAwMmMzNjAwMzEyNDMwMjgyNzAwPiAxODgwIDEwMDY4IDQgMjk5NyAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBkMDMwOTAxMGEwYTAxMGIwMjBhMDYwOTBjPiAyOTk3IDEwMDY4IDAgNDE1MCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA2PiA0MTUwIDEwMDY4IDAgNDIwMyAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYzBhMDcwMDBiMDUwODAwMDk+IDEyNzEgMTA1MzggMiAyMzM0IDAgcworPDBmMTYxYTBmMTgxOTAzMDk+IDIzMzAgMTA1MzggMCAzMTIyIC0xIHMKKzwwZjE4MTUxNDEzMTgwZjAwMDg+IDMxMTggMTA1MzggMSA0MDE4IDAgcworPDBmMTcxMDE0MTcxMjBkMTMwZTBmPiA0MDEwIDEwNTM4IDAgNTA1MiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlMmIyOD4gMTI3MSAxMDk0OCAwIDE2MzEgLTEgcworPDAwMjAxZTE2MDAxZjEzMWIwMDM1MjgzNDM4MjgzNjM3MDczNTI4MzYzMzMyMzEzNjI4MDAzNzI4MzYzNzAwMjYyNDMxMDAyNTI4MDAyYzMxMzkzMjJlMjgyNzAwM2EyYzM3MmIwMDMxMjgzNzMzMjgzNTI5MDAzNzJiMzIzODJhMmIwMDM3MmIyODAwMzgzNjI4MDAzMjI5MDAzNzJiMjgwMDA1MzcwMDMyMzM+IDE2MzEgMTA5NDggMTYgOTQ2MSAwIHMKKzwzZT4gOTQ2MSAxMDk0OCAwIDk1MzEgLTEgcworPDM3MmMzMjMxPiAxMjcxIDExMTkzIDAgMTYzMCAtMSBzCis8MDAzYTJjMzcyYjAwMjQzMTAwMjQzNTJhMzgzMDI4MzEzNzAwMzIyOTAwMjAxZTE2MjIxZjEzMWIyMjFjMWMwNjAwMTkzMjM3MDAyNDJmMmYwMDM2M2MzNjM3MjgzMDM2MDAzMzM4MzcwMDM3MmIyODAwMzUyODM0MzgyYzM2MmMzNzI4MDAyNzI4MzkyYzI2MjgwMDI5MmMyZjI4MzYwMDJjMzE+IDE2MzAgMTExOTMgMTQgOTE5MiAwIHMKKzwwMDM3MmIyOD4gOTE5MiAxMTE5MyAxIDk1MzEgMCBzCis8MzYyNDMwMjg+IDEyNzEgMTE0MzggMCAxNzM2IC0xIHMKKzwwMDJmMzIyNjI0MzcyYzMyMzEwNDAwMzYzMjA0MDAyNDAwMjMyMzI3MjgyOTI0MzgyZjM3MDIwMDM1MjgzNDM4MjgzNjM3MDczNTI4MzYzMzMyMzEzNjI4MDAyNjMyMzAzMDI0MzEyNzAwMzIzMTAwMTUxYjA1MWYyMDAwM2EzMjM4MmYyNzAwMmYzMjMyMmUwMDM2MzIzMDI4MzcyYjJjMzEyYT4gMTczNiAxMTQzOCAxMSA5NTMxIDAgcworPDJmMmMyZTI4PiAxMjcxIDExNjgzIDAgMTYwMiAtMSBzCis8MDAzNzJiMmMzNjBlPiAxNjAyIDExNjgzIDEgMjAzNyAwIHMKKzwwMz4gMTM5OCAxMjAyMiAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzE0MTUxOTAzMTMwZjE5MTUwZjE3MTAwMzEzMGYxOTE1MGYxNzEwMDAwMjA2MDA+IDE1MDQgMTIwMjIgMyAzNzg1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGEwNDA3MDgwYzA0MDUwODBiMGM+IDM3ODUgMTIwMjIgMCA0NzQ0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDIxOTAwPiA0NzQ0IDEyMDIyIDIgNTA5OSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MjAxZTE2MjIxZjEzMWIyMjFjMWMwMDA1MDUwMD4gNTA5OSAxMjAyMiAyIDY5NTMgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMjBjPiA2OTUzIDEyMDIyIDAgNzI3OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMDcyNzI4MzkwNzJjMzEyODM3MjIyNjJmMzczNj4gNzI3OSAxMjAyMiAxIDg1MjAgMCBzCis8MjQzMTI3PiAxMjcxIDEyMzYxIDAgMTYwOCAtMSBzCis8MDAzYTJjMmYyZjAwMzgzNjI4MDAzNzJiMjgwMDM2M2MzNjM3MjgzMDAwMjcyODI5MjQzODJmMzcwMDM2MzIyNjJlMjgzNzAwMjUzODI5MjkyODM1MDAzNjJjM2QyODM2MDQwMDI0MDAyNzI4MjkyNDM4MmYzNzAwMzUyODM0MzgyODM2MzcwMDM2MmMzZDI4MDAzMjI5MDAwOTAwMjUzYzM3MjgwNDAwMjQzMTI3MDAyND4gMTYwOCAxMjM2MSAxNyA4ODU5IDAgcworPDAwMjcyODI5MjQzODJmMzc+IDg4NTkgMTIzNjEgMSA5NTMxIDAgcworPDM1MjgzNjMzMzIzMTM2Mjg+IDEyNzEgMTI2MDYgMCAyMDcyIC0xIHMKKzwwMDM2MmMzZDI4MDAzMjI5MDAwOTAwMjUzYzM3MjgwNj4gMjA3MiAxMjYwNiA0IDMzNDcgMCBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMTcpIDE3CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzYgcHV0CitkdXAgMyAvQzAwMzkgcHV0CitkdXAgNCAvQzAwNDAgcHV0CitkdXAgNSAvQzAwNDEgcHV0CitkdXAgNiAvQzAwNDQgcHV0CitkdXAgNyAvQzAwNDUgcHV0CitkdXAgOCAvQzAwNDYgcHV0CitkdXAgOSAvQzAwNDcgcHV0CitkdXAgMTAgL0MwMDQ4IHB1dAorZHVwIDExIC9DMDA0OSBwdXQKK2R1cCAxMiAvQzAwNTAgcHV0CitkdXAgMTMgL0MwMDU1IHB1dAorZHVwIDE0IC9DMDA1NiBwdXQKK2R1cCAxNSAvQzAwNTggcHV0CitkdXAgMTYgL0MwMDY1IHB1dAorZHVwIDE3IC9DMDA2NiBwdXQKK2R1cCAxOCAvQzAwNjcgcHV0CitkdXAgMTkgL0MwMDY4IHB1dAorZHVwIDIwIC9DMDA3MiBwdXQKK2R1cCAyMSAvQzAwNzMgcHV0CitkdXAgMjIgL0MwMDc2IHB1dAorZHVwIDIzIC9DMDA3NyBwdXQKK2R1cCAyNCAvQzAwNzggcHV0CitkdXAgMjUgL0MwMDc5IHB1dAorZHVwIDI2IC9DMDA4MCBwdXQKK2R1cCAyNyAvQzAwODIgcHV0CitkdXAgMjggL0MwMDgzIHB1dAorZHVwIDI5IC9DMDA4NCBwdXQKK2R1cCAzMCAvQzAwODUgcHV0CitkdXAgMzEgL0MwMDg3IHB1dAorZHVwIDMyIC9DMDA4OCBwdXQKK2R1cCAzMyAvQzAwOTUgcHV0CitkdXAgMzQgL0MwMDk3IHB1dAorZHVwIDM1IC9DMDA5OCBwdXQKK2R1cCAzNiAvQzAwOTkgcHV0CitkdXAgMzcgL0MwMTAwIHB1dAorZHVwIDM4IC9DMDEwMSBwdXQKK2R1cCAzOSAvQzAxMDIgcHV0CitkdXAgNDAgL0MwMTAzIHB1dAorZHVwIDQxIC9DMDEwNCBwdXQKK2R1cCA0MiAvQzAxMDUgcHV0CitkdXAgNDMgL0MwMTA3IHB1dAorZHVwIDQ0IC9DMDEwOCBwdXQKK2R1cCA0NSAvQzAxMDkgcHV0CitkdXAgNDYgL0MwMTEwIHB1dAorZHVwIDQ3IC9DMDExMSBwdXQKK2R1cCA0OCAvQzAxMTIgcHV0CitkdXAgNDkgL0MwMTEzIHB1dAorZHVwIDUwIC9DMDExNCBwdXQKK2R1cCA1MSAvQzAxMTUgcHV0CitkdXAgNTIgL0MwMTE2IHB1dAorZHVwIDUzIC9DMDExNyBwdXQKK2R1cCA1NCAvQzAxMTggcHV0CitkdXAgNTUgL0MwMTE5IHB1dAorZHVwIDU2IC9DMDEyMCBwdXQKK2R1cCA1NyAvQzAxMjEgcHV0CitkdXAgNTggL0MwMTIyIHB1dAorZHVwIDU5IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5NzggNzY2XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjI0NTdEOENFMzU5ODA0MjlCQjFEOTE5QTBBRThCRDdFNUM4CitGRDE1RjdGNjFCRjBEMjgzNjkwOEJGQkMKK0Q0Q0IzOTE5ODY0NEYzMUJCRQorRDczQTY4OUYKKzkzMUIxRkQ2MEY2MzBGN0Y5QkVENkYxQ0Q1NTkKKzM4RTRDOTA2NjlCNDk0OTM3QTM3NTk2RTZGRDFCQ0ZBMDhCRTk4RkIyMjAxNTU2NEJGQzAxQzhCNjcyMzk1NTIyNUFCNDlBRkQ1RDkwOUZBNjg5RDU5QzFFM0UzNjEyNkE0N0QyMkJENTVCMDgyQTQyOTlCMUYyREVBMjUxNDcyQ0ZDQzA2QTU0NkRERTVCNUUyN0YzNkYzOTgzNEJGRUFCNDcyRDFDQkVDQzUyRjBBQkY4RDIwNjFDRTlDMzY5RURBMTZDMDcxOEExNURGNkZBMjYzNzIyOEMxREEyNjZBNkQ4MTY2RjU1ODAyRTdFMDEzQUNBMjc1RjlFNQorNjU5NAorNUE1MEVDNDc4QTk5Q0IyRjNEQTJDRkM3CitGQTc5MTBGMgorRjdFOTQ5Q0M1QTg0NTkwOUM5NTYwNzM0NjUKK0MzMDk4MTIxQkU0NjA3ODM1NzRFNDIzQzIzMTlGOUFDNjFCQkZCOUEzNDU2Njc3RUZGMjVEQjQzQTE0MUUxMEI1Nzc5M0MzQ0QwQjZBMzgxQzUwNDNGNURBMkUyOTVGMjk2OTVDOTU1ODY2RjhDQTgKKzlDMDg3RTZBCitFRTg0RUE4ODU1NzdCNTQ5NkY0MzZCM0RGMgorNEU3REM2QURGNUEyRDNBNzI3MjMyMTQ5NERGNDYzODI2QzZEOEVCNDFFRTY5MERDMzI1NkUyNTM5MkIzRkRENjdGNDlCOTA4OTQ1MTk2QjUwQTk3RkZFRDlDM0YxQjYwODNCN0Y3OEYxMTJDMzc4RTY1ODY5QUFGRTk1OTcyNkQKK0JFM0I5Njc1Cis2QkZCREJBOUQ1NUNGNTY1MjA1NzJFRUUyRQorQTUyMkY5QkIzRkZDMUM2MkE1QjczQTI2RkYyRDc0ODY1N0JCOUIyNkU3RkQwRUZDOUUyQTMxMzk1MEJBNjUwRjIxRkEzNTkwMDA0MTQwNTI1N0Y3RTFBQzMzOUU0RTIyMkQwNEIxNUY4NzY4MTRENzlCRDA1RUY5QjQ2RDU0CitCRUU4MkUxMworNDEyOTM0QjE2NTUyRkE0OUE3MDdDNjc1QzIKKzg3OTA4RTE1NkREREUzREFBMUU3ODQwNEQ5OUY5RTA1RDFDRkMzQUU4MDA5OEIzQzcxRUJFQzAxRkMzNzJEOENCNUNBOTNFN0NEOEFEN0RDMTIzRUVGNkE0MjI0ODIxOUEyNDY1ODk4NDZENUMyN0IxMAorQTA3MjRFOEIKKzg2RDc4RjY0MEU4RjMwQTY2OTZBMDFEQTcyCisyNEIwNkFBREVBMkVCMjA3NEIzNjFDOUI5N0JBNjJBODA2QUI1NDIyRUZCMjFGCis5M0FFMjNDOQorQTg0RjMyQkEwNzI4NEQ0QTZENDUzREQxNTcKK0IxNjJFQzkxOEQ4MDc0OEVGOUYzRkYxQzQzQThBN0M4MTU4REU3RUM5OTdGRUIxMDA3MjNGMjI1QzIyM0UzCitEMTE2QTNDNworNEQzQUZBRkU2NDU2NjUxQkJDMzdCMDQ4RjAKKzQ5NTRBQkJCMjJENjVCNTFDRDhEREIzNzFEOTRFOEM2NzhGQzlBODcwNkYwNzRFRjAwRTcwNTRDCis3N0MwNDZEQQorREZFOUZGODU1NjhBNDhFM0IyRkQ4MUU5REUKKzg1MEUxRjdFNTRCMDMzMEQ1OThDMTA0QzBEM0E0RUM5MjUwOUJBODYwNzZERDE1ODRBNTU3NUEyQkZBMzU3MEJEMkI0MjJDNzBCOEFEN0E1MDYwREQyNUYzRDBCQjExNjUxRkExMkJFMURERjhDQjMwRjQyQzFGNTY0RUZGRDIxNDU0RDEyOTIyQTZGRDA3NERCODcKK0RDM0M5OTJGCisyQjk2RDkyQTVBQUJCRjcxMUY4NEUzMEVDNworM0FFMDBFOTczMEI2NDI2MEJDRkFBQTAxMUQ0NDI1QTA1QzJENEJBM0IzNkM3Q0Q4QTYzNUZENUFFOENBMURGRDVENjEzRTE2NkQyQjZDMzAwQjI0OTNDNkYyRDMwN0FDQTdEOUE4MkRFODEzMDc2MDQyRkFBMEMxMjg0NUFGCis0N0Y1QkFFMAorOTJEODdGRkE1RUIxNTBENDQ1OEI3NTQ0NUEKKzAwOTlFQTA2NDRCRUM0OTVERjAxRTVFREU1RjlGQzBCRDA3ODI5MkZGQjhBRTI3OUNBQkQ3RTlBN0Q0OEYwQjg4QkJBMkI4NzE3NzI5QUZBRTcyQkU5QTZERDQ3MDY5QUE3MUJBQjEyODM1NzExMzk1QURBREQxMTk4NzdGNkNGNDc3Njk5MUU5OTRENzNFNEI4NEE4QjFCQjAzNkJFNzZBQkRGM0RCMDc0MTk2QjY1M0VGNAorOUI0MEQ3NEUKKzRFNjQwM0Y0NDdDOEVFNEREOUQ1MjNGRTcxCiswRkY2MUQ3NkMzRTczMDlBQkM0RUQ3NEJERDA1ODdCMjAxRUVCNEZEMUExNEM0M0NDNTA3RUJGNTU5Qjg1MEFGRjA0NDYyMEYxRUVDRTNFN0VFN0Y3MAorMDJGOTA4QUQKKzcxREFEMUQ2MTA4NDAzQkM4ODAzN0IxNUE0QTkKKzZCMjc3MkJBMzI3RkY5MzM1NzYyREZEQTBCNzAwQURCMDQ0M0E3MURCQjY4NkFDOUY1QzdDNzJBRTVFNzFCODA1RDc2ODExQkY3RDc5OEE3NjdEODY1MzdDQkY5RjhDRTA3OTAzMDE5NzdDOUJCQjYyNjlEMEExMkRCRDNGRUU4Rjc2RjkwMzFGMTNBNTE5QTgyOTUzN0Y4ODZDQzQwQjRFQTVCMEI0NjA3MUJBQzdCNzc2MDA4NzI1ODc0QjFCNTVFQzdFRjcwRkZGRUI5ODNGRTEwQTVFNEZDRDc0MjU4ODA3QTkwOTdFNDlFQkI2OTM5NzUKKzg5NTNCREEzCis0MDI5MzQwMzY4NzkzOEExODZBQ0U5RjJBOAorRUMyREI5OEY1ODVGRUVGMzBGNDQ5QURBQzU2NjgzQ0ZBQjQ1RDQ3N0JCNkY3MDY1NTJBQkQwNEExRTg0OTEwREU4MkJFRkQxNzkzQjE2Q0E1RkVEODQ2MDM3NUVGRjA2RjBCRTk4MkQ4MkMyCitFRTYyM0JGRQorNEFFNEYwMDJCRkNBN0MzNDE1MTAwMUQ0MUJGOAorNUEyQkFEQUE3M0QxNTg0MzM1REYzMTQ0QzYzQjY3OEJDRjBGMjNBRTc3QzQ4MEIyNzZENjgxQTFEMkQxNEY0RjAxRTAzQUFGQTRCOUU5NDA1QzNGNzIwRkNCOUM2MzZCOUU5Mjg5MjBBMEUyM0Y3NTBENkZGMjY3MDVGNUYwMTAyRDQ2RjYyMEY4RTYxNkEyRDA1Q0Q1QkQ4RjBGNDM3MTI4MjUxNzkyNjU0NTZBNTg5NTdEMjAzOEJBMzNFMEVDMzI2MEJDMThBODZFQjkzNzcxN0E4MDQwQkM1MDU1NTUwOEFGQjAKK0U1QzZDREI1CitCNTM5NjUwQTA0QTg2QkU5MTRFNTI4ODM1NkZDCisyQ0I0M0ZGQ0UxNDExQTkyRDg0NEMxRTBBNzU1RUFDQUEzRDUyNDUyQkIzNjMxMTczQTQxQThGQjI2RDE0QTgxREUxMTQ5QkI1OUM1NzU4QTc4NzE5RDY0ODkzNkQzNkVFN0VFOTExNjJENTBCOTJCMUM2NEQ1NkRBOTlFOENFNzcwRjA0QzBDM0Y4MEI2QzRDQTVGM0UzNzI5NUQ4NDYwMkUwNDFBODRFRjE2OTlENTJFMjY1Q0Y3QkI2MkUyQkIzQzYzMzQzNkY3QjI1QkU3M0MwNzdFQjE4QTBFMzhBNTMxOTYzRTZCRjYxNTQyMUY0RkRCMDg0RjNDNDkKKzE2MkIKKzZCCis5NTY0Njk5RAorMjkwQ0VFNzhFRjdCRTk4MTU2MzVBNTQyQzgKKzM4OTg1M0IzNTE5QTQ5RDk5MzY4QTFCOEQ4QjZBQzM0NTBENEY3ODk0MDM3Njk3QTYwN0VERTc3NkExQTAyMUExNTUyMTYwMDhCMEQ3RUExMDlEQjIwNjBDOUE5MzM0QUFBRTJGMkYxQTg2MURBREQxQUY1MTNEQjM1MjdBRERCMTU3MkZBNTA0NDBCRENBOTE4ODY5NzM0RjBBNjIyRkNDQUMyRjA5QUZDRTQwRThDRjRDMUY2MkE5QzIzQkFGQUZDCitDMUEwREEzQgorRTU4NzhEMUVEQ0FEQjk2QkFCQzYyNEVBODgKKzU0MzAxNzVGMjAxQTdGMjYwNjU2Rjk4Q0MxNUJCNzVEM0QzOUU3ODUwMkE1MEVFMEI2QThFRjY1NjM3MDA1NTE0NUExNUFGMzA2RkVDOEM3RkEwNUIxRUM2MTMwRDI1MTYxNzFDNzJBQUJGMjA5RTk1MjQ1OUE1RjJDRjQ0NzE1MjgzN0JCNTUzQTc4NkE1MEMwQUE2ODRCRDg5RkU5ODI0RThGRTFBQTlCMEE2MEQ1RkUwRTIwRkEzNDFGOUQ4RkExNzBGOAorQ0EzNjhFQjMKK0QwMDdERThFOUI0NkUwQjhCQzRBRDQ3QjlDN0EKKzc5OTFEMUJBMDAxOEJCOENFRTFCNkRCQkMwRDE1OUQ2MDJDRjVCMDZBRUE3RjhDMkVCNTdFRERGM0JDMjhEREMwOTY1QTk0NzNBNkIyMzdEQzUxRDNCM0VEOTYyNjNDOTQ0OEUyMEI3RUU5MjJGRDIyRUJGOERDMUY0MDAzNEI5NUE0ODU3NTQwN0VDRkNCQjUxQjIyOTMyQUYxNTE1N0RGREUyMTNBRkZDM0QwNzQ0RkYyM0YwMUNGRTlEMUI0NDIwNTE3NjJGODk2NUNEMEY5QkZFRDMzNTU4NDExN0ZEODBEODFEQkMzOTI4NzcwOEY3ODE5MDkyMkI4MAorMkVGNAorOTdFNjhCOEJGRDdEMThDM0ZGN0Y3OQorNkJEOTVCRjAKKzNCMjEyOTRGOEJFODJBM0YzMjBBMENCQkMyCisyQTNDREUwOEYxMEI3RjQ2ODVERDcwNTRDMTIwRDg2OEVDRjkxNjUxMENCQUQ5ODZCMUEzODZGQTlCN0IxQ0Q5OENENDYyQTk3RjhBNDk4ODgxNUFBMEMyOUU3ODk5MkEwMkU3Q0NCOENEQjhDNzhCRTgwRTI5Cis2NkYyNkVFMQorQzI1OTYyNDYwMzEwMzY2MTFDQzJDODhBOTUKKzVBNjA1NERDM0ZFQ0IzOTQzQ0E3NzYyOThERjc1NDNFQzM2NzFBNDI4OUQzNkQ5MTY2NzMxQzg4OUMwOURDOUE0NEJGODA4ODU0QUIwMUUyNDM2MjNFOTI5RjNBRkVFRjdBRkQ0OTcyNEREODk3OEVCN0RCQUQ2Qzc3MDNBQzI0RDU3NTgzMUM3RDIwNTEKKzc3Rjg3QTc5CitFOUE0NTc2RkVCQUFGNkIxQzAwMDkwQzZGMzFGCis0RkUxQjAzNDUxRjkzRDU0OThGNUY5NDMzQzJEMjcxOTlBQ0Y4Qzc4OTdFNDZCQTZBRTMxNUM5MkI1MUI0RDI4MzQ2ODQ1QzExQzI2MUY0MTU4ODJEODBENDIxRjA2RUFFNkMyOTg4Rjk5MDkzMUIzRDVFQTZCQjUyMjg3OEY5RDJCODlGMEY2RjA5RTlEN0U5NDJCRDg2OTEzQTlBOUNGQzEzNTIxRDI1RUIwRDU4OTJGRkM5REE4MUE2MThCNEY2Q0MxQjE5QzQ5RDRENzAwNjJBRDYyRkY1MUU1RTcKKzM1OUY0NzVDCiszNzVFOTRERkNCMkQzNkMyRDg2QkEyRTExRgorMTVEMzAwQTk3MzA4QjVCODgzNUFDREFDQTZEQzcyNjRFREIzMTQzMDg3NDM3OEVGMEU4NDZBOTkzQ0UwQjc1MkE2OTQ2NTFCQ0U5RkI0NzVDM0IwRTRCQjRENjgwMUEwNkIxMEZCRDdFN0FCNUYxMzlEMTdDMDg4NDdGNDYxRjVFRjE3MUUxRkYyNEYxMjYyRjJCRTI5RDQ4MDUzMEY2QTJCNkJDOUYyOTEyRjEyMEE2MjVBRUQyRAorQTA1ODcwRTIKKzFENDMzQTk0RDU1RkE5M0JCQ0JFN0Y5NEMwCitFMDlFNkQ5RjBFNzQ4N0VBQUE2RDFGMTE5NEUwNDMyODUzMzc4MUEwMjQxRDYxMzU5NzdGQjQ3MzMxODUxQTRCQjUxRjMyNjRBNzNBMjVEM0Q2N0FEMDU0RUJDMjNCNEM0QUIwMDRBQzlDOEREQzY0QUE4OTFFMzRBN0ZFNjRCOEQ5MTM2N0E5Rjc5RDMzMThFQkNFMzA2RkNEQ0RBM0YyMTNBN0JBCiszQURFRTg3RAorNjFEQjM3RDZCM0U1MDQ2QzVDODc3QzZFMkU2QQorQkU3M0FBRTM5NDlFMzU1MDVENjQ3ODdDMTQ5NERCNjhGN0Y0RERERkUwMUM3RDNDMTRBMzlFQjQ0QkU0NDlENTE3MzJFNDRCQTQ2NjY0MDRBOUU4MUYzMjQyRkJFQjdEMTcxQ0U1QTU3MDA2MUJDMkIwQzAxMkZBQ0JENkQ5ODQ0NTIyMUQxRDdGMkE0Q0QwQkZBNUU3RjEzOTVDRjZFQzMzNzcyQzI5RjlGMjE1NjMwRjBDNkI3Q0Y3OUQ1QjZBQjIwQzQwRUZERTlGRjZDODREMjgKKzY0OEY2MkIzCis1RDRDNDQ3NTUyODMwNDlCOUVCMUQ4QTI2ODlECisyMzdFNTU1ODQzRTNCQ0QxRDlFRTIyNjhEOEREQUE5N0ZCMDFEMTEyMTc5REI3RUM3Q0UwNTBDNTE2RkEzRUU0NzhEM0MzRUY1MjY4MzMxQzQ5MTRCNEI3Mzg5MjI0MjAzQkE2QjFCMkM4RTlENjQ5NjdFOUJFMzM0NUExRTZDOTA3QTQ0NkZDOEY0MDU0NjFCNkNGNERDOTQxQ0VFRkIyOUJDMEUwMjJENUMzMkIyQjIyMzFDQ0NGMzdBNzhGRUYyQjRBOEUyREI1NUFGQzRDMzlEQTRFNkZEMTc3NkFCRDdGNDY1NTI0REJGRENEOTlENEYwRURFRjI3NzgKKzg3N0VBNzJBCitGMzE1NDQ1MEIwOUZDREJBNDY2OThDNkYwQTk0CisxODg1QTZENDQzMEUzNjBGOTZGN0QwQkJGQjFDNzY2NDUxN0JFQjhBODgxMDdEM0EwNDlFRkQ1MDU0QjZFODhGOUU1MzZFQ0M1OTRCRTBERDM3NjVEQ0YxRTVFMDQzOTRDN0ExRUYxNDlBODY1OTExODZCQTkzN0NBQUNFREUzRDBFMTQyRTBCNkZGMTJGREUwOUY2QjQ2RTFENzlCMzUwMTMwMTFGM0ExOUVCN0RDRkY0REJDQjI4NDRBQTJDRTI2M0M1RjU4MDM0NDJGMkI3NTNFQjNCNzlBRjhBMzFEQTU2RDBGMTEzN0FENURERTAyRUE3NkYwQTU3MjYKKzMwNzcKKzFCOTNCMAorOEI3RkI4MjQKKzAxNDUyNDA0RUJERTlERkYzQjk0Q0YwQzc2Cis2OUVEOUUzNkNFRkMzRTg2NjI0NTQ4Qzk5MDgzNzhCRUM5Q0Q5OUI2N0EwRDE4MDQwMzIxRjNBMTI1QzkyRkQ5ODYzRDVFOTJERTcyQTdERTI1REFEMjk3QkU1NDUwRUY5RTNDQ0RBRTZGQjdEODA4QUY2ODU3N0I5NjRBRDRCMDg2MkJDRTVCRkZERDI0QTYwMjBCOEREQUUxMkM1NUVDMzYKK0I0QzkwRDYyCitENEE0MTg2QTcyMjZDRDlCREIwQ0M3OUYyQUU1CitBMTc4RTM3RkU1QTc5OUI4RjFDMTlBQkI2RjhCMkQwNjhDNDI4NDNCMkE4MTk0NkE3MDk5NjI2NUNCMzBFMzg4RjdBQTAzNTU4OUQwRTgwNzVBRDYyRkMwRUJDNzJCM0Q2Rjk2MDlENDU4M0Q4RDk1QTlFRUI3RjAyQzg4NjM5NzFDMzJDNzU1RUU1Q0RGODU2N0I0MjAxMjUzQUNFREU0QzQ4MjQ4N0UzMDU2NjQzQ0MxMTlGQkZBMDhGRDRBQTcyOTk0MzNEMgorQUFFMzg0MTIKK0U2N0REQTYzQjg4OTA0NjUxRDA0N0MzNjRFQjgKKzc0N0E0MTRGQzgyREFGNTE2RkMxQkQwODIwNzY3NDM2REJGMTk4RDBBMjc5QjREMjQ5RTA3RTc5ODM5RDgzNzBBRUEzOUY1RjQyRDE3OUJCRDM2Rjg3Qzk5MUZBQzAxMUE0MzgzNDMzMjUxODY5MzcwRkNBRjEyRTUyNUVDNDU3RjBCOTIwQzE0OTMwRkM0NjQzNDMwODhGMURCQTcxQjUxMkFGNDYwMDFFNURBMUREODlGRTdBNjFFMDRGMzUxNkU0N0ZBNEZFRUEzNDVEQ0VGMzZBNzNBMzU3NTgxRTVCMDYwNEQ5MzYyOEExN0I0NDFGNzEwN0YwRTc4RAorN0UzQworODVFMzhDODU5RThGODI0NDg3QzczNzE3QjhCNzJFQjkKKzhDQjI3MEVBCitDMEZBQzIxNkI5NDE1M0VFN0ZGRDA3MDA4QUJDCis3M0U2ODZFRTIwQjRDQkIzM0E3MDE4RkE2RDA2Mjk5QzAwODBENTIwQThFOTdDQjRFRjQwNzE0NTk0NEVGQTg1NjdFQUYyMjdERDlEN0YwNEU2OTZBMzAyMkE5Njg0NjRGQTFEQzRGNUFGODc0N0VCMUMyOTAwMzhDREQyNTI1N0U2Q0FFOEM0MjM5NUZBREY0NzA1Qzc2MjY2QjUzRDY1Rjk4QzQ4REI4MENDQzgzOTI4MzVEOUE3OTUwMEU2RUQ5RUM3NTY5M0YxN0M1MkM5MTJERUFFREQzNzI2QzREQkU4QTAxNzU4RDQzOTc3Q0MwODEwNkVEQzg4QTgKK0EwREIKKzlEMkQ3RkUzRUUzOTk0QTY4RTFGOUY0NTczQjZDQzEwRDIxQjRGNzE0QzgzNDZDQjA2NzQwMTZCQ0Q1ODEyQURBRTREMDhBQUMyRjdDQQorOUQxQTk5MkEKKzAyNjk5RTc3OTUxNjExNDczMkUwOTIyQTNDCis3MzNGQjlENERGMUY0NUIwNDk4RENFNjVFMkE4MEVFQTQ0MDZFMzk5OEYyOAorRDlFRkYwRjYKKzJCNjc3NEI2REIwMDlFOUNBM0NGRTVCNzk2REQKK0YwMDc2OTY2NTBDMTdGQTYyMDVGQzgzRDkxREIyMEJDN0ZFQTlGNjQyOTk5Mzk1REY4OEZEQTQwRUI1QjY3M0ZCNkM4MzIxQ0M4NDJENzg1NTlCOTcyMDg3NDEwNjEzQzBGMTU0NjdCMkZBRjZGQTAzNEZCMjVFNEFFQzg2NjdCMTVBRTFCNzEzMTUxOUFDNzExMzc0MjNCNDA0NDUxMjdENkFBN0UxODhCOUE2NDAzRkI2ODg4QzVDNkNDMjFFQUUyNkRBNDIyRTU5NjFFNzUyQ0ZGQzgzQzREQjdBOUEzQThEOTVFQTY4RDRENDI4MUI3NTgxNjZDMTg2RQorMTUwNAorMjY3MjQ1Cis2MUE4M0E2NQorRjEyQTYxMTM2QjVENEE3OTREQzQ2QkRBNkEKK0FDMDk2ODk0MDc1NjQzQzhCMTlCQTk3ODU0MkI4RTFGQjZCOTMyRDU5MzlBMkRFQjI3RjAyNTUxMjgxMUYwNjc3MjcyMDBFNzE2QTM2MERGMkNGMjI3REFBN0REMTI3MTc5M0FBQUY0NTU3MDM4QUZCRkM2RDMzNzg3RDNCQUYxRDQyQjc0MDBEQzhFQzQ4RTc4MjZFNjREQ0IxQkZCNjI2OERBREY5MkFEQkZDMTBECis3N0FDN0JGQQorMTM3ODQ3NzZCQURGRDVGOUU1RUNERDNFOTEKK0Q5MUM1N0Q4RjlFNDk3QjdFRDVBOTQ1MjU4RkY2ODcxMTU0MkRGRTc1ODYyMzA3MjQ2M0MyRDFCRDMxRkU2QjFENTdFNjc0MjE2MzlGRTk3MEIzM0E1NThDMDRCMjFBRUFCMzA2M0IyQkYwQTExQzU5M0ZDMEFDNEU3NUVDNEFBMkRFQ0M5OTFFRjBCRTc3M0JDMDEyM0EzNEFFNjlFNUY1QkJECisxNjlBQTI4NgorMDlBNTNDRTI3NUJERDA0NEVCM0RCMTU0MDlBQgorOTA4MzNDOTVDMjI4MzBCMTMwQkI4NUQ3NEIwOEZFNzNCMjIyQjkzMzZGMDA0NDMyMTk3NzIyNTYyOTczNENBRjFENjI4RTkzMTFBQzMzODc2NTJCQThBRTU0MUI5MUJENEFEMzg1N0QxNjREQjkwOTcwNTFBMUQ1RkFDQTcwMTBDNEIyNkUxQ0JEQjcwODg4MUU0ODQyN0Q5NTc2ODVCRTM1Rjk2NTk4NkFCQ0IyOTZBM0I1NzVFNkM5QjdEODQxNzQwN0I3RDAxODRDQkREMjRDRkY2OUMyNjNBNQorQTg5RDhFMjEKK0U0RDc0M0NFMEU0NjA5RkMwMDgxM0NBQzkzCitEQ0ZEOTA0M0NCODM5MjFERjFDM0I3MjA4REE4M0Y4RTIzN0ExNUVBRjMxMzMyNjVEOUQ1M0U5M0M2REVCODMwQzBGNUU0RTlDMTQ5RDQ3MTAwODhDNTQ2ODMxQUM5N0E4NDQ0QTYzMTZBNUE3NTIyMkQzODYxRTlDQUQwQ0MzQkI2OTgxOTYyQ0UwRjI2NzE5NTFDQTZCRUVFOEYzNUQyRTQ4QTk0QzY3N0IxMzNGOTJFCiszMEVCNDEwQworOTU5QjNEQTM2NzRCMDE3MzE2MkZBOTUwMjIKKzhFRkQ3MEJGMjc1N0YwRjQ1MUZBQkUyREJGNjIyN0NBN0IyN0ZCNEM0QzE2NjZERjBBQURBMjVCNDFBOEQ2NEI4MDU1M0ZGRkUwM0I1MDUzRTBCRUFBQzgwMkIyQjY1QjE2MTZBMzU0QkIxQUJCMEEwRDk2RkQ3QzhFMDE4OUU2NTdBOTU4RUNFODlCOTEwRUE5RUZDOThDNjIyNUQyM0E3RjA5M0U1NjlGOUYxRDBFOEY1NzQwQ0IKKzJFQjFGOEVDCiswMDI5QTg5MTQ4QjJDODYzMDJDNDgwNjU4NzFECis5NUY0NzkwNUVFNEZFNDhEMEQxMkM4RDVGREI1RDA4Rjk2QzEzMjNGM0U2NDI2M0JCNzU2NDFGMjVDMEM3QzU5QzZENDVEMzY4MTg3NkIzRDA5MDBDNjc5QTczQjE3RkFFMzM2Njc4ODlDNjVCNDZDNjY3NTA5RTU4NDFBRjZDRTAyMUE3Rjk4OTdDRkRBOEY1RjY3Mzg2QzRDQjI1MjJBMDkyNjREQTM0RkMxODBCRDZDOUI3RjZDNTI3OUEwRTFCNTMyNDA2NTE5QUVCM0JENzM3MDg3RDgyNTZERUNCNjY4QjkzNUUxNjk0NjBBODc0NjNCOTIyREZENjUKK0E0RDAKK0EzREI2MTM5RDIyQzJCQjg5N0U2NEMzRkE5RjU1MjJCMzk2QkZGNzE2MUExQzZGRjlGOEJFRjUxNzVGREQxNDhDOERGMzAwNkVBMTA5QjY0QThBMEVDMjY3QkZDQjAKKzg3OUIzQTY4Cis1OUQ3OUZCMTBGNUYzOEM3RTVDQTgwNjUzMjJECis5QUFFMkQ1NTMxQjE1MkIxRDc1MDg4NjQ1NzFBM0Q1RUIyMzI3QjI4Q0IwNjc2NjhGMDgxMUQxMjg3N0M2RURDRjgwQUUyRDI4QTIxNjc4MDhFQ0Q0MjVGQThBQ0IxQUM4NDUyQUEyNDJCMDFGNzM5NTY3NDNDRDM2NENBQ0ZFQzYxOTVGNDcxRUM3RDRERjdDMkRDMDFCNjBERTRFNEQ2NzYxMzYzODRGNTk3OTdGQjA3QkU5OTAwNjQxRTIyOEVGMjg4OEExNzA3ODU2MTNDNDZDQUM2RkQ1RQorQUQ1RTBGNzkKKzVFNjRFQjc1REQ5NzhEODZGREFBNkZBMjhBCisyQjVGQjk2NTk0QjcxMERENjE0QzhCMjlGRTRENTZDMTU2NTFDQ0U0QzFBODJBNjVCOUY4OThBREIzQzk2REZGNzczMTdDQTE2RDJFNjEwNTE0RTk0RjcxODdGQzA0MTQ5QTE1NDREOEZDRDU5OEZEOUEzQTI5NjZGQjY1OEZEODU3RDkyNjE1RTIyQzlGQTUzRjQ0NEM2QTc3MTU2MDlBCiszMzRGMEFGRAorOTRCODI5OUMzM0I1MDZGRTI3OTkyM0NGNTU5MgorMDUwMkQwQkNFQzkwMTFBNjQwMkM4RDQxRDg4NkZDQ0RFNDc5RDE5NTVGMDU1NTY1NEFDMzMyNjY3NEVEOUU0NzczOUE0RTc0MThFM0Q3MjlCNjI1NEU0NkVBMEJBRUM5Q0Q4MDJBM0ExMkRERThDQ0M1MjAzODU4MTM1QThFRjVFNjNDMjQ5ODkzMjk1MUJBMDlFRTEzQTdBNkJCRDdEQTk3MDk2MzQ5MDNEMkJCNTU2OUVCRkNGMjI3MjY4MzhGM0MzNkQ4N0M5NDQyQTEzNThENzA0QjE2MDA1OUFFMTIzRTgwOThCN0JDMUU1RTRGMzlBNkIyRDBGQUM3CisxM0QxCis0MkM1MDkxRUE5QUQ2RDI5QTUxRkVFRjVCOUNBMDQzMzNDRERFM0I4QkU2MUE4Q0Q3OUVGQzA4RTNBN0ZCRkU5OTYxOEMwCiswRDIxQjE0QQorM0IzRThDQzYxREI0NzgyRjc3OEFBOUUyMjYKKzlEMEFGOTUxOEZCQkU3ODlBNDFBMzM3MEUzRUM3QTNFRkI3OTAwNTYwQUY3QzFGNzY2NDIzRjI0QUI5MkQ3REVCNDMwQUI0MkNGRENGODU2RTE0NUZCNjk1NTQ0NEJCNDg4NDlBNzE5NjFFRgorNDhFMzQ4QzgKK0Q3OUM4MzA4OEEzMEZFRjczNUNCQTRFMjNDMEYKKzEzMzI0MUYwRjI3NjMxMTc4NzY2N0MwRDNEQTg3NDM5NkQ1OEZFREFDQkY0MjBDRTg1N0REQkVBMDBCOTk5OUJEQzlFQjlGMDFFQ0QxREJCNzVCREVDMkEzRTAzOEIxQTE5QUEzNjUxQUU0MjBBOEQwMDk4NjlGMUYyRTZGOUU2MUQyQ0IyMDY5RTY0NzVGMzBGNzg5MThGNTAxNDY1NTc3NjdFOUVGMEJGNDMyNkNGQUY0QTIyREU0NDkxNUM4Q0Y0MDc2QkYxRUUwQjU1ODY1MDFFQUE2MzgwNjlGQkZFRTZCNUY0MDFDMzc1Mjc5OTFBNUJCRDQwQTQwOQorMTExQQorNkQxMzBCREVDMUNDRTA3NDU4Qzg3REMxMEIzRjdBMkNGQzlCQUZCNDQwNDdFNEMwNjcxQTVCOTAxQzVCMjIKKzQwQjVDQzJBCis0NzkxRkNGNjE1ODY2MkFBM0QxQzU3ODUwRjQ4CitBNUUwRjI5OTc2RTZBOTlGNjYxQTAzNjA4OEYxNjc4MEY1QjMzREI5RDRFQ0E3REIwNjg0Q0E0NjZGNTY3QTg4Q0U2RjRERDZBOTBFQjg3NUU4Mzg0MkJFMzI4MDk5MDc1QTU5RjRGRDE5QzBEMkZENDhBN0RDRTc4M0ZFNzUxNEFEOTYzOENBRDVDNDBENkUzRUREQUE0NTE5QTRBNkRFRjA4N0Y0QzNDRjY4QjAyQUIxMkRDRTREODEwOTg3QzZGQkVBRDNFMUU5MUI5NkVEQ0I5OTYyMjcKK0ZGRTNDMTQ5Cis4MDJGMUYwRUU3NzUxRTREMzM1MzM3Mzg0MAorNUU5QjdBQjYzREU0NUI5QTYzM0JEMEY3MzJENjQ3RUZBREM4ODg4RkRGOTVENkYwNTAxMTVCMTk2MzZFMTMyRjBCRTM1Q0NCMTNFMTkxRjBENkI3MzJDMzQ5M0IxM0VDMzU1MURGMDIyNkU0RTY5QUMzNTQ5NEYxMjkyQTFEODg0NDlEMDMyQTVFN0QKKzM0NjREQUFCCis0NDM3MEM1RjMzNDk3QUM5NDYzNDBGQjVBOTYxCisyRjc0QUM2OERDRUJDMDg5NDg5OEFBODQxMEY0MTE1NkMwMDM1Q0U2Q0NENzUyMUZFNjNEOEY2Mjc3QjMxQUU3MEI5REY1NDZCRjQzM0JFN0RFNTk3MkVBQUE5MEYwM0UwQ0RBOEI1OUM3ODUzMUQyMzIzRDZCOEU2NTA5OTUzNzhGNTNDQjM4NTM4MTNBOTQ5QzkwRDZEMTIzRUI1RjlFNUVGREU3MDU1MDdGRjUyQkVCNjBCQzZBODVDNUJFMTI1RjY0NjM4NDZCOUM2MEREOTFFQjk1NDg0MkY0RkQ0QzA0OEU5NDQzMkJGQUUzCiszRTkzQ0Q4RQorMEMyQzQ0ODQxMTkyM0I2NjRGNDFBRDQ4NjkxQworMkE0N0RGMDU0RjFGN0E4MzQwQUNEMzRCQUM2MjUzQzE4MzMxNTRGRUY3Q0MwQUE3QzVDQkU4NDZERDFCQ0M1QzY1NUFDQkI4QzBDNzc4MUM0MkUxNEJDMEQwODgzNUVDODg3OUE2OTZFNTA5ODJFNDdDQTJFQzcwN0Q4NjA5Q0UxOTgyMTYwRUQzOEJGRDg5Q0U4OTI1OTcwQjQwMjRDRTMwMjI1NjU4RTM0ODc3Mzg3QTE1NzRBNzhERDczNDkxNDc1QTY0RDdCNTVBQjU4RjcwNDUKK0VBRDUwNUY2CitBNzBBQ0M2NkY2QzMwMDZGNDdCNkFDN0Y0MQorRUVEQTQxNkJBOTUwMThGQzgxOUQ3MEU3MTE5RkFENjM4MDZBNTA1NTM3REM3MzZFNkVFRTFENjM2QzUyMUNDNEQ5MTY5NzNEQjdCMzQ3MjlGRUJEOTk0QUI3RjlDNThENTE5NURDNTM3MEUxRjNDOTJFMjc0QzE3OUUxMUJGRDE4QzYzNTVEMjdEODRDREEyMkJERDhGQ0E2NTExNTExMjc0NjBCRUU5OEFFRTU0Cis3NjdGN0NEQQorRDFDMjY3NURFMEQ2QjU2RTEzRjM1Rjg5NDU1RQorNkUzMkQ2REQwMTM5Mzg5QjIwMTNGNTU3NDBBMEMwQzkzRDI1N0E3MDUwNjYzOTU1NUU2NDIyNjJEM0VGMDNDMjVFRTZDOTYwRDBFMjNBQjcyMjJBMDRENzlDODY4OTA3MzYzMjAzMkQwQjZFRjMzMDIwMjc3M0Q4NzNCQzA0RERDQzMxQzJFOTE4ODEyNTY2OThBOEI5OUIzQzE1MkYyRjU5OTZDMUUwMzRENTFDMTU0QkU4MDk5MDU4NTE3RjNFMjQwMjkzM0I3OUFFREU0OUZGMzM2Q0IxNUQzN0U5REJBMzZFNjQ5MEEyMjM2RTVEOTM4RUMwNjkKK0U5RkFGQTBFCis3QjczMEY5NTQzM0IwNDJBMkRBMEY4NTg5MworQ0NBOUM2RDE4M0I5NjY2NUFDMTRFQjEwQTY0OUIwODJBRjU0MkU2Mjk0NDk3MTU5QzQ0Rjk4MTlDNEUyNzAxQkY2NzEyMDk3OEU2MEVBMzgxQThEQ0E1MUZCNzZENkYwNjU4RDhEODAxMzM1QkVFNDNBQjM4RDFDMEQ3QkQzMTVCRjY5M0VCRTZCCitBQzkzNENEMworNjRCMzk3NEE4NTY3RTU5NTczRDVCMzZDM0EKK0QzM0UxQjMxOTA4MTYxNjUxNjlDOEYyNkRBRjU3NEIyQTZBNkQ5NUI4MjRFNjM0RjhBQUQxODI2OEQxMTIzM0U5RDhGQTkzNTgwQjNFOTYyRTM5NjE4RjVCNEJGMzBFMTRGRTlCMzcwNURGQTYxNDcxNzdGNzU4NjI1MzFGMzBBRjRCMDhFRjU4ODA2MzQ4N0RCMzQ5RTBFNzFCMTEyREUxRkIxMjI2OTZBM0U1QTc0QjYzRTVBRUM5QTcwQ0FBMTBENEMKKzIyNEM5MUU4CitFNjZDRjc1MEQ2QTE1MDdCOTE5ODY1ODg3RAorNEVGOEFBN0E5ODI0N0IyNkNERDAxMTJDQzAyN0QxN0Y5MkZFMTJEMDFFQzZEMDk4NTA4NEQ2QjkxMEM1QkVDM0EzNjAzMDYxQjBFMjE3NDA0NjQyNjgzQkREOUQxMzk4NzIxRTE2Qjc0QUYyQjBDOEZDNTkyNjA1NDI1RjQzMDI0OEM4MkE3ODk1NkIzMTUxOEYxRjBFNUVFMzYxRUU4OUEyNjg2RUUzN0MyNDUzMjFENAorNTQ0NEE3NjQKK0JBQUYzNDY5MUZBMDJCOEJGMTFBNjFBRTNEMzUKKzEwOEQ2OUZFODA4MTFCMTg1RThDRUM3NkM2ODJDMjY3REU5QThBMzA2RERCODc5OUJCRTA0NjRERjNBMzgwNDUyOEJCQUQzNzRBNThBMzI2MDYzQkUwM0YxQjMwQkQ5MjAyQzFCMTAzQUMxQUNCMEVFODUxNjdDQkNCODFCNjJFMkRBRkE4RTE3QUQ3MjY4ODY0QTkyQkNGRTA4NzBDOEM2MzkyMkQ4QTE3NkY0OEM1Njc0OTc0NEM1NDdGQTcyOTI0Rjg0MjlCRjFBMTFEMjNBRUIyOEQzODlCNzM5QjU3QjYyOTUzOTY5MkY1RTA4QzBENjc2RURCNTg3MAorQjVBNQorQkQ3M0IwMjg0QTgyNTk0QUY0QjA0QTQyQzAxMQorOTEyMzhBNUYKKzA2RTBBNTNBMTAwMUFGQjJCRUVDOTREQTBCQzcKKzM3MDEzNzNCQ0JDNTY5MEVCQkUwNjI2MjM2RkJBRUVEQjA3NzdEQ0JDRjlEQUUzNDc2MUQ5QkM1NTI1MjU5RDBDRkFGRDFEMTkzODVERUQ1REYxMTRCRUU2N0YzMTcyNjM0NkM0QkJGM0Y0NDJDNjMwMEQwNDAxRTY2M0MwOTM3MzVDQUUyN0UxMUZFNEEzNDc4NUUwOUE4QjAwQUE0QzlFNDA3RDM4RDJCMzFCQUEzQjYyQ0RFOTA4RkJCQTkzM0UyQzNBRjc4NzhCNzAwNEIzM0E2MjUwRUU0MjRDRkJBMEVDQjkxOTc0M0IzOEFDRDVDMThENzUxOTZDQworNzBBNAorOEQ5MEJBMEYxOURGNTBFOTFCNTAwQ0ExRUQ2RDlDNjUyMzVBRTNCNDExRTQ5MDEwMTEKK0VEMzY1NTQ2CiszNkIzN0E1QkREREU2NkY5NjdENTFDMkQxNzQ5CitEQzYzNDU3NEZDMkM5QTZDREZCNjc0NEVFRTQ1MTBBNUVEN0Y4QjJFQTZCRDYyQzg3RTIzRURGRjI1QUJDRjgyOTU2MTM0NUY5Mjc3MjlBN0YzOTI1MEFCREQ1MDIwQUQ5NzIyREJCQ0M1QkI2OUYwMzBGNDY5RDU2MzRCRDdDNEM4QTQ3QjIwQzZGOThFM0EyNDMyQjAwMUM4NDM3MTQ3NUFCQjRDOEVBNTFGRTFCMEFFQkRGQTk2NEI4NzUzMDAxRjg3NkI4MUY3NUFBQTNFODE5QzgyODk5NjA2NDgwMDlBMDA3RTY4Q0E5OEY5OTc0OEUwRThBNTU1ODUKKzcxQzkKKzM3NzMxMjIxCis3RjBGMUQ2MEQ0MzQ2NEFDNkY5NzU2RjExOQorN0Q4QjEyMEVENDNBREFENUM3QjgxNjVEQzM5OUE2MzFDQjBEQkVFNkFBMTk1QjFDNjkwOUU3NjExQkNEM0JEMUY3MUNDNDJEM0UxRTA5NEE0ODIxMTA0NEFFMkUzMEQ0M0JEMDQ2RDA3QzhGRDY5MzY0NzZGNkUzODVBNUE2CitCRTdGREJCMgorQUU1ODMyMDFGNkU4NENDMUJDRDUxOTM4NzgKK0FGMEQzRUU3RThBMkZGQjIxRTNFMUU2QUFEOTcwNkM3QTAyNDQ5NjRGQzA3CiswMkY3RDMxRQorRjFEOEEyRjQ0QkIwNjY2MUIzQjdFQTZDNzA2QworMzQzMzk3N0U0MEVFNjc1MQorQ0UxQUFBMjEKKzU0MTlFNjA0RjI4RDlFMTlGODk0MDNFNURFRTAyODc0OUFBQzgyQjYzRDJBQjA1ODJDRDhGNjBFOTFDMDhEN0RCMDgyCitEMTM3ODBBREJENjFCNzRGRDU2RjAwQjdBM0I0NUFDNjgyOTZBQzJGM0Q4QkJGNkEwRTBGNzkzMzc4NjJFRUVGMEMzQzdGNzI2NzczCitDNTA3NTEzMDA0ODUzNTBFQkQwRTkyOEVDMTZDMEZCMUE1NzcyNDQ0QUNDRjU2Qzg2RDY0M0EKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDUgcHV0CitkdXAgMyAvQzAwNDcgcHV0CitkdXAgNCAvQzAwNTggcHV0CitkdXAgNSAvQzAwNjcgcHV0CitkdXAgNiAvQzAwNjggcHV0CitkdXAgNyAvQzAwNjkgcHV0CitkdXAgOCAvQzAwNzIgcHV0CitkdXAgOSAvQzAwNzMgcHV0CitkdXAgMTAgL0MwMDc2IHB1dAorZHVwIDExIC9DMDA3OCBwdXQKK2R1cCAxMiAvQzAwNzkgcHV0CitkdXAgMTMgL0MwMDgwIHB1dAorZHVwIDE0IC9DMDA4MiBwdXQKK2R1cCAxNSAvQzAwODQgcHV0CitkdXAgMTYgL0MwMDk3IHB1dAorZHVwIDE3IC9DMDA5OSBwdXQKK2R1cCAxOCAvQzAxMDAgcHV0CitkdXAgMTkgL0MwMTAxIHB1dAorZHVwIDIwIC9DMDEwMiBwdXQKK2R1cCAyMSAvQzAxMDUgcHV0CitkdXAgMjIgL0MwMTA4IHB1dAorZHVwIDIzIC9DMDEwOSBwdXQKK2R1cCAyNCAvQzAxMTAgcHV0CitkdXAgMjUgL0MwMTExIHB1dAorZHVwIDI2IC9DMDExMiBwdXQKK2R1cCAyNyAvQzAxMTMgcHV0CitkdXAgMjggL0MwMTE0IHB1dAorZHVwIDI5IC9DMDExNSBwdXQKK2R1cCAzMCAvQzAxMTYgcHV0CitkdXAgMzEgL0MwMTE3IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xOCAtMjA3IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzRGNTIxMDExQTRGQUIyMjM5Q0M0QzkxRjNFODUxNEEwQjEKK0Q1NkQ2QUM5MjFCNkNCOUE5NUI1ODYyQworOTZFQTEyNDNENkFEQjczMzgwCitGQkE4MUFENQorRTY3MTg3MzgzMTc1M0IwNjJENTQ4NzBBQzMKKzdCODZEQTgxMzcxMzQyM0M2MTZCNzUyRjVCNDc4NTM1RUE1MUFCMzM2QkYyNjIKKzBDMTJBOUI3Cis0MDM2ODhCRUUxREY4MzE5OTBEOTQyQzE0NQorQzIyMDRDRkNBNDc3QTJGQUMxRDZGRkU0OEZCOTVBNzJFMDdFMDA3QTY1QTU1MTMyOUZCNgorRTVDRUJDQTQKKzIxQUE3MDNENTZGQTlGQUZDNTYwODY2MEFECitCMTU4NUQ3NTdDNjlBOUVFMTAzRjAxRTIxMzJGMzczN0E5RDE4N0YwQUY1QTUzNDMwM0Y1REFGMTgxMUY0MjEyMEVEMzdFMzdGOTkxRjJDMzE3REQ2QjkyQTA2QUZBMTc5OUZFOTFCNjY0N0EKKzQyN0U4QzEzCitDRjYwQUU0OEI1RDkwM0NDQzJBNTcxRTkwMjQzCiszRUZCRjAyRTBDQUYzNzI1RTA0NDdCRjkxMTZDNUU4Nzk2RTgxNEFCOENEMUQ2MEY1RUFEMUNCNkRBM0Y3MkFEMTQ1M0Q2QTNCN0ZDMzdBQTlGM0MxRjY3M0M1NTdDRjE3NUFCMTlERkY4RjQ1MkYyMURCOUMyMzkxQzEwOUZGRTY0N0Y3QzcyNTQyQzRFQkU3MzI4NkY1ODIwNTZGMkFDQTQ1NzcwRkRDNjA5NDE1Q0JBRENEMDFCRUQ0REJFNDdDQTBDOUUzRUMyOUJGMDdCCis5ODFGNDVGMworMDI4NUVDMEQ5MTU2RkJBQjhFNEFFQjQwRDYKKzg0NTdCQzhEQTcxMzIyQjc5MkI3QkY0REY3MkFBRDBDOTM0NTc1NjE0NERCRDI2M0JFRkM0QjA0NTlCQzM2RkFDMzY1QjJDRDJGNkRCQ0E2RDFGRjFGRTQ5NDQwQzUyQ0IwQjI3ODQ4MDIwNDcwN0ZEQ0Q4NEIyRUFFRDg1ODUyQkNDMzRBNDVDMjFGRTk1OEEwRTRBRTMwM0M1NUNCNzM1RDMyMkNFRkY1QTlEMworQTE1MDMzMkIKKzA1MjM0M0MwQjE1QjdBREU1MzM0QTUyMTdENzcKKzI5NURFNUVBREQ1ODZENzNDNTExQTlDRUE4REMwMkVDRkNFRTk2NkZGM0Q1NzM4NzE5NDkwQzZFMUU2MzZDRTBEMzNFM0Q4NDgxNDIwQ0YxRTA3RkJENkJDRkU2OUYzMjFCMDMyMDExNEM5MkZFRDJCNjlBODNBRDVDMUU1QzMxRDY2N0VEQjdFNTQxMTJCMzUxNjIyMzVDRkNFRDVDQTZENUJCNzE0MEMxNTFCODczRTNDQThFMEJENzgwMzhBOTBBRTg5RkEzMTUzMkE4OTIwRTM4QTM2QkQ5NEUKKzIwMUIyMDk0CisxNTM0QzUzRTgzRDQwNzY5RDM4ODg0RDUxNUMwCitEOUJDODI2RTU1OEEyQzlERThCQjZDQzFBNDQyNTI0Njg1RTNGQjVCNTg0NzI3M0Q4MTA1QTM4RkVGRUMxOUIwQTAyNzA3RjlFNEM0MzNBOEVGOUE1NzBFRUU0Qjk3NDI5Q0Q3MDY0QzUxQ0FBQzY3QThEODMxNzA4RTFBREQwMkYxREE4NkRFRTBDRUFDRjJBODQzMDNBMEFBREIzQzBDRjkxQUE0ODUyQkNDRjJEMUNCNjQ1MDkxOTQ2RkE3RjYxNzIzMzlCMDhCODVGMUVGQTU3MzQ1MDlBQUY2RjJBQzM1MkYxQzM3MDNGRjZDCitCNUU4NEU1QQorRUZBRUQ1NTc1NjdEMDI2N0VERTU3QzI3QjEKK0RBQjdGNjkxQzY0MTA0MjEzQkVGNjg4NENGNzQ5RDJBNUQ4MTY5N0ZBQzY2Nzg0QkZEQTMyQTZBRUJFQzJCMTE0NUI0RTM0MTBDNzA1NzM1Qjk1RkY0ODg4NzNBNDNBMjY5ODc3Q0Q5QTRCMUJFNEU2NDIzQUUxNkU0QzMKKzY3MDI0MTRFCiswNEQwOTVCNEZBOThERUEyMjAwRkIxNzU4QgorQUM2N0UxNDI5RDQ0MzJGNkMzNUUwNUI2QTRBNzFDMUVEODU3MkM5MTUxMDQ2NkQxQTI5RUUxOUI0MEQ2OTc5MUU2ODg1MjE0OTYyOUUyRkEzRTBENzhEN0JCNkU5MzkxMjExREZDQTUwMDQ5QzUzNEFCMTVFQ0RCQzMyQkVEQjA0Rjk4MThGNURBODZBNDNFMkQKK0YyRDA1RjZBCisyNTlCRTUwQjQzRTA2NzFFMzNDMTQ4QjVBMAorNTIxOTZBQjAyQjlDOUY0MTlEQjI2NTZGREVCQzE3RkZDNzg4MDc2ODk1REZGNjcyNzRFNTY1MDkxMzgzMTA0QTI1N0I5QUM5M0M5NDYzNkNFRUFFREUzNTM1Qjc2Q0FBQUU2REJCQkQ0MEQwNTY2QUQ5MjdCNTQwNjZEOTgwQjBCQjNDNTI2NzVGRDhEQkYxRDgwQjE0REMyQ0IyMzAzRkNFNTEwOTZDQjAzQkVCRjUwMjRGMTg5OTBEMTJCMAorQkMyMjFFNjcKK0YwNzQ3OTU5MzE4OUFERTlBMTZCNEIzMzU3NUEKKzBDRTZBQzNFODM0MTJDNEIwQjYzREZGMDI0NDM0RjQ0N0QxNDI1NUYyQzYxOTJFMUNCODE5MDY4OEU3MEVGNDgxRDlBRURCQkQ3REY2RDhBODE5MjdCNUYzQjI4QTg2RjFBMTk2OEM1Mjg1RkMxNTQ1RTExMTlBRTZEMjg0RkVDM0I2RjZENDZCNjk4M0U5NkIwRDQ2RUY4Rjc0RTA0NUZFMzU3NzdBQ0M0NEI0MzM1M0ZFM0U1RTNFRjI0OUZBOTY2MEM2RjZEQzM5RjY4RDQ0MgorMkQwOTU5QTQKK0VFOUVDNTFEQjZBMEZDNTVEMjcxNUEyRTFFRTgKK0JCMUUyNzE3NzQzOERENjBFM0UzNzdBNEQ2NDMxRDlFRDUwQThBODBCRjNGRDA5OTNCOTU1RDVCNTg3NzZFRjJDMzk2ODQwRTc0RTk4RURFNzcyQzAwQjYzRkRFOUREQTU3QTBEQkY1NUNCQ0Q1QkU2QjU3MDMzNjg5NUY3NkY5NjQ0OTE3REJENjFBQkRDM0Y3N0Y1RjBEMDJEM0Q3NDQ4MzJGQjk4NEUwOTUxOUFDMzUwN0Y3MUZEQ0I2NDVGNzJEMUMyRTVGCitDODA2REMyQworRTU1QUUxMDkwN0VGNEUxOTgxRjlBRUFBQzNCMworQTVDQzFDOTdFRDkzOUFGNjVGMkU3OTAxODM3RjUwMTM3NDEwQTIyNTIxMzRCMTkxN0QwQTk4MkM3M0EwQjFCQTAxQUM1RERCMkNBRTU4QzhGRTNFMjFDNjMxMjNDMDgyMTc5NjE2ODgxNzdENUY0RkI5Q0Q5RTM5NEEyQTM1RjE5QjczQ0I5M0YzNzRBNDE0QkUyOTdEM0I2NUMxMDlGREU3RDYzMjRERTdDNUU4Q0M4Q0ZBREZGQzhDMjlERDJCMUE2QjI0NTBGMUUwNUU3NTE3QzU4QjJDRUE1ODQ5RTlFREQ4ODI1OEE2CitCQTdDQzc1QworREUwRjM5NjMwMEJEMzFBOEQxMEY4MDFEMDIKK0VENjNCNTJDMzBGODk1MDEwOEY2OEQ1MEZDNkI2MURBMDgwOTFGOEZBRTNCQjBFRTUyOTZFMzQ0MEI4M0FCM0ZCRTYyMDY2MTEwODhGRkNBNjU1QzQxNkI1OTFCOTQzNTUyQTBGRjIxQjM3M0Q5NUEzNzQ2N0YyRjcxMEI3NDIzRTY5RTU2Rjk4NjNBQjUzMUFGCis1N0IzQ0JCMAorNUVDQzYxRTU4QTQ5RTUzRERGRDc3MjFEMUE5MAorQjc2MzNDQjJCNjBENzkwQzFEQTdEQzNDRDNDRTJFMEM5MjFBMUQ3QkNENURDMTE1NDY2QjM3RkZGQzUyMzIyNThDMzJGQzc1Mzk5QzdDRjlGMkJDQjk4Q0VBOUNFRTI5RUI5MDcyREUwRDVDMTEwMzA2NUI4QzhCNzY5NkY5QkQ0NTRGQTk3ODY4RDM4MDE0MUIzNjBDMzZDQUNBRkFGNzUyNkZCQjM5NzI4MEU0NzUwQUYxRjYyMkIxNUM4NDlBQUFGQkMzMjJENkVGNjc5NzQxQjBFNTlFNkYwQ0JDNDQ3Q0UwRTZERTNGOEQyNUJDNUE1MzNFRDdCODA4CitGREQ2CiswNkY1OTMyMworQjgwNDhBRTQKKzM1QkVDQjE0OTBCOTIzQjAwODg1N0I1NDNCCitDNjRCRTMxRjZCRDZERDgzRDEzN0EyRDJCOUZGQUQ5NzhDNzFFMTI3RkIxNTM3QkE5QjFEODg5OUE5MEQ1MzY4RDQzNkRCQURCRUIyNjI4Nzg0Nzc3MjFFQzIyQzBBOTU4NkYxQkQ3OUZFQzU5M0JGRTRBOTFBNzUxQTdFNDc5RDRDODA0ODA3RUUzODhCRTExMjVDNDIxNjhDOTAyNTEyMjU1MQorNzk0NjY4Q0MKKzQ1MThENDI4QjdEOTcwMjRBQTU4OEQwMUZCREUKK0ZGMzQyODYzNTc4RTIzNzg2OEQ4NEI1RDNENjRGQTIyNjgwRUIxNUVEREVBRjEyQTQ5M0YzMUM5MjBGOTc5NkU2OUQ2MDk1N0Q2RDNBOTJCMjRFQkU1MEU3RjY0NjQxRkM0N0E5RUNCQkE4OTcxRjA5RTdFNDY4NDI3OUU2NjY1N0Q1RTZDRjk2MjdEQzQyQUM0NTY2MDgyMEEyMzRDQTRGQjc1NkY2QTI0Qzk3NzI5MTg4OEI1REU5ODQ3NjcyNjhDRTYxNDdDRDQ0RDM1MUYwN0NCRTM1QworMkVFRDREM0MKKzE4RDNCNkM4OTRCNkJGRDE3OUE4N0NFQ0UxCis3NkUwQ0EwN0FCNUNEMjM4QzkyOUQwMjhERTNEQTQ4QUU1MTA2Mjg1NUQ3M0NCODIxODAwRUYzNkQ5RjFEQzE3MjNDOUQ2NjYxMDRDODQxNUQ0RjM3MkQ0NTlDREI2Q0VGMTVGQ0YzQjZEMEU0RTlCNkJENUE1OUFCNTZEQkI2NUM4NDEyODQxOEUwQjVGNEUzRUNFQjM5Nzc4RTcxNjU2MUVFODU2NUU1MDBFRTgyMTQ4NDhBMjlFCitEOEIwRDIxRgorRDVCM0EyQjMzQkE1RTQ5MkEwMzY3MDAxMzkKK0JEMjAyOUQwNENGNDA4NUU5OTMyNjMyOTYwMkU3MzY4MDUxQUQ2REY3QzdEN0E0OUE1OTJEMkFDNDI4QzI0NDAyQ0U0NzYzRjMxQzM0MzIwNEYzNDI4N0ZDQzFFODBDQ0VDNzBDQkQ3QUI2MkE4NzRBNzcyNDU5RkU4QjREOTVCRTRERTUzMDkxOUVBRjM4QzlBRDBDMjVCNDRBRTdCRkFFN0Q5RkM2NzA3NTU1QTEzRTZBNkQ1NDQzOQorN0JBMUEwNTYKKzg4NzJCMzA3OTQ3MUQ0RkQ1QTYzQTMyNDE1CitGREFCMzYzMTExQTg4RjEyOTU2NDcyNzJERjc4REYzOTI1NjYyODUyODUwRDlCMTczNkE1NjAxNEE4NjBEOUU3RUZDNzBCOUYzMUI1REY3RUU0M0NFNjIwOEFBQkY3RUExMzY3MTMwQ0EzRTBGMzNFOTBFMjZCN0JFMDE1QUI4M0UwNTkzMzM4MEM1RjFEMDZGNTlBMDZDMUI5QzgKK0I2N0VDRDQwCitGQjZCREU4NkZGNTg0RTM1NEYzOTNFNTMwMQorMzlCRTE3REJDNzkxNEUzMjYzNDA0NkZDMkZEQTM1NEUwODBENzFEODJFMzA3MzAzQjA1QUE2MEM1NTc1NThDNjJDREVFM0M3RUNDQUNBMjA4NEI2RENCQTY3QzRGMTJDQUFENUMxODUKKzUzRTgxMkYwCiswRUE4QTc2Q0FCREEyRTQyNjkxOTJEMjIxRTNECis2NEQwNDhDRTk5NDRFMEUwOTgyRUFGMTM2RjU5NTJDMUFFMTJBODY3NTA3RkFENkE5NTk4REQwMkRDRTRGMkRFNEI1ODgzOUY1NkYyNDI5RkE4ODgxQ0ExQjU3NDFDQTk2MDM1QTUwOEE1QUI3NjJFMkU4QTE5RkVBRjNCRkU0NTEyNTBBRkY3Mzg2NkY4RjVEOURCOTk0MTU3QzMyMTY5RjBCNjFGQTMxMEZBNEE3M0ZGN0VGQzM4RjU1ODdCQUMyNjMzRTQwRTQ3Q0YzM0VCQjU4OTg4OEZDRjM0Nzk1OEVDNkY5Qzc3RDkwOUREQkZFQUFDMTI4OEIxRDkKKzUwRUYKKzYzNTc4RDUwMDlBNkJFODNBM0U1MDMwRkRCQTAwNTY2QUI0Mzc1NzE0MzU1Nzc5NEM4M0I0RkVBCis0NzJDRkEzNAorODBGRkYzRUQzQ0YyQTg2QkI5QkY4QTk1N0QzRAorQUUzM0U0MjU0NjZGQjY4NTdEMDkwMTY3NEI2M0E3NkQ4QkUxRjQ1MTMzQjMyQjRGQUYzQjRBQzVGRUU1NDQyQkU1RTkwQkEwOUYwRkVGREIwNUNGNkM4OUY2NUQwQUM3RUI4MzhCN0Y4M0U4OTkzM0M5OEQ2OTUzNDkzNUJDMTM2OTRGRDRGMUY5MTNEMTMwMjZGQzVFRkM1NUFCODU3QTUwNTQzNjA1RjJEMkY0NjZEQTEyNzMyRjE4Njk5MzhGQjhBQzU3OTNBNThGMkEKK0FEMEZGNDk4Cis5NzFDODYzMTZDODk3NDQ1RDJDQUFCNTE0RAorREM2NkM2OTZDMUExMkNEQjBEOUJFMEVEMjhDQjE3MTUxMTY5NjgwODQzMDZCOEVENDkwODlEN0U2MTcyMjdGRDI0QTc1QzJFREFGOTg5MUZFQjIzMzlFRTg1NTFCMzI1NTQ3QkU3MUM4NTUyOTRDRjcyOEY1RTkwQjNFM0Y0MDhBNUQ2MjY1OEY5MjcKKzhDNjZDNjRCCis0OTdFN0JBQ0MzREQ1NjlEQzZCNjVFMDYxNDQ3Cis4NzA3MEUyQzY5QzNENEIwNDlCRjE1RjVCOTdGM0ZDMTA1NEU3MEQxREU3NTE0MzU5MzFFNjVEMjMwMTQ3OEMwMzg5N0VBMzVBNTgwQUU0MEM5OUY5Rjc4NURGMkYzNEQ1NUFBMEE4M0Q1Qzc1NDE1NEI5QUM4NTgyODhCMTBENEY3QjgzM0UwMzVDRDZBNTAyMTI0NkEzOTAzMjYyRjVGN0JDRjM1RjVBRjVEODBGRjFEQTI3QkYzNkUxRjdCQjE5M0U0QzY1MEFBN0JBOTcyQkVCQUUyRDk5OEQ2MjE0MDU4CisxMkU4QUVBMgorRDc5NEI4QThDM0MyQjg2QTUzMkE5NjdFNEZENAorMUNERDYwRDY0NkNCMDE4NDcyRDVENzAxM0UyNzg0QzI5NTIwNjk1QjgyQzAxNTNGQTlDQzM0QkUyMTIwNTU2NjA3RDA4QkJBRjM1NjYyM0RCQjNGNEZDODY0MDc0OEYzOUNGOURDRDVCMDNBNkY1QjBBMUQ5RkJENjhBOTRFOUE5MjZGM0NDREY1QjYyMTAzNTU0QjhCQjEwMjJDQjE2Q0I2NTE1QzM3NTIwMDU4M0MzQkExNjU3QUM0NUM2MUEwRjQ1NUQ3MDk2RTlBQTBFODIzCitCMjJDNUIzMworMUI4NjNDMkY5QzM0M0JGMDg4QkQ5NDg0RjIKK0Q2Qjk0RjEyNDk2Q0FFMDk5NkM0OEE3Mzg3QjQxOUJDOEU1NDMxRjQyMEEzQUJFNzQ5NjNFQTQ1OEVBN0IwRDA2RjcxQUFDOERBNDg2MzRFNUU4RkQwOUUyREUzOTAwNkQyM0E3OTgyOUNBMEM0QkE3RTlCMjAwRTI2MTA4QjAyNkI2NjhDODg1RjIyQUE1MzZCMTc2MTcwMkYyQjE3M0JEMEU4QjZCODdDRDlCM0EzM0IKK0Q5MDc0QTJECiszQ0I0MTAwQzcyNjI4OURCQzI3RUUwODcyMkRDCitFNkE1NzYyRTEwRkZCNTExQTBCMzlGQzA3ODI1N0E3RDI4Nzc5NTJCOEJFMERDNUY1RDc5NTRCRDE3OTIxQkFDN0Y1NDIyQ0Q5MTM4NEE1MTkwQUQxMDRGQzBGNDYxRjAwRTBERjlEM0YyRkUwODg0NEJFODIwQUMzRUM0NjM2MEJDRkZFNTI0QUVDOEU5RDI1OTQzQzkxQzgyOEQ1REU5RDdFRTUwRjZCNjdFQ0YzQkUwOTYxNEZBRDBBOEVFRTQyRDUyQzk0MjkwODRENkQ3REQyODlCQkI4MDgwODc4Q0Q3NDFEODk4NUZEOTcwQjkwMworNjQ2NjIwODEKKzg0Qzg2MzZEQ0UwM0RBNTdBNEE4QTc3QzM0CiszQjY0NTcxN0I3MTBEQjkyNDQyMjFENkNEQjFGQUIzM0Q3RjIwM0Y1MEVFQTIxOTQyNzQ0NDFDREIxM0U3QTc5RjQ0QkM5RDY3NkRBMEVEMkE0MTg1RDAwRUQwNkYwNDVBRTA0MkMwM0U4ODM1MkY0NEU5RkIxRjQyQURFRjAwQzc0MjVGQkZCCis0NjAyRjhCQQorRDlDNDgwMTI5NjhBOUQ1RTkzQkZGMDFGQjUKK0M4MUQ3MjA2NTM1M0Y0NDYyRTdGQzMxMzkxODY2RDEyQkJGOTZGN0UzMzZCRDcyNDFDN0Y4NkJBQkFBNENBMjc1ODEyQzJERDIxQkRBRDI2MTA1NzEwNTBBNTZGQjg0RTM0MTM5MUNCODA5NzhGODM1OEY2MTA1Qjc3NUNEMTk2M0UwNTYwNjJBQUY2RTg4QkJCMDNGRDI2NDg3ODE2MjUzNUMzMDQxM0Y1NDRCRDJCMTk0OEMyCis2MzBERDA0MgorMUI0MDNBOENCNUNDMTZBN0MwQURDREQwQTU0MQorQzdDNzk4Qzg5MjA3MTkyQgorNjYxMTFFMDUKKzRFNUY2RDFBMkFCRTE3NjFCQUU5OTQ4N0ZBNkM0RUZCNkVDRkE2QkY2OURBQTU2MTA5RDRCQjhCRUU0NEIwNTlFMEQyCitEMDlBQzRCOEMyMTIxNERGRDkyQzQ3RUZGQTVFM0JBNkQ3MTQ4QThDMjc3ODA5OTY0RjlGNEIwN0U3RjA3MzAzQkE3NzZENDU4RTM3Cis4MTE5MTQyQkIzMkU5MUM0RjUxQzIyOTc5NDFCRjlEMjc1QkYxQTUwNUEzMEQwOTZFRDY2NEEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTcgcHV0CitkdXAgMiAvQzAwOTkgcHV0CitkdXAgMyAvQzAxMDAgcHV0CitkdXAgNCAvQzAxMDEgcHV0CitkdXAgNSAvQzAxMDQgcHV0CitkdXAgNiAvQzAxMDUgcHV0CitkdXAgNyAvQzAxMDggcHV0CitkdXAgOCAvQzAxMDkgcHV0CitkdXAgOSAvQzAxMTEgcHV0CitkdXAgMTAgL0MwMTEyIHB1dAorZHVwIDExIC9DMDExNCBwdXQKK2R1cCAxMiAvQzAxMTUgcHV0CitkdXAgMTMgL0MwMTE2IHB1dAorZHVwIDE0IC9DMDExNyBwdXQKK2R1cCAxNSAvQzAxMTggcHV0CitkdXAgMTYgL0MwMTIyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xNDQgLTIyNyA3NTcgNzI4XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVEN0M3M0UwRDlGQkMyQzUxRkM1RDdBNEM4NDY2QTBBQ0YzCitFRjZBNTFFODU4ODE4OTNGNUY4QkM4NDMwMjA4Cis4N0YzMTAzRjc3MjFFMTM3RkExRjVFMEFBNjY4QjkyRkQ1MjI3OUU2NkMxRjg4RTIyNUYxRDAwNTI1QjAzNjI1NjAwRUVFOUFBMEYzQkM3NzQ4NzVDNzhDOERBMzQ4NUYxNzY3NUM0OTU3NTk5NkE3M0FGQ0RGQzVDMDQzRkYxNTI0MEYyNzY2RDM2MEIyOTVEOUYzNTc1Nzg4MkYyMDIzMUNEMjNENEIxRDQ0NjQ5RkFDMkY5NDZDNTI0NEEyMkY2MkY5OERDODkwMDQ5N0RCODgwRUUzMEJFQzRCRTMwMTFDMTA4QkIxNjAzRkM5RTQ1MDg3QjRDM0Y3QjQKKzM4MEUKK0RCN0JFRERGRDgxMEJGRTU1QTUxRkE5MkU3CitDNUUwMjc2MAorMkZFQTZFMUM3QkM4MTZCMzc5QjlCQjY5MEIKKzNGMUY4RDVEMTNCMkZBMENBMTNCMzJFMjMxQUQ2NzAxRjg1RTcyNEU3M0VFNUNBQjc1MkExRjAxOTI0RTU3RUMzMzI1NjE0N0E5RDE1QzJCRUQxM0U1Qjk4NjhFNDYzRDBDRjk3Q0Y3OTUyMEQxOThFRjdFOUE0RTg0MzM2MTVENDNBREI0MkU3OTU3MDA2ODg2MEFGODE2M0RGQTMyRTFGMUFBOUQ4NEEwNTg5QzMxNkE3NTUxMDc1MzIxNDUxNworNjVCMDI0RUEKKzJDQUUzM0RFQUZFMkZDRkVDMDU1QkNDNkU4MDcKKzhBNTNCNDQ1RDkyMzgyMEMwQjNDM0I3NzVCRkExODU4QjQ5NEEzRTFFRDU3OUI0QjcwMjFCMjc0N0NBN0RCOUJBODEwRDAzQzEyMzg2MEFGNzMyRDZDRUM3QTE3NEU1QURCMkRGMkM0ODQ1OUI3REE5MTA5OUI5RUE0REZEMjcwNjAwNzAwNDdCOEZFRDU3ODUyQkE1NkYwQzc1QjA5RDk1MzE1ODQxQTFENjM3MDAyNjEyRjczMUFGOEVFNDA0N0RFRDVEOEU1M0JBNTUyQkVFRjVENzkwNzBCNkNBQzJCNjhGOEM4MzVCQkU0MTVEOTQ3NEZFMjkzOTNGOQorQUZCNworMzE2OEY4QkFDRUU0Rjc1M0U1Mzc0RjlERDU0RjgxNkYyRkIxNjU2OUNCREZGRTZCRUYyOEFGRkJBOTZFNkQxRDQxNzkwQjlBRDVBNzFBQzQ3RUJCRjA4QUZENjU0QTQxCitCQkI5QjkzNAorMzJDRDNFQTQzQzNENzU2NTBBMDI2Rjk0RUUwNworOEM5Q0QyNTE5RUY1NzIxNTZCMkYzNERFQjc2REM3NkJBOUIyNzA5QTZERDc4QzU1ODk3OENEQzc5MUJGNDM2ODFCQjdBRTkzMjhCQUE3QjI4NEJFRTVBNzQ1NEM3MkE1Q0YyQzlCREU5NDgwNUE1OUZGODQzQkU1MUNDREJGRTY5QzkzNjFFQzZDNDkxQzE4RkEyNjE2Qzc1Qjc3MkU2MTRGMTNDMzhCM0E3Q0FFMzk4NkQyQjE0MkNEREQxREEwNTI1NTZCMEI4MAorQ0QwMDlGNkEKK0IyNjM4NzUwNzAwRDY2RDBBQTU4MTAyMTMxNDEKK0FDMDA4NzgxRjM5OURGMUE4MDQzREJBRUJBRkMyQjRBQjU5NkRBMTA3MUYzRDUwNTY1NUM4QzlFODBGRDlBMUUwRkI1RjcwREI4QTIyN0ZDNUQ4N0UyNUI1OTg1NDYyRDJFNERENDQ2Rjg4NzI0MzJGQTRCRjc4ODlBNkI4MUFBQzlDQjhCODE4MTQxQzREMjM3RDdEQjFGQzVENTFBNTU5Q0QxM0M5MzVCRjFBRTYzOUUyNjFCODM0Mjc4NDFCNTY0MTA4NEY2RjQzRDQ0Q0I3REQ2MEEwRkY0N0U5NENBODZENzFGQzZFRUYzQUMxODkzMENFOTFCMDBDOQorQkQ3MAorNjcxOThFRjBGNTU5NTNERDgyNkEwQzk4MUM3MTkzRTVDQjUzNTkxRkQ5MkQ1RTNFRTRGQTNFCis5MEI4QUZEMworQkQ3RDFBNjUxNDVFNjJCMjQ3NDg0REJFRkQ3RgorOUEzNTRBOENCMkIxOTE2OTgxRjNCMDRDNDQ2RTkxRjlENzg5MEM5OUU3NjhEOUZDNEVBNjI2RDY5OEEwQTMwOTk5MzdDRTBFMTZEMjZEMzhCRkM4QUYyNDkxNEMxQ0FFMjk2N0Q3OUVGREU2OUVGODZFMjM3MzlCNDZCRTdDODM3RDlEMzA2ODhGRDM3NDg2NDlGQkY2ODA4MkZBNEQ3MTYwM0Y0ODNCMDU3RkE2REU0NUVGMzExNTRCNjI1OUYzQjYzM0VGQjNENkEzNTczQjQ3M0VCQTFGMDFERjJDRURCMDI2NzAxMkRDNDUzQkEzMDAKK0MxMTM3OTlDCitENzNEMDU4RkQzMjVDQ0RGRjkxQzdFQ0ZDMEVECitGNUMxQTgzNUZBREQzQTMzRjkwQzZENDBCRTM1QzRDNDRDMUU3NEEwNkJBNUMyMTNBQzNDMzIyMDczMzNGNDE5MjRCNzIyQjQ2N0M0QTI2MjI1N0MyMTM5OEUzQzVFMUVDQTA2RDlBMDAwOUU2Njk1MDcwNzAxNTA2OTBEOTk5QjRCOURFRDY0REVBMjJBQTYyRkNDQjA2RDBDRkZGMzBDRDZBM0YyMTY4NUY4QUY0MzM4MjU0MEMwMDAyNEI3NkZCODZDMjFCRDhGCisxNEI0NEZFRQorRDQ1MzA5Q0I3NjYzOEEzNjBDQzNDNTJDMzc2OAorMzNDQzlDMDdBMkM5NEMyOTIyNTg3MTFBMkUyNjg0QkQ3NzAyMjNFRTg3RThFNTE1MDBFNjZDNDEzQzg4NUREOEY3QjU5MUQ2MTZFMDM1RDBBNEQyNDIyQjAyQTg3QUNBMzU5MTBFMjA0ODMzNTNCOEFFRDhGRDAyN0VEODREQURDOTI3RjA0QUM1RkUyOTBCMjQxMUJBQkU5ODE5QTFCNTQ1NUM0Njc1QzAyRDU4NkZCQzk0NkRDMEQ4QzBENDU2NUQ0N0E0QkExRTAxNzY3QUMwMUJDOTlEMzgwRTI2RUFFRjI4MTExNDBEQTRCQ0IyQjZDREMxNDVFMDIzCis1NTc3Cis0MEM4QzUzRjZDMUQyM0I2NkZCNEM1NDc3ODUxNjU1MTFGRTc1RUZGNURGMDhFM0E4OTBEMjY5NTQyQzc0RTc2RENEQjI3MzM4RjU3OEY3NzQ5RTFCQzU2NDlCNDlDMzVENkVCMDdEOEIyMjA2NTgyRUY0REE1Qzg3MUFGRjBEQzczRDM2NEY1NzFCOUMxQTU1Q0FENjkKK0EzQzg5N0ZGCis2QUYzRjBFRkE1MUY3NjFDRUI1QTA5NjM5NgorQ0E2MkFERDY0MUJCRUI3RjE1QkY3MUVFNjBBMDc2OTc0NjM1OUU2RUQ1MDJEODYyMjE2ODZGNTM4N0ZBRDFDOTlGQzc5RUMzQjY3RDI2REU0NzkxQUI3QzJFM0E4NzhGMTAwREVEQzc3MDc5REU5MzU0Q0FFRTU5MzE1OURDNDgwNDg0MEIzNDZDMEI2M0FGMzA0MkE4RjU1RUQyQ0RENjgxQUUwMkE1NjQ1RTQyNzE5MDg2NDVFNjQ0MzRDOAorNkVDMUZBOTQKKzgxMjI0QjU5NEQzMjRFRUMyMkIxOENGMkZGRUMKK0M2OTREMjZEQTRCMDFFQUMxN0U4MUJEMEExMjAxQjA3MzNGMUEyMzgwNjlDRTY4NUI2MUFCN0MwMzcyREY1MjdGRTEzRTlDNEYwMkZBNEEyQTdCRTlGNjMwNjhFQkI1ODUyQzlGQjdDMEIwREM0ODA2OTlBRTJCOTU3N0RDNDM1Mzc5OUQwMjg3Q0Q5QTVFNkEwOUEwQTcyNUY1OTFFQjEzMUFDRDcyRjk4RDc5MTk5QjdCM0I0MkNGQTVFNTRGMUU3REIxRjkyRUE0RDYwNTVGQ0Y2MjdDNEUyQ0U5MDA0NkE4RTRDMzhFOTk3NDU3OTU5QUY0QzUzMTY1RQorQUEwQworMUVFRkU0MkIzQUYyMThDMTk5QkYxQjk3RkY5RjlCNkVCNjMyNTNCQzM1NTRFOENBMkIzOUYyQ0REMzMxRTczQ0Q3N0Y4NDAzOTM0ODg1MTAzMkU3CisyNkU4Q0NBMgorRjlENEFCOTA5OTY0OEYxNjU5NDRBRDAyRUUKKzgzQTQ5NEZBRDEwNjAxRkNGNTRDMDY2NUYwQjQ3ODdCNTZFOEYwQUQyMkQ4MTRFQkI2NTU0QjYyMkEzMEFDNTdFNDY2QUI0NjgxRjU2NzhEQzVFNjNDN0M0NDdDMEVDRDJCNzA3ODUwN0U5MUJDRjcyNUNFRjUwOEQ2QzQwRTg5RkQ4QTI2NjlEREFGQzFFRkQyQTBENTI0MzRBODI0NDA1MTZDMzkxQjU3QUIxNjlBMEQzNTI3CisyNzRBNTk0OQorQkVDQzM3QjdDNEE5NTUyOUJCMzNGMkMwRUE4RQorMjc5REM2NzAwRURFMENFODUwQTkxNzdDNkU4NTFEMDFENjdCMUZBQTBFRTQ0NkZFOTQ3QjE2QTI0Qjk5QzFDMkU4RDgxNDEzMzdENzA1Njk5NUY0QkE5RDEyNDY1NTE1ODdBQUVGNUU4RkVBOEM4MTI3QkJEREE2Mjk0QUJBNkIzN0I0REI2M0Q5M0JFREFBMzBGQzEyQkQ1MDEyOUEwQTgzQkYzMjQ0MEM3RjQ4MTZDNDc5NzJBREEzNUQzRENBQzY1MTE5MEJBMTkzMTAwNEU3NzcxQzkzRjQzNzY0MTQ4QjFENkJBMkZEQTcKKzgzNjVBQUMyCisxNjREMDc0NjRBOTVDMUMxMTI4OEVDMTg2MworNTNCOUM0QjI5OEU0OUMwOTUwQzhGNTIwNThDQUVGMUEzNDE5OUY4NTNCNzlERTdFMDcxMEU0QjEyNDk3QkYxNTZGODEzQjA1MjFFNzJGNjk5MzU4Q0ZCRDE0QTlENTZDOERDOENGNUY1NkQ2REExODFFMUZFNEQ2NDk2RDI0Mjk3QkVCQTgxQ0RGNDJGNDk4QzAyMjg5MTlBMERCQzUxQzg2ODYzOTkyNUY5RTE2CiswMTNDRDUyNworNTJBNjMzNzA1M0ZDOEUwQzRENTg2OUIyOTYyMAorQkVCRjAxRkRFMTI3OUJCQUZCQjlDOTVGRjY4RUE3ODk3NUU5Q0ZDQzVCNTVGMUFCQTQyMjJDNUY5RjM2REMxNzkzOEEyOUM3M0IyNTIxOTNBRjMzRTU0Nzg5OEEzOEE2QUQzQkExQTYxQTU2RDdEODUzRkUyREY0MjlGODRDM0M2N0Y5NkFCRjIxQzlFODk3ODYwQkU5Rjk3ODYyMkE1MUIzOUIwQjEwN0VCQkEwMzI2RTAwODE3MDg0N0IzOEIzODVCMjY4QUY1RDAzQTExRDU4OUQ0OTIyOTQ4MjYxQkE0NTJFQzEwOTYzRTJENTE4MjFFQkE3RDAyQkZBCitFRjM2CisyRDNBQTkwQjY5NTFDOTY3QTlDOTg4N0U3NDdCMjUzMUNGQUIzOTY5MjQ3NUE0CitFMEUwRjQ1NAorQ0M0Qjg5RUQ5Rjc0MkY5NTU0NzBBMERCNkIKK0M3RDEyQUUxMTRCQkU3QjI2RTFBODk3QzczMTcwM0MyRTQ2RUY1QkQ5Mjc4MzUwNTZCQUU2ODFBRUVERjA3MjcyMzM5NEM5QTFBQzJGOUNDRERBODhCMjcyODgwRjM5RjlDN0E5NDA5NzBBQjlGNzdDNzEzQzQwMDBCQ0YxMDFFNUFGNzYxQkZCOTc3NURENzZBNEFDMEU5NjcxMkM2ODRCMjVGOTBBNjRGNjhGOEM5MkVGMAorNjdFRDgzNUUKKzNFNEUzNzUwNjdGQ0E2QjExQTEyOUFCNzYzMUIKKzMyMTI1ODI4NUE5MUJBODdDQ0I5M0E5ODI5MzQyMTYyRkNDMjI4NUUwMTgwMTZBRDFBMjgyOTRCRkEzNTdFOEY3MTg3NDMxMkZEOTdFQTNBNDJEMTMxNEJDOTIzM0EyOEY2ODFCQ0U4NTZEN0I3NzQ5QTExRUVFRjczQjZGRUYzNDNBRDI4OTRFN0U1MDUwQzMyQ0Y4REFGMzVERTU1MTcwNkM0RTA2NTY0QTkzOUMzRTY3Q0UzQjE2RTlCM0IyMUEyMjkwRkUwNDdCMTU2Rjk2NDI4QzgyMDVCNDJBOTVDNUY4M0I4NjI2Mzc0NDNGM0U1MEI2QkM0OUFDQworRjBBMQorNDJFOEUxQjY4OEFENkNCQzRGCitCQTVENEIzRQorQzc5NDNGQTJEREI3NEY5M0QzRERGNkI1MzM0MAorOEYzRDczMzI2NzJERTE1QgorRTdFMTgzQkIKK0Q4RjJGN0I0MUU0MzYzRkY0MjI0NENFODI5QUE3M0NDNEE3OUQzM0YyQjlGMDgzOUY4OUUzNkUzMDBEQjQ4NTdGMDUyCisxRjM1REQzRjVGQTJCRDFFQzRBMUM4RjQ5NTFGNzk3RUYyQzBCMkM4MjQxODI3OEQ4N0ZCQkY0OThEMkQyRkFCRjg3Q0E2RkRBQzk5Cis1ODYyNEU0MzVFODAwMjkyMTc0QkQwRUE2MENEQjcxQjMyNkM3M0VGN0FBRTMyRkRGMjdENTEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmkgMTIuMDAgL1BTT3dzdGR1dGNoaSBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxODI2MzQzMDI2MzIyNzBmMDExMDAxMTEyNjJlMjQyOTJkMjIzMjJiMDEyNzJmMzIwMTE3MjYyMjMzMzUzMjJhMmUyODAxMTgyNjM0MzcyZjMyMmIwMTFhPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDI2MzIyNzJmMzIyZDIyMmUyNDI2PiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwYjBkPiA5MzQ2IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDEyIFNGCis8MWQyOTI2PiAxMjcxIDE0MzEgMCAxNjMxIC0xIHMKKzwwMDI0MmYyZDJkMjIyZTI1MDcyYzJhMmUyNjAwMmYzMDM0MmEyZjJlMzMwMDI3MmYzMjAwMzQyOTI2MDAyMDFkMTUyMTFlMTMxYTIxMWIxYjAwMzQyNjMzMzQwMDIyMzIyNjAwMzQyOTI2MDAzMzIyMmQyNjAwMjIzMzAwMzQyOTI2MDAxZTEzMWEyMTFiMWIwMDM0MjYzMzM0MDY+IDE2MzEgMTQzMSAxMyA5NTMxIDAgcworPDM3MmEzNDI5PiAxMjcxIDE2NzYgMCAxNjU3IC0xIHMKKzwwMDM0MjkyNjAwMjcyZjJjMmMyZjM3MmEyZTI4MDAyMjI1MjUyYTM0MmEyZjJlMzMwZj4gMTY1NyAxNjc2IDMgMzgzNyAwIHMKKzwwNzIwPiAxNTg5IDE5OTggMCAxOTI5IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDQwZjBjMGEwNDAyPiAyMDMzIDE5OTggMCAyNzAwIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzMyNjM0MDAzNDI5MjYwMDJjMmYyNDIyMmMwOTMyMjYyZDJmMzQyNjAwMjAxZDE1MDAyNTI2MzYyYTI0MjYwMDI3MmEyYzI2MDAyZTIyMmQyNjAwMjczMjJmMmQwMDAwPiAzMTc3IDE5OTggOSA3NTI1IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDMwNDBmMGMwYTA0MDI+IDc1MjUgMTk5OCAwIDgxOTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOD4gODE5MiAxOTk4IDAgODI0NSAtMSBzCis8MWQyOTI2MDAzMjI2MzEzNTI2MzMzNDAwMjIyZTI1MDAzMjI2MzMzMDJmMmUzMzI2MDAzMzJhM2EyNjMzMDAzNzJhMmMyYzAwMjMyNjAwMzQyOTI2MDAyMzM1MjcyNzI2MzIwMDMzMmEzYTI2MzMwMDMwMmYzMzM0MjYyNTAwMzQyZjAwMzMyNjJlMjUwMDIyMmUyNTAwMzIyNjI0MjYyYTM2MjYwOD4gMTI3MSAyMzIwIDE0IDg2MzYgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwNjBhMGQwOTAwMDUxOTE4MTgxMzExMWUxNTE5MTgwMDBjMWMxNTEzMTgxZTEzMTIwMDBlPiAxMjcxIDI3NDggMyAzOTQ2IDAgcworPDEzMWIxZjEzMWQxZTAzMGU+IDM5NDIgMjc0OCAwIDQ3MzQgLTEgcworPDEzMWQxYTE5MTgxZDEzMDAwZD4gNDczMCAyNzQ4IDEgNTYzMCAwIHMKKzwxMzFjMTQxOTFjMTcxMDE4MTExMz4gNTYyMiAyNzQ4IDAgNjY2NCAtMSBzCis8MGIwYzBmMDc+IDEyNzEgMzEyOCAwIDE4NjYgLTEgcworPDA0PiAxODcwIDMxMjggMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCAzMTI4IDEgMTk2MiAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxMzE2MWExNTAwMzQyNjMzMzQzMzAwMjIzMjI2MDAyZTJmMzQwMDI0MmYyZDMwMmEyYzI2MjUwMDJhMmUzNDJmMDAyZTI2MzQzMDI2MzIyNzAwMjMzOTAwMjUyNjI3MjIzNTJjMzQwODAwMTUyNzAwMzkyZjM1MDAzNzJhMzMyOTAwMzQyZj4gMTk2MiAzMTI4IDEzIDc3MzUgMCBzCis8MDAyZDI2MjIzMzM1MzIyNjAwMzQyOTI2MDAzMDI2MzIyNzJmMzI+IDc3MzUgMzEyOCAzIDk0NjEgMCBzCis8M2I+IDk0NjEgMzEyOCAwIDk1MzEgLTEgcworPDJkMjIyZTI0MjY+IDEyNzEgMzM3MyAwIDE4NjQgLTEgcworPDAwMmYyNzAwMTMxNjFhMTUwNjAwMzkyZjM1MDAyZDM1MzMzNDAwMzIyNjI0MmYyZDMwMmEyYzI2MDAyZTI2MzQzMDI2MzIyNzAwMjIyZTI1MDAyZTI2MzQzMzI2MzIzNjI2MzIwMDM3MmEzNDI5MDAwNzEzMTMxOTIxMTMxNjFhMTUwMDIyMjUyNTI2MjUwMDM0MmYwMDM0MjkyNj4gMTg2NCAzMzczIDEzIDk1MzEgMCBzCis8MmQyMjJiMjYyNzJhMmMyNjA4PiAxMjcxIDM2MTggMCAyMTA5IC0xIHMKKzwxMDAwMTMxNjFhMTUwMDEyMmYyZTJlMjYyNDM0MmEyZjJlMDAxOTMyMmEyNjJlMzQyNjI1MDAxYj4gMTI3MSAzOTQwIDQgNDE5NCAwIHMKKzwyNjMxMzUyNjMzMzQwOTFiPiA0MTg2IDM5NDAgMCA0OTk4IC0xIHMKKzwyNjMzMzAyZjJlMzMyNj4gNDk5MCAzOTQwIDAgNTcxMCAtMSBzCis8MDAzNDI2MzMzNDAwMDQxMzE2MTIxOTIxMWIxYjA1MDAyYzJmMmYyYjMzMDAyZDM1MjQyOTAwMzQyOTI2MDAzMzIyMmQyNjAwMjIzMz4gNTcxMCAzOTQwIDcgOTUzMSAwIHMKKzwyMjJlMzk+IDEyNzEgNDE4NSAwIDE1ODcgLTEgcworPDAwMmYzNDI5MjYzMj4gMTU4NyA0MTg1IDEgMjEwNiAwIHMKKzwwMDMyMjYzMTM1MjYzMzM0MDkzMjI2MzMzMDJmMmUzMzI2MDAzNDI2MzMzNDA4MDAxNTM0MDAzMDI2MzIyNzJmMzIyZDMzMDAyMjAwMzIyNjMxMzUyNjMzMzQwOTMyMjYzMzMwMmYyZTMzMjYwMDM0MjYzMzM0MDAyZjM2MjYzMjAwMjIwMDMyMjYyYzJhMjIyMzJjMjYwMDI0MmYyZTJlMjYyNDM0MmEyZjJlMDg+IDIxMDYgNDE4NSAxMSA5NTMxIDAgcworPDEwMzM+IDEyNzEgNDQyOSAwIDE1MTUgLTEgcworPDAwMzcyYTM0MjkwMDM0MjkyNjAwMmYzNDI5MjYzMjAwMTMxNjFhMTUwMDM0MjYzMzM0MzMwNjAwMzQyOTI2MzIyNj4gMTUxNSA0NDI5IDYgNDQyOCAwIHMKKzwwMDJhMzMwMDJlMmYwMDMzMjYyODJkMjYyZTM0MjIzNDJhMmYyZTAwMjIyZTI1MDAzMjI2MjIzMzMzMjYyZDIzMmMzOTA2MDAzMzJmMDAyMjJjMmMwMDMyMjYzMTM1MjYzMzM0MDAyMjJlMjUwOTJmMzI+IDQ0MjggNDQyOSA5IDk1MzEgMCBzCis8MzIyNjMzMzAyZjJlMzMyNj4gMTI3MSA0Njc0IDAgMjA3MiAtMSBzCis8MDAzMzJhM2EyNjMzMDAyZDM1MzMzNDAwMjMyNjAwMmMyNjMzMzMwMDM0MjkyMjJlMDAyZjMyMDAyNjMxMzUyMjJjMDAzNDJmMDAzNDI5MjYwMDJjMmEyZTJiMDAxNzFkMWUwOD4gMjA3MiA0Njc0IDExIDY1NDEgMCBzCis8MTAwMDMzMmEyZDMwMmMyNjAwMTMxNjEyMTkyMTFiMWIwMDM0MjYzMzM0MDAyYTJlMzYyZjI0MjIzNDJhMmYyZTAwMzcyZjM1MmMyNTAwMmMyZjJmMmIwMDMzMmYyZDI2MzQyOTJhMmUyODAwMmMyYTJiMjYwMDM0MjkyYTMzMGY+IDEyNzEgNDk5NiA5IDc0MzEgMCBzCis8MDI+IDEzOTggNTMxOCAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzE5MWExZTAzMTgxMzFlMWExMzFjMTQwMzE4MTMxZTFhMTMxYzE0MDAwMjA4MDA+IDE1MDQgNTMxOCAzIDM3ODUgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYjA0MDgwOTBkMDQwNTA5MGMwZD4gMzc4NSA1MzE4IDAgNDc0NCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDAyMWUwMD4gNDc0NCA1MzE4IDIgNTA5OSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTMxNjEyMTkyMTFiMWI+IDUwOTkgNTMxOCAwIDYxNjAgLTEgcworPDE0MjYzMjI2MDAyMjMyMjYwMDMzMmYyZDI2MDAyZjI3MDAzNDI5MjYwMDEzMTYxYTE1MDczMzMwMjYyNDJhMjcyYTI0MDAyNDJmMmQyZDIyMmUyNTAwMmMyYTJlMjYwMDJmMzAzNDJhMmYyZTMzMGY+IDEyNzEgNTY0MCA4IDY3MzEgMCBzCis8MDcxMz4gMTU4OSA1OTYyIDAgMTkzNyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMzA0MGYwYzBhMDQwMj4gMjAzMyA1OTYyIDAgMjcwMCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMzMzAyNjI0MmEyNzM5PiAzMTc3IDU5NjIgMCAzNzk1IC0xIHMKKzwwMDM0MjkyNjAwMmMyZjI0MjIyYzAwMjIyZTI1MDkyZjMyMDAzMjI2MmQyZjM0MjYwMDEzMTYxYTE1MDAyNTI2MzYyYTI0MjYwMDI3MmEyYzI2MDAyZTIyMmQyNjA0MzMwNTAwMDQyNzM1MmMyYzM5MDc+IDM3OTUgNTk2MiA5IDg4OTUgMCBzCis8MzEzNTIyMmMyYTI3MmEyNjI1MDUwOD4gMzE3NyA2MjA3IDAgNDExMiAtMSBzCis8MDAxYzM5MmUzNDIyMzgwMDJhMzMwMDM0MjkyNjAwMzMyMjJkMjYwMDIyMzMwMDM0MjkyMjM0MDAyZjI3MDAyMjAwPiA0MTEyIDYyMDcgOSA2OTE0IDAgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjEwMDQwYzBhMDQwMj4gNjkxNCA2MjA3IDAgNzU5MyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA4PiA3NTkzIDYyMDcgMCA3NjQ2IC0xIHMKKzwwNzMwPiAxNTg5IDY1MjkgMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBhMGEwMTBjMGEwNDAyPiAyMDMzIDY1MjkgMCAyNzI1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzMyNjM0PiAzMTc3IDY1MjkgMCAzNDMyIC0xIHMKKzwwMDM0MjkyNjAwMmMyZjI0MjIyYz4gMzQzMiA2NTI5IDIgNDI2NiAwIHMKKzwwMDIyMmUyNTA5MmYzMjAwMzIyNjJkMmYzNDI2MDAxMzE2MWExNTAwMWExYT4gNDI2NiA2NTI5IDQgNjUwNiAwIHMKKzwxMDA0MzMwNTA4MDAxYzM5MmUzNDIyMzgwMDJhMzMwMDM0MjkyNjAwMzMyMjJkMjYwMDIyMzM+IDY0NzkgNjUyOSA1IDg4OTUgMCBzCis8MzQyOTIyMzQ+IDMxNzcgNjc3NCAwIDM1MzYgLTEgcworPDAwMmYyNzAwMjIwMD4gMzUzNiA2Nzc0IDMgMzk4NiAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBjMDYxMDA0MGMwYTA0MDI+IDM5ODYgNjc3NCAwIDQ2NjUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOD4gNDY2NSA2Nzc0IDAgNDcxOCAtMSBzCis8MDczMj4gMTU4OSA3MDk2IDAgMTg0NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYzA2MTAwNDBjMGEwNDAyPiAyMDMzIDcwOTYgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzMzMDI2MjQyYTI3MzkwMDM0MjkyNjAwMzIyNjMxMzUyNjMzMzQwMDIyMmUyNTA5MmYzMjAwMzIyNjMzMzAyZjJlMzMyNjAwMzMyYTNhMjYzMzA2MDAyYTJlMDAyMzM5MzQyNjMzMDYwMDI3MmYzMjAwMzQyOTI2MDAzNDI2MzMzNDA4PiAzMTc3IDcwOTYgMTAgODc3NCAwIHMKKzwwNzMzPiAxNTg5IDc0MTggMCAxODQ3IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBmMDEwNzBlMDQ+IDIwMzMgNzQxOCAwIDI0OTUgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzMzMwMjYyNDJhMjczOT4gMzE3NyA3NDE4IDAgMzc5NSAtMSBzCis8MDAzNDI5MjYwMDBlMGEwYzA4MGMwMDFjPiAzNzk1IDc0MTggMyA0ODUyIDAgcworPDEwMWEwMDI3MmYzMjAwMzQyOTI2MDAzNDI2MzMzNDA4MDAxZDI5MmEzMzAwMzMyOTJmMzUyYzI1MDAyZTJmMzQwMDI0MmYyZTI3MmMyYTI0MzQwMDM3MmEzNDI5PiA0ODQ2IDc0MTggOCA4ODk1IDAgcworPDIyMmUzOT4gMzE3NyA3NjYzIDAgMzQ5MyAtMSBzCis8MDAyMjMzMzMyYTI4MmUyNjI1MDAxYz4gMzQ5MyA3NjYzIDIgNDQ4MCAwIHMKKzwxMDFhPiA0NDc0IDc2NjMgMCA0NzY1IC0xIHMKKzwwMzMzMDg+IDQ3NjkgNzY2MyAwIDQ5NTYgLTEgcworPDA3Mzc+IDE1ODkgNzk4NSAwIDE5MDkgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjEwMDQwYzBhMDQwMj4gMjAzMyA3OTg1IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMzMzAyNjI0MmEyNzM5PiAzMTc3IDc5ODUgMCAzNzk1IC0xIHMKKzwwMDM0MjkyNjAwMmMyZjI0MjIyYzAwMzMyNjJlMjUwOTMyMjYyNDM2MDAzNzJhMmUyNTJmMzcwMDMzMmEzYTI2MzMwMDJhMmUwMDI3MzIyMjJkMjYzMzAwMDQzNzI5MjYzMjI2MDAyMjM2MjIyYTJjPiAzNzk1IDc5ODUgOSA4ODI1IDAgcworPDNiPiA4ODI1IDc5ODUgMCA4ODk1IC0xIHMKKzwyMjIzMmMyNjA1MDg+IDMxNzcgODIzMCAwIDM2OTIgLTEgcworPDA3MWY+IDE1ODkgODU1MSAwIDE5NzUgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjEwMDQwYzBhMDQwMj4gMjAzMyA4NTUxIDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMzMzAyNjI0MmEyNzM5PiAzMTc3IDg1NTEgMCAzNzk1IC0xIHMKKzwwMDM0MjkyNjAwMzIyNjJkMmYzNDI2MDAzMzI2MmUyNTA5MzIyNjI0MzYwMDM3MmEyZTI1MmYzNzAwMzMyYTNhMjYzMzAwMmEyZTAwMjczMjIyMmQyNjMzMDAwNDM3MjkyNjMyMjY+IDM3OTUgODU1MSA4IDgzNzIgMCBzCis8MDAyMjM2MjIyYTJjPiA4MzcyIDg1NTEgMSA4ODI1IDAgcworPDNiPiA4ODI1IDg1NTEgMCA4ODk1IC0xIHMKKzwyMjIzMmMyNjA1MDg+IDMxNzcgODc5NiAwIDM2OTIgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDYwYTBkMDk+IDEyNzEgOTIyNCAwIDE3NzYgLTEgcworPDAwMDUxOTE4MTgxMzExMWUxNTE5MTgxNjEzMWQxZDAwMGU+IDE3NzYgOTIyNCAyIDM0MTQgMCBzCis8MTMxYjFmMTMxZDFlMDMwZT4gMzQxMCA5MjI0IDAgNDIwMiAtMSBzCis8MTMxZDFhMTkxODFkMTMwMDBkPiA0MTk4IDkyMjQgMSA1MDk4IDAgcworPDEzMWMxNDE5MWMxNzEwMTgxMTEzPiA1MDkwIDkyMjQgMCA2MTMyIC0xIHMKKzwwYjBjMGYwNz4gMTI3MSA5NjA0IDAgMTg2NiAtMSBzCis8MDQ+IDE4NzAgOTYwNCAwIDE5MjggLTEgcworPDAwPiAxOTI4IDk2MDQgMSAxOTYyIDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDEzMTYxYTE1MDAzNDI2MzMzNDMzMDAyMjMyMjYwMDJlMmYzNDAwMjQyZjJkMzAyYTJjMjYyNTAwMmEyZTM0MmYwMDJlMjYzNDMwMjYzMjI3MDAyMzM5MDAyNTI2MjcyMjM1MmMzNDA4MDAxNTI3MDAzOTJmMzUwMDM3MmEzMzI5MDAzNDJmPiAxOTYyIDk2MDQgMTMgNzczNSAwIHMKKzwwMDJkMjYyMjMzMzUzMjI2MDAzNDI5MjYwMDMwMjYzMjI3MmYzMj4gNzczNSA5NjA0IDMgOTQ2MSAwIHMKKzwzYj4gOTQ2MSA5NjA0IDAgOTUzMSAtMSBzCis8MmQyMjJlMjQyNj4gMTI3MSA5ODQ5IDAgMTg2NCAtMSBzCis8MDAyZjI3MDAxMzE2MWExNTA2MDAzOTJmMzUwMDJkMzUzMzM0MDAzMjI2MjQyZjJkMzAyYTJjMjYwMDJlMjYzNDMwMjYzMjI3MDAyMjJlMjUwMDJlMjYzNDMzMjYzMjM2MjYzMjAwMzcyYTM0MjkwMDA3MTMxMzE5MjExMzE2MWExNTAwMjIyNTI1MjYyNTAwMzQyZjAwMzQyOTI2PiAxODY0IDk4NDkgMTMgOTUzMSAwIHMKKzwyZDIyMmIyNjI3MmEyYzI2MDg+IDEyNzEgMTAwOTQgMCAyMTA5IC0xIHMKKzwxMD4gMTI3MSAxMDQxNiAwIDE0MzQgLTEgcworPDAwMTMxNjFhMTUwMDEyMmYyZTJlMjYyNDM0MmEyZjJlMmMyNjMzMzMwMDFiPiAxNDM0IDEwNDE2IDMgMzU5NSAwIHMKKzwyNjMxMzUyNjMzMzQwOTFiPiAzNTg3IDEwNDE2IDAgNDM5OSAtMSBzCis8MjYzMzMwMmYyZTMzMjY+IDQzOTEgMTA0MTYgMCA1MTExIC0xIHMKKzwwMDM0MjYzMzM0MDAwNDEzMTYxMjE2MjExYjFiMDUwMDJjMmYyZjJiMzMwMDJkMzUyNDI5MDAzNDI5MjYwMDMzMjIyZDI2MDAyMjMzMDAyMjJlMzkwMDJmMzQyOT4gNTExMSAxMDQxNiA5IDk0NjEgMCBzCis8M2I+IDk0NjEgMTA0MTYgMCA5NTMxIC0xIHMKKzwyNjMyPiAxMjcxIDEwNjYxIDAgMTQ1NyAtMSBzCis8MDAzMjI2MzEzNTI2MzMzNDA5MzIyNjMzMzAyZjJlMzMyNjAwMzQyNjMzMzQwODAwMTUzNDAwMzAyNjMyMjcyZjMyMmQzMzAwMjIwMDMyMjYzMTM1MjYzMzM0MDkzMjI2MzMzMDJmMmUzMzI2MDAzNDI2MzMzNDAwMmYzNjI2MzI+IDE0NTcgMTA2NjEgOCA3MTY5IDAgcworPDAwMjIyZTAwMzUyZTMyMjYyYzJhMjIyMzJjMjYwMDI0MmYyZTJlMjYyNDM0MmEyZjJlMDg+IDcxNjkgMTA2NjEgMyA5NTMxIDAgcworPDE0MmYzNzI2MzYyNjMyMDY+IDEyNzEgMTA5MDYgMCAyMTQ0IC0xIHMKKzwwMDJlMjYzNDMwMjYzMjI3PiAyMTQ0IDEwOTA2IDEgMjg0MiAwIHMKKzwwMDI1MmYyNjMzMDAyZTJmMzQwMDI5MjIzNjI2MDAyMjJlMzkwMDMzMmYzMjM0MDAyZjI3MDAzMjI2MzQzMjIyMmUzMzJkMmEzMzMzMmEyZjJlMDAyZDI2MjQyOTIyMmUyYTMzMmQwNjAwMzMyZjAwMzAyMjI0MmIyNjM0MDAyYzJmMzMzMzAwMzcyYTM0MjkwMDM0MjkyYTMzPiAyODQyIDEwOTA2IDEzIDk1MzEgMCBzCis8MzQyNjMzMzQ+IDEyNzEgMTExNTAgMCAxNTk1IC0xIHMKKzwwMDM3MmEyYzJjMDAzMjI2MzMzNTJjMzQwMDJhMmUwMDI1MzIyMjJkMjIzNDJhMjQyMjJjMmMzOTAwMmMyZjM3MjYzMjI2MjUwMDMwMjYzMjI3MmYzMjJkMjIyZTI0MjYwMDMyMjYzMzM1MmMzNDMzMDgwMDEwMzMwMDM3MmEzNDI5PiAxNTk1IDExMTUwIDkgNzE1MiAwIHMKKzwwMDM0MjkyNjAwMmYzNDI5MjYzMjAwMTMxNjFhMTUwMDM0MjYzMzM0MzMwNjAwMzQyOTI2MzIyNj4gNzE1MiAxMTE1MCA1IDk1MzEgMCBzCis8MmEzMz4gMTI3MSAxMTM5NSAwIDE0MTAgLTEgcworPDAwMmUyZjAwMzMyNjI4MmQyNjJlMzQyMjM0MmEyZjJlMDAyMjJlMjUwMDMyMjYyMjMzMzMyNjJkMjMyYzM5MDYwMDMzMmYwMDIyMmMyYzAwMzIyNjMxMzUyNjMzMzQwMDIyMmUyNTA5MmYzMjAwMzIyNjMzMzAyZjJlMzMyNjAwMzMyYTNhMjYzMzAwMmQzNTMzMzQwMDIzMjYwMDJjMjYzMzMzMDAzNDI5MjIyZTAwMmYzMj4gMTQxMCAxMTM5NSAxNSA5NTMxIDAgcworPDI2MzEzNTIyMmMwMDM0MmYwMDM0MjkyNjAwMmMyYTJlMmIwMDE3MWQxZTA4PiAxMjcxIDExNjQwIDQgMzM2NiAwIHMKKzwxMDAwMzMyYTJkMzAyYzI2MDAxMzE2MTIxNjIxMWIxYjAwMzQyNjMzMzQwMDJhMmUzNjJmMjQyMjM0MmEyZjJlMDAzNzJmMzUyYzI1MDAyYzJmMmYyYjAwMzMyZjJkMjYzNDI5MmEyZTI4MDAyYzJhMmIyNjAwMzQyOTJhMzMwZj4gMTI3MSAxMTk2MiA5IDczOTUgMCBzCis8MDI+IDEzOTggMTIyODQgMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMDMxOTFhMWUwMzE4MTMxZTFhMTMxYzE0MDMxODEzMWUxYTEzMWMxNDAwMDIwODAwPiAxNTA0IDEyMjg0IDMgMzc4NSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBiMDQwODA5MGQwNDA1MDkwYzBkPiAzNzg1IDEyMjg0IDAgNDc0NCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDAyMWUwMD4gNDc0NCAxMjI4NCAyIDUwOTkgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDEzMTYxMjE2MjExYjFiPiA1MDk5IDEyMjg0IDAgNjEyNCAtMSBzCis8MTQyNjMyMjYwMDIyMzIyNjAwMzMyZjJkMjYwMDJmMjcwMDM0MjkyNjAwMTMxNjFhMTUwNzMzMzAyNjI0MmEyNzJhMjQwMDI0MmYyZDJkMjIyZTI1MDAyYzJhMmUyNjAwMmYzMDM0MmEyZjJlMzMwZj4gMTI3MSAxMjYwNiA4IDY3MzEgMCBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMTgpIDE4CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzYgcHV0CitkdXAgMyAvQzAwMzkgcHV0CitkdXAgNCAvQzAwNDAgcHV0CitkdXAgNSAvQzAwNDEgcHV0CitkdXAgNiAvQzAwNDQgcHV0CitkdXAgNyAvQzAwNDUgcHV0CitkdXAgOCAvQzAwNDYgcHV0CitkdXAgOSAvQzAwNDcgcHV0CitkdXAgMTAgL0MwMDQ4IHB1dAorZHVwIDExIC9DMDA0OSBwdXQKK2R1cCAxMiAvQzAwNTAgcHV0CitkdXAgMTMgL0MwMDU2IHB1dAorZHVwIDE0IC9DMDA1OCBwdXQKK2R1cCAxNSAvQzAwNjUgcHV0CitkdXAgMTYgL0MwMDY2IHB1dAorZHVwIDE3IC9DMDA2NyBwdXQKK2R1cCAxOCAvQzAwNjggcHV0CitkdXAgMTkgL0MwMDY5IHB1dAorZHVwIDIwIC9DMDA3MSBwdXQKK2R1cCAyMSAvQzAwNzIgcHV0CitkdXAgMjIgL0MwMDczIHB1dAorZHVwIDIzIC9DMDA3NiBwdXQKK2R1cCAyNCAvQzAwNzcgcHV0CitkdXAgMjUgL0MwMDc4IHB1dAorZHVwIDI2IC9DMDA3OSBwdXQKK2R1cCAyNyAvQzAwODAgcHV0CitkdXAgMjggL0MwMDgyIHB1dAorZHVwIDI5IC9DMDA4MyBwdXQKK2R1cCAzMCAvQzAwODQgcHV0CitkdXAgMzEgL0MwMDg1IHB1dAorZHVwIDMyIC9DMDA4NyBwdXQKK2R1cCAzMyAvQzAwODggcHV0CitkdXAgMzQgL0MwMDkxIHB1dAorZHVwIDM1IC9DMDA5MyBwdXQKK2R1cCAzNiAvQzAwOTUgcHV0CitkdXAgMzcgL0MwMDk3IHB1dAorZHVwIDM4IC9DMDA5OCBwdXQKK2R1cCAzOSAvQzAwOTkgcHV0CitkdXAgNDAgL0MwMTAwIHB1dAorZHVwIDQxIC9DMDEwMSBwdXQKK2R1cCA0MiAvQzAxMDIgcHV0CitkdXAgNDMgL0MwMTAzIHB1dAorZHVwIDQ0IC9DMDEwNCBwdXQKK2R1cCA0NSAvQzAxMDUgcHV0CitkdXAgNDYgL0MwMTA3IHB1dAorZHVwIDQ3IC9DMDEwOCBwdXQKK2R1cCA0OCAvQzAxMDkgcHV0CitkdXAgNDkgL0MwMTEwIHB1dAorZHVwIDUwIC9DMDExMSBwdXQKK2R1cCA1MSAvQzAxMTIgcHV0CitkdXAgNTIgL0MwMTEzIHB1dAorZHVwIDUzIC9DMDExNCBwdXQKK2R1cCA1NCAvQzAxMTUgcHV0CitkdXAgNTUgL0MwMTE2IHB1dAorZHVwIDU2IC9DMDExNyBwdXQKK2R1cCA1NyAvQzAxMTggcHV0CitkdXAgNTggL0MwMTE5IHB1dAorZHVwIDU5IC9DMDEyMCBwdXQKK2R1cCA2MCAvQzAxMjEgcHV0CitkdXAgNjEgL0MwMTIyIHB1dAorZHVwIDYyIC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5NzggNzY2XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjI0NjBDMDFFMEM4MTU2RTZFMkUwRkFDQ0VFNjE4MTcwODQ4CitCRjg3MzBEQjMyQjVENjgwNjA0NzNDMjMKKzlEQkE3MDEwNTM3NDZGMjY2MworMzk1NjI0RUQKKzBBOTg2OENDODBFNUNFM0Q2NEUwQjA3Q0U3QzkKKzMzQkQ5ODRFMDIyMEVCQUJCNkU0NjU1ODM0Nzk4Q0JGMzJDODQ5MDYyNDYwNjYyNUJDMDU4QjZEMzI0RkMwNENERDMwQTQzNTBCOUMwQTI0NkVGMjMwOTI5NEY2MUJDOTY5N0NGNjRDRDc4QzA5NUZGOEQyOEZEODZGMUU3NjM2QzNCNUM0MjIxNzA1NTJGMjQ3QUJFNDBDOTgxMjdFMEQwMjdBQkQ2MUJCRDAyMkU3NTAzMzlDOUUyRTA2QzRDMDIxNEVENjVEQjlCRjYxQUExNEY2NTAxQTUyQUJDNDlCOTgwRUIwMDRBOTgzQzg5M0I3MDk3RTA4RERFRAorMjk4OQorMzA0RjQzQzY4QjMxNzlDNkNDNUM3M0E1CitBRDYwNTQxRAorNUY3NUNGNjE2NzFGQzUwQUI1MTAyRjE5RDQKK0MyNkM1MUI3QzRGNTY5OUMzM0ZFRkRFMzZEQTkwRkYzMUY4RTdCOEEzMTc3NjAxQTFBOUUwNzBCNjkyNUJFNDRERTIyRjQ3OTM2NDdBNDM0ODRGRTAyMzVBNUJDQTlDNkQwN0YxRjUyOTQyNjk5RjAKKzEzQzk2MzFDCis3MTVCQjU1NTMyRkUyREM5NTE4QTMxM0FCOQorRUI2RTQ5MTEzRUZCQTA0NjY1REUzRUM1QzcxMjA0OTFDQTNEOEI2MEM5Mzg5QkNFMzcyNzMxMDQ0MjQ0OEM1QkRENzA2Q0RFN0FBMzNENjRGMERCRThBNjU1MTYyQjE2MzUzRUQwQzFBNzYxRUYyRTUwQjk1NDNDQjE4MjI0RjUKKzk0QTk1MjI1Cis3RDA0NEUzMEU0MzNCQzQ0MUQyMzkzMDU4RQorQTg3MkY3RDYxN0ZDMjRGMzM1MDczM0ZEREJDNTFFQjgxQjE1Nzg4QkUyNEU5QTAyREUwODMxODE3NTYzN0Y3QTAyOTA5OEMwRkQwQUI3RjA0MzM4NkI3QjY1RkZGRkQzNTlGMEQ1RUE2MEUxRjgwMDc4MUYxRjE5OTM1RTAwCitGQkMyOUYxMQorMTkxQjY5NzE5MzNEMjA1QjZFNzI0QTM1RDIKK0I2NjBCQUJDODdFQjUzNTdBNzA4QjQ2N0Q3Qjg0NUE1Q0YzMkYwQUM0ODBGRDJCOERBQ0Y2MUUzRTU3OTIzRUEwNTcxQTJFQzlEREM5MTA1M0VCNjU3RERCREJBRDIwQjEyRTQzNEMyMTgzMkE3Q0MwMgorRTYwREZEMjkKK0YwNUQ1MzgxRUM4NTFGODNGMTY3ODIyMEU4Cis0ODZBMDU5NzY5MDQ1NkZCMDA0OEVBMjg0Rjg2RkRCNUQwRTkzN0E2QzU4MTIyCis1NUE2NzkxMQorNzY0MzhDRkYzQjA2MUU1Q0QzOUJDNzNCRTQKK0IzOTQxMEU5QjNERkNDNjg3MjQyOEY4NkQ3QTA1MkNGRUE1RkMyQjkyOUJFMjc1QkQ4OThFQjAwQkZBNDIyCitDODdGMkZCMAorOTE0QUI1M0ExOTY4NUEwNjdBRjE2NDJGOTcKKzcwN0ZDODY1RkQ2OUIzOUIzMUE0MUYxNUZCRUY4NkVFMUEwQTdFMDNCNTk1MDc3NDRCMUVGMDNGCitGOUZBODgzMgorN0QwMjQ3QzYxRTFGRjAyNDEyRERGN0UyQUYKK0EwMjFBNkI1NDhGQzUwOUEwMUMxMkU5MEU5MjFBMkNFMkExREUzMDhFQzkzMkZGMkQ2QzA1RTkxMTUzOTUzRkUzMUMzMEU5RkIwMjExODNDNzdDRjczRUY4MTIwOUI4MTE1NkY1QTc1RDI2Q0MyREY2MjBBMkNGOTI4RkRDQTI2RTE2RTkxRTgxNTU2OEJBNTlFNjcKKzBFNjJFN0UwCis2NjBFQ0UwRkE3RDdDMUYyM0RGNDQ2QzlGQQorRjBFRTdFRTVDNTNGMUYzOUVEOTNCMkE4QTZEQkQ4M0NGM0FENTBDM0YzRDE2QTNBRjhGM0RDRTYxOUE0NUM5QkQyMkUyNEM4MUEyODFBNzNDMzI5QzYxQ0MyQkVFODZBM0VERTEwMjU0OUI4MjhENDZDRUZFREQyNDM4NDRGCitGNUQzNzMwNQorNTk1Rjc5ODA4MDkzMjJFQTNDNUEzQ0MwNEQKKzg4NkZFODBCQUNDQzRDODk2MUMyMDBFRDZBMDI2QTEzREFBM0VDMjU4MjY0MTg2RkI0ODQ4NjUwQTFGRTgzMTc4QTgyOUIyNDFFRjkxRTQyRkEyQUI3MEJFNUFFQzdGRkRCQzg5N0Q0MEZBQTI3MEFBRTczOERENjc2NUY0RDk3Mjc3QjY0Q0ExRDVCMjI1ODkwRDhFRTQzRkIwNkJBOTlERkE5NEVFMkZFRDRDRUFERkM0RQorMTgyOTU0ODMKK0M2RjM3REFEOEFDRjlCQUVDNzNEMTNGMENBMEIKKzQxNTcxMjE2MjZBODU4QUZFRjNFODgwNEM5OTg5ODA2QzJBNEUzMUM1QUU4RDYyMTIzQzBBNjA4RUJGNDc4MTQ0QTE3MUMxNDQwQ0U2MDUzREM4QjFCMDAyMkE0QkU2QTA5MDkwMDlCMzIwRTZFQjIxQjBDM0E4QTE4ODc2NUVBMUQ2ODZFODQ4MTU0MjAzRjQxNDQ1QTg1RDVBNTk5ODcyREU5QkRGQUZBMzAzRjE2MUNEMUVBRkJCNEU0OURBQzZCMjU5NTM5ODVFOUEyOTNDOTcxQjA4MDU5Q0M3RDYzRjA1NTVCNEVGMkFGQkZDNjA2RjkKKzg3OEZEMTM0CitEMURGOUQ5OTdERUJENkI2RDA2MkZDNTg5MAorOTk4QTk5QkYzRkEwODhBMDdGNkY5MTYxRjE0RkY4MERDOTdFNEMyNURDNTk3NUIzNTg3RDgyRjcyQjJGMjgwNkYzQTE1QkQwMjBDNUE3MkE2QzcxRkEyQzkyNDk5MjVBNTk3QzdEOEE4NzhBCitBMDIwREE1MworQjFCMkRDNDM0M0QxOTU2MkMwMjg5NEE1RDNBMworMzExNDVERTY3NkUzMTJCQkI4MUEzOTkxODQyOUQ2NTZGQTg5REI1OTcwMkM4MEJCNjYwNUREQzMzMzc0N0U5QkM2QzE1MDFBMDk1RUExQzA1NUVGOEI4NDYwMzIwMTdCOUVFNDhDMDk4RjRBNzQ1N0I5NzkwQThGNTBGQzhDODc1QTdEMDg4OUE5QTExQjNDOEFFQTkxNTVFNDMwQzVCQ0VENEM1NUM0M0E2MTI0OTQxODcxOEM2QjEwMERFNzcyREI0REVFNTZBNUIyN0EwNURGQ0QwQjFBM0Q3QTRENTFEN0QzRTQKK0ZBQTc4MTMyCis3OUNBQTE3OEY0RDQ2RkNGM0U0MDBBOENDQjcxCis3RkNCQTA1MkEwMjlFRDRDMDFFRDFGOTVBRjM4MzM4Qjk5Q0ZDQTEzNDlCMzcxRTAwQ0Q5RkVDMDgyRjA0NjM0NDQyODRDOTgxMjg3Q0EzMUNENTBGRkYwQTI4RjM1MTlFODlFMDExN0ZFQTI5MjMyNTAzQ0E2NDA5RjNERDg1MTZGMUYzREVDRUU1RjZCQzVDOUU1NzA4MkY4QkNGQzkxNUIyNkMzQUVFRTMxQzg0NTc0ODQzRjZEREFEQTNEQzExMUVFODA3MjlENTZDNDQzQkYzNDkwRDg0ODc1REI1RjgxQTNDN0E5OTM5OURDOEIyOTBBNjFCQUIyNDkKK0FGOUYKKzEwCitENzE0QTVGNAorNERDQURGNzI3NjZGRTFBNzg2QkVCMEQwRjgKKzQ4OEZFMTg1QUMwQ0UwRDY5NUQwRDlDRjY4OTlCOUU4ODdBMTgzODlFRDA3ODI5Qzk1NzYwRDZERjQ1Mjk5MzREMzNCRUQwRUYyODc1MzhBNzMwQTE4NkI0OEU3QTFFMzhCQTNCNTQ2MTg3N0RDMEE2MjRBQkNEMENGNzkzQTAzRDk1QkQzM0JDRkVGNjFCN0QwREQ0NEU1MzA1MTFEQjNEM0VBOUFGMzQ0NEVCMUY1MzYzMjlDQjAzRjM2RTgwQTAzCis4OTE5QUZGNgorRUNCMjYxQzcxQkQ3N0NDRTA5ODE5Mzk3NDUKK0Y5RDVFRUVDMjBDRjZBMTQwNURDRjQ3OTA2MjY3RjY5MUY5MjhEQTY3QTFDRThENDI2REI1QzlCQzE3REM5MEQ2MDJDNEYxNDg0NkU1MUJBQjhGQ0JGMDVGRkRENEVFQjVBNzU2MDVFREE4RURERERBOERDN0IxQzdCQ0RFN0RCNUFEQTc5RDQyMzk1NTgxMTFBMEQ4NjkxNDQ0ODBERUQzQURCNDEwODExNTE5RUFDNTgwQzlCQjhFNzJFQzlBMkJERjI2RAorMTNDNzM2ODEKKzI3QUM3QkI2QTcxOEZGMDk3Q0M3RTVEQUVEQkQKKzA4RURCQ0JDOTE5MEUxNjA4QjhFM0VDNUM4QkMyMEY0Nzc5MTEyOEYzOTE4MEVDRjA0OEU0NjJDNERGODZCOEFGMEUzRkNERkE1MDFCMjQ2RTVEM0MxNkNENzQ2Qzg1QURERTBDRjFEOUY0ODEzQUU4NTJERDcyRjA0NDAxQTQ1NjQ3OEQxODIxNkU4REI5RTk5MzkwNjBGQjA2OTYzMTdBQjlCRDQyRUM2NUU0OEIwMjM5OUFFRDQ2NDk2NjE4NEE2RkUzNzg4Q0NBRTYxRTU3ODhBRjNDQzAxOTdFN0VBRjk5QjAzMDA3MjQyNDA5MkZERjExNTdEMzgxNgorQTM5RUYwNTYKKzY3MEY0RjI4NUYwMDBBRjVBMURGMjc5MTc4QjkKKzlGRDM4NzVCN0VGNEJGQzUyOUFBOUE5QjAzMTgxQURCMTlCNTIwMkYwNjBDN0ZBOTI4NEM5MTczREVGNDlDQjgyRDk3ODBCRTcwMTI0M0ZENjQxRTI0N0IzNDEyRDk4QjRCMDg2N0U5OUEwRUQ1NzlDMjQ5QjhFRUY1RDM5NTE0MTAyMzRDN0Y5NjM0MTZFRTFDNkZDRTkwQjFBNjMyRkI2ODFDMjNBMEZFRjAyMkQ5QUM2OEI1ODhBODc4OEY5NzFBM0RFNkRCMUEzNUQ0NkQzNjMwOTg3QjlERTkzNkRGQUZCRjNGMkY1QjRBNzQzNEY2NDEKKzQ0NDQ5MTg1CisxRDdFQjlFNDNFMURBMUZERkRCOTk2Q0U5QTc2Cis0RDhGQjExNTNGRjI5QTE1QTBDODcxQjREMDUyMTQ3MDAyRUVEMjNDOTFDRUMzOTgyRjQ5MEE4MzQ3N0Y4RjBFMzg1NzNBRUE1NjhCMzQ3OTkyMTQyQTlBMUUyMTVCNDBCQzI5QUYxQjBEQzlEQUQ1OTM4M0Q3MDUyOTM0NjRBMTA5REVCOENENjI2NTk0QzBDQUU5RkNCQ0VBNUFDN0VCQjM0RTQ2MURFODQ4RTc3QjhFMzE2N0Y4OEQ3MjczOEMwMDNCMTA1MzhFNUVGODg3NkU1Q0NBRTk2QzI4OUNBNjlCODgxNkQ3NjhEMTE3QUU1MTE5MzUzREI5RDQKKzM5NDUKK0UzQTg2RkUxMDkwOUJGMzgyMTdDMDUKK0U3RUE5NDA2CisxMEZENzIxRkVCMEM1MzE3OUY5MjE3MURCRgorOTk2NEJCRUNBNDY2M0M4NkEwN0Q4MjZDMTkyNUE1QzAwMjNCMTJCRTBFOEI2MjVEQTcyQUM5MEExNTJEOENBMzcwOTg2Mjg0NjVBNUM2NDVCRjNCN0ZGNTk0NERCNDFDOTMyMzc5QzZEQUI5RDQ1QjMyNUJDMQorQTAxMTVENjQKKzhDQjY2N0Q4RTFDMUZGRTI0RjI0RjcxMUZGCis1NzFFNzU0MDkyQjU1MjE1MjA5MzI3QTM2M0Y3N0JBRUIzREU1NkQ0NEIxMUM2MjdDNEFGNEREMUZBQ0I5MzNENEQwM0E0MjkyQTZFQTAzMjA3OEE2M0Q4N0JBNDg0MTMyMzg2QzJGRTdGODg4QUYzNTJGQzc2NTc0Qjg0NjM5MUE3MjlERUQwMTM5MTNBCisyNDVFM0M1OQorREI4ODY4OTE2RTU1NTE2MzhBOUQzMjNEOEI0RgorRjgxMjlBOEU0QkQ2QkE2OEQ4REIzMEQ1QzlDNTkwRjZCQUZGQzE5N0NBMzJEN0YwQ0M4NzRCRDc2N0U3MTU4MDAwQUZDM0IyQjQ4NzZCQTY3QjkxMjgwOEM5NTlCMUE5NTc3NzFBNTYxMDVDMUM0Q0VCQjY3Rjk4NkU3QkNFOTlERDg5QTU1ODEyMTcxMzY1MTk1MkY0NjE3OTNCMTY5MEI5OTU2RThCQTMzMEQ3RTUzNEI1MUQwRTkyQTc1Qzc0NUJENTBBRENDMjg3MEVFNzc5MUEwQkRDNjlEQ0JBCiswQjJEMkVBNAorRjdEMkEzNEE2QzcwQUUxQTU3QTJBN0NEQUQKKzYzQTBEQjZEQzRDNTI2NDVBQjE2RDU5MEJDMzFFMzNFNERCNDhEMkIzNTY3ODg5Q0NFRkI0MUNEQzg3OUIxNDJEMTREQjExMDA0QjNCRDI3M0VDMzdDOEU5RTgzQ0U4MEJCRkY5OTYzMDExNEIyRjcwQjdDRUM1M0JDOTg5QkUzN0Y1MjUyMUNERjk4ODEzNjg2RDBFOUFDQkZEQzAwOTk1QzgzQzYwQTk5NjIwNTJDQzQzQUQ3NDcKK0IyN0M5MjU2Cis2NDhCNjI4MDU1MERGRTEwMEFGMTg0RTY3OAorMzQ1NkJGQzQzRUMxMTFDQThERUU3REIwODVCNDMwMUQ5NjFGMTA0RjQzOUE2OUM1REFCRkEwNzgzNUJFRjI3NDM5OTgyOUFGODkxRjg2QjA3MTc4MzZCNzE0MEJFRkQzM0U3RDZFRTZDRjExQzlGRDFFMkE0NDFDNDBDMzY1NERBM0M3QzhBMDBDNDIxNkEyQkRGNkREQzcwNDk5QzJCRjVBMThEQQorODk4NzkzNTEKKzg3RjNEMTBDMDIzNDAxMkNDRkEwRTNDMjExQTgKKzlFMTZERTVCQTNENjA0NENBRkIyNEE4RTQzODBGRjU0ODUxREJEQTU0NTU3M0NDRDY4NDE5NzNDM0Y5RTk0OEU5RkM1M0FCNkM2REQwREVCNzIxNzZEQjU0RTRDN0YyMUE5RTdCNDQ2Njc2MjlCQ0I2QUZBODk2OUJFOThEMDYzN0NEQ0Q5ODYxQkU1N0I3MzFDOTQ5QTJDMzEzMjQ2OTZBMzI3MUQzOEFERUUwNEQxQzNCN0E0QzM0RDg2OTcxMjRFQzFEMTVFOUJBMDQ5MjBEQzI5Cis2NzJGNjEyNworOUZFQzYwMTM2QjgxMzgyMDJENkQ3NkQ3Q0Y2NgorQjg2NEJGMjgxNDk5OTAxQTgwQjI3NDk3RjFEQjgwMDZFNTBBMzA5OUY2ODAwRjRBMDlCNkU5QkY2M0ZGOEQ0NzREMzc5OEMzRTE4MkI4NjA5QjFFQkVCOEU1MzYyODA4NjVGMUFFMEFEQjU5QTE0MjRGMjRDRkUxMzU0MUIyQTgyRTUyM0ZGRTVFMDNGMkI4MjVDN0JDNERDRkVCQ0RBMEMwMzRFMTE3RjRFMjFDRDA5REVBNTZGQkFBRkJFOURGQkIwNUQ2MTNCOUVCNTBGOTUzQzhDQzIwMUMyRDM2MTIyOTQxRDFDRUM2RTE0NkE2NjAxM0VCQjU2NDI4CitDQzU5NUFCMgorODZFMjQwMzkzRTNCQTc2QkI5RTg3RjEyMkE2MworNUYzODcwNDkxQjhBNDQxOEE4QTJDRjlDRDkyNDREMEJCQUIwOERGODA0RjcxNDcyMDNEQ0U0QjNCMzI1Qjc2REVGRjE0RUVERkI2N0FGRkI0ODk1NzdGMUQ2MzA1NzBFNjJCNURGRjJGQzYzMjg1MUU0QTMxRjkxQTc3NUM3NTU1MzQ5Q0FEMjhFRDE0MjA4NTM0MjRFODkzMkExMEQ5OEQ0MDFEMjNERkY5NkExNzdDOTMzNkIxMENDQkQ3RTM5NDU5RjU0QjFCMzNCMDdBRTc2RDkxRTI0OEY4MzcxMjc2NTg4MDBDOTQxRjQzNTFEMEJDRDc4ODBBNkI0Cis5MUI1CiszQTg1QUMKKzc3MTBERTYyCis1QkQwOEUwOURFNjhGQzZERkZEMUFFMjdBMQorQ0I1NUMyRjUyNEM3NTcyODlCMjZCNTM3OTIyQzU0NkI2ODIzRDc3MTZCMkU2MTU2RUFGQUMzRjcwRTE3MEJBNzY4OEUzMzYwNzI5M0IwMkIwRjFCQTUwOThENTQ0MTREOEEwMDgyRDhENjU3RDVDRTNGNjRDQUZEOUI0OTkzQkU5NjU1MDA3RTJBQUFFRDI0RjBCRjM3RUU0QkNCREMxMUE2CitENUM5RkQzNQorMzREM0IwODk2RDUyMDRBMDZBNThENzRDRjNFNQorREFBODJEQTRCREQ2QzFFMUMwRjlBQzlENTU2NURBNEM3MjRENUFDQUM5ODlDQjk2NEIyMkQ0NjA2MzNCRUY3NTNCRUQ3NTIxN0QzREUyRUUxQzA5M0NCNDVGQjVFOTA3NTk1Qjk0M0NBODcyMUUxQ0FFODU4MEM0NUI3RTkxODExRUM0OUEwMTBBRDM3NDkxMzhCMjM1Q0Y2QTM1NUVDNzAwNzBCNUIyQkI0ODEwMjUwMDc3MEUyRDBDOEM5N0RDQTYwQTYzNzMKK0M1MTI5NjIwCiszRjZGMjk4RTM2QjYyNThGRTVDQTA4MkVEMDk5Cis1OEU3MDNGNzVCMTQ0QUYzMkYyRUNENTlCNjk2MjczOUQ0MjQyRDI0MTEyNDU2RTUwNEEyQjdGOEIwQjI4QTM2REE1NzIwNUQyMzVCQUNEQzVBNTUwM0E5RDIwQzdDQzg4QjQ2MEUyOUFGQzBCNUYxMDMxNkQzNzMxNEU4NkMyNjgxMDU5M0NBN0JCQkFERjRBMDRDMDY1NUJENTQ0MTcyMEFGRkU1MjcyMTQzMTFBMEEyRjI1RTMyNzAyNDlFQzNGM0ZGNzMxNEIyRTVCMDBBNzM0QTJDOTExRTU4RENCRDQ0QTREOUI5RDExQTc4MDREMDk0QzcwNkNCMDUKKzhGMjkKKzdGQzcwREE5MjYxNDIxMzM3ODJBMkZCRDQ3RkZFQTE1CitFNzk2MjU5QworODQ3NDBBNEFERkRCODdEQkM3QzU3MUMyOUM1OAorMzdGRkZCQURERTY5NkFDNzlBRjAxOEMzODAyNTJEMEJDRDM4NUU5Q0ZEQTgyQkM4MkRFQTBBMDZDN0FCM0FGOEYwNjhGQzEwNjVFOEI5QzIyQ0E5Rjc2RDE3QTlCRUJDMzkzNjk5RTczRjhGOEQ2NjA0MDhBRjU2MUJEQ0RBNkNCN0FDREYxRjk0NjcyMTZEQzAxOTc3QTRDQzAzRUUxNUYwRTBFNTEwMzU3RDVFRTE3QzZGRTE5MTNCNzc1NTJGODNCOTI0MzE5OUQ3QjFGMTY0OTI3RTI4MTM2QTRDQzJEREY4MjA1MzkyREQ4NjVFMTc1RDlEMTkwOThBCis0MDkwCis3MTc1RjQ4Nzk0NDVFOEY5QTFFMDU4OTc3MzcxREI4ODU4NEEyQ0Y1REY5RTc5NENFMkY2N0IyODg1NTNFNkY1MzE3QkNERkQ0RDcxMDEKKzhCODk5QzMyCis5RjE5RkVFMjA1REQ4ODg2QTU2RkI3RTFDMAorOUVENDA5QTNBNEVBODkwREIxNjI4QUY1MTU1QTU2Q0FFQzMxMDk3OEIzNEM3Q0RDRDM2M0ZBMjAyRDc2RUVEQzkxQ0M1OTIxOEMzMjUwREYyRTVDCisxMUFFRDQ5QgorMEYxM0U4Mzc5OTU4Njg0MjdBRTI1RkI3N0EKKzYwRDA0RERFRjQ2ODQ5NDFBODM3NEEyNTU5ODNGNTMxODI0MjBCRTBGMzZENkRBNEFFOTFCMDM3Q0Q0NDMwOUIxMzNERUI1NTRERDI3MDFFQ0Q4Q0ZFRUEKKzM2NUY3RTk0CitGOEY0MUJBQkVBRDhFRjA4OERCMUJEQzJFQQorODE1OUEzRDQyQjZBQUEwQTE1QTBEMDlCQTRGOTlGOURDRjQxOEYzRUQzREYKK0FCRDE1ODBECiswM0UwQTNCNkMxNTJFQUVEODhBNUU3MUY5RjQxCitDQjhCQzFFQURGOTExOUE4MzUyQTc0MTM0ODEwMzRDMzM1OUNGNjg2MTBFQzBGNTk0NTkyREJGRUZGMTUxQzY2NkYwQzlFRkJGNjc1M0VENDhCNEM4NkFGRjMyQzBERTUxNTc0MTQxM0UxMDU5MEFERjcxQ0M5NUY4NjQ5RUI1QUUzQUFFNzM1NUFGRUNFREJFOTc4NUI1MTBDNkM2QjQ1NUIxQTVDRkY3NjFFRkYxNTI4RDg0NzgxMEFBM0Y2QzQ0MkI3NUE1OUVGREMwMkE5NDY1RTVBRkE2MDcyRTVCNDY4MzMyQzRGMzAzQzQ5MjIyRjNEN0M2RkE2ODgKK0M1MDcKKzdDNTFFQQorQkNBMDcwOEUKKzcxQTdGRDBDREIyNzA0NEY1QkI5MTNEMDY5CitFNDEyNjc0M0M3QzQxOTA4MkVCM0Y1RjMxRUY1M0EzOUE0RTIxQjdGOTkxRTE0MDg4OTM1MTFFQUMwQkQ5QjVDMjQ4QzFGNzdFRjc4MDlGQjFEQURDNjI4QTI3MTE2OUJCREFENDhDMUUzNTNCNzM2RThBNDU5QzU5MzBBMUM5QTMyODA2QUE2NDJFMkIyNEI3REE2NzQ5RTQ2RDc4QkU0RkMyNDY4MkNBRkZCRDREOAorM0QxQzQ3MjUKKzZBMkNFQjlDQzM3NjhDQjcxMjlDM0VCNTY3CitGMkU5MjU2Nzk5REVEQkFFRjVEMzI2NzYwMTFDQzBGNjBFNTc5MDREMDE4RTM3QkY0NTYzMzYyOEM4NDYyMzE5QzY4MUMzRTY5Rjk4N0RFRTg3RkFGRTVBRUFDRDgzMEFBOTgwNDI0RjU4Q0E2Q0ZBQTVDOUUyNkY5QTJERUM5QzNFNzZGMkM3RTJEMDg0OTY4MEI5NEI2QzBBNDdGMzBBOTREOAorRkM1MEFFMjgKK0ZBMDBBOTk1MDNEQ0ZGMThDODAyQjU3QTA4MDQKK0M3QjUxMDk0RkY3QTg1NUEzNjY4RjUyRjE0M0VBMjBEMzhGMkRGNkQwRkExQkVFQ0YyMUNFNDA0ODBEMERBODIxNTA0QzVDODA3RTY2RDA0NUY4RTREQ0Y3MzZBRUIwN0RFNkVBNzhEREY1REQyMDdDRDE1NzYwRkQzMzcwQzVBNjgxNzNFQjk1MDhEQ0Q0NTVCMERENjI4RTYxREZDOTNCMTU2REJBMDMyM0I1NEFFODc5RjRDOEQyQkUyRUE5RkU3RDU5MjMwMjVCM0E2ODdFRjM4RjkxQzg2MkMKK0NDNTBENzk1Cis0N0VGNUM0QjQ5REE3RTA5ODYxRUEzMjdGNQorRTQ4RTFGNDQzNDg0MTg0MTA2RTU2MDdDRDk5NkRCMkI0NUZFNDhBMDE2NUFDNUNBQUU3ODRDNTQ1N0E4N0M4RUYyM0M1OTRCNTk2RDYyNDI0RDkxRkQ3Q0I3REQzOTBFQUI0QzlDMEVDMjk2QUNGQkYyNzlGODREQjVBNUY3REJDOEQyRTQ2ODYyOEFBOEMzRjhEMTQ3NjEwNkRCMUNCOUY5MDY1NERFNjYwNzBDRTEyRAorQTAwQTc2M0QKKzk5RTJGRURDNjk0Mzg4QjAyNjg4MzY2NUMzCisxQjUzNjFERDE2NjRDNTNGMTkwOERBQThCODlEOTUxQkVEMEZDOTVBRjAyRUY5MEVGNDQ3Q0FDNEQ4Q0IzNDA1NDVCOTVFMUMzMDkxMEFCNTg2Qjc5OTExMkYwRjc1NUI1MzNFNDEzNEU5QjVDOEJCNDEwNUQ2NTBFRUMyOTgwMDIzNjA0NDI2NEVCMzU3ODU4OTM5NEMxQ0ZBOTdGNzY4NDA5NTk5NDlENTM1NDVGQjU4NEYwNzhECitCNTQ4RDkxNQorMThDNDJEQUU1NDk2NjFFOTRERDYzRjJDQTBGRgorNkJFM0I4Q0M5RDFDNTY5N0EwNjE4RTIxRjcwRDc4Njc1RjMwOEVDODU1OURDOTJEMUZCRkE0Nzg1ODc1MjhGNTFBNjc3QkZBODE0NDIwMTgyODcyQUUwRjAxNUIyQjUxMjAwNEUzMTIwOTc5NUFFQzU4QThFOThDODQ2QTRGQUU1OURCMjNFODQyMDg2RUQxNjRGMzY4ODUxMDBCQkM1QzIzQzc5QjA0NUFBN0NGQ0IwNDM4MzVDNDY5NkJCQjEwNjFEQjM2MTA5RTlCMjM2MERGQzA0RUY2NjQwNzAxQjRGQTM3MjQ0OTNBMUJFQzFBQTdDOEU0NDUyMTlCCitCMjQ0CiswN0M4MjlDQTNDNzg0N0M1REEzNjQxNzgzMDBBMTM0QURDOTdCNDVBMEQ2RDhFQ0MxODFGRDMzN0VBM0EzODREQTJBMkJBNzJDRUZDQTcxREM1QTg1MDIzOTIyNjAxCis1NUQ3M0JDQgorQkQ3NjA0QjgzQzU2MDhBQ0JCMTcxNThGMURFRQorRkM2NjlDRTYzQ0NDRjBENkJFRkY1RDA3NDkxM0RBNzlBQjhBODE4M0I0ODE2RUIwOThCMkE2RkNBNzk5RTY5Qjg0OENGNjkwREIzQzZDQzM3NzQ5QkRCNDdCQjg3ODhGOUNGQTIyNTI5QzMyQzM1MEY3MkY5ODNEQThGQkEzQUZDNTk0RjM3MDYxQkVFQjdCMENGMzNERjg5OEYyNDM0Q0Q0RTk3MDUwQjhFODY4RkIyMDlEQjBEQTgwQjM2M0NDMTUzMjg1MzA5RTdDQzgyOTE1N0FFNzY5REUKK0I5NTNEQTRFCisyMzVFQzk2NzdCOTA0MjBFQTQwM0RBNThERQorMDU2QjdCMEYyODFCMzU2MDJEN0QzRTA3RjA2MENDQ0M3RTQ3QzI3ODY1MDhFNzQ5RjZDRTFDMjQ4QUQ3NDg2NEVGREUwOTQ5MERFNjk5NEU3QkE1N0IwRUREMEE3NzgxMEI3NkI5NzA3QjBDOTg1ODcxRDYzQUQ4NjlDNTAzN0M0NTQ2MjA1RkE3OTcyRDMyRDMwMTA2MzBGOEM5N0M4MgorNEMxMTg0MDgKK0JBNUNGQTZCOTc3QzFBOEJFMUQ3OEQ4RTJEOUUKK0FERjI2MzI0NzRBNjQ2QzFCMUFBMjE3RDYyNTZCRTE0ODZFRURBQ0Q1RDdGOUQzNUZBM0RBRDk3NTM5MzU0RjdGNzNBNTI1MzFDRDlFMThBMjM1QkRGQkQ0NDU4QzhGQUE1MUYyRjJFN0UwOTVGNkRFMUY3RkZGREU3RTY4MDAyRDkwRDczOUI3RjM5RjU4QzNBQzM4MDI5QzZEMzQ2RDI5REZGQzA4NTRFMDlENTZGNDI0QjE2N0JGNDE3MEFERThDREE3MThEOTNCN0Q1Rjc5REM3QjdDRTgxQ0U5QUVDQzMzRUM5OURFMjE0MEMzMkVCNzE0N0MxNEJGMgorNjhGQQorOTdFNDZGMkFFRTg1QzkwREE3MTAxMjA1QzcxNTc5M0QyRUM5MTk4OTQ3NTJGRjM4NjNFQUU2RDQyNkQ5QTY0NUM4QTQxMAorNkZBOUIyREYKKzMzN0M0REQ4RTdGNTNGMTM0Mzk0RUE0NUU5Cis4RjIxMERFRTA0ODZGNEQxRkRGOTg3M0I2MTlBQjA0QzVENTMyMTQ3RTZCREE3QzkwM0NFQzAxQzBGQTQ5N0NBOUI3MzdGOEM1NUUzODY2QTY5NUJERjdGN0Q3QUZFNUQzQzIwRkI3NzVCNTcKK0UxRTBFQkM1CitDMjIyMDUzNzQ4NkQ0MTYyMTkxMkY1QkE4OTkwCis2MzM5MThGNTM2NjE5M0Y2OTk4MkI0MjY4NzA5RkEzMTc5OTBBMDE2OTI1OTA3RTQ1NUY1OEFFRTg1NkZENTMyNDI3MEFBRkFBNDRDMzFCNkVEMjAzQjc3ODYwQUFDNDI0MzBCQjA4MUFEOEJEMkQ5QzUxMjFCMjQ5Qzc2RDNENzAwMzE3NEMyQUU0MTZGNzk2RjAxNDk3NzUzQzZGRUEyN0E4RjNFNTc2RjAyNEM2MTQzNTQyNUVFNUQ2OUFGNTNFNDQzNTQ4MDk3Mzk4RkVFMkRENTMxNDlDRjJGQzRBMzgxRjE1MDE0ODUxMEY4OEY1NjBFREQwNjNGNzYKK0U3ODcKKzZDNTNEQzQxREVGNDNFQzkyQzdCRDUxQ0VFQkE4NEM0NEY0RTA4NTlBNDE0RTdCNkY3MzUzRjg0QTVDOTlCCis3MEMwMTBCMQorRkYxRUYxQjA1NThDODI5RkJGN0NFOEYzOTgzQgorMDMxQzAzRDA3NEMzNjFEMkE1MTg0RERENzMzOTMyNzMzNTZFQkUxMUEwRDMwRDk2QkYwNERENkUzMEY0NTU0NjNEMTJBOTI1OTgyMThENUJFQURBMUMzQ0I5N0M1MjlBNEQ4Nzc3MUEwRjRCMDAxREUxQkFCQjFDNDM5MTU0RUZERUE4NzI4MEU4MTRBQkVDQzdBMkNCODE2NjdGMzM0REU1N0RCRTlDM0ZGMzk4MDE2OUVENjg0Mzc0NzUxQjNDN0Y2QzU0MENGMkVCNUU3MTI4NkMwQzhBCisxNTI3MTg3NQorMzc3MDdDNjgyNUY5NjU3RjdGMjRDMDQ4OUIKK0U4NTk1MkE2RDcyRjZBMjAyNTlDODk2MzNGRTYyMTgzQzhDRkI5OEIyNUZCRjExOTAwRDc4MEFENDI0NzI4QUFEREQ0RDJGNjQyN0FENDlGRDBFRjI4OTMyOUNBRkQ3NTRCNDVCQTQ1NjBBQjc3RTIwRDQxQzExQzI3NjJBMEIxNjc4QUJGQzFBRUNCCiswOTgyOTk5MworRTg1QjkxREQ0OEQ0OTdFNzhEMDM4QjNCQjNFOAorQzcyOTVCNzcwOUJDQjkwQjNBNjdFNTMyOUM4Q0Q0RkVDQTI5OTUzNjFFMjQ2RDlEM0QyQ0Y0N0I1MTUzQ0Q2RjkyRkE4RUE5M0UwNjMzQ0VBMUNCRjMxM0E1QzYyNkI0REJFNTVDMzVBNzNEQkUzRThFREIyOUQ3MDFFNzA4NDVCQjkxOTA0RjU1NTIzRjc4NDM2RkRBRUMyQzk1Qjk5RDQ2RTVCNjE1NUZCRDZFQTI5MUY2NEI0NzdCQUU1MDIzNEY1QUU3MkNENzRCMURBRTUzNkJCMUExOTk5MTgwRTAzQjdDNDBDNjEyOEU2OQorNjQ3OTM1QTMKK0I0N0UzQjREQkMxQ0E5NzUxNzU1REI4RTNCMEMKKzAxQzZENzUzOTFENDI2RTM4QzQ1NUU3M0MzMDkyRjNBNzAxODU5N0VDNkQ1NjVFNEZDREE0MDAxQUY5MkI2Qzc1NzAzOTk2OEQwMUFGNzQzOUMyN0ZEQzI3RTdBOTVGNzg0N0VBMkVDM0MxMTNBNDRCRTMzOEU0MEY3NEE0OEE1NkJEQjZCMjIyNjNFMkFGNUNBN0Q0OEUwREQwNjNDQTA1NENCQURFQzI1NEVBMzUzMTMzMkE1QjdDMzYzQkFFOUZGRjUzREZGN0QxRTEzMDgxOTVGCis0RDA3Q0Y4MAorREI5QjREMjkwOTM5RUEyMUVDOTY1REQ3NjMKKzEyNzZENTE2RjgxNjc5RUUwNjdERkQ5MkRFQjM0NUZERTU0QUVCREYyQ0Q5MkY0RjE0NkQ0RTBEREZDRjQzOTZBM0Q1MjgxNDMzMDIwNTU1OTI0MUFDN0VDMDQ3M0NDNTdGNjFEOUNFQTc3NUY3ODQxRTE4Mjc5MDFGOTUwMzQ2QjEzOTVGOUMyNTg1MzUwOTRCRjM0RTg0RjE3QzU1NkFGOTJERDlDMkI0Q0JERAorMzI5NDNDNEYKK0VDNDg0RjZFMjY0RjFCRDYwNjNCMjQ4QkM5RUYKKzA3NDYzN0NCQTMzQkUyN0U2MjRFNjkyMzQ1NDEwQjE2RUJFMzVBMDFEOUE2REQ4QTQ4RTdENEY4MTM2NjFDNTdDRTYwM0NEOTk2RDMxRDU3NkJGMTM5QTc4NzdFOTFENTc1QUYzQUREMkZBQjhFREI2RDk5N0U3OUJFQUJDRTVCQ0JGREE2ODdEMzk2QzZDOTgyOURDNTlFNTJBMDhFQzdFM0VEMkExOTQwNjg4REUyM0NGQjJEQzFFMTEzRDI5N0NFRjQ0MkZENjZGOTk3MTVGRjUxNzhFOUZFNUMwRjFCQTA4QjhDN0E0OTUzNzJBMzc5MzQzOTFDCis4NzVBREZCRAorNEQyRDUyNkNFQjgxNEVGNTg5MDEwQTA4MTYKK0VFQkNGMDRGMjBGRjBEREJFNUI5QjRDMzZCMTQwOERFMThEN0M3MTQ3NDk5MDRCOTdGQzc1NDY3MEQ4MzJCQzE3NjRGMjVGRUFGRUQ4M0NEMTcxRDZCNTE5OUE1MTdFMjQxRDIwQzczQUExNEUwRUREQUFBNUZEQUZDRkNDQUFGOTgxMzM0OERFMgorRjQwNzFGMkIKKzVFMjIzRDI4MDhCQzBBMEUxQTgyOUY0MTNECitCRjZCMUFGNTMwMThGMkE4QjUyMzg1M0Q0RTI3OTc1OERBQjVFQzU0QkM0NzdEMEZGN0JGQjM3NDA0NTcwQjNEOENEOTc4NzNEQjM2Rjg3NTQ3M0JEMDNEQzM1QUMyRDQxQUI0ODlCODE1RjlFQ0FEQTA5Mzg0RDNDRDQzNEM2QUZFRjJGRTNBRDJGNDFEM0MxMjQ2QzA4ODNCMTNGMzVCRDU2M0I5ODk3Nzg5QTE0NTk1OEMzNUI5RDY2REJBMDFDNjdFCisxMDRGMTBFMAorMUJCRkI0NzI4RTg2MDc5Rjk2NkE0NTJCREEKKzdDRTI5RDlFNzREMjg0QjRBRkU3RDJBNDNBQzk5NTJFM0QxNTIxMUJENTNEOEVFOEUyRTFFREQ0RTBCM0NDQUY3RTZEQUMzRjYzRTQyMzY0ODFFQUI4QUNEM0I4MUY3NkIzOEFDNTk4NDY5MDYxN0I2MDk1QkJERkJBNEUzQTkyMDgxM0VFM0FDMDdGRjAxNUYwQzM0OUYwQkVCOEY0NzlENDEyMzcxQzI1NEU0RUU3QjgKK0Y1NTZCMkVDCitDMjI4OUE3NDk5MTMxMTQwRUQyMERGODMyMUMzCis2NUE1MTA0RjYzOEIwQTE3QzhGMzNBNDA3MDk5NDNDQzk2MkZENTQ4MkMyRTc0MzUzMTg4RkNFNjQzQzUxRDg3OEJCMkM5NDgwRDJCRUFEMkE5QTc2NkRCRURGMDMxQTJBOTExMkU4NTFDMkQ4RTlCMkEzMzQ2NDY1MkVCMkU3NDQ4RkQxQkY3NjQyNzFFNUJBMzI2RjE0Q0I4Mjk5MEQ2ODVGQzYzRUVCMDY0MEM3NzJDNzJDNTMzNzREMUEyQzA5NUQ5QTdFMDVGN0VFMDE5NTE3NkI5ODNBMjI4MjVCQ0JCREM4MTAxMEIwRTBFQUU1OEZERkNDRjU4REQKK0M2MzAKKzUxRDRBM0JERUVCQjQxNDFGOUYzMjQzQkZFMDUKK0E5MTc3NjQ4CitBRjYxQ0M5NEUxNjcxMzhENTVDNDNFM0Y2QkE2CitFMUM0NEI1MTQ1MTA0MjI1RUQ5MzA2MTdBRjMwQ0U1NjEwMzQ5RTZCODYwQkY1ODlFNkQ1Mjk1MzZDQkMzQzUxOEJEMUQyRjQ1MzAxRTY1OTVBRjQxRUVEMDc0OTI4MEQxNDYyMjFBNDQ3MDJDRkYwNTlBQjNGQ0NBNTgyNDNFRTMyOTk3NTQzMUMyMkEyRkNFQTUzNzU0RUVGRUQxRDMwOUFFNDlDMzAyMUY4QTQxMkRBRUE1MTQ1N0VBMjYwMzk4MzNERDgzNkQ4QTRFQ0RFRENCNURCNDcxQ0M4MDU5OTFBNEQ0M0NBOTNGNTQ1ODM0REE1NkZCREQ1M0UKKzk2RjcKK0I0NjNDNzc4OTJCMkZGODhEMDE2Q0Y2QUE1Q0RGNjg5MDA4OUUzODRBMjhEQjMzMzgyCis2RkVFMTgzNAorQTFCODM2REFEM0E3OTA4MjZBMERFQzUzMjg3MAorRkQ3MkU1MzIxOUQ1MkQyQjE1RjA2NDc4NUM3OUM2QjI1NjE1NEE5MUYyMzYyNzA0Q0U4RkYyNzlGOUNGRDNDMDU3Qjk1QzMzMTdCMzkwMzI1NzBBNEI1MzQxMjIwQTlCOUUzQjhCNUVGMkY1MEQ3RTBGMjY3MDFDRDkzMkNFNUREQkQ0QzZGOTAyN0ZERDk0MjM4RUM1RjVERTJCODM0MUUzNEFDM0Y1RDYwNDU5NUNCN0Y2NDJFMEY4QUFDMDQ1MDE5NkEwQTRBN0YwODU0REUzN0Y0OEUwMUQ2RkY4ODkzRjVFOEIzMjkxNTcwNDdGNTVGQTU0Qzc2QjlECiswMzMzCis0NjdEOUE4QworQ0FGNEU1QjQxRTcxNUJBMERGOThGM0M1QkQKK0E0QkIxNjU4MDc4RDY3RDExMEExNDEyREFFQTA2RDQ2NjVDMUNEQkYxMTQ5MEUxRjI4QUE0ODg2OEMxN0FCM0EzNUFFMEY3QzVEOEVGMjAwQjMxMzM1MDMwMjJCRDgxMkEzRjlFQjExREI2NDI2QkRENzhDRjJGOUVGMjQ2NgorNzY5MTAyQzAKKzY4MEZCMEFGNURBRDdFNTQxMzU1RjBCRDVGCitGQzdCRjQzMEZBMERGRjUwQjYxMTQ4RjBFNDgxQ0MzNzdENjZCNUYyMzZDOQorQ0IyRUQzNTkKKzg1NjM5OTc3MzNDMjM1NzFCODM2RUU4NkUzOUQKKzRDOERGQThGNERFMzgxMzMKK0ZDMzA0NEZBCitBQUZBMzg4RkU5NTQ4RTJENzQyMUY1QjQxMEJCODUyNzc5QTY5NzVFOTc5QUVFMTI0MDYwMjM2OUREOTkzRjkzOUY5RAorRkU4NjJCMkFDQ0Q3Mjg5QzcyRUU5N0NBMkZGNjZGNzNGNUEwMTJERTk1NkU0NEY0NTMyQzg3MkI1MzU0NEMyQUFGQzhCNjJENDlBRgorMzlCMkQ4N0YwMTFCNjQxNzRERDQ3Q0JFRkRFQkZGNjVDNEREREY2RjJFREYyMUQ4OTZEMDM0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ1IHB1dAorZHVwIDMgL0MwMDQ3IHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY4IHB1dAorZHVwIDYgL0MwMDY5IHB1dAorZHVwIDcgL0MwMDc4IHB1dAorZHVwIDggL0MwMDc5IHB1dAorZHVwIDkgL0MwMDgwIHB1dAorZHVwIDEwIC9DMDA4MiBwdXQKK2R1cCAxMSAvQzAwODMgcHV0CitkdXAgMTIgL0MwMDg0IHB1dAorZHVwIDEzIC9DMDA4NSBwdXQKK2R1cCAxNCAvQzAwOTcgcHV0CitkdXAgMTUgL0MwMDk5IHB1dAorZHVwIDE2IC9DMDEwMSBwdXQKK2R1cCAxNyAvQzAxMDIgcHV0CitkdXAgMTggL0MwMTAzIHB1dAorZHVwIDE5IC9DMDEwNSBwdXQKK2R1cCAyMCAvQzAxMDcgcHV0CitkdXAgMjEgL0MwMTA5IHB1dAorZHVwIDIyIC9DMDExMCBwdXQKK2R1cCAyMyAvQzAxMTEgcHV0CitkdXAgMjQgL0MwMTEyIHB1dAorZHVwIDI1IC9DMDExMyBwdXQKK2R1cCAyNiAvQzAxMTQgcHV0CitkdXAgMjcgL0MwMTE1IHB1dAorZHVwIDI4IC9DMDExNiBwdXQKK2R1cCAyOSAvQzAxMTcgcHV0CitkdXAgMzAgL0MwMTIwIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xOCAtMjA5IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzRDMjY0RTVGNDVGMDI4NkJEMUIyM0QyNkMzNDYyNkUwN0EKKzVCMDM5REIzNkMxODAwNUVFMzJDRkE2NAorOTA2QjI4NUNCOEJEN0YwOTY4CitENDdGNTI0MgorMjJEQTI5QkI2M0VBMjlBQzEyOTNEOUYzNjUKK0ZERDA5MjY4NkNGMEQ3MzlEQUU3QjRFQkVDREZFMjFCOEI1ODEwQjE1QjM1RDcKKzhCMUJEQjY2CiswMkI2RUQ4ODZBNzlDQUY1NkRDMDI0QkJDQgorRERBMjUxOTBGQUZDMzQyM0RENjgxQzM0NTZFOTc3MTQ3OEY1M0E5MjdEOTQxRkI2RkYyMworM0EzODlBRkIKKzE5RUI5MDM1Njk5NzZEODI4RDZGQzkyRTRECis4MUNCNzcyMzEyQTA4MkU5NTY1OENFNDAwQTU5ODRCQzk0RjNFQ0JBM0VFNjVGRUJGRkY4MEI3MEU5MkY3QjEyRERBMThGODVBN0FDOTAxMkRGREIxMDgzRTMzODJCNTdBNkRCREMzRUI0NEEKKzQ2MDU5RTRECitDREMyNjExQ0QzQkRFOTExQ0E3MjA1MTFFOQorNzU0RjNEM0VDMjUyQjUxMDBCQkVGRTI3RUQ2NkQ3OEVGQUM5RTJGOEVERDFCMDAwNEFEREI3Qjk2MzY3MjdBM0NBQzBFRUE5MzQxOUZFRDMxQTk4QkZGQTQ4OUFFQUFDMzYzREVERjFCNzZGMTQ0QTY3RUU3NUE1NTEzQ0YyMzg5QzhGRUY2M0ZCQTAxM0ZBNEMwMDMxRjY1MkY2RTc5RkIzQzNBQzgyREFBNUQ3CitDOEMzRTZGQgorNTZBM0ZCMzgyNzUwMjU4NDkwQ0NFQzEwQzJCMQorMjE5NjZCNjgwMjMxM0JGNTc5NThGMzgyM0FBMTNCM0RGOThBQURCQTI1NUJEQUYxOTc5OTg3REZBMEYwQzI2RkE5MDIwQUUzNjQxQzk4QjEyMUVGMjA5RTgyMzk0NkE5Nzk0M0JDNjQzOEVGQTExRDcwOEU1NkEyRDU0QjdBNUMwREI5NDUyODM5QjI3NkNGQjNDRTgzNEUwQUE0RjBCRUU3MjJCQkE5M0NBM0M4RTc4MkM3MjQzRTRGQTU2Q0IyNzI2ODY1RkNEMzQzMERDOTMzQTJBNUQ2RUIyQQorMEREMUJDNkYKKzAyMDRGQjE3REQ4REZDRjBBNDAwNkFCNzRGCis4QkQwRUM2NDNGNEI4RTJGMTJGMTZFQzA4QjhGODhENjFDNjkwMjk0NkYxMUUyOTRBOTA5MjI0OUZGREFGRDVCNjBFODRGREY4OUIwMzhGQTk1N0I0MjU1RjIyMDk1RkVGM0I5Q0JEQUJCNEU0MjVCRTlGMTBCQ0YwNTdENUMwNzkwRjVCNjdBRkEzQTgzNDkyMDEyMERGQ0I3REI2NkY3NkVCQTJBNEU3MTI3NkVFMkQ4RDAzNDcxNzZFMUM5Cis1MEJDQURBRgorMTBBRThGMjY2N0RFOTI4MDEwRTA2RTZBMTYxMworMUNBMjJBQkE0ODhCQzE3NTc3ODVBM0IxRTY2RTMxNkYxMzI3QjZBMjlGRTdGOTFDQzZBMTZBQTZFQTlDRjgwMUMyRUJBQTdENUI2RDk0N0Q3NENEMEE1M0QyRTE3RENFQTIwQzQ1NzY1QzkzNkYwNjQ5QTA2RjM1OEE3Nzc1RjdDRDJDRTE1QjcwOTFDRUFCRjZBMTNCRjNBNjZCMzZFRjVDQzBBRUU2QkQ2NTZCODdCRTI4NTIwM0U4NTc1QUE5QTUxRTJBNzFBODgyODNFNzhCCitFODJGQkE3RAorM0E0QTc4MEJDODBCNUJBREI1MENFOEE2Q0RBRQorOUY3RUI4QUQ1MUYyMTRFNTMxNjQzNEIwNjhDNDkwRTI0MEY4NDlCREQ1NDMxQ0NGQjEyQ0REQzkxNkUxRUIyRTQ1NTk5RDIyNTg0NDNDRjhFREUxMTVDMTQyMzRFNDc3ODYwRDRCQTBGNzNGNDM5QTY2RkZDODM4NUE0QzY4MjFDN0Q2QjJFN0E4Q0YwREY4NDhCRTFCNEM1MTcwRTREMzFEQTQ4MjE1RDdFOUYwMTU0OUM0RjIzREI0MUQ1MzEyQzlFNTFBRDYKKzFBRDM0RUE5CitBQkNGRDFCOTJDNEQ0RjExMDk4QzYxN0RFREZDCiswRTQwNzc1NkM0NEQzRDg2RjQ2QTExODFERDk2RDdGQ0FCNTI4QURFMEFCMzVBRDE0M0Q0NkI5QzBBRkI4ODdDMEY0NjEyQzYwRUNFNEJENTA3RUQ5QzA5RjhCOUM5MEFFNDFGRTNGN0FEQjMyMTc2Q0RCRUE5RDYwQzkzRDk0MUFCOTBENTNGRTg4M0FENERGNDgwNzNFQjMzOTZENjU3ODY4MDg1MEUzNDlFNTMzQzQ3QTg0NkMyQTIzM0NFNkY5NTJCRTkzMTNEMTMzM0RDODM2QUI2NDE1MjExMTE0NUQzNzA2ODVGQjMKK0NGQzc0Q0NDCis5OEUxN0NFODZGNjVGM0Y3NjZFQUE1NDdBNUMyCis5Mjg4QzYyODIwQjNEMkQ0MUUxODcxNDc5MDMzMDRDNUNFOUExODg1QUE4NDk4QUFDQkEzRDk5MTg0NTQ5M0Y3MUI0Mzg2NDZFODFENjYzNDAzNDhBRjUxNzBDQ0IwNjhBRTM0RDk4QTYwN0M1MzYyOEUyQzk2NERDNzJCM0E0MTg3MUQ0NkU2MjgzMUNFQ0NDREExQjg3QTU5NjY1MzQxRjE1MDM4Mzk4QUI4NTA4MDQ1Qzc5Rjc1QzZFRjNFOUQwNUJBQjY0MTU4N0M1OTQ2NEFDNkM1RkE2RkM4MDkzNUFBMTQ2N0E3NThBRkQ2NzY0NEY4MzMxN0Y2QzcKKzMwNTIKK0U0NDJCMTE1CitENTBDMDMxODFEQUVENTlFODRFOTZCREM1RAorODI4NzJFMzA1QTQzOUI1QkY4QTBGODU3NEJFNUQ4NDdBRjJDQkU3NDY4NzhEQUFFMkUyQkI2NTkwQjVCNzhCQ0RGRDA3OUEyOTJBQzNDREFENzA2MDU1QkVBMDkzNjQ3NkZEQkRBMjkzMUE3MzZCQUIwQzA2QzJEOTIwRjBGMzBCQjI4QkFDOTMyOEI1NUVGOTUKKzA0MUVGMDNGCitCRjI0NEM0RjEyMzUzMzYxNkZFMDAwRjFEOURECiswRTBBQ0Q4NDdFQjM0QjMxNTVBMjFCODI5QzE2RDZDQTAwRENBQ0E5RjFGMEMzQzU2QjQ1QzY5RTVDQkU1OTZFQkVBNjU0OUQ2NkZDQUFBNTlGNzUyQTEyNzIwQjRFNjM0QjRFNUUzOUQ2QTNBMzFGMEFDNjI3NDNGREUyNDkzRDc2REUzNkFFMzMzNTEyMjM4M0Q5MjE0RkFGRDRCRUIzRjVCMDdGOUVDQjk5NkE4MDhFMDRERDNFREIwMEJBQ0U0NzJBNTQyMjA1MDdCQgorQThFNTgwNkIKKzgwMzI1OTVBRTE1REUyMjVBQkE3REQ3NkVBQzEKKzQ3N0Q3ODFEN0RCRTJBNTI2QzJGNUM5OUVFMTExMUQ5MUMxNzI4QjM1Nzc3MDZEODgzREU3REE0ODc0Q0REMTY0RjA5NkQ3OUNGRjAzMUU2OTA3QzZDREE3NzI4QkVFOThBODhDREZFNENBN0Y5OUYxQUNCRUUzNjFGNjc3MDUzOTQ5M0UxMDVDREU2MzIxNzNGQTM4RDEzMzcxRDNCMDBGRjdEMzM4RkNBNEE2QjY5MURFMDQxN0Q5RkM2RTVCQjRCRTdBNjZFNzc2NERERjE2QzI0MDE0OURFRjU5Q0MzQTQ4NkMxRUU4MzBGQ0IxNjMwRUE0MzNBM0ZGQQorMEM5MAorODUwOTlDOEQKK0Q3ODI4ODg1CisxODExMUNBNzJFOTRCMURCMDI4MzE3Qjk3NQorRTg3OERENUMzQTc5OTA1MEY0RkJDQjg5RkYyOTUwQkJERDlFNzI4QkI5OTdDOTlBRjFDNjFBODUwNTY2MjE2MDQ3NjlDRDM5NTFFRjExMDYzMEJERDgwMzdGNkNBNjYwQ0Q2M0I4MkYzMzFCNUE5RUNCQTJGMzg5RTEwNEM5NTE2MTdCNzMwQTE4MDczREVGQTNBODFGRTUwMDBFNzU4MDg0QUYKK0ZDNzNBMkEwCitENzk1MzkxNDkwMUY5MzBGMTg5RDY3NzU1MgorQjkxQTlDRjdFQzZCRTQwQkE1Qjg2MjE4QUIyMUJGMjEwN0MxRUNCNjA4QTkzMDhCNDI0MEUxRjdBMjRBQjlCNTM3MTE1NUIwQjY1Qzk5RDNEQ0RGQkRFMDIzN0U1RTkxQjYxRTFCRkY1QTVEMEUzQ0JCNTAyRDE0QjVCQTg5MDQxQkExMzRFNzZFQ0U1RUUzQzRBREZENEM3QzA3NUQ1OTE0NjI5QzA2RDFCMDY2OEIyNTc3RTRCRAorOTNGREMxRjgKKzhDOEZCMzI3OUY2QTE4QUE2RDI3MTMyNkEyCitFN0IzMTNFQjkyMkU4QzY2RTEzQTM3RThDQzRENzJCMEZBNjI1NUQ5MTE1RDQyNjhEMzM4NjVCQkVDRDUzMUNFNjc3MkQzMTkwMDdENTFFMThGREExN0NERTMxQUY2MDIyMzE2OUY3MkQ5MDc2RTJEQkY1RjA4NDcxNDFGODMwM0I4OUJFMEQxNzk5RUY5MzU1RDYwODQ1RTVCRTAwOTFDMUM5RTU5RTAwMDdFQjZFNTBGREZCNzI2OUYKK0YyODQ1ODYwCitCN0ZBMUY2NzNCQjcyQUE1QTY1N0VEMkM1OTlCCis0MjNBQzUxQjhGNUY4NDAzQ0VEQ0MxRjAyRkI3NUI3RkY5QTQxREUyRUE4NEUzMjNFNzg5Qjc0QUVBMkVFRkQ1OTJCMDc1MEI0QzBCOERENzE1QTdEMjAwRjg0MzgyMjI3NDY4RTZBMTFDN0Y4OTQ3ODVGOTJFMkU0MTZEQTU0NkE5NjZBMTU4QkIxOEEwRTc0NEQ5MjNCQjM3ODkwOUYxMjQyQjhDRDNCRTlBRTMwN0E5MzZDNEVEQTUyRUU5NzRENDA0MDEwOEI1QUE4MTIwOEFBMDRGNTgxRkMyQTg3QkZCODZDN0Q5NDQ3NDcyRjI5MzkxNzc5RkQ3NkIKK0VFQzcKKzQ3RDA2QkJFNzIwNkY3NTY5N0IyNTUxRTU4MjQ0MjZFMjRGMTBGNjRDQzVGQUU4ODhGQUM1NkM3MjQ2Qjk0NkE5RjlFRTUxRjkxCis1MzY4M0Q3MgorRDRDQ0U3NjkyQTBGRUE0RTMwRjdFQUYxNEUKK0Q0REU1Qjg4RTJCRDYyQjY3MUE2MkU0Q0IyRDYyMzI2MjNCMzExMDk1Mjg5NURFQjI2QkE1NjdCODcxMDJBRDc3NjFBQUFEQ0Y5RDQ1QjdDMDEwQ0JBQTY1MURFNDg0OUFERDE3RjhCM0I1QjE2RkVENUNCN0QzRkUzMDM4Q0E4OUFERDREQjE4NjE2OUZGQUE2ODlCNTc2RDY2MworRkQ3ODczRkIKKzg0MUUzRjkxQzIyOUVGN0EzMkM4MTRFNjVCMjAKKzY4Q0M0MDM0RTM2MjM3MTUxMjZGMkFFODY0NDI0NDVCRkI4QzBGNkNGMkM5MkVCQUVEOTkzREQ1RDM5MEI3NjhFMjAxRjlGRTY2MzU0OUU0ODE4MjJFQzc0MDhBNzQ5N0I0NzgxODc5QjgxN0ZERDVCQ0I3RDYwNjQxMkQ5OUJEMjFCNjY0M0Q2OURGRTA5M0I1NEE0NjcwNjU1RUU2NTMyMzEyODY4RUE0QjUyQUVBN0ZCRDRBQjhCQzJGNjhCQTNGQjFGRTc3Q0VFMEY0QTA5ODU0RUU4ODE2MTBGM0M5MDk0MEEyRjU3OEZBMjY4NjdDREQ5NjY0QjlENAorREE2MAorRkFERAorQzk0MkVDNTMKKzY1REFCOEVGRTVEM0IxNjAzMzcyQzQ3QTI1N0UKK0JDMUZBNkI0QTNGNjAzM0YyRkZCQkJCOTc0OTcwMDc5RTlGNTBFMEY0OTFCRUQzNDQ4OTQzMzQwMkVDRDMyOTg5QzIwQzVEMjRDMERGRUFDN0NFQjczOUM5ODNGRkU4RUIwM0I3QjQzMENGN0E1NTk5QUQyNjFBNTU4OTU1MkExODhFRDhBOEM3QkQ5OEEyNjg4MkY3MTE5ODBERDdFOTA0NDI4NTM3OENCQTg5QzhCODIzMDUzMjcyOTZCNzUwNzg2MDNCQjlBMDVFN0M5Q0RBNDhCNkIyNTg5NkE0OTE0QTlEQ0M1QTZEOEY5MTJEOEZFODE5REQwN0QzRAorNjBCMAorMzQxMUEyODczNTlCNkI2QkUzMUZGNEU1MzEwNDhBNEFBRjRDNENFREE0QjMxM0JEOEFBMTY4RDEKK0REODFBNjlGCis4RDZCRUVBNzgyNjExRDhEM0RCRTIwMTc2NjY3Cis1MDBFNTg3ODhDMUZBREI3QTlEQUVDOTkwNDVEQjg5QkJDMzYyQTlBRjE5MkIzMjUyRDVCRDYzODhDRUJFM0EwOUY1ODQ5OTZFREU4NUQ1MUJBQjg2QkRBMkNDOTZFMUE4REY0RkI3NEU5MjhBMEE1OUI0MTM1QzFGNEU1OEQxNTRBQTE2MkY5MkMzRTVFNUQ2MTIyREIyQjFFNjBGNUMyRjBDRDE3QzRCRDlDRTM1OEUzQTcyNjdEQ0IzOUYwQTFFN0FBOTlBMzhGMUFERQorOTM5QTg1OTIKKzg5NjJEM0MzM0E3NjcwMEU1RkJFMjVGNDcyCis5RTU3RUUwNjQ5MDg0ODE0NDgwMzdCNUYzQjk5QkFCRTBENDI5OEE1NzY4N0I1QTAwMUQ4REVGM0IxMkRFNjU5NjU0QkEyQzQ5N0E5QzM5QzIxMzQzNzM0RTE1QkVBMTEyRTc3OUU1QTNDMkY1RTY1N0U4NTczRDg3Q0ZCM0M4N0I4NzcyQzI1QzBFMAorNTc1NkMxMTkKK0NEMzFDN0QyM0M0MjA3RUY4MjU4ODE5OUQwRUUKK0I5NzQyRUIwNTgwOTcwRTAzQkI0NEJEQ0RGRjBFODlFMzk0RTI5QjI4NTc2NTA5Q0RFRUEzRURBQ0NCRkY4MzBERUIwMUVEMkY3MDk1NzM0NjNDRUI5QTA1QzM4QTBENTRGQjkxNTI1NzY4QjFGMTY5QzA5MzVDNEE1RDVFNzdFREJCQkI2MUYzMDk3MDExMjc2ODExRDk5Njg2MjJDMDQwNTU1MzZBMDNGNUEwQzVCMzAxRTE0Qjc2QzM5OTVERjAyODIxQTBFQjI2RjIzMTU3MDY2MjY4NTVFMzEyMDlGQTcKKzcxRjFBQjFGCis0MDdCOEQ5QkJDNzEyM0ZDMTU4N0FFNkRBNUQ3Cis1OTkwOTgyMTE5OTlEMDk0NDM0RjgwMEY5MjJFQjBCNEI4MzhBOUFCNUMxREE5RUEwNkE0QzhBQzRDNjE4MkU0RThEODdDNTY0RjhFREM4RDQ5QTk5QzdEM0YwMjBCMjI2NDEyOUMyNUMzREJFRkU4OTQ5OUIyMjJBQjk3NjlDQjg1MjIzQ0Y1QjgzNzY2RUE0NjQ0OTBFNUI4NkM2MTg4NTdCRUQ3NERDNTkzQkMzN0M1OTgzMTRGMDFBNUIxNDU3OEFEMTBFRkNDNzY3QkQ1NjUKK0MxRDFBNEY0Cis0QzRCQTM5NjBCMjAyOTk1M0EwNzQzRjBFOAorN0NGMkJBRThBNUQ2QjU3NjVGQTY3MDY1QzU4NDhBQzk1QzI2QzA5NTkxOUQ3Q0YzOUNERjNCQUYzRjMzQTU1QzdFQjYyODI0RTI3QTA0RDAyNEI2OTVCQjM5NkY2N0U1MkFCREY0MDE3OTIwM0UwNzgwQjlBRjAzNzU4Njc3ODZFNkYzMzI1NTY5RUM2QkVGQzRGQjZENDExQjE4QUJFRkQ5NkI5QjJBQzg5MkY4MzNCOAorMUIxNDBGODYKKzY5NTE2MDc0RDk3RUIxNDVEOUQxN0ZCQzFFNjQKKzcwRkJFMDBGMzQyRUE0MDE3QjQzN0ZDOThBNDZBODJFNEYzRUJFNEJGN0U5NDA2Nzc2NjExQkExQzVGRTdEMkQ4OUMzMDI5MTk2NkFFRTdFOTE0NEZCQzczNEMzODNCRUZDN0ZGOUUzMTE5OEU5NzAzRTVBM0ZENzNCOUNFQUE4NDAyNDRGOTUyRkY0QjQxNDYwREMzOUM3OEJCNERDMUEzQTVFMzZDNTg5QzhGNkU3MjMxQjMzRjA0RTU4MTlCNDM4MTFBRTM1MjhFMUEzMzlCRkI3NjU5MTFEMjdDQTA5NTUyQzU4NEU2NEQwMEI1RDU3CitDQUIxMTE1RQorQkFBNjNDRTVDQzFGNzY0MzE0RjhEQUYxN0QKKzQ1RDk4MjRGNERFMjQwOTUzOUM4QjY0RUJDRjMwNzVBRDc5MUQ2MjUyNjQwNjEzNjcwNzcyMDVFMjI3NkY4NjU3NjczOTRGNDE1NzAyQTFCOThDRTY2OUU3RUZEQTNCREY0RUI1MzQzRUU3MEY4QzNCOEYzNTZENDQ2RkI4N0VCMkRFQUZDQUEKKzBEMDQ0NEU4CitGMUE1OTQxRTFFMzU4QTc4NTFCMzAyREE3NAorN0IwODIwOEQ3N0VBNzNGQzU2NUU5OUExREI5NEQ5RjBFMTFBMjlGNjM2ODBCRDA5NDhGMTI5NzVEMDRCMUNBNkJEN0IzMDNGM0M1QjkzNTRGQzY0QkFDREIxQTVERDdENTJFM0I1RTJEMUQ5QTRERkUwQTU2MzdGMTUyRDcyMkZFNjIzMjAwQzYzOTA1MjM4MTlERTQ5REY1N0ZBMjgzQ0IwN0FFQkExRDFFQkEwQ0I2MkUzNTAKKzczMkY5NEU1CisxQkU4ODg3RjA3Nzk5ODI1RDk4REIyMDg1MDU0CiszODE0MkJCRjg1RjE5NjVBMUNGN0VGNjMyRUMxNzQ5OEM4MUI2OThBRUMyNTBBM0VDOThCQjkxMDY4NzFBQzU4QzZBNjg5RTFGMTM1QzI3OEI2RDk2NDI5RUNEQUNBQzhFNDcwOEIxNjUyRkRBODVGOEZFNTY3ODhDQjA0NUIxNkY0NzlDMTZBOEM0RDkyNkZGQjk0MDU5RDU0QjE0NEI2REE1QjcyQ0Q5RURBQjIxQzk1NUI1OTRCNDUxQTAzNzgwMDE2MDAwQzEwNDg5OTFGQTM5OEQ0RUFEMzg2NzZFRTNDRTE1OTJBNDU1MUI5M0NCRkMwMEVBQ0ZCMTgKKzk0MTQKKzY0QTY4QUIwNThBRTA3NTlBOTIzNzUzMkQ4OTdENUYwMjEyQjE2Nzg3OTlDCis5MjUyQ0U1MQorQkYzNzQ2NUIyNzVDREQzQkVFQTUwNENEODA5NgorMTZCRTQzNDIyNTU1NkZCOAorNUNGNEE5RUIKK0M2NThDOEM5QjU3Q0U1QzkxQzUwQkNDNjU3QUJCMjE5NkEzRjZGNDUyNEUwNjVCMkYyRDJFQzUxMDZDREJDNDdBMzU1CiswN0EwNkQ3MTZGNDk5NzM1QkRENzI1NkQyNzAxRUNFRDRBN0UyMTJFMEUwM0RDQzI1RDJBODNFN0JEMDBFMEE4RjcxQ0RGQzlCNUIxCitGNzYzRTJGQjFCNUQ5MjdEMDM5NkIxODY0Q0U3MEQ0NjVGRkZDREI4QkVBMDU3QUExNjFBNjUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTcgcHV0CitkdXAgMiAvQzAwOTkgcHV0CitkdXAgMyAvQzAxMDAgcHV0CitkdXAgNCAvQzAxMDEgcHV0CitkdXAgNSAvQzAxMDUgcHV0CitkdXAgNiAvQzAxMDggcHV0CitkdXAgNyAvQzAxMTIgcHV0CitkdXAgOCAvQzAxMTQgcHV0CitkdXAgOSAvQzAxMTUgcHV0CitkdXAgMTAgL0MwMTE3IHB1dAorZHVwIDExIC9DMDExOCBwdXQKK2R1cCAxMiAvQzAxMjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE0NCAtMjI3IDUxMyA3MjhdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNUQzOEQ0OEVDNzQ2NkZGRUJBNUM3MTQyNTA2RDc4REYyNEYKKzA2MEIzRDZGMjJGNDNDMTYwNUY3RTYxMENFRTAKKzgyMUM2OEZCMTNDMDFEQ0FCNUQwN0VEM0M5Q0E2M0NBNDU4MUFFRTJFRkRBNjZFNEY5Q0JGNzIzQkIyQzI2NzNGMkIxMUI3RDM4RjAyQ0M5RjlBMkM2MDI1RDhFOTU5REZBODlFOUVBMTE2QTZBRTFCNDc1MTBENjA1NzBERUI3MUVFMDFGNTdEQTg3NjVFQTY1MDNGOTdGOTM1RTYwQTcxRTMyQUM5NDQ1NUIwRUMwRTY1Q0EzM0YzOTQ0NzdFRENCMzZBOEU3MTA3MEFCMDNDNkRDMjFCODlENTgwQkJENTExOTNCQkJBRTNEQTZCNzY3QURBNjZFRjg4OQorQTRCMAorRjRENENBOEY3RjgwOEU2NkFFNjZBRUI4NDIKKzA2RTJDMTRFCisyQkNGOEJEQTQ1NUQxMzVGQTgyQzgxODQ1RAorRTY0QzM4N0ZCQjVEQzA4MjRFODAzNTcxRDRCQUQ0OTgzQzU1QzlCOUMxNkVCQjg5QkRBMENCRUI2NDhGMDJCRkIwNzc4Q0ZBQkY1OTI1NTk3NTM3NDAzMDgzMUUwMDU1RTRGODA2ODg3NUU5NTNEOEZBRjhEMzI2NDNGQzhDQUMxNkRBNEY1REI1MTVGNjc1RjE4MDlCMEI3NkM2NEMxOEY4MTQxN0Y4NTgyRTZCNTQzRDBBMUJGRTdBMDJCMTY5CiswMEE4OEM0NworMzRBRkVBNUE5MkZFQ0MxNEFDOTNDM0IzNTg1MworN0Q0RDg2MEZDMDgzNkE0OEQzNzcwRkREQzQ4RDg1RjRERDYyNEE5NTM2MkY2NEE1NjhFQkJBNEExMjdGOUVCMDU0RjE3NTlDNERDNzI1NkZDRjQ3MEZDRkU3NEI3OTRDQ0Y2MjM1OUExMUQ1NjMwRTIyRDc5QUM0Rjk4RjM0REQ4RkI1NDlDNTA0Q0E5RTQwMTg5MUYzRDk1RDdENURDQjQ1ODVFODQ1MDcxNEE2QTBDQTJGRTdCNzcyOEU5RjEyNTIxNUU1MUU1OTFGM0E2OEE4ODg5QUNEMURBNTdGMTNGQTQ2NjU3Nzg3M0EwMDk4MDJCQTdBQjA3NkFECis4NTYwCitGQUUyMzMwOUU2RkY0MDRGQTE1ODVEQkY2QUY4Q0QwRTBDRkUzOUUzNDREOTI1NUUwMTY4NThGQTY1NDQ2N0I3RDQyRDFERTRFQ0JGRjk4QjhDNzE3QkRENUFCQTdDNTkKK0I0NzVDNTc0Cis0RDIwOUU2NTlFOUI1RTM2NkQwNDFBMzE0NENBCitBMUM0RjE5Q0IwMDIzMjkxRkVBMDczNjVGMDdDRjc3MzhEMEFDMTRERDY0MzZGQzZGNjYzMDc1QzFDREZENTE0NkE4MEY0RDk1N0RBREE3RUZGMDMxMzYxNjFGMEE3OUI1OUNCNERGQjAyRkFGQjU4MDc4OERBRUI3RUZCQTBDQzdGMzM5ODFGOUUxM0UwMjA1REVENjMwMDdDNjE3RDg3QUVDNDIyQkZFNzA4NUYxOEY4REQ0MTlFQUY0OUU0RjkxNUY5ODREOTZCCitDREI5MzI1OQorREFENDYyQUUxNTY3MEJBNEY2NEY4OTFENjVBQgorMEU4NzkyN0I5NjFCQUJDMkVDRTM3RDY4MUM2REY1QzNFNEIxRjczODZGRDc3QjEwOTBERDM1ODhBNjQ3MDMwMzUzMUY2NzYwOEQ5MkM4RjdCQjdCRjE2RkU2RTI1QkJBMTRCMDgxRjBDNDkxMjMwMjc3MDAwOEVEM0ZFMjZEODY5RDU3MThFQTM1NjAzMUU2RDM3QzQzMTdGRTcwNDkzMUYyMjQwMUVFMjFFNjZGNEJDRDAzQjI1M0RBRjQ5MkYxRTUzRUI1REM5NkNENTRCQkQ5RTE0MTI4NUE4MzREODY3RTQ1M0RCOUJFMDYzRkEzQjEKKzJENzRENTY0CitFMTM4RDJBNjFFQkRDMzFBMUU4NjFDRURFRkI0Cis5NDFBQ0I2NDBBNzJGQjQzNkM2RDAyMTBCMEI0OTFEMUEwODNCRjA3OURFNDdFRUI4MkUzRkMzN0IxRjg3MTY4RjEzQUI1NkJDNDY4MEZDNTc2MkM1MEI5NzlCM0RBRTZDNUNDOTFBMkU1REI0RjczNjZGMDlGNTEwNzg5RDY0OEZFRUI2ODQ0RTVFQTdBQkE1N0Q3NDcwRTQzRDYzMkI0OURDNDdCMjcwOUIwMEE5QTU5MTFCMkVFNzJEODEwRjQxNURCMjVFRkM1CitCMzVGNTI5OAorRjdDODU3REMwQTlEMDE2OTAzMTEzNjBCNEQzRQorRDc4NUVDNzZDNkY2RDVCM0M3MTZFMTA2MEI4Q0Q1MjgzQUJCMUM0MzdDNUEzQUJDRDQ4QjMxRDkzRjk0MjZCMDFGOTY4MEQ1NzA1NEIxNzlDNTQyMEZBNjVBNTNGQTJDREQ1NzJFMUY5RjhCMzY2REZCOTFEMUE3MjJFRTMxRTQ5QjU0Rjc0MDREQ0Q0RTM4MUQxNjdCM0M4RjM1RUQ5QTM4RjFCMjQ0MTk2OEQ3OTU2MzM5RjM1Q0FCNzlEOTU5MUNBMDM4NTc3RDVBODQzNzA3MkIxNDdFMTRERTQ3ODZENEFFREEwM0FFNTZFQjVFRUI2NUM1QUYxOUFDCis3MUMwCis2QTY5ODBENjc5NkMwMzRGRDUyMjA3ODFENjk0RUVFRkFFRTJCNTJENUMzNjJCQTYxNTQ4RUY4NkQyNEQyRjFGNDNDMTQ4OUJGNzI0OTA1MURGNUEKK0RENDRGMjVCCis0QjBFMzVBNkE3QUMxQkE2OTlCRTY3M0UxRAorN0M3NjU3N0U0N0NGRTUyOTg4MDg3QzhCOTA5NzU3Q0RCQTUzNjM3NzQwQUZFRUVDM0VGRDk1Q0JCNjNERUYzOTIzOUI1M0QyNDVFQzc0NDM1MTlGOTgwN0VFNTRDNzZFM0IwMTBFQjQ5RjVFQkI2NDUyOUVEQUY0MzMxMzBBREE0NUEyMjlFM0IzMjE2MkFGMzE3QjE0RTQwQ0FFQTMxOURDMEI1NjQ2N0RCRTBDNTYzMEZBNkUKKzREOEFGMjNDCiswQ0U0NjQ0RTlCMkFGMDgyM0YyRkQ1ODBERkRGCis0Nzc4MjFBOUYwNzhERkI4RDE3RjYxRjgwRjRCRTc2NThCOUE2QUJEMEUxOTg2MjJGRDg2MkQwMzM0RjIxNkJDNzUyMkFCMjkxMzZFQTYyODcwRThGMDlBRDc4Njg2NURFMkQzMDlDMTEzQzQ1M0U4QjUxRTVGRkM1MEQ1NjBDODA5NTVGNEM0QTM0REY0N0VBMUNGNUY1Rjg4MzM4RUMwQ0U4MDJCOUVDQUY4MUU3MERBNURDNDhBOUM2MkFFNTlDODA3QTQ1NjM3RTEyRTRGMzk4RTAxMUU2NzA5MTlBQzhEM0RGRTM3RjAzQgorMzhFREYyMzgKKzlBMzFENDEzREIyQkY3RjVGODRGNzY2OEI5RDcKKzExMjlGQ0Q1QkQxMDhFQTFFODM1RDdDMTcxNTA2MUFDRUI0NUJEQTYzMkMwQ0FGOUU1RkRGNjVGMTYwMTVGQUU0RDdGNzhBNzZEQ0EyQkYzNTdCQTgwMkY5RThDMDBFMDUxNkMwQjJGQUEzMTMzQkExRTg3NDk3NjVDMUNDREYwNjFBQ0NDNTZCODZERjVFMDkzN0Y2NDI4Q0M5NUVDNTU1QTQzRUI5OTlCMTZDRDEwREM2Mjg0ODU4MzVBMzM0MjUxMDgyQTc4RDk5QzVGREUxRTM5RDUxQTk3OTczODlCNUFGNEIwNkIyODJCQTQyRTk4RjNGRjhDNjQ1RgorRjE0MQorQjQyMjY2N0Q5ODFDNjVBREFDQjBFMDM1NUI1MUY3NTlCMzcyOEExRTYzMDY4QgorMENBNDJCOTAKK0YyMEUxRkI5RUMyNEY0NDhCQzE2MzgxQTk2CitGNzQ2QzI5MDgwQUVBMDI1OTUyMkU2OTE3Q0JFRTAzMDM4ODVCODIxNzBGMTQxQTQzMUJCMTlDMDQzMTY3REZBOEZGNjkyNTI0OEVCMjFBMURFQzgyMTU5QTFDNzIwQjJFRENCNzFBM0VENUY5OEU0QjY0MzFDNzM3NUUzMDUwQzg2QjIyRTczMjNDRUVGMjBFMzlBRTAyMTA4QzEzRDBFOUE0QjY0NUQyRDE2N0IyMkI0OTUKKzJFQzA3MjlECis5RDhCNDA1RjIyMDEzRDNFNTY2Q0QwMzcxMzhCCiszMjk0Q0Q1MTFBQTdEQTBBNjI2MThBREUyOTE5MjgxOTBGQUNGODRFNDI3OUE1MUQxOUUwQzg3MDY3MTlGMzNBN0IxNTRFQzlGMzZBQkRBMzMzNjc0MEJBMjE4N0REMzI5MzU0RDRFQzY1MjYyRjgwNTk5MjVDMDc1QURENTRGOTI2MkQwMzNFMjEyMTgzQkYyQzAyRUMwNTQxQTA2QUU3NjgxNUUyMkY5QjE2MTI5OEM1NTY5QUI3NDAzMTk3NEYyMjMyOTRCNTg5RTU4NTAyRDA4MEVCM0EwNkZBRDFCQUM5RDZCRDdBQzNEOUFDNDk4QUI2M0Y3QzBBQzUKKzRCQjMKKzU4QTQ3RkM2RDRBMzY5NUI1QworRTRFNUM1RjYKK0RCN0E2OERFQzVBNzUwQzcwRjVFRjI1NzkzMzcKK0I5NUJBQzUwMURDOTQxNUEKKzFCMUNGRkJDCis5OEVEOEZBRjdDQTIyQjNGM0U2NzYwQ0M4RkQyRTcxOTE3MDJBMzBBOEQ2NEQzMEZDNTQzRjMxNTYwNEJFNjc2MEJENgorMDFCNEMyMjEzQ0Q3Qzk2MDdDRDA0ODk5MTg0MUQxMURBQkQyMTZBMjUxMkNGNEIwRTQzOTYyQ0RFRTlBMUUzMUZFNUEzODcxMjUyNgorQ0JFRDA4NDMxOTg5NzNCM0IyNUZCNkRGNjVCRDYzNDRBMkU4RDIwRjQ0MEJGMDdCOTkxMTE0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJpIDEyLjAwIC9QU093c3RkdXRjaGkgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTkyOTM3MzMyOTM1MmEwZTAxMGYwMTEwMjkzMTI3MmMzMDI1MzUyZTAxMmEzMjM1MDExODI5MjUzNjM4MzUyZDMxMmIwMTE5MjkzNzNhMzIzNTJlMDExYj4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyOTM1MmEzMjM1MzAyNTMxMjcyOT4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MGIwZD4gOTM0NiAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA3MTI+IDE1ODkgMTQzMSAwIDE5MzcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MDMwNDBiMDkwNzA0MDI+IDIwMzMgMTQzMSAwIDI3MDAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNjMzMjkyNzJkMmEzYz4gMzE3NyAxNDMxIDAgMzc5NSAtMSBzCis8MDAzNzJjMjkwMDJmMzIyNzI1MmYwMDI1MzEyODA5MzIzNTAwMzUyOTMwMzIzNzI5MDAxMjE3MWIxNjAwMjgyOTM5MmQyNzI5MDAyYTJkMmYyOTAwMzEyNTMwMjkwNDM2MDUwMDA0MmEzODJmMmYzYzA3PiAzNzk1IDE0MzEgOSA4ODk1IDAgcworPDM0MzgyNTJmMmQyYTJkMjkyODA1MDg+IDMxNzcgMTY3NiAwIDQxMTIgLTEgcworPDAwMWQzYzMxMzcyNTNiMDAyZDM2MDAzNzJjMjkwMDM2MjUzMDI5MDAyNTM2MDAzNzJjMjUzNzAwMzIyYTAwMjUwMD4gNDExMiAxNjc2IDkgNjkxNCAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA5MDUwYzA0MDkwNzA0MDI+IDY5MTQgMTY3NiAwIDc1OTMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwOD4gNzU5MyAxNjc2IDAgNzY0NiAtMSBzCis8MDczMz4gMTU4OSAyMDIzIDAgMTg4MiAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwNzA3MDEwOTA3MDQwMj4gMjAzMyAyMDIzIDAgMjcyNSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM2MjkzNz4gMzE3NyAyMDIzIDAgMzQzMiAtMSBzCis8MDAzNzJjMjkwMDJmMzIyNzI1MmY+IDM0MzIgMjAyMyAyIDQyNjYgMCBzCis8MDAyNTMxMjgwOTMyMzUwMDM1MjkzMDMyMzcyOTAwMTIxNzFiMTYwMDFiMWI+IDQyNjYgMjAyMyA0IDY1MDYgMCBzCis8MGYwNDM2MDUwODAwMWQzYzMxMzcyNTNiMDAyZDM2MDAzNzJjMjkwMDM2MjUzMDI5MDAyNTM2PiA2NDc5IDIwMjMgNSA4ODk1IDAgcworPDM3MmMyNTM3PiAzMTc3IDIyNjcgMCAzNTM2IC0xIHMKKzwwMDMyMmEwMDI1MDA+IDM1MzYgMjI2NyAzIDM5ODYgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwOTA1MGMwNDA5MDcwNDAyPiAzOTg2IDIyNjcgMCA0NjY1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDg+IDQ2NjUgMjI2NyAwIDQ3MTggLTEgcworPDA3MzU+IDE1ODkgMjYxNCAwIDE4NDcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MDkwNTBjMDQwOTA3MDQwMj4gMjAzMyAyNjE0IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM2MzMyOTI3MmQyYTNjMDAzNzJjMjkwMDM1MjkzNDM4MjkzNjM3MDAyNTMxMjgwOTMyMzUwMDM1MjkzNjMzMzIzMTM2MjkwMDM2MmQzZDI5MzYwNjAwMmQzMTAwMjYzYzM3MjkzNjA2MDAyYTMyMzUwMDM3MmMyOTAwMzcyOTM2MzcwOD4gMzE3NyAyNjE0IDEwIDg3NzQgMCBzCis8MDczNj4gMTU4OSAyOTYwIDAgMTg0NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYjAxMDYwYTA0PiAyMDMzIDI5NjAgMCAyNDk1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzYzMzI5MjcyZDJhM2M+IDMxNzcgMjk2MCAwIDM3OTUgLTEgcworPDAwMzcyYzI5MDAwZDBhMGMwODBjMDAxZD4gMzc5NSAyOTYwIDMgNDg1MiAwIHMKKzwwZjFiMDAyYTMyMzUwMDM3MmMyOTAwMzcyOTM2MzcwODAwMWUyYzJkMzYwMDM2MmMzMjM4MmYyODAwMzEzMjM3MDAyNzMyMzEyYTJmMmQyNzM3MDAzYTJkMzcyYz4gNDg0NiAyOTYwIDggODg5NSAwIHMKKzwyNTMxM2M+IDMxNzcgMzIwNSAwIDM0OTMgLTEgcworPDAwMjUzNjM2MmQyYjMxMjkyODAwMWQ+IDM0OTMgMzIwNSAyIDQ0ODAgMCBzCis8MGYxYj4gNDQ3NCAzMjA1IDAgNDc2NSAtMSBzCis8MDMzNjA4PiA0NzY5IDMyMDUgMCA0OTU2IC0xIHMKKzwwNzNhPiAxNTg5IDM1NTEgMCAxOTA5IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA5MDUwYzA0MDkwNzA0MDI+IDIwMzMgMzU1MSAwIDI3MTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNjMzMjkyNzJkMmEzYz4gMzE3NyAzNTUxIDAgMzc5NSAtMSBzCis8MDAzNzJjMjkwMDJmMzIyNzI1MmYwMDM2MjkzMTI4MDkzNTI5MjczOTAwM2EyZDMxMjgzMjNhMDAzNjJkM2QyOTM2MDAyZDMxMDAyYTM1MjUzMDI5MzYwMDA0M2EyYzI5MzUyOTAwMjUzOTI1MmQyZj4gMzc5NSAzNTUxIDkgODgyNSAwIHMKKzwzZT4gODgyNSAzNTUxIDAgODg5NSAtMSBzCis8MjUyNjJmMjkwNTA4PiAzMTc3IDM3OTYgMCAzNjkyIC0xIHMKKzwwNzIwPiAxNTg5IDQxNDMgMCAxOTc1IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA5MDUwYzA0MDkwNzA0MDI+IDIwMzMgNDE0MyAwIDI3MTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNjMzMjkyNzJkMmEzYz4gMzE3NyA0MTQzIDAgMzc5NSAtMSBzCis8MDAzNzJjMjkwMDM1MjkzMDMyMzcyOTAwMzYyOTMxMjgwOTM1MjkyNzM5MDAzYTJkMzEyODMyM2EwMDM2MmQzZDI5MzYwMDJkMzEwMDJhMzUyNTMwMjkzNjAwMDQzYTJjMjkzNTI5PiAzNzk1IDQxNDMgOCA4MzcyIDAgcworPDAwMjUzOTI1MmQyZj4gODM3MiA0MTQzIDEgODgyNSAwIHMKKzwzZT4gODgyNSA0MTQzIDAgODg5NSAtMSBzCis8MjUyNjJmMjkwNTA4PiAzMTc3IDQzODggMCAzNjkyIC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBkMTYxMzFlPiAxMjcxIDQ4NzMgMCAxNzEwIC0xIHMKKzwwMDA1MTcxNTBlMTMxNjAwMGIxYzFhMTAwZTE1MDAwYjE3MGYxNDEwMWMwMDBhPiAxNzEwIDQ4NzMgNCA0MDY3IDAgcworPDEwMTkxZDEwMWIxYzAzMGE+IDQwNjMgNDg3MyAwIDQ4NTUgLTEgcworPDEwMWIxODE3MTYxYjEwMDAwOT4gNDg1MSA0ODczIDEgNTc1MSAwIHMKKzwxMDFhMTExNzFhMTUwZTE2MGYxMD4gNTc0MyA0ODczIDAgNjc4NSAtMSBzCis8MDcwODBjMDY+IDEyNzEgNTI5NiAwIDE4NjYgLTEgcworPDA0PiAxODcwIDUyOTYgMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCA1Mjk2IDEgMTk2MCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxZjMxMmQzYjAwMTIzMjMwMjUyZDMxMDAxZDMyMjcyZTI5MzcwMDM3MjkzNjM3MzYwMDI1MzUyOTAwMzEzMjM3MDAyNzMyMzAzMzJkMmYyOTI4MDAyZDMxMzczMjAwMzEyOTM3MzMyOTM1MmEwMDI2M2MwMDI4MjkyYTI1MzgyZjM3MDgwMDE2MmEwMDNjMzIzODAwM2EyZDM2MmMwMDM3MzI+IDE5NjAgNTI5NiAxNSA5MDQ2IDAgcworPDAwMzAyOTI1PiA5MDQ2IDUyOTYgMSA5NDYxIDAgcworPDNlPiA5NDYxIDUyOTYgMCA5NTMxIC0xIHMKKzwzNjM4MzUyOTAwMzcyYzI5MDAzMzI5MzUyYTMyMzUzMDI1MzEyNzI5MDAzMjJhMDAxZjMxMmQzYjAwMTIzMjMwMjUyZDMxMDAxZDMyMjcyZTI5MzczNjA2MDAzYzMyMzgwMDMwMzgzNjM3MDAzNTI5MjczMjMwMzMyZDJmMjkwMDMxMjkzNzMzMjkzNTJhMDAyNTMxMjg+IDEyNzEgNTU0MSAxMSA4MjQxIDAgcworPDAwMzEyOTM3MzYyOTM1MzkyOTM1PiA4MjQxIDU1NDEgMSA5MTEzIDAgcworPDAwM2EyZDM3MmM+IDkxMTMgNTU0MSAxIDk1MzEgMCBzCis8MDcxMjEyMWEyNDFmMTkxNjIxPiAxMjcxIDU3ODYgMCAyNjQ5IC0xIHMKKzwwMDI1MjgyODI5MjgwMDM3MzIwMDM3MmMyOTAwMzAyNTJlMjkyYTJkMmYyOTA4PiAyNjQ5IDU3ODYgNCA0NzMyIDAgcworPDBmPiAxMjcxIDYxMzIgMCAxNDM0IC0xIHMKKzwwMDFmMzEyZDNiPiAxNDM0IDYxMzIgMSAxOTMzIDAgcworPDAwMTIzMjMwMjUyZDMxMDAxZDM3MzUyOTI1MzAwMDFkMzIyNzJlMjkzNzAwMWM+IDE5MzMgNjEzMiA0IDQzMjEgMCBzCis8MjkzNDM4MjkzNjM3MDkxYz4gNDMxMyA2MTMyIDAgNTEyNSAtMSBzCis8MjkzNjMzMzIzMTM2MjkwMDM3MjkzNjM3MDAwNDFkMWUxYzEzMGYxODI0MWMxYzA1MDAyZDM2MDAzOTI5MzUzYzAwMzAzODI3MmMwMDJmMmQyZTI5MDAyNT4gNTExNyA2MTMyIDcgOTUzMSAwIHMKKzwxZTExMWIyNDFjMWM+IDEyNzEgNjM3NyAwIDIxMjAgLTEgcworPDAwMzcyOTM2MzcwOD4gMjEyMCA2Mzc3IDEgMjU1MCAwIHMKKzwxZTJjMjkwMDFkMWUxYzEzMGYxODI0MWMxYzAwMzcyOTM2MzcwMDI3MzIzMDMwMjUzMTI4MDAyZjJkMzEyOTAwM2EzMjM4MmYyODAwMmYzMjMyMmUwMDM2MzIzMDI5MzcyYzJkMzEyYjAwMmYyZDJlMjkwMDM3MmMyZDM2MGU+IDEyNzEgNjcyMyA5IDc2MjUgMCBzCis8MDI+IDEzOTggNzA2OSAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzE3MTgxYzAzMTYxMDFjMTgxMDFhMTEwMzE2MTAxYzE4MTAxYTExMDAwMjFjMDA+IDE1MDQgNzA2OSAzIDM2OTIgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFkMWUxYzEzMGYxODI0MWMxYz4gMzY5MiA3MDY5IDAgNTA1NCAtMSBzCis8MWUyYzI5PiAxMjcxIDc0MTYgMCAxNjMxIC0xIHMKKzwwMDA3MTUwMDJiMmYzMjI2MjUyZjAwMjczMjMwMzAyNTMxMjgwMDJmMmQzMTI5MDAzMjMzMzcyZDMyMzE+IDE2MzEgNzQxNiA1IDQ2MzIgMCBzCis8MDAyZDM2MDAzMTMyMzcwMDM5MjUyZjJkMjgwMDJhMzIzNTAwMjUwMDFmMzEyZDNiMDAxMjMyMzAyNTJkMzEwMDFkMzIyNzJlMjkzNzAwMzcyOTM2MzcwMDI1MzEyODAwMzYyYzMyMzgyZjI4PiA0NjMyIDc0MTYgMTEgOTUzMSAwIHMKKzwzMTMyMzc+IDEyNzEgNzY2MSAwIDE1NzIgLTEgcworPDAwMjYyOTAwMzYzMzI5MjcyZDJhMmQyOTI4MDg+IDE1NzIgNzY2MSAyIDI3NTEgMCBzCis8MTUyOTM1Mjk+IDEyNzEgODAwNyAwIDE3MzYgLTEgcworPDAwMjUzNTI5MDAzNjMyMzAyOTAwMzIyYTAwMzcyYzI5MDAxZjMxMmQzYjAwMTIzMjMwMjUyZDMxMDczNjMzMjkyNzJkMmEyZDI3MDAyNzMyMzAzMDI1MzEyODAwMmYyZDMxMjkwMDMyMzMzNzJkMzIzMTM2MDAyYTMyMzUwMDM3MmMyOT4gMTczNiA4MDA3IDExIDk1MzEgMCBzCis8MWQxZTFjMTMwZjE4MjQxZDFlMWMxMzBmMTg+IDEyNzEgODI1MiAwIDMyMzcgLTEgcworPDAwMzcyOTM2MzcwZT4gMzIzNyA4MjUyIDEgMzY3MiAwIHMKKzwwNzMzPiAxNTg5IDg1OTggMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDUwODA5MDcwNDAyPiAyMDMzIDg1OTggMCAyNjQyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzYyOTM3PiAzMTc3IDg1OTggMCAzNDMyIC0xIHMKKzwwMDM3MmMyOTAwMjgyZDM1MjkyNzM3MzIzNTNjMDAzYTJjMjkzNTI5MDAzMzJkMzMyOTM2MDAzYTJkMmYyZjAwMjYyOTAwMjczNTI5MjUzNzI5MjgwODAwMjIxMjI5MmEyNTM4MmYzNzBlMDAzNjNjMzYzNzI5MzAwMDI4Mjk+IDM0MzIgODU5OCAxMCA4ODI1IDAgcworPDNlPiA4ODI1IDg1OTggMCA4ODk1IC0xIHMKKzwyYTI1MzgyZjM3PiAzMTc3IDg4NDMgMCAzNTk1IC0xIHMKKzwwMDJhMzIzNTAwMzcyYzI5MDAzNzI5MzAzMzMxMjUzMDA0MDUwMDI3MjUyZjJmMjM+IDM1OTUgODg0MyA0IDU3NjggMCBzCis8MDczNT4gMTU4OSA5MTkwIDAgMTg0NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwOTA1MGMwNDA5MDcwNDAyPiAyMDMzIDkxOTAgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8M2EyYzJkMjcyYz4gMzE3NyA5MTkwIDAgMzcwMyAtMSBzCis8MDAzYTJkMmYyZjAwMzYyOTM3MDAzNzJjMjkwMDM1MjkzNDM4MjkzNjM3MDAyNTMxMjgwMDM1MjkzNjMzMzIzMTM2Mjk+IDM3MDMgOTE5MCA2IDY1ODUgMCBzCis8MDAzNjJkM2QyOTM2MDAzNzMyMDAzNzJjMjkwMDM5MjUyZjM4MjkwNDM2MDUwMDM2MzMyOTI3MmQ+IDY1ODUgOTE5MCA1IDg4MjUgMCBzCis8M2U+IDg4MjUgOTE5MCAwIDg4OTUgLTEgcworPDJhMmQyOTI4MDg+IDMxNzcgOTQzNCAwIDM1NzkgLTEgcworPDAwMjIxMjI5MmEyNTM4MmYzNzBlMDAwYjAwMjYzYzM3MjkyMz4gMzU3OSA5NDM0IDMgNTExNiAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBkMTYxMzFlMDAwNTE3MTUwZTEzMTYwMDA1MGUxYzBlMTIxYTBlMTUwMDBiMTcwZjE0MTAxYzAwMGE+IDEyNzEgOTkyMCA0IDQzMjYgMCBzCis8MTAxOTFkMTAxYjFjMDMwYT4gNDMyMiA5OTIwIDAgNTExNCAtMSBzCis8MTAxYjE4MTcxNjFiMTAwMDA5PiA1MTEwIDk5MjAgMSA2MDEwIDAgcworPDEwMWExMTE3MWExNTBlMTYwZjEwPiA2MDAyIDk5MjAgMCA3MDQ0IC0xIHMKKzwwNzA4MGMwNj4gMTI3MSAxMDM0MyAwIDE4NjYgLTEgcworPDA0PiAxODcwIDEwMzQzIDAgMTkyOCAtMSBzCis8MDA+IDE5MjggMTAzNDMgMSAxOTYwIDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDFmMzEyZDNiMDAxMjMyMzAyNTJkMzEwMDFkMzIyNzJlMjkzNzAwMzcyOTM2MzczNjAwMjUzNTI5MDAzMTMyMzcwMDI3MzIzMDMzMmQyZjI5MjgwMDJkMzEzNzMyMDAzMTI5MzczMzI5MzUyYTAwMjYzYzAwMjgyOTJhMjUzODJmMzcwODAwMTYyYTAwM2MzMjM4MDAzYTJkMzYyYzAwMzczMj4gMTk2MCAxMDM0MyAxNSA5MDQ2IDAgcworPDAwMzAyOTI1PiA5MDQ2IDEwMzQzIDEgOTQ2MSAwIHMKKzwzZT4gOTQ2MSAxMDM0MyAwIDk1MzEgLTEgcworPDM2MzgzNTI5MDAzNzJjMjkwMDMzMjkzNTJhMzIzNTMwMjUzMTI3MjkwMDMyMmEwMDFmMzEyZDNiMDAxMjMyMzAyNTJkMzEwMDFkMzIyNzJlMjkzNzM2MDYwMDNjMzIzODAwMzAzODM2MzcwMDM1MjkyNzMyMzAzMzJkMmYyOTAwMzEyOTM3MzMyOTM1MmEwMDI1MzEyOD4gMTI3MSAxMDU4OCAxMSA4MjQxIDAgcworPDAwMzEyOTM3MzYyOTM1MzkyOTM1PiA4MjQxIDEwNTg4IDEgOTExMyAwIHMKKzwwMDNhMmQzNzJjPiA5MTEzIDEwNTg4IDEgOTUzMSAwIHMKKzwwNzEyMTIxYTI0MWYxOTE2MjE+IDEyNzEgMTA4MzIgMCAyNjQ5IC0xIHMKKzwwMDI1MjgyODI5MjgwMDM3MzIwMDM3MmMyOTAwMzAyNTJlMjkyYTJkMmYyOTA4PiAyNjQ5IDEwODMyIDQgNDczMiAwIHMKKzwxZTJjMjk+IDEyNzEgMTExNzkgMCAxNjMxIC0xIHMKKzwwMDFkMmQzMDMzMmYyOTM2MzcwMDFmMzEyZDNiMDAxMjMyMzAyNTJkMzEwMDEyMjUzNzI1MmIzNTI1MzAwMDFkMzIyNzJlMjkzNzAwMWM+IDE2MzEgMTExNzkgNiA1NjY1IDAgcworPDI5MzQzODI5MzYzNzA5MWM+IDU2NTcgMTExNzkgMCA2NDY5IC0xIHMKKzwyOTM2MzMzMjMxMzYyOTAwMDQxMjE0MjQxYzFjMDUwMDM3MjkzNjM3MDAyNzMyMzAzMDI1MzEyOD4gNjQ2MSAxMTE3OSAzIDk1MzEgMCBzCis8MmYyZDMxMjk+IDEyNzEgMTE0MjQgMCAxNjA4IC0xIHMKKzwwMDNhMzIzODJmMjgwMDJmMzIzMjJlMDAzNjMyMzAyOTM3MmMyZDMxMmIwMDJmMmQyZTI5MDAzNzJjMmQzNjBlPiAxNjA4IDExNDI0IDUgNDQ3MyAwIHMKKzwwMj4gMTM5OCAxMTc3MCAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzE3MTgxYzAzMTYxMDFjMTgxMDFhMTEwMzE2MTAxYzE4MTAxYTExMDAwMjFjMDA+IDE1MDQgMTE3NzAgMyAzNjkyIDAgcword3N0OmR1dGNoMTIgU0YKKzwxMjE0MjQxZDFlMWMxMzBmMTg+IDM2OTIgMTE3NzAgMCA1MDcxIC0xIHMKKzwxZTJjMjk+IDEyNzEgMTIxMTYgMCAxNjMxIC0xIHMKKzwwMDA3MTUwMDJiMmYzMjI2MjUyZjAwMjczMjMwMzAyNTMxMjgwMDJmMmQzMTI5MDAzMjMzMzcyZDMyMzE+IDE2MzEgMTIxMTYgNSA0NjMyIDAgcworPDAwMmQzNjAwMzEzMjM3MDAzOTI1MmYyZDI4MDAyYTMyMzUwMDI1MDAxZjMxMmQzYjAwMTIzMjMwMjUyZDMxMDAxZDMyMjcyZTI5MzcwMDM3MjkzNjM3MDAyNTMxMjgwMDM2MmMzMjM4MmYyOD4gNDYzMiAxMjExNiAxMSA5NTMxIDAgcworPDMxMzIzNz4gMTI3MSAxMjM2MSAwIDE1NzIgLTEgcworPDAwMjYyOTAwMzYzMzI5MjcyZDJhMmQyOTI4MDgwMDE1MjkzNTI5MDAyNTM1MjkwMDM2MzIzMDI5MDAzMjJhPiAxNTcyIDEyMzYxIDYgNDU0MyAwIHMKKzwwMDM3MmMyOTAwMzcyOTM2MzcwMDM2MzMyOTI3MmQyYTJkMjcwMDI3MzIzMDMwMjUzMTI4MDAyZjJkMzEyOTAwMzIzMzM3MmQzMjMxMzYwMDI1MzkyNTJkMmYyNTI2MmYyOTAwMmQzMTAwMjU+IDQ1NDMgMTIzNjEgOSA5NTMxIDAgcworPDEyMTQyNDFkMWUxYzEzMGYxOD4gMTI3MSAxMjYwNiAwIDI2NTAgLTEgcworPDAwMzcyOTM2MzcwOD4gMjY1MCAxMjYwNiAxIDMwODAgMCBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMTkpIDE5CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzYgcHV0CitkdXAgMyAvQzAwNDAgcHV0CitkdXAgNCAvQzAwNDEgcHV0CitkdXAgNSAvQzAwNDQgcHV0CitkdXAgNiAvQzAwNDUgcHV0CitkdXAgNyAvQzAwNDYgcHV0CitkdXAgOCAvQzAwNDcgcHV0CitkdXAgOSAvQzAwNDggcHV0CitkdXAgMTAgL0MwMDQ5IHB1dAorZHVwIDExIC9DMDA1MSBwdXQKK2R1cCAxMiAvQzAwNTIgcHV0CitkdXAgMTMgL0MwMDUzIHB1dAorZHVwIDE0IC9DMDA1NyBwdXQKK2R1cCAxNSAvQzAwNTggcHV0CitkdXAgMTYgL0MwMDYyIHB1dAorZHVwIDE3IC9DMDA2NSBwdXQKK2R1cCAxOCAvQzAwNjYgcHV0CitkdXAgMTkgL0MwMDY4IHB1dAorZHVwIDIwIC9DMDA2OSBwdXQKK2R1cCAyMSAvQzAwNzAgcHV0CitkdXAgMjIgL0MwMDcyIHB1dAorZHVwIDIzIC9DMDA3MyBwdXQKK2R1cCAyNCAvQzAwNzYgcHV0CitkdXAgMjUgL0MwMDc3IHB1dAorZHVwIDI2IC9DMDA3OCBwdXQKK2R1cCAyNyAvQzAwNzkgcHV0CitkdXAgMjggL0MwMDgwIHB1dAorZHVwIDI5IC9DMDA4MiBwdXQKK2R1cCAzMCAvQzAwODMgcHV0CitkdXAgMzEgL0MwMDg0IHB1dAorZHVwIDMyIC9DMDA4NSBwdXQKK2R1cCAzMyAvQzAwOTEgcHV0CitkdXAgMzQgL0MwMDkzIHB1dAorZHVwIDM1IC9DMDA5NSBwdXQKK2R1cCAzNiAvQzAwOTcgcHV0CitkdXAgMzcgL0MwMDk4IHB1dAorZHVwIDM4IC9DMDA5OSBwdXQKK2R1cCAzOSAvQzAxMDAgcHV0CitkdXAgNDAgL0MwMTAxIHB1dAorZHVwIDQxIC9DMDEwMiBwdXQKK2R1cCA0MiAvQzAxMDMgcHV0CitkdXAgNDMgL0MwMTA0IHB1dAorZHVwIDQ0IC9DMDEwNSBwdXQKK2R1cCA0NSAvQzAxMDcgcHV0CitkdXAgNDYgL0MwMTA4IHB1dAorZHVwIDQ3IC9DMDEwOSBwdXQKK2R1cCA0OCAvQzAxMTAgcHV0CitkdXAgNDkgL0MwMTExIHB1dAorZHVwIDUwIC9DMDExMiBwdXQKK2R1cCA1MSAvQzAxMTMgcHV0CitkdXAgNTIgL0MwMTE0IHB1dAorZHVwIDUzIC9DMDExNSBwdXQKK2R1cCA1NCAvQzAxMTYgcHV0CitkdXAgNTUgL0MwMTE3IHB1dAorZHVwIDU2IC9DMDExOCBwdXQKK2R1cCA1NyAvQzAxMTkgcHV0CitkdXAgNTggL0MwMTIxIHB1dAorZHVwIDU5IC9DMDEyMiBwdXQKK2R1cCA2MCAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yNTYgOTIwIDc2Nl0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNDRBRkZCOUU4NDI5OEFEMThERjkyNkU1Q0Q1MURGMEZEQworMzQzMTM0RDBENEU3QTE2RTMxREREMkI2CitBMDI1MzA1NDhEMTQ3NjI3MEMKK0Y1MzA0MTVGCitDNzMzOTg4RDQ2NUVGNTk1OTZGNjU1N0ZGRTE0Cis1NTkwQzkxMjBCNjFFN0E1Qzk2QTkzQzEzNkEzMTRBRTg0RDM0OTBFNEI4QUI3Mjg0MjY2N0M3NzVEREEyODkyNzE4MzEzMkE4QjU1NjkyQUY4MjQ2QzdFMDlBQTM3RkE0NTExNkU3RThBRkJBNkE2QTQyMDczQjAwNzAzOEY3RjRCNjczODQ1QUJDOUU3QzZCMDU5QUQxNTMwNEMyOEZBNTA0OTJGNzU0MzczREFFMTU0Qzg0RUNGNzgwREEwNTA0NjI1OEUwMEI5MUU3MjQ1QzM2QjA0NDNBMjlBRURCMjM4OEE2OEE1QTNGQkI2QjlDQzZCMzZBRTQ0MTMKKzMwMEUKKzY3OTc0NjUyQkMwNkQ1OEQ3QzU5REI2OQorNDMzRjg5M0QKK0I5RThFOUQzRTNENDYxQTREMjAzMUQwOEE5Cis1OTEwMjkzOEMwOTQ4NDAzMkI0MzVFOEJFMjNBQUU3NDZDODdBQkNGNkU0Qzg1NzdFNzlBMjEwODUwNDk1NTg3MzExQjVBOTRGOTU4MUJCRUMwNzAzNkJDMDkzNzVENkFEQjk5M0E4REVBOUY4NjI1N0I1NzcxQTY0QzY4OTA4NQorNkRFMzE2NkEKKzM4QkU3QTI0QUFEMjZDNkIzMUEzQTJGNUM1CiswMUFGNDIyQTk0QzZBOUREODRFODk4MjczOERENDAyQzYwMDEyMjgwMTQzQzdEQzgyNjc0MzcwNUM3RjAxMzk4NDhGNzE1REI0MEI2QTlBNzIyRUNDRDVEOEU5MUVBQkE0RTBFMkRDMzVEQTFFNjlFRURDNzQyNEJCOUQ5MkUKKzBDMkU0Nzg2CitGMTJDM0ExM0RFQjIxNDAzOTQ4OTUwREVENQorQjlDMjIxQjBGMDM3ODgwMDMyOTgwRjJCQzVGMUNBRDhGOUI0NTRFOUZBMEFEQ0UxMEI4NTY0QjkwNDU0MjNBNzEwMkUyRkFFRUYzMzc0MjRGQkE1RDUyRkEzNzc4RUY4QTYyNTMyQkNCODU3RjhGRjdBCiswOTYyQjcxQgorOUUzNzk1RkRGQjA1OTZCNTE4M0UyRjQ3QjIKKzY1RUM0RjVDOTE5MzQzOUFEQjVBMkY1N0UzMzU4MkM5NkJFQUVFMTY3QjE4QTMKK0Q1MUUxMDBBCitFNjc2QzRCNzAyN0JBOTdBQ0Y3RDNEREVFMworNTA2NUMwODI3M0E2RDVCN0Y0MjM5QTA1MEEzOTdBOTlBNUJEMkMxQzREMjU3QzMyOTgxMDEzMjU3MjA3NkIKK0Y3Q0YyQUE0CitBN0MyRUMxMTY2NjhDMDE0QjI1MzZCNjVBMAorNDQ0MDM2NDYzQTMzMTlFMTBBMjdGMzA4MjkyNjlDNkVDNTRENTg5OUJGRjQxMTBDRTAzQTA4NTYKKzVDMTgyQjYyCis0RjE4QjVFMEFBNDAzMEVCQkNBMkZCN0M2OQorOTJCNzlDRDg5RDMzNzMyMjc5MjhFREE4NzRFOTA1NTlCOERGNUIxOEM3RTg0RjFFRjJCMDQxNzM2NEVBNDRGQTQ4Q0I1OEZFMkQ3NkQwMTg4QjhGMTFBNjVCRDc5Mjk2MEQ0MEE5RDk3OEEzQUUxRTAzNTkyRTg3MTY4QUMxOEVGODhGREE2Qjk3ODg3REU2RjA5OAorQUJCNkM3NDAKKzBBQkYxODU0NEQyMzZCNzlFRDVBNUY5RDlECiswRkRCOTY1ODFDMTk5NDhDMDM2MUMyMDQ2MTMzQ0Y1NkQ5Rjg3OTUzMUFGRkZGQjUyQ0FBODk4REE3NzlEOEZGOTAxQ0Q2QjI0NzhBNTE5M0M5OTkwNzFDODc2ODVFOUJBMkE3RThEOUE4ODk3MTkxQjhBOEU1NUUwRjY3N0IKK0MxMDc0MkE1CitGQzhBOTQ0NkNGMEE3ODYyNEU5QUJFNjE0RDRCCitGQThCN0RBQUE5Qzg2MkUwQUQ1NUY0QUJDRTIxMjg3NENDNThDQ0VBNzcwNDA3MkYzRDhERDhCMjJFRTM2NTBFQTRCMUNCQTUzNzY2Q0U2RDNFNzY2M0I4NDVGQkQ5OEQ0RTRFNUVFNTQyODY2MDFBMDlDNUE2QUJBQkJDRDQ4NEJFMDUzRUM1MDFFMTUwQjEzQjcxNTQxMkY2RjdDOTdGNzg2RDExRUI5REU4NTMwRDlBRTczN0QzNkZCM0ZFOUE5NzY1ODU4QzYxNkI2NzJENzY5QkIwQkRBQURCOTgKKzVDODU4NUUxCiszMjhCMEZFM0UwQjEwNkZCNjAwQkMzMDVCRAorNTgyMEM5OTFFQTk4RTQ3MEMyQTREN0EwRkU0MzA3ODQ4NDA5MjQ2RDQyODlGRTAwQ0VFNjU0MDU4NTVDRTIxRkNGM0I1M0REMjVCOTg0NzYyN0YzQ0IxODU1NTkwQkFGREY4MzQzREI3MUQxMUU3MEIxMjYKKzFENkI5M0M3Cis3QjJDQjVFQjgwMzYxNTQzNzJEQTVCQjJBQQorQjBBNDMzQzQ5RjhBRjhGNkY1Rjk2NDNFQUMwQjREQjc1MTg4N0Q0MDJFMjY2N0RBNEM2NTc2NUUyRTFCQjQ1ODk2RjFCMjY2RjQyMTVBNjE4NDFDMkJDQ0MyOTQ0NDU1NEU1NDVDNkI2NUUwN0I5QzA1MjkwMTA2N0ExNEUzODEyNDg4MTc2OUQxOEZGRUM2MkE2Q0FBMEVBRDc0Rjg3NjE1NEI0OERGMDNGMzY4QTNDNkY5Q0I3N0Q2MEIxMERDNUYKKzQ3QzIyNDY5CitBM0YyNkFFMEJDNDYwNDBDQzMyODExOUI4OEIwCis2RTU4ODY1MUM1Q0Y3Q0IzQzJGMjI3N0REMDQ0QTREMEQwM0FDQkFDNEQzMTE4MzBFMUNGRDY4MEJFRDBGOTMzMEM0OTEwMDE2NzZEMUFBMDA3MERBM0VBRENBMEY5RTIwQkM3RDAwREZGQ0UyMjU3MTcwQ0YxMTkzQzY0MDExQ0UyMjlCODYyNzMxNzcwOTA0RjQ4QTM0Mzk2MEY5RDYyMjk5MkRFOTgxQjFBRjRGRDhDM0RFOEU5QkM1NTEyNjBDOEI5OUI5NTYxCitBQjk3ODU0MgorNjYzMTI2QjZGQTdGQTcyMDU5NTkyNjc1RkYKKzgzQ0FGMjgyMTMzQThDREE0NDk1NDEwNjU1RkRCN0VCNTA1NkYxNTJFQzgwREJCNEEwNEQ0RTI1NDhGQzJBMTBGMjg5QjkxNjlDMDEzRTIyN0JGREU4OEEyRTY2NkVGQURDOTMwM0MwOUNFNAorQzZFREUxN0YKKzdBM0E1Qzg4QTI2QzE3NDAxQkMwRUE1MTIxCisyNURDMDJDMTY3MDVGM0ZENUIwNjVFMDExOEUwRDY1OUY2MkU5QjFERjAxNEQxQkI0REJGRUZBQjE1ODVFNzU3M0JCNDkwRTBGMjQwNjEKKzdFOUQ1RTU5CitBRDM5N0M0NDM3MjM3MTc0RDZBNjdDRDY1QUE1CiszRDYyNTNEQTQwQzYxQUNCNkRFNjI5QjM5NjQwQ0ExOThDN0UxMjQ2QUM2MjNCRTIyRjQ1RTVENDY1ODU0RTgzQzJBNTA3MUFBODcxRjIyQUQ3NENBQTJBMUQyMUI1NUVDNDU5NDg2RTVBQzA5RUMyNzUzM0RFMUU0RjNFOEZBMTE0QkNENDA5Rjg1MDE2OEJGNjU1RUYwRDNFOEQ5Q0MzOUIzNEZFMjA1Q0FBRjJDQ0EwMzhBODQxMjEzOERGMTlGRTAzQjg1OEU5MjVCMUE3QkUzNThBREExOTRBMTk5Qzg3QzE2MgorM0ZBNDU1QzMKKzI2NkE0Qjk4MkFBQjMyRjczRDE5QTg5RUE1RTgKKzkwMTRBMUMwRThBMkUwOThGRTNENDQwRDgzNERBMDQxRTJDNThENUM3NzVDMUI3NzMzMjRGMTlGNzE4Q0E3ODBFMzhGQjdBRTU5QUYwRjFBMjI3QUI0RDRFMTY3MkMzODdFNjU2QjQyQjA4ODAyQUQwQkQ4MTk4NjNCQzdGQUM5MDYxNkE4REM4NDQ4OTUwNEI4OTI2RDBFOUQ2NTc5QjYzN0JFMzM3NDA4QzREMjQ2MUJFMTgwNTdEQTc4QjE3NkNFNTYyNTAzMTg3Q0YwQkJGRjQzRjFCRTM4RTJCNjlBODcxN0Y5NzRGMEQ5OTJENEVDM0Y5RUYwMjM4QworRjc1QworRjcKKzNBNEVBNDY0CitDQkExRDRERDA3OURGNjQyOTlDNjgwN0I2OAorMDU1MjRBNkQ4Q0YzNzkzMEI0RTFDRkU3Mzc1MzhFMzEyQjRBMDhCNTI1Njg0QzM3NENDNUVFNUI0QTU2MzZEOTRENUJBNzE4NTVCRUY3QTJDRDJFMTAyRkU0Nzc1OUIyOTVDMTNGQzQxNUJDMDU5OTNDNjk2Q0U4ODZBRkVBNTc0MDM4NEI0QkYyNUU3NTVEQjkxM0VGOEMyQjU5OEVFQjQwQ0NGRTBGOUFDQTYxRUM2RTMzRkRGRDcxOTYxRTNDOEFBMDIxCis5MDQ0REI1RQorODI4QTBGRTI4RkNCNDg3MTg0NjlFRkU1MjEwOQorNzlBMThGQUEzQzM0NERBODNGMjU4RUNBNUFDMzVEREYyNTYxQkNFNkE0REZFM0Q1MzZBNEUzRjQ0RjcxMTM3Mzg5RTE2MEVBQ0Y0NDRCM0JBMURFRDVCQkVCOUU0NkExNTVBRjM1MzkxOTI3MTIyNzY5NEZGNzlDMzU5Mjk3NzBGRTY4RTFDQjAyRkI4NUE5MUY0NkQ5NEY1NTU1QjkwMTUwMzdBNkI2RjQyRTA5MkJGRkMxM0FEOUYxN0FEQkQwMTE4QUY4QTZBOUQ4REQ5MjZBOEU5MTMzNjU5RTBFNTQyMzlCQjNBQzc3OEMyRDQ2NDM2RjU1QzVFQ0Y5CitEMkVCMEE4RQorNDlFNDNDNTY5RDg0QjMyNzhEQzA0RjFFMEVFNworMjUxQTAzRUVFREYyOTRGNTk0NDJGNTYwNTEzQjFFQkFGNzM0MEE1QzBFRTJDNDU4ODA0RDQwMkM1NDUwMEI2ODlGNDk2REU1QzE0NTY3RkMzNzdDOEE5NjkzNEIzNTZCRkRGNDk5OEE1RjBDREVFNThGNDk5MjUzMjkyQkIwMTVCRjhEQ0I1NkU5NjlBNEU3MjM1REYzNTRBMjJFMUU1QTY3MEIwNTlBMjgzOThFRjlERjEzQTZCQTY5M0E1QkQ0QjJGMzJBMTMwRDRENTNCQzUyCitDQjY1MTFCRgorRDM4OUI2ODhBQzE3MUZFRTA5MEZERjZBNzlDMworMDFFMDA2MDAwM0I3Mzk2QTg0RjBBN0ExMTVBQzNGMTdFRDhBNTNGQTY5RjI2NzBEQ0Q3QURCOTQ5N0U5OTdEMkU5MjhDNjRDMEJCQjc4RkM3MURBQkNBNUVEMjNFNkYyNjRGODI0MTJBQ0UxQjA1MjQ4REY5Nzg1NTNBQTZGOTBCMkU5QUQxMjQ0MkY1QThBOUQwRTBDRjUyNTc3RkQ0RTlDNUVERTgzRUE5NTM0QjU5OTZDRjU1OEMwRTY2Q0E0OEQwQzM0MTQyQ0Y3REIzODE3NTUwOURFQ0U5OENEQURBQ0RBMUU1MTk2RDEyMDY4QkQ1ODM0QjU1MjVDCis5RThECitBNUZCQTgwM0FGNUNFNjVBQjA0RTgzCis2Mjg2RDk2RQorQjI1REM4MEE4OEJCREJCQTZBOTJEMjlEMTkKK0M0Q0FEMzFBMzY3QjQzNzMzOTg1NkVGMzkyNUNFRDA4NDQ0NTFDNDczMTk4NDQ1RTQzOTUxN0Q2ODdCRUYwRjUwQzJENDExQUEzOTkzNzU0Q0VGMkY5Q0RERjUyN0NBMDM4Q0FFNUNCRDBFM0U0OUNBRURGNTUKKzdEQjNDMzlBCis3ODNFMTcxMkIwOTI0RTVEQzI3RTdFMENBQworRkNEMTE0QjBFODIyQkQ3ODNFRjI2MTFFRDZBNDJEM0U3QzM4MzYwQTE4NDZCNjgxOTVCMUZFREQyM0I5NDQ4RTRDNTEyNUZGNTAzNUU2MDMwRUM2NjczQjdFRDY1N0NBOTlGOTQxOUE5OUIxRkU5ODI1QzgxRUVGNjkyNEI3M0E5MTE2ODc2NEI4QzZFMQorODFGODFDMEEKK0U4QTk2NjExNEFGMEE2RTNDMTQ5MzgwMTlGN0QKK0FBMzVFODJGRTBEOUQ2QTUzQTg1MUJCMEZDMUY5NDRENDMyQUIwQ0ZGRkFBNTFBN0I3MjdFQUNDNjlENzc5MDM3M0MyMTBBNTA4NDk5NDMxNThGRjMyRTcwMEM5RUFFRjMwMDY2NkZGQzM2ODE3MThCRjZEN0YzQkE3MTIyNzZBOTc0QTIxNTAxMzJCOEMyNjAzQTQ4MjdGRjlEMjhEQTZBRkRFN0ZERDM1Q0JGREM4NTU2MzlGODkxNzIzNDM0N0JDQ0UyQUY1N0YxRjcxRDAxNzkwRTZDN0RGRTQ5OQorMzBDMEFDMTEKK0NFRTM4MDQ4RUI5RDdFMkM4NTQ1NjJBMEU4Cis2RTE5RkI4RERERTEyNDBERDVFMzM4Q0U4NDU4NzI4RUFENjU4OEI4QkM0Q0M4N0YzQTgyMDBDNTI1ODREMEI2NDU1OEUwRTNBRTZFMEJCNTNFNDE0MjBGNEVCODBFMkU3OUJDMTQzRDNCQ0FBRDIwQzZFNTc5MzBDOEMzQzQ5RjQ1Njc3MTAxODMwMzlFRTJDNjQ1MjE0REQwODRBNjVGNkJFRDA3MjZGRUE4NDdDRjlDNjRDNDA5Cis4MkQ4M0Q0RQorNzZGMjdBQ0M2MTRCNEFBNjVFMjdCODZEQzIKKzhEOUNBNDY3RUQwNTlGMUFFRDI4RjgyMkE3NzU1NTUyQ0YzRTU0MTkyMDg1NTQzN0Q4MDBEQzRBNDMwMDVBNEQxNDA2Mjg2MUJFNEQ2N0JDRjY1OTQ5OEYyNEM4NTQzNjE0QjVCREZCQkQ0MUNBMkU0OTVEMTc0MkQ5QkQwMkY5OTc2OTc2QkQzNjA4RjUwMTdBRUYzRjJFM0VEQ0FCQzlGMDg0ODMKKzQ1Q0E5NTc4CitGMkFBRDFDQjI1QzVCQUExNjVBNzMwQjY5NDU5Cis4NjQ4RDMzMkFEMUY1MEFCMEYxNUFFRTA2OTBDQzUyMUVEMjE1QzEwMTA5QTdGMUZGQjcyMjc4MTQ3OUIwNUZERERBQTc2NDlGRUUzMjJDQjBCRThGNEY3MDIxQTMwMjZCMTgwOEU3MDNBQUYxNzJDRDUyQUZBNkI3MjBDM0FEQTJCOTg3QjRGMUJBNjQxNDExQ0YxMDU4MUQyRTFBRjQxQkNCMERDOTgxRTc0QTk1N0ZBMUYzNjIyQ0QzNDU1RUI3OTY3OUQxRTRCNjZFRkRERkZDMAorREYwRDMzRDkKK0ZFNzE1NUM0QTEyOTA1RDM5MDZCNThBQzcyMzYKK0ExMzBDNUJBMDE3MzNDQkE4REY1QjlBNEJDMEJGRjJCQzg5MEExOUE4ODBERDlCMkZDNDc2NDcwQjczRjlEQTMyQ0QxMDcyN0IyQTc1M0Y0NzIzNzlGQzMzOUIyM0UwNjUyMEYxNEU3MTMyQUFGNDcwNzY4OENCQzZDMUMzRUU4RTI2NTc5MkQwQURDNDVGMURGMDJCMDhFNkY0Njc1NkQ5MTlBMkRBRTE5MDIxRDE4MEY2MkM4MjRGRDIxRTg1NDhDMjc3REVEMkJGRTgyRjkwOTczRjI3RjVCMkFBNzlEMDhFQ0I0NUVDRkYzQUExQzk4NkE3QjUxNTQ1NgorNzIwMEVBNEUKKzQ4RkE1QjM4RDZCREU3QUYxMzA1REZENTgxRTkKK0YzRjY4REM2NEY0RUNCOUFDNDdBQjU4MjcxQTFDRkUzQUNBRjQ3RkQwM0EwMTYzQjkwNTQ1RkQ0OTJBQkNBM0U1NzQ1OUFFM0RCMzU4QkM4QkI2QTAyNzg2QTk4OEQ3MTMxMjkwQkQ1RjU3MjcwNThGMkIxREQ2OUJBQkYzN0IwMDJBRDQ2MTE1NDAxQjQzMkY2N0EzNkRGOTQ1MkFCRjg5RThBMjIyMDkzM0ZBQTREODFEQjRDMjZFMkU4NEUxN0VCRDA3NTk4RjRGMDNFQ0VCOEFGNDkyODUzMzc3NDUyOURDNEExMDNFQTYyN0E2QjIyMDA2Nzc1QUJGMworRTdGMAorMTRDMjU5CitDQjczMDZGRQorODYxREJFNTFDRkM4Mjk5QzY2MjUwRTBCQTYKK0I3QzYyNzczODRDMjBGODc5ODdENTBEMUVCNDhCMkMwM0EyNzIzRjYwNTNCQUNEMDk5MjMxODZFMjJFNzczRjREMTY3NTM3OUVFMjk2MzFBQjI2M0IwOEUxNkVBNjYwQUZFRDM4MzE1RjdDNkYwMUJBNTFDNTA4NTgxNDgwNDkyQzAwM0U5NDQ3QTBEMEREMjA2NDg2MUQ1RUMyQjEwQTAwNQorMDE0RUNCQjMKKzZENjgwNzREMDQ5MkFCQzI1MUZBRTU4NDAxMjIKKzcyRTIzMTk4OTY1REZENkU4RTQ5ODk5RUY5N0Q1QjFBNzM4NTVBRTA3NDEyNzVCN0U5NTMzOTBFOTAxRkJBRUE0NkY5MkNFODY1N0YzNjk0NDhDMEZBMkE4MjIxOTBERkM0NDUyOTIzQzgyQzE0NzE3NUFGQkJFRjM0MzAwQ0E4NjdGNDUyQzMyNUQzN0NFMEMwNzgwN0RBQjEwODVBNTlFNjE5NjhERDFCOEU0RTZGODBEOUVGN0Q5RDdEMzg2REYyNkZDN0IzCitFRDZBQUIzRgorMkZBQjI3MkMzRkQyNEEyRkQ4MjJCQ0FDQUMKKzZCMjg0NkVFRjFCQjgxNDYyNjk0RDRGQTY4MTA2OURFODJGNkU3OTQ5QzJCMzFBOUIzNzhGQkJCNzczNzY3RjUyODNFQUI1OEM4MjM0MDU3OTJBOAorQTc2Mzc2MjcKKzc1OUEyQzdCREUzMTc1QzEyQjk3Qzc4QTI1CitDNTcxN0JGMzg0OTM1MTA0RDhFM0FENEQxOEI3REIyNkE5MDNFQkFEQzBDQUFDNUQ3NENENTk0N0IyQUM3RjJGMzdGNTU2MEY4N0YxRkJFNjVBQjQ3OTMzCisxRUJBNjA0OQorQTNCOUI4MzA0NThFNjgwRjIwMDA0MzQyRDAKK0IwNTI4M0U2Njc5MjAzNkZDQjgyQjg0QzBBOTdGNTk5RDk4MDk2MUNDQzEwCisyMTFENUNGRgorODBFMURCQkVERDVFQ0UwQ0Q2N0E3OEZDMzc3OQorM0UyODlDNUJDMERFRjRGMEM0NDU2M0ZCQzQzODJGMkI0NDU4RDEyOUE4OTZGQTkxQUFBM0M2NzkwNTBGRUQyMjE1RTU1QTM0N0Q3MkU5ODkzODdDMEUyQjFGQzhERTYzRkZEMzBCNTA2MENDNDI5QkFBQkUyNTRFODZFRDQ2M0VEMTU0N0M4REU4NDU0REY5OUYxMUM0RDk5OUExQzI4QUU2NjgxMzUyODAyODc5OUNERTM3MTYzRURDQkFBMzlDMjgyMEMyRTQyNTBFMjEyNEY3NjJENTlGREM0MkUwNjUyNDY3QjI4N0RERDU2NTE5M0IyQzU1RTI2RTZDCis3NTM2Cis1NkJDQ0IKK0VEOUE4Q0ZFCis1MUU2RkExRjVBNUM3QzRCNUUxQ0FBODQxMAorMjhEQ0QyQUMyMzNCMjhCNzU1NzVDMTE1RDIzQ0MzMEJCNzcwMEM2RUU0ODY1RDEzRDlBNzA1MDEyNEM2RTVBQTBEM0QzNTlGOUQ4NkJBREZBMkRGRkJFRTczMzIxNDBDNTFBMzM3MTVGNjM2ODZENDJCQ0E2NUE1MTYwMzc1NkE5RkEzRjNDQ0JCNEE5RkUzMzMwMDk0QzEyODk1MEQ1NDAyOTYzNDgzQ0JEMjI4MkMKKzlDRkI2QkFBCitGRTYxRjNDQjVGQTgxOTgyQTRCNDdFMTE5NAorMTNERDk1NTY1MzYxMzU2MkIyRDgzNjQyRTg4OTlGNjc5QzRBODMxRjkxM0ZDNUEzRTNEMUY4ODdEOEJEREQ5MkREQThENDBCQUQ2QjVDQ0JENjlDMzFCRDkyRDZBNTA3RDYyOEE1RjEwOEJENDQ4NkE2QjM0QjMzRTE1RUI1MDM0QkQxNjZENURCM0U1RUMxQUNCQTM5RDE2MUUwMjk5M0JDMTcKK0IxMzJEOTkzCis3NUI3NDFEQTgwNzNDRkMyMDVEQ0ZFNUNDQUQ5CisxNzM4MTY3MEU4QjZCODQwMTRDRUYzNTAwQUQ4OEVDQTIzQzgyMjVGOEJGRkEyQzhBQzI3QjlERkZEODEzRDRGMEI2NkUwNkYxMzIzQzI1NTg5QkUwNEQ4MDZBQTc1NjcyMkI4MzA3OUUxRjI0NUI4NzFFRTA0QzlCQjYyMDc3MkQxMjlDQjg1M0I4RDFCMjlGNzJCOTZFN0RBMzlCQjVERDlBMDY4MjhFQTY1NjIwMDAwOTNFNjg4NzNBRjRBM0Y1NUE0N0JGODUwOTdGQzhBRkRFQzBCRjBGQTk2CisxOUE4QzczNAorREQzNkEwRTVFNDEzQUZFMkJDQkMxQkY5M0IKKzFGMEE5MEMwODQxREQyMjRCMUZERjVGNTMzOEU2QkY4Q0JCOEUyMUUxMTg1N0M4RTQxQjREOEJFNzQ4MEFDM0IzQjlENUVEQzk5MDI0QUY4N0ZDNzg4OTk0NjFDOEE0MTQyRUZERkZCODUwMzREMDY0NzEyMzFBQUJDNTY5OUREMTE5NTVBODNGNDYxNUIxMUQ0MTI5NENFNDBGNDU3RTBENTRGNUMxMjJGOTM5NzA4Q0QKKzlFMDcxNjRCCis3QTI5N0FBNTdBQzVCNTgxNjA5ODkzOUYwQQorRUY3RTY0RjZCNDY1NjA0NkE5ODdCQjBFMUZEMjk2MzQxNUM5N0JDQkYwMTk4RDY5QkQ4Q0ZDMTE2OEYzRDU4QUQ0NjM5Mzc2RUU4QUE2QjVCNUZCRTY1MkE0MDg0NkZEMjdENzlEQjBGMDkzMDM0NTcwNUEyNjIzQTVCMkZFM0UyMkYxNkM4RTM4OUMwMThGNzY1MzdDNDBFQjEwNUQ3Q0ExNDIwMUUyOUYxQjg0OTFCNkVDNkM1NgorNzRBOENFNDcKKzRGMTY0RjQ5QUJBRjA1OEJGQkRBODU0Mjg0MTkKK0RDNzRFNTM0QkIwMjMyNTUzRUIwNDVCQjI0ODY0RDlGRURGRDBEMzdEQjJEODJCNzBDRDI3ODc4NEMxNzg0NDI5ODEzMEE5RDZENzhCMkQ1Q0Q3QjMxN0U1NzBBRjZDRjJEMjQyQzY1QTI2QjIxRkFBRTM3QTM1RTQ5NEQ1RDBGQjJDMTlDNjQ2OUM1QjVDMkZCQ0ZCNjBCNkY4ODgwQkJEQkM2OTAzNDAwNzJCODE1Q0I1N0Q2MTQwMDY5ODg2REE3RDlGOENENUU2MDRGQzREMkIyOTA3N0Q1MUEwQ0VDQjNEQjQ1QTJDMTY5MzVFRDk5QkFFODUyNTE3OAorQkY4RgorODBGMDRDQ0VFQjg1QzRDODUzMUIzQzVERkQ0MzlENDYxMzc0REU5QkUxOEVFRUM0NTdEMEQwRjBDODYxNUNFNTUyMzk4OTJCOUNDMjFBQzJBNTg3NTZEMzk1NDM5RgorN0I1N0EzNTUKKzkxQTA4MEQ1NkVBOEU0OTkzM0VBOUVERUYzQjEKKzlGQ0U0QzA4NjA3RTY1NzJBNjM4NDUyN0IwQ0Y2RkMwMEYyRUNDNDVFNDY5OTY3Q0FBODUxODM0RTkyNENGREM0NzYzQkE3RUFDMjNFNEY3MTJDN0E4RjU0MjcwQTQwMTM4M0NEMDE2NTQwQjhGNjM0MTlBNkUxMzQ3NzUwODdFNjU4NEUxRjEzOUZGRjI5MjVDOTU4NkREMTFFREExODYwRjg4MUQwODgyREUyMkE0Qjg3Q0VBNkIxRUE4N0MxMDUxMDFGRDRBMkVDQzc0QzE1OUE2NTZFRjE1Cis0Q0Y1RTlGRgorQ0YyREJBMzE3OTlDQzAwNjdERjMzNEM0RTUKK0FENDRCRjdGMUFBMDk5QzQ2NTBGQkFDMUVEMkY2ODQ3NDc4RUJBM0ZDMTVFNkU0QzgyMTUzQTA1OTg3MkIwQkM5MjVFNUM2RERFRTlBMzRCM0REMkEwOTAxNzU3MTQ0MTJCMUFEMzREQ0JFM0Y0NDAxODY3NTc1MTI4MjEzNUQ1NkUxMTE2MEM5MDc3MEFCODE4QzYyMjQ0NzAyRDQ1MjgKKzhDRkMyQUI1CitCQ0Y1NzJCM0M2RTJGNTEyNkMwQjM1QzY5M0I5CitBRDI2MUMzQzY0NzZFMEFGMkVEQzA4QThGQTM3QkNGNDc4NDM0RUU4NkQ0MjA3RDAxMTlDNTdBQzY0QTVDMzc2OTJEM0VBQzY0MUQxODEyNTI5Q0FDRDQ3MjlFREY4MTM5N0U2NzFBM0QyODZGMzA3OURGMUMxMTg3QkQ2RTAxQzg1NzFGNEY0NEI0MTc1M0ZGNTM5QjlCRDg0MjlDQ0M2QzNBNTE1Q0E4NTFCMTdGQzFGNTg5QTMyMTRFMDZDODNFMjYyRjJBODg3OUQ2MTM2NURFRjQ1OUZFRDExODFDNjYyOEIxRTk3RDMzQzUwMTMzM0M1MDIyQzI2OUUKK0VCQ0IKKzAwMTE5OUZGRkE4RUI2NkYwNzk5RTBBODcxNzM4QzA3QTRBQThFRTlBRTYyOTczQkM4RjhBQjVDMjVERTgzNUM4NUQ1REYKKzREN0JDRDRECiszNUZDM0U5N0Q2NTAyODYyRDg3OTBCMzAxRQorOUNFNjJCNzhBRkE2MjU4QUQ3M0VBNzgwOTJFOEExNjY1RENEQzcxNkQ2OUI5RTg0OEY5NjVEMzVEM0IwQzEyREJGQTMzNkJEMEQ4MkQwNDFFQ0UzNjg4M0REQ0U0NzI1NDExMzNCRDI5MTZGCitFNzRCM0E3RQorRjlDQkRDOTJDMzAxMTQxMUZEMTA1Q0Y4MjhBQworQjA3MzBGNDY2NTBDMUFEOUFBRUEwRUU1NkM1NzdFNTRCN0EwRUQwMzdFMzg0RTIyQ0ZGQzU5MjJFM0U4QkE5NDYwODk0RENBRTg2QjVDQjE5N0E1MjFFREZBMDhCNUQ3NUYxMkZGQTI3NjBFMEVBQUQ0RUZBM0RCRThEOTczMzNGQjQ3REFGRjZFQjNBMjFCNDc4NDkyMjc5MjczQUM0MDFBRkRDNjQ4ODA0MzUzMDhCQzQ3Q0YwRTA2QTVBM0Q3RjM0MDY2QkUwQzBDNDNDNzNERUFBQzEwODYxRTZBMTg0ODkwNTgzNDYyOEUzREQyNzlGRUEzRDRDQjI4Cis4MTAwCis4RTEwNjZBQ0I0MEVGRDE1QTc4MEQzRDJDNEZDQzE1MDNEMkExRjBFRjE0NjJGMjUyQzgxODk0ODlGNUQ3OQorOTc2NzBERkQKKzkxODc2RjdGRjFCQkMyM0Q5NERBMDE0OEU4REQKKzZBNDc5NjJBODQzMzdGMTgwMjBDRjUwOUZEMzEzRjc3NUI4MzFEMjQzMzFEODcwRTcyNTdDODlGOEMxMzI3QUIzQzgwODU2QzlDQkIxNTVDMkNFNjQ1ODAxNkI5RUZCN0Q3OUYxRjY1RDAzNzhCQUFFNzZGMjVGQkRCODA3MjRGM0VDQ0FGOEJBRjE4Q0JEMzU3RDNFMUI0ODg5NjM3MEFGOTBFQ0U2RTAxQ0M0MUFDOEMxRTM1NEIyNTNEMzVCQzY1QjE3NUQxNjQwRUI5ODBCRkNGQTMxQQorMkZGQ0NCRTUKK0U3NEQ1Q0FEMThCRTgwMjFBMUVDMjZFRDY1Cis4MUFGQThCNjc1QkUzOUNFRDUwRDYwQjc3OTcwQjc5OTM4NzZBQzQ0QjI5QkQ3MEQ4NEM2NjdCQUEyRjAxNDhCQjc2NDUzNDcyNjM2RERBNzJBQzQ2QzFFREQ4N0NFNDU4RTU1M0VDQjc0MzQyNkE3QTYyMkU3MTU5N0IxM0NFNzU0M0U5NzkzODFFQQorRDkzRUE2N0IKKzc5QjlGODVFMzVDRDg0NjFBMjc5QUI4N0UxQTUKKzExQTYxNjQzMzgyMEE2Nzc2RUE1NjNCMjg3Rjc3NUU3NzcyREFCNTlFRjZCQ0JEQ0E0QjY5MkQ4MTY3MTMwRDFFRjFCNjVFN0RBQ0Y5OEY3RTVCQzAzRTUyQzE5M0M5ODkwQ0Q4Q0I4QURGNEZEQzU0RUYwRDk2N0U0NDRBMDAyOTIyNkYyMTU5MDYzOTExMzk3MUU1MzMyMkU5MkIwMzI5OTVCOUQ3MzI1RUI3MEZBQTI1RTU4RjZFNDI2QjY0NTQ0Mzk2Q0FENTREQkJBMEU1Q0Y3MTEyNkZEOUMwMjY0M0NDMEFERTg4QTE2RjcKK0QwMTI3NEIxCis0NjczQTdGN0Q0MDdGRjc1REIyQjUwNEJENkY0Cis4RDc5Q0JCQTRCNUI2RDY4NjkwRkE5MjE3MUQyMzNGMzJFRjA3Njk0M0Y1MTZFMkRDMDNDQThFQzUyNzUxMTg4RjkxQkUxRDE4NTFFNTJCM0REMUI0RUQ3Rjc2Mzc2QTcwN0U3RTBBQkZBQTg1NkUxNjg1MTIxNkVCNzFCRTlBNTE2NTkyNEI0MjIyREIwNUVBMTVDNjZCOEFGRjcxNkZFRjBGQkY1OUNCNDc4RUZGQzhENjRGRjEzMDZFODNEN0JCRkU3MDk5REZCNzA3OTZCNzMzOQorNTNCMzlBQ0YKKzVFNzgwOEMyQUE3MUI0NURFMUYyODJBQ0Y0Cis3MTVFNUQyNzJBRjFGQTI5NUY0OTY5QTc2MUQ5RDQzMzc1QzcwMjIzRkVFNzdGMzdFMkY0NDAzOUVEM0UwNTZGM0I5MEI1ODgwN0Q5MDBDRTQ4RjMwQzBBOURCOEJFQzY5QzA4NDhGODM1MTA1NUVCOEFBNDI1MEFFOEI5RkI5MEVEQUVCNEEwMEEzODlBODRCNzUxMTg4MTYwN0U0QTYyQkE3QTlBQThENkMyMDUKKzMxQzJEOUFECis1Qzc3ODJEMzE0MEVENTA5OTRFOTQ4NjdGREU2CitGNDBCOEVGOTFBOUY0Njc5NTQ3Q0JEQ0QzODcwM0Q1QkU5MEJCNDI3RjE4NjE2NTExRTRDQ0VBQTlDNUY3MTdDRkY5ODVEN0Y4MDQzM0M2RjgwMkRCMDg3MjA1NDcyNjJGNEU5MDJCNzg2MTc1M0E5MkUzQTRCNkMxRDM5QjE3RDcxMzEwOTY3NDg4NzIyNDkxNUFDMjMzOEE0NzlBODM0MkQ4MjkyQjFDMDVDM0U5ODFBQTdFQTlFQjg1REU0NUY4NjA5RTMzNjA0MTIwRTRBMkJCRDlERTkxRTcwRUJDMzQ1RTk2N0M5OEU2RDgyN0M2RTc2ODdGRgorMDI5RTAxNTkKK0NCNkFGOEIwMjI0NUU0QzFFQTdGQzMxNDAzCis3QzdFMTNGMzdBNzU2OENDRjA2MjU0NjhDRjgwMUU4MzNGNDU2Rjg3OUM0RUZBM0I5REE0NTBEQTQ1QzQyRkU4NjZDMkMwMDRDQjcyMTA3NkJEQjY2OUU5RTNCRUNGMzMxMkFBRERDRTBCRjlGOUJGRkJCMDMxRTQzQzk0ODZDRDM3REVGNDdCMTIKKzMxRDdFOERECis2MUY4NTEzQTI1ODVCN0VBRDdDODREMzMwMAorMjAyRkFCMjg5RjUzOTBFMTI3NzNEQTdEMzU1MEE0MEFGQkYxNjc0MTgyNTA2NUE1M0JGNDI1QTdDMDUyOEI4Qjg0OUFFQkQyQTlFMzUzMzBCOTU2REVGOTlCNTU1QzdBNkI5MDhGQjMyOEI3RkQxOEY4OEE5QkMyN0RENDJFNzZCMzhCRjQzQTIyQkU3NDk4MzY3RDczQUQzRkREQjdCQTdENzQ5QUIyRDg4MzdGMUM4M0ZCNzdFMjdFQ0I2NjYyM0QxQQorQTM0MEMyQzUKK0E1Nzc4QjQ0MkJGOUFBRTc5NEYxMDMzMThCCiszN0JEOTZDOUQyNUE3REVCQTk4NUM4QzYwRkYxOTE1QUE1MTRCNEYzRkFEODNDOEU4MTg1RDk1QjhEMTYxQTJCRTU3QzdGRjc0NDBBOUNCMTI2NzVCQzMyNjVCNjY4NEM4RDQyMTIwNENCNDc2RUI4OEE1MTdFQ0Y4MUIyRjQyRjIxQTM2Njk4RTM0OTQ3MkJEMzFEMzM0OUZGNUQxQUI5RDA0QTkwNDg4REE3NjU2RjMwCis5NTNBODQ1MworOEVEQzYyN0RFRUFFODQ0RThCM0Q1MkE2NTZCMQorQTU3RDhCREI0NDJDOUMwODk0RUI4NTM4Qjc1RDFENUVFMzY1RjdFOTZEMDUyQTFFQjU0OUNBQUNGREU4MUQ1MzhFNDJDQkNGN0NDRjBEM0FDRjRCQjFBOEY0RkU5MDhERTM2MjczNTk0RDQyRDA1MTRERUE2QTAzOENGNjdBQ0ZBREMzMEJFMTU4QzRCNkFFRTc4Q0E4ODY3MkU4Njc5OEFGMjBCNTE0QUVENkIxRDc3NkE0N0M4NEZCQkVEMTFGM0ZGMkJDQjM2MzNBMEE5QTIwQkU3M0NBNDRCQTA4MjI2QzBDODYzNkNFOTNENzY5MTFEMDVCQ0EyQjYyCitBRjkxCisyQkQxQzg3MjhDNEQ1NjEwRjU1QTc3ODNDQjFDCiszNDcwQ0M4MQorNzA1MkU5ODQ3MkFBMkY0NEEwODRBRkU4REQ5RQorMEIxODQ0QjE2ODhGNEUyMTE3MkY4RjhFRTY2OThBMTFEQzdFNzE5QkFFQjVFNjZBRUREMERENDQwMENCMjQ1ODdGNDEyQ0M4NDMwOUFCNEJDNEY5OUVGRTg1MzEwQkQ5MkVFMUFDODI1NUIzNTA5MzZGMjk3NTQ3NDkxNkM3NUVBMkQ0NEYwNUZBMDA1OTVDN0I0NjM0Mzc5NzIzQTk0MjY1OTFCOTdDNTg4M0VGQjRBMjU3MjY3M0I3RTRFOEQwNUNBN0Y4MjBGM0JENjZFQzQxMjQ4RDE1ODEyRjU5MTEzOTNDQ0ZBNDBBNjE2MjMyQTMzQkM3NUNBREEyCitGNjE5Cis1NDc3QzQ2RQorQ0E0MTBFMTlBREM2RDNEMDlCNzVEMkYwNjYKKzQ4NDI4QjZCNzZBOTc0N0ZEN0MzNDJDRjMxN0FENjJERTQ5MUE0NzhFNUI4RTk5MkNERjU4N0EzQkVCMERCMENDMzAzMkFCM0IxNjMzMTlGRkREODkxN0ZEQkM0NTA0MThDQUI5RjhFMTVBMEFEMDhDODY5REFDMjFERUUxMAorODBENDU0OTIKKzQwODFFOURGMTQ4MTI3MzRDOEVCN0ExREM2CitBNzAyOEEwQTYwOUQ5RDUzRDRDMUM5RjU4NzZBRTc5MDZBODQwNTczQ0QyMAorMjBDQjVFMzYKK0Y4QkJCOTUyMzkyOEMwNzBENDhGRTBGNDg5RDcKKzJFRjYwMTgzNTgyNzI1Q0YKK0Y3MjI1MzJCCis2MjA4NzEyOEY1QjBEMTI2OUI0OEVFMzYxOTg1Qjk2MzJDOEM3NUVGNjY2RDQ2MTk0MUUyQkRDQkM2RTI1Qjk3OUJFOAorQjRFMEMyODA1MjI3RDA5NUE5REM4RkJFNUQ4REM2QkZEMjRBM0E2NkFGQUYxMTJCNUFCMjg0N0NFMkZDOTRDNzAxOTlFMTlBMTlBRgorMEIzRkFFNEE2OTFBODE5OTZGMjAwNzlFNjFFMjFEQTJENjQ1N0IyOTNBMjM1MEFGRDgzMDMwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ1IHB1dAorZHVwIDMgL0MwMDQ3IHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY1IHB1dAorZHVwIDYgL0MwMDY5IHB1dAorZHVwIDcgL0MwMDcwIHB1dAorZHVwIDggL0MwMDcyIHB1dAorZHVwIDkgL0MwMDczIHB1dAorZHVwIDEwIC9DMDA3NyBwdXQKK2R1cCAxMSAvQzAwNzggcHV0CitkdXAgMTIgL0MwMDc5IHB1dAorZHVwIDEzIC9DMDA4MCBwdXQKK2R1cCAxNCAvQzAwODIgcHV0CitkdXAgMTUgL0MwMDg0IHB1dAorZHVwIDE2IC9DMDA5NyBwdXQKK2R1cCAxNyAvQzAwOTkgcHV0CitkdXAgMTggL0MwMTAxIHB1dAorZHVwIDE5IC9DMDEwMiBwdXQKK2R1cCAyMCAvQzAxMDkgcHV0CitkdXAgMjEgL0MwMTEwIHB1dAorZHVwIDIyIC9DMDExMSBwdXQKK2R1cCAyMyAvQzAxMTIgcHV0CitkdXAgMjQgL0MwMTEzIHB1dAorZHVwIDI1IC9DMDExNCBwdXQKK2R1cCAyNiAvQzAxMTUgcHV0CitkdXAgMjcgL0MwMTE2IHB1dAorZHVwIDI4IC9DMDExNyBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwNyA5MTkgNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY5NjM3MjE1MkUzMTYyODNGNDA5QTJCRTNGQjY3QjZDQjJECis2QzM1MTM4ODQ4NDAxRkNGOEQ2NDQxMUEKKzQxRkI0NEQwRTg1NUFEMzlDMgorMEJDRTVDMDIKK0IyRThCNzJDQjBGNUYzQTZBRDU0RkM2OTRFCitFMUNDREI5MjdFRDcxMjI2Q0JGMEMxQzA5ODlDRDJFMTY0Qzg3MjY3OTFERTc2CiszQkFGRTU5MQorMjdEQkFFQzMwRjg0NUFDQjUzQjg4NTA5NTgKK0IzQUJERjBBQkYyQzY0ODJGMUU1MTk2NkMwRkNBMTU5NDY1MTRCQ0VGOTczNUI0RTcwMDcKKzZFRjZDQjk0Cis2MDNGOUUzRUFDMzk0NTdDMDA4N0FDRDFEOQorQTUyRDVDN0QxNTZCMzc0RTgzRUMwODdGMzBCREU2QkU4NTBEREJGMkUwRjBFNkI2NDE4MjU1NjUxRTRBNTU3MURFNEVBQ0NDNUUyRUNEN0MyRjI0QzBDMEQwMEMwN0Q5QTk1REEzNEIzMEM5CisxNDUwRTkxRAorMkVFQzU0MzBGRTc3QjZEREZFMzI3MUI4QjE0QQorNjU1MEFBMzg1RjY5MzU2RkM2RjkxNDUxMzQ0NThCMzE4RERFMkE3ODVBRUNCRUYxMDA0RkJBMzVFNEYyNkRCQjhFNjFEOUFCQjExNzk3MTg5NzQ2RjI1NUEyOUVDMkY2NzgwRTI1NjA1ODI4NDQyOUQzMUFERjU2QjAzMEZGRTFCQzI1MUZFMkVGNkU3QjZFRkFCMTEwODU4MzE5MzIxNjlBQkNCMTdEQkI0M0ZEMjUxNEUyNjY4RTg2N0EzNDE4Qzk3MzNGODVCQ0M0QUIzMkY4NEYyNQorQTg5OTU3QUQKKzhGNzRFQzhBRDJBNkM0QUQ2NTkyNTdBQ0MwQ0YKKzRGMjlDMzMxNjhCN0Y5MTJGRTQ3RDc4MUU3NkVCQTVGREQ3RjYxMUZDMjkxOEYzNzhDQzdCRjJFODFEOUQ3ODg5RjI4QTFGOTQ0NjJFRDYwMzk2MDc5RUQ5OEI0REE1N0IxOURFRjlFN0RFQ0VDMkI2OEJCM0JERkJEQjY5MzgwREVBNUY0MkQ5RjgxM0UwMDVFMzg1RkY4RkE3MzNEODdBMUUwQ0U4MEYxQTYxRjQ3NzQ1M0JEMDFCQUQ5RDNDNDY0NjIyRjc3MjI0OTBEQkQ1NEQxMUI2MUEzRTUKKzI3NjZCMjRCCitDREM2M0RGRDk3M0Y3OEMzQjUzMDVFMkQzNUUzCiszQjc5NEZEOEU3NDYxMDBGQ0Q3NTIzNEYwNDMyOEEwQUVCRDMzRTUwQUMwRTZERTZCQkRDQzhCMEJERUY0OTAyNjdDOTg4ODU5NURCMEY0REUzNjQxNDI5QzI1MDE3NUYzNzVBNkRCRkI0NkYzMUMxODEwRkREMEM4QjM4QjFBOTZGNzcyNEJCRjVDNjQzRUMwODBGODBBMTU4NEVBQjc5RjUwNTQ4OTAxODI0MEJDRURCMkE1NEY5MURDRkFCNENFOUNDQ0IzRAorQkY4MjEzQzMKKzVEMjkzMkNDRDgyOEEwOTc1M0QyQjM4NzE3QzAKK0Q5MEFCNDA2MEJDQzNDMUE0OTg1QTMyNjRBRjI4MjQ4MEE0NkMyNDAzNzFCMTgzRUE1NEQyREFBNEFCMzBDOTMxRUJENzE3MEFDOUFBNUIyRDYxMzdCM0E0MTE0NTAxNDI4RUU5RkVGMjJEQzkyNjdBOTU2RDI3OUM3OTc2RERFQ0YzMEE1Q0VDRkVENkUwQTg3NjQ0MjFBQjNFREIyNEQyNjY5MjIzMDlFQjZGRjU2OUZENTdGQ0MzNzQ4NDVBMTFBRjlERUE5MUNCOERGQkYzQjY4MTgwODY2QzVFQTNEQkY1RkQ2MTgwMjQzNTcKKzhBREM5QUZECitDMDgwMDE1QzY3OThDRUMzRDhCQzNCMDlEQQorN0E2NkU3NTRCMkFBNkFFRjI3OUIwQjY5MDEyRDE3OUFFQTEzN0QxQzgzRTE0NDcwQkZGNjRGREU4NzgxRDJFQUNDNDM1NkE4RjJCMUEyNzhEMEY3RDVGNDAzNjc1MDQ1NzdFNDFFREU2NzRENDhDMEFERTBFNDYwRTg1QgorMzBBNDJDRjUKKzJBQURGREQ4NjdFMzVEMzA1QjFBOTEwMUY4OEIKKzUxMUZGODM4NjEwMjFCREY0MDI3M0U2Q0I2RjE0QTFENTRDMEIwNTY5RTQ1QTZDNUUwMThENjM4RTNGMkI5NDM5OUZFQ0E3MzdDMEM3MTY4QkUzNTg0MUYxODVFMERBNEE3RDE1NDEwQzk5Mjg0NjY1MTcwQkVGRkVFMzlDOTM1NEVENDcxNkNGMUVDMzM0QTc0Q0M5REZERDMyRDcxOTJFMkRDMjNCNjYxQkJFNkE2QjlFNDFDRkQxNzgzN0YzODk4MkUwNjhCRjgzREMwNEQ3NTlERjhCMzgyCitFRDIxOTU2RAorM0MyMEQ2Q0Q2NUU0NkUwQTJGQjAxQUIzMzMKK0IzRkU4RUNGMDUxQjA1QjExMTNCM0JGNTBGQzFFREY2NzM1RTIwQzhFMTgwN0QxMTdDQjg0RkM3MDYxNkEyQ0I5NEQyN0FENjM4NDQ4OENBNjBGRDhBNDEyOEExMjdEQkExNzBEN0QxQkVGMEVDOUYwNzM5OUM3RTBGMDRCMzJFMkYwOTdEMTA0RTM0NkYxODBBMEVBNzk1RDRBNzgyNjg1RDVCRDlFMEQxRDA0QkZCNTAyNzU4MkFGRDIxOUQKK0Q5Mzg2QzQxCitFMkQ2QzAwQjRDQkFENEI1NTRBQkU2OEMyQTAxCis4RkFBOEM1NzZDRjREMDExMkU3NjRBNTFEN0Y3NUM4QTU0NEEwNEJEQUZFNTVENTQ1MzRDNjk4NUFDMzk3NkU5QjUwOTMxNEQ2MjBGQ0MwMDc0MTdGREI0OTE3MEE0QjM5MUI0MUYyMUMxQzA5OTQ2NjFCOTRCREU1NDQyRjM4MjRERDFDQjg2M0ZEM0ZDMEU1MDUwRjMwMkJBREIzNzNGODEwNDA1QkM2Qjc0NkI2QTg4QzgyOUI4RjU2MTFFMzYzQUNFQTcyRTk1OTFENTUwNjkKKzcwNEVBQTZGCitFMThEMDA5RTdDNEYzRDE3ODE1QUQyQUFFMzUxCitBQTVDMUE1RTAyQkUzRTJDRUJEQkIxMDZENUNDMjZFOUVGQUNDNEYxNDc2NThGN0QwM0M5QjQ4MjRDOUU5OUUyODFDRTQwNEFBQUZCOTZFM0M5RUI1RkYxMDcwRkE2MEFFMEE0M0U2Mzg0QzYyRjhCRUQ3MjZGMkFEMjIwRkVGQkI0MTREOEJCMDAyMTE2QTIzRTMxRTk5Qjk0MUJEMjA2QUQ1NDExN0EwMkQwMTM3Q0JERTJGMEM2MTY5NDZEMzJERUQ3MTM0MgorMzhFQ0RFREIKKzE0RkJCQzYwODQxMUE0RjAyOTYzMEU2MUNGNUYKKzdDOEIxNTQ2MUVGRDZDMDZDMTYyRkVGNTMzRjY4MDY0RDAyRjNENDBGMEQ3NkYwQThERDNCM0UxNTc3RTE0QTJDNUIxMEQ2OTZDNTY5MzU4OEQzNTI3RDVCQ0NDMjQyNzg2ODA4ODUyODlEODhFM0ZFMTg4NTJDRTAyREU5MjM0QkI5MkE1OTQ3OEI1QzExRDdCRDBGQjMwMTdBM0ZBNzI1MzkzQThCODA0MzEwRTQ4OTIxQzA3NDU0QzVBRjc5OTdFMEJDNEExRURFRkIwMjZEQzJCMkNERkVBRDhBRTQ4NTIyNUI3REQ3MgorMTNGREU4RDQKK0VDQUYyN0ZDMDg0NDU4NjAyOTREMjlFQ0Y3Cis4NTQwNDI3MEE5RDZCQUFFNDMwMTc5MkE2QTQwQzNCNTUwNDU0NjBFREMzNUE2MURGN0QwOTg3ODI5NkE1RDI4QTI2MTI2RjAyRjUyMDAxQTc4OTU5QzE1REY0NDMxOUM4MEI2REI2NTk3QkJGOTNGQzFBNzMwMEU2N0MxOUQ4MDQwQ0E5NzZCNzg1NkU3MzJCMQorMTdENkIyQjUKKzM1QThBQjU2MTU3QzMxRDVGREJCODQ3MUQyRTkKKzkzRjUyOTU3QjEzREY4RjlCMkE5OTgxNzFDQjIzOERGRTI1RjQyNDM4QzlFOTg1RjNGRUQyOEVDREU2Qjk2RDVFRjBFQTIxODk0MTkzQTI5ODI2MURDNDQwNzIxQkFCREY3QzMwQjQ2MjA1QjVFRjhCNzc5MUQ1OTlEOTc4REMzQjI0MEI5Q0FERURFNTc5MzBCRUVCREI3QjBENDQ2QTg2MjU1QUQzMTY4MTgyOTlGMUNBRTJDQ0U5OEMzNTk3NTg0RTA3QzBFREM2MzdGQUNFRjVBQzcxQzUwNUQzNDkwQUY5ODY1NTM3NDBERUI4NDdENDcyQkZBNjE0NQorMjY1OQorN0MxODM5NUMKKzA5NjJFMjFECis4RTc3MjIzRkVDRDRCM0VDMUI5OTJCMzA2MQorRDcxRTJDQTk5RkM3NDc3RDg1NzAzOEEwMDlGNTA3RThERDhDNTNEQkZDMjFBRkU0RkE4N0IzMzE3QThEMzQxQjRBQzhGRTIzOEFCQTQ4NjMyNjVFMUZENTFFRDZBOUYxMkQ0QzI5MjE5OTY3NkE2REUxRUIxNjhDOTBCREUwOTE0NzA3OTk5NEFEOTFCOEEyQjVDMTEzQzZGQkI1RkMyNTNBNEMKK0ExRTAwNzg2CitCNkFGODUyQjRCN0Q2MjQ2RUZGQjQzQUQ3QworRUJBQTFFOEE2QTQwMEY2MEY0OUFEMDYwRDUwNjg2NjYwOTI0MUU2QzRBOERDMEY1REY1RDlEMkZCNjVDN0VGQUJCNjFFQTg1RDk1ODg5Q0Q4MDU4MUQ3MjhGRTNDQTUyQzgzRDY0QjFDOTQ2OERFODJFODFCNzhFRDNCRDRFNUE0NkMyM0U4Qzk2RjE3MURCOTQ5NjMzQUI3NjRFMjVCOEEzMjA4QjNGQkYxQzZFRERFN0Q1N0NEOQorMEY5NDM5RkMKKzlFMkU5QzRBODFEM0Y5QjMxOTcwRDBGMTQxCis2NUZERUYxQ0JDN0U3NTQ4NDc0Q0YyQzRFRTNFNjRCMjY1NkVGMEUwNjNGQjE1REQ3NEZCQzUwN0NFRkM3MDU1RUMzNzE5MTgwMDdFNzUyODJCMkI0Mzc3NUI5NTVFOUY4NEZBRDJCRjU5NjcwNDAzOTEwQ0ZGMjNDM0I2OTQyRDZFODc4NjlENzAxQTBENzFBRDE5ODk4NEI0N0MwQ0I3RDlDOTE5MEVGRkEzOEVFODM5Q0RGNDg0QkUKK0JGQkEwMjI4Cis2N0NEMTI5NDA5RTdCOTVBMDM1NTI5OTFBQTg5CiswQThCNkNCNzhEQ0U1OTI3NEE2MTQ1QkY2REYxNTI4NTZCQzZCOTI2N0E5NzAzOTdFMTc4Qjc5RkIzMzdCRDgwMENDRDE0NkFDNzZFNkI1RkZCNUVDOEIwMzczRkJCN0QzNjBFQjBEOTZFMjI0M0UzQzM2OTNGMDUwREE3QzJDMzdGNzZCNzY2OTg5M0FCNEZGNDk5MTA1N0NCQTc3NTNDQzhEOEE4QTYxRUFFODAyQ0I5Mjk1OTM0RDQ2RkE4QUEwNEY1QUI0Q0FCNEFBRkUyNzJDMjQyNEVFRTAxNkJFMURFQ0IyMTJCOUU0NkZDOUMzQzcxODcyRUZEODAKK0MyNTcKKzdBOEMwNUMwNTQ0Qzg3QTc4RjAxREE3N0M4NTI3NTcxRjEzMzVERjE5RkY2NzA3NEM1RkUyQTA0Cis3RTRCRUEyMAorODY1RDk0REY5RTE1REE2MjNEOEUzNkQ0Rjc2RQorOTM5RUExQURBOTNGM0Q1MDk0OTI3ODNDRTc3QkM3RDBDOUVEMzAwMkQwQThGNDZEMjY2RjNBQTQxMjQ1RjZBREIwMjhDOTdEQzI3RkVERDk4NjQwRDBCQzdCM0YyOUFBNUYwQjI3MjkyQUFFNDRGQjZFRTc5OTY2NUEyRkU5NDhCODhEMzJDQTI3RjQ4NzYwNEQ3NkIxQkY3NDQ0N0E1NkI5MTJFNkZFQzgyMzM2Mjg0NTYzODBBNzc5QjcwQTE2RjUwNzYzQUE5ODZDMjUKKzk3QUQ4RkU1CitBQkU3Q0E3NzE4RkE3Mzg3MzdDRTNCNTBGMAorMTc5QjAxMzFGQzlGMUNBRjAwRTRFOEIyODA4MEQyQ0IwNTQyMjVBRTYyOTIzQTQ1QkYwQkY5M0NGMUJGMkRGMzhERkUyMjYyQ0JDNUQzOTY3N0FDQUI0RTc3OTg4QjYzQkUwNUMyMkIzQ0U2RTI0NzRDOUIyOEQwODlBNTA3RUQ3QTgxRUQ4OTdGOTcKKzU1NTY5NzIyCiszRUJBQTIxRTEzNjIxQ0RGRUZDNzBGOERFQ0Q4CitCNjMyN0FFNjFBRkYxM0Q2OERFNTEwMENBNTNFQzlFQkU0MjQyNTI4RDBCQzhERDhCRjc3REY5Qzg3N0Q2MUU0Qzk0NUUxNzY4NUNFQUJGMTEzRTJCM0YyMjU1RUEyMjQ0NjVGNUVGRjIyMDYxREMzQzY2RUZFMkEzNEJGM0Q1MEYzQ0IzOEYyRkEwMTJEOUUwMjE0ODUwREE4RDU0QURFRTZDNDk5OUU2QzNCMDI2NThBMzBBRkVEQzFDQjcxN0IwNjEyRDg3QTQ1OEY4QkQ1NTQyN0U2MkUxQTMzQjM4RjAyCiswMkQwNzU0OAorQUVFMjNDODZCNjlGODFEQjczNkEwMTExMjNDNAorQ0RGRENENUE2Q0U5NjJCNTIwQkQzODYwN0E1RTA1NDI0RkY5NDAwOTQzNUM1NjBEMkExNTRFOEVCRjAzMzlBMkZGNUZEMTA4M0YwMkJFQUYzNDMyN0UwQTVCRDREMEYyRTlBRDNDRTRERUIzRUYzRjUxQTc4RkE1NjNERDUyRUNDRjU2MDAzMjJEMUY4ODVBMUI1NkUzRTAwRjRDRDkxNjdEQUQ0Nzc0NDg1REFDRjg4NDY2MDg4RkVGMTExM0YyQzhCNUQ4RjBGMTVEODBCRTI0CiswQkYyMzUzQgorNDU2OTJDNkVDN0RCRjZBQzFDQjlENDkzMUQKKzgxREM5NzJDMDg0Q0ZGOTY2MjJBRkVBQTlENTRDQTc5QzFERENDMjM4M0YyRkJBRjI3OUM0QzUzODcxNTNGNEExQTFFNTRCQkYwOTJDNUY3NzQxRDc0Nzk3MkQyM0M5N0MyMjlDQzYwNDcwNTZBQjgxMkY3MjE1RjE5MEVCMjdEMTg1QTc5RDQ3MjdGNzIxRkI1MjU5RjNCNzFEOTQyNjFFQTg4RjZBQTU0RTdBMzZBNTIKKzE5QkJENEUzCitFRTBFNDc2MjA3QTY1MkZBNUUyQUIzQjU0OUJCCisxMjgwNTNCQzlDMzE4RjhCQTMwNDZGNzI4MjAzQTRDMkFBMjgyMTEwNkVCRjMwMDJFODI2MjUxQjZDNTcyNjJBNkIzMUE0NjkwRDRFMDBGQ0VENDc5RjMxOUJFMkVEMEEzQjU0NjlDNjE4MzNFNkU3RDk1RDA3N0E3MzY4MjkxQzlBNEZGNDU4QUJCOEY2MDZDOEJDMEM2MzYzNzFDRTk4QkI4RkQ1QTk4OTY5Njg3MkVDQjhERTFCN0VFN0E2ODM5QTc3MzI0OEUyQjlGODcyRkEwNzgwQThGNEIyMkFDNTZBM0RGQ0NGMjMwRDcxRkUyMgorQzhCMTEzODEKKzYxQjJFNjlEMjhGRTZBMjlBQTI4RUJBNkFBCis4NThBNjJCQTk2MkYxMUFBODJDOUIxMzI3REU4RTE1QjI5OUQ4MjFDQzgzQUFDN0MzRjVFRjlDMDUzNDNEOTBBMjE0MENCNUE1MTQwMjA2MzQ1NEU3MzZDOTA1OTEzMTgxOEMzNzJCNjUyNEY4MDg0Qzg1NEU5RjcxM0NCNEFCNjBFMzg5NjVBCis2NjM3RTExOQorQjcwMEVFQUM0MzI2OTcwMEM3QUJFRTFFMTQKK0M2NDM1MjkwMDFGNDI2RDcxNDZBNjk4NjM0QkU3MjJBM0IwRTQ1NzYxRjMxQzk5NTkzMDUwRTY0NTg4QTMxMjUwN0YzMzM2RTJCNjU4MDM1RDNFMUVENjg4ODIwN0NCRjZGOEMyOURCOUM5MzM0QjJFRjdGNUFCNDU1NzhERjk5RDBFNkM4NDQ0M0NCRDc5MjY4Mjc2MzgyQTgxRDM0NUQ2QzgwREJFMENBODVEN0I4MjJDQzExCis5MzE2M0REQworMEMxODg0MjI4RTBCNDIxNERGQ0MxQUE0MTU3RgorN0NDMTExOTE1OTc4M0QxMQorRTM0RkMxMDMKK0UzMDBBOTI2OTcyQUFFRTRDOUNEMjQ0QzAyMzAxRUI2M0EzRTk4REYyREY2MEZCMEIyODhEMTY1Q0QwQTM3OThDNDEyCiswQTY0QzgyOTE1QkYyM0U0NUVCQUFBN0REREQ5N0I2N0Q2QTY0NTQ4RTcxQTY3NkMxM0M4NTcyRTI4MkU5NTc5M0MxNjcwM0U2QTIyCis0MTM5QUZCMEI3NTVFMEEzMTEwNDExNTE5ODM5QUJFNzlBMzVFMDU5MDM2RTNCODhGNkZDMDIKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwOTcgcHV0CitkdXAgMiAvQzAwOTkgcHV0CitkdXAgMyAvQzAxMDAgcHV0CitkdXAgNCAvQzAxMDEgcHV0CitkdXAgNSAvQzAxMDQgcHV0CitkdXAgNiAvQzAxMDUgcHV0CitkdXAgNyAvQzAxMDggcHV0CitkdXAgOCAvQzAxMDkgcHV0CitkdXAgOSAvQzAxMTEgcHV0CitkdXAgMTAgL0MwMTEyIHB1dAorZHVwIDExIC9DMDExNCBwdXQKK2R1cCAxMiAvQzAxMTUgcHV0CitkdXAgMTMgL0MwMTE2IHB1dAorZHVwIDE0IC9DMDExOCBwdXQKK2R1cCAxNSAvQzAxMjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE0NCAtMjI3IDc1NyA3MjhdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNUQ2MzgxNUJFRjE1QUM5OTE5RjI5Rjg4QTcyMkU1MDk3MDAKKzFFQUE5N0ZEQjk4MDBDRTFDQzZEQUNBNTc3MUIKK0RENUFCM0ExMUVEQTY2NTg2M0JGMTZCMEZFMTlDRUM4NDA1N0FBNDZFOTU5MTNGRjRFN0M1NUIxMkY3MTAyNTdGMkI3NjQ4NUM0MTk1OEE3MjM1MDhFM0QwOThEODBCNzk1REQwOEIwMUQwQ0FCQjIzRjFDQjg1NjNGNjg1RjkxRjY4MkVEODQ2NTk1ODE1OTJCRTgyQkFEMjQ0RDRBN0MyQjMyMDc0NTFCRkIzQTNGMDY3NjJBRTNDNEJFNDlCNjAwNkM0RkZGQ0M3MzVCQjYwRjUwMkRDMzlDMDcwNDA4QTNENEE1NzZDOTg3QjdEREM3MDMzNTFFRDM1QQorREIzOAorN0M3RDk0ODUxMkU3MzM4NDk4NEQwOTlDMDgKK0JERTM1RUFBCis1NjVBM0E5QzYzNDUxMEY2N0M3MTAxRERDRQorNUVFNjlDMUYwNkNGMTUyMzk2MjQ1MDVGNkFFNzM0NDBFRDlCQTJFMUQ2NEIwNjY2OERBREMzN0ZFMDc1QTY0QkFEN0U0NUFCQzlDNDNDQ0U1QTg1QkJGRDFDRUYxNDY3MkQ1RUMxRDk1OThEN0NBNzlGQ0ZGQzRGMTRGNzI2OEY0QzA4RTA5RjE0M0EyRDlCNkZERjk5RDA3N0M3NTc2QUVENDJEMEU5OTNERkY3OUIwNzYyQzAzRkRBQUI5QzhGCis2Q0FFRDI1NworRDZDODJDQjBFODU1NUY4Qjc3OTY5REZDRDcwMAorMjYzQ0MwNUYzQ0EzQkQzQjRBQTE4ODk0MkMzRTgwMzFBOUQzQjFCNDIwMDFEREI0OTkyOEUxMTRCRDVEM0VDMDAxODg2RDk3RDlBMUM4NDFFMDYxODUzMTAzREFCRjYzRTEwNjExRjM2Q0E2QUM0OTRDOUY0Q0I1MjY2MTlBQjVDMzYxNDJFQTFGMDZFNkM1QTVFMTQ0Rjc3MzgwMkU2NDFEQTY4OTRCNjBFMkZCNDczODlEMjQ2QUM1NDhEQzk3MzVFMkQ5OEE3QUVENUUxMDY5M0RCOUU1M0FFQkU0RTZGMTA1M0FERTE1OUUwQUZERjU0QUVDODAxNUMxCis3RjBDCis4RTEwRDQ1QjFBODQ0RTYzRTVENUUzOUM0QzM2NTgyQTgwNDU3NUVBMjYwRDc4RjdDQkM1MTVFRTJFQjUxRDdBRjg5QTEzNzRBQjRDOTg1MEZDOENDQkZBQzlGMzFEMDIKKzZFNTIyRTRDCis2NzAyMjg5QzM0QUZCMDJGQjRDOTA3MzYwRDk0Cis0ODc1RThCQ0FFNkRCQUEyNzY5MDlCN0ZEMERERTYyOEVEQTA3NjY0RTEwRUEyMkI5ODFFRDU4NkY4MUZDRkNDODQwMUI2OTMyMUU3Q0RGQTdGMDg2QjlGMUM5MkQxRjFCMkQ1RjE5MzhGNUU2MkQ5REQxMEUxQUREODQzNzdBOUM3OUQ5RDA5MDhFNzdGMjMwQTJENTY0QjdEMzhBQzA5MzQyNjlGMTYzRTA1Mzc2QTcyMkI3OTYxMkI4MzRBMEIzREQ0MUJCQ0VDCisyMUI0QkY3MgorRkNGRjE5MjJDRUZBMDVGQjExMThCODRBOUVBNAorQjdDNDI1MERCQjE0NUJEMjVCQkRDMEFBQzAyNjk3MzM0MEE1MkU4NTdGRkJFN0MyNkMxNDNGRkQ1MzVBMUY5M0UzQjRDRDREMURBRDFERjIwRjkzMDVGOTNDQUZBMDYyQUMzQUQ2RkJBMjNBODRGOTQwMDRDQUQ4RDQ5NkMwMjZFMUFFOUMzMDhDMThCQkIwNTVGREVEQTE0NjNCNERBMDk2RDQxOTgxOEY0QTA2NUI0REMxRDkwNjZBMjRERTBDNzZEMDhCMzIxODZCMDIxRkIyQTM2ODE4OTdEQkJCRjJGMzIxNTEzQzZBRjEyNzA3OUVBOUUxMTEzQURFCisxNDdBCitBNERCN0NDRjM4OTQzMDI2RjMyRjYyMDQ4NEQ3MjQ1OTBGN0RGNkUyNTEzMzk4MDUzMUI1NDUKKzEyQUVDQjA4CitBQkYyOUNENDFDMjIxMTI5MTJBMTBCMDJDNUFBCiszNjhFMEVBNEREQUIwNUU3NjY0MUExNEZBMTBFNjVGQTNGODk5Njk3N0ZEMEFFREUxNUE2Q0UyQkZCOUQwOTJBNjRGODFFNTYzMEVCODE0RTdCOEQzOTdCMEVFNEUyMDczMkE3RTA3MTRDMUNGMDY3MDA5RDFBMkI5OTAyNkMwQjNDMzk2NzM2RDUxMkM4REU2M0E3MjVGOUEyMEYyQjg4OTA4RkQwNzQ4RTM3NEQ4NkE5NzUzQ0Y3NjA4N0NENTExNUIyM0UzNjFEREVERUY0QjhFMzhDQjFGQTQxMjJFNEEwQkE1RTA2NTFBRDVCQUIxOAorODBDRkVBNTkKKzlDNjg4NDhCMzE5MDVFMzhBNUVGMTIyN0EwMTIKKzM0ODhFNTYxMTdDQzZDQjcwN0IyOUEwMzFBQTJGRUJENDFFMkIwODJGRTYzQURERkRBQTQ2MUU4OEFBQjc5NTVBMjI3OEI2MkI0NDYzMkVFNzQ0QTY3Qzk3RUQ5MTVFQTNFRkFFNTc5OTJDQTIyMDVBNkUzQkUyNzExNTYyOEI1ODU0NTcxQkE3MkUzRkVBNTY4QjM2MkNBQ0QyNkJFMzZFRjYwNjgzREI1MTI1OEE1QzFFRTk5MjhERjU2QzQwRUIyRUI1NTJCOUQKK0FDM0ExOTRECis5NjUwN0EyRUFBMzU0NEJFMThENTlGNTM4NjM0CitFRUYxMEMyNUJBNjJFNzI5OTE4NTkyMEQ5ODc5QUQyODhCMEM0MjE1OEJCNUJFNkI5MEUxN0JCMkE2QUM4QjNFMDI3MEZGQjMwNkQzNjkxNDAwNDhFRDc0MDVBN0E1MkYzN0FBQjU2RTY4QkQyOUJDODJFQ0ExREU4NzdBNDA3QTVBMTFFRkM4MzIwMkE2OTUwRThBODNDOTZCMUYzQjdGM0FFQUY3NjJCQjNDRDE2MzQ2NzgwOUI5QjBFOTM4QjAyOUNFREQyQTg1ODVCNjZBRjJBMzFFRTc1QzVCNjQ2MjdDM0Y0OEY2MkUxQzBCRkE3NDMyMzQ5M0JFMUUKK0I0OTkKKzgxQzg1MzlCQTg5ODIyQkVBQkI5OTNCNzA5NjVEQTAxQTI2ODRBNzEzRDE5ODIzQzMwRURBOUU0M0VCREVCMjJFNkY1QkFEQ0RFMDMyMjExMTJFRTMxN0M5MTFBRTJFMzAwMzQ4QUUyMjRCOUU5RTRDRTVBM0NFMEI4M0MwRTY0MDMwRjA0NEZCOUY2NzhGNkZDRjMwQQorQjc3QkE4RTUKKzE1N0Q4NTFGM0EzNUZFMkZBMzE4MUM3RjA5Cis0NDM2MEQzNzMwMjY0QzM5NDUxN0Q0NTIyREI4OEVGNzY2QUFBMkNFQTlEMUMyQzhERTA1MEM1MjdERTExNEM4OEVBN0Y3NkY5MDI3OThBM0EwMTc0NkMyOERCOTIwOEYzMTk2NEJGODZFRTEzRjEwODcwMDgzNDFFMzc2ODdEQjM4OTlGMUVBRjU4ODgyNjU3QkVCNUM3MkU3RTIwODA2Mjg1MkQ3OTRCRkVCMUU5Mzc4Njc0RTIzREIxN0FDCis3RTQ1MDVDMgorRDBFMzU4NTFDOTQxQTM1Qzg2QkQ5RTIzRTlCMAorNkE5NDhGNDYyNjEyMEZBRTc0MjBDQTUxNDQ0NzFCRjU1NTg2Q0QxM0U4ODYzQTVGMDZGOUFEMzRDNzJEOTdGNzE2ODdERUNDQ0RBNjA2RkIyM0QyQjcxNDI4MjIwNEEzODdFRTFDN0QyNTVFNUFEQ0M1RTlCRTEzOTQ5MDBCNDU1QzMxNTlGNENBODRDOENFQjg5Qzk5Qzg0NDlCNEJCRjAyQzc1MjM1RDc5MDU1MjEzQ0Q1Q0U1RjE4MTlCNzdEMTQyRjY2MUY2NjhDRDY2MDNEODM0RTkwQTJGNzFBMkExQjBGQjEwOEY1Q0E1N0RBQTMyODUzNDU5MDg3CitCRkQyCisxNzI5M0QyQUI2REM3MjU1ODk4RUNCNUNBODNFMjg1NEE5RjhDOTVBQUVFQkZBMDY4RTE2NjVFNDUxQjhGMUQ5NzE0RDI2NzY1QjAyN0U0NTUwQkIKKzg1RTg1RERDCisyRjM1ODhCQ0RBNUM5MkUxQjU3RTMyMDlERgorOUY4MTU2NzczNDMwMjEzQkEwMDBGREQ0MUYwRTQ4MjEwMjExMDRFQTBFREI0RkYxMDVDM0I0OEU0M0VBRjFFMEEwRjhCQzk1REE1QTMxOUNEQkEzMjg0MDcxREE1N0UyNTM5Q0ExNUMzQzQ5MkIwNjJBMDIyNThGNTI1ODFDOTQ0Rjk5OTYyN0UwNUJDNTZERjA1MjUwRkNCOTIzNjFEQ0RCREE1NDJFMkUzMTkyNjIyMTczNDQKKzE4RjQ5NDY5Cis3N0Q4NEQ2RDI0NzAxRTQ4OUM0QjVBREUwOTQwCisyQzhGRkJGMjBGMkIzQUU0NDY1RTg2RDEwRkUxRjgwNDE3MTYwOEM3REE5RjAwN0JGREUzNjU0OThDRTQ2ODU1Q0I1NkI2MjZFNUYxNzEyODM3ODM1NkE5QTRCNTJERkMyQ0YzQTA0MDQ1MkQ2RkQxQjFEN0YzQTJEMTY3QzgwODdBMERGNTA1OEVGQjkwMUEyRTM4Q0QzMUJFOTQyMUI2RTUwRTY3NzYxNDE3Q0EzMzNBRDNFQTNGODdBRjRERjI2RERGRUQzNzE0ODFBNEQ0QTNDRDI0Nzc4RkYxNzk3NUIwMDJGREFCN0ZGMworNUU1QTdDMTIKKzZEREYyNzM1QjhDQ0ZDMEIyOTFDQzNEOEE4CitFNTg5QzRBNDQwQTA4QTBDNDAyN0YyMEM4NEI5MjJDNkNDQkYwMjJENTA1RUNCRkY3NjZEM0Y0MjdEQjREQjVBQkM0OTE4MTVFOTg4NTBCRkI0MjM2MzcwMUYyRjI1MEFFOTIxMjM0REIzMUQwNDk5QTdBODhGODQ2MjVGNkM1Q0JGMTdFMEJCMjU0Rjg4OTkyQzRERDUzMTE3MzM1QTVCNjEyMkM4RDcxQjY2MDUKKzIwRjlEMzFDCitGM0U5NDY5ODg4RDIyOTczRkQ3Q0E2NENDMgorRjdCMUY0MjkwMjlEMTUyMUMwQ0VFNTc4MEVCNzBBMEUwOTEzQzYyNTU4RDY4NURCNjRBNUYwREQ2QTkyMzhDRDk1RUVCMTZGRDYwQ0EyNEU3NTRDMkI5MjAwMURCREIxRjZEOEY4MzA4QTlEODRFRUQ0NzIyNUE2MTg0MjZBODZBMEI3QUM5MTQxNTVBNENFM0Y4NjNDQUVBRkNGNTc3MjkwOUVFODI0MTE1QTlEQTE5MzVECis1M0IzOUFDRgorNUU3ODA4QzJBOTQ0OTBDQzQ2MTUyOEJDRDNGNgorQzFCRkQ1MDM5MjU4OTNBRTA4NkREODE2RUE1QUQ3RTYzRTI1MTJBQzE4REY3MTlFRDMzMjlEMDFDMjM3RDJEOEFEQkMwRTY3QzdCRkU2Qzk0QTU3ODZFQTk1OUFENEY4MDA5RTVDNkU2MzA3N0UxNzUwOUFFNjIyRDI4NTBDQTZENzBBRTAwNTAxODA4QkI0NjdBNDQxNUFFOTc3QTczMzYyOEZCQjAyQjREMUQzNzA4NjQ0MDlBM0FGMjVEMUNFOEQxOTQ2ODZDREQ5MzBFOEYzQ0EyQjg5MzA1NDkwQzc2RTczQkFCRUZCQ0M0RTE0MTVDQUEyOEFEM0RBCisxRjc3Cis3OTFFQjUwQUQ1MTEyNkQxN0MKK0ExRUUyODI3CiszNzQzMDNGOTIwMkJDM0FCNDJBMjI0MEMwOTZFCitBMTI0RkRBNTM4OUM4NTY2Cis2RUYxN0FEOQorQTNGNzcwOEYxNzUwNEY3RTk5ODgzNzg4QjcwQUQ0MDUyNTdGQjM0OEI1NEY1QTQyNTEzRDU1QzhEQkFGREY2QkU4RjkKK0EzOUNGRDQ1RTIwOURCMjkwMUQ2MDJFNjc4MzdBMzBERUVEQkY5OEM1MzI2Q0FBMzU5MkNGNDZGOEIwM0Q3RjRFRENGQzc4NDAzRDAKKzI0REJDNzI5ODY5MTNFMjY3Q0IzMkJBQjU2MDhDNTlEMzI1OTE3N0EyNjI4QzY3NDg0MzhDQgorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyaSAxMi4wMCAvUFNPd3N0ZHV0Y2hpIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDFhMjgzNjMyMjgzNDI5MGYwMTExMDExMjI4MzAyNjJiMmYyNDM0MmQwMTI5MzEzNDAxMTkyODI0MzUzNzM0MmMzMDJhMDExYTI4MzYzOTMxMzQyZDAxMWM+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MjgzNDI5MzEzNDJmMjQzMDI2Mjg+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDBhMGU+IDkzNDYgMTMzODUgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyNjcgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI2NyA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjY3IDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI2NyAzIDcxMzMgMzIgcword3N0OmR1dGNoMTIgU0YKKzwwNjMyPiAxNTg5IDE0MzEgMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDYwYjBjMGEwNDAyPiAyMDMzIDE0MzEgMCAyNjQyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzUyODM2PiAzMTc3IDE0MzEgMCAzNDMyIC0xIHMKKzwwMDM2MmIyODAwMjcyYzM0MjgyNjM2MzEzNDNhMDAzOTJiMjgzNDI4MDAzMjJjMzIyODM1MDAzOTJjMmUyZTAwMjUyODAwMjYzNDI4MjQzNjI4MjcwNzAwMjExMzI4MjkyNDM3MmUzNjBmMDAzNTNhMzUzNjI4MmYwMDI3Mjg+IDM0MzIgMTQzMSAxMCA4ODI1IDAgcworPDNjPiA4ODI1IDE0MzEgMCA4ODk1IC0xIHMKKzwyOTI0MzcyZTM2PiAzMTc3IDE2NzYgMCAzNTk1IC0xIHMKKzwwMDI5MzEzNDAwMzYyYjI4MDAzNjI4MmYzMjMwMjQyZjAzMDQwMDI2MjQyZTJlMjI+IDM1OTUgMTY3NiA0IDU3NjggMCBzCis8MDYzND4gMTU4OSAyMDIzIDAgMTg0NyAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYzA2MGYwNDBjMGEwNDAyPiAyMDMzIDIwMjMgMCAyNzEyIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzUyODM2PiAzMTc3IDIwMjMgMCAzNDMyIC0xIHMKKzwwMDM2MmIyODAwMzQyODMzMzcyODM1MzYwMDI0MzAyNzA4MzEzNDAwMzQyODM1MzIzMTMwMzUyODAwMzUyYzNiMjgzNTAwMzYzMTAwMzYyYjI4MDAzODI0MmUzNzI4MDMzNTA0PiAzNDMyIDIwMjMgOCA3OTcwIDAgcworPDAwMzUzMjI4MjYyYzI5MmMyODI3MDc+IDc5NzAgMjAyMyAxIDg4OTUgMCBzCis8MjExMzI4MjkyNDM3MmUzNjBmPiAzMTc3IDIyNjggMCAzOTk4IC0xIHMKKzwwMDBhMDAyNTNhMzYyODIyPiAzOTk4IDIyNjggMiA0NjYxIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDc+IDEyNzEgMjc1NCAwIDEzOTkgLTEgcworPDE2MTkxMjAwMDU+IDEzODkgMjc1NCAxIDE4NzIgMCBzCis8MGYwYTAwMDUwZDA5MDAwZT4gMTg2NyAyNzU0IDIgMjgwOCAwIHMKKzwxMjE4MWMxMjFhMWIwMzBlPiAyODA0IDI3NTQgMCAzNTk2IC0xIHMKKzwxMjFhMTcxNjE1MWExMjAwMGQ+IDM1OTIgMjc1NCAxIDQ0OTIgMCBzCis8MTIxOTEzMTYxOTE0MTAxNTExMTI+IDQ0ODQgMjc1NCAwIDU1MjYgLTEgcworPDBiMGMwZjA2PiAxMjcxIDMxNzcgMCAxODY2IC0xIHMKKzwwND4gMTg3MCAzMTc3IDAgMTkyOCAtMSBzCis8MDA+IDE5MjggMzE3NyAxIDE5NzIgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDAwMTU+IDE5NzIgMzE3NyAxIDIxNDcgMCBzCis8MzEzNDI4MDAxMT4gMjEzOSAzMTc3IDEgMjY0OCAwIHMKKzwxZjE5MDAxMTFjMTc+IDI2MjggMzE3NyAxIDMzODQgMCBzCis8MDAzNjI4MzUzNjM1MDAyNDM0MjgwMDMwMzEzNjAwMjYzMTJmMzIyYzJlMjgyNzAwMmMzMDM2MzEwMDMwMjgzNjMyMjgzNDI5MDAyNTNhMDAyNzI4MjkyNDM3MmUzNjA3MDAxNzI5MDAzYTMxMzcwMDM5MmMzNTJiMDAzNjMxMDAyZjI4MjQzNTM3MzQyOD4gMzM4NCAzMTc3IDEzIDk1MzEgMCBzCis8MzYyYjI4PiAxMjcxIDM0MjIgMCAxNTYxIC0xIHMKKzwwMDMyMjgzNDI5MzEzNDJmMjQzMDI2MjgwMDMxMjkwMDI2MzEzMDMwMjgyNjM2MmMzMTMwMzUwMDMxMzgyODM0MDAzNjJiMjgwMDE1PiAxNTYxIDM0MjIgNiA1MDE3IDAgcworPDMxMzQyODAwMTE+IDUwMDkgMzQyMiAxIDU1MDkgMCBzCis8MWYxOTAwMTExYzE3MDUwMDNhMzEzNzAwMmYzNzM1MzYwMDM0MjgyNjMxMmYzMjJjMmUyODAwMzAyODM2MzIyODM0MjkwMDI0MzAyNzAwMzAyODM2PiA1NDg5IDM0MjIgNyA5NDYxIDAgcworPDNjPiA5NDYxIDM0MjIgMCA5NTMxIC0xIHMKKzwzNTI4MzQzODI4MzQ+IDEyNzEgMzY2NyAwIDE4MjAgLTEgcworPDAwMzkyYzM2MmIwMDA2MTMxMzFiMjMxNTFiMWQxNDAwMjQyNzI3MjgyNzAwMzYzMTAwMzYyYjI4MDAyZjI0MmQyODI5MmMyZTI4MDc+IDE4MjAgMzY2NyA2IDU4MDYgMCBzCis8MTEwMDE1PiAxMjcxIDQwMTMgMSAxNjE4IDAgcworPDMxMzQyODAwMTE+IDE2MTAgNDAxMyAxIDIxMjggMCBzCis8MWYxOTAwMTExYzE3MDAxZD4gMjEwOCA0MDEzIDIgMzA4OSAwIHMKKzwyODMzMzcyODM1MzYwODFkPiAzMDgxIDQwMTMgMCAzODkzIC0xIHMKKzwyODM1MzIzMTMwMzUyODAwMzYyODM1MzYwMDAzMTUxYjFkMTQyMzFkMWQwNDAwMmMzNTAwMzgyODM0M2EwMDJmMzcyNjJiMDAyZTJjMmQyODAwMjQwMDIwMTMxYzIzMWQxZDAwMzYyODM1MzYwNz4gMzg4NSA0MDEzIDkgOTM0NyAwIHMKKzwxZjJiMjgwMDM1MmMyZjMyMmUyODM1MzYwMDE1MWIxZDE0MjMxZDFkMDAzNjI4MzUzNjAwMjYzMTJmMmYyNDMwMjcwMDJlMmMzMDI4MDAzOTMxMzcyZTI3MDAyZTMxMzEyZDAwMzUzMTJmMjgzNjJiMmMzMDJhMDAyZTJjMmQyODAwMzYyYjJjMzUwZj4gMTI3MSA0MzYwIDEwIDgxMDQgMCBzCis8MDI+IDEzOTggNDcwNiAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAwMzE2MTcxYjAzMTUxMjFiMTcxMjE5MTMwMzE1MTIxYjE3MTIxOTEzMDAwMjFiMDA+IDE1MDQgNDcwNiAzIDM2OTIgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE1MWIxZDE0MjMxZDFkMDA+IDM2OTIgNDcwNiAxIDQ3OTEgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMjA4PiA0NzkxIDQ3MDYgMCA1MTMzIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDA+IDUxMzMgNDcwNiAxIDUxODYgMCBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwYjA0MDgwOTBkMDQwNTA5MGMwZD4gNTE4NiA0NzA2IDAgNjE0NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE2MjgzNDI4PiAxMjcxIDUwNTMgMCAxNzM2IC0xIHMKKzwwMDI0MzQyODAwMzUzMTJmMjgwMDMxMjkwMDM2MmIyODAwMzYyODM1MzYwMDM1MzIyODI2MmMyOTJjMjYwMDI2MzEyZjJmMjQzMDI3MDAyZTJjMzAyODAwMzEzMjM2MmMzMTMwMzUwMDI0MzIzMjJlMmMyNjI0MjUyZTI4MDAzNjMxMDAyNDAwMTUxYjFkMTQyMzFlMWYxZDE0MTExOT4gMTczNiA1MDUzIDEzIDk1MzEgMCBzCis8MzYyODM1MzYwNz4gMTI3MSA1Mjk4IDAgMTY0OCAtMSBzCis8MDYyND4gMTU4OSA1NjQ0IDAgMTg3MSAtMSBzCit3c3Q6ZHV0Y2gxMmkgU0YKKzwwMTAxMDc+IDIwMzMgNTY0NCAwIDIzMDMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNzM1Mjg+IDMxNzcgNTY0NCAwIDM0NzkgLTEgcworPDAwMzYyYjI4MDAxMT4gMzQ3OSA1NjQ0IDIgNDAxNCAwIHMKKzwxZjE5MDAxMT4gMzk5NCA1NjQ0IDEgNDUzOCAwIHMKKzwyNzI0MzIzNjI0MzYyYzMxMzAwMDE4PiA0NTM0IDU2NDQgMSA1NTgxIDAgcworPDI0M2EyODM0MDAzMDM3MmYyNTI4MzQwMDI0MjQyZT4gNTU4NSA1NjQ0IDIgNzAyNiAwIHMKKzwwMDM2MzEwMDI4MzAyNjI0MzIzNTM3MmUyNDM2MjgwMDMyMjQyNjJkPiA3MDI2IDU2NDQgMyA4ODI1IDAgcworPDNjPiA4ODI1IDU2NDQgMCA4ODk1IC0xIHMKKzwyODM2MzUwNz4gMzE3NyA1ODg5IDAgMzQ4NSAtMSBzCis8MDAxZTMyMjgyNjJjMjkzYTJjMzAyYTAwMGIwMDMxMzQwMDBjMDAzOTJjMmUyZTAwM2EyYzI4MmUyNzAwMTE+IDM0ODUgNTg4OSA3IDYxNjMgMCBzCis8MTExODBiMDgwYzA1MDAyNDMwMjcwMDBkMDAzOTJjMmUyZTAwM2EyYzI4MmUyNzAwMTE+IDYxNTkgNTg4OSA1IDg0NDEgMCBzCis8MTExODBkMDc+IDg0MzcgNTg4OSAwIDg4OTUgLTEgcworPDIxMTMyODI5MjQzNzJlMzYwZj4gMzE3NyA2MTM0IDAgMzk5OCAtMSBzCis8MDAwZDAwMDYxMDAwMTE+IDM5OTggNjEzNCAzIDQ3ODAgMCBzCis8MTExODBkMjI+IDQ3NzYgNjEzNCAwIDUyNTAgLTEgcworPDA2MjU+IDE1ODkgNjQ4MCAwIDE4NzkgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjBmMDQwYzBhMDQwMj4gMjAzMyA2NDgwIDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM1MjgzNj4gMzE3NyA2NDgwIDAgMzQzMiAtMSBzCis8MDAzNjJiMjgwMDJmMjgyNDMwMDAyNTM3MzQzNTM2MDAzNjI0MzQyYTI4MzYwMDI0MzAyNzA4MzEzNDAwMmYyYzMwMmMyZjM3MmYwMDJjMzAwMDM3MzAyYzM2MzUwMDMxMjkwMDJkMmMyZTMxMjUyYzM2MDAzMjI0MjYyZD4gMzQzMiA2NDgwIDExIDg4MjUgMCBzCis8M2M+IDg4MjUgNjQ4MCAwIDg4OTUgLTEgcworPDI4MzYzNTA3PiAzMTc3IDY3MjUgMCAzNDg1IC0xIHMKKzwwMDFmMmIyODAwMjkyYzM0MzUzNjAwMzgyNDJlMzcyODAwMmMzNT4gMzQ4NSA2NzI1IDQgNDk3MSAwIHMKKzwwMDM2MjQzNDJhMjgzNjAwMjQzMDI3MDAzNjJiMjgwMDM1MjgyNjMxMzAyNzAwMmMzNTAwMmYyYzMwMmMyZjM3MmYwNzAwMjExMzI4MjkyNDM3MmUzNjBmPiA0OTcxIDY3MjUgNyA4ODk1IDAgcworPDA5MDUwOTIyPiAzMTc3IDY5NzAgMCAzNTExIC0xIHMKKzwwNjI3PiAxNTg5IDczMTcgMCAxODgyIC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDAzMDQwZTBjMGEwNDAyPiAyMDMzIDczMTcgMCAyNzAwIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzUyODM2PiAzMTc3IDczMTcgMCAzNDMyIC0xIHMKKzwwMDM2MmIyODAwMzAyNDJmMjgwMDMxMjkwMDM2MmIyODAwMTE+IDM0MzIgNzMxNyA1IDUwNTYgMCBzCis8MWYxOTAwMjcyODM4MmMyNjI4MDAyOTJjMmUyODAwMzYzMTAwMjUyOD4gNTAzNiA3MzE3IDQgNjc5OSAwIHMKKzwwMDMxMzIyODMwMjgyNzA3MDAyMTEzMjgyOTI0MzcyZTM2MGYwMDA4MjcyODM4MDg+IDY3OTkgNzMxNyAzIDg4OTUgMCBzCis8MjQzNjJmMjI+IDMxNzcgNzU2MiAwIDM1OTQgLTEgcworPDA2MzI+IDE1ODkgNzkwOCAwIDE4ODIgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjBmMDQwYzBhMDQwMj4gMjAzMyA3OTA4IDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM1MjgzNj4gMzE3NyA3OTA4IDAgMzQzMiAtMSBzCis8MDAzNjJiMjgwMDMyMjgyNDJkMDAyNTI0MzAyNzM5MmMyNzM2MmIwMDM2MjQzNDJhMjgzNjAwMjQzMDI3MDgzMTM0MDAyZjJjMzAyYzJmMzcyZjAwMmMzMDAwMzczMDJjMzYzNTAwMzEyOT4gMzQzMiA3OTA4IDkgODQyNiAwIHMKKzwwMDJkMmMyZTMxPiA4NDI2IDc5MDggMSA4ODI1IDAgcworPDNjPiA4ODI1IDc5MDggMCA4ODk1IC0xIHMKKzwyNTJjMzYzNTA4MzUwNz4gMzE3NyA4MTUzIDAgMzY5MCAtMSBzCis8MDAxZjJiMjgwMDI5MmMzNDM1MzYwMDM4MjQyZTM3MjgwMDJjMzUwMDM2MjQzNDJhMjgzNjAwMjQzMDI3MDAzNjJiMjgwMDM1MjgyNjMxMzAyNzAwMmMzNjAwMmYyYzMwMmMyZjM3MmYwNzAwMjExMzI4PiAzNjkwIDgxNTMgMTEgODgyNSAwIHMKKzwzYz4gODgyNSA4MTUzIDAgODg5NSAtMSBzCis8MjkyNDM3MmUzNjBmPiAzMTc3IDgzOTggMCAzNjUzIC0xIHMKKzwwMDA5MDUwOTAwMDYxMDAwMzAyODM2MzkzMTM0MmQwMDI0MzUzNTJjMmEzMDI4MjcyMj4gMzY1MyA4Mzk4IDQgNjA1OCAwIHMKKzwwNjFjPiAxNTg5IDg3NDUgMCAxODk0IC0xIHMKK3dzdDpkdXRjaDEyaSBTRgorPDBjMDYwZjA0MGMwYTA0MDI+IDIwMzMgODc0NSAwIDI3MTIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwzNTI4MzY+IDMxNzcgODc0NSAwIDM0MzIgLTEgcworPDAwMzYyYjI4PiAzNDMyIDg3NDUgMSAzNzc0IDAgcworPDAwMmYyODI0MzAwMDI1MjQzMDI3MzkyYzI3MzYyYjAwMzYyNDM0MmEyODM2MDAyNDMwMjcwODMxMzQwMDJmMmMzMDJjMmYzNzJmMDAyYzMwMDAzNzMwMmMzNjM1MDAzMTI5MDAyZDJjMmUzMT4gMzc3NCA4NzQ1IDkgODgyNSAwIHMKKzwzYz4gODgyNSA4NzQ1IDAgODg5NSAtMSBzCis8MjUyYzM2MzUwODM1MDc+IDMxNzcgODk4OSAwIDM2OTAgLTEgcworPDAwMWYyYjI4MDAyOTJjMzQzNTM2MDAzODI0MmUzNzI4MDAyYzM1MDAzNjI0MzQyYTI4MzYwMDI0MzAyNzAwMzYyYjI4MDAzNTI4MjYzMTMwMjcwMDJjMzUwMDJmMmMzMDJjMmYzNzJmMDc+IDM2OTAgODk4OSAxMCA4NDI2IDAgcworPDAwMjExMzI4PiA4NDI2IDg5ODkgMSA4ODI1IDAgcworPDNjPiA4ODI1IDg5ODkgMCA4ODk1IC0xIHMKKzwyOTI0MzcyZTM2MGY+IDMxNzcgOTIzNCAwIDM2NTMgLTEgcworPDAwMDkwNTA5MDAwNjEwMDAzMDI4MzYzOTMxMzQyZDAwMjQzNTM1MmMyYTMwMjgyNzIyPiAzNjUzIDkyMzQgNCA2MDU4IDAgcworPDA2MzQ+IDE1ODkgOTU4MSAwIDE4NDcgLTEgcword3N0OmR1dGNoMTJpIFNGCis8MGMwNjBmMDQwYzBhMDQwMj4gMjAzMyA5NTgxIDAgMjcxMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDM1MjgzNj4gMzE3NyA5NTgxIDAgMzQzMiAtMSBzCis8MDAzNjJiMjgwMDM0MjgzMzM3MjgzNTM2MDAyNDMwMjcwODMxMzQwMDM0MjgzNTMyMzEzMDM1MjgwMDM1MmMzYjI4MzUwMDM2MzEwMDM2MmIyOD4gMzQzMiA5NTgxIDcgNjk4NyAwIHMKKzwwMDM4MjQyZTM3MjgzNTAwMzUzMjI4MjYyYzI5MmMyODI3MDAyMTEzMjg+IDY5ODcgOTU4MSAzIDg4MjUgMCBzCis8M2M+IDg4MjUgOTU4MSAwIDg4OTUgLTEgcworPDI5MjQzNzJlMzYwZj4gMzE3NyA5ODI2IDAgMzY1MyAtMSBzCis8MDAwYTAwMjUzYTM2MjgyMj4gMzY1MyA5ODI2IDIgNDMxNiAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgyMCkgMjAKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDAzNiBwdXQKK2R1cCA0IC9DMDA0MCBwdXQKK2R1cCA1IC9DMDA0MSBwdXQKK2R1cCA2IC9DMDA0MiBwdXQKK2R1cCA3IC9DMDA0NCBwdXQKK2R1cCA4IC9DMDA0NSBwdXQKK2R1cCA5IC9DMDA0NiBwdXQKK2R1cCAxMCAvQzAwNDggcHV0CitkdXAgMTEgL0MwMDQ5IHB1dAorZHVwIDEyIC9DMDA1MCBwdXQKK2R1cCAxMyAvQzAwNTIgcHV0CitkdXAgMTQgL0MwMDU3IHB1dAorZHVwIDE1IC9DMDA1OCBwdXQKK2R1cCAxNiAvQzAwNjEgcHV0CitkdXAgMTcgL0MwMDY1IHB1dAorZHVwIDE4IC9DMDA2NiBwdXQKK2R1cCAxOSAvQzAwNjcgcHV0CitkdXAgMjAgL0MwMDY5IHB1dAorZHVwIDIxIC9DMDA3MCBwdXQKK2R1cCAyMiAvQzAwNzEgcHV0CitkdXAgMjMgL0MwMDcyIHB1dAorZHVwIDI0IC9DMDA3MyBwdXQKK2R1cCAyNSAvQzAwNzYgcHV0CitkdXAgMjYgL0MwMDc3IHB1dAorZHVwIDI3IC9DMDA3OCBwdXQKK2R1cCAyOCAvQzAwNzkgcHV0CitkdXAgMjkgL0MwMDgwIHB1dAorZHVwIDMwIC9DMDA4MiBwdXQKK2R1cCAzMSAvQzAwODMgcHV0CitkdXAgMzIgL0MwMDg0IHB1dAorZHVwIDMzIC9DMDA4NSBwdXQKK2R1cCAzNCAvQzAwODcgcHV0CitkdXAgMzUgL0MwMDg4IHB1dAorZHVwIDM2IC9DMDA4OSBwdXQKK2R1cCAzNyAvQzAwOTUgcHV0CitkdXAgMzggL0MwMDk2IHB1dAorZHVwIDM5IC9DMDA5NyBwdXQKK2R1cCA0MCAvQzAwOTggcHV0CitkdXAgNDEgL0MwMDk5IHB1dAorZHVwIDQyIC9DMDEwMCBwdXQKK2R1cCA0MyAvQzAxMDEgcHV0CitkdXAgNDQgL0MwMTAyIHB1dAorZHVwIDQ1IC9DMDEwMyBwdXQKK2R1cCA0NiAvQzAxMDQgcHV0CitkdXAgNDcgL0MwMTA1IHB1dAorZHVwIDQ4IC9DMDEwNyBwdXQKK2R1cCA0OSAvQzAxMDggcHV0CitkdXAgNTAgL0MwMTA5IHB1dAorZHVwIDUxIC9DMDExMCBwdXQKK2R1cCA1MiAvQzAxMTEgcHV0CitkdXAgNTMgL0MwMTEyIHB1dAorZHVwIDU0IC9DMDExMyBwdXQKK2R1cCA1NSAvQzAxMTQgcHV0CitkdXAgNTYgL0MwMTE1IHB1dAorZHVwIDU3IC9DMDExNiBwdXQKK2R1cCA1OCAvQzAxMTcgcHV0CitkdXAgNTkgL0MwMTE4IHB1dAorZHVwIDYwIC9DMDExOSBwdXQKK2R1cCA2MSAvQzAxMjAgcHV0CitkdXAgNjIgL0MwMTIxIHB1dAorZHVwIDYzIC9DMDEyMiBwdXQKK2R1cCA2NCAvQzAxMjcgcHV0CitkdXAgNjUgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjU2IDk3OCA3NjZdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMjQzRTBFQzU5MzQ0Q0VGMzY5NjUwQTAzN0I0MzgzQjAzRDYKKzI0QzMwNkU4N0VGREQ0Nzc1RUM3ODc0MgorRkVGQ0U0NEI3NjU1NzQ0NjZDCitEMUFGN0E4MgorQ0ZFMTlGRUMwNzA1NTE3MTgwM0JFMzVGQjYxRgorREZBNUE0QzczOUE0RTM5NTdFQjdDNjYyMzM4NDRBQzUxQTZBOTFCNDVCNzVFNkFGMUY3Njc3OUE0RUEzOUQ1NTRDNjcxRjAzOUY2RUEwOTAyRUVBQkMxMzM2M0JEREE1MTAxQ0ExMkJCODE1NkVFQzVBRjBCRjlFNkZGRDQxRTNFODI5Nzg5NUUxNTU0RjU3MzE0REU1RTVFNzBDMzJEQTQ3RkQzMEE4NTI1RDdFRTlDNjA2MDdFREI2RkQ5RjgxNkJCQTk0MTcyNzZGODUKKzYwRjVEREI0CitBMzk0OEIzM0VDRDcwNTE1RUZCMEYyNUU3NzY2CisyM0Y3MzdBMDY1NzhEMkM1MDE5NzFEMjFBMUFEMERGQjQ2Q0Y1Mjg3ODY5MTgyNDQ0RjQxMUZGMTE4MjMwMjY2NzBCOTA3RkYzODI2NjVGMzlGOTRDMDlFMEUxRTc2REMwQjAyQTRCRjA5RkI4RjJFNUJFOTA5Q0Q0QzQxODMzRUIyMkUwRkVBNzVBNDBEMzVENzcwMERFMTM0RTZDNTU2RDZBN0NFNTEyRDYzMjdGMUYxNzVDNEExOUMwRjY0QUU2MUUwMERDQTAzRjhGNUU2NEE1QTIzNUU1RDczQkFDNDg3RTNDRUY1Q0VFNEE0Q0RFMUE2OERCQjVDNzcKKzIxMkQKKzA4RkJGODA3OUJFNTUzMUI3NjE3OTlFMworQ0FDNzFDRTcKKzkxNUJDNURBMERCMTdGRkQ0QUJERTUxMTFBCiswOUYyRjcwRjYxMDZGM0Y2MEVDQzQyNDJBRTk5REM0NjVGRDQxODQxRTlCNzUyNUQ1QzRCMzJDRUE0REM2RkRGMUEyMTY1QkJGQThBNEVGMTEyOEZCMkZDQ0ZFQzg3OEQ3NEU1OUJENEE0RjlCMEJFREVGQ0E5REQyNjVGMUZBOAorQkZCNUIxQ0UKKzcwNUU4RTNDNUI2MDI0NzIwMDdEMkZGOTA5CiszQ0JENjc4ODAxRjUyQTMyQjI4RURFNDkyMzAyNEUyNUE4Nzk1Njc2Q0M1OTRCQzRFQzg5MzRFMEE3REI4NzRBRTAwREQ1MDdERTUzMTNENEIyREM3QTExNjMzQUMxNUU5OTY5OTlCQzhDRTUwMURFNURDMTFFQjQ2RjQzOTYKKzJGOTlERUVBCitFRjJDMzU3Q0NEREQwMzc4QjYwMTJGRjRBNzZECis2OTFBQUQ5NzlFOThEQUVGRTBFQTM0NzczRkIzQThBMEY5OUU2NkY3RDIzQzJGQUYwNzlBODAwNTk5MTUyRkJDOUIyOTU4REIwMzNDRjE2NTJGNzc2RTcwQ0ZBRDNEQzgzOTM0QzEyNENDMTk4NzQzRTE2MjUyNkJDMTU3NDM5Qjk1MUI0NjZBMjk1NDA1Rjk3Rjg5RTQ2NzFDRENEQzY2Qjg4QkJENDU5ODNCRTBBN0FBNjc1N0VERDVGNTIzNTJCNDZDNEQzNjYyQTc0MkFFNTc0MzlBRUQ0MEUwNERCNkY0RTg2MjlBRjc3RjBBRDlFM0Q2RjQwNjQ4QkUKKzdDNzAKKzlGOTcwQzU3RTI1NkRDMzA5MDk5OTNENzRDREJCNzI4NTJBNzBGRkQ0RUJDQURGODk5Qjc3RTk2OTNERjlENUU2MEFGMDJBNUE0MjgxQTE2OEE5M0M2NDFDMTg1NjRFOEM4NUU4MjlDQjNBMzc1RTREQjQ0NUJFRjQwOEMwMAorQTYzRkM2NTEKK0NDMUJBMzVGMjYzMjI4MDAwQzkzQjJFNUJCCisyNDk3QkQ5QkQ4NzgzNUEyQjVFMUIyQjY5RDU2MzM0RDY3QjlFM0NDRjZGRTA5NkUzOTBBRjhCNzE5NkUzOTQyMjQ5MUU1NUIwODVENjc3OEY4NEY3MjAyOEI1NzIxMDczNjAxQzRGMzg0OTREMEU4QTUKKzcxMTVGQTlBCiszODRDMzA2MTY3RUNBQzJEQjc0M0NFNUMyRQorOTJGNEE5Qzc3MDIwNTdCMzI2QjkzRTM1RDVDM0EyMTRERDg0RERDNjZERjUxRgorMDAzQUQ0QzkKK0M1NzlENDUzOTFCMTY5QUI2NDUwOEE3QkQ2Cis4RjBENjg5NjNBODc5QTk5MUZDMDI1MjFGRkQ0N0ZENjQyQUQ1OTYxODcxMDE2RkI1QkJBNzk4MkQ5MDI3MAorMUQ0NUM4Q0UKKzZEOTUxM0VBNEM0MDhBOEM4QTQzMDg0NkUxCiszN0U2Q0EwQkY3NEZFRjgwNUM2Q0RBQzQ4NEE5NzQ4OUY3RUZGMjFCNkNBNDAzMkQ1QzhDQUEwQjZFOTVCNDcyQTM4QzA3NjcwRTBENjM5NjI0RDZFNkNDMjI3NDdDMkZFNTI0QUM3MjM5QzU3REE5NkRBNDY4MkJCODk5MDk1N0NCRDIyMjIxMzNFMEI1NzIyM0VFCiswQzZFOEY1NAorQzU1OTY0OUU5RUQzMEU1MkI4MjU0RkM0N0UKKzcyNkZGQUFFRjI1QjBFMDBBQkQzNDZBNTNDODc1RDI5NThCOEExNTY3RThDRjlFN0Q1RDVERTE4RkQ3QTU4MEY2MjVCMDMzMzgxRDY3OURGRTAxM0U2MkY0QzREOTlDMDEzMjM2NUM2MTU0NzNBRUZFQUJCMDNCMTc0NUQ5RQorMjlDRjNBOTcKKzNEQjFENjRGQ0NEM0FFM0E0MDBCQzhERjYwCiswMEQ3QTU3MUNCNTUxMjBCQTFEQzlBQjIwN0REMUYwM0FGRjk1NDE4Mzc4NURGODkxNUE0M0I0REIwRUJDMDIyNzUyMkVDMzdFMDhEN0M0Qzk2Q0ZCNjVFOUYyMDhGOUEyRDc4NDVBNUE0NUI3NTJFQkRCN0Y0QUQ2NTE5MDQ3QjlGRjA2MEJDRDhDOTMzMDcwRjY1NDNGNTM0NTdDRTMwOTQwMTk0RjExMDQ3MEI0NkZFRjIKK0I5MEJFNzRBCisyRjA1MDk4QjEwNjM3N0MwNjhERkRFNjc1RAorMDczRjQxNTJERTU5RTBFMDZDMUU0NEEwN0RENDRDNjg3RDQ0OTRFRUUwNEZEMDM3OThCNDM4MkYwQkFBNzZCOTYwNDI4OTNCMDdCMzQxMUNCQURGMjdCQjcwRTQ3QkFFODEzMkNCQ0Y0ODIzMDNERTJCQjgKKzZGRkY1RDg4CitDOUM1QjhFMkU2NDQxQjBCQzk2RDFFRDE4MERECis5M0U2NUMzRUYxOTc4NzY4MERDQ0MxMDE2Q0NEQUMyMUZFMjlEMzRERkQ3MTg3MkQ0M0MyRkEyMkFBMDExN0ZFNkIwQjUxMDQ5NjNEMDM1MDdCQ0NEM0Y4REFGQjRENEYxMEQ5MUU4NzIzNTNFQjZDMzcyM0EyNzRCRjg0NjVGMDc0RTY4RTQ4QUU4RkQ0RDE0NzVDQjAyMDlFRDdBRjlFMTkwRDBBOTVBMDY1QjFDNTFDOTE0MjM0MkM0NTMxOUNBQzlENDI1OUYxCiswMjkxQzAzMgorQzVGNkI3NEJGOURFNjAxREUzNkU2NUY0QzUKKzAxRTIwODg1MjE1MThBQjE0QjVBMzQyMDI3QjBFNUNFNUY0MUJGQzM2QTVDOThFNjM0NzBFMTkyMDc2REQ1MjZEQkY5MjNGNDYzOTBGOUM0MzJEMkNDNzUzMDA0QzMwNjEzQkIxQTM0RDY5QQorQTFBQkZGM0MKKzBGOUUyQUY0NUNEOURFNjAxNkE3RTIzMjE3Cis2QzUxRkFFNjIzM0RDRDdBMkVCRTk4QzVCQkNBQjRDNTUxMDM2NkM2M0FEMkQzQjEzREVCMDkxMDQ5RDAzMUQwOTQ3RDNBOTIKKzI5RkRCRjU0Cis4MUI3QjRBNTYyQkQ1QzJBMEEzQjkyNDQ2MEQ5CitGQjZDMkFDMjAxQjc4RTQ2RUNEMjIzQUJENjY0Q0NENDJBQzRDMTkxRDBFQ0Q5MUFCNDg3QjRCQjM0M0Q0Q0FCQzMzRjFENjkwOTExNENEOUIzNENBMTAzMUU0OTM5NUY2NDU5QUI4MjYxNzU1ODUxMjUyQTFDMTc1NjkwRUE3QjMxNzFBQjc5QkU3OTM4NEE1QUUwMEMxNDEzNTRGNDRFQTNCMTUwRjk1RkM2NUIyNzFGQThBNTE2QTBBNzdBMjM5RjZEOTZCQTZEREFCRDI0RTNEMkZBQUU3NzNDMTI1MUI5OEU4QgorOUYwNjcxMUUKKzQwN0EwQzgwNkZCQUIwMjBBQUYxODgxRUZGMjgKK0RGRTUzNUQ2NTcwNjQxQkVEQUZEQkY4QjNDNTcxNkYwRjk3QjY0MUJGMDQxODQ2MzEzNkIwQkRFRjFGMUQ3MDQ1NTNGMERCQTM3NTE2MzFERDM3RjBGODFCQzM2QzI2NUE4RjY4NEQwNUYxM0EyRTJDOEQzMzM3MUY3MEVBQTRENEYzM0QxRUNBMDAxMkM2OEQ0MDkyQzBGNTE5QTRDMzI4RDA4QjgxOEJCMEZENjlBRTFCOUNFQTQ3M0IzNEI1OEJEMkUyRkZFRUFEMDYxNDZDMkRDNUMzNDIwNzI5QjJBRTg5MzNFNjc2N0UyMkMxODA0QThGNEQ5NjIxQQorQjI3RAorNzUKK0YzMzU2MzY2Cis5QkYxMEMxOURCQzhCMkZDOTQwQkZCMzE0RQorMUJDRDE3NTkzNUMxMzcyQzEwQUJFMzcwMDY4M0FERDc2RDM3NEZGRTdDN0MyNkQ3OTc3OTYyMjE3NzhFNDJGMUYyMURBRkUzQzM4OTA3OTkyOThCOTQ2REJEMkM1ODExMzYzQUQ2NTExRkRENEQ5MTBENzNENkE5QTE4QUJCRUY5RTUxNjJCMzI4QTc5QUY1QjExNUIwQkIwRERBOTE5RTYyMDU5MUVERDgxNDFBNzM5REUxNDEyNzQzQTAzQkUzRTEKK0Q4RDg3OTVFCitBMzRCQzY5QkQwNzhGMDJBODY5ODY0NzdBMDRBCiswQTc4OTNCMjREQjA1Q0VDQkFFNUYwRkQyMzdCRTg4OUI2MUUyRDk3OTIwNzVEQjJGQThCMjg4QzZENDdERTdCQkQwOTQ0OTJGM0E5NDQwRkMxN0E5MDA1MEFBMDcxNzlGRjM5RkE4MkMxRjA4MUI4NEJBMjQxQTZCQ0Y2QTAzQkY0NjkyRTg2NTEyODI0NUJCRDA2QzZBNDI5MzgxMTIyNzYzMjIyMEE1QkJFMzdBQjYwMTQ0MTNBMDE1QzI0N0FFQkNENUUzNjVEQTUzMzNDOUI1RUQ5RUVGNEU2Q0Q0MTRGQjgxQ0QyQTJBMDVCNzVGMTMwRUVFODE3NTUKKzUzQjE5ODRBCis5MTZGNjJFMTlEQjI2NTFEMzhCNDlBNTgyOERECisxRTJDOUY0MzYyMUZBQzg0QkUzNUMyREFFOTRDQ0MzQTI0RkU4OTUxM0YyNTVDQURCOTczQzQzOTg5RTY3ODdBODcwQTIzNjY3QzQ2MDUyODBEQUVCMDgyQkZFQ0QyMTgwQzBCOEVBM0YyN0E3QTBCMUUyNzAxNDg0RTRERDk4MzMzMUU1N0Y1MjBFMjNDMUQ5Q0U4Nzk3RDlEOTNBNDExMkVGOUY5RUM1QzA4RURCNDI4QkM5NTRCRTQyQzk3MDBFRjg4QUE3OEM5NDUzQzgyRjIKKzUzQTZDODA1CisxNDM3MUIwMTBBODVCNTdDRkFFMDgzODYwMTcwCis5ODQ5Mzc3QUE3MjNCNTU4QjdGNkVFRjU5M0JGODYyM0FBMjYwNzE2MERBQjE4MTU0MTg3OTgwNEMzREFGQkRBMjA4OEFDOUE3NzAzNEU4QjBCNUUyNTI4NDIzQ0EwQzY4QjZDQkY5NDdDMUQ5NDA2NEUwMzkyMTI4OUI3QUEwMzE1QTA2RkVFNkUyQzRCREYxRDJDMjhCMzkyRTQ3NTEwRTRBNDEwNzVGMjBEMzRFOEZGRjM2OUU2REM3MzI5MDlERDcwQzU1MzREOEIyRUNERTBCNDhGQUU2NTMyNjg5RTE3MjhEM0QwRDhEMjkxMDVCNjJECitDMTM3QzI1QQorMThENDNCREYyQzM1NEVCQTdEMEVGNkZDREZCOAorODdBODNDNDI2RDJDQUNFRDBFM0MwMzBCMzEwMDdGRTE5RjQ1NDk1QzdDQjVCODk5OTA4NDVFMTY5MkQ2QUQ0MERERkE2NEJBNjFDNzU2NTA5ODdDNkNGREFENTc5MDFBMTU0MzJFMzJFNUNFMjgxODY4NTRBOTE2OUYxNjg5MkQxOUEzRERDQ0IyRDc4NjIzQzE0MkZBMUJEOUU4NjNERjQ2MkQxQ0I2NTIxRTVDMDQ4NDEyOTAxQzI3MUYyNzIzNEUzNUJCMThENDdGQTQxNUI5MEU1Q0VDMTk0RUI3ODE2Mzk0NDZCMDg4NTAzMzgxMjU1NzM4MTEwNDc2CitFOTg3Cis1RjhFNDE2OTdGN0EyMjE1RDdCOTUyCis1NTc1OEU0MworNzE2NEIyMTFFOTFFNzI4MjUwNjRFRUI2MEEKKzQ2N0Y3RERCMUIwNEEwMzAzNzRDMUFENTlBNDNGQTA5QzhGNjA3MTVERDY4MjU4NjQyRjFBREE1NDY0NkI0RDI1MkYzQzc2RTczQkU3RUNGQTY5MzgwRTAzMDY0Qjg5OTkwMzcxMjQyNkMzODgwMDBCQ0IzOTIKKzI4MTkxODJGCiswMzE4NDZEMTQ4NjFCNzY4NzhERkMzNjk5NQorQUJBNDM4MDM4OUQ2ODA1QUM3QzIzOTRCMDE0MDI5NzVGODQzMjk0QTBEQTkyMEQ4QUI0NUFDQTVCQTkyM0U1NzkwM0U2RjZGMzNCNjUzMjBENTk3MUZDOTU3OEIxQ0RBOEI1NDJCNTE0OUREMENCNDNCM0VEQTVFNjExMkY1RUVDMzU5NTY5RjRGNzM4OQorRTI4RjBBODAKK0E5QzE5QTdFM0RFRkIxQzZGRENBRDcwMkZBMTEKK0IyNjJFQ0UzNzM1NENFMkFBMDRENDM3OTVEMjkyN0E4NUJEMzc4MzBGQkRBNjY2Mjc5MjYxQTlBN0Y1NEJCRUNEMzg5MzU4RTEyMzM1RkRCODZDNkI2NTg0NDM1MzUwODhCQjkxNjJCOTU2RTE4RUUxNjU5MTkwMUQzQTEwNUE1NTg4QTgwMDE0RjFDRTVBRUM3Mjg1RjFBRDhGMTEzRjNDQTIzNUZENjIzNTI3RkYwNzQyNEYxRUMwMTU4QjkyOUE5NDBCQUYzQzJGQzhBREQ4QTQ1M0U3N0MwRjJBNworNjhDQTVDMEYKKzFFN0FGRTJDREIzRjNFMkYzMTk1MEE4RjNECisyRTQzMDI5MDMwREE4OEM1N0MxNjIzNEM2RUZCRkQ3NTk3QkE5QkIyMkE5Qjk1QTYyNUQxNkYzRkZFQ0VBRjZCNThGMTA5RjZEMTM1QUVFQ0JDNkQ2MUQ5REIxM0MyNjkxNkFFNjE3M0RDREMxOTkyQzk3QjIzNzcwNUU2OTI4QTA1MURERTE2NkVCQTE3QTNFQUM0Q0U0QTEwODdGRTI4OTY1RkI4NTdGRTJFMjRCMDcxODNBRERGCisxN0MyMEI5RAorOTQ5QjhGOEVBRDZDQjVFNDhBNjlGQTU1N0QKK0Q4N0QyNUU4OEQ4NDA3MzFERkJGRTJGRkI0ODQ3RTE4MDI4RjJDRDYzMENGOTA0MkY5OUE3RTlBMzc1NUEyOTE4RkExQkI3RUM1NDMyQzRGQTQ0ODdBQzQwMzE4QkU5NDc3RjBENzFCQkMzMURBQzJERkZFRjYyMDg3QjRGRTFERjVDNEMwMUZFNzAxRjExM0I2OEQxRUI2QTFDNDVFQjQzRDkxOTAKKzYxQUVBRjg4CitGQkE0RjQ2QTEyQUE5OEVBOTk5RTI1NzE0MjZBCis5RDlGNDFDMjZDQTU2ODNFRDMzOTRFQzE2QzY5Rjk1Q0EzMDA3OTg4Q0VCMjdGMDBBQTlCNTlCNzVGMDg2RDVFQTVCRjZEMzUzOTRDMkYyODIxRTQ5NEI4ODAyODIyQkI5QjEyNzhGMzhCQUY1Q0VDOTA1MUZFQkExNUExODM3QTJEMzMwOTk0MjgxNzAyMTZFRDY4QjFGRDAwRDFENDdGMzlDMEU2NkEwQTUyQjFEMDk3MjcwQkVERkQ1MzMxMzE5OTNBRDc4NEUwQTc0QjgzN0Q2QgorREJCMUY0MkYKK0RFQUQ0NTlCRjg5MUUzMEE3OTc5RkU3REMzODAKKzc4OTFEMDM5MEFENUU2QUY1NTA2MkY4ODg1NjVCM0FGMTk1OTI5NDMwQkI0Mjk1Nzc5QTEyMjhGQkE2QzdGNjVGMkQ0NTQxREU4QkU3MDQ0NjQzNDhERTg1NUE0RTBDQTlGRTIxOUZBQUVEODkxNTc4MjMzNEVCNUVERTZGNTRBQjk0OTM4MkVFQUNBNTJEQjBCMEEzMTg3NEI3MjAyMUUzQkRFNjAzN0Q4N0Y2OUU4N0UwNTdFNUZBRjVEMTQ4MUM4QUVCMEJGODcyMTUzREEyRTdFNTFGMkU5MzJGNUJBRkVBMENDNDJERDUzMkY0NEQ4NzM4MTY5NTA1QQorMzBFOEEzRTkKK0RFQzBDODNDMTY3M0I1RTBBMDRBODkwMzgwQ0UKK0EwQjBFMENEMzFGMUNCQjVCMUJENzA3QjgwMDk0QkIxNjY1MEQ2NUVBM0U0QjQ2QURCRDgwQ0ZGNjgyMUUzNDAwOENFMjdDN0JEQTZCRDhCNTU2RjRBNUM3NEQyMzJFN0I2NzgyOTIzMEY4NjJBODhCMDI0REUzOUUxRTAzMjM0MjJDRkQyRDNEOUM4NUJENDk0NEVEM0JCMTc4NjY4MjZGMUIwRTRDMEE5MjIzNzRCMjA4QTg5OUU1NDdDNEM5M0NCMzJGREE0MUNFMTNCQzZGOEIzQkQ0QzYyMTk1RDdDMDM2MkEzMkM0Rjc5ODY1NUIxQzgxNjU5MkZEMworN0ZEMAorMzE5NTI2CisxNDU2MkMxQgorMDMxMzA1OUM1NzkzM0MxOUIxMjkyOTdFNEUKKzhBRUI5RTM0MDYzNTcyOENFNkVERTU1RjAzQjM5QTZBNTAwNEFEQjREQkRFQzI1NjdEMkFCOEE4RjJCNTY3MDQ1MkRFRUI4QzlCQUUzN0NBMEM2RkI5MDU4QTIyODk4ODkyMEYyOUE3N0ZGNkI2ODlFOUNFNkZCMTRFMjJDNEFDQTYyNzdDNzFDRTRBN0ZGNEE5RjU2NTU2QTg0NDgwMUFFMworNTY2MTY3NTMKKzVBMkEwNEE4RDgwQjc1NTU2QjEzOTEwMUY4OEIKKzUxMUZGODM4NjAwMkFFQ0U0OTY2NTlGRkFGMzk5NzY5RkNDQzcyNTZGNzRBMEM4QTJBQTRENEI1MzhEQTE4RkRBRjdFOENCQzEzRDFENUQ1MzNGM0RDMzZGMjU0NkQzRjY3MUNDMTA5MkRCQkNFM0EzQTdCRERDNDEzNTVBMUM3ODJBNzI1M0MwOTc3NkIwQThEMEI5QUQxRUQzNjAzMTk1QUY5MzRENDgxNTZGOUE1RDU5RUQ1REZEMDI5QTUxNEU4NkVBQzM3CitDQzY5NDkwMgorMTA0REQ1NUEzODBGRkJCN0E3M0Q4N0NGRDk2RgorODRFMjIxNzkxQkM5ODRENjY5NUVEMTMwRDYwNTE1RTJBODk5QUUxODJGQzBBRTg2NUVFMTUyMzZCQ0Y2MEJFOUFEQkY4N0VFMjg4MEIyRDJENzg4RjY5MTdDNUE3RjI2NUQxMjUyNzhBRDM0NEIwMzNGMUQ4Q0EyRDI1MThGN0QzOTA5MTc0QjFFNUMwQjhGREYyMEZEMkM2N0MzMDJFMTU1MkM0RDBGQzk4QjJEMjdGNEE2QjYzQzNEQUQxNzFCQkJBNUNGMkFCODNGRTY0Q0RCRjU5Qjk1OUUzODk0OTA4MzQ1NzdBMUE1RkQyM0ZENEY2MTE3M0UyMjZGCis2RTk1CitEOTBFMkQyNjVDREVDQTNCMkZEMEFCNUJDN0ZEQjZCQgorMjAwQzRBNzMKK0Q0MDFCMEMxQzdGOUEzQjIxODYxMTYwRjNGMkEKK0Y3Q0Q0MDM1QjU3MzI4NEU4OTdEMkIyMzhGRjVBQjUwODMzQUZEMDBBRUZGNTNFODdERDMyQkU3QTJDMjk1ODA1RTAxNEQ4MjY2M0U1QUUzODk1M0I1NjIyRjc3OUFGNzMzNTQ3RDVCQjJDQzc5MTZEMzVENEU2RUQyQzVFQkE1NzFBMzNFQjZGODcyQTdDMzNDRDA2RUI4N0NDQ0UzOEM0RjhCMUU1Q0IwMzlGMzQzMkMxNkY2OTI0QzBCNjkyNkNEQTBBRDA0NDVDOEY2NkNEQUQzRjVCMDlBRDYyOERDMzg0MEVDRkM5QUU4ODhCMjEyQ0JDN0U5NTcxQworMkFGNQorQUE5QUM5OTQ4NDBGQzEyRDE3MkNFQzEwMzUzRkQ1M0VDNjRFRDI5RUU1OUU5Q0I5Nzg0NjY5NzVGQTA2MTYyQkQzQzAwQzU4NTgzMzQ2CitGODZCMkREMgorN0Q5MkM2REI2QzM2OTIyN0YzMzY2NTU3MTcxRgorMkY3MkFBRTMxRURCN0YyNDE1QTMxMkZEMTMwQTI3NTkzQzc2MUZBQTg0MzdGNzFCODVDOUFDMzAzMUEwRjlDNDMxM0YxRDJGMDUwRkQ5N0I1MDg0OUJCNDQ2RDBBRDNCMzVCNEI4NDE2RDg4QTZFODczQTZERTFBQzRGRkJDNTRFMTRBRDg4QkU4MDdGQjc3NzU1M0U2MTUxNEFBN0M5RkQ5Qjc4M0ZDQUE4MjA5MjVGQ0ZCNzNEOEIwMjVBMDBEQTI0NDIwNDFBQjUxRDhENzEyQkU4MDVENThENzYyODc1Q0VDQTEKKzUyMDk3ODdBCis4MTBEQUM5M0MzOTcyQjU1NDU5RDE5RjkzOQorQzhDNTk3QzMxQTU2MTJGMjM4OTM3OERCQjhBRDkyMDU0N0I0NUFCOUNFMkYKK0RDMEQzRTkwCitBNkU0NDM2ODEyMDAxRDM3Qzk2QkNDMUU1QworQUIxNUZGMTlCNDRBNEIzOUQ4NTUwM0RGMDI0NDdBOUFDQjQ1QkY4QUM5REVFNUY5M0I5NzA1QzNCMjk0MDdERENCRTY4QkZBMjI4MDM3OUUwOEIxRENBNTEwODVDMDQ5NzJBNDBBQkY1NUFBMzY1M0M3MDgKKzY3QjE4QzAyCitGQUNBNUI5QUMxMkU5N0E4NjFCMzcyN0NBQ0Q5CiszRUNCMTU4MDlDMDY0QUUxOTQyMkQzNzNGM0NGNjJDNjZCODdCNkE1REIzOEZBNzA5Q0ZFMkRBNDBEQUI3QzczNTAxMDlGRUE0NEFDQzVCQjIyRTgyMzJCQkVFRkVDMTMzNzI4NjZBNUQ3RjBFQzdEMDI3Q0RBQzJDQzhFMDhDMDU2QzI2OTI0RDRBQUJGOUYwNTMzNkUyRkNCNkZGMTcxRDk0QTBBM0Y5MkU0NDNGMDk2MzI1NTE2QkU4MzVEMTk2MUZDRTA2OThBNkZGRTIzNTJGMEFFODc1ODBCMEMxMjYzMjYwOTRFQkMzMDJCODk3REY4NzQ2RjA1OUUKKzQwNTkKKzdFQzU0MAorNjFEODEzQjEKK0UxRDE4MzVGRjE3RDgyMENGMkQxQUQ4RUFECitDRkVFN0U5MkUzNUIxOEE0MzZGODBBMDQxNDBBQkMxODU5MEE3ODdFNDQ5QkU1OTE5QkIzMEE0MTZCN0UxNDc1ODI1QUY4M0EyMzQyNzE5Qzg2NzVFOTUyMjMxOUJENDI4RjI1MjEzMkE5N0I3MUJFMDNCRDUxQTE4Qjk1NTA2RTJCM0ZGMTZDQkQ1NTM2RTY5RTAyRTg4NDQ2OEYxNzIzNTREODM1RUI0MjIwNUYzRAorMDYxRTIxMDAKK0QwNDgwQkIyNDA5RDgzRjkyMkQ4OTZBQzA5Cis5RTNBODBDRkEwODNENDdGNEU5QURBODA1REJGOEI2RTY1QjEwRjU5NUM5NkVEM0Y4MzRDQThDREE5OEE3NTg1MTY5ODc2RDRCOEU5QjMxMzI4MzE2ODFGMTVEOUEyOEJCQTY1RkQxOTdDMDc5NUQzMjQ2NDZBOEEwMjlENTE5OEM5ODBEMTM2REUwQUM4N0I4MERCNDYwMkYzMDI5ODg2MzVGMAorQjNGNkJEODIKK0VDMzY0REM2NDMxMDQ3MDY1QTI1NEYwMzQyN0QKKzBDMUVEMDYzNDAyQUNCQTg4OUI1OTdGRjI5ODAzOTdBQzZFMDVERTg3RUQ4RUM4QzMyMjlGNjgxRTZCQTkyNURBNzc1NTVEQTBBNDIzQzcxOEJCOUMwMzI0QUEwNkE1NkM4QjFEQTFBNzFDMzY0RUZFQkQ4MDdGNUU3RkZCNkQ0RENGMjEwRUVBMDFFQzczOTZGRkI1NUNGRkU3NzEyRDM2RkFBNTFFOTdGM0NGRDUxMTRCNkNCREZDQTY0MTJEOEEwRDFDQzA4OTIzNEI2NENGMjVBNjg1MTMxOUUKKzk3REYxRUQ4Cis5RUZBQjVDNTJEOEIzRUM3RUM2NUY3ODVBNQorMTg5NzFBM0JFQTA1N0VEODc4Q0JFQkE5MkU2MDcwMUI5NEM3NUJBOTlDMkEyNDZFRUQxQjE3Qzc4NkZBNzI1REIxMUVCRUU3Nzg1NjVDOThDOUE5Q0NGRTdDQzJBQzI5NDlBRjlGNzQyNzJEM0ZBMTQ4NEZCNUUwOTQ0NDI3QkFGODcxMkIxQjYxMkVCNzIxMTg5NzU5MEJEMjAyNDlFNjY3QzI0NDc0MEZCRjBBQzRCRAorMjY5NTcyNjgKKzIxNUM3MjYzOTlFNjhBMTdERUVDQjU4RjgwCis5NUQzM0I4MzAzNDVDRDc0MzhBRTk4OUE0M0YxMzU3QzMxREUwNjlDNTQ2NTNFNzdBRUIzMUIwOUFCNEQzMTNCN0MwQzY2OEZFOUZCMjFEOEFGNzg5MDY2QjZCMDAzODRBNzU4QjFFQTQyNTgwQTlBMDE2OUIyODMyMDA0REY0ODY1NDY4OTI3MTRGRjA3QkREQzgzMEIyNEE5NjdCN0RGNDg3NjcxNjk1NDIwMjVCNTlEOEZFRTQ0CitBN0U3ODMwOAorQkYxNEVCNjc3NkZEOEJBQUVBRUMzMTM1MUMxOAorRjBDOTNBMUI1OUE4Q0JDRUY5NDczRUI3MDFEOUVBQjRGRDkyQTM3MkVERDcwQjg4RTkwQzA3RUQ1NTdDQzJCRjlENEZCMkFCRjVFOUUzOEJCMDgzRjYzRkU1ODc3MTlFRENDNDY3RkFCOENEMEE2MDYwNTFDRTdFMkFCODNGNDY2NjYyM0MxQTAzMDU0QjM4RTIwRDkzQjY0OTE1NDg2RENFMTgxQTM4RUE3OEMwMjZDMjZCNTAzMzU5M0I0NEQ0RDhGQkVDNTA0RkI1RDg5QjdGOUM5RDZFNkIyQTJGOTUwRTJDMEZFNTVEODZCNzBDNDM3NzY5ODQ0N0Y5CitFQTQ2CiszREU4NDg1N0U2MjBBM0YzRjMzRDlDQkJCOTNGRTA3RTYzRkUwQzYxOERCQzNBOThCRTdEQTc1RUJBNDRBMzQwMjZGNDhEMjkyNEZDM0JENjc5Q0NDMTUzNUI5RDgzCis3N0IxNjdGMworMUY0QzM5QTZBNDcxQzY2RUQ4QkQ1QUNCOEJGMQorMTc2OURBQkY4MTE0MUI2ODUzNzc2QUU5RjFDMzRGNkY2QkQ0RUM1MEI1NUMxQTgzMzRBMjFGQTUyMjAxN0M0NTFGMEZBNkJDODJCMEQ1QTUwQzczRTdFRkQzOTU3QTBBQUFDMjAzNTczRjNDNTZGNjBEODRENjIzOEVDNzJFNzkxOUQ5MUNFRDdGMEQwN0QyMTA2NEZFNDIzNjUxNjhERDFCNEJERThCNkVFMkFBMDRBREZGQUIyNkM1MzMzRkIxQTVCNDcwMzEwQUUxMjhCQTZFNDM0MTYxQUMKKzZFNTQyODUyCitFRkQ5RkUwRjA0MDM3NTNDQUI0RUVGMzQzNQorNDNBQTk0QUI4NkNGNTNBREVDRjZDQkIzODFFRkU2MjE0REJEMUVGNDI5NDlBQkFEQTM5REU4RDNGRjU3RTFEQTNEMTAxMDcxM0Q1Q0IxNDY1QUEzODMwQTMxQ0E5OTRCQjNCNEI1ODNCRUU2QzFBOTYzQzlBNjdFMTc3MDdBQ0E5NjhGMDYzRjYxNDcyQUNDNEI1NDAzRUMwN0JCODVEMAorM0JBRkU1OTEKKzI3REJBRUMyNURDQTlCQURDN0VGMkE1QjE2RjQKKzIxMkJBNTEzMjlDMTUyQkE0MTNDOUYwNTQ2MDY1RDE1MDI1QkI4QTBGODFDMkE2NENCMkM4MUVFNkY5QkQyNzM5QTNDNEZFMjc0RUU0NjJDNTQ0NDYyMjYwQjc4NkZCNkNEM0E2QUI0ODY3RTgxRkRCRDFDQjNBN0IzMTFFOTRBNDNDNzNDNTZFMDgyMEE3QzkyRDU0RTQ5RjM4MjNDNjBFNDVENzhCNkI0ODk3OEM5QTJFOTc2RTZDNEIzODE0ODY1M0U4ODYxNkVFOTZFOEE1OEUyRjlBMTZDREExMTQxMTBGMzYyNUQzMjE4RTAyODY5NjgwOUE5Qzk1NAorNEQ0NQorNUZDNTBDNTEwMEVEQUNDN0M4NzFDNEE2RjI5MjU3ODJFMTA1MDZBRjJDREI5MEI4MjE0RTFDMjJBOUFDMkMxMTM0NjlEOQorOTZBNkIyREUKKzJGODY3QTM5Mzc4QUQ1ODc0OTBDNDFFQjgyCis0MUFCMTk0QzlDNzlGNkM3NkNBRTc0REI4RERFRDk5QjM3QTE3RThBNEMyNUQ4Mzk3OUFDOEFDREIyQkZCNUVBMTQ0RjIzNzA4QzY4RkZGQzZFQUNGRDRFRURFNUE5RkVENkIzMjA5MDlDMkIKKzg5ODZGRjNBCis0ODIyNTA0RDYyQTE2MDIwRTQ5MDk5Q0QwNjM1CitFMzNDQjc2RUM5ODIwM0M0MjIzODc2RkI3ODcyQzU4NDExMkM2REJBNjIzOEU4OUQ4NjdCOTNBNzE0MURGMEJGMzA5NkZEOEE0MDY3OTY5ODNFQTJCRTFGMEFBQzQ5NkEwNDJBMDlFNTY3MUI3REM5NzBFRUM1MzFCRDU5NDE5RjhBN0M4NjA2RTlBN0I5MTZFNzQwMzA5OERENDI2RjkzNjEyMzg4NEVCODM1NDg0RTNFODI3MDIwRkM1Q0E1ODVCN0EwRDY5RDA2M0Y1NUJENzA1MEUwMEU3MTMxNjYwRjlEQzhGNDBDMzY4NDQ5RUZENzJCNTk5NDlDMjUKKzVDNEMKKzY4MjNGNjIxQjM2NDZGMDM4Mzc1RDVDRkE4MDJEODY2MDc0M0QwMDE4OEQ4MTM3MUVFMTA1ODNCMjczNTQ4CitDRTVDRkNGQworNDI3NTMwODc2Q0FGQkVFNDlFRTg1NEVDMEFBQworOEI5ODFBRTg5QzdGQzUyN0Q3RDU3MkE0ODRENkY3Nzg1NjA3OTkyQzVCMTZBQUZBMDdCRDkxNzU1NEJDOTkzOUMyOEM5QTQ0Rjg1Q0VFRDQ5NjcwMzBBODg1OTVCMTQ5RkVCQjNEOTk0RjA5RjkyRjNDQTIyMEVCMzdEMEE4OENGMEJBRDUyREJFOThGNjMzMDUzNjQ0MzM4NDAxREEzMTlCOUVBREYyMkJBMzYwRjU5NjQ5MUQwRUVGMTgyNTE5RkVDNDg4ODhENEI2OTM5RjBDNjAxNEE4CiszOUQ5NEIwMQorNzhFQjY1QUJBQUIyMTdFRkMxRTE5RUU0MDcKK0ZGNTBGNEQyODQ2MDdCQTU1QzcwMkU0OTExNzQ0NTEzMzRFRDFCQTREOTJGMzY0NTBDN0M2QkU3MTY1QkRCQTg2MTM1QzQyMUEyRTA3OEFFODNBQzE5NDgyOERDMUNFOTEwOEYxREMxM0VBMDAzMUIyRkMxQTcwRUFFQjJGRDA4QUYyQkY2QzYyODg2Cis5MUFEOEIzMgorMkMyMTNDQ0NEODlEODcxOTVGQ0YyQzFBNjRFMQorQ0ZBRDlDMjRGNUM0MTVEQjY0RTVGN0NGQ0UxQzk3NzdEQUY1NEJDREZGQkYxQjA5QzQ1MDMwNjZCMTVFMTQ3MURCNEIzNDVDRTkzNTQ4MzdBRkM1MEY3Q0QyQzY0Q0QyOEVGQjQxQ0NFQ0IyMDE2QkQ0RUEzQUIzMzI5M0M5MkQ5N0Q4NTI5RDY2QzYwMTUwQ0M3QTI2NkU3OUZGQzQyOURDQkRGNzEzQURENjQwMjYxRDY0RDM1OUQxQTE2RDg3RDc5QTEyMkI0RjM3RjZGODJBMzQ1RkIwODQwQTI1M0Y5QkQ5OUYyODdDRDNFQQorMDRBQTZBOUQKKzJBOTM5RUUyRTIwQkFFRjk1RjE2NjBCNDY4MzEKKzNEREQ4OEYyN0RGN0FCNUE4MzlERkJGQTZFOEJDRTdFRDBBNzZBODdCMUM1MzJGMjA1NzYyNkRDRUFBQjZFNjIzMjM5RDI5NzIxMUNGOTNENDM2RUYzOTlBMTY5RjcwMThGQTQwQzgxM0VFQjdEOUJBOEE1NTNGMkQ0QzAzN0ExNjdBODlGNzg0QUJFNjk1QjAzMTcxNjlDODQzN0ZEQkMyMzcxQzE4RTM1NzlBM0JEMEFDMDBGNUI3MDI4NDNBODMyRjU4ODM2OUQ3NzBBMTg5QkE4CisyMEMyQ0IzNgorN0RCMkU0MTYyNzA4MkY2OTE0RjM1NjI5NEEKK0ZGQjM0NDkxQjdGRjc4Q0RGM0YyQzNGM0Y5RTVBREMwMDA2QzIxRTIwNjYyNTdFNjQ0RTJFODdEQjg1OUUxQzkwRjU2NDMxRDFFRDcwQTIyNTA5RjkwOTVBNTJDQzY2NEI1MjVFMENFMDIxQ0E3MzFCQzc2M0MxQTVDRDlGMkE0MkEzMTlBMTI0QkI1M0ZBQTQyNzI5QTlFNDBGNzZGRDYxNzczODE1MUE5NTA1QgorNzBBMDJFMzkKKzk2Rjk4MTdGQjZFRTNGRTE3RkM1MDk2OTQyMjUKKzg1REZCRERBMTQxMTAyNzkzODk5RTNEMTk5QjIzREM5NTc1MEI3QzZGNzY0ODVGQzE4MjI4NDE4RjU2OTc4NDIxREM0OUU0NEIzN0Y5Q0ZFOTVGQzE5OTM2MzFBQjRGRjc2QzFEMjM5NTJFOTUzRkZGREIzRkIyMzU4OENFNjExMkIyODgxRThENUQ5OEY3NTJERjE0ODE0NjlENkRDRUIyMTM3NTMzQTQ5RDE3RDg0M0QyQkMxMTRBRjM5NzZFRTc2NDZBMkFCOEE3MTY4NDQ2OTlBOTA0RDQyRjFEQkZBODhGRUVDMTE2QkZCRUU3NzZBOEU0QTAwCis5QkY3M0NENgorOTkzOTNENUU1RjI3QTg0NkUxMzg5NkRCQ0IKK0JBNTNEMTJGM0UzNThBQTQ5NzkzQkNBQ0IxODA5REY5REM5MjQxNkI0REM1NTBFNUFBRTZDRkY4RjIwQzI1Q0I0NDE1QTZDQTJCMjQ2QzQ3ODhBOEU1RjcxMUU0M0M4RkQ4QTgzQjM3MDJDQTJBNUJBOEVGRDk2MTE1MERCMDhEMkYxOUEwQUFGOAorNDZBMjMzMUEKKzMwODRDRTg3OUE5RDNEMDI3NTkwMUVGMjlDCis4QzFFMzY2MjIwNkQyN0VENjg5NTU5MDk4MEQ0OTU1MDIxQTM5Mjk4NjlBNDk3RjI5MDdBNTVFOTY3ODNFNTQ3MTBCRjc5Q0NEQjEzQkQyQjk5REYyMEZGRTNEMkJDRjhCNzQyRTkxNzYxQjgxN0NBRjJGQzU3NTA1Mzk4ODUxRjBCQkY5MzAzOTFGOUUwNEQzNzEzMEUwMDQ2RjEwMUQxNjkxRjcxOUMzNTdGMEM1NTI2M0FEQ0Y4ODYzNzMwQzYzNzE5CiswMUJFNjA0QworQ0Y3NUZBNTNBRjM5MzVCRjY2NzEwQzIwNkIKKzc4RDZCOUVCMTQwOEQyNjdCNjk4MjYyMjFCMkE4MzYxOUEyMTE5NjQzREFDNTNCMzc2MDc5MEIxQUJGNTY2RTJGRUIxNzJBNjg2OUNFNUNDMzJDRjEzQ0M1RkZCMEVFMEQwQzQxMUE4N0U5MjFGMkUyOUIwMUYyQjFEN0NFOTMwQ0M2NTg3MEFBNzE4RTI3NDg5NTg3MDMwRUM1N0YxRDREQUM2QzQ2NDcyRDc4QUZBMUEKKzRCMTBFMTA2CitGMzA4OEYwQjJDM0U4RUM4M0M5OEE3NjQxNjE1Cis1MzQ3QUIwNjMzQ0JBRjM4NTAwQzMwQjMyNjgzODE0M0MyODY5MjI3MTBCMUNDOEU2MTMyMzNGNkY1QUZFRjI5NTU1OEVCNjgzNEQ0NTkyMjVDMzRDMzJDQjlGRjMxMTJBMTk1RURGRUZFRDZDMEU3RDhEMDNBQ0RBQjQ2MTdGMTE4RTNDMUU0QTNCRTE4NEM2NEVFRjY4OUQ2NjE0QUM4RkRBNUQwQUYyRUQyNEE5QjkyQzIxMjUwNTRDRjU3NUI4NEVGQTdCNDJCMzRDMDAzNEIzQ0IwNTlFMUM1QUU4RDMxMzcyODQ3MjFEQjI2NzA5MkQxNDcyMUY2RUQKK0Y1MDAKK0I0NjEwRTMyOEY5RjNERTY0NTAxQjIxNUEzNjUKKzM4OTBGODNBCiszNkE5MkQzRkQ0RDk1NEY3MDRCNEE3RDNBNDY3Cis5OEY1Rjk3NUQyRTJGOEE4MUMyODA5RThCQTREOTI3MDBGRjhEQ0U1OUZDOTZGNkYxQ0ZBNDRCMTRBQUYyNjUyOTMyMjhDRUZDNTQzNjM0RDYwQTNBMDVGMUNERDM2MkEzMkEyMUJFODNCMUI0OTE3NTFEOEVCMDQyMkRGMDI0RDBBRkQ4NDU5QTU5MTQyREExRjBCM0ZBRkE3NEY3N0Y1QTQyMDZBMUZGQjI4M0M0QkVBRjI0NTE0OEQ5RDlEMzc4MUEyQ0ZDREEyQ0E1RENBNTY1NUJEMzA5RUZCMkNDM0FDNkNCRTVDOTUwMzVBQzNBNTUxRjA2QTdDMEEKKzg4NEIKK0JDQTU5NTZDNTg3MEJFRERENjNDQjNFN0E5NUNFRkUwMTUwOUE2NDQyN0M1NUM4MUM5CitBOTVFMEE1OQorQkVBOUE2NzM3RjVGN0NFMzcyOTg4OEM4NTU5MworNkVGMTU1RENFRUNFQ0RFNzE5MDYwOTIwOTlDQkM3RkJDRUFENEU3NjkwQ0E0OURDODE5RUE1NkRCMjAxREMxQzJEMTk2RENGNUY2RjhFNjhGOUEwNkE0RTc1QjRFQUJGMTY4MDNEMTMzQUZCQUMyMzdDRDg3RjdCRURFRTBGREQ2MDY5MUM3N0Q5MzgxNDA1NjQ4OEFDMUE2QzA3OTc4QzZFMzlFMTkzREU4NTU1QjE5QzAxOTQwODQ1MzU5NzAzMTM3N0M0QjQ0Mjc3Q0VGMjZDMDQwQkRBRjREMDVBMTNCRjBENDEwQUVDMDNCQzMyQ0E2NzkxMEYwRkYzCis2QjJECiszMDYzNDNDRQorOTUyRkVBQTNDQjVDMEJBRDQzNTgwNUZENUMKK0NFNjQ3Rjk5OTJBNDcyNDA5NzI0QjVDNEQ0QjU5MTNERjk2QzAwMkU2Qjc1MzEzMTc5N0Y2MUYzQ0NEMEQwQUEwQTdGNDVBRDg1NUNGQjc2ODcwNjcxQTU1MjAzQzFCMDE4MkEwNDVCRjRDODgwNTNBNTE1RTZCOUY1RTMwMgorOTc3MDI3OTUKKzc4OUE1QTkyMjlFNTUxMkNGNzNENDkzNEY2NUMKKzIxNkVCNkMzMThBN0EzRTNDNUNBRDY5M0RCRjA5MzgzQ0JCMUUyRDlDNEUwNzBGMTAxMkU4MUMzOEYxMzA2QkQ2ODg0RERFMzYxOEI2N0U0NkRBOTM0MzA0RDM1M0ZDQTE5N0Q2RTQ5Q0ZFRUI4RTA2MTI2OTU2NDE0Q0FBQTEyQjRDMkZCMUM2REUzRDc3RTlGOEI1QjQxMTcxQzlGQkE3MkNGNkEyMDk3M0RCODAyMkVDOTdFNTYyNUU1M0QxOUQwNzBENkI2REFENzFGMzA1RgorNERBMDY3OTUKK0M1QzVCNjdGRTE1NjIxQ0ZDNDQyQUYwRURFCis2NTZDREY3RUU0NjQ2NjNDODAxRTBGRkIwQkZFRkZCMjdENEY4RUU0OEUxMAorNDY3OTYzMEIKK0ZERUE1MTYyRjNGQjJDMTY0OUJDQTQ2M0YzRjIKK0RDNDZERDRDRjgyNkQzMzIKKzE5NkQ5RjQxCitEM0QwNDFGMTE4QzNGMjNDQjREMDRFNUFCRTA4NkI2QkFDQUUxQ0NFRDBFNkQ2QUQ2ODk5RjA4RjgxRkI2RDc1MjVGOAorRjA3NDhDNzVENkQ3M0VGMkIxOUJFMkM0RjRDQzBFN0ZBNkQyNzBDNjVBNUZFRjM3OUFGQzFDQjg3QTAxQTk4MTkxQjFEMkExOUZDRQorMEVGODdDNTRCMjUxNUYzRkI4NTFCRkZDMTQ0OEIxMEU3ODA2OUUzNUJFOEY2ODhGMkFEQzhGCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ1IHB1dAorZHVwIDMgL0MwMDQ2IHB1dAorZHVwIDQgL0MwMDQ3IHB1dAorZHVwIDUgL0MwMDU0IHB1dAorZHVwIDYgL0MwMDU4IHB1dAorZHVwIDcgL0MwMDY3IHB1dAorZHVwIDggL0MwMDY5IHB1dAorZHVwIDkgL0MwMDcyIHB1dAorZHVwIDEwIC9DMDA3OCBwdXQKK2R1cCAxMSAvQzAwNzkgcHV0CitkdXAgMTIgL0MwMDgwIHB1dAorZHVwIDEzIC9DMDA4MyBwdXQKK2R1cCAxNCAvQzAwODQgcHV0CitkdXAgMTUgL0MwMDg1IHB1dAorZHVwIDE2IC9DMDA5NiBwdXQKK2R1cCAxNyAvQzAwOTcgcHV0CitkdXAgMTggL0MwMDk4IHB1dAorZHVwIDE5IC9DMDA5OSBwdXQKK2R1cCAyMCAvQzAxMDEgcHV0CitkdXAgMjEgL0MwMTAyIHB1dAorZHVwIDIyIC9DMDEwNCBwdXQKK2R1cCAyMyAvQzAxMDUgcHV0CitkdXAgMjQgL0MwMTA4IHB1dAorZHVwIDI1IC9DMDExMCBwdXQKK2R1cCAyNiAvQzAxMTEgcHV0CitkdXAgMjcgL0MwMTEyIHB1dAorZHVwIDI4IC9DMDExNCBwdXQKK2R1cCAyOSAvQzAxMTUgcHV0CitkdXAgMzAgL0MwMTE2IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xOCAtMjA3IDc1NSA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzRDMjY0RTVGNDVGMDI4NkJEMUIyM0QyNkMzNDYyNkUwN0EKKzVCMDM5REIzNkMxODAwNUVFMzJDRkE2NAorOTA2QjI4NUNCOEJEN0YwOTY4CitENDdGNTI0MgorMjJEQTI5QkI2M0VBMjlBQzEyOTNEOUYzNjUKK0ZERDA5MjY4NkNGMEQ3MzlEQUU3QjRFQkVDREZFMjFCOEI1ODEwQjE1QjM1RDcKKzhCMUJEQjY2CiswMkI2RUQ4ODZBNzgzQzlGMkUyOTU5REFDQQorOUY4QzY4N0NBQzUwRjk4REQzRDk5QzkxQTM4MTY4OTRGNUEyMjMxODE0MDU2RjI4MDVFNDUxRjY2QjU5MjMKKzc5QjQzNERCCitGNzA2MzhCOUYyMDQ0RjNBQkVBMTEyMzUyOAorMTRGQjZGQUJFMzcwRjY0OTRBNTRCRDE3NDBFOTZEODY5OERGMzZERDgzMTNCMDVCNTU2RQorRTA0MzI0MzYKK0RDMDA2MThGREM0OEYwRTlDQ0JDOUI4M0JGMzUKK0M4QzNDMEYwOUIwNUUwOEY3OTk4NUQxNDg2NEQ5MTNDNUQ3QkMyNjhCNkJDQkY3N0UyMUUzNDc1MURGMjBEN0MxM0VERjcxRUNDNUVBOTU2QTI5OEE3NDQ3RkMxRTNDRjM1M0NCMzVBRDY0QUFFQUVDQzMwOUIyNTNEQ0Q4OEM0REI1NjdCNDE3QzhGNkVFOEJBMzc5QzRBQjkxNzQ4OTM0ODI0QTNBRTcyNzU5ODRCQUYyMjZGM0ZBMjNBN0M3MzNCMEM0QkVGCisyRDA4NDU0NworRjUyRkEwNDQ1RkIzRDhEOEI2QkNDQjcyRDYKK0UyREQ3ODhDRjZGN0I5NDFEM0FFM0ZEM0I3RkEzODAzODQ3RThCNDgwQ0JDRjRDMzFGRjg3ODQwRUYwRDZGRjVGMDE5QjJFMDMwMkNGNzk0QkJFNjlFQTQwQjAwNjk0MjBCOUUwRjRGOEM5RAorNTBBRUI5M0YKKzg1MEE1NDFGQTc5Q0I0QjU3MTNEQzE5OTQ1MDMKKzQ2QURFQkVGNTVGMEY3MDI5RUFCM0E0OEVFNDI2NkExQTlFMUJDODJDQUYxNzYxMEQ3NTJDM0UzOUZEQTFDRjczNDgxNjlCNUZEQ0U2Q0JGNDM2RkE0OTRFNEUzQkExOTgyQUU3RUZBNzlCNkE3QTJERjFFRjRGNDMxQjA3RjNGRDhCOEZCMDE4NEY0QkExMEEwMDEzN0M2NzMwMDIzMEY4QkU3ODUzQUEwRkQ0MkU5MDU4REIyRjkwREEwNjU3NTVCMzY2NjU3MjRENDc5NTAKKzMyQ0M0OUMzCis3NjdBMDIzMTE3RTUyQzcxQTFEMUE2ODgwMjNCCitGNDkzM0Q3QkVBODE0RUU4QTk3MDA4OTU3MzlBNzgwRTVBMTg2NDdBOTUyQTU4NDZFNENDM0Y2MjRFRTYwQjZDMEIzNkNBM0ZGQzA2RUI1NTU5RDYwNzY4NEMzMEE1M0I4Mzk3MENCMEE1QzcwOENBQzg2NjAwMDFCRTM4NjE0MTgzMjk4QzUzMEQzMEYxMEE0Q0FCMEI2MzRFMzEwNUJDRjhFNEVFRjI5QjQ1N0QwRThFNzNDM0U1RTdGOEExN0NERTRGQTU5NUJBMDQxMEVCMjBDMDcyRUY1RDMzCitEOTg3QTgyQgorOEE2QTZCNTU5M0I1RjFBRUNGMTg4QzJGQzI2RQorN0Y3QzJGMzYyNEVGRTUzNTNDRTcxN0YzMUE5MjY4QkM5QzE1RTVFMTUxQ0I2RDk0MUU5RUI2ODMyREQ2NTFBMUY2RjI3NkIwOTRCNjA4Q0ExQzlDOUI4Mzc3NjBDQjY0MDc5QUM4NkM1Qzk1NTAwNUQxNDMyQ0Q3ODZEMTJCMzgxNEYwNTEzRjUwMjBDMzIyNkU3QkJBNTg2MzhEMjg4Nzk1QkJCNDA2Mjg1Q0NDOTY0QkI5RjVDRUU2NjVGOTdERDdGOUVGODQ5RDAxMTk4MjdFRjEzQTc1ODVBRjg4MDY1NDAyNzhCQzc2NkQzNworREJENTE2MEQKK0MyNjJDRDNGNEE1NTMwNDc3QjFFNzQyMTg3CisxRjg2NDhDMTJBNkI2N0Q0NURBN0YyQTVGREUyOTk3QkU1OEY0MTg1MjBFOUZCNEZFMTIwOEI5Nzg2NjU1OTg0RDUxNUM0QThDQkY1RUUwMjAwRUM0QkUwNUM3NTE3OEI2NUFDMkRFODM4NTZGNkZDQzVDOUFDMUQxMzU0QjUzNjE5QjU2QTA4MENCODIxMUM5NzcyMEU1RTFDNzUyM0M1RjI3QjY4RjZDOTEyMERENjU0MkZEMkFEOTYzMDRDCitBRjYyODE1QworNzFDNzM1NjZFQzFDOTQ5NDVDRjkxQzQ1ODE2QgorOUFDMTE0NkJBNEY5OUQ5NUVCQzcxRjkxQzkzNDA0NEQzQjlBRjBEOEI0MkQ3NDI5RkZERTc4MEEyN0MzMUM5QUVEOEQ5RUZCOEQ0REQ1N0RFMEM2MzdDNjBBMDIxREQ4MzM2NTc0NzZGRkRCMzdFNTk4RTVCQTFFNjlBRjQxRjdBQTQ2MjIyNTAwNjkwNkNEMjczM0E2MDJFQzM4OTY5QjA5OUFERDhGRDg5RjQwNkU0NDlGNjZEMTZCQzBDNDIzQjhDRTQyNUUxQUI0MTg3RTA1CiswNDVBODAzQgorMUY4Q0UxRTMzMEE5QkEyRkQzNzE1QTdEMkMzQgorODk5OTUwN0NDOUJEM0ZBQUNGQTU0M0Y3Qzk0QjlGMEIxMDIxQzI3RjQxRDk3M0Q2QTA0OTAyRUNFMTEwMURGRjI1OENCOTcwRTg0RjJCNTI1ODk3MDhCNDM3QTc5NEY2NTZGN0Y4QTk0QkQzNkUyNjI1ODc2Qjk1NTQ3MTI2ODgzN0RGOEMwQUU0MjQ1OTM0MkQ2QTVENTgyNzQxRDlCNjk0M0NFOUNFNEU4NDVBNzk5M0Y2NDg0RUUxRTM5N0M3NTZEM0QwOTQKKzU4NTVBRjRBCiszNTUyNUYwQTAxRDlBODhGOUIwNzdCRjZFQjAzCis5RjRENURDMTE4Rjg1NDVFMUIzMjkxMzcyQkY1RDYxRjJDNTkwQkMwQTVEQ0QyMEFCQzNFNzU1MTI2QjI2MTg0MTkxRDgxRkFGREQ0N0Y1NjNCNEUzM0ZDRTNGQTNCOUMyNjc2RUZERkU1MkM3MTdDRTU3OTQ4RkNGREQ1NjVEOERBN0ZFNjY4QTc3QzU1QUU0MzQ1Q0YyOEUwN0I3MEFBMTA4RTYyODBGQ0IxODlCOTBCQTJCODU2OTgwQzIwOUEwNDEyRjJBM0ZGMjBCQzZBMzNDNjg4Qzk0OEUwREQ1NTA0RUE0OUNFQTk0REI3QTY5QTM0ODEzNDAyNUUKKzIxQTEKKzdBQzM1QjQ0Cis1QzRFMTg4RkVCNUI2NDhGRTY3MzBFMjE0OAorQUQzNjNENDA2Qzg4QjBCMDkzQjBBMjM1OTRFMjkzQUVFNDlENjNGMzIxQzk1MjJEMEJENjIxNTU3MjVCRTAzMjJFQTRBODczRjc1OTlBNUMyODlFQzlBQkVGOTZBMjQwNDNDRjIwMkVFQzNDQjczMUFDRkEyMzA0RTk2NzY0REU3RDg5NjBCN0ZGRThFMTYxRDQKKzFDNkRDOUUyCitEQTM5RjhBNkI0NDMxOTgyMUMzNDhEQzMyMzhECisxMUMyRTJCMjdERjRCOEZBRURBNUY0QTg1NzdEQUMxQjQzRTg5NkIzMUI3NkRCQjQ0MEFDREQ4NDQ4QkY0OTRFNThBRTMwQjY3QkJDNEUxMDhCMzlFRTgyODQxODA2REE0QzAwREI5NDM1RERDQzAyMzkzMTBCRTMwNkJCNjU4MjY4NjYxQTUyRDAwOUE2NEJBNTM1RDE3OEUxOTZDMTg0NTE4MjAyNDFEOTBGOUU3ODZENDQwNUE1RkY3MjM4NkZCODU0RUFCOUFENkNBNAorNUUxNEYyMTMKK0E5NDYzQTY0NkFDMzJCMThBOURDMEI0NTg2CitDMzk5MkZDNTk5MUZGNjE0MzRERkE3NDUwN0UwNTUzQjM1MTEyNzk3RTExMjFFRjM4ODYzMjY1NTAzN0FDQ0FCMTMyN0JFMUI3MDVCNTc3RTYyRUQyODdGQzcyNDBENTFDRENDMkFGMzNEN0M3Njk3REVERTFCCis5NTJGQjZCRAorRjZGRTY3RUM0OEIwOTlEQjc4NTlCRkIwRDcxMAorQzgzQkNGNkEzQUY3RkQ5RDhDMDYyMjIzQ0QzRjJCNDZCRUI5OTVDODk1QjRCMjdERDY2MTQ5NTIyNjc3M0I4ODQzN0VFMTU4QTZEM0VEMTJGQTA1MzRBRDJFM0QzNEYxNDExQjg0NzlCRTZCNTlCN0E4RTYzMjAwMDUxRjk5ODIzM0EwMDc2NkVFMjMwREFGMEFDNTZBRDZERDA5OUZCNEIxQkUzODUyMDkwQzlGQzVGM0EzRkU5RkU1QzREMkM0OEUwNzE0OURGOUJFOEJBOUVCMTA4MDYzNjM0RkY4N0U1NTQ2ODg5QzQwNUJFQzNDNzg3MUVGMEFDNzU3CiswRjEzCitDNjYyRjY3RAorMkM5QzdDQTcKK0I3MzNEMUIzMThCQjIxMzg4MTE5NzJFQjZDCis4QjA0NUE5QzM1QzQxNzA2QjgxODM3NzQ2NUE0MUE1QjRCMTVBRUY2OUJBMkZBNjVGRTM3OUQzQzk0MEE2MEI2NEQ3NzYxQUExMzIxMzMyRUI5Q0Q3RDRBOTk0MTkzMTIxMDVDMThCOTM2QTkyOUMwRkVCMEJFRjNERjkwOTExQUZDMEFFODQ5ODgxRTQ5OUY2Q0MzMTM0OERBRjQ4MDhGNTU4NTg3OEE3RTRFNkZFREFBNUUwMDBCN0M0MgorMkJFM0EzNDkKK0ZFRjM3NDNBRjlEQkQ1RkI2OUQ2MDVBNTZECitEN0Y0MzA3REM4MTY1RTYxMTAyMUYwNjU1QzlEMkJERjNGMjA4ODdGMkRBRTk1NUE5M0VCMDZFNzUwNjI3NTY2NTg2ODY0MUUwODQ1RjU2ODgwRDA4OENBQTY0NEIwN0VFOEJGMzgzMTQwNjlGRUU0NDEyRTE0RTMzM0U0NDAxNDE2MzVGRDQ2NTE4ODE1QjAzQkQ1OEY0N0E4RUY0ODVBRUUwQgorQzhGQkQ0NzYKKzVERTI1M0I5REM5MkQzMjY4MkQwOEU5MDM0CisxQjQxMTM4MjA2NEJCNTRDRkNGNzNFNzk4MTI0NzRBQkE3NUEzMDUyREM3Qzg3NDgxMkZFNTYwOEMwOEY2RDREQThCRURENUZFNDk1NDA0RDk4QTM3OEQ5QzM4QUFCQzUzODAxRjg5RTc5MDhFMTRENTI5RkQxODRCMzgyMzY1NUEwMjZBRjFCQTc0Q0U5RDVCNDczREI0MkM2Q0VDNDExQUYyOTQ1NjVGRUExRDNCQTMwMjlGRkQ1CitCOTNEOUM3OQorREI4REE0NjM1Rjk0QkQyMjAyOTBDNkYzMUYKKzRGRTFCMDM0NUMzMzMxNjU3OTdFMzhDQ0I4NjNGMjlCMEQ3ODcwOTBENkMyNDlFOUJFOTcxMzI3ODE1QjIyNkNERjlFODJDQjEyRTEyQzYxRDc3QzU4M0U2QjVGMzMzRUVGQTc4QUQzOTIzQzZBODZBMkQzMzU0MTI1NjFDMUNDMkEzMDUyOTdBMkI4REM2Q0RFMEMzNjI2Q0Y2NkRGRUNDRjE2MTM2MUU1ODg2RUU5RDgwM0Y4NzU1RAorNDQxNzg4MTgKKzAxMEVDNzAxMUQ3RjVCNzVGQTM4QzBGRjVDNDkKK0QxQUQ5OTZBQ0FGRDY0OUQyNTg4NUNDRThCNzkwQzY5RTU0NzM5NTQ1MkQ3NzhGMTlEQTYyQTgwNDkyMDQ1MjhBQTAzMDZDRjAzQ0M5NEM1MjBGOTk0OTYzQUIyRTg3MTA0NUIzM0YyQzBDMzI2OTU0MDY2OTAxNEFDNDMwMzhDODk5Q0NFRUQ3NkI0NzM4NUM0MjJGRTU4QzA3MjE0M0U4NTI3NEEzRDk5Q0Q0Rjg1NUI4OEYwOTAwRkY5QTg5RUNENzVEMDJBQTc0QjExMzYKKzBEOUVCNDQxCisyMThCRDRBOUQ2M0UwMzM1NzRGNUNGQjkzNworMUQzRkY1Mjc2ODNBQTZCNzY2REQ2RTlFMDc4ODc1MkZBRDg3RENGNjBCNTA0NEE1OTlFQjc3RDkxRjhGNEQyMTEzQTIyRDYwRUQ0RURBMUE5QkQ4ODFDNEVFNDFDRkFDOEI1NThBMTk3MjQ4OEQzM0E1MkZCRUU5OUU2NDkxMTlBOTg1NzAzM0M2NTE0MDFCNDhFNTU1MDUzRjlECiszQkMxRUJDMQorMURCOTI0RTdEMjg1RTA2MTJFMzE4MEU1MUYKKzE4MDBGRkIwMUMwOUE0RTQwNDU4RDIwOUE3QzkwQ0Y3QTUwMzcyOUI1RkMyODJFOTczQzZERkE1OEMyQTYyNkE3NUZENTA3RUI0Qjc2REQxNDBCNUVCNjI0NDAyNjJDRkY3M0NFRDgzCis3QzBERDk4NAorMjVBODcwM0QyNzA2Mjk1MzNDQ0VBNkMxNDREQgorQUMxRkMzOUQxNDJDREI1N0Q5NDNEMjI5OTRGNEQ5OEUyRjcyODlBNDVFODcyNUI3N0JGQzg2MEVGQTdCNDJENzMxQjJCODQyMEQyNjVBODhENDJDNDdBMDYxMDUwMzc5NUY0MTI4REQ5RDE2MzMxNzVDN0JCNTg2OTk4MkFCQTc4ODY1MDA4MzE2RURENUE1N0ExMThCMzNFNENFNzE5OUU2NDM0QUM0QzJFMzJDRTZDMzVCQ0Y4MUEyNzA2Q0Q2OTMyOEJBQTBEMDcxMkQKKzU3ODk4REI4CitCMTI2MTk2MTVCQUY4RkNGMjI4MEJGQTA3RAorNzcxNzhGMTA1MDY0NkZDRDlCRkQ0RDUyRTA5Qjk4NjExNDY1RjdCQUMyRjg2NDE1NzQ2MkQzODc4MTU1MDkzMjA0QzIzNDE3OTNBMDRCMjM4NzM4NkNBOTIyQ0MzMDEwMDVGQjQwNDMxQjk2MjBBMEVEMUIwQkQ3NEREQkNCRTAzMkNFNTk3NTU4N0EKK0VCRUNDNkIyCitFNjhFODQ3OTc0MDgxQTUxQTkyMzM2MUVDQ0M4CisxMTUyMTM5NEU5OTA0QzUzRTk3NTg3QzBDNDVDRjM5NTgxMzFFMEUzNjdEQzYzMjY4QzA5QjM3MUM2NzI4MUZBOUFBRjJDNUVFM0RDOUFGMzdFQjMwOTBBNEYyREUwQTQwRUQ3RTZEQTAzQzIxRjA4M0Y5NjQ5NkNFRTlDRjQzMjg1MzhCM0ZDMUI2MUIyQjcxRENGNTYzN0EyRTVDNTIyQ0RFOTlDN0VGMjk2OEIwMkI5ODQxQTc4RjY5M0Y4QjAzQUZCMDU4NEI5NEU0MTY5MjlBNzBGNDU4MkRDQUVDM0UwCitCMzlGNkY1NAorMjJFMEJGQTg5MTRDNEUzMUFDQTM3MUE1MUYKKzY0Q0RDNEUwQzJDMzYwNURGRDc2OUYwRDg0MUUyQkNDNjFFRkJFMTNFNUIyRUIyREI2RTY1OEFCOEQzNzYzREYyMjA5M0Y2NkRCQjBGODVDMDYwMDEzRUQ3Q0IyQ0M5OUUxOUE5QUU0MUFEREFBRURENDc1NEVFQTJDMzgzRjMyQzM4M0M1NkFGNTE3OUQwMTQ5MTRFQkVFNTk3NEY2NkFEQ0UwNEVDRDMwMTlEQ0FFNzkKKzhGM0U4REU1CitBOUUxMEI1NEUzMEVDMUVBNjhBN0ZDNDA4RUM2CisyNUUzMTBEQUY1RTY0QjlEQ0VFRDE3NTc3RjhDRjE0MEEyOUUyQUI2NjgyNDMxMzFFMjc4N0REODIwNzhCQjZBNzk0QURENTcyQzkxQ0Q3NUQwN0JBNzA0NjcwM0IxNTcyNkMzMkQ0N0M1NzU3Q0VBMkY5OTI3QzgxMDg1Q0ZGRUI1RENENENGMTRFQzRFMzQwNUFFQjlGN0I5REM0NTYxREZBMkEyREFBOTA5RTNDQkZDMzE5QUE4QkE3QjI0N0MyNzVFRkQ0ODM5N0Q0NEM4RjJCMTY4QTE1MTVCQjBFQjVGQjlENDc5NThBNkFGNDlFQQorNTM1MTcyQzYKKzczNDJEQjMxNUE2MzYxMjYzNEUzNTk3MDFDCitGODIxMzgzQjFCQUQ0Q0VCOThEMTBFQzI4NDc3RTc2NEU3MjE3NkRGOTJFQUE0MUI2QzJEQ0UwNjJCM0VBOTdGMjdFRUM4QzA5MTgwNDdENkY3OTcxOERFQUVEMDFGNEFCOEYyNUIwMzNGQzdBQzVDMTg5Qjk4QzYzQjY5NzQwMzMyQzdDRkE1Cis1RkRGQUMxMworQjlEQTA5QjgyOTY1NDE4OUVBNTlGQTlGODc0RQorMzFFQzM3MEMwRDAyRUU0RQorRUY1MkNCQjQKKzQ4NDM5NTJDRkQ2ODdGNkM2RTI5MDM5MDk1M0Y1NkIzMDA4NjZDQzMzNDNDNEMyNkI1QzM1MjAyRkFERjNCMzM2ODcwCitFMjFGM0FEOUIxQzY0RTYxRTgwNDFGNzUxQTZDRUQwRUU2QTI2RDc5QUUyOTM0QkM3ODQ4ODIzRTEwM0JERkM2MzU3QjI1ODdGODQ4CisyOUE1NkJCM0FCNjZGMjU2MTQxRUEwQzg0NjYyODQzNUEyODkwMDZBMjQ1OUFBMUUwN0YxNDIKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAxMDEgcHV0CitkdXAgMyAvQzAxMDQgcHV0CitkdXAgNCAvQzAxMDkgcHV0CitkdXAgNSAvQzAxMTEgcHV0CitkdXAgNiAvQzAxMTUgcHV0CitkdXAgNyAvQzAxMTYgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTMzIC0xMyA3NTcgNzIzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MkNBNUFBMTE1ODZEQ0ZGNDdEODcwQzVGRUI5MjlFQzVDOQorOEI3QUNEMjg3MUU0QTlGNjlFOEU4N0VBCitFRjIyRDFFNjA3NEY3QTAxMjQKK0YxRkM2NUExCiszMTY0MjUzNDM5MDk5MjQ4MTk5ODgzMjI5QzU1Cis5OEUyNTc0RjNBQTc1MjBDMjQyODAyNTkzMThDMEE0QTEwQjFEQURDM0I0QzI1RTBGNUMyODM4MTI3ODhGNTU2OEJCQzdFMThGN0FGQkQ4Qzc5MzFCM0UyRDJFOTM1OTA5MkQ1M0JDM0NGRjREREY2NDk5MjExN0ZBMDUyMzNENjI3RDA4QzRDRDYzNUQwRkFGNEYzRkRCQzlGQjg0OTdBRjU1OTU3NUU5Qzc2MDc4RjA2N0VBNkMxMTYwOENBQ0ZDMDk1MDYwRTNBCisxQjFDRkZCQworRDIwQjlCOUMwNjBEQjlFRTlCRjExMDY0OTg2RAorREE1M0E3N0ZDNkQ5NzJGODU3MTRGRkNBQ0YzODg3RjNFM0M1M0ZFMjAwRUU3QTg3QzE0QUYzRTVEN0M0M0I1ODFGRUI1NzBCODhFMzRBMDZFMUU2ODJBQzg3M0M5QUVDMENDNTM3QjgwMTIzMjg1RkIyNkNGQjgyREFERjkxMEM4MTNEQTcyQzlENUNEQURERjQ1NUIyRUMxQkIzQURBMzM3MUE3NzE1QjEwMDhENkFFRjczQjcwQjE5MTMwQjg1QTdFRjUwOTM3MkFCQTcxOEM0RkUzRjMxMjc5QTA5NUIwRDlFNUY5NzY2RTk5NDZGQjk4OUZFREE3MDlDCis2ODUwCis2MzFBNURENEUzNzg1NkM1MkE5NDc0RjFEN0NDNDNGN0M0QkZEMzRBNTYyNTY0OTc1MzIyQkYKKzA5QUE2RjYwCis2RUQ1RENDRTg3OTJDQURGNEQ0M0UxRjVBQzA0Cis3QTgyMDRGNDE3QzRFN0JEMTlGNkZGRkQ3RkQ1NzVEMjc0MkFGMTI4NTdFRkRBMkVGNUEwODJDMzJGNThDMTg1NjFCOUJBNzFCQ0IwMkRCMzM2NzdDNzRCMTVDQzEyNjM4OTE1Q0Q1RjY2MTcyNEI0QUIwNDJDMjM2MkY5NkRDQjhDQUMyNTlGQjIxNkUyOTUyREFGQjlEM0U3NDg1N0I5NUE3QjAxRDUxQjUyNTcyMDQ1MTdDMUQ4OTFCMDFCQTk3QUE2MDAwMEY2REVFRjI3ODYwNkFBMkRCRTdFOEEwRkZCRDRDOEFCOEJGQkM5QzdFNTEzMjkzMzY1NUEKKzlGMzEKKzI2RTE2MDcyRjdBOTBGQ0NDQTVEOUQzRDJEOTkxQkZERTQzODNDNEZGQUVFMTE2MTgwOUQ3NjVDQkI4QjYyMkNERDYyOUU2RjE4MEQ3NzNBNkYyNjVBNUIyNkEzMkREN0E2QTNENTUxNzFDQTNBNkM0RDM1RjkyNTc0RDA2N0ZFNUU1RjhDMjEwODY4RkI1M0Q4QUFFNAorRUQ1MENBQTgKK0RERDVFNkRBRkU5MTE3RTdBRjg4QkU2REMxCis5MUEzRkI1QTUwMzlGOTNCOTRERTREQkVFNDQ1MjFEOTUzOUUzRDUzQzdDQzQ2NTZERDBEMjZFNjBCODQzNEQ2MkUxQjBEODAyNENCQjQ5Mzg1QTFENzFFMTY2NDU3NjBBRjBCNzFCNzNFOEJCMUE4NzZDQTUwRTY5MjAyQ0UwNEZDQ0E0QUIxOEMzMUU1MUVDRTFBMjM3MzlBQjg2NjQ3REIzMEZDQTlDQzE3REYyMzcxREI0NjVEQ0NFRTgxCis4OTREMzhGQgorM0JGNkFEQTEzNjVGOUZFOTkzMjQzOEIzOTk4NAorOEI4RjBBNjkyRDUxOUI2ODMzREE0NTI0NkZFRjlEMzg0OTM0NzNCN0MyOTVFODIzMDcwNDBBMDBDMzRERUQ2RDUwNzVFODM1NUZEQUIxMDUwNTE3NEYxNDI1MDlCMjJFNzU1QTQwNzI3QjlENkY4NUI0NkM4RDcxM0Y0QzFBQTlBNzk5OTU1OUZDNzJGRDhBREQ3MUE4MUEyQjQzMEI5QjdGNzE0M0UxRDQyN0QyQjAyQzAyREU1QTE1ODczNzJERTBBMEQ2NkQ2MjhCMTMyMDRDMUZERTBBNTA4OEVCMjRCQjgzQTU5NEFCQ0UKKzIwRDcxNjAyCis3NDdDREEzNDk2OEUwODJDNkEwN0Q3NjhDRgorRkFCNENCOTZFRTcyNjQzMUNGMTUyMjdBNkVFOTYxQUMxODEyRUQ3RjNCQzU2N0VGRkE3MkRCMTY5QzlDRkY2ODc1MTM4MDkyMjUwRUIxRkYzMTg2QUJEMERGNjc1RUQ5M0QzNTI2MEM1RTFEMkIxQzBEODk0RjVDRERGMTU5Nzk4ODk4OUU2QzdCRjEzOUZBM0Y0NDFGRDk5NjczRkRCNkQ4MTU2QzIwQzYyNTRCCitDRjJDRDVEOAorNDBFM0E0NTU1MzdEMThBRUJCQTBBQTJFRjE5MworQUQxRThGMTRCODgxRDVERAorQzZGREQwQ0YKKzNEMkI2MTQzQTdCQzg5M0NGODVERjIwOEQ5MjUwM0IwMDlGQTQ2OUY0MjNDODJGRjZCN0U3M0FCMTU1RUVFRjI3MUJGCis1MUIzRDFFMTk4QjRCMUNCMDFGMjVDM0FEQ0MwRkU2OEE1MENCMkIxQTQzRDJGM0RDOTBBMzJCNEM5RjczQUY4MDlGNzQzRjlFNjZGCis2NzZDRkJDNjhDNjMzQTM0OTU0RDc4Rjg0MjlDNTU1OUU3QkI1QjFERUY3NTU1QjAxODZGODUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmkgMTIuMDAgL1BTT3dzdGR1dGNoaSBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0YiAxNC4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDFiMmIzOTM1MmIzNzJjMGYwMTExMDExMjJiMzMyOTJlMzIyNzM3MzAwMTJjMzQzNzAxMWEyYjI3MzgzYTM3MmYzMzJkMDExYjJiMzkzYzM0MzczMDAxMWQ+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MmIzNzJjMzQzNzMyMjczMzI5MmI+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDBjMGE+IDkzNDYgMTMzMDAgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyODAgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI4MCA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjgwIDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI4MCAzIDcxMzMgMzIgcword3N0OmR1dGNoMTRiIFNGCis8MGQxNDEzMWUxNzFhMTk+IDEyNzEgMTQ1OCAwIDIwNTUgLTEgcworPDAwMDUwMzAwMGIxZTE2MTQxYzAwMGExNDFlMWIxNDFjMTUwMDFlMTQxZDFlMWQ+IDIwNTUgMTQ1OCA0IDQ0MjQgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDExMzUyNzM3Mzk+IDEyNzEgMjA4NiAwIDE4MDUgLTEgcworPDAwMmMzNzM0MzIwMDM5MmUyYjAwM2EzODNhMjczMTAwMzUyYjM3MmMzNDM3MzIyNzMzMjkyYjAwMzkyYjM4MzkzODA3MDAzMzJiMzkzNTJiMzcyYzAwMjkzNDMzMzkyNzJmMzMzODAwMzgzNDMyMmIwMDM5MmIzODM5MzgwMDM5MmUyNzM5MDAyOTI3MzMwMDI4MmIwMDNhMzgyYjJhMDAzOTM0PiAxODA1IDIwODYgMTQgOTUzMSAwIHMKKzwzODM5MzcyYjI3MzIzMTJmMzMyYj4gMTI3MSAyMzMwIDAgMjIyMyAtMSBzCis8MDAzMjJiMjczODNhMzcyYjMyMmIzMzM5MzgwOT4gMjIyMyAyMzMwIDEgMzYyMSAwIHMKKzwwMDIwMmUyYjM4MmIwMDM5MmIzODM5MzgwMDM3MjczMzJkMmIwMDJjMzczNDMyMDAxMzFkMjEwMDM3MjczOTJiMDAyOTI3MzEyZjI4MzcyNzM5MmYzNDMzMDAwNDM1MzcyYjM4MmIzMzM5MDUwMDM5MzQwMDJlMzQzODM5MDAyZjJhMmIzMz4gMzYyMSAyMzMwIDExIDk0NjEgMCBzCis8NDE+IDk0NjEgMjMzMCAwIDk1MzEgLTEgcworPDM5MmYyYzJmMjkyNzM5MmYzNDMzPiAxMjcxIDI1NzUgMCAyMDgzIC0xIHMKKzwwMDA0MmMzYTM5M2EzNzJiMDAyYjMzMmUyNzMzMjkyYjMyMmIzMzM5MDUwOT4gMjA4MyAyNTc1IDIgNDE4MSAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA3MGMwZjAwMWMxMTFlMTQwMDEzMTExODE3MTIxYzExMWUxNzFhMTk+IDEyNzEgMzA2MiAyIDMxODIgMCBzCis8MGEwYjBlMDg+IDEyNzEgMzQ4NCAwIDE4NjYgLTEgcworPDA2PiAxODcwIDM0ODQgMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCAzNDg0IDEgMTk2NCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxZD4gMTk2NCAzNDg0IDEgMjEyOCAwIHMKKzwzNzJiM2IyZjM0M2EzODAwMzcyYjNiMmYzODJmMzQzMzM4MDAzNDJjMDAzOTJlMmIwMDMyMjczMzNhMjczMTAwMzIyNzNlMDAyZTI3M2IyYjAwMmEyZjM4MjkzYTM4MzgyYjJhMDAzOTJlMmIwMDE3MWQwMDMwMmIzNzMzMmIzMTAwMmYyYTMxMmIwMDI5MzQzYTMzMzkyYjM3MDkwMDIyPiAyMTI0IDM0ODQgMTMgOTI5NiAwIHMKKzwyZjM5MmU+IDkyODggMzQ4NCAwIDk1MzEgLTEgcworPDM5MmUyYj4gMTI3MSAzNzI5IDAgMTU2MSAtMSBzCis8MDAzNzJiMzEyYjI3MzgyYjAwMzQyYzAwMTcxZDA4MjEyMzAwMGIwYTA5MGEwNzAwMzkyZTJmMzgwMDMyMmIyOTJlMjczMzJmMzgzMjAwMmUyNzM4MDAyODJiMmIzMzAwMzcyYjM1MzEyNzI5MmIyYTAwM2MyZjM5MmUwMDI3MzMwMDJiMzYzYTI3MzEzMTNlMDAyNzI5MjkzYTM3MjczOTJiMDAzNDMzMmI+IDE1NjEgMzcyOSAxNCA5NTMxIDAgcworPDI4MjczODJiMmE+IDEyNzEgMzk3NCAwIDE3OTEgLTEgcworPDAwMzQzMzAwMmYzMzJjMzQzNzMyMjczOTJmMzQzMzAwMzcyYjM5M2EzNzMzMmIyYTAwMmMzNzM0MzIwMDM5MmUyYjAwMzUzODM5MjczOTA0MDUwMDM4M2UzODM5MmIzMjAwMjkyNzMxMzEwOTAwMjAyZTJmMzgwMDI3MjkyOTNhMzcyNzM5MmIwMDM1MzgzOTI3MzkwODI4MjczODJiMmEwMDMyMmIyOTJlMjc+IDE3OTEgMzk3NCAxMiA5NDYxIDAgcworPDQxPiA5NDYxIDM5NzQgMCA5NTMxIC0xIHMKKzwzMzJmMzgzMj4gMTI3MSA0MjE5IDAgMTcwMCAtMSBzCis8MDAyZjM4MDAwNjMzMzQzOTA2MDAyNzNiMjcyZjMxMjcyODMxMmIwMDJmMzMwMDE3MWQwODIxMjMwMDBlMDkyMzA3MDAzMzM0MzcwMDJmMzMwMDMzMzQzMzA4MTcxZD4gMTcwMCA0MjE5IDkgNjE4NSAwIHMKKzwwMDM0MzUyYjM3MjczOTJmMzMyZDAwMzgzZTM4MzkyYjMyMzgwOTAwMTU+IDYxODUgNDIxOSAzIDgwMzkgMCBzCis8MzQzNzAwMzkyZTM0MzgyYjAwMzgzZTM4MzkyYjMyMzgwNz4gODAzMSA0MjE5IDIgOTUzMSAwIHMKKzwyNzAwMTMxZDIxMDAzYTM5MmYzMTJmM2YyNzM5MmYzNDMzMDAzMjJiMjczODNhMzcyYjMyMmIzMzM5MDAyODI3MzgyYjJhMDAzNDMzMDAzOTJlMmIwMDNhMzgyYjAwMzQyYz4gMTI3MSA0NDY0IDggNTgxNiAwIHMKKzwwMDQwMzEzNDM0MzUyYjM3MzgwMj4gNTgxNiA0NDY0IDEgNjcyNyAwIHMKKzwwMDJmMzgwMDJiMzIzNTMxMzQzZTJiMmEwOTAwMTQyNzI5MmUwMDM3MmIzNjNhMmYzNzJiMzgwMDI5MjczMT4gNjcyNyA0NDY0IDUgOTQ2MSAwIHMKKzw0MT4gOTQ2MSA0NDY0IDAgOTUzMSAtMSBzCis8MmYyODM3MjczOTJmMzQzMzA5PiAxMjcxIDQ3MDkgMCAyMDQwIC0xIHMKKzwxODMzPiAxMjcxIDUwNTUgMCAxNDY4IC0xIHMKKzwwMDM5MmUyYjAwMjkzNDMzMzkyYjNkMzkwMDM0MmMwMDMzMmIzOTM1MmIzNzJjMDcwMDI3MDAxMzFkMjEwMDM3MjczOTJiMDAyZjM4MDAyYjNkMzUzNzJiMzgzODJiMmEwMDMzMzQzOTAwMmYzMzAwMjkzMTM0MjkzMDAwMmMzNzJiMzYzYTJiMzMyOTJmMmIzODA3MDAxYTE4MWQxZjAwMzQzNzAwMWExNTE5MWMxZDFmMDc+IDE0NjggNTA1NSAxNiA5NTMxIDAgcworPDI4M2EzOT4gMTI3MSA1MzAwIDAgMTU2OSAtMSBzCis8MDAzODJmMzIzNTMxM2UwMDJlMzQzYzAwMmMyNzM4MzkwMDM5MmUyYjAwMzgzZTM4MzkyYjMyMDAyOTI3MzMwMDI5MzQzYTMzMzkwOTAwMjAyZTJiMzcyYjAwMjczNzJiMDAzOTNjMzQwMDEzMWQyMT4gMTU2OSA1MzAwIDExIDY3MjQgMCBzCis8MDAzNzI3MzkyYjAwMjkyNzMxMmYyODM3MjczOTJmMzQzMzM4MDAzOTJiMzgzOTM4MDkwMDIwMmUyYjAwMmMyZjM3MzgzOT4gNjcyNCA1MzAwIDUgOTUzMSAwIHMKKzwzMjJiMjczODNhMzcyYjM4PiAxMjcxIDU1NDUgMCAyMTE5IC0xIHMKKzwwMDI3MzMyYTAwMmEyZjM4MzUzMTI3M2UzODAwMzkyZTJiMDAxMzFkMjEwMDM3MjczOTJiMDAyYzM0MzcwMDM5MmUyYjAwMzEzNDI5MjczMTAwMzgzZTM4MzkyYjMyMDkwMDE4MzkwMDJmMzgwMDI5MjczMTMxMmIyYTAwMTkxYzEzMjUxMzFkMjEwOTAwMjAyZTJiMDAzODJiMjkzNDMzMmE+IDIxMTkgNTU0NSAxNSA5NTMxIDAgcworPDM5MmIzODM5MDc+IDEyNzEgNTc5MCAwIDE2NDggLTEgcworPDAwMWUxNDFhMjUxMzFkMjEwNzAwMmYzODAwMmIzZDI3MjkzOTMxM2UwMDM5MmUyYjAwMzgyNzMyMmIwNzAwMmIzZDI5MmIzNTM5MDAzOTJlMjczOTAwMmYzOTAwM2MzNDM3MzAzODAwMzQzMzAwMzkyZTJiMDAzODNlMzgzOTJiMzIwMDM4MzUyYjI5MmYyYzJmMmIyYTAwM2MyZjM5MmUwMDM5MmUyYj4gMTY0OCA1NzkwIDE1IDkxNDEgMCBzCis8MDAwODE3PiA5MTQxIDU3OTAgMSA5NTMxIDAgcworPDI5MzQzMjMyMjczMzJhPiAxMjcxIDYwMzUgMCAyMTY1IC0xIHMKKzwwMDMxMmYzMzJiMDAzNDM1MzkyZjM0MzMwOT4gMjE2NSA2MDM1IDIgMzI1MiAwIHMKKzwxODMzPiAxMjcxIDYzODEgMCAxNDY4IC0xIHMKKzwwMDI3MzMyYTAwMzQyYzAwMzkyZTJiMzIzODJiMzEzYjJiMzgwNzAwMzkyZTJiMzgyYjAwMzkzYzM0MDAzOTJiMzgzOTM4MDAyNzM3MmIwMDM0MzMzMTNlMDAyNzM3MjkyNzMzMmIzMTNlMDAyZjMzMzkyYjM3MmIzODM5MmYzMzJkMDkwMDE3MzQzYzJiM2IyYjM3MDcwMDM5MmUyYjNlMDAyOTI3MzMwMDI4MmIwMDNhMzgyYjJhPiAxNDY4IDYzODEgMTUgOTUzMSAwIHMKKzwzOTM0PiAxMjcxIDY2MjYgMCAxNDU2IC0xIHMKKzwwMDJkMzcyYjI3MzkzMTNlMDAzODM1MmIyYjJhMDgzYTM1MDAzOTJiMzgzOTAwMzgyOTM3MmYzNTM5MzgwOTAwMWU+IDE0NTYgNjYyNiA1IDQ0MzMgMCBzCis8MmIzMjJiMzIyODJiMzcwMDM5MmUyNzM5MDAyYzM0MzcwMDEzMWQyMT4gNDQyNSA2NjI2IDMgNjU0NiAwIHMKKzwwMDMyMmIyNzM4M2EzNzJiMzIyYjMzMzkzODA3MDAyZjM5MDAyZjM4MDAzMzJiMjkyYjM4MzgyNzM3M2UwMDM5MzQ+IDY1NDYgNjYyNiA1IDk1MzEgMCBzCis8MjYyNjI5MjczMTJmMjgzNzI3MzkyYjAyPiAxMjcxIDY4NzEgMCAyMjYzIC0xIHMKKzwwMDM5MmUyYjAwMTMxZDIxMDAzNDM3MDAyYTJiMzkyYjM3MzIyZjMzMmIwMDJlMzQzYz4gMjI2MyA2ODcxIDUgNDc0NiAwIHMKKzwwMDJjMjczODM5MDAyZjM5MDAyOTI3MzMwMDI5MzQzYTMzMzkwOTAwMjAyZTJmMzgwMDM1MzczNDI5MmIzODM4MDAzOTI3MzAyYjM4MDAyNzM5MDAzMTJiMjczODM5MDAyYzM0MzczOTNlMDAwNDBkMGEwNT4gNDc0NiA2ODcxIDExIDk1MzEgMCBzCis8MzgyYjI5MzQzMzJhMzg+IDEyNzEgNzExNiAwIDE5NzkgLTEgcworPDAwMmMzNDM3MDAzOTJlMmIwMDMxMzQyOTI3MzEwMDM4M2UzODM5MmIzMjAwMjczMzJhMDAyYzM0MzczOTNlMDAwNDBkMGEwNTAwMzgyYjI5MzQzMzJhMzgwMDJjMzQzNzAwMzkyZTJiMDAzNzJiMzIzNDM5MmI+IDE5NzkgNzExNiAxMSA3MjIyIDAgcworPDAwMzgzZTM4MzkyYjMyMDkwMDFjMzMyYjAwMjkyNzMzMDAzODI3M2IyYjAwMzkyZTJiPiA3MjIyIDcxMTYgNSA5NTMxIDAgcworPDM3MmIzODNhMzEzOTM4PiAxMjcxIDczNjEgMCAxODYyIC0xIHMKKzwwMDM0MmMwMDM5MmUyYjAwMTMxZDIxMDAzOTJiMzgzOTM4MDAyZjMzMDAzODJlMmIzMTMxMDAzYjI3MzcyZjI3MjgzMTJiMzgwMDI3MzMyYTAwMzkyZTJiMzMwMDNhMzgyYjAwMzkyZTJiMzIwMDI3MzgwMDI3MzcyZDNhMzIyYjMzMzkzODAwMzkzNDAwMzkyZTJiMDAwODI5MDAyNzMzMmEwMDA4MTM+IDE4NjIgNzM2MSAxOCA5NTMxIDAgcworPDI5MzQzMjMyMjczMzJhPiAxMjcxIDc2MDYgMCAyMTY1IC0xIHMKKzwwMDMxMmYzMzJiMDAzNDM1MzkyZjM0MzMzODA5MDAxZD4gMjE2NSA3NjA2IDMgMzUwOCAwIHMKKzwyNzM4MzgyZjMzMmQwODJmMzMwMDI3MDAzNzI3MzkyYjAwM2MyZjM5MmUwMDM5MmUyYj4gMzUwMCA3NjA2IDQgNTc0MCAwIHMKKzwwMDA4MjkwMDM0MzcwMDA4MTMwMDM0MzUzOTJmMzQzMzAwMzkyYjMxMzEzODAwMzMyYjM5MzUyYjM3MmMwMDM5MmUyNzM5MDAzZTM0M2EwMDI3MzE+IDU3NDAgNzYwNiA5IDk0NjEgMCBzCis8NDE+IDk0NjEgNzYwNiAwIDk1MzEgLTEgcworPDM3MmIyNzJhM2U+IDEyNzEgNzg1MSAwIDE3NzMgLTEgcworPDAwMzAzMzM0M2M+IDE3NzMgNzg1MSAxIDIyOTkgMCBzCis8MDAzOTJlMmIwMDEzMWQyMTAwMzcyNzM5MmIwNzAwMzgzNDAwMmYzOTAwMjkyNzMzMDAzODMwMmYzNTAwMzkyZTJiMDAyOTI3MzEyZjI4MzcyNzM5MmYzNDMzMDAzODM5MmIzNTM4MDkwMDE1PiAyMjk5IDc4NTEgMTEgNjgwMCAwIHMKKzwzNDM3MDAyYjNkMjczMjM1MzEyYjA3MDAzOTJlMmIwMDJjMzQzMTMxMzQzYzJmMzMyZDAwMjEzMzJmM2Q+IDY3OTIgNzg1MSA0IDk1MzEgMCBzCis8MzgyZTJiMzEzMT4gMTI3MSA4MDk2IDAgMTY4OSAtMSBzCis8MDAyYzM3MjcyZDMyMmIzMzM5MDAzYzJmMzEzMTAwMmEyYjM5MmIzNzMyMmYzMzJiMDAzOTJlMmIwMDMxMzQyOTI3MzEwMDEzMWQyMTAwMzcyNzM5MmIwMDI3MzMyYTAwM2EzODJiMDAzOTJlMjczOTAwMmMzNDM3MDAzODNhMjgzODJiMzYzYTJiMzMzOTAwMzkyYjM4MzkzODBmPiAxNjg5IDgwOTYgMTMgODcyNCAwIHMKKzwwMz4gMTM5OCA4NDQyIDAgMTUwNCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMD4gMTUwNCA4NDQyIDEgMTU1NyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTkxYzEzMjUxZT4gMTU1NyA4NDQyIDAgMjI4NCAtMSBzCis8MTE+IDIyNzYgODQ0MiAwIDI0MzkgLTEgcworPDIwMTQxMD4gMjQxOSA4NDQyIDAgMjg4MyAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwxMDA0MWExYjFlMDQxOTE0MWUxYjE0MWMxNTA0MTkxNDFlMWIxNDFjMTUwMDAyMWUwMD4gMjg4MyA4NDQyIDIgNTA3MSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTkxYzEzMjUxMzFkMjE+IDUwNzEgODQ0MiAwIDYwODcgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MTA+IDYwODcgODQ0MiAwIDYxNDAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMz4gMTM5OCA4Nzg5IDAgMTUwNCAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwMDA0MWExYjFlMDQxOTE0MWUxYjE0MWMxNTA0MTkxNDFlMWIxNDFjMTUwMDAyMDkwMD4gMTUwNCA4Nzg5IDMgMzc4NSAwIHMKK3dzdDpkdXRjaDEyaSBTRgorPDA2MDUwNDAyMDMwNTA2MDcwMD4gMzc4NSA4Nzg5IDEgNDY1NCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAyMTMwMD4gNDY1NCA4Nzg5IDEgNDk3NyAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDMxOTFjMTMyNTFlPiA0OTc3IDg3ODkgMCA1ODEwIC0xIHMKKzwxMT4gNTgwMiA4Nzg5IDAgNTk2NSAtMSBzCis8MjAxND4gNTk0NSA4Nzg5IDAgNjIzMiAtMSBzCis8MjQ+IDEyNzEgOTEzNSAwIDE0MzMgLTEgcworPDM0M2E+IDE0MDcgOTEzNSAwIDE2MzkgLTEgcworPDAwMzgyZTM0M2EzMTJhMDAzNzJiMzIyYjMyMjgyYjM3MDAzOTJlMjczOTAwMTMxZDIxMDAzNzI3MzkyYjM4MDAzYzJmMzEzMTAwM2IyNzM3M2UwMDJjMzczNDMyMDAzODNlMzgzOTJiMzIwMDM5MzQwMDM4M2UzODM5MmIzMjA5MDAxNjJiMzMyYjM3MjczMTMxM2UwNzAwMzkyZTJiMDAyODJiMzgzOT4gMTYzOSA5MTM1IDE0IDk1MzEgMCBzCis8MzkzNzI3MmEyYjA4MzQyYzJjPiAxMjcxIDkzODAgMCAyMTgwIC0xIHMKKzwwMDI4MmIzOTNjMmIyYjMzMDAzOTJmMzIyYjAwMjczMzJhMDAyNzI5MjkzYTM3MjcyOTNlMDAyZjM4MDAzOTM0MDAzNTJiMzcyYzM0MzczMjAwMzkyZTJiMDAyOTI3MzEyZjI4MzcyNzM5MmYzNDMzMzgwMDM0MzMyOTJiMDAyZjMzMDAyYjI3MjkyZTAwMzgyOTM3MmYzNTM5MDAzNDM3MDAzODJiMzg+IDIxODAgOTM4MCAxNSA5NDYxIDAgcworPDQxPiA5NDYxIDkzODAgMCA5NTMxIC0xIHMKKzwzODJmMzQzMzA5PiAxMjcxIDk2MjUgMCAxNjk1IC0xIHMKKzwwMDIwMmUyYjAwMmEyYjJjMjczYTMxMzkwMDM4MjkzNzJmMzUzOTM4MDAzNTM3MzQzYjJmMmEyYjJhMDAzYzJmMzEzMTAwM2EzODJiMDAzOTJlMmI+IDE2OTUgOTYyNSA3IDUzMDEgMCBzCis8MDAxOTFjMTMyNTEzMWQyMTAwMjczMzJhMDAxZTE0MWEyNTEzMWQyMTAwMzkyYjM4MzkzODAwMzkzNDAwMzcyYjJhM2EyOTJiMDAzOTJlMmI+IDUzMDEgOTYyNSA3IDk1MzEgMCBzCis8MzkyZjMyMmI+IDEyNzEgOTg3MCAwIDE2NzcgLTEgcworPDAwMzQzYjJiMzcyZTJiMjcyYTAwMzQyYzAwMTMxZDIxMDAyOTI3MzEyZjI4MzcyNzM5MmYzNDMzMDk+IDE2NzcgOTg3MCA0IDQzOTIgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYTBiMGUwOD4gMTI3MSAxMDIxNyAwIDE4NjYgLTEgcworPDA2PiAxODcwIDEwMjE3IDAgMTkyOCAtMSBzCis8MDA+IDE5MjggMTAyMTcgMSAxOTY2IDAgcword3N0OmR1dGNoMTIgU0YKKzwwMDE1PiAxOTY2IDEwMjE3IDEgMjEzNSAwIHMKKzwzNDM3MDAyNzI5MjkzYTM3MjczOTJiMDAxMzFkMjEwMDNhMzkyZjMxMmYzZjI3MzkyZjM0MzMwMDM0MzMwMDFhMWQwMDM4M2UzODM5MmIzMjM4MDcwMDJmMzkwMDJmMzgwMDA2MjkzNzNhMjkyZjI3MzEwNjAwMzkyZTI3MzkwMDMzMmIzOTM1MmIzNzJjMDAyNzMzMmEwMDMzMmIzOTM4MmIzNzNiMmIzNz4gMjEyNyAxMDIxNyAxMyA5NTMxIDAgcworPDMwMzMzNDNjPiAxMjcxIDEwNDYxIDAgMTc1NiAtMSBzCis8MDAzOTJlMmIwMDMzM2EzMjI4MmIzNzAwMzQyYzAwMzUzNzM0MjkyYjM4MzgzNDM3MzgwMDM0MzMwMDM5MmUyYjAwMzgzZTM4MzkyYjMyMDkwMDE1PiAxNzU2IDEwNDYxIDggNTUxOSAwIHMKKzwzNDM3MDAzODM0MzIyYjAwMzgzZTM4MzkyYjMyMzgwMDA0MTcxZDA4MjEyMzA1MDAzOTJlMmYzODAwMjkyNzMzMDAyODJiMDAyYTJiMzkyYjM3PiA1NTExIDEwNDYxIDcgOTQ2MSAwIHMKKzw0MT4gOTQ2MSAxMDQ2MSAwIDk1MzEgLTEgcworPDMyMmYzMzJiMmE+IDEyNzEgMTA3MDYgMCAxODQwIC0xIHMKKzwwMDM1MzczNDJkMzcyNzMyMzIyNzM5MmYyOTI3MzEzMTNlMDkwMDFjMzkyZTJiMzcwMDM4M2UzODM5MmIzMjM4MDAzNzJiMzYzYTJmMzcyYjAwMzkyZTJiMDAzYTM4MmIwMDM0MmMwMDM5MmUyYjAwNDAwODMzMDIwMDJkMzEzNDI4MjczMTAwMjkzNDMyMzIyNzMzMmEwMDMxMmYzMzJiPiAxODQwIDEwNzA2IDEyIDkyMzMgMCBzCis8MDAyNzM3PiA5MjMzIDEwNzA2IDEgOTQ2MSAwIHMKKzw0MT4gOTQ2MSAxMDcwNiAwIDk1MzEgLTEgcworPDJkM2EzMjJiMzMzOTA5PiAxMjcxIDEwOTUxIDAgMjAwNyAtMSBzCis8MDAyMDJlMmIwMDI3M2EzOTJlMzQzNzM4MDAyNzM3MmIwMDI3MzEzYzI3M2UzODAwMzEzNDM0MzAyZjMzMmQwMDJjMzQzNzAwMzgzYTM1MzUzNDM3MzkyYjJhMDAyOTI3MzEzMTM4MDAzOTM0MDAyYzJmMzMyYTAwMzkyZTJiMDAzMzNhMzIyODJiMzc+IDIwMDcgMTA5NTEgMTIgODA3MiAwIHMKKzwwMDM0MmMwMDI3MjkzOTJmM2IyYjAwMzUzNzM0MjkyYjM4PiA4MDcyIDEwOTUxIDMgOTQ2MSAwIHMKKzw0MT4gOTQ2MSAxMDk1MSAwIDk1MzEgLTEgcworPDM4MzQzNzM4PiAxMjcxIDExMTk2IDAgMTYzMCAtMSBzCis8MDAyZjMzMDAyNzAwMzgzZTM4MzkyYjMyMDk+IDE2MzAgMTExOTYgMyAyNzI2IDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDIxKSAyMQorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDQwIHB1dAorZHVwIDQgL0MwMDQxIHB1dAorZHVwIDUgL0MwMDQ0IHB1dAorZHVwIDYgL0MwMDQ1IHB1dAorZHVwIDcgL0MwMDQ2IHB1dAorZHVwIDggL0MwMDQ3IHB1dAorZHVwIDkgL0MwMDQ4IHB1dAorZHVwIDEwIC9DMDA0OSBwdXQKK2R1cCAxMSAvQzAwNTAgcHV0CitkdXAgMTIgL0MwMDUxIHB1dAorZHVwIDEzIC9DMDA1MiBwdXQKK2R1cCAxNCAvQzAwNTQgcHV0CitkdXAgMTUgL0MwMDU2IHB1dAorZHVwIDE2IC9DMDA1NyBwdXQKK2R1cCAxNyAvQzAwNTggcHV0CitkdXAgMTggL0MwMDY1IHB1dAorZHVwIDE5IC9DMDA2NiBwdXQKK2R1cCAyMCAvQzAwNjcgcHV0CitkdXAgMjEgL0MwMDY4IHB1dAorZHVwIDIyIC9DMDA2OSBwdXQKK2R1cCAyMyAvQzAwNzAgcHV0CitkdXAgMjQgL0MwMDcxIHB1dAorZHVwIDI1IC9DMDA3MyBwdXQKK2R1cCAyNiAvQzAwNzYgcHV0CitkdXAgMjcgL0MwMDc3IHB1dAorZHVwIDI4IC9DMDA3OCBwdXQKK2R1cCAyOSAvQzAwODAgcHV0CitkdXAgMzAgL0MwMDgyIHB1dAorZHVwIDMxIC9DMDA4MyBwdXQKK2R1cCAzMiAvQzAwODQgcHV0CitkdXAgMzMgL0MwMDg1IHB1dAorZHVwIDM0IC9DMDA4NiBwdXQKK2R1cCAzNSAvQzAwOTEgcHV0CitkdXAgMzYgL0MwMDkzIHB1dAorZHVwIDM3IC9DMDA5NSBwdXQKK2R1cCAzOCAvQzAwOTYgcHV0CitkdXAgMzkgL0MwMDk3IHB1dAorZHVwIDQwIC9DMDA5OCBwdXQKK2R1cCA0MSAvQzAwOTkgcHV0CitkdXAgNDIgL0MwMTAwIHB1dAorZHVwIDQzIC9DMDEwMSBwdXQKK2R1cCA0NCAvQzAxMDIgcHV0CitkdXAgNDUgL0MwMTAzIHB1dAorZHVwIDQ2IC9DMDEwNCBwdXQKK2R1cCA0NyAvQzAxMDUgcHV0CitkdXAgNDggL0MwMTA3IHB1dAorZHVwIDQ5IC9DMDEwOCBwdXQKK2R1cCA1MCAvQzAxMDkgcHV0CitkdXAgNTEgL0MwMTEwIHB1dAorZHVwIDUyIC9DMDExMSBwdXQKK2R1cCA1MyAvQzAxMTIgcHV0CitkdXAgNTQgL0MwMTEzIHB1dAorZHVwIDU1IC9DMDExNCBwdXQKK2R1cCA1NiAvQzAxMTUgcHV0CitkdXAgNTcgL0MwMTE2IHB1dAorZHVwIDU4IC9DMDExNyBwdXQKK2R1cCA1OSAvQzAxMTggcHV0CitkdXAgNjAgL0MwMTE5IHB1dAorZHVwIDYxIC9DMDEyMCBwdXQKK2R1cCA2MiAvQzAxMjEgcHV0CitkdXAgNjMgL0MwMTIyIHB1dAorZHVwIDY0IC9DMDEyNyBwdXQKK2R1cCA2NSAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yNTYgOTIwIDczOV0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNDNFMEVDNTkzNDRDRUYzNjk2NTBBMDM3QjQzODNCMDNENgorMjRDMzA2RTg3RUZERDQ3NzVFQzc4NzQyCitGRUZDRTQ0Qjc2NTU3NDQ2NkMKK0QxQUY3QTgyCitDRkUxOUZFQzA3MDU1MTcxODAzQkUzNUZCNjFGCitERkE1QTRDNzM5QTRFMzk1N0VCN0M2NjIzMzg0NEFDNTFBNkE5MUI0NUI3NUU2QUYxRjc2Nzc5QTRFQTM5RDU1NEM2NzFGMDM5RjZFQTA5MDJFRUFCQzEzMzYzQkREQTUxMDFDQTEyQkI4MTU2RUVDNUFGMEJGOUU2RkZENDFFM0U4Mjk3ODk1RTE1NTRGNTczMTRERTVFNUU3MEMzMkRBNDdGRDMwQTg1MjVEN0VFOUM2MDYwN0VEQjZGRDlGODE2QkJBOTQxNzI3NkY4NQorNjBGNUREQjQKK0EzOTQ4QjMzRUIyMkI4MjdERjY4MURCQjE5CisyOTkzQjU1M0M2RDE3MDc2QjRCOUZCMTkzQTc5QzhBMzZFRUNENUQ0RUYwRjUzMjQzNDI5MkRFRjk4QkMwQjdFRDc4RkQ4NDAxQ0JFODgzMjU4MDdBMzRCOUVDRTdEMzEyOTA4QjJCRDZBNTY1NDA5MERCNDZENjM3NDA2NjY4QworNTFGRjU4NkIKKzBBNDU1NzI3QzNEODIxRTUzNzlCMThFN0NGCis3M0EwQkU4NDNDQjg0MDVDQzQxQTc1QTgwNDg2REY5NTU5MTQwMUFCMjQ3RDlGQkFBRUU2RjFFRTU1QUZDQUIxNjczOUY5MkMxN0Y5REM0MzE3MzBBODQ3OTUwN0FGRDk1OUFDOTE5RjZBMTY5NzhDREQ0QzBEMTQ2N0Q2RTEKKzM5NjJEQzJBCitFQ0U2MDNEQkY3NDE3QzRBNUMzOTQwN0U3MQorRThBODFFREMxRkM2MjlBMUIwRDI1QjZCNUU3NEY0NTlENTQyRkRBOEQ2MEZCMEEzNTEyODJDOTVGMENBNUE5M0VCRUE2QTIyRTc2MkQ1NDU1NUIwNUIxODk4QkJGMTVEODBGOTRBODFERDJEMDhGRDE4CitBMjIwRDlGQQorNEUyMjgyQzZEMzZBOEQ2MTQ2QjkxQ0VFREIKKzU0RUIwODM4QjQ4ODBFRDBFNkFDNDU1RDFBQUUwNEM2NDRGODNDRjg0RTNDNTEKK0I5RDUzOTMxCis4QzcwRTFDMzdGOEI0NkM5M0I1NkU2Q0Y3OAorMEIzN0NFMzkzNjMxQTA5NkU2MjRCNUVGOTEzODhGNjlFRUEyQkUxNDA5QTJFQkJDRTU1RUI4QTI0MUYwRUQKKzFGMjlGOTE1CisxNTEzRUY1M0MyRDI4OTEyRkNGOTgwRDA1RAorODUzMzE1OEFGNzM3NjAxQzdBQ0QwMzI2MTVBOTgwNzZCMUE0RThBMjlFQjFGNzUzM0NEODhBRjEKK0I5MUM2OEQ1CisyOTJBODY2RjkxQjExMUEzOTE2QTM5OTZGMworRkVCMTQyMkNBNUVGOTM4QTVGQzgwRTFCMDk5NDNGQzBEMzZFMzdEMDI3MzlGRTRFMThGQjkxQ0EyOTQyNzc1Mjg0NEI2RTQ4RURFREUzRTM5REFCOTZERDU2NkNCOUVGOTVEOTM0OTU2N0IwOEY1Njc2RjY3OTgzNkY5MUVFQTExNjdFRDNCNUEzQkQwMjA0RUU5MgorRDkzRDBDRkUKKzhBNTY4MDk3RjVFRDc3MkY5QUM0MUFGRjc3CiswMDAwMUZDOEU2RkYwQ0ZDOEZGOTk2Q0U1REMzOTBEMzkzNjZFM0UwMTUzMDQ1MkNCNUQ5Nzc0NzBFMTVGNTZBNUM1REY2N0NCODFGMUQyODlGNDZERkMwQTE4MzEwNDVFMDhBRjc4MTJCMzY0NUY3MzVCMkRBREQzRTI4MTYKK0NGQUY3QkZCCis3NzVERURGRTlGMTE2MjUzRkUwRDEwRUQxNQorMTc0ODlDM0U3QkZCRUE4MDIwRjgyMkE4QjdCOUQ0M0NFNDc4ODFGNEE2RDVDM0I5NzNCNUYwMjFBNDIxNjA5MjQ3MjkxQ0U3Rjg0OUNGQ0U1NzIyQTkzQzE1RTQwRDFBODZBOEJCN0E2RUIyNjNEOEIxRDI0RUZBRjU3MUY4Q0ZBQkE0RDA4OUY0MDlEMkVBOTVEOTEzQjU4RUU4RkY0QkEwRTY1RDgzNDY4NDAyMEI1NzQ3CisyMkExMzQyQworMzZDOEUzRERFMkYzQjZGNEQxQ0JGMTQ5RjY0MworRUM2MDdFNjk5QTZBRDVGQzNENDQzMzM5MjY4OTcwRURCNzg3RUVFQkQzQkQ5RDlBMTg4NUY1NDY3MUYxOTI1NUI3NkRFRkQyMzFBMDEwQjY3ODFFNjE4NUNGRTQxRjczMTlBRjRBQUM2NTAzM0FFMTgxNTE2NEZDQjBCRDZFQjQzRTY2OTg5NThDNTgwMDA0MTVENEM3NEQ4NEVENEQ2NUI2OENCMEZDOUU4NUE3NkY2MjZBN0JEMkExMThGNThCN0Q3QURBQTk1OURBODJFREUxOTQ5NUY2RUE3OEU0CitERTRFOUUyNAorRThCRTA1RDVGQTU4N0FBODJDRjczMTlBQjgKKzEzRTJBMUVBNzM2MEMyQjRGNTc3RUZCODI3RjExREZGMERFRURCMEVCMkM4QzFFN0E3RjNDOEFDMjNFNDI2QTBENTdBMjYzN0ZGMjc0NjQ4NjU5QTk2MTUyMDZBQUZFMjMzRDk0MjZBRjBCNjJEODUxODAyCisxQUMyNDQ0NworRjRBODFFQ0Q1OTE3NjU4RDhBRDBFRTIxMTc5RgorREZGRjY1NUVGNEE0REYwRDE0Mzg3M0M2QjVCNzNDOERENDk4RENDNENDNzg0QkZGMjVBNDhEODc1RDBCMUVENUQ0ODdDRDNFNDQzRkUwNjkwMkQ4QjkyNDQ5QzVDOUZGRjFDOEM2RDFBNjAzMTRENTVGOTI0QzJGQzgxREYwRTgwOTBCODIzM0E5NTJDNTM2MjI5M0UyMzFCNTJBMDMxMzUyNEZCQjUwNDVBNzI5OTRBMzA2QzlCREU1Qzc4MDZENzM1NTJBMUYKKzZENzUyMjExCis5MzZEQUYwRjQ1OTUxNjQ1NEE4Q0I1QUJEQUIwCiswRTU3MjJFMjkyM0Y5RTA3MzU2MkZDMUExQTNDRUI4MTAzRjk5REYzRUE5MDdFOUM1RUM5RkI3MjM0MzU2QTcyNTBFRUNCRjFGRTRGMzdCMDZGOTNCNjFFNzk0QkM5NDJCNUVGM0Q5NTQ0Q0UwQzAwMTZBQjAyNDUzMTY5NDY5NDkwMzU2RkM4MDVFNTU0Mjk3Qzk2MzdGOTA3NTgzQzI0NTdGRUU2NTFERDM4N0U2MkMxQURFMDRDMTBGQjY3NERFQzhBNTdBQ0MwRkZFMDc5ODcxQkEzMzMwMEQ3M0U2RDQwNEQ5NjM3RTA0MTE4MjU2RTkwCiszQTQ2MzU0MworQzU4MTMzQkRCMEVGOUFGQzNCODFFOUQ5ODQ0MgorMkQ0MjgyMDAzOTZGRTEwMzU1QTE2QzEwNDEyRjY5N0E5OEEyMTE5NDhENTQzQzhFM0EyNzAxNEE2MkNDMUJBOUE3NzBBRkRGQTRBRjY0N0JBRDEyQkJBMzA0MzYxMkNBRUM4NThBRkJBNjlEQTBFOUMyM0ZDODAyREZGQjYxOUU3NDE1MDU2RjNCMTA2QTQ0RTg4NEJGNjk0MzZGOEEwOThENUI2NEYyNkY5NjM0Nzk4QkY5QURFNjkxMEMzMzUwMTMyMDk2ODNCOAorMTUyQ0U5OEIKKzE5NjkzRTQ1OUE0QjVBMEE4MTg3ODVFRDQ2CitCMjIwNUQ5QjE3MjUzMkJENUFDQThEOEFENEFCQzMzMThBNzBEREUxM0QwNUE1NDRENDhFMEU5MEVGNDczNjI1MUM1QThCRDQ4RUREMDYyMjk1MTM3NjlGODcxQzgyRDkzRTVEMTk2RDdGQjAKK0MyQjFFQ0E0Cis2OTg0ODBFRDc4NzZDQjA2NzA0NDAwRDBFMDc3CitBQTYzMjg1OENDOURCQjg0NEY4RTM2MjFBRjREQTU2RjJDQ0EwRDEyMkY2OUUxMjFERDc1N0ZCMUNCQzExM0YyM0MyNUQyRUVBQ0Y1NDE2MkU5NjM0NUEyMTkxOTI4MkY3MDRDQThCRTk4MUY3RDJFOTM2MDgzNUU3MEFCOTlDN0UyNzM4QzQwMkRBRTM1NDIxNkNDNTNGNzA1NjUxMUNCOTdGNUM2NDc0MzJEMEIyNEVFODY5NzFCOEZGQzM0QzAzMEQ4OUFFMDU3RUVGRkJFQ0Q1Njg1OEM1MkE2NjM5NTRGQzYzQQorMDEwNDExNjcKKzFGQzgxQTJFQTFBMEQzNDU2OEZDQzQ1MjFEQTIKKzg4NjRENzM1MUEwNTkxNzIzQzYyOTY2NDVCQzg1QTIzOUVDRUZCMTJCQUM3MUEwODE4OEU5RUIwMUMzNTg0Mzg4ODVCQkM4OUI3RDNDRjBBNjIwQzYyMjRFRkIyMzMwMERGNzIyMDBCQ0MyRUQ1QzZGNzU5ODcxQkU1REYyNDM5MTY3OTg2MTMzNERFQzYzMTg5MUMzREUyNTJFMkZCMjMxNkNEQjBFNTVBOTUzREZCNjBGODU1NEI3NDA2M0U0ODY1NTBCNDQ3RTQyNkY4NjE1QUE3MDdDMTVFQjhDMDNENzUyMDMyMDhGOTk4MzAxQTI2RUY5MzkwMjdGRQorODNDQworM0IKKzc2OUUxMEQzCis0Q0UxRTQyMUU3MjM4NDkxRUQ0Q0ExODU2RgorNTkxQTBDNjlGODdEQzZCMzZGMkUzQjNDRDMzODA2OEFFNDFGNjg2NzYyNDUxQjczQ0Y2NkVCOTZFNjhENjg0MjRFRjg1RDI1NkU5NDdGQTI5MjUxRkMzRjA4NERFMEFFN0Y4MEE2M0M2NThDMDlCRTZGRUU4RkI4Qjk4ODRFNzkyQUY2MjNBQ0Y3MTE1RkJDNENFQkVDOUVGNTRFMzE2MjgyNjVCRDk0NjE3OEFGOTJDNzQ0QTkyODM1RDA5RTc4NDQKK0Q1Rjk3Q0FGCis3QUM5MjE1QTU1MjBDRkE4MzU5NzZFOUExMworODEwOEY1Njc1NTFGMDZDOTM5MjM3NzgzMEQ5NDEyOUY0RTVCNzgzQzZCQjIxNUJDNTM5MzgwMTVFMEY1RjMwQUZCMjJFQjFDQ0VCOTZCQTU2NTU3RTYxRTdBRDREN0Y0QkU3QkExQTFCM0Y2NjZCOTgxNDE5MEZCQzFCRERDRTA3Q0U5NjE2QTY4MEZBMDI2N0Y2N0EyOTgyODU0Qjk5RUE0QzJGN0ExMzk0MjRDMUJFODdFOUQ1MDdDNUY5NjUxNzQxQ0UwCis5MjlENjkyQgorM0VCRUFDQkVGOTFGMkVFRjk4MTI2NUU5RDhCRAorQUM5MTk3RUNFMDZDQzhGNEZERUQ4RTIyMjgwRkFGRDdBRTJFOEE5QjMzQ0Y1NjU4QzY2N0JDNTBCRjE5OUEzQkU1RTU5NTA1NTFDM0E3RjlBNTA1MzMwMEVCMTRCQzE0NkFCNkYzREU4NDUyOEY1NDMwQTAzNEI2MzI5MTEzRDY0OEQzQTdCMDE0MUVCODAyQzBGNzhENzc5MTA2MzBDNzkzRDYyNkIxNEZEMTJCNUVBNDU1QUUzMTYyRDg1QTU5MDczNTIyMDhGMjlBRDU2MkI5OTIzMEE0NDJFRUZCRTlGQzM5RkY5RDVGMDZGNEI5MjI3QUJCMDM1RDA0Cis1ODQwNkM3MAorMUVGNzEzNDMwMzQ2MEYzNUEyQkI5ODYyRUU2NAorMzc4RTBGMjU3RUM2MUM3QzlGOTJGQzVGMjJDQTY5OEI3QTY0NTNDNEY1NTkyNTVCRTlGNjZENjZCMjMwRDRGQzlGNkMxNTkwNzMwRjhDRjQxQjgwMDZFQ0Q2QUFDMUE0OEIxMDBGOUMwNDRFQTEzMzU5QTA2NTk2NjM5NUY5MjRBMjE1Nzg2NEM1MzcyOUJCOEE3NDdCNDRGNDk0MTQ0RDMyOUYzREMyMjlFMzIwMDA3QzY4RjgwQzA4OERGNDA2MzVDRDAyMTg2NEIzNUUyRUQ1Cis0QTQ5MTMzMworRENEMTI5QTA1NTAxREMwN0ZERDkyNURDOTQyMgorMjRGODA4OUI2RDk3MUY3MkExNEQ2RTBBQ0Y4MTI1MTlBRDlCMDVEN0FCNDdGQjZBNkFFM0EwQzMxODJCMzgyQjI1QkMyNTBERDY4MTk4NjU0OTMzMEYyMTlENjkyNjYzNkUzQUUyQkU3MEFCM0NGMkFGNUEyMEI4MjUwNTBCNDU2NEQ5NzRBNjc0NkEyM0E0MzM5NzZDN0EwRTIwM0UwRkMwRDI5NDE5MzY4NzhEMEM1Mjc5MDEzQzVFOUYzQzQ3OUI4NTY5QTFENkFBODNBNjM0M0EyQTRERjVBMTA5QzUwREM2N0M4NEY3Njk2QjI2MzIyRQorNEVBN0JDNzQKK0ExRjYyNDVDQUY3NzAwMTQxMTUzNEE2M0I4CiswQ0FFQUNGMTQ0MDcxMzZGNTM4QkZFNzFGMjA5Q0JCMDlFNzVGNTgzNDYyNUZFNzA1RkU3RUI1ODVGOTA2OTE0RTI5RUVGRDhFMDNBODdDOUU4RUIyNzAwNjE0QkZBMDcxMTE0OEUxQzk0OTY1QUQ3REQyQ0IzCisyQTk2ODkwMgorQUE2RkE0NDZBODM0Nzk4NjA1QTBGRkIxREIKKzAwNDBBQzU4RDk2OEQ0QzIyQ0VGOEI0QzdFRDVDNDk1RDlDM0MxQkEzOUVCODJBRTlEMkVGODFEMjlCNkYxMTRGRURFN0VENjkyRDg4NjQ5QUJBRjFBOUFEQUNBNTg5MEU5RTIzMTUzQzUzRDI0Qjk2QUJEMTMwREZGRUNDRTAwMEU2RTNEQTU5RjBGOUEKKzdEREU4RUNCCis3MTEwM0Y3MUVDMkVERTU1QTYzNjQ1QUE2MEQ0CiswNEIzMTg3REE4QkE4MDA3MEE0QzIzQUU4MDExNDQzMEVBNjJBNDQyOEFEOUNBMDVFRURBMUJCMzFBNjE1NzZCNzUwNEEwMDY0MTkyREJEQUZCMkE5MjE3MjVEODhCMUU5NERDMjlBQjVCRTA3MTcyMkFFQzM5NUJCMDE0Q0UxMEJGRjg5QjhGMDdBNzE2NjcyQzM0NTREMDg5MjhGNUYwMzA4Njg1QzJDMjkyQjY1RTdCRTNERjQyQ0RFQjE3Q0FBRjBEMDJERDc5QzhCQTQwNzJGMjlEQTM2MTBDODkKK0QyRTIzMTY2CitFNUMyQTU2NjZCMkI3MDEyMDlCQzYyQjVBQQorRTFDNjFFNkExRkZBQkQ5ODkzQUQzMkM3NDkzRjhFRjY0NEI5MTM2NUNGMjhBRjRBM0E0MzA1NDdBRTVCMDMwMTQ3MDY1RUNERTJBQjYwRTdGRTg2MTA1MzFEMkM2MEFGNzI1MDA3NTc5QUY0NEQ5QTZFOTEyNENEMkQ0NzhENUY2NjQzMDE0OTNEN0Y3ODg2NEI3MDUyNTg0RjVCNDMxMzlGQzczNzM2RDQxQjA2OEFBN0RBMDc3RAorNzVFODE1OUQKKzQzMDQwOEFGRDQwOTY2MUZCQ0ZERkYyMUU5QUUKKzUzQTBFODMzRTFBOERDODEwNDVFMUNGMDkxQkMwNUIzNzRGQjk4NjBCN0VCQzVCNTI1RDc4MzQ1QTMxQ0IyREEwMjgzMkM4Q0ZFQTYwRkQxNjA3NTU1RDc0N0FBMDg2QUFGQjU1ODY3NDU5OTZGQkNCQzNEQjA1NjY0MkE3MDIyNTNBNzA3MEJCNjAzRTE1MkM5NzIzNkI1NEVGNzM1MDNBMDAzMTQ4NjA1NzFEMjU1MTRCRTNCQzZDRjQzODkyNjVCMUU5QjJFMUIyMTk2RTlGRDM2Cis0ODg1RjI5QworNUYxRTYxRjY5NjgxRjkxQjMxMzgxQUFDOEM3NgorNDJEQTA3RUY4QjUyNDg1M0VEMkQ1QjNCREFDREM3OEVBMUFBRTQyOTdCREUyQkRBQjUyQjAzNzU1MEQ1NTVBNjU5N0RERjVEQUI1OEM0NkIyQjdFMkNGMjZCMzI0MjhDN0M5OEVFRTUxQTFGRDk5OTI4NTU1REZGNzlBMTIyRTUxQUFGMUE2NTg5MEUzRjY1NEIwNjg0NjE1MUY4QjI4OUJGOTgxRTlCRTc5Q0MyMTE3MjI5Njk3OTE3MEVENUVGMzg5NzMxQjYzQjZERDEzMDFCNTgzNUQxMDBGQzdBNDEwMUQ2QkY3OTkyNUQ1NkJFNkRGMUJCMjkyQzcxCisyMkMyMDVBQQorMDQ0NTI1QUQzOEM5Q0IyQzBDRUUxQUI5MTBGRgorNTc1MTM4MTA1RkY1RjZFQkYzQzIzRDhDRjAyQzE4MDhGNkUzOEIyM0EwMkZDREE3MkI2MDBDRDA3QTU2MUY2NkFDNkYyQzE0RjY5M0IwMkRGNEU2MEJERkE5RDE4RTE4ODdEQTU2NjZDQTE3M0VFMjA3NTJDNDlBQkU1NzY5RkVDNDA5NzA3NURERkEwOThEMzBDNzVDQkYwOEVBRUYxODg1MjZCOEM0ODgwNzBERkFCQUM5RDUwNzNBQkFDQkQ1RDI0RkQzQ0UxMjkzMDc1RUMzQkY1QkZDMEJERjVERTk2RDJBMjIzNTM2MzJBN0EzOEFGMTQ3MkIxMTEzCis1OEE3CisxMjg5NzUKK0E0NkE5MkI4Cis2NjAyRkIxQjlFQTUxQUVEMkY4MDFFNEFGOAorOTMxOUY2QjAyNTA2RjBFNTA2MkRCREJEQzk3NzFCQkJBMUVGOTRFQTQ2MEExQzlFMzNDNzRFOTBDNTNDRDI4RDQ0NzJEMzRBRUQ4RkQ5OEZFRUUwQzI0MEZEM0IwQ0Y4RkYxMDVGMEI0QTc1RDc5RjNGNTdCQkMyRDM0RDM0RDBENDM1RkQ4QTIyMDA5RDM1NzU3MkVFNzhCQzIxRTkzNEM1Cis4NDhERDAyQgorMDA2NDQwQTI2NDFFQjM3M0FDQzgzNEVDNkYyNQorRUJFREU0RTdCRDkyNDEzQjIzNzFEQzZGQ0E1MkI2NDBENTIxNjNGMTY0MTFCMzc1M0M1NzI0QzkyREJCMDE2OUYyQkMzNjJDNkJGRTE2ODlEMkNGMDQ5NTQ4Q0QxN0RGMjJEMEM3ODZDMzE3NDlBMUI3ODk5RjM0RDVEMUNGNTJBMjYzRUJDRTgwNjYwRkYxMDA3QkY1QUNFQzZGOUVEQ0FBRDhCMjY1RkM4Qzg5RjczNjkzQjE5QUY2ODJDRkM0NTBGNkMxOUUKKzNENkZDRjJDCiswRkMxQkI0NUIxMTY2NzdBMTA4NzAxNTQ1RQorQ0E2RUYyMTY5REYxMTZFMjczRDQ3QzRGQUVERjRDNTk0NjBBMjJEMTI2ODM0NTQwMTAwRjgxMjI0QTc2N0Y0MjQ4QTQ5NDgxRjI1OUY4NDQyQTMzOEYyMDVERUQxNDQ0OTgyMzkwODQ1NDQ4RTBCNjdGMTBBMkRDNzRDNzJFNEZDQ0ZGN0ZEMEI0OTk2NDc4MTdERkI3MTNGNzcxRTU3Mjc2QzFFMEFBNUU1ODIzNzZDNQorNkZGMjkzRjcKK0ZCNTIzNjczNUM3MTI0MDNBMzNGRTUzRjEwCiswREUzMjlGMjQ4QTkyNjlCQ0M4NEYzMDIxRkY5MERCODU3QjQ1NjAzRUQzQzQxNjE3QTM1MDI4RjE3N0U2RjZFRjRFQTQzQzJDQ0FFRThFNERFNUEKK0Q5RTlCRDcxCisxNTgwNzkwQkM5OEZGRjIzMDE5M0I2MTlFNQorMTk0MkMwMjk4QUZCOUU1Q0Q5MEE0RDdCRTg5RkY5OTg5OUE4OTJGQ0Q1Rjc1Qzc4NzQ5MDJFQTE3NzZBODdCNjM5QTU1MDhEMzlERUE2MTEwRDhFNEQ3NAorNEYwNjI5REUKKzU1RTVBOTQ4QkYwNkJGMTE0QzhGREQzMDZCCis2NkI5MzU1RUQ5NzA2N0I5NkYyQkIxOUUwNTY1Mzg5NzFFNkNBQTc4ODZGMAorRUFENDYxRTEKKzEyNDg5QUU1MTE2RDIzRTBBREFGMDc4MTI2Cis1NDBCRDJENDhCNjFCNUE0MEIyNkE3OTRDOUVEODgyOUE4RUFEOUVFM0NBMkQxOEFEMDJGQzAwNjRENEQyODM3NkI5NTQ5NzhGMzc4NDEzMDFDMzRENDNDNjA1MkVFRjc0QTI2ODEyMkFDQTlFNDA5MjMyQgorNURDMTk1MTcKKzY3OUQ3OUM0RDk0ODg1QTMwQjEzOEY0RURCOEQKK0QwQUMxOTRENDc3MTBGMDU4Q0VGQUVCNjVCQUVCMEYyMzMzRTIxRDY3MkRBOTAzMkE2QzhDNjFEREU1RUVDNUU1MTBFMTdBREIyODhFQjZEMDM1QUUzQjU0RjdBRkIxRjU5ODM0MzhGRkJBMUQyNkJBQ0E4MEYxNjREMTFCMUJFNTU1NUE3M0Y1MDFFNzUxNDA3OTcyNEIwRDlBOTNDREZDNTI2RDhDREY4QjQxRjcyNUEyMUZDQzQzQ0U3MTQ5NUNFODM2NzEyNkRFNzBGNkVFMUUyRUNFN0EyN0M0NDZGMUIwODBBMkE3MjkxRDM1MTdBNjdGMTc1MTNBRgorMzVCNAorNjU4Q0U5CisyN0Q5RjA5NworMEZFRTJFNUQ1OTIzQjE1QjZCNEQ2ODQzNEYKK0I3OUM3MDY4MzE5RUJBRUFDQUE5MjRCRDg2Q0U3NTg3RDA4MTRBNTk1ODQ3QjFCMDdBMDMyNEU0M0E3NkI5NkRGMTM1MEI4N0RDNDlERjI5OTYxRDBBRjgyNTMyM0Y3RkRCOThCNjU4NjdBQjhBMzM1MzhBRUU0NEZCOEYzMEE5ODE1NTgyNzg4QzY2RjExMTFERUI3MDJDRTYzRjdGRUUzQTlENDk3MEU1RDY4QzQ3Cis2MkNBMkQ0MgorRkNFODc4Rjk5ODQyQjJENjUyQkNDNEVFMzUKKzAwRUM5QUY5QkIzRkJBRDI4ODUxQUEwRUM2NjFBMEY1NkJBRUI0QUQ2RkZCQTZFNTYzQjE1MTMzOUM2M0IxRUZGMjUwRDFCRTg1NjkzRjg2OUE1Mjg2MUU4QkEwMDczMjQxRTkwMzVGRjA2Q0RDNTgzQUVBMEVDOTIzRTlGNkRFMzI4MzU1RDc2MERBQjQ4QkUwOTg3NkY3REExOTQwNDgwMjBDCis2N0ZBRENGRQorNDNGQkFDNDA5NzY0MTFFNTUyNENBMkFEQkE3NQorRTcxNDM4ODVCM0RBQzZFRTNDOUYwNTQxMjNERUEwMTE0RkMwRTExNkY4REUyQTFBRDA5OUQ1MzE3MkRFOUZFMzMxNUMxODUyNEU0NUUxMEREMEVGRjk2NzM0NEM0NENBODk4MjgxQTQwNDY4NDVFRUJERThFODhDNDZDQUUyNzc5MEFBM0Y4RjVFMjVDMEJDQ0I2QUQ4MkFCOUNCNTIzMTkyRkZEMzNFMDNFODQ1NDhCQzkwMkVGRTVCRENCMkM3OTIwNjgzNDhBMTA5MjgzOUNFMjQ1MjA2Qjg1OQorQzI4N0QxRTEKKzI3MUM0RTM4QTVFRjEyNERCMUYzODdGQjAzCitGQUE1QUQxMjk3RjNBNzFFOTM1NEM5M0VCOTUwNUZFQTQ5MjM2MkZGREFEN0JERUQ4RDYxQTQxOERGQzI2QzY1MDQyOUE2QjZFOUI1MDkwQTVCMDZFRTk3QUExRjk2MzYzMUZCMjJCM0MzMDk5Q0MyQzE4Qzc5NENEQjNFN0E4NzNEMjRCMDI0QzlCQUNCNTg1MjE3ODlBNUMwQTg4RTYzRjNBOTM3NzNERjA2QjlBMjEzCis4NjNCQzQyQgorRjk1M0I2RTI1RjRDRTc3QUFGOEYxNDc4NTEKK0ZDRDg1MDA3N0MzMTFBMTkyMDMwNzQxNzMzRjFCMzUxNkRENkVFQUE5QzJCQTk3RTI0RTM2OTFBQUMxNTkyNUU4NzlFQkFDNkQ3QUMzMEM2NkM0NzE4RDQwQ0E3MURBQjREOUE0MDMxMEUzNzc2QjQ0RUE2RUZBRTJGNzhDRDg1NTVGNDQxNEI1RDBDMjFCNTEyMkZFN0MzRENFMUIyMDIyODBGQ0NBMzFDNjFDMDE1MjdDQTQ0MjAKKzk0MkU5MzgxCiswOEYwQjU3NEM1NzgzN0U2Njg4MEZDOUI0Mzg0CitFRTZGOUExNUJDNTU2MDMyN0I0RjY3NDNBRDI3MjdBNDkxMTU1MkMxRTAyMTdGMjQzQ0YxRkMyNTUxMTk0RDlCM0JFMDZGOTg2NUQ0NzMzNkNEQjE3QkEzM0Q2MkE0NTRCMDQyNEZCQzU5M0ZEREMzMEU3NkIwMTlBM0I0QjYwNDM4ODQyNkZFOTNFNDUxRDk2QzhGNThCM0NFMDg4MjZDNkFBMkQwNDIyRTI4RkRFQTA4RTc5NUYwNzZEMTkzQzIzM0UxQTA2REVERkUyRUM1QjM3OTZDNEE3N0FBNkE2NUY3QUNFNDc3MDhERkE2MzQ2MjFCRTExNkYyQTQKK0E3OUMKKzQ3OUEzODdCMDA0RjZGRDc5QzZBMEQ1NzY0QTcwODA4OThCRkE3MkNBMDA4M0I1MUYwNEE5QzE1NzBFNkQxNDE4Q0I2OTY5Q0RGMzlFMzA5RUM0QjFBQjY2MUQ1RDIKKzk0QzVEMTc3CitBNEFGNjg2NzhDNzFCNzM0RDE4REMyM0QyQjlECis4RDAzMDREQkJDMzQwN0M0QzkyMDMyQ0FBQjM4MTc2OTYyRjM0MDJDRDc2QTUxQTEzODBBNkJEMjQ5NjI5MzZGREVGQTU4MUVDMEY5MUNEN0IyNTk3NzVGNUQ4ODgwRUU4MUEzNDJEREI5MTc0Q0NBMUIxQ0Y5NTYxQTIxRjlBMkZDNUQwN0JDQUY4QkU3NkNDRDBEMDUzQTNBOUEzMUVCNEM5RTk0QjM4RjQ0Qjc0MzVGRjNBRUUzQzcyRTY1MTg5NEY1NURFMzc2Mzk3MkU3RDk1RTI3NzhDNAorODRFRkFCNTcKKzQwNDYzMUYxRjE5NzZDQzk4MTdCNzIyMEIwCis3MUM4ODE5NEEyNTY3OTI3OUIwQkVGQzg5ODZEQTc2OTNGMEY1NzAwN0JBMzJBQjFEMjRDN0M5N0REMEFGNTIwMzVBRkY0NkEwQ0FERjM2RDAyNjU1RkU4NDc1RkE1MDQ5ODNBNzhGQjUwQjJBM0E3NzFGNDMyMkNCNTdEMkI3NUUxN0NFMzQxRDhFMzcxMTc3Mjg3QUI0MTZFNUFFMUNGCis0QzUyMkJBMAorRTM3OTFDRUE0MkM5Q0E4M0ExMjZCRjRDMDYxRAorNzAyOUMwRjg1N0VDNjEzNDJDMEFBNzEwNzM5OEFDNzdGOEJENTIzNjA0NkJCRDgzM0YxOUI2QjFFNzRGM0E3RDc4QzY3OTE5M0E3NjBGNTZFQUE4MjNBOUU4MjJCNTExODdGNkRERjY1RTY2RTVERTA2MUMyOTY0RjRBNDRFNTU3NUU0QzgyQkU0QzREQjMxQTBCRjk0OUMyNzkzQjQ1NTYyOEY1RjkxNzEyOUUxNjlGM0YxODUxRUI3RTg2MTIxN0IyMkZDRUUwQkNCRjE5QkIwRjYzQjU2MkQ4MzhCMUY2Q0I1RTI5QjA2NTlGRDBGQThERDgxRkQ3ODJBCiswQzRBCiszOTYzNDQxRjA4NTQyRkE3ODFCODZDOEUwNDRGOTczN0Y2N0Y3NENFREFGODA1NDIyRDc1NEQ4QTFBNzIyN0I2NkU0MkNCCitENDM4M0M3OAorNDdEQjNFNzAzRDg4NENBNTQ5NTYyRjgxNEEKKzc0REE3MkNCMDFCNjlEODgzMkQ0NUNFQkU4OTlCREY0RTk1REFERTk3QzdCNjYwMDk2RTgxNTIzMUYyMEY5NURCODE5RTYzNjdCMTA4NkEyMDBFQzMzNjkxQUFFNTYwOUY4MkU2QUQyODEwOQorNjA4MTA5QzEKKzNFN0FGQjRDQUY2Q0IxNUMzODg1QTdDMkRDNjAKKzRGRTIzMzFERDMwRDE1QjhBMUQyQkZDNjlCMTYwRUM2MzdCNTg1QUMzOUMxNTVBQjgyNEIwMDY5NjZDQzY5NUMzOUQ2OEU0RDZDMUZCREU1MTE1NTQzNUU3MUFENjE0MDU2MzFBM0IyNUUxQTAyNzg4REQzNTRBMTg5RURCQ0MzMzlFN0EwMTI4NjdFOUYzMUY3MTU5QTM2Q0QxRkRGODIzQzI0OUExMjA5OUIxMzI1NjkyNzQ5NzRBREE4RDE5MTI2MUU3OTQ4RjZERkVBQTY1OEQ3Njg3RDlCNDc5Njk1NUY2MDU0REExNzRCNUY1Njc1RDMxRDRCRUJFQQorOTUzOAorNjFBRDI2OUI3QUYyNDREQzNFNjc1MzhDODU4RjlCMTAxRDQ0MkIxNjA0Mzg1NjlERjM5MjNGRTcwMkY0RjkKKzQ0MUM1QTdGCitFMTM1OTc2MUEwOEJDN0M1QkMzNTI3OUE0NDI5CitCMjkzOTA1OUZBMUVCMThGMTdFQjdDQzg0OEY3NDk3MzY1MUU2MTc5QUE0NDNCNTNFRTU5QjE0MzYwQjA2MkU0MEYzOTRERUE1ODY4REE2RTIzQjJFNUZFNUI5QzlEMDQxMzBGRDRBRkE1NERDMjlCQzI0QjMyQjZCMUI2Qzk4MzFCMUE2MEYzMDZCQTIzODI5N0FERDYwMjZFODk2MDIwNkRDMzkyMjc2MzdEQUNDQ0MwQjYyMTJBQzRGNEFCNjEzQzJEMTU4QTM4N0VCNkNBMkNDOTMwMEEKKzkzQTZCQzc1Cis4NTIxN0FENkExMkUyMzJGRDQ4RDdCRjk0NAorNjZCMEY2RTA2RjQ0REJFOUI3MjlGM0FGMTNCMjc1Q0YyOUNBRTQxNDMwOUZBNTlBOUU1ODlDNUU3MUQ3NDRDNDUyMjkwNTMzQzczMTRDQjM5RTEzOUI5NzYwMDAwMDU0MTMxOEZDMDg2MjBBMUQzNUREQ0VBQTFCMTdDMjVENUY4MkZFQzI3OTdDQjIKKzQwODgxM0M3CiswMUEwNEQ0NzU0QkRBRUJBMzU4RTZEMzc4REIxCis4QjlCNTNCNTM1M0NGMUUxNDMyQTNERkY4REM1NjdEQzkyNURCNTEwQ0UwQTZDN0U1Mzg2M0I2QTExQUJDMEVBOTBDOTkxODI1NUIzNDQxNzlDMzJDNkVEMjFDNENCQzQxQ0NCNzNFNUU1OUZERjMwNzlDQTJDMjJEOUEwQzU2N0UwQjZCQTkyQUUxQjE4MDAyRDI1MjgyMzU0QzRCQzBGOTk1RUU1MEU3MjBFOEQxMjg1QjJDNjJGQ0I2MTgyNEMxRDlDNjRFMjA0Qzc2NTk0RTExQzUwRUM1MUYwMDI1MDk3OEM1REJFRTM5MDkxCis5MjIzODkzMworNDJFMjg0RDdEMTlDMEMxMzYyMTJGMDMwNTAwMQorNjg5N0M3NDBFRDY4ODE3NURCMURDM0U3Rjk3RkIxOUUzMzVDRTQ1MDZGRkY2QUE0NzQyODFBRDlFQjJGNTE4RjNCNkMyRDZBMUExMUNBMzkyQUZERUVEQTcwNzgxOEI3RkRFOEMzODFGOUM5RjE5MDNEMDQzQUQ4OTVFRTNDQjFCMEE4OEQ1RjEyMDkyQUU3OTVGRTNDRjFDREVFOTE4RTQ5QzlBMzg2MTUwREYyMUE1Njk0OTY2MDI5QUY5Rjg0MDYwNEQ4RkVGNzc1MTMxN0RFRjEKK0M0NkY4ODBDCitENDUwODVGQzNGMkE4NDNGMzNCMTBCNzc3RAorNkQwMzAzRDhDRDM5N0NDQzcwNzQxMzQwODc1MjhBMjc4MTBBNzBBMjgxMUEyNTcyODRGN0MzMEUxQTA3MkU5Mzg4RTQ5MkJCOTEyOEIxN0E3QTNBQUU1MTMwMUI5M0EwMzJGRjg3OEZFMTkwNDZCRTZDRTZCQjQzNEZDNDU3QjE1NjI1MERBNzRGMzUxRkI2QjAzOTZFNTU0MjA0QzczQkMwQTYwMUQwNjdFNTE2CitDRDRCNzQ0RgorNzRFRDNDMjVDRkE5MDIyQTQ5NTZENDlEOEQzMworNTNGQzdERjNENjg4RDZERURCMDBCQjVBM0NCQjY5ODUzMkMxNUI0Njk5MDVDODk2NzhDODZDMDQ2ODg5QTIyMTU5MkU3N0M5OUYxQTFCNEE3MEYzOTIzNzVEQjc1Qzc1NjY3RDQwREQ5NDAzQzU3OEEyRjRENDU4NzBCNTczRUVCRUQ0Q0Y1QkZDQjY2ODRFNTU4RTg2MDlGMEU2NUI2REEzNUE3MDk0RDZCMjlCMTM5RUUzRDYyRUFCMDUzOTA0REI0MTJBNTlENDRENjk5NEYyQzhDODU2REYyN0JDMTg1NjkyMERFRThDNkJGOEQ5OThGRTM4ODEKK0VBQjFEQkFECis1RTc1Q0UwNDI3QUYzQUJCMDc3NTM2MThBMworNzQwNTFERjRBMkZBRkQ3RkUwODY0RTk1RUUzODdBRDI3RjQxOEIzNTVBRjY5N0VDNzgyQUQwMkRFODYwM0FGRjg1QUIxMzIyMzY2QkU1QzkxN0FERjQ5NTlFM0Q4OTlFNzhGNTQwREUzQzcxRDE4QkE5MDgwQTc1MTFBNDhCMjFCNTMwRjBFQTQyCitFNjIwNDM3NAorQzU5MjE1ODFFMUY5NjRFMjgyNTE0NjI5RTUKK0EyNUM0RkRFQzJFOUZDMTE0QkVFMjBDMjFEQTA2RTM4MzBDRkRDMkRCNEY0RkFGODFFQkVGRkIxODExNERCQzM5NzE5RDI3QkZEMUZEQUYxNjQzOEY2Mzk0RDc5M0MwNjJENUY3NURDMjE2NTVBNTJGRDdCMEU3ODEyMUJCMDM3NDQxMkVBNzUxMkNCODVGNEI3Nzk5Q0MwMTg4NDEwMzQ1QTZGQzg3RTA0Mzc5NTkyNzZBODYxOTY2MEI0NTQ1MDc5QzUKKzAwQTI0QUJFCis1NjY3OEZFNzJDREY1MTFGMDFENkY2RDRGNAorRkMzN0FFOTU4NDEwMkEwQjcxRTRBMjRFRTVGMjIzOTE3NzI2REY0QUVENEIxMDFFM0U4MjU1OTFDMDU3RkVEMUNDMjA3RjBBRDgyQkJGMTIyRDA5ODIxMDU1OUZDMzM3MzU0MTYyM0JEMkM5MEFBNjY3NTc5RUVFMUUxM0ZFRUJFRTNBREYzMjYxNTYyRkI3MTE2M0RCNzU2MzM3MEJBOThFQ0U2QjhBNkYwMDhCOTY3MAorOEIxNjhGNjEKK0M0MDdBNUQ5NTFFOEQ5MTVGMjUzMjY3NjFGNEQKKzI1OEVBQUMzMzc3MkVDMDVGNDY3MkY2QjQ1QkJFRENBN0UzQkFCQjM3NDM4MDdBNDUzRDdBREQ3QUI5QUI2OERFRDA4QzFDMDIxOUM5NEZBOTk3MUUxOTQ3NUEzNDEzREY3MEYwMzQ3QTFFRTIxOUQ1MUNBOTI1RDIwQzVDNjE1RUMyOTg2RDRFQjkwNEE4RDI3RkJERTFBNDk0QzM2NjQwMUQ0OUY5MjU3REMyNzVCRDQ4NjhFNTlGQjFGNkM1QjJBMDFCRjg5NEJERTQ4M0RBMTY1QTJDNDIzQ0Q1ODdFRjA1NzQ1MzdDQzU0NENGODZDMzRBQzIwMjI3OAorNjAxRQorRDVENzI4ODVCMDJEMTdBOTk3ODIzMUI0RDA2NworNTE3QkMzNDUKKzgzRDhDNDk3RUMxMTcxQzE5NTE0NEJGM0ZDMEIKK0E0ODVFMDUwQUYxQ0U4NTNGREIyRkFEMDc5NUUyOTEwMEY0OUVEMEY0QTc0QkEyRDM0QzM3NTVCRjU0NjZEMThBNTFCMjU2MDlBMTE5MzhFNEU0REFGMzcxNTE3MkIzQUFBMjNFQUEwOUE4OTYxRURDNUM0QkI3MUU1NjQ1MjA5OTc4REMwMTYyNzgyMjdFQ0YzMjY1MEE5QzkyMjhBQzg3NDEyNjAzM0I5N0VBMkEzQURBMjNEQjU0Qzc1NTVEQ0M0OUNCRkU4RDI3N0Q0MDQ3NDlDMDdBNzhDNkQ1M0YzNkY1NjgwNTA3Qzk1QzE0QkQ3QzYzNjA5MDNEMworNTI0MworODE2QzJDNTFDRjlCMkQ1ODZFMTFFNDhBNjFCQTVEMUNFRkIwRjVFMzdEMEMwRDcwMzEKK0EwRjA3NjZCCiswMEQ3QTRBNTI3NUU0OUI1RURFRDdDQTJCQjM1Cis5ODg1NDFDOTExODkyM0U5NzNEQzMwNTM2RkVBQkIwQ0Q4RDYyQzdBOTk3MUFGQzFERkNBQjNDOUQzQzEzQTY3M0NBOTczNzM4RUNDMUE0NDAzMkNBM0JERjJCRTkwODhENjhFM0JDQkQzMjk5QUM0OEE4NjIzRkE4NEFBREE2MjYzMkZCN0I0NjY3RUQ5N0U2MTMzMTA5MzMxN0NGRDhDRUMxMkI2OTk0MDFCMjk5QTdEQzFCRkE5OEY1NkVCMkU0OTM3NUQ2QzczQTMyQTBBRjY4QUZEQTk0NzFEQkFERERERDZFODM5RkRGQkI3QTE1MzhCQkJGNTVEMjAKK0NDMjkKK0M3QzI3REE3CitCNzYwQjQ5OUE1OTE0MDM2REMyNDcwQThCNgorMzhBQzc3NDFCQjg2MDJFMDU3Q0UwRDk3MUY0NDgwMDU2REU0MTE1MjYxRDg5RjU1NDFCRThEQzhBMDFCRkY2OThFN0IyMDFFQjQ4RThGMzhDRTMwRThCMDczOUZDMjJGNkQ2Q0JGQTQzQjUwODUxRjY0NUYxOTM4RkZCRTRCCitBRTM4MURGNworODNDNDdBQUIwRThBQ0YyRjk4OUY5Q0EwMjkzMAorNkU3RTFFNDVENjY3Q0MwNUJGQzI5NzM0QkJFNUYxNUM2Mjc3RDc4QzFEMUZCMkFCNTZCMkRBREYyNkYwOTg0OTg0ODMzQzREMEUxOUUxRDk1NzFDRjRGRDYxREI2Qzc5OEQxNjAyMUUyOTFFMjZBRjJCNTEwMjlEQ0E5ODJEMzBFNTY5NDk4REQxQTUyNkQ0QzIxMDk0NDYyNkNDQjJEMTNENEY0OTFBNEVEQ0Q0NDI2M0IxMzNGQzlDNTFCQjBBMzU5RERDNEM5REQzNkZDRjZGCitBRTNDNTU1QQorOTM3RjczMTQ5QTQ0MkI2MUFCQkNGMzhDQzQKK0ExNzNBOUFERUVGOUIyRjZCQUIxOUNGNkNBNzY1MkE0RjJBRDhCMzg3RjRFCis0QzU5MDE2NAorOTgwM0I1REFFMzlBMENCMTQ5NkQ3MzY0RDU1MAorODU5MTcwQjQ0QTU4M0M5QworNDZERkQ3MTEKKzc5NzQ0RDUzNzI3NUYyQkJGQTcwQzBCMDFFOTU3OEU4MkRFMUNGMUI4MTEyNDQ4RjYxREI5QUNBRUExQkVFMUY3MUY0CitBQzUxQkE0RUUwMDE1NEEwM0I0QTU2MTM3NzkzNDhEMzcxRTc3RDc0NjhEQzhCRjc1ODYxMzkxQUI2RkQ0MDgzQ0NBRjdBMUJGNjg1Cis3MUI0NTFCMTE1N0I5QTUwQjdFN0Q1NDM3NDQ0RDVFRTc0M0MwRjI3MkNCN0EyNTk3RkNGMzUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDUgcHV0CitkdXAgMyAvQzAwNDYgcHV0CitkdXAgNCAvQzAwNTUgcHV0CitkdXAgNSAvQzAwNjcgcHV0CitkdXAgNiAvQzAwNzEgcHV0CitkdXAgNyAvQzAwNzggcHV0CitkdXAgOCAvQzAwNzkgcHV0CitkdXAgOSAvQzAwODIgcHV0CitkdXAgMTAgL0MwMDgzIHB1dAorZHVwIDExIC9DMDA5NyBwdXQKK2R1cCAxMiAvQzAwOTggcHV0CitkdXAgMTMgL0MwMDk5IHB1dAorZHVwIDE0IC9DMDEwMCBwdXQKK2R1cCAxNSAvQzAxMDEgcHV0CitkdXAgMTYgL0MwMTAyIHB1dAorZHVwIDE3IC9DMDEwNSBwdXQKK2R1cCAxOCAvQzAxMDggcHV0CitkdXAgMTkgL0MwMTA5IHB1dAorZHVwIDIwIC9DMDExMCBwdXQKK2R1cCAyMSAvQzAxMTEgcHV0CitkdXAgMjIgL0MwMTEyIHB1dAorZHVwIDIzIC9DMDExNCBwdXQKK2R1cCAyNCAvQzAxMTUgcHV0CitkdXAgMjUgL0MwMTE2IHB1dAorZHVwIDI2IC9DMDEyMCBwdXQKK2R1cCAyNyAvQzAxMjEgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTEwIC0yMDkgNzk4IDY5NF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OTdDNjRBQTEzNDEzNzY1NDRCQzgzQ0FCM0YxRDNEQzUzRgorQ0NFNkRBMTQ3Q0Q3NTM5NDI0RTUzMDhGCis4NTU2M0E5ODVERTkzQURCMTcKKzlBOUFGODg5CitGMkI1QTQ1OUU1MEVDMkM1Rjc0RDU2REY3QworMjFEN0NEQUNBQUNGQkFDNkQzQTVFNEYwMkUwQzZBNUI2REQzMTc5M0VFMDQ2NAorQThDNDhGMjQKKzMyQzIzRTA4RDRENDI3MkI2QTFEM0E0QkQ5CitGMEI3RTBCMjNBOTRFQUU3QjhEQzUzMTI5NkM5RDU3NUQ2QjExQ0JDNjg2Q0ZFMjZGMjZFNUU5NTgxNjkyQgorRkYzNjJGREYKK0I3QzQwRjI5MjIxMEUzMjdEMzM3NTY5MzQ1CitGNjc2RUNGOEJEQzBEOEY0MUZCQTJFQ0QyQTU0QjAwQzI4Nzc1QTdDQ0U3QTExQUI4NkY4QkI3NzhCOERDNTRCM0I2MUVCM0M1QjQ4MTk0OEQwREQyNEFFCis3MDA3QzEyRQorMDk1NTY1MjkxN0QyMkJFMzQ5OTkyODIwQjExRQorQTFGRkFENjRCRkMxMEZCN0I3OUUxQTQ0NTI4MzJENTQyRTRBRjQ0NUYyQzAzQTBFMDk0MUE3ODYwQzQ3REY4N0REQzhBMTQ3MjZDQTJGMDA3RTBBODQ1NkFEQkU5NkNEQUE3MjdFNUE1MENCOEZBMzU1MUZDRDM5Qjg2RUIwQjNBQjI3N0FCNDk0NDBBMENDMkE4NkYwQkNFMzg2N0RFQjQ4QzAzNzIxMzFEQjA1MDE0MDU5QkY0QzFDMkIyM0I3Q0U1MzkxMUI5MjhCMjdCMgorOEIyNEZDNjYKKzFBMTA5QzQ0MTMzNzRCREEzMEQzRDI0QzRDRDgKK0Q5QjRBMDIxN0Y2NTQ3MjNFRDFDMUI1ODlGMTEwQ0FCMUY1NUM2ODhFOTAyNTU3MkJDRTVEQzZCMjBCQjFBODc1QzNEOUQ4M0EyNThGODkyQUIwQUNFOTREMjNDQjREQ0E4MEI5NDk5NkE4NjBFQTczMjczRUI2QjY3OUFGOTVGRTQxM0RCMTFFRjJCNTdGQUYwRkEyQTRFNkUwQUU4MzhGQkFEQzhDQzNFMTFBMDAyNTFGQTAxMzU4ODQzMjU0MTkzMTdGNjBBREY4RjREQTc3RkEyNUY3NjU2QkU3NDA3QkFDM0I5NEU3RTZCRTcKKzM2RTI2RTlBCitDQTI3NDc5QTk0MURFMzJBNjdGMUMzODlDRAorNTFFN0IyQkM0MUQwNzlCNEMzRTczNzMwRENCRUEyM0E3MkFDMTVEOTBCMTFCRTI1MDM4REQxOTg2NjNCQ0MzQUE5NkFFNjM3MjNBQUMzMzhDNkVBNkU1MjI4MDUwNjA4OTc5N0MwQUFEOUQyQjg5QjNCMjlFRDA5QUE0QkNBMjFFQ0IwNzZGNDVCMDI5MzU0NzZDNzNENzY5OEVGMjIyOENDNzI3QzNGOUYwNDk5QzNBM0NFQzgzOUM1QUY4RAorNjRDQkMwN0MKK0UwQjY1QjQ4NDM3RjM1OTI2NzE3ODAxQkZGMjkKKzI4MEU4REY4Njg2RTM1QTVDMjhFNTY2QjIxRDcwN0VGNTkyOUJEMEQ5OTQxMUI3QTFFREFDOTM4MDE2NjlCOEQxNjJBNkUzMENERTI5ODk2RkY3MEM3MzQzQTlFNUUzODYzQUI2RkNERTAwMzYyRjVGRDUyQjJERjk1OTREQ0E1RDM5MEVFMEE4OTUwMUE5QjE4MDFERjAwRTRFRUMwNjIwQTcyRDBCQjMzNzU5RTVFMDBENDlFODcxODEzRThBRUIwODBDQkZGMjBBN0I4NzY1MAorQjNGMzE4NEUKKzhFRDZBMEJBOEVCNTBCOTMxRTRBNTA2RTg3Q0QKKzg1RTg0QzU0NEQ0MkI2MUYzRUNFQzIwOTdGMUY4QTU5N0RCNzdDQTQ5NTVCN0VBMjBGQ0JFQjEyMkEyNTQ3QkRGOEQ1RTk2REQ3MUY0OUMwOEQ2NTFENDE3MUNCQTkxMDFEMEQwMUIwRDk1QTNGQjUzNEIxODc5Rjg5RjQ3MThCQkQ0QUJDMTI2NDM0NzdDQTU2QkM0QkVDMjdDNjVBODZCMzg2NjQ5NTg3MEMyQTYzMDg3NDA1MkNFNDVBOTEwMTQwMTcwQzRENTI0RkJDQzIwODBCRjY0MzMzN0MyQjIzMzRFRUMxNDRBQworRjBCNkRCRjAKK0MyODA0Rjc0QzFBN0YxNzhGQTE5OUFCNTM2OEYKK0Y0MTQ4MUQ2NzgwRTAwRTM3MkQxMDUxMzEwN0VBQ0ZFQkYyMUMxQUFBNzZCQkNCNUFBRDU4RTM2RkY2QzcwREMzNkFBM0U4NzdDQUY3OEE3RDExMjFCMTYxQTVBMUQ5MjdCODk3OTQxOTY5OEEyREY3MzIzQkIyRTY5ODlGQzlGODhBRjMwQkJEN0IyQjIzQTRCNERCOTMyMTFBMzkwNDE0M0EzOTdBM0Q2MjUyOTI1NjE0QkI4RjUyRDE3MzhGNDdEOEMzMTNENTFGMDVDOTQ1RkE4RUQwN0I4MzUxNkIwNTdFMDBENTA1NzExQ0NGNTZBRTc0QUVBQTc5OAorMDgwNworQkQ1RUUyNTQKKzE4QjczQjI0MDhFRkQ1NTUwNEUyMDRGQzIxMEUKKzlFM0RENjNGQTJGM0NBMjk4NkQ4NURDMzZEMUI3OUFEREEzMTVEQTlCMDAyNDhBNTk4RDU3QTlCNTAzMzg0MDQ4MDVDOERGQzM5RjFGNzU2REEzRDFGQjM4NDA1ODM5QTE2M0JGQjJBQkYyRUJBMUVFN0Y1RTlDQTNFNERFNzEwNTQ0NDgyNTdFOURGQkYzNjA2OTlFREU1QzA1NTRCQUJDQzRGNzk5QUY4RENFMDEzRkNFRDA4QjREMzFFMEU4RDc0RUEwNzlENTIzQkQ1Q0U1M0E2NDI1MUE4MzVDMzZGNzgyQkQyRjQyOTE5RTA4MkQ0Njc5N0E0RkQ3QworMDIxOAorMzk5REM3NjQKK0M2ODVENDhDCiszMzZBRTUzMkYzQzQ5QzgxMzAzMDMyQzAzMQorQjI5OEU4NEUzQTRBRDhDRDlCOTNGMEJBNjMwN0UzQkJBQkUyMUJCOUQyMzhGNjUxNkEyOTYwRjkyQkQ5M0E5RjY3NTk4OTBCNkE0Q0JERDA2OTA4QTQ1MTI2Q0YzMjM1RDczMjE1REQ3RTM0RDg1RTdGRTQ3OERGRjBDOTc2OUFDMDRBNzFGMzk3Q0NDMzU3MEQ1QjdGMTZGMzE4MTREQzFDODVCQjQ3NUFFOThEMTg0Q0ZFRTU4Rjc5QkMKKzM5RjM3NjZCCis1MzZCMUI1Njk3NjY5NUYzMDBCODlBQzUyMgorMEVEQTE2M0E4NjFEMkM0MEQ5RjcwRUZFQjg4NEMwNzJCMEQwM0IwMUMxMzg3RUIwNTk0RDk5RjJCN0ZCMEM1NTMyMTE1NTY3RkFEMDRGQTFGODg2NUU1MUY1NjM2QjU3REIxMzE2QzdFREVENzI4RTJCN0I3M0I5MEEyNzAxNjY3OTQxRDNGMTNEMjNFOUVCMDA4MUJBOTMwRDREODVDNjkxNUEKK0YwNEU4MzczCitDRjA1MDVDRUUxRDQ2NTdGODlDMDg2NzQ3MTdFCis4N0U2NDgxN0EyNjZEMkFFOTVBNDNBRTc2NzhCOUNDNzNDMzI2NTk0NjdGNkVDRDZEMzQ1QkVDMkJFQTAxM0MxMjIxNkVGQUUyQzNERUFCMDU2MTZEMTg3NTFBNTI4OTJDMUYyQkIwRTY5QTAyNjE2N0NGNTA0N0FBOTgzMDY5NzI2NjU4NDlGQTg0MzU2NzFGQTg1NjZCOUE1QjlDMTQ2Q0VFNEREODU2MEVGRTBGMUVCMjg0OEI4Qjg3MTdENzJENzIxNkY2RkFFRjU4NEQ2OTZCREM2MjYKK0FFNDZBOEQ2CitDQTZEMzIwRUYyRDRBMzBFQTVGODA0ODU1MAorQjc5REYzREU0ODE3QjgzRTlGMDdFOUI3RTkyOURBNkE0ODY2N0YxMTBEMzBENjA3NjQ3QzVCRTUxMDYyOTYxNTg4NzlFNTZCQURGNUI2NTc4QTQ0MTM2QTU1RjJBNEFDRTE0RDFEODdFQkRGNkNERUExNDk1QjY3NUVGMzhCMzlCMDk3NjBDQjkyMTZFQjk2MkU3MTQ3RkMzOTU4Njk5OEQwNUM4NTBFMEI3RjE5Nzc3MzExMTE0RgorQTQ5NDA2RDgKKzg3OUY1RjFBODM2M0Y5NkYzNDdDNTJDMTJBCis1NjU2QzdCM0FDRTc1N0ExMEE1REM1MDZERjNBMzYxNDQ5Qjc3NDIzRTVGRDNBRkVBQzVEQTYyMEZEOUYzNTE1RDU5QkE3Mjg2QjFBREE2RUExRjkyOTI2RjIwQkQ1Q0RDQzM3ODM0MDdGMTY4QTAzQ0RGNDRGRUI4NTY2OEQwMzZENjExMTdBREVDQTU1NTNEQ0Q5ODhENDE2QzBCMDJGM0I4RUMyMTc1M0QzMDJCNTczNTk4MkY1RUUKKzcyREI4QjJCCitDM0VBNjJDOTI3MUY4QjM5QUJFOTgxMTFEMworMTlBRkY0Mjc2RjQyQkY0RjRGOURGMjQ0NEYwNUU2NERBQjMwMDAwQzczOUIwMUFCMzNGNjVFMkYzNTE0NUIwN0NGRUU4RUQ3RkYyMDEwNTEzMDUzRkI0MERFRjkyREM4Njk2RTgwMDg2NjMxRkRBRDA0QjdFREYzODg2MUZGQUZDNTA4RTRGNzUzRjk1MENBNDE4NDExNzBBMzZGCitEOEI4NDFDNworNDgwMzM0RTAyMzMyMUQ5NDhDRDhBRjNFNUUKK0I5QkM3QkUxMjIzN0VBRTc5MDE0QjBEQzFEMzJBODRDRDVDQkZBQjBDM0Y3NkQ2NTg0MTk3MzA0NUFEMjY0RTJCNzVFNzA0NzMyNTU1N0Y3RkYzMkUwRTZFQ0Y4MUEzODUyNzc1RDgwCis3Qjk2RDAyNgorM0NFNEM5MTg4Mzk5ODU3OURDMzQ1MkNBRkM1RgorOTAyRDZFMDA1NzZENkVGMzYxRERDQTU1MUNBMjQ3NjM1MjExNEIwQTJEMjk1ODkxOEJDQkFGOTAwMTgxQ0JGNzc0NUVGMEVBMDgzQjJGMUMyMkI0QzY5NzQ2RjVCNjczNEUyNUNDM0U1MzQwQ0FDRjYxODkzMjJFOTc4QzcyQ0FGMzMyMTE1MTA1QTBCRjhGMzgxREY1REU1MzY5ODE4RjdEMDEwNzlGM0Y5Q0YwRjM4NzE5RDZCQ0EzNkFBQjYzRDA3Q0Q5MDc1NzREQTNEMUE1Q0RBMDQxNjVEM0U3QUNDOUEwQjg2NzFDNDM5Q0YyOUUzOTdENUNDNjQzCitEODUxCitCNUQ0ODVFMkEwNkYyOTE5QkE4NTczOTcyMEM0OEFERTNCNjREMTI3OEI5OThFNDJEQzhGN0NFRQorRURBMjBDMTUKK0VGOUY0N0U0N0I0RkVDMkJCNDdCRjA5QjE4ODIKKzlCRTI1MjNGMjRDMEJCRkJGMTg4MTdBNkFBQUQ0QjA5ODQzNjUzOTYyNzY0NDI0M0RFOUFFODc5RTQ4MDEwN0JCOEI5QTlBNjg1NTgwNjBBRjIxMTIxQ0Y3RTg1NDZGNjk1MjdCRDZGQzFEQzNFNDZFMTU4M0RCMEYwRjQwMkYxOTVEM0UwRDFCOUZBMkM3QzU3MjUxMzYzMUE3OTY1RDAwQzVBMkQ2RjQ5MzkwMzQ3REQ5RDkzMTlEODc2MTRCN0NEQUZENjJFMkZDMjRDCisyRUUzQTEwNgorNjY0MEVEMjQyQzkzQTYxNzI4RDg3NkJBMjgKKzI5QTRENTVEOUFDRDA1NEE5MDI4RjFEMzAzNDExQUM3QjI3ODAyOUE5OEI2RjMwNjNBNUNGMEM1NzdCQkYyRTc0NDYzREM5QTkzNDg1MTdFQ0YxQTBCRUU3NTc3NEU3QjA2NEJFMTIwOEQ5QkZBMTY1MDhGODU0NDdEQkQ1OEUzMUM3NzEyNUUxRkJGCisxMzYzRkY1QQorRDhBMDhDRjg3RkJEQTU5QjJBN0Q5OTdFRkY3MQorQzBCMDBCOTVCNEJENTMyMzlFNERCQzI0MUJBN0I0RDZCNTUyRkExQTlERTIyQkNDQjdBMzkwNDcwMTREMjRCNjJDNTQwMkUzREVGRjExQzgzRDc1NjMwMTAzOUM2RDlDM0M2RDcxMTgzMDY2QjZDQkMzRTc1NzMyMUZGNTQ1ODBFMDk4OTU3NzcwNkMyNkIxRTRBMDhEMDJBOUZBRUYyODYzMjQzQjZDQzNDOUFBN0M2MjE5RTdFQzY1RDMwQ0NEMDQyMkY2QkQxRTlBRDZGMEI5RDhGRkRDNjVBQTZGOEQ5NworRkY1OTg0RUQKKzY3OTMyODFFOUFFMjI5MDY4OTZDMUNEN0RFCis5RTlDMDg0OEM0Q0YzQjQ4QkFFODlCMzI4NDgzNzJDRTgyMjU3OTJGODQ2QjNDNTU0M0UzNzZDMEE1NDcyRDYwM0Q5N0U3QzNFQkE1ODJBNkE5MENEOEYwNUNBQzhGNEEwNkE5QUZCQjg4QUU0QUNDODg2OUYxMjE2QTg0RTMzOTU5MjkxMDVFOTc2QTBEREMxOTY0MUExQzU0RjU0QTU2QjY0NjhENkVFOEREODBFMTUyCitFMUQ2M0Y3MAorODVGMUVEN0NEMzMzNTgwQTA2RTRDMEYyOEUzQworQzY0QkI0OTNGNjRFMUFCOUEyNjAxOEJGM0RCNDQ1Q0NGN0JGMzBEQjhFRTIyNUEzRDE1OEZFQ0Y4QjNFMEIwRDk1Nzk3Njc4QzhFMzQ0Qzg0MzA1MTNDMDI1NEU0MjYxM0ZFMDNDQTQ5NUMzQzAxMjNDMjAwMUEzQzMzRUM0MEE1NEFFMkI2NENGRkY5QTkyNDcxMzg5MENFNjcxNTRGM0ZCMjZEQTA0MDY1MEJGOEJDRDUzNTJGOEVBNEE5RUE2OTQ5NTJDRENCMjc3MTNFQUFGQTJBMjMxMDQzNTJEREY2NjlBRUU5MjY3RkYwNkVGQ0YKKzExQUVENDlCCiswRjEzRTgzNkUwMjZBRDdFRDAyNzQ2REFCNworNkE2NjAwRDdEODMxM0ZDODFFNkUzRjVERjk0NzI5NjY4QzNBOTYyRjNCNjQ1QTREREU5MUNGNERFMzVGQTEzQ0Q1ODZDNEUxQjg3MUM3NTQwNTdFRUVBRDQyQjk4QzA4RDZGRDdBNjFGMjkxNDE5MzZGQkY5NzYxNzE0NjMwNzU0NDVGRUU0RgorNDQ5MUI0NTAKK0JCMjEwRjg1QTFBMjMwRDIyM0E4MDgwRjVCMUMKK0NEQkE2Nzg2QkE0MjE4MUNEODM5M0JFNEZDMkI5N0Q3OTFGNjIwMjJCNERCMkY1NkNBOTY0QjFENEUwNkYyQjQwOTZBNTNDRERGQ0EzRDNFMEZDMEQ1Q0VGOUZFOThBMDc5RTEyRTM4MjUzRjYzNjFFQzA3QUQzOTcwQTg5MzZGQjMxQkQwNjA1NEE3OEQzMzIxNzU0NkM5NUI1MjEzMDQ1MDREM0ZEM0UyQ0I3MjlCNzlEQzkwQjc1QzA5NUI4NDc0QTMyODE4QzUxREFDRDU2NTAyNDgyQTAyMTREQ0RDOTJCQzA1M0NDQjI4QkNBRjQzNzNDOTAzRTk1RQorMTY0NworNzM4QzRFNjE1NEUxQTQ1MjczODAxRjJGMjREQTA1NzcxN0ZDODIxNUZDQzQKK0Q0OTJGQTYzCis2QjIyOUNFMTJDQjQ2NkM4RDk1MUY0NjkwNUY5CitFQjgyODQxMEQ2OERCRTE0QjExMDk0Mzc5QkQ0NjUwMzM2MUEyQjc5QUNCNzM0QUNCNUZERTIwN0Y2M0Y0QzU2NzJGRkNBMjY0MUUzODNFODFGMzFCNTg0QjJERDZCRThDRkMxNDFBODgyRDlDM0FBM0Q3RUYzMzg1OUJCNkJFODkyQjY4QjU0MUM3QzYzOUVEMUVFRkU1NTcyRDBBRTg0NTQ1MTg0REU0QTZEMzE0QzUwMDFERDY1RERDMUVFNUI0QzkwMkI0MDI2MUYzOEVCRDc2MUVEMDg4REVBMUFBRjQzNTAzRjIwN0M0REVBNTIwRDA0QkMyN0JBOTEKKzcyOUMKKzBBCitGMUQzN0QwRAorQ0IzRjMyNkUxMjEzMDgyREU5ODE4RUIxMUM0MQorMTQwNjBGQUQ0RTFEQzhCNworMURGNEM0MzYKKzkzRjQzMEM2REUyMjJBRkQ2NjZENTQ5MzU2Njc3REI4NTQ2NUNEQjVCMzFDMkY0QkVBOUQxRDg5MDhCMDFBRDRDRUE0CitDNEQ3NDI0REFCOEJCMEQxRDA2MkFFRTY4RTAxNzIwODVERjNENzMxQjIwQzg2OTE1NzQ0RUE1QUNGOTNBM0Q5NzM2Qjg1MzAzNUNFCis0QUM4RDc3OEEwQzk0MzE5REVEMDQ2NjAyRDNERjY3MDY5QUVDNTE3REY4NUNDQURDNzM1Q0QKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNGIgMTQuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxYzJiMzkzNTJiMzcyYzExMDExMjAxMTMyYjMzMjkyZTMyMjczNzMwMDEyYzM0MzcwMTFiMmIyNzM4M2EzNzJmMzMyZDAxMWMyYjM5M2MzNDM3MzAwMTFkPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDJiMzcyYzM0MzczMjI3MzMyOTJiPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwYjBhPiA5MzQ2IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDE0YiBTRgorPDBhMGYwZDE5MTExNTE0PiAxMjcxIDE0NTggMCAyMDU1IC0xIHMKKzwwMDA0MDMwMDA3MGYxOTE2MGYxNzEwMDAwNTE1MTMxMzBiMTQwZTAyMTIxMTE0MGYwMDA4MTYxOTExMTUxNDE4MDAwOT4gMjA1NSAxNDU4IDUgNjEwMSAwIHMKKzwwZjEwMGYxNzBmMTQwZDBmPiA2MDk3IDE0NTggMCA2OTc0IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjAyZTJmMzg+IDEyNzEgMjAwNSAwIDE2NjUgLTEgcworPDAwMzgyYjI5MzkyZjM0MzMwMDJhMmIzODI5MzcyZjI4MmIzODAwMmIyNzI5MmUwMDM0MmMwMDM5MmUyYjAwMmQzMTM0MjgyNzMxPiAxNjY1IDIwMDUgNiA0ODQyIDAgcworPDAwMjkzNDMyMzIyNzMzMmEwNjMxMmYzMzJiMDAzNDM1MzkyZjM0MzMzODAwMjczYjI3MmYzMTI3MjgzMTJiMDAyZjMzMDAzOTJlMmIwMDMzMmIzOTM1MmIzNzJjMDAzNTM3MzQ+IDQ4NDIgMjAwNSA3IDk0NjEgMCBzCis8NDE+IDk0NjEgMjAwNSAwIDk1MzEgLTEgcworPDJkMzcyNzMyMDc+IDEyNzEgMjI0OSAwIDE3ODcgLTEgcworPDAwMTYzODM4MmIzMzM5MmYyNzMxMzEzZTA1MDAyZjM5MDAyZjM4MDAyNzMzMDAyYjNkMzUyNzMzMmEyYjJhMDAzYjJiMzczODJmMzQzMzAwMzQyYzAwMzkyZTJiMDAzYTM4MjcyZDJiMDAyZjMzMmMzNDM3MzIyNzM5MmYzNDMzMDAyYTJmMzgzNTMxMjczZTJiMmEwMDI4M2UwMDMzMmIzOTM1MmIzNzJjMDAzYzJlMmIzMz4gMTc4NyAyMjQ5IDE0IDk1MzEgMCBzCis8MmYzMzNiMzQzMDJiMmE+IDEyNzEgMjQ5NCAwIDE5ODggLTEgcworPDAwM2MyZjM5MmUwMDM5MmUyYjAwMDYyZTAwMzQzNTM5MmYzNDMzMDAyZjMzMDAyZDMxMzQyODI3MzEwMDI5MzQzMjMyMjczMzJhMDAzMTJmMzMyYjAwMzQzNTM5MmYzNDMzMDAyNzM3MmIyNzA3PiAxOTg4IDI0OTQgMTAgNzA3NiAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA1MTUxMzEzMGIxNDBlMDIxMjExMTQwZjAwMDgxNjE5MTExNTE0MTgwMDBhMWIxNDE5MGIxYT4gMTI3MSAyOTI4IDIgNDIwMCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWU+IDEyNzEgMzMxMSAwIDE0MzQgLTEgcworPDJiM2IyZjM4MmYzNDMzPiAxNDI2IDMzMTEgMCAyMDU2IC0xIHMKKzwwMDBhMDcwZjAwMzQyYzAwMzMyYjM5MzUyYjM3MmMwMDJmMzMzOTM3MzQyYTNhMjkyYjJhMDAyYjMzMzQzYTJkMmU+IDIwNTYgMzMxMSA1IDUwNTcgMCBzCis8MDAzMzJiM2MwMDJjM2EzMzI5MzkyZjM0MzMyNzMxMmYzOTNlMDAzOTM0MDAzNDNiMmIzNzM3M2EzMzAwMzkyZTJiMDAxNjMzMmQzMTJmMzgyZTAwMjczMTM1MmUyNzI4MmIzOT4gNTA1NyAzMzExIDcgOTUzMSAwIHMKKzwyYzM0Mzc+IDEyNzEgMzU1NiAwIDE1MzggLTEgcworPDAwMzIzMzJiMzIzNDMzMmYyOTAwMjkzNDMyMzIyNzMzMmEwMDMxMmYzMzJiMDAzNDM1MzkyZjM0MzMwMDMzMjczMjJiMzgwNzAwMTc+IDE1MzggMzU1NiA2IDUyNzAgMCBzCis8MzQzNzAwMzkyZTJmMzgwMDM3MmIyNzM4MzQzMzA1MDAyOTM0MzIzMjI3MzMyYTA2MzEyZjMzMmIwMDM0MzUzOTJmMzQzMzM4MDAzYzJiMzcyYjAwMzgzNTMxMmYzOT4gNTI2MiAzNTU2IDYgOTUzMSAwIHMKKzwyZjMzPiAxMjcxIDM4MDEgMCAxNDQ1IC0xIHMKKzwwMDFlPiAxNDQ1IDM4MDEgMSAxNjYwIDAgcworPDJiM2IyZjM4MmYzNDMzMDAwYTA3MGYwNzAwMjAyZTJmMzgwMDM4MzUzMTJmMzkwMDM3MmIzMjI3MmYzMzM4MDAyZjMzMDAxZT4gMTY1MiAzODAxIDYgNDc0NSAwIHMKKzwyYjNiMmYzODJmMzQzMzAwMGEwNzEwMjczMTM1MmUyNzA3MDAyMDJlMmIzNzJiMDAyNzM3MmIwMDM5M2MzNDAwMzkzZTM1MmIzOD4gNDczNyAzODAxIDUgODA3NiAwIHMKKzwwMDM0MmMwMDMzMmIzOTM1MmIzNzJjMDAyOTM0MzI+IDgwNzYgMzgwMSAzIDk0NjEgMCBzCis8NDE+IDk0NjEgMzgwMSAwIDk1MzEgLTEgcworPDMyMjczMzJhMDYzMTJmMzMyYj4gMTI3MSA0MDQ2IDAgMjI5NiAtMSBzCis8MDAzNDM1MzkyZjM0MzMzODA3MDAyMDJlMmIzZTAwMjczNzJiMDAyNjI2MmQzMTM0MjgyNzMxMDIwMDI3MzMyYTAwMjYyNjM5MmIzODM5MDYzODM1MmIyOTJmMmMyZjI5MDcwMjAwMTMzNDM5MmUwMDM5M2UzNTJiMzgwMDI3MzcyYj4gMjI5NiA0MDQ2IDkgODExMCAwIHMKKzwwMDJiMzMzOTJiMzcyYjJhMDAzNDMzMDAzOTJlMmI+IDgxMTAgNDA0NiAzIDk1MzEgMCBzCis8MzgyNzMyMmI+IDEyNzEgNDI5MSAwIDE3MzYgLTEgcworPDAwMjkzNDMyMzIyNzMzMmEwMDMxMmYzMzJiMDUwMDI4M2EzOTAwMzkyZTJiM2UwMDMyM2EzODM5MDAyODJiMDAzODJiMzUyNzM3MjczOTJiMmEwMDI4M2UwMDI3MDAyNjI2MDYwNjAyMDAyYzM0MzcwMDI5MzQzNzM3MmIyOTM5MDAzNTI3MzczODJmMzMyZDA3MDAxODMxMzQyODI3MzEwMDI5MzQzMj4gMTczNiA0MjkxIDE1IDk0NjEgMCBzCis8NDE+IDk0NjEgNDI5MSAwIDk1MzEgLTEgcworPDMyMjczMzJhPiAxMjcxIDQ1MzYgMCAxNzgyIC0xIHMKKzwwMDMxMmYzMzJiMDAzNDM1MzkyZjM0MzMzODAwMjkzNDMyMmIwMDJjMmYzNzM4MzkwNTAwMmMzNDMxMzEzNDNjMmIyYTAwMjgzZTAwMzkyYjM4MzkwNjM4MzUyYjI5MmYyYzJmMjkwNzAwMTkyYzAwMzQzMzMxM2UwMDM5MmIzODM5MDYzODM1MmIyOTJmMmMyZjI5MDAzNDM1MzkyZjM0MzMzODAwMjczNzJiMDAzOTM0PiAxNzgyIDQ1MzYgMTMgOTI3NSAwIHMKKzwwMDI4MmI+IDkyNzUgNDUzNiAxIDk1MzEgMCBzCis8MzgzNTJiMjkyZjJjMmYyYjJhMDU+IDEyNzEgNDc4MSAwIDIxMjYgLTEgcworPDAwMzkyZTJiM2UwMDMyM2EzODM5MDAyODJiMDAzNTM3MmIyOTJiMmEyYjJhMDAyODNlMDAyNjI2MDYwNjAyMDAzNDM3MDAzOTJlMmIwMDM3MmIzODNhMzEzOTM4MDAzYzJmMzEzMTAwMjgyYjAwM2EzMzJhMmIyYzJmMzMyYjJhMDc+IDIxMjYgNDc4MSAxMiA3OTkzIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDYxMjE1MGMwYjEyMDAwODE2MTkxMTE1MTQxOD4gMTI3MSA1MjE0IDEgMjY3NCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDYyNz4gMTU4OSA1NTk4IDAgMTg3MSAtMSBzCis8MzgyZjNmMmIzODM1MmIyOT4gMjAzMyA1NTk4IDAgMjc2NCAtMSBzCis8MjAyZTJmMzg+IDMxNzcgNTU5OCAwIDM1NzEgLTEgcworPDAwMzQzNTM5MmYzNDMzMDAyNzMxMzEzNDNjMzgwMDNlMzQzYTAwMzkzNDAwMjczMTM5MmIzNzAwMzkyZTJiMDAzODJiMzMyYTAwMjczMzJhMDAzNzJiMjkyYjJmM2IyYjAwMjgzYTJjMmMyYjM3MDAyNzMxMmYyZDMzPiAzNTcxIDU1OTggMTEgODgyNSAwIHMKKzw0MT4gODgyNSA1NTk4IDAgODg5NSAtMSBzCis8MzIyYjMzMzkzOD4gMzE3NyA1ODQzIDAgMzcyMiAtMSBzCis8MDAzNDMzMDAzOTJlMmIwMDMxMzQyOTI3MzEwMDM4M2UzODM5MmIzMjA3MDAxNDJlMjczMzJkMmYzMzJkMDAzOTJlMmIwMDI3MzEyZjJkMzMzMjJiMzMzOTAwMzQyYzAwMzkyZTJiMDAyODNhMmMyYzJiMzczOD4gMzcyMiA1ODQzIDEwIDg4OTUgMCBzCis8MjkyNzMzPiAzMTc3IDYwODcgMCAzNDkxIC0xIHMKKzwwMDJjMzQzNzI5MmIwMDM5MmUyYjAwMzgzZTM4MzkyYjMyMDAzOTM0MDAzYTM4MmIwMDJhMmYyYzJjMmIzNzJiMzMzOTAwMjkzNDM1M2UyZjMzMmQwMDM4MjkyZTJiMzIyYjM4MDUwMDNjMmUyZjI5MmUwMDI5MjczMz4gMzQ5MSA2MDg3IDEwIDg4OTUgMCBzCis8MmUyNzNiMmI+IDMxNzcgNjMzMiAwIDM1OTkgLTEgcworPDAwMjcwMDMyMmIyNzM4M2EzNzI3MjgzMTJiMDAyZjMyMzUyNzI5MzkwMDM0MzMwMDM1MmIzNzJjMzQzNzMyMjczMzI5MmIwNzAwMTkyYzAwMzkyZTJiMDAzNTI3MmQyYjAwMzgyZjNmMmIwMDJjMzQzNz4gMzU5OSA2MzMyIDEwIDg4OTUgMCBzCis8MzkyZTJiPiAzMTc3IDY1NzcgMCAzNDY3IC0xIHMKKzwwMDM4M2UzODM5MmIzMjAwM2MyNzM4PiAzNDY3IDY1NzcgMiA0NTA3IDAgcworPDAwMGQwOTEwMGUwMDI4M2UzOTJiMzgwNTAwMjczMzJhMDAzZTM0M2EwMDNjMjczMzM5MmIyYTAwMzkzNDAwMzUyNzM4MzgwMDM1MjcyZDJiMDAyNzMxMmYyZDMzMmIyYT4gNDUwNyA2NTc3IDkgODg5NSAwIHMKKzwyODNhMmMyYzJiMzczOD4gMzE3NyA2ODIyIDAgMzgxMyAtMSBzCis8MDAyODJiMmQyZjMzMzMyZjMzMmQwMDM0MzMwMDM1MjcyZDJiMDAyODM0M2EzMzJhMjczNzJmMmIzODA1MDAzZTM0M2EwMDI5MzQzYTMxMmEwMDNhMzgyYjAwMjYyNjA2MjcwMDBkMDkxMDBlMDIwNz4gMzgxMyA2ODIyIDkgODg5NSAwIHMKKzwyMDJlMmI+IDMxNzcgNzA2NyAwIDM1MzcgLTEgcworPDAwM2EzMzJmMzkzODAwMmMzNDM3MDAzOTJlMmYzODAwMzQzNTM5MmYzNDMzMDAyNzM3MmIwMDNjMmUzNDMxMmIwMDI4M2UzOTJiMzgwNzAwMjMxNTJiMmMyNzNhMzEzOTExMDAwZjAwMjgzZTM5MmIzODI0PiAzNTM3IDcwNjcgMTAgODQ5MyAwIHMKKzwwNjEyPiAxNTg5IDczOTEgMCAxOTI5IC0xIHMKKzwzODJmM2YyYjM4MzUyYjI5PiAyMDMzIDczOTEgMCAyNzY0IC0xIHMKKzwyMDJlMmYzOD4gMzE3NyA3MzkxIDAgMzU3MSAtMSBzCis8MDAzNDM1MzkyZjM0MzMwMDJmMzgwMDJmMmEyYjMzMzkyZjI5MjczMTAwMzkzNDAwMzkyZTJiMDAwNjI3MDAzNDM1MzkyZjM0MzMwMDNjMmYzOTJlMDAzOTJlMmIwMDJiM2QyOTJiMzUzOTJmMzQzMzAwMzkyZTI3Mzk+IDM1NzEgNzM5MSAxMSA4ODk1IDAgcworPDM5MmUyYj4gMzE3NyA3NjM2IDAgMzQ2NyAtMSBzCis8MDAyNzMxMmYyZDMzMzIyYjMzMzkzODAwMjczNzJiMDAyNzMxMzkyYjM3MmIyYTAwMmMzNDM3MDAzOTJlMmIwMDM3MmIzMjM0MzkyYjAwMzgzZTM4MzkyYjMyMDc+IDM0NjcgNzYzNiA3IDc2MTggMCBzCis8MDYyOD4gMTU4OSA3OTYwIDAgMTg3OSAtMSBzCis8MzgyZjNmMmI+IDIwMzMgNzk2MCAwIDIzNjkgLTEgcworPDIwMmUyZjM4PiAzMTc3IDc5NjAgMCAzNTcxIC0xIHMKKzwwMDM0MzUzOTJmMzQzMzAwMDMwNjE1MTkxYzIwMTYxZT4gMzU3MSA3OTYwIDIgNTM4MSAwIHMKKzwyMj4gNTM1OCA3OTYwIDAgNTUyMCAtMSBzCis8MTIxYTFmMDAyOTM0MzIzNTJmMzEyNzM5MmYzNDMzMDAzNDMzMzEzZTA0MDAzODJiMzkzODAwMzkyZTJiMDAzODJmM2YyYjAwMzQyYz4gNTQ5NyA3OTYwIDYgODg5NSAwIHMKKzwyNz4gMzE3NyA4MjA1IDAgMzI4MiAtMSBzCis8MDAyODNhMzczODM5MDAzNDJjMDAzNTI3MjkzMDJiMzkzODAwMmYzMz4gMzI4MiA4MjA1IDQgNDkyMSAwIHMKKzwwMDI3MDAyNTFmMjAxZTE2MTIxYjAwMzkyYjM4MzkwNzAwMjAyZTJmMzgwMDI5MjczMzAwMjgyYjAwM2EzODJiMmEwMDM5MzQwMDQwMzUyNzI5MmIwMj4gNDkyMSA4MjA1IDkgODg5NSAwIHMKKzwzOTJlMmI+IDMxNzcgODQ1MCAwIDM0NjcgLTEgcworPDAwMzgyYjMzMmEwMDM3MjczOTJiMDAzYzJlMmIzMzAwMzkyZTJiMzcyYj4gMzQ2NyA4NDUwIDQgNTM1NyAwIHMKKzwwMDJmMzgwMDMzMzQwMDJjMzEzNDNjMDYyOTM0MzMzOTM3MzQzMTAwMzUzNzM0M2IyZjJhMmIyYTAwMjgzZTAwMzkyZTJiMDAzNTM3MzQ+IDUzNTcgODQ1MCA3IDg4MjUgMCBzCis8NDE+IDg4MjUgODQ1MCAwIDg4OTUgLTEgcworPDM5MzQyOTM0MzE+IDMxNzcgODY5NSAwIDM2MjkgLTEgcworPDAwMjgyYjJmMzMyZDAwMzIyYjI3MzgzYTM3MmIyYTA3PiAzNjI5IDg2OTUgMiA1MTY2IDAgcworPDA2Mjk+IDE1ODkgOTAxOSAwIDE4NTkgLTEgcworPDIzMzcyNzM5MmIyND4gMjAzMyA5MDE5IDAgMjUzMSAtMSBzCis8MjAyZTJmMzg+IDMxNzcgOTAxOSAwIDM1NzEgLTEgcworPDAwMzQzNTM5MmYzNDMzMDAzYzJmMzEzMTAwMzcyYjM2M2EyYjM4MzkwMDE0MWQyMTAwM2EzOTJmMzEyZjNmMjczOTJmMzQzMzAwMjczMzJhMDAzODJiMzczYjJmMjkyYjAwMmEyYjMyMjczMzJhMDAyOTI3MzE+IDM1NzEgOTAxOSA5IDg4MjUgMCBzCis8NDE+IDg4MjUgOTAxOSAwIDg4OTUgLTEgcworPDI5M2EzMTI3MzkyZjM0MzMzOD4gMzE3NyA5MjY0IDAgMzk4OSAtMSBzCis8MDAyYzM0MzcwMDM5MmUyYjAwMzEzNDI5MjczMT4gMzk4OSA5MjY0IDMgNTE2NSAwIHMKKzwwMDM4M2UzODM5MmIzMjA3MDAxOTJjMDAzOTJlMmIwMDM0MzUzOTJmMzQzMzI3MzEwMDM3MjczOTJiMDAzNTI3MzcyNzMyMmIzOTJiMzcwMDJmMzg+IDUxNjUgOTI2NCA3IDg4OTUgMCBzCis8MzgzNTJiMjkyZjJjMmYyYjJhMDU+IDMxNzcgOTUwOSAwIDQwMzIgLTEgcworPDAwMzMyYjM5MzUyYjM3MmMwMDNjMmYzMTMxMDAzYTM4MmI+IDQwMzIgOTUwOSAzIDU0ODQgMCBzCis8MDAzOTJlMjczOTAwMmYzMzM4MzkyYjI3MmEwMDM0MmMwMDI5MjczMTI5M2EzMTI3MzkyZjMzMmQwMDM5MmUyYjAwMzcyNzM5MmIwMDJmMzk+IDU0ODQgOTUwOSA3IDg4MjUgMCBzCis8NDE+IDg4MjUgOTUwOSAwIDg4OTUgLTEgcworPDM4MmIzMTJjMDc+IDMxNzcgOTc1NCAwIDM1NDQgLTEgcworPDAwMTc+IDM1NDQgOTc1NCAxIDM3NTYgMCBzCis8MzQzNzAwMzIzNDM3MmIwMDJmMzMyYzM0MzczMjI3MzkyZjM0MzMwMDM0MzM+IDM3NDggOTc1NCAzIDU5NzUgMCBzCis8MDAxNDFkMjEwMDNhMzkyZjMxMmYzZjI3MzkyZjM0MzMwMDMyMmIyNzM4M2EzNzJiMzIyYjMzMzkzOD4gNTk3NSA5NzU0IDMgODg5NSAwIHMKKzwzYzJmMzkyZT4gMzE3NyA5OTk5IDAgMzU2MyAtMSBzCis8MDAzMzJiMzkzNTJiMzcyYzA1MDAzNTMxMmIyNzM4MmIwMDI5MzQzMzM4M2EzMTM5MDAxZjJiMjkzOTJmMzQzMzAwMGMwNzAwMjMxNTJiMmMyNzNhMzEzOTExMDAzMzM0MDAxNDFkMjEwMDMyMmIyNz4gMzU2MyA5OTk5IDkgODgyNSAwIHMKKzw0MT4gODgyNSA5OTk5IDAgODg5NSAtMSBzCis8MzgzYTM3MmIzMjJiMzMzOTM4MjQ+IDMxNzcgMTAyNDQgMCA0MTc0IC0xIHMKKzwwNjE0PiAxNTg5IDEwNTY4IDAgMTkxNiAtMSBzCis8MjMzNzI3MzkyYjI0PiAyMDMzIDEwNTY4IDAgMjUzMSAtMSBzCis8MjAyZTJmMzg+IDMxNzcgMTA1NjggMCAzNTcxIC0xIHMKKzwwMDM0MzUzOTJmMzQzMzAwMmYzODAwMmYyYTJiMzMzOTJmMjkyNzMxMDAzOTM0MDAzOTJlMmIwMDA2MjkwMDM0MzUzOTJmMzQzMzAwM2MyZjM5MmUwMDM5MmUyYjAwMmIzZDI5MmIzNTM5MmYzNDMzMDAzOTJlMjczOT4gMzU3MSAxMDU2OCAxMSA4ODk1IDAgcworPDJmMzkwMDM3MmIzNjNhMmIzODM5MzgwMDE0MWQyMTAwM2EzOTJmMzEyZjNmMjczOTJmMzQzMzAwMmMzNDM3MDAzOTJlMmIwMDM3MmIzMjM0MzkyYjAwMzgzZTM4MzkyYjMyMDc+IDMxNzcgMTA4MTMgNyA3NjYwIDAgcworPDA2MmE+IDE1ODkgMTExMzcgMCAxODgyIC0xIHMKKzwyMDJlMmYzOD4gMzE3NyAxMTEzNyAwIDM1NzEgLTEgcworPDAwMzQzNTM5MmYzNDMzMDAzYzJmMzEzMTAwMmYzMzI5MzcyYjI3MzgyYjAwMzkyZTJiMDAzNjNhMjczMzM5MmYzOTNlMDAzNDJjMDAyYTJiMjgzYTJkMmQyZjMzMmQwMDM0M2EzOTM1M2EzOT4gMzU3MSAxMTEzNyA4IDg1MDUgMCBzCis8MDAyYTJmMzg+IDg1MDUgMTExMzcgMSA4ODI1IDAgcworPDQxPiA4ODI1IDExMTM3IDAgODg5NSAtMSBzCis8MzUzMTI3M2UyYjJhPiAzMTc3IDExMzgyIDAgMzc3MiAtMSBzCis8MDAyYTNhMzcyZjMzMmQwMDI3MDAzOTJiMzgzOTA3MDAxOTJjMDAyYTJiMjgzYTJkMmQyZjMzMmQwMDJmMzgwMDM4MmIzOTAwMmUyZjJkMmUwMDJiMzMzNDNhMmQyZTA1MDAyZjM5MDAzMjI3M2UwMDJlMjczYjJiPiAzNzcyIDExMzgyIDEyIDg4OTUgMCBzCis8Mjc+IDMxNzcgMTE2MjcgMCAzMjgyIC0xIHMKKzwwMDMyMmIyNzM4M2EzNzI3MjgzMTJiPiAzMjgyIDExNjI3IDEgNDM5OSAwIHMKKzwwMDJmMzIzNTI3MjkzOTAwMzQzMzAwMzUyYjM3MmMzNDM3MzIyNzMzMjkyYjA3MDAxNTJiMjgzYTJkMmQyZjMzMmQwMDJmMzMyYzM0MzczMjI3MzkyZjM0MzM+IDQzOTkgMTE2MjcgNSA4ODk1IDAgcworPDJjMzQzNz4gMzE3NyAxMTg3MSAwIDM0NDQgLTEgcworPDAwMzkyZTJiMDAzMTM0MjkyNzMxMDAzODNlMzgzOTJiMzIwMDAzMzkyZTJiMDAzNDMzMmIwMDM3M2EzMzMzMmYzMzJkMDAzMzJiMzkzNTJiMzcyYzA0MDAyZjM4MDAzNTM3MmYzMzM5MmIyYTAwMzkzNDAwMzgzOTJhMzQzYTM5MDc+IDM0NDQgMTE4NzEgMTEgODg5NSAwIHMKKzwxNTJiMjgzYTJkMmQyZjMzMmQ+IDMxNzcgMTIxMTYgMCA0MTY1IC0xIHMKKzwwMDJmMzMyYzM0MzczMjI3MzkyZjM0MzMwMDJjMzQzNzAwMzkyZTJiMDAzNzJiMzIzNDM5MmIwMDM4M2UzODM5MmIzMjAwMDMzOTJlMmIwMDM0MzMyYjAwMzczYTMzMzMyZjMzMmQ+IDQxNjUgMTIxMTYgOCA4ODk1IDAgcworPDMzMmIzOTM4MmIzNzNiMmIzNzA0PiAzMTc3IDEyMzYxIDAgNDA5NyAtMSBzCis8MDAyZjM4MDAzODJiMzMzOTAwMzkzNDAwMzkyZTJiMDAyYzJmMzEyYjAwMDgzOTMyMzUwODMzMmIzOTM1MmIzNzJjMDcyYTJiMjgzYTJkMDAyMzE1MmIyYzI3M2EzMTM5MTEwMDMzMzQwMDJhMmI+IDQwOTcgMTIzNjEgOSA4ODI1IDAgcworPDQxPiA4ODI1IDEyMzYxIDAgODg5NSAtMSBzCis8MjgzYTJkMmQyZjMzMmQyND4gMzE3NyAxMjYwNiAwIDM5NTggLTEgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDIyKSAyMgorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDM5IHB1dAorZHVwIDQgL0MwMDQwIHB1dAorZHVwIDUgL0MwMDQxIHB1dAorZHVwIDYgL0MwMDQ0IHB1dAorZHVwIDcgL0MwMDQ1IHB1dAorZHVwIDggL0MwMDQ2IHB1dAorZHVwIDkgL0MwMDQ3IHB1dAorZHVwIDEwIC9DMDA0OCBwdXQKK2R1cCAxMSAvQzAwNDkgcHV0CitkdXAgMTIgL0MwMDUwIHB1dAorZHVwIDEzIC9DMDA1MSBwdXQKK2R1cCAxNCAvQzAwNTIgcHV0CitkdXAgMTUgL0MwMDU0IHB1dAorZHVwIDE2IC9DMDA1NyBwdXQKK2R1cCAxNyAvQzAwNTggcHV0CitkdXAgMTggL0MwMDY1IHB1dAorZHVwIDE5IC9DMDA2NiBwdXQKK2R1cCAyMCAvQzAwNjcgcHV0CitkdXAgMjEgL0MwMDY4IHB1dAorZHVwIDIyIC9DMDA3MSBwdXQKK2R1cCAyMyAvQzAwNzIgcHV0CitkdXAgMjQgL0MwMDczIHB1dAorZHVwIDI1IC9DMDA3NSBwdXQKK2R1cCAyNiAvQzAwNzcgcHV0CitkdXAgMjcgL0MwMDc4IHB1dAorZHVwIDI4IC9DMDA3OSBwdXQKK2R1cCAyOSAvQzAwODAgcHV0CitkdXAgMzAgL0MwMDgzIHB1dAorZHVwIDMxIC9DMDA4NCBwdXQKK2R1cCAzMiAvQzAwODUgcHV0CitkdXAgMzMgL0MwMDg3IHB1dAorZHVwIDM0IC9DMDA4OCBwdXQKK2R1cCAzNSAvQzAwODkgcHV0CitkdXAgMzYgL0MwMDkxIHB1dAorZHVwIDM3IC9DMDA5MyBwdXQKK2R1cCAzOCAvQzAwOTYgcHV0CitkdXAgMzkgL0MwMDk3IHB1dAorZHVwIDQwIC9DMDA5OCBwdXQKK2R1cCA0MSAvQzAwOTkgcHV0CitkdXAgNDIgL0MwMTAwIHB1dAorZHVwIDQzIC9DMDEwMSBwdXQKK2R1cCA0NCAvQzAxMDIgcHV0CitkdXAgNDUgL0MwMTAzIHB1dAorZHVwIDQ2IC9DMDEwNCBwdXQKK2R1cCA0NyAvQzAxMDUgcHV0CitkdXAgNDggL0MwMTA2IHB1dAorZHVwIDQ5IC9DMDEwNyBwdXQKK2R1cCA1MCAvQzAxMDggcHV0CitkdXAgNTEgL0MwMTA5IHB1dAorZHVwIDUyIC9DMDExMCBwdXQKK2R1cCA1MyAvQzAxMTEgcHV0CitkdXAgNTQgL0MwMTEyIHB1dAorZHVwIDU1IC9DMDExMyBwdXQKK2R1cCA1NiAvQzAxMTQgcHV0CitkdXAgNTcgL0MwMTE1IHB1dAorZHVwIDU4IC9DMDExNiBwdXQKK2R1cCA1OSAvQzAxMTcgcHV0CitkdXAgNjAgL0MwMTE4IHB1dAorZHVwIDYxIC9DMDExOSBwdXQKK2R1cCA2MiAvQzAxMjAgcHV0CitkdXAgNjMgL0MwMTIxIHB1dAorZHVwIDY0IC9DMDEyMiBwdXQKK2R1cCA2NSAvQzAxMjQgcHV0CitkdXAgNjYgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy01MCAtMjU2IDk3OCA3NjRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMjQyRDJDN0M1Mjk4OEExNkQzQUQ2M0ZBMEE2QTUzMUY1OTgKKzgyQzdGREZDRjlGNzdBMjk1RjExQ0ZGQgorNUIxMkZENDAzMzIzNTIzMjU0Cis0RTg2QkE5RgorODcyRDRFNTUzODQwN0I1NEI4MkU0RDI4N0JGMworQUM4MzREOUJDMEZENkJGQzgxQkI3MTVBQkI0QkJENjA3QjAxRUM3QkM2NTI1NTIwN0E1QTFGRUI0RjYyMDAzRTc3Qzg4MUY5OThEMzZGRUFDOEY4NjlEOUIwQkEyMzQ1Njk1Q0UzNjM3OTQ4NDc1MTdGODY4NEFGMjk2OUEyNzI2NDNCODNBNEQ0OEE3QTRDMjFBODAwMzg4QzdCQTQ3M0VFODYyNEZBMDIyRjM0MkQ0OTU0NjM3QkREMEY5NjYxOUJEQzIzOTQ2ODdCM0MKKzkxMUJERjI5CiswNzU3MzlBNEYxQjdGQzUxQzM0NUNDNTBGRQorNjExMUNDQjQ1ODIyMzIxODNENjU4Q0I4RTJDQTc4RUY1MjBEMTYyMDI5NzhERjdFMTlGNkEyM0VFN0E4NjAxMEU0RUQ3NTU1QzBEQ0Q5NzgyNkY0REM4MzYxQUQ4MDY4QUYyRkExN0I3MkFGQkE3MAorNzk4Mjc4RjMKK0M0M0FBRDEwRkQ0NzVDNDI0MjQyNzY4QTFCCitCREVCMzg0MTRCRDc2Njc3OUMyRkQwQzFDOThDQTQ5OTdFODIwRDJBMEVFMzlDRUNDMTNBREEzQTdGQzFFNUNEN0VEOTM5NjBGNjVFREJBMURDNENCQkExMTQ2NUI5OUE2QUE3MjMyODAyMUNBNDg0MTVGNTA5RTc2RjNERjQyRAorMjlGREJGNTQKKzgxQjdCNEE1NjBEQThBMEU3QTE4NjVFMkUzCitGQkFEM0JCQ0I2RjkzNzc3QjY2NzM1OUFBNTgyMzk2MjhFQTlBMjlBQUEzOEU5MDQ2MkREQ0YyRTNEMkNCQTFENUIxQ0QxMTZDOUNBRUQxNDcxN0YwRTJDNENFMzcxMjYzODRDOUNDNTcxQzJFMkU5MEUzOUQ2NTc2MDFBMjcKK0U5ODA0MTE2CitDMDM1NkQzMTAxOUQ3NUI1MzM5QzM0MzNBOAorNTJFQjBCM0VFNzY5Njg4OUM1OTgzMEM2NDhDRTUxMDMzQjFBMTFEQ0JGNzc2OTUxMzNGM0NGQjI1MkU0NEU1Qjg0QzAzQkIzMUQyNjhFM0E3RjdCOTg5QTQxNTczQkE1RDc0QTIwQTgwRTA0MDYyM0Y4CitCMjdDOTI1NgorNjQ4QjYyODA1NjM3NzYyMjE5MDYwODAyNjIKK0MwRDlCRTJDMDA4MURFMTcwQkE2N0JEMDhFNkU0NzcyOURBREVCM0IzNzcwRjcKK0ZBMDcxM0Y4Cis2QzJCOTU0MDhEMDJFMjYwODA4RjAzODQ4NQorRUU3MDFERkVENTk4NEM4RjJFN0NCODk2REVBNDQ4RTE2RkVBOEU1RTk5MjRDQTkzNTM3QzBDMDg2MjREOEIKKzVEMDQ4QzJCCisxMUQ0ODk2RUIzRkM0MTREQkUzMzhBODkyOAorMzk0NjZFMzE3QjNDRkFENjVCQUExNkFEM0Q1QkNBNTVBNkRCQUE5RjdFNjIwMzY4NkY3RjZDRTUKKzY4NjE4NzlBCiszQjA2RjYzM0JFNTQ3MTNFM0VBQjQ3RDRCRgorODVGRkE2MjM0NUU5RDcwMjY2QTExQTYzRjU2NDVFOEJDQTczQjJERTdERDFCOEZCRjA4OTg2Qjc4MDVDQzZCNTdDNDVCMzQ5OUVEMUM1OUIxRDIxQjM4NDA1NUUzNjIyMEJFRjEzN0I1RjE0MEQ1NzRCREJGQUZDQjVCMTk4MkMzMzgwNjJDOUM1NTc3REE1NDM4NAorOUQ1MUQ4MDEKK0Y1NDIyMzU5Q0NCNTM4OUEyOUM0OTQ5RTlECis3QzFEMTlDRjQ5ODExQTYyMzQ4MDdBNDM1NERCNjI5QzY0NzhDMUFCRkY3QzBCN0UyMjEyODRDOTYxODJGMjJDOTIyMkM0RURBRTExMkQ5MUE5M0Y3OEY3NzFBRkEyMkQ1QTNBN0FFRUVEOEU5MzU3MzQ3NEE0QjY1RjUzQzMKKzNDNjc1OEQxCis4RTg2RTlBRTZBQTRBNkZBRjE3MzU2RDBBRAorMEZCQUYyNTc3RDU3M0M5MUU5QzBEMzMxQTk5OUIzOUVGNURGOURCQUQ2RTVDQThGMjdDMEJCOEVFNzZDMDEzNTk2QTdENjc0NzdGM0YzNzYyQkVGREVCQjhERjQ3NzAwNTE3RDI4MEZFOTMwNzIwMTRBQzNBQTAyMEI1NTNFNjMzOTRDMzE1MzEyN0NCRUMxQzkxNTI3MTlFOEFDM0FERjk4QjgyOEFBMDgyNUMxNUZCNDVCCitFQjM3NkFDMworMjAyQzJDNEMyRjlCREYzMEM0MjJDRkIwMUYyMgorQTk0NEVGMjE1OTdEMkYzN0U5OEFGODM2NUVGRTc5OEVFN0FBNUZEMUYwNzE2MUVCMTMwQkNBMDI0NzE2MUM3QUM3OTQwNzA2QTRCRkYwMTA4NThGNDc1NjQ4NUU4OTk3NURBNjA2ODdBQUUzNzg4NUQ3NkUzRDU3NzUzMTFBMUVEMUExQkYzMkU0NUM2RkUzOTQxQjg4MzYxRTQ1MDFGMzI3ODY3MDI5N0MzNTk2RUYyOEU4MTIzQ0UyQTFGMDU5MzZDRTY0OUExOTNCRkI4N0MyNzg2QTNCRDFBMkJFCis1ODg4RTk1OQorMkUyODMzMjdFMzk0OUJFRDEzRkQzMjYyQjcKKzExOTk0RUU3MkU5RkQyOTJCMTEyMTFDREZFOEEzRDQ3RDBDNjA2Q0U4RkIwRUExQUNFOUE4QzZCRkQ2OTgyNUQ2MjM0RkY0NEE1RkI5NEI2OTMyOTE3NTNCREQ5MTQzQjRGQzNGRERBOEIzOEJGOTlGMzVCCisxODVDOTYxQQorQ0YzNTg0RTIwMUM4RTYzMzBEM0NCNzE1MEI1QworMDA5QTZERUY3QTE3OThERDQyMURBRUExMTdEODhFQTI2MjIwMjBDRkIzMzY2QzE3MUJDNDhDQjZDRDUyNDRGQkVGRjE4REZGOTg3NkMwMDJDRTg2Q0YwMEFFMEZCNDYwODFFQkI5NDdBRTNBNUU0MTFCQ0JFMDFENTZBNDNBNjNERTBFNzI4ODQ2NkU2OEM5OERGOUY1Q0M2RDU1RTM2MUU4QkE2OTI2NkRBQTJBNzUzNTMzODBCMzBFNUM0MDg3RTg5OTJFRjgKKzM0RjdBOTI1CitDMTQ3NkMyQjYxNzU1RjM3QTE0MERCRDRCRDU4CitDRDdEMkZFNEY3QkU5RkI0ODQ1RUE0MDdGRTA5NzdFNTU5RjY4NEFDREI0RDQ4MzM4QTdBN0E3OEQwQ0E1NTVDNTBDOTYzNThDQThCREU1MjNDNTZDNTczM0Y5NEFDMEM2QjU4NjY1NTU4NTc3ODdCM0QxMjFCNzY2RUFCQUQ5MzZFMzUwMTM0N0JERTdGQ0Q2Q0U0MzU3NUU4NjU0MEM2RDlERDlCMEVCMEYyMDA5RjVDNjM2NjcyMzE1RTk4MEQ0ODI2NzQxODlBCis5Q0Q4QzREQworRkVBMDNBQUU4OEY4REM1RjI2NzdENUNDODQKKzMzNUE3NzZFMUM1RjcwQTBFNjZEQ0ZCNTgwMEZEQjAyNzRDNUQ0MTE0NEVFNzNFQTczNjA2QzUzRkFFM0YyMkYzQUUxNTA4RjQ5RTUzRkFGQTA4OUIyNjgyRjU3RjUyQkJCMEFGNTExMTRGMgorNjdBQjBFRkYKKzkwRDJFOEYwNzQ0QkI4RDFBODgwNkMxOUI3RTkKK0U1NTBGMDk2QTcyRTJENTIwQjM0NUIyNDYwMTg4RjY0QzRGOTlCNEVDOEVDMUQwNzM1QTJFMjIxMjY0NzFFNzEwREQ2NkJBOEQ4OENGRkYwMDM1QTEwOTE4NEM2OEFBNjVCOTlBMkVDRjhEM0Q2MzRBMTQ1MjMxNjQ1NzJCM0U4NDZDNERFRTc5RUFDRjgwRUZBRTc5MjIxNDNERDNCMENFMEM4MTk0RkREM0M1RUQ5OEQxNkJGOTVEOTg4OUFENjIxQjMxRkQ5MUQ1RkUxREIzN0VFNDdCQTRCNTVEQzBFM0ExMzA2Cis0RjVBQ0IxQgorQkY0MzRCNzUyRTAyQzcxMTgzMzI0ODFCRUFCNQorNDAyM0VERDkxMzJCNkEyMkU0MEM2NzFDMEE0OTJEQkMzM0YwMkRCRUI5M0VCNkYzNzE5MzlFQkVGRTgxM0ZBNEFEQzFFNUQyRTgyMTQ2MTc2Q0RGQTcwNDlBRjVGOTM3M0ZCQkY5MEU2REU1RTBEMkM3NDI4N0VCNTE2M0UyMTNCOTA3NjI2MDc1ODgxOUFDRjQ2OTAwRThFRkYwRUNCOEFDMTkxNEQyM0JFMkI3Nzg0RTc3QTJDNThCODYyNzU0ODY5QkQwNzlDMTE4QTk0NzVEREU2RDA1NTIyMkY1M0Y1OTZDNjI4MDk2RTU2MkQ5ODE5Mjc2MTZFMUI0Cis2OTcwCis2QgorNzI2ODg3RTkKK0E1Q0ZBMEVEQUU3N0JENzA3MTQ4NTc0Q0NGCis5MzQzQUREQUJBNURDNDJENkZGNjRGMDM4NDY0MkJBODk0MjQ4MTFEMjFBRjNFMTAwQTdCQjJDRDI5OENDQTQ4RkQ1NEQwRkY1Q0M2MTM4NDU4OTc1MTI0RTQ3NTVEQzlGRTZDOTUxQkYzRkVDQ0Q0OUJGODNCMzFGQzVCMDRGQjU2MjY1RkE5M0NENTg1NkRBQUMzMjk5QzlEMTVEMTk3ODUyNTczOEYzNzQ4RUE4RDVCRjM3NjNDQUQ5QUYyNkMwMQorQjVEODU4NTAKK0Q5ODAxQzUyOTNFRjA0MzY5OTQ2QTdDN0JBCiswM0MzOUUyQkYxMzM4QjhGOTZCNTBGQzBFOUNFREUwNUE2NUQyQjM4QTFDRkYwN0QxMjQzRTREMUNENDY4M0E3MjRGQjBDNUNBMDI3NzhCQUIwNjVGNERENjI3MTAyQkNGM0UxREJENjlFMDUwQ0ZGODAxODFGMENFNzUzQTQ3MzU3NEU4OTZCOEE0RUE4N0M0NDIyMDI3MUIxRDc2N0FBRjM4Q0IzRTE2N0ZCRkYyODkwMjIxNUY3REM0Qjc5RDI2NTYzRkUKK0M5NDU4MjAzCitEREY3ODY0NjYyRTBGQTdBOUY0RDcwMTQ1RDQ2Cis3RURDQzAwOEU0MDY4MUI4MjU4NEZERUIxOEFERDc0NjMxMDE5QUIzRUQ1MTlGOEUxMjRCN0NFODJDMjM2QUJFRTg2QzEyOTQyQjBENjJCMUE5RjU4QjBDQTZCNEJERUMzOTQ5MjY3NEZBNjdEOTQ3OTY4NzY4Q0YxMjBDMEExRERBMEQ0QjI3MTM3QkUwOUY3NzFDM0E4OERBRkRFRjIyQjkxNUI3NjBDMTk3RDAwRjE2RDVBODg0NDczNzkzMjlENUM5N0JFQzM4MDg1ODhGOENBMjg1Q0IzOUJERDY2NTcyMkQ3RDNDNjg1QjYwNzcyQzBBCitEMkE2Rjc2NQorQjAzOTM0RUM5QzlGODEwNkU4MEQ3NjczQzc4RQorMzNGQjUzQjhBMERDMkQyQUMxOTU2NTUwN0Y4MjJCMkZFQTI4NDBGQkI2RjE2NDgzNkM5OTQxMUU1MzE2QkNFOTBEQzdBODNGQUI1MzM5RTAzRUQyRUMyQzI0OEU0MTU1NkUxRTI4MEJGMkRBQTEzMThENzNBNEZBQzZBNkE3NkZDNjM5NTZFMTE3MTNBQTc0NDFDREFDMjE5NEVEQTc1RDVBQTg1MkYzMDAzQkUwODc2Qzk5REY3NTkyRDU2RDI5NTIyRDlCMjdBNDM0NzM0RTFCRDM1MTNGRUE2NjI4QTVGRjMzNjU2MkFBMkZDNzc2MjdGNjkwNEY1RkJFCis5OEVFCitFMTFBMjc3QTM5RkYxQTY0OTI0OUZGCitGNTAzRTdFNAorOTgxMEIzREJFRkJGNTIyOEI0NkIyQzAyODgKKzY0RkU1MTM2ODE5Njc2MjgwNUY3QkZEREJCREI3RjI4QjYwM0RCNjNDNkY3MTExOUVERURBQzg3QjA5Q0YzMEQxQjZCOEMyQ0NFMUY0NjNDQzg2NUJDOTM0RUIzREFCQkRCRDIyNzBCMDgzNTlFOEFFOThDNEMKK0U1MzM4QzNCCitDRjZGMzc1NUU4RkNDRkY5RUFCRjI0MDAyMzYwCis1RUQyRjg0ODQ3OUIyMDk1NEQ4QkY2NzhDRUQxQjcyMDA5Q0U1OEJDNDNCNjlBODM3REE2ODZFQkY2MEEwRUQ1OTI3OEQ2MDQ5MjAwQzk2MjFCRDZBQzQyODBDODdBQUMzNDUxMjA4NTRCMzY0MDUyMTAwRkFDNEREQTZDMURGRkJCOEJBMTNBNEQ2NUIzOUM3MTdERjhBOEE2QTIwMTk0RThGOTlFOTM5MzM0QzAwNjVFMkNBMzgwRUMwMzM3QjA5RkQ4NEJFRjNGN0Q3MzUwRTM2MEI4RkZDODNENDBFRTkwMjZGRjE4RDA1QjMxNDEzQTFEQjI2RTVDQTkKKzA1RTQKK0E2M0M0RjIyRTVBQTZDMDU2OTkwRUE1M0VBMTdDMzc2MEYwOUY5QjJGNkEyMzMxMzk0OTAzQjc1QUYxMEU1CitFOUNENEIwQQorNEY3RDJCN0Y5MzA3MUU1RTRFODAzMEI1NzFEMQorREU1OEZDNkY4NUM3MzgxQkJGRjVDMTZGQjhFOTA1NTU4ODMyQzY3RjQxRUZGOTFGMkJBQTcwRUIxQTI2MDMzOUExMjg0MDBFQjVFNDY5NUZCNzJGRjZEMzU1MTQzMDlBNEVFREQ4NjhGNzBFQzQ3NTI1QkNEQjU4Q0RCNTA1NDhCMDRGMTE0Mzg0Qjk5N0RFNzM5NjkwQzY3NkExQzZCN0NDMzUzRkFFRkRDNjU1QjQ0OTE3M0YzMzZGRTQ0Q0Y5RjY4NzhENTM5ODc2OUYyODE0OUEwRDdBMDFBQTgyCiszQjFFNDM3MworNjI4ODJBODc4NTFEM0ZEMzk4QTIwREQ0OTkKKzVBNjIyQkFGNkExN0Y0NjVBMTcyRjAxMTAwNEIzMDhFQ0I2RDA1MEEyNDgxMjE4NkEwQjQ4QkU1MTk0MkIzMTk4RTE0OEREMENCMkExMDAwRjk3MkQ0MjZBMkRENUY4QjdEOTc2REYwQUEyOUQwNTRFNkVCMEU4ODZGQUIzNjVGRkJFQ0JBMzU3RDA2Nzc4NDk1ODg2MTFDRjgyRUFCNENCQzlDOUE5QjdFODUwNEREQTM0M0M4NDEKKzc4MUI5RERECis4MERERDMyQUY3NkFFMzFFQTY5MkI5QzQ2RAorQjU4OTFDNUJGOTg4QTFEOUU5RjU0QzI2RDE4RjBDMTdDQjY2RTI3REM2MEE4MTU4QkFDMjVFNkEzMTg4RjY5NDJEOThDMkU5M0IwOEU1NzEyN0U4QzcyOEQ3NDNBQjk0MDJBN0VBQTFCMjIzNjc4RUQ2NUNBN0U4RDE3MDE3MDIyNkJGNzExQjI5OEU1ODVERDNBODZDRkVBNjBFNTJDQzE1NjA1RAorNTg0OTQ0Q0UKKzkxRjYxNkY1MDhGMjFDNUJBM0ZFNTQ0MkVCRDEKKzU1N0IwQkJENEVEQUI4RkQ2NTAyRjExMzA5MUMzOUNCMUE3MzlBMzI5OTExNTRBQjIxNUFENEIxNDdFOUM3QUQwRDFFNTlGRUE0RTI0MTgxQ0JDNTMzRDdCMkI0QkFGNUNDNzU5MUFENTUyNjg5MDhDQjA0RjE2RjM1ODJCRTZCMzRFMzk0NDNGMjJGQjUyNUVFMEU3MzgwQ0UzREMxRjRDMjY2NDI5M0U0RjUzNUNBOEJCODBBRUEyMDY3MEY3QUQxOEMwODY2NDAwQzMzNkQyNzVFCiswMEU2QzkwMQorNTFFQzBGRkIxM0IzNzI0REM2RTgwRUVFQUM1QgorMzM4QUI4MjhEOENERUE1NUJGRkRDMDg4NzRBM0Y5REYyQUQxOUY1OTlFMjM4QkM5NTUzRTY3ODAzQUM1NzZGRTJEMTcyMDVCQTNENUFFOTMwRUY3ODk4RjQxRUM0QzdEN0MzODJFNkQ5RkYzN0NFQTNGOTJFNDlFMDVEN0ZEMkY1MzFDMTMzOUNBMEU5RkFGODg0MUVFMjQ1NTFFNTNFQTExMDhCQTlEQzc4OThDNTU4MjUzNzVDOEEwNTRCQzQzNjFBRUYwM0NBNTI5OUE3NjhFNjRCMzY5MjUyRjRERTkwODcyN0VEMDI5M0FDQ0IzNERFQTNDM0Q0N0Y1Cis2NTFBCis2MTE3RTIKK0JCQkYyREMyCis5Rjk4MUFENjA3MjM3OTgzODQxQkY3NTE4OAorMDZDNkQyOTUwNUVFMjdCMTkxRUNBREU2QTI2RjgyNTRFNkM3NTVDRDZDMTdGNDA2QzAwRkNCREE5RUM0Qzc3MTNCRTU2ODYxREZCNDZFNzdDMkNBQkRCREFDQzBDMzU4ODMyQUQ0RkJFMzVBNDI1RDdDNDkwMjE1REExRTg3QTg1QjY0MzFBQTcxRkU3NjIxNzNFNzQ4QzI5RTcxMjFEMEIyCis0MUVDRjBGNgorOTk3MkVGOUNDMEM5RjgxOENFRTk3Q0YyQjdBRAorNTJFRTQwMzEzMTE1RUVBNUE1MjlDREU3MzdCRTQ2OTlEMjYyQzFGOUJFMDdDMjUzN0ExRkYyQ0RBODRDNTM3OTFGMTRCOTAxNjBEMTFEMzBDQUIzRkYyNzY2NzIzNzJEOEUxOTVDMEFDQzgxMjFEQ0U1RDY4QjAxMjg2ODAyMDI3NkY4OEI0QkYxMkIwRDRERkY1ODMyODJFOUJCQTc0REUxNzZDRjc4NzQ4RDhGQkNFNDEzNEMzM0NBNEU0NEIzNURCRTc1QjIKK0M5MTA4OUQ3CitCOEY2RjFDNkE4MTdFNDRFNDFDNkQ2RDUyMUU5CitEMEE3MERCOTNGNzNCRjU2MDE1N0QyRDNFQUZBRjQ1MEVCQ0I5OTBCRjY2M0Q1RTE5NUJFREEwRjcxQzJGNURCRUJCRTAzODY1MEQ3NUNDQjYyQ0E2NTY5RjZFMzdFQzZGM0JFMDhGRDU5RTQyNDVFQjAzODA5REM3MjQ0QUM5ODIwQ0Y4RjgzODQ5QTI0MkI1NzE1MDg5MTk1MUVGQzRGOEYxQkVFRTVDNTVFNkNEOTE2QzRGNDM5Q0VCRkFBOEFCODEyNTY5MzM1MEZCQkFCMkY1QTk1QzM5NzlDODFGMUZCNDFGRTgxOUQxNkZGRkY1NTMyOTFBQjg2OUMKKzk4QUEKK0NBQzA0OUI5RjQ3OTQ2MTdFMzkzMzRFNzI0NTRGNkJFCitFRUU5QTA0QgorRkFCOTkyMzNFRjcwOTdDODVFOUI5MEVGNkM5MgorN0I2NTY1N0ZCOUMxNTk0MTBDNDVEQkM0Rjg0RTgwNkQxRjc1MTkwRTU4REZGMzVFNDU2Q0NENzQ0QzRBRDVDMTNENTZBQTQ3NkUxOUY4QzI5ODdGNTFFNjQ3NTVFQjE0MzUxNEJENTk0QjgxOThDQTU1MkREMzI0NzFCN0QyOEYyQ0ZGNzYwNDc2OEQyRUEwOUI4RTNDMEZEOTZFMjQ0MzgwRDQ0OUMwMDVBQzg2MEJBMUQwQkVEOTBDQTQwMTMyNUMyOTI1OTMxMEExQ0E2MzNCQzNCQzREOTUxNjI4NDlEOUI1NUQwMUE0NDZEMTQ1RTU3M0Q2MUNBM0ZECis1QTM4Cis3OUM3OTgwMzdFRjFFNkZBODczRTQ1RTM3QTg0Mjc3RUQ0NTIyNERFOTc3ODM1OEFDNUQ0RUUwODkzRTREODQ3QUYxMUMyMTY5QzI4NUMKK0U1QTNGMjQxCis3RjBDQzYyMzg1QkE0MENEMUVDNzdDRkEyRkM2CitENDY1RjlGNzA0NENCNjQzREZEQUNDNkExMUY0ODc4RjEwQzdDQzRDNzI2QjJFQTkyRDVCQ0ZDMDZEMDM2MUFGOTJDMjMyMzRGNUM4M0Q1ODE0Q0FBM0MyNjg4ODFGRjgyOTdCNDk5MzY4QjFCOTVDNzZFQjEyQzU1NUEyRjBCOUUwMTA5QkI0MEE1RDdBMkJGNUJCQTk3NTBDQzJGNTI1NTQxQkE0RjhCMTIxQzNCRUYyOEQwN0MyQkNDQjQ2RjA2MzA5MzgxODBBMjQ5RTY5ODc3QUQ2RUNGQTRBRTg3QTYxNzg1MgorQ0U4RkY0NjAKKzM5NjhFNjJEOEMyRkM5QUVCN0ZBNjE4MTcxCis2REFFRjFCRjVBQkEzRjE3QUFFOENEODAwQzFGRjM3QTFFODNGNkY5QjRBN0I5NzlCQkQzRjM2RjVGNTQ2OTBDRTM2RDI2MUYzREZDQzgxNjA5NjMKKzk0RkEyMjRDCis2NEZEOTAzRjMyRTk3NDFDMjA5MERDMUQ5OAorN0YyRDYzMDEyQTIwRUIzQzU3OTkzREI0MjI3MjkwNTk4OTJEQkE4MUY3QTRFRUI2RTJDNTlBRTM3MzRERThCNUMzRDc3Q0FCN0NENDY0REYzRjJENjlFQworQTE5NDAwOUMKK0RCNzY2NjA5MkY4Qjc4MUVEQjMxNDFCMUVECitBMEU2RkZEMTY2MzczMjE3RkI1QUQ0RTZFMjNDNzcxMkQ3OEUyODg2RTRERjJFRDdBNDNERTEyMzE0Qjc5MDc0N0Y5RUU2OTlFOUFGQjQxNzU2NjRBRkEwNzNBNEZENjdFOUI3QjU0RENDMzFFMjcxMTQ3OAorQzFDRUY1NkQKKzczQTJBMTNCQ0E5OTVGMTAyMUQ5QTk3QUFBRTkKKzU2QzM0MEQ0MDVBNTk2MzNGNDM4N0E3QTE2RjQ4RDU2MjY2MEE3NkNBOTJDQjM1NzA3N0M4ODYwRkY3N0NGRkJFOTgwMTA0RkU1RTFDRjcyOUYwMkFFNkVERThFOTU1QzU1MzVGQTIzNERFRUUxNkRDNkM3MjM0MEQxRTVEQzNGN0YzNzIyOTQ3RDI3NEIxMjFFOUM4RjY5RDRGOTZENDlBM0I4Q0ZBMUFDNzA0MDM0QkYyMERGMDczQjc0Nzg3QjMzNUQ0MkFDN0RBOTcwMjVGMTJGNTQwRjY3MjRGQ0Q3NURFMEZCREZCQTBBQzFGRDUxRDI4NTY5MzVEQgorOTAwRAorQUM5OTAwCitBRjRDRTJCRQorODc2NjYwQUVFMENGMDhCOTQxMDY3MEU1MjcKK0JDOTUzMzJEOTMwMjUxODU2N0Q4NUI5ODkwRTBBOEY4MEJFNDM1RDEwNjQ2Njk4QkI4REM5NUMwRUZFREE4MTA1NjAwNTg1RkE2MjMyODVFOURBMDUzQkMxNDEzNTBDRjlDMEIyNzdFOTc0ODQ4Rjc0NjYwNDI2RjExMEQyNTk3NDYwMjQwMzdBQ0M5MzA3NzE4NjY4RTlEN0JGMjQ5QkI5NDIxQUMxRjk5QjM2ODA2Cis5MjUwOTFFMgorMjA2NURFODlFQzEwRkFGOUUyRDdCQzc4OEUKK0FCRDJBNzQ1Mzc1RDM5RDc0Njk0RDY5M0ZDNDdEMzhFNjY2MUE3QTAzNjRDOUVDNjI5QTdGQjJEQzA4NDQ5NEZFNjQ0NURBQkI4MTJBQjE4RkU3RTVFOTY3QUZGNjMzRjgzN0Q1ODhFNUE3NjVEMDhCOUQ2MTM3MTU1NDJFMzg4MzJFNTk5RkE5M0Y3RjAzRDA4QUIyNDk4MTVDQzY5RTM5OTYwCis3RkIxQzc0QworN0YxMTA0NzA0MzA5M0JCNzdDNUM3NkIyNkIyMworNjMyNjI1NDVDQUVCODA0RjU4RjlDQjI5MDE0NTNCM0E5ODY5QjI0RDY5NTc4NDhCQ0I1NkExQUM3MzBEN0YxN0IwQ0MwQ0I3ODJFQjY3RTFERDc2QTVGREJGRTE2NzRGMzA3OTNCMzQ5RUZGMjNEREEwNzcxQjlBNUFDODM2NkEzQkUwQTlEODhGQjhFNjRDNDdBODQ5M0NERThDQjFDNEE2RjczNDlFRTQ2ODgzNTA3MDU3QUZDQjg5RDYzNDYwMEI2MEQzM0M2MzA0OTU5MzYwOEEyQzdDRjkxRQorNDdFOTgyRTIKKzlDNEQ1MUUwQjVDQzM0NTY2NTY2QzRBMjNGCiszRjQ5NzQwM0RFNzUzQzNFQzhCMzgzMUM0RUFDM0Y4ODYyNDZDNzg1RDI1Q0EwMjg5NTU4NzlCMTgzNzFGOTE5RTRGRTc0Qjg1MDMwRTE0ODNGNjA3MDg5QTNENjlGNDNGRTZBNUNGMDU3NkNBNEU1QTUzNDkyRjZBOTdBMjQ3NjcwNDkzQzA5QTJBMDAyMzM2QThBNjlCQTYxRUEzQTA4MDNFNzQ2NjJEOEJDQjc5MzczCis4NkYwREM1OQorODU0M0IzMTRGQTY0QTAyQzVFMTQ3RDA4RjIKKzVCQkYzRUREQUMxQTEwMUQ3ODE3MjQxOTBEMTU1OTY3QjA0OThCNjc4RDNBOTY3M0U4OUI2NTE0RUJGMTI1OThDNEU1OERENDQxQ0E2QzkyRkJFNkE3MEY0RTY1RDhGMjEwNEUxRTY5MkM4NTg5MDkwNDA0MkQyMTgwRDMxNzBBRURFMDk3NkNCNTFBRkMxQUY1MjFGOEY5M0JBNzBFODdBOTI2QTYyM0Y3RTJCNzRENTk4MTQxNUYKK0ZDQTkzRDAxCiswOTRERURGMTNEQjlFM0Q0QjREOUE4RUYzM0RFCis5ODhGRDM3MEUxM0E3MjM3Rjg4RDg3NzA3MDYxRkVERjAxOUFBNEVBMTA2M0E0NjA5MDczMjRGN0Y1NjY4RUNFMkJGQkUwQ0IwMzhCNzNDQjIzMEJCREJGQjZFNENENzM2NEQ5QUUyMEM2MkM1NEI3MjRFMEJCNUM3MjM1NkFEOTg1QjBDRjRCNEUxMTZGMDcxMkZBRDE0OThCOTRFREU5MkJGNTA1MzVGQzczM0YxQjAyNjFGMDU2QkQ4MjdBNDVCMUU1QzEwMzhDMzJDNDUzQkJBQ0ZDNDNGRjc3QjUwQUQwQTBBNzBERjQxQjlEMDM2RUVGRDA2MDFCRDkKKzQyMjMKKzlBNTlCRjNBQjg4OTI2OEVFMzc2M0M0Qjk1MkQzNzQ4NkRFQTJBMEE0OTBGRThGOUZFN0U5NTg1NzNCQTlDQjlCODQ4ODkxRDk3NUZGMzhGMDI5RkZEODBERkFGNTAKK0MxQUU4M0M4CitBMTVDMkJBOTk2QTlEQTRFMDZFMDA3RkZDNURCCis4NDI3Q0Y1NjI4NjEyRkQ1OURFREZGOEM3RjdFRDA5MDFCQUZGOThCNjI2REI2OEYzQkIwMEI2QjkwODNDRTUzREI5REVGRThCMTVGMUE3NjJFMDg0MTM3MkY4QjU2NDIwRkIwN0I0Q0UzRkFFNUQ3NzJEMUFERDkxQjRFRkRFN0IxMzc1NEZBNEE0M0IxMDRDRkIxNUMyRkQ0OUYzMjNFQzI3OTk0OEZGMTMyNThDMjE0MjkzODdGRDFCQzM4RTkwMERFNkY5MjlDODU5M0IyQ0REQUFENjk5RQorNTg1NUFGNEEKKzM1NTI1RjBCMzhFQjU1MEVERDY1QThGQzgwCis2OUQ0RDFGNjBCMDkxOUJCMkRDMjBFMDMwOTcyNkY5RkY5NTAwQTQyQ0JGODEyRDAwNEQxQzk1Mjg3NUQzMzZBODZBN0E2RjUxMzJCQjkzMjU1NUYyNEY0NUY5M0VFRDREREI0QkQ3NTQxNjFGQUVFN0JFRDZGQTkyNEY3MTdDMzBFMTg1OEZDMDU5NjJCNjQwNjQ4OUJBRjg0MzIyMEExCis5RjVCRkI5QQorMzlEM0UwNzhGOTk2QjEwMTJCNkY0MkI4NTkKK0I5RUIzQUM2N0Q4MTZCOUZBRUUyM0NDM0M1MUNGMzc1RUZGQjE0RTFGN0E3RTdCM0U5RTg5NkM5NUEzMUIxNDE3MEE3NjYyNUUzRTk0NUVBN0UzQzlGQzQ3OEM4MzY0NEY5N0ZEMDYyRjY0RjhFMzE3OTFCQTY4NTdEMkVENEYwMDYxQzlENzI0MzZGMDg1RkNDQ0U4MjkwMUZCQThCQjg0RUMxMTc3M0Q3QTNENzMyMEJBMzY5RkI0ODUxMTc0NDM1OURBRQorQkM3RTdDREIKKzM2ODY2MjgzNTg4REY0MzBEN0U4NTAzMzg3NzMKKzEzRkY1NTcyODNDQjIyQTVFMDVDOTJGNEE1MUI0M0QxNjNCNTA2NDVDNDFEMDZENTU3QTM0RDE1QjZFQ0U0OEI1NzQyMzk3MTFGQTYwNUM4QUFCNjk5MTc2QzNGNzU0RDc2QjI5RTg1QjIxRDE2Q0VBNzRBOTY2MTdBNzJFOTZDNkM2QjdCNDBFQ0YyMjA0NDY0OTVFOTZDNjhFNkFDRTU3MEQwMjAxN0Q4MDJFNDg0NDY4NzhEQ0VBODkyQTdDMDkwREE2NkE1QTM2RDI4MTQ4NDJDM0JEQUREOUM4MzNGRjZBMDEyMTMxNkVFMTk3ODY0QTY1MUVGQjIzMworQjA0RAorOTZCNEFDMjEyMDk4REYyQ0VBMTUyQUU1QTJBQTc4QjVENEMwMUY2NUQyRTQzNjU0RjBGN0NGNDBFNDUxRTQyQUQyQkFGRgorNEY2Q0M0NTAKKzM5QzExQ0M0NDU2MDk3NjExNTI1QzlEQTRCCiswQjJBMzg5QzhDN0Q1MzA1RkVDREIxN0ZGMkY3QzNEMDQzNzA5MTVCQzQwQjY2RTYxQzIzNkEyOTlDNjVDMTRBNEJDMzI5NjQ1RERGNTc4RjlDNDA1OEQ0NzYyMjA2RUUxMjg2NzExRjg1MjgKK0NDQzRBRjA2CitEN0JCNjgzMDg4RkM3NjY1MENCQjJBQzcwMzNBCitENzgzMTlEMDE3RTM2NTIzMDk2RkI5MkREQzY2Rjg0OUUxMTA1NDA5MzI3Mjc2RDA4QkM2RjQ0QzZCRTI3QkE1QUI1QkI4QzM4RjUzMkQ3RUJCQzAzNEZGRkM2Q0U4QzJDRkY4QjhGMTg2QjM1QzhFMzhBQUFGNEIwMjNDMDA0RjI2MEExMEQ5NUNDRDVBMDhGODM4Q0I2MzFDRDYxMzE3MDk2RUE3RUZBN0Y1NEEzRjZCQTlENjZEREREMDc5RjU0MUNBOTU2NUVDRURDMTg5QTY1MUJDQ0Q5RjkyMTIzMDJDNjBGRDRGRDczMUIzQ0JBM0E4QUM0QjY5MTkKKzlERkQKK0JCMDlCQzZENTkzRjQ3RjYwNkE4QUJDRDQ3NjczNkY3QUI2REEzQzFENDQ2MTUzOUQxNTJCRTNFMzJGQkQxCisxMTc1MjU2MAorMkUzNkRDN0JCOUQ0MEIyNDA0RUFFRjYwQkE0NAorM0ZFMERGRTM2OEZDNkYyRUVFNTI5M0VBM0VCMTFENkUwNDYwQTMxQjFCM0Y3NDJDMjhBOUFEMzI5NERDOTE4NkNFM0VFNjgyNjk3QTFDRUQ4NDcxRUJFRDMzQkNCNEVGNUExREU3RTYxMjhEMENEQjU1NEQzQTAwNkZBODUzNjZDOUQ0OEMxRUJBM0U4OTE5REZGNzM0MTY4MTg2MEI1QThGNjZCRUYwRDVFMTdGNjdDODFCNzUwMUFCNEJDNzFDQTBCMUIyQ0E3NjI0QkJCNDVCRjdFNUQ2Cis2MDRBQ0E0NworNzJFNUEzQjRGMUE5MTIzQjJERTMzNzA3RTAKKzY4MDcwQjFGNUIyMTFCRTU5QkExRUU1OTk3ODM5MEM5Q0YwMzlFRDU4NTMyN0Q1QzcwRjcyMDhBQkRCRENBMzZCNTQ4RjQxQUMxN0M3MjhBQUE4RDZBMTA3RDNCNzIxMTQ0RTJCOTdDMEUyRTJFMjlCQzc0RkIyQ0Q5OTUyRjJGQjUwNTNGMTgwRDZBCitDRTMxMzIyRAorMUVBQzUwQ0VENEMxOTk4OEM5RDEyRTcwREM1NAorQTJBMjZCMURFNjdGQzU4MUQ0MEQyNDQ5Qjc2MkExNDY3MTc5MTdCMjFFNTJEQjdGQ0E2MkVCRDI1MTkxRTA5NkM1QTlDQjI2MEFFOERCNjAzRTQyODU2QzZCQkRGODlBRjY3QTVBQ0ExQUM4NkJBRUM4OEMzRDc3NTBGMjA2OTJGQzYyOUJBOTQyRTIwMjAzRTRCMTY1N0RGNjAxQjk3OEQzQUU5QTg4Mzk4QjBENUQ2NTUzQjMxNDhEMzExOTVCMUY1RDZFN0JBNzEyMjMxMEM2NUQwOEI4OEUwMzMwNzAxMUU0OTUwOEM4QTkxQgorMTVGOENFMzEKKzJGRDRDRTk0QjVBRkVFNjY1NzFENTAyNEM1MUMKK0ExRkRBQkZGQzczRkJFMDZBRTlDMDBDNzA0ODgzNUNEQUZBMEFGNzQ2MzZDREI4OUZCNjVBRkE2MDBFOTREQTBBODhCOUI1Qjg2REQxOTM2NTkzQTlCRUU0ODZCNkVEMkZGNUQyNkQyMzFGQkEzOTdBM0M5MDU4REY2OEUxMkIzODM2NEU1RUFEQzkwRkYyNTBBRURDQjQwOTVDNTQ0MUQ0NURDMkU3NkZCM0VBQjZGODQ0RUJFNzE4RjMwMENGNzhFQ0Y3RjBGREI2MUQxM0JBOEVECis2NEUyQ0U4NQorRTM3NzE2RENGRTY2Qjg0NjYzMjBENTgxRTkKK0YzRjY4REM2NUUwRDFBNzM0NzlBRDI1RTU0NDZDMUNFMEIwQjY5MDYzMjc1MDNFN0UyQzJENTU5Mjc0RkFGODkwMEIwMkFENzQ1RjQyQ0FDRUNBNDA2RUI3RDk3QzEwMTYyMjdFMUU1ODMzNDY3RjI4MTg5OUYwMjM5RTI3MjJCNEFGQ0MxMTc3MTZDNjNCMEJFQ0IyOEE3M0FGNzlFRTQ5NTc1RTc5NzY0Qzc3QgorQTkwNUNBQkYKKzk0Q0M1QjY5N0MzOUE3NjkzN0VCMzE0NDBDQTIKKzJEQkY4MjUwMzIyODY5NkQwNkUxQ0VEMEM5MzJCRkY3MjIyMDhCOTM4OTI3NkZDRkUzN0VFQzQ3RjZBMUM4NDgxRDE3RjFCQjA5NUU2QjVCNDY0MjI1OUZGMkFEM0JGOEFCODE1MUY0MUU1RDk3RUY3Mjk5MTFENDg5NENCRjExNzVFOUFFQkY4NDhCNDdGQzMzOERGMTM0N0UyQTgyOUUwOUIxMjlEQzNDQzA3RjY1OTM1MDVDRDJFNUI0ODYxNzY5NjI4QjBBM0U1QUZFQjBEMjBDN0I0RUM2MTg5QzU5ODg4RURBQjIwRkFEQzk0RTVGOUY3ODk3Cis5RDIxMzJDNgorRTY2NjYyMTM4NkE3NUYyRDYxRTQ2Q0MxRTUKKzdERDRCMkE4MjkzQ0RBQUVCMDc0NTUyRTdFMDdEMzlGREY1MDVEODRCODlCODM0ODk5RTU0QTMwNTJFRjZBQkVDODJENzgyRDNENEZFM0M1RDg4QUZBQTFCMzY2NzQwREU0QjY2NzJFMTdEQ0IxQTNFQjRBOTlGREUwMTg4N0I0RjZGRUU4RjJCRAorMDY3NTQ2MDAKK0JFQzdGN0U4RkY0REE0QkQ2MTBFQjE3NkU3CiszQzYwOUY4RDlENkE0ODAzNjk5MkQxQTJDMDNGMTM3MDk4RjYzQzc3NTQ5MzU1MUIxOTVGNTZBQ0JEMDYwMjdDNzU0QTIzRjdBQjlERkY5NkRCRTdCNzlDMzZBQkY2QTI2OUI2OEE0MUMyRDZCQTJFMTg0MUFBQzdBQjUyQTE1M0E1QjBFMUUzRkUwMTRDMDlGQkQwMzdENTEzM0NEMTI5QTUxRTZCNEM2RkIzRDg0QTNDRkIwQTU0RjE4QTEzRDVDNUI5CisxODEwRDIzMworNEYwQUE4MDY0QTBFQkNCOUNBMDg4MkU5MjAKK0VCMUMxODREREU1Q0M3MURGNDJFQzVEMTVEMDM4MkI5NTkxRjQxMDE5OEQ0NDQzN0YzODU0Mzg5MDU3NURBMDJGQTU3QjhEQzM1NzgzQ0YyRDUzMDlDNTk0N0Q4ODk4Q0I2OTlCMUE1RDA2MDY0MTBDNjYzNzc2NkFFOTMwMkM5MjVCQUJGMUUzODJCNUQ2QjMyMjc0RjU2MzhCRTkzODZERUY3RjkwMzhFQkNCNDkzMTUKKzQ2N0Q5QThDCitDQUY0RTVCNDFENEMyQjY1MTREODkxQzZGM0QyCisxRkJCQUFEMDc2MjdEREMzRjE0MjM3QkI0MDdEMjg1OUNENUM4MDUwQUU5NUEzRTVCREUwNDJCMUZFNEZFNjVGOEMyRUExM0NFQjhENjM3NDkxQzdEQTY1Q0MwOTg2M0Q5QTA1QTgwODlGRUZBNUU3MjM2RjExM0Q4OTAyOThBQzgyQzdGOUJDMTA2RDdGRTdDNjM0RjNBQkYxQzBENDIzMDczMzUzM0M2RkQ0RDQxNkE1MUUzNTRCNEIxRjVCMDBDNTc2QTlCRjUxODNBODFEMTk0OEZGOTQ4ODk5RjdGODdEQUVGQjkzN0ZGQTU1MDM2MDQ2MDc4Q0Q1NTMKKzhBNzEKK0I5RDZBNUVCMjAyOERDMUI3NDg1QTYwNzY0RUYKK0E4MDkwMkUzCis4NzcwRkUxMTlCNTE5MkVEMzU3QTU4Rjc5NTA3CisxMDMzNzExOTM3NDBDNjU2MTFFNjEyQTREQTNCNUMyRkUwOTlDNDUzRTc0QzYyMDU0MjUyMUZERkI5MTE5N0I3MkRFNDI0MTJFQ0I0RUVGRDIzRjYxNTM5M0Q5ODdFMjdBQkM1MkIwMkMwOUYwN0FBRkM3NUIzOEYxMDY2ODg5MkJBMUE4QTM1MkRGNkUwOTg4ODNFNkExMDJERkI1NzRGOTZEMjQwOEI2MDc2QkE2MjhFQzQ0RjBBQkFEMjI0NEQ0MzhDQTdBRjhDOEE3QTkxRDY1MTBDNjgxMTRGODQ3REU2NDc1NTU3MUJDNjQzNzlBQTc2RjVGMDlGMzQKKzA5OUIKKzVCNjQ1NDFCNjdDNDZDMUM0QUM4MzIwMTU4MzNBNTk3MjRFRkJDMDgyODVGNDQzRTlECitCRTc2ODMzMgorNzk3RjQxMzQ0RTlDMDRDQkRDMzA3MjU2RDE4OQorNDhBMTgwOUQ1M0JDOTZBRUJFNUJEQjI2NURDQzE1MTZGRTNGNzk5Q0I2MkY4MTVBREFEQUQwN0JCM0M1RTJFOTNBQUI3RjgzMzk5ODI5RTA5NDI4RjE2RDNCNTg0MzgzRTQyN0M3RUQ2NkQxNDJBNTlCOUUxNUJEQjBFMDQzRkEwRjIwQ0IxQjdCOUQ0MjQyNDcyREE0QjZBOUFGNTZERUVGRDFGRDk2MDRERUUwRTc3MDVCRDlGM0U2Njc4NTgwQzJBQkJCNTQ0MzI5RDczMEEzNzVDMTMwQTIzRTNERjYwM0ZBODI4OUU0RjI3NUE2QTcwNUM2RDcwOTRECiszODQzCisyRkQ1RUUxOAorNTZENTlCNDQ4RDMyRjk3NEI1MzUwRjgxOTQKKzkxMDQ4MEYwNkU0RkZDRkE1QTNFQUFBOTZFMzcxQUUyOTY1N0FEMEJBOTkyNzQwQjBGQTM2MDRGMTlGQTgwRDZGQzU0MjBGNEZGNjZCN0MxNkVBRjUzMDFDNjVDQzREQzZGQTE4QUQ4QjYwRTA1MDUzMjQyQkE2NzRFNDc1RgorNzQxRDlBODAKKzk1RUNDQzE4ODBBRTU5QkFGNjAwMTQ0MzNBCisxRDhFMDYyREFFOUFFMTE3ODFFNjU3RTE4MkU2QzhBQ0Q2MTJFQzFGRkY0NjIwCitEMkM4REI3NgorMzQwRjJGNUFFRUQ1RDdDQTE2QjZCNUZBMzQKKzEwOENFNjE1QTA1M0MyNTJGNTRBMzZFNDBDNDU1RTlFOTI0Q0RCNTI4M0ZBCitEMzg2OTAwMgorQUY0QUIwM0I1QkYzMzhDQTE4NkZFN0MzMkEyOQorMzEzRUFBQjhDOUQ3ODdDNworQ0U2RjNDQTcKKzM2MTVFNEJERDBBMjRCRkQ2MjI4NTcwMzAzRjRBMzUyREREMkU5M0VCMEM4MkY1OTIyNUU3RDRBNjFBQ0FFMUNDRUZBCiswMjQwMzgyMTZCRDYyMTZCNTVDNTc3RkY4MzAyNTM4MTBEODY5QTE4ODY1OERCQTlFRjg3QjZDRkJBMEJCQ0FDRDE2NUUzOTEwN0U1CitBRDI0NDMxNzk1RTAyMzg5MTMxQzg5RkY3QTBGN0UyQTRDMEQyRDQ1QzE2NjM3MUQ1MjFGRTEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2g5LjUgOS41MCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDFiMmIzYTM2MmIzODJjMTEwMTEyMDExMzJiMzQyOTJlMzMyNzM4MzEwMTJjMzUzODAxMWEyYjI3MzkzYjM4MmYzNDJkMDExYjJiM2EzZDM1MzgzMTAxMWQ+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MmIzODJjMzUzODMzMjczNDI5MmI+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDBjMGM+IDkzNDYgMTMzMDAgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyODAgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI4MCA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjgwIDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI4MCAzIDcxMzMgMzIgcword3N0OmR1dGNoMTIgU0YKKzwwNzJjPiAxNTg5IDE0MzEgMCAxODM2IC0xIHMKKzwxNjFhMTkyZDMzMzE+IDIwMzMgMTQzMSAwIDI5NTAgLTEgcworPDFmMmUyZjM5PiAzMTc3IDE0MzEgMCAzNTcxIC0xIHMKKzwwMDM1MzYzYTJmMzUzNDAwMjkyNzM0MDAyODJiMDAzYjM5MmIyYTAwM2EzNTAwMjkyZTI3MzQyZDJiMDAzYTJlMmIwMDNiMzQyZjNhMzkwMDM1MmMwMDMzMmIyNzM5M2IzODJiMDAyYzM1Mzg+IDM1NzEgMTQzMSAxMSA4MjQ4IDAgcworPDAwMzkzYTM4MmIyNzMzPiA4MjQ4IDE0MzEgMSA4ODk1IDAgcworPDNhMmIzOTNhMzkwOD4gMzE3NyAxNjc2IDAgMzYzNSAtMSBzCis8MDAxZjJlMmIwMDI2MjYxNjAyMDYwMDI2MjYxYTAyMDYwMDI3MzQyYT4gMzYzNSAxNjc2IDQgNTM4OSAwIHMKKzwwMDI2MjYxOTAyMDAyNzM4MmQzYjMzMmIzNDNhMzkwMDNkMmYzMjMyMDAzOTJiM2EwMDNhMmUyYjAwMzUzYjNhMzYzYjNhMDAzYjM0MmYzYTM5PiA1Mzg5IDE2NzYgNyA4ODk1IDAgcworPDNhMzUwMDBjPiAzMTc3IDE5MjEgMSAzNTA5IDAgcword3N0OmR1dGNoOS41IFNGCis8MGQ+IDM1MDkgMTg1MyAwIDM1OTMgLTEgcworPDBhPiAzNTkzIDE4NTMgMCAzNjc3IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDYwMDBjPiAzNjc3IDE5MjEgMSAzODc3IDAgcword3N0OmR1dGNoOS41IFNGCis8MGM+IDM4NzcgMTg1MyAwIDM5NjEgLTEgcworPDBhPiAzOTYxIDE4NTMgMCA0MDQ1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDYwMDI3MzQyYTAwMGM+IDQwNDUgMTkyMSAyIDQ2MjMgMCBzCit3c3Q6ZHV0Y2g5LjUgU0YKKzwwYj4gNDYyMyAxODUzIDAgNDcwNyAtMSBzCis8MGE+IDQ3MDcgMTg1MyAwIDQ3OTEgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDI4M2YzYTJiMzkwOTM5MDAzODJiMzkzNjJiMjkzYTJmM2MyYjMyM2YwODAwMWYyZTJiMDAyNjI2MmQwMjA2MDAyNjI2MzMwMjA2PiA0NzkxIDE5MjEgNSA3ODY2IDAgcworPDAwMjczNDJhMDAyNjI2MzEwMjAwMjczOD4gNzg2NiAxOTIxIDMgODgyNSAwIHMKKzw0Mj4gODgyNSAxOTIxIDAgODg5NSAtMSBzCis8MmQzYjMzMmIzNDNhMzk+IDMxNzcgMjE2NiAwIDM5NDEgLTEgcworPDAwM2QyZjMyMzIwMDM5MmIzYTAwM2EyZTJiMDAzNTNiM2EzNjNiM2EwMDNiMzQyZjNhMzkwMDNhMzUwMDBiMGE+IDM5NDEgMjE2NiA3IDY0ODggMCBzCit3c3Q6ZHV0Y2g5LjUgU0YKKzwxMD4gNjQ4OCAyMDk4IDAgNjU3MiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDA2MDAwYjBhPiA2NTcyIDIxNjYgMSA2ODcyIDAgcword3N0OmR1dGNoOS41IFNGCis8MGY+IDY4NzIgMjA5OCAwIDY5NTYgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwNjAwMjczNDJhMDAwYjBhPiA2OTU2IDIxNjYgMiA3NjI5IDAgcword3N0OmR1dGNoOS41IFNGCis8MGQ+IDc2MjkgMjA5OCAwIDc3MTMgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwMDI4MmYzYTM5MDkzOTAwMzgyYjM5MzYyYjI5PiA3NzEzIDIxNjYgMiA4ODI1IDAgcworPDQyPiA4ODI1IDIxNjYgMCA4ODk1IC0xIHMKKzwzYTJmM2MyYjMyM2YwOD4gMzE3NyAyNDExIDAgMzcxMSAtMSBzCis8MDAyNDE1MmIyYzI3M2IzMjNhMTEwMDMzMDAwNzAwMGIwYT4gMzcxMSAyNDExIDQgNTMwNyAwIHMKK3dzdDpkdXRjaDkuNSBTRgorPDBmPiA1MzA3IDIzNDMgMCA1MzkxIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAyODJmM2EzOTA5MzkwNTI1PiA1MzkxIDI0MTEgMSA2MDU0IDAgcworPDA3MmU+IDE1ODkgMjc1NyAwIDE4ODIgLTEgcworPDFmMmUyZjM5MDAzNTM2M2EyZjM1MzQwMDI5MjczYjM5MmIzOTAwMzQyYjNhMzYyYjM4MmMwMDNhMzUwMDJhMmYzOTM2MzIyNzNmMDAyZjNhMzkwMDNiMzkyNzJkMmIwMDM5M2EzODJmMzQyZDAwMjczNDJhMDAyYjNlMmYzYTA4PiAzMTc3IDI3NTcgMTAgODY5MSAwIHMKKzwwNzE3PiAxNTg5IDMxMDQgMCAxOTQwIC0xIHMKKzwzODJiMzMzNTNhMmIyZTM1MzkzYT4gMjAzMyAzMTA0IDAgMzA2NSAtMSBzCis8MWYyZTJmMzk+IDMxNzcgMzEwNCAwIDM1NzEgLTEgcworPDAwMzUzNjNhMmYzNTM0PiAzNTcxIDMxMDQgMSA0MjE0IDAgcworPDAwMzkyYjNhMzkwMDNhMmUyYjAwMzQyNzMzMmIwMDM1MmMwMDNhMmUyYjAwMzgyYjMzMzUzYTJiMDAzOTNmMzkzYTJiMzMwODAwMTgzYTAwMjkyNzM0MDAyODJiMDAzOTM2MmIyOTJmPiA0MjE0IDMxMDQgMTEgODgyNSAwIHMKKzw0Mj4gODgyNSAzMTA0IDAgODg5NSAtMSBzCis8MmMyZjJiMmE+IDMxNzcgMzM0OSAwIDM1MjYgLTEgcworPDAwMjczOTAwMmIyZjNhMmUyYjM4MDAyNzAwMmUzNTM5M2EzNDI3MzMyYjAwMDQyYjA4MmQwODAwMmMzNTM1MDgyODI3MzgwODI4Mjc0MDA1MDAzNTM4MDAyNzM0MDAxODFkMDAyNzJhMmEzODJiMzkzOTAwMDQyYjA4MmQwOD4gMzUyNiAzMzQ5IDExIDg4OTUgMCBzCis8MGIwODBjMDgwZDA4MGUwNTA4PiAzMTc3IDM1OTQgMCAzODk0IC0xIHMKKzwwMDI0MTUyYjJjMjczYjMyM2ExMTAwMzIzNTI5MjczMjJlMzUzOTNhMjU+IDM4OTQgMzU5NCAyIDU3MDIgMCBzCis8MDczMj4gMTU4OSAzOTQwIDAgMTgyNCAtMSBzCis8M2EyYjM5M2EzMjJiMzQ+IDIwMzMgMzk0MCAwIDI2MzYgLTEgcworPDIxPiAzMTc3IDM5NDAgMCAzMzg2IC0xIHMKKzwyZjNhMmU+IDMzNzggMzk0MCAwIDM2MjEgLTEgcworPDAwM2EyZTJmMzkwMDM1MzYzYTJmMzUzNDAwM2YzNTNiMDAyOTI3MzQwMDI5MzUzNDNhMzgzNTMyMDAzYTJlMmIwMDMyMmIzNDJkM2EyZTAwMzUyYzAwM2EyZTJiMDAzYTJiMzkzYTA4MDAxODJjMDAzZjM1M2IwMDM5MzYyYjI5PiAzNjIxIDM5NDAgMTMgODgyNSAwIHMKKzw0Mj4gODgyNSAzOTQwIDAgODg5NSAtMSBzCis8MmYyYzNmPiAzMTc3IDQxODUgMCAzNDAwIC0xIHMKKzwwMDI3MDAzNjM1MzkyZjNhMmYzYzJiMDAzYzI3MzIzYjJiMDAyYzM1MzgwMDNhMmIzOTNhMzIyYjM0MDYwMDNhMmUyYjAwM2EyYjM5M2EwMDNkMmYzMjMyMDAzODNiMzQwMDJjMzUzODAwMDAzYTJlMjczYTAwMzMyNzM0M2YwMDM5MmI+IDM0MDAgNDE4NSAxNCA4ODI1IDAgcworPDQyPiA4ODI1IDQxODUgMCA4ODk1IC0xIHMKKzwyOTM1MzQyYTM5MDg+IDMxNzcgNDQzMCAwIDM3NTIgLTEgcworPDAwMTgyYzAwM2YzNTNiMDAzOTM2MmIyOTJmMmMzZjAwMjcwMDM0MmIyZDI3M2EyZjNjMmIwMDNjMjczMjNiMmIwNjAwM2EyZTJiMDAzYTJiMzkzYTAwM2QyZjMyMzIwMDM4M2IzNDAwMmMzNTM4MDAzYTJlMjczYT4gMzc1MiA0NDMwIDEyIDg4OTUgMCBzCis8MzMyNzM0M2Y+IDMxNzcgNDY3NSAwIDM2NjcgLTEgcworPDAwM2EzODI3MzQzOTI3MjkzYTJmMzUzNDM5MDAyYzM1MzgwMDI3MDAzODJiMzczYjJiMzkzYTA5MzgyYjM5MzYzNTM0MzkyYjAwM2EyYjM5M2EwNjAwMzUzOD4gMzY2NyA0Njc1IDYgNzQ2OCAwIHMKKzwwMDNhMmUyNzNhMDAzMzI3MzQzZjAwMjgzZjNhMmIzOT4gNzQ2OCA0Njc1IDMgODg5NSAwIHMKKzwyYzM1Mzg+IDMxNzcgNDkyMCAwIDM0NDQgLTEgcworPDAwMjcwMDM5M2EzODJiMjczMzAwM2EyYjM5M2EwODAwMWUzNTMzMmIwMDNhMmIzOTNhMzkwMDI5MjczNDAwMzUzNDMyM2Y+IDM0NDQgNDkyMCA3IDY1NDEgMCBzCis8MDAyODJiMDAzYTJmMzMyYjJhMDgwMDI0MTUyYjJjMjczYjMyM2ExMTAwMGIwYTAwMzkyYj4gNjU0MSA0OTIwIDUgODgyNSAwIHMKKzw0Mj4gODgyNSA0OTIwIDAgODg5NSAtMSBzCis8MjkzNTM0MmEzOTI1PiAzMTc3IDUxNjUgMCAzNzY4IC0xIHMKKzwwNzM0PiAxNTg5IDU1MTEgMCAxODgyIC0xIHMKKzwzYzI3MzIzYjJiPiAyMDMzIDU1MTEgMCAyNTEzIC0xIHMKKzwxZjJlMmI+IDMxNzcgNTUxMSAwIDM1MzcgLTEgcworPDAwM2MyNzMyM2IyYjAwMzYyNzM5MzkyYjJhMDcyZjM0MDAzZDJmMzIzMjAwMjgyYjAwM2IzOTJiMmEwMDI3MzkwMDNhMmUyYjAwMzQzYjMzMjgyYjM4MDAzNTJjMDAxNDFkMjAwMzM5MDAyZjM0MDAzYTJlMmI+IDM1MzcgNTUxMSAxMiA4ODk1IDAgcworPDM5M2YzOTNhMmIzMz4gMzE3NyA1NzU2IDAgMzc4MiAtMSBzCis8MDAyYzM1MzgwMDNhMmUyYjAwMzYzYjM4MzYzNTM5MmIzOTAwMzUyYzAwMTQxZDIwMDAzYjNhMmYzMjJmNDAyNzNhMmYzNTM0MDgwMDFmMmUyZjM5MDAyZjM5MDAzODJiMzczYjJmMzgyYjJhMDAyYzM1Mzg+IDM3ODIgNTc1NiAxMCA4ODk1IDAgcworPDFhMWQ+IDMxNzcgNjAwMSAwIDM1MDYgLTEgcworPDAwMzkzZjM5M2EyYjMzMzkwMDNkMmUyYjM4MmIwMDM0MmIzYTM2MmIzODJjMDAyOTI3MzQzNDM1M2EwMDJhMmIzYTJiMzgzMzJmMzQyYjAwM2EyZTJiMDAzNDNiMzMyODJiMzgwMDM1MmMwMDM2MzgzNTI5PiAzNTA2IDYwMDEgOSA4ODI1IDAgcworPDQyPiA4ODI1IDYwMDEgMCA4ODk1IC0xIHMKKzwyYjM5MzkzNTM4Mzk+IDMxNzcgNjI0NiAwIDM3MjIgLTEgcworPDAwMzYzODM1MmQzODI3MzMzMzI3M2EyZjI5MjczMjMyM2YwODAwMTgzYTAwMmYzOTAwMzQzNTNhMDAzNDJiMmIyYTJiMmEwMDM1MzQwMDE3MWQwNzIwMjIwMDBiMGEwODIyMDg+IDM3MjIgNjI0NiA4IDg0NDQgMCBzCis8MDAyNDE1MmI+IDg0NDQgNjI0NiAxIDg4MjUgMCBzCis8NDI+IDg4MjUgNjI0NiAwIDg4OTUgLTEgcworPDJjMjczYjMyM2ExMT4gMzE3NyA2NDkxIDAgMzY1MyAtMSBzCis8MDAwYjAwMzYzODM1MjkyYjM5MzkzNTM4MjU+IDM2NTMgNjQ5MSAyIDQ4MDQgMCBzCis8MDczNT4gMTU4OSA2ODM3IDAgMTg4MiAtMSBzCis8MzkyZjQwMmIzOTM2MmIyOT4gMjAzMyA2ODM3IDAgMjc2NCAtMSBzCis8MWYyZTJiPiAzMTc3IDY4MzcgMCAzNTM3IC0xIHMKKzwwMDNjMjczMjNiMmIwMDM2MjczOTM5MmIyYTAwM2QyZjNhMmUwMDNhMmUyZjM5MDAzNTM2M2EyZjM1MzQwMDNkMmYzMjMyMDAyODJiMDAzYjM5MmIyYTAwMjczOTAwMjczNDAwMzUyYzJjMzkyYjNhMDAyYzM4MzUzMz4gMzUzNyA2ODM3IDEyIDg4OTUgMCBzCis8M2EyZTJiPiAzMTc3IDcwODIgMCAzNDY3IC0xIHMKKzwwMDI3MzIyZjJkMzQzMzJiMzQzYTAwMzkzNjJiMjkyZjJjMmYyYjJhMDAzZDJmM2EyZTAwM2EyZTJiMDAwNzI3MDAzNTM2M2EyZjM1MzQwODAwMjE+IDM0NjcgNzA4MiA3IDcyODggMCBzCis8MmYzYTJlMDAzYTJlMmYzOTAwMzUzNjNhMmYzNTM0MDAzZjM1M2I+IDcyODAgNzA4MiAzIDg4OTUgMCBzCis8MjkzNTNiMzIyYTA2PiAzMTc3IDczMjcgMCAzNzI5IC0xIHMKKzwwMDJjMzUzODAwMmIzZTI3MzMzNjMyMmIwNjAwMzYyNzM5MzkwMDI4M2IyYzJjMmIzODM5MDAzYTM1MDAzYTJlMmIwMDM5M2YzOTNhMmIzMzAwM2EyZTI3M2EwMDI4MmIyZDI3MzQwMDBkMDAyODNmM2EyYjM5PiAzNzI5IDczMjcgMTEgODg5NSAwIHMKKzwyNzJjM2EyYjM4PiAzMTc3IDc1NzIgMCAzNjA3IC0xIHMKKzwwMDNhMmUyYjAwMjgyYjJkMmYzNDM0MmYzNDJkMDAzNTJjMDAyNzAwMGUxOTEzMDAzNjI3MmQyYjAwMDQwNzI3MDAwZTBhMTAwZjAwMDczNTAwMGQwNTAwMjQxNTJiMmMyNzNiMzIzYTExMDAwYTAwMjgzZj4gMzYwNyA3NTcyIDEzIDg4MjUgMCBzCis8NDI+IDg4MjUgNzU3MiAwIDg4OTUgLTEgcworPDNhMmIzOTI1PiAzMTc3IDc4MTcgMCAzNTAxIC0xIHMKKzwwNzFjPiAxNTg5IDgxNjMgMCAxOTM4IC0xIHMKKzwzOTJmNDAyYjM5MzYyYjI5PiAyMDMzIDgxNjMgMCAyNzY0IC0xIHMKKzwxZjJlMmYzOT4gMzE3NyA4MTYzIDAgMzU3MSAtMSBzCis8MDAzNTM2M2EyZjM1MzQwMDI4MmIyZTI3M2MyYjM5MDAzMDNiMzkzYTAwMzIyZjMxMmIwMDNhMmUyYjAwMDczNTAwMzUzNjNhMmYzNTM0MDAyODNiM2EwMDM1MzQwMDNhMmUyYjAwMzgyYjMzMzUzYTJiMDAzOTNmMzk+IDM1NzEgODE2MyAxMiA4ODI1IDAgcworPDQyPiA4ODI1IDgxNjMgMCA4ODk1IC0xIHMKKzwzYTJiMzMwOD4gMzE3NyA4NDA4IDAgMzU3OCAtMSBzCis8MDAxODNhMDAzZDM1MzgzMTM5MDAyZjM0MDAyOTM1MzQzMDNiMzQyOTNhMmYzNTM0MDAzZDJmM2EyZTAwM2EyZTJiMDAwNzEyMDAzNTM2M2EyZjM1MzQwODAwMjQxNTJiMmMyNzNiMzIzYTExMDAwYTAwMjgzZj4gMzU3OCA4NDA4IDExIDg4MjUgMCBzCis8NDI+IDg4MjUgODQwOCAwIDg4OTUgLTEgcworPDNhMmIzOTI1PiAzMTc3IDg2NTMgMCAzNTAxIC0xIHMKKzwwNzM2PiAxNTg5IDkwMDAgMCAxODgyIC0xIHMKKzwzNjM1MzgzYTM0M2IzMz4gMjAzMyA5MDAwIDAgMjgyMSAtMSBzCis8MjM+IDMxNzcgOTAwMCAwIDMzMzkgLTEgcworPDM1M2I+IDMzMTMgOTAwMCAwIDM1NDUgLTEgcworPDAwMzkyZTM1M2IzMjJhMDAzYjM5MmIwMDNhMmUyZjM5MDAzNTM2M2EyZjM1MzQwMDNkMmUyYjM0MDAzYTJlMmIwMDM0MmIzYTM5MmIzODNjMmIzODAwMzYzODM1MmQzODI3MzMwMDNkMmYzMjMyMDAyODJiPiAzNTQ1IDkwMDAgMTAgODg5NSAwIHMKKzwzZDI3MmYzYTJmMzQyZD4gMzE3NyA5MjQ1IDAgMzgyOSAtMSBzCis8MDAyNzNhMDAyNzAwMzYzNTM4M2EwMDM1M2EyZTJiMzgwMDNhMmUyNzM0MDAzYTJlMmIwMDJhMmIyYzI3M2IzMjNhMDgwMDFmMmUyZjM5MDAzMzJmMmQyZTNhMDAyODJiPiAzODI5IDkyNDUgMTAgNzk1NyAwIHMKKzwwMDNhMmUyYjAwMjkyNzM5MmIwMDJmMmM+IDc5NTcgOTI0NSAzIDg4OTUgMCBzCis8M2YzNTNiPiAzMTc3IDk0ODkgMCAzNTA0IC0xIHMKKzwwMDM4M2IzNDAwMzQyYjNhMzkyYjM4M2MyYjM4MDAyNzM5MDAyNzAwMzkzYTI3MzQyYTI3MzIzNTM0MmIwMDM2MzgzNTI5MmIzOTM5MDAzODI3M2EyZTJiMzgwMDNhMmUyNzM0MDAyNzAwMjkyZTJmMzIyYT4gMzUwNCA5NDg5IDEwIDg2NTYgMCBzCis8MDAzNTJjPiA4NjU2IDk0ODkgMSA4ODk1IDAgcworPDJmMzQyYjNhMmEwOD4gMzE3NyA5NzM0IDAgMzY5NCAtMSBzCis8MDcxZD4gMTU4OSAxMDA4MSAwIDE4OTQgLTEgcworPDBhNDEwYj4gMjAzMyAxMDA4MSAwIDIzNTEgLTEgcworPDE4MmMwMDNmMzUzYjAwMmEzNTAwMzQzNTNhMDAzZDI3MzQzYTAwM2EyZTJiMDAzYTJiMzkzYTAwMjgyNzM0MzQyYjM4MDAzYTM1PiAzMTc3IDEwMDgxIDggNjQ4MCAwIHMKKzwwMDI4MmIwMDJhMmYzOTM2MzIyNzNmMmIyYTA2MDAzYTJlMmIzNDAwM2IzOTJiMDAzYTJlMmYzOT4gNjQ4MCAxMDA4MSA1IDg4OTUgMCBzCis8MzUzNjNhMmYzNTM0PiAzMTc3IDEwMzI2IDAgMzc2OCAtMSBzCis8MDAzZDJmM2EyZTAwMjczNDAwMjczODJkM2IzMzJiMzQzYTAwMzUyYzAwMGEwODAwMTIzNDAwMzkyZjNhM2IyNzNhMmYzNTM0MDAzZDJlMmIzODJiMDAzYTJlMmYzOTAwMzMyZjJkMmUzYTAwMjgyYj4gMzc2OCAxMDMyNiAxMSA4ODk1IDAgcworPDNiMzkyYjJjM2IzMj4gMzE3NyAxMDU3MSAwIDM3MjMgLTEgcworPDAwM2QzNTNiMzIyYTAwMjgyYjAwM2QyZTJiMzgyYjAwM2YzNTNiMDAzODJiMzYyYjI3M2EwMDNhMmUyYjAwMzkyNzMzMmIwMDNhMmIzOTNhMDAyOTM1MzQyYzJmMmQzYjM4MjczYTJmMzUzND4gMzcyMyAxMDU3MSA5IDg1MTQgMCBzCis8MDAzOTJiM2M+IDg1MTQgMTA1NzEgMSA4ODI1IDAgcworPDQyPiA4ODI1IDEwNTcxIDAgODg5NSAtMSBzCis8MmIzODI3MzI+IDMxNzcgMTA4MTYgMCAzNTI2IC0xIHMKKzwwMDNhMmYzMzJiMzkwMDI3MzQyYTAwMmEzNTAwMzQzNTNhMDAzZDI3MzQzYTAwM2EyZTJiMDAyODI3MzQzNDJiMzgzOTAwMjkzMjNiM2EzYTJiMzgyZjM0MmQwMDNhMmUyZjM0MmQzOTAwM2IzNjA4PiAzNTI2IDEwODE2IDEwIDg0MzkgMCBzCis8MDAyNDE1MmI+IDg0MzkgMTA4MTYgMSA4ODI1IDAgcworPDQyPiA4ODI1IDEwODE2IDAgODg5NSAtMSBzCis8MmMyNzNiMzIzYTExPiAzMTc3IDExMDYwIDAgMzY1MyAtMSBzCis8MDAwYjAwMDcwMDJhMmYzOTM2MzIyNzNmMDAzYTJiMzkzYTAwMjgyNzM0MzQyYjM4MzkyNT4gMzY1MyAxMTA2MCA1IDU5NDAgMCBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMjMpIDIzCislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDAgcHV0CitkdXAgMyAvQzAwNDEgcHV0CitkdXAgNCAvQzAwNDQgcHV0CitkdXAgNSAvQzAwNDUgcHV0CitkdXAgNiAvQzAwNDYgcHV0CitkdXAgNyAvQzAwNDggcHV0CitkdXAgOCAvQzAwNTAgcHV0CitkdXAgOSAvQzAwNTEgcHV0CitkdXAgMTAgL0MwMDU3IHB1dAorZHVwIDExIC9DMDA1OCBwdXQKK2R1cCAxMiAvQzAwNjUgcHV0CitkdXAgMTMgL0MwMDY2IHB1dAorZHVwIDE0IC9DMDA2NyBwdXQKK2R1cCAxNSAvQzAwNjggcHV0CitkdXAgMTYgL0MwMDY5IHB1dAorZHVwIDE3IC9DMDA3MCBwdXQKK2R1cCAxOCAvQzAwNzEgcHV0CitkdXAgMTkgL0MwMDcyIHB1dAorZHVwIDIwIC9DMDA3MyBwdXQKK2R1cCAyMSAvQzAwNzYgcHV0CitkdXAgMjIgL0MwMDc3IHB1dAorZHVwIDIzIC9DMDA3OCBwdXQKK2R1cCAyNCAvQzAwNzkgcHV0CitkdXAgMjUgL0MwMDgwIHB1dAorZHVwIDI2IC9DMDA4MiBwdXQKK2R1cCAyNyAvQzAwODMgcHV0CitkdXAgMjggL0MwMDg0IHB1dAorZHVwIDI5IC9DMDA4NSBwdXQKK2R1cCAzMCAvQzAwODYgcHV0CitkdXAgMzEgL0MwMDg4IHB1dAorZHVwIDMyIC9DMDA4OSBwdXQKK2R1cCAzMyAvQzAwOTEgcHV0CitkdXAgMzQgL0MwMDkzIHB1dAorZHVwIDM1IC9DMDA5NSBwdXQKK2R1cCAzNiAvQzAwOTcgcHV0CitkdXAgMzcgL0MwMDk4IHB1dAorZHVwIDM4IC9DMDA5OSBwdXQKK2R1cCAzOSAvQzAxMDAgcHV0CitkdXAgNDAgL0MwMTAxIHB1dAorZHVwIDQxIC9DMDEwMiBwdXQKK2R1cCA0MiAvQzAxMDMgcHV0CitkdXAgNDMgL0MwMTA0IHB1dAorZHVwIDQ0IC9DMDEwNSBwdXQKK2R1cCA0NSAvQzAxMDYgcHV0CitkdXAgNDYgL0MwMTA3IHB1dAorZHVwIDQ3IC9DMDEwOCBwdXQKK2R1cCA0OCAvQzAxMDkgcHV0CitkdXAgNDkgL0MwMTEwIHB1dAorZHVwIDUwIC9DMDExMSBwdXQKK2R1cCA1MSAvQzAxMTIgcHV0CitkdXAgNTIgL0MwMTEzIHB1dAorZHVwIDUzIC9DMDExNCBwdXQKK2R1cCA1NCAvQzAxMTUgcHV0CitkdXAgNTUgL0MwMTE2IHB1dAorZHVwIDU2IC9DMDExNyBwdXQKK2R1cCA1NyAvQzAxMTggcHV0CitkdXAgNTggL0MwMTE5IHB1dAorZHVwIDU5IC9DMDEyMSBwdXQKK2R1cCA2MCAvQzAxMjIgcHV0CitkdXAgNjEgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy01MCAtMjU2IDkyMCA3MzldIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMjQ3REE3RkM5MUI5RkVCQTgyOTI1QzdCN0E5QjBEMjJERDEKKzdDMEU5QTcwOTM2MDhGMTQxMDU0NkYwMAorMDlGOTg1MzFCNTk1OUI1ODhDCis3OUNDMzEwMworMDQ5NTJBMjU5Q0I0NUU2M0FFNzNDRDY3RjYKK0IzM0E4RDU3MTBGMTYyNzQ0N0M3REU4NjBGREVGREMxRDM0NTUxQkZBNjQ1MEM4RkJFQ0NCQ0E2MUUxNDFBMUZCRDI1OUE4MjJFNEMyN0UxOEUxNERBN0ZDRjM0QTIwRkI2NjcyQjJCMTA3NDk2QjIwNTc1MzREQzQwNTdBN0NECitBRDk1Rjk0NAorN0U4RjM5NDk1OUFCODQwNjQzOEE1Qzg4REEKKzgxNDc4MDRCRjVDQ0VFNDhFNEU0QTUxMkU4MTgzQjYzMEZCQjdGQTNEQkE5MzRFRDgwMUQyNjA5RDkxREJGRTMwOTE5RDI2QjlBNEE2RjQ3RTdERTM0MTM4N0YwRERDRTZGNEJBNjAxRDc5OUVFQjI4REU2MzdFNTk3Mzg3QworOTUyMjI2RUUKKzkxMjhBOEREMkU2Q0QxQjc1RjZEQ0U0QUJGCis2MDY3Mzc3NTUzQ0I2OEE4MkFGNUFDQkE5NTkzNTQ3MkEyNTQ2ODY0MjY2NjI2RUQxQTVCQTRERjM5QkI0RTcxNjY5MDNEQTJBOThFRDgzQ0JGNjUyM0FDQjc5ODEwRTk1NjMyMUE3MUQzNEU0RERGMjgKKzA3RjcwMzhCCiszNzcxRkQ2MzRFMUMzMzg2MzM2OTkxMUUxMAorMEEwMzZFRjU2QzcwRjRCRjZGMTZGNTM3NkQzQzE5MjExMDgyMkZEQkVGODU1MAorNjE4OUY4RDMKK0FGMTFDNzFEQjhBNERGOTk5ODVCM0E4RTdECis3MEYzNTBDRUZENUFBNTZDRUYxRDAzNTAyREZCMDFGREI0RjI0QzAyRDBENjRBNjZGM0QyQTlCNjg5NjBDNworNUZBNTE0OUQKKzk1MUE5RTk3M0JGNDJGQjI3OTIyNURFRjg5CitCRkU3MzI5Rjg4OTY1Njc1Q0FGRkQ4NDZBRDgzREY4QThFMEFCRkZEMzNBODI2QTExNzA1QTc5MDhGRTQzNkJBMDcwRkYzMUYxNDkxQjc1OEZDNjk0REJFNkIwNUJFOTdFRjA5M0MwMjQwQTM0MEUyMjRDMUY2RkQzMERDNEQwRTA0NTI1QTI3OTJFM0VEQzAzRkVCCis4MUQ4M0U1NQorMTBDNzMxQUE2MEQ4RjgyNDQyNEFDQzU1OTEKK0U5RUFBRTUyQzE5MUVDQTM0QzUzQjY0Nzc1QTQ0MzkzQzkwNERCQzlFNDk1MTc3NTRBMkZBOTVCODkzQzFCMjA0RDVEREUzNDg0Q0E3RTUyQzg1OTQ3QjU1MTI5NENEOEZDMTI5OUEwMkM2MjdFM0QyRDAzNzJDN0VFNTE1QzU2NEMxRDBEMjNGMjkxNjJBMkYzNjMwODY0MjNDQzM5RkUyM0Y2NTExOUNBQzA4OUM0RjhFQgorMTNFMTBDQkIKK0I5NjBCNEM1OEQ1RUQ2ODE4QzY1NzdBMERFQzYKKzMzQkM0NDQ0Q0JBQkMzMTAxRURGMDIwRTNERDkyODFFOUU3NEEwRkZCRjEyRUNGMUJGNjBGNkJCNDVENjEzOTlCN0E4NTk4NTc1MzE3OUY0QUZBOTZEMjYyNDJFOTMxMTcxQUM5QjgwODYyMTZDODlDN0ZGNEZFMzkwM0ZGRTJFQjA4OTJFMzBCMkQ3NUUzNjU0OTA2RTRBRTBDQ0RFNUNFQzQ5NjE3Mzg0QTBFMjhCQkZEMzE3QzAzNDEzMUY4MTlEODZDOTIxNEI2RjRBQTE5MEJCMUZBRTcxMkVDMworODY2QTdBRjkKKzhCMDkwNEQxMjEyMkFFNTBFQzJGNkVDRDM3REQKK0FDMjFDNTAzQzU3NTA5QTBFQkUzMEE1NDVFOEQyRjE1QUY5ODQxODk4M0I5MEU3MDc4N0RGMThCRjY3NDdDQ0Q2NTAyQTk0OUU2OUM3MUMxNjUxNjZCNDM1RTgzNjYzNkQyMUIwMUZCREQzN0VCNEJDQkY1N0IzRjBGOTI5NENDMjIxMDBCQUJERTVDQ0I0NzJCNTE1NDVDNENBNzU5QjEyMzFCNjk4MzlFMEE1RTREN0MxQTdDNTMzQzREQjQ3NTFBMzg0NTY3OUYKK0YyOEE5MjlBCiswRjEyNjczRUUzQzFFNzU4QTA4OTBCNzg1RAorMzAyQzM4RUY1MURFNEUzQjc0NEFDNjI3Q0UxNjZGMTY1MjUxOUE4N0QwNjg3NTRGRUZFODA1OTMxNUI1RjQwMERDNEUxNEQ1REE4MTUxQkREQzYxQjEzODA0RERBODdCOTJDQkNCMkREQzc4CiswMEFBMzlBOAorQ0EzMzlCMjExNjI5Njg1MTczQjk5ODJDNTcxMgorOTNEN0YzNjc3MENEMEZBMDBCMDQwNzc0RjRBQzQ0QzhGNDBGNjEwMkFFMDJEQzAxQjY5QTVENkI2MTVDRTYxM0U0Nzk4QjMyRjRFNzAzMkI0N0NENjdFNTc3M0QzRkZEOUMzQTE4MjYwRDBGQ0RENjdDQTNEM0E5OTZEQkQ2Qjg0QjU3N0FBNDY4NDk5RUU0MTUxMTVEOThFQUUwRjc0MkYxMDMxQjhCMkI0Mzc4Q0M5NzBGRTFDRTE1NkU3OUUzOTkxODBEQkYxNzYyQUQxMzU1MUFBM0RENTlDNTgyREI3NzA1RjkKKzc2QjlENzMwCitCRUExMkU0QzJFNzczMjY1RkQ5QjBGMzc1NjJGCitCMUIyMUEzMzJGMTVGRjA1M0VDRjk2RTUzNzA5NUJFOERGOERDMkRFRjEyRTQ3M0Y3NUMwMUY1MzQxMjlERkJGMzU1MkNCRUI1QjJCRjFBMEM0NDdCMjhGRkI4Rjc1QjZFNzJGQkRDMEFBMkRFODQ5NjI2OTE0MDk5ODBEQTY4Rjg3OTlCNDAyRTZCM0JFQTFFMDkwQUVBQjkyNEQyOTk5Rjg3QUQ5REQxMzg4Qjk3NTBBMUQwMkNFMDUzQTI4M0E4Q0RCNUZFMzVDNUVDNzU0MkNEMDhBNEFGRTdERENCRURFRTcwNkRFM0U4M0UyRkMwMjJGOUJFRjIwMEIKKzlFNDIKKzBCCis4QzNBNTdEOQorOUVGQTA3Q0ZBQjZGMTM4MjAzQjAxRDVEMzMKKzQ5QjZGODY4ODRCNTdBM0JFM0FDMTY3MDlCRTYzOUVFMUYyOUI5QTQxOTE4OTUzODY0MTY0NTE3MDQ2MkUxRUZEOERBNTFBMzNFODUxMzE5ODcyM0MxMUQ5OUI1Nzg3Nzk5OEIxNThBMThEOTU0OEQ5QjQ0MkYyMzQ3RTY4NDM2RUFFMzFEOEY0RkYzMUJCQkRFNzZCNTVGQUNCOTU4RjUzREYzQURCNDMxMjE5MDM3QjkyOUIwQzNBMzExODdDQTdECiszMThDMDIxOAorNzZFMjZCRUVDNTdDQzhEQTFDNDFBNkZDRDEKK0UyMENBQzYwMTJDQ0JBOERFRDVGNEUyN0FBRTM1NzExNkM2RkVGREIwNDdDQUI2QkY1NEEwMkM5RDBCMzFDMkFGNzI1QkQ5RjVCMjM5QkJDMDgxRUE4NDc0NTgyQzJDOUUxQjFBNjdEN0MxMTc0NDgxNzFDRTMxQjE4OUVGRUU0MEM5NzBGOTMxNDZENjc4NDFGMDA2Q0MwNjA0NTJFNDQ3MUNBRDlEMDIyNjZBRUQ4RDIyMTdBMTJFQzE4QzE4RUE4OEZFNAorQ0Q1NDBFQkQKKzYwQzc2Q0M0MEZGMzlDOTk2NDJFRkI5RDg0RUQKK0IxMUU4NkM4QzZDNzJCNEU5RDY3RTIzOTM4RTZDMThENjA5RjcwMDVDQzc2MTEyMzg0ODE2RTk3NDBGMzUwODAzMkI3RDQ2MEJCQ0NDRDQyRjg0MTNDMTAzOTE1NkMxMDgzMjkyMzk3MDEwQTA2NUVCMjYxQjk0QzcyRDFFN0FCRDZGRkJCNkJBRTNBM0ZBRDM0NkI1RTI2ODhBQTU3RTVGNUNGRThGNjNCQjA3ODNFRjY4RjIyNDg1RUYzOUUwODgzRkNBMEFEQzRFQkE3QUU4NzM3NUE4NEI1QjgzMzI3NDFERjkxRjM0RTk1NEE4NzE4QTQ2ODE1NEVGNworRjIxMjNDNjEKKzA5NzI5QjkzNjE4MDQwNkNFQjY3RTQxMDlENUUKKzBBNkRDRERDMUEyNzFCNkY3RTNFOEI1RUYxM0IzM0ExMjRBRkRCQjg1QTcxRTY5ODkzN0U3NkRERTdCMjUyNTE2QUE0OTkzMzk0MkY5MzY0QzU4NEVDOEM0RDUwQUJERDExMjA0NEEwNEZEMEZCODlDQjc0REY4NDE2MzdDNzZGNTZGMzYzMDZBNEQzOTU0Q0JFM0NBOTIyNjA4MkI1MEM2NDRGQkI3NDgwQUE5QjEyMURFNjM5Qzc3QTlDMzQ3RDkyQzExMzQyNTBDMTMzRDkxMAorRjlGMTg3Q0UKKzYwNkRFMTc0NDVCNkFGQzgzNjYwRjAyNzg2QjAKK0MyMENENjEwMjExRTlDQTE0MUFBMkM4NzUzRERDNjY0ODU2OEQ5NUQ0NURCRUI2NTQ3RENDRkFFQkNGQkY1MDIzRDUxNzMyNUY1NzEyQjQ0RDg1NjdCRTkzMzBDREQ4N0YxODc5MUMwRkNGNTAxOEQ4NDYzNDhFNjM4NjM0OEEzMjJBMEM4NjFFREQ3MTQ4NTlGMENDMEE2N0U4RDlFOTY0NTYyQkRGOURFQkExNTU3Nzc2OUY4MTAzMzE4NDAxM0U1NjE5NEU3OTNCM0EzNjBENUI0NDE5MDBDMkRBQ0E1NDFBNDhDRjlEOEU0NkEyODc0MDcKKzI5MkUwQTYyCis4NTFCRTQ3NkMyQTBCNUE5RTM1QkUwN0NGMEEwCis5NjZFQ0Y5NDVBQUU1QjdDQ0MyNENBMDlBOUIxMDBGM0M3MDE1NjJDNUIzRkQyMkM4NTBCQkU1OUI2QjQzNkQ2N0M0Q0U3QzAyQUIyNzRBRkUxNjBFODc3MDVCODUzRUZFQTY2Qzc3MTk0MDQ5NTk4QjQ4MEU1MTc2MjU0OTBGNkRBREY0Q0EyRTFBQjQyQTFBNzk5MTUzNzQ3RjQxMUQwNkVGODBBRDE1M0M4OEFGNTQ3QjBCQjFGREVEQjNEQzQ5MjQ3ODc2RkYwQkZGMjJFNTg0MkZEQUM0QUZFMDUwNUNFM0E0NDM5QTJBMkU3RjA1MEY1NDQ1RjY1MTkKK0RCNkIKKzUyMDI4QzhBNzI5QzkzQzBDODUwQkIKKzg5MzBCNTVFCis1Qjc5ODc4NTZFODg1MDlFNDVENzdCOTI4RgorMTQ3MEVBNzA4MzBGMTg5NjI5RDNDREE2MjE4MjI2MTMyRTAxRTNBRUU5QUE1RDFBMTQyRjdGQjE0NDEyOEVGRDdFQjU4QjIxQjNCQjhDNTZFQTg3OEU3OUU0ODRDQzgwOTM0OENGOTZBOTU0NDE5MkQzOEQyQQorQTY5MjdBRDIKKzEyRjJBMkY3QjREMTY2MkQ3RDAwOUM0QjM4Cis5M0RGNEUyNTE4MDkzMDVEN0IzQTg2RDQ3NUM4ODZGQTEwRDVFNzYwOTdDOEQ5QUZDRkQzRDRDRTQ5RDZDNEYwRjZFM0IwQzc3NUI0OTE2NzZERjUzOENGMTVCQzNGMjQ1NUVFRUNEQTZEOTk3OTE2MTg1NDY5NkEwMUU3NDQ1RjIyQjYyNUY5RDZERTRBCis4MUE5RjhENworQzBGODBEQzFBMjVFMDZGNzU5QTI2OUE3OEZEQworMDY4MTBENUVGMzEyODM1NTcwRDJDMjhCRTMzQTg2RkQ1NEY0MDg5MDcwRkU3NzU5NDc2NTIzM0E2N0Q1NUM4NEVBQTZDNkMxMzU4NTRFRjE5OUQwOTE5QkI1RDYwNjdCNzFENzRFQzhGOTk0NEIyNDQ5MTEzNTQ2MzlCQkNFQzJEREIyNzY1QzkzQjRCNzYzQ0YyOEZFNjhDRjQ0NDY0NkJBMTk4OEM2MDBBNjIzREVEREM2MzA0RTAzRkMwRUQxNjQ5QkY1NkY4NzdEN0VDMTA1OTJDM0RFNUZERkI2Cis0OUExQ0E0OAorRENCMjgwMEZGRDQzRTQ5Q0JBRjhBOEFFNEUKKzk1RTNEOUQyMjk5RDhEMDUwRDQzMTQ4QUQxREYzMTI5RUU5NDE5ODc4NzhBQ0RFOTgzQTNDRjMzMTZGRDU0RTZCRUIwNEM3M0UyMjREMjU5MDQzRTU4NUZFQUNFOTYzMTBFMTM3QjAzNDgyMEVCQkFGRDhFNzZBNTRFODg0NDJBQUFCQzVCRDIyQzE5RUVCQzFERDBCQjFFM0I0Mjc2NjJBQTExQTQ0QTE0QTQxQ0EwQzQ0Qzk1MTUKK0ZGMDFERTA2CisxRUFCMTg2OTE4Nzk5ODVFOTYxRjU3RTA1QgorQThCNEQ4Mjk2RTFDRUExMDg0ODA1M0U5MTQ0ODQ3RDMzNEI1OERFRkYzNzY4RkU0MUFDRDdEOUU3QzMxMDlDMUNEN0MyREY1Mzk5OEEyQjRCMzRGQjA3Q0ZGQjAxNDc3MDg1OEE5NjRDNzdEMkFENjM5N0M4OUU0RDQ2REI4NDRGQUNGQTUzQTJDMjkxQTUwMzU2QTY0MDJBRUNFODU1RUZFQjJENQorMTgyM0U2ODIKK0QwNzA3M0Y2NjkzOTIyQzJCRTczRjQ4NjEyMkUKK0UwOEE0ODcwRUE0MTQ5MTI2M0QwRkFBOEE4Njc4MjE3MTFEQTI2RjI1RDBFOTQ0RjhBNzAzNDQ0RDlFNjNBOTY1MDgyODZCOENBOTI1ODM1NkZBQzBCMDc0MTA3QUJFQzNDQjBDQTRBNjBBNjA1OUI3Nzg4QkMzNDIwMkU3NDY3NTYyMzY4MUQwM0MyQ0Q2REQ1Qjk0M0Q3MEQ0QjZBOTQ1NUU5MEJFMUNDRTIzNzdEMTU4MkQ4Nzc0RTFEM0E3NkI2MTNBRDVCQ0I0N0I4M0IzOEE1Cis0NzYzMzhBQgorOTlGRURGNjFDMEU0NTA4MDg3Q0MxRTMzRjZFQworMzk4MzdCMjBFQkFERjEzRDVCMTc5NUE1NkU3Q0Y0RkUwMkE0M0M0RkQyQURCNTQzNkNCMjhGNTY0MjI4MkI4NkNDMTRFREY0M0Q2NjMzQzMxN0QwODk1QTVDMUVDMTYyMjRCNjBBNDBFQUM5QTAyQzhENEQ5NzVBOTQzNkM4QTFFQ0YwRUM2OEM2MDRFNjMxMDVEMEY5OEIxNEQ4Qjg0REFCODk0MDc0QjI5MzRBRTk2NkVENzg5MDRFOUVDMjMzMTk4REIzQTAyMTVFQkYyQzhDNTFCMkE1QzJENzBEOEE0ODUxOTlDQjAyRDZGMzdBODI0RDJCOUY4Q0I4CitENkRGNTAzOQorNkM5N0U4RUVGNjA2ODE4RjU3RjkyRDAzQTFCQQorMjUyRDc2QThGRDVFOTMwRUU5MjJBM0I2MzM1RDNBQUJDOEM5OEM2QTRGNDQ2RDU0QzI5QTJFOTc3Q0ZBNzM5NDcwMUMzMkUyQUUyQUY5NTM0M0I5OEFCMUI2OEMyM0RCNTQzNkM1REE5NjJFRTc1NDc3QjkzMUNFMEI3NkRFMDAwNTIyNUJEQkQwMDlENDJFNTRBMzQ2MTYyNTEyQUI0Qjg4OTYwOTE4QTE2QjMwMUMzNzU1NTFGMDIwMTIyMkVFRTI5MTlGM0QwRUVGMjA2NDQyNzhFRjBBRjU4RkFEOTNBRkEyNzY1N0RENzJDQjQ5Q0I0QkZFRENGQTMwCisxMDg0CitGRkQ1NEUKKzUzNjA0REI2CisyMjg0QzJCMzQzOUQ1MTgyNjRGOEI5QTE1QQorMTk1QTBFQ0Q5QTgwMThERkVGM0RGRjNDOEJCMUVDQjE0N0ZFQTlBQkJENUNDRDI1MUQ5RDFGRUI1OTRDN0RERjFGM0MyQUIzOTFGNDhEN0JFNERFRjZGQjc4RUZDOUYxOTBCMjhBMkFCQUQ5REJEMjVCNDdGRTJCMzA5ODgzOEU2NTA1RkMxNDgwMjRBMEU3QkRGMjREQjMzNTM3QTMwNjRECis1NDIxMTk0MAorNUM0QzQzMTlDMjlDRUFDOTcyREQ4Mzg4MDgyRQorNTRERUEwNjVFRTU5RTVDNTk3NDk4N0UyREQzMzczNjA3RTE4NjM1NDUxRUYwNjBEQjg0OTEyRkEzMTlCNjFFMjFCM0U4NkUwNUJBMzFGQzVEMERDMDQ0MzAyQ0VENTczREUzMDFERTBDMDExRjVCN0UzNkY3QUUwRjUxQ0Q3M0JCMUQ5RENEQzZCNUNFNTBFNDlDNzkyRTVDMDNERjY5MEU2MEFBRDMzOUQ4NUQ2N0JGRDE3RkU1NUY2M0JBN0JDNDAwM0U2RUQKKzdEODZFNzFECis4RDQzRTY4QjNDNThCRTRGRTJFQTVBOEQzRQorNEFBMTUyRTU1Mjc4M0VGQ0ZDMjYxRTc3MEY4RDQ0RUYwMTEwODJENzgzMEJGMEZFQkJCQjg5RjkzQzkyOTE5QzEwMzY1RTdFRTkwNzU4ODAwMTFGOEE3QkFBNjVEQTIyMUQ2QzUxNkE0MzQ1RTNBQjcyQUJERTgwMzUyNjRBRUE5MjE0QzA5RjdERDZEMzI2QTk0NUI5MTFDNEI1MzFCODU4NTNBQ0ZDQkUxRTJDQUJFMAorMjhCOTM5QTUKKzJGNTEwNEU0QUIzMzVGNzdDOTE0MkNGQkZBODYKKzBCRURCRDcwQUQ1MjA0RjRERTRDNTdCNURGMTFGMjhBOTQzRjQ2MzlGRENFMjkwNTM2N0UxOUMwM0Y5MDI5QTQ3Qzc1NEUyMkQxQkY2MDlGNjk1ODQ5RDNGMjUxRjA4MzU1NjIxOUZGQjJBRkI5Q0MyNEE4NDA5ODczRDE3NkNGODQ5NkU5OTIwOTY0OTgyRTRFNTE1Q0IwREQ1MDZDNjQ0REZGM0U5RTg5QjI2RjYwQjc0MkFENEU3QTBBRTAyQ0Y1ODE1RjRFMTQwQzlGMEU5REQzM0Y0MkIyMzdGNUMyQzI0NDE5QzQyNjUwQzAzM0JFNkZBMjI2MUE4NAorN0U4RgorREY5OUVDRDVDMUVFMDZCNjI3QjEzMjkxOTE0NTg4MjBEODU1QzFDNjAzQjk5QUM3REI3RTY4NDRGNDg5MzlERUVDMDU4RjUwRkQ0NTExCis2MTVFNzBFNgorQzFBNUNGQjkyMTU2ODY2Mjc5MTdCMTBDOTREMQorRUJGOUNBMUYyQzY3QzIxOUE0RkEwRDFGRTEzNUE3RkI3NkJENUEyNTgxRjFDRTY1NjA3NUUxQjU4MzIwMDZGQzA5REQ1MDA4RkMxNDA5QzE0QzA3NDgyREFBNkY1OEVERkVBOTY2QjBDODY3M0FBODlBQjI2NjEyRTA3RDMwNDFFMDYzMTc3ODYzMDNERDJGOUVBRkE0MTBGMEMzN0Y3NDhGRDg0N0U1NjI3NTA1REY1QzQxMjM5QzUxMkJEOEM4NzI1RDQ1NDQ2MkE3MzA1MzQxRDg2MTVFMUUyQzQ0OTg5Rjc1MzAKKzEzMzhBMjYyCitGNkI3QTg0Mzk2QjkyMzAxNjg3ODU4MEU3QworMEU2NjhGMDAwRTIxRTMyMjNBNUMzRjlFNTkyQUZFQ0I4MEQwN0Q0NTU0RDlENEIwMDI4REIzRTcwOUE0MDMxOEE0RjJENTAzRkYxREE5NUYxMjU4Cis0MUUxRUNFQworMEM5REE2RDRFQ0I4QTI2RjIwOUYzMzlDMzkKK0NGNjkwODFFQjkwOTc4NEE2MDU3QUNEQkNEQTg4Q0Y1MjA3QTRFRjYwQUYyNzdFQUI5Qjg0NDk0NTg4QzM5MEQ0OTkzNzk0Q0Y4Q0UzRkNDOUQ0NjQzOTYKK0Y0NkMxN0YyCitGNjZBMkM1MDJCODY5NDE1QTA4NUI5NjZGMgorRjg3MjE1MTU4NTE4RkQwNkMyQkFCQ0M3OERCNTE4QjdEQzI2RDREREQ4OTcKKzg3MEVEODdFCitBMkM5RTA3RDZEQzg5MUFFN0JFNjRGQzcyMzhCCis2RDNBNjYzRUUzN0QyMTM3Rjk1NzAwQjJDNjA0Q0QwRkY3OEUyQ0U1MUEzNUM1MEE5NjJEMzIwNkY1MkNERjdFNDA1MUMxNUM1NEFBMUZBMDgxQzQ0MDk0MTJBQzI3ODFBMkRDNzU5RjA4MjNBQUMwM0I4RkNCREU3REU2QzI4NzNGM0Q5Q0RGNDk4ODlFODA4MUI2OURGODEyMjY4RDQ2RjY1RTEwOEYwRUY3NTc3RTQxNTA4NjdCNDMzNzE5NjFDN0E1QTlFMUVEOTNFMTk3NDg4NjVDRThERTRFQzVERUYzRDU1NDVCNDlFMUZDMUY4Qzc3RDAxQjZBQzYKK0RCOEEKK0IzNzkwNAorNkE0MjhFM0QKK0NBRTIxREY4NDY4QTRFRkUxRjhFRTI5RkExCis0NDQxQjlCQzZCRDQ4MEZGMDYwNDAzNjNDNTA0QzlEOThDMjM3NTBCN0VDRkI5QTg1RERCQTgxMTE0NEQyRjIwMkEzMDNCNUUyMTdDMTUyMDI0NjNGRDZGRDY2NURFRUM1QUU1MDg3NjJEQ0UxQkNEN0JCMjBEQzdBMDQ1Qzg1NTY5M0M4OENGQ0REOENBNzlDNDc0NUREQ0IxRkNCQzNFNkYzODAyMzYwRDIwQjJBRAorQjYxNjMwMzQKK0I4OUI2ODdCOUFFMTA4RjJBMUJDRjdDMDVBCis4OTI4MUYyNDNFNTY1Mjc1NzU4NzUyNzU5RkNGRjdFRUYzREFGQjRGNzU3QzhDQzc2ODUzN0QwNkM3MzgwMkY4NTY0OTU0QjhCQzA1MDlDREJDM0Q3MERFNThBREMxNDUwQzg4MTUwNzE1QzVBNEFDODhDMUZCMTYxNjQ1MkVERDM5Q0MwMUNDNUM4MjNFNEVCNEM3NDYxRjc1MzRGNDFDQ0I0OAorQzJCOTUzRjkKK0RFNjg1RjcwMDAxQkU3NEY5NjAwNkFBMkI3NzUKKzVDNEJDRTE1MDg5RDI4QkU5MUNGRkExNEE5Q0VFQjMwRUUxQTdEMUQwOTdGM0E5ODBDNTYxOTNFRjJFMkFDRjg3QTFCMzc0OEQyMDk5ODkxMEYwQkY2QzU2RUNDODJCN0VCNDhEOTU4RTNGMjQ3RjFGODlEMjQ0QzMzMDBENjk2OTNDN0MzNjQ5MzE0RTcyQTBFQjgyRTM0NDlBNkMwMDdDRjIyNkY1MjlGNjgwRkY0Q0Y1QUUxNjY2NjkxRUM1MTcyNjkxMjBCNTcwNTQ3REI1NUMwQjhEM0RERTcKKzU2Q0VBN0UyCis0NENDNjVBMDg4NzYxQzc5NUIxRTJENDAxOAorMEEwODdCMEFFNUM5NzI3MjY3MTI1QzVBMzkwQzUzQkVDRDczRjU1REY5MzlFQzI2QzY2QzkwQkY0ODgwMDFBQUM2ODNENzRFNEQzMEUzRkQwNTc2QzY0RjJFNEZDODE5QUZBM0I2RDQwQkY0OUQyMzMwODJFMjZDNEY4NzQ5RTY0NzNFMUQwRTVFNzMxRTZEMEFENjYyMjQ4MjkyM0IxODIxMTJDQzUxMjYxOTFENzgyRQorMTg1RkI0NjAKK0FDMEMzNjgwQTgzQUNCRkVBRTRBNTI2Qjk5CiszODc3NEM5RjkwQzJFODg2QTRDRjlEODZEMzY1MkMzMjBGQkZERTA1NDI4NUNBOUJDN0Q4QUNGNUNFNTc0MTcyMTEwNEMwQ0FFMTA4OEY4MEFDNjQ0MDVDOTBFN0QzRUE3RUFBQjQyRTFGREM1QzkxODNDMUNBNDYzRTc1MzREOEE5MjQ4RDFCM0JFQUZERTYwMjJFREIyQ0U4REJENDg4MTAwMDIzMzQwOEQ2Rjg4OTRFOUZEM0ZFCis4QjBGMkM3RgorQzc5QUFFOUQ2QTEyNjk0ODNCMERDQTIyQjY0MAorRDg3RTc5RDJEODk0RjIwOEE2NTFCRTZBRDRDQzg2RENGOTY2M0Y4NkNFMzRGQTc1RTk0N0YxNTkwMTIxMDYwRUY5ODEyMzdFNDc5Nzg1NzEyNjM2QjAxOTI2RjdDQTRFQzVDMkJGRUVDNzdGQ0VFOUFDRDMxRDlEOUE1MTBCODI0NzVCNzVGODExMTMyREQzQ0EwODZCRUFCMTkwRjI4MzgxRTUzMzk1RTY1Q0MxNTYyOTVEMEQzMEZEOTJGODkzREFGMjlCNTkzN0JCOEE0RUE4MjA2NjQzN0Q2Q0NCMUZGRTBBODczN0FCQTgxM0M3QTc3OEQ0NzkwMjkwCitCRDIxCitFQ0I2OTA4MTM0QzZDOTEyNDQ3QjcwRjRFNTI3QTFFN0M0QjMxMUJEMzZDQ0JERDY3RTEyRERFN0Q3OEY0NzE2REYyNDRCOEE5QTY0MTJFN0I0RjMxOTA3OTlDRDk3CiszMzYwREQzMQorNzNDMzdBREE3QkUyQjk4Rjg2MURBMkQ4NzhGQgorMjU0MUI1NjEwNURFOTNFREFBOUIzMUZDRjNBNTEyMUMyMjNDOTQxNkJGMTU3NENGM0E5RDNEMDM0RUZGQkE1RUMyODE5RkIzM0QxOTI1NzBFOEU4OThFMDBENzgxQzA3NzAzNTYzOEFEOEUzRThENEVDMUQ2OTExOTVBRDU2NTEyMzhGM0FCMjZCNUI4MkM0RDE4MUVCMzBERkQzNTY5QjA4RTQzMTIyODYxRDYxQUIzRTc5Rjg0MUI3NUQ5MENBOUIzMjdENzYyOTJDODg4QzJFNUEwM0EzQzMKK0NFRjU5NjkwCitEMTgyQkZBRjI0NTY1MDBERTU4RUNFNzQ1NQorRURFQTYxMERBMDgyQkI3MTA1OTYzRTcwRUYzODBCRTBDQ0E3ODA4QzY3MjQ5ODY0QTNFMjYyN0JDMENGODhBNEZERDA4MUQ2NzAwNzIwMTQxMjUxNEU2NDVBOTQxOTZGNUYwQ0JFRkEyMjE1Mjg1MDVGM0YwQjQwMDgzOEREQTVCQTM4NjlBNkQ1OEYyRTJGNUZFQUZERTVFNTU1OTY4NAorMEZDMTQzMzkKK0I3QkE1Nzg4NEZBRUVGNENBMDA2OEE2MkUyCitCOUQyMERGRDg3RUQyNDY4MTdBNkE0Q0UzOEM1NkJDNDFCNDcxRTMyQjkzMjJGRjQyQTg5RkREQTk4NTlDMjA1MzMyMzI4RDY2MTk1MDYzODdFMEFCRkZEREY3QkVDMkQ2Q0Q0RkE1MTBBRTRGMTJEOURGRjAwREIxMUVEN0RBRDhBNEI4OTU2MkQzQThFNTBDNzg2MTBDMDEzRTU1NUE2RDMxQzkyNDEyOTAyNjM1OEI2RDJDM0E5RUE5QzZFNEUyNEFCMTIKK0YzM0JBNEUzCitGOTQwNTExN0ZGRThDNTEyODNCOEVDMkEyMTRFCitFRDE5QzA5NDBCQUU2QUZFNjMzMTVFMTQ2OTc1NDRGOTJCNDM1Rjk2NTZFODkzREYwRjZFNjJCNkVCMDg1NUUzNjJGNTI4MzA3QjlCQUYwNUFCMjRDNTFFRkE0QzFFRTI2Qjg0OUYwQjk3QjJDQUMzOEM0NDZBQTdBRTE1QjQwMTlDRkI0QjMzNzdFREQ3NjBBNTk2M0NGNjhGRDMwMUEzNkYwQzVDOTlFNjI3QjBBNTVEMEI2Mjk0REE4Nzc2RTVCMDlFRkQ4NzhCQjJCMjFFQTgzQ0ZCREExQTA2Mzg4ODREOTE3NDlFRjdEQUE1MzBCQzIyNzQ3NDlFQTAKKzc0NTQKKzMxN0RDNDgxQUU4MDJDRUY5OTc1MUU2NjdCQjc1OTNCNkI0QzE3NTFFNUM4QUU3RkU2RURDNTQ0MEJBNUFGOTMyOURFMjgKKzg0QzQ5NTY0CisxNERCOUUyNUJERTc4QkMwMjE5QkY3N0ZDQworQjVBQkRDMDU3RDM2OUU0OTgxMzNDMjlGNjdCNTA0RUJFQTk2NkNCOUVCMzZFMkM2Njg1REFEMTZEMjJBMDExQzM5NTFDNzQ4NUU0QTE3NzBBM0JEOUYxQ0IwQUVCNzc0MzQ3Q0MwMkRFOUY3Cis4QjQzMTJDNgorM0NDMDlEOTAzMjg1RkM0OThBQUExMjBFRUIyOQorOUMyNzYxOTlDNENCRDNFRkUxOUY2QUIyREI5MEUxODAwRDM4RTQxOTk0NDNCNDc2OEQ3QjQyNEZFMkY4OEY4MEE0QTY0OTNBMTg5NkUxODA1NzQ3MkIyQTgxMjA5MzQ0NUQ0QjIzNzI0REM0MTU3NkM5MTA3Mjg2RTA4NEQzQjkzQkNDN0VCQTgxQTUwRTAyQTkwN0MwNzZFNjdEMDZFM0ZGMEQxQTI3MzQ0NEE0RDQyRUFFODE5NTJFRUNEMUNEODEzMzk2NkFBQkU4RDY5RkRDMEM4MjhBQzIzRUZGQTgxRENFREFEREM1OUJBMUFDMTZBRjM5REEzMDhECitDNjM1CitCMkUzNTFGQTlCNUVBNzJCMDhCQkZCRDk2NUE4NEQ0NTgwOTI2NkE3NEE2NkY4QjE2NEQ0NjE4NTVFQkM2NQorQzU1MEExODAKKzQ3RTIzNDcxQTQyQzBFMTZCQjM5MjkwMTNCODYKK0JFODE1QUIzMjg0NjAyREZBNzRDMTdDQUY3N0MwMTA5MzUyODlFRjlENDUxRDA2NzVGRjQ3ODY0QzlFQjNBRDdGMEYxRUFFMDI1RUREOTUxNTRGMjI2ODA2QzVFNjU0MEUxMUVDRTBGNkU3QzAwMEVBQzA2OUY5OTU2RUQ4RDdBMEVFQUE0NDY0NUJGRjVCRkRCMkU2MUYwN0RDMTlFM0U1RDg5OTY5RTQxRTZCNzBCNzg1MkU4M0Q4QUNFOTYwOTEyMDE3MTAyOTNDM0I4NjY5QzZBQzU3OAorQUUyMEJGRkYKKzg2MUUzRkRGNEYzREYyQTY1QTFDRkFGMUU2CitGN0VCRjcwQURCREVENEIxRjAwOUQ2MDk1MTgzNjI2ODExNzZCNEQ3OEU4RTEwQjdEMDgzNTk0MzJDQzQ0MjJEQjZGMDBCRjkwQUQ5RDI4MzgwQjI1RDFCRjlFQ0IzMUMzOUYwQUQ5NzFDNkM4RjFEQ0JGMDdCMkFGODM0Q0Q1NjBENjEyNkNBOEQ5MQorMkRFMDhDNEIKK0UwQTRGN0NCRjg4RTdGMEExRDY0Nzk3NjY1MDgKKzIxRTY5NjBDMzcwNkZEQkFGOTkzNDEwRjNENEQ0M0VBRTIxNzkxOTY5OEJBRjY4MEVFN0Q0RTNDMjk5MTQ0NzFFM0VFOTAwMUY2MUVCM0QwRjI5OEU4NzkwMTg2MTI5OUQ5RkY4QjkzNEYwQTQzMEE3RjM4Njg5MjkwQzZBQzRDNTQ2RTQ4NjgwQjE0MEI5RTYxRTU0MEJCRUJGQzhDMzIzNzQ1NjU1MzM4NjIwNTFFQ0JFNzhGNjNDQTAyQTYzRUVBRUUxNzUwN0Y0RUZBNzQwQzdEQ0UxMDlCRDJEM0EzMDI5MDIwOUMxRjc2MDMKK0JBNkNBNjUwCisxNzgwN0I0M0E5NUFCQ0ExNjQxRTkxNTEyNzEwCitEN0Y4NUQ1ODhDMkM2M0JCMENEOUU3MzZGMTU0MEQ3MjA5RUY4RjVFMDNGN0NCNzI2OTgzNUMxRDMxNzlCQzVCN0MxQkM4MTQyQzI1MjVEMzM4NjRCRkU0OEFCRDZFOUIzQjI3MTg4RjI0NjVCRjEwNkY4MDA4RDU3NzVDMEI1N0YxQTA4RkE4NDI5NDREQjcyMzBENDI1QTJDQkRFOEMyMDFDNURCQkE0QTVCODNGM0Y3MzRFOERGNTlFNjE4MUUzMkJEQjE1OTUyMjg4QzczNjAwMworMDZERjYyNTAKKzdBMzBDM0VCRDk0ODNFN0NDQTc4QzVFQ0ZECis5N0UxMDM0NURDMDhEMzdDRTlDNUM2QjlDQThFMzgwNzQzNTZGRDhFQjExQTRGOTE0MjYzMzY0QTk5Nzg5Mjg4NTA0MkY4QkYyMkRGQjQ3OEYzMEFDMzg0REJEMkVFMTY3NDJGQzQyNEUzRjRFOTcyNDkzMEU5OEVCOUY2RjJFRTYwMUM1OTk0QzgzMzBGOTg1OTQyOTVCQ0VGODM1OTBFRUE0MkUxNDI1MkM3MEIKKzExODNCN0U3CitDNURGOTFGM0U0NTcxNjM2NzFGQ0UyRDc0Rjk2CiszMTA0NzFCOTA1QUEyQkMxOTU1QjQzODY2N0I4OTY5MUJERjQwRjQzQzQwNjlGRjkwODExN0NEOTY3NEQ5NjY4MzIyMjk5QTRFMkIxMUFGQTYxN0UwQ0M5MTcxQzlGNUIxREY2NjFBQTAzQ0MwREQyNTM1MjYyMEU2RjMzNEVBN0EyRTgwOUMzMDM5QzA4MzkzRkNDNjY2QzJFOEZEMDk4RTMyNUIwMzcxODcwQkZGNUUxNUJEMzM4NEM1NkZEMzU4MzgxNUI4RDM4QkU2ODU0Q0EwMDE5Nzk1MkU0OENFMzZGNjE4MjJFMDQ4QUU0QjU0ODhEODM1OQorNjY2NDI0NEIKK0QxMEY1NjU1ODRGMzM2RDM0MkRDNTMzQTU3Cis1QjMyRTZBOTBFQTc3RDlGNzkzMzJFRUExNEMwMzVBNjhEMTA0RkUwNzk3QjhCRjNGNEFBNEYyOTEwNjY1Nzc2RDA0NDk5NDE3OUNBMzZDQkEyRUE0RDQ2NTI1NkRCN0Q1RjZENTQ4NTE4RUVFQ0ZCMDU4MjY4RjgzNTkwMkE1QUMzNjZFQzRCNkMKK0YyNzE3QzI3CisyNjA5NjQzQ0RGNDgyMjE5RTZFM0Y4QzI4RQorQzM2QkEwRTNBMkE1QUZDQTU3OUU1N0MxQUFFQjVBQkI2M0JCODU3MEU1MkJEOEQwMTFFQzVFRTk5MDc1RTA0RDU0NEU3RjkxNUVGRDZGRjBDRkJENzZFNDc0NjBDMEEwN0U5Q0FEMUFDNUE0RjQ5MUQzRTA0N0NGQjVENTY1MzFGMUQ1NUFBNDQ4M0MxMDk3NkUzQjE1NDIzODRFQUYxNDQzQjc3NDJGQUI2NzIyRURFNDkwNzBFODQ4QzU3OEYxNzY3OAorMjUwQjM2MkIKKzU1RkQ4MjU2RTE4Qzk5QzZBMEQ5MzcxNTBCCis4NUFDRjQyNjU1OTM0MTk1QkJBODI1OTI1NDAzNUYyRjA1RDk2RUIwNEJFRjFBNTA3Mzg1Nzk2ODBGMEVCMTgzNERGMzNGRTEwNjk2NzIyOTQxNjFBQzY1OUE0RUEyRUVFRTQ4N0MzMEE2NEQ5QzhBMDdERDVCNkQ5NEQ1NTY5NzU4RUI1QkI1ODFGRjYwRkMzRDg3NEYwQkJFM0UzQjVGQkYwNjY3QjEyRTY4NUJFRkZDCis4QkNGNDhBNAorNDk0OUJFQURFRkQ5NTY2MUI1OTAxQjE5QTIyNgorRUE4OTk1NjJGNjQ5OUUyRTI0RkYyNzZDMDBGQzMwRUE4RjdCNzM3QTAxRkRDODYzQ0Y1QUJEM0JERTY0MzEwQTIwM0NGOUM4QzBERDU1RDFERTdFRTMzRDE2NDA1RTMyNDUzRDZGMkU0MjUyQkEwQzQ1QjJCNzIyMThGNzc4NDM2MDkxRTI4NEVEODcxQjk0MEE3RUMyREU5MDIwMDMxODZCMkNBNzJFMkUzOTIzN0UzMUQwMTg3QkM0NzlEQzg5RkQ5Q0FFQjYyMzcxNUZGQUQxMkY4QUYyQzMxRjM5RjJBNkRCOTc0QTBBQ0Y4REE2QjM5MkE2REUzNkZBCisxNENECis1OTZDNEYzQTY1Nzg0NUZCMkUwQzg5NDQxOTQ1Cis2OTMwQzRDNAorNUQyNEY1QUMyRTQ5NTkxMUQ2QzAyOEQ5NkEwMgorOEJFN0M2N0Q2MkUxRDNBNUJGQzFBODk2MThFQjY5REI4MzJCNzEzOEFCNTkyNjcyQTU5MDMxQzMzOTExMTA2MEVCQTA4NEI2ODBGMTY5MEY0MTI0N0NBNUVFRkU3MkRBQjQzMTIyQzZGNjc4NjQ1Q0Q3RjRCMDlGREI2RThDNUNFOEU0MzBBMjk5NTkwRUE2NzFFMURGRkVFODFBODA2QzE2RDA3MUU2M0EzMEU2NUM1M0I5QjQ4OEEzQjI4RjBBQkY0ODVCOTM4ODA5RDIxREYzNzM3QjRERjlEQTZEOTJFM0E1MkUxODRCQjJFMTZDMDlGNjgyOTgyN0UxCisyNkQ5CitDMjQxNTdCRQorMDdENjU1MjU0MUJCMTFBMkU1NEI4ODdCNjMKKzJERjk1NjcyRkMyRjc0NDlGMzhGOThFRjZCRkEyRUNFRDkyMDVDMzJENzY0MUI3MzY2N0Q2ODAxMjAzNDg4MTVGQjcwMkVBMzUxNDJGQTUzOUJFNEJFRTJGQUEwOEEzMTc3OTEzNzVBQUNGRDk4RUZGMTY0RTZBQkUxMkNFRAorRUZDNTBBQzAKKzg4RjNEMjZBNzEyM0NBMzkyQUE5Njg0OTQyCisxN0U3Rjc1QTMyMzQ4NDg0NjI4MkRGNjVEQTJCM0E2NjVGOEIyQjZCNEQ2RgorQ0ZERTBFM0EKK0M1OTQzRkVGNkQzQzhBQ0UwMkZERDRGMDY0MTQKKzc1N0Y5OTI0RUMzRkVEMDIKK0ZBRUE5OEM2Cis4REI5NjdGMzlBQUVEODdENzFEQ0FDRUU3RDVBNDE3QUJDMDFBRkRBQzEzOTE3RjlGODBBN0M2OTNFODBEQkM4Q0Q5MworNzBEQTlDOUFGNzdBMkYwNzRFMkUzRUMxQzI5RDNCMTg0NjYxM0UwQTlFOThFQjE4MDE2MkY1MDkwNzhFQjg1QkZGMTNCQTc4MThGOAorRjM2Qjc3MDgwRkM4OUJGQUE5NEI4NUNGNTY5MjlDNjNGNkZFOEYyQUNGOTc0REMzRjc5MDBGCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxNzI4MzczMzI4MzUyOTBiMDEwYzAxMGQyODMxMjYyYjMwMjQzNTJlMDEyOTMyMzUwMTE2MjgyNDM2MzgzNTJjMzEyYTAxMTcyODM3M2EzMjM1MmUwMTE5PiAyMjA3IDU1OCAwIDczODQgLTEgcworPDI4MzUyOTMyMzUzMDI0MzEyNjI4PiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwODA5PiA5MzQ2IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDEyIFNGCis8MDUzNz4gMTU4OSAxNDMxIDAgMTgzNSAtMSBzCis8MzcyODM2MzczMTI0MzAyOD4gMjAzMyAxNDMxIDAgMjg1NyAtMSBzCis8MjA+IDMxNzcgMTQzMSAwIDMzMzkgLTEgcworPDMyMzg+IDMzMTMgMTQzMSAwIDM1NDUgLTEgcworPDAwMzYyYjMyMzgyZjI3MDAzODM2MjgwMDM3MmIyYzM2MDAzMjMzMzcyYzMyMzEwMDM3MzIwMDM2MzMyODI2MmMyOTNiMDAzNzJiMjgwMDM3MjgzNjM3MDAzYjMyMzgwMDNhMmMzNjJiMDAzNzMyPiAzNTQ1IDE0MzEgMTEgODA2NiAwIHMKKzwwMDMzMjgzNTI5MzIzNTMwMDY+IDgwNjYgMTQzMSAxIDg4OTUgMCBzCis8MGMzNj4gMzE3NyAxNjc2IDAgMzQyMSAtMSBzCis8MDAzMjI5MDAzNzJiMmMzNjAwM2EzNTJjMzcyYzMxMmEwNDAwMzcyYjI4MDAzOTI0MmYyYzI3MDAzNzI4MzYzNzMxMjQzMDI4MzYwMDI0MzUyODAwMWMwZTE5MjMxYjFjMWExMDBjMTYwND4gMzQyMSAxNjc2IDggODg5NSAwIHMKKzwxYzBlMTkyMzFhMWEwND4gMzE3NyAxOTIxIDAgNDA3OSAtMSBzCis8MDAxZDBmMTkyMzFiMWMxYTEwMGMxNjA0MDAxZDBmMTkyMzFhMWEwND4gNDA3OSAxOTIxIDIgNjk4NSAwIHMKKzwwMDBmMTUwZTE4MjMxYjFjMWExMDBjMTYwND4gNjk4NSAxOTIxIDEgODg5NSAwIHMKKzwwZjE1MGUxODIzMWExYTA0PiAzMTc3IDIxNjYgMCA0MjkxIC0xIHMKKzwwMDBmMTUwZTE1MjMxYjFjMWExMDBjMTYwNDAwMGYxNTBlMTUyMzFhMWEwND4gNDI5MSAyMTY2IDIgODg5NSAwIHMKKzwxYjFjMWExMDBjMTYyMzFiMWMxYTEwMGMxNjA0PiAzMTc3IDI0MTEgMCA1MTk2IC0xIHMKKzwwMDFiMWMxYTEwMGMxNjIzMWExYTA0MDAwZjEyMjMxYjFjMWExMDBjMTYwND4gNTE5NiAyNDExIDIgODg5NSAwIHMKKzwwZjEyMjMxYTFhMDQ+IDMxNzcgMjY1NiAwIDQwMDUgLTEgcworPDAwMTExODFhMTAyMzFiMWMxYTEwMGMxNjA0MDAxMTE4MWExMDIzMWExYTA0PiA0MDA1IDI2NTYgMiA3MDc5IDAgcworPDAwMTMxNDE5MTkxNDIzMWIxYzFhMTAwYzE2MDQ+IDcwNzkgMjY1NiAxIDg4OTUgMCBzCis8MTMxNDE5MTkxNDIzMWExYT4gMzE3NyAyOTAxIDAgNDIwMSAtMSBzCis8MDAxNTE4MGUyMzBlMTkxZDA0MDAyNDMxMjcwMDFhMTAxNjIzMGUxOTFkMDYwMDIxMGYyODI5MjQzODJmMzcwYj4gNDIwMSAyOTAxIDQgODg5NSAwIHMKKzwxYzBlMTkyMzFiMWMxYTEwMGMxNjIyPiAzMTc3IDMxNDYgMCA0Njk5IC0xIHMKKzwwNTM5PiAxNTg5IDM0OTIgMCAxODYyIC0xIHMKKzwzOTI4MzUyNTMyMzYyYzM3M2I+IDIwMzMgMzQ5MiAwIDI4NDcgLTEgcworPDFjMmIyYzM2PiAzMTc3IDM0OTIgMCAzNTcxIC0xIHMKKzwwMDMyMzMzNzJjMzIzMTAwMjYyNDMxMDAyNTI4MDAzODM2MjgyNzAwMzczMjAwMzYyODM3MDAzNzJiMjgwMDM5MjgzNTI1MzIzNjJjMzczYjAwMmYyODM5MjgyZjAwMjkzMjM1MDAzNzJiMjgwMDM3MjgzNjM3MDYwMDE0Mzc+IDM1NzEgMzQ5MiAxMyA4ODk1IDAgcworPDI2MjQzMT4gMzE3NyAzNzM3IDAgMzQ5MSAtMSBzCis8MDAyNTI4MDAzODM2MjgyNzAwMmMzMTAwMjYzMjMxMmQzODMxMjYzNzJjMzIzMTAwM2EyYzM3MmIwMDM3MmIyODAwMDUxOTAwMzIzMzM3MmMzMjMxMDYwMDE0MjkwMDM3MmIyODAwMzkyODM1MjUzMjM2MmMzNzNiMDAyYzM2PiAzNDkxIDM3MzcgMTIgODg5NSAwIHMKKzwzNjI4Mzc+IDMxNzcgMzk4MiAwIDM0MzIgLTEgcworPDAwMzczMjAwMDcwNDAwMzcyYjI4MzEwMDMyMzEyZjNiMDAzNzJiMjgwMDM1MjgzNjM4MmYzNzAwMzIyOTAwMzcyYjI4MDAzNzI4MzYzNzAwM2EyYzJmMmYwMDI1MjgwMDI3MmMzNjMzMmYyNDNiMjgyNzA2MDAxNDI5MDAwZTE5MWQ+IDM0MzIgMzk4MiAxNCA4ODk1IDAgcworPDM4MzcyYzJmMmMzYzI0MzcyYzMyMzE+IDMxNzcgNDIyNyAwIDQwOTIgLTEgcworPDAwMzEzODMwMjUyODM1MzYwMDI0MzUyODAwMzUyODM0MzgyODM2MzcyODI3MDAyOTMyMzUwMDM3MmIyODAwMmYzMjI2MjQyZjAwMzYzYjM2MzcyODMwMDQwMDM3MmIyODAwMzUyODM2MzgyZjM3PiA0MDkyIDQyMjcgOSA4ODk1IDAgcworPDMyMjk+IDMxNzcgNDQ3MiAwIDMzNjMgLTEgcworPDAwMzcyYjI4MDAzNzI4MzYzNzAwM2EyYzJmMmYwMDI1Mjg+IDMzNjMgNDQ3MiA0IDQ2NTIgMCBzCis8MDAyZjMyMjYyNDJmMDAzNjI4MzUzOTJjMjYyODAwMjcyODMwMjQzMTI3MDYwMDE0MjkwMDM1MjgzMDMyMzcyODAwMGUxOTFkMDAzODM3MmMyZjJjM2MyNDM3MmMzMjMxPiA0NjUyIDQ0NzIgNyA4ODk1IDAgcworPDJjMzY+IDMxNzcgNDcxNyAwIDMzMTYgLTEgcworPDAwMzUyODM0MzgyODM2MzcyODI3MDQwMDM3MmIyODMxMDAzNzJiMjgwMDM1MjgzNjM4MmYzNzAwM2EyYzJmMmYwMDI1MjgwMDM1MjgzMDMyMzcyODAwMzYyODM1MzkyYzI2MjgwMDI3MjgzMDI0MzEyNzA2PiAzMzE2IDQ3MTcgOSA4ODk1IDAgcworPDE4MzcyYjI4MzUzYTJjMzYyODA0PiAzMTc3IDQ5NjEgMCA0MTYwIC0xIHMKKzwwMDM3MmIyODAwMzUyODM2MzgyZjM3MDAzYTJjMmYyZjAwMjUyODAwMzcyYjI4MDAzMDI4MjQzNjM4MzUyODI3MDAzNzJiMzUzODMzMzgzNzA2PiA0MTYwIDQ5NjEgNyA3Nzc1IDAgcworPDA1MWU+IDE1ODkgNTMwOCAwIDE5MjggLTEgcworPDFjMmIyYzM2PiAzMTc3IDUzMDggMCAzNTcxIC0xIHMKKzwwMDMyMzMzNzJjMzIzMTAwM2EyYzJmMmYwMDI0MzczNzI4MzAzMzM3MDAzNzMyMDAyODMxMjQyNTJmMjgwMDM3MmIyODAwMjYzMjMzM2IwNTI0MzkzMjJjMjcyNDMxMjYyODAwMjkyODI0MzczODM1MjgzNj4gMzU3MSA1MzA4IDggODg5NSAwIHMKKzwzMjI5PiAzMTc3IDU1NTMgMCAzMzYzIC0xIHMKKzwwMDEzMTkwNTFkMWYwMDBhMDYwNzAwMzEyODM3M2EzMjM1MmUyYzMxMmEwNjAwMjEwZjI4MjkyNDM4MmYzNzBiMDAzMTMyMDAyNjMyMzMzYjA1MjQzOTMyMmMyNzI0MzEyNjI4MDAyNDM3PiAzMzYzIDU1NTMgNyA4ODI1IDAgcworPDNkPiA4ODI1IDU1NTMgMCA4ODk1IC0xIHMKKzwzNzI4MzAzMzM3MjgyNzIyPiAzMTc3IDU3OTggMCA0MDAwIC0xIHMKKzwwNTNhPiAxNTg5IDYxNDQgMCAxOTA5IC0xIHMKKzwzNzJjMzAyOD4gMjAzMyA2MTQ0IDAgMjQzOSAtMSBzCis8MWMyYjJjMzY+IDMxNzcgNjE0NCAwIDM1NzEgLTEgcworPDAwMzIzMzM3MmMzMjMxPiAzNTcxIDYxNDQgMSA0MjE2IDAgcworPDAwMDIwNTBmMTQxNzFjMTAxYT4gNDIxNiA2MTQ0IDEgNTM5MiAwIHMKKzwxZT4gNTM2OSA2MTQ0IDAgNTUzMSAtMSBzCis8MGMxNTFiMDAyNjMyMzAzMzJjMmYyNDM3MmMzMjMxMDAzMjMxMmYzYjAzMDAzYTJjMmYyZjAwMzYyODM3MDAzNzJiMjgwMDJjMzE+IDU1MDggNjE0NCA2IDg4MjUgMCBzCis8M2Q+IDg4MjUgNjE0NCAwIDg4OTUgLTEgcworPDM3MjgzNTA1MjUzODM1MzYzNz4gMzE3NyA2Mzg5IDAgNDA2OSAtMSBzCis8MDAzNzJjMzAyODAwMDAzNzMyMDAzNzJjMzAyODAwMzAyYzJmMmYyYzM2MjgyNjMyMzEyNzM2MDYwMDFjMmIyODAwMjQyNjM3MzgyNDJmMDAzYTI0MmMzNzAwMzcyYzMwMjgwMDMwMjQzYj4gNDA2OSA2Mzg5IDEwIDg4OTUgMCBzCis8MjcyYzI5MjkyODM1PiAzMTc3IDY2MzQgMCAzNjc3IC0xIHMKKzwwMDI3MjgzMzI4MzEyNzJjMzEyYTAwMzIzMTAwMzcyYjI4MDAzNTI4MzYzMjJmMzgzNzJjMzIzMTAwMzIyOTAwMzcyYzMwMjgzNTM2MDAzMjMxMDAzNzJiMjgwMDM2M2IzNjM3MjgzMDAwMjUyODJjMzEyYT4gMzY3NyA2NjM0IDEwIDg4OTUgMCBzCis8MzAyODI0MzYzODM1MjgyNzA2PiAzMTc3IDY4NzkgMCA0MTEzIC0xIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgyNCkgMjQKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NCBwdXQKK2R1cCAzIC9DMDA0NSBwdXQKK2R1cCA0IC9DMDA0NiBwdXQKK2R1cCA1IC9DMDA1MCBwdXQKK2R1cCA2IC9DMDA1MiBwdXQKK2R1cCA3IC9DMDA1OCBwdXQKK2R1cCA4IC9DMDA2NSBwdXQKK2R1cCA5IC9DMDA2NiBwdXQKK2R1cCAxMCAvQzAwNjcgcHV0CitkdXAgMTEgL0MwMDY5IHB1dAorZHVwIDEyIC9DMDA3MCBwdXQKK2R1cCAxMyAvQzAwNzcgcHV0CitkdXAgMTQgL0MwMDc4IHB1dAorZHVwIDE1IC9DMDA4MCBwdXQKK2R1cCAxNiAvQzAwODIgcHV0CitkdXAgMTcgL0MwMDgzIHB1dAorZHVwIDE4IC9DMDA4NCBwdXQKK2R1cCAxOSAvQzAwOTUgcHV0CitkdXAgMjAgL0MwMDk3IHB1dAorZHVwIDIxIC9DMDA5OCBwdXQKK2R1cCAyMiAvQzAwOTkgcHV0CitkdXAgMjMgL0MwMTAwIHB1dAorZHVwIDI0IC9DMDEwMSBwdXQKK2R1cCAyNSAvQzAxMDIgcHV0CitkdXAgMjYgL0MwMTAzIHB1dAorZHVwIDI3IC9DMDEwNCBwdXQKK2R1cCAyOCAvQzAxMDUgcHV0CitkdXAgMjkgL0MwMTA2IHB1dAorZHVwIDMwIC9DMDEwNyBwdXQKK2R1cCAzMSAvQzAxMDggcHV0CitkdXAgMzIgL0MwMTA5IHB1dAorZHVwIDMzIC9DMDExMCBwdXQKK2R1cCAzNCAvQzAxMTEgcHV0CitkdXAgMzUgL0MwMTEyIHB1dAorZHVwIDM2IC9DMDExNCBwdXQKK2R1cCAzNyAvQzAxMTUgcHV0CitkdXAgMzggL0MwMTE2IHB1dAorZHVwIDM5IC9DMDExNyBwdXQKK2R1cCA0MCAvQzAxMTggcHV0CitkdXAgNDEgL0MwMTE5IHB1dAorZHVwIDQyIC9DMDEyMCBwdXQKK2R1cCA0MyAvQzAxMjEgcHV0CitkdXAgNDQgL0MwMTIyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy01MCAtMjM4IDkyMCA3MjJdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMEVEODA0QkExMzU5REIxQzRFOUU5OTQ3RDBGMjJCOUQxNDIKK0I4QzdGMzJENkZCREMxOTkyNTI3OTUzNgorODE0MDQ0RjQyRUUxMDRFNkQxCitFMjFDQ0I3NQorRjUzRjRGMUE0NzVFOUU4OUNGOUM1QTVCRTUKKzhCNTlDMDIwMDU2MERDQkY3RjZDMjYwQjZDODNFOUE5NDE3RUQzODQ3QjgxOTk4QTY0NzMyOTJEMjQyODYxMzdGMzVCQUQ1NERCQTg5MjE0MEIzQkYwNDhGM0MxQzcwODQ1RDk5RDExODUxQkZGNDM5NAorNTY4MEI2OEUKKzZGNURFNDBCNDFCREEwMTcwQjc1RTc3QTA2CitBMkVDMEI3MTZGNDE4RERBRTNBQjczRjFCOUQwNkFBODUzMTc0N0FCQjNDMkI1CitEQkExODU5NQorNTQ1NEE4MTcxQzM2MTA5NjRFOUU0NkMwRDkKKzRCMzkxMUZGNjQxOEJFMTg4REFGRDJEMTIzMTEwNDE3MjgzNjM1OTYxQzRGNjk0RTZCMTVEOUUxOTc3OUU2Cis3QkNEMDY1NgorMzYwODFFNUVFMkFCMkQwNDQ2RkMwRUFGOEMKKzdGNTdFQkZBNDc0RjVGRDhEMDgyNTlGQkY3MUYxRDk0RTM2QjE5MjQ2MThBOUQzRkFBMDdBNTlGREVEOURDQUNEQUZGNUVENkVBMUI5QTY1M0M5Qjk2ODQzN0IzRUUwNzMzRjRDN0VFNDYwMzcyN0YyN0FCRjRBN0EzODQxOTAwMzkxMzYwMDA0Q0JFRkI5MzZERUQzMzcxRTVGOEQzMzdERTY2QkJDODlCOTJFNkZFMTMwNQorRjRCRDM2NTAKKzQyNDkwRDhBMzJBMTJCM0VFRkQ1MzcxMDJBCis5MzA5RDk2NjE4OTY2NzdENEVDQzVDODFCMjBCRTc3NDkzMDdGNjA5MTUwRENDODc4RTNERTM5RDBCNzI0QkM3RDY1OEI3RkYxRkMzNkQ3MjRERkZFNDg3NjUyNDZGNjQ5RUI4NTg5NjdEQkRBMDkzMzQ4MQorNDJGNTQ1QzIKK0JEQTdCRTA2QjQyMkZEMzAyNDkyMzE2RkIyCiszNzQ1RUU2RTNENjRGMkE4M0M5RDhGNUFCQzk3QzhBNzNGQzdFNTI1MTgwN0UzNUM3RTI0NDY0OTRFQUNDN0Y4NDFGODI1ODYxMUI5N0EzNTYzNzZENTE5RjQ4NkMyQTk0REM0MEM0MjRBMDMKK0JFMENBODkwCisyQThDNUU4MzhEMEM4MTVGMTAzMDBENTFDOTEyCitCRTdDQkE2MjFBMkFCRjkxMEYxMjlBODUxQUIyQkQzQzAzMDE1RDhBNkIzMzk1RTk3NjI2N0IwRUEwNzExREVFNUE1M0E4NjA4MzNFRDQxOEJCNDIzQUJBNUJGNEUwRUU5MjRFNTVCOTM2MjcwRDA2OEMxREYwRTVBRTgwNkIxMEI0NkU4RUEyQkJERTlEODZCQkMxOEIxODY5MUQ1MThCQUZERjk1QTNFRTM2M0UxMEVENTcyMTZENUQ4NUUzMzEwNUUxMjE1N0E3M0VDQUZBQ0YyRTE2QjhFRkE1MEQzQzY1NTI1NgorOTg0RDYxQjEKKzkxNEIzNkE2N0VBM0RCREM1RUU5RjdBQkY4Q0EKKzU3RjIxNDdBRjQ4RjQxOTMxRjk4RDcxNUE3OEZEQzJEQkUzQzhCRDc4MzQ3M0I3Nzg4NzVCMjEzQkIzRkUyQjcyMjZGNkE5MEQwMUFBNjY4NzMyNTJFN0Q5RjYxNzJBNkM0MzQ1MThDNTFERjIwNjUxRjFGNjZBNzU4MUNBN0Y1OEQ4MjA4QTFENzQzMTUyOTJFOTYyQjE1MDNENjk1NDBFMDk4OThCQjEwRjNBNDE3NzA1RTgwRDg0REE5RjAzQzAwOUE2OEI1REU4Q0VBRThCQTlCNjFDMTI2NUIzMjdGRTUwNTY4MERGMTA5QUQyNjQ2ODY0OTg1RThFMAorRjhERAorQjAKK0Q5MjA4RDM0CisyMkFFOUZDNUZCQ0QzNDg0ODMzRTAyNjcyRgorRUJGMzcwMEI1REExRUQ0NEUyNTRBMzc1NEQ0OEUwNTYyRThCNTdGMzM5MzJBNDQ3MDM0NDZDQUI5REI3RkMxRDg1MUQ3N0ZBQTM5MzVGMTM4OTc0QTZBNUY0M0NDMzYyQjczMDAwNkVBQzFDMDU0Njk1NkU4QjlBQjJDQ0JDNzlDQTY4MzI1RkQ2Mzk1QjgxRUREODVFQjQ2RUI0MDlCQ0Y5OEJBRDIxM0I2REQ2MjU3RTkzNTU5RkI0Rjg2QzM4RTEKKzdBMDY1MTg5Cis3RDRGQzQxNENEMUYwMkRGRTUxQkNDMUI5NjNECitGQzFEN0Y1QjM1Njc0MEYzNjdGMzAzOTNFNkQxQkY1ODIwNjZFNUM5N0FFQ0ZGMjVCNzQwRThDRDFCMURBNkRFNTNDMTlDMUU4MkJFM0Q2RjgzRkVBQjNCQTAzRjRCNDhBQjAzMjU0OEI1NEExQ0RBRTM0NEIyOEVFOEEyMUMxMjVBRjNGM0M0RDBDQTg0OEVCOEQ1MzNBRTkyMDFBNEFCMkUzOUY4MTVCMjQyN0ZCNkE2MTRGMkI1Qjg2RUExOTg3Q0M1Njk3QTY3QTEyMkMyNEVDNUQzQzgwMDIyQkVGMDdGNENGRUE0MTlFMDYxOTAyNzExMDZDNEE3QTgKK0VBM0VDNkEzCitEOUNGNkUxNjc4OUExRjg0MjIwMzgwRjAxRTVBCisyN0FDOTNBOUNBMUQ5MDI3QjUzNjkxQTFGMDlEMDVCODBDQkYzNTk0MzIwMEE1NjczRTY5MjM5NDM4NDVCOThENjk3QjcxN0YxNjc0Qjg1MkU5MzZFMjBCRTFCNDg1MUVCMjE4RDhCMTA4RkI4RDBFMTBDRkZBOEU1NTZCOEU5QjgzNkQ1MDRCOEZGMTY2RkY5RTc4OTk5QjI4NzFGRjhBMTg1NEJBODNEMzgwQTcyNDY5MEFBMzJFMjlFRUQ2NTg3QjkyODc1MzRDRTM3REQwMUMKKzlBMTQ2MTc1CisyNDRERTdCMDE1NTFEQTQzQjVCRDdEQTMyMzNECiswREVGMEVGQkZCRjM0RDY0Q0YwNTU3Nzg5RjVCRTJCMEI4MDM0Q0YyNDcyNDI1NDE2M0IxM0MwOTg3OUJDOEFGMjc0MTAxREQ4QzRFMUVBRTYxQjRERkI1OUYwNzY4RDRDMEFFNzA0MDNBQkJDNDBDNUVDRDM1MTI1RkE0QjcwNzQ5RUQ2MDE3NDY2MTg1Qjg1RDMyRDQ2MjRDMUZDRjQyQTNFMzU1RENDOEYxMzBGMURDRTEzRjVGMUY2NTkwOTNGQTgyQUNGQ0Q1NzhCNTMzNEYxRTczRDc4REQ0RkUKKzgzQ0JFM0ZGCitDQkY0RTY5MTA0MzJEM0M4MTIwQ0YyQTZBMgorMEU4MUQ4MTk5NzEwNzBEMjhBNkEzNDAzMUI1QzExMjNCOUNERDlCMDNGOEJDMDNBNjg2ODI4MEZCQzE1MkE5RTBBQTdENzJCMkIxOTEyNEZFOEQwQjQ4RjVDQTdCQTM4MUE5NEIwRTQzNTc4QjcxMzM3Q0NDQjhFODlGMjVGMEU5OTUyNTU1NjAwODM1NUM2RUFEQzJBOTcxMjkzOUE4MTY2N0MxQjg0RUZGMkY5OTI2NkM3MkI3OQorREFEMUFDN0MKKzhDRTA4RkNEOThDMEJBRDAyNzE3Qzc5NUIwQzcKK0EzMEI5RTE4NzcxOUVBOUVGOUZBMjUwREZCMzYzQkIwMDg3NUMzMEQwREUwNjU2QzhDNDVCRkJGNTA0MjlCMEYxNzQ5QzEyRUJGNDU3QjAxN0VFOUIyNTFFNTQ0MzIzRkNCNTI4RUQxNjgzNDM2NjZFM0E1ODIzMjMzQURFODkyMkMxN0UzRUUxNEMxNTAzNDk1NkY1Q0JGQzk2NURFRkY0MkYzNEI0NkUyMzMzNjQyMzYxQzFGODI0QTU3MEVFQTYwNTc4OTZBQTdGRjVFMDBFNEFECitDNTk2NURFRAorOTJBODE5MTY3OTZBOTg1RUM0MUFGNDlFRThDNworODlBOUJDN0ZDNzc2NERDM0Y4QTZFODhFRjU5NEM3MkJDMEU4RDNBNjVBNDYzMDI0NDU4NjQzNzBFMkM2NzQ1RUJEOTczRUM5QThFRjhCQkNFQ0Q0Q0RCMTU0MkIxRDIxQzRFQjAwMUNGQkI1NEE3N0NDOUMwQ0Y3MjZGRDVDQ0REMTZERkM2NzJFMTkyRERBMEU1NEQ2OTYxMEE5N0FGMTk2M0NERjg1NTM0NTdGRDJCQzhDQTEzODFBMkU4QkFFMUQ1NjI2NUM1RkQ1OTg5M0E3RkZFNEU3N0I5NTc2QkFEODM4QjgwRkIzQTkwQUJDMEI0QzEyREVFODNBCitFQTBFMTQ1NgorNTlBNjY1MzhEQ0Y1MzIxODNBOEJFNkM1NkMyMAorNjJDMEFBQjk4OTNFMkE2MTEzODhCNDQxNDFCN0Q1ODRCNjlCNjg4NEVFNTFBMjQ5REI2MkQ4NUE1M0Y0ODE1NDZDRjBGNkU2MDhBN0U3QjFFOTVFRDhFRUYxNUY3ODhDRTU1NTVGOTQ3N0UwOTQxNTUyM0Q1MDQ4QTYxMUMyOEE3Qjc1RkFENjJBMTc3RDY5NDUwQjk5QUI2NTEwOUE5MUE2MjE5Q0M2QjNEMzZGRkMzNEQ1QTNCMEVCNEE3MzY5QjFBMkY2ODQzRkYyRTZBNzA3MjY1QTIzNTE1MjMyMjQ0RTZGRkYwQ0VGNTVCQ0JBRkRBMjNGNkFGMjNFCis2ODNBCisyNDZFRDYKKzc3NkU2ODE2Cis4RkYxMDEyMUNFRjhEM0JBRTNEMjQ3RUFBNQorQkYxQkVDNTM0REI0Q0UxQTFFN0MxRUVEOUU5RjZDQ0NFNUJCMjExQjJDMEIzQkY5RTdDRUZENDA3QjBENzkxMUY4NUE1MkFGRTNGNzAzRTMxRjY4OTRCNEE3MUM0RjI3NDA5NzNFMUMwNDM2M0VENDlERTAyM0I4NEIzMkQ4REQ3QjE3MDc1RTgwOEQ1MjMyMzAxQThFQTJEN0MwQUVBOTRCCis4QjA3MDI5MAorNTVBQUYxODk0RDI1NkRFOEMzMzAwNkM3OUUKK0Q0Qzk2M0M3MjAxQzlDMDI4RTI3NzVEOEQ5QzRFMEU2MDk0QTIwM0M5MTBBCis1QUFGNTYzRAorRDAyRkM2RkMxNERFQjg5RkQwM0I0RDcyRkFGMgorRDc5RUM4RjQ2NzA5RTIzREIxMTlFOTI3RjY1NzBENTVDMDE1MUE3N0IwM0Y0RUZGQjRGODlDRTIzOEM0MkFFMDI4RjM1MzY3RTBGRDY1MDg2QjRBREVFNTg3RjJFMTA2N0NBQUM3MjA4RkEwNDFFMTA4QTcwNjBEMUJBRkQyQTdCODE3MTg4OTNGMzlFMTk0MEExMDZBQjhGRTAxQ0Q2MzE3NjBDN0Q1MDlDMDdGNTNGMkI4MjkzMTVENjU1QkFGNUU1QTNGQjEyNkE5RUFEMjUyRTQ2N0IyRjkwQTk4MTdCNDY1M0Q1MDI0NTY0REQzMTQ4MTU1MjQxMUJGCis1QjVCCisyMEE3MEQKKzVGNTVEREVCCiswNUIwNUUyOTEwN0M4OUE5NEE3OTdERjU4MAorREEwRTBBNEY5M0RBNTQ0RUNGRDdBQjFGMzY1MjYyNzdCNjAzMzk2QjM5MjEwMDBFOEI2NzcyNzA4NkJBQkNENUNBRDBGNDQ1MDY1MzBCRDEwMTREMUZFOTY3QzkzQUM4OTM2NUI3OTkzRjcxOTY4NDE5QUEwQUZGQkE2QzRGNDdDREJFMTk3RDY1OTNFNUUzQzNFODA5QkUzQTE3NTQ3M0FBNzVGNzMzMkQ2QUNGQjYKKzhDRTc2QUQwCitDRjJCQjQyMkVFMUE1Rjc3NjM5OThGNzRCMworMkYyREMyNjBFRkM2OEI2NzVEOTk1NDU2ODNCQUJBQTc1RDBBQ0NDRTVFNDAwMUU3QTczNDVGOEM0MjhCNkYxOUQ3RTYxRTRBM0JDOEFDMEY3QUJFM0VCNDUxQTA2MjE3ODI1OUY3N0U3QjcxNDEyNjhCMUE3NTQ4OUI1RUFGOTQxOURGNDVFRDJERkUzNjJFNDI4OTIyQTk0NEVEQjdGNjY3NkMKKzAxOTlCMDQ4CiszRDcyOTBCQTZFMTc0QjkwRDUzMjA2QTRCQzA4CitERDY2OThBQkMxMTY1NjkxQjE2QkZFQUNCMEEzNkNGQzM4RTdEMUI1RTExOTA5NEYxRUYyNTU2RDMzNjlGNkY2Njg4NjFFNkQwMDYyNjIyMDhEQThCNDZCNTFDQjlCMzI3REUxOEMwMTdFMTNGMTFGMTM2QzNFMTdCNDkyRjg1NjE1NjYyRDY2NzY1MUJFODQyMjM4NzVCRjM5NzFCNzIwMjQzQTYxMEJEMTg5RDQ5NTMzRTQ3QUZCQUZGQ0IzMTk2OUNGQURFRUU0M0E2OTE5N0Y0QkY3OUQ0NDc4CiszN0Y4OTZFMAorNzQ3QTAwRkJCMkNEQjdBNkY3NkE5QzM2ODcKKzdEMEI3NzdFNTQ1MjQyRkU4QkE5RUFGM0E0ODE5RTIxQjU2NDI1OEUxOEM0M0NCMDcxNTI0Nzg3QTk5Q0U4QTQ1MUY4MDEwODk5NkE2MUNEQUNFRkFEMjczOUM5ODk5RjYwRTZGQjcxNjkwODcxM0VGNzA0MjIzMTM5MjRCRDBENEM0RUQyRjdCRDk5RDU5MzI4ODU1OUE4QTVDNDA2MkRGRUY3QzM2MDI0MEQzNkQ3NzAKKzY0NkM1QTY5Cis0MUMxOTE4QTQ0NERDMEU1OTI0M0YwQTg5QworNERGMDFDNDMzNzY3RjcwMEFBMzA0MUVCNjRDRjY5N0MwMzU5MzcyMzIxQUVBMUFGNEIxNkNBRDVENjNEMUUyM0VGQzc0NDM5NzMwQkExM0QwQzYxRkI4M0FGMUZCMjFGRDkyNkQ1OUIwN0Y0Njg1NDU3NDEzQjhDN0I1N0VEMDM0NjNGOEZBOTgyOTI1Q0YyOUU4QzZDRDFEMUEzRjE2QTc5MzY1Q0I0Q0IzREZDMDBDNDJFRjIwRAorNzU0MjMyQTEKK0I5NjQ3MUE2NjM4OEUxOEVEMTVEQTQ3OTFDNUMKK0FENUQ2QzcxQkM3NkY0QjJEQzgwMkQ1MEE4NTFDMURBRDhCOEQ5M0MzNEZDRTYxNzA1M0E4MkVFQUIwQTNGMUFGNDBFMEJCNTAwOTE1OTU1RTBFQ0E3MjQ1N0VGNkQ0ODM3RDY0QzdGMkJERTEzOTBERjk4MjBENjhBNjk5RjYzOUJBMDAyMkQxMkE1RkNFNTEwNTZEOUY1QTA2RUEzRUE5NjMxQjdBQTk2MjgxRjEzMjlBMUU5N0VCQjUxNkQ0RDg0QjdBM0FEOEU2NDI2NzBDMTg2RjZERUFDQzg3QTAyM0Q4NDA4QjY1NEZDNzk0QzQ0MEUzMzY1MzczMAorQTE1QworNkQ4OTNDMUU4NjNDNTEwNjNBNDAwNkFFMDZERjBCMjA3MTMxQjQzQTE4ODdEQjY4RUUwQTJBMzUxMjAxNDAyMTRBMjNDNDhBNzJGRUZGMzQ4RkM2OEVDODg3ODE1MQorRDYxNzQ0MzcKKzE2Q0FCQzBGRjlDMUJCOUQ2QzlGMDI5NUY2QkUKK0YxMEZGNzlEOEM2NTc4Q0U5RUY5MTNEREIyNzAxQjQzQzlGMDVENjkzQUZGNDZFQTNEMDlCNUVBRUE4MTEwOTMzQTNBMkMzRTZGQkI3Q0Y4RjQxMDRCQzkyQUM3OTlDNTIzQzFBRENFNjg0QkZBODJFMjU4QjI3RTQ0NUU4RjM3MEI1N0RBRUIwQzlBQThEMUQzNjI4RjkyNDc1RTA5RUE2MjAwMDc3N0I0RTU3MDhCNTU5OTQ5MTlENTJDQkNEMjBFMkMyNkY0NUUwODBFNDc2RjJEMTQ2MTYwCis0Qzg0MEVFNQorNzA3MUQ4NDA0MTIxQjdDRDA4QUEwODIyRjMKKzMxQ0NDRDRCMjIzQ0MyMTI3RjZFRkU1Q0VEMDY0NEY3NTI3OTgyRTUwNUQ2MDExNDQ3MjJGNTFGQTlDNjBCOTMxMDdBNkVCMkFDNzc2QjdDRkRCMkM0NTEzNjM0NjFCNkRBODU3QUYwNEZFQjQ1NzJFMUIxODVCNjdGMEZFODdBQzA3NDMxNjhDMTBERTE0RDU2MUE4NTM2QkREREI0RTYKKzQ4OEQ2MTQ0Cis0MEI1MjRFOTU2REUyOTcyQTAzMEMzQ0M3MQorRDFCNkE4QkJBRkE3MzJERDA0NTRGNDM4NjJGRUZDOUY1MzExOTEwM0YyNkY1RjhBMTE3MDdGNjY1OTdBODFDMTQyNEJEMzVBRkUwNTA0MDE1MkM4NEU1QTkzNjk4REM2MDhBNEE5RUE1NDZEN0RDRjIwMUIwMjBBRUFGMEEzQUFGOUFCMjc5RDZEM0Q0RjAwN0YyMjJEQ0VFQUQyRUJERDg5QTI4NDMzMUQyMjAzRDFBMDY4OTAzRUY4QjU0OUY4QkREQTkzCitGRTU2RTdENQorMUU5NzRENTk0QUNENkYzNkM4N0UxNUM2Q0FFRQorRUFDOTIyQjhCNzYxNkQ4OUFEODhDQTZDNzZERjk2MThERENFNUZDRjI5NkMzREIyQjA3OUM0MjczRjY5MjZDRUVBNDlGNTQwNjgzNDdCN0E0QkM5RkE2M0E4OTdGNTZBQTZGOTYyOUVDN0Y1NUY1ODQzNzgyOUZCMENFNDc0ODJCNkZDRDdGQzg4RTQ2MkY0NUM5RTFGNDlDODEyQzNFNkQwRDAwRjUwN0U5REJBQ0IzNEVFQUEzMTBDQTEzQkI1MkJCMjUxNkM2Qjk2N0U2NzIwODQ0Q0MwMTVGNTczQkVBOUY0MjBENkU5RkExRDBENUM2QjMwRDE1MzQ4Cis1OTAyCitCNTRDRTBEOTI2Mzg2QUMzRkRFQjBGNzBDNkNERTA3RjFEREYyOEM0OUZCRUI2REQ0OTEwMzU4NjY5OTE3Q0VGMjk4NzhECitDOTBENjQxOAorODlEQTc4NUUxQkI5NTYxODZBRUFCMkVGNkEKKzc3RjE2QkJCRkFFMEFDMTQ5ODE2OThEREQ1MjVDQzk2MTQ5Njg5NkY0MjI4RDAwRDFEMUU2NjNGMjRFMzU4MTA2NzU1ODNDRDExODk1Rjc0RERBMUM2NTdEQjNEMUYxMDMzQ0NFMkNFMTVFRAorRENBNzY5NzIKK0NDNTNEM0Q0REMyQzFBOUQwRkM0RjU4NzM1MUEKKzBGMzI0NzAzMERGOEQzOEZFMDQzNEUxQzg2NkIwOTM5NzM1N0NCMDA5MTcxQjFEREE5MkI0MjIxMURCNUE1RTRCRTBCNTkxM0E0QzE3RkNGOTczMThCRjM1NDc4MTk3NUU3OTNFRDNEMzUyN0RGNDc2MTlCNkFFQUE0RkMyNjY5QUE0QzZDMzRFQUQ3MThGNEY3NTA2QTBGMzkxOTUyNDVGQ0JCQTVFNjNBNzlGMTkyOTRDRkM5QUI2OUNGM0JDNERDODQxNDU3RkZENUFGMjFDNTQ1OTlDOENENUYxMTM3QkQ4OTFEQjlDQzYzNDc5MUE2OTM5QzczMERDRAorMjI4QworNjRCNTU3Rjc1NkFEMkQxRjA1N0QzREIyODE2RUE4ODJFN0QwQUNBRkY1OTUxNEY0NEQyNDJDQzdDRkY4RjMKK0QxOUM3NTVCCitBMTE3NTBFMEI0NEIzQjk1M0M1MDlCMzkwQjBGCitCMEU1QzNGNDYwQTMwQjlGQkREMUY5Q0Q0QjRGMkZBMUMxQTE4MjVEN0E2NUY4MzA2RDBERTVDQ0YzNzU2NDQzRERCREFBM0YzQTgyNDBGNUU0OTZGMDlEMUFBMTNFMEJCQUZERDE4RUNCREQxN0Q5NEU4NjgxMDk5MzdFMjFFNTk2RDA3MDk0RjNENzkxNjI4RUQyRDRCNjUwMEQxOUY2NTZCMzU0M0QwRTYzNEIyMDMxMDJERjFGNTRGMzJBNkUzN0MwMEJERTVERjQ5Q0U2NkIyQ0QxOUIKKzYxQzBCRDJDCitDMjlCRkYyNzQ4Nzg3M0VGOUFFNTcyNzdCRQorMTdBQjNFQzg1MjdFNUM0OTIyMEQ4MzdEOTFFOEYwQzc3QjQ0NEY3NjQ4Q0MyODQ5RTIwODc3NEQ3N0JDRkY0OEM2N0IwREJCN0NFRTBFM0UxNzYwRDE5RTk2NDAyOEM5Qzk3N0NDOEFGMzdFRkFFQTY4MzkxRTk1QzVCQzlEQjYxODg5NzBGNDlBMTYKK0Q1QzEwRDFDCitFOTM1OUQ3NUVBMUMyNUM4NEUwRjQ4Rjg1N0IzCisyOTIwQUQ0OUFCQzFGNzRENjU1NkI1MDM1MzAwMkExMTRDNTA0QjUwNTlEMTIwNDAwQ0Q4NzU1MzA3OUU1QzNFNzk0NEYxREJGRTIyOUQ0MDE0OTkyMEJEN0FFODIyOTM2RDA4OEY4MTE5OEU1QjhCRTI3RTMwNjA1N0JCQjIwMUJBQTkyRDQwMzYxNTgwM0YyNDUxRkJGNURCNTBFNzFGNENCMDBEQjIwRUVGOUVFQkJFNTVBNDMwMEE3NEI1Q0Y5MTVERUIzREFGMzdCOTBDOTZBODMyNTc0NTQ3MkMwN0Q1NzdBODQyRjQ2MEQzCiswNERGNjNDOQorRTI4MjRFMUJBMUJFQ0Y2MzAzMDA5NERDMjEKKzFDQjJDQjk0MDg1QzREQUM5MEEyRTBDQ0ZENDM0NTE4QzVGNTM5RjFGMUY4OEVFNUM1NUVCRTJCREI3QkFCNURGMzREMkU4NDkxNzZBNkU3MzdDNzRCN0Q5REE4OEEyMkFGQzU4QzhCNEY1NTFEMTE1NzY4ODczRUM2MjNEQkQyMUEzRjMxNDZCMTE2RjIwQTkxQkNFNzE4RUZBMkE1RTM0NDY2QzVENDgwQUZGMAorRTg4N0M5Q0IKK0MxQzA3NjFGMEVFMkE5RkY4MTc1ODJENjdEREYKKzI1MEUzQUFCQUQ2MUFDMkMyOTJBQTcxMkY3RjA0OTkyNTI1MjQ5QzhEN0IxNDM0RkM4MUU1QzNBMUYxRDhGMjFCRkEzMUFBNTBEMUQ4MkYyMDlGNjMyNDZCMkE0ODUwMjZENzcwNTMxQkUzNTFFMDhGRTZDNDcwNURBQUMwOEE0NDUxNzI3ODY3QkY1MDM4REUxRUEyNDcwMTRENjkyNENFM0M4REI5NzExMjg2NkUyRjJEMTk2NTAzNUE2MTczQzY3OEM2MDNEMkZBMkNCMzlCQkExMDVCNENCQjNFREM2OTA1NUQ3QjQ3M0JCODM4ODlDODhEQ0M2Cis2RDFCM0YwNQorQ0VCNjIyOTNFQjE3MEE1RkUxOTgxQUVDRTgKK0QxM0RDNjUzN0VDMURBNzY1RTlDQ0M4QTU4MDJCRTE5NUUxRkQyMzIyOUI0NzkwMDU1REFDODE1NEMyRURFREQ4MzZDMjZBRjU4MjVCOEUyODcxQzY2OTI1NjU4OEJEN0FFNDNBMTdERkIzNDFFNEFGREM4OTgzQTQ0ODBENTgzQjY0M0JFMjY4MQorQkVCN0VGNTgKK0M4QjAzM0FGQTBCMjA1ODgyODA3M0NGQUM5CiszOUZERjc1MEEyOUI0NEEyNkNDMjUzNjk2NkEyOTYzMzI2NkNGNUM3RjdENjI0NDI3NkM1Q0E0QkU5MDE0REI1REE5NEVCMDA3MTE4QjUwODlFMDY0Mjg0QjE5NzNCM0QxQUE5M0NFMTMwRDI4NUQwNkQwM0Y4NkQ3MDY1MTQyODNDM0JDMUZBODI0NjBEMTk2OUJEODdBMEVFQkZBMUJFNjlEOUUwNUI1Q0IxNkVCRTA2RENERUVDQkUzNzczRUY0QTQyCitDQThGRjZFNQorNTNFOTYzMjI1MDhBOTY5NDE4QzZGOTEzRTYKKzY2QzI3RjA4NTRDNzA0MkZCRjgxQzc1MkMyREYxQTZDMDI5MEMzMTE2MzI4NjgzOTcxNkYwMTIwQzhBQzM0Q0JBNUMzRDE4QzAxRDQ5REIzNkNEMDU1NENDODdCRkRDNERCMTI4QTk4Mjk0NjhDOUZBMTg1NkYyNjM5N0E5Q0YyNUEwMjYwRUU3OEFCNUEyREFDMTI1MTdCRjkzMjExQkMxOUEzNUM5MTE5NEJENDVGNjAKK0FDOTRFNjAyCis1Rjk5QzFGMEE2NDA4RTQ3NDE3NzI2NEM1MDk4CisxNjBDQzY0NEU5RTAzQjVGRUYyQjI5ODU1Q0Q4MTcyNTE0N0M1NTgxMzg3ODA0RjAzQ0EzOTBBMjRBRDM5NUZDRjBCMUU4N0U5NThFQUJCNUJDM0JENDU1NDc5MzhGQkY1QUU1MEVDMjU0NjgzNEIwMUEwMEZCMUE3N0FDQjdGQTE2NTFGMDg2OEM5NDI3NTU0MDY4NURENkUwNUEzMEMwNEQ1QjkzNEE3NTQwMTVCMDE0OEZDMTI0REIwQjhERkJBMjg5M0Y4MDAyOEE0MkI5NzFEQzAwM0YwRDBFRTI1NTNCNzJDOUY5OTBFQTQ0QUU5QTg3MzEwRUE3MEUKK0RCMjEKKzkyRkNENTgxQzY5QkZFMTdDMUZFODRBRkE3OEEKKzUyNzM1MzA0Cis4QkREQjRFMDBCRUM5QTRDQTczREU0Nzc0RjY2CitERjc3Mzk1RjMzRDkzNDA1RDQ0MEJBMTg3MkE4N0Y5M0QyMDc3REYzRkYxQTFFNzhCQUJDM0NFQjI2MEYxODE2NjE2QkNGQzg3MThFQjYwRjM5RDI4NEUzQkE5RkQ2NzkwNTZFQTQ4QTRCREVBRTk3NDVDQ0M5OTE1ODI3NUZBNjE4Qzk4RjFFMDQ5Q0JGRDI2OTA1M0U2M0U2MUMyOTNENDExMzNCMDZFRDQxNDUyMDJGRDI3RkM3QTY5QTdCQTAzOERCRjlGRDQyMDBCNzJCNDE4MTAxOURFNzBGMDFGRDUxNUE1N0NCQjMzNzJFQTlERENCRDk0MTg4QzEKK0RDOUYKKzI2NTRDMDU3QUM3M0JDNDNDN0Q0NDgzQjc2NkRDMjEyQjQyOTkxNzUxRTUyMENFQkQ3CitEQ0UwMjlBQworRDYxQkFENUEwNkQ3OUExQkNENkY5QUE3MENFQworNEI5QTQ1MUE2RjA3RjMxODkyMjY0REE0Nzg4MDA4QTFFMDM2Nzc3Mjk1MEE5QzkwRjQ0QTk2MDBBNTlGMkU5MzAwNzM5M0FDMDM4RTVGMDZBQUY1MzI5QjQyNDUwQkNFQjg5ODJGNDBFMzBFN0I3NEIyMzhBNzYxQTIwNEI1NDU0ODZBNDcwMTNGNkVERDZGQ0M2OENBMDkyQzlBMjZGMEUzQ0JEMjZFMDUzNUZFMjVFMzVDQUU2OUIxODUwRDgzRkNGMURGQjAyN0JFQTBGMDQzMDYzNzZDRDk5NEVGOTJCQjJCRTVFMkYzOTczQUEzNTIwOEVDNkFFRDMyCis5ODQyCis0QkJCRTREMgorM0VBMEY0OThGRDU0QkVGRjA4OEI0OTA5QzMKKzdDRUJBQ0VFRUVCQTJGRTcwREM5QUM3QUQzQTM0MjE5Q0I0M0UyQjY1OEU1RjAzMDUwOEM4MzJFOUQ0QTk1ODJDNDgyOUUwMEE2M0ZGRjNBREY4Qjg0NjZBMDA1OEU0RDc2NDE4MDUxQzNDMUFDNDI2NDY3OThDNjRDOTk5OQorQkU2NTdBRTQKK0NBQTlGRTk1NDU2NDkxQzBDREU1NkE3ODNCRDUKK0UwOTM1QjlBNjAxMEE0MDcKK0IzNjYzRTk5Cis3MUExRERGQTI3MDAwNzEwNjZBQTlBMjU1NUNGM0UzRDFGOTMyRTZFRTA3QTFGODg5NDhDNDdGMDc5Njc0ODk5QTFCNQorMDBENTRGOUQxMEIwQzIyRTZDQ0RCOTVDQjI1ODRGODI2Qjg5QkJFNTc4RTE0MDlDNEZDRTg5ODgyNDcyQjgyNzUzRTJEODcwMzNEOAorQ0FGNENFNTM2NTc3RkIwQTVCODc2NDA5MzIxNzY4MUYwRDFFOUJBOEQxQTU2RTU3RDhFNzZCCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2hiCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoYgorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaGIgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ2IHB1dAorZHVwIDMgL0MwMDU2IHB1dAorZHVwIDQgL0MwMDU4IHB1dAorZHVwIDUgL0MwMDY5IHB1dAorZHVwIDYgL0MwMDc4IHB1dAorZHVwIDcgL0MwMDc5IHB1dAorZHVwIDggL0MwMDgzIHB1dAorZHVwIDkgL0MwMDg0IHB1dAorZHVwIDEwIC9DMDA5NyBwdXQKK2R1cCAxMSAvQzAwOTkgcHV0CitkdXAgMTIgL0MwMTAxIHB1dAorZHVwIDEzIC9DMDEwMiBwdXQKK2R1cCAxNCAvQzAxMDUgcHV0CitkdXAgMTUgL0MwMTA4IHB1dAorZHVwIDE2IC9DMDEwOSBwdXQKK2R1cCAxNyAvQzAxMTAgcHV0CitkdXAgMTggL0MwMTExIHB1dAorZHVwIDE5IC9DMDExMiBwdXQKK2R1cCAyMCAvQzAxMTQgcHV0CitkdXAgMjEgL0MwMTE1IHB1dAorZHVwIDIyIC9DMDExNiBwdXQKK2R1cCAyMyAvQzAxMjAgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMCAtMjA3IDc5OCA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjlCMDA4QkRFQTc0NTYwMjUyMjYwRkI0MEUzMTBEMTczN0EKKzg1NDUwQ0RFMjNFOEEyNDk2NzU4QjQ5QworNEI3NUU5NzBBNjc5MzdGQ0RECitCREQ0NTUwQgorNTVGOTc0NTkzREE0MDdBMEMyRTJDODhGQTkKKzMzNjA4MkM4RDA4MjBCNDQ0NEZDQzEyOEY3QUFEQzAzMkJGODE1NUYwMjJFODcyMUYwMjdDMkQ3NTE3QjNGCitDNEYxMkE2MworNTM5NjUyMUU0MkEyRDI2QjZBRjIyNjE1NThCMgorREI5Q0M0MEFCQTUyNUU0OEM1REI3RjU2MkE3NzQyOEFEMTgxOTE2NjY0NzM5MDI1NkZCNDYwQTUxN0ZCNDc5QUE0RTIyMTMzQzkyNkQ5MDVDRjFENzk4Q0M4NjMzQjMzRjY0OTVDOTE1OUQyQzEyRThCOTdCOERFNzFFMTRFQjYxRjlENEVFOTE5NjQ1MzFBODEzNUZDRUFCNTIyNjk4NUYxMzdDQTk3QzlFOURBRkQyMkYwMzI4MUI4RjQzQUZENEY5MzMwRjYxMzAwNTNGNkE1NDhGRjMwMzFFRENFNTc1MjBBODUwMjI4MjkyMEVGMjcyOAorQzEwRDg0RjEKKzIzNDAxMTM1MDBCM0NCNjQ4MEM1OTA1QTYwCisyNEJEMzIwODREODdGRTgzQjIwNkY3QjZCQzYwNjlDNUEwMjg2RDJFNDQ2RDI5QUY5RjNCRkY5MUYzQTNFMjVFQTU1RUIxMTcyMTczRjFGNEM3RDI5NkQ5MUU2MDM4Q0ZEQ0I1QkJCMUI3QkEKKzM3Njg0MkYxCiswN0YzOEJBRTkxRTczODQzQjhGN0E4MDU1MEUzCitBODlBQThBMTI1RkIyNTZFMjA5MjMzNDM3QTIwQjVCNzY2ODU3MzYyOTYzNDMwM0YzRDNGNjkwREZDNzdFRTUyMjM3OTA4NkZCN0I1OTcxNkMwN0JCODQ2MzZGOTI3MDNDMDE1ODM3NENFNDdGNThDN0ZCM0JGRDQwMjE5MDA0QjlCMTQ0MTk3MDY2OTlGNTM2NDQwNzAyNDhCQTE1NjhBODNGNzgzQzBENUFEQTJCMTIyOEZFREVCNTY5MjM5Q0M1MTVGQ0NCMjk2MjAwQ0U2RDI4Q0Q4NTlCMzBFCis1NjFCOUEzMQorRUFFOTJGRTkyNTNGRjFGRkZEOTVDODI5QkEKKzE5MjQ3MzNBQzE4ODM5OTYyNzUyRjFFNEFCN0U4QzlENzU4NjIwNUVCREQxRDYwNDI1Q0NERkREMjRBMTQ0RDUyMDc0QTlBMTZFQTY3NjExMDcwMkMyQjVGQTZDNEU0QjY5NDFFQjM1RTYxQzQ2Nzc5N0JGMzU1QkI4MjM5ODYxODlFQ0JCMkQ3QUREQTMyOUVCNTc4RUMzNTRFQjgyMkNFQkJBMEQzQkVDM0QxMTdDNkNDQTg1M0MyQzVGMDYKK0U1RTIyNjVBCitBQzBCQjE4QkJCQjk2QjExRTFEMkZEQTdCODUxCis2RkYzMjk1N0RCOUIyNUFGQURDNDdDNUVGRERCRTA1OUI0M0QwQjY4ODk5OUZGOUIwMTMxMkRCOTY5MjVENjBDRTYxMkU5Q0I5QjlGNDRDREM4NkI2QkIyRDUyRjRCODM3MzE1NDgwNEExNkZENkRDQUFFNTU0RDk2QTQ3NUFGRjIwMUQ2MkIyNDlCRTAzRjVBNDFBMkM1NTZFRTZFRTU5RDQ2RUNDMUFFREJDQzIxOERDODc3MDg1N0UyRjIxRENENUIzNjM3RkU3Rjk5QkI2OUUKKzc5N0Y3MjJDCis3NEI0MEEzRUU4RDY1RDZEMjc4OTE2ODI0RTQ1CitFNjU0MUFBQ0ZCRDQ5ODE5ODUzNzJBMkE5QTdEQzFBNTcxRTU5OUY5MEY4OEE2NzRGNzIyMURGRTZBNzREQzk1NTA3NzUzQjgwRTU5MTI1NDI1N0I2OTBERjRCRUMzNDg3RjNBQURBRUJDQ0FGMzQ2QTJFRTVDNjg4OUY4QzBCMjQ4MjkzQ0JEOERGMEIwQTg0RTFDMjEzODU2NDNFMTlGMUI3MkM1MzIxMTkxQzEwM0U3NEQ0QkM3Nzk3ODY2OEMzOUJCMDk4MjhEMzE5MUM4MTgwQkIzNTBGNTUxNTI5MzcyOTE0RjNFRjJGQjg1QjEyOTFENTgxQ0M5NkMKKzM0NjIKKzA2RDdGMkQ5CisxMUMyRjRCODc4MjVBQ0U4NDhGNjRCMjBDMgorNEFERUFBQjQ5RDI3N0Y2QUQwQzY1RjYyNzAxNDU0Q0Q0OTY5QTRBMkNBNDhCQkNBNUFDQTU1Q0E2MDM0NjlBQzZBNDM3Q0VDQ0M5RDAyNkU1RTRDNUY2OTI0RDY5MzE1Q0Q0NDEwNEU2Mjk0MkVENzhERTg4QTU3QkNGMjI0QzBFNDczRTVEOTk3QzVBRDBFNTcKK0I1QzQzMUJECis5RkMyQkVGODk4NEIwMTc4QTI5ODJEQ0I0NTMzCisxMjA3M0M3RTAzOUNCNUExQTlBRjYzQzRCRkY0QTVGMzZDODQ2OUU5RTkyQTk0OUZEQTBGQ0VBNjlFQ0I3MTM4ODNGRDkxMjMzMjkxQzVGQUNCNDRFNjUyMzMyQzI3Q0EwOEMxNTM3RDYxNjdCRjVDMERBQjJBNEJEMDBGNDEzNDhCMjA3MEU3RUNGQzBEM0RFRjc5MUI0MzlFREZEQzdCQ0Q4MUVFQzI4NkRCMTlGOTdFNUI3NzYxMjM2NTA5NTk3OUY0NkM3MTI3ODA1NjFDRkVCNUE4N0ZBQkE3NjVCRTMxRkEyRDM5NDRDQUE2M0NFRjk1NUQ2RkQ0RUYKKzE4MEEKK0JGQ0VGMEIxCitEMDI3MDREQQorODRCN0I2RkRGMjU1RjkzNzkxRjk0Rjk0QTUKKzc0RDRFNzI3Q0M3RDFDOUJBNTcyNzY3NTQwMDg1NDdGNjUxM0UyMTAwNENBMzdEQjg3MkM0NDEwMzI4MEIwNDhGQ0I5MURFMTVBNjkyMEZGMEM1MzFFMUI2QjI4OTRCREQ1Nzk1QjdGRjk1MkIzNzlBM0ZBNTFDRjU5MENDQjAwN0M1NDI1Qzc0NTU1OTM3NjMzRjcyNjA3NjkyRkZGMDhFNEIwCis4RTE3QTI2OQorNERFQUZENEY5MzczRDc1MjA3MjI1NTcwMUYKKzJCQURFMjgzRjQyOUVFMzM2QTNDMzkyNkQ1OUJBMjgxN0Y4NjM5NUU1RTkzRTM3OTQ5QUZGRDRDQzhERDlDOTBDODY1QUJBMTQ5MjJGMEJDMTgwNkExNTk2QzYyREY1MUIwMzdCREUzNDQ4OTk1Q0M1NkJFN0RGRjBENDM2MzVEQkZCQTIxNjBFNDhEMUE4QTFERTVDRUZFRDkxRTI4MjEyQUU4RjA2OUUxMTA4RkQ4NkU2QUI0NTUKK0Y3Q0FERTEwCis0RTUyRTc0RjMyNjZBRkQwOEU0MjZEQzQzMworMzkxQUI2MjJGQTc3RENGMTlGQTExMjhBRUEzMzExQ0ZGN0QzRUQyRjQ2MjBFODQ5RTg5Qjc2Qzc0QzdFQUZGMjU2RDU0OUJDQ0Q5Q0I3NjZENjJGNzFEQ0E1NTNGQTQzODEzNDcwOEVFMENBMjBDQTVGRDNEREU5Q0MzQkNENTU4MzFBODUwNEQyNDE2QkEyOEMyMTA1NTU4RDdCRDcxQUI4QUM2OTAxNDc0MERBOTU5NjQ5MTMxMzk0Cis0NTdCOTg0NAorMjdDMjM0MEQ4RUY2NjY4MzlEOEVEOUZFNzkKKzU5RUUyRUU1ODQ2NDdCM0YwMjM4NDVBNkNENTkxMzEyOTQ0NUQ5MTdFMkJGMUVGMzQ5MEMxODFFMzk5MUE0RDc0QzEwQzdENjQzQTBDN0I5MTZDNERFOTMwNDlCMjNEQkEzOEU1NjM0QUExNjU1NTg5MTI3M0NGNTU4OTExRUEwM0Q1NDRBN0NDOUEwQTExRkYyNjk1QzJFOTk4RAorQkQwNkM0Q0EKKzA2MzJEMUZFQzQ1RjVEQjQwNjFENTE3MThBCis0MTdEQUE5N0RFOUVDRERGQTI2OUFDRDZERTU3NjIxODk1MTcxQjY3OEQ1NzMyMzEyRjgyQzM0NDAzNTg4RkUyREU3RjlDRjZFM0YxOEUwQjYyRkVCMUQyREZGM0VEQzRFODAxRDRFOAorRDdDNUY2MjUKKzFGNUQxQjhCNEJFNUEwREJCODQyRjA3ODEwNkQKKzU0QTMzRjk3NTJENzZENEM2Q0U1QTEyNjdENTZFQUQ0NzQwNTczOEMwMEMyNkQ5ODJERTYwRThGQzEzMkU4QkFCNDBFNzdCRjQ1QjM5MkZCMDM4Rjk3OUExRThCRTBENDg4QjdFRkRDNURGNEFDNDMyOUVDNkEzMjM0NUVENEE5QTNBQjVDQjkzN0M2QUQ3NTFDMEU1MDVCQ0RBMjVGQzY5NzMwOUI0OUFBRDRFQkJBM0RDRjdCQzRGRDQ0QUI5NTY2NDg4MEU1NDIzQUU4REIyOTQ5OTAyRUQxRUMwNDY2RDM0N0NFRjNDQUQ0MjQwNEFFMzMxMjU5OEJFMQorQUJCNAorMTFFQkRFOUZFQjc4MzJGRTQ4NUQ5MzI0OTJDNkMzOEU5MDg5RDE4NTk2NDU5MTdEMkExRjE1NjcKKzNFNkFGMzdFCitCQjVGN0VCNkVBRDU3QUY3MTlGMzU1MkQ4MDIwCis0MjFFREUwREQyOTc1QzE4RUY4QzA5NEQ4N0QxMjlBOEE5QUMyRUYyM0UyRkUzM0UzQzYxNEM3MUNFQzkwQkM0RkE4ODNBOUIyRkQxRjhCNDdBMUYxRTUwRjZDMjg2QUMzNEY2ODBBQUMxMzgwQUUwOEZEMjg4MjU4MDZFOTZBOTUwNzZBMjQwQTM1RDNFQTE5QTIzMkJERTkzODg4QzAyM0UyQzg1NTZCQkQzOUQzQTFGQ0RFQjIwM0EyODdCQjEwRkE3RDU5QzIzMkQ0QQorNzU2OTk5QjUKKzcwNjNDQzk2M0JDRjgyMkU3MDNFODZGOEEzCitDNDMyNkM0Q0FBQTY5RjM2QTFDMDg3N0QxNjZFN0QyMzczQ0JBQjVENkQ1NTZBNzlEREU1QUREQkU4NDdCMUYyOEYzMkI0MEQ4QzJBMEVGMDcyNUQ2NkFGRUU3MTg5QTREOEVBOTU2NTFEQzQwRTJBNTgyQkREOUQzQTMzMjJCMTgxRDgzMjc5QUYyMQorMjVCNTUwNUEKKzQzNkZCQ0ZDOUE4NjEwQkZFMTJBMzkxOTc1NUMKKzQ4QjRGNzExOTkyRTYwNEQ0Rjk1ODE5OUI0MDAzMzg0RjBBOTQwQTQ1OUY4MDEyNURFMkQwN0VDQzJBQkJENEE0NjAwQ0Q1MDBCRTEwQzQzMzI3MTY5Q0MzNjc2NjEyNEQ3MzAxRjJBNkE3NkQxQTY0QjE1OURENTI4RDYzODg2MDM5OTM0Mjg4NDE5MTIzNzEyMTdFRDdCQTMyNDA1NkIzRDVBNzAxRjJGNDAwNTQ1Q0NFQzQ3ODAwRTY1RDkzQUVDQUNERDk3RTk5RDJFN0Q1NzgxOTJGNzlDQUZCQjY0RjAKKzMxNTZGN0M0CitBREU3Q0M0Q0NDODc1NzYxQkREOEEwNkRGRAorNzBDRERCOTNDMkQ3MURFMTc2NzE0MUU1RDYwQTgzOTRFOUZCRDk4N0RDQjU3RTg0Q0I2NjhDRTc4MkI1N0U4RUY3QjNGOEU4NUZCMTkzQjE3QkZEQkIwN0MxN0Q0QjgyQTE4QzlDQ0M4MTEyNjQzRTc2NDYzNkU3NjU0OTM3MEVBQURGN0Y2OTRFQzgyQTE1RDJCMTc3MzFCMTg0OTFGMTZBN0JGRjU1MTQ4Q0Q3NjU0OAorMjM4ODc2MDQKKzg0MjBGODBFMzVEOEMwOThCQkMzQjY3NkNCNEMKK0NBN0I1QUU4QkE3MzRFNUMyODBBQjM5NkE1OTY2NTQzRDI5NzgwOUVDQkRFQ0E0MDcyNzk0MERGQjI0RjU0NjdGOTI1RThFRDkyNkQ2Nzg0QjA4RkQzOTNFOUVGNzY0NDI2Njg3N0U1NkY2ODZBOUI3MkM4QjlGOEJFMUMzMzJFOEM1M0U2RTVENzYwQjIxNTFGNkRBOTcwMUVGMUQyMjM2MjdCRDY0ODVDNTg2RDg4QjQ1RDE5RDM0NjFGMDNEMkMzNTIyQTg1NjIzNTBGRTNBRDlGOEIwODIzODNDNDg3NjZFMDE3RDg2RTlBNDJFMDM2CitDQzVEOTEzNworQTZDMTk4RkI5RkM1MTNERTdGQUZERjM3ODQKK0RDMjZCODVCN0YwQUNBMzg4MjREOTY0NkRDRDQyQjk5QjFCQ0Y3RjBERDJFNzM4NUIzQkE2MDA3MURFNzNBNTlGOTMyNjE3NTQyREY5OENFMTEzQkI0RThCQTAyNkJBMjUxNzgwRjMyQjg1MzI2MzFENEU3MkY1MkI0RURBQTQyNUQ1NkZFMEUKKzU2M0M0QzAwCitBMjJENDc2NzQxOTc3M0NDMzFDQTk3QjBEODZGCitGMkJDMzk5QjcwQTNERTE4REQ0QUIxREJCODAxMURGMTM5NkI0OTAzMEZCMjc3NDY1MUIyM0QyOTJFOTMyRTY2ODlCNTNDRjBENDAwM0U1QUY5QzdEQzZBMDAyRURDQjNENkYxMzNBMEE2NjNEMTAwMDJFNjkxNEY5NjEyQTQ3Q0QwNDVBNzFBQTI4REMzNkQ0MTFDNEM4RDQzMTNGOTQ3NzUwMzY1MjJBNDYwNjI1MEU1MkY5RkE4NjJBNEMyNjU0NTE1QURFQzEzNDlGMTY4RkNFQjg2QUZDOTNFQzQzQjVFNkFFMzY4RDQwMjBBQUU5RjRFOEEwREYxQUYKKzUxQzAKK0JFOTcwQkIyMzUzMUU2RjY2RUMyOUZCNDEyNTQ3MDQ1ODg4NUNCNjcwNDg1CitFNjVFNEQwRQorNDMzQTdFODFDNTU3NjA1QUE3NTIzQ0UxODVDMgorRENFQkYxNEFFNUZBQUI2MworOEI3REJFMTYKKzI2Mzc4MTU5OEJGRjUwNjNBREU1RUQ3MDNFMUQ5QzA2RTgyRTNENkIzOTk0NTk1Q0FDOThDMUEzNTdCQjdCNEU0RjYzCiswOEQ0MUIzN0Y0NkMzRDkyODY3RTlENzFDNkQzNzhBQUQyMkIwMUZFQzQ5REZFREYwOTUzRkYwNTlFM0M3MDE0MjE0NUIxRkJCRUZFCisxNzNGOTU1QUMzRDAzOEQ5Mjk2MDgzMjE4Nzc3MzZENUJBMTdFQzBDMzYyNkRBNzYxRTA0RDEKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMTA2IDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjhGMTYxOTU0ODk2NDg5OTNCOUM0RDNCNTM0RkE4ODdDCitERUY2MDVGQTg3Qjk5MUY0RDIwQThGNzhEQUNFCis1QTU0QzA3MEUwM0Q1QzU5RDlEMkQzRTA2QjA5Q0VFMDI4RDY4QjYyQUIzQUVDNDNDMUREMjBCQTcwRDI4ODU5N0Q5QkQ4RTA2ODE4RkY3NjRFQkFCNDM2NzIzOTg4RThEN0NBNTlFMTZEMzkwMzI1MTZCRkM1RDU1MkFDREVFQzZCRTkzOEJFRjJGNDNDRkZCQzgxMUMzNjI2QzRERjVGOENGMDgwNjc2NTIwQjUxQzYwQ0VEQUQxRkU2QzkyRDE0MzFDNzAyMTc0Q0U1MTdBOEZBOTM3N0QwNzVBMEI2ODMzREFCMTAxREI2NTM5N0YxNDE5RUY1RjAwMTYKKzAwNEYKKzZGMDgyNEY5NjU3QkI0RjFDOEY5ODE3MDk5NTY4NjVGNjg1NUVGQUUKKzkyNDJBRDU1Cis5MUJCQkVFMTYzRDg0NEREQTg5NEUxMzE5MEM5CisyNDgwNDM5RTRDNzFDQURBCitCRDA0M0E5QgorQTMxNUNBRjcyNjUyQUE3RkU2REIyRTg0RDgyQTYxMTFDRTRERTkwQzAyREEwQUZGRTI2MjA5MjIyNjJBNDVBQjRFRDAKK0VFQzlGNDUyMEREMTI3MDM0NDJGN0QwMjhENDUyNkJEOEI3NzFFMDlGQkUxMUIyNzQ5RTJEMzkwNjg5NEU4RDRCRkQzRjM3OUYxNEMKKzNDODc0RjU1MDYwNjk2NUUyMkZFNDg3QjI0N0I1QzJEMDY3Mjg0OTBDOEYyQTNCNTg4Q0RGQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTJiIDEyLjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNGIgMTQuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgQ291cmllcgorL3dzdDpjb3VycHMxMCAxMC4wMCAvQ291cmllciAvd3N0OmNvdXJwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwwZTE4MjYyMzE4MjQxOTA3MDEwODAxMDkxODIxMTYxYjIwMTQyNDFlMDExOTIyMjQwMTBkMTgxNDI1MjcyNDFjMjExYTAxMGUxODI2MjkyMjI0MWUwMTBmPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDE4MjQxOTIyMjQyMDE0MjExNjE4PiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwNTA2PiA5MzQ2IDEzMzAwIDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjgwIDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyODAgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI4MCAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyODAgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDE0YiBTRgorPDA4MGMwYjE2MGUxMjExPiAxMjcxIDE0NTggMCAyMDU1IC0xIHMKKzwwMDAzMDIwMDA2MGMxNjEzMGMxNDBkMDAwYzE3MGExMDEzMGYwYzE1PiAyMDU1IDE0NTggMyA0MjIyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDYwNzA5MDU+IDEyNzEgMjA4NiAwIDE4NjYgLTEgcworPDA0PiAxODcwIDIwODYgMCAxOTI4IC0xIHMKKzwwMD4gMTkyOCAyMDg2IDEgMTk4NCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MDAxMjFiMTgyNTE4MDAxODJhMTQyMDIzMWYxODI1MDAxNDI0MTgwMDE5MjQyMjIwMDAxNDIxMDAyMjFmMTcxODI0MDAyODE4MjQyNTFjMjIyMTAwMjIxOTAwMjExODI2MjMxODI0MTkwMDE0MjExNzAwMTcyMjAwMjEyMjI2MDAyNDE4MjMyNDE4MjUxODIxMjYwMDI2MWIxODAwMjUyMzFmMWMyNj4gMTk4NCAyMDg2IDE1IDk1MzEgMCBzCis8MTUxODI2MjkxODE4MjE+IDEyNzEgMjMzMCAwIDIwMjcgLTEgcworPDAwMWExZjIyMTUxNDFmMDAxNDIxMTcwMDI2MTgyNTI2MDAyNTIzMTgxNjFjMTkxYzE2MDAxNjIyMjAyMDE0MjExNzAwMWYxYzIxMTgwMDIyMjMyNjFjMjIyMTI1MDQ+IDIwMjcgMjMzMCA3IDYyNDIgMCBzCis8MTIxYjE4PiAxMjcxIDI2NzcgMCAxNjMxIC0xIHMKKzwwMDIxMTgyYTI2MDAxOTE4MjkwMDIzMTQxYTE4MjUwMDE2MjIyMTI2MTQxYzIxMDAxNDIxMjEyMjI2MTQyNjE4MTcwMDI1MTYyNDE4MTgyMTAwMTcyNzIwMjMyNTAwMjIxOTAwMTgyYTE0MjAyMzFmMTgwMDIxMTgyNjIzMTgyNDE5MDAyNDI3MjEyNTA0MDAwODE5MjYxODI0MDAxODJhMTQyMDFjMjExYzIxMWE+IDE2MzEgMjY3NyAxMyA5NTMxIDAgcworPDI2MWIxODI1MTg+IDEyNzEgMjkyMiAwIDE3NDcgLTEgcworPDAwMTgyYTE0MjAyMzFmMTgyNTAyMDAyYjIyMjcwMDI1MWIyMjI3MWYxNzAwMWIxNDI4MTgwMDE0MDAxOTE0MWMyNDFmMmIwMDFhMjIyMjE3MDAxYzE3MTgxNDAwMjIxOTAwMWIyMjI5MDAyNjIyMDAyNDE4MTQxNzAwMjYxYjE4MDAyMjI3MjYyMzI3MjYwMDIyMTkwMDIxMTgyNjIzMTgyNDE5MDAxNDIxMTc+IDE3NDcgMjkyMiAxNyA5NTMxIDAgcworPDI5MWIxNDI2MDAxODE5MTkxODE2MjYwMDE2MTgyNDI2MTQxYzIxMDAyMjIzMjYxYzIyMjEyNTAwMWIxNDI4MTgwMDIyMjEwMDI2MWIxNDI2MDAyMjI3MjYyMzI3MjYwNDAwMGMxYzI0MjUyNjAyMDAxMjBhMGYxMzExMTIxMDBiMDgwZDAwMjYxODI1MjYyNTA0PiAxMjcxIDMxNjcgMTAgODA5NyAwIHMKK0dSCitHUworMTI2MyAxMDQ3NyA5NTIyIDEwNDc3IDk1MjIgMzM3MCAxMjYzIDMzNzAgY2xwCit3c3Q6Y291cnBzMTAgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MjQ+IDE0NDkgMzUwNCAwIDE1NTUgLTEgcworPDIwNmU2NTc0NzA2NTcyNjYyMGIxNzQyMDU0NDM1MDVmNTM1NDUyNDU0MTRkMjBiMTQ4MjA2ODcwNjk3MzcyNjQ3MT4gMTU1NSAzNTA0IDUgNTA1MyAzMiBzCis8NTQ0MzUwMjA1MzU0NTI0NTQxNGQyMDU0NDU1MzU0MjA3NDZmMjA2ODcwNjk3MzcyNjQ3MT4gMTQ0OSAzNjgwIDQgNDIwNSAzMiBzCis8NTI2NTYzNzYyMDIwMjA1MzY1NmU2NDIwMjAyMDIwNTM2NTZlNjQ+IDE0NDkgMzg1NiA3IDM0NjMgMzIgcworPDUzNmY2MzZiNjU3NDIwNTM2ZjYzNmI2NTc0MjAyMDRkNjU3MzczNjE2NzY1MjAyMDQ1NmM2MTcwNzM2NTY0PiAxNDQ5IDQwMzEgNSA0NzM1IDMyIHMKKzw1MzY5N2E2NTIwMjAyMDUzNjk3YTY1MjAyMDIwMjA1MzY5N2E2NTIwMjAyMDIwMjA1NDY5NmQ2NTIwMjAyMDIwMjA1NDY4NzI2Zjc1Njc2ODcwNzU3ND4gMTQ0OSA0MjA3IDE3IDYwMDcgMzIgcworPDYyNzk3NDY1NzMyMDIwNjI3OTc0NjU3MzIwMjAyMDYyNzk3NDY1NzMyMDIwMjAyMDczNjU2MzczMmUyMDIwMjAyMDMxMzA1ZTM2NjI2OTc0NzMyZjczNjU2Mz4gMTQ0OSA0MzgzIDEzIDYyMTkgMzIgcworPDIwMjAzODMxMzkzMjIwMjAyMDM4MzEzOTMyMjAyMDIwMzgzMTM5MzIyMDIwMjAyMDMxMzAyZTMwMzAyMDIwMjAyMDIwMjAyMDM3MmUzMTM0PiAxNDQ5IDQ3MzUgMTkgNTY4OSAzMiBzCis8MjQyMDZlNjU3NDcwNjU3MjY2MjBiMTc0MjA1NDQzNTA1ZjUzNTQ1MjQ1NDE0ZDIwYjE0ODIwNjg3MDY5NzM3MjY0NzEyMGIxYjEyMGIxNzMyMDMxMzYzMzM4MzQyMGIxNTMyMDMxMzY0YjIwYjE2ZDIwMzE0Yj4gMTQ0OSA2MTgxIDEyIDc3MDMgMzIgcworPDU0NDM1MDIwNTM1NDUyNDU0MTRkMjA1NDQ1NTM1NDIwNzQ2ZjIwNjg3MDY5NzM3MjY0NzE+IDE0NDkgNjM1NyA0IDQyMDUgMzIgcworPDUyNjU2Mzc2MjAyMDIwNTM2NTZlNjQyMDIwMjAyMDUzNjU2ZTY0PiAxNDQ5IDY1MzMgNyAzNDYzIDMyIHMKKzw1MzZmNjM2YjY1NzQyMDUzNmY2MzZiNjU3NDIwMjA0ZDY1NzM3MzYxNjc2NTIwMjA0NTZjNjE3MDczNjU2ND4gMTQ0OSA2NzA5IDUgNDczNSAzMiBzCis8NTM2OTdhNjUyMDIwMjA1MzY5N2E2NTIwMjAyMDIwNTM2OTdhNjUyMDIwMjAyMDIwNTQ2OTZkNjUyMDIwMjAyMDIwNTQ2ODcyNmY3NTY3Njg3MDc1NzQ+IDE0NDkgNjg4NSAxNyA2MDA3IDMyIHMKKzw2Mjc5NzQ2NTczMjAyMDYyNzk3NDY1NzMyMDIwMjA2Mjc5NzQ2NTczMjAyMDIwMjA3MzY1NjM3MzJlMjAyMDIwMjAzMTMwNWUzNjYyNjk3NDczMmY3MzY1NjM+IDE0NDkgNzA2MSAxMyA2MjE5IDMyIHMKKzwyMDMxMzYzMzM4MzQyMDIwMzEzNjMzMzgzNDIwMjAyMDMxMzAzMjM0MjAyMDIwMjAzMTMwMmUzMDMxMjAyMDIwMjAyMDIwMjAzNzJlMzMzMj4gMTQ0OSA3NDEyIDE3IDU2ODkgMzIgcworPDI0MjA2ZTY1NzQ3MDY1NzI2NjIwYjE3NDIwNTQ0MzUwNWY1MzU0NTI0NTQxNGQyMGIxNDgyMDY4NzA2OTczNzI2NDcxMjBiMTUwMjAzMD4gMTQ0OSA5MDM1IDcgNTU4MyAzMiBzCis8MjAyMDM4MzEzOTMyMjAyMDIwMzgzMTM5MzIyMDIwMjAzODMxMzkzMjIwMjAyMDIwMzEzMDJlMzAzMDIwMjAyMDIwMjAyMDIwMzgyZTMwMzc+IDE0NDkgOTIxMCAxOSA1Njg5IDMyIHMKKzwyNDIwNmU2NTc0NzA2NTcyNjYyMGIxNzQyMDU0NDM1MDVmNTM1NDUyNDU0MTRkMjBiMTQ4MjA2ODcwNjk3MzcyNjQ3MTIwYjE1MDIwMzAyMGIxNzYyMDMwPiAxNDQ5IDEwMDcyIDkgNjExMyAzMiBzCis8MjAyMDIwMzcyZTMwMzU+IDE0NDkgMTAyNDggMyAyMTkxIDMyIHMKKzE3IExXCitOCisxOTMxIDQ4ODYgTQorMTkzMSA1Mzk0IEwKK2RwCitOCisxOTg0IDUwODIgTQorMTg3OSA1MDgyIEwKKzE4NzkgNTA4MiBMCisxOTMxIDQ4ODYgTAorQwore30gLTEuMCAtMS4wIHNvbGlkRmlsbAorZHAKKzAgTFcKK04KKzE5MzEgNDg4NiBNCitDCit3c3Q6ZHV0Y2gxMiBTRgorPDI0MTgxNjE4MWMyODE4MDEyNTIyMTYxZTE4MjYwMTE1MjcxOTE5MTgyNDAxMjUxYzJjMTgwMTIyMjEwMTI2MWIxODAxMjQxODIwMjIyNjE4MDEyNTJiMjUyNjE4MjA+IDE4NTYgNTY0OCAwIDYxMTIgLTEgcworMTcgTFcKK04KKzI1MzIgNDg4NiBNCisyNTMyIDUxNDAgTAorZHAKK04KKzI1ODUgNTA4MiBNCisyNDgwIDUwODIgTAorMjQ4MCA1MDgyIEwKKzI1MzIgNDg4NiBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorMjUzMiA0ODg2IE0KK0MKKzwyNTE4MjExNzAxMjUyMjE2MWUxODI2MDExNTI3MTkxOTE4MjQwMTI1MWMyYzE4MDEyMjIxMDEyNjFiMTgwMTFmMjIxNjE0MWYwMTI1MmIyNTI2MTgyMD4gMjQ1NyA1Mzk0IDAgNjI2OCAtMSBzCisxNyBMVworTgorNDQzOCAzNjE1IE0KKzYwMTUgMzYxNSBMCitkcAorTgorNDYzNCAzNTYyIE0KKzQ2MzQgMzY2OCBMCis0NjM0IDM2NjggTAorNDQzOCAzNjE1IEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCis0NDM4IDM2MTUgTQorQworPDI2MWIxODAxMjYxODI1MjYwMTI2MmIyMzE4MDExNDIxMTcwMTE3MTgyNTI2MWMyMTE0MjYxYzIyMjE+IDYwOTAgMzY2NiAwIDg2NDcgLTEgcworMTcgTFcKK04KKzU4ODYgNDcxNiBNCis2ODYyIDQ3MTYgTAorZHAKK04KKzYwODIgNDY2NCBNCis2MDgyIDQ3NjkgTAorNjA4MiA0NzY5IEwKKzU4ODYgNDcxNiBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNTg4NiA0NzE2IE0KK0MKKzwyNjFiMTgwMTIzMTgyNDE5MjIyNDIwMTQyMTE2MTg+IDY5MzcgNDc2NyAwIDg0NDIgLTEgcworMTcgTFcKK04KKzE4NjIgNzUxMiBNCisxODYyIDgwMjAgTAorZHAKK04KKzE5MTQgNzcwOCBNCisxODA5IDc3MDggTAorMTgwOSA3NzA4IEwKKzE4NjIgNzUxMiBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorMTg2MiA3NTEyIE0KK0MKKzwxNjFiMTQyMTFhMTgxNzAxMTUyYjAxMDMxMT4gMTc4NyA4MjkxIDAgMzE0OCAtMSBzCisxNyBMVworTgorMjUzNiA3NTEyIE0KKzI1MzYgNzc2NiBMCitkcAorTgorMjU4OCA3NzA4IE0KKzI0ODMgNzcwOCBMCisyNDgzIDc3MDggTAorMjUzNiA3NTEyIEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCisyNTM2IDc1MTIgTQorQworPDE2MWIxNDIxMWExODE3MDExNTJiMDEwMzI1PiAyNDU3IDgwMjAgMCAzNzgzIC0xIHMKKzE3IExXCitOCiszNjc1IDc1MTIgTQorMzk4OCA3ODUxIEwKK2RwCitOCiszODUxIDc2MTQgTQorMzc3NyA3Njg4IEwKKzM3NzcgNzY4OCBMCiszNjc1IDc1MTIgTAorQwore30gLTEuMCAtMS4wIHNvbGlkRmlsbAorZHAKKzAgTFcKK04KKzM2NzUgNzUxMiBNCitDCis8MTYxYjE0MjExYTE4MTcwMTE1MmIwMTAzMjA+IDQwNjcgNzkzNiAwIDU0ODYgLTEgcworMTcgTFcKK04KKzU4NzggODkwMSBNCis3MzA1IDg5MDEgTAorZHAKK04KKzYwNzUgODg0OSBNCis2MDc1IDg5NTQgTAorNjA3NSA4OTU0IEwKKzU4NzggODkwMSBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNTg3OCA4OTAxIE0KK0MKKzwyMTIyMDEyNjE4MjUyNjAxMWIxODE0MTcxODI0MjU+IDc0NTUgODk1MiAwIDg4MjYgLTEgcworMTcgTFcKK04KKzYzMzYgMTAwMDMgTQorNzM4NyAxMDAwMyBMCitkcAorTgorNjUzMiA5OTUwIE0KKzY1MzIgMTAwNTUgTAorNjUzMiAxMDA1NSBMCis2MzM2IDEwMDAzIEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCis2MzM2IDEwMDAzIE0KK0MKKzwxZDI3MjUyNjAxMjUxYjIyMjkwMTI2MWIxODAxMjQxODI1MjcxZjI2PiA3NjEyIDEwMDUzIDAgOTM1MCAtMSBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgQ291cmllcgorJSUrIGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMjUpIDI1CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzQgcHV0CitkdXAgMyAvQzAwNDAgcHV0CitkdXAgNCAvQzAwNDEgcHV0CitkdXAgNSAvQzAwNDQgcHV0CitkdXAgNiAvQzAwNDUgcHV0CitkdXAgNyAvQzAwNDYgcHV0CitkdXAgOCAvQzAwNTAgcHV0CitkdXAgOSAvQzAwNTMgcHV0CitkdXAgMTAgL0MwMDU4IHB1dAorZHVwIDExIC9DMDA2NSBwdXQKK2R1cCAxMiAvQzAwNjYgcHV0CitkdXAgMTMgL0MwMDY4IHB1dAorZHVwIDE0IC9DMDA2OSBwdXQKK2R1cCAxNSAvQzAwNzAgcHV0CitkdXAgMTYgL0MwMDc3IHB1dAorZHVwIDE3IC9DMDA3OCBwdXQKK2R1cCAxOCAvQzAwNzkgcHV0CitkdXAgMTkgL0MwMDgwIHB1dAorZHVwIDIwIC9DMDA4MiBwdXQKK2R1cCAyMSAvQzAwODMgcHV0CitkdXAgMjIgL0MwMDg0IHB1dAorZHVwIDIzIC9DMDA4NSBwdXQKK2R1cCAyNCAvQzAwODkgcHV0CitkdXAgMjUgL0MwMDk1IHB1dAorZHVwIDI2IC9DMDA5NiBwdXQKK2R1cCAyNyAvQzAwOTcgcHV0CitkdXAgMjggL0MwMDk4IHB1dAorZHVwIDI5IC9DMDA5OSBwdXQKK2R1cCAzMCAvQzAxMDAgcHV0CitkdXAgMzEgL0MwMTAxIHB1dAorZHVwIDMyIC9DMDEwMiBwdXQKK2R1cCAzMyAvQzAxMDMgcHV0CitkdXAgMzQgL0MwMTA0IHB1dAorZHVwIDM1IC9DMDEwNSBwdXQKK2R1cCAzNiAvQzAxMDcgcHV0CitkdXAgMzcgL0MwMTA4IHB1dAorZHVwIDM4IC9DMDEwOSBwdXQKK2R1cCAzOSAvQzAxMTAgcHV0CitkdXAgNDAgL0MwMTExIHB1dAorZHVwIDQxIC9DMDExMiBwdXQKK2R1cCA0MiAvQzAxMTQgcHV0CitkdXAgNDMgL0MwMTE1IHB1dAorZHVwIDQ0IC9DMDExNiBwdXQKK2R1cCA0NSAvQzAxMTcgcHV0CitkdXAgNDYgL0MwMTE4IHB1dAorZHVwIDQ3IC9DMDExOSBwdXQKK2R1cCA0OCAvQzAxMjAgcHV0CitkdXAgNDkgL0MwMTIxIHB1dAorZHVwIDUwIC9DMDEyMiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5MjAgNzM5XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjE5NjMzQkZENzUzMzVDMjk3NUZBRjQyOTExRTM2Qjg4NjI1CisxMUI3ODlCNEVBMzJDMDNCOThGOTAwQTQKKzY3OTEwRDUwM0IzRjdFNDlCMQorQzM1N0Y4QUEKKzI4OEIwNUU3RDYxRjE1RUVCRTA5MDJBQjY2MEYKKzJGQ0QwNTYzODhGMTAzQThDMEU2NDgxQ0Y2RjM4MEVFOUUxODVDMDBFNDc3OTNBQzAwRTc4MjEzNUY5REU0NjYyNkE0RTJDQzJGQUYzNkE4MEJGOTlCOEFEOUM0MERDRUY3MTMyNzY4OTZCMDkzNDk4RTNDRDNBNEQwMUU4NUY3NEZGQTRFMzY1RjNFNEU4REFDRjI2Qjk0NTczMEIzODg4RENGNDZBOTI3OEExMzI4OEFDODM4NkQyQTE2QTY3NzI1MzRDQTMzNDVCQTQ4CitEQ0JEOTJBQgorNTcwRkExRUFDMzRBMEY4M0REQkVGMzNFMkIKKzEzOTk0QzEwQTI3MkZBMEIwNjFGM0VCMDg4RkQxRDQwODYwQjk2QTg3MENEMjQ5Q0QyRDdCMEZEMkMwRDg2RDIwMTQ2MDNFMDI0MDJFM0NDNUIyMDdBREU3QkNCRTY1MkY4MkNFMDlBNTM1NjBBNDYyRjY4Mzk1RjgyOUEyNzQ1Cis0ODVGNDU4NgorRjBBRDJBNUIxRjhDNUU1NzE1MTJDMjkwNjkKK0JFQTY1MDExQTBEMzBGRTc4MzJFOEJDMEMwNDE4MDc2Nzg5QkRBMURCOEM5OEE3RTlBQ0E2QkNFNEZEN0RGNkNCMDk1MjAxOTJBNjEzMUQwRjk0MzczNDAxMDA2M0U4RTM5NEVEMUM1OEIwNjk1NzVDMkUyOEU2Q0UyMkExRAorQkRFODJGM0YKKzA2NzlBRkRBNDFGNDg4QUJENEM5QzJGRTc2CitCODNCRERCMjczRjE5N0QzMzgyNDI4RTNFM0I3QTQxQ0IyREU4QTk1QjYyQzA3NEE1MTBCNTgwNjgzQzMyMzM4NkUyMjlGOUM2M0Q3NDZGODIwRDM2ODgzN0Q2MDZFNzY5MERDMzhGQkMxRDk5MjUyRjQKKzU2NTlFMDgyCitEMEE1NkFFRjNCQkU0NDU3REQ4NTQzOThCQQorOThBRkFFQzlBRENGMDhEMEU0QUYzOEExNTE4ODQyRDM0RDg2ODYyMzUzNEVDNworRjBCOEU1RjgKKzg3QTNFRDUwOTA1QjZCRkI5M0UxRTU0RDYyCiswNDlDM0U2NDQ1NzY4RUI4QTMzMTEwRTM5RTBCNkMxQTY4MEI3NUVDMDQxNzBDNjMyNTVGMjJBNjAzODdDNgorNjk1RDBDOEUKKzk4QzcxQzk3MERGOTY2NUIwQkQ4OEJBNTA1CiszNDY1REQ0ODlERTVEM0YzOEMzRUQ3MTRFQzdCQ0E3MjVERkI0MEZCOTVBODk0NkYzRkI2QjBCNjY5M0U2RUFBRTc3MDYxNzMyRDIyMjdGNTA4Qjk3QTFBOTZGMTY4MTNDMTEwNDEyOTgyMTlERjM1MjM3QjJEMjg1OTZFOEEzOUM2MUNBMThBQzcwRjgyMzExRTY0NjZDNjVGOTU3MDM3NTExMjIzOTg0MkVBNzc1NzFFODcKKzI4RDI5QUE5CiswQzY1NzY4Q0RGQjA0MkI4NTBDOTM0OUMzNgorMkZENTk1QTQxOERDMkUyMjY4NTlFRTU0M0E4NEU0MkIxMDhFQTNBQjg4RkVDMzZFRTM2M0Y5OTE0MDg5M0REQUJFQTg3OUEzQzI4N0YzNTc2RjhCNTMyRkU1OEI2MTM1MDMwQzk0RDlEMjM5OTg4MUVGN0YzMDhEQzcyOEI2MjM4N0M3MEFEQzc4QzMyMzY2NEFDNEI0ODBFMTlDQkJCMkQ5NENBRjgxRjFBREMyOEI5QjM0NzVGNzEwQjUzOUEyOUMKKzE1MjkxQTBGCis2MjEzREJGOTFCMTIxOUE5RDQyMkREN0ZCNQorQzVCQzZGMUY0Q0YyNERCMUUxMDIyQTU3RTgyOUYyNkJCMTg4MDM1RUJBM0I5MEYxNzhBNEY1OTc1QTBGNTBGRTMzQzgzQjAzRDgyNUM0OUIxQ0FCODg0NzBFNjZCOEIwQkI3RUU3OTZDRUQ1CiszNTA2RTkyNgorNDc2Qzk1ODE3MjE1MzA1NkM0RDAyRDVCMTRCQworOThCMTkwMDFGRTU3QzBCMjdBN0U0MTM1RjlGNkQ5RkFGQzZBNjc4QUE4NDU3QUZEMEQ4Rjk4MzkxRUM1NzQ1MTkxQzg5QTA4ODg5NjJCNUU4NzY3N0VDODk4QzkyMEE2MjAxNEVCQTM1Mzg1MTMyN0NCMUY0ODQ2QjhGQjNFRTIyN0JFRjAwQTkwOUQ5MDdBMTFFQzM0QjRBOERGRkREMzQzMDg1NjZFREJBQzIwRkYwQjA3MDQ1REI1QTk1MjU4MzJFNEQxNTA3OEVERjExNjA5Q0NDODBFQjhFNzc5ODc3NENENUIKKzBCOTg3QzU3CitBN0Y5NjI2M0E4MzY3QzYzODJDNkE3RkZFMDk4Cis5NzEzOEMyN0RGMTRGMUJFOTI3MTRDQUQzQkEwMjMzQUZDREEzN0QxMDQzQUQ5QUE3Q0Y4RjUwN0I3N0UxQTJCMTY4RkFCM0EzNTM0NTA5RUI0ODIzQ0I3MzQwNDc5MTgwMDcwNDRDRTRDNDM0OUVBNjE2NTU4OURDRTBGMzlFNkQwRjA2RkZERDk2REIzNzlDOEMxMzc0QjgwQjVDNEY4QTAxMUQ4N0QxNTk3NUFFOEMyMDM4QkVDNjcxNkI4ODYyRjY5OTMzMkVBMzhGQzY1MkU3NTEyMTdCRDcxN0VBNUFFOUExNUVBNTkxNzk3RDczMDMzRUUwQzI1RDEKKzVBMkQKK0I1Cis3MzE2NEQxNQorMkFFNkFGODhDN0FENjhFMDBBQkY3MUEzOUUKK0Y1OUM5RTk3QzQ2MzIyRjU2MTVGMTQ0QURCQ0YxNEFGMUU5NDBCNDc2RDVDRjkxMDM4RkI0MEQ3RDFEMTk2NkYyMEFCQUNCNTIxRjQyREY2QjNBOUFENjFGQUEzQjc0NzhGM0RDRjEwOTkzQTlDNkEwOEM3NEEwRUMzOTA2RTI3M0JBN0IyOEZCMTcwMzBBQjMyNTI3NTkzNDU1NzExNjY3QjlBMzI0OTJGMjU0RjFBNzY5RTZGMjAyMUJBN0NCQ0Q4QUZCNQorQ0I5RERBMjEKKzQ1NkRFOEFGRkVFQkExOTZEMjI3MjVBMUI0OTMKKzZBNUZDNDJENkM3N0JFN0ZFRjc5RDdBNEY4RDFEQUM0RUMzQzMyOTIxRTUwQ0MxODU2MkJDOEFBQzgxMUM2N0VDQjlEMTI0RjlDNTI4NzNERjkwNTIzRUU1RDdDRTA3MTJBMjY5OEQ1QTIzOTQwMzZGRTgzQjE4RjZBQ0E4NDhCMjgyQ0Y4QTgzNjAyNkUxQTFCQkI1RTQ5QzQ4QTVCNTcwRjdBQzU0ODI0QjZENjY5QzVCNEI0QzI4QzREOEMxRTFCMTlGRUQ5OTg1NDIwMzUyMjM1NjIzQUZGOTE4RTc1ODhCQURDNkY4OTUyMjlDMkFCRTk1NUJEMEFCMgorRkU2QTBENEQKKzgxQThGRERCOTRFRTJENkI1MEI1OTEyQTFBNDAKKzg3QjQwNTg1NTk0QjM1MEIzQjdBOTdGMDYyQkYwQTM4RDZFRDA2REM1QzcxRTM4QUNCNkUwNDY4MzYxQjNEMUQyRDVFNjVBOUE2NDFEQTZENkI1OTM1M0YwRjk5RjI0NzUxRkU1OTYzRkUyMTQ0RDIwNkFGQkI1NDJDQjE1NUZCRDgzMTBDMkYwNkI1ODdENUM0MTgyQTYyMDE5NzEyODUzNTIyNzU0N0Q0NTlFRENEMzQwMThCNTExMjE1QTJGODYxMzUzNjg5RjRCMEYxN0QyQworMjM2NDA3MDkKK0ZBQ0Y5ODQ2OUNCOTAzRUJDQkU0MDI4QjAwQzQKKzM4OTY5QzJFMUYxNUI1QTE3NDRDREE2OUY5NDg3MkY3ODFCOEM3NDVFQzg3NjdBQ0VENEIyRjEyMUZBRTA3RTcxQjA5NEEyNjM4RUYyRDVCMkYyQkM3RENCOTI4MDY4Njc3MTlBRkExRUU3RURCOEY1RjMwRDQxQzYwRUI4RkQwMDJDNDc5RUMwRTlFQ0Q2OEQ1NkIwRDZCQjREMkNGNTNBRDRCOEZBMDA1M0VBMjg5QTkxQjNEMzM2QzNGQ0VGQzZDNEFDQTgzRDkzNEM3Q0JEM0RFMTU1OEI0RDk5NAorRjVGNjIwQjUKK0M4MzA0MzdBNzVFQTBCODJCNDlGOEM4NDA5CitDRDEyMzFDMTNFOTY2MENBREJEN0U5Rjc3QTMxQTc2NzgzQzlCNkZBRDQ5MzRBOTdCMzczNzA1OTAwNDVFOUMxRkMyNjFCQzI2NEQxMUExRTlDQUE4MzdBREFCOUFEOUMwMDE3Njc0NEMzRTUxRjk2MUU2RTc2QTZBOEVBMDFBREVEQTQ4Njg4QUFBNTFDODMxRkVGNzM1MEYwQTRFNkY4MTg1OUNBQjcyQTkyQUU5QkRDQjg1M0E4Cis2RkVBRTEyRAorNkMzNTEzODg0Qzk1MTNCODNCOTExRTJDMDEKK0UwMzFEMzAyNTk4M0Y1MjZCQjNCNzkwOUUzODIwMTEzNzA4OTVBOTBFQzRDNTE3MURGQzZGMDAyQzY5NTEyQjlEQzJCNTNCQUFDRUI5NDAyRDZCMkRCODM5NDFEQUFBMjkxMDhFMkE0NEM5MEY1OURFREFDRjQzMDY5NEY2QkUwRTcxODBBMDI1MTk5QTVBRjNDOUMxMjdERDAxMzU0NTRCQzExOTcKKzFFQkIwNDVGCis4OUY0MkI0QURCMTc2MTgxRTczODA2MDE3Q0E2Cis0MEZGMUNBN0JGMkVGMURCNkQ1RkUxQzlGQUI4MkFGQjdEQUYyNEMwMDIzOTg5NkZBMjc0RDhBNjE0NDRERjM0MzQyREEwQ0YzOUYyREQxODFFQjZGNDdFOTUyMDdDMkU1REExOURDMkY2OEY3RDVEMEQzQTU1ODcwMDY5NDQ4MUEyMUUzNTcwNEFCNjY3OTVCMDA1MjIwNzZCREU5MUU0RDJBODQ2QjVBQjhBNUVCRUI4NkE2QjJFRjVCMTdFRDlFQkY1OTk1QTJCNzE2N0JDQUJERAorNzg1REU3M0EKKzNFMUE0MjE3NEU3NEM3NEI5MEJCRTUzQUQxRTkKK0MxRUEwQUJDQTY1OEFEM0QwNjg2MUQ5OTM4MjA1NkY0MTkxOEQwOTVBNjQ1MDlEMzU4MTk5NTY1ODQ2RUVGQTA0NUMzMTNBNEJFQTU5RUQ0MzM2OTRFNjIxRDdDNUIwREM3MjczNUIxNjA3NjQ4ODk5N0E2OUEzQjYwQjY0NDEzQzkzMkE5NzQ5MjQxMkU3QUI5RDUwRUUyOTAwQkM4ODM1MERBMDgxNzREODZDREY5QkRGREFFODJDRjRBNjM5QzIyOTUwQjg3NEM1ODA2Mjg2RDA1M0M5QjQ3QkI1RkMwODcwQUFGNkEyRDlEQTcyNEJDQkZCN0Y1NkU3NQorNzJENzVDMUEKK0QzQjIyMDVEM0JCQUI3NUU3MzdGOUMyRDY4NjAKKzgxREU2QTI2NDE3OUQ3MTE1N0E1NTAxREU4RjlBMzQ5MDgwRTJBNEEwRTQ0QUEyNzQ3OTkzODE0Qjc0OUEyMzg1QzVEOEQ3NjAyMkIyQjdBQ0U5QTlCQjc5NjdDMjI5MTZBRDZGQUVCNDE4MjM4MTU5QzUzMUYzQ0Y2OUQwRTJEMThBQjIxRDdFNUJERjcwQUM2QjUzMjQ5MzlENzFFNEE4N0JBOTAwQUYxN0IxMkU5ODMzMTBFQzE5MkZCRkFBODgzOEQ1NUQ4NjlENUZFMDNENEEwMjE3ODc1NjY2OTg3MkJCNTcyNDZDNjFDMjVBRTlBNkIyMkYzNkVERgorREVDQworNDM1NENDCitEM0FCQzEwOAorMEFENjU3QTkzMzE5OENFMkJBM0IxRUMwMjYKKzlBREM5QjY5NURGN0VCNDY1NzZCM0YwQTQ5MDVDN0IzMjY3Q0FCNDA2NTcyQjU2MDc0RUExNzM3MUY4Rjg0Mzc4RDM2Mzk3QUQwRTgwRTQ2Rjc4NzFGMEE4MTZBNzU1QjcwRUI2RjNGQUM5M0Q1NzIwNjc5RDc2MTlERDQ2MTVCRTMyNzk5NkVFRUFDRjg1QTg0NzY2RjBDQzlGRTNDOURGNgorMzk1RDcyNjQKKzc1RDEwODU5OTQzRkM3OEMyNDJBRjE4MEEzRDcKK0U4RUE5MTdEM0M3NjFEQTM0NjQ1QjMyRDExQ0RERUNEMkQ0RjAyQUVDMDg2NEQzRjZEQTA4OTJENTE5NUIzNjQ4RjE5NEVGMDZFODIyOEU1RUZGQUU5Qzc3Q0IyQjkyODI0OUYzMjc1MUI0Q0Y1OEMzNjMzMjJCMjU3NjRBNTJENzhFMDgwQzA5QjVDNTkwNjJCOTlGNEE2NzgxODNBNDEzNUNENUI1QTlFODMxRDgxN0NFNURCQTE5RkMxMkVDODI5NzdFRTE5CiszREI2RjMxOQorREQyMkQ1RDNCQTRFMjYxRkUyOTg0MEZGQjZFRQorMEIwQTdENzAzMDcwNzVCOUE2NTEyMzkzMDA4RTM3QjJGMjg1NUQ0REQwODEwMUYxNkNCOTBDMDZDQ0UzNERCMjZEMDNFRDA5RTY3NjgwOTU5N0MxMTlDREU0MzVGMUUxRkYyRDQ1OUZCOEI5Mzg0OEY2RDkxQTVBMUEwMUUwMDk5QkRBQ0QyOUNCODUxQzJFOEM4OTQ1NTBFNzAwM0E5RkQ1QTlDQUM3OTE4RkI5RUQwOTZDNTgzQjYyRTg1NTQ5RkU3ODc4RkQ1OTBFODU1MUM2NkExRDlENjdGMDlDRTU0QTMyMDAKK0VEQTk1OTgwCis1QTNBMTM4NjdBNzYxRkQ2OUQ4QkM1NjVEMgorQ0VCN0UzQjgxNjhCQkZDNUM0ODZBRjJEREZGMzk4OTc4RUJBNzBBQjhCRjAKK0VENzQ2MDU1Cis1NEU5NjQxRjBGNjUxNUE1NTdDRDRGNkREMgorOUNGRTU4NENFQzdBRjE1QjU2RjU2OTI0QTVGQTE5NERDMEQwOTEwRDE2MUY4ODUyRjE5QUY2QTcyQzBFQzk4MDkwNUQyQTlDRTQ4MTk2RDY3QTA3NDg2NjE1MUMwMUZBOEIzNDc4NUU5NERGQTA5RDUzOTYKKzVDQzQyOTM1CisyQkNDQjVBMUExOUIyRTgyRjk4QzJFNUNBOTg2Cis2QkVFMDEyNDIwQkJDRjlEM0MyOTNEQzkzNTQ1RDUzMzExOEM1RTY4NzlBRjkyRTZDMERDRDYxNjc0NjY3MkU4Qjk2OEJGODhFOTk3OTMxNjQyNDhENEU5NjY2NTBFMTIyNDI2N0RBNDlGRkE4ODk4M0YyODYwRjU2REVGQjIyMjJBNjkxNjQ5MUIxOTcwNzhFODcwQzgyMzIxRDUyOEQ3RUVGM0RCNzhDNjU1QTY5MzNGMjc2M0FGMDlGMjJDOURERjc0MzUwQTYwQUFDREY1ODZCMUVCQzZBOTNCNjIwMDI2QzA2QTZGMUJDRDJDN0E0ODMxQjJFNjY3QjIKKzIyNDEKK0Q2ODgxMworNkQ0RDEyNjcKKzAwN0NCOUI2Qzc5RDMzRTREOUU0OTY2M0E1CitDQTczQ0EzNEZFRjYxMEI1OTUwRUM0RjVGNEJBM0JFMjJCMUUwQjZFMzZDNzY5RDI5NEVGNzZFMTU3NDA0NUVBQjlCNDA5RTM0RkMxN0NGNENDMjdFNDg2MTFCNzA5RkMwQjlFQkI4NzBCRkM2NjA4Rjk0MDI5NjQyNTZCREZGRDBGREZGNDhCQzNFRUIyOTExODg4OTMwOTQwOTQ3MDcxMkQxMzEyNjIzNDkzNjFBNAorNjQzRjUyMDgKKzc3ODQ4QzIxNDNFNkEzQjA1MjVERDQ5NkFDCis2MjA5QkZENTI1MjU3NkJDRkNEQUNGQ0E2QzNDQjU4OEQ5OENEODE4NjQ4MzY2RUUxREJBMUJEMkZCNUY2RUIwRTRFRkVBRDQ0QjAwQjhBQjZCM0NGNTg4MTRERkVDRjlBODY0REY5RTQxMDlERjkzNUMzQTIwMUY4NTk2MEEyQjNEQjUwNjkyREI3MDlGOEFGRDQzNkFDNzlCMTE4MjQwMUVBQworQTRFQkM1NDcKKzJGQjNCRjgxQUY1NUUxQ0FBODVFODU2QThDMzQKK0JDNkIxREZCMENCREE2OTcwRjQwREIzMTIxMDZEMTc2MjJERTY5NTU2RjREMUM3NTcxOTA1NUQ1NjA3RkIzRTkwOUZEMTNBNDZGMDQ4OTg5ODI4REIxOTc4OUY2NTg0Nzc4QkZFMkM3QjlGRDg5RTQ3QUExMzExMDMyMDI5RUU4MjQxRTUzMjM0Mzc2QzI2RDBBOUQ2RTdFMTJGMDRGMTgwMDY1QTVFRkJENDJDMTREQkJBMjcyRDUxMUZFREE2N0Y3QURDQ0QzNjY3MzVERUQ2OEMzMEQxNzVGNDMKKzA5QUQwRDg0Cis2QUQxMUQ1RDVFQTMwQjc3QjIwMzdCQUZCQworNzlGMzNFMDcwODdDNTQ0OUQyNkMxQUQ0MDIxNkI0REI0OTQ4OTJCNjAzQjAwQkE4QUE5QTMxMzhBMEQ4RTY0Qjk4MDA3M0RGM0RDRkM3RUNBOTZFQ0QxNzNGQkU0Q0Q0REQwMkZCNUJGOTY5NjJCMzExNjEwREZEQkJGMkI2MUExQUJDMUM1MjFFOTEwQkZCMjg1NDFGODRBNEE2OTEwM0Y3NDZFQjMwRDI2QjE2RDQ2QgorQ0RDMDc3NjEKKzI2NDZEMTMzQzZDRTBFNDlGRDg4QThDODQ5Cis5QTg5MTdDQTI3NDlDNTM0RjRBQUYwQTIxQkU1NDIyNjcxNTJGNTM5ODREQjU4MzAzMDUyNDAxMzRCNDBEQ0JFRjAyRjkyNDM4RTlDMDlBOEExNjA0QzMwMjQyMTg5Q0IxOUVDRjkwRTg1NjA3QjQ3QUYyNDRFQkRBQUM1RDhDRERDMDdCRDEwQjZFRTg1RjA3RDg0ODFDNDk1NjQ3NEYxRjNFNDJBNjM5MTAxMUYwRjBGOEE4MUEyCis5MUE2QkRFMgorNUFBODNGMTIyOEM2OTk1QjU5QkVBNzJENTk5QQorMjdDMEVFRDZDRDRERTBGNzFBRjI1NzZBMzk5NEFBNjFERjZGREFCQzE1MzY4OTYzMEJDOUUxNTMzRUFBMjk4MDY1NDQ1OEM0OTkxMDFDM0UyQjJBOUU2RTRFMUJFNzk4MUE0MEI4MDQyOUVFNzBEOTAxMTBEQTg0MjBGMjVDN0JBOUM5RDNGODQyQTVDRTVGOTg5NEEyMDBFODJFQzkwQ0Y2MUY4NzNFMDE0OTczQzg5MkNDRjk2OUIxQzg5MDRDQzkxNzBDMTREMDAzMEFFNzJBODc1Nzg5QzE3NjYzMTI4MTJBRTkwRDg0RjNEQTM0NDE4N0Y1Qjk1MkYxCis2ODA0Cis1MUEzMzU5MkVFMjZFNjU4NTVFNjA5OUIyODc0OUE5NTk1RjAwREVDMjk1RDM3MThERjEyRkY5MDdDRUNDNjNDRjhGMEY2NjU5RTZDMzJDMjQxRkQ1ODYyRjUwQzFBCitBOUM1Nzc2NworNTQ0NDk5MzhDNjlFMjQ4ODIxRjM3OERBOTgzMworOENBN0I5QTNGMjI5M0I4NzAxOTA1RUI4Mjg0MzlDQjBFMDFCRUYzMUMxQUFDMTNGQzNCREI0RDY3NzU0MDZFRjZBQkIyQ0M0MEYwQUU4M0Y2ODFCMTFCMTM2MTZFMjk3MDkxQkE3QzM5MzI2MDUyMkQ2MjdENkIzNzNBQTJGMUI5Rjc4NjYwODZCOUQ1RTZEOERCRTlCMjg3NUY1OUNCQkQ3REU0NTk1RjlEQ0I3NzgxNkU5NzUzM0Y3NEYxMEI0MjZCOUFDMjkxMTFGQzJDODdBNzg1RTA1NkQKKzIyNDU4QThBCitGRkFFNzA4Q0I5OThCNEJCNEQ3NEU0NjRBRAorQjNEM0YwN0YwRERGQzg5MTNENUE2QkY0Mzg1MDU3NERFQUY5REREQ0ZFNTkxQ0NGRTA4MjBBOTQyNDg2RkNEMjFDRjczODVFM0FFNTVGODBDMUEwQkNFRDcyQjYwREUyM0Y1N0JENzNDMEYxREYwREU2REJERjYxQkNGQTc1RkExQzM1QkY1OTM3MjcyNzU1QTY3Mzg1QzA3RjBEMzg0MgorOUE4NTM4M0IKKzM5NUNDMEYwRDU2NDcyMkRBNDAwNTQ4RDU1M0QKKzRBNkVEQjI0NkE2MTM5NTFENDFCN0MyNkZGQzY4MTUwNzE3MUUzRUU2ODgwRUJEQTQyMjk0OTU3OTA0NkZDNzI4QzQ3MzBDMTgzRTcwQkFCRDA0QjE4QUU1MkFCQjJEMkY4RTEyNEYyOENGNjNCQ0U0MUZBQjgxQzRFNUVFOTYzRTkxMUI4MjkzRTU3RTA2NDM5MjQ4MjM3MjQ4MTRBNUM2NUM3OEUwNzg5REU1NjIzODVDRTAzQUM4MTU3QjkyQUI2NjExMDY5MkE2RTE4MDRCRTkzMTlFOTkwMDU1OUE3NDE1MTlFRDNFRDhEQjE1RkVBNDNCM0EyQkE5MgorMjNBMgorMDMwN0E0QkZDM0Q2RkMwNTZCNTJDN0U0ODIzOEQ5OUQwOEEzQTZFNTlEN0E0RUEyQTFBN0FDNkU5RUNEQ0U3QUY0RTRFOQorNUJFMjBFRTAKK0E3QjMyNjUwODFFMjFCM0Y1RTgwRTIzQThGCis1MjA2QzgxNzczODJFQThBRTFDQTU3RDNGNkM0Nzc2MDdERUZDRjVFNjA1MkM4NkI1NDdDRDhDN0JGRDc3M0E4Nzg0NUE1RDcxNTQ1MEVGMzJDQzBGRjRCMEMyMjk2NkZDRERDMTI3MDVDNjAKKzI0NUM4NzgwCisyRkVGQUI5QTk0NDhFODMzREJERUIwNjUyQzM1CitCNUM4MkJCMDdFNkE4MjM4QkFFNDU3OTM3MEEzQ0MxMEE0NDlGOTU1QUI4MEY5M0U3MUMxNjkwNzJDQjUwNERGMEFDMzVFQUFEOTAyMTJBQ0ZGNzdGMkRBMUI5NUZGNzU4MUYxOUFEQzc4Q0Y5MDdGNEUzRjZCOTJDM0ExQUY0NjZBNTU3NjA4RDIxNkM5ODY5MkVEMzVBMTlEQjgzNTMwNkFGMzI3MjZENzVFRjI1QzU2MDcwRDFCQjU1REMwRkYwQ0JBOTQxNDRBQzdENkQxODE0MzRDQjNGMDhBMkRGMzI2QjI4NzZCNzdGOTZGRkVBODg3QkU1QkFDQzkKKzQxMzkKKzJDNzBBRUQ2NzJBMUJGQUQwMDA2OTM5Mjg5RjE4MUJGN0Q1OTdDM0UxQjUwQzU4Q0MzMUNBRjkyNDk1MEQxCis0RjNEMzFBNAorMTlDOTZBNURCMzY5ODM5OEZENDc1REQ4QzkyNgorOTU4MThCQTQ5RUJDRDQ3M0JGQkY3REU4QkE5NjIxOUFCRjEyRkFFQjMxNEVEQUVFN0M0NEMzQ0JENkY4MjhEOUZGN0UwNTUyQkYwOTNGNDkwODhENTJGQjYyMDI4NDlENTU3MDBBMUFDQzU4QUI3MDIyQUEwMTJDODE1OUUyMENBMDJBNjY5MUY5MTA5RTdFMUI0NTFBQTVBOUYxOTVCODYyNjg2RDRGNEQ3REE0QkFBMDAzMjhBMTZDNjZEQUY1OTI1NDU2Q0FBQjNEMUYxOUI5RkUzM0E1CitBMTQ0QzlFQQorNEI4Q0VGQkI3REFGOEExNjdBRTkzOUJEOUYKKzRBMTIxOTFCQjVFMzYyNTQyOTQ3ODUzOEQyRDU1Njc4NEFBQkQ5NkMyNTMzQzIzMTk4QzU1M0NEQkJCODFBMTRGQjlFNUEyQzg4MjAyQzAyQjRBMUE5RTBEM0IyNjFGRUE2NUVDNkVDMTFBRkQyRjA3QUFDNTY3RkEyQjRDNDYxMTkzQkRDQzMwMzAwCitDQ0VFQTkyRAorNzJCNzQwQjM2NjYyNkIzRUY0NjE2REE2MUI4NAorRDAwQ0JDOUYzMEI0M0VEQjZFQzk1QTVFQTc0OTczQzMzQ0NGQ0M3OUJDMEREOUJEQTRFMUU2QkNFRUIxRjQ0MUM1MDhEQUI1RDI0MThDMDRBQzM2RDNBOTNFRjQxOTkwQzdFMTA5MDY1MUU0NzlDOTc4RDlGNTFFQjdGMUE3MjZGQzFBQzhBNjcxRkZGRjUwOEE1Mjk1OUM3OEUzRjhCOTRFMjZCQTFBOEFFMThDRDg0NkI1Qjk1NTQ4RTM0NjU4RTk5OEM2OUFBNUI5N0JDNkJGN0EwMEEwM0VFMjVFRDNGNEM0MjdFQTVBM0UxNgorRjQwODA2QUIKK0Q2RUIwMTU1QzU4MUFFQzgzNjUwNDYyQUMxCitGQjc1M0E0MTcyM0I2RUU5MjZFQjFGMzk5ODEyMUU5QkJBQTcwNkI1RTkzNDk0OTExREYzMzIwMTUyNUZDQkUwRTBFQTAwNTZGMzRCNDgzM0Y1NzIyRjc2N0M1MTI5MkE5N0NGRTI5QzgzMUQ0Mjg4RENGNTg0NTFBQTg0OTNFNzMwMkEzNUZFNDk2NUM3QUU3MDA3MjlDRDE0RjQwMURBMTgyRDIyMzU4QkRBOEUKKzlBNUI4NjY3CitEMkEyNUU4RTExNzgzNDA3RUIzMkRDODZGRTUzCis1QjYyMkJFMkRDRTQ3RkQzRTc2NkRGODkwOTU2RjRGQjQ3MEZFMDUzRTk4ODVFMEEwMDA0NzVENTVDNzcyMkJGNDU1NURBODU2NEEwNTA2QUY4MjUyREY5OTlBODIzNUVCRjE4MkJBMEM3ODM4RTY3Q0U2QzU2NDY2QjdFQzUzMDgxODIzQzE1RkQxRTQ1NDkyQjc1MTAzRTBGNUY1QzQ3MTA5ODI2RTI0OTExN0U1MjNFQzhEMkVEOUY4QjUwMDIzODc3RjExQjA0MjYyOTY4NTg5Q0JGRjYzNkI2REFFMUEwMEU2MzY2MjBFMjBCNkM3MEQzMzZCOQorM0QwMTRDNUMKK0U3NkU0REVDNDBGMEFFN0QzOEExRThBQjQ1CitGRkUzMzQ1Mzg0MjNBMkZFNjAzRjBDMTlBNjFGNThCOUVEODQwNTM4NUY2RkRBOENEM0Q5RDk3MDQyNzAzQkQ0NkZBNEVFNDM5RThCRDI2MkE4RUI3OEQ2NzE3MUQzNkEzN0NFRkJCQ0NGRUE2NDQ4MTU3QkRFNTA0MEQwOUNERURCNTVCMzhFRUYKKzBFQkVDNDQwCiswOEI5NTlDMTk4RDMzMzczNDJBMjUyN0M5RgorMDVEODQ5MzREQTc4MThEOUU1ODkyMTYyQTYyRjk5QzNFOTY5RDQ3NDAzNjQzQ0Q4NTUzRjYwRjk5NzA1NzdGNkFGNjc2ODZENEI4M0RCQ0RBMDk4QTgzNkY0MTlBODY2OUYxQUMwNEVFQTFGNEE2Mjc2OUVCNzA3NDU3OEFERDczNzczRkM2MUIyNjFGNTUzMTY2NzA0OTVBRTMxOUI2RTY2Q0M5M0Y4MDcwQUM4MEFBQjdGRTg2MzYzMUREQjRCQTU5OAorOEYxMzY5QUQKKzg4MEE4MzY3RDM4QjhBNDFCMDIyOUU0OUI1CitEMjMxRkU1RTU4NjlBMEVCNUE1RkNFQ0Y2M0NBNjk5NjNGN0ZGQkIxMzVGOTZFRjIwODlBMTA3ODM4REM3MDZFNUU0ODhEQzQ0NUM4QzQ2QkQ2Q0NBQTMyMUZBRTczRTgxRkM1MkQ0ODlCNjIyN0I5ODg4NzdCRjE5MkJBMjk0NjczNjQ4QzY4NDZERjU4RTk1RUYwRDE0MDdGN0EwM0FDRDRENzE1QzQzQUVDMUY5NzIwCis5ODIxODIyMworRkY2OTBCMDg3MDFBNkY1QTJBRkJGQzg2MTU4OQorMkM0MzA0NjgxRENEODQ3NkI1MTQwQjZCNEM0OURDN0RGMTY3RDY4OEJGNTA1QkQ1NUREMEExOEEwOTFBQjA5MkJBQkM5OEY1MjUzMzVBNUExREI5MEVFRjAzRTZGRTJDNjRCNEQzNkJDQzFBRTZDODE3ODVBRTMyMjRDNzREODhFMjlCOEQ0QkNBNDM5N0VCNUI4MzhFNjczQkRCNERGMEU3NTVBQjRGQjdFNDgxNjdENjZGMzA2OEJBQTc4ODU5MTBCQjkzOTc4MDVBMkFDMkE2NTU0NjI5QzdBNUE4NEUxN0VEREU4RDlBN0REMjEwNDFGOEFCRTdFRkZBCis2MEY2CitDN0FFQTU0M0ZGODI4Nzc3MjYwQjU0NThGRDczCis1RkRBODNBMAorQTAwQkVGODc5NTEwNTY4Q0EyNzE4RjgwM0JBMAorNjgyNkYyRDczQ0NFREEzNTFCMzdEN0Y1RTc1MTA3RkM2MTgyREFGOTQ4OUI4MjkxNTJCM0ZDMTg5Njk5NDRFNTdDMThCRUMyOUJGNjgwMTM4Rjk4MTc4MzlGQUVEN0JEQzgxOEY4REE1MkE4QzVCNDRCNDI3RkZGNjI0RjVCRjA4RUJBRDE1ODcxRkZEN0YwNDVCRDAyRDBERDlEMkQ4MTM3QzMyMkI1NTA0OTc1RDJDN0JBRTE3NkIzMDJFNDVDRkY2QkYzMkE3Mzg2OTg5MjNERTRBQjQ4OTFFMzkxNTc3NjRGRkEyOUYxMEYxRTg0QUZDRkFCODlFMjQwCitCRTlBCitGRjhGNkEyNTI4NEYwM0I4MEI5MkE0RTIzQ0ZBNkE2NUYyNTgzOEQ2MTMxOEMyMDc3QworQUQxRkRCNjUKKzY5MTlDRjM0ODM2MDlDNEM3MTdCNjdBNThERTQKK0FCN0I4NTE5QkVFMDNBMDFERkVFQUEzRkRBMzYwODk4RDgyMEMwQ0UzMDZGRUIzQ0Q1NDlGREFCM0EyODA0Qjg2QzlGQTc1MDRDNEJBQ0RDRkEwMDcyNUU3Q0IwNUQ1NjgzRUIyMUE3N0JDMDU5NDVDMjY0RTk3MkIxNDg0OTRFOUQ5M0Q5ODlCRTQzOEM1Njg5RDUwM0UwMTgzNUEwRTM2RDBCNThERDUwRUQ4RUQ2RjNDQjUxMkUwOTcyN0MwRTNFNUM5NzkyOUQ4MDIyRDVERjBCNDIyQTU0NjgwNTNBOUNEMjVBNDcyQTIxNERGOUJFMTZEMjFDMUVEOQorNTM3QgorOEY4MEY0MUYKKzJENkNCNkU2MThBQkNDMjFDNTE4RUNENTY1CisyQjdGQTJDRUIxMEZDMTEwNDYzRDg4RDY3MTlFRDQyODE5MkEzQkQ5NTEwNDFGNzBCMDREQ0MxRkFCNUU1RjkyQjkzNTRGNjg3NUNENzE5RUVCRkVGN0VFODlGNkI2MEZGOUFBMDU4NTJDREUyMzREODMxQjJDMEIwQkExNzAKKzdFRkQ4NENDCitCMzVEQ0E1MkZGODQ0MERFRjJGMzE4NUMxNDZDCiszQjI1NDhBMzgxNUE0MzI1Cis5MjAzQUI5MworQjFGRDRFOUFGMTdFQTM4MjdFOEFGMTJCMEM1QTJFRkVBRDA0QTQwODU5QkVCOTAxOTVGRDdEREFGM0U4MkQ1OTA3OEEKKzNBRjhBOTYzMzE0Q0IwMTVDMjI2Nzg4QzBGQUE3QUQwRDFDODYzQTNFMzlBRkE2NTI5M0E4REI2ODIzMURDMTg0QjAxRkQ0QTcyMjcKKzI1NjA2Mzc3RjFCMzE5NTVCNDc2Rjc1RUZCOTk0NUY4RjI3MjRFQjFDNDE2N0IxM0U0Qzc0OAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IENvdXJpZXIKKy93c3Q6Y291cnBzMTAgMTAuMDAgL0NvdXJpZXIgL3dzdDpjb3VycHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTExZjJjMjkxZjJhMjAwYTAxMGIwMTBjMWYyNzFkMjIyNjFiMmEyNDAxMjAyODJhMDExMDFmMWIyYjJkMmEyMzI3MjEwMTExMWYyYzJmMjgyYTI0MDExMz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwxZjJhMjAyODJhMjYxYjI3MWQxZj4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDgwOT4gOTM0NiAxMzM4NSAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI2NyAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjY3IDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyNjcgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjY3IDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE2MjIyMzJiPiAxMjcxIDE0MzEgMCAxNjY1IC0xIHMKKzwwMDI3MWYzMDJjMDAyYjFmMmMwMDI4MjAwMDFmMzAxYjI2MjkyNTFmMmIwMDIzMmIwMDJjMWIyNDFmMjcwMDIwMmEyODI2MDAyYjI4MjYxZjAwMTcwZDEzMTkxNTE2MTQwZTBiMTAwMDJjMWYyYjJjMmIwNzAwMTg+IDE2NjUgMTQzMSAxMSA3NTg0IDAgcworPDI4MmQwMDJiMjIyODJkMjUxZTAwMjcyODJjMjMxZDFmMDAyYTIzMjEyMjJjPiA3NTU4IDE0MzEgMyA5NTMxIDAgcworPDFiMmYxYjMxPiAxMjcxIDE2NzYgMCAxNzE5IC0xIHMKKzwwMDJjMjIxYjJjMDAyYzIyMWYwMDI4MmQyYzI5MmQyYzAwMjAyODJhMjYxYjJjMDAyMzJiMDAyYjI1MjMyMTIyMmMyNTMxMDAxZTIzMjAyMDFmMmExZjI3MmMwMDFiMmIwMDJjMjIxZjJhMWYwMDFkMWIyNzAwMWMxZjAwMTcwZDEzMDAyYjFmMjcxZTJiMDAyYzIyMWIyYzAwMWExYTIwMWIyMzI1MDI+IDE3MTkgMTY3NiAxNSA4ODAzIDAgcworPDAwMmYyMzJjMjIyODJkMmM+IDg4MDMgMTY3NiAxIDk1MzEgMCBzCis8MmMyMjFmMmExZj4gMTI3MSAxOTIxIDAgMTc0NyAtMSBzCis8MDAxYzFmMjMyNzIxMDAxYjAwMWQyODI3MjcxZjFkMmMyMzI4MjcwMDI1MjgyYjJiMDcwMDBiMjUyYjI4MDUwMDJiMjMyNzFkMWYwMDFmMmUxZjJhMzEwMDE3MGQxMzAwMWUxYjJjMWIyMTJhMWIyNjAwMmIxZjI3MmMwMDIzMmIwMDI3MjgyYzAwMWIyNTJmMWIzMTJiMDAxYTFhMmIxZjI3MmMwMjAwMjgyYT4gMTc0NyAxOTIxIDE1IDk1MzEgMCBzCis8MmExZjFkMWYyMzJlMWYxZTA1PiAxMjcxIDIxNjYgMCAyMDgzIC0xIHMKKzwwMDJjMjIxZjJhMWYwMDFiMmExZjAwMjYyODJhMWYwMDJiMmMxYjJjMjMyYjJjMjMxZDJiMDAxZTIzMmIyOTI1MWIzMTFmMWUwMDA2MDAyODI3MWYwMDI1MjMyNzFmMDAyMDI4MmEwMDI1MjgxZDFiMjUwMDJiMmMxYjJjMjMyYjJjMjMxZDJiMDAxYjI3MWUwMDFiPiAyMDgzIDIxNjYgMTMgODE4OCAwIHMKKzwwMDJiMWYxZDI4MjcxZTAwMjUyMzI3MWYwMDIwMjgyYT4gODE4OCAyMTY2IDMgOTUzMSAwIHMKKzwyYTFmMjYyODJjMWY+IDEyNzEgMjQxMSAwIDE5MjEgLTEgcworPDAwMmIyYzFiMmMyMzJiMmMyMzFkMmIwNz4gMTkyMSAyNDExIDEgMjc5MSAwIHMKK0dSCitHUworMTI2MyAxMDU3NyA5NTIyIDEwNTc3IDk1MjIgMjUzOCAxMjYzIDI1MzggY2xwCit3c3Q6Y291cnBzMTAgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MjQ+IDE0NDkgMjY3MiAwIDE1NTUgLTEgcworPDIwMmUyZjZlNjU3NDcwNjU3MjY2MjBiMTc0MjA1NTQ0NTA1ZjUzNTQ1MjQ1NDE0ZD4gMTU1NSAyNjcyIDMgNDA5OSAzMiBzCis8NTU0NDUwMjA1NTRlNDk0NDQ5NTI0NTQzNTQ0OTRmNGU0MTRjMjA1MzQ1NGU0NDIwNTQ0NTUzNTQyMDc0NmYyMDZjNmY2MzYxNmM2ODZmNzM3ND4gMTQ0OSAyODQ4IDUgNTc5NSAzMiBzCis8NTM2ZjYzNmI2NTc0MjAyMDRkNjU3MzczNjE2NzY1MjAyMDQ1NmM2MTcwNzM2NTY0MjAyMDIwMjAyMDIwNGQ2NTczNzM2MTY3NjU3Mz4gMTQ0OSAzMDI0IDEwIDU0NzcgMzIgcworPDUzNjk3YTY1MjAyMDIwMjA1MzY5N2E2NTIwMjAyMDIwMjA1NDY5NmQ2NTIwMjAyMDIwMjAyMDIwMjAyMDRmNmI2MTc5MjA0NTcyNzI2ZjcyNzMyMDIwMjA1NDY4NzI2Zjc1Njc2ODcwNzU3ND4gMTQ0OSAzMTk5IDIyIDcxNzMgMzIgcworPDYyNzk3NDY1NzMyMDIwMjA2Mjc5NzQ2NTczMjAyMDIwMjA3MzY1NjM3MzIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIzMjAyMDIwMjAyMDIwMjMyMDIwMjAzMTMwNWUzNjYyNjk3NDczMmY3MzY1NjM+IDE0NDkgMzM3NSAyOCA3Mzg1IDMyIHMKKzwyMDIwMzkzMjMxMzYyMDIwMjAyMDM5MzIzMTM2MjAyMDIwMzkyZTM5MzkyMDIwMjAyMDIwMjAyMDIwMzEzMDM1MzAzMDIwMjAyMDIwMjAyMDMwMjAyMDIwMjAyMDIwMzczNzJlMzQzNz4gMTQ0OSAzNzI3IDI5IDY5NjEgMzIgcworPDIwMjAzOTMzMzYzMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzOTJlMzkzOTIwMjAyMDIwMjAyMDIwMjAzMTMwMzMzMTM0MjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzNzM2MmUzMTMwPiAxNDQ5IDM5MDMgMzQgNjk2MSAzMiBzCis8MjQyMDJlMmY2ZTY1NzQ3MDY1NzI2NjIwYjE3NDIwNTU0NDUwNWY1MzU0NTI0NTQxNGQyMGIxNjYyMDRiPiAxNDQ5IDU3MDEgNSA0NjI5IDMyIHMKKzw1NTQ0NTAyMDU1NGU0OTQ0NDk1MjQ1NDM1NDQ5NGY0ZTQxNGMyMDUzNDU0ZTQ0MjA1NDQ1NTM1NDIwNzQ2ZjIwNmM2ZjYzNjE2YzY4NmY3Mzc0PiAxNDQ5IDU4NzcgNSA1Nzk1IDMyIHMKKzw1MzZmNjM2YjY1NzQyMDIwNGQ2NTczNzM2MTY3NjUyMDIwNDU2YzYxNzA3MzY1NjQyMDIwMjAyMDIwMjA0ZDY1NzM3MzYxNjc2NTczPiAxNDQ5IDYwNTMgMTAgNTQ3NyAzMiBzCis8NTM2OTdhNjUyMDIwMjAyMDUzNjk3YTY1MjAyMDIwMjAyMDU0Njk2ZDY1MjAyMDIwMjAyMDIwMjAyMDIwNGY2YjYxNzkyMDQ1NzI3MjZmNzI3MzIwMjAyMDU0Njg3MjZmNzU2NzY4NzA3NTc0PiAxNDQ5IDYyMjkgMjIgNzE3MyAzMiBzCis8NjI3OTc0NjU3MzIwMjAyMDYyNzk3NDY1NzMyMDIwMjAyMDczNjU2MzczMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjMyMDIwMjAyMDIwMjAyMzIwMjAyMDRiNDI3OTc0NjU3MzJmNzM2NTYzPiAxNDQ5IDY0MDQgMjggNzE3MyAzMiBzCis8MjAyMDM5MzIzMTM2MjAyMDIwMjAzOTMyMzEzNjIwMjAyMDMxMzAyZTMwMzAyMDIwMjAyMDIwMjAyMDIwMzkzODMyMzIyMDIwMjAyMDIwMjAzMDIwMjAyMDIwMzgzODMzMzkyZTMwMzY+IDE0NDkgNjc1NiAyNyA2OTYxIDMyIHMKKzwyMDIwMzkzMzM2MzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzEzMDJlMzAzMDIwMjAyMDIwMjAyMDIwMjAzOTM1MzMzNDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzODM1MzczOTJlMzgzOD4gMTQ0OSA2OTMyIDMyIDY5NjEgMzIgcworPDI0MjAyZTJmNmU2NTc0NzA2NTcyNjYyMGIxNzQyMDU1NDQ1MDVmNTM1NDUyNDU0MTRkMjBiMTQ4MjA2ODcwNjk2ZTY0Njk2ZjIwYjFiMTIwYjE2ZDIwMzEzNDM3MzI+IDE0NDkgODU1NCA4IDY0MzEgMzIgcworPDU1NDQ1MDIwNTU0ZTQ5NDQ0OTUyNDU0MzU0NDk0ZjRlNDE0YzIwNTM0NTRlNDQyMDU0NDU1MzU0MjA3NDZmMjA2ODcwNjk2ZTY0Njk2Zj4gMTQ0OSA4NzMwIDUgNTU4MyAzMiBzCis8NTM2ZjYzNmI2NTc0MjAyMDRkNjU3MzczNjE2NzY1MjAyMDQ1NmM2MTcwNzM2NTY0MjAyMDIwMjAyMDIwNGQ2NTczNzM2MTY3NjU3Mz4gMTQ0OSA4OTA2IDEwIDU0NzcgMzIgcworPDUzNjk3YTY1MjAyMDIwMjA1MzY5N2E2NTIwMjAyMDIwMjA1NDY5NmQ2NTIwMjAyMDIwMjAyMDIwMjAyMDRmNmI2MTc5MjA0NTcyNzI2ZjcyNzMyMDIwMjA1NDY4NzI2Zjc1Njc2ODcwNzU3ND4gMTQ0OSA5MDgyIDIyIDcxNzMgMzIgcworPDYyNzk3NDY1NzMyMDIwMjA2Mjc5NzQ2NTczMjAyMDIwMjA3MzY1NjM3MzIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIzMjAyMDIwMjAyMDIwMjMyMDIwMjAzMTMwNWUzNjYyNjk3NDczMmY3MzY1NjM+IDE0NDkgOTI1OCAyOCA3Mzg1IDMyIHMKKzwyMDIwMzkzMjMxMzYyMDIwMjAyMDMxMzQzNzMyMjAyMDIwMzEzMDJlMzAzMDIwMjAyMDIwMjAyMDIwMjAzNzM2MzMzNDIwMjAzNDM1MzUzMjM1MjAyMDIwMjAyMDIwMjAzODJlMzkzOT4gMTQ0OSA5NjA5IDI2IDY5NjEgMzIgcworPDIwMjAzOTMzMzYzMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzMTMwMmUzMDMwMjAyMDIwMjAyMDIwMjAyMDM3MzUzNzMyMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDM4MmUzOTMyPiAxNDQ5IDk3ODUgMzUgNjk2MSAzMiBzCisxNyBMVworTgorNjE0MiAyODE3IE0KKzc3MTkgMjgxNyBMCitkcAorTgorNjMzOCAyNzY0IE0KKzYzMzggMjg3MCBMCis2MzM4IDI4NzAgTAorNjE0MiAyODE3IEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCis2MTQyIDI4MTcgTQorQword3N0OmR1dGNoMTIgU0YKKzwyYzFmMmIyYzAxMmMzMTI5MWYwMTFiMjcxZTAxMWUxZjJiMmM+IDc3OTQgMjg2OCAwIDkzNzAgLTEgcworMTcgTFcKK04KKzI3NTAgMzg1NyBNCiszMTM1IDQzMDggTAorZHAKK04KKzI5MjYgMzk1OSBNCisyODUxIDQwMzMgTAorMjg1MSA0MDMzIEwKKzI3NTAgMzg1NyBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorMjc1MCAzODU3IE0KK0MKKzwyNjFmMmIyYjFiMjExZjAxMmIyMzMyMWY+IDI3MjkgNDU2MiAwIDM4NzIgLTEgcworMTcgTFcKK04KKzY0MzkgNTMyNCBNCis3MjYwIDUzMjQgTAorZHAKK04KKzY2MzUgNTI3MiBNCis2NjM1IDUzNzcgTAorNjYzNSA1Mzc3IEwKKzY0MzkgNTMyNCBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNjQzOSA1MzI0IE0KK0MKKzwyYjFmMjcxZTAxMjkxZjJhMjAyODJhMjYxYjI3MWQxZj4gNzcxMCA0MzkzIDAgOTM0MyAtMSBzCisxNyBMVworTgorNTIwOSAzNjU0IE0KKzU2NzYgNDEzOCBMCitkcAorTgorNTM4NSAzNzU1IE0KKzUzMTAgMzgzMCBMCis1MzEwIDM4MzAgTAorNTIwOSAzNjU0IEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCis1MjA5IDM2NTQgTQorQworPDJiMmQxZDFkMWYyYjJiMjAyZDI1MDExZDFiMjUyNTJiMDEyYzI4MDEyYjFmMjcxZT4gNTQ0MiA0MzU5IDAgNzQ5MyAtMSBzCisxNyBMVworTgorNzIwMSAzNzE1IE0KKzc2NjkgNDIwMCBMCitkcAorTgorNzM3NyAzODE3IE0KKzczMDMgMzg5MSBMCis3MzAzIDM4OTEgTAorNzIwMSAzNzE1IEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCis3MjAxIDM3MTUgTQorQworMTcgTFcKK04KKzE4NjQgNzEwNCBNCisxODY0IDc2MTIgTAorZHAKK04KKzE5MTcgNzMwMCBNCisxODEyIDczMDAgTAorMTgxMiA3MzAwIEwKKzE4NjQgNzEwNCBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorMTg2NCA3MTA0IE0KK0MKKzwyYTFmMWQxZjIzMmUxZjAxMmIyODFkMjQxZjJjMDEyYjIzMzIxZjAxMjgyNzAxMmExZjI2MjgyYzFmPiAxNzk2IDc4NjYgMCA0NDQzIC0xIHMKKzE3IExXCitOCis1NTkyIDk3MzAgTQorNTU5MiAxMDIzOCBMCitkcAorTgorNTY0NCA5OTI2IE0KKzU1MzkgOTkyNiBMCis1NTM5IDk5MjYgTAorNTU5MiA5NzMwIEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCis1NTkyIDk3MzAgTQorQworPDIwMWIyMzI1MWYxZTAxMmIxZjI3MWUwMTFkMWIyNTI1MmIwMTAzMGUxMTEyMGMxNzBmMTUwND4gNTUyMyAxMDQ5MiAwIDgyMTggLTEgcworMTcgTFcKK04KKzcxNzQgNjg4MyBNCis4MDY1IDY4ODMgTAorZHAKK04KKzczNzAgNjgzMSBNCis3MzcwIDY5MzYgTAorNzM3MCA2OTM2IEwKKzcxNzQgNjg4MyBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNzE3NCA2ODgzIE0KK0MKKzwyYTFmMWQxZjIzMmUxZjAxMjkxZjJhMjA+IDgxMzMgNjkzNCAwIDkyMDEgLTEgcworMTcgTFcKK04KKzQ5OTkgNzAwOSBNCis1MjUzIDcyNzMgTAorZHAKK04KKzUxNzUgNzExMCBNCis1MTAxIDcxODUgTAorNTEwMSA3MTg1IEwKKzQ5OTkgNzAwOSBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNDk5OSA3MDA5IE0KK0MKKzwyYjJkMWQxZDFmMmIyYjIwMmQyNTAxMWQxYjI1MjUyYjAxMmMyODAxMmExZjFkMmU+IDUyNTMgNzUyNyAwIDcyNjEgLTEgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IENvdXJpZXIKKyUlKyBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDI2KSAyNgorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQyIHB1dAorZHVwIDMgL0MwMDQ0IHB1dAorZHVwIDQgL0MwMDQ1IHB1dAorZHVwIDUgL0MwMDQ2IHB1dAorZHVwIDYgL0MwMDQ4IHB1dAorZHVwIDcgL0MwMDQ5IHB1dAorZHVwIDggL0MwMDUwIHB1dAorZHVwIDkgL0MwMDUyIHB1dAorZHVwIDEwIC9DMDA1MyBwdXQKK2R1cCAxMSAvQzAwNTQgcHV0CitkdXAgMTIgL0MwMDU4IHB1dAorZHVwIDEzIC9DMDA2NSBwdXQKK2R1cCAxNCAvQzAwNjYgcHV0CitkdXAgMTUgL0MwMDY4IHB1dAorZHVwIDE2IC9DMDA2OSBwdXQKK2R1cCAxNyAvQzAwNzcgcHV0CitkdXAgMTggL0MwMDc4IHB1dAorZHVwIDE5IC9DMDA4MCBwdXQKK2R1cCAyMCAvQzAwODIgcHV0CitkdXAgMjEgL0MwMDgzIHB1dAorZHVwIDIyIC9DMDA4NCBwdXQKK2R1cCAyMyAvQzAwODUgcHV0CitkdXAgMjQgL0MwMDk1IHB1dAorZHVwIDI1IC9DMDA5NyBwdXQKK2R1cCAyNiAvQzAwOTggcHV0CitkdXAgMjcgL0MwMDk5IHB1dAorZHVwIDI4IC9DMDEwMCBwdXQKK2R1cCAyOSAvQzAxMDEgcHV0CitkdXAgMzAgL0MwMTAyIHB1dAorZHVwIDMxIC9DMDEwMyBwdXQKK2R1cCAzMiAvQzAxMDQgcHV0CitkdXAgMzMgL0MwMTA1IHB1dAorZHVwIDM0IC9DMDEwNyBwdXQKK2R1cCAzNSAvQzAxMDggcHV0CitkdXAgMzYgL0MwMTA5IHB1dAorZHVwIDM3IC9DMDExMCBwdXQKK2R1cCAzOCAvQzAxMTEgcHV0CitkdXAgMzkgL0MwMTEyIHB1dAorZHVwIDQwIC9DMDExMyBwdXQKK2R1cCA0MSAvQzAxMTQgcHV0CitkdXAgNDIgL0MwMTE1IHB1dAorZHVwIDQzIC9DMDExNiBwdXQKK2R1cCA0NCAvQzAxMTcgcHV0CitkdXAgNDUgL0MwMTE4IHB1dAorZHVwIDQ2IC9DMDExOSBwdXQKK2R1cCA0NyAvQzAxMjAgcHV0CitkdXAgNDggL0MwMTIxIHB1dAorZHVwIDQ5IC9DMDEyMiBwdXQKK2R1cCA1MCAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yMzggOTIwIDcyMl0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIxOTYzM0JGRDc1MzM1QzI5NzVGQUY0MjkxMUUzNkI4ODYyNQorMTFCNzg5QjRFQTMyQzAzQjk4RjkwMEE0Cis2NzkxMEQ1MDNCM0Y3RTQ5QjEKK0MzNTdGOEFBCisyODhCMDVFN0QxMTFDN0Y0Q0Q3QjE1QjFBNDQ5CisxMjkwQkZBMEI4QjczMjhEQzU5Njc5NTRCODMzNjNDNTQwQjhGRUU3MzY1MzUyOEQ4QUQ1RjlENDcxNTU1MzgzODY5RkE5QTk5NUREQzI5QTAzQkRCMkQxNjBEMjFCMEIyQzI4NUJFNUMyNzkwMTAwNjAzNzBGQ0FEOTIxNjJEOEUyMDczNEREQkRCNDlFRUUyRUFEMzQ1MkU2NUQ4MjBBOEYxMjY0QzUyNzEwRDYzNThERkFCRUI3Q0QyMEQ2RUJDQzUzMkNFRjQwNzNDMzM2RDJBQkU1MUUwQTk3RDg5QjdCRTZCODQxNDI3RkRFQTVFMjZGREUzMjdEMUQKKzAyNEMKK0U1RjkxMkU3Nzg2QTc4QUM1RkZGOTNGQkQwMjE2OTg2MDRDOTI0MjE1NENGMjU3Q0M1Njg2NDg1ODg0RDE4NUNCQzQ3REE4NjAwQkZEMjBBRkFGMTgwNzczNzQ4NTBBOTdGNzI2N0QyNDRFOTMyNTkzMkM1Njg5NUJEMjA3NworQ0UyQ0Q2RTQKKzcyNzYxNkRDQjVGQjM4MjM5MDFCMUEzQkRBCitENzNBNUU5NzZDOTI2Mjc5RkVBMkNFQjI3RUNBRDQ4MzkyNkRFMzU0OTAxMTRFNTA1MTdBODFFRTREQTVFMjY0QUQxOTE5MkNDNDFBNzQ3RDdDNzZGQTY3QUUxRjQ2QjkyQzQzQzEzOEUyMEFDRkY1RTIKK0Q0NURDNzU4CisxOTVCMTEzRjA1ODhEMzE0RDBBMzZCNkI1OAorOEVEMEVEMzgzQUVFNzQ1QzgzN0IyMTMxNEI3NjU4QTgzOTkxRTI3RDQxNTFEOQorODI1NzBCNjIKKzg2OUEwMTQ1NTc1NjcxNkUyRDFEQTg0RkM0CiswREZCODUzMkQxNDU0QkEyMDAyNDY3RkUzMjI2RDJDODVBMzE3QjQzMUMzNTU0MERCMTkyRjU5NkI3MzFEQgorMDcxNkIxM0QKK0Q1MUJBQzdGRkRCMUI3NTg1RUUwOEU4NjQxCitDMzAyNDRCQ0UwNURGMkUxMDM3QTc3MTc0OEUzMTNEQjUzRDdEQjA1NkIyQzlDRjkxNkM3RDUyNjBBQjZENzZGMTdGODAyRjY0MzlBQ0UzQjRCMEEyQjBCNzEyNUI5MDZEMEEyMTk2MjQ4QzM1MENFRjVENDkxQjA4Mjk2NkM1NjI3ODdFRjU1NDI4QUU1QTdBNzYxCis2ODJBNDAzOAorNTBEMURCMDM2MDQ1QTFENUNDM0ZENjI2Q0MKKzQ3RDI0N0NDQkYxQjhENDlFOUZGRTIwM0ZDRTVBNDE2NTc1RDNENzk1MkEwOTIyMkZDNTg5NTQzREVFRjE0QTZCNzU5NkIyOUQxRDg2QzY1RDZFQzkwQTRCRDM0NDQzOEUzMzM4RjVEMzlCNUYwNzU5MTIyMzkwREM3QTA5RQorNUQwQ0MwNTMKK0NCOUIxMjhFODk5QjA4OEZCMjgzNUU5N0VCCis2NjkyOEY0NTQ4MDc5NTU5RjUyNDE1OThFNDEwQzdFMkE5ODgzOTIzQ0JDNTZBNDAzQzdGMzQ0QzMwQ0RBMzM5QUYxNUI2MjFEQ0IwRUYwRUY5RDI3MEM5NUQ5RUNFQjBGMDExMThCRTk5RTBCREU0NzQ5MzE2RTY5RTEyRTRGMTIyMjM0NTA4N0EwMjU2OEQ3NkM0OURCQzE5OUFDMUUxNzAxNUY2QUYzRkNENjUzN0UxOTEKK0FGREYwN0RFCiszN0JCRjI0RDNCRTJFMTIyNUEyRDJEQjdGNworQkQ4QzIwNTY4MkVDODcyRDUxMEVDNzBDRUU3NkNEOUVFNjI0QkJFMTlGMUM2NTFBQUJBMjgyRTU4MDU5QjZGN0U3RTlEMjI2NkVGRENGNERDMEI0RkZGMzFFNEFDQ0M3RDY3ODBCOEQwM0IwODhGQkMxRDQKKzdBQTA4RDFECisyNzM3MkI2RDc1QTJERDREMUJFQjZBM0UxQgorRjc2RjkwQzY2QkYwRDNERkQ1RDVGMEUzQ0FCOTc3NDgyQjdBNDRCNzJBREQxOUUwMjhDMjYxNkQxN0I4OTIyQzkzRjY2OURFQzdBN0U1NzZGQkQxQTFDNTIwQkYzQzAzMTczMjgyRDJCQTM3QjY1MEQwNTE0RTU1MzY2NTQ3MjE4NUY5QTc3NzI3QjNCMDYwMEY2Nzk0Mjg0NTgxRDk3NjVGQTg0NzE2RjU3NzkwMTY1NjRBMzk0MjYyODIzQjEyOTQKK0RGOENBODc5CisyRjE1RUI2NkYwMEQzQkI3N0QwQjgwMDMyMENFCis5RDEzODhFQkIwQTBERTVBQzQ4QzcwNjcwNkVCOEMwRjMzQTJFQ0YzMkQ1OUFFRDU3MjVCRTU1MjRFNkZERTM3RDUxNTU5MTkyRjQ1NkZBQTFGQjg0MzNEMkYyQzZBOEIxN0U4NTZBOUI3MjA0QTNFNTcxQ0ExMDQ3MkY2QTQ0QkJEMjQ0N0I5ODdGNzgzNUY4QUNBNDU5N0ZENjVDNjZBNTQ4RjI5QzdFQkQyNkJFNUQzOTIyODcwMzc4RjkxNzVEMDg3RTUwMQorMjk0NDUwQTYKKzM5RDVCOTc5MDVEOUFBQTM4MDIxNDEwODNBCis2N0FFMjAwMTJDNkZDNTQzRjU0M0VFRjUwMTM2QzdGRDBBMTE4QzY5MzMxRUEyMTQ5NUQzMTRDRkUzQUY4NTQ0NjNDQkRBQUVCMjU2MUI5ODI3OUNGQzczNTg4RkY0QzY0ODFENEVGOEZFNzUKKzExQkMzOEU5Cis1RjY1NkREQzc3Qzg5REUyMUU3NERERkVGMUU0Cis3MzAyQzY5MEQ1NjQxNjI3N0I0NTE4REI5Mzk1Mjc1RTk3Q0M3NTg2QjcxQjc0MzE0MzYwQzBGOUM4Q0Q0OEJGOUM5RjhFNURCMDcwRDU2RERGRTAxOUNENDUxMDBCQjQ4OTkzNUQwNEFFOURFMzQ4MDNCRkY5MzNDODI2RkQ2NzM2MzA5NDM5MDQzQTNCNUIzQkFBMzdEQzlDMTUxRTNFMjJBN0JDNDZBMzJBQjY4MTZGQzFCQjdEMzFDN0Q3MkFBQ0QzQTlGNDU2OEQ4MzY5MTIwOTRERDc5OTg3MDBEQjRFREM1MgorRjc1OTgyNkQKKzQ4MkQyMkZEQUJDRDcxMEM2NkM2MzQzRTIzNjgKKzY5MTc1NzI4QjdCNkQ3QjM1OTVFMTNCOThCQzQ0OTUzOEIyQ0NDOEI3MTU3Q0YzNUY2RjUxQ0YyMzU2OTkzMEU3NDFEMTdCOEYwN0I4MUVBOTIwNTg5MTYxMjlGNDI5NzA4N0Q0Mzk2MUQ5QjFBRUI5MjQ4QkIxQjVGQzAyQkU3NUU0NDg1MzZFOUQ3NEIzRTEzRUExQ0Y2QTk3QjMxMURBMkM4NzI1MTZENUM3NDU1OUU2RTY3RTI2NDc3NDU4RDdCNEM1MTlGNUMwNUUxMjhEOTBCMTBGQjhERDJEN0FBQzg3NzlBNjY4NkNGQURFMEVGMkVCQTBGNEUyRQorRDBGMAorQ0UKK0VBRTIxQjM2Cis2RUMwM0RGRThENzgwMDQ4OUQ2MzBGOUM0QQorNjA3NDUwRTg4RDU0RjMwMDY1QTFERjcxN0YwODJFMkJBNDlFNEQ5NUMzNjI2RUQ5NUMyQkQyMDNBNTgyRkJBREI3NDRCQTNGQUUxQ0VCQTYzODI3MzAwODVEN0VCNTRGNzU4RTkxRjdGQ0JBMDI0QTQ4MzBDQzJGOTk5QTU0Qjk5NEJFMTVGOTAwRDc1NTUwRDdBOUY1Q0ZDQ0MyREMzOEI2Q0QxQzNBMkY4NkNFNDRFODUxODFFRERCQjg4QTJBRDExMTA1CitDMjhDQTI4QQorRjZCRUJGM0Q0Rjc4NkY1RUVCRjI0MEU0M0E3RQorQTE0OTU4MDE5ODEyODBDNEUxMjY3RTg1NkRGMTE0QTZGODE0NUMxRURBNzZCQzM3QjczQUVENkJEMDAyQjNEQ0FDOEQ1NUI0QUM5MEFCQ0M1RUY0MTI1RTRCQjc1ODkwMEZBMUUwNDZEN0Q0MEI2ODM1QzM0MjU1RUQ3RDM3NkRENzA5OEZCMDFERTlBNUY4QUM1ODc5N0JFRUFENUVBQ0JBOTdCRTNGMDZGODY4NDc2M0Q3MEQ1MkE5MjQ2MjJCMTY5RjdGRjU5MEMwNzQ3QzRGQzBFQUU5NUY4MTBERDlFN0NDQThCRUZFQ0YwQkNDNDE0N0Q4NDFBRjgxCis3MDg1MUI0QgorRDA4ODMzQjdBNUU3Q0QwRTVCNzU1MDJDQkRFQgorMzk4MkY4NTc4QTMzMjFFMTc4NkNFOTlCRkVCMDZGNDUzNDMxRDg1MjczRkNGMENGNzk1NENDNEE1MDBCODFFQjA0Njc0QkVCNjA0OUY2MDMwOENBNTFBOUM1QUU3NTFDNTlDREMwREIxMjNBMjhGMDdCNUU4QTMxNkY0Q0ZDNzczNTgxQUM5QzlGNzZERDY2RUQxRUIwMjFDQjk1QzQ4RTU4M0Q2MjE3RkNDRTExNUNEMUNGRDVDOEJCRTM3QkQ5NzI1QTUyMUZDQUVBQUE5RkVFNDFEQzk2NjYzNzQ5CitFMjE0NUI4MQorQTBEMjRBNkQ4NjBBODFGOUY3OEUxM0U0ODMKK0QzRUIyMjYzN0NFNTAyMzU4MkY5RUJBMjM0M0Q0MjQwRTBCOTMzRjQ3QjQ0Qzc2RjFEMDlDQ0NENEUyRkVDNkJBQjU4REMzN0NBMjlFRjM3Q0E4RTQ1NDNEMUIxQkUzNDRBNzUzMEZCQUYwNTFCQjBCMjc2NzlFMjFERDIzMDE0RjY5Q0Q4QkU3QjBEOUI4MzM2MEYyRjVGRUNCOEQzQzk1QzZDOUQ0NTJFRENFQTNDQUQwRDU2OTcKKzdGMDQ1NERCCis0N0ZGNkJBODdDNDU0RTY5Q0RGOTg1MDgyOTBFCisyQzZEODBBNjAxQUIyODE4MTkxQzEwMzNFQzdFRDBCN0Y4MjBBQzQ4MTdFREE5QjhCMEFCRkJENDYyNDcxMUNCRTMzNjM3QzY3N0U4REIxMjE2N0VDRTdENkQyRkQ5NDgyNjIzRTUxNzg3QUZGM0Y1RENCQzJCNTc5ODJDODUyM0JDNUE5NEEyRTM0NkVGNDUyNkQxMUI2NDU3RDRDRjg5Qzg1NDA3MzkzREVENUZGRTJBN0FERjdGRkE3QTJGQjYzQjVCNEIyNEVFODNGRTBDRjRFMAorOUFCNEQ3MzMKKzREMDRFOUYzRDkzQjAwODBBREYxMjlDN0QxMDkKK0Q4MEI4QjcyMDJCRDdFOEQ0QURBQzVBNjE4RUY0N0IzMTc5RjQwRUM4OEU1OTFFOTQ1REJDNTFBNUFENkI4N0U3NzRBNzIyNDk0NEQyMjQ1MkE1RkM5M0QxQzQ0M0IwRUIzQTlDNDA0OUJFNTJGMUFCQjZGRUZFMzM0QkZBNkUzRkRFNDJDOTg1NTc4QjAzMjQxOTgxN0Q3NzUyNERBMEMyRjJGODUyREQ3NzQyMTEzMTQzNjM3NEQxNDA2MjdDOTJDRDE2RDlBRUM0OTRBQ0JGMDM3MDY3MTI1QjY3OEY4NkYxN0ZCMkQ3RjA0QkQxREI2QkFBRjNDQjJFQgorMEMxMzEyRUIKK0VGNjM1QkVBN0RDRkU1RDcwOUQ1MTE1QURGMkQKK0UwOEFGN0IzQUY0QkQ2NkVCNjE5Mjg3OUE4NzgxRThDOEYzNTU5NzA0MTlGQkM0NzE1QTRDMEY0RjlFNkYyOTY5NkQzQkRCNDgwRTE5OTkwRUQ5QUNGQThGM0YzRTBENEZGOUQzMkI0RjE4NjZEQ0MwRTQ5RTg4RDc2QTRFQkRGM0E1Mzg5OTQ4RTY0MEVBRjVDMDk3Njc1RkNDNzk4RkJCRjUyM0EyMTBCMzRCNkRDQjQ5M0MyN0ZGNEU0MTIyRUU2OTcwRTU0NTQ3QUE2NjVFNkM1M0FGRUQ0RTIwQTJDNjBERDYwMTVGQTM2MDc0Q0ZCRDk5MzhFOTI4NAorNjE3QgorQ0I0NjQwCis2NUNFOTZENworNjk2NUNBMkVCREJDOUZFNTA2QjdGQjA3RkQKKzc4NTUxOEQ2MDUxNDRFMUJFOTM4OTNDNjA0Q0YyQzY2ODNFMUNENTlFN0E4MTBFNjRDMDc1MzVGNjYzOTE2N0JGNUNEQjgyMTVGRkU4OUM3QzUzQzhBMzBGNENCMENFQUVDODc1QTAwMTg1MjhBMzY5MkRCRkQxMUE1RjNBOUE1QkUyMDQzMTAzQUU1OEE0MjY4MUE0MTBBMUYzMEMzODkzQgorNjIwRkRDMjEKKzk0NDk2MzA3RDkwREE3ODgwNTRCMjY3OTM5OUQKK0VBQTNDNEJDQjMwMjI5MUY4NDlFOTU5NEY4MUQwMjNCNUZEODE0NTg2Q0E2QUJEMkM4MjcyQ0FCMDBCRjk1NDFFQ0U0MkQxNzE1ODQ3OTg3MUREOTRBNTk5QzcyMEE5N0ZDRUUyQjc3OEE4M0RFQjU1RjE1ODFDNzNCRDREQUVCREU1MjY2MzJDMURBNDk0RkI0OTMyQjg1OTVDRUI0REUyNzUyQzY4MDNENUY4NEIyM0E5NkQwRjk4ODZEQjdERjYyMjc1Q0FGCis2NTgzQkI2QQorN0U5QTVFNkZCMzM1MTVGODI2MzQyNTNDMDQKK0ZDRUU5Q0IyQjM2RkE3ODNBQTQ5MTU2QjM5RUNGMkM0RkM3QkY3NzVFQjkzCitCMEMwNEE0OAorMzU4MTI0MjcwOTYwMjBCNTNDRDc3M0U1NzhDRQorMzk0RUZGQTE3RDlEREJDODkxODkwNDM3Mjc0NjU4NjNBNkUyOTkxOEM5RjU1Njk1OTg0RjRDNTk0Q0I0MTA3MkQ2NDRENDNGMkRBOTgzNkRCOURFMTI4NERCRUFEQUJBNEQ1NjRBQ0ExOUM1QjNDNDMwNDk5Q0VCQzkyOTFBN0NCNTFFMEI4MzJFN0ZCMDJDRUQwMTJGRDZFOTZDNjFBQUU3NDk5ODgzMTFFRUU0MzAwRUY1ODQ1MEIzQzFDOThCMDQwRDIyMDI3MzE3MDI0MEQ4RkY4NDU3Q0Y2REVCNTJBMEM0NDUwMUQ0Njc3QzRBMUIzODRFNzZBMkJGCis0RUFFCitDMEE0QjUKKzdDMjk4NzQ1Cis0NjIwNkNCQzEyQ0ZDRkUzMjlEMkQxRThFRAorODYwMzBCNkY4RjkzOTc2QTVCMDMzREY0MDA3Q0EwODcxQTU5N0YyOUNBQjIwNzk4MUM1NzA0MDRGQTE4RkQwOUUzNDVGNTU4MTI3RDg3RUE3QUREM0Y0RDY3N0VEMDY0OERGNzg2RkRFQkU0MkEwN0QzOTI2MDM0OTk3NjZERTQ0QzhFOTM3NUE4NDBCMjY4MTg1RDNCRDJDREJENEMxQTQ5RDFDMzBDM0UwQzhGNjIKKzBBODQ5QkRCCis4QkExMUFEMkJBRkM2N0Y2Mzc3OTMzRkRGQgorNEU5RTFCNkQ0M0Y1Njc0QjEwM0UwQjBDRTc2QTYwNjM2M0JGMEFCMzU1QTdFRjA5NzQ4MjY2QzZBMjE5Rjk2OENGRUMyQTZERTVBQkQ3NUQzODlEQ0RGREI4QUI3RjEzQjJBNTZBOUVEOEJCRDNEMUNCRjQ5RDI0MTkxMTdDMkJGQzM3QjE2MTkxOTNCNjQ1OTZBMTQ5MzVGQzJBQUZENkZGRTkKK0E5NUZGMzExCitBQzc5MjMxNkI0OTY2NDQ2MTQxMDcxQTNGOEE5CitENzA0RkRGQzA0QzQwQkM5MTEwNUFCNzY1M0JBN0YyRTkyN0YwRDc0QjNDOTgyMzhENDk2ODEwQUNGRjZBQ0EzQUZCREE1M0RFRUNENkEyQTU3RTNGN0RGQjQzRUJGRkE4NEY1MzdGMEI1NTg5MDAzQzBDRkYxMzBERUJFNDU3NkQyNjVGNzhFOEFBQ0M1QUE5QUFEQjM2NDMwRUEwQkNFMDFFMDA1QUVGNjU3REU5RENERUNBNkM3OUMxRUE3RjdCMDMzQzQzMDQ1RkIzNDMxNzNDNThBMEI1QjFECisyODEwQzAxOAorM0IyODNGN0IwRDE3NDg3NzdFQzA0Rjg4NzYKKzEzNEU1QjVERTY5OUY0NkQ2MzU4RkQxMzVDQjhDRkI0MUFEODdCNjM3N0M3RDQ4N0Q1NDM2NkEwOUQ1OUExMzYwMDg5NTE3MDFEMTE1Q0ZENENDQTJBMzk3QTg0RTk2RjMwNzQ1QURBNzlBNjMwQjQ5OEUzODAwOTA0MzI5MjQxQUU2MzQ1NDVCRDU0QjY3Q0ZFMjZBOTI1RUU2Q0Q0MEYyRDRFMjJGQkE3OTA0MTU1NjUKKzc1Q0ZEMkU2Cis3Mjc1OTU1MTU3QjlGMUE1RTczQjM0REY1RQorQkIzODg1RERGNjk0NUE3Nzc1OEIyRjRCMUM5OUIxQzI3RTVDRUZBN0EzNTY5NkQxNzVERUI5RUFGQkM0MEI1RTU3M0RBODQyN0Y3MkY4QjQ5MzY4NzFERjBBRjQxN0FFNUVFMjlDQTFERTlGRjA5MjExMkFCNkE0NDQ1N0E5MjYwODhCQUI0RTc2MTkzNTdFODgyQUIxNTNDODdCMjlENEZGODQwM0U5RjRCNTAyQjhEMTdCMTc0RAorNTE5N0ZENUUKKzlCRUE3NkEyQTQ3NDE5OTBCMTc5OTQ1QkNBNkEKKzcxRTQzMjlEMjNCQ0E5RjJEMEVCNjRFQ0ZENjZBMEMzNUM1RkE3NzQxRDRBODJEMDM5MkRGRDAwNzM4Nzg2OUJBMkRGODE2MUI2ODY0REQxNjdFQjE0NjA5RDE0M0E2RjQzOTdBNDAzOEE5NDA4REZCMTE1OTEwOTY0RjBFNDY1MzQ2MEU5MjcxMjA0RDg1QzFCRDY4NkM1QTA3QjE4RTI5MkYyMUY1NjY5MEM0OTg4NDU0QUE5NDhCNTAwM0M3M0RGMUM3RkQ3QzMyQTI3MjdGQjVCQjVGOUQxRTE2RjEyNzZCNDdGRDA0QUEzRTU5M0Y3RTVCMjY5MTEzMQorMEYxOQorQTEzNEVGMDM5NjI1NjEyQzUyQjIxMjUxNkVCQTQwQjQxRjI2MTZCN0ZDQUFCQjM3RTQ4RTI1MzUxRDE1MkZDQjUwOUY5QUM1RUIxQ0IwMDQ1NTVBRjkzODNFN0M5MQorMkM2RDNGRjUKKzcwQ0U5RDdDRTFDRUMwNjIzNUFBNkU5RjA0RDEKKzZBRjE1NjEyNDY1NDlBN0U5MzRBQjlBMkQ3MzYzRDM4RUVBNzc2OTZGQjcyRDQ4MzA0RTdDQzZGQjk4QTU0MjRGREE4OTYyODU1NUNBMzkxQzM4MDQwQTIwN0ZGNkExMTVFOEI5QUMxNDREMDk4NjZEMDI5MkE2NkQzQzc3MERFOTA5ODAwNkZDQTNEM0QxNDk4MEU3OTM4ODlCMkM0NjI5NTA4QzIxN0NGRjc0QkYyOTkxOTk3OTNBRDlBMzRBMTI5NzJBQUNCRkM2Nzk5ODg0RjE3Q0ZEM0RBCis3OUU1RjZFRgorOEZCMTU5NzMwOTNGNEFGNUFFMjFFOTc2NDMKK0M1RkYzMjk2NjkxRDdGRUExMTlEMzhCMTI3N0NBN0MzRDc1NzYyQzNGNTAzMDJENkVGRUYzNzdGNDExQjI5QjJENzg4Q0FBREQxRUM1NEE4NjBCMjJFOEE2MUNBNkVDRjJFNDUzNjRCOEIxOTAxNzBBOTA2MkQxOTgzMjI5QzI3MEVBQzI2OTE4MUZGQTI4RTBBMDBDNEREQjE2MjEzNkQKKzlBQzhBNDQ5CiswREM3Nzg1NUNENEUzNzA2NjAyNzk1MzdBQzk4CitFMTY2NkM3NjlEODJGMjM5RDA4RkM4NTE2RDZFODUxMkJFMUVDQUYxN0MyNTcyMTNFNDQ2RUZENjBBQkQ4QzQ4M0E3MEIyMTBCRjJFMDc3OUU5QjE3MUI3OUNDMzFGRTVBRTQyMDQxMTM0MTZCN0YwQTkxNzA2NkU4RkFEN0IzNUNDQzM4OUQ0NEQ5OUUxQzdCRTU1OTVDQzk3RDVCMTk3QUFFRjE0OTY4MjkyNDA5NTgyQUExRjMxNUE5QjRCMDVGMDM0NURCNUYwOTY5RDNFQjBENzk5Qzg1REM3M0QzNEI3MDRGOEJCNjcxQ0U5QTBEQzUwQjYyRDZERUIKKzlFQzcKKzdBRDg1M0MxNEU3NjdBRjAxRjBBMjczNjU2MTM3RkFBRjJCQjY2QTc2QjMzRkJBOTJFNEEwMTgyNTVGQTU3NkY5NjkwMzYKKzUwMDQyRUFDCis2OEE2NzJBNTdGRjdFRkI3ODc2RUQxNUJDRgorMkZCQTQ4RDFDNzNBM0ZDRkU4ODQwMzJDOTA1NEQ1NTE3NzEyMDJCMDlFQ0Q1OUE3MTJDN0E0MzRBMTEyRkI0RDRBQjQ3RjRBOERGQjk0RjYwQjAwRUMzNTFEOTREN0IwMDU4RTg5ODJFODU1Cis5OUQzNzU5QQorQkNFNzY2ODk2OTVBMzM0MEUxQUY1QUExMkZERQorM0IzQkY1MjVEQTI3RTJBOUIwQ0MxN0E0OEFFREU5OTk1NUM4RDNBRTg2NjNDNzAzM0M0MENDNDhDMzdGOTIzMjFFQTZDNURFOTUxRjA3NjAzNEEyQjI0NDVEM0E4MTMxMUM1QTM0NDU2N0FBODYzN0IyQTU2RUM2RDIzRENCOUJFNENCQ0MwRDk4QzgyMDI3NEQzNkM3Qzc2ODFBNzNBNENCNzFFQTA0QzE2MjQ5QTZCNEY2NzBCOUI4MzZCRjlDRTUwMkY3Q0ZFOTFCRjIxQkI0OEU3MTVGN0FFODYzMkRDMEM1OUQ5ODU3RDY4NkQwMDkyQzQwQUJGQUUwCiszODRGCitDRTE1QTI0NUQxQjA2MjY2MDRCNkQ4QzQwMDM4NzM0RkQ1MUZENDAyQjlBMzcxRDc2NjY1ODVFMTcyMUI5MworRTIxREVFRjIKK0I0NDdEMzA4RkE5RTA0OUE0OEQ4QTgwREM4QTkKK0E1QUI3OTE4NTEwRkJCQUY1NzgzQjczMzRFMzc0QzY2OUYwN0Y2OTdFRjE0MDdDQjQzNUZBNUNGNDRFMkQyRTUwRTI0NkY2NkVENTM2MTg4QUY4MTk4NTYzMjcxMzNFQjQwNDNBRkFGMjAwNTE0QjdBMzg5NzkxN0U0MEJBQjVGNjA5QTE3NjVEMDc2NjczNDlCM0FFQUU1RjRDOUQ5NUQ2MDNGOTE4MEVBNDQ5MjRCMDI1RDQzRjNBNjA3OUJDRDU1NEYzNkI0QTZCOEJEMEFDMzlEMEVBMgorODI1NDc1QjIKKzJERkZCOTlDRkY1NzJBQjgyM0JFMDMyMTJBCis4MDg3MTEwODk5NjM1M0U5QzMyM0M2N0MyNjZCOTA0MjJGQTVBOUFGRDUzMjZFOTFDREZBRUVFNkU5MjJGQ0UzNzZBMkQwREE3NDQzMzU1Nzc2RjM5MjI4NTdBQTBGMUU4RjE2QUIwNzgzMTM2NDkwOTcyNUQ3QTkxMjA3MTE2MDdBOTZBQkVGNEQ1NworQ0RFNDhDOUIKK0YwREVGMjM4Q0ZDMjg4ODE5Njc5QzM1REUyN0YKKzIwNDI2NzhCOTlFRkEyQzdDQUFBMzQ5ODQzRTkyMkQ0QzAyNDFGODAzODUxNkZDMzg4MDIwODZCMjc0RjBBOTg3QjZGNzNENEQ0QTYxM0ZDQzQ2RUFCQzQwMkIzMTA3M0YxNjk4Q0M2RDEzRjM3RTJDMkUxMEUzNTY1QTc3OTU0NDkwNjVDRDZGQ0Y2RTU5RTc4MjAzN0U1NUZEMDlEREQ3Nzc5OTdDQkZDMDA3Q0U4ODY2M0JBRTg4QzQxNTdDRDExQ0VEODgwNEZGMjNDNjg1NkMxNDYyRjI5NjhDQzUxMUI1MUYyMEQ5MENFN0QKKzlBM0ZENDE4Cis1REM3MjA5MTk1RDFGRjRDQzg2QjFDMTlEQ0Y3CisyQTY4NEIzNzQyRUNBRUZBQzBGQTY0RjhBMUI3OTcwODNFMzQxQkVEQTUyMzJDMDQyMjMwOUNBMUY5ODk0OUVEQzIxMEJBQkQxNjNBRDE2RDNEODI2OUJGMUEwQzlBNkJDNDAzRTMyRTRFRUZGQTcwMDgzQTlEQzM1M0MxRjVDMzBERjlDQ0RBMTNDRTk2NzY3OEIzQzlEOURENzNDRUYzMDdFODE5MTJFNEQ1NkFBOUUyNTczNzA0OTc1OTFFMzhEMUE5NzQ4Q0MwMjJDMzRGMzcxNgorOTUwNEMzNTAKK0VCQTFEMDAzM0ZDNkY4RjI0QTcwMTU3MEQ5Cis1NjMxNjhGMEM2ODczRUVDOTU5RkMwQzFFQTQ2NDZENTdCQjhGRTU4MzQzOEM4MjkxMTlDOEYwQTM0Rjg3OTYzMkVENTAwMkMwMTYyNTJDOTVFMTM5RTU4RjI5Rjk0MEEyN0I1NUVDMzhGQThENDQyQTMzMTlGMkYzOTA0QTE2NDI4RjkyOTM2OENDMjIzMjY1MEMzMzBBRTQwNTE0NTM3NTJEOUJGNUI4NDM5NTIKKzQ2Qzc3MDZFCitFMkRFNTg1MzAxOUE3OEIwQTdDN0U4ODhGNUZDCitEQjM1RDcwRUE4M0UzREU1N0Y4MjVCRDQ0NDlDQjVDQTAxNkU5NUNDQjVBRjU3MTA5MEVDMjgyMzc4QjM4MjRCOEE0QjlCRTVGMzdENTIzQjYyRUVBRkY3QjgwQjI0OURBNERDRTA5MUVBMENFMDgxQUE3NUY5Q0E1NjgxMTYwMDRFQTAyQ0IxNzkzQzlBQ0RFOTI1N0VFNkE0RTZBQkFBQ0EyQTQwMUM5MTQ2RUQ0NzAwMUUyMTA4RjU5MzA0MDczMDU3QzBCNDNFQzlDRTA4RDEzQkU4MjVCQUUzQzA4MEE3QTFBMkI1ODJGQkJFRjc1MTIzRDFFRQorODFBNzQzQUQKKzZEOTJBQjZFRkUyQTZFOTY1RUM5RTY0MjVECis0RkE2N0ExODUyN0I2NzIwQTk5NTFDMDc2RTJGODg5QzIyNzY4OUJBMjhEMUJEMEE5ODQ2QkQwQUU4RkFEOThERURCNDQyNDAyRUM1Nzc2QUNEQTY3QTI1QTk0MTA5NDIzODVGQzc4RDI1RTMwNDFBM0IzQjJCNERCOUFFMENENkFFQkNDRThFMDMKKzg1REEzRTZBCis1NEU5Mzc3MUEyRDJBN0NBRUZDQzgwQTkxNworQjgzRjk1NUM5M0M3N0FCOTM5QTg0MDE2M0FBQUIyQzczREM3ODE4RDQxQjBENjRFMzc3NEI2NEY4QjIwMEEzOEEwNzY1RTc4NURCQzE5OTZBMUQ5N0ExNjc0RTVFQTRENUM2MDJCRjhCNkY1QzE3Qjk4OTM1MTc3RjcxNjM0QkQzRDJDQzhGRjQwMjhGOEZGOUJBQjA2MDM1ODYwQzU0QUUxRTAxOERGQTdFRkQyNDhGMUNGQ0U1NTAxRjhGMDA2QUFCMAorRDRCQzQ5NEQKK0RENjE0OTQ0OUU5NUFGNjY4OEVFMzM3MDkzCitGNUM4QjY0RjMyNzE4QUIyMTcwMTY4QjkxQkZBNDQwOTU2OTM0MkM2RUI2REVBMTc0MjQ0RjBCRjhCNTQ2NkMwRDUxNjYzRjAyOTk3MjA5NTdCQzU4MDRENzZBNUM0NzkwRjVCQjlDRjE4QTJCRDZDOTJGRDFDMjFFQzI3NTRFRkRFMUMwN0U4QUNFQUZDQTYzMjY1ODZFRUI1RDMzRjcwMzEyMUE4N0I1OTA5MzRBNDA0CitFNjY2Q0Q5NgorOEQ5NTc2OTYxNThBNjhBMUJCNjE1MDg4Nzg4MworQjNDOUFDMjM5QkRBMEEyQTMxNTlGOUM5MkFBQzlGMDU5MDE0Qzg0RUYyRjZDMzQyMEY1RjJGNjMzQUFCNjYxMzA3REZGMDE2Nzg5MzlDNjI1ODgxQ0JDRDgwRjdGODVCMEFDNzAzODk3QjE3MUYwQjkwRTAwN0JGMjE2NjdERUY2MzQ0N0YzMDQxMzYyRDM0RThEQ0I5REVGQjhCQUNGMTNGM0Q2RUE3RUFDMjU2NDdERTVENTZFQUM0RkJDMEJCRjY5M0M2N0EwNzg5OEM4N0U2OUFGMTI5QkE5MzRGNjZGQjJFNjA1RTREMzdCOUZGQjhBNTVFQTFCMzdBCitFMDYxCitCRUIyNkE1RUQ0Mjk4OEE5QkI3QkY5REE3N0VECiswRkY0OTJFOQorQ0IxRUZENTk3MEZGQzVGOTA3QkZDN0M3QTRCRgorNERGNkQ2RTA2NUIzRERBNzU2MkUyQTczMEZCNjZFNDk3M0I5NjU3QTAyNENEMDhGNThFMEI3RTk1OEYzRTczMEZENzk0REE3RjkwNjBFOUE4RDRCRjgwMzEzOENGMUVFRDFDNTc0REUyMEM5QURGQzY3RDZCRTFERDk3REVDRTQzM0I5NzkwNzEwRjIyMjgyNEQzMTM1QjVGMDg4NDdCMUQxQTgzQzExNDc5MTM2NDNBQjhCOTA5RDJFNzdGMDQ0RjEwNzE3MDZENzYwNjFBNDgyNkY0NDdFQ0M2NkEzREY5QTQ1RjIwMDREMUUxM0QwMzYzODk0QzgwNjVDCiswMjNGCitCN0JCNDA4REI4QTBCOTI3NUVEQUZBMTAwN0ZGRTI1MjQxQjdENUFBQjYzQzBGOTdFMgorRTg1MDlCOUQKK0MwRTMzREU1OUQ2MUQyQzA5Q0Q0QzI3QzU4QUEKKzQzMkYzMDA3NkE3NTU0Nzk4MjJBMzYyOEFDNTE0NDVGRjY4MkMwNUNDREFBNjlDNEU2NjhDNUNDRjlCMjZERkQ2NDgxREY4Q0I2OTcxRUE0OUQ1MzQ5M0Y5NjlGM0VEQzRDMEMxMTVBMTBERjNCOUY5MkQyMDk4NkU0QzdDRTM0QzhCMjZFQzE0NDczNTZENzExRUE5NEJEQ0ZEMjcyNTlFRUM2OEQ2MDcyQzg4RTJCMzVENzBDN0NCNDFDOUEyNzM0RkRCMEExQzMwNUI3QjNCOTcyQkJBQzkyQzc4QjA0NEEwQkI0NDJBMjU5M0JBMzUzODlGMjJDRTZEQgorRjhCQgorQjYzNDBCODEKKzhFRjNENjI1N0VDMDlEMTEzNkRGMjZGQzM4CisxRDhEODcxRDkxRDE3Q0I3RDU2NEVBQ0UxQ0E4NzJBMTdCQTJBOTVGRjA0NURBMkY1QjQxRjNCNzcwMjQ4QjU2MkZFOEM3QkNEQjlFMDVEMEY2NDgwRkIwNTQxNjA1RkUwM0VFQUM2OTNGRkM1MDk2ODg5QTI5OEM4RTA1Q0EKK0UwMUNENDUxCitBMzQwNzgwRDI2M0YxQ0IxQ0E4OTJCNURFMworNzc3OTA4NjJFM0ZDNTAzOTMyOThGRDg2QkJDM0Q0QzFGNTY5MEE5MTA5MjQKKzA3NjkzOUNBCis1NzdFRkFFQzc0MzA2M0NGQjU5OTFCMUU3RjU3CiszRDhDMDk2NDk5MjA4NDJFCis5MDNCNjlCQQorMTE2RkVGMUQxQzVEMEVBMkQ3Q0FFNzU3OUY1RjI3RkE1RTI1RTlGNTc1QTAzODMxQUI3RjRGMkYyMzVCODM0QzhGMzgKK0I1QjNCREM5QUEzMjU0NDFFQzRCMEQ1NjdBQTZGMUZFRkI2QzgwMzYwODI1MUYyN0I5MjAyMzY5MEJFMjRBM0JFM0ZCODZDMUNGRkMKKzcxOTI5MkU2MERFQURBMTUxQUMxM0UyRjBGMEVDNEVFRDk2QTYzNUZDNjhBQUFDNzg5RDc1QworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IENvdXJpZXIKKy93c3Q6Y291cnBzMTAgMTAuMDAgL0NvdXJpZXIgL3dzdDpjb3VycHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTIxZDJiMjcxZDI5MWUwYzAxMGQwMTBlMWQyNTFiMjAyNDE5MjkyMjAxMWUyNjI5MDExMTFkMTkyYTJjMjkyMTI1MWYwMTEyMWQyYjJlMjYyOTIyMDExMz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwxZDI5MWUyNjI5MjQxOTI1MWIxZD4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDgwYj4gOTM0NiAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE2MjAyMTJhPiAxMjcxIDE0MzEgMCAxNjY1IC0xIHMKKzwwMDAwMmIyMDIxMjkxYzAwMmExZDJiMDAyNjFlMDAxZDJmMTkyNDI3MjMxZDJhMDAyMTJhMDAyYjE5MjIxZDI1MDAxZTI5MjYyNDAwMmEyNjI0MWQwMDAwMDIxODE0MTQwMDJiMWQyYTJiMmEwNTAwMDAxNjIwMWQyYTFkMDAyYjFkMmEyYjJhMDAyYzJhMWQwMDE5MDAyYjJlMjYwNDIzMjEyNTFkMDAyOTFkMmEyYzIzMmIyYT4gMTY2NSAxNDMxIDE5IDk1MzEgMCBzCis8MWUyNjI5MjQxOTJiPiAxMjcxIDE2NzYgMCAxODg2IC0xIHMKKzwwMDI0MmMxYjIwMDAyMzIxMjIxZDAwMmIyMDE5MmIwMDI2MWUwMDJiMjAxZDAwMTcwZjEzMTgxNTE2MTQxMDBkMTEwMDJiMWQyYTJiMmEwNTAwMTYyMDFkMDAyNjI1MjMzMDAwMWQyZjFiMWQyNzJiMjEyNjI1MDAyMTJhMDAyYjIwMTkyYjAwMmIyMDFkMjkxZDAwMTkyOTFkMDAyNTI2MDAyNzI5MjY+IDE4ODYgMTY3NiAxNiA5NDYxIDAgcworPDMyPiA5NDYxIDE2NzYgMCA5NTMxIC0xIHMKKzwyZDIxMmEyMTI2MjUyYT4gMTI3MSAxOTIxIDAgMTg3NyAtMSBzCis8MDAyNDE5MWMxZDAwMWUyNjI5MDAxYzIxMmEyNzIzMTkzMDIxMjUxZjAwMjMyNjJhMmIwMDI3MTkxYjIyMWQyYjJhMDMwMDE5MmEwMDJiMjAxZDI5MWQwMDE5MjkxZDAwMjUyNjJiMDAyYjI2MDAxYTFkMDAxOTI1MzAwNTAwPiAxODc3IDE5MjEgMTMgNzMyMSAwIHMKK0dSCitHUworMTI2MyA3ODE2IDk1MjIgNzgxNiA5NTIyIDIwNDggMTI2MyAyMDQ4IGNscAord3N0OmNvdXJwczEwIFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDI0PiAxNDQ5IDIxODIgMCAxNTU1IC0xIHMKKzwyMDJlMmY2ZTY1NzQ3MDY1NzI2NjIwYjE3NDIwNTQ0MzUwNWY1MjUyPiAxNTU1IDIxODIgMyAzNjc1IDMyIHMKKzw1NDQzNTAyMDUyNDU1MTU1NDU1MzU0MmY1MjQ1NTM1MDRmNGU1MzQ1MjA1NDQ1NTM1NDIwNzQ2ZjIwNmM2ZjYzNjE2YzY4NmY3Mzc0PiAxNDQ5IDIzNTggNCA1NDc3IDMyIHMKKzw0YzZmNjM2MTZjMjAyZjUyNjU2ZDZmNzQ2NT4gMTQ0OSAyNTM0IDEgMjgyNyAzMiBzCis8NTM2ZjYzNmI2NTc0MjA1MzY5N2E2NTIwMjAyMDUyNjU3MTc1NjU3Mzc0MjAyMDUyNjU3MzcwMmUyMDIwMjA0NTZjNjE3MDczNjU2NDIwMjA1NDcyNjE2ZTczMmU+IDE0NDkgMjcwOSAxMSA2MzI1IDMyIHMKKzw1MzY1NmU2NDIwMjAyMDUyNjU2Mzc2MjAyMDIwNTM2OTdhNjUyMDIwMjAyMDIwNTM2OTdhNjUyMDIwMjAyMDU0Njk2ZDY1MjAyMDIwMjAyMDUyNjE3NDY1PiAxNDQ5IDI4ODUgMjAgNjExMyAzMiBzCis8NjI3OTc0NjU3MzIwMjA0Mjc5NzQ2NTczMjAyMDYyNzk3NDY1NzMyMDIwMjAyMDYyNzk3NDY1NzMyMDIwMjA3MzY1NjM3MzJlMjAyMDIwMjA3MDY1NzIyMDczNjU2Mz4gMTQ0OSAzMDYxIDE2IDY0MzEgMzIgcworPDM4MzEzOTMyMjAyMDIwMzgzMTM5MzIyMDIwMjAzMTIwMjAyMDIwMjAyMDIwMjAzMTIwMjAyMDIwMjAyMDIwMzEzMDJlMzAzMDIwMjAyMDIwMzEzNDM4MzAyZTM1MzU+IDE0NDkgMzQxMyAyNSA2NDMxIDMyIHMKKzwzODMxMzkzMjIwMjAyMDM4MzEzOTMyPiAxNDQ5IDM1ODkgMyAyNjE1IDMyIHMKKzwyNDIwMmUyZjZlNjU3NDcwNjU3MjY2MjBiMTc0MjA1NTQ0NTA1ZjUyNTIyMGIxYjEyMGIxNzIyMDMxMzAzMjM0MmMzMjM1MzY+IDE0NDkgNTIxMSA2IDUyNjUgMzIgcworPDU1NDQ1MDIwNTI0NTUxNTU0NTUzNTQyZjUyNDU1MzUwNGY0ZTUzNDUyMDU0NDU1MzU0MjA3NDZmMjA2YzZmNjM2MTZjNjg2ZjczNzQ+IDE0NDkgNTM4NyA0IDU0NzcgMzIgcworPDRjNmY2MzYxNmMyMDJmNTI2NTZkNmY3NDY1PiAxNDQ5IDU1NjMgMSAyODI3IDMyIHMKKzw1MzZmNjM2YjY1NzQyMDUzNjk3YTY1MjAyMDIwNTI2NTcxNzU2NTczNzQyMDIwNTI2NTczNzAyZTIwMjAyMDQ1NmM2MTcwNzM2NTY0MjAyMDU0NzI2MTZlNzMyZT4gMTQ0OSA1NzM5IDExIDYzMjUgMzIgcworPDUzNjU2ZTY0MjAyMDIwNTI2NTYzNzYyMDIwMjA1MzY5N2E2NTIwMjAyMDIwMjA1MzY5N2E2NTIwMjAyMDIwNTQ2OTZkNjUyMDIwMjAyMDIwNTI2MTc0NjU+IDE0NDkgNTkxNCAyMCA2MTEzIDMyIHMKKzw2Mjc5NzQ2NTczMjAyMDQyNzk3NDY1NzMyMDIwNjI3OTc0NjU3MzIwMjAyMDIwNjI3OTc0NjU3MzIwMjAyMDczNjU2MzczMmUyMDIwMjAyMDcwNjU3MjIwNzM2NTYzPiAxNDQ5IDYwOTAgMTYgNjQzMSAzMiBzCis8MzkzMjMxMzYyMDIwMjAzOTMzMzYzMDIwMjAyMDMxMzAzMjM0MjAyMDIwMjAyMDMyMzUzNjIwMjAyMDIwMjAzMTMwMmUzMDMwMjAyMDIwMjAzMTM0MzIzMTJlMzMzNT4gMTQ0OSA2NDQyIDIwIDY0MzEgMzIgcworPDM5MzIzMTM2MjAyMDIwMzkzMzM2MzA+IDE0NDkgNjYxOCAzIDI2MTUgMzIgcworMTcgTFcKK04KKzY3MjAgMzM5NCBNCis3NDU1IDMzOTQgTAorZHAKK04KKzY5MTYgMzM0MiBNCis2OTE2IDM0NDcgTAorNjkxNiAzNDQ3IEwKKzY3MjAgMzM5NCBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNjcyMCAzMzk0IE0KK0MKK3dzdDpkdXRjaDEyIFNGCis8MmIyMDFkMDEyOTFkMmEyYzIzMmI+IDc1MTIgMzQ0NSAwIDgzNjUgLTEgcworMTcgTFcKK04KKzI3MDUgMzM2NyBNCiszMDUwIDM4MTggTAorZHAKK04KKzI4ODEgMzQ2OSBNCisyODA3IDM1NDMgTAorMjgwNyAzNTQzIEwKKzI3MDUgMzM2NyBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorMjcwNSAzMzY3IE0KK0MKKzwyMzI2MWIxOTIzMDEyOTFkMWIxZDIxMmQxZDAxMmEyNjFiMjIxZDJiMDEyYTIxMzExZD4gMjczNCA0MDcyIDAgNDg3NiAtMSBzCisxNyBMVworTgorMTk1MCAzMzYwIE0KKzI1NjAgNDE1NyBMCitkcAorTgorMjEyNiAzNDYyIE0KKzIwNTIgMzUzNyBMCisyMDUyIDM1MzcgTAorMTk1MCAzMzYwIEwKK0MKK3t9IC0xLjAgLTEuMCBzb2xpZEZpbGwKK2RwCiswIExXCitOCisxOTUwIDMzNjAgTQorQworPDIzMjYxYjE5MjMwMTJhMWQyNTFjMDEyYTI2MWIyMjFkMmIwMTFhMmMxZTFlMWQyOTAxMmEyMTMxMWQ+IDIxODIgNDQxMSAwIDQ3MDcgLTEgcworMTcgTFcKK04KKzE2MTAgNjc4MyBNCisxNjEwIDc1NDUgTAorZHAKK04KKzE2NjMgNjk3OSBNCisxNTU3IDY5NzkgTAorMTU1NyA2OTc5IEwKKzE2MTAgNjc4MyBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorMTYxMCA2NzgzIE0KK0MKKzwyOTFkMjQyNjJiMWQwMTJhMWQyNTFjMDEyYTI2MWIyMjFkMmIwMTJhMjEzMTFkPiAxNTQ0IDc4MDAgMCAzNjgxIC0xIHMKKzE3IExXCitOCisyNDgwIDY4MTggTQorMjg4MSA3MjY5IEwKK2RwCitOCisyNjU2IDY5MjAgTQorMjU4MiA2OTk0IEwKKzI1ODIgNjk5NCBMCisyNDgwIDY4MTggTAorQwore30gLTEuMCAtMS4wIHNvbGlkRmlsbAorZHAKKzAgTFcKK04KKzI0ODAgNjgxOCBNCitDCis8MjkxZDI0MjYyYjFkMDEyOTFkMWIxZDIxMmQxZDAxMmEyNjFiMjIxZDJiMDEyYTIxMzExZD4gMjgzMCA3NTIzIDAgNTE5MiAtMSBzCis8MmMyYTFkMDEwNzA2MDgwOTAxMWEzMDJiMWQwMTI5MWQyODJjMWQyYTJiMmEwMTE5MjUxYz4gNjUyNSA1MDA0IDAgODkzNSAtMSBzCis8MDgwYTBiMDExYTMwMmIxZDJhMDEyOTFkMmEyNzI2MjUyYTFkMmE+IDY1MjUgNTIwNyAwIDgyOTQgLTEgcworMTcgTFcKK04KKzU1OTIgNTE3MyBNCis2MzI3IDUxNzMgTAorZHAKK04KKzU3ODggNTEyMSBNCis1Nzg4IDUyMjYgTAorNTc4OCA1MjI2IEwKKzU1OTIgNTE3MyBMCitDCit7fSAtMS4wIC0xLjAgc29saWRGaWxsCitkcAorMCBMVworTgorNTU5MiA1MTczIE0KK0MKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBDb3VyaWVyCislJSsgZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgyNykgMjcKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDA0NCBwdXQKK2R1cCA0IC9DMDA0NSBwdXQKK2R1cCA1IC9DMDA0NiBwdXQKK2R1cCA2IC9DMDA0NyBwdXQKK2R1cCA3IC9DMDA1MCBwdXQKK2R1cCA4IC9DMDA1NSBwdXQKK2R1cCA5IC9DMDA1OCBwdXQKK2R1cCAxMCAvQzAwNjUgcHV0CitkdXAgMTEgL0MwMDY2IHB1dAorZHVwIDEyIC9DMDA2OCBwdXQKK2R1cCAxMyAvQzAwNzEgcHV0CitkdXAgMTQgL0MwMDcyIHB1dAorZHVwIDE1IC9DMDA3MyBwdXQKK2R1cCAxNiAvQzAwNzcgcHV0CitkdXAgMTcgL0MwMDc4IHB1dAorZHVwIDE4IC9DMDA3OSBwdXQKK2R1cCAxOSAvQzAwODAgcHV0CitkdXAgMjAgL0MwMDgyIHB1dAorZHVwIDIxIC9DMDA4MyBwdXQKK2R1cCAyMiAvQzAwODQgcHV0CitkdXAgMjMgL0MwMDk3IHB1dAorZHVwIDI0IC9DMDA5OCBwdXQKK2R1cCAyNSAvQzAwOTkgcHV0CitkdXAgMjYgL0MwMTAwIHB1dAorZHVwIDI3IC9DMDEwMSBwdXQKK2R1cCAyOCAvQzAxMDIgcHV0CitkdXAgMjkgL0MwMTAzIHB1dAorZHVwIDMwIC9DMDEwNCBwdXQKK2R1cCAzMSAvQzAxMDUgcHV0CitkdXAgMzIgL0MwMTA3IHB1dAorZHVwIDMzIC9DMDEwOCBwdXQKK2R1cCAzNCAvQzAxMDkgcHV0CitkdXAgMzUgL0MwMTEwIHB1dAorZHVwIDM2IC9DMDExMSBwdXQKK2R1cCAzNyAvQzAxMTIgcHV0CitkdXAgMzggL0MwMTEzIHB1dAorZHVwIDM5IC9DMDExNCBwdXQKK2R1cCA0MCAvQzAxMTUgcHV0CitkdXAgNDEgL0MwMTE2IHB1dAorZHVwIDQyIC9DMDExNyBwdXQKK2R1cCA0MyAvQzAxMTggcHV0CitkdXAgNDQgL0MwMTE5IHB1dAorZHVwIDQ1IC9DMDEyMSBwdXQKK2R1cCA0NiAvQzAxMjcgcHV0CitkdXAgNDcgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjM4IDkyMCA3MjJdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMEUwMDU0RTg3RUMzQzQxQ0Q2QjlFNTBEODlFMDg2MTk1RkQKK0RCRTdGNTY3RTU5RDZFRUFGNkRDRjlBMworQzNDRUQ2ODRBQzhDRDdCMzM1Cis4NDczNjNGNworQjM3MDEzN0QyOUY0MTUzRThCM0M4NjYyMTQyMQorRTJCMERFM0E4MTg1QkZCRDZBMEM1RkVENzU5MDE1ODAxRjg5ODM1QkMwNzUxNTc0OTc4QkEyNTc2OTIyNkNBMkEzOTIxMTJCODU3QTEyMkM5OTY4MTlGMURBNEI5QjQ0RUM2ODQzQzRBNERCQUQ2RDUyOTIwN0IyQTVCNzAxRTdDN0I3ODczQTU0NkUwNUUwMjcwRUY3NzcxRUY1Nzg2QTQzMjY1MTIxNjUyMDQxQUMwMjExMUQ2RTQ2REY5RDVCMzFBMDZBQThFM0E2MTEKKzBFMzFBN0UzCitBODMxQjQ4RUU5NDUzQjcwREFDOTZFQUEwMgorRjEzN0MyMTNGNzYyRENCRDMwMzlCRkE4MUJCRDc5RkZFNEZCMUE5MDYxMUI2OEFBQjg2REIxOENBMDJFNzg2NDhDRUY1MzdGRTgzNzdFRjcwQUJFOUY0Q0NFQUNGMjFDODY0NkVDOUJEMkQ3Q0RBNkE5CitFQ0YxNUNDOQorNUU3RjQ3NzU1M0EyRUIzNTZCRTk0NzBGMDMKKzdGREQxNUU2RUQzNzlFQUMwNUQ0RUJCRTBEM0NDRjE2REUyRjJGNTg3NTgwMjMKK0IwNzU5NTUyCitCQ0RCMTM1RDNCMzkyMDU5MDg4MDAwMDJCNAorNzRBQkIwQUQ5OEI2Qjg1NUNEMDA4NDE5NjEzREE3NTI0NTkyREVDNDYyQzYwNTRFMzUwNEQ3MzQ1NjBFNkUKKzlBQjlGNzEyCis0MzVDODQzRTdDMTNEMkVFMDM4Rjg1MTMwNworQzYyMDRBNzdCQUM2QzA1RkREMDVCRTlDQ0U1Q0IyRjdDRkNDNDAxQjE0MTQ4MDk5QTZGMUEwRkEKKzY4QzczOUU4CisyOEE1NjUzN0ZEMTE2NjFGMEIxQ0M0QzM1MQorMTRERUU2MDdEMTNFODZFOTEzODFBQjM4OTk4QTUyNUEzRjJENTM1RTg2QjBFRUY5NDc2QzczRERGMjRFNkQ5QzgxMTQzMEZGRkE0MTcyMzVDRDFDODVFN0FEREQ2RTU4Njc5NkI2N0NCQTAyOERBRUE2REQ0NDZFQUQ1NjAzRTE0QTUxNDVFMjM5NzU4RUIyREY5NDk1MUFDQUYzMDk0MTk1NTIwQ0ZFMzcyRTJGQzEwMEIwCitDNkI0QjBBMworRUYyMTYzQ0E0QUM5OEMyMjM5RkY3QzJGOUIKKzc5RUY2NjMwQTZCOTgyQzMzNjk5MjE1NzEwRUEwNjcwODA0MUJCQ0NBN0RDNDA0RDZEOTMwOTNGNDA1RTI4MTY5RjBCN0I4RkI3MjRBQzhCQzJEODAwCis3NEM1NjE4NQorRDU4RUY1OEJDMzEwNjIyRDgwMDdBOThCNjEKKzJBNEJDM0MyMzU2RDRGRDVCQUJBNjIxMUFFMjBFRTkwMTRCODE5MTRDODQyNjA0QjlCQUQ5MDhFNkFFQkFGRkVFMTQ5NjFFNTNCMzRCMkVDRkQwRUY2QjcyQjg1MTFBRDJCRUQwMTUyQ0JEMworMkJBNEZENkIKKzJCMDdEQzA5NzAwQTg1MTcwOTgyOEY1MjBGMzgKKzUwRURDMDZFMDdGMkE4RTZENEE0QTU2QzQyN0E5MDZGNEYzNjZCMTE4NEYzQTcyRkZCMkE4NUUwNzc0MjQ1NTEyRDNBNEU4NkQ1NDQ5MDU5RUYzQjgxOENDQzBCMjNGQThCNDFENkE4QjA1RjVCNTI1MTRBOUIyNTc0MkVFODEwOEQyODcyMjc3RTk3OUU0QzlENTlCMUI4RDFCMTUzMDlFQjgxRTRFMEVCRTMyNUQ1MjRFNDc1NTJBMTZCRTdFREMxOTAxMjcxQkM5NDQxM0E5ODZGRDExMDY1RTUwNkI1NTAwQzAxCis3OTUwMjQ5QworODNGNTdCRjgwMDVGQTMzRjM3RkZGODNBQUFBMworRjRGNjhBOEUyMTM5RjQwMDE2MzgwQkE3MUJDQkY1NEQxQTM2QkY5NzhERTA4N0E1Q0QyRDcxQkRGMDUyRjAwQjNENDY0MTAzOEQ4MDZEMTY2NUM5MzMxNkFBNDMyQjc0RUYyQjE4MEUzQjc3QzQwQUJCQzVCRDI0Rjk2RDJFRjY3REU1MjdENDdBNTg3MjE5REEzOEEyQjk4RDgxNEMzQjYxNjIxNDkzNkY5NDE5MUUzNzcyNDE3NDA2NzQ2NjM5NTdBNjk5NDhBQUNDODFFRUE2NkI2RDRGOEM5NkMwRDUwM0NGRkNFRTBGNDE1MTk0MTc0RUU4QURENURDCitGMEU0CitFMAorMzRGQUNEMkIKK0FDNzU2NzY0NUMyNTU0RUY0MUJENUEyREYyCisxM0Q4NUE1NjE5NEZBQTA0REMxNEZGN0Y2MzUyRDRGNTgyNDYzNzU0Qjk1RDg1OUMxM0VDMEY4NjczNjJDOTQ1ODJGQTE2Njk5MzIxREE0MDQ4M0RCNkFFRDQ5REJEODQ2RjkxMEY5QzA4QjEyMjE3Nzg5RjQzRDkxRTc3NjBDOTg3RUJENDdCQzc3QUQzRjNEOTU4MDg5NTVBNUNBODBCMTNENkYyRjE4M0Y4QjIxMEMyQjhENDEwMkNCMThGMDFDOTk5NTkKKzNGOTU3QUQzCis3NkQ3Qzc3QTUyRUYwMDdGNjEzNkU2QUYyRUFGCitFNDc2MEIwQ0NBNUY5NjU5ODBFQTA2QUY2RTY2NEJGRDZBNDc5RTZFOTY5MkVEMjNDQkE1MTc0NkMwQTM4OUYyNzI2M0I0NkQyMjg0RDhERDFENTI3RjkwODI3Q0E2MjkxOUQzNTE5OEJDRDAwNjAxQkE3NTZBMjg3MTQzNDBERTgzNzU4MUZDMTI4MzAwMEIyNzM5ODBEMTk2RTdEODRDRDhGMEJCN0VBQkJGODdEMTg5NkQ4QjVDM0NCNTZDOTlDMUFERjI4NTU5MDI2NEIzMEVEMkIyMzRFNTRFQjFCRURCNzZDRDE5NDc5MkY1RDcyRjBGCiswQjkxQTAwQgorNDk5M0UwODY0QUNBREFDMzUyQTAzQURGMDIyMworREE2QzU0NzJDQkU2Qjc0NTQ3RkEyMUE4Njk4N0I0QzZGNzk2NzM5N0MwNTFBRkFBODBBQTgwREVFMUYyODUzQkVBNTkwOERDRDJGN0U4NzgyQjQ0ODZEOUQyMjdFN0M5MkY2OEMxNjA5QTJCRUFFOTE3QTg2ODNBODcyNkVDOTFGRkQ5QTcyNkE4NzA0MDAwMkZFNDJEQzkzMzdFQ0E1NEFGNEYzOTgyQjQ5N0YwNDA1OTRERURBQkQxRDZFOUNDQzI4QkNFNEY4MDUyRDU0MjRCRkY4RkY0NzlDRDFEQjExM0I2RTI0OTU4OTdENzZFNkM4MUMwRjg2RjM2Cis4OUMwCitGRTBCNUI1QTI1Mzk1OEVBNUE3NDcxCis1REUzMjAxOQorNTU1N0ZGRTIwQzc3REIxMzRDN0RDOTUwQzAKKzFFMzFEOTE1NjE0M0Y0NDA0N0EzQzc3MTQ3RUYzRTAwRjQzRUEwMzcwMTIyOUFDNzNDNUE5QUU2OUVBQkQzNTJDQUVDMzBFRjE2QjRCQTNBOTVDQzcxMzJGNjM1NTFDMTQ4NzUyNDJBQUE5OEM1MTREMjc1NTAKK0RFQTc2ODA1CiszN0Y2QUEwQzE3Qzg4MjI4MkRFMjgwNjBBODFFCisxNEVFMzIzMDI3ODAyQzYwQzkzNTk0NzU2OEEwMjg2NTMwNEY3QzhDQzA4QUYwMTc0RDlEODg0NkQ0MTkxRjhCMERBREIwMzBBRkVBODZDQ0QxOTQ0MTFFOTg2RDA0RjVFQ0RBRDYyNkQ0MThEQjZDRUQwMjQ2MDk5NzA1NzY0RTVGQjExQkRDMDMyMkIzQzU5NjUxMTM5NjlFRDExNDIwMjc0RkIxNUEzMjdEMTY2MUQyRjlFRjlBRDg0MTExRDMwMzRGNURDNjUzNDYwMjg2MEJBQjlGN0U0OTREQjMKKzQ4OUNFRkU0Cis0QUJCRTk5RDUyOEE0NzUyODE0RTk3ODhCMworQzEyOTVGQjMxNUIzNTE4MDVGRTlGRjY1NUY3OUVGODY0RkUzNUM2NjM2NUFDNzc0NTQzMzE5NkZCQURDREYzNUJFODg4RThBQUJBQjg4NEVBMTUzMENGREU5NzM5Njg2M0RBNjk0NTU4MkU3Njg0RjQwOUNDQzJCRkJDQTcwNkE2Mzc3OUIyNTQ1NzRGNUY2NjU3MTgxODk3MDQ4RjVCRjk2RERCN0Y4QTcxRjEwNzRFNkJGMUY5MQorQTdFREM2NjAKKzk5QkUxNzc4QzQ3RkNFRUQzNjE4NDgyQzMwCitERTU0MjUzODAzRDEyNzI3MjdDODU1RTc1NzVGQTY2QjhGQjgyQjNGMzA2MzkyMUZGQjBCMjE4NkQ1QTlEN0M4RTk5RkI2RjYwMTA4QjVFMEZGNzI5RUZDRDEyRjJBNEUyODdBRjA3OEZGREIyMkQ0NjQ3QzAwOUE2NjgxODY5Rjg3QjA5ODJDODFCOTA3MEZGREY5RTkxOTZGQTRERUVBODEyNjMxCisyRTdFNDY1NAorODVFRkU3NkUwNzczMDQxQjJCNzU3QTZBRjRDNAorRTY3QjQwN0I4RTU3MzhDMDVGQkMxMjQ3NDBBMkVCNzIzN0YzNTlCQTMyNzE4QTAwRTk4NTk2RThGMDA5MjlFMkExMkU3MkQ0MzNEQkM0NTlCMkVENTI1NDY2NEQ1NDQxRjRGNTBCMEE0N0U4NjY0REEzQ0VEMzk1MDFBRUM2RDk2RDlBMTczRTg4NEI3OUIzOENGMUQ5Mjk2MDMwNTUwRDA1REFDMDQwNTdFMTkzNjMyNkYxNTMxNTM1MjI5N0EwOTdFMkQyREMzMkZGOTRGNkEzMzYKKzA0RUY1MjE5Cis0QzIzMDE3QTFDRDczMTIzMUI0M0VCMDBFQzU0Cis0QTJCNzQyMTdGQTgxNzAwNUMxOERGODY0MUVBOEZDQUQ0NzZEQkY5Qzc2NTRCOEFBQzA0MTEzOENEQkVGQjk5MEUwNjVCMThGMTA0M0M2NkQzQTlBRjNDMzcxRTlEMzk3OTA5NDEwQzUxMEM2NEYzQkQ1ODlENjdEMUEwRTQ1NzY4MjI3REZENEVFM0U0NjFGRjMwNzIyRTA0NkFDQTNBNDdDQUNCMTE0RUYyN0M1OThENzVCMUQxNkNEN0JDNjcxMTdCNUM5NzA3NUQ5MkVDNTYyQjZDNkUyODNFODI0QTUxOTIyNkVDMzM3Nzk2OEZEODVFQjA5REU5MTMKK0VBMDQ5QUQ3Cis4QjAzOEZFQ0I3RDc2NTdGOEFGN0JBMkYzRDFDCisxNEVDMzBDQjQzMDQ4NTI3M0REMDM1RUVBMDY4RTEwQzlDM0Q5MzZEOTUzNjAzNkEwQ0Q1QUZBNUJFMjA0RkRCRThBQjM5QzhBODkwNjFGMUY5RUM3RUQ0MkQ4M0Q2MjJGRTQ1RTBDQTUzQzZCRTZGRUE5N0JBMkU0QjYwNjY1OUJGNDdCODQ3N0I3Qzc0Qzg2NzU2MENFNDQ3OUU5OTZBNDE2RkNGRjc2MTQ0RTQ0RDZBRkUyMTM1NkQ0REZDMjg2MDExNjc5OTg3MTA0Qjg3NTcyMkYwMDVDREExMEUwMTA1Q0Y5NDI3MzNENDgyRjgyN0E5MTI4RUM4M0MKK0UwMUQKK0I0MkE3RgorMjc3NkExOUIKK0NBNTY1QTIyMjVDQjJGQUQ3Q0U4MUNGODhFCitGMUI0QUJGMTAzMDk0ODAyQzFGQzY2MTExQTUwMEUyMjBERTY1MDMxQTI4QjgyQjdGQjlENjBCM0M2NUJCNUFDNTcxQ0Q0QjM1MTA1QTUzMjFCNUY3NkIxOTU3QkNENDdBNTA1QjRCRDc5NkM4OTg0Nzc0OEZCMDg3RjFEM0IzNkIxMUE0QjgyQ0FBQTBGRkMwMUFDRThBNzM0RUUyNjVCRDEKKzBGMUMxOTlCCis3MTAyMTM5QUU3MjE2QzVDOTc1RUJFMjVGNDcyCis5RTU3RUUwNjU2RTc4QUU0ODU1MEM2QUNCNkFGOTFFMzRBQzBBMENBN0U1RTFEMTI0RTgzMTdFNzg1NTNGMkZGOUNGNkU5RkU2MTRCNTA4N0ZCNDlERUU1RjFERkUxRjVFNkMwRDdDQjczNzYwNzdCNzJGMTYwQTY1RUQ0OTRFRDQyQUZGMDQwM0I1RTUwMUYyOUU5MUMzRDExM0U3N0MxRDU4RjAyNTBFQkI1NzBBRDlCMDM0QjI3QTU5OTM0QzkzMkM1RDQzOTc1OTRDNzQ2MkI0QkUxQTFGOTcwQTc3MTAzQzcxQThDRTdFRjkwQ0MyNUYxMUI2RkVFNDMKKzAxNTcKKzI3MjFENAorQUY3MkYwRDcKKzZFMjMxRkE0NENFM0M3OTJDM0JEOEQzMDMyCitBMDdDQkIzNjM4NkQ3RDk1RDY4MDU2NUJBRjVGMTBEODRCQUNGQjRGNzk2MERGNkFFRkVGODZCRkFCMUMwRjJFOEI4MzFGNzY2REEwRDEyODE4QzQ0REQwNkQ4MkVBODIyMEU3NjI5NTlBQ0U5Rjk1ODcxQTE5ODVGQzVCRDQ2NjBEMUJCRjE2OURCNjNERjhDMzk4RUMyQTgxNTdFQjZCRUI3RjhBQTZGNzkyNUEwQgorNTZGNDdBMjkKKzk5RDZENzQ2MjFGMDZFRTIyQkI0NTY0NEU2CisxMEEzQzAyRERBOTI5MkQ3MERBNjMxMTA0OTU3M0I1MkY5QzFBNDc4NkEzMkM3RDg2QzA1NThGQzY5QTYzQTM5N0ZBNTc2QzZGMDRFRkUxM0M3NjQ3MTM0RUREMUY5RjBDNTVBNkEzMzlEMjU4QjUwNDI0OTUzRThBMDI5REY5OEU2MDNGMjMxNkNGNUZGMkVCRkM4RjdGN0ZDRDcxREFCQjg3MQorODI4NzZEMjYKK0JERjQzRjUwMzI3RkJCNUM4ODFFQ0QzNkNGQjAKKzAyMEIxMUQxNzUwMDExOUFGQjRDRDNFNUFBNzY4RUYzMzBERUNEOTUyNkY5OEU3ODc4M0REODJDOURBRkM0NUMzOTcxNEFDMEJFNkRCQjRFNUQ5NkQ4NDJCOTY3ODY0NEI1NzczMkU0QzgxRTVCRDQxQzE5N0ZDMTEwODE3QzgwQjdDOTVFREQwQzRFNjdGQUIxOTU4MkFFMjM0REVCNEYzNEI4REQ0MEU3NkZEQTM0NUQ2RjUxRTI3NDEzQjhGMUQyRjdBQTU3NjlGOENGNEMwN0Q4MzRGQTJDNzAKK0JFRDM2RTNFCis4REZBRUNBMjQ3OERFQTY5M0ZEMUVFNkY3NAorRkZCREQ2NThFQTVBRTc0RTk3MTk2NkFDRUY4RjY4ODY3QzREMEMyNTlCQjIyODBCNERDOUZGREM2Q0I2NjE2N0I3MjgyMUQyRUQ3MDM4MDc0RjMwN0Y3QTUyNkJFOThBQkQ1NTE2MjU3OTk1QjgxNDMyREYyOTYzQkY3QjYyOTk1NThCQjkxNzIwOEVDNTZGRTFBMTQxRjU5N0E5MTY0MTE3QUJFRDkxQzFEMUIwQkRDQworOTkzQzM3OTcKKzlCODFDNTE2NEY1NEE5Njg0QzJGRUU3NDBCCitDRjhGNjZBNzkyRjMxNTRFRERCQzdBNjVGQkU2NzFEQTIxQzE2OUYyNkI1RUFDMzEyQkNDMzQzNkYzMkI2Mzk0RUZGN0JENEJERDZFRDU5M0QwMUExOTZEMzYyNjY3NUNFRTYxRDI5NDY1NEUzMDdFNjFENDYxMkU4MTJDQzNDNzlGNThFMEFBODk1N0M5RTJFRERDNTZBODg5Q0Q0NjM3NTNFQThBNjMwMTg2NDhCMDJBRDJDOEJECis4QURFQTRGQQorRTQ5NDE4ODMzNkUxMERDMzQ2QzFGODlBQTlBQgorMUY4QzAyRDA0OEM1M0MxNUNBM0Q5RTFGOTVERUQ2RDFEQzkyRDkyNDkwQkJBNDc0MEQzRUNDQTU2NThEQzIzQTZFOERGQUEzNzEyRjIyMEQyMzk0NEI1MDFFQ0YzMTg1QUY4Qjc5REREMjlBMDcyRThCMDc4NkRFRTIxQ0M1QzFFMkI1NjhCNjNBNzIwMTNBODZGRTI4RTY0OEFCNERCOTlFQjc5RENGMkY4OEEzQ0MxMjJBNTcyNDQ4ODMwNTM5ODNCNDk2RTNERUVBMzk3RkRCOUREOTIzM0E4MjdCQjlGNTI3REU1OEQzRjZCOTlCRjY2MTA2NzNFNDBGCitGMUFDCis4NDYwQzBCRkIxNzA5REFBMUFFRDA3NkE4MjRFMTc0QkVEOEJEODUzOEY0OTE4RDNBNDg4QzdFOUNGNjZBNEYyMUM5RjBBQjZEMzc2QkQ0RjYyQjc0MDVGRTY3ODk0Cis4RjA5RUY2MworMTc1RDE2RDM5MUVBRjVFMUIxQjY4MjFGMzFEQgorMjc1NEQ0OTdGMDg2Mzc4MjM3RjUwNjA5QUEyNzlGMDY3MjNCNTUxM0EyNTlBMzlDOTg1MEVGNjZCNTZDNkFFODQ1MTNBNDE0OTc3MTdEQkE0NTY3NEU4MDFBN0RBNURGRjM1OTM4MDQ0MThGN0VFNEJBRUVEMzNBOTM4NzNEODAxMUEzRjlGOEM1N0NDMjQyMDMxMjgxREYxQTRDMzIwQ0Q3NUM1MTYwRjA1OTRFOTJGMERDOThBMUVEMTE2MDRBODU2QkZEQTk3MTAxQjc5NkEwOEQ1MkQyQzgKKzU4OTFCRjc4Cis2Rjg2ODdEQzYwRUJGQzE0QzY3RkFBMzExNgorNzFCQ0QyMUI4NjA0N0VENkJDQTc3RjkzRkNDNTRGMDRFMTE5OEIxOEJEQUJDRjMwMkQxRUQwRTJFNTNBRDBBRDA4QjcwMjM4RDVCQkQ3QkQ2MUVCQzE1QUVBNzg0OERDNEQ2M0VCRTM3MjFBMTI4NEI2QkMxNzREMEY1QkEzOTQ3Q0FGRTYyQkE0NEVCMDkxRTIwREI0NkIxMzUzNjQ5RgorMjBGMzZFRTAKK0ZFNzg5ODlFOEMzRjdBNEFERDQ5MjNERTkwNkMKKzEyOTY3OUNGNEVFMDExMjQzQzQwREY2MzI3NkY5Nzc2QUJCQTQxOEZCNjZENjVGQUQzMkU0MUI2MTREOTJGNDAxMDU1MzE4MDM2RjI4REExQUUzRUUzRjJCODcwMjdFN0ExMDM5NThFNDkzQjY4NUQ3M0Y1Q0RGQjJDQTI5REVDRUQ1NTMyQjdFRURBMTlEMTI1ODg3MUVDODkzOEQ1MzlGQ0I3MjNCQjM2RENGMzZBQUI4QzdBMTM1NTEzRTQ5NkZCOEVDMDIwMjUxQjcxMUUxQzNDQjUxODU4ODE3NzZGMjhDMjM2OUMwRjM4MzMwMTlBMkQyNzA3OTA2MworNjk0RgorMUU1MzM1QjMzMkNGMUM5RTU0QUMwMzFGMEE1RkE3OEU3NDE5NUFGRjI0NTA2MEE0MzlFN0M3NzMwRUVDN0M5Qzg1OTM5NworRDE1NzVDM0QKKzgxRDM4MjY0MUE2NkIyREMyRkU0RDAzQTZGCitDRUM1OTM4NzM0MTU4MjJBQjk3MkQxQUZERjJFMjNBMDY0MDJDNTU4MjAyMjg4MzE5QzEwRThEQzU5QzY0RkY4RDQ0REQ1MENBNzkzOTI1QjI3RDI3QTQwMDNFREU1QzU0RDdEMDkyN0IxQzYKK0YyQTM1N0Y0Cis1RDNCOTZENjg1NTJFOTVFMzZCOTU4Mzc2ODE5Cis4QUY5RTg4NUY5M0I5NThGQUUwMjNBQTRGMjUzQkRGRkU2Mjg1ODc4OTNDMkYyRTA0RDY4RjhERDgxOTY5QUYxODk3OTMzQkFBRjk3QUExQ0IzMDA5ODhDNjNBRThFNDY1OEIxMzA0QzA0ODk3NTg3NjQ5MzBCNDlGODNCQThCQTAxNkIzMDJCOTI0NDA2NTFGQzI1NTEzOTcxRDEyODg5MjQzOEQ2QjNFN0FGOEJFMzE3MkQ0N0FBNkMzMTNBMjc5NzMyNEJDOEU2ODY0NzgzNzE0OEFGNTM5NkVBMEI0MTQyQzI2ODc4RDE2NUUyNTVFNkVBM0FDMkU0NEUKKzQ0N0IKKzU2MTk4MjgxODgyQTIzNEZDNkY2NjVFNTRERkI1MTREMTFGQUM4Qjk4OTEzRDExMDQzNzUwMjhGMkM2MjIzCisxMzUyRjQyMQorRUM0N0NBNUJFQjUyRkQ1Q0U3QzkxNjZFNDIyNAorNjkzNEREMDA2QjY2RjE2NUI3RkE5QTI4QzQxMjY3ODk0MUNGQTcyQUQxQzg2QzQ0NTA1ODI0RjVGRUQ1OEY5NUNGN0VERTg2MzlDODRCNDc5Q0ZERTRDNTA2QTNERkMwN0NDMzNDRDdENTM2NzMwRkFFN0M1NUQwQUFBMTVERjlCREQ2QkY5NTUxMzg1QjlCREI5NzlDRTkwOEMyNEYyMDdCM0JEMUYzODc1RUZDQ0RCNjA0ODAwNzMxNTVBRkJEMkY0RDE2MDk4QTdGQjY3OEY5QTMyRTkxCitFMEUxODg4MworNTE5NDIxQjNEN0IzRjBFNDE0NjVFOUQ4QkQKK0FDOTE5N0VDRUFCMzYzRjg5NkJFRUVBMEZFQzc4RDFDNEY2RkJEQUE4MjQ3MjJEMjcxODA2OTY1NjdFMUM1NTk5RkMzNjFFQUVGQkVDNDdBQ0JBRkZERTI0RDY3NjIxQjRFQkY3NEU1OTYwRDFBRjBCQTY0OUI0MkRDRjk1NTMwOTczNTZFQ0VFOEZFCitGQzM3Q0Q2RQorQkQ4MDNDMkUxRDkxRkYzRUM2OUY3MDBGQzc0QgorMDQzOTM3NEZCQjY3Qjg3MjE0MTJCRkIyQjQ3MTY0NzVCQzU2NDcxQjI0QzFEQ0IzNDZFMEM5RThBMzQ4OERDQkM0N0MyNTM4NkY3MEE0NTY3OTVCOEZDQjg4NkM2QUE4ODg3MzkxNDlDRjVBMThBOUY2MTA2QjE0Qzg3MDQ0ODI2QkZFQjIyM0U0Q0JEQkM4NjhGNjJBRUU1OEFCRUY4OTlCN0UyNDk4MEY2NTg0OEREMjU5RkI0MTVDRjZENjM0OThCNTI1QUQ5QUQ2NDhERjE1QzI3NUIwOEZEMkM3M0Y2QTMyRDM3MTJFRDhGMAorODgzQjNCMDQKKzVBREQxNEI0QzU1ODJERUUxQUQ1QTk3OTEwQkEKK0E0Qjk0MzVGQzlEMzlFODBCNEY0MTYyRUUwNEFGOEZCMzg5MjNBRUVFRkU1RDY3NDUwRTdCMTkwMzZBNjgzNTIzQUJBQTlBOEYzNUVCRTI3NTY0RTE4QzFCNEY1REYzNzQ0NjBFQjg4OEVCRjIzMTg5RjA5RDQ3MTNENEZEOUIwODVBRThBRDBEMEM5RDE2OEIzMTU1RDQ1MkJGNkVDNzRCNzk2ODRCM0UxMUI1NkVFN0I2MUM5M0Y5QkU1QjM2RThFQkVBQzcwMzFCNTc2NUM0RENDCis0QTYyMUI2OQorRjU4MDE2MTBEQUFGNzJCQjY4RDA0N0Y0MTAKK0NEMTcwOUZGRTAxQUM0N0YyODFCODY2N0IxMDMyNkQzRkEyRkRBNUFFQkVCQTA2OUZEMkI1OEQ5NDY0Njc5MTFFQkU4N0ExNkQ3OEEyMkI4N0Y0ODZCNDkyQjY2RkZCNEI0MzM4MzZFRTU5QTMwREVDMkIxQjczMTQ0Nzc0NkQ2MDAxNkJDRERFNDc1QUZGNTgzQjdBQkE3MTJFRkYxQjYyOEZFQjlENDgyMzNERQorRUEyQzY4MzAKK0VGQTA5Rjc5QTRGQzAzQTcyRUZFQjUwNTM2NUIKK0I5QkE3OTdDQ0NBOEFDRUY4NEIxOEY1NUM4RjJCRTZDRTIwMTY4M0VCNjg5MDBENjQ4MTcwRDgyRTdFMzI2MzBGQzkxRjg3NDAxOTNGNDU1RUMxNzIyRURDRDExQkQyQ0JBQTRDMTU1RUFBMjlGMjczMzdFMUEyRDlGNkI5MUJCOEUxRTZFNjQ3QjM4RTY3MDE5NUM3MEMyQjJBOERENjdGQzM1NzYzMzU0NkE2REI0MTA4QzdDREZGN0ZEOENGNDBBNEE4MzgzQzM1RkExMjRCREYwRDBERkUzMzBCNzhDMjkwQTRCMkI1RkZDQTlDRUI1OTI1Njg3Cis1NDVDQ0FGQworMjRDNDhCMEFBRkFCQzk0MjdCNzg1M0I0N0QKK0Q1OUNDODQ2QkVFNjVEOTBFMzA4REI5M0FGRjdDRkQxRDYyQzNENTE1MkFDRkVGQjlBMEQzMDkyNjcxQkU0OUVBMjYxNUM2MjkwNUJFRTBDNjJEQjg5Rjg4QUNCQ0YwMTQzNjM0QjlFMEE2QzIyRUExQUZFOUU0OUY5NDc0ODE2RjIxOTg3QjNBMworNjFBQjBBMzQKK0NCOTI0NzE4MTgyNTNDMDRFQTBFMDkxODAzCitEOUQxNDAzNzNGNjZGNzA2MUUwMUUzNTE2RjQxMzg1MDAwQUREOThGMzJBMUE3RUQwOTRCMkUxRjZDRUQ1Njg5NjI1MUE4QjU3MDExNzFCMDY0NDQ2NjdEODU1RkE1NjgyMTVFQTQ1Q0QyRTJFQzQ0QzZGQTBCOUFEQjQ4NDQ4QzhFQTdDNjJCM0FCREEyQ0Q1NTZFMzc5RkE2MjE1NDJBNTJCODMyNTNBNDhFOTE3NDUwRDhBOTUxNDkyRDcyREZGNEFECisyM0UzN0Q2OAorMjM5NzI4RUVFN0VCNTk3RUNGN0I2RkMzREQKK0Q3M0I5MjUzMzNFQ0QzNzgyQUM3OUJGOUEzNzZCMkVCQjdGNTFGMzA5MzE3RDc0RkIwQjkwRTJDRjcyQ0ZBN0EzNEJBMDYyQ0I5QkUyMEFFQUU2MkU4REQ4MkZEQ0VFNkQ0ODNCRUFBNjkwRUFGNjJERTY0NTlCRUNEMTk4QjI2QzQzNzhBNTk5QjYzNjg2Nzc4MEUyODc1QTRCRDg1QURDNDc1RDgxOTY0RTQ0QTZFQTkKKzc2NEVEOTI5CitGNTQ5M0EzMjE3OTMxNzBDNzhGRUFFQUJCNDQxCisyM0YwRkFDODIwM0MxNEU1QTRBQUVBOUJDMjUxMDNGNDQwMzExNUVGNUMyNEEyQUZBNzFENEQyN0YyMjExNkEyOUVGRTk4NEIwQTVEMzY4RjREODgxMjFEMjY5OTEwOEUxQjBBQTk0M0I4QzRDM0RENTQ2RDM1ODI0MkE5OEE2QTgwMDcyQzc3RTlDRjk1N0U2OTc1ODVGMkYwQzJENzQyREI4NjEwQ0Q0NDQyQkY2RDhGQjdCMUYxRkJBOTk4N0JFODc1RTdFNjVGQ0Y2NzNDOTVDNkM3RjU2NkJEMjM0MjE3RDNGOTZBODhEODkxQzJDMUExMkVDODFGNDYKKzVEQjEKKzM0NTBERThDMUM0MzhBN0FFMkI0QkNDRDgzRTUKKzdFMjhFMkRGCis3QjVFNTAyMEI1NjA3QUE1OTcxOENCRDFCQTBCCiswQzJFRjE4NjcyQ0FGNEE4QTMxNzIyODU1NTdGODBCMTE4ODY0Q0ZBREZGOTNFQ0E2NzBCNDg2NkIxNUQyQUVBQjA4OTU4MDQ3MjhCRjA1NTVFRURDRDdFNUI2NkU4ODBGRTkxM0NDOEIzQ0ExQzZDOUY0OTRGN0RDM0VGOEU3OTM2NzA4N0QzNEMxNTE5OTlBNjkxQzM0Qzc5RTBEMDc2QTk3NDUyRDY5MkZCOUFFRjU3M0I2Q0I3Rjc2OTFCRDQ0OTJCQjE4MkY4RkFCQkEzMkU4Njg4MTA2REJBMUE3MDhDOEYwNERGQ0EwMjhGMTMyRkVEQTA4RkMzMjcKKzlBRUQKKzVERDczRDRCCisyOTlBNjZGNzRCQTg5MzgyNjY1NDc2RDM4QkU5Cis1MjdGNzA4N0FEODVFODFGMkVGNkRDMUYzQ0UxNDVDRUY3NDBGNkU1NjMxMUE0OEM4OURFNjVBNjJBN0Y4RjQ1QUZFNEZEMjhGOThBNkY1QTVDOUMzMDQxMjJGNTkyRjM5NEFDMDk1RTBGQTMyNzExOTY2RDU4RjU0MjY5RUYzMDUwMUI1NTJERDQ1MTA1MzkwMTMyMUI3Q0E1ODAyMUI1QjI4NjAxOTkwMDNEMzI5QTkxRDIwNDQzMTREOTM4NjNFOEFCNTA0MjIxMDg3RjM5Q0YKKzlCMEIxRDk1Cis4NEQ0MEFBRjY2REZCQzU1OTg4QkI1NTIwRgorODQxODkxQTQ4MTY0MTIyMkU1MkQ3OUM0RkFDRDE3MTZFNzc1MzI0OUVFODkKKzQwNjg2NDA2CisyODY0RDk4Qzk2NjMxQzE1QzFBMjBCRkQ2QkQyCisyQjQ1MDkyNjM2M0Y5M0JCCisxRDJCODUxMworNTQ3M0ZGQzVERkEwNEQ3QzFBOURDN0Y0Q0ZBNzlCQTdCMjdGM0ZGQTRBQ0FGRkFGQkQ4RjM1NDAyNDcwRTU5NDcyNEYKKzIyQzJENzJBNjdDM0FGMEUxM0Y4RkJFMTBCN0FGREQzQTdDRDk1N0Q1MDREREE2MjAyRUJENEMwNTQyODU2MTFCNUE4MkI1NDU3NTgKK0E5Q0UwNUUyODFFMTBCQzRDN0Y3MjEyNURDMTc0RUNFNDdERkUyRTJBQzdENzNFNzNCMkI1RAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgQ291cmllcgorL3dzdDpjb3VycHM5IDkuMDAgL0NvdXJpZXIgL3dzdDpjb3VycHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDExMWIyOTI1MWIyNzFjMDkwMTBhMDEwYjFiMjMxOTFlMjIxNzI3MjAwMTFjMjQyNzAxMTAxYjE3MjgyYTI3MWYyMzFkMDExMTFiMjkyYzI0MjcyMDAxMTM+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MWIyNzFjMjQyNzIyMTcyMzE5MWI+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDA3MDg+IDkzNDYgMTMzODUgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyNjcgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI2NyA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjY3IDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI2NyAzIDcxMzMgMzIgcword3N0OmR1dGNoMTIgU0YKKzwwZjFjPiAxMjcxIDE0MzEgMCAxNDIyIC0xIHMKKzwwMDJkMjQyYTAwMWUxNzJiMWIwMDE5MjQyMjI1MWYyMTFiMWEwMDIzMWIyOTI1MWIyNzFjMDAyYzFmMjkxZTAwMDQwYzBlMGYxNTE2MTIwZDE0PiAxNDIyIDE0MzEgNiA1NjcyIDAgcworPDBhMTAwMzAwMWYyOTAwMWYyODAwMjUyNDI4MjgxZjE4MjExYjAwMjkyNDAwMWQxYjI5MDAxNzAwMWUxZjI4MjkyNDFkMjcxNzIyMDAyNDFjMDAxZjIzMWExZj4gNTY2NCAxNDMxIDkgOTQ2MSAwIHMKKzwyZj4gOTQ2MSAxNDMxIDAgOTUzMSAtMSBzCis8MmIxZjFhMmExNzIxPiAxMjcxIDE2NzYgMCAxODIwIC0xIHMKKzwwMDI3MWIyODI1MjQyMzI4MWIwMDI5MWYyMjFiMjgwMDFjMjQyNzAwMTcwMDI3MWIyNjJhMWIyODI5MDYyNzFiMjgyNTI0MjMyODFiMDAyOTFiMjgyOTA1MDAxNj4gMTgyMCAxNjc2IDcgNTg3MCAwIHMKKzwyNDAwMWIyMzE3MTgyMTFiMDAyOTFlMWIwMDFlMWYyODI5MjQxZDI3MTcyMjAwMTkyNDFhMWIwMzAwMmQyNDJhMDAyMzFiMWIxYTAwMjkyND4gNTgzOSAxNjc2IDcgOTUzMSAwIHMKKzwyODI1MWIxOTFmMWMyZD4gMTI3MSAxOTIxIDAgMTg4OSAtMSBzCis8MDAxNzAwMmIxYjI3MTgyNDI4MWYyOTJkMDAyMTFiMmIxYjIxMDAyNDFjMDAyOTJjMjQwMDI0MjcwMDIyMjQyNzFiMDAyYzFmMjkxZTAwMjkxZTFiMDAyZTA0MmIwMjAwMWQyMTI0MTgxNzIxMDAxOTI0MjIyMjE3MjMxYTA1MDA+IDE4ODkgMTkyMSAxMyA3NzUzIDAgcword3N0OmNvdXJwczkgU0YKKzwyND4gMTE0MCAyMTY4IDAgMTIzNSAtMSBzCis8MjAyZTJmNmU2NTc0NzA2NTcyNjYyMGIxNmMyMDM2MzAyMGIxNzQyMDU0NDM1MDVmNTI1MjIwYjE0ODIwNjg3MDY5NmU2NDY5NmYyMGIxNzYyMDMyPiAxMjM1IDIxNjggOSA1MjI1IDMyIHMKKzw1NDQzNTAyMDUyNDU1MTU1NDU1MzU0MmY1MjQ1NTM1MDRmNGU1MzQ1MjA1NDQ1NTM1NDIwNzQ2ZjIwNjg3MDY5NmU2NDY5NmYyMDNhMjA2ODY5NzM3NDZmNjc3MjYxNmQ+IDExNDAgMjMyNiA2IDU3MDAgMzIgcworPDRjNmY2MzYxNmMyMDJmNTI2NTZkNmY3NDY1PiAxMTQwIDI0ODQgMSAyMzc1IDMyIHMKKzw1MzZmNjM2YjY1NzQyMDUzNjk3YTY1MjAyMDIwNTI2NTcxNzU2NTczNzQyMDIwNTI2NTczNzAyZTIwMjAyMDQ1NmM2MTcwNzM2NTY0MjAyMDU0NzI2MTZlNzMyZT4gMTE0MCAyNjQyIDExIDU1MTAgMzIgcworPDUzNjU2ZTY0MjAyMDIwNTI2NTYzNzYyMDIwMjA1MzY5N2E2NTIwMjAyMDIwMjA1MzY5N2E2NTIwMjAyMDIwNTQ2OTZkNjUyMDIwMjAyMDIwNTI2MTc0NjU+IDExNDAgMjgwMSAyMCA1MzIwIDMyIHMKKzw2Mjc5NzQ2NTczMjAyMDQyNzk3NDY1NzMyMDIwNjI3OTc0NjU3MzIwMjAyMDIwNjI3OTc0NjU3MzIwMjAyMDczNjU2MzczMmUyMDIwMjAyMDcwNjU3MjIwNzM2NTYzPiAxMTQwIDI5NTkgMTYgNTYwNSAzMiBzCis8MzgzMTM5MzIyMDIwMjAzODMxMzkzMjIwMjAyMDMxMjAyMDIwMjAyMDIwMjAyMDMxMjAyMDIwMjAyMDIwMjAzNjMwMmUzMDMwMjAyMDIwMjAyMDM3MzczOTJlMzUzNT4gMTE0MCAzMjc1IDI2IDU2MDUgMzIgcworPDM4MzEzOTMyMjAyMDIwMzgzMTM5MzI+IDExNDAgMzQzNCAzIDIxODUgMzIgcworPDQxNmM2OTY3NmU2ZDY1NmU3NDIwMjAyMDIwMjAyMDRmNjY2NjczNjU3ND4gMTE0MCAzNTkyIDYgMzEzNSAzMiBzCis8NGM2ZjYzNjE2YzIwMjA1MjY1NmQ2Zjc0NjUyMDIwNGM2ZjYzNjE2YzIwMjA1MjY1NmQ2Zjc0NjU+IDExNDAgMzc1MCA2IDM4MDAgMzIgcworPDUzNjU2ZTY0MjAyMDIwNTI2NTYzNzYyMDIwMjAyMDUzNjU2ZTY0MjAyMDIwNTI2NTYzNzY+IDExNDAgMzkwOCAxMCAzNjEwIDMyIHMKKzwyMDIwMjAyMDM4MjAyMDIwMjAyMDIwMzAyMDIwMjAyMDIwMjAyMDMwMjAyMDIwMjAyMDIwMzA+IDExNDAgNDA2NyAyMyAzNzA1IDMyIHMKKzw0ODY5NzM3NDZmNjc3MjYxNmQyMDZmNjYyMDcyNjU3MTc1NjU3Mzc0MmY3MjY1NzM3MDZmNmU3MzY1MjA3NDY5NmQ2NTczPiAxMTQwIDQyMjUgMyA0NDY1IDMyIHMKKzw1NDQ1NGU1NDQ4NWY0ZDUzNDU0MzIwMjAyMDIwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAzMDNhMjAyMDIwMjAzMD4gMTE0MCA0MzgzIDQzIDgwNzUgMzIgcworPDU1NGU0OTU0NWY0ZDUzNDU0Mz4gMTE0MCA0NTQxIDAgMTk5NSAtMSBzCis8MjAyMDIwMjAyMDNhMjAyMDIwMjAzMDNhMjAzNDM1MzczNzMxM2EyMDIwMzUzODMyM2EyMDIwMzEzNDMxM2EyMDIwMjAzNDMyM2EyMDIwMjAzNDM4M2EyMDIwMjAzNDM4M2EyMDIwPiAxOTk1IDQ1NDEgMjUgNjc5MCAzMiBzCis8MjAzMzM4M2EyMDIwMjAzMjM0M2EyMDIwMjAzMTMwPiA2NzkwIDQ1NDEgNyA4MTk3IDMyIHMKKzw1NDQ1NGU1ZjRkNTM0NTQzPiAxMTQwIDQ3MDAgMCAxOTAwIC0xIHMKKzwyMDIwMjAyMDIwMjAzYTIwMjAyMDIwMzAzYTIwMjAyMDM1MzEzYTIwMjAyMDIwMzgzYTIwMjAyMDIwMzEzYTIwMjAyMDIwMzEzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzEzYTIwMjAyMDIwMzEzYTIwMjAyMDIwMzA+IDE5MDAgNDcwMCA0NSA4MTcwIDMyIHMKKzw0ODU1NGU0NDUyNDU0NDVmNGQ1MzQ1NDMyMDIwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMyM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMxM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwM2EyMDIwMjAyMDMwPiAxMTQwIDQ4NTggNDIgODE3MCAzMiBzCis8NTU0ZTQ5NTQ1ZjUzNDU0MzIwMjAyMDIwMjAyMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMDNhMjAyMDIwMjAzMD4gMTE0MCA1MDE2IDQ2IDgxNzAgMzIgcworPDU0NDU0ZTVmNTM0NTQzMjAyMDIwMjAyMDIwMjAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzAzYTIwMjAyMDIwMzA+IDExNDAgNTE3NCA0NyA4MTcwIDMyIHMKKzwzZTMxMzAzMDVmNTM0NTQzNTMzYTIwMzA+IDExNDAgNTMzMyAxIDIyODAgMzIgcworPDQ4NDk1MzU0NWY1NDRmNTQ0MTRjM2EyMDIwMjAyMDIwMjAzNDM2MzczNzMwPiAxMTQwIDU0OTEgNiAzMjMwIDMyIHMKKzE3IExXCitOCis2NTI0IDIzMjcgTQorNzI1OSAyMzI3IEwKK2RwCitOCis2NzIwIDIyNzQgTQorNjcyMCAyMzgwIEwKKzY3MjAgMjM4MCBMCis2NTI0IDIzMjcgTAorQwore30gLTEuMCAtMS4wIHNvbGlkRmlsbAorZHAKKzAgTFcKK04KKzY1MjQgMjMyNyBNCitDCit3c3Q6ZHV0Y2gxMiBTRgorPDE5MjQyMjI1MWYyMTFiMWE+IDczMTYgMjM3OCAwIDgxNTIgLTEgcworPDA0MGMwZTBmMTUxNjEyMGQxND4gNzMxNiAyNTgxIDAgODY4MSAtMSBzCis8MGExMD4gODY3MyAyNTgxIDAgOTAzNyAtMSBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgQ291cmllcgorJSUrIGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMjgpIDI4CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzQgcHV0CitkdXAgMyAvQzAwNDAgcHV0CitkdXAgNCAvQzAwNDEgcHV0CitkdXAgNSAvQzAwNDIgcHV0CitkdXAgNiAvQzAwNDQgcHV0CitkdXAgNyAvQzAwNDUgcHV0CitkdXAgOCAvQzAwNDYgcHV0CitkdXAgOSAvQzAwNDcgcHV0CitkdXAgMTAgL0MwMDQ5IHB1dAorZHVwIDExIC9DMDA1MCBwdXQKK2R1cCAxMiAvQzAwNTEgcHV0CitkdXAgMTMgL0MwMDUzIHB1dAorZHVwIDE0IC9DMDA1NCBwdXQKK2R1cCAxNSAvQzAwNTYgcHV0CitkdXAgMTYgL0MwMDU3IHB1dAorZHVwIDE3IC9DMDA1OCBwdXQKK2R1cCAxOCAvQzAwNjUgcHV0CitkdXAgMTkgL0MwMDY2IHB1dAorZHVwIDIwIC9DMDA2NyBwdXQKK2R1cCAyMSAvQzAwNjggcHV0CitkdXAgMjIgL0MwMDY5IHB1dAorZHVwIDIzIC9DMDA3MCBwdXQKK2R1cCAyNCAvQzAwNzIgcHV0CitkdXAgMjUgL0MwMDczIHB1dAorZHVwIDI2IC9DMDA3NiBwdXQKK2R1cCAyNyAvQzAwNzcgcHV0CitkdXAgMjggL0MwMDc4IHB1dAorZHVwIDI5IC9DMDA3OSBwdXQKK2R1cCAzMCAvQzAwODAgcHV0CitkdXAgMzEgL0MwMDgyIHB1dAorZHVwIDMyIC9DMDA4MyBwdXQKK2R1cCAzMyAvQzAwODQgcHV0CitkdXAgMzQgL0MwMDg1IHB1dAorZHVwIDM1IC9DMDA4NiBwdXQKK2R1cCAzNiAvQzAwODcgcHV0CitkdXAgMzcgL0MwMDg4IHB1dAorZHVwIDM4IC9DMDA5NSBwdXQKK2R1cCAzOSAvQzAwOTcgcHV0CitkdXAgNDAgL0MwMDk4IHB1dAorZHVwIDQxIC9DMDA5OSBwdXQKK2R1cCA0MiAvQzAxMDAgcHV0CitkdXAgNDMgL0MwMTAxIHB1dAorZHVwIDQ0IC9DMDEwMiBwdXQKK2R1cCA0NSAvQzAxMDMgcHV0CitkdXAgNDYgL0MwMTA0IHB1dAorZHVwIDQ3IC9DMDEwNSBwdXQKK2R1cCA0OCAvQzAxMDcgcHV0CitkdXAgNDkgL0MwMTA4IHB1dAorZHVwIDUwIC9DMDEwOSBwdXQKK2R1cCA1MSAvQzAxMTAgcHV0CitkdXAgNTIgL0MwMTExIHB1dAorZHVwIDUzIC9DMDExMiBwdXQKK2R1cCA1NCAvQzAxMTMgcHV0CitkdXAgNTUgL0MwMTE0IHB1dAorZHVwIDU2IC9DMDExNSBwdXQKK2R1cCA1NyAvQzAxMTYgcHV0CitkdXAgNTggL0MwMTE3IHB1dAorZHVwIDU5IC9DMDExOCBwdXQKK2R1cCA2MCAvQzAxMTkgcHV0CitkdXAgNjEgL0MwMTIwIHB1dAorZHVwIDYyIC9DMDEyMSBwdXQKK2R1cCA2MyAvQzAxMjIgcHV0CitkdXAgNjQgL0MwMTI3IHB1dAorZHVwIDY1IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTI1NiA5NzggNzM5XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjI0M0UwRUM1OTM0NENFRjM2OTY1MEEwMzdCNDM4M0IwM0Q2CisyNEMzMDZFODdFRkRENDc3NUVDNzg3NDIKK0ZFRkNFNDRCNzY1NTc0NDY2QworRDFBRjdBODIKK0NGRTE5RkVDMDcwNTUxNzE4MDNCRTM1RkI2MUYKK0RGQTVBNEM3MzlBNEUzOTU3RUI3QzY2MjMzODQ0QUM1MUE2QTkxQjQ1Qjc1RTZBRjFGNzY3NzlBNEVBMzlENTU0QzY3MUYwMzlGNkVBMDkwMkVFQUJDMTMzNjNCRERBNTEwMUNBMTJCQjgxNTZFRUM1QUYwQkY5RTZGRkQ0MUUzRTgyOTc4OTVFMTU1NEY1NzMxNERFNUU1RTcwQzMyREE0N0ZEMzBBODUyNUQ3RUU5QzYwNjA3RURCNkZEOUY4MTZCQkE5NDE3Mjc2Rjg1Cis2MEY1RERCNAorQTM5NDhCMzNFQjIyQjgyN0RGNjgxREJCMTkKKzI5OTNCNTUzQzZEMTcwNzZCNEI5RkIxOTNBNzlDOEEzNkVFQ0Q1RDRFRjBGNTMyNDM0MjkyREVGOThCQzBCN0VENzhGRDg0MDFDQkU4ODMyNTgwN0EzNEI5RUNFN0QzMTI5MDhCMkJENkE1NjU0MDkwREI0NkQ2Mzc0MDY2NjhDCis1MUZGNTg2QgorMEE0NTU3MjdDM0Q4MjFFNTM3OUIxOEU3Q0YKKzczQTBCRTg0M0NCODQwNUNDNDFBNzVBODA0ODZERjk1NTkxNDAxQUIyNDdEOUZCQUFFRTZGMUVFNTVBRkNBQjE2NzM5RjkyQzE3RjlEQzQzMTczMEE4NDc5NTA3QUZEOTU5QUM5MTlGNkExNjk3OENERDRDMEQxNDY3RDZFMQorMzk2MkRDMkEKK0VDRTYwM0RCRjc0NzEyOTRBREQyQ0QxOThCMjkKKzUzMjkwOEM0QTUyNjVBNEY3NDYzRUNENTlCREE1NUQzNEM2QUE0NkVCQkE5OUI0MTdGNUM0Q0Q5MDdGMTIxREYwM0Y3QjQwMjI3MDFFRjc0QjgxQjI5NzZDODZBQ0ZGOTU1QTU3OEFERDhCOEE5N0ZGNzE1M0U1MDI0QzFEMTZFRUM0NkM0OUM4MTYxRTgwOTA4RjY3NEU0RDk4MkI3RUU4Mzg4MTZFMzRCNDcwQjQyOThBQTk1MEY5MUM3Mzg0N0FFNTEzQkQ5MjhFMUFDM0JCNUI3RUM1NDVDQUY4NTQ5RjlBM0QzQzY1MUNFMDk4RjhDQkQzQ0ExREFDOQorQjFFQQorRDExRjUzRjI5RTY4MzZEM0Q1QjI4NTY0Q0FFNjM5MzIyREZCQzk5QzRFMDkzNUJEQUU3NjU5NTJCNzBENTBBNTRFMEIyMzIwQjY2MDIwMzAxOTYwRkM3NkI4NjdGQTg1RjFGOTFGMzI5NEYwODNFMzY4NDgxNEUzMjE3RjA0CitCMzVFQkU2RAorNTlEMjQyRDY2REM5QjQ3RTQ5ODg2MUYxQjkKK0FBRjgzRjM5MkY0NzMwMTM0MEIyRDAxNDBFRUE1RENFMkRFNDczQ0RFRDQyNzIxQzI4RUQxMEU4MjhENzQ2MjA3MUY0Qzg2OUVBREI1RkRBMjQxQzlGNkI4OEM3NzQ0RTlEMjNCN0Y2ODM5NTVEQ0JGMworMjgwODE1N0UKKzVBMkMwQjY1RjlCNTVEQkJFRTk4MTc0MzNBCis0QTlGOUYxOThFNjE0QzAxMjUyMjM2QjkxNEVGM0ZFMTY3QzMxMDBBMzY1QUNECis0RTlEODYwQgorOUU1QTI3RDBDN0Q2NDJDMDI1ODlEMjY4MUYKK0NBREM4RTA0REJCQzZBNkQ3NUJCNDhCRTE5Qzk4RkQ3QjEzRDM1MjE5RjBBQkY3QUJDMENFRTgxNzE0MzVBCis5QTFFRDNGMgorNkRBNjc1MDREMDFBRThBQTk2ODFCQjlGNjAKK0RBRkUxMjU4MTdFN0NCRUVENDlERkU5NzQ5NTYyMEE1NUZBQkQ5Q0VENjhBNkMyNzUyMzU5N0UzCis4NkUyRUY4MgorODMxQTYyRDQ1OEM2M0RDOUYzMzIyOUEzQTEKK0ExMTQ5MUEyNjcyQjY0MEE3MUQwMDJEOTc3NEQzREY5MEU3NzgxMzkwNzY4OEU1QjlGQTI0NDgwQjQwNUMwNzY0QUNFN0M1Nzk2Q0NGNUFFQzVGQzkzRDJEQTk1ODE5RjRCNTcyNjM0QTczRDlGQzlDQjBDOEVCMkU5MTU5QQorRkM1RjZCMUUKK0VFRjNBQ0Y0QkE3NkFDRDQ0QUYwOEIzOUQ3CiszODNEMjcxMzQwRjY4RTA2MTdEM0Y2MEU3NTBDMzg2MkE2ODNEMjVCRkQ4QjUxRjRCODA2ODJDQTREMjA5NzZDRjQxNUYzQ0FCQUExOUFFQjcyNDBBNEUyMDQ1OUNBNkFBNzUzOUQzNkUzMkUwN0EzQzVGQ0VFRDcwQjc4RkQyNEM1MjhDNUNDQUMxNzlBQTVBRkY3RjZENUVDNzNCMTc1MjlCREZEM0NCMkIxMkFDQUEzMzkKKzlENEY5MjQxCisyOUM2RjBGQURENkEwQjczNEU2MTBFNjQ5QUE0CitCNTQ5OEVENzVDMDM2REE4MTRCODVCOTY4MzQ0RkFGNUJDN0UwOUUwQTVFOEE4QjU3MzlEMTZDOUQ5QTVEOTExOUIyRkYyNjU4RjI2NkJGQjY3NjQyOTFENjM5RTA0QjY2MTdGMDdBQjNFOEU5QkQ3RDNFM0JBNDIwMjY3QzJENjY4NDM1RDMxNjg3Mjc5QUE1ODEyNjEzMkFDNTlBMUI2OTZBQTdFODI3MUI4QjJDNThENzhFRTI0RDQyMTgwRjczQURDNDhEQ0E0N0FDN0E2RTAyOENDMDlFMjk5M0QKKzY4NDVBRUMzCis4Qjc3M0ZCQUJBRTU0RTQzMzNFMEVGQzdGQQorOTFEMkU5QUJGRjBFRjA4RTEyMjVDOEI2RDQ4MjE4MDhBQ0M3RTZGMjE1OEQxQTY3MzA3ODA4MkI1MDkzNTM0Mjg4RTBBMTY0QzcyQkMyMEUwRTdEMDJBMDM1Njg2NDc0MDFENDAwMjRBMkQ5MThEMzMwMjY3MzU4RkU3MDAxRkRBQzVBOTA4NEEzQzIxOTA1MUE3OUQxMzEzMjE4QzZBMzNGN0FEMjBDNzhCRjcyMENDM0JFRTE4NkEyNjlGQkM4NTYKK0YwRkEyODMzCitEMURDNDcyOUUzOTE5NUQ2MjFFRDUxOUE1ODk4CitBMzFEQTE3MzI0QUVGNzc2RUY5QUZEMzY1QjM5MDNCNEVFRkMxMEIzRTNGODdFRDlGMjdBRjNDNUY5MDkxNUM0MDFBNTlENENEQ0FENzgxNDAxRDBDQjU5QzczQTJCRDY3NTFFNkM1REMyMjRBNTVFQzZBQTM2MjkwNkZFMjMyOTVBMkI5QjlDN0ZCQUEzNTEzQTJENjdBMUNGMUMyRDU5Rjg1NThEMzU0REUwODk2RTkzRDJBQURCRjdBMENGQkVFMzkxNkVENAorMjczRTdCMkMKKzc5QTE1MkJCOEFBOEVFNjQwMjEyQjk4NUJCMkQKKzAwMTk3QUVFODVDRTNGRUUzQjUxOTJEQkM4RDExOUFEOTNGMThDOTlEQzMxMDk2RjlFRjUwNEU4QUE0MUY4QjIwOTdFNzYwNDUwMDRCODcxOTExN0VGMURDMEI5RTgyMUExQ0E3NEY3QkZEQjk0QjgzMTRFNUFEQzdGM0RCQzVFNTUwNDM1MzcxMEM5RUI5QUZGQzRBRDk2OUZCRjlBQTc1ODM2MDdENjU1NjQ4MkZFM0I3NTI2RTY4Q0Y2NUJDN0YxNDRGN0FGQ0Q1Rjc2OEYzRUIzNzc0QUI4REE1N0YwNzU5MUIxODkzNDk1RUREM0E5RTMKK0ZBQzhEMkUzCis5MkRGNzIxRDkwOUQ0RTI5RUMzNTVFMkUxQzYzCis1NjE4QkJGRTUyQjJDQjM1Q0Y1RjlDQkI3N0JENzlENTEzQzRBQTc2QUQ4MEU2OUYxN0Y5OTI2ODNCOTcwMzNBNzJBOUU2REM0NTE2MkE4RTc2MzIwMzI1RTAxRTdEQkYwOEVFRDc5NjMxNENBMTI2MzlCQjNGODI4MzQwRDA2MjcxNENGMjM2OUIyMkRCMzQ5MUFGNzAyQTA3RTJGRjRCQjdFNkY3QzE1QUUwQjdFOTAzMkVFRTFDMzc5MEY4NEU5M0JDMTczOEYwCis3NkZCMTlCOAorRkZCRDUwNkE2MjhBMkE5MjE5QUI5QjdCQzgKK0Y3MDM3RjQzRTdGOEYyNTZBOUYzNzNCNzI3N0Y2MkVGODNGQzAzMjAwQTMyREY2NERFQjZFQjIzNkQyMTY2N0VDM0M5MUZEOEY0NUJDNDAxRjcwOTc2NDE2MjgzM0Q5OEFBRTFBRTE5NjY4NQorMDFCRjdCNDYKKzAzODMxNERDRTZBN0Y0QUNGNEVFQUQ2OEY5OUYKKzhFMzVFNUE4Mzc3NUQyOTlFQjIxNUNFNzAzNDI0RkI5NERGMTgzMkUzOTBGQTUyQzQzRDBCQjQ4NkREQTdGNEVFNTBFRkQ0QzY5MjgzNEFEMDVCMTlCRTk2QkJBMEUxRjI2NUJCQkExMERGNTYyOUU0RTNBMkVCRDU0QTIxNEZGNERCODIzOEZGMkFFQkFCMTIxNUQ5RTIzQkIwMjM2QjdFOUQ0RjQ5NzlFNzUyQzY4N0VDQjVDNjExRDY4NkZDQzU5NkFDQ0YzNjJFODE4QzU1QUQ0NzlDREI4NzAxNEE3Q0FDNkUzCiswRUIyMUVBQgorMkRGN0Y0QTgyMkZDQjhDN0M5QjI3RTVDRjFDNgorQ0RGRTRDNjk3MTNDN0FENUNCQjE0NkMwMjJBQjhENkNGMEUwQkFDMTBCNjg5NzNCNkUxODQ5QTc0OTQ5MTQ3MTIwOUVERThEMEIxODNDRUUyMTUyMzEyMTFFMTM4RUJFMUYyRTI0OThDRDk0MTU2RDJGOEQ5RTJFNTRFM0Q3RjEyQzZGRDg4QTk1RDgzNjMwODM4OEUyQjkxOUIyRDUwNjRGNDNBMTREQkVCQzU2OEI1NTk4MjJDMUY2QTEwQUUyNTg4QkNCMTVERjc4MjhCMDlGQjZGNUFEMTgyOEFEODY2QjU5MDNDNEQxMEU2MjQ1Q0I4MEQyRUEyNUYzCiszNzMwCisyRgorMkI3NEQ2ODAKKzhEM0VDMjVBOURDOTg4MzVGNjU1MkNFQ0Y2CiszQzg0RjgwNUUyODc0MkE3NjJFMUU5ODk1MzlBMjMyOTZBODZBQ0I0QUZGQUVCMjM1QTdDMEM0NUY1NDE1MzYzODdCQTcwQ0REODBDRDFERjg3QjE0NUMwMzkxMjhFNUFFMzY0MjYzRThCMkQ2M0E1QjMwQThCQTA4QjQ1MkM2MUExQTU0RkUzQTNFODFBMEFBMzlGRkZBRjI0MDM5MDdBNzIzNDlENjJENzc0MzQwQzlFNDRFRDUyREJGMDFGRjA4MworRjMxNjZCNzYKKzdGMjNFODUyMUE5QjgyOUZCMkI5RjdDMjkxCis2NDFFNjYyNUJCNDhFMzZGNEU1OEYzMDAyMkU3MTQ5NjI2NEI1NDNBMjVCMjZENTFFNTlDNDlERDcxMjBDRjY5NzUyNEMzMTQ1QzVBMjUxRDk1RkEwMkI3NTFCQTgzNjg3RjlENEFBQ0VCODI0QzE5OEFCODBFRDVGOUQ1NEQzMTREQTVGMzRBRTIzMDQ3NTY4Nzc2QTFGOENBQjMyODlERjRDRTU2RUQxODZBNDhBNDNCMEVCNzQ4RjZFMkVBMEY4NkJCODgKKzQ1QjEzQkVBCisyODc3MDFEOUJCMTQ1QjBFREMxMjkwQkJDMEI3Cis2M0MxRkVBM0U4MjVCOEE3MEQxRENGRjRFMTY1OTg1ODc5NUVGQzlFMEY0NDVEMEZCNUIyMEY1ODMyODQ1QzdENEQ5NDU3RTQ1QjQ5RkM0NzQ0OEMyRDAxMzJFNkVCOUE1MUI0QTRCODQyM0YxQTQ5N0E2Njk5REJGRkE5Q0Y4REJFN0Y1NDQwOUFERTMyQzk1M0Q3Q0M3OEM1N0NGQUVGN0QwOTA0Mjc4NEQ1N0JBNUI2NEYxRjhEMjc3OTlBNUUzRTE2NjFBMTRFN0Q3RDMzRkZCMDcwMjczNkFGMUJCQjE0MUVCMUYwRUE3MDQ0QzVBRDU1NTZENDgwMEUKKzVGRjMxNUFBCisxNkU5RDk4ODhBMjhGNkM5OTBGOEVBRkVFMTAyCitENzU1QUI2QUE1OTdCMzlENjJBNTcyQTgyNzRCM0U0OTQzNkM4MkRDMzU4RDlDNkJBMEE5QkIyNDNCQUQ0NEMwRjNCRDgzMTBENUVFNkM2NUFDRDhDQ0UwQ0E4MzUzQzFGRkZFNjJDMTc0RDJFNzIwQ0IxNzU3RDQ3NkFCN0ZDQkM3NTlFM0E4OTQyNDE5MEY2MENDMzExQzBGOEUwMzM4MTkyOTk2NTUxODZCRUQyNEE4RDU1MUVCRDUwRUZGNEExOUU1Q0QwQUY1QTQ0RUQ1RDIKK0ZFMUYyMjJGCitGNzQ4QjlGNDAyODlGODhEMEEzQThDMkFFQkUyCis2RDMxNTdFRTJGNjE2MzcwMjVGMkIwMURDQUY3QUE1OEE5MzUzRTMyMTIzMUUwMkIxRTEzQTdGMjZCRDgxM0M3NkRCRUY2MEFCQkJFMjQ2MjI5NzkxMEJERTAxOEI0QjJGQzI4QzFGNERBQzkxODdDMkRCMEExRjNBMTU5MkY1RjE5N0QxNjdERjAyQkE5RDUyNjA2MTJCMzcyNzNBQTIzMTIxNkQ4RjQwOUFGRkFCN0M4REFDRThGNDMwNDA2OEZEQUJDMTk2RjA1M0Q3RkNCRDRCN0U4NkIxQkJFMDQ3OUNGNDJCREQ5QkU4RDc2NTI0RkJDQjc2QTNFODEKK0U3Q0IKK0JBM0U0OUQ4RENEREEyQThGRTA1NDIKK0JGRjVGOTlECisxNTNGOTM3NDU3MjhCOUVGOTQwMjI3Q0Q5NAorRDQ3NTk2OEFGN0I4NDgzRkU0MDhDOTg3NjQ3RUIyRDM5N0E2RUM4REFEOUFEOTgzNTEyNkQ4OTdGQzg0NUJBRTFBREYzMjg0M0Q1MzYxRTUxNDU3QkI0QTgzQkIxMjQzOTczMDc5MjU4NjBCOUY5NkQ2Q0JCRAorNkU0RjRFQ0UKKzQ1MUYxNEZDQjlFRUI5NTgyRDZBQjdFREUyCitERTZBNTFCNjM4NkM4MTY5ODJFOERFMjZBN0FENDhBNUVCM0NGQUEzRDBBMjRCMDEyMUYxNTRCQ0FDRkRBQTkzMzdGRTQxRkUxOTBEMEI2NDVCRTZENDc3OTE1NUNBNUVERjQ1M0FFMDdDMDgyNTJENzVCMzYwNUZENEMxMkI3QTgwQzZGOEFFQjU0MzYxCitDRDdDMEVCNQorMDJGOTFERTAxRTEwOTg2RUU0NzA2RjczNjZCMworODU1QzQ5Q0IyNDhCMDUzQjQyOUQ1MjdENEUyNEE3NjYzQzFCOUI5RDIzMkQzQzJFMkY1M0UyMTY2QzZFNkYxOTkxOTM0QzA3MkEwRjMxNTVDNEQ1MzhBNTYwMzZGMDg5QzE4RUMzMDY3NENGODMyNEQxMDBGODBCNEZFOEFCRDFERjQ4MDQ5QzIxNTRBQjgzOEVCQURCMENDQjlDODAwRTM3MUM0REVDMjNGMzVCMUFGNUNCRDQ0QjEyQkU3ODQ1RjdDRjI3NzhCNUUwOTIxRDU4MEREMkFFMTlEQ0YyCiswMkMxMTk0NworNjM3QjM5Q0E1MUFERTNBODk5MDk4MEVFRjIKKzdGRjMzQUNCQzA5QzQxNUJCOEFBREYwQkM1Q0M0MTUxQjlBRTQ2MjhDREM5NTkzOTM2NkY0NkEwQkY4MkZDOERFODI2MDYwQzg4MUE5RkRFQjU2Qzc2NTdCOTdDOUQ4OUVCNjRDRjMxMDgxNzRENzlGQUNDQjk5NDk3NTI5QjUwQzNBN0U4MUQ4MDYzNzEzMkFDRDdGQzMxQkI1MzE1RkQ4NkJGRThBMkNCQjM3NzczRDQxN0I0MkUKKzZDOTQ3MjY5CiswNThGNjg5MDBBNDYwRTcwNDhEM0U5OTA4QgorNTlEQjNCMzVCN0Y0MzM2MTNDQkU3QzhENTY5NUI5RUUwRUU2OTAyQjQ0RUQ4NEFFQkY5OTQ0OEM0NzIwN0EwREZDRjVCNDE4M0Y4REQwNzBENDVEOEY3Mzc4RTQyOUFCNEREOUM0OTEzMEEzREYxMkQyNzg3MDA3QkVFOEJFRkIzNkVCRTUxMkRGMDExNTY0RkNDRDE4OENBMjc4NzNBRkNFMkE2MgorRjIwNUUzM0QKKzFGODgyNUEyMEU5NTQwODA2QUU2NDA0MUY5N0EKKzcyNkQyNzA4NDJFRDkxRkMyRDUyQ0YwMTQzQkNDQzk0N0Y1MzIwMzgyQjU2RTY4NDZGREMyQzk0Qjg1MUM2RDdGNjRBRDI2NjA5QjQ1OEZEREQ2MzVCN0FFOEU1QTRGMDlDMEU0MDc3MDhFRTY5QUE2MkRBNTQ4RUE0M0ZCOTVDRDhFQThDNkZGODM0RDE0NzBFNjVBMTZFQTkxRjgxRDA4OTQ2RDgxNjJDMjRGMkUzRTFDMkFCRkVGNjVDRDA3NjU1MURCNjEzOURGQjhBRDRDQUMwCitDQ0ZBNjFGOAorQUY0RjY0NjEyMTgyNjFCMkYxQjc5QjIxQkQ0RAorRDU3NDE0OTU4NDg2QkI1OUU0MTIyMDFGNjVBNDU2RDNDQjBGQzA0MzdGRTI0MzhBMENGRjEzNzgyMjI0QzE1NjFBMERBODkzMkQxQUQ4QTcwQjBBQTZBNkI4MTFGQzZEN0E1QTJFQzlEOUIwQzI2RDVGRkQyNEQzQUI5REJBRjUwQzI4QzJFNEI5RjgyMzY1RkZGRjlFMTc5QTAyNTZEQ0RGOUMxMDJDQTYxMTE1MkExNkQwQUQ4OERFOTAyMEYzOEM0NTU5ODhDNzVEMDYyNUNEMDc5N0IxNDNBNEI1RUUzNjVGRTI5RkU4OEY3NDdCMjczNUIyOTlBRUFCCiszQkNDRkVGMworM0Q1NEY4NDQxMUI1MkRENEFGMEZGNzJCNjhCMgorQzg0REI0NDFEQjYxRTE5MEU4OUZFNTRCMzcxRTM1NzI0MTE0RUU1MzlFODJFRjc2RDNFRjM3OTAzRUVGNzZFNDc0MjI2NDg0QTNDNDQ2NUE3NDg2QjA2MjczRkIxRjlFNjEzMzY0M0Q4RDAxRTg1QjJFNUE5NzA3M0VDNjlGRTI2QkRCOUMzRkQ1NkJFMkE5RDVEMkQwQTRCNzgxMzlGQzY3MzlBQkQ5MEM3RkJFRkRGMzRFQTkxOENENjZCMDY4NkUyQUE2RjM3REIxMDc1NUI2RURCRERFRTE3QkRENTQ2NDhEQ0ZERTlERUNBREZEQjg5QzkyRDRDQTMzCis2NDlDCis4RUQ4NkQKKzA2RjIzMDU0CiswODExRTE5QTJGRTA4MDQ3MkREMjdDODAxOAorQkVDRDgyOUE1QjRENjVEQTMwQjc2RTg1NEZDREU4MjQ1RUVEQTg0MTU3RTQ4NjEzMkJEQUM2NTM2NkQ0QkY1NEQ1NUY4RkQ1OUJEMDJBRUU0NENDMDRBMTNENzNCMTlEMkM2RENBOEJBN0ZCRTIwMzk5Mzg2Q0ZGNDQzREFFMzEwMkJBRUNBREJFM0QzQUUwMUY1OUJBMjU0MEI4NkM2QjY1Cis0MzU4NkJDOQorRTdCOUM3NUE2MzZCOEJFMUUyREQwNUQzRkIzMAorNTRERkY0NkYyOTMxRjBBMjY1QkJEOEQyQTk5ODVBNEU1NkE1RjAzQUYxOEEyQUM0MzlGMjA1RUE1OTRGOTdGNjI3RDk3NThDQzZEODU5NTEwNjJCNEQwQTI0MUU3QUNBRkFBMjc4NDJENTM3OURFMDdBNDg4QjIwRUVFNUUwNkZGMzM1OEUyQkQxNkI1NTE2QTE4OUFFNjExOEUxQUZCMTE2RjFEMzE0NTg5MTEzRDFBRDI2RTBCMDJGREQwNDgyQzZCQkY4RDIKKzVEOEQ2QjQwCis0RjE1N0I5NTUyMTc4QzQ1N0FBNDk2RkUzNworQjM0RDQ2MkVFODlDNkJFRjhEMDBBNUFDMzg5RENFNTk2RTAyMkUzMkVDRDgyN0M4RTI2Q0UxRTkyMjAxODU2MzY4QkY1RDk0QjczMzU1NzAyQTI3Rjg3MDU0QjY0QjhGNTI0ODhEQzQ2NDA1RDExNzA0NzVFNjUzN0VFN0ZENjE4RUIyRTEzMkRGNjU0N0RBNEM5QThDRjI3QkU0RTE4MUI1NzU0QjNERjM2RjZFMjgzOQorNzczOUYxMDkKKzdFRjdFOUEwQ0M1OTMwNEMzREE5NDlDNUYyRjUKKzdENzlEODgwN0MxQTFCRTkzRjA2REJGQjNBOTI5NUYwQkI3NUJBQzhCREMxQUU1NzREQjRFMTVENUQ3Q0E0MjcyRjVFRjhFRjY1NkI1OEVCQTM4OTBBNzQ4RTM1RTUwMkI3NjIwQjY1NkUyMTQ5RjI2N0ExNTczRDQxREQwOTFDNzhGMUE0MkY3ODVEQTQ1ODIzRjIzQTU1QTIyMEQxQkEyNEI3OUI4RjE5QjY4MTIwQ0YyRUM0RUQwMzA4ODdBNkU2MzYwRTVEMzBFODRERDM2QjY3OUQ5MUMxQUMxQzlFQUZGMzQyMENBNjgyMDA1NzExODZBQUMzNUNFOQorMTZERQorODJCNkQ5QjA0QkNFNTJGRTkyRDU2MjcyQzQzRkNFQUEKK0U0MUNDQTY5CitDMzU2RkJGOTQwNDkxNTc5Mjg0RjIyMjBCRDRFCitGMTIwMTdGQTUxOTJFRUI1ODAwM0I5QzA2NDI2MDVGRjJCRkZGQjdBQTRFRERFRTNGNTEyMTQ5MTc1RTkxMDJGRjhERUU1QzM0N0RBRjY3MEVGNDY0MTQzNDQ1MERGQkVCRTAxMThFNzE2RjY1M0Q1QjAxQjRCMzU4MEI4MjU5M0MzREE5NUE5NDFDNzQwMzM2RTVEREYzRkVCODc5QkFEMjFGNTk5QjFBMDk2MDc3ODkwRDhEQzU4OTVFNjIzMzBEQ0NCMDI3M0JERTcwQzgwOTUwRUVBMkRCRURGNzVDNkUxQTczMjNCQzAwRUI5Q0U3NkE2N0VGMjYyOTYKKzNDQzUKK0QwMDA1NTEzQzg1OERCOEFFMEExQjFDMEU1NTY5NzY5N0NEQkNDRTdDRUE2QzMxRkQwMTFGMjcwQTIyMjgwMDE2MkEwMzI4MkQ2MEQyQworMTc1MTgzM0EKK0VBQkQzMjFEMDFDNzI5Q0E0RDQ5QjJDQzQ3CisxN0VBQ0RGM0JBRUY5OTk0MEY0RDdERjk5NEJBRDBGMEQ5QjY3RjlFNzVFRQorQkE1RDRCM0UKK0M3RjlGMjNGODZCRTk0RjU1NUYwMzNDNzA2NDkKKzM0RkI1MzBCODY2RkFBODNCOTFERkY0QkM1M0NFMjI1NjA3MTNCNTEwODVDRkE4Mzc0MTNFN0M5NkQ1OEUxMEZEOUZBMTUwNzhDNEQyNTZDODcyNUY2NTcyQUZGNzZEOTgwQTI3MUFBMkQxQkNEMkM0N0U3NkQwREJDRDI1Q0JGMjVENTM5MEE3RUFFQTUzQUVCNTUwREYxRjQ2QjJBRDMzNUZEOTc5OTA0MEZEMzcxOEM5NTA3OUY2MjJENEZCMjkzNzBFOTdGNzIyMkJEQzk4MjZBRTE2QjI5NkFENzM0Nzk1QTQ2Q0UzQkFEQjhBMDY0Q0Y5OTlDMzFDMgorQTYwRgorMTlGM0U3CitBQTM3ODY4NAorNDAyMDY4RTBCMzQ1QUUwQUQ0OUE4QTFDOTUKKzBEOEQyMDU3OTY4Q0QyQUE2N0E2NkMyQ0FBMEE4OERDNjJGQzM2QTlBODE4QTIwN0JENzQ1RDhDMzU4OTgyMDdFODM3OTc0NkZEMzA0NDgxMDI4N0M4QzhEMjlCQ0EyNkFEMTA2QzAyNzNGRDg4RTk0NENGOEMyM0EwM0I2RTZBNjQ0RDA4RDU3OTNFQzhGNEYxQ0RFQ0Q4RUY0MjNFOERCQzkxRkFFNzExQzAwRjBCCis5MEE2MDNFQQorRDQyMzIzQkREOTk2Mjg0OTg1Rjg1RUE1MTUKK0Q2NjVGNkJFNTE2NEFDMDY3RDNDM0Q1RDcxQTREQ0FGNEI0RkFDNkVFREE0MEQxNjhCQkIyOEZBOUI1MTIwODlBQTZDQ0VEM0JBRUU3MEY0OUUwNTE3NUMwMDk5QzJBNTU1N0MzQzIzRTgwMEUxNTBFRjRGNDNCNkEyMzUzRENCNzI5MDEyQzA3MUNGMEY5QjY5MTNENzc4QkUyQTY3Qjk3Q0Q0Cis4QkE0MEM2NAorOUJGMzBGNEMyQjNBN0QyQjg5RDk0MjAwOURGOQorQ0Q1QjZFOTkxMjIxMTA3MDk5MjA3RjM0RjdDNzUzMTY5NzEwQzMwMTQ0NDFEMTQ5QzNCOUE0NTIwQkFCMDIzNEZFQTI2MDMxMUU4OTZCREVGMjlEMkREOThERkVFQzAxMjUyRDQ0RUIyMkE5QzIwRDc0QTVBRjVEQ0JGRTkwNENBMjMwNEY1NDRENUYxQjNBQTQyNzVFNDU4OTlBNkNBQTRGODE0ODVCM0E0RkU3MzlEQjE1Q0YzMDZFNjE1NjIyMkY2NTVENThERDI3QkU2ODdGQzlFMkVCMEZFQworNTI1QkVDMEMKKzY4NEE2ODZEOUY0MjE4QTFCQzEwMjlBODc4CisyRDIxRkMyMzlENkQ0NDAwM0ZBODVGQjZDMDkzMzE3OTk5OUU0MTlGOUVFMzZFOUJBRDE5N0ZFNEY2RUM3MDRBQTNGM0Q2QUZDQjNFNjRFNDdCOENBMUU3RTkxQTJFM0RDODhFOUY3ODZBNDNBM0I3QUM3QjEzNTc2NEZEQUM5NDQ1Rjc0QjAzQzFERDMzMzc0NDA5MDVBMTA1OEUxRjM2NDFENjE2ODEwMzFBRkE2REVCCitCQUQxMzM0QworOEE5RjQwRjY4MjI3MDc1Mjc0QTkxRjY0NTEKK0Y2Q0EwQUYzNUM1MTA4ODAwOTYxQkNDNDMwNjk4NEVDOEQyOERGQTJGNzk0Mjc1NEEzQTQ0NzMwOTU2MDU0NzlBQzhFRTY5MzhBRTcxNDM5MTkyNDcyNTFGQTZEOTRBNTAwMkY1REUzOTQ3MTIzMkNFOTkxQkYxMUYwMERFOEM3MDExNEI5QkRGODlCRjQ2OTE4OTdFNjZGMzA2NTA0MEQ5MEQzNDQxNjUzNjI5MkMwQzlGRTkxQzUKKzhGQTBDQTQ5CisyMTJCRDQ0NDREQzRGNjczOEU5NjNFRkFCOTU1CisyQUJDNEYxNDM5MTM4QTVENzEzQUM0MjI5RDI3MzE3NUNENDJEQTE2NkI4OUNENzlEOThCRDI2MEJCRTNENUUwQzg3QkFGNjAwNjNFNzZFQTUxRkQ1MDc0NTUyMkE5MDRGNDY4MjJBNjI5Q0M2MzdFQzc1RjkzNDk5RTdDNDNGNTI4NTI5NUUzNjUwNTFDM0Q5RTg3Q0VDNUI5RkFCRjdGQTI3REY0ODVBRkI1MUVBNDA2QURDRDMxQkIxMTM1NzlDOTYyQjI2RjdDMURGQ0MyMjc2RjBBM0EzNzNBRTVBOEQyMEVGOUI2QkE5RTlGMUVDNjU3MEYzOTI4RDAKK0MwNzcKK0U0RjA2RDVBOEIwQkI5QUNFNzdDMkMzNURFNDIxQ0U2ODdCQjc0MEY4NDZFNjg2Q0RDNjA0Q0JDOEMxM0IwODA0NDQ1MjkxQkVEQkZFQ0VBQkZBQ0M4QkFCRjlDNDcKKzg1Q0YxQUI1CisxN0ExOUE0MDM0RDUxQzEwQzQ0NTMwOEI3M0VCCitGNERDNUEwNjA2MTA4QzBGRDY0RkMxMUZCOTcyQjI0QTU1MzA2REU2OUY1MzE3QThCODNCODE3MUI0NEI2NEZFRTk5MjQwNzY4NTkzQTZCRUVBREM5RDM4NDNERTdDNEQzMjlGMDI1QjNBMTM2MEI5RUI0OUYyNkExMjM3RjQxOUM1Rjk4NzZDOTYzOTQyN0VEMkMxOEI3OTU2RkREOTlCRDE0RDFFMzdFNEY2RUE0NzVGQTNCRUZBNjIxNzQzMzdFODMxOUYzRDY3MEE4MTM2MUQ4RUJENEMzOAorQTU2QTkxOUQKKzZDQjc4NkQyOTJDQ0I3RDVDNDRDQTg1OEU4CisyREEzNTE5MURCMDE3MzlFQjhBM0MyNkU4MDE4N0RCM0IxNThEQzFCRDY5NTk3RkUxNDEyMEZENUZENTg4NTM3RkY2NkM0RTJDMTA5NjNCOTcwQjVDRkNFQjIyQkFBQ0VDOUZGRENENDNEQTEwMDZCNjE5M0E0OUFBNTQwNDA1NTc3QkIyQTY1QzFEQzE0QzcxQ0M5NzlDMUNFNTU4MzJFCitBMzk2QkMyRQorOEM5RUMxNDNFNzk2MUI3REUwQ0ZEOUQ1NTIyQworRUU1MTkzMDRCN0E0NjY4QTVDMEM2RDEzMUQ4Nzk1NDVCRDA1QzhDNkZENjlEMDBFODI0OUI5QTJFMUFCNzlENzVEQTkwOEZCREU3RDVBREE0RkE2QjEyMjhDRTNDRjVDMEQwMzE1QTMwRTU0QkU2REU1QjJCNDI2RDg1MzAwM0M4MjRDODFEOTYzQjUyOUZEODU1MEU0QjJFNTQzQ0E1RUI5NEZEMjQ5ODVFNjM1RTE3MUIzNUQ0QjRDMDFCMDFCNzc2OEY4RTJENjBCNjg1RURDOEQ5NEUyMTVBMDI2MUIxMDY1RkQ4NjhGQTYxNENBMzg2MkRDQzY3NkQxCitCREM0Cis2M0E3ODA5QTA0M0E1RkUzNzMxNjNFMTAzQTZFMUFBODdENjMzNDIyOTAxQjEzQTREQzg1NTI4MjM1MjkyRjlEN0ZDNzNBCis0QUZCMkQwNgorMEVCQTBCMTk5MDE0MUE4M0Q2NjFDNkFGOTgKK0IyREFDRjY1RTdBMTQ1N0QwNjdCMUY1QUE5MDM1MEU0N0ZGRDY2NzQ5NDhFNTg5NTNDQTZBNTkwOERBMEI3NTgyQTZGRkIwRTUwMTA4RTI5OUY0QjdDQzk4REVCRTE4NTM1Q0NFMzNBMkVDQgorQUIzQzI0NTEKKzU0QjkxRTY4MjAwNzBERjA2MDc1NEFCOTIyMjYKK0M0REEzRjcwODA0MEEwRkQzNTU1REYzNjc3QjMzODkxQ0Q4MEE2NDRFQkNBODk3NTI4MThFQzJBNzk5ODM0Q0YwRDhFQjU1OEQ5QjkyODI5QTNBRDBBQzMxNzlERDExRDI1NDFGQzgzQjI1RkVBMDhERjMxNEExOEE5Mjc0QTg2RkUzOURERDQ0QzkzRTBCQTFEMENGRDlCNDg5OTg2MEEzRkI3RDYzQjg0NTdFQjU3NUUxNzcwNzIzOUY1QzI5NDIwMkIzMTgzMzRGN0M5M0U4NjNCOUFGRjkzRUZENjJDOTFFRDRGMjY5RkM5RTI5MkZEREEzMzMzN0UyNgorNUJDOQorQjVCMzM5NTM1MjkzQzU0NDI4NkRBRkJDNEY4MDM5QkIwOTIwRTYwMTk4QTkzMzNCNEY4MzdBQzkwRTc3NDIKKzlFQTkzMUQ2Cis5NkI1MURCQzI4MjIyOTlFRUZFQzYxQjhERUNDCiswNjVDQUUyOTkyRDgyMEMwOUM4NDZBRkQ5NDg0QTg0NENCRjc3ODREQTI3N0Y0OTcxNDcxNDZFQzYzQkRCOUE4OTY5NkE2MzY0OEQwMDQ4RUE3M0NBMDE4QjcyRjdDMzlFRjg0OTk3Nzk1N0U3NEVBOEQwQjkzQ0VERjJDNDQ5NzZDNjhEQ0NDOTBDRTZBM0Q5QzY5NUVCMzQwQkNFMUQyRTI3QkM1NTNCMkI0NTg1NkRCQjUyQkJFMUZEQjc5RkY2NzZBMUZGQTY4NEM5QUIxNDM1QTREM0IKK0UyMkEzRkIyCiszNEY4NjIzNEY0OUQ5Rjc0MjlFNzc2RTRDQQorOUQ0M0NBMjZCOTRFMkU4QjBEQkZFNjMxQTU3QTE3RTM4RTQzMUZCN0UzNDZBNTAxQTAxM0NBRjdEM0E1OENEM0QwQUE4QTAwMjMxODhCRTQ4RDI1NDE5OTVGREI2MjlCNkQ2OThFNEM5MTNBMUQyQjg4OEI4RkI0MTg2M0Y0MDI0MkQwMjU5NjJDRDQKK0MwQ0FCRUU5Cis2NTVEMDMyNjJCNjJGREY0NzlBNjI1MjRGN0QzCiszREUyQzNGMjlDOTI2MEI1RUY3QUI4RTAyOUE3MzMwNzUxQzdEOTE0OTAwQTg5NUVFMkNEMzkwRDhDQjZGNzIxRjM1ODNERTYzMDBCRDVBOTk0N0ZCOEZFNDJBQTlGNDQ0NENENEU3MkZFNkNEN0M1QTlGRDQ1OUU1ODk0NEY4OTIyRjJGMEU5MDVEQTEzM0Y2ODdDMTFCQzM2MjA4NkE3NjNCQ0M1MzBGMDc4NEVBODA3NUI4MDE4RkY4ODM0NzQ4OEUxNkI1MjY0MjJCNTcxNTI2N0YxQjIyRkZFOTNGRjE0NDc0NEY5NjE0MTkwCis4QzYzQTI0NAorMkRBRTYxQ0I3RTJDREE2NkY5Q0I4RjNCRTNDRgorMDNGRTBDODgxNTFERDQxNEY0RkU5RTUwMTVFNDg3MEIxQUVFNEQ2NDg4MjM3MzVERUJCNEYwQkE0QzkzNkE2QTZBOUVFODUyRTE1ODU4NUMwRUZCOUYyMzVCQzE5NzAyMzhENUIxRDAzNjlDREQ4QjZDNTY1QTg1MzFDRjlFN0E1OTM4REVBMTZBRUUxQTVFM0MxQjNENjhBNUUwMERENjlGMDFDNDE2RThFMThGNTQxODVCMUI1MEM4NDA2Njk4MENFQzdGMDNFRTY2RTE1NURDNjAKKzJCRjBGQ0VFCisxQjBFQzM0NTZCMDQ5QTdCRjZBMjNBNkU1MworMDYwNzI5ODUxQzFFN0NENkFDREJBRDY5NkUzRkVEOEIyNzZCRTM4MDdCNjI3NEJBOUU0NDRGRERFMTI3RDA5MDQ0QzRCOTg2RDhCMjc2OUI2OEI0MkRCNTBFNjJFMkQyODY3NTJCRUY5NzkyMzk3NzcwM0IxNDAyQTNENTY5RjZBQUVBQ0NFNTRBRENEOUQzN0VBMDNGQjRCMjYwRDk5MjZDMTkwNjA4NEY4NzQ0Cis3OTYyNDA3OAorQzJBQzczNkQ2NkRFQzIxRjVFREIyNDcwQThCNgorMzhBQzc3NDE4MzJEOUY2RUYwNkVFNzA2RDY4REUyRTlDNzg4M0EyNzRDM0M0MUU4MzJCNjM5QjI3MzE0NzBBMUQ5RDUxMkVENUQyOTQ5MENCQjcxNjEyRkJBRTQ0NzdGNjZEQTg5NDBBODUzNkI3RkEyRjE3NDA5QjdERkM2RTg3RTI4QzBFMzU3NkYzNDIzREE4NDg3RjQ0REQwOUY0NTJDQ0I5MjFBODY2MzYwNjdDREY5QzM0OTQwOEVGNTQ3ODJBNjk3QTAzRDg1RTYyMTc0OERBRTQ3QzdGNUZGNzNENjhBRTQwNkNDRTE1MkNCNzExOTg1NjYKKzMxMzE2RTc2Cis4RTE3NUMzNDRFRDRDNDMwMzIwREUzNUFDNQorQ0UxNUIzNjRBQTE2MzgxRDEzOUU4OUNFRUQwQjA2QTc4MUM4MDE4NEZFNjExMzYxNDhENTU1OUMzQkMwRjhENEFCMzM2RkU3QjIxQTZBMkE1NTVGNzRFMDdGRDUxQzdFRjdDMkM3MzY0MkJDQzM4M0Q1QkIwMkREMERFRTBFOUVERDczODQ1ODVBCis2RDdDMjk3NworMDdDQjgzRjI1MERENTM2NTdCNkYzQzY1QUYKK0NBOTREMEU4REYwNzM4NjBFRDc2RDBGODIzREMwNzc0QTUxNUYxRjFDNjhGMDMxNUYyNjQ5NDg5ODg5MzM5RTRFOEVBQzVFQUI1MEFFNTUyRTA4RjMyMjI2NDZBMkQ3RTVCMkRFODVDM0EzMjZCNzdFRTVENTQ0REJENjAzRkJDMTM1N0JEOEI0ODY0Q0Y1MzI5NkVBMEY2M0ZFNUM1QjQyQkZEM0NBQTRBMTk3QkI0QTY0MzMzNTFDMzUwODg0RDMwOEUKK0IyOEJDMTQ2CitCQTc0MDBGRDhCMzJFOERDMzUxMDAzRERDRgorQTdBMjY3OEUxQUVGQkZFNkVBNTNBNzFGOEYzMjhFRjc3RDFDNTlDRjVFRjhGRUM1RDgxMDU0OEIyRUQ5MzgxMDVDNDVCQjAxNTJERjI5Rjg2MEI2RTEwNDdGMkQ1N0VEM0UyOUFFMEY2RkMzQjM2MTlGMDM5MEI5NDM0NTIxMEUxQzQ3MTA4RTcyNEVEMjQwQTdFQTRBM0U0MkZCMEY3RDE4MDFCRkNFMDJGNUIyODgwMQorMEE2MkUxRjYKKzc1NTZBNzNDNjlFMjMzQUMwNzQ1REMwM0NFM0MKKzc5Q0MyNzc3Mjk5NTQ4NTlGNUJDODlGMTVGQzAzRTQzM0Q1RDM1NEQ0REY1MUQzQzIzQzk2QUQ1MTc5QzY2QjQ1OURFQzU3ODU3NDM2MEM1M0ZBRTNFRTUzMERDMTMwMTg5MTAxODcxNkVEM0Y3QkI2RUNBRDRGODM2QUM3MDg0MTY3OTdBNTU4RDNBNUE0MDg1MEM2NzlDMjlCNDQ3NERFNzhCOEE0QzM2RkU5NzJEQ0MzNURCRjM3MDg1Rjk4RTk5MEIxQjdGNDBENzE3MzVGMEM5M0ZDQ0QzRjFEQTc1ODJCRDY0NjNCNkE1QkM3MThDOUU1QzNFRTg1NAorRTk1NgorNjlBM0QzNzM1MDVDNENENjlFQzA5ODE4NjkxQworMTZGNkMzMkMKKzVGRDE3MkZGQUE2RDQ5MUE4MjM2MTQwQ0U4M0EKK0Y3NzJFOThFRkMwQ0IxODE3QTIxMDQ2RkIzQTUwMENBN0ZFQTFCQUQwQ0EwMUUzQ0FBNEU3RDhCRTVCRDk3QzFCQjlDRDY1NEE1QzU3N0ExMkI2QTJFNEVDRjZFNEVCMDBEODBGOEJCN0E2NUFGNDQxQTc1OUM3OUM0NzBCMzdBQTA2OEI1M0RFQjg1ODdCMzJFODAwRDc0OTQ2RUMwRUYwMTBDNkY5M0UzNzM2NzMwOTUyMjA5OEVDNUNDQTAyODg3RUIzMDUyQ0VENTlCNjlDREM5RTMxQTc3MTZENDU2MDM3NjhDNkU0MTY4Q0VEMUM1NTk5NzlERkVFQgorNkFBMAorQzY0Mzg3QjFGRTdEMkIxNEI3RTQwNkZEQzk0NjYwNDlCQ0M5NzAxOUQ1NTU0OEE0NUYKKzBERkZGNjk5CiszMERFMUY3RTFDQjBDNTMxNUQ3Qjg5QzAwRjZCCis3MDREM0NCQzZFQTc4NkY5MDY5ODA2RDJGNDQwRkYzMzk3QjFENzQ4QjkxQ0FCOEQxNDE3MzUyMzBGREJCMDkzRDdEMEM3NkI2OEMxQkM3NTQyMzlBNkQ1OUY5RTQ3MEY3QkRDREVERTc1RDIwMjRCMkQwRTFEQjcyRkI2RkQ1REM5QTY3OTc0OENFMjRBNDM5MDY0MjY4NzFDQzQyNjQ3MUU0NDZBMTA4NUExOUExODI5M0RFNEQ4N0JDQ0I5RUZCM0Y1NTM3MDlFMEY5OThBNUMyRTMxRDVBNjM5NEUwOUZGREYwOTc4QjUxOEVDNjE5N0M4REMyQTQwRTMKKzI2OEEKKzRGRDhGM0ZBCis5QTQ1RDgzRTk2MUQ0MTk2RjI0RDU0QTJDQQorQjk2RTgzRkZCODJCOTNFQ0U2MTcyRUU3NTkzRUNCMURBNzA2OEEyRUJFMDQyMzMyMEE2NEEyMkVDNjdGRDk3MkYyMDc5NTgzQTUyQUE5NjUxQzVFQ0U3MEQ2RTIwNEZCNzkyRTBGQjg1RDMyRERBRUY3NDhEN0ZEQkExMzMxCis4ODg3OTNBMgorQjA3QkZGMDg0MEUzMTJGOTdBMzBGREE4REU2NworN0NDQTIwRTFGRjFDQjVCQkUyOTQ2MUQwMTM3RTVDMkRBN0IxQzU0RjQzRDA4OTlDQUMyMDkzN0JBOTFDMzk2ODVGNzU3RDFFMUY2MjE5NDMyMEY4Qjk3QkJBMjYyQkY4ODlBNzM1NEM5MzRFOTZERDg2QjUwMEQzQUM2NTYxRjE0QTI0QTYxREI3QTYwNEI3RUNGNjFEMzIzODVFNDcwNTBBQjVBRjI0QUNFMkVDRUMwNUNBMjJCNkUyQzQwRDNGQkMwRjRCNkU2RERDODU4MTI3CitCNThGN0ZBRgorMjlCQTA0RkVCMEEwMzYxMUNBQTZCNkI4MzcKKzFFMjM0MDJBNTI3QzQ3NDkyNUIxQkM0NjRDOUMwQzUxMDBDMjMwQjJGMDI4CitFQjA3RUE5RgorQkM3RDZGQkE4NjFBMjg2NTkwQjgxMDlFNUIyOQorMUIyMEI4NTcxMTEzQTU1NworQjc5Q0Y5QUIKKzQ3RDVBM0ZENUEzOThERDc4NDdEN0U2ODYyMTZEQzNEOTA5REYyNkYxRDk1Njk2QTM2RUJGMTczOTM5OTJGNzI3Q0E4CiswRTNCM0E2MTRCNzk0NDExNjMyRjc1OTUwQkZCRjQ4NkQwRkY2QjhCRjE4RjQ5OTk1RUEzMDAwNUZFNEI1RTU3M0NDQjQ0NjRFMUI2Cis4Qzk2QURERDIwQ0I2NzVDREYwNEY2QUM2QkMzOEY5NTc4NTgwRTE2QjE1RkVGMDg3MjRFRDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDYgcHV0CitkdXAgMyAvQzAwNTcgcHV0CitkdXAgNCAvQzAwNjcgcHV0CitkdXAgNSAvQzAwNzAgcHV0CitkdXAgNiAvQzAwNzggcHV0CitkdXAgNyAvQzAwODIgcHV0CitkdXAgOCAvQzAwODMgcHV0CitkdXAgOSAvQzAwOTcgcHV0CitkdXAgMTAgL0MwMDk5IHB1dAorZHVwIDExIC9DMDEwMCBwdXQKK2R1cCAxMiAvQzAxMDEgcHV0CitkdXAgMTMgL0MwMTAyIHB1dAorZHVwIDE0IC9DMDEwMyBwdXQKK2R1cCAxNSAvQzAxMDQgcHV0CitkdXAgMTYgL0MwMTA1IHB1dAorZHVwIDE3IC9DMDEwOCBwdXQKK2R1cCAxOCAvQzAxMTAgcHV0CitkdXAgMTkgL0MwMTExIHB1dAorZHVwIDIwIC9DMDExMiBwdXQKK2R1cCAyMSAvQzAxMTQgcHV0CitkdXAgMjIgL0MwMTE1IHB1dAorZHVwIDIzIC9DMDExNiBwdXQKK2R1cCAyNCAvQzAxMjAgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbMCAtMjA5IDcxNSA2OTRdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjlBNzExNzczQjFGMDYyRUZEQ0U5MzE5OEE3NjVGOEY1NUEKKzZFOUY2MEI0M0FEMjEzQjZGOTk2NzVENAorQUU5NzZFMjMxOTAxMkRCOTZCCiszM0NCMzdGQworMkFCN0NCMUFBOUU3QzZEMUE2MEVDQzEwMzYKKzc4MTczQTVFREJGQTcxRjFFQkQwQzAzMkNDRDEzOEI2RDRDRTY2ODAxRENERkVCNkJEODIwQTExRUQzNkRDCis4RTREM0NGQworOUI3NEQ3MzU0MjA2N0M1MjYwNjlCMzA3MzJFNQorMDJDOTJEMzUwNzczQTBGMTMwNDNGN0U3RjJGRDIzNjVDODExQjExMURFRDYzMDg0MjU0MjQ0MjVDODVFRDRFQ0Y4M0RBRDlBNjlENkRDMEIzMjZCNjZENUQ2MDk4MkMyNUY3OTc0MTVFNUUwNDI5NUQ4QjgyODAxNkFDMzQ5MkI3QzlCRTYxN0UyNzQ2QUYyRTk1MjREQ0QzMzk0NURDNjVEOTRCMkUwM0QwRDcxMzI1OTNFREM2N0E0QjIwMkFDODcwRUYxQzYKK0VBNzkwMjg3Cis0QUNCNUY1NkZENERBNjhEMTY0MDM1NTE5NUI5CitEMTlDNzk2MURBQTc5MDAwRDQ2RUMzRjI5MURBMkUyQjE5QUM2Q0I2MzBCMTA1RTNFMTM5RTkxOTg3OUU4MTQ4QzY1NUJGMjc4NzNDMjQwMjJCMzMwODk2MTJDNDg4Q0U5MEUyNTREMUM3NUZDMzZCREExMkQwMzM3QjMyQzYwN0U1MERBMTY1NTRDMDQ3OTI1MzdFQzIxOTVFODA2N0RDMTlDMzM0RUJEQTI3NEYwMEQ4MEVDMDlEN0M1NjgwODMwRjBFMjREOEVENkNDOUEyCitDREZCMDRFMgorRjFEN0ZEMTdERDU4NTlGNDE4NjdEODhEREVBRQorRjk3MkU3Qjc1NjU1QTdFRUE5MEI5MkRCMzE2RDBBQjRGREQzOTlCQjMyMjM4QjlFNDY4OEVFOEMyMDY5MTkwM0RFRTNEMTQ1MUMwMzlERDMxQzM0M0Y3NjgyQzU5NzU1RkE3RkEwMDQyN0NDNjZCNjU2MjgxOTQ2MURGQ0QzODM2NzZCQTIzMEZFODExNEMwRjYzNjVDODc3MkVCODc1ODEyQTA0NzM5NDYzRjU1NUVFMTY0NDQ2NjhFNEJDM0Y5RTQ4RjMzRjkKKzg0QTVGMTc1CisxMDc4MTgyRjM3NjlFN0RBMTc1MjUyOTk3QgorMjU2OEZCN0Q4NUZEMkM3MEQ3NEY0OUYzMUFDNjk3MjhBN0U3ODA2MzIwRTREMkEyRUVEMTYzRkRFOEMzQzEyRUM3OUNDQzY0MURCRDFBMDE4NDc2N0QxNzk4NzU1MzE1RUQxQTczQTBDQUNDRDgyQkYzM0IwNDY3OTlDNzBGOTk2MUM4MjAzQjcwQTM1MUM4Q0I1OThGNDY5NzlDQjhEMzA2OTZFNzU2N0RBNjA5OTFFMDg2MjI5RDYzM0Y1MAorQUY5RDNEQjgKK0Y4ODE5OUFGOEVFREM1MTI4NDZFOUI5MEY4MEEKKzU4OUMyQzhFQzI3NTNDRDk4NEREMUJFRDZBMTI0RTlDMzBGMDI5Rjc0NDA5RDRCNkU0RDU1MTZEMUEyMTI3NjBBMUQ4RUM4RTBGNTIzRjNENzExOEQ1NDRFRDVEMkU3RDA2NUU0MTg4NTIyQzZFRjA1NDNCOTM0MThBMEMwQ0I4NzQ4Nzk3RDJEOTNCODMzQzZEODkzN0JFN0I4RTZFRTg0Nzk4REY5NEM3OUFDRDM5RDgzM0MxRjI5NTA2MjFFNEFCRDZDN0IxMzBBNTUwRTVCN0ZBMTVGQUZDOUI5MUZFMUM0QTU4N0RGRgorQzIyMTZEQjIKKzdBRDU3NDMyQUUzOEE1RTUxQUE1QzY4NkY0RTQKK0EzRjI5NzIzNDJBNDUzMkRFQ0JGRkQzNDhEREZFNEREOTRCODNEOEIyNDBCM0UxNzVGNzRCNzFDREQzOTJDMDNCNzkwQ0Q2NkVDMUU5QjQxMjcwMTQ1RkNGM0VEQjE4Mzk4QzNERjM0MDQyQzRBMTg3NEQxRUFDNjU3MUY4MkU5QTUyMkRBN0JDNUVENjdGMDBERTZFQjU4MzQyQTY4RTFGOTRBNzlGRTJDMjhGRDZGMzZBMTgxNkY0NEFFOEY1NjVDMTRFREQ4QzQ0QzdDQTNDODhEOTkxNzlCNTc1QkQ5REM2MzZDMzA2RURGMTZEM0IzQUEzNzFEREU4RAorMUJCNworQURFQzUxQTMKKzU5QkZERjhGRkUwQ0M2ODNENEYxODExMjYzOEUKK0EwMUMyMEQ1MTNBRTFGNTU4MEVFNDcyRkFBRjFCMDNBQ0ExMzQ2N0E0QzQyQjQ4QjM2MjM2RkU0MUFDRTdDMzk3RDYzRTM1MjkwOTUxMjhEMkIwNkVBNUEyNDQ4NUMxNjQzMDQxQkNBMzRFODUwNUJENjQzMjQyRDc2MDQ3RkVBNjgxNjRBQjk0MDA4QTkyQjIzRjk2NDlEODA0M0I3NkMxODM1NjM1RjY5QkRBM0UzQjUyOUFEOThFNTM2REJCRTAyNEYwQjIyM0NDM0FGMjM4OTRFRUY0MjRGRkREMEYyMzg0NTE5MjNGQzRERkVGMzNFRUY2N0Q0QTZBQgorNTM2OAorMkZCN0IxQkMKKzU0MEZFQzEwCisyNDc4NTYzOTYzRDY4MTlBMzMxQzhBNzRDNAorQzA0QkU3NUM1MzVEMDg3QUNEMDhCQTk5Mjk3ODdDRDg1MEIyOERCNzRFOTFFQzQ0REE1MkM1QzdGRTM1REU3QTk0ODFENjE4M0VERTI2QjVGNzhFMDU2NUFDQTg2OTIzQzVFRjE0OTZFOTQ5QzIwRDQyNTgzRDA3MkM3RDUwN0VGMUY3QTBGRkJFNTM5NTM5MjYyNjVCMzVGRDU3RTZDRjA0Q0YKKzM5NDE2NDA4CisyQURDNDM2QzA1MzgwRTJERUUwMTA5MDRDRDkwCisxOTE5N0VEODBGODhGQjc3RDVBRDY1MDc0QUQ1Q0M3RUU0OTUyRjVEQkNFMkQ4QzNCMkY2RjlBMzk2QTJCRkIxRkZBRUQxOEZEOTlDRkE0RjlCRjU4NEIwQjAzQ0Q1QjdGM0VBOUI5NDE2Rjk5QTZBODI5RTNENUU2RTdBRUI4MkQyNUEzMjVGM0MzQkY0QzFGMkMzNkIxODZFRUE1MzJGMUYxQzkyQTE0REFGMDkxRjMwRjcyNkZCMDhEQzNCMjZENjc0QUU5RjA4M0JCNTI0QUFENkM2QTkKKzdERUQ1QkFGCisyRjI1RkE0NUM3QTVBMzQ5NzQxOEQ0MkNGRQorMjc4Q0E2ODZDODFDOUIzMTg0NkQ0ODlBMTM4NkUxODdFMEJEQUE2QjcwQ0Q0QkIwRkU0MTU5RjRDNjAzMjQyQ0E0QjZGQjg0NDMyQTZERDNGMDMxODE0NjdBNDIyNzRFRTBCQzFDQzBFQ0JFOTg3NDg1MEVFQkE1N0Y3MzYyNTc0M0UwODc2NTE5RTU4NTk4ODY3QzJCRkI3RTA5OTUyNUVCMzJBRTUxM0MzQkYxNDQ1OTdEMTVGRgorMzBCMjExNUMKK0NGRDJCRjBFQzkzOTU0NDI0RDYwMDVCRUVGCitGM0ZBNDVBMzFBRDVEMTkxQjc1MkU0NDNFRjRFNDlENzNDNEQyREE1OTY1RkI2MDRGQTQyMDU2NjgwMEFDRDFDMjM1NjhBMURBNjk5MzY2RjFCRUZGQkFBMUI5NkJFRTc0MjYxNUMzNTA2N0EyOTkzQTgzMjlCMjE5NUQ5OEZBM0MxQUVFOUM3QUE2ODJDODA3QjkwNUNDRDBEOUVERDc0QTQ3QTA0NEQyNTdGNjZBQkM2NjhENDMzRjAKKzUwRkNCQjUzCisyMTMxNjk3OUUxNzg0M0VGMTQzRjM0NEE0MDM5Cis1MUQyMkUzRUI4MDFDNDg3Q0I1NDJDMjU5ODJDRjA0REZCNDgyMkY0MzYxODA5OUE1RTcxQTFFNjRDODk4MDdGMDQ0ODdGRjVCREYyODY4QUJDMENBNDQzRTU2NzI1Mzc3QjZDRUI2NDgzRDA1MUE3Nzg4ODc3MURBOEYxNUUxNzc3RjQ1NkZENDczOUREOTc4MjY3NjA3NjQ5QTlERkEyNzdFMUVGQzIxMUM0QTZFM0YzRDc3MjdDN0YzQzkyOTVGN0NDMjczMTBERjk1QjM2Nzc2NjRGNTI1RDU2NjEyMjFCMUI3MzA4Mjk1RkY5RUVDNkVGRDkxODkwNjMKKzlFMEQKK0E1MDlGMEYyRTNFNDhCQ0NBMjkwQTBGQ0IzNkQ1QjQyM0VGMTUyOEExMTAxOTE5OTE2N0QwRjcxRTI1RDg0RUI5OEEzQzQxM0I1Cis5RTJCQTMyMworQTkyM0E4NzBBMzUxMDk4NjBGNEQ0N0E4NjQ4QQorNTY3QTg5NTVBMkZFMDA1RTA1MzBCMEFEMDA1NzYyM0M5MTRBREE1MzdGMkI5MzJDRDAwNERCQzNFMEYyNEI3RUIyRTVFRDk5QTI4MDZEQzJCMzU4MTdGNTYyN0I1RjFGQUM1NTg1RkVCM0Y5NkRCNTI1QzIyMjRGOTM1ODkyODNERkRCMDEwNzQzQzk3MDU2ODFDNTQ5MzVEMjI4RDgyQTMzQUI1QjQ3NEVCMTc1ODJBM0I0NEY1QTE0MkZERTEzOTE5NURBMTM0OTk2QjY3MgorNUJBM0Q5MUQKKzg5MEE4NDQwODAyQzIwRkVCN0Y3REVGQjlDCitFQzFFMUIzNENFRDQyRjQ5NUUyQjEwNTlDNUExNTg2Q0NGODY5NUU5MDA1NDIxNDgzNUQ2RUQxNjBEOEYxNkQ1QjFCNzJCRkI3OEE1MEI3QTBFRTdCMjBDRDExQzE2OUY1RTQ0QTgzOUM1Nzc0MTQ2REQxNTc1MEFDNTg0RDBCREYxMTBEQkZENDYzNDdEODI0NjQxMkY5NEIxNEQKKzE5MTFGNDlDCitFRUM0OTJCNzEyQ0Y2MjhGOEM2RTdDN0NGMgorRTI0MzJBNjUxNzNGNThEOENBODQ1RjI2REQ4OEEzRUEzREI1M0VENUU4QjgzMUEwREY5ODY5QUJCOUM4MDk5NDVEODk2NTkwQUZGN0QwNjA2QjIxOTZEQTg2QzA0RTM3MzY3OTcwMDYKK0MwNTJBRTI5CitERkZEMUM1NDQ2QkQ2RTJDNTAyMjA0OUY5OUI4Cis0MEYzMzdCRTI2NjI4ODdFMEE5NTMxNDMzREYzOUY5NzZDQ0I0MTY3NTRDRUFGMURBRkMwQThCRDE0NzA4RjdDMzlEQkMwNEQwQTkyNTNFQkI5RjZGMjhFQ0I3MjY5NDYwOTdCMkY2NDI4RDU3NTAzMjM4RkYxMkU0QzcwOTZBMjZBQjAyMkExNEYwNTQwQUM4MzgyMDE0MEY5MzAxN0QyM0QxOUI1QTU4M0Y4MzY1MUZDRTIxMTRCMDQ5QUQxMENEMzEwRUQyN0MzNkQ0OAorQUJENTkwQTIKKzhFRjY1REJFM0I5Njk0RkU0NzVDMjZBNjAxCis3OEI4RThGOEIwNkVDNDQxMjYwNjI0QTEzRDU1OTMwMzYzMzFEODIwMEVDM0JGREZFMjUyRTZDNjVGMkU2QjlFMUVFREMzRENGNzUxMkVGQzU0NjZBNzJDRTM2NUFBQ0IwNzE3NUNGODM0N0JDMUMyNDU4MDkxOEZCQ0ZCRTY4Q0FGQzk1RkUwM0Q2NQorOEZBOTVENDgKK0VBMTREOUMzMzZCOThFRTFGRUFBRDdCMzYzQUEKK0VGNUNBNERBQTE1QTkxNDBBNjU3MTUyNTRCOEM1NUY5RkJFMzQyNjc5Njc3N0EyQTEzNzRCNDg4OTRBRTNCMzY2NEFCNEQ4NTczMTU5MDJGRTc2MDE3RkNGMjc3MDI0RjIzQ0I4MkJGQkU1OTYzQzY2MzY0RjJCNTczRTY1MzAwOTQ4NThBNEI2MTYzQ0YyM0ZFNzcxQjhFM0IxMURBMDg1QThEQjVGOTNFN0M0RkU4NUY1MEY2OTBFMEM2RTQwMDg0NzZFMTI3ODlFRjRGQjI0MDhFRTdFMUVCQURERTFEMEEKKzMxQ0M0QUVGCiszQjQ5RjhGQjgwMUNBNkNEMTJFNzJDMkFERQorQ0JBQzFGMERBMDM5MkJDRTEzRkZFNjhFNzRDNDQ0ODNFNTVDMTFFNUNGQ0VBQkUwQUM1MjY0Q0Y0NTIzNjZCM0Y4MDY2NzY4OTkzRkQ3MTE3NzI2NTE0RTA4NkM2RjFCODk4QjA3NURDQzAyQkIxQUM2RTVFMzA2M0ZFRjFCRDJDQjg4RTUyQjY1MjY1Mzk5RTZBQUYyMzIxQjI2QkY1OENBNTlEMTFDOUI2M0I4Rjg0NQorQ0I2MEM2MzcKK0VDMURBNjhGMzRBNjM0QUU1OENEQUUwQjcwNzMKKzkwQzJDQkMwMDkyQ0ZEQjE3MjdEOEVENThEQ0YyODA0OTAzMEY3RjQ0MkYzOURFQTIwREE1M0IwQzNEMEM1MDNBMERCRDhGN0NCODYxMTlEMkZGNEE1RjY2MkQzNTNFQkM3MDczMDdGMEVGNEJFNjg5NjFDQTE5Mzk3QzZENUJCMEI3RDFGOTEwMDAzQjU3ODRDRDgyOEY4M0ZGQ0RGNkIwMUFFNTJFMDYyMEY2M0FGRDcyOEE2NTI2NzRCM0IyOEY0M0U0Q0Y1RDJBRjlFMTUxQjk4RDFCNkE3NzgxMURFRkVDMENGNERFMkI4MTkzMEMxCitCMkRCNzgzMworQzNGMTc5QTI3NDY0NTZGODhERjY4NERCNjQKK0Q5NjkwMTVCMzlDMkM5RTdGNDg3RjYyRTNGRDlDQ0Q0RjhBRkU0NEU1ODE0Nzc0MzQxNjZEMTM2MkE1MzlENzQ5REM4MzE1QTI4OUFEMkFBQjM0NTVBMjVDQ0M5MDFCQkNCRTZERTIyREM5MTRCRkYxM0I5ODM0NjA4RDJEQkMxMUY2NTZDQUEKKzhDRjEyNkEzCitBMjA4OUE3Mzk0MEM1RTBBMDVCNDczMUFDQzE3CitDNTYxNUFEMDg3RTAwMTg4OUIxODgxNEEwRUYyNzBBNzgxMUI3Q0I1MTVERUY5ODlCMTc2NjQ1RDY5QjIxQTgxMDU4RkU0MDI0MkVDRjYyNTA2RDlFNjA5QTUwQjZCNjUzNDc2MjQ5QkEyNUU2OENDQUQ3REI5NEUzRUIxQjYwQzg0RjIyODVBRTcwQUE4MkIwNTQ5NkIxMzcxNzI4MjkzNTEzNThCM0JCMDI0NzYyNTE2MjVBOTU5QjQ4QzZDODdBQzE4MjNDNjQ1QUYzQkMzMUM1RDlFMjgzMDkwQzdFNTQwQkY3NkU2RjA4QjNFODFGQkJGMEExRDFCQkMKKzlEMTIKKzU5MzkwRDM4NTdGOTAxMTE4RENDMzg5OUU5MUExNjUwMDhCNjBGQjJGMEQ4CisxRDhFMTkxQgorQUVCRURFRjM3MUE0M0UyQUJFMzdDNjAzQzQ0RAorOEFFQTFGOThBMTREMjlCRgorNEM4MjBDNjMKKzcyMDE3OUMwREVGMzk5Njk2MDdENDRENDY0RDdBQ0NGREYyRTcyN0Q5RUY0RkE4OUJEQzU4OTFFRjBGNURBREE2ODlDCitFQkMzMzE1RUM0MTY1QkQ5QUM4QUU0RUI2RTQ3NEEzMTkzMTVBNzBBQUM2MkE3M0Q0MDg1NjNDMDk5NkM5NzMwODJCQUZGQkI4NjBBCitDODEzNzk1MDA1RkIwNDNBN0ZGMkUyNEIxRTVERDQ3ODU4Mjc4QjA4REZFMzlBMURBQTdGNEUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU09zeW1jbGFzCislIUZvbnRUeXBlMS0xLjA6IFBTT3N5bWNsYXMKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPc3ltY2xhcyBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNjkgcHV0CitkdXAgMiAvQzAwODMgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbNTAgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI3NUREODlBODc5MEVBRDE4RUZDNzdEM0ZGQUU4NERBNUQKKzMxMjA3NEM0RDU0MkRENUJFQzcwOTY4Rjc1REMKKzI1MEMzOTU0RThERkI4RjQ4NTdCRkVGMDkyRUJBNDlEMjQ4OTU1QTg1OEM1QTVGNTVGN0I5ODdFQTA2RUM4NDI4RDkzOTA4NEM4OEY1QjE1N0Q4MEFCMkQ3MDZBN0VCOTM2QzM0MjkxNzM1ODhEMkFCQTZBMjdEQzk0QzBCNDg0RjMxNjY2MzU1NTc5NzAwNENCRkE3OUU3Qjg1NDVDODEwQkY5Q0E5MkY2MUFCRDlFMjAyRUQ5RTk1OTQzREY3QTVBQkJGM0MyMEJERTNCNkVFQzlDMEI5NUE0QzlDMUQzOEFBN0M2Nzg2QURCQkI3OUVFMTgzQkRERjE5NAorMTk1MworNjQ0OURCQjdBRTQ3RTlGQzZGM0FCRjFEQ0Q3QTFFMjc0RTg3REFFOQorQTIyNzM3RkEKKzY0MDRCMjE1QTI3QkZBRjZEMEI1MEU5NEQyCiswNzEyM0E1QkIzODBDODZEQjUwMzNFRTc0MzE4MUJCRkNDMDM1NjU3MUY3Mjk3QTIwN0MyM0YxRTU4ODI1N0ZERUY1REYyMjkKK0NBQkYzQjNDCis5RTA5ODhDNjNCMzU4QUNBNEI0RkVCMDMzREZCCitFMkUzODdBMDZBMjNDQUNBCis4RTEwNEI5MAorREZEQkQ0MUYwNjNFOEE4REZBMEFCQTRERDc0NDMwMTU1MjZBRTUyNTUzMTU1OTc3NzlFMDREODU4NDkzMDVFQTRGMzEKKzVDREFEMDZFNTg0MUUxQjgwNzQ3NjBDOTk3MDJCOENGNDQzRDc1MjE3NEQ5OTZDOTRFNjkwNzk3QTk1ODdDRjUwMTdERUIxMUU1RkUKKzAyNTc2RTlFMDhCMzk2ODhCQkU5OUExODZBQThGQzdFMjIyRjVFNTJCMjlBN0ZERjM3OUVGNQorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKy9EUEl4IDEyNzAgZGVmIC9EUEl5IDEyNzAgZGVmCis3MiBEUEl4IGRpdiA3MiBEUEl5IGRpdiBuZWcgc2NhbGUKKzAgLTEzOTcwIHRyYW5zbGF0ZQorMS4wMCAxLjAwIHNjYWxlCisvd3N0OmR1dGNoMTIgMTIuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvc3ltOmNsYXMxMiAxMi4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0YiAxNC4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDFjMmIzOTM1MmIzNzJjMTEwMTEyMDExMzJiMzMyOTJlMzIyNzM3MzAwMTJjMzQzNzAxMWIyYjI3MzgzYTM3MmYzMzJkMDExYzJiMzkzYzM0MzczMDAxMWU+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MmIzNzJjMzQzNzMyMjczMzI5MmI+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDBiMGY+IDkzNDYgMTMzMDAgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyODAgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI4MCA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjgwIDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI4MCAzIDcxMzMgMzIgcword3N0OmR1dGNoMTRiIFNGCis8MDgwYzBhMTcxMDEzMTI+IDEyNzEgMTQ1OCAwIDIwNTUgLTEgcworPDAwMDMwMjAwMDQwZjA5MTIwZTBjMTYwMDA5MTIwYjAwMDUxMDE4MGMxNjAwMTAxMjAwMTcwZjEwMTYwMDA3PiAyMDU1IDE0NTggNyA1MzM4IDAgcworPDBjMTEwYzA5MTYwYzAwMTMwZDAwMDYwYzE3MTQwYzE1MGQ+IDUzMzQgMTQ1OCAyIDcxMDkgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFmPiAxMjcxIDIwODYgMCAxNDM0IC0xIHMKKzwyYjNiMmYzODJmMzQzMz4gMTQyNiAyMDg2IDAgMjA1NiAtMSBzCis8MDAwYjA4MGEwMDM0MmMwMDMzMmIzOTM1MmIzNzJjMDAyOTM0MzMzOTI3MmYzMzM4MDAzOTJlMmIwMDJjMzQzMTMxMzQzYzJmMzMyZDAwMjkyZTI3MzMyZDJiMzgwMDI3MzMyYTAwMmMyZjNkMmIzODExPiAyMDU2IDIwODYgOSA3MDUwIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDI0MzIgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MWMyYjM5MzUyYjM3MmM+IDE1ODkgMjQzMiAwIDIyOTggLTEgcworPDAwMzMzNDNjMDAzODNhMzUzNTM0MzczOTM4MDAzNzJiM2IyZjM4MmYzNDMzMDAwYzA4MGQwYTAwMzQyYz4gMjI5OCAyNDMyIDUgNTAzNyAwIHMKKzwwMDM5MmUyYjAwMjQ+IDUwMzcgMjQzMiAyIDU2NjMgMCBzCis8MmYzMzJhMzQzYzM4MDAxYzIxMDAzNDM1MmIzNzI3MzkyZjMzMmQwMDM4M2UzODM5MmIzMjAwMDMyMTE0MWUwMDI3MzMyYT4gNTY1NSAyNDMyIDUgOTIxMyAwIHMKKzwyMjE1MWU+IDE1ODkgMjY3NyAwIDIwNjIgLTEgcworPDAwMzgzNDI5MzAyYjM5MDAzOTJiMzgzOTM4MDAzNDMzMzEzZTA0MDgwMDIxMmUyYjAwMzgyNzMyMmIwMDI5MzQyYTJiMDkyODJmMzMyNzM3MmYyYjM4MDAzMjI3M2UwMDI3MjkzOTNhMjczMTMxM2UwMDM3M2EzMzAwM2EzMzJhMmIzNzAwMjQ+IDIwNjIgMjY3NyAxMSA4MzI2IDAgcworPDJmMzMyYTM0M2MzODEwMGQwNj4gODMxOCAyNjc3IDAgOTIxMyAtMSBzCis8MjgzYTM5PiAxNTg5IDI5MjIgMCAxODg3IC0xIHMKKzwwMDM5MmUyNzM5MDAyZjM4MDAzYTMzMzkyYjM4MzkyYjJhMDAyNzM4MDAzNDJjMDAzOTJlMmYzODAwM2MzNzJmMzkyZjMzMmQwOD4gMTg4NyAyOTIyIDcgNDkxMCAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSAzMjY4IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDIxMmUyYj4gMTU4OSAzMjY4IDAgMTk0OSAtMSBzCis8MDAyNTIxMTkwMDM5MmIzODM5MDAzODNhMmYzOTJiMDAyZjM4MDAzMzM0M2MwMDI5MzQzMjM1MzEyYjM5MmIwMDI3MzMyYTAwMzgzYTM1MzUzNDM3MzkyYjJhMDAwMzI3MzkwMDMxMmIyNzM4MzkwMDM0MzMwMDE4MWUwNzIyMjUwNDA4MDAyMTJlMmYzODAwMmYzODAwMmMzNDM3MDAyNTIxMTk+IDE5NDkgMzI2OCAxNiA5MjEzIDAgcworPDIzPiAxNTg5IDM1MTMgMCAxNzUxIC0xIHMKKzwyYjM3MzgyZjM0MzM+IDE3MjggMzUxMyAwIDIyODUgLTEgcworPDAwMGIwODAwMDMwNzE1MTUxZDI2MjUyMTE5MDAyOTM0MzIzNTJmMzEyNzM5MmYzNDMzMDAzNDMzMzEzZTA0PiAyMjg1IDM1MTMgNCA1NDYyIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDM4NjAgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTcyZjNkMmIzODAwMzkyZTI3MzkwMDI5MjczMzAwMjcyYzJjMmIyOTM5MDAwNzE1MjIyMDE2MjYxYTFkMWQxZTE2MWYwMDE0MWUyMjAwM2EzOTJmMzEyZjNmMjczOTJmMzQzMzA4PiAxNTg5IDM4NjAgNiA2NzkyIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDQyMDYgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjAzYTM1MzUzNDM3Mzk+IDE1ODkgNDIwNiAwIDIzMTkgLTEgcworPDAwMmMzNDM3MDAyMTE0MWUwMDI3MzMyYTAwMjIxNTFlMDAzNDNiMmIzNz4gMjMxOSA0MjA2IDUgNDc3NiAwIHMKKzwwMDE5MWUzYjBlMDAwMzE5MWU+IDQ3NzYgNDIwNiAyIDU3MDIgMCBzCis8MzMyZDA0MDAzYTM4MmYzMzJkMDAzOTJlMmIwMDEzMjAxNTAwMzgzNDI5MzAyYjM5MzgwMDJmMzMzOTJiMzcyYzI3MjkyYj4gNTY5OCA0MjA2IDUgOTIxMyAwIHMKKzwwMzA3MTUxNTFkMjYxOTFlMjMwZT4gMTU4OSA0NDUxIDAgMjk0NCAtMSBzCis8MDAyOTM0MzIzNTJmMzEyNzM5MmYzNDMzMDAzNDMzMzEzZTA0PiAyOTQ0IDQ0NTEgMiA0NTk1IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDQ3OTggMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTQzNDMyMzUyZjMxMmIzNz4gMTU4OSA0Nzk4IDAgMjQ0NyAtMSBzCis8MDAzODNhMzUzNTM0MzczOTAwMmMzNDM3MDAyNzAwNDAzMTM0MzMyZDAwMzEzNDMzMmQwMjAwMmEyNzM5MjcwMDM5M2UzNTJiMDAyZjM4MDAzNDMzMzEzZTAwMzcyYjM2M2EyZjM3MmIyYTAwMmMzNDM3MDAwNzE1MjIyMDE2MjYxZTIwMjE+IDI0NDcgNDc5OCAxMiA4NDY5IDAgcworPDEyPiA4NDQ5IDQ3OTggMCA4NjEyIC0xIHMKKzwyMTAwMjkzNDMyPiA4NTkyIDQ3OTggMSA5MTQzIDAgcworPDQxPiA5MTQzIDQ3OTggMCA5MjEzIC0xIHMKKzwzNTJmMzEyNzM5MmYzNDMzPiAxNTg5IDUwNDMgMCAyMjg1IC0xIHMKKzwwMDM0MzMwMDE4MWUwNzIyMjUwOD4gMjI4NSA1MDQzIDIgMzQ5MiAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA1Mzg5IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDIxMmUyYj4gMTU4OSA1Mzg5IDAgMTk0OSAtMSBzCis8MDAyNzMzMzMzNDM5MjczOTJiMmE+IDE5NDkgNTM4OSAxIDI5MDQgMCBzCis8MDAyYjNkMjczMjM1MzEyYjM4MDAyZjMzMDAzOTJlMmIwMDMyMjczMzNhMjczMTAwMjczNzJiMDAzMzM0MDAzMTM0MzMyZDJiMzcwMDJmMzIzNTMxMmIzMjJiMzMzOTJiMmEwMDNjMmYzOTJlMDAzODI5MzcyYjJiMzMwMDJhM2EzMjM1MzgwNj4gMjkwNCA1Mzg5IDExIDkyMTMgMCBzCis8MzIyNzMwMmYzMzJkPiAxNTg5IDU2MzQgMCAyMjU1IC0xIHMKKzwwMDM5MmUyYjAwMzIyNzMzM2EyNzMxMDAwNTMyM2EyOTJlMDUwMDM4MzIyNzMxMzEyYjM3MDg+IDIyNTUgNTYzNCA0IDQ4NTcgMCBzCitHUgorZW9wCislJVBhZ2VUcmFpbGVyCislJVBhZ2VSZXNvdXJjZXM6IGZvbnQgSGVsdmV0aWNhCislJVBhZ2VQcm9jZXNzQ29sb3JzOiBCbGFjaworJSVQYWdlQ3VzdG9tQ29sb3JzOgorJSVQYWdlOiAoMjkpIDI5CislJVBhZ2VSZXNvdXJjZXM6IChhdGVuZCkKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IChhdGVuZCkKKyUlUGFnZUN1c3RvbUNvbG9yczogKGF0ZW5kKQorJSVCZWdpblBhZ2VTZXR1cAorYm9wCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaAorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaAorMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU093c3RkdXRjaCBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzQgcHV0CitkdXAgMyAvQzAwNDAgcHV0CitkdXAgNCAvQzAwNDEgcHV0CitkdXAgNSAvQzAwNDQgcHV0CitkdXAgNiAvQzAwNDUgcHV0CitkdXAgNyAvQzAwNDYgcHV0CitkdXAgOCAvQzAwNDkgcHV0CitkdXAgOSAvQzAwNTAgcHV0CitkdXAgMTAgL0MwMDUxIHB1dAorZHVwIDExIC9DMDA1NyBwdXQKK2R1cCAxMiAvQzAwNTggcHV0CitkdXAgMTMgL0MwMDU5IHB1dAorZHVwIDE0IC9DMDA2NSBwdXQKK2R1cCAxNSAvQzAwNjYgcHV0CitkdXAgMTYgL0MwMDY3IHB1dAorZHVwIDE3IC9DMDA2OCBwdXQKK2R1cCAxOCAvQzAwNjkgcHV0CitkdXAgMTkgL0MwMDcwIHB1dAorZHVwIDIwIC9DMDA3MSBwdXQKK2R1cCAyMSAvQzAwNzIgcHV0CitkdXAgMjIgL0MwMDczIHB1dAorZHVwIDIzIC9DMDA3NiBwdXQKK2R1cCAyNCAvQzAwNzcgcHV0CitkdXAgMjUgL0MwMDc4IHB1dAorZHVwIDI2IC9DMDA3OSBwdXQKK2R1cCAyNyAvQzAwODAgcHV0CitkdXAgMjggL0MwMDgyIHB1dAorZHVwIDI5IC9DMDA4MyBwdXQKK2R1cCAzMCAvQzAwODQgcHV0CitkdXAgMzEgL0MwMDg1IHB1dAorZHVwIDMyIC9DMDA4NiBwdXQKK2R1cCAzMyAvQzAwODcgcHV0CitkdXAgMzQgL0MwMDg4IHB1dAorZHVwIDM1IC9DMDA5NSBwdXQKK2R1cCAzNiAvQzAwOTYgcHV0CitkdXAgMzcgL0MwMDk3IHB1dAorZHVwIDM4IC9DMDA5OCBwdXQKK2R1cCAzOSAvQzAwOTkgcHV0CitkdXAgNDAgL0MwMTAwIHB1dAorZHVwIDQxIC9DMDEwMSBwdXQKK2R1cCA0MiAvQzAxMDIgcHV0CitkdXAgNDMgL0MwMTAzIHB1dAorZHVwIDQ0IC9DMDEwNCBwdXQKK2R1cCA0NSAvQzAxMDUgcHV0CitkdXAgNDYgL0MwMTA3IHB1dAorZHVwIDQ3IC9DMDEwOCBwdXQKK2R1cCA0OCAvQzAxMDkgcHV0CitkdXAgNDkgL0MwMTEwIHB1dAorZHVwIDUwIC9DMDExMSBwdXQKK2R1cCA1MSAvQzAxMTIgcHV0CitkdXAgNTIgL0MwMTEzIHB1dAorZHVwIDUzIC9DMDExNCBwdXQKK2R1cCA1NCAvQzAxMTUgcHV0CitkdXAgNTUgL0MwMTE2IHB1dAorZHVwIDU2IC9DMDExNyBwdXQKK2R1cCA1NyAvQzAxMTggcHV0CitkdXAgNTggL0MwMTE5IHB1dAorZHVwIDU5IC9DMDEyMCBwdXQKK2R1cCA2MCAvQzAxMjEgcHV0CitkdXAgNjEgL0MwMTIyIHB1dAorZHVwIDYyIC9DMDEyNyBwdXQKK2R1cCA2MyAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTI1IC0yNTYgOTc4IDczOV0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIyNDEwNDg5NTkxNTg4QjZFNzgyM0QzRDc0QzJFQTMyRkU5MworOUVCODhBQUIzQjU5MTU3NTQ2MkYyRTk2Cis1NUI4NDM1RTE0MTk2OTlFODMKKzQxMTEyNjMzCitCMEZBMUE0RUM5Mjc4N0NEN0EyNkE4NzNEN0JECisxRUNGMTc1QUQ0RUE0OEI4N0FFQzNBQ0M4QjM4RTNCMzhGMURERkM1NzgwRDJCMDkwOTQyRTk5N0Q2NzlBMTMwODJGMENGNTdGQTc3MzUyOTlGNUMyRjdDMDVGRkE1QkUzMEY5QjJCRTUxRDZBNEEyREU4REE3RjU0M0FERUMyOUJGNTBCNzA1MjQzRkFGQjUwMkE4Q0NCNTNCOTk3NEJGNUI0QUY2ODJCQjNFRkU1NkE2NTlBNzEyRUZFNzU3MDY3MjhGMzA0MjgzNEIxQQorRkJDQjIyM0UKKzcxNUU4RjE4OUQ5Q0NBMEYyQTk5OUNCNDZECiszMzlEREQyMkYzRTM2RDVEQ0Q5QkZEOUQ5MzE5MkE3MUNDNzdDMTY5QzJFOUUwRkYwNzRBNjlCMTc1QTAyRjAzNTlBQTkwN0MyMjBBMTI3NDJBMEVENUM4NkM1QzE4QUQ4RjRENTc0QThBNTc1RjIwRjY1QzI1NjZDRjMyNjFDMQorQTIyMEQ5RkEKKzRFMjI4MkM2RDM2RUM3QjQ2MkRBMzUwQTM2CitBQTlEMkQ0MkI5MEIxNjlEQzMyNjYyOERFQ0Q4RTYwMzk4NTgzQjJERjAxQkExNzQxNEM5OThEODAyM0JGRDFDNUJBRTY3NEQ1MkE0RUMwMzhCMEEwQjYxMDA3RTYwQjYxMTY2MjhEOTU2MDIzNzM4OTU0Q0E1RkZCREVBNjcKKzdCQjY2MDRCCis2RUMzNzNBMEYwOUVEM0Y4QTdDRUJERUVGOAorNzE2MURFNDlENjBFNTc5NEQxMUNCMzZCNjc2N0QxNTdENDdEMDZERDI2NDlERkRDNjMzMEUyRDA2RkFEOTY4RUE1RUE3ODBDMkYxMzUxNTNFNjk3RjI4OTNBRDJBNTQwRDdBMDg5MTA2QzYzQkVGOUZECitGQkNEMkRGMQorQjgyRTk1MkYxRDVCOUMwNzI1REM3RDdCOUEKK0ZDM0VCQ0FGMzMyNTIzNkJDQUZDMjhCQzQ1MDUxMEY4N0M3RkFBQjA0MDZFRTkKK0VDN0VEMjJGCitDNjlFNjkyNjRBODNERTcwN0RBMzVCMzkyOQorNkQ0OEU4NUQxQkE3MEREMjA3NDE0QUI5QzlDMjExRTRDQjc2REQ3NDgwQkRBOENFOEUwMzg5RjM3RDMzMTYKK0NGQTU4QTc3Cis2NUJDNjdBNEVDOTJCRjc5OTc0QUZDOEFFMAorRUREM0IyQTc0NzhFQTE5NzNDQzIyRDI5Qjg4RTc0OTkzMDNGOTFFOTE2RTkzQjQyOTY1Q0NDRjFENThCQzk4QjcxODQ2MjM3OEJFQzQyREE5RTBEMjVBMjREMTgzMDUxRjdDREVGQUU1MkFBOTQ2MjRFMjgzNTNBRkNEQzk0CisyNEUzN0QxRgorQTY5MjMzMDY4NTU1M0M4RkU3MkEwQkVGRTMKKzhCNTg4QzY0RUU3MTY2NUEzOENGQUFGNDcwOUY2NEQ2NkYyOTJERDQyNDMzNTQ0NDMwNDk3QjgyQzZFMzYwMDdCOUY1RDNFNDA2QkUwNjk0Qjk0NDNDQTFCNTcyMUVERjEwMzE0N0NFREQzODA3NDZBMkUwNkMwQjFFNjE2MkU4MEQzMjAyMjM5NkREQURDNkFBREY2ODk3MEM0OUE4RkJCNDk5MzBCMzg0NDlERUExNDc3NAorQ0IyOTAxODkKKzRCMUVDNERCNjM1NjdFNkIxNkFFRTM2RkUwMUEKKzNFNUU2Q0M0M0Y5MkRFNzcwMDlEMDNERTQ3MzA1MDQ3MTFCMDE0NTkxMEI1QTdGRjY5OTE0RTU1MzQwRUEyQzYyMTVDOUMzODc0M0E4QkU3OTQ1NTIzRDNDQjYyM0M5NjYwRjlBNzYwMzU5ODI0NzUxRUQ0NkU3MUMyNjRCMDY3MDc1RDJBMUMyQTZFNUJGODJEMzE3Q0U4MTBCQUY3RDAwQjJFREI3NEVCQUYwNTM2QkNEQUM1RjlDMjU1NDdDQzQ0MEQ3NDA4RkU4REYwRTA1MDVGNjg3QTE5NkMwRQorNTJFRTg3MDcKK0QyRkRFNkFDMUNGRjUzQzUyMTA4MENGQTFFRkIKKzJCNEY5QkVDRjNBQ0Y5NDJCRTkxMkM4M0ZCQkE3MTRDMDUyRERGQTkzMTA1QzA5NUJGNDAyRjRBQzJDQjEyMUM3QzlFNTVFQzRDRTAxMUExQzIxODRGNzVERjVBNkQ2ODM4OTQxNjM0MjExOTNFQjlDOUM1MEJBMEFENTkzMENBMTcyMTU5OEM2QTdDNDEwRDhEMTZBOTNCNjIzRDRGNENFNUI5NjczNkQ5QTAyMUQ1Qjc4N0NEREUzQUU2MzhFOEFDOEM2NDMzMDgKKzg0QjI5MEMwCis1MzA2QTY4NkY1QUU3Mzk3RjlCN0RFNDFERQorMUI0QzI1ODY5RjhCMEI3MDdDRjk1MTk4MzUxQ0JGQTVFOUQwRjgwQjM2NjQ3QURDRDBGNTlFNzQ4NzQ1MDBCMTMwQzM3MEE2RTM3RTVDNUM5QkRBMUY2NEE2MThGRkVGQTg3OUVFODE0NTQwCitGMEM3MTQ3RgorRjBENDc4OEUxNUJFMUM5NTIyQTg3MDg2RUEKKzEwQTU5N0UxQUFGNTgxQTVDOTA1NkVFRkNDQ0M1MUUyNTEzQzM2RjA2NTYzNkE2Q0MxNjFCQzcwOUYyQkE0Njc4RkJGNEJFNzU0OTAyQjE2NDhCMTI4NjlBN0Y1MTlEQTYyRTVDOEJFOUQ2M0IyQTFFN0U1NUI5MTgxQkEwNUI2RDQ1Mjg0RTA3QTY3ODk4MDk5MjVBRUJCMjU5MEU1QUEKK0YyOEM5QzgyCisyMjQ2RUY3QjFENUY1MjU5RkU0OUM0QjU5MDlGCitFNTQ5Qjc5ODM5NTk1Q0ZFQkIxNzI5Q0QxODJDMkQ3MUZGQkU5RjREN0NGNTFGRDUzNzhEQzgxNkU1ODA5RjY1NzM0RUVGNEU5NkIwNTZDODFERkY5RDA3RDU3NzlFNEEzMzBENDQ1RDc2QjJDMEU5MEUyMjM3MUY2MUFBNkY3RkQ0OEEzNTg2MEZBN0Q1QTlCNkQ3QkRFQUYyRTY1MDVENURBM0UxQ0JGNkQ1RjM0RUM2QzhENzExMTYwQTAzMDRERDgyREM2RjZGOUI4MTQ2NkRBQUZGQzJFQ0Y4QkM4QTEzQjEwRQorNTRBODA0RjMKK0M3QkVEQUQ3REJBNTFEMTZENTM0OEMyM0U0OTQKK0RFQzY0QUQxRjkxMzVGNDlDQzI5MDY4MTkwRUI5MDQ1NDIzMTg4MUFFQjMxMTQ4NDNEQTFGQkQxQkUzMkFBQjQxRDdBOUFCN0I5MkM2QzY5QUNCNUQzQkFEMzJERDVFQUM3RjAxRDdCOEUyQzhFOEQzMzJDQjZDQzNCQzk3RTlDNDMyNTk3OUI1ODVDMkNDODk4RTM5N0FDQzYyQUJEMTk1MUM4NDMzMERDMjY4NEMxREE5M0NGNUYzOUM0NDNDMDUwRjg2QTM2Qjk2RjE0QzE3QkQ5NTJCOEM0M0Q1MUY1N0VBOUVBQzUwMEExQzk3ODMwQTZCN0RCMTA4OAorMjNDQQorMjcKKzhDMzRFMjI3CitGQUFDRERFRDNDQkI2OTdFMDY2QTZGNjhGNQorRjcwRjQ0MUVFODkwOUVFN0MyNzUxMkE0MDlCRUNDNEREMzdFQzUwQUU0MzE5NjJDM0Q3ODgyMDAzNEMyNzgyNUM3QjZDQjdCOTkzRTkwNjFGN0Y1MzQzMzNCMDAyMzk5MUUwMDQ4NzYwNEJGOThDNDQxRjU1MDA1NEM2REUzNUY3QzU5M0Y4NUYzQTk4RTIxQjc2MDVENkI4N0M2MTZBOTA5REYzOTE2NUUxQURGNEFCQ0NGQUI1OEI0NEQ4ODk4QzAKK0YxQzFEMjQzCis2MDQ3RkI4QjkyNDVCNUI0RkE0RjZFODBCNQorQjg0RTk5MTU4M0M0RkZGMUEwRjU4NzMyMjA4M0FEMjhCNjcyQUI2Q0ZGQjNCRjk3NzNCQjU4OUE1NTYxRTg1NTVCMDQ1MjVDOEUxMURDNjI2RkJFQjY0NTk4RkY1MTVFQUYxOEMyQjRBQzBGQjIzREI3MzUyMEVBN0FFOEY4M0YwNTM2NDIyMUY3RDQ0QTBDRUE4NDg1QTE2MTY0NjgwNjcwMTNDQThFRDc3QjVBMjYzNTZBQTE4MkUyNjEzOUM2QzQ5Nzc4CisyNUM4QkQ3MgorRkJDQkREOEZGRjlEOThCNjk5NEIzQkYxQUFEMworRkFCNzRDMkJDMzczQ0VEQzU5ODA3Q0VDNTc5OEEwREZDM0Q4OTMzQzAwNDkyRUE0QjUyMUU2NjY0MDg3MTgyQjlDRTJGNTc4MThENTJFOEZBOUEyMTdGMTVCMjFDMTYyRDdBQ0Q3OEMyNTEwOEYyNjAxNTM2ODVFRkVCNENFMUFBQTQ2NUVBQkI3Mzk4RDhCOTQ0RUUwOTc2MUU1MTMyNjdBRjRGMEU1Njk5OTFEMEFFMTJBN0IyRDczNDUyRkI0NjAyMjAyMjIxODk2NzUzMkQ1QjEyQUU5RUJDQTNCMjFGQjNBN0QwQjM5RDMwMEJFMkFFNTNCQ0UwQ0U1CitCQUY1NDk4RAorNEY1MTY3OTAwOUNFQzM5NUNGMkJFOTBBOTJFMgorRjFEQkREQ0UxODExODYwQUVCQTZDNDAyNEU0RjAwRUNBNURGNDFFQjMyMTgzRUU4NzkwRDdFMjAzNEY4OTdEMTA3QkZDMTJENkYwMDI1MjdBMEMyNzYzMzY5RjQ2MDJGQURERUNFMzU4NEFBRUYyMzlGMkM1MjU2REYyN0MyOTlFMTVCMjRCRUM5OEIyNzQ2RkY0RTdFOUNEMjJBMzI3MEI5QTE5NTYyMTgwOENFMjYyOTY4QzQ2NTcyODZCQ0QzOEY3MTgxNDY5QTZBM0YxNTE3CitFQjFDNzhDNAorNzkyRjhBMjlDMzgyRTM3ODJEMjhCMjlFQ0FBRAorNjBDMTJGNUFBNUEzMjQ0M0Q2RjM3N0ZDMENEM0QyRjVCMTMyOURDNjFDN0RDRDkxNkVCQzAyOUMyNUZCMEEwMjRFMEVDN0NEMzZCNzUwQzQ4RTQxNDNGNUFFNzY5QTVGMzQ4OEZCMjA3RTQwOUVCRjA5Rjc0RDUwRTk3MEQwRkE3M0QyOTVCODJDRDYyMUM3QjdGOENDRjdFMTU5RDQ5MjRCNTI4RTQ3QkZEMDVGNTc2NTA1RURCQ0VCQkZGQTM0RDQ0NkU0NThFQ0M4OUI5NTFFQTQ4NTc4N0NFRjA4NUFCMjM0QURCQUQwOTc1RDA2NTJFRQorMjM0RTkzNjIKKzFGOUZDNjdBMkU0QzIzQjg3QjQ2RjkzQjRENTkKKzQ0RUVGQUM2MzhGQ0VCRkQ5MEE0QTM3MTM5MDFGNURCQjE5MEZCMzI4NzZGMDA1NDRCRjI2MTMzOTMxRjEwODc5NDc3OTk5REU1QjZBQ0MzQTgyQjhCMzQwQ0YyQzY3MzIxMDFBMjFGRTQ0NDc5ODIzOUQwODBENkRCMTJGRUUzQjlDQzU0RUQyQzdBOTYxNTM0NjIzMEY0QTA5Mjg3QkZGRjE4ODI1OEMxNEQxRkNDQUFFRjQwNDFGQjczQzhFNzM0REM4NjYzQUI0MUYyNUNFOEJGOEYzRTU3QkQxNjU0ODk4RUY5NTZCM0E3RDY3N0MwOEU4OTk1MTYwNQorNkMzNgorQTUyRTdCMzJDMzcxRkRDMzMxMjNGMQorNjZERDYzN0UKKzNEQ0NEMDVCNUE4RDI1NEZEOEY0RTFFMkNDCis2NEUxRTg4RTc5REM3MzEyMjA5RjIyMzQzRkZCMzBDNURCN0JFNjAxQzFGOTYwM0I5QTNCMUU1NDQ2NTUyQUE1QkZGRjgyNTIwMjg2OUI4RTA4RjQ5RjAwMjM2MUMwNDc2MjhFOENDMjI5QzhENUE3NjgyMDJDCitFREU0NTY3RAorNDFDRTY2OUU5RTc5NzBEMDU5NjlCM0E5QjMKKzk2OTVBQzRDM0E5Rjc1NDFEN0Q1MDFFOTc3Mzk5NDlCMzM5RkEyQTY3QjJERjFFREU5MTY5NkFBM0VFNDE3MDA0RkY1NEZEMUY0MDdDMzFCMUVCODlDRjk0NjJDODg4RjVGQjA1MjlGMTNCNDRGRkM2Rjg2N0FFMjc2Mzk5QTVFMkUzRjI2Q0JGQzhGRTEKKzE5MEU5NEU2CiszNDg5MEU1OTZDOTYzMkY1QkFGNTIzRjY3RUYxCis5ODcwQ0VDMTBERjlDNzBEOTU1RTA5MzE2NDEyQjM3RTVERjRCQjExRTVGOEM5RjI2N0Y3RDc0OTQzMEJFMjUyREUzQTAxM0VFRjE3MzlGRjYyMkRFQzg5NkYyNjBDQ0RGQTZGMDQzRjlBMTFCM0Q0NjQzMkY0QUQzOTREODFFM0Y1RDE4QzFEMTcwQ0VBQkY0QzY1RUNERUMxNTk1RjFDRTU4NDk0RTM1MTk3NzBCMEY4M0E5MTkxRUJFREZFQUFFRjlBRjBBMEFENkJDQzBGMTA2NEU2NkRFNjcyNzIKKzk3NDJEQzYwCitFRkI2M0ZFMDEzNDEyMTZDODY0QzEzNzA2QQorRkRBMUQzODM2NzM5NDFENEFGRDFDRDk4NkY0QTUzMEM5OURFOEEyMzQ0MERDRjVGODMyNTI1RUU3MTI0RTFDM0M3MjQxMjJFNEM1NjlCQzlCNDdDNEE5N0QwNEJGRTBEMDNEODgwRDczNTk5RjA2QUM3M0YyQUVFQTUzMDFCQjFBQjgxQjZGQjc1QkVBQjVFMTY3NzQ0MDQ0Q0EyMjNDMDRBQkNGMjM2NjU2QUQzNzk3NzhBQTVBNQorOEQ2MDgzRDMKK0YwRjQxNkYzQ0VEMEFDNDIwOTM3MkYxMTVDCisxQzg4NENDQjYyNkEyNkZENDI0RjQzRTFFMUM1MUQ4RkZFREFEMzAzNTU2QTZFMzlBOEVGNzA5QkE2ODc0RTQ4OUIwMDgyRDc4MzI3QzUyNkE2QzE5MjhEQkQ2ODAwNzYyMUNFMjg5MDg2NTVCQzZEQUU5MjRBQkI4NkQ5NEM2ODhFNzE5RjkyNDM4RDk2NkZFN0I1M0NFMDcwMDc1M0VCMjgxNDA5CitFNDYzQUFDQworODE1MTEwQzcyNUM3M0ZCODMxQTFGRTFCNkMxOAorOTEyQ0VDQjg0RDMwNDY4ODRBM0Q3ODg4RkUwQzdGRjI2QUM0QzM4Q0I4QkFGRjY2RTg2NkE3NDZGMTU2ODI1NTBFRDZENzM4NDk1QUE4OEFBQkVBRTg4NjAwOUExQ0I1MDBCQUE2RDU5QTU4RjVBQkY4MDI0MEQ2MUNGREI0RTI0N0ZDMEU5Q0IxM0QzRDZFRTc1RkEyNDQyRjg2NURCRDdGNTJDQ0U1OUYwQ0RERUZBRjY2QTE1MTUzRTlGQjc3NkZGN0I3NTA4REExODE5ODZBNzUKK0YxMkJCN0RBCitCQkNDODk1NDk1NDQyQjM3MjcwQzQyM0EzMEM3Cis5QzVDRkE0ODlFMTlGRjE3MDk1QTk4NTRCRkQzN0VFNERCRjFERTVFMTQwMUQzMTAxQjA2N0M5MUI1Q0M5NkNDNzUzNkU1QkI4QzQ0MjNCRjA2NDhFNkEzNzJBNTI0OENBRTE5MDU3MDEyMkM1ODdCMTBBMkFFMTc5MjdDQzZGMTQ0RDMzMUI3MkI2RDdFNDg3NkUyQzkxQzhDN0RENzFBNUQxRTZEN0IyNTc2RERBNDU2QzE5N0M4MjdDNjM1NDlBMEE0NEU4QTc1ODc5NEUxMTA5RjBEQTIxRDgxNjc5QTVDQUUzMDhENTI4OTUzOTdFRTdCRkVEREIxMDcKKzQ2MDI0RDc5CisyQTI5MDRBN0ZDMzZGRTI3RTZGNEJBMkMxRkMyCitCRDYwQjdFMUE3MDUwRjgzRkNERkEwQzM2MTA4NTM0QUZBQjEwNTI0QzhBRDE0REI3MUU4NzlGM0QxNDRDOTgxNzc0QTY1QTA4NkI0RUZFQUQ1RkEyMDg0RUYxMUNGOUQxQzc1RDdGRjNERjcwODQxNDlEM0UwOUY3OTMyNzg4MjBBOEJGMjhDRUEwNjIwMEYzMkU4OUU1N0IzQUQ3OUU2M0JGRjJGMDc0M0M4RUYxRkI3RTRBRjM2NUVDOTM3NDFBNkU2Mzk4MEM0QUEwMjAzODU5RUQ4NUE4Q0NFRjk2MkQ4QTAxQkY5Q0Q5QkY3RTYwMEJBQ0U2NzU0MjAKKzNERDQKK0Q3QkZCNQorNkY3NEI5QTMKKzQyNUM1NjMzNUZFRDkzNDhFNkYzQjk3MTgxCitBRURDODhGMTQ4ODhBMzAwNTBCMEIwNkQwMkRGMEM3MTc2RjhCMTMyNDMzODI1QjUzREUxRkUwQ0I3MEM4RUJFNDZEQTkzQTVDMDczNjJCMzc0MjIzQTMxODFCOEFCMzI3QTlBQjQ1QzU2NTFGMjEwNzI5MjUwNkFCN0NGRERCMDMwRkI4M0MzOURGMUVCM0Y2OEQ3QTMzODM5QTI1NTEyMTAKKzhDMDQ2MzUxCis1RkUzMDMwQkRFMzhDNzhBRUQ5RDM1OTA3NEZBCitBQzU1REVFN0E2Njc0MzEyRjA4QTk1M0IxNzlDMUIyNDEyQUVDQ0QzRDA2OTk1MjE5MURBNUU5Mzk0MDRFNzQwQTFCMDc2NTRDNkZFNDRCRkE3RkJFQTNDODc1QUE3RUIwMEFDODA4N0QyRUFEMTMwQzU1OUQzNkE1QzREMTFENkQ3RjMyRUI4ODMyMjU2N0FFQUFCMDEwM0VCOThENkY5M0Y0MTJFNDU5MTAwNTUwOUM0MDc1QUQ0OTQzMzc2NEVBNDgxREQyQgorRjY3MDVEMEYKKzFGRjg2QzMyNkFENEE0NkQ2MDZFNUQzMUFECis3ODZCMjE0NjlFRkYzRTg0MDREREYzMjNCNkYwQkEzMTVFRjI2RjQwOTI1NUZFMTZFNUYyNjg3NkRFNEZFQkU4NjdBQ0NDQjVEQjhDNERBQTg2NkQ1QjYwMDc0OTA3OUNCQUY3NzIyRkE1NTA0OUNENTM2QzVGNDlEMTE2QUM4NjEwOUQwMEUxOUY0MkE1NzFENzBEMDIxM0E5NkIxODUwNzBDOTJCRDJBOENERUNGMEFBCis4M0ZFODc2MgorMEFGNzQ5OTg1M0RBQkMyQjEyOThGOTk4QUU3RAorMDZERTAwMEJERkY3RTMyRTAwMUNCNzk3MkZBMUU5MTUyNzA1Q0NBQTQwMThDRjk3MTVDM0M5QUJCNjNENzRBM0U3MjQyRUIxRkRDNUEzQTk0RjFCRjc5RjE3RTRDMTk0REMwRUNCMDQwMDc1NUMyMDRFODJCQzZCNzJDMjg3OEFBMEJERDQ2REM5RjM1OTVBOTRDRDBFODU0RDk3NzFGQzVDOEQ3Qzg3ODQ3N0IyOEQ2RTE0QzdCMkI3MkRCRjI3RkNCMUY0OUI5RTE0OTlCNzU2MkZEODM5NDE4MTk2MjdFOEZBQUVBMkMxMDVBMjNEQ0ZGMkM3RDQyMzVDCitENzU0Cis2QTI2ODY1NUE5MDJBOTY1ODNEOUM5NTAzQUY5MkREMworNTQ2RTc2ODkKKzI1Q0VEOEQ0QTQyQTgxMzg3RjFBQzhERjcyNkIKKzE4RDVENTMyOUMzNkM2NEY0NTI3RDRCN0NERjgyMDVDNUZGNDJGRDdGNzlBNzRGRDFENTAyREY4QkNEMjE4RjQwQjI1NjkxNTZFMzVBRkM0M0NDRTA3MzEzNjRGRUE0RkE3MDM1ODA3RjBDMzYyMEU0Njk2QjlEMTI5OThFNUYxMDc0NjAzNjY1QzlCNjVDQzQ5QTQxQTUyMTU1RjBCMjg5QkVDRTVDMDU4MTMxNjEyNkUzQjAxQjAyRTM2RDM5RUVERUFDOUI4Nzc3NjFFQTIyN0NCRDI5N0Q2NjdGMDM5NjhBMjc0NDFGNzJGNjQ4Rjc1QTNGNEE0NjQ2NworNUFDOAorQUZGNjMyQkM4NTgxRTZCNjBCOTYwRDZEMjRCNDcwNjc0QkY2RkJCNTk0MjAxNjA3RjA2MTdCRjkxNDdGRTAyNjM3NUM4OEU3NzQxMTdECitERjdCNEU4RgorNEE5OEY1MjhCQUU2OEExRDIyNTk1MUUwNUQKK0UwMENEREE0RjY5OTlGNjQzOUUxQTI1MTI5QzVBOTcwMDU3QTEyQzg4REI5Cis2NzY0MjRGRQorODE2N0ZEOTlDNzNCN0JBMTI1Rjc5MTk5Q0MKKzkxQzUwMTc0MTlFMEMyMEZBRjQwNUIxQTBDOENENkMyODRCNkRCRjJGMjEyMkJBQzRCQTM1Q0Y2QUJEMjQwOEYzOERFQzZDNTY4NEU0RDBCOTAyREJBQjJGODgwN0JERTdDQjhCMjBDNDEzQ0I4MjY0MTFGCisxQjlCRjVENQorQTE5NDg5RkI5QTg2NkQ4NzQ3MEFBNDk4MzA5QgorRDlFRjQ4Nzc4MDQzNkUyQTE2NjBFMzE2QjQ0MDI3MjVGMDNEQjI3OTAxRkYyMTkzMzNBRTUyQUUzRERDM0I4MkQwNTgzMTJBNjVDNUUzMTA4RDdDOEJFOEIzRTQwOTJEODE3RTIyNDFCODAzRkZFQzVCQ0JCRTg2RTcxNTlFNDMxNjc4M0U5NkM1ODEyQ0Q2NDFFQkQ5M0IzRTgzQTU5Rjg1MDkxQzRFMkVGOUVFQzE5M0QyN0RBQ0MzMENEOEU5OEYyMkZEMkQzNUFEM0UxMkM4M0M5RUUxRjhCODg0RTMwMzkxQTdBRkVDQUU4RDIzQ0VCQkI1Q0I1Q0RGCitGNTZFCitEOUNGQjUKKzc0QkVBMjk5CitDRDA4NUVFQ0ZFNzhFQjdDMEZEODdBRkUxNworRjUyNEJGRUU1NjYwRENCN0JEMDVCRDY1NjZFRUU2QzNGMTlDQjdCODA1OEM2QThEMDQwQTRCQTJGMDMzRTY5OUVFREFFOTY3NkM1NTY1RjRDNDg4NzAxODVBMTI3RUMyQzM0NEM4NTkwRDA5QjZDRTU5OTNDQ0EwNkI2NDAxMzE0OTc1QjlFODhDRTQxQjhBMzA5N0IwOTA3NzUwMzNFNUM4QjMxMjhEOTBDMzlBQUEKKzM0MERDNzZFCitCOTRGNkUzMDIzRUEzNTFFOUI3REY4MjMyMworMjJCMDlCMjMyQ0Y1NDYwOUQ1RkM3NkNFQUU5NEZBQzAwMTEyMzE3ODRFNjZFMzREQ0U4QjU0QzJCQ0ZENkZBMEY3M0I3QjNGMzg0NUNGQzAwRDUxQ0MzN0U2OTlDQTEyQjE0RDc3QzU0QUE4QTc3QUZDRTQ5ODEzMkM0OEFBQTM4RDZDODYwODdDOEZDMzQzQUI4N0ZCM0E1MUY4RThFNjExN0IKK0RGNkFCQjI5Cis2N0NFOTNBRjVEMDkzRjczMTExNDdEODY2RUQ0CitEMjQwRTJFQUNGRTJBREI0NzU5REY1M0ZBQUVEN0RCMDRCMkFGMEJDM0MzMUJGMUY0MDE0QUY3MTc2OTQ2NTY0NUZEMDIxQkVBQjEyMjAyMzAyODM0QkQyRkFBOTg0NjI2RTIzQTMwMTBCQzAzMThDOUUyM0ZGRTBCNzhCODgxODE0RDkzOTY3ODZEQUNBMjRBMzEyMkE3RjExRENGOUE0NTYzRTlDRkMxNjU4QjdCNDBENDgzNzYyRTYwMkYzOEFDQjRDNkU2QTg1OUI1M0E3MzAwQjA4MjE1MDJBCitGN0JDNDM1RQorRTRCNDM1MkU0RTdFRDZDMkEwREJCODM5NzEKKzczRkUzNDFBNUUzMkJGMTUwNzMzMTBEMDM3NTAzMUUzOTYyMkQ4MjFDRjE3QjdDQkNGOUU2NjU2QzNBNEI3QUExODAwQUI3RTRDREE4NDE0MUZDOEY3NDNDM0QxQTg1OTJEMjI0NTVEOEVGNTQwRkY3RjIwQ0ZFOENBQTYxQTVBNDUwQzRBOTQzMzAwMTcwQTAzMEQ0QjNFNDRBNTBBMkQwRkM5MzM3MjZBMkM2Rjc0ODkKK0IyOTNGMzUzCitEQzBCQ0Y5QUY0RDhBQjY3QjBCMUQzN0JBMQorMzc1MkI2QzlGM0RBMDA5ODI1MzgyQTVGRjQ0RUZEOTZDN0IxQUUxQzE0NzM5MEFEMjRGOEM0RDFEOTQ3OUEzRkY1ODAyMjhGQjVDNDA3RjI4Q0MxQzBGNTI3NzRGNUFCMjY1MUFBQTM4MDY4RkM4NEE3RTA4RjE0NTkxMDQ2OEIwNDM2OTc4Mjc2ODM3MkI0QzVENTRCQThCNEVGNDk5QjNGOUZGQzY1MjE2NDc0NkQzNzI5RTdFQgorNURBMkM0NDcKKzlCRUU3RjEyQjRDNkE2MDNEMDU2MkZFNEYzODcKK0M2Qzc5QjAwNzZBMjBFRkE3Q0E2Qzc5QTc1NzIxMjE0NDkxQjI3NzJDNjgyQUVBM0FEMUJDMjhEQ0ZBRTVDRTNDNUY5MzVFNzEwM0EwOENENTU0QTBGRUE5NzU2OEM2RjA5RjgxQzY2QUNERDA0MDg3QTg4RDEzQTAyRTM3MzIxODY0Q0I2NEJEMEUxNDJDRDFBMDM1QkIzQ0RGQjI2Q0MxRjg3MDZFMkY5RTJGQjBGNDYwNDEwQjMwN0U3NzBDQ0M5N0VDNjBENkVCQTc1RjA2Q0QzOEVCQ0E0MUZFNTAxQkUyNEE0MDNBNzk3RTcyOTYxODA0MTBDQ0Q3OAorOUZBOQorQjQ5QkQ2NjFDREVCNTc1MDVEQTg0MTQ2REZEOTJDODlERDc5MENCQjVDNkZFOTMyQ0Q4NzRBOTI1MEI0MDQ0NTdGQzA4RDhDRkFGODIyNkY2OUE5Qjk2QkJFMTYwRQorNDA2QzkzMTcKK0Q4OTc4RjNGNDRBNzhFNEZBRjZDNjRFMjRGMzgKKzk2MEI3RkY1NUM1QzFFRTcxMDg0RTE5QUJCMDRFNEFFNTA4NTY4ODVDNjA0QTkwRDlFMTBBQ0M3MEQ2NzNCOTY1OTRGNzIwMEI1Q0MwQjVGODQxQ0VCRjk1OTU1MTE0MERCODMzMDhDRjRDRTY0RUUyMDU2QTBFMEI2NkU0RDI0REI5OTAwNjhGOEY1NDUzMzExNTg4NEJGREQ4MENBODlEQjdDNDI2NTI0OEQyMDM1NTQzOEU2RkI0MEZERUZBOTdEQjU0QjZCMzFBRkI3RDU1MTRDQzNBMjcwCitGRDVBMUYxOAorOUUzNzY3MjEzRDk1QzBBQUFCODQ2MjE2MTkKKzEwMjZBOUJFRjMwRTBBNTI4ODU1MkY4MjU3REMwMDAyQ0M4MjhFRTEzNjAzOTcyQjM4Q0Q0QTU5Njk5QTE5QkQzODZEOERCNTMzQTMyNzIzNTNGRDlDNkU5N0VDNjhCMDJBREI4QUU4QUVBNzg3MUU0NEEwOUUwNkJBM0M1OTYwMkJGQ0ZDODU0MEYzRkYzM0YzM0ZGMTAyN0IyNzZCMEYKK0M4RTVBMzk4CitFQTVDMTgyOEMyN0RGNEIyQzMyRjlDM0Q0RjdGCis0MTE2QjA3Rjg0QTlCQTM2MDZGRUMwRkFBNjUyQkZGMkIzRTIwOTQ5RDUzQ0JEQkY0RjRCMTc0REFDMDc5NjQ3ODE4RDY4RjEwRkIwOTQzQzlDREEwNUQzREVERjkzNEI4NURERkE3Rjg0MzNDOTlDRkU5RjFCRjcyNDgyODA2M0YwNDI4MjlDNDk3RTk3QzM0RjVCNTk2QUU4NTBBNkEyN0U4MUQ3OERGRDNEOUU3M0I0NzQyQzBBNjZGQ0I0Mjc5RURBRDVDMjI0QzQ4MjFCREJERUIwMTg1QkYxOThDNUQzQUQ4RkI2NDMzQURCNTU3Q0RCOUIxMTY2MEIKKzI2NkQKK0E4MENBQkFERTAyNUMwNjJBQzEzMzVBQUFEMTk2QUEzODIwNDdGNTU2QzQzMEEyRDFCODJFQ0FERjdGRDEzQjcyQjg5QkYKK0QxODQ2NDkyCiszOEZGQTQ5QjQ3RkQ0QjRBRjNEMEI3NzBGNworREMxNjZDODVENDg5MTZGRjg5QTM2MTU1MzE1NjQ3MEI1MkQ3NkVGMzc4N0E4RTRBMkNDMjU4OTg1OEI0RjFGQzk4NDNDRUUwMDY3NjVCMEU5OEQwRUMyNjQwNjYyMURGRTY1REVBRkIxQTE4CiszNzAxMUU2RAorQjU0NjUzNkQzRUJGMzdBNTBGQ0RFNjA2MkUyNQorQTU4MUZBREI3MzI1NUJCMzZDNDcxQzMyNUY2MTZFQjkwRjY1NDE2OEZCRDg4QUEzRDhBNkMzQjlFMDE4OTkyQTJEOEEyN0QwM0YxRDAyNTlCREMxRENDNUFCMjc2OTczREY0NUMzNDc5QzAzNkRFMzcxNkNGOEMwREE1Qzc0NTQxQTQ0MkU5RUU0NUVBRjFFNjgxNjAwNjY3MTY0Mzk2NTRGRTM4RDg5OTVDODREOThEMTVDNTY5QzMzMkY2OUQzNzgyNDY2NzcwRkRENDM3RTI4NjQ2OEI3MUZERjc2QjA1MURBNTYxOUZEMThERTkzRDgyQkFGNDJEQTQxCis0OERGCis3RUY2OERBOTQ3NTBFOUEwN0Q3RTk1NDUzRDcwN0UwMUE5M0NCREM0NTlCMUQzMzA1RjRDQ0RCQjg5RDg0NgorODM2MUMwMEEKK0Y1RTA0RTQyRTg2NkU2NDc0RTJBQkM5RjEyN0YKKzc5NjIyRkVCOTEyQjJGQ0U2OUZGNkJCRjI0NEE4MDdGNUYxOEZFRTQxRkMyQzJGN0ExRTY2RUJFMTUzNDA4NDU5RjlGMEUzMUNFMDI4RkRCQ0VEQUE4Rjk5NTQ5QTA1RUM0NUVENENFRDI4MTQ2NTg0REVEQzcxQjk3ODU2OEQyRkYxNUUzMzdCRDNEM0IxNEQ3QTE2QzFFOEZCNTNEMUVBMEUwOTY5NkM4Q0REQjMwRDE0M0NERjg3RjFDMTZDNzVEODI2NENGQzBDQkY2MEJBNUZGQTNCNworQzBCNzUyODMKK0I4N0RFQTAzNkUzMUM3NjlBMjIyMkJDQTM1CisxQTVFQzc2NUQ2NzU4RjdDQjU0MENGRDlBREQ0Q0FCNkZGRUIxMEIwM0RDMjYwMzgxOEU0RTE0NUE0QURGQzZEM0YwNzRGMDBFRjRDNzgxQjU2QkFENzg2ODM3N0REMkNGRTI4N0Q4NUIzRDcxRjc1NTRDMzIwMzA3MTFBQkY4MDdCNUY0Mjc4QzJBOQorNzkxNjQxRTUKKzZEN0I2QzFCRUJDN0VCNDhEMkRGNDUxMDJDNTQKK0ZFMjIwODEzQjc4RUMzQzk4MTA1Q0M3OTE1QzM0MzA0MjU3RUVCREZBNjREMDZBNDRENkZDMzc4MERCQ0RBRTEyNjRBREEyNzk5NTUyNTY2MDM3M0MxODU1MzY5M0EwNjNBNTdFMTVEQ0VCMTUwQjUzRTk1NTU5REZFQjUzNDAxOTY1NENFOEQ0QTZENEIyODk5NEYxRDhBMkE3NEIzOThDMkQ4NzZCNEM5MkQyRjkxNzU0MDRDNzAxNjVDNUU5QjdFQzRFODk4NDQ5MTNGNkExRDA0OUM5NjVCQjVBMjU0RjE2OTdFRjg5NUJEMTEKKzA4RjQzMUMyCisyMUIyNUE5RDdBQTlCRkM1MTUyMTk1MzYzQjk0CiswOUM4QTc5MURBQzdCNkY3NTc5NUY1QjBGN0FEQTRCMzkzM0ZDMUVGQURCMUEyMTFGQzUwOTFBQTFFMjNGN0E3QUU0NkE3RUY5NEZGNzg4MENDMUMzNDkyMzAwQTFENzZFMzJCQUZBMjA4MzBBNjUxMTRGMzM1NDY2RURCRTAyMTc5RDFCQjhEMTYxNkVCQkU5RDQyNDVCN0U3NDAwODlBRUQxQzAzMDI4MkRFQkM2QjU1OEU4MzMyQ0I2RTA3QTAxQkM4NkY2MkUwNURBNzIwMjc2QworRTI2MjkwMjMKKzAzMUExQjQ2MkM0MkNDODg4MTlGQTI2NDZCCitFRDgwODBENEU4NEE3REY2M0QyQzUwOTQ5NTM3ODBBOTIwMjczMTAzRTE0QUU4MjQ3NTA2QkExNzJDQUI2MjEzMjk5NDREREEzMkRFRjBDQ0QyNDgzOUVBM0ZFNzU1RkM1QzI2N0I2MDY2OEYxOTNEOTFBQkM3M0ExMTI1RUNGNUU5QzZFNjI1RTI0RkJFRUU1RDgwODAzQjdGNDYzRTk1MDEzQjlDNzBDNTIyMTUKKzMzRkJCNzlECis2N0Y4ODI4N0E1RkZGQzEwQjEwQTM0ODg4RUZBCis4RENBMTMxQjYwNzNFRjJEMzZCRTQyQkJCOUUwNDRBMEJBMTJDMDA3QkQyMjczNDAwN0Y4NTQzNDkwRTRDMjkwQzBBQkYxM0VCNzMzMzg1ODg3REFCMzIwMzBENDZEQTk4NkY3NjlGRDlBMEJFRTRCODk5ODVCQzM2NzU5Mjc0MTZDQjQ3RUZGNEQ5RTU3MDZDNjcyMTQ5MzczQkI2QzM1MkY4MzM5MDE0QzBCQzBCNTA0QTYzRDFFQUNBNDY4NTFCNkE3QjY2NUI2Mzk1OEJFOTQ2MDYyNTE1QzA4MDg4QzMwNDZFNDQ0MzUzQ0VBREUxMTEzN0YyQworRjc5OTlFMTIKK0ZGNUVCOUUxNUI0MUEyNzlEMkE3RjAxNjIyCisxQ0IzNEFBNDQwNTcwREVBNDMxQzIxQUEzMjZDNkNEMjBCQzhGQUQ4MEE1NzI1MkI3QjNGQUI4MDkzMDgyNzdFODBCNUZFOEMwNEUzRjQzNDEzODYyRTI4QzFCQTgyODYyMTFFRkMwNTQ2NTdCQTgyQkM4MTRCNjlEMEYwRTAzOTU4MThGMDEyNzIKKzIyRUNENDI4Cis0RTMyOTA3NENEMUYyOTNGQjI1MEM4NDAxRgorMzkwNkMwODBBQzAwM0U5NkIwOThBQUM4MEJEMTBBNTRFQkM2RUQ4QkI5NEREM0VDNUQxOUJENDA4RjQ2MTNDRjhBMDM1MTQxQzIxMDhDMjRCNUZDQUVGMUY1NkIyRDdEREMzRDlFODkyQ0YyRENBMUUwNTlFRDY0RTYwRkJBQzYxMjdFQUY5NkY3MEI4QkFDNDlDQzJGNzE3REI4Qjk2N0FGNUY3MkVDMDRBQTVFRUY4RUU3QjNCNUI5RTQ2MUFCQ0EyNQorOUVGREE3RkQKK0M0ODQwQzAyN0M5RjMzRTNGQzlDQUFBMzdDCitFREYyOEUxQTg3NjlFQUQ3RDA0QTQ4M0U4ODNDRkYwQkM4RDY1NTlEMDMyNkM3MzNEMEMyN0ZEQjhDNTM4NDEyQjVFRkYwRTJGNjlFQUI5RkFDOTU5RTdBODEwQjNBNTM1QkZBNkZEOTE3QUIxRDk1MzAyMEI4RkRCMzQyNjNEQTU1QzVBNTk1QTc0Nzg0Q0I1NjY1NjkxQzg4RURGMUYwRENDNkQ4MDJBRUMwRjhBODk0CitGN0ZGQTk4QgorOEMwRDBFNzE2MjRGNTU1NEU5Q0UwNkFCOTY3NQorRjM3MTk3MDkzMTREMDg3NUFFQTYxRDdEMDg5MDQ5MDJFMEUwMTdGQkFENzRCQTcxNUVFNjdEMjVCQzUxNEQ1RkIxRUU3REZBMzgyQUI0Q0YyNDYwQ0QxNDE5RTczQkY0MTc1RUI4ODE5QTg3MzhDMUU5Mzg4QzUwODM1MDc3OUE3QjgyOUFFOUI0NzY1MTA2NTNGOTNEQzA0NTdBOUM1Q0RFRDA2NjZDQUQzM0I2REZFRUI3MjJFRkMxQUZGMkQ2MUQ5QkUxMkI4MjgxNkQyMjhFQTVERDlERjg4NDcxMTY5RDRBRkIwMDBFODI3MkNFQTE2MDZFRDk2NkQxCisyQ0MzCis1RUMyMzJFQkYwOTRDMzc1NDYwMkZENkFDOUU4CitGQTkzNUE0RAorNjM3RkY1MEJGRTA0OTgzODY3MTdGODg4NDgwMworMTI3OTJBNzcyRkI0RTUyNDU5NDRGOTg5QzM5MzA3NkRCNEU0OUUwNERDMUI5RDQzMzc1NDIzRTk2OTAzRjAyRkQzNEY0NkEyMjU5MTNDRDhGNjYyQTAzMUZCMDc1NDYxODg0QjgxQkY1QkYxNjhFQzVCNDdGRUJDMDY5NDMxNjVDQTMzQzlCOEY3RkJGNzA2OEI3RTIwQzM3QzdGOUVEMTY4MkYyQ0Q4MEZFQUY4QzhFRDE2QUEzNkMwQzY2NjQ5MkNDMTNGNjg5QjQ5RjJBNjUyRTkwNkVBN0E4NDMyMTdBMzg1QTJBNEMyRUZEQzg1NzEzMEQwRDEwNUE1CiszOTQ4Cis4OTQ3ODI5RUVERDRDNDgzMEExNDVDMkE0RkUzQUUxNUQwODlGMjMyQUY2NUU1NDkzQworMTA4RDIyQTgKK0ExMkEwQ0YzODRCMjFEMjlGOTEyMzczRDNBNjMKK0U4RDIzNDBFN0VDRTk4QzYyMTE1MTU1NUU4MDlEODE2QzE3OEQ3OEExQzdCQTIyOUQ3NTRGQjE2QkVGQUM2MDQwRDNFRTRBM0QyQjVBNDk5RjEyMEJBNjhCQjNCRTU5NEUwNjFCN0ZENzUwRTJCOTI0MTFEQUFCOTM5QjE0NjZGMkM1MDI5OTk3NjM4NzkzRkMzMkUxNDMzNjE2QzZFRTMxNjhDQTIwMTgxMUU2NUVCQ0IzNDI5NUJGNDlFQkRFNzNFNDVEODcyQThEQTNGMzNBMUZGOTc0RjNDOUY3OTU1QjFBMDA5OEJFNkYyQzM0MTg1OEM4RjI3QjBBQworMDM0RAorQzNCMjA0NUEKK0UxODc1RERENTkxQ0E3M0IxQzQzOEFEMTY3CitBRDZDMzlBQUIzQzJEMjhERTM3Njg2MTRGNTlBQjBFQ0Q1OTAyQTUyQTI0RTg3QUZBQkJBOTAxQjQ2NEJBMTdBRDI5Mjg5ODE1QTc2MDQxOUEyMjQ3RjRCREQzOENCNkZGOTg1NzM1NjM1OTNCRUJFRjdFRkE5MDk1NTJCRjQKKzVEMkQ3NEJECis2OEIwNDQwRkYzMkQ1NjNFRUExNTYwQjQ2ODMxCiszREREODhGMjdBRUQ1MkU0NENEMDhGRTE5NTQyNDgxMEI1M0E4MkVDNjUwRDM4OTg3RjE5NTc4NzgwM0JERkMzQkIxMDUxQUQzNTFBMTFFNTUzQjkxMzIxRDZCQjY5NDYyQ0EyRUVGQ0Y4NDQ0N0M3MTZCQjRCMzRENzc2REEyQTg1QzU0N0QwRDZCMjQ3QTQzRjAwNDNERjczMTE3Njk0RTRCQURFODQ4MTRGQ0ZGRkE2OUUzOEQ0QkMyODAyNjc0NjRFRUM3ODhENDE3RUJFQkUKK0NEN0EwM0YyCis1NEM4NzIyRDVENDU5QkY1Q0VFRkM3OTNCOQorNjA2MzdGOTlFRTU4RTQ5MTA2MUI3QjlDRjBCMkIxRkE1MDAwNkYxNUYwNDYKK0VDNEExQkY1Cis4OURDQUIxQTlDMUUzRDQ4ODg1MzFBMjJGRTgwCiszQUZCMjE3MTdFRjg4MjM0Cis4NDcwNEQxRAorMTAzQzIyNDJBMDBEMTk4RkUyQUYzQzkyRURDRERCMzgwMkQ3NTI2M0NCNEQ5ODg2MjQxRUQ0QkRBRDI1NDAyMkMxNDEKKzM1ODRDRDBBNjhGQkQ3MzI0QTA1MTczRTU1MkZDMUE2Q0ZFQ0IzQTE4QTBDOEZFQ0IzMDk0RDcyQjA4RjAxRDNBODlCOTY0Qjg4NDcKKzQwNUREMUJFMjdEODVFRURGRkY5NDk1RUI1REE2RTEyNUU5QUZFMzA1N0I0Mjg3RkZCMUVENAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoYgorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGIKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hiIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NiBwdXQKK2R1cCAzIC9DMDA0OCBwdXQKK2R1cCA0IC9DMDA0OSBwdXQKK2R1cCA1IC9DMDA2NiBwdXQKK2R1cCA2IC9DMDA3NSBwdXQKK2R1cCA3IC9DMDA3NyBwdXQKK2R1cCA4IC9DMDA4MyBwdXQKK2R1cCA5IC9DMDA5NyBwdXQKK2R1cCAxMCAvQzAwOTkgcHV0CitkdXAgMTEgL0MwMTAwIHB1dAorZHVwIDEyIC9DMDEwMSBwdXQKK2R1cCAxMyAvQzAxMDIgcHV0CitkdXAgMTQgL0MwMTAzIHB1dAorZHVwIDE1IC9DMDEwNSBwdXQKK2R1cCAxNiAvQzAxMTAgcHV0CitkdXAgMTcgL0MwMTExIHB1dAorZHVwIDE4IC9DMDExNCBwdXQKK2R1cCAxOSAvQzAxMTUgcHV0CitkdXAgMjAgL0MwMTE2IHB1dAorZHVwIDIxIC9DMDExNyBwdXQKK2R1cCAyMiAvQzAxMTkgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTE2IC0yMDkgOTE5IDY5NF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OUNDRUMxQTk5MTI2OTEwMTJBNEJCNTQwMEYyNEJCMkExOQorRUNCOEY2MDc2RkE0NEYxMDlCRTMxMDAyCisxMTE0ODc5NjVFQjg0NkE5RkIKKzE2RDI3QTYxCis5QTczOUU3M0M0NTdEMDIwOTI3ODc2NjU1NgorQUNBODhFREExRjI2OEZGM0MyQjhDOTBBMjNEMEE2MzgzRDVBNUEwNjFGRDM1MTFFMUQwRTcyQkQ1RkFFQzEKKzE5NzZCMThBCisxQUVGNkM5NkQ0OTdGNjFGNkU3MEM3RjQ3NgorNTkxRjQ3QkNFRUFGRjIwQTM0MEYxMTVGQ0JFNEQ4RUFCQjFFODMwRDM0RDMwOUNFODcwQTVGQ0NBREJEOUMyN0NDNDdCNTQ1M0U5M0NDQTQ2REIzRkRGNjBDMDNFNjlDRjBCMzI2QUZGREE0RDQyREVEQjcwNUFBMzMyNjBFQjczMkQzRTYzODUyQUE2NjhFNjc1QUVENDA5MDZDNTYKKzc0NUZFRDJFCitGNTRBQkJDQ0Y2OERGRDA1NzcxNUI3REFBNAorMjg2NTc1NEJFQTE3MDFERTM1MzJCOTg1Q0ZCRDEwQkYxOUFBQ0Q0QzY2NzMzNzc5Nzk0NzI2MUY1MTM2RTQwODA3OEJEMEYzMjFDMTk2Q0JGRDRDREFFMzgyNkIxOURDMURFNUU3RDM2OUY0REZFNjQwM0EwMDQ2Cis2Q0FFRDI1NworRDZDODJDQjE5MUVFODE3QURERDk5QzBDNzYxRQorN0Q1QzUzMjkwMkEzRjU5ODdCMjQ0MTZFMUVEMUNFQ0YxMkY5NTZGMDkzNzM1QTI1NzlEM0Y1NDY3N0M3QUYzOTY3ODQ0RDE0MjY3RjA4QzM5OTcxOTIyQTk3NzA1RTY3NEYwQkUyMEIzMzA2MjMyMjM5OUJFQjBDNjEzMUEzMThGNEQ0RDUzN0E3RjI0MkZCQTBDNzA5NkJGRkUzQ0IwREI0MDQ2Nzc3MjNCRTNCRDQ1M0JFOUU3OThCOEM2MzAxREY1N0YyMzU3RjZEQThCQzBDRDNGQkMwQzlDQTVGMzY2NUZCMjVFNEM3REJERDg5MzFDNQorREM0MzU5RkEKK0E3RENDRERBQUQ1QzE4MEI3Q0I2QjJDOEZEQjkKK0E4N0Q4OEQ1ODMyODdFMTZEMDgzMDQzNDExNTRGNDlDM0JCNjY5ODlEMEIwMjM5NTk5REUxMENFRDQ0MjgxNDUwQ0U5QTJGM0RGOUNDNkU1NDAyNzE4QzU2QjZFNURFNEZCQ0M2NTZDQkU5MEYyQkVDOUFGOEQxNzZEQkVEOUMzRkE2NjA2M0ZCMzQ1QjFFQjlBRTcwODczMjMwRDdBRDlENDAyNkEwREQ2NTdEMEREQ0ExNEVBMzdBNUQ1ODM0QTdFRUM0MjUzM0FFOUYzNTAwNTkwQTYwOTJCNTRFNDdEMjZCRDMzREYyMDJCMkExOEU5MzJDNEFBRjBFNAorRTM0RQorQTA2MDVFMjk4MzIyMjI2MEU2NTU3NUJBCis1RkE5NDNBMworRTM3ODlCN0YxMjI4N0U3MTY3OEE3NzMxNDE2RAorNkM0NzY4M0Y5MTExNkE5NzU0QjRGMjU2MUI3QjlCRENGOERGMDA3MDMxQzdGRjk1Q0VGQjVDODIyMUQ2NjM1NjMwMUFERjk4RkZCRUMwNzlEQ0IyN0ZERTUwMEYzNzQ1NDkwRTNEM0ZERDg3MUVENzY2QUQ0NEVGQjdCNUYyNDczMjMwRUZEMTlFNkIxNUE1Njk1M0ZGOTVFRDVBRDg2OEM2REUzNDUyNkNDRjc4MDUxQzREMEVDOUU1QTQyQjVBREVGQkRDMUQzRkE2RDIzM0IyQjhCNjAzMDUKK0QyRkM5MjNGCis2QTVFMzQ1OUE0MDUzMDQwRTREMTg2MkY5M0IwCiszQTI0Qzk0MUYxRTdDQkRDRTIxMjlGOTI3NzZBRkRBMUZENzgwNENGNTJCODJDMzY2OUREREIxRTM4MTJDNkI3OTFFNjUwRENFRjVEODA0MzcwNjA3QUU5NTA3RTlERTkxREMxRjQ0QjY3Rjg2MzI1RTI4OUUyMkRFNjZCQTA5M0U0OThGRTE5MUY2OTc4NDI0NTY0MTVGRTFGQ0I0MUVBN0NBMEY2QjI5MjRGQTA4QUFEQTgxNDYwNjUzMjc5NzAyNEVFNDc2RTgyRkI5M0RDNzNDRThGRUE4QkQwNUUyRTg0QUExMTVBNjlFN0QzRDFBMzhGQTUzQ0VBMTEKKzlFRjQKKzkzMEEwNkE4CiswNzc4MkYzRDk3REM5QjczMzM0QzY4OURDQUFDCisxNzA0MDgxOEZDMUZGMTU2RDIwMkQ0MjY5REJERTI1QjhGQUU0MTg2MTE0QjU0RDdDRjdFQ0FFNTBDMTdCNDA0NUQ4M0VBRTlFNkQzNTAxNTJERjQzNTYyQzI2NzI1MkJGRkY5Q0MyM0FDNzAzNjZFRTIzN0FDOEEyNUVBMkE2MkQ2NUE0MDBGNTlFOUMwMzU3NjZEMTdCNkZBNkZCNTFBOEY1NkRCRkUyMjNERUQ3NDEwNUVENkMwMTU0RDdBODhCQjAwN0U1NDI3Mzk1MkNGNjhGMDNCQUQ3MDFENzhCNDdFRDMyNTgzNzE1NUQzNDM5MDlBNDhERUQxMUYKK0I2Q0YKK0RCNDQ2MDQ1Cis5NUFCOEU4RgorRDc2MDk3MEU4Q0JFMDE5RjMyRjBGREZGMDgKKzAxNzZDMzIxNTQyQzVENzZENDEzNEY4QjZCRDA2OUQ5QkVCNzE4RkQwNEFBODg5REYzQzQ1NkYxQ0Y0N0FCNjQwQzYyRDlDQ0Y3RDY3QzJCM0IwNzBFMEU1Qjg2QzNBODdDRTdFQTBDQzdGMDgzMzE4RUM5NjNEODFDNzIzNkUzMkU3NUJGRjI3RkY4MTcxNkJENUU4M0ZBREUzNkJDMzZCMzhFCis3MzlGRkEwMAorMDk0QzZDRjY5NkNDNUM3QjhEM0M0QzA0Qjc1NAorNjI0NDQ3NEZGMjM4NDAyNjY5NzIxNUJENEU2OEMyRDUzQTY5ODFGQkY2MzQ2RjRCREMwODY3Nzc3OTgzOTJERDVDRUVGMTM4MzIxRDI2QjAzQkQyQjJFMEI5Qjc2NTMwRDM3NEVDQjNCRUU4MTFENDI5NjNDQ0M2NjA3QzY2M0Q5NTkyOTNCNUVBMTdCRjY3MkIxRjBFNUEwMUY5QzI0MEI0QjIwNDhDRkQ0NDYyQkE2NTY4MDlFNEZCQkZFNzQ2M0I0QTc1MTQ0MEEzMTc0MUUwNUEzQUJGCisyMEJFMkEyNworRTU4NEI3RTQ5NTBDRUJBQUVGQzYxMzFCNEYKKzBENzUyQzRDQzk5M0JGNUE5OUUxOTA0MjRBNkNBQTVFNjVBOUM1QkE0MEM3OTE2MjE4MEY5QTY1REFEODE3NTYxMzJDOERENUIwRjIwREI5NDRCNjMwRjFBRDUxNDBEMzI0NTA1M0FBRDUwQTFEODA2NEQ1OUE3NjY1RkVDRTY3MkY5MDc5RTg1REYwMzI4QUI5Q0IxOUY1REZFMjZBNTYwNjc2NDM5NjU0MDJENjM4OTcwODUzMzgKK0U3NkQ1NTgyCis1MDE1MzI5MjdCOEUxN0FFNTQwQzVBQUYxMworMkEyN0I4MDlBQjMwQ0U0MEZFQjYwRjdCNDc3RDAwQkFGREQyNjBENzM4RjRDMDE1QjQ2M0Y3MTE1QzE3RERDRDFGQzM1MTNEOEI5NjYzODBDNkI4QzM2NDdGQjY5MzYwNDgwNzlEMkE1NzM3ODUwM0JFMTA1QzRGQUExMjFDODgwMTFFMTVFNkMxNUFBQjVBOENCOEI2NDVENEVBRUEzQjREQUJBNUE5QjM4REFEMDFENUNCMzZEMzlFCitFREJEMzNCNAorMEJCQURDMTBFRjYyNEMyRUFBQzFDREY0NjkyRAorNjAxQURFNUQyODk3Rjk2NTYxNUIxMTU4QjRDQjAxRjkwM0ZGRjM3OUZGRDdGMTIxMUFERERCQ0I3NDFCNDQ0NjEyNTQxNjZGNEJDMDlGMzk2MDM2NkRENTJCOTFCNkIwREQ4REE3MEMwQzI5ODJDMkZBRUU4RDlFMEZBQzI0ODY5OEZFODE5RDAzMkRCMzU4RERGNEIyNTgwMTkzRDE5MUU1NEU2NjM0QkExMEUwQUZERjM0RjNENkYzMTI2QkUxMjE2MzgzMkFGMEQwNTg5NDlCRTUyRTEzOEQzQkE3NzBCNjZFQzU3RkY1MDhBRTg0QjdGMkY0QTFBNEU1CisyN0YwCitGQjM1OTk2NUU4N0EyNUVCREJCQzM4QjFFMzVEMkZCOURFQjNBNUI0NjcyNzk0OEZDN0I3NjEwRTkyRjgzNTY4RjQ5NzRGQjZFNQorNzhFMkQxMzkKKzM0QTZEMTdBNkIyRTUyOTdBNEQ2OTFBNTNCCitEMzNGOUFFRDk4Qjg0QzJGRkFENDc0ODVFMDE4ODM5NDc0NEMyNzU3RUJDMjJCRTcxMzA1QTg1MDI1OEM1OEVENDNGMUQxRjcwMUIzMDMxQTY3NTNDQUIwNkYyOERDODgyNDk0MzgxRTc4QzZCOUVBNUUxQjk5MkFEMDg0REFCOUUyNjNDQjg4NDI0QkU2NDY4RUM0QjA1RDFBOTEKK0FFMzVGOTIxCiswRjNERDYzNTFCNTVCMzMxOTkzREVFODZFMzlECis0QzhERkE4RjYwMDgwN0U5NjE1MDM5QkU5Q0M2NTJEQkEwOTVFNTQ3MkEzMTAyOEU1MzRCOUJBQjVCOURDMjQxQ0JFOTA0MENGOTM1MjJCMzM1MDc0QUY2QjVCNTMxMDY2MzJDNzI2NjNENEZFOEVCNzlDMzdDM0RFODg4QkM4NDU3RDgyNzhERUJEMjA4RUQ4Qjk5OUMyMENEOEY2QjM2MEIxRkNDQzJBNDU0OEQzRUJGRDdGRDhFREZGQUM0RTE2MTQ4Q0RGMUI2MUNGMworQTkwREI5QUUKKzAwQkM2MTY1QjgzRTEzOTUxREU4Q0EzODAyCis3NUQ5M0Y4RkNBMjM1MjlBRUE1RDEyNzI3NDk4MkRFQjBGNUEyMjVDRjg3MkFGMzI5MDQzMzY3MzQ2NDcwNkQ0MjU4NDQ4MUE4NDdEMzM2MzQwMjkyMjg5RjIzRTUyQTAyRkUzQzE1MEE3MDlERkExRUY2NkVDQ0Q1MTdDNjc2MDkxRDhDQjM1NDdEMgorOTRDMjMzRTcKKzVBRDk4NjhEQjU5MUNGMkQ4MDY1QkU0Q0M3CisxQ0JBNThCRDIzRDBBREEzNTg3QjdEQUFBNzEwRjlBNjA0MjM0NUQ4NzUyMTdEODIwMzcyRkU0NEE1M0M2REZGQ0M3NDExQTZBQzVDNEE3NkZBODc2MTE4MUE5MTc1RUREODBEMjU4MjBBNUNBM0Q2MDE0MjAzNzZFQTA0RTA0MzhGMDU5QTZEMEQ0MEE3QTQ5MDk4MUY3N0UyMkU3NTlGOUFFNjY4RTIxQzgyQkE2REVGCitFNUYyMTVBQQorQTk5QTRDQ0REOTA0QUE2RkM0RTM0RTJFQjkzNQorOTkxQzlEN0E0OEUzREM5NzU4QjBBQTlEQjk5MzAwQUI1REZDMDFDNzI4NEE3RUQ5NjJCOEQzOUREODgxNDlGMzA3M0NDMDgxMzk4QTk3ODAxNTIwQTNFOEE3MUVBQUJCOTg0MTFDQ0Y2Mjk4M0ExNDZEODZERjU5NUZDOEFGNzUyMjE0NjQ4QzkzNkI1MUQ4MzI0MDFFMjVBOEMyMDhCOENFQUFCQTFEOTFEQ0NGNjU5RERBNTIxNEM3OEVBOURDRjMyQUQ5REFGNTYwOTVBOTY0Nzc2RTk3RDhBOEQ0M0NFMkUxODA3RTM3Njk2MzVDOTYKK0Y3Mzk5ODY2CitCMzQzRUE0NjM5NUUyODNGMzUxMDAyMzk1MQorNDhFMEFFRjE0MUQ0RkNFNzE5QUY0M0U3MDU0OTQ2OUM0NTQ1MzQ3NTg3MkIzMUU2MjI4NTgxNUYzMDhDQkQ0MTcxMzA1NzcyNDkyODhGNTVBOTQ0QjcwNEU1QjNFNzAwNzA2REE3ODU3NDNCMzgwMDBCMjM4RkI1ODM0QzQxODM4NTA1MzlEQworM0Q3RDMzNzIKK0QzNEQ0QUI3NDA2NzdCODhFMUVFNEFERjQ4Cis2REE0N0YyNkM4MkEyQ0ZGNTg1RTM4MjEyOEVCN0YzNzVFRjhBMzRDRTJDOTRENDRFMzU2MkNBRUVGRDcxODcxN0MzMUJBRjUxMTY3RkU5NDRERkIzMjI0Q0VFNzg5MTMyQUQyMTdFREMwNzNENTU1Rjc4QkM5RDE4MzY3MUIzREY5Q0E1QTc2NTVDN0Y1N0ZDMDJEQjIwNzU5QkUzNkMxMjg1N0ZBNEEzM0QwMzM5OUVDOUQwNgorMzQwMDA0MUQKK0FERkQ1MDkxODgwNDkwMEU5REVCNUFFMjg4QTgKKzE3MDJCNUQ1NERBQkUzQjY0RDAyODM5RjNBRjAyQTkyMEM0Mzk1MDZDRDFFRjE1MjgyNDc2Q0QwRjlGMDM2Nzg0RTczMDgwM0RGODc3MDIyNThBQ0QxNkMzRDE3MERDRDZGQUY3Nzk3OTg2MzkyQjlCNUIwNDNDMzY4RkE1MTMxQjA2QkQyNkRBOUIxMTVFODUzQUU2RTY1RTczODQ3QTEwOTE3NjgwREVCQzkxQTRBMzRDOTY4RUFGMjZBQTA1NTYwMDlCMjlBQkJEMDkzM0Y1MjQ2NjFCQzBCNkQzNUE3RTNGNkJCNjdENjNDQ0IxMzFDQzc3MUYzMzhBNworQThCMAorREYxMUNGQTRBREM0RkE4QjkyMjU4OAorNkM0RDEzODMKKzJDNTlEM0I5Mjc3NzhFOTAzQTM4MDMwNUIyNzMKKzAzQUI4QjAxRUI4M0M0MkUKKzNEQkZDQjU2Cis4NkY2OUE0ODhFRDQ4RjZGRDkzQ0RDNzdENTczMDIzNUY2NzY1NTQ5MDVGOUU4Mjc0OThCQzk5RDU3NzM1NTU2ODNGMgorRDc4OTUwQThFM0MzRjhCNUYwQTEyNkFBMzFFODlBNDg5QzMzOUYxRTE2NTY5M0Y1MDI3NzM1MDI3QTgzMzc0OEQwNkFDOEE4NDQ1RAorMjhGQjdEMzE2Q0I0NkVGNjQwN0RCNTI5OTgzNTdGREI1NjhCQTg3RTU1NjBCOENEMUJGRUQyCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorZHVwIDIgL0MwMDgzIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzUwIDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzVERDg5QTg3OTBFQUQxOEVGQzc3RDNGRkFFODREQTVECiszMTIwNzRDNEQ1NDJERDVCRUM3MDk2OEY3NURDCisyNTBDMzk1NEU4REZCOEY0ODU3QkZFRjA5MkVCQTQ5RDI0ODk1NUE4NThDNUE1RjU1RjdCOTg3RUEwNkVDODQyOEQ5MzkwODRDODhGNUIxNTdEODBBQjJENzA2QTdFQjkzNkMzNDI5MTczNTg4RDJBQkE2QTI3REM5NEMwQjQ4NEYzMTY2NjM1NTU3OTcwMDRDQkZBNzlFN0I4NTQ1QzgxMEJGOUNBOTJGNjFBQkQ5RTIwMkVEOUU5NTk0M0RGN0E1QUJCRjNDMjBCREUzQjZFRUM5QzBCOTVBNEM5QzFEMzhBQTdDNjc4NkFEQkJCNzlFRTE4M0JEREYxOTQKKzE5NTMKKzY0NDlEQkI3QUU0N0U5RkM2RjNBQkYxRENEN0ExRTI3NEU4N0RBRTkKK0EyMjczN0ZBCis2NDA0QjIxNUEyN0JGQUY2RDBCNTBFOTREMgorMDcxMjNBNUJCMzgwQzg2REI1MDMzRUU3NDMxODFCQkZDQzAzNTY1NzFGNzI5N0EyMDdDMjNGMUU1ODgyNTdGREVGNURGMjI5CitDQUJGM0IzQworOUUwOTg4QzYzQjM1OEFDQTRCNEZFQjAzM0RGQgorRTJFMzg3QTA2QTIzQ0FDQQorOEUxMDRCOTAKK0RGREJENDFGMDYzRThBOERGQTBBQkE0REQ3NDQzMDE1NTI2QUU1MjU1MzE1NTk3Nzc5RTA0RDg1ODQ5MzA1RUE0RjMxCis1Q0RBRDA2RTU4NDFFMUI4MDc0NzYwQzk5NzAyQjhDRjQ0M0Q3NTIxNzREOTk2Qzk0RTY5MDc5N0E5NTg3Q0Y1MDE3REVCMTFFNUZFCiswMjU3NkU5RTA4QjM5Njg4QkJFOTlBMTg2QUE4RkM3RTIyMkY1RTUyQjI5QTdGREYzNzlFRjUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3N5bTpjbGFzMTIgMTIuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNGIgMTQuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxOTI5MzczMzI5MzUyYTBjMDEwZTAxMGYyOTMxMjcyYzMwMjUzNTJlMDEyYTMyMzUwMTE4MjkyNTM2MzgzNTJkMzEyYjAxMTkyOTM3M2EzMjM1MmUwMTFiPiAyMjA3IDU1OCAwIDczODQgLTEgcworPDI5MzUyYTMyMzUzMDI1MzEyNzI5PiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwOTBiPiA5MzQ2IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3dzdDpkdXRjaDE0YiBTRgorPDA4MGMwYTE0MGYxMTEwPiAxMjcxIDE0NTggMCAyMDU1IC0xIHMKKzwwMDA0MDMwMjAwMDYxMDExMTYxMDAwMDUxNTBlMTMwMDA5MTAwYjAwMDcwZjEzMGQwYzA5MTQxNTEyMGMxMz4gMjA1NSAxNDU4IDUgNTYyOSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MWM+IDEyNzEgMjA4NiAwIDE0MzQgLTEgcworPDI5MzkyZDM2MmQzMjMxPiAxNDI2IDIwODYgMCAyMDU2IC0xIHMKKzwwMDA5MDcwODAwMzIyYTAwMzEyOTM3MzMyOTM1MmEwMDI3MzIzMTM3MjUyZDMxMzYwMDM3MmMyOTAwMmEzMjJmMmYzMjNhMmQzMTJiMDAyZTMxMzIzYTMxMDAyNjM4MmIzNjAwMjUzMTI4MDAzMDJkMzYyYTI5MjUzNzM4MzUyOTM2MGM+IDIwNTYgMjA4NiAxMCA4MDM1IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDI0MzIgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjA+IDE1ODkgMjQzMiAwIDE3NTEgLTEgcworPDI5MzUyNjMyMzYyOT4gMTcyOCAyNDMyIDAgMjMyOSAtMSBzCis8MDAxYTM4MzczMzM4MzcwMDA2MDAzNzJjMjkwMDJmMzIyYjJkMjcwMDJhMzIzNTAwMmIzNTI5MjUzNzI5MzUwMDM3MmMyNTMxMDAzNjM3MjUzMTI4MjUzNTI4MDAzOTI5MzUyNjMyMzYyZDM3M2MwMDJkMzYwMDJhMmYyNTNhMjkyODAwMmQzMTAwMjUyZjJmMDAzNzI5MzYzNzM2MDAyOTNiPiAyMzI5IDI0MzIgMTUgOTE0MyAwIHMKKzwzZj4gOTE0MyAyNDMyIDAgOTIxMyAtMSBzCis8MjcyOTMzMzc+IDE1ODkgMjY3NyAwIDE5NzIgLTEgcworPDAwMzcyYzI5MDAxZTEwMWIyMzFkMWUxYzEyMGUxODAwMzcyOTM2MzcwNzAwMWUyYzI5MDAzOTI5MzUyNjMyMzYyOTAwMzIzODM3MzMzODM3MDAyYTMyMzUwMDM3MmMyOTAwMWUxMDFiMjMxZDFlMWMxMjBlMTgwMDM3MjkzNjM3MDAyNzMyMzgyZjI4PiAxOTcyIDI2NzcgMTEgOTIxMyAwIHMKKzwzODM2Mjk+IDE1ODkgMjkyMiAwIDE4OTEgLTEgcworPDAwMzYzMjMwMjkwMDJhMzIzNTMwMjUzNzM3MmQzMTJiMDAyYzI5MmYzMzA3MDAyMTJjMjkzMTAwMjczMjMxMmEyZDI4MjkzMTI3MjkwMDJkMzEzNzI5MzUzOTI1MmYzNjAwMjUzNTI5MDAzNTI5MzQzODI5MzYzNzI5MjgwNTAwMzcyYzI5MDAzOTI5MzUyNjMyMzYyOTAwMzIzODM3PiAxODkxIDI5MjIgMTEgOTE0MyAwIHMKKzwzZj4gOTE0MyAyOTIyIDAgOTIxMyAtMSBzCis8MzMzODM3PiAxNTg5IDMxNjcgMCAxODkwIC0xIHMKKzwwMDNhMmQyZjJmMDAyZjJkMmUyOTJmM2MwMDI2MjkwMDJhMmYyNTNhMjkyODA3PiAxODkwIDMxNjcgNCAzNzcxIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDM1MTMgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MWEzMT4gMTU4OSAzNTEzIDAgMTg3NyAtMSBzCis8MDAzNjMyMzAyOTAwMzYzYzM2MzcyOTMwMzYwNTAwMzcyYzI5MDAxZjExMWIyMzFjMWMwMDM3MjkzNjM3MDAzYTJkMmYyZjAwMmEyNTJkMmYwMDNhMmQzNzJjMDAzYTJkMzcyYzAwMzcyYzI5PiAxODc3IDM1MTMgMTAgNjY1MSAwIHMKKzwwMDMwMjkzNjM2MjUyYjI5MDAyNDI0MzYyOTMxMjgyMzM4MjgzMzIzMzUzNTBjMDAyODI1MzcyNT4gNjY1MSAzNTEzIDMgOTIxMyAwIHMKKzwzNTI5MjczOT4gMTU4OSAzNzU4IDAgMTk2NCAtMSBzCis8MDAyOTM1MzUzMjM1MGMwMDEwMzIzMTMxMjkyNzM3MmQzMjMxMDAxYz4gMTk2NCAzNzU4IDMgMzgxOCAwIHMKKzwyOTJhMzgzNjI5MjgwNzAyMDAxNjM3MDAyZDM2MDAzODMxMmUzMTMyM2EzMTAwMmQyYTAwMzcyYzJkMzYwMDJkMzYwMDI1MDAyNjM4MmIwMDJkMzEwMDM3MmMzMjM2MjkwMDM2M2MzNjM3MjkzMDM2MDAyYTMyMzUwMDI3MzIzMT4gMzgxMCAzNzU4IDEzIDkxNDMgMCBzCis8M2Y+IDkxNDMgMzc1OCAwIDkyMTMgLTEgcworPDMxMjkyNzM3MjkyOD4gMTU4OSA0MDAzIDAgMjE5MyAtMSBzCis8MDAxZjExMWIwMDM2MzIyNzJlMjkzNzM2MDUwMDMyMzUwMDI1MDAyNjM4MmIwMDJkMzEwMDMxMjkzNzMzMjkzNTJhMDc+IDIxOTMgNDAwMyA3IDUyNjggMCBzCitzeW06Y2xhczEyIFNGCis8MDI+IDEyNzEgNDM1MCAwIDEzNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxZDMyMzAyOTAwMzcyOTM2MzcwMDM2MzgyZDM3MjkzNjAwMzYzODMzMzMzMjM1MzcwMDJhMzIzNTAwMzEyOTJkMzcyYzI5MzUwMDJjMmQzNjM3MzIyYjM1MjUzMDM2MDAzMTMyMzUwMDI3MzIzMTJhMmQyODI5MzEyNzI5MDAyZDMxMzcyOTM1MzkyNTJmMzYwNz4gMTU4OSA0MzUwIDkgODEzMCAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA0Njk2IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlMmMyOT4gMTU4OSA0Njk2IDAgMTk0OSAtMSBzCis8MDAyNjI5MzEyNzJjMzAyNTM1MmUwMDJkMzYwMDMxMzIzNzAwM2EzNTJkMzczNzI5MzEwMDM3MzIwMDBlMTkxZDE2MDAxMDA3MDAxNTMyM2EyOTM5MjkzNTA1MDAyNTMxMDAwZTE5MWQxNjAwMTAwMDI3MzIzMDMzMmQyZjI5MzUwMDJkMzYwMDM1MjkzNDM4MmQzNTI5Mjg+IDE5NDkgNDY5NiAxNCA5MjEzIDAgcworPDJhMzIzNT4gMTU4OSA0OTQxIDAgMTg1NiAtMSBzCis8MDAwNjExMTUxNjFkMWUxYTE0MWM+IDE4NTYgNDk0MSAxIDMyOTIgMCBzCis8MGUxODAwMjczMjMwMzMyZDJmMjUzNzJkMzIzMTA3MDAxMz4gMzI4NCA0OTQxIDIgNTA1MyAwIHMKKzwzODM3MzgzNTI5MDAzOTI5MzUzNjJkMzIzMTM2PiA1MDQ1IDQ5NDEgMSA2MzM3IDAgcworPDAwMzIyYTAwMzcyYzI5MDAyNjI5MzEyNzJjMzAyNTM1MmUwMDMwMjUzYzAwMzUyOTM0MzgyZDM1Mjk+IDYzMzcgNDk0MSA1IDkyMTMgMCBzCis8MGUxOTFkMTY+IDE1ODkgNTE4NiAwIDIxMTIgLTEgcworPDAwMTAwMDJhMzIzNT4gMjExMiA1MTg2IDIgMjY0NSAwIHMKKzwwMDI1MmYyZjAwMzAzMjI4MjkzNjAwMzIyYTAwMjczMjMwMzMyZDJmMjUzNzJkMzIzMTA3MDAwNjExMWYxZDEyMjMxYjFkMWU+IDI2NDUgNTE4NiA1IDYzMzggMCBzCis8MGU+IDYzMTggNTE4NiAwIDY0ODEgLTEgcworPDFlMDAyNzMyMzAzMzJkMmYyNTM3MmQzMjMxMDAzMjMxMDAxNTFiMDYxZjIyMDAzNTI5PiA2NDYxIDUxODYgNCA5MTQzIDAgcworPDNmPiA5MTQzIDUxODYgMCA5MjEzIC0xIHMKKzwzNDM4MmQzNTI5MzY+IDE1ODkgNTQzMSAwIDIxNDUgLTEgcworPDAwMzYzODMzMzMzMjM1MzcwMDJhMzIzNTAwMzcyYzI5MDAzZTJmMzIzMTJiMDAyZjMyMzEyYjAyMDAyODI1MzcyNTAwMzczYzMzMjkwNz4gMjE0NSA1NDMxIDcgNTU4NSAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA1Nzc3IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlMmMyOTAwMzAyNTMxMzgyNTJmMDAyODMyMjkzNjAwMzEzMjM3MDAzNjJjMzIzYTAwMjkzYjI1MzAzMzJmMjkzNjAwMmEzMjM1MDAzNzI5MzYzNzM2MDAzMjM3MmMyOTM1MDAzNzJjMjUzMTAwMWYxMTFiMDAzMjM1MDAxZTEwMWI+IDE1ODkgNTc3NyAxMiA3OTI0IDAgcworPDA3PiA3ODg5IDU3NzcgMCA3OTQyIC0xIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA2MTI0IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlMmMyOT4gMTU4OSA2MTI0IDAgMTk0OSAtMSBzCis8MDAxMTE3MWIxNjAwMWU+IDE5NDkgNjEyNCAyIDI3NDYgMCBzCis8MjkzNjM3MzYwMDI1MzUyOTAwMzEzMjM3PiAyNzE1IDYxMjQgMiAzNzg1IDAgcworPDAwMmEzODJmMmYzYzAwMjgyOTI2MzgyYjJiMjkyODAwMmEzMjM1MDAzMDM4MmYzNzJkMzkyOTMxMjgzMjM1MDAzMjM1MDAzMTMyMzEwNjEyMzcyYzI5MzUzMTI5MzcwMDI5MzEzOTJkMzUzMjMxPiAzNzg1IDYxMjQgNyA5MTQzIDAgcworPDNmPiA5MTQzIDYxMjQgMCA5MjEzIC0xIHMKKzwzMDI5MzEzNzM2MDc+IDE1ODkgNjM2OSAwIDIxODcgLTEgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDY3MTUgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MWUyYzI5PiAxNTg5IDY3MTUgMCAxOTQ5IC0xIHMKKzwwMDEzPiAxOTQ5IDY3MTUgMSAyMTMzIDAgcworPDMyMzUyOTAwMGUxYjE2MDAxZT4gMjEyNSA2NzE1IDIgMzA0NCAwIHMKKzwyOTM2MzczNjAwMzEyOTI5MjgwMDI2MjkzNzM3MjkzNTAwMmMyOTI1MjgyOTM1MzYwNz4gMzAxMyA2NzE1IDMgNTI1NCAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA3MDYyIDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlMmMyOT4gMTU4OSA3MDYyIDAgMTk0OSAtMSBzCis8MDAyOTM1MzUzMjM1MzYwMDM1MjkzMzMyMzUzNzI5MjgwMDJhMzIzNTAwMzUyOTMwMzIzNzI5MDAzMTI5MzczMzI5MzUyYTAwMjkzNTM1MzIzNTM2MDAyZDMxMDAyNTAwMTM+IDE5NDkgNzA2MiA5IDYyNzEgMCBzCis8MzIzNTI5MDAwZTFiMTYwMDM3MjkzNjM3MDAzYTJkMmYyZjAwMjUyZjMwMzIzNjM3MDAyNzI5MzUzNzI1MmQzMTJmM2M+IDYyNjMgNzA2MiA1IDkyMTMgMCBzCis8MjYyOT4gMTU4OSA3MzA3IDAgMTgwNyAtMSBzCis8MDAzYTM1MzIzMTJiMDAyNTM2MDAzMTI5MzczMzI5MzUyYTAwMjgzMjI5MzYwMDMxMzIzNzAwMjgyZDM2MzcyZDMxMmIzODJkMzYyYzAwMjYyOTM3M2EyOTI5MzEwMDI1MzE+IDE4MDcgNzMwNyA4IDYyNTAgMCBzCis8MDAyNTM3MzAyMzI5MzUzNTMxMzIwMDI1MzEyODAwMjUwMDM2MzcyNTMxMjgyNTM1MjgwMDI5MzUzNTMxMzIwNz4gNjI1MCA3MzA3IDUgOTIxMyAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA3NjUzIDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlMmMyOT4gMTU4OSA3NjUzIDAgMTk0OSAtMSBzCis8MDAzMDI1MzEzODI1MmYwMDMxMjkyOTI4MzYwMDI1MjgyODJkMzcyZDMyMzEyNTJmMDAzNzM1MzIzODI2MmYyOTM2MmMzMjMyMzcyZDMxMmIwMDI5M2IyNTMwMzMyZjI5MzYwNz4gMTk0OSA3NjUzIDUgNjY1MiAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA4MDAwIDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDEwMWIxZjAwMzgzNzJkMmYyZDNkMjUzNzJkMzIzMTAwMzAyOTI1MzYzODM1MjkzMDI5MzEzNzM2MDAyZDMxMDAyMT4gMTU4OSA4MDAwIDQgNDg2MyAwIHMKKzwyZDMxMGEwOTAwMDMwNjExMWYxZDEyMjMxNzFhMWExYjEyMWMwNDAwMzEyOTI5MjgwMDI3MjUyZjJkMjYzNTI1MzcyZDMyMzEwNz4gNDg1NSA4MDAwIDMgODg0MCAwIHMKKzwxNjJhMDAzYzMyMzgwMDI1MzUyOTAwMmEyOTI5MmYyZDMxMmIwMDI1MjgzOTI5MzEzNzM4MzUzMjM4MzYwNTAwMmEyZDNiMjkzNjAwMmEzMjM1MDAzNzJjMjkzNjI5MDAzMzM1MzIyNjJmMjkzMDM2MDAzYTMyMzgyZjI4MDAyNjI5MDAyYjM1MjkyNTM3MmYzYzAwMjUzMzMzMzUyOTI3MmQyNTM3MjkyODAwMGQwNjA0PiAxMjcxIDgzNDYgMTMgOTI3NyAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgzMCkgMzAKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0MCBwdXQKK2R1cCAzIC9DMDA0MSBwdXQKK2R1cCA0IC9DMDA0NCBwdXQKK2R1cCA1IC9DMDA0NSBwdXQKK2R1cCA2IC9DMDA0NiBwdXQKK2R1cCA3IC9DMDA0NyBwdXQKK2R1cCA4IC9DMDA0OCBwdXQKK2R1cCA5IC9DMDA1MSBwdXQKK2R1cCAxMCAvQzAwNTggcHV0CitkdXAgMTEgL0MwMDY1IHB1dAorZHVwIDEyIC9DMDA2NiBwdXQKK2R1cCAxMyAvQzAwNjcgcHV0CitkdXAgMTQgL0MwMDY4IHB1dAorZHVwIDE1IC9DMDA2OSBwdXQKK2R1cCAxNiAvQzAwNzAgcHV0CitkdXAgMTcgL0MwMDcyIHB1dAorZHVwIDE4IC9DMDA3MyBwdXQKK2R1cCAxOSAvQzAwNzYgcHV0CitkdXAgMjAgL0MwMDc3IHB1dAorZHVwIDIxIC9DMDA3OCBwdXQKK2R1cCAyMiAvQzAwODAgcHV0CitkdXAgMjMgL0MwMDgyIHB1dAorZHVwIDI0IC9DMDA4MyBwdXQKK2R1cCAyNSAvQzAwODQgcHV0CitkdXAgMjYgL0MwMDg1IHB1dAorZHVwIDI3IC9DMDA4NiBwdXQKK2R1cCAyOCAvQzAwODcgcHV0CitkdXAgMjkgL0MwMDg4IHB1dAorZHVwIDMwIC9DMDA4OSBwdXQKK2R1cCAzMSAvQzAwOTUgcHV0CitkdXAgMzIgL0MwMDk3IHB1dAorZHVwIDMzIC9DMDA5OCBwdXQKK2R1cCAzNCAvQzAwOTkgcHV0CitkdXAgMzUgL0MwMTAwIHB1dAorZHVwIDM2IC9DMDEwMSBwdXQKK2R1cCAzNyAvQzAxMDIgcHV0CitkdXAgMzggL0MwMTAzIHB1dAorZHVwIDM5IC9DMDEwNCBwdXQKK2R1cCA0MCAvQzAxMDUgcHV0CitkdXAgNDEgL0MwMTA2IHB1dAorZHVwIDQyIC9DMDEwNyBwdXQKK2R1cCA0MyAvQzAxMDggcHV0CitkdXAgNDQgL0MwMTA5IHB1dAorZHVwIDQ1IC9DMDExMCBwdXQKK2R1cCA0NiAvQzAxMTEgcHV0CitkdXAgNDcgL0MwMTEyIHB1dAorZHVwIDQ4IC9DMDExMyBwdXQKK2R1cCA0OSAvQzAxMTQgcHV0CitkdXAgNTAgL0MwMTE1IHB1dAorZHVwIDUxIC9DMDExNiBwdXQKK2R1cCA1MiAvQzAxMTcgcHV0CitkdXAgNTMgL0MwMTE4IHB1dAorZHVwIDU0IC9DMDExOSBwdXQKK2R1cCA1NSAvQzAxMjAgcHV0CitkdXAgNTYgL0MwMTIxIHB1dAorZHVwIDU3IC9DMDEyMiBwdXQKK2R1cCA1OCAvQzAyNjIgcHV0CityZWFkb25seSBkZWYKKy9Gb250QkJveCBbLTUwIC0yNTYgOTc4IDczOV0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDIxOUVBNzVDQUU4N0E0NDA3MDg0NzIzRjU3REM0REY3NkRFMQorQTdBQzEzMDA0MDQ2MjJGODkzM0E3RjVFCisyQjczMkYzMEY5MDg3RUFBMjUKK0RBN0NCMDYyCisxOTYyNTVBOTM4RTA1MzYzREJEQTE3MzcxRAorNjE2Q0MwODcxOUQwQzUyMDgyNkZBQzk1RkE4RkFEOEU1RkJFQTQ4NTc0MEVFODkzNUI3RUE4RjVERDAyNkI4MTNCN0E1OUQ5NDQzRjZFRkVGNUU0QTRFNTNFMDc3QTkzNDNERTQyMUUwMDZCMEE4NDc2OUJGNDUzM0ZGMEM0MTYKKzg5OURDNDRFCis3QkFBNkJDOEMxQ0JGQjIxQTgyRjI3NzRFMworQUY4QzVBMTU0QjM2RjQ2MTk0RjA3M0NBMEI1OTJEM0NFRDY1QTgxOTdGQzU0ODJDNzczNzNGRTBGNUJFRUMyQjQ3MTY0Q0QxNzQzQTVBMjk3MTMzRUNDNUJCNjBGMEYzMDQyMEM5MTU4RDAyRERCRkNDMzc5QjI4N0Q4RTg5CisyNTdERjhBRAorMDZGNEMyMTg4Qzg1RjdDMUMwMzZBNEQ5RTQKKzRBRTNFNUI0RjY2OUMzN0MyMjBGNUQyRDIwREY4NTAyNUM5M0Y2Q0NBREYwQUQ1RDlBMzUwRDUyRUUzMkI3NDcyNUFGNEVFNDYyRkIzNkYxNUNBMkRFNDMyRkQzRTdDNDIwQUE3MDgyNDZEQ0Q0MkMwRgorODFCRUI5OUEKK0ZEMDVFODk4QjkxMTlFOTNGNDUzQTc2OUY2CisxMjQzNDZDRDA1MjcxNjExQzU2OUZGRDdEODYyNkY1RTZFRDVDMjg0QTAxMDJECis5RDMwMERCMQorNUVDQzM0RDZFREVDOEVBQUM1NTZGQkNBRjkKK0Q1RjQzMzYzOEY0OERCMjdCOUY5OTg4Q0FGMDc4OUNCNjI4QzUzNzM3MjY5Mjk5QkVGNzBEOEVCOTQ2RDhCCitFNkE5NjZEQworNEY5ODI1MEJENUNCNEIwREZDQjA4MjM5NkEKKzE3RjA4NzAyOEVBNzhCOTVCMjAzQ0Q5OUI3RUY3QkM3OTczMkMzRUI1NTU2RDZGNzlGMkU4RTNDCisyRkY3N0EyRQorMjRBQjQ2Mjg1QUFCMTk4RjQzQzhGNDNBMjIKKzdFRkM5RUVEMjY1MjlERTY0MzQ3M0QyQTkyRjFFOUU4RUE1QUZCOTU1M0Y0QjVBM0VFMjU0RTU2M0VCRjE5RTZDMTU3MDA5MzYxN0EwMTE4OUI2RTQ1OTk2Q0Y5NEFCQ0JGQjI1NUMxOUFCRjZDQUNENjU5MzZEQTNFMkNDMDZGMzFDRThFNDU3MzExNUY5OUQxMjIKKzUzQzE2MTM1CitDNTU1QTgxODcxRkE3QThFRjlCMUI0NzA2NDJFCiszRjU3NUY0QzAwRTM2QUMxODc5Q0MxMEIyN0ZEQkQwODM4MTI3MzVBM0Q4M0I0QzU3OUE4MjNENzUzOTIyM0ZFMEVDMDE0ODNDMEVEMzJCN0ZDODBENUVGMTQ4OTMwNDNDRkY0RkExNzAyQTBENzEyNzgzNjUzRjk2NDI1OTMyOEM5RkJGNTdGNEJGM0MwRjZEMTdCOUFDOEVFNjBBNjU5QjgwNjFGRUI5QkU2RTk4REMwOTVGNzA4MzkyQzZERTU3ODRBOTk3NUNGMzQwMTc1RTFCMjRFMkI5QUZCMjgKK0JBQjY5QkVFCitDOUU0RDU3QjEyMzE1QTQ1NTQzMTZFMTZDMworNzkwQkE3MjBFOUJCNDIyNkI1MEE2Mzc1MEQ4ODVGNzZERkI4NUUzNkUxRUIwMTdENDAwNDFFRjZGODNBMEY1RENCNTVBMzA0NTAyOEQxN0VBNkI0ODgzMjJCQUEyN0E5NkM4MDUyQ0E4ODlCCisyMDc0NzA0NAorRTQwQTJBQTJEMDBDOTYwNDlFNzRGNjA5RERCQgorOTYzNUZBMDVEQzkzMDQwNzk0N0UxNDQzNDFGNTdEQjAxMDEwQjVCMEM0MTlBMEQyRjYxQ0VDRTQxOTgzQTdDNUNGNzdCNjk3MUI5REU5QkVCN0ZDMzgyMDdBMzJCRUVBN0I0MjBCRTU3OTIyN0Y3NzdEMDMxNkM2RUQ2OTlBMzNGNjdGQkIxNjU0NTE2QTUyM0FFRTYyQUFEMzY4QjQ5NUFEOTA5RTU5RDlDMkM3NkMwQjg3RTk4QkY5QzJFOERFNTk4QzMwNjg5NkFFMjMzMTU1RjJEMjlBN0RDMzc5OUQ5NzhDMjEKK0UyRkI5QTU0CitEOTgyRDFBN0M4Qjc1OUIxNEQwNEQzNTJGMUE5CiswOUFBRDk0QTUxMTQzQ0MxNTdCM0Y1MEVFRkU3RTczNzdFNUZCQUVERDVGQkU2MzVGRTlBREZDRURCMjg3RDA0RDk4RkI5RTE5QjAwRTRGQUZENkUxMTIxRDdCQzc1QkE1NERDNzlDODU2Q0QwNjkxNkU3OTU1MEEzNDQ5ODVGRkVGREY1QTc3NzNFNUMxNkJBOTE5ODM2NkZFRjE2NDY1NEVFMkJEQjNGRTU1RTI2RjM1MkJFMEYyQkI2NzIxQkZCMEJGRDlBMkE5OTJDQkJCMzEzQTBBMUVCRENFQ0E0MTI1MEFBNzFBRDFDRUI2RThDQzExNDA5NDU4REYKK0I1MzAKKzU2Cis2NTgyQTdGNQorNTM0NjlCNzE4RDU4RjFBRkZFNTJEOTBFQTEKK0MzQ0NENDFFNkE3NkExQzk5QjREMUZBQTlCMUQ4QThFRDY4QzRBMzE0NzUyMUE0OTlGNDU3MjUwNDgwMzM0NzQyRkVDMTdFRTQwMTU0RUYyNThBNzgwQjcyQTg3MTU5OUZEN0ZEQjNEOUZGNERDNTRFMzFGREJCQUVDQTk3MDcyQThENDY2MTk5NDg0RUJBNzY5QjgyREY5MzdEODYzQjhERUY3NTMwODg5OTU4MUZDNjlCRDY4MUM4QjlEOTREMDI1Cis3MDE5NkRCQQorRUIxQkVDNDBGMTkyRDdCMDEwRTJGQTc4QjIKKzkxQjk1MkZDMjRGQThDRDAyRDExMzc1RTk3NDA1QzdGQ0IzOTE0MzQ3NDVBRjYzMzY1NDQ0MjI1NzkwNjE2MUI3OTMxMUQzREJCRjIwMTNEOEVFODEzNDlFMjdEMURCNTY4MTQ3ODBDNjhCODFCQ0E2QzFDMzdEOUUwMEI1NDNGNEIyOTQ0NEY0OTQzMERBNDVFNjZERkM3MkI0QzNGMzkxQjgyNUU4QzI3NDQ4MjJGMDBGOTZDMzAzRjkxOThEOTdDMzNCMworMEZERjk3NTkKKzQ4NTY3Mjk2RUY4NDY0QjE4Qzc0RUQyODI2NjEKKzdENURBNzEzMTE0REM2RjJCMTU2QkY1ODVBNDNDREU0RUNGNTYzREUwMTY5OUU0REREQTEwOUMxNkJGNDlEOEZCMzZEMzlDNzdGREEzMUM5MTA5NUQ3MTc4QTIxRDZBOEM0NEQwNUQwNjRBRDMzOUQ3N0U1Qjc1QTUwOTdGQ0NEQTA1OENBMEVEREQ4REMwQjg3MUFERDVBQTc3NzgyMThBNzZBQ0FGMTkzMEI4MTEwRkFFNzNFNjk5Q0I5MzY0M0RDMDMzMDVFQUE5MzZDM0ZDQjM3N0Q2N0ZDQTg2N0MzMjdENERFMUMwOERBNzkyRTM5ODUwNDNERjI3RQorN0E2QzZDRDkKKzk0RDcyODQyOEM4MUJCQkUyQzRBOTE5NDhGQ0EKK0UwM0YzREYzNEUzMDczQTc1ODlDRjQ3QjIyNzM3QzFEMTkyQjEzQTVBMjZCOEI2MUE4NkMwNzZDNzkwRkE4OTAyNzkzOTcwRTA3MkY1RjI4NDhFQ0UwQ0U4NUU3QzU5MkQwQzhCNjFDRjYwRTE5MDJDODk1QzMwMjhBOURBNkEyNkIxMzMxRUU1NEQ3NjM0NzM5MTI4MDFBOTY0RUEyOEY4MzkzOTkwQzFEMDNBNEQ1NzIxM0Y1OTRCMjY5MDI0RkEwQkMwMUNBMDMxMDYyRkI5MgorNTBGNzI0N0MKKzMzOEQ3Njc2NDUwQUJEQUFCMjc2QTFEMDU3MEYKK0YzRDY4MzAxQjRCNDVCRDdEMDM5NTU1RjU4MTU4RDIyNjdBNDEwRkM4QjA5NkRBM0YwMTc3NDJEMjQwNDg0NzJCMUQ0NjE2MTAzMzU3QzE4Q0I4MkM5OUI4NTNDNDgyODk0NDg4RkIxNEU2Q0UxREY2NzRBMTVDQTM3RUFDNzM5OTQ2OEI5MTJGMTQ1ODU3MzI1QzYxMTU5NTFBRDk4N0MwRjJBNDEzRDM4RjFDODUzMDZDODZGQ0U2OUZEMTY3MDBDRDYwMEYwQjlFM0IzQzdGNkM4MzQ5NDc5OTdFNjlDQURFNDk1NDU0NDJEMjI4QThDMjNBRjc4NTcwNAorNDM0MQorQTBCM0MzNjYxNERGNzIyNjIyRDlBNgorNEQyMEQ2OTIKK0JDMTJFMjI0MTI1MTU2MUMyRjhGMjMxNUE5CitFOTRFOEQzMTI0MzY1N0IwOTZBOTM4NzVEM0U5MEM3NUVFNzgwRDU3RkI1QUZFOUMyNTU4MjcwNUFDRTRCMDQ0RjdCNUI0Qjg2MkJGNDZEQjhBNUQ1NEYxNjczRDlDMjM3NzA0NjE2OUU0QkUzREM2N0I4RkEyCitDRDg5MDdFOAorNjc2MjQxQ0YzOTZFQzJDQjVCRjk0M0FGQjMKK0M1RUU5MjYzQzRBRkMxMTVBNDNFNTgzRjE3MUI5MzYyOTkyQUQzNDZCQjQzQzI4MjJDODNFQjNBRDY2Q0Q2MEY3M0Q2MzhEN0I5OTQ0QUY5OUE2NTdEQjkxQTZEOEY0MjMwRkIwMEMzOEZERUM0REIwRkJERjM3REM5OUREMUFGQjEzRTM5OTZCNUE3QUUKK0ExMzBDOTU2CitDQjk1ODE2NUNFNURFNEE5RDMyRjZBQjE3MzU4Cis1QjMzNjk3MjYzRjVEMjFGOEYyQUJBMkZFNDM2MTQ4RDI1QjNFNDJBNDQyRERDNkRFNUIxRDU1MkNGOTFCODNBNTg1QkQxRTEyQ0RFNEFEQzNFN0U2Nzg4QzAxQ0E0QzY5QjI2QzE5RjdERTk4MUEzNkE2Q0E5RDdBM0I3MDVCQkI3NUIzN0Q4MDE4Q0I0QjI3RkYzRjBDQkZENTVGNjExN0I0RDlBQTRGNkYwQTMwRTg4RDZBOUI5MkE2MjRFRENCNkEwRTIzRDBGREFEMTJBNTk5MEE4NTc0QUQ0OEEKK0REOEQxMkI5CisxMTg4NDFCODREMjNCODg3QTJGODA4MzlGMAorQzdGQjdCOERCQUE2MzZEMjNBOEI3QjBGNUMwRjc3REYxNThEMjNGMjE0ODg0Q0UzMkU1RjY5QzQzNzEwMkUwQUY2MjNFRkFBMTc1QzM0QzI0MjhFQ0IwREUwMjg4OEMyQzU3MzhGMUUwOEVDNEEzMTlFMzQ1MkM0MzcxN0Q1NDMwQUEwMzUxMDVCREQ3OEE0RDE2REY3OTY4NjNCNDExMjFDRjc2ODg0RjUyNzU2ODM3MkYzNTRFOAorNDc0RDU0QkMKKzVBOTlERURFQzFFMDM5MDA1MUIwRTQwMzhGNTAKKzE2MjY3NkY2NzhCMjdEMjJDNTk0OTJDMEVCNTA1QkY2OTBBNjJFNEJBQzhFNjUwN0VFN0U5QzAzNDAyNzkyMkYwN0JFNDNCNDVGREFFRkUxMTFCNTdCNEEzMjQzNDI1M0IxNkFEMjIyMUEzQUY4ODUyNTBGNzRGNUZFRTlFMzBERTlBOTIwRjJBQ0U2REVFMkIzOUYwMjQ2QTA3MzY2QzNCN0IwNkMwMzgwMzg4MjM2RjY4RDlBNjczNDQ5NTZDM0ZENjJGNEYxMjI4OTk0QjY2QjAyCis1RjZGQkRBQworNTNEMjVFQzdERTkwN0E5ODgxRUE2NzhBQ0ExOQorQUJGRkNENUJGREE0RjIyMTdGQTkyRDlERUY4NjY0MTcxMkI2QzdFNEVDRjdENUJDNjgzODI1QzFCRUVFOEZENUQwREJDMTM0QUNDRkE0RDQzOUZEMTUwRTEyMTFCQjE4NzhEOEY2MTgxMTZGOTVERTZGMUMyQUE4RTMzRjdFNkJBODMzQzcwN0I5NkRGRjI5OTNENjY0RUE0OTRBMDMyRDAwNTM3QjUxNEU2RTVBMkNGRTAwN0NBRTQ5QTAwMDU2NkM3NzRCQzEwRDYwQjRDRDcxNTBBMDMxQzUwQkQzMUFGNzJEQUFENEVFNjlBNUIxRTYzOUU0QkMxQ0JFCis5NUY4MjcxMgorOEEzRjQyQkU1NTU5MjdEREFBOUU0MTJCQkJDOAorNkExRkU1NUZFODQxMzFGNjZBQjMzRkUwQTk0QzY2MDNBMjFDMDkxRTc3QUZDMjJCNTdENTkwNTA2M0IxOEUzNTBDMEJEODgxRjY0MENEQkRBN0ZEN0NGNzQ1NzQ1MkY3NDdEREM5RTAxNjAzMUNBNzA1QTc4ODkyQTc3NDQ0QTM5NUZFMTZDOThGMTgxMzM2N0Y3OUI4NEZENzJGREE4QTI0OUIxNEExMDRBQUNDOUJEMDI2MzFCRjBGNENBQkI2NkU4MkI0OTZBOTA0Q0Y5NDk4NDEzRkNBNjcyREI0NkZGMTAyRkU3RDVGOEFFQkRCQ0IxNDg3RUU2RURDCitEOEIyCitDOTIwOTIKKzMyM0VBRUUzCisxQTNGOTZENDA4NEQyQzE4OEQ3NDIyODZCMworNjIwREM5NEFDMTBGRjY4NUQ2RDA3NUVBQThBNEI2MUUxOTMxMDE5MDRBNDRBMDIwODUwODc3NjlCM0RFODE5RDNFOTQ4QUY0RTU2M0Q0MTgzNDA0MUMzNjA2NDNBQzcwNkYzRkMzNzREMUMxQUI0NzA2QjlCNjUyQUY4NUNBM0NDMjA2NkZCNDY3Rjk2QTNENDdFMkZBODAyOTRBMjU1NzEzCitBNzMwN0Y4MgorQ0UyRDBDOEZFNzVCODM4MkNCM0JFMkEyNUE3MworNjZCRUMxRkJEQzRBQTFCMEM4MzlEREIxNzYwMjVCQjI3MTlGMzc1MkY2Qzg5OTg2N0VDNjI2NzJGMTFEQkRFNzZDNzBBRTI4OUE3QzMzNUNCNEVERjVFQjY4RDFFMUI0NEQ1QkZDM0IyRjRGMzc0M0YyMzRGQTBBOEQyQzIxNTgxNkRGMEEwQzlDRjg3QjYxNUM5RkM1MzA2RkFDNEY0Q0ZDQzhBNTU1Rjk4NDNCMzVCMTQ4MkY0NDg2RUE4REU5REJBQjI1QjUKKzUwNjA0ODkxCiswQTgwMEZFNjRFMDcwQ0MzRkExQzRFNjA4NworQjNDQ0UyNjU0MDJDM0E3RDUwQUQ2Q0ZGOEI3MDkzMUJENTg5NURGNTlFRTI1NEJGODI0MkVDODg0NjQyNkJDODQzNkU5NkZDODM5RjczN0JCRkRDMjc5NUVFQUM0MTdCNUY3OTU4QzRBRkYzQjk1MUY5RTY2MEY1QjBDQTRBQzA5REQ1M0ZERDNGOEM0NTQwOENEQThFNTYyQzIwREZFNTAzNURGMzM5QzAxOUMxMjRCOAorNDNBOTBCMDEKK0VCOEZCNjU5NEQ3RjhFNTRBRkZFOUNGQUM5MkIKKzRDNDNEQTQ1NDJEQ0UwNDdGODY5QUVDQ0U5NDM3NDU3MjMwOTU4MTdGNjM4QTYwRDk3ODAyMEU0MkFEMEU1MjI2RkU2MTgyNkQwRDQxNzAxMkYwOUYzMzE3MDBDNUE4ODlDMzREOEU1RUEyQ0I0QjVBNkM4QzUwMDQyMjcxQ0IzRUFFMENFNUUyQTFCQzE3NkRCNkQzREJEM0YxMTY1NUY2NzQ0N0I4MTVBOTQ4MDc0QkQ0MUVGMEQ3NUZBRENFNjk0NzlEMTVDM0U1NDYxRjExREE5MDVGRTRCNDEwMDAwN0QzNTFGNTRFN0Y3MkJFRERDMDIzNTgzMjUxRgorNEE4MgorOTExQ0ZERDY0NTE3MEE1OEQ0QjkyRjM4MTBCMDU2RjUKKzFCNDcwNjM4CisxNjY4QkFBNjI3MzUxQjJBQjU0QjQ5N0Q0OEM4CitDN0YyNjg2MzFDMjY3RUFBMDU5QzY3QjU3QTRCMjJBMzRENTI3MEMxQUE2RTM5ODZBNUE1NDVDRUEzQjdCNTU2RDBBRjA1OUMwQjk2RTVCNDkzQTMzNjMyNjhDREZGNDkzNzAzMkM0RkExQ0U2OTM1ODVFMDU5NUI2Q0MwOTNDMTYwREU3Q0M4NkJBNzY1MUYyMDU4Q0Q5RjkwNENEQzNGOUNFNjIwN0REMTZCNkFDNjc5OTFGN0M0MDVEMzNBN0Q2ODZDNzdCQkE0NDQ2Njc5MkYyQTNEMENEMTJBREYyNEMyRDUxOTQ2OEZCNDhDNUQ3QkYwOTExNzJGNTgKKzQ3QjIKK0I2NDFGMDNEQUNBQTZBMDVFNDQxOTI1MDYyRDVFNzNDRjdEOEFCNTRGNTA1OTNDNzJBNUQyRUQyMzM0NkMwQzc5MDdDN0ZDN0IwMTY4RAorNjk0RDFEM0UKKzlCQjBDMzMwNzM1NDVGNTZGMDI3QkJFMDNCRUEKKzg2MDFCNDUzQzQ5NDZCNDdFM0E0NUQ3Qjg5Q0I5QUU1NzdDM0JCNTQ2RDJDNzFDMDJDODZCQzM5NDFBQ0JBQzgxOTgyRjFBQjQ5RURGNkY5NTM1OTkzNzA2QUIxOTk5REI5M0JEREIzMDAwRjM4RDcxN0RBNkYwMkExQjUxNDMxNDg4RjQwMEEwMEU4MDI2ODIyQjFGQzYyRDIyQjJBQzI0NTUzMUE4QTQzRDJGNjNFNTJENEY5MTkwN0I5QThDQkE5QTBENUMzNEY3MUY2NjE5NEU5QUFCOTI5OUY1QTQ0QjZEOUIyCitENzE2RDI4MAorOEY3MTY0MzQxMEQ5MzUxQzIyRTYwOTdBMjAKKzZDOTEwODkzRDUyM0YzOTMzM0IwRTg0MDRBRDhDMjkwNTE4MUZCMTBDNkY4Cis1RjU2M0JFMworNDk4NDU2QkRDQUIyQjRFMEE3NUMyQkY0QTE3RQorOTJERkIxMDZFMUNDQTgyOEVDQjM3OTU0OUIzRTg1QUYwNEIwMEM2NThFMEFCQTlBQjJEMTE1Rjg5NDE5NjBEQkNCNDVDNzcwMzQ1QkI0Q0E1NDRDMzc3NzFDNUQwOTMyMDcwMDc3MEM2ODFEMEE4QTkxOTFEOUUyMDNGMDdDNjQwOTRFNEQyNkEyQTUwQTJCNUJCNkNGM0QwMzJBMzJCNzYyQTlFNjBDOEUwRTdBNkJCN0ZDMzgzRUU2QkU0RjNGNDRDMURDQTNDOUVCNkE4NjgwRjg5OTA5NjZBRjYyODNENTQwQzBCMTZGM0JEMzc2MUIyQjU1QURFMUQ4Cis4QTUyCitGOTI2MkMKKzk2RTI0MkRBCis4RkQ5MjgxMTM2RDc4NTI4RjE0RkI5NTEzMAorMTgxMjUzRTk4RUNDNDhBMkE1RTUwNkIxQjE4OUI3NjA5MkFDQkJFMTIyRTYzNTBBQkFGMDA2NjA3MDY2N0UyMUJBRjRCODg1OTk2Njc2Q0IyMTE3OUQ1NjM5QjI0NENGOTE2REYyNUU2MUQ5OURGMzUzQzFGMkE1NjU0RjczREJCRDY0M0VGMEU5RTc5NTY1NTBBOUIyRjZFQUI3RENGQUYyRTg2MzE5MUU3NUYwOEQKKzY2QjAxQjVCCis4RjgyMkQ5QjczOTBDNDcwMjYxQzYwM0I4MworNEJCMDNDRjQ2QzlCNjY5OUFFMTc0N0E5Qzc3NTNCMDk5RjY0QkYwQTlFQ0U4OEI4MURGMTNGMDY1M0FEQzZBRDUwQUE4OThFM0E4RDJDMDFGMzA2QkVBMUJCNTBCQzRDNUYwQjcwMjFBNDM2RDZEMjQ5QUZCQ0FGMjY0NzEzQTRDMDJBNTFFNzg2NjcxREI0MDU1RjQ2MkI4Q0M1NzRENDY2OTcKKzkwMzIxMDZCCisxRUVGOUNEOTVBODI4MzJGQTExRDRFQTMzMUE4Cis4MUM0M0JFQzk0MjM4REI5M0JGNzNDQUQ5OTQyM0I3NENFRDVCOUI1NUJDMTVEQzE4NjFGMTYyQ0RGRTIxODlEQkVDRjgwNjlCREI3Q0JDMEM0MkFCOEMxRTA5M0VBQTNCODkxRTMwRUIxMUM4NkM3RkUzQ0Q4QkE3OTY2MkQwNDg3RDdCQkYyNDcwMzA0RjdDQzkyNkQ0RjhEQTlDMEE5Mjk1NjUyMjlDNjhCQ0MxRTlERkNCNUM1RUQyNzI1RTdGRTI3NEVGM0NGOEI4QzJEODE2RkQ4Q0NFQjBCCis4OTE3QUQ3RAorOTIyRTNBMTUxMThCRUYxMjJDODgzMTg4NTEKKzdFQjAyODlBNDdENjUwNzlDNjI0NUNGQjE1QjY3Q0ZEMDFCRUFFRERDRjE1NEFFMkE1MEEwRUY2MzVDOUYwNjIxN0Q4RTJDOENGQUZFQThBRUY5QzJDNkNBNkQ5Q0FCNTgwQzQyQjE1RTk4NkM5MEY4QkUxMTI1RTUxRUQ1NEUyNzdDMzU4NTdDN0E2Nzc2NjI4MEFEMTVCNUExMkU2NkI3RUQwODY3Nzg1ODEwQzU4MTcKKzg0QTBBNjkzCis1ODYzMzUwNzREQjg5RkUyMDMzMThGRTExMworQzJGRUUwQkUwRjg0MjRDNzlCNUQ4NDgzOTYxRjE2NkVBNEMzODYxQTdBNDM2MzM5MkNCN0ZCMjg4NkEwMjlFRDNGRDQxRTI4OTFERDNCMDg3Q0IxREVCNkQ1NzEwRUY4M0RBMjgwMDAzRjc2MkJBNjQxQjk4RjJFQkI4MTU2RkNBOEQ3OTU4MjcwRjRBREE5Q0RBQTA5NEYwNkQ2NEUxMkEzQzI4RTQzRjZGN0ZDNDZFNTExOTg5OAorNUIzNzIzQUYKKzQ3MTk4NEZEQTBBNEVCMzYxMDM2Mzg3NEY2MkYKKzZFN0U0REIxRjAzQTk4RDVGQzEwNUZDNjcyQzY0RjA4MkUyMzBCNUIyMzUwQjg1RjZDNDg2NTU0RTE5OEVGNUU0OEFBNjRCNEVGREQ4NTdGNEY0M0Q4NEQzMkZDQjU3RUJDQzNCNUUxNTQ0MEUzQjk5NzBEQTZBRDFEMkQyRjE3QzhDNjk0OEJDM0U2NkFEMDQ2NTg0ODA0NkExOTA0QkNBRDVFNDBFMURFRjY5MkQ0QjUzRjBBNzEwOTAyOTE0REU0Q0NCQjQ2NjUzQjg2RkE1OERCQjRCNDM0QjNGQUEwMERBMDc5QTcwMURCRTZBNENBRDJFNkI3RjdCRAorMzZBNAorODQ5NkFCOUQwQTNCNjM2QjNDREQ2NDVEMTNFQTJBOTA5NTQxMTQwQUUwOEQ3N0EzNkU3QzE1QTI5QTg5QUZCQzU2ODc5OTU0MEY2NEMwOTI2NzVCODQxODAxODlFNworOUE5OTkyOTYKKzQyMzY4QUY3N0NCODY5NzY4RTE4NjBCNDlBOUMKKzEwMDJFNEMzMjdGOUU4NEVBQzhCOEU2NTg5NzM0OEI3RUE2NTExNEEyQkM0RUQ0NDY5QUZGRUJCQ0YzRjkxOEI4QkM1NzZFRkNERUYwQTYyRUY0N0VDMjA3OTIzOEI4QkY3RjE0RUM5RkU4NTUyNzEzNTkwRjNDRUQ4NUMwRDU2OTQ2ODdBNTVFQUEzMzczRTE4OTdBMDc5NUQ2MkI3OEVDQTBFQjAwQTkwMjU4ODg0ODY4QUIxMkRGNTE1QzUyM0RDRDQ2QzU1OERFRTkxOEU4Qzg3ODk1MDFFCitDRTZEODdFRgorRDQxRUU2MUMzOEI1MUJBRUZBRjMxMjczQkQKKzhDMjJGMTI0QzhDRURBQjg1MjcwQTg4MDA0NUI5MzFGOTlERjAzODkxNjE3ODNCQzhBQUI0RDkzMzE0RUZBMzEzRjk0OEM4QTNBMDRGRDBFMDI0Qjg2Q0JFOTJBQ0FCOThDMEQ1NjczRkVERkI0NjlCMDFGMjU2MkU4NERGQkQ4OTREMTcwQTFDMzI0NjIwN0NBOTgwRURENzRFRkFDNjQKKzk0MEY1MTgyCis1Mzk5N0YwNjUyNjYxMDgyMEZGOEI1NkQxMQorNjFDQUYxNEQ5MEE3RjU3MzU1QjMwOTQwNjFBNUNGMjY2OTI1RDk1MDk4MTkzMDkwNjhBNDkzMERDODY4OTQzRDlFMkNBMEMyRkI0RTMyNTQ0OTFDMzExNjJCMTIyNzU5NTA3NzY0Rjk1RTlEOUNCRUQxMkQyNDhCOEQ5NjQ2NUU1QTY5MUM4MTEzNjA2RTIxM0MyMEYxNjhFNjFCQTFBMzIwODAwREQyNDlCNDQ3RDI2QzRENzE4MkRGMjNGOEJCM0YwMTA0Cis1RUUxRUE2RgorNEU5RjM3NjE4NTBDQUNCRUY3Mjg5QjA2RkFDMgorREUzM0QzQjEwNERBODVGODQ1NkExMDI5MDBBRkU2NzgzRDE3ODdCRTFGREEyNDEwQ0Q1NjE4MzkxRUYxM0M1RkExRkRCQzQ1NzNDQzA2QjZGMjE0NkVEODlCMjQyMTBCMzkxQzI5OTA4Q0QyRUUzNUYzMDY4NTc3NjNDQ0NBMTBGMUM2NERFQTVFRjk5N0ZBRDlGODgwMjAzOTc3QjRGRjdFQ0I0MkRDMDlEN0NDQjQwOUYxN0VFOTFFMzBCNDREMkUwQzJCMjNGNjgyRkJDNjYwODMxRDBDNjBCM0JDMEE5RTAwNERCMTFFRTA5OUVDRjdDNUJGNzI3RjdECisyMTExCisyODAzNzg5RDFCQTM4Q0VEMzQ2Q0Q4N0Q4M0M0NUYwQkVBRUYwM0RDQTg5OThCMUU3MkVEQjkzQzAwMkJCRTNGNTRFQkM4Cis0QjQ4N0YwNAorNzc2NzM5REU3RTFFNDcwNkRDOEE2QkE1NjgKK0UwNERCRjExMzE4RUMwOTE3RkM0Njc0NjczQTJFOEE2QzBDMUM5MzRBRTkwQzgzNjhCQTUxOTZFOTg1QzZDNzcxNDlERjRBQUExRjEyQUU3NDEwQUQ0RTA1MjgxQjA2MkQzNThDRDkwMEY2MworQTY2ODk2NjMKK0IzMENGMUU5OTAyRkZCRTEwNThDMEFDOEFEQzIKKzIwNkFCMzA2Qzc5NzRFRTNGMzI4NjIzODUwMzhFN0ZBRUIzQzc5NjJDMTRFMDI1NTNDMkU3NTVDQTIzMDkwRjcyMzI1MjVBMzBCQzRFRUEyOUFBMDBFNjI1NEU1OEM0REJGQzVDMzdEMjU2QTA1MTlFNkJBRTFEM0E0NUMwNkZBMjQ4MjhCMTgzREVGOTUwMTBCQkU4NDVEQ0JBOThDQTI5NUY3NzdFQUI3QzI1NTYxQTM1NEQ4QkYyMzcwMTJDQjY5MkFBRkU5MTREM0Q1NUJBM0E5NDcyQjA0NDU5RUNBRkM3RDA0RUQzRjE2RTM0Mzk4OUE3NUNFM0Q2NgorNUEyNAorRDE4RTcxMTFCQzdFOEQ4NkM1ODc3QTlERjA2NjJBRDVCNUQwMEVFODFGODQ5QTUwOTU3OTc2Q0ZBMUYyQUUKKzFCMjRBOTEwCiswNzJCQUZDRkU1NjM1NjJCRjBDM0Q0RTJCMjM1CitDQkEyOENBNUNCMDdGMjQ5NTBDNjBDOUNFQjFDQTAzQTVBOEY0ODJDMDQwMzJCREE3RkExNUFCODA4ODI2MzdFOEFGNTAzQzBGQ0Y0MzdBNjY4MjgxQUFGQTZCMTkyN0IxNDFFNDQ5M0MzMzFGNzJBQTQ4ODI2MDY4QTI0RDRBNTEyRDY1Qzc2RUQ2QjNEOEYzNDFFMEU2NEE1MzYzQzAxNTFDNjdEMERGODA1M0U1MDY1MDYzNzU1NTI5QzU1RjMwQzVCNjQyMDkzMzhDQ0FBQ0ExMzEzNTcKKzI2RTA1RDg5Cis2MDgxRTUwMEM2NkQxRkRCOEI3QjJENEVCRQorQjQ1RDY0RjkyMTIyRjdGM0FGQjA3MjI0QzJCQzNERDlGODlDRjU1NzdGRjhERDQwMDE1NzMwQTc0ODdGNTVBQTUyOEZDNDVBQjEzNkFFRUEzMUZEQjcxQjgyQzZCQTIwRERCOTQ2OUExREEzRjFBMUFBOTBDMTQ1MzQwODAyMTJDMzA2NzYzNUI5QUEKKzVGQzM5NjMwCitEMDVFQUI0NzJEQ0FGODQ5M0VFMDU1RDU3QjVECitDMDlDOTVDOTMwODY2NkNDNkZFMkU5MTE4RTFGMURCOEFCQTEyQjU1NzRFNjJBOUJCNDNENzQ0MDc3MEJFQkQzQThEMkVENzMyODY2M0VBMDAwNjMyMUZGMTUxQjlFNkUzRTZBQjk0QUE2OTIwMTc0NEE3QzNCMkFGODUwOTBCM0IxMDM0NEI3OERBMDU1MDFEMzBDNDc2NDBBMUE4RkQ1RjM1RjM2NDJGRjU2Nzc5QkM0OTQwQkMwNUQzN0NBOEE5NTNGMzE0MUM4NDYzQjlCMUYyRkQ5MTc5MDU0MEIyQzREMzNCRUUzMTk0MDAyCis1NTlDMTE0QQorMTg3RjhBMzZGRDk3QjI2MzQxMjYzRTI0RkY0QQorQTcyQUQ5MTFDM0VEQkQ4Q0Q1NjJBRTgxNzBDM0MxRDFBMkNFQkFGQUE2RjQzOTZCQjJGRjJCMjUwMEIyRjg2ODIxOUIwNTM5NDE2QzRGMTA5RjAwRDM0MTJERUJFNzM3MjA0MUM0RkE4Q0UxQkIzQ0FEOTlCQzQxMUQ0NkVEQTg1MDM5QTA3Q0E3MDk4M0EzQUEyMDFERkZDNDQ1QzdBQ0RFRUZFNDNDM0VCQTk2OTU0M0M4QUMzMzAxNjZDQkY3NzJENDYzMjFFMDAwNEREMEE3NDcKK0NFMDRENkVGCitDNUFDNzVBMkE1NTczNzE1RjgxNkQ1OTc4NworOUY3NjJCRjc2NEQ0MUNEODM2NUVERkEyNjFDNjREMTkyQ0M3OEVFNDQ0RjMzQkI0MTUwRTc5NjIyNDc3QUREQjE3OTRGQ0Q2QkI2MzM2QzRFRjk3RDZDNThCREY1OTI4RUEyNUIxQjhCRTI0NkM2RTJEMzMxNEFEMERCREE1MjVENDg0NDk5N0Q0NUZGNEU4MTE2MTRCODE0RjEzQUMxODJGMUY2NDgzRTdCMjY5CitCRDAxNkI4QgorNzNBQkJBMUE1RDQ1MjMxQzJFOTlCNkU4MDNBMAorQTk5Q0FCQThEOUQ3QjIwNUE1MTNBOERBNkZBMzY4QUY5REFFRTc0RkVBODYyRkVGQkYzRDgyQ0M3MkM3NkYwRTAwMkQ3NTgwQUM4MDNFNTE2MEQ4MjA4NjdERTg1Q0UxNzA5N0RDQUE2QkJDNTNENzJBNkM2Q0UxNjY3NzY2QTRBNUZENjE5NEM1NUFBNzMyMTgxNEMyNUY4MEI5RDdGNEE0M0RBRTc4MUNGMDlGM0RBNjQyMDkxQjkzQ0RFOUVGMzUyRjhBMjJBRTU1M0I1REVDMTNFRkZBRkI5RDJGRkUyOTFGNkEzNkU1NzY1REYzODkzMkNCOEQKK0UwQjJDODYyCiszNzY5NjZCQ0Y4MEQ5M0E1NDZEMTY2NjA5MAorMjc2QzAyMERBMjQ4RDMzNDhGODY3RTYyMDMwNjZGNUQ4N0NENTQ4OURFRjlCQzg0QjA5QUIyMzI3Rjk5NkM1RUNBNDA1MzhBMTQ0M0IzMkJCMTQwMTU3RERCNzk2NDBBMDk3Q0QwMDUxRkY5RTQ2NzEzQzFDMUI4RTgwNjAzNUJBMkFDM0Q5OTRCCisxNkU2REM0MworNjE3QjM4RUZDRDNFQjNCNEZENTU3Q0Q4NDcKKzcwNDc5MUVCODNFMzY2QzY4MEJGRUJDRjY5MzUwRjRCOEVEODFEMUQwRDVDNjBDQUVERTU4Q0Y2N0M3NTU0N0Q2QzVCMTMyRDlGMzYzNTIxNzJBNDYwNkEzNDEwODAxNTQwNkU5NUY0QzJGRjNCQkIyRjczNENERDhBODdFODUwMDZCNENCNzkxMjlCNUVEREVBQTFCQTEzMjk3M0MxNUQ4RDUxQUY5N0I0QkEzNUU0QUMyRUU1RjQ4RkQ0RDUxOUM4MTkKKzZEMUU4RTVGCiswNEFEMDMzNEYwQzlGRkUxMEJGMzBERTBDRgorNzJCQ0QzOUQxMDY1QzVDQjUyMDUzMEI4MTlDQ0YzQjlFNDYxOEEzRDEwMTM3QzZCRUZBODVDRUEzOEEzNDY1RTQ0QTM3ODVFNzg1NTg1ODRGNTBGRUQ1REMzMDJGMEQzQ0VBRTA4MEREMDkwRTU4MDFFQUI0ODcwQjA2NkFCNjBCNjFFM0NGNENEMzA5QUVGMzZEMEVCNjQxRDVEQTI5OUFFREU4NjI1MTQ0RUY1NzdGQQorODAyNTZDRTcKKzgzNjg2NDM5ODIyMkE4RkU0Qjg3MTdCQjRGRjcKKzc5QjYxNUE0MUM3N0ExOEQzRUJBRkFEMkQwMUQwRTM4RTM1MzAyQUFBNjZBQTNDQzI3MUU1NzRCRTBFMURBMkUyODA0RTc4ODk3MzM3NjY1ODEwRTc2MDlDMDlCRkVEMDY4OEEyOTE5RDZDNUJCQTkyRkY5RTIxNDc2NEU5NTlBQTI2NkY3ODlDMTU3Mzk2RjNFNDVEMDBGQUIxRjg4RkEzRUFGMjAyNTY1QjFGNkU4ODZFMDM3QzM2OEIzQUJFQzU5N0VDMzAwREJDN0M4MTFCNUNFNzBGMDdGODUzNTFCM0JCRTc0MzZERjZFQTQwOUFEMUU3NjM4NEYxMworNkQwQgorQkZFQkQ0NkY3REM4QTczQkU1NEM3REVBMzA5MgorMzMwNkU5NzAKKzk1MTc0NDlFOUNCMUZBQjI5MTkxOUUyOTJCM0IKKzU3RTFGN0E5OEJEMDZBNjM4NTE1QjU5MzRFMTgzQkYwRkNFNDg1RTAwQzU4MUQ4RUNFODFERENCRTcyQzMxQjYyRUUwM0RBMzVENzA1MDEzNTc4MTFDQTQ1MDJERDc1NDVGMkVDNzExNjRBRUQ2QkIyQjVFODEzNDBGMENDRDM1REQ4NjQ4RTEzREExNTEzODBGNTUwNkIwRUYyNDNDMTIzRDdBMDUwNEVCQjZDMEQyQUVENzFEODlDNTgwQzZGRTUxRDFCN0ZCMjM2MDdGRjkxMzRCODQ4MzNCMjlBN0RCMjNGRDI2MEJDMzhFQUZCRkUwOEUzRUI5NTM0QworQTYzOQorMzc5NUYwNEMwN0RBQ0M1N0EyREFDRDMzRDBBQzdDNUVBQURBMDE1QzJGMDNCMDE0MUYKK0MzRjU2M0QyCitDODM4REJFQzBGNzI3N0E5NTAxQkYyQkE4QkM3Cis1RDMwRTI2Q0IwOUJBM0EyNzFDNTdDQjc1RTgxOTFERTQ0N0I1RTRDQTFCNDBDMTI5RUJDQTQ4MUJBQURBQTRGQTMzQ0I2OTZDQ0Y5ODhEOTc1QjIxRjRBNjBFNTNENEY0QkEyMUVBNDFGN0YzRjBCQUU1M0UxQzQ3QTlGODlCQzZENDk1MjIzREQ1RDU3OTNGRUIyMDM4M0VDQUQ4RjU4RkUxNTEzNzU4RTJEOUZEOTQ2NTJBRjlENEYyRkYxOEE2MjBCNEJEOTg2OTI3RjYxNkM4NEU1RTNCQjcxNTU5Nzc3NUYzMEMwOEQwNjNCNDhBOTRBODNFODM4QUEKKzM1NkUKK0MyRDkwQTJECitFMkExQkQyRDdDRDgzMUY3NzMzNDhBODhDQworMzYxRkYwNkUwNEUyNDJGQjMxOTkxODE1NUIyNTczQTM3ODc1OUMxMzg5Q0U5MDM4NDk0QzQzQUM2QTcyNUFCRThFNjhGODRGMDJDQkIyMUQ2ODEwRTMyNkIxNTY4MDU2OTg1OUM4RjM4M0UxNDA5MThFOEI2QUZDMDgxMEY0CitDMjc0NkI3RAorMDk5Rjc5NzEwNTU0OUYxQTc3MUMxMDQxQjgKK0E1OUNBRjM3MkNGNThGNThBRDEzRDNCNjQ3MzNDMUEzM0RCQjE0QkE5RTM1Cis3MUVCRkJDRQorN0Q1NkRCMkEyRjZFNjNGNjhFNDdFNjc1NDMzNgorNDE2MjI3QTYwRThCNkY5RQorOEUzODRCQTkKKzUxNzFGMzk0MEJEMDZGNjI2MEREQ0JGNkJBMURBQjRGM0Q3QzA5QzNBM0I5OEM4NEQ0NjQ1Njg5MkMyOERBMDcyRjE0CitENTVFODMwNDNBMDI5RkI3REFBQ0Q0MDJBQ0NGQUY1NkY5RDhGQTgxN0NEMEY5NDM2QUVBNDUwQTFCRkYwMjQ3NjJBMTYxQzk5NzNGCitGMjIwQ0RFN0Q4OEYyMkU1MDU1NkE4NjU5QTkzMEU2OEU1MjI2MkJDMjIxNjJEQUM2QTdDRjIKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDQgcHV0CitkdXAgMyAvQzAwNDUgcHV0CitkdXAgNCAvQzAwNDYgcHV0CitkdXAgNSAvQzAwNDcgcHV0CitkdXAgNiAvQzAwNDggcHV0CitkdXAgNyAvQzAwNDkgcHV0CitkdXAgOCAvQzAwNTAgcHV0CitkdXAgOSAvQzAwNTMgcHV0CitkdXAgMTAgL0MwMDU0IHB1dAorZHVwIDExIC9DMDA1OCBwdXQKK2R1cCAxMiAvQzAwNjEgcHV0CitkdXAgMTMgL0MwMDY3IHB1dAorZHVwIDE0IC9DMDA2OSBwdXQKK2R1cCAxNSAvQzAwNzcgcHV0CitkdXAgMTYgL0MwMDc4IHB1dAorZHVwIDE3IC9DMDA4MyBwdXQKK2R1cCAxOCAvQzAwODQgcHV0CitkdXAgMTkgL0MwMDk1IHB1dAorZHVwIDIwIC9DMDA5NyBwdXQKK2R1cCAyMSAvQzAwOTggcHV0CitkdXAgMjIgL0MwMDk5IHB1dAorZHVwIDIzIC9DMDEwMCBwdXQKK2R1cCAyNCAvQzAxMDEgcHV0CitkdXAgMjUgL0MwMTAyIHB1dAorZHVwIDI2IC9DMDEwMyBwdXQKK2R1cCAyNyAvQzAxMDQgcHV0CitkdXAgMjggL0MwMTA1IHB1dAorZHVwIDI5IC9DMDEwNyBwdXQKK2R1cCAzMCAvQzAxMDggcHV0CitkdXAgMzEgL0MwMTA5IHB1dAorZHVwIDMyIC9DMDExMCBwdXQKK2R1cCAzMyAvQzAxMTEgcHV0CitkdXAgMzQgL0MwMTEyIHB1dAorZHVwIDM1IC9DMDExNCBwdXQKK2R1cCAzNiAvQzAxMTUgcHV0CitkdXAgMzcgL0MwMTE2IHB1dAorZHVwIDM4IC9DMDExNyBwdXQKK2R1cCAzOSAvQzAxMTggcHV0CitkdXAgNDAgL0MwMTE5IHB1dAorZHVwIDQxIC9DMDEyMSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIzNiA5MTkgNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjBFQTE1N0M2MjU4M0ZBQTAxOEYzNjlGMTBDMjY3RTVBNjg5CisxNEIzQ0YwNUQ3RTNFNzMwMUExRDExM0MKK0I4Nzk2OUIwQjdBMzNERkRFNQorNjEwNDFDOEEKKzc5RTBDNTVGMDc1MTk5MDMxMzcwNjEwNDMwCiswRDE5OTkzQzY2QTkwNEUwQTM5MzA5N0MzM0UyQjUzM0M3NTFCMDNEQjI5MkQzRjE2QTM3QUVFNjQwQjNDQjhGN0Q0N0YyRTQ0QjJBQkZCNEM4M0NGRTE3OTYyMjg5MDUxNkJFQzlFQzQxRTI4N0ZBQjE4RgorNDY3NTJBOTgKK0I1MjQxOTdGNzk3NDk0OThGMUI4MUI0OTlFCis1QjE3Mzc4NERGOERBOUU0NTNDRDA4MzlCMzNCQTBENjdFNjEzRkNCNDE2RUVFCis5QTUxREE0OQorNDY0NjYyMkYyMkIxMzQ3M0VCREY5NkEwREEKKzhBMzQ5MzIyRThEOTRDRDBFOTFDOTlFQTBDM0JDMDk0NjI4OTlDNkJEREU2MTg3NEJDREI1MDEwMUM0OUYxCitFMTc0M0REQgorQUEyOEVBNzVCRDU5NjIwNkI1QTQ2MzQwMDEKKzBEQkZDQzRENzMyNUY5Qzg5NDg0NzA4MkM5QTAzM0Q1M0Q1MzU5MTNBMkVFNTJGNUU1RDEKKzhCNzE5Nzg3CitDNzZDNEVDNzc1ODczQjM4QTk2NDNGRDA3RAorOEY2RTM3MjdGRjQ4MTE5MTc2NEFFMDYxQkU2QTAxQzY5QjQwOTZGMEYyOEQ2RDI0RTRCMUYxRkYzRTlGMkYxMTIzNDQyNzBEMEI5OTAzQkNDRUZGQjE5NjNFQzJDN0ZCODI0ODcyNzk5QTc1MTMwNTQyRUY0RTVGNkNDN0IzNDUzNzE3MDFFNkQyNUVEMTBERDRFQUUyREFEMzUwMzgKKzNEMDkzQzE5CitBQTk0M0M0ODM3OTcxRUExN0M1QTg4QUQ2RgorQkMyRTcwOTVBMDM0NDE1REFCQTk1NkVBNkU0QjgwRTI4NjY4NDAzNDQzOTQ0MEI1MkUzMzJFNUE3RTZEMzg4MDU2NDIyNzJBOTEyNzc5RDUxMjAyNEQyMUI2MUMwOEExRkQwNzQzREU1REM1RDE2NUU1M0JBMjIwCis5Q0YxNEYyQworNjhGQzVFNjcyNjdCMUE4MkExRkJBNTBDRUIKK0UyQkUyOEZEMTJBNzUxMDdENjcyNzJCMzVDNkRFMTNEQ0Q2QTQ2MjJDQUI2NTIxOEJDMTMwODVERjYwOTFFOEE0NjRBODY5M0E2RjIyNDY3ODVGNzA0OUFFQjdDRDZEQjUwRDE1NjYxNDVCQUE4QzcyRUZGMDYwRUU4NDc3OUE0QzEzNzU0NUIxOTUxN0Q0QzdEMzRFOEZGNzJDNUNGQTdFOTMyM0REMgorMzA3RjU4ODIKKzA1M0NGNEJBNDIzNEU1QUI5OThBMjk1MjhFCis0NUM0N0YwOTZENDM1MTE0QUU5NjkyNTczMUI0N0Y0M0NDOTAwOTBCOTY3ODAwRDEyNDEzNkMzOURGQTMzRTZCNUJBN0NBRDhCMEY0RjE5QjkzQjdCNTNENDJCQjBFQzU4OTcwNzM2N0NBMzYyMEZCNjRGMzQyMzRCQjlFRjIwQkZGOUYyRUEwNUVCM0UxNDdGREQ4MzQ3OEVCMTVEN0Y1N0U0NDE5NDExMEFGCitDNzBDNDIwQgorMzQ2MUVDODBERDYwNDQ5NzlBODU4RjFEOEIyNgorRTAzOEUxMUIyOTFCREMwQUY3NjE1QTg5RTVBOTU3NkUzRkVEMkMyRUM0MDE4QkY4N0Y0REJFMTg3QzhGRTk5MjNENDJERTUyRThBMDc5Qzg4MzA5MDkyQzQyNkYyMEVDM0Y0QzEyNzgwMjk5MDUxMDQxM0IxN0UyMTVCRDA3MUI1MDc5MDZGRUNEMDRCODU3MDM2QTNDRDI5QzI5QTlBN0YwREJCNzVDMzc1QjYzMDQ0RjdEM0Y4Q0Y0OERGRDU3ODgxQkNBMzMKK0Q5NEEzN0RCCitBNkY3QTgzNkZGNjI0NThCOEYxNDE3NzVFRAorN0RBNzQ3MzRGQjNDNEE1M0JDRjkzNUVBNkU0MkQ2QjY2NDFBMEFGNDNBOUVBQkQwNjZGNDczMUJBOUUzQkIyNDU5NkQ0NjlERjg5REQ4MDk5RkI5NzZFN0VDRjMyRkRDM0Q2NUE3MEY4QTIyCitGNDE3MEU3QgorNUJCMTM4RjNDMjVDMEUwRjQ2RTFGNUFDMDQKKzdBODIwNEY0OTg2QTUwQ0EzMTE2QzA3Qzg4QkRCNEZDQUVDNjlBQjFCRDYyNEM0MzAwNURDQUE5QUU3NEM5N0Y2Q0E0RUJGMworMjVFMTcyMEEKKzNEODUxMzRGODNDQUY1RTQ1RTU2NkE1MjNEMzMKKzZDODUyM0FBNzU0M0RDMDIzQzUzNDVCQUExNjg3MUE4NkZEMUJENTAzQzJENTM4QUI1OUM2MjBENzJFODMxQ0UyM0U0MzAwMUE3NEVEOEQwOEI3N0Y1NjMyN0Q0NTQ1NTVGRDQ5Qjk1Qjk4M0RBRUU5OTk0RjQ3RUUxNjAwQzczNkYyODkzOUU4QzJFMEQwMUI0NEQzNDYxMDhBNTQ1QjRBQ0RGRDE3MkVBMjMzMDZFMDNGNzk5NDc5RjM3ODVFRDYxODhGRDBEQkJCRTI2QUQKKzZFMDJGNzlBCis5NjlDNzY2NDM5NTM5RkU5OTMyQ0FCM0RCRUFCCitBQTIyNDZFQTRGMjdBMDlDRkRBQUNBNTI1RkIxMkM2RUZDMDMzMTg5QURFNTk1MTcxMjFDRUNGNjRDRDc5N0M3RDM3MDJEQ0Q3RjI3RTQ0NkUwNDdENEQ4MTgzMEI5ODE5OEI1M0YxQjE2M0ZFNzkwNzRGQjJBQzMwRURFQ0U2Q0E3MkQzQ0NDOEFCODcxQkQ5NUU2NENGQzRFQjIxNUM2Njg1MjJBNEQ3M0IwOTJFRUE2ODNFRkY1QkM3RDRBMzk4QjM0MkNENkEzN0QyMkUwQ0I5MkMxREE5NzI5Cis1NkVENjMxNgorOEMzRjQyRUI2QkRFRDdDNzJFRURFQTA4OTdCNAorRjhERjYzMTBEN0FEN0Q0NjkzRTdFNTY5NjJFNkRFMzRDMUNFMDM3RTFFRkExQTg0Qjc0MUI0RTNDNTYxMUIxRDY5NUI2MkMyODFBQUEyOEI4MkM5OUZFMjYyODk4MjY2RTkyOTk3Mzg4NTc5NTdFOUYyMTQ3ODU5QTlBQ0U5NUNFOTlCN0Y5RUJDMTI2MzIxRDU3OTFFRUQxNDRCMUMyNDUyQjc0Qjg2NDMzQjE0MkU2RTM2RUEyOEE2MzUyRjhGQjk4NzAyODdGNENDQjYwQTlGQTkyQzIyMjAKKzVBMEJBOTZDCis5RkY5MzRDQTgwNkVBNUQ1N0I5REM5NzMzMQorOUM0NzMwRTU5RjYzQzBBQkREQjg0Q0MwM0VENTgwREIzRjlBRTZFMDdBQ0RFQzVBQUU1OUJEMDEwMEM2RUM0NzM3NkEzRTg4RTZBNTlDRTU2OUJCRjY0NjlGNUVERkJCNTdFRkZDQjJFMDA1MzE3NjI5QkJGREQ3Qzg4OUE0N0Y1QzA3RkU3RkVGRjYxNzIxQUM2RTcyRjZFNzg0OTJFN0Q3NzMxQ0I3NjI2QTYyRjNEMDA1Q0NCMjQ2NTkxMworMjlGMEZENDcKKzVEMDI0QjgxRDk4MzIyNEY1NzkwQkYwMjBEODkKKzUwNkNEMTI3Q0M5MDA4NDg4ODhCRTBGOUEyRjkyOTAxOEE1QTZFQTU0N0U1QzZBMjFEOEVGNjZBQzExMkVBMDYxRDg4RUU1QjMzMUFGMTVGMTFBQ0I1OEM2NDU0NDMzMUIzNzY1M0NFNUNGNzI1RTZCOUNGNDhDNDE5QTQ0M0YyMjExNzhEOTZEOTU1NDRDNDYwMjM1MkY1RkJDNTVFMEVDMDExMENCQTBDODgwQkZEMDk2OUI0NjI1NjE3Q0NBNDY0MDVGN0NBQjQ5QThFMDk0ODk3NEE3MTk2RjI4OTIwQTk0QkYwNjRBNDA1ODJCNkY0QzQ1MzQ5N0QxQworNzYzOQorRkZGNTZEREEKKzdCMkQ4OEQwRjYwMDEwODIyOUIxRTNCNTQzCis3OTY0RTI0MzhGMUJGODFBQ0UxQTJERThCOTIwMTE1ODA3RDQ4OUI3RTNDNjRDMTY1REZBM0NDRDM0MUQ2NUU4QzQ5RjQ1MUFGOEQ2MkM4QkJFQjUxNEQ3NkEwMjQzNzQyMEFFN0U2QzEzOTZDRDQ0MzEyQUNCQTkzNEQ3QzdFRTdBMDBEN0Q4MjBBMzQ4QThCMAorQzI1MzQwMUMKKzg2NTBERkY4Mjk3RUQ0Rjc4RThFQjM0OUNECitCRTE5MTlDQ0I3N0I5NzEyOTIwRkVGRkZGNTE3RjFFMDY1ODNEOTNCREQwMworQTNGMEE3QTkKK0ZEREM1MjVERjAyNThCMzQwQTJGNTREQUE3QjUKKzRGOUUxODE0ODYyRUMzQ0ExNjI3QjM5QTlENTRENjI1NTNGMTdGQTgyQ0ZBQ0NFNUU4M0FBNDlGMTZDNTRCQzc0NzhCQUNDMzYwRkFCNDkyMzkyQ0UzNDQxM0QxNkE1NjYxMjJERjkxM0E0MTg2ODE2QjVENkIzMTkyODZFOTgwQjIyRDc1Nzk0OTQ1OEQzNjZBOTUzMDFDN0M4ODREM0E1RTk0QjRCRUE0Nzc4NjYxM0YxNjJEMzI3QjI1NjUwQkZEMTE4QTIwOEU2RDRBQkZDNUM0Q0VBMUQwMzY3MkQyQ0VDRUMyMDY1MjJBM0U3QTBDQzk4Mjg1RjA5NgorNUIyNgorMDU0OTI0MTIKK0Y3RTE2NjFDCis0RTU3Rjc2QjdBRjc1MTI3NkVGOEM4NjY5RQorQjJERTg0QjcyQUEzNTkwMENEQjBGMjdEMEMxQTNFQzVERjFDMUMzNTE4N0IxQkY5NkQ0MzE0QkIzMEREQUM3QzdCRkI4Q0NCMUQwRjgzRjY5NUJFMjU3NjMwRTgzNzQxMDk0NjVGRjdDNjMyMzhGRjEyQzg4RTJCODBBMjg1NTAzREVEQTdBODE2NDJBOUQ5OUQ1NjdBN0M0MjFGRDAyNDQxRUU4Mzc0OTYzMEE2QzU4OEU3NTVEMkQxMjIKKzc0Q0E4MEE1Cis0NzQ0NjBENkM4RkFBRjhENUIwMzI2MjlDOAorNTcyNENDMUJEMDA5QkY4NTUyREYyQjAxMEYxMUY1NDAxNTdBRjdEODQxODBDQ0I4MkE4QTZEQUFCNUYxQUJFMTNDMzdENTNDODdFQUQ2RDAwQzI0MzNGNTc3MjQxODU4RjVBMTM0MzE0RjU5QjM3RDY3QTNGRDBBRTFFQ0EzQTdBNkY3Mjg4NTMyRTZGQUQxMTBDRUU5QjgyQUVGNkVERUI5MjUKK0JEMkI3Njk1Cis2OTI4NUQxODRERUZFNEY0NzA2MUU0NkZFN0IyCis0MjZBMDlEMzJGRUJFRjVDQTMwNzcyQjAxMzJCOEMzNDhFRTAyODg5MTNENjg0RDY1REQyNUNBNEEzNDA0QjI5N0RDNjlGNkE2NzQwNjM0RkU1NzlEQkU2QkRFQ0NCODM3MEQ1MUMwNEFCRDY5NTcwNUE3QTFFMUNENDk3NTJBMjBDOTc1NjQ1MjlCMDc4RDUyRjc1OUQzNTVFRDFCQzI0RTA1OTdCQ0Y2QjMxNzNBNUYzNzYyQTkwMjE1OEY5Mzc0MEVDMEFBNDRFQjA4QkJGNEE3NTc3MDAKKzIxQzFFM0FCCiszN0FCMTBEMzk1QUI5MDVBQkJGNjI3MzUzNworOUFDRjMzMDk3RTgyQUREMEE0NDU0REM2OTA1OEQ3RjczQjYwMDg5MEI5N0FFM0UyNTI5NDNDNjZGOTcwMUVDRjZDQzQ3QTM3N0FBQzZBMzEzQ0QyRDkwNDVFM0JEOTg3RTA5NzdGQ0NGNkQ5QTM0Q0Q4ODk2MkU5QzZGNzUwNzFDMkEzRjc1MTRFQzQ4NkM4QzJBOEJDRUMxQzdFNkFCNzJGOUJBN0E1Q0Q2NTQ1NDExODc1NDU0NgorMEM0NUEwNjkKKzRDNkI0MTlDNDlDOTQzMkYyQzFDQzJDNUQ2CitBREIzNTRCMDc4M0QwMkNDNTk5QjlFNkU1MURBQzRBQjgyOEExMDI2RTJDRTAyODlFN0FBMkQwRjQzNDUyMTczODAwNTBERjczNEY1NjFEOUQwNTRFNDRFOTBBN0RGMkU5MDBCNUU3RjQ1MzBBMjg5NDM3MkIxMEU2REVBODA1QUNDM0VEQkRBOURGOEJFOEUwNzhDNEMyNUYxMzhFRjU0NEQxRDU5MEI1QUY2RDMwRjlGRDBFM0U5MTIKKzI2OENERkFFCisyMjRGQkFFRTYyOEFFNDUxNURENkUzRjVBMjU5CitCMENDMTI5QjlGNUFFODkwNEE4NDJENzE3M0EyMkYwRDg2OEQ0NDhDQkEyNzQ0NDZEODg1RUM1QTE1Nzk3RkE2ODA4NDEzMTkyQjc5MDFGRDVBRjY3MEQ5RjVDQ0QxMUZBMDg5RjUwNzRBOTI0QTVDMjA3OURGODNCOEIwQzk2MUY1MUQ0MkE4RkRCMjlEOUJGODcwQUVGNjIwQjAyNkM2QkJCNjM1N0JGMzZFRjYyMjJCRDQwQ0JDQTNCOUNGNDM2NkY5MTAzRjdDQzQ4NEYzMjFDM0RGMEYzOEFGQzcyODQ1M0M3OUUwQzRCNzcyNkVDRkIxNEFCMjA1QjcKK0E4MzEKK0ZENDBEQUMyMjU1NTcxOUVGMkZCMTk2MzU0RURBMEVGMUU1MTBEQkMzMTE4MEVFMUYwQzNDQkRBMjQzMzQ1MENBNkQwNkNCMkVCCis2NDFFNTk1MQorM0VGODk1MDQ5MTkwRjlGRkY4MzlERUVCNzI4QworQzVCMzVGODBCQkFGRjBDNzNFQ0U0REQ3MDJDRTkxODFGNDZFOEI4MEVGQ0IzMTBCMzM5QzMxNzc4MEFEODQxNjQ0NThGQjAyNzZFMUJDRjNDNDNCQzg5MzgxOTE1QzMwOTEyOTA0MDk3RjhBMjFBMEEwRTgzMENGMTMxMDgyQjYxODMwMUJDMzM3ODY5MDRBMjg2Q0MyOTA3QjY5NDJCM0FCRjZBOTE0MDFGRUZDMUQyRjNFMjA3Qjg4REY2RDFCNDkwOTk5Rjc2RjU2Q0I1OQorMjVEMzBENzgKKzc4M0JERDUyRTE2NDhDQjkxQTM4OEYxN0ZCCis5Qzg4OTVCNEY1NjREQjBDNjg4RkI3MzY4RjFFNkQxQzFGQTcyNjgwNjZDMkI3RjMxQUE0MEYwMDRCM0VENzIzMzg1MTZEODlEQ0Q3NUFBQzcyREYyODA1NEFENzVEMUI1NTE1NzZEMUFGOUM1OTQ0RjgyQ0MyMjM5NUZENThBMEExRTJDMjkyOTYwRDVBQkFBMzlEMTFDMjU0MkIKKzdEMjgxREE4CisxRTVCNDFBRUVCOEFFQ0I5OEZGMTg1QUZGMUFCCis0MDUwMDRDQUEzRkZEQUI2QkU1MTY2MDBCQUUyMDlCMUNERDk4MjgzOENFMzIyRDg0N0ZDNTg3Rjg2OTk2MjQ0QjAxODBEMDQ0NkVBQ0ZDNzI2QURBRkQ3NUM0RDU2REI4RjVFNDBFRkY5QkU1QkE0OEYzN0UzNUNBQzIyRjYxMDg3NkU3NTY1NzJDQTgyMzMzRjREMDlCRjRBQTNDRDQ1ODU2MDY5MkE5QkRGNzM3MjJBNzlEQTc0RUY5RDM2NTM1Qjg3M0Q4QTkzMkYwMjQxODJFMTNGNjI2MThBQjJENkREMjlBRjY2RjA4ODk5NDlCMEE1N0Y0ODY4MTgKK0Y0RjAKK0QxQjEKK0M5MUFCNTM1CitBMjNGNTlGOTNBQUZGNTgzRjNCMzIwM0RGRAorNjVENTgwQzhDRDc0MUZBNjczMkNCMEU1NTEwRTQ2NjU0MTgyQzFCRTFEMDZFNkY3RkM5NTI1RjcxQ0NFNkY1NDJFODg4NkY4Qzc2NzQ0RjFDODcwN0VGNkU1QTkzQ0Q0MURCREJDMDcKKzUwNjAxRDlGCiszMzkwMDM3QTVGQ0VBQTkxRkJFNkFEODkxOTM3Cis2RTAzMDA5RjY2Mjg5QUJBQjI0MTk4RDI0RTE2MUM3NDgzMUMxQkNCOUU3MDg1QzM5NEE0NDFEODdDQjI5MkMzMUM1NDJFMDVFMkFBRDM2NDI4RTZEMDhBMDVDODVGQTIwQ0QwODQ1OTYxMEI3QzAzQTlDMENFMjdGOTI5M0M5Q0Y1Q0JEMjQ4QkI2NkFFODZBMkZBMEU5OTdBODgwMzQ3RDkzNzAwODNFMEIyRDUwOUI0Rjk3QkQ0OUZDRjY0MDBGQzQzQ0QxMDU1NkZEOEI2RkZEMjlGQTI4MkNDRUUwNkQ1N0REQTVBRDBERTc0QzBGNjA5NjZENjZCNDkKK0NDNEIKKzNENzIzMUFDODA0NzY4OTJCNzVBNUQwOTA2RDUxMjFBNjhCMjFDRkNGRjk2MDA1RjlDNkJDMDAzCitFRUJBMUNCNgorMEM2RDhFMjgxMjQ3MUVCODM1NjFCREYwRUQ4NAorQzlBNTczNTNDNURGQ0UxQjY5RDgzN0VGOThERkZERjI5RkEyNTY2RUZGM0JBQzQ5MTk4QjNGQzIzNzM1RTU2RDNFRTBCNTZCNTVGNkI2NDc5RTg1QzAzQzMzNjYxMUEyQkI3RkFERDIwRjlEOTVFN0UwNTBBQjE0QkY4MzI3NkNBNzQ4NUI0NEIxQzU2MTEyNzlDNEI1OEE5OUJFMTkyNUIwOUU3NjBEM0YzN0FBNTREQzI4NDQ2QTM5QUFFQzVEN0U2ODExODE3NzhFNzAKK0FDNDI3Mjc5CiszNjE3RDVCNzBFQThGODYzRjFBNzZENzc3NQorMTYyRDA0Mzg1NEI1NDVDMzhBMzk1MDVGNEU0MTU3MENDMjI0QkQ3M0Y4RDc0OUQ4NTZBQzFBN0JGQzg5NTM3NUZGMDlBOTBENTQ0MDVCOTkzOEU0ODQ2NjU4QzE5MjJCNkFFQTEyMTUzOUQ0ODYyMDUxNTgzRTQ0RTUzN0MxOUI3QUQ2NjM3ODAwQkEKKzkwMjM4QUE4Cis4MzUwRERBMEFCNjVGOEFEQzYxOTNFMkYxNDM4CitGRjJDOThDRjEwOTVCNDlGQzg2QjIxMDQ1NjA4NDcyODhBMUUxOUZCNkZBNzI3QUY3NUE2RDNGNTgyODY1OEZCREE5MDNFMzc5QUNCMTlCRUQ2MzNDQTkwODlFOUMyQzcxODVEOUNBMzE0QUE5Q0EzODQyNUM4MTM1Q0U0QjIxRTEwRkY3NTg1MjA5MTJFOUY4MEYxMUM2RUI0MENDNTgwMUI1N0FBN0M2NzUzM0M1OERDOTNGODQ3NDgyMkRGRTI4NTc5MDgxQzg1MzE4RkNDQkZERjNEQjBFN0Y3MkNEN0YwCitGNjc1QThFMQorNTFCQkQxNjZGMDgzMjM3MEYyQzRGRDU3QjAKKzg5MUZCQTJFRDhEMzc1QkMyNTNGNDUyRjYzNDIxQTQ5RjdDMjdGMTgwQjU5RDgyNTYzMDZCRTYxNTVGOUZGNEI2ODVCNzY0NUNGQTVGRTA5MjNGMjMyRjVCQzdDMjA3OEQ5MEZFRDlFOUFDQjZCRUQ0MDMwQzIxOTY3QTQ3NjkxNDkzODJBOTdBNUU3REU5Mjc2OTAzQTU3RUJDQTQ3QjY1ODVERURDRjI2OEUzQ0I5MzgKK0Y3ODAyNEM0Cis5MzI3MjQ5N0E0REIzQTM0OEI0REU3MTcyN0JCCis2OUQxOUJCNDYyMTBFRDY1N0Y5QkIwQjE3MkY4MjMzOTUyQzg5QkNDNzcyQ0UyRUZFODhGOTA0NzBEQjY3QjNCOTBCQjgzOEYzNDZCNEM2QzgxQjRCN0IxRTQ4QkM4RDUyQzY3NDAzMDNBN0Y4NUNDQTZEMzVCQUY2NzE5QTg3MEIzRUQ3NzQ0MjZDQkUyNEM3NUZFNUJCODcwMTM1NzJCRDZCQUY0MjI5MUYzMDFBN0Y0QUUyOTM0RDIzOTYwQTQzQzc4Mjk3OTdGQzVGQUE4Q0VDMkU0RjhBNDUwMjIxMDk2REExQURCMTk0MzYxRDAwRgorRjJGMTUwOTkKKzZFMDU5NEFFREFGNDlEMjA0M0ZDNUVENjBBCitGNkIyNzY3MTlDQTk2NzhBRUZDM0UxRjFDRUNFQjcyNzU3RENDQ0NFNTRGRDU0MjlCMjBFNzBCRjRENDdFM0QzOUU3QjJCNzU2NTRBNkY1REMyRkZBOThFMTE0QTFDMUI0MUY1MEQwREE4QTMwMzY2Q0ZCMDgxNERGRDM2NDFENEM1NkNFRUU1CitGRUVEQjNEOQorODU2NTJBMUI1RTQzQjlBNTI3NEE3OURBODAKKzYyQjAyNzQ0NEUwMjJEMTdFQ0E2MkMzOUQ2NDg2MTY0NTc5MzhEM0Q3N0Q0M0FBMkU1QTcxOTA5NEZBOERBMTJCN0QxMDA2RjIzRjU1Q0YwNjczRjEwNUIyQTBEMEVDMTg3NDlDMzg0RDNDNEE1MDJGN0IzM0YxRTVBRTFBOTUwNkFEMjBFQTFDQUJDOTVGMjk5QzY3MEMxM0I4OEVEN0QxNjI2MkUwODU0QTFENkVBMjE0NkE1CiswNzlFQjE2OQorOTFEMEU3NjdBN0U3MkIxQUJDMjdGMjZBNUEKKzMzODkzOThDNzY1RkFCRTBCNzAzNzJEN0IzRjlEQTU5RjNCODMzNjExOEU0RUM2NEU0N0JDRkQ3OUQyMUU3MDgwMEM1ODEzN0IzNkU2Q0JDMDdFOTRBRDgyNEE1OTMzQjM2MDU1MjI1MUE5QjhDREY3ODE1QUFFRTU2RDY3OTNBNzQ0OTVBNzYwQjIxQzA2MkE2QzQwRDg5QUIwQzA2RTFGQ0ZBMEI2MTY2NkZGNDFBQjlBQUMyRjYKKzlCQkQyRkY0CitDN0VGQTIyOTczNEI3RjEwOUFBQjdDRDc3RUVECitEQ0Y1RDVGQ0M0QzcwQTNCNTE4MEU4NkFBMjQ3RERGRjk2MzYwRDEyMDBBQ0Q1QzlBODNDOTcxOEIyN0I4QUZFMTY0NUU4MDMyNTEwRTk5RUUzRjlGQUFBQjk4MjU5N0UzNDU2MjNDMjFCNDREOEJENjZDQkE4RTBDN0E1OUUzMEIyREQ1NTJEQzgwRDBDRjE0Qjk2OTI1MjQ1ODM4ODhCMzRGRThFNkNCQTQyRDZCOTY0NzU4RDQ1QjIxQjM3OTg0QTIyMkRBNjMwQ0UxMkY0NjJGRDFBRTVGQjM0REE1M0UzQTRDQjVFMTc2OERGOTBEMDZCOTg0RTM4RDMKKzI1QjgKKzc1NzhCMkYxQUYzNTE2QUZDMkMxNDcKK0Y0MjEzQjU1CitDMTIxODM2RjZCRTg2RTA0RUM5REUzQkYwRjlGCiszMUQ3OTA5NTcyRDJERUIzRDBCQkJGN0M3NzIwQTU2OTYzOUVFMzdENTI1RjkzMUI1RkM3NDI3ODVDMUUxRkNGRTNCOTcxQ0VEMkI0MThERjVFM0VFNzhERUY1MUVBNzI1MjM5RERCMUIzRDREOTJDQTQ1ODQwNjYyODNDMjg0MkQ1Mzk3NEE5NjRDNDIzOTI5NDgzRkQ1MzA2MTZENDcxNzM3OEFENDUyQ0I0MjBDQ0QzNzhGQjJFMzI2MUM5MUEwRjNCRjFGQzk3MTlCQjI2NzA2MzM3NDU5MEIyMjE2RkNFQUVBQzY1RDY2QkM5NTgzMTFBMkE5MDNFNzkKKzgzQTYKK0QxCitBQTVCRjU5MworNDk5Qzg3RkI0NjJFRThGRjM1OEQxRTE2ODU0MworNDgwQTM5QTU4NkVBRUQzMQorOThENjhBQkQKKzQwM0JGM0UyMTE2MDlENUY0QkQ0MDJGN0I5OUYzNTRERUQ2RUNBQ0U5M0Q0QjAwNDQ5RkNDM0U3RDQxOEQ4MzlCQTU5CitEMzczQzEyMjFGRkJDMDExOTlDNTY3OURFNUM2N0M0Q0QwREIyRDFDNjQwNTQxNkE5ODlGQThFQTc0Q0Y5QzFBREFFMjBEMUQ3NEMzCitDMTE3QjAwNkU1RDFCQzMyMkE3QkFFMDc5OUVCREYyNkE4RTJDNkE1MjdEMzBENEM4NkVBQTcKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGkKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hpCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoaSBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwNDYgcHV0CitkdXAgMiAvQzAwNDcgcHV0CitkdXAgMyAvQzAwOTkgcHV0CitkdXAgNCAvQzAxMDAgcHV0CitkdXAgNSAvQzAxMDEgcHV0CitkdXAgNiAvQzAxMDIgcHV0CitkdXAgNyAvQzAxMDUgcHV0CitkdXAgOCAvQzAxMTAgcHV0CitkdXAgOSAvQzAxMTEgcHV0CitkdXAgMTAgL0MwMTE0IHB1dAorZHVwIDExIC9DMDExNSBwdXQKK2R1cCAxMiAvQzAxMTYgcHV0CitkdXAgMTMgL0MwMTE4IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0xMzYgLTIyOCA1MTMgNzI0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjVENDVCMTEyOTMxMkQxMDBDMzhFMzhDOUJBNDlBMTY2MkFECitERTUwNjZCNDgzQTM1QUM3NkRBRTI5MTlENQorRkVDQTA3MzhDMTI5M0U5MkJCNzdDRUNDODJFN0YyOUJENEYyRjExMkVCNTg3NDFFNTM4RTVGQTk1QUQ5NjkKK0U3QjFFNTU4CisxNDlDMkU0RUE5QTE1MDc2MEU3RTE1RDVFQgorNDg2Q0Q4M0Q0QzZCMjQ5QTBFNUY5QTdGNDdBQkUyMjg1NEMyNTlCMkE4NzIwRjk1QjkKKzg1OUI4OTVECiswOTY1QzY4MEQ2NUM1QkM3Q0M3NzJDQjU3NAorMjEwNEFBRjc3N0IxQTAxMjZGN0JFNzY4NDdFMTQ5MkE0RUM5QTk3N0Q3OURGMTM2NkY3RDkxMTQ5MTY3OTFFNDZFMjc1QTYyQzkwNDk3NzI0OEM4QUE2RkIwMjU2QzAwOTYwMDMwQ0Y5MjlEODMwOUQ2NTg5RDg1MUQ4ODZCMEE5MEFBN0Q4MTU4NUNEQkQxQ0MxQjcyQjg1OEQyQjdCMjNDNkM2ODZEOTU4Q0E5OUE4ODgzMEY4OUE4RkYzMEE1Cis3OEYyQzA4OQorMzEzNTQwOTkwRkZGMTU1QTUzRkUzNTlBRUUwNgorMjMyREE3RUJCMTUxNjA1NEU1OEE1OUU1MTVGREI4RThGOEY1NEJDMjk4MDA1RUJBODQwRTFFNEM0QTM0REMzRUY3NDlBOUI3ODdFNzQzRUVEMEEyQTYyOEQ0OTc0RkZDQkYwQzdEMkREREQzREE3ODI4MzY4MEVEMTQ0QTk0NDQ2NEVCRTBDOTA5QjZGQ0I2NTUwMEE5MkRDNDZDQ0Y4MjlDQTkxM0I2QUU4NDc5NTE4MzlBNjI5MkI1NDA4QTBDNjE1RUI5MjMyQTIwOUUzMjM1MzBDQzhEQkRGMTQzNUExRTMwRDVGMDNBRDE5Q0REODY5MTAwRDZGNUU5CitGNjE3CitEM0U1RTAwOTE0MzIzNDVFMUFDM0E5QkNDN0I5OERFQTRFOTE0MkIwOUYyRDhCMEZBREY1QzlDQzFCMTY5QjA0NkUwMkY1RTQyRkY2RDRGNDU0REY4N0FENkM0N0YyQzQKK0ZFOTJGNzFCCis2QkE4Q0UyQzdCRDY2MjZFNkI0MjUyNDdDQzA4CisxMjdDNjBCOUM0RjNCNEIzM0Y3ODc3RUNDQ0VFQUI0MjY0RkVDOTY2QkRENTRCNzRBMjhFNjdDQUU5RjRCRTBBMTc3MzdDRDY4MzI5ODgzRDRCNDBERjlDQjVBMzZCNDgzOTkxQTU4ODBBN0VENjEwRDM4NzM2QkM5QjQ4OEQzREYxNUY2QzJFMERDQzMwRDc3MDQ5NzMwMEQ5MkY4RUFCNUVCQUVCOEM5MUE4QjkzNUY5OUJDQjIxMEE1MUUwODBFRkM4MzM1REM4Cis1MDY1Njg3MQorRDJDODJBQ0M3NTBGMzRFQTJFMDFFODE1MjREQQorRDM3NTk5QzMxQ0I0MEJEQjNDODI0NkNBMEU4REY0MTc5NEE1REIwMUNENUNCQTM0NDNEMjg5NjFDRjU5MUMxQjM2MDY5OTY0NTNFOEI4RTE4MkRBMTRBRDIwNTUxODY0NjEzOURGODlDQTRDRjZDQjEyNkQ5NTY4NDhGMDRDNzc3NDc2QTM4OTQyODBBMjE4NEU2QzY4MUNGNUQ5Qjk0QUIwRTU0OURCQkQ1OTJENDA3ODU3RkQ3RDg2Rjg2RDZFRjA2NTM5M0JDNURCMjIzQzA2QkQzMTg3OUNDMUMyODdCNDlGRDhDN0I3NUU1QzlBOTFGM0Y4QkM4RUU0Cis1RDM0CitDQzk1MDg2MQorRjJBQTIzNzkKKzU4Rjk3NUUzMDc4RjQwMzhFRjUxNTM4NURFQzAKK0YzRUM3QUE4QzIzOTJEMUI4RjRBRkYwQzk1QzZFNjhDQTVERTFDNjgzMzA2Qzk3QUY2NzgwQTdCMzlBMkU2RTRGMzcwMDQyMUYyQUNDMjZCODIxNjNFODA5RjE2OUQ2REQyNTVCMkI3RDI5Q0MzMzI2QjlGREJBNTZGNjg4RkY2Mzc0MjBGRkI4Rjg5RkUzNUQ4MjkwNTk0ODgyMThEQTI5OTVGMTQwQzBBMUYyMTgyMzg0QTIyRkMzOTRBODIyNDVBQkVENjFEOTZCODk2NTI4NTkxOUY5RkY4M0EzMjIxOUYzRDRGNzlBQTA1ODBCOUVCCis4RjgxNUQzMworQUE3RkIzQTUzOTJGNkFEMzYwMzFGNkYzN0Q5NworOEQ3Rjg1QzkzOTk3MzlEN0IxNEU3QTQwMTQxOUM3MzExRTdCREJCNzgzNzQyQ0M3NEU4RTQyM0E5NzlGMTVDODA4NEIwMThCMUUxMTEyREJGMjAyOTlGRTg1NTIwNDBDNDBFNEEzMUQwQjE3OUMxNkFENUFCMzY5REU5RkI2QkU1OEM3NzNCRTIyRjk5REI1MzJDNjYxQjc2NTZFNjE1QzIyRUQxMjRDMjlEM0EwRjEyQTI0NjhGMDUwMDUxQzg1NUZENDlFRDQ0MzFFMzgzODFBRDI1NUIzMkY2OTM5MkI2RDMwNzY2NzUxQTBDOTYyMEI4NDJFNUFCQjFGCiswMzM4CiszNDVDNkI2OTlCQkI4NTg2MDc3MzQ0NzFCOTFDMkQxRDcxQzM2OEQ5M0M1ODQ1RkZCQQorQThBQkYyRTEKKzVGNjE2NDZEODMyNDlDRjg3RjQwNkMyMkVDCiswMkNFNjRDRTExNTZFMUEzNURDREU4RTc1NDM2REI5QjY2NjBBOTYzQTc2RUJBREQ4Q0UwQjcyQUQxMzZDODcxNkJBMjcyNkFFNkRDQUIwNkE0RDM4NUVGQzAxMTNBQkUyQkI0RUUwMjg0MDQ0RDI2NDZCQTczMENENzYyRTIwOEM4REVEQkVGMjA0QkIwRDNCMEE4QzQyM0IwODc1MzJBNDhCMEU4RUIxMDM0QjJDRUQ0OTk2RTAzMUNDRUQ1Cis1OUI1MDdBRQorQjc4MDhBRUQ1MTQwRjI5NjlBREMwRDQzMDIKK0Y5NDAwOTc1QURGOEVCRkM5QjBCMjg1NjE2RTk4MDU3RkI2M0I1RDVGRjkyN0VCQjJDNUYyNDcxNTNFREY5OTNFMjAxOTAwODlDQjdBMkJBOEEyMjIyRURGNkZBMTgyMDY1QjU5NDc3RjM0RTlDRDQ3RkYzMjVDNkFERUE0RUY1Q0FBRDEyODdCREYzODY3MEUwNzlCRjM4M0Q2QTgyRjhGNkE0NDEyRERGOUM3RjZCRjQyMTU2Cis5OTE3RDUyRgorQzI5QjJDQTk5NDg2QzYxREE2NzA2QTE0NTk4RgorMzAxQjZBN0VGNjY3NEIzM0VFQ0M0MzMzOUM1NEY1QUFCMzU4MUIzNTdBMUMyNTI3RjcwOTJCMzJCNUYyN0U2QTM4RDQ5MUQwQ0MyOTMyM0Q0MUM2MjU4NTA5RUQyRkU0ODQyMUYwNjkwMDQzQTQwRjFEREVCODBGMzlGN0MzNEY4MTVCQjc4N0ZENDMxRURDMjFDRUY1RTZGRjk0QkRDREU1RjY3NjJFOEQ2NkY4Mjg1Q0FERDFGNUI1QTYwN0ZFNzBFQUI1Mzk2NzJGM0MwQkE3NDU3QzJCOEIxNjM5QUZCQkQ5NUY5NjdBRDcKKzgzNUI0M0IxCisyOTQwNDM0RjAxODNDODU5RTgzODIzMkE3MworMkVCNTcxRTFCNjZEODg3NjAzQTQxMkIyNDg5REI2MzQ5MDY3RDBBRURFMzQ3OTUzQzA2RTQ4MjA3RUIxNTM1RkJDNDdFN0JEMTk4MTQ1QzY4NTU2MUNBOUUzOTM2NDdENDc4MDNDMjZFQzQ0MDNEQ0I4RjAxODFFM0M4MDA5NTQ0N0Q2MjE1QTlFRTM3MjlEQzlDNEQzQUUyNUEwNzdEMjBCMjM3MDNBRkE0ODlDCis1QkU3NTlDNQorOTRENEE1NTE2ODI3QkU5NkFEQzFBRjYwRDEKKzYzODAxRDI5RTFDNEIzQUM0QkRCRUM3QTMzMEUzMEREMkYyMzFGMDE0MDdEODFFQTYzQjI3MkU4MEYwRTE4RkVEQzQwRUMyOEFGNUI4MDNFQzMzMTczQjMxODAwQzFFQUNDQUYwMkZDMDkxMTdBRDk5NUMwMTNDNjNCQTBBQUEwMzA3MzQzQ0U2MTkyRUIwMkM1QzdFNjI0RjA1RjM0RkREMDNCM0I4N0Q5QTI1Njg0RTVFQworNkY4NTI0REEKKzREMDc3MkJENUJEQkFDNjVGOTA3OUFDREIxNzIKK0JBQjRCQzE0QzkyMUU2OUYKKzYyREU1NDMzCitFRTQwMjA1N0U4QzM5NUM1MEMzRDRBMzk5NTAxN0IxOTI5QjRCNDU2QTk4OEE1NzEzQTIzMTBDNjJCNDc4NkY0OEY0NgorQTY4RkM4OTI4RkQwNjhEOUIxQzE4QTg4RkFCRjk2NkZDQzY3MTQxMDkxQjVCMjc0REQ5RjMxMzQ3QTVCOTg4MTgyRUVCQjdERDA2NQorRkZDNjlEQTlEM0I1QUZCQzAxRTBFQkM5NDQ2MTg4NkY3QTE5QTE1MTFFMkMwNkFFRjkxRUQ1CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorZHVwIDIgL0MwMDgzIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzUwIDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzVERDg5QTg3OTBFQUQxOEVGQzc3RDNGRkFFODREQTVECiszMTIwNzRDNEQ1NDJERDVCRUM3MDk2OEY3NURDCisyNTBDMzk1NEU4REZCOEY0ODU3QkZFRjA5MkVCQTQ5RDI0ODk1NUE4NThDNUE1RjU1RjdCOTg3RUEwNkVDODQyOEQ5MzkwODRDODhGNUIxNTdEODBBQjJENzA2QTdFQjkzNkMzNDI5MTczNTg4RDJBQkE2QTI3REM5NEMwQjQ4NEYzMTY2NjM1NTU3OTcwMDRDQkZBNzlFN0I4NTQ1QzgxMEJGOUNBOTJGNjFBQkQ5RTIwMkVEOUU5NTk0M0RGN0E1QUJCRjNDMjBCREUzQjZFRUM5QzBCOTVBNEM5QzFEMzhBQTdDNjc4NkFEQkJCNzlFRTE4M0JEREYxOTQKKzE5NTMKKzY0NDlEQkI3QUU0N0U5RkM2RjNBQkYxRENEN0ExRTI3NEU4N0RBRTkKK0EyMjczN0ZBCis2NDA0QjIxNUEyN0JGQUY2RDBCNTBFOTREMgorMDcxMjNBNUJCMzgwQzg2REI1MDMzRUU3NDMxODFCQkZDQzAzNTY1NzFGNzI5N0EyMDdDMjNGMUU1ODgyNTdGREVGNURGMjI5CitDQUJGM0IzQworOUUwOTg4QzYzQjM1OEFDQTRCNEZFQjAzM0RGQgorRTJFMzg3QTA2QTIzQ0FDQQorOEUxMDRCOTAKK0RGREJENDFGMDYzRThBOERGQTBBQkE0REQ3NDQzMDE1NTI2QUU1MjU1MzE1NTk3Nzc5RTA0RDg1ODQ5MzA1RUE0RjMxCis1Q0RBRDA2RTU4NDFFMUI4MDc0NzYwQzk5NzAyQjhDRjQ0M0Q3NTIxNzREOTk2Qzk0RTY5MDc5N0E5NTg3Q0Y1MDE3REVCMTFFNUZFCiswMjU3NkU5RTA4QjM5Njg4QkJFOTlBMTg2QUE4RkM3RTIyMkY1RTUyQjI5QTdGREYzNzlFRjUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3N5bTpjbGFzMTIgMTIuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyaSAxMi4wMCAvUFNPd3N0ZHV0Y2hpIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTUyNDMzMmYyNDMxMjUwYTAxMGIwMTBjMjQyZDIyMjcyYzIwMzEyYTAxMjUyZTMxMDExNDI0MjAzMjM0MzEyODJkMjYwMTE1MjQzMzM2MmUzMTJhMDExNj4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyNDMxMjUyZTMxMmMyMDJkMjIyND4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDkwOD4gOTM0NiAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxNGIgU0YKKzwxMTE4MTYyNTFjMjEyMD4gMTI3MSAxNDU4IDAgMjA1NSAtMSBzCis8MDAwNzA3MDQwMDEyPiAyMDU1IDE0NTggMiAyNjQ1IDAgcworPDIzMjEyNjE1MWUxODI0MWIyMTIxMjUxYzIwMWE+IDI2MjEgMTQ1OCAwIDQyMTcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxNTI0MzMyZjI0MzEyNT4gMTI3MSAxOTg0IDAgMTk4MCAtMSBzCis8MDAyODMyMDAyMDAwMzEyMDMzMjcyNDMxMDAzMjI4MmMyZjJiMjQwMDMzMmUyZTJiMDQwMDMyMmUwMDI4MzMzMjAwMjQzMTMxMmUzMTAwMjIyZTJkMjMyODMzMjgyZTJkMzIwMDM2MjgyYjJiPiAxOTgwIDE5ODQgMTAgNjMxMCAwIHMKKzwwMDIxMjQwMDMxMjQyYjIwMzMyODM1MjQyYjM4MDAzMjI4MmMyZjJiMjQwMDIwMmQyMzAwMjUyNDM2MDAyODJkMDAyZDM0MmM+IDYzMTAgMTk4NCA3IDk0NjEgMCBzCis8M2E+IDk0NjEgMTk4NCAwIDk1MzEgLTEgcworPDIxMjQzMTA2PiAxMjcxIDIyMjkgMCAxNjIzIC0xIHMKKzwwMDAwMTkyNzI4MzIwMDMyMjQyMjMzMjgyZTJkMDAzNjI4MmIyYjAwMjIyZTM1MjQzMTAwMzIyZTJjMjQwMDJlMjUwMDMzMjcyNDAwMmMyZTMxMjQwMDIyMmUyYzJjMmUyZDAwMjQzMTMxMmUzMTAwMmMyNDMyMzIyMDI2MjQzMjAwMjAyZDIzMDAzMjI4MzMzNDIwMzMyODJlMmQzMjAwMzgyZTM0MDAyYzI4MjYyNzMzPiAxNjIzIDIyMjkgMTYgOTUzMSAwIHMKKzwzMjI0MjQ+IDEyNzEgMjQ3NCAwIDE1NjIgLTEgcworPDAwMjAyZDIzMDAyZTI1MjUyNDMxMzIwMDIwMjMzNTI4MjIyNDAwMjAzMjAwMzMyZTAwMzYyNzIwMzMwMDJjMjgyNjI3MzMwMDIxMjQwMDM2MzEyZTJkMjYwMDIwMmQyMz4gMTU2MiAyNDc0IDEwIDU4MjMgMCBzCis8MDAyNzJlMzYwMDMzMmUwMDIyMmUzMTMxMjQyMjMzMDAyODMzMDYwMDAwMTkyNzI0MDAyNDMxMzEyZTMxMDAyYzI0MzIzMjIwMjYyNDMyMDAyMzI4MzI+IDU4MjMgMjQ3NCA5IDk0NjEgMCBzCis8M2E+IDk0NjEgMjQ3NCAwIDk1MzEgLTEgcworPDJmMmIyMDM4MjQyMz4gMTI3MSAyNzE5IDAgMTg2NiAtMSBzCis8MDAyZTJkMDAyZDJlMmQwNTExMTYwNTFhMWQwMDMyMzgzMjMzMjQyYzMyMDAyYzI4MjYyNzMzMDAyZDJlMzMwMDIxMjQwMDMzMjcyNDAwMzIyMDJjMjQwNj4gMTg2NiAyNzE5IDggNjM5NiAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDE4MjQyNTE0MTUxZTFjMjQxYjEzMTYyMTIwMjUyMzIxMWUwYjAwMTYyMTIwMjUyMzIxMWUwMDI0MjExNjFkMTgyNTAwMTYyMTIwMjAxODE2MjUwMDE5MTQxYzFlMTgxNzBiMDAwZDIxMjAyMDE4MTYyNTFjMjEyMDAwMjMxODE5MjYyNDE4MTc+IDEyNzEgMzEzOSA2IDc0MzEgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFjMjcyNDJkMDAzMzI3MjgzMjAwMmMyNDMyMzIyMDI2MjQwMDI4MzIwMDIzMjgzMjJmMmIyMDM4MjQyMzA0MDAyODMzMDAyMjIwMmQwMDJjMjQyMDJkMDAyZTJkMjQwMDJlMjUwMDMzMjcyNDAwMjUyZTJiMmIyZTM2MjgyZDI2MGE+IDEyNzEgMzUxMyAxMSA3MTcwIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDM4MzEgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTUyNDMzMmYyNDMxMjU+IDE1ODkgMzgzMSAwIDIyOTggLTEgcworPDAwMjcyMDMyMDAyZDJlMzMwMDIxMjQyNDJkMDAyODJkMzIzMzIwMmIyYjI0MjMwMDJlMmQwMDMzMjcyNDAwMzEyNDJjMmUzMzI0MDAzMjM4MzIzMzI0MmMwNDAwMmUzMTAwMzgyZTM0MDAyNTJlMzEyNjJlMzMwMDMzMmUwMDMxMzQyZDAwMzMyNzI0MDAyZDI0MzMzMjI0MzEzNTI0MzE+IDIyOTggMzgzMSAxNSA5MjEzIDAgcworPDJmMzEyZTI2MzEyMDJjPiAxNTg5IDQwNzYgMCAyMzY1IC0xIHMKKzwwMDI0MzcyZjJiMjgyMjI4MzMyYjM4MDYwMDBmMjgzMzI3MjQzMTAwMjgyZDMyMzMyMDJiMmIwMDJkMjQzMzJmMjQzMTI1MDAyNTJlMmIyYjJlMzYyODJkMjYwMDMzMjcyNDAwMjgyZDMyMzMzMTM0MjIzMzI4MmUyZDMyMDAyMDMzMDAzMzI3MjQwMDIxMjQyNjI4MmQyZDI4MmQyNjAwMmUyNT4gMjM2NSA0MDc2IDExIDkyMTMgMCBzCis8MzMyNzI4MzI+IDE1ODkgNDMyMSAwIDE5MTMgLTEgcworPDAwMjMyZTIyMzQyYzI0MmQzMzA0MDAyZTMxMDAzMTM0MmQwMDJkMjQzMzMyMjQzMTM1MjQzMTAwMjQzNzJmMmIyODIyMjgzMzJiMzgwMDJlMmQwMDMzMjcyNDAwMzEyNDJjMmUzMzI0MDAzMjM4MzIzMzI0MmMwNj4gMTkxMyA0MzIxIDkgNzMzMSAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA0NjQwIDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlPiAxNTg5IDQ2NDAgMCAxNzUxIC0xIHMKKzwyZTM0PiAxNzI1IDQ2NDAgMCAxOTU3IC0xIHMKKzwwMDJjMjAyMzI0MDAyMDAwMzMzODJmMmUwMDI4MmQwMDMzMjcyNDAwMjUyODJiMjQzMjAwPiAxOTU3IDQ2NDAgNyA0MTM3IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDIwNTBjMDMwMjBiMDUwYTBkMDcwMzA1MGI+IDQxMzcgNDY0MCAwIDUxNTAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwNDAwMmUzMTAwPiA1MTUwIDQ2NDAgMiA1NDk5IDAgcword3N0OmR1dGNoMTJpIFNGCis8MDIwNTBjMDMwMjA3MDgwNTBjMDQwMTAzMDkwODA2PiA1NDk5IDQ2NDAgMCA2NzI4IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MDYwMDBkMjcyNDIyMmEwMDM4MmUzNDMxMDAyNDJkMzMzMTI4MjQzMjAwMjAyNjIwMjgyZDMyMzM+IDY3MjggNDY0MCA0IDkyMTMgMCBzCis8MzMyNzJlMzIyND4gMTU4OSA0ODg1IDAgMjA3NiAtMSBzCis8MDAyODJkMDAzMzI3MjQwMDI4MmQzMjMzMjAyYjJiMjAzMzI4MmUyZDAwMzIyNDIyMzMyODJlMmQwNjAwMTIyNTAwMjIyNzIwMmQyNjI0MzIwMDIwMzEyNDAwMmQyNDI0MjMyNDIzMDQ+IDIwNzYgNDg4NSA4IDY1NDEgMCBzCis8MDAyYzIwMmEyNDAwMzMyNzI0MmMwMDIwMmQyMzAwMzMyNzI0MmQwMDMxMjQyMjJlMmQyNTI4PiA2NTQxIDQ4ODUgNSA5MTQzIDAgcworPDNhPiA5MTQzIDQ4ODUgMCA5MjEzIC0xIHMKKzwyNjM0MzEyNDAwMjgyZDI0MzMyMzAwMjAzMjAwMjMyNDMyMjIzMTI4MjEyNDIzMDAyODJkMDAzMzI3MjQwMDI4MmQzMjMzMjAyYjJiMjAzMzI4MmUyZDAwMzIyNDIyMzMyODJlMmQwNj4gMTU4OSA1MTMwIDcgNjA0NyAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA1NDQ4IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlPiAxNTg5IDU0NDggMCAxNzUxIC0xIHMKKzwyZTM0PiAxNzI1IDU0NDggMCAxOTU3IC0xIHMKKzwwMDI1MmUzMTI2MmUzMzAwMzMyZTAwMzEyNDIyMmUyZDI1MjgyNjM0MzEyNDAwMjgyZDI0MzMyMzA2MDAxNz4gMTk1NyA1NDQ4IDUgNDc1MSAwIHMKKzwyNDIyMmUyZDI1MjgyNjM0MzEyNDAwMjgyZDI0MzMyMzAwMjUyZTJiMmIyZTM2MjgyZDI2MDAzMzI3MjQwMDI4MmQzMjMzMzEzNDIyMzMyODJlMmQzMjAwMjgyZDAwMzMyNzI0PiA0NzQzIDU0NDggNiA5MjEzIDAgcworPDI4MmQzMjMzMjAyYjJiMjAzMzI4MmUyZD4gMTU4OSA1NjkzIDAgMjU5OCAtMSBzCis8MDAzMjI0MjIzMzI4MmUyZDA2PiAyNTk4IDU2OTMgMSAzMzQyIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDYwMTIgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MWU+IDE1ODkgNjAxMiAwIDE3NTEgLTEgcworPDJlMzQ+IDE3MjUgNjAxMiAwIDE5NTcgLTEgcworPDAwMzIyZjI0MjIyODI1MjgyNDIzMDAyMD4gMTk1NyA2MDEyIDIgMjk2MiAwIHMKKzwwMDJmMmUzMTMzMDAyZDM0MmMyMTI0MzEwMDM2MjgzMzI3MDAzMzI3MjQwMDA1MmYwMDJlMmYzMzI4MmUyZDAwMzMyZTAwMmQyNDMzMmYyNDMxMjUwMDMzMjcyMDMzMDAyODMyMDAyZDJlMzMwMDMzMjcyNDAwMzIyMDJjMjQwMDIwMzIwMDMzMjcyND4gMjk2MiA2MDEyIDE1IDkyMTMgMCBzCis8MmYyZTMxMzM+IDE1ODkgNjI1NiAwIDE5NzEgLTEgcworPDAwMmQzNDJjMjEyNDMxMDAyMTI0MjgyZDI2MDAzNDMyMjQyMzAwMjEzODAwMzMyNzI0MDAyZDI0MzMzMjI0MzEzNTI0MzEwMDJmMzEyZTI2MzEyMDJjMDAyZTJkMDAzMzI3MjQwMDMxMjQyYzJlMzMyNDAwMzIzODMyMzMyNDJjMDY+IDE5NzEgNjI1NiAxMSA4MTE1IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDY1NzUgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTIyZDI0MzMyMz4gMTU4OSA2NTc1IDAgMjA3NiAtMSBzCis8MDAzMjI0MjIzNDMxMjgzMzM4MDAyZTJkMDAzMzI3MjQwMDMxMjQyYzJlMzMyNDAwMzIzODMyMzMyNDJjMDAyODMyMDAyZDJlMzMwMDIyMmUyZDI1MjgyNjM0MzEyNDIzMDAzMzJlPiAyMDc2IDY1NzUgOSA2NDkyIDAgcworPDAwMjAyYjJiMmUzNjAwMjIyZTJkMmQyNDIyMzMyODJlMmQzMjAwMjUzMTJlMmMwMDMzMjcyNDAwMmIyZT4gNjQ5MiA2NTc1IDUgOTE0MyAwIHMKKzwzYT4gOTE0MyA2NTc1IDAgOTIxMyAtMSBzCis8MjIyMDJiPiAxNTg5IDY4MjAgMCAxODQ1IC0xIHMKKzwwMDMyMzgzMjMzMjQyYzA2MDAxMD4gMTg0NSA2ODIwIDIgMjc0MCAwIHMKKzwyZTJiMmIyZTM2MDAzMzI3MjQwMDI4MmQzMjMzMzEzNDIyMzMyODJlMmQzMjAwMjgyZDAwMzMyNzI0MDAyYzIwMmQyZjIwMjYyNDAwMjUyZTMxMDAyODJkMjQzMzIzMDYzMjI0MjIwNj4gMjczMiA2ODIwIDcgNzM0MiAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA3MTM5IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDE1MjQzMzJmMjQzMTI1PiAxNTg5IDcxMzkgMCAyMjk4IC0xIHMKKzwwMDI3MjAzMzI0MzIwMDM4MmUzNDA2MDAxMjMzMDAyNzIwMzIwMDIwMmIzNjIwMzgzMjAwMjcyMDMzMjQyMzAwMzgyZTM0MDYwMDBkMmUyZDMyMzQyYjMzMDAzMzI3MjQwMDI5MmUyMTAwMmIyODMyMzMyODJkMjYzMjAwMjgyZDAwMmMyODMyMjIwNjI5MmUyMTMyMDYyZTI1MjUyNDMxMjQyMz4gMjI5OCA3MTM5IDEzIDkyMTMgMCBzCis8MjAyZDIzPiAxNTg5IDczODMgMCAxOTI2IC0xIHMKKzwwMDMyMzMyMDMxMzMwMDM4MmUzNDMxMDAyYjI4MjUyNDAwMmUzNTI0MzEwMDBhMDM+IDE5MjYgNzM4MyA1IDM4MzIgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwyNjE3MjIxMzI0MTgyMDE3MGIwMDE3MTQyNTE0MDAyNDE4MjAxNzAwMTgyMzIzMjEyMzBiMDAwZjE4MjQyNDE0MWExODAwMjUyMTIxMDAxZTIxMjAxYTAwPiAxMjcxIDc4MDMgNyA1NDAzIDAgcworPDAzMjEyMzAzPiAxMjcxIDgwNDggMCAxODIyIC0xIHMKKzwyNDE4MjAxNzEzMjYxNzIyMTMyMzIzMGIwMDE3MTQyNTE0MDAyNDE4MjAxNzAwMTgyMzIzMjEyMzBiMDAwZjE4MjQyNDE0MWExODAwMjUyMTIxMDAxZTIxMjAxYT4gMTI3MSA4MjkzIDYgNTYzOCAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTkyNzI0MzIyNDAwMmMyNDMyMzIyMDI2MjQzMjAwMjgyZDIzMjgyMjIwMzMyNDAwMzMyNzI0MDAyNTJlMmIyYjJlMzYyODJkMjYwYT4gMTI3MSA4NjY3IDQgNDc3MCAwIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSA4OTg2IDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlPiAxNTg5IDg5ODYgMCAxNzUxIC0xIHMKKzwyZTM0PiAxNzI1IDg5ODYgMCAxOTU3IC0xIHMKKzwwMDI3MjAzNTI0MDAzMTI0MzAzNDI0MzIzMzI0MjMwMDIwMDAzMjI0MmQyMzAwMzIyODM5MjQwMDAyMDUyYzAwMmUyZjMzMjgyZTJkMDMwMDJlMzE+IDE5NTcgODk4NiA4IDU4MjQgMCBzCis8MDAzMTI0MzAzNDI0MzIzMzAwMzIyODM5MjQwMDAyMDUzMTAwMmUyZjMzMjgyZTJkMDMwMDMzMjcyMDMzMDAyODMyMDAyYjIwMzEyNjI0MzE+IDU4MjQgODk4NiA3IDkyMTMgMCBzCis8MzMyNzIwMmQ+IDE1ODkgOTIzMSAwIDE5OTUgLTEgcworPDAwMzMyNzI0MDAyYjJlMjIyMDJiMDAzMjJlMjIyYTI0MzMwMDMyMjQyZDIzPiAxOTk1IDkyMzEgNCAzODYzIDAgcworPDAwMjEzNDI1MjUyNDMxMDAzMjI4MzkyNDAwMDIwNTMyMDAyZTJmMzMyODJlMmQwMzAwMzYyODMzMjcwMDIwMDAxYTBlMTYxZjE4MTkxNzBmMGIxNDAwMmUzMTAwMWEwZTE2MWYxNzE3PiAzODYzIDkyMzEgOSA5MjEzIDAgcworPDMzMjQzMjMzPiAxNTg5IDk0NzUgMCAxOTEzIC0xIHMKKzwwMDAyMDUzMzAwMmUyZjMzMjgyZTJkMDMwNjAwMWU+IDE5MTMgOTQ3NSAzIDMyODMgMCBzCis8MmUzNDAwMzIyNzJlMzQyYjIzMDAyNDI4MzMyNzI0MzEwMDI4MmQyMjMxMjQyMDMyMjQwMDMzMjcyNDAwMzIyODM5MjQwMDJlMjUwMDMzMjcyNDAwMzIyZTIyMmEyNDMzMDAyMTM0MjUyNTI0MzEwNDAwMmUzMT4gMzI1NyA5NDc1IDEwIDgzNzEgMCBzCis8MDAyMzI0MjIzMTI0MjAzMjI0PiA4MzcxIDk0NzUgMSA5MjEzIDAgcworPDMzMjcyND4gMTU4OSA5NzIwIDAgMTg3OSAtMSBzCis8MDAzMjI4MzkyNDAwMmUyNTAwMzMyNzI0MDAzMjI0MmQyMzA3MzEyNDMwMzQyNDMyMzMwNj4gMTg3OSA5NzIwIDQgNDEwNCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDIyMjYyNTEzMTYyMTIwMjUyMzIxMWUwYjAwMTQxNjFkMjAyMTI4MWUxODE3MWExODFmMTgyMDI1MDAxODIzMjMyMTIzMDAyODE0MjAyNTE4MTcwMDBhMDAxYTIxMjUwMDA5PiAxMjcxIDEwMTQwIDYgNTk0MSAwIHMKKzwyMDE4MjUyMjE4MjMxOTBiMDAxNzFlMTMyMTIyMTgyMDBiMDAxNjIxMjYxZTE3MDAyMDIxMjUwMDI0MTgyMDI1MDAxNjIxMjAyNTIzMjExZTAwMWYxODI0MjQxNDFhMTgwMjAwMTgyMzIzMjAyMTAwMGMwMDA2PiAxMjcxIDEwMzg1IDkgNjY2NyAwIHMKKzwyMDE4MjUyMjE4MjMxOTBiMDAyNDE4MjAxNzEzMTcxZTIyMWMxMzE2MjExMzI0MjUyMzE4MTQxZjBiMDAxNzFlMjIxYzEzMjQyNTIzMTgxNDFmMDAxNzE0MjUxNDAwMTcxODI0MTYyMzFjMjIyNTIxMjMwYjAwMGUyMzIzMjEyMzAwMDY+IDEyNzEgMTA2MzAgNiA3NDE5IDAgcword3N0OmR1dGNoMTIgU0YKKzwxOTI3MjgzMjAwMzIzMzMxMjQyMDJjMDAyZTI1MDAyYzI0MzIzMjIwMjYyNDMyMDAyODJkMjMyODIyMjAzMzI0MzIwMDMzMjcyNDAwMjUyZTJiMmIyZTM2MjgyZDI2MGE+IDEyNzEgMTEwMDQgNiA1NjA2IDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDExMzIzIDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFlPiAxNTg5IDExMzIzIDAgMTc1MSAtMSBzCis8MmUzND4gMTcyNSAxMTMyMyAwIDE5NTcgLTEgcworPDAwMjcyMDM1MjQ+IDE5NTcgMTEzMjMgMSAyNDI2IDAgcworPDAwMzIyZjI0MjIyODI1MjgyNDIzMDAyMDAwMGUxMzE2MTIwMDE2MTY+IDI0MjYgMTEzMjMgNCA0MjkxIDAgcworPDBiMDAzMzI3MjAzMzAwMjgzMjAwMmQyZTMzMDAzNTIwMmIyODIzMDYwMDFiPiA0MjY0IDExMzIzIDUgNjEwNiAwIHMKKzwyNDMxMjgyNTM4MDAzMzI3MjQwMDIyMmUzMTMxMjQyMjMzMDAxNjE2PiA2MDgzIDExMzIzIDMgNzgxNiAwIHMKKzwwYjAwMjAyZDIzMDAzMzMxMzgwMDIwMjYyMDI4MmQwNj4gNzc4OSAxMTMyMyAzIDkyMTMgMCBzCis8MWI+IDE1ODkgMTE1NjcgMCAxNzUxIC0xIHMKKzwyMDMxMjgyMDMzMjgyZTJkMzI+IDE3MjQgMTE1NjcgMCAyNTEzIC0xIHMKKzwwMDJlMmQwMDMzMjcyODMyMDAzMjMzMzEyNDIwMmMwMDJlMjUwMDJjMjQzMjMyMjAyNjI0MzIwMDIyMjAyZDAwMjEyNDAwMzIyNDI0MmQwMDI1MmUzMTAwMjQyMDIyMjcwMDJlMjUwMDMzMjcyNDAwMGUxMzE2MTIwMDMzMjQzMjMzMzIwNj4gMjUxMyAxMTU2NyAxNCA4NTIyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MjAxODI1MjIxODIzMTkwYjAwMTcxZTEzMjEyMjE4MjAwYjAwMjEyMjE4MjAwMDIxMTkwMDA1MTcxODI3MDUxOTIxMjEwMDE5MTQxYzFlMTgxNzAyMDAxODIzMjMyMDIxMDAwYzAwMDg+IDEyNzEgMTE5ODcgOCA1ODU4IDAgcworPDIwMTgyNTIyMTgyMzE5MGIwMDI0MTgyMDE3MTMxNzFlMjIxYzEzMTYyMTEzMjQyNTIzMTgxNDFmMGIwMDE3MWUyMjFjMDAyNDI1MjMxODE0MWYwMDE3MTQyNTE0MDAxNzE4MjQxNjIzMWMyMjI1MjEyMzBiMDAxMDIxMDAyNDI2MTYxYjAwMTkxYzFlMTgwMDIxMjMwMDE3MWMyMzE4MTYyNTIxMjMyOT4gMTI3MSAxMjIzMiAxMCA4ODkzIDAgcword3N0OmR1dGNoMTIgU0YKKzwxOTI3MjgzMjAwMzIzMzMxMjQyMDJjMDAyZTI1MDAyYzI0MzIzMjIwMjYyNDMyMDAyODJkMjMyODIyMjAzMzI0MzIwMDMzMjcyNDAwMjUyZTJiMmIyZTM2MjgyZDI2MGE+IDEyNzEgMTI2MDYgNiA1NjA2IDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDMxKSAzMQorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQyIHB1dAorZHVwIDMgL0MwMDQ0IHB1dAorZHVwIDQgL0MwMDQ1IHB1dAorZHVwIDUgL0MwMDQ2IHB1dAorZHVwIDYgL0MwMDQ3IHB1dAorZHVwIDcgL0MwMDQ5IHB1dAorZHVwIDggL0MwMDUxIHB1dAorZHVwIDkgL0MwMDU4IHB1dAorZHVwIDEwIC9DMDA2NCBwdXQKK2R1cCAxMSAvQzAwNjUgcHV0CitkdXAgMTIgL0MwMDY2IHB1dAorZHVwIDEzIC9DMDA2OCBwdXQKK2R1cCAxNCAvQzAwNjkgcHV0CitkdXAgMTUgL0MwMDcwIHB1dAorZHVwIDE2IC9DMDA3MiBwdXQKK2R1cCAxNyAvQzAwNzMgcHV0CitkdXAgMTggL0MwMDc2IHB1dAorZHVwIDE5IC9DMDA3NyBwdXQKK2R1cCAyMCAvQzAwNzggcHV0CitkdXAgMjEgL0MwMDc5IHB1dAorZHVwIDIyIC9DMDA4MCBwdXQKK2R1cCAyMyAvQzAwODIgcHV0CitkdXAgMjQgL0MwMDgzIHB1dAorZHVwIDI1IC9DMDA4NCBwdXQKK2R1cCAyNiAvQzAwODYgcHV0CitkdXAgMjcgL0MwMDg5IHB1dAorZHVwIDI4IC9DMDA5NyBwdXQKK2R1cCAyOSAvQzAwOTggcHV0CitkdXAgMzAgL0MwMDk5IHB1dAorZHVwIDMxIC9DMDEwMCBwdXQKK2R1cCAzMiAvQzAxMDEgcHV0CitkdXAgMzMgL0MwMTAyIHB1dAorZHVwIDM0IC9DMDEwMyBwdXQKK2R1cCAzNSAvQzAxMDQgcHV0CitkdXAgMzYgL0MwMTA1IHB1dAorZHVwIDM3IC9DMDEwNyBwdXQKK2R1cCAzOCAvQzAxMDggcHV0CitkdXAgMzkgL0MwMTA5IHB1dAorZHVwIDQwIC9DMDExMCBwdXQKK2R1cCA0MSAvQzAxMTEgcHV0CitkdXAgNDIgL0MwMTEyIHB1dAorZHVwIDQzIC9DMDExMyBwdXQKK2R1cCA0NCAvQzAxMTQgcHV0CitkdXAgNDUgL0MwMTE1IHB1dAorZHVwIDQ2IC9DMDExNiBwdXQKK2R1cCA0NyAvQzAxMTcgcHV0CitkdXAgNDggL0MwMTE4IHB1dAorZHVwIDQ5IC9DMDExOSBwdXQKK2R1cCA1MCAvQzAxMjAgcHV0CitkdXAgNTEgL0MwMTIxIHB1dAorZHVwIDUyIC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTIzOCA5MjAgNzIyXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjE5NDU3Q0FCMzM1MzdFQzNBRDAyNzE3QTdDMEU5NDFDOTg2Cis0NDVGREI4OTE3OUI3RTJBMTJEMTIyMTUKKzhDNzIzQzY5MkNFNkRBQkY0MAorNjE2ODJDQjEKKzA3MDA1MDQ3OThEQ0QxODJGREVCRjU3MkNBNzMKK0U0RTU1OEUyNUVDNUI1OEM3MTc1NTk1NkVDN0E1MDBGODA5MDkyMDU0QUZERDdENTRGOEVGOENENjMyQzA5ODdBQTRENUZENEU1Qzk5MEE1OTgwNUJFNjM4MEI3NkM0QzI5MEUwOTlDQzMxREVEODE2QTVENjBGQzE4M0NFNUIwMEU1RjFGMEQ2RDUyNTYyQjVCM0JEODcyRTNGODRCNDdBMDIwQTE4MTU0QTRENkI2RUMwOTNERjA4QkJDQjQ5MDQzMDIzRTk0RTMyOUM2OEYwNDMzNkQ4OTZCQ0RFMEM0OTk1MzZENDlCMTEzNDMxRTdDQkIzQjdBNzU4RQorN0I5NAorNUUwNjNEOUM0MUM2RUU0N0REN0NENjgxRDQyRUJDNDkyM0IzRjM4RjE3MjNBMDdDMUFFQTI5NEFBRkU2QjBCNERFRTAxQkQ4NDQ5MkUwRDQ1QTdFRDgxMjM0MDkyNUI2NUIzMThBQ0E2Mjk5ODVEQzI2Q0E3Qjc2MTg1MURBCitCQTE5Q0I3NgorNUM1QzUyNzdBMDc3MDI5MzgwRkY0OTRCQzIKK0YzRUU3QzJENDYzQjMxMzFBOTNDNERCNzM0OTJCNjc4REU5MTAzNUZEQzY5RkMzQTJCRUZEQzYzNzY4QjA3ODg1NTg1M0ZDNDQ1NUEzRDQ1M0I1M0UyQzcyQkJGQkExMjRFNTMwNDY0NEZBQzc4NDRFQworODI2MzdFNTIKKzRDM0VCNUI1MDY2NjI2RjU1MkE0MkU0MjlGCitBODk3NTIzMkQxMkFGMTFDQ0UxMDBFOTdDOEFGQkNGNjFBOTQ5QTIwQTA4MjU4Cis0Q0NDQzZCRgorM0ZGMzgyM0I5REM1QTQ5Qzg4QjlFQUJFRDEKKzRERTIzMjlDMEI0RUMzOUY5OUQ1NTczMkYyMzkyOUIxMDMyNjBDOEZBMjkzQTE1ODRFNkY0RUQ3Qzg3RjY5CitBMTMxRUNERgorN0MxMjU2MjQ2MzUxOUE2M0JGM0MzOEUwNkUKKzM3NjI4MkM5QzBBQUM1OTBFMUY5NEQ4OEJCNEZCOUU0RUNFQjA0QTE5QTA3NTI3RkU2MjFFMzQwCitEREU2OUQ5NworQTk5OEY3QUNGOUQxOEI5NEU0Njc4OUIxMkUKK0RENkU1N0NCMDY1NzI2Q0I2NkYzNDhFQjVBMTQxOEY3N0Y3QjE5RUQ0MTg1MjM0NDQxQkZEMTE1QURFNjdFRUYyNUIxMkI0NUY5MzZFNTM5Q0QzOUI2NTU2NDY2NDhCRUE4RTNFRDA3MTI1MzAzOENBQ0RCNTE2QzhGMzQ3RAorRjc3RjE5RDEKKzc1MUM3NDczMTU2QzRGMkMyN0ExNUY0RTA1MDMKK0QzOTE2NUE1OTMyQ0YxNzJGNDlCRTM0QUNCMTI4MkUwMDIwRDdBQTRFQkM4OTRDNTMzOEQ3MzNBREM1QjM2MDEwOEZGRTgwRkQ3NEY0ODhGOTFGQTg0NThFNjM0QkM3OTdFMDU2QkQyQjI4REY4Njk4NEUxMTUwRjVFNDhGRTNERDVBMTBFNjZBM0FFNkM2NkQ3QjY0OTgxRTFCMzJBMjkzREZCMEUyNTAxODZFQzExRjc0Q0YwOTBGRjU5NUIyMjVBRjIwRUU4MDUzNjY1NDY0MzRGQUZGQjZGMTY4OQorMTY4QjU2NzUKKzlFMDJEOEZERDk5OURFREZEQTJGNjhBNzVGCitGMkFBMTZGMjJERTJGREY5MTIwMkFBRTc4M0ZFMDNGMTk5NDlCMkQ2RDM1RkU3RkE0MzU4M0Y3MjY4MzE4MERBQjk0Qzg3NzAzNzdGMzg3RkQzQ0JFNjNERUJBODcwRTA1MUI1MjA2NzBCQTMKK0VDMTE3NEIzCiszMUM3N0I4NzI2QjJCQUY2MTg0MUZFQjA0NDMxCitEQ0Q4NkYzMjA2M0JERjQwODA3OUNCQzNBNEM3MkY1MkM5MUZBRkM5ODk4MDUxRUJCQTU2NkZDRDNDRkVEQjY1RERERTlGNEEzOEE1RTFGODY2RjRBREM5QkYzNzNFRTUxQUZCQjJGQUZGRTdENzUyMTU3QTU0MzIwN0MxNzhGOTAyMUYwQTc2MTM4RkRDNzcxRDU3MUYxNDZGRDRGRDA1RDc1QkY2QkQ2QkVGM0Y2NTJFMThENDhCODcyREJGOEE0NTcyNjQ0QTQwMkMyQ0RENzQwQTI2OUUzODgyQ0REMkI0RUE0QTQ4REZDNTAyNkE2NzkxMDJDMEVEN0EKKzZDNUMKKzJCNzU1M0FGNTlENjc0M0UzMUMwQjU1MjFFMDU5MTM3ODQ3OUZCOTlGRENDNUM0N0NEQjI1REQ5NDg3QjE1NTcyQ0EyQTlFNTJDODYwQzQ2QTMzNUUwRkM4NkFGQjc5NDY5QjQxNkYyRDNCQ0QyRTQzQTNCM0ZDMjIzRjVGRkQ4RTNEOUNBRkY2NkU0NTZBMjJFNzk4NDY2NEU2RjgyRkI3ODAwODQyOTM4OTg4OUU1OTNBOTEzNjQ4Qjg2RjVCMDYyNUQ3NDdBMkIzMDdFM0UzNEVCOEI3RDdGMkVBRDIzREY4MkQyQTZCNThCMjI1NjUxOTUxODc3OTI0MworQzcKK0ZGNzcwQTA5CitBRkY2NUFERkJBNDY5RDdGRDVCRjE1MDI2OTZBCisyRkM2Qzg4QTFCOEFCREE1QTc3MDFDQ0ZCN0I1MTA3OTY1RjEyRkMxNEUzRTNFMEMzNEQ4NEFEM0Y1MTA3ODQyMzQ3NjUzN0EzRjE0MkIyNkU0RTlFREQ2MjQ1MzlCREMwRkNCQkNBMjMxQUYxOEE3NUU2RTc0MTE3OTBFQTgzRDg4OTc0NTU1NkZCODg2NDdGQzZGNzExQzc0QjVDODRFMEFGM0RGRDM0OEMwQzUyNkEwMUM5MkE2ODRCQzc0N0ZGNDAwQUY4MTY4OEI1M0U2RjRDRjRFNkQxNjMyNzIwNUI3NjY2NAorQzQzRkI3MjQKK0FFRDU2OEEzNTkwRDFGMDcwOUMzRjI2NUMyMTIKK0VGRDE0RUMxMkIwMjg1M0Q5NDlCNEU1MDJFQjIzNzdFOTlGRUIzNjQwRjVFQTdCNEI5MjA2M0M0NTcwNjNFMTA2NDJGMEU2NDYzNzVDNDczMUY0QTEzREUwREMzMjc4RTk0RTVFREQzNDY5QzRDM0I3RTQ5MDkyNjVGQ0U5QTlEQkVDOTkwNEIwMDYxODk0MEY2MEQxNkEyQjYwNDg0MDM3N0M2RjE5QzI0MzhDNERCMzU1MzdFQTJGMjc2NDQxM0Q1OTZFQkY1MDRBREFDQTA5N0QyQURGQUVBRDFCOEVFRDRDOEQ4QTYzMzlCMzcwRkE5MEM4MTBFNkRCNQorODEzQQorMDgKK0QyOUJEM0M0Cis1M0I2QzM4MTZDODM0NzIxNTQ0Rjk0MjRGMworQUY2NEE2RjAwMTYwNjk4Mzg4M0M1OEJGREIwRTdDQUE2OEUzQjc1NzMyNEIxQ0M1M0UwOTQ1OThEQ0UwODU0MEJDNEE4Mzc1QUYyM0EzRjBFRkE5NkNDNDhGQTBGRUFFMDRGNEUwRThDN0IzM0JBOEZFQzI1MzI4MjdFMUJBRDE5MkU4M0I0MERCRDQ3NjMyMUU5ODAxMTI0M0Y1ODZENjg3ODJEMkMyQjU3Qjc4RjI2NzdBQjMwNDEzNEU0Njk3NkRCNTdECitBQzNFNTE5MAorNDYzOEYzNDA4OEMyMDc1MjcwMjkxMTk3NTREQQorRUI0Qzg4QzY1Q0IxODc1OEZGRDE5NUM4NTM2NUE0MTFDQTgxQ0I3RUVDRTlDOURDMzQ5QzlEMzk5Q0YzMTRFOTFBNDk1MUIyQUM5MTJBM0M4QTJENjQ0QTY4RkNDNTFFRTgzRkZGMEZGNDQ5NjhDM0EwQ0IxMTUyOUFEMzhEMTg3MTA2NjY5RDIxRTUyMEI5MUM1QUU1QkFENzZFMzAyMUVDOEU3MjQzREQzNDRDMjVBNjQ4MzYwRUQ5MDEzOTMyQkVCNDI1MDA3Q0U1QTc0RkFCNTMzNkYwRjc4MzI5MERCRjhGNUYyNTFGQTkwQTJGRDE1RkY0QkRCQkM4CisyNjUwREYxQworRjY2RDY2QkIyNDhERDdBNDMyNjg1RDg3Qjg0RQorQ0YyNTUxNzg3QUVCNjA5REVEQTAzM0MxQTU5M0Y0QUQ3N0VFRkZCRkNGMTI1QUU2NDQ2OTg2Q0VBMzJEMTIwQzAxM0VGNjNFRTc0NUZEM0QzNDY1NjYwNTcyRDhEQzI0QjVGQTMxQzg3NDYxNUZGMzhDNjkwM0RGNkZBMjRGRjFDNjcwRUEzRDRGQjQ0NjY4MjEwM0U4MUM3RDI1NDQwRTU5QzFCQkYzOTZBNEY5MkM3MEIwQTY1QjcxRkM2Qjk3ODREMjA3QzA2Q0RFREI4ODBDCis3NjkxMDJDMAorNjgwRkIwQURGOTA3MDI3QjdBQThBMUJDODY5QgorQ0ZEQkRDRkEyNDJEODRCNTAyQzU3OEM1MEIxNTQ2RTAwMDM0NkY4QzFBMTVCMDREOTY4OTNFRTExMzJCN0IxQjEyM0Y0QkE2MUE2NDM4QTZBQTc2RDQyRUVCMERBODYwRUVGMDg5MkI4NDQwMzFCRjQ5OUFBMzlFOUI2NDBGMzI5QkQ1NjlFNDFGNjY1MzZGNDMzODIwMzVGOUY0OUMyOEEzMjIzQ0JDMkM4NDNGMjBDQzk2NDE5NEE1NzA2OEU0QzZBRjY2REZFNjhGMkY4N0M0QjUxOEE1QTEyQkMzMzBEOTQ5ODE3NjZBQzRENzU3MDY2NTE2MjBFRDJBCis5REU1CitBQzVDNzRCMDMyRTdCMEFFRTQ4MzMyCisyNDEzRTEwNworRDdCQjNCMjI5QjBBODhGRkQxOEVBN0FFOUUKK0YzMjE2OEFCRTdEQUU5QUVEODI2NUNDQ0ZBNkVBMjZBNTREQ0FEREVBNDVEREVBQ0MwRkI2MjUyNjhCRUZFNUJFRTg0MEE5MTI0MDNCMjZFMzc0NkQ1NTFGMkEwMUQ4NTkwNjhEOThFRkNCRTI0NDA3MkIxOEUKKzJBQTYyQUM3CisxODgzRkYzREQyMzY1NzQ3N0RCNkNBMkZGOAorRTU0MTI2Mjg0OEFFMzY3NTFEM0ZCRDRCMzhEMkZEQzNCQUFCMDQ1MUIyMENEM0ZEODI2MTYyRTU5QkJDNkU1OTU5MERFRTBCRUM1MkIzMzJCOTg4RjAzQzgzRURCNjBEMTAyMkQ1M0VDQ0E1RjkyQTY4NzQ3MjM0RkQ4OTYwMTc0M0QzMUQyRkE4MzRENQorRDgzNTlEODMKKzA3NzA5N0Q2NTA4QzczNjQzNjlDOEEyRkNDRDkKKzFCRkNFQTVFNjM1NkVGQTRCRjFBN0Y4MzdDMkU3REZEMTVGMTcyNDYzM0QxOTM5NTExQTVERDczOEZEODA1QzREQjVDOTA3OEM3MEJCNjAzRjQzQTMxRkM0RTczNzdBOTIzNTQzQTdDMjI1RTczOEUzN0VGNTY4REQ1NDVDQjE1REFGNDlCRDUzODA1QURGMUQ0M0RGMzUzMTA0RUU5QjA1REIwNUI1RjE1QTk3NkIyNjUzNkYxNDgyRDg2M0I1NkJERTlGQjYwOEFBQjU0RDNDNjE1OTNFQzU1REU0MworNjUzRjUxRUMKK0RFQzM0QjJFNjk2QTc0OTgzMjAxNERDN0RDCitFQjRERERGRjIwOTAxMzU1OEE0Nzc4QkJGMDI4MjBGMUUxNjgyMzJEOTM5MTlGQ0Q4RTdCQkQ5NTYxMDc4RDNDMjFCQzQ5RDU1Q0NGNkU2NjE5N0U4N0Y1MzQ2NTRGNDVFRDRGQzlFNjQwM0RBRkE0QkMxRDUxNDQxQTUzQzM3MTJEOUREMzhEMjYxMUM3MDBCODE5OUFEQjEzRTBGNUZERTBGQzZDMTFCOThFRDBCREY1QzcxRUZECitBNEFDRTQ3NAorMzdDMjZGQTYzQzQ4QkE4MjhCMzZEQkM5MjcKK0IxQURDMzFBOEI2RThGQUUzNTY2NUM5NTk4NDlGRkMwQzExQ0VFODAwRTgxM0IzRDlEQTBDMEJCM0Y5RTA0NTgwMUM2MkI2QzIzOThCOUE3REI3NjMyRTdFMUZCQUE4MDZCN0I3QURDMUZCMTFGQzUxN0RGNENEMkM2MjlGMzQ4RTc0ODg5MkQ0MTI4QUM3NTc1MDc4NEZGQkIxMkU1OTJFOUFBMUUKK0MyRDY3NDdECiswQTFFMDlGNDU2QTNFNjAzNjNERUREQjg2QjhGCis2OTc4RjQ0RTAyNTMxNTJGNDI4NENEN0FDNkEwRjg5QkE0QUJGN0FFMUU2NDJERUQ1RERGRTYyNEE1NzIxQUFBQjBENTY0NDQ3NEI0REY1NjkwNzQ3MTA5RTg2MkIxREJBQTBDOUYyRDI5RDBFQzNCMjFBQjUxQzE3QkQwRjA3NDgyQTE4MUJBMzVENDY5RjM0MjU5MTVFOUNCMEVDRTNFNkY2ODFBMEZCRjc1MEU5NTY1Nzk4NzU3MTk3NDcyMjQ1QkFGNDc4QkFCMEU2MkY0Nzg3MQorNTVDQTY4RkEKK0NDQ0FGN0U2QzQyODBCRTdEOTM3QUY3NkE1MUUKKzQ5RDM5ODdENDEyRDYwNEM3N0ZFQzVFQUU2QUNDQzk3RTAzMEJGNjFEN0E1NkVDNkU3MzI4NjY1MjlBNDIxNjQ2NTMyNDE1RENBRkZCQzVDOUZGQkI4NTNCNjhDQTg5NDA2REE2MTNFQThENDM3MzhGMTAwQzlCNUM2QzRDQjk0REUyMUYzNkJFMzJBOTU4MTg4QjFCNjUxMjE3ODc5OTUzN0M5RTU3NTQxMjlDNzMwOTI0M0FFQTY3OTdFNzhEOEU1ODExNTNBQzE5RTk0RjlFNkY2N0VGNTYwMURENzdEMTgyQkRGODdDMEUzRkY4Q0I2NkFEOTlGOUM1NgorMTg1QkFGOUIKK0JDRTA1NDY1MDhDNDlGOThFMDA4NTA4MUE0N0IKKzIyM0JGMTNDQjZCQkVFNDdEMkI4QTc5Qzk3NUU3MTBFNTVCQUVGNUVGNDAyRUI5NDc2Q0I2MzAzQTJBRTI4M0RBNUU3QkU1M0M1MkM0Nzk5Q0E1RDJCNkZGMDgxMDk4MjYxODhGRENBNTg3NUQ0NTJFQUU0ODgwNUVGNzM1RDNENThFMUIzOTQ4Nzg4RDNBNkM1MTM1MTQ0Mzc2NzY1QjNERDFBQjNFNDFERUM5MDMxNjRFM0ZENEJGNDQ2RDlDMzY1MDMwQzk5MjFBMEU4MEI5QjhBN0IyNUVDMkI5MTdFQUQ4OEVFNTlBODE4QTMzNTIzQ0ZFQjlBNzJGNworM0VGNAorOTgzNDQzCisxQkE5QUYzQQorNTYwRTZENjA5MkZGMTNCQ0Y1MjczMjkzQUIKKzE1M0I2RUI2RDU1RTMyNUU1MzU5MjM5NEQ5RTZDQ0FBMkM5MTk3ODY1QzU4OTUyN0IwQjg1NzA5MDY3MjUwMTM1RUVDMkU2OENEMjIwMTU2QjQxMjkxNjJGOUQ3QjREOUMyODZGNjY2ODJFNTY3MUIyMUQ1Q0E3MERCNDZFNDVDNTE4NUM0MDIyRDlERUY3RjlCNUZGRTczQzA0QjQxMkZBNworM0RGMDgwQjEKKzYyQzc2QzcyRjhFNTZBRjM1QUIwMzMzRDE2CiswMTlBNkE5N0I4RkQ5NjJGRkE3RTM3NTM3MTRDOUQwNEI1MkQzNkIwNEE2MEJGMjRBRjQyOTgwQkM3QTNFMDQzODNGMEUwNEQxMkQ5OEREMEFEM0I0NTRCN0REN0M5QThGRDI5QUEyOEJFRjZBRkFGOUFBOTAxMTAxRDg2QTI0MkYzMUVCRjlCNDlCRUNDRDA4NDk3QzIwRDQxQUEzQTBGMkE4OTg4ODY3OUU3QUE2QjM2CiszNTYzRjIwQworOEJFNzgxNzQzMjc0RjBGNERBMTJDNkY1REVFRQorNDgzQjE0QkFEMUQ1MUU4REVDRTZFMjFEM0ZDNDA1NjVBQkRGMDc5NTg0NjM0NUJFRDIzRDkxODkwMEI4RjU1QTkzRjJBMDI2RDEyREMzNDk0NTgwQzU0MjJENTAxMkFCQzQxQkI0NTBEMUIyMUVCRTY5QzU1RjM2NDU4MkQ5OTg2NDNDRDY4ODEwOTM3RTk2RjBGOTg1RDBBQ0M4QTM3Q0NBN0IyRkM3NEY4M0ZDOEY3QTA1OUY4NzZCQUE0RUEzMDRCNTIyNjJFQzAzMTRBMjNGRDA4NkQ0NzgxODgyOUMyRENBNUYKK0YxMjQ1OTY4Cis3QzYxQUIxNjg3RjBEMjVCMUY2ODMxMTM4NTQ2CitCQjhEQTU4MzBCMjc0MTE3RTFGQ0E4OTY5OThDNjUwRDBBMDhCREZCM0E5MTJBRTc2NDk3RDdCQzUxN0NFRURDM0FFRDM1NkU0QzE3RTVBOEU3ODlDMUE4MTIzMzA4QzFERUJDRjE1MzM2RDg0MkZDRDU0OUZEMTFBNDE2RURBMkE5QTQwMTc2M0YwQzc0OTlEMDBFRUEwMjA0QTExQTJGREUyNTVGNEM2OTQ3QUQ2QzkyOEYxRDkxRjIxRENERThDRDU5OTFBODc3OTY5RDRGRDczRDYwOEM5Qjk1QUUzRjE0OEJEMzgyQ0RBNENGM0U0NkJGMDg4MDRFMzAKKzJCODgKK0I0ODFDRQorOTJDRkZGMUYKKzgyMUY3MTk1MzIzMkFGRTlFMUY1NzNFRUJCCis4M0U2RjlERUI5MUJCNTNDOTcwRDdBQTExQjIxRDc2RjlCMjk5NkMxNTdGODJBQUQzOTlGNEM2NTg2RDY2MkY3NEFBQjI2RjdDRDFDQzBFNzk5RkU4NjJDODY4M0ZEODRENjFEQkQ1NzQ2Q0VFRTAzMjhBRjk2MTc1RjUyODk2OTJEQkNFMTZBNjJFN0ExODExRDY5NkM4ODIyRDk5MTE1NkExNDcwRERFRDNGOEYxNworRTA4NTZGNjgKKzlGRkVDMzcwNTUzRTU3MjYwOEY1QzM4RUUwCitFRjRFNUE4OTg0RTZBMDFDMDIzRkQ1MTZCRDZFQ0QzNkE3NjEzMzM0QzdFQzNCRThGRkYxMTgyQkY1ODJFQTBFRDgwM0Y2MDQwNkY3MTI3NUY2MDEwOUEyREQ0QjlEQ0Y1RjcyRERCQ0JGNjc2M0I4QzM4QUVGNUE0MUUwNkU5MDNEOUY2MkUzQ0NDQzkzMTExQkEzQUVDRTFDMzhEMTAxQTc2MgorN0NFM0VBNkQKKzcxNkYxRkUzMURFOTlDMzVGOURBRjg0RUYxQjAKKzM3RjZFODgzMUQ5OEE5QkFCMjQ1RkU3N0I2REE2MzMwNjQxNDM3NkQwNjA2NDhGRDM0OUJGQjY2ODNFMkJBNkZFNEQ3NEU2NDY0ODBENEQ0NzRGNTI5RTVFOEQ3ODc0NTM3Q0Y3NjQwODZGNTA2QTM2RkU1N0U3QzU3QjQwRDE5RDk4QTE2RTdBQ0U0MDUzNzIwOEQ4QjYxNDcwMzY3MEFCMzA0QjQ4MzMzRUM5MkFEMEMyNUIyMjVCMEJCMDZEMEQ3RDhFQTAwNUE1MzdFQzk2QzcyRUJFQzk1REIKKzM0OTg2QTMxCitBMjhGNDk4MDUyNEIzQUIxOTQyRTM0N0I1QQorNkUyRjUyMTBEMDM2OTJEM0MzMDk0NjA5NDNGMEJGOTY2QjQxNTVENDZDNEM0RUI3QTI2MzI0M0EyRTZCMzIyNkFDRDNBODk2NzM1MzEyQzEzNkZCMEI0RjU1NUU1RTBCNDA4RDBBNUU0NUM1MTE5MTE2NTQ3QTZFQTIzRkQ5RDc4QkYyM0IwMzYzMDQ2MDZGODFGNTA1MDBGNTg5QTcxOTZDMzI5NUQyMjRGMkYyQ0MyNAorRDkzMzkyN0YKKzQ5MEYwNzAyNjA3QUQzNjc5MkE5OTM4RUYyCiszNkY0MTQ3Q0IwMDZGNTgxNTg4NzFGNDRBRUQ0MTI5REM0MUU0QkREMzIxOEI4ODFBMUVGMEJCMkFEMkI4MEMwRjM4OEMyRjZBNkQyNDE5OEJBNUIzMURBNzA4MkIyNkNENERBMkVBNjQ2RjFENDIzNTUzN0M2MzdGQ0VGN0NFRjgxQkM4Njc5QUZGNkVDNUQ0RkM3NzQ0QzY5RUU1MDNFRTUwMTYxRjZDOTczRjRGNDUwMTYwODVDCis4NDQ5NTFDMAorQzY1RjIzMTM3QTQ5NTRDQjM0NTI3RTA4MTc5NworNDhDNDdEMzJBNzVBRkE1RDgyMzUxQUExRUI1RjgyQ0ZCRTVDQUZDNERDQjVDNTNDMUM4ODQ3RkVDNzZCMThENTc4NjMyMTkyQjM2NkYzNTA2OTQ5Njg5MDhBNkZCMzYyODcwRjMxRTYxRUJBMDNCQzcxMDUxMzU3OEVGQzlCRThCRDY4MEM5RTdCM0I4QjkwOERDQkE1NjhERTcxMEQ1QzE3OThFOTNDQkJEM0M2RDE2QTg0MkFGRDlCNkYxRDgzREE1QUI3NzA2QzE2MjZCOUJFRUNBQTdDM0IxRUI0RUQwOEEyRTUyMTg0Q0M5MDlBOTQwRTZCMEFGNjVECitERUNGCitENEYyMjQ1MzlDNEI4NEZENTQ0NzkyODA5MjBBNDg3MDdGMTY4MDQxMUMzODYwQzg5NDMyNEMzNkY5MEU0MEM1RUFDQzUwNDAwRTM5RDMxQjZFQ0I1MjNGNkFFRTJDCitEQTFBMEZENAorN0MwODA5NUJBNTc5N0QwNjhFMkE4MzEyOUM5MQorMkFDREI0N0E0N0YyOERBOTU2M0VFNTQwNjQ2ODEyNzk0RDA3NTZFOEMwODJDRTlFQjMyQzE1MDM0MTg1NURFRkZENUY4RDU2NTYwMjA2QTI3MTE1NUJGRjUwNzcyODJBQzU2RUNBNjY5QkQ0OTFDNTNEOEM4NTlFNEVDMkJGQjlDMzAxRTkzQkI5QTY4MEM5RjcyMDYzQjg1Q0JCNUQ4QkQ4NTExNDE1N0ZDNDI5RTlFOEYzODZFM0JFOTMzMjg3MjQxQTkxNzE1MEM2MzMyMTQ1RTMxREQyMzgKKzQzM0FCRTgyCis1QThCODRBOUU0ODdFNzNEMDQ1NzJEODYxQworN0EyRDY0MDQ0NDM0Njk4MzczODYxMzcxNzAxRDIzMDBDQzgzNDJFQjcyRTVGRTU4RTJERDNEODIyRUE4MzI4NDg2RkJBQjZENzRBNzUxMUFEODk3QTE4M0ZGQ0RGQkY1QkZEOTcwQjgwNzEzMUUwMzQ3NDUzNzNEOTUyRjIxRDBFMEEwRTc0M0Q4RTA1MzcxRDFGMTYxRjc2RjEzQTA1NQorQTFFNTUyQjUKKzMyRjdGQjk3NEJCNDNFQzNGRUFCNUMyNDY4QjMKKzUxNUI0RTVDRjhGQjJBNUUxRURENTFBMzJERUQ4Qzk3MzhBQkYwMjc3NEFGMDY5RkJBRkZFNDZFNEIzQTY3NDhBRDYwNDgyRkRENkQ3RkYyNjlGNEExNEMwNzJERUY4NDY1MEQ4OTZCODMzREM4MEM4REZGNTRFQ0I5MTVEOTlDMzgxMEE1QTUwRjlBRDFENTJEQ0I0OTBBREI4MDZEMThFRUIwMUJFRUM2RjhBQzgzRTdCRjVCOUVCOEFEOUJCOUYyRjU4RUU0OEZERkNDNkE0MTY3RkJDNkNCNjI2QkUzRjRDOTZBMkRBQUIxNDI5NDAzNkM2QUQ4RDUzRAorNTJGQQorREFDQjFEMTRGRTk5QzdCNzE5NjhBQzgxMkM0RjhDQUFFNDA1QjZENkZDRUNCNzk2RkZCNDI0NzcwQzQ3QjNEQzA3NTUyNgorMUY0OUIxN0EKKzY5MTk4Mjc5NzY0OTA1NkNBODM1MzU0QzdGCis0MkFEMTg3OTU3NDVCMUE1RTcxMjM2MkFFRTlGRjg4QTg4MzlCMURFRDc5NjY0NDZGNTdCNkIwRkIxQjZCMEYzREUxNjQ2RjJBRTczRDg5QzNCQTA1NUVERDg1RTQ0NkI0ODVCQ0QyNjg1RUEKK0U4MERGQ0IwCitGQkIwQzY5MUFDNTBBQTJDRkE0RTNENzlDMzgzCitBQkIwMDE5OTlFMDRDM0U5NzhBM0Q3MkEzODBBQjJGNkYxOTYzODM5NjkxNjlDNjVGMUZFMDZDOThGNDMzM0E2NTQ4MjQzNkNDN0UzOEM2MkMwQjk0OTNGMTc0QzUzNzM5NTg2QTlEMkQ2MTlFRDdBNTY5QkFBNzgyMDM0ODVGMkY2RDAwOEQyRjE3Q0EyQjdCMTQ5RDJBMjZFQ0FDQjA1QkZENjA2RUNBQTdBQTgzMUNEQzE0RTJERTQ4MDE1NzIxMTU1MEFENUUwRTlENzFGQUMzQzBBN0Y4MUVFQUFDNTBBOUIzRjIxRUEyNzNGMEZCQTQ3OTY4MjQ3OTMKKzc4NTIKKzg1RjUyQTkxODc2RTVBMzUyNzFDNzA4MUM3NDBGNTVGNUMyOUIyRjNBQkExRTAwNDc3OUMyN0ZDMDgwNUE3CitDRjk4M0UxMAorODQ0RDgzQTlFNDMwNjYxMkU4Q0NBODM5MDRGMAorMEM2RjgxMjk0ODJFMjUzQjFDNDc3QkUyQTA3QzQ4NjM0OEJERUU4MEM3MUJBRjI1QjFENkEwMjNFNjk5MjMzRDc0OThGMTVBREY1Rjk0OUY2REQ0Qzc1MUYwQzNBMzY2OEQ3Nzc1RDNCNzMzNDJBOTgxRTE5NzA5M0M0NzNGRjBCMzJFNzA5M0Q3RUIwRDIxNUYyNjkzNDBFREZCNDJDMEVFMjJENDk5RjU3RjYzRDhEQUEzNEM4NUE4Q0YxNEM3NUMwMTZEOTAzNDEzRTE4NjVCQzc0OTc3CiswM0Y0M0RBMAorNTYzQjY1MEFGQ0Q1NDMzQjFFOTM2NEYwMEUKKzQ2MDJBODcwMkI0MzBBNEU0QjJDQUI3OTk2QjU2NTNDOUNEMzc0MTYwNTNDMTEwNjU4RkU2RkRCNzFGRUIzNTc5QkFGMjg5RTY5MkExMjgzNUZEMDBEMzM1QTYwMTkzNzEyRDM2MzgyMjA4RTQ4OTNGQUVBOERDMjk1RDcxQzRCNTBBOTRBNDM2MUZECisxQTc3ODdFNQorRjgzRDRGRUEwOUFDMTMxNTA2MzlENzUyMjE2MworQjI4NzFEREJFODAxMUEyMDBFRENFQzdGNkZEMzEwRjE5MTYzRjdGRkY1MDZBM0M5RTNDRTgzMkM0REE2MEM2NEQyRTI0NTdCNUQwREY0MTdFMEY4MTZCQjIxM0QxRjM3NTNDRkEyMUQxNEJFNTRCQjMyMUI1NjcxOEY2MTYxNDU1RUE3Q0MyNTg1QkIwOERGOTc2MEUwMjlGQUJDNkZEMjFBMkY4NzFEREFEMDBDRTRGRjlCRjhGMjRGODg3ODhDMjFBRDkwQzUyRDlFQTBDM0QxMENERERFOTU4RUU3QjkwNzhBNUE5ODMzQzJDOQorODc4NDQzRkEKKzUyNkI0ODM5NTY3NEY4QkY2OTc4M0YxRjE0MjcKK0Y1ODI2RjVEQjkwODBGQzYyMkMwMjhCMEQzRDJBQzQ2QUI2MjgyQjM3N0I3RjI2NEM4NkI0M0MyQjRENzU1OTVBMjdDMzBBMEJDOUJGRUM1MjFGRTVFNUI2QTY2OTZCODY5MTE1MEJFMTRCQUNDRTM0RUZENjNGREJBMUYyQjUzRkYyRkVCNkJBNjFCQTE3MTJDQjQyOTFCODcxNDMzQzJDMjA0MUNGN0Y5RDFGMDBDMTg0MUJEQkY2QUQyMTIzMTQxRjlBMENDRDVFRjdDMUZFMDE0Cis2NzMzRTQ1NQorOEI1QkRFNkRFRTBCODJCRTREM0Q3ODVBMzEKK0MxQ0Y1QjI0N0JEQUVCNjE1ODYwMTI2QUMxMzMyNDQwRURFMjJFNkZCODlDM0U2MzFCREFFQjBGQ0RFREQ5QzEzMUFFRDZFNzg0RkY2NzNDNzVFNzRGRUJDNzNCNjAwOTY5N0I5RkI5OTZBRTFBREIwMDhDMzRBNzhGN0NCMjhENkY5MzVERTRBRjk5MDYyMUUwMzNFNDhFNEZCMzA5NTY1QUZDMjE2Q0Y2RTU5MworMEFDMTRGMUYKKzU5ODlDRkIzRTg1MUQ4MEQyMTA4MzJGNkQyODEKK0YwRjlDNDVGM0Q3REJCMkQ3M0QxRjRBOTNDNTRFMjQ0RUUzNjdFNkQ0QzA3RTU2RjVCNTg2OTI2MjY1MTFGMkI4NjEyMjVERDg4RDJFQzY5RjQ4M0E3QTAxNDA3NEZFQTQ1N0Y4NEY1OUE3RDlFQTI4RjE2OTkzOTkxQkFFM0EzQUE5MTdGMkZGNjZBMTAxQTQ4OUNBOENFRjRCOUI5RDEyMTJCNjJEREE0NDhEQUJEODVFNzFBQ0JCNUVBQkJCOEMyMTA2RjY5RjhGMzVGMTBFN0I4MTE5MDJBRjUyRkE0QTdGRDFCOENFQzY1Q0Q0NkI0RTE5NUE3CitCQTdCQUUyMQorQUVENDE0Qjg4MDU5NjBDQUY5MThFMjI1QzUKK0VDQkJCRkNCRDYwOEY2QjZEQTM0QTYxMDRGMjBFNDY0QTE0MkZEOEZDMDIxRDNBODgwQTk3N0JDOEQyRkEwNjgwRjhGRTlBMTAwMUREODNCRUMxNUZDODA0RDQzRjg5MkI2MTJBQjlENDMyNzgyQUI0QTdEQTgzM0QwODQxRDE3RkM0OTZEMzc2NgorMDc1NDRDNEQKKzZERUQzNEFDRTYwMzY4OEYwMDg5NjFGMDVECis1QjgzQ0UwRTIwQkJEMTI0QjA3NEVFNzQxNTQwNTM2QzI2ODFENkEwMjIzMjYzRUMxMjc4Rjc4MzE5RDVFMERERDVEOEI2MDlENEI4RUVCRjAzNUY3OTA2QUIzQzhENjk0NEE1OTRGNzA0NzExQTBERUQ5QjhCNzdEMTE0NzZBRkU4Q0NFMjVFQjc1Q0NCOTM0ODhDNjcyMDkwRDg4OEExRjk1NUI2MEE4NkU2MTA3QUJBMzQzRURDOTA2MjNDNzUwMzM2CitBNzVCNDQyQQorQ0Q4REI4REQ0MDU3Qzk1QTk0OEEyRkNDRDkKKzFCRkNFQTVFQkE2RkJGQkNGNDEzODJEMTIwQTNGMzEzODkzM0M4QkU1MEVCQTJBMTNBNjhENjExQTgyNTNCMEEyQUNBNTk3NDUyQjREMkEwMjAyRkExMDg2NjRDMUQyMkUxOEVGQzNEMUQ5RUY2NTk0MEQ0NUZCNjBDRUMxRUUzODRCNkMzQzBFOUQ4NUFCMEIwQjM2QkEzODMwMUM4MUJGRDNGNjc0RDkzMDI2NkI1QjQKK0M1ODQzMTJFCitFNEE1QThGOEFCNURDQUUzRjc1RkE4QjFFMUMyCitENkFCOTIyNzA2N0M4RkNEMUZDODRCNTUxNEFBREIxRDg0OEU4OTUxMzk2MTIyOEM4MTEwNEQ5N0FEQzEzODJGQTlBNUEyQzZCNzk3NjMyRkU5ODZGMjY1M0FEQTZGMDdFMDQ0NjFGMEFDOUUwMkFFNjMxOUVCMzE2Rjg0NjQ0MDkyOTY2Qjg2MEEwNkMwOUE1OThEMDEwQUQzQTNBQkQ2QzRGMzJCNEZERUQ3RDU5QUYxOTZCODBBNDI0NzAwQ0UyRDQ3NkU1QTZFNDY4NUNENzdFRjUzRjg1QTM5QjI1NTk5NDkwNzc2REUyMjE3MzFCNkI2N0MyNzE5QzQKKzA5NTQKKzBFMkZGRUZBOUFGODdBRDNEQUZBNTI3MjBBRUEKKzA2NjU1N0IzCis0OTJCNkE4NkFDM0RGNTAxNEQ4RDkxNjE1MTBCCiszNkIyMzBFRjRFNzZENTUwQjZCOTI5NEM0RkJGNDdFMEZFMTUyOEJGMzY1MTA4RkRCNTgwODE5NkY5NjkxQjU0NTVFN0ZDMjkwQzg1Rjg4MUM4NDJDREVERDA2RUUwN0NGQkVENTdCQjUzNURBMjlBMDNFMDVDRDkyOUIzM0NENjY2M0E2OEJFNTA1OEFFRkQwOUQ1MjI2OTAzQTUyMkQ4NTUyM0FDRjlFODgwMkFEMDQ0NEY0RTFEQkE2NUZCMDIyOUQ5OUI3OTA4Q0YyMkFEMThDMjVDNDVDN0NFNzREMkNFRjJDMUVBQURCOEQ1MDUzNjBGOTRCQzcyRTcKKzJFOEMKK0QzMjkzNkMxQUQwMURBODk5RDI5OUM5RDMzN0MwNzYzRUNBNzAyMjdBRDQ4NkY2NEIyCiszQjhFRTNCOAorQzY1MDk5NTZFNDBDRkNBRjE5Q0VGM0YwMkUzQgorODc1MUUwNzgyRjc3Q0YyOUU4MkE5NTAxNjE0NUFCNDkxMkExRDU2RkJGQzVFMzkyNTE5RTQ1NEQyREEwNDk4RDZCRjFFQjY1OTM0RDU0QTI5MEUyNEVGNjlERDFBQ0M0RTQwQkUyMDY0NDlDMzg4MEQxRjZFODk0MUQxQjc4QTJGM0U3Njg5MjBDM0FFRUNFM0Q3MDNFNEI1ODkzNjZEREZERkE2Mzc4NjgyQzExMUI1NTYwMjVBQTM5RDEyQTJFREFCNTRFRjFBNkE2OTE4OTJENTgyRDU1NTVEQTlGREVCNDE0M0U1MjlCQUU4OEJBMDA5QjU2NkNGQjEwCitBMTBBCisyOTU3NjVDMAorQkMyMkYxMDBERDlDMUQxQzE1OUQ2NDI0QkYKKzI2MTVDOUZDRTJCRTFBMTYxRjM1QTQ1MTYyMDEwNjQ1QzNGMzY5ODMzQjVFCiswRTlDQTkzRAorNjNDRkVFMTA3OUU0QjUyNDc3QTExQzU1QjUwNworQTZCMTMwRUVEMjcyQzdFMAorMkQ0MzNDNUYKKzAwNzBFOENCMzREQzFFQjg5MDdEQTc1ODEzNDkxOEFBQ0U3QzY4N0QzNjNFQjdFNTAzQTgyNDI5OUEwNDE5Q0RGM0QxCisxNDhBQzlFQThGQUQxNzc5MDQ5QkRFQUNEN0QwQkQ3QTEwOEEwNjY3RkJBQTZCRTg5QkJGQTJGQkFEQjNFMDJCQjEzMjA3MjcxQThECitCRTc4OEY3RTk0MkFBQkUxMzBGMDBEMUY4NTFBRDRCRDU4NDRENzBGRjUwREI5ODgxRUMzOEIKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDYgcHV0CitkdXAgMyAvQzAwNTggcHV0CitkdXAgNCAvQzAwNjQgcHV0CitkdXAgNSAvQzAwOTUgcHV0CitkdXAgNiAvQzAwOTcgcHV0CitkdXAgNyAvQzAwOTkgcHV0CitkdXAgOCAvQzAxMDAgcHV0CitkdXAgOSAvQzAxMDEgcHV0CitkdXAgMTAgL0MwMTAyIHB1dAorZHVwIDExIC9DMDEwNCBwdXQKK2R1cCAxMiAvQzAxMDUgcHV0CitkdXAgMTMgL0MwMTA2IHB1dAorZHVwIDE0IC9DMDEwOSBwdXQKK2R1cCAxNSAvQzAxMTAgcHV0CitkdXAgMTYgL0MwMTExIHB1dAorZHVwIDE3IC9DMDExMiBwdXQKK2R1cCAxOCAvQzAxMTQgcHV0CitkdXAgMTkgL0MwMTE1IHB1dAorZHVwIDIwIC9DMDExNiBwdXQKK2R1cCAyMSAvQzAxMTcgcHV0CitkdXAgMjIgL0MwMTE4IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy04MyAtMjM2IDkyMiA3MTJdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNjlDQ0VDMUE5OTEyNjkxMDEyQTRCQjU0MDBGMjRCQjJBMTkKK0VDQjhGNjA3NkZBNDRGMTA5QkUzMTAwMgorMTExNDg3OTY1RUI4NDZBOUZCCisxNkQyN0E2MQorOUE3MzlFNzNDNDU3RDAyMDkyNzg3NjY1NTYKK0FDQTg4RURBMUYyNjhGRjNDMkI4QzkwQTIzRDBBNjM4M0Q1QTVBMDYxRkQzNTExRTFEMEU3MkJENUZBRUMxCisxOTc2QjE4QQorMUFFRjZDOTZENTQ1NzI0Qjc0NThBQTM5OEUKKzM3QkY5ODRGMjAwQ0U1MUM0RTE3RDEzODYzMzRDOTM3RTg5NEI1MjRCN0IyRUI1RjAzRTg5Q0VGQTgxMTc2QTJGMDc3ODM3QjU0MEI2OUU0NUQ0MjQzQ0Y2Q0ZGMjM1OENCRTE5Mjc1MUQ1NgorMjAwMTQ3NzUKKzdBNjZFN0I5ODM2ODM5ODRDRUU5RDk4MDBGOTgKKzAzOEI4MTVDOUEwOTcyODQ0QkEyQkYxNERDMDFBRjQyRTU2NjY4RjM1MEFCNDcwQ0VFMzU4OTkyMEIwODZDRTJDMjFGODdBM0E1NjUzQUFBMDQ2OTk4NzM1RDYwREQ5NTg5MDA4MDJFMkIxRjE1RTVEMjlFMzFFOEVDMEY5MjJENEI4MjAxNjBGOTAxMjgwNzBEOEZEMURDREY4RkMzQzNGOTU2RjYwMDgyM0I5M0NCQjc3MDJBMzg3Nzc2NzhFMUVCQjE4M0NEQzU1Q0U4REY2NzQ1NDE4NEUzMUEzODRGMENGQzBCQkNCQjEyQjE2NTA5NzQwOURBRkZFRQorNDk1RQorMjM3ODAzMzBBMUM4OEVFNDlCRDU2QUNCNTlEMzcxOTA5MjEwNzE1QTFEMzQxODg4MEZGQURBMEFDQjZCMTQ5RTlGMjhENzIxOENGMENEMjlGM0Q2RjNFNUNERDJFOTZCOTE5RkI2MEUyMDdBQjEzNjRCODg2NTQ4QjQ2NUVEQkFFRDk4QUJBMkIyNEM0NTQ1Rjc4MTJDODZBQjBFMkE1Q0YwMTk5NzcxMjdBNzg0MDZBMTQ4MzA1RkU3RjEwOTE3ODhBMTc4OTQzRURFMkZENjYwNDY4NjYyMEMzRkNBNEQ1RTEwNUUKK0I0NjQzMkJBCitBMjA0REQ5MTA1MUM4NkQ4QjVDRDhBMjMzNQorQjYyQ0ExRDhCODZCNDNBMjNCRjczQzlBODI3NzA1OENFMTMxQzlENDZGMkMKKzBDRUQ0QTkwCis5NTE0MERFMUE2RUZFMUY1RjAyQzA4NjFDQkU4CitBOTgyN0IzRjNDQkY0NUE4OEVBNjA5OUJEMjZEMzBFRjQyODM2QzYwMDAyNjNCRkRBQkRDN0IyNUYyM0FEMEIxQUIwMUQwMkMxRTgxOTBCREMyQURGNEUzNjY4QUVEM0FCMDRDM0JDQkI2NTdBMzY3QzNENTJENkUwOTAxQTI2MjhEQkI1MTI2QkI4Q0JGMjc1NUFCQUJDMTJFODQ5RTJGREFBNjVEOTc1RTJGOTVCQUZBMkU5MjZDQ0Q0MENBMDZGNkE5MDI1MzRCNzQ5MDQzRDNFRjg5MTZCNDdCREJGMjRERTEyMzkwMzA0RkI3Rjc0QjA3OTk0MkE1RkIKKzA5NDcKK0NGMDA1MTQxCisyQ0NDMUJEMAorREU5NTNFQ0Q4RkVCNTVFMDc1MDQ4OTA0QkIKK0Q0N0QyNzZERTRERUMwRTBGRUI0OTVCMjQ5MDc2MDU3NzlDMERCQTQ2MTU4MUI3MkU1Q0U3RTkyQjRCODI0OTIxMkVDM0E2MzZDOTkxOUYxNjdFQTcwOUNBNEE5RjdCMTEzMUJBOEI1NTJDRDAzMTAzNTdDNzVCNzA4MEY2RjQzQzA5RUNBRkMxMkEwMjc2NEE2QjhCRDU3Qjk5Q0MyMUVDQzc0Cis3RjBBMzlDQworMUU4RjM2RThCOTU2RjMxMEU3RTJCRkZDQ0FGNgorMzRBRTdBMUQ4MjA3RkE5RkZBQjRBMjQ5NjRDQUM5NjQ0OEI0RUEyMDFBNDc5NUZENjlBNjQ2RDJCNEM5NTk5QkZBNjlCRkYwOEQ5RUM2RjhCNkQ2OTk5QUNFQjlGMkI1Q0U3OTNCMUJBMkE3MUZGQjQ2NjEzNEEzNTJCNDY4NzhGMTE0RDg5RjQ0QUYyMEVCM0NBRjAwQkZEQ0JDMDkzMEY0MTFDREVFQ0ZGQ0YzMzBBN0UxREQ0RjgyRTc1QzA0MzQzRkE3RDBCQUU5QjBERjZEQ0FCQzBBCis0MjQ0OTJBMQorMjlFQkJFNEIxRDU1RDcxOTREM0FENEY0REEKK0M3MTlCREI1RUVEQTc2RDhFOUYwMzlCNjQ0QjdENDE5RDkyNjY4REUzNzJGMjcwNzlFNEU3NUZFMTA2NjY3RTk4OUMzMjFGRjkzMTE3MTc1RUM5NDg2NDAzRkY4OUQyM0MxOTU2QzFFQzFCMjc4MjEyOUVEQUM4OEZDM0NBMTIwRUI0MzFGQzAzOEZDRjVFNjUxRkREQzRBMkRGODU4RkE4ODJCRjA5RjlFOTU3MjAwNDJFQUE3NDQKKzlFNDIwMjIxCitEQUE2NEM2ODE2NjBBNTA1MTBBRjhCNTU0RQorMjcwQTM1MTc5OTQ3QjI5RkRCNEFBMTk5RjIyNTMxRDlBMTI4RDMwQTdEQjQxNjgyMzNDOEU5MzMxNEEyOURBRThGQUNGMTQzNTZFREY3QkZDNkI5RTZFRDkwOTI0NEFCMTBDNEU4OTU4MUQ5OUE5NkMyRUEzNUYyMzM3QjM2RTUyQkI3MzkzQ0YyQzQ3QkJENkQzODc5NEU2NDJBOEQ5OTc0QjRDRTA1MDQ5MUZGODc2QjIxMUYwN0FCCitDQzI1MDREQQorNzFCRkQ2MURBNzIzRUVCMEYyMzczNDRFODRCNgorMDM3MzhCMjdEQkMwQkNGRThFQjYxQjBEQjkzMTdGRkY2MkJFNzVDRDM3RjI3Qjk1RkUxQzUyNDM0NzUwMENEODI5Q0JDMzg4NjQ0RjMwN0VDODI1RUNCMTFEMTk3REQ5NkNFRTI1NTZBQTE3NDJGM0QzRkI2Q0JFNEUzOTczMzIwRjYwMEY1MzRERUQ2N0M4ODRDNzAwMzI1NjA1RTlDRjkyRUUzODQ0MDE1RkE2N0I5QUE0NjMxMzY2OTUwNUFCNjIxNUE1REY4MDdFMDNFMQorNkU2Qjc1MUMKKzI1RkM4M0IzRjFEMkEyRkE5N0VBQTZDM0MzCiszQURFQkI1NDkzQkU4Q0NDRkQxQ0MyRDAxNkJCNUNGOUZFRTA1Q0RDOUFFMjNEOUY2ODc3OTBDMzU4MkNDOEExNkI3RDkyQTcyMDJGNUM0OENCODE5RDE5OTQ4MEZDOTc0MzFFM0FCQjhGOTFCNjdGOENBNERCRkRGQzA2M0Y1Q0ZGMkJCNzZFNTJBQjQxOUZGMkIzMDRENjFGOTIKKzg3NURGRDFCCitEQ0EzNzM4MkJCQjAwNkY1RDIwRDE4NjQ5RgorMUMxRUI3NTM2NEEyMkM2QjAwQ0IzOUI3MTlFMzFDRjM2OEZFMjNFMDg3MDdGRDRDM0NBN0RGNTcyMTBGRDY0RDJDREI5NTcwRjBBNUYyREU4NzAzNDg4NzI5M0FCMDJDRDQ0NDFFQzRBQUUyOTJBRDA1RjE4QTQ5M0FFMkIyRTI2MUEzRkU1MTg4RkQ1MzI2NjdEMkU4QzcwOUJFODQyODU4OEM4QUI4N0UwNTQ5QzBCQjhENjMwQjUzNUJBNgorMzQ4MUFGN0YKKzkxQUY1NzZEM0EyRTA5OTAxRUNCRjE0QkYwNTYKK0ZGMDgwNERFREI3QjkwOUQ3RjZFMkU5NjE3NjRFRTE4QUYxMzk3QTExOUJDNTgwRDVGQTUzNTJEQjZCRDlBNUM2RUREOTQ4MTJBRUJGNUFCQjlENTU4NzJBNENFNTg0NEIxNTdBMzZGRjA2NkEwMjE1MEQ2OTZFN0UwQjI4QkI4RTAwNzdBMDU3QjBDNDM2ODExQTMyMEQ1NEZBNzIzRjJFOEYwMzUyRUMwRDI1NEY3NjM4RUNGRjdEMEI3QzBCNEU0OTVGMkY2RUJCMkZCMzA4NkNFNjZFQjFBRUNCNzYxRDQxNjY1QkI4NTZCNEZERTJBNjQ2RDg1RUNCOAorOERBQworNzg5QjAyRTg1RTJFNkI0MEZFNjM1ODNEQUE5Q0NBRUUzMjI4NzU3OURDNUFCOEQxRDk4ODNBMzcKKzFGREExRkUxCis2NDA5OEZCOTZGNzQ2MzBCOTY0QTNBODU2MTg3Cis0NTcyOTQwNDhFQjI2NzhEMzUyNEMwMEFCRjgwNjUxOUNEN0IxNjVFQkJCMjhDQjE3RTMwMDQ3ODBDMUE5Qzk5MTc4M0U1RDg2MkVDOUI5QkNBNTIxNDI5RTI0RUZGNzJEODdCRjc0ODY3RkE2Q0RCMjQ3MzczRTE4RTNDNjcwQjVEQzJDMDczNjM4MUM3MEVFNEU5Njc0NTEwQjM5RkY3MURGQjg1RTgwRDRGMEQ5NzMyNDM1ODlGNjBBNjZFNUFBNkM4RDcyMjFGNjAyNworQjk2QUE0MjgKKzA3MjE0MTg5NkVFNDYxMDE1MzREQzdGMkY2Cis5ODczMDQ3NjEwRkQxM0NBNkQyMTZBNUY4Qzg2OTYwMjA5MkEwRDU2MTA3MDI4NTZENUJGMjA2MDg3QTQyRDhFMjg3RDY4QzQwRTIxNzhFRjlBMTZBQzQxQTAwRjZGMzY5REQ0RjI5N0Q0NUFGMTNGNkZBMkNBMTE0MTU3MEEyNEU5NDQ1REE3NTE0RQorMjM4NDNFNjQKK0VBMkYwOTExNDkxODA4RUY4M0RGNTE3NjZFOUMKK0RDMURBOTBCREM1RDIyMDA0RTE1MzIyNjRGN0IwOUNBQkQxNTFCRTJERjA3RkQ0NjE0OUJFMTYyOUM2NTVFNThCMjZGQjRCNkE3NkU3RTAyMzdGRkE5NkNGMTVBQUE2RDMzRjE2QkQ1ODIyNjhGNjQ2N0IzRUEwM0FBNjlBM0NFNUZEOEIyQjQyNUIzMUUzM0UxMkJFRDBGNEYzQzBCMjBGMjdFQ0U1NjM2NUI3QTdGQzgwRjk5OUM1N0IwN0Y5QkE3OTlCQTgxRUFBMEVEODM5NzE4NUM1Qjc5MTJEMEREMzUKKzNCQ0UyQjEyCisyRDZFQjkxQThCNEYzNkY1RTA3NkZFMzM4MworNzAwQTU5NEE3MzQ0MjZEREY5NjhCRENDMUNCNzUzMkVCNTI5MzdCRjQ3ODg5NDZDMDQxOUFCNEFGQkNFOThENDZDOTNERkNGRTYyN0ZEOTg0MTIxODA1RkYwMUNFRDlCNjFGQzE0MTdBMzExQjUyQzBGRTcyNzdBOTlFNDQ4RUI3REU0OEVCMjJEQUQ4MUUyMEY5NTc4OTYyMDYzNDBDRTAzRDhCNkFBRTdGNUI1RTNBMgorODM2QkVDNkIKKzg2OUQ1Q0JCRTE1Q0Q4MDhFNzc5REFFODIzN0UKKzRBMzREOUM0RDhFQkNGOEZBMTAzOTA4MjQ0RUYyRTIzMjhFMzZDODgzNjU1RTg0MkYwNTM0NzA5OTlBM0M2Njc3Q0U4NjczNDE4MUYxM0NCMUQxNDQ2MzZGMzY2NTg0QzJFRUM4OTBFMzFDNTI4MTNBQTU3QURBNjUwNzcwNjEzRjNEQzQwNUIzRTMxQzhFMEM4MjA2MTg4RUE5NTk4N0UyNURFODI5NjQ2NDc5MENGRUMyMDM0RkMyRDQ0NzVFN0ZBQzQ4MDYxRDgzOUNFQkNDQUExRENBNDhGMTcyQzgzNTM1QjUyRjFBRUU5MjBFRTMzCis5MzRBNEU3RgorNTlBRUZDRkM1NUU1MDU0QzE0RjVCNTNDQ0YKKzExNTc2QTVCOUYzMjZBNzg1RkYwMDBDRTE3Njc5MzYzMjU4OUM2M0U1MkEyNTM5NjZDREI2RUQ1RjcxMjdGNTA3NzI4RUMzOEEyRjc1Q0QxOUVDQUY4RDE3NkZDN0VGREFEODBDOTdGRDU1NENBMTdDQTYyNjlDNjgyRUY4RTQ3REE3NTFBM0MKKzlFMjU2OTVCCitCRjJFQzZGQTcyRUQ2Q0M3QUIwNUVFN0ZENQorOTY0MUE5OURBMjQ3NDU4RkE3QjQ3QjQyNURCMEM1RUY3RjQ5NUVBQTQ5QTQ4QjUwNkI5MDBCRjBCMDZDNjA2OTQyQTY4NkUzOUM0MjgxRTE4RkUzNUU3NzYwMjNBMDU0RkE5QTdEMzI5N0Y1NkM3NTRCODY2MzdCQ0RDMzFCMEUwOUM5N0YwNUZGRjU2M0VCNkY0QkMwOTBGM0RCQTcyNzM2QUQyREVCQjhERUM1QUM2MjcyNUIKKzM2QTg1ODY1Cis5M0IwOTEwODUxQTFDOUZEQThEQkJCREY3NQorQzYwRDI4MDg2NzEzNjVDQTZEQkE1NDEwRTVGMkQ4RjJGMkUxNEREQTc1RjQ2RUUxNEU1MjA2OTcwNENBMzkwQjc4NDUzMkQwMkMxOTQwRjUyNzA2MUZDMkZDQ0ZCMEVEN0ZFMDgyMDg1QkQ2Q0E1NUY1ODU1RDRFNjk2MjI3N0JDRTE1OUEyQUE1MjgwN0UwRTdFNzY4NkFFOTM2QzNCQ0I0M0ZCQzBFMTRBMEI5QUE4MzIxNkI2QgorOUY5QTI4RTUKKzRFODA0QTcyMDRFMDVGN0Q5REUwNDE4RjI5MjYKKzkxNkZCMzA5MzM0NkI2MkIKKzk3ODAxOUIxCisxODM4NThERTdEQTIzNDhFNjFDNDZFOTQ4M0RFNjNDMjNCMkU3QkMwMzZFNUVBRkY4OTQ2NUU1QUQ2M0ZCMzE2QjRCRQorMDY0NUExODdCRkEyRTdCMjdFOEJEMEMzOTdFRTdDQjY1MkZFQTk0Rjc5NTE0ODNGQzM0QzFGMzM1OTFERjMyQTcyNDc0MDE2QzJFRAorODYwRkNBQTA2M0EyQjMwMEM5NEFERDk1RUFBNTVCQTJBNUQ0RkIzOEUzNDZCOTFFQThGNjdECiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorZHVwIDIgL0MwMDgzIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzUwIDQ1IDc3NSA3MTNdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyNzVERDg5QTg3OTBFQUQxOEVGQzc3RDNGRkFFODREQTVECiszMTIwNzRDNEQ1NDJERDVCRUM3MDk2OEY3NURDCisyNTBDMzk1NEU4REZCOEY0ODU3QkZFRjA5MkVCQTQ5RDI0ODk1NUE4NThDNUE1RjU1RjdCOTg3RUEwNkVDODQyOEQ5MzkwODRDODhGNUIxNTdEODBBQjJENzA2QTdFQjkzNkMzNDI5MTczNTg4RDJBQkE2QTI3REM5NEMwQjQ4NEYzMTY2NjM1NTU3OTcwMDRDQkZBNzlFN0I4NTQ1QzgxMEJGOUNBOTJGNjFBQkQ5RTIwMkVEOUU5NTk0M0RGN0E1QUJCRjNDMjBCREUzQjZFRUM5QzBCOTVBNEM5QzFEMzhBQTdDNjc4NkFEQkJCNzlFRTE4M0JEREYxOTQKKzE5NTMKKzY0NDlEQkI3QUU0N0U5RkM2RjNBQkYxRENEN0ExRTI3NEU4N0RBRTkKK0EyMjczN0ZBCis2NDA0QjIxNUEyN0JGQUY2RDBCNTBFOTREMgorMDcxMjNBNUJCMzgwQzg2REI1MDMzRUU3NDMxODFCQkZDQzAzNTY1NzFGNzI5N0EyMDdDMjNGMUU1ODgyNTdGREVGNURGMjI5CitDQUJGM0IzQworOUUwOTg4QzYzQjM1OEFDQTRCNEZFQjAzM0RGQgorRTJFMzg3QTA2QTIzQ0FDQQorOEUxMDRCOTAKK0RGREJENDFGMDYzRThBOERGQTBBQkE0REQ3NDQzMDE1NTI2QUU1MjU1MzE1NTk3Nzc5RTA0RDg1ODQ5MzA1RUE0RjMxCis1Q0RBRDA2RTU4NDFFMUI4MDc0NzYwQzk5NzAyQjhDRjQ0M0Q3NTIxNzREOTk2Qzk0RTY5MDc5N0E5NTg3Q0Y1MDE3REVCMTFFNUZFCiswMjU3NkU5RTA4QjM5Njg4QkJFOTlBMTg2QUE4RkM3RTIyMkY1RTUyQjI5QTdGREYzNzlFRjUKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3N5bTpjbGFzMTIgMTIuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEwIDEwLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0IDE0LjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorJSVJbmNsdWRlUmVzb3VyY2U6IGZvbnQgSGVsdmV0aWNhCisvd3N0OmhlbHZwczEwIDEwLjAwIC9IZWx2ZXRpY2EgL3dzdDpoZWx2cHMgSUxFbmNvZGluZyAwIGRlY2xhcmVORm9udCBkZWYKKy9zeW06Y2xhczEwIDEwLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCislJUVuZFBhZ2VTZXR1cAorR1MKKzAgMTM5NzggMTA4MDEgMTM5NzggMTA4MDEgMCAwIDAgY2xwCit3c3Q6ZHV0Y2gxNCBTRgorMC4wMCAwLjAwIDAuMDAgMS4wMCBzZXRjbXlrY29sb3IKKzwxNDIwMmUyYTIwMmMyMTA5MDEwYjAxMGMyMDI4MWUyMzI3MWMyYzI1MDEyMTI5MmMwMTEzMjAxYzJkMmYyYzI0MjgyMjAxMTQyMDJlMzEyOTJjMjUwMTE2PiAyMjA3IDU1OCAwIDczODQgLTEgcworPDIwMmMyMTI5MmMyNzFjMjgxZTIwPiA3Mzc1IDU1OCAwIDg1OTMgLTEgcword3N0OmR1dGNoMTAgU0YKKzwwODA3PiA5MzQ2IDEzMzg1IDAgOTUyMiAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzw0ZTY1NzQ3MDY1NzI2NjNhPiAxMzIyIDEzMjY3IDAgMTk0OSAtMSBzCis8MjA1MjY1NzY2OTczNjk2ZjZlMjAzMjJlMzEzYjIwNDM2ZjcwNzk3MjY5Njc2ODc0MjA+IDE5NDkgMTMyNjcgNCAzODY4IDMyIHMKK3N5bTpjbGFzMTAgU0YKKzwwMT4gMzg2OCAxMzI2NyAwIDQwMTkgLTEgcword3N0OmhlbHZwczEwIFNGCis8MjAzMTM5MzkzM2IxMzEzOTM5MzUyMDQ4NjU3NzZjNjU3NDc0YjE1MDYxNjM2YjYxNzI2NDIwNDM2ZjZkNzA2MTZlNzk+IDQwMTkgMTMyNjcgMyA3MTMzIDMyIHMKK3N5bTpjbGFzMTIgU0YKKzwwMj4gMTI3MSAxNDMxIDAgMTM1OSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFiPiAxNTg5IDE0MzEgMCAxNzUxIC0xIHMKKzwyOTJmPiAxNzI1IDE0MzEgMCAxOTU3IC0xIHMKKzwwMDIzMWMzMDIwMDAyZDJhMjAxZTI0MjEyNDIwMWY+IDE5NTcgMTQzMSAyIDMyNjcgMCBzCis8MDAxYzAwMGQxMjE2MTEwMDFmMjAzMDI0MWUyMDAwMjEyNDI2MjAwMDJlMjMxYzJlMDAyNDJkMDAyODI5MmUwMDMwMWMyNjI0MWYwNTAwMWE+IDMyNjcgMTQzMSA5IDY1ODEgMCBzCis8MjAyYzI0MjEzMzAwMmUyMzIwMDAxZjIwMzAyNDFlMjAwMDIxMjQyNjIwMDAyODFjMjcyMDAwMDAxYzI4MWY+IDY1NTggMTQzMSA2IDkyMTMgMCBzCis8MmUyYzMzPiAxNTg5IDE2NzYgMCAxODM0IC0xIHMKKzwwMDFjMjIxYzI0MjgwNTAwMGQyMDIxMWMyZjI2MmUyZDAwMjEyOTJjMDAwZDEyMTYxMTAwMWYyMDMwMjQxZTIwMDAyMTI0MjYyMDJkMDAzMTI0MjYyNjAwMzAxYzJjMzMwMDIxMmMyOTI3MDAxNTE4MDAyZTI5MDAxNTE4MDUwMDFhPiAxODM0IDE2NzYgMTMgNzc3NCAwIHMKKzwxYzJjMjQxYzJlMjQyOTI4MmQwMDI5MjgwMDJlMjMyNDJkPiA3NzQ3IDE2NzYgMiA5MjEzIDAgcworPDJkMmUyYzIwMWMyNz4gMTU4OSAxOTIxIDAgMjIwNCAtMSBzCis8MDAyOTIxMDAyNzIwMmQyZDFjMjIyMDJkMDAxZTFjMjgwMDFkMjAwMDJkMjAyMDI4MDAyMTI5MmMwMDIwMWMxZTIzMDAyOTIxMDAyZTIzMjAwMDBkMTIxNjExMDAyZTIwMmQyZTJkMDU+IDIyMDQgMTkyMSAxMSA2ODgzIDAgcword3N0OmR1dGNoMTJiIFNGCis8MGYwOTE0MTEwOTEyMGEwMzAwMTIwOTA3MDkwYzE2MDkwNTEyMDkxMzExMTAwZjEzMDkwMzAwMGYxMDAwMTIwOTEzMTExMDBmMTMwOTAwMTIwOTA3MDkwYzE2MDkwOD4gMTI3MSAyNDA3IDQgNTU3NSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTkyMzI0MmQ+IDEyNzEgMjgzMCAwIDE2NjUgLTEgcworPDAwMjcyMDJkMmQxYzIyMjAwMDI0MjgxZjI0MWUxYzJlMjAyZDAwMmUyMzFjMmUwMDI4MjAyZTJhMjAyYzIxMDAzMTFjMmQwMDIwMzIyYTIwMWUyZTI0MjgyMjAwMmUyOT4gMTY2NSAyODMwIDcgNTkwMSAwIHMKKzwwMDJjMjAxZTIwMjQzMDIwMDAxYzAwMmMyMDJkMmEyOTI4MmQyMDAwMjkyODAwMjQyZTJkMDAxZTI5MjgyZTJjMjkyNjAwMWUyOTI4MjgyMDFlPiA1OTAxIDI4MzAgNyA5NDYxIDAgcworPDM0PiA5NDYxIDI4MzAgMCA5NTMxIC0xIHMKKzwyZTI0MjkyODAzPiAxMjcxIDMwNzUgMCAxNjgzIC0xIHMKKzwwMDFkMmYyZTAwMjgyOTI4MjAwMDMxMWMyZDAwMmMyMDFlMjAyNDMwMjAxZj4gMTY4MyAzMDc1IDQgMzcwNiAwIHMKKzwwMDMxMjQyZTIzMjQyODAwMmUyMzIwMDAyZTI0MjcyMDI5MmYyZTAwMmEyMDJjMjQyOTFmMDUwMDExMjgwMDAwMmQyOTI3MjAwMDFlMWMyZDIwMmQwMzAwMmUyMzI0MmQwMDFlMjkyZjI2MWYwMDFkMjAwMDJlMjMyMDAwMmMyMDJkMmYyNjJlPiAzNzA2IDMwNzUgMTMgOTUzMSAwIHMKKzwyOTIxPiAxMjcxIDMzMjAgMCAxNDU3IC0xIHMKKzwwMDJlMjMyMDAwMjkyYTIwMmMxYzJlMjQyODIyMDAyZDMzMmQyZTIwMjcwMDJjMjAyZDJlMWMyYzJlMjQyODIyMDAyZDMzMmQyZTIwMjcwMDFlMWMyNjI2MmQwMDJlMjMxYzJlMDAyODIwMmUyYTIwMmMyMTA2MjgyMDJlMmQyMDJjMzAyMDJjMDAyMDMyMmEyMDFlMmUyZDAwMmUyOTAwMjAzMjI0MmUwMDMxMjQyZTIzMDAxYzI4PiAxNDU3IDMzMjAgMTMgOTUzMSAwIHMKKzwyMDJjMmMyODI5PiAxMjcxIDM1NjUgMCAxNzcwIC0xIHMKKzwwMDI5MjEwMDBlMTExNDE5MTcwNT4gMTc3MCAzNTY1IDIgMjgwOSAwIHMKKzwxNTIxPiAxMjcxIDM5MTEgMCAxNTEzIC0xIHMKKzwwMDFlMjkyZjJjMmQyMDAzMDAyZTIzMjAyYzIwMDAyNzFjMzMwMDFkMjAwMDI5MmUyMzIwMmMwMDJhMmMyOTFkMjYyMDI3MmQwMDJlMjMxYzJlPiAxNTEzIDM5MTEgNyA1MjQ1IDAgcworPDAwMWMyYzIwMDAyODI5MmUwMDFlMjkzMDIwMmMyMDFmMDAxZDMzMDAyZTIzMjQyZDAwMmQyMDFlMmUyNDI5MjgwNTAwMGY+IDUyNDUgMzkxMSA3IDgyMjggMCBzCis8MjkyYzAwMjEyZjJjMmUyMzIwMmMwMDJkMmYyYT4gODIyMCAzOTExIDIgOTQ2MSAwIHMKKzwzND4gOTQ2MSAzOTExIDAgOTUzMSAtMSBzCis8MmEyOTJjMmUwMz4gMTI3MSA0MTU2IDAgMTcwNiAtMSBzCis8MDAzMzI5MmYwMDFlMWMyODAwMWYyNDJjMjAxZTJlMDAyMDI3MWMyNDI2MDAyYjJmMjAyZDJlMjQyOTI4MmQwMDJlMjkwMDJlMjMyMDAwMWMyZjJlMjMyOTJjMDk+IDE3MDYgNDE1NiA4IDU3ODYgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwxMjA2MGQwNDA3MTUxMTAyMGIxMTAyMDcxMDBlPiAxOTA2IDQ2NDMgMCAzNDI2IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTkyMzIwMmMyMD4gMTI3MSA1MTI5IDAgMTgxNyAtMSBzCis8MDAyNDJkMDAxYzI2MmQyOTAwMWMyODAwMTEyODJlMjAyYzI4MjAyZTAwMjcxYzI0MjYyNDI4MjIwMDI2MjQyZDJlMDAxZjIwMzAyOTJlMjAxZjAwMmUyOTAwMmUyMzIwPiAxODE3IDUxMjkgOSA1Nzc1IDAgcworPDAwMWYyNDJkMWUyZjJkMmQyNDI5MjgwMDI5MjEwMDI4MjAyZTJhMjAyYzIxMDUwMDExMmUwMDI0MmQwMDFlMWMyNjI2MjAxZjAwMjgyMDJlMmEyMDJjMjEwND4gNTc3NSA1MTI5IDcgOTUzMSAwIHMKKzwyZTFjMjYyNT4gMTI3MSA1Mzc0IDAgMTYxMyAtMSBzCis8MDAxYzI4MWYwMDI0MmQwMDIzMjkyZDJlMjAxZjAwMjkyODAwMjgyMDJlMmEyMDJjMjEwNTFlMmYyYTA1MjMyYTA1MWUyOTI3MDUwMDE5PiAxNjEzIDUzNzQgNiA1MjI2IDAgcworPDI5MDAyZDJmMWQyZDFlMmMyNDFkMjAwMzAwMmQyMDI4MWYwMDFjMjgwMDIwMjcxYzI0MjYwMDI3MjAyZDJkMWMyMjIwMDAyZTI5MDAyODIwMmUyYTIwMmMyMTA0PiA1MTk1IDUzNzQgNyA5NTMxIDAgcworPDJlMWMyNjI1MDQyYzIwMmIyZjIwMmQyZTBhMjgyMDJlMmEyMDJjMjEwNTFlMmYyYTA1MjMyYTA1MWUyOTI3MDU+IDEyNzEgNTYxOSAwIDQ0ODUgLTEgcworPDAwMTYyNjIwMWMyZDIwMDAxZjI5MDAwMjI4MjkyZTAyMDAyZDIwMjgxZjAwMmQyZjFkMmQxZTJjMjQyYTJlMjQyOTI4MDAyYzIwMmIyZjIwMmQyZTJkMDAyZTI5MDAyODIwMmUyYTIwMmMyMTA0PiA0NDg1IDU2MTkgOCA5NTMxIDAgcworPDJlMWMyNjI1MDAyNDJlMmQyMDI2MjEwNT4gMTI3MSA1ODY0IDEgMjE2MCAwIHMKKzwwYjI2MmUyMDJjMjgxYzJlMjQzMDIwMjYzMzAzPiAxMjcxIDYyMTAgMCAyNTAyIC0xIHMKKzwwMDJlMjMyMDAwMWMyZjJlMjMyOTJjMmQwMDI5MjEwMDI4MjAyZTJhMjAyYzIxMDAxZjI5MDAyZTJjMzMwMDJlMjkwMDJjMjAxYzFmMDAyZTIzMjA+IDI1MDIgNjIxMCA5IDYyNDEgMCBzCis8MDAxMTI4MmUyMDJjMjgyMDJlMDAyODIwMzEyZDIyMmMyOTJmMmEyZDAwMWUyOTI3MmEwNTJkMzMyZDA1MjMyYTA1MDIwMz4gNjI0MSA2MjEwIDMgOTUzMSAwIHMKKzwxZTI5MjcyYTA1MmEyYzI5MmUyOTFlMjkyNjJkMDUyZTFlMmEwNDI0MmEwMz4gMTI3MSA2NDU1IDAgMzQwNCAtMSBzCis8MDAxZTI5MjcyYTA1MWQyMDI4MWUyMzI3MWMyYzI1MmQwMDFjMjgxZjAwMmUyMzIwMDAxMDE2MDAyNDI4MmUyMDJjMjgxYzI2MDAyODIwMzEyZDIyMmMyOTJmMmEyZDAwMmEyMDJjMmUxYzI0MjgyNDI4MjIwMDJlMjk+IDM0MDQgNjQ1NSA4IDkxMzcgMCBzCis8MDAyODIwMmU+IDkxMzcgNjQ1NSAxIDk0NjEgMCBzCis8MzQ+IDk0NjEgNjQ1NSAwIDk1MzEgLTEgcworPDMxMjkyYzI1MjQyODIyPiAxMjcxIDY3MDAgMCAxOTk4IC0xIHMKKzwwMDFjMjgxZjAwMmEyMDJjMjEyOTJjMjcxYzI4MWUyMDA1MDAwYjJkMDAyNjI0MjUyMDI2MzMwMDFjMmQwMDI4MjkyZTAzMDAyZTIzMjAzMzAwMzEyNDI2MjYwMDFjMjYyZDI5MDAyZDIwMjAwMDJhMjkyZDJlMmQwMDFjMWQyOTJmMmUwMDI4MjAyZTJhMjAyYzIxMDAyNDI4MDAyOTJlMjMyMDJjPiAxOTk4IDY3MDAgMTUgOTUzMSAwIHMKKzwyMjJjMjkyZjJhMmQ+IDEyNzEgNjk0NSAwIDE4ODQgLTEgcworPDAwMWMyZDAwMzEyMDI2MjYwNT4gMTg4NCA2OTQ1IDIgMjU5MyAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgzMikgMzIKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzNCBwdXQKK2R1cCAzIC9DMDA0MCBwdXQKK2R1cCA0IC9DMDA0MSBwdXQKK2R1cCA1IC9DMDA0NCBwdXQKK2R1cCA2IC9DMDA0NSBwdXQKK2R1cCA3IC9DMDA0NiBwdXQKK2R1cCA4IC9DMDA0NyBwdXQKK2R1cCA5IC9DMDA0OCBwdXQKK2R1cCAxMCAvQzAwNTAgcHV0CitkdXAgMTEgL0MwMDUxIHB1dAorZHVwIDEyIC9DMDA1MiBwdXQKK2R1cCAxMyAvQzAwNTggcHV0CitkdXAgMTQgL0MwMDY1IHB1dAorZHVwIDE1IC9DMDA2NiBwdXQKK2R1cCAxNiAvQzAwNjcgcHV0CitkdXAgMTcgL0MwMDY4IHB1dAorZHVwIDE4IC9DMDA3MCBwdXQKK2R1cCAxOSAvQzAwNzMgcHV0CitkdXAgMjAgL0MwMDc2IHB1dAorZHVwIDIxIC9DMDA3NyBwdXQKK2R1cCAyMiAvQzAwNzggcHV0CitkdXAgMjMgL0MwMDc5IHB1dAorZHVwIDI0IC9DMDA4MCBwdXQKK2R1cCAyNSAvQzAwODIgcHV0CitkdXAgMjYgL0MwMDgzIHB1dAorZHVwIDI3IC9DMDA4NCBwdXQKK2R1cCAyOCAvQzAwODUgcHV0CitkdXAgMjkgL0MwMDg2IHB1dAorZHVwIDMwIC9DMDA4OCBwdXQKK2R1cCAzMSAvQzAwOTYgcHV0CitkdXAgMzIgL0MwMDk3IHB1dAorZHVwIDMzIC9DMDA5OCBwdXQKK2R1cCAzNCAvQzAwOTkgcHV0CitkdXAgMzUgL0MwMTAwIHB1dAorZHVwIDM2IC9DMDEwMSBwdXQKK2R1cCAzNyAvQzAxMDIgcHV0CitkdXAgMzggL0MwMTAzIHB1dAorZHVwIDM5IC9DMDEwNCBwdXQKK2R1cCA0MCAvQzAxMDUgcHV0CitkdXAgNDEgL0MwMTA2IHB1dAorZHVwIDQyIC9DMDEwNyBwdXQKK2R1cCA0MyAvQzAxMDggcHV0CitkdXAgNDQgL0MwMTA5IHB1dAorZHVwIDQ1IC9DMDExMCBwdXQKK2R1cCA0NiAvQzAxMTEgcHV0CitkdXAgNDcgL0MwMTEyIHB1dAorZHVwIDQ4IC9DMDExNCBwdXQKK2R1cCA0OSAvQzAxMTUgcHV0CitkdXAgNTAgL0MwMTE2IHB1dAorZHVwIDUxIC9DMDExNyBwdXQKK2R1cCA1MiAvQzAxMTggcHV0CitkdXAgNTMgL0MwMTE5IHB1dAorZHVwIDU0IC9DMDEyMCBwdXQKK2R1cCA1NSAvQzAxMjEgcHV0CitkdXAgNTYgL0MwMTIyIHB1dAorZHVwIDU3IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstNTAgLTI1NiA5MjAgNzM5XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjE5Rjc1RTUzQUMyQUI3NTI0RTYxREQyOTQyQUQ0M0M4NjBDCisyRTE3RUNGMDBDODgzQjY2QTMzMEI5N0IKK0ZCNEE2QUE2RUExMEFFQzY1MQorQzkzMzNGQ0EKKzU2OENEQUI3QkE4RjUzN0I2REFDMTM3MTVEREYKKzZGNzAzNEQwNURDMTM1MzRBRkZGRUYyMkYwQzNCMkJERDIyQTE4MzYwOTI3N0JBNDM1OTQxMzRBOUFEM0M4MTk5RUY0QzBGMDZFQTBCODVFRTY4ODE0RjdDRjM2QTYxQURERUYzMzE0NDYxNUU1NDc5MzVCNjQxOUQ4NDg1REM4MzdFNzI1ODg5NDZCRUM1QzQ4RTBFNDM0RUQyMzQ1QzEyQ0VEMUNCNzBCRDVGNzYzOTMwODQ3ODk2MDExOUVBOUUwNUQzMjAwOEVGNjk0CisxNDA5OEIwMQorQzUxNjM0MTkxQTRGMzQ3MEI4QkE5MjRDRjMKK0VDMTUwQkI1RDU5RTkzQzQ3OEE1NEQzOEQ0MTQ2QUY5RUM4OThBQjI5RDcwMkM1RjhCOEZGQTdFRTNBMTA3MDNCNzcxNEExMjkxQkIxQjVBQTUzMDc4Nzc1NDRFOTFGQjNFNDFGMUI4QzcxRThBQ0IxRDc0QTI1QjU4RENERUQ1CiswRDBCOTI2MworNjIzM0Y5MzU4QkQ0QTZCQzk1NTI4NURGREMKK0E3NzdDRTczQjhGNEJFQkVDMDFBMDU4QjlCQTQwOTY5NUQxQzlBMkUzMEM3OEMxQjZFOTFBNDNEN0M3RUFDMjlFNDBCODg3MDQ1MDVERjE0QUIzQzU1MzVENzI5QzkyMUVCNENFNDE1OEIzRTJFOUJCQkU1RkI1QTU0NTNBNgorNDZGNzQ1QzMKKzgxODBGNTNGOEExQzEwNjI2NzczRDVDRTA5CiswQzJEQkRDQTJFQTAwRDBFRENFMTQ1NUFCNUIyREIxQThFOTNERkVBMzFEMUMwQUFFQkNCNzcyOEFCOTEyNUU4NUZCMjJCNzU0MTA3NjFGQzVFNTE1MTVCRjlFNTRCOURBNzk0RDA1MThFMDg3NTE0OUMKKzkzRDlBQkJCCiswRTkxODE5NDU5Q0UyRDUyNjBCMDU0MEE4NworQTkzN0JFNjEwNzZDMkE5QkEwNEIwQTZEMDU3QUE3RTYxNEVCQzg1RTMxQkRENAorQ0M5NDU2ODMKK0M4RjBGQjk3RkNENTM5QjhERDUwRTlCQUNBCitFRkVDNjFCQzNGNzkzNjg3OTZBRDY5MjA2NTI0MzczMkRDODZGNzcyNDNERDY2M0I4RDVDMjFDOTc2M0Y4NAorNDc1NjMzN0IKK0E4MDVGMDNGM0FCNUE0MDA0NTM5M0U1MzAxCiszOUJFMTdEQkUwQ0FEODM3MkNENzQ4OUMxNDA0NDJBQkMzMTBEODlCMUQ4OEYzQ0Q2NjRCM0MzMQorMkVCQzhDQTEKKzg2MDcxQTM0RjI5MjY1NzQ5Njc2QkY4RjZFCitDOTFDRjBCRjdFMDhBOTRFQzM4NzVDRTEwNTBBRDUyNjU1MzlCQzRGOEJGQTAzNjI4MTgyM0QzQkUwQzFCNzQyMjAyNUEwN0YxQ0Q4NjEyMTFCMkQ2QkZGN0E1NkNBQjdCNjc5NjFCMzI2MzVBN0M1OTQ5QjI2NjU1MkIzOTM3NUQyMDM2RDlBMjMyNEQyNTlFRUU2Cis1OTczODJDNgorQkU1Njk0QkU0OTQ4RUU5QTlGRkJBRDM2MjUKKzczOTY1QjQ5NTI2OEE5RjNDOUE5QkQ1OTE4OTA3Qjk4QzEyOTcxQTg4MDIxQkY5MDQ4NTBGRDJENTNCRUFGNjFCQTMyNUFEODMzRTNCQkRBOENDREYxQ0ExQzVCQjcwMTQ3QUYxNTFBNDBDQUM1MENCQzQ2NTRCQkI4RjcwOTM3MUIyNkZEMTdGMUI3QjJENUNFNzEzNDAxRUIzM0E4NTY5N0MzNDc3N0RBQ0RGMUY4RUVFMQorNEM2RUMxQ0EKK0Y3QTgxRjU2NkI2NzRCODIwREM3QTgzQjA2NzUKKzcyNkFEMTI1RTc4QjQwREVDNTVEMDA2MDY2QUVDNDA0NDZBOTQwM0NBNjFGQjJGRUFCN0Q2RUU0QkZDMzhCNDIwNDMzMTAwNUM5QTRDRTMyNzA3NkE0QzdDN0QxRkU3OEExQzhGN0Y3QTM5RkJCNzU5MEIzRTZFMzBGODkwMDE1MkMyRjBENTY3NDIwODkzMkVBRjJCQ0ZEREZDOEMzOTUzNTE4QzUxQTZEMzAxQTkyMkI4NDhFRERCOTEwNzUwNjhCQkU0OTc2NkRCOTNBM0Q0QTIzNUI2QTg3MEFBMgorNkMwNzkxRjcKK0ZBOUUzMDcxMDc4NTRCMTY0RjkxNEFEMTIxCis0QjhCRkI0M0JBQ0QyQTNFNzlENUVDRkUxMEVDRTIyODdERDlEMTlEREJCRTcxQjU4NzczQTVBNjQ2OUQ5RjgyNDYyRkI2NEY0Q0EwMUY2MzE3MDQwNTlFOUUzQTZENzA3OUJFRDc2MkNERjg3QjYxNUQwRgorNEI5RjNFMTcKK0FBQzcyQjg4RjhFQkVCRjZDNEE4M0ZCQTAyCisyQ0NBMzE4MUFGMTc4QTJFOEQ1MjI2QkU4RTg1Q0E5RjhEODhDMjAyMjU4QzI2NzVENkVEMERFMTRCMUI5RDBGQ0FDNjZERUJBQUJCOTlGRTYzNjBCMkYzQTIzMEU4REVBOTEwM0U1MDgwOUIKKzcyODFFMkY4Cis3NzVEQkYyMDdEMTNBQTMxQ0Q4QTRBM0E2NkRDCis5QzUyOTZERjUzNDIwNDNFNTdBRTgxMzUzM0JFOTI0OTRFQUM0MjJGMzVDQUYwNTE0RDcyQzc0RTJBNkVDMjQyNTYwNTExMzA0NzI0MjRFMjdGRUJDOTlERUFCNzYwRTk4ODc4RERCMDQ5RkY4RTk0NkZDOThGMTYwNUUzRDM4RkQzNDExNEJCQzFGOERBNzUzMTk0QjFDRTU5RTlERTQ1RDA2Q0NCMUYzQzhEQjc4OTAxQzY4Mjk0QzBCODEyOUQwRjUzM0RFMUJGRUQzQURFNDBDNzNDMkE3MjM4REMwMjA2RjRCMgorQzBFQkIwRUYKKzIyNjlDOEE3MzE2QkI4MUI3OEIyNTQwNkU3QkMKKzEwQjgzODZCOEQ3RUI0MTlEMkY5RTY5M0JDODAyQTcyNEJBRkQyRTRFRjEyRTdDQzI5RTBENEIyOUI0QjUzNjE5OTFCOEY2RTFGMDA4REI1NzdENkMyOTA3MjFGMUNDQTYxN0RERTA0QjMyRjBBRDREOUIxOTA4NTk0NzYwODA0RDc4MkM0Njg1OTc4N0I3RUE0NDVCMzRGMTJEQ0FGQjMzNjhFQzYxRTZGQTFCMDI3ODBDRThDNkNENkEyMEFFMDAwMDI4QjcwNzFFMTA4NjYyNTcwMEJGQjg3MUE1NDc2RUM3NDYxMDgzMDQ4MkI0RjgxMTM4NDEzMTMwMAorMjRBNgorNjgKKzNBMzVDQkU4Cis0RkM1ODREMEU0RDI2Mjk0QzQ0NkU5MTY5RAorODg1QUYwNEFEMEU1MDNFRTAyN0MwMkU3ODJFNTJERDFENDQxM0UwMThGMzVGOUZERkIyM0YwQTM0NkZDNDE4MERBMEY2QUI1QkQ4NEI3NDY3OTU0ODE5MTY2RDkyODRERTlGQ0VDNjlBMjdFMjU3MkEzRUZGOUU5NDNGQzVEREUzNjM3NDU4OUU4MEFBNUNCQzNFMkMyNkYxOTk2MDE0MkRCNkJFODNDNDdEMzA0RDI4NkRCNDE5OUEzMDQzNTA3MEIKK0YxRTY4MTc0CitFMzlBQTg1QzU4ODM5RkQ1MzIwNTY4QTkyOAorQ0ZDNDExOTJEODA0RTcxQzZCMkZENzIyMUMyQkZCRUVCQjUyNEIxQjY3ODM1REM3NjZFRjFDQzU3RDAzQjdBOTdEOUVCRjNDRkUxNjYxRUVGRTM4MUVBNzg0OTdBQkU5QUIwRTYyMkE4RTBGNkZFNkFCMDI2MjFCNjE3MjIyMEZFQkVBOUQxNDA2NkEyQjNGNzg1QzY4M0FCQjA1OUEzMjQxQzM4MDFBQjAzRTVGQUE5REY3MEMzNkVENTAxODY4OUFBMkMxCis4MkE3RkRBNQorOTMxQzg0NEIxQUM4QjU4NjNERTg5OTMzOTg0MgorRTY1MjQ3OTM0QUNEOTcwQzgzRDREOUVBQUVFNEE1M0NDMUMwMDNBRDkzRjYwMTlERTQxRkUyNUQ0NUFBQzUwQjBGOEE0QUM5NjUwN0M3QjcxNEQ2QTgzMzQwNzc1QkNERDg4ODhDRjQ0QzkzODgzQ0VCMTBCQzMxRTVFRkI3RDU0N0I0NUExMkIxQzUxQTIxQzA0MkZFNEU3QkQ3MkY5MUQzOUJDMTc4NTREN0U0MUM0RUJEMTQyQUE1MUM0N0FCNzEwNjVBQzJGNzk4NkVBODcwCitCQUQ4OEZEMgorRUVCMTJGQzMyMzY5MDMyREM0MDA1N0FBMzUKKzNFOTExMkJGQ0Q1NEJBNDJBNDdDQTNEODY3NkZGNzNBQkFBOTIzOUNFRjhBN0I3REVFMkE1MUE4RkRDQzNBNkI5NzY3MTFGODYxMDhBMTBEMTJDN0I2QUYyODk4QzlDQkFGMDM2MzlBMjhGMzc0OUJDNjZCRUYKK0ZGQzZENDExCiszMUU1MTY1OTY1OUNGQUQxNUZBQTQ4NkE4NQorREJDMkY0NTVDOUQ5RUZDNTkxNjgxOEVFRUZENjc5QThGMDIxQjA2MzJBQUMwRDkzOTQyMzQ2QTU2ODlDMjhFOEYyRTk5OUNFNDcwQUI5NUVDNjU2MEM1OEMxNDQzRUIwMTlGMjRDMzhDMzRGMjEyRDI1OEYxQjE0MDhENkE1NDc4Rjg2MTg0QkFEM0JCNAorMkYxMzE0NjgKKzM5NzNFMTcyMEMyNzBDNzRCMDBEQjlDMkI2MzYKKzU2MkM1QzdDMUEwRTVCRkE3Q0JFQkU0ODlFMkI1MTNBNjA0RjI0QzlCRjZFRUM4RDk2RUY2REU1N0M0RjZDQzQxOEZFMjI4MjQwNEZCRjg1OEU2NkZCMTFGQkUyOTlFNEJGQzkwQzVGNzZCNTYyNTYxNkQzODRCQUIwRERCNjgyMEQ3QkMwNTgzMjYyQTBBODQzRTA1ODcxRTA4NUFFODk1NkI5RkZDN0IzMjZDOTRFOTMwNkYwM0IxM0ExQzlDRTZBQUFBRjJDMjhGMEY2QkQ5NUREMTU1OUQxQTQyOQorOTVGNEVGRUYKK0RDM0MzNEJCN0E0Nzc3NkMxOEUxRDk1NkUxCisyNTQ5NzBDNzkyM0M4MjVDRDUyNDE4MUZGMDlDODUzRjAzRkU5RkMxM0M5M0U2RTU2MzE4NTRGNTkxOEJFMTkxMEUxRjE0REZBNDA4NDU5MjlDNDMyRkIzQkQ3NDVFOEZDRUMxNEQwQjExRTEyRTEyNTU5MkEwMTQxMDBGRjNBQjZBNDVEMTY0MTc1MTgyMDE1RjJBMUExMzBFQzlEMzJEQkQ0RTZEQzIzNUI5MjUxMDU5QzFFRjI3Cis2NkRBNEQ4NworRDk5MEZFQ0Q3RThBREI5Q0M5NTc5MzJCQTQKK0M5REIwRjE1NEI5NkQ0QTQwOTlDRTQwNjgyM0VEQ0ZFNjhDNEIwRUVBMTg5QkM3MEQ0NTI2OEY5MjZFRjVGNEMzNkMwOTlBOUNFODcwMkEyMzI0N0UzRDIyMzZFNzJFQjE4NUVDNzMzODQ3MjhCOEQ5QjZBMjE0ODM4RDMyNDVDREM5RDZFMjQwMURCQjJGMzg1RkE2OEM1MDdGRUFCOUUwRDg4QUMKKzA0RDlGRTBFCis3OTM4NTkyNkUxMEZDMDQxNzU4RjRGQzJENEU5CitDNDQ5RTE0N0YyQ0Q0QzM5M0UxRTBFRjM4ODQyMjkwMTExRDA5NzE4MTY1RDZENTdGN0ZEOTU4RjBCMEI5RUFFMjY1MkY0RjA4MjE5MzMxQTM2MkVDRDYzRjg2NzlFREQxOEExNkRBQzAxODU2MEJFNUU3MkI1RTAxM0UxMzg1OEJBMDA1OEY3ODFEQzAwOUNFMjk4NzYzOEFBQjkzMzY1OERFN0UxQjlGNzNDOTExRDczNTZFQTk0RERDMkI4RTA4MDkwN0VEQkFDMDA3MkQxRTU4MQorOTM3QkI2QTkKKzAxQzI1OUY1QTM3MkIzQUI2NDU5QTA0RkVERUYKK0RGMjRCNTgwQTU4QkMyNTgzRjlDMkU2RUYwMzc3QTIwMEI2Q0NBODc0MEU5OEU0QzJERjI0NTA2RDY0RkUzNzY1NDkwMUM4QzhCQkVFMTFBQjlFOEQ0RDlENEQ4NjEwNUU0NDJEODU1Q0NDREExQzI2MTk2OEI5NzIwMkFDNTMzRTQwM0ZCOTNCRkExMTZERDcxMTRDRDM0RThBRDNBMDAyQjNFOTczNEUxNzA1REZBNzNFMUYzNjk4RjEzQkI1MUFCNkQ4MDI4RTI5NjIwRTAyOTMwMjgzQzY2NkI1RUQ2OThDNkFENzhGNDhEQzQxNUNFMTk5NzU4RTM3QQorQkIwNDNCRjAKKzE4NjIyNjhGNDFEMkRFOTRCNzA4N0FERUQzOTQKKzMxMDMzQ0NFMEUwNEVEMUZFMjJEQjhFMEYxODRBOEY5MDFFQkMxQUMxNjdFRkZCRTQ4NDY4RjRCRjYyMDQwNzkxQUZGRkU3N0M3RTFGNzkxODY4MEE0NDQyNTU3MjFCRUU1ODI1QjI5MTYxRUUyMjgyMUZDMEM2RTcxOUE2NDYxRkIyRTgyMkNGQzBFMzgxQjIxNjVFOUU4Q0E0NTAxMzcwOEJBQkY5OUY4NUY0REI5ODIxNkNDREY4ODE3QjhCOUZFOEQ5QjgwNTZCNkM1REU1MkFCNkNGNjZDQURENDAzOUMzQzIzMTc2OEI2QTJBODYxRTdFQ0VENTQ3RgorRTA4RQorMEZBNjBDCis1MjE0NEY1RgorQjg2Qzg3M0EwNTczODgxRUVEMEY4NDUxOTkKKzMxRDNEQjQ0NjJGMTk0NUFBREUyRUJDRkJFNURCMUQ3QzFGRUM2MjgzQTFBNDJBMjE3RjlGQTNENTAwMDJBMEE4MzY2QjQ0NzUyMjM3OEE2MENEN0UzMzdFMDc1QjQ0NzQzQTRCODJEMTY4RjMyOUQ2QzFGMjM5N0ZGNTY5RDk5NTFDNkU5RDE5N0M1RkMxQTEwODg0Mzk1QjVBMjZEODM4RAorOTkyMTNDQ0UKKzE4NTA0M0U5MURCNkQ3RTY5OEJFNUExN0RFN0YKK0MzMDFDMjAxMDNDRDc5OTMxRTQzOTNBMEM4ODE2OTREQzA2M0U3RjQ5ODJEMUY2QUZEQzE0MDM0RDIzRDMwQUYyNUUwN0M4RkNBNkE4ODA2NzlBMTQxQTkwMDVDODIxRjFBMUVDNEM1ODZFRDEwODc5QkVBMTUyMTFGM0YzNDdDN0U4MkFGNzhDQTkzNzFEMTdBNEIxRTBEODU4Qjc3MDA1RkFDODM5QTIyMjAxRUI2MTY2RTE1OTYwQjdFQkMyNDBDMTBFMUEzCitEM0ZCQUI2MworN0E4RDM1NUZCNzUyOEQzQkNDQTU5QkQ1ODMKKzc4NjAyQ0U0REUzNDMxOEE1RDA5RThCNUFEMEE5NkJDRTg4NTZFMjlDM0MzNDk2QzIwRDI0MjZDQTlGMkU4QzNBMDUxQjdCRjIzRDAzRTVBMkVFMUJBQTFCQUZCQzgzRUY1ODlEREE4ODQ5QjI1MjdBQkYyN0UxODhDOTg0NEM2NDREMEZBOTkxQkRBNDEwNkU5Qzc5RjAxNEQyMjg0ODM1QzUyQzA0RTEwRjRBMkI0NzYKK0JEODY1NEYyCis5NEI5QUE5NkEzQjFBNUNEQTNENEE5NzkxMEJBCitBNEI5NDM1RkVDQkNFQThBOEI5REI5QTM3RkNBMzVDNDYwRjAzMTU0QjUxMTQxMzcyQ0QyRDA0MEVGREVENkFCNEQ0NDVGOEIwNzc4RTYwREMwRjFBRjg3NTM2RjZFQjhFNzRFMDgzQjUxODIwODBDMTIyQzhFMzE1QTk5RTQxQUQ3MkZCNjk0NjAxNDY2MjhDOURCRkM1MDYyNTY0RjUxNzA1Qzk1ODM0REYwQkZGREZGQkQxMTc5NUJCRjMzMDQzNTNEMzJFMEQ2QTU1MzcxNjdGMkQ2MTk0MEY1N0MwNDhGRTI1NjU0NzhFNUUwQUVBMzBGRjBCNkQyMkUKK0EzN0MKKzAwRUM5QzU0NTRDNDRBM0U3ODUxMURGMkYzN0ZDRTFBNURFQUJEMEMxQTU0NjRENDMzODdCMzAzOUUxREUwMDQ3NjBCRjFFMUZEOUVBQworQjJGNTFCRUYKKzA3RTY2NDAyMzAzQzgxNjlCNzJCNUNBQjBCCis2MzQyRjFCNDFEM0JDQzFFOEREQTdFRURGRkIzNzRCNkE5RjA0NjNDM0IzNzc2NjAwMjk5RjJFQzY0OTYzNUE1NDNGOEJEODExMEM0NDBDMjIzNDUwNzcyMjM3RkI5MkFCRkREMDM0OTM4NENGQzdGNjVBQgorRThDN0U3NTYKKzE0QzhCOEIxNENCNTgzM0QwNDZCRTJFQTE5OTAKK0U1MjU1QTQ2MjM5MDlENUMyREMyNkIxNUFDRDg2NkQ5QkUxNDJCN0NCMTc3MTY4NEFENkE0RTkyMjcyRkFGODVDNDgxQjQ3NzVGMTJDN0RGRkQyRTg3QTQyOEFGREI2N0E2QUM1QzlGQkI3QUU0MzNBRkI5RDY2NzdCOURFNTA2NEQ0QjZDNjlDRTUzMzRDRTNBRDExQjAzRjQ1MUFEMUQ0NTQyRjE1QjQ5NzlCNDg2NTM3NjhBMzE3OERENDIwOUUxQjQ4QjMyQjkxNUI1OTA0MjFFQTRGQTIzQUNERUY3RTk2Njk4NTRDMTBFNDdCMDM5NkZENEU1NkE2MgorNTVFQgorODAzODNBCiswRUI1NkVBQworQTJEOThGMzJGODVFMjU4MDY4NjRFNjNFNDQKKzQ4QkQ4NkFBNzZFQUFBRURDNTVCOTBBRTk0Qzk1RTIyNkNFNkZFRUUyQzg5QUJFQzdGQTRDMTRENEFCRUM1NkNCRTcyMThDRUQ4NDM5MjQ5NzRBM0I2Q0VBMjRBREI3OEM0QTA2MkZCNUY2QTk5NzVGNEVFNEQxRDUxRDU1NDNFQkRGNkI4MkEyN0JFQzkzNjg5MkNEMkJBMUQ1NzkyQzkzOTQxOTkzRkU3NTEzQ0FBCis2MkM1OEYyNworMTQzQTU1NkMwN0NFNUEyREJFNDBGQkMwMEEKKzk5MTJCNjNEMDRCQzczOEM0MENCMkM0QzFCOUY0M0YxM0Y1MjI3OTc5RTFFREUwQzg2OTMyRDgxRDk1MzdBRDlDQjZDNzcwODkwQjREMzkzQkZDN0IyRTYyRkI5RDNFQ0Y0NjI4Mjk2NDAzRDVCQ0Y0MEQ1MTU3RTA2NEQwQTg5OTFFMTdFOEM2NEI3NzUyOTVCRjM5MzUxMDAwQzNDQTI1MjFBCitFQkJCODc4RgorRDJBOTU0OEMwRDkzQUFFQUE2MDNBRjY2NDY3QworMTM1MjEwQUVEQTk2RkRCOTBEM0E2RDE3Mzk3M0FGREM0QjIwN0E4QTVFMjk4NzQyMjAwODFFQUQzOEUwMjc0QThEQTU0RjA4MkNBMEMzRkY0RTBGRjREQTRGQjUyOUU5NTZFNzdEQjQyODA2MDVEQjc0MzhGRjE5Nzg3RDgyMDg0NDlEMUIxN0I1RjZEREYzNEEzMjQ2NDBFMzA2NUQyNDI2MzFGNjYyMUE5MTQ4QTkwQTk2RjdEODk1NThCMUU2RkQzRkQzOEY1Qjk0OEZDMjlBNUFFNzU3NzZCMQorN0FBRUI3RjAKKzlDMkI0MDdBRUU3QjBDM0EzQjAwRTQ1NkY2CitFQ0U0RDI1RUE4ODhGRjIxMjQ3Q0E5RDk1NkUwMjZFMzNDMzYyMjMzQjE0RDQ3NDkzMkM3MTM5RjBGMTA4RjZENDc1NzI2MzNBNzhBNUE4NzRFNUE2OTg5RjEyQjk5RkE3Qzg5QUVEMTdENjIxNjZGMEQzNUUxN0IzODhGM0M4MTA2MkZGNkEwNThCMzhERjk4QTZFNDZDOENEQUFGODczNTZGMjNBOUUyRUNBMENBNTQ3CitGOEIyRDFGMQorODVDOUU1NDA1NTlDNDhFRjI5QjQ1MUVGREYKK0EyNTFFOUM0MkREMEUzRUJGOUJFMzBCNDQ5MDQ1RjcxNDdDNDZDMEQwQzk3MkE4QUVFQTZCRERCMkJFMkFCQzQ4NjlEMUM1ODFGQzFDNTU3MjQyMDIxRTJBQUIyMkQ1MEE3MTU5MjNFMjc5OTVBNTVDREExMUJDQTk1MTU2RjRENzFCOTFFRUMyQTNFREZCNUY4RkUyRDA1N0VBQTc2N0UwNzM4NzJEMjVFNzZDN0NCRjEyRkUyMkQKK0FFOUIzMkUxCisyQjU0MkVCQjM3QkFCNURBMjE5Q0YwNkE2RTM0CitERjA4NEVCQjI3NkQ0Q0REOTZBOUQ4RDFDNDc0NTg5MTEyQjZBOTczNThERDE0ODlCOTI0REMxM0JCOUEyQ0ExRDA3ODgzMjRBQkRFOTUxMkE2QzM3NDg0OUU2RTcwQ0E4NTVBRTFCRjI3OEY2MTRGMzhGMEM3RkZGQUJDODU3MzdERjQ5NEVCRUU0QzcyRDQ0OEM1MkQ0RDA1RkJENzAxQ0M0NzZFNjdBQkFGMDk4OUI3MDZFNjBFRkE5QTdGMzk0MUVFNkU2RkJGMUIxQTAxRUNFNDc1RjdFQkNFQThDMzlEQzQwQTI3NDlERUUxNjJENEI5ODcxMjNGQTQKK0RGRkIKKzBEMzE5MUU5M0JDMDI1RjlCQTZCMTJDRUJBOTZFQjFDODE4NDE2Q0EzRDEwOUFGQjE2Q0MzODNCNUFERkU4MEVBNTU1OUI5MDUzMkM1M0Q3MTBGODRDNUY4NDYyQjkKK0RENjQwM0Y1Cis3RjdCODlERjM3OUQ2MzNEMjQwOTc5OTE0NzhDCitENTg3RDA4NUREOThDOTk0MUREQTcwMkU2Q0JCQTJBQkRCRDgyMUNDQTA5MkRDRDc5REFCQUVBQTFDOUY1QzVFMjFEMjRGMTJFMEUxNjlEODQ4RTBDQzcwMDdCNjYxN0IwMjhBRDg4RjE3NEZDQzcyMjhFRkQxNzFDOTJEMDVCOThGQkNCOEZENkRGMjc5M0VGMjQ5RTZDMTg1ODA3NzJFN0NERDIyODk4QjE2MEZDMDYxRDBDREYwNERFMzEyNTBDRjk4MDI3MjE2MjE4MEExRjgwQjA3QUY0QQorOUFFMzVCNUIKKzFCOEQzMjJERkE2RThENkVFODIzQUY5RDQyCitFN0U5MkUzNTVDMkJBODdFNjhCREUyRjJGQ0U4OUVGQkMzQ0RBQjg3OTZEQTJDRjNCNjhERUMwRDRFRDQ3NjE2QUZCQ0RCQjE2RDRCQzQwRTYzNkYyODA2MUE2RTQ2RjdFNzBFNTM4NjU2QkRBODNERTRFRjQwOTFERTU3QjIwQkJGRUQzRjQzODk3MjMwMkVEOUNDQUM1RTY4QTgzMzVFCitFMTI0ODZFRgorRDM5RkQ2NDdENzQ0NjZENDI4NUU4QkYzN0MKK0ZCNEJFRDFDNDRGOTVCRUE3NjQwMTM1NjgwRDlBOEU4MUE1NDZBMjRFQjE2QTdBMEJBNTRGRjE5OUI3NEVDNzdDNzQ4MzI3OUFENTRDRUYzOTY5RjI0QTkyN0I0MjBCOERGMjI5RDMzMUJEMUFCNTBBOTUwNzBDMUU1Q0IwMTA3MDJDM0U0Rjk2MEY0NjYxRDk5NjgzN0REM0QyQTQxQTBBMDBFRDE5RkY5OTY2NUUxMjBFQjE4RkNBOTU4MjlCMzkxRDFDRAorREQyRDEzQTYKKzFCQ0QyNzZBMERGODYzOEU4OEY3NDJCRjZEQzAKKzc1RjdGOTI0MjA4REU5RDg0MDBCNEYxMDA1M0I0MTI1NTY2MTM1NTgyQzY1NzI4MDY5RDQ3MUY0QTI4MDUwMjdEOUU2NjBEMDU3RjkwNUEzMzI2NTM0M0JEQUZCRTMzQ0IxODVBNzdBMjU0QjM4NDMwMUU0QjE2NjRGQjFCODY1NzhFRDg5NzI2NDE2M0VBNTk5QjM4QUREOTQ0RkVDRkQ1OTA1OEM2OUYzODA1NUEyMjZEQjcyOTQzRDU1RDlFREQ4MTZBODY3QTAwOTMxMkI3QzRFMENGQTg4MUU0MURCOEE3NzZBRkNBODFFODc1RTcxNDEzMDRFMjhDNQorRDYxOQorRjFCODcyRDI5OEYzM0M2QzA4MUQ5RkNDOEI0MUNCNTg0RDE5NTI2Q0Y3NDEyN0RFNDVFQjk5REU2REM0QUY3NzVCMUEwMgorNDRGOEQ4RTQKKzI2OUZBMTNGNTJENUM2RENFQjc4QzFFNDQ5Cis4NTNGQTlCNjQwQzFFMkU2NzBCMzYyOTVGODQwQjNBQkYxODYyREUxRTk1NzEwNTkzN0Q2OEIwMjI3QkNFOUQyNjI4Q0JCQUYwQzc1MUNEQjE0MTdCQzk1NEFBOTIyNkI2OTlBMUNCNTFDNkMKK0I3OUQ2MkNGCitBMzkxQjAxNEZEOTA5Q0MyMTAyOTUxOEI0ODA0CiswRDQwQ0JGOURBMTExMkM2QzJGODk2RTgyOTU1MDIyQ0NBMTk0OEMwQ0E3RDZGMTdBOEZGQUIyOTdFREExMjYxOUUzODE0MEZBRTczNkNBMzJCOENBNTNEODc1QzJDQzQzMkM5NDY3Q0UyQUU2MkFGNkExMTkzMDY0RTNBRTUwOUI4QzA2Q0I4QTM1QjJCNTMyQTI2RUVFODJDREVGMTY2MEVCRjVGNUY2REZGMDg5RTA4NUQ0QjcyN0Y5QURDNzk1RUE2NTFCQkY1MDA4NTQ2NTNGNjRGMDNFM0FCNDAzMjQ3MjY4NEU4NTBFQUYzRTQ0RTZGMEY1RjJCNEUKKzA3MEMKKzIxNUQwQjQ2NTk5RDNENzFCRjQ1RUExMTRBMkVBMTA3OUJCQUY0RjJFQkQ0QTVFRDRBQjA0RUJCN0VDRkE4CisxNjBGN0VCQQorMzE5NERFQzE0RUI5NjA4N0ZBQjI5MkRGNkM3NAorMkVCNkYwOUQ3REE2OTU4MjExQUM2MkE3ODgyRThBQjk0NUYxMzNDN0JCQzY1NTIwRDlENUFBNERGQkMzMUU0MzI1MDgyOUU0N0M1RTlGMUQwNTY2ODNDODQyNzNENTA3MTlGQUM4RDVCMjJCOEE1QTkwRjU2RkM5QjEzOTBDNDc0MDU4MzJBQ0Y5MUMwQTVDNUM5RDc2NjQ0QjEyNkU1MEQ1ODgzREFBNEY5NjA4MzA5NzdENkJCNkZCMjM2MEJDNzY0MURCRTJCNkFCNzk4NDBFNTRCMzU3CitDMzRDNUFBNworRjE2N0VFRDdDNDNEREU4RDg3QUY1OTYxOTYKKzM4QTkzRUM2OEExMEZCOTI2QTdBREU0RDNEMkI1MEVGQzJEOEU1OUUzM0FDNzI3NUFBNkJCOEIwRDdGNTY4RkY0QTIwQjg5NkFFMzhEMTRDQjM3NzI4MUE4RkEzRkUyNjNBNUM3QTA1Qzc3RjNGQUI0Q0FEMEE2OTk1ODZDQUU5RDUwRDFDMEZBNDhFCis3MTYyMTNFNgorOEM1RTE5MDcwMDI4Q0MwQzAyNzU5NDA0NDk0OAorNTdDQTlBNEUyQUIyMTlBMjlBQ0IwM0JEODJFRkVGRERGOTI0RjFBMTY3MjU3OThCOTI5ODMxQzFBQTE3OTE1QjY3RDVBNDY0NTlBRUM5RjEwM0Y1NTM0M0M1NkRENDk0Q0Q3ODZFQjc4Q0IwNkQ0RDJCQ0ExQzA1QTM4NzAzQjk3MDg3MEU1NzFFNzNEOUM1MDc0MURBM0VDQUE5RUI0RkE1MURBRTk2NUQwMzc4MkRFQUU2NDJGM0Q1QkVGRDgxNDZCQzUzQUE5NjZDNDZGRDNGQzY5OEJFMTU4RTFEQUVGMDQwODkxRTY5NEVCRgorMUE0RUQzM0EKKzlDMzU5MTIxNDUyNjIzODNDNkU1NjlBMUFGCis3Qjk5N0Y3MkMyNjRDMUNCQzJFODkyMDBGNzY0MEI4RjM5NDQ2M0RCNjJCQTU3MjY0QjhFMjU3QjJEOERCRjdEQ0IwNkNDRDY4QTNBNTM0OUJDQkQ1NDRBOTM2MTQwRjE1MDU3NEM0NEY5OEEzRjg5RjcwNTFDOUEyNjExOUQxM0E3QjU3MDIyNkQyQTAyMzBDQTAyOTE3MTY0NkE0MTE0RTY5N0U0ODhBOTEzNTQKKzJBQzExMTgyCisxODE1RDhFNjdEODEyNDU0MjFBQjZDMTIyNkEyCis1NTQ3QThDRURFN0RDMzZDRDYwRENEMEI0NTkwMDEyNTU2REY4QkNGMUJGMEYyM0U5MzdGNzY5Q0VBNzgzQUIzQ0UzMzFGNjdGRkQxODBBMzA1N0FCQjBGN0I1QkM0MkY5MEU4NDMxMTE4RUE2RkMwNDgxNzA1QjU2MUZDNENDNkMyNkIwMjczMUFGMzFERThGOUFCREU2M0RENjI2REU1NEU4NUE2REI2NDkxMkRBRTlGMUQ3MTRGMDhEOTkyMjEzN0E3OTFEMkZCOTI4QTQ4OEE0NUQwQUU0RjNFMzRCRUQwNkFDNURFMURCRjhDMzE0MjIzNkFCNgorMUY4MDc2QjYKKzkyQ0JENDFBMUNGQjk5MzA5MEU4OTM3Mjg4CitEQkM0Rjk2NkNBRDhDNThGQzYzM0Q5RjRCMzc0MDZBMDhGMkU1NDc5MTYxQjUwOTg4REYzNEE5REM5RUQ0MTA2NEI5MkNBMkRBNDREOUY2M0JERDRFODkxNzg5Q0M0OUUzRUZCOURDRTlFRjc4OUE5RUY4RkVFQjREMTg5NUIwRUVCRTZBRENERUYKK0UyODgzQzMwCitBNEMxNkE4RUY5Qjc0QjJGRjVGOTJEQTBCMQorQjNBMzRFOUIyQUFEQ0I5RkFCNkJERTFFNEJBQTFBQzU3RTI1Qzg5NDMwRkVCMzMwNjIzOUNBRkYyRTU0RDg4QzNDNzhGRjVFMjUxODU2NUQ5QjlENDdEMjJDQTUxOEEzRjYzNDg3MDI2NUY2N0FGNUIzOEI0MUVEQ0RCRjUwMjNFNkZFOUM0MjAwNjVFMkVFRjgxMERFMjg4NzQ0MUM2RDEyMzgxMUM2QzM2NDkyMzlBRjg4RThBNkJFNzZDNDZGMUM1QgorQTI3NjRBQzYKKzg0QjQ3RjBERTc3RTNBRjA4Qjc2QTk2QUNFCis2RkNCREQ2OTE4RjE1MjdDNDlFNEQxMkE5OThGNEIwREIwQUU2OTUwRjNGOUZENDVCRTNCRDUzRTU1QTExQjJCRTI1RTE5NjYzMTI2OEEwMTc1NTNFNDc3NUFGODY4NzEyMTU2NzZDQTQ1NkQ5OTA5RDU2NDA1RDg5NjdFMjQ5QTVDMzM5M0M0NkRGNEJGOEExQzJDNUU4N0M5QTI4NjUwNTE5QzQ3NEQ5RjdBQjMyQTU0CisxNzJDRTgxMgorOTEzOTM5NTQzRUY1RkQwQTY3QjBDNjlGMkJDMQorRkExMTE5MUE1MEVCNkRFMkRBOUQ3NkZEOUU5RTM5MjM5REZFQzcwQ0ZBQjc4MkU5MzdGNDc1Mzc3RDE4NDI5MzdFQjM4Qjg0MkNERjc5NjY3MUQyQkVCQ0REQkQxNjg0QzAwMzQyRjk1MkJDMzI5MURDMjFCMkQ3ODBDMUU3MDk2N0Y2RTBEMDU0NUZGQjNCRkEzM0ZFQzc3MTRBOUYzOEM5MkM4NTMzMzg0QkUyOTdGMDE3RkFDMDM0NzJBRDRBRjYzREY1OTQwNDg1RkI1OUZDNTBDQUIzNjkxRkQ2MDBEOUUyQkQ2NDY5NkNGQzJDRDk2MUE1RkREMjY3Cis2NjJCCis2NzNENzE0NTVDRjgwN0Q3NUQ4OTVGMENGRjhFCis0RjAzOTZDNAorMTY0OTRCOTUxRDUxQTcyQ0U0NjY1RTExOUQ1RAorRUVENDg3NUNEQTBFMDNEODA5RTNFM0M0NURFMEQ0NTZGQzY5QkI2QzY2NzY0Q0E5NkM3NDZBNDczQTI1RTZENkRDRjdBQUFCRkE2NkQ3MDAxOTY3MTQzOTNDQjczREI0NDMzREU0OEI5QzM3QjhCQTY4ODgzODhBNDIzQTBFRjNBRjI5NDY1OTYyM0JDNzc1MEI2NDc0QTRCQTc3QkQ4MjEwNEU2RkRCMUYzQ0E2OUMwQkJFNUE2MUQyRTdFMDIwNDlDQjhDNTQ3NDlBN0YxOUIxODc1Qjc5NUJCMDMxQUZBMzBGQzFBOUQyRDAzOEJDOUE5QzA1OUU5QkI1CiswQ0RECis4ODQ4MTk5MzgyQzM3MEMwMkMxNjM1NEM0NjVDQTU4MzA3NkFBQzMwRjJCMzgyNjY2RAorMTkwQTUzMDAKK0M3MUI3MjIwQjA0QkYwRTg0OUNFQkJGOTdBRTcKK0M2QzQ0MjU4RkQxNEZGQTEwNEZBMzM4NDZBOTdBNDlGMEQ3OUJGNjhFNUU0MjVEQTJBNkY4NTg3Qzc3QkYwNkJCQUYzRDIwMTRGNDdEQkYyQUFGOERCNENCRTY4Q0Q2MzVDRDc4MEUxRUJEOTQ0RjhGOTEwNDExNUIzMzYxMTQ2QTdBRjI0OUVDNEUzOTFFMzRGODgwOUJFOTk5NEQ1QkJCMEY0MjU0QUYxNTcxMzAxQkI1NkZBQkEzNkVENDQ1Qzc4NEFFNzYwMjk1QTMyMTZEOUFDNjA0MTBDODI1OUUzMzFEQ0QyNjEwRUU4RUVEODAxMjEyRkMwRkYyMgorMTJGNworNDg2ODVFMTIKK0E0OEZGNzcxMTQ5RjM5NEJENDIyNkY1NjhCCitBOEEzRTY3RTJGMDI4QjlGRTNDOTFERDZFRDcxMEVCRTlERkYwMUQyOEU0MDUxMkZEMjc0MjkwMDU2NjFFMEQxMkJDQjJCQ0U1MTlFOEVGQ0IwN0E2RjZDQTJFQUE0ODMwMDNCQkIwNkUyMDE3ODdBRUM1RjYxRTk5QjZCRUIKKzJCNkMyNDRDCitCM0Q5MkE5NEVFOTA5MTFGRjNFMDAwQjhDNAorRDA5RjRFOTlGRjYyMzJCNTBBRTE5RTNFNDI4MjY0QTdFMkRBNzlDMTBBMTAKK0FGMERCRDUxCis3M0FBMzg4NUE2RjdDNzg4QTlFMDcyQTBEQUMyCiswOEQxQjkzQTg3RjU1NjhGCisxRTYyQkE2MgorODdBQTlCQzY5M0I4MjA5NDI5NjVCOTNEODNBMzNCNzA3ODg2QUQ3NDM5MkQyMjBFQzU0MzJDMzkwNkJFMDNCNkU3NkEKKzUxM0E3OEEzQzM4REREMUQ2NkQxOTA1RTAxQ0FCNUM5RTM3MTBGMkRENEVFQTYwMjAzNTczQUUyNDY4NzYxRkE2Mzk4NzNBNjNBNjAKKzk1ODUzNkE1OTdBRDgxMTBERjE0NTc3NkE2OTA1NjMxQjEwRENCMkJGMzkzRDBCMkEzODFBQworMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoYgorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGIKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hiIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NiBwdXQKK2R1cCAzIC9DMDA0OSBwdXQKK2R1cCA0IC9DMDA1MCBwdXQKK2R1cCA1IC9DMDA2NyBwdXQKK2R1cCA2IC9DMDA2OCBwdXQKK2R1cCA3IC9DMDA3MSBwdXQKK2R1cCA4IC9DMDA3MyBwdXQKK2R1cCA5IC9DMDA3NiBwdXQKK2R1cCAxMCAvQzAwODAgcHV0CitkdXAgMTEgL0MwMDgzIHB1dAorZHVwIDEyIC9DMDA4NCBwdXQKK2R1cCAxMyAvQzAwODUgcHV0CitkdXAgMTQgL0MwMDk3IHB1dAorZHVwIDE1IC9DMDA5OSBwdXQKK2R1cCAxNiAvQzAxMDEgcHV0CitkdXAgMTcgL0MwMTA1IHB1dAorZHVwIDE4IC9DMDEwOCBwdXQKK2R1cCAxOSAvQzAxMTAgcHV0CitkdXAgMjAgL0MwMTExIHB1dAorZHVwIDIxIC9DMDExNCBwdXQKK2R1cCAyMiAvQzAxMTUgcHV0CitkdXAgMjMgL0MwMTE2IHB1dAorZHVwIDI0IC9DMDEyMSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTAgLTIwOSA3NDUgNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY5QTcxMTc3M0IxRjA2MkVGRENFOTMxOThBNzY1RjhGNTVBCis2RTlGNjBCNDNBRDIxM0I2Rjk5Njc1RDQKK0FFOTc2RTIzMTkwMTJEQjk2QgorMzNDQjM3RkMKKzJBQjdDQjFBQTlFN0M2RDFBNjBFQ0MxMDM2Cis3ODE3M0E1RURCRkE3MUYxRUJEMEMwMzJDQ0QxMzhCNkQ0Q0U2NjgwMURDREZFQjZCRDgyMEExMUVEMzZEQworOEU0RDNDRkMKKzlCNzRENzM1NDNDNkU4QjJENDVCNzdCNkRBCis1NEI3QzNDRDE4OUQyMjA2QTE1MkQ2RUNEMENGNDA3NTRGNzNEQUNEMjhDNkZFRDlCQzI5OEU0MEM1QzIxREVBMjU1NjFCNDRGQTlEMjlFRDdBRkI3QTRFQkNFOTNCQzEzOTY5QjgyMDVEMjJBRTM2Mjk1Mzg3REYKK0E4RjFCODY5Cis5Njg4RDg2MjUzOTdENTZCQUI5ODg1NDcyNQorODcyODRDQUVEQUMzRTQ3MzNGNDA0REFFQUI4MzAwQTlBREEwMUUxNzQ5Qzg3QURGQUJFNDM2QjA4QzI0QUQ1QThDMzQzNUFFRjU1MkZGRjc4NjIxODZBMDIyQTJBMTJBRTNBNUFENzdCODY1QkY1RUUzRTE2MTI3RTVFNDJDQUJGMzlFN0VCRTA3QjNGQjM2MDQ0MkQxOTkzNDU2MDAyNTNGQzU5NTdDCiswNDYwQjBCMworNEQ2M0NBNUYwNjU2QUY3NkU5RjczQjU5QjM4NAorQjJFNTkyQjBBNjc4N0Y5MzQyNjY2NzE5NjNBNjc3MzA5MkZGQkI0ODk2MzVGRTgxQ0Y1QjkwQTJDM0QxMDdBMDIzNTU3NkM3RDE1MEIzQUI1QkJENTdFNDI0RDkxNDc2RDIxNUNFNDM2REJCRkMwN0YzNDM5NUQzNTM0RUJDNjAzODM1NTA4REZERkJEMUM4RjMxNUQ4MkExMUNCMzVFNjIzNzdBNkU3MjdEQjVGRjU4NjM4ODg1NkZGNDQ4MzI1REZCNjJFQTM5QTdGM0FCRAorQ0U2MjcyMjMKKzYwNDJCRjNCQzM5Q0RFRDEzRDk4RjU3RUVGCis0MEU2NkY5NUM0NjUyNTI1OEQ2M0QxOTVCNEFBOTA5QjlCQjNCNzAxMEVEN0NCQkREOUJDNzNENjJCNzkwRDJBOTY4QjEwOTcxNjQxMTFBNDk5NDRENjAyQThEQ0ExNDJCMkI2QjY0NDI3NjFGMjlENUQ4NUI4NzU0RTc2MzREMTA0NzZDQjY2NjQ2RUY1QTRGRDMxRTAxQTIyRUVCODZGN0QzNjI2OTlCRENGNEQKK0U5QzkxMzU1CitBNUY1QTU1NTIzRTY0MUVDODkxNEIwRjM1OTRGCitBMDg5QkFGRjZEQkY1OTMyOEVBMUNCODU1Q0I0MUVCMDJDQzQ4N0YwNDJCMUZFMDgwRDY4QkVDMzQ4ODIxODlGQzRCRDdEQjJBMTdDQjNGMUVCQkUxRkY3QkE2MjY4QTZFNTFFNjBDNzVBQUY4QUVGM0JCQkYxMjQyOTBEOUMwNjlGQjgwRTA3MjcwRDZBRjU4QjZBQ0U1OTFFNUE1NEFEMDk3QjVGNUFEN0EyNzNDMzQ5RjZCMjg5NjFENzg0N0E4NjEwNzhFNjg2QTFGM0UwRkJFNkE1NzYyREI3NTY1RTBBRjU3MTA4NzU1RTQxCis5NjQ0REYwMQorRjRDMzE0QjBEQjE0QTJCMUQwNzhDM0U2Q0UKKzU4RDkzOTdEMkQxNjlFNzQxRkNDNUExNDA1NTc4RDQ4QTUyMDVDQjhEOUQyNjRFNTJDOEFBODU5NjMyOEEzQzc0RUMyQ0IwRTI0RkNGODg1MEQ4RjRERjY1MEZFQUE0MEU4MDQ3MTdGRTI2NDdGNDkxNEMzM0I4Nzk5NjMKK0FDRkI1QTlDCis2RUJCMTUyNDBGMDJCREE5REI3QzFCMTQyOQorNzlEODBEQUYzRjg0OTgzODI0MzMyMjE1OEZBMTI1NTM1QjJGN0VBQTUwMjlCOTYzRTVCOENFRjA0REJEMzE3N0M5NUY5ODlFMzExMzZDOEE5RjgxMzYxQzFGQzExQTk5NDVEQ0FDRTE2NURDOTZEMTMxMzEzQ0UyNEQzNkRGRERCQTY2Q0VGQUU5M0E2NUQ2QjgKKzlCQTRCNTJCCis4RTZEQTcyNUU4QTNDN0ExNUNGMEUxRTk4MDlDCitFOUJFRjY0MzZCOTc2NUI2QUUxNDg5OEIxNjM2RDk0MEMzNUE1N0U1MUFBMDY0NjE0OERFM0U3MjM1M0ZDOTI5MjQ0QjJDQTBBQUFCNzM5ODQ2NTMzQ0FCN0Y3ODk3NzdEODAzMDFDRDMxQjRFOTk0REI1MzNEQ0RBNUQ5NkEzREIzM0YyNERCQkFBM0Q1OEVFOTE3NjE2N0JBMjc4MkM5NzEzQjYwNTEyNTY1Q0M2NDMzMEQwQkQ3RDIyRjUwQ0I5QUU3MENDMworNDVEMzI4M0EKKzdEMDVDRkM5QTY5MUUyRTJFQ0JBNUFCQTFFQjUKK0M5MDFERUYzMjExRTc1NzU1ODg2RkQwRThCQzNGRUI1MTc3NTk1RTQ1MDBBMzA4Q0UzMEEwMkUwMDk3M0EwQTMyRUE3ODM0MEY3NjkwQTBFNDA5RDQ5OThCQjRCQkU2RjAzNTk4RDkxREZCNEQzQjFGOTQ5NkFGOTgzMzZCMThDQzRBNjAzOTA3Mjk0MTlFQTI3MDc5MjM0QkU1OEEwOTY5RjdEOTQ3QjgxREU1MUJCMjMwQ0JGOTMwQzlFQjlEN0IwNUQyQkUzNjM4OEVEQ0QxNzVGQkM1Mzk0QUM1QjU2QUQ2NzIzNkMyRkYwQzFFMTlDNDFENzhBOUNENQorQkNCRAorQjBFQzgyRTEKKzM2OEU0QzYxNDVFNDBBOTYzMjRFOEVCRkUxCiszQkFBNzBDQkQzQkIyMUY0NkYxMzdGM0U4MDEwRDk3RTk3RjA3NkJDNTcxQjQ5NzY1OENGNkI2REYwOENENDE1RkIwMDNDNkFBNDUzQjdGQzRCRTRENjMzM0VDODMzQUUyRDgzNTRGRTc3QjIwMTY4MEI5MTI1QjRGREY0NjhFRDRERTNEMUZERUM3NTY0RUFDQgorMjlBOTlFNzkKKzhBN0U4OEIyOUE3Rjg5NzExMkJDNzUyQTdDMTgKKzM5QjUwNzVDMjlENEFBNzU3NTVCODRGN0Y0RTZDRkNDNkE4QjUzM0M4NUVGMkI2QjBFOTlBOEU4MUIzMzVEMzM3RDk1NzY0RDIxMDhEQzVDNEJEMjVEQTA1MkQwNzI2M0Y3MTlDQ0Y5RjBERkRCMzVERDEyQjdFQkI3NDY4MjRFOTFFQzNDOTczMEI3ODAwOUJFMDgzMzQxRUM5QzgzNkRDMkNFNkY5Nzg0MDI1MkUzRTI0MzY3RDJCNkU1MEU3NkU1MzI5NjgxNEY0NjYxCis5N0UxMjg4MworNzQ1NEQyMTlGRkJCRkVEQTFDQzk2QTdEMTJBMQorNkUzNEFEOTA3NjQwNTcwQ0ZBMTExQjgwMUMzREJDRTI5OEQyNDM0MTA4RDQ1QkNERTRERkY2MEFEN0UyMjI3QjcwNThDMDlFMTdBOUU4MTRGRjZBNDEyQTUzMUUyRjRBOTIyNTNFQzdGNTY3NkQ0RUI1RTA0QzIzMjNCNkQ5RkM1M0Y1NTcwRkI5RTgxNUIwRjRFQjE1NjgzNjM0MjUxMzU1M0ZDNUIwRUFBQjdENjg4REU2MENGM0NDN0I4QjZEQkIwNjg4NDAyMDZFNDk5NTVCMTg5MkNCN0Q4MjdDMzhEM0E5NEIzMEY5QjE5MDRBQUE1Rjk3MDBEMkVCCis1MTVBCiswNDQ2MThERgorQUQxMjRCOTYKKzA0NEE2MzA4QzU2MTJDOEZGQjlEOTYzRDc2Cis5QTk1N0M4QUIyMDkyRDAzMDhEMEUxODNEODQxOTM5QjUyM0Y1NzVCNEYxNDgyOUFFRjA1QzQ5NzdGQjhEMzE0MDhDRDZENzk4NTIyODEyQTA3QTc2OTk0NTc5Nzg5NDg4NUU4REFFQzIwNTYxMTlEMEJBREQ1QTFDQkNCRUVEM0FFMUFEREM0QjZBRkNGNEY5NTZGNDA3QzE5MzBFREQxODY5NAorODdCMDhCRkIKK0Y1QkFFMkFGNEZBMDNCQzJBODlCMjkzNUU2Cis2RTE4QTc4M0E4MjQzOTREMDQ3NUJBMkZBM0ZFRUM0NDI2ODVFMTBDMTJFNEE5MzEzMkE0RDQyNUYyNEFBQzQ4RTgzNTFCMEY0NjczMTlBQTJCMDAzRUUzM0Q2QTg0ODcyMTUzODNGNTcyNzREQ0NBQkNCMjA0NjFDNTFDOTVDRTk3RThDOTkwQzgwRkE1RTY0QUIzMjIwMkExMDgwRjE5MTU5QzcxMDk2NzY5QjEwQ0JEMjlBQ0FCCitFQTBDMEE2OQorQUY5QjMxOUNDQUM2MzlEMUU0QTBCODEwQzAKK0Q4MjUzQjI0RTM0MTJEODE1NERBNUY0RDFDQThFMDEwQjkxM0RGMzE0RjEwMzkxQkYzMUE4MjY3QTJEMDlGMTM0OTY1NkJEMjM1Mzg3MDZCQjExQUU0RjVBMUY2MDAzOTM5NkJGODE3RjI2ODVDRDFDMDJCQkMxNUQxNzU3NzExM0Y5OTRFRkUyMUMzQkJDOTJFQ0UxRUQyMjUyMgorNTZCNDMyNUEKK0YzMkJCNkE3MEQwNjUyMzI0QjJDNzIwQURCCitDMjNFRTIwMkUyOTZGRjM5OEMzMDMxQzFERDZBNUREREQ5ODUxRjRBQzFDNTcyNUNBMDlGQ0Y2MDI5RjcxRDBCNzcxRDMxOTBCQ0M4REFDMUEwQzcyODM3MEI4NjlFRTJENDdGQzI2RAorOEI1RDJFOTMKKzYzNDE2RDA5NDY0QTc2MERCNENFREUwRkY4MkEKKzQzRDY0RjQ2MjFBOTk0MEVBOERBRUM0NjVCRTlDQjBGMzdFN0MxN0ZEODc2OEIxMkE4MzEyOTgwNDk3N0MyOTA0Q0ZBNEUzRDBGRkQyRUUwOTg3RjM4QjczQ0JDODEzNTJDNDY5QjBGOUM4OUYyQjlFMTY0MzI1Qzg2MjVEOEVBNjM0MDVFMTJENTZGMUYxQTkyNTExNzUxRjgxQTRGMjYzNDZCREQ0MDhBRDBERkQ3REFEOUM5MTJDRTdCRERGNzM4Nzk1MzM3RjU0Q0YyCitDOEMyQzJBMworREM1MzBFRTNCOEQ4QTE4NzI5QjQwM0ZEQTAKKzI2MTk4MTg2Q0ZBRjQ2ODY2NUQ0NDA4NkYyQ0Y3QUM2RTcwNEZEODU3MkJBMDA0MzVBRDhBMjNCMTA2MjNCM0EyOTYzREU5REYwMUU0QjdGMkZDNDMzOUY3ODg5ODlCQUMxQzRBRDNDQjQ5MUFDNjE2MUVFODYwMzE0M0M4RjdDMzBCMEREN0QwRDAyCitBNzE0MjdBRgorOTg3QTY2RDg0MzFEMTVEODUyMEJDRjMxRTMKK0NCRTkyODIyODhCRDlCNDEzMzZDRUM4NUY2QjdGMDYwMzAwRTUyRjhDRENBRTREMThBQ0Y0NTMzMURBRTA5REQwMDQzQjY4OEMyQkMxNDhFMDVGMzI2MTA1MDhGQ0YyRkE3RkU0RjE4RThDRjc1NzZDMEU0QjAyNjY5OTk3N0VDQ0M5NDUxM0VDMzIzNkU2NERGREY1RDIyRDA5NjE4OUFCOTJFNDg3Q0NENEY4REQwM0IKKzgwMTc3ODc3CiszOEY1MkE2RUM2OEU1MTIyMkEwNjc1RTQ2NDYwCitGNkRCQUFCM0I5NEM1NTg2RTk5NzI0MDU3REVBNzc0MTM2NjI1QkE4RDBDQTc3MjQ1Mjc1N0IxNDg4RTFEQkE5NTg4RUZFMjcyNkQxRjE1OUYwOTAyNEE5MkFCQjg3NzBENERBQjEyMTY2MDhCRTdCMDhCQzBDRTlGMTExQ0JBOUM2NTQwRDJDNkU0NUI0NkFBMkMyNzIwNTVBMDdENzBFNTVFQUI3RTU3MEIyRDI3NUJBRUU2MUQwNzREMTZGNjRFNzhDMzZGQ0FFMzM5OTZFRjU1MEJBMzBFOUYzMTk3NTlCRUQ4OTVFNzk5MDQ3OUYxQQorMzkzNDYzNjYKKzJFMzA0QTk0Q0FBNEVCM0MwQTQzODcwNTI3Cis5OTQ2QjNBRDA4Q0I5RTlCRUI2N0FCRTMwQjhCQTQ1OUYxRjczNDNERDE0NzZBQUIzQzFGRURCQ0ZFMUM1REU2ODdFMzEzMUFBOENDMzZGM0ExQTE2RTQxNzRCNTJCQjdCRERGRjc3MDJGQTY5MDE1NDQ5RTJFRTYyMTcyQUEyMjRCMUY3M0YyCitEREM4MEZBQQorQTU2MTZCODZBRjFBRTU3NzU1MEEwMjE5RDQ4RAorNzQ3MDdBM0Y2QTdENDdDMTRBMTczMDUxNjA0RTkzNkNCQkMyQkJFMzJENkM0NjEwNDFBNDEyOEUwQjI4RTc4Q0VEOTJDMkRGNjFFNTQwRERDNkU1MTNBNUM2NjJBMTk5OTM3OTJBREE0OTk1RTBBMjg3NUE4REVEMDU1NDg3NzQ0QjBBMzgzMjlDQUE3RkM3NDg0MkRCMERBN0FFRjVFREUwMDNFODUyMzUyNUM4NTgxRTAxRjJDNjMxQ0QwNDY3RkI5QTE1MEIwOEQzQjQyRUVBMzc1NjgwMDVCNzg3QzJEQzRGOTY0N0E5MTQ2Njc5NDgzMEI2NzFDMEM0CitGQjIwCis1NworRTNCM0UyMEYKKzQ4RDEyMkQ3RTUxOUE0NDcwNDEwNzYyNDNFODkKKzhGMjQ0MkFGMDVEMTA3NzAKK0ZBQzEwN0RDCis3MzFFN0VERjFCQUIyM0Q5RUQxOTdGQzkyNjk4NkMyNDhBQzUzRjEzOENGNjUxM0YxQkUzQjRCMjkwRTgwRjJDMDFGOAorMkNFRUFGRkZFM0JEMTMwMzRCOEYxNjIxNzNDQjQzNTEzMTA4RkRDNzFBMDZEOTM1NEY3QjA5QkY4QzM1MDZBQjlCMEEyODQ1Q0M4QQorMUE3OEY4NTFBMDNGOEU2QTBFMEU1ODk5NDVFQThBMEUyNUQ2MUZDMUU5M0U4MTdCNjY0RThCCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTYyNDMyMmYyNDMwMjUwZDAxMGUwMTBmMjQyZDIyMjcyYzIwMzAyYTAxMjUyZTMwMDExNTI0MjAzMTMzMzAyODJkMjYwMTE2MjQzMjM1MmUzMDJhMDExOD4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyNDMwMjUyZTMwMmMyMDJkMjIyND4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MGIwYT4gOTM0NiAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxNGIgU0YKKzwwYjEwMGYxNzExMTQxMz4gMTI3MSAxNDU4IDAgMjA1NSAtMSBzCis8MDAwMzA0MDIwMDA3MTIxNDE2MTYwZTE1MTg+IDIwNTUgMTQ1OCAyIDM0MjcgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDExMTQxODEzPiAxNTg5IDIwODYgMCAyMTA1IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA2PiAzMTc3IDIwODYgMCAzMzMzIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjAzMjIwPiAzMzMzIDIwODYgMCAzNjEyIC0xIHMKKzwwMD4gMzYxMiAyMDg2IDEgMzY1MCAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDA5PiAzNjUwIDIwODYgMCAzNzg1IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MjgyZDJhMDA+IDM3ODUgMjA4NiAxIDQxMDcgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYT4gNDEwNyAyMDg2IDAgNDIzOSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMwMmUzNDI4MjMyNDMwMDA+IDQyMzUgMjA4NiAxIDQ5MjYgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwOD4gNDkyNiAyMDg2IDAgNTAwOCAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDJkMzIyNDMwMjUyMDIyMjQwNzAwMWIyNzI4MzEwMDI4MzEwMDIwMDAzMTMyMjAyZDIzMjAzMDIzMjgzODI0MjMwMDE0MjgyZDJhMDYxND4gNTAwOCAyMDg2IDUgODUyNyAwIHMKKzwyNDM0MjQyYj4gODUzMSAyMDg2IDAgODg5NSAtMSBzCis8MGU+IDMxNzcgMjMzMCAwIDMzNDAgLTEgcworPDIyMjIyNDMxMzE+IDMzMzYgMjMzMCAwIDM3ODkgLTEgcworPDAwMDMxND4gMzc4OSAyMzMwIDEgNDA0MCAwIHMKKzwyNDM0MjQyYjAwMGEwMDJlMjUwMDMyMjcyNDAwMTcxYTEzPiA0MDQ0IDIzMzAgNCA1NDk1IDAgcworPDAwMTk+IDU0OTUgMjMzMCAxIDU2OTEgMCBzCis8MjQyNTI0MzAyNDJkMjIyNDAwMTUyZTIzMjQyYjA0MDAwZTE4MTMwNzAwMWIyNzI4MzEwMDI4MmQzMjI0MzAyNTIwMjIyND4gNTY4MyAyMzMwIDQgODg5NSAwIHMKKzwyODMxPiAzMTc3IDI1NzUgMCAzMzE2IC0xIHMKKzwwMDIzMjgzMTIyMzMzMTMxMjQyMzAwMjgyZDAwMmMyMDJkMzcwMDIxMmUyZTJhMzEwMDJlMmQwMDFhMzIzMDI0MjAyYzMxMDAyZjMwMmUyNjMwMjAyYzJjMjgyZDI2MDcwMDFiMjcyND4gMzMxNiAyNTc1IDggODMzNCAwIHMKKzwwMDExMTQxODEzPiA4MzM0IDI1NzUgMSA4ODk1IDAgcworPDFkPiAzMTc3IDI4MjAgMCAzMzM5IC0xIHMKKzwyNDMwMzEyODJlMmQ+IDMzMTYgMjgyMCAwIDM4NzMgLTEgcworPDAwMGEwMDE5PiAzODczIDI4MjAgMiA0MjU0IDAgcworPDI0MjUyNDMwMjQyZDIyMjQ+IDQyNDYgMjgyMCAwIDUwMjYgLTEgcworPDAwMjIyMDJkMDAyMTI0MDAzMDI0MzIzMDI4MjQzNDI0MjMwMDM0MjgyMDAwMjAyZDJlMmQzNzJjMmUzMzMxMDAxMjFiMTgwMDI1MzAyZTJjPiA1MDI2IDI4MjAgNyA4ODk1IDAgcworPDIyMmUyYjA3MjcyZjA3MjIyZTJjMDc+IDMxNzcgMzA2NSAwIDQyMTggLTEgcworPDFiMTAxOD4gMTU4OSAzNDEyIDAgMjAwNiAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYz4gMzE3NyAzNDEyIDAgMzMxMSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMwMjAyZDMxMmMyODMxMzEyODJlMmQ+IDMyODQgMzQxMiAwIDQzNTEgLTEgcworPDAwPiA0MzUxIDM0MTIgMSA0NDMyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDU+IDQ0MzIgMzQxMiAwIDQ1ODAgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyZTJkMzIzMDJlMmIwMD4gNDU4MCAzNDEyIDEgNTIxNyAwIHMKK3dzdDpkdXRjaDEyYiBTRgorPDBhPiA1MjE3IDM0MTIgMCA1MzQ5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MzAyZTMyMmUyMjJlMmIwNzAwMWIyNzI4MzEwMDIzMjQyNTI4MmQyNDMxPiA1MzQ1IDM0MTIgMiA3MjU0IDAgcworPDAwMjAwMDMwMjQyYjI4MjAyMTJiMjQwNTAwMjEzNzMyMjQwNj4gNzI1NCAzNDEyIDMgODg5NSAwIHMKKzwzMTMyMzAyNDIwMmM+IDMxNzcgMzY1NyAwIDM3OTIgLTEgcworPDAwMmYzMDJlMzIyZTIyMmUyYjAwMjUyZTMwMDAyNDM2MjIyNzIwMmQyNjI4MmQyNjAwMjgyZDI1MmUzMDJjMjAzMjI4MmUyZDAwMjEyNDMyMzUyNDI0MmQwMDMyMzUyZTAwMjcyZTMxMzIzMTA3PiAzNzkyIDM2NTcgNyA4ODgzIDAgcworPDFjMTExOD4gMTU4OSA0MDAzIDAgMjA2MiAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwZD4gMzE3NyA0MDAzIDAgMzMzMiAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMxMjQzMD4gMzMzMiA0MDAzIDAgMzU5OSAtMSBzCis8MDA+IDM1OTkgNDAwMyAxIDM2NTcgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwNj4gMzY1NyA0MDAzIDAgMzgxMyAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDIwMzIyMDI2MzAyMDJjMDA+IDM4MTMgNDAwMyAxIDQ2MTMgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYT4gNDYxMyA0MDAzIDAgNDc0NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMwMmUzMjJlMjIyZTJiMDc+IDQ3NDEgNDAwMyAwIDU0NDMgLTEgcworPDAwMWIyNzI4MzEwMDIzMjQyNTI4MmQyNDMxMDAyMDJkMDAzMzJkMzAyNDJiMjgyMDIxMmIyNDA1MDAyYzI0MzEzMTIwMjYyNDA2PiA1NDQzIDQwMDMgNSA4ODk1IDAgcworPDJlMzAyODI0MmQzMjI0MjM+IDMxNzcgNDI0OCAwIDM5NDMgLTEgcworPDAwMmYzMDJlMzIyZTIyMmUyYjAwMjUyZTMwMDAyNDM2MjIyNzIwMmQyNjI4MmQyNjAwMjgyZDI1MmUzMDJjMjAzMjI4MmUyZDAwMjEyNDMyMzUyNDI0MmQwMDMyMzUyZTAwMjcyZTMxMzIzMTA3PiAzOTQzIDQyNDggNyA4ODk1IDAgcworPDFiMTQxMz4gMTU4OSA0NTk1IDAgMTk0NSAtMSBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYz4gMzE3NyA0NTk1IDAgMzMxMSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMwMjAyZDMxMmYyZTMwMzI+IDMyODQgNDU5NSAwIDQwNDkgLTEgcworPDAwPiA0MDQ5IDQ1OTUgMSA0MDkyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDk+IDQwOTIgNDU5NSAwIDQyMjcgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyMDM3MjQzMDAwPiA0MjMxIDQ1OTUgMSA0NjYwIDAgcword3N0OmR1dGNoMTJiIFNGCis8MDg+IDQ2NjAgNDU5NSAwIDQ3NDIgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyZDMyMjQzMDI1MjAyMjI0MDcwMDFiMjcyODMxMDAyODMxMDAyMDAwMzEzMjIwMmQyMzIwMzAyMzI4MzgyNDIzMDAxYj4gNDc0MiA0NTk1IDUgNzY5MiAwIHMKKzwzMDIwMmQzMTJmMmUzMDMyMDAyYjI0MzQyNDJiPiA3NjY1IDQ1OTUgMSA4ODk1IDAgcworPDAzMTQ+IDMxNzcgNDgzOSAwIDMzOTQgLTEgcworPDI0MzQyNDJiPiAzMzk4IDQ4MzkgMCAzNzYyIC0xIHMKKzwwMDBjMDAyZTI1MDAzMjI3MjQwMDE3MWExMzAwMTk+IDM3NjIgNDgzOSA1IDUwNjYgMCBzCis8MjQyNTI0MzAyNDJkMjIyNDAwMTUyZTIzMjQyYjA0MDAwZTE4MTMwNzAwMWIyNzI4MzEwMDI4MmQzMjI0MzAyNTIwMjIyNDAwMjIyMDJkPiA1MDU4IDQ4MzkgNSA4NjQwIDAgcworPDAwMjEyND4gODY0MCA0ODM5IDEgODg5NSAwIHMKKzwzMzMxMjQyMz4gMzE3NyA1MDg0IDAgMzU5NSAtMSBzCis8MDAyODJkMDAyMjJlMmQyOTMzMmQyMjMyMjgyZTJkMDAzNTI4MzIyNzAwMmMyMDJkMzcwMDIzMjgyNTI1MjQzMDI0MmQzMjAwMzIzMDIwMmQzMTJmMmUzMDMyMDAyZjMwMmUzMjJlMjIyZTJiMzEwNTAwMjgyZD4gMzU5NSA1MDg0IDggODgyNSAwIHMKKzwzOT4gODgyNSA1MDg0IDAgODg5NSAtMSBzCis8MjIyYjMzMjMyODJkMjY+IDMxNzcgNTMyOSAwIDM4MzcgLTEgcworPDAwMWIxMDE4PiAzODM3IDUzMjkgMSA0MzA1IDAgcworPDA1MDAyMDJkMjMwMDMyMjcyNDAwMTcxYTEzMDAxYj4gNDI3MCA1MzI5IDQgNTY2MiAwIHMKKzwzMDIwMmQzMTJmMmUzMDMyMzEwMDAzMWIxODA5MDAzMjI3MzAyZTMzMjYyNzAwMWIxODBjMDQwNzAwMTcyNTMyMjQyZD4gNTYzNSA1MzI5IDQgODg5NSAwIHMKKzwyNTJlMzMyZDIzPiAzMTc3IDU1NzQgMCAzNzExIC0xIHMKKzwwMDI4MmQwMDFhMzIzMDI0MjAyYzMxMDAyODJjMmYyYjI0MmMyNDJkMzIyMDMyMjgyZTJkMzEwNz4gMzcxMSA1NTc0IDMgNjM0OCAwIHMKKzwxZTFiMTM+IDE1ODkgNTkyMSAwIDE5NzIgLTEgcworPDFlMDgxNzJmMjQyZD4gMzE3NyA1OTIxIDAgMzkwNyAtMSBzCis8MDAxYj4gMzkwNyA1OTIxIDEgNDA5NyAwIHMKKzwzMDIwMmQzMTJmMmUzMDMyMDAxMzJkMzIyNDMwMjUyMDIyMjQwNzAwMWIyNzI4MzEwMDI4MzEwMDIwMDAxYjE0MTMwNjJiMjgyYTI0MDAwMzM0MjQzMDM3MDAxYjE0MTMwNjJiMjgyYTI0PiA0MDcwIDU5MjEgNyA4ODk1IDAgcworPDIwMjIzMjMzMjAyYjJiMzcwND4gMzE3NyA2MTY1IDAgMzk1NyAtMSBzCis8MDAxYj4gMzk1NyA2MTY1IDEgNDE3OCAwIHMKKzwzMDIwMmQzMTJmMmUzMDMyMDAyYjI0MzQyNDJiMDAwZTE4MTMwNzAwMWIyNzI0MDAyMzI0MjUyODJkMjgzMjI4MmUyZDAwMmUyNTAwMWUxYjEzMDAyODMxMDAyYzIwMjgyZD4gNDE1MSA2MTY1IDggODgyNSAwIHMKKzwzOT4gODgyNSA2MTY1IDAgODg5NSAtMSBzCis8MzIyMDI4MmQyNDIzPiAzMTc3IDY0MTAgMCAzNzQ2IC0xIHMKKzwwMDIxMzcwMDFlMDgxNzJmMjQyZDA3PiAzNzQ2IDY0MTAgMiA0ODQzIDAgcworPDEzMTg+IDE1ODkgNjc1NyAwIDE3OTggLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDg+IDMxNzcgNjc1NyAwIDMyNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwyZDMyMjQzMDJkMjQzMj4gMzI1OSA2NzU3IDAgMzkyMCAtMSBzCis8MDA+IDM5MjAgNjc1NyAxIDM5NTMgMCBzCit3c3Q6ZHV0Y2gxMmIgU0YKKzwwYT4gMzk1MyA2NzU3IDAgNDA4NSAtMSBzCit3c3Q6ZHV0Y2gxMiBTRgorPDMwMmUzMjJlMjIyZTJiMDcwMDFiMjcyODMxMDAyZjMwMmUzMjJlMjIyZTJiMDAyODMxMDAzMjI3MjQwMDFmMWYyNjJiMzMyNDAyMDAyMTI0MzIzNTI0MjQyZDAwMWIxMDE4MDgxYzExMTg+IDQwODEgNjc1NyA3IDg4OTUgMCBzCis8MjAyZDIzPiAzMTc3IDcwMDIgMCAzNTE0IC0xIHMKKzwwMDMyMjcyNDAwMTQyODJkMmEwNjE0PiAzNTE0IDcwMDIgMiA0NjA3IDAgcworPDI0MzQyNDJiMDcwMDEzMzIwMDJmMzAyZTM0MjgyMzI0MzEwMDMyMjcyNDAwMzEyNDMwMzQyODIyMjQzMTAwMmUyNTAwMzAyZTMzMzIyODJkMjYwMDIwMmQyMzAwMmYyMDIyMmE+IDQ2MTEgNzAwMiA4IDg4MjUgMCBzCis8Mzk+IDg4MjUgNzAwMiAwIDg4OTUgLTEgcworPDI0MzI+IDMxNzcgNzI0NyAwIDMzNTEgLTEgcworPDAwMzEyNDI2MmMyNDJkMzIyMDMyMjgyZTJkMDAyMDJkMjMwMDMwMjQyMDMxMzEyNDJjMjEyYjM3MDAzMjJlMDAyNDM2MmYyZTMwMzIwMDMyMjcyNDAwMjgyYjJiMzMzMTI4MmUyZDAwMmUyNTAwMjAwMDMxMjgyZDI2MmIyND4gMzM1MSA3MjQ3IDEwIDg4OTUgMCBzCis8MjcyZTJjMmUyNjI0MmQyZTMzMzE+IDMxNzcgNzQ5MiAwIDQzMzYgLTEgcworPDAwMmQyNDMyMzUyZTMwMmEwMDMyMmUwMDMyMjcyNDAwMjcyODI2MjcyNDMwMDAyZjMwMmUzMjJlMjIyZTJiMzEwNz4gNDMzNiA3NDkyIDUgNzI5NCAwIHMKK0dSCitlb3AKKyUlUGFnZVRyYWlsZXIKKyUlUGFnZVJlc291cmNlczogZm9udCBIZWx2ZXRpY2EKKyUlUGFnZVByb2Nlc3NDb2xvcnM6IEJsYWNrCislJVBhZ2VDdXN0b21Db2xvcnM6CislJVBhZ2U6ICgzMykgMzMKKyUlUGFnZVJlc291cmNlczogKGF0ZW5kKQorJSVQYWdlUHJvY2Vzc0NvbG9yczogKGF0ZW5kKQorJSVQYWdlQ3VzdG9tQ29sb3JzOiAoYXRlbmQpCislJUJlZ2luUGFnZVNldHVwCitib3AKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoCislIUZvbnRUeXBlMS0xLjA6IFBTT3dzdGR1dGNoCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDAzMyBwdXQKK2R1cCAzIC9DMDA0NCBwdXQKK2R1cCA0IC9DMDA0NSBwdXQKK2R1cCA1IC9DMDA0NiBwdXQKK2R1cCA2IC9DMDA1MSBwdXQKK2R1cCA3IC9DMDA1OCBwdXQKK2R1cCA4IC9DMDA2NSBwdXQKK2R1cCA5IC9DMDA2NiBwdXQKK2R1cCAxMCAvQzAwNzAgcHV0CitkdXAgMTEgL0MwMDczIHB1dAorZHVwIDEyIC9DMDA3NiBwdXQKK2R1cCAxMyAvQzAwNzcgcHV0CitkdXAgMTQgL0MwMDc4IHB1dAorZHVwIDE1IC9DMDA4MCBwdXQKK2R1cCAxNiAvQzAwODIgcHV0CitkdXAgMTcgL0MwMDg0IHB1dAorZHVwIDE4IC9DMDA4NSBwdXQKK2R1cCAxOSAvQzAwODcgcHV0CitkdXAgMjAgL0MwMDk3IHB1dAorZHVwIDIxIC9DMDA5OCBwdXQKK2R1cCAyMiAvQzAwOTkgcHV0CitkdXAgMjMgL0MwMTAwIHB1dAorZHVwIDI0IC9DMDEwMSBwdXQKK2R1cCAyNSAvQzAxMDIgcHV0CitkdXAgMjYgL0MwMTAzIHB1dAorZHVwIDI3IC9DMDEwNCBwdXQKK2R1cCAyOCAvQzAxMDUgcHV0CitkdXAgMjkgL0MwMTA3IHB1dAorZHVwIDMwIC9DMDEwOCBwdXQKK2R1cCAzMSAvQzAxMDkgcHV0CitkdXAgMzIgL0MwMTEwIHB1dAorZHVwIDMzIC9DMDExMSBwdXQKK2R1cCAzNCAvQzAxMTIgcHV0CitkdXAgMzUgL0MwMTE0IHB1dAorZHVwIDM2IC9DMDExNSBwdXQKK2R1cCAzNyAvQzAxMTYgcHV0CitkdXAgMzggL0MwMTE3IHB1dAorZHVwIDM5IC9DMDExOCBwdXQKK2R1cCA0MCAvQzAxMTkgcHV0CitkdXAgNDEgL0MwMTIxIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjM4IDk3OCA3MjJdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMEVBMTU3QzYyNTgzRkFBMDE4RjM2OUYxMEMyNjdFNUE2ODkKKzE0QjNDRjA1RDdFM0U3MzAxQTFEMTEzQworQjg3OTY5QjBCN0EzM0RGREU1Cis2MTA0MUM4QQorNzlFMEM1NUYwMEYzMDE4NTc4MkQ5QjVDMDIKKzU0MDU0N0EzNDczNDYwQUJGRkEwRTQ5NUY1M0U3NTg0QkY0REQ1QkZDRkYyNjBBMTQ5QkMxNjQ0RkY1NzM2REY1NjI1ODhGMkE3OTE3NDdBMEI0RkVBQTM4RTdDNEQ2QTIxNzlCMTMyNENBMzMxQzNBMURBMTg0MUZGREZBRjFDOUM3N0IyQzIzNgorNTFBRjIxMzQKK0MyNkQ5RjUxNTQ4MjU4NDY1M0UzRDI3NzJGCis0NkI4NEU5MDMxQTlDQzc5MUYyRTkxMzM3RDYyMkFBQzY1NzYxMkU0NTFFNUU0NEQ2RUExNDBFODcwOTczMkRFNjQzNTdBQjk3RjM4QkIyN0FDMkFDQjVDMjc1MUEwMzBFRUYwNkNDRjJCOTlDNTU1MUQKK0E1NUVEOUMxCitGNzBBRjRGOUZFRkE0NEUyQjYzOTRCOEJEOQorMzY0Mjk4RkUxMTAyMjk4MjcwMkM4MzExMzY5MjRGRDY1OUYxMkY4NkQwRTk0RAorNDIzNDA1NEQKKzJFODMzRkYxNUZEOTk0RDAzNzkxMUY5NTkyCitCODE2QzcyNkRBQzdBODU0ODk4MjgyNDI1M0E0QzMzODUwMjJENzAyRTZDNUI3N0UyMUQ1RTQ3NzI0QTlCMgorMjI4Njc0ODMKK0IwQzIwNDYzQUYxMkJENzJGNkFGMDBCMDI4QjkKK0ZFRjA5QzYwQzRFMDk5M0YxQjc3N0RCREUxMkUyMTAzQTc2RjNFNDA5NDRFQjY3REQxRTNGMDlCRTgzNzczODc3ODhDOUI0Q0M5RTY5NDQ2MzM0MjUxRUUwQkI5Q0MzN0NDQzQwMjNFOUE2ODBFNUVFRDE4QTNFRUE3QjU4RERBNDFCMUU5NkE4MDdGMzAzMTNCNTY4MDJGQkFDNDI3REY0RDBBNzA2MjAzMTNCRjQ4OEE0QjAyRTE4NDZCNDMzRUE3NkE1RTU3M0ZBNDNGQUNDQUQ0NjNBOTEzOTc5QworMDUyQzE2OUMKKzdGNTk0M0U1MkVEMjBCRjE2RDY4NEVDNUU3Cis1MTFBRUNBNTZCMzYyQTkwM0NEQzIzQzVDMkQ3NEVBOTAzOUVCMzVCMTZEMjRGRkY0MDJDMTZDMjQ3OEVDMzgyMUY5NUI2NjRBQjFDODFENURFRTk2M0Y2NTIzODVCODFERjc3ODY2MjAxRjQKKzJDQjBFNkI2CisxNEVENjY1NEJBREFDQjhFNzlDNTBERjgxMkQ4CitDRjlGMDdGNEU5MzFFMjdEMTA0QTlEQ0Y5MkJCM0FBMjdBOUU0QkUyOUQ3OTVDNDE1NEU4OTg3Q0VDMEZFNUE2NUZEMTcxQTYwREMxMjUxMkZCMjY3QUNENjcwN0JFRDQyMjc3OUIyREE5N0NBODY2Nzk3NEVGQUJCNEMyNUY2QTE5Njg4M0MxRjlBOERERURFRDEzNDMwMTJDMkU5NzFBMUQyRkU5QUFCRUZCRTU4Rjk0ODM1QjYyQUZERkIzMURCMzU0RjIwNUZDNkZDMjhBQTE3QjNEOERDRUJDNjAxRkU4MzdCMgorNTZFNDBCOTYKK0NBODJCNzE2ODQxNEQ1NEY4OEVGQzFFOTNGMEUKKzg4REM2NUU1OEU1MUQ5NzE3Q0FBMUM5RjI4OUE1NDVBNTA0N0IwNkI2NzlBNzlENDUxM0FEOUZFMEEzNDFGQzc2NUM4RDEzQTk5QUFGOTFGN0NCQzFFNTAzNTU2QjQ2MTUxNzhFNzhDQ0U5QTEyNjJBMEE0NTg2Njc3QTczMDc5RDE5RkM1RTUxMTQ1REY3RDgwQjExODg4QzlERjMxOTI0MDFDMkZFMzU4QUYyRTI4MURBNUY2RUJCRUQyQzY4OUM3MjI3MTlGMkE0MjM3MzNDMUQ4MDQ0QTQzQkQ5REVBMUZEMzFGNzE3MDk4Q0IxQTgzNjg0Qzk1OEI5MQorQkY4NgorRDUKKzRDQkFDMDQ4CitCQjRGNkY1OTI3MEVGMjkwODUzNzNDQjBGOEMwCis4OEYzNUYyQzFFMzA2MjA3MUJDMkU5RDNFNDMzMTFFMDEwRjU1RTVDNDhCMkIxQkE0MTMxOTc4RjMxNzk1QUJFNUYxQUIzM0E3RThGQzMwNjdDNzI2NDk3Q0M1Q0IzRjQxMkEwRjMwOTRBMTI0Mjc5MUUyOEUzNjVBNjc0QUU3NDYyQzM4QzE1RDk3NzQ5OUYyRDdCNzNDRDYyMzg4RjdCRjQ1QkY3QTY0MzExRDdDOTI3NzgxNzZEOEFDNkIxNTREQjMxOTdFMTEwQ0RCOTQ2NjQKK0QxRjIyMUQyCis4RDA2NzhDN0I3NEUwNEFFQTlFOEVBMUQ0OAorMDE4QTRENEQ4Q0YwMjcwNTczMjU5NDM5MzAzQzkwRkE0OUExQTczQTgzOUExQzFDNEVBMTZCQzMyQjg4RERCOUQwRTkxQjdBRkVDMThBMTRCMTUwMEZFNDgzRTc2MDhENDExRUQyMDE2OUUzODcwNEUxMzZGOQorRTFDQkU4QzYKK0E2RjQ1MjQ2QjhENjYyODc5RDk0MkIzQzAzCitDMDEwOTFGMjYyNjVDNDMwMjBDN0RGQTMwREExREU2MkRDNzVGODY3ODgwMzk5NEY3MjlDOUE4NEIwQkY1NkFFOUQ2RDI5ODQ4MjIwRDIwMjk5MkU0MTQyMkY5RTc0NEJGQTZEMjI5RERCNDRGQkY1QUFEQjlFMDIwMDNBMDIxQjVFNzc2RDhCN0JBOTNGCis4NUIyQzE1MworQ0MxQTIxOTcwNjVBNkU1NjgxMEE2MEJGMzA0RgorNjQzQzZFQjc4NkVCRTk3QzgwNDNCRTM5NkY1OEU5MDlCN0Y5RURENEE5QjJEOTEyMTlGNTkzMjAwRTE4RUNCMURCMDZGQ0I2RDA2MDREQzQ2NzY0Q0Y1RTY3NjdBOEM1MzAzQ0JGMERGMkFBMTlCNzM5RDFGRUEyOUQ0ODUwOEZDQ0VEMDkyQUQyMjNBOUQxRTgzRTRDNTRBODhBNDE1ODg5QzA3Rjg1MDZDQTAyMDQ1OUNERTNEMERCNDhCMTkzQjEyNzRENTEwOUQxNzkwRTE1NzMyOTYzODc0MzgyCis5NzI5NzMwOAorMjA2RDU1NzNFMTUyMTFFN0FDOUZCNTY1OUEKK0Y3MTVEMzA4M0M4RDBCNDM5MUEwNTA5NDlENDM1QTY2Mzk3RjFEMUU1NzY3RUFGNDk4MzdDMTlFQUUxOTQ5QzYyNDhEMkIxNDE5NjIwMDVCQjkyMDZDMUQzN0VFQTc5NDQzNDE1N0ZGNzFBMjFGMEU2RTE2NjI1RkYzMkRCNDBDMjk2RDQwN0Y2MEI4QzNGNTk1MEU4MjFEN0REMkVGNUJFMEMzMkE4MEY2NzY2MEE4MDI1MzBDODgKKzc4QTA4RjQ0CitENDZFQkREN0YxOEQwQjUyNzAwRTU5RTZDQzI1Cis3Q0I1NjIxOTlDQThEMDZBQTM0ODhCOTg4MTdEMEQ1QzM0Mjk0MTUzRDY3M0JEODA4Q0M4OUJGMkJFRDMwQUU1QkZCMTlGMDIzODZCMjFGNkVDRkUyMUQ2MkM2QTkzMEY4MDUxM0IwNjUyOUI4NENERTY0ODc1MDc1RTQ5OUVCRUE3NzZCOTlEMTUwQ0ZBNjY5NkMzRDhGMURFM0M5QjA1REVCNzAzOUUwMzk2M0E5OTlEODRDMzgwODE2QTU4M0U2Mzk2QjQ4RkI5RjhDNEIxNzJCQgorMjMyMjNERUIKKzVCRkVCNEU2QTlFMURGMjdFQTA1QjdGOUNBRjcKKzlEMUQxQTA1OTE2ODlCMDJBQzdDNzgyQTMzQkI2NkFFMzQ5NjU3RjM1RTNBNEU2M0YzN0Y3Mjc2MTA0NDNBNUFCNkVEQUM5M0ZDOTIwQkU2MzYwMDAxM0Y2MkNEMUQ0MDc5MzYyNUI1QzA3QjQyM0NDMDU3NTM3QUJDODA0RkZFQzM3RjJDRkU0QUE1RjA5MEQxMzg5NEJFOEFEODk2QTA0QTU3MTUzODNEMjJEOUJENjMzNUY3RUE5OTY5OURBMDZBREI0ODAwQ0RBQTM3RDNDNzFCODZGQTFFNDIzQUIwRjI3MkI0RDkxMTQxNEI2NkQ0M0M1NzgyMDc1RQorQzE4RDE0MzkKK0QwMkQ3MUNGQzRGRkRBQTlCN0U3QTI1RjA2CitFRTE3REZERDYzNUQyRDc3QzZFMTkwMzkyQTE4REI3NzdBMkVEOTc5RTdBRDhGNkQ5MTI5ODI0MDMyQUUwNTU3OUYwQUM0QUFCNzkxNkIzNTI5MzAzN0Q2MDIzNzEzQTI2MTMzM0FFRTk1MkY2Q0UzNTVBMDBENzAzNkNDNjFFNjlCMTcyQThGNTA3NzZFQTg2NjI2MTc2MDM5Q0Q1QTgyMUUKKzgxOThGNkYwCis2ODFENURGREZCOUZFMkZDODgzMzBFNERBNTYxCis4NEJFOTY3Nzc5OTdGNjc0NjJBRDQzQjVFMTdERjZDMTcwOUYzNjM2REI0RDNFODdBNjcwNjIzN0VGNDlGQzYwMDc3QTc1NzEyRTIyQjZGMkY4M0VERjQ3MkYwQjM2OTRFNTkxRUM3MzI4RDlBN0M3QTc5N0QzMzYwNjZCNEMyQjRBM0Q4QTYxRDE3MjUzQzY1MzQ4RUQ4RTE1NDMzNDdDODI3NDg4NzNFNUU4MUZCNjRCN0JGQjk4QjgzODMwOUY3NzZBQzg2MQorQkZCQzBDMTEKKzJCNkE0RTc4OEUyQjM1QkZGREMyMjQ4MkJERkYKKzk2NEEwRDY1OUQ5NkYxOUExOTZBMjQwRjc0MkIzNTY5OEQ3NjYyOEQ1ODczRTU5QURBMEEzRTI2QzYyNEUwQTQ5MjVCQjVFRjE1NzQzMzMxQTBFQUFGMkExNTE0RDBDNzUyMzdFQTg1NDMwMTE4NzkwQzBEMTE3OTlFNTFGNTNFRjA2OTc5Q0M5NTM5Qjc5OUQ3RDc1NzkwMjcxQUM3QTdCQjAyM0QwMDZDREQyMUQxODE5NkM5NEU0MDBCNTI4M0E1MjE2QUFFMkRFNDEwOTE1NTYzNEJDQzFEMTUyQUZDNkNEMjg0Mzg0RENCQjc4NzZCNDAzREE2MzZGOQorRkUyMAorOTE3QkI4MUNFMjQ1ODEyMjEwMDRFNUNCMDYyMkYzQkUKK0VDNkQ4NTZCCis5REY4QjI2MkFENUQ4NTBCMjU5REE3QkFGMzI1Cis2RURERkNFNTQzQ0VGMDUwN0Q3REI4NjA0MjgwQzUwOEU1RkQ2ODY5NTIwMzdDM0NENTVGNTA2NzMyNjcxNTEwOEY2N0VDQTkxRkU0MTA5MzVCNThBMzA1NTEzQzhFRTIzMTU4NERDNkVEM0E3MDNGNDIyOEEzQTA3QUVBNTAxMDc1MzcyNkRGOTA1NjI5MDNFNUM2NTlDNkMxNDEyREQxMzZEQUQxQjVFMkU3NERFOUU2NjlBOURDNDhDMTYyNTIxQUY2NjdCOUQxN0UyOThBNTcxRDk5RTkxNzc5NjJDRjdGREMwNEZFMDNFQUE2NjAzRDk1NUU0QkRCOEMKKzUwQ0IKKzhGM0MyQworMjg2QzI2QzEKKzM0NTc5Qzg5NTNDMzExMkFCRDBBREE4RTMzCis1MzRBMkZENEYwMzc4NkVEQjE4NTgyRDdCRjJBM0FFMUFBMzkxMTcwQjJBQjA0NjFEMzU5MEM3OEQ5MDA1NTA2MTIyMjNERjlCNzFGODI3NkMwMThDNEE1RkEyRDg2NjdCM0ZCQzEzMkQzQ0YzMTkwMjJFRThFMjVBQ0VCQTJDRjg1NTU4Qzc3NThEOTlBNTA0NUNBODhGRDA1QzY1RkFFQjg1NTFFRjc0QjlDMjYxMQorQjI3QzkyNTYKKzY0OEI2MjgwNUIzMzAwODhGNDE1RURCOTVGCitGOUNFQzBBNUZERDBGRDQ2MUIxRDMyN0VDOUQ0MTFFRDExQzdGNkYxRDMzMDY2QTM4N0U3NTZDQjhERDY1QzM2RTI0RDRCMzY1Q0Q2QTAyNDlEQTE2MjBDQzdFQjhBODU4NERDQzM5QTBEREYxREFEOUIyRkFCMERERjIyNzhGNzlERkI0Nzk2MkRDNTE0M0QwMjlDMTBEQjUzRTcxN0Q1N0U0OQorRThCQjgxOUMKK0UzQTI2REIzQ0QwMTA5OTkxNTgyQTdCNkJGNEYKK0VCRDAzMTMyNDAzODI3NDk4RDA2MDMxMjQ3QzZGNkVBODgwRDg2NUM0RDIxRjUwMDIwRjNFOUU1NTJEMkVFNUU2NzZCQUQ5RjgzMjM0NEIzREM0NUU5RDE1OTMwRkRBRkRDN0VGNUZGMDEzQTIwQjNFNUFGMEZFRkQ4MEUxMzgzODRGODdGNjc2QjQxQUM0MkJDMjYyOTExQkYxMTZEQUQwNjI2Qzg0MDg1NjEwMTkwOTAxQUUyQUUyMTFFOEE1QjQxOTNCODcxOUEyM0JFRDg1MkY1NkY1NUVGNTkKKzYzNUM3NEE4CitFMUM5MEM0NjQ4RTBBRUNFQ0E4M0RCNTU3OQorMUQyMThEMEMxOTIyM0MwNTBCNEUxNzFGN0IxREM5ODU1NTlCMTNBMjg0MzQwMEFGQjczM0FGQTA1RDkxNDU5RUZCMUE5RTA3Q0EyNUM2OUQ3ODMyOUQzNDNDRjI3QkQ1MDlDNzI1MUMwRUU4QjU5RTQ2REVCRTA1OTU3NENGRTFCQ0Y0MDMyNUM4ODk0N0Y3Q0E0ODM3MTY0M0QxNzQ5OTQ1NTcyQURDNjc4N0VFN0JCRgorQTQ3QkE0NzYKK0E3NjAxOUQ0NjYxNjlBREM3ODAxNkI0OTkwCitDRkI5QjczM0NGQTRGRUY2NDYzQjJGMDM3QUMyODVGMDRERDRCMUM0NDkyRDkyNjJEREU4N0U3MEIxMjNBRDVGQUVDMzVCQTkwRkU5MjY5Q0VBRDhFMzNFOEE2NTY0NzFFNkJFREE1RDE4ODg5MzcxRUU1NTUyQUE1MTZDNDNBNDQ2MUJGQjUyOTBBQjg0QkY4MTFDNzU1NDI1QzQwRjE4RjgzQUNGNDg0M0IzRTM1RUYxNUQ2MUFFCiswRTVCQzg3QQorNTk3RDE1MDE3MTc3OEE5QzAwODU0NDRCQTM3RgorOEM4RkRDMEIzRDUyMTMzNjE3RkUwRDMyNTUwN0QzNkYwNDA2MkU3NTAyMjgxNjlEQzBBRDEwMUIwMjMyNDAwREY3M0U0RjkwMjcyNzlCOTc2MzM3ODkyOTk4NzBGMDRCRTlCQkMzMTlCOTVFMDI2Q0VBQ0VGMEQ2OTRDNDVEODk4RUZCREVGNjU0NDYzNDk2RjE1MjczMzYyM0E2QzNCQTA2Q0I5NEEwMzA4MTY5N0RCODBGQTc1MTVBRjQzQUNCNzZGNTlDNEU0NTI2Q0M5QkM5MzdDODlFMzYzRUQzRTI1ODM2MzZFREJDN0NFMDk1NzA5RkYwMkQ5QTkyCitDM0RBCis3Qjc1REFCQkY0MTg4NjBGOTgwQTI5M0E2MEJFRDNBNDc5QTkzMTE1MDRCRDk3MjlFQzExREZCMTM4RDVFMUJEMTU4RUFGMTZFNTdCODI4N0M3REQyNDM0QjY0QjQ3CiswRTc5NUU3OQorNEZGOURGNjI5RkYyQzYwNjc1OTc4QTJFMjg1QQorQ0U2M0ZDQjAxQTEwNTg5RTZDMDc4QjU0NDdENDRFOTRGMDYzMDA4RDA0RjNGMkI5QkQ4NzM0MzU4MUVBRDI5Qjc4RkJCRUQ4OUVGQUNCNTA2QjI4NEI2RDMzRDc3QkUzRDI4N0FBM0VBMTc0QzkyQTc2QTdEN0JGRkYwM0ZEQjg5MzJCMjYyRkFFNzdBRkFERDUwMTNFN0JGMUFFRTMyQTQ2NDFGQUREMTBGRkZGMjQyNUEwN0Q1MTdEOEU3QjkxMzIyNjNDRjkxRkRBNDFERjQ0NTgxRjFGOUMKK0Y1MkZFQ0RBCis1NDM2MjYwOTNGMEVCREExOTQ0NEU5MTYyQQorOTQ2REZBQUQzQTZFQ0JCNjA4RkY5RjQ3NjA2MjA1M0Y1RjkxM0U2RERBNUYxNzg4MzE0RTAxRkM4OEZFNkNFNzExNURDRjUwM0UzODgxQjJFOEFDMzIzODNDMDQ1MEFFNTgzRDJFNTk3RTU1NTNBNkUwQzQ2OTEyQzQ4RDIxMzdDQTExNkFGNjZENzI1MDQwNEEzRjg1RjE0MDdBNzEzOAorMTUxN0ZGNkUKKzhENTRDQzc2OTZFMTFFQ0I3NTY0NjZCNDlFNTQKKzBENzkxMDBBOUM4NjA0OUQzRTY4MkFGMDY3OTQwQUM4N0U0MTM0MEEzQ0FDNDMyQzZENTkzN0EwNjBCNTIyQUIzNTkxOTdEOEQ0RDNFOUFFMkE0NEFGQ0QxRUM0Mzc4ODU3MTRGODVDOTFCOThEQTM4M0I4NTBDRTQ1REJGQzIxNENCNTgzNTE2OTlGMDZDRDVFNUE5RTMzOTlGRjg4ODNFMjQ1OTg0ODM0ODFEMjhGODU1MTRDRTQ5ODRGQ0E5OTk1MDY4N0U2NzREMjJDODIwMDE0OTQ4RTZGMDg1NkQ1RTgxMDBBRjJBQjk5MjAwRjFDMTg0MEM3NkFCMworMzg0QQorRkI4RDgzODVGM0JERDkxQTVFMDBDRjFEMzU2RjM1NkM3Qjk1RDlCMkE4RkZEMkU3NzI1NEM5N0JEODNCNDhDRDM2RjFFRgorRTM2MUE5NTYKKzdCQjE2MUM2MjI2QzU0QTBDNUIxQURFMzNGCitEMTQ2NzBDNkZCN0Y3RDdFMDNDQTMxQ0FBQjg3Qzk3QzFEMTQxMUExRERERUQwRTY5Q0IwNDZFRjVCNkQwQzk3RDQ4ODgwOEI0OTMyQjY3NjRGQTlENUNGNThGMjkzNTNDQ0VCRTRGNjlGRUMKKzZGNUE5QzVBCis5RjIwRjRFMTE2RjIwRjRBQkM5NDdCNzEzOTMwCitDOTU3QzYzMjY4MjJBMUM4ODAwM0MwN0E5NUZDMkJEMzE0RkEwNUYwNEJFRkQyNDhGMjc1QTc1Q0QzQjc4NUEwNjk2MDNCOUM3QUQxRDk0NzI2QjI5MTU4QUVFMUFFOTFDQTRDQUUzOTExNzY5QzAwQkI3NjkwMUVGNjk2RUZFRUNGRDNFQkJEMUYyNkM5RTgzN0ZEMjUyRDg3RUEwN0U4QkZDRDBENTk3QUM0OUM4NzMzOURDRDI0Q0VEQjkzRTQ1Q0YwQjJGNUNCMUU5MTJCQ0E4RkQ1RURGM0NGMjE4QTg5OEZFRjZBOEYzMENCRjlCODY2RjBDNUM3OEQKKzQyN0QKKzFEN0EzQTJBNTZCMjRCNzlFQTQ1OUMxN0NCMUVCRDI3QjgxNzgxODMzMDc5MjQ1ODc5ODgzQ0JCQjQwRkQwCis4NUFBMTc4MworN0NDNEU1NDU2NDhENDIwRUQ1NDNFQUI3OEJDOQorOTRENkJGRkRBMDFGRDc5OUM2OUVEQTM4OTM2MEZERENGNThCM0Q4MDFEQTU2NTYxODdDNUYzOEVCNjcxMUYxNTE0MDVGRThGQ0RFQkE0RUI4MkE2RTFFOTQ2NkY5MkJFQUQ5M0Y0QkMxNTE0Q0RDRkU5NUUxMjY5Q0Y0RTNBNjFBRjI5Q0UyNTgxOTE1QkFBQkRBMUY4NTNFRDEyNERCNkUzMzgyM0M1NjVFMkI0REI0QzU4OTQ2RDU3MTA5MzgxRUQ2NEE2RkIwRTg4ODdFNjFDNjZCMDA4CitGNzgwMjRDNAorOTMyNzI0OTdBNERGNzM1MjBFNjkyQ0QwOTcKKzAwNUQxNTAwMUYzNDIyNkFFODEwNzIwN0U3Q0VFN0QxQjRCNTk0NEYxOEVCRUYwMERBOEYzNDBGQTdFNzFGRkMyQTM0RTIyNEY4NDk3MEE4OEY5NkUzMzRDNUU0NjdGMDFFMkEwOUI0MzBCQTFBOTkxMjZDNEQ2N0NEMkE1NTJBRDlGQjg0QkQzQTA0CitEMkFEN0Y1MAorODIzQjUzMTQyNTM1NTI3NjEwNkFDNkU5M0NBRQorMjU1OEFGQTcwMTBBRUFGMTdFRUU2NjkyQTdBRDQwQzFFNkU2NjUzN0UyMERCQkRDOTE2RDJCNzMwRjVGMzc1OTExQjUwNTVCOEQ5QzU4QzUwQzM4MDlENTQ0OUM0N0U0QkE2QzEyRUJGQkFEMjk4OTc4NzRGMjZCNDJERDdCNjc2MDkzOUNCNTY1MjM4NTBGRkNBMDgzMEVCOUZDNzg5NjFGQzlFREQ2RjExRDM3QUM0NzYwOUNCNzBDMEM5MzM2Mzk5OEQ3NzJGRTVENDE1MTAwRUNFOUI3REM5MTE3MkREM0M1NUVCRUUyQ0M4QworRjhBQjNBQjcKK0RGRERBQjdGNEM0MjdEQTI2MzI2MkJDOEIwCiswMTI2OTRDMzQ1ODZGOUZDREI4MTQ5RjM3NEIwMjc3ODMzQTAxODNBREFBQTJFNzcxREM4QkVBRDc5NzU3NDgyRDExODY0NTAzMkY1NDgwMzE5QjY0QUI3MTBBNDY0NEUzNTU2M0EyNTQ2MTRGM0ZGQkM2MDk1RkQzMEZGRUZENTM3NjEwODI3NjIyMDE4NTg0QkVEM0MwMjcwODBCQTBCNkU2RjU2OTM1QTRCNUIKKzgzNEFFQjRECitBRjkxRTVCRDE1Q0M0RjdCNTJGNkE4MDhGMURECiszN0FBQTA4RTUwRjM5NEM3NTMwNjkxNUZCOEQ2NUQ4QUIxQ0IyRTdDNDgzMUE5MkVBNEZDNzRDOUI2NDcxMEVCOTk4RDIxMzdCMkYwRTBFREM1NERCNkRDMTlDQzUzQTJEODczMTJDMDBGOTYzNjMyNEQ4QzcyMTdDOTEwQkUyRUQwQ0RCMjgzNjNFN0VCRTc3MzU1QUI1NjE0MDVGMkYwRTY2NDRCRDAxMDI5RTA4Qzc3OTVBRTU1QzBBMzlBQUIwOUE5ODE5RDJEMzVCNzgwRkQ5MkVGRDJGM0IyNDMzMTZFMURCNTMzMTAwM0M0QUM4MkIyOUFDOAorMkY1NEY2NkUKK0RBQjI1MTI4ODE0NTc1NDVEQkZGMkZEMTAxCis0MDlGMzA4OUU2RTVGQTBBNTA2OUYyQzcwMjFBMDJDNzE5RjlBMThGRDA4MjZBQjQ2Q0JGQzUzRUVCRTg2REVEQTAxMjNFRTA2QkM3RUM0NUVGNUQzQjYyQkFGNzI5MEQ5RkZENDI2NTIyRUQ4QzIxMzhGNUM1RDdGNEE4QTYyNEJGNUI4QkQwOEUKK0UyQTYxMEU4Cis4Q0ZEMjUwNDExNEQ2QjRCODcwQzJDQ0JDMAorOTQwMzFDNzFBQUQ0OEE4QkYyOUM3RDkzM0ZCOUE4QTJCMTRGMkEwMTcxNThGRjkzQzExNzZCRDgzMDlEMTM2NDJBRDIwNkU5Q0IyNUVENDRCN0QxNDAzMDk0MkE3NjU4MDk5MEVBRTEyRTRCMzFDOEMyN0E1ODMyMDgzRTEwOUFFNDFGODgzMTMzNERCN0ZERjk1RkUzNUIyRTQ0RTJFRDRCMjBERjhGNDYyNzNDRkE2NUZGM0FEQjkyMTM4NjdBRDREQQorQ0FBMjQ0QjcKK0U3MDg1NjU0MDU1MTFCQjUyNzMyQkUwMTc5CitERUJBQ0FDNUQ4RDJCNjU2QkFGREMzRUZDNkE2MTM3OTRBRDc2MUE0OEY5RDFGMjU3QjFCRDU3NEJGRUUzQUI5NjI0RDNBNTU3OTE5Q0QwMENCMjkyRDU3NDUwRjYzNjk0RkFGMDNDQTM1OEI4MDJDQjBCQkYyNjJERkYyOEM4Q0YyRURFNzA4RkYzMkVEQ0Q0QThGNjVCOTBCOEY1Q0RCMjMzRjYwREQ2QzkxOEQ1RjRBCis1NjU5RTA4MgorRDBBNTZBRUU3MDk3OEMzMUNBMDkxQTBEMzI1MQorQkE3RDNFODI4MjdFMkZGOTUwOUYyM0M0QjdFQjFDMTZDNDVDRDM3QTkwNURFQ0Q4NjA2RkMzOUIzMTc4OEY1MTUxQkZBMUJFQzhBM0M2Rjc1NEJFOUQwNzEwOTEzRTZCODcyMTU2NTc0QThGRUYyN0QyNTI4RDlCRTFDOTM0QUI3Q0Q5QURCRjMzNDREQjdEOTlCNDVFMjgzNDI0N0VDQkQ1MUExNDdERjQ5MzUyQjQxN0ZCN0MxNTYxOTE3N0VCM0FGNEU0QzYxQUUyOTY5RUQyMDA2MDQ0N0I3NzY5MURFMUQxNDgyNjkxQUQ5MUY0NDYxQUY2NkI2QjcxCitGN0ZDCiszM0I3REY0MTMwNzkwOUY2MTU4M0Q2RkUyOTUwCisxRjkyOTI5MgorRDE4MTNFOTU5QzEzMDk3RDQ5ODcwNTNEOUYzNgorMkQ4RDI1MTNFRUIxODk2MDQ4OUUwMzI0OEU1OEY1RTIxMDMxMjI4QkFCMjI5MDcyMTg1M0RBOUVGQzQ2MUJDMjRDRTYyMTQ4MzY1QkFBQkMzNjAwRTRDRjREQ0ZCQzM5MEE3MkY1OUZCOEFCOEYyRTlBREY0QjNFRTY5ODU0MTMwNUZFRTcwRkY3RTZERTVDMkM5RTY1MTlBMjVERUIyQzFDRTE1MkU0OEY4QjRBQzQ1QTM5M0ExNkZDMzFDMTlDNkEyRTYxNkVGMURCNDcxREREMDUwQkQ5Nzc5MTZEMjI1MkM0MEJGNzIwRTYwQjU4Mzg1NkRGRDkwQjFBCis5ODc5CiszNTc0N0E0MAorOTQyMEFCMTNEOTMwNUFCN0UwOTVDOTlEMkU1QworMDc4QjUxOTkyOEU4RkY0OQorNzg5RTE2MUYKK0Y0RDQxMzEyMzJGNUY3QjVFNTgxODY4QUUwRjUzRDU1RkI1NzVCOUQ1QkJCODQxOTA0QzQ5NDFCODQxMDM2RjUzMDJFCitERUNGQTI2ODY4MzJBMjMzQzY1NEVEMkY3RDE2ODlCMjc5RDU0MzAzRkZDQzFEQUI0OTMwNjg4RkE5NTNENjNBRDlEMDVCOUEzQUM2CiswNUU2RUFCNkNDRTJCRTE1NTMzOEVFREM4QkNBNzZGRTQ1NEE0Q0MwRDNEQzlGM0VFNTZDMjQKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwNDYgcHV0CitkdXAgMyAvQzAwNDcgcHV0CitkdXAgNCAvQzAwNDkgcHV0CitkdXAgNSAvQzAwNTEgcHV0CitkdXAgNiAvQzAwNTggcHV0CitkdXAgNyAvQzAwNjggcHV0CitkdXAgOCAvQzAwNzggcHV0CitkdXAgOSAvQzAwODAgcHV0CitkdXAgMTAgL0MwMDgzIHB1dAorZHVwIDExIC9DMDA4NCBwdXQKK2R1cCAxMiAvQzAwOTcgcHV0CitkdXAgMTMgL0MwMDk4IHB1dAorZHVwIDE0IC9DMDA5OSBwdXQKK2R1cCAxNSAvQzAxMDEgcHV0CitkdXAgMTYgL0MwMTAyIHB1dAorZHVwIDE3IC9DMDEwMyBwdXQKK2R1cCAxOCAvQzAxMDQgcHV0CitkdXAgMTkgL0MwMTA1IHB1dAorZHVwIDIwIC9DMDEwOCBwdXQKK2R1cCAyMSAvQzAxMDkgcHV0CitkdXAgMjIgL0MwMTEwIHB1dAorZHVwIDIzIC9DMDExMSBwdXQKK2R1cCAyNCAvQzAxMTIgcHV0CitkdXAgMjUgL0MwMTE0IHB1dAorZHVwIDI2IC9DMDExNSBwdXQKK2R1cCAyNyAvQzAxMTYgcHV0CitkdXAgMjggL0MwMTE3IHB1dAorZHVwIDI5IC9DMDExOSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwOSA3OTggNjk0XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0Mjc0REY1Q0EyMjM1QjUwNTQ1MkVGODJDMTkzNzhBNzg2RTBCCiszMDI4OEIwNTQ5MkVFNEJCNjEyM0MwNEMKKzNGQjMxRTNEQTUxNTFERUNBNAorMjM4MDMyRkEKK0QyRkE3RkIxODI0RDVCNjVCNzJCMzNFN0Q5CiswMjNCM0I4QzQ1QTlEODBCMkZCNjVGOUJFRUEzQ0Y3NDM1Qjc0RjJBQTI2MUVFN0E4QjhFNkNBRjRGMTZBMworNzdEMkIwM0QKKzY3REI2OEExMDM1NTlCOEUzNDdGRjYyNDNFCis5QjM4ODE0RkVFQkVGNjVCRDVEMEI0QzkxMTk3NTU1MTE3ODBFNjJBNkI3Q0UyRTRGNTI5CisxNjRGNDY0NgorOTI0OTYxMzA1QjlGNUI4MTdCRTc2Njg1MjgKK0RCMjE2MTk1RENCQTA3RjFGQTBGNEI3NjREQzlBNzM0QzgzQUQwQTUwRkFFQTlFMDAyRTQ0MTU5RkEwODY4MTYxMTRFNTBENkM0RjZFM0EyMzk0M0RFMTQ5MjIyNTdFQ0Q2NDE0MEQyRDQ1QzkwREVFNzE0QTI2OAorNzU1NDVGODMKK0JCMzdBRjk4RkFDRDhEMDM3QTQ1NkQxODkyNDUKK0Y3NUFCQjhCNzA3QUQ1RTFGRUNCNEEzQTg5RkJGQkMyQkM5MTA5MDk2MzlDM0E5RTY3MDBGMjNDRTMwQzg3MkI0MUFFMTE2NjZBN0IxMTE0NjYzMTRDQzUxODk5NDU1MkJGOUM1MkE5RjM4N0Q3RkRGQUUzODE2NzlBNkQ0NkREQTE0NzYzOUE1QTBFNDkyMzkzMzhBNDVCOTIxMkZBMUZGNkNCRkM3REI5RTM1MjcyNUQ0NzY4MDk5OTAwRUEzMUE1REI4Q0ZCMzk0QzlCRUU3QjdERURCRjE0QTQzOEEwNURCMEEwCis1OUQ5M0JDOAorNUI0NTRDM0Y5MDlFNEUyOTI1MDU2NDc1NTEKKzlFMjA1MDQ3OTI0OTJDMjc2RDkwMTQxNjJBNTBGQkZDQUY3RjlGRTVGNTRGQkVGRjhBMENENjhGQzA0QTE4QzYzNzMxRUEzMDBFMEM0QUE2QjcyRjUzODA3Mjg2QkFEQ0UyNTU1ODJDRkRFQQorQkEwQjExQjcKK0EyRTA4NTMwRUI0MUM1NkFFQzU0M0I3MzIwCitERTJGNDlEOEVBODQzNUIyQzE4Q0M3M0E0OEY5MDBFNTAyQ0VGQjc2RTlFRjgzNEIzRjU3MEQxNDYyNTg4RTk4Mzg5NjdCMjA2MTJCRjAwMjJDQUQ3OUMyMjE3REJFNzM2QUM1QjIyRjFGQTg3QTc5OThFMjZCRUJENzdFMUM5ODI5RTY5NTIwMzQ2RTgwNTcxRTMwMDIxREQ2NDMwQzk2RjdGNUU1MTI1QzhEQ0QKKzMyQkI5QTEyCitFMTQ2MTQ2NkU4NTUxMUU1NTI4Q0NBODc3RgorMjY0RjlDRDAwNDNCRjFFMDJDNEJGNkVBNTUwQjhGNTQ3RERGOTQ2NDEyNUY1REU4REE1NzU5MzQ4RjYwRDRDMUM5QUQ5MjQ2NTdFMjc1MTVGMUMyMzY1REQwQ0VFMUNCMDQwMjNGMURERTEwNkRCQjBDN0VDQjQ0MjRCODI5REFENThENzFGQ0QzRkU3NkUzNTRBNjQwNzRDOUZBNjE1MjNCMTVCMkU0NEJFNjRBQTk0RDY4NEQwREU1MjBFRQorN0FGQ0IwODQKK0UyRjFBMkY3MERBOEZGNTVEMDNBODAxMjYzREIKKzdEQzdFQkNENzAzMDRFN0I5NkNDNUU3MEI5QkE2MjY2Nzg3QUExQUU5OTJGMTRENjVEMDM1N0NGNENEQThENzExMDJCMzVBRDM1RjQwOEIxREQ4ODhEQkI3QjkyNzA4OTMwNkZCODY4OUJGMDZCMzBBOTJFOUI2QzFDQzE1REM1OTM1QkMxQzBGNzI2Q0E2ODE2RjEyRTE3RUQyMUZGMTdGNjc4RTIzNkRBODVGQUVCQTEyMTUyNDc5NkRENDIwRUQwQkY1MEQwCisyODMxMzk4OQorMEMzMzU3RDZDMzZBQ0ExNERCRjQ3QzExOTI5NworNkI0Nzk3QUJGNkJGQzBDNjJENjc0RTAxNDE4RkI1Q0NDQ0M1MENBNEZENkI0QUE5Qjg2NTg5Nzc2NDUxQTVGQUZEMDRBOTA1REY3RUNDQUM5NEZBQUY0QjgzOUNBMDQyOUIzREREQkI0RTQxNTlBOTRDN0REODMyMTEyQ0Q2QzNGNzVCOTA5NzY0Q0Q0QUIyNzhDMjJEQzc4Mjg1NDFDQ0RBMDU5MzVGNUIzMTc5NzdFMUYwQzc3RkFDMDlENjE2RDAyODkyN0IyRkMwOEMwQUYwRjZENjJGOEU1NTAyODFERTc0NEIxNkM0N0RGQzI5RThGOUNBMDMyRkI4CitCQkJCCitGQzBDRTM4MAorRDU1RURDRTQ0MEZCOTkzMzQ5MkI1MTYxOUIKKzEwMDE2NTI3MTlDRTM2M0FEMEQzRjI5QkI4MUI0MUVFM0M0OUExMjIzNTY2MzJBM0EzQUJCQUY2RjAxNENDNjAyOTc5RENERDZGNjY3MUE2QUEwQzM0OEUxOEE0REE4OTJGRDQyOURCRjFFOTUzN0M0RTNBREFDNEM0ODQ5MENGN0Y2QkVGQzU2RTk4MjAwQ0FBCitGODRDRkIzQworMzI2REYxMTI4RDc5OEUyNUJFOUNFQzdFNTA0MQorODkzMTVERTA0QkFEQUMwRDQzREM2M0YwRUQ5OERDOTQzRTFBOTA0MDdCMDk2RDgyQUE4NDg0QkQ4NDM0NTExMTVDQUI2MDFCNDEyODg5MkU2MEE0OTA5NENFNTBEMEYyNDEyNkRFQTI2QjBDMzhFQzRCRTFDQzQ0N0RBOEEwRjg0MDM2M0I2Mjg3RjUzNTFGOERCNURGRTI5MDAyMEZGNEExQzRBQzNEODVCRjFGNUNCNTUzODJDN0Y4NDBBNkJEQkE2NTYyQ0E4NTlEQUU1MzI2RjA2NkJGMjc4NDY0RjUyNTY4QzgzQTRDNDNFNEZGNTVGNzNDQTdBRjcyCis3NUU0CiswNDE0OTkwQworNkZFNzRDQzMKKzg2QjgzQzFCNTk4ODEyNUJENkU5Qzg4MjFECis5NDVEQUVENzY3RDBGNUIyNUQ4OTJBQTMxRERBOTk3QkYyOUQ0MzI3NTQwRERENTAwRDcyOTIyREJBNzYyMDBEQzRFNUZEODMyNkU4MjU3RjcxREQxRUFDM0Y2MjJFOTM0Nzk1RkM3NDY2RUJBNjQ2RUE2Qzk5QzY2MEE3MDM5NjUxN0QwMDE4RjFENjBDNkM2MUNCNTNBMjhGMzRCMkEwRDY2NEJBRjNERjE5OTVFMkRCREMxMkRERkY0NAorQ0Q5QTg4RTQKKzQ2QjE5QUZDNUE3QjkxMzIyOTgzNjk3NDI1CitFNzVDRDYwMUZGNUY2RjEyRkQ2Q0Y5RDkwM0RGQkZDRTk4REZENkQ4OUYyQUM0QkYwODdBMjQwOTU4OERGRjc0Mzk2Q0Y1MzM5ODNGQUFDMDRFQzA3QjA4RjI0QTMxNkUxMDc3QjMzQ0ExRUQxQzc1MjM3NzVEQUM0OThDMDA0NEJBODY0NDk1QzcyMUZFMEM3QjU4NUM0NEZGNTEyQjk4QkE1OAorQUUxNTY4RDAKK0NGRjZFQTlBMjExMTM0MUI4RTAxRTc2QjgwCitFM0I4OUEwMTZDNzU5M0IxNTQ3QzE2OTg5Q0NFRTc0OUEzQkMzMDBEOEMzRTRFNzAxNzE4OUVDMDlERkVCOTYzRkNGOTU5MTVGNDhENzNGNzc4NEY1MEE1NUM1MDQ1RUY4QkQ0NThFMUIzQjExQ0Y3RTM5ODdFNjcwNTIxRThEQUYxOUE1NDYxQzIyMDU0QUI5MTMzRjAxMzU5MDY2OTdBQTNERDVENURGQzYzQkZDREMxQTFENkRGCis5RDlEQ0Y1NgorMUQzODMzNDMwMTk3MjA3N0VGNURGREIxREEKK0U0MjhERUExQkU1QzM0RTQxQjY2RDMyNkI3RDE5MEJFQUIyRDc2RURGODMwNTcyMEFDQkMyNDMyQjE4M0NBMzgxODNBRTU4Njk4QkUxODE4NjdEQUYzNEYxRUVBNkZGODRFOUZBOURFMTIwRTg1QzMxM0VEMzcwRjc5ODM0MzQ2QkM5RjlCMEVEODIyM0ZCRjE0MEI1RjRCNzBENzFCMzMyQzI2QkI0MjhGMDhFOEFENTdCNzdEMjk3QQorMUQyOEU3RkMKKzM5MjEyODUyRDcyQTAzNkU5MjNGMTlCNzBBMUUKKzM2RDhFMzlDNzNGNkE5NEVCQTk4MDM5RjY1RUM5MTJFMTVENDc2OTgyQTk5RTAxRjdDQTFCRjE3ODYxRjlDQUYxMkI5NTVBODdFQzcxQzY5QzlFQzE4QjdDRTk1RDVBNzE0RDk5QzQwRTg1Qzk4MkZGOEExMzQ2N0JFMjcxQzk4RjA4QjM5NzAwMzk0RkRBNzFGRTY0MzI3RjA0MzI2NDI2MDc1QkY1RUE0NEEwMzlGMDEyQUQxNEEzMUNEQUU2REVEQzRBMEUwNUY1Mzk2NEEzMkYwNzgxMTRGMDM3MTFBRjg3QkFDMzE0NTVBQTQzRTI1NDAzRkQ5RkMwRQorQTQ4NgorOENERkZGOTgxQjhFQUE4OTNDNTlEMkU0NkM4MzM2MjZBOUMyMUNFRUExRDUyNjY0MTUyNjFEMzVGRjcwMDM5QzRDNEEwQkZBNTcKKzA3MEUzMTk0CitCQUJFNDI4MkRBRkFFRENGMDQ0RkFFNjBENkZDCiswNUEwRjcxQ0IyMDEyMDc0RjEzN0Q3OUE1QTQwMzIyNDM2MkZCNDA1QjE1M0YzMkEzQjEwOTE4MTkxNDEwRDRFOUQxM0NDRDg2QTczRUVDN0UzNzY1REQ1RkUwOTdEQzdEMkM4Qjg0RDgyQ0Q5Njk4OUM0RjI3RjQ2QzQyMTE2MDI2MUFCRjYyOUY1MkYxRDY1QzZCOUE0Njk1MUI0MThEQzI2Q0QyQURBNzMxODA0RUNCNzAzMUVENDg5Mjc1RDIyMkMwQTlGRjdCQzAwMjFCCitDNjI2M0NDMgorMjNCMDg2MDA3MDEyOEIyNzkyMzEwN0RBMjMKKzJGRTFGQjkyOTBBNTZDOEUzM0YwRTRGMzVBRTk5MjhEOTREQjE2OEJBNzhDQUUxNDkxM0ZDNTczNDA4OTIwNzlFNjY0Mjk2MDEwQkE5N0U2NThFRUY3NzhEQkMzM0NBMkNDQTE3MTlBMzc0MzNERTY3RDg1NDM5ODdBRTgwM0I4MzcyRkYzQ0U5Rjk0QjhCQjQwMEVGRkIzQTQ2MQorREMxMUIwQzAKKzFDMzkwNzc0MUQ2REM0MDBFNzZBOUI5NzdGCis4MUE3RUMyMTUwMTI3OTI1QkNDREJGOUFFQTRDNkM0MTkzREEwRkJFOEYxNURDODI5Q0U3NTZDQzJBOTRGRThCM0FBMURGNTc5RDI5NTU1Njc3NURCNEI1QTM2MTRBNTk3MTM4QjEyQQorQzE3MDNDNkMKKzE5NjA1Mjc0NzFBNTczQUY5MDFFNThBMjQyQ0QKKzEwNzE5RDFDOEEwODE5OURGNUYzREFCMUQ5MEY4MUY5M0U2OTVBQzBCMjc0RkE5QTMwNkUyNEIwQUY4RDdEQjE0RjkxRjA4NjhFNDNEOUY5NzIyMUMzODQ3MkRDMUI5RUY0QzgwM0IyMzI1Q0JEOTk4N0FBMzM5RkIzRjUwRTkzOTI2MTI1OTM1QjYxQTZBQjZCOTJEOUFDOTM3RDg2RTA0RTM1RkZGMTNCQjA1OEVCRjI5MUVBQjEzNjQ0MTM2MzAwMjJFMUQwOEI3MDJDQTBDQzBGQjg1NTJERDhGNjc0NkRERkM3REQwMjI4MDFFNzk3M0E0NDIzMjE4MQorMEI1MAorRDUxMEZFNDYxQkU2QzEzMjg1M0Y0RTBDNTU2QjJCMkExQTAxNTJDREYwNkYxNUMyMjEzNjNCMEIKKzdFRkQ4NENDCitCMzMwNkI0RTY4RTdCOTQxRUREMUNBQUI1MTRECitEQzY2QzY5NkMwMDNFQzQ1ODk1M0EyRkU0NzI0RUEwMDNDNjFGRDhCNDM4NEVDRDQ3ODk1MTU4OTIwQjZBODBCMjZGQ0Y5QjhCREREQTM5OUMwMjFENkM1MjM2MzYyRDQyNkI2OUZGNjNBODVENDRBOUU4NkMyOThFNzBENkM1Qzg5NkIzNkM5OUUxMkNCNzlDODQ4RUJCRTJFOTIyRENFNEM5QjY5MzhCMjk5N0U4N0JFQjlENDc2OEVGMzBFNDI0OUY5RkIwNDVCRjE4OAorRTk1NjBGMkIKKzM5ODdFNTAxMUFDOEM0Mjc1OEZGMDE4Qjk3Cis5MDIxMDk5M0Y4QTM2RUFCNjU5RDY0MUJCQUU1MkY3MDhBNjFEMTIwRDg3N0IwNjYyNkZGM0M4RDk1ODZBMzE1MkVDODYwRjFFQzFGNzQxNTkzMDA4NURFRkQ0RTU5N0ZFRTY3MUJFMUFFNEZFQUZDMDc1RENDMzkxNDI2MkJEOUYwRDYxRDdDNzI5RAorRkFDMDlFQkIKKzM4ODdFNDI1QzA4MkZDMkJBMzg3RDY5RUVBNEIKKzY2MDNFMDg4RDAzMURBN0NDNzJCQ0VENkM5NzJFRUYzREExNjgyRTBFQjJGNTY3NjJGMzI4NUNENjRBRTAzRUY3OUFCMjNENzVFMDcwNTI5QzA2MTQ1MjlBRkI1Q0M4M0NCOUYyMjVGMjEyNkZEQkQ4QkRCQjk0OEFCN0FBOTJCODRFMzBBRjM3MjA4MEIwRjhEMEE2RDQ2MENBNUYwMkZCNEEyODY0QTIzMjE4RTY0NzI3NTM4MzJDMDYxNzFGNzYxQ0Q4NkFCRUU4N0E3NjhGMUZCNDI4N0E5NTZBMjMyMzUKKzFDREY3NEMzCisyMjMyRUI2QzM0MTc1NEJDMDlGNzRFNDc0RgorQjkxNzE4NEFFRDJEQzRGMzcyNDdGNEQ2ODg1MDU2OEIzQ0FBOEM2MDIxMUI1MEQ0OTZEQjJDNTM4QUI1REU4RThBQUM4QkQ2M0RCRTEzMzA1QTg3RjBENkIzOUQ3NDUwNDcwNEVBMjFCRUYwN0MwMkVCQTVDRDcwRTkxREM2RENBODk1RjcxRjQyRDQ2NDBCMDVDQjlCREQ4QzIwMTNBMkY5NDQ0M0FBRDBEQkYwRDBBMgorMjQyMDMyQzcKK0NBOTFDNUIzRUU5MEI0QjlDRjRDOEZDMkI4NzEKKzlBOTIyNjFBNDRBODBDMzRCRDc2Q0MyODkwQTMyQTA4NkFGOERCQjc4NjJDNDM2OTJENERFRTc3QTI5Q0YyMzU4NjFFQzdENzZGMTNBRkY2OTM0RUZFQzE4QTZCQjJFOUQzOTU1MDQwODQzRUM2QjRFRjMyN0VBMEE5QUIzNjIwRUNDRkJERkQ5MTNENkVDRkFEQjVEMTE2RDhDQjg3RDY2MjY5QjU0Njg2QzdERTlGOUM5QjNGQzVGMzc5QkE3OUVGNEZGQTY4REE2MEFBQjZDN0EwNUY0MTNBOEUxMDk2M0MyODg5MkI4NjIxMThEMzI0Cis0NzRCMUZCRAorODZFMURGN0E4Njc0RjEwMEYxRjRGOEE1RTUKKzNERjZFNDQ3MDgzRjVEQ0I4NTU3MUQxNjZFN0M3RkYwODFGQUMwMjhDNjA2RjE0OEEwRkVFMkQ3N0NBNzdDNTBDNzI1QjI0RUM4QjA2MDEzQjBGRDE0RDRGMjlCRjI5NDk1MEU1ODc2MzFEMTE3ODA2NEE3ODVCOTk4MEVGRkJDNEM5NjZCMjcKK0M2NUNGOTUxCis4RjYzNTgwQjZCNDQzMDE1RTU5MzkzNjg4QgorMUREQjdGMUYzNDgxRjNENUU0QUIwNTc2MjM4OUU0ODkyMTNGODQxRjBGNENGOTRFNzI5OTM0OTdCMzFENjQ1NTE4RjYyOUUyNTAyOTE5QzI1NTM4QUIzOTY1RDJEMzA4OUVBMjBGMjAwODM5QzBGM0VENjlCRTBGREZBMTVDNkIyM0YzQjYwQjY3RDQwMjE4MkQwNkI0NzAwMUEyRjU4ODEyMkI0QTAyQ0Y1NzU2NDZCRDYzQjAKKzBCNjBBQkVCCis4RTM3Q0M4QjJBOTNBQkMzQTY5QjUyNzUwNkNBCiswQzlBODg2NDMxMTY3QThENDc4MkU1QzVCRDg1NzQ3RDU5NTVDMkE1NjE4RTJBQUQ0OTUyOTkwOTlFOEI4QkY3RDI4Qjk5MDg0RDc4RkJBNkVEQzI0RDU3OTA4NjA2NTFEODU5NzBDNkMzMjE0RTEzRjNDQjhGMTg0NkY4MjQ0MEYzODE4NTA4RkZBRTMwNDEzOUVDODJCOTkyNTQ4MUFBMkY3QkZBQkJFQkVEQTA5NjBDQUZFNjg0OTMyMUFFNjgyRjkzNjBENzFCRTA1MUE4MDgwMDZFQjNEODY1RkI1MDg4Q0FDRkQ4QTQ4QTlERTQ1NzlGQzhBNTQ3QzMKK0M4Q0IKK0E5QTlCNzg4OTc0REYzNjI0OEQ3MzEKK0ZDNEU2MEU1CitENjkwOUExMjRBRDA2QkY3NTc5QjI4OTRDQkRBCiszMkZGMkI3MDMyQkZCM0E3CitGOERGNEI1NgorNkZFODEyMjdGRDY3RTY3NzIwOUZCMjUyODlCREQwM0E3NjBDRkMzQzkyNENCRjgwQzAzQzFDOUIyRkM1M0RCNjVBRjEKK0U4NDNDM0I3RkRCMjhENzFBNDUzQ0E1RDIwNTUzMjBGMjdEODRBMTc4MDczQ0FEQzEyRDQwNTZGQkI3NDA1QjZDOUM4N0ZBRjk2REUKK0M4M0NFMjY4QTZFQzVGMDBGREIxODhFMUJFRkI1MTA3RjIzNkE1MkMxQUVFNTlBQkM5QjQ3OQorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFsxMDYgNDUgNzc1IDcxM10gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI2OEYxNjE5NTQ4OTY0ODk5M0I5QzREM0I1MzRGQTg4N0MKK0RFRjYwNUZBODdCOTkxRjREMjBBOEY3OERBQ0UKKzVBNTRDMDcwRTAzRDVDNTlEOUQyRDNFMDZCMDlDRUUwMjhENjhCNjJBQjNBRUM0M0MxREQyMEJBNzBEMjg4NTk3RDlCRDhFMDY4MThGRjc2NEVCQUI0MzY3MjM5ODhFOEQ3Q0E1OUUxNkQzOTAzMjUxNkJGQzVENTUyQUNERUVDNkJFOTM4QkVGMkY0M0NGRkJDODExQzM2MjZDNERGNUY4Q0YwODA2NzY1MjBCNTFDNjBDRURBRDFGRTZDOTJEMTQzMUM3MDIxNzRDRTUxN0E4RkE5Mzc3RDA3NUEwQjY4MzNEQUIxMDFEQjY1Mzk3RjE0MTlFRjVGMDAxNgorMDA0RgorNkYwODI0Rjk2NTdCQjRGMUM4Rjk4MTcwOTk1Njg2NUY2ODU1RUZBRQorOTI0MkFENTUKKzkxQkJCRUUxNjNEODQ0RERBODk0RTEzMTkwQzkKKzI0ODA0MzlFNEM3MUNBREEKK0JEMDQzQTlCCitBMzE1Q0FGNzI2NTJBQTdGRTZEQjJFODREODJBNjExMUNFNERFOTBDMDJEQTBBRkZFMjYyMDkyMjI2MkE0NUFCNEVEMAorRUVDOUY0NTIwREQxMjcwMzQ0MkY3RDAyOEQ0NTI2QkQ4Qjc3MUUwOUZCRTExQjI3NDlFMkQzOTA2ODk0RThENEJGRDNGMzc5RjE0QworM0M4NzRGNTUwNjA2OTY1RTIyRkU0ODdCMjQ3QjVDMkQwNjcyODQ5MEM4RjJBM0I1ODhDREZDCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMmIgMTIuMDAgL1BTT3dzdGR1dGNoYiBuZXdGb250IGRlZgorL3dzdDpkdXRjaDE0YiAxNC4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTAgMTAuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTQgMTQuMDAgL1BTT3dzdGR1dGNoIG5ld0ZvbnQgZGVmCislJUluY2x1ZGVSZXNvdXJjZTogZm9udCBIZWx2ZXRpY2EKKy93c3Q6aGVsdnBzMTAgMTAuMDAgL0hlbHZldGljYSAvd3N0OmhlbHZwcyBJTEVuY29kaW5nIDAgZGVjbGFyZU5Gb250IGRlZgorL3N5bTpjbGFzMTAgMTAuMDAgL1BTT3N5bWNsYXMgbmV3Rm9udCBkZWYKKyUlRW5kUGFnZVNldHVwCitHUworMCAxMzk3OCAxMDgwMSAxMzk3OCAxMDgwMSAwIDAgMCBjbHAKK3dzdDpkdXRjaDE0IFNGCiswLjAwIDAuMDAgMC4wMCAxLjAwIHNldGNteWtjb2xvcgorPDBlMTgyNTIyMTgyMzE5MDcwMTA4MDEwOTE4MjAxNjFiMWYxNDIzMWQwMTE5MjEyMzAxMGQxODE0MjQyNjIzMWMyMDFhMDEwZTE4MjUyODIxMjMxZDAxMGY+IDIyMDcgNTU4IDAgNzM4NCAtMSBzCis8MTgyMzE5MjEyMzFmMTQyMDE2MTg+IDczNzUgNTU4IDAgODU5MyAtMSBzCit3c3Q6ZHV0Y2gxMCBTRgorPDA2MDY+IDkzNDYgMTMzODUgMCA5NTIyIC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDRlNjU3NDcwNjU3MjY2M2E+IDEzMjIgMTMyNjcgMCAxOTQ5IC0xIHMKKzwyMDUyNjU3NjY5NzM2OTZmNmUyMDMyMmUzMTNiMjA0MzZmNzA3OTcyNjk2NzY4NzQyMD4gMTk0OSAxMzI2NyA0IDM4NjggMzIgcworc3ltOmNsYXMxMCBTRgorPDAxPiAzODY4IDEzMjY3IDAgNDAxOSAtMSBzCit3c3Q6aGVsdnBzMTAgU0YKKzwyMDMxMzkzOTMzYjEzMTM5MzkzNTIwNDg2NTc3NmM2NTc0NzRiMTUwNjE2MzZiNjE3MjY0MjA0MzZmNmQ3MDYxNmU3OT4gNDAxOSAxMzI2NyAzIDcxMzMgMzIgcword3N0OmR1dGNoMTRiIFNGCis8MGEwZjBlMWIxMzE3MTY+IDEyNzEgMTQ1OCAwIDIwNTUgLTEgcworPDAwMDQwNTAyMDAwYjEyMGYwMDA4MGYxYjE4MGYxOTEwMDAwNzBjMWIwYzBkMGMxYTBmPiAyMDU1IDE0NTggNCA0ODI0IDAgcword3N0OmR1dGNoMTIgU0YKKzwwODIwPiAxMjcxIDIwODYgMCAxNTUwIC0xIHMKKzwwMDIxMjAxZTFjMjAxODAwMTcxNDI1MTQxNTE0MjQxODAwMjExOTAwMjAxODI1MjIxODIzMTkwMDIzMTgyNDI2MWUyNTI0MDAxYzI0MDAxNDI3MTQxYzFlMTQxNTFlMTgwMDI1MjEwMDE0MjAyOTIxMjAxODAwMjgxYzI1MWI+IDE1NTAgMjA4NiAxMCA3MjAzIDAgcworPDAwMTQwMDE5MjEyMzFmMjQwNDE2MTQyMjE0MTUxZTE4MDAxMzEzMTM+IDcyMDMgMjA4NiAzIDk1MzEgMCBzCis8MTUyMzIxMjgyNDE4MjM+IDEyNzEgMjMzMCAwIDE5OTEgLTEgcworPDAwMTQyMDE3MDAxNDE2MTYxODI0MjQwMDI1MjEwMDI1MWIxODAwMGIyMDI1MTgyMzIwMTgyNTA1MDAxMTFiMTgwMDEyMTAwYzAwMjUyMTAwMTkyMTFlMWUyMTI4MDAxYzI0MDc+IDE5OTEgMjMzMCAxMCA2NDYyIDAgcword3N0OmR1dGNoMTJiIFNGCis8MTIxYjFiMTgwNjAzMDMxZDFkMWQ+IDEzOTggMjY3NyAwIDIzNjIgLTEgcworPDAyMGUxYzE4MDIxMjE4MDIwZTE3MTUwMzE2MGYxYjE4MGYxOTEwMDMwODBmMWIxODBmMTkxMDA5PiAyMzQ1IDI2NzcgMCA1MDM5IC0xIHMKKzwwYzExMGYwMjEyMWIxNTE0PiA1MDMxIDI2NzcgMCA1ODIxIC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MGE+IDEyNzEgMzAyNCAwIDE0MDIgLTEgcworPDIzMjExZj4gMTM5NCAzMDI0IDAgMTc2NSAtMSBzCis8MDAyNTFiMTgyMzE4MDAyOTIxMjYwMDE2MTQyMDAwMjQxODE0MjMxNjFiMDAyMTIzMDAxNTIzMjEyODI0MTgwMDI1MWIxODAwMTcxNDI1MTQxNTE0MjQxODAzPiAxNzY1IDMwMjQgOCA1ODAxIDAgcworPDAwMjEyMzAwMTUxODI1MjUxODIzMDAyNDI1MWMxZTFlMDMwMDI0MjYxNTFmMWMyNTAwMjAyNjFmMTUxODIzMjQwMjAwMTExYjE4MjMxODAwMTQyMzE4PiA1ODAxIDMwMjQgNyA5NTMxIDAgcworPDE0MTcxNzFjMjUxYzIxMjAxNDFlPiAxMjcxIDMyNjggMCAyMTg4IC0xIHMKKzwwMDFlMWMyMDFkMjQwMDI4MWIxYzE2MWIwMDI4MWMxZTFlMDAxNDFlMWUyMTI4MDAyOTIxMjYwMDI1MjEwMDE3MjEyODIwMWUyMTE0MTcwMDE2MjEyMjFjMTgyNDAwMjExOTAwMjUxYjE4MDAxNTE4MjAxNjFiMWYxNDIzMWQwMDIxMjMwMDE5MWMyMDE3MDAyMTI1MWIxODIzPiAyMTg4IDMyNjggMTQgOTUzMSAwIHMKKzwyNDIxMjYyMzE2MTgyND4gMTI3MSAzNTEzIDAgMTk0NCAtMSBzCis8MDAyMTE5MDAyMDE4MjUyODIxMjMxZDAwMjIxODIzMTkyMTIzMWYxNDIwMTYxODAwMWMyMDE5MjEyMzFmMTQyNTFjMjEyMDA1PiAxOTQ0IDM1MTMgNCA1Mzc2IDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDM0KSAzNAorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDQ0IHB1dAorZHVwIDMgL0MwMDQ1IHB1dAorZHVwIDQgL0MwMDQ2IHB1dAorZHVwIDUgL0MwMDQ5IHB1dAorZHVwIDYgL0MwMDUwIHB1dAorZHVwIDcgL0MwMDUxIHB1dAorZHVwIDggL0MwMDUyIHB1dAorZHVwIDkgL0MwMDU4IHB1dAorZHVwIDEwIC9DMDA2NSBwdXQKK2R1cCAxMSAvQzAwNjYgcHV0CitkdXAgMTIgL0MwMDY4IHB1dAorZHVwIDEzIC9DMDA3MCBwdXQKK2R1cCAxNCAvQzAwNzIgcHV0CitkdXAgMTUgL0MwMDczIHB1dAorZHVwIDE2IC9DMDA3NiBwdXQKK2R1cCAxNyAvQzAwNzcgcHV0CitkdXAgMTggL0MwMDc4IHB1dAorZHVwIDE5IC9DMDA4MCBwdXQKK2R1cCAyMCAvQzAwODMgcHV0CitkdXAgMjEgL0MwMDg0IHB1dAorZHVwIDIyIC9DMDA4NSBwdXQKK2R1cCAyMyAvQzAwOTcgcHV0CitkdXAgMjQgL0MwMDk4IHB1dAorZHVwIDI1IC9DMDA5OSBwdXQKK2R1cCAyNiAvQzAxMDAgcHV0CitkdXAgMjcgL0MwMTAxIHB1dAorZHVwIDI4IC9DMDEwMiBwdXQKK2R1cCAyOSAvQzAxMDMgcHV0CitkdXAgMzAgL0MwMTA0IHB1dAorZHVwIDMxIC9DMDEwNSBwdXQKK2R1cCAzMiAvQzAxMDcgcHV0CitkdXAgMzMgL0MwMTA4IHB1dAorZHVwIDM0IC9DMDEwOSBwdXQKK2R1cCAzNSAvQzAxMTAgcHV0CitkdXAgMzYgL0MwMTExIHB1dAorZHVwIDM3IC9DMDExMiBwdXQKK2R1cCAzOCAvQzAxMTQgcHV0CitkdXAgMzkgL0MwMTE1IHB1dAorZHVwIDQwIC9DMDExNiBwdXQKK2R1cCA0MSAvQzAxMTcgcHV0CitkdXAgNDIgL0MwMTE4IHB1dAorZHVwIDQzIC9DMDExOSBwdXQKK2R1cCA0NCAvQzAxMjAgcHV0CitkdXAgNDUgL0MwMTIxIHB1dAorZHVwIDQ2IC9DMDI2MiBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMjUgLTIzOCA5MjAgNzIyXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjBFRjFERjRCODM2NjNERTAxMDM0QUEzOUU5OEY4NjI2MTlCCis2OENEMTNGMTQ0NTFBOTZCQTQ3MjgzMEYKK0RCRUY0OTRCRTRDQjVFODAzRgorREI0NkZFOEIKK0NFMzFDOENGRDY5QzA2QjQ4ODc1RDg2RDlGCis3QzFFOTg2QzkwNEE4QzQxNjU1OEE2MTg4NkM1NDdGNUZFOTkyMzE3OEM1Q0JDQkYzMDdENkQ0NzVGRjE0QjEzQTA4NUVCQjc3OTY0M0Y4RTFDRkQyOTlGRjNEOUIxREVDRTVBMjlEMjc5NENBMjg1QUUKKzAzM0FDOUY3Cis0MkE3MTk0N0Q5MUVFNzRDMEZBNTYwQTFDMgorOTAwRDkzQzcyNDg5NTlGNzBDQzBBOEM4NjU2RTI4QkZGOEVERjc3NDk4RTZGNworMjdGMkY5OUMKKzMxOENGNDYxQTM3NTE2NjJEMzIzRkI1NTdDCitCQzUxRUQwMEU3M0JCRDQwQ0I1RTBENzI4QTJDODBCRjAwMDdGM0UzNjI5QzE0MzdBNjU5Rjg1MUY2REJGRQorMTgyRjhFQTUKKzM4ODVFMkJFRTg3RDQwQjk5NjgyRjY1MzBDCis1MDE1OTVGRTNGRUIyN0QxNjY0QTYwMzc4OUI1MTlGRjAwMTczNDY3Mjc2Nzk5RjZDOEYxQkFBRjA0MjEyNkY0NEI3NzczRjQyQURFQkJDNzBFOTk2Q0RDMzNFQzA2NjlEMEZERDE2Njk3RTBDQUE3QjQ0NjQwQzYxMzVBRDMKKzdEMTU1RjQ5CitCRDREOUJERUU5MDUwRkExQkI1RTAyRDdEQworNDYxM0M4N0ExODA1Mjk1NjI2REFGNkYzRkU4MTQyQjE1MERCRDlCNDc0OEVDMEI3Q0E2MEM2Qzg5OEFEMjMxRkU1QzlCNzQ4M0JGNTEzMTQ4MEU5ODcwQTZFQUFGNTRGODMyMDExNUIwQkQ3Q0Y1MzI1QkQ5QjZDMjBEQ0YyNjU3Mzg2QTBDNDFCQzUzQjYwMjM3MkU1NzRGMzg1OUMyRDhGMzJBQzI1NjhEMDNBOTc3OTc0CitCNzc4NUY4NQorNjI2MURDRTFFMjM4MjkzMEMxQkEwNjJFRDEwMgorN0M3RDkwMkE4MDc2REZEMTk5OUJCMkVFN0M2NTIxQzNEODQ3MjhFQjlDRjRCNUUyNERFNjc3RjUxMTEwRjgyQ0JFRTlDNDZFRUM3MUJGMUQ5RUY1RTVGMENERDQxRTA2RTcyRDBCRDk4NUFCMDREMTlBQUEzOTdGNjBEMUI2NEUzNDE4RjI1MkRCMDhBM0I1MkQwREM0RDdDMTgxMzMzOEI3Qjg4NzUyRTQ5QzU1NkI5OTEyQzJBM0RCQTBDOEVFNTI5QUU1QkE1MTMwNkFFOTE5ODJERTg5MTAxRDAyCisxNzQ1RDRGOQorNDUyRDIwQTZDMDhGRkM0MkY1REM5NTA4MjIKKzAwNDQ2NDM0QUFGRjBDQzdBNzEzNUZCRjAyNkRCMDU1NERBODhGOTM2NkZGMjZFREQwNEJGRjlENjIyQTREQTQyNUEyRTBDQTgzNjQ3N0NCRjEwNEI4QjQ2QjEyQURGOTQyQjE2NjMwRUM0QjlFMjhFNjYwCitENTI0OTVCMgorQkU0OUMwNTlBNEM1MzlBN0RBNkQ3N0Q2MTIKKzRENzVCODRDNDU2NjEzRDQxMEI2QjQ5REFCMjE5QjY2MkFCOUNDMkE1NDVDQzVCQzJBNzkwMERENkE4RDlGQzdGQjg2OEVEOUY2NTYzNkEyQzEwMThFNUVENTczQjM0NzUwODZDOUQxM0IxMQorMkNENkQ3MUMKKzA0QzMwOTQ4NTVGNzc0MkU3N0U5RDhFNkVCNUUKK0E3MUY3MjA4MDA1QzY4REVENjQxQUQ0RUNCQUY3Q0E3Q0RDN0QyQTI2MDYxOTFCNkQ2NjdFN0Q0RDRCQkU2RjMwMzBGMjgxRUVEOEREOEQwNkFERDVGM0MzQUI4NUFFOEU3M0UwQ0E5MDRDRkM1QUQ3MkYwNkQzMkQ1RkZENzlBQTc2MjVGRDc3NjMxNUI4MUI3NTdEMEQ2MDg3QkY2QkQwRTc1QTNBNDM0NUY3RTBFNUE1NUIzQkEyRkQ5NTVGMzQ5RDRFMTU1RkM1QTVEN0Y0MjlGMzY4RTRCNDRGRjExN0YxRDQwCis2NTQ5RTAyNworRjhBRjQwRTQ3OTg3ODQwODZDRkQzNkI0OEQ0OQorRTg5RjBGOEJBNDVGQzcyODAzMTE5Mjk1Mjg0QkUwQjJDQzJFMTcyNzdGM0UyRkZGOEQyQ0QxQTM2N0Q5Nzc1MTU1MTY4RTQzNUUyMDJFRDhGRDZCN0QwM0E4QjRDMkJEMTRGMjczMTRBRDcyQTdDQjZGRUQ4OEQwQjhFMUY0NjVBOTJENkFCMUM2MTFFOUQ4MTc3NjNBRDI2MUM3QUE5QTFGRTFDNUNFMjQ1MjRBMjY5QTU3ODkzRDBBRjE2RDBDMzMwMzY4QzVBODdGRUZEMjlDQUE0QUIzRjNDRkM5NUY5REIxODdCNjYwQTk4RjA4QzE0N0I3NEFEREI4CisxMjZFCis2QgorRDc1MzRCRUIKKzc3ODA3RTIyMjE2M0M2NTExRDk5MkU1MTY0Cis1M0VDNUY3QjhBMTFFOUVDQjI5NzY3NEJCREMzOTE3NkIxQzI0NzJGNjI2RkJBM0FDMkQ2RUQyOUIwRDRBODRGQjgyNzdFNDZGMzQzNkE0NjA5N0YyM0NGOUMwMTlGMDZDRkM5ODM5RDNEMkMyNTE1MzEyQkE5MjYyQ0EyNjE0RjI2RkU1MjlGNzY5NTlDNEIxMkVFQzRCQUI4OUU0NjkxMEIyQkFBQTJGQkM2NjM4RTYwQUVFREEzNTJGNDc2MEJBMzExMzMKKzJBRDA2Q0E0Cis0MjhEM0UzMkJFMkYwMjBFNDkxQjM1QkE3RTFCCis2QjNERUREMTlBMDM4QUU2RkRFQjIwNUVBMDk0MEYyRkU4RURCRTQ3MzM3RUIxRDM0RDU5N0ZERjgyMUVCNTdCNjVGOUNCN0FBRUMyM0VCNDMzOEUyRURGQ0QzMzNFNENCQURBRDBCRkVGRUZDQ0I0NjAxRjlDNDI1RUQ4OERGOUNGQjA4MTNFOEIxQ0VEQTBERjRBQTY3MTM0RkIwN0I3NzlBREUxRTM3MzQ1RkRFNDVDMDBDMzUxRTg1QjAyNTgxQTdEOEFDRUZERDI2RTY5REQKKzZGMDc5NzMzCiszMzIzRjk5QTVFMDI1OTg4QkY4MkQ2Mjg1NjQ2CitBRkIwRDE2MzFGMjk5ODIyMkZCRDBERkUzNTU0OTJEOTE5QUVDQUQxNzhBQjdFRTRGNjk4QjdDODhGQUM0Q0U3ODFEMUQzMDI5NEIwOTk5RTE5Q0VFQTBBNkIzMkQzOEMzQTFBNUQ2MTA4QTU5MTMwRUI5MjFEQzM3MzI1RjVDNTg0RTk0RDIwRjQ0OENDMDQxQUYwMzdDOTNGMkVEM0FBMjE1QTU0NEYyMUQ5NTQ2NjUwMjVFRjEzQTI1MjYwNzFCMTgxMDUzNEFFNDFGRjk3M0QwOENBRjFEMEJGQjgwQTlFODIzQzk4NzZCMzNCRTlENThBNzhFOUQ1MkEKK0Q4OUQKK0REMTA5QkJCMDJFMjM4MTVDOTBFOEQKKzY3MEU2RjIxCitDMjk3NTBDN0JFNDBDOEMzQjAwQTZCRkY4RQorRjI5ODc3RkFCNDU0Rjk5NDA4Mjg2M0NCQTNDNUU2ODBFRTgwQTVCQUUxNTJEMjhFOUE2ODAyNEExQzExRTY4Q0I1MjdDMEU1RUU2NjU5MEU5OThFODkwNkVCRjU5OEQ5NEMxMkIzQUZEQjAyQjQ5ODREMDY2NworMDU0MDI3ODQKKzYzRTcwQjUzNUUyMzAxMUQ4QURCMDBGRUJCCitGRUYwNTE4MEM0RTNDN0M3N0NGMkY1NDQ3N0NGMURDNzUyRTU2NEFGN0QxMDVBNTk4MUExNDIxNUI5NDE5RTQ3RUJBOUQ5RTNCRTA2MzU3ODIxRjA5NTczQ0MwNDBFNTk3NkNEQUZDRTI2Mjk3OTVGQjc5Mzg4N0E0QTA1REZBMTIzRTRBNjMzQ0M1NEEzCisyQzI0OUY2RAorNUQwQTk1ODk4QzJFNjg5RUFCM0VBRTM3NzJDOAorMkFDMEVEODBFNTBERjY5NUEyRTY4RTFEMTA5MjgwQ0ExMkY2QjMyNjg4Qjc1QjFCMEY1Q0FCOUYyNkJDNTZERTFDOUE5MzJEQjUzRTNEQjM1MThCMThERTg5NzhGRTAxQjgwQjA1MjJDNzA4NjhCOEM3NEZENjhDMDJGN0NEMTFEMDY4NjQ3MEM2M0JGNkRGQUM5OUI4NkQ3NkU0MkNFRTA2RDE1QzE0MjE0QjhGMEFEMjAyNDJEMUVBRkJFQTU5NjA1OTc5MTI4Q0FCODUzODcxNkQ0RTA4NkFFOUY5Cis0RDNCODY5QQorM0JEMTJDMUY0MENFQ0IxOUU3RDNCMDFENUQKKzM1MDc0NUVENjFGNTUxQzNEM0ZDMDMxNTczQjAwNzNGMkI3NDJENTk2OTgwQkVGRDk4NkFERTUyRDZEMUVCQjc3RkU3RjQ1RDVDNDY5NkZBQjZDRUY1NEZERUE3OUQ3OTgzOEVCODk4NEFBN0I5OEY3RjYxM0NDMDk1QjI3MTEzNzcwREU0NjVFRDcwQThFQjk4NDc1QUQ3QUQ4Q0JEQ0M1MDFBQkUwN0U0Njk3RjI4MzkxOUY3RkUKKzM1MTNCQkU4CiswNDMyQTM0Nzg0QjhCMkE5MkY0OEU1NUVDQzVCCitBMkE3QTNDNTE0NjY3QTQ2NzAyMEZBNEQ4MEZDOTdCOEMzODM2QTM2NDdGOEY3MTg0RkYyMTdENDNERUZGOUI5N0M4RTNFRUM5QzA4NjI5ODU5NUQ2NTI1QzE5MjA3REM0MjJDRDVCNkEwOEE1REJBQzg0MEUxQkQ2OTdERTc4Mzg2MDEzMUI5OTg0MUE5OTYwQ0Q5ODEzNEIyRDYzQjQzRUI3NzM4RkM3QjU5QzM3NkFFNTY3Q0FGMDIwMkM1MkMyNUM5NzhFNEYxNEVDQ0QxOEJCRAorMUUyNEFGNUMKK0VEQTQ1OUQ0NEM5MDBCNkQ3Qzk1M0I1NTc4OTYKKzIyNDc3MTQ4N0NDNjM0QjA0MjdCRjEzOTFDMTI1QkJERTVFNzJDRDAzMjU3OTFEMkRCMzI1OEY4RTk1NzRGNDFDMEFGRjZBODk1NjZGQzM1QzhDNkUwMzk3OThFRDdGREFDNkUxRTE1MDJGNERFRURGQkQ5MEYyNkI3RDFEMjFCNjg2QkU4MDJFODU1RDQ2RkYyNzk2MzQ2RUU2RTgwOEU3RUQ3NDZGREE4MTNEOTEyQTI4MDY1MDQwQTBFQ0M4MEY3QTIzN0VGRjI4NzJBODRCMkUyMDk3QUVGQzRCRkU5MUUwNjY5QzQ5NEU2QTA5RDY5QUU5Njc0RTlBQgorRDU4NAorNkYxMDFFCitCQzk2NDQ2RgorRjRCN0E3Njc0RTYzQTc0ODQ0MjIyMTI2QjIKK0Y2OTVGMUE3NzIwRDNCNjM4M0E2MkI4NTMxRkFDRUM1MkY2RTcyQzU0OTIxREZGNDVDNDJDNDk2QTQ1NjIxNEU3RTQzNTQxOUVDQzFCOUNFQ0QyRDdGRUNBQTM0MTkyRkMyM0Y0QkU5RUNFREEzNzdEMzNDRTIxQjUzOEQwN0RERkMwMjc3RDFBNDI5QzMzODI2QzlCQTdBNjQwMzREMzI1MgorRjQxNUQxNjYKK0FGQzZEQkI5MzU2MzRBQTk1RkYxRkM3NDA3MjUKKzQxOEFEOENDNDAxNzBGMjkwMkYxNjhFRjNCMTcwMjZDODEzQjYzODBEQTRGQzBDQjU4RTBCQkMxMDUzMDIyQjIzMzkxMDQ0MDkxQUZENTFDNkQ5RkEwNjZBNkJENEZCQUI3NjY0NjNDOUZBMUQ4ODYxRjAxQjg1NkM2NjlGQ0YwQjAzOEExRDVDNTEyREZDM0FEMTQyRDM2MzZCN0ExREU5QUY0NEIwODhFMkMxMEQ4RjAzOTY1MTA2REQwQzE5Nzg1NzVBQjI5CitCMTA5QjcxMworREIxOTA4OUEwRjRCODA4QzlGOUYxQkE0MTQ2MworODhEMTUwNTZEMTdBNzVEODUxQzAyNzk0NzZGQzFCODcwQkY1RjEwMTI5MjI3QTNGQkVENjIxMUUzMDU4MEU2MzY3Q0M0RERDNkZEMTJCNzc1NEEzN0IyQjVBNTlGNDBEM0Y1MUQwRDlCNDUyMzM2MDgwRkZEMjVBQjAyNUY4QUJERkU0MjlERENCNTczREE1NUU1RTU2QzFDRDFBRDZFMjZBNjQzRTQyQTlCNUVGMDU3Njk1OEU3OERBNzIzNDBDRUQ2MkNDQTJCMzgwM0ZFMTQ1N0I5QUM2QjY1MTkxREMwRjY5MUMzNEM3QjdDOEMwQ0JFNzVGNTBEMDk0Cis2RTlCCiszQkU1Q0MKK0FFODAwM0QyCitDNTA3RDNDMzlEMjM4REQyNjYwNUFEOUUwRQorMTk3MkVCRjI4QjA4Mzc0QkE5MEM0RTE0Q0MyRjRDMDNEMzA1QTRBMUFERjI3OTUyREY2QjdDMkQyQThDNDZFQjhFRTE0M0M4NkZENTkzM0MxNkQ3N0NCQ0JGQUFBOTkwMUJGRjkyMzJCM0Y5MUEyRUZFRjJBQ0EyOUYzQ0FDODhGOEM0MTQyQUVBQUVBOTJFNUVBQ0JGQUREMTkwQkJGRDM0NUE4REUwMTFDMTg5NTQKK0UzQzQ5MUJDCis5OEQ3MkJGNUVCRTlENkVBMjE0Q0UwMjk4MworMTE2RTE5QTFBRjQ1QjU1REZGOEY4QkY2RDVFNzg4QUJGRUU2M0RDOUE0ODBFOTEzOUI5NzFENTNDRTZDNTIwREVCRUJEQjI5Nzc1QTFCOTc1RTQwOTQ5OUE3RkE4NTc0NkJFN0IwQ0FBRTE2RTczOUQ4NEU1MUU5MjE2NkFFMkMxRTdDN0E0QkYzNjg5MkIzRjdFMkVDNEM3QTQxNjFFNEE5OUMKK0YzQkIzNDI4Cis3MjA3NTA0NzZGMDg4NzlFOEM2NTg0NDYzOEI5CitFQzUyMTRFQjMyNjk2NjIyOUVBRDE1MEFDNUY5OUU5MkU3QjUzNkZGQzFGQzkxQzExQzRERDA5QkI5RTI0QjE2ODAwOUNBOTNERTY5RTI2NURFMDY3QjZGNTkwQTBBOEQ0M0Q2OTc4ODU3OTNCMEYyQkE4MjQ3MjdEQUFBNUU4M0VEMTVEOUFGQzEwNTU3MDIzQjlGNTBENUE4OTA1NEFEN0MzMTQ4NjM3OEM0NDlCMEZFNTJDNkI3Q0UzNkUzNUE0QTlDOUZGODZGNkQyRURBRTg0MEIyRjRFMjNBCitDOTZDRUZCQworN0FBNkFGMTRFMUE3NzUxRTJDRDgyMUYxMjUKK0REOUI0Mzk2NDkyRDFBNDRFREM3RjlFOTE1NUQ4REY4RDA3QTZEQUZEQjYyOEI3MTBBOEQ1ODE1NEU5RTUyM0JCOEEyMjg4OUYxODQ2RDg1NjFFOTI3MUVFQUZBMzUyNkIzQjBDMzdCMDI1QzFFODkwMzc1QzExNDA1RTY0RjRFQ0I0NTU0MjZERTFCQjFFRTM3NTc4N0RBQ0Q0REE2MzE0RTBDRjI2QjFDRUE2REMyQjIKKzNCMDgxQTA4CitFRTE2REUyOTg1NEVDNTNBRDQxRDY4QjE1RgorMkI3NDkxNEI2RDczMzQwMEM3OUY4QTNGM0UzQUI3MjA3M0Q1MjY1NDg1QkI5QURDRTBEQzZFNEY0MDNDMDNDRDdGQzI0Q0FBMUQ1MzVDNjFDN0JGRjU3QzA2NjI0NTg4MUVENzMyQTI1Njk0NzYyMTQwRkFERDBENDc2QTlBMUY0Rjg1MjlCM0NDNUU0RjMyOUM5RjdFODIwMEYyNEQzNjJENjBBRUYzMjc1M0U2OEFDNEYzRDFFNworOEZFODgxQzcKK0Q1Q0I2MjcyOUY1OEQxRUE4MjYxNTA4QjFFMTkKK0VBRkE0QzY3RjE0MjVBN0UxREFGNkZBREEzMzRCOUNFOUFDMzA3MENFQzY2MDVDODcwMTdDQTFGMjY2OEVEOTE0MTI1ODIxNTQxMDQ4NEVGRTlGM0VEOUMyQ0E5NEQ5NEQ5QTBDMzQwQkVFMzk3MUI1MEQ4ODRDRjkwOTJFQzU1NkYxOEM1MDcyMUJFM0E0NTZGNkY0REI3NkY2OTI1MzM0QTM3Nzk4MEVFQkE2NDQ5RkQzNzkwRkY5MTQxMTJCRThCQ0I5M0M5ODZBQkEyNDdFNEM0QURBOTJFRTNDMDhGRkIwQ0Y0NDM2ODNBM0MzNjg3QUQ4MjNGMzk0OQorNUIyRgorMTJFMjc5OUQxQTJBQjM2RUE0MDVERkFEODdDQ0M5RjRDRTM1ODg4MTVBNTY2NEYxNTYyRUU2QzJDQThDRjdCNDcyMEU1RDBBREVDNzZENThDOUQzNTY5NjdFNTAyQgorMkNFN0RBQzIKKzVFQUY2MUNBRkU1NUJFMkIxNDk3RDRDQkJERjIKKzI3NkE0Rjc0NzU4NjAwNEYxNzE2RDcyMjBFQTQ0Q0U0MDhCNzg3RDhEMjlGNTI4REEwMzgzMUFGNzQzRjE3QTY4M0E0NjUyOTdENkE5NUYyQ0NFOUQ1NjJFMjM5NkIyOTc3NDI0QzdCNTVFNjEzQzc1MjJCRjZGOTA3N0VEMzA3M0Y4OTE1M0I1QUZDQzZBNTVDRkZGOUJBNDEyRDUyREZENDZDNkNDNjQ0RDg1QTNBRTlEMEIxOTcxOEZDQjJEOEY1QUYwNTQ3MTQzNzEzQ0Y2QkJENUFCMEIzCitFNkNEMUFCNworMTU2REY3MjQyNEE1OUE4Qjc2NjAxOUQxMzEKK0VEOEI5NEUyNTMzMDkwMUFCODk0ODgyREI3NTgyNDk1NzZFODU0OTRFRDY0OTc5MEE3MjZCRUNDQzEyQTc1QzYxNERBMEMzREZEMjU0QzZDMDcwNjgxMzhCQkM3NzQ3QjJCNkYzQUY2QzFCQTk2QTE1Qzg5RTZBOUJEMzRFNkI3NDdCNkFBNTcwMTcxMTAwRTFBMDY3RjRBMDRGOTM1MjQKKzlGQTJEQTM5CitFNzNCNUEwNTI4NjdDNjhDMjNBQTMzNjA1RkZGCis5OEM3RDAxMTQ4MDI2RUFCRUQyNzU3RkJCRkExRjk1NjdFOTI4NEY0QTkyOEM2RDI0Rjc3MUIzOENCOTVBMzUzMEU3QkI0QTZFRUMzNDgxQTNEQUI2NUFBOUE5RUVCNTdDQTA3MUI5Rjg1MDIwNTZFNTg0NzdCMzQzRDgxNkQyNjBERUE2ODI5Q0JERUNFQ0RCMTQzOUI1NkVDNUM1NDlFQUUwMEU1ODlFOThGMTE4ODRCMDU0NTNGMEQ0OTgyMDNFNjQwMkQ4MDQzQTI5MjQ4RThEQzU3MTg1RjBEMUIzMjM3OTYyREVGNDcwMTc2NjMwQjVGRUE1ODAyNjUKK0I0MDYKKzVEQjVGNzIwQTM5QzQ4NjhCREQyNENFNDA4MUZENzM3NDFEQTQyRDk2NDc5NkE4REQzMzkyRTExNDAxNEU4MkZDQTM4RDgKKzY5N0E0M0I1CitFRTc0QTFCMDYzODhGNThCMEQwMDkxQjNBQQorQjA3MTBEQzA5OTcwNkQ5Q0I3NzAxQjE3MUM0N0NCNERDODM5MjU4MUMyQjZCNzQ4RUQxQTc2OUUwQjU4RUVDNzE5RTg0MTY3MkVERTk4N0JDRUFBOTdEMUU3QjNFQjMzNzlENDc0RUIyMTQwCitBNzk3NTQ1OQorRkFFMkUxOEU3MUZGQjU2ODFCNjc3RUZGMDU3NgorNkU5NjQwQUQyQjUyMEVEODU1RUVGMjExQTQ0M0JFQkVGNjY0RUY2NTJCQ0YzRjE3OUU2REMyNjY4OUU3OTIxMEIwQ0FENDA1M0JCNUJGRUYwNDBFMkE1M0U4QkNBOUIwM0IyMkY4RUQ1QUZBOTk1RTBGQTI5MDdDNUIxMjAyMkY4MzM1NkFGRTE1MDUyOEU0MjkyNzExQTkwQTBFN0RBOTBGMUZDNUJCMDkyRUQwNTgzMjA0MTZFMDVBOUI4OTRDMjVEODY0ODBGQjhGMjI3Q0Q2NzVDOTQ5N0E1M0M5RjVDMEFGQjcwRjgyNTBCN0NERUE3MjEwQjQ2Qjc1Cis1RUM4CitGOTU1MkU2ODlFMDFDNzkyMENGQTREMjI4RjczOTkzQkMyMjk5MjYzMjQwMjUxNDU0RjU2MjM0QjE5MzI3RAorRUZBRTJBRDgKKzkzNTcwQkQzOURGNENBQzUwRDg4NUVFNURBNTIKKzM5NzdGQjE0M0U2QTdFMzZERjlFOTE3RDhBQ0Y0MUYzQjUzMDI3MDIzQjI3ODQ4MDA2MUQwNzlGMTU0RkZFRkJGRjcwRjQzMUE4QUFCODU0MTdDRjE3OEYwNkQ1Njg2MzA3MDlDOTc4NzhEQUZERThEQ0ZGQUUxN0EzQjk0MTNBODhEQjRFREUwNDM3MTVCNjk5NUREQkRDMzgwQzBFODNCMTczQUU1RTczREQ0NjY3Njg5Qzc0M0Y4QUNGQzI1NjdGM0NGMEYwNDE5OUMwNzRFQTIwQzU2QQorNDRCRTA1Q0IKK0Y4Mjg5MDc4ODlDQUNDMEZFMEE3QzkzMjBECis5MDc0MzhEQjgzNkJFQzJFNTBEMkZCMUMxNEYyRkY3OEFENDVERTI1OTZENzEzOTVFNjJBNUY2M0MyRDM3RDdFNEYzQkI3MTBBQTg4QkM4NDQ0Q0U2RDhGNDJEMEUzOEUzQzI5NTcwNEJBQ0I0QzQ3NEQ4NTBCNUZGNkRCRTY0NzRERUQ2MEM5N0RCMQorNjVFNjA0ODEKK0Q4RTIwOTFGRDM3RDY4NDEyNzZGRTQ2REU1MkMKK0MwMUEyMzJDQkEzRTRBRTE2MDdFODk0RkNGQjMxRERGMTQzRkVBQTkwMjE5ODY0NTI5MENFRDQyRENDODZGMEU3MEQ5RTQ5MTI3Mjc0NDQxMTMxQjFGNDkxQTQwRDZCQTgzQzEwOUQxODVGOUJGQjY2OEE5MzE2RTlGMEVCNzBCNDdCMUM0Q0IyMTg1NDY0OUIxRDFFNjJDOUI1OTE4MEEzNUU5Mjk5MDc4MzQzNkUwMEI2N0Q1ODg4MDE3QUJCOEU4NEU0MzRFOEUxNTdDMzNDQjcyN0FDMUQxNjBBOEUxMjlEN0Q2MENCOEJCNkQKKzg2NkMwNEJDCitBODIxRDJCRUI0Rjc3NjlCMzM1MDQzNUZGQworRjkyQTc3Nzk2QzQ4MURGNDE4NTU2MTdGQkQ5OTMzRkVERkQ0MUFCNkZFRDE1MERFMzM5NURCMzMxNzJEQ0Y2NTJBNkM5MDgyRUY3OTUzM0E0MzQxQ0IyNTI3QkM1MTlENDJCNzIxQkQxRjEzMTY0MTNENzhDNkE5RDlGMzQwM0MyMTE5NkQ4RTM2Q0M0QkE0NUIzNEVEODRDRUU2NURFNkNGMDIyQjhFOUJFNUM4CiszNDIxN0VDOQorMDlCMDhFNkRCMDcwMkI3M0ZBMTJDNTZEMTM2NQorREE4MTEyNUFCNDZEMTNFQkE2RUJDQzgxN0RENTg2NTJDNjQyQzRDOTA4MERCQTJEMzEyQkI0Nzc1NUI5NDUzMkJGMDZDOEFCNzNENzc4QUQwMDRFNDk0RTY5QUY0MkUxMjM2RTYzOEMyQkZDMkVFQkVFMEE4QjA4MzU2OTZGNjZCQTg0MkFCNTIzNjNFRDMxMTgxNEIxMkM3QzQ1RkFEOEVBNDM0Q0E0MEVGMDc1NTYwQkVDREVDMEVDNkRCRjc2MDk5Nzk0MTE3QTFGQ0E3RDNDOEMzNEU3MzdGNjAyMzdCNDBBQUJCNEI5RDJFNkY2MTk5MzNEQjkKKzUyRDJFQTA3Cis4QTVEOTY0MzNEMTA5MjVBRTBDN0ZFRUZBOAorNDFCMjI3NDVEQjBFNDQ2NTdBQTY1QzlBMkU1RDMzMjRCRENENUMzNDFFRUFGQzQyNTJFRTc3RkZDMjNFQTg4QUY4QkNDNDBFQjNBQjQ1N0RDRjA0NUI3ODJBMzdBNjFFQzYzNDMxRjA0QzQ0NkZFNkQ3NDJBN0MwMENDNzIzMDY4RjlDNzI3NjBECitGNjIyNTM2NAorOEMwMTNBM0U2ODZGRTkyQ0JEMDg1Njc2RUEKK0RCOTBGQ0Y2Njk0ODIyQ0I0NTY1MDJDQTE1MEEzNjFGRDU5OTdFREI4MjYwOTNEMEI5REY1NjczQ0QzQTY0MDZCNDY2NTg2RDY0RDBGNUIwMEZEQUMzQjQyNENENDRGRkZFQUJCRkI2NUI1OTZEQTJFQjVDQjJFMUZFODY3NDc3OTkyNkE2M0JFQkRDNEVCODQ0MzcyMzFFQThEQjc1NEQzOUUxNTQwNUYxQUI2MDc0RjM2MDg3NjQ1OUZDRkIyQ0RERTYKKzlCMzM1RkYyCiszNjY5NjU0M0M2MkQ0N0I0MkZGMEVBNDNCNgorM0VFQzUyRDM1MDZERTFDODc5RTVFNzRFMTM3OEI3NjAzN0VGQjQ2RjAyODRDMTlFNzYwMTlERDExRjE2OURERjdCNTNEQTcyMEVEQkRFRUMyOTkyM0RGOURGODVDMzNEQUUyRDY1NEE3RTk3NTY2NDQ5QjFFOEIxNTgzRTZDNkY4RkIxRTNCMTg4MTk1NURGMkJGNDU4M0JENjcxQkZFMkZGN0Q5MTA5OEI3RTlDNTcxMAorNjYwRTNEQzcKK0NEMTY5M0VFNkJDNkUzNTE1ODFBRURFRDZGMjQKK0NGQzFBQzcxMEI0ODhFM0Q0NDM5MzQ0MEE2RDU5MjQwOEZDNjk1M0I4QjJFMzQ2QkE2MDY5MDM2NDVCMjRDNDkwMjQzOTM4NzU4QTBFQkQ2NjI2RkU4RDZFQzFCRDE3MEJFQTE1QUJDNjNBMDEzQ0JDQkMxQ0U1QkU0RDE2OEY2OUUzMkExOTI1NDIyRjgyRjZBNjNBMzc3M0M5QjYwODY3MDc0NzFFODk1M0M3QzIyOEZFRTU2MjVDQUIyMUQ2Nzc2NzJCNEQ5NEZBNDVGNThGMjYxRkY5QzE5Njc5QTgxRjcyNjcxNEM4RjYwQjI2MkNEQUU3RUUxODgxQQorNUFCMAorQjY3Q0UyREYzRjAzNUVDREM5MDUwNDkxNEI5RgorQzlDMEM3NzEKK0VGMEM0NENFMEZDOEQwNzJCOTg0MzBDNDYxMUIKKzMzNzY3RDI5NzNFODgwQkYwNDZDMTQ1MkNFM0IzNTdERTY5NTgwMzhGMTdEREQ4M0QyRUY0NDE2MkQ2QkZBNzQ5NUQwOTFBNDMyRTIxMTQ3NjhFRTE3NENCQURCQzZENDI0RjIxMjZBQzJGNTBFRjM2QTY0ODBGNTE2OUJDMDVFMUU4QUZFREZBMTI0N0NBRjk5MDBFRkVEMjM0QkU1MzM4N0IzM0U0M0FCMzg1NkRBQkZEN0I1NkM2REQxRjU0NkE4NDAwNUNFNENBMEFDRkMyRDk1Q0YzN0Y0QUYxQzQ2QzcwRTk0OERFNjMzNjU3MzdDRTU5QUNBMEMxRQorNjA5RgorQkI1REM5NUE5RUNFQjE2NjJEQzMyNjhCNzI3QzkzMUFBNEE0N0Y3NTQyRjUwMEVCN0IKKzRGNDUwQkI1CitGMzc3QjE4MTcxMzQzQ0EyMDNDRkJEN0Q1RkMxCiszNTM0MTY4REE1N0I5OEZGNDEzN0NENzc1Rjc3NDdDRkUwRTA2QjI0RjRFODBCRTdBQ0IwRTE1N0QwNDZFNzFBMjQxMzg1NUU3MTQ3NjE5RTgxQzkyMEVDNzUwNzZFMTA3MzY4MDk1MTUyMDA1MUE5NDZEMzVGMDk0NjhCRUE4OUJERjcxODk0RkE4MjY1NERBOTQzMkQzMDFGOEJDMkNFNTNEOUFFQzRFNDhFMjY5OUI4NzA1QURDMzgxRDAzREQ0OEExNTdBOUExNDAwQjYwRTM3MjlGRjk2NjUwQUE3NDIyOTk5Qzc5QkVCOUE2NzYzN0YyODMxRDcxRDMKK0U4RUMKKzdCNTE2OTMzCitCRjI3MzBGQTNFMDQzMDQzNzNCQUZBOUNBMQorNDY4OTI5QTA3MjMyRTVDQjU0NjU1QjYyRjBFODcwQUExQUJDOTM5MDBCQTAKKzZCQUE5QkQzCitDN0Q3QjFDRTY0MUU2Q0I0QzEzMzY3NkExMjVDCitBRTQyRTkyRDQzNkQxNEE4CitBNkU3OEM5QgorNDlGNDA2MDhGOEJEQzZBQzEyRjdFQUQyMzM2MDUxRjUzREYzMEMxMzJDQTgwRjg0RjAzNDNDOEJCNDZFQUM1Q0E1RUYKK0MxNjZERkQ1MkVCRkUyQzBBNzBFRDEzNDIzRkVFNTQyMDk3OUJGRjQ0RTI4NDgzMjNGOTgzNzI0QkIxRjQyNTVFMUJEQjA4NUQxMkQKK0ZFREU3QTgwNkQxMEIxNTc0RjlDQUQ1MkI2RjUzQjlENkJGQUNFMkU3NEM1ODMxN0U4MzI2QQorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3dzdGR1dGNoYgorJSFGb250VHlwZTEtMS4wOiBQU093c3RkdXRjaGIKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2hiIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDAzMiBwdXQKK2R1cCAyIC9DMDA0NiBwdXQKK2R1cCAzIC9DMDA0OSBwdXQKK2R1cCA0IC9DMDA1MiBwdXQKK2R1cCA1IC9DMDA3MCBwdXQKK2R1cCA2IC9DMDA3OCBwdXQKK2R1cCA3IC9DMDA4MyBwdXQKK2R1cCA4IC9DMDA5OSBwdXQKK2R1cCA5IC9DMDEwMSBwdXQKK2R1cCAxMCAvQzAxMDIgcHV0CitkdXAgMTEgL0MwMTA1IHB1dAorZHVwIDEyIC9DMDExMCBwdXQKK2R1cCAxMyAvQzAxMTEgcHV0CitkdXAgMTQgL0MwMTEyIHB1dAorZHVwIDE1IC9DMDExNCBwdXQKK2R1cCAxNiAvQzAxMTUgcHV0CitkdXAgMTcgL0MwMTE2IHB1dAorZHVwIDE4IC9DMDExNyBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFswIC0yMDcgNzE0IDY5NF0gcmVhZG9ubHkgZGVmCitjdXJyZW50ZGljdCBlbmQKK2N1cnJlbnRmaWxlIGVleGVjCitEOUQ2NkY2MzNCODQ2QTk4OUI5OTc0QjAxNzlGQzZDQzQ0NUJDN0M4QTk1OUEzOUEzMkU5RENFN0ZBRUYxN0VFM0JFQzlGCis1MEUxQTZGQ0E2NTFGQzRCMzc2OUEwQTkxMDQxNTU3NTAyRTI1QTVENjE4MEZFMjVBM0QxMUJGMDc5RTFERjY2RTU0RUU5QjdDMjI5QUY4OTE3Mzk3MDdBMkEwRUMxNDAzMDZCNUU0M0U1MkI3OUJGQjg5RTQ1OUU1MAorNkVDNkY2MTBBNzA3NzVBMzFDNDYwOTc2QzRGNzk0NDlEODZFNTdBQ0U0OTFFNUM2QkYyMENDNDMwN0IxREFGNzYzMDI1MgorRTlBRjhDRkI2OUI1MEVEQUU5RDM2QTYxMDRBRkVGODgzMkY5MjBGRDIzNDZCMkM3MTA0Q0QxMUUzQkVFOTk5Q0ZBOUY1QQorNDlEQjMxNzNFRTQ4RDFDODI5OTQyMzdGMzYwNDA3QjAyMkUwQjQKKzUwMkU5NEVBOEI0OTM2NTFFRjJEMDNGMEI1MTNENjU1MDQ3NTY4MzI1QjUxMkFFNgorNkFDNkY1M0YzODQ4Q0Y3MERFMjU0ODFDQzY1RDhCMUE1NzkzQUEKKzNDNDI4MkQxMTExMTJCRUUyOEFGQ0E3QTM4MDhENDQ0NEM0NjY5Q0EKKzg0RUFBQUY5ODkyMTlGNTFBQjM0NzZBMUIwQjVGMjI0NkJDMzA2RTYKKzYyNUM2Njc5QzQxN0VEMkE4RTlCRDAxMERFMzdENDAyNjUwNzRDMjY4NDI1RDlBNDMyN0RBMzlDQjJERkQ3NDg4REMzMEE4M0JENjUzNgorNTQwMDE1MURBQzEwNDI2NkJFNEVCQ0FFCis0QjA4MzIxMDE2RTI4QUI0QzgKK0Q1NjRERDM3CiszNTUwNUQ4NDExNDY5NzZFREZCNEJENzI5QQorMkY0OURDQ0Q2QjRFQ0UxREFDMzJFQTU2Nzk2MTNCNzg5NEVFNjFDNzIwNTBCNkRDQTA4MzM0MDAwQzRBMTYKKzY4MEEzNzgxCisyODMyRUYyOTkyQjA0MjA2ODcyQTA0OTY1QgorREM4OUEzMUMxNTlBRjc4NzZFRkRFOUM1NjZDMDM4QzY4RjM3MDBDNjc2Q0Y2QzBBMzU1QjczRTBEOTFGNkI5ODAwNzk3MTA3REY1N0MwMTAyRTI5QjMzMzNFOTlENkEzQUJFQTdENDQwNEVBM0MxRjM3MjQ2QThDCis3NkI4NkVBMworQUUzMUU1NTlCRjNFREU4RjZDREU3MzQ5N0EKKzNCNDgyMjlFNDFEMkExOUNCNDMxRkM3MDUwOTYyMUU0RjM1QzEzQTM0NjVENzBERkFEMDE5RjZENTEyQkRFNkVFMTRFMkFBOUQ3RUNFODM2Qzk2MEMwNUEyRjU4MEJEMkU1OEU5NTkwMjgxRDBDQkVGMTkzCiszQjhGNTQ0MAorNzM5RjY3RDA2ODUyMjE3QTZGRTYwQ0Q1NjJEQgorMzE2ODQzQTBGOEExNTBGNTYxMTdBNDlFRjEzMUFFODVGMzIwMTBDMTZCMjlGNEZFMkFBNUY0ODExRjI0RjIzM0VFNDVCNjU5NEI4RkFBMzkwOTY4MTk5M0E1RTM0QzNFMEQxMkZDMTIwNTNBRTRGQjhGNzM5RTlBNUY2OTc0RTUxMEY3MUYyMjQ2M0U0MDY5M0Q2NEMwNDdCNzAzQkJDOEE3QTQ4NkRGREQzOEM2NTZGMzk2QjhDREIwQ0M4RUQ5RUYzRERFRkEKK0NDQ0NFQzhGCis2Q0Q5OTZBQkNCNzc1OTQ5QUU3QjlCNkFGRAorNERCQjgwOTYyQ0FBMjFBQkJCOEUyNjMzOTBDNzhERjZFMzg4MEVBQ0NGMkZCNDA1M0NENzk0QzA3RTVBMTQzOUY0RjE4MjJBQjJBMEYzNTNERUM0MjMwMjdFN0M1NjY1ODk2QzQ5RjhCRjY5MDk3MEEyNTQxNTVFOTNBQUZDMkI2RTRBQTRCNzZDRTY1RjFFQzdGMzNCNEJDOTMyREQxNEJFMjVBQUYwMUE0NDVGQTRDQjExOEEyNUI1QTkwRgorNEJGQzQ2M0MKK0E2QzU1NEFERjBFNDhCNzlBNUI4RkJDREIzRjUKKzM2RjZFQkRDQUY3QjAyOTBGOTg1NjI3QkQzODkyOTdGRTA4QjU3MUUyNzgzMUVERDMxRUU3MDc5QUFEN0ZFMDU3QjkwOEZBRDg3NTAxRDUyN0JERDA3QUJCNEI4NTcwMkE4Q0UzNDU2RjEyNzQ1QkE3MUYyODdBNjA1Qzc0QzQyQzlGMzQ1N0Q3NTRGRkZCREQxRTMwOEM2QjY2NTlFMUIzODQ0NzhERUJEQjMxOUM5QzhEM0M4RDMzMUE3MjNGRDk5REU0N0QxMjdBODYzOERFODlFNjlCNTRCMjMxMzkxOTE3MTY4REZFNkZCRURGNTNDQ0RGQzhBNjdFRgorMEI0MgorQ0FEMzA2MUMKKzRBMUYxNzVDQzhBMDZFRjFFRUY4MjBEMkIxCitDOUIxNTk4QjBEQ0QwQ0MxQ0MwNjQ3NkU2ODc5NzFDREZBRkVFQ0M1Qzc2REQxQkQ4NUEwQkNGMjVFNERDNTY2MDAzMUJEOUFCNjg1OENEQTFERUUyQkNCRTY2QkY0NTVBNzRCMUY5NDc0REI2NUI0MTE1NTM1NjExNjM4QTAzOUI4MEJBRTQzODZGMzk3NTRDQzMzOUYwQjcxNTRCMDI3NjM5OAorRDE4MjVBQUEKKzA2NEE2M0I0NjQ0REQ0RUZBQzMxRjgxNDBCCitGMzA2QjZEQkVGRTE4NzFFNUU4Qzc5OUM4MkUxQzUxQ0Q2NUMxMTMwMzg2QzYyODNDMkY2QkRFODNDQzVBMTYxNDk2NjU0QjNFNjQ2QTQ3OTJBOTE3M0FFRjIzMjI3RUFDMzZGODE5RjRFQjgwOTFDNDg1OEUwNUNDRUIwMEJBQjQ3Rjk2MTg0NjdFODU5NDQ2REM5MEE0QkFBRDM2ODc3RTVFMzc1MTk5NkM5QjkxNTFCQzlFMzA5Cis0QUNEQUY1NworNUU1REE3OEI3OTczQzkzQjI0OTk0RDIxRDkKK0I0RUFFQUY4QjYzMzkzRkQ4NThBMjM4NTJDMDdERDU4QjZBREZCNUZGOUZEMjY1ODFGRENDQzk5RkM3RUI4NUZBNUI4Nzc0MDZDODlBMDREMkE4QTM0QzA3MTQwRDY4QTRDNTBFQjlFQUM2MDY0RjdGRTBBMkQ0Mjg3Q0YyQ0M2MzkyQ0YzMUQ2MDUyQTE3MjZCRjlGMTYzNDNDOUU1MEE3NURBMzIwNzI5MDg4OUE1NkEwMTNDNUJDRQorRTZFNjVEREYKK0ZGRjE3MkI1NEJGQjNERDk2OTRDM0ZCQzc1Cis1ODNBNzk0MzQwODRGQUEwRjg1NDEzRjY2RUIzMzc2RTBBOTZGRkQwOEJDRDYyQjA3MERFQTNGOEM4MEIxMjNBNzhERDg1OTRGQkJCRkVDOTUxODcxNEM4QkY2QzE4QUE0MkNCOUU4MkQ0REJBMTU1OTVFOTZFNkY2MzVDNUUwRkM3RDMxNDA4NTQ4MDdCQjJENDM0ODlBNkU1MTUKKzQ5MUE1Q0ZFCitCQzg3ODBFRTM0Q0JBNTQ4RjhBNTJCNUIxNTk4CitEMTk4QTFBOTE1M0NFODlCRTE5RUQ3Q0ExMzIyOEU0Njg5QTNEREQ5NjUwNzU2NzdDNDE1NTMxOEVDQ0U1OEY2RjUxMUIwRjU4RDg4NDE4RjYzOENFQ0VGMEIwQTMwMUFDNTRCRDVGRThCMEJDMjc2NTZEMDVCNDk4Njg4MEUyMkNFNDEwN0ExNDI2NUJFQkY0OEZFRTczMDBEMzU5QjMzNkE5MzI5OEY5NDE2QzZCNzFDQUM5ODE4NDk5OEVDMzE1MzBFNDc1RTQyRTYwMgorMkZBRTlFQ0YKKzVCRjQ2ODc5RTMwNDk0N0FEMjE3MUJBRjcyCis1Qjk4Mjc0Q0IxRjk3MkQxQUZBQUM2OTAyNDYzNjgxNUI3ODBDQzIxM0UwNzEwOEU3ODQ0RkE5NkM3NUY0MTgwRUU0QjhDRUE0NTA1NDhFNDZGRkFDQUFGNTMwMDBBRTlDQzJBQUJGODBBM0M1QjVDNTI0RkU1NzAzM0UzOUYzN0Y4NjQ0Mjg1NjI3OAorM0E2NzU5RkMKK0ExQTMxM0I2NEI0REFFMDEyMTk5OTZBRDQ5ODQKK0VBQUI1NTlGQTNGMUIxQ0I5NzU1QkFBQTU3Mjk4NTFEN0QxMUNBQzAzRDUzMDFCRTBEREExREI3RDMzREM5RTk2MDU3NjM3NUUzODE5MkIwMEI4RTdBRkZEREZBMjBFQkJCREM4QjU4RTJGQ0YzN0I5QTM4MEUyMzYzMUI3MEExOTc1RkI3ODI0N0VBQTA2ODc3Mjk2QkJBRTQ5NjRENEUyNjlFODc3OEREQkY4NkYyQTRGOEU3N0JBRjRGRjlBQkFCNDczREExMjdDRDVEOTM5MjI2RjhDRjVFMjcxMDMzN0IKKzdGRjRBM0U0CiswRDgzNDcyQzQ3QzFGNTFGNkVCRDAwMEMxRgorODM1OUExMUQxNTcyM0M0NEE1RkIyNTY3Nzg2MDYwMkUxMTBENkJBNjk0MDM4MTc1Q0QyQzkxRDRFQ0NGQkRBMjhFN0MzRTQxNzM2NkFFMTBFMDY2OEI5NUU1MjU3NEU4MUM2NDU4NkVCMkU1N0JEQzAyQjIxRTRFNkUzMERDQkRDOTk2OUFCNEYzNUM0Q0Q1NzFGODcxM0Q5QjdCOTU4MjlGMEI2OTYwN0U1MjI3MjcwQworMzFBMEY0QzEKKzFFMzgzNEJGNUYyMDQ1NjVEMDc5ODVENzEwRTAKK0MzNUY1QjUwNjc2QUVDMENBQkQ2NjYzODBDQTRDNjNBQjJBNDA3NDFDNzhDMzYyQzVFRTYxQkY1NTAyMzk2QTA3MDI3Mzg4RUMzNjE3NUY2QjhDRDdBQTA1NzRFNzJBRDVBRkEyOTNDMEJFQUJFQzk2QkRDRDQyQjM2MTVDQkI3NjhBMDdDNkRDQjE2MzlGMzRDQUNGNzFFQkY3NUQyQzcxRDgyMTM5QjAzMTIwQjI4MDhDMzkzQzNGMjI3Q0NCRDlBRDg0RUZCMkFDQ0E3QjNFQkQwNDQzMERGRDNBMkFDRkZCMTY3Qzk0M0Y0MjVDRUE0Cis4MTE0NTkwRAorMDMxNTBDODcyQjFCODQ4NkM3NzVBNDEzMEIKKzgxRTk3QzJBMzlENDk2NUM1OUVGMjRDMkVBNDkwMDFCQUY1QTZENDJGNEU0MjA3MUVFN0VFNkY1NjdGRjNBNDYxNDI3Qzk4MTlFMjBFNTVDN0I3OUU3QzA2MzM3RTVGRkI2M0Y4NDg2RThGOEE4NEU1MkMzRENBQUY2NTRDNkNGNEJGQ0FEMEYKKzI5NDMzRUQzCiszQTY5OTU4NTgzRTA0ODAwMUZDMkM4QzU4MgorRTEzRDM5NjNEQzE3OEZFRDZBQzk4MDA1QjlCNDJBODAxMDY0OEU1NDA1QTBBRDFERkJDMTMyNTVCMUQ1MzIwNTk3QUIyRTUwOENCMUY4OTdCRTZCMzNGOTU2QjgyQjA2MDQ0M0RBMDg4QTJEMTdEQUIzOEYxQTE3RjkzRjU3NURGNEVCQUEzMDIxQkZFM0FEODc3NzNFMzU2MjVEQjEyMTk3NTlBODdFMzJCMEExOTkzODZFRjUKKzRCNDVEQTNECitBQzZFM0YzOUREQzNFODZEQjQ5RjVCRTVFNDNECis5RTk3MzFBQTUwOUYzRUZGCitBQTFEQUY0NgorMDMxOTI3Qzg4MUMwRjIzQkQ5MkZCNUQyQUM4Mzg2RkEyRTIwOEM0MjQ1NjRDRDkwNTI3RjlGNjBFRTRCNkIzRUMzNzgKK0IxMEVDMkM1M0Y4NzlFRUVBRTc1OEJDQzdBODUwODIxQzVENjdFNTk3OEM1MzE2MUM3MERBNUExRkI3MTBFMTYwMkU1NjJCMEFCODQKK0E4OEI1NTg1RDQzMDc4MjJFNTE5NEQwRDc1REQ0Qjc4RDY4OUY2RkM5OEJBRTFENTU4QTlGMQorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorY2xlYXJ0b21hcmsKKyVEZWZpbmluZyBmb250IFBTT3N5bWNsYXMKKyUhRm9udFR5cGUxLTEuMDogUFNPc3ltY2xhcworMTAgZGljdCBiZWdpbgorL0ZvbnROYW1lIC9QU09zeW1jbGFzIGRlZgorL1BhaW50VHlwZSAwIGRlZgorL0ZvbnRUeXBlIDEgZGVmCisvRm9udE1hdHJpeCBbMC4wMDEwMDAgMCAwIDAuMDAxMDAwIDAgMF0gcmVhZG9ubHkgZGVmCisvRW5jb2RpbmcgMjU2IGFycmF5CiswIDEgMjU1IHsxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0fSBmb3IKK2R1cCAxIC9DMDA2OSBwdXQKK2R1cCAyIC9DMDA4MyBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFs1MCA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0Mjc1REQ4OUE4NzkwRUFEMThFRkM3N0QzRkZBRTg0REE1RAorMzEyMDc0QzRENTQyREQ1QkVDNzA5NjhGNzVEQworMjUwQzM5NTRFOERGQjhGNDg1N0JGRUYwOTJFQkE0OUQyNDg5NTVBODU4QzVBNUY1NUY3Qjk4N0VBMDZFQzg0MjhEOTM5MDg0Qzg4RjVCMTU3RDgwQUIyRDcwNkE3RUI5MzZDMzQyOTE3MzU4OEQyQUJBNkEyN0RDOTRDMEI0ODRGMzE2NjYzNTU1Nzk3MDA0Q0JGQTc5RTdCODU0NUM4MTBCRjlDQTkyRjYxQUJEOUUyMDJFRDlFOTU5NDNERjdBNUFCQkYzQzIwQkRFM0I2RUVDOUMwQjk1QTRDOUMxRDM4QUE3QzY3ODZBREJCQjc5RUUxODNCRERGMTk0CisxOTUzCis2NDQ5REJCN0FFNDdFOUZDNkYzQUJGMURDRDdBMUUyNzRFODdEQUU5CitBMjI3MzdGQQorNjQwNEIyMTVBMjdCRkFGNkQwQjUwRTk0RDIKKzA3MTIzQTVCQjM4MEM4NkRCNTAzM0VFNzQzMTgxQkJGQ0MwMzU2NTcxRjcyOTdBMjA3QzIzRjFFNTg4MjU3RkRFRjVERjIyOQorQ0FCRjNCM0MKKzlFMDk4OEM2M0IzNThBQ0E0QjRGRUIwMzNERkIKK0UyRTM4N0EwNkEyM0NBQ0EKKzhFMTA0QjkwCitERkRCRDQxRjA2M0U4QThERkEwQUJBNERENzQ0MzAxNTUyNkFFNTI1NTMxNTU5Nzc3OUUwNEQ4NTg0OTMwNUVBNEYzMQorNUNEQUQwNkU1ODQxRTFCODA3NDc2MEM5OTcwMkI4Q0Y0NDNENzUyMTc0RDk5NkM5NEU2OTA3OTdBOTU4N0NGNTAxN0RFQjExRTVGRQorMDI1NzZFOUUwOEIzOTY4OEJCRTk5QTE4NkFBOEZDN0UyMjJGNUU1MkIyOUE3RkRGMzc5RUY1CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworL0RQSXggMTI3MCBkZWYgL0RQSXkgMTI3MCBkZWYKKzcyIERQSXggZGl2IDcyIERQSXkgZGl2IG5lZyBzY2FsZQorMCAtMTM5NzAgdHJhbnNsYXRlCisxLjAwIDEuMDAgc2NhbGUKKy93c3Q6ZHV0Y2gxMiAxMi4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy9zeW06Y2xhczEyIDEyLjAwIC9QU09zeW1jbGFzIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTIxYjI4MjUxYjI2MWMwOTAxMGEwMTBiMWIyMzE5MWUyMjE3MjYyMDAxMWMyNDI2MDExMTFiMTcyNzI5MjYxZjIzMWQwMTEyMWIyODJiMjQyNjIwMDExMz4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwxYjI2MWMyNDI2MjIxNzIzMTkxYj4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MDcwOD4gOTM0NiAxMzMwMCAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI4MCAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjgwIDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyODAgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjgwIDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxNGIgU0YKKzwwNzA5MDgxMTBiMGQwYz4gMTI3MSAxNDU4IDAgMjA1NSAtMSBzCis8MDAwMzA0MDIwMDA2MDkxMTBlMDkwZjBhMDAwNT4gMjA1NSAxNDU4IDMgMzUxMCAwIHMKKzwxMjExMTIwZjA5MTA+IDM1MDYgMTQ1OCAwIDQxODkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwxNTFlMWI+IDEyNzEgMjA4NiAwIDE2MzEgLTEgcworPDAwMjMxYjI4MjUxYjI2MWMwMDE4MWIyMzE5MWUyMjE3MjYyMDAwMWYyNzAwMTgxYjE5MjQyMjFmMjMxZDAwMmExYjI2MmQwMDIxMTcyNjFkMWIwNDAwMGYyMzAwMWMxNzE5MjgwMjAwMWYyODAwMWYyNzAwMTcyMTIyMjQyNzI4MDAyMTE3MjYxZDFiMDAxYjIzMjQyOTFkMWUwMDI4MjQwMDE4MWI+IDE2MzEgMjA4NiAxNSA4ODkzIDAgcworPDAwMjkyMzI4MWIyMz4gODg5MyAyMDg2IDEgOTQ2MSAwIHMKKzwyZT4gOTQ2MSAyMDg2IDAgOTUzMSAtMSBzCis8MTcxODIxMWI+IDEyNzEgMjMzMCAwIDE2NTIgLTEgcworPDAwMDMwMDFmMjgwMDE5MWIyNjI4MTcxZjIzMjEyZDAwMTcyNTI1MWIxNzI2MjcwMDFhMTcyOTIzMjgxZjIzMWQwMDI4MjQwMDE3MjMyZDI0MjMxYjAwMmIxZjI3MWUxZjIzMWQwMDI4MjQwMDI1MjQyNjI4MDAxZjI4MDAyODI0MDAyMzFiMmI+IDE2NTIgMjMzMCAxMyA3NjI0IDAgcworPDAwMjUyMTE3MjgxYzI0MjYyMjI3MDQwMDE0MjQwMjAwMjkyMzIxMWIyNzI3PiA3NjI0IDIzMzAgMyA5NTMxIDAgcworPDI0MmExYjI2MmIxZTFiMjEyMjFmMjMxZD4gMTI3MSAyNTc1IDAgMjU0MiAtMSBzCis8MDAyNjFiMjcyNTI0MjMyNzFiMDAxZjI3MDAyNjFiMTkxYjFmMmExYjFhMDAxZjIzMDAyNzI5MjUyNTI0MjYyOD4gMjU0MiAyNTc1IDUgNTM2NSAwIHMKKzwwMDI0MWMwMDI4MWUxYjAwMWMyNDIxMjEyNDJiMWYyMzFkMDAyODFiMjcyODAwMjcyOTFmMjgxYjI3MDIwMDI2MWIyYTFmMjcxZjI0MjMwMDA2MDQwNTAwMmIxZjIxMjEwMDE4MWI+IDUzNjUgMjU3NSA5IDk1MzEgMCBzCis8MjgxZTFiPiAxMjcxIDI4MjAgMCAxNTYxIC0xIHMKKzwwMDIxMTcyNzI4MDAyNjFiMjExYjE3MjcxYjAwMjQxYzAwMjMxYjI4MjUxYjI2MWMwMDJiMWYyODFlMDAyODFlMWIwMDFjMjQyMTIxMjQyYjFmMjMxZDAwMjgxYjI3MjgyNzA5PiAxNTYxIDI4MjAgOCA1NzYzIDAgcworc3ltOmNsYXMxMiBTRgorPDAyPiAxMjcxIDMxNjcgMCAxMzU5IC0xIHMKK3dzdDpkdXRjaDEyIFNGCis8MTYyMzFmMmMwMDBjMjQyMjE3MWYyMzAwMTQyNDE5MjAxYjI4Mjc+IDE1ODkgMzE2NyAyIDM1NjcgMCBzCitzeW06Y2xhczEyIFNGCis8MDI+IDEyNzEgMzUxMyAwIDEzNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwZTEzMDAwZTFmMTMxMzBmMDAxMDEwMGE+IDE1ODkgMzUxMyAyIDMwMDEgMCBzCis8MGQ+IDEyNzEgMzg2MCAwIDE0MDIgLTEgcworPDI5MjYyODFlMWIyNjAyMDAyODFlMWIwMDFjMjQyMTIxMjQyYjFmMjMxZDAwMTcyNjFiMDAxNzIxMjcyNDAwMjIxZjIxMWEyMTJkMDAyOTIzMWExYjI2MDAxOTI0MjMyNzFmMWExYjI2MTcyODFmMjQyMzAwMWMyNDI2MDAyNjFiMjIyNDJhMTcyMTAwMWYyMzAwMjgxZTFiMDAxYzI5MjgyOTI2MWIwOT4gMTM5NCAzODYwIDEyIDg4MzQgMCBzCitzeW06Y2xhczEyIFNGCis8MDI+IDEyNzEgNDIwNiAwIDEzNTkgLTEgcword3N0OmR1dGNoMTIgU0YKKzwwZD4gMTU4OSA0MjA2IDAgMTcyMCAtMSBzCis8MjQyNjFiMDAwYT4gMTcxMiA0MjA2IDEgMjIzMCAwIHMKKzwxNTExMDAwYTEzMGY+IDIyMTAgNDIwNiAxIDI5NzUgMCBzCis8MGE+IDEyNzEgNDU1MyAwIDE0MzQgLTEgcworPDAwMWQyNDI0MWEwMDJiMTcyZDAwMjgyNDAwMjcxZTI0MmIwMDI0MmExYjI2MmIxZTFiMjEyMjFmMjMxZDAwMjcyOTI1MjUyNDI2MjgwMDFjMjQyNjAwMTcyMzJkMDAyNDFjMDAyODFlMWI+IDE0MzQgNDU1MyAxMCA2Mzg0IDAgcworPDAwMjgxYjI3MjgwMDI3MjkxZjI4MWIyNzAwMjExZjI3MjgxYjFhMDAxNzE4MjQyYTFiMDAyYjI0MjkyMTFhMDAxODFiMDAyODI0PiA2Mzg0IDQ1NTMgNyA5NTMxIDAgcworPDI3MjkxODIyMWYyOD4gMTI3MSA0Nzk4IDAgMTg4MiAtMSBzCis8MDAyNjFiMjcyOTIxMjgyNzAwMjkyNzFmMjMxZDAwMjgxZTI0MjcxYjAwMjcyOTFmMjgxYjI3MDAyODI0MDAyODFlMWIwMDIzMWIyODI1MWIyNjFjMDAyNjFiMjcyOTIxMjgyNzAwMWExNzI4MTcxODE3MjcxYjA0PiAxODgyIDQ3OTggOSA3MDAxIDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlUGFnZTogKDM1KSAzNQorJSVQYWdlUmVzb3VyY2VzOiAoYXRlbmQpCislJVBhZ2VQcm9jZXNzQ29sb3JzOiAoYXRlbmQpCislJVBhZ2VDdXN0b21Db2xvcnM6IChhdGVuZCkKKyUlQmVnaW5QYWdlU2V0dXAKK2JvcAorJURlZmluaW5nIGZvbnQgUFNPd3N0ZHV0Y2gKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2gKKzEwIGRpY3QgYmVnaW4KKy9Gb250TmFtZSAvUFNPd3N0ZHV0Y2ggZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDMyIHB1dAorZHVwIDIgL0MwMDM0IHB1dAorZHVwIDMgL0MwMDM2IHB1dAorZHVwIDQgL0MwMDQwIHB1dAorZHVwIDUgL0MwMDQxIHB1dAorZHVwIDYgL0MwMDQ0IHB1dAorZHVwIDcgL0MwMDQ1IHB1dAorZHVwIDggL0MwMDQ2IHB1dAorZHVwIDkgL0MwMDQ5IHB1dAorZHVwIDEwIC9DMDA1MCBwdXQKK2R1cCAxMSAvQzAwNTEgcHV0CitkdXAgMTIgL0MwMDUzIHB1dAorZHVwIDEzIC9DMDA1OCBwdXQKK2R1cCAxNCAvQzAwNTkgcHV0CitkdXAgMTUgL0MwMDY1IHB1dAorZHVwIDE2IC9DMDA2NiBwdXQKK2R1cCAxNyAvQzAwNjggcHV0CitkdXAgMTggL0MwMDY5IHB1dAorZHVwIDE5IC9DMDA3MCBwdXQKK2R1cCAyMCAvQzAwNzMgcHV0CitkdXAgMjEgL0MwMDc3IHB1dAorZHVwIDIyIC9DMDA3OCBwdXQKK2R1cCAyMyAvQzAwNzkgcHV0CitkdXAgMjQgL0MwMDgwIHB1dAorZHVwIDI1IC9DMDA4MyBwdXQKK2R1cCAyNiAvQzAwODQgcHV0CitkdXAgMjcgL0MwMDg1IHB1dAorZHVwIDI4IC9DMDA4OSBwdXQKK2R1cCAyOSAvQzAwOTcgcHV0CitkdXAgMzAgL0MwMDk4IHB1dAorZHVwIDMxIC9DMDA5OSBwdXQKK2R1cCAzMiAvQzAxMDAgcHV0CitkdXAgMzMgL0MwMTAxIHB1dAorZHVwIDM0IC9DMDEwMiBwdXQKK2R1cCAzNSAvQzAxMDMgcHV0CitkdXAgMzYgL0MwMTA0IHB1dAorZHVwIDM3IC9DMDEwNSBwdXQKK2R1cCAzOCAvQzAxMDcgcHV0CitkdXAgMzkgL0MwMTA4IHB1dAorZHVwIDQwIC9DMDEwOSBwdXQKK2R1cCA0MSAvQzAxMTAgcHV0CitkdXAgNDIgL0MwMTExIHB1dAorZHVwIDQzIC9DMDExMiBwdXQKK2R1cCA0NCAvQzAxMTMgcHV0CitkdXAgNDUgL0MwMTE0IHB1dAorZHVwIDQ2IC9DMDExNSBwdXQKK2R1cCA0NyAvQzAxMTYgcHV0CitkdXAgNDggL0MwMTE3IHB1dAorZHVwIDQ5IC9DMDExOCBwdXQKK2R1cCA1MCAvQzAxMTkgcHV0CitkdXAgNTEgL0MwMTIwIHB1dAorZHVwIDUyIC9DMDEyMSBwdXQKK2R1cCA1MyAvQzAxMjcgcHV0CitkdXAgNTQgL0MwMjYyIHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWy0yNSAtMjU2IDkyMCA3NjZdIHJlYWRvbmx5IGRlZgorY3VycmVudGRpY3QgZW5kCitjdXJyZW50ZmlsZSBlZXhlYworRDlENjZGNjMzQjg0NkE5ODlCOTk3NEIwMTc5RkM2Q0M0NDVCQzdDOEE5NTlBMzlBMzJFOURDRTdGQUVGMTdFRTNCRUM5RgorNTBFMUE2RkNBNjUxRkM0QjM3NjlBMEE5MTA0MTU1NzUwMkUyNUE1RDYxODBGRTI1QTNEMTFCRjA3OUUxREY2NkU1NEVFOUI3QzIyOUFGODkxNzM5NzA3QTJBMEVDMTQwMzA2QjVFNDNFNTJCNzlCRkI4OUU0NTlFNTAKKzZFQzZGNjEwQTcwNzc1QTMxQzQ2MDk3NkM0Rjc5NDQ5RDg2RTU3QUNFNDkxRTVDNkJGMjBDQzQzMDdCMURBRjc2MzAyNTIKK0U5QUY4Q0ZCNjlCNTBFREFFOUQzNkE2MTA0QUZFRjg4MzJGOTIwRkQyMzQ2QjJDNzEwNENEMTFFM0JFRTk5OUNGQTlGNUEKKzQ5REIzMTczRUU0OEQxQzgyOTk0MjM3RjM2MDQwN0IwMjJFMEI0Cis1MDJFOTRFQThCNDkzNjUxRUYyRDAzRjBCNTEzRDY1NTA0NzU2ODMyNUI1MTJBRTYKKzZBQzZGNTNGMzg0OENGNzBERTI1NDgxQ0M2NUQ4QjFBNTc5M0FBCiszQzQyODJEMTExMTEyQkVFMjhBRkNBN0EzODA4RDQ0NDRDNDY2OUNBCis4NEVBQUFGOTg5MjE5RjUxQUIzNDc2QTFCMEI1RjIyNDZCQzMwNkU2Cis2MjVDNjY3OUM0MTdFRDJBOEU5QkQwMTBERTM3RDQwMjY1MDc0QzI2ODQyMTkyRkE4REU4OTI2QzlBNUU3QjcwQ0QzMzg3REM5NjVFRDMKKzgwREU1NDk2RThDREFERDQ1OUM5ODg1RQorN0Y2QTBDQUQ0MUJGMEY4QUYxCis2MDc0RTUxQQorQUQ1M0YxNUI1QTA4RjY2RjNFQjcyOTc5NkFERgorQzdFOTU4RTQ4MzY4NEQxOTc4ODA5NUI2QkQ4RTUzQjkwOUE2OTE0RTFBNzVBMTY1MjMyNjY2RDRCNTFFQkVEQkM3OTM2MzBDNzVFRTMxMDEwMEYyREE2MjJBQ0IzNkMwN0JBRDlBNkE2N0FGNzk2QUQxMzc3QjU3QzZDMjVDNzYxOTEwMjcxRUE1MUIwRTRDNTUzM0E3Q0QwQUNFNEFGNjk5Qjk0MDc2OTY2MUE3QjI0NjkyQTIxN0MxNzM3NkFFMDFFOTMxM0I4OThDMTYKKzQxMDEzN0UzCisyNjlDNkI3QzhFRTc2Rjk1RjlBNkE5MzBFODM4Cis3MkQ4QkZBQ0FFQUQ3MjhBODE5QzY1OUYxNTk4MTlCODczQjZDNEM0NkU0ODlFQUE1NEE2NTBERENFQjE5MzUyOTY5NURFODAxOTM0QzAyQzM4MjNCOEFFQ0VCNzUxRjBBOTMzQ0ZEQzAyRDE0QkE1Q0RDQTlFNzAzNTQ0NUJFRjc0NzY2MjM1QkIzMjMyNTIxQ0MyQ0MwN0U3RjdEQkQ3MzhFMUI1ODZCNEM5MEY1MENDNkUwNDEyOUYyN0EzMUM4NTlEQzg5OEYwQzYwQTZFODRDNEQyOTQ2QTVCMjc1RjA1QzczNTFFRTJEMjk1QTE2QkQwNzg4QTQ3NDMKK0ZGMkIKK0ZEM0RCOUY4Qzg2NTZCQUIzRUNGMjM2QgorREY2QUJCMjkKKzY3Q0U5M0FFQUE4NTcxMTRCMkQ0Njc3QTZECisyQUVENzM0MEZFRDVBMTFFRUYxM0I4MEQ5MDg1RkNBQTlFODc2RDI3M0VGNjY2NUUwNzI3OTI0MDgzOEZBQTE3RjQ2QTcwNjNEOEExQUY1NTEyM0E3QkE0MUQ0Njk4RkI5RTc3QkIwRTNCMUEwMkNGRDIyQkYyMjMyNDg1MDhEMAorOEFDRjQ5QzAKKzE0NDk0QUI4MTNBMkZEMDZEMkM1NzE0NjIyCitFNzU5NTVGRjlCNjNDODlCQURDMEI5QzQzQjY0NjZBODEwMTQzRkQxQzhGNjE5ODM2MDM3NTUyNTgzMjlGNjc4M0VCMzAxN0JDQTNDREJERkZEMDJDN0JENTdGQjVFREUzQTM0Nzg4MDI2QzIwMjJEMkZGRDdCQzJBNTU3OTEKKzU5NzczOTEwCis4NTAxODlBQjNDQjMyN0M3Q0Y1REU3RTVBNgorN0Q0MjIwMTVCNEI0REM1NEM2Q0VGN0EzMzQyRDQ0Q0JCODFCRUVEQjIyNUVGRUU2MzY4NEU2OENFRTlFNzlENzBBNEI1MDY4M0IyQTA3ODUwRDAyQUYyMjZBODE1QjRGRkRBQUU1MEEyMUQ2QjZDNUUzCis0QkVDMjQ2NgorRUZFNTg0RDM0NUZGMDg1RjlBODlFM0JFRDYKKzI1QkI3Q0U0QzJDMDVGMDBGREUzQUZBRkMzNTM1OTI2NDA5OTBGODQ1MURCMDIKK0EzRUEyMkUxCis4NkYyMjIwOEE0QTlGN0Q0NDdDNjIyQjE2MAorOTQ1RjkzQkFBRkFGQ0Q4Q0I3RjEwNkMwNkY1QUExRkUzRjIwM0YyRTEzQzA5NzQ4MkMyN0QxN0MxNDFBMDgKK0Q0MjA1RTM5CitERURCQTQ3NDMwQUQ3NDNBMzBBODk0RjFFQgorQUVBQzE4Q0I5NUUxRDlCMEVCMUM2OTAyQ0VDQzdDRDg5QUE2MjM4RkQ4QUE5MDI0Q0VGN0Y4OTBBNEMzRkU4MTE4OTc5MEZCRTFBQTAxRkEyMjgwODFFOTE3MTRFNDczQTgyMTQ2NUM1RDgxRTk0RTREMDlBMEFFRERBMjI4CiszQzA4MTlFRAorMDcxNDNCMDY2QkM4ODYxRjlCRDdEQUZFN0EKK0EyQUFGOEIzQjA5RkUzQTkzMDFEOUEwOTI4MkJCQzYyNzgxQzcyRDRFNzNCQUUxQ0IzMDBGMkFCNTJGOUY1QjNEMDE2M0Y0MDM5QTUwRTFCNjkyRjAwOUU4RTQyN0QzRTY3MDA4QjNGMEEyRjdEMDc3RDA5NkE4NzcxODRFOUYxOTY0Q0MwQjgwMzM4RDFEMjc5Q0Q3N0JFMDJGRTUyRjkwMzA3REZEQjE1QjE5OTAxMTkwNgorMkY5QzczREEKK0QxOEQ3MTEyQkIwQjlGRjZGOTFDOEM4OEJEMUUKKzcyNzNFMUE0OENERDA0MkIyQjg3RTFGQzQ4MzEyNkFEQjZEMTFCODJDRjU5Nzg1RTFCOUE2Q0FFMUM4Rjc4QjM4NkExRjEwM0I5RTk5QjBGMTEzMDNBQkJBNDI0QzhBRTEzMjIwNkFGODYzN0M0NTZFQzM1QUM4REJEM0MxMTMxRDlEQ0Y4MjRBNEIxMjdCQTdCNDg3N0E1RkY1QjdBQTIwRDNCMzNBNTE4OUExMEFDQ0VFN0YyNTMzQ0QwRjZFMzE0ODRFNjM2RTFGMDlBMkFCRjlCQTlFMUE5MTVDMworNDQzMENDRjIKK0M4NzIwRDVCRUE1MkFEMzY4QUZCMDlEMkE4CitFOTREMEFEQjg3NDlBMkVCQzQ1NDFEQjg4RUIyNDFDQUEyOUJEN0YzQTU3Q0U1ODJFQzdEODQwRjg5QjYzMUEyRDY0RUE5OURCOTBCQjMwMjQ0QUMyREYyNUM5MDk2QzM2NkI5NDExODMyMjI4MDlBMjYzNjMwQTgxNjM5QzE5MzhBMURCMDY1OUM0RUY4QkE3M0UzODFEMTBGMjdEQjgyMjk1ODMwOUJEOTBBN0YxN0VCNzNDNTJGNkIwNzJERjMxRAorQTlFNjFBMkUKK0VEOTQ0QUY2MjRBQThDQ0ZDODI4NjkxNDhECitCQUMxRUE0ODRGNjQ4NjgyRDI0RDE4NzI5NERBNzM4NzYxOThDRENEQ0Y1MjBEMEJCREFCQjg4MjgzRUE5REFFNDgyQURGMTI2NTUxNTcyMEQzNTZBNzlFMTU0NUVBOUEyRjQyRDIwMUI5MDEKKzYyRTFCNUJCCiswRjQ1ODc5NzVBNUJCRTIxRjcyQUFDRjJEMworM0FCNUQ5RkVCM0RCQTUxREQwREYyMkM3MkU3QUVERjQyNDBEQUVCMUY2NjczMzQxODFDNDc5QUUzMzgzNEVEQkE3RDJGOEE0REFBNzY0Rjk5M0E3QTc1ODMxNDg5MDRGNDg0MjUyM0M5NDQ5MENCQTg4OTVCMkI0RjZGMDlEODQxOUEzOUI2RDA3RjM5Q0I5QTQzOTVDRkE5OUM5MTM3QQorQUMwMTkwRDcKKzZBMTkzMDJDQ0I0MDZCRjMyMDlENzU2MUI0M0YKKzM4NTlGMzgyOUYyNzAwNTg0RDE1NTRGNkFCOTRBRDY3NzQyMUUwQkUwQUVEMDMyNzE1Q0EyNkQyOTFDOTFBMzJEMDBBMUJGOEQyMDJENjY1MjkwQjc1RTBDM0YxOTQxQTIyMUM4QkE1Njk0NjBGODk0NDc2M0NENjk3RjUyQTUxMkI4QzkzNzQwMTREQjkxOEQ1QjEyNzQ1QUE0MjIyNjFCRUZFMjBGNURDNTc4NDc5NEFCQkQ3MDY3MjUwREQ3NUI4NDA1QzY5NENEMkZCRTE1RURGODkyN0IwNzhGRkFDNzA2NkEzCitENjYyQTcyOAorMDhENUQ0RTVEMDk1OTAyMUUyRjlGNzAyNEM3NQorQjMxMjcwOUI4MEI3RThCOTY4RUI4M0YxMTM2NjFBRTg0QkM4NkYyNDY3NkY1MDlDQzM0MTg5MEU2NkFCMDY2NDkyRTQwQjY5N0Q0RTEzQ0VDRjc2RjJGMDczQjQ4NkU4N0Q0NTlDQjBBRkU3MjkzNjg2MkE0OEZBRTlGMEExN0NGNjEwRjdGOEIxOUFDMDRDMTFBMTdCM0MzNjE5RERGMkRGMjA1MUY0QzVGRUU4MjMzOTNEQTJFMjQ3NjRBNkYzRDc5NzMxQzgzMjlDMEZDM0UwRDdEMDk2MDdDNTNBRUE3RUEzMTU4NzlGMkU5OUQwRTExMjIzODA4NzI4CitEMkJCCisyOQorRTUwOEEyNUQKKzAxRjU0MDI0MzUwNjk0OTQ0OTg5QTAyNTcwCis1MUM1NDcxNjdBNzg1OTNFREMxRkYyN0FGOTc4NjEwNzNFNjJCMDI1N0EzNTRFNUNCMTA0NDREMzE2MENBNzIxMjlBM0Q0RUY4N0ZGNjFFNzA0OTNDOTA5MzQzODFDODlCRUYzODk4MjUwQjczNzU2Njk1Q0MwRThEODc1QTBCM0UxNjIyQTlCNkZEQkM3MDY1NThDNzZBRjNBOTg1ODZBOEZFN0I3Mzg3NzYxRjlERUYxMjhCQjk2RTA0REQ2NjM1NUQ2NTYKKzdGRUI1RjUxCiszRDc5Nzk1OEFCMTAzQkVGM0EzMUZCMjYxNjgyCitDRkUzNkNBRTVBMUE2QUMzRUJBQTYyRUZEM0JCMEFDREMwMjIwRDU5MjZBMjg2RENEMzcwQjE5Q0JENzlGQzFERUE1MkM4QjFDNjAyNTI5NEU3MzVCQzY4MjgxMTU5NTA0N0M1QzdEODc5NkE3Q0EzQjFBMjkxRThBQzlFMzdGRDA0Mzk2MTQ2RUJERUIxQUQwQTYxQjI1NkY2ODFEQTVBODhEOEU4MTc4MjJDMzcyOTQwNzBCQjU3RTQ0OEUzODgzNUI0N0VDODZGRTQ4MjAyOTFERjQ5MDU0QzAwNTc5QjE4OEM5ODEyMURERjE4NzJFNzgxODlEOUEzNEUKK0NDMzdBMEU4CiswQTlEQTVGOTVDRDVBRjVBQkEzNjE5NjVFMTg3Cis2QjIyM0I3NEZEODNCMTM0REU5OEQ2RDMxRDhEQkI1OTVCMkQ4RkQxNDk0MzQ2NzM4OTRBMzMzREU1RERBOEUwRTQzMkY5RURCRUU3NjZCRTJEMTZFODQ4Njc2NjE1NDkyMUNBRTAwNDYyMkVFODU2QkZDQkVCMzMyQjE2RkExNEM1ODE4MTkyMzM0NEQxOUJBMURBOTM0QTQzQTE3NzQxMTREMDY4RTdCMTdCMjJCRUIwNjQyNDhDMTQ4NTY2MzJCRDZDMEE0Q0JCMkI2MUQxOEQKK0U0NkY1MkU3Cis3RDZCMjYxMEMyMUU3QzUwQTI2RTk1NTc2QworN0Y3QTJBMjUyNThBQjNBODg4RjREMTVDQzAwOTY5RDhGRkE3QTNBMzc0MjRFNzU0NUExOTIwOEM3RTc5QUJFMjBBQzg2OTlCRjc0Q0Y3ODhDOURFNzFEOThDRTEzQUM4RDExQTE4OTgzMUM1MThGMEJBOTdFMAorRkUzRjAwQ0MKKzVDN0I1RDU3MDI3RUUwMTcwRTE4M0QzMDY4MUEKKzEzODdBRDE3RjI0ODA3RThDMTcxOEYzMUJBMUEwNzA1ODI2RDBGODIzRjc3QkU3QUFBQkMzQThGMDIxNzM3OTVBMDYxQ0JDQTM5OEZBQTFEQjQ4OTFDNjQzQjM0MzBEMDY3N0FFRDBFMUYwMkI2REZGOEJDMjk1NkRFMDc1Mzc3QTZGQkNFQzg1RkE2Q0VBQzNFMTM1N0FFQzQ5QzU0MkQ0RTA4QUM3QjNGRTlFNjM0MDA3MTRFQzFBN0UzNzFBNTA2QzA4NTQ1RjJDRUZFOUM3QjM3MDVCRENCMTZBNworOUMwQjFDODkKKzkyODkyOUFDQTM0QjUyMkNGMEM2RDVGOUE4CitCQjU5QTgxMzUyQzA1M0E1ODE5RkY3RDAzQzZCNjVBODYyQjM5RDhCRTc5RkI5NUQyMkYwN0RBQjcxMzg5MTZFNTEzQ0NCOEUzM0U5RTYzRjMwNkRFNTRDN0M1QjNDNDQ5N0E0N0EwQzZDNjNGNEU4RjA3QUU3Njc5NkRDMTcxNkVDMDRGNDNDMDYwNTI3Q0I3NkFGRkQzMDZFMUM5OTg2MTU5NTc0RjlGQ0RFRjExMDcxNzJBNzkwCitENUYxOERCRAorNTkxQTc1NTMyMUVDQkMyOTBCRENCNjMyNjcKK0E5QTc3MDFENjRGOTc0OUEwNDY0Q0UwMTkwOTc0MjVENjQ5OEVGMTJENkQxQjIyQjY4NDM1QzRGNDU1MkE2MDU5OTE0RTk4RTc3MzE0MjkwN0JGMUNGMDZDNkZCNjdDQjY0MzdBQ0IzN0ZCQkZCM0QyMjRFN0E0NTE5NjIzNjc1RjczRUJDQkY5NkZGNEYwQkY5ODQ0NUQ4NzY2NEE1OEVERDA5NjgKK0Y3NjhERDg3CiswNTZENUM2MjA1OUU4MUQ4MEQzMkEzQkQ5OEM1CiszNjFCNjYyMkMxN0MwODJCNTJFMDVBMUYxREI2QTZDRjBGODJBN0M2M0NBNjQ2NTQyNkM4MkZGOEZDNzk1MTIyREE4MzhGMzM2NTA4QzczMjdGNkREOTY3NUY3QTkwMDQxNDk5NEMxRDFFNTM2RjUwMTc2NkJCNDk3MUYzREY0RDFGRjlGNjkzODVEMEVENEE0RjA0OTJFNjcxQUY0MUM1MzZCRUZFRDRCNzhBNDNCMTI3OEQ4RjNEQkREMzEyMTZGQzI5MDAxOTIwMkU0MThCMTlCQworQUQwODlFOUQKKzEwRDMwM0QwQzExNTQxQzJDQzRCRDhDMTM4NTIKK0QyNjVGQkNFQTNBRUQyQTBCQjAzMzgyNjYyRDZGODk4QUUxQzBDOUJDRjcxRDcxNUZBODY0MDhDQTBGOUE3QjU2MjNERjY3NkI5RTEwNDgwQjk4RTg0RDBCODAzRkM0NDE0N0ZCREM0N0E1ODVGMTlGNDdFQTUzRTZFOUY3QTlGNTZBQ0E4ODRFQjE4MTQyQjY0MDM4NzU5MDhGMjc3RDk2NTJGOURBNUY1NkUxNUIyNzJGMDJFNTYyNUM1RTZGRjVGRDgyRkU0RDJDMzRDREM4MUU0NENBQzk3ODQzMDU5RjQ5QjY1QkQ5Rjg5MjMyNDEyRjc3MkE4NzUxQQorNTRCNgorQTdCNzNFCisxNkRBRUE1NQorMkYwODE2QzY4ODU2MjI1RkVCNDMzMkI4NjAKKzZGODQ3M0FBMkU1M0VFQzFEMTZGQTJEQjZGQzgxNTUzRUU4MzNEQ0E1Mjc4MDdBNkFEM0E5RjE0RjRBNEYxNkZDMDA4MjI4MjRCNzEzRjUxQjYxRjQyNTg4NkFCOTIzODg1RjU4OEIwQzFENUU4NTg1QUVCQUQ3REIwMThGOTM4N0U0OTc0QkM0NjY5N0MxRkE5OUU0M0FBQjZERDU0NjhGRgorNjFGNTBGQTUKK0RGQjY1RTI4Rjg0NUU4MzMwQkU1N0NBMkJCMzUKKzk4ODU0MUM5QzU0NTk1MjU3MTA0MUUwMTRDNTA5QzI3Nzc5NEVBMUI0RkJCRjIwNDQ2QzQ1MTcyNzkwNDZFQTk1NDNEQ0NFMjNEQkEwRDk3NzVCRkExMTVEQzZCRjJGQTE3QjRCNDU4NkQwN0E3NzVCQzY4NkM3MTA1RjNCMzk3MERGRDkwNzY1QUUzNEU2OTZCQjQ3NTI1MDBERTAzODRBNTZGOERBODVCOUZGRTA3QjMzRTQwRjA5Qzc3NDRFMTAzMDU3RTY3CitFNThBM0Q1QworQkNBNUJCQTUzQUU4QTdBQkM5MDRCODlCRDk0MworQjQ5QUJGNTQxQzhFRTE2ODZFREFCMUE3NjY0NEU5MjQzOTBCODJBOTUyQkMzRkE4NUZEMEJCNUUxMzcwRkYzMTEzMUM0NEVGNTdBNjFEMzE4Qjg0RjkwNkMyQ0Y2MDQzOTczN0RGNTEzM0VDRTE3ODY3NzBDQkNCNTJCQTg2NEM2QkYwQkE3OTE2QUU2REMzOTBDOUY1RUQ4MTZDNTRFRDA3MEMzNDNERjYzOEI1QjVFNEU0MUNFMzRDQzJFMDQwMjYwNTExNURBQjUzNUNCQzUyNTM4QUYzOUNDQzA5ODQ1RTUwOTYKKzU4RDJFRUNFCis2OERFQTNFODRCNzVBMzlCRkM3QTIxMTEyN0JECitBMEY3MUY0RDQzQjU1QkJDNDM1QzRCMTJCOEYwMDAyNjc3OUEyMDY5OTM5NUVCMTcyQjU4RkIxMzFEQzE5RTg5NDA3OEFGMEYxN0FEOEY1MzFERTBGREExN0MwNEY3RDhFOTkzMjQ1MzU3NEM3NEU3NUFGMDJEQzcxNDVGQ0FFOUVDMDVEQkIxQ0NGMjlDQTY4NEE5MTkxQkQzRDg1OTM3MDhEQjNEOENFNkQ4M0E0QTY5RUY2NjcwNUFDRkExNjQ3NzQwQUUwNUY2RjhEN0NDQjQ4RTgzMTVBOTJFQTM0QzUyNDM5QUU1OEFEM0YwOTRCNERGMjkwOTk1QkUKK0M5RUQKKzM5NkMxQworNjQ4RDM1MjcKK0U4MDg1N0IxNEJGNDEwREIzNkM2Q0QxMTExCis5NjAzRUUxMzIyOEUyNUVDRjNEMUQ1RDIzMDREMjYxQUI5NUYwMTY4NzBFRkNGM0I1OTVGQzIxMUJCMjkxQjlERDMzOTRGRDU2NTg2QjM3MzNCMUQ4NjlBQjIzRTM4RjVCOEY2Rjg2QUIyMzhFRUQ0OEYwRjExNzYzQ0YyODRDOTc4OEU0OTc2NkRFMzc0MERGRkEwREI2NkEzMEY3NTU1MzA2OUIzRkU3Q0RDOTdGMworRURFOUExNTcKK0VERDY3NTJGODA5RDdEQzI4QTk0ODU0MjEyCitDOTIxOUNBQTQwRDAyOENBOTRBREU5NzgxRUE0MjAxMENCOEVFNjkxRjFDMjlEOUQ2QzlCRUJFRTFFNTI4OTc2QkIwRUY4RUY4ODQ4NzNFQjEyQzM3QUU1N0FFRkI3MERCQTM4NEJBRTZFOTI3NTBFMjFERUZENTYyODI3RDA5RTIzRDc5RkUwQTI0Qzg4ODUxNjEwODZGNjY1RkU4NTU4NzY5QgorRTMxODkzRDQKKzBBNkQ1RkMzRUNBRTdEQ0Y4NzZFQTlGMTI4MEMKK0E4NEFBOENGQUM2QzUwNzk1OEEzNEM1NjAzNTRFMDg4MkU1QTQzOEM3NUUzNkU1MjI3QTYyMTc4RkQxMjkwNUI5OTc0MDk0QkVCNzM1ODFGOTRFRjBFNjMxQzJFRkUzNUIxMjJBNjRCRkJGMTI4MzUzRDhFNDNFODlBN0Y2RjhDRThDMjVFNkYzMzI2MjZCQTM2OTc3QzJFN0ZGRUUxMDYxNDU2QkFFN0Y1RTI3QTExRjA5REVCNTk1RTg5NzMyQzE2ODIyRThBODIzRjY2NDBCRUU1QUQwRUZDNkUKK0FBQkY0Qjc1CisyRTNDOUUzREQzRDY1MTFGMDFENkY2RDRGNAorRkMzN0FFOTU0MUE0NUJEMUIzNEY3QjYyMjk1RTk1RDY3RkI2NkJDOTg3QUQ2MTY5MzY4RjEyMUFDM0I1MjdDRkZENkQ1RUQyNEE5Q0VGOEIwNzUzOEVBRDVGRDBERERGNkVGRjQ5RjFCQzc0RTM0MjMwOTlENUI3RDA0MkMzRDAyNzM4RTFCNUNDQjBEMDUwOTQyNDQyQzE1NkYyMjkxNUU1NzYzMTc3MDRCMDc1RDUyNworNDhBREYxREIKK0RCQjExRUM5NTNDQ0Q5QkM2MUU0MTNCMzQ0Cis5MTRDQkYxMTYzRTYwNjgxRDlEQTgwQTI5OTAzODYzQkY5MjZCNEVGMzkwMjhEOTAyQjJGODVEODdDMTQ5NjkxNTgwQTk3Q0Y0RUYxMDIyMTZDNjU5MjYyNkQ0Nzk5NEUzN0VFM0Y0MzRFMEY0RUZFNkIyMTg3RUQxMDEzOTc0NDA4MzM2Nzc4Q0I3QUY0RjE2NTZENjI3QzFBOTc4Qjg0QTMxMzhCMUY4MDBGQTRDNjJCNkM0M0FDCis1NDM4MTZBQgorOEU0NDNFM0ZCQUVFOTcxOEEyNDNDNjIyQjE2MAorOTQ1RjkzQkFGQjZEMDJCMjkzODZBQzhCQURCRjQxODk3Njc4OTlEOUY2MjAzMTFEQkM3QTM5M0NEMzZDNzY5ODc5NUY2Q0IxRkFEQjNGNzcwNzFCRjYwMDJBRUUwNEFEQzhBOUQ4NTg2NDNDRjQ3OTA1RjEyQzYwMDRENkJCRTcwRDMxRUQzRkY2RTgwM0NBRThGMEE0QTgxNzcxNzNGMUM5Njk1MEQxQ0M2NDMyMDkzQTNDOTUxNURDQTA5OTREQkI4MDYwQTNDRENFNEY1MzYxODEzMUU5NTlBMkFDNTA2QTAyOEJBMkQ3RjQyMEVENDMyMTM3MDYyOTU2CitBNDIwCis3OTlBM0YzQkZBMkU2QjQ2Qzg2REU5REE3OUEwQjZBMjFBRUEyNDFGODNCMDYyRENGQzI4NTgwQkM4RUQ5M0JBNzQzOEMzMzUzMjJBNTVFREY4RDYxNUUxMEY4QjRECitBNTkxRTFFRQorMDdFNUUyRTk5RDUxMTFEMDc3ODJBQzNBOTMxOQorQzU2MTJGM0Q5RENFNTcxQTVEQkQzNTIwQjBDODNBRDFDRDM4Q0YzOUU3ODAzQkUyRURENzZDNURCMzIzMzgyQjE3M0UyMEM2RDJBMTlCREZGRjUyNzQyQURCODQxMEVGODFBMkMxQTk0Q0Y1RDUyMzQ3MjkwNzg0MTVGNzhEMTUzMDMxNDlGNjVFMTczRUQ4NDA1MUE3OThDMTE1NTlDRkU0Mjk5NjMzQjNEMzlEOTU0RDI5RkQzQTdEQTE2MEM5NjE0RTFFQURFQTcwRDc3OERFRkQ0Q0UwOTQKK0FENjdBMzY3Cis0Qzk2M0RBNDNEMURFOEEzMEU3NjlGQTkxQQorNThDMThCMzAwOTM4QkI0QTQ5RTgwQTQwMDg1OTZGNzdBRTM5NTI0QjRDQ0MwRTIzODE2NUE2RDU2MDI1MjQzNENGMjk2RTg2RjRGOEMzOTEwMzRFRkM2NkVCRDE1OTNFRTgyRTZFNkMxMjI3MjRGMDY2MkM3QzJEQTZFOEI3N0E3RUI3MThEMUJEQTk0RjNEMzAwQUJCOEFBRDMxNDhCNworRTA2RUI4REUKKzgwQUVCQkM3NjE5MEQ5RjM3RDNDMDg4NUM2NTkKK0RDM0I5MTUwN0Q4NDA2RUIwQUUzOUNCMUFDMjZBNDYzMjBFNUFBM0MyMDUwRTRFNUU0NTAzMDY2NzdENzc4NEQyMDRENkUyMjRBQjlEREFCMjdDNkMwNThDMjdBRDZDN0NCNTcwQjc2QTM3RjVFQTVFOTAxMjVBMUQxM0Y3RDMzMDEzMjVCRjU3MjU1REVBNUM0MkFFOTgyRjREQjFBRTdGNUExMkVDNUYwNEZCQjIwRDlGOUQ3REYxMDM2RDAzMDNERjg1M0ExMDk4ODMxMDI4QTNGNTMzMTgwQzExRDc3N0IwMTQzOUUzNTdDMTkyRUQxRTVFMzhBMTFDMAorNjFBNAorNzVFMjhERkY5REFCOTMxN0E2OEI5N0RCMTA5NjIwNjM4RTY4Rjc1NDE1QjRDRDQ1Mzg2MEM0MTREMjZBQUJFQ0Y1RUFEOQorQUQyRTYxMjQKK0JERjVBMTZBODVERjczNUMyQUVBMjZFRThFCis5NzQwMjdBODk2QzBCNjJCODM1NUU5QTFBQkQ2ODcxOThDQjE5NDZEMTdFRkVFMzUzQTA4NDIyMTFDRjA3NjQzQjJDNzlGNjQxQUM5Qjk0QjZFNzVCOENCNkNDQ0Q2MjM4QjM1RUZFNjgzQTcKKzVDM0NGMzgxCis1RTczNzVDRTFDRThDQUFFMzM2MjRGM0U5RTY5Cis0RDZENTY0OTYxMTU5MzZGNTE3MEM3MTlEMjU3QkU2M0VBOUVDMEIxODg2REJCRERBREU3MDJGRTBFRkU4ODdEQjY2M0I2NDZBQTI0RTQ4MzQ2N0EzOUE5NjlENDlDREQ4MTZCQzNCOTU1NkE2RThCMUU4Q0VEMDNEMzAzMTlCMDYzRTlDNjEwNTVDNzg0MEQ5MUIwQTdBRDNGOEYyMDJCOUVCRkEyQ0E4M0I1MDhBODM4MDRGQTFCRDFCQ0REQUY3NkY0QzUzODYyRTYxOEQwNDc1NDUxMkUwOEI4NEE4MzIyMEQxN0NCMEYzMDIyMkQ0QjkzNDVBMjFFMUMKKzE2QUIKKzc4REU2OEMyMjA2NTMxNTk5Q0JCN0YzNTQzNUU4NDkwRTM4QzQwQUVDRDNGRTg2Qzk4Q0U1OUY4QzRDNTlECisyMjREN0EzNworODg2RUY4NEUxNDJCNjc3NEI4MjE1MDRGNDVDQQorQTBFMDI1MDdBODNFREMyMzA2NkJBOTQwNTUwN0E0NjUzQzM3NDRCMDk3QTZEQTcyNDkyRjhCMjA3MjIwRjRFNEIyM0JGOThCMDFCMkM0QzU0ODlFRTBDMkQzNUVEQzQ3NTY1RjZBNTM1QzBCRDk0MkNBRTdFQjUxNzVCM0MzMTAyRDA1N0IwNUZGNjJFQTE1Nzg1NzY3MkMwNzFDRTBEQTZCQzY4MzlDMzIyM0IwNjUxNjM0Rjk1NTk1RjBCRjhFNkQ0ODg1NjUxMTUzRjBCMkVERjdDODFDCitENTdBMDY0QworQ0FCRTBBOEQ2QTI2NUQ1QTI4MkVEMDBEOTkKKzNGOUMyNEY2MzI3M0ZDQTA4MDM4MUYxNDY1M0IyODUyODcyQjdBRkNDM0JCNzQ0OUI4RDExRTYxOUFFRDQ3MTBFMTk1QjEwMUQ1MkYxQkY2N0REMTg3NkMyNzZFRTkzMzIxRUFEODJENjVERjI0RTFDM0ZBMzE5RDUzQkFEOTE1QzYzQzZGM0IwQTZBCitDRTgyMjg4NQorM0JEMEFCOTIxRDQ4ODAzQUZGQjJERDk3NDQ3OAorODZGRTI0NEU3QUM5QjdBQTQ3NzAzNzQ0NTZFMUJFMTdBMjQ0RjM4RkRBNTRCRUEzRTc5NTM3NUMxQUU4NDc5MzIzRjNBQjk4M0M4QTkxQTkyNDFFRjExN0RCOUZCOEQ0NzlCQUE5NTYxN0NGQUFDNDE2OTIwQTNGNjQ3QTM5NTA3MEY0NkNFQ0IzOUNFMkJEOUQ4MjdFRDgxNTNGQTFBNUUyNUI5NUZDNTBGNDRDNTk2NzVGMzZCMTZEOUY0QjM2ODdGODk4REIxMDRFOTE0MTQzQThGNzdEOERDMzk5QkI5QkYyNTA5OUFFNjc5RgorRkZBRDZCQjkKK0Y2NEZGOEY4OUQ1QzhGRDdEM0I3OUZCMzJDNzEKKzQ4MTZEMEIxMkY3RkIzNDBDMTAyMzQ3Mjk5RkI2MEY2NzQ5MDQzRTNEMEIyMzcyQjhENDlFMDE3RkEwQjMzRjIwNkY1REI4ODIyQUMzREFEMzY1NDYwNkU5QzBENzA1RTE4NENDRTBCQjNFNkRBOTI1N0I3Qjc3MTY4RUY4MzQxMDk1NDZDREQwMDQyNzQzNDUwNDQ2NkVBNzQ4QzgyQkFCQTU4MjJEQTNERkYyRUEyMThEMEJCQkMwQjRBMjVCQzNBQkQ2NDM1ODM1RjQ5RkYxNTlCCitFOTQ1ODZDQgorOUZBM0U4Qjk1NjE0RDZBMzY2MUNGMjc5MjAKKzZERjUyRDk0OTE0RkUzNzRDMDFDRkM4QjhBQjMwNEFDRkFCOTI2OUFFNzQ2MUE1RTM5MzFDQUYwMTUwREVGMEQ5MUJDNTJBNjNDNkI4NUFGM0E4RkU2QkU2MzlDOUFDRDJBMzE4ODAxNzM4MTVDQzY4MzY1RTc5OUYxRTU5MTIzMkVBMEEwQjdBMUJGNzIyRkQ2NjcxRDFDREFGRDRFNDZERDFBM0Y3RTA0RkEyRAorMjRDRjhCQzMKK0IxMkNBRUExMzdERTNCNUUyQTY4MUE0NkU5NEEKKzRCQkI4MjZFRTVBREU0RjY5RThEMUQ5QjNGOTRDMUQ5MkY0QkI0RkQyMDFDMjAxNTFEOEFERjA0MjA5NDYwRTg2MkZERjNEOTg0NkVGQzI4MjIwRjNCMTY3NjA1MkRDMzhCMjA4RkI2M0RDNDA0NDQyQUI4NjNDMUY1NTYzODBDNjk5Njk3QkY4MDExNUE4M0JFOEMxNjdCOTE2RTU3RTE0Q0Q2RDg1RjFGMzQwMEYwODA2NDQwM0MxMDEyM0JGRjdCODA4ODZFMzQyQ0REOEQyREExNDlEQTI5RjUyRkY3NTIxRTQxMDI5M0NBMjIxOEVFOEE3NDU0CisxNEY2OTFDMgorNTEwMDE0RjVENDAzMUZCMTQxQTc3NDNBMDkKK0FGRUNBNkRDMkI4MDMzRTM4OTMzM0RBOUY2QzdBMEVFODM0MTQ3NDhBOEZCOUQ3MkYzQ0JBQjIwMTlCREUyMDk4MUI5M0E2MEQ0NkUzMTNFQjMyMEUzQzU0RUEzRjlGRUJCOUVBNDg4NzRGOTQzODEwQzJENjAwRDZGNjcwMzAxODJFMEYxNEJDMgorMTJGMTdDNTkKK0E4MDJCNkQ1NzhFMjZFMDE5MDFFQzk1NEI4CiswM0MxOURENDY2QTYyNTRFODdFRTFGNDhDOEVCMEY2NjJDNDMyNzRBMDBGRjQ1QTdCREIyRjI2MzI2MUU4RDkxMDk0NTk5NDQ0QTdCMjczRDc5RTBBMDExM0MzNTBCMkU0Njg1NDgzMEYzOEFEQTk3M0MzRjYyNzQwRkQ2NjYzQ0E1N0M5RUUxNzYwQkFDOEU1MkZFMjVCMEJERDAyNEFFNjFBNEU4QUQ2MjAxMDlFMTI3QTBFNjk5RDJCRTA0ODNGOEE3CitFMDEzN0VCRAorREMyRkE5OEI3OUNCMTg4NzgyOThDMzgxNTUKKzZCMzJEOUMzMDYyNTNEMTI2RkJCMzAzNTc2NDdFRDJBMTk3QzgzMjJEQkRGRUIxMEI5QjQ0MTJEOTM1QjQyMjMzREUxQkU5Qzc4MzMxMTYwMjA2OEVERjg2Q0RCNzI1QjhEMjlFOTJBQTg2MEQ3OUE3ODY2MkMwMkNCQjgwQkJCRjlEODgwN0VDM0FDMEY2OTU0NDgwMTFFOTNBRUYzODhEOTVCODc3RTFCRjI3MTQ0MUUKKzZGOUFBQTBFCis0OUMyNDUxQkQyRTk3MTE5QzNBMkI2RTZDQUE0CitDREEwMzcxRDNDRTE2QjBEMDRCOUE1MjNFMUI2RjAwRDgwQjk0QkM3Q0E5ODU0NzMyQzVCNzgzMDFGQUYwMDM3MDU0MTE3QTJFNURDMTk4NTQ5RTJFQjM0MjM1RDhCNTE0ODdDREYyNjFEOEM2QTc2QjQxMDQ5RTdBRDAwQUQ3NUEwMTk4NzVCRjJBRDUwNDlDNDBDRjA4MjdGNTYxQTJBMEI4QkREQTNBRjA5Q0FGMUI1MjI0RUU3MUI3OUExQzlFQTU5QzA0MTRFMEI4MTA1RkYyMEQzMDcwMkVEMkRFMTNDMDkyNTlCQkQ5REQxMjg3MzlFRkZFMUIyQUIKKzFDREQKKzlCNkRDNDkzN0Y1QTJGMTNCQTZDMDQwNDhFNjgKKzlDOEREOUJFCitENEJEMjBGQkZFODY1RkZFQjA3MDAxRDg1RTE5Cis1MEI3QzUzMkREMUVBMDM3RUFFQzc1QjgxMzRFM0E4QUM3REEyMDc3ODJGRjNCOTBGRDY2QjI4N0Y2NEI5RTBEMzM1RkRDREZCMTgyOTEwOTgwNkNBQzQ2N0E5QjhBMUI5RDA2RDQ4NzYxRTg4QkE1ODRENEQ2RjM3QkQ1NUI0QUVCQzhBMzMwRjQ4NUUzN0MwRkY4MzMwQURFMEUwNjAwOTY3QjUyMzdBMTBCNjA4MTg3RENGOTg3QzRGNTA2QjBGNTk5OTdFQ0Q5RDY0MjRBNzUwMThEQkE3NTY0QTlBMzc1QkE5QTExQUZDMEIwQTlFOEE4M0ZEODc5NzkKK0E1QkIKKzJBQzFDNUNEMDU3QzU1MERGMDBFMDU3REU0MkEwN0E3QjZGOTgyMjhFRkE3QUVGNjAzCiszRDhDQjVCNworNDI2OTJCQzdFMTJGQ0U0MDVGRkE0Q0NGQTU0OQorMTFBQ0QwRkY2ODdFMEJGQUU1MDcwNjA3MjFEQkFBNDgyOUIxRjI1MTY4OEE4QTU1Q0VFRUVFRDJENDgxMUVENkYzQTZCOUI3NzAwQUY2M0IzMTBBRDkxQjVBOUQ1QzI2OUIxNkU1NjI4MzQ2NDlGQ0QyQUYxQ0JENkYwMUZBMzM2NDc5MEJCQ0VFRDg2NENCQzJGRDYxQ0U2QTFDRTM1MEZEMDEyOUI2MzdDM0RCRTkzN0NGOTM3MEI0QUMzNzlEREI0Q0M5OTE3NEE2M0ZCQTNDQzZBQzMwMUE2MkZBMjE0NkEyNDZEREVDNkY1QjcxMDVBMEJFNjcwNUJECis1MkI3CitFMEY5NkUzMQorRjI5RjFGM0JCNkJENTU4RjdGNEI2MkRERTM4MQorMkFBOEQ5NDg4RkE3RjM3NTU1M0UxRjc4MTM4NENBMTI1MDkyOEU1QTE3MjJFMjRCOTlFMkY2RkQ4NEY4MkFFNUFBQkMzNTk4ODY3Q0Y5NzNFOTFCMDczMDczMzcxMjA4NkE0QTBENUM0NDg0RUU2MkMyNjM3RjAzNEVDRDQ5MzhFMDg3RTFBMDA0MURCODhDM0YwOUQwRThGQkE4NzVBNDAzQUNCQ0Y0MjE5MkE1RDAzOTRFMDMwOTFEMTA3MzM1MUUxMUUzMEQ4Qjk5ODBBRkU2Cis3ODc2MUJDOAorNUU3RUM2OEIyOTZDOURDNEM0OTRDMEIzMEMKKzJEODIxMDg0RDcwRUIxQjM3NUI4RjIwQjI3NUY0QkVBQUI5NTY5RjFENDBDCiswQzJDNDQzMgorM0JGRTNGQjg3MTE5RUVGRThFMTVERjhBMzc5QworMjIxOTMxNzJCMTY3REM1QQorM0FCQTM0MjgKK0NFNzQzQkY4MkY4OTFEMUQxRjdERjkxMzEzOEE0RUIzMzc4RTk2MkVFQ0RBQ0VDRjI3OTY3Q0VEOTU3MDY3RkREREJDCitDNzlBRDZEQjY4MUJFQzJGQTU3NTVDMTNBNEYzODYxMkJDMTY0MzRDNTg5NEE1QTE4MDFGQjVBMzk5NjgyRjY3NzkyNTMzQTQ3MkIzCis2MTI5RjRGQTJFQ0VEQzNDQTE5QzlBOTlERTdBNDU2MEFGNDI2NzlGQkVBOENGRTBBQkU4Q0IKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCislRGVmaW5pbmcgZm9udCBQU093c3RkdXRjaGIKKyUhRm9udFR5cGUxLTEuMDogUFNPd3N0ZHV0Y2hiCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3dzdGR1dGNoYiBkZWYKKy9QYWludFR5cGUgMCBkZWYKKy9Gb250VHlwZSAxIGRlZgorL0ZvbnRNYXRyaXggWzAuMDAxMDAwIDAgMCAwLjAwMTAwMCAwIDBdIHJlYWRvbmx5IGRlZgorL0VuY29kaW5nIDI1NiBhcnJheQorMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCitkdXAgMSAvQzAwMzIgcHV0CitkdXAgMiAvQzAwMzcgcHV0CitkdXAgMyAvQzAwNDAgcHV0CitkdXAgNCAvQzAwNDEgcHV0CitkdXAgNSAvQzAwNDMgcHV0CitkdXAgNiAvQzAwNDUgcHV0CitkdXAgNyAvQzAwNDYgcHV0CitkdXAgOCAvQzAwNDcgcHV0CitkdXAgOSAvQzAwNDggcHV0CitkdXAgMTAgL0MwMDQ5IHB1dAorZHVwIDExIC9DMDA1MCBwdXQKK2R1cCAxMiAvQzAwNTEgcHV0CitkdXAgMTMgL0MwMDUyIHB1dAorZHVwIDE0IC9DMDA1MyBwdXQKK2R1cCAxNSAvQzAwNTQgcHV0CitkdXAgMTYgL0MwMDU2IHB1dAorZHVwIDE3IC9DMDA2NSBwdXQKK2R1cCAxOCAvQzAwNjYgcHV0CitkdXAgMTkgL0MwMDc4IHB1dAorZHVwIDIwIC9DMDA4MCBwdXQKK2R1cCAyMSAvQzAwODQgcHV0CitkdXAgMjIgL0MwMDk3IHB1dAorZHVwIDIzIC9DMDEwMCBwdXQKK2R1cCAyNCAvQzAxMDEgcHV0CitkdXAgMjUgL0MwMTAyIHB1dAorZHVwIDI2IC9DMDEwNSBwdXQKK2R1cCAyNyAvQzAxMDggcHV0CitkdXAgMjggL0MwMTEwIHB1dAorZHVwIDI5IC9DMDExMSBwdXQKK2R1cCAzMCAvQzAxMTIgcHV0CitkdXAgMzEgL0MwMTE0IHB1dAorZHVwIDMyIC9DMDExNSBwdXQKK2R1cCAzMyAvQzAxMTYgcHV0CitkdXAgMzQgL0MwMTE4IHB1dAorZHVwIDM1IC9DMDEyMCBwdXQKK3JlYWRvbmx5IGRlZgorL0ZvbnRCQm94IFstMTggLTIwNyA3NjQgNjk2XSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0Mjc0QjE4MjE1NjhEQ0EyRUE0N0QyNjFEREJEODlCMzlBOTM4CisyMENGNTZFMEQ0NDhBNEJENzlEQTk4RTYKKzVDMDE1REQyMTFEOTYyQTUyOQorNDg5NDdGRjAKKzM1RTRDNTJGQzI5QzI0MzcyQkNGNjc4REY0NEYKKzIwRTcxODU0Q0NFRjgwRTM0QUMyOUM5QTk2RjczNzg2NzcyNjlFMjk5NzA3QTg2MzE4MEMwQjI1NEI2M0JEODNBMzJFOTIyMDA1RjU1MTBFODhGQTc1REY5NzFCRDAzREVGQkM3QzQxNkMzN0M4MTIxRDkxREFDOEY3M0M5OEVFRUZEQ0IyN0RDMzJDNzk3MzZGQzAxNTY3ODJFQ0Y3ODc0NjQ5NTAwRjI0QkZGREUyOUFBRTlFRjM0MEVCMEQ5N0U0MjI1M0RBRDNBMEVFQ0MxRUJCNjIzMERFMUREMTBCRDc4QjZFNjQxQkNCOTgxMjk0MUVENEY1NkM2MAorMkU1QworMkE4MDA1Q0U1QzlEMjEwMTRFRjU4QzVGNEI5NERFM0EzNzRFQjkwQUU2MkZCQzA2MDZBNDY0OUMzRjQzRUNCRDk0RTcxRjAzNkU4NTFENTRENTI3MkVDNTg5RjNEMjRFNEREMzI3RkYzNDcxQzE2RUFFNEQ2MkVGNDZENERDNDExMjkxNkRGRjZDNjNDQjFCNjlGOUE0RDg5MDQwQzBCMDdBQUMzODQ1NUEyNUQ5MEUxRDhFMzM4MUY3Mzg1NkYyQ0RCRDEyRjREMQorQkRDNDY2QkEKKzNBODRBRjVFNjAwQTEzMzJFNDQ5MDc1NzNDCisyQzdBNjg0RkI3MzdFQjhGRjJBREE1MUNCMTRGQjM4RDE3NDE4NUFBNkRCNDNBRkQxRjAwQTMzREMxM0IxMTM3NzY3RURBQUQwMzgyNjRCMTM0QTQyQzVCMEY4MkE3MEJEMTZDRkU4OTE1NzAxNDA1MjZDNzlEREM5MDI5M0MKK0M3RjU2MDhGCiszMEI3MzJCMTk0QkNCNURFNTk2OUMxRDVDMgorQUFERjBFOTZBMzE4NjNBN0ZDOTBBNDgxRUU1MTQwOTU2NzQ3QTc5MkY0MDIwNUFEMUMwMTAwODRDMEM0RjU2OTNEM0ZDNzJEQ0YxOUY3RkUzM0U0OTFCOEIxNkYzN0I0MTM5RUY3MDY4MERBMUM0N0M2MEFGODcyOEYKKzE5NzExMjIwCitDODAxNDU0MDlDQzQxODQ0MTE4MTMwRjE4QgorODNEOEFFMENBN0EwNDYwQTk5RjBBN0MwMDcyMzg2QjNBQzdDNjgwRkMxQUE0OTZEQjY3NEJBOEIzRkRDNjdBRDVENjUzMTQ0MzhCRkY4Njc3QzlFRDI2OTM2NzlCNQorQzk3MzAwQjIKKzIwNTZCMEEwQjRDNkNGMTk4RTNCMEYzMDFCCisyOTYyRjE3RTQ0RjI3MDI5Njg2QzE5RDYyQzEyOUMxN0E5MEI1Q0VDNUY5MTNFCitDNEYwNDEwNAorNjVDM0MwRDMxQTIzNDQwQTcwMDM5MUIyMDEKKzYzRUVCMzIyRUIwMEI2NTFCMzFFMDJFNUQyNTc5NTY3OTE3M0QxQzExNzFFNTNGRjMwNjQwNjhGREY5ODM2CitFODk5M0IyNQorNDBCMTY5MTE0RjAyNzU4QTFFRjEyRTk0ODkKKzA1RTJEODUwQTQyNTNFQUI2ODM1RjlGRTY1QTlENUE4N0IxMTJFMjdFODYzNkI3MzY4MzgKK0FGQTZENUFECitFODM2MUQ4NUIzN0FCNkRCMDg1NEIzMTRDQgorRjI1Q0JFRjU3QUZFMDc2ODA3MTMwMDhDRDVDMjlEMzBENTA2ODUzMDVBNDMxQzM3NTE3M0EyQzdGOEZEOTkxOUU5OUIwNDBEQzcxNUVDMTExOUFGMTk4MzUxNTMxQzE4MUFGMjMxQjRFMkY3RDBEQjZBQzU3MkU2RTZCNEY2MEU4NzExMkE4QTAzNzBDQTJBNEMwMEREMTE2RTIxRDMKK0UyQkNGNDc2CiswNjE2OEZEN0I4MTBFMDQ2QTcxMzI0ODE5QworRTg1QUQ1MUNEQTZBREM4MTg4MTdBOUUxQTM1QTA0OThCMDVCQzM2MzBDRDI2Qjc5M0Y1NTBEN0U0RUY3MkI5MDFFODBDQkI3Q0UwMzdCNjNDQzRFMjg3NjYxNDNCNDVCOEVCOUVFMDA0QUM3QjI2MzkwQjM3OTg4Cis2NzUxNjY5RgorMjBFREM0Q0YwNzdCMUU0RDA3MzMzMjcwMjEKK0ZCNzE2Mjg5QUQwMjEwQ0E2N0FBRjJBRTEwQTAyMUZCRDI3QTI3MzEyNTQyQTlDNDBFMkExN0U0REZDODVGM0QwMzQzNUUxRDg1N0M1QTIyQjkwRTlBMDIzN0U3QjQ4NTdDN0NBNDYyOTA5RDMyNjVEQzU1RTAxRDY1QjYzOTZFMjJFQ0E5NDI4MzlDQUU4MDU3RUVDOEVEMjZFRUE3RTc4MjdBMjA4MgorOTc2QUExOEMKK0JDQjQ3Njk5NDMwRUQxNEFGQ0FCQjUxMUQwNjgKK0M5MTgzQkMwOTg0REI4RTI3MTEyRERFODUxNjRBRjdDNDQzQjU4MDg4MTEyODRERkYyODQwMkQyNEU3RDlCOUY2MTk2ODlDQzVBNEVEMDMzMEEwMTAxOTNGODU2RjkyQzRENzFEMDdCMjk5REZBOTBFN0E3OEE4QzAzRDlBOUYyQkQ3N0NEMDI0N0U2OEJEM0IyQ0VDNDg4MURGMDRENjVFMTNGMTJFM0ZERTQxRUIyQkM2RERGQTk1MDU2RUUxRjUzNDlDNjAzMjgzQTMxQkUwRTRGMUUzNUE4NjdCNzEzRTk4MjJECitCRTJCQTcyNQorNkU2NDRDRjVDMUFGQzdEQTk0RkZFRTVCN0YKK0I5RjM0QTMxOTI5NUJFNzY3NEE5NDI2NEIzNkVBNEIwNUM3OTk5RkFEQjJDNjhEMjA2MzgwRkJCQzVGQzY3RkZBNEQ4MDA5NUY3MjA2RUM1MTRDOUJCN0JDOEJBN0Q3NjVBNkY5M0E1NTc3QTEyMjEwNjdFCis4RERFRDYwQQorQUJCQzI1OTFEQkY3RTA2OEM3RTU2OUExQUYKKzdCOTk3RjcyQzA2NEQ4OTlGNzZGRjZFMjYyNzQ3RkI5MDI4RTE2NkZEQzM5MjMzNjY2RUIzMUM1RUUyNEJDNTA3ODQ5RjA1RkQ1QTAyQjE2RUM5Mjg3QUM3RjEzNTRDMTdCNERDMjc4OTg2Rjg3QkZFNjIyMEQwNEJFMzE5RTNCMUMxNTM4NTRFRkQ3QTc2NTEzMUZBQzg0MENDNDQyMjZGM0NDNkRCQTNCRTAKK0YzQTRFRjRFCis0NkY0OUNBNDdBMjAzNDQ2MjQ4MTMwQjU3MUQxCitERTU4RkM2Rjg0NDg5QzlCQUJERkEzMzA0QTM1QzEyOTg4Qzk5REQxMUQ3RDJFMjQ5Nzk2QjJBMDY5MjE2M0UyMDFCNkJEODQwNjQwMEYwQkY5NkM4NDBDMjNEMEFCQzJEODg2N0RFOThGREYzQUNDOEJERjUzMzQ2NkM5NjQxNTRBNDVCOTI0MDdCQjlFM0VBNjg2NTZDMjQ0QTNBOTNGNzg3Qzc1NkM4QTAyRTVGNDYyMDY0OEJEQkQ2MzJGRTVDQTk4NjQ4OAorOEVBNzIwREEKKzNERjc1RDczMDI0QkNDNkYyQTMwQjk4MDZDOUUKKzQxQTU4QUVGMDZDRkY2MThEMDEzNUFBOThCMkFENUVENDhCRjRBQzI5ODFFQjgyRUI2MzM2RDY2QTYwQTc0NjMzNkNBNDdGMTYzRDNDM0UwMjI5MURGOURGRDIwQjBDMDk2RTdEMDdGNDcwN0RCOUIxMDg4OUZDMEE4QzdENzYxRkZCRDQ5RURBNzdFNzBENEI0REExMDMxMzAzQTJCMUQyM0ZBQkQ4M0E0MjZCNDRBMTZCNkVFMEZFRkE2RDg3RDlFNkVGNzAxOTExRjJGMEQ3QjRFQjgyNzVGQTQ0RDQyQTU0MkNDMDMyQTcwQUQ3MTA5MkEKKzY2MDc2MjRBCitGNzg2QTg1MTYwRjE5QkExM0MzOEEyNjM0MUFBCis1QUMyRENFMjkzMDk2QUYyMTJDRDM3M0QzNTEwMTdGODQ1QjVFRjg2N0E0RkQ2QjU5NTdBQzQ0RkExRTVBRUJFOUM1REIyQzlFNTMxMDc4QTAzQjM1QzE2NzM3RTk3NDRFNzQ3MUY0RjFBQjE3MDg3RTU4MzBCQUVENzRBQTM2MEZFMTc4RTc3REFGMzhDMjg4OUVFM0UxRDFBNzNERTI5OEVGQTYyOUI0N0FDNzhFQjZCMTg0MTc5REMxQzBCQUZDMDhBQTk5M0QyMzk5MjE1QkQ2NkQyCiswNTUxMjk3QgorRjREQ0YyMzg4NzBEOEIyQTdDRDkwREE4RjQwOQorOTJFRDlCQ0U4RTg2QkM1OTI3OEMyMDQwODY2RUI1RjEzNDBBQTg5RUQ5MjgyNTEwNkRCNTczMkU4OTU4ODY1MkI0Q0NDNDgxOEIzNjRGNjI0NjUzNzVFM0RFQ0VGNUJEMDUyMUVBNjcwQURCMUQzM0UxOTdEM0QxMEFBMEVBQUFCNDkzNzUwNTNCNTlCQzNDNEM0OTg5Nzg2NEM2QUQwMzAwN0ZDN0JEOEE0OTFCRDg5RjY1RkRFMUM5QUY1MzE2MENBRTg5QUU1MDgxNkFFMDJBMjJGNUYzNDU0QTYyREYyQzU4MjhBMUNCREYzMjZDNUQ3NgorMzBGRUQ1OTEKKzgyNzI0RjIxM0I1RkE2ODk1M0VDNDAyQjZCCitENjhFMkE1MzhCMEUzNzcxMjg3QTU1QjI4MDFGOTI0NENDOENBRTMwMkE4NTkyMjEwQUJEMDU1NjNCRUY2OUFGNzU5MEVCNkUzQTcwQzc0NkRFNjY0MDFCQTVDNDUyMTVFREM4OUI0ODY1RDBBOTI3OEI5MEQ1Mjc3RjBENDBFMTY0RDQwRkIxMDdGODA0NDdFREM0M0MyRDFGQjA5N0M1OEE1ODdERjhBMDZCNDlDRjlFNDkyMzZFOUQ4OEQ3Cis1QzUxNzQ0NgorRkY5QzdGRDczNkE3MzIyNjgxRjFEQUI3QTVBMworMkFERjI4QzEwQjA5RkFFM0Q1RUFCOTIzMjA4OUNDQzhENzQ1RjRBMTU5RDE0ODNGRkE2NEEyRDIxNEQ2NUVDOEFDNEU3ODdDNzAxMkVDRUIxQTFDNzAxRjhBNjdFRTI1Mzc3NjAxNzE4REYxNDEzOEUwQkUyODNGNDI0RkMzRjU5NkJBNDY5RTBDRUJCRkUwMjQ3RTMzQTYyRTdGQUQ5MDVCODhFRjM2NzAwNENGQ0E4MUNENkQzM0Q3NDk1NENDODQ1ODFGMUQKK0I5Q0E5QkJDCis0QjJFQTU3QjY3NTYxQkU4NTVFODA0MjJGNQorQjVCNTZGNkRCRUFBRTc2MkNBNURBRkIwOERCOEIzMkFDMzI0ODdFNzY1M0JDOTBBRkVFRTUzNDAxRkZDMzQxRjZDNEM4MENBRjZFMEUxQ0U3RkNFQTBDNjM0RTJGMDQwQjBFQkQ1RTc1M0QxMDc0NDk4M0MzMzBCOTJDNEQxOTE5QjJCQTQ4MUFGOUVBQTBBRkUKKzgwN0JEREUzCis0MTQ4OEIyMkRENzYxNEZGRENDNjlCQkRBQ0FCCis3MEUxRkYyMEQ3NDFBQTMzNjExQzM0OTZCRkU3MkFCRjgyRDlBQzREM0ZEMTI3OTBDN0IyQjMwODQ2REJGQjBDRUJBMkMyQUI5MkNBMkU3MzRGMkExODBGMjQ1RUU5Q0M5ODAyOUNERTdBMzg0MTk5MzIzRDg3OTIwOTlGNEI2NUIxOEJDNTZFQjA3QTQ5QjZGNzM3NDRDMTVEMTE3NDRGQjQyRUJDN0FEMzdCQTQ4ODgwMjc5NDEzMTNEN0IxRkMwRjZDMDUzQ0QzQjM5QzkxMkFBQjYyMTI0Nzc0QjJEREE2MkE4Q0I4OTVBQTA0NzI1MjUxOTI4QTk2RDQKK0FEQjUKKzEzMTM2MjdFCis1NEUxNDYzMgorM0MxMkM5NTQ1NjVDN0U2NkQ5MDczNUE3RjgxOQorMEI2RDlGRDEzMTFDMjNCNjI0MTBCMjhFNkVBQUVDRUU0MEExOTM2MjcyMkI1NDU2REFDODNEMEQ2QkQ3OUE4RkEwQjM4NDRGMDk1MkEyMUVFQTI3RjY2RTdEMkQ4MjZGQkM2REEyOTQ1NkIxRDc5ODk5NEMyMzhBRTVGQUFGRUNDQjAwRTBGMDI1MkE3RTRBMEVDNjlGRkRDMjhFRUIxOURBNDczQzQwMzY1N0JBN0QzRjAzODMxNURDM0Y3MUM1RkM4OUVEMTVGRTc4MTVGOTVENzAzQzE1CitDQjkzM0RBNgorQzYyNkM0QThGMEU0NDQ0NkEwNDg0RjE3NjgKKzdEMkYzOTAwMUFGNTFBMDU1NTQyREI1ODkzNkVCMjE5OTEwMDQ3ODI0QzkxQzVBOUREM0U4QjYzRjZGMDhGRDM1QjA3NEYwQzc0REYzQkY5Mzk1QTMxNEFBQjQwNUM2MjdCNUE2NUVBQzBCNzRBMjdGRkNBNjRCMTJCMzA3NUNGNjE3Qjc2MDEzRjdBMzQwRDUwRTExODdGQkIxNDFEMUNDNzM1RDIyQ0JGNDJDREZERTE1M0Q3NEMKKzAxRDEwOUIzCiswQkJGMTlCMTg3RTM0NjZBN0NENzQ0MDQyQgorNTY1NzQ2QzJCQjlDREUwMzM0NzNDRjRDNzM3QUU2MThENjI1RjBGOUY5MUIwMEM5M0FGOUYzOUYwQjA4NTA0MzQ3ODZCMzMwRDlFQkZERjgxMzhCQTU2QTU1REVCRDBEMzJGNDNFNTU4NUY0MzJFRDYzOEUxMjFGMzMyMzAxMDk5NzBGMjQ5MzkzQzg2NjA5Mzc3MzE5Njg4OTU4RDYyMjY0NDk2Nzg0NkIzOTUwM0QzMjgxMDRBOEI1Cis4QThERDREMgorMkM3QzE3ODVCQjBERTM1QjM5NzIwNzRFMUMKKzk1RjRBNEI3Q0NCNDhBMzY2QkMzNzI4RjkwOEJEQjYzODMyMDA1OUM4QzA5MzFBQUEzQTk3MUU0MTNBREU5RERBRjk5RDVCQUNCQTM1MjRFNjI2NUFCMUEwRUMxN0E5Mjg0NkU4QjM2NDNBRDhCNjlERURDREFCNUMyMjlBMUVGQjRGQUMwNDFDQTU2NDQwMkMwRDgzNERGODRCMgorMzgwMTFENDEKK0YxNDAzRTIwNDMxMDRCOTRFMjYxNkI1NUIxCisxNDc1MjVFM0I5Q0VBQ0U4QzU0MEQ5NTQ3MDA3MUIxQzdENkU0MjVFN0I5OTNFM0M1NjAwM0FCQkE3OTM4ODJBQUZGN0I4NzVFNDNFMzE1NDA3OEY3OTkwMjZBQUI3OTVDRjNEM0NERAorNkExMTRGMEUKKzQ0RDZGRjlBNTRBRUMzQjBGQzMzMjQyRjBEOUMKK0MwMkYxQkVERjI2QjNEQjEzQ0Q5NDNFODk4MDhBMDAyNTY3OTc5ODU1RjVBMzRGMEM1QTkwOUUyQUY5M0ZDMUY5RDM5MTQyMjRCODE5RTUwNEEwRDc5NEJENjA4NUI4MUJCMzRBOUE4MzhFMUU0NjI1NzVCRjM2QUVGN0NFMTYwMzRCMTA0REUzRjYzOEUwNEYyQUUxQUU5NTdEQzAzN0E2QjhFM0RCMjhDOTBGNjc2RTU4NkFGNTVCRkZBMEE1NUNGMUQxOUM5NTQyMDkwCisyMDk3NzhBOQorQkIzODE0RTE3QkIzODQxMDFGRjVCNDRCMDEKKzZCNzdBMTE4M0ZDMkQ0OUQ5NEQ4OENGOUYwOTVCMTBFOTkxQkYzQTRCQ0EzMjgwQzkxNzgwNTdFOUE1Q0ZFMzcyMkFFNTFDM0MyQUM3MTNBOTY3M0NBMjQ1Njk2RkIxNkFFODBENUYzMTAwRkQwMjU3NkUxMTUxM0ZFRTREMkU0RTYxNzAzQkZBNTk0CitGQ0YxODUzNQorRTZFMTk1MUNDNjk5NjhEMzY3NzJFNDY2NTRFNgorNEJDOUIyRjNDRjI0QjJBNTM5NEFGM0IyMTVFRDE3Nzg1REEzMDI4QkY5OEFDOEI2OTA3Q0VENjYzQTgzQjZFNjUwQzI1MDVEN0Y1NDIwQUFCOUE1NUQwNTREMkE3QkNDQjhCNDhBMzcxNDJFN0I3MTUwRjhDQzc2NjE3MUNGRDdGQ0ZGMDc2QkVFNUZFM0U5MDkyNzE4M0FGNENGM0NEOUIwODY3NDIxMUZCNjY1NTA2NDNBMDQ0MkE2ODc1ODgwMDlFODA5NjQ4MzNDNTIyOTcyQzE0QzFFQzUzOEVGNDAwNQorODI2NTc4NjAKKzYxQUREN0RBRUQ4QjE0Q0Q1RDhCMkNGMkVECitFNTFGODEzODg5N0U2MUMxMjUyMEQ3NDlDOUZEOEE3MjQzQkNBOEI5NjUyMzhEQjNFMDIxNTY2MzRGRTJGOEE4RkNERkI0MDE4Q0Y1REZGOEUwRUI2NkU4OEQzODdDNzY5Q0RDNEEyMDUyRjIwNDc3NTRCNTk2ODczNTkyQUJDODdFN0FDMTM5MkNFODk2Q0EzNkU2NjYxMTc5Mzg2RDBFQUIzNzU4ODg5MzkwRUIwNDgyCitBMUUwMDc4NgorQjZBRjg1MkI0QTRCNzYwQjMyMzI1QTkzMkEzQgorNTcxMzYxMzE5RUJFN0Q1NDg4NTdBNUEzNjgxQTkwNzQ5RkQ1Njk1RjM0NjRENzI3QTU5MDhERkNGQTBCRTA4NDM1RDc5RjMwMDEzRkRBNDZEMTVFMjQ5OTNCNjgzNTY3Q0U2NDI4Njg1M0FCNEZFMzlGRjEzQzY3MkY4RTU4RDYwQkIxMkRGOTE4OEUzMzU0MkEzRDkzNzQ0RkY0OTJENUJCOTA3NDc5M0ZGRjVEMUY2NDA0NEY4RTY2N0UxQkU0ODVCQzIwMkFEMzIyRkE4ODkwRDhDODZFNDRCOEQ3Nzk3MDVFRjkzNUMyMTFEMEI1QjAKKzUyRUY5QjY0CitDQjZDRkU0MURBODcxNkU2OTQwOEU0RkIzRgorREEzMzAzRTYxRUZGRkZGMzZCRkU4MjUzNzNDODFERkI3RkMzQjkxMjYzRkEwNjY5NzhGRkY5QkRDNkVFNkIyQThBQzI5QTZERDY4NTA0RkFGNTlBQkE0Qzg4RDRDRDY3NTUwRjRBOUE0OTFFMTJDNDBGOTdERDA3MjhCNzU4MjE1REZGNDIyRAorMTY0N0Q3OUUKKzkxRTBGNjQ1Qzg3MzlGMTgwRDhCNEI0Njc1CitFNTk4NjM5RjkyNDgyOTlFNzhDOEM5MjNCMjEzQkQ3RkU2QkFDODFENUY1MDVEMEY5NzExREYwMzU2MDY1OURENEIyRkM4RTVGMDJBQzc5RTQ1MjAxOTc0QkYxQjRCNTlCMjQzNDk4Q0QwNUU3OTgxRjM1QzdCN0IwRjBFQzhCRjA2QzAwQUZDMDgzMjlFNEJGRjcyQzA3RkYxMkJBNDEzNjJCMTQwRTRGMjg2MzE5N0Y3NkRDNEY3CitDQjhGRjVEOQorQTBFOEVFOEFEMDU3OTA2NTk4QjdFRUFENTIxOAorMzc2QjY3OTU4QTRBMDBDNUU1MTZFQUMzNzgyQkExQTU1QjI3NTY3RjgxN0I4REZGOUNFNTM2Mjk1RkZDRjM2MUYyRDQ4RkU5RDY1MzY5N0FFMUEyRjUwNDNEN0U0QzI1MDk1RjdCMDY4QkRGNzAxRTI1QjZCQzJENEYwQ0ZDNkM1REFGMzNCQUZEMUNGOEQ3RjJDNUE5M0Q0NkJCOTQwOEI1NTZFMUU2MTk1OTY4ODlDRjVDN0QwRkE5MUU0MjE1QzVCMTRBNUY2RUZEREFENzk0QzQxMkI3MEIzNEM3NTY5N0Q0MTJCNDJBMkNDRDBEQkZGMTM2NzkyODlGCiswOUU0Cis0QkVDQ0VGNUIzNzg3NUMxMUExMEZGRDQ3OTdGMEFBRkNGNDQxOTJCRDMzMgorQTQ3RjBFMDQKKzQ4ODJCQjI2MkVGQjhDMjU1QTQzREM1MzNBNTcKKzVCMzJFNkE5MjVDMkU0QTUKKzQzN0ZBNjA5CitENzM1Q0FGM0VEMzY4MTVBN0I4RTI4MkE0MzM3QjcxRjFGRTg1MzQ4MjYxRUQwMzYzNDg5NkVGQjExOEQyMjc4RUFDNQorRjdEMUU4NjY3RTU5OUIwMDM4MEM0N0ExNEUzMzAyMzUyQjkxNzU0NUJEMDM1OTEyQ0VCOTIyREFBREJGRDI0NzVFRjEwQTQxQzlENworNTMwNDNDMDJBRjk2NDRGMTk1ODFDMUM2ODcyQUJBQ0U2RjVEOUU5QUFBODcyNEQ4MjYyNDNFCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitjbGVhcnRvbWFyaworJURlZmluaW5nIGZvbnQgUFNPc3ltY2xhcworJSFGb250VHlwZTEtMS4wOiBQU09zeW1jbGFzCisxMCBkaWN0IGJlZ2luCisvRm9udE5hbWUgL1BTT3N5bWNsYXMgZGVmCisvUGFpbnRUeXBlIDAgZGVmCisvRm9udFR5cGUgMSBkZWYKKy9Gb250TWF0cml4IFswLjAwMTAwMCAwIDAgMC4wMDEwMDAgMCAwXSByZWFkb25seSBkZWYKKy9FbmNvZGluZyAyNTYgYXJyYXkKKzAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgorZHVwIDEgL0MwMDY5IHB1dAorcmVhZG9ubHkgZGVmCisvRm9udEJCb3ggWzEwNiA0NSA3NzUgNzEzXSByZWFkb25seSBkZWYKK2N1cnJlbnRkaWN0IGVuZAorY3VycmVudGZpbGUgZWV4ZWMKK0Q5RDY2RjYzM0I4NDZBOTg5Qjk5NzRCMDE3OUZDNkNDNDQ1QkM3QzhBOTU5QTM5QTMyRTlEQ0U3RkFFRjE3RUUzQkVDOUYKKzUwRTFBNkZDQTY1MUZDNEIzNzY5QTBBOTEwNDE1NTc1MDJFMjVBNUQ2MTgwRkUyNUEzRDExQkYwNzlFMURGNjZFNTRFRTlCN0MyMjlBRjg5MTczOTcwN0EyQTBFQzE0MDMwNkI1RTQzRTUyQjc5QkZCODlFNDU5RTUwCis2RUM2RjYxMEE3MDc3NUEzMUM0NjA5NzZDNEY3OTQ0OUQ4NkU1N0FDRTQ5MUU1QzZCRjIwQ0M0MzA3QjFEQUY3NjMwMjUyCitFOUFGOENGQjY5QjUwRURBRTlEMzZBNjEwNEFGRUY4ODMyRjkyMEZEMjM0NkIyQzcxMDRDRDExRTNCRUU5OTlDRkE5RjVBCis0OURCMzE3M0VFNDhEMUM4Mjk5NDIzN0YzNjA0MDdCMDIyRTBCNAorNTAyRTk0RUE4QjQ5MzY1MUVGMkQwM0YwQjUxM0Q2NTUwNDc1NjgzMjVCNTEyQUU2Cis2QUM2RjUzRjM4NDhDRjcwREUyNTQ4MUNDNjVEOEIxQTU3OTNBQQorM0M0MjgyRDExMTExMkJFRTI4QUZDQTdBMzgwOEQ0NDQ0QzQ2NjlDQQorODRFQUFBRjk4OTIxOUY1MUFCMzQ3NkExQjBCNUYyMjQ2QkMzMDZFNgorNjI1QzY2NzlDNDE3RUQyQThFOUJEMDEwREUzN0Q0MDI2NTA3NEMyNjg0MjY4RjE2MTk1NDg5NjQ4OTkzQjlDNEQzQjUzNEZBODg3QworREVGNjA1RkE4N0I5OTFGNEQyMEE4Rjc4REFDRQorNUE1NEMwNzBFMDNENUM1OUQ5RDJEM0UwNkIwOUNFRTAyOEQ2OEI2MkFCM0FFQzQzQzFERDIwQkE3MEQyODg1OTdEOUJEOEUwNjgxOEZGNzY0RUJBQjQzNjcyMzk4OEU4RDdDQTU5RTE2RDM5MDMyNTE2QkZDNUQ1NTJBQ0RFRUM2QkU5MzhCRUYyRjQzQ0ZGQkM4MTFDMzYyNkM0REY1RjhDRjA4MDY3NjUyMEI1MUM2MENFREFEMUZFNkM5MkQxNDMxQzcwMjE3NENFNTE3QThGQTkzNzdEMDc1QTBCNjgzM0RBQjEwMURCNjUzOTdGMTQxOUVGNUYwMDE2CiswMDRGCis2RjA4MjRGOTY1N0JCNEYxQzhGOTgxNzA5OTU2ODY1RjY4NTVFRkFFCis5MjQyQUQ1NQorOTFCQkJFRTE2M0Q4NDREREE4OTRFMTMxOTBDOQorMjQ4MDQzOUU0QzcxQ0FEQQorQkQwNDNBOUIKK0EzMTVDQUY3MjY1MkFBN0ZFNkRCMkU4NEQ4MkE2MTExQ0U0REU5MEMwMkRBMEFGRkUyNjIwOTIyMjYyQTQ1QUI0RUQwCitFRUM5RjQ1MjBERDEyNzAzNDQyRjdEMDI4RDQ1MjZCRDhCNzcxRTA5RkJFMTFCMjc0OUUyRDM5MDY4OTRFOEQ0QkZEM0YzNzlGMTRDCiszQzg3NEY1NTA2MDY5NjVFMjJGRTQ4N0IyNDdCNUMyRDA2NzI4NDkwQzhGMkEzQjU4OENERkMKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2NsZWFydG9tYXJrCisvRFBJeCAxMjcwIGRlZiAvRFBJeSAxMjcwIGRlZgorNzIgRFBJeCBkaXYgNzIgRFBJeSBkaXYgbmVnIHNjYWxlCiswIC0xMzk3MCB0cmFuc2xhdGUKKzEuMDAgMS4wMCBzY2FsZQorL3dzdDpkdXRjaDEyIDEyLjAwIC9QU093c3RkdXRjaCBuZXdGb250IGRlZgorL3dzdDpkdXRjaDEyYiAxMi4wMCAvUFNPd3N0ZHV0Y2hiIG5ld0ZvbnQgZGVmCisvd3N0OmR1dGNoMTRiIDE0LjAwIC9QU093c3RkdXRjaGIgbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxMCAxMC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKy93c3Q6ZHV0Y2gxNCAxNC4wMCAvUFNPd3N0ZHV0Y2ggbmV3Rm9udCBkZWYKKyUlSW5jbHVkZVJlc291cmNlOiBmb250IEhlbHZldGljYQorL3dzdDpoZWx2cHMxMCAxMC4wMCAvSGVsdmV0aWNhIC93c3Q6aGVsdnBzIElMRW5jb2RpbmcgMCBkZWNsYXJlTkZvbnQgZGVmCisvc3ltOmNsYXMxMCAxMC4wMCAvUFNPc3ltY2xhcyBuZXdGb250IGRlZgorJSVFbmRQYWdlU2V0dXAKK0dTCiswIDEzOTc4IDEwODAxIDEzOTc4IDEwODAxIDAgMCAwIGNscAord3N0OmR1dGNoMTQgU0YKKzAuMDAgMC4wMCAwLjAwIDEuMDAgc2V0Y215a2NvbG9yCis8MTYyMTJmMmIyMTJkMjIwZDAxMGYwMTEwMjEyOTFmMjQyODFkMmQyNjAxMjIyYTJkMDExNTIxMWQyZTMwMmQyNTI5MjMwMTE2MjEyZjMyMmEyZDI2MDExOD4gMjIwNyA1NTggMCA3Mzg0IC0xIHMKKzwyMTJkMjIyYTJkMjgxZDI5MWYyMT4gNzM3NSA1NTggMCA4NTkzIC0xIHMKK3dzdDpkdXRjaDEwIFNGCis8MGIwYz4gOTM0NiAxMzM4NSAwIDk1MjIgLTEgcword3N0OmhlbHZwczEwIFNGCis8NGU2NTc0NzA2NTcyNjYzYT4gMTMyMiAxMzI2NyAwIDE5NDkgLTEgcworPDIwNTI2NTc2Njk3MzY5NmY2ZTIwMzIyZTMxM2IyMDQzNmY3MDc5NzI2OTY3Njg3NDIwPiAxOTQ5IDEzMjY3IDQgMzg2OCAzMiBzCitzeW06Y2xhczEwIFNGCis8MDE+IDM4NjggMTMyNjcgMCA0MDE5IC0xIHMKK3dzdDpoZWx2cHMxMCBTRgorPDIwMzEzOTM5MzNiMTMxMzkzOTM1MjA0ODY1Nzc2YzY1NzQ3NGIxNTA2MTYzNmI2MTcyNjQyMDQzNmY2ZDcwNjE2ZTc5PiA0MDE5IDEzMjY3IDMgNzEzMyAzMiBzCit3c3Q6ZHV0Y2gxNGIgU0YKKzwxMTFlMWUxODFjMTcxYTIzPiAxMjcxIDE0NTggMCAyMjgzIC0xIHMKKzwwMDExPiAyMjgzIDE0NTggMSAyNTA2IDAgcworPDA3MDAxMzE4MjExZTE4MWYxOTAwMWQxYzAwMTMxNT4gMjUxNSAxNDU4IDMgNDE3NSAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MTYyMTJmMmIyMTJkMjI+IDEyNzEgMjA4NiAwIDE5ODAgLTEgcworPDAwMjUyZTAwMjkyYTJmMDAyZDMwMjkwMDJjMzAyNTJmMjEwMDJmMjQyMTAwMmUxZDI4MjEwMDJhMjkwMDE2MWEwMDFkMmUwMDI1MmYwMDI1MmUwMDMwMjkyMDIxMmQwMDFiMjkyNTMzMDgwMDFhMjQyMTJlMjEwMDIwMjUyMjIyMjEyZDIxMjkxZjIxMmUwMDJlMmYyMTI4MDAyMjJkMmEyODAwMWQ+IDE5ODAgMjA4NiAxOCA5NTMxIDAgcworPDA0MmIyMTJkMWYyMTI1MzEyMTIwMDU+IDEyNzEgMjMzMCAwIDIzMDggLTEgcworPDAwMjcxZDFmMjYwMDJhMjIwMDFmMjEyZDJmMWQyNTI5MDAyZTIxMmQzMTI1MWYyMTJlMDAyYTIyMDAxYjI5MjUzMzAwMDcwMDI5MWQyODIxMjczNDAwMmYyNDIxMDAyNTI5MjEyZjIwMDgwMDFhMjQyMTAwMjcxZDFmMjYwMDJhMjIwMDI1MjkyMTJmMjAwMDJlMzAyYjJiMmEyZDJmPiAyMzA4IDIzMzAgMTUgOTUzMSAwIHMKKzwyODIxMWQyOTJlPiAxMjcxIDI1NzUgMCAxODUyIC0xIHMKKzwwMDJmMjQxZDJmMDAyOTIxMmYyZTIxMmQzMTIxMmQwMDI4MzAyZTJmMDAxZTIxMDAyZDMwMjkwMDIxMzMyYjI3MjUxZjI1MmYyNzM0MDAyMjJhMmQ+IDE4NTIgMjU3NSA3IDUzNTggMCBzCis8MDAyMTFkMWYyNDAwMjUyOTMxMmExZjFkMmYyNTJhMjkwMDJhMjIwMDI5MjEyZjJiMjEyZDIyMDgwMDE3MjkyMTAwMmUyNTI4MmIyNzIxMDAyODIxMWYyNDFkPiA1MzU4IDI1NzUgNyA5NDYxIDAgcworPDM2PiA5NDYxIDI1NzUgMCA5NTMxIC0xIHMKKzwyOTI1MmUyOD4gMTI3MSAyODIwIDAgMTcwMCAtMSBzCis8MDAyZjJhMDAyZTFkMzEyMTAwMmYyNTI4MjEwMDI1MmUwMDJmMmEwMDMwMmUyMTAwMmYyNDIxMDAzNTIyMmEyZDAyMDAyMjMwMjkxZjJmMjUyYTI5MWQyNzI1MmYzNDAwMmEyMjAwMmYyNDIxMDAxNTE5MDcxMTE3MTkwMDFmMmEyODI4MWQyOTIwMDAyZTI0MjEyNzI3MGQ+IDE3MDAgMjgyMCAxNCA4NzM5IDAgcworPDAzPiAxMzk4IDMxNjcgMCAxNTA0IC0xIHMKK3dzdDpkdXRjaDEyYiBTRgorPDAwMTkxZDFmMDAwMjFhMDAxYTFjMDAwMzBhMDAwYjAwMGMwMDA3MDcwNzAwMTMwNDAwMTcxZDAwMWMxODIxMjAxODFmMjIxODFmMDAwNjFlMDAwYTBiMTAwZjBlPiAxNTA0IDMxNjcgMTIgNTUwNiAwIHMKK3dzdDpkdXRjaDEyIFNGCis8MzIyNDI1MWYyND4gMTI3MSAzNTEzIDAgMTc5NyAtMSBzCis8MDAzMjI1MjcyNzAwMmQzMDI5MDAxNjAwMjkyMTJmMmUyMTJkMzEyMTJkMmUwMDI1MjkwMDJlMzAxZjFmMjEyZTJlMjUyYTI5MDYwMDJhMjkyMTAwMWQyMjJmMjEyZDAwMmYyNDIxMDAyYTJmMjQyMTJkMDgwMDFjPiAxNzk3IDM1MTMgMTEgNjk3NSAwIHMKKzwyYTMwMDAxZjFkMjkwMDJmMjQyMTI5MDAyZDMwMjkwMDE2MDAyZTMwMWYxZjIxMmUyZTI1MzEyMT4gNjk0OSAzNTEzIDUgOTUzMSAwIHMKKzwyNTI5MmUyZjFkMjkxZjIxMmU+IDEyNzEgMzc1OCAwIDIwOTUgLTEgcworPDAwMmEyMjAwMjkyMTJmMmIyMTJkMjIwMDJhMjkwMDJhMmYyNDIxMmQwMDJlMzQyZTJmMjEyODJlMDAxZTIxMjIyYTJkMjEwMDI0MWQzMTI1MjkyMzAwMmYyYTAwMmQyMTA3MmQzMDI5MDAyOTIxMmYyZTIxMmQzMTIxMmQwMDI4MWQyOTMwMWQyNzI3MzQwODAwMTQyMjAwMzQyYTMwMDAxZDJkMjE+IDIwOTUgMzc1OCAxNCA5NTMxIDAgcworPDMwMmUyNTI5MjM+IDEyNzEgNDAwMyAwIDE3NDUgLTEgcworPDAwMmUxZjJkMjUyYjJmMmUwNjAwMzQyYTMwMDAyODFkMzQwMDMyMjUyZTI0MDAyZjJhMDAyNTI5MmYyZDJhMjAzMDFmMjE+IDE3NDUgNDAwMyA2IDQ3MTEgMCBzCis8MDAyZTJhMjgyMTAwMjAyMTI3MWQzNDJlMDAxZTIxMmYzMjIxMjEyOTAwMjUyOTIwMjUzMTI1MjAzMDFkMjcwMDI1MjkzMTJhMWYxZDJmMjUyYTI5MmUwMDJhMjIwMDI5MjEyZjJiMjEyZDIyMDg+IDQ3MTEgNDAwMyA3IDk1MzEgMCBzCis8MTIzMzJiMjEyZDI1MjgyMTI5MmYxZDJmMjUyYTI5PiAxMjcxIDQyNDggMCAyODAxIC0xIHMKKzwwMDI0MWQyZTAwMmUyNDJhMzIyOTAwMmYyNDFkMmYwMDE2MWEwMDI4MWQzNDAwMjkyYTJmMDAxZTIxMDAxZDFlMjcyMTAwMmYyYTAwMjMyMTJmMDAyZjI0MjEwMDI5MjEzMzJmMDAyOTIxMmYyZTIxMmQzMTIxMmQwMDJkMzAyOTI5MjUyOTIzMDAxZTIxMjIyYTJkMjE+IDI4MDEgNDI0OCAxNSA5NTMxIDAgcworPDJmMjQyMT4gMTI3MSA0NDkzIDAgMTU2MSAtMSBzCis8MDAyOTIxMzMyZjAwMjkyMTJmMmIyMTJkMjIwMDFmMmEyODIxMmUwMDFkMjcyYTI5MjMwODAwMGYwMDJiMWQzMDJlMjEwMDJhMjIwMDJmMzIyYTAwMmUyMTFmMmEyOTIwMmUwMDJhMmQwMDJlMmEwMDJlMjQyYTMwMjcyMDAwMWUyMTAwMmUzMDIyMjIyNTFmMjUyMTI5MmYwOD4gMTU2MSA0NDkzIDE0IDg0ODEgMCBzCis8MTQyMj4gMTI3MSA0ODM5IDAgMTQyMiAtMSBzCis8MDAzNDJhMzAwMDMyMjUyZTI0MDAyZjJhMDAyZDMwMjkwMDFmMmEyOTFmMzAyZDJkMjEyOTJmMDAyNTI5MmUyZjFkMjkxZjIxMmUwMDJhMjIwMDI5MjEyZjJiMjEyZDIyMDYwMDI1MmYwMDI1MmUwMDI5MjExZjIxMmUyZTFkMmQzNDAwMmYyYTAwMWYyYTI4MWUyNTI5MjEwMDJmMjQyMTAwMzUyMjJhMmQwMjAwMWQyOTIwPiAxNDIyIDQ4MzkgMTYgOTUzMSAwIHMKKzwzNTJlMmYxZDJkMmYwMj4gMTI3MSA1MDg0IDAgMTg3NCAtMSBzCis8MDAxZjJhMjgyODFkMjkyMDJlMDAyYTIyMDAyZjI0MjEwMDE1MTkwNzExMTcxOTAwMWYyYTI4MjgxZDI5MjAwMDJlMjQyMTI3MjcwODAwMTcyOTAwMmYyNDIxMDAyZTM0MmUyZjIxMjgwMDJkMzAyOTI5MjUyOTIzMDAyOTIxMmYyZTIxMmQzMTIxMmQwMDM0MmEzMD4gMTg3NCA1MDg0IDEyIDk1MzEgMCBzCis8MzIyYTMwMjcyMD4gMTI3MSA1MzI5IDAgMTgyMCAtMSBzCis8MDAyMTI5MmYyMTJkMGU+IDE4MjAgNTMyOSAxIDI0MDcgMCBzCis8MDM+IDEzOTggNTY3NiAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAxOTFkMWYwMDAyMWEwMDFhMWMwMDAzMGEwYjEwMGYwZTAwMGEwYjEwMGYwZjAwMDcwNzA3MDAwYTBiMTAwZjBlMDUxMzA0MDAxNzFkMDAyMDIxMTYxZjIxMDAwODEyMDAxYzE4MjEyMDE4MWYyMjE4MWYwMDA2MWUwMDAyMWE+IDE1MDQgNTY3NiAxMyA3MzQwIDAgcword3N0OmR1dGNoMTIgU0YKKzwzMjI0MjUxZjI0PiAxMjcxIDYwMjIgMCAxNzk3IC0xIHMKKzwwMDMyMjUyNzI3MDAyZDMwMjkwMDE2MDAyYjFkMmQxZDI3MjcyMTI3MDAyNTI5MmUyZjFkMjkxZjIxMmUwMDJhMjIwMDJmMjQyMTAwMjkyMTJmMmUyMTJkMzEyMTJkMDYwMDIxMWQxZjI0MDAzMjFkMjUyZjI1MjkyMzAwMWQyZjAwMmYyNDIxMjUyZDAwMmEzMjI5MDAyYjJhMmQyZjAwMjkzMDI4MWUyMTJkMDgwMDFhMjQyMT4gMTc5NyA2MDIyIDE2IDk1MzEgMCBzCis8MmIyYTJkMmY+IDEyNzEgNjI2NyAwIDE2NTMgLTEgcworPDAwMjkzMDI4MWUyMTJkMmUwMDM0MmEzMDAwMzAyZTIxMDAxZDJkMjEwMDMwMmIwMDJmMmEwMDM0MmEzMDA2MDAxZTMwMmYwMDJmMjQyMTM0MDAyODMwMmUyZjAwMjgxZDJmMWYyND4gMTY1MyA2MjY3IDExIDY0NDEgMCBzCis8MDAyZjI0MmEyZTIxMDAzNDJhMzAwMDMwMmUyMTAwMjUyOTAwMmYyNDIxMDAyNTI5MzEyYTFmMWQyZjI1MmEyOTAwMmEyMj4gNjQ0MSA2MjY3IDcgOTUzMSAwIHMKKzwyOTIxMmYyYjIxMmQyMjA4PiAxMjcxIDY1MTIgMCAxOTg2IC0xIHMKKzwwMDEzPiAxOTg2IDY1MTIgMSAyMTUzIDAgcworPDJhMmQwMDIxMzMxZDI4MmIyNzIxMDYwMDI1MjIwMDM0MmEzMDAwMWQyNzJlMmEwMDMyMWQyOTJmMjEyMDAwMmYyYTAwMmQzMDI5PiAyMTQ1IDY1MTIgNyA1MzcxIDAgcworPDAwMTYwMDJiMWQyZDFkMjcyNzIxMjcwMDI5MjEyZjJiMjEyZDIyMmUwMDA0MmIyMTJkMjQxZDJiMmUwMDJmMmEwMDI4MjExZDJlMzAyZDIxMDAxZDIzMjMyZDIxPiA1MzcxIDY1MTIgNyA5NDYxIDAgcworPDM2PiA5NDYxIDY1MTIgMCA5NTMxIC0xIHMKKzwyMzFkMmYyMTAwMjcyYTJhMmIxZTFkMWYyNjAwMmIyMTJkMjIyYTJkMjgxZDI5MWYyMTA1MDAzNDJhMzAwMDMyMmEzMDI3MjAwMDIxMzMyMTFmMzAyZjIxMDAyZjI0MjEwMDIyMmEyNzI3MmEzMjI1MjkyMzAwMjUyOTAwMWQyOTJhMmYyNDIxMmQwMDE1MTkwNzExMTcxOTAwMWYyYTI4MjgxZDI5MjA+IDEyNzEgNjc1NyAxMSA5NTMxIDAgcworPDJlMjQyMTI3MjcwZD4gMTI3MSA3MDAyIDAgMTc0NyAtMSBzCis8MDM+IDEzOTggNzM0OCAwIDE1MDQgLTEgcword3N0OmR1dGNoMTJiIFNGCis8MDAxOTFkMWYwMDAyMWEwMDFhMWMwMDAzMGEwYjEwMGYwZTAwMGEwYjEwMGYwZjAwMDcwNzA3MDAwYTBiMTAwZjBlMDUxMzA0MDAxNzFkMDAyMDIxMTYxZjIxMDAwODEyMDAxYzE4MjExZTE4MWYxOTAwMDYxZTAwMDIxYTAwMDAwNjE0MDAwOTAwMDYyMjAwMDkwMDA2MWIwMDBiMGQwOT4gMTUwNCA3MzQ4IDIwIDg4NzQgMCBzCit3c3Q6ZHV0Y2gxMiBTRgorPDFkMjkyMD4gMTI3MSA3Njk1IDAgMTYwOCAtMSBzCis8MDAyZjI0MjEyOTAwMjgxZDI5MzAxZDI3MjczNDAwMmYxZDFlMzAyNzFkMmYyMTAwMmYyNDIxMDAyZDIxMmUzMDI3MmYyZTAwMDcwMDFkMjIyZjIxMmQwMDFlMjEyNTI5MjMwMDFmMjEyZDJmMWQyNTI5MDAyZjI0MWQyZjAwMWQyNzI3MDAyZjIxMmUyZjJlMDAyMjI1MjkyNTJlMjQyMTIwMDAxZjI3MmEyZTIxMjczNDAwMmYyYT4gMTYwOCA3Njk1IDE1IDk1MzEgMCBzCis8MmEyOTIxPiAxMjcxIDc5NDAgMCAxNjA4IC0xIHMKKzwwMDFkMjkyYTJmMjQyMTJkMDg+IDE2MDggNzk0MCAxIDI0MjIgMCBzCis8MTYyYTI5MjE+IDEyNzEgODI4NiAwIDE3NzEgLTEgcworPDAwMmEyMjAwMmYyNDIxMDAyZTFmMmQyNTJiMmYyZTAwMmIyZDJhMzEyNTIwMjEyMDAwMzIyNTJmMjQwMDI5MjEyZjJiMjEyZDIyMDAyNDFkMzEyMTAwMWUyMTIxMjkwMDJiMmEyZDJmMjEyMDAwMmYyYTAwMTUxOTA3MTExNzE5MDAxZjJhMjgyODFkMjkyMDAwMjIyNTI3MjEyZTAwMjIyYTJkPiAxNzcxIDgyODYgMTQgOTUzMSAwIHMKKzwyZjI0MjE+IDEyNzEgODUzMSAwIDE1NjEgLTEgcworPDAwMGEwODA5MDAyZDIxMjcyMTFkMmUyMTA4MDAwZjI5MzQwMDFkMmUyZTI1MmUyZjFkMjkxZjIxPiAxNTYxIDg1MzEgNCAzOTExIDAgcworPDAwMzQyYTMwMDAyODI1MjMyNDJmMDAxZTIxMDAxZDFlMjcyMTAwMmYyYTAwMmIyZDJhMzEyNTIwMjEwMDI1MjkwMDJmMjQxZDJmMDAxZDJkMjExZDAwMzIyYTMwMjcyMDAwMWUyMTAwMjMyZDIxMWQyZjI3MzQwMDFkMmIyYjJkMjE+IDM5MTEgODUzMSAxMyA5NDYxIDAgcworPDM2PiA5NDYxIDg1MzEgMCA5NTMxIC0xIHMKKzwxZjI1MWQyZjIxMjA+IDEyNzEgODc3NiAwIDE4MTcgLTEgcworPDAwMWUzNDAwMmYyNDIxMDAxZDMwMmYyNDJhMmQyZTA4PiAxODE3IDg3NzYgMyAzMjExIDAgcworR1IKK2VvcAorJSVQYWdlVHJhaWxlcgorJSVQYWdlUmVzb3VyY2VzOiBmb250IEhlbHZldGljYQorJSVQYWdlUHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlUGFnZUN1c3RvbUNvbG9yczoKKyUlVHJhaWxlcgorSWxlYWZfNi4wLjAgL3Rlcm1pbmF0ZSBnZXQgZXhlYworJSVQYWdlczogMzUKKyUlRG9jdW1lbnROZWVkZWRSZXNvdXJjZXM6IGZvbnQgQ291cmllcgorJSUrIGZvbnQgSGVsdmV0aWNhCislJURvY3VtZW50U3VwcGxpZWRSZXNvdXJjZXM6CislJURvY3VtZW50UHJvY2Vzc0NvbG9yczogQmxhY2sKKyUlRG9jdW1lbnRDdXN0b21Db2xvcnM6CislJUVPRgpkaWZmIC0tZ2l0IGEvZG9jL25ldHNlcnZlci5tYW4gYi9kb2MvbmV0c2VydmVyLm1hbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjcyODI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL25ldHNlcnZlci5tYW4KQEAgLTAsMCArMSw4MCBAQAorLlRIIG5ldHNlcnZlciAxICIiCisuU0ggTkFNRQorCituZXRzZXJ2ZXIgXC0gYSBuZXR3b3JrIHBlcmZvcm1hbmNlIGJlbmNobWFyayBzZXJ2ZXIKKworLlNIIFNZTk9QU0lTCisKKy5CIG5ldHNlcnZlcgorWy00XQorWy02XQorWy1kXQorWy1oXQorWy1MIG5hbWUsZmFtaWx5XQorWy1wIHBvcnRudW1dCitbLXYgdmVyYm9zaXR5XQorWy1WXQorCisuU0ggREVTQ1JJUFRJT04KKy5CIE5ldHNlcnZlcgorbGlzdGVucyBmb3IgY29ubmVjdGlvbnMgZnJvbSBhCisuQiBuZXRwZXJmCitiZW5jaG1hcmssIGFuZCByZXNwb25kcyBhY2NvcmRpbmdseS4KK0l0IGNhbiBlaXRoZXIgYmUgcnVuIGZyb20KKy5CIGluZXRkCitvciBhcyBhIHN0YW5kYWxvbmUgZGFlbW9uICh3aXRoIHRoZSAtcCBmbGFnKS4gSWYgcnVuIGZyb20KKy5CIGluZXRkCit0aGUgLXAgb3B0aW9uIHNob3VsZCBub3QgYmUgdXNlZC4KKworLlNTIE9QVElPTlMKKy5UUAorLkIgXC00CitVc2UgQUZfSU5FVCAoYWthIElQdjQpIGFkZHJlc3NpbmcgZm9yIHRoZSBjb250cm9sIGFuZCBwb3NzaWJseSBkYXRhCitjb25uZWN0aW9ucy4KKy5UUAorLkIgXC02CitVc2UgQUZfSU5FVDYgKGFrYSBJUHY2KSBhZGRyZXNzaW5nIGZvciB0aGUgY29udHJvbCBhbmQgcG9zc2libHkgZGF0YQorY29ubmVjdGlvbnMuCisuVFAKKy5CIFwtZAorSW5jcmVhc2UgdGhlIHF1YW50aXR5IG9mIGRlYnVnZ2luZyBvdXRwdXQgZGlzcGxheWVkIGR1cmluZworYSB0ZXN0IChwb3NzaWJseSBhdCB0aGUgZXhwZW5zZSBvZiBwZXJmb3JtYW5jZSkuCisuVFAKKy5CIFwtaAorRGlzcGxheSBhIHVzYWdlIHN0cmluZywgYW5kIGV4aXQuCisuVFAKKy5CIFwtTCBuYW1lLGZhbWlseQorU2V0IHRoZSBsb2NhbCBuYW1lIGFuZC9vciBhZGRyZXNzIGZhbWlseSBmb3IgdGhlIHNvY2tldCB1c2VkIGZvcgordGhlIGNvbnRyb2wgY29ubmVjdGlvbi4KKy5UUAorLkIgXC1wIHBvcnRudW0KK0xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIHBvcnQuCitUaGlzIGlzIHVzZWQgd2hlbiBydW5uaW5nIGFzIGEgc3RhbmRhbG9uZSBkYWVtb24uCisuVFAKKy5CIFwtdiB2ZXJib3NpdHkKK1NldCB0aGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgdGVzdC4KKy5UUAorLkIgXC1WCitEaXNwbGF5IHRoZSBuZXRwZXJmIHZlcnNpb24gYW5kIGV4aXQuCisKKy5TSCBCVUdTCitObyBrbm93biBidWdzIGF0IHRoaXMgdGltZS4gSWYgeW91IHRoaW5rIHlvdSBoYXZlIGZvdW5kIGEgYnVnLCBwbGVhc2UgcmVwb3J0IGl0IHRvIGVpdGhlciBuZXRwZXJmLXRhbGtAbmV0cGVyZi5vcmcgb3IgbmV0cGVyZi1mZWVkYmFja0BuZXRwZXJmLm9yZy4KKworLlNIIFNFRSBBTFNPCisuQlIgbmV0cGVyZiAoMSkKKy5icgorLkkKK05ldHBlcmY6IEEgTmV0d29yayBQZXJmb3JtYW5jZSBCZW5jaG1hcmsKKy5icgoraHR0cDovL3d3dy5uZXRwZXJmLm9yZy8KKworLlNIIEFVVEhPUlMKK0hQIEluZm9ybWF0aW9uIE5ldHdvcmtzIERpdmlzaW9uIC0gTmV0d29ya2luZyBQZXJmb3JtYW5jZSBUZWFtLgorLmJyCitSaWNrIEpvbmVzCTxyaWNrLmpvbmVzMkBocC5jb20+CisuYnIKK0thcmVuIENob3kJSFAgSU5ECisuYnIKK0RhdmUgU2hpZWxkCTxkYXZlc0Bjc2MubGl2LmFjLnVrPgkobWFuIHBhZ2VzKQorLmJyCitPdGhlcnMgdG9vIG51bWVyb3VzIHRvIG1lbnRpb24gaGVyZSAtIHNlZSB0aGUgQVVUSE9SUyBmaWxlCmRpZmYgLS1naXQgYS9kb2MvdGV4aW5mby50ZXggYi9kb2MvdGV4aW5mby50ZXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVjODEyMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy90ZXhpbmZvLnRleApAQCAtMCwwICsxLDY3NDQgQEAKKyUgdGV4aW5mby50ZXggLS0gVGVYIG1hY3JvcyB0byBoYW5kbGUgVGV4aW5mbyBmaWxlcy4KKyUKKyUgTG9hZCBwbGFpbiBpZiBuZWNlc3NhcnksIGkuZS4sIGlmIHJ1bm5pbmcgdW5kZXIgaW5pdGV4LgorXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgZm10bmFtZVxlbmRjc25hbWVccmVsYXhcaW5wdXQgcGxhaW5cZmkKKyUKK1xkZWZcdGV4aW5mb3ZlcnNpb257MjAwMy0xMC0wNi4wOH0KKyUKKyUgQ29weXJpZ2h0IChDKSAxOTg1LCAxOTg2LCAxOTg4LCAxOTkwLCAxOTkxLCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LAorJSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorJQorJSBUaGlzIHRleGluZm8udGV4IGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCislIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCislIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQKKyUgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorJQorJSBUaGlzIHRleGluZm8udGV4IGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCislIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKyUgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorJQorJSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorJSBhbG9uZyB3aXRoIHRoaXMgdGV4aW5mby50ZXggZmlsZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlCislIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyUgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCislCislIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCislIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCislIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEKKyUKKyUgUGxlYXNlIHRyeSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGV4aW5mby50ZXggYmVmb3JlIHN1Ym1pdHRpbmcgYnVnCislIHJlcG9ydHM7IHlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tOgorJSAgIGZ0cDovL2Z0cC5nbnUub3JnL2dudS90ZXhpbmZvL3RleGluZm8udGV4CislICAgICAoYW5kIGFsbCBHTlUgbWlycm9ycywgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9vcmRlci9mdHAuaHRtbCkKKyUgICBmdHA6Ly90dWcub3JnL3RleC90ZXhpbmZvLnRleAorJSAgICAgKGFuZCBhbGwgQ1RBTiBtaXJyb3JzLCBzZWUgaHR0cDovL3d3dy5jdGFuLm9yZyksCislICAgYW5kIC9ob21lL2dkL2dudS9kb2MvdGV4aW5mby50ZXggb24gdGhlIEdOVSBtYWNoaW5lcy4KKyUKKyUgVGhlIEdOVSBUZXhpbmZvIGhvbWUgcGFnZSBpcyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby4KKyUKKyUgVGhlIHRleGluZm8udGV4IGluIGFueSBnaXZlbiBUZXhpbmZvIGRpc3RyaWJ1dGlvbiBjb3VsZCB3ZWxsIGJlIG91dAorJSBvZiBkYXRlLCBzbyBpZiB0aGF0J3Mgd2hhdCB5b3UncmUgdXNpbmcsIHBsZWFzZSBjaGVjay4KKyUKKyUgU2VuZCBidWcgcmVwb3J0cyB0byBidWctdGV4aW5mb0BnbnUub3JnLiAgUGxlYXNlIGluY2x1ZGUgaW5jbHVkaW5nIGEKKyUgY29tcGxldGUgZG9jdW1lbnQgaW4gZWFjaCBidWcgcmVwb3J0IHdpdGggd2hpY2ggd2UgY2FuIHJlcHJvZHVjZSB0aGUKKyUgcHJvYmxlbS4gIFBhdGNoZXMgYXJlLCBvZiBjb3Vyc2UsIGdyZWF0bHkgYXBwcmVjaWF0ZWQuCislCislIFRvIHByb2Nlc3MgYSBUZXhpbmZvIG1hbnVhbCB3aXRoIFRlWCwgaXQncyBtb3N0IHJlbGlhYmxlIHRvIHVzZSB0aGUKKyUgdGV4aTJkdmkgc2hlbGwgc2NyaXB0IHRoYXQgY29tZXMgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAgRm9yIGEgc2ltcGxlCislIG1hbnVhbCBmb28udGV4aSwgaG93ZXZlciwgeW91IGNhbiBnZXQgYXdheSB3aXRoIHRoaXM6CislICAgdGV4IGZvby50ZXhpCislICAgdGV4aW5kZXggZm9vLj8/CislICAgdGV4IGZvby50ZXhpCislICAgdGV4IGZvby50ZXhpCislICAgZHZpcHMgZm9vLmR2aSAtbyAgIyBvciB3aGF0ZXZlcjsgdGhpcyBtYWtlcyBmb28ucHMuCislIFRoZSBleHRyYSBUZVggcnVucyBnZXQgdGhlIGNyb3NzLXJlZmVyZW5jZSBpbmZvcm1hdGlvbiBjb3JyZWN0LgorJSBTb21ldGltZXMgb25lIHJ1biBhZnRlciB0ZXhpbmRleCBzdWZmaWNlcywgYW5kIHNvbWV0aW1lcyB5b3UgbmVlZCBtb3JlCislIHRoYW4gdHdvOyB0ZXhpMmR2aSBkb2VzIGl0IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5LgorJQorJSBJdCBpcyBwb3NzaWJsZSB0byBhZGFwdCB0ZXhpbmZvLnRleCBmb3Igb3RoZXIgbGFuZ3VhZ2VzLCB0byBzb21lCislIGV4dGVudC4gIFlvdSBjYW4gZ2V0IHRoZSBleGlzdGluZyBsYW5ndWFnZS1zcGVjaWZpYyBmaWxlcyBmcm9tIHRoZQorJSBmdWxsIFRleGluZm8gZGlzdHJpYnV0aW9uLgorCitcbWVzc2FnZXtMb2FkaW5nIHRleGluZm8gW3ZlcnNpb24gXHRleGluZm92ZXJzaW9uXTp9CisKKyUgSWYgaW4gYSAuZm10IGZpbGUsIHByaW50IHRoZSB2ZXJzaW9uIG51bWJlcgorJSBhbmQgdHVybiBvbiBhY3RpdmUgY2hhcmFjdGVycyB0aGF0IHdlIGNvdWxkbid0IGRvIGVhcmxpZXIgYmVjYXVzZQorJSB0aGV5IG1pZ2h0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIGlucHV0IGZpbGUgbmFtZS4KK1xldmVyeWpvYntcbWVzc2FnZXtbVGV4aW5mbyB2ZXJzaW9uIFx0ZXhpbmZvdmVyc2lvbl19JQorICBcY2F0Y29kZWArPVxhY3RpdmUgXGNhdGNvZGVgXF89XGFjdGl2ZX0KKworXG1lc3NhZ2V7QmFzaWNzLH0KK1xjaGFyZGVmXG90aGVyPTEyCisKKyUgV2UgbmV2ZXIgd2FudCBwbGFpbidzIFxvdXRlciBkZWZpbml0aW9uIG9mIFwrIGluIFRleGluZm8uCislIEZvciBAdGV4LCB3ZSBjYW4gdXNlIFx0YWJhbGlnbi4KK1xsZXRcKyA9IFxyZWxheAorCislIFNhdmUgc29tZSBwbGFpbiB0ZXggbWFjcm9zIHdob3NlIG5hbWVzIHdlIHdpbGwgcmVkZWZpbmUuCitcbGV0XHB0ZXhiPVxiCitcbGV0XHB0ZXhidWxsZXQ9XGJ1bGxldAorXGxldFxwdGV4Yz1cYworXGxldFxwdGV4Y29tbWE9XCwKK1xsZXRccHRleGRvdD1cLgorXGxldFxwdGV4ZG90cz1cZG90cworXGxldFxwdGV4ZW5kPVxlbmQKK1xsZXRccHRleGVxdWl2PVxlcXVpdgorXGxldFxwdGV4ZXhjbGFtPVwhCitcbGV0XHB0ZXhndHI9PgorXGxldFxwdGV4aGF0PV4KK1xsZXRccHRleGk9XGkKK1xsZXRccHRleGluZGVudD1caW5kZW50CitcbGV0XHB0ZXhub2luZGVudD1cbm9pbmRlbnQKK1xsZXRccHRleGxicmFjZT1ceworXGxldFxwdGV4bGVzcz08CitcbGV0XHB0ZXhwbHVzPSsKK1xsZXRccHRleHJicmFjZT1cfQorXGxldFxwdGV4c2xhc2g9XC8KK1xsZXRccHRleHN0YXI9XCoKK1xsZXRccHRleHQ9XHQKKworJSBJZiB0aGlzIGNoYXJhY3RlciBhcHBlYXJzIGluIGFuIGVycm9yIG1lc3NhZ2Ugb3IgaGVscCBzdHJpbmcsIGl0CislIHN0YXJ0cyBhIG5ldyBsaW5lIGluIHRoZSBvdXRwdXQuCitcbmV3bGluZWNoYXIgPSBgXl5KCisKKyUgU2V0IHVwIGZpeGVkIHdvcmRzIGZvciBFbmdsaXNoIGlmIG5vdCBhbHJlYWR5IHNldC4KK1xpZnhccHV0d29yZEFwcGVuZGl4XHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZEFwcGVuZGl4e0FwcGVuZGl4fVxmaQorXGlmeFxwdXR3b3JkQ2hhcHRlclx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkQ2hhcHRlcntDaGFwdGVyfVxmaQorXGlmeFxwdXR3b3JkZmlsZVx1bmRlZmluZWQgICAgICBcZ2RlZlxwdXR3b3JkZmlsZXtmaWxlfVxmaQorXGlmeFxwdXR3b3JkaW5cdW5kZWZpbmVkICAgICAgICBcZ2RlZlxwdXR3b3JkaW57aW59XGZpCitcaWZ4XHB1dHdvcmRJbmRleElzRW1wdHlcdW5kZWZpbmVkICAgICBcZ2RlZlxwdXR3b3JkSW5kZXhJc0VtcHR5eyhJbmRleCBpcyBlbXB0eSl9XGZpCitcaWZ4XHB1dHdvcmRJbmRleE5vbmV4aXN0ZW50XHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkSW5kZXhOb25leGlzdGVudHsoSW5kZXggaXMgbm9uZXhpc3RlbnQpfVxmaQorXGlmeFxwdXR3b3JkSW5mb1x1bmRlZmluZWQgICAgICBcZ2RlZlxwdXR3b3JkSW5mb3tJbmZvfVxmaQorXGlmeFxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9me0luc3RhbmNlIFZhcmlhYmxlIG9mfVxmaQorXGlmeFxwdXR3b3JkTWV0aG9kb25cdW5kZWZpbmVkICBcZ2RlZlxwdXR3b3JkTWV0aG9kb257TWV0aG9kIG9ufVxmaQorXGlmeFxwdXR3b3JkTm9UaXRsZVx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkTm9UaXRsZXtObyBUaXRsZX1cZmkKK1xpZnhccHV0d29yZG9mXHVuZGVmaW5lZCAgICAgICAgXGdkZWZccHV0d29yZG9me29mfVxmaQorXGlmeFxwdXR3b3Jkb25cdW5kZWZpbmVkICAgICAgICBcZ2RlZlxwdXR3b3Jkb257b259XGZpCitcaWZ4XHB1dHdvcmRwYWdlXHVuZGVmaW5lZCAgICAgIFxnZGVmXHB1dHdvcmRwYWdle3BhZ2V9XGZpCitcaWZ4XHB1dHdvcmRzZWN0aW9uXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmRzZWN0aW9ue3NlY3Rpb259XGZpCitcaWZ4XHB1dHdvcmRTZWN0aW9uXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmRTZWN0aW9ue1NlY3Rpb259XGZpCitcaWZ4XHB1dHdvcmRzZWVcdW5kZWZpbmVkICAgICAgIFxnZGVmXHB1dHdvcmRzZWV7c2VlfVxmaQorXGlmeFxwdXR3b3JkU2VlXHVuZGVmaW5lZCAgICAgICBcZ2RlZlxwdXR3b3JkU2Vle1NlZX1cZmkKK1xpZnhccHV0d29yZFNob3J0VE9DXHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZFNob3J0VE9De1Nob3J0IENvbnRlbnRzfVxmaQorXGlmeFxwdXR3b3JkVE9DXHVuZGVmaW5lZCAgICAgICBcZ2RlZlxwdXR3b3JkVE9De1RhYmxlIG9mIENvbnRlbnRzfVxmaQorJQorXGlmeFxwdXR3b3JkTUphblx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1KYW57SmFudWFyeX1cZmkKK1xpZnhccHV0d29yZE1GZWJcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNRmVie0ZlYnJ1YXJ5fVxmaQorXGlmeFxwdXR3b3JkTU1hclx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1NYXJ7TWFyY2h9XGZpCitcaWZ4XHB1dHdvcmRNQXByXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkTUFwcntBcHJpbH1cZmkKK1xpZnhccHV0d29yZE1NYXlcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNTWF5e01heX1cZmkKK1xpZnhccHV0d29yZE1KdW5cdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNSnVue0p1bmV9XGZpCitcaWZ4XHB1dHdvcmRNSnVsXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkTUp1bHtKdWx5fVxmaQorXGlmeFxwdXR3b3JkTUF1Z1x1bmRlZmluZWQgXGdkZWZccHV0d29yZE1BdWd7QXVndXN0fVxmaQorXGlmeFxwdXR3b3JkTVNlcFx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1TZXB7U2VwdGVtYmVyfVxmaQorXGlmeFxwdXR3b3JkTU9jdFx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1PY3R7T2N0b2Jlcn1cZmkKK1xpZnhccHV0d29yZE1Ob3ZcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNTm92e05vdmVtYmVyfVxmaQorXGlmeFxwdXR3b3JkTURlY1x1bmRlZmluZWQgXGdkZWZccHV0d29yZE1EZWN7RGVjZW1iZXJ9XGZpCislCitcaWZ4XHB1dHdvcmREZWZtYWNcdW5kZWZpbmVkICAgIFxnZGVmXHB1dHdvcmREZWZtYWN7TWFjcm99XGZpCitcaWZ4XHB1dHdvcmREZWZzcGVjXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmREZWZzcGVje1NwZWNpYWwgRm9ybX1cZmkKK1xpZnhccHV0d29yZERlZnZhclx1bmRlZmluZWQgICAgXGdkZWZccHV0d29yZERlZnZhcntWYXJpYWJsZX1cZmkKK1xpZnhccHV0d29yZERlZm9wdFx1bmRlZmluZWQgICAgXGdkZWZccHV0d29yZERlZm9wdHtVc2VyIE9wdGlvbn1cZmkKK1xpZnhccHV0d29yZERlZnR5cGV2YXJcdW5kZWZpbmVkXGdkZWZccHV0d29yZERlZnR5cGV2YXJ7VmFyaWFibGV9XGZpCitcaWZ4XHB1dHdvcmREZWZmdW5jXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmREZWZmdW5je0Z1bmN0aW9ufVxmaQorXGlmeFxwdXR3b3JkRGVmdHlwZWZ1blx1bmRlZmluZWRcZ2RlZlxwdXR3b3JkRGVmdHlwZWZ1bntGdW5jdGlvbn1cZmkKKworJSBJbiBzb21lIG1hY3Jvcywgd2UgY2Fubm90IHVzZSB0aGUgYFw/IG5vdGF0aW9uLS0tdGhlIGxlZnQgcXVvdGUgaXMKKyUgaW4gc29tZSBjYXNlcyB0aGUgZXNjYXBlIGNoYXIuCitcY2hhcmRlZlxjb2xvbkNoYXIgPSBgXDoKK1xjaGFyZGVmXGNvbW1hQ2hhciA9IGBcLAorXGNoYXJkZWZcZG90Q2hhciAgID0gYFwuCitcY2hhcmRlZlxlcXVhbENoYXIgPSBgXD0KK1xjaGFyZGVmXGV4Y2xhbUNoYXI9IGBcIQorXGNoYXJkZWZccXVlc3RDaGFyID0gYFw/CitcY2hhcmRlZlxzZW1pQ2hhciAgPSBgXDsKK1xjaGFyZGVmXHNwYWNlQ2hhciA9IGBcICUKK1xjaGFyZGVmXHVuZGVyQ2hhciA9IGBcXworCislIElnbm9yZSBhIHRva2VuLgorJQorXGRlZlxnb2JibGUjMXt9CisKKyUgVHJ1ZSBpZiAjMSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBpLmUuLCBjYWxsZWQgbGlrZSBgXGlmZW1wdHl7fScuCislCitcZGVmXGlmZW1wdHkjMXtcaWZlbXB0eXggIzFcZW1wdHltYXJrQVxlbXB0eW1hcmtCfSUKK1xkZWZcaWZlbXB0eXgjMSMyXGVtcHR5bWFya0J7XGlmeCAjMVxlbXB0eW1hcmtBfSUKKworJSBIeXBoZW5hdGlvbiBmaXhlcy4KK1xoeXBoZW5hdGlvbnthcC1wZW4tZGl4fQorXGh5cGhlbmF0aW9ue2VzaGVsbH0KK1xoeXBoZW5hdGlvbnttaW5pLWJ1Zi1mZXIgbWluaS1idWYtZmVyc30KK1xoeXBoZW5hdGlvbnt0aW1lLXN0YW1wfQorXGh5cGhlbmF0aW9ue3doaXRlLXNwYWNlfQorCislIE1hcmdpbiB0byBhZGQgdG8gcmlnaHQgb2YgZXZlbiBwYWdlcywgdG8gbGVmdCBvZiBvZGQgcGFnZXMuCitcbmV3ZGltZW5cYmluZGluZ29mZnNldAorXG5ld2RpbWVuXG5vcm1hbG9mZnNldAorXG5ld2RpbWVuXHBhZ2V3aWR0aCBcbmV3ZGltZW5ccGFnZWhlaWdodAorCislIFNvbWV0aW1lcyBpdCBpcyBjb252ZW5pZW50IHRvIGhhdmUgZXZlcnl0aGluZyBpbiB0aGUgdHJhbnNjcmlwdCBmaWxlCislIGFuZCBub3RoaW5nIG9uIHRoZSB0ZXJtaW5hbC4gIFdlIGRvbid0IGp1c3QgY2FsbCBcdHJhY2luZ2FsbCBoZXJlLAorJSBzaW5jZSB0aGF0IHByb2R1Y2VzIHNvbWUgdXNlbGVzcyBvdXRwdXQgb24gdGhlIHRlcm1pbmFsLiAgV2UgYWxzbyBtYWtlCislIHNvbWUgZWZmb3J0IHRvIG9yZGVyIHRoZSB0cmFjaW5nIGNvbW1hbmRzIHRvIHJlZHVjZSBvdXRwdXQgaW4gdGhlIGxvZworJSBmaWxlOyBjZi4gdHJhY2Uuc3R5IGluIExhVGVYLgorJQorXGRlZlxnbG9nZ2luZ2FsbHtcYmVnaW5ncm91cCBcZ2xvYmFsZGVmcyA9IDEgXGxvZ2dpbmdhbGwgXGVuZGdyb3VwfSUKK1xkZWZcbG9nZ2luZ2FsbHslCisgIFx0cmFjaW5nc3RhdHMyCisgIFx0cmFjaW5ncGFnZXMxCisgIFx0cmFjaW5nbG9zdGNoYXJzMiAgJSAyIGdpdmVzIHVzIG1vcmUgaW4gZXRleAorICBcdHJhY2luZ3BhcmFncmFwaHMxCisgIFx0cmFjaW5nb3V0cHV0MQorICBcdHJhY2luZ21hY3JvczIKKyAgXHRyYWNpbmdyZXN0b3JlczEKKyAgXHNob3dib3hicmVhZHRoXG1heGRpbWVuIFxzaG93Ym94ZGVwdGhcbWF4ZGltZW4KKyAgXGlmeFxlVGVYdmVyc2lvblx1bmRlZmluZWRcZWxzZSAlIGV0ZXggZ2l2ZXMgdXMgbW9yZSBsb2dnaW5nCisgICAgXHRyYWNpbmdzY2FudG9rZW5zMQorICAgIFx0cmFjaW5naWZzMQorICAgIFx0cmFjaW5nZ3JvdXBzMQorICAgIFx0cmFjaW5nbmVzdGluZzIKKyAgICBcdHJhY2luZ2Fzc2lnbnMxCisgIFxmaQorICBcdHJhY2luZ2NvbW1hbmRzMyAgJSAzIGdpdmVzIHVzIG1vcmUgaW4gZXRleAorICBcZXJyb3Jjb250ZXh0bGluZXNcbWF4ZGltZW4KK30lCisKKyUgYWRkIGNoZWNrIGZvciBcbGFzdHBlbmFsdHkgdG8gcGxhaW4ncyBkZWZpbml0aW9ucy4gIElmIHRoZSBsYXN0IHRoaW5nCislIHdlIGRpZCB3YXMgYSBcbm9icmVhaywgd2UgZG9uJ3Qgd2FudCB0byBpbnNlcnQgbW9yZSBzcGFjZS4KKyUKK1xkZWZcc21hbGxicmVha3tcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDBccGFyXGlmZGltXGxhc3Rza2lwPFxzbWFsbHNraXBhbW91bnQKKyAgXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHktNTBcc21hbGxza2lwXGZpXGZpfQorXGRlZlxtZWRicmVha3tcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDBccGFyXGlmZGltXGxhc3Rza2lwPFxtZWRza2lwYW1vdW50CisgIFxyZW1vdmVsYXN0c2tpcFxwZW5hbHR5LTEwMFxtZWRza2lwXGZpXGZpfQorXGRlZlxiaWdicmVha3tcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDBccGFyXGlmZGltXGxhc3Rza2lwPFxiaWdza2lwYW1vdW50CisgIFxyZW1vdmVsYXN0c2tpcFxwZW5hbHR5LTIwMFxiaWdza2lwXGZpXGZpfQorCislIEZvciBAY3JvcG1hcmtzIGNvbW1hbmQuCislIERvIEBjcm9wbWFya3MgdG8gZ2V0IGNyb3AgbWFya3MuCislCitcbmV3aWZcaWZjcm9wbWFya3MKK1xsZXRcY3JvcG1hcmtzID0gXGNyb3BtYXJrc3RydWUKKyUKKyUgRGltZW5zaW9ucyB0byBhZGQgY3JvcG1hcmtzIGF0IGNvcm5lcnMuCislIEFkZGVkIGJ5IFAuIEEuIE1hY0theSwgMTIgTm92LiAxOTg2CislCitcbmV3ZGltZW5cb3V0ZXJoc2l6ZSBcbmV3ZGltZW5cb3V0ZXJ2c2l6ZSAlIHNldCBieSB0aGUgcGFwZXIgc2l6ZSByb3V0aW5lcworXG5ld2RpbWVuXGNvcm5lcmxvbmcgIFxjb3JuZXJsb25nPTFwYworXG5ld2RpbWVuXGNvcm5lcnRoaWNrIFxjb3JuZXJ0aGljaz0uM3B0CitcbmV3ZGltZW5cdG9wYW5kYm90dG9tbWFyZ2luIFx0b3BhbmRib3R0b21tYXJnaW49Ljc1aW4KKworJSBNYWluIG91dHB1dCByb3V0aW5lLgorXGNoYXJkZWZcUEFHRSA9IDI1NQorXG91dHB1dCA9IHtcb25lcGFnZW91dHtccGFnZWNvbnRlbnRzXFBBR0V9fQorCitcbmV3Ym94XGhlYWRsaW5lYm94CitcbmV3Ym94XGZvb3RsaW5lYm94CisKKyUgXG9uZXBhZ2VvdXQgdGFrZXMgYSB2Ym94IGFzIGFuIGFyZ3VtZW50LiAgTm90ZSB0aGF0IFxwYWdlY29udGVudHMKKyUgZG9lcyBpbnNlcnRpb25zLCBidXQgeW91IGhhdmUgdG8gY2FsbCBpdCB5b3Vyc2VsZi4KK1xkZWZcb25lcGFnZW91dCMxeyUKKyAgXGlmY3JvcG1hcmtzIFxob2Zmc2V0PTBwdCBcZWxzZSBcaG9mZnNldD1cbm9ybWFsb2Zmc2V0IFxmaQorICAlCisgIFxpZm9kZFxwYWdlbm8gIFxhZHZhbmNlXGhvZmZzZXQgYnkgXGJpbmRpbmdvZmZzZXQKKyAgXGVsc2UgXGFkdmFuY2VcaG9mZnNldCBieSAtXGJpbmRpbmdvZmZzZXRcZmkKKyAgJQorICAlIERvIHRoaXMgb3V0c2lkZSBvZiB0aGUgXHNoaXBvdXQgc28gQGNvZGUgZXRjLiB3aWxsIGJlIGV4cGFuZGVkIGluCisgICUgdGhlIGhlYWRsaW5lIGFzIHRoZXkgc2hvdWxkIGJlLCBub3QgdGFrZW4gbGl0ZXJhbGx5IChvdXRwdXR0aW5nICcnY29kZSkuCisgIFxzZXRib3hcaGVhZGxpbmVib3ggPSBcdmJveHtcbGV0XGhzaXplPVxwYWdld2lkdGggXG1ha2VoZWFkbGluZX0lCisgIFxzZXRib3hcZm9vdGxpbmVib3ggPSBcdmJveHtcbGV0XGhzaXplPVxwYWdld2lkdGggXG1ha2Vmb290bGluZX0lCisgICUKKyAgeyUKKyAgICAlIEhhdmUgdG8gZG8gdGhpcyBzdHVmZiBvdXRzaWRlIHRoZSBcc2hpcG91dCBiZWNhdXNlIHdlIHdhbnQgaXQgdG8KKyAgICAlIHRha2UgZWZmZWN0IGluIFx3cml0ZSdzLCB5ZXQgdGhlIGdyb3VwIGRlZmluZWQgYnkgdGhlIFx2Ym94IGVuZHMKKyAgICAlIGJlZm9yZSB0aGUgXHNoaXBvdXQgcnVucy4KKyAgICAlCisgICAgXGVzY2FwZWNoYXIgPSBgXFwgICAgICUgdXNlIGJhY2tzbGFzaCBpbiBvdXRwdXQgZmlsZXMuCisgICAgXGluZGV4ZHVtbWllcyAgICAgICAgICUgZG9uJ3QgZXhwYW5kIGNvbW1hbmRzIGluIHRoZSBvdXRwdXQuCisgICAgXG5vcm1hbHR1cm5vZmZhY3RpdmUgICUgXCBpbiBpbmRleCBlbnRyaWVzIG11c3Qgbm90IHN0YXkgXCwgZS5nLiwgaWYKKyAgICAgICAgICAgICAgICAgICAlIHRoZSBwYWdlIGJyZWFrIGhhcHBlbnMgdG8gYmUgaW4gdGhlIG1pZGRsZSBvZiBhbiBleGFtcGxlLgorICAgIFxzaGlwb3V0XHZib3h7JQorICAgICAgJSBEbyB0aGlzIGVhcmx5IHNvIHBkZiByZWZlcmVuY2VzIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhZ2UuCisgICAgICBcaWZwZGZtYWtlcGFnZWRlc3QgXHBkZm1rZGVzdHtcdGhlXHBhZ2Vub31cZmkKKyAgICAgICUKKyAgICAgIFxpZmNyb3BtYXJrcyBcdmJveCB0byBcb3V0ZXJ2c2l6ZVxiZ3JvdXAKKyAgICAgICAgXGhzaXplID0gXG91dGVyaHNpemUKKyAgICAgICAgXHZza2lwLVx0b3BhbmRib3R0b21tYXJnaW4KKyAgICAgICAgXHZ0b3AgdG8wcHR7JQorICAgICAgICAgIFxsaW5le1xld3RvcFxoZmlsXGV3dG9wfSUKKyAgICAgICAgICBcbm9pbnRlcmxpbmVza2lwCisgICAgICAgICAgXGxpbmV7JQorICAgICAgICAgICAgXHZib3h7XG1vdmVsZWZ0XGNvcm5lcnRoaWNrXG5zdG9wfSUKKyAgICAgICAgICAgIFxoZmlsbAorICAgICAgICAgICAgXHZib3h7XG1vdmVyaWdodFxjb3JuZXJ0aGlja1xuc3RvcH0lCisgICAgICAgICAgfSUKKyAgICAgICAgICBcdnNzfSUKKyAgICAgICAgXHZza2lwXHRvcGFuZGJvdHRvbW1hcmdpbgorICAgICAgICBcbGluZVxiZ3JvdXAKKyAgICAgICAgICBcaGZpbCAlIGNlbnRlciB0aGUgcGFnZSB3aXRoaW4gdGhlIG91dGVyIChwYWdlKSBoc2l6ZS4KKyAgICAgICAgICBcaWZvZGRccGFnZW5vXGhza2lwXGJpbmRpbmdvZmZzZXRcZmkKKyAgICAgICAgICBcdmJveFxiZ3JvdXAKKyAgICAgIFxmaQorICAgICAgJQorICAgICAgXHVudmJveFxoZWFkbGluZWJveAorICAgICAgXHBhZ2Vib2R5eyMxfSUKKyAgICAgIFxpZmRpbVxodFxmb290bGluZWJveCA+IDBwdAorICAgICAgICAlIE9ubHkgbGVhdmUgdGhpcyBzcGFjZSBpZiB0aGUgZm9vdGxpbmUgaXMgbm9uZW1wdHkuCisgICAgICAgICUgKFdlIGxlc3NlbmVkIFx2c2l6ZSBmb3IgaXQgaW4gXG9kZGZvb3Rpbmd4eHguKQorICAgICAgICAlIFRoZSBcYmFzZWxpbmVza2lwPTI0cHQgaW4gcGxhaW4ncyBcbWFrZWZvb3RsaW5lIGhhcyBubyBlZmZlY3QuCisgICAgICAgIFx2c2tpcCAyXGJhc2VsaW5lc2tpcAorICAgICAgICBcdW52Ym94XGZvb3RsaW5lYm94CisgICAgICBcZmkKKyAgICAgICUKKyAgICAgIFxpZmNyb3BtYXJrcworICAgICAgICAgIFxlZ3JvdXAgJSBlbmQgb2YgXHZib3hcYmdyb3VwCisgICAgICAgIFxoZmlsXGVncm91cCAlIGVuZCBvZiAoY2VudGVyaW5nKSBcbGluZVxiZ3JvdXAKKyAgICAgICAgXHZza2lwXHRvcGFuZGJvdHRvbW1hcmdpbiBwbHVzMWZpbGwgbWludXMxZmlsbAorICAgICAgICBcYm94bWF4ZGVwdGggPSBcY29ybmVydGhpY2sKKyAgICAgICAgXHZib3ggdG8wcHR7XHZzcworICAgICAgICAgIFxsaW5leyUKKyAgICAgICAgICAgIFx2Ym94e1xtb3ZlbGVmdFxjb3JuZXJ0aGlja1xuc2JvdH0lCisgICAgICAgICAgICBcaGZpbGwKKyAgICAgICAgICAgIFx2Ym94e1xtb3ZlcmlnaHRcY29ybmVydGhpY2tcbnNib3R9JQorICAgICAgICAgIH0lCisgICAgICAgICAgXG5vaW50ZXJsaW5lc2tpcAorICAgICAgICAgIFxsaW5le1xld2JvdFxoZmlsXGV3Ym90fSUKKyAgICAgICAgfSUKKyAgICAgIFxlZ3JvdXAgJSBcdmJveCBmcm9tIGZpcnN0IGNyb3BtYXJrcyBjbGF1c2UKKyAgICAgIFxmaQorICAgIH0lIGVuZCBvZiBcc2hpcG91dFx2Ym94CisgIH0lIGVuZCBvZiBncm91cCB3aXRoIFxub3JtYWx0dXJub2ZmYWN0aXZlCisgIFxhZHZhbmNlcGFnZW5vCisgIFxpZm51bVxvdXRwdXRwZW5hbHR5Pi0yMDAwMCBcZWxzZVxkb3N1cGVyZWplY3RcZmkKK30KKworXG5ld2luc2VydFxtYXJnaW4gXGRpbWVuXG1hcmdpbj1cbWF4ZGltZW4KKworXGRlZlxwYWdlYm9keSMxe1x2Ym94IHRvXHBhZ2VoZWlnaHR7XGJveG1heGRlcHRoPVxtYXhkZXB0aCAjMX19Cit7XGNhdGNvZGVgXEAgPTExCitcZ2RlZlxwYWdlY29udGVudHMjMXtcaWZ2b2lkXHRvcGluc1xlbHNlXHVudmJveFx0b3BpbnNcZmkKKyUgbWFyZ2luYWwgaGFja3MsIGp1aGFAdmlpc2EudXVjcCAoSnVoYSBUYWthbGEpCitcaWZ2b2lkXG1hcmdpblxlbHNlICUgbWFyZ2luYWwgaW5mbyBpcyBwcmVzZW50CisgIFxybGFwe1xrZXJuXGhzaXplXHZib3ggdG9cekB7XGtlcm4xcHRcYm94XG1hcmdpbiBcdnNzfX1cZmkKK1xkaW1lbkA9XGRwIzEgXHVudmJveCMxCitcaWZ2b2lkXGZvb3RpbnNcZWxzZVx2c2tpcFxza2lwXGZvb3RpbnNcZm9vdG5vdGVydWxlIFx1bnZib3hcZm9vdGluc1xmaQorXGlmckBnZ2VkYm90dG9tIFxrZXJuLVxkaW1lbkAgXHZmaWwgXGZpfQorfQorCislIEhlcmUgYXJlIHRoZSBydWxlcyBmb3IgdGhlIGNyb3BtYXJrcy4gIE5vdGUgdGhhdCB0aGV5IGFyZQorJSBvZmZzZXQgc28gdGhhdCB0aGUgc3BhY2UgYmV0d2VlbiB0aGVtIGlzIHRydWx5IFxvdXRlcmhzaXplIG9yIFxvdXRlcnZzaXplCislIChQLiBBLiBNYWNLYXksIDEyIE5vdmVtYmVyLCAxOTg2KQorJQorXGRlZlxld3RvcHtcdnJ1bGUgaGVpZ2h0XGNvcm5lcnRoaWNrIGRlcHRoMHB0IHdpZHRoXGNvcm5lcmxvbmd9CitcZGVmXG5zdG9we1x2Ym94CisgIHtcaHJ1bGUgaGVpZ2h0XGNvcm5lcnRoaWNrIGRlcHRoXGNvcm5lcmxvbmcgd2lkdGhcY29ybmVydGhpY2t9fQorXGRlZlxld2JvdHtcdnJ1bGUgaGVpZ2h0MHB0IGRlcHRoXGNvcm5lcnRoaWNrIHdpZHRoXGNvcm5lcmxvbmd9CitcZGVmXG5zYm90e1x2Ym94CisgIHtcaHJ1bGUgaGVpZ2h0XGNvcm5lcmxvbmcgZGVwdGhcY29ybmVydGhpY2sgd2lkdGhcY29ybmVydGhpY2t9fQorCislIFBhcnNlIGFuIGFyZ3VtZW50LCB0aGVuIHBhc3MgaXQgdG8gIzEuICBUaGUgYXJndW1lbnQgaXMgdGhlIHJlc3Qgb2YKKyUgdGhlIGlucHV0IGxpbmUgKGV4Y2VwdCB3ZSByZW1vdmUgYSB0cmFpbGluZyBjb21tZW50KS4gICMxIHNob3VsZCBiZSBhCislIG1hY3JvIHdoaWNoIGV4cGVjdHMgYW4gb3JkaW5hcnkgdW5kZWxpbWl0ZWQgVGVYIGFyZ3VtZW50LgorJQorXGRlZlxwYXJzZWFyZyMxeyUKKyAgXGxldFxuZXh0ID0gIzElCisgIFxiZWdpbmdyb3VwCisgICAgXG9iZXlsaW5lcworICAgIFxmdXR1cmVsZXRcdGVtcFxwYXJzZWFyZ3gKK30KKworJSBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhbiBvYmV5ZWQgc3BhY2UgKGZyb20gYW4gQGV4YW1wbGUgZW52aXJvbm1lbnQgb3IKKyUgdGhlIGxpa2UpLCByZW1vdmUgaXQgYW5kIHJlY3Vyc2UuICBPdGhlcndpc2UsIHdlJ3JlIGRvbmUuCitcZGVmXHBhcnNlYXJneHslCisgICUgXG9iZXllZHNwYWNlIGlzIGRlZmluZWQgZmFyIGJlbG93LCBhZnRlciB0aGUgZGVmaW5pdGlvbiBvZiBcc2Vwc3BhY2VzLgorICBcaWZ4XG9iZXllZHNwYWNlXHRlbXAKKyAgICBcZXhwYW5kYWZ0ZXJccGFyc2VhcmdkaXNjYXJkc3BhY2UKKyAgXGVsc2UKKyAgICBcZXhwYW5kYWZ0ZXJccGFyc2VhcmdsaW5lCisgIFxmaQorfQorCislIFJlbW92ZSBhIHNpbmdsZSBzcGFjZSAoYXMgdGhlIGRlbGltaXRlciB0b2tlbiB0byB0aGUgbWFjcm8gY2FsbCkuCit7XG9iZXlzcGFjZXMgJQorIFxnZGVmXHBhcnNlYXJnZGlzY2FyZHNwYWNlIHtcZnV0dXJlbGV0XHRlbXBccGFyc2Vhcmd4fX0KKwore1xvYmV5bGluZXMgJQorICBcZ2RlZlxwYXJzZWFyZ2xpbmUjMV5eTXslCisgICAgXGVuZGdyb3VwICUgRW5kIG9mIHRoZSBncm91cCBzdGFydGVkIGluIFxwYXJzZWFyZy4KKyAgICAlCisgICAgJSBGaXJzdCByZW1vdmUgYW55IEBjIGNvbW1lbnQsIHRoZW4gYW55IEBjb21tZW50LgorICAgICUgUmVzdWx0IG9mIGVhY2ggbWFjcm8gaXMgcHV0IGluIFx0b2tzMC4KKyAgICBcYXJncmVtb3ZlYyAjMVxjXHJlbGF4ICUKKyAgICBcZXhwYW5kYWZ0ZXJcYXJncmVtb3ZlY29tbWVudCBcdGhlXHRva3MwIFxjb21tZW50XHJlbGF4ICUKKyAgICAlCisgICAgJSBDYWxsIHRoZSBjYWxsZXIncyBtYWNybywgc2F2ZWQgYXMgXG5leHQgaW4gXHBhcnNlYXJnLgorICAgIFxleHBhbmRhZnRlclxuZXh0XGV4cGFuZGFmdGVye1x0aGVcdG9rczB9JQorICB9JQorfQorCislIFNpbmNlIGFsbCBcY3ssb21tZW50fSBkb2VzIGlzIHRocm93IGF3YXkgdGhlIGFyZ3VtZW50LCB3ZSBjYW4gbGV0IFRlWAorJSBkbyB0aGF0IGZvciB1cy4gIFRoZSBccmVsYXggaGVyZSBpcyBtYXRjaGVkIGJ5IHRoZSBccmVsYXggaW4gdGhlIGNhbGwKKyUgaW4gXHBhcnNlYXJnbGluZTsgaXQgY291bGQgYmUgbW9yZSBvciBsZXNzIGFueXRoaW5nLCBpdHMgcHVycG9zZSBpcworJSBqdXN0IHRvIGRlbGltaXQgdGhlIGFyZ3VtZW50IHRvIHRoZSBcYy4KK1xkZWZcYXJncmVtb3ZlYyMxXGMjMlxyZWxheHtcdG9rczAgPSB7IzF9fQorXGRlZlxhcmdyZW1vdmVjb21tZW50IzFcY29tbWVudCMyXHJlbGF4e1x0b2tzMCA9IHsjMX19CisKKyUgXGFyZ3JlbW92ZWN7LG9tbWVudH0gbWlnaHQgbGVhdmUgdXMgd2l0aCB0cmFpbGluZyBzcGFjZXMsIHRob3VnaDsgZS5nLiwKKyUgICAgQGVuZCBpdGVtaXplICBAYyBmb28KKyUgd2lsbCBoYXZlIHR3byBhY3RpdmUgc3BhY2VzIGFzIHBhcnQgb2YgdGhlIGFyZ3VtZW50IHdpdGggdGhlCislIGBpdGVtaXplJy4gIEhlcmUgd2UgcmVtb3ZlIGFsbCBhY3RpdmUgc3BhY2VzIGZyb20gIzEsIGFuZCBhc3NpZ24gdGhlCislIHJlc3VsdCB0byBcdG9rczAuCislCislIFRoaXMgbG9zZXMgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGFjdGl2ZSBjaGFyYWN0ZXJzIGJlc2lkZXMgc3BhY2VzCislIGluIHRoZSBhcmd1bWVudCAtLSBfIF4gKywgZm9yIGV4YW1wbGUgLS0gc2luY2UgdGhleSBnZXQgZXhwYW5kZWQuCislIEZvcnR1bmF0ZWx5LCBUZXhpbmZvIGRvZXMgbm90IGRlZmluZSBhbnkgc3VjaCBjb21tYW5kcy4gIChJZiBpdCBldmVyCislIGRvZXMsIHRoZSBjYXRjb2RlIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHF1ZXN0aW9ud2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQKKyUgaGVyZS4pICBCdXQgdGhpcyBtZWFucyB3ZSBjYW5ub3QgY2FsbCBccmVtb3ZlYWN0aXZlc3BhY2VzIGFzIHBhcnQgb2YKKyUgXGFyZ3JlbW92ZWN7LG9tbWVudH0sIHNpbmNlIEBjIHVzZXMgXHBhcnNlYXJnLCBhbmQgdGh1cyB0aGUgYXJndW1lbnQKKyUgdGhhdCBccGFyc2VhcmcgZ2V0cyBtaWdodCB3ZWxsIGhhdmUgYW55IGNoYXJhY3RlciBhdCBhbGwgaW4gaXQuCislCitcZGVmXHJlbW92ZWFjdGl2ZXNwYWNlcyMxeyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcaWdub3JlYWN0aXZlc3BhY2VzCisgICAgXGVkZWZcdGVtcHsjMX0lCisgICAgXGdsb2JhbFx0b2tzMCA9IFxleHBhbmRhZnRlcntcdGVtcH0lCisgIFxlbmRncm91cAorfQorCislIENoYW5nZSB0aGUgYWN0aXZlIHNwYWNlIHRvIGV4cGFuZCB0byBub3RoaW5nLgorJQorXGJlZ2luZ3JvdXAKKyAgXG9iZXlzcGFjZXMKKyAgXGdkZWZcaWdub3JlYWN0aXZlc3BhY2Vze1xvYmV5c3BhY2VzXGxldCA9XGVtcHR5fQorXGVuZGdyb3VwCisKKworXGRlZlxmbHVzaGNye1xpZnhccGFyXGxpc3BwYXIgXGRlZlxuZXh0IyMxe31cZWxzZSBcbGV0XG5leHQ9XHJlbGF4IFxmaSBcbmV4dH0KKworJSUgVGhlc2UgYXJlIHVzZWQgdG8ga2VlcCBAYmVnaW4vQGVuZCBsZXZlbHMgZnJvbSBydW5uaW5nIGF3YXkKKyUlIENhbGwgXGluRU5WIHdpdGhpbiBlbnZpcm9ubWVudHMgKGFmdGVyIGEgXGJlZ2luZ3JvdXApCitcbmV3aWZcaWZFTlYgXEVOVmZhbHNlIFxkZWZcaW5FTlZ7XGlmRU5WXHJlbGF4XGVsc2VcRU5WdHJ1ZVxmaX0KK1xkZWZcRU5WY2hlY2t7JQorXGlmRU5WXGVycm1lc3NhZ2V7U3RpbGwgd2l0aGluIGFuIGVudmlyb25tZW50OyBwcmVzcyBSRVRVUk4gdG8gY29udGludWV9CitcZW5kZ3JvdXBcZml9ICUgVGhpcyBpcyBub3QgcGVyZmVjdCwgYnV0IGl0IHNob3VsZCByZWR1Y2UgbG9zc2FnZQorCislIEBiZWdpbiBmb28gIGlzIHRoZSBzYW1lIGFzIEBmb28sIGZvciBub3cuCitcbmV3aGVscFxFTXNpbXBsZXtQcmVzcyBSRVRVUk4gdG8gY29udGludWUufQorCitcb3V0ZXJcZGVmXGJlZ2lue1xwYXJzZWFyZ1xiZWdpbnh4eH0KKworXGRlZlxiZWdpbnh4eCAjMXslCitcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSAjMVxlbmRjc25hbWVccmVsYXgKK3tcZXJyaGVscD1cRU1zaW1wbGUgXGVycm1lc3NhZ2V7VW5kZWZpbmVkIGNvbW1hbmQgQGJlZ2luICMxfX1cZWxzZQorXGNzbmFtZSAjMVxlbmRjc25hbWVcZml9CisKKyUgQGVuZCBmb28gZXhlY3V0ZXMgdGhlIGRlZmluaXRpb24gb2YgXEVmb28uCislCitcZGVmXGVuZHtccGFyc2VhcmdcZW5keHh4fQorXGRlZlxlbmR4eHggIzF7JQorICBccmVtb3ZlYWN0aXZlc3BhY2VzeyMxfSUKKyAgXGVkZWZcZW5kdGhpbmd7XHRoZVx0b2tzMH0lCisgICUKKyAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgRVxlbmR0aGluZ1xlbmRjc25hbWVccmVsYXgKKyAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSBcZW5kdGhpbmdcZW5kY3NuYW1lXHJlbGF4CisgICAgICAlIFRoZXJlJ3Mgbm8gXGZvbywgaS5lLiwgbm8gYGBlbnZpcm9ubWVudCcnIGZvby4KKyAgICAgIFxlcnJoZWxwID0gXEVNc2ltcGxlCisgICAgICBcZXJybWVzc2FnZXtVbmRlZmluZWQgY29tbWFuZCBgQGVuZCBcZW5kdGhpbmcnfSUKKyAgICBcZWxzZQorICAgICAgXHVubWF0Y2hlZGVuZGVycm9yXGVuZHRoaW5nCisgICAgXGZpCisgIFxlbHNlCisgICAgJSBFdmVyeXRoaW5nJ3Mgb2s7IHRoZSByaWdodCBlbnZpcm9ubWVudCBoYXMgYmVlbiBzdGFydGVkLgorICAgIFxjc25hbWUgRVxlbmR0aGluZ1xlbmRjc25hbWUKKyAgXGZpCit9CisKKyUgVGhlcmUgaXMgYW4gZW52aXJvbm1lbnQgIzEsIGJ1dCBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkLiAgR2l2ZSBhbiBlcnJvci4KKyUKK1xkZWZcdW5tYXRjaGVkZW5kZXJyb3IjMXslCisgIFxlcnJoZWxwID0gXEVNc2ltcGxlCisgIFxlcnJtZXNzYWdle1RoaXMgYEBlbmQgIzEnIGRvZXNuJ3QgaGF2ZSBhIG1hdGNoaW5nIGBAIzEnfSUKK30KKworJSBEZWZpbmUgdGhlIGNvbnRyb2wgc2VxdWVuY2UgXEUjMSB0byBnaXZlIGFuIHVubWF0Y2hlZCBAZW5kIGVycm9yLgorJQorXGRlZlxkZWZpbmV1bm1hdGNoZWRlbmQjMXslCisgIFxleHBhbmRhZnRlclxkZWZcY3NuYW1lIEUjMVxlbmRjc25hbWV7XHVubWF0Y2hlZGVuZGVycm9yeyMxfX0lCit9CisKKworJSUgU2ltcGxlIHNpbmdsZS1jaGFyYWN0ZXIgQCBjb21tYW5kcworCislIEBAIHByaW50cyBhbiBACislIEtsdWRnZSB0aGlzIHVudGlsIHRoZSBmb250cyBhcmUgcmlnaHQgKGdycikuCitcZGVmXEB7e1x0dFxjaGFyNjR9fQorCislIFRoaXMgaXMgdHVybmVkIG9mZiBiZWNhdXNlIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkCislIGFuZCB5b3UgY2FuIHVzZSBAd3suLi59IGFyb3VuZCBhIHF1b3RlIHRvIHN1cHByZXNzIGxpZ2F0dXJlcy4KKyUlIERlZmluZSBAYCBhbmQgQCcgdG8gYmUgdGhlIHNhbWUgYXMgYCBhbmQgJworJSUgYnV0IHN1cHByZXNzaW5nIGxpZ2F0dXJlcy4KKyVcZGVmXGB7e2B9fQorJVxkZWZcJ3t7J319CisKKyUgVXNlZCB0byBnZW5lcmF0ZSBxdW90ZWQgYnJhY2VzLgorXGRlZlxteWxicmFjZSB7e1x0dFxjaGFyMTIzfX0KK1xkZWZcbXlyYnJhY2Uge3tcdHRcY2hhcjEyNX19CitcbGV0XHs9XG15bGJyYWNlCitcbGV0XH09XG15cmJyYWNlCitcYmVnaW5ncm91cAorICAlIERlZmluaXRpb25zIHRvIHByb2R1Y2UgXHsgYW5kIFx9IGNvbW1hbmRzIGZvciBpbmRpY2VzLAorICAlIGFuZCBAeyBhbmQgQH0gZm9yIHRoZSBhdXggZmlsZS4KKyAgXGNhdGNvZGVgXHsgPSBcb3RoZXIgXGNhdGNvZGVgXH0gPSBcb3RoZXIKKyAgXGNhdGNvZGVgXFsgPSAxIFxjYXRjb2RlYFxdID0gMgorICBcY2F0Y29kZWBcISA9IDAgXGNhdGNvZGVgXFwgPSBcb3RoZXIKKyAgIWdkZWYhbGJyYWNlY21kW1x7XSUKKyAgIWdkZWYhcmJyYWNlY21kW1x9XSUKKyAgIWdkZWYhbGJyYWNlYXRjbWRbQHtdJQorICAhZ2RlZiFyYnJhY2VhdGNtZFtAfV0lCishZW5kZ3JvdXAKKworJSBBY2NlbnRzOiBALCBAZG90YWNjZW50IEByaW5nYWNjZW50IEB1YmFyYWNjZW50IEB1ZG90YWNjZW50CislIE90aGVycyBhcmUgZGVmaW5lZCBieSBwbGFpbiBUZVg6IEBgIEAnIEAiIEBeIEB+IEA9IEB1IEB2IEBILgorXGxldFwsID0gXGMKK1xsZXRcZG90YWNjZW50ID0gXC4KK1xkZWZccmluZ2FjY2VudCMxe3tcYWNjZW50MjMgIzF9fQorXGxldFx0aWVhY2NlbnQgPSBcdAorXGxldFx1YmFyYWNjZW50ID0gXGIKK1xsZXRcdWRvdGFjY2VudCA9IFxkCisKKyUgT3RoZXIgc3BlY2lhbCBjaGFyYWN0ZXJzOiBAcXVlc3Rpb25kb3duIEBleGNsYW1kb3duCislIFBsYWluIFRlWCBkZWZpbmVzOiBAQUEgQEFFIEBPIEBPRSBATCAocGx1cyBsb3dlcmNhc2UgdmVyc2lvbnMpIEBzcy4KK1xkZWZccXVlc3Rpb25kb3duez9gfQorXGRlZlxleGNsYW1kb3dueyFgfQorCislIERvdGxlc3MgaSBhbmQgZG90bGVzcyBqLCB1c2VkIGZvciBhY2NlbnRzLgorXGRlZlxpbWFjcm97aX0KK1xkZWZcam1hY3Jve2p9CitcZGVmXGRvdGxlc3MjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxpbWFjcm8gXHB0ZXhpCisgIFxlbHNlXGlmeFx0ZW1wXGptYWNybyBcagorICBcZWxzZSBcZXJybWVzc2FnZXtAZG90bGVzcyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggaSBvciBqfSUKKyAgXGZpXGZpCit9CisKKyUgQmUgc3VyZSB3ZSdyZSBpbiBob3Jpem9udGFsIG1vZGUgd2hlbiBkb2luZyBhIHRpZSwgc2luY2Ugd2UgbWFrZSBzcGFjZQorJSBlcXVpdmFsZW50IHRvIHRoaXMgaW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudHMuIE90aGVyd2lzZSwgYSBzcGFjZQorJSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSB3aWxsIHN0YXJ0IHdpdGggXHBlbmFsdHkgLS0gYW5kCislIHNpbmNlIFxwZW5hbHR5IGlzIHZhbGlkIGluIHZlcnRpY2FsIG1vZGUsIHdlJ2QgZW5kIHVwIHB1dHRpbmcgdGhlCislIHBlbmFsdHkgb24gdGhlIHZlcnRpY2FsIGxpc3QgaW5zdGVhZCBvZiBpbiB0aGUgbmV3IHBhcmFncmFwaC4KK3tcY2F0Y29kZWBAID0gMTEKKyAlIEF2b2lkIHVzaW5nIFxATSBkaXJlY3RseSwgYmVjYXVzZSB0aGF0IGNhdXNlcyB0cm91YmxlCisgJSBpZiB0aGUgZGVmaW5pdGlvbiBpcyB3cml0dGVuIGludG8gYW4gaW5kZXggZmlsZS4KKyBcZ2xvYmFsXGxldFx0aWVwZW5hbHR5ID0gXEBNCisgXGdkZWZcdGlle1xsZWF2ZXZtb2RlXHBlbmFsdHlcdGllcGVuYWx0eVwgfQorfQorCislIEA6IGZvcmNlcyBub3JtYWwgc2l6ZSB3aGl0ZXNwYWNlIGZvbGxvd2luZy4KK1xkZWZcOntcc3BhY2VmYWN0b3I9MTAwMCB9CisKKyUgQCogZm9yY2VzIGEgbGluZSBicmVhay4KK1xkZWZcKntcaGZpbFxicmVha1xoYm94e31caWdub3Jlc3BhY2VzfQorCislIEAvIGFsbG93cyBhIGxpbmUgYnJlYWsuCitcbGV0XC89XGFsbG93YnJlYWsKKworJSBALiBpcyBhbiBlbmQtb2Ytc2VudGVuY2UgcGVyaW9kLgorXGRlZlwuey5cc3BhY2VmYWN0b3I9MzAwMCB9CisKKyUgQCEgaXMgYW4gZW5kLW9mLXNlbnRlbmNlIGJhbmcuCitcZGVmXCF7IVxzcGFjZWZhY3Rvcj0zMDAwIH0KKworJSBAPyBpcyBhbiBlbmQtb2Ytc2VudGVuY2UgcXVlcnkuCitcZGVmXD97P1xzcGFjZWZhY3Rvcj0zMDAwIH0KKworJSBAdyBwcmV2ZW50cyBhIHdvcmQgYnJlYWsuICBXaXRob3V0IHRoZSBcbGVhdmV2bW9kZSwgQHcgYXQgdGhlCislIGJlZ2lubmluZyBvZiBhIHBhcmFncmFwaCwgd2hlbiBUZVggaXMgc3RpbGwgaW4gdmVydGljYWwgbW9kZSwgd291bGQKKyUgcHJvZHVjZSBhIHdob2xlIGxpbmUgb2Ygb3V0cHV0IGluc3RlYWQgb2Ygc3RhcnRpbmcgdGhlIHBhcmFncmFwaC4KK1xkZWZcdyMxe1xsZWF2ZXZtb2RlXGhib3h7IzF9fQorCislIEBncm91cCAuLi4gQGVuZCBncm91cCBmb3JjZXMgLi4uIHRvIGJlIGFsbCBvbiBvbmUgcGFnZSwgYnkgZW5jbG9zaW5nCislIGl0IGluIGEgVGVYIHZib3guICBXZSB1c2UgXHZ0b3AgaW5zdGVhZCBvZiBcdmJveCB0byBjb25zdHJ1Y3QgdGhlIGJveAorJSB0byBrZWVwIGl0cyBoZWlnaHQgdGhhdCBvZiBhIG5vcm1hbCBsaW5lLiAgQWNjb3JkaW5nIHRvIHRoZSBydWxlcyBmb3IKKyUgXHRvcHNraXAgKHAuMTE0IG9mIHRoZSBUZVhib29rKSwgdGhlIGdsdWUgaW5zZXJ0ZWQgaXMKKyUgbWF4IChcdG9wc2tpcCAtIFxodCAoZmlyc3QgaXRlbSksIDApLiAgSWYgdGhhdCBoZWlnaHQgaXMgbGFyZ2UsCislIHRoZXJlZm9yZSwgbm8gZ2x1ZSBpcyBpbnNlcnRlZCwgYW5kIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBoZWFkbGluZSBhbmQKKyUgdGhlIHRleHQgaXMgc21hbGwsIHdoaWNoIGxvb2tzIGJhZC4KKyUKKyUgQW5vdGhlciBjb21wbGljYXRpb24gaXMgdGhhdCB0aGUgZ3JvdXAgbWlnaHQgYmUgdmVyeSBsYXJnZS4gIFRoaXMgY2FuCislIGNhdXNlIHRoZSBnbHVlIG9uIHRoZSBwcmV2aW91cyBwYWdlIHRvIGJlIHVuZHVseSBzdHJldGNoZWQsIGJlY2F1c2UgaXQKKyUgZG9lcyBub3QgaGF2ZSBtdWNoIG1hdGVyaWFsLiAgSW4gdGhpcyBjYXNlLCBpdCdzIGJldHRlciB0byBhZGQgYW4KKyUgZXhwbGljaXQgXHZmaWxsIHNvIHRoYXQgdGhlIGV4dHJhIHNwYWNlIGlzIGF0IHRoZSBib3R0b20uICBUaGUKKyUgdGhyZXNob2xkIGZvciBkb2luZyB0aGlzIGlzIGlmIHRoZSBncm91cCBpcyBtb3JlIHRoYW4gXHZmaWxsbGltaXQKKyUgcGVyY2VudCBvZiBhIHBhZ2UgKFx2ZmlsbGxpbWl0IGNhbiBiZSBjaGFuZ2VkIGluc2lkZSBvZiBAdGV4KS4KKyUKK1xuZXdib3hcZ3JvdXBib3gKK1xkZWZcdmZpbGxsaW1pdHswLjd9CislCitcZGVmXGdyb3Vwe1xiZWdpbmdyb3VwCisgIFxpZm51bVxjYXRjb2RlMTM9XGFjdGl2ZSBcZWxzZQorICAgIFxlcnJoZWxwID0gXGdyb3VwaW52YWxpZGhlbHAKKyAgICBcZXJybWVzc2FnZXtAZ3JvdXAgaW52YWxpZCBpbiBjb250ZXh0IHdoZXJlIGZpbGxpbmcgaXMgZW5hYmxlZH0lCisgIFxmaQorICAlCisgICUgVGhlIFx2dG9wIHdlIHN0YXJ0IGJlbG93IHByb2R1Y2VzIGEgYm94IHdpdGggbm9ybWFsIGhlaWdodCBhbmQgbGFyZ2UKKyAgJSBkZXB0aDsgdGh1cywgVGVYIHB1dHMgXGJhc2VsaW5lc2tpcCBnbHVlIGJlZm9yZSBpdCwgYW5kICh3aGVuIHRoZQorICAlIG5leHQgbGluZSBvZiB0ZXh0IGlzIGRvbmUpIFxsaW5lc2tpcCBnbHVlIGFmdGVyIGl0LiAgKFNlZSBwLjgyIG9mCisgICUgdGhlIFRlWGJvb2suKSAgVGh1cywgc3BhY2UgYmVsb3cgaXMgbm90IHF1aXRlIGVxdWFsIHRvIHNwYWNlCisgICUgYWJvdmUuICBCdXQgaXQncyBwcmV0dHkgY2xvc2UuCisgIFxkZWZcRWdyb3VweyUKKyAgICBcZWdyb3VwICAgICAgICAgICAlIEVuZCB0aGUgXHZ0b3AuCisgICAgJSBcZGltZW4wIGlzIHRoZSB2ZXJ0aWNhbCBzaXplIG9mIHRoZSBncm91cCdzIGJveC4KKyAgICBcZGltZW4wID0gXGh0XGdyb3VwYm94ICBcYWR2YW5jZVxkaW1lbjAgYnkgXGRwXGdyb3VwYm94CisgICAgJSBcZGltZW4yIGlzIGhvdyBtdWNoIHNwYWNlIGlzIGxlZnQgb24gdGhlIHBhZ2UgKG1vcmUgb3IgbGVzcykuCisgICAgXGRpbWVuMiA9IFxwYWdlaGVpZ2h0ICAgXGFkdmFuY2VcZGltZW4yIGJ5IC1ccGFnZXRvdGFsCisgICAgJSBpZiB0aGUgZ3JvdXAgZG9lc24ndCBmaXQgb24gdGhlIGN1cnJlbnQgcGFnZSwgYW5kIGl0J3MgYSBiaWcgYmlnCisgICAgJSBncm91cCwgZm9yY2UgYSBwYWdlIGJyZWFrLgorICAgIFxpZmRpbSBcZGltZW4wID4gXGRpbWVuMgorICAgICAgXGlmZGltIFxwYWdldG90YWwgPCBcdmZpbGxsaW1pdFxwYWdlaGVpZ2h0CisgICAgICAgIFxwYWdlCisgICAgICBcZmkKKyAgICBcZmkKKyAgICBcY29weVxncm91cGJveAorICAgIFxlbmRncm91cCAgICAgICAgICUgRW5kIHRoZSBcZ3JvdXAuCisgIH0lCisgICUKKyAgXHNldGJveFxncm91cGJveCA9IFx2dG9wXGJncm91cAorICAgICUgV2UgaGF2ZSB0byBwdXQgYSBzdHJ1dCBvbiB0aGUgbGFzdCBsaW5lIGluIGNhc2UgdGhlIEBncm91cCBpcyBpbgorICAgICUgdGhlIG1pZHN0IG9mIGFuIGV4YW1wbGUsIHJhdGhlciB0aGFuIGNvbXBsZXRlbHkgZW5jbG9zaW5nIGl0LgorICAgICUgT3RoZXJ3aXNlLCB0aGUgaW50ZXJsaW5lIHNwYWNlIGJldHdlZW4gdGhlIGxhc3QgbGluZSBvZiB0aGUgZ3JvdXAKKyAgICAlIGFuZCB0aGUgZmlyc3QgbGluZSBhZnRlcndhcmRzIGlzIHRvbyBzbWFsbC4gIEJ1dCB3ZSBjYW4ndCBwdXQgdGhlCisgICAgJSBzdHJ1dCBpbiBcRWdyb3VwLCBzaW5jZSB0aGVyZSBpdCB3b3VsZCBiZSBvbiBhIGxpbmUgYnkgaXRzZWxmLgorICAgICUgSGVuY2UgdGhpcyBqdXN0IGluc2VydHMgYSBzdHJ1dCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggbGluZS4KKyAgICBcZXZlcnlwYXIgPSB7XHN0cnV0fSUKKyAgICAlCisgICAgJSBTaW5jZSB3ZSBoYXZlIGEgc3RydXQgb24gZXZlcnkgbGluZSwgd2UgZG9uJ3QgbmVlZCBhbnkgb2YgVGVYJ3MKKyAgICAlIG5vcm1hbCBpbnRlcmxpbmUgc3BhY2luZy4KKyAgICBcb2ZmaW50ZXJsaW5lc2tpcAorICAgICUKKyAgICAlIE9LLCBidXQgbm93IHdlIGhhdmUgdG8gZG8gc29tZXRoaW5nIGFib3V0IGJsYW5rCisgICAgJSBsaW5lcyBpbiB0aGUgaW5wdXQgaW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudHMsIHdoaWNoIG5vcm1hbGx5CisgICAgJSBqdXN0IHR1cm4gaW50byBcbGlzcHBhciwgd2hpY2ggd2lsbCBpbnNlcnQgbm8gc3BhY2Ugbm93IHRoYXQgd2UndmUKKyAgICAlIHR1cm5lZCBvZmYgdGhlIGludGVybGluZSBzcGFjZS4gIFNpbXBsZXN0IGlzIHRvIG1ha2UgdGhlbSBiZSBhbgorICAgICUgZW1wdHkgcGFyYWdyYXBoLgorICAgIFxpZnhccGFyXGxpc3BwYXIKKyAgICAgIFxlZGVmXHBhcntcbGVhdmV2bW9kZSBccGFyfSUKKyAgICAgICUKKyAgICAgICUgUmVzZXQgXl5NJ3MgZGVmaW5pdGlvbiB0byBuZXcgZGVmaW5pdGlvbiBvZiBccGFyLgorICAgICAgXG9iZXlsaW5lcworICAgIFxmaQorICAgICUKKyAgICAlIERvIEBjb21tZW50IHNpbmNlIHdlIGFyZSBjYWxsZWQgaW5zaWRlIGFuIGVudmlyb25tZW50IHN1Y2ggYXMKKyAgICAlIEBleGFtcGxlLCB3aGVyZSBlYWNoIGVuZC1vZi1saW5lIGluIHRoZSBpbnB1dCBjYXVzZXMgYW4KKyAgICAlIGVuZC1vZi1saW5lIGluIHRoZSBvdXRwdXQuICBXZSBkb24ndCB3YW50IHRoZSBlbmQtb2YtbGluZSBhZnRlcgorICAgICUgdGhlIGBAZ3JvdXAnIHRvIHB1dCBleHRyYSBzcGFjZSBpbiB0aGUgb3V0cHV0LiAgU2luY2UgQGdyb3VwCisgICAgJSBzaG91bGQgYXBwZWFyIG9uIGEgbGluZSBieSBpdHNlbGYgKGFjY29yZGluZyB0byB0aGUgVGV4aW5mbworICAgICUgbWFudWFsKSwgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgZWF0aW5nIGFueSB1c2VyIHRleHQuCisgICAgXGNvbW1lbnQKK30KKyUKKyUgVGVYIHB1dHMgaW4gYW4gXGVzY2FwZWNoYXIgKGkuZS4sIGBAJykgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaGVscAorJSBtZXNzYWdlLCBzbyB0aGlzIGVuZHMgdXAgcHJpbnRpbmcgYEBncm91cCBjYW4gb25seSAuLi4nLgorJQorXG5ld2hlbHBcZ3JvdXBpbnZhbGlkaGVscHslCitncm91cCBjYW4gb25seSBiZSB1c2VkIGluIGVudmlyb25tZW50cyBzdWNoIGFzIEBleGFtcGxlLF5eSiUKK3doZXJlIGVhY2ggbGluZSBvZiBpbnB1dCBwcm9kdWNlcyBhIGxpbmUgb2Ygb3V0cHV0Ln0KKworJSBAbmVlZCBzcGFjZS1pbi1taWxzCislIGZvcmNlcyBhIHBhZ2UgYnJlYWsgaWYgdGhlcmUgaXMgbm90IHNwYWNlLWluLW1pbHMgcmVtYWluaW5nLgorCitcbmV3ZGltZW5cbWlsICBcbWlsPTAuMDAxaW4KKworXGRlZlxuZWVke1xwYXJzZWFyZ1xuZWVkeH0KKworJSBPbGQgZGVmaW5pdGlvbi0tZGlkbid0IHdvcmsuCislXGRlZlxuZWVkeCAjMXtccGFyICUKKyUlIFRoaXMgbWV0aG9kIHRyaWVzIHRvIG1ha2UgVGVYIGJyZWFrIHRoZSBwYWdlIG5hdHVyYWxseQorJSUgaWYgdGhlIGRlcHRoIG9mIHRoZSBib3ggZG9lcyBub3QgZml0LgorJXtcYmFzZWxpbmVza2lwPTBwdCUKKyVcdnRvcCB0byAjMVxtaWx7XHZmaWx9XGtlcm4gLSMxXG1pbFxub2JyZWFrCislXHByZXZkZXB0aD0tMTAwMHB0CislfX0KKworXGRlZlxuZWVkeCMxeyUKKyAgJSBFbnN1cmUgdmVydGljYWwgbW9kZSwgc28gd2UgZG9uJ3QgbWFrZSBhIGJpZyBib3ggaW4gdGhlIG1pZGRsZSBvZiBhCisgICUgcGFyYWdyYXBoLgorICBccGFyCisgICUKKyAgJSBJZiB0aGUgQG5lZWQgdmFsdWUgaXMgbGVzcyB0aGFuIG9uZSBsaW5lIHNwYWNlLCBpdCdzIHVzZWxlc3MuCisgIFxkaW1lbjAgPSAjMVxtaWwKKyAgXGRpbWVuMiA9IFxodFxzdHJ1dGJveAorICBcYWR2YW5jZVxkaW1lbjIgYnkgXGRwXHN0cnV0Ym94CisgIFxpZmRpbVxkaW1lbjAgPiBcZGltZW4yCisgICAgJQorICAgICUgRG8gYSBcc3RydXQganVzdCB0byBtYWtlIHRoZSBoZWlnaHQgb2YgdGhpcyBib3ggYmUgbm9ybWFsLCBzbyB0aGUKKyAgICAlIG5vcm1hbCBsZWFkaW5nIGlzIGluc2VydGVkIHJlbGF0aXZlIHRvIHRoZSBwcmVjZWRpbmcgbGluZS4KKyAgICAlIEFuZCBhIHBhZ2UgYnJlYWsgaGVyZSBpcyBmaW5lLgorICAgIFx2dG9wIHRvICMxXG1pbHtcc3RydXRcdmZpbH0lCisgICAgJQorICAgICUgVGVYIGRvZXMgbm90IGV2ZW4gY29uc2lkZXIgcGFnZSBicmVha3MgaWYgYSBwZW5hbHR5IGFkZGVkIHRvIHRoZQorICAgICUgbWFpbiB2ZXJ0aWNhbCBsaXN0IGlzIDEwMDAwIG9yIG1vcmUuICBCdXQgaW4gb3JkZXIgdG8gc2VlIGlmIHRoZQorICAgICUgZW1wdHkgYm94IHdlIGp1c3QgYWRkZWQgZml0cyBvbiB0aGUgcGFnZSwgd2UgbXVzdCBtYWtlIGl0IGNvbnNpZGVyCisgICAgJSBwYWdlIGJyZWFrcy4gIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBkb24ndCB3YW50IHRvIGFjdHVhbGx5IGJyZWFrIHRoZQorICAgICUgcGFnZSBhZnRlciB0aGUgZW1wdHkgYm94LiAgU28gd2UgdXNlIGEgcGVuYWx0eSBvZiA5OTk5LgorICAgICUKKyAgICAlIFRoZXJlIGlzIGFuIGV4dHJlbWVseSBzbWFsbCBjaGFuY2UgdGhhdCBUZVggd2lsbCBhY3R1YWxseSBicmVhayB0aGUKKyAgICAlIHBhZ2UgYXQgdGhpcyBccGVuYWx0eSwgaWYgdGhlcmUgYXJlIG5vIG90aGVyIGZlYXNpYmxlIGJyZWFrcG9pbnRzIGluCisgICAgJSBzaWdodC4gIChJZiB0aGUgdXNlciBpcyB1c2luZyBsb3RzIG9mIGJpZyBAZ3JvdXAgY29tbWFuZHMsIHdoaWNoCisgICAgJSBhbG1vc3QtYnV0LW5vdC1xdWl0ZSBmaWxsIHVwIGEgcGFnZSwgVGVYIHdpbGwgaGF2ZSBhIGhhcmQgdGltZSBkb2luZworICAgICUgZ29vZCBwYWdlIGJyZWFraW5nLCBmb3IgZXhhbXBsZS4pICBIb3dldmVyLCBJIGNvdWxkIG5vdCBjb25zdHJ1Y3QgYW4KKyAgICAlIGV4YW1wbGUgd2hlcmUgYSBwYWdlIGJyb2tlIGF0IHRoaXMgXHBlbmFsdHk7IGlmIGl0IGhhcHBlbnMgaW4gYSByZWFsCisgICAgJSBkb2N1bWVudCwgdGhlbiB3ZSBjYW4gcmVjb25zaWRlciBvdXIgc3RyYXRlZ3kuCisgICAgXHBlbmFsdHk5OTk5CisgICAgJQorICAgICUgQmFjayB1cCBieSB0aGUgc2l6ZSBvZiB0aGUgYm94LCB3aGV0aGVyIHdlIGRpZCBhIHBhZ2UgYnJlYWsgb3Igbm90LgorICAgIFxrZXJuIC0jMVxtaWwKKyAgICAlCisgICAgJSBEbyBub3QgYWxsb3cgYSBwYWdlIGJyZWFrIHJpZ2h0IGFmdGVyIHRoaXMga2Vybi4KKyAgICBcbm9icmVhaworICBcZmkKK30KKworJSBAYnIgICBmb3JjZXMgcGFyYWdyYXBoIGJyZWFrCisKK1xsZXRcYnIgPSBccGFyCisKKyUgQGRvdHN7fSBvdXRwdXQgYW4gZWxsaXBzaXMgdXNpbmcgdGhlIGN1cnJlbnQgZm9udC4KKyUgV2UgZG8gLjVlbSBwZXIgcGVyaW9kIHNvIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHNwYWNpbmcgaW4gYSB0eXBld3JpdGVyCislIGZvbnQgYXMgdGhyZWUgYWN0dWFsIHBlcmlvZCBjaGFyYWN0ZXJzLgorJQorXGRlZlxkb3RzeyUKKyAgXGxlYXZldm1vZGUKKyAgXGhib3ggdG8gMS41ZW17JQorICAgIFxoc2tpcCAwcHQgcGx1cyAwLjI1ZmlsIG1pbnVzIDAuMjVmaWwKKyAgICAuXGhzcy5caHNzLiUKKyAgICBcaHNraXAgMHB0IHBsdXMgMC41ZmlsIG1pbnVzIDAuNWZpbAorICB9JQorfQorCislIEBlbmRkb3Rze30gaXMgYW4gZW5kLW9mLXNlbnRlbmNlIGVsbGlwc2lzLgorJQorXGRlZlxlbmRkb3RzeyUKKyAgXGxlYXZldm1vZGUKKyAgXGhib3ggdG8gMmVteyUKKyAgICBcaHNraXAgMHB0IHBsdXMgMC4yNWZpbCBtaW51cyAwLjI1ZmlsCisgICAgLlxoc3MuXGhzcy5caHNzLiUKKyAgICBcaHNraXAgMHB0IHBsdXMgMC41ZmlsIG1pbnVzIDAuNWZpbAorICB9JQorICBcc3BhY2VmYWN0b3I9MzAwMAorfQorCislIEBwYWdlIGZvcmNlcyB0aGUgc3RhcnQgb2YgYSBuZXcgcGFnZS4KKyUKK1xkZWZccGFnZXtccGFyXHZmaWxsXHN1cGVyZWplY3R9CisKKyUgQGV4ZGVudCB0ZXh0Li4uLgorJSBvdXRwdXRzIHRleHQgb24gc2VwYXJhdGUgbGluZSBpbiByb21hbiBmb250LCBzdGFydGluZyBhdCBzdGFuZGFyZCBwYWdlIG1hcmdpbgorCislIFRoaXMgcmVjb3JkcyB0aGUgYW1vdW50IG9mIGluZGVudCBpbiB0aGUgaW5uZXJtb3N0IGVudmlyb25tZW50LgorJSBUaGF0J3MgaG93IG11Y2ggXGV4ZGVudCBzaG91bGQgdGFrZSBvdXQuCitcbmV3c2tpcFxleGRlbnRhbW91bnQKKworJSBUaGlzIGRlZm4gaXMgdXNlZCBpbnNpZGUgZmlsbCBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZGVmdW4uCitcZGVmXGV4ZGVudHtccGFyc2VhcmdcZXhkZW50eXl5fQorXGRlZlxleGRlbnR5eXkgIzF7e1xoZmlsXGJyZWFrXGhib3h7XGtlcm4gLVxleGRlbnRhbW91bnR7XHJtIzF9fVxoZmlsXGJyZWFrfX0KKworJSBUaGlzIGRlZm4gaXMgdXNlZCBpbnNpZGUgbm9maWxsIGVudmlyb25tZW50cyBzdWNoIGFzIEBleGFtcGxlLgorXGRlZlxub2ZpbGxleGRlbnR7XHBhcnNlYXJnXG5vZmlsbGV4ZGVudHl5eX0KK1xkZWZcbm9maWxsZXhkZW50eXl5ICMxe3tcYWR2YW5jZSBcbGVmdHNraXAgYnkgLVxleGRlbnRhbW91bnQKK1xsZWZ0bGluZXtcaHNraXBcbGVmdHNraXB7XHJtIzF9fX19CisKKyUgQGlubWFyZ2lue1dISUNIfXtURVhUfSBwdXRzIFRFWFQgaW4gdGhlIFdISUNIIG1hcmdpbiBuZXh0IHRvIHRoZSBjdXJyZW50CislIHBhcmFncmFwaC4gIEZvciBtb3JlIGdlbmVyYWwgcHVycG9zZXMsIHVzZSB0aGUgXG1hcmdpbiBpbnNlcnRpb24KKyUgY2xhc3MuICBXSElDSCBpcyBgbCcgb3IgYHInLgorJQorXG5ld3NraXBcaW5tYXJnaW5zcGFjaW5nIFxpbm1hcmdpbnNwYWNpbmc9MWNtCitcZGVmXHN0cnV0ZGVwdGh7XGRwXHN0cnV0Ym94fQorJQorXGRlZlxkb2lubWFyZ2luIzEjMntcc3RydXRcdmFkanVzdHslCisgIFxub2JyZWFrCisgIFxrZXJuLVxzdHJ1dGRlcHRoCisgIFx2dG9wIHRvIFxzdHJ1dGRlcHRoeyUKKyAgICBcYmFzZWxpbmVza2lwPVxzdHJ1dGRlcHRoCisgICAgXHZzcworICAgICUgaWYgeW91IGhhdmUgbXVsdGlwbGUgbGluZXMgb2Ygc3R1ZmYgdG8gcHV0IGhlcmUsIHlvdSdsbCBuZWVkIHRvCisgICAgJSBtYWtlIHRoZSB2Ym94IHlvdXJzZWxmIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplLgorICAgIFxpZngjMWwlCisgICAgICBcbGxhcHtcaWdub3Jlc3BhY2VzICMyXGhza2lwXGlubWFyZ2luc3BhY2luZ30lCisgICAgXGVsc2UKKyAgICAgIFxybGFwe1xoc2tpcFxoc2l6ZSBcaHNraXBcaW5tYXJnaW5zcGFjaW5nIFxpZ25vcmVzcGFjZXMgIzJ9JQorICAgIFxmaQorICAgIFxudWxsCisgIH0lCit9fQorXGRlZlxpbmxlZnRtYXJnaW57XGRvaW5tYXJnaW4gbH0KK1xkZWZcaW5yaWdodG1hcmdpbntcZG9pbm1hcmdpbiByfQorJQorJSBAaW5tYXJnaW57VEVYVCBbLCBSSUdIVC1URVhUXX0KKyUgKGlmIFJJR0hULVRFWFQgaXMgZ2l2ZW4sIHVzZSBURVhUIGZvciBsZWZ0IHBhZ2UsIFJJR0hULVRFWFQgZm9yIHJpZ2h0OworJSBlbHNlIHVzZSBURVhUIGZvciBib3RoKS4KKyUKK1xkZWZcaW5tYXJnaW4jMXtccGFyc2Vpbm1hcmdpbiAjMSwsXGZpbmlzaH0KK1xkZWZccGFyc2Vpbm1hcmdpbiMxLCMyLCMzXGZpbmlzaHslIG5vdCBwZXJmZWN0LCBidXQgYmV0dGVyIHRoYW4gbm90aGluZy4KKyAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMyfSUKKyAgXGlmZGltXHdkMCA+IDBwdAorICAgIFxkZWZcbGVmdHRleHR7IzF9JSAgaGF2ZSBib3RoIHRleHRzCisgICAgXGRlZlxyaWdodHRleHR7IzJ9JQorICBcZWxzZQorICAgIFxkZWZcbGVmdHRleHR7IzF9JSAgaGF2ZSBvbmx5IG9uZSB0ZXh0CisgICAgXGRlZlxyaWdodHRleHR7IzF9JQorICBcZmkKKyAgJQorICBcaWZvZGRccGFnZW5vCisgICAgXGRlZlx0ZW1we1xpbnJpZ2h0bWFyZ2luXHJpZ2h0dGV4dH0lIG9kZCBwYWdlIC0+IG91dHNpZGUgaXMgcmlnaHQgbWFyZ2luCisgIFxlbHNlCisgICAgXGRlZlx0ZW1we1xpbmxlZnRtYXJnaW5cbGVmdHRleHR9JQorICBcZmkKKyAgXHRlbXAKK30KKworJSBAaW5jbHVkZSBmaWxlICAgIGluc2VydCB0ZXh0IG9mIHRoYXQgZmlsZSBhcyBpbnB1dC4KKyUgQWxsb3cgbm9ybWFsIGNoYXJhY3RlcnMgdGhhdCAgd2UgbWFrZSBhY3RpdmUgaW4gdGhlIGFyZ3VtZW50IChhIGZpbGUgbmFtZSkuCitcZGVmXGluY2x1ZGV7XGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgXFw9XG90aGVyCisgIFxjYXRjb2RlYH49XG90aGVyCisgIFxjYXRjb2RlYF49XG90aGVyCisgIFxjYXRjb2RlYF89XG90aGVyCisgIFxjYXRjb2RlYHw9XG90aGVyCisgIFxjYXRjb2RlYDw9XG90aGVyCisgIFxjYXRjb2RlYD49XG90aGVyCisgIFxjYXRjb2RlYCs9XG90aGVyCisgIFxwYXJzZWFyZ1xpbmNsdWRlenp6fQorJSBSZXN0b3JlIGFjdGl2ZSBjaGFycyBmb3IgaW5jbHVkZWQgZmlsZS4KK1xkZWZcaW5jbHVkZXp6eiMxe1xlbmRncm91cFxiZWdpbmdyb3VwCisgICUgUmVhZCB0aGUgaW5jbHVkZWQgZmlsZSBpbiBhIGdyb3VwIHNvIG5lc3RlZCBAaW5jbHVkZSdzIHdvcmsuCisgIFxkZWZcdGhpc2ZpbGV7IzF9JQorICBcbGV0XHZhbHVlPVxleHBhbmRhYmxldmFsdWUKKyAgXGlucHV0XHRoaXNmaWxlCitcZW5kZ3JvdXB9CisKK1xkZWZcdGhpc2ZpbGV7fQorCislIEBjZW50ZXIgbGluZQorJSBvdXRwdXRzIHRoYXQgbGluZSwgY2VudGVyZWQuCislCitcZGVmXGNlbnRlcntccGFyc2VhcmdcZG9jZW50ZXJ9CitcZGVmXGRvY2VudGVyIzF7eyUKKyAgXGlmaG1vZGUgXGhmaWxcYnJlYWsgXGZpCisgIFxhZHZhbmNlXGhzaXplIGJ5IC1cbGVmdHNraXAKKyAgXGFkdmFuY2VcaHNpemUgYnkgLVxyaWdodHNraXAKKyAgXGxpbmV7XGhmaWwgXGlnbm9yZXNwYWNlcyMxXHVuc2tpcCBcaGZpbH0lCisgIFxpZmhtb2RlIFxicmVhayBcZmkKK319CisKKyUgQHNwIG4gICBvdXRwdXRzIG4gbGluZXMgb2YgdmVydGljYWwgc3BhY2UKKworXGRlZlxzcHtccGFyc2Vhcmdcc3B4eHh9CitcZGVmXHNweHh4ICMxe1x2c2tpcCAjMVxiYXNlbGluZXNraXB9CisKKyUgQGNvbW1lbnQgLi4ubGluZSB3aGljaCBpcyBpZ25vcmVkLi4uCislIEBjIGlzIHRoZSBzYW1lIGFzIEBjb21tZW50CislIEBpZ25vcmUgLi4uIEBlbmQgaWdub3JlICBpcyBhbm90aGVyIHdheSB0byB3cml0ZSBhIGNvbW1lbnQKKworXGRlZlxjb21tZW50e1xiZWdpbmdyb3VwIFxjYXRjb2RlYFxeXk09XG90aGVyJQorXGNhdGNvZGVgXEA9XG90aGVyIFxjYXRjb2RlYFx7PVxvdGhlciBcY2F0Y29kZWBcfT1cb3RoZXIlCitcY29tbWVudHh4eH0KK3tcY2F0Y29kZWBcXl5NPVxvdGhlciBcZ2RlZlxjb21tZW50eHh4IzFeXk17XGVuZGdyb3VwfX0KKworXGxldFxjPVxjb21tZW50CisKKyUgQHBhcmFncmFwaGluZGVudCBOQ0hBUlMKKyUgV2UnbGwgdXNlIGVtcyBmb3IgTkNIQVJTLCBjbG9zZSBlbm91Z2guCislIE5DSEFSUyBjYW4gYWxzbyBiZSB0aGUgd29yZCBgYXNpcycgb3IgYG5vbmUnLgorJSBXZSBjYW5ub3QgZmVhc2libHkgaW1wbGVtZW50IEBwYXJhZ3JhcGhpbmRlbnQgYXNpcywgdGhvdWdoLgorJQorXGRlZlxhc2lzd29yZHthc2lzfSAlIG5vIHRyYW5zbGF0aW9uLCB0aGVzZSBhcmUga2V5d29yZHMKK1xkZWZcbm9uZXdvcmR7bm9uZX0KKyUKK1xkZWZccGFyYWdyYXBoaW5kZW50e1xwYXJzZWFyZ1xkb3BhcmFncmFwaGluZGVudH0KK1xkZWZcZG9wYXJhZ3JhcGhpbmRlbnQjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxhc2lzd29yZAorICBcZWxzZQorICAgIFxpZnhcdGVtcFxub25ld29yZAorICAgICAgXGRlZmF1bHRwYXJpbmRlbnQgPSAwcHQKKyAgICBcZWxzZQorICAgICAgXGRlZmF1bHRwYXJpbmRlbnQgPSAjMWVtCisgICAgXGZpCisgIFxmaQorICBccGFyaW5kZW50ID0gXGRlZmF1bHRwYXJpbmRlbnQKK30KKworJSBAZXhhbXBsZWluZGVudCBOQ0hBUlMKKyUgV2UnbGwgdXNlIGVtcyBmb3IgTkNIQVJTIGxpa2UgQHBhcmFncmFwaGluZGVudC4KKyUgSXQgc2VlbXMgQGV4YW1wbGVpbmRlbnQgYXNpcyBpc24ndCBuZWNlc3NhcnksIGJ1dAorJSBJIHByZXNlcnZlIGl0IHRvIG1ha2UgaXQgc2ltaWxhciB0byBAcGFyYWdyYXBoaW5kZW50LgorXGRlZlxleGFtcGxlaW5kZW50e1xwYXJzZWFyZ1xkb2V4YW1wbGVpbmRlbnR9CitcZGVmXGRvZXhhbXBsZWluZGVudCMxeyUKKyAgXGRlZlx0ZW1weyMxfSUKKyAgXGlmeFx0ZW1wXGFzaXN3b3JkCisgIFxlbHNlCisgICAgXGlmeFx0ZW1wXG5vbmV3b3JkCisgICAgICBcbGlzcG5hcnJvd2luZyA9IDBwdAorICAgIFxlbHNlCisgICAgICBcbGlzcG5hcnJvd2luZyA9ICMxZW0KKyAgICBcZmkKKyAgXGZpCit9CisKKyUgQGZpcnN0cGFyYWdyYXBoaW5kZW50IFdPUkQKKyUgSWYgV09SRCBpcyBgbm9uZScsIHRoZW4gc3VwcHJlc3MgaW5kZW50YXRpb24gb2YgdGhlIGZpcnN0IHBhcmFncmFwaAorJSBhZnRlciBhIHNlY3Rpb24gaGVhZGluZy4gIElmIFdPUkQgaXMgYGluc2VydCcsIHRoZW4gZG8gaW5kZW50IGF0IHN1Y2gKKyUgcGFyYWdyYXBocy4KKyUKKyUgVGhlIHBhcmFncmFwaCBpbmRlbnRhdGlvbiBpcyBzdXBwcmVzc2VkIG9yIG5vdCBieSBjYWxsaW5nCislIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50LCB3aGljaCB0aGUgc2VjdGlvbmluZyBjb21tYW5kcyBkby4KKyUgV2Ugc3dpdGNoIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgYmFjayBhbmQgZm9ydGggYWNjb3JkaW5nIHRvIFdPUkQuCislIEJ5IGRlZmF1bHQsIHdlIHN1cHByZXNzIGluZGVudGF0aW9uLgorJQorXGRlZlxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50e1xkb3N1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR9CitcbmV3ZGltZW5cY3VycmVudHBhcmluZGVudAorJQorXGRlZlxpbnNlcnR3b3Jke2luc2VydH0KKyUKK1xkZWZcZmlyc3RwYXJhZ3JhcGhpbmRlbnR7XHBhcnNlYXJnXGRvZmlyc3RwYXJhZ3JhcGhpbmRlbnR9CitcZGVmXGRvZmlyc3RwYXJhZ3JhcGhpbmRlbnQjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxub25ld29yZAorICAgIFxsZXRcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudCA9IFxkb3N1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQKKyAgXGVsc2VcaWZ4XHRlbXBcaW5zZXJ0d29yZAorICAgIFxsZXRcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudCA9IFxyZWxheAorICBcZWxzZQorICAgIFxlcnJoZWxwID0gXEVNc2ltcGxlCisgICAgXGVycm1lc3NhZ2V7VW5rbm93biBAZmlyc3RwYXJhZ3JhcGhpbmRlbnQgb3B0aW9uIGBcdGVtcCd9JQorICBcZmlcZmkKK30KKworJSBIZXJlIGlzIGhvdyB3ZSBhY3R1YWxseSBzdXBwcmVzcyBpbmRlbnRhdGlvbi4gIFJlZGVmaW5lIFxldmVyeXBhciB0bworJSBca2VybiBiYWNrd2FyZHMgYnkgXHBhcmluZGVudCwgYW5kIHRoZW4gcmVzZXQgaXRzZWxmIHRvIGVtcHR5LgorJQorJSBXZSBhbHNvIG1ha2UgXGluZGVudCBpdHNlbGYgbm90IGFjdHVhbGx5IGRvIGFueXRoaW5nIHVudGlsIHRoZSBuZXh0CislIHBhcmFncmFwaC4KKyUKK1xnZGVmXGRvc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudHslCisgIFxnZGVmXGluZGVudHslCisgICAgXHJlc3RvcmVmaXJzdHBhcmFncmFwaGluZGVudAorICAgIFxpbmRlbnQKKyAgfSUKKyAgXGdkZWZcbm9pbmRlbnR7JQorICAgIFxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnQKKyAgICBcbm9pbmRlbnQKKyAgfSUKKyAgXGdsb2JhbFxldmVyeXBhciA9IHslCisgICAgXGtlcm4gLVxwYXJpbmRlbnQKKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50CisgIH0lCit9CisKK1xnZGVmXHJlc3RvcmVmaXJzdHBhcmFncmFwaGluZGVudHslCisgIFxnbG9iYWwgXGxldCBcaW5kZW50ID0gXHB0ZXhpbmRlbnQKKyAgXGdsb2JhbCBcbGV0IFxub2luZGVudCA9IFxwdGV4bm9pbmRlbnQKKyAgXGdsb2JhbCBcZXZlcnlwYXIgPSB7fSUKK30KKworCislIEBhc2lzIGp1c3QgeWllbGRzIGl0cyBhcmd1bWVudC4gIFVzZWQgd2l0aCBAdGFibGUsIGZvciBleGFtcGxlLgorJQorXGRlZlxhc2lzIzF7IzF9CisKKyUgQG1hdGggb3V0cHV0cyBpdHMgYXJndW1lbnQgaW4gbWF0aCBtb2RlLgorJSBXZSBkb24ndCB1c2UgJCdzIGRpcmVjdGx5IGluIHRoZSBkZWZpbml0aW9uIG9mIFxtYXRoIGJlY2F1c2Ugd2UgbmVlZAorJSB0byBzZXQgY2F0Y29kZXMgYWNjb3JkaW5nIHRvIHBsYWluIFRlWCBmaXJzdCwgdG8gYWxsb3cgZm9yIHN1YnNjcmlwdHMsCislIHN1cGVyc2NyaXB0cywgc3BlY2lhbCBtYXRoIGNoYXJzLCBldGMuCislCitcbGV0XGltcGxpY2l0bWF0aCA9ICQlJCBmb250LWxvY2sgZml4CislCislIE9uZSBjb21wbGljYXRpb246IF8gdXN1YWxseSBtZWFucyBzdWJzY3JpcHRzLCBidXQgaXQgY291bGQgYWxzbyBtZWFuCislIGFuIGFjdHVhbCBfIGNoYXJhY3RlciwgYXMgaW4gQG1hdGh7QHZhcntzb21lX3ZhcmlhYmxlfSArIDF9LiAgU28gbWFrZQorJSBfIHdpdGhpbiBAbWF0aCBiZSBhY3RpdmUgKG1hdGhjb2RlICI4MDAwKSwgYW5kIGRpc3Rpbmd1aXNoIGJ5IHNlZWluZworJSBpZiB0aGUgY3VycmVudCBmYW1pbHkgaXMgXHNsZmFtLCB3aGljaCBpcyB3aGF0IEB2YXIgdXNlcy4KKyUKK3tcY2F0Y29kZVx1bmRlckNoYXIgPSBcYWN0aXZlCitcZ2RlZlxtYXRodW5kZXJzY29yZXslCisgIFxjYXRjb2RlXHVuZGVyQ2hhcj1cYWN0aXZlCisgIFxkZWZfe1xpZm51bVxmYW09XHNsZmFtIFxfXGVsc2Vcc2JcZml9JQorfX0KKyUKKyUgQW5vdGhlciBjb21wbGljYXRpb246IHdlIHdhbnQgXFwgKGFuZCBAXCkgdG8gb3V0cHV0IGEgXCBjaGFyYWN0ZXIuCislIEZZSSwgcGxhaW4udGV4IHVzZXMgXFwgYXMgYSB0ZW1wb3JhcnkgY29udHJvbCBzZXF1ZW5jZSAod2h5PyksIGJ1dAorJSB0aGlzIGlzIG5vdCBhZHZlcnRpc2VkIGFuZCB3ZSBkb24ndCBjYXJlLiAgVGV4aW5mbyBkb2VzIG5vdAorJSBvdGhlcndpc2UgZGVmaW5lIEBcLgorJQorJSBUaGUgXG1hdGhjaGFyIGlzIGNsYXNzPTA9b3JkaW5hcnksIGZhbWlseT03PXR0ZmFtLCBwb3NpdGlvbj01Qz1cLgorXGRlZlxtYXRoYmFja3NsYXNoe1xpZm51bVxmYW09XHR0ZmFtIFxtYXRoY2hhciIwNzVDIFxlbHNlXGJhY2tzbGFzaCBcZml9CislCitcZGVmXG1hdGh7JQorICBcdGV4CisgIFxtYXRoY29kZWBcXz0iODAwMCBcbWF0aHVuZGVyc2NvcmUKKyAgXGxldFxcID0gXG1hdGhiYWNrc2xhc2gKKyAgXG1hdGhhY3RpdmUKKyAgXGltcGxpY2l0bWF0aFxmaW5pc2htYXRofQorXGRlZlxmaW5pc2htYXRoIzF7IzFcaW1wbGljaXRtYXRoXEV0ZXh9CisKKyUgU29tZSBhY3RpdmUgY2hhcmFjdGVycyAoc3VjaCBhcyA8KSBhcmUgc3BhY2VkIGRpZmZlcmVudGx5IGluIG1hdGguCislIFdlIGhhdmUgdG8gcmVzZXQgdGhlaXIgZGVmaW5pdGlvbnMgaW4gY2FzZSB0aGUgQG1hdGggd2FzIGFuCislIGFyZ3VtZW50IHRvIGEgY29tbWFuZCB3aGljaCBzZXQgdGhlIGNhdGNvZGVzIChzdWNoIGFzIEBpdGVtIG9yIEBzZWN0aW9uKS4KKyUKK3sKKyAgXGNhdGNvZGVgXiA9IFxhY3RpdmUKKyAgXGNhdGNvZGVgPCA9IFxhY3RpdmUKKyAgXGNhdGNvZGVgPiA9IFxhY3RpdmUKKyAgXGNhdGNvZGVgKyA9IFxhY3RpdmUKKyAgXGdkZWZcbWF0aGFjdGl2ZXslCisgICAgXGxldF4gPSBccHRleGhhdAorICAgIFxsZXQ8ID0gXHB0ZXhsZXNzCisgICAgXGxldD4gPSBccHRleGd0cgorICAgIFxsZXQrID0gXHB0ZXhwbHVzCisgIH0KK30KKworJSBAYnVsbGV0IGFuZCBAbWludXMgbmVlZCB0aGUgc2FtZSB0cmVhdG1lbnQgYXMgQG1hdGgsIGp1c3QgYWJvdmUuCitcZGVmXGJ1bGxldHtcaW1wbGljaXRtYXRoXHB0ZXhidWxsZXRcaW1wbGljaXRtYXRofQorXGRlZlxtaW51c3tcaW1wbGljaXRtYXRoLVxpbXBsaWNpdG1hdGh9CisKKyUgQHJlZmlsbCBpcyBhIG5vLW9wLgorXGxldFxyZWZpbGw9XHJlbGF4CisKKyUgSWYgd29ya2luZyBvbiBhIGxhcmdlIGRvY3VtZW50IGluIGNoYXB0ZXJzLCBpdCBpcyBjb252ZW5pZW50IHRvCislIGJlIGFibGUgdG8gZGlzYWJsZSBpbmRleGluZywgY3Jvc3MtcmVmZXJlbmNpbmcsIGFuZCBjb250ZW50cywgZm9yIHRlc3QgcnVucy4KKyUgVGhpcyBpcyBkb25lIHdpdGggQG5vdmFsaWRhdGUgKGJlZm9yZSBAc2V0ZmlsZW5hbWUpLgorJQorXG5ld2lmXGlmbGlua3MgXGxpbmtzdHJ1ZSAlIGJ5IGRlZmF1bHQgd2Ugd2FudCB0aGUgYXV4IGZpbGVzLgorXGxldFxub3ZhbGlkYXRlID0gXGxpbmtzZmFsc2UKKworJSBAc2V0ZmlsZW5hbWUgaXMgZG9uZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHRleGluZm8gZmlsZS4KKyUgU28gb3BlbiBoZXJlIHRoZSBmaWxlcyB3ZSBuZWVkIHRvIGhhdmUgb3BlbiB3aGlsZSByZWFkaW5nIHRoZSBpbnB1dC4KKyUgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBtYWtlIGEgLmZtdCBmaWxlIGZvciB0ZXhpbmZvLgorXGRlZlxzZXRmaWxlbmFtZXslCisgICBcaWZsaW5rcworICAgICBccmVhZGF1eGZpbGUKKyAgIFxmaSAlIFxvcGVuaW5kaWNlcyBuZWVkcyB0byBkbyBzb21lIHdvcmsgaW4gYW55IGNhc2UuCisgICBcb3BlbmluZGljZXMKKyAgIFxmaXhiYWNrc2xhc2ggICUgVHVybiBvZmYgaGFjayB0byBzd2FsbG93IGBcaW5wdXQgdGV4aW5mbycuCisgICBcZ2xvYmFsXGxldFxzZXRmaWxlbmFtZT1cY29tbWVudCAlIElnbm9yZSBleHRyYSBAc2V0ZmlsZW5hbWUgY21kcy4KKyAgICUKKyAgICUgSWYgdGV4aW5mby5jbmYgaXMgcHJlc2VudCBvbiB0aGUgc3lzdGVtLCByZWFkIGl0LgorICAgJSBVc2VmdWwgZm9yIHNpdGUtd2lkZSBAYWZvdXJwYXBlciwgZXRjLgorICAgJSBKdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGNsb3NlIHRoZSBpbnB1dCBzdHJlYW0gYmVmb3JlIHRoZSBcaW5wdXQuCisgICBcb3BlbmluIDEgdGV4aW5mby5jbmYKKyAgIFxpZmVvZjEgXGxldFx0ZW1wPVxyZWxheCBcZWxzZSBcZGVmXHRlbXB7XGlucHV0IHRleGluZm8uY25mIH1cZmkKKyAgIFxjbG9zZWluMQorICAgXHRlbXAKKyAgICUKKyAgIFxjb21tZW50ICUgSWdub3JlIHRoZSBhY3R1YWwgZmlsZW5hbWUuCit9CisKKyUgQ2FsbGVkIGZyb20gXHNldGZpbGVuYW1lLgorJQorXGRlZlxvcGVuaW5kaWNlc3slCisgIFxuZXdpbmRleHtjcH0lCisgIFxuZXdjb2RlaW5kZXh7Zm59JQorICBcbmV3Y29kZWluZGV4e3ZyfSUKKyAgXG5ld2NvZGVpbmRleHt0cH0lCisgIFxuZXdjb2RlaW5kZXh7a3l9JQorICBcbmV3Y29kZWluZGV4e3BnfSUKK30KKworJSBAYnllLgorXG91dGVyXGRlZlxieWV7XHBhZ2VhbGlnbm1hY3JvXHRyYWNpbmdzdGF0cz0xXHB0ZXhlbmR9CisKKworXG1lc3NhZ2V7cGRmLH0KKyUgYWRvYmUgYHBvcnRhYmxlJyBkb2N1bWVudCBmb3JtYXQKK1xuZXdjb3VudFx0ZW1wbnVtCitcbmV3Y291bnRcbG5rY291bnQKK1xuZXd0b2tzXGZpbGVuYW1lCitcbmV3Y291bnRcZmlsZW5hbWVsZW5ndGgKK1xuZXdjb3VudFxwZ24KK1xuZXd0b2tzXHRva3NBCitcbmV3dG9rc1x0b2tzQgorXG5ld3Rva3NcdG9rc0MKK1xuZXd0b2tzXHRva3NECitcbmV3Ym94XGJveEEKK1xuZXdjb3VudFxjb3VudEEKK1xuZXdpZlxpZnBkZgorXG5ld2lmXGlmcGRmbWFrZXBhZ2VkZXN0CisKK1xpZnhccGRmb3V0cHV0XHVuZGVmaW5lZAorICBccGRmZmFsc2UKKyAgXGxldFxwZGZta2Rlc3QgPSBcZ29iYmxlCisgIFxsZXRccGRmdXJsID0gXGdvYmJsZQorICBcbGV0XGVuZGxpbmsgPSBccmVsYXgKKyAgXGxldFxsaW5rY29sb3IgPSBccmVsYXgKKyAgXGxldFxwZGZtYWtlb3V0bGluZXMgPSBccmVsYXgKK1xlbHNlCisgIFxwZGZ0cnVlCisgIFxwZGZvdXRwdXQgPSAxCisgIFxpbnB1dCBwZGZjb2xvcgorICBccGRmY2F0YWxvZ3svUGFnZU1vZGUgL1VzZU91dGxpbmVzfSUKKyAgXGRlZlxkb3BkZmltYWdlIzEjMiMzeyUKKyAgICBcZGVmXGltYWdld2lkdGh7IzJ9JQorICAgIFxkZWZcaW1hZ2VoZWlnaHR7IzN9JQorICAgICUgd2l0aG91dCBcaW1tZWRpYXRlLCBwZGZ0ZXggc2VnIGZhdWx0cyB3aGVuIHRoZSBzYW1lIGltYWdlIGlzCisgICAgJSBpbmNsdWRlZCB0d2ljZS4gIChWZXJzaW9uIDMuMTQxNTktcHJlLTEuMC11bm9mZmljaWFsLTIwMDEwNzA0LikKKyAgICBcaWZudW1ccGRmdGV4dmVyc2lvbiA8IDE0CisgICAgICBcaW1tZWRpYXRlXHBkZmltYWdlCisgICAgXGVsc2UKKyAgICAgIFxpbW1lZGlhdGVccGRmeGltYWdlCisgICAgXGZpCisgICAgICBcaWZ4XGVtcHR5XGltYWdld2lkdGhcZWxzZSB3aWR0aCBcaW1hZ2V3aWR0aCBcZmkKKyAgICAgIFxpZnhcZW1wdHlcaW1hZ2VoZWlnaHRcZWxzZSBoZWlnaHQgXGltYWdlaGVpZ2h0IFxmaQorICAgICAgXGlmbnVtXHBkZnRleHZlcnNpb248MTMKKyAgICAgICAgICMxLnBkZiUKKyAgICAgICBcZWxzZQorICAgICAgICAgeyMxLnBkZn0lCisgICAgICAgXGZpCisgICAgXGlmbnVtXHBkZnRleHZlcnNpb24gPCAxNCBcZWxzZQorICAgICAgXHBkZnJlZnhpbWFnZSBccGRmbGFzdHhpbWFnZQorICAgIFxmaX0KKyAgXGRlZlxwZGZta2Rlc3QjMXt7XG5vcm1hbHR1cm5vZmZhY3RpdmUgXHBkZmRlc3QgbmFtZXsjMX0geHl6fX0KKyAgXGRlZlxwZGZta3BnbiMxeyMxfQorICBcbGV0XGxpbmtjb2xvciA9IFxCbHVlICAlIHdhcyBDeWFuLCBidXQgdGhhdCBzZWVtcyBsaWdodD8KKyAgXGRlZlxlbmRsaW5re1xCbGFja1xwZGZlbmRsaW5rfQorICAlIEFkZGluZyBvdXRsaW5lcyB0byBQREY7IG1hY3JvcyBmb3IgY2FsY3VsYXRpbmcgc3RydWN0dXJlIG9mIG91dGxpbmVzCisgICUgY29tZSBmcm9tIFBldHIgT2xzYWsKKyAgXGRlZlxleHBudW1iZXIjMXtcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSMxXGVuZGNzbmFtZVxyZWxheCAwJQorICAgIFxlbHNlIFxjc25hbWUjMVxlbmRjc25hbWUgXGZpfQorICBcZGVmXGFkdmFuY2VudW1iZXIjMXtcdGVtcG51bT1cZXhwbnVtYmVyeyMxfVxyZWxheAorICAgIFxhZHZhbmNlXHRlbXBudW0gYnkgMQorICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMxXGVuZGNzbmFtZXtcdGhlXHRlbXBudW19fQorICAlCisgICUgIzEgaXMgdGhlIHNlY3Rpb24gdGV4dC4gICMyIGlzIHRoZSBwZGYgZXhwcmVzc2lvbiBmb3IgdGhlIG51bWJlcgorICAlIG9mIHN1YmVudHJpZXMgKG9yIGVtcHR5LCBmb3Igc3Vic3Vic2VjdGlvbnMpLiAgIzMgaXMgdGhlIG5vZGUKKyAgJSB0ZXh0LCB3aGljaCBtaWdodCBiZSBlbXB0eSBpZiB0aGlzIHRvYyBlbnRyeSBoYWQgbm8KKyAgJSBjb3JyZXNwb25kaW5nIG5vZGUuICAjNCBpcyB0aGUgcGFnZSBudW1iZXIuCisgICUgCisgIFxkZWZcZG9wZGZvdXRsaW5lIzEjMiMzIzR7JQorICAgICUgR2VuZXJhdGUgYSBsaW5rIHRvIHRoZSBub2RlIHRleHQgaWYgdGhhdCBleGlzdHM7IGVsc2UsIHVzZSB0aGUKKyAgICAlIHBhZ2UgbnVtYmVyLiAgV2UgY291bGQgZ2VuZXJhdGUgYSBkZXN0aW5hdGlvbiBmb3IgdGhlIHNlY3Rpb24KKyAgICAlIHRleHQgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzZWN0aW9uIGhhcyBubyBub2RlLCBidXQgaXQgZG9lc24ndAorICAgICUgc2VlbSB3b3J0aHdoaWxlLCBzaW5jZSBtb3N0IGRvY3VtZW50cyBhcmUgbm9ybWFsbHkgc3RydWN0dXJlZC4KKyAgICBcZGVmXHBkZm91dGxpbmVkZXN0eyMzfSUKKyAgICBcaWZ4XHBkZm91dGxpbmVkZXN0XGVtcHR5IFxkZWZccGRmb3V0bGluZWRlc3R7IzR9XGZpCisgICAgJQorICAgIFxwZGZvdXRsaW5lIGdvdG8gbmFtZXtccGRmbWtwZ257XHBkZm91dGxpbmVkZXN0fX0jMnsjMX0lCisgIH0KKyAgJQorICBcZGVmXHBkZm1ha2VvdXRsaW5lc3slCisgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgIFxpZmVvZiAxXGVsc2VcYmVnaW5ncm91cAorICAgICAgXGNsb3NlaW4gMQorICAgICAgJSBUaGFuaCdzIGhhY2sgLyBwcm9wZXIgYnJhY2VzIGluIGJvb2ttYXJrcworICAgICAgXGVkZWZcbXlsYnJhY2V7XGlmdHJ1ZSBcc3RyaW5ne1xlbHNlfVxmaX1cbGV0XHs9XG15bGJyYWNlCisgICAgICBcZWRlZlxteXJicmFjZXtcaWZmYWxzZXtcZWxzZVxzdHJpbmd9XGZpfVxsZXRcfT1cbXlyYnJhY2UKKyAgICAgICUKKyAgICAgICUgUmVhZCB0b2Mgc2lsZW50bHksIHRvIGdldCBjb3VudHMgb2Ygc3ViZW50cmllcyBmb3IgXHBkZm91dGxpbmUuCisgICAgICBcZGVmXG51bWNoYXBlbnRyeSMjMSMjMiMjMyMjNHtcZGVmXHRoaXNjaGFwbnVteyMjMn19JQorICAgICAgXGRlZlxudW1zZWNlbnRyeSMjMSMjMiMjMyMjNHslCisgICAgICAgIFxkZWZcdGhpc3NlY251bXsjIzJ9JQorICAgICAgICBcYWR2YW5jZW51bWJlcntjaGFwXHRoaXNjaGFwbnVtfX0lCisgICAgICBcZGVmXG51bXN1YnNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRlZlx0aGlzc3Vic2VjbnVteyMjMn0lCisgICAgICAgIFxhZHZhbmNlbnVtYmVye3NlY1x0aGlzc2VjbnVtfX0lCisgICAgICBcZGVmXG51bXN1YnN1YnNlY2VudHJ5IyMxIyMyIyMzIyM0e1xhZHZhbmNlbnVtYmVye3N1YnNlY1x0aGlzc3Vic2VjbnVtfX0lCisgICAgICAlCisgICAgICAlIHVzZSBcZGVmIHJhdGhlciB0aGFuIFxsZXQgaGVyZSBiZWNhdXNlIHdlIHJlZGVmaW5lIFxjaGFwZW50cnkgZXQKKyAgICAgICUgYWwuIGEgc2Vjb25kIHRpbWUsIGJlbG93LgorICAgICAgXGRlZlxhcHBlbnRyeXtcbnVtY2hhcGVudHJ5fSUKKyAgICAgIFxkZWZcYXBwc2VjZW50cnl7XG51bXNlY2VudHJ5fSUKKyAgICAgIFxkZWZcYXBwc3Vic2VjZW50cnl7XG51bXN1YnNlY2VudHJ5fSUKKyAgICAgIFxkZWZcYXBwc3Vic3Vic2VjZW50cnl7XG51bXN1YnN1YnNlY2VudHJ5fSUKKyAgICAgIFxkZWZcdW5uY2hhcGVudHJ5e1xudW1jaGFwZW50cnl9JQorICAgICAgXGRlZlx1bm5zZWNlbnRyeXtcbnVtc2VjZW50cnl9JQorICAgICAgXGRlZlx1bm5zdWJzZWNlbnRyeXtcbnVtc3Vic2VjZW50cnl9JQorICAgICAgXGRlZlx1bm5zdWJzdWJzZWNlbnRyeXtcbnVtc3Vic3Vic2VjZW50cnl9JQorICAgICAgXGlucHV0IFxqb2JuYW1lLnRvYworICAgICAgJQorICAgICAgJSBSZWFkIHRvYyBzZWNvbmQgdGltZSwgdGhpcyB0aW1lIGFjdHVhbGx5IHByb2R1Y2luZyB0aGUgb3V0bGluZXMuCisgICAgICAlIFRoZSBgLScgbWVhbnMgdGFrZSB0aGUgXGV4cG51bWJlciBhcyB0aGUgYWJzb2x1dGUgbnVtYmVyIG9mCisgICAgICAlIHN1YmVudHJpZXMsIHdoaWNoIHdlIGNhbGN1bGF0ZWQgb24gb3VyIGZpcnN0IHJlYWQgb2YgdGhlIC50b2MgYWJvdmUuCisgICAgICAlIAorICAgICAgJSBXZSB1c2UgdGhlIG5vZGUgbmFtZXMgYXMgdGhlIGRlc3RpbmF0aW9ucy4KKyAgICAgIFxkZWZcbnVtY2hhcGVudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e2NvdW50LVxleHBudW1iZXJ7Y2hhcCMjMn19eyMjM317IyM0fX0lCisgICAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e2NvdW50LVxleHBudW1iZXJ7c2VjIyMyfX17IyMzfXsjIzR9fSUKKyAgICAgIFxkZWZcbnVtc3Vic2VjZW50cnkjIzEjIzIjIzMjIzR7JQorICAgICAgICBcZG9wZGZvdXRsaW5leyMjMX17Y291bnQtXGV4cG51bWJlcntzdWJzZWMjIzJ9fXsjIzN9eyMjNH19JQorICAgICAgXGRlZlxudW1zdWJzdWJzZWNlbnRyeSMjMSMjMiMjMyMjNHslIGNvdW50IGlzIGFsd2F5cyB6ZXJvCisgICAgICAgIFxkb3BkZm91dGxpbmV7IyMxfXt9eyMjM317IyM0fX0lCisgICAgICAlCisgICAgICAlIE1ha2Ugc3BlY2lhbCBjaGFyYWN0ZXJzIG5vcm1hbCBmb3Igd3JpdGluZyB0byB0aGUgcGRmIGZpbGUuCisgICAgICBcaW5kZXhub2ZvbnRzCisgICAgICBcdHVybm9mZmFjdGl2ZQorICAgICAgXGlucHV0IFxqb2JuYW1lLnRvYworICAgIFxlbmRncm91cFxmaQorICB9CisgICUKKyAgXGRlZlxtYWtlbGlua3MgIzEseyUKKyAgICBcZGVmXHBhcmFtc3sjMX1cZGVmXEV7RU5EfSUKKyAgICBcaWZ4XHBhcmFtc1xFCisgICAgICBcbGV0XG5leHRtYWtlbGlua3M9XHJlbGF4CisgICAgXGVsc2UKKyAgICAgIFxsZXRcbmV4dG1ha2VsaW5rcz1cbWFrZWxpbmtzCisgICAgICBcaWZudW1cbG5rY291bnQ+MCxcZmkKKyAgICAgIFxwaWNrbnVteyMxfSUKKyAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19CisgICAgICAgIGdvdG8gbmFtZXtccGRmbWtwZ257XHRoZVxwZ259fSUKKyAgICAgIFxsaW5rY29sb3IgIzElCisgICAgICBcYWR2YW5jZVxsbmtjb3VudCBieSAxJQorICAgICAgXGVuZGxpbmsKKyAgICBcZmkKKyAgICBcbmV4dG1ha2VsaW5rcworICB9CisgIFxkZWZccGlja251bSMxe1xleHBhbmRhZnRlclxwbiMxfQorICBcZGVmXHBuIzF7JQorICAgIFxkZWZccHsjMX0lCisgICAgXGlmeFxwXGxicmFjZQorICAgICAgXGxldFxuZXh0cG49XHBwbgorICAgIFxlbHNlCisgICAgICBcbGV0XG5leHRwbj1ccHBubgorICAgICAgXGRlZlxmaXJzdHsjMX0KKyAgICBcZmkKKyAgICBcbmV4dHBuCisgIH0KKyAgXGRlZlxwcG4jMXtccGduPSMxXGdvYmJsZX0KKyAgXGRlZlxwcG5ue1xwZ249XGZpcnN0fQorICBcZGVmXHBkZm1rbG5rIzF7XGxua2NvdW50PTBcbWFrZWxpbmtzICMxLEVORCx9CisgIFxkZWZcYWRkdG9rZW5zIzEjMntcZWRlZlxhZGR0b2tze1xub2V4cGFuZCMxPXtcdGhlIzEjMn19XGFkZHRva3N9CisgIFxkZWZcc2tpcHNwYWNlcyMxe1xkZWZcUFB7IzF9XGRlZlxEe3x9JQorICAgIFxpZnhcUFBcRFxsZXRcbmV4dHNwXHJlbGF4CisgICAgXGVsc2VcbGV0XG5leHRzcFxza2lwc3BhY2VzCisgICAgICBcaWZ4XHBcc3BhY2VcZWxzZVxhZGR0b2tlbnN7XGZpbGVuYW1lfXtcUFB9JQorICAgICAgICBcYWR2YW5jZVxmaWxlbmFtZWxlbmd0aCBieSAxCisgICAgICBcZmkKKyAgICBcZmkKKyAgICBcbmV4dHNwfQorICBcZGVmXGdldGZpbGVuYW1lIzF7XGZpbGVuYW1lbGVuZ3RoPTBcZXhwYW5kYWZ0ZXJcc2tpcHNwYWNlcyMxfFxyZWxheH0KKyAgXGlmbnVtXHBkZnRleHZlcnNpb24gPCAxNAorICAgIFxsZXQgXHN0YXJ0bGluayBccGRmYW5ub3RsaW5rCisgIFxlbHNlCisgICAgXGxldCBcc3RhcnRsaW5rIFxwZGZzdGFydGxpbmsKKyAgXGZpCisgIFxkZWZccGRmdXJsIzF7JQorICAgIFxiZWdpbmdyb3VwCisgICAgICBcbm9ybWFsdHVybm9mZmFjdGl2ZVxkZWZcQHtAfSUKKyAgICAgIFxsZXRcdmFsdWU9XGV4cGFuZGFibGV2YWx1ZQorICAgICAgXGxlYXZldm1vZGVcUmVkCisgICAgICBcc3RhcnRsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSUKKyAgICAgICAgdXNlcnsvU3VidHlwZSAvTGluayAvQSA8PCAvUyAvVVJJIC9VUkkgKCMxKSA+Pn0lCisgICAgICAgICUgIzEKKyAgICBcZW5kZ3JvdXB9CisgIFxkZWZccGRmZ2V0dG9rcyMxLntcc2V0Ym94XGJveEE9XGhib3h7XHRva3NBPXsjMS59XHRva3NCPXt9XG1ha2V0b2tzfX0KKyAgXGRlZlxhZGR0b2tlbnMjMSMye1xlZGVmXGFkZHRva3N7XG5vZXhwYW5kIzE9e1x0aGUjMSMyfX1cYWRkdG9rc30KKyAgXGRlZlxhZG4jMXtcYWRkdG9rZW5ze1x0b2tzQ317IzF9XGdsb2JhbFxjb3VudEE9MVxsZXRcbmV4dD1cbWFrZXRva3N9CisgIFxkZWZccG9wdG9rcyMxIzJ8RU5EVE9LU3x7XGxldFxmaXJzdD0jMVx0b2tzRD17IzF9XHRva3NBPXsjMn19CisgIFxkZWZcbWFrZXRva3N7JQorICAgIFxleHBhbmRhZnRlclxwb3B0b2tzXHRoZVx0b2tzQXxFTkRUT0tTfAorICAgIFxpZnhcZmlyc3QwXGFkbjAKKyAgICBcZWxzZVxpZnhcZmlyc3QxXGFkbjEgXGVsc2VcaWZ4XGZpcnN0MlxhZG4yIFxlbHNlXGlmeFxmaXJzdDNcYWRuMworICAgIFxlbHNlXGlmeFxmaXJzdDRcYWRuNCBcZWxzZVxpZnhcZmlyc3Q1XGFkbjUgXGVsc2VcaWZ4XGZpcnN0NlxhZG42CisgICAgXGVsc2VcaWZ4XGZpcnN0N1xhZG43IFxlbHNlXGlmeFxmaXJzdDhcYWRuOCBcZWxzZVxpZnhcZmlyc3Q5XGFkbjkKKyAgICBcZWxzZQorICAgICAgXGlmbnVtMD1cY291bnRBXGVsc2VcbWFrZWxpbmtcZmkKKyAgICAgIFxpZnhcZmlyc3QuXGxldFxuZXh0PVxkb25lXGVsc2UKKyAgICAgICAgXGxldFxuZXh0PVxtYWtldG9rcworICAgICAgICBcYWRkdG9rZW5ze1x0b2tzQn17XHRoZVx0b2tzRH0KKyAgICAgICAgXGlmeFxmaXJzdCxcYWRkdG9rZW5ze1x0b2tzQn17XHNwYWNlfVxmaQorICAgICAgXGZpCisgICAgXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpCisgICAgXG5leHR9CisgIFxkZWZcbWFrZWxpbmt7XGFkZHRva2Vuc3tcdG9rc0J9JQorICAgIHtcbm9leHBhbmRccGRmbGlua3tcdGhlXHRva3NDfX1cdG9rc0M9e31cZ2xvYmFsXGNvdW50QT0wfQorICBcZGVmXHBkZmxpbmsjMXslCisgICAgXHN0YXJ0bGluayBhdHRyey9Cb3JkZXIgWzAgMCAwXX0gZ290byBuYW1le1xwZGZta3BnbnsjMX19CisgICAgXGxpbmtjb2xvciAjMVxlbmRsaW5rfQorICBcZGVmXGRvbmV7XGVkZWZcc3R7XGdsb2JhbFxub2V4cGFuZFx0b2tzQT17XHRoZVx0b2tzQn19XHN0fQorXGZpICUgXGlmeFxwZGZvdXRwdXQKKworCitcbWVzc2FnZXtmb250cyx9CislIEZvbnQtY2hhbmdlIGNvbW1hbmRzLgorCislIFRleGluZm8gc29ydCBvZiBzdXBwb3J0cyB0aGUgc2FucyBzZXJpZiBmb250IHN0eWxlLCB3aGljaCBwbGFpbiBUZVggZG9lcyBub3QuCislIFNvIHdlIHNldCB1cCBhIFxzZiBhbmFsb2dvdXMgdG8gcGxhaW4ncyBccm0sIGV0Yy4KK1xuZXdmYW1cc2ZmYW0KK1xkZWZcc2Z7XGZhbT1cc2ZmYW0gXHRlbnNmfQorXGxldFxsaSA9IFxzZiAlIFNvbWV0aW1lcyB3ZSBjYWxsIGl0IFxsaSwgbm90IFxzZi4KKworJSBXZSBkb24ndCBuZWVkIG1hdGggZm9yIHRoaXMgb25lLgorXGRlZlx0dHNse1x0ZW50dHNsfQorCislIERlZmF1bHQgbGVhZGluZy4KK1xuZXdkaW1lblx0ZXh0bGVhZGluZyAgXHRleHRsZWFkaW5nID0gMTMuMnB0CisKKyUgU2V0IHRoZSBiYXNlbGluZXNraXAgdG8gIzEsIGFuZCB0aGUgbGluZXNraXAgYW5kIHN0cnV0IHNpemUKKyUgY29ycmVzcG9uZGluZ2x5LiAgVGhlcmUgaXMgbm8gZGVlcCBtZWFuaW5nIGJlaGluZCB0aGVzZSBtYWdpYyBudW1iZXJzCislIHVzZWQgYXMgZmFjdG9yczsgdGhleSBqdXN0IG1hdGNoIChjbG9zZWx5IGVub3VnaCkgd2hhdCBLbnV0aCBkZWZpbmVkLgorJQorXGRlZlxsaW5lc2tpcGZhY3RvcnsuMDgzMzN9CitcZGVmXHN0cnV0aGVpZ2h0cGVyY2VudHsuNzA4MzN9CitcZGVmXHN0cnV0ZGVwdGhwZXJjZW50IHsuMjkxNjd9CislCitcZGVmXHNldGxlYWRpbmcjMXslCisgIFxub3JtYWxiYXNlbGluZXNraXAgPSAjMVxyZWxheAorICBcbm9ybWFsbGluZXNraXAgPSBcbGluZXNraXBmYWN0b3Jcbm9ybWFsYmFzZWxpbmVza2lwCisgIFxub3JtYWxiYXNlbGluZXMKKyAgXHNldGJveFxzdHJ1dGJveCA9XGhib3h7JQorICAgIFx2cnVsZSB3aWR0aDBwdCBoZWlnaHRcc3RydXRoZWlnaHRwZXJjZW50XGJhc2VsaW5lc2tpcAorICAgICAgICAgICAgICAgICAgICBkZXB0aCBcc3RydXRkZXB0aHBlcmNlbnQgXGJhc2VsaW5lc2tpcAorICB9JQorfQorCislIFNldCB0aGUgZm9udCBtYWNybyAjMSB0byB0aGUgZm9udCBuYW1lZCAjMiwgYWRkaW5nIG9uIHRoZQorJSBzcGVjaWZpZWQgZm9udCBwcmVmaXggKG5vcm1hbGx5IGBjbScpLgorJSAjMyBpcyB0aGUgZm9udCdzIGRlc2lnbiBzaXplLCAjNCBpcyBhIHNjYWxlIGZhY3RvcgorXGRlZlxzZXRmb250IzEjMiMzIzR7XGZvbnQjMT1cZm9udHByZWZpeCMyIzMgc2NhbGVkICM0fQorCislIFVzZSBjbSBhcyB0aGUgZGVmYXVsdCBmb250IHByZWZpeC4KKyUgVG8gc3BlY2lmeSB0aGUgZm9udCBwcmVmaXgsIHlvdSBtdXN0IGRlZmluZSBcZm9udHByZWZpeAorJSBiZWZvcmUgeW91IHJlYWQgaW4gdGV4aW5mby50ZXguCitcaWZ4XGZvbnRwcmVmaXhcdW5kZWZpbmVkCitcZGVmXGZvbnRwcmVmaXh7Y219CitcZmkKKyUgU3VwcG9ydCBmb250IGZhbWlsaWVzIHRoYXQgZG9uJ3QgdXNlIHRoZSBzYW1lIG5hbWluZyBzY2hlbWUgYXMgQ00uCitcZGVmXHJtc2hhcGV7cn0KK1xkZWZccm1ic2hhcGV7Ynh9ICAgICAgICAgICAgICAgJXdoZXJlIHRoZSBub3JtYWwgZmFjZSBpcyBib2xkCitcZGVmXGJmc2hhcGV7Yn0KK1xkZWZcYnhzaGFwZXtieH0KK1xkZWZcdHRzaGFwZXt0dH0KK1xkZWZcdHRic2hhcGV7dHR9CitcZGVmXHR0c2xzaGFwZXtzbHR0fQorXGRlZlxpdHNoYXBle3RpfQorXGRlZlxpdGJzaGFwZXtieHRpfQorXGRlZlxzbHNoYXBle3NsfQorXGRlZlxzbGJzaGFwZXtieHNsfQorXGRlZlxzZnNoYXBle3NzfQorXGRlZlxzZmJzaGFwZXtzc30KK1xkZWZcc2NzaGFwZXtjc2N9CitcZGVmXHNjYnNoYXBle2NzY30KKworXG5ld2NvdW50XG1haW5tYWdzdGVwCitcaWZ4XGJpZ2dlclxyZWxheAorICAlIG5vdCByZWFsbHkgc3VwcG9ydGVkLgorICBcbWFpbm1hZ3N0ZXA9XG1hZ3N0ZXAxCisgIFxzZXRmb250XHRleHRybVxybXNoYXBlezEyfXsxMDAwfQorICBcc2V0Zm9udFx0ZXh0dHRcdHRzaGFwZXsxMn17MTAwMH0KK1xlbHNlCisgIFxtYWlubWFnc3RlcD1cbWFnc3RlcGhhbGYKKyAgXHNldGZvbnRcdGV4dHJtXHJtc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KKyAgXHNldGZvbnRcdGV4dHR0XHR0c2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xmaQorJSBJbnN0ZWFkIG9mIGNtYjEwLCB5b3UgbWF5IHdhbnQgdG8gdXNlIGNtYngxMC4KKyUgY21ieDEwIGlzIGEgcHJldHRpZXIgZm9udCBvbiBpdHMgb3duLCBidXQgY21iMTAKKyUgbG9va3MgYmV0dGVyIHdoZW4gZW1iZWRkZWQgaW4gYSBsaW5lIHdpdGggY21yMTAKKyUgKGluIEJvYidzIG9waW5pb24pLgorXHNldGZvbnRcdGV4dGJmXGJmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xzZXRmb250XHRleHRpdFxpdHNoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0c2xcc2xzaGFwZXsxMH17XG1haW5tYWdzdGVwfQorXHNldGZvbnRcdGV4dHNmXHNmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xzZXRmb250XHRleHRzY1xzY3NoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0dHRzbFx0dHNsc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xmb250XHRleHRpPWNtbWkxMCBzY2FsZWQgXG1haW5tYWdzdGVwCitcZm9udFx0ZXh0c3k9Y21zeTEwIHNjYWxlZCBcbWFpbm1hZ3N0ZXAKKworJSBBIGZldyBmb250cyBmb3IgQGRlZnVuLCBldGMuCitcc2V0Zm9udFxkZWZiZlxieHNoYXBlezEwfXtcbWFnc3RlcDF9ICV3YXMgMTMxNAorXHNldGZvbnRcZGVmdHRcdHRzaGFwZXsxMH17XG1hZ3N0ZXAxfQorXGRlZlxkZntcbGV0XHRlbnR0PVxkZWZ0dCBcbGV0XHRlbmJmID0gXGRlZmJmIFxiZn0KKworJSBGb250cyBmb3IgaW5kaWNlcywgZm9vdG5vdGVzLCBzbWFsbCBleGFtcGxlcyAoOXB0KS4KK1xzZXRmb250XHNtYWxscm1ccm1zaGFwZXs5fXsxMDAwfQorXHNldGZvbnRcc21hbGx0dFx0dHNoYXBlezl9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGJmXGJmc2hhcGV7MTB9ezkwMH0KK1xzZXRmb250XHNtYWxsaXRcaXRzaGFwZXs5fXsxMDAwfQorXHNldGZvbnRcc21hbGxzbFxzbHNoYXBlezl9ezEwMDB9Citcc2V0Zm9udFxzbWFsbHNmXHNmc2hhcGV7OX17MTAwMH0KK1xzZXRmb250XHNtYWxsc2Ncc2NzaGFwZXsxMH17OTAwfQorXHNldGZvbnRcc21hbGx0dHNsXHR0c2xzaGFwZXsxMH17OTAwfQorXGZvbnRcc21hbGxpPWNtbWk5CitcZm9udFxzbWFsbHN5PWNtc3k5CisKKyUgRm9udHMgZm9yIHNtYWxsIGV4YW1wbGVzICg4cHQpLgorXHNldGZvbnRcc21hbGxlcnJtXHJtc2hhcGV7OH17MTAwMH0KK1xzZXRmb250XHNtYWxsZXJ0dFx0dHNoYXBlezh9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGVyYmZcYmZzaGFwZXsxMH17ODAwfQorXHNldGZvbnRcc21hbGxlcml0XGl0c2hhcGV7OH17MTAwMH0KK1xzZXRmb250XHNtYWxsZXJzbFxzbHNoYXBlezh9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGVyc2Zcc2ZzaGFwZXs4fXsxMDAwfQorXHNldGZvbnRcc21hbGxlcnNjXHNjc2hhcGV7MTB9ezgwMH0KK1xzZXRmb250XHNtYWxsZXJ0dHNsXHR0c2xzaGFwZXsxMH17ODAwfQorXGZvbnRcc21hbGxlcmk9Y21taTgKK1xmb250XHNtYWxsZXJzeT1jbXN5OAorCislIEZvbnRzIGZvciB0aXRsZSBwYWdlOgorXHNldGZvbnRcdGl0bGVybVxybWJzaGFwZXsxMn17XG1hZ3N0ZXAzfQorXHNldGZvbnRcdGl0bGVpdFxpdGJzaGFwZXsxMH17XG1hZ3N0ZXA0fQorXHNldGZvbnRcdGl0bGVzbFxzbGJzaGFwZXsxMH17XG1hZ3N0ZXA0fQorXHNldGZvbnRcdGl0bGV0dFx0dGJzaGFwZXsxMn17XG1hZ3N0ZXAzfQorXHNldGZvbnRcdGl0bGV0dHNsXHR0c2xzaGFwZXsxMH17XG1hZ3N0ZXA0fQorXHNldGZvbnRcdGl0bGVzZlxzZmJzaGFwZXsxN317XG1hZ3N0ZXAxfQorXGxldFx0aXRsZWJmPVx0aXRsZXJtCitcc2V0Zm9udFx0aXRsZXNjXHNjYnNoYXBlezEwfXtcbWFnc3RlcDR9CitcZm9udFx0aXRsZWk9Y21taTEyIHNjYWxlZCBcbWFnc3RlcDMKK1xmb250XHRpdGxlc3k9Y21zeTEwIHNjYWxlZCBcbWFnc3RlcDQKK1xkZWZcYXV0aG9ycm17XHNlY3JtfQorXGRlZlxhdXRob3J0dHtcc2VjdHR9CisKKyUgQ2hhcHRlciAoYW5kIHVubnVtYmVyZWQpIGZvbnRzICgxNy4yOHB0KS4KK1xzZXRmb250XGNoYXBybVxybWJzaGFwZXsxMn17XG1hZ3N0ZXAyfQorXHNldGZvbnRcY2hhcGl0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDN9Citcc2V0Zm9udFxjaGFwc2xcc2xic2hhcGV7MTB9e1xtYWdzdGVwM30KK1xzZXRmb250XGNoYXB0dFx0dGJzaGFwZXsxMn17XG1hZ3N0ZXAyfQorXHNldGZvbnRcY2hhcHR0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDN9Citcc2V0Zm9udFxjaGFwc2Zcc2Zic2hhcGV7MTd9ezEwMDB9CitcbGV0XGNoYXBiZj1cY2hhcHJtCitcc2V0Zm9udFxjaGFwc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwM30KK1xmb250XGNoYXBpPWNtbWkxMiBzY2FsZWQgXG1hZ3N0ZXAyCitcZm9udFxjaGFwc3k9Y21zeTEwIHNjYWxlZCBcbWFnc3RlcDMKKworJSBTZWN0aW9uIGZvbnRzICgxNC40cHQpLgorXHNldGZvbnRcc2Vjcm1ccm1ic2hhcGV7MTJ9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNlY2l0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDJ9Citcc2V0Zm9udFxzZWNzbFxzbGJzaGFwZXsxMH17XG1hZ3N0ZXAyfQorXHNldGZvbnRcc2VjdHRcdHRic2hhcGV7MTJ9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNlY3R0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDJ9Citcc2V0Zm9udFxzZWNzZlxzZmJzaGFwZXsxMn17XG1hZ3N0ZXAxfQorXGxldFxzZWNiZlxzZWNybQorXHNldGZvbnRcc2Vjc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwMn0KK1xmb250XHNlY2k9Y21taTEyIHNjYWxlZCBcbWFnc3RlcDEKK1xmb250XHNlY3N5PWNtc3kxMCBzY2FsZWQgXG1hZ3N0ZXAyCisKKyUgU3Vic2VjdGlvbiBmb250cyAoMTMuMTVwdCkuCitcc2V0Zm9udFxzc2Vjcm1ccm1ic2hhcGV7MTJ9e1xtYWdzdGVwaGFsZn0KK1xzZXRmb250XHNzZWNpdFxpdGJzaGFwZXsxMH17MTMxNX0KK1xzZXRmb250XHNzZWNzbFxzbGJzaGFwZXsxMH17MTMxNX0KK1xzZXRmb250XHNzZWN0dFx0dGJzaGFwZXsxMn17XG1hZ3N0ZXBoYWxmfQorXHNldGZvbnRcc3NlY3R0c2xcdHRzbHNoYXBlezEwfXsxMzE1fQorXHNldGZvbnRcc3NlY3NmXHNmYnNoYXBlezEyfXtcbWFnc3RlcGhhbGZ9CitcbGV0XHNzZWNiZlxzc2Vjcm0KK1xzZXRmb250XHNzZWNzY1xzY2JzaGFwZXsxMH17XG1hZ3N0ZXAxfQorXGZvbnRcc3NlY2k9Y21taTEyIHNjYWxlZCBcbWFnc3RlcGhhbGYKK1xmb250XHNzZWNzeT1jbXN5MTAgc2NhbGVkIDEzMTUKKyUgVGhlIHNtYWxsY2FwcyBhbmQgc3ltYm9sIGZvbnRzIHNob3VsZCBhY3R1YWxseSBiZSBzY2FsZWQgXG1hZ3N0ZXAxLjUsCislIGJ1dCB0aGF0IGlzIG5vdCBhIHN0YW5kYXJkIG1hZ25pZmljYXRpb24uCisKKyUgSW4gb3JkZXIgZm9yIHRoZSBmb250IGNoYW5nZXMgdG8gYWZmZWN0IG1vc3QgbWF0aCBzeW1ib2xzIGFuZCBsZXR0ZXJzLAorJSB3ZSBoYXZlIHRvIGRlZmluZSB0aGUgXHRleHRmb250IG9mIHRoZSBzdGFuZGFyZCBmYW1pbGllcy4gIFNpbmNlCislIHRleGluZm8gZG9lc24ndCBhbGxvdyBmb3IgcHJvZHVjaW5nIHN1YnNjcmlwdHMgYW5kIHN1cGVyc2NyaXB0cyBleGNlcHQKKyUgaW4gdGhlIG1haW4gdGV4dCwgd2UgZG9uJ3QgYm90aGVyIHRvIHJlc2V0IFxzY3JpcHRmb250IGFuZAorJSBcc2NyaXB0c2NyaXB0Zm9udCAod2hpY2ggd291bGQgYWxzbyByZXF1aXJlIGxvYWRpbmcgYSBsb3QgbW9yZSBmb250cykuCislCitcZGVmXHJlc2V0bWF0aGZvbnRzeyUKKyAgXHRleHRmb250MD1cdGVucm0gXHRleHRmb250MT1cdGVuaSBcdGV4dGZvbnQyPVx0ZW5zeQorICBcdGV4dGZvbnRcaXRmYW09XHRlbml0IFx0ZXh0Zm9udFxzbGZhbT1cdGVuc2wgXHRleHRmb250XGJmZmFtPVx0ZW5iZgorICBcdGV4dGZvbnRcdHRmYW09XHRlbnR0IFx0ZXh0Zm9udFxzZmZhbT1cdGVuc2YKK30KKworJSBUaGUgZm9udC1jaGFuZ2luZyBjb21tYW5kcyByZWRlZmluZSB0aGUgbWVhbmluZ3Mgb2YgXHRlblNUWUxFLCBpbnN0ZWFkCislIG9mIGp1c3QgXFNUWUxFLiAgV2UgZG8gdGhpcyBzbyB0aGF0IGZvbnQgY2hhbmdlcyB3aWxsIGNvbnRpbnVlIHRvIHdvcmsKKyUgaW4gbWF0aCBtb2RlLCB3aGVyZSBpdCBpcyB0aGUgY3VycmVudCBcZmFtIHRoYXQgaXMgcmVsZXZhbnQgaW4gbW9zdAorJSBjYXNlcywgbm90IHRoZSBjdXJyZW50IGZvbnQuICBQbGFpbiBUZVggZG9lcyBcZGVmXGJme1xmYW09XGJmZmFtCislIFx0ZW5iZn0sIGZvciBleGFtcGxlLiAgQnkgcmVkZWZpbmluZyBcdGVuYmYsIHdlIG9idmlhdGUgdGhlIG5lZWQgdG8KKyUgcmVkZWZpbmUgXGJmIGl0c2VsZi4KK1xkZWZcdGV4dGZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cdGV4dHJtIFxsZXRcdGVuaXQ9XHRleHRpdCBcbGV0XHRlbnNsPVx0ZXh0c2wKKyAgXGxldFx0ZW5iZj1cdGV4dGJmIFxsZXRcdGVudHQ9XHRleHR0dCBcbGV0XHNtYWxsY2Fwcz1cdGV4dHNjCisgIFxsZXRcdGVuc2Y9XHRleHRzZiBcbGV0XHRlbmk9XHRleHRpIFxsZXRcdGVuc3k9XHRleHRzeSBcbGV0XHRlbnR0c2w9XHRleHR0dHNsCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3tcdGV4dGxlYWRpbmd9fQorXGRlZlx0aXRsZWZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cdGl0bGVybSBcbGV0XHRlbml0PVx0aXRsZWl0IFxsZXRcdGVuc2w9XHRpdGxlc2wKKyAgXGxldFx0ZW5iZj1cdGl0bGViZiBcbGV0XHRlbnR0PVx0aXRsZXR0IFxsZXRcc21hbGxjYXBzPVx0aXRsZXNjCisgIFxsZXRcdGVuc2Y9XHRpdGxlc2YgXGxldFx0ZW5pPVx0aXRsZWkgXGxldFx0ZW5zeT1cdGl0bGVzeQorICBcbGV0XHRlbnR0c2w9XHRpdGxldHRzbAorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MjVwdH19CitcZGVmXHRpdGxlZm9udCMxe3tcdGl0bGVmb250c1xybSAjMX19CitcZGVmXGNoYXBmb250c3slCisgIFxsZXRcdGVucm09XGNoYXBybSBcbGV0XHRlbml0PVxjaGFwaXQgXGxldFx0ZW5zbD1cY2hhcHNsCisgIFxsZXRcdGVuYmY9XGNoYXBiZiBcbGV0XHRlbnR0PVxjaGFwdHQgXGxldFxzbWFsbGNhcHM9XGNoYXBzYworICBcbGV0XHRlbnNmPVxjaGFwc2YgXGxldFx0ZW5pPVxjaGFwaSBcbGV0XHRlbnN5PVxjaGFwc3kgXGxldFx0ZW50dHNsPVxjaGFwdHRzbAorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MTlwdH19CitcZGVmXHNlY2ZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cc2Vjcm0gXGxldFx0ZW5pdD1cc2VjaXQgXGxldFx0ZW5zbD1cc2Vjc2wKKyAgXGxldFx0ZW5iZj1cc2VjYmYgXGxldFx0ZW50dD1cc2VjdHQgXGxldFxzbWFsbGNhcHM9XHNlY3NjCisgIFxsZXRcdGVuc2Y9XHNlY3NmIFxsZXRcdGVuaT1cc2VjaSBcbGV0XHRlbnN5PVxzZWNzeSBcbGV0XHRlbnR0c2w9XHNlY3R0c2wKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezE2cHR9fQorXGRlZlxzdWJzZWNmb250c3slCisgIFxsZXRcdGVucm09XHNzZWNybSBcbGV0XHRlbml0PVxzc2VjaXQgXGxldFx0ZW5zbD1cc3NlY3NsCisgIFxsZXRcdGVuYmY9XHNzZWNiZiBcbGV0XHRlbnR0PVxzc2VjdHQgXGxldFxzbWFsbGNhcHM9XHNzZWNzYworICBcbGV0XHRlbnNmPVxzc2Vjc2YgXGxldFx0ZW5pPVxzc2VjaSBcbGV0XHRlbnN5PVxzc2Vjc3kgXGxldFx0ZW50dHNsPVxzc2VjdHRzbAorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MTVwdH19CitcbGV0XHN1YnN1YnNlY2ZvbnRzID0gXHN1YnNlY2ZvbnRzICUgTWF5YmUgbWFrZSBzc3NlYyBmb250cyBzY2FsZWQgbWFnc3RlcGhhbGY/CitcZGVmXHNtYWxsZm9udHN7JQorICBcbGV0XHRlbnJtPVxzbWFsbHJtIFxsZXRcdGVuaXQ9XHNtYWxsaXQgXGxldFx0ZW5zbD1cc21hbGxzbAorICBcbGV0XHRlbmJmPVxzbWFsbGJmIFxsZXRcdGVudHQ9XHNtYWxsdHQgXGxldFxzbWFsbGNhcHM9XHNtYWxsc2MKKyAgXGxldFx0ZW5zZj1cc21hbGxzZiBcbGV0XHRlbmk9XHNtYWxsaSBcbGV0XHRlbnN5PVxzbWFsbHN5CisgIFxsZXRcdGVudHRzbD1cc21hbGx0dHNsCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3sxMC41cHR9fQorXGRlZlxzbWFsbGVyZm9udHN7JQorICBcbGV0XHRlbnJtPVxzbWFsbGVycm0gXGxldFx0ZW5pdD1cc21hbGxlcml0IFxsZXRcdGVuc2w9XHNtYWxsZXJzbAorICBcbGV0XHRlbmJmPVxzbWFsbGVyYmYgXGxldFx0ZW50dD1cc21hbGxlcnR0IFxsZXRcc21hbGxjYXBzPVxzbWFsbGVyc2MKKyAgXGxldFx0ZW5zZj1cc21hbGxlcnNmIFxsZXRcdGVuaT1cc21hbGxlcmkgXGxldFx0ZW5zeT1cc21hbGxlcnN5CisgIFxsZXRcdGVudHRzbD1cc21hbGxlcnR0c2wKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezkuNXB0fX0KKworJSBTZXQgdGhlIGZvbnRzIHRvIHVzZSB3aXRoIHRoZSBAc21hbGwuLi4gZW52aXJvbm1lbnRzLgorXGxldFxzbWFsbGV4YW1wbGVmb250cyA9IFxzbWFsbGZvbnRzCisKKyUgQWJvdXQgXHNtYWxsZXhhbXBsZWZvbnRzLiAgSWYgd2UgdXNlIFxzbWFsbGZvbnRzICg5cHQpLCBAc21hbGxleGFtcGxlCislIGNhbiBmaXQgdGhpcyBtYW55IGNoYXJhY3RlcnM6CislICAgOC41eDExPTg2ICAgc21hbGxib29rPTcyICBhND05MCAgYTU9NjkKKyUgSWYgd2UgdXNlIFxzbWFsbGVyZm9udHMgKDhwdCksIHRoZW4gd2UgY2FuIGZpdCB0aGlzIG1hbnkgY2hhcmFjdGVyczoKKyUgICA4LjV4MTE9OTArICBzbWFsbGJvb2s9ODAgIGE0PTkwKyAgYTU9NzcKKyUgRm9yIG1lLCBzdWJqZWN0aXZlbHksIHRoZSBmZXcgZXh0cmEgY2hhcmFjdGVycyB0aGF0IGZpdCBhcmVuJ3Qgd29ydGgKKyUgdGhlIGFkZGl0aW9uYWwgc21hbGxuZXNzIG9mIDhwdC4gIFNvIEknbSBtYWtpbmcgdGhlIGRlZmF1bHQgOXB0LgorJQorJSBCeSB0aGUgd2F5LCBmb3IgY29tcGFyaXNvbiwgaGVyZSdzIHdoYXQgZml0cyB3aXRoIEBleGFtcGxlICgxMHB0KToKKyUgICA4LjV4MTE9NzEgIHNtYWxsYm9vaz02MCAgYTQ9NzUgIGE1PTU4CislCislIEkgd2lzaCB3ZSB1c2VkIEE0IHBhcGVyIG9uIHRoaXMgc2lkZSBvZiB0aGUgQXRsYW50aWMuCislCislIC0ta2FybCwgMjRqYW4wMy4KKworCislIFNldCB1cCB0aGUgZGVmYXVsdCBmb250cywgc28gd2UgY2FuIHVzZSB0aGVtIGZvciBjcmVhdGluZyBib3hlcy4KKyUKK1x0ZXh0Zm9udHMKKworJSBEZWZpbmUgdGhlc2Ugc28gdGhleSBjYW4gYmUgZWFzaWx5IGNoYW5nZWQgZm9yIG90aGVyIGZvbnRzLgorXGRlZlxhbmdsZWxlZnR7JFxsYW5nbGUkfQorXGRlZlxhbmdsZXJpZ2h0eyRccmFuZ2xlJH0KKworJSBDb3VudCBkZXB0aCBpbiBmb250LWNoYW5nZXMsIGZvciBlcnJvciBjaGVja3MKK1xuZXdjb3VudFxmb250ZGVwdGggXGZvbnRkZXB0aD0wCisKKyUgRm9udHMgZm9yIHNob3J0IHRhYmxlIG9mIGNvbnRlbnRzLgorXHNldGZvbnRcc2hvcnRjb250cm1ccm1zaGFwZXsxMn17MTAwMH0KK1xzZXRmb250XHNob3J0Y29udGJmXGJ4c2hhcGV7MTJ9ezEwMDB9Citcc2V0Zm9udFxzaG9ydGNvbnRzbFxzbHNoYXBlezEyfXsxMDAwfQorXHNldGZvbnRcc2hvcnRjb250dHRcdHRzaGFwZXsxMn17MTAwMH0KKworJSUgQWRkIHNjcmliZS1saWtlIGZvbnQgZW52aXJvbm1lbnRzLCBwbHVzIEBsIGZvciBpbmxpbmUgbGlzcCAodXN1YWxseSBzYW5zCislJSBzZXJpZikgYW5kIEBpaSBmb3IgVGVYIGl0YWxpYworCislIFxzbWFydGl0YWxpY3tBUkd9IG91dHB1dHMgYXJnIGluIGl0YWxpY3MsIGZvbGxvd2VkIGJ5IGFuIGl0YWxpYyBjb3JyZWN0aW9uCislIHVubGVzcyB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBzdWNoIGFzIG5vdCB0byBuZWVkIG9uZS4KK1xkZWZcc21hcnRpdGFsaWN4e1xpZnhcbmV4dCxcZWxzZVxpZnhcbmV4dC1cZWxzZVxpZnhcbmV4dC5cZWxzZQorICAgICAgICAgICAgICAgICAgICBccHRleHNsYXNoXGZpXGZpXGZpfQorXGRlZlxzbWFydHNsYW50ZWQjMXt7XGlmdXNpbmd0dFx0dHNsXHNsICMxfVxmdXR1cmVsZXRcbmV4dFxzbWFydGl0YWxpY3h9CitcZGVmXHNtYXJ0aXRhbGljIzF7e1xpZnVzaW5ndHRcdHRzbFxpdCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQorCitcbGV0XGk9XHNtYXJ0aXRhbGljCitcbGV0XHZhcj1cc21hcnRzbGFudGVkCitcbGV0XGRmbj1cc21hcnRzbGFudGVkCitcbGV0XGVtcGg9XHNtYXJ0aXRhbGljCitcbGV0XGNpdGU9XHNtYXJ0c2xhbnRlZAorCitcZGVmXGIjMXt7XGJmICMxfX0KK1xsZXRcc3Ryb25nPVxiCisKKyUgV2UgY2FuJ3QganVzdCB1c2UgXGV4aHlwaGVucGVuYWx0eSwgYmVjYXVzZSB0aGF0IG9ubHkgaGFzIGVmZmVjdCBhdAorJSB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoLiAgUmVzdG9yZSBub3JtYWwgaHlwaGVuYXRpb24gYXQgdGhlIGVuZCBvZiB0aGUKKyUgZ3JvdXAgd2l0aGluIHdoaWNoIFxub2h5cGhlbmF0aW9uIGlzIHByZXN1bWFibHkgY2FsbGVkLgorJQorXGRlZlxub2h5cGhlbmF0aW9ue1xoeXBoZW5jaGFyXGZvbnQgPSAtMSAgXGFmdGVyZ3JvdXBccmVzdG9yZWh5cGhlbmF0aW9ufQorXGRlZlxyZXN0b3JlaHlwaGVuYXRpb257XGh5cGhlbmNoYXJcZm9udCA9IGAtIH0KKworJSBTZXQgc2Zjb2RlIHRvIG5vcm1hbCBmb3IgdGhlIGNoYXJzIHRoYXQgdXN1YWxseSBoYXZlIGFub3RoZXIgdmFsdWUuCislIENhbid0IHVzZSBwbGFpbidzIFxmcmVuY2hzcGFjaW5nIGJlY2F1c2UgaXQgdXNlcyB0aGUgYFx4IG5vdGF0aW9uLCBhbmQKKyUgc29tZXRpbWVzIFx4IGhhcyBhbiBhY3RpdmUgZGVmaW5pdGlvbiB0aGF0IG1lc3NlcyB0aGluZ3MgdXAuCislCitcY2F0Y29kZWBAPTExCisgIFxkZWZcZnJlbmNoc3BhY2luZ3slCisgICAgXHNmY29kZVxkb3RDaGFyICA9XEBtIFxzZmNvZGVccXVlc3RDaGFyPVxAbSBcc2Zjb2RlXGV4Y2xhbUNoYXI9XEBtCisgICAgXHNmY29kZVxjb2xvbkNoYXI9XEBtIFxzZmNvZGVcc2VtaUNoYXIgPVxAbSBcc2Zjb2RlXGNvbW1hQ2hhciA9XEBtCisgIH0KK1xjYXRjb2RlYEA9XG90aGVyCisKK1xkZWZcdCMxeyUKKyAge1x0dCBccmF3YmFja3NsYXNoIFxmcmVuY2hzcGFjaW5nICMxfSUKKyAgXG51bGwKK30KK1xsZXRcdHRmb250PVx0CitcZGVmXHNhbXAjMXtgXHRjbG9zZXsjMX0nXG51bGx9Citcc2V0Zm9udFxrZXlybVxybXNoYXBlezh9ezEwMDB9CitcZm9udFxrZXlzeT1jbXN5OQorXGRlZlxrZXkjMXt7XGtleXJtXHRleHRmb250Mj1ca2V5c3kgXGxlYXZldm1vZGVcaGJveHslCisgIFxyYWlzZTAuNHB0XGhib3h7XGFuZ2xlbGVmdH1ca2Vybi0uMDhlbVx2dG9weyUKKyAgICBcdmJveHtcaHJ1bGVca2Vybi0wLjRwdAorICAgICBcaGJveHtccmFpc2UwLjRwdFxoYm94e1x2cGhhbnRvbXtcYW5nbGVsZWZ0fX0jMX19JQorICAgIFxrZXJuLTAuNHB0XGhydWxlfSUKKyAgXGtlcm4tLjA2ZW1ccmFpc2UwLjRwdFxoYm94e1xhbmdsZXJpZ2h0fX19fQorJSBUaGUgb2xkIGRlZmluaXRpb24sIHdpdGggbm8gbG96ZW5nZToKKyVcZGVmXGtleSAjMXt7XHR0c2wgXG5vaHlwaGVuYXRpb24gXHVwcGVyY2FzZXsjMX19XG51bGx9CitcZGVmXGN0cmwgIzF7e1x0dCBccmF3YmFja3NsYXNoIFxoYXR9IzF9CisKKyUgQGZpbGUsIEBvcHRpb24gYXJlIHRoZSBzYW1lIGFzIEBzYW1wLgorXGxldFxmaWxlPVxzYW1wCitcbGV0XG9wdGlvbj1cc2FtcAorCislIEBjb2RlIGlzIGEgbW9kaWZpY2F0aW9uIG9mIEB0LAorJSB3aGljaCBtYWtlcyBzcGFjZXMgdGhlIHNhbWUgc2l6ZSBhcyBub3JtYWwgaW4gdGhlIHN1cnJvdW5kaW5nIHRleHQuCitcZGVmXHRjbG9zZSMxeyUKKyAgeyUKKyAgICAlIENoYW5nZSBub3JtYWwgaW50ZXJ3b3JkIHNwYWNlIHRvIGJlIHNhbWUgYXMgZm9yIHRoZSBjdXJyZW50IGZvbnQuCisgICAgXHNwYWNlc2tpcCA9IFxmb250ZGltZW4yXGZvbnQKKyAgICAlCisgICAgJSBTd2l0Y2ggdG8gdHlwZXdyaXRlci4KKyAgICBcdHQKKyAgICAlCisgICAgJSBCdXQgYFwgJyBwcm9kdWNlcyB0aGUgbGFyZ2UgdHlwZXdyaXRlciBpbnRlcndvcmQgc3BhY2UuCisgICAgXGRlZlwge3tcc3BhY2Vza2lwID0gMHB0e30gfX0lCisgICAgJQorICAgICUgVHVybiBvZmYgaHlwaGVuYXRpb24uCisgICAgXG5vaHlwaGVuYXRpb24KKyAgICAlCisgICAgXHJhd2JhY2tzbGFzaAorICAgIFxmcmVuY2hzcGFjaW5nCisgICAgIzElCisgIH0lCisgIFxudWxsCit9CisKKyUgV2UgKm11c3QqIHR1cm4gb24gaHlwaGVuYXRpb24gYXQgYC0nIGFuZCBgXycgaW4gXGNvZGUuCislIE90aGVyd2lzZSwgaXQgaXMgdG9vIGhhcmQgdG8gYXZvaWQgb3ZlcmZ1bGwgaGJveGVzCislIGluIHRoZSBFbWFjcyBtYW51YWwsIHRoZSBMaWJyYXJ5IG1hbnVhbCwgZXRjLgorCislIFVuZm9ydHVuYXRlbHksIFRlWCB1c2VzIG9uZSBwYXJhbWV0ZXIgKFxoeXBoZW5jaGFyKSB0byBjb250cm9sCislIGJvdGggaHlwaGVuYXRpb24gYXQgLSBhbmQgaHlwaGVuYXRpb24gd2l0aGluIHdvcmRzLgorJSBXZSBtdXN0IHRoZXJlZm9yZSB0dXJuIHRoZW0gYm90aCBvZmYgKFx0Y2xvc2UgZG9lcyB0aGF0KQorJSBhbmQgYXJyYW5nZSBleHBsaWNpdGx5IHRvIGh5cGhlbmF0ZSBhdCBhIGRhc2guCislICAtLSBybXMuCit7CisgIFxjYXRjb2RlYFwtPVxhY3RpdmUKKyAgXGNhdGNvZGVgXF89XGFjdGl2ZQorICAlCisgIFxnbG9iYWxcZGVmXGNvZGV7XGJlZ2luZ3JvdXAKKyAgICBcY2F0Y29kZWBcLT1cYWN0aXZlIFxsZXQtXGNvZGVkYXNoCisgICAgXGNhdGNvZGVgXF89XGFjdGl2ZSBcbGV0X1xjb2RldW5kZXIKKyAgICBcY29kZXgKKyAgfQorICAlCisgICUgSWYgd2UgZW5kIHVwIHdpdGggYW55IGFjdGl2ZSAtIGNoYXJhY3RlcnMgd2hlbiBoYW5kbGluZyB0aGUgaW5kZXgsCisgICUganVzdCB0cmVhdCB0aGVtIGFzIGEgbm9ybWFsIC0uCisgIFxnbG9iYWxcZGVmXGluZGV4YnJlYWtze1xjYXRjb2RlYFwtPVxhY3RpdmUgXGxldC1ccmVhbGRhc2h9Cit9CisKK1xkZWZccmVhbGRhc2h7LX0KK1xkZWZcY29kZWRhc2h7LVxkaXNjcmV0aW9uYXJ5e317fXt9fQorXGRlZlxjb2RldW5kZXJ7JQorICAlIHRoaXMgaXMgYWxsIHNvIEBtYXRoe0Bjb2Rle3Zhcl9uYW1lfSsxfSBjYW4gd29yay4gIEluIG1hdGggbW9kZSwgXworICAlIGlzICJhY3RpdmUiIChtYXRoY29kZSI4MDAwKSBhbmQgXG5vcm1hbHVuZGVyc2NvcmUgKG9yIFxjaGFyOTUsIGV0Yy4pCisgICUgd2lsbCB0aGVyZWZvcmUgZXhwYW5kIHRoZSBhY3RpdmUgZGVmaW5pdGlvbiBvZiBfLCB3aGljaCBpcyB1cworICAlIChpbnNpZGUgQGNvZGUgdGhhdCBpcyksIHRoZXJlZm9yZSBhbiBlbmRsZXNzIGxvb3AuCisgIFxpZnVzaW5ndHR7XGlmbW1vZGUKKyAgICAgICAgICAgICAgIFxtYXRoY2hhciIwNzVGICUgY2xhc3MgMD1vcmRpbmFyeSwgZmFtaWx5IDc9dHRmYW0sIHBvcyAweDVGPV8uCisgICAgICAgICAgICAgXGVsc2Vcbm9ybWFsdW5kZXJzY29yZSBcZmkKKyAgICAgICAgICAgICBcZGlzY3JldGlvbmFyeXt9e317fX0lCisgICAgICAgICAgICB7XF99JQorfQorXGRlZlxjb2RleCAjMXtcdGNsb3NleyMxfVxlbmRncm91cH0KKworJSBAa2JkIGlzIGxpa2UgQGNvZGUsIGV4Y2VwdCB0aGF0IGlmIHRoZSBhcmd1bWVudCBpcyBqdXN0IG9uZSBAa2V5IGNvbW1hbmQsCislIHRoZW4gQGtiZCBoYXMgbm8gZWZmZWN0LgorCislIEBrYmRpbnB1dHN0eWxlIC0tIGFyZyBpcyBgZGlzdGluY3QnIChAa2JkIHVzZXMgc2xhbnRlZCB0dHkgZm9udCBhbHdheXMpLAorJSAgIGBleGFtcGxlJyAoQGtiZCB1c2VzIHR0c2wgb25seSBpbnNpZGUgb2YgQGV4YW1wbGUgYW5kIGZyaWVuZHMpLAorJSAgIG9yIGBjb2RlJyAoQGtiZCB1c2VzIG5vcm1hbCB0dHkgZm9udCBhbHdheXMpLgorXGRlZlxrYmRpbnB1dHN0eWxle1xwYXJzZWFyZ1xrYmRpbnB1dHN0eWxleHh4fQorXGRlZlxrYmRpbnB1dHN0eWxleHh4IzF7JQorICBcZGVmXGFyZ3sjMX0lCisgIFxpZnhcYXJnXHdvcmRkaXN0aW5jdAorICAgIFxnZGVmXGtiZGV4YW1wbGVmb250e1x0dHNsfVxnZGVmXGtiZGZvbnR7XHR0c2x9JQorICBcZWxzZVxpZnhcYXJnXHdvcmRleGFtcGxlCisgICAgXGdkZWZca2JkZXhhbXBsZWZvbnR7XHR0c2x9XGdkZWZca2JkZm9udHtcdHR9JQorICBcZWxzZVxpZnhcYXJnXHdvcmRjb2RlCisgICAgXGdkZWZca2JkZXhhbXBsZWZvbnR7XHR0fVxnZGVmXGtiZGZvbnR7XHR0fSUKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGtiZGlucHV0c3R5bGUgb3B0aW9uIGBcYXJnJ30lCisgIFxmaVxmaVxmaQorfQorXGRlZlx3b3JkZGlzdGluY3R7ZGlzdGluY3R9CitcZGVmXHdvcmRleGFtcGxle2V4YW1wbGV9CitcZGVmXHdvcmRjb2Rle2NvZGV9CisKKyUgRGVmYXVsdCBpcyBgZGlzdGluY3QuJworXGtiZGlucHV0c3R5bGUgZGlzdGluY3QKKworXGRlZlx4a2V5e1xrZXl9CitcZGVmXGtiZGZvbyMxIzIjM1xwYXJ7XGRlZlxvbmV7IzF9XGRlZlx0aHJlZXsjM31cZGVmXHRocmVleHs/P30lCitcaWZ4XG9uZVx4a2V5XGlmeFx0aHJlZXhcdGhyZWUgXGtleXsjMn0lCitcZWxzZXtcdGNsb3Nle1xrYmRmb250XGxvb2t9fVxmaQorXGVsc2V7XHRjbG9zZXtca2JkZm9udFxsb29rfX1cZml9CisKKyUgRm9yIEB1cmwsIEBlbnYsIEBjb21tYW5kIHF1b3RlcyBzZWVtIHVubmVjZXNzYXJ5LCBzbyB1c2UgXGNvZGUuCitcbGV0XHVybD1cY29kZQorXGxldFxlbnY9XGNvZGUKK1xsZXRcY29tbWFuZD1cY29kZQorCislIEB1cmVmIChhYmJyZXZpYXRpb24gZm9yIGB1cmxyZWYnKSB0YWtlcyBhbiBvcHRpb25hbCAoY29tbWEtc2VwYXJhdGVkKQorJSBzZWNvbmQgYXJndW1lbnQgc3BlY2lmeWluZyB0aGUgdGV4dCB0byBkaXNwbGF5IGFuZCBhbiBvcHRpb25hbCB0aGlyZAorJSBhcmcgYXMgdGV4dCB0byBkaXNwbGF5IGluc3RlYWQgb2YgKHJhdGhlciB0aGFuIGluIGFkZGl0aW9uIHRvKSB0aGUgdXJsCislIGl0c2VsZi4gIEZpcnN0IChtYW5kYXRvcnkpIGFyZyBpcyB0aGUgdXJsLiAgUGVyaGFwcyBldmVudHVhbGx5IHB1dCBpbgorJSBhIGh5cGVydGV4IFxzcGVjaWFsIGhlcmUuCislCitcZGVmXHVyZWYjMXtcZG91cmVmICMxLCwsXGZpbmlzaH0KK1xkZWZcZG91cmVmIzEsIzIsIzMsIzRcZmluaXNoe1xiZWdpbmdyb3VwCisgIFx1bnNlcHNwYWNlcworICBccGRmdXJseyMxfSUKKyAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMzfSUKKyAgXGlmZGltXHdkMCA+IDBwdAorICAgIFx1bmhib3gwICUgdGhpcmQgYXJnIGdpdmVuLCBzaG93IG9ubHkgdGhhdAorICBcZWxzZQorICAgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn0lCisgICAgXGlmZGltXHdkMCA+IDBwdAorICAgICAgXGlmcGRmCisgICAgICAgIFx1bmhib3gwICAgICAgICAgICAgICUgUERGOiAybmQgYXJnIGdpdmVuLCBzaG93IG9ubHkgaXQKKyAgICAgIFxlbHNlCisgICAgICAgIFx1bmhib3gwXCAoXGNvZGV7IzF9KSUgRFZJOiAybmQgYXJnIGdpdmVuLCBzaG93IGJvdGggaXQgYW5kIHVybAorICAgICAgXGZpCisgICAgXGVsc2UKKyAgICAgIFxjb2RleyMxfSUgb25seSB1cmwgZ2l2ZW4sIHNvIHNob3cgaXQKKyAgICBcZmkKKyAgXGZpCisgIFxlbmRsaW5rCitcZW5kZ3JvdXB9CisKKyUgcm1zIGRvZXMgbm90IGxpa2UgYW5nbGUgYnJhY2tldHMgLS1rYXJsLCAxN21heTk3LgorJSBTbyBub3cgQGVtYWlsIGlzIGp1c3QgbGlrZSBAdXJlZiwgdW5sZXNzIHdlIGFyZSBwZGYuCislCislXGRlZlxlbWFpbCMxe1xhbmdsZWxlZnR7XHR0ICMxfVxhbmdsZXJpZ2h0fQorXGlmcGRmCisgIFxkZWZcZW1haWwjMXtcZG9lbWFpbCMxLCxcZmluaXNofQorICBcZGVmXGRvZW1haWwjMSwjMiwjM1xmaW5pc2h7XGJlZ2luZ3JvdXAKKyAgICBcdW5zZXBzcGFjZXMKKyAgICBccGRmdXJse21haWx0bzojMX0lCisgICAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMyfSUKKyAgICBcaWZkaW1cd2QwPjBwdFx1bmhib3gwXGVsc2VcY29kZXsjMX1cZmkKKyAgICBcZW5kbGluaworICBcZW5kZ3JvdXB9CitcZWxzZQorICBcbGV0XGVtYWlsPVx1cmVmCitcZmkKKworJSBDaGVjayBpZiB3ZSBhcmUgY3VycmVudGx5IHVzaW5nIGEgdHlwZXdyaXRlciBmb250LiAgU2luY2UgYWxsIHRoZQorJSBDb21wdXRlciBNb2Rlcm4gdHlwZXdyaXRlciBmb250cyBoYXZlIHplcm8gaW50ZXJ3b3JkIHN0cmV0Y2ggKGFuZAorJSBzaHJpbmspLCBhbmQgaXQgaXMgcmVhc29uYWJsZSB0byBleHBlY3QgYWxsIHR5cGV3cml0ZXIgZm9udHMgdG8gaGF2ZQorJSB0aGlzIHByb3BlcnR5LCB3ZSBjYW4gY2hlY2sgdGhhdCBmb250IHBhcmFtZXRlci4KKyUKK1xkZWZcaWZtb25vc3BhY2V7XGlmZGltXGZvbnRkaW1lbjNcZm9udD0wcHQgfQorCislIFR5cGVzZXQgYSBkaW1lbnNpb24sIGUuZy4sIGBpbicgb3IgYHB0Jy4gIFRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlCislIGFyZ3VtZW50IGlzIHRvIG1ha2UgdGhlIGlucHV0IGxvb2sgcmlnaHQ6IEBkbW57cHR9IGluc3RlYWQgb2YgQGRtbnt9cHQuCislCitcZGVmXGRtbiMxe1x0aGluc3BhY2UgIzF9CisKK1xkZWZca2JkIzF7XGRlZlxsb29reyMxfVxleHBhbmRhZnRlclxrYmRmb29cbG9vaz8/XHBhcn0KKworJSBAbCB3YXMgbmV2ZXIgZG9jdW1lbnRlZCB0byBtZWFuIGBgc3dpdGNoIHRvIHRoZSBMaXNwIGZvbnQnJywKKyUgYW5kIGl0IGlzIG5vdCB1c2VkIGFzIHN1Y2ggaW4gYW55IG1hbnVhbCBJIGNhbiBmaW5kLiAgV2UgbmVlZCBpdCBmb3IKKyUgUG9saXNoIHN1cHByZXNzZWQtbC4gIC0ta2FybCwgMjJzZXA5Ni4KKyVcZGVmXGwjMXt7XGxpICMxfVxudWxsfQorCislIEV4cGxpY2l0IGZvbnQgY2hhbmdlczogQHIsIEBzYywgdW5kb2N1bWVudGVkIEBpaS4KK1xkZWZcciMxe3tccm0gIzF9fSAgICAgICAgICAgICAgJSByb21hbiBmb250CitcZGVmXHNjIzF7e1xzbWFsbGNhcHMjMX19ICAgICAgICUgc21hbGxjYXBzIGZvbnQKK1xkZWZcaWkjMXt7XGl0ICMxfX0gICAgICAgICAgICAgJSBpdGFsaWMgZm9udAorCislIEBhY3JvbnltIGRvd25jYXNlcyB0aGUgYXJndW1lbnQgYW5kIHByaW50cyBpbiBzbWFsbGNhcHMuCitcZGVmXGFjcm9ueW0jMXt7XHNtYWxsY2FwcyBcbG93ZXJjYXNleyMxfX19CisKKyUgQHBvdW5kc3t9IGlzIGEgc3Rlcmxpbmcgc2lnbi4KK1xkZWZccG91bmRze3tcaXRcJH19CisKKyUgQHJlZ2lzdGVyZWRzeW1ib2wgLSBSIGluIGEgY2lyY2xlLiAgRm9yIG5vdywgb25seSB3b3JrcyBpbiB0ZXh0IHNpemU7CislIHdlJ2QgaGF2ZSB0byByZWRvIHRoZSBmb250IG1lY2hhbmlzbSB0byBjaGFuZ2UgdGhlIFxzY3JpcHRzdHlsZSBhbmQKKyUgXHNjcmlwdHNjcmlwdHN0eWxlIGZvbnQgc2l6ZXMgdG8gbWFrZSBpdCBsb29rIHJpZ2h0IGluIGhlYWRpbmdzLgorJSBBZGFwdGVkIGZyb20gdGhlIHBsYWluLnRleCBkZWZpbml0aW9uIG9mIFxjb3B5cmlnaHQuCislCitcZGVmXHJlZ2lzdGVyZWRzeW1ib2x7JQorICAkXnt7XG9vYWxpZ257XGhmaWxccmFpc2UuMDdleFxoYm94eyRcc2NyaXB0c3R5bGVccm0gUiR9XGhmaWxcY3JjclxPcmJ9fSUKKyAgICB9JCUKK30KKworCitcbWVzc2FnZXtwYWdlIGhlYWRpbmdzLH0KKworXG5ld3NraXBcdGl0bGVwYWdldG9wZ2x1ZSBcdGl0bGVwYWdldG9wZ2x1ZSA9IDEuNWluCitcbmV3c2tpcFx0aXRsZXBhZ2Vib3R0b21nbHVlIFx0aXRsZXBhZ2Vib3R0b21nbHVlID0gMnBjCisKKyUgRmlyc3QgdGhlIHRpdGxlIHBhZ2UuICBNdXN0IGRvIEBzZXR0aXRsZSBiZWZvcmUgQHRpdGxlcGFnZS4KK1xuZXdpZlxpZnNlZW5hdXRob3IKK1xuZXdpZlxpZmZpbmlzaGVkdGl0bGVwYWdlCisKKyUgRG8gYW4gaW1wbGljaXQgQGNvbnRlbnRzIG9yIEBzaG9ydGNvbnRlbnRzIGFmdGVyIEBlbmQgdGl0bGVwYWdlIGlmIHRoZQorJSB1c2VyIHNheXMgQHNldGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2Ugb3IgQHNldHNob3J0Y29udGVudHNhZnRlcnRpdGxlcGFnZS4KKyUKK1xuZXdpZlxpZnNldGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UKKyBcbGV0XHNldGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UgPSBcc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZXRydWUKK1xuZXdpZlxpZnNldHNob3J0Y29udGVudHNhZnRlcnRpdGxlcGFnZQorIFxsZXRcc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlID0gXHNldHNob3J0Y29udGVudHNhZnRlcnRpdGxlcGFnZXRydWUKKworXGRlZlxzaG9ydHRpdGxlcGFnZXtccGFyc2Vhcmdcc2hvcnR0aXRsZXBhZ2V6enp9CitcZGVmXHNob3J0dGl0bGVwYWdlenp6ICMxe1xiZWdpbmdyb3VwXGhib3h7fVx2c2tpcCAxLjVpbiBcY2hhcHJtIFxjZW50ZXJsaW5leyMxfSUKKyAgICAgICAgXGVuZGdyb3VwXHBhZ2VcaGJveHt9XHBhZ2V9CisKK1xkZWZcdGl0bGVwYWdle1xiZWdpbmdyb3VwIFxwYXJpbmRlbnQ9MHB0IFx0ZXh0Zm9udHMKKyAgIFxsZXRcc3VidGl0bGVybT1cdGVucm0KKyAgIFxkZWZcc3VidGl0bGVmb250e1xzdWJ0aXRsZXJtIFxub3JtYWxiYXNlbGluZXNraXAgPSAxM3B0IFxub3JtYWxiYXNlbGluZXN9JQorICAgJQorICAgXGRlZlxhdXRob3Jmb250e1xhdXRob3JybSBcbm9ybWFsYmFzZWxpbmVza2lwID0gMTZwdCBcbm9ybWFsYmFzZWxpbmVzCisgICAgICAgICAgICAgICAgICAgXGxldFx0dD1cYXV0aG9ydHR9JQorICAgJQorICAgJSBMZWF2ZSBzb21lIHNwYWNlIGF0IHRoZSB2ZXJ5IHRvcCBvZiB0aGUgcGFnZS4KKyAgIFx2Z2x1ZVx0aXRsZXBhZ2V0b3BnbHVlCisgICAlCisgICAlIE5vdyB5b3UgY2FuIHByaW50IHRoZSB0aXRsZSB1c2luZyBAdGl0bGUuCisgICBcZGVmXHRpdGxle1xwYXJzZWFyZ1x0aXRsZXp6en0lCisgICBcZGVmXHRpdGxlenp6IyMxe1xsZWZ0bGluZXtcdGl0bGVmb250c1xybSAjIzF9CisgICAgICAgICAgICAgICAgICAgICUgcHJpbnQgYSBydWxlIGF0IHRoZSBwYWdlIGJvdHRvbSBhbHNvLgorICAgICAgICAgICAgICAgICAgICBcZmluaXNoZWR0aXRsZXBhZ2VmYWxzZQorICAgICAgICAgICAgICAgICAgICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCA0cHQgd2lkdGggXGhzaXplIFx2c2tpcDRwdH0lCisgICAlIE5vIHJ1bGUgYXQgcGFnZSBib3R0b20gdW5sZXNzIHdlIHByaW50IG9uZSBhdCB0aGUgdG9wIHdpdGggQHRpdGxlLgorICAgXGZpbmlzaGVkdGl0bGVwYWdldHJ1ZQorICAgJQorICAgJSBOb3cgeW91IGNhbiBwdXQgdGV4dCB1c2luZyBAc3VidGl0bGUuCisgICBcZGVmXHN1YnRpdGxle1xwYXJzZWFyZ1xzdWJ0aXRsZXp6en0lCisgICBcZGVmXHN1YnRpdGxlenp6IyMxe3tcc3VidGl0bGVmb250IFxyaWdodGxpbmV7IyMxfX19JQorICAgJQorICAgJSBAYXV0aG9yIHNob3VsZCBjb21lIGxhc3QsIGJ1dCBtYXkgY29tZSBtYW55IHRpbWVzLgorICAgXGRlZlxhdXRob3J7XHBhcnNlYXJnXGF1dGhvcnp6en0lCisgICBcZGVmXGF1dGhvcnp6eiMjMXtcaWZzZWVuYXV0aG9yXGVsc2VcdnNraXAgMHB0IHBsdXMgMWZpbGxsXHNlZW5hdXRob3J0cnVlXGZpCisgICAgICB7XGF1dGhvcmZvbnQgXGxlZnRsaW5leyMjMX19fSUKKyAgICUKKyAgICUgTW9zdCB0aXRsZSBgYHBhZ2VzJycgYXJlIGFjdHVhbGx5IHR3byBwYWdlcyBsb25nLCB3aXRoIHNwYWNlCisgICAlIGF0IHRoZSB0b3Agb2YgdGhlIHNlY29uZC4gIFdlIGRvbid0IHdhbnQgdGhlIHJhZ2dlZCBsZWZ0IG9uIHRoZSBzZWNvbmQuCisgICBcbGV0XG9sZHBhZ2UgPSBccGFnZQorICAgXGRlZlxwYWdleyUKKyAgICAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKKyAgICAgICAgIFxmaW5pc2h0aXRsZXBhZ2UKKyAgICAgIFxmaQorICAgICAgXG9sZHBhZ2UKKyAgICAgIFxsZXRccGFnZSA9IFxvbGRwYWdlCisgICAgICBcaGJveHt9fSUKKyUgICBcZGVmXHBhZ2V7XG9sZHBhZ2UgXGhib3h7fX0KK30KKworXGRlZlxFdGl0bGVwYWdleyUKKyAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKKyAgICAgIFxmaW5pc2h0aXRsZXBhZ2UKKyAgIFxmaQorICAgJSBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhlIHBhZ2UgYnJlYWsgYmVmb3JlIGVuZGluZyB0aGUgZ3JvdXAsCisgICAlIGJlY2F1c2UgdGhlIGhlYWRsaW5lIGFuZCBmb290bGluZSBhcmUgb25seSBlbXB0eSBpbnNpZGUgdGhlIGdyb3VwLgorICAgJSBJZiB3ZSB1c2UgdGhlIG5ldyBkZWZpbml0aW9uIG9mIFxwYWdlLCB3ZSBhbHdheXMgZ2V0IGEgYmxhbmsgcGFnZQorICAgJSBhZnRlciB0aGUgdGl0bGUgcGFnZSwgd2hpY2ggd2UgY2VydGFpbmx5IGRvbid0IHdhbnQuCisgICBcb2xkcGFnZQorICAgXGVuZGdyb3VwCisgICAlCisgICAlIE5lZWQgdGhpcyBiZWZvcmUgdGhlIFwuLi5hZnRlcnRpdGxlcGFnZSBjaGVja3Mgc28gdGhhdCBpZiB0aGV5IGFyZQorICAgJSBpbiBlZmZlY3QgdGhlIHRvYyBwYWdlcyB3aWxsIGNvbWUgb3V0IHdpdGggcGFnZSBudW1iZXJzLgorICAgXEhFQURJTkdTb24KKyAgICUKKyAgICUgSWYgdGhleSB3YW50IHNob3J0LCB0aGV5IGNlcnRhaW5seSB3YW50IGxvbmcgdG9vLgorICAgXGlmc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlCisgICAgIFxzaG9ydGNvbnRlbnRzCisgICAgIFxjb250ZW50cworICAgICBcZ2xvYmFsXGxldFxzaG9ydGNvbnRlbnRzID0gXHJlbGF4CisgICAgIFxnbG9iYWxcbGV0XGNvbnRlbnRzID0gXHJlbGF4CisgICBcZmkKKyAgICUKKyAgIFxpZnNldGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UKKyAgICAgXGNvbnRlbnRzCisgICAgIFxnbG9iYWxcbGV0XGNvbnRlbnRzID0gXHJlbGF4CisgICAgIFxnbG9iYWxcbGV0XHNob3J0Y29udGVudHMgPSBccmVsYXgKKyAgIFxmaQorfQorCitcZGVmXGZpbmlzaHRpdGxlcGFnZXslCisgICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCAycHQgd2lkdGggXGhzaXplCisgICBcdnNraXBcdGl0bGVwYWdlYm90dG9tZ2x1ZQorICAgXGZpbmlzaGVkdGl0bGVwYWdldHJ1ZQorfQorCislJSUgU2V0IHVwIHBhZ2UgaGVhZGluZ3MgYW5kIGZvb3RpbmdzLgorCitcbGV0XHRoaXNwYWdlPVxmb2xpbworCitcbmV3dG9rc1xldmVuaGVhZGxpbmUgICAgJSBoZWFkbGluZSBvbiBldmVuIHBhZ2VzCitcbmV3dG9rc1xvZGRoZWFkbGluZSAgICAgJSBoZWFkbGluZSBvbiBvZGQgcGFnZXMKK1xuZXd0b2tzXGV2ZW5mb290bGluZSAgICAlIGZvb3RsaW5lIG9uIGV2ZW4gcGFnZXMKK1xuZXd0b2tzXG9kZGZvb3RsaW5lICAgICAlIGZvb3RsaW5lIG9uIG9kZCBwYWdlcworCislIE5vdyBtYWtlIFRleCB1c2UgdGhvc2UgdmFyaWFibGVzCitcaGVhZGxpbmU9e3tcdGV4dGZvbnRzXHJtIFxpZm9kZFxwYWdlbm8gXHRoZVxvZGRoZWFkbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxlbHNlIFx0aGVcZXZlbmhlYWRsaW5lIFxmaX19CitcZm9vdGxpbmU9e3tcdGV4dGZvbnRzXHJtIFxpZm9kZFxwYWdlbm8gXHRoZVxvZGRmb290bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxlbHNlIFx0aGVcZXZlbmZvb3RsaW5lIFxmaX1cSEVBRElOR1Nob29rfQorXGxldFxIRUFESU5HU2hvb2s9XHJlbGF4CisKKyUgQ29tbWFuZHMgdG8gc2V0IHRob3NlIHZhcmlhYmxlcy4KKyUgRm9yIGV4YW1wbGUsIHRoaXMgaXMgd2hhdCAgQGhlYWRpbmdzIG9uICBkb2VzCislIEBldmVuaGVhZGluZyBAdGhpc3RpdGxlfEB0aGlzcGFnZXxAdGhpc2NoYXB0ZXIKKyUgQG9kZGhlYWRpbmcgQHRoaXNjaGFwdGVyfEB0aGlzcGFnZXxAdGhpc3RpdGxlCislIEBldmVuZm9vdGluZyBAdGhpc2ZpbGV8fAorJSBAb2RkZm9vdGluZyB8fEB0aGlzZmlsZQorCitcZGVmXGV2ZW5oZWFkaW5ne1xwYXJzZWFyZ1xldmVuaGVhZGluZ3h4eH0KK1xkZWZcb2RkaGVhZGluZ3tccGFyc2Vhcmdcb2RkaGVhZGluZ3h4eH0KK1xkZWZcZXZlcnloZWFkaW5ne1xwYXJzZWFyZ1xldmVyeWhlYWRpbmd4eHh9CisKK1xkZWZcZXZlbmZvb3Rpbmd7XHBhcnNlYXJnXGV2ZW5mb290aW5neHh4fQorXGRlZlxvZGRmb290aW5ne1xwYXJzZWFyZ1xvZGRmb290aW5neHh4fQorXGRlZlxldmVyeWZvb3Rpbmd7XHBhcnNlYXJnXGV2ZXJ5Zm9vdGluZ3h4eH0KKwore1xjYXRjb2RlYFxAPTAgJQorCitcZ2RlZlxldmVuaGVhZGluZ3h4eCAjMXtcZXZlbmhlYWRpbmd5eXkgIzFAfEB8QHxAfFxmaW5pc2h9CitcZ2RlZlxldmVuaGVhZGluZ3l5eSAjMUB8IzJAfCMzQHwjNFxmaW5pc2h7JQorXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fX0KKworXGdkZWZcb2RkaGVhZGluZ3h4eCAjMXtcb2RkaGVhZGluZ3l5eSAjMUB8QHxAfEB8XGZpbmlzaH0KK1xnZGVmXG9kZGhlYWRpbmd5eXkgIzFAfCMyQHwjM0B8IzRcZmluaXNoeyUKK1xnbG9iYWxcb2RkaGVhZGxpbmU9e1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fX0KKworXGdkZWZcZXZlcnloZWFkaW5neHh4IzF7XG9kZGhlYWRpbmd4eHh7IzF9XGV2ZW5oZWFkaW5neHh4eyMxfX0lCisKK1xnZGVmXGV2ZW5mb290aW5neHh4ICMxe1xldmVuZm9vdGluZ3l5eSAjMUB8QHxAfEB8XGZpbmlzaH0KK1xnZGVmXGV2ZW5mb290aW5neXl5ICMxQHwjMkB8IzNAfCM0XGZpbmlzaHslCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XHJsYXB7XGNlbnRlcmxpbmV7IzJ9fVxsaW5leyMxXGhmaWwjM319fQorCitcZ2RlZlxvZGRmb290aW5neHh4ICMxe1xvZGRmb290aW5neXl5ICMxQHxAfEB8QHxcZmluaXNofQorXGdkZWZcb2RkZm9vdGluZ3l5eSAjMUB8IzJAfCMzQHwjNFxmaW5pc2h7JQorICBcZ2xvYmFsXG9kZGZvb3RsaW5lID0ge1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fSUKKyAgJQorICAlIExlYXZlIHNvbWUgc3BhY2UgZm9yIHRoZSBmb290bGluZS4gIEhvcGVmdWxseSBvayB0byBhc3N1bWUKKyAgJSBAZXZlbmZvb3Rpbmcgd2lsbCBub3QgYmUgdXNlZCBieSBpdHNlbGYuCisgIFxnbG9iYWxcYWR2YW5jZVxwYWdlaGVpZ2h0IGJ5IC1cYmFzZWxpbmVza2lwCisgIFxnbG9iYWxcYWR2YW5jZVx2c2l6ZSBieSAtXGJhc2VsaW5lc2tpcAorfQorCitcZ2RlZlxldmVyeWZvb3Rpbmd4eHgjMXtcb2RkZm9vdGluZ3h4eHsjMX1cZXZlbmZvb3Rpbmd4eHh7IzF9fQorJQorfSUgdW5iaW5kIHRoZSBjYXRjb2RlIG9mIEAuCisKKyUgQGhlYWRpbmdzIGRvdWJsZSAgICAgIHR1cm5zIGhlYWRpbmdzIG9uIGZvciBkb3VibGUtc2lkZWQgcHJpbnRpbmcuCislIEBoZWFkaW5ncyBzaW5nbGUgICAgICB0dXJucyBoZWFkaW5ncyBvbiBmb3Igc2luZ2xlLXNpZGVkIHByaW50aW5nLgorJSBAaGVhZGluZ3Mgb2ZmICAgICAgICAgdHVybnMgdGhlbSBvZmYuCislIEBoZWFkaW5ncyBvbiAgICAgICAgICBzYW1lIGFzIEBoZWFkaW5ncyBkb3VibGUsIHJldGFpbmVkIGZvciBjb21wYXRpYmlsaXR5LgorJSBAaGVhZGluZ3MgYWZ0ZXIgICAgICAgdHVybnMgb24gZG91YmxlLXNpZGVkIGhlYWRpbmdzIGFmdGVyIHRoaXMgcGFnZS4KKyUgQGhlYWRpbmdzIGRvdWJsZWFmdGVyIHR1cm5zIG9uIGRvdWJsZS1zaWRlZCBoZWFkaW5ncyBhZnRlciB0aGlzIHBhZ2UuCislIEBoZWFkaW5ncyBzaW5nbGVhZnRlciB0dXJucyBvbiBzaW5nbGUtc2lkZWQgaGVhZGluZ3MgYWZ0ZXIgdGhpcyBwYWdlLgorJSBCeSBkZWZhdWx0LCB0aGV5IGFyZSBvZmYgYXQgdGhlIHN0YXJ0IG9mIGEgZG9jdW1lbnQsCislIGFuZCB0dXJuZWQgYG9uJyBhZnRlciBAZW5kIHRpdGxlcGFnZS4KKworXGRlZlxoZWFkaW5ncyAjMSB7XGNzbmFtZSBIRUFESU5HUyMxXGVuZGNzbmFtZX0KKworXGRlZlxIRUFESU5HU29mZnsKK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcaGZpbH0gXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxvZGRoZWFkbGluZT17XGhmaWx9IFxnbG9iYWxcb2RkZm9vdGxpbmU9e1xoZmlsfX0KK1xIRUFESU5HU29mZgorJSBXaGVuIHdlIHR1cm4gaGVhZGluZ3Mgb24sIHNldCB0aGUgcGFnZSBudW1iZXIgdG8gMS4KKyUgRm9yIGRvdWJsZS1zaWRlZCBwcmludGluZywgcHV0IGN1cnJlbnQgZmlsZSBuYW1lIGluIGxvd2VyIGxlZnQgY29ybmVyLAorJSBjaGFwdGVyIG5hbWUgb24gaW5zaWRlIHRvcCBvZiByaWdodCBoYW5kIHBhZ2VzLCBkb2N1bWVudAorJSB0aXRsZSBvbiBpbnNpZGUgdG9wIG9mIGxlZnQgaGFuZCBwYWdlcywgYW5kIHBhZ2UgbnVtYmVycyBvbiBvdXRzaWRlIHRvcAorJSBlZGdlIG9mIGFsbCBwYWdlcy4KK1xkZWZcSEVBRElOR1Nkb3VibGV7CitcZ2xvYmFsXHBhZ2Vubz0xCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcbGluZXtcZm9saW9caGZpbFx0aGlzdGl0bGV9fQorXGdsb2JhbFxvZGRoZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBvZGRwYWdlCit9CitcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwcGFnZXIKKworJSBGb3Igc2luZ2xlLXNpZGVkIHByaW50aW5nLCBjaGFwdGVyIHRpdGxlIGdvZXMgYWNyb3NzIHRvcCBsZWZ0IG9mIHBhZ2UsCislIHBhZ2UgbnVtYmVyIG9uIHRvcCByaWdodC4KK1xkZWZcSEVBRElOR1NzaW5nbGV7CitcZ2xvYmFsXHBhZ2Vubz0xCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcHBhZ2VyCit9CitcZGVmXEhFQURJTkdTb257XEhFQURJTkdTZG91YmxlfQorCitcZGVmXEhFQURJTkdTYWZ0ZXJ7XGxldFxIRUFESU5HU2hvb2s9XEhFQURJTkdTZG91YmxleH0KK1xsZXRcSEVBRElOR1Nkb3VibGVhZnRlcj1cSEVBRElOR1NhZnRlcgorXGRlZlxIRUFESU5HU2RvdWJsZXh7JQorXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9CitcZ2xvYmFsXGV2ZW5oZWFkbGluZT17XGxpbmV7XGZvbGlvXGhmaWxcdGhpc3RpdGxlfX0KK1xnbG9iYWxcb2RkaGVhZGxpbmU9e1xsaW5le1x0aGlzY2hhcHRlclxoZmlsXGZvbGlvfX0KK1xnbG9iYWxcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwb2RkcGFnZQorfQorCitcZGVmXEhFQURJTkdTc2luZ2xlYWZ0ZXJ7XGxldFxIRUFESU5HU2hvb2s9XEhFQURJTkdTc2luZ2xleH0KK1xkZWZcSEVBRElOR1NzaW5nbGV4eyUKK1xnbG9iYWxcZXZlbmZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcb2RkZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xsaW5le1x0aGlzY2hhcHRlclxoZmlsXGZvbGlvfX0KK1xnbG9iYWxcb2RkaGVhZGxpbmU9e1xsaW5le1x0aGlzY2hhcHRlclxoZmlsXGZvbGlvfX0KK1xnbG9iYWxcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwcGFnZXIKK30KKworJSBTdWJyb3V0aW5lcyB1c2VkIGluIGdlbmVyYXRpbmcgaGVhZGluZ3MKKyUgVGhpcyBwcm9kdWNlcyBEYXkgTW9udGggWWVhciBzdHlsZSBvZiBvdXRwdXQuCislIE9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQsIGluIGNhc2UgYSB0eGktPz8udGV4IGZpbGUgaGFzIHNldAorJSB1cCBhIGRpZmZlcmVudCBmb3JtYXQgKGUuZy4sIHR4aS1jcy50ZXggZG9lcyB0aGlzKS4KK1xpZnhcdG9kYXlcdW5kZWZpbmVkCitcZGVmXHRvZGF5eyUKKyAgXG51bWJlclxkYXlcc3BhY2UKKyAgXGlmY2FzZVxtb250aAorICBcb3JccHV0d29yZE1KYW5cb3JccHV0d29yZE1GZWJcb3JccHV0d29yZE1NYXJcb3JccHV0d29yZE1BcHIKKyAgXG9yXHB1dHdvcmRNTWF5XG9yXHB1dHdvcmRNSnVuXG9yXHB1dHdvcmRNSnVsXG9yXHB1dHdvcmRNQXVnCisgIFxvclxwdXR3b3JkTVNlcFxvclxwdXR3b3JkTU9jdFxvclxwdXR3b3JkTU5vdlxvclxwdXR3b3JkTURlYworICBcZmkKKyAgXHNwYWNlXG51bWJlclx5ZWFyfQorXGZpCisKKyUgQHNldHRpdGxlIGxpbmUuLi4gIHNwZWNpZmllcyB0aGUgdGl0bGUgb2YgdGhlIGRvY3VtZW50LCBmb3IgaGVhZGluZ3MuCislIEl0IGdlbmVyYXRlcyBubyBvdXRwdXQgb2YgaXRzIG93bi4KK1xkZWZcdGhpc3RpdGxle1xwdXR3b3JkTm9UaXRsZX0KK1xkZWZcc2V0dGl0bGV7XHBhcnNlYXJnXHNldHRpdGxlenp6fQorXGRlZlxzZXR0aXRsZXp6eiAjMXtcZ2RlZlx0aGlzdGl0bGV7IzF9fQorCisKK1xtZXNzYWdle3RhYmxlcyx9CislIFRhYmxlcyAtLSBAdGFibGUsIEBmdGFibGUsIEB2dGFibGUsIEBpdGVtKHgpLCBAa2l0ZW0oeCksIEB4aXRlbSh4KS4KKworJSBkZWZhdWx0IGluZGVudGF0aW9uIG9mIHRhYmxlIHRleHQKK1xuZXdkaW1lblx0YWJsZWluZGVudCBcdGFibGVpbmRlbnQ9LjhpbgorJSBkZWZhdWx0IGluZGVudGF0aW9uIG9mIEBpdGVtaXplIGFuZCBAZW51bWVyYXRlIHRleHQKK1xuZXdkaW1lblxpdGVtaW5kZW50ICBcaXRlbWluZGVudD0uM2luCislIG1hcmdpbiBiZXR3ZWVuIGVuZCBvZiB0YWJsZSBpdGVtIGFuZCBzdGFydCBvZiB0YWJsZSB0ZXh0LgorXG5ld2RpbWVuXGl0ZW1tYXJnaW4gIFxpdGVtbWFyZ2luPS4xaW4KKworJSB1c2VkIGludGVybmFsbHkgZm9yIFxpdGVtaW5kZW50IG1pbnVzIFxpdGVtbWFyZ2luCitcbmV3ZGltZW5caXRlbW1heAorCislIE5vdGUgQHRhYmxlLCBAdnRhYmxlLCBhbmQgQHZ0YWJsZSBkZWZpbmUgQGl0ZW0sIEBpdGVteCwgZXRjLiwgd2l0aAorJSB0aGVzZSBkZWZzLgorJSBUaGV5IGFsc28gZGVmaW5lIFxpdGVtaW5kZXgKKyUgdG8gaW5kZXggdGhlIGl0ZW0gbmFtZSBpbiB3aGF0ZXZlciBtYW5uZXIgaXMgZGVzaXJlZCAocGVyaGFwcyBub25lKS4KKworXG5ld2lmXGlmaXRlbXhuZWVkc25lZ2F0aXZldnNraXAKKworXGRlZlxpdGVteHBhcntccGFyXGlmaXRlbXhuZWVkc25lZ2F0aXZldnNraXBcbm9icmVha1x2c2tpcC1ccGFyc2tpcFxub2JyZWFrXGZpfQorCitcZGVmXGludGVybmFsQml0ZW17XHNtYWxsYnJlYWsgXHBhcnNlYXJnXGl0ZW16enp9CitcZGVmXGludGVybmFsQml0ZW14e1xpdGVteHBhciBccGFyc2VhcmdcaXRlbXp6en0KKworXGRlZlxpbnRlcm5hbEJ4aXRlbSAiIzEie1xkZWZceGl0ZW1zdWJ0b3BpeHsjMX0gXHNtYWxsYnJlYWsgXHBhcnNlYXJnXHhpdGVtenp6fQorXGRlZlxpbnRlcm5hbEJ4aXRlbXggIiMxIntcZGVmXHhpdGVtc3VidG9waXh7IzF9IFxpdGVteHBhciBccGFyc2VhcmdceGl0ZW16enp9CisKK1xkZWZcaW50ZXJuYWxCa2l0ZW17XHNtYWxsYnJlYWsgXHBhcnNlYXJnXGtpdGVtenp6fQorXGRlZlxpbnRlcm5hbEJraXRlbXh7XGl0ZW14cGFyIFxwYXJzZWFyZ1xraXRlbXp6en0KKworXGRlZlxraXRlbXp6eiAjMXtcZG9zdWJpbmQge2t3fXtcY29kZXsjMX19e2ZvciB7XGJmIFxsYXN0ZnVuY3Rpb259fSUKKyAgICAgICAgICAgICAgICAgXGl0ZW16enogeyMxfX0KKworXGRlZlx4aXRlbXp6eiAjMXtcZG9zdWJpbmQge2t3fXtcY29kZXsjMX19e2ZvciB7XGJmIFx4aXRlbXN1YnRvcGljfX0lCisgICAgICAgICAgICAgICAgIFxpdGVtenp6IHsjMX19CisKK1xkZWZcaXRlbXp6eiAjMXtcYmVnaW5ncm91cCAlCisgIFxhZHZhbmNlXGhzaXplIGJ5IC1ccmlnaHRza2lwCisgIFxhZHZhbmNlXGhzaXplIGJ5IC1cdGFibGVpbmRlbnQKKyAgXHNldGJveDA9XGhib3h7XGl0ZW1mb250eyMxfX0lCisgIFxpdGVtaW5kZXh7IzF9JQorICBcbm9icmVhayAlIFRoaXMgcHJldmVudHMgYSBicmVhayBiZWZvcmUgQGl0ZW14LgorICAlCisgICUgSWYgdGhlIGl0ZW0gdGV4dCBkb2VzIG5vdCBmaXQgaW4gdGhlIHNwYWNlIHdlIGhhdmUsIHB1dCBpdCBvbiBhIGxpbmUKKyAgJSBieSBpdHNlbGYsIGFuZCBkbyBub3QgYWxsb3cgYSBwYWdlIGJyZWFrIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgdGhhdAorICAlIGxpbmUuICBXZSBkbyBub3Qgc3RhcnQgYSBwYXJhZ3JhcGggaGVyZSBiZWNhdXNlIHRoZW4gaWYgdGhlIG5leHQKKyAgJSBjb21tYW5kIGlzLCBlLmcuLCBAa2luZGV4LCB0aGUgd2hhdHNpdCB3b3VsZCBnZXQgcHV0IGludG8gdGhlCisgICUgaG9yaXpvbnRhbCBsaXN0IG9uIGEgbGluZSBieSBpdHNlbGYsIHJlc3VsdGluZyBpbiBleHRyYSBibGFuayBzcGFjZS4KKyAgXGlmZGltIFx3ZDA+XGl0ZW1tYXgKKyAgICAlCisgICAgJSBNYWtlIHRoaXMgYSBwYXJhZ3JhcGggc28gd2UgZ2V0IHRoZSBccGFyc2tpcCBnbHVlIGFuZCB3cmFwcGluZywKKyAgICAlIGJ1dCBsZWF2ZSBpdCByYWdnZWQtcmlnaHQuCisgICAgXGJlZ2luZ3JvdXAKKyAgICAgIFxhZHZhbmNlXGxlZnRza2lwIGJ5LVx0YWJsZWluZGVudAorICAgICAgXGFkdmFuY2VcaHNpemUgYnlcdGFibGVpbmRlbnQKKyAgICAgIFxhZHZhbmNlXHJpZ2h0c2tpcCBieTBwdCBwbHVzMWZpbAorICAgICAgXGxlYXZldm1vZGVcdW5oYm94MFxwYXIKKyAgICBcZW5kZ3JvdXAKKyAgICAlCisgICAgJSBXZSdyZSBnb2luZyB0byBiZSBzdGFydGluZyBhIHBhcmFncmFwaCwgYnV0IHdlIGRvbid0IHdhbnQgdGhlCisgICAgJSBccGFyc2tpcCBnbHVlIC0tIGxvZ2ljYWxseSBpdCdzIHBhcnQgb2YgdGhlIEBpdGVtIHdlIGp1c3Qgc3RhcnRlZC4KKyAgICBcbm9icmVhayBcdnNraXAtXHBhcnNraXAKKyAgICAlCisgICAgJSBTdG9wIGEgcGFnZSBicmVhayBhdCB0aGUgXHBhcnNraXAgZ2x1ZSBjb21pbmcgdXAuICAoVW5mb3J0dW5hdGVseQorICAgICUgd2UgY2FuJ3QgcHJldmVudCBhIHBvc3NpYmxlIHBhZ2UgYnJlYWsgYXQgdGhlIGZvbGxvd2luZworICAgICUgXGJhc2VsaW5lc2tpcCBnbHVlLikgIEhvd2V2ZXIsIGlmIHdoYXQgZm9sbG93cyBpcyBhbiBlbnZpcm9ubWVudAorICAgICUgc3VjaCBhcyBAZXhhbXBsZSwgdGhlcmUgd2lsbCBiZSBubyBccGFyc2tpcCBnbHVlOyB0aGVuCisgICAgJSB0aGUgbmVnYXRpdmUgdnNraXAgd2UganVzdCB3b3VsZCBjYXVzZSB0aGUgZXhhbXBsZSBhbmQgdGhlIGl0ZW0gdG8KKyAgICAlIGNyYXNoIHRvZ2V0aGVyLiAgU28gd2UgdXNlIHRoaXMgYml6YXJyZSB2YWx1ZSBvZiAxMDAwMSBhcyBhIHNpZ25hbAorICAgICUgdG8gXGFib3ZlZW52YnJlYWsgdG8gaW5zZXJ0IFxwYXJza2lwIGdsdWUgYWZ0ZXIgYWxsLgorICAgICUgKFBvc3NpYmx5IHRoZXJlIGFyZSBvdGhlciBjb21tYW5kcyB0aGF0IGNvdWxkIGJlIGZvbGxvd2VkIGJ5CisgICAgJSBAZXhhbXBsZSB3aGljaCBuZWVkIHRoZSBzYW1lIHRyZWF0bWVudCwgYnV0IG5vdCBzZWN0aW9uIHRpdGxlczsgb3IKKyAgICAlIG1heWJlIHNlY3Rpb24gdGl0bGVzIGFyZSB0aGUgb25seSBzcGVjaWFsIGNhc2UgYW5kIHRoZXkgc2hvdWxkIGJlCisgICAgJSBwZW5hbHR5IDEwMDAxLi4uKQorICAgIFxwZW5hbHR5IDEwMDAxCisgICAgXGVuZGdyb3VwCisgICAgXGl0ZW14bmVlZHNuZWdhdGl2ZXZza2lwZmFsc2UKKyAgXGVsc2UKKyAgICAlIFRoZSBpdGVtIHRleHQgZml0cyBpbnRvIHRoZSBzcGFjZS4gIFN0YXJ0IGEgcGFyYWdyYXBoLCBzbyB0aGF0IHRoZQorICAgICUgZm9sbG93aW5nIHRleHQgKGlmIGFueSkgd2lsbCBlbmQgdXAgb24gdGhlIHNhbWUgbGluZS4KKyAgICBcbm9pbmRlbnQKKyAgICAlIERvIHRoaXMgd2l0aCBrZXJucyBhbmQgXHVuaGJveCBzbyB0aGF0IGlmIHRoZXJlIGlzIGEgZm9vdG5vdGUgaW4KKyAgICAlIHRoZSBpdGVtIHRleHQsIGl0IGNhbiBtaWdyYXRlIHRvIHRoZSBtYWluIHZlcnRpY2FsIGxpc3QgYW5kCisgICAgJSBldmVudHVhbGx5IGJlIHByaW50ZWQuCisgICAgXG5vYnJlYWtca2Vybi1cdGFibGVpbmRlbnQKKyAgICBcZGltZW4wID0gXGl0ZW1tYXggIFxhZHZhbmNlXGRpbWVuMCBieSBcaXRlbW1hcmdpbiBcYWR2YW5jZVxkaW1lbjAgYnkgLVx3ZDAKKyAgICBcdW5oYm94MAorICAgIFxub2JyZWFrXGtlcm5cZGltZW4wCisgICAgXGVuZGdyb3VwCisgICAgXGl0ZW14bmVlZHNuZWdhdGl2ZXZza2lwdHJ1ZQorICBcZmkKK30KKworXGRlZlxpdGVte1xlcnJtZXNzYWdle0BpdGVtIHdoaWxlIG5vdCBpbiBhIHRhYmxlfX0KK1xkZWZcaXRlbXh7XGVycm1lc3NhZ2V7QGl0ZW14IHdoaWxlIG5vdCBpbiBhIHRhYmxlfX0KK1xkZWZca2l0ZW17XGVycm1lc3NhZ2V7QGtpdGVtIHdoaWxlIG5vdCBpbiBhIHRhYmxlfX0KK1xkZWZca2l0ZW14e1xlcnJtZXNzYWdle0BraXRlbXggd2hpbGUgbm90IGluIGEgdGFibGV9fQorXGRlZlx4aXRlbXtcZXJybWVzc2FnZXtAeGl0ZW0gd2hpbGUgbm90IGluIGEgdGFibGV9fQorXGRlZlx4aXRlbXh7XGVycm1lc3NhZ2V7QHhpdGVteCB3aGlsZSBub3QgaW4gYSB0YWJsZX19CisKKyUgQ29udGFpbnMgYSBrbHVkZ2UgdG8gZ2V0IEBlbmRbZGVzY3JpcHRpb25dIHRvIHdvcmsuCitcZGVmXGRlc2NyaXB0aW9ue1x0YWJsZXp7XGRvbnRpbmRleH17MX17fXt9e317fX0KKworJSBAdGFibGUsIEBmdGFibGUsIEB2dGFibGUuCitcZGVmXHRhYmxle1xiZWdpbmdyb3VwXGluRU5WXG9iZXlsaW5lc1xvYmV5c3BhY2VzXHRhYmxleH0KK3tcb2JleWxpbmVzXG9iZXlzcGFjZXMlCitcZ2RlZlx0YWJsZXggIzFeXk17JQorXHRhYmxleVxkb250aW5kZXgjMSAgICAgICAgXGVuZHRhYmxleX19CisKK1xkZWZcZnRhYmxle1xiZWdpbmdyb3VwXGluRU5WXG9iZXlsaW5lc1xvYmV5c3BhY2VzXGZ0YWJsZXh9Cit7XG9iZXlsaW5lc1xvYmV5c3BhY2VzJQorXGdkZWZcZnRhYmxleCAjMV5eTXslCitcdGFibGV5XGZuaXRlbWluZGV4IzEgICAgICAgIFxlbmR0YWJsZXkKK1xkZWZcRWZ0YWJsZXtcZW5kZ3JhZlxhZnRlcmVudmJyZWFrXGVuZGdyb3VwfSUKK1xsZXRcRXRhYmxlPVxyZWxheH19CisKK1xkZWZcdnRhYmxle1xiZWdpbmdyb3VwXGluRU5WXG9iZXlsaW5lc1xvYmV5c3BhY2VzXHZ0YWJsZXh9Cit7XG9iZXlsaW5lc1xvYmV5c3BhY2VzJQorXGdkZWZcdnRhYmxleCAjMV5eTXslCitcdGFibGV5XHZyaXRlbWluZGV4IzEgICAgICAgIFxlbmR0YWJsZXkKK1xkZWZcRXZ0YWJsZXtcZW5kZ3JhZlxhZnRlcmVudmJyZWFrXGVuZGdyb3VwfSUKK1xsZXRcRXRhYmxlPVxyZWxheH19CisKK1xkZWZcZG9udGluZGV4ICMxe30KK1xkZWZcZm5pdGVtaW5kZXggIzF7XGRvaW5kIHtmbn17XGNvZGV7IzF9fX0lCitcZGVmXHZyaXRlbWluZGV4ICMxe1xkb2luZCB7dnJ9e1xjb2RleyMxfX19JQorCit7XG9iZXlzcGFjZXMgJQorXGdkZWZcdGFibGV5IzEjMiAjMyAjNCAjNSAjNiAjN1xlbmR0YWJsZXl7XGVuZGdyb3VwJQorXHRhYmxlensjMX17IzJ9eyMzfXsjNH17IzV9eyM2fX19CisKK1xkZWZcdGFibGV6ICMxIzIjMyM0IzUjNnslCitcYWJvdmVlbnZicmVhayAlCitcYmVnaW5ncm91cCAlCitcZGVmXEVkZXNjcmlwdGlvbntcRXRhYmxlfSUgTmVjZXNzYXJ5IGtsdWRnZS4KK1xsZXRcaXRlbWluZGV4PSMxJQorXGlmbnVtIDAjMz4wIFxhZHZhbmNlIFxsZWZ0c2tpcCBieSAjM1xtaWwgXGZpICUKK1xpZm51bSAwIzQ+MCBcdGFibGVpbmRlbnQ9IzRcbWlsIFxmaSAlCitcaWZudW0gMCM1PjAgXGFkdmFuY2UgXHJpZ2h0c2tpcCBieSAjNVxtaWwgXGZpICUKK1xkZWZcaXRlbWZvbnR7IzJ9JQorXGl0ZW1tYXg9XHRhYmxlaW5kZW50ICUKK1xhZHZhbmNlIFxpdGVtbWF4IGJ5IC1caXRlbW1hcmdpbiAlCitcYWR2YW5jZSBcbGVmdHNraXAgYnkgXHRhYmxlaW5kZW50ICUKK1xleGRlbnRhbW91bnQ9XHRhYmxlaW5kZW50CitccGFyaW5kZW50ID0gMHB0CitccGFyc2tpcCA9IFxzbWFsbHNraXBhbW91bnQKK1xpZmRpbSBccGFyc2tpcD0wcHQgXHBhcnNraXA9MnB0IFxmaSUKK1xkZWZcRXRhYmxle1xlbmRncmFmXGFmdGVyZW52YnJlYWtcZW5kZ3JvdXB9JQorXGxldFxpdGVtID0gXGludGVybmFsQml0ZW0gJQorXGxldFxpdGVteCA9IFxpbnRlcm5hbEJpdGVteCAlCitcbGV0XGtpdGVtID0gXGludGVybmFsQmtpdGVtICUKK1xsZXRca2l0ZW14ID0gXGludGVybmFsQmtpdGVteCAlCitcbGV0XHhpdGVtID0gXGludGVybmFsQnhpdGVtICUKK1xsZXRceGl0ZW14ID0gXGludGVybmFsQnhpdGVteCAlCit9CisKKyUgVGhpcyBpcyB0aGUgY291bnRlciB1c2VkIGJ5IEBlbnVtZXJhdGUsIHdoaWNoIGlzIHJlYWxseSBAaXRlbWl6ZQorCitcbmV3Y291bnQgXGl0ZW1ubworCitcZGVmXGl0ZW1pemV7XHBhcnNlYXJnXGl0ZW1pemV6enp9CisKK1xkZWZcaXRlbWl6ZXp6eiAjMXslCisgIFxiZWdpbmdyb3VwICUgZW5kZWQgYnkgdGhlIEBlbmQgaXRlbWl6ZQorICBcaXRlbWl6ZXkgeyMxfXtcRWl0ZW1pemV9Cit9CisKK1xkZWZcaXRlbWl6ZXkjMSMyeyUKKyAgXGFib3ZlZW52YnJlYWsKKyAgXGl0ZW1tYXg9XGl0ZW1pbmRlbnQKKyAgXGFkdmFuY2VcaXRlbW1heCBieSAtXGl0ZW1tYXJnaW4KKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGl0ZW1pbmRlbnQKKyAgXGV4ZGVudGFtb3VudD1caXRlbWluZGVudAorICBccGFyaW5kZW50PTBwdAorICBccGFyc2tpcD1cc21hbGxza2lwYW1vdW50CisgIFxpZmRpbVxwYXJza2lwPTBwdCBccGFyc2tpcD0ycHQgXGZpCisgIFxkZWYjMntcZW5kZ3JhZlxhZnRlcmVudmJyZWFrXGVuZGdyb3VwfSUKKyAgXGRlZlxpdGVtY29udGVudHN7IzF9JQorICAlIEBpdGVtaXplIHdpdGggbm8gYXJnIGlzIGVxdWl2YWxlbnQgdG8gQGl0ZW1pemUgQGJ1bGxldC4KKyAgXGlmeFxpdGVtY29udGVudHNcZW1wdHlcZGVmXGl0ZW1jb250ZW50c3tcYnVsbGV0fVxmaQorICBcbGV0XGl0ZW09XGl0ZW1pemVpdGVtCit9CisKKyUgXHNwbGl0b2ZmIFRPS0VOU1xlbmRtYXJrIGRlZmluZXMgXGZpcnN0IHRvIGJlIHRoZSBmaXJzdCB0b2tlbiBpbgorJSBUT0tFTlMsIGFuZCBccmVzdCB0byBiZSB0aGUgcmVtYWluZGVyLgorJQorXGRlZlxzcGxpdG9mZiMxIzJcZW5kbWFya3tcZGVmXGZpcnN0eyMxfVxkZWZccmVzdHsjMn19JQorCislIEFsbG93IGFuIG9wdGlvbmFsIGFyZ3VtZW50IG9mIGFuIHVwcGVyY2FzZSBsZXR0ZXIsIGxvd2VyY2FzZSBsZXR0ZXIsCislIG9yIG51bWJlciwgdG8gc3BlY2lmeSB0aGUgZmlyc3QgbGFiZWwgaW4gdGhlIGVudW1lcmF0ZWQgbGlzdC4gIE5vCislIGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIGAxJy4KKyUKK1xkZWZcZW51bWVyYXRle1xwYXJzZWFyZ1xlbnVtZXJhdGV6enp9CitcZGVmXGVudW1lcmF0ZXp6eiAjMXtcZW51bWVyYXRleSAjMSAgXGVuZGVudW1lcmF0ZXl9CitcZGVmXGVudW1lcmF0ZXkgIzEgIzJcZW5kZW51bWVyYXRleXslCisgIFxiZWdpbmdyb3VwICUgZW5kZWQgYnkgdGhlIEBlbmQgZW51bWVyYXRlCisgICUKKyAgJSBJZiB3ZSB3ZXJlIGdpdmVuIG5vIGFyZ3VtZW50LCBwcmV0ZW5kIHdlIHdlcmUgZ2l2ZW4gYDEnLgorICBcZGVmXHRoZWFyZ3sjMX0lCisgIFxpZnhcdGhlYXJnXGVtcHR5IFxkZWZcdGhlYXJnezF9XGZpCisgICUKKyAgJSBEZXRlY3QgaWYgdGhlIGFyZ3VtZW50IGlzIGEgc2luZ2xlIHRva2VuLiAgSWYgc28sIGl0IG1pZ2h0IGJlIGEKKyAgJSBsZXR0ZXIuICBPdGhlcndpc2UsIHRoZSBvbmx5IHZhbGlkIHRoaW5nIGl0IGNhbiBiZSBpcyBhIG51bWJlci4KKyAgJSAoV2Ugd2lsbCBhbHdheXMgaGF2ZSBvbmUgdG9rZW4sIGJlY2F1c2Ugb2YgdGhlIHRlc3Qgd2UganVzdCBtYWRlLgorICAlIFRoaXMgaXMgYSBnb29kIHRoaW5nLCBzaW5jZSBcc3BsaXRvZmYgZG9lc24ndCB3b3JrIGdpdmVuIG5vdGhpbmcgYXQKKyAgJSBhbGwgLS0gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB1bmRlbGltaXRlZC4pCisgIFxleHBhbmRhZnRlclxzcGxpdG9mZlx0aGVhcmdcZW5kbWFyaworICBcaWZ4XHJlc3RcZW1wdHkKKyAgICAlIE9ubHkgb25lIHRva2VuIGluIHRoZSBhcmd1bWVudC4gIEl0IGNvdWxkIHN0aWxsIGJlIGFueXRoaW5nLgorICAgICUgQSBgYGxvd2VyY2FzZSBsZXR0ZXInJyBpcyBvbmUgd2hvc2UgXGxjY29kZSBpcyBub256ZXJvLgorICAgICUgQW4gYGB1cHBlcmNhc2UgbGV0dGVyJycgaXMgb25lIHdob3NlIFxsY2NvZGUgaXMgYm90aCBub256ZXJvLCBhbmQKKyAgICAlICAgbm90IGVxdWFsIHRvIGl0c2VsZi4KKyAgICAlIE90aGVyd2lzZSwgd2UgYXNzdW1lIGl0J3MgYSBudW1iZXIuCisgICAgJQorICAgICUgV2UgbmVlZCB0aGUgXHJlbGF4IGF0IHRoZSBlbmQgb2YgdGhlIFxpZm51bSBsaW5lcyB0byBzdG9wIFRlWCBmcm9tCisgICAgJSBjb250aW51aW5nIHRvIGxvb2sgZm9yIGEgPG51bWJlcj4uCisgICAgJQorICAgIFxpZm51bVxsY2NvZGVcZXhwYW5kYWZ0ZXJgXHRoZWFyZz0wXHJlbGF4CisgICAgICBcbnVtZXJpY2VudW1lcmF0ZSAlIGEgbnVtYmVyICh3ZSBob3BlKQorICAgIFxlbHNlCisgICAgICAlIEl0J3MgYSBsZXR0ZXIuCisgICAgICBcaWZudW1cbGNjb2RlXGV4cGFuZGFmdGVyYFx0aGVhcmc9XGV4cGFuZGFmdGVyYFx0aGVhcmdccmVsYXgKKyAgICAgICAgXGxvd2VyY2FzZWVudW1lcmF0ZSAlIGxvd2VyY2FzZSBsZXR0ZXIKKyAgICAgIFxlbHNlCisgICAgICAgIFx1cHBlcmNhc2VlbnVtZXJhdGUgJSB1cHBlcmNhc2UgbGV0dGVyCisgICAgICBcZmkKKyAgICBcZmkKKyAgXGVsc2UKKyAgICAlIE11bHRpcGxlIHRva2VucyBpbiB0aGUgYXJndW1lbnQuICBXZSBob3BlIGl0J3MgYSBudW1iZXIuCisgICAgXG51bWVyaWNlbnVtZXJhdGUKKyAgXGZpCit9CisKKyUgQW4gQGVudW1lcmF0ZSB3aG9zZSBsYWJlbHMgYXJlIGludGVnZXJzLiAgVGhlIHN0YXJ0aW5nIGludGVnZXIgaXMKKyUgZ2l2ZW4gaW4gXHRoZWFyZy4KKyUKK1xkZWZcbnVtZXJpY2VudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcdGhlYXJnCisgIFxzdGFydGVudW1lcmF0aW9ue1x0aGVcaXRlbW5vfSUKK30KKworJSBUaGUgc3RhcnRpbmcgKGxvd2VyY2FzZSkgbGV0dGVyIGlzIGluIFx0aGVhcmcuCitcZGVmXGxvd2VyY2FzZWVudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcZXhwYW5kYWZ0ZXJgXHRoZWFyZworICBcc3RhcnRlbnVtZXJhdGlvbnslCisgICAgJSBCZSBzdXJlIHdlJ3JlIG5vdCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYWxwaGFiZXQuCisgICAgXGlmbnVtXGl0ZW1ubz0wCisgICAgICBcZXJybWVzc2FnZXtObyBtb3JlIGxvd2VyY2FzZSBsZXR0ZXJzIGluIEBlbnVtZXJhdGU7IGdldCBhIGJpZ2dlcgorICAgICAgICAgICAgICAgICAgYWxwaGFiZXR9JQorICAgIFxmaQorICAgIFxjaGFyXGxjY29kZVxpdGVtbm8KKyAgfSUKK30KKworJSBUaGUgc3RhcnRpbmcgKHVwcGVyY2FzZSkgbGV0dGVyIGlzIGluIFx0aGVhcmcuCitcZGVmXHVwcGVyY2FzZWVudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcZXhwYW5kYWZ0ZXJgXHRoZWFyZworICBcc3RhcnRlbnVtZXJhdGlvbnslCisgICAgJSBCZSBzdXJlIHdlJ3JlIG5vdCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYWxwaGFiZXQuCisgICAgXGlmbnVtXGl0ZW1ubz0wCisgICAgICBcZXJybWVzc2FnZXtObyBtb3JlIHVwcGVyY2FzZSBsZXR0ZXJzIGluIEBlbnVtZXJhdGU7IGdldCBhIGJpZ2dlcgorICAgICAgICAgICAgICAgICAgYWxwaGFiZXR9CisgICAgXGZpCisgICAgXGNoYXJcdWNjb2RlXGl0ZW1ubworICB9JQorfQorCislIENhbGwgaXRlbWl6ZXksIGFkZGluZyBhIHBlcmlvZCB0byB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHN1cHBseWluZyB0aGUKKyUgY29tbW9uIGxhc3QgdHdvIGFyZ3VtZW50cy4gIEFsc28gc3VidHJhY3Qgb25lIGZyb20gdGhlIGluaXRpYWwgdmFsdWUgaW4KKyUgXGl0ZW1ubywgc2luY2UgQGl0ZW0gaW5jcmVtZW50cyBcaXRlbW5vLgorJQorXGRlZlxzdGFydGVudW1lcmF0aW9uIzF7JQorICBcYWR2YW5jZVxpdGVtbm8gYnkgLTEKKyAgXGl0ZW1pemV5eyMxLn1cRWVudW1lcmF0ZVxmbHVzaGNyCit9CisKKyUgQGFscGhhZW51bWVyYXRlIGFuZCBAY2Fwc2VudW1lcmF0ZSBhcmUgYWJicmV2aWF0aW9ucyBmb3IgZ2l2aW5nIGFuIGFyZworJSB0byBAZW51bWVyYXRlLgorJQorXGRlZlxhbHBoYWVudW1lcmF0ZXtcZW51bWVyYXRle2F9fQorXGRlZlxjYXBzZW51bWVyYXRle1xlbnVtZXJhdGV7QX19CitcZGVmXEVhbHBoYWVudW1lcmF0ZXtcRWVudW1lcmF0ZX0KK1xkZWZcRWNhcHNlbnVtZXJhdGV7XEVlbnVtZXJhdGV9CisKKyUgRGVmaW5pdGlvbiBvZiBAaXRlbSB3aGlsZSBpbnNpZGUgQGl0ZW1pemUuCisKK1xkZWZcaXRlbWl6ZWl0ZW17JQorXGFkdmFuY2VcaXRlbW5vIGJ5IDEKK3tcbGV0XHBhcj1cZW5kZ3JhZiBcc21hbGxicmVha30lCitcaWZobW9kZSBcZXJybWVzc2FnZXtJbiBobW9kZSBhdCBpdGVtaXplaXRlbX1cZmkKK3tccGFyc2tpcD0waW4gXGhza2lwIDBwdAorXGhib3ggdG8gMHB0e1xoc3MgXGl0ZW1jb250ZW50c1xoc2tpcCBcaXRlbW1hcmdpbn0lCitcdmFkanVzdHtccGVuYWx0eSAxMjAwfX0lCitcZmx1c2hjcn0KKworJSBAbXVsdGl0YWJsZSBtYWNyb3MKKyUgQW15IEhlbmRyaWNrc29uLCA4LzE4Lzk0LCAzLzYvOTYKKyUKKyUgQG11bHRpdGFibGUgLi4uIEBlbmQgbXVsdGl0YWJsZSB3aWxsIG1ha2UgYXMgbWFueSBjb2x1bW5zIGFzIGRlc2lyZWQuCislIENvbnRlbnRzIG9mIGVhY2ggY29sdW1uIHdpbGwgd3JhcCBhdCB3aWR0aCBnaXZlbiBpbiBwcmVhbWJsZS4gIFdpZHRoCislIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIHdpdGggc2FtcGxlIHRleHQgZ2l2ZW4gaW4gYSB0ZW1wbGF0ZSBsaW5lLAorJSBvciBpbiBwZXJjZW50IG9mIFxoc2l6ZSwgdGhlIGN1cnJlbnQgd2lkdGggb2YgdGV4dCBvbiBwYWdlLgorCislIFRhYmxlIGNhbiBjb250aW51ZSBvdmVyIHBhZ2VzIGJ1dCB3aWxsIG9ubHkgYnJlYWsgYmV0d2VlbiBsaW5lcy4KKworJSBUbyBtYWtlIHByZWFtYmxlOgorJQorJSBFaXRoZXIgZGVmaW5lIHdpZHRocyBvZiBjb2x1bW5zIGluIHRlcm1zIG9mIHBlcmNlbnQgb2YgXGhzaXplOgorJSAgIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjI1IC4zIC40NQorJSAgIEBpdGVtIC4uLgorJQorJSAgIE51bWJlcnMgZm9sbG93aW5nIEBjb2x1bW5mcmFjdGlvbnMgYXJlIHRoZSBwZXJjZW50IG9mIHRoZSB0b3RhbAorJSAgIGN1cnJlbnQgaHNpemUgdG8gYmUgdXNlZCBmb3IgZWFjaCBjb2x1bW4uIFlvdSBtYXkgdXNlIGFzIG1hbnkKKyUgICBjb2x1bW5zIGFzIGRlc2lyZWQuCisKKworJSBPciB1c2UgYSB0ZW1wbGF0ZToKKyUgICBAbXVsdGl0YWJsZSB7Q29sdW1uIDEgdGVtcGxhdGV9IHtDb2x1bW4gMiB0ZW1wbGF0ZX0ge0NvbHVtbiAzIHRlbXBsYXRlfQorJSAgIEBpdGVtIC4uLgorJSAgIHVzaW5nIHRoZSB3aWRlc3QgdGVybSBkZXNpcmVkIGluIGVhY2ggY29sdW1uLgorJQorJSBGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gdXNlIG1vcmUgdGhhbiBvbmUgbGluZSdzIHdvcnRoIG9mIHdvcmRzIGluCislIHRoZSBwcmVhbWJsZSwgYnJlYWsgdGhlIGxpbmUgd2l0aGluIG9uZSBhcmd1bWVudCBhbmQgaXQKKyUgd2lsbCBwYXJzZSBjb3JyZWN0bHksIGkuZS4sCislCislICAgICBAbXVsdGl0YWJsZSB7Q29sdW1uIDEgdGVtcGxhdGV9IHtDb2x1bW4gMiB0ZW1wbGF0ZX0ge0NvbHVtbiAzCislICAgICAgdGVtcGxhdGV9CislIE5vdDoKKyUgICAgIEBtdWx0aXRhYmxlIHtDb2x1bW4gMSB0ZW1wbGF0ZX0ge0NvbHVtbiAyIHRlbXBsYXRlfQorJSAgICAgIHtDb2x1bW4gMyB0ZW1wbGF0ZX0KKworJSBFYWNoIG5ldyB0YWJsZSBsaW5lIHN0YXJ0cyB3aXRoIEBpdGVtLCBlYWNoIHN1YnNlcXVlbnQgbmV3IGNvbHVtbgorJSBzdGFydHMgd2l0aCBAdGFiLiBFbXB0eSBjb2x1bW5zIG1heSBiZSBwcm9kdWNlZCBieSBzdXBwbHlpbmcgQHRhYidzCislIHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZW0gZm9yIGFzIG1hbnkgdGltZXMgYXMgZW1wdHkgY29sdW1ucyBhcmUgbmVlZGVkLAorJSBpZSwgQHRhYkB0YWJAdGFiIHdpbGwgcHJvZHVjZSB0d28gZW1wdHkgY29sdW1ucy4KKworJSBAaXRlbSwgQHRhYiwgQG11bHRpdGFibGUgb3IgQGVuZCBtdWx0aXRhYmxlIGRvIG5vdCBuZWVkIHRvIGJlIG9uIHRoZWlyCislIG93biBsaW5lcywgYnV0IGl0IHdpbGwgbm90IGh1cnQgaWYgdGhleSBhcmUuCisKKyUgU2FtcGxlIG11bHRpdGFibGU6CisKKyUgICBAbXVsdGl0YWJsZSB7Q29sdW1uIDEgdGVtcGxhdGV9IHtDb2x1bW4gMiB0ZW1wbGF0ZX0ge0NvbHVtbiAzIHRlbXBsYXRlfQorJSAgIEBpdGVtIGZpcnN0IGNvbCBzdHVmZiBAdGFiIHNlY29uZCBjb2wgc3R1ZmYgQHRhYiB0aGlyZCBjb2wKKyUgICBAaXRlbQorJSAgIGZpcnN0IGNvbCBzdHVmZgorJSAgIEB0YWIKKyUgICBzZWNvbmQgY29sIHN0dWZmCislICAgQHRhYgorJSAgIHRoaXJkIGNvbAorJSAgIEBpdGVtIGZpcnN0IGNvbCBzdHVmZiBAdGFiIHNlY29uZCBjb2wgc3R1ZmYKKyUgICBAdGFiIE1hbnkgcGFyYWdyYXBocyBvZiB0ZXh0IG1heSBiZSB1c2VkIGluIGFueSBjb2x1bW4uCislCislICAgICAgICAgVGhleSB3aWxsIHdyYXAgYXQgdGhlIHdpZHRoIGRldGVybWluZWQgYnkgdGhlIHRlbXBsYXRlLgorJSAgIEBpdGVtQHRhYkB0YWIgVGhpcyB3aWxsIGJlIGluIHRoaXJkIGNvbHVtbi4KKyUgICBAZW5kIG11bHRpdGFibGUKKworJSBEZWZhdWx0IGRpbWVuc2lvbnMgbWF5IGJlIHJlc2V0IGJ5IHVzZXIuCislIEBtdWx0aXRhYmxlcGFyc2tpcCBpcyB2ZXJ0aWNhbCBzcGFjZSBiZXR3ZWVuIHBhcmFncmFwaHMgaW4gdGFibGUuCislIEBtdWx0aXRhYmxlcGFyaW5kZW50IGlzIHBhcmFncmFwaCBpbmRlbnQgaW4gdGFibGUuCislIEBtdWx0aXRhYmxlY29sbWFyZ2luIGlzIGhvcml6b250YWwgc3BhY2UgdG8gYmUgbGVmdCBiZXR3ZWVuIGNvbHVtbnMuCislIEBtdWx0aXRhYmxlbGluZXNwYWNlIGlzIHNwYWNlIHRvIGxlYXZlIGJldHdlZW4gdGFibGUgaXRlbXMsIGJhc2VsaW5lCislICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmFzZWxpbmUuCislICAgMHB0IG1lYW5zIGl0IGRlcGVuZHMgb24gY3VycmVudCBub3JtYWwgbGluZSBzcGFjaW5nLgorJQorXG5ld3NraXBcbXVsdGl0YWJsZXBhcnNraXAKK1xuZXdza2lwXG11bHRpdGFibGVwYXJpbmRlbnQKK1xuZXdkaW1lblxtdWx0aXRhYmxlY29sc3BhY2UKK1xuZXdza2lwXG11bHRpdGFibGVsaW5lc3BhY2UKK1xtdWx0aXRhYmxlcGFyc2tpcD0wcHQKK1xtdWx0aXRhYmxlcGFyaW5kZW50PTZwdAorXG11bHRpdGFibGVjb2xzcGFjZT0xMnB0CitcbXVsdGl0YWJsZWxpbmVzcGFjZT0wcHQKKworJSBNYWNyb3MgdXNlZCB0byBzZXQgdXAgaGFsaWduIHByZWFtYmxlOgorJQorXGxldFxlbmRzZXR1cHRhYmxlXHJlbGF4CitcZGVmXHhlbmRzZXR1cHRhYmxle1xlbmRzZXR1cHRhYmxlfQorXGxldFxjb2x1bW5mcmFjdGlvbnNccmVsYXgKK1xkZWZceGNvbHVtbmZyYWN0aW9uc3tcY29sdW1uZnJhY3Rpb25zfQorXG5ld2lmXGlmc2V0cGVyY2VudAorCislICMxIGlzIHRoZSBwYXJ0IG9mIHRoZSBAY29sdW1uZnJhY3Rpb24gYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LCB3aGljaAorJSBpcyBwcmVzdW1hYmx5IGVpdGhlciAwIG9yIHRoZSBlbXB0eSBzdHJpbmcgKGJ1dCB3ZSBkb24ndCBjaGVjaywgd2UKKyUganVzdCB0aHJvdyBpdCBhd2F5KS4gICMyIGlzIHRoZSBkZWNpbWFsIHBhcnQsIHdoaWNoIHdlIHVzZSBhcyB0aGUKKyUgcGVyY2VudCBvZiBcaHNpemUgZm9yIHRoaXMgY29sdW1uLgorXGRlZlxwaWNrdXB3aG9sZWZyYWN0aW9uIzEuIzIgeyUKKyAgXGdsb2JhbFxhZHZhbmNlXGNvbGNvdW50IGJ5IDEKKyAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lIGNvbFx0aGVcY29sY291bnRcZW5kY3NuYW1ley4jMlxoc2l6ZX0lCisgIFxzZXR1cHRhYmxlCit9CisKK1xuZXdjb3VudFxjb2xjb3VudAorXGRlZlxzZXR1cHRhYmxlIzF7JQorICBcZGVmXGZpcnN0YXJneyMxfSUKKyAgXGlmeFxmaXJzdGFyZ1x4ZW5kc2V0dXB0YWJsZQorICAgIFxsZXRcZ28gPSBccmVsYXgKKyAgXGVsc2UKKyAgICBcaWZ4XGZpcnN0YXJnXHhjb2x1bW5mcmFjdGlvbnMKKyAgICAgIFxnbG9iYWxcc2V0cGVyY2VudHRydWUKKyAgICBcZWxzZQorICAgICAgXGlmc2V0cGVyY2VudAorICAgICAgICAgXGxldFxnb1xwaWNrdXB3aG9sZWZyYWN0aW9uCisgICAgICBcZWxzZQorICAgICAgICAgXGdsb2JhbFxhZHZhbmNlXGNvbGNvdW50IGJ5IDEKKyAgICAgICAgIFxzZXRib3gwPVxoYm94eyMxXHVuc2tpcFxzcGFjZX0lIEFkZCBhIG5vcm1hbCB3b3JkIHNwYWNlIGFzIGEKKyAgICAgICAgICAgICAgICAgICAlIHNlcGFyYXRvcjsgdHlwaWNhbGx5IHRoYXQgaXMgYWx3YXlzIGluIHRoZSBpbnB1dCwgYW55d2F5LgorICAgICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lIGNvbFx0aGVcY29sY291bnRcZW5kY3NuYW1le1x0aGVcd2QwfSUKKyAgICAgIFxmaQorICAgIFxmaQorICAgIFxpZnhcZ29ccGlja3Vwd2hvbGVmcmFjdGlvbgorICAgICAgJSBQdXQgdGhlIGFyZ3VtZW50IGJhY2sgZm9yIHRoZSBccGlja3Vwd2hvbGVmcmFjdGlvbiBjYWxsLCBzbworICAgICAgJSB3ZSdsbCBhbHdheXMgaGF2ZSBhIHBlcmlvZCB0aGVyZSB0byBiZSBwYXJzZWQuCisgICAgICBcZGVmXGdve1xwaWNrdXB3aG9sZWZyYWN0aW9uIzF9JQorICAgIFxlbHNlCisgICAgICBcbGV0XGdvID0gXHNldHVwdGFibGUKKyAgICBcZmklCisgIFxmaQorICBcZ28KK30KKworJSBAbXVsdGl0YWJsZSAuLi4gQGVuZCBtdWx0aXRhYmxlIGRlZmluaXRpb25zOgorJQorXGRlZlxtdWx0aXRhYmxle1xwYXJzZWFyZ1xkb3RhYmxlfQorXGRlZlxkb3RhYmxlIzF7XGJncm91cAorICBcdnNraXBccGFyc2tpcAorICBcbGV0XGl0ZW09XGNyY3J3aXRoZm9vdG5vdGVzCisgICUgQSBcdGFiIHVzZWQgdG8gaW5jbHVkZSBcaHNraXAxc3AuICBCdXQgdGhlbiB0aGUgc3BhY2UgaW4gYSB0ZW1wbGF0ZQorICAlIGxpbmUgaXMgbm90IGVub3VnaC4gIFRoYXQgaXMgYmFkLiAgU28gbGV0J3MgZ28gYmFjayB0byBqdXN0ICYgdW50aWwKKyAgJSB3ZSBlbmNvdW50ZXIgdGhlIHByb2JsZW0gaXQgd2FzIGludGVuZGVkIHRvIHNvbHZlIGFnYWluLiAgLS1rYXJsLAorICAlIG5hdGhhbkBhY20ub3JnLCAyMGFwcjk5LgorICBcbGV0XHRhYj0mJQorICBcbGV0XHN0YXJ0Zm9vdGlucz1cc3RhcnRzYXZlZGZvb3Rub3RlCisgIFx0b2xlcmFuY2U9OTUwMAorICBcaGJhZG5lc3M9OTUwMAorICBcc2V0bXVsdGl0YWJsZXNwYWNpbmcKKyAgXHBhcnNraXA9XG11bHRpdGFibGVwYXJza2lwCisgIFxwYXJpbmRlbnQ9XG11bHRpdGFibGVwYXJpbmRlbnQKKyAgXG92ZXJmdWxscnVsZT0wcHQKKyAgXGdsb2JhbFxjb2xjb3VudD0wCisgIFxkZWZcRW11bHRpdGFibGV7JQorICAgIFxnbG9iYWxcc2V0cGVyY2VudGZhbHNlCisgICAgXGNyY3J3aXRoZm9vdG5vdGVzXGNyY3IKKyAgICBcZWdyb3VwXGVncm91cAorICB9JQorICAlCisgICUgVG8gcGFyc2UgZXZlcnl0aGluZyBiZXR3ZWVuIEBtdWx0aXRhYmxlIGFuZCBAaXRlbToKKyAgXHNldHVwdGFibGUjMSBcZW5kc2V0dXB0YWJsZQorICAlCisgICUgXGV2ZXJ5Y3Igd2lsbCByZXNldCBjb2x1bW4gY291bnRlciwgXGNvbGNvdW50LCBhdCB0aGUgZW5kIG9mCisgICUgZWFjaCBsaW5lLiBFdmVyeSBjb2x1bW4gZW50cnkgd2lsbCBjYXVzZSBcY29sY291bnQgdG8gYWR2YW5jZSBieSBvbmUuCisgICUgVGhlIHRhYmxlIHByZWFtYmxlCisgICUgbG9va3MgYXQgdGhlIGN1cnJlbnQgXGNvbGNvdW50IHRvIGZpbmQgdGhlIGNvcnJlY3QgY29sdW1uIHdpZHRoLgorICBcZXZlcnljcntcbm9hbGlnbnslCisgICUKKyAgJSBcZmlsYnJlYWslJSBrZWVwcyB1bmRlcmZ1bGwgYm94IG1lc3NhZ2VzIG9mZiB3aGVuIHRhYmxlIGJyZWFrcyBvdmVyIHBhZ2VzLgorICAlIE1heWJlIHNvLCBidXQgaXQgYWxzbyBjcmVhdGVzIHJlYWxseSB3ZWlyZCBwYWdlIGJyZWFrcyB3aGVuIHRoZSB0YWJsZQorICAlIGJyZWFrcyBvdmVyIHBhZ2VzLiBXb3VsZG4ndCBcdmZpbCBiZSBiZXR0ZXI/ICBXYWl0IHVudGlsIHRoZSBwcm9ibGVtCisgICUgbWFuaWZlc3RzIGl0c2VsZiwgc28gaXQgY2FuIGJlIGZpeGVkIGZvciByZWFsIC0ta2FybC4KKyAgICBcZ2xvYmFsXGNvbGNvdW50PTBccmVsYXh9fSUKKyAgJQorICAlIFRoaXMgcHJlYW1ibGUgc2V0cyB1cCBhIGdlbmVyaWMgY29sdW1uIGRlZmluaXRpb24sIHdoaWNoIHdpbGwKKyAgJSBiZSB1c2VkIGFzIG1hbnkgdGltZXMgYXMgdXNlciBjYWxscyBmb3IgY29sdW1ucy4KKyAgJSBcdnRvcCB3aWxsIHNldCBhIHNpbmdsZSBsaW5lIGFuZCB3aWxsIGFsc28gbGV0IHRleHQgd3JhcCBhbmQKKyAgJSBjb250aW51ZSBmb3IgbWFueSBwYXJhZ3JhcGhzIGlmIGRlc2lyZWQuCisgIFxoYWxpZ25cYmdyb3VwJlxnbG9iYWxcYWR2YW5jZVxjb2xjb3VudCBieSAxXHJlbGF4CisgICAgXG11bHRpc3RydXRcdnRvcHtcaHNpemU9XGV4cGFuZGFmdGVyXGNzbmFtZSBjb2xcdGhlXGNvbGNvdW50XGVuZGNzbmFtZQorICAlCisgICUgSW4gb3JkZXIgdG8ga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIKKyAgJSB3ZSB3aWxsIGFkZCBhIFxsZWZ0c2tpcCBvZiBcbXVsdGl0YWJsZWNvbHNwYWNlIHRvIGFsbCBjb2x1bW5zIGFmdGVyCisgICUgdGhlIGZpcnN0IG9uZS4KKyAgJQorICAlIElmIGEgdGVtcGxhdGUgaGFzIGJlZW4gdXNlZCwgd2Ugd2lsbCBhZGQgXG11bHRpdGFibGVjb2xzcGFjZQorICAlIHRvIHRoZSB3aWR0aCBvZiBlYWNoIHRlbXBsYXRlIGVudHJ5LgorICAlCisgICUgSWYgdGhlIHVzZXIgaGFzIHNldCBwcmVhbWJsZSBpbiB0ZXJtcyBvZiBwZXJjZW50IG9mIFxoc2l6ZSB3ZSB3aWxsCisgICUgdXNlIHRoYXQgZGltZW5zaW9uIGFzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLCBhbmQgdGhlIFxsZWZ0c2tpcAorICAlIHdpbGwga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIuICBUYWJsZSB3aWxsIHN0YXJ0IGF0CisgICUgbGVmdCBtYXJnaW4gYW5kIGZpbmFsIGNvbHVtbiB3aWxsIGp1c3RpZnkgYXQgcmlnaHQgbWFyZ2luLgorICAlCisgICUgTWFrZSBzdXJlIHdlIGRvbid0IGluaGVyaXQgXHJpZ2h0c2tpcCBmcm9tIHRoZSBvdXRlciBlbnZpcm9ubWVudC4KKyAgXHJpZ2h0c2tpcD0wcHQKKyAgXGlmbnVtXGNvbGNvdW50PTEKKyAgICAlIFRoZSBmaXJzdCBjb2x1bW4gd2lsbCBiZSBpbmRlbnRlZCB3aXRoIHRoZSBzdXJyb3VuZGluZyB0ZXh0LgorICAgIFxhZHZhbmNlXGhzaXplIGJ5XGxlZnRza2lwCisgIFxlbHNlCisgICAgXGlmc2V0cGVyY2VudCBcZWxzZQorICAgICAgJSBJZiB1c2VyIGhhcyBub3Qgc2V0IHByZWFtYmxlIGluIHRlcm1zIG9mIHBlcmNlbnQgb2YgXGhzaXplCisgICAgICAlIHdlIHdpbGwgYWR2YW5jZSBcaHNpemUgYnkgXG11bHRpdGFibGVjb2xzcGFjZS4KKyAgICAgIFxhZHZhbmNlXGhzaXplIGJ5IFxtdWx0aXRhYmxlY29sc3BhY2UKKyAgICBcZmkKKyAgICUgSW4gZWl0aGVyIGNhc2Ugd2Ugd2lsbCBtYWtlIFxsZWZ0c2tpcD1cbXVsdGl0YWJsZWNvbHNwYWNlOgorICBcbGVmdHNraXA9XG11bHRpdGFibGVjb2xzcGFjZQorICBcZmkKKyAgJSBJZ25vcmluZyBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgYXZvaWRzIGFuIG9jY2FzaW9uYWwgc3B1cmlvdXMKKyAgJSBibGFuayBsaW5lLCB3aGVuIFRlWCBkZWNpZGVzIHRvIGJyZWFrIHRoZSBsaW5lIGF0IHRoZSBzcGFjZSBiZWZvcmUgdGhlCisgICUgYm94IGZyb20gdGhlIG11bHRpc3RydXQsIHNvIHRoZSBzdHJ1dCBlbmRzIHVwIG9uIGEgbGluZSBieSBpdHNlbGYuCisgICUgRm9yIGV4YW1wbGU6CisgICUgQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMTEgLjg5CisgICUgQGl0ZW0gQGNvZGV7I30KKyAgJSBAdGFiIExlZ2FsIGhvbGlkYXkgd2hpY2ggaXMgdmFsaWQgaW4gbWFqb3IgcGFydHMgb2YgdGhlIHdob2xlIGNvdW50cnkuCisgICUgSXMgYXV0b21hdGljYWxseSBwcm92aWRlZCB3aXRoIGhpZ2hsaWdodGluZyBzZXF1ZW5jZXMgcmVzcGVjdGl2ZWx5IG1hcmtpbmcKKyAgJSBjaGFyYWN0ZXJzLgorICBcbm9pbmRlbnRcaWdub3Jlc3BhY2VzIyNcdW5za2lwXG11bHRpc3RydXR9XGNyCit9CisKK1xkZWZcc2V0bXVsdGl0YWJsZXNwYWNpbmd7JSB0ZXN0IHRvIHNlZSBpZiB1c2VyIGhhcyBzZXQgXG11bHRpdGFibGVsaW5lc3BhY2UuCislIElmIHNvLCBkbyBub3RoaW5nLiBJZiBub3QsIGdpdmUgaXQgYW4gYXBwcm9wcmlhdGUgZGltZW5zaW9uIGJhc2VkIG9uCislIGN1cnJlbnQgYmFzZWxpbmVza2lwLgorXGlmZGltXG11bHRpdGFibGVsaW5lc3BhY2U9MHB0Citcc2V0Ym94MD1cdmJveHtYfVxnbG9iYWxcbXVsdGl0YWJsZWxpbmVzcGFjZT1cdGhlXGJhc2VsaW5lc2tpcAorXGdsb2JhbFxhZHZhbmNlXG11bHRpdGFibGVsaW5lc3BhY2UgYnktXGh0MAorJSUgc3RydXQgdG8gcHV0IGluIHRhYmxlIGluIGNhc2Ugc29tZSBlbnRyeSBkb2Vzbid0IGhhdmUgZGVzY2VuZGVycywKKyUlIHRvIGtlZXAgbGluZXMgZXF1YWxseSBzcGFjZWQKK1xsZXRcbXVsdGlzdHJ1dCA9IFxzdHJ1dAorXGVsc2UKKyUlIEZJWE1FOiB3aGF0IGlzIFxib3gwIHN1cHBvc2VkIHRvIGJlPworXGdkZWZcbXVsdGlzdHJ1dHtcdnJ1bGUgaGVpZ2h0XG11bHRpdGFibGVsaW5lc3BhY2UgZGVwdGhcZHAwCit3aWR0aDBwdFxyZWxheH0gXGZpCislJSBUZXN0IHRvIHNlZSBpZiBwYXJza2lwIGlzIGxhcmdlciB0aGFuIHNwYWNlIGJldHdlZW4gbGluZXMgb2YKKyUlIHRhYmxlLiBJZiBub3QsIGRvIG5vdGhpbmcuCislJSAgICAgICAgSWYgc28sIHNldCB0byBzYW1lIGRpbWVuc2lvbiBhcyBtdWx0aXRhYmxlbGluZXNwYWNlLgorXGlmZGltXG11bHRpdGFibGVwYXJza2lwPlxtdWx0aXRhYmxlbGluZXNwYWNlCitcZ2xvYmFsXG11bHRpdGFibGVwYXJza2lwPVxtdWx0aXRhYmxlbGluZXNwYWNlCitcZ2xvYmFsXGFkdmFuY2VcbXVsdGl0YWJsZXBhcnNraXAtN3B0ICUlIHRvIGtlZXAgcGFyc2tpcCBzb21ld2hhdCBzbWFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUlIHRoYW4gc2tpcCBiZXR3ZWVuIGxpbmVzIGluIHRoZSB0YWJsZS4KK1xmaSUKK1xpZmRpbVxtdWx0aXRhYmxlcGFyc2tpcD0wcHQKK1xnbG9iYWxcbXVsdGl0YWJsZXBhcnNraXA9XG11bHRpdGFibGVsaW5lc3BhY2UKK1xnbG9iYWxcYWR2YW5jZVxtdWx0aXRhYmxlcGFyc2tpcC03cHQgJSUgdG8ga2VlcCBwYXJza2lwIHNvbWV3aGF0IHNtYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSUgdGhhbiBza2lwIGJldHdlZW4gbGluZXMgaW4gdGhlIHRhYmxlLgorXGZpfQorCislIEluIGNhc2UgYSBAZm9vdG5vdGUgYXBwZWFycyBpbnNpZGUgYW4gYWxpZ25tZW50LCBzYXZlIHRoZSBmb290bm90ZQorJSB0ZXh0IHRvIGEgYm94IGFuZCBtYWtlIHRoZSBcaW5zZXJ0IHdoZW4gYSByb3cgb2YgdGhlIHRhYmxlIGlzCislIGZpbmlzaGVkLiAgT3RoZXJ3aXNlLCB0aGUgaW5zZXJ0aW9uIGlzIGxvc3QsIGl0IG5ldmVyIG1pZ3JhdGVzIHRvIHRoZQorJSBtYWluIHZlcnRpY2FsIGxpc3QuICAtLWthc2FsLCAyMmphbjAzLgorJQorXG5ld2JveFxzYXZlZGZvb3Rub3RlcworJQorJSBcZG90YWJsZSBcbGV0J3MgXHN0YXJ0Zm9vdGlucyB0byB0aGlzLCBzbyB0aGF0IFxkb2Zvb3Rub3RlIHdpbGwgY2FsbAorJSBpdCBpbnN0ZWFkIG9mIHN0YXJ0aW5nIHRoZSBpbnNlcnRpb24gcmlnaHQgYXdheS4KK1xkZWZcc3RhcnRzYXZlZGZvb3Rub3RleyUKKyAgXGdsb2JhbFxzZXRib3hcc2F2ZWRmb290bm90ZXMgPSBcdmJveFxiZ3JvdXAKKyAgICBcdW52Ym94XHNhdmVkZm9vdG5vdGVzCit9CitcZGVmXGNyY3J3aXRoZm9vdG5vdGVzeyUKKyAgXGNyY3IKKyAgXGlmdm9pZFxzYXZlZGZvb3Rub3RlcyBcZWxzZQorICAgIFxub2FsaWdue1xpbnNlcnRcZm9vdGluc3tcYm94XHNhdmVkZm9vdG5vdGVzfX0lCisgIFxmaQorfQorCitcbWVzc2FnZXtjb25kaXRpb25hbHMsfQorJSBQcmV2ZW50IGVycm9ycyBmb3Igc2VjdGlvbiBjb21tYW5kcy4KKyUgVXNlZCBpbiBAaWdub3JlIGFuZCBpbiBmYWlsaW5nIGNvbmRpdGlvbmFscy4KK1xkZWZcaWdub3Jlc2VjdGlvbnN7JQorICBcbGV0XGFwcGVuZGl4PVxyZWxheAorICBcbGV0XGFwcGVuZGl4c2VjPVxyZWxheAorICBcbGV0XGFwcGVuZGl4c2VjdGlvbj1ccmVsYXgKKyAgXGxldFxhcHBlbmRpeHN1YnNlYz1ccmVsYXgKKyAgXGxldFxhcHBlbmRpeHN1YnNlY3Rpb249XHJlbGF4CisgIFxsZXRcYXBwZW5kaXhzdWJzdWJzZWM9XHJlbGF4CisgIFxsZXRcYXBwZW5kaXhzdWJzdWJzZWN0aW9uPVxyZWxheAorICAlXGxldFxiZWdpbj1ccmVsYXgKKyAgJVxsZXRcYnllPVxyZWxheAorICBcbGV0XGNlbnRlcmNoYXA9XHJlbGF4CisgIFxsZXRcY2hhcHRlcj1ccmVsYXgKKyAgXGxldFxjb250ZW50cz1ccmVsYXgKKyAgXGxldFxzZWN0aW9uPVxyZWxheAorICBcbGV0XHNtYWxsYm9vaz1ccmVsYXgKKyAgXGxldFxzdWJzZWM9XHJlbGF4CisgIFxsZXRcc3Vic2VjdGlvbj1ccmVsYXgKKyAgXGxldFxzdWJzdWJzZWM9XHJlbGF4CisgIFxsZXRcc3Vic3Vic2VjdGlvbj1ccmVsYXgKKyAgXGxldFx0aXRsZXBhZ2U9XHJlbGF4CisgIFxsZXRcdG9wPVxyZWxheAorICBcbGV0XHVubnVtYmVyZWQ9XHJlbGF4CisgIFxsZXRcdW5udW1iZXJlZHNlYz1ccmVsYXgKKyAgXGxldFx1bm51bWJlcmVkc2VjdGlvbj1ccmVsYXgKKyAgXGxldFx1bm51bWJlcmVkc3Vic2VjPVxyZWxheAorICBcbGV0XHVubnVtYmVyZWRzdWJzZWN0aW9uPVxyZWxheAorICBcbGV0XHVubnVtYmVyZWRzdWJzdWJzZWM9XHJlbGF4CisgIFxsZXRcdW5udW1iZXJlZHN1YnN1YnNlY3Rpb249XHJlbGF4Cit9CisKKyUgSWdub3JlIEBpZ25vcmUsIEBpZmh0bWwsIEBpZmluZm8sIGFuZCB0aGUgbGlrZS4KKyUKK1xkZWZcZGlyZW50cnl7XGRvaWdub3Jle2RpcmVudHJ5fX0KK1xkZWZcZG9jdW1lbnRkZXNjcmlwdGlvbndvcmR7ZG9jdW1lbnRkZXNjcmlwdGlvbn0KK1xkZWZcZG9jdW1lbnRkZXNjcmlwdGlvbntcZG9pZ25vcmV7ZG9jdW1lbnRkZXNjcmlwdGlvbn19CitcZGVmXGh0bWx7XGRvaWdub3Jle2h0bWx9fQorXGRlZlxpZmh0bWx7XGRvaWdub3Jle2lmaHRtbH19CitcZGVmXGlmaW5mb3tcZG9pZ25vcmV7aWZpbmZvfX0KK1xkZWZcaWZub3R0ZXh7XGRvaWdub3Jle2lmbm90dGV4fX0KK1xkZWZcaWZwbGFpbnRleHR7XGRvaWdub3Jle2lmcGxhaW50ZXh0fX0KK1xkZWZcaWZ4bWx7XGRvaWdub3Jle2lmeG1sfX0KK1xkZWZcaWdub3Jle1xkb2lnbm9yZXtpZ25vcmV9fQorXGRlZlxtZW51e1xkb2lnbm9yZXttZW51fX0KK1xkZWZceG1se1xkb2lnbm9yZXt4bWx9fQorCislIEBkaXJjYXRlZ29yeSBDQVRFR09SWSAgLS0gc3BlY2lmeSBhIGNhdGVnb3J5IG9mIHRoZSBkaXIgZmlsZQorJSB3aGljaCB0aGlzIGZpbGUgc2hvdWxkIGJlbG9uZyB0by4gIElnbm9yZSB0aGlzIGluIFRlWC4KK1xsZXRcZGlyY2F0ZWdvcnkgPSBcY29tbWVudAorCislIElnbm9yZSB0ZXh0IHVudGlsIGEgbGluZSBgQGVuZCAjMScsIGtlZXBpbmcgdHJhY2sgb2YgbmVzdGVkIGNvbmRpdGlvbmFscy4KKyUKKyUgQSBjb3VudCB0byByZW1lbWJlciB0aGUgZGVwdGggb2YgbmVzdGluZy4KK1xuZXdjb3VudFxkb2lnbm9yZWNvdW50CisKK1xkZWZcZG9pZ25vcmUjMXtcYmVnaW5ncm91cAorICAlIERvbid0IGNvbXBsYWluIGFib3V0IGNvbnRyb2wgc2VxdWVuY2VzIHdlIGhhdmUgZGVjbGFyZWQgXG91dGVyLgorICBcaWdub3Jlc2VjdGlvbnMKKyAgJQorICAlIE1ha2Ugc3VyZSB0aGF0IHNwYWNlcyB0dXJuIGludG8gdG9rZW5zIHRoYXQgbWF0Y2ggd2hhdCBcZG9pZ25vcmV0ZXh0IHdhbnRzLgorICBcY2F0Y29kZVxzcGFjZUNoYXIgPSAxMAorICAlCisgICUgSWdub3JlIGJyYWNlcywgc28gbWlzbWF0Y2hlZCBicmFjZXMgZG9uJ3QgY2F1c2UgdHJvdWJsZS4KKyAgXGNhdGNvZGVgXHsgPSA5CisgIFxjYXRjb2RlYFx9ID0gOQorICAlCisgICUgQ291bnQgbnVtYmVyIG9mICMxJ3MgdGhhdCB3ZSd2ZSBzZWVuLgorICBcZG9pZ25vcmVjb3VudCA9IDAKKyAgJQorICAlIFN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCB0aGUgbWF0Y2hpbmcgYEBlbmQgIzEnLgorICBcZXhwYW5kYWZ0ZXIgXGRvZG9pZ25vcmUgXGNzbmFtZSMxXGVuZGNzbmFtZSB7IzF9JQorfQorCit7IFxjYXRjb2RlYEA9MTEgJSBXZSB3YW50IHRvIHVzZSBcU1RAUCB3aGljaCBjYW5ub3QgYXBwZWFyIGluIHRleGluZm8gc291cmNlLgorICBcb2JleWxpbmVzICUKKyAgJQorICBcZ2RlZlxkb2RvaWdub3JlIzEjMnslCisgICAgJSAjMSBjb250YWlucywgZS5nLiwgXGlmaW5mbywgYS5rLmEuIEBpZmluZm8uCisgICAgJSAjMiBjb250YWlucyB0aGUgc3RyaW5nIGBpZmluZm8nLgorICAgICUKKyAgICAlIERlZmluZSBhIGNvbW1hbmQgdG8gZmluZCB0aGUgbmV4dCBgQGVuZCAjMicsIHdoaWNoIG11c3QgYmUgb24gYSBsaW5lCisgICAgJSBieSBpdHNlbGYuCisgICAgXGxvbmdcZGVmXGRvaWdub3JldGV4dCMjMV5eTVxlbmQgIzJ7XGRvaWdub3JldGV4dHl5eSMjMV5eTSMxXFNUQFB9JQorICAgICUgQW5kIHRoaXMgY29tbWFuZCB0byBmaW5kIGFub3RoZXIgIzEgY29tbWFuZCwgYXQgdGhlIGJlZ2lubmluZyBvZiBhCisgICAgJSBsaW5lLiAgKE90aGVyd2lzZSwgd2Ugd291bGQgY29uc2lkZXIgYSBsaW5lIGBAYyBAaWZzZXQnLCBmb3IKKyAgICAlIGV4YW1wbGUsIHRvIGNvdW50IGFzIGFuIEBpZnNldCBmb3IgbmVzdGluZy4pCisgICAgXGxvbmdcZGVmXGRvaWdub3JldGV4dHl5eSMjMV5eTSMxIyMyXFNUQFB7XGRvaWdub3JleXl5eyMjMn1cU1RAUH0lCisgICAgJQorICAgICUgQW5kIG5vdyBleHBhbmQgdGhhdCBjb21tYW5kLgorICAgIFxvYmV5bGluZXMgJQorICAgIFxkb2lnbm9yZXRleHQgXl5NJQorICB9JQorfQorCitcZGVmXGRvaWdub3JleXl5IzF7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcZW1wdHkJCQklIE5vdGhpbmcgZm91bmQuCisgICAgXGxldFxuZXh0XGRvaWdub3JldGV4dHp6egorICBcZWxzZQkJCQkJJSBGb3VuZCBhIG5lc3RlZCBjb25kaXRpb24sIC4uLgorICAgIFxhZHZhbmNlXGRvaWdub3JlY291bnQgYnkgMQorICAgIFxsZXRcbmV4dFxkb2lnbm9yZXRleHR5eXkJCSUgLi4uLCBsb29rIGZvciBhbm90aGVyLgorICAgICUgSWYgd2UncmUgaGVyZSwgIzEgZW5kcyB3aXRoIF5eTVxpZmluZm8gKGZvciBleGFtcGxlKS4KKyAgXGZpCisgIFxuZXh0ICMxJSB0aGUgdG9rZW4gXFNUQFAgaXMgcHJlc2VudCBqdXN0IGFmdGVyIHRoaXMgbWFjcm8uCit9CisKKyUgV2UgaGF2ZSB0byBzd2FsbG93IHRoZSByZW1haW5pbmcgIlxTVEBQIi4KKyUgCitcZGVmXGRvaWdub3JldGV4dHp6eiMxeyUKKyAgXGlmbnVtXGRvaWdub3JlY291bnQgPSAwCSUgV2UgaGF2ZSBqdXN0IGZvdW5kIHRoZSBvdXRlcm1vc3QgQGVuZC4KKyAgICBcbGV0XG5leHRcZW5kZG9pZ25vcmUKKyAgXGVsc2UJCQkJJSBTdGlsbCBpbnNpZGUgYSBuZXN0ZWQgY29uZGl0aW9uLgorICAgIFxhZHZhbmNlXGRvaWdub3JlY291bnQgYnkgLTEKKyAgICBcbGV0XG5leHRcZG9pZ25vcmV0ZXh0ICAgICAgJSBMb29rIGZvciB0aGUgbmV4dCBAZW5kLgorICBcZmkKKyAgXG5leHQKK30KKworJSBGaW5pc2ggb2ZmIGlnbm9yZWQgdGV4dC4KK1xkZWZcZW5kZG9pZ25vcmV7XGVuZGdyb3VwXGlnbm9yZXNwYWNlc30KKworCislIEBzZXQgVkFSIHNldHMgdGhlIHZhcmlhYmxlIFZBUiB0byBhbiBlbXB0eSB2YWx1ZS4KKyUgQHNldCBWQVIgUkVTVC1PRi1MSU5FIHNldHMgVkFSIHRvIHRoZSB2YWx1ZSBSRVNULU9GLUxJTkUuCislCislIFNpbmNlIHdlIHdhbnQgdG8gc2VwYXJhdGUgVkFSIGZyb20gUkVTVC1PRi1MSU5FICh3aGljaCBtaWdodCBiZQorJSBlbXB0eSksIHdlIGNhbid0IGp1c3QgdXNlIFxwYXJzZWFyZzsgd2UgaGF2ZSB0byBpbnNlcnQgYSBzcGFjZSBvZiBvdXIKKyUgb3duIHRvIGRlbGltaXQgdGhlIHJlc3Qgb2YgdGhlIGxpbmUsIGFuZCB0aGVuIHRha2UgaXQgb3V0IGFnYWluIGlmIHdlCislIGRpZG4ndCBuZWVkIGl0LiAgTWFrZSBzdXJlIHRoZSBjYXRjb2RlIG9mIHNwYWNlIGlzIGNvcnJlY3QgdG8gYXZvaWQKKyUgbG9zaW5nIGluc2lkZSBAZXhhbXBsZSwgZm9yIGluc3RhbmNlLgorJQorXGRlZlxzZXR7XGJlZ2luZ3JvdXBcY2F0Y29kZWAgPTEwCisgIFxjYXRjb2RlYFwtPTEyIFxjYXRjb2RlYFxfPTEyICUgQWxsb3cgLSBhbmQgXyBpbiBWQVIuCisgIFxwYXJzZWFyZ1xzZXR4eHh9CitcZGVmXHNldHh4eCMxe1xzZXR5eXkjMSBcZW5kc2V0eXl5fQorXGRlZlxzZXR5eXkjMSAjMlxlbmRzZXR5eXl7JQorICBcZGVmXHRlbXB7IzJ9JQorICBcaWZ4XHRlbXBcZW1wdHkgXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZSA9IFxlbXB0eQorICBcZWxzZSBcc2V0enp6eyMxfSMyXGVuZHNldHp6eiAlIFJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2UgXHNldHh4eCBpbnNlcnRlZC4KKyAgXGZpCisgIFxlbmRncm91cAorfQorJSBDYW4ndCB1c2UgXHhkZWYgdG8gcHJlLWV4cGFuZCAjMiBhbmQgc2F2ZSBzb21lIHRpbWUsIHNpbmNlIFx0ZW1wIG9yCislIFxuZXh0IG9yIG90aGVyIGNvbnRyb2wgc2VxdWVuY2VzIHRoYXQgd2UndmUgZGVmaW5lZCBtaWdodCBnZXQgdXMgaW50bworJSBhbiBpbmZpbml0ZSBsb29wLiBDb25zaWRlciBgQHNldCBmb28gQGNpdGV7YmFyfScuCitcZGVmXHNldHp6eiMxIzIgXGVuZHNldHp6entcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUgU0VUIzFcZW5kY3NuYW1leyMyfX0KKworJSBAY2xlYXIgVkFSIGNsZWFycyAoaS5lLiwgdW5zZXRzKSB0aGUgdmFyaWFibGUgVkFSLgorJQorXGRlZlxjbGVhcntccGFyc2VhcmdcY2xlYXJ4eHh9CitcZGVmXGNsZWFyeHh4IzF7XGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZT1ccmVsYXh9CisKKyUgQHZhbHVle2Zvb30gZ2V0cyB0aGUgdGV4dCBzYXZlZCBpbiB2YXJpYWJsZSBmb28uCit7CisgIFxjYXRjb2RlYFxfID0gXGFjdGl2ZQorICAlCisgICUgV2UgbWlnaHQgZW5kIHVwIHdpdGggYWN0aXZlIF8gb3IgLSBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudCBpZgorICAlIHdlJ3JlIGNhbGxlZCBmcm9tIEBjb2RlLCBhcyBAY29kZXtAdmFsdWV7Zm9vLWJhcl99fS4gIFNvIFxsZXQgYW55CisgICUgc3VjaCBhY3RpdmUgY2hhcmFjdGVycyB0byB0aGVpciBub3JtYWwgZXF1aXZhbGVudHMuCisgIFxnZGVmXHZhbHVle1xiZWdpbmdyb3VwCisgICAgXGNhdGNvZGVgXC09XG90aGVyIFxjYXRjb2RlYFxfPVxvdGhlcgorICAgIFxpbmRleGJyZWFrcyBcbGV0X1xub3JtYWx1bmRlcnNjb3JlCisgICAgXHZhbHVleHh4fQorfQorXGRlZlx2YWx1ZXh4eCMxe1xleHBhbmRhYmxldmFsdWV7IzF9XGVuZGdyb3VwfQorCislIFdlIGhhdmUgdGhpcyBzdWJyb3V0aW5lIHNvIHRoYXQgd2UgY2FuIGhhbmRsZSBhdCBsZWFzdCBzb21lIEB2YWx1ZSdzCislIHByb3Blcmx5IGluIGluZGV4ZXMgKHdlIFxsZXRcdmFsdWUgdG8gdGhpcyBpbiBcaW5kZXhkdW1taWVzKS4gIE9uZXMKKyUgd2hvc2UgbmFtZXMgY29udGFpbiAtIG9yIF8gc3RpbGwgd29uJ3Qgd29yaywgYnV0IHdlIGNhbid0IGRvIGFueXRoaW5nCislIGFib3V0IHRoYXQuICBUaGUgY29tbWFuZCBoYXMgdG8gYmUgZnVsbHkgZXhwYW5kYWJsZSAoaWYgdGhlIHZhcmlhYmxlCislIGlzIHNldCksIHNpbmNlIHRoZSByZXN1bHQgd2luZHMgdXAgaW4gdGhlIGluZGV4IGZpbGUuICBUaGlzIG1lYW5zIHRoYXQKKyUgaWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgY29udGFpbnMgb3RoZXIgVGV4aW5mbyBjb21tYW5kcywgaXQncyBhbG1vc3QKKyUgY2VydGFpbiBpdCB3aWxsIGZhaWwgKGFsdGhvdWdoIHBlcmhhcHMgd2UgY291bGQgZml4IHRoYXQgd2l0aAorJSBzdWZmaWNpZW50IHdvcmsgdG8gZG8gYSBvbmUtbGV2ZWwgZXhwYW5zaW9uIG9uIHRoZSByZXN1bHQsIGluc3RlYWQgb2YKKyUgY29tcGxldGUpLgorJQorXGRlZlxleHBhbmRhYmxldmFsdWUjMXslCisgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZVxyZWxheAorICAgIHtbTm8gdmFsdWUgZm9yIGBgIzEnJ119JQorICAgIFxtZXNzYWdle1ZhcmlhYmxlIGAjMScsIHVzZWQgaW4gQHZhbHVlLCBpcyBub3Qgc2V0Ln0lCisgIFxlbHNlCisgICAgXGNzbmFtZSBTRVQjMVxlbmRjc25hbWUKKyAgXGZpCit9CisKKyUgQGlmc2V0IFZBUiAuLi4gQGVuZCBpZnNldCByZWFkcyB0aGUgYC4uLicgaWZmIFZBUiBoYXMgYmVlbiBkZWZpbmVkCislIHdpdGggQHNldC4KKyUKK1xkZWZcaWZzZXR7XHBhcnNlYXJnXGRvaWZzZXR9CitcZGVmXGRvaWZzZXQjMXslCisgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZVxyZWxheAorICAgIFxsZXRcbmV4dD1caWZzZXRmYWlsCisgIFxlbHNlCisgICAgXGxldFxuZXh0PVxpZnNldHN1Y2NlZWQKKyAgXGZpCisgIFxuZXh0Cit9CitcZGVmXGlmc2V0c3VjY2VlZHtcY29uZGl0aW9uYWxzdWNjZWVke2lmc2V0fX0KK1xkZWZcaWZzZXRmYWlse1xkb2lnbm9yZXtpZnNldH19CitcZGVmaW5ldW5tYXRjaGVkZW5ke2lmc2V0fQorCislIEBpZmNsZWFyIFZBUiAuLi4gQGVuZCBpZmNsZWFyIHJlYWRzIHRoZSBgLi4uJyBpZmYgVkFSIGhhcyBuZXZlciBiZWVuCislIGRlZmluZWQgd2l0aCBAc2V0LCBvciBoYXMgYmVlbiB1bmRlZmluZWQgd2l0aCBAY2xlYXIuCislCitcZGVmXGlmY2xlYXJ7XHBhcnNlYXJnXGRvaWZjbGVhcn0KK1xkZWZcZG9pZmNsZWFyIzF7JQorICBcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSBTRVQjMVxlbmRjc25hbWVccmVsYXgKKyAgICBcbGV0XG5leHQ9XGlmY2xlYXJzdWNjZWVkCisgIFxlbHNlCisgICAgXGxldFxuZXh0PVxpZmNsZWFyZmFpbAorICBcZmkKKyAgXG5leHQKK30KK1xkZWZcaWZjbGVhcnN1Y2NlZWR7XGNvbmRpdGlvbmFsc3VjY2VlZHtpZmNsZWFyfX0KK1xkZWZcaWZjbGVhcmZhaWx7XGRvaWdub3Jle2lmY2xlYXJ9fQorXGRlZmluZXVubWF0Y2hlZGVuZHtpZmNsZWFyfQorCislIEBpZnRleCwgQGlmbm90aHRtbCwgQGlmbm90aW5mbywgQGlmbm90cGxhaW50ZXh0IGFsd2F5cyBzdWNjZWVkOyB3ZQorJSByZWFkIHRoZSB0ZXh0IGZvbGxvd2luZywgdGhyb3VnaCB0aGUgZmlyc3QgQGVuZCBpZnRleCAoZXRjLikuICBNYWtlCislIGBAZW5kIGlmdGV4JyAoZXRjLikgdmFsaWQgb25seSBhZnRlciBhbiBAaWZ0ZXguCislCitcZGVmXGlmdGV4e1xjb25kaXRpb25hbHN1Y2NlZWR7aWZ0ZXh9fQorXGRlZlxpZm5vdGh0bWx7XGNvbmRpdGlvbmFsc3VjY2VlZHtpZm5vdGh0bWx9fQorXGRlZlxpZm5vdGluZm97XGNvbmRpdGlvbmFsc3VjY2VlZHtpZm5vdGluZm99fQorXGRlZlxpZm5vdHBsYWludGV4dHtcY29uZGl0aW9uYWxzdWNjZWVke2lmbm90cGxhaW50ZXh0fX0KK1xkZWZpbmV1bm1hdGNoZWRlbmR7aWZ0ZXh9CitcZGVmaW5ldW5tYXRjaGVkZW5ke2lmbm90aHRtbH0KK1xkZWZpbmV1bm1hdGNoZWRlbmR7aWZub3RpbmZvfQorXGRlZmluZXVubWF0Y2hlZGVuZHtpZm5vdHBsYWludGV4dH0KKworJSBUcnVlIGNvbmRpdGlvbmFsLiAgU2luY2UgXHNldCBnbG9iYWxseSBkZWZpbmVzIGl0cyB2YXJpYWJsZXMsIHdlIGNhbgorJSBqdXN0IHN0YXJ0IGFuZCBlbmQgYSBncm91cCAodG8ga2VlcCB0aGUgQGVuZCBkZWZpbml0aW9uIHVuZGVmaW5lZCBhdAorJSB0aGUgb3V0ZXIgbGV2ZWwpLgorJQorXGRlZlxjb25kaXRpb25hbHN1Y2NlZWQjMXtcYmVnaW5ncm91cAorICBcZXhwYW5kYWZ0ZXJcZGVmXGNzbmFtZSBFIzFcZW5kY3NuYW1le1xlbmRncm91cH0lCit9CisKKyUgQGRlZmluaW5mb2VuY2xvc2UuCitcbGV0XGRlZmluZm9lbmNsb3NlPVxjb21tZW50CisKKworXG1lc3NhZ2V7aW5kZXhpbmcsfQorJSBJbmRleCBnZW5lcmF0aW9uIGZhY2lsaXRpZXMKKworJSBEZWZpbmUgXG5ld3dyaXRlIHRvIGJlIGlkZW50aWNhbCB0byBwbGFpbiB0ZXgncyBcbmV3d3JpdGUKKyUgZXhjZXB0IG5vdCBcb3V0ZXIsIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGhpbiBcbmV3aW5kZXguCit7XGNhdGNvZGVgXEA9MTEKK1xnZGVmXG5ld3dyaXRle1xhbGxvY0A3XHdyaXRlXGNoYXJkZWZcc2l4dEBAbn19CisKKyUgXG5ld2luZGV4IHtmb299IGRlZmluZXMgYW4gaW5kZXggbmFtZWQgZm9vLgorJSBJdCBhdXRvbWF0aWNhbGx5IGRlZmluZXMgXGZvb2luZGV4IHN1Y2ggdGhhdAorJSBcZm9vaW5kZXggLi4ucmVzdCBvZiBsaW5lLi4uIHB1dHMgYW4gZW50cnkgaW4gdGhlIGluZGV4IGZvby4KKyUgSXQgYWxzbyBkZWZpbmVzIFxmb29pbmRmaWxlIHRvIGJlIHRoZSBudW1iZXIgb2YgdGhlIG91dHB1dCBjaGFubmVsIGZvcgorJSB0aGUgZmlsZSB0aGF0IGFjY3VtdWxhdGVzIHRoaXMgaW5kZXguICBUaGUgZmlsZSdzIGV4dGVuc2lvbiBpcyBmb28uCislIFRoZSBuYW1lIG9mIGFuIGluZGV4IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gMiBjaGFyYWN0ZXJzIGxvbmcKKyUgZm9yIHRoZSBzYWtlIG9mIHZtcy4KKyUKK1xkZWZcbmV3aW5kZXgjMXslCisgIFxpZmxpbmtzCisgICAgXGV4cGFuZGFmdGVyXG5ld3dyaXRlIFxjc25hbWUjMWluZGZpbGVcZW5kY3NuYW1lCisgICAgXG9wZW5vdXQgXGNzbmFtZSMxaW5kZmlsZVxlbmRjc25hbWUgXGpvYm5hbWUuIzEgJSBPcGVuIHRoZSBmaWxlCisgIFxmaQorICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUjMWluZGV4XGVuZGNzbmFtZXslICAgICAlIERlZmluZSBAIzFpbmRleAorICAgIFxub2V4cGFuZFxkb2luZGV4eyMxfX0KK30KKworJSBAZGVmaW5kZXggZm9vICA9PSAgXG5ld2luZGV4e2Zvb30KKyUKK1xkZWZcZGVmaW5kZXh7XHBhcnNlYXJnXG5ld2luZGV4fQorCislIERlZmluZSBAZGVmY29kZWluZGV4LCBsaWtlIEBkZWZpbmRleCBleGNlcHQgcHV0IGFsbCBlbnRyaWVzIGluIEBjb2RlLgorJQorXGRlZlxkZWZjb2RlaW5kZXh7XHBhcnNlYXJnXG5ld2NvZGVpbmRleH0KKyUKK1xkZWZcbmV3Y29kZWluZGV4IzF7JQorICBcaWZsaW5rcworICAgIFxleHBhbmRhZnRlclxuZXd3cml0ZSBcY3NuYW1lIzFpbmRmaWxlXGVuZGNzbmFtZQorICAgIFxvcGVub3V0IFxjc25hbWUjMWluZGZpbGVcZW5kY3NuYW1lIFxqb2JuYW1lLiMxCisgIFxmaQorICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUjMWluZGV4XGVuZGNzbmFtZXslCisgICAgXG5vZXhwYW5kXGRvY29kZWluZGV4eyMxfX0lCit9CisKKworJSBAc3luaW5kZXggZm9vIGJhciAgICBtYWtlcyBpbmRleCBmb28gZmVlZCBpbnRvIGluZGV4IGJhci4KKyUgRG8gdGhpcyBpbnN0ZWFkIG9mIEBkZWZpbmRleCBmb28gaWYgeW91IGRvbid0IHdhbnQgaXQgYXMgYSBzZXBhcmF0ZSBpbmRleC4KKyUKKyUgQHN5bmNvZGVpbmRleCBmb28gYmFyICAgc2ltaWxhciwgYnV0IHB1dCBhbGwgZW50cmllcyBtYWRlIGZvciBpbmRleCBmb28KKyUgaW5zaWRlIEBjb2RlLgorJQorXGRlZlxzeW5pbmRleCMxICMyIHtcZG9zeW5pbmRleFxkb2luZGV4eyMxfXsjMn19CitcZGVmXHN5bmNvZGVpbmRleCMxICMyIHtcZG9zeW5pbmRleFxkb2NvZGVpbmRleHsjMX17IzJ9fQorCislICMxIGlzIFxkb2luZGV4IG9yIFxkb2NvZGVpbmRleCwgIzIgdGhlIGluZGV4IGdldHRpbmcgcmVkZWZpbmVkIChmb28pLAorJSAjMyB0aGUgdGFyZ2V0IGluZGV4IChiYXIpLgorXGRlZlxkb3N5bmluZGV4IzEjMiMzeyUKKyAgJSBPbmx5IGRvIFxjbG9zZW91dCBpZiB3ZSBoYXZlbid0IGFscmVhZHkgZG9uZSBpdCwgZWxzZSB3ZSdsbCBlbmQgdXAKKyAgJSBjbG9zaW5nIHRoZSB0YXJnZXQgaW5kZXguCisgIFxleHBhbmRhZnRlciBcaWZ4XGNzbmFtZSBkb25lc3luaW5kZXgjMlxlbmRjc25hbWUgXHVuZGVmaW5lZAorICAgICUgVGhlIFxjbG9zZW91dCBoZWxwcyByZWR1Y2UgdW5uZWNlc3Nhcnkgb3BlbiBmaWxlczsgdGhlIGxpbWl0IG9uIHRoZQorICAgICUgQWNvcm4gUklTQyBPUyBpcyBhIG1lcmUgMTYgZmlsZXMuCisgICAgXGV4cGFuZGFmdGVyXGNsb3Nlb3V0XGNzbmFtZSMyaW5kZmlsZVxlbmRjc25hbWUKKyAgICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZVxkb25lc3luaW5kZXgjMlxlbmRjc25hbWUgPSAxCisgIFxmaQorICAlIHJlZGVmaW5lIFxmb29pbmRmaWxlOgorICBcZXhwYW5kYWZ0ZXJcbGV0XGV4cGFuZGFmdGVyXHRlbXBcZXhwYW5kYWZ0ZXI9XGNzbmFtZSMzaW5kZmlsZVxlbmRjc25hbWUKKyAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUjMmluZGZpbGVcZW5kY3NuYW1lPVx0ZW1wCisgICUgcmVkZWZpbmUgXGZvb2luZGV4OgorICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUjMmluZGV4XGVuZGNzbmFtZXtcbm9leHBhbmQjMXsjM319JQorfQorCislIERlZmluZSBcZG9pbmRleCwgdGhlIGRyaXZlciBmb3IgYWxsIFxmb29pbmRleCBtYWNyb3MuCislIEFyZ3VtZW50ICMxIGlzIGdlbmVyYXRlZCBieSB0aGUgY2FsbGluZyBcZm9vaW5kZXggbWFjcm8sCislICBhbmQgaXQgaXMgImZvbyIsIHRoZSBuYW1lIG9mIHRoZSBpbmRleC4KKworJSBcZG9pbmRleCBqdXN0IHVzZXMgXHBhcnNlYXJnOyBpdCBjYWxscyBcZG9pbmQgZm9yIHRoZSBhY3R1YWwgd29yay4KKyUgVGhpcyBpcyBiZWNhdXNlIFxkb2luZCBpcyBtb3JlIHVzZWZ1bCB0byBjYWxsIGZyb20gb3RoZXIgbWFjcm9zLgorCislIFRoZXJlIGlzIGFsc28gXGRvc3ViaW5kIHtpbmRleH17dG9waWN9e3N1YnRvcGljfQorJSB3aGljaCBtYWtlcyBhbiBlbnRyeSBpbiBhIHR3by1sZXZlbCBpbmRleCBzdWNoIGFzIHRoZSBvcGVyYXRpb24gaW5kZXguCisKK1xkZWZcZG9pbmRleCMxe1xlZGVmXGluZGV4bmFtZXsjMX1ccGFyc2Vhcmdcc2luZ2xlaW5kZXhlcn0KK1xkZWZcc2luZ2xlaW5kZXhlciAjMXtcZG9pbmR7XGluZGV4bmFtZX17IzF9fQorCislIGxpa2UgdGhlIHByZXZpb3VzIHR3bywgYnV0IHRoZXkgcHV0IEBjb2RlIGFyb3VuZCB0aGUgYXJndW1lbnQuCitcZGVmXGRvY29kZWluZGV4IzF7XGVkZWZcaW5kZXhuYW1leyMxfVxwYXJzZWFyZ1xzaW5nbGVjb2RlaW5kZXhlcn0KK1xkZWZcc2luZ2xlY29kZWluZGV4ZXIgIzF7XGRvaW5ke1xpbmRleG5hbWV9e1xjb2RleyMxfX19CisKKyUgVGFrZSBjYXJlIG9mIFRleGluZm8gY29tbWFuZHMgdGhhdCBjYW4gYXBwZWFyIGluIGFuIGluZGV4IGVudHJ5LgorJSBTaW5jZSB0aGVyZSBhcmUgc29tZSBjb21tYW5kcyB3ZSB3YW50IHRvIGV4cGFuZCwgYW5kIG90aGVycyB3ZSBkb24ndCwKKyUgd2UgaGF2ZSB0byBsYWJvcmlvdXNseSBwcmV2ZW50IGV4cGFuc2lvbiBmb3IgdGhvc2UgdGhhdCB3ZSBkb24ndC4KKyUKK1xkZWZcaW5kZXhkdW1taWVzeyUKKyAgXGRlZlxAe0B9JSBjaGFuZ2UgdG8gQEAgd2hlbiB3ZSBzd2l0Y2ggdG8gQCBhcyBlc2NhcGUgY2hhciBpbiBpbmRleCBmaWxlcy4KKyAgXGRlZlwge1xyZWFsYmFja3NsYXNoXHNwYWNlIH0lCisgICUgTmVlZCB0aGVzZSBpbiBjYXNlIFx0ZXggaXMgaW4gZWZmZWN0IGFuZCBceyBpcyBhIFxkZWxpbWl0ZXIgYWdhaW4uCisgICUgQnV0IGNhbid0IHVzZSBcbGJyYWNlY21kIGFuZCBccmJyYWNlY21kIGJlY2F1c2UgdGV4aW5kZXggYXNzdW1lcworICAlIGJyYWNlcyBhbmQgYmFja3NsYXNoZXMgYXJlIHVzZWQgb25seSBhcyBkZWxpbWl0ZXJzLgorICBcbGV0XHsgPSBcbXlsYnJhY2UKKyAgXGxldFx9ID0gXG15cmJyYWNlCisgICUKKyAgJSBcZGVmaW5lZHVtbXl3b3JkIGRlZmluZXMgXCMxIGFzIFxyZWFsYmFja3NsYXNoICMxXHNwYWNlLCB0aHVzCisgICUgZWZmZWN0aXZlbHkgcHJldmVudGluZyBpdHMgZXhwYW5zaW9uLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIGNvbnRyb2wKKyAgJSB3b3Jkcywgbm90IGNvbnRyb2wgbGV0dGVycywgYmVjYXVzZSB0aGUgXHNwYWNlIHdvdWxkIGJlIGluY29ycmVjdAorICAlIGZvciBjb250cm9sIGNoYXJhY3RlcnMsIGJ1dCBpcyBuZWVkZWQgdG8gc2VwYXJhdGUgdGhlIGNvbnRyb2wgd29yZAorICAlIGZyb20gd2hhdGV2ZXIgZm9sbG93cy4KKyAgJQorICAlIEZvciBjb250cm9sIGxldHRlcnMsIHdlIGhhdmUgXGRlZmluZWR1bW15bGV0dGVyLCB3aGljaCBvbWl0cyB0aGUKKyAgJSBzcGFjZS4KKyAgJQorICAlIFRoZXNlIGNhbiBiZSB1c2VkIGJvdGggZm9yIGNvbnRyb2wgd29yZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IGFuZAorICAlIHRob3NlIHRoYXQgZG8gbm90LiAgSWYgaXQgaXMgZm9sbG93ZWQgYnkge2FyZ30gaW4gdGhlIGlucHV0LCB0aGVuCisgICUgdGhhdCB3aWxsIGR1dGlmdWxseSBnZXQgd3JpdHRlbiB0byB0aGUgaW5kZXggKG9yIHdoZXJldmVyKS4KKyAgJQorICBcZGVmXGRlZmluZWR1bW15d29yZCMjMXslCisgICAgXGV4cGFuZGFmdGVyXGRlZlxjc25hbWUgIyMxXGVuZGNzbmFtZXtccmVhbGJhY2tzbGFzaCAjIzFcc3BhY2V9JQorICB9JQorICBcZGVmXGRlZmluZWR1bW15bGV0dGVyIyMxeyUKKyAgICBcZXhwYW5kYWZ0ZXJcZGVmXGNzbmFtZSAjIzFcZW5kY3NuYW1le1xyZWFsYmFja3NsYXNoICMjMX0lCisgIH0lCisgICUKKyAgJSBEbyB0aGUgcmVkZWZpbml0aW9ucy4KKyAgXGNvbW1vbmR1bW1pZXMKK30KKworJSBGb3IgdGhlIGF1eCBmaWxlLCBAIGlzIHRoZSBlc2NhcGUgY2hhcmFjdGVyLiAgU28gd2Ugd2FudCB0byByZWRlZmluZQorJSBldmVyeXRoaW5nIHVzaW5nIEAgaW5zdGVhZCBvZiBccmVhbGJhY2tzbGFzaC4gIFdoZW4gZXZlcnl0aGluZyB1c2VzCislIEAsIHRoaXMgd2lsbCBiZSBzaW1wbGVyLgorJQorXGRlZlxhdGR1bW1pZXN7JQorICBcZGVmXEB7QEB9JQorICBcZGVmXCB7QCB9JQorICBcbGV0XHsgPSBcbGJyYWNlYXRjbWQKKyAgXGxldFx9ID0gXHJicmFjZWF0Y21kCisgICUKKyAgJSAoU2VlIGNvbW1lbnRzIGluIFxpbmRleGR1bW1pZXMuKQorICBcZGVmXGRlZmluZWR1bW15d29yZCMjMXslCisgICAgXGV4cGFuZGFmdGVyXGRlZlxjc25hbWUgIyMxXGVuZGNzbmFtZXtAIyMxXHNwYWNlfSUKKyAgfSUKKyAgXGRlZlxkZWZpbmVkdW1teWxldHRlciMjMXslCisgICAgXGV4cGFuZGFmdGVyXGRlZlxjc25hbWUgIyMxXGVuZGNzbmFtZXtAIyMxfSUKKyAgfSUKKyAgJQorICAlIERvIHRoZSByZWRlZmluaXRpb25zLgorICBcY29tbW9uZHVtbWllcworfQorCislIENhbGxlZCBmcm9tIFxpbmRleGR1bW1pZXMgYW5kIFxhdGR1bW1pZXMuICBcZGVmaW5lZHVtbXl3b3JkIGFuZAorJSBcZGVmaW5lZHVtbXlsZXR0ZXIgbXVzdCBiZSBkZWZpbmVkIGZpcnN0LgorJQorXGRlZlxjb21tb25kdW1taWVzeyUKKyAgJQorICBcbm9ybWFsdHVybm9mZmFjdGl2ZQorICAlCisgICUgQ29udHJvbCBsZXR0ZXJzIGFuZCBhY2NlbnRzLgorICBcZGVmaW5lZHVtbXlsZXR0ZXJ7X30lCisgIFxkZWZpbmVkdW1teWxldHRlcnssfSUKKyAgXGRlZmluZWR1bW15bGV0dGVyeyJ9JQorICBcZGVmaW5lZHVtbXlsZXR0ZXJ7YH0lCisgIFxkZWZpbmVkdW1teWxldHRlcnsnfSUKKyAgXGRlZmluZWR1bW15bGV0dGVye159JQorICBcZGVmaW5lZHVtbXlsZXR0ZXJ7fn0lCisgIFxkZWZpbmVkdW1teWxldHRlcns9fSUKKyAgXGRlZmluZWR1bW15d29yZHt1fSUKKyAgXGRlZmluZWR1bW15d29yZHt2fSUKKyAgXGRlZmluZWR1bW15d29yZHtIfSUKKyAgXGRlZmluZWR1bW15d29yZHtkb3RhY2NlbnR9JQorICBcZGVmaW5lZHVtbXl3b3Jke3JpbmdhY2NlbnR9JQorICBcZGVmaW5lZHVtbXl3b3Jke3RpZWFjY2VudH0lCisgIFxkZWZpbmVkdW1teXdvcmR7dWJhcmFjY2VudH0lCisgIFxkZWZpbmVkdW1teXdvcmR7dWRvdGFjY2VudH0lCisgIFxkZWZpbmVkdW1teXdvcmR7ZG90bGVzc30lCisgICUKKyAgJSBPdGhlciBub24tRW5nbGlzaCBsZXR0ZXJzLgorICBcZGVmaW5lZHVtbXl3b3Jke0FBfSUKKyAgXGRlZmluZWR1bW15d29yZHtBRX0lCisgIFxkZWZpbmVkdW1teXdvcmR7TH0lCisgIFxkZWZpbmVkdW1teXdvcmR7T0V9JQorICBcZGVmaW5lZHVtbXl3b3Jke099JQorICBcZGVmaW5lZHVtbXl3b3Jke2FhfSUKKyAgXGRlZmluZWR1bW15d29yZHthZX0lCisgIFxkZWZpbmVkdW1teXdvcmR7bH0lCisgIFxkZWZpbmVkdW1teXdvcmR7b2V9JQorICBcZGVmaW5lZHVtbXl3b3Jke299JQorICBcZGVmaW5lZHVtbXl3b3Jke3NzfSUKKyAgJQorICAlIEFsdGhvdWdoIHRoZXNlIGludGVybmFsIGNvbW1hbmRzIHNob3VsZG4ndCBzaG93IHVwLCBzb21ldGltZXMgdGhleSBkby4KKyAgXGRlZmluZWR1bW15d29yZHtiZn0lCisgIFxkZWZpbmVkdW1teXdvcmR7Z3RyfSUKKyAgXGRlZmluZWR1bW15d29yZHtoYXR9JQorICBcZGVmaW5lZHVtbXl3b3Jke2xlc3N9JQorICBcZGVmaW5lZHVtbXl3b3Jke3NmfSUKKyAgXGRlZmluZWR1bW15d29yZHtzbH0lCisgIFxkZWZpbmVkdW1teXdvcmR7dGNsb3NlfSUKKyAgXGRlZmluZWR1bW15d29yZHt0dH0lCisgICUKKyAgJSBUZXhpbmZvIGZvbnQgY29tbWFuZHMuCisgIFxkZWZpbmVkdW1teXdvcmR7Yn0lCisgIFxkZWZpbmVkdW1teXdvcmR7aX0lCisgIFxkZWZpbmVkdW1teXdvcmR7cn0lCisgIFxkZWZpbmVkdW1teXdvcmR7c2N9JQorICBcZGVmaW5lZHVtbXl3b3Jke3R9JQorICAlCisgIFxkZWZpbmVkdW1teXdvcmR7VGVYfSUKKyAgXGRlZmluZWR1bW15d29yZHthY3JvbnltfSUKKyAgXGRlZmluZWR1bW15d29yZHtjaXRlfSUKKyAgXGRlZmluZWR1bW15d29yZHtjb2RlfSUKKyAgXGRlZmluZWR1bW15d29yZHtjb21tYW5kfSUKKyAgXGRlZmluZWR1bW15d29yZHtkZm59JQorICBcZGVmaW5lZHVtbXl3b3Jke2RvdHN9JQorICBcZGVmaW5lZHVtbXl3b3Jke2VtcGh9JQorICBcZGVmaW5lZHVtbXl3b3Jke2Vudn0lCisgIFxkZWZpbmVkdW1teXdvcmR7ZmlsZX0lCisgIFxkZWZpbmVkdW1teXdvcmR7a2JkfSUKKyAgXGRlZmluZWR1bW15d29yZHtrZXl9JQorICBcZGVmaW5lZHVtbXl3b3Jke21hdGh9JQorICBcZGVmaW5lZHVtbXl3b3Jke29wdGlvbn0lCisgIFxkZWZpbmVkdW1teXdvcmR7c2FtcH0lCisgIFxkZWZpbmVkdW1teXdvcmR7c3Ryb25nfSUKKyAgXGRlZmluZWR1bW15d29yZHt1cmVmfSUKKyAgXGRlZmluZWR1bW15d29yZHt1cmx9JQorICBcZGVmaW5lZHVtbXl3b3Jke3Zhcn0lCisgIFxkZWZpbmVkdW1teXdvcmR7dmVyYn0lCisgIFxkZWZpbmVkdW1teXdvcmR7d30lCisgICUKKyAgJSBBc3NvcnRlZCBzcGVjaWFsIGNoYXJhY3RlcnMuCisgIFxkZWZpbmVkdW1teXdvcmR7YnVsbGV0fSUKKyAgXGRlZmluZWR1bW15d29yZHtjb3B5cmlnaHR9JQorICBcZGVmaW5lZHVtbXl3b3Jke2RvdHN9JQorICBcZGVmaW5lZHVtbXl3b3Jke2VuZGRvdHN9JQorICBcZGVmaW5lZHVtbXl3b3Jke2VxdWl2fSUKKyAgXGRlZmluZWR1bW15d29yZHtlcnJvcn0lCisgIFxkZWZpbmVkdW1teXdvcmR7ZXhwYW5zaW9ufSUKKyAgXGRlZmluZWR1bW15d29yZHttaW51c30lCisgIFxkZWZpbmVkdW1teXdvcmR7cG91bmRzfSUKKyAgXGRlZmluZWR1bW15d29yZHtwb2ludH0lCisgIFxkZWZpbmVkdW1teXdvcmR7cHJpbnR9JQorICBcZGVmaW5lZHVtbXl3b3Jke3Jlc3VsdH0lCisgICUKKyAgJSBIYW5kbGUgc29tZSBjYXNlcyBvZiBAdmFsdWUgLS0gd2hlcmUgdGhlIHZhcmlhYmxlIG5hbWUgZG9lcyBub3QKKyAgJSBjb250YWluIC0gb3IgXywgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBjb250YWluIGFueQorICAlIChub24tZnVsbHktZXhwYW5kYWJsZSkgY29tbWFuZHMuCisgIFxsZXRcdmFsdWUgPSBcZXhwYW5kYWJsZXZhbHVlCisgICUKKyAgJSBOb3JtYWwgc3BhY2VzLCBub3QgYWN0aXZlIG9uZXMuCisgIFx1bnNlcHNwYWNlcworICAlCisgICUgTm8gbWFjcm8gZXhwYW5zaW9uLgorICBcdHVybm9mZm1hY3JvcworfQorCislIElmIGFuIGluZGV4IGNvbW1hbmQgaXMgdXNlZCBpbiBhbiBAZXhhbXBsZSBlbnZpcm9ubWVudCwgYW55IHNwYWNlcworJSB0aGVyZWluIHNob3VsZCBiZWNvbWUgcmVndWxhciBzcGFjZXMgaW4gdGhlIHJhdyBpbmRleCBmaWxlLCBub3QgdGhlCislIGV4cGFuc2lvbiBvZiBcdGllIChcbGVhdmV2bW9kZSBccGVuYWx0eSBcQE0gXCApLgore1xvYmV5c3BhY2VzCisgXGdkZWZcdW5zZXBzcGFjZXN7XG9iZXlzcGFjZXNcbGV0ID1cc3BhY2V9fQorCisKKyUgXGluZGV4bm9mb250cyBpcyB1c2VkIHdoZW4gb3V0cHV0dGluZyB0aGUgc3RyaW5ncyB0byBzb3J0IHRoZSBpbmRleAorJSBieSwgYW5kIHdoZW4gY29uc3RydWN0aW5nIGNvbnRyb2wgc2VxdWVuY2UgbmFtZXMuICBJdCBlbGltaW5hdGVzIGFsbAorJSBjb250cm9sIHNlcXVlbmNlcyBhbmQganVzdCB3cml0ZXMgd2hhdGV2ZXIgdGhlIGJlc3QgQVNDSUkgc29ydCBzdHJpbmcKKyUgd291bGQgYmUgZm9yIGEgZ2l2ZW4gY29tbWFuZCAodXN1YWxseSBpdHMgYXJndW1lbnQpLgorJQorXGRlZlxpbmRleGR1bW15dGV4e1RlWH0KK1xkZWZcaW5kZXhkdW1teWRvdHN7Li4ufQorJQorXGRlZlxpbmRleG5vZm9udHN7JQorICBcZGVmXCB7IH0lCisgIFxkZWZcQHtAfSUKKyAgJSBob3cgdG8gaGFuZGxlIGJyYWNlcz8KKyAgXGRlZlxfe1xub3JtYWx1bmRlcnNjb3JlfSUKKyAgJQorICBcbGV0XCw9XGFzaXMKKyAgXGxldFwiPVxhc2lzCisgIFxsZXRcYD1cYXNpcworICBcbGV0XCc9XGFzaXMKKyAgXGxldFxePVxhc2lzCisgIFxsZXRcfj1cYXNpcworICBcbGV0XD09XGFzaXMKKyAgXGxldFx1PVxhc2lzCisgIFxsZXRcdj1cYXNpcworICBcbGV0XEg9XGFzaXMKKyAgXGxldFxkb3RhY2NlbnQ9XGFzaXMKKyAgXGxldFxyaW5nYWNjZW50PVxhc2lzCisgIFxsZXRcdGllYWNjZW50PVxhc2lzCisgIFxsZXRcdWJhcmFjY2VudD1cYXNpcworICBcbGV0XHVkb3RhY2NlbnQ9XGFzaXMKKyAgXGxldFxkb3RsZXNzPVxhc2lzCisgICUKKyAgJSBPdGhlciBub24tRW5nbGlzaCBsZXR0ZXJzLgorICBcZGVmXEFBe0FBfSUKKyAgXGRlZlxBRXtBRX0lCisgIFxkZWZcTHtMfSUKKyAgXGRlZlxPRXtPRX0lCisgIFxkZWZcT3tPfSUKKyAgXGRlZlxhYXthYX0lCisgIFxkZWZcYWV7YWV9JQorICBcZGVmXGx7bH0lCisgIFxkZWZcb2V7b2V9JQorICBcZGVmXG97b30lCisgIFxkZWZcc3N7c3N9JQorICBcZGVmXGV4Y2xhbWRvd257IX0lCisgIFxkZWZccXVlc3Rpb25kb3duez99JQorICAlCisgICUgRG9uJ3Qgbm8tb3AgXHR0LCBzaW5jZSBpdCBpc24ndCBhIHVzZXItbGV2ZWwgY29tbWFuZAorICAlIGFuZCBpcyB1c2VkIGluIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgYWN0aXZlIGNoYXJzIGxpa2UgPCwgPiwgfCwgZXRjLgorICAlIExpa2V3aXNlIHdpdGggdGhlIG90aGVyIHBsYWluIHRleCBmb250IGNvbW1hbmRzLgorICAlXGxldFx0dD1cYXNpcworICAlCisgICUgVGV4aW5mbyBmb250IGNvbW1hbmRzLgorICBcbGV0XGI9XGFzaXMKKyAgXGxldFxpPVxhc2lzCisgIFxsZXRccj1cYXNpcworICBcbGV0XHNjPVxhc2lzCisgIFxsZXRcdD1cYXNpcworICAlCisgIFxsZXRcVGVYPVxpbmRleGR1bW15dGV4CisgIFxsZXRcYWNyb255bT1cYXNpcworICBcbGV0XGNpdGU9XGFzaXMKKyAgXGxldFxjb2RlPVxhc2lzCisgIFxsZXRcY29tbWFuZD1cYXNpcworICBcbGV0XGRmbj1cYXNpcworICBcbGV0XGRvdHM9XGluZGV4ZHVtbXlkb3RzCisgIFxsZXRcZW1waD1cYXNpcworICBcbGV0XGVudj1cYXNpcworICBcbGV0XGZpbGU9XGFzaXMKKyAgXGxldFxrYmQ9XGFzaXMKKyAgXGxldFxrZXk9XGFzaXMKKyAgXGxldFxtYXRoPVxhc2lzCisgIFxsZXRcb3B0aW9uPVxhc2lzCisgIFxsZXRcc2FtcD1cYXNpcworICBcbGV0XHN0cm9uZz1cYXNpcworICBcbGV0XHVyZWY9XGFzaXMKKyAgXGxldFx1cmw9XGFzaXMKKyAgXGxldFx2YXI9XGFzaXMKKyAgXGxldFx2ZXJiPVxhc2lzCisgIFxsZXRcdz1cYXNpcworfQorCitcbGV0XGluZGV4YmFja3NsYXNoPTAgICVvdmVycmlkZGVuIGR1cmluZyBccHJpbnRpbmRleC4KK1xsZXRcU0VUbWFyZ2luaW5kZXg9XHJlbGF4ICUgcHV0IGluZGV4IGVudHJpZXMgaW4gbWFyZ2luICh1bmRvY3VtZW50ZWQpPworCislIE1vc3QgaW5kZXggZW50cmllcyBnbyB0aHJvdWdoIGhlcmUsIGJ1dCBcZG9zdWJpbmQgaXMgdGhlIGdlbmVyYWwgY2FzZS4KKyUKK1xkZWZcZG9pbmQjMSMye1xkb3N1YmluZHsjMX17IzJ9e319CisKKyUgV29ya2hvcnNlIGZvciBhbGwgXGZvb2luZGV4ZXMuCislICMxIGlzIG5hbWUgb2YgaW5kZXgsICMyIGlzIHN0dWZmIHRvIHB1dCB0aGVyZSwgIzMgaXMgc3ViZW50cnkgLS0KKyUgXGVtcHR5IGlmIGNhbGxlZCBmcm9tIFxkb2luZCwgYXMgd2UgdXN1YWxseSBhcmUuICBUaGUgbWFpbiBleGNlcHRpb24KKyUgaXMgd2l0aCBkZWZ1bnMsIHdoaWNoIGNhbGwgdXMgZGlyZWN0bHkuCislCitcZGVmXGRvc3ViaW5kIzEjMiMzeyUKKyAgXGlmbGlua3MKKyAgeyUKKyAgICAlIFN0b3JlIHRoZSBtYWluIGluZGV4IGVudHJ5IHRleHQgKGluY2x1ZGluZyB0aGUgdGhpcmQgYXJnKS4KKyAgICBcdG9rczAgPSB7IzJ9JQorICAgICUgSWYgdGhpcmQgYXJnIGlzIHByZXNlbnQsIHByZWNlZGUgaXQgd2l0aCBzcGFjZS4KKyAgICBcZGVmXHRoaXJkYXJneyMzfSUKKyAgICBcaWZ4XHRoaXJkYXJnXGVtcHR5IFxlbHNlCisgICAgICBcdG9rczAgPSBcZXhwYW5kYWZ0ZXJ7XHRoZVx0b2tzMCBcc3BhY2UgIzN9JQorICAgIFxmaQorICAgICUKKyAgICBcZWRlZlx3cml0ZXRve1xjc25hbWUjMWluZGZpbGVcZW5kY3NuYW1lfSUKKyAgICAlCisgICAgXGlmdm1vZGUKKyAgICAgIFxkb3N1YmluZHNhbml0aXplCisgICAgXGVsc2UKKyAgICAgIFxkb3N1YmluZHdyaXRlCisgICAgXGZpCisgIH0lCisgIFxmaQorfQorCislIFdyaXRlIHRoZSBlbnRyeSB0byB0aGUgaW5kZXggZmlsZToKKyUKK1xkZWZcZG9zdWJpbmR3cml0ZXslCisgICUgUHV0IHRoZSBpbmRleCBlbnRyeSBpbiB0aGUgbWFyZ2luIGlmIGRlc2lyZWQuCisgIFxpZnhcU0VUbWFyZ2luaW5kZXhccmVsYXhcZWxzZQorICAgIFxpbnNlcnRcbWFyZ2lue1xoYm94e1x2cnVsZSBoZWlnaHQ4cHQgZGVwdGgzcHQgd2lkdGgwcHQgXHRoZVx0b2tzMH19JQorICBcZmkKKyAgJQorICAlIFJlbWVtYmVyLCB3ZSBhcmUgd2l0aGluIGEgZ3JvdXAuCisgIFxpbmRleGR1bW1pZXMgJSBNdXN0IGRvIHRoaXMgaGVyZSwgc2luY2UgXGJmLCBldGMgZXhwYW5kIGF0IHRoaXMgc3RhZ2UKKyAgXGVzY2FwZWNoYXI9YFxcCisgIFxkZWZccmF3YmFja3NsYXNoeHh7XGluZGV4YmFja3NsYXNofSUgXGluZGV4YmFja3NsYXNoIGlzbid0IGRlZmluZWQgbm93CisgICAgICAlIHNvIGl0IHdpbGwgYmUgb3V0cHV0IGFzIGlzOyBhbmQgaXQgd2lsbCBwcmludCBhcyBiYWNrc2xhc2guCisgICUKKyAgJSBQcm9jZXNzIHRoZSBpbmRleCBlbnRyeSB3aXRoIGFsbCBmb250IGNvbW1hbmRzIHR1cm5lZCBvZmYsIHRvCisgICUgZ2V0IHRoZSBzdHJpbmcgdG8gc29ydCBieS4KKyAge1xpbmRleG5vZm9udHMKKyAgIFxlZGVmXHRlbXB7XHRoZVx0b2tzMH0lIG5lZWQgZnVsbCBleHBhbnNpb24KKyAgIFx4ZGVmXGluZGV4c29ydHRtcHtcdGVtcH0lCisgIH0lCisgICUKKyAgJSBTZXQgdXAgdGhlIGNvbXBsZXRlIGluZGV4IGVudHJ5LCB3aXRoIGJvdGggdGhlIHNvcnQga2V5IGFuZAorICAlIHRoZSBvcmlnaW5hbCB0ZXh0LCBpbmNsdWRpbmcgYW55IGZvbnQgY29tbWFuZHMuICBXZSB3cml0ZQorICAlIHRocmVlIGFyZ3VtZW50cyB0byBcZW50cnkgdG8gdGhlIC4/PyBmaWxlIChmb3VyIGluIHRoZQorICAlIHN1YmVudHJ5IGNhc2UpLCB0ZXhpbmRleCByZWR1Y2VzIHRvIHR3byB3aGVuIHdyaXRpbmcgdGhlIC4/P3MKKyAgJSBzb3J0ZWQgcmVzdWx0LgorICBcZWRlZlx0ZW1weyUKKyAgICBcd3JpdGVcd3JpdGV0b3slCisgICAgICBcc3RyaW5nXGVudHJ5e1xpbmRleHNvcnR0bXB9e1xub2V4cGFuZFxmb2xpb317XHRoZVx0b2tzMH19JQorICB9JQorICBcdGVtcAorfQorCislICBUYWtlIGNhcmUgb2YgdW53YW50ZWQgcGFnZSBicmVha3M6CislCislIElmIGEgc2tpcCBpcyB0aGUgbGFzdCB0aGluZyBvbiB0aGUgbGlzdCBub3csIHByZXNlcnZlIGl0CislIGJ5IGJhY2tpbmcgdXAgYnkgXGxhc3Rza2lwLCBkb2luZyB0aGUgXHdyaXRlLCB0aGVuIGluc2VydGluZworJSB0aGUgc2tpcCBhZ2Fpbi4gIE90aGVyd2lzZSwgdGhlIHdoYXRzaXQgZ2VuZXJhdGVkIGJ5IHRoZQorJSBcd3JpdGUgd2lsbCBtYWtlIFxsYXN0c2tpcCB6ZXJvLiAgVGhlIHJlc3VsdCBpcyB0aGF0IHNlcXVlbmNlcworJSBsaWtlIHRoaXM6CislIEBlbmQgZGVmdW4KKyUgQHRpbmRleCB3aGF0ZXZlcgorJSBAZGVmdW4gLi4uCislIHdpbGwgaGF2ZSBleHRyYSBzcGFjZSBpbnNlcnRlZCwgYmVjYXVzZSB0aGUgXG1lZGJyZWFrIGluIHRoZQorJSBzdGFydCBvZiB0aGUgQGRlZnVuIHdvbid0IHNlZSB0aGUgc2tpcCBpbnNlcnRlZCBieSB0aGUgQGVuZCBvZgorJSB0aGUgcHJldmlvdXMgZGVmdW4uCislCislIEJ1dCBkb24ndCBkbyBhbnkgb2YgdGhpcyBpZiB3ZSdyZSBub3QgaW4gdmVydGljYWwgbW9kZS4gIFdlCislIGRvbid0IHdhbnQgdG8gZG8gYSBcdnNraXAgYW5kIHByZW1hdHVyZWx5IGVuZCBhIHBhcmFncmFwaC4KKyUKKyUgQXZvaWQgcGFnZSBicmVha3MgZHVlIHRvIHRoZXNlIGV4dHJhIHNraXBzLCB0b28uCislCitcZGVmXGRvc3ViaW5kc2FuaXRpemV7JQorICAlIFxsYXN0c2tpcCBhbmQgXGxhc3RwZW5hbHR5IGNhbm5vdCBib3RoIGJlIG5vbnplcm8gc2ltdWx0YW5lb3VzbHkuCisgIFxza2lwMCA9IFxsYXN0c2tpcAorICBcY291bnQyNTUgPSBcbGFzdHBlbmFsdHkKKyAgJQorICAlIElmIFxsYXN0c2tpcCBpcyBub256ZXJvLCB0aGF0IG1lYW5zIHRoZSBsYXN0IGl0ZW0gd2FzIGEKKyAgJSBza2lwLiAgQW5kIHNpbmNlIGEgc2tpcCBpcyBkaXNjYXJkYWJsZSwgdGhhdCBtZWFucyB0aGlzCisgICUgLVxza2lwMCBnbHVlIHdlJ3JlIGluc2VydGluZyBpcyBwcmVjZWRlZCBieSBhCisgICUgbm9uLWRpc2NhcmRhYmxlIGl0ZW0sIHRoZXJlZm9yZSBpdCBpcyBub3QgYSBwb3RlbnRpYWwKKyAgJSBicmVha3BvaW50LCB0aGVyZWZvcmUgbm8gXG5vYnJlYWsgbmVlZGVkLgorICBcaWZkaW1cbGFzdHNraXAgPSAwcHQgXGVsc2UgXHZza2lwLVxza2lwMCBcZmkKKyAgJQorICBcZG9zdWJpbmR3cml0ZQorICAlCisgIFxpZmRpbVxza2lwMCA9IDBwdAorICAgICUgaWYgXGxhc3Rza2lwIHdhcyB6ZXJvLCBwZXJoYXBzIHRoZSBsYXN0IGl0ZW0gd2FzIGEKKyAgICAlIHBlbmFsdHksIGFuZCBwZXJoYXBzIGl0IHdhcyA+PTEwMDAwLCBlLmcuLCBhIFxub2JyZWFrLgorICAgICUgSW4gdGhhdCBjYXNlLCB3ZSB3YW50IHRvIHJlLWluc2VydCB0aGUgcGVuYWx0eTsgc2luY2Ugd2UKKyAgICAlIGp1c3QgaW5zZXJ0ZWQgYSBub24tZGlzY2FyZGFibGUgaXRlbSwgYW55IGZvbGxvd2luZyBnbHVlCisgICAgJSAoc3VjaCBhcyBhIFxwYXJza2lwKSB3b3VsZCBiZSBhIGJyZWFrcG9pbnQuICBGb3IgZXhhbXBsZToKKyAgICAlICAgQGRlZmZuIGRlZmZuLXdoYXRldmVyCisgICAgJSAgIEB2aW5kZXggaW5kZXgtd2hhdGV2ZXIKKyAgICAlICAgRGVzY3JpcHRpb24uCisgICAgJSB3b3VsZCBhbGxvdyBhIGJyZWFrIGJldHdlZW4gdGhlIGluZGV4LXdoYXRldmVyIHdoYXRzaXQKKyAgICAlIGFuZCB0aGUgIkRlc2NyaXB0aW9uLiIgcGFyYWdyYXBoLgorICAgIFxpZm51bVxjb3VudDI1NT45OTk5IFxub2JyZWFrIFxmaQorICBcZWxzZQorICAgICUgT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIGhhZCBhIG5vbnplcm8gXGxhc3Rza2lwLAorICAgICUgdGhpcyBtYWtlLXVwIGdsdWUgd291bGQgYmUgcHJlY2VkZWQgYnkgYSBub24tZGlzY2FyZGFibGUgaXRlbQorICAgICUgKHRoZSB3aGF0c2l0IGZyb20gdGhlIFx3cml0ZSksIHNvIHdlIG11c3QgaW5zZXJ0IGEgXG5vYnJlYWsuCisgICAgXG5vYnJlYWtcdnNraXBcc2tpcDAKKyAgXGZpCit9CisKKyUgVGhlIGluZGV4IGVudHJ5IHdyaXR0ZW4gaW4gdGhlIGZpbGUgYWN0dWFsbHkgbG9va3MgbGlrZQorJSAgXGVudHJ5IHtzb3J0c3RyaW5nfXtwYWdlfXt0b3BpY30KKyUgb3IKKyUgIFxlbnRyeSB7c29ydHN0cmluZ317cGFnZX17dG9waWN9e3N1YnRvcGljfQorJSBUaGUgdGV4aW5kZXggcHJvZ3JhbSByZWFkcyBpbiB0aGVzZSBmaWxlcyBhbmQgd3JpdGVzIGZpbGVzCislIGNvbnRhaW5pbmcgdGhlc2Uga2luZHMgb2YgbGluZXM6CislICBcaW5pdGlhbCB7Y30KKyUgICAgIGJlZm9yZSB0aGUgZmlyc3QgdG9waWMgd2hvc2UgaW5pdGlhbCBpcyBjCislICBcZW50cnkge3RvcGljfXtwYWdlbGlzdH0KKyUgICAgIGZvciBhIHRvcGljIHRoYXQgaXMgdXNlZCB3aXRob3V0IHN1YnRvcGljcworJSAgXHByaW1hcnkge3RvcGljfQorJSAgICAgZm9yIHRoZSBiZWdpbm5pbmcgb2YgYSB0b3BpYyB0aGF0IGlzIHVzZWQgd2l0aCBzdWJ0b3BpY3MKKyUgIFxzZWNvbmRhcnkge3N1YnRvcGljfXtwYWdlbGlzdH0KKyUgICAgIGZvciBlYWNoIHN1YnRvcGljLgorCislIERlZmluZSB0aGUgdXNlci1hY2Nlc3NpYmxlIGluZGV4aW5nIGNvbW1hbmRzCislIEBmaW5kZXgsIEB2aW5kZXgsIEBraW5kZXgsIEBjaW5kZXguCisKK1xkZWZcZmluZGV4IHtcZm5pbmRleH0KK1xkZWZca2luZGV4IHtca3lpbmRleH0KK1xkZWZcY2luZGV4IHtcY3BpbmRleH0KK1xkZWZcdmluZGV4IHtcdnJpbmRleH0KK1xkZWZcdGluZGV4IHtcdHBpbmRleH0KK1xkZWZccGluZGV4IHtccGdpbmRleH0KKworXGRlZlxjaW5kZXhzdWIge1xiZWdpbmdyb3VwXG9iZXlsaW5lc1xjaW5kZXhzdWJ9Cit7XG9iZXlsaW5lcyAlCitcZ2RlZlxjaW5kZXhzdWIgIiMxIiAjMl5eTXtcZW5kZ3JvdXAgJQorXGRvc3ViaW5ke2NwfXsjMn17IzF9fX0KKworJSBEZWZpbmUgdGhlIG1hY3JvcyB1c2VkIGluIGZvcm1hdHRpbmcgb3V0cHV0IG9mIHRoZSBzb3J0ZWQgaW5kZXggbWF0ZXJpYWwuCisKKyUgQHByaW50aW5kZXggY2F1c2VzIGEgcGFydGljdWxhciBpbmRleCAodGhlID8/cyBmaWxlKSB0byBnZXQgcHJpbnRlZC4KKyUgSXQgZG9lcyBub3QgcHJpbnQgYW55IGNoYXB0ZXIgaGVhZGluZyAodXN1YWxseSBhbiBAdW5udW1iZXJlZCkuCislCitcZGVmXHByaW50aW5kZXh7XHBhcnNlYXJnXGRvcHJpbnRpbmRleH0KK1xkZWZcZG9wcmludGluZGV4IzF7XGJlZ2luZ3JvdXAKKyAgXGRvYnJlYWsgXGNoYXBoZWFkaW5nc2tpcHsxMDAwMH0lCisgICUKKyAgXHNtYWxsZm9udHMgXHJtCisgIFx0b2xlcmFuY2UgPSA5NTAwCisgIFxldmVyeXBhciA9IHt9JSBkb24ndCB3YW50IHRoZSBca2VyblwtcGFyaW5kZW50IGZyb20gaW5kZW50YXRpb24gc3VwcHJlc3Npb24uCisgIFxpbmRleGJyZWFrcworICAlCisgICUgU2VlIGlmIHRoZSBpbmRleCBmaWxlIGV4aXN0cyBhbmQgaXMgbm9uZW1wdHkuCisgICUgQ2hhbmdlIGNhdGNvZGUgb2YgQCBoZXJlIHNvIHRoYXQgaWYgdGhlIGluZGV4IGZpbGUgY29udGFpbnMKKyAgJSBcaW5pdGlhbCB7QH0KKyAgJSBhcyBpdHMgZmlyc3QgbGluZSwgVGVYIGRvZXNuJ3QgY29tcGxhaW4gYWJvdXQgbWlzbWF0Y2hlZCBicmFjZXMKKyAgJSAoYmVjYXVzZSBpdCB0aGlua3MgQH0gaXMgYSBjb250cm9sIHNlcXVlbmNlKS4KKyAgXGNhdGNvZGVgXEAgPSAxMQorICBcb3BlbmluIDEgXGpvYm5hbWUuIzFzCisgIFxpZmVvZiAxCisgICAgJSBcZW5kZG91YmxlY29sdW1ucyBnZXRzIGNvbmZ1c2VkIGlmIHRoZXJlIGlzIG5vIHRleHQgaW4gdGhlIGluZGV4LAorICAgICUgYW5kIGl0IGxvc2VzIHRoZSBjaGFwdGVyIHRpdGxlIGFuZCB0aGUgYXV4IGZpbGUgZW50cmllcyBmb3IgdGhlCisgICAgJSBpbmRleC4gIFRoZSBlYXNpZXN0IHdheSB0byBwcmV2ZW50IHRoaXMgcHJvYmxlbSBpcyB0byBtYWtlIHN1cmUKKyAgICAlIHRoZXJlIGlzIHNvbWUgdGV4dC4KKyAgICBccHV0d29yZEluZGV4Tm9uZXhpc3RlbnQKKyAgXGVsc2UKKyAgICAlCisgICAgJSBJZiB0aGUgaW5kZXggZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5LCB0aGVuIFxvcGVuaW4gbGVhdmVzIFxpZmVvZgorICAgICUgZmFsc2UuICBXZSBoYXZlIHRvIG1ha2UgVGVYIHRyeSB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBmaWxlLCBzbworICAgICUgaXQgY2FuIGRpc2NvdmVyIGlmIHRoZXJlIGlzIGFueXRoaW5nIGluIGl0LgorICAgIFxyZWFkIDEgdG8gXHRlbXAKKyAgICBcaWZlb2YgMQorICAgICAgXHB1dHdvcmRJbmRleElzRW1wdHkKKyAgICBcZWxzZQorICAgICAgJSBJbmRleCBmaWxlcyBhcmUgYWxtb3N0IFRleGluZm8gc291cmNlLCBidXQgd2UgdXNlIFwgYXMgdGhlIGVzY2FwZQorICAgICAgJSBjaGFyYWN0ZXIuICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdXNlIEAsIGJ1dCB0aGF0J3MgdG9vIGJpZyBhIGNoYW5nZQorICAgICAgJSB0byBtYWtlIHJpZ2h0IG5vdy4KKyAgICAgIFxkZWZcaW5kZXhiYWNrc2xhc2h7XHJhd2JhY2tzbGFzaHh4fSUKKyAgICAgIFxjYXRjb2RlYFxcID0gMAorICAgICAgXGVzY2FwZWNoYXIgPSBgXFwKKyAgICAgIFxiZWdpbmRvdWJsZWNvbHVtbnMKKyAgICAgIFxpbnB1dCBcam9ibmFtZS4jMXMKKyAgICAgIFxlbmRkb3VibGVjb2x1bW5zCisgICAgXGZpCisgIFxmaQorICBcY2xvc2VpbiAxCitcZW5kZ3JvdXB9CisKKyUgVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGJ5IHRoZSBzb3J0ZWQgaW5kZXggZmlsZSBpdHNlbGYuCislIENoYW5nZSB0aGVtIHRvIGNvbnRyb2wgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGluZGV4LgorCitcZGVmXGluaXRpYWwjMXt7JQorICAlIFNvbWUgbWlub3IgZm9udCBjaGFuZ2VzIGZvciB0aGUgc3BlY2lhbCBjaGFyYWN0ZXJzLgorICBcbGV0XHRlbnR0PVxzZWN0dCBcbGV0XHR0PVxzZWN0dCBcbGV0XHNmPVxzZWN0dAorICAlCisgICUgUmVtb3ZlIGFueSBnbHVlIHdlIG1heSBoYXZlLCB3ZSdsbCBiZSBpbnNlcnRpbmcgb3VyIG93bi4KKyAgXHJlbW92ZWxhc3Rza2lwCisgICUKKyAgJSBXZSBsaWtlIGJyZWFrcyBiZWZvcmUgdGhlIGluZGV4IGluaXRpYWxzLCBzbyBpbnNlcnQgYSBib251cy4KKyAgXHBlbmFsdHkgLTMwMAorICAlCisgICUgVHlwZXNldCB0aGUgaW5pdGlhbC4gIE1ha2luZyB0aGlzIGFkZCB1cCB0byBhIHdob2xlIG51bWJlciBvZgorICAlIGJhc2VsaW5lc2tpcHMgaW5jcmVhc2VzIHRoZSBjaGFuY2Ugb2YgdGhlIGRvdHMgbGluaW5nIHVwIGZyb20gY29sdW1uCisgICUgdG8gY29sdW1uLiAgSXQgc3RpbGwgd29uJ3Qgb2Z0ZW4gYmUgcGVyZmVjdCwgYmVjYXVzZSBvZiB0aGUgc3RyZXRjaAorICAlIHdlIG5lZWQgYmVmb3JlIGVhY2ggZW50cnksIGJ1dCBpdCdzIGJldHRlci4KKyAgJQorICAlIE5vIHNocmluayBiZWNhdXNlIGl0IGNvbmZ1c2VzIFxiYWxhbmNlY29sdW1ucy4KKyAgXHZza2lwIDEuNjdcYmFzZWxpbmVza2lwIHBsdXMgLjVcYmFzZWxpbmVza2lwCisgIFxsZWZ0bGluZXtcc2VjYmYgIzF9JQorICBcdnNraXAgLjMzXGJhc2VsaW5lc2tpcCBwbHVzIC4xXGJhc2VsaW5lc2tpcAorICAlCisgICUgRG8gb3VyIGJlc3Qgbm90IHRvIGJyZWFrIGFmdGVyIHRoZSBpbml0aWFsLgorICBcbm9icmVhaworfX0KKworJSBUaGlzIHR5cGVzZXRzIGEgcGFyYWdyYXBoIGNvbnNpc3Rpbmcgb2YgIzEsIGRvdCBsZWFkZXJzLCBhbmQgdGhlbiAjMgorJSBmbHVzaCB0byB0aGUgcmlnaHQgbWFyZ2luLiAgSXQgaXMgdXNlZCBmb3IgaW5kZXggYW5kIHRhYmxlIG9mIGNvbnRlbnRzCislIGVudHJpZXMuICBUaGUgcGFyYWdyYXBoIGlzIGluZGVudGVkIGJ5IFxsZWZ0c2tpcC4KKyUKK1xkZWZcZW50cnkjMSMye1xiZWdpbmdyb3VwCisgICUKKyAgJSBTdGFydCBhIG5ldyBwYXJhZ3JhcGggaWYgbmVjZXNzYXJ5LCBzbyBvdXIgYXNzaWdubWVudHMgYmVsb3cgY2FuJ3QKKyAgJSBhZmZlY3QgcHJldmlvdXMgdGV4dC4KKyAgXHBhcgorICAlCisgICUgRG8gbm90IGZpbGwgb3V0IHRoZSBsYXN0IGxpbmUgd2l0aCB3aGl0ZSBzcGFjZS4KKyAgXHBhcmZpbGxza2lwID0gMGluCisgICUKKyAgJSBObyBleHRyYSBzcGFjZSBhYm92ZSB0aGlzIHBhcmFncmFwaC4KKyAgXHBhcnNraXAgPSAwaW4KKyAgJQorICAlIERvIG5vdCBwcmVmZXIgYSBzZXBhcmF0ZSBsaW5lIGVuZGluZyB3aXRoIGEgaHlwaGVuIHRvIGZld2VyIGxpbmVzLgorICBcZmluYWxoeXBoZW5kZW1lcml0cyA9IDAKKyAgJQorICAlIFxoYW5naW5kZW50IGlzIG9ubHkgcmVsZXZhbnQgd2hlbiB0aGUgZW50cnkgdGV4dCBhbmQgcGFnZSBudW1iZXIKKyAgJSBkb24ndCBib3RoIGZpdCBvbiBvbmUgbGluZS4gIEluIHRoYXQgY2FzZSwgYm9iIHN1Z2dlc3RzIHN0YXJ0aW5nIHRoZQorICAlIGRvdHMgcHJldHR5IGZhciBvdmVyIG9uIHRoZSBsaW5lLiAgVW5mb3J0dW5hdGVseSwgYSBsYXJnZQorICAlIGluZGVudGF0aW9uIGxvb2tzIHdyb25nIHdoZW4gdGhlIGVudHJ5IHRleHQgaXRzZWxmIGlzIGJyb2tlbiBhY3Jvc3MKKyAgJSBsaW5lcy4gIFNvIHdlIHVzZSBhIHNtYWxsIGluZGVudGF0aW9uIGFuZCBwdXQgdXAgd2l0aCBsb25nIGxlYWRlcnMuCisgICUKKyAgJSBcaGFuZ2FmdGVyIGlzIHJlc2V0IHRvIDEgKHdoaWNoIGlzIHRoZSB2YWx1ZSB3ZSB3YW50KSBhdCB0aGUgc3RhcnQKKyAgJSBvZiBlYWNoIHBhcmFncmFwaCwgc28gd2UgbmVlZCBub3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0LgorICBcaGFuZ2luZGVudCA9IDJlbQorICAlCisgICUgV2hlbiB0aGUgZW50cnkgdGV4dCBuZWVkcyB0byBiZSBicm9rZW4sIGp1c3QgZmlsbCBvdXQgdGhlIGZpcnN0IGxpbmUKKyAgJSB3aXRoIGJsYW5rIHNwYWNlLgorICBccmlnaHRza2lwID0gMHB0IHBsdXMxZmlsCisgICUKKyAgJSBBIGJpdCBvZiBzdHJldGNoIGJlZm9yZSBlYWNoIGVudHJ5IGZvciB0aGUgYmVuZWZpdCBvZiBiYWxhbmNpbmcgY29sdW1ucy4KKyAgXHZza2lwIDBwdCBwbHVzMXB0CisgICUKKyAgJSBTdGFydCBhIGBgcGFyYWdyYXBoJycgZm9yIHRoZSBpbmRleCBlbnRyeSBzbyB0aGUgbGluZSBicmVha2luZworICAlIHBhcmFtZXRlcnMgd2UndmUgc2V0IGFib3ZlIHdpbGwgaGF2ZSBhbiBlZmZlY3QuCisgIFxub2luZGVudAorICAlCisgICUgSW5zZXJ0IHRoZSB0ZXh0IG9mIHRoZSBpbmRleCBlbnRyeS4gIFRlWCB3aWxsIGRvIGxpbmUtYnJlYWtpbmcgb24gaXQuCisgICMxJQorICAlIFRoZSBmb2xsb3dpbmcgaXMga2x1ZGdlZCB0byBub3Qgb3V0cHV0IGEgbGluZSBvZiBkb3RzIGluIHRoZSBpbmRleCBpZgorICAlIHRoZXJlIGFyZSBubyBwYWdlIG51bWJlcnMuICBUaGUgbmV4dCBwZXJzb24gd2hvIGJyZWFrcyB0aGlzIHdpbGwgYmUKKyAgJSBjdXJzZWQgYnkgYSBVbml4IGRhZW1vbi4KKyAgXGRlZlx0ZW1wYXt7XHJtIH19JQorICBcZGVmXHRlbXBieyMyfSUKKyAgXGVkZWZcdGVtcGN7XHRlbXBhfSUKKyAgXGVkZWZcdGVtcGR7XHRlbXBifSUKKyAgXGlmeFx0ZW1wY1x0ZW1wZFwgXGVsc2UlCisgICAgJQorICAgICUgSWYgd2UgbXVzdCwgcHV0IHRoZSBwYWdlIG51bWJlciBvbiBhIGxpbmUgb2YgaXRzIG93biwgYW5kIGZpbGwgb3V0CisgICAgJSB0aGlzIGxpbmUgd2l0aCBibGFuayBzcGFjZS4gIChUaGUgXGhmaWwgaXMgb3ZlcndoZWxtZWQgd2l0aCB0aGUKKyAgICAlIGZpbGwgbGVhZGVycyBnbHVlIGluIFxpbmRleGRvdGZpbGwgaWYgdGhlIHBhZ2UgbnVtYmVyIGRvZXMgZml0LikKKyAgICBcaGZpbFxwZW5hbHR5NTAKKyAgICBcbnVsbFxub2JyZWFrXGluZGV4ZG90ZmlsbCAlIEhhdmUgbGVhZGVycyBiZWZvcmUgdGhlIHBhZ2UgbnVtYmVyLgorICAgICUKKyAgICAlIFRoZSBgXCAnIGhlcmUgaXMgcmVtb3ZlZCBieSB0aGUgaW1wbGljaXQgXHVuc2tpcCB0aGF0IFRlWCBkb2VzIGFzCisgICAgJSBwYXJ0IG9mICh0aGUgcHJpbWl0aXZlKSBccGFyLiAgV2l0aG91dCBpdCwgYSBzcHVyaW91cyB1bmRlcmZ1bGwKKyAgICAlIFxoYm94IGVuc3Vlcy4KKyAgICBcaWZwZGYKKyAgICAgIFxwZGZnZXR0b2tzIzIuXCBcdGhlXHRva3NBICUgVGhlIHBhZ2UgbnVtYmVyIGVuZHMgdGhlIHBhcmFncmFwaC4KKyAgICBcZWxzZQorICAgICAgXCAjMiUgVGhlIHBhZ2UgbnVtYmVyIGVuZHMgdGhlIHBhcmFncmFwaC4KKyAgICBcZmkKKyAgXGZpJQorICBccGFyCitcZW5kZ3JvdXB9CisKKyUgTGlrZSBcZG90ZmlsbCBleGNlcHQgdGFrZXMgYXQgbGVhc3QgMSBlbS4KK1xkZWZcaW5kZXhkb3RmaWxse1xjbGVhZGVycworICBcaGJveHskXG1hdGhzdXJyb3VuZD0wcHQgXG1rZXJuMS41bXUgJHtcaXQgLn0kIFxta2VybjEuNW11JH1caHNraXAgMWVtIHBsdXMgMWZpbGx9CisKK1xkZWZccHJpbWFyeSAjMXtcbGluZXsjMVxoZmlsfX0KKworXG5ld3NraXBcc2Vjb25kYXJ5aW5kZW50IFxzZWNvbmRhcnlpbmRlbnQ9MC41Y20KK1xkZWZcc2Vjb25kYXJ5IzEjMnt7JQorICBccGFyZmlsbHNraXA9MGluCisgIFxwYXJza2lwPTBpbgorICBcaGFuZ2luZGVudD0xaW4KKyAgXGhhbmdhZnRlcj0xCisgIFxub2luZGVudFxoc2tpcFxzZWNvbmRhcnlpbmRlbnRcaGJveHsjMX1caW5kZXhkb3RmaWxsCisgIFxpZnBkZgorICAgIFxwZGZnZXR0b2tzIzIuXCBcdGhlXHRva3NBICUgVGhlIHBhZ2UgbnVtYmVyIGVuZHMgdGhlIHBhcmFncmFwaC4KKyAgXGVsc2UKKyAgICAjMgorICBcZmkKKyAgXHBhcgorfX0KKworJSBEZWZpbmUgdHdvLWNvbHVtbiBtb2RlLCB3aGljaCB3ZSB1c2UgdG8gdHlwZXNldCBpbmRleGVzLgorJSBBZGFwdGVkIGZyb20gdGhlIFRlWGJvb2ssIHBhZ2UgNDE2LCB3aGljaCBpcyB0byBzYXksCislIHRoZSBtYW5tYWMudGV4IGZvcm1hdCB1c2VkIHRvIHByaW50IHRoZSBUZVhib29rIGl0c2VsZi4KK1xjYXRjb2RlYFxAPTExCisKK1xuZXdib3hccGFydGlhbHBhZ2UKK1xuZXdkaW1lblxkb3VibGVjb2x1bW5oc2l6ZQorCitcZGVmXGJlZ2luZG91YmxlY29sdW1uc3tcYmVnaW5ncm91cCAlIGVuZGVkIGJ5IFxlbmRkb3VibGVjb2x1bW5zCisgICUgR3JhYiBhbnkgc2luZ2xlLWNvbHVtbiBtYXRlcmlhbCBhYm92ZSB1cy4KKyAgXG91dHB1dCA9IHslCisgICAgJQorICAgICUgSGVyZSBpcyBhIHBvc3NpYmlsaXR5IG5vdCBmb3Jlc2VlbiBpbiBtYW5tYWM6IGlmIHdlIGFjY3VtdWxhdGUgYQorICAgICUgd2hvbGUgbG90IG9mIG1hdGVyaWFsLCB3ZSBtaWdodCBlbmQgdXAgY2FsbGluZyB0aGlzIFxvdXRwdXQKKyAgICAlIHJvdXRpbmUgdHdpY2UgaW4gYSByb3cgKHNlZSB0aGUgZG91YmxlY29sLWxvc2UgdGVzdCwgd2hpY2ggaXMKKyAgICAlIGVzc2VudGlhbGx5IGEgY291cGxlIG9mIGluZGV4ZXMgd2l0aCBAc2V0Y2hhcHRlcm5ld3BhZ2Ugb2ZmKS4gIEluCisgICAgJSB0aGF0IGNhc2Ugd2UganVzdCBzaGlwIG91dCB3aGF0IGlzIGluIFxwYXJ0aWFscGFnZSB3aXRoIHRoZSBub3JtYWwKKyAgICAlIG91dHB1dCByb3V0aW5lLiAgR2VuZXJhbGx5LCBccGFydGlhbHBhZ2Ugd2lsbCBiZSBlbXB0eSB3aGVuIHRoaXMKKyAgICAlIHJ1bnMgYW5kIHRoaXMgd2lsbCBiZSBhIG5vLW9wLiAgU2VlIHRoZSBpbmRleHNwcmVhZC50ZXggdGVzdCBjYXNlLgorICAgIFxpZnZvaWRccGFydGlhbHBhZ2UgXGVsc2UKKyAgICAgIFxvbmVwYWdlb3V0e1xwYWdlY29udGVudHNccGFydGlhbHBhZ2V9JQorICAgIFxmaQorICAgICUKKyAgICBcZ2xvYmFsXHNldGJveFxwYXJ0aWFscGFnZSA9IFx2Ym94eyUKKyAgICAgICUgVW52Ym94IHRoZSBtYWluIG91dHB1dCBwYWdlLgorICAgICAgXHVudmJveFxQQUdFCisgICAgICBca2Vybi1cdG9wc2tpcCBca2VyblxiYXNlbGluZXNraXAKKyAgICB9JQorICB9JQorICBcZWplY3QgJSBydW4gdGhhdCBvdXRwdXQgcm91dGluZSB0byBzZXQgXHBhcnRpYWxwYWdlCisgICUKKyAgJSBVc2UgdGhlIGRvdWJsZS1jb2x1bW4gb3V0cHV0IHJvdXRpbmUgZm9yIHN1YnNlcXVlbnQgcGFnZXMuCisgIFxvdXRwdXQgPSB7XGRvdWJsZWNvbHVtbm91dH0lCisgICUKKyAgJSBDaGFuZ2UgdGhlIHBhZ2Ugc2l6ZSBwYXJhbWV0ZXJzLiAgV2UgY291bGQgZG8gdGhpcyBvbmNlIG91dHNpZGUgdGhpcworICAlIHJvdXRpbmUsIGluIGVhY2ggb2YgQHNtYWxsYm9vaywgQGFmb3VycGFwZXIsIGFuZCB0aGUgZGVmYXVsdCA4LjV4MTEKKyAgJSBmb3JtYXQsIGJ1dCB0aGVuIHdlIHJlcGVhdCB0aGUgc2FtZSBjb21wdXRhdGlvbi4gIFJlcGVhdGluZyBhIGNvdXBsZQorICAlIG9mIGFzc2lnbm1lbnRzIG9uY2UgcGVyIGluZGV4IGlzIGNsZWFybHkgbWVhbmluZ2xlc3MgZm9yIHRoZQorICAlIGV4ZWN1dGlvbiB0aW1lLCBzbyB3ZSBtYXkgYXMgd2VsbCBkbyBpdCBpbiBvbmUgcGxhY2UuCisgICUKKyAgJSBGaXJzdCB3ZSBoYWx2ZSB0aGUgbGluZSBsZW5ndGgsIGxlc3MgYSBsaXR0bGUgZm9yIHRoZSBndXR0ZXIgYmV0d2VlbgorICAlIHRoZSBjb2x1bW5zLiAgV2UgY29tcHV0ZSB0aGUgZ3V0dGVyIGJhc2VkIG9uIHRoZSBsaW5lIGxlbmd0aCwgc28gaXQKKyAgJSBjaGFuZ2VzIGF1dG9tYXRpY2FsbHkgd2l0aCB0aGUgcGFwZXIgZm9ybWF0LiAgVGhlIG1hZ2ljIGNvbnN0YW50CisgICUgYmVsb3cgaXMgY2hvc2VuIHNvIHRoYXQgdGhlIGd1dHRlciBoYXMgdGhlIHNhbWUgdmFsdWUgKHdlbGwsICstPDFwdCkKKyAgJSBhcyBpdCBkaWQgd2hlbiB3ZSBoYXJkLWNvZGVkIGl0LgorICAlCisgICUgV2UgcHV0IHRoZSByZXN1bHQgaW4gYSBzZXBhcmF0ZSByZWdpc3RlciwgXGRvdWJsZWNvbHVtaHNpemUsIHNvIHdlCisgICUgY2FuIHJlc3RvcmUgaXQgaW4gXHBhZ2Vzb2ZhciwgYWZ0ZXIgXGhzaXplIGl0c2VsZiBoYXMgKHBvdGVudGlhbGx5KQorICAlIGJlZW4gY2xvYmJlcmVkLgorICAlCisgIFxkb3VibGVjb2x1bW5oc2l6ZSA9IFxoc2l6ZQorICAgIFxhZHZhbmNlXGRvdWJsZWNvbHVtbmhzaXplIGJ5IC0uMDQxNTRcaHNpemUKKyAgICBcZGl2aWRlXGRvdWJsZWNvbHVtbmhzaXplIGJ5IDIKKyAgXGhzaXplID0gXGRvdWJsZWNvbHVtbmhzaXplCisgICUKKyAgJSBEb3VibGUgdGhlIFx2c2l6ZSBhcyB3ZWxsLiAgKFdlIGRvbid0IG5lZWQgYSBzZXBhcmF0ZSByZWdpc3RlciBoZXJlLAorICAlIHNpbmNlIG5vYm9keSBjbG9iYmVycyBcdnNpemUuKQorICBcdnNpemUgPSAyXHZzaXplCit9CisKKyUgVGhlIGRvdWJsZS1jb2x1bW4gb3V0cHV0IHJvdXRpbmUgZm9yIGFsbCBkb3VibGUtY29sdW1uIHBhZ2VzIGV4Y2VwdAorJSB0aGUgbGFzdC4KKyUKK1xkZWZcZG91YmxlY29sdW1ub3V0eyUKKyAgXHNwbGl0dG9wc2tpcD1cdG9wc2tpcCBcc3BsaXRtYXhkZXB0aD1cbWF4ZGVwdGgKKyAgJSBHZXQgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGRvdWJsZSBjb2x1bW5zIC0tIHRoZSBub3JtYWwKKyAgJSAodW5kb3VibGVkKSBwYWdlIGhlaWdodCBtaW51cyBhbnkgbWF0ZXJpYWwgbGVmdCBvdmVyIGZyb20gdGhlCisgICUgcHJldmlvdXMgcGFnZS4KKyAgXGRpbWVuQCA9IFx2c2l6ZQorICBcZGl2aWRlXGRpbWVuQCBieSAyCisgIFxhZHZhbmNlXGRpbWVuQCBieSAtXGh0XHBhcnRpYWxwYWdlCisgICUKKyAgJSBib3gwIHdpbGwgYmUgdGhlIGxlZnQtaGFuZCBjb2x1bW4sIGJveDIgdGhlIHJpZ2h0LgorICBcc2V0Ym94MD1cdnNwbGl0MjU1IHRvXGRpbWVuQCBcc2V0Ym94Mj1cdnNwbGl0MjU1IHRvXGRpbWVuQAorICBcb25lcGFnZW91dFxwYWdlc29mYXIKKyAgXHVudmJveDI1NQorICBccGVuYWx0eVxvdXRwdXRwZW5hbHR5Cit9CislCislIFJlLW91dHB1dCB0aGUgY29udGVudHMgb2YgdGhlIG91dHB1dCBwYWdlIC0tIGFueSBwcmV2aW91cyBtYXRlcmlhbCwKKyUgZm9sbG93ZWQgYnkgdGhlIHR3byBib3hlcyB3ZSBqdXN0IHNwbGl0LCBpbiBib3gwIGFuZCBib3gyLgorXGRlZlxwYWdlc29mYXJ7JQorICBcdW52Ym94XHBhcnRpYWxwYWdlCisgICUKKyAgXGhzaXplID0gXGRvdWJsZWNvbHVtbmhzaXplCisgIFx3ZDA9XGhzaXplIFx3ZDI9XGhzaXplCisgIFxoYm94IHRvXHBhZ2V3aWR0aHtcYm94MFxoZmlsXGJveDJ9JQorfQorJQorJSBBbGwgZG9uZSB3aXRoIGRvdWJsZSBjb2x1bW5zLgorXGRlZlxlbmRkb3VibGVjb2x1bW5zeyUKKyAgXG91dHB1dCA9IHslCisgICAgJSBTcGxpdCB0aGUgbGFzdCBvZiB0aGUgZG91YmxlLWNvbHVtbiBtYXRlcmlhbC4gIExlYXZlIGl0IG9uIHRoZQorICAgICUgY3VycmVudCBwYWdlLCBubyBhdXRvbWF0aWMgcGFnZSBicmVhay4KKyAgICBcYmFsYW5jZWNvbHVtbnMKKyAgICAlCisgICAgJSBJZiB3ZSBlbmQgdXAgc3BsaXR0aW5nIHRvbyBtdWNoIG1hdGVyaWFsIGZvciB0aGUgY3VycmVudCBwYWdlLAorICAgICUgdGhvdWdoLCB0aGVyZSB3aWxsIGJlIGFub3RoZXIgcGFnZSBicmVhayByaWdodCBhZnRlciB0aGlzIFxvdXRwdXQKKyAgICAlIGludm9jYXRpb24gZW5kcy4gIEhhdmluZyBjYWxsZWQgXGJhbGFuY2Vjb2x1bW5zIG9uY2UsIHdlIGRvIG5vdAorICAgICUgd2FudCB0byBjYWxsIGl0IGFnYWluLiAgVGhlcmVmb3JlLCByZXNldCBcb3V0cHV0IHRvIGl0cyBub3JtYWwKKyAgICAlIGRlZmluaXRpb24gcmlnaHQgYXdheS4gIChXZSBob3BlIFxiYWxhbmNlY29sdW1ucyB3aWxsIG5ldmVyIGJlCisgICAgJSBjYWxsZWQgb24gdG8gYmFsYW5jZSB0b28gbXVjaCBtYXRlcmlhbCwgYnV0IGlmIGl0IGlzLCB0aGlzIG1ha2VzCisgICAgJSB0aGUgb3V0cHV0IHNvbWV3aGF0IG1vcmUgcGFsYXRhYmxlLikKKyAgICBcZ2xvYmFsXG91dHB1dCA9IHtcb25lcGFnZW91dHtccGFnZWNvbnRlbnRzXFBBR0V9fSUKKyAgfSUKKyAgXGVqZWN0CisgIFxlbmRncm91cCAlIHN0YXJ0ZWQgaW4gXGJlZ2luZG91YmxlY29sdW1ucworICAlCisgICUgXHBhZ2Vnb2FsIHdhcyBzZXQgdG8gdGhlIGRvdWJsZWQgXHZzaXplIGFib3ZlLCBzaW5jZSB3ZSByZXN0YXJ0ZWQKKyAgJSB0aGUgY3VycmVudCBwYWdlLiAgV2UncmUgbm93IGJhY2sgdG8gbm9ybWFsIHNpbmdsZS1jb2x1bW4KKyAgJSB0eXBlc2V0dGluZywgc28gcmVzZXQgXHBhZ2Vnb2FsIHRvIHRoZSBub3JtYWwgXHZzaXplIChhZnRlciB0aGUKKyAgJSBcZW5kZ3JvdXAgd2hlcmUgXHZzaXplIGdvdCByZXN0b3JlZCkuCisgIFxwYWdlZ29hbCA9IFx2c2l6ZQorfQorJQorJSBDYWxsZWQgYXQgdGhlIGVuZCBvZiB0aGUgZG91YmxlIGNvbHVtbiBtYXRlcmlhbC4KK1xkZWZcYmFsYW5jZWNvbHVtbnN7JQorICBcc2V0Ym94MCA9IFx2Ym94e1x1bnZib3gyNTV9JSBsaWtlIFxib3gyNTUgYnV0IG1vcmUgZWZmaWNpZW50LCBzZWUgcC4xMjAuCisgIFxkaW1lbkAgPSBcaHQwCisgIFxhZHZhbmNlXGRpbWVuQCBieSBcdG9wc2tpcAorICBcYWR2YW5jZVxkaW1lbkAgYnktXGJhc2VsaW5lc2tpcAorICBcZGl2aWRlXGRpbWVuQCBieSAyICUgdGFyZ2V0IHRvIHNwbGl0IHRvCisgICVkZWJ1Z1xtZXNzYWdle2ZpbmFsIDItY29sdW1uIG1hdGVyaWFsIGhlaWdodD1cdGhlXGh0MCwgdGFyZ2V0PVx0aGVcZGltZW5ALn0lCisgIFxzcGxpdHRvcHNraXAgPSBcdG9wc2tpcAorICAlIExvb3AgdW50aWwgd2UgZ2V0IGEgZGVjZW50IGJyZWFrcG9pbnQuCisgIHslCisgICAgXHZiYWRuZXNzID0gMTAwMDAKKyAgICBcbG9vcAorICAgICAgXGdsb2JhbFxzZXRib3gzID0gXGNvcHkwCisgICAgICBcZ2xvYmFsXHNldGJveDEgPSBcdnNwbGl0MyB0byBcZGltZW5ACisgICAgXGlmZGltXGh0Mz5cZGltZW5ACisgICAgICBcZ2xvYmFsXGFkdmFuY2VcZGltZW5AIGJ5IDFwdAorICAgIFxyZXBlYXQKKyAgfSUKKyAgJWRlYnVnXG1lc3NhZ2V7c3BsaXQgdG8gXHRoZVxkaW1lbkAsIGNvbHVtbiBoZWlnaHRzOiBcdGhlXGh0MSwgXHRoZVxodDMufSUKKyAgXHNldGJveDA9XHZib3ggdG9cZGltZW5Ae1x1bnZib3gxfSUKKyAgXHNldGJveDI9XHZib3ggdG9cZGltZW5Ae1x1bnZib3gzfSUKKyAgJQorICBccGFnZXNvZmFyCit9CitcY2F0Y29kZWBcQCA9IFxvdGhlcgorCisKK1xtZXNzYWdle3NlY3Rpb25pbmcsfQorJSBDaGFwdGVycywgc2VjdGlvbnMsIGV0Yy4KKworJSBcdW5udW1iZXJlZG5vIGlzIGFuIG94eW1vcm9uLCBvZiBjb3Vyc2UuICBCdXQgd2UgY291bnQgdGhlIHVubnVtYmVyZWQKKyUgc2VjdGlvbnMgc28gdGhhdCB3ZSBjYW4gcmVmZXIgdG8gdGhlbSB1bmFtYmlndW91c2x5IGluIHRoZSBwZGYKKyUgb3V0bGluZXMgYnkgdGhlaXIgInNlY3Rpb24gbnVtYmVyIi4gIFdlIGF2b2lkIGNvbGxpc2lvbnMgd2l0aCBjaGFwdGVyCislIG51bWJlcnMgYnkgc3RhcnRpbmcgdGhlbSBhdCAxMDAwMC4gIChJZiBhIGRvY3VtZW50IGV2ZXIgaGFzIDEwMDAwCislIGNoYXB0ZXJzLCB3ZSdyZSBpbiB0cm91YmxlIGFueXdheSwgSSdtIHN1cmUuKQorXG5ld2NvdW50XHVubnVtYmVyZWRubyBcdW5udW1iZXJlZG5vID0gMTAwMDAKK1xuZXdjb3VudFxjaGFwbm8KK1xuZXdjb3VudFxzZWNubyAgICAgICAgXHNlY25vPTAKK1xuZXdjb3VudFxzdWJzZWNubyAgICAgXHN1YnNlY25vPTAKK1xuZXdjb3VudFxzdWJzdWJzZWNubyAgXHN1YnN1YnNlY25vPTAKKworJSBUaGlzIGNvdW50ZXIgaXMgZnVubnkgc2luY2UgaXQgY291bnRzIHRocm91Z2ggY2hhcmNvZGVzIG9mIGxldHRlcnMgQSwgQiwgLi4uCitcbmV3Y291bnRcYXBwZW5kaXhubyAgXGFwcGVuZGl4bm8gPSBgXEAKKyUKKyUgXGRlZlxhcHBlbmRpeGxldHRlcntcY2hhclx0aGVcYXBwZW5kaXhub30KKyUgV2UgZG8gdGhlIGZvbGxvd2luZyB1Z2x5IGNvbmRpdGlvbmFsIGluc3RlYWQgb2YgdGhlIGFib3ZlIHNpbXBsZQorJSBjb25zdHJ1Y3QgZm9yIHRoZSBzYWtlIG9mIHBkZnRleCwgd2hpY2ggbmVlZHMgdGhlIGFjdHVhbAorJSBsZXR0ZXIgaW4gdGhlIGV4cGFuc2lvbiwgbm90IGp1c3QgdHlwZXNldC4KKyUgCitcZGVmXGFwcGVuZGl4bGV0dGVyeyUKKyAgXGlmbnVtXGFwcGVuZGl4bm89YEEgQSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gQiBCJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBDIEMlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEQgRCUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gRSBFJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBGIEYlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEcgRyUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gSCBIJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBJIEklCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEogSiUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gSyBLJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBMIEwlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YE0gTSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gTiBOJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBPIE8lCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFAgUCUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gUSBRJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBSIFIlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFMgUyUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gVCBUJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBVIFUlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFYgViUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gVyBXJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBYIFglCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFkgWSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gWiBaJQorICAlIFRoZSBcdGhlIGlzIG5lY2Vzc2FyeSwgZGVzcGl0ZSBhcHBlYXJhbmNlcywgYmVjYXVzZSBcYXBwZW5kaXhsZXR0ZXIgaXMKKyAgJSBleHBhbmRlZCB3aGlsZSB3cml0aW5nIHRoZSAudG9jIGZpbGUuICBcY2hhclxhcHBlbmRpeG5vIGlzIG5vdAorICAlIGV4cGFuZGFibGUsIHRodXMgaXQgaXMgd3JpdHRlbiBsaXRlcmFsbHksIHRodXMgYWxsIGFwcGVuZGl4ZXMgY29tZSBvdXQKKyAgJSB3aXRoIHRoZSBzYW1lIGxldHRlciAob3IgQCkgaW4gdGhlIHRvYyB3aXRob3V0IGl0LgorICBcZWxzZVxjaGFyXHRoZVxhcHBlbmRpeG5vCisgIFxmaVxmaVxmaVxmaVxmaVxmaVxmaVxmaVxmaVxmaVxmaVxmaVxmaQorICBcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZml9CisKKyUgRWFjaCBAY2hhcHRlciBkZWZpbmVzIHRoaXMgYXMgdGhlIG5hbWUgb2YgdGhlIGNoYXB0ZXIuCislIHBhZ2UgaGVhZGluZ3MgYW5kIGZvb3RpbmdzIGNhbiB1c2UgaXQuICBAc2VjdGlvbiBkb2VzIGxpa2V3aXNlLgorJSBIb3dldmVyLCB0aGV5IGFyZSBub3QgcmVsaWFibGUsIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIG1hcmtzLgorXGRlZlx0aGlzY2hhcHRlcnt9CitcZGVmXHRoaXNzZWN0aW9ue30KKworXG5ld2NvdW50XGFic3NlY2xldmVsICUgdXNlZCB0byBjYWxjdWxhdGUgcHJvcGVyIGhlYWRpbmcgbGV2ZWwKK1xuZXdjb3VudFxzZWNiYXNlXHNlY2Jhc2U9MCAlIEByYWlzZXNlY3Rpb25zL0Bsb3dlcnNlY3Rpb25zIG1vZGlmeSB0aGlzIGNvdW50CisKKyUgQHJhaXNlc2VjdGlvbnM6IHRyZWF0IEBzZWN0aW9uIGFzIGNoYXB0ZXIsIEBzdWJzZWN0aW9uIGFzIHNlY3Rpb24sIGV0Yy4KK1xkZWZccmFpc2VzZWN0aW9uc3tcZ2xvYmFsXGFkdmFuY2Vcc2VjYmFzZSBieSAtMX0KK1xsZXRcdXA9XHJhaXNlc2VjdGlvbnMgJSBvcmlnaW5hbCBCRm94IG5hbWUKKworJSBAbG93ZXJzZWN0aW9uczogdHJlYXQgQGNoYXB0ZXIgYXMgc2VjdGlvbiwgQHNlY3Rpb24gYXMgc3Vic2VjdGlvbiwgZXRjLgorXGRlZlxsb3dlcnNlY3Rpb25ze1xnbG9iYWxcYWR2YW5jZVxzZWNiYXNlIGJ5IDF9CitcbGV0XGRvd249XGxvd2Vyc2VjdGlvbnMgJSBvcmlnaW5hbCBCRm94IG5hbWUKKworJSBDaG9vc2UgYSBudW1iZXJlZC1oZWFkaW5nIG1hY3JvCislICMxIGlzIGhlYWRpbmcgbGV2ZWwgaWYgdW5tb2RpZmllZCBieSBAcmFpc2VzZWN0aW9ucyBvciBAbG93ZXJzZWN0aW9ucworJSAjMiBpcyB0ZXh0IGZvciBoZWFkaW5nCitcZGVmXG51bWhlYWQjMSMye1xhYnNzZWNsZXZlbD1cc2VjYmFzZVxhZHZhbmNlXGFic3NlY2xldmVsIGJ5ICMxCitcaWZjYXNlXGFic3NlY2xldmVsCisgICAgICBcY2hhcHRlcnp6ensjMn0lCisgIFxvciBcc2Vjenp6eyMyfSUKKyAgXG9yIFxudW1iZXJlZHN1YnNlY3p6ensjMn0lCisgIFxvciBcbnVtYmVyZWRzdWJzdWJzZWN6enp7IzJ9JQorICBcZWxzZQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWw8MCBcY2hhcHRlcnp6ensjMn0lCisgICAgXGVsc2UgXG51bWJlcmVkc3Vic3Vic2Vjenp6eyMyfSUKKyAgICBcZmkKKyAgXGZpCisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgbGlrZSBcbnVtaGVhZCwgYnV0IGNob29zZXMgYXBwZW5kaXggaGVhZGluZyBsZXZlbHMKK1xkZWZcYXBwaGVhZCMxIzJ7XGFic3NlY2xldmVsPVxzZWNiYXNlXGFkdmFuY2VcYWJzc2VjbGV2ZWwgYnkgIzEKK1xpZmNhc2VcYWJzc2VjbGV2ZWwKKyAgICAgIFxhcHBlbmRpeHp6ensjMn0lCisgIFxvciBcYXBwZW5kaXhzZWN0aW9uenp6eyMyfSUKKyAgXG9yIFxhcHBlbmRpeHN1YnNlY3p6ensjMn0lCisgIFxvciBcYXBwZW5kaXhzdWJzdWJzZWN6enp7IzJ9JQorICBcZWxzZQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWw8MCBcYXBwZW5kaXh6enp7IzJ9JQorICAgIFxlbHNlIFxhcHBlbmRpeHN1YnN1YnNlY3p6ensjMn0lCisgICAgXGZpCisgIFxmaQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudAorfQorCislIGxpa2UgXG51bWhlYWQsIGJ1dCBjaG9vc2VzIG51bWJlcmxlc3MgaGVhZGluZyBsZXZlbHMKK1xkZWZcdW5ubWhlYWQjMSMye1xhYnNzZWNsZXZlbD1cc2VjYmFzZVxhZHZhbmNlXGFic3NlY2xldmVsIGJ5ICMxCisgIFxpZmNhc2VcYWJzc2VjbGV2ZWwKKyAgICAgIFx1bm51bWJlcmVkenp6eyMyfSUKKyAgXG9yIFx1bm51bWJlcmVkc2Vjenp6eyMyfSUKKyAgXG9yIFx1bm51bWJlcmVkc3Vic2Vjenp6eyMyfSUKKyAgXG9yIFx1bm51bWJlcmVkc3Vic3Vic2Vjenp6eyMyfSUKKyAgXGVsc2UKKyAgICBcaWZudW0gXGFic3NlY2xldmVsPDAgXHVubnVtYmVyZWR6enp7IzJ9JQorICAgIFxlbHNlIFx1bm51bWJlcmVkc3Vic3Vic2Vjenp6eyMyfSUKKyAgICBcZmkKKyAgXGZpCisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgQGNoYXB0ZXIsIEBhcHBlbmRpeCwgQHVubnVtYmVyZWQuCislCitcb3V0ZXJcZGVmXGNoYXB0ZXJ7XHBhcnNlYXJnXGNoYXB0ZXJ5eXl9CitcZGVmXGNoYXB0ZXJ5eXkjMXtcbnVtaGVhZDB7IzF9fSAlIG5vcm1hbGx5IG51bWhlYWQwIGNhbGxzIGNoYXB0ZXJ6enoKK1xkZWZcY2hhcHRlcnp6eiMxeyUKKyAgXHNlY25vPTAgXHN1YnNlY25vPTAgXHN1YnN1YnNlY25vPTAgIFxhZHZhbmNlXGNoYXBubyBieSAxCisgIFxtZXNzYWdle1xwdXR3b3JkQ2hhcHRlclxzcGFjZSBcdGhlXGNoYXBub30lCisgICUKKyAgJSBXcml0ZSB0aGUgYWN0dWFsIGhlYWRpbmcuCisgIFxjaGFwbWFjcm97IzF9e1ludW1iZXJlZH17XHRoZVxjaGFwbm99JQorICAlCisgICUgU28gQHNlY3Rpb24gYW5kIHRoZSBsaWtlIGFyZSBudW1iZXJlZCB1bmRlcm5lYXRoIHRoaXMgY2hhcHRlci4KKyAgXGdsb2JhbFxsZXRcc2VjdGlvbiA9IFxudW1iZXJlZHNlYworICBcZ2xvYmFsXGxldFxzdWJzZWN0aW9uID0gXG51bWJlcmVkc3Vic2VjCisgIFxnbG9iYWxcbGV0XHN1YnN1YnNlY3Rpb24gPSBcbnVtYmVyZWRzdWJzdWJzZWMKK30KKworXG91dGVyXGRlZlxhcHBlbmRpeHtccGFyc2VhcmdcYXBwZW5kaXh5eXl9CitcZGVmXGFwcGVuZGl4eXl5IzF7XGFwcGhlYWQweyMxfX0gJSBub3JtYWxseSBhcHBoZWFkMCBjYWxscyBhcHBlbmRpeHp6egorXGRlZlxhcHBlbmRpeHp6eiMxeyUKKyAgXHNlY25vPTAgXHN1YnNlY25vPTAgXHN1YnN1YnNlY25vPTAgIFxhZHZhbmNlXGFwcGVuZGl4bm8gYnkgMQorICBcZGVmXGFwcGVuZGl4bnVte1xwdXR3b3JkQXBwZW5kaXhcc3BhY2UgXGFwcGVuZGl4bGV0dGVyfSUKKyAgXG1lc3NhZ2V7XGFwcGVuZGl4bnVtfSUKKyAgXGNoYXBtYWNyb3sjMX17WWFwcGVuZGl4fXtcYXBwZW5kaXhsZXR0ZXJ9JQorICBcZ2xvYmFsXGxldFxzZWN0aW9uID0gXGFwcGVuZGl4c2VjCisgIFxnbG9iYWxcbGV0XHN1YnNlY3Rpb24gPSBcYXBwZW5kaXhzdWJzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFxhcHBlbmRpeHN1YnN1YnNlYworfQorCislIEBjZW50ZXJjaGFwIGlzIGxpa2UgQHVubnVtYmVyZWQsIGJ1dCB0aGUgaGVhZGluZyBpcyBjZW50ZXJlZC4KK1xvdXRlclxkZWZcY2VudGVyY2hhcHtccGFyc2VhcmdcY2VudGVyY2hhcHl5eX0KK1xkZWZcY2VudGVyY2hhcHl5eSMxe3tcdW5udW1iZXJlZHl5eXsjMX19fQorCislIEB0b3AgaXMgbGlrZSBAdW5udW1iZXJlZC4KK1xvdXRlclxkZWZcdG9we1xwYXJzZWFyZ1x1bm51bWJlcmVkeXl5fQorCitcb3V0ZXJcZGVmXHVubnVtYmVyZWR7XHBhcnNlYXJnXHVubnVtYmVyZWR5eXl9CitcZGVmXHVubnVtYmVyZWR5eXkjMXtcdW5ubWhlYWQweyMxfX0gJSBub3JtYWxseSB1bm5taGVhZDAgY2FsbHMgdW5udW1iZXJlZHp6egorXGRlZlx1bm51bWJlcmVkenp6IzF7JQorICBcc2Vjbm89MCBcc3Vic2Vjbm89MCBcc3Vic3Vic2Vjbm89MCAgXGFkdmFuY2VcdW5udW1iZXJlZG5vIGJ5IDEKKyAgJQorICAlIFRoaXMgdXNlZCB0byBiZSBzaW1wbHkgXG1lc3NhZ2V7IzF9LCBidXQgVGVYIGZ1bGx5IGV4cGFuZHMgdGhlCisgICUgYXJndW1lbnQgdG8gXG1lc3NhZ2UuICBUaGVyZWZvcmUsIGlmICMxIGNvbnRhaW5lZCBALWNvbW1hbmRzLCBUZVgKKyAgJSBleHBhbmRlZCB0aGVtLiAgRm9yIGV4YW1wbGUsIGluIGBAdW5udW1iZXJlZCBUaGUgQGNpdGV7Qm9va30nLCBUZVgKKyAgJSBleHBhbmRlZCBAY2l0ZSAod2hpY2ggdHVybnMgb3V0IHRvIGNhdXNlIGVycm9ycyBiZWNhdXNlIFxjaXRlIGlzIG1lYW50CisgICUgdG8gYmUgZXhlY3V0ZWQsIG5vdCBleHBhbmRlZCkuCisgICUKKyAgJSBBbnl3YXksIHdlIGRvbid0IHdhbnQgdGhlIGZ1bGx5LWV4cGFuZGVkIGRlZmluaXRpb24gb2YgQGNpdGUgdG8gYXBwZWFyCisgICUgYXMgYSByZXN1bHQgb2YgdGhlIFxtZXNzYWdlLCB3ZSBqdXN0IHdhbnQgYEBjaXRlJyBpdHNlbGYuICBXZSB1c2UKKyAgJSBcdGhlPHRva3MgcmVnaXN0ZXI+IHRvIGFjaGlldmUgdGhpczogVGVYIGV4cGFuZHMgXHRoZTx0b2tzPiBvbmx5IG9uY2UsCisgICUgc2ltcGx5IHlpZWxkaW5nIHRoZSBjb250ZW50cyBvZiA8dG9rcyByZWdpc3Rlcj4uICAoV2UgYWxzbyBkbyB0aGlzIGZvcgorICAlIHRoZSB0b2MgZW50cmllcy4pCisgIFx0b2tzMCA9IHsjMX1cbWVzc2FnZXsoXHRoZVx0b2tzMCl9JQorICAlCisgIFxjaGFwbWFjcm97IzF9e1lub3RoaW5nfXtcdGhlXHVubnVtYmVyZWRub30lCisgICUKKyAgXGdsb2JhbFxsZXRcc2VjdGlvbiA9IFx1bm51bWJlcmVkc2VjCisgIFxnbG9iYWxcbGV0XHN1YnNlY3Rpb24gPSBcdW5udW1iZXJlZHN1YnNlYworICBcZ2xvYmFsXGxldFxzdWJzdWJzZWN0aW9uID0gXHVubnVtYmVyZWRzdWJzdWJzZWMKK30KKworJSBTZWN0aW9ucy4KK1xvdXRlclxkZWZcbnVtYmVyZWRzZWN7XHBhcnNlYXJnXHNlY3l5eX0KK1xkZWZcc2VjeXl5IzF7XG51bWhlYWQxeyMxfX0gJSBub3JtYWxseSBjYWxscyBzZWN6enoKK1xkZWZcc2Vjenp6IzF7JQorICBcc3Vic2Vjbm89MCBcc3Vic3Vic2Vjbm89MCAgXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW51bWJlcmVkfXtcdGhlXGNoYXBuby5cdGhlXHNlY25vfSUKK30KKworXG91dGVyXGRlZlxhcHBlbmRpeHNlY3Rpb257XHBhcnNlYXJnXGFwcGVuZGl4c2VjeXl5fQorXG91dGVyXGRlZlxhcHBlbmRpeHNlY3tccGFyc2VhcmdcYXBwZW5kaXhzZWN5eXl9CitcZGVmXGFwcGVuZGl4c2VjeXl5IzF7XGFwcGhlYWQxeyMxfX0gJSBub3JtYWxseSBjYWxscyBhcHBlbmRpeHNlY3Rpb256enoKK1xkZWZcYXBwZW5kaXhzZWN0aW9uenp6IzF7JQorICBcc3Vic2Vjbm89MCBcc3Vic3Vic2Vjbm89MCAgXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WWFwcGVuZGl4fXtcYXBwZW5kaXhsZXR0ZXIuXHRoZVxzZWNub30lCit9CisKK1xvdXRlclxkZWZcdW5udW1iZXJlZHNlY3tccGFyc2VhcmdcdW5udW1iZXJlZHNlY3l5eX0KK1xkZWZcdW5udW1iZXJlZHNlY3l5eSMxe1x1bm5taGVhZDF7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIHVubnVtYmVyZWRzZWN6enoKK1xkZWZcdW5udW1iZXJlZHNlY3p6eiMxeyUKKyAgXHN1YnNlY25vPTAgXHN1YnN1YnNlY25vPTAgIFxhZHZhbmNlXHNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzZWN9e1lub3RoaW5nfXtcdGhlXHVubnVtYmVyZWRuby5cdGhlXHNlY25vfSUKK30KKworJSBTdWJzZWN0aW9ucy4KK1xvdXRlclxkZWZcbnVtYmVyZWRzdWJzZWN7XHBhcnNlYXJnXG51bWJlcmVkc3Vic2VjeXl5fQorXGRlZlxudW1iZXJlZHN1YnNlY3l5eSMxe1xudW1oZWFkMnsjMX19ICUgbm9ybWFsbHkgY2FsbHMgbnVtYmVyZWRzdWJzZWN6enoKK1xkZWZcbnVtYmVyZWRzdWJzZWN6enojMXslCisgIFxzdWJzdWJzZWNubz0wICBcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZbnVtYmVyZWR9e1x0aGVcY2hhcG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNub30lCit9CisKK1xvdXRlclxkZWZcYXBwZW5kaXhzdWJzZWN7XHBhcnNlYXJnXGFwcGVuZGl4c3Vic2VjeXl5fQorXGRlZlxhcHBlbmRpeHN1YnNlY3l5eSMxe1xhcHBoZWFkMnsjMX19ICUgbm9ybWFsbHkgY2FsbHMgYXBwZW5kaXhzdWJzZWN6enoKK1xkZWZcYXBwZW5kaXhzdWJzZWN6enojMXslCisgIFxzdWJzdWJzZWNubz0wICBcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZYXBwZW5kaXh9JQorICAgICAgICAgICAgICAgICB7XGFwcGVuZGl4bGV0dGVyLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNub30lCit9CisKK1xvdXRlclxkZWZcdW5udW1iZXJlZHN1YnNlY3tccGFyc2VhcmdcdW5udW1iZXJlZHN1YnNlY3l5eX0KK1xkZWZcdW5udW1iZXJlZHN1YnNlY3l5eSMxe1x1bm5taGVhZDJ7IzF9fSAlbm9ybWFsbHkgY2FsbHMgdW5udW1iZXJlZHN1YnNlY3p6egorXGRlZlx1bm51bWJlcmVkc3Vic2Vjenp6IzF7JQorICBcc3Vic3Vic2Vjbm89MCAgXGFkdmFuY2Vcc3Vic2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3N1YnNlY317WW5vdGhpbmd9JQorICAgICAgICAgICAgICAgICB7XHRoZVx1bm51bWJlcmVkbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vfSUKK30KKworJSBTdWJzdWJzZWN0aW9ucy4KK1xvdXRlclxkZWZcbnVtYmVyZWRzdWJzdWJzZWN7XHBhcnNlYXJnXG51bWJlcmVkc3Vic3Vic2VjeXl5fQorXGRlZlxudW1iZXJlZHN1YnN1YnNlY3l5eSMxe1xudW1oZWFkM3sjMX19ICUgbm9ybWFsbHkgbnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcbnVtYmVyZWRzdWJzdWJzZWN6enojMXslCisgIFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1ludW1iZXJlZH0lCisgICAgICAgICAgICAgICAgIHtcdGhlXGNoYXBuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8uXHRoZVxzdWJzdWJzZWNub30lCit9CisKK1xvdXRlclxkZWZcYXBwZW5kaXhzdWJzdWJzZWN7XHBhcnNlYXJnXGFwcGVuZGl4c3Vic3Vic2VjeXl5fQorXGRlZlxhcHBlbmRpeHN1YnN1YnNlY3l5eSMxe1xhcHBoZWFkM3sjMX19ICUgbm9ybWFsbHkgYXBwZW5kaXhzdWJzdWJzZWN6enoKK1xkZWZcYXBwZW5kaXhzdWJzdWJzZWN6enojMXslCisgIFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lhcHBlbmRpeH0lCisgICAgICAgICAgICAgICAgIHtcYXBwZW5kaXhsZXR0ZXIuXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQorfQorCitcb3V0ZXJcZGVmXHVubnVtYmVyZWRzdWJzdWJzZWN7XHBhcnNlYXJnXHVubnVtYmVyZWRzdWJzdWJzZWN5eXl9CitcZGVmXHVubnVtYmVyZWRzdWJzdWJzZWN5eXkjMXtcdW5ubWhlYWQzeyMxfX0gJW5vcm1hbGx5IHVubnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3p6eiMxeyUKKyAgXGFkdmFuY2Vcc3Vic3Vic2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3N1YnN1YnNlY317WW5vdGhpbmd9JQorICAgICAgICAgICAgICAgICB7XHRoZVx1bm51bWJlcmVkbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQorfQorCislIFRoZXNlIGFyZSB2YXJpYW50cyB3aGljaCBhcmUgbm90ICJvdXRlciIsIHNvIHRoZXkgY2FuIGFwcGVhciBpbiBAaWZpbmZvLgorJSBBY3R1YWxseSwgdGhleSBhcmUgbm93IGJlIG9ic29sZXRlOyBvcmRpbmFyeSBzZWN0aW9uIGNvbW1hbmRzIHNob3VsZCB3b3JrLgorXGRlZlxpbmZvdG9we1xwYXJzZWFyZ1x1bm51bWJlcmVkenp6fQorXGRlZlxpbmZvdW5udW1iZXJlZHtccGFyc2VhcmdcdW5udW1iZXJlZHp6en0KK1xkZWZcaW5mb3VubnVtYmVyZWRzZWN7XHBhcnNlYXJnXHVubnVtYmVyZWRzZWN6enp9CitcZGVmXGluZm91bm51bWJlcmVkc3Vic2Vje1xwYXJzZWFyZ1x1bm51bWJlcmVkc3Vic2Vjenp6fQorXGRlZlxpbmZvdW5udW1iZXJlZHN1YnN1YnNlY3tccGFyc2VhcmdcdW5udW1iZXJlZHN1YnN1YnNlY3p6en0KKworXGRlZlxpbmZvYXBwZW5kaXh7XHBhcnNlYXJnXGFwcGVuZGl4enp6fQorXGRlZlxpbmZvYXBwZW5kaXhzZWN7XHBhcnNlYXJnXGFwcGVuZGl4c2Vjenp6fQorXGRlZlxpbmZvYXBwZW5kaXhzdWJzZWN7XHBhcnNlYXJnXGFwcGVuZGl4c3Vic2Vjenp6fQorXGRlZlxpbmZvYXBwZW5kaXhzdWJzdWJzZWN7XHBhcnNlYXJnXGFwcGVuZGl4c3Vic3Vic2Vjenp6fQorCitcZGVmXGluZm9jaGFwdGVye1xwYXJzZWFyZ1xjaGFwdGVyenp6fQorXGRlZlxpbmZvc2VjdGlvbntccGFyc2Vhcmdcc2VjdGlvbnp6en0KK1xkZWZcaW5mb3N1YnNlY3Rpb257XHBhcnNlYXJnXHN1YnNlY3Rpb256enp9CitcZGVmXGluZm9zdWJzdWJzZWN0aW9ue1xwYXJzZWFyZ1xzdWJzdWJzZWN0aW9uenp6fQorCislIFRoZXNlIG1hY3JvcyBjb250cm9sIHdoYXQgdGhlIHNlY3Rpb24gY29tbWFuZHMgZG8sIGFjY29yZGluZworJSB0byB3aGF0IGtpbmQgb2YgY2hhcHRlciB3ZSBhcmUgaW4gKG9yZGluYXJ5LCBhcHBlbmRpeCwgb3IgdW5udW1iZXJlZCkuCislIERlZmluZSB0aGVtIGJ5IGRlZmF1bHQgZm9yIGEgbnVtYmVyZWQgY2hhcHRlci4KK1xsZXRcc2VjdGlvbiA9IFxudW1iZXJlZHNlYworXGxldFxzdWJzZWN0aW9uID0gXG51bWJlcmVkc3Vic2VjCitcbGV0XHN1YnN1YnNlY3Rpb24gPSBcbnVtYmVyZWRzdWJzdWJzZWMKKworJSBEZWZpbmUgQG1ham9yaGVhZGluZywgQGhlYWRpbmcgYW5kIEBzdWJoZWFkaW5nCisKKyUgTk9URSBvbiB1c2Ugb2YgXHZib3ggZm9yIGNoYXB0ZXIgaGVhZGluZ3MsIHNlY3Rpb24gaGVhZGluZ3MsIGFuZCBzdWNoOgorJSAgICAgICAxKSBXZSB1c2UgXHZib3ggcmF0aGVyIHRoYW4gdGhlIGVhcmxpZXIgXGxpbmUgdG8gcGVybWl0CislICAgICAgICAgIG92ZXJsb25nIGhlYWRpbmdzIHRvIGZvbGQuCislICAgICAgIDIpIFxoeXBoZW5wZW5hbHR5IGlzIHNldCB0byAxMDAwMCBiZWNhdXNlIGh5cGhlbmF0aW9uIGluIGEKKyUgICAgICAgICAgaGVhZGluZyBpcyBvYm5veGlvdXM7IHRoaXMgZm9yYmlkcyBpdC4KKyUgICAgICAgMykgTGlrZXdpc2UsIGhlYWRpbmdzIGxvb2sgYmVzdCBpZiBubyBccGFyaW5kZW50IGlzIHVzZWQsIGFuZAorJSAgICAgICAgICBpZiBqdXN0aWZpY2F0aW9uIGlzIG5vdCBhdHRlbXB0ZWQuICBIZW5jZSBccmFnZ2VkcmlnaHQuCisKKworXGRlZlxtYWpvcmhlYWRpbmd7JQorICB7XGFkdmFuY2VcY2hhcGhlYWRpbmdza2lwIGJ5IDEwcHQgXGNoYXBicmVhayB9JQorICBccGFyc2VhcmdcY2hhcGhlYWRpbmd6enoKK30KKworXGRlZlxjaGFwaGVhZGluZ3tcY2hhcGJyZWFrIFxwYXJzZWFyZ1xjaGFwaGVhZGluZ3p6en0KK1xkZWZcY2hhcGhlYWRpbmd6enojMXslCisgIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCisgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0XHJhZ2dlZHJpZ2h0CisgICAgICAgICAgICAgICAgICAgIFxybSAjMVxoZmlsbH19JQorICBcYmlnc2tpcCBccGFyXHBlbmFsdHkgMjAwXHJlbGF4CisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgQGhlYWRpbmcsIEBzdWJoZWFkaW5nLCBAc3Vic3ViaGVhZGluZy4KK1xkZWZcaGVhZGluZ3tccGFyc2VhcmdcZG9oZWFkaW5nfQorXGRlZlxzdWJoZWFkaW5ne1xwYXJzZWFyZ1xkb3N1YmhlYWRpbmd9CitcZGVmXHN1YnN1YmhlYWRpbmd7XHBhcnNlYXJnXGRvc3Vic3ViaGVhZGluZ30KK1xkZWZcZG9oZWFkaW5nIzF7XHNlY3Rpb25oZWFkaW5neyMxfXtzZWN9e1lvbWl0ZnJvbXRvY317fQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xkZWZcZG9zdWJoZWFkaW5nIzF7XHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzZWN9e1lvbWl0ZnJvbXRvY317fQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xkZWZcZG9zdWJzdWJoZWFkaW5nIzF7XHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lvbWl0ZnJvbXRvY317fQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KKworJSBUaGVzZSBtYWNyb3MgZ2VuZXJhdGUgYSBjaGFwdGVyLCBzZWN0aW9uLCBldGMuIGhlYWRpbmcgb25seQorJSAoaW5jbHVkaW5nIHdoaXRlc3BhY2UsIGxpbmVicmVha2luZywgZXRjLiBhcm91bmQgaXQpLAorJSBnaXZlbiBhbGwgdGhlIGluZm9ybWF0aW9uIGluIGNvbnZlbmllbnQsIHBhcnNlZCBmb3JtLgorCislJSUgQXJncyBhcmUgdGhlIHNraXAgYW5kIHBlbmFsdHkgKHVzdWFsbHkgbmVnYXRpdmUpCitcZGVmXGRvYnJlYWsjMSMye1xwYXJcaWZkaW1cbGFzdHNraXA8IzFccmVtb3ZlbGFzdHNraXBccGVuYWx0eSMyXHZza2lwIzFcZml9CisKK1xkZWZcc2V0Y2hhcHRlcnN0eWxlICMxIHtcY3NuYW1lIENIQVBGIzFcZW5kY3NuYW1lfQorCislJSUgRGVmaW5lIHBsYWluIGNoYXB0ZXIgc3RhcnRzLCBhbmQgcGFnZSBvbi9vZmYgc3dpdGNoaW5nIGZvciBpdAorJSBQYXJhbWV0ZXIgY29udHJvbGxpbmcgc2tpcCBiZWZvcmUgY2hhcHRlciBoZWFkaW5ncyAoaWYgbmVlZGVkKQorCitcbmV3c2tpcFxjaGFwaGVhZGluZ3NraXAKKworXGRlZlxjaGFwYnJlYWt7XGRvYnJlYWsgXGNoYXBoZWFkaW5nc2tpcCB7LTQwMDB9fQorXGRlZlxjaGFwcGFnZXJ7XHBhclx2ZmlsbFxzdXBlcmVqZWN0fQorXGRlZlxjaGFwb2RkcGFnZXtcY2hhcHBhZ2VyIFxpZm9kZFxwYWdlbm8gXGVsc2UgXGhib3ggdG8gMHB0e30gXGNoYXBwYWdlclxmaX0KKworXGRlZlxzZXRjaGFwdGVybmV3cGFnZSAjMSB7XGNzbmFtZSBDSEFQUEFHIzFcZW5kY3NuYW1lfQorCitcZGVmXENIQVBQQUdvZmZ7JQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBwYWdlcgorXGdsb2JhbFxsZXRccGNoYXBzZXBtYWNybz1cY2hhcGJyZWFrCitcZ2xvYmFsXGxldFxwYWdlYWxpZ25tYWNybz1cY2hhcHBhZ2VyfQorCitcZGVmXENIQVBQQUdvbnslCitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcHBhZ2VyCitcZ2xvYmFsXGxldFxwY2hhcHNlcG1hY3JvPVxjaGFwcGFnZXIKK1xnbG9iYWxcbGV0XHBhZ2VhbGlnbm1hY3JvPVxjaGFwcGFnZXIKK1xnbG9iYWxcZGVmXEhFQURJTkdTb257XEhFQURJTkdTc2luZ2xlfX0KKworXGRlZlxDSEFQUEFHb2RkeyUKK1xnbG9iYWxcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwb2RkcGFnZQorXGdsb2JhbFxsZXRccGNoYXBzZXBtYWNybz1cY2hhcG9kZHBhZ2UKK1xnbG9iYWxcbGV0XHBhZ2VhbGlnbm1hY3JvPVxjaGFwb2RkcGFnZQorXGdsb2JhbFxkZWZcSEVBRElOR1NvbntcSEVBRElOR1Nkb3VibGV9fQorCitcQ0hBUFBBR29uCisKK1xkZWZcQ0hBUEZwbGFpbnslCitcZ2xvYmFsXGxldFxjaGFwbWFjcm89XGNoZnBsYWluCitcZ2xvYmFsXGxldFxjZW50ZXJjaGFwbWFjcm89XGNlbnRlcmNoZnBsYWlufQorCislIE5vcm1hbCBjaGFwdGVyIG9wZW5pbmcuCislIAorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gdHlwZSAoWW51bWJlcmVkLCBZbm90aGluZywKKyUgWWFwcGVuZGl4LCBZb21pdGZyb210b2MpLCAjMyB0aGUgY2hhcHRlciBudW1iZXIuCislIAorJSBUbyB0ZXN0IGFnYWluc3Qgb3VyIGFyZ3VtZW50LgorXGRlZlxZbm90aGluZ2tleXdvcmR7WW5vdGhpbmd9CitcZGVmXFlvbWl0ZnJvbXRvY2tleXdvcmR7WW9taXRmcm9tdG9jfQorXGRlZlxZYXBwZW5kaXhrZXl3b3Jke1lhcHBlbmRpeH0KKyUKK1xkZWZcY2hmcGxhaW4jMSMyIzN7JQorICBccGNoYXBzZXBtYWNybworICB7JQorICAgIFxjaGFwZm9udHMgXHJtCisgICAgJQorICAgICUgSGF2ZSB0byBkZWZpbmUgXHRoaXNzZWN0aW9uIGJlZm9yZSBjYWxsaW5nIFxkb25vZGVyZWYsIGJlY2F1c2UgdGhlCisgICAgJSB4cmVmIGNvZGUgZXZlbnR1YWxseSB1c2VzIGl0LCBhcyBcWXRpdGxlLiAgT24gdGhlIG90aGVyIGhhbmQsIGl0CisgICAgJSBoYXMgdG8gYmUgY2FsbGVkIGFmdGVyIFxwY2hhcHNlcG1hY3JvLCBvciB0aGUgaGVhZGxpbmUgd2lsbCBjaGFuZ2UKKyAgICAlIHRvbyBzb29uLgorICAgIFxnZGVmXHRoaXNzZWN0aW9ueyMxfSUKKyAgICBcZ2RlZlx0aGlzY2hhcHRlcm5hbWV7IzF9JQorICAgICUKKyAgICAlIE9ubHkgaW5zZXJ0IHRoZSBzZXBhcmF0aW5nIHNwYWNlIGlmIHdlIGhhdmUgYSBjaGFwdGVyL2FwcGVuZGl4CisgICAgJSBudW1iZXIsIGFuZCBkb24ndCBwcmludCB0aGUgdW5udW1iZXJlZCBgYG51bWJlcicnLgorICAgIFxkZWZcdGVtcHR5cGV7IzJ9JQorICAgIFxpZnhcdGVtcHR5cGVcWW5vdGhpbmdrZXl3b3JkCisgICAgICBcc2V0Ym94MCA9IFxoYm94e30lCisgICAgICBcZGVmXHRvY3R5cGV7dW5uY2hhcH0lCisgICAgICBcZGVmXHRoaXNjaGFwdGVyeyMxfSUKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWW9taXRmcm9tdG9ja2V5d29yZAorICAgICAgXHNldGJveDAgPSBcaGJveHt9JSBjb250ZW50cyBsaWtlIHVubnVtYmVyZWQsIGJ1dCBubyB0b2MgZW50cnkKKyAgICAgIFxkZWZcdG9jdHlwZXtvbWl0fSUKKyAgICAgIFx4ZGVmXHRoaXNjaGFwdGVye30lCisgICAgXGVsc2VcaWZ4XHRlbXB0eXBlXFlhcHBlbmRpeGtleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7XHB1dHdvcmRBcHBlbmRpeHt9ICMzXGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle2FwcH0lCisgICAgICAlIFdlIGRvbid0IHN1YnN0aXR1dGUgdGhlIGFjdHVhbCBjaGFwdGVyIG5hbWUgaW50byBcdGhpc2NoYXB0ZXIKKyAgICAgICUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGl0cyBtYWNyb3MgZXZhbHVhdGVkIG5vdy4gIEFuZCB3ZSBkb24ndAorICAgICAgJSB1c2UgXHRoaXNzZWN0aW9uIGJlY2F1c2UgdGhhdCBjaGFuZ2VzIHdpdGggZWFjaCBzZWN0aW9uLgorICAgICAgJQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7XHB1dHdvcmRBcHBlbmRpeHt9IFxhcHBlbmRpeGxldHRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFxub2V4cGFuZFx0aGlzY2hhcHRlcm5hbWV9JQorICAgIFxlbHNlCisgICAgICBcc2V0Ym94MCA9IFxoYm94eyMzXGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle251bWNoYXB9JQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7XHB1dHdvcmRDaGFwdGVye30gXHRoZVxjaGFwbm86CisgICAgICAgICAgICAgICAgICAgICAgICBcbm9leHBhbmRcdGhpc2NoYXB0ZXJuYW1lfSUKKyAgICBcZmlcZmlcZmkKKyAgICAlCisgICAgJSBXcml0ZSB0aGUgdG9jIGVudHJ5IGZvciB0aGlzIGNoYXB0ZXIuICBNdXN0IGNvbWUgYmVmb3JlIHRoZQorICAgICUgXGRvbm9kZXJlZiwgYmVjYXVzZSB3ZSBpbmNsdWRlIHRoZSBjdXJyZW50IG5vZGUgbmFtZSBpbiB0aGUgdG9jCisgICAgJSBlbnRyeSwgYW5kIFxkb25vZGVyZWYgcmVzZXRzIGl0IHRvIGVtcHR5LgorICAgIFx3cml0ZXRvY2VudHJ5e1x0b2N0eXBlfXsjMX17IzN9JQorICAgICUKKyAgICAlIEZvciBwZGZ0ZXgsIHdlIGhhdmUgdG8gd3JpdGUgb3V0IHRoZSBub2RlIGRlZmluaXRpb24gKGFrYSwgbWFrZQorICAgICUgdGhlIHBkZmRlc3QpIGFmdGVyIGFueSBwYWdlIGJyZWFrLCBidXQgYmVmb3JlIHRoZSBhY3R1YWwgdGV4dCBoYXMKKyAgICAlIGJlZW4gdHlwZXNldC4gIElmIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIHBkZiBvdXRsaW5lIGlzIGFmdGVyIHRoZQorICAgICUgdGV4dCwgdGhlbiBqdW1waW5nIGZyb20gdGhlIG91dGxpbmUgbWF5IHdpbmQgdXAgd2l0aCB0aGUgdGV4dCBub3QKKyAgICAlIGJlaW5nIHZpc2libGUsIGZvciBpbnN0YW5jZSB1bmRlciBoaWdoIG1hZ25pZmljYXRpb24uCisgICAgXGRvbm9kZXJlZnsjMn0lCisgICAgJQorICAgICUgVHlwZXNldCB0aGUgYWN0dWFsIGhlYWRpbmcuCisgICAgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDAgXHRvbGVyYW5jZT01MDAwIFxwYXJpbmRlbnQ9MHB0IFxyYWdnZWRyaWdodAorICAgICAgICAgIFxoYW5naW5kZW50PVx3ZDAgXGNlbnRlcnBhcmFtZXRlcnNtYXliZQorICAgICAgICAgIFx1bmhib3gwICMxXHBhcn0lCisgIH0lCisgIFxub2JyZWFrXGJpZ3NraXAgJSBubyBwYWdlIGJyZWFrIGFmdGVyIGEgY2hhcHRlciB0aXRsZQorICBcbm9icmVhaworfQorCislIEBjZW50ZXJjaGFwIC0tIGNlbnRlcmVkIGFuZCB1bm51bWJlcmVkLgorXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBccmVsYXgKK1xkZWZcY2VudGVyY2hmcGxhaW4jMXt7JQorICBcZGVmXGNlbnRlcnBhcmFtZXRlcnNtYXliZXslCisgICAgXGFkdmFuY2VccmlnaHRza2lwIGJ5IDNccmlnaHRza2lwCisgICAgXGxlZnRza2lwID0gXHJpZ2h0c2tpcAorICAgIFxwYXJmaWxsc2tpcCA9IDBwdAorICB9JQorICBcY2hmcGxhaW57IzF9e1lub3RoaW5nfXt9JQorfX0KKworXENIQVBGcGxhaW4gJSBUaGUgZGVmYXVsdAorCislIEkgZG9uJ3QgdGhpbmsgdGhpcyBjaGFwdGVyIHN0eWxlIGlzIHN1cHBvcnRlZCBhbnkgbW9yZSwgc28gSSdtIG5vdAorJSB1cGRhdGluZyBpdCB3aXRoIHRoZSBuZXcgbm9kZXJlZiBzdHVmZi4gIFdlJ2xsIHNlZS4gIC0ta2FybCwgMTFhdWcwMy4KKyUgCitcZGVmXHVubmNoZm9wZW4gIzF7JQorXGNoYXBvZGRwYWdlIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCisgICAgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0XHJhZ2dlZHJpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgIFxybSAjMVxoZmlsbH19XGJpZ3NraXAgXHBhclxub2JyZWFrCit9CisKK1xkZWZcY2hmb3BlbiAjMSMye1xjaGFwb2RkcGFnZSB7XGNoYXBmb250cworXHZib3ggdG8gM2lue1x2ZmlsIFxoYm94IHRvXGhzaXple1xoZmlsICMyfSBcaGJveCB0b1xoc2l6ZXtcaGZpbCAjMX0gXHZmaWx9fSUKK1xwYXJccGVuYWx0eSA1MDAwICUKK30KKworXGRlZlxjZW50ZXJjaGZvcGVuICMxeyUKK1xjaGFwb2RkcGFnZSB7XGNoYXBmb250cyBcdmJveHtcaHlwaGVucGVuYWx0eT0xMDAwMFx0b2xlcmFuY2U9NTAwMAorICAgICAgICAgICAgICAgICAgICAgICBccGFyaW5kZW50PTBwdAorICAgICAgICAgICAgICAgICAgICAgICBcaGZpbGwge1xybSAjMX1caGZpbGx9fVxiaWdza2lwIFxwYXJcbm9icmVhaworfQorCitcZGVmXENIQVBGb3BlbnslCitcZ2xvYmFsXGxldFxjaGFwbWFjcm89XGNoZm9wZW4KK1xnbG9iYWxcbGV0XGNlbnRlcmNoYXBtYWNybz1cY2VudGVyY2hmb3Blbn0KKworCislIFNlY3Rpb24gdGl0bGVzLiAgVGhlc2UgbWFjcm9zIGNvbWJpbmUgdGhlIHNlY3Rpb24gbnVtYmVyIHBhcnRzIGFuZAorJSBjYWxsIHRoZSBnZW5lcmljIFxzZWN0aW9uaGVhZGluZyB0byBkbyB0aGUgcHJpbnRpbmcuCislIAorXG5ld3NraXBcc2VjaGVhZGluZ3NraXAKK1xkZWZcc2VjaGVhZGluZ2JyZWFre1xkb2JyZWFrIFxzZWNoZWFkaW5nc2tpcHstMTAwMH19CisKKyUgU3Vic2VjdGlvbiB0aXRsZXMuCitcbmV3c2tpcFxzdWJzZWNoZWFkaW5nc2tpcAorXGRlZlxzdWJzZWNoZWFkaW5nYnJlYWt7XGRvYnJlYWsgXHN1YnNlY2hlYWRpbmdza2lwey01MDB9fQorCislIFN1YnN1YnNlY3Rpb24gdGl0bGVzLgorXGRlZlxzdWJzdWJzZWNoZWFkaW5nc2tpcHtcc3Vic2VjaGVhZGluZ3NraXB9CitcZGVmXHN1YnN1YnNlY2hlYWRpbmdicmVha3tcc3Vic2VjaGVhZGluZ2JyZWFrfQorCisKKyUgUHJpbnQgYW55IHNpemUsIGFueSB0eXBlLCBzZWN0aW9uIHRpdGxlLgorJSAKKyUgIzEgaXMgdGhlIHRleHQsICMyIGlzIHRoZSBzZWN0aW9uIGxldmVsIChzZWMvc3Vic2VjL3N1YnN1YnNlYyksICMzIGlzCislIHRoZSBzZWN0aW9uIHR5cGUgZm9yIHhyZWZzIChZbnVtYmVyZWQsIFlub3RoaW5nLCBZYXBwZW5kaXgpLCAjNCBpcyB0aGUKKyUgc2VjdGlvbiBudW1iZXIuCislIAorXGRlZlxzZWN0aW9uaGVhZGluZyMxIzIjMyM0eyUKKyAgeyUKKyAgICAlIFN3aXRjaCB0byB0aGUgcmlnaHQgc2V0IG9mIGZvbnRzLgorICAgIFxjc25hbWUgIzJmb250c1xlbmRjc25hbWUgXHJtCisgICAgJQorICAgICUgSW5zZXJ0IHNwYWNlIGFib3ZlIHRoZSBoZWFkaW5nLgorICAgIFxjc25hbWUgIzJoZWFkaW5nYnJlYWtcZW5kY3NuYW1lCisgICAgJQorICAgICUgT25seSBpbnNlcnQgdGhlIHNwYWNlIGFmdGVyIHRoZSBudW1iZXIgaWYgd2UgaGF2ZSBhIHNlY3Rpb24gbnVtYmVyLgorICAgIFxkZWZcc2VjdGlvbmxldmVseyMyfSUKKyAgICBcZGVmXHRlbXB0eXBleyMzfSUKKyAgICAlCisgICAgXGlmeFx0ZW1wdHlwZVxZbm90aGluZ2tleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7fSUKKyAgICAgIFxkZWZcdG9jdHlwZXt1bm59JQorICAgICAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQorICAgIFxlbHNlXGlmeFx0ZW1wdHlwZVxZb21pdGZyb210b2NrZXl3b3JkCisgICAgICAlIGZvciBAaGVhZGluZ3MgLS0gbm8gc2VjdGlvbiBudW1iZXIsIGRvbid0IGluY2x1ZGUgaW4gdG9jLAorICAgICAgJSBhbmQgZG9uJ3QgcmVkZWZpbmUgXHRoaXNzZWN0aW9uLgorICAgICAgXHNldGJveDAgPSBcaGJveHt9JQorICAgICAgXGRlZlx0b2N0eXBle29taXR9JQorICAgICAgXGxldFxzZWN0aW9ubGV2ZWw9XGVtcHR5CisgICAgXGVsc2VcaWZ4XHRlbXB0eXBlXFlhcHBlbmRpeGtleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7IzRcZW5zcGFjZX0lCisgICAgICBcZGVmXHRvY3R5cGV7YXBwfSUKKyAgICAgIFxnZGVmXHRoaXNzZWN0aW9ueyMxfSUKKyAgICBcZWxzZQorICAgICAgXHNldGJveDAgPSBcaGJveHsjNFxlbnNwYWNlfSUKKyAgICAgIFxkZWZcdG9jdHlwZXtudW19JQorICAgICAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQorICAgIFxmaVxmaVxmaQorICAgICUKKyAgICAlIFdyaXRlIHRoZSB0b2MgZW50cnkgKGJlZm9yZSBcZG9ub2RlcmVmKS4gIFNlZSBjb21tZW50cyBpbiBcY2hmcGxhaW4uCisgICAgXHdyaXRldG9jZW50cnl7XHRvY3R5cGVcc2VjdGlvbmxldmVsfXsjMX17IzR9JQorICAgICUKKyAgICAlIFdyaXRlIHRoZSBub2RlIHJlZmVyZW5jZSAoPSBwZGYgZGVzdGluYXRpb24gZm9yIHBkZnRleCkuCisgICAgJSBBZ2Fpbiwgc2VlIGNvbW1lbnRzIGluIFxjaGZwbGFpbi4KKyAgICBcZG9ub2RlcmVmeyMzfSUKKyAgICAlCisgICAgJSBPdXRwdXQgdGhlIGFjdHVhbCBzZWN0aW9uIGhlYWRpbmcuCisgICAgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDAgXHRvbGVyYW5jZT01MDAwIFxwYXJpbmRlbnQ9MHB0IFxyYWdnZWRyaWdodAorICAgICAgICAgIFxoYW5naW5kZW50PVx3ZDAgICUgemVybyBpZiBubyBzZWN0aW9uIG51bWJlcgorICAgICAgICAgIFx1bmhib3gwICMxfSUKKyAgfSUKKyAgJSBBZGQgZXh0cmEgc3BhY2UgYWZ0ZXIgdGhlIGhlYWRpbmcgLS0gaGFsZiBvZiB3aGF0ZXZlciBjYW1lIGFib3ZlIGl0LgorICAlIERvbid0IGFsbG93IHN0cmV0Y2gsIHRob3VnaC4KKyAgXGtlcm4gLjUgXGNzbmFtZSAjMmhlYWRpbmdza2lwXGVuZGNzbmFtZQorICAlCisgICUgRG8gbm90IGxldCB0aGUga2VybiBiZSBhIHBvdGVudGlhbCBicmVha3BvaW50LCBhcyBpdCB3b3VsZCBiZSBpZiBpdAorICAlIHdhcyBmb2xsb3dlZCBieSBnbHVlLgorICBcbm9icmVhaworICAlCisgICUgV2UnbGwgYWxtb3N0IGNlcnRhaW5seSBzdGFydCBhIHBhcmFncmFwaCBuZXh0LCBzbyBkb24ndCBsZXQgdGhhdAorICAlIGdsdWUgYWNjdW11bGF0ZS4gIChOb3QgYSBicmVha3BvaW50IGJlY2F1c2UgaXQncyBwcmVjZWRlZCBieSBhCisgICUgZGlzY2FyZGFibGUgaXRlbS4pCisgIFx2c2tpcC1ccGFyc2tpcAorICAlCisgICUgVGhpcyBcbm9icmVhayBpcyBwdXJlbHkgc28gdGhlIGxhc3QgaXRlbSBvbiB0aGUgbGlzdCBpcyBhIFxwZW5hbHR5CisgICUgb2YgMTAwMDAuICBUaGlzIGlzIHNvIG90aGVyIGNvZGUsIGZvciBpbnN0YW5jZSBccGFyc2Vib2R5Y29tbW9uLCBjYW4KKyAgJSBjaGVjayBmb3IgYW5kIGF2b2lkIGFsbG93aW5nIGJyZWFrcG9pbnRzLiAgT3RoZXJ3aXNlLCBpdCB3b3VsZAorICAlIGluc2VydCBhIHZhbGlkIGJyZWFrcG9pbnQgYmV0d2VlbjoKKyAgJSAgIEBzZWN0aW9uIHNlYy13aGF0ZXZlcgorICAlICAgQGRlZmZuIGRlZi13aGF0ZXZlcgorICBcbm9icmVhaworfQorCisKK1xtZXNzYWdle3RvYyx9CislIFRhYmxlIG9mIGNvbnRlbnRzLgorXG5ld3dyaXRlXHRvY2ZpbGUKKworJSBXcml0ZSBhbiBlbnRyeSB0byB0aGUgdG9jIGZpbGUsIG9wZW5pbmcgaXQgaWYgbmVjZXNzYXJ5LgorJSBDYWxsZWQgZnJvbSBAY2hhcHRlciwgZXRjLiAgCislIAorJSBFeGFtcGxlIHVzYWdlOiBcd3JpdGV0b2NlbnRyeXtzZWN9e1NlY3Rpb24gTmFtZX17XHRoZVxjaGFwbm8uXHRoZVxzZWNub30KKyUgV2UgYXBwZW5kIHRoZSBjdXJyZW50IG5vZGUgbmFtZSAoaWYgYW55KSBhbmQgcGFnZSBudW1iZXIgYXMgYWRkaXRpb25hbAorJSBhcmd1bWVudHMgZm9yIHRoZSBce2NoYXAsc2VjLC4uLn1lbnRyeSBtYWNyb3Mgd2hpY2ggd2lsbCBldmVudHVhbGx5CislIHJlYWQgdGhpcy4gIFRoZSBub2RlIG5hbWUgaXMgdXNlZCBpbiB0aGUgcGRmIG91dGxpbmVzIGFzIHRoZQorJSBkZXN0aW5hdGlvbiB0byBqdW1wIHRvLgorJSAKKyUgV2Ugb3BlbiB0aGUgLnRvYyBmaWxlIGZvciB3cml0aW5nIGhlcmUgaW5zdGVhZCBvZiBhdCBAc2V0ZmlsZW5hbWUgKG9yCislIGFueSBvdGhlciBmaXhlZCB0aW1lKSBzbyB0aGF0IEBjb250ZW50cyBjYW4gYmUgYW55d2hlcmUgaW4gdGhlIGRvY3VtZW50LgorJSBCdXQgaWYgIzEgaXMgYG9taXQnLCB0aGVuIHdlIGRvbid0IGRvIGFueXRoaW5nLiAgVGhpcyBpcyB1c2VkIGZvciB0aGUKKyUgdGFibGUgb2YgY29udGVudHMgY2hhcHRlciBvcGVuaW5ncyB0aGVtc2VsdmVzLgorJQorXG5ld2lmXGlmdG9jZmlsZW9wZW5lZAorXGRlZlxvbWl0a2V5d29yZHtvbWl0fSUKKyUKK1xkZWZcd3JpdGV0b2NlbnRyeSMxIzIjM3slCisgIFxlZGVmXHdyaXRldG9jdHlwZXsjMX0lCisgIFxpZnhcd3JpdGV0b2N0eXBlXG9taXRrZXl3b3JkIFxlbHNlCisgICAgXGlmdG9jZmlsZW9wZW5lZFxlbHNlCisgICAgICBcaW1tZWRpYXRlXG9wZW5vdXRcdG9jZmlsZSA9IFxqb2JuYW1lLnRvYworICAgICAgXGdsb2JhbFx0b2NmaWxlb3BlbmVkdHJ1ZQorICAgIFxmaQorICAgICUKKyAgICBcaWZsaW5rcworICAgICAgXHRva3MwID0geyMyfSUKKyAgICAgIFx0b2tzMiA9IFxleHBhbmRhZnRlcntcbGFzdG5vZGV9JQorICAgICAgXGVkZWZcdGVtcHtcd3JpdGVcdG9jZmlsZXtccmVhbGJhY2tzbGFzaCAjMWVudHJ5e1x0aGVcdG9rczB9eyMzfSUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHRoZVx0b2tzMn17XG5vZXhwYW5kXGZvbGlvfX19JQorICAgICAgXHRlbXAKKyAgICBcZmkKKyAgXGZpCisgICUKKyAgJSBUZWxsIFxzaGlwb3V0IHRvIGNyZWF0ZSBhIHBkZiBkZXN0aW5hdGlvbiBvbiBlYWNoIHBhZ2UsIGlmIHdlJ3JlCisgICUgd3JpdGluZyBwZGYuICBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgdGFibGUgb2YgY29udGVudHMuICBXZSBjYW4ndAorICAlIGp1c3Qgd3JpdGUgb25lIG9uIGV2ZXJ5IHBhZ2UgYmVjYXVzZSB0aGUgdGl0bGUgcGFnZXMgYXJlIG51bWJlcmVkCisgICUgMSBhbmQgMiAodGhlIHBhZ2UgbnVtYmVycyBhcmVuJ3QgcHJpbnRlZCksIGFuZCBzbyBhcmUgdGhlIGZpcnN0CisgICUgdHdvIHBhZ2VzIG9mIHRoZSBkb2N1bWVudC4gIFRodXMsIHdlJ2QgaGF2ZSB0d28gZGVzdGluYXRpb25zIG5hbWVkCisgICUgYDEnLCBhbmQgdHdvIG5hbWVkIGAyJy4KKyAgXGlmcGRmIFxnbG9iYWxccGRmbWFrZXBhZ2VkZXN0dHJ1ZSBcZmkKK30KKworXG5ld3NraXBcY29udGVudHNyaWdodG1hcmdpbiBcY29udGVudHNyaWdodG1hcmdpbj0xaW4KK1xuZXdjb3VudFxzYXZlcGFnZW5vCitcbmV3Y291bnRcbGFzdG5lZ2F0aXZlcGFnZW5vIFxsYXN0bmVnYXRpdmVwYWdlbm8gPSAtMQorCislIFByZXBhcmUgdG8gcmVhZCB3aGF0IHdlJ3ZlIHdyaXR0ZW4gdG8gXHRvY2ZpbGUuCislCitcZGVmXHN0YXJ0Y29udGVudHMjMXslCisgICAlIElmIEBzZXRjaGFwdGVybmV3cGFnZSBvbiwgYW5kIEBoZWFkaW5ncyBkb3VibGUsIHRoZSBjb250ZW50cyBzaG91bGQKKyAgICUgc3RhcnQgb24gYW4gb2RkIHBhZ2UsIHVubGlrZSBjaGFwdGVycy4gIFRodXMsIHdlIG1haW50YWluCisgICAlIFxjb250ZW50c2FsaWdubWFjcm8gaW4gcGFyYWxsZWwgd2l0aCBccGFnZWFsaWdubWFjcm8uCisgICAlIEZyb206IFRvcmJqb3JuIEdyYW5sdW5kIDx0ZWdlQG1hdGVtYXRpay5zdS5zZT4KKyAgIFxjb250ZW50c2FsaWdubWFjcm8KKyAgIFxpbW1lZGlhdGVcY2xvc2VvdXRcdG9jZmlsZQorICAgJQorICAgJSBEb24ndCBuZWVkIHRvIHB1dCBgQ29udGVudHMnIG9yIGBTaG9ydCBDb250ZW50cycgaW4gdGhlIGhlYWRsaW5lLgorICAgJSBJdCBpcyBhYnVuZGFudGx5IGNsZWFyIHdoYXQgdGhleSBhcmUuCisgICBcZGVmXHRoaXNjaGFwdGVye30lCisgICBcY2hhcG1hY3JveyMxfXtZb21pdGZyb210b2N9e30lCisgICAlCisgICBcc2F2ZXBhZ2VubyA9IFxwYWdlbm8KKyAgIFxiZWdpbmdyb3VwICAgICAgICAgICAgICAgICAgJSBTZXQgdXAgdG8gaGFuZGxlIGNvbnRlbnRzIGZpbGVzIHByb3Blcmx5LgorICAgICAgXGNhdGNvZGVgXFw9MCAgXGNhdGNvZGVgXHs9MSAgXGNhdGNvZGVgXH09MiAgXGNhdGNvZGVgXEA9MTEKKyAgICAgICUgV2UgY2FuJ3QgZG8gdGhpcywgYmVjYXVzZSB0aGVuIGFuIGFjdHVhbCBeIGluIGEgc2VjdGlvbgorICAgICAgJSB0aXRsZSBmYWlscywgZS5nLiwgQGNoYXB0ZXIgXiAtLSBleHBvbmVudGlhdGlvbi4gIC0ta2FybCwgOWp1bDk3LgorICAgICAgJVxjYXRjb2RlYFxePTcgJSB0byBzZWUgXl5lNCBhcyBcImEgZXRjLiBqdWhhQHBpdWhhLnlkaS52dHQuZmkKKyAgICAgIFxyYWdnZWRib3R0b20gICAgICAgICAgICAgJSBXb3JyeSBtb3JlIGFib3V0IGJyZWFrcG9pbnRzIHRoYW4gdGhlIGJvdHRvbS4KKyAgICAgIFxhZHZhbmNlXGhzaXplIGJ5IC1cY29udGVudHNyaWdodG1hcmdpbiAlIERvbid0IHVzZSB0aGUgZnVsbCBsaW5lIGxlbmd0aC4KKyAgICAgICUKKyAgICAgICUgUm9tYW4gbnVtZXJhbHMgZm9yIHBhZ2UgbnVtYmVycy4KKyAgICAgIFxpZm51bSBccGFnZW5vPjAgXGdsb2JhbFxwYWdlbm8gPSBcbGFzdG5lZ2F0aXZlcGFnZW5vIFxmaQorfQorCisKKyUgTm9ybWFsIChsb25nKSB0b2MuCitcZGVmXGNvbnRlbnRzeyUKKyAgIFxzdGFydGNvbnRlbnRze1xwdXR3b3JkVE9DfSUKKyAgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgICBcaWZlb2YgMSBcZWxzZQorICAgICAgIFxjbG9zZWluIDEKKyAgICAgICBcaW5wdXQgXGpvYm5hbWUudG9jCisgICAgIFxmaQorICAgICBcdmZpbGwgXGVqZWN0CisgICAgIFxjb250ZW50c2FsaWdubWFjcm8gJSBpbiBjYXNlIEBzZXRjaGFwdGVybmV3cGFnZSBvZGQgaXMgaW4gZWZmZWN0CisgICAgIFxwZGZtYWtlb3V0bGluZXMKKyAgIFxlbmRncm91cAorICAgXGxhc3RuZWdhdGl2ZXBhZ2VubyA9IFxwYWdlbm8KKyAgIFxnbG9iYWxccGFnZW5vID0gXHNhdmVwYWdlbm8KK30KKworJSBBbmQganVzdCB0aGUgY2hhcHRlcnMuCitcZGVmXHN1bW1hcnljb250ZW50c3slCisgICBcc3RhcnRjb250ZW50c3tccHV0d29yZFNob3J0VE9DfSUKKyAgICAgICUKKyAgICAgIFxsZXRcbnVtY2hhcGVudHJ5ID0gXHNob3J0Y2hhcGVudHJ5CisgICAgICBcbGV0XGFwcGVudHJ5ID0gXHNob3J0Y2hhcGVudHJ5CisgICAgICBcbGV0XHVubmNoYXBlbnRyeSA9IFxzaG9ydHVubmNoYXBlbnRyeQorICAgICAgJSBXZSB3YW50IGEgdHJ1ZSByb21hbiBoZXJlIGZvciB0aGUgcGFnZSBudW1iZXJzLgorICAgICAgXHNlY2ZvbnRzCisgICAgICBcbGV0XHJtPVxzaG9ydGNvbnRybSBcbGV0XGJmPVxzaG9ydGNvbnRiZgorICAgICAgXGxldFxzbD1cc2hvcnRjb250c2wgXGxldFx0dD1cc2hvcnRjb250dHQKKyAgICAgIFxybQorICAgICAgXGh5cGhlbnBlbmFsdHkgPSAxMDAwMAorICAgICAgXGFkdmFuY2VcYmFzZWxpbmVza2lwIGJ5IDFwdCAlIE9wZW4gaXQgdXAgYSBsaXR0bGUuCisgICAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0e30KKyAgICAgIFxsZXRcYXBwc2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcdW5uc2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcbnVtc3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcYXBwc3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcdW5uc3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcbnVtc3Vic3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcYXBwc3Vic3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxsZXRcdW5uc3Vic3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICAgIFxvcGVuaW4gMSBcam9ibmFtZS50b2MKKyAgICAgIFxpZmVvZiAxIFxlbHNlCisgICAgICAgIFxjbG9zZWluIDEKKyAgICAgICAgXGlucHV0IFxqb2JuYW1lLnRvYworICAgICAgXGZpCisgICAgIFx2ZmlsbCBcZWplY3QKKyAgICAgXGNvbnRlbnRzYWxpZ25tYWNybyAlIGluIGNhc2UgQHNldGNoYXB0ZXJuZXdwYWdlIG9kZCBpcyBpbiBlZmZlY3QKKyAgIFxlbmRncm91cAorICAgXGxhc3RuZWdhdGl2ZXBhZ2VubyA9IFxwYWdlbm8KKyAgIFxnbG9iYWxccGFnZW5vID0gXHNhdmVwYWdlbm8KK30KK1xsZXRcc2hvcnRjb250ZW50cyA9IFxzdW1tYXJ5Y29udGVudHMKKworJSBUeXBlc2V0IHRoZSBsYWJlbCBmb3IgYSBjaGFwdGVyIG9yIGFwcGVuZGl4IGZvciB0aGUgc2hvcnQgY29udGVudHMuCislIFRoZSBhcmcgaXMsIGUuZy4sIGBBJyBmb3IgYW4gYXBwZW5kaXgsIG9yIGAzJyBmb3IgYSBjaGFwdGVyLgorJQorXGRlZlxzaG9ydGNoYXBsYWJlbCMxeyUKKyAgJSBUaGlzIHNwYWNlIHNob3VsZCBiZSBlbm91Z2gsIHNpbmNlIGEgc2luZ2xlIG51bWJlciBpcyAuNWVtLCBhbmQgdGhlCisgICUgd2lkZXN0IGxldHRlciAoTSkgaXMgMWVtLCBhdCBsZWFzdCBpbiB0aGUgQ29tcHV0ZXIgTW9kZXJuIGZvbnRzLgorICAlIEJ1dCB1c2UgXGhzcyBqdXN0IGluIGNhc2UuCisgICUgKFRoaXMgc3BhY2UgZG9lc24ndCBpbmNsdWRlIHRoZSBleHRyYSBzcGFjZSB0aGF0IGdldHMgYWRkZWQgYWZ0ZXIKKyAgJSB0aGUgbGFiZWw7IHRoYXQgZ2V0cyBwdXQgaW4gYnkgXHNob3J0Y2hhcGVudHJ5IGFib3ZlLikKKyAgJSAKKyAgJSBXZSdkIGxpa2UgdG8gcmlnaHQtanVzdGlmeSBjaGFwdGVyIG51bWJlcnMsIGJ1dCB0aGF0IGxvb2tzIHN0cmFuZ2UKKyAgJSB3aXRoIGFwcGVuZGl4IGxldHRlcnMuICBBbmQgcmlnaHQtanVzdGlmeWluZyBudW1iZXJzIGFuZAorICAlIGxlZnQtanVzdGlmeWluZyBsZXR0ZXJzIGxvb2tzIHN0cmFuZ2Ugd2hlbiB0aGVyZSBpcyBsZXNzIHRoYW4gMTAKKyAgJSBjaGFwdGVycy4gIEhhdmUgdG8gcmVhZCB0aGUgd2hvbGUgdG9jIG9uY2UgdG8ga25vdyBob3cgbWFueSBjaGFwdGVycworICAlIHRoZXJlIGFyZSBiZWZvcmUgZGVjaWRpbmcgLi4uCisgIFxoYm94IHRvIDFlbXsjMVxoc3N9JQorfQorCislIFRoZXNlIG1hY3JvcyBnZW5lcmF0ZSBpbmRpdmlkdWFsIGVudHJpZXMgaW4gdGhlIHRhYmxlIG9mIGNvbnRlbnRzLgorJSBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNoYXB0ZXIgb3Igc2VjdGlvbiBuYW1lLgorJSBUaGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgcGFnZSBudW1iZXIuCislIFRoZSBhcmd1bWVudHMgaW4gYmV0d2VlbiBhcmUgdGhlIGNoYXB0ZXIgbnVtYmVyLCBzZWN0aW9uIG51bWJlciwgLi4uCisKKyUgQ2hhcHRlcnMsIGluIHRoZSBtYWluIGNvbnRlbnRzLgorXGRlZlxudW1jaGFwZW50cnkjMSMyIzMjNHtcZG9jaGFwZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjNH19CislCislIENoYXB0ZXJzLCBpbiB0aGUgc2hvcnQgdG9jLgorJSBTZWUgY29tbWVudHMgaW4gXGRvY2hhcGVudHJ5IHJlIHZib3ggYW5kIHJlbGF0ZWQgc2V0dGluZ3MuCitcZGVmXHNob3J0Y2hhcGVudHJ5IzEjMiMzIzR7JQorICBcdG9jZW50cnl7XHNob3J0Y2hhcGxhYmVseyMyfVxsYWJlbHNwYWNlICMxfXtcZG9zaG9ydHBhZ2Vub1xiZ3JvdXAjNFxlZ3JvdXB9JQorfQorCislIEFwcGVuZGljZXMsIGluIHRoZSBtYWluIGNvbnRlbnRzLgorJSBOZWVkIHRoZSB3b3JkIEFwcGVuZGl4LCBhbmQgYSBmaXhlZC1zaXplIGJveC4KKyUgCitcZGVmXGFwcGVuZGl4Ym94IzF7JQorICAlIFdlIHVzZSBNIHNpbmNlIGl0J3MgcHJvYmFibHkgdGhlIHdpZGVzdCBsZXR0ZXIuCisgIFxzZXRib3gwID0gXGhib3h7XHB1dHdvcmRBcHBlbmRpeHt9IE19JQorICBcaGJveCB0byBcd2Qwe1xwdXR3b3JkQXBwZW5kaXh7fSAjMVxoc3N9fQorJQorXGRlZlxhcHBlbnRyeSMxIzIjMyM0e1xkb2NoYXBlbnRyeXtcYXBwZW5kaXhib3h7IzJ9XGxhYmVsc3BhY2UjMX17IzR9fQorCislIFVubnVtYmVyZWQgY2hhcHRlcnMuCitcZGVmXHVubmNoYXBlbnRyeSMxIzIjMyM0e1xkb2NoYXBlbnRyeXsjMX17IzR9fQorXGRlZlxzaG9ydHVubmNoYXBlbnRyeSMxIzIjMyM0e1x0b2NlbnRyeXsjMX17XGRvc2hvcnRwYWdlbm9cYmdyb3VwIzRcZWdyb3VwfX0KKworJSBTZWN0aW9ucy4KK1xkZWZcbnVtc2VjZW50cnkjMSMyIzMjNHtcZG9zZWNlbnRyeXsjMlxsYWJlbHNwYWNlIzF9eyM0fX0KK1xsZXRcYXBwc2VjZW50cnk9XG51bXNlY2VudHJ5CitcZGVmXHVubnNlY2VudHJ5IzEjMiMzIzR7XGRvc2VjZW50cnl7IzF9eyM0fX0KKworJSBTdWJzZWN0aW9ucy4KK1xkZWZcbnVtc3Vic2VjZW50cnkjMSMyIzMjNHtcZG9zdWJzZWNlbnRyeXsjMlxsYWJlbHNwYWNlIzF9eyM0fX0KK1xsZXRcYXBwc3Vic2VjZW50cnk9XG51bXN1YnNlY2VudHJ5CitcZGVmXHVubnN1YnNlY2VudHJ5IzEjMiMzIzR7XGRvc3Vic2VjZW50cnl7IzF9eyM0fX0KKworJSBBbmQgc3Vic3Vic2VjdGlvbnMuCitcZGVmXG51bXN1YnN1YnNlY2VudHJ5IzEjMiMzIzR7XGRvc3Vic3Vic2VjZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjNH19CitcbGV0XGFwcHN1YnN1YnNlY2VudHJ5PVxudW1zdWJzdWJzZWNlbnRyeQorXGRlZlx1bm5zdWJzdWJzZWNlbnRyeSMxIzIjMyM0e1xkb3N1YnN1YnNlY2VudHJ5eyMxfXsjNH19CisKKyUgVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB2YXJpb3VzIGxldmVscy4KK1xuZXdkaW1lblx0b2NpbmRlbnQgXHRvY2luZGVudCA9IDJwYworCislIE5vdyBmb3IgdGhlIGFjdHVhbCB0eXBlc2V0dGluZy4gSW4gYWxsIHRoZXNlLCAjMSBpcyB0aGUgdGV4dCBhbmQgIzIgaXMgdGhlCislIHBhZ2UgbnVtYmVyLgorJQorJSBJZiB0aGUgdG9jIGhhcyB0byBiZSBicm9rZW4gb3ZlciBwYWdlcywgd2Ugd2FudCBpdCB0byBiZSBhdCBjaGFwdGVycworJSBpZiBhdCBhbGwgcG9zc2libGU7IGhlbmNlIHRoZSBccGVuYWx0eS4KK1xkZWZcZG9jaGFwZW50cnkjMSMyeyUKKyAgIFxwZW5hbHR5LTMwMCBcdnNraXAxXGJhc2VsaW5lc2tpcCBwbHVzLjMzXGJhc2VsaW5lc2tpcCBtaW51cy4yNVxiYXNlbGluZXNraXAKKyAgIFxiZWdpbmdyb3VwCisgICAgIFxjaGFwZW50cnlmb250cworICAgICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorICAgXGVuZGdyb3VwCisgICBcbm9icmVha1x2c2tpcCAuMjVcYmFzZWxpbmVza2lwIHBsdXMuMVxiYXNlbGluZXNraXAKK30KKworXGRlZlxkb3NlY2VudHJ5IzEjMntcYmVnaW5ncm91cAorICBcc2VjZW50cnlmb250cyBcbGVmdHNraXA9XHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCitcZGVmXGRvc3Vic2VjZW50cnkjMSMye1xiZWdpbmdyb3VwCisgIFxzdWJzZWNlbnRyeWZvbnRzIFxsZWZ0c2tpcD0yXHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCitcZGVmXGRvc3Vic3Vic2VjZW50cnkjMSMye1xiZWdpbmdyb3VwCisgIFxzdWJzdWJzZWNlbnRyeWZvbnRzIFxsZWZ0c2tpcD0zXHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCislIEZpbmFsIHR5cGVzZXR0aW5nIG9mIGEgdG9jIGVudHJ5OyB3ZSB1c2UgdGhlIHNhbWUgXGVudHJ5IG1hY3JvIGFzIGZvcgorJSB0aGUgaW5kZXggZW50cmllcywgYnV0IHdlIHdhbnQgdG8gc3VwcHJlc3MgaHlwaGVuYXRpb24gaGVyZS4gIChXZQorJSBjYW4ndCBkbyB0aGF0IGluIHRoZSBcZW50cnkgbWFjcm8sIHNpbmNlIGluZGV4IGVudHJpZXMgbWlnaHQgY29uc2lzdAorJSBvZiBoeXBoZW5hdGVkLWlkZW50aWZpZXJzLXRoYXQtZG8tbm90LWZpdC1vbi1hLWxpbmUtYW5kLW5vdGhpbmctZWxzZS4pCitcZGVmXHRvY2VudHJ5IzEjMntcYmVnaW5ncm91cAorICBcdnNraXAgMHB0IHBsdXMxcHQgJSBhbGxvdyBhIGxpdHRsZSBzdHJldGNoIGZvciB0aGUgc2FrZSBvZiBuaWNlIHBhZ2UgYnJlYWtzCisgICUgRG8gbm90IHVzZSBcdHVybm9mZmFjdGl2ZSBpbiB0aGVzZSBhcmd1bWVudHMuICBTaW5jZSB0aGUgdG9jIGlzCisgICUgdHlwZXNldCBpbiBjbXIsIGNoYXJhY3RlcnMgc3VjaCBhcyBfIHdvdWxkIGNvbWUgb3V0IHdyb25nOyB3ZQorICAlIGhhdmUgdG8gZG8gdGhlIHVzdWFsIHRyYW5zbGF0aW9uIHRyaWNrcy4KKyAgXGVudHJ5eyMxfXsjMn0lCitcZW5kZ3JvdXB9CisKKyUgU3BhY2UgYmV0d2VlbiBjaGFwdGVyIChvciB3aGF0ZXZlcikgbnVtYmVyIGFuZCB0aGUgdGl0bGUuCitcZGVmXGxhYmVsc3BhY2V7XGhza2lwMWVtIFxyZWxheH0KKworXGRlZlxkb3BhZ2VubyMxe3tccm0gIzF9fQorXGRlZlxkb3Nob3J0cGFnZW5vIzF7e1xybSAjMX19CisKK1xkZWZcY2hhcGVudHJ5Zm9udHN7XHNlY2ZvbnRzIFxybX0KK1xkZWZcc2VjZW50cnlmb250c3tcdGV4dGZvbnRzfQorXGRlZlxzdWJzZWNlbnRyeWZvbnRze1x0ZXh0Zm9udHN9CitcZGVmXHN1YnN1YnNlY2VudHJ5Zm9udHN7XHRleHRmb250c30KKworCitcbWVzc2FnZXtlbnZpcm9ubWVudHMsfQorJSBAZm9vIC4uLiBAZW5kIGZvby4KKworJSBAcG9pbnR7fSwgQHJlc3VsdHt9LCBAZXhwYW5zaW9ue30sIEBwcmludHt9LCBAZXF1aXZ7fS4KKyUKKyUgU2luY2UgdGhlc2UgY2hhcmFjdGVycyBhcmUgdXNlZCBpbiBleGFtcGxlcywgaXQgc2hvdWxkIGJlIGFuIGV2ZW4gbnVtYmVyIG9mCislIFx0dCB3aWR0aHMuIEVhY2ggXHR0IGNoYXJhY3RlciBpcyAxZW4sIHNvIHR3byBtYWtlcyBpdCAxZW0uCislCitcZGVmXHBvaW50eyRcc3RhciR9CitcZGVmXHJlc3VsdHtcbGVhdmV2bW9kZVxyYWlzZS4xNWV4XGhib3ggdG8gMWVte1xoZmlsJFxSaWdodGFycm93JFxoZmlsfX0KK1xkZWZcZXhwYW5zaW9ue1xsZWF2ZXZtb2RlXHJhaXNlLjFleFxoYm94IHRvIDFlbXtcaGZpbCRcbWFwc3RvJFxoZmlsfX0KK1xkZWZccHJpbnR7XGxlYXZldm1vZGVcbG93ZXIuMWV4XGhib3ggdG8gMWVte1xoZmlsJFxkYXNodiRcaGZpbH19CitcZGVmXGVxdWl2e1xsZWF2ZXZtb2RlXGxvd2VyLjFleFxoYm94IHRvIDFlbXtcaGZpbCRccHRleGVxdWl2JFxoZmlsfX0KKworJSBUaGUgQGVycm9ye30gY29tbWFuZC4KKyUgQWRhcHRlZCBmcm9tIHRoZSBUZVhib29rJ3MgXGJveGl0LgorJQorXG5ld2JveFxlcnJvcmJveAorJQore1x0ZW50dCBcZ2xvYmFsXGRpbWVuMCA9IDNlbX0lIFdpZHRoIG9mIHRoZSBib3guCitcZGltZW4yID0gLjU1cHQgJSBUaGlja25lc3Mgb2YgcnVsZXMKKyUgVGhlIHRleHQuIChgcicgaXMgb3BlbiBvbiB0aGUgcmlnaHQsIGBlJyBzb21ld2hhdCBsZXNzIHNvIG9uIHRoZSBsZWZ0LikKK1xzZXRib3gwID0gXGhib3h7XGtlcm4tLjc1cHQgXHRlbnNmIGVycm9yXGtlcm4tMS41cHR9CislCitcZ2xvYmFsXHNldGJveFxlcnJvcmJveD1caGJveCB0byBcZGltZW4we1xoZmlsCisgICBcaHNpemUgPSBcZGltZW4wIFxhZHZhbmNlXGhzaXplIGJ5IC01LjhwdCAlIFNwYWNlIHRvIGxlZnQrcmlnaHQuCisgICBcYWR2YW5jZVxoc2l6ZSBieSAtMlxkaW1lbjIgJSBSdWxlcy4KKyAgIFx2Ym94eworICAgICAgXGhydWxlIGhlaWdodFxkaW1lbjIKKyAgICAgIFxoYm94e1x2cnVsZSB3aWR0aFxkaW1lbjIgXGtlcm4zcHQgICAgICAgICAgJSBTcGFjZSB0byBsZWZ0IG9mIHRleHQuCisgICAgICAgICBcdnRvcHtca2VybjIuNHB0IFxib3gwIFxrZXJuMi40cHR9JSBTcGFjZSBhYm92ZS9iZWxvdy4KKyAgICAgICAgIFxrZXJuM3B0XHZydWxlIHdpZHRoXGRpbWVuMn0lIFNwYWNlIHRvIHJpZ2h0LgorICAgICAgXGhydWxlIGhlaWdodFxkaW1lbjJ9CisgICAgXGhmaWx9CislCitcZGVmXGVycm9ye1xsZWF2ZXZtb2RlXGxvd2VyLjdleFxjb3B5XGVycm9yYm94fQorCislIEB0ZXggLi4uIEBlbmQgdGV4ICAgIGVzY2FwZXMgaW50byByYXcgVGV4IHRlbXBvcmFyaWx5LgorJSBPbmUgZXhjZXB0aW9uOiBAIGlzIHN0aWxsIGFuIGVzY2FwZSBjaGFyYWN0ZXIsIHNvIHRoYXQgQGVuZCB0ZXggd29ya3MuCislIEJ1dCBcQCBvciBAQCB3aWxsIGdldCBhIHBsYWluIHRleCBAIGNoYXJhY3Rlci4KKworXGRlZlx0ZXh7XGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGUgYFxcPTAgXGNhdGNvZGUgYFx7PTEgXGNhdGNvZGUgYFx9PTIKKyAgXGNhdGNvZGUgYFwkPTMgXGNhdGNvZGUgYFwmPTQgXGNhdGNvZGUgYFwjPTYKKyAgXGNhdGNvZGUgYFxePTcgXGNhdGNvZGUgYFxfPTggXGNhdGNvZGUgYFx+PVxhY3RpdmUgXGxldH49XHRpZQorICBcY2F0Y29kZSBgXCU9MTQKKyAgXGNhdGNvZGUgYFwrPVxvdGhlcgorICBcY2F0Y29kZSBgXCI9XG90aGVyCisgIFxjYXRjb2RlIGBcPT1cb3RoZXIKKyAgXGNhdGNvZGUgYFx8PVxvdGhlcgorICBcY2F0Y29kZSBgXDw9XG90aGVyCisgIFxjYXRjb2RlIGBcPj1cb3RoZXIKKyAgXGVzY2FwZWNoYXI9YFxcCisgICUKKyAgXGxldFxiPVxwdGV4YgorICBcbGV0XGJ1bGxldD1ccHRleGJ1bGxldAorICBcbGV0XGM9XHB0ZXhjCisgIFxsZXRcLD1ccHRleGNvbW1hCisgIFxsZXRcLj1ccHRleGRvdAorICBcbGV0XGRvdHM9XHB0ZXhkb3RzCisgIFxsZXRcZXF1aXY9XHB0ZXhlcXVpdgorICBcbGV0XCE9XHB0ZXhleGNsYW0KKyAgXGxldFxpPVxwdGV4aQorICBcbGV0XGluZGVudD1ccHRleGluZGVudAorICBcbGV0XG5vaW5kZW50PVxwdGV4bm9pbmRlbnQKKyAgXGxldFx7PVxwdGV4bGJyYWNlCisgIFxsZXRcKz1cdGFiYWxpZ24KKyAgXGxldFx9PVxwdGV4cmJyYWNlCisgIFxsZXRcLz1ccHRleHNsYXNoCisgIFxsZXRcKj1ccHRleHN0YXIKKyAgXGxldFx0PVxwdGV4dAorICAlCisgIFxkZWZcZW5kbGRvdHN7XG1hdGhpbm5lcntcbGRvdHNcbGRvdHNcbGRvdHNcbGRvdHN9fSUKKyAgXGRlZlxlbmRkb3Rze1xyZWxheFxpZm1tb2RlXGVuZGxkb3RzXGVsc2UkXG1hdGhzdXJyb3VuZD0wcHQgXGVuZGxkb3RzXCwkXGZpfSUKKyAgXGRlZlxAe0B9JQorXGxldFxFdGV4PVxlbmRncm91cH0KKworJSBEZWZpbmUgQGxpc3AgLi4uIEBlbmQgbGlzcC4KKyUgQGxpc3AgZG9lcyBhIFxiZWdpbmdyb3VwIHNvIGl0IGNhbiByZWJpbmQgdGhpbmdzLAorJSBpbmNsdWRpbmcgdGhlIGRlZmluaXRpb24gb2YgQGVuZCBsaXNwICh3aGljaCBub3JtYWxseSBpcyBlcnJvbmVvdXMpLgorCislIEFtb3VudCB0byBuYXJyb3cgdGhlIG1hcmdpbnMgYnkgZm9yIEBsaXNwLgorXG5ld3NraXBcbGlzcG5hcnJvd2luZyBcbGlzcG5hcnJvd2luZz0wLjRpbgorCislIFRoaXMgaXMgdGhlIGRlZmluaXRpb24gdGhhdCBeXk0gZ2V0cyBpbnNpZGUgQGxpc3AsIEBleGFtcGxlLCBhbmQgb3RoZXIKKyUgc3VjaCBlbnZpcm9ubWVudHMuICBcbnVsbCBpcyBiZXR0ZXIgdGhhbiBhIHNwYWNlLCBzaW5jZSBpdCBkb2Vzbid0CislIGhhdmUgYW55IHdpZHRoLgorXGRlZlxsaXNwcGFye1xudWxsXGVuZGdyYWZ9CisKKyUgTWFrZSBlYWNoIHNwYWNlIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQgcHJvZHVjZSBhIG5vcm1hbCBpbnRlcndvcmQKKyUgc3BhY2UgaW4gdGhlIG91dHB1dC4gIERvbid0IGFsbG93IGEgbGluZSBicmVhayBhdCB0aGlzIHNwYWNlLCBhcyB0aGlzCislIGlzIHVzZWQgb25seSBpbiBlbnZpcm9ubWVudHMgbGlrZSBAZXhhbXBsZSwgd2hlcmUgZWFjaCBsaW5lIG9mIGlucHV0CislIHNob3VsZCBwcm9kdWNlIGEgbGluZSBvZiBvdXRwdXQgYW55d2F5LgorJQore1xvYmV5c3BhY2VzICUKK1xnZGVmXHNlcHNwYWNlc3tcb2JleXNwYWNlc1xsZXQgPVx0aWV9fQorCislIERlZmluZSBcb2JleWVkc3BhY2UgdG8gYmUgb3VyIGFjdGl2ZSBzcGFjZSwgd2hhdGV2ZXIgaXQgaXMuICBUaGlzIGlzCislIGZvciB1c2UgaW4gXHBhcnNlYXJnLgore1xzZXBzcGFjZXMlCitcZ2xvYmFsXGxldFxvYmV5ZWRzcGFjZT0gfQorCislIFRoaXMgc3BhY2UgaXMgYWx3YXlzIHByZXNlbnQgYWJvdmUgYW5kIGJlbG93IGVudmlyb25tZW50cy4KK1xuZXdza2lwXGVudnNraXBhbW91bnQgXGVudnNraXBhbW91bnQgPSAwcHQKKworJSBNYWtlIHNwYWNpbmcgYW5kIGJlbG93IGVudmlyb25tZW50IHN5bW1ldHJpY2FsLiAgV2UgdXNlIFxwYXJza2lwIGhlcmUKKyUgdG8gaGVscCBpbiBkb2luZyB0aGF0LCBzaW5jZSBpbiBAZXhhbXBsZS1saWtlIGVudmlyb25tZW50cyBccGFyc2tpcAorJSBpcyByZXNldCB0byB6ZXJvOyB0aHVzIHRoZSBcYWZ0ZXJlbnZicmVhayBpbnNlcnRzIG5vIHNwYWNlIC0tIGJ1dCB0aGUKKyUgc3RhcnQgb2YgdGhlIG5leHQgcGFyYWdyYXBoIHdpbGwgaW5zZXJ0IFxwYXJza2lwLgorJQorXGRlZlxhYm92ZWVudmJyZWFre3slCisgICUgPTEwMDAwIGluc3RlYWQgb2YgPDEwMDAwIGJlY2F1c2Ugb2YgYSBzcGVjaWFsIGNhc2UgaW4gXGl0ZW16enosIHEudi4KKyAgXGlmbnVtIFxsYXN0cGVuYWx0eT0xMDAwMCBcZWxzZQorICAgIFxhZHZhbmNlXGVudnNraXBhbW91bnQgYnkgXHBhcnNraXAKKyAgICBcZW5kZ3JhZgorICAgIFxpZmRpbVxsYXN0c2tpcDxcZW52c2tpcGFtb3VudAorICAgICAgXHJlbW92ZWxhc3Rza2lwCisgICAgICAlIGl0J3Mgbm90IGEgZ29vZCBwbGFjZSB0byBicmVhayBpZiB0aGUgbGFzdCBwZW5hbHR5IHdhcyBcbm9icmVhaworICAgICAgJSBvciBiZXR0ZXIgLi4uCisgICAgICBcaWZudW1cbGFzdHBlbmFsdHk+MTAwMDAgXGVsc2UgXHBlbmFsdHktNTAgXGZpCisgICAgICBcdnNraXBcZW52c2tpcGFtb3VudAorICAgIFxmaQorICBcZmkKK319CisKK1xsZXRcYWZ0ZXJlbnZicmVhayA9IFxhYm92ZWVudmJyZWFrCisKKyUgXG5vbmFycm93aW5nIGlzIGEgZmxhZy4gIElmICJzZXQiLCBAbGlzcCBldGMgZG9uJ3QgbmFycm93IG1hcmdpbnMuCitcbGV0XG5vbmFycm93aW5nPVxyZWxheAorCislIEBjYXJ0b3VjaGUgLi4uIEBlbmQgY2FydG91Y2hlOiBkcmF3IHJlY3RhbmdsZSB3L3JvdW5kZWQgY29ybmVycyBhcm91bmQKKyUgZW52aXJvbm1lbnQgY29udGVudHMuCitcZm9udFxjaXJjbGU9bGNpcmNsZTEwCitcbmV3ZGltZW5cY2lyY3RoaWNrCitcbmV3ZGltZW5cY2FydG91dGVyXG5ld2RpbWVuXGNhcnRpbm5lcgorXG5ld3NraXBcbm9ybWJza2lwXG5ld3NraXBcbm9ybXBza2lwXG5ld3NraXBcbm9ybWxza2lwCitcY2lyY3RoaWNrPVxmb250ZGltZW44XGNpcmNsZQorJQorXGRlZlxjdGx7e1xjaXJjbGVcY2hhcicwMTNcaHNraXAgLTZwdH19JSA2cHQgZnJvbSBwbCBmaWxlOiAxLzJjaGFyd2lkdGgKK1xkZWZcY3Rye3tcaHNraXAgNnB0XGNpcmNsZVxjaGFyJzAxMH19CitcZGVmXGNibHt7XGNpcmNsZVxjaGFyJzAxMlxoc2tpcCAtNnB0fX0KK1xkZWZcY2Jye3tcaHNraXAgNnB0XGNpcmNsZVxjaGFyJzAxMX19CitcZGVmXGNhcnR0b3B7XGhib3ggdG8gXGNhcnRvdXRlcntcaHNraXBcbHNraXAKKyAgICAgICAgXGN0bFxsZWFkZXJzXGhydWxlIGhlaWdodFxjaXJjdGhpY2tcaGZpbFxjdHIKKyAgICAgICAgXGhza2lwXHJza2lwfX0KK1xkZWZcY2FydGJvdHtcaGJveCB0byBcY2FydG91dGVye1xoc2tpcFxsc2tpcAorICAgICAgICBcY2JsXGxlYWRlcnNcaHJ1bGUgaGVpZ2h0XGNpcmN0aGlja1xoZmlsXGNicgorICAgICAgICBcaHNraXBccnNraXB9fQorJQorXG5ld3NraXBcbHNraXBcbmV3c2tpcFxyc2tpcAorCitcZGVmXGNhcnRvdWNoZXslCitccGFyICAlIGNhbid0IGJlIGluIHRoZSBtaWRzdCBvZiBhIHBhcmFncmFwaC4KK1xiZWdpbmdyb3VwCisgICAgICAgIFxsc2tpcD1cbGVmdHNraXAgXHJza2lwPVxyaWdodHNraXAKKyAgICAgICAgXGxlZnRza2lwPTBwdFxyaWdodHNraXA9MHB0ICV3ZSB3YW50IHRoZXNlICpvdXRzaWRlKi4KKyAgICAgICAgXGNhcnRpbm5lcj1caHNpemUgXGFkdmFuY2VcY2FydGlubmVyIGJ5LVxsc2tpcAorICAgICAgICAgICAgICAgICAgICAgICAgICBcYWR2YW5jZVxjYXJ0aW5uZXIgYnktXHJza2lwCisgICAgICAgIFxjYXJ0b3V0ZXI9XGhzaXplCisgICAgICAgIFxhZHZhbmNlXGNhcnRvdXRlciBieSAxOC40cHQgJSBhbGxvdyBmb3IgM3B0IGtlcm5zIG9uIGVpdGhlcgorJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGUsIGFuZCBmb3IgNnB0IHdhc3RlIGZyb20KKyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIGNvcm5lciBjaGFyLCBhbmQgcnVsZSB0aGlja25lc3MKKyAgICAgICAgXG5vcm1ic2tpcD1cYmFzZWxpbmVza2lwIFxub3JtcHNraXA9XHBhcnNraXAgXG5vcm1sc2tpcD1cbGluZXNraXAKKyAgICAgICAgJSBGbGFnIHRvIHRlbGwgQGxpc3AsIGV0Yy4sIG5vdCB0byBuYXJyb3cgbWFyZ2luLgorICAgICAgICBcbGV0XG5vbmFycm93aW5nPVxjb21tZW50CisgICAgICAgIFx2Ym94XGJncm91cAorICAgICAgICAgICAgICAgIFxiYXNlbGluZXNraXA9MHB0XHBhcnNraXA9MHB0XGxpbmVza2lwPTBwdAorICAgICAgICAgICAgICAgIFxjYXJ0dG9wCisgICAgICAgICAgICAgICAgXGhib3hcYmdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICBcaHNraXBcbHNraXAKKyAgICAgICAgICAgICAgICAgICAgICAgIFx2cnVsZVxrZXJuM3B0CisgICAgICAgICAgICAgICAgICAgICAgICBcdmJveFxiZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGhzaXplPVxjYXJ0aW5uZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGtlcm4zcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2luZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcYmFzZWxpbmVza2lwPVxub3JtYnNraXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbGluZXNraXA9XG5vcm1sc2tpcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxwYXJza2lwPVxub3JtcHNraXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdnNraXAgLVxwYXJza2lwCitcZGVmXEVjYXJ0b3VjaGV7JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZW5kZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGtlcm4zcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgIFxrZXJuM3B0XHZydWxlCisgICAgICAgICAgICAgICAgICAgICAgICBcaHNraXBccnNraXAKKyAgICAgICAgICAgICAgICBcZWdyb3VwCisgICAgICAgICAgICAgICAgXGNhcnRib3QKKyAgICAgICAgXGVncm91cAorXGVuZGdyb3VwCit9fQorCisKKyUgVGhpcyBtYWNybyBpcyBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhbGwgdGhlIEBleGFtcGxlIHZhcmlhbnRzLAorJSBpbnNpZGUgYSBncm91cC4KK1xkZWZcbm9uZmlsbHN0YXJ0eyUKKyAgXGFib3ZlZW52YnJlYWsKKyAgXGluRU5WICUgVGhpcyBncm91cCBlbmRzIGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkKKyAgXGhmdXp6ID0gMTJwdCAlIERvbid0IGJlIGZ1c3N5CisgIFxzZXBzcGFjZXMgJSBNYWtlIHNwYWNlcyBiZSB3b3JkLXNlcGFyYXRvcnMgcmF0aGVyIHRoYW4gc3BhY2UgdG9rZW5zLgorICBcbGV0XHBhciA9IFxsaXNwcGFyICUgZG9uJ3QgaWdub3JlIGJsYW5rIGxpbmVzCisgIFxvYmV5bGluZXMgJSBlYWNoIGxpbmUgb2YgaW5wdXQgaXMgYSBsaW5lIG9mIG91dHB1dAorICBccGFyc2tpcCA9IDBwdAorICBccGFyaW5kZW50ID0gMHB0CisgIFxlbWVyZ2VuY3lzdHJldGNoID0gMHB0ICUgZG9uJ3QgdHJ5IHRvIGF2b2lkIG92ZXJmdWxsIGJveGVzCisgICUgQGNhcnRvdWNoZSBkZWZpbmVzIFxub25hcnJvd2luZyB0byBpbmhpYml0IG5hcnJvd2luZworICAlIGF0IG5leHQgbGV2ZWwgZG93bi4KKyAgXGlmeFxub25hcnJvd2luZ1xyZWxheAorICAgIFxhZHZhbmNlIFxsZWZ0c2tpcCBieSBcbGlzcG5hcnJvd2luZworICAgIFxleGRlbnRhbW91bnQ9XGxpc3BuYXJyb3dpbmcKKyAgICBcbGV0XGV4ZGVudD1cbm9maWxsZXhkZW50CisgICAgXGxldFxub25hcnJvd2luZz1ccmVsYXgKKyAgXGZpCit9CisKKyUgRGVmaW5lIHRoZSBcRS4uLiBjb250cm9sIHNlcXVlbmNlIG9ubHkgaWYgd2UgYXJlIGluc2lkZSB0aGUgcGFydGljdWxhcgorJSBlbnZpcm9ubWVudCwgc28gdGhlIGVycm9yIGNoZWNraW5nIGluIFxlbmQgd2lsbCB3b3JrLgorJQorJSBUbyBlbmQgYW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudCwgd2UgZmlyc3QgZW5kIHRoZSBwYXJhZ3JhcGggKHZpYQorJSBcYWZ0ZXJlbnZicmVhaydzIHZlcnRpY2FsIGdsdWUpLCBhbmQgdGhlbiB0aGUgZ3JvdXAuICBUaGF0IHdheSB3ZSBrZWVwCislIHRoZSB6ZXJvIFxwYXJza2lwIHRoYXQgdGhlIGVudmlyb25tZW50cyBzZXQgLS0gXHBhcnNraXAgZ2x1ZSB3aWxsIGJlCislIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgcGFyYWdyYXBoIGluIHRoZSBkb2N1bWVudCwgYWZ0ZXIKKyUgdGhlIGVudmlyb25tZW50LgorJQorXGRlZlxub25maWxsZmluaXNoe1xhZnRlcmVudmJyZWFrXGVuZGdyb3VwfQorCislIEBsaXNwOiBpbmRlbnRlZCwgbmFycm93ZWQsIHR5cGV3cml0ZXIgZm9udC4KK1xkZWZcbGlzcHtcYmVnaW5ncm91cAorICBcbm9uZmlsbHN0YXJ0CisgIFxsZXRcRWxpc3AgPSBcbm9uZmlsbGZpbmlzaAorICBcdHQKKyAgXGxldFxrYmRmb250ID0gXGtiZGV4YW1wbGVmb250ICUgQWxsb3cgQGtiZCB0byBkbyBzb21ldGhpbmcgc3BlY2lhbC4KKyAgXGdvYmJsZSAgICAgICAlIGVhdCByZXR1cm4KK30KKworJSBAZXhhbXBsZTogU2FtZSBhcyBAbGlzcC4KK1xkZWZcZXhhbXBsZXtcYmVnaW5ncm91cCBcZGVmXEVleGFtcGxle1xub25maWxsZmluaXNoXGVuZGdyb3VwfVxsaXNwfQorCislIEBzbWFsbGV4YW1wbGUgYW5kIEBzbWFsbGxpc3A6IHVzZSBzbWFsbGVyIGZvbnRzLgorJSBPcmlnaW5hbGx5IGNvbnRyaWJ1dGVkIGJ5IFBhdmVsQHhlcm94LgorXGRlZlxzbWFsbGxpc3B7XGJlZ2luZ3JvdXAKKyAgXGRlZlxFc21hbGxsaXNwe1xub25maWxsZmluaXNoXGVuZGdyb3VwfSUKKyAgXGRlZlxFc21hbGxleGFtcGxle1xub25maWxsZmluaXNoXGVuZGdyb3VwfSUKKyAgXHNtYWxsZXhhbXBsZWZvbnRzCisgIFxsaXNwCit9CitcbGV0XHNtYWxsZXhhbXBsZSA9IFxzbWFsbGxpc3AKKworCislIEBkaXNwbGF5OiBzYW1lIGFzIEBsaXNwIGV4Y2VwdCBrZWVwIGN1cnJlbnQgZm9udC4KKyUKK1xkZWZcZGlzcGxheXtcYmVnaW5ncm91cAorICBcbm9uZmlsbHN0YXJ0CisgIFxsZXRcRWRpc3BsYXkgPSBcbm9uZmlsbGZpbmlzaAorICBcZ29iYmxlCit9CislCislIEBzbWFsbGRpc3BsYXk6IEBkaXNwbGF5IHBsdXMgc21hbGxlciBmb250cy4KKyUKK1xkZWZcc21hbGxkaXNwbGF5e1xiZWdpbmdyb3VwCisgIFxkZWZcRXNtYWxsZGlzcGxheXtcbm9uZmlsbGZpbmlzaFxlbmRncm91cH0lCisgIFxzbWFsbGV4YW1wbGVmb250cyBccm0KKyAgXGRpc3BsYXkKK30KKworJSBAZm9ybWF0OiBzYW1lIGFzIEBkaXNwbGF5IGV4Y2VwdCBkb24ndCBuYXJyb3cgbWFyZ2lucy4KKyUKK1xkZWZcZm9ybWF0e1xiZWdpbmdyb3VwCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0CisgIFxub25maWxsc3RhcnQKKyAgXGxldFxFZm9ybWF0ID0gXG5vbmZpbGxmaW5pc2gKKyAgXGdvYmJsZQorfQorJQorJSBAc21hbGxmb3JtYXQ6IEBmb3JtYXQgcGx1cyBzbWFsbGVyIGZvbnRzLgorJQorXGRlZlxzbWFsbGZvcm1hdHtcYmVnaW5ncm91cAorICBcZGVmXEVzbWFsbGZvcm1hdHtcbm9uZmlsbGZpbmlzaFxlbmRncm91cH0lCisgIFxzbWFsbGV4YW1wbGVmb250cyBccm0KKyAgXGZvcm1hdAorfQorCislIEBmbHVzaGxlZnQgKHNhbWUgYXMgQGZvcm1hdCkuCislCitcZGVmXGZsdXNobGVmdHtcYmVnaW5ncm91cCBcZGVmXEVmbHVzaGxlZnR7XG5vbmZpbGxmaW5pc2hcZW5kZ3JvdXB9XGZvcm1hdH0KKworJSBAZmx1c2hyaWdodC4KKyUKK1xkZWZcZmx1c2hyaWdodHtcYmVnaW5ncm91cAorICBcbGV0XG5vbmFycm93aW5nID0gdAorICBcbm9uZmlsbHN0YXJ0CisgIFxsZXRcRWZsdXNocmlnaHQgPSBcbm9uZmlsbGZpbmlzaAorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSAwcHQgcGx1cyAxZmlsbAorICBcZ29iYmxlCit9CisKKworJSBAcXVvdGF0aW9uIGRvZXMgbm9ybWFsIGxpbmVicmVha2luZyAoaGVuY2Ugd2UgY2FuJ3QgdXNlIFxub25maWxsc3RhcnQpCislIGFuZCBuYXJyb3dzIHRoZSBtYXJnaW5zLgorJQorXGRlZlxxdW90YXRpb257JQorICBcYmVnaW5ncm91cFxpbkVOViAlVGhpcyBncm91cCBlbmRzIGF0IHRoZSBlbmQgb2YgdGhlIEBxdW90YXRpb24gYm9keQorICB7XHBhcnNraXA9MHB0IFxhYm92ZWVudmJyZWFrfSUgYmVjYXVzZSBcYWJvdmVlbnZicmVhayBpbnNlcnRzIFxwYXJza2lwCisgIFxwYXJpbmRlbnQ9MHB0CisgICUgV2UgaGF2ZSByZXRhaW5lZCBhIG5vbnplcm8gcGFyc2tpcCBmb3IgdGhlIGVudmlyb25tZW50LCBzaW5jZSB3ZSdyZQorICAlIGRvaW5nIG5vcm1hbCBmaWxsaW5nLiBTbyB0byBhdm9pZCBleHRyYSBzcGFjZSBiZWxvdyB0aGUgZW52aXJvbm1lbnQuLi4KKyAgXGRlZlxFcXVvdGF0aW9ue1xwYXJza2lwID0gMHB0IFxub25maWxsZmluaXNofSUKKyAgJQorICAlIEBjYXJ0b3VjaGUgZGVmaW5lcyBcbm9uYXJyb3dpbmcgdG8gaW5oaWJpdCBuYXJyb3dpbmcgYXQgbmV4dCBsZXZlbCBkb3duLgorICBcaWZ4XG5vbmFycm93aW5nXHJlbGF4CisgICAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKKyAgICBcYWR2YW5jZVxyaWdodHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKKyAgICBcZXhkZW50YW1vdW50ID0gXGxpc3BuYXJyb3dpbmcKKyAgICBcbGV0XG5vbmFycm93aW5nID0gXHJlbGF4CisgIFxmaQorfQorCisKKyUgTGFUZVgtbGlrZSBAdmVyYmF0aW0uLi5AZW5kIHZlcmJhdGltIGFuZCBAdmVyYns8Y2hhcj4uLi48Y2hhcj59CislIElmIHdlIHdhbnQgdG8gYWxsb3cgYW55IDxjaGFyPiBhcyBkZWxpbWl0ZXIsCislIHdlIG5lZWQgdGhlIGN1cmx5IGJyYWNlcyBzbyB0aGF0IG1ha2VpbmZvIHNlZXMgdGhlIEB2ZXJiIGNvbW1hbmQsIGVnOgorJSBgQHZlcmJ4Li4ueCcgd291bGQgbG9vayBsaWtlIHRoZSAnQHZlcmJ4JyBjb21tYW5kLiAgLS1qYW5uZWtlQGdudS5vcmcKKyUKKyUgW0tudXRoXTogRG9uYWxkIEVydmluIEtudXRoLCAxOTk2LiAgVGhlIFRlWGJvb2suCislCislIFtLbnV0aF0gcC4zNDQ7IG9ubHkgd2UgbmVlZCB0byBkbyB0aGUgb3RoZXIgY2hhcmFjdGVycyBUZXhpbmZvIHNldHMKKyUgYWN0aXZlIHRvby4gIE90aGVyd2lzZSwgdGhleSBnZXQgbG9zdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9uIGEKKyUgdmVyYmF0aW0gbGluZS4KK1xkZWZcZG9zcGVjaWFsc3slCisgIFxkb1wgXGRvXFxcZG9ce1xkb1x9XGRvXCRcZG9cJiUKKyAgXGRvXCNcZG9cXlxkb1xeXktcZG9cX1xkb1xeXkFcZG9cJVxkb1x+JQorICBcZG9cPFxkb1w+XGRvXHxcZG9cQFxkbytcZG9cIiUKK30KKyUKKyUgW0tudXRoXSBwLiAzODAKK1xkZWZcdW5jYXRjb2Rlc3BlY2lhbHN7JQorICBcZGVmXGRvIyMxe1xjYXRjb2RlYCMjMT0xMn1cZG9zcGVjaWFsc30KKyUKKyUgW0tudXRoXSBwcC4gMzgwLDM4MSwzOTEKKyUgRGlzYWJsZSBTcGFuaXNoIGxpZ2F0dXJlcyA/YCBhbmQgIWAgb2YgXHR0IGZvbnQKK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxgPVxhY3RpdmVcZ2RlZmB7XHJlbGF4XGxxfQorXGVuZGdyb3VwCislCislIFNldHVwIGZvciB0aGUgQHZlcmIgY29tbWFuZC4KKyUKKyUgRWlnaHQgc3BhY2VzIGZvciBhIHRhYgorXGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgXF5eST1cYWN0aXZlCisgIFxnZGVmXHRhYmVpZ2h0c3BhY2Vze1xjYXRjb2RlYFxeXkk9XGFjdGl2ZVxkZWZeXkl7XCBcIFwgXCBcIFwgXCBcIH19CitcZW5kZ3JvdXAKKyUKK1xkZWZcc2V0dXB2ZXJieyUKKyAgXHR0ICAlIGVhc2llc3QgKGFuZCBjb252ZW50aW9uYWxseSB1c2VkKSBmb250IGZvciB2ZXJiYXRpbQorICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlbmRncmFmfSUKKyAgXGNhdGNvZGVgXGA9XGFjdGl2ZQorICBcdGFiZWlnaHRzcGFjZXMKKyAgJSBSZXNwZWN0IGxpbmUgYnJlYWtzLAorICAlIHByaW50IHNwZWNpYWwgc3ltYm9scyBhcyB0aGVtc2VsdmVzLCBhbmQKKyAgJSBtYWtlIGVhY2ggc3BhY2UgY291bnQKKyAgJSBtdXN0IGRvIGluIHRoaXMgb3JkZXI6CisgIFxvYmV5bGluZXMgXHVuY2F0Y29kZXNwZWNpYWxzIFxzZXBzcGFjZXMKK30KKworJSBTZXR1cCBmb3IgdGhlIEB2ZXJiYXRpbSBlbnZpcm9ubWVudAorJQorJSBSZWFsIHRhYiBleHBhbnNpb24KK1xuZXdkaW1lblx0YWJ3IFxzZXRib3gwPVxoYm94e1x0dFxzcGFjZX0gXHRhYnc9OFx3ZDAgJSB0YWIgYW1vdW50CislCitcZGVmXHN0YXJ0dGFiYm94e1xzZXRib3gwPVxoYm94XGJncm91cH0KK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxeXkk9XGFjdGl2ZQorICBcZ2RlZlx0YWJleHBhbmR7JQorICAgIFxjYXRjb2RlYFxeXkk9XGFjdGl2ZQorICAgIFxkZWZeXkl7XGxlYXZldm1vZGVcZWdyb3VwCisgICAgICBcZGltZW4wPVx3ZDAgJSB0aGUgd2lkdGggc28gZmFyLCBvciBzaW5jZSB0aGUgcHJldmlvdXMgdGFiCisgICAgICBcZGl2aWRlXGRpbWVuMCBieVx0YWJ3CisgICAgICBcbXVsdGlwbHlcZGltZW4wIGJ5XHRhYncgJSBjb21wdXRlIHByZXZpb3VzIG11bHRpcGxlIG9mIFx0YWJ3CisgICAgICBcYWR2YW5jZVxkaW1lbjAgYnlcdGFidyAgJSBhZHZhbmNlIHRvIG5leHQgbXVsdGlwbGUgb2YgXHRhYncKKyAgICAgIFx3ZDA9XGRpbWVuMCBcYm94MCBcc3RhcnR0YWJib3gKKyAgICB9JQorICB9CitcZW5kZ3JvdXAKK1xkZWZcc2V0dXB2ZXJiYXRpbXslCisgICUgRWFzaWVzdCAoYW5kIGNvbnZlbnRpb25hbGx5IHVzZWQpIGZvbnQgZm9yIHZlcmJhdGltCisgIFx0dAorICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlZ3JvdXBcYm94MFxlbmRncmFmfSUKKyAgXGNhdGNvZGVgXGA9XGFjdGl2ZQorICBcdGFiZXhwYW5kCisgICUgUmVzcGVjdCBsaW5lIGJyZWFrcywKKyAgJSBwcmludCBzcGVjaWFsIHN5bWJvbHMgYXMgdGhlbXNlbHZlcywgYW5kCisgICUgbWFrZSBlYWNoIHNwYWNlIGNvdW50CisgICUgbXVzdCBkbyBpbiB0aGlzIG9yZGVyOgorICBcb2JleWxpbmVzIFx1bmNhdGNvZGVzcGVjaWFscyBcc2Vwc3BhY2VzCisgIFxldmVyeXBhcntcc3RhcnR0YWJib3h9JQorfQorCislIERvIHRoZSBAdmVyYiBtYWdpYzogdmVyYmF0aW0gdGV4dCBpcyBxdW90ZWQgYnkgdW5pcXVlCislIGRlbGltaXRlciBjaGFyYWN0ZXJzLiAgQmVmb3JlIGZpcnN0IGRlbGltaXRlciBleHBlY3QgYQorJSByaWdodCBicmFjZSwgYWZ0ZXIgbGFzdCBkZWxpbWl0ZXIgZXhwZWN0IGNsb3NpbmcgYnJhY2U6CislCislICAgIFxkZWZcZG92ZXJiJ3snPGNoYXI+IzE8Y2hhcj4nfSd7IzF9CislCislIFtLbnV0aF0gcC4gMzgyOyBvbmx5IGVhdCBvdXRlciB7fQorXGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgWz0xXGNhdGNvZGVgXT0yXGNhdGNvZGVgXHs9MTJcY2F0Y29kZWBcfT0xMgorICBcZ2RlZlxkb3ZlcmJ7IzFbXGRlZlxuZXh0IyMxIzF9WyMjMVxlbmRncm91cF1cbmV4dF0KK1xlbmRncm91cAorJQorXGRlZlx2ZXJie1xiZWdpbmdyb3VwXHNldHVwdmVyYlxkb3ZlcmJ9CislCislCislIERvIHRoZSBAdmVyYmF0aW0gbWFnaWM6IGRlZmluZSB0aGUgbWFjcm8gXGRvdmVyYmF0aW0gc28gdGhhdAorJSB0aGUgKGZpcnN0KSBhcmd1bWVudCBlbmRzIHdoZW4gJ0BlbmQgdmVyYmF0aW0nIGlzIHJlYWNoZWQsIGllOgorJQorJSAgICAgXGRlZlxkb3ZlcmJhdGltIzFAZW5kIHZlcmJhdGlteyMxfQorJQorJSBGb3IgVGV4aW5mbyBpdCdzIGEgbG90IGVhc2llciB0aGFuIGZvciBMYVRlWCwKKyUgYmVjYXVzZSB0ZXhpbmZvJ3MgXHZlcmJhdGltIGRvZXNuJ3Qgc3RvcCBhdCAnXGVuZHt2ZXJiYXRpbX0nOgorJSB3ZSBuZWVkIG5vdCByZWRlZmluZSAnXCcsICd7JyBhbmQgJ30nLgorJQorJSBJbnNwaXJlZCBieSBMYVRlWCdzIHZlcmJhdGltIGNvbW1hbmQgc2V0IFtsYXRleC5sdHhdCislJSBJbmNsdWRlIExhVGVYIGhhY2sgZm9yIGNvbXBsZXRlbmVzcyAtLSBuZXZlciBrbm93CislJSBcYmVnaW5ncm91cAorJSUgXGNhdGNvZGVgfD0wIFxjYXRjb2RlYFs9MQorJSUgXGNhdGNvZGVgXT0yXGNhdGNvZGVgXHs9MTJcY2F0Y29kZWBcfT0xMlxjYXRjb2RlYFwgPVxhY3RpdmUKKyUlIFxjYXRjb2RlYFxcPTEyfGdkZWZ8ZG92ZXJiYXRpbSMxQGVuZCB2ZXJiYXRpbVsKKyUlICMxfGVuZGdyb3VwfGRlZnxFdmVyYmF0aW1bXXxlbmRbdmVyYmF0aW1dXQorJSUgfGVuZGdyb3VwCislCitcYmVnaW5ncm91cAorICBcY2F0Y29kZWBcID1cYWN0aXZlCisgIFxvYmV5bGluZXMgJQorICAlIGlnbm9yZSBldmVyeXRoaW5nIHVwIHRvIHRoZSBmaXJzdCBeXk0sIHRoYXQncyB0aGUgbmV3bGluZSBhdCB0aGUgZW5kCisgICUgb2YgdGhlIEB2ZXJiYXRpbSBpbnB1dCBsaW5lIGl0c2VsZi4gIE90aGVyd2lzZSB3ZSBnZXQgYW4gZXh0cmEgYmxhbmsKKyAgJSBsaW5lIGluIHRoZSBvdXRwdXQuCisgIFxnZGVmXGRvdmVyYmF0aW0jMV5eTSMyQGVuZCB2ZXJiYXRpbXsjMlxlbmR7dmVyYmF0aW19fSUKK1xlbmRncm91cAorJQorXGRlZlx2ZXJiYXRpbXslCisgIFxkZWZcRXZlcmJhdGlte1xub25maWxsZmluaXNoXGVuZGdyb3VwfSUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcbm9uZmlsbHN0YXJ0CisgICAgXGFkdmFuY2VcbGVmdHNraXAgYnkgLVxkZWZib2R5aW5kZW50CisgICAgXGJlZ2luZ3JvdXBcc2V0dXB2ZXJiYXRpbVxkb3ZlcmJhdGltCit9CisKKyUgQHZlcmJhdGltaW5jbHVkZSBGSUxFIC0gaW5zZXJ0IHRleHQgb2YgZmlsZSBpbiB2ZXJiYXRpbSBlbnZpcm9ubWVudC4KKyUKKyUgQWxsb3cgbm9ybWFsIGNoYXJhY3RlcnMgdGhhdCB3ZSBtYWtlIGFjdGl2ZSBpbiB0aGUgYXJndW1lbnQgKGEgZmlsZSBuYW1lKS4KK1xkZWZcdmVyYmF0aW1pbmNsdWRleyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcY2F0Y29kZWBcXD1cb3RoZXIKKyAgICBcY2F0Y29kZWB+PVxvdGhlcgorICAgIFxjYXRjb2RlYF49XG90aGVyCisgICAgXGNhdGNvZGVgXz1cb3RoZXIKKyAgICBcY2F0Y29kZWB8PVxvdGhlcgorICAgIFxjYXRjb2RlYDw9XG90aGVyCisgICAgXGNhdGNvZGVgPj1cb3RoZXIKKyAgICBcY2F0Y29kZWArPVxvdGhlcgorICAgIFxwYXJzZWFyZ1xkb3ZlcmJhdGltaW5jbHVkZQorfQorXGRlZlxzZXR1cHZlcmJhdGltaW5jbHVkZXslCisgIFxiZWdpbmdyb3VwCisgICAgXG5vbmZpbGxzdGFydAorICAgIFxhZHZhbmNlXGxlZnRza2lwIGJ5IC1cZGVmYm9keWluZGVudAorICAgIFxiZWdpbmdyb3VwXHNldHVwdmVyYmF0aW0KK30KKyUKK1xkZWZcZG92ZXJiYXRpbWluY2x1ZGUjMXslCisgICAgICUgUmVzdG9yZSBhY3RpdmUgY2hhcnMgZm9yIGluY2x1ZGVkIGZpbGUuCisgIFxlbmRncm91cAorICBcYmVnaW5ncm91cAorICAgIFxsZXRcdmFsdWU9XGV4cGFuZGFibGV2YWx1ZQorICAgIFxkZWZcdGhpc2ZpbGV7IzF9JQorICAgIFxleHBhbmRhZnRlclxleHBhbmRhZnRlclxzZXR1cHZlcmJhdGltaW5jbHVkZVxpbnB1dFx0aGlzZmlsZQorICBcZW5kZ3JvdXAKKyAgXG5vbmZpbGxmaW5pc2gKKyAgXGVuZGdyb3VwCit9CisKKyUgQGNvcHlpbmcgLi4uIEBlbmQgY29weWluZy4KKyUgU2F2ZSB0aGUgdGV4dCBhd2F5IGZvciBAaW5zZXJ0Y29weWluZyBsYXRlci4gIE1hbnkgY29tbWFuZHMgd29uJ3QgYmUKKyUgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQsIGJ1dCB0aGF0J3Mgb2suCislCislIFdlIHNhdmUgdGhlIHVuaW50ZXJwcmV0ZWQgdG9rZW5zLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIGJveC4KKyUgU2F2aW5nIHRoZSB0ZXh0IGluIGEgYm94IHdvdWxkIGJlIG11Y2ggZWFzaWVyLCBidXQgdGhlbiBhbGwgdGhlCislIHR5cGVzZXR0aW5nIGNvbW1hbmRzIChAc21hbGxib29rLCBmb250IGNoYW5nZXMsIGV0Yy4pIGhhdmUgdG8gYmUgZG9uZQorJSBiZWZvcmVoYW5kIC0tIGFuZCBhKSB3ZSB3YW50IEBjb3B5aW5nIHRvIGJlIGRvbmUgZmlyc3QgaW4gdGhlIHNvdXJjZQorJSBmaWxlOyBiKSBsZXR0aW5nIHVzZXJzIGRlZmluZSB0aGUgZnJvbnRtYXR0ZXIgaW4gYXMgZmxleGlibGUgb3JkZXIgYXMKKyUgcG9zc2libGUgaXMgdmVyeSBkZXNpcmFibGUuCislCitcZGVmXGNvcHlpbmd7XGJlZ2luZ3JvdXAKKyAgJSBEZWZpbmUgYSBjb21tYW5kIHRvIHN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCBgQGVuZCBjb3B5aW5nJy4KKyAgJSBcIGlzIHRoZSBlc2NhcGUgY2hhciBpbiB0aGlzIHRleGluZm8udGV4IGZpbGUsIHNvIGl0IGlzIHRoZQorICAlIGRlbGltaXRlciBmb3IgdGhlIGNvbW1hbmQ7IEAgd2lsbCBiZSB0aGUgZXNjYXBlIGNoYXIgd2hlbiB3ZSByZWFkCisgICUgaXQsIGJ1dCB0aGF0IGRvZXNuJ3QgbWF0dGVyLgorICBcbG9uZ1xkZWZcZG9jb3B5aW5nIyMxXGVuZCBjb3B5aW5ne1xnZGVmXGNvcHlpbmd0ZXh0eyMjMX1cZW5kZG9jb3B5aW5nfSUKKyAgJQorICAlIFdlIG11c3QgcHJlc2VydmUgXl5NJ3MgaW4gdGhlIGlucHV0IGZpbGU7IHNlZSBcaW5zZXJ0Y29weWluZyBiZWxvdy4KKyAgXGNhdGNvZGVgXF5eTSA9IFxhY3RpdmUKKyAgXGRvY29weWluZworfQorCislIFdoYXQgd2UgZG8gdG8gZmluaXNoIG9mZiB0aGUgY29weWluZyB0ZXh0LgorJQorXGRlZlxlbmRkb2NvcHlpbmd7XGVuZGdyb3VwXGlnbm9yZXNwYWNlc30KKworJSBAaW5zZXJ0Y29weWluZy4gIEhlcmUgd2UgbXVzdCBwbGF5IGdhbWVzIHdpdGggXl5NJ3MuICBPbiB0aGUgb25lIGhhbmQsCislIHdlIG5lZWQgdGhlbSB0byBkZWxpbWl0IGNvbW1hbmRzIHN1Y2ggYXMgYEBlbmQgcXVvdGF0aW9uJywgc28gdGhleQorJSBtdXN0IGJlIGFjdGl2ZS4gIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjZXJ0YWlubHkgZG9uJ3Qgd2FudCBldmVyeQorJSBlbmQtb2YtbGluZSB0byBiZSBhIFxwYXIsIGFzIHdvdWxkIGhhcHBlbiB3aXRoIHRoZSBub3JtYWwgYWN0aXZlCislIGRlZmluaXRpb24gb2YgXl5NLiAgT24gdGhlIHRoaXJkIGhhbmQsIHR3byBeXk0ncyBpbiBhIHJvdyBzaG91bGQgc3RpbGwKKyUgZ2VuZXJhdGUgYSBccGFyLgorJQorJSBPdXIgYXBwcm9hY2ggaXMgdG8gbWFrZSBeXk0gaW5zZXJ0IGEgc3BhY2UgYW5kIGEgcGVuYWx0eTEgbm9ybWFsbHk7CislIHRoZW4gaXQgY2FuIGFsc28gY2hlY2sgaWYgXGxhc3RwZW5hbHR5PTEuICBJZiBpdCBkb2VzLCB0aGVuIG1hbnVhbGx5CislIGRvIFxwYXIuCislCislIFRoaXMgbWVzc2VzIHVwIHRoZSBub3JtYWwgZGVmaW5pdGlvbnMgb2YgQGNbb21tZW50XSwgc28gd2UgcmVkZWZpbmUKKyUgaXQuICBTaW1pbGFybHkgZm9yIEBpZ25vcmUuICAoVGhlc2UgY29tbWFuZHMgYXJlIHVzZWQgaW4gdGhlIGdjYworJSBtYW51YWwgZm9yIG1hbiBwYWdlIGdlbmVyYXRpb24uKQorJQorJSBTZWVtcyBwcmV0dHkgZnJhZ2lsZSwgbW9zdCBsaW5lLW9yaWVudGVkIGNvbW1hbmRzIHdpbGwgcHJlc3VtYWJseQorJSBmYWlsLCBidXQgZm9yIHRoZSBsaW1pdGVkIHVzZSBvZiBnZXR0aW5nIHRoZSBjb3B5aW5nIHRleHQgKHdoaWNoCislIHNob3VsZCBiZSBxdWl0ZSBzaW1wbGUpIGluc2VydGVkLCB3ZSBjYW4gaG9wZSBpdCdzIG9rLgorJQore1xjYXRjb2RlYFxeXk09XGFjdGl2ZSAlCitcZ2RlZlxpbnNlcnRjb3B5aW5ne1xiZWdpbmdyb3VwICUKKyAgXHBhcmluZGVudCA9IDBwdCAgJSBsb29rcyB3cm9uZyBvbiB0aXRsZSBwYWdlCisgIFxkZWZeXk17JQorICAgIFxpZm51bSBcbGFzdHBlbmFsdHk9MSAlCisgICAgICBccGFyICUKKyAgICBcZWxzZSAlCisgICAgICBcc3BhY2UgXHBlbmFsdHkgMSAlCisgICAgXGZpICUKKyAgfSUKKyAgJQorICAlIEZpeCBAY1tvbW1lbnRdIGZvciBjYXRjb2RlIDEzIF5eTSdzLgorICBcZGVmXGMjIzFeXk17XGlnbm9yZXNwYWNlc30lCisgIFxsZXRcY29tbWVudCA9IFxjICUKKyAgJQorICAlIERvbid0IGJvdGhlciBqdW1waW5nIHRocm91Z2ggYWxsIHRoZSBob29wcyB0aGF0IFxkb2lnbm9yZSBkb2VzLCBpdAorICAlIHdvdWxkIGJlIHZlcnkgaGFyZCBzaW5jZSB0aGUgY2F0Y29kZXMgYXJlIGFscmVhZHkgc2V0LgorICBcbG9uZ1xkZWZcaWdub3JlIyMxXGVuZCBpZ25vcmV7XGlnbm9yZXNwYWNlc30lCisgICUKKyAgXGNvcHlpbmd0ZXh0ICUKK1xlbmRncm91cH0lCit9CisKK1xtZXNzYWdle2RlZnVucyx9CislIEBkZWZ1biBldGMuCisKK1xuZXdza2lwXGRlZmJvZHlpbmRlbnQgXGRlZmJvZHlpbmRlbnQ9LjRpbgorXG5ld3NraXBcZGVmYXJnc2luZGVudCBcZGVmYXJnc2luZGVudD01MHB0CitcbmV3c2tpcFxkZWZsYXN0YXJnbWFyZ2luIFxkZWZsYXN0YXJnbWFyZ2luPTE4cHQKKworXG5ld2NvdW50XHBhcmVuY291bnQKKworJSBXZSB3YW50ICgpJltdIHRvIHByaW50IHNwZWNpYWxseSBvbiB0aGUgZGVmdW4gbGluZS4KKyUKK1xkZWZcYWN0aXZlcGFyZW5zeyUKKyAgXGNhdGNvZGVgXCg9XGFjdGl2ZSBcY2F0Y29kZWBcKT1cYWN0aXZlCisgIFxjYXRjb2RlYFwmPVxhY3RpdmUKKyAgXGNhdGNvZGVgXFs9XGFjdGl2ZSBcY2F0Y29kZWBcXT1cYWN0aXZlCit9CisKKyUgTWFrZSBjb250cm9sIHNlcXVlbmNlcyB3aGljaCBhY3QgbGlrZSBub3JtYWwgcGFyZW50aGVzaXMgY2hhcnMuCitcbGV0XGxwYXJlbiA9ICggXGxldFxycGFyZW4gPSApCisKK3tcYWN0aXZlcGFyZW5zICUgTm93LCBzbWFydCBwYXJlbnMgZG9uJ3QgdHVybiBvbiB1bnRpbCAmZm9vIChzZWUgXGFtcHJtKQorCislIEJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBhIGRlZmluaXRpb24gZm9yIGAoJywgZXRjLiAgRm9yIGV4YW1wbGUsCislIGlmIHRoZSBmbiBuYW1lIGhhcyBwYXJlbnMgaW4gaXQsIFxib2xkYnJheCB3aWxsIG5vdCBiZSBpbiBlZmZlY3QgeWV0LAorJSBzbyBUZVggd291bGQgb3RoZXJ3aXNlIGNvbXBsYWluIGFib3V0IHVuZGVmaW5lZCBjb250cm9sIHNlcXVlbmNlLgorXGdsb2JhbFxsZXQoPVxscGFyZW4gXGdsb2JhbFxsZXQpPVxycGFyZW4KK1xnbG9iYWxcbGV0Wz1cbGJyYWNrIFxnbG9iYWxcbGV0XT1ccmJyYWNrCisKK1xnZGVmXGZ1bmN0aW9ucGFyZW5ze1xib2xkYnJheFxsZXQmPVxhbXBybVxwYXJlbmNvdW50PTAgfQorXGdkZWZcYm9sZGJyYXh7XGxldCg9XG9wbnJcbGV0KT1cY2xuclxsZXRbPVxsYnJiXGxldF09XHJicmJ9CislIFRoaXMgaXMgdXNlZCB0byB0dXJuIG9uIHNwZWNpYWwgcGFyZW5zCislIGJ1dCBtYWtlICYgYWN0IG9yZGluYXJ5IChnaXZlbiB0aGF0IGl0J3MgYWN0aXZlKS4KK1xnZGVmXGJvbGRicmF4bm9hbXB7XGxldCg9XG9wbnJcbGV0KT1cY2xuclxsZXRbPVxsYnJiXGxldF09XHJicmJcbGV0Jj1cYW1wbnJ9CisKKyUgRGVmaW5pdGlvbnMgb2YgKCwgKSBhbmQgJiB1c2VkIGluIGFyZ3MgZm9yIGZ1bmN0aW9ucy4KKyUgVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiBvZiAoIG91dHNpZGUgb2YgYWxsIHBhcmVudGhlc2VzLgorXGdkZWZcb3BybSMxIHt7XHJtXGNoYXJgXCh9IzEgXGJmIFxsZXQoPVxvcG5lc3RlZAorICBcZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAxCit9CislCislIFRoaXMgaXMgdGhlIGRlZmluaXRpb24gb2YgKCB3aGVuIGFscmVhZHkgaW5zaWRlIGEgbGV2ZWwgb2YgcGFyZW5zLgorXGdkZWZcb3BuZXN0ZWR7XGNoYXJgXChcZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAxIH0KKyUKK1xnZGVmXGNscm17JSBQcmludCBhIHBhcmVuIGluIHJvbWFuIGlmIGl0IGlzIHRha2luZyB1cyBiYWNrIHRvIGRlcHRoIG9mIDAuCisgICUgYWxzbyBpbiB0aGF0IGNhc2UgcmVzdG9yZSB0aGUgb3V0ZXItbGV2ZWwgZGVmaW5pdGlvbiBvZiAoLgorICBcaWZudW0gXHBhcmVuY291bnQ9MSB7XHJtIFxjaGFyIGBcKX1cc2wgXGxldCg9XG9wcm0gXGVsc2UgXGNoYXIgYFwpIFxmaQorICBcZ2xvYmFsXGFkdmFuY2UgXHBhcmVuY291bnQgYnkgLTEgfQorJSBJZiB3ZSBlbmNvdW50ZXIgJmZvbywgdGhlbiB0dXJuIG9uICgpLWhhY2tpbmcgYWZ0ZXJ3YXJkcworXGdkZWZcYW1wcm0jMSB7e1xybVwmIzF9XGxldCg9XG9wcm0gXGxldCk9XGNscm1cIH0KKyUKK1xnZGVmXG5vcm1hbHBhcmVuc3tcYm9sZGJyYXhcbGV0Jj1cYW1wbnJ9Cit9ICUgRW5kIG9mIGRlZmluaXRpb24gaW5zaWRlIFxhY3RpdmVwYXJlbnMKKyUlIFRoZXNlIHBhcmVucyAoaW4gXGJvbGRicmF4KSBhY3R1YWxseSBhcmUgYSBsaXR0bGUgYm9sZGVyIHRoYW4gdGhlCislJSBjb250YWluZWQgdGV4dC4gIFRoaXMgaXMgZXNwZWNpYWxseSBuZWVkZWQgZm9yIFsgYW5kIF0KK1xkZWZcb3Bucnt7XHNmXGNoYXJgXCh9XGdsb2JhbFxhZHZhbmNlXHBhcmVuY291bnQgYnkgMSB9CitcZGVmXGNsbnJ7e1xzZlxjaGFyYFwpfVxnbG9iYWxcYWR2YW5jZVxwYXJlbmNvdW50IGJ5IC0xIH0KK1xsZXRcYW1wbnIgPSBcJgorXGRlZlxsYnJie3tcYmZcY2hhcmBcW319CitcZGVmXHJicmJ7e1xiZlxjaGFyYFxdfX0KKworJSBBY3RpdmUgJidzIHNuZWFrIGludG8gdGhlIGluZGV4IGFyZ3VtZW50cywgc28gbWFrZSBzdXJlIGl0J3MgZGVmaW5lZC4KK3sKKyAgXGNhdGNvZGVgJiA9IFxhY3RpdmUKKyAgXGdsb2JhbFxsZXQmID0gXGFtcG5yCit9CisKKyUgXGRlZm5hbWUsIHdoaWNoIGZvcm1hdHMgdGhlIG5hbWUgb2YgdGhlIEBkZWYgKG5vdCB0aGUgYXJncykuCislICMxIGlzIHRoZSBmdW5jdGlvbiBuYW1lLgorJSAjMiBpcyB0aGUgdHlwZSBvZiBkZWZpbml0aW9uLCBzdWNoIGFzICJGdW5jdGlvbiIuCislCitcZGVmXGRlZm5hbWUjMSMyeyUKKyAgJSBIb3cgd2UnbGwgb3V0cHV0IHRoZSB0eXBlIG5hbWUuICBQdXR0aW5nIGl0IGluIGJyYWNrZXRzIGhlbHBzCisgICUgZGlzdGluZ3Vpc2ggaXQgZnJvbSB0aGUgYm9keSB0ZXh0IHRoYXQgbWF5IGVuZCB1cCBvbiB0aGUgbmV4dCBsaW5lCisgICUganVzdCBiZWxvdyBpdC4KKyAgXGlmZW1wdHl7IzJ9JQorICAgIFxkZWZcZGVmbmFtZXR5cGV7fSUKKyAgXGVsc2UKKyAgICBcZGVmXGRlZm5hbWV0eXBle1tccm0gIzJdfSUKKyAgXGZpCisgICUKKyAgJSBHZXQgdGhlIHZhbHVlcyBvZiBcbGVmdHNraXAgYW5kIFxyaWdodHNraXAgYXMgdGhleSB3ZXJlIG91dHNpZGUgdGhlIEBkZWYuLi4KKyAgXGRpbWVuMj1cbGVmdHNraXAKKyAgXGFkdmFuY2VcZGltZW4yIGJ5IC1cZGVmYm9keWluZGVudAorICAlCisgICUgRmlndXJlIG91dCB2YWx1ZXMgZm9yIHRoZSBwYXJhZ3JhcGggc2hhcGUuCisgIFxzZXRib3gwPVxoYm94e1xoc2tpcCBcZGVmbGFzdGFyZ21hcmdpbntcZGVmbmFtZXR5cGV9fSUKKyAgXGRpbWVuMD1caHNpemUgXGFkdmFuY2UgXGRpbWVuMCBieSAtXHdkMCAgJSBjb21wdXRlIHNpemUgZm9yIGZpcnN0IGxpbmUKKyAgXGRpbWVuMT1caHNpemUgXGFkdmFuY2UgXGRpbWVuMSBieSAtXGRlZmFyZ3NpbmRlbnQgICUgc2l6ZSBmb3IgY29udGludWF0aW9ucworICBccGFyc2hhcGUgMiAwaW4gXGRpbWVuMCBcZGVmYXJnc2luZGVudCBcZGltZW4xCisgICUKKyAgJSBPdXRwdXQgYXJnIDIgKCJGdW5jdGlvbiIgb3Igc29tZSBzdWNoKSBidXQgc3R1Y2sgaW5zaWRlIGEgYm94IG9mCisgICUgd2lkdGggMCBzbyBpdCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBsaW5lYnJlYWtpbmcuCisgIFxub2luZGVudAorICAlCisgIHslIEFkanVzdCBcaHNpemUgdG8gZXhjbHVkZSB0aGUgYW1iaWVudCBtYXJnaW5zLAorICAgJSBzbyB0aGF0IFxyaWdodGxpbmUgd2lsbCBvYmV5IHRoZW0uCisgICBcYWR2YW5jZSBcaHNpemUgYnkgLVxkaW1lbjIKKyAgIFxkaW1lbjMgPSAwcHQgICUgd2FzIC0xLjI1cGMKKyAgIFxybGFwe1xyaWdodGxpbmV7XGRlZm5hbWV0eXBlXGtlcm5cZGltZW4zfX0lCisgIH0lCisgICUKKyAgJSBBbGxvdyBhbGwgbGluZXMgdG8gYmUgdW5kZXJmdWxsIHdpdGhvdXQgY29tcGxhaW50OgorICBcdG9sZXJhbmNlPTEwMDAwIFxoYmFkbmVzcz0xMDAwMAorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSAtXGRlZmJvZHlpbmRlbnQKKyAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAorICB7XGRmICMxfVxlbnNraXAgICAgICAgICUgb3V0cHV0IGZ1bmN0aW9uIG5hbWUKKyAgJSBcZGVmdW5hcmdzIHdpbGwgYmUgY2FsbGVkIG5leHQgdG8gb3V0cHV0IHRoZSBhcmd1bWVudHMsIGlmIGFueS4KK30KKworJSBDb21tb24gcGllY2VzIHRvIHN0YXJ0IGFueSBAZGVmLi4uCislICMxIGlzIHRoZSBcRS4uLiBjb250cm9sIHNlcXVlbmNlIHRvIGVuZCB0aGUgZGVmaW5pdGlvbiAod2hpY2ggd2UgZGVmaW5lKS4KKyUgIzIgaXMgdGhlIFwuLi54IGNvbnRyb2wgc2VxdWVuY2UgKHdoaWNoIG91ciBjYWxsZXIgZGVmaW5lcykuCislICMzIGlzIHRoZSBjb250cm9sIHNlcXVlbmNlIHRvIHByb2Nlc3MgdGhlIGhlYWRlciwgc3VjaCBhcyBcZGVmdW5oZWFkZXIuCislCitcZGVmXHBhcnNlYm9keWNvbW1vbiMxIzIjM3slCisgIFxiZWdpbmdyb3VwXGluRU5WCisgICUgSWYgdGhlcmUgYXJlIHR3byBAZGVmIGNvbW1hbmRzIGluIGEgcm93LCB3ZSdsbCBoYXZlIGEgXG5vYnJlYWssCisgICUgd2hpY2ggaXMgdGhlcmUgdG8ga2VlcCB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24gdG9nZXRoZXIgd2l0aCBpdHMKKyAgJSBoZWFkZXIuICBCdXQgaWYgdGhlcmUncyBub3RoaW5nIGJ1dCBoZWFkZXJzLCB3ZSBuZWVkIHRvIGFsbG93IGEKKyAgJSBicmVhayBzb21ld2hlcmUuICBDaGVjayBmb3IgcGVuYWx0eSAxMDAwMiAoaW5zZXJ0ZWQgYnkKKyAgJSBcZGVmYXJnc2NvbW1vbmVuZGluZykgaW5zdGVhZCBvZiAxMDAwMCwgc2luY2UgdGhlIHNlY3Rpb25pbmcKKyAgJSBjb21tYW5kcyBpbnNlcnQgYSBccGVuYWx0eTEwMDAwLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhbGxvdyBhIGJyZWFrCisgICUgYmV0d2VlbiBhIHNlY3Rpb24gaGVhZGluZyBhbmQgYSBkZWZ1bi4KKyAgXGlmbnVtXGxhc3RwZW5hbHR5PTEwMDAyIFxwZW5hbHR5MjAwMCBcZmkKKyAgJQorICAlIFNpbWlsYXJseSwgYWZ0ZXIgYSBzZWN0aW9uIGhlYWRpbmcsIGRvIG5vdCBhbGxvdyBhIGJyZWFrLgorICAlIEJ1dCBkbyBpbnNlcnQgdGhlIGdsdWUuCisgIFxpZm51bVxsYXN0cGVuYWx0eTwxMDAwMCBcbWVkYnJlYWsKKyAgXGVsc2UgXG1lZHNraXAgICUgcHJlY2VkZWQgYnkgZGlzY2FyZGFibGUgcGVuYWx0eSwgc28gbm90IGEgYnJlYWtwb2ludAorICBcZmkKKyAgJQorICAlIERlZmluZSB0aGUgXEUuLi4gZW5kIHRva2VuIHRoYXQgdGhpcyBkZWZpbmluZyBjb25zdHJ1Y3Qgc3BlY2lmaWVzCisgICUgc28gdGhhdCBpdCB3aWxsIGV4aXQgdGhpcyBncm91cC4KKyAgXGRlZiMxe1xlbmRncmFmXGVuZGdyb3VwXG1lZGJyZWFrfSUKKyAgJQorICBccGFyaW5kZW50PTBpbgorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSBcZGVmYm9keWluZGVudAorICBcZXhkZW50YW1vdW50PVxkZWZib2R5aW5kZW50Cit9CisKKyUgQ29tbW9uIHBhcnQgb2YgdGhlIFwuLi54IGRlZmluaXRpb25zLgorJQorXGRlZlxkZWZ4Ym9keWNvbW1vbnslCisgICUgQXMgd2l0aCBccGFyc2Vib2R5Y29tbW9uIGFib3ZlLCBhbGxvdyBsaW5lIGJyZWFrIGlmIHdlIGhhdmUgbXVsdGlwbGUKKyAgJSB4IGhlYWRlcnMgaW4gYSByb3cuICBJdCdzIG5vdCBhIGdyZWF0IHBsYWNlLCB0aG91Z2guCisgIFxpZm51bVxsYXN0cGVuYWx0eT0xMDAwMiBccGVuYWx0eTIwMDAgXGZpCisgICUKKyAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzCit9CisKKyUgUHJvY2VzcyBib2R5IG9mIEBkZWZ1biwgQGRlZmZuLCBAZGVmbWFjLCBldGMuCislCitcZGVmXGRlZnBhcnNlYm9keSMxIzIjM3slCisgIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCisgIFxkZWYjMntcZGVmeGJvZHljb21tb24gXGFjdGl2ZXBhcmVucyBcc3BhY2VzcGxpdCMzfSUKKyAgXGNhdGNvZGVcZXF1YWxDaGFyPVxhY3RpdmUKKyAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzXGFjdGl2ZXBhcmVucworICBcc3BhY2VzcGxpdCMzJQorfQorCislICMxLCAjMiwgIzMgYXJlIHRoZSBjb21tb24gYXJndW1lbnRzIChzZWUgXHBhcnNlYm9keWNvbW1vbiBhYm92ZSkuCislICM0LCBkZWxpbWl0ZWQgYnkgdGhlIHNwYWNlLCBpcyB0aGUgY2xhc3MgbmFtZS4KKyUKK1xkZWZcZGVmbWV0aHBhcnNlYm9keSMxIzIjMyM0IHslCisgIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCisgIFxkZWYjMiMjMSB7XGRlZnhib2R5Y29tbW9uIFxhY3RpdmVwYXJlbnMgXHNwYWNlc3BsaXR7IzN7IyMxfX19JQorICBcYmVnaW5ncm91cFxvYmV5bGluZXNcYWN0aXZlcGFyZW5zCisgICUgVGhlIFxlbXB0eSBoZXJlIHByZXZlbnRzIG1pc2ludGVycHJldGF0aW9uIG9mIGEgY29uc3RydWN0IHN1Y2ggYXMKKyAgJSAgIEBkZWZmbiB7d2hhdGV2ZXJ9IHtFbmhhcm1vbmljIGNvbW1hfQorICAlIFNlZSBjb21tZW50cyBhdCBcZGVmdHBwYXJzZWJvZHksIGFsdGhvdWdoIGluIG91ciBjYXNlIHdlIGRvbid0IGhhdmUKKyAgJSB0byByZW1vdmUgdGhlIFxlbXB0eSBhZnRlcndhcmRzLCBzaW5jZSBpdCBpcyBlbXB0eS4KKyAgXHNwYWNlc3BsaXR7IzN7IzR9fVxlbXB0eQorfQorCislIFVzZWQgZm9yIEBkZWZ0eXBlbWV0aG9kIGFuZCBAZGVmdHlwZWl2YXIuCislICMxLCAjMiwgIzMgYXJlIHRoZSBjb21tb24gYXJndW1lbnRzIChzZWUgXGRlZnBhcnNlYm9keSkuCislICM0LCBkZWxpbWl0ZWQgYnkgYSBzcGFjZSwgaXMgdGhlIGNsYXNzIG5hbWUuCislICM1IGlzIHRoZSBtZXRob2QncyByZXR1cm4gdHlwZS4KKyUKK1xkZWZcZGVmdHlwZW1ldGhwYXJzZWJvZHkjMSMyIzMjNCAjNSB7JQorICBccGFyc2Vib2R5Y29tbW9ueyMxfXsjMn17IzN9JQorICBcZGVmIzIjIzEgIyMyIHtcZGVmeGJvZHljb21tb24gXGFjdGl2ZXBhcmVucyBcc3BhY2VzcGxpdHsjM3sjIzF9eyMjMn19fSUKKyAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzXGFjdGl2ZXBhcmVucworICBcc3BhY2VzcGxpdHsjM3sjNH17IzV9fSUKK30KKworJSBVc2VkIGZvciBAZGVmdHlwZW9wLiAgVGhlIGNoYW5nZSBmcm9tIFxkZWZ0eXBlbWV0aHBhcnNlYm9keSBpcyBhbgorJSBleHRyYSBhcmd1bWVudCBhdCB0aGUgYmVnaW5uaW5nIHdoaWNoIGlzIHRoZSBgY2F0ZWdvcnknLCBpbnN0ZWFkIG9mIGl0CislIGJlaW5nIHRoZSBoYXJkd2lyZWQgc3RyaW5nIGBNZXRob2QnIG9yIGBJbnN0YW5jZSBWYXJpYWJsZScuICBXZSBoYXZlCislIHRvIGFjY291bnQgZm9yIHRoaXMgYm90aCBpbiB0aGUgXC4uLnggZGVmaW5pdGlvbiBhbmQgaW4gcGFyc2luZyB0aGUKKyUgaW5wdXQgYXQgaGFuZC4gIFRodXMgYWxzbyBuZWVkIGEgY29udHJvbCBzZXF1ZW5jZSAocGFzc2VkIGFzICM1KSBmb3IKKyUgdGhlIFxFLi4uIGRlZmluaXRpb24gdG8gYXNzaWduIHRoZSBjYXRlZ29yeSBuYW1lIHRvLgorJQorXGRlZlxkZWZ0eXBlb3BwYXJzZWJvZHkjMSMyIzMjNCM1ICM2IHslCisgIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCisgIFxkZWYjMiMjMSAjIzIgIyMzIHtcZGVmIzR7IyMxfSUKKyAgICBcZGVmeGJvZHljb21tb24gXGFjdGl2ZXBhcmVucyBcc3BhY2VzcGxpdHsjM3sjIzJ9eyMjM319fSUKKyAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzXGFjdGl2ZXBhcmVucworICBcc3BhY2VzcGxpdHsjM3sjNX17IzZ9fSUKK30KKworJSBGb3IgQGRlZm9wLgorXGRlZlxkZWZvcHBhcnNlYm9keSAjMSMyIzMjNCM1IHslCisgIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCisgIFxkZWYjMiMjMSAjIzIge1xkZWYjNHsjIzF9JQorICAgIFxkZWZ4Ym9keWNvbW1vbiBcYWN0aXZlcGFyZW5zIFxzcGFjZXNwbGl0eyMzeyMjMn19fSUKKyAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzXGFjdGl2ZXBhcmVucworICBcc3BhY2VzcGxpdHsjM3sjNX19JQorfQorCislIFRoZXNlIHBhcnNpbmcgZnVuY3Rpb25zIGFyZSBzaW1pbGFyIHRvIHRoZSBwcmVjZWRpbmcgb25lcworJSBleGNlcHQgdGhhdCB0aGV5IGRvIG5vdCBtYWtlIHBhcmVucyBpbnRvIGFjdGl2ZSBjaGFyYWN0ZXJzLgorJSBUaGVzZSBhcmUgdXNlZCBmb3IgInZhcmlhYmxlcyIgc2luY2UgdGhleSBoYXZlIG5vIGFyZ3VtZW50cy4KKyUKK1xkZWZcZGVmdmFycGFyc2Vib2R5ICMxIzIjM3slCisgIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCisgIFxkZWYjMntcZGVmeGJvZHljb21tb24gXHNwYWNlc3BsaXQjM30lCisgIFxjYXRjb2RlXGVxdWFsQ2hhcj1cYWN0aXZlCisgIFxiZWdpbmdyb3VwXG9iZXlsaW5lcworICBcc3BhY2VzcGxpdCMzJQorfQorCislIEBkZWZvcHZhci4KK1xkZWZcZGVmb3B2YXJwYXJzZWJvZHkgIzEjMiMzIzQjNSB7JQorICBccGFyc2Vib2R5Y29tbW9ueyMxfXsjMn17IzN9JQorICBcZGVmIzIjIzEgIyMyIHtcZGVmIzR7IyMxfSUKKyAgICBcZGVmeGJvZHljb21tb24gXHNwYWNlc3BsaXR7IzN7IyMyfX19JQorICBcYmVnaW5ncm91cFxvYmV5bGluZXMKKyAgXHNwYWNlc3BsaXR7IzN7IzV9fSUKK30KKworXGRlZlxkZWZ2cnBhcnNlYm9keSMxIzIjMyM0IHslCisgIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCisgIFxkZWYjMiMjMSB7XGRlZnhib2R5Y29tbW9uIFxzcGFjZXNwbGl0eyMzeyMjMX19fSUKKyAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzCisgIFxzcGFjZXNwbGl0eyMzeyM0fX0lCit9CisKKyUgVGhpcyBsb3NlcyBvbiBgQGRlZnRwIHtEYXRhIFR5cGV9IHtzdHJ1Y3QgdGVybWlvc30nIC0tIGl0IHRoaW5rcyB0aGUKKyUgdHlwZSBpcyBqdXN0IGBzdHJ1Y3QnLCBiZWNhdXNlIHdlIGxvc2UgdGhlIGJyYWNlcyBpbiBge3N0cnVjdAorJSB0ZXJtaW9zfScgd2hlbiBcc3BhY2VzcGxpdCByZWFkcyBpdHMgdW5kZWxpbWl0ZWQgYXJndW1lbnQuICBTaWdoLgorJSBcbGV0XGRlZnRwcGFyc2Vib2R5PVxkZWZ2cnBhcnNlYm9keQorJQorJSBTbywgdG8gZ2V0IGFyb3VuZCB0aGlzLCB3ZSBwdXQgXGVtcHR5IGluIHdpdGggdGhlIHR5cGUgbmFtZS4gIFRoYXQKKyUgd2F5LCBUZVggd29uJ3QgZmluZCBleGFjdGx5IGB7Li4ufScgYXMgYW4gdW5kZWxpbWl0ZWQgYXJndW1lbnQsIGFuZAorJSB3b24ndCBzdHJpcCBvZmYgdGhlIGJyYWNlcy4KKyUKK1xkZWZcZGVmdHBwYXJzZWJvZHkgIzEjMiMzIzQgeyUKKyAgXHBhcnNlYm9keWNvbW1vbnsjMX17IzJ9eyMzfSUKKyAgXGRlZiMyIyMxIHtcZGVmeGJvZHljb21tb24gXHNwYWNlc3BsaXR7IzN7IyMxfX19JQorICBcYmVnaW5ncm91cFxvYmV5bGluZXMKKyAgXHNwYWNlc3BsaXR7XHBhcnNldHBoZWFkZXJsaW5leyMzeyM0fX19XGVtcHR5Cit9CisKKyUgRmluZSwgYnV0IHRoZW4gd2UgaGF2ZSB0byBldmVudHVhbGx5IHJlbW92ZSB0aGUgXGVtcHR5ICphbmQqIHRoZQorJSBicmFjZXMgKGlmIGFueSkuICBUaGF0J3Mgd2hhdCB0aGlzIGRvZXMuCislCitcZGVmXHJlbW92ZWVtcHR5YnJhY2VzXGVtcHR5IzFccmVsYXh7IzF9CisKKyUgQWZ0ZXIgXHNwYWNlc3BsaXQgaGFzIGRvbmUgaXRzIHdvcmssIHRoaXMgaXMgY2FsbGVkIC0tICMxIGlzIHRoZSBmaW5hbAorJSB0aGluZyB0byBjYWxsLCAjMiB0aGUgdHlwZSBuYW1lICh3aGljaCBzdGFydHMgd2l0aCBcZW1wdHkpLCBhbmQgIzMKKyUgKHdoaWNoIG1pZ2h0IGJlIGVtcHR5KSB0aGUgYXJndW1lbnRzLgorJQorXGRlZlxwYXJzZXRwaGVhZGVybGluZSMxIzIjM3slCisgICMxe1xyZW1vdmVlbXB0eWJyYWNlcyMyXHJlbGF4fXsjM30lCit9JQorCislIFNwbGl0IHVwICMyICh0aGUgcmVzdCBvZiB0aGUgaW5wdXQgbGluZSkgYXQgdGhlIGZpcnN0IHNwYWNlIHRva2VuLgorJSBjYWxsICMxIHdpdGggdHdvIGFyZ3VtZW50czoKKyUgIHRoZSBmaXJzdCBpcyBhbGwgb2YgIzIgYmVmb3JlIHRoZSBzcGFjZSB0b2tlbiwKKyUgIHRoZSBzZWNvbmQgaXMgYWxsIG9mICMyIGFmdGVyIHRoYXQgc3BhY2UgdG9rZW4uCislIElmICMyIGNvbnRhaW5zIG5vIHNwYWNlIHRva2VuLCBhbGwgb2YgaXQgaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmcKKyUgYW5kIHRoZSBzZWNvbmQgaXMgcGFzc2VkIGFzIGVtcHR5LgorJQore1xvYmV5bGluZXMgJQorIFxnZGVmXHNwYWNlc3BsaXQjMSMyXl5Ne1xlbmRncm91cFxzcGFjZXNwbGl0eHsjMX0jMiBccmVsYXhcc3BhY2VzcGxpdHh9JQorIFxsb25nXGdkZWZcc3BhY2VzcGxpdHgjMSMyICMzIzRcc3BhY2VzcGxpdHh7JQorICAgXGlmeFxyZWxheCAjMyUKKyAgICAgIzF7IzJ9e30lCisgICBcZWxzZSAlCisgICAgICMxeyMyfXsjMyM0fSUKKyAgIFxmaX0lCit9CisKKyUgRGVmaW5lIEBkZWZ1bi4KKworJSBUaGlzIGlzIGNhbGxlZCB0byBlbmQgdGhlIGFyZ3VtZW50cyBwcm9jZXNzaW5nIGZvciBhbGwgdGhlIEBkZWYuLi4gY29tbWFuZHMuCislCitcZGVmXGRlZmFyZ3Njb21tb25lbmRpbmd7JQorICBcaW50ZXJsaW5lcGVuYWx0eSA9IDEwMDAwCisgIFxhZHZhbmNlXHJpZ2h0c2tpcCBieSAwcHQgcGx1cyAxZmlsCisgIFxlbmRncmFmCisgIFxub2JyZWFrXHZza2lwIC1ccGFyc2tpcAorICBccGVuYWx0eSAxMDAwMiAgJSBzaWduYWwgdG8gXHBhcnNlYm9keWNvbW1vbiBhbmQgXGRlZnhib2R5Y29tbW9uLgorfQorCislIFRoaXMgZXhwYW5kcyB0aGUgYXJncyBhbmQgdGVybWluYXRlcyB0aGUgcGFyYWdyYXBoIHRoZXkgY29tcHJpc2UuCislCitcZGVmXGRlZnVuYXJncyMxe1xmdW5jdGlvbnBhcmVucyBcc2wKKyUgRXhwYW5kLCBwcmV2ZW50aW5nIGh5cGhlbmF0aW9uIGF0IGAtJyBjaGFycy4KKyUgTm90ZSB0aGF0IGdyb3VwcyBkb24ndCBhZmZlY3QgY2hhbmdlcyBpbiBcaHlwaGVuY2hhci4KKyUgU2V0IHRoZSBmb250IHRlbXBvcmFyaWx5IGFuZCB1c2UgXGZvbnQgaW4gY2FzZSBcc2V0Zm9udCBtYWRlIFx0ZW5zbCBhIG1hY3JvLgore1x0ZW5zbFxoeXBoZW5jaGFyXGZvbnQ9MH0lCisjMSUKK3tcdGVuc2xcaHlwaGVuY2hhclxmb250PTQ1fSUKK1xpZm51bVxwYXJlbmNvdW50PTAgXGVsc2UgXGVycm1lc3NhZ2V7VW5iYWxhbmNlZCBwYXJlbnRoZXNlcyBpbiBAZGVmfVxmaSUKKyAgXGRlZmFyZ3Njb21tb25lbmRpbmcKK30KKworXGRlZlxkZWZ0eXBlZnVuYXJncyAjMXslCislIEV4cGFuZCwgcHJldmVudGluZyBoeXBoZW5hdGlvbiBhdCBgLScgY2hhcnMuCislIE5vdGUgdGhhdCBncm91cHMgZG9uJ3QgYWZmZWN0IGNoYW5nZXMgaW4gXGh5cGhlbmNoYXIuCislIFVzZSBcYm9sZGJyYXhub2FtcCwgbm90IFxmdW5jdGlvbnBhcmVucywgc28gdGhhdCAmIGlzIG5vdCBzcGVjaWFsLgorXGJvbGRicmF4bm9hbXAKK1x0Y2xvc2V7IzF9JSBhdm9pZCBcY29kZSBiZWNhdXNlIG9mIHNpZGUgZWZmZWN0cyBvbiBhY3RpdmUgY2hhcnMKKyAgXGRlZmFyZ3Njb21tb25lbmRpbmcKK30KKworJSBEbyBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIG9uZSBAZGVmdW4gb3IgQGRlZnVueCBsaW5lIGFscmVhZHkgcGFyc2VkLgorCislIEBkZWZmbiBDb21tYW5kIGZvcndhcmQtY2hhciBuY2hhcnMKKworXGRlZlxkZWZmbntcZGVmbWV0aHBhcnNlYm9keVxFZGVmZm5cZGVmZm54XGRlZmZuaGVhZGVyfQorCitcZGVmXGRlZmZuaGVhZGVyICMxIzIjM3tcZG9pbmQge2ZufXtcY29kZXsjMn19JQorXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzJ9eyMxfVxkZWZ1bmFyZ3N7IzN9XGVuZGdyb3VwICUKK1xjYXRjb2RlXGVxdWFsQ2hhcj1cb3RoZXIgJSBUdXJuIG9mZiBjaGFuZ2UgbWFkZSBpbiBcZGVmcGFyc2Vib2R5Cit9CisKKyUgQGRlZnVuID09IEBkZWZmbiBGdW5jdGlvbgorCitcZGVmXGRlZnVue1xkZWZwYXJzZWJvZHlcRWRlZnVuXGRlZnVueFxkZWZ1bmhlYWRlcn0KKworXGRlZlxkZWZ1bmhlYWRlciAjMSMye1xkb2luZCB7Zm59e1xjb2RleyMxfX0lIE1ha2UgZW50cnkgaW4gZnVuY3Rpb24gaW5kZXgKK1xiZWdpbmdyb3VwXGRlZm5hbWUgeyMxfXtccHV0d29yZERlZmZ1bmN9JQorXGRlZnVuYXJncyB7IzJ9XGVuZGdyb3VwICUKK1xjYXRjb2RlXGVxdWFsQ2hhcj1cb3RoZXIgJSBUdXJuIG9mZiBjaGFuZ2UgbWFkZSBpbiBcZGVmcGFyc2Vib2R5Cit9CisKKyUgQGRlZnR5cGVmdW4gaW50IGZvb2JhciAoaW50IEB2YXJ7Zm9vfSwgZmxvYXQgQHZhcntiYXJ9KQorCitcZGVmXGRlZnR5cGVmdW57XGRlZnBhcnNlYm9keVxFZGVmdHlwZWZ1blxkZWZ0eXBlZnVueFxkZWZ0eXBlZnVuaGVhZGVyfQorCislICMxIGlzIHRoZSBkYXRhIHR5cGUuICAjMiBpcyB0aGUgbmFtZSBhbmQgYXJncy4KK1xkZWZcZGVmdHlwZWZ1bmhlYWRlciAjMSMye1xkZWZ0eXBlZnVuaGVhZGVyeHsjMX0jMiBccmVsYXh9CislICMxIGlzIHRoZSBkYXRhIHR5cGUsICMyIHRoZSBuYW1lLCAjMyB0aGUgYXJncy4KK1xkZWZcZGVmdHlwZWZ1bmhlYWRlcnggIzEjMiAjM1xyZWxheHslCitcZG9pbmQge2ZufXtcY29kZXsjMn19JSBNYWtlIGVudHJ5IGluIGZ1bmN0aW9uIGluZGV4CitcYmVnaW5ncm91cFxkZWZuYW1lIHtcZGVmaGVhZGVyeGNvbmQjMVxyZWxheCQuJCMyfXtccHV0d29yZERlZnR5cGVmdW59JQorXGRlZnR5cGVmdW5hcmdzIHsjM31cZW5kZ3JvdXAgJQorXGNhdGNvZGVcZXF1YWxDaGFyPVxvdGhlciAlIFR1cm4gb2ZmIGNoYW5nZSBtYWRlIGluIFxkZWZwYXJzZWJvZHkKK30KKworJSBAZGVmdHlwZWZuIHtMaWJyYXJ5IEZ1bmN0aW9ufSBpbnQgZm9vYmFyIChpbnQgQHZhcntmb299LCBmbG9hdCBAdmFye2Jhcn0pCisKK1xkZWZcZGVmdHlwZWZue1xkZWZtZXRocGFyc2Vib2R5XEVkZWZ0eXBlZm5cZGVmdHlwZWZueFxkZWZ0eXBlZm5oZWFkZXJ9CisKKyUgXGRlZmhlYWRlcnhjb25kIzFccmVsYXgkLiQKKyUgcHV0cyAjMSBpbiBAY29kZSwgZm9sbG93ZWQgYnkgYSBzcGFjZSwgYnV0IGRvZXMgbm90aGluZyBpZiAjMSBpcyBudWxsLgorXGRlZlxkZWZoZWFkZXJ4Y29uZCMxIzIkLiR7XGlmeCMxXHJlbGF4XGVsc2VcY29kZXsjMSMyfSBcZml9CisKKyUgIzEgaXMgdGhlIGNsYXNzaWZpY2F0aW9uLiAgIzIgaXMgdGhlIGRhdGEgdHlwZS4gICMzIGlzIHRoZSBuYW1lIGFuZCBhcmdzLgorXGRlZlxkZWZ0eXBlZm5oZWFkZXIgIzEjMiMze1xkZWZ0eXBlZm5oZWFkZXJ4eyMxfXsjMn0jMyBccmVsYXh9CislICMxIGlzIHRoZSBjbGFzc2lmaWNhdGlvbiwgIzIgdGhlIGRhdGEgdHlwZSwgIzMgdGhlIG5hbWUsICM0IHRoZSBhcmdzLgorXGRlZlxkZWZ0eXBlZm5oZWFkZXJ4ICMxIzIjMyAjNFxyZWxheHslCitcZG9pbmQge2ZufXtcY29kZXsjM319JSBNYWtlIGVudHJ5IGluIGZ1bmN0aW9uIGluZGV4CitcYmVnaW5ncm91cAorXG5vcm1hbHBhcmVucyAlIG5vdGFibHksIHR1cm4gb2ZmIGAmJyBtYWdpYywgd2hpY2ggcHJldmVudHMKKyUgICAgICAgICAgICAgICBhdCBsZWFzdCBzb21lIEMrKyB0ZXh0IGZyb20gd29ya2luZworXGRlZm5hbWUge1xkZWZoZWFkZXJ4Y29uZCMyXHJlbGF4JC4kIzN9eyMxfSUKK1xkZWZ0eXBlZnVuYXJncyB7IzR9XGVuZGdyb3VwICUKK1xjYXRjb2RlXGVxdWFsQ2hhcj1cb3RoZXIgJSBUdXJuIG9mZiBjaGFuZ2UgbWFkZSBpbiBcZGVmcGFyc2Vib2R5Cit9CisKKyUgQGRlZm1hYyA9PSBAZGVmZm4gTWFjcm8KKworXGRlZlxkZWZtYWN7XGRlZnBhcnNlYm9keVxFZGVmbWFjXGRlZm1hY3hcZGVmbWFjaGVhZGVyfQorCitcZGVmXGRlZm1hY2hlYWRlciAjMSMye1xkb2luZCB7Zm59e1xjb2RleyMxfX0lIE1ha2UgZW50cnkgaW4gZnVuY3Rpb24gaW5kZXgKK1xiZWdpbmdyb3VwXGRlZm5hbWUgeyMxfXtccHV0d29yZERlZm1hY30lCitcZGVmdW5hcmdzIHsjMn1cZW5kZ3JvdXAgJQorXGNhdGNvZGVcZXF1YWxDaGFyPVxvdGhlciAlIFR1cm4gb2ZmIGNoYW5nZSBtYWRlIGluIFxkZWZwYXJzZWJvZHkKK30KKworJSBAZGVmc3BlYyA9PSBAZGVmZm4gU3BlY2lhbCBGb3JtCisKK1xkZWZcZGVmc3BlY3tcZGVmcGFyc2Vib2R5XEVkZWZzcGVjXGRlZnNwZWN4XGRlZnNwZWNoZWFkZXJ9CisKK1xkZWZcZGVmc3BlY2hlYWRlciAjMSMye1xkb2luZCB7Zm59e1xjb2RleyMxfX0lIE1ha2UgZW50cnkgaW4gZnVuY3Rpb24gaW5kZXgKK1xiZWdpbmdyb3VwXGRlZm5hbWUgeyMxfXtccHV0d29yZERlZnNwZWN9JQorXGRlZnVuYXJncyB7IzJ9XGVuZGdyb3VwICUKK1xjYXRjb2RlXGVxdWFsQ2hhcj1cb3RoZXIgJSBUdXJuIG9mZiBjaGFuZ2UgbWFkZSBpbiBcZGVmcGFyc2Vib2R5Cit9CisKKyUgQGRlZm9wIENBVEVHT1JZIENMQVNTIE9QRVJBVElPTiBBUkcuLi4KKyUKK1xkZWZcZGVmb3AgIzEge1xkZWZcZGVmb3B0eXBleyMxfSUKK1xkZWZvcHBhcnNlYm9keVxFZGVmb3BcZGVmb3B4XGRlZm9waGVhZGVyXGRlZm9wdHlwZX0KKyUKK1xkZWZcZGVmb3BoZWFkZXIjMSMyIzN7JQorICBcZG9zdWJpbmR7Zm59e1xjb2RleyMyfX17XHB1dHdvcmRvblwgXGNvZGV7IzF9fSUgZnVuY3Rpb24gaW5kZXggZW50cnkKKyAgXGJlZ2luZ3JvdXAKKyAgICBcZGVmbmFtZXsjMn17XGRlZm9wdHlwZVwgXHB1dHdvcmRvblwgIzF9JQorICAgIFxkZWZ1bmFyZ3N7IzN9JQorICBcZW5kZ3JvdXAKK30KKworJSBAZGVmdHlwZW9wIENBVEVHT1JZIENMQVNTIFRZUEUgT1BFUkFUSU9OIEFSRy4uLgorJQorXGRlZlxkZWZ0eXBlb3AgIzEge1xkZWZcZGVmdHlwZW9wY2F0ZWdvcnl7IzF9JQorICBcZGVmdHlwZW9wcGFyc2Vib2R5XEVkZWZ0eXBlb3BcZGVmdHlwZW9weFxkZWZ0eXBlb3BoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgXGRlZnR5cGVvcGNhdGVnb3J5fQorJQorJSAjMSBpcyB0aGUgY2xhc3MgbmFtZSwgIzIgdGhlIGRhdGEgdHlwZSwgIzMgdGhlIG9wZXJhdGlvbiBuYW1lLCAjNCB0aGUgYXJncy4KK1xkZWZcZGVmdHlwZW9waGVhZGVyIzEjMiMzIzR7JQorICBcZG9zdWJpbmR7Zm59e1xjb2RleyMzfX17XHB1dHdvcmRvblwgXGNvZGV7IzF9fSUgZW50cnkgaW4gZnVuY3Rpb24gaW5kZXgKKyAgXGJlZ2luZ3JvdXAKKyAgICBcZGVmbmFtZXtcZGVmaGVhZGVyeGNvbmQjMlxyZWxheCQuJCMzfQorICAgICAgICAgICAge1xkZWZ0eXBlb3BjYXRlZ29yeVwgXHB1dHdvcmRvblwgXGNvZGV7IzF9fSUKKyAgICBcZGVmdHlwZWZ1bmFyZ3N7IzR9JQorICBcZW5kZ3JvdXAKK30KKworJSBAZGVmdHlwZW1ldGhvZCBDTEFTUyBUWVBFIE1FVEhPRCBBUkcuLi4KKyUKK1xkZWZcZGVmdHlwZW1ldGhvZHslCisgIFxkZWZ0eXBlbWV0aHBhcnNlYm9keVxFZGVmdHlwZW1ldGhvZFxkZWZ0eXBlbWV0aG9keFxkZWZ0eXBlbWV0aG9kaGVhZGVyfQorJQorJSAjMSBpcyB0aGUgY2xhc3MgbmFtZSwgIzIgdGhlIGRhdGEgdHlwZSwgIzMgdGhlIG1ldGhvZCBuYW1lLCAjNCB0aGUgYXJncy4KK1xkZWZcZGVmdHlwZW1ldGhvZGhlYWRlciMxIzIjMyM0eyUKKyAgXGRvc3ViaW5ke2ZufXtcY29kZXsjM319e1xwdXR3b3Jkb25cIFxjb2RleyMxfX0lIGVudHJ5IGluIGZ1bmN0aW9uIGluZGV4CisgIFxiZWdpbmdyb3VwCisgICAgXGRlZm5hbWV7XGRlZmhlYWRlcnhjb25kIzJccmVsYXgkLiQjM317XHB1dHdvcmRNZXRob2RvblwgXGNvZGV7IzF9fSUKKyAgICBcZGVmdHlwZWZ1bmFyZ3N7IzR9JQorICBcZW5kZ3JvdXAKK30KKworJSBAZGVmdHlwZWl2YXIgQ0xBU1MgVFlQRSBWQVJOQU1FCislCitcZGVmXGRlZnR5cGVpdmFyeyUKKyAgXGRlZnR5cGVtZXRocGFyc2Vib2R5XEVkZWZ0eXBlaXZhclxkZWZ0eXBlaXZhcnhcZGVmdHlwZWl2YXJoZWFkZXJ9CislCislICMxIGlzIHRoZSBjbGFzcyBuYW1lLCAjMiB0aGUgZGF0YSB0eXBlLCAjMyB0aGUgdmFyaWFibGUgbmFtZS4KK1xkZWZcZGVmdHlwZWl2YXJoZWFkZXIjMSMyIzN7JQorICBcZG9zdWJpbmR7dnJ9e1xjb2RleyMzfX17XHB1dHdvcmRvZlwgXGNvZGV7IzF9fSUgZW50cnkgaW4gdmFyaWFibGUgaW5kZXgKKyAgXGJlZ2luZ3JvdXAKKyAgICBcZGVmbmFtZXtcZGVmaGVhZGVyeGNvbmQjMlxyZWxheCQuJCMzfQorICAgICAgICAgICAge1xwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mXCBcY29kZXsjMX19JQorICAgIFxkZWZ2YXJhcmdzeyMzfSUKKyAgXGVuZGdyb3VwCit9CisKKyUgQGRlZm1ldGhvZCA9PSBAZGVmb3AgTWV0aG9kCislCitcZGVmXGRlZm1ldGhvZHtcZGVmbWV0aHBhcnNlYm9keVxFZGVmbWV0aG9kXGRlZm1ldGhvZHhcZGVmbWV0aG9kaGVhZGVyfQorJQorJSAjMSBpcyB0aGUgY2xhc3MgbmFtZSwgIzIgdGhlIG1ldGhvZCBuYW1lLCAjMyB0aGUgYXJncy4KK1xkZWZcZGVmbWV0aG9kaGVhZGVyIzEjMiMzeyUKKyAgXGRvc3ViaW5ke2ZufXtcY29kZXsjMn19e1xwdXR3b3Jkb25cIFxjb2RleyMxfX0lIGVudHJ5IGluIGZ1bmN0aW9uIGluZGV4CisgIFxiZWdpbmdyb3VwCisgICAgXGRlZm5hbWV7IzJ9e1xwdXR3b3JkTWV0aG9kb25cIFxjb2RleyMxfX0lCisgICAgXGRlZnVuYXJnc3sjM30lCisgIFxlbmRncm91cAorfQorCislIEBkZWZjdiB7Q2xhc3MgT3B0aW9ufSBmb28tY2xhc3MgZm9vLWZsYWcKKworXGRlZlxkZWZjdiAjMSB7XGRlZlxkZWZjdnR5cGV7IzF9JQorXGRlZm9wdmFycGFyc2Vib2R5XEVkZWZjdlxkZWZjdnhcZGVmY3ZhcmhlYWRlclxkZWZjdnR5cGV9CisKK1xkZWZcZGVmY3ZhcmhlYWRlciAjMSMyIzN7JQorICBcZG9zdWJpbmR7dnJ9e1xjb2RleyMyfX17XHB1dHdvcmRvZlwgXGNvZGV7IzF9fSUgdmFyaWFibGUgaW5kZXggZW50cnkKKyAgXGJlZ2luZ3JvdXAKKyAgICBcZGVmbmFtZXsjMn17XGRlZmN2dHlwZVwgXHB1dHdvcmRvZlwgIzF9JQorICAgIFxkZWZ2YXJhcmdzeyMzfSUKKyAgXGVuZGdyb3VwCit9CisKKyUgQGRlZml2YXIgQ0xBU1MgVkFSTkFNRSA9PSBAZGVmY3Yge0luc3RhbmNlIFZhcmlhYmxlfSBDTEFTUyBWQVJOQU1FCislCitcZGVmXGRlZml2YXJ7XGRlZnZycGFyc2Vib2R5XEVkZWZpdmFyXGRlZml2YXJ4XGRlZml2YXJoZWFkZXJ9CislCitcZGVmXGRlZml2YXJoZWFkZXIjMSMyIzN7JQorICBcZG9zdWJpbmR7dnJ9e1xjb2RleyMyfX17XHB1dHdvcmRvZlwgXGNvZGV7IzF9fSUgZW50cnkgaW4gdmFyIGluZGV4CisgIFxiZWdpbmdyb3VwCisgICAgXGRlZm5hbWV7IzJ9e1xwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mXCAjMX0lCisgICAgXGRlZnZhcmFyZ3N7IzN9JQorICBcZW5kZ3JvdXAKK30KKworJSBAZGVmdmFyCislIEZpcnN0LCBkZWZpbmUgdGhlIHByb2Nlc3NpbmcgdGhhdCBpcyB3YW50ZWQgZm9yIGFyZ3VtZW50cyBvZiBAZGVmdmFyLgorJSBUaGlzIGlzIGFjdHVhbGx5IHNpbXBsZToganVzdCBwcmludCB0aGVtIGluIHJvbWFuLgorJSBUaGlzIG11c3QgZXhwYW5kIHRoZSBhcmdzIGFuZCB0ZXJtaW5hdGUgdGhlIHBhcmFncmFwaCB0aGV5IG1ha2UgdXAKK1xkZWZcZGVmdmFyYXJncyAjMXtcbm9ybWFscGFyZW5zICMxJQorICBcZGVmYXJnc2NvbW1vbmVuZGluZworfQorCislIEBkZWZ2ciBDb3VudGVyIGZvby1jb3VudAorCitcZGVmXGRlZnZye1xkZWZ2cnBhcnNlYm9keVxFZGVmdnJcZGVmdnJ4XGRlZnZyaGVhZGVyfQorCitcZGVmXGRlZnZyaGVhZGVyICMxIzIjM3tcZG9pbmQge3ZyfXtcY29kZXsjMn19JQorXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzJ9eyMxfVxkZWZ2YXJhcmdzeyMzfVxlbmRncm91cH0KKworJSBAZGVmdmFyID09IEBkZWZ2ciBWYXJpYWJsZQorCitcZGVmXGRlZnZhcntcZGVmdmFycGFyc2Vib2R5XEVkZWZ2YXJcZGVmdmFyeFxkZWZ2YXJoZWFkZXJ9CisKK1xkZWZcZGVmdmFyaGVhZGVyICMxIzJ7XGRvaW5kIHt2cn17XGNvZGV7IzF9fSUgTWFrZSBlbnRyeSBpbiB2YXIgaW5kZXgKK1xiZWdpbmdyb3VwXGRlZm5hbWUgeyMxfXtccHV0d29yZERlZnZhcn0lCitcZGVmdmFyYXJncyB7IzJ9XGVuZGdyb3VwICUKK30KKworJSBAZGVmb3B0ID09IEBkZWZ2ciB7VXNlciBPcHRpb259CisKK1xkZWZcZGVmb3B0e1xkZWZ2YXJwYXJzZWJvZHlcRWRlZm9wdFxkZWZvcHR4XGRlZm9wdGhlYWRlcn0KKworXGRlZlxkZWZvcHRoZWFkZXIgIzEjMntcZG9pbmQge3ZyfXtcY29kZXsjMX19JSBNYWtlIGVudHJ5IGluIHZhciBpbmRleAorXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzF9e1xwdXR3b3JkRGVmb3B0fSUKK1xkZWZ2YXJhcmdzIHsjMn1cZW5kZ3JvdXAgJQorfQorCislIEBkZWZ0eXBldmFyIGludCBmb29iYXIKKworXGRlZlxkZWZ0eXBldmFye1xkZWZ2YXJwYXJzZWJvZHlcRWRlZnR5cGV2YXJcZGVmdHlwZXZhcnhcZGVmdHlwZXZhcmhlYWRlcn0KKworJSAjMSBpcyB0aGUgZGF0YSB0eXBlLiAgIzIgaXMgdGhlIG5hbWUsIHBlcmhhcHMgZm9sbG93ZWQgYnkgdGV4dCB0aGF0CislIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGRhdGEgdHlwZSwgd2hpY2ggc2hvdWxkIG5vdCBiZSBwdXQgaW50byB0aGUgaW5kZXguCitcZGVmXGRlZnR5cGV2YXJoZWFkZXIgIzEjMnslCitcZG92YXJpbmQjMiBccmVsYXglIE1ha2UgZW50cnkgaW4gdmFyaWFibGVzIGluZGV4CitcYmVnaW5ncm91cFxkZWZuYW1lIHtcZGVmaGVhZGVyeGNvbmQjMVxyZWxheCQuJCMyfXtccHV0d29yZERlZnR5cGV2YXJ9JQorICBcZGVmYXJnc2NvbW1vbmVuZGluZworXGVuZGdyb3VwfQorXGRlZlxkb3ZhcmluZCMxICMyXHJlbGF4e1xkb2luZHt2cn17XGNvZGV7IzF9fX0KKworJSBAZGVmdHlwZXZyIHtHbG9iYWwgRmxhZ30gaW50IGVuYWJsZQorCitcZGVmXGRlZnR5cGV2cntcZGVmdnJwYXJzZWJvZHlcRWRlZnR5cGV2clxkZWZ0eXBldnJ4XGRlZnR5cGV2cmhlYWRlcn0KKworXGRlZlxkZWZ0eXBldnJoZWFkZXIgIzEjMiMze1xkb3ZhcmluZCMzIFxyZWxheCUKK1xiZWdpbmdyb3VwXGRlZm5hbWUge1xkZWZoZWFkZXJ4Y29uZCMyXHJlbGF4JC4kIzN9eyMxfQorICBcZGVmYXJnc2NvbW1vbmVuZGluZworXGVuZGdyb3VwfQorCislIE5vdyBkZWZpbmUgQGRlZnRwCislIEFyZ3MgYXJlIHByaW50ZWQgaW4gYm9sZCwgYSBzbGlnaHQgZGlmZmVyZW5jZSBmcm9tIEBkZWZ2YXIuCisKK1xkZWZcZGVmdHBhcmdzICMxe1xiZiBcZGVmdmFyYXJnc3sjMX19CisKKyUgQGRlZnRwIENsYXNzIHdpbmRvdyBoZWlnaHQgd2lkdGggLi4uCisKK1xkZWZcZGVmdHB7XGRlZnRwcGFyc2Vib2R5XEVkZWZ0cFxkZWZ0cHhcZGVmdHBoZWFkZXJ9CisKK1xkZWZcZGVmdHBoZWFkZXIgIzEjMiMze1xkb2luZCB7dHB9e1xjb2RleyMyfX0lCitcYmVnaW5ncm91cFxkZWZuYW1lIHsjMn17IzF9XGRlZnRwYXJnc3sjM31cZW5kZ3JvdXB9CisKKyUgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHVzZWQgaWYgeW91IHVzZSBAZGVmdW54IChldGMuKQorJSBhbnl3aGVyZSBvdGhlciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVyIGEgQGRlZnVuIG9yIEBkZWZ1bnguCislCitcZGVmXGRlZmN2eCMxIHtcZXJybWVzc2FnZXtAZGVmY3Z4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZmZueCMxIHtcZXJybWVzc2FnZXtAZGVmZm54IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZml2YXJ4IzEge1xlcnJtZXNzYWdle0BkZWZpdmFyeCBpbiBpbnZhbGlkIGNvbnRleHR9fQorXGRlZlxkZWZtYWN4IzEge1xlcnJtZXNzYWdle0BkZWZtYWN4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZm1ldGhvZHgjMSB7XGVycm1lc3NhZ2V7QGRlZm1ldGhvZHggaW4gaW52YWxpZCBjb250ZXh0fX0KK1xkZWZcZGVmb3B0eCAjMSB7XGVycm1lc3NhZ2V7QGRlZm9wdHggaW4gaW52YWxpZCBjb250ZXh0fX0KK1xkZWZcZGVmb3B4IzEge1xlcnJtZXNzYWdle0BkZWZvcHggaW4gaW52YWxpZCBjb250ZXh0fX0KK1xkZWZcZGVmc3BlY3gjMSB7XGVycm1lc3NhZ2V7QGRlZnNwZWN4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnRweCMxIHtcZXJybWVzc2FnZXtAZGVmdHB4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnR5cGVmbngjMSB7XGVycm1lc3NhZ2V7QGRlZnR5cGVmbnggaW4gaW52YWxpZCBjb250ZXh0fX0KK1xkZWZcZGVmdHlwZWZ1bngjMSB7XGVycm1lc3NhZ2V7QGRlZnR5cGVmdW54IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnR5cGVpdmFyeCMxIHtcZXJybWVzc2FnZXtAZGVmdHlwZWl2YXJ4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnR5cGVtZXRob2R4IzEge1xlcnJtZXNzYWdle0BkZWZ0eXBlbWV0aG9keCBpbiBpbnZhbGlkIGNvbnRleHR9fQorXGRlZlxkZWZ0eXBlb3B4IzEge1xlcnJtZXNzYWdle0BkZWZ0eXBlb3B4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnR5cGV2YXJ4IzEge1xlcnJtZXNzYWdle0BkZWZ0eXBldmFyeCBpbiBpbnZhbGlkIGNvbnRleHR9fQorXGRlZlxkZWZ0eXBldnJ4IzEge1xlcnJtZXNzYWdle0BkZWZ0eXBldnJ4IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnVueCMxIHtcZXJybWVzc2FnZXtAZGVmdW54IGluIGludmFsaWQgY29udGV4dH19CitcZGVmXGRlZnZhcngjMSB7XGVycm1lc3NhZ2V7QGRlZnZhcnggaW4gaW52YWxpZCBjb250ZXh0fX0KK1xkZWZcZGVmdnJ4IzEge1xlcnJtZXNzYWdle0BkZWZ2cnggaW4gaW52YWxpZCBjb250ZXh0fX0KKworCitcbWVzc2FnZXttYWNyb3MsfQorJSBAbWFjcm8uCisKKyUgVG8gZG8gdGhpcyByaWdodCB3ZSBuZWVkIGEgZmVhdHVyZSBvZiBlLVRlWCwgXHNjYW50b2tlbnMsCislIHdoaWNoIHdlIGFycmFuZ2UgdG8gZW11bGF0ZSB3aXRoIGEgdGVtcG9yYXJ5IGZpbGUgaW4gb3JkaW5hcnkgVGVYLgorXGlmeFxlVGVYdmVyc2lvblx1bmRlZmluZWQKKyBcbmV3d3JpdGVcbWFjc2NyaWJibGUKKyBcZGVmXHNjYW5tYWNybyMxeyUKKyAgIFxiZWdpbmdyb3VwIFxuZXdsaW5lY2hhcmBcXl5NCisgICAlIFVuZG8gY2F0Y29kZSBjaGFuZ2VzIG9mIFxzdGFydGNvbnRlbnRzIGFuZCBcZG9wcmludGluZGV4CisgICBcY2F0Y29kZWBcQD0wIFxjYXRjb2RlYFxcPVxvdGhlciBcZXNjYXBlY2hhcj1gXEAKKyAgICUgQXBwZW5kIFxlbmRpbnB1dCB0byBtYWtlIHN1cmUgdGhhdCBUZVggZG9lcyBub3Qgc2VlIHRoZSBlbmRpbmcgbmV3bGluZS4KKyAgIFx0b2tzMD17IzFcZW5kaW5wdXR9JQorICAgXGltbWVkaWF0ZVxvcGVub3V0XG1hY3NjcmliYmxlPVxqb2JuYW1lLnRtcAorICAgXGltbWVkaWF0ZVx3cml0ZVxtYWNzY3JpYmJsZXtcdGhlXHRva3MwfSUKKyAgIFxpbW1lZGlhdGVcY2xvc2VvdXRcbWFjc2NyaWJibGUKKyAgIFxsZXRceGVhdHNwYWNlc1xlYXRzcGFjZXMKKyAgIFxpbnB1dCBcam9ibmFtZS50bXAKKyAgIFxlbmRncm91cAorfQorXGVsc2UKK1xkZWZcc2Nhbm1hY3JvIzF7JQorXGJlZ2luZ3JvdXAgXG5ld2xpbmVjaGFyYFxeXk0KKyUgVW5kbyBjYXRjb2RlIGNoYW5nZXMgb2YgXHN0YXJ0Y29udGVudHMgYW5kIFxkb3ByaW50aW5kZXgKK1xjYXRjb2RlYFxAPTAgXGNhdGNvZGVgXFw9XG90aGVyIFxlc2NhcGVjaGFyPWBcQAorXGxldFx4ZWF0c3BhY2VzXGVhdHNwYWNlc1xzY2FudG9rZW5zeyMxXGVuZGlucHV0fVxlbmRncm91cH0KK1xmaQorCitcbmV3Y291bnRccGFyYW1ubyAgICUgQ291bnQgb2YgcGFyYW1ldGVycworXG5ld3Rva3NcbWFjbmFtZSAgICAlIE1hY3JvIG5hbWUKK1xuZXdpZlxpZnJlY3Vyc2l2ZSAgJSBJcyBpdCByZWN1cnNpdmU/CitcZGVmXG1hY3JvbGlzdHt9ICAgICUgTGlzdCBvZiBhbGwgZGVmaW5lZCBtYWNyb3MgaW4gdGhlIGZvcm0KKyAgICAgICAgICAgICAgICAgICAgJSBcZG9cbWFjcm8xXGRvXG1hY3JvMi4uLgorCislIFV0aWxpdHkgcm91dGluZXMuCislIFRoaXNkb2VzIFxsZXQgIzEgPSAjMiwgZXhjZXB0IHdpdGggXGNzbmFtZXMuCitcZGVmXGNzbGV0IzEjMnslCitcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKK1xleHBhbmRhZnRlclxsZXQKK1xleHBhbmRhZnRlclxleHBhbmRhZnRlcgorXGNzbmFtZSMxXGVuZGNzbmFtZQorXGNzbmFtZSMyXGVuZGNzbmFtZX0KKworJSBUcmltIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBvZmYgYSBzdHJpbmcuCislIENvbmNlcHRzIGZyb20gYXJvLWJlbmQgcHJvYmxlbSAxNSAoc2VlIENUQU4pLgore1xjYXRjb2RlYFxAPTExCitcZ2RlZlxlYXRzcGFjZXMgIzF7XGV4cGFuZGFmdGVyXHRyaW1AXGV4cGFuZGFmdGVyeyMxIH19CitcZ2RlZlx0cmltQCAjMXtcdHJpbUBAIEAjMSBAICMxIEAgQEB9CitcZ2RlZlx0cmltQEAgIzFAICMyQCAjM0BAe1x0cmltQEBAXGVtcHR5ICMyIEB9CitcZGVmXHVuYnJhY2UjMXsjMX0KK1x1bmJyYWNle1xnZGVmXHRyaW1AQEAgIzEgfSAjMkB7IzF9Cit9CisKKyUgVHJpbSBhIHNpbmdsZSB0cmFpbGluZyBeXk0gb2ZmIGEgc3RyaW5nLgore1xjYXRjb2RlYFxeXk09XG90aGVyIFxjYXRjb2RlYFxRPTMlCitcZ2RlZlxlYXRjciAjMXtcZWF0Y3JhICMxUV5eTVF9JQorXGdkZWZcZWF0Y3JhIzFeXk1Re1xlYXRjcmIjMVF9JQorXGdkZWZcZWF0Y3JiIzFRIzJReyMxfSUKK30KKworJSBNYWNybyBib2RpZXMgYXJlIGFic29yYmVkIGFzIGFuIGFyZ3VtZW50IGluIGEgY29udGV4dCB3aGVyZQorJSBhbGwgY2hhcmFjdGVycyBhcmUgY2F0Y29kZSAxMCwgMTEgb3IgMTIsIGV4Y2VwdCBcIHdoaWNoIGlzIGFjdGl2ZQorJSAoYXMgaW4gbm9ybWFsIHRleGluZm8pLiBJdCBpcyBuZWNlc3NhcnkgdG8gY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIFwuCisKKyUgSXQncyBuZWNlc3NhcnkgdG8gaGF2ZSBoYXJkIENScyB3aGVuIHRoZSBtYWNybyBpcyBleGVjdXRlZC4gVGhpcyBpcworJSBkb25lIGJ5ICBtYWtpbmcgXl5NIChcZW5kbGluZWNoYXIpIGNhdGNvZGUgMTIgd2hlbiByZWFkaW5nIHRoZSBtYWNybworJSBib2R5LCBhbmQgdGhlbiBtYWtpbmcgaXQgdGhlIFxuZXdsaW5lY2hhciBpbiBcc2Nhbm1hY3JvLgorCitcZGVmXG1hY3JvYm9keWN0eHR7JQorICBcY2F0Y29kZWBcfj1cb3RoZXIKKyAgXGNhdGNvZGVgXF49XG90aGVyCisgIFxjYXRjb2RlYFxfPVxvdGhlcgorICBcY2F0Y29kZWBcfD1cb3RoZXIKKyAgXGNhdGNvZGVgXDw9XG90aGVyCisgIFxjYXRjb2RlYFw+PVxvdGhlcgorICBcY2F0Y29kZWBcKz1cb3RoZXIKKyAgXGNhdGNvZGVgXHs9XG90aGVyCisgIFxjYXRjb2RlYFx9PVxvdGhlcgorICBcY2F0Y29kZWBcQD1cb3RoZXIKKyAgXGNhdGNvZGVgXF5eTT1cb3RoZXIKKyAgXHVzZW1ib2R5YmFja3NsYXNofQorCitcZGVmXG1hY3JvYXJnY3R4dHslCisgIFxjYXRjb2RlYFx+PVxvdGhlcgorICBcY2F0Y29kZWBcXj1cb3RoZXIKKyAgXGNhdGNvZGVgXF89XG90aGVyCisgIFxjYXRjb2RlYFx8PVxvdGhlcgorICBcY2F0Y29kZWBcPD1cb3RoZXIKKyAgXGNhdGNvZGVgXD49XG90aGVyCisgIFxjYXRjb2RlYFwrPVxvdGhlcgorICBcY2F0Y29kZWBcQD1cb3RoZXIKKyAgXGNhdGNvZGVgXFw9XG90aGVyfQorCislIFxtYm9keWJhY2tzbGFzaCBpcyB0aGUgZGVmaW5pdGlvbiBvZiBcIGluIEBtYWNybyBib2RpZXMuCislIEl0IG1hcHMgXGZvb1wgPT4gXGNzbmFtZSBtYWNhcmcuZm9vXGVuZGNzbmFtZSA9PiAjTgorJSB3aGVyZSBOIGlzIHRoZSBtYWNybyBwYXJhbWV0ZXIgbnVtYmVyLgorJSBXZSBkZWZpbmUgXGNzbmFtZSBtYWNhcmcuXGVuZGNzbmFtZSB0byBiZSBccmVhbGJhY2tzbGFzaCwgc28KKyUgXFwgaW4gbWFjcm8gcmVwbGFjZW1lbnQgdGV4dCBnZXRzIHlvdSBhIGJhY2tzbGFzaC4KKwore1xjYXRjb2RlYEA9MCBAY2F0Y29kZWBAXD1AYWN0aXZlCisgQGdkZWZAdXNlbWJvZHliYWNrc2xhc2h7QGxldFw9QG1ib2R5YmFja3NsYXNofQorIEBnZGVmQG1ib2R5YmFja3NsYXNoIzFce0Bjc25hbWUgbWFjYXJnLiMxQGVuZGNzbmFtZX0KK30KK1xleHBhbmRhZnRlclxkZWZcY3NuYW1lIG1hY2FyZy5cZW5kY3NuYW1le1xyZWFsYmFja3NsYXNofQorCitcZGVmXG1hY3Jve1xyZWN1cnNpdmVmYWxzZVxwYXJzZWFyZ1xtYWNyb3h4eH0KK1xkZWZccm1hY3Jve1xyZWN1cnNpdmV0cnVlXHBhcnNlYXJnXG1hY3JveHh4fQorCitcZGVmXG1hY3JveHh4IzF7JQorICBcZ2V0YXJnc3sjMX0lICAgICAgICAgICBub3cgXG1hY25hbWUgaXMgdGhlIG1hY25hbWUgYW5kIFxhcmdsIHRoZSBhcmdsaXN0CisgIFxpZnhcYXJnbFxlbXB0eSAgICAgICAlIG5vIGFyZ3VtZW50cworICAgICBccGFyYW1ubz0wJQorICBcZWxzZQorICAgICBcZXhwYW5kYWZ0ZXJccGFyc2VtYXJnZGVmIFxhcmdsOyUKKyAgXGZpCisgIFxpZjFcY3NuYW1lIGlzbWFjcm8uXHRoZVxtYWNuYW1lXGVuZGNzbmFtZQorICAgICBcbWVzc2FnZXtXYXJuaW5nOiByZWRlZmluaW5nIFx0aGVcbWFjbmFtZX0lCisgIFxlbHNlCisgICAgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFx0aGVcbWFjbmFtZVxlbmRjc25hbWUgXHJlbGF4CisgICAgIFxlbHNlIFxlcnJtZXNzYWdle01hY3JvIG5hbWUgXHRoZVxtYWNuYW1lXHNwYWNlIGFscmVhZHkgZGVmaW5lZH1cZmkKKyAgICAgXGdsb2JhbFxjc2xldHttYWNzYXZlLlx0aGVcbWFjbmFtZX17XHRoZVxtYWNuYW1lfSUKKyAgICAgXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIGlzbWFjcm8uXHRoZVxtYWNuYW1lXGVuZGNzbmFtZT0xJQorICAgICAlIEFkZCB0aGUgbWFjcm9uYW1lIHRvIFxtYWNyb2xpc3QKKyAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1xtYWNyb2xpc3RcZG99JQorICAgICBceGRlZlxtYWNyb2xpc3R7XHRoZVx0b2tzMAorICAgICAgIFxleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1lfSUKKyAgXGZpCisgIFxiZWdpbmdyb3VwIFxtYWNyb2JvZHljdHh0CisgIFxpZnJlY3Vyc2l2ZSBcZXhwYW5kYWZ0ZXJccGFyc2VybWFjYm9keQorICBcZWxzZSBcZXhwYW5kYWZ0ZXJccGFyc2VtYWNib2R5CisgIFxmaX0KKworXGRlZlx1bm1hY3Jve1xwYXJzZWFyZ1xkb3VubWFjcm99CitcZGVmXGRvdW5tYWNybyMxeyUKKyAgXGlmMVxjc25hbWUgaXNtYWNyby4jMVxlbmRjc25hbWUKKyAgICBcZ2xvYmFsXGNzbGV0eyMxfXttYWNzYXZlLiMxfSUKKyAgICBcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldCBcY3NuYW1lIGlzbWFjcm8uIzFcZW5kY3NuYW1lPTAlCisgICAgJSBSZW1vdmUgdGhlIG1hY3JvIG5hbWUgZnJvbSBcbWFjcm9saXN0OgorICAgIFxiZWdpbmdyb3VwCisgICAgICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSMxXGVuZGNzbmFtZSBccmVsYXgKKyAgICAgIFxsZXRcZG9cdW5tYWNyb2RvCisgICAgICBceGRlZlxtYWNyb2xpc3R7XG1hY3JvbGlzdH0lCisgICAgXGVuZGdyb3VwCisgIFxlbHNlCisgICAgXGVycm1lc3NhZ2V7TWFjcm8gIzEgbm90IGRlZmluZWR9JQorICBcZmkKK30KKworJSBDYWxsZWQgYnkgXGRvIGZyb20gXGRvdW5tYWNybyBvbiBlYWNoIG1hY3JvLiAgVGhlIGlkZWEgaXMgdG8gb21pdCBhbnkKKyUgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZCB0byBccmVsYXguCislCitcZGVmXHVubWFjcm9kbyMxeyUKKyAgXGlmeCMxXHJlbGF4CisgICAgJSByZW1vdmUgdGhpcworICBcZWxzZQorICAgIFxub2V4cGFuZFxkbyBcbm9leHBhbmQgIzElCisgIFxmaQorfQorCislIFRoaXMgbWFrZXMgdXNlIG9mIHRoZSBvYnNjdXJlIGZlYXR1cmUgdGhhdCBpZiB0aGUgbGFzdCB0b2tlbiBvZiBhCislIDxwYXJhbWV0ZXIgbGlzdD4gaXMgIywgdGhlbiB0aGUgcHJlY2VkaW5nIGFyZ3VtZW50IGlzIGRlbGltaXRlZCBieQorJSBhbiBvcGVuaW5nIGJyYWNlLCBhbmQgdGhhdCBvcGVuaW5nIGJyYWNlIGlzIG5vdCBjb25zdW1lZC4KK1xkZWZcZ2V0YXJncyMxe1xnZXRhcmdzeHh4IzF7fX0KK1xkZWZcZ2V0YXJnc3h4eCMxI3tcZ2V0bWFjbmFtZSAjMSBccmVsYXhcZ2V0bWFjYXJnc30KK1xkZWZcZ2V0bWFjbmFtZSAjMSAjMlxyZWxheHtcbWFjbmFtZT17IzF9fQorXGRlZlxnZXRtYWNhcmdzIzF7XGRlZlxhcmdseyMxfX0KKworJSBQYXJzZSB0aGUgb3B0aW9uYWwge3BhcmFtc30gbGlzdC4gIFNldCB1cCBccGFyYW1ubyBhbmQgXHBhcmFtbGlzdAorJSBzbyBcZGVmbWFjcm8ga25vd3Mgd2hhdCB0byBkby4gIERlZmluZSBcbWFjYXJnLmJsYWggZm9yIGVhY2ggYmxhaAorJSBpbiB0aGUgcGFyYW1zIGxpc3QsIHRvIGJlICMjTiB3aGVyZSBOIGlzIHRoZSBwb3NpdGlvbiBpbiB0aGF0IGxpc3QuCislIFRoYXQgZ2V0cyB1c2VkIGJ5IFxtYm9keWJhY2tzbGFzaCAoYWJvdmUpLgorCislIFdlIG5lZWQgdG8gZ2V0IGBtYWNybyBwYXJhbWV0ZXIgY2hhciAjJyBpbnRvIHNldmVyYWwgZGVmaW5pdGlvbnMuCislIFRoZSB0ZWNobmlxdWUgdXNlZCBpcyBzdG9sZW4gZnJvbSBMYVRlWDogIGxldCBcaGFzaCBiZSBzb21ldGhpbmcKKyUgdW5leHBhbmRhYmxlLCBpbnNlcnQgdGhhdCB3aGVyZXZlciB5b3UgbmVlZCBhICMsIGFuZCB0aGVuIHJlZGVmaW5lCislIGl0IHRvICMganVzdCBiZWZvcmUgdXNpbmcgdGhlIHRva2VuIGxpc3QgcHJvZHVjZWQuCislCislIFRoZSBzYW1lIHRlY2huaXF1ZSBpcyB1c2VkIHRvIHByb3RlY3QgXGVhdHNwYWNlcyB0aWxsIGp1c3QgYmVmb3JlCislIHRoZSBtYWNybyBpcyB1c2VkLgorCitcZGVmXHBhcnNlbWFyZ2RlZiMxO3tccGFyYW1ubz0wXGRlZlxwYXJhbWxpc3R7fSUKKyAgICAgICAgXGxldFxoYXNoXHJlbGF4XGxldFx4ZWF0c3BhY2VzXHJlbGF4XHBhcnNlbWFyZ2RlZnh4eCMxLDssfQorXGRlZlxwYXJzZW1hcmdkZWZ4eHgjMSx7JQorICBcaWYjMTtcbGV0XG5leHQ9XHJlbGF4CisgIFxlbHNlIFxsZXRcbmV4dD1ccGFyc2VtYXJnZGVmeHh4CisgICAgXGFkdmFuY2VccGFyYW1ubyBieSAxJQorICAgIFxleHBhbmRhZnRlclxlZGVmXGNzbmFtZSBtYWNhcmcuXGVhdHNwYWNlc3sjMX1cZW5kY3NuYW1lCisgICAgICAgIHtceGVhdHNwYWNlc3tcaGFzaFx0aGVccGFyYW1ub319JQorICAgIFxlZGVmXHBhcmFtbGlzdHtccGFyYW1saXN0XGhhc2hcdGhlXHBhcmFtbm8sfSUKKyAgXGZpXG5leHR9CisKKyUgVGhlc2UgdHdvIGNvbW1hbmRzIHJlYWQgcmVjdXJzaXZlIGFuZCBub25yZWN1cnNpdmUgbWFjcm8gYm9kaWVzLgorJSAoVGhleSdyZSBkaWZmZXJlbnQgc2luY2UgcmVjIGFuZCBub25yZWMgbWFjcm9zIGVuZCBkaWZmZXJlbnRseS4pCisKK1xsb25nXGRlZlxwYXJzZW1hY2JvZHkjMUBlbmQgbWFjcm8lCit7XHhkZWZcdGVtcHtcZWF0Y3J7IzF9fVxlbmRncm91cFxkZWZtYWNyb30lCitcbG9uZ1xkZWZccGFyc2VybWFjYm9keSMxQGVuZCBybWFjcm8lCit7XHhkZWZcdGVtcHtcZWF0Y3J7IzF9fVxlbmRncm91cFxkZWZtYWNyb30lCisKKyUgVGhpcyBkZWZpbmVzIHRoZSBtYWNybyBpdHNlbGYuIFRoZXJlIGFyZSBzaXggY2FzZXM6IHJlY3Vyc2l2ZSBhbmQKKyUgbm9ucmVjdXJzaXZlIG1hY3JvcyBvZiB6ZXJvLCBvbmUsIGFuZCBtYW55IGFyZ3VtZW50cy4KKyUgTXVjaCBtYWdpYyB3aXRoIFxleHBhbmRhZnRlciBoZXJlLgorJSBceGRlZiBpcyB1c2VkIHNvIHRoYXQgbWFjcm8gZGVmaW5pdGlvbnMgd2lsbCBzdXJ2aXZlIHRoZSBmaWxlCislIHRoZXkncmUgZGVmaW5lZCBpbjsgQGluY2x1ZGUgcmVhZHMgdGhlIGZpbGUgaW5zaWRlIGEgZ3JvdXAuCitcZGVmXGRlZm1hY3JveyUKKyAgXGxldFxoYXNoPSMjJSBjb252ZXJ0IHBsYWNlaG9sZGVycyB0byBtYWNybyBwYXJhbWV0ZXIgY2hhcnMKKyAgXGlmcmVjdXJzaXZlCisgICAgXGlmY2FzZVxwYXJhbW5vCisgICAgJSAwCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH19JQorICAgIFxvciAlIDEKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZVx0aGVcbWFjbmFtZVxlbmRjc25hbWV7JQorICAgICAgICAgXGJncm91cFxub2V4cGFuZFxtYWNyb2FyZ2N0eHQKKyAgICAgICAgIFxub2V4cGFuZFxicmFjZW9ybGluZQorICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lfSUKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lIyMxeyUKKyAgICAgICAgIFxlZ3JvdXBcbm9leHBhbmRcc2Nhbm1hY3Jve1x0ZW1wfX0lCisgICAgXGVsc2UgJSBtYW55CisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgIFxiZ3JvdXBcbm9leHBhbmRcbWFjcm9hcmdjdHh0CisgICAgICAgICBcbm9leHBhbmRcY3NuYW1lXHRoZVxtYWNuYW1lIHh4XGVuZGNzbmFtZX0lCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWUgeHhcZW5kY3NuYW1lIyMxeyUKKyAgICAgICAgICBcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lXHRoZVxtYWNuYW1lIHh4eFxlbmRjc25hbWUgIyMxLH0lCisgICAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmCisgICAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKKyAgICAgICAgXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lCisgICAgICAgICAgXHBhcmFtbGlzdHtcZWdyb3VwXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH19JQorICAgIFxmaQorICBcZWxzZQorICAgIFxpZmNhc2VccGFyYW1ubworICAgICUgMAorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lXGVuZGNzbmFtZXslCisgICAgICAgIFxub2V4cGFuZFxub3JlY3Vyc2V7XHRoZVxtYWNuYW1lfSUKKyAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH1cZWdyb3VwfSUKKyAgICBcb3IgJSAxCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgIFxiZ3JvdXBcbm9leHBhbmRcbWFjcm9hcmdjdHh0CisgICAgICAgICBcbm9leHBhbmRcYnJhY2VvcmxpbmUKKyAgICAgICAgIFxleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWVcdGhlXG1hY25hbWUgeHh4XGVuZGNzbmFtZX0lCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWUgeHh4XGVuZGNzbmFtZSMjMXslCisgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgXG5vZXhwYW5kXG5vcmVjdXJzZXtcdGhlXG1hY25hbWV9JQorICAgICAgICBcbm9leHBhbmRcc2Nhbm1hY3Jve1x0ZW1wfVxlZ3JvdXB9JQorICAgIFxlbHNlICUgbWFueQorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lXGVuZGNzbmFtZXslCisgICAgICAgICBcYmdyb3VwXG5vZXhwYW5kXG1hY3JvYXJnY3R4dAorICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eFxlbmRjc25hbWV9JQorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lIHh4XGVuZGNzbmFtZSMjMXslCisgICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lICMjMSx9JQorICAgICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZgorICAgICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyCisgICAgICBcY3NuYW1lXHRoZVxtYWNuYW1lIHh4eFxlbmRjc25hbWUKKyAgICAgIFxwYXJhbWxpc3R7JQorICAgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgICBcbm9leHBhbmRcbm9yZWN1cnNle1x0aGVcbWFjbmFtZX0lCisgICAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH1cZWdyb3VwfSUKKyAgICBcZmkKKyAgXGZpfQorCitcZGVmXG5vcmVjdXJzZSMxe1xiZ3JvdXBcY3NsZXR7IzF9e21hY3NhdmUuIzF9fQorCislIFxicmFjZW9ybGluZSBkZWNpZGVzIHdoZXRoZXIgdGhlIG5leHQgbm9ud2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgYQorJSB7LiAgSWYgc28gaXQgcmVhZHMgdXAgdG8gdGhlIGNsb3NpbmcgfSwgaWYgbm90LCBpdCByZWFkcyB0aGUgd2hvbGUKKyUgbGluZS4gIFdoYXRldmVyIHdhcyByZWFkIGlzIHRoZW4gZmVkIHRvIHRoZSBuZXh0IGNvbnRyb2wgc2VxdWVuY2UKKyUgYXMgYW4gYXJndW1lbnQgKGJ5IFxwYXJzZWJyYWNlIG9yIFxwYXJzZWFyZykKK1xkZWZcYnJhY2VvcmxpbmUjMXtcbGV0XG5leHQ9IzFcZnV0dXJlbGV0XG5jaGFyXGJyYWNlb3JsaW5leHh4fQorXGRlZlxicmFjZW9ybGluZXh4eHslCisgIFxpZnhcbmNoYXJcYmdyb3VwXGVsc2UKKyAgICBcZXhwYW5kYWZ0ZXJccGFyc2VhcmcKKyAgXGZpIFxuZXh0fQorCislIFdlIG1hbnQgdG8gZGlzYWJsZSBhbGwgbWFjcm9zIGR1cmluZyBcc2hpcG91dCBzbyB0aGF0IHRoZXkgYXJlIG5vdAorJSBleHBhbmRlZCBieSBcd3JpdGUuCitcZGVmXHR1cm5vZmZtYWNyb3N7XGJlZ2luZ3JvdXAgXGRlZlxkbyMjMXtcbGV0XG5vZXhwYW5kIyMxPVxyZWxheH0lCisgIFxlZGVmXG5leHR7XG1hY3JvbGlzdH1cZXhwYW5kYWZ0ZXJcZW5kZ3JvdXBcbmV4dH0KKworCislIEBhbGlhcy4KKyUgV2UgbmVlZCBzb21lIHRyaWNrZXJ5IHRvIHJlbW92ZSB0aGUgb3B0aW9uYWwgc3BhY2VzIGFyb3VuZCB0aGUgZXF1YWwKKyUgc2lnbi4gIEp1c3QgbWFrZSB0aGVtIGFjdGl2ZSBhbmQgdGhlbiBleHBhbmQgdGhlbSBhbGwgdG8gbm90aGluZy4KK1xkZWZcYWxpYXN7XGJlZ2luZ3JvdXBcb2JleXNwYWNlc1xwYXJzZWFyZ1xhbGlhc3h4eH0KK1xkZWZcYWxpYXN4eHggIzF7XGFsaWFzeXl5IzFccmVsYXh9CitcZGVmXGFsaWFzeXl5ICMxPSMyXHJlbGF4e1xpZ25vcmVhY3RpdmVzcGFjZXMKK1xlZGVmXG5leHR7XGdsb2JhbFxsZXRcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lIzFcZW5kY3NuYW1lPSUKKyAgICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZSMyXGVuZGNzbmFtZX0lCitcZXhwYW5kYWZ0ZXJcZW5kZ3JvdXBcbmV4dH0KKworCitcbWVzc2FnZXtjcm9zcyByZWZlcmVuY2VzLH0KKworXG5ld3dyaXRlXGF1eGZpbGUKKworXG5ld2lmXGlmaGF2ZXhyZWZzICAgICUgVHJ1ZSBpZiB4cmVmIHZhbHVlcyBhcmUga25vd24uCitcbmV3aWZcaWZ3YXJuZWR4cmVmcyAgJSBUcnVlIGlmIHdlIHdhcm5lZCBvbmNlIHRoYXQgdGhleSBhcmVuJ3Qga25vd24uCisKKyUgQGluZm9yZWYgaXMgcmVsYXRpdmVseSBzaW1wbGUuCitcZGVmXGluZm9yZWYgIzF7XGluZm9yZWZ6enogIzEsLCwsKip9CitcZGVmXGluZm9yZWZ6enogIzEsIzIsIzMsIzQqKntccHV0d29yZFNlZXt9IFxwdXR3b3JkSW5mb3t9IFxwdXR3b3JkZmlsZXt9IFxmaWxle1xpZ25vcmVzcGFjZXMgIzN7fX0sCisgIG5vZGUgXHNhbXB7XGlnbm9yZXNwYWNlcyMxe319fQorCislIEBub2RlJ3Mgb25seSBqb2IgaW4gVGVYIGlzIHRvIGRlZmluZSBcbGFzdG5vZGUsIHdoaWNoIGlzIHVzZWQgaW4KKyUgY3Jvc3MtcmVmZXJlbmNlcy4KK1xkZWZcbm9kZXtcRU5WY2hlY2tccGFyc2Vhcmdcbm9kZXp6en0KK1xkZWZcbm9kZXp6eiMxe1xub2RleHh4ICMxLFxmaW5pc2hub2RlcGFyc2V9CitcZGVmXG5vZGV4eHgjMSwjMlxmaW5pc2hub2RlcGFyc2V7XGdkZWZcbGFzdG5vZGV7IzF9fQorXGxldFxud25vZGU9XG5vZGUKK1xsZXRcbGFzdG5vZGU9XGVtcHR5CisKKyUgV3JpdGUgYSBjcm9zcy1yZWZlcmVuY2UgZGVmaW5pdGlvbiBmb3IgdGhlIGN1cnJlbnQgbm9kZS4gICMxIGlzIHRoZQorJSB0eXBlIChZbnVtYmVyZWQsIFlhcHBlbmRpeCwgWW5vdGhpbmcpLgorJSAKK1xkZWZcZG9ub2RlcmVmIzF7JQorICBcaWZ4XGxhc3Rub2RlXGVtcHR5XGVsc2UKKyAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXJcc2V0cmVme1xsYXN0bm9kZX17IzF9JQorICAgIFxnbG9iYWxcbGV0XGxhc3Rub2RlPVxlbXB0eQorICBcZmkKK30KKworJSBAYW5jaG9ye05BTUV9IC0tIGRlZmluZSB4cmVmIHRhcmdldCBhdCBhcmJpdHJhcnkgcG9pbnQuCislCitcbmV3Y291bnRcc2F2ZXNmcmVnaXN0ZXIKKyUKK1xnZGVmXHNhdmVzZntccmVsYXggXGlmaG1vZGUgXHNhdmVzZnJlZ2lzdGVyPVxzcGFjZWZhY3RvciBcZml9CitcZ2RlZlxyZXN0b3Jlc2Z7XHJlbGF4IFxpZmhtb2RlIFxzcGFjZWZhY3Rvcj1cc2F2ZXNmcmVnaXN0ZXIgXGZpfQorXGdkZWZcYW5jaG9yIzF7XHNhdmVzZiBcc2V0cmVmeyMxfXtZbm90aGluZ31ccmVzdG9yZXNmIFxpZ25vcmVzcGFjZXN9CisKKyUgXHNldHJlZntOQU1FfXtTTlR9IGRlZmluZXMgYSBjcm9zcy1yZWZlcmVuY2UgcG9pbnQgTkFNRSAoYSBub2RlIG9yIGFuCislIGFuY2hvciksIG5hbWVseSBOQU1FLXRpdGxlICh0aGUgY29ycmVzcG9uZGluZyBAY2hhcHRlci9ldGMuIG5hbWUpLAorJSBOQU1FLXBnICh0aGUgcGFnZSBudW1iZXIpLCBhbmQgTkFNRS1zbnQgKHNlY3Rpb24gbnVtYmVyIGFuZCB0eXBlKS4KKyUgQ2FsbGVkIGZyb20gXGZvb25vZGVyZWYuCislIAorJSBXZSBoYXZlIHRvIHNldCBkdW1taWVzIHNvIGNvbW1hbmRzIHN1Y2ggYXMgQGNvZGUgaW4gYSBzZWN0aW9uIHRpdGxlCislIGFyZW4ndCBleHBhbmRlZC4gIEl0IHdvdWxkIGJlIG5pY2VyIG5vdCB0byBleHBhbmQgdGhlIHRpdGxlcyBpbiB0aGUKKyUgZmlyc3QgcGxhY2UsIGJ1dCB0aGF0IGlzIGhhcmQgdG8gZG8uCislCislIExpa2V3aXNlLCB1c2UgXHR1cm5vZmZhY3RpdmUgc28gdGhhdCBwdW5jdHVhdGlvbiBjaGFycyBzdWNoIGFzIHVuZGVyc2NvcmUKKyUgYW5kIGJhY2tzbGFzaCB3b3JrIGluIG5vZGUgbmFtZXMuCislCitcZGVmXHNldHJlZiMxIzJ7eyUKKyAgXGF0ZHVtbWllcworICBccGRmbWtkZXN0eyMxfSUKKyAgJQorICBcaWZsaW5rcworICAgIFx0dXJub2ZmYWN0aXZlCisgICAgXGRvc2V0cXsjMS10aXRsZX17WXRpdGxlfSUKKyAgICBcZG9zZXRxeyMxLXBnfXtZcGFnZW51bWJlcn0lCisgICAgXGRvc2V0cXsjMS1zbnR9eyMyfSUKKyAgXGZpCit9fQorCislIEB4cmVmLCBAcHhyZWYsIGFuZCBAcmVmIGdlbmVyYXRlIGNyb3NzLXJlZmVyZW5jZXMuICBGb3IgXHhyZWZYLCAjMSBpcworJSB0aGUgbm9kZSBuYW1lLCAjMiB0aGUgbmFtZSBvZiB0aGUgSW5mbyBjcm9zcy1yZWZlcmVuY2UsICMzIHRoZSBwcmludGVkCislIG5vZGUgbmFtZSwgIzQgdGhlIG5hbWUgb2YgdGhlIEluZm8gZmlsZSwgIzUgdGhlIG5hbWUgb2YgdGhlIHByaW50ZWQKKyUgbWFudWFsLiAgQWxsIGJ1dCB0aGUgbm9kZSBuYW1lIGNhbiBiZSBvbWl0dGVkLgorJQorXGRlZlxweHJlZiMxe1xwdXR3b3Jkc2Vle30gXHhyZWZYWyMxLCwsLCwsLF19CitcZGVmXHhyZWYjMXtccHV0d29yZFNlZXt9IFx4cmVmWFsjMSwsLCwsLCxdfQorXGRlZlxyZWYjMXtceHJlZlhbIzEsLCwsLCwsXX0KK1xkZWZceHJlZlhbIzEsIzIsIzMsIzQsIzUsIzZde1xiZWdpbmdyb3VwCisgIFx1bnNlcHNwYWNlcworICBcZGVmXHByaW50ZWRtYW51YWx7XGlnbm9yZXNwYWNlcyAjNX0lCisgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xpZ25vcmVzcGFjZXMgIzN9JQorICBcc2V0Ym94MT1caGJveHtccHJpbnRlZG1hbnVhbH0lCisgIFxzZXRib3gwPVxoYm94e1xwcmludGVkbm9kZW5hbWV9JQorICBcaWZkaW0gXHdkMCA9IDBwdAorICAgICUgTm8gcHJpbnRlZCBub2RlIG5hbWUgd2FzIGV4cGxpY2l0bHkgZ2l2ZW4uCisgICAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgU0VUeHJlZi1hdXRvbWF0aWMtc2VjdGlvbi10aXRsZVxlbmRjc25hbWVccmVsYXgKKyAgICAgICUgVXNlIHRoZSBub2RlIG5hbWUgaW5zaWRlIHRoZSBzcXVhcmUgYnJhY2tldHMuCisgICAgICBcZGVmXHByaW50ZWRub2RlbmFtZXtcaWdub3Jlc3BhY2VzICMxfSUKKyAgICBcZWxzZQorICAgICAgJSBVc2UgdGhlIGFjdHVhbCBjaGFwdGVyL3NlY3Rpb24gdGl0bGUgYXBwZWFyIGluc2lkZQorICAgICAgJSB0aGUgc3F1YXJlIGJyYWNrZXRzLiAgVXNlIHRoZSByZWFsIHNlY3Rpb24gdGl0bGUgaWYgd2UgaGF2ZSBpdC4KKyAgICAgIFxpZmRpbSBcd2QxID4gMHB0CisgICAgICAgICUgSXQgaXMgaW4gYW5vdGhlciBtYW51YWwsIHNvIHdlIGRvbid0IGhhdmUgaXQuCisgICAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgXGVsc2UKKyAgICAgICAgXGlmaGF2ZXhyZWZzCisgICAgICAgICAgJSBXZSBrbm93IHRoZSByZWFsIHRpdGxlIGlmIHdlIGhhdmUgdGhlIHhyZWYgdmFsdWVzLgorICAgICAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xyZWZ4eyMxLXRpdGxlfXt9fSUKKyAgICAgICAgXGVsc2UKKyAgICAgICAgICAlIE90aGVyd2lzZSBqdXN0IGNvcHkgdGhlIEluZm8gbm9kZSBuYW1lLgorICAgICAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgICBcZmklCisgICAgICBcZmkKKyAgICBcZmkKKyAgXGZpCisgICUKKyAgJSBJZiB3ZSB1c2UgXHVuaGJveDAgYW5kIFx1bmhib3gxIHRvIHByaW50IHRoZSBub2RlIG5hbWVzLCBUZVggZG9lcyBub3QKKyAgJSBpbnNlcnQgZW1wdHkgZGlzY3JldGlvbmFyaWVzIGFmdGVyIGh5cGhlbnMsIHdoaWNoIG1lYW5zIHRoYXQgaXQgd2lsbAorICAlIG5vdCBmaW5kIGEgbGluZSBicmVhayBhdCBhIGh5cGhlbiBpbiBhIG5vZGUgbmFtZXMuICBTaW5jZSBzb21lIG1hbnVhbHMKKyAgJSBhcmUgYmVzdCB3cml0dGVuIHdpdGggZmFpcmx5IGxvbmcgbm9kZSBuYW1lcywgY29udGFpbmluZyBoeXBoZW5zLCB0aGlzCisgICUgaXMgYSBsb3NzLiAgVGhlcmVmb3JlLCB3ZSBnaXZlIHRoZSB0ZXh0IG9mIHRoZSBub2RlIG5hbWUgYWdhaW4sIHNvIGl0CisgICUgaXMgYXMgaWYgVGVYIGlzIHNlZWluZyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgIFxpZnBkZgorICAgIFxsZWF2ZXZtb2RlCisgICAgXGdldGZpbGVuYW1leyM0fSUKKyAgICB7XHR1cm5vZmZhY3RpdmUgXG90aGVyYmFja3NsYXNoCisgICAgIFxpZm51bVxmaWxlbmFtZWxlbmd0aD4wCisgICAgICAgXHN0YXJ0bGluayBhdHRyey9Cb3JkZXIgWzAgMCAwXX0lCisgICAgICAgICBnb3RvIGZpbGV7XHRoZVxmaWxlbmFtZS5wZGZ9IG5hbWV7IzF9JQorICAgICBcZWxzZQorICAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19JQorICAgICAgICAgZ290byBuYW1le1xwZGZta3BnbnsjMX19JQorICAgICBcZmkKKyAgICB9JQorICAgIFxsaW5rY29sb3IKKyAgXGZpCisgICUKKyAgXGlmZGltIFx3ZDEgPiAwcHQKKyAgICBccHV0d29yZHNlY3Rpb257fSBgYFxwcmludGVkbm9kZW5hbWUnJyBccHV0d29yZGlue30gXGNpdGV7XHByaW50ZWRtYW51YWx9JQorICBcZWxzZQorICAgICUgXyAoZm9yIGV4YW1wbGUpIGhhcyB0byBiZSB0aGUgY2hhcmFjdGVyIF8gZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUKKyAgICAlIGNvbnRyb2wgc2VxdWVuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgbm9kZSwgYnV0IGl0IGhhcyB0byBleHBhbmQKKyAgICAlIGludG8gdGhlIHVzdWFsIFxsZWF2ZXZtb2RlLi4uXHZydWxlIHN0dWZmIGZvciBwdXJwb3NlcyBvZgorICAgICUgcHJpbnRpbmcuIFNvIHdlIFx0dXJub2ZmYWN0aXZlIGZvciB0aGUgXHJlZngtc250LCBiYWNrIG9uIGZvciB0aGUKKyAgICAlIHByaW50aW5nLCBiYWNrIG9mZiBmb3IgdGhlIFxyZWZ4LXBnLgorICAgIHtcdHVybm9mZmFjdGl2ZSBcb3RoZXJiYWNrc2xhc2gKKyAgICAgJSBPbmx5IG91dHB1dCBhIGZvbGxvd2luZyBzcGFjZSBpZiB0aGUgLXNudCByZWYgaXMgbm9uZW1wdHk7IGZvcgorICAgICAlIEB1bm51bWJlcmVkIGFuZCBAYW5jaG9yLCBpdCB3b24ndCBiZS4KKyAgICAgXHNldGJveDIgPSBcaGJveHtcaWdub3Jlc3BhY2VzIFxyZWZ4eyMxLXNudH17fX0lCisgICAgIFxpZmRpbSBcd2QyID4gMHB0IFxyZWZ4eyMxLXNudH1cc3BhY2VcZmkKKyAgICB9JQorICAgICUgb3V0cHV0IHRoZSBgW215bm9kZV0nIHZpYSBhIG1hY3JvLgorICAgIFx4cmVmcHJpbnRub2RlbmFtZVxwcmludGVkbm9kZW5hbWUKKyAgICAlCisgICAgJSBCdXQgd2UgYWx3YXlzIHdhbnQgYSBjb21tYSBhbmQgYSBzcGFjZToKKyAgICAsXHNwYWNlCisgICAgJQorICAgICUgb3V0cHV0IHRoZSBgcGFnZSAzJy4KKyAgICBcdHVybm9mZmFjdGl2ZSBcb3RoZXJiYWNrc2xhc2ggXHB1dHdvcmRwYWdlXHRpZVxyZWZ4eyMxLXBnfXt9JQorICBcZmkKKyAgXGVuZGxpbmsKK1xlbmRncm91cH0KKworJSBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcm9tIFx4cmVmWCBmb3IgdGhlIGBbbm9kZW5hbWVdJyBwYXJ0IG9mIHhyZWYKKyUgb3V0cHV0LiAgSXQncyBhIHNlcGFyYXRlIG1hY3JvIG9ubHkgc28gaXQgY2FuIGJlIGNoYW5nZWQgbW9yZSBlYXNpbHksCislIHNpbmNlIG5vdCBzcXVhcmUgYnJhY2tldHMgZG9uJ3Qgd29yayBpbiBzb21lIGRvY3VtZW50cy4gIFBhcnRpY3VsYXJseQorJSBvbmUgdGhhdCBCb2IgaXMgd29ya2luZyBvbiA6KS4KKyUKK1xkZWZceHJlZnByaW50bm9kZW5hbWUjMXtbIzFdfQorCislIFxkb3NldHEgaXMgY2FsbGVkIGZyb20gXHNldHJlZiB0byBkbyB0aGUgYWN0dWFsIFx3cml0ZSAoXGlmbGlua3MpLgorJQorXGRlZlxkb3NldHEjMSMyeyUKKyAgXGVkZWZcbmV4dHtcd3JpdGVcYXV4ZmlsZXtcaW50ZXJuYWxzZXRxeyMxfXsjMn19fSUKKyAgXG5leHQKK30KKworJSBcaW50ZXJuYWxzZXRxe2Zvb317cGFnZX0gZXhwYW5kcyBpbnRvCislICAgQ0hBUkFDVEVSUyBAeHJkZWZ7Zm9vfXsuLi5leHBhbnNpb24gb2YgXHBhZ2UuLi59CitcZGVmXGludGVybmFsc2V0cSMxIzJ7QHhyZGVmeyMxfXtcY3NuYW1lICMyXGVuZGNzbmFtZX19CisKKyUgVGhpbmdzIHRvIGJlIGV4cGFuZGVkIGJ5IFxpbnRlcm5hbHNldHEuCislCitcZGVmXFlwYWdlbnVtYmVye1xub2V4cGFuZFxmb2xpb30KK1xkZWZcWXRpdGxle1x0aGlzc2VjdGlvbn0KK1xkZWZcWW5vdGhpbmd7fQorXGRlZlxZb21pdGZyb210b2N7fQorXGRlZlxZbnVtYmVyZWR7JQorICBcaWZudW1cc2Vjbm89MAorICAgIFxwdXR3b3JkQ2hhcHRlckB0aWUgXHRoZVxjaGFwbm8KKyAgXGVsc2UgXGlmbnVtXHN1YnNlY25vPTAKKyAgICBccHV0d29yZFNlY3Rpb25AdGllIFx0aGVcY2hhcG5vLlx0aGVcc2Vjbm8KKyAgXGVsc2UgXGlmbnVtXHN1YnN1YnNlY25vPTAKKyAgICBccHV0d29yZFNlY3Rpb25AdGllIFx0aGVcY2hhcG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNubworICBcZWxzZQorICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgXHRoZVxjaGFwbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm8KKyAgXGZpXGZpXGZpCit9CitcZGVmXFlhcHBlbmRpeHslCisgIFxpZm51bVxzZWNubz0wCisgICAgIFxwdXR3b3JkQXBwZW5kaXhAdGllIEBjaGFyXHRoZVxhcHBlbmRpeG5ve30lCisgIFxlbHNlIFxpZm51bVxzdWJzZWNubz0wCisgICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgQGNoYXJcdGhlXGFwcGVuZGl4bm8uXHRoZVxzZWNubworICBcZWxzZSBcaWZudW1cc3Vic3Vic2Vjbm89MAorICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgQGNoYXJcdGhlXGFwcGVuZGl4bm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vCisgIFxlbHNlCisgICAgXHB1dHdvcmRTZWN0aW9uQHRpZQorICAgICAgQGNoYXJcdGhlXGFwcGVuZGl4bm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm8KKyAgXGZpXGZpXGZpCit9CisKKyUgVXNlIFRlWCAzLjAncyBcaW5wdXRsaW5lbm8gdG8gZ2V0IHRoZSBsaW5lIG51bWJlciwgZm9yIGJldHRlciBlcnJvcgorJSBtZXNzYWdlcywgYnV0IGlmIHdlJ3JlIHVzaW5nIGFuIG9sZCB2ZXJzaW9uIG9mIFRlWCwgZG9uJ3QgZG8gYW55dGhpbmcuCislCitcaWZ4XGlucHV0bGluZW5vXHRoaXNpc3VuZGVmaW5lZAorICBcbGV0XGxpbmVudW1iZXIgPSBcZW1wdHkgJSBQcmUtMy4wLgorXGVsc2UKKyAgXGRlZlxsaW5lbnVtYmVye1x0aGVcaW5wdXRsaW5lbm86XHNwYWNlfQorXGZpCisKKyUgRGVmaW5lIFxyZWZ4e05BTUV9e1NVRkZJWH0gdG8gcmVmZXJlbmNlIGEgY3Jvc3MtcmVmZXJlbmNlIHN0cmluZyBuYW1lZCBOQU1FLgorJSBJZiBpdHMgdmFsdWUgaXMgbm9uZW1wdHksIFNVRkZJWCBpcyBvdXRwdXQgYWZ0ZXJ3YXJkLgorJQorXGRlZlxyZWZ4IzEjMnslCisgIHslCisgICAgXGluZGV4bm9mb250cworICAgIFxvdGhlcmJhY2tzbGFzaAorICAgIFxleHBhbmRhZnRlclxnbG9iYWxcZXhwYW5kYWZ0ZXJcbGV0XGV4cGFuZGFmdGVyXHRoaXNyZWZYCisgICAgICBcY3NuYW1lIFgjMVxlbmRjc25hbWUKKyAgfSUKKyAgXGlmeFx0aGlzcmVmWFxyZWxheAorICAgICUgSWYgbm90IGRlZmluZWQsIHNheSBzb21ldGhpbmcgYXQgbGVhc3QuCisgICAgXGFuZ2xlbGVmdCB1blwtZGVcLWZpbmVkXGFuZ2xlcmlnaHQKKyAgICBcaWZsaW5rcworICAgICAgXGlmaGF2ZXhyZWZzCisgICAgICAgIFxtZXNzYWdle1xsaW5lbnVtYmVyIFVuZGVmaW5lZCBjcm9zcyByZWZlcmVuY2UgYCMxJy59JQorICAgICAgXGVsc2UKKyAgICAgICAgXGlmd2FybmVkeHJlZnNcZWxzZQorICAgICAgICAgIFxnbG9iYWxcd2FybmVkeHJlZnN0cnVlCisgICAgICAgICAgXG1lc3NhZ2V7Q3Jvc3MgcmVmZXJlbmNlIHZhbHVlcyB1bmtub3duOyB5b3UgbXVzdCBydW4gVGVYIGFnYWluLn0lCisgICAgICAgIFxmaQorICAgICAgXGZpCisgICAgXGZpCisgIFxlbHNlCisgICAgJSBJdCdzIGRlZmluZWQsIHNvIGp1c3QgdXNlIGl0LgorICAgIFx0aGlzcmVmWAorICBcZmkKKyAgIzIlIE91dHB1dCB0aGUgc3VmZml4IGluIGFueSBjYXNlLgorfQorCislIFRoaXMgaXMgdGhlIG1hY3JvIGludm9rZWQgYnkgZW50cmllcyBpbiB0aGUgYXV4IGZpbGUuCislCitcZGVmXHhyZGVmIzF7XGV4cGFuZGFmdGVyXGdkZWZcY3NuYW1lIFgjMVxlbmRjc25hbWV9CisKKyUgUmVhZCB0aGUgbGFzdCBleGlzdGluZyBhdXggZmlsZSwgaWYgYW55LiAgTm8gZXJyb3IgaWYgbm9uZSBleGlzdHMuCitcZGVmXHJlYWRhdXhmaWxle1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxeXkA9XG90aGVyCisgIFxjYXRjb2RlYFxeXkE9XG90aGVyCisgIFxjYXRjb2RlYFxeXkI9XG90aGVyCisgIFxjYXRjb2RlYFxeXkM9XG90aGVyCisgIFxjYXRjb2RlYFxeXkQ9XG90aGVyCisgIFxjYXRjb2RlYFxeXkU9XG90aGVyCisgIFxjYXRjb2RlYFxeXkY9XG90aGVyCisgIFxjYXRjb2RlYFxeXkc9XG90aGVyCisgIFxjYXRjb2RlYFxeXkg9XG90aGVyCisgIFxjYXRjb2RlYFxeXks9XG90aGVyCisgIFxjYXRjb2RlYFxeXkw9XG90aGVyCisgIFxjYXRjb2RlYFxeXk49XG90aGVyCisgIFxjYXRjb2RlYFxeXlA9XG90aGVyCisgIFxjYXRjb2RlYFxeXlE9XG90aGVyCisgIFxjYXRjb2RlYFxeXlI9XG90aGVyCisgIFxjYXRjb2RlYFxeXlM9XG90aGVyCisgIFxjYXRjb2RlYFxeXlQ9XG90aGVyCisgIFxjYXRjb2RlYFxeXlU9XG90aGVyCisgIFxjYXRjb2RlYFxeXlY9XG90aGVyCisgIFxjYXRjb2RlYFxeXlc9XG90aGVyCisgIFxjYXRjb2RlYFxeXlg9XG90aGVyCisgIFxjYXRjb2RlYFxeXlo9XG90aGVyCisgIFxjYXRjb2RlYFxeXls9XG90aGVyCisgIFxjYXRjb2RlYFxeXlw9XG90aGVyCisgIFxjYXRjb2RlYFxeXl09XG90aGVyCisgIFxjYXRjb2RlYFxeXl49XG90aGVyCisgIFxjYXRjb2RlYFxeXl89XG90aGVyCisgICUgSXQgd2FzIHN1Z2dlc3RlZCB0byBzZXQgdGhlIGNhdGNvZGUgb2YgXiB0byA3LCB3aGljaCB3b3VsZCBhbGxvdyBeXmU0IGV0Yy4KKyAgJSBpbiB4cmVmIHRhZ3MsIGkuZS4sIG5vZGUgbmFtZXMuICBCdXQgc2luY2UgXl5lNCBub3RhdGlvbiBpc24ndAorICAlIHN1cHBvcnRlZCBpbiB0aGUgbWFpbiB0ZXh0LCBpdCBkb2Vzbid0IHNlZW0gZGVzaXJhYmxlLiAgRnVydGhlcm1vcmUsCisgICUgdGhhdCBpcyBub3QgZW5vdWdoOiBmb3Igbm9kZSBuYW1lcyB0aGF0IGFjdHVhbGx5IGNvbnRhaW4gYSBeCisgICUgY2hhcmFjdGVyLCB3ZSB3b3VsZCBlbmQgdXAgd3JpdGluZyBhIGxpbmUgbGlrZSB0aGlzOiAneHJkZWYgeydoYXQKKyAgJSBiLXRpdGxlfXsnaGF0IGJ9IGFuZCBceHJkZWYgZG9lcyBhIFxjc25hbWUuLi5cZW5kY3NuYW1lIG9uIHRoZSBmaXJzdAorICAlIGFyZ3VtZW50LCBhbmQgXGhhdCBpcyBub3QgYW4gZXhwYW5kYWJsZSBjb250cm9sIHNlcXVlbmNlLiAgSXQgY291bGQKKyAgJSBhbGwgYmUgd29ya2VkIG91dCwgYnV0IHdoeT8gIEVpdGhlciB3ZSBzdXBwb3J0IF5eIG9yIHdlIGRvbid0LgorICAlCisgICUgVGhlIG90aGVyIGNoYW5nZSBuZWNlc3NhcnkgZm9yIHRoaXMgd2FzIHRvIGRlZmluZSBcYXV4aGF0OgorICAlIFxkZWZcYXV4aGF0e1xkZWZeeydoYXQgfX0lIGV4dHJhIHNwYWNlIHNvIG9rIGlmIGZvbGxvd2VkIGJ5IGxldHRlcgorICAlIGFuZCB0aGVuIHRvIGNhbGwgXGF1eGhhdCBpbiBcc2V0cS4KKyAgJQorICBcY2F0Y29kZWBcXj1cb3RoZXIKKyAgJQorICAlIFNwZWNpYWwgY2hhcmFjdGVycy4gIFNob3VsZCBiZSB0dXJuZWQgb2ZmIGFueXdheSwgYnV0Li4uCisgIFxjYXRjb2RlYFx+PVxvdGhlcgorICBcY2F0Y29kZWBcWz1cb3RoZXIKKyAgXGNhdGNvZGVgXF09XG90aGVyCisgIFxjYXRjb2RlYFwiPVxvdGhlcgorICBcY2F0Y29kZWBcXz1cb3RoZXIKKyAgXGNhdGNvZGVgXHw9XG90aGVyCisgIFxjYXRjb2RlYFw8PVxvdGhlcgorICBcY2F0Y29kZWBcPj1cb3RoZXIKKyAgXGNhdGNvZGVgXCQ9XG90aGVyCisgIFxjYXRjb2RlYFwjPVxvdGhlcgorICBcY2F0Y29kZWBcJj1cb3RoZXIKKyAgXGNhdGNvZGVgXCU9XG90aGVyCisgIFxjYXRjb2RlYCs9XG90aGVyICUgYXZvaWQgXCsgZm9yIHBhcmFub2lhIGV2ZW4gdGhvdWdoIHdlJ3ZlIHR1cm5lZCBpdCBvZmYKKyAgJQorICAlIE1ha2UgdGhlIGNoYXJhY3RlcnMgMTI4LTI1NSBiZSBwcmludGluZyBjaGFyYWN0ZXJzCisgIHslCisgICAgXGNvdW50IDE9MTI4CisgICAgXGRlZlxsb29weyUKKyAgICAgIFxjYXRjb2RlXGNvdW50IDE9XG90aGVyCisgICAgICBcYWR2YW5jZVxjb3VudCAxIGJ5IDEKKyAgICAgIFxpZm51bSBcY291bnQgMTwyNTYgXGxvb3AgXGZpCisgICAgfSUKKyAgfSUKKyAgJQorICAlIFR1cm4gb2ZmIFwgYXMgYW4gZXNjYXBlIHNvIHdlIGRvIG5vdCBsb3NlIG9uCisgICUgZW50cmllcyB3aGljaCB3ZXJlIGR1bXBlZCB3aXRoIGNvbnRyb2wgc2VxdWVuY2VzIGluIHRoZWlyIG5hbWVzLgorICAlIEZvciBleGFtcGxlLCBAeHJkZWZ7JFxsZXEgJC1mdW59e3BhZ2UgLi4ufSBtYWRlIGJ5IEBkZWZ1biBeXgorICAlIFJlZmVyZW5jZSB0byBzdWNoIGVudHJpZXMgc3RpbGwgZG9lcyBub3Qgd29yayB0aGUgd2F5IG9uZSB3b3VsZCB3aXNoLAorICAlIGJ1dCBhdCBsZWFzdCB0aGV5IGRvIG5vdCBib21iIG91dCB3aGVuIHRoZSBhdXggZmlsZSBpcyByZWFkIGluLgorICBcY2F0Y29kZWBcXD1cb3RoZXIKKyAgJQorICAlIEAgaXMgb3VyIGVzY2FwZSBjaGFyYWN0ZXIgaW4gLmF1eCBmaWxlcy4KKyAgXGNhdGNvZGVgXHs9MQorICBcY2F0Y29kZWBcfT0yCisgIFxjYXRjb2RlYFxAPTAKKyAgJQorICBcb3BlbmluIDEgXGpvYm5hbWUuYXV4CisgIFxpZmVvZiAxIFxlbHNlCisgICAgXGNsb3NlaW4gMQorICAgIFxpbnB1dCBcam9ibmFtZS5hdXgKKyAgICBcZ2xvYmFsXGhhdmV4cmVmc3RydWUKKyAgXGZpCisgICUgT3BlbiB0aGUgbmV3IGF1eCBmaWxlLiAgVGVYIHdpbGwgY2xvc2UgaXQgYXV0b21hdGljYWxseSBhdCBleGl0LgorICBcb3Blbm91dFxhdXhmaWxlPVxqb2JuYW1lLmF1eAorXGVuZGdyb3VwfQorCisKKyUgRm9vdG5vdGVzLgorCitcbmV3Y291bnQgXGZvb3Rub3Rlbm8KKworJSBUaGUgdHJhaWxpbmcgc3BhY2UgaW4gdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uIGZvciBzdXBlcmVqZWN0IGlzCislIHZpdGFsIGZvciBwcm9wZXIgZmlsbGluZzsgcGFnZXMgY29tZSBvdXQgdW5hbGlnbmVkIHdoZW4geW91IGRvIGEKKyUgcGFnZWFsaWdubWFjcm8gY2FsbCBpZiB0aGF0IHNwYWNlIGJlZm9yZSB0aGUgY2xvc2luZyBicmFjZSBpcworJSByZW1vdmVkLiAoR2VuZXJhbGx5LCBudW1lcmljIGNvbnN0YW50cyBzaG91bGQgYWx3YXlzIGJlIGZvbGxvd2VkIGJ5IGEKKyUgc3BhY2UgdG8gcHJldmVudCBzdHJhbmdlIGV4cGFuc2lvbiBlcnJvcnMuKQorXGRlZlxzdXBlcmVqZWN0e1xwYXJccGVuYWx0eSAtMjAwMDBcZm9vdG5vdGVubyA9MCB9CisKKyUgQGZvb3Rub3Rlc3R5bGUgaXMgbWVhbmluZ2Z1bCBmb3IgaW5mbyBvdXRwdXQgb25seS4KK1xsZXRcZm9vdG5vdGVzdHlsZT1cY29tbWVudAorCitcbGV0XHB0ZXhmb290bm90ZT1cZm9vdG5vdGUKKwore1xjYXRjb2RlIGBcQD0xMQorJQorJSBBdXRvLW51bWJlciBmb290bm90ZXMuICBPdGhlcndpc2UgbGlrZSBwbGFpbi4KK1xnZGVmXGZvb3Rub3RleyUKKyAgXGxldFxpbmRlbnQ9XHB0ZXhpbmRlbnQKKyAgXGxldFxub2luZGVudD1ccHRleG5vaW5kZW50CisgIFxnbG9iYWxcYWR2YW5jZVxmb290bm90ZW5vIGJ5IFxAbmUKKyAgXGVkZWZcdGhpc2Zvb3Rub3skXntcdGhlXGZvb3Rub3Rlbm99JH0lCisgICUKKyAgJSBJbiBjYXNlIHRoZSBmb290bm90ZSBjb21lcyBhdCB0aGUgZW5kIG9mIGEgc2VudGVuY2UsIHByZXNlcnZlIHRoZQorICAlIGV4dHJhIHNwYWNpbmcgYWZ0ZXIgd2UgZG8gdGhlIGZvb3Rub3RlIG51bWJlci4KKyAgXGxldFxAc2ZcZW1wdHkKKyAgXGlmaG1vZGVcZWRlZlxAc2Z7XHNwYWNlZmFjdG9yXHRoZVxzcGFjZWZhY3Rvcn1ccHRleHNsYXNoXGZpCisgICUKKyAgJSBSZW1vdmUgaW5hZHZlcnRlbnQgYmxhbmsgc3BhY2UgYmVmb3JlIHR5cGVzZXR0aW5nIHRoZSBmb290bm90ZSBudW1iZXIuCisgIFx1bnNraXAKKyAgXHRoaXNmb290bm9cQHNmCisgIFxkb2Zvb3Rub3RlCit9JQorCislIERvbid0IGJvdGhlciB3aXRoIHRoZSB0cmlja2VyeSBpbiBwbGFpbi50ZXggdG8gbm90IHJlcXVpcmUgdGhlCislIGZvb3Rub3RlIHRleHQgYXMgYSBwYXJhbWV0ZXIuICBPdXIgZm9vdG5vdGVzIGRvbid0IG5lZWQgdG8gYmUgc28gZ2VuZXJhbC4KKyUKKyUgT2ggeWVzLCB0aGV5IGRvOyBvdGhlcndpc2UsIEBpZnNldCBhbmQgYW55dGhpbmcgZWxzZSB0aGF0IHVzZXMKKyUgXHBhcnNlYXJnbGluZSBmYWlsIGluc2lkZSBmb290bm90ZXMgYmVjYXVzZSB0aGUgdG9rZW5zIGFyZSBmaXhlZCB3aGVuCislIHRoZSBmb290bm90ZSBpcyByZWFkLiAgLS1rYXJsLCAxNm5vdjk2LgorJQorJSBUaGUgc3RhcnQgb2YgdGhlIGZvb3Rub3RlIGxvb2tzIHVzdWFsbHkgbGlrZSB0aGlzOgorXGdkZWZcc3RhcnRmb290aW5ze1xpbnNlcnRcZm9vdGluc1xiZ3JvdXB9CislCislIC4uLiBidXQgdGhpcyBtYWNybyBpcyByZWRlZmluZWQgaW5zaWRlIEBtdWx0aXRhYmxlLgorJQorXGdkZWZcZG9mb290bm90ZXslCisgIFxzdGFydGZvb3RpbnMKKyAgJSBXZSB3YW50IHRvIHR5cGVzZXQgdGhpcyB0ZXh0IGFzIGEgbm9ybWFsIHBhcmFncmFwaCwgZXZlbiBpZiB0aGUKKyAgJSBmb290bm90ZSByZWZlcmVuY2Ugb2NjdXJzIGluIChmb3IgZXhhbXBsZSkgYSBkaXNwbGF5IGVudmlyb25tZW50LgorICAlIFNvIHJlc2V0IHNvbWUgcGFyYW1ldGVycy4KKyAgXGhzaXplPVxwYWdld2lkdGgKKyAgXGludGVybGluZXBlbmFsdHlcaW50ZXJmb290bm90ZWxpbmVwZW5hbHR5CisgIFxzcGxpdHRvcHNraXBcaHRcc3RydXRib3ggJSB0b3AgYmFzZWxpbmUgZm9yIGJyb2tlbiBmb290bm90ZXMKKyAgXHNwbGl0bWF4ZGVwdGhcZHBcc3RydXRib3gKKyAgXGZsb2F0aW5ncGVuYWx0eVxATU0KKyAgXGxlZnRza2lwXHpAc2tpcAorICBccmlnaHRza2lwXHpAc2tpcAorICBcc3BhY2Vza2lwXHpAc2tpcAorICBceHNwYWNlc2tpcFx6QHNraXAKKyAgXHBhcmluZGVudFxkZWZhdWx0cGFyaW5kZW50CisgICUKKyAgXHNtYWxsZm9udHMgXHJtCisgICUKKyAgJSBCZWNhdXNlIHdlIHVzZSBoYW5naW5nIGluZGVudGF0aW9uIGluIGZvb3Rub3RlcywgYSBAbm9pbmRlbnQgYXBwZWFycworICAlIHRvIGV4ZGVudCB0aGlzIHRleHQsIHNvIG1ha2UgaXQgYmUgYSBuby1vcC4gIG1ha2VpbmZvIGRvZXMgbm90IHVzZQorICAlIGhhbmdpbmcgaW5kZW50YXRpb24gc28gQG5vaW5kZW50IGNhbiBzdGlsbCBiZSBuZWVkZWQgd2l0aGluIGZvb3Rub3RlCisgICUgdGV4dCBhZnRlciBhbiBAZXhhbXBsZSBvciB0aGUgbGlrZSAobm90IHRoYXQgdGhpcyBpcyBnb29kIHN0eWxlKS4KKyAgXGxldFxub2luZGVudCA9IFxyZWxheAorICAlCisgICUgSGFuZyB0aGUgZm9vdG5vdGUgdGV4dCBvZmYgdGhlIG51bWJlci4gIFVzZSBcZXZlcnlwYXIgaW4gY2FzZSB0aGUKKyAgJSBmb290bm90ZSBleHRlbmRzIGZvciBtb3JlIHRoYW4gb25lIHBhcmFncmFwaC4KKyAgXGV2ZXJ5cGFyID0ge1xoYW5nfSUKKyAgXHRleHRpbmRlbnR7XHRoaXNmb290bm99JQorICAlCisgICUgRG9uJ3QgY3Jhc2ggaW50byB0aGUgbGluZSBhYm92ZSB0aGUgZm9vdG5vdGUgdGV4dC4gIFNpbmNlIHRoaXMKKyAgJSBleHBhbmRzIGludG8gYSBib3gsIGl0IG11c3QgY29tZSB3aXRoaW4gdGhlIHBhcmFncmFwaCwgbGVzdCBpdAorICAlIHByb3ZpZGUgYSBwbGFjZSB3aGVyZSBUZVggY2FuIHNwbGl0IHRoZSBmb290bm90ZS4KKyAgXGZvb3RzdHJ1dAorICBcZnV0dXJlbGV0XG5leHRcZm9AdAorfQorfSVlbmQgXGNhdGNvZGUgYFxAPTExCisKKyUgQHwgaW5zZXJ0cyBhIGNoYW5nZWJhciB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBsaW5lLiAgSXQgc2hvdWxkCislIHN1cnJvdW5kIGFueSBjaGFuZ2VkIHRleHQuICBUaGlzIGFwcHJvYWNoIGRvZXMgKm5vdCogd29yayBpZiB0aGUKKyUgY2hhbmdlIHNwYW5zIG1vcmUgdGhhbiB0d28gbGluZXMgb2Ygb3V0cHV0LiAgVG8gaGFuZGxlIHRoYXQsIHdlIHdvdWxkCislIGhhdmUgYWRvcHQgYSBtdWNoIG1vcmUgZGlmZmljdWx0IGFwcHJvYWNoIChwdXR0aW5nIG1hcmtzIGludG8gdGhlIG1haW4KKyUgdmVydGljYWwgbGlzdCBmb3IgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggY2hhbmdlKS4KKyUKK1xkZWZcfHslCisgICUgXHZhZGp1c3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBob3Jpem9udGFsIG1vZGUuCisgIFxsZWF2ZXZtb2RlCisgICUKKyAgJSBBcHBlbmQgdGhpcyB2ZXJ0aWNhbCBtb2RlIG1hdGVyaWFsIGFmdGVyIHRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIG91dHB1dC4KKyAgXHZhZGp1c3R7JQorICAgICUgV2Ugd2FudCB0byBpbnNlcnQgYSBydWxlIHdpdGggdGhlIGhlaWdodCBhbmQgZGVwdGggb2YgdGhlIGN1cnJlbnQKKyAgICAlIGxlYWRpbmc7IHRoYXQgaXMgZXhhY3RseSB3aGF0IFxzdHJ1dGJveCBpcyBzdXBwb3NlZCB0byByZWNvcmQuCisgICAgXHZza2lwLVxiYXNlbGluZXNraXAKKyAgICAlCisgICAgJSBcdmFkanVzdC1pdGVtcyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgdHlwZS4gIFNvCisgICAgJSB0aGUgXGxsYXAgaGVyZSBtb3ZlcyBvdXQgaW50byB0aGUgbGVmdC1oYW5kIG1hcmdpbi4KKyAgICBcbGxhcHslCisgICAgICAlCisgICAgICAlIEZvciBhIHRoaWNrZXIgb3IgdGhpbm5lciBiYXIsIGNoYW5nZSB0aGUgYDFwdCcuCisgICAgICBcdnJ1bGUgaGVpZ2h0XGJhc2VsaW5lc2tpcCB3aWR0aDFwdAorICAgICAgJQorICAgICAgJSBUaGlzIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBiYXIgYW5kIHRoZSB0ZXh0LgorICAgICAgXGhza2lwIDEycHQKKyAgICB9JQorICB9JQorfQorCislIEZvciBhIGZpbmFsIGNvcHksIHRha2Ugb3V0IHRoZSByZWN0YW5nbGVzCislIHRoYXQgbWFyayBvdmVyZnVsbCBib3hlcyAoaW4gY2FzZSB5b3UgaGF2ZSBkZWNpZGVkCislIHRoYXQgdGhlIHRleHQgbG9va3Mgb2sgZXZlbiB0aG91Z2ggaXQgcGFzc2VzIHRoZSBtYXJnaW4pLgorJQorXGRlZlxmaW5hbG91dHtcb3ZlcmZ1bGxydWxlPTBwdH0KKworJSBAaW1hZ2UuICBXZSB1c2UgdGhlIG1hY3JvcyBmcm9tIGVwc2YudGV4IHRvIHN1cHBvcnQgdGhpcy4KKyUgSWYgZXBzZi50ZXggaXMgbm90IGluc3RhbGxlZCBhbmQgQGltYWdlIGlzIHVzZWQsIHdlIGNvbXBsYWluLgorJQorJSBDaGVjayBmb3IgYW5kIHJlYWQgZXBzZi50ZXggdXAgZnJvbnQuICBJZiB3ZSByZWFkIGl0IG9ubHkgYXQgQGltYWdlCislIHRpbWUsIHdlIG1pZ2h0IGJlIGluc2lkZSBhIGdyb3VwLCBhbmQgdGhlbiBpdHMgZGVmaW5pdGlvbnMgd291bGQgZ2V0CislIHVuZG9uZSBhbmQgdGhlIG5leHQgaW1hZ2Ugd291bGQgZmFpbC4KK1xvcGVuaW4gMSA9IGVwc2YudGV4CitcaWZlb2YgMSBcZWxzZQorICBcY2xvc2VpbiAxCisgICUgRG8gbm90IGJvdGhlciBzaG93aW5nIGJhbm5lciB3aXRoIGVwc2YudGV4IHYyLjdrIChhdmFpbGFibGUgaW4KKyAgJSBkb2MvZXBzZi50ZXggYW5kIG9uIGN0YW4pLgorICBcZGVmXGVwc2Zhbm5vdW5jZXtcdG9rczAgPSB9JQorICBcaW5wdXQgZXBzZi50ZXgKK1xmaQorJQorJSBXZSB3aWxsIG9ubHkgY29tcGxhaW4gb25jZSBhYm91dCBsYWNrIG9mIGVwc2YudGV4LgorXG5ld2lmXGlmd2FybmVkbm9lcHNmCitcbmV3aGVscFxub2Vwc2ZoZWxwe2Vwc2YudGV4IG11c3QgYmUgaW5zdGFsbGVkIGZvciBpbWFnZXMgdG8KKyAgd29yay4gIEl0IGlzIGFsc28gaW5jbHVkZWQgaW4gdGhlIFRleGluZm8gZGlzdHJpYnV0aW9uLCBvciB5b3UgY2FuIGdldAorICBpdCBmcm9tIGZ0cDovL3R1Zy5vcmcvdGV4L2Vwc2YudGV4Ln0KKyUKK1xkZWZcaW1hZ2UjMXslCisgIFxpZnhcZXBzZmJveFx1bmRlZmluZWQKKyAgICBcaWZ3YXJuZWRub2Vwc2YgXGVsc2UKKyAgICAgIFxlcnJoZWxwID0gXG5vZXBzZmhlbHAKKyAgICAgIFxlcnJtZXNzYWdle2Vwc2YudGV4IG5vdCBmb3VuZCwgaW1hZ2VzIHdpbGwgYmUgaWdub3JlZH0lCisgICAgICBcZ2xvYmFsXHdhcm5lZG5vZXBzZnRydWUKKyAgICBcZmkKKyAgXGVsc2UKKyAgICBcaW1hZ2V4eHggIzEsLCwsLFxmaW5pc2gKKyAgXGZpCit9CislCislIEFyZ3VtZW50cyB0byBAaW1hZ2U6CislICMxIGlzIChtYW5kYXRvcnkpIGltYWdlIGZpbGVuYW1lOyB3ZSB0YWNrIG9uIC5lcHMgZXh0ZW5zaW9uLgorJSAjMiBpcyAob3B0aW9uYWwpIHdpZHRoLCAjMyBpcyAob3B0aW9uYWwpIGhlaWdodC4KKyUgIzQgaXMgKGlnbm9yZWQgb3B0aW9uYWwpIGh0bWwgYWx0IHRleHQuCislICM1IGlzIChpZ25vcmVkIG9wdGlvbmFsKSBleHRlbnNpb24uCislICM2IGlzIGp1c3QgdGhlIHVzdWFsIGV4dHJhIGlnbm9yZWQgYXJnIGZvciBwYXJzaW5nIHRoaXMgc3R1ZmYuCitcbmV3aWZcaWZpbWFnZXZtb2RlCitcZGVmXGltYWdleHh4IzEsIzIsIzMsIzQsIzUsIzZcZmluaXNoe1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxeXk0gPSA1ICAgICAlIGluIGNhc2Ugd2UncmUgaW5zaWRlIGFuIGV4YW1wbGUKKyAgXG5vcm1hbHR1cm5vZmZhY3RpdmUgICUgYWxsb3cgXyBldCBhbC4gaW4gbmFtZXMKKyAgJSBJZiB0aGUgaW1hZ2UgaXMgYnkgaXRzZWxmLCBjZW50ZXIgaXQuCisgIFxpZnZtb2RlCisgICAgXGltYWdldm1vZGV0cnVlCisgICAgXG5vYnJlYWtcYmlnc2tpcAorICAgICUgVXN1YWxseSB3ZSdsbCBoYXZlIHRleHQgYWZ0ZXIgdGhlIGltYWdlIHdoaWNoIHdpbGwgaW5zZXJ0CisgICAgJSBccGFyc2tpcCBnbHVlLCBzbyBpbnNlcnQgaXQgaGVyZSB0b28gdG8gZXF1YWxpemUgdGhlIHNwYWNlCisgICAgJSBhYm92ZSBhbmQgYmVsb3cuCisgICAgXG5vYnJlYWtcdnNraXBccGFyc2tpcAorICAgIFxub2JyZWFrCisgICAgXGxpbmVcYmdyb3VwXGhzcworICBcZmkKKyAgJQorICAlIE91dHB1dCB0aGUgaW1hZ2UuCisgIFxpZnBkZgorICAgIFxkb3BkZmltYWdleyMxfXsjMn17IzN9JQorICBcZWxzZQorICAgICUgXGVwc2Zib3ggaXRzZWxmIHJlc2V0cyBcZXBzZj9zaXplIGF0IGVhY2ggZmlndXJlLgorICAgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn1caWZkaW1cd2QwID4gMHB0IFxlcHNmeHNpemU9IzJccmVsYXggXGZpCisgICAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMzfVxpZmRpbVx3ZDAgPiAwcHQgXGVwc2Z5c2l6ZT0jM1xyZWxheCBcZmkKKyAgICBcZXBzZmJveHsjMS5lcHN9JQorICBcZmkKKyAgJQorICBcaWZpbWFnZXZtb2RlIFxoc3MgXGVncm91cCBcYmlnYnJlYWsgXGZpICAlIHNwYWNlIGFmdGVyIHRoZSBpbWFnZQorXGVuZGdyb3VwfQorCisKK1xtZXNzYWdle2xvY2FsaXphdGlvbix9CislIGFuZCBpMThuLgorCislIEBkb2N1bWVudGxhbmd1YWdlIGlzIHVzdWFsbHkgZ2l2ZW4gdmVyeSBlYXJseSwganVzdCBhZnRlcgorJSBAc2V0ZmlsZW5hbWUuICBJZiBkb25lIHRvbyBsYXRlLCBpdCBtYXkgbm90IG92ZXJyaWRlIGV2ZXJ5dGhpbmcKKyUgcHJvcGVybHkuICBTaW5nbGUgYXJndW1lbnQgaXMgdGhlIGxhbmd1YWdlIGFiYnJldmlhdGlvbi4KKyUgSXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBzZXQgdXAgYSBoeXBoZW5hdGlvbiBmaWxlIGhlcmUuCislCitcZGVmXGRvY3VtZW50bGFuZ3VhZ2V7XHBhcnNlYXJnXGRvZG9jdW1lbnRsYW5ndWFnZX0KK1xkZWZcZG9kb2N1bWVudGxhbmd1YWdlIzF7JQorICBcdGV4ICUgcmVhZCB0eGktPz8udGV4IGZpbGUgaW4gcGxhaW4gVGVYLgorICAlIFJlYWQgdGhlIGZpbGUgaWYgaXQgZXhpc3RzLgorICBcb3BlbmluIDEgdHhpLSMxLnRleAorICBcaWZlb2YxCisgICAgXGVycmhlbHAgPSBcbm9sYW5naGVscAorICAgIFxlcnJtZXNzYWdle0Nhbm5vdCByZWFkIGxhbmd1YWdlIGZpbGUgdHhpLSMxLnRleH0lCisgICAgXGxldFx0ZW1wID0gXHJlbGF4CisgIFxlbHNlCisgICAgXGRlZlx0ZW1we1xpbnB1dCB0eGktIzEudGV4IH0lCisgIFxmaQorICBcdGVtcAorICBcZW5kZ3JvdXAKK30KK1xuZXdoZWxwXG5vbGFuZ2hlbHB7VGhlIGdpdmVuIGxhbmd1YWdlIGRlZmluaXRpb24gZmlsZSBjYW5ub3QgYmUgZm91bmQgb3IKK2lzIGVtcHR5LiAgTWF5YmUgeW91IG5lZWQgdG8gaW5zdGFsbCBpdD8gIEluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorc2hvdWxkIHdvcmsgaWYgbm93aGVyZSBlbHNlIGRvZXMufQorCisKKyUgQGRvY3VtZW50ZW5jb2Rpbmcgc2hvdWxkIGNoYW5nZSBzb21ldGhpbmcgaW4gVGVYIGV2ZW50dWFsbHksIG1vc3QKKyUgbGlrZWx5LCBidXQgZm9yIG5vdyBqdXN0IHJlY29nbml6ZSBpdC4KK1xsZXRcZG9jdW1lbnRlbmNvZGluZyA9IFxjb21tZW50CisKKworJSBQYWdlIHNpemUgcGFyYW1ldGVycy4KKyUKK1xuZXdkaW1lblxkZWZhdWx0cGFyaW5kZW50IFxkZWZhdWx0cGFyaW5kZW50ID0gMTVwdAorCitcY2hhcGhlYWRpbmdza2lwID0gMTVwdCBwbHVzIDRwdCBtaW51cyAycHQKK1xzZWNoZWFkaW5nc2tpcCA9IDEycHQgcGx1cyAzcHQgbWludXMgMnB0Citcc3Vic2VjaGVhZGluZ3NraXAgPSA5cHQgcGx1cyAycHQgbWludXMgMnB0CisKKyUgUHJldmVudCB1bmRlcmZ1bGwgdmJveCBlcnJvciBtZXNzYWdlcy4KK1x2YmFkbmVzcyA9IDEwMDAwCisKKyUgRG9uJ3QgYmUgc28gZmluaWNreSBhYm91dCB1bmRlcmZ1bGwgaGJveGVzLCBlaXRoZXIuCitcaGJhZG5lc3MgPSAyMDAwCisKKyUgRm9sbG93aW5nIEdlb3JnZSBCdXNoLCBqdXN0IGdldCByaWQgb2Ygd2lkb3dzIGFuZCBvcnBoYW5zLgorXHdpZG93cGVuYWx0eT0xMDAwMAorXGNsdWJwZW5hbHR5PTEwMDAwCisKKyUgVXNlIFRlWCAzLjAncyBcZW1lcmdlbmN5c3RyZXRjaCB0byBoZWxwIGxpbmUgYnJlYWtpbmcsIGJ1dCBpZiB3ZSdyZQorJSB1c2luZyBhbiBvbGQgdmVyc2lvbiBvZiBUZVgsIGRvbid0IGRvIGFueXRoaW5nLiAgV2Ugd2FudCB0aGUgYW1vdW50IG9mCislIHN0cmV0Y2ggYWRkZWQgdG8gZGVwZW5kIG9uIHRoZSBsaW5lIGxlbmd0aCwgaGVuY2UgdGhlIGRlcGVuZGVuY2Ugb24KKyUgXGhzaXplLiAgV2UgY2FsbCB0aGlzIHdoZW5ldmVyIHRoZSBwYXBlciBzaXplIGlzIHNldC4KKyUKK1xkZWZcc2V0ZW1lcmdlbmN5c3RyZXRjaHslCisgIFxpZnhcZW1lcmdlbmN5c3RyZXRjaFx0aGlzaXN1bmRlZmluZWQKKyAgICAlIEFsbG93IHVzIHRvIGFzc2lnbiB0byBcZW1lcmdlbmN5c3RyZXRjaCBhbnl3YXkuCisgICAgXGRlZlxlbWVyZ2VuY3lzdHJldGNoe1xkaW1lbjB9JQorICBcZWxzZQorICAgIFxlbWVyZ2VuY3lzdHJldGNoID0gLjE1XGhzaXplCisgIFxmaQorfQorCislIFBhcmFtZXRlcnMgaW4gb3JkZXI6IDEpIHRleHRoZWlnaHQ7IDIpIHRleHR3aWR0aDsgMykgdm9mZnNldDsKKyUgNCkgaG9mZnNldDsgNSkgYmluZGluZyBvZmZzZXQ7IDYpIHRvcHNraXA7IDcpIHBoeXNpY2FsIHBhZ2UgaGVpZ2h0OyA4KQorJSBwaHlzaWNhbCBwYWdlIHdpZHRoLgorJQorJSBXZSBhbHNvIGNhbGwgXHNldGxlYWRpbmd7XHRleHRsZWFkaW5nfSwgc28gdGhlIGNhbGxlciBzaG91bGQgZGVmaW5lCislIFx0ZXh0bGVhZGluZy4gIFRoZSBjYWxsZXIgc2hvdWxkIGFsc28gc2V0IFxwYXJza2lwLgorJQorXGRlZlxpbnRlcm5hbHBhZ2VzaXplcyMxIzIjMyM0IzUjNiM3Izh7JQorICBcdm9mZnNldCA9ICMzXHJlbGF4CisgIFx0b3Bza2lwID0gIzZccmVsYXgKKyAgXHNwbGl0dG9wc2tpcCA9IFx0b3Bza2lwCisgICUKKyAgXHZzaXplID0gIzFccmVsYXgKKyAgXGFkdmFuY2VcdnNpemUgYnkgXHRvcHNraXAKKyAgXG91dGVydnNpemUgPSBcdnNpemUKKyAgXGFkdmFuY2Vcb3V0ZXJ2c2l6ZSBieSAyXHRvcGFuZGJvdHRvbW1hcmdpbgorICBccGFnZWhlaWdodCA9IFx2c2l6ZQorICAlCisgIFxoc2l6ZSA9ICMyXHJlbGF4CisgIFxvdXRlcmhzaXplID0gXGhzaXplCisgIFxhZHZhbmNlXG91dGVyaHNpemUgYnkgMC41aW4KKyAgXHBhZ2V3aWR0aCA9IFxoc2l6ZQorICAlCisgIFxub3JtYWxvZmZzZXQgPSAjNFxyZWxheAorICBcYmluZGluZ29mZnNldCA9ICM1XHJlbGF4CisgICUKKyAgXGlmcGRmCisgICAgXHBkZnBhZ2VoZWlnaHQgIzdccmVsYXgKKyAgICBccGRmcGFnZXdpZHRoICM4XHJlbGF4CisgIFxmaQorICAlCisgIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ30KKyAgJQorICBccGFyaW5kZW50ID0gXGRlZmF1bHRwYXJpbmRlbnQKKyAgXHNldGVtZXJnZW5jeXN0cmV0Y2gKK30KKworJSBAbGV0dGVycGFwZXIgKHRoZSBkZWZhdWx0KS4KK1xkZWZcbGV0dGVycGFwZXJ7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDNwdCBwbHVzIDJwdCBtaW51cyAxcHQKKyAgXHRleHRsZWFkaW5nID0gMTMuMnB0CisgICUKKyAgJSBJZiBwYWdlIGlzIG5vdGhpbmcgYnV0IHRleHQsIG1ha2UgaXQgY29tZSBvdXQgZXZlbi4KKyAgXGludGVybmFscGFnZXNpemVzezQ2XGJhc2VsaW5lc2tpcH17NmlufSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXsuMjVpbn0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17MzZwdH0lCisgICAgICAgICAgICAgICAgICAgIHsxMWlufXs4LjVpbn0lCit9fQorCislIFVzZSBAc21hbGxib29rIHRvIHJlc2V0IHBhcmFtZXRlcnMgZm9yIDd4OS41IChvciBzbykgZm9ybWF0LgorXGRlZlxzbWFsbGJvb2t7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDJwdCBwbHVzIDFwdAorICBcdGV4dGxlYWRpbmcgPSAxMnB0CisgICUKKyAgXGludGVybmFscGFnZXNpemVzezcuNWlufXs1aW59JQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9ey4yNWlufSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXsxNnB0fSUKKyAgICAgICAgICAgICAgICAgICAgezkuMjVpbn17N2lufSUKKyAgJQorICBcbGlzcG5hcnJvd2luZyA9IDAuM2luCisgIFx0b2xlcmFuY2UgPSA3MDAKKyAgXGhmdXp6ID0gMXB0CisgIFxjb250ZW50c3JpZ2h0bWFyZ2luID0gMHB0CisgIFxkZWZib2R5aW5kZW50ID0gLjVjbQorfX0KKworJSBVc2UgQGFmb3VycGFwZXIgdG8gcHJpbnQgb24gRXVyb3BlYW4gQTQgcGFwZXIuCitcZGVmXGFmb3VycGFwZXJ7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDNwdCBwbHVzIDJwdCBtaW51cyAxcHQKKyAgXHRleHRsZWFkaW5nID0gMTMuMnB0CisgICUKKyAgJSBEb3VibGUtc2lkZSBwcmludGluZyB2aWEgcG9zdHNjcmlwdCBvbiBMYXNlcmpldCA0MDUwCisgICUgcHJpbnRzIGRvdWJsZS1zaWRlZCBuaWNlbHkgd2hlbiBcYmluZGluZ29mZnNldD0xMG1tIGFuZCBcaG9mZnNldD0tNm1tLgorICAlIFRvIGNoYW5nZSB0aGUgc2V0dGluZ3MgZm9yIGEgZGlmZmVyZW50IHByaW50ZXIgb3Igc2l0dWF0aW9uLCBhZGp1c3QKKyAgJSBcbm9ybWFsb2Zmc2V0IHVudGlsIHRoZSBmcm9udC1zaWRlIGFuZCBiYWNrLXNpZGUgdGV4dHMgYWxpZ24uICBUaGVuCisgICUgZG8gdGhlIHNhbWUgZm9yIFxiaW5kaW5nb2Zmc2V0LiAgWW91IGNhbiBzZXQgdGhlc2UgZm9yIHRlc3RpbmcgaW4KKyAgJSB5b3VyIHRleGluZm8gc291cmNlIGZpbGUgbGlrZSB0aGlzOgorICAlIEB0ZXgKKyAgJSBcZ2xvYmFsXG5vcm1hbG9mZnNldCA9IC02bW0KKyAgJSBcZ2xvYmFsXGJpbmRpbmdvZmZzZXQgPSAxMG1tCisgICUgQGVuZCB0ZXgKKyAgXGludGVybmFscGFnZXNpemVzezUxXGJhc2VsaW5lc2tpcH17MTYwbW19CisgICAgICAgICAgICAgICAgICAgIHtcdm9mZnNldH17XGhvZmZzZXR9JQorICAgICAgICAgICAgICAgICAgICB7XGJpbmRpbmdvZmZzZXR9ezQ0cHR9JQorICAgICAgICAgICAgICAgICAgICB7Mjk3bW19ezIxMG1tfSUKKyAgJQorICBcdG9sZXJhbmNlID0gNzAwCisgIFxoZnV6eiA9IDFwdAorICBcY29udGVudHNyaWdodG1hcmdpbiA9IDBwdAorICBcZGVmYm9keWluZGVudCA9IDVtbQorfX0KKworJSBVc2UgQGFmaXZlcGFwZXIgdG8gcHJpbnQgb24gRXVyb3BlYW4gQTUgcGFwZXIuCislIEZyb20gcm9taWxkb0B1cmFuby5pY2ViLnVmb3AuYnIsIDIgSnVseSAyMDAwLgorJSBIZSBhbHNvIHJlY29tbWVuZHMgbWFraW5nIEBleGFtcGxlIGFuZCBAbGlzcCBiZSBzbWFsbC4KK1xkZWZcYWZpdmVwYXBlcnt7XGdsb2JhbGRlZnMgPSAxCisgIFxwYXJza2lwID0gMnB0IHBsdXMgMXB0IG1pbnVzIDAuMXB0CisgIFx0ZXh0bGVhZGluZyA9IDEyLjVwdAorICAlCisgIFxpbnRlcm5hbHBhZ2VzaXplc3sxNjBtbX17MTIwbW19JQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9e1xob2Zmc2V0fSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXs4cHR9JQorICAgICAgICAgICAgICAgICAgICB7MjEwbW19ezE0OG1tfSUKKyAgJQorICBcbGlzcG5hcnJvd2luZyA9IDAuMmluCisgIFx0b2xlcmFuY2UgPSA4MDAKKyAgXGhmdXp6ID0gMS4ycHQKKyAgXGNvbnRlbnRzcmlnaHRtYXJnaW4gPSAwcHQKKyAgXGRlZmJvZHlpbmRlbnQgPSAybW0KKyAgXHRhYmxlaW5kZW50ID0gMTJtbQorfX0KKworJSBBIHNwZWNpZmljIHRleHQgbGF5b3V0LCAyNHgxNWNtIG92ZXJhbGwsIGludGVuZGVkIGZvciBBNCBwYXBlci4KK1xkZWZcYWZvdXJsYXRleHt7XGdsb2JhbGRlZnMgPSAxCisgIFxhZm91cnBhcGVyCisgIFxpbnRlcm5hbHBhZ2VzaXplc3syMzdtbX17MTUwbW19JQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9ezQuNm1tfSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXs3bW19JQorICAgICAgICAgICAgICAgICAgICB7Mjk3bW19ezIxMG1tfSUKKyAgJQorICAlIE11c3QgZXhwbGljaXRseSByZXNldCB0byAwIGJlY2F1c2Ugd2UgY2FsbCBcYWZvdXJwYXBlci4KKyAgXGdsb2JhbGRlZnMgPSAwCit9fQorCislIFVzZSBAYWZvdXJ3aWRlIHRvIHByaW50IG9uIEE0IHBhcGVyIGluIGxhbmRzY2FwZSBmb3JtYXQuCitcZGVmXGFmb3Vyd2lkZXt7XGdsb2JhbGRlZnMgPSAxCisgIFxhZm91cnBhcGVyCisgIFxpbnRlcm5hbHBhZ2VzaXplc3syNDFtbX17MTY1bW19JQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9ey0yLjk1bW19JQorICAgICAgICAgICAgICAgICAgICB7XGJpbmRpbmdvZmZzZXR9ezdtbX0lCisgICAgICAgICAgICAgICAgICAgIHsyOTdtbX17MjEwbW19JQorICBcZ2xvYmFsZGVmcyA9IDAKK319CisKKyUgQHBhZ2VzaXplcyBURVhUSEVJR0hUWyxURVhUV0lEVEhdCislIFBlcmhhcHMgd2Ugc2hvdWxkIGFsbG93IHNldHRpbmcgdGhlIG1hcmdpbnMsIFx0b3Bza2lwLCBccGFyc2tpcCwKKyUgYW5kL29yIGxlYWRpbmcsIGFsc28uIE9yIHBlcmhhcHMgd2Ugc2hvdWxkIGNvbXB1dGUgdGhlbSBzb21laG93LgorJQorXGRlZlxwYWdlc2l6ZXN7XHBhcnNlYXJnXHBhZ2VzaXplc3h4eH0KK1xkZWZccGFnZXNpemVzeHh4IzF7XHBhZ2VzaXplc3l5eSAjMSwsXGZpbmlzaH0KK1xkZWZccGFnZXNpemVzeXl5IzEsIzIsIzNcZmluaXNoe3slCisgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn1caWZkaW1cd2QwID4gMHB0IFxoc2l6ZT0jMlxyZWxheCBcZmkKKyAgXGdsb2JhbGRlZnMgPSAxCisgICUKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ30lCisgICUKKyAgXGRpbWVuMCA9ICMxCisgIFxhZHZhbmNlXGRpbWVuMCBieSBcdm9mZnNldAorICAlCisgIFxkaW1lbjIgPSBcaHNpemUKKyAgXGFkdmFuY2VcZGltZW4yIGJ5IFxub3JtYWxvZmZzZXQKKyAgJQorICBcaW50ZXJuYWxwYWdlc2l6ZXN7IzF9e1xoc2l6ZX0lCisgICAgICAgICAgICAgICAgICAgIHtcdm9mZnNldH17XG5vcm1hbG9mZnNldH0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17NDRwdH0lCisgICAgICAgICAgICAgICAgICAgIHtcZGltZW4wfXtcZGltZW4yfSUKK319CisKKyUgU2V0IGRlZmF1bHQgdG8gbGV0dGVyLgorJQorXGxldHRlcnBhcGVyCisKKworXG1lc3NhZ2V7YW5kIHR1cm5pbmcgb24gdGV4aW5mbyBpbnB1dCBmb3JtYXQufQorCislIERlZmluZSBtYWNyb3MgdG8gb3V0cHV0IHZhcmlvdXMgY2hhcmFjdGVycyB3aXRoIGNhdGNvZGUgZm9yIG5vcm1hbCB0ZXh0LgorXGNhdGNvZGVgXCI9XG90aGVyCitcY2F0Y29kZWBcfj1cb3RoZXIKK1xjYXRjb2RlYFxePVxvdGhlcgorXGNhdGNvZGVgXF89XG90aGVyCitcY2F0Y29kZWBcfD1cb3RoZXIKK1xjYXRjb2RlYFw8PVxvdGhlcgorXGNhdGNvZGVgXD49XG90aGVyCitcY2F0Y29kZWBcKz1cb3RoZXIKK1xjYXRjb2RlYFwkPVxvdGhlcgorXGRlZlxub3JtYWxkb3VibGVxdW90ZXsifQorXGRlZlxub3JtYWx0aWxkZXt+fQorXGRlZlxub3JtYWxjYXJldHtefQorXGRlZlxub3JtYWx1bmRlcnNjb3Jle199CitcZGVmXG5vcm1hbHZlcnRpY2FsYmFye3x9CitcZGVmXG5vcm1hbGxlc3N7PH0KK1xkZWZcbm9ybWFsZ3JlYXRlcns+fQorXGRlZlxub3JtYWxwbHVzeyt9CitcZGVmXG5vcm1hbGRvbGxhcnskfSUkIGZvbnQtbG9jayBmaXgKKworJSBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gbWFrZSBhIGNoYXJhY3RlciBwcmludCBvbmUgd2F5IGluIHR0Zm9udAorJSB3aGVyZSBpdCBjYW4gcHJvYmFibHkganVzdCBiZSBvdXRwdXQsIGFuZCBhbm90aGVyIHdheSBpbiBvdGhlciBmb250cywKKyUgd2hlcmUgc29tZXRoaW5nIGhhaXJpZXIgcHJvYmFibHkgbmVlZHMgdG8gYmUgZG9uZS4KKyUKKyUgIzEgaXMgd2hhdCB0byBwcmludCBpZiB3ZSBhcmUgaW5kZWVkIHVzaW5nIFx0dDsgIzIgaXMgd2hhdCB0byBwcmludAorJSBvdGhlcndpc2UuICBTaW5jZSBhbGwgdGhlIENvbXB1dGVyIE1vZGVybiB0eXBld3JpdGVyIGZvbnRzIGhhdmUgemVybworJSBpbnRlcndvcmQgc3RyZXRjaCAoYW5kIHNocmluayksIGFuZCBpdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdCBhbGwKKyUgdHlwZXdyaXRlciBmb250cyB0byBoYXZlIHRoaXMsIHdlIGNhbiBjaGVjayB0aGF0IGZvbnQgcGFyYW1ldGVyLgorJQorXGRlZlxpZnVzaW5ndHQjMSMye1xpZmRpbSBcZm9udGRpbWVuM1xmb250PTBwdCAjMVxlbHNlICMyXGZpfQorCislIFNhbWUgYXMgYWJvdmUsIGJ1dCBjaGVjayBmb3IgaXRhbGljIGZvbnQuICBBY3R1YWxseSB0aGlzIGFsc28gY2F0Y2hlcworJSBub24taXRhbGljIHNsYW50ZWQgZm9udHMgc2luY2UgaXQgaXMgaW1wb3NzaWJsZSB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20KKyUgaXRhbGljIGZvbnRzLiAgQnV0IHNpbmNlIHRoaXMgaXMgb25seSB1c2VkIGJ5ICQgYW5kIGl0IHVzZXMgXHNsIGFueXdheQorJSB0aGlzIGlzIG5vdCBhIHByb2JsZW0uCitcZGVmXGlmdXNpbmdpdCMxIzJ7XGlmZGltIFxmb250ZGltZW4xXGZvbnQ+MHB0ICMxXGVsc2UgIzJcZml9CisKKyUgVHVybiBvZmYgYWxsIHNwZWNpYWwgY2hhcmFjdGVycyBleGNlcHQgQAorJSAoYW5kIHRob3NlIHdoaWNoIHRoZSB1c2VyIGNhbiB1c2UgYXMgaWYgdGhleSB3ZXJlIG9yZGluYXJ5KS4KKyUgTW9zdCBvZiB0aGVzZSB3ZSBzaW1wbHkgcHJpbnQgZnJvbSB0aGUgXHR0IGZvbnQsIGJ1dCBmb3Igc29tZSwgd2UgY2FuCislIHVzZSBtYXRoIG9yIG90aGVyIHZhcmlhbnRzIHRoYXQgbG9vayBiZXR0ZXIgaW4gbm9ybWFsIHRleHQuCisKK1xjYXRjb2RlYFwiPVxhY3RpdmUKK1xkZWZcYWN0aXZlZG91YmxlcXVvdGV7e1x0dFxjaGFyMzR9fQorXGxldCI9XGFjdGl2ZWRvdWJsZXF1b3RlCitcY2F0Y29kZWBcfj1cYWN0aXZlCitcZGVmfnt7XHR0XGNoYXIxMjZ9fQorXGNoYXJkZWZcaGF0PWBcXgorXGNhdGNvZGVgXF49XGFjdGl2ZQorXGRlZl57e1x0dCBcaGF0fX0KKworXGNhdGNvZGVgXF89XGFjdGl2ZQorXGRlZl97XGlmdXNpbmd0dFxub3JtYWx1bmRlcnNjb3JlXF99CislIFN1YnJvdXRpbmUgZm9yIHRoZSBwcmV2aW91cyBtYWNyby4KK1xkZWZcX3tcbGVhdmV2bW9kZSBca2Vybi4wN2VtIFx2Ym94e1xocnVsZSB3aWR0aC4zZW0gaGVpZ2h0LjFleH1ca2VybiAuMDdlbSB9CisKK1xjYXRjb2RlYFx8PVxhY3RpdmUKK1xkZWZ8e3tcdHRcY2hhcjEyNH19CitcY2hhcmRlZiBcbGVzcz1gXDwKK1xjYXRjb2RlYFw8PVxhY3RpdmUKK1xkZWY8e3tcdHQgXGxlc3N9fQorXGNoYXJkZWYgXGd0cj1gXD4KK1xjYXRjb2RlYFw+PVxhY3RpdmUKK1xkZWY+e3tcdHQgXGd0cn19CitcY2F0Y29kZWBcKz1cYWN0aXZlCitcZGVmK3t7XHR0IFxjaGFyIDQzfX0KK1xjYXRjb2RlYFwkPVxhY3RpdmUKK1xkZWYke1xpZnVzaW5naXR7e1xzbFwkfX1cbm9ybWFsZG9sbGFyfSUkIGZvbnQtbG9jayBmaXgKKworJSBTZXQgdXAgYW4gYWN0aXZlIGRlZmluaXRpb24gZm9yID0sIGJ1dCBkb24ndCBlbmFibGUgaXQgbW9zdCBvZiB0aGUgdGltZS4KK3tcY2F0Y29kZWBcPT1cYWN0aXZlCitcZ2xvYmFsXGRlZj17e1x0dCBcY2hhciA2MX19fQorCitcY2F0Y29kZWArPVxhY3RpdmUKK1xjYXRjb2RlYFxfPVxhY3RpdmUKKworJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIGEgZmlsZQorJSBuYW1lIGNhbm5vdCBiZSBhY3RpdmUgdW50aWwgd2UgaGF2ZSBwYXJzZWQgdGhlIGNvbW1hbmQgbGluZS4KKyUgU28gdHVybiB0aGVtIG9mZiBhZ2FpbiwgYW5kIGhhdmUgXGV2ZXJ5am9iIChvciBAc2V0ZmlsZW5hbWUpIHR1cm4gdGhlbSBvbi4KKyUgXG90aGVyaWZ5YWN0aXZlIGlzIGNhbGxlZCBuZWFyIHRoZSBlbmQgb2YgdGhpcyBmaWxlLgorXGRlZlxvdGhlcmlmeWFjdGl2ZXtcY2F0Y29kZWArPVxvdGhlciBcY2F0Y29kZWBcXz1cb3RoZXJ9CisKK1xjYXRjb2RlYFxAPTAKKworJSBccmF3YmFja3NsYXNoeHggb3V0cHV0cyBvbmUgYmFja3NsYXNoIGNoYXJhY3RlciBpbiBjdXJyZW50IGZvbnQsCislIGFzIGluIFxjaGFyYFxcLgorXGdsb2JhbFxjaGFyZGVmXHJhd2JhY2tzbGFzaHh4PWBcXAorCislIFxyYXdiYWNrc2xhc2ggZGVmaW5lcyBhbiBhY3RpdmUgXCB0byBkbyBccmF3YmFja3NsYXNoeHguCislIFxvdGhlcmJhY2tzbGFzaCBkZWZpbmVzIGFuIGFjdGl2ZSBcIHRvIGJlIGEgbGl0ZXJhbCBgXCcgY2hhcmFjdGVyIHdpdGgKKyUgY2F0Y29kZSBvdGhlci4KK3tcY2F0Y29kZWBcXD1cYWN0aXZlCisgQGdkZWZAcmF3YmFja3NsYXNoe0BsZXRcPUByYXdiYWNrc2xhc2h4eH0KKyBAZ2RlZkBvdGhlcmJhY2tzbGFzaHtAbGV0XD1AcmVhbGJhY2tzbGFzaH0KK30KKworJSBccmVhbGJhY2tzbGFzaCBpcyBhbiBhY3R1YWwgY2hhcmFjdGVyIGBcJyB3aXRoIGNhdGNvZGUgb3RoZXIuCit7XGNhdGNvZGVgXFw9XG90aGVyIEBnZGVmQHJlYWxiYWNrc2xhc2h7XH19CisKKyUgXG5vcm1hbGJhY2tzbGFzaCBvdXRwdXRzIG9uZSBiYWNrc2xhc2ggaW4gZml4ZWQgd2lkdGggZm9udC4KK1xkZWZcbm9ybWFsYmFja3NsYXNoe3tcdHRccmF3YmFja3NsYXNoeHh9fQorCitcY2F0Y29kZWBcXD1cYWN0aXZlCisKKyUgVXNlZCBzb21ldGltZXMgdG8gdHVybiBvZmYgKGVmZmVjdGl2ZWx5KSB0aGUgYWN0aXZlIGNoYXJhY3RlcnMKKyUgZXZlbiBhZnRlciBwYXJzaW5nIHRoZW0uCitAZGVmQHR1cm5vZmZhY3RpdmV7JQorICBAbGV0Ij1Abm9ybWFsZG91YmxlcXVvdGUKKyAgQGxldFw9QHJlYWxiYWNrc2xhc2gKKyAgQGxldH49QG5vcm1hbHRpbGRlCisgIEBsZXRePUBub3JtYWxjYXJldAorICBAbGV0Xz1Abm9ybWFsdW5kZXJzY29yZQorICBAbGV0fD1Abm9ybWFsdmVydGljYWxiYXIKKyAgQGxldDw9QG5vcm1hbGxlc3MKKyAgQGxldD49QG5vcm1hbGdyZWF0ZXIKKyAgQGxldCs9QG5vcm1hbHBsdXMKKyAgQGxldCQ9QG5vcm1hbGRvbGxhciAlJCBmb250LWxvY2sgZml4Cit9CisKKyUgU2FtZSBhcyBAdHVybm9mZmFjdGl2ZSBleGNlcHQgb3V0cHV0cyBcIGFzIHtcdHRcY2hhcmBcXH0gaW5zdGVhZCBvZgorJSB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXIgYFwnLiAgKFRodXMsIFwgaXMgbm90IGV4cGFuZGFibGUgd2hlbiB0aGlzIGlzIGluCislIGVmZmVjdC4pCislCitAZGVmQG5vcm1hbHR1cm5vZmZhY3RpdmV7QHR1cm5vZmZhY3RpdmUgQGxldFw9QG5vcm1hbGJhY2tzbGFzaH0KKworJSBNYWtlIF8gYW5kICsgXG90aGVyIGNoYXJhY3RlcnMsIHRlbXBvcmFyaWx5LgorJSBUaGlzIGlzIGNhbmNlbGVkIGJ5IEBmaXhiYWNrc2xhc2guCitAb3RoZXJpZnlhY3RpdmUKKworJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCB3ZSBkb24ndCB3YW50IHRoZSBgXGlucHV0IHRleGluZm8nIHRvIHNob3cgdXAuCislIFRoYXQgaXMgd2hhdCBcZWF0aW5wdXQgaXMgZm9yOyBhZnRlciB0aGF0LCB0aGUgYFwnIHNob3VsZCByZXZlcnQgdG8gcHJpbnRpbmcKKyUgYSBiYWNrc2xhc2guCislCitAZ2RlZkBlYXRpbnB1dCBpbnB1dCB0ZXhpbmZve0BmaXhiYWNrc2xhc2h9CitAZ2xvYmFsQGxldFwgPSBAZWF0aW5wdXQKKworJSBPbiB0aGUgb3RoZXIgaGFuZCwgcGVyaGFwcyB0aGUgZmlsZSBkaWQgbm90IGhhdmUgYSBgXGlucHV0IHRleGluZm8nLiBUaGVuCislIHRoZSBmaXJzdCBgXHsgaW4gdGhlIGZpbGUgd291bGQgY2F1c2UgYW4gZXJyb3IuIFRoaXMgbWFjcm8gdHJpZXMgdG8gZml4CislIHRoYXQsIGFzc3VtaW5nIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IGBcJyBjb3VsZCBwbGF1c2libHkgb2NjdXIuCislIEFsc28gYmFjayB0dXJuIG9uIGFjdGl2ZSBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIHRoZSBpbnB1dAorJSBmaWxlIG5hbWUsIGluIGNhc2Ugbm90IHVzaW5nIGEgcHJlLWR1bXBlZCBmb3JtYXQuCislCitAZ2RlZkBmaXhiYWNrc2xhc2h7JQorICBAaWZ4XEBlYXRpbnB1dCBAbGV0XCA9IEBub3JtYWxiYWNrc2xhc2ggQGZpCisgIEBjYXRjb2RlYCs9QGFjdGl2ZQorICBAY2F0Y29kZWBAXz1AYWN0aXZlCit9CisKKyUgU2F5IEBmb28sIG5vdCBcZm9vLCBpbiBlcnJvciBtZXNzYWdlcy4KK0Blc2NhcGVjaGFyID0gYEBACisKKyUgVGhlc2UgbG9vayBvayBpbiBhbGwgZm9udHMsIHNvIGp1c3QgbWFrZSB0aGVtIG5vdCBzcGVjaWFsLgorQGNhdGNvZGVgQCYgPSBAb3RoZXIKK0BjYXRjb2RlYEAjID0gQG90aGVyCitAY2F0Y29kZWBAJSA9IEBvdGhlcgorCitAYyBTZXQgaW5pdGlhbCBmb250cy4KK0B0ZXh0Zm9udHMKK0BybQorCisKK0BjIExvY2FsIHZhcmlhYmxlczoKK0BjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKK0BjIHBhZ2UtZGVsaW1pdGVyOiAiXlxcXFxtZXNzYWdlIgorQGMgdGltZS1zdGFtcC1zdGFydDogImRlZlxcXFx0ZXhpbmZvdmVyc2lvbnsiCitAYyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKK0BjIHRpbWUtc3RhbXAtZW5kOiAifSIKK0BjIEVuZDoKZGlmZiAtLWdpdCBhL2luZXRfbnRvcC5jIGIvaW5ldF9udG9wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlNTQyZAotLS0gL2Rldi9udWxsCisrKyBiL2luZXRfbnRvcC5jCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlICJtaXNzaW5nXGluZXRfbnRvcC5jIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2luc3RhbGwtc2ggYi9pbnN0YWxsLXNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY3ODFiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbnN0YWxsLXNoCkBAIC0wLDAgKzEsNTIwIEBACisjIS9iaW4vc2gKKyMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCisKK3NjcmlwdHZlcnNpb249MjAwOS0wNC0yOC4yMTsgIyBVVEMKKworIyBUaGlzIG9yaWdpbmF0ZXMgZnJvbSBYMTFSNSAobWl0L3V0aWwvc2NyaXB0cy9pbnN0YWxsLnNoKSwgd2hpY2ggd2FzCisjIGxhdGVyIHJlbGVhc2VkIGluIFgxMVI2ICh4Yy9jb25maWcvdXRpbC9pbnN0YWxsLnNoKSB3aXRoIHRoZQorIyBmb2xsb3dpbmcgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgorIworIyBDb3B5cmlnaHQgKEMpIDE5OTQgWCBDb25zb3J0aXVtCisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisjIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisjIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorIyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUMtCisjIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIHRoZSBYIENvbnNvcnRpdW0gc2hhbGwgbm90CisjIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorIyBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisjIHRpdW0uCisjCisjCisjIEZTRiBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBhcmUgaW4gdGhlIHB1YmxpYyBkb21haW4uCisjCisjIENhbGxpbmcgdGhpcyBzY3JpcHQgaW5zdGFsbC1zaCBpcyBwcmVmZXJyZWQgb3ZlciBpbnN0YWxsLnNoLCB0byBwcmV2ZW50CisjIGBtYWtlJyBpbXBsaWNpdCBydWxlcyBmcm9tIGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgaW5zdGFsbCBmcm9tIGl0CisjIHdoZW4gdGhlcmUgaXMgbm8gTWFrZWZpbGUuCisjCisjIFRoaXMgc2NyaXB0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQlNEIGluc3RhbGwgc2NyaXB0LCBidXQgd2FzIHdyaXR0ZW4KKyMgZnJvbSBzY3JhdGNoLgorCitubD0nCisnCitJRlM9IiAiIgkkbmwiCisKKyMgc2V0IERPSVRQUk9HIHRvIGVjaG8gdG8gdGVzdCB0aGlzIHNjcmlwdAorCisjIERvbid0IHVzZSA6LSBzaW5jZSA0LjNCU0QgYW5kIGVhcmxpZXIgc2hlbGxzIGRvbid0IGxpa2UgaXQuCitkb2l0PSR7RE9JVFBST0ctfQoraWYgdGVzdCAteiAiJGRvaXQiOyB0aGVuCisgIGRvaXRfZXhlYz1leGVjCitlbHNlCisgIGRvaXRfZXhlYz0kZG9pdAorZmkKKworIyBQdXQgaW4gYWJzb2x1dGUgZmlsZSBuYW1lcyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsKKyMgb3IgdXNlIGVudmlyb25tZW50IHZhcnMuCisKK2NoZ3JwcHJvZz0ke0NIR1JQUFJPRy1jaGdycH0KK2NobW9kcHJvZz0ke0NITU9EUFJPRy1jaG1vZH0KK2Nob3ducHJvZz0ke0NIT1dOUFJPRy1jaG93bn0KK2NtcHByb2c9JHtDTVBQUk9HLWNtcH0KK2NwcHJvZz0ke0NQUFJPRy1jcH0KK21rZGlycHJvZz0ke01LRElSUFJPRy1ta2Rpcn0KK212cHJvZz0ke01WUFJPRy1tdn0KK3JtcHJvZz0ke1JNUFJPRy1ybX0KK3N0cmlwcHJvZz0ke1NUUklQUFJPRy1zdHJpcH0KKworcG9zaXhfZ2xvYj0nPycKK2luaXRpYWxpemVfcG9zaXhfZ2xvYj0nCisgIHRlc3QgIiRwb3NpeF9nbG9iIiAhPSAiPyIgfHwgeworICAgIGlmIChzZXQgLWYpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBwb3NpeF9nbG9iPQorICAgIGVsc2UKKyAgICAgIHBvc2l4X2dsb2I9OgorICAgIGZpCisgIH0KKycKKworcG9zaXhfbWtkaXI9CisKKyMgRGVzaXJlZCBtb2RlIG9mIGluc3RhbGxlZCBmaWxlLgorbW9kZT0wNzU1CisKK2NoZ3JwY21kPQorY2htb2RjbWQ9JGNobW9kcHJvZworY2hvd25jbWQ9CittdmNtZD0kbXZwcm9nCitybWNtZD0iJHJtcHJvZyAtZiIKK3N0cmlwY21kPQorCitzcmM9Citkc3Q9CitkaXJfYXJnPQorZHN0X2FyZz0KKworY29weV9vbl9jaGFuZ2U9ZmFsc2UKK25vX3RhcmdldF9kaXJlY3Rvcnk9CisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0uLi4gWy1UXSBTUkNGSUxFIERTVEZJTEUKKyAgIG9yOiAkMCBbT1BUSU9OXS4uLiBTUkNGSUxFUy4uLiBESVJFQ1RPUlkKKyAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtdCBESVJFQ1RPUlkgU1JDRklMRVMuLi4KKyAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtZCBESVJFQ1RPUklFUy4uLgorCitJbiB0aGUgMXN0IGZvcm0sIGNvcHkgU1JDRklMRSB0byBEU1RGSUxFLgorSW4gdGhlIDJuZCBhbmQgM3JkLCBjb3B5IGFsbCBTUkNGSUxFUyB0byBESVJFQ1RPUlkuCitJbiB0aGUgNHRoLCBjcmVhdGUgRElSRUNUT1JJRVMuCisKK09wdGlvbnM6CisgICAgIC0taGVscCAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQuCisgICAgIC0tdmVyc2lvbiAgZGlzcGxheSB2ZXJzaW9uIGluZm8gYW5kIGV4aXQuCisKKyAgLWMgICAgICAgICAgICAoaWdub3JlZCkKKyAgLUMgICAgICAgICAgICBpbnN0YWxsIG9ubHkgaWYgZGlmZmVyZW50IChwcmVzZXJ2ZSB0aGUgbGFzdCBkYXRhIG1vZGlmaWNhdGlvbiB0aW1lKQorICAtZCAgICAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCisgIC1nIEdST1VQICAgICAgJGNoZ3JwcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gR1JPVVAuCisgIC1tIE1PREUgICAgICAgJGNobW9kcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gTU9ERS4KKyAgLW8gVVNFUiAgICAgICAkY2hvd25wcm9nIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgorICAtcyAgICAgICAgICAgICRzdHJpcHByb2cgaW5zdGFsbGVkIGZpbGVzLgorICAtdCBESVJFQ1RPUlkgIGluc3RhbGwgaW50byBESVJFQ1RPUlkuCisgIC1UICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yIGlmIERTVEZJTEUgaXMgYSBkaXJlY3RvcnkuCisKK0Vudmlyb25tZW50IHZhcmlhYmxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb21tYW5kczoKKyAgQ0hHUlBQUk9HIENITU9EUFJPRyBDSE9XTlBST0cgQ01QUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRworICBSTVBST0cgU1RSSVBQUk9HCisiCisKK3doaWxlIHRlc3QgJCMgLW5lIDA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtYykgOzsKKworICAgIC1DKSBjb3B5X29uX2NoYW5nZT10cnVlOzsKKworICAgIC1kKSBkaXJfYXJnPXRydWU7OworCisgICAgLWcpIGNoZ3JwY21kPSIkY2hncnBwcm9nICQyIgorCXNoaWZ0OzsKKworICAgIC0taGVscCkgZWNobyAiJHVzYWdlIjsgZXhpdCAkPzs7CisKKyAgICAtbSkgbW9kZT0kMgorCWNhc2UgJG1vZGUgaW4KKwkgIConICcqIHwgKicJJyogfCAqJworJyoJICB8IConKicqIHwgKic/JyogfCAqJ1snKikKKwkgICAgZWNobyAiJDA6IGludmFsaWQgbW9kZTogJG1vZGUiID4mMgorCSAgICBleGl0IDE7OworCWVzYWMKKwlzaGlmdDs7CisKKyAgICAtbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIiCisJc2hpZnQ7OworCisgICAgLXMpIHN0cmlwY21kPSRzdHJpcHByb2c7OworCisgICAgLXQpIGRzdF9hcmc9JDIKKwlzaGlmdDs7CisKKyAgICAtVCkgbm9fdGFyZ2V0X2RpcmVjdG9yeT10cnVlOzsKKworICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0ICQ/OzsKKworICAgIC0tKQlzaGlmdAorCWJyZWFrOzsKKworICAgIC0qKQllY2hvICIkMDogaW52YWxpZCBvcHRpb246ICQxIiA+JjIKKwlleGl0IDE7OworCisgICAgKikgIGJyZWFrOzsKKyAgZXNhYworICBzaGlmdAorZG9uZQorCitpZiB0ZXN0ICQjIC1uZSAwICYmIHRlc3QgLXogIiRkaXJfYXJnJGRzdF9hcmciOyB0aGVuCisgICMgV2hlbiAtZCBpcyB1c2VkLCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLgorICAjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgorICAjIE90aGVyd2lzZSwgdGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIGRlc3RpbmF0aW9uLiAgUmVtb3ZlIGl0IGZyb20gJEAuCisgIGZvciBhcmcKKyAgZG8KKyAgICBpZiB0ZXN0IC1uICIkZHN0X2FyZyI7IHRoZW4KKyAgICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgorICAgICAgc2V0IGZub3JkICIkQCIgIiRkc3RfYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgIGZpCisgICAgc2hpZnQgIyBhcmcKKyAgICBkc3RfYXJnPSRhcmcKKyAgZG9uZQorZmkKKworaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgorICBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgICBlY2hvICIkMDogbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQuIiA+JjIKKyAgICBleGl0IDEKKyAgZmkKKyAgIyBJdCdzIE9LIHRvIGNhbGwgYGluc3RhbGwtc2ggLWQnIHdpdGhvdXQgYXJndW1lbnQuCisgICMgVGhpcyBjYW4gaGFwcGVuIHdoZW4gY3JlYXRpbmcgY29uZGl0aW9uYWwgZGlyZWN0b3JpZXMuCisgIGV4aXQgMAorZmkKKworaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCisgIHRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1CisKKyAgIyBTZXQgdW1hc2sgc28gYXMgbm90IHRvIGNyZWF0ZSB0ZW1wcyB3aXRoIHRvby1nZW5lcm91cyBtb2Rlcy4KKyAgIyBIb3dldmVyLCAnc3RyaXAnIHJlcXVpcmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRlbXBzLgorICBjYXNlICRtb2RlIGluCisgICAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCisgICAgKjY0NCkgY3BfdW1hc2s9MTMzOzsKKyAgICAqNzU1KSBjcF91bWFzaz0yMjs7CisKKyAgICAqWzAtN10pCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0nJSAyMDAnCisgICAgICBmaQorICAgICAgY3BfdW1hc2s9YGV4cHIgJygnIDc3NyAtICRtb2RlICUgMTAwMCAnKScgJHVfcGx1c19yd2A7OworICAgICopCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0sdStydworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPSRtb2RlJHVfcGx1c19ydzs7CisgIGVzYWMKK2ZpCisKK2ZvciBzcmMKK2RvCisgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KKyAgY2FzZSAkc3JjIGluCisgICAgLSopIHNyYz0uLyRzcmM7OworICBlc2FjCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgZHN0PSRzcmMKKyAgICBkc3RkaXI9JGRzdAorICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgZHN0ZGlyX3N0YXR1cz0kPworICBlbHNlCisKKyAgICAjIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZAorICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKKyAgICAjIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KKyAgICBpZiB0ZXN0ICEgLWYgIiRzcmMiICYmIHRlc3QgISAtZCAiJHNyYyI7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiAkc3JjIGRvZXMgbm90IGV4aXN0LiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgaWYgdGVzdCAteiAiJGRzdF9hcmciOyB0aGVuCisgICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkLiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgZHN0PSRkc3RfYXJnCisgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICAgIGNhc2UgJGRzdCBpbgorICAgICAgLSopIGRzdD0uLyRkc3Q7OworICAgIGVzYWMKKworICAgICMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IHdvbid0IHdvcmsKKyAgICAjIGlmIGRvdWJsZSBzbGFzaGVzIGFyZW4ndCBpZ25vcmVkLgorICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkbm9fdGFyZ2V0X2RpcmVjdG9yeSI7IHRoZW4KKwllY2hvICIkMDogJGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwlleGl0IDEKKyAgICAgIGZpCisgICAgICBkc3RkaXI9JGRzdAorICAgICAgZHN0PSRkc3RkaXIvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcl9zdGF0dXM9MAorICAgIGVsc2UKKyAgICAgICMgUHJlZmVyIGRpcm5hbWUsIGJ1dCBmYWxsIGJhY2sgb24gYSBzdWJzdGl0dXRlIGlmIGRpcm5hbWUgZmFpbHMuCisgICAgICBkc3RkaXI9YAorCShkaXJuYW1lICIkZHN0IikgMj4vZGV2L251bGwgfHwKKwlleHByIFgiJGRzdCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CisJZWNobyBYIiRkc3QiIHwKKwkgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXCkuKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSBzLy4qLy4vOyBxJworICAgICAgYAorCisgICAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgICAgZHN0ZGlyX3N0YXR1cz0kPworICAgIGZpCisgIGZpCisKKyAgb2Jzb2xldGVfbWtkaXJfdXNlZD1mYWxzZQorCisgIGlmIHRlc3QgJGRzdGRpcl9zdGF0dXMgIT0gMDsgdGhlbgorICAgIGNhc2UgJHBvc2l4X21rZGlyIGluCisgICAgICAnJykKKwkjIENyZWF0ZSBpbnRlcm1lZGlhdGUgZGlycyB1c2luZyBtb2RlIDc1NSBhcyBtb2RpZmllZCBieSB0aGUgdW1hc2suCisJIyBUaGlzIGlzIGxpa2UgRnJlZUJTRCAnaW5zdGFsbCcgYXMgb2YgMTk5Ny0xMC0yOC4KKwl1bWFzaz1gdW1hc2tgCisJY2FzZSAkc3RyaXBjbWQuJHVtYXNrIGluCisJICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKwkgICpbMjM2N11bMjM2N10pIG1rZGlyX3VtYXNrPSR1bWFzazs7CisJICAuKjBbMDJdWzAyXSB8IC5bMDJdWzAyXSB8IC5bMDJdKSBta2Rpcl91bWFzaz0yMjs7CisKKwkgICpbMC03XSkKKwkgICAgbWtkaXJfdW1hc2s9YGV4cHIgJHVtYXNrICsgMjIgXAorCSAgICAgIC0gJHVtYXNrICUgMTAwICUgNDAgKyAkdW1hc2sgJSAyMCBcCisJICAgICAgLSAkdW1hc2sgJSAxMCAlIDQgKyAkdW1hc2sgJSAyCisJICAgIGA7OworCSAgKikgbWtkaXJfdW1hc2s9JHVtYXNrLGdvLXc7OworCWVzYWMKKworCSMgV2l0aCAtZCwgY3JlYXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCisJIyBPdGhlcndpc2UsIHJlbHkgb24gJG1rZGlyX3VtYXNrLgorCWlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorCSAgbWtkaXJfbW9kZT0tbSRtb2RlCisJZWxzZQorCSAgbWtkaXJfbW9kZT0KKwlmaQorCisJcG9zaXhfbWtkaXI9ZmFsc2UKKwljYXNlICR1bWFzayBpbgorCSAgKlsxMjM1NjddWzAtN11bMC03XSkKKwkgICAgIyBQT1NJWCBta2RpciAtcCBzZXRzIHUrd3ggYml0cyByZWdhcmRsZXNzIG9mIHVtYXNrLCB3aGljaAorCSAgICAjIGlzIGluY29tcGF0aWJsZSB3aXRoIEZyZWVCU0QgJ2luc3RhbGwnIHdoZW4gKHVtYXNrICYgMzAwKSAhPSAwLgorCSAgICA7OworCSAgKikKKwkgICAgdG1wZGlyPSR7VE1QRElSLS90bXB9L2lucyRSQU5ET00tJCQKKwkgICAgdHJhcCAncmV0PSQ/OyBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIgMj4vZGV2L251bGw7IGV4aXQgJHJldCcgMAorCisJICAgIGlmICh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkJZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkdG1wZGlyL2QiKSA+L2Rldi9udWxsIDI+JjEKKwkgICAgdGhlbgorCSAgICAgIGlmIHRlc3QgLXogIiRkaXJfYXJnIiB8fCB7CisJCSAgICMgQ2hlY2sgZm9yIFBPU0lYIGluY29tcGF0aWJpbGl0aWVzIHdpdGggLW0uCisJCSAgICMgSFAtVVggMTEuMjMgYW5kIElSSVggNi41IG1rZGlyIC1tIC1wIHNldHMgZ3JvdXAtIG9yCisJCSAgICMgb3RoZXItd3JpdGVhYmxlIGJpdCBvZiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gaXQgc2hvdWxkbid0LgorCQkgICAjIEZyZWVCU0QgNi4xIG1rZGlyIC1tIC1wIHNldHMgbW9kZSBvZiBleGlzdGluZyBkaXJlY3RvcnkuCisJCSAgIGxzX2xkX3RtcGRpcj1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgY2FzZSAkbHNfbGRfdG1wZGlyIGluCisJCSAgICAgZD8/Pz8tP3ItKikgZGlmZmVyZW50X21vZGU9NzAwOzsKKwkJICAgICBkPz8/Py0/LS0qKSBkaWZmZXJlbnRfbW9kZT03NTU7OworCQkgICAgICopIGZhbHNlOzsKKwkJICAgZXNhYyAmJgorCQkgICAkbWtkaXJwcm9nIC1tJGRpZmZlcmVudF9tb2RlIC1wIC0tICIkdG1wZGlyIiAmJiB7CisJCSAgICAgbHNfbGRfdG1wZGlyXzE9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgICAgdGVzdCAiJGxzX2xkX3RtcGRpciIgPSAiJGxzX2xkX3RtcGRpcl8xIgorCQkgICB9CisJCSB9CisJICAgICAgdGhlbiBwb3NpeF9ta2Rpcj06CisJICAgICAgZmkKKwkgICAgICBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIKKwkgICAgZWxzZQorCSAgICAgICMgUmVtb3ZlIGFueSBkaXJzIGxlZnQgYmVoaW5kIGJ5IGFuY2llbnQgbWtkaXIgaW1wbGVtZW50YXRpb25zLgorCSAgICAgIHJtZGlyIC4vJG1rZGlyX21vZGUgLi8tcCAuLy0tIDI+L2Rldi9udWxsCisJICAgIGZpCisJICAgIHRyYXAgJycgMDs7CisJZXNhYzs7CisgICAgZXNhYworCisgICAgaWYKKyAgICAgICRwb3NpeF9ta2RpciAmJiAoCisJdW1hc2sgJG1rZGlyX3VtYXNrICYmCisJJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIgorICAgICAgKQorICAgIHRoZW4gOgorICAgIGVsc2UKKworICAgICAgIyBUaGUgdW1hc2sgaXMgcmlkaWN1bG91cywgb3IgbWtkaXIgZG9lcyBub3QgY29uZm9ybSB0byBQT1NJWCwKKyAgICAgICMgb3IgaXQgZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiAgQ3JlYXRlIHRoZQorICAgICAgIyBkaXJlY3RvcnkgdGhlIHNsb3cgd2F5LCBzdGVwIGJ5IHN0ZXAsIGNoZWNraW5nIGZvciByYWNlcyBhcyB3ZSBnby4KKworICAgICAgY2FzZSAkZHN0ZGlyIGluCisJLyopIHByZWZpeD0nLyc7OworCS0qKSBwcmVmaXg9Jy4vJzs7CisJKikgIHByZWZpeD0nJzs7CisgICAgICBlc2FjCisKKyAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiCisKKyAgICAgIG9JRlM9JElGUworICAgICAgSUZTPS8KKyAgICAgICRwb3NpeF9nbG9iIHNldCAtZgorICAgICAgc2V0IGZub3JkICRkc3RkaXIKKyAgICAgIHNoaWZ0CisgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YKKyAgICAgIElGUz0kb0lGUworCisgICAgICBwcmVmaXhlcz0KKworICAgICAgZm9yIGQKKyAgICAgIGRvCisJdGVzdCAteiAiJGQiICYmIGNvbnRpbnVlCisKKwlwcmVmaXg9JHByZWZpeCRkCisJaWYgdGVzdCAtZCAiJHByZWZpeCI7IHRoZW4KKwkgIHByZWZpeGVzPQorCWVsc2UKKwkgIGlmICRwb3NpeF9ta2RpcjsgdGhlbgorCSAgICAodW1hc2s9JG1rZGlyX3VtYXNrICYmCisJICAgICAkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhaworCSAgICAjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJICAgIHRlc3QgLWQgIiRwcmVmaXgiIHx8IGV4aXQgMQorCSAgZWxzZQorCSAgICBjYXNlICRwcmVmaXggaW4KKwkgICAgICAqXCcqKSBxcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisJICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKKwkgICAgZXNhYworCSAgICBwcmVmaXhlcz0iJHByZWZpeGVzICckcXByZWZpeCciCisJICBmaQorCWZpCisJcHJlZml4PSRwcmVmaXgvCisgICAgICBkb25lCisKKyAgICAgIGlmIHRlc3QgLW4gIiRwcmVmaXhlcyI7IHRoZW4KKwkjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJKHVtYXNrICRta2Rpcl91bWFzayAmJgorCSBldmFsICJcJGRvaXRfZXhlYyBcJG1rZGlycHJvZyAkcHJlZml4ZXMiKSB8fAorCSAgdGVzdCAtZCAiJGRzdGRpciIgfHwgZXhpdCAxCisJb2Jzb2xldGVfbWtkaXJfdXNlZD10cnVlCisgICAgICBmaQorICAgIGZpCisgIGZpCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAiJG9ic29sZXRlX21rZGlyX3VzZWQkY2hvd25jbWQkY2hncnBjbWQiID0gZmFsc2UgfHwKKyAgICAgIHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICRtb2RlICIkZHN0IjsgfSB8fCBleGl0IDEKKyAgZWxzZQorCisgICAgIyBNYWtlIGEgY291cGxlIG9mIHRlbXAgZmlsZSBuYW1lcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeS4KKyAgICBkc3R0bXA9JGRzdGRpci9faW5zdC4kJF8KKyAgICBybXRtcD0kZHN0ZGlyL19ybS4kJF8KKworICAgICMgVHJhcCB0byBjbGVhbiB1cCB0aG9zZSB0ZW1wIGZpbGVzIGF0IGV4aXQuCisgICAgdHJhcCAncmV0PSQ/OyBybSAtZiAiJGRzdHRtcCIgIiRybXRtcCIgJiYgZXhpdCAkcmV0JyAwCisKKyAgICAjIENvcHkgdGhlIGZpbGUgbmFtZSB0byB0aGUgdGVtcCBuYW1lLgorICAgICh1bWFzayAkY3BfdW1hc2sgJiYgJGRvaXRfZXhlYyAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIpICYmCisKKyAgICAjIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMuCisgICAgIworICAgICMgSWYgYW55IG9mIHRoZXNlIGZhaWwsIHdlIGFib3J0IHRoZSB3aG9sZSB0aGluZy4gIElmIHdlIHdhbnQgdG8KKyAgICAjIGlnbm9yZSBlcnJvcnMgZnJvbSBhbnkgb2YgdGhlc2UsIGp1c3QgbWFrZSBzdXJlIG5vdCB0byBpZ25vcmUKKyAgICAjIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQuCisgICAgIworICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3R0bXAiOyB9ICYmCisKKyAgICAjIElmIC1DLCBkb24ndCBib3RoZXIgdG8gY29weSBpZiBpdCB3b3VsZG4ndCBjaGFuZ2UgdGhlIGZpbGUuCisgICAgaWYgJGNvcHlfb25fY2hhbmdlICYmCisgICAgICAgb2xkPWBMQ19BTEw9QyBscyAtZGxMICIkZHN0IgkyPi9kZXYvbnVsbGAgJiYKKyAgICAgICBuZXc9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3R0bXAiCTI+L2Rldi9udWxsYCAmJgorCisgICAgICAgZXZhbCAiJGluaXRpYWxpemVfcG9zaXhfZ2xvYiIgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYgJiYKKyAgICAgICBzZXQgWCAkb2xkICYmIG9sZD06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICBzZXQgWCAkbmV3ICYmIG5ldz06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YgJiYKKworICAgICAgIHRlc3QgIiRvbGQiID0gIiRuZXciICYmCisgICAgICAgJGNtcHByb2cgIiRkc3QiICIkZHN0dG1wIiA+L2Rldi9udWxsIDI+JjEKKyAgICB0aGVuCisgICAgICBybSAtZiAiJGRzdHRtcCIKKyAgICBlbHNlCisgICAgICAjIFJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKyAgICAgICRkb2l0ICRtdmNtZCAtZiAiJGRzdHRtcCIgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisKKyAgICAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKKyAgICAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90CisgICAgICAjIHN1cHBvcnQgLWYuCisgICAgICB7CisJIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorCSMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCisJIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgorCSMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldworCSMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCisJeworCSAgdGVzdCAhIC1mICIkZHN0IiB8fAorCSAgJGRvaXQgJHJtY21kIC1mICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCSAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3QiICIkcm10bXAiIDI+L2Rldi9udWxsICYmCisJICAgIHsgJGRvaXQgJHJtY21kIC1mICIkcm10bXAiIDI+L2Rldi9udWxsOyA6OyB9CisJICB9IHx8CisJICB7IGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0IiA+JjIKKwkgICAgKGV4aXQgMSk7IGV4aXQgMQorCSAgfQorCX0gJiYKKworCSMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKwkkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0IgorICAgICAgfQorICAgIGZpIHx8IGV4aXQgMQorCisgICAgdHJhcCAnJyAwCisgIGZpCitkb25lCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCisjIEVuZDoKZGlmZiAtLWdpdCBhL200L200L3NhbGVuLm00IGIvbTQvbTQvc2FsZW4ubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU4NThkYQotLS0gL2Rldi9udWxsCisrKyBiL200L200L3NhbGVuLm00CkBAIC0wLDAgKzEsMzIgQEAKK2RubCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgKK2RubCB0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcKK2RubCBkbmwgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKK2RubCBkbmwgYGBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsCitkbmwgZG5sIExhd3JlbmNlIEJlcmtlbGV5IExhYm9yYXRvcnkgYW5kIGl0cyBjb250cmlidXRvcnMuJycgTmVpdGhlciB0aGUgbmFtZSBvZgorZG5sIGRubCB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZQorZG5sIGRubCBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKK2RubCBkbmwgd3JpdHRlbiBwZXJtaXNzaW9uLgorZG5sIGRubCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECitkbmwgZG5sIFdBUlJBTlRJRVMsIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitkbmwgZG5sIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCitkbmwgZG5sCitkbmwgZG5sIExCTCBhdXRvY29uZiBtYWNyb3MKK2RubCBkbmwKK2RubAorZG5sCitkbmwgQ2hlY2tzIHRvIHNlZSBpZiB0aGUgc29ja2FkZHIgc3RydWN0IGhhcyB0aGUgNC40IEJTRCBzYV9sZW4gbWVtYmVyCitkbmwgYm9ycm93ZWQgZnJvbSBMQkwgbGlicGNhcAorQUNfREVGVU4oQUNfQ0hFQ0tfU0FfTEVOLCBbCisgICAgICAgIEFDX01TR19DSEVDS0lORyhpZiBzb2NrYWRkciBzdHJ1Y3QgaGFzIHNhX2xlbiBtZW1iZXIpCisgICAgICAgIEFDX0NBQ0hFX1ZBTCgkMSwKKyAgICAgICAgQUNfVFJZX0NPTVBJTEUoWworIyAgICAgICAgICAgICAgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyAgICAgICAgICAgICAgIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD5dLAorICAgICAgICAgICAgICAgIFt1X2ludCBpID0gc2l6ZW9mKCgoc3RydWN0IHNvY2thZGRyICopMCktPnNhX2xlbildLAorICAgICAgICAgICAgICAgICQxPXllcywKKyAgICAgICAgICAgICAgICAkMT1ubykpCisgICAgICAgIEFDX01TR19SRVNVTFQoJCQxKQorICAgICAgICAgICAgICAgIGlmIHRlc3QgJCQxID0geWVzIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1NPQ0tBRERSX1NBX0xFTl0sMSxbRGVmaW5lIGlmIHN0cnVjdCBzb2NrYWRkciBoYXMgdGhlIHNhX2xlbiBtZW1iZXJdKQorICAgICAgICBmaQorXSkKZGlmZiAtLWdpdCBhL200L200L3NvY2thZGRyaW42Lm00IGIvbTQvbTQvc29ja2FkZHJpbjYubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQyNzBmMwotLS0gL2Rldi9udWxsCisrKyBiL200L200L3NvY2thZGRyaW42Lm00CkBAIC0wLDAgKzEsNjAgQEAKK2RubCAqCitkbmwgKiBDb3B5cmlnaHQgKGMpIDIwMDEgIE1vdG95dWtpIEthc2FoYXJhCitkbmwgKgorZG5sICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CitkbmwgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2RubCAqIGFyZSBtZXQ6CitkbmwgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorZG5sICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorZG5sICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKK2RubCAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCitkbmwgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworZG5sICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCitkbmwgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KK2RubCAqIAorZG5sICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKK2RubCAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorZG5sICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitkbmwgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTQkUKK2RubCAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK2RubCAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitkbmwgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK2RubCAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitkbmwgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorZG5sICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorZG5sICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorZG5sICoKKworZG5sICogCitkbmwgKiBDaGVjayBmb3Igc3RydWN0IHNvY2thZGRyX2luNgorZG5sICoKK0FDX0RFRlVOKFtBQ19TVFJVQ1RfU09DS0FERFJfSU42XSwKK1tBQ19DQUNIRV9DSEVDSyhmb3Igc3RydWN0IHNvY2thZGRyX2luNiwgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2luNiwKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dXSwgW1sKK3N0cnVjdCBzb2NrYWRkcl9pbjYgYWRkcmVzczsKK11dKV0sW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9pbjY9eWVzXSxbYWNfY3Zfc3RydWN0X3NvY2thZGRyX2luNj1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfaW42IiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjYsIDEsCitbRGVmaW5lIHRvIDEgaWYgPG5ldGluZXQvaW4uaD4gZGVmaW5lcyBgc3RydWN0IHNvY2thZGRyX2luNiddKQorZmldKQorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQorZG5sICogCitBQ19ERUZVTihbQUNfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VdLAorW0FDX0NBQ0hFX0NIRUNLKGZvciBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSwgYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+XV0sIFtbCitzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyZXNzOworXV0pXSxbYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2U9eWVzXSxbYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2U9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UiID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0UsIDEsCitbRGVmaW5lIHRvIDEgaWYgPG5ldGluZXQvaW4uaD4gZGVmaW5lcyBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnXSkKK2ZpXSkKKwpkaWZmIC0tZ2l0IGEvbTQvbTQvc29ja2ludHR5cGVzLm00IGIvbTQvbTQvc29ja2ludHR5cGVzLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkOTQwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9tNC9zb2NraW50dHlwZXMubTQKQEAgLTAsMCArMSwxNTQgQEAKK2RubCAqCitkbmwgKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDMgIE1vdG95dWtpIEthc2FoYXJhCitkbmwgKgorZG5sICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CitkbmwgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2RubCAqIGFyZSBtZXQ6CitkbmwgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorZG5sICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorZG5sICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKK2RubCAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCitkbmwgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworZG5sICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCitkbmwgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KK2RubCAqIAorZG5sICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKK2RubCAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorZG5sICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitkbmwgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTQkUKK2RubCAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK2RubCAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitkbmwgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK2RubCAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitkbmwgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorZG5sICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorZG5sICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorZG5sICoKKworZG5sICogCitkbmwgKiBDaGVjayBmb3Igc29ja2xlbl90LgorZG5sICogCitBQ19ERUZVTihbQUNfVFlQRV9TT0NLTEVOX1RdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3Igc29ja2xlbl90XSwgYWNfY3ZfdHlwZV9zb2NrbGVuX3QsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dXSwgW1sKK3NvY2tsZW5fdCBzb2NrbGVuOworXV0pXSxbYWNfY3ZfdHlwZV9zb2NrbGVuX3Q9eWVzXSxbYWNfY3ZfdHlwZV9zb2NrbGVuX3Q9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9zb2NrbGVuX3QiICE9IHllczsgdGhlbgorICAgIEFDX0RFRklORShzb2NrbGVuX3QsIGludCwKK1tEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBvciA8c3lzL3NvY2tldC5oPiBkb2VzIG5vdCBkZWZpbmUuXSkKK2ZpXSkKKworZG5sICogCitkbmwgKiBDaGVjayBmb3IgaW5fcG9ydF90LgorZG5sICogCitBQ19ERUZVTihbQUNfVFlQRV9JTl9QT1JUX1RdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgaW5fcG9ydF90XSwgYWNfY3ZfdHlwZV9pbl9wb3J0X3QsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+XV0sIFtbCitpbl9wb3J0X3QgaW5fcG9ydDsKK11dKV0sW2FjX2N2X3R5cGVfaW5fcG9ydF90PXllc10sW2FjX2N2X3R5cGVfaW5fcG9ydF90PW5vXSldKQoraWYgdGVzdCAiJGFjX2N2X3R5cGVfaW5fcG9ydF90IiAhPSB5ZXM7IHRoZW4KKyAgICBhY19jdl9zaW5fcG9ydF9zaXplPXVua25vd24KKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zaW5fcG9ydCkgPT0gc2l6ZW9mKGxvbmcpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zaW5fcG9ydF9zaXplPWxvbmddLFtdLFtdKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNpbl9wb3J0KSA9PSBzaXplb2YoaW50KSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2luX3BvcnRfc2l6ZT1pbnRdLFtdLFtdKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNpbl9wb3J0KSA9PSBzaXplb2Yoc2hvcnQpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zaW5fcG9ydF9zaXplPXNob3J0XSxbXSxbXSkKKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zaW5fcG9ydCkgPT0gc2l6ZW9mKGNoYXIpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zaW5fcG9ydF9zaXplPWNoYXJdLFtdLFtdKQorICAgIGlmIHRlc3QgIiRhY19jdl9zaW5fcG9ydF9zaXplIiA9IHVua25vd247IHRoZW4KKwlBQ19NU0dfRVJST1IoW0ZhaWxlZCB0byBnZXQgc2l6ZSBvZiBzaW5fcG9ydCBpbiBzdHJ1Y3Qgc29ja2FkZHJfaW4uXSkKKyAgICBmaQorICAgIEFDX0RFRklORV9VTlFVT1RFRChpbl9wb3J0X3QsIHVuc2lnbmVkICRhY19jdl9zaW5fcG9ydF9zaXplLAorW0RlZmluZSB0byBgdW5zaWduZWQgY2hhcicsIGB1bnNpZ25lZCBzaG9ydCcsIGB1bnNpZ25lZCBpbnQnIG9yCitgdW5zaWduZWQgbG9uZycgYWNjb3JkaW5nIHdpdGggc2l6ZSBvZiBgc2luX3BvcnQnIGluIGBzdHJ1Y3Qgc29ja2FkZHJfaW4nLAoraWYgPHN5cy90eXBlcy5oPiwgPHN5cy9zb2NrZXQuaD4gb3IgPG5ldGluZXQvaW4uaD4gZG9lcyBub3QgZGVmaW5lCitgaW5fcG9ydF90Jy5dKQorZmldKQorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBzYV9mYW1pbHlfdC4KK2RubCAqIAorQUNfREVGVU4oW0FDX1RZUEVfU0FfRkFNSUxZX1RdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3Igc2FfZmFtaWx5X3RdLCBhY19jdl90eXBlX3NhX2ZhbWlseV90LAorW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+XV0sIFtbCitzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CitdXSldLFthY19jdl90eXBlX3NhX2ZhbWlseV90PXllc10sW2FjX2N2X3R5cGVfc2FfZmFtaWx5X3Q9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9zYV9mYW1pbHlfdCIgIT0geWVzOyB0aGVuCisgICAgYWNfY3Zfc2FfZmFtaWx5X3NpemU9dW5rbm93bgorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zYV9mYW1pbHkpID09IHNpemVvZihsb25nKSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2FfZmFtaWx5X3NpemU9bG9uZ10sW10sW10pCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHIgYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNhX2ZhbWlseSkgPT0gc2l6ZW9mKGludCkpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3NhX2ZhbWlseV9zaXplPWludF0sW10sW10pCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICBpbnQgbWFpbigpIHsKKwlzdHJ1Y3Qgc29ja2FkZHIgYWRkcjsKKwlyZXR1cm4gKHNpemVvZihhZGRyLnNhX2ZhbWlseSkgPT0gc2l6ZW9mKHNob3J0KSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2FfZmFtaWx5X3NpemU9c2hvcnRdLFtdLFtdKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zYV9mYW1pbHkpID09IHNpemVvZihjaGFyKSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2FfZmFtaWx5X3NpemU9Y2hhcl0sW10sW10pCisgICAgaWYgdGVzdCAiJGFjX2N2X3NhX2ZhbWlseV9zaXplIiA9IHVua25vd247IHRoZW4KKwlBQ19NU0dfRVJST1IoW0ZhaWxlZCB0byBnZXQgc2l6ZSBvZiBzYV9mYW1pbHkgaW4gc3RydWN0IHNvY2thZGRyLl0pCisgICAgZmkKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoc2FfZmFtaWx5X3QsIHVuc2lnbmVkICRhY19jdl9zYV9mYW1pbHlfc2l6ZSwKK1tEZWZpbmUgdG8gYHVuc2lnbmVkIGNoYXInLCBgdW5zaWduZWQgc2hvcnQnLCBgdW5zaWduZWQgaW50JyBvcgorYHVuc2lnbmVkIGxvbmcnIGFjY29yZGluZyB3aXRoIHNpemUgb2YgYHNhX2ZhbWlseScgaW4gYHN0cnVjdCBzb2NrYWRkcicsCitpZiA8c3lzL3R5cGVzLmg+IG9yIDxzeXMvc29ja2V0Lmg+IGRvZXMgbm90IGRlZmluZSBgc2FfZmFtaWx5X3QnLl0pCitmaV0pCmRpZmYgLS1naXQgYS9taXNzaW5nIGIvbWlzc2luZwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYzU0YzY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWlzc2luZwpAQCAtMCwwICsxLDMzNiBAQAorIyEgL2Jpbi9zaAorIyBDb21tb24gc3R1YiBmb3IgYSBmZXcgbWlzc2luZyBHTlUgcHJvZ3JhbXMgd2hpbGUgaW5zdGFsbGluZy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBPcmlnaW5hbGx5IGJ5IEZyYW4sY29pcyBQaW5hcmQgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPiwgMTk5Ni4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjIDAyMTExLTEzMDcsIFVTQS4KKworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKK2lmIHRlc3QgJCMgLWVxIDA7IHRoZW4KKyAgZWNobyAxPiYyICJUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgorICBleGl0IDEKK2ZpCisKK3J1bj06CisKKyMgSW4gdGhlIGNhc2VzIHdoZXJlIHRoaXMgbWF0dGVycywgYG1pc3NpbmcnIGlzIGJlaW5nIHJ1biBpbiB0aGUKKyMgc3JjZGlyIGFscmVhZHkuCitpZiB0ZXN0IC1mIGNvbmZpZ3VyZS5hYzsgdGhlbgorICBjb25maWd1cmVfYWM9Y29uZmlndXJlLmFjCitlbHNlCisgIGNvbmZpZ3VyZV9hYz1jb25maWd1cmUuaW4KK2ZpCisKK2Nhc2UgIiQxIiBpbgorLS1ydW4pCisgICMgVHJ5IHRvIHJ1biByZXF1ZXN0ZWQgcHJvZ3JhbSwgYW5kIGp1c3QgZXhpdCBpZiBpdCBzdWNjZWVkcy4KKyAgcnVuPQorICBzaGlmdAorICAiJEAiICYmIGV4aXQgMAorICA7OworZXNhYworCisjIElmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBmYWlscyB0byBydW4gKHBvc3NpYmx5IGFuIG91dGRhdGVkIHZlcnNpb24pLAorIyB0cnkgdG8gZW11bGF0ZSBpdC4KK2Nhc2UgIiQxIiBpbgorCisgIC1ofC0taHwtLWhlfC0taGVsfC0taGVscCkKKyAgICBlY2hvICJcCiskMCBbT1BUSU9OXS4uLiBQUk9HUkFNIFtBUkdVTUVOVF0uLi4KKworSGFuZGxlIFxgUFJPR1JBTSBbQVJHVU1FTlRdLi4uJyBmb3Igd2hlbiBQUk9HUkFNIGlzIG1pc3NpbmcsIG9yIHJldHVybiBhbgorZXJyb3Igc3RhdHVzIGlmIHRoZXJlIGlzIG5vIGtub3duIGhhbmRsaW5nIGZvciBQUk9HUkFNLgorCitPcHRpb25zOgorICAtaCwgLS1oZWxwICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC0tcnVuICAgICAgICAgICB0cnkgdG8gcnVuIHRoZSBnaXZlbiBjb21tYW5kLCBhbmQgZW11bGF0ZSBpdCBpZiBpdCBmYWlscworCitTdXBwb3J0ZWQgUFJPR1JBTSB2YWx1ZXM6CisgIGFjbG9jYWwgICAgICB0b3VjaCBmaWxlIFxgYWNsb2NhbC5tNCcKKyAgYXV0b2NvbmYgICAgIHRvdWNoIGZpbGUgXGBjb25maWd1cmUnCisgIGF1dG9oZWFkZXIgICB0b3VjaCBmaWxlIFxgY29uZmlnLmguaW4nCisgIGF1dG9tYWtlICAgICB0b3VjaCBhbGwgXGBNYWtlZmlsZS5pbicgZmlsZXMKKyAgYmlzb24gICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQorICBmbGV4ICAgICAgICAgY3JlYXRlIFxgbGV4Lnl5LmMnLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuYworICBoZWxwMm1hbiAgICAgdG91Y2ggdGhlIG91dHB1dCBmaWxlCisgIGxleCAgICAgICAgICBjcmVhdGUgXGBsZXgueXkuYycsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5jCisgIG1ha2VpbmZvICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUKKyAgdGFyICAgICAgICAgIHRyeSB0YXIsIGdudXRhciwgZ3RhciwgdGhlbiB0YXIgd2l0aG91dCBub24tcG9ydGFibGUgZmxhZ3MKKyAgeWFjYyAgICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXSIKKyAgICA7OworCisgIC12fC0tdnwtLXZlfC0tdmVyfC0tdmVyc3wtLXZlcnNpfC0tdmVyc2lvfC0tdmVyc2lvbikKKyAgICBlY2hvICJtaXNzaW5nIDAuNCAtIEdOVSBhdXRvbWFrZSIKKyAgICA7OworCisgIC0qKQorICAgIGVjaG8gMT4mMiAiJDA6IFVua25vd24gXGAkMScgb3B0aW9uIgorICAgIGVjaG8gMT4mMiAiVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKKyAgICBleGl0IDEKKyAgICA7OworCisgIGFjbG9jYWwqKQorICAgIGlmIHRlc3QgLXogIiRydW4iICYmICgkMSAtLXZlcnNpb24pID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAjIFdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuCisgICAgICAgZXhpdCAxCisgICAgZmkKKworICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgbWlzc2luZyBvbiB5b3VyIHN5c3RlbS4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGBhY2luY2x1ZGUubTQnIG9yIFxgJHtjb25maWd1cmVfYWN9Jy4gIFlvdSBtaWdodCB3YW50CisgICAgICAgICB0byBpbnN0YWxsIHRoZSBcYEF1dG9tYWtlJyBhbmQgXGBQZXJsJyBwYWNrYWdlcy4gIEdyYWIgdGhlbSBmcm9tCisgICAgICAgICBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgdG91Y2ggYWNsb2NhbC5tNAorICAgIDs7CisKKyAgYXV0b2NvbmYpCisgICAgaWYgdGVzdCAteiAiJHJ1biIgJiYgKCQxIC0tdmVyc2lvbikgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICMgV2UgaGF2ZSBpdCwgYnV0IGl0IGZhaWxlZC4KKyAgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyBtaXNzaW5nIG9uIHlvdXIgc3lzdGVtLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZQorICAgICAgICAgXGBBdXRvY29uZicgYW5kIFxgR05VIG00JyBwYWNrYWdlcy4gIEdyYWIgdGhlbSBmcm9tIGFueSBHTlUKKyAgICAgICAgIGFyY2hpdmUgc2l0ZS4iCisgICAgdG91Y2ggY29uZmlndXJlCisgICAgOzsKKworICBhdXRvaGVhZGVyKQorICAgIGlmIHRlc3QgLXogIiRydW4iICYmICgkMSAtLXZlcnNpb24pID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAjIFdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuCisgICAgICAgZXhpdCAxCisgICAgZmkKKworICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgbWlzc2luZyBvbiB5b3VyIHN5c3RlbS4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGBhY2NvbmZpZy5oJyBvciBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudAorICAgICAgICAgdG8gaW5zdGFsbCB0aGUgXGBBdXRvY29uZicgYW5kIFxgR05VIG00JyBwYWNrYWdlcy4gIEdyYWIgdGhlbQorICAgICAgICAgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgZmlsZXM9YHNlZCAtbiAncy9eWyBdKkFbQ01dX0NPTkZJR19IRUFERVIoXChbXildKlwpKS4qL1wxL3AnICR7Y29uZmlndXJlX2FjfWAKKyAgICB0ZXN0IC16ICIkZmlsZXMiICYmIGZpbGVzPSJjb25maWcuaCIKKyAgICB0b3VjaF9maWxlcz0KKyAgICBmb3IgZiBpbiAkZmlsZXM7IGRvCisgICAgICBjYXNlICIkZiIgaW4KKyAgICAgICo6KikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAiYGVjaG8gIiRmIiB8CisJCQkJICAgICAgIHNlZCAtZSAncy9eW146XSo6Ly8nIC1lICdzLzouKi8vJ2A7OworICAgICAgKikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAkZi5pbiI7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICB0b3VjaCAkdG91Y2hfZmlsZXMKKyAgICA7OworCisgIGF1dG9tYWtlKikKKyAgICBpZiB0ZXN0IC16ICIkcnVuIiAmJiAoJDEgLS12ZXJzaW9uKSA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgIyBXZSBoYXZlIGl0LCBidXQgaXQgZmFpbGVkLgorICAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG1pc3Npbmcgb24geW91ciBzeXN0ZW0uICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIFxgTWFrZWZpbGUuYW0nLCBcYGFjaW5jbHVkZS5tNCcgb3IgXGAke2NvbmZpZ3VyZV9hY30nLgorICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUgXGBBdXRvbWFrZScgYW5kIFxgUGVybCcgcGFja2FnZXMuCisgICAgICAgICBHcmFiIHRoZW0gZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgZmluZCAuIC10eXBlIGYgLW5hbWUgTWFrZWZpbGUuYW0gLXByaW50IHwKKwkgICBzZWQgJ3MvXC5hbSQvLmluLycgfAorCSAgIHdoaWxlIHJlYWQgZjsgZG8gdG91Y2ggIiRmIjsgZG9uZQorICAgIDs7CisKKyAgYXV0b200dGUpCisgICAgaWYgdGVzdCAteiAiJHJ1biIgJiYgKCQxIC0tdmVyc2lvbikgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICMgV2UgaGF2ZSBpdCwgYnV0IGl0IGZhaWxlZC4KKyAgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGFuZCB5b3UgZG8gbm90IHNlZW0gdG8gaGF2ZSBpdCBoYW5keSBvbiB5b3VyCisgICAgICAgICBzeXN0ZW0uICBZb3UgbWlnaHQgaGF2ZSBtb2RpZmllZCBzb21lIGZpbGVzIHdpdGhvdXQgaGF2aW5nIHRoZQorICAgICAgICAgcHJvcGVyIHRvb2xzIGZvciBmdXJ0aGVyIGhhbmRsaW5nIHRoZW0uCisgICAgICAgICBZb3UgY2FuIGdldCBcYCQxJyBhcyBwYXJ0IG9mIFxgQXV0b2NvbmYnIGZyb20gYW55IEdOVQorICAgICAgICAgYXJjaGl2ZSBzaXRlLiIKKworICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi0tb3V0cHV0WyA9XSpcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLW9bIF0qXChbXiBdKlwpLiovXDEvcCdgCisgICAgaWYgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCisJdG91Y2ggJGZpbGUKKyAgICBlbHNlCisJdGVzdCAteiAiJGZpbGUiIHx8IGV4ZWMgPiRmaWxlCisJZWNobyAiIyEgL2Jpbi9zaCIKKwllY2hvICIjIENyZWF0ZWQgYnkgR05VIEF1dG9tYWtlIG1pc3NpbmcgYXMgYSByZXBsYWNlbWVudCBvZiIKKwllY2hvICIjICAkICRAIgorCWVjaG8gImV4aXQgMCIKKwljaG1vZCAreCAkZmlsZQorCWV4aXQgMQorICAgIGZpCisgICAgOzsKKworICBiaXNvbnx5YWNjKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgbWlzc2luZyBvbiB5b3VyIHN5c3RlbS4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgYSBcYC55JyBmaWxlLiAgWW91IG1heSBuZWVkIHRoZSBcYEJpc29uJyBwYWNrYWdlCisgICAgICAgICBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlIGVmZmVjdC4gIFlvdSBjYW4gZ2V0CisgICAgICAgICBcYEJpc29uJyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKyAgICBybSAtZiB5LnRhYi5jIHkudGFiLmgKKyAgICBpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgICAgICAgZXZhbCBMQVNUQVJHPSJcJHskI30iCisJY2FzZSAiJExBU1RBUkciIGluCisJKi55KQorCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MveSQvYy8nYAorCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICAgICAgIGNwICIkU1JDRklMRSIgeS50YWIuYworCSAgICBmaQorCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MveSQvaC8nYAorCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICAgICAgIGNwICIkU1JDRklMRSIgeS50YWIuaAorCSAgICBmaQorCSAgOzsKKwllc2FjCisgICAgZmkKKyAgICBpZiBbICEgLWYgeS50YWIuaCBdOyB0aGVuCisJZWNobyA+eS50YWIuaAorICAgIGZpCisgICAgaWYgWyAhIC1mIHkudGFiLmMgXTsgdGhlbgorCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+eS50YWIuYworICAgIGZpCisgICAgOzsKKworICBsZXh8ZmxleCkKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG1pc3Npbmcgb24geW91ciBzeXN0ZW0uICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAubCcgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBGbGV4JyBwYWNrYWdlCisgICAgICAgICBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlIGVmZmVjdC4gIFlvdSBjYW4gZ2V0CisgICAgICAgICBcYEZsZXgnIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIHJtIC1mIGxleC55eS5jCisgICAgaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICAgICAgIGV2YWwgTEFTVEFSRz0iXCR7JCN9IgorCWNhc2UgIiRMQVNUQVJHIiBpbgorCSoubCkKKwkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL2wkL2MvJ2AKKwkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIGxleC55eS5jCisJICAgIGZpCisJICA7OworCWVzYWMKKyAgICBmaQorICAgIGlmIFsgISAtZiBsZXgueXkuYyBdOyB0aGVuCisJZWNobyAnbWFpbigpIHsgcmV0dXJuIDA7IH0nID5sZXgueXkuYworICAgIGZpCisgICAgOzsKKworICBoZWxwMm1hbikKKyAgICBpZiB0ZXN0IC16ICIkcnVuIiAmJiAoJDEgLS12ZXJzaW9uKSA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgIyBXZSBoYXZlIGl0LCBidXQgaXQgZmFpbGVkLgorICAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG1pc3Npbmcgb24geW91ciBzeXN0ZW0uICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorCSB5b3UgbW9kaWZpZWQgYSBkZXBlbmRlbmN5IG9mIGEgbWFudWFsIHBhZ2UuICBZb3UgbWF5IG5lZWQgdGhlCisJIFxgSGVscDJtYW4nIHBhY2thZ2UgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZQorCSBlZmZlY3QuICBZb3UgY2FuIGdldCBcYEhlbHAybWFuJyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKworICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vIFwoW14gXSpcKS4qL1wxL3AnYAorICAgIGlmIHRlc3QgLXogIiRmaWxlIjsgdGhlbgorCWZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi0tb3V0cHV0PVwoW14gXSpcKS4qL1wxL3AnYAorICAgIGZpCisgICAgaWYgWyAtZiAiJGZpbGUiIF07IHRoZW4KKwl0b3VjaCAkZmlsZQorICAgIGVsc2UKKwl0ZXN0IC16ICIkZmlsZSIgfHwgZXhlYyA+JGZpbGUKKwllY2hvICIuYWIgaGVscDJtYW4gaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWdlIgorCWV4aXQgMQorICAgIGZpCisgICAgOzsKKworICBtYWtlaW5mbykKKyAgICBpZiB0ZXN0IC16ICIkcnVuIiAmJiAobWFrZWluZm8gLS12ZXJzaW9uKSA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgIyBXZSBoYXZlIG1ha2VpbmZvLCBidXQgaXQgZmFpbGVkLgorICAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG1pc3Npbmcgb24geW91ciBzeXN0ZW0uICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAudGV4aScgb3IgXGAudGV4aW5mbycgZmlsZSwgb3IgYW55IG90aGVyIGZpbGUKKyAgICAgICAgIGluZGlyZWN0bHkgYWZmZWN0aW5nIHRoZSBhc3BlY3Qgb2YgdGhlIG1hbnVhbC4gIFRoZSBzcHVyaW91cworICAgICAgICAgY2FsbCBtaWdodCBhbHNvIGJlIHRoZSBjb25zZXF1ZW5jZSBvZiB1c2luZyBhIGJ1Z2d5IFxgbWFrZScgKEFJWCwKKyAgICAgICAgIERVLCBJUklYKS4gIFlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwgdGhlIFxgVGV4aW5mbycgcGFja2FnZSBvcgorICAgICAgICAgdGhlIFxgR05VIG1ha2UnIHBhY2thZ2UuICBHcmFiIGVpdGhlciBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotbyBcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBpZiB0ZXN0IC16ICIkZmlsZSI7IHRoZW4KKyAgICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAncy8uKiBcKFteIF0qXCkgKiQvXDEvJ2AKKyAgICAgIGZpbGU9YHNlZCAtbiAnL15Ac2V0ZmlsZW5hbWUvIHsgcy8uKiBcKFteIF0qXCkgKiQvXDEvOyBwOyBxOyB9JyAkZmlsZWAKKyAgICBmaQorICAgIHRvdWNoICRmaWxlCisgICAgOzsKKworICB0YXIpCisgICAgc2hpZnQKKyAgICBpZiB0ZXN0IC1uICIkcnVuIjsgdGhlbgorICAgICAgZWNobyAxPiYyICJFUlJPUjogXGB0YXInIHJlcXVpcmVzIC0tcnVuIgorICAgICAgZXhpdCAxCisgICAgZmkKKworICAgICMgV2UgaGF2ZSBhbHJlYWR5IHRyaWVkIHRhciBpbiB0aGUgZ2VuZXJpYyBwYXJ0LgorICAgICMgTG9vayBmb3IgZ251dGFyL2d0YXIgYmVmb3JlIGludm9jYXRpb24gdG8gYXZvaWQgdWdseSBlcnJvcgorICAgICMgbWVzc2FnZXMuCisgICAgaWYgKGdudXRhciAtLXZlcnNpb24gPiAvZGV2L251bGwgMj4mMSk7IHRoZW4KKyAgICAgICBnbnV0YXIgIiRAIiAmJiBleGl0IDAKKyAgICBmaQorICAgIGlmIChndGFyIC0tdmVyc2lvbiA+IC9kZXYvbnVsbCAyPiYxKTsgdGhlbgorICAgICAgIGd0YXIgIiRAIiAmJiBleGl0IDAKKyAgICBmaQorICAgIGZpcnN0YXJnPSIkMSIKKyAgICBpZiBzaGlmdDsgdGhlbgorCWNhc2UgIiRmaXJzdGFyZyIgaW4KKwkqbyopCisJICAgIGZpcnN0YXJnPWBlY2hvICIkZmlyc3RhcmciIHwgc2VkIHMvby8vYAorCSAgICB0YXIgIiRmaXJzdGFyZyIgIiRAIiAmJiBleGl0IDAKKwkgICAgOzsKKwllc2FjCisJY2FzZSAiJGZpcnN0YXJnIiBpbgorCSpoKikKKwkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9oLy9gCisJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMAorCSAgICA7OworCWVzYWMKKyAgICBmaQorCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBJIGNhbid0IHNlZW0gdG8gYmUgYWJsZSB0byBydW4gXGB0YXInIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4KKyAgICAgICAgIFlvdSBtYXkgd2FudCB0byBpbnN0YWxsIEdOVSB0YXIgb3IgRnJlZSBwYXh1dGlscywgb3IgY2hlY2sgdGhlCisgICAgICAgICBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiIKKyAgICBleGl0IDEKKyAgICA7OworCisgICopCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGFuZCB5b3UgZG8gbm90IHNlZW0gdG8gaGF2ZSBpdCBoYW5keSBvbiB5b3VyCisgICAgICAgICBzeXN0ZW0uICBZb3UgbWlnaHQgaGF2ZSBtb2RpZmllZCBzb21lIGZpbGVzIHdpdGhvdXQgaGF2aW5nIHRoZQorICAgICAgICAgcHJvcGVyIHRvb2xzIGZvciBmdXJ0aGVyIGhhbmRsaW5nIHRoZW0uICBDaGVjayB0aGUgXGBSRUFETUUnIGZpbGUsCisgICAgICAgICBpdCBvZnRlbiB0ZWxscyB5b3UgYWJvdXQgdGhlIG5lZWRlZCBwcmVyZXF1aXNpdGVzIGZvciBpbnN0YWxsaW5nCisgICAgICAgICB0aGlzIHBhY2thZ2UuICBZb3UgbWF5IGFsc28gcGVlayBhdCBhbnkgR05VIGFyY2hpdmUgc2l0ZSwgaW4gY2FzZQorICAgICAgICAgc29tZSBvdGhlciBwYWNrYWdlIHdvdWxkIGNvbnRhaW4gdGhpcyBtaXNzaW5nIFxgJDEnIHByb2dyYW0uIgorICAgIGV4aXQgMQorICAgIDs7Citlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvbWtpbnN0YWxsZGlycyBiL21raW5zdGFsbGRpcnMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDJkNWYyMQotLS0gL2Rldi9udWxsCisrKyBiL21raW5zdGFsbGRpcnMKQEAgLTAsMCArMSwxMTEgQEAKKyMhIC9iaW4vc2gKKyMgbWtpbnN0YWxsZGlycyAtLS0gbWFrZSBkaXJlY3RvcnkgaGllcmFyY2h5CisjIEF1dGhvcjogTm9haCBGcmllZG1hbiA8ZnJpZWRtYW5AcHJlcC5haS5taXQuZWR1PgorIyBDcmVhdGVkOiAxOTkzLTA1LTE2CisjIFB1YmxpYyBkb21haW4KKworZXJyc3RhdHVzPTAKK2Rpcm1vZGU9IiIKKwordXNhZ2U9IlwKK1VzYWdlOiBta2luc3RhbGxkaXJzIFstaF0gWy0taGVscF0gWy1tIG1vZGVdIGRpciAuLi4iCisKKyMgcHJvY2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzCit3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC1oIHwgLS1oZWxwIHwgLS1oKikgICAgICAgICAjIC1oIGZvciBoZWxwCisgICAgICBlY2hvICIkdXNhZ2UiIDE+JjIKKyAgICAgIGV4aXQgMAorICAgICAgOzsKKyAgICAtbSkgICAgICAgICAgICAgICAgICAgICAgICAgIyAtbSBQRVJNIGFyZworICAgICAgc2hpZnQKKyAgICAgIHRlc3QgJCMgLWVxIDAgJiYgeyBlY2hvICIkdXNhZ2UiIDE+JjI7IGV4aXQgMTsgfQorICAgICAgZGlybW9kZT0kMQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgLS0pICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgc2hpZnQKKyAgICAgIGJyZWFrCisgICAgICA7OworICAgIC0qKSAgICAgICAgICAgICAgICAgICAgICAgICAjIHVua25vd24gb3B0aW9uCisgICAgICBlY2hvICIkdXNhZ2UiIDE+JjIKKyAgICAgIGV4aXQgMQorICAgICAgOzsKKyAgICAqKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCBub24tb3B0IGFyZworICAgICAgYnJlYWsKKyAgICAgIDs7CisgIGVzYWMKK2RvbmUKKworZm9yIGZpbGUKK2RvCisgIGlmIHRlc3QgLWQgIiRmaWxlIjsgdGhlbgorICAgIHNoaWZ0CisgIGVsc2UKKyAgICBicmVhaworICBmaQorZG9uZQorCitjYXNlICQjIGluCisgIDApIGV4aXQgMCA7OworZXNhYworCitjYXNlICRkaXJtb2RlIGluCisgICcnKQorICAgIGlmIG1rZGlyIC1wIC0tIC4gMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIGVjaG8gIm1rZGlyIC1wIC0tICQqIgorICAgICAgZXhlYyBta2RpciAtcCAtLSAiJEAiCisgICAgZmkKKyAgICA7OworICAqKQorICAgIGlmIG1rZGlyIC1tICIkZGlybW9kZSIgLXAgLS0gLiAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgZWNobyAibWtkaXIgLW0gJGRpcm1vZGUgLXAgLS0gJCoiCisgICAgICBleGVjIG1rZGlyIC1tICIkZGlybW9kZSIgLXAgLS0gIiRAIgorICAgIGZpCisgICAgOzsKK2VzYWMKKworZm9yIGZpbGUKK2RvCisgIHNldCBmbm9yZCBgZWNobyAiOiRmaWxlIiB8IHNlZCAtbmUgJ3MvXjpcLy8jLztzL146Ly87cy9cLy8gL2c7cy9eIy9cLy87cCdgCisgIHNoaWZ0CisKKyAgcGF0aGNvbXA9CisgIGZvciBkCisgIGRvCisgICAgcGF0aGNvbXA9IiRwYXRoY29tcCRkIgorICAgIGNhc2UgJHBhdGhjb21wIGluCisgICAgICAtKikgcGF0aGNvbXA9Li8kcGF0aGNvbXAgOzsKKyAgICBlc2FjCisKKyAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KKyAgICAgIGVjaG8gIm1rZGlyICRwYXRoY29tcCIKKworICAgICAgbWtkaXIgIiRwYXRoY29tcCIgfHwgbGFzdGVycj0kPworCisgICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KKyAgCWVycnN0YXR1cz0kbGFzdGVycgorICAgICAgZWxzZQorICAJaWYgdGVzdCAhIC16ICIkZGlybW9kZSI7IHRoZW4KKwkgIGVjaG8gImNobW9kICRkaXJtb2RlICRwYXRoY29tcCIKKyAgICAJICBsYXN0ZXJyPSIiCisgIAkgIGNobW9kICIkZGlybW9kZSIgIiRwYXRoY29tcCIgfHwgbGFzdGVycj0kPworCisgIAkgIGlmIHRlc3QgISAteiAiJGxhc3RlcnIiOyB0aGVuCisgIAkgICAgZXJyc3RhdHVzPSRsYXN0ZXJyCisgIAkgIGZpCisgIAlmaQorICAgICAgZmkKKyAgICBmaQorCisgICAgcGF0aGNvbXA9IiRwYXRoY29tcC8iCisgIGRvbmUKK2RvbmUKKworZXhpdCAkZXJyc3RhdHVzCisKKyMgTG9jYWwgVmFyaWFibGVzOgorIyBtb2RlOiBzaGVsbC1zY3JpcHQKKyMgc2gtaW5kZW50YXRpb246IDIKKyMgRW5kOgorIyBta2luc3RhbGxkaXJzIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvbmV0Y3B1X3Byb2NzdGF0LmMgYi9uZXRjcHVfcHJvY3N0YXQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkYWRlYS4uMDAwMDAwMAotLS0gYS9uZXRjcHVfcHJvY3N0YXQuYworKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi1jaGFyICAgbmV0Y3B1X3Byb2NzdGF0X2lkW109IlwKLUAoIyluZXRjcHVfcHJvY3N0YXQuYyAoYykgQ29weXJpZ2h0IDIwMDUtMjAwNyBWZXJzaW9uIDIuNC4zIjsKLQotLyogbmV0Y3B1X3Byb2NzdGF0LmMKLSAgCi0gICBJbXBsZW1lbnQgdGhlIC9wcm9jL3N0YXQgc3BlY2lmaWMgcG9ydGlvbnMgb2YgbmV0cGVyZiBDUFUKLSAgIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cy4gVGhlc2UgYXJlIGJyb2tlbi1vdXQgaW50byBhIHNlcGFyYXRlIGZpbGUKLSAgIHRvIG1ha2UgbGlmZSBtdWNoIG5pY2VyIG92ZXIgaW4gbmV0bGliLmMgd2hpY2ggaGFkIGJlY29tZSBhIG1hemUgb2YKLSAgIHR3aXN0eSwgQ1BVLXV0aWwtcmVsYXRlZCwgI2lmZGVmcywgYWxsIGRpZmZlcmVudC4gIHJhaiAyMDA1LTAxLTI2Ci0gICAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaWZkZWYgSEFWRV9GQ05UTF9ICi0jIGluY2x1ZGUgPGZjbnRsLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1VOSVNURF9ICi0jIGluY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0jaWYgU1REQ19IRUFERVJTCi0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbHNlCi0jIGlmIEhBVkVfU1RETElCX0gKLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotIyBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgIm5ldHNoLmgiCi0jaW5jbHVkZSAibmV0bGliLmgiCi0KLS8qIHRoZSBsaWJfc3RhcnRfY291bnQgYW5kIGxpYl9lbmRfY291bnQgYXJyYXlzIGhvbGQgdGhlIHN0YXJ0aW5nCi0gICBhbmQgZW5kaW5nIHZhbHVlcyBvZiB3aGF0ZXZlciBpcyBjb3VudGluZyB3aGVuIHRoZSBzeXN0ZW0gaXMKLSAgIGlkbGUuIFRoZSByYXRlIGF0IHdoaWNoIHRoaXMgaW5jcmVtZW50cyBkdXJpbmcgYSB0ZXN0IGlzIGNvbXBhcmVkCi0gICB3aXRoIGEgcHJldmlvdXMgY2FsaWJyYXJpb24gdG8gYXJyaXZlIGF0IGEgQ1BVIHV0aWxpemF0aW9uCi0gICBwZXJjZW50YWdlLiByYWogMjAwNS0wMS0yNiAqLwotc3RhdGljIHVpbnQ2NF90ICBsaWJfc3RhcnRfY291bnRbTUFYQ1BVU107Ci1zdGF0aWMgdWludDY0X3QgIGxpYl9lbmRfY291bnRbTUFYQ1BVU107Ci0KLQotLyogVGhlIG1heC4gbGVuZ3RoIG9mIG9uZSBsaW5lIG9mIC9wcm9jL3N0YXQgY3B1IG91dHB1dCAqLwotI2RlZmluZSBDUFVfTElORV9MRU5HVEggKCg4ICogc2l6ZW9mIChsb25nKSAvIDMgKyAxKSAqIDQgKyA4KQotI2RlZmluZSBQUk9DX1NUQVRfRklMRV9OQU1FICIvcHJvYy9zdGF0IgotI2RlZmluZSBOX0NQVV9MSU5FUyhucikgKG5yID09IDEgPyAxIDogMSArIG5yKQotCi1zdGF0aWMgaW50IHByb2Nfc3RhdF9mZCA9IC0xOwotc3RhdGljIGNoYXIgKnByb2Nfc3RhdF9idWYgPSBOVUxMOwotc3RhdGljIGludCBwcm9jX3N0YXRfYnVmbGVuID0gMDsKLQotdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKLXsKLQotICBpZiAoZGVidWcpIHsKLSAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiY3B1X3V0aWxfaW5pdCBlbnRlciwgcHJvY19zdGF0X2ZkICVkIHByb2Nfc3RhdF9idWYgJXBcbiIsCi0JICAgIHByb2Nfc3RhdF9mZCwKLQkgICAgcHJvY19zdGF0X2J1Zik7Ci0gICAgZmZsdXNoKHdoZXJlKTsKLSAgfQotICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgewotICAgIHByb2Nfc3RhdF9mZCA9IG9wZW4gKFBST0NfU1RBVF9GSUxFX05BTUUsIE9fUkRPTkxZLCBOVUxMKTsKLSAgICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXMhXG4iLCBQUk9DX1NUQVRfRklMRV9OQU1FKTsKLSAgICAgIGV4aXQgKDEpOwotICAgIH07Ci0gIH07Ci0KLSAgaWYgKCFwcm9jX3N0YXRfYnVmKSB7Ci0gICAgcHJvY19zdGF0X2J1ZmxlbiA9IE5fQ1BVX0xJTkVTIChsaWJfbnVtX2xvY19jcHVzKSAqIENQVV9MSU5FX0xFTkdUSDsKLSAgICBpZiAoZGVidWcpIHsKLSAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgImxpYl9udW1fbG9jX2NwdXMgJWQgbGluZXMgJWQgQ1BVX0xJTkVfTEVOR1RIICVkIHByb2Nfc3RhdF9idWZsZW4gJWRcbiIsCi0JICAgICAgbGliX251bV9sb2NfY3B1cywKLQkgICAgICBOX0NQVV9MSU5FUyhsaWJfbnVtX2xvY19jcHVzKSwKLQkgICAgICBDUFVfTElORV9MRU5HVEgsCi0JICAgICAgcHJvY19zdGF0X2J1Zmxlbik7Ci0gICAgICBmZmx1c2god2hlcmUpOwotICAgIH0KLSAgICBwcm9jX3N0YXRfYnVmID0gKGNoYXIgKiltYWxsb2MgKHByb2Nfc3RhdF9idWZsZW4pOwotICAgIGlmICghcHJvY19zdGF0X2J1ZikgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQ2Fubm90IGFsbG9jYXRlIGJ1ZmZlciBtZW1vcnkhXG4iKTsKLSAgICAgIGV4aXQgKDEpOwotICAgIH0KLSAgfQotICByZXR1cm47Ci19Ci0KLXZvaWQKLWNwdV91dGlsX3Rlcm1pbmF0ZSh2b2lkKQotewotICBjbG9zZShwcm9jX3N0YXRfZmQpOwotICBwcm9jX3N0YXRfZmQgPSAtMTsKLSAgZnJlZShwcm9jX3N0YXRfYnVmKTsKLSAgcHJvY19zdGF0X2J1ZiA9IE5VTEw7Ci0gIHJldHVybjsKLX0KLQotaW50Ci1nZXRfY3B1X21ldGhvZCgpCi17Ci0gIHJldHVybiBQUk9DX1NUQVQ7Ci19Ci0KLWZsb2F0Ci1jYWxpYnJhdGVfaWRsZV9yYXRlIChpbnQgaXRlcmF0aW9ucywgaW50IGludGVydmFsKQotewotICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgewotICAgIHByb2Nfc3RhdF9mZCA9IG9wZW4gKFBST0NfU1RBVF9GSUxFX05BTUUsIE9fUkRPTkxZLCBOVUxMKTsKLSAgICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXMhXG4iLCBQUk9DX1NUQVRfRklMRV9OQU1FKTsKLSAgICAgIGV4aXQgKDEpOwotICAgIH07Ci0gIH07Ci0KLSAgaWYgKCFwcm9jX3N0YXRfYnVmKSB7Ci0gICAgcHJvY19zdGF0X2J1ZmxlbiA9IE5fQ1BVX0xJTkVTIChsaWJfbnVtX2xvY19jcHVzKSAqIENQVV9MSU5FX0xFTkdUSDsKLSAgICBpZiAoZGVidWcpIHsKLSAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgImNhbGlicmF0ZTogbGliX251bV9sb2NfY3B1cyAlZCBsaW5lcyAlZCBDUFVfTElORV9MRU5HVEggJWQgcHJvY19zdGF0X2J1ZmxlbiAlZFxuIiwKLQkgICAgICBsaWJfbnVtX2xvY19jcHVzLAotCSAgICAgIE5fQ1BVX0xJTkVTKGxpYl9udW1fbG9jX2NwdXMpLAotCSAgICAgIENQVV9MSU5FX0xFTkdUSCwKLQkgICAgICBwcm9jX3N0YXRfYnVmbGVuKTsKLSAgICAgIGZmbHVzaCh3aGVyZSk7Ci0gICAgfQotICAgIHByb2Nfc3RhdF9idWYgPSAoY2hhciAqKW1hbGxvYyAocHJvY19zdGF0X2J1Zmxlbik7Ci0gICAgaWYgKCFwcm9jX3N0YXRfYnVmKSB7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJDYW5ub3QgYWxsb2NhdGUgYnVmZmVyIG1lbW9yeSFcbiIpOwotICAgICAgZXhpdCAoMSk7Ci0gICAgfTsKLSAgfTsKLQotICByZXR1cm4gc3lzY29uZiAoX1NDX0NMS19UQ0spOwotfQotCi12b2lkCi1nZXRfY3B1X2lkbGUgKHVpbnQ2NF90ICpyZXMpCi17Ci0gIGludCBzcGFjZTsKLSAgaW50IGk7Ci0gIGludCBuID0gbGliX251bV9sb2NfY3B1czsKLSAgY2hhciAqcCA9IHByb2Nfc3RhdF9idWY7Ci0KLSAgbHNlZWsgKHByb2Nfc3RhdF9mZCwgMCwgU0VFS19TRVQpOwotICByZWFkIChwcm9jX3N0YXRfZmQsIHAsIHByb2Nfc3RhdF9idWZsZW4pOwotCi0gIGlmIChkZWJ1ZykgewotICAgIGZwcmludGYod2hlcmUsInByb2Nfc3RhdF9idWYgJyUuKnMnXG4iLHByb2Nfc3RhdF9idWZsZW4scCk7Ci0gICAgZmZsdXNoKHdoZXJlKTsKLSAgfQotICAvKiBTa2lwIGZpcnN0IGxpbmUgKHRvdGFsKSBvbiBTTVAgKi8KLSAgaWYgKG4gPiAxKSBwID0gc3RyY2hyIChwLCAnXG4nKTsKLQotICAvKiBJZGxlIHRpbWUgaXMgdGhlIDR0aCBzcGFjZS1zZXBhcmF0ZWQgdG9rZW4gKi8KLSAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgIGZvciAoc3BhY2UgPSAwOyBzcGFjZSA8IDQ7IHNwYWNlICsrKSB7Ci0gICAgICBwID0gc3RyY2hyIChwLCAnICcpOwotICAgICAgd2hpbGUgKCorK3AgPT0gJyAnKTsKLSAgICB9OwotICAgIHJlc1tpXSA9IHN0cnRvdWwgKHAsICZwLCAxMCk7Ci0gICAgaWYgKGRlYnVnKSB7Ci0gICAgICBmcHJpbnRmKHdoZXJlLCJyZXNbJWRdIGlzICVsbHVcbiIsaSxyZXNbaV0pOwotICAgICAgZmZsdXNoKHdoZXJlKTsKLSAgICB9Ci0gICAgcCA9IHN0cmNociAocCwgJ1xuJyk7Ci0gIH07Ci0KLX0KLQotLyogdGFrZSB0aGUgaW5pdGlhbCB0aW1lc3RhbXAgYW5kIHN0YXJ0IGNvbGxlY3RpbmcgQ1BVIHV0aWxpemF0aW9uIGlmCi0gICByZXF1ZXN0ZWQgKi8KLQotdm9pZAotbWVhc3VyZV9jcHVfc3RhcnQoKQotewotICBjcHVfbWV0aG9kID0gUFJPQ19TVEFUOwotICBnZXRfY3B1X2lkbGUobGliX3N0YXJ0X2NvdW50KTsKLX0KLQotLyogY29sbGVjdCBmaW5hbCBDUFUgdXRpbGl6YXRpb24gcmF3IGRhdGEgKi8KLXZvaWQKLW1lYXN1cmVfY3B1X3N0b3AoKQotewotICBnZXRfY3B1X2lkbGUobGliX2VuZF9jb3VudCk7Ci19Ci0KLWZsb2F0Ci1jYWxjX2NwdV91dGlsX2ludGVybmFsKGZsb2F0IGVsYXBzZWRfdGltZSkKLXsKLSAgaW50IGk7Ci0KLSAgZmxvYXQgYWN0dWFsX3JhdGU7Ci0gIGZsb2F0IGNvcnJlY3Rpb25fZmFjdG9yOwotCi0gIGxpYl9sb2NhbF9jcHVfdXRpbCA9IChmbG9hdCkwLjA7Ci0gIC8qIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxpYnJhcnkgbWVhc3VyZWQgYSB0aW1lIG90aGVyIHRoYW4gKi8KLSAgLyogdGhlIG9uZSB0aGF0IHRoZSB1c2VyIHdhbnQgZm9yIHRoZSBjcHUgdXRpbGl6YXRpb24gKi8KLSAgLyogY2FsY3VsYXRpb25zIC0gZm9yIGV4YW1wbGUsIHRlc3RzIHRoYXQgd2VyZSBlbmRlZCBieSAqLwotICAvKiB3YXRjaGRvZyB0aW1lcnMgc3VjaCBhcyB0aGUgdWRwIHN0cmVhbSB0ZXN0LiBXZSBsZXQgdGhlc2UgKi8KLSAgLyogdGVzdHMgdGVsbCB1cCB3aGF0IHRoZSBlbGFwc2VkIHRpbWUgc2hvdWxkIGJlLiAqLwotICAKLSAgaWYgKGVsYXBzZWRfdGltZSAhPSAwLjApIHsKLSAgICBjb3JyZWN0aW9uX2ZhY3RvciA9IChmbG9hdCkgMS4wICsgCi0gICAgICAoKGxpYl9lbGFwc2VkIC0gZWxhcHNlZF90aW1lKSAvIGVsYXBzZWRfdGltZSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMDsKLSAgfQotCi0gIGZvciAoaSA9IDA7IGkgPCBsaWJfbnVtX2xvY19jcHVzOyBpKyspIHsKLQotICAgIC8qIGl0IHdvdWxkIGFwcGVhciB0aGF0IG9uIHNvbWUgc3lzdGVtcywgaW4gbG9vcGJhY2ssIG5pY2UgaXMKLSAgICAgKnZlcnkqIGVmZmVjdGl2ZSwgY2F1c2luZyB0aGUgbG9vcGVyIHByb2Nlc3MgdG8gc3RvcCBkZWFkIGluIGl0cwotICAgICB0cmFja3MuIGlmIHRoaXMgaGFwcGVucywgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY2FsY3VsYXRpb24KLSAgICAgZG9lcyBub3QgZ28gc291dGguIHJhaiA2Lzk1IGFuZCBpZiB3ZSBydW4gY29tcGxldGVseSBvdXQgb2YgaWRsZSwKLSAgICAgdGhlIHNhbWUgdGhpbmcgY291bGQgaW4gdGhlb3J5IGhhcHBlbiB0byB0aGUgVVNFX0tTVEFUIHBhdGguIHJhagotICAgICA4LzIwMDAgKi8gCi0gICAgCi0gICAgaWYgKGxpYl9lbmRfY291bnRbaV0gPT0gbGliX3N0YXJ0X2NvdW50W2ldKSB7Ci0gICAgICBsaWJfZW5kX2NvdW50W2ldKys7Ci0gICAgfQotICAgIAotICAgIGFjdHVhbF9yYXRlID0gKGxpYl9lbmRfY291bnRbaV0gPiBsaWJfc3RhcnRfY291bnRbaV0pID8KLSAgICAgIChmbG9hdCkobGliX2VuZF9jb3VudFtpXSAtIGxpYl9zdGFydF9jb3VudFtpXSkvbGliX2VsYXBzZWQgOgotICAgICAgKGZsb2F0KShsaWJfZW5kX2NvdW50W2ldIC0gbGliX3N0YXJ0X2NvdW50W2ldICsKLQkgICAgICBNQVhMT05HKS8gbGliX2VsYXBzZWQ7Ci0gICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSA9IChsaWJfbG9jYWxfbWF4cmF0ZSAtIGFjdHVhbF9yYXRlKSAvCi0gICAgICBsaWJfbG9jYWxfbWF4cmF0ZSAqIDEwMDsKLSAgICBpZiAoZGVidWcpIHsKLSAgICAgIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgICAgICJjYWxjX2NwdV91dGlsOiBhY3R1YWxfcmF0ZSBvbiBwcm9jZXNzb3IgJWQgaXMgJWYgc3RhcnQgJWxseCBlbmQgJWxseCB1dGlsICVmXG4iLAotICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICBhY3R1YWxfcmF0ZSwKLSAgICAgICAgICAgICAgbGliX3N0YXJ0X2NvdW50W2ldLAotICAgICAgICAgICAgICBsaWJfZW5kX2NvdW50W2ldLAotCSAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0pOwotICAgIH0KLSAgICBsaWJfbG9jYWxfY3B1X3V0aWwgKz0gbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXTsKLSAgfQotICAvKiB3ZSB3YW50IHRoZSBhdmVyYWdlIGFjcm9zcyBhbGwgbiBwcm9jZXNzb3JzICovCi0gIGxpYl9sb2NhbF9jcHVfdXRpbCAvPSAoZmxvYXQpbGliX251bV9sb2NfY3B1czsKLSAgCi0gIGxpYl9sb2NhbF9jcHVfdXRpbCAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKLSAgcmV0dXJuIGxpYl9sb2NhbF9jcHVfdXRpbDsKLX0KLQotdm9pZAotY3B1X3N0YXJ0X2ludGVybmFsKHZvaWQpCi17Ci0gIGdldF9jcHVfaWRsZShsaWJfc3RhcnRfY291bnQpOwotICByZXR1cm47Ci19Ci0KLXZvaWQKLWNwdV9zdG9wX2ludGVybmFsKHZvaWQpCi17Ci0gIGdldF9jcHVfaWRsZShsaWJfZW5kX2NvdW50KTsKLX0KZGlmZiAtLWdpdCBhL25ldHBlcmYuc3BlYy5pbiBiL25ldHBlcmYuc3BlYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWI1ZTAzCi0tLSAvZGV2L251bGwKKysrIGIvbmV0cGVyZi5zcGVjLmluCkBAIC0wLDAgKzEsNzMgQEAKK1N1bW1hcnk6ICAgICAgIE5ldHdvcmsgUGVyZm9ybWFuY2UgVGVzdGluZyBUb29sCitOYW1lOiAgICAgICAgICBuZXRwZXJmCitWZXJzaW9uOiAgICAgICBAVkVSU0lPTkAKK1JlbGVhc2U6ICAgICAgIDEKKworR3JvdXA6ICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0Jhc2UKK0xpY2Vuc2U6ICAgICAgIFVua25vd24KK1VSTDogICAgICAgICAgIGh0dHA6Ly93d3cubmV0cGVyZi5vcmcvCitQYWNrYWdlcjogICAgICBNYXJ0aW4gQS4gQnJvd24KK1NvdXJjZTogICAgICAgIGZ0cDovL2Z0cC5uZXRwZXJmLm9yZy9uZXRwZXJmLyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuYnoyCitCdWlsZFJvb3Q6ICAgICAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1yb290CisKK0J1aWxkUmVxdWlyZXM6IHRleGluZm8sIHRleGluZm8tdGV4CisKKyMgd2UgYXJlIG5vdCBxdWl0ZSByZWFkeSB0byBtYWtlIHRoaXMgYSByZXF1aXJlbWVudCBidXQgbGVhdmUKKyMgdGhlIGxpbmUgaGVyZSBhcyBhIGhlYWRzIHVwIGZvciB0aGUgYXR0ZW50aXZlIDopCisjIEJ1aWxkUmVxdWlyZXM6IGxpYnNtYmlvcy1kZXZlbAorCisjIGlmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGUgU0NUUCB0ZXN0cywgYXBwZW5kIC0tZW5hYmxlLXNjdHAgdG8gdGhlCisjIGNvbmZpZ3VyZSBsaW5lLCBhbmQgdW5jb21tZW50IHRoZSBuZXh0IGxpbmUKKyMgQnVpbGRSZXF1aXJlczogbGtzY3RwLXRvb2xzLWRldmVsCisKKyVkZXNjcmlwdGlvbgorTWFueSBkaWZmZXJlbnQgbmV0d29yayBiZW5jaG1hcmtpbmcgdG9vbHMgYXJlIGNvbGxlY3RlZCBpbiB0aGlzIHBhY2thZ2UsCittYWludGFpbmVkIGJ5IFJpY2sgSm9uZXMgb2YgSFAuCisKKworJXByZXAKKyVzZXR1cCAtcQorCislYnVpbGQKKyMgZ2NjIDQuNCB1c2VycyBtYXkgd2FudCB0byBkaXNhYmxlIHRoZSBzdHJpY3QgYWxpYXNpbmcgd2FybmluZ3MKKyMgQ0ZMQUdTPSIkUlBNX09QVF9GTEFHUyAtV25vLXN0cmljdC1hbGlhc2luZyIKKyVjb25maWd1cmUKK21ha2UgICV7X3NtcF9tZmxhZ3N9CisKKyVpbnN0YWxsCitybSAtcmYgJFJQTV9CVUlMRF9ST09UCittYWtlIGluc3RhbGwgREVTVERJUj0ke1JQTV9CVUlMRF9ST09UfQorCisjIENvbnZlcnQgdGhlIG1haW4gbmV0cGVyZiBkb2N1bWVudCB0byBvdGhlciBmb3JtYXRzCitjZCBkb2MKK21ha2UgJXtuYW1lfS50eHQgJXtuYW1lfS5odG1sICV7bmFtZX0ueG1sIHBkZgorY2QgLi4KKworIyBXZSBkb24ndCB3YW50IHRvIHBhY2thZ2UgdGhlIE1ha2VmaWxlIGZpbGVzIGluIHRoZSBleGFtcGxlcyBkaXJlY3RvcnkKK3JtIC1mIGRvYy9leGFtcGxlcy9NYWtlZmlsZSoKKworIyBJbmZvCitybSAtZiAkUlBNX0JVSUxEX1JPT1QvJXtfaW5mb2Rpcn0vZGlyCisKKyVjbGVhbgorcm0gLXJmICRSUE1fQlVJTERfUk9PVAorCisjICVwb3N0CisKKyVmaWxlcworJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKKyVkb2MgUkVBRE1FIEFVVEhPUlMgQ09QWUlORyBSZWxlYXNlX05vdGVzCislZG9jIGRvYy9uZXRwZXJmLntodG1sLHBkZix0eHQseG1sfQorJWRvYyBkb2MvZXhhbXBsZXMKKyV7X21hbmRpcn0vbWFuMS8qCisle19pbmZvZGlyfS8qCisle19iaW5kaXJ9L25ldHBlcmYKKyV7X2JpbmRpcn0vbmV0c2VydmVyCisKKworJWNoYW5nZWxvZworKiBNb24gU2VwICA3IDIwMDkgSm9zZSBQZWRybyBPbGl2ZWlyYSA8anBvIGF0IGRpLnVtaW5oby5wdD4gLSAyLjQuNS0xCistIFNwZWNmaWxlIGNsZWFudXAuCisKKyogU2F0IEp1biAxNyAyMDA2IE1hcnRpbiBBLiBCcm93biA8bWFydGluQGxpbnV4LWlwLm5ldD4gLSAyLjQuMi0xCistIGluaXRpYWwgY29udHJpYnV0ZWQgc3BlY2ZpbGUgZm9yIG5ldHBlcmYgcGFja2FnZSAodjIuNC4yKQpkaWZmIC0tZ2l0IGEvbmV0cGVyZl92ZXJzaW9uLmggYi9uZXRwZXJmX3ZlcnNpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJiOWZkYy4uMDAwMDAwMAotLS0gYS9uZXRwZXJmX3ZlcnNpb24uaAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSNkZWZpbmUgTkVUUEVSRl9WRVJTSU9OICIyLjQuNCIKZGlmZiAtLWdpdCBhL25ldHNlcnZlci5jIGIvbmV0c2VydmVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkOGVhMWIuLjAwMDAwMDAKLS0tIGEvbmV0c2VydmVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIyICswLDAgQEAKLS8qCi0gCi0JICAgQ29weXJpZ2h0IChDKSAxOTkzLTIwMDcgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLSAgICAgICAgICAgICAgICAgICAgICAgICBBTEwgUklHSFRTIFJFU0VSVkVELgotIAotICBUaGUgZW5jbG9zZWQgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gaW5jbHVkZXMgY29weXJpZ2h0ZWQgd29ya3MKLSAgb2YgSGV3bGV0dC1QYWNrYXJkIENvLiBGb3IgYXMgbG9uZyBhcyB5b3UgY29tcGx5IHdpdGggdGhlIGZvbGxvd2luZwotICBsaW1pdGF0aW9ucywgeW91IGFyZSBoZXJlYnkgYXV0aG9yaXplZCB0byAoaSkgdXNlLCByZXByb2R1Y2UsIGFuZAotICBtb2RpZnkgdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uLCBhbmQgdG8gKGlpKSBkaXN0cmlidXRlIHRoZQotICBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIG1vZGlmaWNhdGlvbnMsIGZvcgotICBub24tY29tbWVyY2lhbCBwdXJwb3NlcyBvbmx5LgotICAgICAgCi0gIDEuICBUaGUgZW5jbG9zZWQgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gaXMgbWFkZSBhdmFpbGFibGUgYXQgbm8KLSAgICAgIGNoYXJnZSBpbiBvcmRlciB0byBhZHZhbmNlIHRoZSBnZW5lcmFsIGRldmVsb3BtZW50IG9mCi0gICAgICBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgcHJvZHVjdHMuCi0gCi0gIDIuICBZb3UgbWF5IG5vdCBkZWxldGUgYW55IGNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCBpbiB0aGUKLSAgICAgIHNvZnR3YXJlIG9yIGRvY3VtZW50YXRpb24uIEFsbCBoYXJkIGNvcGllcywgYW5kIGNvcGllcyBpbgotICAgICAgc291cmNlIGNvZGUgb3Igb2JqZWN0IGNvZGUgZm9ybSwgb2YgdGhlIHNvZnR3YXJlIG9yCi0gICAgICBkb2N1bWVudGF0aW9uIChpbmNsdWRpbmcgbW9kaWZpY2F0aW9ucykgbXVzdCBjb250YWluIGF0IGxlYXN0Ci0gICAgICBvbmUgb2YgdGhlIGNvcHlyaWdodCBub3RpY2VzLgotIAotICAzLiAgVGhlIGVuY2xvc2VkIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGhhcyBub3QgYmVlbiBzdWJqZWN0ZWQKLSAgICAgIHRvIHRlc3RpbmcgYW5kIHF1YWxpdHkgY29udHJvbCBhbmQgaXMgbm90IGEgSGV3bGV0dC1QYWNrYXJkIENvLgotICAgICAgcHJvZHVjdC4gQXQgYSBmdXR1cmUgdGltZSwgSGV3bGV0dC1QYWNrYXJkIENvLiBtYXkgb3IgbWF5IG5vdAotICAgICAgb2ZmZXIgYSB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBhcyBhIHByb2R1Y3QuCi0gIAotICA0LiAgVEhFIFNPRlRXQVJFIEFORCBET0NVTUVOVEFUSU9OIElTIFBST1ZJREVEICJBUyBJUyIuCi0gICAgICBIRVdMRVRULVBBQ0tBUkQgQ09NUEFOWSBET0VTIE5PVCBXQVJSQU5UIFRIQVQgVEhFIFVTRSwKLSAgICAgIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUgT1IKLSAgICAgIERPQ1VNRU5UQVRJT04gV0lMTCBOT1QgSU5GUklOR0UgQSBUSElSRCBQQVJUWSdTIElOVEVMTEVDVFVBTAotICAgICAgUFJPUEVSVFkgUklHSFRTLiBIUCBET0VTIE5PVCBXQVJSQU5UIFRIQVQgVEhFIFNPRlRXQVJFIE9SCi0gICAgICBET0NVTUVOVEFUSU9OIElTIEVSUk9SIEZSRUUuIEhQIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUywKLSAgICAgIEVYUFJFU1MgQU5EIElNUExJRUQsIFdJVEggUkVHQVJEIFRPIFRIRSBTT0ZUV0FSRSBBTkQgVEhFCi0gICAgICBET0NVTUVOVEFUSU9OLiBIUCBTUEVDSUZJQ0FMTFkgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIE9GCi0gICAgICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotICAKLSAgNS4gIEhFV0xFVFQtUEFDS0FSRCBDT01QQU5ZIFdJTEwgTk9UIElOIEFOWSBFVkVOVCBCRSBMSUFCTEUgRk9SIEFOWQotICAgICAgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAgICAgIChJTkNMVURJTkcgTE9TVCBQUk9GSVRTKSBSRUxBVEVEIFRPIEFOWSBVU0UsIFJFUFJPRFVDVElPTiwKLSAgICAgIE1PRElGSUNBVElPTiwgT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBTT0ZUV0FSRSBPUiBET0NVTUVOVEFUSU9OLgotIAotKi8KLQotI2luY2x1ZGUgIm5ldHBlcmZfdmVyc2lvbi5oIgotCi1jaGFyCW5ldHNlcnZlcl9pZFtdPSJcCi1AKCMpbmV0c2VydmVyLmMgKGMpIENvcHlyaWdodCAxOTkzLTIwMDcgSGV3bGV0dC1QYWNrYXJkIENvLiBWZXJzaW9uIDIuNC4zIjsKLQotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAvKgkJCQkJCQkJCSovCi0gLyoJbmV0c2VydmVyLmMJCQkJCQkJKi8KLSAvKgkJCQkJCQkJCSovCi0gLyoJVGhpcyBpcyB0aGUgc2VydmVyIHNpZGUgY29kZSBmb3IgdGhlIG5ldHBlcmYgdGVzdCBwYWNrYWdlLiBJdAkqLwotIC8qIHdpbGwgb3BlcmF0ZSBlaXRoZXIgc3RhbmQtYWxvbmUsIG9yIGFzIGEgY2hpbGQgb2YgaW5ldGQuIEluIHRoaXMJKi8KLSAvKiB3YXksIHdlIGluc3VyZSB0aGF0IGl0IGNhbiBiZSBpbnN0YWxsZWQgb24gc3lzdGVtcyB3aXRoIG9yIHdpdGhvdXQJKi8KLSAvKiByb290IHBlcm1pc3Npb25zIChlZGl0aW5nIGluZXRkLmNvbmYpLiBFc3NlbnRpYWxseSwgdGhpcyBjb2RlIGlzCSovCi0gLyogdGhlIGFuYWxvZyB0byB0aGUgbmV0c2guYyBjb2RlLgkJCQkJKi8KLSAvKgkJCQkJCQkJCSovCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgkJCQkJCQkJCSovCi0vKglHbG9iYWwgaW5jbHVkZSBmaWxlcwkJCQkJCSovCi0vKgkJCQkJCQkJCSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaWYgSEFWRV9TVFJJTkdfSAotIyBpZiAhU1REQ19IRUFERVJTICYmIEhBVkVfTUVNT1JZX0gKLSMgIGluY2x1ZGUgPG1lbW9yeS5oPgotIyBlbmRpZgotIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1RSSU5HU19ICi0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotI2lmIEhBVkVfTElNSVRTX0gKLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2lmbmRlZiBXSU4zMgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19WTVMpCi0jaW5jbHVkZSA8c3lzL2lwYy5oPgotI2VuZGlmIC8qICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChfX1ZNUykgKi8KLSNpbmNsdWRlIDxmY250bC5oPgotI2lmZGVmIFdJTjMyCi0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0jZGVmaW5lIG5ldHBlcmZfc29ja2xlbl90IHNvY2tsZW5fdAotLyogd2UgbmVlZCB0byBmaW5kIHNvbWUgb3RoZXIgd2F5IHRvIGRlY2lkZSB0byBpbmNsdWRlIHdzMiAqLwotLyogaWYgeW91IGFyZSB0cnlpbmcgdG8gY29tcGlsZSBvbiBXaW5kb3dzIDIwMDAgb3IgTlQgNCB5b3Ugd2lsbCAqLwotLyogcHJvYmFibHkgaGF2ZSB0byBkZWZpbmUgRE9OVF9JUFY2ICovCi0jaWZuZGVmIERPTlRfSVBWNgotI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0jZW5kaWYgIC8qIERPTlRfSVBWNiAqLwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNkZWZpbmUgc2xlZXAoeCkgU2xlZXAoKHgpKjEwMDApCi0jZWxzZQotI2lmbmRlZiBNUEUKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmIC8qIE1QRSAqLwotI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpbmNsdWRlIDxuZXRkYi5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lmbmRlZiBET05UX1dBSVQKLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmIC8qIERPTlRfV0FJVCAqLwotI2VuZGlmIC8qIFdJTjMyICovCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaWZkZWYgX19WTVMKLSNpbmNsdWRlIDx0Y3BpcCRpbmV0ZGVmLmg+IAotI2luY2x1ZGUgPHVuaXhpby5oPiAKLSNlbmRpZiAvKiBfX1ZNUyAqLwotI2luY2x1ZGUgIm5ldGxpYi5oIgotI2luY2x1ZGUgIm5ldHRlc3RfYnNkLmgiCi0KLSNpZmRlZiBXQU5UX1VOSVgKLSNpbmNsdWRlICJuZXR0ZXN0X3VuaXguaCIKLSNlbmRpZiAvKiBXQU5UX1VOSVggKi8KLQotI2lmZGVmIFdBTlRfRExQSQotI2luY2x1ZGUgIm5ldHRlc3RfZGxwaS5oIgotI2VuZGlmIC8qIFdBTlRfRExQSSAqLwotCi0jaWZkZWYgV0FOVF9TQ1RQCi0jaW5jbHVkZSAibmV0dGVzdF9zY3RwLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIm5ldHNoLmgiCi0KLSNpZm5kZWYgREVCVUdfTE9HX0ZJTEUKLSNpZm5kZWYgV0lOMzIKLSNkZWZpbmUgREVCVUdfTE9HX0ZJTEUgIi90bXAvbmV0cGVyZi5kZWJ1ZyIKLSNlbHNlCi0jZGVmaW5lIERFQlVHX0xPR19GSUxFICJjOlxcdGVtcFxcbmV0cGVyZi5kZWJ1ZyIKLSNlbmRpZiAgLyogV0lOMzIgKi8KLSNlbmRpZiAvKiBERUJVR19MT0dfRklMRSAqLwotCi0gLyogc29tZSBnbG9iYWwgdmFyaWFibGVzICovCi0KLUZJTEUJKmFmcDsKLWNoYXIgICAgbGlzdGVuX3BvcnRbMTBdOwotZXh0ZXJuCWNoYXIJKm9wdGFyZzsKLWV4dGVybglpbnQJb3B0aW5kLCBvcHRlcnI7Ci0KLSNpZm5kZWYgV0lOMzIKLSNkZWZpbmUgU0VSVkVSX0FSR1MgImRMOm46cDp2OlY0NiIKLSNlbHNlCi0jZGVmaW5lIFNFUlZFUl9BUkdTICJkTDpuOnA6djpWNDZJOmk6IgotI2VuZGlmCi0KLS8qIHBlcmhhcHMgb25lIGRheSB3ZSB3aWxsIHVzZSB0aGlzIGFzIHBhcnQgb2Ygb25seSBvcGVuaW5nIGEgZGVidWcKLSAgIGxvZyBmaWxlIGlmIGRlYnVnIGlzIHNldCwgb2YgY291cnNlIHdlIGhhdmUgdG8gYmUgd2FyeSBvZiB0aGUgYmFzZQotICAgdXNlIG9mICJ3aGVyZSIgYW5kIHNvIHByb2JhYmx5IGFsd2F5cyBuZWVkICJ3aGVyZSIgcG9pbnRpbmcKLSAgICJzb21ld2hlcmUiIG9yIG90aGVyLiAqLwotdm9pZAotb3Blbl9kZWJ1Z19maWxlKCkgCi17Ci0jaWZuZGVmIFdJTjMyCi0jaWZuZGVmIFBBVEhfTUFYCi0jZGVmaW5lIFBBVEhfTUFYIE1BWF9QQVRICi0jZW5kaWYKLSAgY2hhciBGaWxlTmFtZVtQQVRIX01BWF07ICAgLyogZm9yIG9wZW5pbmcgdGhlIGRlYnVnIGxvZyBmaWxlICovCi0gIHN0cmNweShGaWxlTmFtZSwgREVCVUdfTE9HX0ZJTEUpOwotCi0gIGlmICh3aGVyZSAhPSBOVUxMKSBmZmx1c2god2hlcmUpOwotCi0gIHNucHJpbnRmKCZGaWxlTmFtZVtzdHJsZW4oRmlsZU5hbWUpXSwgc2l6ZW9mKEZpbGVOYW1lKSAtIHN0cmxlbihGaWxlTmFtZSksICJfJWQiLCBnZXRwaWQoKSk7Ci0gIGlmICgod2hlcmUgPSBmb3BlbihGaWxlTmFtZSwgInciKSkgPT0gTlVMTCkgewotICAgIHBlcnJvcigibmV0c2VydmVyOiBkZWJ1ZyBmaWxlIik7Ci0gICAgZXhpdCgxKTsKLSAgfQotCi0gIGNobW9kKEZpbGVOYW1lLDA2NDQpOwotI2VuZGlmCi0KLX0KLSAvKiBUaGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgIm1haW4gZXZlbnQgbG9vcCIgb2YgdGhlIG5ldHBlcmYJKi8KLSAvKiBzZXJ2ZXIgY29kZS4gQ29kZSBhYm92ZSBpdCB3aWxsIGhhdmUgc2V0LXVwIHRoZSBjb250cm9sIGNvbm5lY3Rpb24JKi8KLSAvKiBzbyBpdCBjYW4ganVzdCBtZXJyaWx5IGdvIGFib3V0IGl0cyBidXNpbmVzcywgd2hpY2ggaXMgdG8JCSovCi0gLyogInNjaGVkdWxlIiBwZXJmb3JtYW5jZSB0ZXN0cyBvbiB0aGUgc2VydmVyLgkJCQkqLwotCi12b2lkIAotcHJvY2Vzc19yZXF1ZXN0cygpCi17Ci0gIAotICBmbG9hdAl0ZW1wX3JhdGU7Ci0gIAotICBpZiAoZGVidWcpICAgIG9wZW5fZGVidWdfZmlsZSgpOwotCi0KLSAgd2hpbGUgKDEpIHsKLSAgICByZWN2X3JlcXVlc3QoKTsKLQotICAgIHN3aXRjaCAobmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlKSB7Ci0gICAgICAKLSAgICBjYXNlIERFQlVHX09OOgotICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBERUJVR19PSzsKLSAgICAgIC8qICBkdW1wX3JlcXVlc3QgYWxyZWFkeSBwcmVzZW50IGluIHJlY3ZfcmVxdWVzdDsgcmVkdW5kYW50PyAqLwotICAgICAgaWYgKCFkZWJ1ZykgewotCWRlYnVnKys7Ci0Jb3Blbl9kZWJ1Z19maWxlKCk7Ci0JZHVtcF9yZXF1ZXN0KCk7Ci0gICAgICB9Ci0gICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgICBicmVhazsKLSAgICAgIAotICAgIGNhc2UgREVCVUdfT0ZGOgotICAgICAgaWYgKGRlYnVnKQotCWRlYnVnLS07Ci0gICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IERFQlVHX09LOwotICAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgICAgLyogK1NBRiB3aHk/Pz8gKi8KLSAgICAgIGlmICghZGVidWcpIAotICAgICAgewotCWZjbG9zZSh3aGVyZSk7Ci0jaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKE1QRSkgJiYgIWRlZmluZWQoX19WTVMpCi0JLyogRm9yIFVuaXg6IHJlb3BlbiB0aGUgZGVidWcgd3JpdGUgZmlsZSBkZXNjcmlwdG9yIHRvICIvZGV2L251bGwiICovCi0JLyogYW5kIHJlZGlyZWN0IHN0ZG91dCB0byBpdC4JCQkJCSAgICovCi0JZmZsdXNoIChzdGRvdXQpOwotCXdoZXJlID0gZm9wZW4gKCIvZGV2L251bGwiLCAidyIpOwotCWlmICh3aGVyZSA9PSBOVUxMKQotCXsKLQkgIHBlcnJvciAoIm5ldHNlcnZlcjogcmVvcGVuaW5nIGRlYnVnIGZwIGZvciB3cml0aW5nOiAvZGV2L251bGwiKTsKLQkgIGV4aXQgICAoMSk7Ci0JfQotCWlmIChjbG9zZSAoU1RET1VUX0ZJTEVOTykgPT0gLTEpCi0JewotCSAgcGVycm9yICgibmV0c2VydmVyOiBjbG9zaW5nIHN0ZG91dCBmaWxlIGRlc2NyaXB0b3IiKTsKLQkgIGV4aXQgICAoMSk7Ci0JfQotCWlmIChkdXAgKGZpbGVubyAod2hlcmUpKSAgPT0gLTEpCi0JewotCSAgcGVycm9yICgibmV0c2VydmVyOiBkdXBsaWNhdGUgL2Rldi9udWxsIHdyaXRlIGZpbGUgZGVzY3IuIHRvIHN0ZG91dCIpOwotCSAgZXhpdCAgICgxKTsKLQl9Ci0jZW5kaWYgLyogIVdJTjMyICFNUEUgIV9fVk1TICovCi0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICAgIAotICAgIGNhc2UgQ1BVX0NBTElCUkFURToKLSAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlID0gQ1BVX0NBTElCUkFURTsKLSAgICAgIHRlbXBfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUoMC4wKTsKLSAgICAgIGJjb3B5KChjaGFyICopJnRlbXBfcmF0ZSwKLQkgICAgKGNoYXIgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhLAotCSAgICBzaXplb2YodGVtcF9yYXRlKSk7Ci0gICAgICBiY29weSgoY2hhciAqKSZsaWJfbnVtX2xvY19jcHVzLAotCSAgICAoY2hhciAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEgKyBzaXplb2YodGVtcF9yYXRlKSwKLQkgICAgc2l6ZW9mKGxpYl9udW1fbG9jX2NwdXMpKTsKLSAgICAgIGlmIChkZWJ1ZykgewotCWZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogc2VuZGluZyBDUFUgaW5mb3JtYXRpb246Iik7Ci0JZnByaW50Zih3aGVyZSwicmF0ZSBpcyAlZyBudW0gY3B1ICVkXG4iLHRlbXBfcmF0ZSxsaWJfbnVtX2xvY19jcHVzKTsKLQlmZmx1c2god2hlcmUpOwotICAgICAgfQotICAgICAgCi0gICAgICAvKiB3ZSBuZWVkIHRoZSBjcHVfc3RhcnQsIGNwdV9zdG9wIGluIHRoZSBsb29wZXIgY2FzZSB0byBraWxsIHRoZSAqLwotICAgICAgLyogY2hpbGQgcHJvY2VzZXMgcmFqIDcvOTUgKi8KLSAgICAgIAotI2lmZGVmIFVTRV9MT09QRVIKLSAgICAgIGNwdV9zdGFydCgxKTsKLSAgICAgIGNwdV9zdG9wKDEsJnRlbXBfcmF0ZSk7Ci0jZW5kaWYgLyogVVNFX0xPT1BFUiAqLwotICAgICAgCi0gICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgICBicmVhazsKLSAgICAgIAotICAgIGNhc2UgRE9fVENQX1NUUkVBTToKLSAgICAgIHJlY3ZfdGNwX3N0cmVhbSgpOwotICAgICAgYnJlYWs7Ci0gICAgICAKLSAgICBjYXNlIERPX1RDUF9NQUVSVFM6Ci0gICAgICByZWN2X3RjcF9tYWVydHMoKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0gICAgY2FzZSBET19UQ1BfUlI6Ci0gICAgICByZWN2X3RjcF9ycigpOwotICAgICAgYnJlYWs7Ci0gICAgICAKLSAgICBjYXNlIERPX1RDUF9DUlI6Ci0gICAgICByZWN2X3RjcF9jb25uX3JyKCk7Ci0gICAgICBicmVhazsKLSAgICAgIAotICAgIGNhc2UgRE9fVENQX0NDOgotICAgICAgcmVjdl90Y3BfY2MoKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0jaWZkZWYgRE9fMTY0NAotICAgIGNhc2UgRE9fVENQX1RSUjoKLSAgICAgIHJlY3ZfdGNwX3RyYW5fcnIoKTsKLSAgICAgIGJyZWFrOwotI2VuZGlmIC8qIERPXzE2NDQgKi8KLSAgICAgIAotI2lmZGVmIERPX05CUlIKLSAgICBjYXNlIERPX1RDUF9OQlJSOgotICAgICAgcmVjdl90Y3BfbmJycigpOwotICAgICAgYnJlYWs7Ci0jZW5kaWYgLyogRE9fTkJSUiAqLwotICAgICAgCi0gICAgY2FzZSBET19VRFBfU1RSRUFNOgotICAgICAgcmVjdl91ZHBfc3RyZWFtKCk7Ci0gICAgICBicmVhazsKLSAgICAgIAotICAgIGNhc2UgRE9fVURQX1JSOgotICAgICAgcmVjdl91ZHBfcnIoKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0jaWZkZWYgV0FOVF9ETFBJCi0KLSAgICBjYXNlIERPX0RMUElfQ09fUlI6Ci0gICAgICByZWN2X2RscGlfY29fcnIoKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0gICAgY2FzZSBET19ETFBJX0NMX1JSOgotICAgICAgcmVjdl9kbHBpX2NsX3JyKCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgRE9fRExQSV9DT19TVFJFQU06Ci0gICAgICByZWN2X2RscGlfY29fc3RyZWFtKCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgRE9fRExQSV9DTF9TVFJFQU06Ci0gICAgICByZWN2X2RscGlfY2xfc3RyZWFtKCk7Ci0gICAgICBicmVhazsKLQotI2VuZGlmIC8qIFdBTlRfRExQSSAqLwotCi0jaWZkZWYgV0FOVF9VTklYCi0KLSAgICBjYXNlIERPX1NUUkVBTV9TVFJFQU06Ci0gICAgICByZWN2X3N0cmVhbV9zdHJlYW0oKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0gICAgY2FzZSBET19TVFJFQU1fUlI6Ci0gICAgICByZWN2X3N0cmVhbV9ycigpOwotICAgICAgYnJlYWs7Ci0gICAgICAKLSAgICBjYXNlIERPX0RHX1NUUkVBTToKLSAgICAgIHJlY3ZfZGdfc3RyZWFtKCk7Ci0gICAgICBicmVhazsKLSAgICAgIAotICAgIGNhc2UgRE9fREdfUlI6Ci0gICAgICByZWN2X2RnX3JyKCk7Ci0gICAgICBicmVhazsKLSAgICAgIAotI2VuZGlmIC8qIFdBTlRfVU5JWCAqLwotCi0jaWZkZWYgV0FOVF9YVEkKLSAgICBjYXNlIERPX1hUSV9UQ1BfU1RSRUFNOgotICAgICAgcmVjdl94dGlfdGNwX3N0cmVhbSgpOwotICAgICAgYnJlYWs7Ci0gICAgICAKLSAgICBjYXNlIERPX1hUSV9UQ1BfUlI6Ci0gICAgICByZWN2X3h0aV90Y3BfcnIoKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0gICAgY2FzZSBET19YVElfVURQX1NUUkVBTToKLSAgICAgIHJlY3ZfeHRpX3VkcF9zdHJlYW0oKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0gICAgY2FzZSBET19YVElfVURQX1JSOgotICAgICAgcmVjdl94dGlfdWRwX3JyKCk7Ci0gICAgICBicmVhazsKLQotI2VuZGlmIC8qIFdBTlRfWFRJICovCi0KLSNpZmRlZiBXQU5UX1NDVFAKLSAgICBjYXNlIERPX1NDVFBfU1RSRUFNOgotICAgICAgcmVjdl9zY3RwX3N0cmVhbSgpOwotICAgICAgYnJlYWs7Ci0gICAgICAKLSAgICBjYXNlIERPX1NDVFBfU1RSRUFNX01BTlk6Ci0gICAgICByZWN2X3NjdHBfc3RyZWFtXzF0b01hbnkoKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBET19TQ1RQX1JSOgotICAgICAgcmVjdl9zY3RwX3JyKCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgRE9fU0NUUF9SUl9NQU5ZOgotICAgICAgcmVjdl9zY3RwX3JyXzF0b01hbnkoKTsKLSAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSNpZmRlZiBXQU5UX1NEUAotICAgIGNhc2UgRE9fU0RQX1NUUkVBTToKLSAgICAgIHJlY3Zfc2RwX3N0cmVhbSgpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERPX1NEUF9NQUVSVFM6Ci0gICAgICByZWN2X3NkcF9tYWVydHMoKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBET19TRFBfUlI6Ci0gICAgICByZWN2X3NkcF9ycigpOwotICAgICAgYnJlYWs7Ci0jZW5kaWYgCi0KLSAgICBkZWZhdWx0OgotICAgICAgZnByaW50Zih3aGVyZSwidW5rbm93biB0ZXN0IG51bWJlciAlZFxuIiwKLQkgICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUpOwotICAgICAgZmZsdXNoKHdoZXJlKTsKLSAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vPTk5ODsKLSAgICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAgIGJyZWFrOwotICAgICAgCi0gICAgfQotICB9Ci19Ci0KLS8qCQotIHNldF91cF9zZXJ2ZXIoKQotCi0gc2V0LXVwIHRoZSBzZXJ2ZXIgbGlzdGVuIHNvY2tldC4gd2Ugb25seSBjYWxsIHRoaXMgcm91dGluZSBpZiB0aGUgCi0gdXNlciBoYXMgc3BlY2lmaWVkIGEgcG9ydCBudW1iZXIgb24gdGhlIGNvbW1hbmQgbGluZSBvciB3ZSBiZWxpZXZlIHdlCi0gYXJlIG5vdCBhIGNoaWxkIG9mIGluZXRkIG9yIGl0cyBwbGF0Zm9ybS1zcGVjaWZpYyBlcXVpdmFsZW50ICovCi0KLS8qS0MqLwotCi12b2lkIAotc2V0X3VwX3NlcnZlcihjaGFyIGhvc3RuYW1lW10sIGNoYXIgcG9ydFtdLCBpbnQgYWYpCi17IAotCi0gIHN0cnVjdCBhZGRyaW5mbyAgICAgaGludHM7Ci0gIHN0cnVjdCBhZGRyaW5mbyAgICAgKmxvY2FsX3JlczsKLSAgc3RydWN0IGFkZHJpbmZvICAgICAqbG9jYWxfcmVzX3RlbXA7Ci0KLSAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgICAgIHBlZXJhZGRyOwotICBuZXRwZXJmX3NvY2tsZW5fdCAgICAgICAgICAgICAgICAgcGVlcmFkZHJfbGVuID0gc2l6ZW9mKHBlZXJhZGRyKTsKLSAgCi0gIFNPQ0tFVCBzZXJ2ZXJfY29udHJvbDsKLSAgaW50IG9uPTE7Ci0gIGludCBjb3VudDsKLSAgaW50IGVycm9yOwotICBpbnQgbm90X2xpc3RlbmluZzsKLQotI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChNUEUpICYmICFkZWZpbmVkKF9fVk1TKQotICBGSUxFICpyZF9udWxsX2ZwOyAgICAvKiBVc2VkIHRvIHJlZGlyZWN0IGZyb20gIi9kZXYvbnVsbCIuICovCi0gIEZJTEUgKndyX251bGxfZnA7ICAgIC8qIFVzZWQgdG8gcmVkaXJlY3QgdG8gICAiL2Rldi9udWxsIi4gKi8KLSNlbmRpZiAvKiAhV0lOMzIgIU1QRSAhX19WTVMgKi8KLQotICBpZiAoZGVidWcpIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICJzZXRfdXBfc2VydmVyIGNhbGxlZCB3aXRoIGhvc3QgJyVzJyBwb3J0ICclcycgcmVtZmFtICVkXG4iLAotICAgICAgICAgICAgaG9zdG5hbWUsCi0JICAgIHBvcnQsCi0gICAgICAgICAgICBhZik7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gIH0KLQotICBtZW1zZXQoJmhpbnRzLDAsc2l6ZW9mKGhpbnRzKSk7Ci0gIGhpbnRzLmFpX2ZhbWlseSA9IGFmOwotICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOwotICBoaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOwotICBoaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkU7Ci0KLSAgY291bnQgPSAwOwotICBkbyB7Ci0gICAgZXJyb3IgPSBnZXRhZGRyaW5mbygoY2hhciAqKWhvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgJmhpbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX3Jlcyk7Ci0gICAgY291bnQgKz0gMTsKLSAgICBpZiAoZXJyb3IgPT0gRUFJX0FHQUlOKSB7Ci0gICAgICBpZiAoZGVidWcpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsIlNsZWVwaW5nIG9uIGdldGFkZHJpbmZvIEVBSV9BR0FJTlxuIik7Ci0gICAgICAgIGZmbHVzaChzdGRlcnIpOwotICAgICAgfQotICAgICAgc2xlZXAoMSk7Ci0gICAgfQotICB9IHdoaWxlICgoZXJyb3IgPT0gRUFJX0FHQUlOKSAmJiAoY291bnQgPD0gNSkpOwotCi0gIGlmIChlcnJvcikgewotICAgIGZwcmludGYoc3RkZXJyLAotCSAgICAic2V0X3VwX3NlcnZlcjogY291bGQgbm90IHJlc29sdmUgcmVtb3RlICclcycgcG9ydCAnJXMnIGFmICVkIiwKLQkgICAgaG9zdG5hbWUsCi0JICAgIHBvcnQsCi0JICAgIGFmKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwiXG5cdGdldGFkZHJpbmZvIHJldHVybmVkICVkICVzXG4iLAotCSAgICBlcnJvciwKLQkgICAgZ2FpX3N0cmVycm9yKGVycm9yKSk7Ci0gICAgZXhpdCgtMSk7Ci0gIH0KLQotICBpZiAoZGVidWcpIHsKLSAgICBkdW1wX2FkZHJpbmZvKHN0ZGVyciwgbG9jYWxfcmVzLCBob3N0bmFtZSwgcG9ydCwgYWYpOwotICB9Ci0KLSAgbm90X2xpc3RlbmluZyA9IDE7Ci0gIGxvY2FsX3Jlc190ZW1wID0gbG9jYWxfcmVzOwotCi0gIHdoaWxlKChsb2NhbF9yZXNfdGVtcCAhPSBOVUxMKSAmJiAobm90X2xpc3RlbmluZykpIHsKLQotICAgIGZwcmludGYoc3RkZXJyLAotCSAgICAiU3RhcnRpbmcgbmV0c2VydmVyIGF0IHBvcnQgJXNcbiIsCi0JICAgIHBvcnQpOwotCi0gICAgc2VydmVyX2NvbnRyb2wgPSBzb2NrZXQobG9jYWxfcmVzX3RlbXAtPmFpX2ZhbWlseSxTT0NLX1NUUkVBTSwwKTsKLQotICAgIGlmIChzZXJ2ZXJfY29udHJvbCA9PSBJTlZBTElEX1NPQ0tFVCkgewotICAgICAgcGVycm9yKCJzZXRfdXBfc2VydmVyIGNvdWxkIG5vdCBhbGxvY2F0ZSBhIHNvY2tldCIpOwotICAgICAgZXhpdCgtMSk7Ci0gICAgfQotCi0gICAgLyogaGFwcGluZXNzIGFuZCBqb3ksIGtlZXAgZ29pbmcgKi8KLSAgICBpZiAoc2V0c29ja29wdChzZXJ2ZXJfY29udHJvbCwgCi0JCSAgIFNPTF9TT0NLRVQsIAotCQkgICBTT19SRVVTRUFERFIsIAotCQkgICAoY2hhciAqKSZvbiAsIAotCQkgICBzaXplb2Yob24pKSA9PSBTT0NLRVRfRVJST1IpIHsKLSAgICAgIGlmIChkZWJ1ZykgewotCXBlcnJvcigid2FybmluZzogc2V0X3VwX3NlcnZlciBjb3VsZCBub3Qgc2V0IFNPX1JFVVNFQUREUiIpOwotICAgICAgfQotICAgIH0KLSAgICAvKiBzdGlsbCBoYXBweSBhbmQgam95ZnVsICovCi0KLSAgICBpZiAoKGJpbmQgKHNlcnZlcl9jb250cm9sLCAKLQkgICAgICAgbG9jYWxfcmVzX3RlbXAtPmFpX2FkZHIsIAotCSAgICAgICBsb2NhbF9yZXNfdGVtcC0+YWlfYWRkcmxlbikgIT0gU09DS0VUX0VSUk9SKSAmJgotCShsaXN0ZW4gKHNlcnZlcl9jb250cm9sLDUpICE9IFNPQ0tFVF9FUlJPUikpICB7Ci0gICAgICBub3RfbGlzdGVuaW5nID0gMDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIC8qIHdlIGNvbnNpZGVyIGEgYmluZCgpIG9yIGxpc3RlbigpIGZhaWx1cmUgYSB0cmFuc2llbnQgYW5kIHRyeQotCSB0aGUgbmV4dCBhZGRyZXNzICovCi0gICAgICBpZiAoZGVidWcpIHsKLQlwZXJyb3IoIndhcm5pbmc6IHNldF91cF9zZXJ2ZXIgZmFpbGVkIGEgYmluZCBvciBsaXN0ZW4gY2FsbFxuIik7Ci0gICAgICB9Ci0gICAgICBsb2NhbF9yZXNfdGVtcCA9IGxvY2FsX3Jlc190ZW1wLT5haV9uZXh0OwotICAgICAgY29udGludWU7Ci0gICAgfQotICB9Ci0KLSAgaWYgKG5vdF9saXN0ZW5pbmcpIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwKLQkgICAgInNldF91cF9zZXJ2ZXIgY291bGQgbm90IGVzdGFibGlzaCBhIGxpc3RlbiBlbmRwb2ludCBmb3IgJXMgcG9ydCAlcyB3aXRoIGZhbWlseSAlc1xuIiwKLQkgICAgaG9zdF9uYW1lLAotCSAgICBwb3J0LAotCSAgICBpbmV0X2Z0b3MoYWYpKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KC0xKTsKLSAgfQotICBlbHNlIHsKLSAgICBwcmludGYoIlN0YXJ0aW5nIG5ldHNlcnZlciBhdCBob3N0bmFtZSAlcyBwb3J0ICVzIGFuZCBmYW1pbHkgJXNcbiIsCi0JICAgaG9zdG5hbWUsCi0JICAgcG9ydCwKLQkgICBpbmV0X2Z0b3MoYWYpKTsKLSAgfQotCi0gIC8qCi0gICAgc2V0cGdycCgpOwotICAgICovCi0KLSNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoTVBFKSAmJiAhZGVmaW5lZChfX1ZNUykKLSAgLyogRmx1c2ggdGhlIHN0YW5kYXJkIEkvTyBmaWxlIGRlc2NyaXB0b3JzIGJlZm9yZSBmb3JraW5nLiAqLwotICBmZmx1c2ggKHN0ZGluKTsKLSAgZmZsdXNoIChzdGRvdXQpOwotICBmZmx1c2ggKHN0ZGVycik7Ci0gIHN3aXRjaCAoZm9yaygpKQotICAgIHsKLSAgICBjYXNlIC0xOiAgCQotICAgICAgcGVycm9yKCJuZXRwZXJmIHNlcnZlciBlcnJvciIpOwotICAgICAgZXhpdCgxKTsKLSAgICAgIAotICAgIGNhc2UgMDoJCi0gICAgICAvKiBSZWRpcmVjdCBzdGRpbiBmcm9tICIvZGV2L251bGwiLiAqLwotICAgICAgcmRfbnVsbF9mcCA9IGZvcGVuICgiL2Rldi9udWxsIiwgInIiKTsKLSAgICAgIGlmIChyZF9udWxsX2ZwID09IE5VTEwpCi0gICAgICB7Ci0JcGVycm9yICgibmV0c2VydmVyOiBvcGVuaW5nIGZvciByZWFkaW5nOiAvZGV2L251bGwiKTsKLQlleGl0ICAgKDEpOwotICAgICAgfQotICAgICAgaWYgKGNsb3NlIChTVERJTl9GSUxFTk8pID09IC0xKQotICAgICAgewotCXBlcnJvciAoIm5ldHNlcnZlcjogY2xvc2luZyBzdGRpbiBmaWxlIGRlc2NyaXB0b3IiKTsKLQlleGl0ICAgKDEpOwotICAgICAgfQotICAgICAgaWYgKGR1cCAoZmlsZW5vIChyZF9udWxsX2ZwKSkgPT0gLTEpCi0gICAgICB7Ci0JcGVycm9yICgibmV0c2VydmVyOiBkdXBsaWNhdGUgL2Rldi9udWxsIHJlYWQgZmlsZSBkZXNjci4gdG8gc3RkaW4iKTsKLQlleGl0ICAgKDEpOwotICAgICAgfQotCi0gICAgICAvKiBSZWRpcmVjdCBzdGRvdXQgdG8gdGhlIGRlYnVnIHdyaXRlIGZpbGUgZGVzY3JpcHRvci4gKi8KLSAgICAgIGlmIChjbG9zZSAoU1RET1VUX0ZJTEVOTykgPT0gLTEpCi0gICAgICB7Ci0JcGVycm9yICgibmV0c2VydmVyOiBjbG9zaW5nIHN0ZG91dCBmaWxlIGRlc2NyaXB0b3IiKTsKLQlleGl0ICAgKDEpOwotICAgICAgfQotICAgICAgaWYgKGR1cCAoZmlsZW5vICh3aGVyZSkpICA9PSAtMSkKLSAgICAgIHsKLQlwZXJyb3IgKCJuZXRzZXJ2ZXI6IGR1cGxpY2F0ZSB0aGUgZGVidWcgd3JpdGUgZmlsZSBkZXNjci4gdG8gc3Rkb3V0Iik7Ci0JZXhpdCAgICgxKTsKLSAgICAgIH0KLQotICAgICAgLyogUmVkaXJlY3Qgc3RkZXJyIHRvICIvZGV2L251bGwiLiAqLwotICAgICAgd3JfbnVsbF9mcCA9IGZvcGVuICgiL2Rldi9udWxsIiwgInciKTsKLSAgICAgIGlmICh3cl9udWxsX2ZwID09IE5VTEwpCi0gICAgICB7Ci0JcGVycm9yICgibmV0c2VydmVyOiBvcGVuaW5nIGZvciB3cml0aW5nOiAvZGV2L251bGwiKTsKLQlleGl0ICAgKDEpOwotICAgICAgfQotICAgICAgaWYgKGNsb3NlIChTVERFUlJfRklMRU5PKSA9PSAtMSkKLSAgICAgIHsKLQlwZXJyb3IgKCJuZXRzZXJ2ZXI6IGNsb3Npbmcgc3RkZXJyIGZpbGUgZGVzY3JpcHRvciIpOwotCWV4aXQgICAoMSk7Ci0gICAgICB9Ci0gICAgICBpZiAoZHVwIChmaWxlbm8gKHdyX251bGxfZnApKSAgPT0gLTEpCi0gICAgICB7Ci0JcGVycm9yICgibmV0c2VydmVyOiBkdXBpY2F0ZSAvZGV2L251bGwgd3JpdGUgZmlsZSBkZXNjci4gdG8gc3RkZXJyIik7Ci0JZXhpdCAgICgxKTsKLSAgICAgIH0KLSAKLSNpZm5kZWYgTk9fU0VUU0lECi0gICAgICBzZXRzaWQoKTsKLSNlbHNlCi0gICAgICBzZXRwZ3JwKCk7Ci0jZW5kaWYgLyogTk9fU0VUU0lEICovCi0KLSAvKiBzb21lIE9TJ3MgaGF2ZSBTSUdDTEQgZGVmaW5lZCBhcyBTSUdDSExEICovCi0jaWZuZGVmIFNJR0NMRAotI2RlZmluZSBTSUdDTEQgU0lHQ0hMRAotI2VuZGlmIC8qIFNJR0NMRCAqLwotCi0gICAgICBzaWduYWwoU0lHQ0xELCBTSUdfSUdOKTsKLSAgICAgIAotI2VuZGlmIC8qICFXSU4zMiAhTVBFICFfX1ZNUyAqLwotCi0gICAgICBmb3IgKDs7KQotCXsKLQkgIGlmICgoc2VydmVyX3NvY2s9YWNjZXB0KHNlcnZlcl9jb250cm9sLAotCQkJCSAgKHN0cnVjdCBzb2NrYWRkciAqKSZwZWVyYWRkciwKLQkJCQkgICZwZWVyYWRkcl9sZW4pKSA9PSBJTlZBTElEX1NPQ0tFVCkKLQkgICAgewotCSAgICAgIHByaW50Zigic2VydmVyX2NvbnRyb2w6IGFjY2VwdCBmYWlsZWQgZXJybm8gJWRcbiIsZXJybm8pOwotCSAgICAgIGV4aXQoMSk7Ci0JICAgIH0KLSNpZiBkZWZpbmVkKE1QRSkgfHwgZGVmaW5lZChfX1ZNUykKLQkgIC8qCi0JICAgKiBTaW5jZSB3ZSBjYW5ub3QgZm9yayB0aGlzIHByb2Nlc3MgLCB3ZSBjYW50IGZpcmUgYW55IHRocmVhZHMKLQkgICAqIGFzIHRoZXkgYWxsIHNoYXJlIHRoZSBzYW1lIGdsb2JhbCBkYXRhIC4gU28gd2UgYmV0dGVyIGFsbG93Ci0JICAgKiBvbmUgcmVxdWVzdCBhdCBhdCB0aW1lIAotCSAgICovCi0JICBwcm9jZXNzX3JlcXVlc3RzKCkgOwotI2VsaWYgV0lOMzIKLQkJewotCQkJQk9PTCBiOwotCQkJY2hhciBjbWRsaW5lWzgwXTsKLQkJCVBST0NFU1NfSU5GT1JNQVRJT04gcGk7Ci0JCQlTVEFSVFVQSU5GTyBzaTsKLQkJCWludCBpOwotCi0JCQltZW1zZXQoJnNpLCAwICwgc2l6ZW9mKFNUQVJUVVBJTkZPKSk7Ci0JCQlzaS5jYiA9IHNpemVvZihTVEFSVFVQSU5GTyk7Ci0KLQkJCS8qIFBhc3MgdGhlIHNlcnZlcl9zb2NrIGFzIHN0ZGluIGZvciB0aGUgbmV3IHByb2Nlc3MuICovCi0JCQkvKiBIb3BlZnVsbHkgdGhpcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGNyZWF0ZWQgd2l0aCB0aGUgT0JKX0lOSEVSSVQgYXR0cmlidXRlLiAqLwotCQkJc2kuaFN0ZElucHV0ID0gKEhBTkRMRSlzZXJ2ZXJfc29jazsKLQkJCXNpLmhTdGRPdXRwdXQgPSBHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwotCQkJc2kuaFN0ZEVycm9yID0gR2V0U3RkSGFuZGxlKFNURF9FUlJPUl9IQU5ETEUpOwotCQkJc2kuZHdGbGFncyA9IFNUQVJURl9VU0VTVERIQU5ETEVTOwotCi0JCQkvKiBCdWlsZCBjbWRsaW5lIGZvciBjaGlsZCBwcm9jZXNzICovCi0JCQlzdHJjcHkoY21kbGluZSwgcHJvZ3JhbSk7Ci0JCQlpZiAodmVyYm9zaXR5ID4gMSkgewotCQkJCXNucHJpbnRmKCZjbWRsaW5lW3N0cmxlbihjbWRsaW5lKV0sIHNpemVvZihjbWRsaW5lKSAtIHN0cmxlbihjbWRsaW5lKSwgIiAtdiAlZCIsIHZlcmJvc2l0eSk7Ci0JCQl9Ci0JCQlmb3IgKGk9MDsgaSA8IGRlYnVnOyBpKyspIHsKLQkJCQlzbnByaW50ZigmY21kbGluZVtzdHJsZW4oY21kbGluZSldLCBzaXplb2YoY21kbGluZSkgLSBzdHJsZW4oY21kbGluZSksICIgLWQiKTsKLQkJCX0KLQkJCXNucHJpbnRmKCZjbWRsaW5lW3N0cmxlbihjbWRsaW5lKV0sIHNpemVvZihjbWRsaW5lKSAtIHN0cmxlbihjbWRsaW5lKSwgIiAtSSAleCIsIChpbnQpKFVJTlRfUFRSKXNlcnZlcl9zb2NrKTsKLQkJCXNucHJpbnRmKCZjbWRsaW5lW3N0cmxlbihjbWRsaW5lKV0sIHNpemVvZihjbWRsaW5lKSAtIHN0cmxlbihjbWRsaW5lKSwgIiAtaSAleCIsIChpbnQpKFVJTlRfUFRSKXNlcnZlcl9jb250cm9sKTsKLQkJCXNucHJpbnRmKCZjbWRsaW5lW3N0cmxlbihjbWRsaW5lKV0sIHNpemVvZihjbWRsaW5lKSAtIHN0cmxlbihjbWRsaW5lKSwgIiAtaSAleCIsIChpbnQpKFVJTlRfUFRSKXdoZXJlKTsKLQotCQkJYiA9IENyZWF0ZVByb2Nlc3MoTlVMTCwJIC8qIEFwcGxpY2F0aW9uIE5hbWUgKi8KLQkJCQkJY21kbGluZSwKLQkJCQkJTlVMTCwgICAgLyogUHJvY2VzcyBzZWN1cml0eSBhdHRyaWJ1dGVzICovCi0JCQkJCU5VTEwsICAgIC8qIFRocmVhZCBzZWN1cml0eSBhdHRyaWJ1dGVzICovCi0JCQkJCVRSVUUsICAgIC8qIEluaGVyaXQgaGFuZGxlcyAqLwotCQkJCQkwLAkgICAvKiBDcmVhdGlvbiBmbGFncyAgUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiwgICovCi0JCQkJCU5VTEwsICAgIC8qIEVudmlvcm5tZW50ICovCi0JCQkJCU5VTEwsICAgIC8qIEN1cnJlbnQgZGlyZWN0b3J5ICovCi0JCQkJCSZzaSwJICAgLyogU3RhcnR1cEluZm8gKi8KLQkJCQkJJnBpKTsKLQkJCWlmICghYikKLQkJCXsKLQkJCQlwZXJyb3IoIkNyZWF0ZVByb2Nlc3NmYWlsdXJlOiAiKTsKLQkJCQlleGl0KDEpOwotCQkJfQotCi0JCQkvKiBXZSBkb24ndCBuZWVkIHRoZSB0aHJlYWQgb3IgcHJvY2VzcyBoYW5kbGVzIGFueSBtb3JlOyBsZXQgdGhlbSAqLwotCQkJLyogZ28gYXdheSBvbiB0aGVpciBvd24gdGltZWZyYW1lLiAqLwotCi0JCQlDbG9zZUhhbmRsZShwaS5oVGhyZWFkKTsKLQkJCUNsb3NlSGFuZGxlKHBpLmhQcm9jZXNzKTsKLQotCQkJLyogQW5kIGNsb3NlIHRoZSBzZXJ2ZXJfc29jayBzaW5jZSB0aGUgY2hpbGQgd2lsbCBvd24gaXQuICovCi0KLQkJCWNsb3NlKHNlcnZlcl9zb2NrKTsKLQkJfQotI2Vsc2UKLSAgICAgIHNpZ25hbChTSUdDTEQsIFNJR19JR04pOwotCSAgCi0JICBzd2l0Y2ggKGZvcmsoKSkKLQkgICAgewotCSAgICBjYXNlIC0xOgotCSAgICAgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nICovCi0JICAgICAgZXhpdCgxKTsKLQkgICAgY2FzZSAwOgotCSAgICAgIC8qIHdlIGFyZSB0aGUgY2hpbGQgcHJvY2VzcyAqLwotCSAgICAgIGNsb3NlKHNlcnZlcl9jb250cm9sKTsKLQkgICAgICBwcm9jZXNzX3JlcXVlc3RzKCk7Ci0JICAgICAgZXhpdCgwKTsKLQkgICAgICBicmVhazsKLQkgICAgZGVmYXVsdDoKLQkgICAgICAvKiB3ZSBhcmUgdGhlIHBhcmVudCBwcm9jZXNzICovCi0JICAgICAgY2xvc2Uoc2VydmVyX3NvY2spOwotCSAgICAgIC8qIHdlIHNob3VsZCB0cnkgdG8gInJlYXAiIHNvbWUgb2Ygb3VyIGNoaWxkcmVuLiBvbiBzb21lICovCi0JICAgICAgLyogc3lzdGVtcyB0aGV5IGFyZSBiZWluZyBsZWZ0IGFzIGRlZnVuY3QgcHJvY2Vzc2VzLiB3ZSAqLwotCSAgICAgIC8qIHdpbGwgY2FsbCB3YWl0cGlkLCBsb29raW5nIGZvciBhbnkgY2hpbGQgcHJvY2VzcywgKi8KLQkgICAgICAvKiB3aXRoIHRoZSBXTk9IQU5HIGZlYXR1cmUuIHdoZW4gd2FpdHBpZCByZXR1cm4gYSB6ZXJvLCAqLwotCSAgICAgIC8qIHdlIGhhdmUgcmVhcGVkIGFsbCB0aGUgY2hpbGRyZW4gdGhlcmUgYXJlIHRvIHJlYXAgYXQgKi8KLQkgICAgICAvKiB0aGUgbW9tZW50LCBzbyBpdCBpcyB0aW1lIHRvIG1vdmUgb24uIHJhaiAxMi85NCAqLwotI2lmbmRlZiBET05UX1dBSVQKLSNpZmRlZiBOT19TRVRTSUQKLQkgICAgICAvKiBPbmx5IGNhbGwgIndhaXRwaWQoKSIgaWYgInNldHNpZCgpIiBpcyBub3QgdXNlZC4gKi8KLQkgICAgICB3aGlsZSh3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKSA+IDApIHsgfQotI2VuZGlmIC8qIE5PX1NFVFNJRCAqLwotI2VuZGlmIC8qIERPTlRfV0FJVCAqLwotCSAgICAgIGJyZWFrOwotCSAgICB9Ci0jZW5kaWYgLyogIVdJTjMyICFNUEUgIV9fVk1TICovICAKLQl9IC8qZm9yKi8KLSNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoTVBFKSAmJiAhZGVmaW5lZChfX1ZNUykKLSAgICAgIGJyZWFrOyAvKmNhc2UgMCovCi0gICAgICAKLSAgICBkZWZhdWx0OiAKLSAgICAgIGV4aXQgKDApOwotICAgICAgCi0gICAgfQotI2VuZGlmIC8qICFXSU4zMiAhTVBFICFfX1ZNUyAqLyAgCi19Ci0KLSNpZmRlZiBXSU4zMgotCi0gIC8qIFdpdGggV2luMjAwMywgV2luTlQncyBQT1NJWCBzdWJzeXN0ZW0gaXMgZ29uZSBhbmQgaGVuY2Ugc28gaXMgKi8KLSAgLyogZm9yay4gKi8KLQotICAvKiBCdXQgaG9wZWZ1bGx5IHRoZSBrZXJuZWwgc3VwcG9ydCB3aWxsIGNvbnRpbnVlIHRvIGV4aXN0IGZvciBzb21lICovCi0gIC8qIHRpbWUuICovCi0KLSAgLyogV2UgYXJlIG5vdCBjb3VudGluZyBvbiB0aGUgY2hpbGQgYWRkcmVzcyBzcGFjZSBjb3B5X29uX3dyaXRlICovCi0gIC8qIHN1cHBvcnQsIHNpbmNlIGl0IGlzbid0IGV4cG9zZWQgZXhjZXB0IHRocm91Z2ggdGhlIE5UIG5hdGl2ZSBBUElzICovCi0gIC8qICh3aGljaCBpcyBub3QgcHVibGljKS4gKi8KLQotICAvKiBXZSB3aWxsIHRyeSB0byB1c2UgdGhlIEluaGVyaXRIYW5kbGVzIGZsYWcgaW4gQ3JlYXRlUHJvY2Vzcy4gIEl0ICovCi0gIC8qIGlzIGluIHRoZSBwdWJsaWMgQVBJLCB0aG91Z2ggaXQgaXMgZG9jdW1lbnRlZCBhcyAibXVzdCBiZSBGQUxTRSIuICovCi0KLSAgLyogU28gd2hlcmUgd2Ugd291bGQgaGF2ZSBmb3JrZWQsIHdlIHdpbGwgbm93IGNyZWF0ZSBhIG5ldyBwcm9jZXNzLiAqLwotICAvKiBJIGhhdmUgYWRkZWQgYSBzZXQgb2YgY29tbWFuZCBsaW5lIHN3aXRjaGVzIHRvIHNwZWNpZnkgYSBsaXN0IG9mICovCi0gIC8qIGhhbmRsZXMgdGhhdCB0aGUgY2hpbGQgc2hvdWxkIGNsb3NlIHNpbmNlIHRoZXkgc2hvdWxkbid0IGhhdmUgKi8KLSAgLyogYmVlbiBpbmhlcml0ZWQgKCItaSMiKSwgYW5kIGEgc2luZ2xlIHN3aXRjaCB0byBzcGVjaWZ5IHRoZSBoYW5kbGUgKi8KLSAgLyogZm9yIHRoZSBzZXJ2ZXJfc29jayAoIkkjIikuICovCi0KLSAgLyogQSBiZXR0ZXIgYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gcmUtd3JpdGUgTmV0UGVyZiB0byBiZSAqLwotICAvKiBtdWx0aS10aHJlYWRlZDsgaS5lLiwgbW92ZSBhbGwgb2YgdGhlIHZhcmlvdXMgTmV0UGVyZiBnbG9iYWwgKi8KLSAgLyogdmFyaWFibGVzIGluIHRvIHRocmVhZCBzcGVjaWZpYyBzdHJ1Y3R1cmVzLiAgQnV0IHRoaXMgaXMgYSBiaWdnZXIgKi8KLSAgLyogZWZmb3J0IHRoYW4gSSB3YW50IHRvIHRhY2tsZSBhdCB0aGlzIHRpbWUuICAoQW5kIEkgZG91YnQgdGhhdCB0aGUgKi8KLSAgLyogSFAtVVggYXV0aG9yIHNlZXMgdmFsdWUgaW4gdGhpcyBlZmZvcnQpLiAqLwotCi0jZW5kaWYKLQotaW50IF9jZGVjbAotbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotCi0gIGludAljOwotICBpbnQgICBub3RfaW5ldGQgPSAwOwotI2lmZGVmIFdJTjMyCi0gIEJPT0wgIGNoaWxkID0gRkFMU0U7Ci0jZW5kaWYKLSAgY2hhciBhcmcxW0JVRlNJWl0sIGFyZzJbQlVGU0laXTsKLSNpZm5kZWYgUEFUSF9NQVgKLSNkZWZpbmUgUEFUSF9NQVggTUFYX1BBVEgKLSNlbmRpZgotICBjaGFyIEZpbGVOYW1lW1BBVEhfTUFYXTsgICAvKiBmb3Igb3BlbmluZyB0aGUgZGVidWcgbG9nIGZpbGUgKi8KLQotICBzdHJ1Y3Qgc29ja2FkZHIgbmFtZTsKLSAgbmV0cGVyZl9zb2NrbGVuX3QgbmFtZWxlbiA9IHNpemVvZihuYW1lKTsKLSAgCi0KLSNpZmRlZiBXSU4zMgotCVdTQURBVEEJd3NhX2RhdGEgOwotCi0JLyogSW5pdGlhbGl6ZSB0aGUgd2luc29jayBsaWIgKCB2ZXJzaW9uIDIuMiApICovCi0JaWYgKCBXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FfZGF0YSkgPT0gU09DS0VUX0VSUk9SICl7Ci0JCXByaW50ZigiV1NBU3RhcnR1cCgpIGZhaWxlZCA6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSkgOwotCQlyZXR1cm4gMSA7Ci0JfQotI2VuZGlmIC8qIFdJTjMyICovCi0KLQkvKiBTYXZlIGF3YXkgdGhlIHByb2dyYW0gbmFtZSAqLwotCXByb2dyYW0gPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4oYXJndlswXSkgKyAxKTsKLQlpZiAocHJvZ3JhbSA9PSBOVUxMKSB7Ci0JCXByaW50ZigibWFsbG9jKCV6dSkgZmFpbGVkIVxuIiwgc3RybGVuKGFyZ3ZbMF0pICsgMSk7Ci0JCXJldHVybiAxIDsKLQl9Ci0Jc3RyY3B5KHByb2dyYW0sIGFyZ3ZbMF0pOwotCi0gIG5ldGxpYl9pbml0KCk7Ci0gIAotICAvKiBTY2FuIHRoZSBjb21tYW5kIGxpbmUgdG8gc2VlIGlmIHdlIGFyZSBzdXBwb3NlZCB0byBzZXQtdXAgb3VyIG93biAqLwotICAvKiBsaXN0ZW4gc29ja2V0IGluc3RlYWQgb2YgcmVseWluZyBvbiBpbmV0ZC4gKi8KLQotICAvKiBmaXJzdCBzZXQgYSBjb3B5IG9mIGluaXRpYWwgdmFsdWVzICovCi0gIHN0cm5jcHkobG9jYWxfaG9zdF9uYW1lLCIwLjAuMC4wIixzaXplb2YobG9jYWxfaG9zdF9uYW1lKSk7Ci0gIGxvY2FsX2FkZHJlc3NfZmFtaWx5ID0gQUZfVU5TUEVDOwotICBzdHJuY3B5KGxpc3Rlbl9wb3J0LFRFU1RfUE9SVCxzaXplb2YobGlzdGVuX3BvcnQpKTsKLQotICB3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgU0VSVkVSX0FSR1MpKSAhPSBFT0YpIHsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICc/JzoKLSAgICBjYXNlICdoJzoKLSAgICAgIHByaW50X25ldHNlcnZlcl91c2FnZSgpOwotICAgICAgZXhpdCgxKTsKLSAgICBjYXNlICdkJzoKLSAgICAgIC8qIHdlIHdhbnQgdG8gc2V0IHRoZSBkZWJ1ZyBmaWxlIG5hbWUgc29tZXRpbWUgKi8KLSAgICAgIGRlYnVnKys7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdMJzoKLSAgICAgIG5vdF9pbmV0ZCA9IDE7Ci0gICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOwotICAgICAgaWYgKGFyZzFbMF0pIHsKLQlzdHJuY3B5KGxvY2FsX2hvc3RfbmFtZSxhcmcxLHNpemVvZihsb2NhbF9ob3N0X25hbWUpKTsKLSAgICAgIH0KLSAgICAgIGlmIChhcmcyWzBdKSB7Ci0JbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBwYXJzZV9hZGRyZXNzX2ZhbWlseShhcmcyKTsKLQkvKiBpZiBvbmx5IHRoZSBhZGRyZXNzIGZhbWlseSB3YXMgc2V0LCB3ZSBtYXkgbmVlZCB0byBzZXQgdGhlCi0JICAgbG9jYWxfaG9zdF9uYW1lIGFjY29yZGluZ2x5LiBzaW5jZSBvdXIgZGVmYXVsdHMgYXJlIElQdjQKLQkgICB0aGlzIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpZiB3ZSBoYXZlIElQdjYgc3VwcG9ydCByYWoKLQkgICAyMDA1LTAyLTA3ICovICAKLSNpZiBkZWZpbmVkIChBRl9JTkVUNikKLQlpZiAoIWFyZzFbMF0pIHsKLQkgIHN0cm5jcHkobG9jYWxfaG9zdF9uYW1lLCI6OjAiLHNpemVvZihsb2NhbF9ob3N0X25hbWUpKTsKLQl9Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ24nOgotICAgICAgc2hlbGxfbnVtX2NwdXMgPSBhdG9pKG9wdGFyZyk7Ci0gICAgICBpZiAoc2hlbGxfbnVtX2NwdXMgPiBNQVhDUFVTKSB7Ci0JZnByaW50ZihzdGRlcnIsCi0JCSJuZXRzZXJ2ZXI6IFRoaXMgdmVyc2lvbiBjYW4gb25seSBzdXBwb3J0ICVkIENQVXMuIFBsZWFzZSIsCi0JCU1BWENQVVMpOwotCWZwcmludGYoc3RkZXJyLAotCQkiICAgICAgICAgICBpbmNyZWFzZSBNQVhDUFVTIGluIG5ldGxpYi5oIGFuZCByZWNvbXBpbGUuXG4iKTsKLQlmZmx1c2goc3RkZXJyKTsKLQlleGl0KDEpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAncCc6Ci0gICAgICAvKiB3ZSB3YW50IHRvIG9wZW4gYSBsaXN0ZW4gc29ja2V0IGF0IGEgKi8KLSAgICAgIC8qIHNwZWNpZmllZCBwb3J0IG51bWJlciAqLwotICAgICAgc3RybmNweShsaXN0ZW5fcG9ydCxvcHRhcmcsc2l6ZW9mKGxpc3Rlbl9wb3J0KSk7Ci0gICAgICBub3RfaW5ldGQgPSAxOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnNCc6Ci0gICAgICBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IEFGX0lORVQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICc2JzoKLSNpZiBkZWZpbmVkKEFGX0lORVQ2KQotICAgICAgbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUNjsKLSAgICAgIHN0cm5jcHkobG9jYWxfaG9zdF9uYW1lLCI6OjAiLHNpemVvZihsb2NhbF9ob3N0X25hbWUpKTsKLSNlbHNlCi0gICAgICBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IEFGX1VOU1BFQzsKLSNlbmRpZgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAndic6Ci0gICAgICAvKiBzYXkgaG93IG11Y2ggdG8gc2F5ICovCi0gICAgICB2ZXJib3NpdHkgPSBhdG9pKG9wdGFyZyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdWJzoKLSAgICAgIHByaW50ZigiTmV0cGVyZiB2ZXJzaW9uICVzXG4iLE5FVFBFUkZfVkVSU0lPTik7Ci0gICAgICBleGl0KDApOwotICAgICAgYnJlYWs7Ci0jaWZkZWYgV0lOMzIKLS8qKyorU0FGICovCi0JY2FzZSAnSSc6Ci0JCWNoaWxkID0gVFJVRTsKLQkJLyogVGhpcyBpcyB0aGUgaGFuZGxlIHdlIGV4cGVjdCB0byBpbmhlcml0LiAqLwotCQkvKisqK1NBRiBzZXJ2ZXJfc29jayA9IChIQU5ETEUpYXRvaShvcHRhcmcpOyAqLwotCQlicmVhazsKLQljYXNlICdpJzoKLQkJLyogVGhpcyBpcyBhIGhhbmRsZSB3ZSBzaG91bGQgTk9UIGluaGVyaXQuICovCi0JCS8qKyorU0FGIENsb3NlSGFuZGxlKChIQU5ETEUpYXRvaShvcHRhcmcpKTsgKi8KLQkJYnJlYWs7Ci0jZW5kaWYKLQotICAgIH0KLSAgfQotCi0gIC8qICsqK1NBRiBJIG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGZpbmQgaW5oZXJpdGVkIGhhbmRsZXMgSSBzaG91bGQgY2xvc2UhICovCi0gIC8qICsqK1NBRiBVc2UgRHVwbGljYXRlSGFuZGxlIHRvIGZvcmNlIGluaGVyaXRhYmxlIGF0dHJpYnV0ZSAob3IgcmVzZXQgaXQpPyAqLwotCi0vKiAgdW5saW5rKERFQlVHX0xPR19GSUxFKTsgKi8KLQotICBzdHJjcHkoRmlsZU5hbWUsIERFQlVHX0xPR19GSUxFKTsKLSAgICAKLSNpZm5kZWYgV0lOMzIKLSAgc25wcmludGYoJkZpbGVOYW1lW3N0cmxlbihGaWxlTmFtZSldLCBzaXplb2YoRmlsZU5hbWUpIC0gc3RybGVuKEZpbGVOYW1lKSwgIl8lZCIsIGdldHBpZCgpKTsKLSAgaWYgKCh3aGVyZSA9IGZvcGVuKEZpbGVOYW1lLCAidyIpKSA9PSBOVUxMKSB7Ci0gICAgcGVycm9yKCJuZXRzZXJ2ZXI6IGRlYnVnIGZpbGUiKTsKLSAgICBleGl0KDEpOwotICB9Ci0jZWxzZQotICB7Ci0gICAgCi0gICAgaWYgKGNoaWxkKSB7Ci0gICAgICBzbnByaW50ZigmRmlsZU5hbWVbc3RybGVuKEZpbGVOYW1lKV0sIHNpemVvZihGaWxlTmFtZSkgLSBzdHJsZW4oRmlsZU5hbWUpLCAiXyV4IiwgZ2V0cGlkKCkpOwotICAgIH0KLSAgICAKLSAgICAvKiBIb3BlZnVsbHksIGJ5IGNsb3Npbmcgc3Rkb3V0ICYgc3RkZXJyLCB0aGUgc3Vic2VxdWVudAotICAgICAgIGZvcGVuIGNhbGxzIHdpbGwgZ2V0IG1hcHBlZCB0byB0aGUgY29ycmVjdCBzdGQgaGFuZGxlcy4gKi8KLSAgICBmY2xvc2Uoc3Rkb3V0KTsKLSAgICAKLSAgICBpZiAoKHdoZXJlID0gZm9wZW4oRmlsZU5hbWUsICJ3IikpID09IE5VTEwpIHsKLSAgICAgIHBlcnJvcigibmV0c2VydmVyOiBmb3BlbiBvZiBkZWJ1ZyBmaWxlIGFzIG5ldyBzdGRvdXQgZmFpbGVkISIpOwotICAgICAgZXhpdCgxKTsKLSAgICB9Ci0gICAgCi0gICAgZmNsb3NlKHN0ZGVycik7Ci0gICAgCi0gICAgaWYgKCh3aGVyZSA9IGZvcGVuKEZpbGVOYW1lLCAidyIpKSA9PSBOVUxMKSB7Ci0gICAgICBmcHJpbnRmKHN0ZG91dCwgImZvcGVuIG9mIGRlYnVnIGZpbGUgYXMgbmV3IHN0ZGVyciBmYWlsZWQhXG4iKTsKLSAgICAgIGV4aXQoMSk7Ci0gICAgfQotICB9Ci0jZW5kaWYKLSAKLSNpZm5kZWYgV0lOMzIgCi0gIGNobW9kKERFQlVHX0xPR19GSUxFLDA2NDQpOwotI2VuZGlmCi0gIAotI2lmIFdJTjMyCi0gIGlmIChjaGlsZCkgewotCSAgc2VydmVyX3NvY2sgPSAoU09DS0VUKUdldFN0ZEhhbmRsZShTVERfSU5QVVRfSEFORExFKTsKLSAgfQotI2VuZGlmCi0KLSAgLyogaWYgd2UgYXJlIG5vdCBhIGNoaWxkIG9mIGFuIGluZXRkIG9yIHRoZSBsaWtlLCB0aGVuIHdlIHNob3VsZAotICAgb3BlbiBhIHNvY2tldCBhbmQgaGFuZyBsaXN0ZW5zIG9mZiBvZiBpdC4gb3RoZXJ3aXNlLCB3ZSBzaG91bGQgZ28KLSAgIHN0cmFpZ2h0IGludG8gcHJvY2Vzc2luZyByZXF1ZXN0cy4gdGhlIGRvX2xpc3RlbigpIHJvdXRpbmUgd2lsbCBzaXQKLSAgIGluIGFuIGluZmluaXRlIGxvb3AgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIGFuZCBmb3JraW5nIGNoaWxkCi0gICBwcm9jZXNzZXMuIHRoZSBjaGlsZCBwcm9jZXNzZXMgd2lsbCBjYWxsIHByb2Nlc3NfcmVxdWVzdHMgKi8KLSAgCi0gIC8qIElmIGZkIDAgaXMgbm90IGEgc29ja2V0IHRoZW4gYXNzdW1lIHdlJ3JlIG5vdCBiZWluZyBjYWxsZWQgKi8KLSAgLyogZnJvbSBpbmV0ZCBhbmQgc3RhcnQgc2VydmVyIHNvY2tldCBvbiB0aGUgZGVmYXVsdCBwb3J0LiAqLwotICAvKiB0aGlzIGVuaGFuY2VtZW50IGNvbWVzIGZyb20gdndlbGNoQG5jc2EudWl1Yy5lZHUgKFZvbiBXZWxjaCkgKi8KLSAgaWYgKG5vdF9pbmV0ZCkgewotICAgIC8qIHRoZSB1c2VyIHNwZWNpZmllZCBhIHBvcnQgbnVtYmVyIG9uIHRoZSBjb21tYW5kIGxpbmUgKi8KLSAgICBzZXRfdXBfc2VydmVyKGxvY2FsX2hvc3RfbmFtZSxsaXN0ZW5fcG9ydCxsb2NhbF9hZGRyZXNzX2ZhbWlseSk7Ci0gIH0KLSNpZmRlZiBXSU4zMgotICAvKiBPSywgd2l0aCBXaW4yMDAzIFdpbk5UJ3MgUE9TSVggc3Vic3lzdGVtIGlzIGdvbmUsIGFuZCBoZW5jZSBzbyBpcyAqLwotICAvKiBmb3JrLiAgQnV0IGhvcGVmdWxseSB0aGUga2VybmVsIHN1cHBvcnQgd2lsbCBjb250aW51ZSB0byBleGlzdCAqLwotICAvKiBmb3Igc29tZSB0aW1lLiAgV2UgYXJlIG5vdCBjb3VudGluZyBvbiB0aGUgYWRkcmVzcyBzcGFjZSAqLwotICAvKiBjb3B5X29uX3dyaXRlIHN1cHBvcnQsIHNpbmNlIGl0IGlzbid0IGV4cG9zZWQgZXhjZXB0IHRocm91Z2ggdGhlICovCi0gIC8qIE5UIG5hdGl2ZSBBUElzICh3aGljaCBhcmUgbm90IHB1YmxpYykuICBXZSB3aWxsIHRyeSB0byB1c2UgdGhlICovCi0gIC8qIEluaGVyaXRIYW5kbGVzIGZsYWcgaW4gQ3JlYXRlUHJvY2VzcyB0aG91Z2ggc2luY2UgdGhpcyBpcyBwdWJsaWMgKi8KLSAgLyogYW5kIGlzIHVzZWQgZm9yIG1vcmUgdGhhbiBqdXN0IFBPU0lYIHNvIGhvcGVmdWxseSBpdCB3b24ndCBnbyAqLwotICAvKiBhd2F5LiAqLwotICBlbHNlIGlmIChUUlVFKSB7Ci0gICAgaWYgKGNoaWxkKSB7Ci0gICAgICBwcm9jZXNzX3JlcXVlc3RzKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN0cm5jcHkobGlzdGVuX3BvcnQsVEVTVF9QT1JULHNpemVvZihsaXN0ZW5fcG9ydCkpOwotICAgICAgc2V0X3VwX3NlcnZlcihsb2NhbF9ob3N0X25hbWUsbGlzdGVuX3BvcnQsbG9jYWxfYWRkcmVzc19mYW1pbHkpOwotICAgIH0KLSAgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoX19WTVMpCi0gIGVsc2UgaWYgKGdldHNvY2tuYW1lKDAsICZuYW1lLCAmbmFtZWxlbikgPT0gU09DS0VUX0VSUk9SKSB7Ci0gICAgLyogd2UgbWF5IG5vdCBiZSBhIGNoaWxkIG9mIGluZXRkICovCi0gICAgaWYgKGVycm5vID09IEVOT1RTT0NLKSB7Ci0gICAgICBzdHJuY3B5KGxpc3Rlbl9wb3J0LFRFU1RfUE9SVCxzaXplb2YobGlzdGVuX3BvcnQpKTsKLSAgICAgIHNldF91cF9zZXJ2ZXIobG9jYWxfaG9zdF9uYW1lLGxpc3Rlbl9wb3J0LGxvY2FsX2FkZHJlc3NfZmFtaWx5KTsKLSAgICB9Ci0gIH0KLSNlbmRpZiAvKiAhZGVmaW5lZChfX1ZNUykgKi8KLSAgZWxzZSB7Ci0gICAgLyogd2UgYXJlIHByb2JhYmx5IGEgY2hpbGQgb2YgaW5ldGQsIG9yIGFyZSBiZWluZyBpbnZva2VkIHZpYSB0aGUKLSAgICAgICBWTVMgYXV4aWxsaWFybHkgc2VydmVyIG1lY2hhbmlzbSAqLwotI2lmICFkZWZpbmVkKF9fVk1TKQotICAgIHNlcnZlcl9zb2NrID0gMDsKLSNlbHNlCi0gICAgaWYgKCAoc2VydmVyX3NvY2sgPSBzb2NrZXQoVENQSVAkQ19BVVhTLCBTT0NLX1NUUkVBTSwgMCkpID09IElOVkFMSURfU09DS0VUICkgCi0gICAgeyAKLSAgICAgIHBlcnJvcigiRmFpbGVkIHRvIGdyYWIgYXV4IHNlcnZlciBzb2NrZXQiICk7IAotICAgICAgZXhpdCgxKTsgCi0gICAgfSAKLSAgCi0jZW5kaWYgLyogIWRlZmluZWQoX19WTVMpICovCi0gICAgcHJvY2Vzc19yZXF1ZXN0cygpOwotICB9Ci0jaWZkZWYgV0lOMzIKLQkvKiBDbGVhbnVwIHRoZSB3aW5zb2NrIGxpYiAqLwotCVdTQUNsZWFudXAoKTsKLSNlbmRpZgotCi0gIHJldHVybigwKTsKLX0KZGlmZiAtLWdpdCBhL25ldHNoLmMgYi9uZXRzaC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWI5NDNiLi4wMDAwMDAwCi0tLSBhL25ldHNoLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAyICswLDAgQEAKLSNpbmNsdWRlICJuZXRwZXJmX3ZlcnNpb24uaCIKLQotY2hhcgluZXRzaF9pZFtdPSJcCi1AKCMpbmV0c2guYyAoYykgQ29weXJpZ2h0IDE5OTMtMjAwNyBIZXdsZXR0LVBhY2thcmQgQ29tcGFueS4gVmVyc2lvbiAyLjQuM3ByZSI7Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgkJCQkJCQkJKi8KLS8qCUdsb2JhbCBpbmNsdWRlIGZpbGVzCQkJCQkqLwotLyoJCQkJCQkJCSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZuZGVmIFdJTjMyCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaWZuZGVmIF9fVk1TCi0jaW5jbHVkZSA8c3lzL2lwYy5oPgotI2VuZGlmIC8qIF9fVk1TICovCi0jZW5kaWYgLyogV0lOMzIgKi8KLSNpbmNsdWRlIDxmY250bC5oPgotI2lmbmRlZiBXSU4zMgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jZW5kaWYgIC8qICFXSU4zMiAqLwotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KLSAvKiB0aGUgZm9sbG93aW5nIGZvdXIgaW5jbHVkZXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQgPyovCi0jaWZuZGVmIFdJTjMyCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPG5ldGRiLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDx3aW5zb2NrMi5oPgotI2RlZmluZSBuZXRwZXJmX3NvY2tsZW5fdCBzb2NrbGVuX3QKLSNlbmRpZgotCi0jaWZuZGVmIFNUUklOR1MKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlIC8qIFNUUklOR1MgKi8KLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYgLyogU1RSSU5HUyAqLwotCi0jaWZkZWYgV0lOMzIKLWV4dGVybglpbnQJZ2V0b3B0KGludCAsIGNoYXIgKiosIGNoYXIgKikgOwotI2Vsc2UKLWRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7Ci0jZW5kaWYgLyogV0lOMzIgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgICAgICAgIExvY2FsIEluY2x1ZGUgRmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2RlZmluZSAgTkVUU0gKLSNpbmNsdWRlICJuZXRzaC5oIgotI2luY2x1ZGUgIm5ldGxpYi5oIgotI2luY2x1ZGUgIm5ldHRlc3RfYnNkLmgiCi0KLSNpZmRlZiBXQU5UX1VOSVgKLSNpbmNsdWRlICJuZXR0ZXN0X3VuaXguaCIKLSNpZm5kZWYgV0lOMzIKLSNpbmNsdWRlICJzeXMvc29ja2V0LmgiCi0jZW5kaWYgIC8qICFXSU4zMiAqLwotI2VuZGlmIC8qIFdBTlRfVU5JWCAqLwotCi0jaWZkZWYgV0FOVF9YVEkKLSNpbmNsdWRlICJuZXR0ZXN0X3h0aS5oIgotI2VuZGlmIC8qIFdBTlRfWFRJICovCi0KLSNpZmRlZiBXQU5UX0RMUEkKLSNpbmNsdWRlICJuZXR0ZXN0X2RscGkuaCIKLSNlbmRpZiAvKiBXQU5UX0RMUEkgKi8KLQotI2lmZGVmIFdBTlRfU0NUUAotI2luY2x1ZGUgIm5ldHRlc3Rfc2N0cC5oIgotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qCQkJCQkJCQkJKi8KLS8qCUdsb2JhbCBjb25zdGFudHMgIGFuZCBtYWNyb3MJCQkJCSovCi0vKgkJCQkJCQkJCSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0gLyogU29tZSBvZiB0aGUgYXJncyB0YWtlIG9wdGlvbmFsIHBhcmFtZXRlcnMuIFNpbmNlIHdlIGFyZSB1c2luZyAqLwotIC8qIGdldG9wdCB0byBwYXJzZSB0aGUgY29tbWFuZCBsaW5lLCB3ZSB3aWxsIHRlbGwgZ2V0b3B0IHRoYXQgdGhleSBkbyAqLwotIC8qIG5vdCB0YWtlIHBhcm1zLCBhbmQgdGhlbiBsb29rIGZvciB0aGVtIG91cnNlbHZlcyAqLwotI2RlZmluZSBHTE9CQUxfQ01EX0xJTkVfQVJHUyAiQTphOmI6QjpDY2REZjpGOkg6aGk6STprOks6bDpMOm46Tk86bzpQOnA6cnQ6VDp2OlZXOnc6NDYiCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgkJCQkJCQkJCSovCi0vKglFeHRlcm4gdmFyaWFibGVzIAkJCQkJCSovCi0vKgkJCQkJCQkJCSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotZXh0ZXJuIGludCBlcnJubzsKLWV4dGVybiBjaGFyICpzeXNfZXJybGlzdFsgXTsKLWV4dGVybiBpbnQgc3lzX25lcnI7Ci0qLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoJCQkJCQkJCQkqLwotLyoJR2xvYmFsIHZhcmlhYmxlcyAJCQkJCQkqLwotLyoJCQkJCQkJCQkqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogc29tZSBuYW1lcyBhbmQgc3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLWNoYXIJKnByb2dyYW07CQkvKiBwcm9ncmFtIGludm9jYXRpb24gbmFtZQkJKi8KLWNoYXIJdXNlcm5hbWVbQlVGU0laXTsJLyogbG9naW4gbmFtZSBvZiB1c2VyCQkJKi8KLWNoYXIJY21kX2ZpbGVbQlVGU0laXTsJLyogbmFtZSBvZiB0aGUgY29tbWFuZHMgZmlsZQkJKi8KLQotLyogc3R1ZmYgdG8gc2F5IHdoZXJlIHRoaXMgdGVzdCBpcyBnb2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLWNoYXIJaG9zdF9uYW1lW0hPU1ROQU1FU0laRV07CS8qIHJlbW90ZSBob3N0IG5hbWUgb3IgaXAgYWRkciAgKi8KLWNoYXIgICAgbG9jYWxfaG9zdF9uYW1lW0hPU1ROQU1FU0laRV07ICAvKiBsb2NhbCBob3N0bmFtZSBvciBpcCAqLwotY2hhciAgICB0ZXN0X25hbWVbQlVGU0laXTsJCS8qIHdoaWNoIHRlc3QgdG8gcnVuIAkJKi8KLWNoYXIJdGVzdF9wb3J0W1BPUlRCVUZTSVpFXTsJCS8qIHdoZXJlIGlzIHRoZSB0ZXN0IHdhaXRpbmcgICAgKi8KLWNoYXIgICAgbG9jYWxfdGVzdF9wb3J0W1BPUlRCVUZTSVpFXTsgICAvKiBmcm9tIHdoZW5jZSB3ZSBzaG91bGQgc3RhcnQgKi8KLWludCAgICAgYWRkcmVzc19mYW1pbHk7ICAgICAgICAgICAgICAgICAvKiB3aGljaCBhZGRyZXNzIGZhbWlseSByZW1vdGUgKi8KLWludCAgICAgbG9jYWxfYWRkcmVzc19mYW1pbHk7ICAgICAgICAgICAvKiB3aGljaCBhZGRyZXNzIGZhbWlseSBsb2NhbCAqLwotCi0vKiB0aGUgc291cmNlIG9mIGRhdGEgZm9yIGZpbGxpbmcgdGhlIGJ1ZmZlcnMgKi8KLWNoYXIgICAgZmlsbF9maWxlW0JVRlNJWl07Ci0KLS8qIG91dHB1dCBjb250cm9sbGluZyB2YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi1pbnQKLSAgZGVidWcsCQkJLyogZGVidWdnaW5nIGxldmVsICovCi0gIHByaW50X2hlYWRlcnMsCQkvKiBkby9kb24ndCBkaXNwbGF5IGhlYWRlcnMgKi8KLSAgdmVyYm9zaXR5OwkJLyogdmVyYm9zaXR5IGxldmVsICovCi0KLS8qIFdoZW4gc3BlY2lmaWVkIHdpdGggLUIsIHRoaXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXQgdGhlIGVuZCBvZiB0aGUgbGluZQotICAgZm9yIG91dHB1dCB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHRlc3QgaGVhZGVyLiAgbW9zdGx5IHRoaXMgaXMKLSAgIHRvIGhlbHAgaWRlbnRpZnkgYSBzcGVjaWZpYyBuZXRwZXJmIHJlc3VsdCB3aGVuIGNvbmN1cnJlbnQgbmV0cGVyZnMKLSAgIGFyZSBydW4uIHJhaiAyMDA2LTAyLTAxICovCi1jaGFyICpyZXN1bHRfYnJhbmQgPSBOVUxMOwotCi0vKiBjcHUgdmFyaWFibGVzICovCi1pbnQKLSAgbG9jYWxfY3B1X3VzYWdlLAkvKiB5b3UgZ3Vlc3NlZCBpdAkJCSovCi0gIHJlbW90ZV9jcHVfdXNhZ2U7CS8qIHN0aWxsIHJpZ2h0ICEJCQkqLwotCi1mbG9hdAkJCSAgICAgICAKLSAgbG9jYWxfY3B1X3JhdGUsCi0gIHJlbW90ZV9jcHVfcmF0ZTsKLQotaW50Ci0gIHNoZWxsX251bV9jcHVzPTE7Ci0KLS8qIHRoZSBlbmQtdGVzdCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMgLSBlaXRoZXIgdHJhbnNhY3Rpb25zLCBieXRlcywgICovCi0vKiBvciB0aW1lLiBkaWZmZXJlbnQgdmFycyB1c2VkIGZvciBjbGFyaXR5IC0gc3BhY2UgaXMgY2hlYXAgOy0pICAgICAgICAqLwotaW50CQotICB0ZXN0X3RpbWUsCQkvKiB0ZXN0IGVuZHMgYnkgdGltZQkJCSovCi0gIHRlc3RfbGVuX3RpY2tzLCAgICAgICAvKiBob3cgbWFueSB0aW1lcyB3aWxsIHRoZSB0aW1lciBnbyBvZmYgYmVmb3JlICovCi0JCQkvKiB0aGUgdGVzdCBpcyBvdmVyPyAqLwotICB0ZXN0X2J5dGVzLAkJLyogdGVzdCBlbmRzIG9uIGJ5dGUgY291bnQJCSovCi0gIHRlc3RfdHJhbnM7CQkvKiB0ZXN0IGVuZHMgb24gdHJhbiBjb3VudAkJKi8KLQotLyogdGhlIGFsaWdubWVudCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMJCQkJKi8KLWludAotICBsb2NhbF9yZWN2X2FsaWduLAkvKiBhbGlnbm1lbnQgZm9yIGxvY2FsIHJlY2VpdmVzCQkqLwotICBsb2NhbF9zZW5kX2FsaWduLAkvKiBhbGlnbm1lbnQgZm9yIGxvY2FsIHNlbmRzCQkqLwotICBsb2NhbF9zZW5kX29mZnNldCA9IDAsCi0gIGxvY2FsX3JlY3Zfb2Zmc2V0ID0gMCwKLSAgcmVtb3RlX3JlY3ZfYWxpZ24sCS8qIGFsaWdubWVudCBmb3IgcmVtb3RlIHJlY2VpdmVzCSovCi0gIHJlbW90ZV9zZW5kX2FsaWduLAkvKiBhbGlnbm1lbnQgZm9yIHJlbW90ZSBzZW5kcwkJKi8KLSAgcmVtb3RlX3NlbmRfb2Zmc2V0ID0gMCwKLSAgcmVtb3RlX3JlY3Zfb2Zmc2V0ID0gMDsKLQotI2lmIGRlZmluZWQoV0FOVF9JTlRFUlZBTFMpIHx8IGRlZmluZWQoV0FOVF9ERU1PKQotaW50Ci0gIGludGVydmFsX3VzZWNzLAotICBpbnRlcnZhbF93YXRlLAotICBpbnRlcnZhbF9idXJzdDsKLQotaW50IGRlbW9fbW9kZTsgICAgICAgICAgICAgICAgICAgIC8qIGFyZSB3ZSBhY3R1YWxseSBpbiBkZW1vIG1vZGU/ICovCi1kb3VibGUgZGVtb19pbnRlcnZhbCA9IDEwMDAwMDAuMDsgLyogd2hhdCBpcyB0aGUgZGVzaXJlZCBpbnRlcnZhbCB0bwotCQkJCSAgICAgZGlzcGxheSBpbnRlcnZhbCByZXN1bHRzLiBkZWZhdWx0Ci0JCQkJICAgICBpcyBvbmUgc2Vjb25kIGluIHVuaXRzIG9mCi0JCQkJICAgICBtaWNyb3NlY29uZHMgKi8KLWRvdWJsZSBkZW1vX3VuaXRzID0gMC4wOyAgICAgICAgICAvKiB3aGF0IGlzIG91ciBjdXJyZW50IGJlc3QgZ3Vlc3MgYXMKLQkJCQkgICAgIHRvIGhvdyBtYW55IHdvcmsgdW5pdHMgbXVzdCBiZQotCQkJCSAgICAgZG9uZSB0byBiZSBuZWFyIHRoZSBkZXNpcmVkCi0JCQkJICAgICByZXBvcnRpbmcgaW50ZXJ2YWw/ICovIAotCi1kb3VibGUgdW5pdHNfdGhpc190aWNrOwotI2VuZGlmCi0KLSNpZmRlZiBESVJUWQotaW50CWxvY19kaXJ0eV9jb3VudDsKLWludAlsb2NfY2xlYW5fY291bnQ7Ci1pbnQJcmVtX2RpcnR5X2NvdW50OwotaW50CXJlbV9jbGVhbl9jb3VudDsKLSNlbmRpZiAvKiBESVJUWSAqLwotCi0gLyogc29tZSBvZiB0aGUgdmFpcmFibGVzIGZvciBjb25maWRlbmNlIGludGVydmFscy4uLiAqLwotCi1pbnQgIGNvbmZpZGVuY2VfbGV2ZWw7Ci1pbnQgIGl0ZXJhdGlvbl9taW47Ci1pbnQgIGl0ZXJhdGlvbl9tYXg7Ci1pbnQgIHJlc3VsdF9jb25maWRlbmNlX29ubHkgPSAwOwotCi1kb3VibGUgaW50ZXJ2YWw7Ci0KLSAvKiBzdHVmZiB0byBjb250cm9sIHRoZSAid2lkdGgiIG9mIHRoZSBidWZmZXIgcmluZ3MgZm9yIHNlbmRpbmcgYW5kICovCi0gLyogcmVjZWl2aW5nIGRhdGEgKi8KLWludAlzZW5kX3dpZHRoOwotaW50ICAgICByZWN2X3dpZHRoOwotCi0vKiBhZGRyZXNzIGZhbWlseSAqLwotaW50CWFmID0gQUZfSU5FVDsKLQotLyogZGlkIHNvbWVvbmUgcmVxdWVzdCBwcm9jZXNzb3IgYWZmaW5pdHk/ICovCi1pbnQgY3B1X2JpbmRpbmdfcmVxdWVzdGVkID0gMDsKLQotLyogYXJlIHdlIG5vdCBlc3RhYmxpc2hpbmcgYSBjb250cm9sIGNvbm5lY3Rpb24/ICovCi1pbnQgbm9fY29udHJvbCA9IDA7Ci0KLWNoYXIgbmV0c2VydmVyX3VzYWdlW10gPSAiXG5cCi1Vc2FnZTogbmV0c2VydmVyIFtvcHRpb25zXSBcblwKLVxuXAotT3B0aW9uczpcblwKLSAgICAtaCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgdGV4dFxuXAotICAgIC1kICAgICAgICAgICAgICAgIEluY3JlYXNlIGRlYnVnZ2luZyBvdXRwdXRcblwKLSAgICAtTCBuYW1lLGZhbWlseSAgICBVc2UgbmFtZSB0byBwaWNrIGxpc3RlbiBhZGRyZXNzIGFuZCBmYW1pbHkgZm9yIGZhbWlseVxuXAotICAgIC1wIHBvcnRudW0gICAgICAgIExpc3RlbiBmb3IgY29ubmVjdCByZXF1ZXN0cyBvbiBwb3J0bnVtLlxuXAotICAgIC00ICAgICAgICAgICAgICAgIERvIElQdjRcblwKLSAgICAtNiAgICAgICAgICAgICAgICBEbyBJUHY2XG5cCi0gICAgLXYgdmVyYm9zaXR5ICAgICAgU3BlY2lmeSB0aGUgdmVyYm9zaXR5IGxldmVsXG5cCi0gICAgLVYgICAgICAgICAgICAgICAgRGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0XG5cCi1cbiI7Ci0KLS8qIG5ldHBlcmZfdXNhZ2UgZG9uZSBhcyB0d28gY29uY2F0ZW5hdGVkIHN0cmluZ3MgdG8gbWFrZSB0aGUgTVMKLSAgIGNvbXBpbGVyIGhhcHB5IHdoZW4gY29tcGlsaW5nIGZvciB4ODZfMzIuICBmaXggZnJvbSBTcGVuY2VyCi0gICBGcmluay4gICovCi0KLWNoYXIgbmV0cGVyZl91c2FnZTFbXSA9ICJcblwKLVVzYWdlOiBuZXRwZXJmIFtnbG9iYWwgb3B0aW9uc10gLS0gW3Rlc3Qgb3B0aW9uc10gXG5cCi1cblwKLUdsb2JhbCBvcHRpb25zOlxuXAotICAgIC1hIHNlbmQscmVjdiAgICAgIFNldCB0aGUgbG9jYWwgc2VuZCxyZWN2IGJ1ZmZlciBhbGlnbm1lbnRcblwKLSAgICAtQSBzZW5kLHJlY3YgICAgICBTZXQgdGhlIHJlbW90ZSBzZW5kLHJlY3YgYnVmZmVyIGFsaWdubWVudFxuXAotICAgIC1CIGJyYW5kc3RyICAgICAgIFNwZWNpZnkgYSBzdHJpbmcgdG8gYmUgZW1pdHRlZCB3aXRoIGJyaWVmIG91dHB1dFxuXAotICAgIC1jIFtjcHVfcmF0ZV0gICAgIFJlcG9ydCBsb2NhbCBDUFUgdXNhZ2VcblwKLSAgICAtQyBbY3B1X3JhdGVdICAgICBSZXBvcnQgcmVtb3RlIENQVSB1c2FnZVxuXAotICAgIC1kICAgICAgICAgICAgICAgIEluY3JlYXNlIGRlYnVnZ2luZyBvdXRwdXRcblwKLSAgICAtRCBbc2Vjcyx1bml0c10gKiBEaXNwbGF5IGludGVyaW0gcmVzdWx0cyBhdCBsZWFzdCBldmVyeSBzZWNzIHNlY29uZHNcblwKLSAgICAgICAgICAgICAgICAgICAgICB1c2luZyB1bml0cyBhcyB0aGUgaW5pdGlhbCBndWVzcyBmb3IgdW5pdHMgcGVyIHNlY29uZFxuXAotICAgIC1mIEd8TXxLfGd8bXxrICAgIFNldCB0aGUgb3V0cHV0IHVuaXRzXG5cCi0gICAgLUYgZmlsbF9maWxlICAgICAgUHJlLWZpbGwgYnVmZmVycyB3aXRoIGRhdGEgZnJvbSBmaWxsX2ZpbGVcblwKLSAgICAtaCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgdGV4dFxuXAotICAgIC1IIG5hbWV8aXAsZmFtICogIFNwZWNpZnkgdGhlIHRhcmdldCBtYWNoaW5lIGFuZC9vciBsb2NhbCBpcCBhbmQgZmFtaWx5XG5cCi0gICAgLWkgbWF4LG1pbiAgICAgICAgU3BlY2lmeSB0aGUgbWF4IGFuZCBtaW4gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgKDE1LDEpXG5cCi0gICAgLUkgbHZsWyxpbnR2bF0gICAgU3BlY2lmeSBjb25maWRlbmNlIGxldmVsICg5NSBvciA5OSkgKDk5KSBcblwKLSAgICAgICAgICAgICAgICAgICAgICBhbmQgY29uZmlkZW5jZSBpbnRlcnZhbCBpbiBwZXJjZW50YWdlICgxMClcblwKLSAgICAtbCB0ZXN0bGVuICAgICAgICBTcGVjaWZ5IHRlc3QgZHVyYXRpb24gKD4wIHNlY3MpICg8MCBieXRlc3x0cmFucylcblwKLSAgICAtTCBuYW1lfGlwLGZhbSAqICBTcGVjaWZ5IHRoZSBsb2NhbCBpcHxuYW1lIGFuZCBhZGRyZXNzIGZhbWlseVxuXAotICAgIC1vIHNlbmQscmVjdiAgICAgIFNldCB0aGUgbG9jYWwgc2VuZCxyZWN2IGJ1ZmZlciBvZmZzZXRzXG5cCi0gICAgLU8gc2VuZCxyZWN2ICAgICAgU2V0IHRoZSByZW1vdGUgc2VuZCxyZWN2IGJ1ZmZlciBvZmZzZXRcblwKLSAgICAtbiBudW1jcHUgICAgICAgICBTZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIGZvciBDUFUgdXRpbFxuXAotICAgIC1OICAgICAgICAgICAgICAgIEVzdGFibGlzaCBubyBjb250cm9sIGNvbm5lY3Rpb24sIGRvICdzZW5kJyBzaWRlIG9ubHlcblwKLSAgICAtcCBwb3J0LGxwb3J0KiAgICBTcGVjaWZ5IG5ldHNlcnZlciBwb3J0IG51bWJlciBhbmQvb3IgbG9jYWwgcG9ydFxuXAotICAgIC1QIDB8MSAgICAgICAgICAgIERvbid0L0RvIGRpc3BsYXkgdGVzdCBoZWFkZXJzXG5cCi0gICAgLXIgICAgICAgICAgICAgICAgQWxsb3cgY29uZmlkZW5jZSB0byBiZSBoaXQgb24gcmVzdWx0IG9ubHlcblwKLSAgICAtdCB0ZXN0bmFtZSAgICAgICBTcGVjaWZ5IHRlc3QgdG8gcGVyZm9ybVxuXAotICAgIC1UIGxjcHUscmNwdSAgICAgIFJlcXVlc3QgbmV0cGVyZi9uZXRzZXJ2ZXIgYmUgYm91bmQgdG8gbG9jYWwvcmVtb3RlIGNwdVxuXAotICAgIC12IHZlcmJvc2l0eSAgICAgIFNwZWNpZnkgdGhlIHZlcmJvc2l0eSBsZXZlbFxuXAotICAgIC1XIHNlbmQscmVjdiAgICAgIFNldCB0aGUgbnVtYmVyIG9mIHNlbmQscmVjdiBidWZmZXJzXG5cCi0gICAgLXYgbGV2ZWwgICAgICAgICAgU2V0IHRoZSB2ZXJib3NpdHkgbGV2ZWwgKGRlZmF1bHQgMSwgbWluIDApXG5cCi0gICAgLVYgICAgICAgICAgICAgICAgRGlzcGxheSB0aGUgbmV0cGVyZiB2ZXJzaW9uIGFuZCBleGl0XG4iOwotCi1jaGFyIG5ldHBlcmZfdXNhZ2UyW10gPSAiXG5cCi1Gb3IgdGhvc2Ugb3B0aW9ucyB0YWtpbmcgdHdvIHBhcm1zLCBhdCBsZWFzdCBvbmUgbXVzdCBiZSBzcGVjaWZpZWQ7XG5cCi1zcGVjaWZ5aW5nIG9uZSB2YWx1ZSB3aXRob3V0IGEgY29tbWEgd2lsbCBzZXQgYm90aCBwYXJtcyB0byB0aGF0XG5cCi12YWx1ZSwgc3BlY2lmeWluZyBhIHZhbHVlIHdpdGggYSBsZWFkaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIHNlY29uZFxuXAotcGFybSwgYSB2YWx1ZSB3aXRoIGEgdHJhaWxpbmcgY29tbWEgd2lsbCBzZXQganVzdCB0aGUgZmlyc3QuIFRvIHNldFxuXAotZWFjaCBwYXJtIHRvIHVuaXF1ZSB2YWx1ZXMsIHNwZWNpZnkgYm90aCBhbmQgc2VwYXJhdGUgdGhlbSB3aXRoIGFcblwKLWNvbW1hLlxuXAotXG4iCi0iKiBGb3IgdGhlc2Ugb3B0aW9ucyB0YWtpbmcgdHdvIHBhcm1zLCBzcGVjaWZ5aW5nIG9uZSB2YWx1ZSB3aXRoIG5vIGNvbW1hXG5cCi13aWxsIG9ubHkgc2V0IHRoZSBmaXJzdCBwYXJtcyBhbmQgd2lsbCBsZWF2ZSB0aGUgc2Vjb25kIGF0IHRoZSBkZWZhdWx0XG5cCi12YWx1ZS4gVG8gc2V0IHRoZSBzZWNvbmQgdmFsdWUgaXQgbXVzdCBiZSBwcmVjZWRlZCB3aXRoIGEgY29tbWEgb3IgYmUgYVxuXAotY29tbWEtc2VwYXJhdGVkIHBhaXIuIFRoaXMgaXMgdG8gcmV0YWluIHByZXZpb3VzIG5ldHBlcmYgYmVoYXZpb3VyLlxuIjsgCi0KLQwKLS8qIFRoaXMgcm91dGluZSB3aWxsIHJldHVybiB0aGUgdHdvIGFyZ3VtZW50cyB0byB0aGUgY2FsbGluZyByb3V0aW5lLiAqLwotLyogSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBub3Qgc3BlY2lmaWVkLCBhbmQgdGhlcmUgaXMgbm8gY29tbWEsICovCi0vKiB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlICovCi0vKiB2YWx1ZSBvZiB0aGUgZmlyc3QuIElmIHRoZXJlIGlzIGEgY29tbWEsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSAqLwotLyogc2Vjb25kIGFyZ3VtZW50IHdpbGwgYmUgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgOy0pICovCi12b2lkCi1icmVha19hcmdzKGNoYXIgKnMsIGNoYXIgKmFyZzEsIGNoYXIgKmFyZzIpCi0KLXsKLSAgY2hhciAqbnM7Ci0gIG5zID0gc3RyY2hyKHMsJywnKTsKLSAgaWYgKG5zKSB7Ci0gICAgLyogdGhlcmUgd2FzIGEgY29tbWEgYXJnMiBzaG91bGQgYmUgdGhlIHNlY29uZCBhcmcqLwotICAgICpucysrID0gJ1wwJzsKLSAgICB3aGlsZSAoKCphcmcyKysgPSAqbnMrKykgIT0gJ1wwJyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgLyogdGhlcmUgd2FzIG5vdCBhIGNvbW1hLCB3ZSBjYW4gdXNlIG5zIGFzIGEgdGVtcCBzICovCi0gICAgLyogYW5kIGFyZzIgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIGFyZzEgKi8KLSAgICBucyA9IHM7Ci0gICAgd2hpbGUgKCgqYXJnMisrID0gKm5zKyspICE9ICdcMCcpOwotICB9OwotICB3aGlsZSAoKCphcmcxKysgPSAqcysrKSAhPSAnXDAnKTsKLX0KLQotLyogYnJlYWtfYXJnc19leHBsaWNpdAotCi0gICB0aGlzIHJvdXRpbmUgaXMgc29tZXdoYXQgbGlrZSBicmVha19hcmdzIGluIHRoYXQgaXQgd2lsbCBzZXBhcmF0ZSBhCi0gICBwYWlyIG9mIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMuICBob3dldmVyLCBpZiB0aGVyZSBpcyBubyBjb21tYSwKLSAgIHRoaXMgdmVyc2lvbiB3aWxsIG5vdCBhc3MtdS1tZSB0aGF0IGFyZzIgc2hvdWxkIGJlIHRoZSBzYW1lIGFzCi0gICBhcmcxLiByYWogMjAwNS0wMi0wNCAqLwotdm9pZAotYnJlYWtfYXJnc19leHBsaWNpdChjaGFyICpzLCBjaGFyICphcmcxLCBjaGFyICphcmcyKQotCi17Ci0gIGNoYXIgKm5zOwotICBucyA9IHN0cmNocihzLCcsJyk7Ci0gIGlmIChucykgewotICAgIC8qIHRoZXJlIHdhcyBhIGNvbW1hIGFyZzIgc2hvdWxkIGJlIHRoZSBzZWNvbmQgYXJnKi8KLSAgICAqbnMrKyA9ICdcMCc7Ci0gICAgd2hpbGUgKCgqYXJnMisrID0gKm5zKyspICE9ICdcMCcpOwotICB9Ci0gIGVsc2UgewotICAgIC8qIHRoZXJlIHdhcyBub3QgYSBjb21tYSwgc28gd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IGFyZzIgaXMgXDAKLSAgICAgICBsZXN0IHNvbWV0aGluZyBiZWNvbWUgY29uZnVzZWQuIHJhaiAyMDA1LTAyLTA0ICovCi0gICAgKmFyZzIgPSAnXDAnOwotICB9OwotICB3aGlsZSAoKCphcmcxKysgPSAqcysrKSAhPSAnXDAnKTsKLQotfQotCi0vKiBnaXZlbiBhIHN0cmluZyB3aXRoIHBvc3NpYmxlIHZhbHVlcyBmb3Igc2V0dGluZyBhbiBhZGRyZXNzIGZhbWlseSwKLSAgIGNvbnZlcnQgdGhhdCBpbnRvIG9uZSBvZiB0aGUgQUZfbXVtYmxlIHZhbHVlcyAtIEFGX0lORVQsIEFGX0lORVQ2LAotICAgQUZfVU5TUEVDIGFzIGFwcm9wcmlhdGUuIHRoZSBmYW1pbHlfc3RyaW5nIGlzIGNvbXBhcmVkIGluIGEKLSAgIGNhc2UtaW5zZW5zaXRpdmUgbWFubmVyICovCi0KLWludAotcGFyc2VfYWRkcmVzc19mYW1pbHkoY2hhciBmYW1pbHlfc3RyaW5nW10pCi17Ci0KLSAgY2hhciB0ZW1wWzEwXTsgIC8qIGdvdHRhIGxvdmUgbWFnaWMgY29uc3RhbnRzIDopICovCi0KLSAgc3RybmNweSh0ZW1wLGZhbWlseV9zdHJpbmcsMTApOwotCi0gIGlmIChkZWJ1ZykgewotICAgIGZwcmludGYod2hlcmUsCi0JICAgICJBdHRlbXB0aW5nIHRvIHBhcnNlIGFkZHJlc3MgZmFtaWx5IGZyb20gJXMgZGVyaXZlZCBmcm9tICVzXG4iLAotCSAgICB0ZW1wLAotCSAgICBmYW1pbHlfc3RyaW5nKTsKLSAgfQotI2lmIGRlZmluZWQoQUZfSU5FVDYpCi0gIGlmIChzdHJzdHIodGVtcCwiNiIpKSB7Ci0gICAgcmV0dXJuKEFGX0lORVQ2KTsKLSAgfQotI2VuZGlmCi0gIGlmIChzdHJzdHIodGVtcCwiaW5ldCIpIHx8Ci0gICAgICBzdHJzdHIodGVtcCwiNCIpKSB7Ci0gICAgcmV0dXJuKEFGX0lORVQpOwotICB9Ci0gIGlmIChzdHJzdHIodGVtcCwidW5zcGVjIikgfHwKLSAgICAgIHN0cnN0cih0ZW1wLCIwIikpIHsKLSAgICByZXR1cm4oQUZfVU5TUEVDKTsKLSAgfQotICBmcHJpbnRmKHdoZXJlLAotCSAgIldBUk5JTkchICVzIG5vdCByZWNvZ25pemVkIGFzIGFuIGFkZHJlc3MgZmFtaWx5LCB1c2luZyBBRl9VTlBTRUNcbiIsCi0JICBmYW1pbHlfc3RyaW5nKTsKLSAgZnByaW50Zih3aGVyZSwKLQkgICJBcmUgeW91IHN1cmUgbmV0cGVyZiB3YXMgY29uZmlndXJlZCBmb3IgdGhhdCBhZGRyZXNzIGZhbWlseT9cbiIpOwotICBmZmx1c2god2hlcmUpOwotICByZXR1cm4oQUZfVU5TUEVDKTsKLX0KLQotDAotdm9pZAotc2V0X2RlZmF1bHRzKCkKLXsKLSAgCi0gIC8qIHN0dWZmIHRvIHNheSB3aGVyZSB0aGlzIHRlc3QgaXMgZ29pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBzdHJjcHkoaG9zdF9uYW1lLCIiKTsJICAgICAgLyogcmVtb3RlIGhvc3QgbmFtZSBvciBpcCBhZGRyICAqLwotICBzdHJjcHkobG9jYWxfaG9zdF9uYW1lLCIiKTsgLyogd2Ugd2FudCBpdCB0byBiZSBJTkFERFJfQU5ZICovCi0gIHN0cmNweSh0ZXN0X25hbWUsIlRDUF9TVFJFQU0iKTsJLyogd2hpY2ggdGVzdCB0byBydW4gCQkqLwotICBzdHJuY3B5KHRlc3RfcG9ydCwiMTI4NjUiLFBPUlRCVUZTSVpFKTsgLyogd2hlcmUgaXMgdGhlIHRlc3Qgd2FpdGluZyAgICAqLwotICBzdHJuY3B5KGxvY2FsX3Rlc3RfcG9ydCwiMCIsUE9SVEJVRlNJWkUpOy8qIElOUE9SVF9BTlkgYXMgaXQgd2VyZSAqLwotICBhZGRyZXNzX2ZhbWlseSA9IEFGX1VOU1BFQzsKLSAgbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBBRl9VTlNQRUM7Ci0KLSAgLyogb3V0cHV0IGNvbnRyb2xsaW5nIHZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBkZWJ1ZwkJCT0gMDsvKiBkZWJ1Z2dpbmcgbGV2ZWwJCQkqLwotICBwcmludF9oZWFkZXJzCQk9IDE7LyogZG8gcHJpbnQgdGVzdCBoZWFkZXJzCQkqLwotICB2ZXJib3NpdHkJCT0gMTsvKiB2ZXJib3NpdHkgbGV2ZWwJCQkqLwotICAvKiBjcHUgdmFyaWFibGVzICovCi0gIGxvY2FsX2NwdV91c2FnZQk9IDA7LyogbWVhc3VyZSBsb2NhbCBjcHUJCSovCi0gIHJlbW90ZV9jcHVfdXNhZ2UJPSAwOy8qIHdoYXQgZG8geW91IHRoaW5rIDstKQkJKi8KLSAgCi0gIGxvY2FsX2NwdV9yYXRlCT0gKGZsb2F0KTAuMDsKLSAgcmVtb3RlX2NwdV9yYXRlCT0gKGZsb2F0KTAuMDsKLSAgCi0gIC8qIHRoZSBlbmQtdGVzdCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMgLSBlaXRoZXIgdHJhbnNhY3Rpb25zLCBieXRlcywgICovCi0gIC8qIG9yIHRpbWUuIGRpZmZlcmVudCB2YXJzIHVzZWQgZm9yIGNsYXJpdHkgLSBzcGFjZSBpcyBjaGVhcCA7LSkgICAgICAgICovCi0gIHRlc3RfdGltZQk9IDEwOwkvKiB0ZXN0IGVuZHMgYnkgdGltZQkJCSovCi0gIHRlc3RfYnl0ZXMJPSAwOwkvKiB0ZXN0IGVuZHMgb24gYnl0ZSBjb3VudAkJKi8KLSAgdGVzdF90cmFucwk9IDA7CS8qIHRlc3QgZW5kcyBvbiB0cmFuIGNvdW50CQkqLwotICAKLSAgLyogdGhlIGFsaWdubWVudCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMJCQkJKi8KLSAgbG9jYWxfcmVjdl9hbGlnbgk9IDg7CS8qIGFsaWdubWVudCBmb3IgbG9jYWwgcmVjZWl2ZXMJKi8KLSAgbG9jYWxfc2VuZF9hbGlnbgk9IDg7CS8qIGFsaWdubWVudCBmb3IgbG9jYWwgc2VuZHMJKi8KLSAgcmVtb3RlX3JlY3ZfYWxpZ24JPSA4OwkvKiBhbGlnbm1lbnQgZm9yIHJlbW90ZSByZWNlaXZlcyovCi0gIHJlbW90ZV9zZW5kX2FsaWduCT0gODsJLyogYWxpZ25tZW50IGZvciByZW1vdGUgc2VuZHMJKi8KLSAgCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMKLSAgLyogcmF0ZSBjb250cm9sbGluZyBzdHVmZiAqLwotICBpbnRlcnZhbF91c2VjcyAgPSAwOwotICBpbnRlcnZhbF93YXRlICAgPSAxOwotICBpbnRlcnZhbF9idXJzdCAgPSAwOwotI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gIAotI2lmZGVmIERJUlRZCi0gIC8qIGRpcnR5IGFuZCBjbGVhbiBjYWNoZSBzdHVmZiAqLwotICBsb2NfZGlydHlfY291bnQgPSAwOwotICBsb2NfY2xlYW5fY291bnQgPSAwOwotICByZW1fZGlydHlfY291bnQgPSAwOwotICByZW1fY2xlYW5fY291bnQgPSAwOwotI2VuZGlmIC8qIERJUlRZICovCi0KLSAvKiBzb21lIG9mIHRoZSB2YWlyYWJsZXMgZm9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLi4uICovCi0KLSAgY29uZmlkZW5jZV9sZXZlbCA9IDk5OwotICBpdGVyYXRpb25fbWluID0gMTsKLSAgaXRlcmF0aW9uX21heCA9IDE7Ci0gIGludGVydmFsID0gMC4wNTsgLyogZml2ZSBwZXJjZW50PyAqLwotCi0gIG5vX2NvbnRyb2wgPSAwOwotICBzdHJjcHkoZmlsbF9maWxlLCIiKTsKLX0KLSAgICAgCi0MCi12b2lkCi1wcmludF9uZXRzZXJ2ZXJfdXNhZ2UoKQotewotICBmd3JpdGUobmV0c2VydmVyX3VzYWdlLCBzaXplb2YoY2hhciksIHN0cmxlbihuZXRzZXJ2ZXJfdXNhZ2UpLCBzdGRlcnIpOwotfQotCi0MCi12b2lkCi1wcmludF9uZXRwZXJmX3VzYWdlKCkKLXsKLSAgZndyaXRlKG5ldHBlcmZfdXNhZ2UxLCBzaXplb2YoY2hhciksIHN0cmxlbihuZXRwZXJmX3VzYWdlMSksICBzdGRlcnIpOwotICBmd3JpdGUobmV0cGVyZl91c2FnZTIsIHNpemVvZihjaGFyKSwgc3RybGVuKG5ldHBlcmZfdXNhZ2UyKSwgIHN0ZGVycik7Ci19Ci0KLXZvaWQKLXNjYW5fY21kX2xpbmUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLSAgZXh0ZXJuIGludAlvcHRpbmQ7ICAgICAgICAgICAvKiBpbmRleCBvZiBmaXJzdCB1bnVzZWQgYXJnIAkqLwotICBleHRlcm4gY2hhcgkqb3B0YXJnOwkgIC8qIHBvaW50ZXIgdG8gb3B0aW9uIHN0cmluZwkqLwotICAKLSAgaW50CQljOwotICAKLSAgY2hhcglhcmcxW0JVRlNJWl0sICAvKiBhcmd1bWVudCBob2xkZXJzCQkqLwotICAgIGFyZzJbQlVGU0laXTsKLSAgCi0gIHByb2dyYW0gPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4oYXJndlswXSkgKyAxKTsKLSAgaWYgKHByb2dyYW0gPT0gTlVMTCkgewotICAgIHByaW50ZigibWFsbG9jKCV6dSkgZmFpbGVkIVxuIiwgc3RybGVuKGFyZ3ZbMF0pICsgMSk7Ci0gICAgZXhpdCgxKTsKLSAgfQotICBzdHJjcHkocHJvZ3JhbSwgYXJndlswXSk7Ci0gIAotICAvKiBHbyB0aHJvdWdoIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgYnJlYWsgdGhlbSAqLwotICAvKiBvdXQuIEZvciB0aG9zZSBvcHRpb25zIHRoYXQgdGFrZSB0d28gcGFybXMsIHNwZWNpZnlpbmcgb25seSAqLwotICAvKiB0aGUgZmlyc3Qgd2lsbCBzZXQgYm90aCB0byB0aGF0IHZhbHVlLiBTcGVjaWZ5aW5nIG9ubHkgdGhlICovCi0gIC8qIHNlY29uZCB3aWxsIGxlYXZlIHRoZSBmaXJzdCB1bnRvdWNoZWQuIFRvIGNoYW5nZSBvbmx5IHRoZSAqLwotICAvKiBmaXJzdCwgdXNlIHRoZSBmb3JtIGZpcnN0LCAoc2VlIHRoZSByb3V0aW5lIGJyZWFrX2FyZ3MuLiAqLwotICAKLSAgd2hpbGUgKChjPSBnZXRvcHQoYXJnYywgYXJndiwgR0xPQkFMX0NNRF9MSU5FX0FSR1MpKSAhPSBFT0YpIHsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICc/JzoJCi0gICAgY2FzZSAnaCc6Ci0gICAgICBwcmludF9uZXRwZXJmX3VzYWdlKCk7Ci0gICAgICBleGl0KDEpOwotICAgIGNhc2UgJ2EnOgotICAgICAgLyogc2V0IGxvY2FsIGFsaWdubWVudHMgKi8KLSAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7Ci0gICAgICBpZiAoYXJnMVswXSkgewotCWxvY2FsX3NlbmRfYWxpZ24gPSBjb252ZXJ0KGFyZzEpOwotICAgICAgfQotICAgICAgaWYgKGFyZzJbMF0pCi0JbG9jYWxfcmVjdl9hbGlnbiA9IGNvbnZlcnQoYXJnMik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdBJzoKLSAgICAgIC8qIHNldCByZW1vdGUgYWxpZ25tZW50cyAqLwotICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKSB7Ci0JcmVtb3RlX3NlbmRfYWxpZ24gPSBjb252ZXJ0KGFyZzEpOwotICAgICAgfQotICAgICAgaWYgKGFyZzJbMF0pCi0JcmVtb3RlX3JlY3ZfYWxpZ24gPSBjb252ZXJ0KGFyZzIpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnYyc6Ci0gICAgICAvKiBtZWFzdXJlIGxvY2FsIGNwdSB1c2FnZSBwbGVhc2UuIHRoZSB1c2VyICovCi0gICAgICAvKiBtYXkgaGF2ZSBzcGVjaWZpZWQgdGhlIGNwdSByYXRlIGFzIGFuICovCi0gICAgICAvKiBvcHRpb25hbCBwYXJtICovCi0gICAgICBpZiAoYXJndltvcHRpbmRdICYmIGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpYXJndltvcHRpbmRdWzBdKSl7Ci0JLyogdGhlcmUgd2FzIGFuIG9wdGlvbmFsIHBhcm0gKi8KLQlsb2NhbF9jcHVfcmF0ZSA9IChmbG9hdClhdG9mKGFyZ3Zbb3B0aW5kXSk7Ci0Jb3B0aW5kKys7Ci0gICAgICB9Ci0gICAgICBsb2NhbF9jcHVfdXNhZ2UrKzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ0MnOgotICAgICAgLyogbWVhc3VyZSByZW1vdGUgY3B1IHVzYWdlIHBsZWFzZSAqLwotICAgICAgaWYgKGFyZ3Zbb3B0aW5kXSAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKWFyZ3Zbb3B0aW5kXVswXSkpewotCS8qIHRoZXJlIHdhcyBhbiBvcHRpb25hbCBwYXJtICovCi0JcmVtb3RlX2NwdV9yYXRlID0gKGZsb2F0KWF0b2YoYXJndltvcHRpbmRdKTsKLQlvcHRpbmQrKzsKLSAgICAgIH0KLSAgICAgIHJlbW90ZV9jcHVfdXNhZ2UrKzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ2QnOgotICAgICAgZGVidWcrKzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ0QnOgotI2lmIChkZWZpbmVkIFdBTlRfREVNTykKLSAgICAgIGRlbW9fbW9kZSsrOwotICAgICAgaWYgKGFyZ3Zbb3B0aW5kXSAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKWFyZ3Zbb3B0aW5kXVswXSkpewotCS8qIHRoZXJlIHdhcyBhbiBvcHRpb25hbCBwYXJtICovCi0JYnJlYWtfYXJnc19leHBsaWNpdChhcmd2W29wdGluZF0sYXJnMSxhcmcyKTsKLQlvcHRpbmQrKzsKLQlpZiAoYXJnMVswXSkgewotCSAgZGVtb19pbnRlcnZhbCA9IGF0b2YoYXJnMSkgKiAxMDAwMDAwLjA7Ci0JfQotCWlmIChhcmcyWzBdKSB7Ci0JICBkZW1vX3VuaXRzID0gY29udmVydChhcmcyKTsKLQl9Ci0gICAgICB9Ci0jZWxzZSAKLSAgICAgIHByaW50ZigiU29ycnksIERlbW8gTW9kZSBub3QgY29uZmlndXJlZCBpbnRvIHRoaXMgbmV0cGVyZi5cbiIpOwotICAgICAgcHJpbnRmKCJwbGVhc2UgY29uc2lkZXIgcmVjb25maWd1cmluZyBuZXRwZXJmIHdpdGhcbiIpOwotICAgICAgcHJpbnRmKCItLWVuYWJsZS1kZW1vPXllcyBhbmQgcmVjb21waWxpbmdcbiIpOwotI2VuZGlmIAotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnZic6Ci0gICAgICAvKiBzZXQgdGhlIHRocnVwdXQgZm9ybWF0dGluZyAqLwotICAgICAgbGliZm10ID0gKm9wdGFyZzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ0YnOgotICAgICAgLyogc2V0IHRoZSBmaWxsX2ZpbGUgdmFyaWFibGUgZm9yIHByZS1maWxsaW5nIGJ1ZmZlcnMgKi8KLSAgICAgIHN0cmNweShmaWxsX2ZpbGUsb3B0YXJnKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ2knOgotICAgICAgLyogc2V0IHRoZSBpdGVyYXRpb25zIG1pbiBhbmQgbWF4IGZvciBjb25maWRlbmNlIGludGVydmFscyAqLwotICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKSB7Ci0JaXRlcmF0aW9uX21heCA9IGNvbnZlcnQoYXJnMSk7Ci0gICAgICB9Ci0gICAgICBpZiAoYXJnMlswXSApIHsKLQlpdGVyYXRpb25fbWluID0gY29udmVydChhcmcyKTsKLSAgICAgIH0KLSAgICAgIC8qIGlmIHRoZSBpdGVyYXRpb25fbWF4IGlzIDwgaXRlcmF0aW9uX21pbiBtYWtlIGl0ZXJhdGlvbl9tYXgKLQkgZXF1YWwgaXRlcmF0aW9uX21pbiAqLwotICAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPCBpdGVyYXRpb25fbWluKSBpdGVyYXRpb25fbWF4ID0gaXRlcmF0aW9uX21pbjsKLSAgICAgIC8qIGxpbWl0IG1pbmltdW0gdG8gMyBpdGVyYXRpb25zICovCi0gICAgICBpZiAoaXRlcmF0aW9uX21heCA8IDMpIGl0ZXJhdGlvbl9tYXggPSAzOwotICAgICAgaWYgKGl0ZXJhdGlvbl9taW4gPCAzKSBpdGVyYXRpb25fbWluID0gMzsKLSAgICAgIC8qIGxpbWl0IG1heGltdW0gdG8gMzAgaXRlcmF0aW9ucyAqLwotICAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPiAzMCkgaXRlcmF0aW9uX21heCA9IDMwOwotICAgICAgaWYgKGl0ZXJhdGlvbl9taW4gPiAzMCkgaXRlcmF0aW9uX21pbiA9IDMwOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnSSc6Ci0gICAgICAvKiBzZXQgdGhlIGNvbmZpZGVuY2UgbGV2ZWwgKDk1IG9yIDk5KSBhbmQgd2lkdGggKi8KLSAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7Ci0gICAgICBpZiAoYXJnMVswXSkgewotCWNvbmZpZGVuY2VfbGV2ZWwgPSBjb252ZXJ0KGFyZzEpOwotICAgICAgfQotICAgICAgaWYoKGNvbmZpZGVuY2VfbGV2ZWwgIT0gOTUpICYmIChjb25maWRlbmNlX2xldmVsICE9IDk5KSl7Ci0JcHJpbnRmKCJPbmx5IDk1JSUgYW5kIDk5JSUgY29uZmlkZW5jZSBsZXZlbCBpcyBzdXBwb3J0ZWRcbiIpOwotCWV4aXQoMSk7Ci0gICAgICB9Ci0gICAgICBpZiAoYXJnMlswXSApIHsKLQlpbnRlcnZhbCA9IChkb3VibGUpIGNvbnZlcnQoYXJnMikvMTAwOwotICAgICAgfQotICAgICAgLyogbWFrZSBzdXJlIHRoYXQgaXRlcmF0aW9uX21pbiBhbmQgaXRlcmF0aW9uX21heCBhcmUgYXQgbGVhc3QKLQkgYXQgYSByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWUuICBpZiBhIC1pIG9wdGlvbiBoYXMgcHJldmlvdXNseQotCSBiZWVuIHBhcnNlZCwgdGhlc2Ugd2lsbCBubyBsb25nZXIgYmUgMSwgc28gd2UgY2FuIGNoZWNrCi0JIGFnYWluc3QgMSAqLyAKLSAgICAgIGlmIChpdGVyYXRpb25fbWluID09IDEpIGl0ZXJhdGlvbl9taW4gPSAzOwotICAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPT0gMSkgaXRlcmF0aW9uX21heCA9IDEwOwotCi0gICAgICBicmVhazsKLSAgICBjYXNlICdrJzoKLSAgICAgIC8qIGxvY2FsIGRpcnR5IGFuZCBjbGVhbiBjb3VudHMgKi8KLSNpZmRlZiBESVJUWQotICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKSB7Ci0JbG9jX2RpcnR5X2NvdW50ID0gY29udmVydChhcmcxKTsKLSAgICAgIH0KLSAgICAgIGlmIChhcmcyWzBdICkgewotCWxvY19jbGVhbl9jb3VudCA9IGNvbnZlcnQoYXJnMik7Ci0gICAgICB9Ci0jZWxzZQotICAgICAgcHJpbnRmKCJJIGRvbid0IGtub3cgaG93IHRvIGdldCBkaXJ0eS5cbiIpOwotI2VuZGlmIC8qIERJUlRZICovCi0gICAgICBicmVhazsKLSAgICBjYXNlICdLJzoKLSAgICAgIC8qIHJlbW90ZSBkaXJ0eSBhbmQgY2xlYW4gY291bnRzICovCi0jaWZkZWYgRElSVFkKLSAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7Ci0gICAgICBpZiAoYXJnMVswXSkgewotCXJlbV9kaXJ0eV9jb3VudCA9IGNvbnZlcnQoYXJnMSk7Ci0gICAgICB9Ci0gICAgICBpZiAoYXJnMlswXSApIHsKLQlyZW1fY2xlYW5fY291bnQgPSBjb252ZXJ0KGFyZzIpOwotICAgICAgfQotI2Vsc2UKLSAgICAgIHByaW50ZigiSSBkb24ndCBrbm93IGhvdyB0byBnZXQgZGlydHkuXG4iKTsKLSNlbmRpZiAvKiBESVJUWSAqLwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnbic6Ci0gICAgICBzaGVsbF9udW1fY3B1cyA9IGF0b2kob3B0YXJnKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ04nOgotICAgICAgbm9fY29udHJvbCA9IDE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdvJzoKLSAgICAgIC8qIHNldCB0aGUgbG9jYWwgb2Zmc2V0cyAqLwotICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKQotCWxvY2FsX3NlbmRfb2Zmc2V0ID0gY29udmVydChhcmcxKTsKLSAgICAgIGlmIChhcmcyWzBdKQotCWxvY2FsX3JlY3Zfb2Zmc2V0ID0gY29udmVydChhcmcyKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ08nOgotICAgICAgLyogc2V0IHRoZSByZW1vdGUgb2Zmc2V0cyAqLwotICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKSAKLQlyZW1vdGVfc2VuZF9vZmZzZXQgPSBjb252ZXJ0KGFyZzEpOwotICAgICAgaWYgKGFyZzJbMF0pCi0JcmVtb3RlX3JlY3Zfb2Zmc2V0ID0gY29udmVydChhcmcyKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1AnOgotICAgICAgLyogdG8gcHJpbnQgb3Igbm90IHRvIHByaW50LCB0aGF0IGlzICovCi0gICAgICAvKiB0aGUgaGVhZGVyIHF1ZXN0aW9uICovCi0gICAgICBwcmludF9oZWFkZXJzID0gY29udmVydChvcHRhcmcpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAncic6Ci0gICAgICAvKiB0aGUgdXNlciB3aXNoZXMgdGhhdCB3ZSBkZWNsYXJlIGNvbmZpZGVuY2Ugd2hlbiBoaXQgb24gdGhlCi0JIHJlc3VsdCBldmVuIGlmIG5vdCB5ZXQgcmVhY2hlZCBvbiBDUFUgdXRpbGl6YXRpb24uICBvbmx5Ci0JIG1lYW5pbmdmdWwgaWYgY3B1IHV0aWwgaXMgZW5hYmxlZCAqLwotICAgICAgcmVzdWx0X2NvbmZpZGVuY2Vfb25seSA9IDE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICd0JzoKLSAgICAgIC8qIHNldCB0aGUgdGVzdCBuYW1lICovCi0gICAgICBzdHJjcHkodGVzdF9uYW1lLG9wdGFyZyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdUJzoKLSAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggbmV0c2VydmVyIG9yIG5ldHBlcmYgKi8KLSAgICAgIC8qIHdpbGwgcnVuICovCi0gICAgICBicmVha19hcmdzKG9wdGFyZyxhcmcxLGFyZzIpOwotICAgICAgaWYgKGFyZzFbMF0pIHsKLQlsb2NhbF9wcm9jX2FmZmluaXR5ID0gY29udmVydChhcmcxKTsKLQliaW5kX3RvX3NwZWNpZmljX3Byb2Nlc3Nvcihsb2NhbF9wcm9jX2FmZmluaXR5LDApOwotICAgICAgfQotICAgICAgaWYgKGFyZzJbMF0pIHsKLQlyZW1vdGVfcHJvY19hZmZpbml0eSA9IGNvbnZlcnQoYXJnMik7Ci0gICAgICB9Ci0gICAgICBjcHVfYmluZGluZ19yZXF1ZXN0ZWQgPSAxOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnVyc6Ci0gICAgICAvKiBzZXQgdGhlICJ3aWR0aCIgb2YgdGhlIHVzZXIgc3BhY2UgZGF0YSBidWZmZXIgcmluZy4gVGhpcyB3aWxsICovCi0gICAgICAvKiBiZSB0aGUgbnVtYmVyIG9mIHNlbmRfc2l6ZSBidWZmZXJzIG1hbGxvYydkIGluIHRoZSB0ZXN0cyAqLyAgCi0gICAgICBicmVha19hcmdzKG9wdGFyZyxhcmcxLGFyZzIpOwotICAgICAgaWYgKGFyZzFbMF0pIAotCXNlbmRfd2lkdGggPSBjb252ZXJ0KGFyZzEpOwotICAgICAgaWYgKGFyZzJbMF0pCi0JcmVjdl93aWR0aCA9IGNvbnZlcnQoYXJnMik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdsJzoKLSAgICAgIC8qIGRldGVybWluZSB0ZXN0IGVuZCBjb25kaXRpb25zICovCi0gICAgICAvKiBhc3N1bWUgYSB0aW1lZCB0ZXN0ICovCi0gICAgICB0ZXN0X3RpbWUgPSBjb252ZXJ0KG9wdGFyZyk7Ci0gICAgICB0ZXN0X2J5dGVzID0gdGVzdF90cmFucyA9IDA7Ci0gICAgICBpZiAodGVzdF90aW1lIDwgMCkgewotCXRlc3RfYnl0ZXMgPSAtMSAqIHRlc3RfdGltZTsKLQl0ZXN0X3RyYW5zID0gdGVzdF9ieXRlczsKLQl0ZXN0X3RpbWUgPSAwOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAndic6Ci0gICAgICAvKiBzYXkgaG93IG11Y2ggdG8gc2F5ICovCi0gICAgICB2ZXJib3NpdHkgPSBjb252ZXJ0KG9wdGFyZyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdwJzoKLSAgICAgIC8qIHNwZWNpZnkgYW4gYWx0ZXJuYXRlIHBvcnQgbnVtYmVyIHdlIHVzZSBicmVha19hcmdzX2V4cGxpY2l0Ci0JIGhlcmUgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cwotCSBnZW5lcmF0aW9ucyBvZiBuZXRwZXJmIHdoZXJlIGhhdmluZyBhIHNpbmdsZSB2YWx1ZSBkaWQgbm90Ci0JIHNldCBib3RoIHJlbW90ZSBfYW5kXyBsb2NhbCBwb3J0IG51bWJlci4gcmFqIDIwMDUtMDItMDQgKi8KLSAgICAgIGJyZWFrX2FyZ3NfZXhwbGljaXQob3B0YXJnLGFyZzEsYXJnMik7Ci0gICAgICBpZiAoYXJnMVswXSkKLQlzdHJuY3B5KHRlc3RfcG9ydCxhcmcxLFBPUlRCVUZTSVpFKTsKLSAgICAgIGlmIChhcmcyWzBdKQotCXN0cm5jcHkobG9jYWxfdGVzdF9wb3J0LGFyZzIsUE9SVEJVRlNJWkUpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnSCc6Ci0gICAgICAvKiBzYXZlLW9mZiB0aGUgaG9zdCBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiwgdXNlCi0JIGJyZWFrX2FyZ3NfZXhwbGljaXQgc2luY2UgcGFzc2luZyBqdXN0IG9uZSB2YWx1ZSBzaG91bGQgbm90Ci0JIHNldCBib3RoICovIAotICAgICAgYnJlYWtfYXJnc19leHBsaWNpdChvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKQotCXN0cm5jcHkoaG9zdF9uYW1lLGFyZzEsc2l6ZW9mKGhvc3RfbmFtZSkpOwotICAgICAgaWYgKGFyZzJbMF0pCi0JYWRkcmVzc19mYW1pbHkgPSBwYXJzZV9hZGRyZXNzX2ZhbWlseShhcmcyKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ0wnOgotICAgICAgLyogc2F2ZS1vZmYgdGhlIGxvY2FsIGNvbnRyb2wgc29ja2V0IGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uIHVzZQotCSBicmVha19hcmdzX2V4cGxpY2l0IHNpbmNlIHBhc3NpbmcganVzdCBvbmUgdmFsdWUgc2hvdWxkIG5vdAotCSBzZXQgYm90aCAqLwotICAgICAgYnJlYWtfYXJnc19leHBsaWNpdChvcHRhcmcsYXJnMSxhcmcyKTsKLSAgICAgIGlmIChhcmcxWzBdKQotCXN0cm5jcHkobG9jYWxfaG9zdF9uYW1lLGFyZzEsc2l6ZW9mKGxvY2FsX2hvc3RfbmFtZSkpOwotICAgICAgaWYgKGFyZzJbMF0pCi0JbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBwYXJzZV9hZGRyZXNzX2ZhbWlseShhcmcyKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ3cnOgotICAgICAgLyogV2Ugd2FudCB0byBzZW5kIHJlcXVlc3RzIGF0IGEgY2VydGFpbiB3YXRlLiAqLwotICAgICAgLyogUmVtZW1iZXIgdGhhdCB0aGVyZSBhcmUgMTAwMDAwMCB1c2VjcyBpbiBhICovCi0gICAgICAvKiBzZWNvbmQsIGFuZCB0aGF0IHRoZSBwYWNrZXQgcmF0ZSBpcyAqLwotICAgICAgLyogZXhwcmVzc2VkIGluIHBhY2tldHMgcGVyIG1pbGxpc2Vjb25kLiAqLwotI2lmZGVmIFdBTlRfSU5URVJWQUxTCi0gICAgICBpbnRlcnZhbF91c2VjcyA9IGNvbnZlcnRfdGltZXNwZWMob3B0YXJnKTsKLSAgICAgIGludGVydmFsX3dhdGUgID0gaW50ZXJ2YWxfdXNlY3MgLyAxMDAwOwotI2Vsc2UKLSAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgIlBhY2tldCByYXRlIGNvbnRyb2wgaXMgbm90IGNvbXBpbGVkIGluLlxuIik7Ci0jZW5kaWYKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ2InOgotICAgICAgLyogd2Ugd2FudCB0byBoYXZlIGEgYnVyc3Qgc28gbWFueSBwYWNrZXRzIHBlciAqLwotICAgICAgLyogaW50ZXJ2YWwuICovCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMKLSAgICAgIGludGVydmFsX2J1cnN0ID0gY29udmVydChvcHRhcmcpOwotI2Vsc2UKLSAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgIlBhY2tldCBidXJzdCBzaXplIGlzIG5vdCBjb21waWxlZCBpbi4gXG4iKTsKLSNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnQic6Ci0gICAgICByZXN1bHRfYnJhbmQgPSBtYWxsb2Moc3RybGVuKG9wdGFyZykrMSk7Ci0gICAgICBpZiAoTlVMTCAhPSByZXN1bHRfYnJhbmQpIHsKLQlzdHJjcHkocmVzdWx0X2JyYW5kLG9wdGFyZyk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLQlmcHJpbnRmKHdoZXJlLAotCQkiVW5hYmxlIHRvIG1hbGxvYyBzcGFjZSBmb3IgcmVzdWx0IGJyYW5kXG4iKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJzQnOgotICAgICAgYWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnNic6Ci0jaWYgZGVmaW5lZChBRl9JTkVUNikKLSAgICAgIGFkZHJlc3NfZmFtaWx5ID0gQUZfSU5FVDY7Ci0gICAgICBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IEFGX0lORVQ2OwotI2Vsc2UKLSAgICAgIHByaW50ZigiVGhpcyBuZXRwZXJmIHdhcyBub3QgY29tcGlsZWQgb24gYW4gSVB2NiBjYXBhYmxlIHN5c3RlbSFcbiIpOwotICAgICAgZXhpdCgtMSk7Ci0jZW5kaWYKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1YnOgotICAgICAgcHJpbnRmKCJOZXRwZXJmIHZlcnNpb24gJXNcbiIsTkVUUEVSRl9WRVJTSU9OKTsKLSAgICAgIGV4aXQoMCk7Ci0gICAgICBicmVhazsKLSAgICB9OwotICB9Ci0gIC8qIG9rLCB3aGF0IHNob3VsZCBvdXIgZGVmYXVsdCBob3N0bmFtZSBhbmQgbG9jYWwgYmluZGluZyBpbmZvIGJlPwotICAgKi8KLSAgaWYgKCdcMCcgPT0gaG9zdF9uYW1lWzBdKSB7Ci0gICAgLyogaG9zdF9uYW1lIHdhcyBub3Qgc2V0ICovCi0gICAgc3dpdGNoIChhZGRyZXNzX2ZhbWlseSkgewotICAgIGNhc2UgQUZfSU5FVDoKLSAgICAgIHN0cmNweShob3N0X25hbWUsImxvY2FsaG9zdCIpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBRl9VTlNQRUM6Ci0gICAgICAvKiB3aGF0IHRvIGRvIGhlcmU/IGNhc2UgaXQgb2ZmIHRoZSBsb2NhbF9hZGRyZXNzX2ZhbWlseSBJCi0JIHN1cHBvc2UgKi8KLSAgICAgIHN3aXRjaCAobG9jYWxfYWRkcmVzc19mYW1pbHkpIHsKLSAgICAgIGNhc2UgQUZfSU5FVDoKLSAgICAgIGNhc2UgQUZfVU5TUEVDOgotCXN0cmNweShob3N0X25hbWUsImxvY2FsaG9zdCIpOwotCWJyZWFrOwotI2lmIGRlZmluZWQoQUZfSU5FVDYpCi0gICAgICBjYXNlIEFGX0lORVQ2OgotCXN0cmNweShob3N0X25hbWUsIjo6MSIpOwotCWJyZWFrOwotI2VuZGlmCi0gICAgICBkZWZhdWx0OgotCXByaW50ZigiTmV0cGVyZiBkb2VzIG5vdCB1bmRlcnN0YW5kICVkIGFzIGFuIGFkZHJlc3MgZmFtaWx5XG4iLAotCSAgICAgICBhZGRyZXNzX2ZhbWlseSk7Ci0JZXhpdCgtMSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsgCi0jaWYgZGVmaW5lZChBRl9JTkVUNikKLSAgICBjYXNlIEFGX0lORVQ2OgotICAgICAgc3RyY3B5KGhvc3RfbmFtZSwiOjoxIik7Ci0gICAgICBicmVhazsKLSNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICBwcmludGYoIk5ldHBlcmYgZG9lcyBub3QgdW5kZXJzdGFuZCAlZCBhcyBhbiBhZGRyZXNzIGZhbWlseVxuIiwKLQkgICAgIGFkZHJlc3NfZmFtaWx5KTsKLSAgICAgIGV4aXQoLTEpOwotICAgIH0KLSAgfQotICAKLSAgLyogbm93LCBoYXZpbmcgZXN0YWJsaXNoZWQgdGhlIG5hbWUgdG8gd2hpY2ggdGhlIGNvbnRyb2wgd2lsbAotICAgICBjb25uZWN0LCBmcm9tIHdoYXQgc2hvdWxkIGl0IGNvbWU/ICovCi0gIGlmICgnXDAnID09IGxvY2FsX2hvc3RfbmFtZVswXSkgewotICAgIHN3aXRjaCAobG9jYWxfYWRkcmVzc19mYW1pbHkpIHsKLSAgICBjYXNlIEFGX0lORVQ6Ci0gICAgICBzdHJjcHkobG9jYWxfaG9zdF9uYW1lLCIwLjAuMC4wIik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEFGX1VOU1BFQzoKLSAgICAgIHN3aXRjaCAoYWRkcmVzc19mYW1pbHkpIHsKLSAgICAgIGNhc2UgQUZfSU5FVDoKLSAgICAgIGNhc2UgQUZfVU5TUEVDOgotCXN0cmNweShsb2NhbF9ob3N0X25hbWUsIjAuMC4wLjAiKTsKLQlicmVhazsKLSNpZiBkZWZpbmVkKEFGX0lORVQ2KQotICAgICAgY2FzZSBBRl9JTkVUNjoKLQlzdHJjcHkobG9jYWxfaG9zdF9uYW1lLCI6OjAiKTsKLQlicmVhazsKLSNlbmRpZgotICAgICAgZGVmYXVsdDoKLQlwcmludGYoIk5ldHBlcmYgZG9lcyBub3QgdW5kZXJzdGFuZCAlZCBhcyBhbiBhZGRyZXNzIGZhbWlseVxuIiwKLQkgICAgICAgYWRkcmVzc19mYW1pbHkpOwotCWV4aXQoLTEpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0jaWYgZGVmaW5lZChBRl9JTkVUNikKLSAgICBjYXNlIEFGX0lORVQ2OgotICAgICAgc3RyY3B5KGxvY2FsX2hvc3RfbmFtZSwiOjowIik7Ci0gICAgICBicmVhazsKLSNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICBwcmludGYoIk5ldHBlcmYgZG9lcyBub3QgdW5kZXJzdGFuZCAlZCBhcyBhbiBhZGRyZXNzIGZhbWlseVxuIiwKLQkgICAgIGFkZHJlc3NfZmFtaWx5KTsKLSAgICAgIGV4aXQoLTEpOwotICAgIH0KLSAgfQotCi0gIC8qIHNvLCBpZiB3ZSBhcmVuJ3QgZXZlbiBnb2luZyB0byBlc3RhYmxpc2ggYSBjb250cm9sIGNvbm5lY3Rpb24gd2UKLSAgICAgc2hvdWxkIHNldCBjZXJ0YWluICJyZW1vdGUiIHNldHRpbmdzIHRvIHJlZmxlY3QgdGhpcywgcmVnYXJkbGVzcwotICAgICBvZiB3aGF0IGVsc2UgbWF5IGhhdmUgYmVlbiBzZXQgb24gdGhlIGNvbW1hbmQgbGluZSAqLwotICBpZiAobm9fY29udHJvbCkgewotICAgIHJlbW90ZV9yZWN2X2FsaWduID0gLTE7Ci0gICAgcmVtb3RlX3NlbmRfYWxpZ24gPSAtMTsKLSAgICByZW1vdGVfc2VuZF9vZmZzZXQgPSAtMTsKLSAgICByZW1vdGVfcmVjdl9vZmZzZXQgPSAtMTsKLSAgICByZW1vdGVfY3B1X3JhdGUgPSAoZmxvYXQpLTEuMDsKLSAgICByZW1vdGVfY3B1X3VzYWdlID0gMDsKLSAgfQotCi0gIC8qIHBhcnNpbmcgdGVzdC1zcGVjaWZpYyBvcHRpb25zIHVzZWQgdG8gYmUgY29uZGl0aW9uYWwgb24gdGhlcmUKLSAgICBiZWluZyBhICItLSIgaW4gdGhlIG9wdGlvbiBzdHJlYW0uICBob3dldmVyLCBzb21lIG9mIHRoZSB0ZXN0cwotICAgIGhhdmUgb3RoZXIgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIGluIHRoZWlyICJzY2FuIiByb3V0aW5lcyBzbyB3ZQotICAgIHdhbnQgdG8gY2FsbCB0aGVtIHJlZ2FyZGxlc3MuIHJhaiAyMDA1LTAyLTA4ICovCi0gICAgaWYgKChzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX1NUUkVBTSIpID09IDApIHx8Ci0jaWZkZWYgSEFWRV9JQ1NDX0VYUwotICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiRVhTX1RDUF9TVFJFQU0iKSA9PSAwKSB8fAotI2VuZGlmIC8qIEhBVkVfSUNTQ19FWFMgKi8gCi0jaWZkZWYgSEFWRV9TRU5ERklMRQotCShzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX1NFTkRGSUxFIikgPT0gMCkgfHwKLSNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCi0JKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfTUFFUlRTIikgPT0gMCkgfHwKLQkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9SUiIpID09IDApIHx8Ci0JKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfQ1JSIikgPT0gMCkgfHwKLQkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9DQyIpID09IDApIHx8Ci0jaWZkZWYgRE9fMTY0NAotCShzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX1RSUiIpID09IDApIHx8Ci0jZW5kaWYgLyogRE9fMTY0NCAqLwotI2lmZGVmIERPX05CUlIKLQkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9UUlIiKSA9PSAwKSB8fAotI2VuZGlmIC8qIERPX05CUlIgKi8KLQkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVEUF9TVFJFQU0iKSA9PSAwKSB8fAotCShzdHJjYXNlY21wKHRlc3RfbmFtZSwiVURQX1JSIikgPT0gMCkpCi0gICAgICB7Ci0Jc2Nhbl9zb2NrZXRzX2FyZ3MoYXJnYywgYXJndik7Ci0gICAgICB9Ci0KLSNpZmRlZiBXQU5UX0RMUEkKLSAgICBlbHNlIGlmICgoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIkRMQ09fUlIiKSA9PSAwKSB8fAotCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJETENMX1JSIikgPT0gMCkgfHwKLQkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiRExDT19TVFJFQU0iKSA9PSAwKSB8fAotCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJETENMX1NUUkVBTSIpID09IDApKQotICAgICAgewotCXNjYW5fZGxwaV9hcmdzKGFyZ2MsIGFyZ3YpOwotICAgICAgfQotI2VuZGlmIC8qIFdBTlRfRExQSSAqLwotCi0jaWZkZWYgV0FOVF9VTklYCi0gICAgZWxzZSBpZiAoKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTVFJFQU1fUlIiKSA9PSAwKSB8fAotCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJER19SUiIpID09IDApIHx8Ci0JICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNUUkVBTV9TVFJFQU0iKSA9PSAwKSB8fAotCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJER19TVFJFQU0iKSA9PSAwKSkKLSAgICAgIHsKLQlzY2FuX3VuaXhfYXJncyhhcmdjLCBhcmd2KTsKLSAgICAgIH0KLSNlbmRpZiAvKiBXQU5UX1VOSVggKi8KLQotI2lmZGVmIFdBTlRfWFRJCi0gICAgZWxzZSBpZiAoKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJYVElfVENQX1JSIikgPT0gMCkgfHwKLQkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiWFRJX1RDUF9TVFJFQU0iKSA9PSAwKSB8fAotCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJYVElfVURQX1JSIikgPT0gMCkgfHwKLQkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiWFRJX1VEUF9TVFJFQU0iKSA9PSAwKSkKLSAgICAgIHsKLQlzY2FuX3h0aV9hcmdzKGFyZ2MsIGFyZ3YpOwotICAgICAgfQotI2VuZGlmIC8qIFdBTlRfWFRJICovCi0KLSNpZmRlZiBXQU5UX1NDVFAKLSAgICBlbHNlIGlmICgoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNDVFBfU1RSRUFNIikgPT0gMCkgfHwKLQkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiU0NUUF9SUiIpID09IDApIHx8Ci0JICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNDVFBfU1RSRUFNX01BTlkiKSA9PSAwKSB8fAotCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTQ1RQX1JSX01BTlkiKSA9PSAwKSkKLSAgICB7Ci0gICAgICBzY2FuX3NjdHBfYXJncyhhcmdjLCBhcmd2KTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmZGVmIFdBTlRfU0RQCi0gICAgZWxzZSBpZigoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNEUF9TVFJFQU0iKSA9PSAwKSB8fAotCSAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNEUF9NQUVSVFMiKSA9PSAwKSB8fAotCSAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNEUF9SUiIpID09IDApKQotICAgICAgewotCXNjYW5fc2RwX2FyZ3MoYXJnYywgYXJndik7Ci0gICAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICAvKiB3aGF0IGlzIG91ciBkZWZhdWx0IHZhbHVlIGZvciB0aGUgb3V0cHV0IHVuaXRzPyAgaWYgdGhlIHRlc3QKLSAgICAgICBuYW1lIGNvbnRhaW5zICJSUiIgb3IgInJyIiBvciAiUnIiIG9yICJyUiIgdGhlbiB0aGUgZGVmYXVsdCBpcwotICAgICAgICd4JyBmb3IgdHJhbnNhY3Rpb25zLiBvdGhlcndpc2UgaXQgaXMgJ20nIGZvciBtZWdhYml0cwotICAgICAgICgxMF42KSAqLwotCi0gICAgaWYgKCc/JyA9PSBsaWJmbXQpIHsKLSAgICAgIC8qIHdlIHVzZSBhIHNlcmllcyBvZiBzdHJzdHIncyBoZXJlIGJlY2F1c2Ugbm90IGV2ZXJ5b25lIGhhcwotCSBzdHJjYXNlc3RyIGFuZCBJIGRvbid0IGZlZWwgbGlrZSB1cCBvciBkb3duc2hpZnRpbmcgdGV4dCAqLwotICAgICAgaWYgKChzdHJzdHIodGVzdF9uYW1lLCJSUiIpKSB8fAotCSAgKHN0cnN0cih0ZXN0X25hbWUsInJyIikpIHx8Ci0JICAoc3Ryc3RyKHRlc3RfbmFtZSwiUnIiKSkgfHwKLQkgIChzdHJzdHIodGVzdF9uYW1lLCJyUiIpKSkgewotCWxpYmZtdCA9ICd4JzsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotCWxpYmZtdCA9ICdtJzsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoJ3gnID09IGxpYmZtdCkgewotICAgICAgLyogbm93LCBhIGZvcm1hdCBvZiAneCcgbWFrZXMgbm8gc2Vuc2UgZm9yIGFueXRoaW5nIG90aGVyIHRoYW4KLQkgYW4gUlIgdGVzdC4gaWYgc29tZW9uZSBoYXMgYmVlbiBzaWxseSBlbm91Z2ggdG8gdHJ5IHRvIHNldAotCSB0aGF0LCB3ZSB3aWxsIHJlc2V0IGl0IHNpbGVudGx5IHRvIGRlZmF1bHQgLSBuYW1lbHkgJ20nICovCi0gICAgICBpZiAoKHN0cnN0cih0ZXN0X25hbWUsIlJSIikgPT0gTlVMTCkgJiYKLQkgIChzdHJzdHIodGVzdF9uYW1lLCJyciIpID09IE5VTEwpICYmCi0JICAoc3Ryc3RyKHRlc3RfbmFtZSwiUnIiKSA9PSBOVUxMKSAmJgotCSAgKHN0cnN0cih0ZXN0X25hbWUsInJSIikgPT0gTlVMTCkpIHsKLQlsaWJmbXQgPSAnbSc7Ci0gICAgICB9Ci0gICAgfQotfQotCi0MCi12b2lkCi1kdW1wX2dsb2JhbHMoKQotewotICBwcmludGYoIlByb2dyYW0gbmFtZTogJXNcbiIsIHByb2dyYW0pOwotICBwcmludGYoIkxvY2FsIHNlbmQgYWxpZ25tZW50OiAlZFxuIixsb2NhbF9zZW5kX2FsaWduKTsKLSAgcHJpbnRmKCJMb2NhbCByZWN2IGFsaWdubWVudDogJWRcbiIsbG9jYWxfcmVjdl9hbGlnbik7Ci0gIHByaW50ZigiUmVtb3RlIHNlbmQgYWxpZ25tZW50OiAlZFxuIixyZW1vdGVfc2VuZF9hbGlnbik7Ci0gIHByaW50ZigiUmVtb3RlIHJlY3YgYWxpZ25tZW50OiAlZFxuIixyZW1vdGVfcmVjdl9hbGlnbik7Ci0gIHByaW50ZigiUmVwb3J0IGxvY2FsIENQVSAlZFxuIixsb2NhbF9jcHVfdXNhZ2UpOwotICBwcmludGYoIlJlcG9ydCByZW1vdGUgQ1BVICVkXG4iLHJlbW90ZV9jcHVfdXNhZ2UpOwotICBwcmludGYoIlZlcmJvc2l0eTogJWRcbiIsdmVyYm9zaXR5KTsKLSAgcHJpbnRmKCJEZWJ1ZzogJWRcbiIsZGVidWcpOwotICBwcmludGYoIlBvcnQ6ICVzXG4iLHRlc3RfcG9ydCk7Ci0gIHByaW50ZigiVGVzdCBuYW1lOiAlc1xuIix0ZXN0X25hbWUpOwotICBwcmludGYoIlRlc3QgYnl0ZXM6ICVkIFRlc3QgdGltZTogJWQgVGVzdCB0cmFuczogJWRcbiIsCi0JIHRlc3RfYnl0ZXMsCi0JIHRlc3RfdGltZSwKLQkgdGVzdF90cmFucyk7Ci0gIHByaW50ZigiSG9zdCBuYW1lOiAlc1xuIixob3N0X25hbWUpOwotICBwcmludGYoIlxuIik7Ci19CmRpZmYgLS1naXQgYS9uZXRzaC5oIGIvbmV0c2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk5ODgzYi4uMDAwMDAwMAotLS0gYS9uZXRzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gICAgICAgIENvcHlyaWdodCAoQykgMTk5MywxOTk1IEhld2xldHQtUGFja2FyZCBDb21wYW55Ci0qLwotCi0vKiBsaWJyYXJpZWQgcGVyZm9ybWFuY2UgaW5jbHVkZSBmaWxlIAkJCQkqLwotLyogdGhlIGRlZmluZSBOT1BFUkZFWFRFUk4gdGVscyB1cyBub3QgdG8gcmUtZGVmaW5lIGFsbCB0aGUgCSovCi0KLS8qIGRlZmluZXMgYW5kIGRlZmF1bHRzICovCi0jZGVmaW5lCQlIT1NUTkFNRVNJWkUgCTI1NQotI2RlZmluZSAgICAgICAgIFBPUlRCVUZTSVpFICAgICAxMAotI2RlZmluZQkJREVGQVVMVF9TSVpFCTMyNzY4Ci0jZGVmaW5lCQlIT1NUX05BTUUJIjEyNy4wLjAuMSIKLSNkZWZpbmUJCVRFU1RfUE9SVAkiMTI4NjUiCi0KLS8qIG91dHB1dCBjb250cm9sbGluZyB2YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIAlERUJVRyAwCQkvKiBkZWJ1Z2dpbmcgbGV2ZWwJCQkqLwotI2RlZmluZSAJVkVSQk9TSVRZIDAJLyogdmVyYm9zaXR5IGxldmVsCQkJKi8KLQotLyogdGhlIGVuZC10ZXN0IGNvbmRpdGlvbnMgZm9yIHRoZSB0ZXN0cyAtIGVpdGhlciB0cmFuc2FjdGlvbnMsIGJ5dGVzLCAgKi8KLS8qIG9yIHRpbWUuIGRpZmZlcmVudCB2YXJzIHVzZWQgZm9yIGNsYXJpdHkgLSBzcGFjZSBpcyBjaGVhcCA7LSkgICAgICAgICovCi0jZGVmaW5lIAlURVNUX1RJTUUgMTAJLyogdGVzdCBlbmRzIGJ5IHRpbWUJCQkqLwotI2RlZmluZSAJVEVTVF9CWVRFUyAwCS8qIHRlc3QgZW5kcyBvbiBieXRlIGNvdW50CQkqLwotI2RlZmluZSAJVEVTVF9UUkFOUyAwCS8qIHRlc3QgZW5kcyBvbiB0cmFuIGNvdW50CQkqLwotCi0vKiB0aGUgYWxpZ25tZW50IGNvbmRpdGlvbnMgZm9yIHRoZSB0ZXN0cwkJCQkqLwotI2RlZmluZSAJTE9DX1JFQ1ZfQUxJR04JNAkvKiBhbGlnbm1lbnQgZm9yIGxvY2FsIHJlY2VpdmVzCSovCi0jZGVmaW5lIAlMT0NfU0VORF9BTElHTgk0CS8qIGFsaWdubWVudCBmb3IgbG9jYWwgc2VuZHMJKi8KLSNkZWZpbmUgCVJFTV9SRUNWX0FMSUdOCTQJLyogYWxpZ25tZW50IGZvciByZW1vdGUgcmVjZWl2ZQkqLwotI2RlZmluZSAJUkVNX1NFTkRfQUxJR04JNAkvKiBhbGlnbm1lbnQgZm9yIHJlbW90ZSBzZW5kcwkqLwotCi0vKiBtaXNjIGRlZmluZXMgZm9yIHRoZSBoZWxsIG9mIGl0CQkJCQkqLwotI2lmbmRlZiBNQVhMT05HCi0jZGVmaW5lIAlNQVhMT05HICAJNDI5NDk2NzI5NVVMCi0jZW5kaWYgLyogTUFYTE9ORyAqLwotCi0jaWZuZGVmIE5FVFNICi1leHRlcm4gY2hhcgkJKnByb2dyYW07CQkvKiBwcm9ncmFtIGludm9jYXRpb24gbmFtZQkJKi8KLQotLyogc3R1ZmYgdG8gc2F5IHdoZXJlIHRoaXMgdGVzdCBpcyBnb2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLWV4dGVybiBjaGFyCWhvc3RfbmFtZVtIT1NUTkFNRVNJWkVdOy8qIHJlbW90ZSBob3N0IG5hbWUgb3IgaXAgYWRkciAgKi8KLWV4dGVybiBjaGFyICAgICBsb2NhbF9ob3N0X25hbWVbSE9TVE5BTUVTSVpFXTsKLWV4dGVybiBjaGFyCXRlc3RfcG9ydFtQT1JUQlVGU0laRV07IC8qIHdoZXJlIGlzIHRoZSB0ZXN0IHdhaXRpbmcgICAgKi8KLWV4dGVybiBjaGFyICAgICBsb2NhbF90ZXN0X3BvcnRbUE9SVEJVRlNJWkVdOwotZXh0ZXJuIGludCAgICAgIGFkZHJlc3NfZmFtaWx5OwotZXh0ZXJuIGludCAgICAgIGxvY2FsX2FkZHJlc3NfZmFtaWx5OwotZXh0ZXJuIGludCAgICAgIHBhcnNlX2FkZHJlc3NfZmFtaWx5KGNoYXIgZmFtaWx5X3N0cmluZ1tdKTsKLWV4dGVybiB2b2lkICAgICBzZXRfZGVmYXVsdHMoKTsKLWV4dGVybiB2b2lkICAgICBzY2FuX2NtZF9saW5lKGludCBhcmdjLCBjaGFyICphcmd2W10pOwotZXh0ZXJuIHZvaWQgICAgIGR1bXBfZ2xvYmFscygpOwotZXh0ZXJuIHZvaWQgICAgIGJyZWFrX2FyZ3MoY2hhciAqcywgY2hhciAqYXJnMSwgY2hhciAqYXJnMik7Ci1leHRlcm4gdm9pZCAgICAgYnJlYWtfYXJnc19leHBsaWNpdChjaGFyICpzLCBjaGFyICphcmcxLCBjaGFyICphcmcyKTsKLWV4dGVybiB2b2lkICAgICBwcmludF9uZXRzZXJ2ZXJfdXNhZ2UoKTsKLQotLyogb3V0cHV0IGNvbnRyb2xsaW5nIHZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLWV4dGVybiBpbnQKLSAgZGVidWcsCQkvKiBkZWJ1Z2dpbmcgbGV2ZWwJCQkqLwotICBwcmludF9oZWFkZXJzLAkvKiBkby9kb24ndCBwcmludCB0ZXN0IGhlYWRlcnMJCSovCi0gIHZlcmJvc2l0eTsJCS8qIHZlcmJvc2l0eSBsZXZlbAkJCSovCi0KLS8qIHRoZSBlbmQtdGVzdCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMgLSBlaXRoZXIgdHJhbnNhY3Rpb25zLCBieXRlcywgICovCi0vKiBvciB0aW1lLiBkaWZmZXJlbnQgdmFycyB1c2VkIGZvciBjbGFyaXR5IC0gc3BhY2UgaXMgY2hlYXAgOy0pICAgICAgICAqLwotZXh0ZXJuIGludAkKLSAgdGVzdF90aW1lLAkJLyogdGVzdCBlbmRzIGJ5IHRpbWUJCQkqLwotICB0ZXN0X2xlbl90aWNrcywKLSAgdGVzdF9ieXRlcywJCS8qIHRlc3QgZW5kcyBvbiBieXRlIGNvdW50CQkqLwotICB0ZXN0X3RyYW5zOwkJLyogdGVzdCBlbmRzIG9uIHRyYW4gY291bnQJCSovCi0KLS8qIHRoZSBhbGlnbm1lbnQgY29uZGl0aW9ucyBmb3IgdGhlIHRlc3RzCQkJCSovCi1leHRlcm4gaW50Ci0gIGxvY2FsX3JlY3ZfYWxpZ24sCS8qIGFsaWdubWVudCBmb3IgbG9jYWwgcmVjZWl2ZXMJCSovCi0gIGxvY2FsX3NlbmRfYWxpZ24sCS8qIGFsaWdubWVudCBmb3IgbG9jYWwgc2VuZHMJCSovCi0gIHJlbW90ZV9yZWN2X2FsaWduLAkvKiBhbGlnbm1lbnQgZm9yIHJlbW90ZSByZWNlaXZlcwkqLwotICByZW1vdGVfc2VuZF9hbGlnbiwJLyogYWxpZ25tZW50IGZvciByZW1vdGUgc2VuZHMJCSovCi0gIGxvY2FsX3NlbmRfb2Zmc2V0LAotICBsb2NhbF9yZWN2X29mZnNldCwKLSAgcmVtb3RlX3NlbmRfb2Zmc2V0LAotICByZW1vdGVfcmVjdl9vZmZzZXQ7Ci0KLSNpZiBkZWZpbmVkKFdBTlRfSU5URVJWQUxTKSB8fCBkZWZpbmVkKFdBTlRfREVNTykKLWV4dGVybglpbnQgICAgICAgICAgaW50ZXJ2YWxfdXNlY3M7Ci1leHRlcm4gIGludCAgICAgICAgICBpbnRlcnZhbF93YXRlOwotZXh0ZXJuCWludAkgICAgIGludGVydmFsX2J1cnN0OwotCi1leHRlcm4gaW50ICAgIGRlbW9fbW9kZTsKLWV4dGVybiBkb3VibGUgZGVtb19pbnRlcnZhbDsKLWV4dGVybiBkb3VibGUgZGVtb191bml0czsKLWV4dGVybiBkb3VibGUgdW5pdHNfdGhpc190aWNrOwotI2VuZGlmIAotCi0jaWZkZWYgRElSVFkKLWV4dGVybiBpbnQJcmVtX2RpcnR5X2NvdW50OwotZXh0ZXJuIGludAlyZW1fY2xlYW5fY291bnQ7Ci1leHRlcm4gaW50CWxvY19kaXJ0eV9jb3VudDsKLWV4dGVybiBpbnQJbG9jX2NsZWFuX2NvdW50OwotI2VuZGlmIC8qIERJUlRZICovCi0KLS8qIHN0dWZmIGZvciBjb25maWRlbmNlIGludGVydmFscyAqLwotCi1leHRlcm4gaW50ICBjb25maWRlbmNlX2xldmVsOwotZXh0ZXJuIGludCAgaXRlcmF0aW9uX21pbjsKLWV4dGVybiBpbnQgIGl0ZXJhdGlvbl9tYXg7Ci1leHRlcm4gaW50ICByZXN1bHRfY29uZmlkZW5jZV9vbmx5OwotZXh0ZXJuIGRvdWJsZSBpbnRlcnZhbDsKLQotZXh0ZXJuIGludCBjcHVfYmluZGluZ19yZXF1ZXN0ZWQ7Ci0KLS8qIHN0dWZmIHRvIGNvbnRyb2xsIHRoZSBidWZmZXJzcGFjZSAid2lkdGgiICovCi1leHRlcm4gaW50CXNlbmRfd2lkdGg7Ci1leHRlcm4gaW50ICAgICAgcmVjdl93aWR0aDsKLQotLyogYWRkcmVzcyBmYW1pbHkgKi8KLWV4dGVybiBpbnQJYWY7Ci0KLS8qIGRpZmZlcmVudCBvcHRpb25zIGZvciBvdGhlciB0aGluZ3MJCQkJCSovCi1leHRlcm4gaW50Ci0gIGxvY2FsX2NwdV91c2FnZSwKLSAgcmVtb3RlX2NwdV91c2FnZTsKLQotZXh0ZXJuIGZsb2F0Ci0gIGxvY2FsX2NwdV9yYXRlLAotICByZW1vdGVfY3B1X3JhdGU7Ci0KLWV4dGVybiBpbnQKLSAgc2hlbGxfbnVtX2NwdXM7Ci0KLWV4dGVybgljaGFyCQotICB0ZXN0X25hbWVbQlVGU0laXTsKLQotZXh0ZXJuIGNoYXIKLSAgZmlsbF9maWxlW0JVRlNJWl07Ci0KLWV4dGVybiBjaGFyICoKLSAgcmVzdWx0X2JyYW5kOwotCi1leHRlcm4gaW50Ci0gIG5vX2NvbnRyb2w7Ci0KLSNpZmRlZiBXQU5UX0RMUEkKLQotZXh0ZXJuIGludAotICBsb2NfcHBhLAotICByZW1fcHBhOwotCi1leHRlcm4gaW50Ci0gIGRscGlfc2FwOwotCi0jZW5kaWYgLyogV0FOVF9ETFBJICovCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbmV0dGVzdF9ic2QuaCBiL25ldHRlc3RfYnNkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0OTEyOTAuLjAwMDAwMDAKLS0tIGEvbmV0dGVzdF9ic2QuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3MSArMCwwIEBACi0vKgotICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTMtMjAwNCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotKi8KLQotIC8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgdGVzdC1zcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgbmV0cGVyZidzIEJTRCAqLwotIC8qIHNvY2tldHMgdGVzdHMgKi8KLQotLyogd2VsbCBib3lzIGFuZCBnaXJscywgc2VlbXMgdGhhdCB3aGlsZSBBRl9JTkVUIGlzICIyIiBhbmQgQUZfVU5TUEVDCi0gICBpcyAiMCIgdGhlIHdvcmxkIG92ZXIsIEFGX0lORVQ2IGlzIGRpZmZlcmVudCB2YWx1ZXMgZGVwZW5kaW5nIG9uCi0gICB0aGUgcGxhdGZvcm0uLi4gZ3Jyci4gIE9uIEhQLVVYIDExaSBpdCBpcyAiMjIiIGFuZCBvbiBMaW51eCAyLjYgaXQKLSAgIGlzICIxMCIgc29vb29vLi4uIHdlIGhhdmUgdG8gZGVmaW5lIG91ciBvd24gc3BhY2UgZm9yIG5ldHBlcmYgdG8KLSAgIGVuYWJsZSB1cyB0byBwYXNzIHZhbHVlcyBhcm91bmQgZnJvbSBtYWNoaW5lIHRvIG1hY2hpbmUuIHJhagotICAgMjAwNS0wMi0wOCAqLwotI2RlZmluZSBORl9VTlNQRUMgMAotI2RlZmluZSBORl9JTkVUICAgNAotI2RlZmluZSBORl9JTkVUNiAgNgotCi1zdHJ1Y3QJdGNwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCB7Ci0gIGludAlzZW5kX2J1Zl9zaXplOwotICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdCAtIHRoZSAqLwotCQkJLyogcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHRoYXQgaXMgKi8gCi0gIGludAlyZWNlaXZlX3NpemU7ICAgLyogaG93IG1hbnkgYnl0ZXMgZG8gd2Ugd2FudCB0byByZWNlaXZlIGF0IG9uZSAqLwotCQkJLyogdGltZT8gKi8gCi0gIGludAlyZWN2X2FsaWdubWVudDsgLyogd2hhdCBpcyB0aGUgYWxpZ25tZW50IG9mIHRoZSByZWNlaXZlICovCi0JCQkvKiBidWZmZXI/ICovIAotICBpbnQJcmVjdl9vZmZzZXQ7ICAgIC8qIGFuZCBhdCB3aGF0IG9mZnNldCBmcm9tIHRoYXQgYWxpZ25tZW50PyAqLyAKLSAgaW50CW5vX2RlbGF5OyAgICAgICAvKiBkbyB3ZSBkaXNhYmxlIHRoZSBuYWdsZSBhbGdvcml0aG0gZm9yIHNlbmQgKi8KLQkJCS8qIGNvYWxlc2Npbmc/ICovIAotICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUgdXRpbGl6YXRpb24gKi8KLQkJCS8qIG1lYXN1cmVkPyAqLyAKLSAgZmxvYXQJY3B1X3JhdGU7CS8qIGRvIHdlIGtub3cgaG93IGZhc3QgdGhlIGNwdSBpcyBhbHJlYWR5PyAqLyAKLSAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCi0gIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIGNvcGllcyBvbiAqLwotCQkJLyogcmVjZWl2ZXM/ICovIAotICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLSAgaW50ICAgZGlydHlfY291bnQ7ICAgIC8qIGhvdyBtYW55IGludGVnZXJzIGluIHRoZSByZWNlaXZlIGJ1ZmZlciAqLwotCQkJLyogc2hvdWxkIGJlIG1hZGUgZGlydHkgYmVmb3JlIGNhbGxpbmcgcmVjdj8gKi8gIAotICBpbnQgICBjbGVhbl9jb3VudDsgICAgLyogaG93IG1hbnkgaW50ZWdlcnMgc2hvdWxkIGJlIHJlYWQgZnJvbSB0aGUgKi8KLQkJCS8qIHJlY3YgYnVmZmVyIGJlZm9yZSBjYWxsaW5nIHJlY3Y/ICovIAotICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAotCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCi0JCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KLSAgaW50ICAgaXBmYW1pbHk7ICAgICAgIC8qIHRoZSBhZGRyZXNzIGZhbWlseSBvZiBpcGFkZHJlc3MgKi8KLX07Ci0KLXN0cnVjdAl0Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCB7Ci0gIGludAlyZWN2X2J1Zl9zaXplOwkvKiBob3cgYmlnIGRvZXMgdGhlIGNsaWVudCB3YW50IGl0CSovCi0gIGludAlyZWNlaXZlX3NpemU7Ci0gIGludAlub19kZWxheTsKLSAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCi0gIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLwotICBpbnQJc2VuZF9idWZfc2l6ZTsKLSAgaW50CWRhdGFfcG9ydF9udW1iZXI7CS8qIGNvbm5lY3QgdG8gbWUgaGVyZQkqLwotICBmbG9hdAljcHVfcmF0ZTsJCS8qIGNvdWxkIHdlIG1lYXN1cmUJKi8KLSAgaW50CXNvX3JjdmF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHJlY2VpdmUgY29waWVzPyAqLyAKLSAgaW50CXNvX3NuZGF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHNlbmQgY29waWVzPyAqLwotfTsKLQotc3RydWN0IHRjcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgewotICBkb3VibGUgICAgICAgICBieXRlc19yZWNlaXZlZDsKLSAgdW5zaWduZWQgaW50CSByZWN2X2NhbGxzOwkKLSAgZmxvYXQJICAgICAgICAgZWxhcHNlZF90aW1lOwkvKiBob3cgbG9uZyB0aGUgdGVzdCByYW4gKi8KLSAgZmxvYXQJICAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLwotICBmbG9hdAkgICAgICAgICBzZXJ2X2RlbTsJLyogLTEgaWYgbm90IG1lYXN1cmVkICovCi0gIGludCAgICAgICAgICAgIGNwdV9tZXRob2Q7ICAgIC8qIGhvdyB3YXMgY3B1IHV0aWwgbWVhc3VyZWQ/ICovCi0gIGludCAgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCi19OwotCi1zdHJ1Y3QJdGNwX21hZXJ0c19yZXF1ZXN0X3N0cnVjdCB7Ci0gIGludAlzZW5kX2J1Zl9zaXplOwotICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdCAtIHRoZSAqLwotCQkJLyogcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHRoYXQgaXMgKi8gCi0gIGludAlzZW5kX3NpemU7ICAgICAgLyogaG93IG1hbnkgYnl0ZXMgZG8gd2Ugd2FudCBuZXRzZXJ2ZXIgdG8gc2VuZAotCQkJICAgYXQgb25lIHRpbWU/ICovCi0gIGludAlzZW5kX2FsaWdubWVudDsgLyogd2hhdCBpcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBzZW5kICovCi0JCQkvKiBidWZmZXI/ICovIAotICBpbnQJc2VuZF9vZmZzZXQ7ICAgIC8qIGFuZCBhdCB3aGF0IG9mZnNldCBmcm9tIHRoYXQgYWxpZ25tZW50PyAqLyAKLSAgaW50CW5vX2RlbGF5OyAgICAgICAvKiBkbyB3ZSBkaXNhYmxlIHRoZSBuYWdsZSBhbGdvcml0aG0gZm9yIHNlbmQgKi8KLQkJCS8qIGNvYWxlc2Npbmc/ICovIAotICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUgdXRpbGl6YXRpb24gKi8KLQkJCS8qIG1lYXN1cmVkPyAqLyAKLSAgZmxvYXQJY3B1X3JhdGU7CS8qIGRvIHdlIGtub3cgaG93IGZhc3QgdGhlIGNwdSBpcyBhbHJlYWR5PyAqLyAKLSAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCi0gIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIGNvcGllcyBvbiAqLwotCQkJLyogcmVjZWl2ZXM/ICovIAotICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLSAgaW50ICAgZGlydHlfY291bnQ7ICAgIC8qIGhvdyBtYW55IGludGVnZXJzIGluIHRoZSBzZW5kIGJ1ZmZlciAqLwotCQkJLyogc2hvdWxkIGJlIG1hZGUgZGlydHkgYmVmb3JlIGNhbGxpbmcgcmVjdj8gKi8gIAotICBpbnQgICBjbGVhbl9jb3VudDsgICAgLyogaG93IG1hbnkgaW50ZWdlcnMgc2hvdWxkIGJlIHJlYWQgZnJvbSB0aGUgKi8KLQkJCS8qIHJlY3YgYnVmZmVyIGJlZm9yZSBjYWxsaW5nIHJlY3Y/ICovIAotICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAotCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCi0JCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KLSAgaW50ICAgaXBmYW1pbHk7Ci19OwotCi1zdHJ1Y3QJdGNwX21hZXJ0c19yZXNwb25zZV9zdHJ1Y3QgewotICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLwotICBpbnQJc2VuZF9zaXplOwotICBpbnQJbm9fZGVsYXk7Ci0gIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLwotICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KLSAgaW50CXNlbmRfYnVmX3NpemU7Ci0gIGludAlkYXRhX3BvcnRfbnVtYmVyOwkvKiBjb25uZWN0IHRvIG1lIGhlcmUJKi8KLSAgZmxvYXQJY3B1X3JhdGU7CQkvKiBjb3VsZCB3ZSBtZWFzdXJlCSovCi0gIGludAlzb19yY3Zhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCByZWNlaXZlIGNvcGllcz8gKi8gCi0gIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLX07Ci0KLXN0cnVjdCB0Y3BfbWFlcnRzX3Jlc3VsdHNfc3RydWN0IHsKLSAgZG91YmxlICAgICAgICAgYnl0ZXNfc2VudDsKLSAgdW5zaWduZWQgaW50CSBzZW5kX2NhbGxzOwkKLSAgZmxvYXQJICAgICAgICAgZWxhcHNlZF90aW1lOwkvKiBob3cgbG9uZyB0aGUgdGVzdCByYW4gKi8KLSAgZmxvYXQJICAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLwotICBmbG9hdAkgICAgICAgICBzZXJ2X2RlbTsJLyogLTEgaWYgbm90IG1lYXN1cmVkICovCi0gIGludCAgICAgICAgICAgIGNwdV9tZXRob2Q7ICAgIC8qIGhvdyB3YXMgY3B1IHV0aWwgbWVhc3VyZWQ/ICovCi0gIGludCAgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCi19OwotCi1zdHJ1Y3QJdGNwX3JyX3JlcXVlc3Rfc3RydWN0IHsKLSAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KLSAgaW50CXNlbmRfYnVmX3NpemU7Ci0gIGludAlyZWN2X2FsaWdubWVudDsKLSAgaW50CXJlY3Zfb2Zmc2V0OwotICBpbnQJc2VuZF9hbGlnbm1lbnQ7Ci0gIGludAlzZW5kX29mZnNldDsKLSAgaW50CXJlcXVlc3Rfc2l6ZTsKLSAgaW50CXJlc3BvbnNlX3NpemU7Ci0gIGludAlub19kZWxheTsKLSAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCi0gIGZsb2F0CWNwdV9yYXRlOwkvKiBkbyB3ZSBrbm93IGhvdyBmYXN0IHRoZSBjcHUgaXM/CSovCi0gIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLwotICBpbnQJc29fcmN2YXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCByZWNlaXZlICovCi0JCQkvKiBjb3BpZXM/ICovIAotICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLSAgaW50ICAgcG9ydDsgICAgICAgICAgIC8qIHRoZSBwb3J0IHRvIHdoaWNoIHRoZSByZWN2IHNpZGUgc2hvdWxkIGJpbmQKLQkJCSAgIHRvIGFsbG93IG5ldHBlcmYgdG8gcnVuIHRocm91Z2ggdGhvc2UgZXZpbAotCQkJICAgZmlyZXdhbGwgdGhpbmdzICovCi0gIGludCAgIGlwZmFtaWx5OwotfTsKLQotc3RydWN0CXRjcF9ycl9yZXNwb25zZV9zdHJ1Y3QgewotICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLwotICBpbnQJbm9fZGVsYXk7Ci0gIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLwotICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KLSAgaW50CXNlbmRfYnVmX3NpemU7Ci0gIGludAlkYXRhX3BvcnRfbnVtYmVyOwkvKiBjb25uZWN0IHRvIG1lIGhlcmUJKi8KLSAgZmxvYXQJY3B1X3JhdGU7CQkvKiBjb3VsZCB3ZSBtZWFzdXJlCSovCi0gIGludAlzb19yY3Zhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCByZWNlaXZlIGNvcGllcz8gKi8KLSAgaW50CXNvX3NuZGF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHNlbmQgY29waWVzPyAqLwotfTsKLQotc3RydWN0IHRjcF9ycl9yZXN1bHRzX3N0cnVjdCB7Ci0gIHVuc2lnbmVkIGludCAgYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCi0gIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLwotICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLwotICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCi0gIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLwotICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KLSAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLwotICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCi19OwotCi1zdHJ1Y3QJdGNwX2Nvbm5fcnJfcmVxdWVzdF9zdHJ1Y3QgewotICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLwotICBpbnQJc2VuZF9idWZfc2l6ZTsKLSAgaW50CXJlY3ZfYWxpZ25tZW50OwotICBpbnQJcmVjdl9vZmZzZXQ7Ci0gIGludAlzZW5kX2FsaWdubWVudDsKLSAgaW50CXNlbmRfb2Zmc2V0OwotICBpbnQJcmVxdWVzdF9zaXplOwotICBpbnQJcmVzcG9uc2Vfc2l6ZTsKLSAgaW50CW5vX2RlbGF5OwotICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KLSAgZmxvYXQJY3B1X3JhdGU7CS8qIGRvIHdlIGtub3cgaG93IGZhc3QgdGhlIGNwdSBpcz8JKi8KLSAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCi0gIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHJlY2VpdmUgKi8KLQkJCS8qIGNvcGllcz8gKi8gCi0gIGludAlzb19zbmRhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHNlbmQgY29waWVzPyAqLwotICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAotCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCi0JCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KLSAgaW50ICAgaXBmYW1pbHk7Ci19OwotCi0KLXN0cnVjdAl0Y3BfY29ubl9ycl9yZXNwb25zZV9zdHJ1Y3QgewotICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLwotICBpbnQJbm9fZGVsYXk7Ci0gIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLwotICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KLSAgaW50CXNlbmRfYnVmX3NpemU7Ci0gIGludAlkYXRhX3BvcnRfbnVtYmVyOwkvKiBjb25uZWN0IHRvIG1lIGhlcmUJKi8KLSAgZmxvYXQJY3B1X3JhdGU7CQkvKiBjb3VsZCB3ZSBtZWFzdXJlCSovCi0gIGludAlzb19yY3Zhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCByZWNlaXZlIGNvcGllcz8gKi8KLSAgaW50CXNvX3NuZGF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHNlbmQgY29waWVzPyAqLwotfTsKLQotc3RydWN0IHRjcF9jb25uX3JyX3Jlc3VsdHNfc3RydWN0IHsKLSAgdW5zaWduZWQgaW50CWJ5dGVzX3JlY2VpdmVkOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLwotICB1bnNpZ25lZCBpbnQJcmVjdl9jYWxsczsJLyogaWdub3JlZCBpbml0aWFsbHkgKi8KLSAgdW5zaWduZWQgaW50CXRyYW5zX3JlY2VpdmVkOwkvKiBub3QgaWdub3JlZCAgKi8KLSAgZmxvYXQJICAgICAgICBlbGFwc2VkX3RpbWU7CS8qIGhvdyBsb25nIHRoZSB0ZXN0IHJhbiAqLwotICBmbG9hdAkgICAgICAgIGNwdV91dGlsOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KLSAgZmxvYXQJICAgICAgICBzZXJ2X2RlbTsJLyogLTEgaWYgbm90IG1lYXN1cmVkICovCi0gIGludCAgICAgICAgICAgY3B1X21ldGhvZDsgICAgLyogaG93IHdhcyBjcHUgdXRpbCBtZWFzdXJlZD8gKi8KLSAgaW50ICAgICAgICAgICBudW1fY3B1czsgICAgICAvKiBob3cgbWFueSBDUFVzIGhhZCB0aGUgcmVtb3RlPyAqLwotfTsKLQotc3RydWN0CXRjcF90cmFuX3JyX3JlcXVlc3Rfc3RydWN0IHsKLSAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KLSAgaW50CXNlbmRfYnVmX3NpemU7Ci0gIGludAlyZWN2X2FsaWdubWVudDsKLSAgaW50CXJlY3Zfb2Zmc2V0OwotICBpbnQJc2VuZF9hbGlnbm1lbnQ7Ci0gIGludAlzZW5kX29mZnNldDsKLSAgaW50CXJlcXVlc3Rfc2l6ZTsKLSAgaW50CXJlc3BvbnNlX3NpemU7Ci0gIGludAlub19kZWxheTsKLSAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCi0gIGZsb2F0CWNwdV9yYXRlOwkvKiBkbyB3ZSBrbm93IGhvdyBmYXN0IHRoZSBjcHUgaXM/CSovCi0gIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLwotICBpbnQJc29fcmN2YXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCByZWNlaXZlICovCi0JCQkvKiBjb3BpZXM/ICovIAotICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLSAgaW50ICAgcG9ydDsgICAgICAgICAgIC8qIHRoZSBwb3J0IHRvIHdoaWNoIHRoZSByZWN2IHNpZGUgc2hvdWxkIGJpbmQKLQkJCSAgIHRvIGFsbG93IG5ldHBlcmYgdG8gcnVuIHRocm91Z2ggdGhvc2UgZXZpbAotCQkJICAgZmlyZXdhbGwgdGhpbmdzICovCi0gIGludCAgIGlwZmFtaWx5OwotfTsKLQotCi1zdHJ1Y3QJdGNwX3RyYW5fcnJfcmVzcG9uc2Vfc3RydWN0IHsKLSAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KLSAgaW50CW5vX2RlbGF5OwotICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KLSAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCi0gIGludAlzZW5kX2J1Zl9zaXplOwotICBpbnQJZGF0YV9wb3J0X251bWJlcjsJLyogY29ubmVjdCB0byBtZSBoZXJlCSovCi0gIGZsb2F0CWNwdV9yYXRlOwkJLyogY291bGQgd2UgbWVhc3VyZQkqLwotICBpbnQJc29fcmN2YXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgcmVjZWl2ZSBjb3BpZXM/ICovCi0gIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLX07Ci0KLXN0cnVjdCB0Y3BfdHJhbl9ycl9yZXN1bHRzX3N0cnVjdCB7Ci0gIHVuc2lnbmVkIGludAlieXRlc19yZWNlaXZlZDsJLyogaWdub3JlZCBpbml0aWFsbHkgKi8KLSAgdW5zaWduZWQgaW50CXJlY3ZfY2FsbHM7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCi0gIHVuc2lnbmVkIGludAl0cmFuc19yZWNlaXZlZDsJLyogbm90IGlnbm9yZWQgICovCi0gIGZsb2F0CSAgICAgICAgZWxhcHNlZF90aW1lOwkvKiBob3cgbG9uZyB0aGUgdGVzdCByYW4gKi8KLSAgZmxvYXQJICAgICAgICBjcHVfdXRpbDsJLyogLTEgaWYgbm90IG1lYXN1cmVkICovCi0gIGZsb2F0CSAgICAgICAgc2Vydl9kZW07CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLwotICBpbnQgICAgICAgICAgIGNwdV9tZXRob2Q7ICAgIC8qIGhvdyB3YXMgY3B1IHV0aWwgbWVhc3VyZWQ/ICovCi0gIGludCAgICAgICAgICAgbnVtX2NwdXM7ICAgICAgLyogaG93IG1hbnkgQ1BVcyBoYWQgdGhlIHJlbW90ZT8gKi8KLQotfTsKLQotc3RydWN0CXVkcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgewotICBpbnQJcmVjdl9idWZfc2l6ZTsKLSAgaW50CW1lc3NhZ2Vfc2l6ZTsKLSAgaW50ICAgcmVjdl9jb25uZWN0ZWQ7Ci0gIGludAlyZWN2X2FsaWdubWVudDsKLSAgaW50CXJlY3Zfb2Zmc2V0OwotICBpbnQJY2hlY2tzdW1fb2ZmOwotICBpbnQJbWVhc3VyZV9jcHU7Ci0gIGZsb2F0CWNwdV9yYXRlOwotICBpbnQJdGVzdF9sZW5ndGg7Ci0gIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHJlY2VpdmUgKi8KLQkJCS8qIGNvcGllcz8gKi8gCi0gIGludAlzb19zbmRhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHNlbmQgY29waWVzPyAqLwotICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAotCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCi0JCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KLSAgaW50ICAgaXBmYW1pbHk7Ci0gIAotfTsKLQotc3RydWN0CXVkcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0IHsKLSAgaW50CXJlY3ZfYnVmX3NpemU7Ci0gIGludAlzZW5kX2J1Zl9zaXplOwotICBpbnQJbWVhc3VyZV9jcHU7Ci0gIGludAl0ZXN0X2xlbmd0aDsKLSAgaW50CWRhdGFfcG9ydF9udW1iZXI7Ci0gIGZsb2F0CWNwdV9yYXRlOwotICBpbnQJc29fcmN2YXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgcmVjZWl2ZSBjb3BpZXM/ICovCi0gIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLX07Ci0KLXN0cnVjdAl1ZHBfc3RyZWFtX3Jlc3VsdHNfc3RydWN0IHsKLSAgdW5zaWduZWQgaW50CW1lc3NhZ2VzX3JlY3ZkOwotICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQ7Ci0gIGZsb2F0CSAgICAgICAgZWxhcHNlZF90aW1lOwotICBmbG9hdAkgICAgICAgIGNwdV91dGlsOwotICBpbnQgICAgICAgICAgIGNwdV9tZXRob2Q7ICAgIC8qIGhvdyB3YXMgY3B1IHV0aWwgbWVhc3VyZWQ/ICovCi0gIGludCAgICAgICAgICAgbnVtX2NwdXM7ICAgICAgLyogaG93IG1hbnkgQ1BVcyBoYWQgdGhlIHJlbW90ZT8gKi8KLX07Ci0KLQotc3RydWN0CXVkcF9ycl9yZXF1ZXN0X3N0cnVjdCB7Ci0gIGludAlyZWN2X2J1Zl9zaXplOwkvKiBob3cgYmlnIGRvZXMgdGhlIGNsaWVudCB3YW50IGl0CSovCi0gIGludAlzZW5kX2J1Zl9zaXplOwotICBpbnQJcmVjdl9hbGlnbm1lbnQ7Ci0gIGludAlyZWN2X29mZnNldDsKLSAgaW50CXNlbmRfYWxpZ25tZW50OwotICBpbnQJc2VuZF9vZmZzZXQ7Ci0gIGludAlyZXF1ZXN0X3NpemU7Ci0gIGludAlyZXNwb25zZV9zaXplOwotICBpbnQJbm9fZGVsYXk7Ci0gIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLwotICBmbG9hdAljcHVfcmF0ZTsJLyogZG8gd2Uga25vdyBob3cgZmFzdCB0aGUgY3B1IGlzPwkqLwotICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KLSAgaW50CXNvX3JjdmF2b2lkOyAgICAvKiBkbyB3ZSB3YW50IHRoZSByZW1vdGUgdG8gYXZvaWQgcmVjZWl2ZSAqLwotCQkJLyogY29waWVzPyAqLyAKLSAgaW50CXNvX3NuZGF2b2lkOyAgICAvKiBkbyB3ZSB3YW50IHRoZSByZW1vdGUgdG8gYXZvaWQgc2VuZCBjb3BpZXM/ICovCi0gIGludCAgIHBvcnQ7ICAgICAgICAgICAvKiB0aGUgcG9ydCB0byB3aGljaCB0aGUgcmVjdiBzaWRlIHNob3VsZCBiaW5kCi0JCQkgICB0byBhbGxvdyBuZXRwZXJmIHRvIHJ1biB0aHJvdWdoIHRob3NlIGV2aWwKLQkJCSAgIGZpcmV3YWxsIHRoaW5ncyAqLwotICBpbnQgICBpcGZhbWlseTsKLX07Ci0KLXN0cnVjdAl1ZHBfcnJfcmVzcG9uc2Vfc3RydWN0IHsKLSAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KLSAgaW50CW5vX2RlbGF5OwotICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KLSAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCi0gIGludAlzZW5kX2J1Zl9zaXplOwotICBpbnQJZGF0YV9wb3J0X251bWJlcjsJLyogY29ubmVjdCB0byBtZSBoZXJlCSovCi0gIGZsb2F0CWNwdV9yYXRlOwkJLyogY291bGQgd2UgbWVhc3VyZQkqLwotICBpbnQJc29fcmN2YXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgcmVjZWl2ZSBjb3BpZXM/ICovCi0gIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLX07Ci0KLXN0cnVjdCB1ZHBfcnJfcmVzdWx0c19zdHJ1Y3QgewotICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCi0gIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLwotICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLwotICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCi0gIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLwotICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KLSAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLwotICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCi19OwotCi1zdHJ1Y3QJdGNwX2NjX3JlcXVlc3Rfc3RydWN0IHsKLSAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KLSAgaW50CXNlbmRfYnVmX3NpemU7Ci0gIGludAlyZWN2X2FsaWdubWVudDsKLSAgaW50CXJlY3Zfb2Zmc2V0OwotICBpbnQJc2VuZF9hbGlnbm1lbnQ7Ci0gIGludAlzZW5kX29mZnNldDsKLSAgaW50CXJlcXVlc3Rfc2l6ZTsKLSAgaW50CXJlc3BvbnNlX3NpemU7Ci0gIGludAlub19kZWxheTsKLSAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCi0gIGZsb2F0CWNwdV9yYXRlOwkvKiBkbyB3ZSBrbm93IGhvdyBmYXN0IHRoZSBjcHUgaXM/CSovCi0gIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLwotICBpbnQJc29fcmN2YXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCByZWNlaXZlICovCi0JCQkvKiBjb3BpZXM/ICovIAotICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KLSAgaW50ICAgcG9ydDsgICAgICAgICAgIC8qIHRoZSBwb3J0IHRvIHdoaWNoIHRoZSByZWN2IHNpZGUgc2hvdWxkIGJpbmQKLQkJCSAgIHRvIGFsbG93IG5ldHBlcmYgdG8gcnVuIHRocm91Z2ggdGhvc2UgZXZpbAotCQkJICAgZmlyZXdhbGwgdGhpbmdzICovCi0gIGludCAgIGlwZmFtaWx5OwotfTsKLQotCi1zdHJ1Y3QJdGNwX2NjX3Jlc3BvbnNlX3N0cnVjdCB7Ci0gIGludAlyZWN2X2J1Zl9zaXplOwkvKiBob3cgYmlnIGRvZXMgdGhlIGNsaWVudCB3YW50IGl0CSovCi0gIGludAlub19kZWxheTsKLSAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCi0gIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLwotICBpbnQJc2VuZF9idWZfc2l6ZTsKLSAgaW50CWRhdGFfcG9ydF9udW1iZXI7CS8qIGNvbm5lY3QgdG8gbWUgaGVyZQkqLwotICBmbG9hdAljcHVfcmF0ZTsJCS8qIGNvdWxkIHdlIG1lYXN1cmUJKi8KLSAgaW50CXNvX3JjdmF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHJlY2VpdmUgY29waWVzPyAqLwotICBpbnQJc29fc25kYXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgc2VuZCBjb3BpZXM/ICovCi19OwotCi1zdHJ1Y3QgdGNwX2NjX3Jlc3VsdHNfc3RydWN0IHsKLSAgdW5zaWduZWQgaW50CWJ5dGVzX3JlY2VpdmVkOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLwotICB1bnNpZ25lZCBpbnQJcmVjdl9jYWxsczsJLyogaWdub3JlZCBpbml0aWFsbHkgKi8KLSAgdW5zaWduZWQgaW50CXRyYW5zX3JlY2VpdmVkOwkvKiBub3QgaWdub3JlZCAgKi8KLSAgZmxvYXQJICAgICAgICBlbGFwc2VkX3RpbWU7CS8qIGhvdyBsb25nIHRoZSB0ZXN0IHJhbiAqLwotICBmbG9hdAkgICAgICAgIGNwdV91dGlsOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KLSAgZmxvYXQJICAgICAgICBzZXJ2X2RlbTsJLyogLTEgaWYgbm90IG1lYXN1cmVkICovCi0gIGludCAgICAgICAgICAgY3B1X21ldGhvZDsgICAgLyogaG93IHdhcyBjcHUgdXRpbCBtZWFzdXJlZD8gKi8KLSAgaW50ICAgICAgICAgICBudW1fY3B1czsgICAgICAvKiBob3cgbWFueSBDUFVzIGhhZCB0aGUgcmVtb3RlPyAqLwotfTsKLQotZXh0ZXJuIGludCAgIHJzc19zaXplX3JlcSwgICAgIC8qIHJlcXVlc3RlZCByZW1vdGUgc29ja2V0IHNlbmQgYnVmZmVyIHNpemUgKi8KLQkgICAgIHJzcl9zaXplX3JlcSwgICAgIC8qIHJlcXVlc3RlZCByZW1vdGUgc29ja2V0IHJlY3YgYnVmZmVyIHNpemUgKi8KLQkgICAgIHJzc19zaXplLCAgICAgICAgIC8qIHJlbW90ZSBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZSAgICAgICAqLwotCSAgICAgcnNyX3NpemUsICAgICAgICAgLyogcmVtb3RlIHNvY2tldCByZWN2IGJ1ZmZlciBzaXplICAgICAgICovCi0JICAgICBsc3Nfc2l6ZV9yZXEsICAgICAvKiByZXF1ZXN0ZWQgbG9jYWwgc29ja2V0IHNlbmQgYnVmZmVyIHNpemUgKi8KLQkgICAgIGxzcl9zaXplX3JlcSwgICAgIC8qIHJlcXVlc3RlZCBsb2NhbCBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZSAqLwotCSAgICAgbHNzX3NpemUsICAgICAgICAgLyogbG9jYWwgIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplICAgICAgICovCi0JICAgICBsc3Jfc2l6ZSwgICAgICAgICAvKiBsb2NhbCAgc29ja2V0IHJlY3YgYnVmZmVyIHNpemUgICAgICAgKi8KLQkgICAgIHJlcV9zaXplLCAgICAgICAgIC8qIHJlcXVlc3Qgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCSAgICAgcnNwX3NpemUsICAgICAgICAgLyogcmVzcG9uc2Ugc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICovCi0JICAgICBzZW5kX3NpemUsICAgICAgICAvKiBob3cgYmlnIGFyZSBpbmRpdmlkdWFsIHNlbmRzICAgICAgICAgKi8KLQkgICAgIHJlY3Zfc2l6ZSwgICAgICAgIC8qIGhvdyBiaWcgYXJlIGluZGl2aWR1YWwgcmVjZWl2ZXMgICAgICAqLwotCSAgICAgbG9jX25vZGVsYXksICAgICAgICAgIC8qIGRvbid0L2RvIHVzZSBOT0RFTEFZIGxvY2FsbHkgICAgICAgICAqLwotCSAgICAgcmVtX25vZGVsYXksICAgICAgICAgIC8qIGRvbid0L2RvIHVzZSBOT0RFTEFZIHJlbW90ZWx5ICAgICAgICAqLwotCSAgICAgbG9jX3NuZGF2b2lkLCAgICAgICAgIC8qIGF2b2lkIHNlbmQgY29waWVzIGxvY2FsbHkgICAgICAgICAgICAqLwotCSAgICAgbG9jX3JjdmF2b2lkLCAgICAgICAgIC8qIGF2b2lkIHJlY3YgY29waWVzIGxvY2FsbHkgICAgICAgICAgICAqLwotCSAgICAgcmVtX3NuZGF2b2lkLCAgICAgICAgIC8qIGF2b2lkIHNlbmQgY29waWVzIHJlbW90ZWx5ICAgICAgICAgICAqLwotCSAgICAgcmVtX3JjdmF2b2lkOyAgICAgICAgIC8qIGF2b2lkIHJlY3ZfY29waWVzIHJlbW90ZWx5ICAgICAgICAgICAqLwotCi0KLWV4dGVybiB2b2lkIHNjYW5fc29ja2V0c19hcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pOwotZXh0ZXJuIHN0cnVjdCBhZGRyaW5mbyAqY29tcGxldGVfYWRkcmluZm8oY2hhciAqY29udHJvbGhvc3QsIAotCQkJCSAgIGNoYXIgKmRhdGFfYWRkcmVzcywgCi0JCQkJICAgY2hhciAqcG9ydCwgCi0JCQkJICAgaW50IGZhbWlseSwgCi0JCQkJICAgaW50IHR5cGUsIAotCQkJCSAgIGludCBwcm90b2NvbCwgCi0JCQkJICAgaW50IGZsYWdzKTsKLWV4dGVybiB2b2lkIGNvbXBsZXRlX2FkZHJpbmZvcyhzdHJ1Y3QgYWRkcmluZm8gKipyZW1vdGUsCi0JCQkgICAgICAgc3RydWN0IGFkZHJpbmZvICoqbG9jYWwsIAotCQkJICAgICAgIGNoYXIgcmVtb3RlX2hvc3RbXSwgCi0JCQkgICAgICAgaW50IHR5cGUsIAotCQkJICAgICAgIGludCBwcm90b2NvbCwgCi0JCQkgICAgICAgaW50IGZsYWdzKTsKLWV4dGVybiBpbnQgYWZfdG9fbmYoaW50IGFmKTsKLWV4dGVybiBpbnQgbmZfdG9fYWYoaW50IG5mKTsKLWV4dGVybiB2b2lkIHByaW50X3RvcF90ZXN0X2hlYWRlcihjaGFyIHRlc3RfbmFtZVtdLCAKLQkJCQkgIHN0cnVjdCBhZGRyaW5mbyAqc291cmNlLCAKLQkJCQkgIHN0cnVjdCBhZGRyaW5mbyAqZGVzdGluYXRpb24pOwotZXh0ZXJuIHZvaWQgc2V0X3BvcnRfbnVtYmVyKHN0cnVjdCBhZGRyaW5mbyAqcmVzLCAKLQkJCSAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KTsKLWV4dGVybiB2b2lkIHNldF9ob3N0bmFtZV9hbmRfcG9ydChjaGFyICpob3N0bmFtZSwgCi0JCQkJICBjaGFyICpwb3J0c3RyLCAKLQkJCQkgIGludCBmYW1pbHksIAotCQkJCSAgaW50IHBvcnQpOwotZXh0ZXJuIHZvaWQgc2VuZF90Y3Bfc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSk7Ci1leHRlcm4gdm9pZCBzZW5kX3RjcF9tYWVydHMoY2hhciByZW1vdGVfaG9zdFtdKTsKLWV4dGVybiB2b2lkIHNlbmRfdGNwX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSk7Ci1leHRlcm4gdm9pZCBzZW5kX3RjcF9jb25uX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSk7Ci1leHRlcm4gdm9pZCBzZW5kX3RjcF9jYyhjaGFyIHJlbW90ZV9ob3N0W10pOwotZXh0ZXJuIHZvaWQgc2VuZF91ZHBfc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSk7Ci1leHRlcm4gdm9pZCBzZW5kX3VkcF9ycihjaGFyIHJlbW90ZV9ob3N0W10pOwotCi1leHRlcm4gdm9pZCByZWN2X3RjcF9zdHJlYW0oKTsKLWV4dGVybiB2b2lkIHJlY3ZfdGNwX21hZXJ0cygpOwotZXh0ZXJuIHZvaWQgcmVjdl90Y3BfcnIoKTsKLWV4dGVybiB2b2lkIHJlY3ZfdGNwX2Nvbm5fcnIoKTsKLWV4dGVybiB2b2lkIHJlY3ZfdGNwX2NjKCk7Ci1leHRlcm4gdm9pZCByZWN2X3VkcF9zdHJlYW0oKTsKLWV4dGVybiB2b2lkIHJlY3ZfdWRwX3JyKCk7Ci0KLWV4dGVybiB2b2lkIGxvY19jcHVfcmF0ZSgpOwotZXh0ZXJuIHZvaWQgcmVtX2NwdV9yYXRlKCk7Ci0KLSNpZmRlZiBIQVZFX0lDU0NfRVhTCi1leHRlcm4gdm9pZCBzZW5kX2V4c190Y3Bfc3RyZWFtKGNoYXIgcmVtb3RlaG9zdFtdKTsKLSNlbmRpZiAvKiBIQVZFX0lDU0NfRVhTICovCi0KLSNpZmRlZiBIQVZFX1NFTkRGSUxFCi1leHRlcm4gdm9pZCBzZW5kZmlsZV90Y3Bfc3RyZWFtKGNoYXIgcmVtb3RlaG9zdFtdKTsKLSNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCi0KLSNpZiAhZGVmaW5lZChIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFKSAmJiAhZGVmaW5lZChzb2NrYWRkcl9zdG9yYWdlKQotI2RlZmluZSBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyX2luCi0jZW5kaWYKLQotI2lmZGVmIERPX05CUlIKLWV4dGVybiB2b2lkIHNlbmRfdGNwX25icnIoY2hhciByZW1vdGVfaG9zdFtdKTsKLQotZXh0ZXJuIHZvaWQgcmVjdl90Y3BfbmJycigpOwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGNkNjE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMjIgQEAKK1NVQkRJUlMgPSBtaXNzaW5nCisKK0NMRUFORklMRVMgPSBuZXRwZXJmX3ZlcnNpb24uaAorCitiaW5fUFJPR1JBTVMgPSBuZXRwZXJmIG5ldHNlcnZlcgorCitBTV9DRkxBR1MgPSAkKE5FVFBFUkZfQ0ZMQUdTKQorCitVU0VfQ1BVX1NPVVJDRT1uZXRjcHVfQE5FVENQVV9TT1VSQ0VALmMKKworRVhUUkFfRElTVCA9IG5ldGNwdV9ub25lLmMgbmV0Y3B1X2xvb3Blci5jIG5ldGNwdV9wc3RhdC5jIG5ldGNwdV9wc3RhdG5ldy5jIG5ldGNwdV9wZXJmc3RhdC5jIG5ldGNwdV9wcm9jc3RhdC5jIG5ldGNwdV9rc3RhdC5jIG5ldGNwdV9rc3RhdDEwLmMgbmV0Y3B1X3N5c2N0bC5jIG5ldGNwdV9udHBlcmYuYyBuZXRjcHVfb3N4LmMgZGlycyBOZXRQZXJmRGlyLyogTmV0U2VydmVyRGlyLyogbmV0cGVyZl92ZXJzaW9uLmguaW4gTWFrZWZpbGUudXcKKworQ09NTU9OX1NSQyA9IGhpc3QuaCBuZXRsaWIuYyBuZXRsaWIuaCBuZXRjcHUuaCBuZXRzaC5jIG5ldHNoLmggbmV0dGVzdF9ic2QuYyBuZXR0ZXN0X2JzZC5oIG5ldHRlc3RfZGxwaS5jIG5ldHRlc3RfZGxwaS5oIG5ldHRlc3RfdW5peC5jIG5ldHRlc3RfdW5peC5oIG5ldHRlc3RfeHRpLmMgbmV0dGVzdF94dGkuaCBuZXR0ZXN0X3NjdHAuYyBuZXR0ZXN0X3NjdHAuaCBuZXRwZXJmX3ZlcnNpb24uaCBuZXR0ZXN0X3NkcC5jIG5ldHRlc3Rfc2RwLmggbmV0dGVzdF9vbW5pLmMgbmV0X3V1aWQuYyBkc2NwLmMKKworbmV0cGVyZl9TT1VSQ0VTID0gbmV0cGVyZi5jICQoQ09NTU9OX1NSQykgJChVU0VfQ1BVX1NPVVJDRSkgJChVU0VfU1lTX1NPVVJDRSkgJChVU0VfU0VDX1NPVVJDRSkgJChVU0VfRklSRV9TT1VSQ0UpCituZXRzZXJ2ZXJfU09VUkNFUyA9IG5ldHNlcnZlci5jICQoQ09NTU9OX1NSQykgJChVU0VfQ1BVX1NPVVJDRSkgJChVU0VfU1lTX1NPVVJDRSkgJChVU0VfU0VDX1NPVVJDRSkgJChVU0VfRklSRV9TT1VSQ0UpCisKKyMgaWYgdGhlcmUgYXJlIGFueSAibWlzc2luZyIgcm91dGluZXMsIHRoZSBsaWJvYmpzIHNob3VsZCBjb3ZlciBpdAoraWYgTkVFRF9MSUJDT01QQVQKK25ldHBlcmZfTERBREQgPSBtaXNzaW5nL2xpYmNvbXBhdC5hCituZXRzZXJ2ZXJfTERBREQgPSBtaXNzaW5nL2xpYmNvbXBhdC5hcAorZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODQxZDgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsNjY3IEBACisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKworIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0CisjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFLgorCitAU0VUX01BS0VACisKK1ZQQVRIID0gQHNyY2RpckAKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACitwa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKK2FtX19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QKK2luc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMKK0lOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCitOT1JNQUxfSU5TVEFMTCA9IDoKK1BSRV9JTlNUQUxMID0gOgorUE9TVF9JTlNUQUxMID0gOgorTk9STUFMX1VOSU5TVEFMTCA9IDoKK1BSRV9VTklOU1RBTEwgPSA6CitQT1NUX1VOSU5TVEFMTCA9IDoKK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRACitob3N0X3RyaXBsZXQgPSBAaG9zdEAKK3RhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK2Jpbl9QUk9HUkFNUyA9IG5ldHBlcmYkKEVYRUVYVCkgbmV0c2VydmVyJChFWEVFWFQpCitzdWJkaXIgPSBzcmMKK0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoc3JjZGlyKS9NYWtlZmlsZS5pbiBcCisJJChzcmNkaXIpL25ldHBlcmZfdmVyc2lvbi5oLmluCitBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9zcmMvbWlzc2luZy9tNC9zYWxlbi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKK2FtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCisJJChBQ0xPQ0FMX000KQorbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycworQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9jb25maWcuaAorQ09ORklHX0NMRUFOX0ZJTEVTID0gbmV0cGVyZl92ZXJzaW9uLmgKK0NPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoYmluZGlyKSIKK1BST0dSQU1TID0gJChiaW5fUFJPR1JBTVMpCithbV9fb2JqZWN0c18xID0gbmV0bGliLiQoT0JKRVhUKSBuZXRzaC4kKE9CSkVYVCkgbmV0dGVzdF9ic2QuJChPQkpFWFQpIFwKKwluZXR0ZXN0X2RscGkuJChPQkpFWFQpIG5ldHRlc3RfdW5peC4kKE9CSkVYVCkgXAorCW5ldHRlc3RfeHRpLiQoT0JKRVhUKSBuZXR0ZXN0X3NjdHAuJChPQkpFWFQpIFwKKwluZXR0ZXN0X3NkcC4kKE9CSkVYVCkgbmV0dGVzdF9vbW5pLiQoT0JKRVhUKSBcCisJbmV0X3V1aWQuJChPQkpFWFQpIGRzY3AuJChPQkpFWFQpCithbV9fb2JqZWN0c18yID0gbmV0Y3B1X0BORVRDUFVfU09VUkNFQC4kKE9CSkVYVCkKK2FtX25ldHBlcmZfT0JKRUNUUyA9IG5ldHBlcmYuJChPQkpFWFQpICQoYW1fX29iamVjdHNfMSkgXAorCSQoYW1fX29iamVjdHNfMikKK25ldHBlcmZfT0JKRUNUUyA9ICQoYW1fbmV0cGVyZl9PQkpFQ1RTKQorQE5FRURfTElCQ09NUEFUX1RSVUVAbmV0cGVyZl9ERVBFTkRFTkNJRVMgPSBtaXNzaW5nL2xpYmNvbXBhdC5hCithbV9uZXRzZXJ2ZXJfT0JKRUNUUyA9IG5ldHNlcnZlci4kKE9CSkVYVCkgJChhbV9fb2JqZWN0c18xKSBcCisJJChhbV9fb2JqZWN0c18yKQorbmV0c2VydmVyX09CSkVDVFMgPSAkKGFtX25ldHNlcnZlcl9PQkpFQ1RTKQorQE5FRURfTElCQ09NUEFUX1RSVUVAbmV0c2VydmVyX0RFUEVOREVOQ0lFUyA9IG1pc3NpbmcvbGliY29tcGF0LmFwCitERUZBVUxUX0lOQ0xVREVTID0gLUkuQGFtX19pc3JjQCAtSSQodG9wX2J1aWxkZGlyKQorZGVwY29tcCA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvZGVwY29tcAorYW1fX2RlcGZpbGVzX21heWJlID0gZGVwZmlsZXMKK2FtX19tdiA9IG12IC1mCitDT01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwKKwkkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCitDQ0xEID0gJChDQykKK0xJTksgPSAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitTT1VSQ0VTID0gJChuZXRwZXJmX1NPVVJDRVMpICQobmV0c2VydmVyX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKG5ldHBlcmZfU09VUkNFUykgJChuZXRzZXJ2ZXJfU09VUkNFUykKK1JFQ1VSU0lWRV9UQVJHRVRTID0gYWxsLXJlY3Vyc2l2ZSBjaGVjay1yZWN1cnNpdmUgZHZpLXJlY3Vyc2l2ZSBcCisJaHRtbC1yZWN1cnNpdmUgaW5mby1yZWN1cnNpdmUgaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1kdmktcmVjdXJzaXZlIGluc3RhbGwtZXhlYy1yZWN1cnNpdmUgXAorCWluc3RhbGwtaHRtbC1yZWN1cnNpdmUgaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1wZGYtcmVjdXJzaXZlIGluc3RhbGwtcHMtcmVjdXJzaXZlIGluc3RhbGwtcmVjdXJzaXZlIFwKKwlpbnN0YWxsY2hlY2stcmVjdXJzaXZlIGluc3RhbGxkaXJzLXJlY3Vyc2l2ZSBwZGYtcmVjdXJzaXZlIFwKKwlwcy1yZWN1cnNpdmUgdW5pbnN0YWxsLXJlY3Vyc2l2ZQorUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMgPSBtb3N0bHljbGVhbi1yZWN1cnNpdmUgY2xlYW4tcmVjdXJzaXZlCVwKKyAgZGlzdGNsZWFuLXJlY3Vyc2l2ZSBtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZQorQU1fUkVDVVJTSVZFX1RBUkdFVFMgPSAkKFJFQ1VSU0lWRV9UQVJHRVRTOi1yZWN1cnNpdmU9KSBcCisJJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUzotcmVjdXJzaXZlPSkgdGFncyBUQUdTIGN0YWdzIENUQUdTIFwKKwlkaXN0ZGlyCitFVEFHUyA9IGV0YWdzCitDVEFHUyA9IGN0YWdzCitESVNUX1NVQkRJUlMgPSAkKFNVQkRJUlMpCitESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQorYW1fX3JlbGF0aXZpemUgPSBcCisgIGRpcjA9YHB3ZGA7IFwKKyAgc2VkX2ZpcnN0PSdzLF5cKFteL10qXCkvLiokJCxcMSwnOyBcCisgIHNlZF9yZXN0PSdzLF5bXi9dKi8qLCwnOyBcCisgIHNlZF9sYXN0PSdzLF4uKi9cKFteL10qXCkkJCxcMSwnOyBcCisgIHNlZF9idXRsYXN0PSdzLC8qW14vXSokJCwsJzsgXAorICB3aGlsZSB0ZXN0IC1uICIkJGRpcjEiOyBkbyBcCisgICAgZmlyc3Q9YGVjaG8gIiQkZGlyMSIgfCBzZWQgLWUgIiQkc2VkX2ZpcnN0ImA7IFwKKyAgICBpZiB0ZXN0ICIkJGZpcnN0IiAhPSAiLiI7IHRoZW4gXAorICAgICAgaWYgdGVzdCAiJCRmaXJzdCIgPSAiLi4iOyB0aGVuIFwKKyAgICAgICAgZGlyMj1gZWNobyAiJCRkaXIwIiB8IHNlZCAtZSAiJCRzZWRfbGFzdCJgLyIkJGRpcjIiOyBcCisgICAgICAgIGRpcjA9YGVjaG8gIiQkZGlyMCIgfCBzZWQgLWUgIiQkc2VkX2J1dGxhc3QiYDsgXAorICAgICAgZWxzZSBcCisgICAgICAgIGZpcnN0Mj1gZWNobyAiJCRkaXIyIiB8IHNlZCAtZSAiJCRzZWRfZmlyc3QiYDsgXAorICAgICAgICBpZiB0ZXN0ICIkJGZpcnN0MiIgPSAiJCRmaXJzdCI7IHRoZW4gXAorICAgICAgICAgIGRpcjI9YGVjaG8gIiQkZGlyMiIgfCBzZWQgLWUgIiQkc2VkX3Jlc3QiYDsgXAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICBkaXIyPSIuLi8kJGRpcjIiOyBcCisgICAgICAgIGZpOyBcCisgICAgICAgIGRpcjA9IiQkZGlyMCIvIiQkZmlyc3QiOyBcCisgICAgICBmaTsgXAorICAgIGZpOyBcCisgICAgZGlyMT1gZWNobyAiJCRkaXIxIiB8IHNlZCAtZSAiJCRzZWRfcmVzdCJgOyBcCisgIGRvbmU7IFwKKyAgcmVsZGlyPSIkJGRpcjIiCitBQ0xPQ0FMID0gQEFDTE9DQUxACitBTVRBUiA9IEBBTVRBUkAKK0FVVE9DT05GID0gQEFVVE9DT05GQAorQVVUT0hFQURFUiA9IEBBVVRPSEVBREVSQAorQVVUT01BS0UgPSBAQVVUT01BS0VACitBV0sgPSBAQVdLQAorQ0MgPSBAQ0NACitDQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAorQ0ZMQUdTID0gQENGTEFHU0AKK0NQUCA9IEBDUFBACitDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NZR1BBVEhfVyA9IEBDWUdQQVRIX1dACitERUZTID0gQERFRlNACitERVBESVIgPSBAREVQRElSQAorRUNIT19DID0gQEVDSE9fQ0AKK0VDSE9fTiA9IEBFQ0hPX05ACitFQ0hPX1QgPSBARUNIT19UQAorRUdSRVAgPSBARUdSRVBACitFWEVFWFQgPSBARVhFRVhUQAorR1JFUCA9IEBHUkVQQAorSU5TVEFMTCA9IEBJTlNUQUxMQAorSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACitJTlNUQUxMX1NDUklQVCA9IEBJTlNUQUxMX1NDUklQVEAKK0lOU1RBTExfU1RSSVBfUFJPR1JBTSA9IEBJTlNUQUxMX1NUUklQX1BST0dSQU1ACitMREZMQUdTID0gQExERkxBR1NACitMSUJPQkpTID0gQExJQk9CSlNACitMSUJTID0gQExJQlNACitMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTUFLRUlORk8gPSBATUFLRUlORk9ACitNS0RJUl9QID0gQE1LRElSX1BACitORVRDUFVfU09VUkNFID0gQE5FVENQVV9TT1VSQ0VACitPQkpFWFQgPSBAT0JKRVhUQAorUEFDS0FHRSA9IEBQQUNLQUdFQAorUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACitQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAorUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACitQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACitQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAorUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACitSQU5MSUIgPSBAUkFOTElCQAorU0VUX01BS0UgPSBAU0VUX01BS0VACitTSEVMTCA9IEBTSEVMTEAKK1NUUklQID0gQFNUUklQQAorVkVSU0lPTiA9IEBWRVJTSU9OQAorYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKK2Fic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKK2Fic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKK2Fic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACithbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKK2FtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACithbV9fcXVvdGUgPSBAYW1fX3F1b3RlQAorYW1fX3RhciA9IEBhbV9fdGFyQAorYW1fX3VudGFyID0gQGFtX191bnRhckAKK2JpbmRpciA9IEBiaW5kaXJACitidWlsZCA9IEBidWlsZEAKK2J1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAorYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUAKK2J1aWxkX29zID0gQGJ1aWxkX29zQAorYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKK2J1aWxkZGlyID0gQGJ1aWxkZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitkb2NkaXIgPSBAZG9jZGlyQAorZHZpZGlyID0gQGR2aWRpckAKK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAoraG9zdCA9IEBob3N0QAoraG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAoraG9zdF9jcHUgPSBAaG9zdF9jcHVACitob3N0X29zID0gQGhvc3Rfb3NACitob3N0X3ZlbmRvciA9IEBob3N0X3ZlbmRvckAKK2h0bWxkaXIgPSBAaHRtbGRpckAKK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKK2luZm9kaXIgPSBAaW5mb2RpckAKK2luc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKK2xpYmRpciA9IEBsaWJkaXJACitsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACitsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAorbWFuZGlyID0gQG1hbmRpckAKK21rZGlyX3AgPSBAbWtkaXJfcEAKK29sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKK3BkZmRpciA9IEBwZGZkaXJACitwcmVmaXggPSBAcHJlZml4QAorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAorcHNkaXIgPSBAcHNkaXJACitzYmluZGlyID0gQHNiaW5kaXJACitzaGFyZWRzdGF0ZWRpciA9IEBzaGFyZWRzdGF0ZWRpckAKK3NyY2RpciA9IEBzcmNkaXJACitzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACit0YXJnZXQgPSBAdGFyZ2V0QAordGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlhc0AKK3RhcmdldF9jcHUgPSBAdGFyZ2V0X2NwdUAKK3RhcmdldF9vcyA9IEB0YXJnZXRfb3NACit0YXJnZXRfdmVuZG9yID0gQHRhcmdldF92ZW5kb3JACit0b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACit0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorU1VCRElSUyA9IG1pc3NpbmcKK0NMRUFORklMRVMgPSBuZXRwZXJmX3ZlcnNpb24uaAorQU1fQ0ZMQUdTID0gJChORVRQRVJGX0NGTEFHUykKK1VTRV9DUFVfU09VUkNFID0gbmV0Y3B1X0BORVRDUFVfU09VUkNFQC5jCitFWFRSQV9ESVNUID0gbmV0Y3B1X25vbmUuYyBuZXRjcHVfbG9vcGVyLmMgbmV0Y3B1X3BzdGF0LmMgbmV0Y3B1X3BzdGF0bmV3LmMgbmV0Y3B1X3BlcmZzdGF0LmMgbmV0Y3B1X3Byb2NzdGF0LmMgbmV0Y3B1X2tzdGF0LmMgbmV0Y3B1X2tzdGF0MTAuYyBuZXRjcHVfc3lzY3RsLmMgbmV0Y3B1X250cGVyZi5jIG5ldGNwdV9vc3guYyBkaXJzIE5ldFBlcmZEaXIvKiBOZXRTZXJ2ZXJEaXIvKiBuZXRwZXJmX3ZlcnNpb24uaC5pbiBNYWtlZmlsZS51dworQ09NTU9OX1NSQyA9IGhpc3QuaCBuZXRsaWIuYyBuZXRsaWIuaCBuZXRjcHUuaCBuZXRzaC5jIG5ldHNoLmggbmV0dGVzdF9ic2QuYyBuZXR0ZXN0X2JzZC5oIG5ldHRlc3RfZGxwaS5jIG5ldHRlc3RfZGxwaS5oIG5ldHRlc3RfdW5peC5jIG5ldHRlc3RfdW5peC5oIG5ldHRlc3RfeHRpLmMgbmV0dGVzdF94dGkuaCBuZXR0ZXN0X3NjdHAuYyBuZXR0ZXN0X3NjdHAuaCBuZXRwZXJmX3ZlcnNpb24uaCBuZXR0ZXN0X3NkcC5jIG5ldHRlc3Rfc2RwLmggbmV0dGVzdF9vbW5pLmMgbmV0X3V1aWQuYyBkc2NwLmMKK25ldHBlcmZfU09VUkNFUyA9IG5ldHBlcmYuYyAkKENPTU1PTl9TUkMpICQoVVNFX0NQVV9TT1VSQ0UpICQoVVNFX1NZU19TT1VSQ0UpICQoVVNFX1NFQ19TT1VSQ0UpICQoVVNFX0ZJUkVfU09VUkNFKQorbmV0c2VydmVyX1NPVVJDRVMgPSBuZXRzZXJ2ZXIuYyAkKENPTU1PTl9TUkMpICQoVVNFX0NQVV9TT1VSQ0UpICQoVVNFX1NZU19TT1VSQ0UpICQoVVNFX1NFQ19TT1VSQ0UpICQoVVNFX0ZJUkVfU09VUkNFKQorCisjIGlmIHRoZXJlIGFyZSBhbnkgIm1pc3NpbmciIHJvdXRpbmVzLCB0aGUgbGlib2JqcyBzaG91bGQgY292ZXIgaXQKK0BORUVEX0xJQkNPTVBBVF9UUlVFQG5ldHBlcmZfTERBREQgPSBtaXNzaW5nL2xpYmNvbXBhdC5hCitATkVFRF9MSUJDT01QQVRfVFJVRUBuZXRzZXJ2ZXJfTERBREQgPSBtaXNzaW5nL2xpYmNvbXBhdC5hcAorYWxsOiBhbGwtcmVjdXJzaXZlCisKKy5TVUZGSVhFUzoKKy5TVUZGSVhFUzogLmMgLm8gLm9iagorJChzcmNkaXIpL01ha2VmaWxlLmluOiAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKKwlAZm9yIGRlcCBpbiAkPzsgZG8gXAorCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCisJICAgICokJGRlcCopIFwKKwkgICAgICAoIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaCApIFwKKwkgICAgICAgICYmIHsgaWYgdGVzdCAtZiAkQDsgdGhlbiBleGl0IDA7IGVsc2UgYnJlYWs7IGZpOyB9OyBcCisJICAgICAgZXhpdCAxOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBzcmMvTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgc3JjL01ha2VmaWxlCisuUFJFQ0lPVVM6IE1ha2VmaWxlCitNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQGNhc2UgJyQ/JyBpbiBcCisJICAqY29uZmlnLnN0YXR1cyopIFwKKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoOzsgXAorCSAgKikgXAorCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcCisJZXNhYzsKKworJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCisKKyQodG9wX3NyY2RpcikvY29uZmlndXJlOiAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKEFDTE9DQUxfTTQpOiAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKK25ldHBlcmZfdmVyc2lvbi5oOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvbmV0cGVyZl92ZXJzaW9uLmguaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAoraW5zdGFsbC1iaW5QUk9HUkFNUzogJChiaW5fUFJPR1JBTVMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChiaW5kaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChiaW5kaXIpIgorCUBsaXN0PSckKGJpbl9QUk9HUkFNUyknOyB0ZXN0IC1uICIkKGJpbmRpcikiIHx8IGxpc3Q9OyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAgJCRwIjsgZG9uZSB8IFwKKwlzZWQgJ3MvJChFWEVFWFQpJCQvLycgfCBcCisJd2hpbGUgcmVhZCBwIHAxOyBkbyBpZiB0ZXN0IC1mICQkcDsgXAorCSAgdGhlbiBlY2hvICIkJHAiOyBlY2hvICIkJHAiOyBlbHNlIDo7IGZpOyBcCisJZG9uZSB8IFwKKwlzZWQgLWUgJ3A7cywuKi8sLDtuO2gnIC1lICdzfC4qfC58JyBcCisJICAgIC1lICdwO3g7cywuKi8sLDtzLyQoRVhFRVhUKSQkLy87JCh0cmFuc2Zvcm0pO3MvJCQvJChFWEVFWFQpLycgfCBcCisJc2VkICdOO047TjtzLFxuLCAsZycgfCBcCisJJChBV0spICdCRUdJTiB7IGZpbGVzWyIuIl0gPSAiIjsgZGlyc1siLiJdID0gMSB9IFwKKwkgIHsgZD0kJDM7IGlmIChkaXJzW2RdICE9IDEpIHsgcHJpbnQgImQiLCBkOyBkaXJzW2RdID0gMSB9IFwKKwkgICAgaWYgKCQkMiA9PSAkJDQpIGZpbGVzW2RdID0gZmlsZXNbZF0gIiAiICQkMTsgXAorCSAgICBlbHNlIHsgcHJpbnQgImYiLCAkJDMgIi8iICQkNCwgJCQxOyB9IH0gXAorCSAgRU5EIHsgZm9yIChkIGluIGZpbGVzKSBwcmludCAiZiIsIGQsIGZpbGVzW2RdIH0nIHwgXAorCXdoaWxlIHJlYWQgdHlwZSBkaXIgZmlsZXM7IGRvIFwKKwkgICAgaWYgdGVzdCAiJCRkaXIiID0gLjsgdGhlbiBkaXI9OyBlbHNlIGRpcj0vJCRkaXI7IGZpOyBcCisJICAgIHRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAorCSAgICAgIGVjaG8gIiAkKElOU1RBTExfUFJPR1JBTV9FTlYpICQoSU5TVEFMTF9QUk9HUkFNKSAkJGZpbGVzICckKERFU1RESVIpJChiaW5kaXIpJCRkaXInIjsgXAorCSAgICAgICQoSU5TVEFMTF9QUk9HUkFNX0VOVikgJChJTlNUQUxMX1BST0dSQU0pICQkZmlsZXMgIiQoREVTVERJUikkKGJpbmRpcikkJGRpciIgfHwgZXhpdCAkJD87IFwKKwkgICAgfSBcCisJOyBkb25lCisKK3VuaW5zdGFsbC1iaW5QUk9HUkFNUzoKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGJpbl9QUk9HUkFNUyknOyB0ZXN0IC1uICIkKGJpbmRpcikiIHx8IGxpc3Q9OyBcCisJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwIjsgZG9uZSB8IFwKKwkgIHNlZCAtZSAnaDtzLF4uKi8sLDtzLyQoRVhFRVhUKSQkLy87JCh0cmFuc2Zvcm0pJyBcCisJICAgICAgLWUgJ3MvJCQvJChFWEVFWFQpLycgYDsgXAorCXRlc3QgLW4gIiQkbGlzdCIgfHwgZXhpdCAwOyBcCisJZWNobyAiICggY2QgJyQoREVTVERJUikkKGJpbmRpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorCWNkICIkKERFU1RESVIpJChiaW5kaXIpIiAmJiBybSAtZiAkJGZpbGVzCisKK2NsZWFuLWJpblBST0dSQU1TOgorCS10ZXN0IC16ICIkKGJpbl9QUk9HUkFNUykiIHx8IHJtIC1mICQoYmluX1BST0dSQU1TKQorbmV0cGVyZiQoRVhFRVhUKTogJChuZXRwZXJmX09CSkVDVFMpICQobmV0cGVyZl9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbmV0cGVyZl9ERVBFTkRFTkNJRVMpIAorCUBybSAtZiBuZXRwZXJmJChFWEVFWFQpCisJJChMSU5LKSAkKG5ldHBlcmZfT0JKRUNUUykgJChuZXRwZXJmX0xEQUREKSAkKExJQlMpCituZXRzZXJ2ZXIkKEVYRUVYVCk6ICQobmV0c2VydmVyX09CSkVDVFMpICQobmV0c2VydmVyX0RFUEVOREVOQ0lFUykgJChFWFRSQV9uZXRzZXJ2ZXJfREVQRU5ERU5DSUVTKSAKKwlAcm0gLWYgbmV0c2VydmVyJChFWEVFWFQpCisJJChMSU5LKSAkKG5ldHNlcnZlcl9PQkpFQ1RTKSAkKG5ldHNlcnZlcl9MREFERCkgJChMSUJTKQorCittb3N0bHljbGVhbi1jb21waWxlOgorCS1ybSAtZiAqLiQoT0JKRVhUKQorCitkaXN0Y2xlYW4tY29tcGlsZToKKwktcm0gLWYgKi50YWIuYworCitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZHNjcC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbmV0X3V1aWQuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL25ldGNwdV9ATkVUQ1BVX1NPVVJDRUAuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL25ldGxpYi5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbmV0cGVyZi5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbmV0c2VydmVyLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9uZXRzaC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbmV0dGVzdF9ic2QuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL25ldHRlc3RfZGxwaS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbmV0dGVzdF9vbW5pLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9uZXR0ZXN0X3NjdHAuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL25ldHRlc3Rfc2RwLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9uZXR0ZXN0X3VuaXguUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL25ldHRlc3RfeHRpLlBvQGFtX19xdW90ZUAKKworLmMubzoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKi5UcG8gLWMgLW8gJEAgJDwKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkKERFUERJUikvJCouVHBvICQoREVQRElSKS8kKi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ09NUElMRSkgLWMgJDwKKworLmMub2JqOgorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQqLlRwbyAtYyAtbyAkQCBgJChDWUdQQVRIX1cpICckPCdgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJChERVBESVIpLyQqLlRwbyAkKERFUERJUikvJCouUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENPTVBJTEUpIC1jIGAkKENZR1BBVEhfVykgJyQ8J2AKKworIyBUaGlzIGRpcmVjdG9yeSdzIHN1YmRpcmVjdG9yaWVzIGFyZSBtb3N0bHkgaW5kZXBlbmRlbnQ7IHlvdSBjYW4gY2QKKyMgaW50byB0aGVtIGFuZCBydW4gYG1ha2UnIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGlzIE1ha2VmaWxlLgorIyBUbyBjaGFuZ2UgdGhlIHZhbHVlcyBvZiBgbWFrZScgdmFyaWFibGVzOiBpbnN0ZWFkIG9mIGVkaXRpbmcgTWFrZWZpbGVzLAorIyAoMSkgaWYgdGhlIHZhcmlhYmxlIGlzIHNldCBpbiBgY29uZmlnLnN0YXR1cycsIGVkaXQgYGNvbmZpZy5zdGF0dXMnCisjICAgICAod2hpY2ggd2lsbCBjYXVzZSB0aGUgTWFrZWZpbGVzIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4geW91IHJ1biBgbWFrZScpOworIyAoMikgb3RoZXJ3aXNlLCBwYXNzIHRoZSBkZXNpcmVkIHZhbHVlcyBvbiB0aGUgYG1ha2UnIGNvbW1hbmQgbGluZS4KKyQoUkVDVVJTSVZFX1RBUkdFVFMpOgorCUBmYWlsPSBmYWlsY29tPSdleGl0IDEnOyBcCisJZm9yIGYgaW4geCAkJE1BS0VGTEFHUzsgZG8gXAorCSAgY2FzZSAkJGYgaW4gXAorCSAgICAqPSogfCAtLVsha10qKTs7IFwKKwkgICAgKmsqKSBmYWlsY29tPSdmYWlsPXllcyc7OyBcCisJICBlc2FjOyBcCisJZG9uZTsgXAorCWRvdF9zZWVuPW5vOyBcCisJdGFyZ2V0PWBlY2hvICRAIHwgc2VkIHMvLXJlY3Vyc2l2ZS8vYDsgXAorCWxpc3Q9JyQoU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gIi4iOyB0aGVuIFwKKwkgICAgZG90X3NlZW49eWVzOyBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQtYW0iOyBcCisJICBlbHNlIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldCI7IFwKKwkgIGZpOyBcCisJICAoJChhbV9fY2QpICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQkbG9jYWxfdGFyZ2V0KSBcCisJICB8fCBldmFsICQkZmFpbGNvbTsgXAorCWRvbmU7IFwKKwlpZiB0ZXN0ICIkJGRvdF9zZWVuIiA9ICJubyI7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgIiQkdGFyZ2V0LWFtIiB8fCBleGl0IDE7IFwKKwlmaTsgdGVzdCAteiAiJCRmYWlsIgorCiskKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKToKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAorCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKKwkgIGNhc2UgJCRmIGluIFwKKwkgICAgKj0qIHwgLS1bIWtdKik7OyBcCisJICAgICprKikgZmFpbGNvbT0nZmFpbD15ZXMnOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwlkb3Rfc2Vlbj1ubzsgXAorCWNhc2UgIiRAIiBpbiBcCisJICBkaXN0Y2xlYW4tKiB8IG1haW50YWluZXItY2xlYW4tKikgbGlzdD0nJChESVNUX1NVQkRJUlMpJyA7OyBcCisJICAqKSBsaXN0PSckKFNVQkRJUlMpJyA7OyBcCisJZXNhYzsgXAorCXJldj0nJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgcmV2PSIkJHN1YmRpciAkJHJldiI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCXJldj0iJCRyZXYgLiI7IFwKKwl0YXJnZXQ9YGVjaG8gJEAgfCBzZWQgcy8tcmVjdXJzaXZlLy9gOyBcCisJZm9yIHN1YmRpciBpbiAkJHJldjsgZG8gXAorCSAgZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gIi4iOyB0aGVuIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldC1hbSI7IFwKKwkgIGVsc2UgXAorCSAgICBsb2NhbF90YXJnZXQ9IiQkdGFyZ2V0IjsgXAorCSAgZmk7IFwKKwkgICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJCRsb2NhbF90YXJnZXQpIFwKKwkgIHx8IGV2YWwgJCRmYWlsY29tOyBcCisJZG9uZSAmJiB0ZXN0IC16ICIkJGZhaWwiCit0YWdzLXJlY3Vyc2l2ZToKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIHRlc3QgIiQkc3ViZGlyIiA9IC4gfHwgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSB0YWdzKTsgXAorCWRvbmUKK2N0YWdzLXJlY3Vyc2l2ZToKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIHRlc3QgIiQkc3ViZGlyIiA9IC4gfHwgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBjdGFncyk7IFwKKwlkb25lCisKK0lEOiAkKEhFQURFUlMpICQoU09VUkNFUykgJChMSVNQKSAkKFRBR1NfRklMRVMpCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJbWtpZCAtZklEICQkdW5pcXVlCit0YWdzOiBUQUdTCisKK1RBR1M6IHRhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXAorCQkkKFRBR1NfRklMRVMpICQoTElTUCkKKwlzZXQgeDsgXAorCWhlcmU9YHB3ZGA7IFwKKwlpZiAoJChFVEFHUykgLS1ldGFncy1pbmNsdWRlIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwkgIGluY2x1ZGVfb3B0aW9uPS0tZXRhZ3MtaW5jbHVkZTsgXAorCSAgZW1wdHlfZml4PS47IFwKKwllbHNlIFwKKwkgIGluY2x1ZGVfb3B0aW9uPS0taW5jbHVkZTsgXAorCSAgZW1wdHlfZml4PTsgXAorCWZpOyBcCisJbGlzdD0nJChTVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAuOyB0aGVuIDo7IGVsc2UgXAorCSAgICB0ZXN0ICEgLWYgJCRzdWJkaXIvVEFHUyB8fCBcCisJICAgICAgc2V0ICIkJEAiICIkJGluY2x1ZGVfb3B0aW9uPSQkaGVyZS8kJHN1YmRpci9UQUdTIjsgXAorCSAgZmk7IFwKKwlkb25lOyBcCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCisJICBkb25lIHwgXAorCSAgJChBV0spICd7IGZpbGVzWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAorCSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07IH0nYDsgXAorCXNoaWZ0OyBcCisJaWYgdGVzdCAteiAiJChFVEFHU19BUkdTKSQkKiQkdW5pcXVlIjsgdGhlbiA6OyBlbHNlIFwKKwkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwKKwkgIGlmIHRlc3QgJCQjIC1ndCAwOyB0aGVuIFwKKwkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAorCSAgICAgICIkJEAiICQkdW5pcXVlOyBcCisJICBlbHNlIFwKKwkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAorCSAgICAgICQkdW5pcXVlOyBcCisJICBmaTsgXAorCWZpCitjdGFnczogQ1RBR1MKK0NUQUdTOiBjdGFncy1yZWN1cnNpdmUgJChIRUFERVJTKSAkKFNPVVJDRVMpICAkKFRBR1NfREVQRU5ERU5DSUVTKSBcCisJCSQoVEFHU19GSUxFUykgJChMSVNQKQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZG9uZSB8IFwKKwkgICQoQVdLKSAneyBmaWxlc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9OyB9J2A7IFwKKwl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwKKwkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKKwkgICAgICQkdW5pcXVlCisKK0dUQUdTOgorCWhlcmU9YCQoYW1fX2NkKSAkKHRvcF9idWlsZGRpcikgJiYgcHdkYCBcCisJICAmJiAkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSBcCisJICAmJiBndGFncyAtaSAkKEdUQUdTX0FSR1MpICIkJGhlcmUiCisKK2Rpc3RjbGVhbi10YWdzOgorCS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzCisKK2Rpc3RkaXI6ICQoRElTVEZJTEVTKQorCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKwl0b3BzcmNkaXJzdHJpcD1gZWNobyAiJCh0b3Bfc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJbGlzdD0nJChESVNURklMRVMpJzsgXAorCSAgZGlzdF9maWxlcz1gZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBlY2hvICQkZmlsZTsgZG9uZSB8IFwKKwkgIHNlZCAtZSAic3xeJCRzcmNkaXJzdHJpcC98fDt0IiBcCisJICAgICAgLWUgInN8XiQkdG9wc3JjZGlyc3RyaXAvfCQodG9wX2J1aWxkZGlyKS98O3QiYDsgXAorCWNhc2UgJCRkaXN0X2ZpbGVzIGluIFwKKwkgICovKikgJChNS0RJUl9QKSBgZWNobyAiJCRkaXN0X2ZpbGVzIiB8IFwKKwkJCSAgIHNlZCAnL1wvLyFkO3N8XnwkKGRpc3RkaXIpL3w7cywvW14vXSokJCwsJyB8IFwKKwkJCSAgIHNvcnQgLXVgIDs7IFwKKwllc2FjOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0X2ZpbGVzOyBkbyBcCisJICBpZiB0ZXN0IC1mICQkZmlsZSB8fCB0ZXN0IC1kICQkZmlsZTsgdGhlbiBkPS47IGVsc2UgZD0kKHNyY2Rpcik7IGZpOyBcCisJICBpZiB0ZXN0IC1kICQkZC8kJGZpbGU7IHRoZW4gXAorCSAgICBkaXI9YGVjaG8gIi8kJGZpbGUiIHwgc2VkIC1lICdzLC9bXi9dKiQkLCwnYDsgXAorCSAgICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIpLyQkZmlsZSI7IHRoZW4gXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBpZiB0ZXN0IC1kICQoc3JjZGlyKS8kJGZpbGUgJiYgdGVzdCAkJGQgIT0gJChzcmNkaXIpOyB0aGVuIFwKKwkgICAgICBjcCAtZnBSICQoc3JjZGlyKS8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICAgICAgZmluZCAiJChkaXN0ZGlyKS8kJGZpbGUiIC10eXBlIGQgISAtcGVybSAtNzAwIC1leGVjIGNobW9kIHUrcnd4IHt9IFw7OyBcCisJICAgIGZpOyBcCisJICAgIGNwIC1mcFIgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICB0ZXN0IC1mICIkKGRpc3RkaXIpLyQkZmlsZSIgXAorCSAgICB8fCBjcCAtcCAkJGQvJCRmaWxlICIkKGRpc3RkaXIpLyQkZmlsZSIgXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorCUBsaXN0PSckKERJU1RfU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJHN1YmRpciIgXAorCSAgICB8fCAkKE1LRElSX1ApICIkKGRpc3RkaXIpLyQkc3ViZGlyIiBcCisJICAgIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCisJQGxpc3Q9JyQoRElTVF9TVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAuOyB0aGVuIDo7IGVsc2UgXAorCSAgICBkaXIxPSQkc3ViZGlyOyBkaXIyPSIkKGRpc3RkaXIpLyQkc3ViZGlyIjsgXAorCSAgICAkKGFtX19yZWxhdGl2aXplKTsgXAorCSAgICBuZXdfZGlzdGRpcj0kJHJlbGRpcjsgXAorCSAgICBkaXIxPSQkc3ViZGlyOyBkaXIyPSIkKHRvcF9kaXN0ZGlyKSI7IFwKKwkgICAgJChhbV9fcmVsYXRpdml6ZSk7IFwKKwkgICAgbmV3X3RvcF9kaXN0ZGlyPSQkcmVsZGlyOyBcCisJICAgIGVjaG8gIiAoY2QgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgdG9wX2Rpc3RkaXI9IiQkbmV3X3RvcF9kaXN0ZGlyIiBkaXN0ZGlyPSIkJG5ld19kaXN0ZGlyIiBcXCI7IFwKKwkgICAgZWNobyAiICAgICBhbV9fcmVtb3ZlX2Rpc3RkaXI9OiBhbV9fc2tpcF9sZW5ndGhfY2hlY2s9OiBhbV9fc2tpcF9tb2RlX2ZpeD06IGRpc3RkaXIpIjsgXAorCSAgICAoJChhbV9fY2QpICQkc3ViZGlyICYmIFwKKwkgICAgICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBcCisJICAgICAgICB0b3BfZGlzdGRpcj0iJCRuZXdfdG9wX2Rpc3RkaXIiIFwKKwkgICAgICAgIGRpc3RkaXI9IiQkbmV3X2Rpc3RkaXIiIFwKKwkJYW1fX3JlbW92ZV9kaXN0ZGlyPTogXAorCQlhbV9fc2tpcF9sZW5ndGhfY2hlY2s9OiBcCisJCWFtX19za2lwX21vZGVfZml4PTogXAorCSAgICAgICAgZGlzdGRpcikgXAorCSAgICAgIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCitjaGVjay1hbTogYWxsLWFtCitjaGVjazogY2hlY2stcmVjdXJzaXZlCithbGwtYW06IE1ha2VmaWxlICQoUFJPR1JBTVMpCitpbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtcmVjdXJzaXZlCitpbnN0YWxsZGlycy1hbToKKwlmb3IgZGlyIGluICIkKERFU1RESVIpJChiaW5kaXIpIjsgZG8gXAorCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsgXAorCWRvbmUKK2luc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlCitpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1yZWN1cnNpdmUKK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZQordW5pbnN0YWxsOiB1bmluc3RhbGwtcmVjdXJzaXZlCisKK2luc3RhbGwtYW06IGFsbC1hbQorCUAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtCisKK2luc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZQoraW5zdGFsbC1zdHJpcDoKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKK21vc3RseWNsZWFuLWdlbmVyaWM6CisKK2NsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ0xFQU5GSUxFUykiIHx8IHJtIC1mICQoQ0xFQU5GSUxFUykKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCisKK21haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorY2xlYW46IGNsZWFuLXJlY3Vyc2l2ZQorCitjbGVhbi1hbTogY2xlYW4tYmluUFJPR1JBTVMgY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1hbQorCitkaXN0Y2xlYW46IGRpc3RjbGVhbi1yZWN1cnNpdmUKKwktcm0gLXJmIC4vJChERVBESVIpCisJLXJtIC1mIE1ha2VmaWxlCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKKwlkaXN0Y2xlYW4tdGFncworCitkdmk6IGR2aS1yZWN1cnNpdmUKKworZHZpLWFtOgorCitodG1sOiBodG1sLXJlY3Vyc2l2ZQorCitodG1sLWFtOgorCitpbmZvOiBpbmZvLXJlY3Vyc2l2ZQorCitpbmZvLWFtOgorCitpbnN0YWxsLWRhdGEtYW06CisKK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1yZWN1cnNpdmUKKworaW5zdGFsbC1kdmktYW06CisKK2luc3RhbGwtZXhlYy1hbTogaW5zdGFsbC1iaW5QUk9HUkFNUworCitpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1yZWN1cnNpdmUKKworaW5zdGFsbC1odG1sLWFtOgorCitpbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1yZWN1cnNpdmUKKworaW5zdGFsbC1pbmZvLWFtOgorCitpbnN0YWxsLW1hbjoKKworaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLXJlY3Vyc2l2ZQorCitpbnN0YWxsLXBkZi1hbToKKworaW5zdGFsbC1wczogaW5zdGFsbC1wcy1yZWN1cnNpdmUKKworaW5zdGFsbC1wcy1hbToKKworaW5zdGFsbGNoZWNrLWFtOgorCittYWludGFpbmVyLWNsZWFuOiBtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZQorCS1ybSAtcmYgLi8kKERFUERJUikKKwktcm0gLWYgTWFrZWZpbGUKK21haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKKworbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLXJlY3Vyc2l2ZQorCittb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljCisKK3BkZjogcGRmLXJlY3Vyc2l2ZQorCitwZGYtYW06CisKK3BzOiBwcy1yZWN1cnNpdmUKKworcHMtYW06CisKK3VuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWJpblBST0dSQU1TCisKKy5NQUtFOiAkKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKSAkKFJFQ1VSU0lWRV9UQVJHRVRTKSBjdGFncy1yZWN1cnNpdmUgXAorCWluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcCB0YWdzLXJlY3Vyc2l2ZQorCisuUEhPTlk6ICQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMpICQoUkVDVVJTSVZFX1RBUkdFVFMpIENUQUdTIEdUQUdTIFwKKwlhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWJpblBST0dSQU1TIFwKKwljbGVhbi1nZW5lcmljIGN0YWdzIGN0YWdzLXJlY3Vyc2l2ZSBkaXN0Y2xlYW4gXAorCWRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi10YWdzIGRpc3RkaXIgZHZpIFwKKwlkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gXAorCWluc3RhbGwtYmluUFJPR1JBTVMgaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIFwKKwlpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gXAorCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCisJaW5zdGFsbGRpcnMtYW0gbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgXAorCW1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBwZGYgcGRmLWFtIFwKKwlwcyBwcy1hbSB0YWdzIHRhZ3MtcmVjdXJzaXZlIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gXAorCXVuaW5zdGFsbC1iaW5QUk9HUkFNUworCisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS51dyBiL3NyYy9NYWtlZmlsZS51dwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDI4OGM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL01ha2VmaWxlLnV3CkBAIC0wLDAgKzEsMTA2IEBACisjIFVzZXItd29ybGQgbmV0cGVyZiBNYWtlZmlsZS4KKyMgQ29weXJpZ2h0IDIwMDgsIFZNd2FyZSwgSW5jLgorIyBQb3J0aW9ucyBDb3B5cmlnaHQgMjAwOCwgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkuCisjCisjIEFzc3VtZSB3ZSdyZSBidWlsZGluZyBpbiBhIERESyB1bml2ZXJzZS4KKyMKK0JPUkFfUk9PVCA9IC9idWlsZC90b29sY2hhaW4vbGluMzIKKworIworIyB1c2Vyd29ybGQgbGlicmFyeSBwYXRocywgcmVsYXRpdmUgdG8gYm9yYS1yb290CisjCitVV0dDQ19ST09UICAgICAgID0gJChCT1JBX1JPT1QpL2djYy0zLjMuMworVVdHTElCQ19UT1BfRElSICA9ICQoQk9SQV9ST09UKS91d2dsaWJjLTIuMi41CitVV0dMSUJDX0xJQl9ESVIgID0gJChVV0dMSUJDX1RPUF9ESVIpL2xpYgorVVdHTElCQ19VU1JfRElSICA9ICQoVVdHTElCQ19UT1BfRElSKS91c3IvbGliCitVV0dMSUJDX0RFU1RfRElSID0gL3Vzci9saWIvdm13YXJlL2xpYgorCisjCisjIHVzZXJ3b3JsZCBpbmNsdWRlIHBhdGhzCisjCitHQ0NfSU5DTFVERVMgICA9IC1pc3lzdGVtICQoVVdHQ0NfUk9PVCkvbGliL2djYy1saWIvaTY4Ni1saW51eC8zLjMuMy9pbmNsdWRlCitHTElCQ19JTkNMVURFUyA9IC1pc3lzdGVtICQoQk9SQV9ST09UKS9nbGliYy0yLjIuNS00NC91c3IvaW5jbHVkZSAKKworIworIyB1c2Vyd29ybGQgY29tcGlsZXIgZW52aXJvbm1lbnQKKyMKK0NDID0gR0NDX0VYRUNfUFJFRklYPSIkKFVXR0NDX1JPT1QpL2xpYi9nY2MtbGliLyIgXAorCUtST09UPSQoQk9SQV9ST09UKSBcCisJUEFUSD0iJChVV0dDQ19ST09UKS9iaW46JChCT1JBX1JPT1QpL2JpbnV0aWxzLTIuMTYuMS12dC9iaW46L2Jpbjovc2JpbjovdXNyL3NiaW46L3Vzci9iaW4iIFwKKwkkKFVXR0NDX1JPT1QpL2Jpbi9pNjg2LWxpbnV4LWdjYworCitDQ19JTkNMVURFUyA9IC1ub3N0ZGluYyAkKEdDQ19JTkNMVURFUykgJChHTElCQ19JTkNMVURFUykgJChVV1ZFUl9JTkNMVURFUykKKworIworIyB1c2Vyd29ybGQgc2hhcmVkIGxpYnJhcmllcworIworVVdHTElCQ19MRExJTlVYX1NPID0gbGQtbGludXguc28uMgorCitVV0dMSUJDX0xJTktfT1BUUyA9IC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIFwKKwktWGxpbmtlciAtLWR5bmFtaWMtbGlua2VyPSQoVVdHTElCQ19ERVNUX0RJUikvJChVV0dMSUJDX0xETElOVVhfU08pIFwKKwktWGxpbmtlciAteiAtWGxpbmtlciBub2RlZmF1bHRsaWIgXAorCS1YbGlua2VyIC1ycGF0aCAtWGxpbmtlciAkKFVXR0xJQkNfREVTVF9ESVIpIFwKKwktTCQoVVdHTElCQ19VU1JfRElSKSBcCisJLUwkKFVXR0xJQkNfTElCX0RJUikKKworVVdHTElCQ19MSU5LX0NSVFMgPSBcCisJJHtVV0dMSUJDX1RPUF9ESVJ9L3Vzci9saWIvY3J0MS5vIFwKKwkke1VXR0xJQkNfVE9QX0RJUn0vdXNyL2xpYi9jcnRpLm8gXAorCSR7VVdHQ0NfUk9PVH0vbGliL2djYy1saWIvaTY4Ni1saW51eC8zLjMuMy9jcnRiZWdpbi5vIFwKKwkke1VXR0NDX1JPT1R9L2xpYi9nY2MtbGliL2k2ODYtbGludXgvMy4zLjMvY3J0ZW5kLm8gXAorCSR7VVdHTElCQ19UT1BfRElSfS91c3IvbGliL2NydG4ubworCitDRkxBR1MgID0gLURWTVdBUkVfVVcgJChDQ19JTkNMVURFUykgLWcgLU8gLW1jcHU9cGVudGl1bXBybworQ0ZMQUdTICs9IC1EREVCVUdfTE9HX0ZJTEU9XCIvZGV2L251bGxcIiAtRERPX0ZJUlNUX0JVUlNUIC1ERE9fVU5JWAorCitVV0dMSUJDX0xJTktfTElCUyA9IC1sbSAtbGRsIC1scHRocmVhZCAtbHJlc29sdiAtbG5zc19uaXMgLWxuc3NfbmlzcGx1cyBcCisJLWxuc3NfZmlsZXMgLWxuc3NfY29tcGF0IC1sbnNzX2RucyAtbG5zbCAtbGMgLWxjX25vbnNoYXJlZCAtbGdjYworTERGTEFHUyA9ICQoVVdHTElCQ19MSU5LX09QVFMpICQoVVdHTElCQ19MSU5LX0NSVFMpIFwKKwkkKFVXR0xJQkNfTElOS19MSUJTKSAke1VXR0xJQkNfTElCX0RJUn0vJHtVV0dMSUJDX0xETElOVVhfU099CisKK05FVFNFUlZFUl9PQkpTID0gbmV0c2VydmVyLm8gbmV0dGVzdF9ic2QubyBuZXR0ZXN0X2RscGkubyBcCisJbmV0dGVzdF91bml4Lm8gbmV0bGliLm8gbmV0c2gubyBcCisJbmV0dGVzdF94dGkubyBuZXR0ZXN0X2lwdjYubyBcCisJbmV0Y3B1X25vbmUuYyBcCisJbmV0dGVzdF9kbnMubworCitORVRQRVJGX09CSlMgPSBuZXRwZXJmLm8gbmV0c2gubyBuZXRsaWIubyBuZXR0ZXN0X2JzZC5vIFwKKwluZXR0ZXN0X2RscGkubyBuZXR0ZXN0X3VuaXgubyBcCisJbmV0dGVzdF94dGkubyBuZXR0ZXN0X2lwdjYubyBcCisJbmV0Y3B1X25vbmUuYyBcCisJbmV0dGVzdF9kbnMubworCithbGw6IG5ldHBlcmYtdXcgbmV0c2VydmVyLXV3CisKK25ldHBlcmYtdXc6ICQoTkVUUEVSRl9PQkpTKQorCSQoQ0MpIC1vICRAICQoTkVUUEVSRl9PQkpTKSAkKExERkxBR1MpCisJc3RyaXAgJEAKKworbmV0c2VydmVyLXV3OiAkKE5FVFNFUlZFUl9PQkpTKQorCSQoQ0MpIC1vICRAICQoTkVUU0VSVkVSX09CSlMpICQoTERGTEFHUykKKwlzdHJpcCAkQAorCituZXRwZXJmLm86IG5ldHBlcmYuYyBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHNoLm86IG5ldHNoLmMgbmV0c2guaCBuZXR0ZXN0X2JzZC5oIG5ldGxpYi5oIE1ha2VmaWxlLnV3CisKK25ldGxpYi5vOiBuZXRsaWIuYyBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHRlc3RfYnNkLm86IG5ldHRlc3RfYnNkLmMgbmV0dGVzdF9ic2QuaCBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHRlc3RfZGxwaS5vOiBuZXR0ZXN0X2RscGkuYyBuZXR0ZXN0X2RscGkuaCBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHRlc3RfdW5peC5vOiBuZXR0ZXN0X3VuaXguYyBuZXR0ZXN0X3VuaXguaCBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHRlc3RfeHRpLm86IG5ldHRlc3RfeHRpLmMgbmV0dGVzdF94dGkuaCBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHRlc3RfaXB2Ni5vOiBuZXR0ZXN0X2lwdjYuYyBuZXR0ZXN0X2lwdjYuaCBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldHRlc3RfZG5zLm86IG5ldHRlc3RfZG5zLmMgbmV0dGVzdF9kbnMuaCBuZXRsaWIuaCBuZXRzaC5oIE1ha2VmaWxlLnV3CisKK25ldGNwdV9ub25lLm86IG5ldGNwdV9ub25lLmMgbmV0c2guaCBuZXRsaWIuaAorCituZXRzZXJ2ZXIubzogbmV0c2VydmVyLmMgbmV0dGVzdF9ic2QuaCBuZXRsaWIuaCBNYWtlZmlsZS51dworCitjbGVhbjoKKwlybSAtZiAqLm8gbmV0cGVyZi11dyBuZXRzZXJ2ZXItdXcKZGlmZiAtLWdpdCBhL3NyYy9OZXRQZXJmRGlyL2luZXRfbnRvcC5jIGIvc3JjL05ldFBlcmZEaXIvaW5ldF9udG9wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY0NGU0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9OZXRQZXJmRGlyL2luZXRfbnRvcC5jCkBAIC0wLDAgKzEsNiBAQAorI2lmICFkZWZpbmVkKEluZXROdG9wKQorCisvKiArKisgV2h5IGlzbid0IHRoaXMgaW4gdGhlIHdpbnNvY2sgaGVhZGVycyB5ZXQ/ICovCisKKyNpbmNsdWRlICIuLlxtaXNzaW5nXGluZXRfbnRvcC5jIgorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvTmV0UGVyZkRpci9tYWtlZmlsZSBiL3NyYy9OZXRQZXJmRGlyL21ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MGI3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvTmV0UGVyZkRpci9tYWtlZmlsZQpAQCAtMCwwICsxLDcgQEAKKyMNCisjIERPIE5PVCBFRElUIFRISVMgRklMRSEhISAgRWRpdCAuXHNvdXJjZXMuIGlmIHlvdSB3YW50IHRvIGFkZCBhIG5ldyBzb3VyY2UNCisjIGZpbGUgdG8gdGhpcyBjb21wb25lbnQuICBUaGlzIGZpbGUgbWVyZWx5IGluZGlyZWN0cyB0byB0aGUgcmVhbCBtYWtlIGZpbGUNCisjIHRoYXQgaXMgc2hhcmVkIGJ5IGFsbCB0aGUgZHJpdmVyIGNvbXBvbmVudHMgb2YgdGhlIFdpbmRvd3MgTlQgRERLDQorIw0KKw0KKyFJTkNMVURFICQoTlRNQUtFRU5WKVxtYWtlZmlsZS5kZWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvTmV0UGVyZkRpci9zb3VyY2VzIGIvc3JjL05ldFBlcmZEaXIvc291cmNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTJjMjI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL05ldFBlcmZEaXIvc291cmNlcwpAQCAtMCwwICsxLDM5IEBACitUQVJHRVROQU1FPW5ldHBlcmYNCitUQVJHRVRQQVRIPU9CSg0KK1RBUkdFVFRZUEU9UFJPR1JBTQ0KKw0KK0xJTktMSUJTPSBcDQorCSQoU0RLX0xJQl9QQVRIKVxrZXJuZWwzMi5saWIgXA0KKwkkKFNES19MSUJfUEFUSClcd3MyXzMyLmxpYiBcDQorCSQoU0RLX0xJQl9QQVRIKVx3c29jazMyLmxpYiBcDQorCSQoU0RLX0xJQl9QQVRIKVxXaW5tbS5saWINCisNCitVU0VfTVNWQ1JUPTENCitVTVRZUEU9Y29uc29sZQ0KKw0KK0lOQ0xVREVTPSQoU0RLX0lOQ19QQVRIKTsuDQorDQorTVNDX1dBUk5JTkdfTEVWRUw9L1czIC9XWA0KKw0KK0NfREVGSU5FUz0kKENfREVGSU5FUykgLURfQ09OU09MRV8gLURIQVZFX1NUUklOR19IIC1ESEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRSAtREhBVkVfR0VUQUREUklORk8gLURIQVZFX0dFVE5BTUVJTkZPIC1EU1REQ19IRUFERVJTIC1ESEFWRV9TVERMSUJfSCAtREhBVkVfV1MyVENQSVBfSCAtRFdBTlRfT01OSSAtRFdBTlRfREVNTyAtRFdBTlRfSElTVE9HUkFNIC1EV0FOVF9JTlRFUlZBTFMNCisNCisjVVNFUl9DX0ZMQUdTPSQoVVNFUl9DX0ZMQUdTKSAvRQ0KKw0KK1NPVVJDRVM9IFwNCisgICAgICAgIC4uXG5ldGNwdV9udHBlcmYuYyBcDQorCS4uXG5ldGxpYi5jIFwNCisJLi5cbmV0c2guYyBcDQorCS4uXG5ldHRlc3RfYnNkLmMgXA0KKwkuLlxuZXR0ZXN0X29tbmkuYyBcDQorCS4uXG5ldHNlY193aW4uYyBcDQorCS4uXG5ldGRydl9ub25lLmMgXA0KKwkuLlxuZXRzbG90X25vbmUuYyBcDQorCS4uXG5ldHN5c19ub25lLmMgXA0KKwkuLlxuZXRydF9ub25lLmMgXA0KKwkuLlxuZXRmaXJld2FsbF9ub25lLmMgXA0KKwkuLlxuZXRfdXVpZC5jIFwNCisJLi5cbmV0cGVyZi5jIFwNCisJLi5cZHNjcC5jIFwNCisJLi5caW5ldF9udG9wLmMNCisNCisNCmRpZmYgLS1naXQgYS9zcmMvTmV0U2VydmVyRGlyL2luZXRfbnRvcC5jIGIvc3JjL05ldFNlcnZlckRpci9pbmV0X250b3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjQ0ZTRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL05ldFNlcnZlckRpci9pbmV0X250b3AuYwpAQCAtMCwwICsxLDYgQEAKKyNpZiAhZGVmaW5lZChJbmV0TnRvcCkKKworLyogKyorIFdoeSBpc24ndCB0aGlzIGluIHRoZSB3aW5zb2NrIGhlYWRlcnMgeWV0PyAqLworCisjaW5jbHVkZSAiLi5cbWlzc2luZ1xpbmV0X250b3AuYyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL05ldFNlcnZlckRpci9tYWtlZmlsZSBiL3NyYy9OZXRTZXJ2ZXJEaXIvbWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYjcxZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9OZXRTZXJ2ZXJEaXIvbWFrZWZpbGUKQEAgLTAsMCArMSw3IEBACisjDQorIyBETyBOT1QgRURJVCBUSElTIEZJTEUhISEgIEVkaXQgLlxzb3VyY2VzLiBpZiB5b3Ugd2FudCB0byBhZGQgYSBuZXcgc291cmNlDQorIyBmaWxlIHRvIHRoaXMgY29tcG9uZW50LiAgVGhpcyBmaWxlIG1lcmVseSBpbmRpcmVjdHMgdG8gdGhlIHJlYWwgbWFrZSBmaWxlDQorIyB0aGF0IGlzIHNoYXJlZCBieSBhbGwgdGhlIGRyaXZlciBjb21wb25lbnRzIG9mIHRoZSBXaW5kb3dzIE5UIERESw0KKyMNCisNCishSU5DTFVERSAkKE5UTUFLRUVOVilcbWFrZWZpbGUuZGVmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL05ldFNlcnZlckRpci9zb3VyY2VzIGIvc3JjL05ldFNlcnZlckRpci9zb3VyY2VzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwY2QyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvTmV0U2VydmVyRGlyL3NvdXJjZXMKQEAgLTAsMCArMSwzOCBAQAorVEFSR0VUTkFNRT1uZXRzZXJ2ZXINCitUQVJHRVRQQVRIPU9CSg0KK1RBUkdFVFRZUEU9UFJPR1JBTQ0KKw0KK0xJTktMSUJTPSBcDQorCSQoU0RLX0xJQl9QQVRIKVxrZXJuZWwzMi5saWIgXA0KKwkkKFNES19MSUJfUEFUSClcd3MyXzMyLmxpYiBcDQorCSQoU0RLX0xJQl9QQVRIKVx3c29jazMyLmxpYiBcDQorCSQoU0RLX0xJQl9QQVRIKVxXaW5tbS5saWINCisNCitVU0VfTVNWQ1JUPTENCitVTVRZUEU9Y29uc29sZQ0KKw0KK0lOQ0xVREVTPSQoU0RLX0lOQ19QQVRIKTsuOy4uDQorDQorTVNDX1dBUk5JTkdfTEVWRUw9L1czIC9XWA0KKw0KK0NfREVGSU5FUz0kKENfREVGSU5FUykgLURfQ09OU09MRV8gLURIQVZFX1NUUklOR19IIC1ESEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRSAtREhBVkVfR0VUQUREUklORk8gLURIQVZFX0dFVE5BTUVJTkZPIC1EU1REQ19IRUFERVJTIC1ESEFWRV9TVERMSUJfSCAtREhBVkVfV1MyVENQSVBfSCAtRFdBTlRfT01OSSAtRFdBTlRfREVNTyAtRFdBTlRfSElTVE9HUkFNIC1EV0FOVF9JTlRFUlZBTFMNCisNCisjVVNFUl9DX0ZMQUdTPSQoVVNFUl9DX0ZMQUdTKSAvRQ0KKw0KK1NPVVJDRVM9IFwNCisgICAgICAgIC4uXG5ldGNwdV9udHBlcmYuYyBcDQorCS4uXG5ldGxpYi5jIFwNCisJLi5cbmV0c2guYyBcDQorCS4uXG5ldHRlc3RfYnNkLmMgXA0KKwkuLlxuZXR0ZXN0X29tbmkuYyBcDQorCS4uXG5ldHNlY193aW4uYyBcDQorCS4uXG5ldGRydl9ub25lLmMgXA0KKwkuLlxuZXRzbG90X25vbmUuYyBcDQorCS4uXG5ldHN5c19ub25lLmMgXA0KKwkuLlxuZXRydF9ub25lLmMgXA0KKwkuLlxuZXRmaXJld2FsbF9ub25lLmMgXA0KKwkuLlxuZXRfdXVpZC5jIFwNCisJLi5cbmV0c2VydmVyLmMgXA0KKwkuLlxkc2NwLmMgXA0KKwkuLlxpbmV0X250b3AuYw0KKw0KZGlmZiAtLWdpdCBhL3NyYy9kaXJzIGIvc3JjL2RpcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5NzJiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9kaXJzCkBAIC0wLDAgKzEsMyBAQAorRElSUz0gXA0KKwlOZXRQZXJmRGlyIFwNCisJTmV0U2VydmVyRGlyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2RzY3AuYyBiL3NyYy9kc2NwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBmY2RhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9kc2NwLmMKQEAgLTAsMCArMSwxNjcgQEAKKy8qIGRzY3AgbG9va3VwIHJvdXRpbmVzIGxpZnRlZCB3aG9sZXNhbGUgZnJvbSBvcGVuc3NoICovCisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAgTWFya3VzIEZyaWVkbC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsMjAwNiBEYW1pZW4gTWlsbGVyLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgorICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworI2lmIEhBVkVfSU5UVFlQRVNfSAorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisjZGVmaW5lIHN0cmNhc2VjbXAoYSxiKSBfc3RyaWNtcChhLGIpCisjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgorI2VuZGlmCisKK2ludCBwYXJzZV9pcHFvcyhjb25zdCBjaGFyICpjcCk7Citjb25zdCBjaGFyICogaXB0b3Myc3RyKGludCBpcHRvcyk7CisKKy8qCisgKiBEZWZpbml0aW9ucyBmb3IgSVAgdHlwZSBvZiBzZXJ2aWNlIChpcF90b3MpCisgKi8KKworI2lmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjZW5kaWYKKworI2lmbmRlZiBJUFRPU19MT1dERUxBWQorIyBkZWZpbmUgSVBUT1NfTE9XREVMQVkgICAgICAgICAgMHgxMAorIyBkZWZpbmUgSVBUT1NfVEhST1VHSFBVVCAgICAgICAgMHgwOAorIyBkZWZpbmUgSVBUT1NfUkVMSUFCSUxJVFkgICAgICAgMHgwNAorIyBkZWZpbmUgSVBUT1NfTE9XQ09TVCAgICAgICAgICAgMHgwMgorIyBkZWZpbmUgSVBUT1NfTUlOQ09TVCAgICAgICAgICAgSVBUT1NfTE9XQ09TVAorI2VuZGlmIC8qIElQVE9TX0xPV0RFTEFZICovCisKKy8qCisgKiBEZWZpbml0aW9ucyBmb3IgRGlmZlNlcnYgQ29kZXBvaW50cyBhcyBwZXIgUkZDMjQ3NAorICovCisjaWZuZGVmIElQVE9TX0RTQ1BfQUYxMQorIyBkZWZpbmUJSVBUT1NfRFNDUF9BRjExCQkweDI4CisjIGRlZmluZQlJUFRPU19EU0NQX0FGMTIJCTB4MzAKKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYxMwkJMHgzOAorIyBkZWZpbmUJSVBUT1NfRFNDUF9BRjIxCQkweDQ4CisjIGRlZmluZQlJUFRPU19EU0NQX0FGMjIJCTB4NTAKKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYyMwkJMHg1OAorIyBkZWZpbmUJSVBUT1NfRFNDUF9BRjMxCQkweDY4CisjIGRlZmluZQlJUFRPU19EU0NQX0FGMzIJCTB4NzAKKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYzMwkJMHg3OAorIyBkZWZpbmUJSVBUT1NfRFNDUF9BRjQxCQkweDg4CisjIGRlZmluZQlJUFRPU19EU0NQX0FGNDIJCTB4OTAKKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUY0MwkJMHg5OAorIyBkZWZpbmUJSVBUT1NfRFNDUF9FRgkJMHhiOAorI2VuZGlmIC8qIElQVE9TX0RTQ1BfQUYxMSAqLworCisjaWZuZGVmIElQVE9TX0RTQ1BfQ1MwCisjIGRlZmluZQlJUFRPU19EU0NQX0NTMAkJMHgwMAorIyBkZWZpbmUJSVBUT1NfRFNDUF9DUzEJCTB4MjAKKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQ1MyCQkweDQwCisjIGRlZmluZQlJUFRPU19EU0NQX0NTMwkJMHg2MAorIyBkZWZpbmUJSVBUT1NfRFNDUF9DUzQJCTB4ODAKKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQ1M1CQkweGEwCisjIGRlZmluZQlJUFRPU19EU0NQX0NTNgkJMHhjMAorIyBkZWZpbmUJSVBUT1NfRFNDUF9DUzcJCTB4ZTAKKyNlbmRpZiAvKiBJUFRPU19EU0NQX0NTMCAqLworI2lmbmRlZiBJUFRPU19EU0NQX0VGCisjIGRlZmluZQlJUFRPU19EU0NQX0VGCQkweGI4CisjZW5kaWYgLyogSVBUT1NfRFNDUF9FRiAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwljb25zdCBjaGFyICpuYW1lOworCWludCB2YWx1ZTsKK30gaXBxb3NbXSA9IHsKKwl7ICJhZjExIiwgSVBUT1NfRFNDUF9BRjExIH0sCisJeyAiYWYxMiIsIElQVE9TX0RTQ1BfQUYxMiB9LAorCXsgImFmMTMiLCBJUFRPU19EU0NQX0FGMTMgfSwKKwl7ICJhZjIxIiwgSVBUT1NfRFNDUF9BRjIxIH0sCisJeyAiYWYyMiIsIElQVE9TX0RTQ1BfQUYyMiB9LAorCXsgImFmMjMiLCBJUFRPU19EU0NQX0FGMjMgfSwKKwl7ICJhZjMxIiwgSVBUT1NfRFNDUF9BRjMxIH0sCisJeyAiYWYzMiIsIElQVE9TX0RTQ1BfQUYzMiB9LAorCXsgImFmMzMiLCBJUFRPU19EU0NQX0FGMzMgfSwKKwl7ICJhZjQxIiwgSVBUT1NfRFNDUF9BRjQxIH0sCisJeyAiYWY0MiIsIElQVE9TX0RTQ1BfQUY0MiB9LAorCXsgImFmNDMiLCBJUFRPU19EU0NQX0FGNDMgfSwKKwl7ICJjczAiLCBJUFRPU19EU0NQX0NTMCB9LAorCXsgImNzMSIsIElQVE9TX0RTQ1BfQ1MxIH0sCisJeyAiY3MyIiwgSVBUT1NfRFNDUF9DUzIgfSwKKwl7ICJjczMiLCBJUFRPU19EU0NQX0NTMyB9LAorCXsgImNzNCIsIElQVE9TX0RTQ1BfQ1M0IH0sCisJeyAiY3M1IiwgSVBUT1NfRFNDUF9DUzUgfSwKKwl7ICJjczYiLCBJUFRPU19EU0NQX0NTNiB9LAorCXsgImNzNyIsIElQVE9TX0RTQ1BfQ1M3IH0sCisJeyAiZWYiLCBJUFRPU19EU0NQX0VGIH0sCisJeyAibG93ZGVsYXkiLCBJUFRPU19MT1dERUxBWSB9LAorCXsgInRocm91Z2hwdXQiLCBJUFRPU19USFJPVUdIUFVUIH0sCisJeyAicmVsaWFiaWxpdHkiLCBJUFRPU19SRUxJQUJJTElUWSB9LAorCXsgTlVMTCwgLTEgfQorfTsKKworaW50CitwYXJzZV9pcHFvcyhjb25zdCBjaGFyICpjcCkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwljaGFyICplcCA9IE5VTEw7CisJbG9uZyB2YWw7CisKKwlpZiAoY3AgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCWZvciAoaSA9IDA7IGlwcW9zW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CisJCWlmIChzdHJjYXNlY21wKGNwLCBpcHFvc1tpXS5uYW1lKSA9PSAwKQorCQkJcmV0dXJuIGlwcW9zW2ldLnZhbHVlOworCX0KKwkvKiBUcnkgcGFyc2luZyBhcyBhbiBpbnRlZ2VyICovCisJdmFsID0gc3RydG9sKGNwLCAmZXAsIDApOworCWlmICgqY3AgPT0gJ1wwJyB8fCAqZXAgIT0gJ1wwJyB8fCB2YWwgPCAwIHx8IHZhbCA+IDI1NSkKKwkJcmV0dXJuIC0xOworCXJldHVybiB2YWw7Cit9CisKK2NvbnN0IGNoYXIgKgoraXB0b3Myc3RyKGludCBpcHRvcykKK3sKKwlpbnQgaTsKKwlzdGF0aWMgY2hhciBpcHRvc19zdHJbc2l6ZW9mICIweGZmIl07CisJaWYgKGlwdG9zIDwgMCB8fCBpcHRvcyA+IDY0KSBpcHRvcyA9IDA7CisJZm9yIChpID0gMDsgaXBxb3NbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKKwkJaWYgKGlwcW9zW2ldLnZhbHVlID09IGlwdG9zKQorCQkJcmV0dXJuIGlwcW9zW2ldLm5hbWU7CisJfQorCXNucHJpbnRmKGlwdG9zX3N0ciwgc2l6ZW9mIGlwdG9zX3N0ciwgIjB4JTAyeCIsIGlwdG9zKTsKKwlyZXR1cm4gaXB0b3Nfc3RyOworfQpkaWZmIC0tZ2l0IGEvaGlzdC5oIGIvc3JjL2hpc3QuaApzaW1pbGFyaXR5IGluZGV4IDYyJQpyZW5hbWUgZnJvbSBoaXN0LmgKcmVuYW1lIHRvIHNyYy9oaXN0LmgKaW5kZXggYjJlZDIyYi4uOTc2YzY0NyAxMDA2NDQKLS0tIGEvaGlzdC5oCisrKyBiL3NyYy9oaXN0LmgKQEAgLTgsNiArOCw5IEBACiAjICBpbmNsdWRlIDx0aW1lLmg+CiAjIGVuZGlmCiAjZW5kaWYKKyNpZmRlZiBXSU4zMgorIyAgaW5jbHVkZSAibWlzc2luZ1xzdGRpbnQuaCIKKyNlbmRpZgogCiAvKiBoaXN0LmgKIApAQCAtMzUsMjUgKzM4LDQ3IEBACiAjaWZuZGVmIF9ISVNUX0lOQ0xVREVECiAjZGVmaW5lIF9ISVNUX0lOQ0xVREVECiAKLSNpZmRlZiBJUklYCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZiAvKiBJUklYICovCi0KICNpZiBkZWZpbmVkKEhBVkVfR0VUX0hSVCkKICNpbmNsdWRlICJocnQuaCIKICNlbmRpZgogICAgCisjaWZuZGVmIEhJU1RfTlVNX09GX0JVQ0tFVAorI2RlZmluZSBISVNUX05VTV9PRl9CVUNLRVQgMTAwCisjZW5kaWYKKwogc3RydWN0IGhpc3RvZ3JhbV9zdHJ1Y3QgewotICBpbnQgdW5pdF91c2VjWzEwXTsKLSAgaW50IHRlbl91c2VjWzEwXTsKLSAgaW50IGh1bmRyZWRfdXNlY1sxMF07Ci0gIGludCB1bml0X21zZWNbMTBdOwotICBpbnQgdGVuX21zZWNbMTBdOwotICBpbnQgaHVuZHJlZF9tc2VjWzEwXTsKLSAgaW50IHVuaXRfc2VjWzEwXTsKLSAgaW50IHRlbl9zZWNbMTBdOworICBpbnQgdW5pdF91c2VjW0hJU1RfTlVNX09GX0JVQ0tFVF07CisgIGludCB0ZW5fdXNlY1tISVNUX05VTV9PRl9CVUNLRVRdOworICBpbnQgaHVuZHJlZF91c2VjW0hJU1RfTlVNX09GX0JVQ0tFVF07CisgIGludCB1bml0X21zZWNbSElTVF9OVU1fT0ZfQlVDS0VUXTsKKyAgaW50IHRlbl9tc2VjW0hJU1RfTlVNX09GX0JVQ0tFVF07CisgIGludCBodW5kcmVkX21zZWNbSElTVF9OVU1fT0ZfQlVDS0VUXTsKKyAgaW50IHVuaXRfc2VjW0hJU1RfTlVNX09GX0JVQ0tFVF07CisgIGludCB0ZW5fc2VjW0hJU1RfTlVNX09GX0JVQ0tFVF07CiAgIGludCByaWRpY3Vsb3VzOwogICBpbnQgdG90YWw7CisgIGludDY0X3Qgc3VtOworICBkb3VibGUgc3Vtc3F1YXJlOworICBpbnQgaG1pbjsKKyAgaW50IGhtYXg7CisgIGludCBsaW1pdDsKKyAgaW50IGNvdW50OworICBpbnQgcHJvZHVjZXI7CisgIGludCBjb25zdW1lcjsKKyNpZmRlZiBIQVZFX0dFVEhSVElNRQorICBocnRpbWVfdCAqdGltZV9vbmVzOworICBocnRpbWVfdCB0aW1lX3R3bzsKKyNlbGlmIEhBVkVfR0VUX0hSVAorICBocnRfdCAqdGltZV9vbmVzOworICBocnRfdCB0aW1lX3R3bzsKKyNlbGlmIGRlZmluZWQoV0lOMzIpCisgIExBUkdFX0lOVEVHRVIgKnRpbWVfb25lczsKKyAgTEFSR0VfSU5URUdFUiB0aW1lX3R3bzsKKyNlbHNlCisgIHN0cnVjdCB0aW1ldmFsICp0aW1lX29uZXM7CisgIHN0cnVjdCB0aW1ldmFsIHRpbWVfdHdvOworI2VuZGlmIC8qIEhBVkVfR0VUSFJUSU1FICovCisKIH07CiAKIHR5cGVkZWYgc3RydWN0IGhpc3RvZ3JhbV9zdHJ1Y3QgKkhJU1Q7CkBAIC02NSwxMiArOTAsMjcgQEAKIEhJU1QgSElTVF9uZXcodm9pZCk7IAogCiAvKiAKKyAgIEhJU1RfbmV3X24gLSByZXR1cm4gYSBuZXcsIGNsZWFyZCBoaXN0b2dyYW0gZGF0YSB0eXBlIGFibGUgdG8gdHJhY2sKKyAgIGF0IGxlYXN0IG1heF9vdXRzdGFuZGluZyB0aW1lc3RhbXBzCisqLworCitISVNUIEhJU1RfbmV3X24oaW50IG1heF9vdXRzdGFuZGluZyk7CisKKy8qIAogICAgSElTVF9jbGVhciAtIHJlc2V0IGEgaGlzdG9ncmFtIGJ5IGNsZWFyaW5nIGFsbCB0b3RhbHMgdG8gemVybwogKi8KIAorCiB2b2lkIEhJU1RfY2xlYXIoSElTVCBoKTsKIAogLyoKKyAgIEhJU1RfcHVyZ2UgLSBmb3JnZXQgYWJvdXQgYW55IHJlbWFpbmluZyBvdXRzdGFuZGluZyB0aW1lc3RhbXBzCisgICBiZWluZyB0cmFja2VkIAorKi8KKwordm9pZCBISVNUX3B1cmdlKEhJU1QgaCk7CisKKy8qCiAgICBISVNUX2FkZCAtIGFkZCBhIHRpbWUgZGlmZmVyZW5jZSB0byBhIGhpc3RvZ3JhbS4gVGltZSBzaG91bGQgYmUgaW4KICAgIG1pY3Jvc2Vjb25kcy4gCiAqLwpAQCAtOTksNiArMTM5LDE5IEBACiAjZW5kaWYKIAogLyoKKyAgSElTVF90aW1lc3RhbXBfc3RhcnQgLSBzdGFydCBhIG5ldyB0aW1lc3RhbXAKKyovCisKK3ZvaWQgSElTVF90aW1lc3RhbXBfc3RhcnQoSElTVCBoKTsKKworLyogCisgIEhJU1RfdGltZXN0YW1wX3N0b3BfYWRkIC0gY29tcGxldGUgdGhlIG9sZGVzdCBvdXRzdGFuZGluZyB0aW1lc3RhbXAKKyAgYW5kIGFkZCBpdCB0byB0aGUgaGlzdG9ncmFtCisqLworCit2b2lkIEhJU1RfdGltZXN0YW1wX3N0b3BfYWRkKEhJU1QgaCk7CisKKy8qCiAgIGRlbHRhX21pY3JvIC0gY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuIHR3bwogICB0aW1lc3RhbXBzCiAqLwpkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvTWFrZWZpbGUuYW0gYi9zcmMvbWlzc2luZy9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTcyY2NhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSw3IEBACitTVUJESVJTID0gbTQKKworaWYgTkVFRF9MSUJDT01QQVQgCitub2luc3RfTElCUkFSSUVTID0gbGliY29tcGF0LmEKK2xpYmNvbXBhdF9hX1NPVVJDRVMgPSBnZXRhZGRyaW5mby5oCitsaWJjb21wYXRfYV9MSUJBREQgPSAkKExJQk9CSlMpICQoQUxMT0NBKQorZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9taXNzaW5nL01ha2VmaWxlLmluIGIvc3JjL21pc3NpbmcvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJhZjY2ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9taXNzaW5nL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsNTk1IEBACisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKworIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0CisjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFLgorCitAU0VUX01BS0VACisKK1ZQQVRIID0gQHNyY2RpckAKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACitwa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKK2FtX19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QKK2luc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMKK0lOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCitOT1JNQUxfSU5TVEFMTCA9IDoKK1BSRV9JTlNUQUxMID0gOgorUE9TVF9JTlNUQUxMID0gOgorTk9STUFMX1VOSU5TVEFMTCA9IDoKK1BSRV9VTklOU1RBTEwgPSA6CitQT1NUX1VOSU5TVEFMTCA9IDoKK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRACitob3N0X3RyaXBsZXQgPSBAaG9zdEAKK3RhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK3N1YmRpciA9IHNyYy9taXNzaW5nCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAorCWdldGFkZHJpbmZvLmMgaW5ldF9udG9wLmMKK0FDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKK2FtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL3NyYy9taXNzaW5nL200L3NhbGVuLm00IFwKKwkkKHRvcF9zcmNkaXIpL2FjaW5jbHVkZS5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKKwkkKEFDTE9DQUxfTTQpCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzCitDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCitDT05GSUdfQ0xFQU5fRklMRVMgPQorQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KK0xJQlJBUklFUyA9ICQobm9pbnN0X0xJQlJBUklFUykKK0FSID0gYXIKK0FSRkxBR1MgPSBjcnUKK2xpYmNvbXBhdF9hX0FSID0gJChBUikgJChBUkZMQUdTKQorQE5FRURfTElCQ09NUEFUX1RSVUVAbGliY29tcGF0X2FfREVQRU5ERU5DSUVTID0gJChMSUJPQkpTKQorYW1fX2xpYmNvbXBhdF9hX1NPVVJDRVNfRElTVCA9IGdldGFkZHJpbmZvLmgKK2FtX2xpYmNvbXBhdF9hX09CSkVDVFMgPQorbGliY29tcGF0X2FfT0JKRUNUUyA9ICQoYW1fbGliY29tcGF0X2FfT0JKRUNUUykKK0RFRkFVTFRfSU5DTFVERVMgPSAtSS5AYW1fX2lzcmNAIC1JJCh0b3BfYnVpbGRkaXIpCitkZXBjb21wID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9kZXBjb21wCithbV9fZGVwZmlsZXNfbWF5YmUgPSBkZXBmaWxlcworYW1fX212ID0gbXYgLWYKK0NPTVBJTEUgPSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgXAorCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKK0NDTEQgPSAkKENDKQorTElOSyA9ICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK1NPVVJDRVMgPSAkKGxpYmNvbXBhdF9hX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGFtX19saWJjb21wYXRfYV9TT1VSQ0VTX0RJU1QpCitSRUNVUlNJVkVfVEFSR0VUUyA9IGFsbC1yZWN1cnNpdmUgY2hlY2stcmVjdXJzaXZlIGR2aS1yZWN1cnNpdmUgXAorCWh0bWwtcmVjdXJzaXZlIGluZm8tcmVjdXJzaXZlIGluc3RhbGwtZGF0YS1yZWN1cnNpdmUgXAorCWluc3RhbGwtZHZpLXJlY3Vyc2l2ZSBpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIFwKKwlpbnN0YWxsLWh0bWwtcmVjdXJzaXZlIGluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAorCWluc3RhbGwtcGRmLXJlY3Vyc2l2ZSBpbnN0YWxsLXBzLXJlY3Vyc2l2ZSBpbnN0YWxsLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZSBpbnN0YWxsZGlycy1yZWN1cnNpdmUgcGRmLXJlY3Vyc2l2ZSBcCisJcHMtcmVjdXJzaXZlIHVuaW5zdGFsbC1yZWN1cnNpdmUKK1JFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTID0gbW9zdGx5Y2xlYW4tcmVjdXJzaXZlIGNsZWFuLXJlY3Vyc2l2ZQlcCisgIGRpc3RjbGVhbi1yZWN1cnNpdmUgbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKK0FNX1JFQ1VSU0lWRV9UQVJHRVRTID0gJChSRUNVUlNJVkVfVEFSR0VUUzotcmVjdXJzaXZlPSkgXAorCSQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFM6LXJlY3Vyc2l2ZT0pIHRhZ3MgVEFHUyBjdGFncyBDVEFHUyBcCisJZGlzdGRpcgorRVRBR1MgPSBldGFncworQ1RBR1MgPSBjdGFncworRElTVF9TVUJESVJTID0gJChTVUJESVJTKQorRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKK2FtX19yZWxhdGl2aXplID0gXAorICBkaXIwPWBwd2RgOyBcCisgIHNlZF9maXJzdD0ncyxeXChbXi9dKlwpLy4qJCQsXDEsJzsgXAorICBzZWRfcmVzdD0ncyxeW14vXSovKiwsJzsgXAorICBzZWRfbGFzdD0ncyxeLiovXChbXi9dKlwpJCQsXDEsJzsgXAorICBzZWRfYnV0bGFzdD0ncywvKlteL10qJCQsLCc7IFwKKyAgd2hpbGUgdGVzdCAtbiAiJCRkaXIxIjsgZG8gXAorICAgIGZpcnN0PWBlY2hvICIkJGRpcjEiIHwgc2VkIC1lICIkJHNlZF9maXJzdCJgOyBcCisgICAgaWYgdGVzdCAiJCRmaXJzdCIgIT0gIi4iOyB0aGVuIFwKKyAgICAgIGlmIHRlc3QgIiQkZmlyc3QiID0gIi4uIjsgdGhlbiBcCisgICAgICAgIGRpcjI9YGVjaG8gIiQkZGlyMCIgfCBzZWQgLWUgIiQkc2VkX2xhc3QiYC8iJCRkaXIyIjsgXAorICAgICAgICBkaXIwPWBlY2hvICIkJGRpcjAiIHwgc2VkIC1lICIkJHNlZF9idXRsYXN0ImA7IFwKKyAgICAgIGVsc2UgXAorICAgICAgICBmaXJzdDI9YGVjaG8gIiQkZGlyMiIgfCBzZWQgLWUgIiQkc2VkX2ZpcnN0ImA7IFwKKyAgICAgICAgaWYgdGVzdCAiJCRmaXJzdDIiID0gIiQkZmlyc3QiOyB0aGVuIFwKKyAgICAgICAgICBkaXIyPWBlY2hvICIkJGRpcjIiIHwgc2VkIC1lICIkJHNlZF9yZXN0ImA7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgZGlyMj0iLi4vJCRkaXIyIjsgXAorICAgICAgICBmaTsgXAorICAgICAgICBkaXIwPSIkJGRpcjAiLyIkJGZpcnN0IjsgXAorICAgICAgZmk7IFwKKyAgICBmaTsgXAorICAgIGRpcjE9YGVjaG8gIiQkZGlyMSIgfCBzZWQgLWUgIiQkc2VkX3Jlc3QiYDsgXAorICBkb25lOyBcCisgIHJlbGRpcj0iJCRkaXIyIgorQUNMT0NBTCA9IEBBQ0xPQ0FMQAorQU1UQVIgPSBAQU1UQVJACitBVVRPQ09ORiA9IEBBVVRPQ09ORkAKK0FVVE9IRUFERVIgPSBAQVVUT0hFQURFUkAKK0FVVE9NQUtFID0gQEFVVE9NQUtFQAorQVdLID0gQEFXS0AKK0NDID0gQENDQAorQ0NERVBNT0RFID0gQENDREVQTU9ERUAKK0NGTEFHUyA9IEBDRkxBR1NACitDUFAgPSBAQ1BQQAorQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAorREVGUyA9IEBERUZTQAorREVQRElSID0gQERFUERJUkAKK0VDSE9fQyA9IEBFQ0hPX0NACitFQ0hPX04gPSBARUNIT19OQAorRUNIT19UID0gQEVDSE9fVEAKK0VHUkVQID0gQEVHUkVQQAorRVhFRVhUID0gQEVYRUVYVEAKK0dSRVAgPSBAR1JFUEAKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5TVEFMTF9TVFJJUF9QUk9HUkFNQAorTERGTEFHUyA9IEBMREZMQUdTQAorTElCT0JKUyA9IEBMSUJPQkpTQAorTElCUyA9IEBMSUJTQAorTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK01BS0VJTkZPID0gQE1BS0VJTkZPQAorTUtESVJfUCA9IEBNS0RJUl9QQAorTkVUQ1BVX1NPVVJDRSA9IEBORVRDUFVfU09VUkNFQAorT0JKRVhUID0gQE9CSkVYVEAKK1BBQ0tBR0UgPSBAUEFDS0FHRUAKK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKK1BBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAorUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKK1BBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAorUkFOTElCID0gQFJBTkxJQkAKK1NFVF9NQUtFID0gQFNFVF9NQUtFQAorU0hFTEwgPSBAU0hFTExACitTVFJJUCA9IEBTVFJJUEAKK1ZFUlNJT04gPSBAVkVSU0lPTkAKK2Fic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACithYnNfc3JjZGlyID0gQGFic19zcmNkaXJACithYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACithYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0NDID0gQGFjX2N0X0NDQAorYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACithbV9fbGVhZGluZ19kb3QgPSBAYW1fX2xlYWRpbmdfZG90QAorYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKK2FtX190YXIgPSBAYW1fX3RhckAKK2FtX191bnRhciA9IEBhbV9fdW50YXJACitiaW5kaXIgPSBAYmluZGlyQAorYnVpbGQgPSBAYnVpbGRACitidWlsZF9hbGlhcyA9IEBidWlsZF9hbGlhc0AKK2J1aWxkX2NwdSA9IEBidWlsZF9jcHVACitidWlsZF9vcyA9IEBidWlsZF9vc0AKK2J1aWxkX3ZlbmRvciA9IEBidWlsZF92ZW5kb3JACitidWlsZGRpciA9IEBidWlsZGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2RhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorZG9jZGlyID0gQGRvY2RpckAKK2R2aWRpciA9IEBkdmlkaXJACitleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK2hvc3QgPSBAaG9zdEAKK2hvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKK2hvc3RfY3B1ID0gQGhvc3RfY3B1QAoraG9zdF9vcyA9IEBob3N0X29zQAoraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACitodG1sZGlyID0gQGh0bWxkaXJACitpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACitpbmZvZGlyID0gQGluZm9kaXJACitpbnN0YWxsX3NoID0gQGluc3RhbGxfc2hACitsaWJkaXIgPSBAbGliZGlyQAorbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAorbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKK2xvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKK21hbmRpciA9IEBtYW5kaXJACitta2Rpcl9wID0gQG1rZGlyX3BACitvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACitwZGZkaXIgPSBAcGRmZGlyQAorcHJlZml4ID0gQHByZWZpeEAKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKK3BzZGlyID0gQHBzZGlyQAorc2JpbmRpciA9IEBzYmluZGlyQAorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACitzcmNkaXIgPSBAc3JjZGlyQAorc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAordGFyZ2V0ID0gQHRhcmdldEAKK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACit0YXJnZXRfY3B1ID0gQHRhcmdldF9jcHVACit0YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAordGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAordG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAordG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1NVQkRJUlMgPSBtNAorQE5FRURfTElCQ09NUEFUX1RSVUVAbm9pbnN0X0xJQlJBUklFUyA9IGxpYmNvbXBhdC5hCitATkVFRF9MSUJDT01QQVRfVFJVRUBsaWJjb21wYXRfYV9TT1VSQ0VTID0gZ2V0YWRkcmluZm8uaAorQE5FRURfTElCQ09NUEFUX1RSVUVAbGliY29tcGF0X2FfTElCQUREID0gJChMSUJPQkpTKSAkKEFMTE9DQSkKK2FsbDogYWxsLXJlY3Vyc2l2ZQorCisuU1VGRklYRVM6CisuU1VGRklYRVM6IC5jIC5vIC5vYmoKKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJQGZvciBkZXAgaW4gJD87IGRvIFwKKwkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4gXAorCSAgICAqJCRkZXAqKSBcCisJICAgICAgKCBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2ggKSBcCisJICAgICAgICAmJiB7IGlmIHRlc3QgLWYgJEA7IHRoZW4gZXhpdCAwOyBlbHNlIGJyZWFrOyBmaTsgfTsgXAorCSAgICAgIGV4aXQgMTs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgc3JjL21pc3NpbmcvTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgc3JjL21pc3NpbmcvTWFrZWZpbGUKKy5QUkVDSU9VUzogTWFrZWZpbGUKK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwlAY2FzZSAnJD8nIGluIFwKKwkgICpjb25maWcuc3RhdHVzKikgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2g7OyBcCisJICAqKSBcCisJICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCisJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKKwllc2FjOworCiskKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKKworJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6ICAkKGFtX19jb25maWd1cmVfZGVwcykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKKyQoQUNMT0NBTF9NNCk6ICAkKGFtX19hY2xvY2FsX200X2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKGFtX19hY2xvY2FsX200X2RlcHMpOgorCitjbGVhbi1ub2luc3RMSUJSQVJJRVM6CisJLXRlc3QgLXogIiQobm9pbnN0X0xJQlJBUklFUykiIHx8IHJtIC1mICQobm9pbnN0X0xJQlJBUklFUykKK2xpYmNvbXBhdC5hOiAkKGxpYmNvbXBhdF9hX09CSkVDVFMpICQobGliY29tcGF0X2FfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmNvbXBhdF9hX0RFUEVOREVOQ0lFUykgCisJLXJtIC1mIGxpYmNvbXBhdC5hCisJJChsaWJjb21wYXRfYV9BUikgbGliY29tcGF0LmEgJChsaWJjb21wYXRfYV9PQkpFQ1RTKSAkKGxpYmNvbXBhdF9hX0xJQkFERCkKKwkkKFJBTkxJQikgbGliY29tcGF0LmEKKworbW9zdGx5Y2xlYW4tY29tcGlsZToKKwktcm0gLWYgKi4kKE9CSkVYVCkKKworZGlzdGNsZWFuLWNvbXBpbGU6CisJLXJtIC1mICoudGFiLmMKKworQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQCQoREVQRElSKS9nZXRhZGRyaW5mby5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAJChERVBESVIpL2luZXRfbnRvcC5Qb0BhbV9fcXVvdGVACisKKy5jLm86CitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJCouVHBvIC1jIC1vICRAICQ8CitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJChERVBESVIpLyQqLlRwbyAkKERFUERJUikvJCouUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENPTVBJTEUpIC1jICQ8CisKKy5jLm9iajoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKi5UcG8gLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS8kKi5UcG8gJChERVBESVIpLyQqLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDT01QSUxFKSAtYyBgJChDWUdQQVRIX1cpICckPCdgCisKKyMgVGhpcyBkaXJlY3RvcnkncyBzdWJkaXJlY3RvcmllcyBhcmUgbW9zdGx5IGluZGVwZW5kZW50OyB5b3UgY2FuIGNkCisjIGludG8gdGhlbSBhbmQgcnVuIGBtYWtlJyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhpcyBNYWtlZmlsZS4KKyMgVG8gY2hhbmdlIHRoZSB2YWx1ZXMgb2YgYG1ha2UnIHZhcmlhYmxlczogaW5zdGVhZCBvZiBlZGl0aW5nIE1ha2VmaWxlcywKKyMgKDEpIGlmIHRoZSB2YXJpYWJsZSBpcyBzZXQgaW4gYGNvbmZpZy5zdGF0dXMnLCBlZGl0IGBjb25maWcuc3RhdHVzJworIyAgICAgKHdoaWNoIHdpbGwgY2F1c2UgdGhlIE1ha2VmaWxlcyB0byBiZSByZWdlbmVyYXRlZCB3aGVuIHlvdSBydW4gYG1ha2UnKTsKKyMgKDIpIG90aGVyd2lzZSwgcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgb24gdGhlIGBtYWtlJyBjb21tYW5kIGxpbmUuCiskKFJFQ1VSU0lWRV9UQVJHRVRTKToKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAorCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKKwkgIGNhc2UgJCRmIGluIFwKKwkgICAgKj0qIHwgLS1bIWtdKik7OyBcCisJICAgICprKikgZmFpbGNvbT0nZmFpbD15ZXMnOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwlkb3Rfc2Vlbj1ubzsgXAorCXRhcmdldD1gZWNobyAkQCB8IHNlZCBzLy1yZWN1cnNpdmUvL2A7IFwKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGVjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiBcCisJICAgIGRvdF9zZWVuPXllczsgXAorCSAgICBsb2NhbF90YXJnZXQ9IiQkdGFyZ2V0LWFtIjsgXAorCSAgZWxzZSBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQiOyBcCisJICBmaTsgXAorCSAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSAkJGxvY2FsX3RhcmdldCkgXAorCSAgfHwgZXZhbCAkJGZhaWxjb207IFwKKwlkb25lOyBcCisJaWYgdGVzdCAiJCRkb3Rfc2VlbiIgPSAibm8iOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICIkJHRhcmdldC1hbSIgfHwgZXhpdCAxOyBcCisJZmk7IHRlc3QgLXogIiQkZmFpbCIKKworJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUyk6CisJQGZhaWw9IGZhaWxjb209J2V4aXQgMSc7IFwKKwlmb3IgZiBpbiB4ICQkTUFLRUZMQUdTOyBkbyBcCisJICBjYXNlICQkZiBpbiBcCisJICAgICo9KiB8IC0tWyFrXSopOzsgXAorCSAgICAqayopIGZhaWxjb209J2ZhaWw9eWVzJzs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZG90X3NlZW49bm87IFwKKwljYXNlICIkQCIgaW4gXAorCSAgZGlzdGNsZWFuLSogfCBtYWludGFpbmVyLWNsZWFuLSopIGxpc3Q9JyQoRElTVF9TVUJESVJTKScgOzsgXAorCSAgKikgbGlzdD0nJChTVUJESVJTKScgOzsgXAorCWVzYWM7IFwKKwlyZXY9Jyc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAiLiI7IHRoZW4gOjsgZWxzZSBcCisJICAgIHJldj0iJCRzdWJkaXIgJCRyZXYiOyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwlyZXY9IiQkcmV2IC4iOyBcCisJdGFyZ2V0PWBlY2hvICRAIHwgc2VkIHMvLXJlY3Vyc2l2ZS8vYDsgXAorCWZvciBzdWJkaXIgaW4gJCRyZXY7IGRvIFwKKwkgIGVjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQtYW0iOyBcCisJICBlbHNlIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldCI7IFwKKwkgIGZpOyBcCisJICAoJChhbV9fY2QpICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQkbG9jYWxfdGFyZ2V0KSBcCisJICB8fCBldmFsICQkZmFpbGNvbTsgXAorCWRvbmUgJiYgdGVzdCAteiAiJCRmYWlsIgordGFncy1yZWN1cnNpdmU6CisJbGlzdD0nJChTVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICB0ZXN0ICIkJHN1YmRpciIgPSAuIHx8ICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgdGFncyk7IFwKKwlkb25lCitjdGFncy1yZWN1cnNpdmU6CisJbGlzdD0nJChTVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICB0ZXN0ICIkJHN1YmRpciIgPSAuIHx8ICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgY3RhZ3MpOyBcCisJZG9uZQorCitJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCisJICBkb25lIHwgXAorCSAgJChBV0spICd7IGZpbGVzWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAorCSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07IH0nYDsgXAorCW1raWQgLWZJRCAkJHVuaXF1ZQordGFnczogVEFHUworCitUQUdTOiB0YWdzLXJlY3Vyc2l2ZSAkKEhFQURFUlMpICQoU09VUkNFUykgICQoVEFHU19ERVBFTkRFTkNJRVMpIFwKKwkJJChUQUdTX0ZJTEVTKSAkKExJU1ApCisJc2V0IHg7IFwKKwloZXJlPWBwd2RgOyBcCisJaWYgKCQoRVRBR1MpIC0tZXRhZ3MtaW5jbHVkZSAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICBpbmNsdWRlX29wdGlvbj0tLWV0YWdzLWluY2x1ZGU7IFwKKwkgIGVtcHR5X2ZpeD0uOyBcCisJZWxzZSBcCisJICBpbmNsdWRlX29wdGlvbj0tLWluY2x1ZGU7IFwKKwkgIGVtcHR5X2ZpeD07IFwKKwlmaTsgXAorCWxpc3Q9JyQoU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgdGVzdCAhIC1mICQkc3ViZGlyL1RBR1MgfHwgXAorCSAgICAgIHNldCAiJCRAIiAiJCRpbmNsdWRlX29wdGlvbj0kJGhlcmUvJCRzdWJkaXIvVEFHUyI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZG9uZSB8IFwKKwkgICQoQVdLKSAneyBmaWxlc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9OyB9J2A7IFwKKwlzaGlmdDsgXAorCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCisJICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCisJICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAorCSAgZWxzZSBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAkJHVuaXF1ZTsgXAorCSAgZmk7IFwKKwlmaQorY3RhZ3M6IENUQUdTCitDVEFHUzogY3RhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXAorCQkkKFRBR1NfRklMRVMpICQoTElTUCkKKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdW5pcXVlIiBcCisJICB8fCAkKENUQUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcCisJICAgICAkJHVuaXF1ZQorCitHVEFHUzoKKwloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXAorCSAgJiYgJChhbV9fY2QpICQodG9wX3NyY2RpcikgXAorCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIgorCitkaXN0Y2xlYW4tdGFnczoKKwktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncworCitkaXN0ZGlyOiAkKERJU1RGSUxFUykKKwlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCWxpc3Q9JyQoRElTVEZJTEVTKSc7IFwKKwkgIGRpc3RfZmlsZXM9YGZvciBmaWxlIGluICQkbGlzdDsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBcCisJICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAvfHw7dCIgXAorCSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKKwljYXNlICQkZGlzdF9maWxlcyBpbiBcCisJICAqLyopICQoTUtESVJfUCkgYGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCisJCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcgfCBcCisJCQkgICBzb3J0IC11YCA7OyBcCisJZXNhYzsgXAorCWZvciBmaWxlIGluICQkZGlzdF9maWxlczsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGUgfHwgdGVzdCAtZCAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAorCSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKKwkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSokJCwsJ2A7IFwKKwkgICAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJGZpbGUiOyB0aGVuIFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgaWYgdGVzdCAtZCAkKHNyY2RpcikvJCRmaWxlICYmIHRlc3QgJCRkICE9ICQoc3JjZGlyKTsgdGhlbiBcCisJICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICBlbHNlIFwKKwkgICAgdGVzdCAtZiAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwlAbGlzdD0nJChESVNUX1NVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9IC47IHRoZW4gOjsgZWxzZSBcCisJICAgIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRzdWJkaXIiIFwKKwkgICAgfHwgJChNS0RJUl9QKSAiJChkaXN0ZGlyKS8kJHN1YmRpciIgXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorCUBsaXN0PSckKERJU1RfU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgZGlyMT0kJHN1YmRpcjsgZGlyMj0iJChkaXN0ZGlyKS8kJHN1YmRpciI7IFwKKwkgICAgJChhbV9fcmVsYXRpdml6ZSk7IFwKKwkgICAgbmV3X2Rpc3RkaXI9JCRyZWxkaXI7IFwKKwkgICAgZGlyMT0kJHN1YmRpcjsgZGlyMj0iJCh0b3BfZGlzdGRpcikiOyBcCisJICAgICQoYW1fX3JlbGF0aXZpemUpOyBcCisJICAgIG5ld190b3BfZGlzdGRpcj0kJHJlbGRpcjsgXAorCSAgICBlY2hvICIgKGNkICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHRvcF9kaXN0ZGlyPSIkJG5ld190b3BfZGlzdGRpciIgZGlzdGRpcj0iJCRuZXdfZGlzdGRpciIgXFwiOyBcCisJICAgIGVjaG8gIiAgICAgYW1fX3JlbW92ZV9kaXN0ZGlyPTogYW1fX3NraXBfbGVuZ3RoX2NoZWNrPTogYW1fX3NraXBfbW9kZV9maXg9OiBkaXN0ZGlyKSI7IFwKKwkgICAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiBcCisJICAgICAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgXAorCSAgICAgICAgdG9wX2Rpc3RkaXI9IiQkbmV3X3RvcF9kaXN0ZGlyIiBcCisJICAgICAgICBkaXN0ZGlyPSIkJG5ld19kaXN0ZGlyIiBcCisJCWFtX19yZW1vdmVfZGlzdGRpcj06IFwKKwkJYW1fX3NraXBfbGVuZ3RoX2NoZWNrPTogXAorCQlhbV9fc2tpcF9tb2RlX2ZpeD06IFwKKwkgICAgICAgIGRpc3RkaXIpIFwKKwkgICAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorY2hlY2stYW06IGFsbC1hbQorY2hlY2s6IGNoZWNrLXJlY3Vyc2l2ZQorYWxsLWFtOiBNYWtlZmlsZSAkKExJQlJBUklFUykKK2luc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1yZWN1cnNpdmUKK2luc3RhbGxkaXJzLWFtOgoraW5zdGFsbDogaW5zdGFsbC1yZWN1cnNpdmUKK2luc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLXJlY3Vyc2l2ZQoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtcmVjdXJzaXZlCit1bmluc3RhbGw6IHVuaW5zdGFsbC1yZWN1cnNpdmUKKworaW5zdGFsbC1hbTogYWxsLWFtCisJQCQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0KKworaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stcmVjdXJzaXZlCitpbnN0YWxsLXN0cmlwOgorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQorbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKKworY2xlYW4tZ2VuZXJpYzoKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCisKK21haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorY2xlYW46IGNsZWFuLXJlY3Vyc2l2ZQorCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1ub2luc3RMSUJSQVJJRVMgbW9zdGx5Y2xlYW4tYW0KKworZGlzdGNsZWFuOiBkaXN0Y2xlYW4tcmVjdXJzaXZlCisJLXJtIC1yZiAkKERFUERJUikKKwktcm0gLWYgTWFrZWZpbGUKK2Rpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAorCWRpc3RjbGVhbi10YWdzCisKK2R2aTogZHZpLXJlY3Vyc2l2ZQorCitkdmktYW06CisKK2h0bWw6IGh0bWwtcmVjdXJzaXZlCisKK2h0bWwtYW06CisKK2luZm86IGluZm8tcmVjdXJzaXZlCisKK2luZm8tYW06CisKK2luc3RhbGwtZGF0YS1hbToKKworaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLXJlY3Vyc2l2ZQorCitpbnN0YWxsLWR2aS1hbToKKworaW5zdGFsbC1leGVjLWFtOgorCitpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1yZWN1cnNpdmUKKworaW5zdGFsbC1odG1sLWFtOgorCitpbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1yZWN1cnNpdmUKKworaW5zdGFsbC1pbmZvLWFtOgorCitpbnN0YWxsLW1hbjoKKworaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLXJlY3Vyc2l2ZQorCitpbnN0YWxsLXBkZi1hbToKKworaW5zdGFsbC1wczogaW5zdGFsbC1wcy1yZWN1cnNpdmUKKworaW5zdGFsbC1wcy1hbToKKworaW5zdGFsbGNoZWNrLWFtOgorCittYWludGFpbmVyLWNsZWFuOiBtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZQorCS1ybSAtcmYgJChERVBESVIpCisJLXJtIC1mIE1ha2VmaWxlCittYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCisKK21vc3RseWNsZWFuOiBtb3N0bHljbGVhbi1yZWN1cnNpdmUKKworbW9zdGx5Y2xlYW4tYW06IG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYworCitwZGY6IHBkZi1yZWN1cnNpdmUKKworcGRmLWFtOgorCitwczogcHMtcmVjdXJzaXZlCisKK3BzLWFtOgorCit1bmluc3RhbGwtYW06CisKKy5NQUtFOiAkKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKSAkKFJFQ1VSU0lWRV9UQVJHRVRTKSBjdGFncy1yZWN1cnNpdmUgXAorCWluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcCB0YWdzLXJlY3Vyc2l2ZQorCisuUEhPTlk6ICQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMpICQoUkVDVVJTSVZFX1RBUkdFVFMpIENUQUdTIEdUQUdTIFwKKwlhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAorCWNsZWFuLW5vaW5zdExJQlJBUklFUyBjdGFncyBjdGFncy1yZWN1cnNpdmUgZGlzdGNsZWFuIFwKKwlkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBcCisJZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIFwKKwlpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIFwKKwlpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gXAorCWluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgXAorCWluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIFwKKwlpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIGluc3RhbGxkaXJzLWFtIFwKKwltYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBcCisJbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gXAorCXRhZ3MgdGFncy1yZWN1cnNpdmUgdW5pbnN0YWxsIHVuaW5zdGFsbC1hbQorCisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3NyYy9taXNzaW5nL2dldGFkZHJpbmZvLmMgYi9zcmMvbWlzc2luZy9nZXRhZGRyaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZjI5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWlzc2luZy9nZXRhZGRyaW5mby5jCkBAIC0wLDAgKzEsNjA1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDAxLCAwMiAgTW90b3l1a2kgS2FzYWhhcmEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFRoaXMgcHJvZ3JhbSBwcm92aWRlcyBnZXRhZGRyaW5mbygpIGFuZCBnZXRuYW1laW5mbygpIGRlc2NyaWJlZCBpbgorICogUkZDMjEzMywgMjU1MyBhbmQgMzQ5My4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbWFpbmx5IHVzZWQgZm9yIElQdjYKKyAqIGFwcGxpY2F0aW9uIHRvIHJlc29sdmUgaG9zdG5hbWUgb3IgYWRkcmVzcy4KKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGRlc2lnbmVkIHRvIGJlIHdvcmtpbmcgb24gdHJhZGl0aW9uYWwgSVB2NCBzeXN0ZW1zCisgKiB3aGljaCBkb24ndCBoYXZlIHRob3NlIGZ1bmN0aW9ucy4gIFRoZXJlZm9yZSwgdGhpcyBpbXBsZW1lbnRhdGlvbgorICogc3VwcG9ydHMgSVB2NCBvbmx5LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyB1c2VmdWwgZm9yIGFwcGxpY2F0aW9uIHdoaWNoIHNob3VsZCBzdXBwb3J0IGJvdGggSVB2NgorICogYW5kIHRyYWRpdGlvbmFsIElQdjQgc3lzdGVtcy4gIFVzZSBnZW51aW5lIGdldGFkZHJpbmZvKCkgYW5kIGdldG5hbWVpbmZvKCkKKyAqIHByb3ZpZGVkIGJ5IHN5c3RlbSBpZiB0aGUgc3lzdGVtIHN1cHBvcnRzIElQdjYuICBPdGhlcndpc2UsIHVzZSB0aGlzCisgKiBpbXBsZW1lbnRhdGlvbi4KKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBHTlUgQXV0b2NvbmYuCisgKiAKKyAqIFRoaXMgcHJvZ3JhbSBhbHNvIHByb3ZpZGVzIGZyZWVhZGRyaW5mbygpIGFuZCBnYWlfc3RyZXJyb3IoKS4KKyAqCisgKiBUbyB1c2UgdGhpcyBwcm9ncmFtIGluIHlvdXIgYXBwbGljYXRpb24sIGluc2VydCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvCisgKiBDIHNvdXJjZSBmaWxlcyBhZnRlciBpbmNsdWRpbmcgYHN5cy90eXBlcy5oJywgYHN5cy9zb2NrZXQuaCcgYW5kCisgKiBgbmV0ZGIuaCcuICBgZ2V0YWRkcmluZm8uaCcgZGVmaW5lcyBgc3RydWN0IGFkZHJpbmZvJyBhbmQgQUlfLCBOSV8sCisgKiBFQUlfIG1hY3Jvcy4KKyAqIAorICogICAgI2lmbmRlZiBIQVZFX0dFVEFERFJJTkZPCisgKiAgICAjaW5jbHVkZSAiZ2V0YWRkcmluZm8uaCIKKyAqICAgICNlbmRpZgorICogCisgKiBSZXN0cmljdGlvbjoKKyAqICAgZ2V0YWRkcmluZm8oKSBhbmQgZ2V0bmFtZWluZm8oKSBvZiB0aGlzIHByb2dyYW0gYXJlIE5PVCB0aHJlYWQKKyAqICAgc2FmZSwgdW5sZXNzIHRoZSBjcHAgbWFjcm8gRU5BQkxFX1BUSFJFQUQgaXMgZGVmaW5lZC4KKyAqLworCisvKgorICogQWRkIHRoZSBmb2xsb3dpbmcgY29kZSB0byB5b3VyIGNvbmZpZ3VyZS5hYyAob3IgY29uZmlndXJlLmluKS4KKyAqICAgQUNfQ19DT05TVAorICogICBBQ19IRUFERVJfU1REQworICogICBBQ19DSEVDS19IRUFERVJTKHN0cmluZy5oIG1lbW9yeS5oIHN0ZGxpYi5oKQorICogICBBQ19DSEVDS19GVU5DUyhtZW1jcHkpCisgKiAgIEFDX1JFUExBQ0VfRlVOQ1MobWVtc2V0KQorICogICBBQ19UWVBFX1NPQ0tMRU5fVAorICogICBBQ19UWVBFX0lOX1BPUlRfVAorICogICBBQ19ERUNMX0hfRVJSTk8KKyAqCisgKiAgIEFDX0NIRUNLX0ZVTkNTKGdldGFkZHJpbmZvIGdldG5hbWVpbmZvKQorICogICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19nZXRhZGRyaW5mbyRhY19jdl9mdW5jX2dldG5hbWVpbmZvIiAhPSB5ZXN5ZXMgOyB0aGVuCisgKiAgICAgICBMSUJPQkpTPSIkTElCT0JKUyBnZXRhZGRyaW5mby4kYWNfb2JqZXh0IgorICogICBmaQorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiBXSU4zMgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2lmZGVmIERPX0lQVjYKKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmICAvKiBET19JUFY2ICovCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyAKKworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorCisjaWYgZGVmaW5lZChTVERDX0hFQURFUlMpIHx8IGRlZmluZWQoSEFWRV9TVFJJTkdfSCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiAhZGVmaW5lZChTVERDX0hFQURFUlMpICYmIGRlZmluZWQoSEFWRV9NRU1PUllfSCkKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNlbmRpZiAvKiBub3QgU1REQ19IRUFERVJTIGFuZCBIQVZFX01FTU9SWV9IICovCisjZWxzZSAvKiBub3QgU1REQ19IRUFERVJTIGFuZCBub3QgSEFWRV9TVFJJTkdfSCAqLworI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZiAvKiBub3QgU1REQ19IRUFERVJTIGFuZCBub3QgSEFWRV9TVFJJTkdfSCAqLworCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKyNpZmRlZiBFTkFCTEVfUFRIUkVBRAorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisjaWZkZWYgRU5BQkxFX05MUworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfTUVNQ1BZCisjZGVmaW5lIG1lbWNweShkLCBzLCBuKSBiY29weSgocyksIChkKSwgKG4pKQorI2lmZGVmIF9fU1REQ19fCit2b2lkICptZW1jaHIoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CitpbnQgbWVtY21wKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwordm9pZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKK3ZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90KTsKKyNlbHNlIC8qIG5vdCBfX1NURENfXyAqLworY2hhciAqbWVtY2hyKCk7CitpbnQgbWVtY21wKCk7CitjaGFyICptZW1tb3ZlKCk7CitjaGFyICptZW1zZXQoKTsKKyNlbmRpZiAvKiBub3QgX19TVERDX18gKi8KKyNlbmRpZiAvKiBub3QgSEFWRV9NRU1DUFkgKi8KKworI2lmbmRlZiBIX0VSUk5PX0RFQ0xBUkVECitleHRlcm4gaW50IGhfZXJybm87CisjZW5kaWYKKworI2luY2x1ZGUgImdldGFkZHJpbmZvLmgiCisKKyNpZmRlZiBFTkFCTEVfTkxTCisjZGVmaW5lIF8oc3RyaW5nKSBnZXR0ZXh0KHN0cmluZykKKyNpZmRlZiBnZXR0ZXh0X25vb3AKKyNkZWZpbmUgTl8oc3RyaW5nKSBnZXR0ZXh0X25vb3Aoc3RyaW5nKQorI2Vsc2UKKyNkZWZpbmUgTl8oc3RyaW5nKSAoc3RyaW5nKQorI2VuZGlmCisjZWxzZQorI2RlZmluZSBnZXR0ZXh0KHN0cmluZykgKHN0cmluZykKKyNkZWZpbmUgXyhzdHJpbmcpIChzdHJpbmcpCisjZGVmaW5lIE5fKHN0cmluZykgKHN0cmluZykKKyNlbmRpZgorCisvKgorICogRXJyb3IgbWVzc2FnZXMgZm9yIGdhaV9zdHJlcnJvcigpLgorICovCitzdGF0aWMgY2hhciAqZWFpX2Vycmxpc3RbXSA9IHsKKyAgICBOXygiU3VjY2VzcyIpLAorCisgICAgLyogRUFJX0FERFJGQU1JTFkgKi8KKyAgICBOXygiQWRkcmVzcyBmYW1pbHkgZm9yIGhvc3RuYW1lIG5vdCBzdXBwb3J0ZWQiKSwKKworICAgIC8qIEVBSV9BR0FJTiAqLworICAgIE5fKCJUZW1wb3JhcnkgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24iKSwKKworICAgIC8qIEVBSV9CQURGTEFHUyAqLworICAgIE5fKCJJbnZhbGlkIHZhbHVlIGZvciBhaV9mbGFncyIpLAorCisgICAgLyogRUFJX0ZBSUwgKi8KKyAgICBOXygiTm9uLXJlY292ZXJhYmxlIGZhaWx1cmUgaW4gbmFtZSByZXNvbHV0aW9uIiksCisKKyAgICAvKiBFQUlfRkFNSUxZICovCisgICAgTl8oImFpX2ZhbWlseSBub3Qgc3VwcG9ydGVkIiksICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgLyogRUFJX01FTU9SWSAqLworICAgIE5fKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIiksCisKKyAgICAvKiBFQUlfTk9OQU1FICovCisgICAgTl8oImhvc3RuYW1lIG5vciBzZXJ2bmFtZSBwcm92aWRlZCwgb3Igbm90IGtub3duIiksCisKKyAgICAvKiBFQUlfT1ZFUkZMT1cgKi8KKyAgICBOXygiQW4gYXJndW1lbnQgYnVmZmVyIG92ZXJmbG93ZWQiKSwKKworICAgIC8qIEVBSV9TRVJWSUNFICovCisgICAgTl8oInNlcnZuYW1lIG5vdCBzdXBwb3J0ZWQgZm9yIGFpX3NvY2t0eXBlIiksCisKKyAgICAvKiBFQUlfU09DS1RZUEUgKi8KKyAgICBOXygiYWlfc29ja3R5cGUgbm90IHN1cHBvcnRlZCIpLAorCisgICAgLyogRUFJX1NZU1RFTSAqLworICAgIE5fKCJTeXN0ZW0gZXJyb3IgcmV0dXJuZWQgaW4gZXJybm8iKQorfTsKKworLyoKKyAqIERlZmF1bHQgaGludHMgZm9yIGdldGFkZHJpbmZvKCkuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgYWRkcmluZm8gZGVmYXVsdF9oaW50cyA9IHsKKyAgICAwLCBQRl9VTlNQRUMsIDAsIDAsIDAsIE5VTEwsIE5VTEwsIE5VTEwKK307CisKKy8qCisgKiBNdXRleC4KKyAqLworI2lmZGVmIEVOQUJMRV9QVEhSRUFECitzdGF0aWMgcHRocmVhZF9tdXRleF90IGdhaV9tdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CisjZW5kaWYKKworLyoKKyAqIERlY2xhcmF0aW9uIG9mIHN0YXRpYyBmdW5jdGlvbnMuCisgKi8KKyNpZmRlZiBfX1NURENfXworc3RhdGljIGludCBpc19pbnRlZ2VyKGNvbnN0IGNoYXIgKik7CitzdGF0aWMgaW50IGlzX2FkZHJlc3MoY29uc3QgY2hhciAqKTsKK3N0YXRpYyBpbnQgaXRvYV9sZW5ndGgoaW50KTsKKyNlbHNlCitzdGF0aWMgaW50IGlzX2ludGVnZXIoKTsKK3N0YXRpYyBpbnQgaXNfYWRkcmVzcygpOworc3RhdGljIGludCBpdG9hX2xlbmd0aCgpOworI2VuZGlmCisKKy8qCisgKiBnYWlfc3RyZXJyb3IoKS4KKyAqLworY29uc3QgY2hhciAqCitnYWlfc3RyZXJyb3IoZWNvZGUpCisgICAgaW50IGVjb2RlOworeworICAgIGlmIChlY29kZSA8IDAgfHwgZWNvZGUgPiBFQUlfU1lTVEVNKQorCXJldHVybiBfKCJVbmtub3duIGVycm9yIik7CisKKyAgICByZXR1cm4gZ2V0dGV4dChlYWlfZXJybGlzdFtlY29kZV0pOworfQorCisvKgorICogZnJlZWFkZHJpbmZvKCkuCisgKi8KK3ZvaWQKK2ZyZWVhZGRyaW5mbyhhaSkKKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpOworeworICAgIHN0cnVjdCBhZGRyaW5mbyAqbmV4dF9haTsKKworICAgIHdoaWxlIChhaSAhPSBOVUxMKSB7CisJaWYgKGFpLT5haV9jYW5vbm5hbWUgIT0gTlVMTCkKKwkgICAgZnJlZShhaS0+YWlfY2Fub25uYW1lKTsKKwlpZiAoYWktPmFpX2FkZHIgIT0gTlVMTCkKKwkgICAgZnJlZShhaS0+YWlfYWRkcik7CisJbmV4dF9haSA9IGFpLT5haV9uZXh0OworCWZyZWUoYWkpOworCWFpID0gbmV4dF9haTsKKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gMSBpZiB0aGUgc3RyaW5nIGBzJyByZXByZXNlbnRzIGFuIGludGVnZXIuCisgKi8KK3N0YXRpYyBpbnQKK2lzX2ludGVnZXIocykKKyAgICBjb25zdCBjaGFyICpzOworeworICAgIGlmICgqcyA9PSAnLScgfHwgKnMgPT0gJysnKQorCXMrKzsKKyAgICBpZiAoKnMgPCAnMCcgfHwgJzknIDwgKnMpCisJcmV0dXJuIDA7CisKKyAgICBzKys7CisgICAgd2hpbGUgKCcwJyA8PSAqcyAmJiAqcyA8PSAnOScpCisJcysrOworCisgICAgcmV0dXJuICgqcyA9PSAnXDAnKTsKK30KKworLyoKKyAqIFJldHVybiAxIGlmIHRoZSBzdHJpbmcgYHMnIHJlcHJlc2VudHMgYW4gSVB2NCBhZGRyZXNzLgorICogVW5saWtlIGluZXRfYWRkcigpLCBpdCBkb2Vzbid0IHBlcm1pdCBtYWxmb3JtZWQgbm9ydGF0aW9uIHN1Y2gKKyAqIGFzICIxOTIuMTY4Ii4KKyAqLworc3RhdGljIGludAoraXNfYWRkcmVzcyhzKQorICAgIGNvbnN0IGNoYXIgKnM7Cit7CisgICAgY29uc3Qgc3RhdGljIGNoYXIgZGVsaW1pdGVyc1tdID0geycuJywgJy4nLCAnLicsICdcMCd9OworICAgIGludCBpLCBqOworICAgIGludCBvY3RldDsKKworICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwlpZiAoKnMgPT0gJzAnICYmICoocyArIDEpICE9IGRlbGltaXRlcnNbaV0pCisJICAgIHJldHVybiAwOworCWZvciAoaiA9IDAsIG9jdGV0ID0gMDsgJzAnIDw9ICpzICYmICpzIDw9ICc5JyAmJiBqIDwgMzsgcysrLCBqKyspCisJICAgIG9jdGV0ID0gb2N0ZXQgKiAxMCArICgqcyAtICcwJyk7CisJaWYgKGogPT0gMCB8fCBvY3RldCA+IDI1NSB8fCAqcyAhPSBkZWxpbWl0ZXJzW2ldKQorCSAgICByZXR1cm4gMDsKKwlzKys7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBDYWxjdXJhdGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgYHMnLCB3aGVyZSBgcycgaXMgc2V0IGJ5CisgKiBzcHJpbnRmKHMsICIlZCIsIG4pLgorICovCitzdGF0aWMgaW50CitpdG9hX2xlbmd0aChuKQorICAgIGludCBuOworeworICAgIGludCByZXN1bHQgPSAxOworCisgICAgaWYgKG4gPCAwKSB7CisJbiA9IC1uOworCXJlc3VsdCsrOworICAgIH0KKworICAgIHdoaWxlIChuID49IDEwKSB7CisJcmVzdWx0Kys7CisJbiAvPSAxMDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogZ2V0YWRkcmluZm8oKS4KKyAqLworaW50CitnZXRhZGRyaW5mbyhub2RlbmFtZSwgc2Vydm5hbWUsIGhpbnRzLCByZXMpCisgICAgY29uc3QgY2hhciAqbm9kZW5hbWU7CisgICAgY29uc3QgY2hhciAqc2Vydm5hbWU7CisgICAgY29uc3Qgc3RydWN0IGFkZHJpbmZvICpoaW50czsKKyAgICBzdHJ1Y3QgYWRkcmluZm8gKipyZXM7Cit7CisgICAgc3RydWN0IGFkZHJpbmZvICpoZWFkX3JlcyA9IE5VTEw7CisgICAgc3RydWN0IGFkZHJpbmZvICp0YWlsX3JlcyA9IE5VTEw7CisgICAgc3RydWN0IGFkZHJpbmZvICpuZXdfcmVzOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2FfaW47CisgICAgc3RydWN0IGluX2FkZHIgKiphZGRyX2xpc3Q7CisgICAgc3RydWN0IGluX2FkZHIgKmFkZHJfbGlzdF9idWZbMl07CisgICAgc3RydWN0IGluX2FkZHIgYWRkcl9idWY7CisgICAgc3RydWN0IGluX2FkZHIgKiphcDsKKyAgICBzdHJ1Y3Qgc2VydmVudCAqc2VydmVudDsKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaG9zdGVudDsKKyAgICBjb25zdCBjaGFyICpjYW5vbm5hbWUgPSBOVUxMOworICAgIGluX3BvcnRfdCBwb3J0OworICAgIGludCBzYXZlZF9oX2Vycm5vOworICAgIGludCByZXN1bHQgPSAwOworCisjaWZkZWYgRU5BQkxFX1BUSFJFQUQKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmdhaV9tdXRleCk7CisjZW5kaWYKKworICAgIHNhdmVkX2hfZXJybm8gPSBoX2Vycm5vOworCisgICAgaWYgKG5vZGVuYW1lID09IE5VTEwgJiYgc2Vydm5hbWUgPT0gTlVMTCkgeworCXJlc3VsdCA9IEVBSV9OT05BTUU7CisJZ290byBlbmQ7CisgICAgfQorCisgICAgaWYgKGhpbnRzICE9IE5VTEwpIHsKKwlpZiAoaGludHMtPmFpX2ZhbWlseSAhPSBQRl9JTkVUICYmIGhpbnRzLT5haV9mYW1pbHkgIT0gUEZfVU5TUEVDKSB7CisJICAgIHJlc3VsdCA9IEVBSV9GQU1JTFk7CisJICAgIGdvdG8gZW5kOworCX0KKwlpZiAoaGludHMtPmFpX3NvY2t0eXBlICE9IFNPQ0tfREdSQU0KKwkgICAgJiYgaGludHMtPmFpX3NvY2t0eXBlICE9IFNPQ0tfU1RSRUFNCisJICAgICYmIGhpbnRzLT5haV9zb2NrdHlwZSAhPSAwKSB7CisJICAgIHJlc3VsdCA9IEVBSV9TT0NLVFlQRTsKKwkgICAgZ290byBlbmQ7CisJfQorICAgIH0gZWxzZSB7CisJaGludHMgPSAmZGVmYXVsdF9oaW50czsKKyAgICB9CisKKyAgICBpZiAoc2Vydm5hbWUgIT0gTlVMTCkgeworCWlmIChpc19pbnRlZ2VyKHNlcnZuYW1lKSkKKwkgICAgcG9ydCA9IGh0b25zKGF0b2koc2Vydm5hbWUpKTsKKwllbHNlICB7CisJICAgIGlmIChoaW50cy0+YWlfZmxhZ3MgJiBBSV9OVU1FUklDU0VSVikgeworCQlyZXN1bHQgPSBFQUlfTk9OQU1FOworCQlnb3RvIGVuZDsKKwkgICAgfQorCisJICAgIGlmIChoaW50cy0+YWlfc29ja3R5cGUgPT0gU09DS19ER1JBTSkKKwkJc2VydmVudCA9IGdldHNlcnZieW5hbWUoc2Vydm5hbWUsICJ1ZHAiKTsKKwkgICAgZWxzZSBpZiAoaGludHMtPmFpX3NvY2t0eXBlID09IFNPQ0tfU1RSRUFNKQorCQlzZXJ2ZW50ID0gZ2V0c2VydmJ5bmFtZShzZXJ2bmFtZSwgInRjcCIpOworCSAgICBlbHNlIGlmIChoaW50cy0+YWlfc29ja3R5cGUgPT0gMCkKKwkJc2VydmVudCA9IGdldHNlcnZieW5hbWUoc2Vydm5hbWUsICJ0Y3AiKTsKKwkgICAgZWxzZSB7CisJCXJlc3VsdCA9IEVBSV9TT0NLVFlQRTsKKwkJZ290byBlbmQ7CisJICAgIH0KKworCSAgICBpZiAoc2VydmVudCA9PSBOVUxMKSB7CisJCXJlc3VsdCA9IEVBSV9TRVJWSUNFOworCQlnb3RvIGVuZDsKKwkgICAgfQorCSAgICBwb3J0ID0gc2VydmVudC0+c19wb3J0OworCX0KKyAgICB9IGVsc2UgeworCXBvcnQgPSBodG9ucygwKTsKKyAgICB9CisKKyAgICBpZiAobm9kZW5hbWUgIT0gTlVMTCkgeworCWlmIChpc19hZGRyZXNzKG5vZGVuYW1lKSkgeworCSAgICBhZGRyX2J1Zi5zX2FkZHIgPSBpbmV0X2FkZHIobm9kZW5hbWUpOworCSAgICBhZGRyX2xpc3RfYnVmWzBdID0gJmFkZHJfYnVmOworCSAgICBhZGRyX2xpc3RfYnVmWzFdID0gTlVMTDsKKwkgICAgYWRkcl9saXN0ID0gYWRkcl9saXN0X2J1ZjsKKworCSAgICBpZiAoaGludHMtPmFpX2ZsYWdzICYgQUlfQ0FOT05OQU1FCisJCSYmICEoaGludHMtPmFpX2ZsYWdzICYgQUlfTlVNRVJJQ0hPU1QpKSB7CisJCWhvc3RlbnQgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJmFkZHJfYnVmLAorCQkgICAgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgQUZfSU5FVCk7CisJCWlmIChob3N0ZW50ICE9IE5VTEwpCisJCSAgICBjYW5vbm5hbWUgPSBob3N0ZW50LT5oX25hbWU7CisJCWVsc2UKKwkJICAgIGNhbm9ubmFtZSA9IG5vZGVuYW1lOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgaWYgKGhpbnRzLT5haV9mbGFncyAmIEFJX05VTUVSSUNIT1NUKSB7CisJCXJlc3VsdCA9IEVBSV9OT05BTUU7CisJCWdvdG8gZW5kOworCSAgICB9CisKKwkgICAgaG9zdGVudCA9IGdldGhvc3RieW5hbWUobm9kZW5hbWUpOworCSAgICBpZiAoaG9zdGVudCA9PSBOVUxMKSB7CisJCXN3aXRjaCAoaF9lcnJubykgeworCQljYXNlIEhPU1RfTk9UX0ZPVU5EOgorCQljYXNlIE5PX0RBVEE6CisJCSAgICByZXN1bHQgPSBFQUlfTk9OQU1FOworCQkgICAgZ290byBlbmQ7CisJCWNhc2UgVFJZX0FHQUlOOgorCQkgICAgcmVzdWx0ID0gRUFJX0FHQUlOOworCQkgICAgZ290byBlbmQ7CisJCWRlZmF1bHQ6CisJCSAgICByZXN1bHQgPSBFQUlfRkFJTDsKKwkJICAgIGdvdG8gZW5kOworICAgICAgICAgICAgICAgIH0KKwkgICAgfQorCSAgICBhZGRyX2xpc3QgPSAoc3RydWN0IGluX2FkZHIgKiopaG9zdGVudC0+aF9hZGRyX2xpc3Q7CisKKwkgICAgaWYgKGhpbnRzLT5haV9mbGFncyAmIEFJX0NBTk9OTkFNRSkKKwkJY2Fub25uYW1lID0gaG9zdGVudC0+aF9uYW1lOworCX0KKyAgICB9IGVsc2UgeworCWlmIChoaW50cy0+YWlfZmxhZ3MgJiBBSV9QQVNTSVZFKQorCSAgICBhZGRyX2J1Zi5zX2FkZHIgPSBodG9ubChJTkFERFJfQU5ZKTsKKwllbHNlCisJICAgIGFkZHJfYnVmLnNfYWRkciA9IGh0b25sKDB4N0YwMDAwMDEpOworCWFkZHJfbGlzdF9idWZbMF0gPSAmYWRkcl9idWY7CisJYWRkcl9saXN0X2J1ZlsxXSA9IE5VTEw7CisJYWRkcl9saXN0ID0gYWRkcl9saXN0X2J1ZjsKKyAgICB9CisKKyAgICBmb3IgKGFwID0gYWRkcl9saXN0OyAqYXAgIT0gTlVMTDsgYXArKykgeworCW5ld19yZXMgPSAoc3RydWN0IGFkZHJpbmZvICopbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsKKwlpZiAobmV3X3JlcyA9PSBOVUxMKSB7CisJICAgIGlmIChoZWFkX3JlcyAhPSBOVUxMKQorCQlmcmVlYWRkcmluZm8oaGVhZF9yZXMpOworCSAgICByZXN1bHQgPSBFQUlfTUVNT1JZOworCSAgICBnb3RvIGVuZDsKKwl9CisKKwluZXdfcmVzLT5haV9mYW1pbHkgPSBQRl9JTkVUOworCW5ld19yZXMtPmFpX3NvY2t0eXBlID0gaGludHMtPmFpX3NvY2t0eXBlOworCW5ld19yZXMtPmFpX3Byb3RvY29sID0gaGludHMtPmFpX3Byb3RvY29sOworCW5ld19yZXMtPmFpX2FkZHIgPSBOVUxMOworCW5ld19yZXMtPmFpX2FkZHJsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKwluZXdfcmVzLT5haV9jYW5vbm5hbWUgPSBOVUxMOworCW5ld19yZXMtPmFpX25leHQgPSBOVUxMOworCisJbmV3X3Jlcy0+YWlfYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikKKwkgICAgbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwlpZiAobmV3X3Jlcy0+YWlfYWRkciA9PSBOVUxMKSB7CisJICAgIGZyZWUobmV3X3Jlcyk7CisJICAgIGlmIChoZWFkX3JlcyAhPSBOVUxMKQorCQlmcmVlYWRkcmluZm8oaGVhZF9yZXMpOworCSAgICByZXN1bHQgPSBFQUlfTUVNT1JZOworCSAgICBnb3RvIGVuZDsKKwl9CisKKwlzYV9pbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiluZXdfcmVzLT5haV9hZGRyOworCW1lbXNldChzYV9pbiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCXNhX2luLT5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKKwlzYV9pbi0+c2luX3BvcnQgPSBwb3J0OworCW1lbWNweSgmc2FfaW4tPnNpbl9hZGRyLCAqYXAsIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOworCisJaWYgKGhlYWRfcmVzID09IE5VTEwpCisJICAgIGhlYWRfcmVzID0gbmV3X3JlczsKKwllbHNlCisJICAgIHRhaWxfcmVzLT5haV9uZXh0ID0gbmV3X3JlczsKKwl0YWlsX3JlcyA9IG5ld19yZXM7CisgICAgfQorCisgICAgaWYgKGNhbm9ubmFtZSAhPSBOVUxMICYmIGhlYWRfcmVzICE9IE5VTEwpIHsKKwloZWFkX3Jlcy0+YWlfY2Fub25uYW1lID0gKGNoYXIgKiltYWxsb2Moc3RybGVuKGNhbm9ubmFtZSkgKyAxKTsKKwlpZiAoaGVhZF9yZXMtPmFpX2Nhbm9ubmFtZSAhPSBOVUxMKQorCSAgICBzdHJjcHkoaGVhZF9yZXMtPmFpX2Nhbm9ubmFtZSwgY2Fub25uYW1lKTsKKyAgICB9CisKKyAgICAqcmVzID0gaGVhZF9yZXM7CisKKyAgZW5kOgorICAgIGhfZXJybm8gPSBzYXZlZF9oX2Vycm5vOworI2lmZGVmIEVOQUJMRV9QVEhSRUFECisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdhaV9tdXRleCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogZ2V0bmFtZWluZm8oKS4KKyAqLworaW50CitnZXRuYW1laW5mbyhzYSwgc2FsZW4sIG5vZGUsIG5vZGVsZW4sIHNlcnYsIHNlcnZsZW4sIGZsYWdzKQorICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqc2E7CisgICAgc29ja2xlbl90IHNhbGVuOworICAgIGNoYXIgKm5vZGU7CisgICAgc29ja2xlbl90IG5vZGVsZW47CisgICAgY2hhciAqc2VydjsKKyAgICBzb2NrbGVuX3Qgc2VydmxlbjsKKyAgICBpbnQgZmxhZ3M7Cit7CisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpzYV9pbiA9IChjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYTsKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaG9zdGVudDsKKyAgICBzdHJ1Y3Qgc2VydmVudCAqc2VydmVudDsKKyAgICBjaGFyICpudG9hX2FkZHJlc3M7CisgICAgaW50IHNhdmVkX2hfZXJybm87CisgICAgaW50IHJlc3VsdCA9IDA7CisKKyNpZmRlZiBFTkFCTEVfUFRIUkVBRAorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ2FpX211dGV4KTsKKyNlbmRpZgorCisgICAgc2F2ZWRfaF9lcnJubyA9IGhfZXJybm87CisKKyAgICBpZiAoc2FfaW4tPnNpbl9mYW1pbHkgIT0gUEZfSU5FVCkgeworCXJlc3VsdCA9IEVBSV9GQU1JTFk7CisJZ290byBlbmQ7CisgICAgfSBlbHNlIGlmIChub2RlID09IE5VTEwgJiYgc2VydiA9PSBOVUxMKSB7CisJcmVzdWx0ID0gRUFJX05PTkFNRTsKKwlnb3RvIGVuZDsKKyAgICB9CisKKyAgICBpZiAoc2VydiAhPSBOVUxMICYmIHNlcnZsZW4gPiAwKSB7CisJaWYgKGZsYWdzICYgTklfTlVNRVJJQ1NFUlYpCisJICAgIHNlcnZlbnQgPSBOVUxMOworCWVsc2UgaWYgKGZsYWdzICYgTklfREdSQU0pCisJICAgIHNlcnZlbnQgPSBnZXRzZXJ2Ynlwb3J0KHNhX2luLT5zaW5fcG9ydCwgInVkcCIpOworCWVsc2UKKwkgICAgc2VydmVudCA9IGdldHNlcnZieXBvcnQoc2FfaW4tPnNpbl9wb3J0LCAidGNwIik7CisKKwlpZiAoc2VydmVudCAhPSBOVUxMKSB7CisJICAgIGlmIChzZXJ2bGVuIDw9IHN0cmxlbihzZXJ2ZW50LT5zX25hbWUpKSB7CisJCXJlc3VsdCA9IEVBSV9PVkVSRkxPVzsKKwkJZ290byBlbmQ7CisJICAgIH0KKwkgICAgc3RyY3B5KHNlcnYsIHNlcnZlbnQtPnNfbmFtZSk7CisJfSBlbHNlIHsKKwkgICAgaWYgKHNlcnZsZW4gPD0gaXRvYV9sZW5ndGgobnRvaHMoc2FfaW4tPnNpbl9wb3J0KSkpIHsKKwkJcmVzdWx0ID0gRUFJX09WRVJGTE9XOworCQlnb3RvIGVuZDsKKwkgICAgfQorCSAgICBzcHJpbnRmKHNlcnYsICIlZCIsIG50b2hzKHNhX2luLT5zaW5fcG9ydCkpOworCX0KKyAgICB9CisKKyAgICBpZiAobm9kZSAhPSBOVUxMICYmIG5vZGVsZW4gPiAwKSB7CisJaWYgKGZsYWdzICYgTklfTlVNRVJJQ0hPU1QpCisJICAgIGhvc3RlbnQgPSBOVUxMOworCWVsc2UgeworCSAgICBob3N0ZW50ID0gZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSZzYV9pbi0+c2luX2FkZHIsIAorCQlzaXplb2Yoc3RydWN0IGluX2FkZHIpLCBBRl9JTkVUKTsKKwl9CisJaWYgKGhvc3RlbnQgIT0gTlVMTCkgeworCSAgICBpZiAobm9kZWxlbiA8PSBzdHJsZW4oaG9zdGVudC0+aF9uYW1lKSkgeworCQlyZXN1bHQgPSBFQUlfT1ZFUkZMT1c7CisJCWdvdG8gZW5kOworCSAgICB9CisJICAgIHN0cmNweShub2RlLCBob3N0ZW50LT5oX25hbWUpOworCX0gZWxzZSB7CisJICAgIGlmIChmbGFncyAmIE5JX05BTUVSRVFEKSB7CisJCXJlc3VsdCA9IEVBSV9OT05BTUU7CisJCWdvdG8gZW5kOworCSAgICB9CisJICAgIG50b2FfYWRkcmVzcyA9IGluZXRfbnRvYShzYV9pbi0+c2luX2FkZHIpOworCSAgICBpZiAobm9kZWxlbiA8PSBzdHJsZW4obnRvYV9hZGRyZXNzKSkgeworCQlyZXN1bHQgPSBFQUlfT1ZFUkZMT1c7CisJCWdvdG8gZW5kOworCSAgICB9CisJICAgIHN0cmNweShub2RlLCBudG9hX2FkZHJlc3MpOworCX0KKwkJCisgICAgfQorCisgIGVuZDoKKyAgICBoX2Vycm5vID0gc2F2ZWRfaF9lcnJubzsKKyNpZmRlZiBFTkFCTEVfUFRIUkVBRAorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnYWlfbXV0ZXgpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvZ2V0YWRkcmluZm8uaCBiL3NyYy9taXNzaW5nL2dldGFkZHJpbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2NWE4YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9taXNzaW5nL2dldGFkZHJpbmZvLmgKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDAyICBNb3RveXVraSBLYXNhaGFyYQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pFQ1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdFVEFERFJJTkZPX0gKKyNkZWZpbmUgR0VUQUREUklORk9fSAorCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmZGVmIFdJTjMyCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjaWZkZWYgRE9fSVBWNgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjZW5kaWYgIC8qIERPX0lQVjYgKi8KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFVuZGVmaW5lIGFsbCB0aGUgbWFjcm9zLgorICogPG5ldGRiLmg+IG1pZ2h0IGRlZmluZXMgc29tZSBvZiB0aGVtLgorICovCisjaWZkZWYgRUFJX0FERFJGQU1JTFkKKyN1bmRlZiBFQUlfQUREUkZBTUlMWQorI2VuZGlmCisjaWZkZWYgRUFJX0FHQUlOCisjdW5kZWYgRUFJX0FHQUlOCisjZW5kaWYKKyNpZmRlZiBFQUlfQkFERkxBR1MKKyN1bmRlZiBFQUlfQkFERkxBR1MKKyNlbmRpZgorI2lmZGVmIEVBSV9GQUlMCisjdW5kZWYgRUFJX0ZBSUwKKyNlbmRpZgorI2lmZGVmIEVBSV9GQU1JTFkKKyN1bmRlZiBFQUlfRkFNSUxZCisjZW5kaWYKKyNpZmRlZiBFQUlfTUVNT1JZCisjdW5kZWYgRUFJX01FTU9SWQorI2VuZGlmCisjaWZkZWYgRUFJX05PTkFNRQorI3VuZGVmIEVBSV9OT05BTUUKKyNlbmRpZgorI2lmZGVmIEVBSV9PVkVSRkxPVworI3VuZGVmIEVBSV9PVkVSRkxPVworI2VuZGlmCisjaWZkZWYgRUFJX1NFUlZJQ0UKKyN1bmRlZiBFQUlfU0VSVklDRQorI2VuZGlmCisjaWZkZWYgRUFJX1NPQ0tUWVBFCisjdW5kZWYgRUFJX1NPQ0tUWVBFCisjZW5kaWYKKyNpZmRlZiBFQUlfU1lTVEVNCisjdW5kZWYgRUFJX1NZU1RFTQorI2VuZGlmCisKKyNpZmRlZiBBSV9QQVNTSVZFCisjdW5kZWYgQUlfUEFTU0lWRQorI2VuZGlmCisjaWZkZWYgQUlfQ0FOT05OQU1FCisjdW5kZWYgQUlfQ0FOT05OQU1FCisjZW5kaWYKKyNpZmRlZiBBSV9OVU1FUklDSE9TVAorI3VuZGVmIEFJX05VTUVSSUNIT1NUCisjZW5kaWYKKyNpZmRlZiBBSV9OVU1FUklDU0VSVgorI3VuZGVmIEFJX05VTUVSSUNTRVJWCisjZW5kaWYKKyNpZmRlZiBBSV9WNE1BUFBFRAorI3VuZGVmIEFJX1Y0TUFQUEVECisjZW5kaWYKKyNpZmRlZiBBSV9BTEwKKyN1bmRlZiBBSV9BTEwKKyNlbmRpZgorI2lmZGVmIEFJX0FERFJDT05GSUcKKyN1bmRlZiBBSV9BRERSQ09ORklHCisjZW5kaWYKKyNpZmRlZiBBSV9ERUZBVUxUCisjdW5kZWYgQUlfREVGQVVMVAorI2VuZGlmCisKKyNpZmRlZiBOSV9OT0ZRRE4KKyN1bmRlZiBOSV9OT0ZRRE4KKyNlbmRpZgorI2lmZGVmIE5JX05VTUVSSUNIT1NUCisjdW5kZWYgTklfTlVNRVJJQ0hPU1QKKyNlbmRpZgorI2lmZGVmIE5JX05BTUVSRVFECisjdW5kZWYgTklfTkFNRVJFUUQKKyNlbmRpZgorI2lmZGVmIE5JX05VTUVSSUNTRVJWCisjdW5kZWYgTklfTlVNRVJJQ1NFUlYKKyNlbmRpZgorI2lmZGVmIE5JX05VTUVSSUNTQ09QRQorI3VuZGVmIE5JX05VTUVSSUNTQ09QRQorI2VuZGlmCisKKyNpZmRlZiBOSV9ER1JBTQorI3VuZGVmIE5JX0RHUkFNCisjZW5kaWYKKyNpZmRlZiBOSV9NQVhIT1NUCisjdW5kZWYgTklfTUFYSE9TVAorI2VuZGlmCisjaWZkZWYgTklfTUFYU0VSVgorI3VuZGVmIE5JX01BWFNFUlYKKyNlbmRpZgorCisvKgorICogRmFrZSBzdHJ1Y3QgYW5kIGZ1bmN0aW9uIG5hbWVzLgorICogPG5ldGRiLmg+IG1pZ2h0IGRlY2xhcmVzIGFsbCBvciBzb21lIG9mIHRoZW0uCisgKi8KKyNpZiBkZWZpbmVkKEhBVkVfR0VUQUREUklORk8pIHx8IGRlZmluZWQoSEFWRV9HRVROQU1FSU5GTykKKyNkZWZpbmUgYWRkcmluZm8gbXlfYWRkcmluZm8KKyNkZWZpbmUgZ2FpX3N0cmVycm9yIG15X2dhaV9zdHJlcnJvcgorI2RlZmluZSBmcmVlYWRkcmluZm8gbXlfZnJlZWFkZHJpbmZvCisjZGVmaW5lIGdldGFkZHJpbmZvIG15X2dldGFkZHJpbmZvCisjZGVmaW5lIGdldG5hbWVpbmZvIG15X2dldG5hbWVpbmZvCisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEVycm9yIGNvZGVzLgorICovCisjZGVmaW5lIEVBSV9BRERSRkFNSUxZCTEKKyNkZWZpbmUgRUFJX0FHQUlOCTIKKyNkZWZpbmUgRUFJX0JBREZMQUdTCTMKKyNkZWZpbmUgRUFJX0ZBSUwJNAorI2RlZmluZSBFQUlfRkFNSUxZCTUKKyNkZWZpbmUgRUFJX01FTU9SWQk2CisjZGVmaW5lIEVBSV9OT05BTUUJNworI2RlZmluZSBFQUlfT1ZFUkZMT1cJOAorI2RlZmluZSBFQUlfU0VSVklDRQk5CisjZGVmaW5lIEVBSV9TT0NLVFlQRQkxMAorI2RlZmluZSBFQUlfU1lTVEVNCTExCisKKy8qCisgKiBGbGFncyBmb3IgZ2V0YWRkcmluZm8oKS4KKyAqLworI2RlZmluZSBBSV9BRERSQ09ORklHCTB4MDAwMQorI2RlZmluZSBBSV9BTEwJCTB4MDAwMgorI2RlZmluZSBBSV9DQU5PTk5BTUUJMHgwMDA0CisjZGVmaW5lIEFJX05VTUVSSUNIT1NUCTB4MDAwOAorI2RlZmluZSBBSV9OVU1FUklDU0VSVgkweDAwMTAKKyNkZWZpbmUgQUlfUEFTU0lWRQkweDAwMjAKKyNkZWZpbmUgQUlfVjRNQVBQRUQJMHgwMDQwCisjZGVmaW5lIEFJX0RFRkFVTFQJKEFJX1Y0TUFQUEVEIHwgQUlfQUREUkNPTkZJRykKKworLyoKKyAqIEZsYWdzIGZvciBnZXRuYW1laW5mbygpLgorICovCisjZGVmaW5lIE5JX0RHUkFNCTB4MDAwMQorI2RlZmluZSBOSV9OQU1FUkVRRAkweDAwMDIKKyNkZWZpbmUgTklfTk9GUUROCTB4MDAwNAorI2RlZmluZSBOSV9OVU1FUklDSE9TVAkweDAwMDgKKyNkZWZpbmUgTklfTlVNRVJJQ1NDT1BFCTB4MDAxMAorI2RlZmluZSBOSV9OVU1FUklDU0VSVgkweDAwMjAKKworLyoKKyAqIE1heGltdW0gbGVuZ3RoIG9mIEZRRE4gYW5kIHNlcnZpZSBuYW1lIGZvciBnZXRuYW1laW5mbygpLgorICovCisjZGVmaW5lIE5JX01BWEhPU1QJMTAyNQorI2RlZmluZSBOSV9NQVhTRVJWCTMyCisKKy8qCisgKiBBZGRyZXNzIGZhbWlsaWVzIGFuZCBQcm90b2NvbCBmYW1pbGllcy4KKyAqLworI2lmbmRlZiBBRl9VTlNQRUMKKyNkZWZpbmUgQUZfVU5TUEVDIEFGX0lORVQKKyNlbmRpZgorI2lmbmRlZiBQRl9VTlNQRUMKKyNkZWZpbmUgUEZfVU5TUEVDIFBGX0lORVQKKyNlbmRpZgorCisvKgorICogc3RydWN0IGFkZHJpbmZvLgorICovCitzdHJ1Y3QgYWRkcmluZm8geworICAgIGludCBhaV9mbGFnczsKKyAgICBpbnQgYWlfZmFtaWx5OworICAgIGludCBhaV9zb2NrdHlwZTsKKyAgICBpbnQgYWlfcHJvdG9jb2w7CisgICAgc29ja2xlbl90IGFpX2FkZHJsZW47CisgICAgY2hhciAqYWlfY2Fub25uYW1lOworICAgIHN0cnVjdCBzb2NrYWRkciAqYWlfYWRkcjsKKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpX25leHQ7Cit9OworCisvKgorICogRnVuY3Rpb25zLgorICovCisjaWZkZWYgX19TVERDX18KK2NvbnN0IGNoYXIgKmdhaV9zdHJlcnJvcihpbnQpOwordm9pZCBmcmVlYWRkcmluZm8oc3RydWN0IGFkZHJpbmZvICopOworaW50IGdldGFkZHJpbmZvKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKiwKKyAgICBzdHJ1Y3QgYWRkcmluZm8gKiopOworaW50IGdldG5hbWVpbmZvKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqLCBzb2NrbGVuX3QsIGNoYXIgKiwgCisgICAgc29ja2xlbl90LCBjaGFyICosIHNvY2tsZW5fdCwgaW50KTsKKyNlbHNlCitjb25zdCBjaGFyICpnYWlfc3RyZXJyb3IoKTsKK3ZvaWQgZnJlZWFkZHJpbmZvKCk7CitpbnQgZ2V0YWRkcmluZm8oKTsKK2ludCBnZXRuYW1laW5mbygpOworI2VuZGlmCisKKyNlbmRpZiAvKiBub3QgR0VUQUREUklORk9fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvaW5ldF9udG9wLmMgYi9zcmMvbWlzc2luZy9pbmV0X250b3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2E0NDU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvaW5ldF9udG9wLmMKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDE5OTkgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuCisgKiAoUm95YWwgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIFN0b2NraG9sbSwgU3dlZGVuKS4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKKyAqICAgICAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgS3VuZ2xpZ2EgVGVrbmlza2EKKyAqICAgICAgSPZnc2tvbGFuIGFuZCBpdHMgY29udHJpYnV0b3JzLgorICoKKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIEluc3RpdHV0ZSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgSU5TVElUVVRFIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgSU5TVElUVVRFIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyogJElkOiBpbmV0X250b3AuYyx2IDEuNyAyMDAzLzExLzE2IDA5OjM2OjUwIGd1eSBFeHAgJCAqLworCisjaWZuZGVmIGxpbnQKK3N0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPQorICAgICAiQCgjKSAkSGVhZGVyOiAvdGNwZHVtcC9tYXN0ZXIvdGNwZHVtcC9taXNzaW5nL2luZXRfbnRvcC5jLHYgMS43IDIwMDMvMTEvMTYgMDk6MzY6NTAgZ3V5IEV4cCAkIjsKKyNlbmRpZgorCisvKiB3ZSBhcmVuJ3QgdGNwZHVtcCA6KSAqLworI2lmZGVmIG5vdGRlZgorI2luY2x1ZGUgPHRjcGR1bXAtc3RkaW5jLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpZm5kZWYgV0lOMzIKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisKKyNlbHNlICAgLyogV0lOMzIgKi8KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpZmRlZiBET19JUFY2CisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZiAgLyogRE9fSVBWNiAqLworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworLyogVGhlIGJlbG93IGFyZSBjb3BpZWQgZnJvbSBuZXRsaWIuaCAqLworI2lmZGVmIGVycm5vCisvKiBkZWxldGUgdGhlIG9uZSBmcm9tIHN0ZGxpYi5oICAqLworLyojZGVmaW5lIGVycm5vICAgICAgICgqX2Vycm5vKCkpICovCisjdW5kZWYgZXJybm8KKyNlbmRpZgorI2RlZmluZSBlcnJubyBHZXRMYXN0RXJyb3IoKQorI2RlZmluZSBTZXRfZXJybm8obnVtKSBTZXRMYXN0RXJyb3IoKG51bSkpCisKKy8qIElOVkFMSURfU09DS0VUID09IElOVkFMSURfSEFORExFX1ZBTFVFID09ICh1bnNpZ25lZCBpbnQpKH4wKSAqLworLyogU09DS0VUX0VSUk9SID09IC0xICovCisjZGVmaW5lIEVOT1RTT0NLIFdTQUVOT1RTT0NLCisjZGVmaW5lIEVJTlRSICAgIFdTQUVJTlRSCisjZGVmaW5lIEVOT0JVRlMgIFdTQUVOT0JVRlMKKyNkZWZpbmUgRVdPVUxEQkxPQ0sgICAgICAgICAgIFdTQUVXT1VMREJMT0NLCisjZGVmaW5lIEVBRk5PU1VQUE9SVCAgV1NBRUFGTk9TVVBQT1JUCisvKiBmcm9tIHB1YmxpY1xzZGtcaW5jXGNydFxlcnJuby5oICovCisjZGVmaW5lIEVOT1NQQyAgICAgICAgICAyOAorI2VuZGlmICAvKiBXSU4zMiAqLworCisvKgorICoKKyAqLworCisjaWZuZGVmIElORVRfQUREUlNUUkxFTgorI2RlZmluZSBJTkVUX0FERFJTVFJMRU4gICAgMTYKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgY2hhciAqCitpbmV0X250b3BfdjQgKGNvbnN0IHZvaWQgKnNyYywgY2hhciAqZHN0LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCBjaGFyIGRpZ2l0c1tdID0gIjAxMjM0NTY3ODkiOworICAgIGludCBpOworICAgIHN0cnVjdCBpbl9hZGRyICphZGRyID0gKHN0cnVjdCBpbl9hZGRyICopc3JjOworICAgIHVfbG9uZyBhID0gbnRvaGwoYWRkci0+c19hZGRyKTsKKyAgICBjb25zdCBjaGFyICpvcmlnX2RzdCA9IGRzdDsKKworICAgIGlmIChzaXplIDwgSU5FVF9BRERSU1RSTEVOKSB7CisgICAgICBTZXRfZXJybm8oRU5PU1BDKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKSB7CisJaW50IG4gPSAoYSA+PiAoMjQgLSBpICogOCkpICYgMHhGRjsKKwlpbnQgbm9uX3plcm9wID0gMDsKKworCWlmIChub25femVyb3AgfHwgbiAvIDEwMCA+IDApIHsKKwkgICAgKmRzdCsrID0gZGlnaXRzW24gLyAxMDBdOworCSAgICBuICU9IDEwMDsKKwkgICAgbm9uX3plcm9wID0gMTsKKwl9CisJaWYgKG5vbl96ZXJvcCB8fCBuIC8gMTAgPiAwKSB7CisJICAgICpkc3QrKyA9IGRpZ2l0c1tuIC8gMTBdOworCSAgICBuICU9IDEwOworCSAgICBub25femVyb3AgPSAxOworCX0KKwkqZHN0KysgPSBkaWdpdHNbbl07CisJaWYgKGkgIT0gMykKKwkgICAgKmRzdCsrID0gJy4nOworICAgIH0KKyAgICAqZHN0KysgPSAnXDAnOworICAgIHJldHVybiBvcmlnX2RzdDsKK30KKworY29uc3QgY2hhciAqCitpbmV0X250b3AoaW50IGFmLCBjb25zdCB2b2lkICpzcmMsIGNoYXIgKmRzdCwgc2l6ZV90IHNpemUpCit7CisgICAgc3dpdGNoIChhZikgeworICAgIGNhc2UgQUZfSU5FVCA6CisJcmV0dXJuIGluZXRfbnRvcF92NCAoc3JjLCBkc3QsIHNpemUpOworICAgIGRlZmF1bHQgOgorICAgICAgU2V0X2Vycm5vKEVBRk5PU1VQUE9SVCk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvbWlzc2luZy9tNC9NYWtlZmlsZS5hbSBiL3NyYy9taXNzaW5nL200L01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiY2ZhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWlzc2luZy9tNC9NYWtlZmlsZS5hbQpAQCAtMCwwICsxIEBACitFWFRSQV9ESVNUID0gKi5tNApkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvbTQvTWFrZWZpbGUuaW4gYi9zcmMvbWlzc2luZy9tNC9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQzZWVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvbTQvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSwzMzcgQEAKKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgorIyBAY29uZmlndXJlX2lucHV0QAorCisjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKyMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuCisKK0BTRVRfTUFLRUAKK1ZQQVRIID0gQHNyY2RpckAKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACitwa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKK2FtX19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QKK2luc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMKK0lOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCitOT1JNQUxfSU5TVEFMTCA9IDoKK1BSRV9JTlNUQUxMID0gOgorUE9TVF9JTlNUQUxMID0gOgorTk9STUFMX1VOSU5TVEFMTCA9IDoKK1BSRV9VTklOU1RBTEwgPSA6CitQT1NUX1VOSU5TVEFMTCA9IDoKK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRACitob3N0X3RyaXBsZXQgPSBAaG9zdEAKK3RhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK3N1YmRpciA9IHNyYy9taXNzaW5nL200CitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHNyY2RpcikvTWFrZWZpbGUuaW4KK0FDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKK2FtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL3NyYy9taXNzaW5nL200L3NhbGVuLm00IFwKKwkkKHRvcF9zcmNkaXIpL2FjaW5jbHVkZS5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKKwkkKEFDTE9DQUxfTTQpCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzCitDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCitDT05GSUdfQ0xFQU5fRklMRVMgPQorQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KK1NPVVJDRVMgPQorRElTVF9TT1VSQ0VTID0KK0RJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCitBQ0xPQ0FMID0gQEFDTE9DQUxACitBTVRBUiA9IEBBTVRBUkAKK0FVVE9DT05GID0gQEFVVE9DT05GQAorQVVUT0hFQURFUiA9IEBBVVRPSEVBREVSQAorQVVUT01BS0UgPSBAQVVUT01BS0VACitBV0sgPSBAQVdLQAorQ0MgPSBAQ0NACitDQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAorQ0ZMQUdTID0gQENGTEFHU0AKK0NQUCA9IEBDUFBACitDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NZR1BBVEhfVyA9IEBDWUdQQVRIX1dACitERUZTID0gQERFRlNACitERVBESVIgPSBAREVQRElSQAorRUNIT19DID0gQEVDSE9fQ0AKK0VDSE9fTiA9IEBFQ0hPX05ACitFQ0hPX1QgPSBARUNIT19UQAorRUdSRVAgPSBARUdSRVBACitFWEVFWFQgPSBARVhFRVhUQAorR1JFUCA9IEBHUkVQQAorSU5TVEFMTCA9IEBJTlNUQUxMQAorSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACitJTlNUQUxMX1NDUklQVCA9IEBJTlNUQUxMX1NDUklQVEAKK0lOU1RBTExfU1RSSVBfUFJPR1JBTSA9IEBJTlNUQUxMX1NUUklQX1BST0dSQU1ACitMREZMQUdTID0gQExERkxBR1NACitMSUJPQkpTID0gQExJQk9CSlNACitMSUJTID0gQExJQlNACitMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTUFLRUlORk8gPSBATUFLRUlORk9ACitNS0RJUl9QID0gQE1LRElSX1BACitORVRDUFVfU09VUkNFID0gQE5FVENQVV9TT1VSQ0VACitPQkpFWFQgPSBAT0JKRVhUQAorUEFDS0FHRSA9IEBQQUNLQUdFQAorUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACitQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAorUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACitQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACitQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAorUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACitSQU5MSUIgPSBAUkFOTElCQAorU0VUX01BS0UgPSBAU0VUX01BS0VACitTSEVMTCA9IEBTSEVMTEAKK1NUUklQID0gQFNUUklQQAorVkVSU0lPTiA9IEBWRVJTSU9OQAorYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKK2Fic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKK2Fic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKK2Fic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACithbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKK2FtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACithbV9fcXVvdGUgPSBAYW1fX3F1b3RlQAorYW1fX3RhciA9IEBhbV9fdGFyQAorYW1fX3VudGFyID0gQGFtX191bnRhckAKK2JpbmRpciA9IEBiaW5kaXJACitidWlsZCA9IEBidWlsZEAKK2J1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAorYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUAKK2J1aWxkX29zID0gQGJ1aWxkX29zQAorYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKK2J1aWxkZGlyID0gQGJ1aWxkZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitkb2NkaXIgPSBAZG9jZGlyQAorZHZpZGlyID0gQGR2aWRpckAKK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAoraG9zdCA9IEBob3N0QAoraG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAoraG9zdF9jcHUgPSBAaG9zdF9jcHVACitob3N0X29zID0gQGhvc3Rfb3NACitob3N0X3ZlbmRvciA9IEBob3N0X3ZlbmRvckAKK2h0bWxkaXIgPSBAaHRtbGRpckAKK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKK2luZm9kaXIgPSBAaW5mb2RpckAKK2luc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKK2xpYmRpciA9IEBsaWJkaXJACitsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACitsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAorbWFuZGlyID0gQG1hbmRpckAKK21rZGlyX3AgPSBAbWtkaXJfcEAKK29sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKK3BkZmRpciA9IEBwZGZkaXJACitwcmVmaXggPSBAcHJlZml4QAorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAorcHNkaXIgPSBAcHNkaXJACitzYmluZGlyID0gQHNiaW5kaXJACitzaGFyZWRzdGF0ZWRpciA9IEBzaGFyZWRzdGF0ZWRpckAKK3NyY2RpciA9IEBzcmNkaXJACitzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACit0YXJnZXQgPSBAdGFyZ2V0QAordGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlhc0AKK3RhcmdldF9jcHUgPSBAdGFyZ2V0X2NwdUAKK3RhcmdldF9vcyA9IEB0YXJnZXRfb3NACit0YXJnZXRfdmVuZG9yID0gQHRhcmdldF92ZW5kb3JACit0b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACit0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorRVhUUkFfRElTVCA9ICoubTQKK2FsbDogYWxsLWFtCisKKy5TVUZGSVhFUzoKKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJQGZvciBkZXAgaW4gJD87IGRvIFwKKwkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4gXAorCSAgICAqJCRkZXAqKSBcCisJICAgICAgKCBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2ggKSBcCisJICAgICAgICAmJiB7IGlmIHRlc3QgLWYgJEA7IHRoZW4gZXhpdCAwOyBlbHNlIGJyZWFrOyBmaTsgfTsgXAorCSAgICAgIGV4aXQgMTs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgc3JjL21pc3NpbmcvbTQvTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgc3JjL21pc3NpbmcvbTQvTWFrZWZpbGUKKy5QUkVDSU9VUzogTWFrZWZpbGUKK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwlAY2FzZSAnJD8nIGluIFwKKwkgICpjb25maWcuc3RhdHVzKikgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2g7OyBcCisJICAqKSBcCisJICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCisJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKKwllc2FjOworCiskKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKKworJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6ICAkKGFtX19jb25maWd1cmVfZGVwcykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKKyQoQUNMT0NBTF9NNCk6ICAkKGFtX19hY2xvY2FsX200X2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKGFtX19hY2xvY2FsX200X2RlcHMpOgordGFnczogVEFHUworVEFHUzoKKworY3RhZ3M6IENUQUdTCitDVEFHUzoKKworCitkaXN0ZGlyOiAkKERJU1RGSUxFUykKKwlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCWxpc3Q9JyQoRElTVEZJTEVTKSc7IFwKKwkgIGRpc3RfZmlsZXM9YGZvciBmaWxlIGluICQkbGlzdDsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBcCisJICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAvfHw7dCIgXAorCSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKKwljYXNlICQkZGlzdF9maWxlcyBpbiBcCisJICAqLyopICQoTUtESVJfUCkgYGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCisJCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcgfCBcCisJCQkgICBzb3J0IC11YCA7OyBcCisJZXNhYzsgXAorCWZvciBmaWxlIGluICQkZGlzdF9maWxlczsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGUgfHwgdGVzdCAtZCAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAorCSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKKwkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSokJCwsJ2A7IFwKKwkgICAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJGZpbGUiOyB0aGVuIFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgaWYgdGVzdCAtZCAkKHNyY2RpcikvJCRmaWxlICYmIHRlc3QgJCRkICE9ICQoc3JjZGlyKTsgdGhlbiBcCisJICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICBlbHNlIFwKKwkgICAgdGVzdCAtZiAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKK2NoZWNrLWFtOiBhbGwtYW0KK2NoZWNrOiBjaGVjay1hbQorYWxsLWFtOiBNYWtlZmlsZQoraW5zdGFsbGRpcnM6CitpbnN0YWxsOiBpbnN0YWxsLWFtCitpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1hbQoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KK3VuaW5zdGFsbDogdW5pbnN0YWxsLWFtCisKK2luc3RhbGwtYW06IGFsbC1hbQorCUAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtCisKK2luc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCitpbnN0YWxsLXN0cmlwOgorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQorbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKKworY2xlYW4tZ2VuZXJpYzoKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCisKK21haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorY2xlYW46IGNsZWFuLWFtCisKK2NsZWFuLWFtOiBjbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWFtCisKK2Rpc3RjbGVhbjogZGlzdGNsZWFuLWFtCisJLXJtIC1mIE1ha2VmaWxlCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1nZW5lcmljCisKK2R2aTogZHZpLWFtCisKK2R2aS1hbToKKworaHRtbDogaHRtbC1hbQorCitodG1sLWFtOgorCitpbmZvOiBpbmZvLWFtCisKK2luZm8tYW06CisKK2luc3RhbGwtZGF0YS1hbToKKworaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCisKK2luc3RhbGwtZHZpLWFtOgorCitpbnN0YWxsLWV4ZWMtYW06CisKK2luc3RhbGwtaHRtbDogaW5zdGFsbC1odG1sLWFtCisKK2luc3RhbGwtaHRtbC1hbToKKworaW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tYW0KKworaW5zdGFsbC1pbmZvLWFtOgorCitpbnN0YWxsLW1hbjoKKworaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLWFtCisKK2luc3RhbGwtcGRmLWFtOgorCitpbnN0YWxsLXBzOiBpbnN0YWxsLXBzLWFtCisKK2luc3RhbGwtcHMtYW06CisKK2luc3RhbGxjaGVjay1hbToKKworbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1hbQorCS1ybSAtZiBNYWtlZmlsZQorbWFpbnRhaW5lci1jbGVhbi1hbTogZGlzdGNsZWFuLWFtIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYworCittb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tYW0KKworbW9zdGx5Y2xlYW4tYW06IG1vc3RseWNsZWFuLWdlbmVyaWMKKworcGRmOiBwZGYtYW0KKworcGRmLWFtOgorCitwczogcHMtYW0KKworcHMtYW06CisKK3VuaW5zdGFsbC1hbToKKworLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAorCisuUEhPTlk6IGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4gXAorCWRpc3RjbGVhbi1nZW5lcmljIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIFwKKwlpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIFwKKwlpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gXAorCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCisJbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAorCW1vc3RseWNsZWFuLWdlbmVyaWMgcGRmIHBkZi1hbSBwcyBwcy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtCisKKworIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4KKyMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLk5PRVhQT1JUOgpkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvbTQvaGVycm5vLm00IGIvc3JjL21pc3NpbmcvbTQvaGVycm5vLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYzBkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWlzc2luZy9tNC9oZXJybm8ubTQKQEAgLTAsMCArMSw0MSBAQAorZG5sICoKK2RubCAqIENvcHlyaWdodCAoYykgMjAwMSAgTW90b3l1a2kgS2FzYWhhcmEKK2RubCAqCitkbmwgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK2RubCAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworZG5sICogYXJlIG1ldDoKK2RubCAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CitkbmwgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCitkbmwgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorZG5sICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorZG5sICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KK2RubCAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCitkbmwgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKK2RubCAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorZG5sICogCitkbmwgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorZG5sICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCitkbmwgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK2RubCAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlNCRQorZG5sICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorZG5sICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK2RubCAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworZG5sICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK2RubCAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitkbmwgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitkbmwgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitkbmwgKgorCitkbmwgKiAKK2RubCAqIENoZWNrIGZvciBoX2Vycm5vLgorZG5sICoKK0FDX0RFRlVOKFtBQ19ERUNMX0hfRVJSTk9dLAorW0FDX0NBQ0hFX0NIRUNLKGZvciBoX2Vycm5vIGRlY2xhcmF0aW9uIGluIG5ldGRiLmgsIGFjX2N2X2RlY2xfaF9lcnJubywKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8bmV0ZGIuaD5dXSwgW1sKK2hfZXJybm8gPSAwOworXV0pXSxbYWNfY3ZfZGVjbF9oX2Vycm5vPXllc10sW2FjX2N2X2RlY2xfaF9lcnJubz1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl9kZWNsX2hfZXJybm8iID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhfRVJSTk9fREVDTEFSRUQsIDEsCitbRGVmaW5lIHRvIDEgaWYgYGhfZXJybm8nIGlzIGRlY2xhcmVkIGJ5IDxuZXRkYi5oPl0pCitmaV0pCmRpZmYgLS1naXQgYS9zcmMvbWlzc2luZy9tNC9pbjZhZGRyLm00IGIvc3JjL21pc3NpbmcvbTQvaW42YWRkci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDZlODJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvbTQvaW42YWRkci5tNApAQCAtMCwwICsxLDg5IEBACitkbmwgKgorZG5sICogQ29weXJpZ2h0IChjKSAyMDAxICBNb3RveXVraSBLYXNhaGFyYQorZG5sICoKK2RubCAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorZG5sICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCitkbmwgKiBhcmUgbWV0OgorZG5sICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KK2RubCAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CitkbmwgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCitkbmwgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorZG5sICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKK2RubCAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorZG5sICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCitkbmwgKiAKK2RubCAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECitkbmwgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK2RubCAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorZG5sICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SU0JFCitkbmwgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitkbmwgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorZG5sICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitkbmwgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorZG5sICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK2RubCAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK2RubCAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KK2RubCAqCisKK2RubCAqIAorZG5sICogQ2hlY2sgZm9yIHN0cnVjdCBpbjZfYWRkcgorZG5sICogCitBQ19ERUZVTihbQUNfU1RSVUNUX0lONl9BRERSXSwKK1tBQ19DQUNIRV9DSEVDSyhmb3Igc3RydWN0IGluNl9hZGRyLCBhY19jdl9zdHJ1Y3RfaW42X2FkZHIsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+XV0sIFtbCitzdHJ1Y3QgaW42X2FkZHIgYWRkcmVzczsKK11dKV0sW2FjX2N2X3N0cnVjdF9pbjZfYWRkcj15ZXNdLFthY19jdl9zdHJ1Y3RfaW42X2FkZHI9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3Zfc3RydWN0X2luNl9hZGRyIiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX1NUUlVDVF9JTjZfQUREUiwgMSwKK1tEZWZpbmUgdG8gMSBpZiA8bmV0aW5ldC9pbi5oPiBkZWZpbmVzIGBzdHJ1Y3QgaW42X2FkZHInXSkKK2ZpXSkKKworZG5sICogCitkbmwgKiBDaGVjayBmb3IgaW42YWRkcl9hbnkuCitkbmwgKgorQUNfREVGVU4oW0FDX0RFQ0xfSU42QUREUl9BTlldLAorW0FDX1JFUVVJUkUoW0FDX1NUUlVDVF9JTjZfQUREUl0pCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3RfaW42X2FkZHIgPSBubzsgdGhlbgorICAgIGFjX2N2X2RlY2xfaW42YWRkcl9hbnk9bm8KK2Vsc2UKKyAgICBBQ19DQUNIRV9DSEVDSyhmb3IgaW42YWRkcl9hbnkgZGVjbGFyYXRpb24gaW4gbmV0aW5ldC9pbi5oLAorICAgIGFjX2N2X2RlY2xfaW42YWRkcl9hbnksCisgICAgW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPl1dLCBbWwordW5zaWduZWQgY2hhciAqYWRkcmVzczsKK2FkZHJlc3MgPSAoY2hhciAqKSZpbjZhZGRyX2FueTsKK11dKV0sW2FjX2N2X2RlY2xfaW42YWRkcl9hbnk9eWVzXSxbYWNfY3ZfZGVjbF9pbjZhZGRyX2FueT1ub10pXSkKKyAgICBpZiB0ZXN0ICIkYWNfY3ZfZGVjbF9pbjZhZGRyX2FueSIgPSB5ZXM7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKElONkFERFJfQU5ZX0RFQ0xBUkVELCAxLAorW0RlZmluZSB0byAxIGlmIGBpbjZhZGRyX2FueScgaXMgZGVjbGFyZWQgYnkgPG5ldGluZXQvaW4uaD5dKQorICAgIGZpCitmaV0pCisKK2RubCAqCitkbmwgKiBDaGVjayBmb3IgaW42YWRkcl9sb29wYmFjay4KK2RubCAqCitBQ19ERUZVTihbQUNfREVDTF9JTjZBRERSX0xPT1BCQUNLXSwKK1tBQ19SRVFVSVJFKFtBQ19TVFJVQ1RfSU42X0FERFJdKQoraWYgdGVzdCAkYWNfY3Zfc3RydWN0X2luNl9hZGRyID0gbm87IHRoZW4KKyAgICBhY19jdl9kZWNsX2luNmFkZHJfbG9vcGJhY2s9bm8KK2Vsc2UKKyAgICBBQ19DQUNIRV9DSEVDSyhmb3IgaW42YWRkcl9sb29wYmFjayBkZWNsYXJhdGlvbiBpbiBuZXRpbmV0L2luLmgsCisgICAgYWNfY3ZfZGVjbF9pbjZhZGRyX2xvb3BiYWNrLAorICAgIFtBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dXSwgW1sKK3Vuc2lnbmVkIGNoYXIgKmFkZHJlc3M7CithZGRyZXNzID0gKGNoYXIgKikmaW42YWRkcl9sb29wYmFjazsKK11dKV0sW2FjX2N2X2RlY2xfaW42YWRkcl9sb29wYmFjaz15ZXNdLFthY19jdl9kZWNsX2luNmFkZHJfbG9vcGJhY2s9bm9dKV0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2RlY2xfaW42YWRkcl9sb29wYmFjayIgPSB5ZXM7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKElONkFERFJfTE9PUEJBQ0tfREVDTEFSRUQsIDEsCitbRGVmaW5lIHRvIDEgaWYgYGluNmFkZHJfbG9vcGJhY2snIGlzIGRlY2xhcmVkIGJ5IDxuZXRpbmV0L2luLmg+XSkKKyAgICBmaQorZmldKQpkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvbTQvc2FsZW4ubTQgYi9zcmMvbWlzc2luZy9tNC9zYWxlbi5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDA5NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvbTQvc2FsZW4ubTQKQEAgLTAsMCArMSwzMiBAQAorZG5sIENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiwgMTk5NywgMTk5OAorZG5sIHRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZworZG5sIGRubCBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgorZG5sIGRubCBgYFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwKK2RubCBkbmwgTGF3cmVuY2UgQmVya2VsZXkgTGFib3JhdG9yeSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4nJyBOZWl0aGVyIHRoZSBuYW1lIG9mCitkbmwgZG5sIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlCitkbmwgZG5sIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorZG5sIGRubCB3cml0dGVuIHBlcm1pc3Npb24uCitkbmwgZG5sIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBXSVRIT1VUIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKK2RubCBkbmwgV0FSUkFOVElFUywgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKK2RubCBkbmwgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KK2RubCBkbmwKK2RubCBkbmwgTEJMIGF1dG9jb25mIG1hY3JvcworZG5sIGRubAorZG5sCitkbmwKK2RubCBDaGVja3MgdG8gc2VlIGlmIHRoZSBzb2NrYWRkciBzdHJ1Y3QgaGFzIHRoZSA0LjQgQlNEIHNhX2xlbiBtZW1iZXIKK2RubCBib3Jyb3dlZCBmcm9tIExCTCBsaWJwY2FwCitBQ19ERUZVTihbQUNfQ0hFQ0tfU0FfTEVOXSwgWworICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgc29ja2FkZHIgc3RydWN0IGhhcyBzYV9sZW4gbWVtYmVyKQorICAgICAgICBBQ19DQUNIRV9WQUwoJDEsCisgICAgICAgIEFDX1RSWV9DT01QSUxFKFsKKyMgICAgICAgICAgICAgICBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgICAgICAgICAgICAgICBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+XSwKKyAgICAgICAgICAgICAgICBbdV9pbnQgaSA9IHNpemVvZigoKHN0cnVjdCBzb2NrYWRkciAqKTApLT5zYV9sZW4pXSwKKyAgICAgICAgICAgICAgICAkMT15ZXMsCisgICAgICAgICAgICAgICAgJDE9bm8pKQorICAgICAgICBBQ19NU0dfUkVTVUxUKCQkMSkKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICQkMSA9IHllcyA7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORShbSEFWRV9TT0NLQUREUl9TQV9MRU5dLDEsW0RlZmluZSBpZiBzdHJ1Y3Qgc29ja2FkZHIgaGFzIHRoZSBzYV9sZW4gbWVtYmVyXSkKKyAgICAgICAgZmkKK10pCmRpZmYgLS1naXQgYS9zcmMvbWlzc2luZy9tNC9zb2NrYWRkcmluNi5tNCBiL3NyYy9taXNzaW5nL200L3NvY2thZGRyaW42Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MjcwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWlzc2luZy9tNC9zb2NrYWRkcmluNi5tNApAQCAtMCwwICsxLDYwIEBACitkbmwgKgorZG5sICogQ29weXJpZ2h0IChjKSAyMDAxICBNb3RveXVraSBLYXNhaGFyYQorZG5sICoKK2RubCAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorZG5sICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCitkbmwgKiBhcmUgbWV0OgorZG5sICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KK2RubCAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CitkbmwgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCitkbmwgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorZG5sICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKK2RubCAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorZG5sICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCitkbmwgKiAKK2RubCAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECitkbmwgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK2RubCAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorZG5sICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SU0JFCitkbmwgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitkbmwgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorZG5sICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitkbmwgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorZG5sICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK2RubCAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK2RubCAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KK2RubCAqCisKK2RubCAqIAorZG5sICogQ2hlY2sgZm9yIHN0cnVjdCBzb2NrYWRkcl9pbjYKK2RubCAqCitBQ19ERUZVTihbQUNfU1RSVUNUX1NPQ0tBRERSX0lONl0sCitbQUNfQ0FDSEVfQ0hFQ0soZm9yIHN0cnVjdCBzb2NrYWRkcl9pbjYsIGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9pbjYsCitbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+XV0sIFtbCitzdHJ1Y3Qgc29ja2FkZHJfaW42IGFkZHJlc3M7CitdXSldLFthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfaW42PXllc10sW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9pbjY9bm9dKV0pCitpZiB0ZXN0ICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX2luNiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9TVFJVQ1RfU09DS0FERFJfSU42LCAxLAorW0RlZmluZSB0byAxIGlmIDxuZXRpbmV0L2luLmg+IGRlZmluZXMgYHN0cnVjdCBzb2NrYWRkcl9pbjYnXSkKK2ZpXSkKKworZG5sICogCitkbmwgKiBDaGVjayBmb3Igc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UKK2RubCAqIAorQUNfREVGVU4oW0FDX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFXSwKK1tBQ19DQUNIRV9DSEVDSyhmb3Igc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UsIGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlLAorW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPl1dLCBbWworc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcmVzczsKK11dKV0sW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlPXllc10sW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlPW5vXSldKQoraWYgdGVzdCAiJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlIiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFLCAxLAorW0RlZmluZSB0byAxIGlmIDxuZXRpbmV0L2luLmg+IGRlZmluZXMgYHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlJ10pCitmaV0pCisKZGlmZiAtLWdpdCBhL3NyYy9taXNzaW5nL200L3NvY2tpbnR0eXBlcy5tNCBiL3NyYy9taXNzaW5nL200L3NvY2tpbnR0eXBlcy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDk0MDYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvbTQvc29ja2ludHR5cGVzLm00CkBAIC0wLDAgKzEsMTU0IEBACitkbmwgKgorZG5sICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAzICBNb3RveXVraSBLYXNhaGFyYQorZG5sICoKK2RubCAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorZG5sICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCitkbmwgKiBhcmUgbWV0OgorZG5sICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KK2RubCAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CitkbmwgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCitkbmwgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorZG5sICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKK2RubCAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorZG5sICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCitkbmwgKiAKK2RubCAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECitkbmwgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK2RubCAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorZG5sICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBQUk9KRUNUIE9SIENPTlRSSUJVVE9SU0JFCitkbmwgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitkbmwgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorZG5sICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitkbmwgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorZG5sICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK2RubCAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK2RubCAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KK2RubCAqCisKK2RubCAqIAorZG5sICogQ2hlY2sgZm9yIHNvY2tsZW5fdC4KK2RubCAqIAorQUNfREVGVU4oW0FDX1RZUEVfU09DS0xFTl9UXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIHNvY2tsZW5fdF0sIGFjX2N2X3R5cGVfc29ja2xlbl90LAorW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+XV0sIFtbCitzb2NrbGVuX3Qgc29ja2xlbjsKK11dKV0sW2FjX2N2X3R5cGVfc29ja2xlbl90PXllc10sW2FjX2N2X3R5cGVfc29ja2xlbl90PW5vXSldKQoraWYgdGVzdCAiJGFjX2N2X3R5cGVfc29ja2xlbl90IiAhPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoc29ja2xlbl90LCBpbnQsCitbRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gb3IgPHN5cy9zb2NrZXQuaD4gZG9lcyBub3QgZGVmaW5lLl0pCitmaV0pCisKK2RubCAqIAorZG5sICogQ2hlY2sgZm9yIGluX3BvcnRfdC4KK2RubCAqIAorQUNfREVGVU4oW0FDX1RZUEVfSU5fUE9SVF9UXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIGluX3BvcnRfdF0sIGFjX2N2X3R5cGVfaW5fcG9ydF90LAorW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPl1dLCBbWworaW5fcG9ydF90IGluX3BvcnQ7CitdXSldLFthY19jdl90eXBlX2luX3BvcnRfdD15ZXNdLFthY19jdl90eXBlX2luX3BvcnRfdD1ub10pXSkKK2lmIHRlc3QgIiRhY19jdl90eXBlX2luX3BvcnRfdCIgIT0geWVzOyB0aGVuCisgICAgYWNfY3Zfc2luX3BvcnRfc2l6ZT11bmtub3duCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2luX3BvcnQpID09IHNpemVvZihsb25nKSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2luX3BvcnRfc2l6ZT1sb25nXSxbXSxbXSkKKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zaW5fcG9ydCkgPT0gc2l6ZW9mKGludCkpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3Npbl9wb3J0X3NpemU9aW50XSxbXSxbXSkKKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zaW5fcG9ydCkgPT0gc2l6ZW9mKHNob3J0KSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2luX3BvcnRfc2l6ZT1zaG9ydF0sW10sW10pCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2luX3BvcnQpID09IHNpemVvZihjaGFyKSkgPyAwIDogMTsKKyAgICB9CisgICAgXV0pXSxbYWNfY3Zfc2luX3BvcnRfc2l6ZT1jaGFyXSxbXSxbXSkKKyAgICBpZiB0ZXN0ICIkYWNfY3Zfc2luX3BvcnRfc2l6ZSIgPSB1bmtub3duOyB0aGVuCisJQUNfTVNHX0VSUk9SKFtGYWlsZWQgdG8gZ2V0IHNpemUgb2Ygc2luX3BvcnQgaW4gc3RydWN0IHNvY2thZGRyX2luLl0pCisgICAgZmkKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoaW5fcG9ydF90LCB1bnNpZ25lZCAkYWNfY3Zfc2luX3BvcnRfc2l6ZSwKK1tEZWZpbmUgdG8gYHVuc2lnbmVkIGNoYXInLCBgdW5zaWduZWQgc2hvcnQnLCBgdW5zaWduZWQgaW50JyBvcgorYHVuc2lnbmVkIGxvbmcnIGFjY29yZGluZyB3aXRoIHNpemUgb2YgYHNpbl9wb3J0JyBpbiBgc3RydWN0IHNvY2thZGRyX2luJywKK2lmIDxzeXMvdHlwZXMuaD4sIDxzeXMvc29ja2V0Lmg+IG9yIDxuZXRpbmV0L2luLmg+IGRvZXMgbm90IGRlZmluZQorYGluX3BvcnRfdCcuXSkKK2ZpXSkKKworZG5sICogCitkbmwgKiBDaGVjayBmb3Igc2FfZmFtaWx5X3QuCitkbmwgKiAKK0FDX0RFRlVOKFtBQ19UWVBFX1NBX0ZBTUlMWV9UXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIHNhX2ZhbWlseV90XSwgYWNfY3ZfdHlwZV9zYV9mYW1pbHlfdCwKK1tBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl1dLCBbWworc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OworXV0pXSxbYWNfY3ZfdHlwZV9zYV9mYW1pbHlfdD15ZXNdLFthY19jdl90eXBlX3NhX2ZhbWlseV90PW5vXSldKQoraWYgdGVzdCAiJGFjX2N2X3R5cGVfc2FfZmFtaWx5X3QiICE9IHllczsgdGhlbgorICAgIGFjX2N2X3NhX2ZhbWlseV9zaXplPXVua25vd24KKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkciBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2FfZmFtaWx5KSA9PSBzaXplb2YobG9uZykpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3NhX2ZhbWlseV9zaXplPWxvbmddLFtdLFtdKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zYV9mYW1pbHkpID09IHNpemVvZihpbnQpKSA/IDAgOiAxOworICAgIH0KKyAgICBdXSldLFthY19jdl9zYV9mYW1pbHlfc2l6ZT1pbnRdLFtdLFtdKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgICAgaW50IG1haW4oKSB7CisJc3RydWN0IHNvY2thZGRyIGFkZHI7CisJcmV0dXJuIChzaXplb2YoYWRkci5zYV9mYW1pbHkpID09IHNpemVvZihzaG9ydCkpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3NhX2ZhbWlseV9zaXplPXNob3J0XSxbXSxbXSkKKyAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgIGludCBtYWluKCkgeworCXN0cnVjdCBzb2NrYWRkciBhZGRyOworCXJldHVybiAoc2l6ZW9mKGFkZHIuc2FfZmFtaWx5KSA9PSBzaXplb2YoY2hhcikpID8gMCA6IDE7CisgICAgfQorICAgIF1dKV0sW2FjX2N2X3NhX2ZhbWlseV9zaXplPWNoYXJdLFtdLFtdKQorICAgIGlmIHRlc3QgIiRhY19jdl9zYV9mYW1pbHlfc2l6ZSIgPSB1bmtub3duOyB0aGVuCisJQUNfTVNHX0VSUk9SKFtGYWlsZWQgdG8gZ2V0IHNpemUgb2Ygc2FfZmFtaWx5IGluIHN0cnVjdCBzb2NrYWRkci5dKQorICAgIGZpCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKHNhX2ZhbWlseV90LCB1bnNpZ25lZCAkYWNfY3Zfc2FfZmFtaWx5X3NpemUsCitbRGVmaW5lIHRvIGB1bnNpZ25lZCBjaGFyJywgYHVuc2lnbmVkIHNob3J0JywgYHVuc2lnbmVkIGludCcgb3IKK2B1bnNpZ25lZCBsb25nJyBhY2NvcmRpbmcgd2l0aCBzaXplIG9mIGBzYV9mYW1pbHknIGluIGBzdHJ1Y3Qgc29ja2FkZHInLAoraWYgPHN5cy90eXBlcy5oPiBvciA8c3lzL3NvY2tldC5oPiBkb2VzIG5vdCBkZWZpbmUgYHNhX2ZhbWlseV90Jy5dKQorZmldKQpkaWZmIC0tZ2l0IGEvc3JjL21pc3NpbmcvbTQvc29ja2xlbnQubTQgYi9zcmMvbWlzc2luZy9tNC9zb2NrbGVudC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODQ5OTI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL21pc3NpbmcvbTQvc29ja2xlbnQubTQKQEAgLTAsMCArMSw4MSBAQAorZG5sIFRoaXMgY29tZXMgZnJvbSBsaWJjdXJsJ3MgYWNpbmNsdWRlLm00LiAgaXQgaXMgbm90IGNsZWFyIGlmIHRoaXMKK2RubCBpcyBvcmlnaW5hbCBsaWJjdXJsIGNvZGUsIG9yIG90aGVyIGNvZGUsIHNvIHdlIGluY2x1ZGUgdGhlIGxpYmN1cmwKK2RubCBjb3B5cmlnaHQgaGVyZQorZG5sCitkbmwgCitkbmwgQ29weXJpZ2h0IChjKSAxOTk2IC0gMjAwNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LgorZG5sIAorZG5sIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitkbmwgCitkbmwgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UKK2RubCB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKK2RubCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCitkbmwgCitkbmwgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK2RubCBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK2RubCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5UIE9GIFRISVJEIFBBUlRZIFJJR0hUUy4gSU4KK2RubCBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKK2RubCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKK2RubCBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRQorZG5sIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KK2RubCAKK2RubCBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZSBvZiBhIGNvcHlyaWdodCBob2xkZXIgc2hhbGwgbm90CitkbmwgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzCitkbmwgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBvZiB0aGUgY29weXJpZ2h0IGhvbGRlci4KKworZG5sIENoZWNrIGZvciBzb2NrbGVuX3Q6IGhpc3RvcmljYWxseSBvbiBCU0QgaXQgaXMgYW4gaW50LCBhbmQgaW4KK2RubCBQT1NJWCAxZyBpdCBpcyBhIHR5cGUgb2YgaXRzIG93biwgYnV0IHNvbWUgcGxhdGZvcm1zIHVzZSBkaWZmZXJlbnQKK2RubCB0eXBlcyBmb3IgdGhlIGFyZ3VtZW50IHRvIGdldHNvY2tvcHQsIGdldHBlZXJuYW1lLCBldGMuICBTbyB3ZQorZG5sIGhhdmUgdG8gdGVzdCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IHdpbGwgd29yay4KKworZG5sIFJlbW92ZSB0aGUgQUNfQ0hFQ0tfVFlQRSAtIG9uIEhQLVVYIGl0IHdvdWxkIGZpbmQgYSBzb2NrbGVuX3QsIGJ1dCB0aGUgCitkbmwgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgZ2V0c29ja29wdCBldCBhbCB3aWxsIG5vdCBhY3R1YWxseSB1c2UgCitkbmwgc29ja2xlbl90IGFyZ3MgdW5sZXNzIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgaXMgZGVmaW5lZC4gc28sIHRoZQorZG5sIEFDX0NIRUNLX1RZUEUgd2lsbCBmaW5kIGEgc29ja2xlbl90IGFuZCB0aGluayBhbGwgaXMgaGFwcGluZXNzIGFuZAorZG5sIGpveSB3aGVuIHlvdSB3aWxsIHJlYWxseSBnZXQgd2FybmluZ3MgYWJvdXQgbWlzbWF0Y2ggdHlwZXMgLSB0eXBlCitkbmwgbWlzbWF0Y2hlcyB0aGF0IHdvdWxkIGJlIHBvc3NpYmx5IEJhZCAodG0pIGluIGEgNjQtYml0IGNvbXBpbGUuCitkbmwgcmFqIDIwMDUtMDUtMTEgdGhpcyBjaGFuZ2UgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgYXQgd2lsbCAKKworZG5sIGFsc28sIGFkZGVkICJleHRlcm4iIHRvIHRoZSAiaW50IGdldHBlZXJuYW1lIiBpbiBhbiBhdHRlbXB0IHRvIHJlc29sdmUKK2RubCBhbiBpc3N1ZSB3aXRoIHRoaXMgY29kZSB1bmRlciBTb2xhcmlzIDIuOS4gIHRoaXMgdG9vIG1heSBiZSAKK2RubCByZWRpc3RyaWJ1dGVkIGF0IHdpbGwKKworQUNfREVGVU4oW09MRF9UWVBFX1NPQ0tMRU5fVF0sCitbCisgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzb2NrbGVuX3QgZXF1aXZhbGVudF0pCisgICAgICBBQ19DQUNIRV9WQUwoW2N1cmxfY3Zfc29ja2xlbl90X2VxdWl2XSwKKyAgICAgIFsKKyAgICAgICAgICMgU3lzdGVtcyBoYXZlIGVpdGhlciAic3RydWN0IHNvY2thZGRyICoiIG9yCisgICAgICAgICAjICJ2b2lkICoiIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gZ2V0cGVlcm5hbWUKKyAgICAgICAgIGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2PQorICAgICAgICAgZm9yIGFyZzIgaW4gInN0cnVjdCBzb2NrYWRkciIgdm9pZDsgZG8KKyAgICAgICAgICAgIGZvciB0IGluIGludCBzaXplX3QgdW5zaWduZWQgbG9uZyAidW5zaWduZWQgbG9uZyIgc29ja2xlbl90OyBkbworICAgICAgICAgICAgICAgQUNfVFJZX0NPTVBJTEUoWworICAgICAgICAgICAgICAgICAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgICAgICAgICAgICAgICAgI2VuZGlmCisKKyAgICAgICAgICAgICAgICAgIGV4dGVybiBpbnQgZ2V0cGVlcm5hbWUgKGludCwgJGFyZzIgKiwgJHQgKik7CisgICAgICAgICAgICAgICBdLFsKKyAgICAgICAgICAgICAgICAgICR0IGxlbjsKKyAgICAgICAgICAgICAgICAgIGdldHBlZXJuYW1lKDAsMCwmbGVuKTsKKyAgICAgICAgICAgICAgIF0sWworICAgICAgICAgICAgICAgICAgY3VybF9jdl9zb2NrbGVuX3RfZXF1aXY9IiR0IgorICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICBkb25lCisgICAgICAgICBkb25lCisKKyAgICAgICAgIGlmIHRlc3QgIngkY3VybF9jdl9zb2NrbGVuX3RfZXF1aXYiID0geDsgdGhlbgorCSMgdGFrZSBhIHdpbGQgZ3Vlc3MKKyAgICAgICAgICAgIGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2PSJzb2NrbGVuX3QiCisgICAgICAgICAgICBBQ19NU0dfV0FSTihbQ2Fubm90IGZpbmQgYSB0eXBlIHRvIHVzZSBpbiBwbGFjZSBvZiBzb2NrbGVuX3QsIGd1ZXNzaW5nIHNvY2tsZW5fdF0pCisgICAgICAgICBmaQorICAgICAgXSkKKyAgICAgIEFDX01TR19SRVNVTFQoJGN1cmxfY3Zfc29ja2xlbl90X2VxdWl2KQorICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKG5ldHBlcmZfc29ja2xlbl90LCAkY3VybF9jdl9zb2NrbGVuX3RfZXF1aXYsCisgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZSB0byB1c2UgaW4gcGxhY2Ugb2Ygc29ja2xlbl90IGlmIG5vdCBkZWZpbmVkXSkKK10pCmRpZmYgLS1naXQgYS9zcmMvbWlzc2luZy9tNC90eXBlX3NvY2tsZW5fdC5tNCBiL3NyYy9taXNzaW5nL200L3R5cGVfc29ja2xlbl90Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OWFhZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWlzc2luZy9tNC90eXBlX3NvY2tsZW5fdC5tNApAQCAtMCwwICsxLDI1IEBACitkbmwgQHN5bm9wc2lzIFRZUEVfU09DS0xFTl9UCitkbmwKK2RubCBDaGVjayB3aGV0aGVyIHN5cy9zb2NrZXQuaCBkZWZpbmVzIHR5cGUgc29ja2xlbl90LiBQbGVhc2Ugbm90ZSB0aGF0Citkbmwgc29tZSBzeXN0ZW1zIHJlcXVpcmUgc3lzL3R5cGVzLmggdG8gYmUgaW5jbHVkZWQgYmVmb3JlIHN5cy9zb2NrZXQuaAorZG5sIGNhbiBiZSBjb21waWxlZC4KK2RubAorZG5sIEBjYXRlZ29yeSBNaXNjCitkbmwgQGF1dGhvciBMYXJzIEJyaW5raG9mZiA8bGFyc0Bub2NyZXcub3JnPgorZG5sIEB2ZXJzaW9uIDIwMDUtMDEtMTEKK2RubCBAbGljZW5zZSBHUExXaXRoQUNFeGNlcHRpb24KKworQUNfREVGVU4oW1RZUEVfU09DS0xFTl9UXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIHNvY2tsZW5fdF0sIGFjX2N2X3R5cGVfc29ja2xlbl90LAorWworICBBQ19UUllfQ09NUElMRSgKKyAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+XSwKKyAgW3NvY2tsZW5fdCBsZW4gPSA0MjsgcmV0dXJuIDA7XSwKKyAgYWNfY3ZfdHlwZV9zb2NrbGVuX3Q9eWVzLAorICBhY19jdl90eXBlX3NvY2tsZW5fdD1ubykKK10pCisgIGlmIHRlc3QgJGFjX2N2X3R5cGVfc29ja2xlbl90ICE9IHllczsgdGhlbgorICAgIEFDX0RFRklORShzb2NrbGVuX3QsIGludCwgW1N1YnN0aXR1dGUgZm9yIHNvY2tsZW5fdF0pCisgIGZpCitdKQpkaWZmIC0tZ2l0IGEvc3JjL25ldF91dWlkLmMgYi9zcmMvbmV0X3V1aWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzAxMTIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL25ldF91dWlkLmMKQEAgLTAsMCArMSwzNTcgQEAKKy8qIHdoYXQgZm9sbG93cyBpcyBhIHNvbWV3aGF0IHN0cmlwcGVkLWRvd24gdmVyc2lvbiBvZiB0aGUgc2FtcGxlCisgICBpbXBsZW1lbnRhdGlvbiBvZiBVVUlEIGdlbmVyYXRpb24gZnJvbSBSRkMgNDEyMi4gICovCisKKy8qCisqKiBDb3B5cmlnaHQgKGMpIDE5OTAtIDE5OTMsIDE5OTYgT3BlbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisqKiBDb3B5cmlnaHQgKGMpIDE5ODkgYnkgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnksIFBhbG8gQWx0bywgQ2EuICYKKyoqIERpZ2l0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uLCBNYXluYXJkLCBNYXNzLgorKiogQ29weXJpZ2h0IChjKSAxOTk4IE1pY3Jvc29mdC4KKyoqIFRvIGFueW9uZSB3aG8gYWNrbm93bGVkZ2VzIHRoYXQgdGhpcyBmaWxlIGlzIHByb3ZpZGVkICJBUyBJUyIKKyoqIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eTogcGVybWlzc2lvbiB0byB1c2UsIGNvcHksCisqKiBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgZmlsZSBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5CisqKiBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlcyBhbmQKKyoqIHRoaXMgbm90aWNlIGFwcGVhcnMgaW4gYWxsIHNvdXJjZSBjb2RlIGNvcGllcywgYW5kIHRoYXQgbm9uZSBvZgorKiogdGhlIG5hbWVzIG9mIE9wZW4gU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgSGV3bGV0dC1QYWNrYXJkCisqKiBDb21wYW55LCBNaWNyb3NvZnQsIG9yIERpZ2l0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uIGJlIHVzZWQgaW4KKyoqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUKKyoqIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gTmVpdGhlciBPcGVuIFNvZnR3YXJlCisqKiBGb3VuZGF0aW9uLCBJbmMuLCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSwgTWljcm9zb2Z0LCBub3IgRGlnaXRhbAorKiogRXF1aXBtZW50IENvcnBvcmF0aW9uIG1ha2VzIGFueSByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlCisqKiBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4KKyovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lmIGRlZmluZWQoSEFWRV9JTlRUWVBFU19IKQorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKworLyogc2V0IHRoZSBmb2xsb3dpbmcgdG8gdGhlIG51bWJlciBvZiAxMDBucyB0aWNrcyBvZiB0aGUgYWN0dWFsCisgICByZXNvbHV0aW9uIG9mIHlvdXIgc3lzdGVtJ3MgY2xvY2sgKi8KKyNkZWZpbmUgVVVJRFNfUEVSX1RJQ0sgMTAyNAorCisjaWZkZWYgV0lOMzIKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSAibWlzc2luZ1xzdGRpbnQuaCIKKyNkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCisjZWxzZQorCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TVERJTlRfSAorIyAgaW5jbHVkZSA8c3RkaW50Lmg+CisjIGVuZGlmCisjZW5kaWYKKworI2lmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1lTX1NZU0lORk9fSAorI2luY2x1ZGUgPHN5cy9zeXNpbmZvLmg+CisjZW5kaWYKKworI2VuZGlmCisKKy8qIHN5c3RlbSBkZXBlbmRlbnQgY2FsbCB0byBnZXQgdGhlIGN1cnJlbnQgc3lzdGVtIHRpbWUuIFJldHVybmVkIGFzCisgICAxMDBucyB0aWNrcyBzaW5jZSBVVUlEIGVwb2NoLCBidXQgcmVzb2x1dGlvbiBtYXkgYmUgbGVzcyB0aGFuCisgICAxMDBucy4gKi8KKworI2lmZGVmIFdJTjMyCisjZGVmaW5lIEk2NChDKSBDCisjZWxzZQorI2RlZmluZSBJNjQoQykgQyMjTEwKKyNlbmRpZgorCit0eXBlZGVmIHVpbnQ2NF90IHV1aWRfdGltZV90OworCit0eXBlZGVmIHN0cnVjdCB7CisgIGNoYXIgbm9kZUlEWzZdOworfSB1dWlkX25vZGVfdDsKKworI3VuZGVmIHV1aWRfdAordHlwZWRlZiBzdHJ1Y3QgeworICB1aW50MzJfdCAgdGltZV9sb3c7CisgIHVpbnQxNl90ICB0aW1lX21pZDsKKyAgdWludDE2X3QgIHRpbWVfaGlfYW5kX3ZlcnNpb247CisgIHVpbnQ4X3QgICBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkOworICB1aW50OF90ICAgY2xvY2tfc2VxX2xvdzsKKyAgdWludDhfdCAgIG5vZGVbNl07Cit9IHV1aWRfdDsKKworLyogc29tZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4gIGtpbmQgb2Ygd2ltcHkgdG8gZG8gdGhhdCBidXQgaGVjaywgd2UKKyAgIGFyZSBhbGwgZnJpZW5kcyBoZXJlIHJpZ2h0PyAgcmFqIDIwMDgxMDI0ICovCitzdGF0aWMgdWludDE2X3QgdHJ1ZV9yYW5kb20odm9pZCk7CisKKworCisjaWZkZWYgV0lOMzIKKworc3RhdGljIHZvaWQgZ2V0X3N5c3RlbV90aW1lKHV1aWRfdGltZV90ICp1dWlkX3RpbWUpCit7CisgIFVMQVJHRV9JTlRFR0VSIHRpbWU7CisKKyAgLyogTlQga2VlcHMgdGltZSBpbiBGSUxFVElNRSBmb3JtYXQgd2hpY2ggaXMgMTAwbnMgdGlja3Mgc2luY2UKKyAgICAgSmFuIDEsIDE2MDEuIFVVSURzIHVzZSB0aW1lIGluIDEwMG5zIHRpY2tzIHNpbmNlIE9jdCAxNSwgMTU4Mi4KKyAgICAgVGhlIGRpZmZlcmVuY2UgaXMgMTcgRGF5cyBpbiBPY3QgKyAzMCAoTm92KSArIDMxIChEZWMpCisgICAgICsgMTggeWVhcnMgYW5kIDUgbGVhcCBkYXlzLiAqLworICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgoRklMRVRJTUUgKikmdGltZSk7CisgIHRpbWUuUXVhZFBhcnQgKz0KKworICAgICh1bnNpZ25lZCBfX2ludDY0KSAoMTAwMCoxMDAwKjEwKSAgICAgICAvLyBzZWNvbmRzCisgICAgKiAodW5zaWduZWQgX19pbnQ2NCkgKDYwICogNjAgKiAyNCkgICAgICAgLy8gZGF5cworICAgICogKHVuc2lnbmVkIF9faW50NjQpICgxNyszMCszMSszNjUqMTgrNSk7IC8vICMgb2YgZGF5cworICAqdXVpZF90aW1lID0gdGltZS5RdWFkUGFydDsKK30KKworLyogU2FtcGxlIGNvZGUsIG5vdCBmb3IgdXNlIGluIHByb2R1Y3Rpb247IHNlZSBSRkMgMTc1MCAqLworc3RhdGljIHZvaWQgZ2V0X3JhbmRvbV9pbmZvKGNoYXIgc2VlZFsxNl0pCit7CisgIHVpbnQxNl90IG15cmFuZDsKKyAgaW50IGk7CisKKyAgaSA9IDA7CisgIGRvIHsKKyAgICBteXJhbmQgPSB0cnVlX3JhbmRvbSgpOworICAgIHNlZWRbaSsrXSA9IG15cmFuZCAmIDB4ZmY7CisgICAgc2VlZFtpKytdID0gbXlyYW5kID4+IDg7CisgIH0gd2hpbGUgKGkgPCAxNCk7CisKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgZ2V0X3N5c3RlbV90aW1lKHV1aWRfdGltZV90ICp1dWlkX3RpbWUpCit7CisgIHN0cnVjdCB0aW1ldmFsIHRwOworCisgIGdldHRpbWVvZmRheSgmdHAsIChzdHJ1Y3QgdGltZXpvbmUgKikwKTsKKworICAvKiBPZmZzZXQgYmV0d2VlbiBVVUlEIGZvcm1hdHRlZCB0aW1lcyBhbmQgVW5peCBmb3JtYXR0ZWQgdGltZXMuCisgICAgIFVVSUQgVVRDIGJhc2UgdGltZSBpcyBPY3RvYmVyIDE1LCAxNTgyLgorICAgICBVbml4IGJhc2UgdGltZSBpcyBKYW51YXJ5IDEsIDE5NzAuKi8KKyAgKnV1aWRfdGltZSA9ICgodWludDY0X3QpdHAudHZfc2VjICogMTAwMDAwMDApCisgICAgKyAoKHVpbnQ2NF90KXRwLnR2X3VzZWMgKiAxMCkKKyAgICArIEk2NCgweDAxQjIxREQyMTM4MTQwMDApOworfQorCisvKiBTYW1wbGUgY29kZSwgbm90IGZvciB1c2UgaW4gcHJvZHVjdGlvbjsgc2VlIFJGQyAxNzUwICovCitzdGF0aWMgdm9pZCBnZXRfcmFuZG9tX2luZm8oY2hhciBzZWVkWzE2XSkKK3sKKyAgaW50IGZkOworICB1aW50MTZfdCBteXJhbmQ7CisgIGludCBpOworCisgIC8qIHdlIGFyZW4ndCBhbGwgdGhhdCBwaWNreSwgYW5kIHdlIHdvdWxkIHJhdGhlciBub3QgYmxvY2sgc28gd2UKKyAgICAgd2lsbCB1c2UgdXJhbmRvbSAqLworICBmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKworICBpZiAoZmQgIT0gLTEpIHsKKyAgICByZWFkKGZkLCBzZWVkLCAxNik7CisgICAgY2xvc2UoZmQpOworICAgIHJldHVybjsKKyAgfQorCisgIC8qIG9rLCBub3cgd2hhdD8gKi8KKworICBpID0gMDsKKyAgZG8geworICAgIG15cmFuZCA9IHRydWVfcmFuZG9tKCk7CisgICAgc2VlZFtpKytdID0gbXlyYW5kICYgMHhmZjsKKyAgICBzZWVkW2krK10gPSBteXJhbmQgPj4gODsKKyAgfSB3aGlsZSAoaSA8IDE0KTsKKworfQorCisjZW5kaWYKKworCisvKiB0cnVlX3JhbmRvbSAtLSBnZW5lcmF0ZSBhIGNyeXB0by1xdWFsaXR5IHJhbmRvbSBudW1iZXIuCisqKlRoaXMgc2FtcGxlIGRvZXNuJ3QgZG8gdGhhdC4qKiAqLworc3RhdGljIHVpbnQxNl90IHRydWVfcmFuZG9tKHZvaWQpCit7CisgIHN0YXRpYyBpbnQgaW5pdGVkID0gMDsKKyAgdXVpZF90aW1lX3QgdGltZV9ub3c7CisKKyAgaWYgKCFpbml0ZWQpIHsKKyAgICBnZXRfc3lzdGVtX3RpbWUoJnRpbWVfbm93KTsKKyAgICB0aW1lX25vdyA9IHRpbWVfbm93IC8gVVVJRFNfUEVSX1RJQ0s7CisgICAgc3JhbmQoKHVuc2lnbmVkIGludCkKKwkgICgoKHRpbWVfbm93ID4+IDMyKSBeIHRpbWVfbm93KSAmIDB4ZmZmZmZmZmYpKTsKKyAgICBpbml0ZWQgPSAxOworICB9CisKKyAgcmV0dXJuICh1aW50MTZfdClyYW5kKCk7Cit9CisKKy8qIHB1aWQgLS0gcHJpbnQgYSBVVUlEICovCit2b2lkIHB1aWQodXVpZF90IHUpCit7CisgIGludCBpOworCisgIHByaW50ZigiJTguOHgtJTQuNHgtJTQuNHgtJTIuMnglMi4yeC0iLCB1LnRpbWVfbG93LCB1LnRpbWVfbWlkLAorCSB1LnRpbWVfaGlfYW5kX3ZlcnNpb24sIHUuY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZCwKKwkgdS5jbG9ja19zZXFfbG93KTsKKyAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKKyAgICBwcmludGYoIiUyLjJ4IiwgdS5ub2RlW2ldKTsKKyAgcHJpbnRmKCJcbiIpOworfQorCisvKiBzbnB1aWQgLS0gcHJpbnQgYSBVVUlEIGluIHRoZSBzdXBwbGllZCBidWZmZXIgKi8KK3ZvaWQgc25wdWlkKGNoYXIgKnN0ciwgc2l6ZV90IHNpemUsIHV1aWRfdCB1KSB7CisgIGludCBpOworICBjaGFyICp0bXAgPSBzdHI7CisKKyAgaWYgKHNpemUgPCAzOCkgeworICAgIHNucHJpbnRmKHRtcCxzaXplLCIlcyIsInV1aWQgc3RyaW5nIHRvbyBzbWFsbCIpOworICAgIHJldHVybjsKKyAgfQorCisgIC8qIHBlcmhhcHMgdGhpcyBpcyBhIHRyaWZsZSBvcHRpbWlzdGljIGJ1dCB3aGF0IHRoZSBoZWNrICovCisgIHNwcmludGYodG1wLAorCSAgIiU4Ljh4LSU0LjR4LSU0LjR4LSUyLjJ4JTIuMngtIiwKKwkgIHUudGltZV9sb3csCisJICB1LnRpbWVfbWlkLAorCSAgdS50aW1lX2hpX2FuZF92ZXJzaW9uLAorCSAgdS5jbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkLAorCSAgdS5jbG9ja19zZXFfbG93KTsKKyAgdG1wICs9IDI0OworICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgc3ByaW50Zih0bXAsIiUyLjJ4IiwgdS5ub2RlW2ldKTsKKyAgICB0bXAgKz0gMjsKKyAgfQorICAqdG1wID0gMDsKKyAgCit9CisKKy8qIGdldC1jdXJyZW50X3RpbWUgLS0gZ2V0IHRpbWUgYXMgNjAtYml0IDEwMG5zIHRpY2tzIHNpbmNlIFVVSUQgZXBvY2guCisgICBDb21wZW5zYXRlIGZvciB0aGUgZmFjdCB0aGF0IHJlYWwgY2xvY2sgcmVzb2x1dGlvbiBpcworICAgbGVzcyB0aGFuIDEwMG5zLiAqLworc3RhdGljIHZvaWQgZ2V0X2N1cnJlbnRfdGltZSh1dWlkX3RpbWVfdCAqdGltZXN0YW1wKQoreworICBzdGF0aWMgaW50IGluaXRlZCA9IDA7CisgIHN0YXRpYyB1dWlkX3RpbWVfdCB0aW1lX2xhc3Q7CisgIHN0YXRpYyB1aW50MTZfdCB1dWlkc190aGlzX3RpY2s7CisgIHV1aWRfdGltZV90IHRpbWVfbm93OworCisgIGlmICghaW5pdGVkKSB7CisgICAgZ2V0X3N5c3RlbV90aW1lKCZ0aW1lX25vdyk7CisgICAgdXVpZHNfdGhpc190aWNrID0gVVVJRFNfUEVSX1RJQ0s7CisgICAgaW5pdGVkID0gMTsKKyAgfQorCisgIGZvciAoIDsgOyApIHsKKyAgICBnZXRfc3lzdGVtX3RpbWUoJnRpbWVfbm93KTsKKworICAgIC8qIGlmIGNsb2NrIHJlYWRpbmcgY2hhbmdlZCBzaW5jZSBsYXN0IFVVSUQgZ2VuZXJhdGVkLCAqLworICAgIGlmICh0aW1lX2xhc3QgIT0gdGltZV9ub3cpIHsKKyAgICAgIC8qIHJlc2V0IGNvdW50IG9mIHV1aWRzIGdlbidkIHdpdGggdGhpcyBjbG9jayByZWFkaW5nICovCisgICAgICB1dWlkc190aGlzX3RpY2sgPSAwOworICAgICAgdGltZV9sYXN0ID0gdGltZV9ub3c7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHV1aWRzX3RoaXNfdGljayA8IFVVSURTX1BFUl9USUNLKSB7CisgICAgICB1dWlkc190aGlzX3RpY2srKzsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICAvKiBnb2luZyB0b28gZmFzdCBmb3Igb3VyIGNsb2NrOyBzcGluICovCisgIH0KKyAgLyogYWRkIHRoZSBjb3VudCBvZiB1dWlkcyB0byBsb3cgb3JkZXIgYml0cyBvZiB0aGUgY2xvY2sgcmVhZGluZyAqLworICAqdGltZXN0YW1wID0gdGltZV9ub3cgKyB1dWlkc190aGlzX3RpY2s7Cit9CisKKworLyogc3lzdGVtIGRlcGVuZGVudCBjYWxsIHRvIGdldCBJRUVFIG5vZGUgSUQuCisgICBUaGlzIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0ZXMgYSByYW5kb20gbm9kZSBJRC4gKi8KKy8qIG5ldHBlcmYgbW9kIC0gZG9uJ3QgYm90aGVyIHRyeWluZyB0byByZWFkIG9yIHdyaXRlIHRoZSBub2RlaWQgKi8KK3N0YXRpYyB2b2lkIGdldF9pZWVlX25vZGVfaWRlbnRpZmllcih1dWlkX25vZGVfdCAqbm9kZSkKK3sKKyAgc3RhdGljIGludCBpbml0ZWQgPSAwOworICBzdGF0aWMgdXVpZF9ub2RlX3Qgc2F2ZWRfbm9kZTsKKyAgY2hhciBzZWVkWzE2XTsKKworICBpZiAoIWluaXRlZCkgeworICAgIGdldF9yYW5kb21faW5mbyhzZWVkKTsKKyAgICBzZWVkWzBdIHw9IDB4MDE7CisgICAgbWVtY3B5KCZzYXZlZF9ub2RlLCBzZWVkLCBzaXplb2Ygc2F2ZWRfbm9kZSk7CisgIH0KKyAgaW5pdGVkID0gMTsKKworICAqbm9kZSA9IHNhdmVkX25vZGU7Cit9CisKKworLyogZm9ybWF0X3V1aWRfdjEgLS0gbWFrZSBhIFVVSUQgZnJvbSB0aGUgdGltZXN0YW1wLCBjbG9ja3NlcSwKKyAgIGFuZCBub2RlIElEICovCitzdGF0aWMgdm9pZCBmb3JtYXRfdXVpZF92MSh1dWlkX3QqIHV1aWQsIHVpbnQxNl90IGNsb2NrX3NlcSwKKyAgICAgICAgICAgICAgICAgICAgdXVpZF90aW1lX3QgdGltZXN0YW1wLCB1dWlkX25vZGVfdCBub2RlKQoreworICAvKiBDb25zdHJ1Y3QgYSB2ZXJzaW9uIDEgdXVpZCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB3ZSd2ZSBnYXRoZXJlZAorICAgICBwbHVzIGEgZmV3IGNvbnN0YW50cy4gKi8KKyAgdXVpZC0+dGltZV9sb3cgPSAodW5zaWduZWQgbG9uZykodGltZXN0YW1wICYgMHhGRkZGRkZGRik7CisgIHV1aWQtPnRpbWVfbWlkID0gKHVuc2lnbmVkIHNob3J0KSgodGltZXN0YW1wID4+IDMyKSAmIDB4RkZGRik7CisgIHV1aWQtPnRpbWVfaGlfYW5kX3ZlcnNpb24gPQorICAgICh1bnNpZ25lZCBzaG9ydCkoKHRpbWVzdGFtcCA+PiA0OCkgJiAweDBGRkYpOworICB1dWlkLT50aW1lX2hpX2FuZF92ZXJzaW9uIHw9ICgxIDw8IDEyKTsKKyAgdXVpZC0+Y2xvY2tfc2VxX2xvdyA9IGNsb2NrX3NlcSAmIDB4RkY7CisgIHV1aWQtPmNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWQgPSAoY2xvY2tfc2VxICYgMHgzRjAwKSA+PiA4OworICB1dWlkLT5jbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkIHw9IDB4ODA7CisgIG1lbWNweSgmdXVpZC0+bm9kZSwgJm5vZGUsIHNpemVvZiB1dWlkLT5ub2RlKTsKK30KKworLyogdXVpZF9jcmVhdGUgLS0gZ2VuZXJhdG9yIGEgVVVJRCAqLworaW50IHV1aWRfY3JlYXRlKHV1aWRfdCAqdXVpZCkKK3sKKyAgdXVpZF90aW1lX3QgdGltZXN0YW1wOworICB1aW50MTZfdCBjbG9ja3NlcTsKKyAgdXVpZF9ub2RlX3Qgbm9kZTsKKyAgCisgIC8qIGdldCB0aW1lLCBub2RlIElELCBzYXZlZCBzdGF0ZSBmcm9tIG5vbi12b2xhdGlsZSBzdG9yYWdlICovCisgIGdldF9jdXJyZW50X3RpbWUoJnRpbWVzdGFtcCk7CisgIGdldF9pZWVlX25vZGVfaWRlbnRpZmllcigmbm9kZSk7CisgIAorICAvKiBmb3IgdXMgY2xvY2tzZXEgaXMgYWx3YXlzIHRvIGJlIHJhbmRvbSBhcyB3ZSBoYXZlIG5vIHN0YXRlICovCisgIGNsb2Nrc2VxID0gdHJ1ZV9yYW5kb20oKTsKKyAgCisgIC8qIHN0dWZmIGZpZWxkcyBpbnRvIHRoZSBVVUlEICovCisgIGZvcm1hdF91dWlkX3YxKHV1aWQsIGNsb2Nrc2VxLCB0aW1lc3RhbXAsIG5vZGUpOworICByZXR1cm4gMTsKK30KKwordm9pZCBnZXRfdXVpZF9zdHJpbmcoY2hhciAqdXVpZF9zdHIsIHNpemVfdCBzaXplKSB7CisgIHV1aWRfdCB1OworCisgIHV1aWRfY3JlYXRlKCZ1KTsKKyAgc25wdWlkKHV1aWRfc3RyLHNpemUsdSk7CisgIAorICByZXR1cm47Cit9CisKKyNpZmRlZiBORVRQRVJGX1NUQU5EQUxPTkVfREVCVUcKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIHV1aWRfdCB1OworICBjaGFyICB1dWlkX3N0clszOF07CisjaWYgMAorICB1dWlkX2NyZWF0ZSgmdSk7CisgIHByaW50ZigidXVpZF9jcmVhdGUoKTogIik7IHB1aWQodSk7CisgIHNucHVpZCh1dWlkX3N0cixzaXplb2YodXVpZF9zdHIpLHUpOworICBwcmludGYoIlxuYXMgYSBzdHJpbmcgJXNcbiIsdXVpZF9zdHIpOworI2VuZGlmCisgIGdldF91dWlkX3N0cmluZyh1dWlkX3N0cixzaXplb2YodXVpZF9zdHIpKTsKKyAgcHJpbnRmKCJ1dWlkX3N0ciBpcyAlc1xuIix1dWlkX3N0cik7CisgIHJldHVybiAwOworfQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmV0Y3B1LmggYi9zcmMvbmV0Y3B1LmgKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gbmV0Y3B1LmgKcmVuYW1lIHRvIHNyYy9uZXRjcHUuaAppbmRleCA1OGQxZTFjLi5iMDExYjFkIDEwMDY0NAotLS0gYS9uZXRjcHUuaAorKysgYi9zcmMvbmV0Y3B1LmgKQEAgLTExLDkgKzExLDcgQEAKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICB1aW50NjRfdDsKICNlbmRpZgogCi1leHRlcm4gdm9pZCAgZ2V0X2NwdV9pZGxlKHVpbnQ2NF90ICpyZXMpOwogZXh0ZXJuIGZsb2F0IGNhbGlicmF0ZV9pZGxlX3JhdGUoaW50IGl0ZXJhdGlvbnMsIGludCBpbnRlcnZhbCk7CiBleHRlcm4gZmxvYXQgY2FsY19jcHVfdXRpbF9pbnRlcm5hbChmbG9hdCBlbGFwc2VkKTsKIGV4dGVybiB2b2lkICBjcHVfc3RhcnRfaW50ZXJuYWwodm9pZCk7CiBleHRlcm4gdm9pZCAgY3B1X3N0b3BfaW50ZXJuYWwodm9pZCk7Ci0KZGlmZiAtLWdpdCBhL25ldGNwdV9rc3RhdC5jIGIvc3JjL25ldGNwdV9rc3RhdC5jCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIG5ldGNwdV9rc3RhdC5jCnJlbmFtZSB0byBzcmMvbmV0Y3B1X2tzdGF0LmMKaW5kZXggNjMyMDY1OC4uYmJmMmVhYyAxMDA2NDQKLS0tIGEvbmV0Y3B1X2tzdGF0LmMKKysrIGIvc3JjL25ldGNwdV9rc3RhdC5jCkBAIC0xLDUgKzEsNSBAQAogY2hhciAgIG5ldGNwdV9rc3RhdF9pZFtdPSJcCi1AKCMpbmV0Y3B1X2tzdGF0LmMgIFZlcnNpb24gMi40LjAiOworQCgjKW5ldGNwdV9rc3RhdC5jICBWZXJzaW9uIDIuNi4wIjsKIAogI2lmIEhBVkVfQ09ORklHX0gKICMgaW5jbHVkZSA8Y29uZmlnLmg+CkBAIC00OCw3ICs0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBwdWxsIHRoZSBjcHUgaW5mbyBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtzdGF0IGludGVyZmFjZS4gIGF0IGxlYXN0IEkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGluayB0aGF0IGlzIHdoYXQgdGhpcyBpcyA6KSByYWoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LzIwMDAgKi8gIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgvMjAwMCAqLwogCiAjZGVmaW5lIFVQREtDSUQobmssb2spIFwKIGlmIChuayA9PSAtMSkgeyBcCkBAIC04MCwxMSArODAsMTEgQEAKICAgICBmcHJpbnRmKHdoZXJlLCJvcGVuX2tzdGF0OiBlbnRlclxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKgogICAgKiAwLiBrc3RhdF9vcGVuCiAgICAqLwotICAKKwogICBpZiAoIWtjKQogICAgIHsKICAgICAgIGtjID0ga3N0YXRfb3BlbigpOwpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgZnByaW50Zih3aGVyZSwicGFzc2luZyBrY2lkX2NoYW5nZWRcbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyoKICAgICogMS4gIGtzdGF0X2NoYWluX3VwZGF0ZQogICAgKi8KQEAgLTEyOCwyOCArMTI4LDI4IEBACiAgICAgZnByaW50Zih3aGVyZSwia3N0YXRfbG9va3VwIGZvciB1bml4L3N5c3RlbV9taXNjXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIGtzID0ga3N0YXRfbG9va3VwKGtjLCAidW5peCIsIDAsICJzeXN0ZW1fbWlzYyIpOwogICBpZiAoa3N0YXRfcmVhZChrYywga3MsIDApID09IC0xKSB7CiAgICAgcGVycm9yKCJrc3RhdF9yZWFkIik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgCisKKwogICBpZiAoY2hhbmdlZCkgewotICAgIAorCiAgICAgLyoKICAgICAgKiAyLiBnZXQgZGF0YSBhZGRyZXNzZXMKICAgICAgKi8KLSAgICAKKwogICAgIG5jcHUgPSAwOwotICAgIAorCiAgICAga24gPSBrc3RhdF9kYXRhX2xvb2t1cChrcywgIm5jcHVzIik7CiAgICAgaWYgKGtuICYmIGtuLT52YWx1ZS51aTMyID4gbGliX251bV9sb2NfY3B1cykgewogICAgICAgZnByaW50ZihzdGRlcnIsIm51bWJlciBvZiBDUFUncyBtaXNtYXRjaCEiKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgZm9yIChrcyA9IGtjLT5rY19jaGFpbjsga3M7CiAgICAgICAgICBrcyA9IGtzLT5rc19uZXh0KQogICAgICAgewpAQCAtMTYyLDcgKzE2Miw3IEBACiAgICAgICAgICAgICAgICB2YWx1ZXMuIGhvcGVmdWxseSB0aGlzIGlzIG5vdCBnb2luZyB0byBiZSBhIGJpZwogICAgICAgICAgICAgICAgaXNzdWUuIHJhaiA4LzIwMDAgKi8KICAgICAgICAgICAgIFVQREtDSUQobmtjaWQsIGtjaWQpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChkZWJ1ZykgewogICAgICAgICAgICAgICBmcHJpbnRmKHdoZXJlLCJjcHVfa3NbJWRdIGdldHRpbmcgJXBcbiIsbmNwdSxrcyk7CiAgICAgICAgICAgICAgIGZmbHVzaCh3aGVyZSk7CkBAIC0xNzMsNyArMTczLDcgQEAKICAgICAgICAgICAgIGlmIChuY3B1ID4gbGliX251bV9sb2NfY3B1cykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIHdpdGggdGhlIGNoZWNrIGFib3ZlLCB3b3VsZCB3ZSBldmVyIGhpdCB0aGlzPyAqLwotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICJrc3RhdCBmaW5kcyB0b28gbWFueSBjcHVzICVkOiBzaG91bGQgYmUgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBuY3B1LGxpYl9udW1fbG9jX2NwdXMpOwogICAgICAgICAgICAgICAgIGV4aXQoMSk7CkBAIC0yMTIsNyArMjEyLDcgQEAKIH0KIAogdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKK2NwdV91dGlsX2luaXQodm9pZCkKIHsKICAgb3Blbl9rc3RhdCgpOwogICByZXR1cm47CkBAIC0yMzAsNyArMjMwLDcgQEAKICAgcmV0dXJuIEtTVEFUOwogfQogCi12b2lkCitzdGF0aWMgdm9pZAogZ2V0X2NwdV9pZGxlKHVpbnQ2NF90ICpyZXMpCiB7CiAKQEAgLTI0OCwyOCArMjQ4LDI4IEBACiBmbG9hdAogY2FsaWJyYXRlX2lkbGVfcmF0ZShpbnQgaXRlcmF0aW9ucywgaW50IGludGVydmFsKQogewotIAotICBsb25nICAKKworICBsb25nCiAgICAgZmlyc3RjbnRbTUFYQ1BVU10sCiAgICAgc2Vjb25kY250W01BWENQVVNdOwogCi0gIGZsb2F0IAorICBmbG9hdAogICAgIGVsYXBzZWQsCiAgICAgdGVtcF9yYXRlLAogICAgIHJhdGVbTUFYVElNRVNdLAogICAgIGxvY2FsX21heHJhdGU7CiAKLSAgbG9uZyAgCisgIGxvbmcKICAgICBzZWMsCiAgICAgdXNlYzsKIAotICBpbnQgICAKKyAgaW50CiAgICAgaSwKICAgICBqOwotICAKKwogICBzdHJ1Y3QgIHRpbWV2YWwgdGltZTEsIHRpbWUyIDsKICAgc3RydWN0ICB0aW1lem9uZSB0ejsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwiY2FsbGluZyBvcGVuX2tzdGF0IGZyb20gY2FsaWJyYXRlX2tzdGF0XG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtMjgyLDcgKzI4Miw3IEBACiAgIH0KIAogICBsb2NhbF9tYXhyYXRlID0gKGZsb2F0KS0xLjA7Ci0gIAorCiAgIGZvcihpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykgewogICAgIHJhdGVbaV0gPSAoZmxvYXQpMC4wOwogICAgIGZvciAoaiA9IDA7IGogPCBsaWJfbnVtX2xvY19jcHVzOyBqKyspIHsKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgIHNlYyA9IHRpbWUyLnR2X3NlYyAtIHRpbWUxLnR2X3NlYzsKICAgICB1c2VjID0gdGltZTIudHZfdXNlYyAtIHRpbWUxLnR2X3VzZWM7CiAgICAgZWxhcHNlZCA9IChmbG9hdClzZWMgKyAoKGZsb2F0KXVzZWMvKGZsb2F0KTEwMDAwMDAuMCk7Ci0gICAgCisKICAgICBpZihkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwgIkNhbGlicmF0aW9uIGZvciBrc3RhdCBjb3VudGVyIHJ1bjogJWRcbiIsaSk7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJcdHNlYyA9ICVsZCB1c2VjID0gJWxkXG4iLHNlYyx1c2VjKTsKQEAgLTMyNCw3ICszMjQsNyBAQAogICAgICAgLyogd2UgYXNzdW1lIHRoYXQgaXQgd291bGQgd3JhcCBubyBtb3JlIHRoYW4gb25jZS4gd2UgYWxzbyAqLwogICAgICAgLyogYXNzdW1lIHRoYXQgdGhlIHJlc3VsdCBvZiBzdWJ0cmFjdGluZyB3aWxsICJmaXQiIHJhaiA0Lzk1ICovCiAgICAgICB0ZW1wX3JhdGUgPSAoc2Vjb25kY250W2pdID49IGZpcnN0Y250W2pdKSA/Ci0gICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdIC0gZmlyc3RjbnRbal0pL2VsYXBzZWQgOiAKKyAgICAgICAgKGZsb2F0KShzZWNvbmRjbnRbal0gLSBmaXJzdGNudFtqXSkvZWxhcHNlZCA6CiAgICAgICAgICAgKGZsb2F0KShzZWNvbmRjbnRbal0tZmlyc3RjbnRbal0rTUFYTE9ORykvZWxhcHNlZDsKICAgICAgIGlmICh0ZW1wX3JhdGUgPiByYXRlW2ldKSByYXRlW2ldID0gdGVtcF9yYXRlOwogICAgICAgaWYoZGVidWcpIHsKQEAgLTM0OCwxNSArMzQ4LDE2IEBACiAgIGZsb2F0IGNvcnJlY3Rpb25fZmFjdG9yOwogICBmbG9hdCBhY3R1YWxfcmF0ZTsKIAotICBsaWJfbG9jYWxfY3B1X3V0aWwgPSAoZmxvYXQpMC4wOworICBtZW1zZXQoJmxpYl9sb2NhbF9jcHVfc3RhdHMsIDAsIHNpemVvZihsaWJfbG9jYWxfY3B1X3N0YXRzKSk7CisKICAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiAqLwogICAvKiB0aGUgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiAqLwogICAvKiBjYWxjdWxhdGlvbnMgLSBmb3IgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5ICovCiAgIC8qIHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSAqLwogICAvKiB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZSBzaG91bGQgYmUuICovCi0gIAorCiAgIGlmIChlbGFwc2VkX3RpbWUgIT0gMC4wKSB7Ci0gICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArIAorICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKwogICAgICAgKChsaWJfZWxhcHNlZCAtIGVsYXBzZWRfdGltZSkgLyBlbGFwc2VkX3RpbWUpOwogICB9CiAgIGVsc2UgewpAQCAtMzcwLDEyICszNzEsMTIgQEAKICAgICAgdHJhY2tzLiBpZiB0aGlzIGhhcHBlbnMsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGN1bGF0aW9uCiAgICAgIGRvZXMgbm90IGdvIHNvdXRoLiByYWogNi85NSBhbmQgaWYgd2UgcnVuIGNvbXBsZXRlbHkgb3V0IG9mIGlkbGUsCiAgICAgIHRoZSBzYW1lIHRoaW5nIGNvdWxkIGluIHRoZW9yeSBoYXBwZW4gdG8gdGhlIFVTRV9LU1RBVCBwYXRoLiByYWoKLSAgICAgOC8yMDAwICovIAotICAgIAorICAgICA4LzIwMDAgKi8KKwogICAgIGlmIChsaWJfZW5kX2NvdW50W2ldID09IGxpYl9zdGFydF9jb3VudFtpXSkgewogICAgICAgbGliX2VuZF9jb3VudFtpXSsrOwogICAgIH0KLSAgICAKKwogICAgIGFjdHVhbF9yYXRlID0gKGxpYl9lbmRfY291bnRbaV0gPiBsaWJfc3RhcnRfY291bnRbaV0pID8KICAgICAgIChmbG9hdCkobGliX2VuZF9jb3VudFtpXSAtIGxpYl9zdGFydF9jb3VudFtpXSkvbGliX2VsYXBzZWQgOgogICAgICAgKGZsb2F0KShsaWJfZW5kX2NvdW50W2ldIC0gbGliX3N0YXJ0X2NvdW50W2ldICsKQEAgLTM5MCwxNSArMzkxLDEzIEBACiAgICAgfQogICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAobGliX2xvY2FsX21heHJhdGUgLSBhY3R1YWxfcmF0ZSkgLwogICAgICAgbGliX2xvY2FsX21heHJhdGUgKiAxMDA7Ci0gICAgbGliX2xvY2FsX2NwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CisgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKKyAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CiAgIH0KICAgLyogd2Ugd2FudCB0aGUgYXZlcmFnZSBhY3Jvc3MgYWxsIG4gcHJvY2Vzc29ycyAqLwotICBsaWJfbG9jYWxfY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7Ci0gIAotICBsaWJfbG9jYWxfY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7Ci0gIHJldHVybiBsaWJfbG9jYWxfY3B1X3V0aWw7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7CiAKLQorICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvbmV0Y3B1X2tzdGF0MTAuYyBiL3NyYy9uZXRjcHVfa3N0YXQxMC5jCnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIG5ldGNwdV9rc3RhdDEwLmMKcmVuYW1lIHRvIHNyYy9uZXRjcHVfa3N0YXQxMC5jCmluZGV4IDI5OWU2NmQuLjIzYWQ3ZDEgMTAwNjQ0Ci0tLSBhL25ldGNwdV9rc3RhdDEwLmMKKysrIGIvc3JjL25ldGNwdV9rc3RhdDEwLmMKQEAgLTEsNSArMSw1IEBACiBjaGFyICAgbmV0Y3B1X2tzdGF0MTBfaWRbXT0iXAotQCgjKW5ldGNwdV9rc3RhdDEwLmMgKGMpIENvcHlyaWdodCAyMDA1LTIwMDcsIEhld2xldHQtUGFja2FyZCBDb21wYW55IFZlcnNpb24gMi40LjMiOworQCgjKW5ldGNwdV9rc3RhdDEwLmMgKGMpIENvcHlyaWdodCAyMDA1LTIwMTIsIEhld2xldHQtUGFja2FyZCBDb21wYW55IFZlcnNpb24gMi42LjAiOwogCiAjaWYgSEFWRV9DT05GSUdfSAogIyBpbmNsdWRlIDxjb25maWcuaD4KQEAgLTU0LDIyICs1NCwyNiBAQAogc3RhdGljIGNwdV90aW1lX2NvdW50ZXJzX3QgY29ycmVjdGVkX2NwdV9jb3VudGVyc1tNQVhDUFVTXTsKIAogc3RhdGljIHZvaWQKLXByaW50X2NwdV90aW1lX2NvdW50ZXJzKGNoYXIgKm5hbWUsIGludCBpbnN0YW5jZSwgY3B1X3RpbWVfY291bnRlcnNfdCAqY291bnRlcnMpIAorcHJpbnRfY3B1X3RpbWVfY291bnRlcnMoY2hhciAqbmFtZSwgaW50IGluc3RhbmNlLCBjcHVfdGltZV9jb3VudGVyc190ICpjb3VudGVycykKIHsKLSAgZnByaW50Zih3aGVyZSwiJXNbJWRdOlxuIixuYW1lLGluc3RhbmNlKTsKICAgZnByaW50Zih3aGVyZSwKLQkgICJcdCBpZGxlICVsbHVcbiIsY291bnRlcnNbaW5zdGFuY2VdLmlkbGUpOwotICBmcHJpbnRmKHdoZXJlLAotCSAgIlx0IHVzZXIgJWxsdVxuIixjb3VudGVyc1tpbnN0YW5jZV0udXNlcik7Ci0gIGZwcmludGYod2hlcmUsCi0JICAiXHQga2VybmVsICVsbHVcbiIsY291bnRlcnNbaW5zdGFuY2VdLmtlcm5lbCk7Ci0gIGZwcmludGYod2hlcmUsCi0JICAiXHQgaW50ZXJydXB0ICVsbHVcbiIsY291bnRlcnNbaW5zdGFuY2VdLmludGVycnVwdCk7CisJICAiJXNbJWRdOlxuIgorCSAgIlx0IGlkbGUgJWxsdVxuIgorCSAgIlx0IHVzZXIgJWxsdVxuIgorCSAgIlx0IGtlcm5lbCAlbGx1XG4iCisJICAiXHQgaW50ZXJydXB0ICVsbHVcbiIsCisJICBuYW1lLGluc3RhbmNlLAorCSAgY291bnRlcnNbaW5zdGFuY2VdLmlkbGUsCisJICBjb3VudGVyc1tpbnN0YW5jZV0udXNlciwKKwkgIGNvdW50ZXJzW2luc3RhbmNlXS5rZXJuZWwsCisJICBjb3VudGVyc1tpbnN0YW5jZV0uaW50ZXJydXB0KTsKIH0KIAogdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKK2NwdV91dGlsX2luaXQodm9pZCkKIHsKKyAga3N0YXRfdCAgICprc3A7CisgIGludCBpOwogICBrYyA9IGtzdGF0X29wZW4oKTsKIAogICBpZiAoa2MgPT0gTlVMTCkgewpAQCAtODAsNiArODQsMzYgQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoLTEpOwogICB9CisKKyAgLyogbGV0cyBmbGVzaC1vdXQgYSBDUFUgaW5zdGFuY2UgbnVtYmVyIG1hcCBzaW5jZSBpdCBzZWVtcyB0aGF0IHNvbWUKKyAgICAgc3lzdGVtcywgbm90IGV2ZW4gdGhvc2Ugd2hpY2ggYXJlIHBhcnRpdGlvbmVkLCBjYW4gaGF2ZQorICAgICBub24tY29udGlndW91cyBDUFUgbnVtYmVycy4gIGRpc2NvdmVyZWQgInRoZSBoYXJkIHdheSIgb24gYQorICAgICBUNTIyMC4gcmFqIDIwMDgwODA0ICovCisgIGkgPSAwOworICBmb3IgKGtzcCA9IGtjLT5rY19jaGFpbiwgaSA9IDA7CisgICAgICAgKGtzcCAhPSBOVUxMKSAmJiAoaSA8IE1BWENQVVMpOworICAgICAgIGtzcCA9IGtzcC0+a3NfbmV4dCkgeworICAgIGlmICgoc3RyY21wKGtzcC0+a3NfbW9kdWxlLCJjcHUiKSA9PSAwKSAmJgorCShzdHJjbXAoa3NwLT5rc19uYW1lLCJzeXMiKSA9PSAwKSkgeworICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwiTWFwcGluZyBDUFUgaW5zdGFuY2UgJWQgdG8gZW50cnkgJWRcbiIsCisJCWtzcC0+a3NfaW5zdGFuY2UsaSk7CisJZmZsdXNoKHdoZXJlKTsKKyAgICAgIH0KKyAgICAgIGxpYl9jcHVfbWFwW2krK10gPSBrc3AtPmtzX2luc3RhbmNlOworICAgIH0KKyAgfQorCisgIGlmIChNQVhDUFVTID09IGkpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorICAgICAgICAgICAgIlNvcnJ5LCB0aGlzIHN5c3RlbSBoYXMgbW9yZSBDUFVzICglZCkgdGhhbiBuZXRwZXJmIGNhbiBoYW5kbGUgKCVkKS5cbiIKKyAgICAgICAgICAgICJQbGVhc2UgYWx0ZXIgTUFYQ1BVUyBpbiBuZXRsaWIuaCBhbmQgcmVjb21waWxlLlxuIiwKKyAgICAgICAgICAgIGksCisgICAgICAgICAgICBNQVhDUFVTKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoMSk7CisgIH0KKwogICByZXR1cm47CiB9CiAKQEAgLTEwMSw4ICsxMzUsNyBAQAogewogICBpZiAod2h5KSB7CiAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgIldBUk5JTkchIFdBUk5JTkchIFdBUk5JTkchIFdBUk5JTkchXG4iKTsKLSAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiV0FSTklORyEgV0FSTklORyEgV0FSTklORyEgV0FSTklORyFcbiIKIAkgICAgIiVzIGZvdW5kIGFuIHVuZXhwZWN0ZWQgJXMgc3RhdGlzdGljICUuMTZzXG4iLAogCSAgICB3aG8sCiAJICAgIHdoeSwKQEAgLTEyNiw3ICsxNTksNyBAQAogICBrc3RhdF9uYW1lZF90ICprbnA7CiAgIGludCBpOwogCi0gIGtzcCA9IGtzdGF0X2xvb2t1cChrYywgImNwdSIsIGNwdV9udW0sICJzeXMiKTsKKyAga3NwID0ga3N0YXRfbG9va3VwKGtjLCAiY3B1IiwgbGliX2NwdV9tYXBbY3B1X251bV0sICJzeXMiKTsKICAgaWYgKChrc3ApICYmIChrc3AtPmtzX3R5cGUgPT0gS1NUQVRfVFlQRV9OQU1FRCkpIHsKICAgICAvKiBoYXBwaW5lc3MgYW5kIGpveSwga2VlcCBnb2luZyAqLwogICAgIG5rY2lkID0ga3N0YXRfcmVhZChrYywga3NwLCBOVUxMKTsKQEAgLTE1MSw5ICsxODQsMTYgQEAKIAkgIGZvdW5kKys7CiAJICBjb3VudGVyc1tjcHVfbnVtXS5rZXJuZWwgPSBrbnAtPnZhbHVlLnVpNjQ7CiAJfQorCWVsc2UgaWYgKCFzdHJjbXAoImNwdV9uc2VjX2ludHIiLGtucC0+bmFtZSkpIHsKKwkgIGlmIChkZWJ1ZyA+PSAyKSB7CisJICAgIGZwcmludGYod2hlcmUsCisJCSAgICAiRm91bmQgYSBjcHVfbnNlY19pbnRyIGJ1dCBpdCBkb2Vzbid0IGRvIHdoYXQgd2Ugd2FudFxuIik7CisJICAgIGZmbHVzaCh3aGVyZSk7CisJICB9CisJfQogCWVsc2UgaWYgKHN0cnN0cihrbnAtPm5hbWUsIm5zZWMiKSkgewogCSAgLyogZmluZGluZyBhbm90aGVyIG5zZWMgaGVyZSBtZWFucyBTdW4gaGF2ZSBjaGFuZ2VkCi0JICAgICBzb21ldGhpbmcgYW5kIHdlIG5lZWQgdG8gd2FybiB0aGUgdXNlci4gcmFqIDIwMDUtMDEtMjggKi8gCisJICAgICBzb21ldGhpbmcgYW5kIHdlIG5lZWQgdG8gd2FybiB0aGUgdXNlci4gcmFqIDIwMDUtMDEtMjggKi8KIAkgIHByaW50X3VuZXhwZWN0ZWRfc3RhdGlzdGljX3dhcm5pbmcoImdldF9jcHVfY291bnRlcnMiLAogCQkJCQkgICAgIGtucC0+bmFtZSwKIAkJCQkJICAgICAibnNlYyIpOwpAQCAtMTYyLDggKzIwMiw3IEBACiAKIAkgIC8qIG1pZ2h0IHdhbnQgdG8gdGVsbCBwZW9wbGUgYWJvdXQgd2hhdCB3ZSBhcmUgc2tpcHBpbmcuCiAJICAgICBob3dldmVyLCBvbmx5IGRpc3BsYXkgb3RoZXIgbmFtZXMgZGVidWcgPj0yLiByYWoKLQkgICAgIDIwMDUtMDEtMjgKLQkgICovCisJICAgICAyMDA1LTAxLTI4ICAqLwogCiAJICBwcmludF91bmV4cGVjdGVkX3N0YXRpc3RpY193YXJuaW5nKCJnZXRfY3B1X2NvdW50ZXJzIiwKIAkJCQkJICAgICBrbnAtPm5hbWUsCkBAIC0xOTQsOCArMjMzLDkgQEAKICAgZWxzZSB7CiAgICAgLyogdGhlIGxvb2t1cCBmYWlsZWQgb3IgZm91bmQgdGhlIHdyb25nIHR5cGUgKi8KICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiZ2V0X2NwdV9jb3VudGVyczoga3N0YXRfbG9va3VwIGZhaWxlZCBmb3IgbW9kdWxlICdjcHUnIGluc3RhbmNlICVkIG5hbWUgJ3N5cycgYW5kIEtTVEFUX1RZUEVfTkFNRUQ6IGVycm5vICVkICVzXG4iLAorCSAgICAiZ2V0X2NwdV9jb3VudGVyczoga3N0YXRfbG9va3VwIGZhaWxlZCBmb3IgbW9kdWxlICdjcHUnIG51bWJlciAlZCBpbnN0YW5jZSAlZCBuYW1lICdzeXMnIGFuZCBLU1RBVF9UWVBFX05BTUVEOiBlcnJubyAlZCAlc1xuIiwKIAkgICAgY3B1X251bSwKKwkgICAgbGliX2NwdV9tYXBbY3B1X251bV0sCiAJICAgIGVycm5vLAogCSAgICBzdHJlcnJvcihlcnJubykpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC0yMTIsNyArMjUyLDcgQEAKICAga3N0YXRfbmFtZWRfdCAqa25wOwogICBpbnQgaTsKIAotICBrc3AgPSBrc3RhdF9sb29rdXAoa2MsICJjcHUiLCBjcHVfbnVtLCAiaW50cnN0YXQiKTsKKyAga3NwID0ga3N0YXRfbG9va3VwKGtjLCAiY3B1IiwgbGliX2NwdV9tYXBbY3B1X251bV0sICJpbnRyc3RhdCIpOwogCiAgIGNvdW50ZXJzW2NwdV9udW1dLmludGVycnVwdCA9IDA7CiAgIGlmICgoa3NwKSAmJiAoa3NwLT5rc190eXBlID09IEtTVEFUX1RZUEVfTkFNRUQpKSB7CkBAIC0yNjYsOCArMzA2LDkgQEAKICAgZWxzZSB7CiAgICAgLyogdGhlIGxvb2t1cCBmYWlsZWQgb3IgZm91bmQgdGhlIHdyb25nIHR5cGUgKi8KICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiZ2V0X2NwdV9jb3VudGVyczoga3N0YXRfbG9va3VwIGZhaWxlZCBmb3IgbW9kdWxlICdjcHUnIGluc3RhbmNlICVkIGNsYXNzICdpbnRyc3RhdCcgYW5kIEtTVEFUX1RZUEVfTkFNRUQ6IGVycm5vICVkICVzXG4iLAorCSAgICAiZ2V0X2NwdV9jb3VudGVyczoga3N0YXRfbG9va3VwIGZhaWxlZCBmb3IgbW9kdWxlICdjcHUnICVkIGluc3RhbmNlICVkIGNsYXNzICdpbnRyc3RhdCcgYW5kIEtTVEFUX1RZUEVfTkFNRUQ6IGVycm5vICVkICVzXG4iLAogCSAgICBjcHVfbnVtLAorCSAgICBsaWJfY3B1X21hcFtjcHVfbnVtXSwKIAkgICAgZXJybm8sCiAJICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTI5Myw3ICszMzQsNyBAQAogLyogdGhlIGtzdGF0MTAgbWVjaGFuaXNtLCBzaW5jZSBpdCBpcyBiYXNlZCBvbiBhY3R1YWwgbmFub3NlY29uZAogICAgY291bnRlcnMgaXMgbm90IGdvaW5nIHRvIHVzZSBhIGNvbXBhcmlzb24gdG8gYW4gaWRsZSByYXRlLiBzbywgdGhlCiAgICBjYWxpYnJhdGVfaWRsZV9yYXRlIHJvdXRpbmUgd2lsbCBiZSByYXRoZXIgc2ltcGxlIDopIHJhaiAyMDA1LTAxLTI4Ci0gICAqLyAKKyAgICovCiAKIGZsb2F0CiBjYWxpYnJhdGVfaWRsZV9yYXRlKGludCBpdGVyYXRpb25zLCBpbnQgaW50ZXJ2YWwpCkBAIC0zMDcsNyArMzQ4LDcgQEAKICAgaW50IGk7CiAgIGZsb2F0IGNvcnJlY3Rpb25fZmFjdG9yOwogICBmbG9hdCBhY3R1YWxfcmF0ZTsKLSAgCisKICAgdWludDY0X3QgdG90YWxfY3B1X25zZWM7CiAKICAgLyogbXVsdGlwbHkgYnkgMTAwIGFuZCBkaXZpZGUgYnkgdG90YWwgYW5kIHlvdSBnZXQgd2hvbGUKQEAgLTMyMCw3ICszNjEsNyBAQAogI2RlZmluZSBDQUxDX0hVTkRSRURUSF9QRVJDRU5UIDEwMDAwCiAjZGVmaW5lIENBTENfVEhPVVNBTkRUSF9QRVJDRU5UIDEwMDAwMAogI2RlZmluZSBDQUxDX0FDQ1VSQUNZIENBTENfVEhPVVNBTkRUSF9QRVJDRU5UCi0gIAorCiAgIHVpbnQ2NF90IGZyYWN0aW9uX2lkbGU7CiAgIHVpbnQ2NF90IGZyYWN0aW9uX3VzZXI7CiAgIHVpbnQ2NF90IGZyYWN0aW9uX2tlcm5lbDsKQEAgLTMzMCwxNiArMzcxLDE2IEBACiAgIHVpbnQ2NF90IGludGVycnVwdF91c2VyOwogICB1aW50NjRfdCBpbnRlcnJ1cHRfa2VybmVsOwogCi0gIGxpYl9sb2NhbF9jcHVfdXRpbCA9IChmbG9hdCkwLjA7CisgIG1lbXNldCgmbGliX2xvY2FsX2NwdV9zdGF0cywgMCwgc2l6ZW9mKGxpYl9sb2NhbF9jcHVfc3RhdHMpKTsKIAotICAvKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsaWJyYXJ5IG1lYXN1cmVkIGEgdGltZSBvdGhlciB0aGFuICovCi0gIC8qIHRoZSBvbmUgdGhhdCB0aGUgdXNlciB3YW50IGZvciB0aGUgY3B1IHV0aWxpemF0aW9uICovCi0gIC8qIGNhbGN1bGF0aW9ucyAtIGZvciBleGFtcGxlLCB0ZXN0cyB0aGF0IHdlcmUgZW5kZWQgYnkgKi8KLSAgLyogd2F0Y2hkb2cgdGltZXJzIHN1Y2ggYXMgdGhlIHVkcCBzdHJlYW0gdGVzdC4gV2UgbGV0IHRoZXNlICovCi0gIC8qIHRlc3RzIHRlbGwgdXAgd2hhdCB0aGUgZWxhcHNlZCB0aW1lIHNob3VsZCBiZS4gKi8KLSAgCisgIC8qIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxpYnJhcnkgbWVhc3VyZWQgYSB0aW1lIG90aGVyIHRoYW4gdGhlCisgICAgIG9uZSB0aGF0IHRoZSB1c2VyIHdhbnQgZm9yIHRoZSBjcHUgdXRpbGl6YXRpb24gY2FsY3VsYXRpb25zIC0gZm9yCisgICAgIGV4YW1wbGUsIHRlc3RzIHRoYXQgd2VyZSBlbmRlZCBieSB3YXRjaGRvZyB0aW1lcnMgc3VjaCBhcyB0aGUgdWRwCisgICAgIHN0cmVhbSB0ZXN0LiBXZSBsZXQgdGhlc2UgdGVzdHMgdGVsbCB1cCB3aGF0IHRoZSBlbGFwc2VkIHRpbWUKKyAgICAgc2hvdWxkIGJlLiAqLworCiAgIGlmIChlbGFwc2VkX3RpbWUgIT0gMC4wKSB7Ci0gICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArIAorICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKwogICAgICAgKChsaWJfZWxhcHNlZCAtIGVsYXBzZWRfdGltZSkgLyBlbGFwc2VkX3RpbWUpOwogICB9CiAgIGVsc2UgewpAQCAtMzY4LDE1ICs0MDksMTUgQEAKICAgICAgICB3aXRoIHRoZSBpbnRlcnJ1cHQgdGltZSBhbmQgdXNlIHRoYXQgdG8gY2FsY3VsYXRlIGEgbmV3IGlkbGUKICAgICAgICBwZXJjZW50YWdlIGFuZCB0aHVzIGEgQ1BVIHV0aWwgcGVyY2VudGFnZS4KIAotICAgICAgIHRoYXQgaXMgd2hhdCB3ZSB3aWxsIGF0dGVtcHQgdG8gZG8gaGVyZS4gIHJhaiAyMDA1LTAxLTI4IAorICAgICAgIHRoYXQgaXMgd2hhdCB3ZSB3aWxsIGF0dGVtcHQgdG8gZG8gaGVyZS4gIHJhaiAyMDA1LTAxLTI4CiAKICAgICAgICBvZiBjb3Vyc2UsIHdlIGFsc28gaGF2ZSB0byB3b25kZXIgd2hhdCB3ZSBzaG91bGQgZG8gaWYgdGhlcmUgaXMKICAgICAgICBtb3JlIGludGVycnVwdCB0aW1lIHRoYW4gdGhlIHN1bSBvZiB1c2VyLCBrZXJuZWwgYW5kIGlkbGUuCiAgICAgICAgdGhhdCBpcyBhIHRoZW9yZXRpY2FsIHBvc3NpYmlsaXR5IEkgc3VwcG9zZSwgYnV0IGZvciB0aGUKICAgICAgICB0aW1lLWJlaW5nLCBvbmUgdGhhdCB3ZSB3aWxsIGJseXRobHkgaWdub3JlLCBleGNlcHQgcGVyaGFwcyBmb3IKLSAgICAgICBhIHF1aWNrIGNoZWNrLiByYWogMjAwNS0wMS0zMSAKKyAgICAgICBhIHF1aWNrIGNoZWNrLiByYWogMjAwNS0wMS0zMQogICAgICovCi0gICAgCisKICAgICAvKiB3ZSBhc3MtdS1tZSB0aGF0IHRoZXNlIGNvdW50ZXJzIHdpbGwgbmV2ZXIgd3JhcCBkdXJpbmcgYQogICAgICAgIG5ldHBlcmYgcnVuLiAgdGhpcyBtYXkgbm90IGJlIGEgcGFydGljdWxhcmx5IHNhZmUgdGhpbmcgdG8KICAgICAgICBkby4gcmFqIDIwMDUtMDEtMjggKi8KQEAgLTM4OCwxMyArNDI5LDEzIEBACiAgICAgICBzdGFydGluZ19jcHVfY291bnRlcnNbaV0ua2VybmVsOwogICAgIGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQgPSBlbmRpbmdfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdCAtCiAgICAgICBzdGFydGluZ19jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0OwotICAgIAorCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBwcmludF9jcHVfdGltZV9jb3VudGVycygiZGVsdGFfY3B1X2NvdW50ZXJzIixpLGRlbHRhX2NwdV9jb3VudGVycyk7CiAgICAgfQogCiAgICAgLyogZm9yIHRoaXMgc3VtbWF0aW9uLCB3ZSBkbyBub3QgaW5jbHVkZSBpbnRlcnJ1cHQgdGltZSAqLwotICAgIHRvdGFsX2NwdV9uc2VjID0gCisgICAgdG90YWxfY3B1X25zZWMgPQogICAgICAgZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmlkbGUgKwogICAgICAgZGVsdGFfY3B1X2NvdW50ZXJzW2ldLnVzZXIgKwogICAgICAgZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmtlcm5lbDsKQEAgLTQwOCwyMiArNDQ5LDIwIEBACiAJIHRoZSBiZXN0IHdheSB0byBnZXQgb3VyIHRhaWxzIG91dCBvZiBoZXJlIHNvIGxldCB1cyBqdXN0CiAJIHB1bnQuIHJhaiAyMDA1LTAxLTMxICovCiAgICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAgICJXQVJOSU5HISBXQVJOSU5HISBXQVJOSU5HISBXQVJOSU5HISBXQVJOSU5HISBcbiIpOwotICAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgICAiY2FsY19jcHVfdXRpbF9pbnRlcm5hbDogbW9yZSBpbnRlcnJ1cHQgdGltZSB0aGFuIG90aGVycyBjb21iaW5lZCFcbiIpOwotICAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgICAiXHRzbyBDUFUgdXRpbCBjYW5ub3QgYmUgZXN0aW1hdGVkXG4iKTsKLSAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgIlx0IGRlbHRhWyVkXS5pbnRlcnJ1cHQgJWxsdVxuIixpLGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQpOwotICAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgICAiXHQgZGVsdGFbJWRdLmlkbGUgJWxsdVxuIixpLGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pZGxlKTsKLSAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgIlx0IGRlbHRhWyVkXS51c2VyICVsbHVcbiIsaSxkZWx0YV9jcHVfY291bnRlcnNbaV0udXNlcik7Ci0gICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAgICJcdCBkZWx0YVslZF0ua2VybmVsICVsbHVcbiIsaSxkZWx0YV9jcHVfY291bnRlcnNbaV0ua2VybmVsKTsKKwkgICAgICAiV0FSTklORyEgV0FSTklORyEgV0FSTklORyEgV0FSTklORyEgV0FSTklORyEgXG4iCisJICAgICAgImNhbGNfY3B1X3V0aWxfaW50ZXJuYWw6IG1vcmUgaW50ZXJydXB0IHRpbWUgdGhhbiBvdGhlcnMgY29tYmluZWQhXG4iCisJICAgICAgIlx0c28gQ1BVIHV0aWwgY2Fubm90IGJlIGVzdGltYXRlZFxuIgorCSAgICAgICJcdCBkZWx0YVslZF0uaW50ZXJydXB0ICVsbHVcbiIKKwkgICAgICAiXHQgZGVsdGFbJWRdLmlkbGUgJWxsdVxuIgorCSAgICAgICJcdCBkZWx0YVslZF0udXNlciAlbGx1XG4iCisJICAgICAgIlx0IGRlbHRhWyVkXS5rZXJuZWwgJWxsdVxuIiwKKwkgICAgICBpLGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQsCisJICAgICAgaSxkZWx0YV9jcHVfY291bnRlcnNbaV0uaWRsZSwKKwkgICAgICBpLGRlbHRhX2NwdV9jb3VudGVyc1tpXS51c2VyLAorCSAgICAgIGksZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmtlcm5lbCk7CiAgICAgICBmZmx1c2god2hlcmUpOwotICAgICAgCi0gICAgICBsaWJfbG9jYWxfY3B1X3V0aWwgPSAtMS4wOworCisgICAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsID0gLTEuMDsKICAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAtMS4wOwogICAgICAgcmV0dXJuIC0xLjA7CiAgICAgfQpAQCAtNDMyLDY2ICs0NzEsNjUgQEAKICAgICAgICBwcm9tb3RlIHRoaW5ncyB0byBsb25nIGRvdWJsZWQgYnV0IHRoYXQgZGlkbid0IHNlZW0gdG8gcmVzdWx0CiAgICAgICAgaW4gaGFwcGluZXNzIGFuZCBqb3kuIHJhaiAyMDA1LTAxLTI4ICovCiAKLSAgICBmcmFjdGlvbl9pZGxlID0gCisgICAgZnJhY3Rpb25faWRsZSA9CiAgICAgICAoZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmlkbGUgKiBDQUxDX0FDQ1VSQUNZKSAvIHRvdGFsX2NwdV9uc2VjOwogCi0gICAgZnJhY3Rpb25fdXNlciA9IAorICAgIGZyYWN0aW9uX3VzZXIgPQogICAgICAgKGRlbHRhX2NwdV9jb3VudGVyc1tpXS51c2VyICogQ0FMQ19BQ0NVUkFDWSkgLyB0b3RhbF9jcHVfbnNlYzsKIAotICAgIGZyYWN0aW9uX2tlcm5lbCA9IAorICAgIGZyYWN0aW9uX2tlcm5lbCA9CiAgICAgICAoZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmtlcm5lbCAqIENBTENfQUNDVVJBQ1kpIC8gdG90YWxfY3B1X25zZWM7CiAKICAgICAvKiBvaywgd2UgaGF2ZSBvdXIgZnJhY3Rpb25zLCBub3cgd2Ugd2FudCB0byB0YWtlIHRoYXQgZnJhY3Rpb24gb2YKICAgICAgICB0aGUgaW50ZXJydXB0IHRpbWUgYW5kIHN1YnRyYWN0IHRoYXQgZnJvbSB0aGUgYnVja2V0LiAqLwogCi0gICAgaW50ZXJydXB0X2lkbGUgPSAgKChkZWx0YV9jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0ICogZnJhY3Rpb25faWRsZSkgLyAKKyAgICBpbnRlcnJ1cHRfaWRsZSA9ICAoKGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQgKiBmcmFjdGlvbl9pZGxlKSAvCiAJCSAgICAgICBDQUxDX0FDQ1VSQUNZKTsKIAotICAgIGludGVycnVwdF91c2VyID0gKChkZWx0YV9jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0ICogZnJhY3Rpb25fdXNlcikgLyAKKyAgICBpbnRlcnJ1cHRfdXNlciA9ICgoZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdCAqIGZyYWN0aW9uX3VzZXIpIC8KIAkJICAgICAgQ0FMQ19BQ0NVUkFDWSk7CiAKLSAgICBpbnRlcnJ1cHRfa2VybmVsID0gKChkZWx0YV9jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0ICogZnJhY3Rpb25fa2VybmVsKSAvIAorICAgIGludGVycnVwdF9rZXJuZWwgPSAoKGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQgKiBmcmFjdGlvbl9rZXJuZWwpIC8KIAkJCUNBTENfQUNDVVJBQ1kpOwogCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAgICJcdGZyYWN0aW9uX2lkbGUgJWxsdSBpbnRlcnJ1cHRfaWRsZSAlbGx1XG4iLAorCSAgICAgICJcdGZyYWN0aW9uX2lkbGUgJWxsdSBpbnRlcnJ1cHRfaWRsZSAlbGx1XG4iCisJICAgICAgIlx0ZnJhY3Rpb25fdXNlciAlbGx1IGludGVycnVwdF91c2VyICVsbHVcbiIKKwkgICAgICAiXHRmcmFjdGlvbl9rZXJuZWwgJWxsdSBpbnRlcnJ1cHRfa2VybmVsICVsbHVcbiIsCiAJICAgICAgZnJhY3Rpb25faWRsZSwKLQkgICAgICBpbnRlcnJ1cHRfaWRsZSk7Ci0gICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAgICJcdGZyYWN0aW9uX3VzZXIgJWxsdSBpbnRlcnJ1cHRfdXNlciAlbGx1XG4iLAorCSAgICAgIGludGVycnVwdF9pZGxlLAogCSAgICAgIGZyYWN0aW9uX3VzZXIsCi0JICAgICAgaW50ZXJydXB0X3VzZXIpOwotICAgICAgZnByaW50Zih3aGVyZSwiXHRmcmFjdGlvbl9rZXJuZWwgJWxsdSBpbnRlcnJ1cHRfa2VybmVsICVsbHVcbiIsCisJICAgICAgaW50ZXJydXB0X3VzZXIsCiAJICAgICAgZnJhY3Rpb25fa2VybmVsLAogCSAgICAgIGludGVycnVwdF9rZXJuZWwpOwogICAgIH0KIAotICAgIGNvcnJlY3RlZF9jcHVfY291bnRlcnNbaV0uaWRsZSA9IGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pZGxlIC0gCisgICAgY29ycmVjdGVkX2NwdV9jb3VudGVyc1tpXS5pZGxlID0gZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmlkbGUgLQogICAgICAgaW50ZXJydXB0X2lkbGU7CiAKLSAgICBjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzW2ldLnVzZXIgPSBkZWx0YV9jcHVfY291bnRlcnNbaV0udXNlciAtIAorICAgIGNvcnJlY3RlZF9jcHVfY291bnRlcnNbaV0udXNlciA9IGRlbHRhX2NwdV9jb3VudGVyc1tpXS51c2VyIC0KICAgICAgIGludGVycnVwdF91c2VyOwogCi0gICAgY29ycmVjdGVkX2NwdV9jb3VudGVyc1tpXS5rZXJuZWwgPSBkZWx0YV9jcHVfY291bnRlcnNbaV0ua2VybmVsIC0gCisgICAgY29ycmVjdGVkX2NwdV9jb3VudGVyc1tpXS5rZXJuZWwgPSBkZWx0YV9jcHVfY291bnRlcnNbaV0ua2VybmVsIC0KICAgICAgIGludGVycnVwdF9rZXJuZWw7CiAKICAgICBjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdCA9IGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQ7Ci0JCSAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIHByaW50X2NwdV90aW1lX2NvdW50ZXJzKCJjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzIiwKIAkJCSAgICAgIGksCiAJCQkgICAgICBjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzKTsKICAgICB9CiAKLSAgICAvKiBJIHdhcyBnb2luZyB0byBjaGVja2ZvciBnb2luZyBsZXNzIHRoYW4gemVybywgYnV0IHNpbmNlIGFsbCB0aGUKLSAgICAgICBjYWxjdWxhdGlvbnMgYXJlIGluIHVuc2lnbmVkIHF1YW50aXRpZXMgdGhhdCB3b3VsZCBzZWVtIHRvIGJlIGEKLSAgICAgICB0cmlmZmxlIHNpbGx5Li4uIHJhaiAyMDA1LTAxLTI4ICovCisgICAgLyogSSB3YXMgZ29pbmcgdG8gY2hlY2sgZm9yIGdvaW5nIGxlc3MgdGhhbiB6ZXJvLCBidXQgc2luY2UgYWxsCisgICAgICAgdGhlIGNhbGN1bGF0aW9ucyBhcmUgaW4gdW5zaWduZWQgcXVhbnRpdGllcyB0aGF0IHdvdWxkIHNlZW0gdG8KKyAgICAgICBiZSBhIHRyaWZmbGUgc2lsbHkuLi4gcmFqIDIwMDUtMDEtMjggKi8KIAogICAgIC8qIG9rLCBub3cgd2Ugc3VtIHRoZSBudW1iZXJzIGFnYWluLCB0aGlzIHRpbWUgaW5jbHVkaW5nIGludGVycnVwdAogICAgICAgICovCiAKLSAgICB0b3RhbF9jcHVfbnNlYyA9IAorICAgIHRvdGFsX2NwdV9uc2VjID0KICAgICAgIGNvcnJlY3RlZF9jcHVfY291bnRlcnNbaV0uaWRsZSArCiAgICAgICBjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzW2ldLnVzZXIgKwogICAgICAgY29ycmVjdGVkX2NwdV9jb3VudGVyc1tpXS5rZXJuZWwgKwpAQCAtNTAwLDIyICs1MzgsMjIgQEAKICAgICAvKiBhbmQgcmVjYWxjdWxhdGUgb3VyIGZyYWN0aW9ucyB3ZSBhcmUgcmVhbGx5IG9ubHkgZ29pbmcgdG8gdXNlCiAgICAgICAgZnJhY3Rpb25faWRsZSwgYnV0IGxldHMgY2FsY3VsYXRlIHRoZSByZXN0IGp1c3QgZm9yIHRoZSBoZWNrIG9mCiAgICAgICAgaXQuIG9uZSBkYXkgd2UgbWF5IHdhbnQgdG8gZGlzcGxheSB0aGVtLiByYWogMjAwNS0wMS0yOCAqLwotICAgIAorCiAgICAgLyogbXVsdGlwbHkgYnkgMTAwIGFuZCBkaXZpZGUgYnkgdG90YWwgYW5kIHlvdSBnZXQgd2hvbGUKICAgICAgICBwZXJjZW50YWdlcy4gbXVsdGlwbHkgYnkgMTAwMCBhbmQgZGl2aWRlIGJ5IHRvdGFsIGFuZCB5b3UgZ2V0CiAgICAgICAgdGVudGhzIG9mIHBlcmNlbnRhZ2VzLiAgbXVsdGlwbHkgYnkgMTAwMDAgYW5kIGRpdmlkZSBieSB0b3RhbAogICAgICAgIGFuZCB5b3UgZ2V0IGh1bmRyZWR0aHMgb2YgcGVyY2VudGFnZXMuIGV0YyBldGMgZXRjIHJhagogICAgICAgIDIwMDUtMDEtMjggKi8KLSAgICBmcmFjdGlvbl9pZGxlID0gCisgICAgZnJhY3Rpb25faWRsZSA9CiAgICAgICAoY29ycmVjdGVkX2NwdV9jb3VudGVyc1tpXS5pZGxlICogQ0FMQ19BQ0NVUkFDWSkgLyB0b3RhbF9jcHVfbnNlYzsKIAotICAgIGZyYWN0aW9uX3VzZXIgPSAKKyAgICBmcmFjdGlvbl91c2VyID0KICAgICAgIChjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzW2ldLnVzZXIgKiBDQUxDX0FDQ1VSQUNZKSAvIHRvdGFsX2NwdV9uc2VjOwogCi0gICAgZnJhY3Rpb25fa2VybmVsID0gCisgICAgZnJhY3Rpb25fa2VybmVsID0KICAgICAgIChjb3JyZWN0ZWRfY3B1X2NvdW50ZXJzW2ldLmtlcm5lbCAqIENBTENfQUNDVVJBQ1kpIC8gdG90YWxfY3B1X25zZWM7CiAKLSAgICBmcmFjdGlvbl9pbnRlcnJ1cHQgPSAKKyAgICBmcmFjdGlvbl9pbnRlcnJ1cHQgPQogICAgICAgKGNvcnJlY3RlZF9jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0ICogQ0FMQ19BQ0NVUkFDWSkgLyB0b3RhbF9jcHVfbnNlYzsKIAogICAgIGlmIChkZWJ1ZykgewpAQCAtNTI2LDIzICs1NjQsMjIgQEAKICAgICB9CiAKICAgICAvKiBhbmQgZmluYWxseSwgd2hhdCBpcyBvdXIgQ1BVIHV0aWxpemF0aW9uPyAqLwotICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAxMDAuMCAtICgoKGZsb2F0KWZyYWN0aW9uX2lkbGUgLyAKKyAgICBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldID0gMTAwLjAgLSAoKChmbG9hdClmcmFjdGlvbl9pZGxlIC8KIAkJCQkJICAoZmxvYXQpQ0FMQ19BQ0NVUkFDWSkgKiAxMDAuMCk7CisgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgImxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbJWRdICVnXG4iLAorCSAgICAgICJsaWJfbG9jYWxfcGVyX2NwdV91dGlsWyVkXSAlZyBjZiAlZlxuIiwKIAkgICAgICBpLAotCSAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0pOworCSAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0sCisJICAgICAgY29ycmVjdGlvbl9mYWN0b3IpOwogICAgIH0KLSAgICBsaWJfbG9jYWxfY3B1X3V0aWwgKz0gbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXTsKKyAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CiAgIH0KICAgLyogd2Ugd2FudCB0aGUgYXZlcmFnZSBhY3Jvc3MgYWxsIG4gcHJvY2Vzc29ycyAqLwotICBsaWJfbG9jYWxfY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7Ci0gIAotICBsaWJfbG9jYWxfY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7Ci0gIHJldHVybiBsaWJfbG9jYWxfY3B1X3V0aWw7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7CiAKLQorICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvbmV0Y3B1X2xvb3Blci5jIGIvc3JjL25ldGNwdV9sb29wZXIuYwpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBuZXRjcHVfbG9vcGVyLmMKcmVuYW1lIHRvIHNyYy9uZXRjcHVfbG9vcGVyLmMKaW5kZXggYjc2YzdjOS4uNzljY2ZiMyAxMDA2NDQKLS0tIGEvbmV0Y3B1X2xvb3Blci5jCisrKyBiL3NyYy9uZXRjcHVfbG9vcGVyLmMKQEAgLTEsOCArMSw4IEBACiBjaGFyICAgbmV0Y3B1X2xvb3Blcl9pZFtdPSJcCi1AKCMpbmV0Y3B1X2xvb3Blci5jIChjKSBDb3B5cmlnaHQgMjAwNS0yMDA3LiBWZXJzaW9uIDIuNC4zIjsKK0AoIyluZXRjcHVfbG9vcGVyLmMgKGMpIENvcHlyaWdodCAyMDA1LTIwMTIuIFZlcnNpb24gMi42LjAiOwogCiAvKiBuZXRjcHVfbG9vcGVyLmMKLSAgCisKICAgIEltcGxlbWVudCB0aGUgc29ha2VyIHByb2Nlc3Mgc3BlY2lmaWMgcG9ydGlvbnMgb2YgbmV0cGVyZiBDUFUKICAgIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cy4gVGhlc2UgYXJlIGJyb2tlbi1vdXQgaW50byBhIHNlcGFyYXRlIGZpbGUKICAgIHRvIG1ha2UgbGlmZSBtdWNoIG5pY2VyIG92ZXIgaW4gbmV0bGliLmMgd2hpY2ggaGFkIGJlY29tZSBhIG1hemUgb2YKQEAgLTEzNSw3ICsxMzUsNyBAQAogCiAgIGlmIChwcm9jZXNzb3JfYmluZChQX1BJRCwKICAgICAgICAgICAgICAgICAgICAgIGdldHBpZCgpLAotICAgICAgICAgICAgICAgICAgICAgKGNoaWxkX251bSAlIGxpYl9udW1fbG9jX2NwdXMpLCAKKyAgICAgICAgICAgICAgICAgICAgIChjaGlsZF9udW0gJSBsaWJfbnVtX2xvY19jcHVzKSwKICAgICAgICAgICAgICAgICAgICAgICAmb2xkX2JpbmRpbmcpICE9IDApIHsKICAgICBmcHJpbnRmKHdoZXJlLCJiaW5kX3RvX3Byb2Nlc3NvcjogdW5hYmxlIHRvIHBlcmZvcm0gcHJvY2Vzc29yIGJpbmRpbmdcbiIpOwogICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICAgICAgICBlcnJubyAlZFxuIixlcnJubyk7CkBAIC0xNzEsNyArMTcxLDcgQEAKICAvKiBieSBlYWNoIGxvb3BlciBwcm9jZXNzLCBvciBzb21ldGhpbmcgYXBwcm9wcmlhdGUgb24gV2luZG93cy9OVCAqLwogIC8qIChtYWxsb2MnZCBvciBzdWNoKS4gVGhpcyByb3V0aW5lIGlzIHJlYXNvbmFibHkgdWdseSBpbiB0aGF0IGl0IGhhcyAqLwogIC8qIHByaW9yaXR5IG1hbmlwdWxhdGluZyBjb2RlIGZvciBsb3RzIG9mIGRpZmZlcmVudCBvcGVyYXRpbmcgKi8KLSAvKiBzeXN0ZW1zLiBUaGlzIHJvdXRpbmUgbmV2ZXIgcmV0dXJucy4gcmFqIDEvOTYgKi8gCisgLyogc3lzdGVtcy4gVGhpcyByb3V0aW5lIG5ldmVyIHJldHVybnMuIHJhaiAxLzk2ICovCiAKIHN0YXRpYyB2b2lkCiBzaXRfYW5kX3NwaW4oaW50IGNoaWxkX2luZGV4KQpAQCAtMTkxLDE0ICsxOTEsMTQgQEAKICAgICAgICAgICAgIGdldHBpZCgpKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAjZW5kaWYgLyogV0lOMzIgKi8KIAogICAvKiByZXNldCBvdXIgYmFzZSBwb2ludGVyIHRvIGJlIGF0IHRoZSBhcHByb3ByaWF0ZSBvZmZzZXQgKi8KLSAgbXlfY291bnRlcl9wdHIgPSAodWludDY0X3QgKikgKChjaGFyICopbGliX2Jhc2VfcG9pbnRlciArIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0bGliX2dldF9wYWdlX3NpemUoKSAqIAorICBteV9jb3VudGVyX3B0ciA9ICh1aW50NjRfdCAqKSAoKGNoYXIgKilsaWJfYmFzZV9wb2ludGVyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldGxpYl9nZXRfcGFnZV9zaXplKCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRVNfUEVSX0NISUxEICogY2hpbGRfaW5kZXgpKTsKLSAgCisKICAgLyogaW4gdGhlIGV2ZW50IHdlIGFyZSBydW5uaW5nIG9uIGFuIE1QIHN5c3RlbSwgaXQgd291bGQgKi8KICAgLyogcHJvYmFibHkgYmUgZ29vZCB0byBiaW5kIHRoZSBzb2FrZXIgcHJvY2Vzc2VzIHRvIHNwZWNpZmljICovCiAgIC8qIHByb2Nlc3NvcnMuIEkgKnRoaW5rKiB0aGlzIGlzIHRoZSBtb3N0IHJlYXNvbmFibGUgdGhpbmcgdG8gKi8KQEAgLTIwNywxMyArMjA3LDEzIEBACiAgIC8qIGhlcmUsIGJ1dCB3aWxsICJhYnN0cmFjdCBpdCBpbnRvIGFub3RoZXIgcm91dGluZSB0byBrZWVwIHRoaXMgKi8KICAgLyogYXJlYSBtb3JlIHJlYWRhYmxlLiBJJ2xsIHByb2JhYmx5IGRvIHRoZSBzYW1lIHRoaW5lIHdpdGggdGhlICovCiAgIC8qICJsb3cgcHJpIGNvZGUiIHJhaiAxMC85NSAqLwotICAKKwogICAvKiBzaW5jZSB3ZSBhcmUgImZseWluZyBibGluZCIgd3J0IHdoZXJlIHdlIHNob3VsZCBiaW5kIHRoZSBsb29wZXIKICAgICAgcHJvY2Vzc2VzLCB3ZSB3YW50IHRvIHVzZSB0aGUgY3B1X21hcCB0aGF0IHdhcyBwcmVwYXJlZCBieSBuZXRsaWIKICAgICAgcmF0aGVyIHRoYW4gYXNzdW1lIHRoYXQgdGhlIENQVSBpZHMgb24gdGhlIHN5c3RlbSBzdGFydCBhdCB6ZXJvCiAgICAgIGFuZCBhcmUgY29udGlndW91cy4gcmFqIDIwMDYtMDQtMDMgKi8KICAgYmluZF90b19zcGVjaWZpY19wcm9jZXNzb3IoY2hpbGRfaW5kZXggJSBsaWJfbnVtX2xvY19jcHVzLDEpOwotICAKKwogICBmb3IgKCpteV9jb3VudGVyX3B0ciA9IDBMOwogICAgICAgIDsKICAgICAgICAoKm15X2NvdW50ZXJfcHRyKSsrKSB7CkBAIC0yMzAsNyArMjMwLDcgQEAKICAgICAgIHBpZCA9IGdldHBpZCgpOwogICAgICAgLyogaWYgeW91IGFyZSBub3Qgcm9vdCwgdGhpcyBjYWxsIHdpbGwgcmV0dXJuIEVQRVJNIC0gd2h5IG9uZSAqLwogICAgICAgLyogY2Fubm90IGNoYW5nZSBvbmUncyBvd24gcHJpb3JpdHkgdG8gIGxvd2VyIHZhbHVlIGlzIGJleW9uZCAqLwotICAgICAgLyogbWUuIHJhaiAyLzI2Lzk2ICovICAKKyAgICAgIC8qIG1lLiByYWogMi8yNi85NiAqLwogICAgICAgc2V0cHJpKHBpZCwgcHJpbyk7CiAjZWxzZSAvKiBfQUlYICovCiAjaWZkZWYgX19zZ2kKQEAgLTI3NiwxNiArMjc2LDE2IEBACiB7CiAKICAgdW5zaWduZWQgaW50ICAgICAgaSwgZmlsZV9zaXplOwotICAKKwogICAvKiB3ZSB3YW50IGF0IGxlYXN0IHR3byBwYWdlcyBmb3IgZWFjaCBwcm9jZXNzb3IuIHRoZSAqLwogICAvKiBjaGlsZCBmb3IgYW55IG9uZSBwcm9jZXNzb3Igd2lsbCB3cml0ZSB0byB0aGUgZmlyc3Qgb2YgaGlzIHR3byAqLwogICAvKiBwYWdlcywgYW5kIHRoZSBzZWNvbmQgcGFnZSB3aWxsIGJlIGEgYnVmZmVyIGluIGNhc2UgdGhlcmUgaXMgcGFnZSAqLwogICAvKiBwcmVmZXRjaGluZy4gaWYgeW91ciBzeXN0ZW0gcHJlLWZldGNoZXMgbW9yZSB0aGFuIGEgc2luZ2xlIHBhZ2UsICovCiAgIC8qIHdlbGwsIHlvdSdsbCBoYXZlIHRvIG1vZGlmeSB0aGlzIG9yIGxpdmUgd2l0aCBpdCA6KCByYWogNC85NSAqLwogCi0gIGZpbGVfc2l6ZSA9ICgobmV0bGliX2dldF9wYWdlX3NpemUoKSAqIFBBR0VTX1BFUl9DSElMRCkgKiAKKyAgZmlsZV9zaXplID0gKChuZXRsaWJfZ2V0X3BhZ2Vfc2l6ZSgpICogUEFHRVNfUEVSX0NISUxEKSAqCiAgICAgICAgICAgICAgICBsaWJfbnVtX2xvY19jcHVzKTsKLSAgCisKICNpZm5kZWYgV0lOMzIKIAogICAvKiB3ZSB3ZSBhcmUgbm90IHVzaW5nIFdJTkRPV1MgTlQgKG9yIDk1IGFjdHVhbGx5IDopLCB0aGVuIHdlIHdhbnQgKi8KQEAgLTI5NywzMCArMjk3LDMwIEBACiAgIC8qIGRlYnVnZ2luZywgY291bGQgcmVzdWx0IGluIHNvbWUgZmlsZXN5c3RlbSBhY3Rpdml0eSAtIGxpa2UgKi8KICAgLyogbWV0YWRhdGEgdXBkYXRlcz8gcmFqIDQvOTYgKi8KICAgbGliX2lkbGVfZmQgPSBvcGVuKCIvdG1wL25ldHBlcmZfY3B1IixPX1JEV1IgfCBPX0NSRUFUIHwgT19FWENMKTsKLSAgCisKICAgaWYgKGxpYl9pZGxlX2ZkID09IC0xKSB7CiAgICAgZnByaW50Zih3aGVyZSwiY3JlYXRlX2xvb3BlcjogZmlsZSBjcmVhdGlvbjsgZXJybm8gJWRcbiIsZXJybm8pOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoY2htb2QoIi90bXAvbmV0cGVyZl9jcHUiLDA2NDQpID09IC0xKSB7CiAgICAgZnByaW50Zih3aGVyZSwiY3JlYXRlX2xvb3BlcjogY2htb2Q7IGVycm5vICVkXG4iLGVycm5vKTsKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogd2l0aCB0aGUgZmlsZSBkZXNjcmlwdG9yIGluIHBsYWNlLCBsZXRzIGJlIHN1cmUgdGhhdCB0aGUgZmlsZSBpcyAqLwogICAvKiBsYXJnZSBlbm91Z2guICovCi0gIAorCiAgIGlmICh0cnVuY2F0ZSgiL3RtcC9uZXRwZXJmX2NwdSIsZmlsZV9zaXplKSA9PSAtMSkgewogICAgIGZwcmludGYod2hlcmUsImNyZWF0ZV9sb29wZXI6IHRydW5jYXRlOiBlcnJubyAlZFxuIixlcnJubyk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIHRoZSBmaWxlIHNob3VsZCBiZSBsYXJnZSBlbm91Z2ggbm93LCBzbyB3ZSBjYW4gbW1hcCBpdCAqLwotICAKKwogICAvKiBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IGhhdmUgTUFQX1ZBUklBQkxFLCBqdXN0IGRlZmluZSBpdCB0byAqLwogICAvKiBiZSB6ZXJvLiBpdCBpcyBvbmx5IHVzZWQvbmVlZGVkIG9uIEhQLVVYICg/KSByYWogNC85NSAqLwogI2lmbmRlZiBNQVBfVkFSSUFCTEUKQEAgLTMzOSw3ICszMzksNyBAQAogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJudW0gQ1BVcyAlZCwgZmlsZV9zaXplICVkLCBsaWJfYmFzZV9wb2ludGVyICVwXG4iLApAQCAtMzUwLDcgKzM1MCw3IEBACiAgIH0KIAogICAvKiB3ZSBzaG91bGQgaGF2ZSBhIHZhbGlkIGJhc2UgcG9pbnRlci4gbGV0cyBmb3JrICovCi0gIAorCiAgIGZvciAoaSA9IDA7IGkgPCAodW5zaWduZWQgaW50KWxpYl9udW1fbG9jX2NwdXM7IGkrKykgewogICAgIHN3aXRjaCAobGliX2lkbGVfcGlkc1tpXSA9IGZvcmsoKSkgewogICAgIGNhc2UgLTE6CkBAIC0zNjgsOCArMzY4LDggQEAKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAvKiB3ZSBtdXN0IGJlIHRoZSBwYXJlbnQgKi8KLSAgICAgIGxpYl9pZGxlX2FkZHJlc3NbaV0gPSAodWludDY0X3QgKikgKChjaGFyICopbGliX2Jhc2VfcG9pbnRlciArIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0bGliX2dldF9wYWdlX3NpemUoKSAqIAorICAgICAgbGliX2lkbGVfYWRkcmVzc1tpXSA9ICh1aW50NjRfdCAqKSAoKGNoYXIgKilsaWJfYmFzZV9wb2ludGVyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldGxpYl9nZXRfcGFnZV9zaXplKCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRVNfUEVSX0NISUxEICogaSkpOwogICAgICAgaWYgKGRlYnVnKSB7CiAgICAgICAgIGZwcmludGYod2hlcmUsImxpYl9pZGxlX2FkZHJlc3NbJWRdIGlzICVwXG4iLApAQCAtNDA0LDggKzQwNCw4IEBACiAgICAgICAvKiBJIHdvbmRlciBpZiBJIG5lZWQgdG8gbG9vayBmb3Igb3RoZXIgdGhyZWFkcyB0byBraWxsPyAqLwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgbGliX2lkbGVfYWRkcmVzc1tpXSA9IChsb25nICopICgoY2hhciAqKWxpYl9iYXNlX3BvaW50ZXIgKyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXRsaWJfZ2V0X3BhZ2Vfc2l6ZSgpICogCisgICAgbGliX2lkbGVfYWRkcmVzc1tpXSA9IChsb25nICopICgoY2hhciAqKWxpYl9iYXNlX3BvaW50ZXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldGxpYl9nZXRfcGFnZV9zaXplKCkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VTX1BFUl9DSElMRCAqIGkpKTsKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsImxpYl9pZGxlX2FkZHJlc3NbJWRdIGlzICVwXG4iLApAQCAtNDIzLDcgKzQyMyw3IEBACiB9CiAKIHZvaWQKLWNwdV91dGlsX2luaXQodm9pZCkgCitjcHVfdXRpbF9pbml0KHZvaWQpCiB7CiAgIGNwdV9tZXRob2QgPSBMT09QRVI7CiAKQEAgLTQ1OCwxMCArNDU4LDEwIEBACiAgIGxpYl9sb29wZXJzX3J1bm5pbmcgPSAwOwogICAvKiByZWFwIHRoZSBjaGlsZHJlbiAqLwogICB3aGlsZSh3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKSA+IDApIHsgfQotICAKKwogICAvKiBmaW5hbGx5LCB1bmxpbmsgdGhlIG1tYXBlZCBmaWxlICovCiAgIG11bm1hcCgoY2FkZHJfdClsaWJfYmFzZV9wb2ludGVyLAotICAgICAgICAgKChuZXRsaWJfZ2V0X3BhZ2Vfc2l6ZSgpICogUEFHRVNfUEVSX0NISUxEKSAqIAorICAgICAgICAgKChuZXRsaWJfZ2V0X3BhZ2Vfc2l6ZSgpICogUEFHRVNfUEVSX0NISUxEKSAqCiAgICAgICAgICAgbGliX251bV9sb2NfY3B1cykpOwogICB1bmxpbmsoIi90bXAvbmV0cGVyZl9jcHUiKTsKICNlbmRpZgpAQCAtNDg4LDI5ICs0ODgsMjkgQEAKICAgICBmaXJzdGNudFtNQVhDUFVTXSwKICAgICBzZWNvbmRjbnRbTUFYQ1BVU107CiAKLSAgZmxvYXQgCisgIGZsb2F0CiAgICAgZWxhcHNlZCwKICAgICB0ZW1wX3JhdGUsCiAgICAgcmF0ZVtNQVhUSU1FU10sCiAgICAgbG9jYWxfbWF4cmF0ZTsKIAotICBsb25nICAKKyAgbG9uZwogICAgIHNlYywKICAgICB1c2VjOwogCi0gIGludCAgIAorICBpbnQKICAgICBpLAogICAgIGo7Ci0gIAorCiAgIHN0cnVjdCAgdGltZXZhbCB0aW1lMSwgdGltZTIgOwogICBzdHJ1Y3QgIHRpbWV6b25lIHR6OwotICAKKwogICBpZiAoaXRlcmF0aW9ucyA+IE1BWFRJTUVTKSB7CiAgICAgaXRlcmF0aW9ucyA9IE1BWFRJTUVTOwogICB9CiAKICAgbG9jYWxfbWF4cmF0ZSA9IChmbG9hdCktMS4wOwotICAKKwogICBmb3IoaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKICAgICByYXRlW2ldID0gKGZsb2F0KTAuMDsKICAgICBmb3IgKGogPSAwOyBqIDwgbGliX251bV9sb2NfY3B1czsgaisrKSB7CkBAIC01MjgsNyArNTI4LDcgQEAKICAgICBzZWMgPSB0aW1lMi50dl9zZWMgLSB0aW1lMS50dl9zZWM7CiAgICAgdXNlYyA9IHRpbWUyLnR2X3VzZWMgLSB0aW1lMS50dl91c2VjOwogICAgIGVsYXBzZWQgPSAoZmxvYXQpc2VjICsgKChmbG9hdCl1c2VjLyhmbG9hdCkxMDAwMDAwLjApOwotICAgIAorCiAgICAgaWYoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsICJDYWxpYnJhdGlvbiBmb3IgY291bnRlciBydW46ICVkXG4iLGkpOwogICAgICAgZnByaW50Zih3aGVyZSwiXHRzZWMgPSAlbGQgdXNlYyA9ICVsZFxuIixzZWMsdXNlYyk7CkBAIC01NTIsNyArNTUyLDcgQEAKICAgICAgIC8qIHdlIGFzc3VtZSB0aGF0IGl0IHdvdWxkIHdyYXAgbm8gbW9yZSB0aGFuIG9uY2UuIHdlIGFsc28gKi8KICAgICAgIC8qIGFzc3VtZSB0aGF0IHRoZSByZXN1bHQgb2Ygc3VidHJhY3Rpbmcgd2lsbCAiZml0IiByYWogNC85NSAqLwogICAgICAgdGVtcF9yYXRlID0gKHNlY29uZGNudFtqXSA+PSBmaXJzdGNudFtqXSkgPwotICAgICAgICAoZmxvYXQpKHNlY29uZGNudFtqXSAtIGZpcnN0Y250W2pdKS9lbGFwc2VkIDogCisgICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdIC0gZmlyc3RjbnRbal0pL2VsYXBzZWQgOgogICAgICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdLWZpcnN0Y250W2pdK01BWExPTkcpL2VsYXBzZWQ7CiAgICAgICBpZiAodGVtcF9yYXRlID4gcmF0ZVtpXSkgcmF0ZVtpXSA9IHRlbXBfcmF0ZTsKICAgICAgIGlmKGRlYnVnKSB7CkBAIC01NzAsNyArNTcwLDcgQEAKIH0KIAogCi12b2lkCitzdGF0aWMgdm9pZAogZ2V0X2NwdV9pZGxlICh1aW50NjRfdCAqcmVzKQogewogICBpbnQgaTsKQEAgLTU4OCwxNSArNTg4LDE2IEBACiAgIGZsb2F0IGNvcnJlY3Rpb25fZmFjdG9yOwogICBmbG9hdCBhY3R1YWxfcmF0ZTsKIAotICBsaWJfbG9jYWxfY3B1X3V0aWwgPSAoZmxvYXQpMC4wOworICBtZW1zZXQoJmxpYl9sb2NhbF9jcHVfc3RhdHMsIDAsIHNpemVvZihsaWJfbG9jYWxfY3B1X3N0YXRzKSk7CisKICAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiAqLwogICAvKiB0aGUgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiAqLwogICAvKiBjYWxjdWxhdGlvbnMgLSBmb3IgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5ICovCiAgIC8qIHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSAqLwogICAvKiB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZSBzaG91bGQgYmUuICovCi0gIAorCiAgIGlmIChlbGFwc2VkX3RpbWUgIT0gMC4wKSB7Ci0gICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArIAorICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKwogICAgICAgKChsaWJfZWxhcHNlZCAtIGVsYXBzZWRfdGltZSkgLyBlbGFwc2VkX3RpbWUpOwogICB9CiAgIGVsc2UgewpAQCAtNjEwLDEyICs2MTEsMTIgQEAKICAgICAgdHJhY2tzLiBpZiB0aGlzIGhhcHBlbnMsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGN1bGF0aW9uCiAgICAgIGRvZXMgbm90IGdvIHNvdXRoLiByYWogNi85NSBhbmQgaWYgd2UgcnVuIGNvbXBsZXRlbHkgb3V0IG9mIGlkbGUsCiAgICAgIHRoZSBzYW1lIHRoaW5nIGNvdWxkIGluIHRoZW9yeSBoYXBwZW4gdG8gdGhlIFVTRV9LU1RBVCBwYXRoLiByYWoKLSAgICAgOC8yMDAwICovIAotICAgIAorICAgICA4LzIwMDAgKi8KKwogICAgIGlmIChsaWJfZW5kX2NvdW50W2ldID09IGxpYl9zdGFydF9jb3VudFtpXSkgewogICAgICAgbGliX2VuZF9jb3VudFtpXSsrOwogICAgIH0KLSAgICAKKwogICAgIGFjdHVhbF9yYXRlID0gKGxpYl9lbmRfY291bnRbaV0gPiBsaWJfc3RhcnRfY291bnRbaV0pID8KICAgICAgIChmbG9hdCkobGliX2VuZF9jb3VudFtpXSAtIGxpYl9zdGFydF9jb3VudFtpXSkvbGliX2VsYXBzZWQgOgogICAgICAgKGZsb2F0KShsaWJfZW5kX2NvdW50W2ldIC0gbGliX3N0YXJ0X2NvdW50W2ldICsKQEAgLTYzMiwxNiArNjMzLDE1IEBACiAgICAgfQogICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAobGliX2xvY2FsX21heHJhdGUgLSBhY3R1YWxfcmF0ZSkgLwogICAgICAgbGliX2xvY2FsX21heHJhdGUgKiAxMDA7Ci0gICAgbGliX2xvY2FsX2NwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CisgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKKyAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CiAgIH0KICAgLyogd2Ugd2FudCB0aGUgYXZlcmFnZSBhY3Jvc3MgYWxsIG4gcHJvY2Vzc29ycyAqLwotICBsaWJfbG9jYWxfY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7Ci0gIAotICBsaWJfbG9jYWxfY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7Ci0gIHJldHVybiBsaWJfbG9jYWxfY3B1X3V0aWw7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7CiAKLQorICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIH0KKwogdm9pZAogY3B1X3N0YXJ0X2ludGVybmFsKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9uZXRjcHVfbm9uZS5jIGIvc3JjL25ldGNwdV9ub25lLmMKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1lIGZyb20gbmV0Y3B1X25vbmUuYwpyZW5hbWUgdG8gc3JjL25ldGNwdV9ub25lLmMKaW5kZXggZjcxYjI0MC4uNDg5NDY5YiAxMDA2NDQKLS0tIGEvbmV0Y3B1X25vbmUuYworKysgYi9zcmMvbmV0Y3B1X25vbmUuYwpAQCAtMSw1ICsxLDUgQEAKIGNoYXIgICBuZXRjcHVfbm9uZV9pZFtdPSJcCi1AKCMpbmV0Y3B1X25vbmUuYyAoYykgQ29weXJpZ2h0IDIwMDUsIEhld2xldHQtUGFja2FyZCBDb21wYW55LCBWZXJzaW9uIDIuNC4wIjsKK0AoIyluZXRjcHVfbm9uZS5jIChjKSBDb3B5cmlnaHQgMjAwNS0yMDEyIEhld2xldHQtUGFja2FyZCBDb21wYW55LCBWZXJzaW9uIDIuNi4wIjsKIAogI2lmIEhBVkVfQ09ORklHX0gKICMgaW5jbHVkZSA8Y29uZmlnLmg+CkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAibmV0bGliLmgiCiAKIHZvaWQKLWNwdV91dGlsX2luaXQodm9pZCkgCitjcHVfdXRpbF9pbml0KHZvaWQpCiB7CiAgIHJldHVybjsKIH0KQEAgLTM2LDEyICszNiw2IEBACiAgIHJldHVybiBDUFVfVU5LTk9XTjsKIH0KIAotdm9pZAotZ2V0X2NwdV9pZGxlKHVpbnQ2NF90ICpyZXMpCi17Ci0gIHJldHVybjsKLX0KLQogZmxvYXQKIGNhbGlicmF0ZV9pZGxlX3JhdGUoaW50IGl0ZXJhdGlvbnMsIGludCBpbnRlcnZhbCkKIHsKZGlmZiAtLWdpdCBhL25ldGNwdV9udHBlcmYuYyBiL3NyYy9uZXRjcHVfbnRwZXJmLmMKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gbmV0Y3B1X250cGVyZi5jCnJlbmFtZSB0byBzcmMvbmV0Y3B1X250cGVyZi5jCmluZGV4IGU4ZDhmNzYuLjg4NjM3ZmIgMTAwNjQ0Ci0tLSBhL25ldGNwdV9udHBlcmYuYworKysgYi9zcmMvbmV0Y3B1X250cGVyZi5jCkBAIC0xLDUgKzEsNSBAQAogY2hhciAgIG5ldGNwdV9udHBlcmZfaWRbXT0iXAotQCgjKW5ldGNwdV9udHBlcmYuYyAoYykgQ29weXJpZ2h0IDIwMDUtMjAwNywgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnksIFZlcnNpb24gMi40LjMiOworQCgjKW5ldGNwdV9udHBlcmYuYyAoYykgQ29weXJpZ2h0IDIwMDUtMjAxMiwgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnksIFZlcnNpb24gMi42LjAiOwogCiAjaWYgSEFWRV9DT05GSUdfSAogIyBpbmNsdWRlIDxjb25maWcuaD4KQEAgLTcsMjYgKzcsNiBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2lmIEhBVkVfSU5UVFlQRVNfSAotIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TVERJTlRfSAotIyAgaW5jbHVkZSA8c3RkaW50Lmg+Ci0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIDAKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLQogI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKQEAgLTQ3LDE0ICsyNywxNCBAQAogLy8gU3lzdGVtIENQVSB0aW1lIGluZm9ybWF0aW9uIGNsYXNzLgogLy8gVXNlZCB0byBnZXQgQ1BVIHRpbWUgaW5mb3JtYXRpb24uCiAvLwotLy8gICAgIFNES1xpbmNcbnRleGFwaS5oIAorLy8gICAgIFNES1xpbmNcbnRleGFwaS5oCiAvLyBGdW5jdGlvbiB4ODogICBTeXN0ZW1Qcm9jZXNzb3JQZXJmb3JtYW5jZUluZm9ybWF0aW9uCi0vLyBEYXRhU3RydWN0dXJlOiBTWVNURU1fUFJPQ0VTU09SX1BFUkZPUk1BTkNFX0lORk9STUFUSU9OIAorLy8gRGF0YVN0cnVjdHVyZTogU1lTVEVNX1BST0NFU1NPUl9QRVJGT1JNQU5DRV9JTkZPUk1BVElPTgogLy8KIAogI2RlZmluZSBTeXN0ZW1Qcm9jZXNzb3JQZXJmb3JtYW5jZUluZm9ybWF0aW9uIDB4MDgKIAotdHlwZWRlZiBzdHJ1Y3QgCit0eXBlZGVmIHN0cnVjdAogewogICAgICAgICBMQVJHRV9JTlRFR0VSICAgSWRsZVRpbWU7CiAgICAgICAgIExBUkdFX0lOVEVHRVIgICBLZXJuZWxUaW1lOwpAQCAtNjcsMTcgKzQ3LDE3IEBACiAvLwogLy8gQ2FsbHMgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbgogLy8KLXR5cGVkZWYgVUxPTkcgKF9fc3RkY2FsbCAqTlRfUVVFUllfU1lTVEVNX0lORk9STUFUSU9OKSggCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgU3lzdGVtSW5mb3JtYXRpb25DbGFzcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFZPSUQgU3lzdGVtSW5mb3JtYXRpb24sIAordHlwZWRlZiBVTE9ORyAoX19zdGRjYWxsICpOVF9RVUVSWV9TWVNURU1fSU5GT1JNQVRJT04pKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVMT05HIFN5c3RlbUluZm9ybWF0aW9uQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFZPSUQgU3lzdGVtSW5mb3JtYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgU3lzdGVtSW5mb3JtYXRpb25MZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVMT05HIFJldHVybkxlbmd0aCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVUxPTkcgUmV0dXJuTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogTlRfUVVFUllfU1lTVEVNX0lORk9STUFUSU9OIE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbiA9IE5VTEw7CiAKIAotc3RhdGljIExBUkdFX0lOVEVHRVIgVGlja0h6ID0gezAsMH07CitzdGF0aWMgTEFSR0VfSU5URUdFUiBUaWNrSHogPSB7ezAsMH19OwogCiBfaW5saW5lIExBUkdFX0lOVEVHRVIgUmVhZFBlcmZvcm1hbmNlQ291bnRlcihWT0lEKQogewpAQCAtOTIsNyArNzIsNyBAQAogICAgY2FsbC4gIFJlZmVyZW5jZXMgdG8gdGhlIFBESC5ETEwgaGF2ZSBiZWVuIGRlbGV0ZWQuICBUaGlzIHN0cnVjdHVyZQogICAgaXMgdGhlIHJvb3QgZm9yIHRoZXNlIGRhdGEgc3RydWN0dXJlcy4gKi8KIAotdHlwZWRlZiBzdHJ1Y3Qgc1BlcmZPYmogCit0eXBlZGVmIHN0cnVjdCBzUGVyZk9iagogewogICAgICAgICBMQVJHRV9JTlRFR0VSICAgU3RhcnRUaW1lOwogICAgICAgICBMQVJHRV9JTlRFR0VSICAgRW5kVGltZTsKQEAgLTExMSw3ICs5MSw3IEBACiAKIAogdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKK2NwdV91dGlsX2luaXQodm9pZCkKIHsKICAgaWYgKE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbiA9PSBOVUxMKSB7CiAgICAgLy8gT3BlbiB0aGUgcGVyZm9ybWFuY2UgY291bnRlciBpbnRlcmZhY2UKQEAgLTE0OSw3ICsxMjksNyBAQAogCiAKIC8qCi0gIEluaXRQZXJmQ250cnMoKSAtIAorICBJbml0UGVyZkNudHJzKCkgLQogCiAgIENoYW5nZWQgdG8gbm8gbG9uZ2VyIGFjY2VzcyB0aGUgTlQgcGVyZm9ybWFuY2UgcmVnaXN0cnkgaW50ZXJmYWNlcy4KICAgQSBkaXJlY3QgY2FsbCB0byBOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRpb24gKGFuIHVuZG9jdW1lbnRlZCBOVCBBUEkpCkBAIC0xNjksMjAgKzE0OSwyMCBAQAogCiAgIE5ld1BlcmZDbnRycyA9IChQZXJmT2JqICopR2xvYmFsQWxsb2MoR1BUUiwgc2l6ZW9mKFBlcmZPYmopKTsKICAgYXNzZXJ0KE5ld1BlcmZDbnRycyAhPSBOVUxMKTsKLSAgCisKICAgWmVyb01lbW9yeSgoUENIQVIpTmV3UGVyZkNudHJzLCBzaXplb2YoUGVyZk9iaikpOwotICAKKwogICAvLyBnZXQgTlQgdmVyc2lvbgogICBOVFZlcnNpb24gPSBHZXRWZXJzaW9uKCk7Ci0gIGlmIChOVFZlcnNpb24gPj0gMHg4MDAwMDAwMCkgCisgIGlmIChOVFZlcnNpb24gPj0gMHg4MDAwMDAwMCkKICAgICB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBydW5uaW5nIG9uIFdpbmRvd3MgTlRcbiIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gIAorCiAgIC8vIGxvY2F0ZSB0aGUgY2FsbHMgd2UgbmVlZCBpbiBOVERMTAotICAvL0xpbnQgCi0gIE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbiA9IAorICAvL0xpbnQKKyAgTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uID0KICAgICAoTlRfUVVFUllfU1lTVEVNX0lORk9STUFUSU9OKUdldFByb2NBZGRyZXNzKCBHZXRNb2R1bGVIYW5kbGUoIm50ZGxsLmRsbCIpLAogCQkJCQkJICJOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRpb24iICk7CiAKQEAgLTE5MCwxOSArMTcwLDE5IEBACiAgICAgewogICAgICAgLy9MaW50CiAgICAgICBzdGF0dXMgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgIGZwcmludGYoc3RkZXJyLCAiR2V0UHJvY0FkZHJlc3NGYWlsZWQsIHN0YXR1czogJVhcbiIsIHN0YXR1cyk7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkdldFByb2NBZGRyZXNzRmFpbGVkLCBzdGF0dXM6ICVsWFxuIiwgc3RhdHVzKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAKKwogICAvLyBzZXR1cCB0byBtZWFzdXJlIHRpbWVzdGFtcHMgd2l0aCB0aGUgaGlnaCByZXNvbHV0aW9uIHRpbWVycy4KICAgaWYgKFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJlRpY2tIeikgPT0gRkFMU0UpCiAgICAgewogICAgICAgZnByaW50ZihzdGRlcnIsIk1BSU4gLSBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5IEZhaWxlZCFcbiIpOwotICAgICAgZXhpdCgyKTsgICAKKyAgICAgIGV4aXQoMik7CiAgICAgfQotICAKKwogICBSZXN0YXJ0UGVyZkNudHJzKE5ld1BlcmZDbnRycyk7Ci0gIAorCiAgIHJldHVybihOZXdQZXJmQ250cnMpOwogfSAgLyogSW5pdFBlcmZDbnRycyAqLwogCkBAIC0yMjIsNTggKzIwMiw1OCBAQAogICBEV09SRCByZXR1cm5MZW5ndGggPSAwOyAgLy9MaW50CiAgIERXT1JEIHJldHVybk51bUNQVXM7ICAvL0xpbnQKICAgRFdPUkQgaTsKLSAgCisKICAgRFdPUkQgc3RhdHVzOwogICBTWVNURU1fSU5GTyBTeXN0ZW1JbmZvOwogCiAgIEdldFN5c3RlbUluZm8oJlN5c3RlbUluZm8pOwotICAKKwogICAvLyBNb3ZlIHByZXZpb3VzIGRhdGEgZnJvbSBFbmRJbmZvIHRvIFN0YXJ0SW5mby4KICAgQ29weU1lbW9yeSgoUENIQVIpJlBlcmZDbnRycy0+U3RhcnRJbmZvWzBdLAogCSAgICAgKFBDSEFSKSZQZXJmQ250cnMtPkVuZEluZm9bMF0sCiAJICAgICBzaXplb2YoU1lTVEVNX1BST0NFU1NPUl9QRVJGT1JNQU5DRV9JTkZPUk1BVElPTikqKE1BWENQVVMgKzEpKTsKLSAgCisKICAgUGVyZkNudHJzLT5TdGFydFRpbWUgPSBQZXJmQ250cnMtPkVuZFRpbWU7Ci0gIAorCiAgIC8vIGdldCB0aGUgY3VycmVudCBDUFVUSU1FIGluZm9ybWF0aW9uCiAgIGlmICggKHN0YXR1cyA9IE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbiggU3lzdGVtUHJvY2Vzc29yUGVyZm9ybWFuY2VJbmZvcm1hdGlvbiwKIAkJCQkJICAgKFBDSEFSKSZQZXJmQ250cnMtPkVuZEluZm9bMF0sIHNpemVvZihTWVNURU1fUFJPQ0VTU09SX1BFUkZPUk1BTkNFX0lORk9STUFUSU9OKSpNQVhDUFVTLAotCQkJCQkgICAmcmV0dXJuTGVuZ3RoICkpICE9IDApIAorCQkJCQkgICAmcmV0dXJuTGVuZ3RoICkpICE9IDApCiAgICAgewotICAgICAgZnByaW50ZihzdGRlcnIsICJOdFF1ZXJ5IGZhaWxlZCwgc3RhdHVzOiAlWFxuIiwgc3RhdHVzKTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiTnRRdWVyeSBmYWlsZWQsIHN0YXR1czogJWxYXG4iLCBzdGF0dXMpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gIAorCiAgIFBlcmZDbnRycy0+RW5kVGltZSA9IFJlYWRQZXJmb3JtYW5jZUNvdW50ZXIoKTsKLSAgCisKICAgLy8gVmFsaWRhdGUgdGhhdCBOdFF1ZXJ5IHJldHVybmVkIGEgcmVhc29uYWJsZSBhbW91bnQgb2YgZGF0YQogICBpZiAoKHJldHVybkxlbmd0aCAlIHNpemVvZihTWVNURU1fUFJPQ0VTU09SX1BFUkZPUk1BTkNFX0lORk9STUFUSU9OKSkgIT0gMCkKICAgICB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk50UXVlcnkgZGlkbid0IHJldHVybiBleHBlY3RlZCBhbW91bnQgb2YgZGF0YVxuIik7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkV4cGVjdGVkIGEgbXVsdGlwbGUgb2YgJWksIHJldHVybmVkICVpXG4iLAorICAgICAgZnByaW50ZihzdGRlcnIsICJFeHBlY3RlZCBhIG11bHRpcGxlIG9mICVpLCByZXR1cm5lZCAlbHVcbiIsCiAJICAgICAgc2l6ZW9mKFNZU1RFTV9QUk9DRVNTT1JfUEVSRk9STUFOQ0VfSU5GT1JNQVRJT04pLCByZXR1cm5MZW5ndGgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gIHJldHVybk51bUNQVXMgPSByZXR1cm5MZW5ndGggLyBzaXplb2YoU1lTVEVNX1BST0NFU1NPUl9QRVJGT1JNQU5DRV9JTkZPUk1BVElPTik7IAotICAKKyAgcmV0dXJuTnVtQ1BVcyA9IHJldHVybkxlbmd0aCAvIHNpemVvZihTWVNURU1fUFJPQ0VTU09SX1BFUkZPUk1BTkNFX0lORk9STUFUSU9OKTsKKwogICBpZiAocmV0dXJuTnVtQ1BVcyAhPSAoaW50KVN5c3RlbUluZm8uZHdOdW1iZXJPZlByb2Nlc3NvcnMpCiAgICAgewogICAgICAgZnByaW50ZihzdGRlcnIsICJOdFF1ZXJ5IGRpZG4ndCByZXR1cm4gZXhwZWN0ZWQgYW1vdW50IG9mIGRhdGFcbiIpOwotICAgICAgZnByaW50ZihzdGRlcnIsICJFeHBlY3RlZCBkYXRhIGZvciAlaSBDUFVzLCByZXR1cm5lZCAlaVxuIiwKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRXhwZWN0ZWQgZGF0YSBmb3IgJWkgQ1BVcywgcmV0dXJuZWQgJWx1XG4iLAogCSAgICAgIChpbnQpU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29ycywgcmV0dXJuTnVtQ1BVcyk7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgCisKICAgLy8gWmVybyBlbnRyaWVzIG5vdCByZXR1cm5lZCBieSBOdFF1ZXJ5CiAgIFplcm9NZW1vcnkoKFBDSEFSKSZQZXJmQ250cnMtPkVuZEluZm9bcmV0dXJuTnVtQ1BVc10sCiAJICAgICBzaXplb2YoU1lTVEVNX1BST0NFU1NPUl9QRVJGT1JNQU5DRV9JTkZPUk1BVElPTikqCiAJICAgICAoTUFYQ1BVUyArMSAtIHJldHVybk51bUNQVXMpKTsKLSAgCisKICAgLy8gVG90YWwgYWxsIG9mIHRoZSBDUFVzCiAgIC8vICAgICAgS2VybmVsVGltZSBuZWVkcyB0byBiZSBmaXhlZC11cDsgaXQgaW5jbHVkZXMgYm90aCBpZGxlICYKLSAgLy8gdHJ1ZSBrZXJuZWwgdGltZSAKKyAgLy8gdHJ1ZSBrZXJuZWwgdGltZQogICAvLyAgTm90ZSB0aGF0IGtlcm5lbCB0aW1lIGFsc28gaW5jbHVkZXMgRHBjVGltZSAmIEludGVycnVwdFRpbWUsIGJ1dAotICAvLyBJIGxpa2UgdGhpcy4gCisgIC8vIEkgbGlrZSB0aGlzLgogICBmb3IgKGk9MDsgaSA8IHJldHVybk51bUNQVXM7IGkrKykKICAgICB7CiAgICAgICBQZXJmQ250cnMtPkVuZEluZm9baV0uS2VybmVsVGltZS5RdWFkUGFydCAgICAgICAgIC09IFBlcmZDbnRycy0+RW5kSW5mb1tpXS5JZGxlVGltZS5RdWFkUGFydDsKQEAgLTI4NCwyNyArMjY0LDI3IEBACiAgICAgICBQZXJmQ250cnMtPkVuZEluZm9bTUFYQ1BVU10uSW50ZXJydXB0VGltZS5RdWFkUGFydCArPSBQZXJmQ250cnMtPkVuZEluZm9baV0uSW50ZXJydXB0VGltZS5RdWFkUGFydDsKICAgICAgIFBlcmZDbnRycy0+RW5kSW5mb1tNQVhDUFVTXS5JbnRlcnJ1cHRDb3VudCAgICAgICAgICAgICAgICArPSBQZXJmQ250cnMtPkVuZEluZm9baV0uSW50ZXJydXB0Q291bnQ7CiAgICAgfQotICAKKwogfSAgIC8qIFJlc3RhcnRQZXJmQ250cnMgKi8KIAogLyoKICAgUmVwb3J0UGVyZkNudHJzKCkgLQogICBUaGlzIHJvdXRpbmUgcmVwb3J0cyB0aGUgcmVzdWx0cyBvZiB0aGUgdmFyaW91cyBwZXJmb3JtYW5jZQotICBjb3VudGVycy4gCisgIGNvdW50ZXJzLgogKi8KIAogZG91YmxlIFJlcG9ydFBlcmZDbnRycyhQZXJmT2JqICpQZXJmQ250cnMpCiB7CiAgIGRvdWJsZSB0b3RfQ1BVX1V0aWw7CiAgIGludCBpOwotICBpbnQgZHVyYXRpb247ICAvLyBpbiAxMDAgdXNlY3MKLSAgCisgIGRvdWJsZSBkdXJhdGlvbjsgIC8vIGluIG1pbGxpc2Vjb25kcw0KKwogICBMQVJHRV9JTlRFR0VSIEFjdHVhbER1cmF0aW9uOwotICAKLSAgU1lTVEVNX1BST0NFU1NPUl9QRVJGT1JNQU5DRV9JTkZPUk1BVElPTiAgICAgICAgRGVsdGFJbmZvW01BWENQVVMgKzFdOyAgCi0gIAotICBMQVJHRV9JTlRFR0VSICAgVG90YWxDUFVUaW1lW01BWENQVVMgKzFdOyAgICAgICAgIAotICAKKworICBTWVNURU1fUFJPQ0VTU09SX1BFUkZPUk1BTkNFX0lORk9STUFUSU9OICAgICAgICBEZWx0YUluZm9bTUFYQ1BVUyArMV07CisKKyAgTEFSR0VfSU5URUdFUiAgIFRvdGFsQ1BVVGltZVtNQVhDUFVTICsxXTsKKwogICBTWVNURU1fSU5GTyBTeXN0ZW1JbmZvOwogCiAgIEdldFN5c3RlbUluZm8oJlN5c3RlbUluZm8pOwpAQCAtMzIzLDggKzMwMyw4IEBACiAJUGVyZkNudHJzLT5TdGFydEluZm9baV0uSW50ZXJydXB0VGltZS5RdWFkUGFydDsKICAgICAgIERlbHRhSW5mb1tpXS5JbnRlcnJ1cHRDb3VudCAgICAgICAgICAgICAgID0gUGVyZkNudHJzLT5FbmRJbmZvW2ldLkludGVycnVwdENvdW50IC0KIAlQZXJmQ250cnMtPlN0YXJ0SW5mb1tpXS5JbnRlcnJ1cHRDb3VudDsKLSAgICAgIAotICAgICAgVG90YWxDUFVUaW1lW2ldLlF1YWRQYXJ0ID0gICAgICAKKworICAgICAgVG90YWxDUFVUaW1lW2ldLlF1YWRQYXJ0ID0KIAlEZWx0YUluZm9baV0uSWRsZVRpbWUuUXVhZFBhcnQgKwogCURlbHRhSW5mb1tpXS5LZXJuZWxUaW1lLlF1YWRQYXJ0ICsKIAlEZWx0YUluZm9baV0uVXNlclRpbWUuUXVhZFBhcnQ7CkBAIC0zMzIsMjIgKzMxMiwyMiBAQAogICAgICAgLy8gKyBEZWx0YUluZm9baV0uRHBjVGltZS5RdWFkUGFydCAgKwogICAgICAgLy8gIERlbHRhSW5mb1tpXS5JbnRlcnJ1cHRUaW1lLlF1YWRQYXJ0OwogICAgIH0KLSAgCisKICAgdG90X0NQVV9VdGlsID0gMTAwLjAqKDEuMCAtIChkb3VibGUpRGVsdGFJbmZvW01BWENQVVNdLklkbGVUaW1lLlF1YWRQYXJ0Lyhkb3VibGUpVG90YWxDUFVUaW1lW01BWENQVVNdLlF1YWRQYXJ0KTsgIC8vTGludAotICAKKwogICAvLyBSZS1jYWxjdWxhdGUgZHVyYXRpb24sIHNpbmNlIHdlIG1heSBoYXZlIHN0b3BlZCBlYXJseSBkdWUgdG8gY250ci1DLgotICBBY3R1YWxEdXJhdGlvbi5RdWFkUGFydCA9IFBlcmZDbnRycy0+RW5kVGltZS5RdWFkUGFydCAtIAorICBBY3R1YWxEdXJhdGlvbi5RdWFkUGFydCA9IFBlcmZDbnRycy0+RW5kVGltZS5RdWFkUGFydCAtCiAgICAgUGVyZkNudHJzLT5TdGFydFRpbWUuUXVhZFBhcnQ7Ci0gIAotICAvLyBjb252ZXJ0IHRvIDEvMTAgbWlsbGlzZWNvbmRzICgxMDAgdXNlYykgCisKKyAgLy8gY29udmVydCB0byAxMDAgdXNlYyAoMS8xMHRoIG1pbGxpc2Vjb25kcykgdGltZWJhc2UuDQogICBBY3R1YWxEdXJhdGlvbi5RdWFkUGFydCA9IChBY3R1YWxEdXJhdGlvbi5RdWFkUGFydCoxMDAwMCkvVGlja0h6LlF1YWRQYXJ0OwotICBkdXJhdGlvbiA9IEFjdHVhbER1cmF0aW9uLkxvd1BhcnQ7Ci0gIAorICBkdXJhdGlvbiA9IChkb3VibGUpQWN0dWFsRHVyYXRpb24uUXVhZFBhcnQvMTAuMDsgIC8vIGR1cmF0aW9uIGluIG1zDQorCiAgIGlmICh2ZXJib3NpdHkgPiAxKQogICAgIHsKLSAgICAgIGZwcmludGYod2hlcmUsIkFjdHVhbER1cmF0aW9uIChtcyk6ICVkXG4iLCBkdXJhdGlvbi8xMCk7CisgICAgICBmcHJpbnRmKHdoZXJlLCJBY3R1YWxEdXJhdGlvbiAobXMpOiAlZFxuIiwgKGludClkdXJhdGlvbik7DQogICAgIH0KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpCiAgICAgewogICAgICAgZnByaW50Zih3aGVyZSwgIiUlIENQVSAgICBfVG90YWwiKTsKQEAgLTM1OSw5MSArMzM5LDkxIEBACiAJICAgIH0KIAl9CiAgICAgICBmcHJpbnRmKHdoZXJlLCAiXG4iKTsKLSAgICAgIAorCiAgICAgICBmcHJpbnRmKHdoZXJlLCAiQnVzeSAgICAgICU1LjJmIiwgdG90X0NQVV9VdGlsKTsKICAgICAgIGlmICgoaW50KVN5c3RlbUluZm8uZHdOdW1iZXJPZlByb2Nlc3NvcnMgPiAxKQogCXsKIAkgIGZvciAoaT0wOyBpIDwgKGludClTeXN0ZW1JbmZvLmR3TnVtYmVyT2ZQcm9jZXNzb3JzOyBpKyspCiAJICAgIHsKLQkgICAgICBmcHJpbnRmKHdoZXJlLCAiXHQgJTUuMmYiLCAKKwkgICAgICBmcHJpbnRmKHdoZXJlLCAiXHQgJTUuMmYiLAogCQkgICAgICAxMDAuMCooMS4wIC0gKGRvdWJsZSlEZWx0YUluZm9baV0uSWRsZVRpbWUuUXVhZFBhcnQvKGRvdWJsZSlUb3RhbENQVVRpbWVbaV0uUXVhZFBhcnQpKTsgIC8vTGludAogCSAgICB9CiAJfQogICAgICAgZnByaW50Zih3aGVyZSwgIlxuIik7Ci0gICAgICAKLSAgICAgIGZwcmludGYod2hlcmUsICJLZXJuZWwgICAgJTUuMmYiLCAKKworICAgICAgZnByaW50Zih3aGVyZSwgIktlcm5lbCAgICAlNS4yZiIsCiAJICAgICAgMTAwLjAqKGRvdWJsZSlEZWx0YUluZm9bTUFYQ1BVU10uS2VybmVsVGltZS5RdWFkUGFydC8oZG91YmxlKVRvdGFsQ1BVVGltZVtNQVhDUFVTXS5RdWFkUGFydCk7ICAvL0xpbnQKLSAgICAgIAorCiAgICAgICBpZiAoKGludClTeXN0ZW1JbmZvLmR3TnVtYmVyT2ZQcm9jZXNzb3JzID4gMSkKIAl7CiAJICBmb3IgKGk9MDsgaSA8IChpbnQpU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29yczsgaSsrKQogCSAgICB7Ci0JICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjJmIiwgCisJICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjJmIiwKIAkJICAgICAgMTAwLjAqKGRvdWJsZSlEZWx0YUluZm9baV0uS2VybmVsVGltZS5RdWFkUGFydC8oZG91YmxlKVRvdGFsQ1BVVGltZVtpXS5RdWFkUGFydCk7ICAvL0xpbnQKIAkgICAgfQogCX0KICAgICAgIGZwcmludGYod2hlcmUsICJcbiIpOwotICAgICAgCi0gICAgICBmcHJpbnRmKHdoZXJlLCAiVXNlciAgICAgICU1LjJmIiwgCisKKyAgICAgIGZwcmludGYod2hlcmUsICJVc2VyICAgICAgJTUuMmYiLAogCSAgICAgIDEwMC4wKihkb3VibGUpRGVsdGFJbmZvW01BWENQVVNdLlVzZXJUaW1lLlF1YWRQYXJ0Lyhkb3VibGUpVG90YWxDUFVUaW1lW01BWENQVVNdLlF1YWRQYXJ0KTsKLSAgICAgIAorCiAgICAgICBpZiAoKGludClTeXN0ZW1JbmZvLmR3TnVtYmVyT2ZQcm9jZXNzb3JzID4gMSkKIAl7CiAJICBmb3IgKGk9MDsgaSA8IChpbnQpU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29yczsgaSsrKQogCSAgICB7Ci0JICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjJmIiwgCisJICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjJmIiwKIAkJICAgICAgMTAwLjAqKGRvdWJsZSlEZWx0YUluZm9baV0uVXNlclRpbWUuUXVhZFBhcnQvVG90YWxDUFVUaW1lW2ldLlF1YWRQYXJ0KTsgIC8vTGludAogCSAgICB9CiAJfQogICAgICAgZnByaW50Zih3aGVyZSwgIlxuIik7Ci0gICAgICAKLSAgICAgIGZwcmludGYod2hlcmUsICJEcGMgICAgICAgJTUuMmYiLCAKKworICAgICAgZnByaW50Zih3aGVyZSwgIkRwYyAgICAgICAlNS4yZiIsCiAJICAgICAgMTAwLjAqKGRvdWJsZSlEZWx0YUluZm9bTUFYQ1BVU10uRHBjVGltZS5RdWFkUGFydC8oZG91YmxlKVRvdGFsQ1BVVGltZVtNQVhDUFVTXS5RdWFkUGFydCk7ICAvL0xpbnQKLSAgICAgIAorCiAgICAgICBpZiAoKGludClTeXN0ZW1JbmZvLmR3TnVtYmVyT2ZQcm9jZXNzb3JzID4gMSkKIAl7CiAJICBmb3IgKGk9MDsgaSA8IChpbnQpU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29yczsgaSsrKQogCSAgICB7Ci0JICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjJmIiwgCisJICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjJmIiwKIAkJICAgICAgMTAwLjAqKGRvdWJsZSlEZWx0YUluZm9baV0uRHBjVGltZS5RdWFkUGFydC8oZG91YmxlKVRvdGFsQ1BVVGltZVtpXS5RdWFkUGFydCk7ICAvL0xpbnQKIAkgICAgfQogCX0KICAgICAgIGZwcmludGYod2hlcmUsICJcbiIpOwotICAgICAgCi0gICAgICBmcHJpbnRmKHdoZXJlLCAiSW50ZXJydXB0ICU1LjJmIiwgCisKKyAgICAgIGZwcmludGYod2hlcmUsICJJbnRlcnJ1cHQgJTUuMmYiLAogCSAgICAgIDEwMC4wKihkb3VibGUpRGVsdGFJbmZvW01BWENQVVNdLkludGVycnVwdFRpbWUuUXVhZFBhcnQvKGRvdWJsZSlUb3RhbENQVVRpbWVbTUFYQ1BVU10uUXVhZFBhcnQpOyAgLy9MaW50Ci0gICAgICAKKwogICAgICAgaWYgKChpbnQpU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29ycyA+IDEpCiAJewogCSAgZm9yIChpPTA7IGkgPCAoaW50KVN5c3RlbUluZm8uZHdOdW1iZXJPZlByb2Nlc3NvcnM7IGkrKykKIAkgICAgewotCSAgICAgIGZwcmludGYod2hlcmUsICJcdCAlNS4yZiIsIAorCSAgICAgIGZwcmludGYod2hlcmUsICJcdCAlNS4yZiIsCiAJCSAgICAgIDEwMC4wKihkb3VibGUpRGVsdGFJbmZvW2ldLkludGVycnVwdFRpbWUuUXVhZFBhcnQvVG90YWxDUFVUaW1lW2ldLlF1YWRQYXJ0KTsgIC8vTGludAogCSAgICB9CiAJfQogICAgICAgZnByaW50Zih3aGVyZSwgIlxuXG4iKTsKLSAgICAgIAotICAgICAgZnByaW50Zih3aGVyZSwgIkludGVycnVwdC9TZWMuICU1LjFmIiwgCi0JICAgICAgKGRvdWJsZSlEZWx0YUluZm9bTUFYQ1BVU10uSW50ZXJydXB0Q291bnQqMTAwMDAuMC8oZG91YmxlKWR1cmF0aW9uKTsKLSAgICAgIAorCisgICAgICBmcHJpbnRmKHdoZXJlLCAiSW50ZXJydXB0L1NlYy4gJTUuMWYiLAorCSAgICAgIChkb3VibGUpRGVsdGFJbmZvW01BWENQVVNdLkludGVycnVwdENvdW50KjEwMDAuMC9kdXJhdGlvbik7DQorCiAgICAgICBpZiAoKGludClTeXN0ZW1JbmZvLmR3TnVtYmVyT2ZQcm9jZXNzb3JzID4gMSkKIAl7CiAJICBmb3IgKGk9MDsgaSA8IChpbnQpU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29yczsgaSsrKQogCSAgICB7Ci0JICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjFmIiwgCi0JCSAgICAgIChkb3VibGUpRGVsdGFJbmZvW2ldLkludGVycnVwdENvdW50KjEwMDAwLjAvKGRvdWJsZSlkdXJhdGlvbik7CisJICAgICAgZnByaW50Zih3aGVyZSwgIlx0ICU1LjFmIiwKKwkJICAgICAgKGRvdWJsZSlEZWx0YUluZm9baV0uSW50ZXJydXB0Q291bnQqMTAwMC4wL2R1cmF0aW9uKTsNCiAJICAgIH0KIAl9CiAgICAgICBmcHJpbnRmKHdoZXJlLCAiXG5cbiIpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9Ci0gIAorCiAgIHJldHVybiAodG90X0NQVV9VdGlsKTsKLSAgCisKIH0gIC8qIFJlcG9ydFBlcmZDbnRycyAqLwogCiAvKgotICBDbG9zZVBlcmZDbnRycygpIC0gIAorICBDbG9zZVBlcmZDbnRycygpIC0KIAogICBUaGlzIHJvdXRpbmUgY2xlYW5zIHVwIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIEFQSXMuCiAqLwpAQCAtNDY4LDE4ICs0NDgsMjAgQEAKIH0KIAogZmxvYXQKLWNhbGNfY3B1X3V0aWxfaW50ZXJuYWwoZmxvYXQgZWxhcHNlZF90aW1lKSAKK2NhbGNfY3B1X3V0aWxfaW50ZXJuYWwoZmxvYXQgZWxhcHNlZF90aW1lKQogewogICBmbG9hdCBjb3JyZWN0aW9uX2ZhY3RvcjsKLSAgbGliX2xvY2FsX2NwdV91dGlsID0gKGZsb2F0KTAuMDsKKworICBtZW1zZXQoJmxpYl9sb2NhbF9jcHVfc3RhdHMsIDAsIHNpemVvZihsaWJfbG9jYWxfY3B1X3N0YXRzKSk7CisKICAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiAqLwogICAvKiB0aGUgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiAqLwogICAvKiBjYWxjdWxhdGlvbnMgLSBmb3IgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5ICovCiAgIC8qIHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSAqLwogICAvKiB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZSBzaG91bGQgYmUuICovCi0gIAorCiAgIGlmIChlbGFwc2VkX3RpbWUgIT0gMC4wKSB7Ci0gICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArIAorICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKwogICAgICAgKChsaWJfZWxhcHNlZCAtIGVsYXBzZWRfdGltZSkgLyBlbGFwc2VkX3RpbWUpOwogICB9CiAgIGVsc2UgewpAQCAtNDkwLDggKzQ3Miw4IEBACiAgICAgZnByaW50Zih3aGVyZSwgImNvcnJlY3Rpb24gZmFjdG9yOiAlZlxuIiwgY29ycmVjdGlvbl9mYWN0b3IpOwogICB9CiAKLSAgbGliX2xvY2FsX2NwdV91dGlsID0gKGZsb2F0KVJlcG9ydFBlcmZDbnRycyhQZXJmQ250cnMpOwotICBsaWJfbG9jYWxfY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7Ci0gIHJldHVybiBsaWJfbG9jYWxfY3B1X3V0aWw7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgPSAoZmxvYXQpUmVwb3J0UGVyZkNudHJzKFBlcmZDbnRycyk7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7CisgIHJldHVybiBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsOwogCiB9CmRpZmYgLS1naXQgYS9uZXRjcHVfb3N4LmMgYi9zcmMvbmV0Y3B1X29zeC5jCnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIG5ldGNwdV9vc3guYwpyZW5hbWUgdG8gc3JjL25ldGNwdV9vc3guYwppbmRleCAyMTMyYmUxLi43MDM2YzJiIDEwMDY0NAotLS0gYS9uZXRjcHVfb3N4LmMKKysrIGIvc3JjL25ldGNwdV9vc3guYwpAQCAtMSw1ICsxLDUgQEAKIGNoYXIgICBuZXRjcHVfc3lzY3RsX2lkW109IlwKLUAoIyluZXRjcHVfb3N4LmMgIFZlcnNpb24gMi40LjMiOworQCgjKW5ldGNwdV9vc3guYyAgVmVyc2lvbiAyLjYuMCI7CiAKICNpZiBIQVZFX0NPTkZJR19ICiAjIGluY2x1ZGUgPGNvbmZpZy5oPgpAQCAtNDQsNiArNDQsMTIgQEAKICAgIGhlcmUgKi8KICNpbmNsdWRlIDxtYWNoL21lc3NhZ2UuaD4KIAorLyogc29tZSBvZiB0aGlzIGlzIHRvIG1ha2UgVGlnZXIgKDEwLjQpLCBMZW9wYXJkICgxMC41KSBhbmQKKyAgIFNub3dMZW9wYXJkICgxMC42KSBoYXBweSwgd2UgaG9wZSBpdCBkb2VzIG5vdCBhbmdlciBwcmV2aW91cworICAgdmVyc2lvbnMgKi8KKyNpbmNsdWRlIDxtYWNoL21hY2hfaG9zdC5oPgorLyogI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+ICovCisKICNpbmNsdWRlICJuZXRzaC5oIgogI2luY2x1ZGUgIm5ldGxpYi5oIgogCkBAIC01NSw3ICs2MSw3IEBACiBzdGF0aWMgbWFjaF9wb3J0X3QgbGliX2hvc3RfcG9ydDsKIAogdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKK2NwdV91dGlsX2luaXQodm9pZCkKIHsKICAgbGliX2hvc3RfcG9ydCA9IG1hY2hfaG9zdF9zZWxmKCk7CiAgIHJldHVybjsKQEAgLTk2LDcgKzEwMiw3IEBACiBmbG9hdAogY2FsaWJyYXRlX2lkbGVfcmF0ZShpbnQgaXRlcmF0aW9ucywgaW50IGludGVydmFsKQogewotICAgIHJldHVybiAoZmxvYXQpMC4wOyAgIAorICAgIHJldHVybiAoZmxvYXQpMC4wOwogfQogCiBmbG9hdApAQCAtMTA1LDE1ICsxMTEsMTYgQEAKICAgZmxvYXQgY29ycmVjdGlvbl9mYWN0b3I7CiAgIG5hdHVyYWxfdAl1c2VydGlja3MsIHN5c3RpY2tzLCBpZGxldGlja3MsIHRvdGFsdGlja3M7CiAKLSAgbGliX2xvY2FsX2NwdV91dGlsID0gKGZsb2F0KTAuMDsKLSAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiAqLwotICAvKiB0aGUgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiAqLwotICAvKiBjYWxjdWxhdGlvbnMgLSBmb3IgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5ICovCi0gIC8qIHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSAqLwotICAvKiB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZSBzaG91bGQgYmUuICovCi0gIAorICBtZW1zZXQoJmxpYl9sb2NhbF9jcHVfc3RhdHMsIDAsIHNpemVvZihsaWJfbG9jYWxfY3B1X3N0YXRzKSk7CisKKyAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiB0aGUKKyAgICAgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiBjYWxjdWxhdGlvbnMgLSBmb3IKKyAgICAgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5IHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAKKyAgICAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZQorICAgICBzaG91bGQgYmUuICovCisKICAgaWYgKGVsYXBzZWRfdGltZSAhPSAwLjApIHsKLSAgICBjb3JyZWN0aW9uX2ZhY3RvciA9IChmbG9hdCkgMS4wICsgCisgICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArCiAgICAgICAoKGxpYl9lbGFwc2VkIC0gZWxhcHNlZF90aW1lKSAvIGVsYXBzZWRfdGltZSk7CiAgIH0KICAgZWxzZSB7CkBAIC0xMzAsMTAgKzEzNywxMSBAQAogICBpZGxldGlja3MgPSBVTlNJR05FRF9ESUZGRVJFTkNFKGxpYl9lbmRfdGlja3MuY3B1X3RpY2tzW0NQVV9TVEFURV9JRExFXSwgbGliX3N0YXJ0X3RpY2tzLmNwdV90aWNrc1tDUFVfU1RBVEVfSURMRV0pOwogICB0b3RhbHRpY2tzID0gdXNlcnRpY2tzICsgc3lzdGlja3MgKyBpZGxldGlja3M7CiAKLSAgbGliX2xvY2FsX2NwdV91dGlsID0gKChmbG9hdCl1c2VydGlja3MgKyAoZmxvYXQpc3lzdGlja3MpLyhmbG9hdCl0b3RhbHRpY2tzICogMTAwLjBmOwotICBsaWJfbG9jYWxfY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgPSAoKGZsb2F0KXVzZXJ0aWNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGZsb2F0KXN5c3RpY2tzKS8oZmxvYXQpdG90YWx0aWNrcyAqIDEwMC4wZjsKKyAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKIAotICByZXR1cm4gbGliX2xvY2FsX2NwdV91dGlsOworICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIAogfQogdm9pZApkaWZmIC0tZ2l0IGEvbmV0Y3B1X3BlcmZzdGF0LmMgYi9zcmMvbmV0Y3B1X3BlcmZzdGF0LmMKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gbmV0Y3B1X3BlcmZzdGF0LmMKcmVuYW1lIHRvIHNyYy9uZXRjcHVfcGVyZnN0YXQuYwppbmRleCBmOTI4YTI1Li5lMGUzMzk5IDEwMDY0NAotLS0gYS9uZXRjcHVfcGVyZnN0YXQuYworKysgYi9zcmMvbmV0Y3B1X3BlcmZzdGF0LmMKQEAgLTEsNSArMSw1IEBACiBjaGFyICAgbmV0Y3B1X3BlcmZzdGF0X2lkW109IlwKLUAoIyluZXRjcHVfcGVyZnN0YXQuYyBWZXJzaW9uIDIuNC4wIjsKK0AoIyluZXRjcHVfcGVyZnN0YXQuYyBWZXJzaW9uIDIuNi4wIjsKIAogI2lmIEhBVkVfQ09ORklHX0gKICMgaW5jbHVkZSA8Y29uZmlnLmg+CkBAIC0zMSw3ICszMSw3IEBACiAjIGlmbmRlZiBMT05HX0xPTkdfTUFYCiAjICBkZWZpbmUgTE9OR19MT05HX01BWCBMTE9OR19NQVgKICMgZW5kaWYgLyogTE9OR19MT05HX01BWCAqLwotI2VuZGlmIAorI2VuZGlmCiAKICNpbmNsdWRlIDxlcnJuby5oPgogCkBAIC00OCw3ICs0OCw3IEBACiAKIAogdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKK2NwdV91dGlsX2luaXQodm9pZCkKIHsKICAgcmV0dXJuOwogfQpAQCAtNjUsMTQgKzY1LDE0IEBACiAgIHJldHVybiBQRVJGU1RBVDsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGdldF9jcHVfaWRsZSh1aW50NjRfdCAqcmVzKQogewogICBwZXJmc3RhdF9jcHVfdCAqcGVyZnN0YXRfYnVmZmVyOwogICBwZXJmc3RhdF9jcHVfdCAqcGVyX2NwdV9wb2ludGVyOwogICBwZXJmc3RhdF9pZF90ICBuYW1lOwogICBpbnQgaSxyZXQ7Ci0gIAorCiAgIC8qIGEgbmFtZSBvZiAiIiB3aWxsIGNhdXNlIHVzIHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyAqLwogICBzdHJjcHkobmFtZS5uYW1lLCIiKTsKICAgcGVyZnN0YXRfYnVmZmVyID0gKHBlcmZzdGF0X2NwdV90ICopbWFsbG9jKGxpYl9udW1fbG9jX2NwdXMgKgpAQCAtODQsMTQgKzg0LDE0IEBACiAgICAgZmZsdXNoKHdoZXJlKTsKICAgICBleGl0KC0xKTsKICAgfQotICAKKwogICAvKiBoYXBwaW5lc3MgYW5kIGpveSwga2VlcCBnb2luZyAqLwogICByZXQgPSBwZXJmc3RhdF9jcHUoJm5hbWUsCiAJCSAgICAgcGVyZnN0YXRfYnVmZmVyLAogCQkgICAgIHNpemVvZihwZXJmc3RhdF9jcHVfdCksCiAJCSAgICAgbGliX251bV9sb2NfY3B1cyk7Ci0gIAotICBpZiAoKHJldCA9PSAtMSkgfHwgCisKKyAgaWYgKChyZXQgPT0gLTEpIHx8CiAgICAgICAocmV0ICE9IGxpYl9udW1fbG9jX2NwdXMpKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgImNwdV9zdGFydDogcGVyZnN0YXRfY3B1IGZhaWxlZC9jb3VudCBvZmY7IGVycm5vICVkIGNwdXMgJWQgY291bnQgJWRcbiIsCkBAIC0xMDEsMTQgKzEwMSwxNCBAQAogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgtMSk7CiAgIH0KLSAgCisKICAgcGVyX2NwdV9wb2ludGVyID0gcGVyZnN0YXRfYnVmZmVyOwogICBmb3IgKGkgPSAwOyBpIDwgbGliX251bV9sb2NfY3B1czsgaSsrKXsKICAgICByZXNbaV0gPSBwZXJfY3B1X3BvaW50ZXItPmlkbGU7CiAgICAgcGVyX2NwdV9wb2ludGVyKys7CiAgIH0KICAgZnJlZShwZXJmc3RhdF9idWZmZXIpOwotICAKKwogICByZXR1cm47CiB9CiAKQEAgLTExOSwyMCArMTE5LDIwIEBACiAgICAgZmlyc3RjbnRbTUFYQ1BVU10sCiAgICAgc2Vjb25kY250W01BWENQVVNdOwogCi0gIGZsb2F0IAorICBmbG9hdAogICAgIGVsYXBzZWQsCiAgICAgdGVtcF9yYXRlLAogICAgIHJhdGVbTUFYVElNRVNdLAogICAgIGxvY2FsX21heHJhdGU7CiAKLSAgbG9uZyAgCisgIGxvbmcKICAgICBzZWMsCiAgICAgdXNlYzsKIAotICBpbnQgICAKKyAgaW50CiAgICAgaSwKICAgICBqOwotICAKKwogICBzdHJ1Y3QgIHRpbWV2YWwgdGltZTEsIHRpbWUyIDsKICAgc3RydWN0ICB0aW1lem9uZSB0ejsKIApAQCAtMTQwLDcgKzE0MCw3IEBACiAgIHBlcmZzdGF0X2NwdV90ICAqcGVyX2NwdV9wb2ludGVyOwogICBwZXJmc3RhdF9pZF90ICAgbmFtZTsKICAgaW50IHJldDsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwiZW50ZXIgY2FsaWJyYXRlX3BlcmZzdGF0XG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtMTUxLDcgKzE1MSw3IEBACiAgIH0KIAogICBsb2NhbF9tYXhyYXRlID0gKGZsb2F0KS0xLjA7Ci0gIAorCiAgIHBlcmZzdGF0X2J1ZmZlciA9IChwZXJmc3RhdF9jcHVfdCAqKW1hbGxvYyhsaWJfbnVtX2xvY19jcHVzICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwZXJmc3RhdF9jcHVfdCkpOwogICBpZiAocGVyZnN0YXRfYnVmZmVyID09IE5VTEwpIHsKQEAgLTE2NiwxNCArMTY2LDE0IEBACiAgICAgcmF0ZVtpXSA9IChmbG9hdCkwLjA7CiAgICAgLyogYSBuYW1lIG9mICIiIHdpbGwgY2F1c2UgdXMgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nICovCiAgICAgc3RyY3B5KG5hbWUubmFtZSwiIik7Ci0gICAgIAorCiAgICAgLyogaGFwcGluZXNzIGFuZCBqb3ksIGtlZXAgZ29pbmcgKi8KICAgICByZXQgPSBwZXJmc3RhdF9jcHUoJm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZzdGF0X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHBlcmZzdGF0X2NwdV90KSwKICAgICAgICAgICAgICAgICAgICAgICAgbGliX251bV9sb2NfY3B1cyk7Ci0gICAgCi0gICAgaWYgKChyZXQgPT0gLTEpIHx8IAorCisgICAgaWYgKChyZXQgPT0gLTEpIHx8CiAgICAgICAgIChyZXQgIT0gbGliX251bV9sb2NfY3B1cykpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAgICAgICAgICAgICAgICJjYWxpYnJhdGVfcGVyZnN0YXQ6IHBlcmZzdGF0X2NwdSBmYWlsZWQvY291bnQgb2ZmOyBlcnJubyAlZCBjcHVzICVkIGNvdW50ICVkXG4iLApAQCAtMjA3LDggKzIwNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZzdGF0X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHBlcmZzdGF0X2NwdV90KSwKICAgICAgICAgICAgICAgICAgICAgICAgbGliX251bV9sb2NfY3B1cyk7Ci0gICAgCi0gICAgaWYgKChyZXQgPT0gLTEpIHx8IAorCisgICAgaWYgKChyZXQgPT0gLTEpIHx8CiAgICAgICAgIChyZXQgIT0gbGliX251bV9sb2NfY3B1cykpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAgICAgICAgICAgICAgICJjYWxpYnJhdGVfcGVyZnN0YXQ6IHBlcmZzdGF0X2NwdSBmYWlsZWQvY291bnQgb2ZmOyBlcnJubyAlZCBjcHVzICVkIGNvdW50ICVkXG4iLApAQCAtMjIwLDE5ICsyMjAsMjMgQEAKICAgICB9CiAKICAgICBwZXJfY3B1X3BvaW50ZXIgPSBwZXJmc3RhdF9idWZmZXI7Ci0gICAgCisKICAgICBpZihkZWJ1ZykgewotICAgICAgZnByaW50Zih3aGVyZSwgIkNhbGlicmF0aW9uIGZvciBwZXJmc3RhdCBjb3VudGVyIHJ1bjogJWRcbiIsaSk7Ci0gICAgICBmcHJpbnRmKHdoZXJlLCJcdHNlYyA9ICVsZCB1c2VjID0gJWxkXG4iLHNlYyx1c2VjKTsKLSAgICAgIGZwcmludGYod2hlcmUsIlx0ZWxhcHNlZCB0aW1lID0gJWdcbiIsZWxhcHNlZCk7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJDYWxpYnJhdGlvbiBmb3IgcGVyZnN0YXQgY291bnRlciBydW46ICVkXG4iCisJICAgICAgIlx0c2VjID0gJWxkIHVzZWMgPSAlbGRcbiIKKwkgICAgICAiXHRlbGFwc2VkIHRpbWUgPSAlZ1xuIiwKKwkgICAgICBpLAorCSAgICAgIHNlYyx1c2VjLAorCSAgICAgIGVsYXBzZWQpOwogICAgIH0KIAogICAgIGZvciAoaiA9IDA7IGogPCBsaWJfbnVtX2xvY19jcHVzOyBqKyspIHsKICAgICAgIHNlY29uZGNudFtqXSA9IHBlcl9jcHVfcG9pbnRlci0+aWRsZTsKICAgICAgIHBlcl9jcHVfcG9pbnRlcisrOwogICAgICAgaWYoZGVidWcpIHsKLSAgICAgICAgLyogSSBrbm93IHRoYXQgdGhlcmUgYXJlIHNpdHVhdGlvbnMgd2hlcmUgY29tcGlsZXJzIGtub3cgYWJvdXQgKi8KLSAgICAgICAgLyogbG9uZyBsb25nLCBidXQgdGhlIGxpYnJhcnkgZnVuY3Rpb25zIGRvIG5vdC4uLiByYWogNC85NSAqLworICAgICAgICAvKiBJIGtub3cgdGhhdCB0aGVyZSBhcmUgc2l0dWF0aW9ucyB3aGVyZSBjb21waWxlcnMga25vdyBhYm91dAorICAgICAgICAgICBsb25nIGxvbmcsIGJ1dCB0aGUgbGlicmFyeSBmdW5jdGlvbnMgZG8gbm90Li4uIHJhaiA0Lzk1ICovCiAgICAgICAgIGZwcmludGYod2hlcmUsCiAgICAgICAgICAgICAgICAgIlx0Zmlyc3RjbnRbJWRdID0gMHglOC44bHglOC44bHggc2Vjb25kY250WyVkXSA9IDB4JTguOGx4JTguOGx4XG4iLAogICAgICAgICAgICAgICAgIGosCkBAIC0yNDIsMTAgKzI0NiwxMCBAQAogICAgICAgICAgICAgICAgIHNlY29uZGNudFtqXSwKICAgICAgICAgICAgICAgICBzZWNvbmRjbnRbal0pOwogICAgICAgfQotICAgICAgLyogd2UgYXNzdW1lIHRoYXQgaXQgd291bGQgd3JhcCBubyBtb3JlIHRoYW4gb25jZS4gd2UgYWxzbyAqLwotICAgICAgLyogYXNzdW1lIHRoYXQgdGhlIHJlc3VsdCBvZiBzdWJ0cmFjdGluZyB3aWxsICJmaXQiIHJhaiA0Lzk1ICovCisgICAgICAvKiB3ZSBhc3N1bWUgdGhhdCBpdCB3b3VsZCB3cmFwIG5vIG1vcmUgdGhhbiBvbmNlLiB3ZSBhbHNvCisJIGFzc3VtZSB0aGF0IHRoZSByZXN1bHQgb2Ygc3VidHJhY3Rpbmcgd2lsbCAiZml0IiByYWogNC85NSAqLwogICAgICAgdGVtcF9yYXRlID0gKHNlY29uZGNudFtqXSA+PSBmaXJzdGNudFtqXSkgPwotICAgICAgICAoZmxvYXQpKHNlY29uZGNudFtqXSAtIGZpcnN0Y250W2pdKS9lbGFwc2VkIDogCisgICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdIC0gZmlyc3RjbnRbal0pL2VsYXBzZWQgOgogICAgICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdLWZpcnN0Y250W2pdK01BWExPTkcpL2VsYXBzZWQ7CiAgICAgICBpZiAodGVtcF9yYXRlID4gcmF0ZVtpXSkgcmF0ZVtpXSA9IHRlbXBfcmF0ZTsKICAgICAgIGlmKGRlYnVnKSB7CkBAIC0yNzEsMTIgKzI3NSwxMyBAQAogICBmbG9hdCBhY3R1YWxfcmF0ZTsKICAgZmxvYXQgY29ycmVjdGlvbl9mYWN0b3I7CiAKLSAgbGliX2xvY2FsX2NwdV91dGlsID0gKGZsb2F0KTAuMDsKLSAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiAqLwotICAvKiB0aGUgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiAqLwotICAvKiBjYWxjdWxhdGlvbnMgLSBmb3IgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5ICovCi0gIC8qIHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSAqLwotICAvKiB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZSBzaG91bGQgYmUuICovCisgIG1lbXNldCgmbGliX2xvY2FsX2NwdV9zdGF0cywgMCwgc2l6ZW9mKGxpYl9sb2NhbF9jcHVfc3RhdHMpKTsKKworICAvKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsaWJyYXJ5IG1lYXN1cmVkIGEgdGltZSBvdGhlciB0aGFuIHRoZQorICAgICBvbmUgdGhhdCB0aGUgdXNlciB3YW50IGZvciB0aGUgY3B1IHV0aWxpemF0aW9uIGNhbGN1bGF0aW9ucyAtIGZvcgorICAgICBleGFtcGxlLCB0ZXN0cyB0aGF0IHdlcmUgZW5kZWQgYnkgd2F0Y2hkb2cgdGltZXJzIHN1Y2ggYXMgdGhlIHVkcAorICAgICBzdHJlYW0gdGVzdC4gV2UgbGV0IHRoZXNlIHRlc3RzIHRlbGwgdXAgd2hhdCB0aGUgZWxhcHNlZCB0aW1lCisgICAgIHNob3VsZCBiZS4gKi8KIAogICBpZiAoZWxhcHNlZF90aW1lICE9IDAuMCkgewogICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKwpAQCAtMjg2LDE0ICsyOTEsMTMgQEAKICAgICBjb3JyZWN0aW9uX2ZhY3RvciA9IChmbG9hdCkgMS4wOwogICB9CiAKLSAgLyogdGhpcyBsb29rcyBqdXN0IGxpa2UgdGhlIGxvb3BlciBjYXNlLiBhdCBsZWFzdCBJIHRoaW5rIGl0ICovCi0gIC8qIHNob3VsZCA6KSByYWogNC85NSAqLworICAvKiB0aGlzIGxvb2tzIGp1c3QgbGlrZSB0aGUgbG9vcGVyIGNhc2UuIGF0IGxlYXN0IEkgdGhpbmsgaXQgc2hvdWxkCisgICAgIDopIHJhaiA0Lzk1ICovCiAgIGZvciAoaSA9IDA7IGkgPCBsaWJfbnVtX2xvY19jcHVzOyBpKyspIHsKIAotICAgIC8qIHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gYXJlIG5vdCBtb3JlIHRoYW4gYSBsb25nIGFwYXJ0LiBJICovCi0gICAgLyoga25vdyB0aGF0IHRoaXMgaXMgYmFkLCBidXQgdHJ5aW5nIHRvIGdvIGZyb20gbG9uZyBsb25ncyB0byAqLwotICAgIC8qIGEgZmxvYXQgKHBlcmhhcHMgYSBkb3VibGUpIGlzIGJvZ2dsaW5nIG15IG1pbmQgcmlnaHQgbm93LiAqLwotICAgIC8qIHJhaiA0Lzk1ICovCisgICAgLyogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBhcmUgbm90IG1vcmUgdGhhbiBhIGxvbmcgYXBhcnQuIEkga25vdworICAgICAgIHRoYXQgdGhpcyBpcyBiYWQsIGJ1dCB0cnlpbmcgdG8gZ28gZnJvbSBsb25nIGxvbmdzIHRvIGEgZmxvYXQKKyAgICAgICAocGVyaGFwcyBhIGRvdWJsZSkgaXMgYm9nZ2xpbmcgbXkgbWluZCByaWdodCBub3cuICByYWogNC85NSAqLwogCiAgICAgbG9uZyBsb25nCiAgICAgICBkaWZmOwpAQCAtMzA3LDcgKzMxMSw3IEBACiAgICAgYWN0dWFsX3JhdGUgPSAoZmxvYXQpIGRpZmYgLyBsaWJfZWxhcHNlZDsKICAgICBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldID0gKGxpYl9sb2NhbF9tYXhyYXRlIC0gYWN0dWFsX3JhdGUpIC8KICAgICAgIGxpYl9sb2NhbF9tYXhyYXRlICogMTAwOwotICAgIGxpYl9sb2NhbF9jcHVfdXRpbCArPSBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldOworICAgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgKz0gbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXTsKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAgICAgICAgICAgICAgICJjYWxjX2NwdV91dGlsOiBhY3R1YWxfcmF0ZSBvbiBjcHUgJWQgaXMgJWcgbWF4X3JhdGUgJWcgY3B1ICU2LjJmXG4iLApAQCAtMzE5LDIxICszMjMsMjIgQEAKICAgfQogCiAgIC8qIHdlIHdhbnQgdGhlIGF2ZXJhZ2UgYWNyb3NzIGFsbCBuIHByb2Nlc3NvcnMgKi8KLSAgbGliX2xvY2FsX2NwdV91dGlsIC89IChmbG9hdClsaWJfbnVtX2xvY19jcHVzOwotICAKLSAgaWYgKGRlYnVnKSB7Ci0gICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJjYWxjX2NwdV91dGlsOiBhdmVyYWdlIGFjcm9zcyBDUFVzIGlzICVnXG4iLGxpYl9sb2NhbF9jcHVfdXRpbCk7Ci0gIH0KLQotICBsaWJfbG9jYWxfY3B1X3V0aWwgKj0gY29ycmVjdGlvbl9mYWN0b3I7CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7CiAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJjYWxjX2NwdV91dGlsOiByZXR1cm5pbmcgJWdcbiIsbGliX2xvY2FsX2NwdV91dGlsKTsKKyAgICAgICAgICAgICJjYWxjX2NwdV91dGlsOiBhdmVyYWdlIGFjcm9zcyBDUFVzIGlzICVnXG4iLAorICAgICAgICAgICAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCk7CiAgIH0KIAotICByZXR1cm4gbGliX2xvY2FsX2NwdV91dGlsOworICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsICo9IGNvcnJlY3Rpb25fZmFjdG9yOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisgICAgICAgICAgICAiY2FsY19jcHVfdXRpbDogcmV0dXJuaW5nICVnXG4iLGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWwpOworICB9CisKKyAgcmV0dXJuIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3V0aWw7CiAKIH0KIHZvaWQKQEAgLTM0MiwxMCArMzQ3LDkgQEAKICAgZ2V0X2NwdV9pZGxlKGxpYl9zdGFydF9jb3VudCk7CiAgIHJldHVybjsKIH0KLSAKKwogdm9pZAogY3B1X3N0b3BfaW50ZXJuYWwodm9pZCkKIHsKICAgZ2V0X2NwdV9pZGxlKGxpYl9lbmRfY291bnQpOwogfQotCmRpZmYgLS1naXQgYS9zcmMvbmV0Y3B1X3Byb2NzdGF0LmMgYi9zcmMvbmV0Y3B1X3Byb2NzdGF0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiYzQ1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9uZXRjcHVfcHJvY3N0YXQuYwpAQCAtMCwwICsxLDM2NyBAQAorY2hhciAgIG5ldGNwdV9wcm9jc3RhdF9pZFtdPSJcCitAKCMpbmV0Y3B1X3Byb2NzdGF0LmMgKGMpIENvcHlyaWdodCAyMDA1LTIwMTIgVmVyc2lvbiAyLjYuMCI7CisKKy8qIG5ldGNwdV9wcm9jc3RhdC5jCisKKyAgIEltcGxlbWVudCB0aGUgL3Byb2Mvc3RhdCBzcGVjaWZpYyBwb3J0aW9ucyBvZiBuZXRwZXJmIENQVQorICAgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLiBUaGVzZSBhcmUgYnJva2VuLW91dCBpbnRvIGEgc2VwYXJhdGUgZmlsZQorICAgdG8gbWFrZSBsaWZlIG11Y2ggbmljZXIgb3ZlciBpbiBuZXRsaWIuYyB3aGljaCBoYWQgYmVjb21lIGEgbWF6ZSBvZgorICAgdHdpc3R5LCBDUFUtdXRpbC1yZWxhdGVkLCAjaWZkZWZzLCBhbGwgZGlmZmVyZW50LiAgcmFqIDIwMDUtMDEtMjYKKyAgICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiBIQVZFX0ZDTlRMX0gKKyMgaW5jbHVkZSA8ZmNudGwuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAibmV0c2guaCIKKyNpbmNsdWRlICJuZXRsaWIuaCIKKworLyogdGhlIGxpYl9zdGFydF9jb3VudCBhbmQgbGliX2VuZF9jb3VudCBhcnJheXMgaG9sZCB0aGUgc3RhcnRpbmcKKyAgIGFuZCBlbmRpbmcgdmFsdWVzIG9mIHdoYXRldmVyIGlzIGNvdW50aW5nIHdoZW4gdGhlIHN5c3RlbSBpcworICAgaWRsZS4gVGhlIHJhdGUgYXQgd2hpY2ggdGhpcyBpbmNyZW1lbnRzIGR1cmluZyBhIHRlc3QgaXMgY29tcGFyZWQKKyAgIHdpdGggYSBwcmV2aW91cyBjYWxpYnJhcmlvbiB0byBhcnJpdmUgYXQgYSBDUFUgdXRpbGl6YXRpb24KKyAgIHBlcmNlbnRhZ2UuIHJhaiAyMDA1LTAxLTI2ICovCisKKyNkZWZpbmUgSURMRV9JRFggNAorI2RlZmluZSBDUFVfU1RBVEVTIDEwCisKK3R5cGVkZWYgc3RydWN0IGNwdV9zdGF0ZXMKK3sKKyAgdWludDY0X3QgICAgIAl1c2VyOworICB1aW50NjRfdCAgICAgCW5pY2U7CisgIHVpbnQ2NF90ICAgICAJc3lzOworICB1aW50NjRfdCAgICAgCWlkbGU7CisgIHVpbnQ2NF90ICAgICAJaW93YWl0OworICB1aW50NjRfdCAgICAgCWhhcmRfaXJxOworICB1aW50NjRfdCAgICAgCXNvZnRfaXJxOworICB1aW50NjRfdCAgICAgCXN0ZWFsOworICB1aW50NjRfdCAgICAgCWd1ZXN0OworICB1aW50NjRfdCAgICAgCWd1ZXN0X25pY2U7Cit9IGNwdV9zdGF0ZXNfdDsKKworc3RhdGljIGNwdV9zdGF0ZXNfdCAgbGliX3N0YXJ0X2NvdW50W01BWENQVVNdOworc3RhdGljIGNwdV9zdGF0ZXNfdCAgbGliX2VuZF9jb3VudFtNQVhDUFVTXTsKKworCisvKiBUaGUgbWF4LiBsZW5ndGggb2Ygb25lIGxpbmUgb2YgL3Byb2Mvc3RhdCBjcHUgb3V0cHV0ICovCisjZGVmaW5lIENQVV9MSU5FX0xFTkdUSCAoaW50KSgoQ1BVX1NUQVRFUyAqIHNpemVvZiAobG9uZykgLyAzICsgMSkgKiA0ICsgOCkKKyNkZWZpbmUgUFJPQ19TVEFUX0ZJTEVfTkFNRSAiL3Byb2Mvc3RhdCIKKyNkZWZpbmUgTl9DUFVfTElORVMobnIpIChuciA9PSAxID8gMSA6IDEgKyBucikKKworc3RhdGljIGludCBwcm9jX3N0YXRfZmQgPSAtMTsKK3N0YXRpYyBjaGFyICpwcm9jX3N0YXRfYnVmID0gTlVMTDsKK3N0YXRpYyBpbnQgcHJvY19zdGF0X2J1ZmxlbiA9IDA7CisKK3ZvaWQKK2NwdV91dGlsX2luaXQodm9pZCkKK3sKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiY3B1X3V0aWxfaW5pdCBlbnRlciwgcHJvY19zdGF0X2ZkICVkIHByb2Nfc3RhdF9idWYgJXBcbiIsCisJICAgIHByb2Nfc3RhdF9mZCwKKwkgICAgcHJvY19zdGF0X2J1Zik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgeworICAgIHByb2Nfc3RhdF9mZCA9IG9wZW4gKFBST0NfU1RBVF9GSUxFX05BTUUsIE9fUkRPTkxZLCBOVUxMKTsKKyAgICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXMhXG4iLCBQUk9DX1NUQVRfRklMRV9OQU1FKTsKKyAgICAgIGV4aXQgKDEpOworICAgIH07CisgIH07CisKKyAgaWYgKCFwcm9jX3N0YXRfYnVmKSB7CisgICAgcHJvY19zdGF0X2J1ZmxlbiA9IE5fQ1BVX0xJTkVTIChsaWJfbnVtX2xvY19jcHVzKSAqIENQVV9MSU5FX0xFTkdUSDsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgImxpYl9udW1fbG9jX2NwdXMgJWQgbGluZXMgJWQgQ1BVX0xJTkVfTEVOR1RIICVkIHByb2Nfc3RhdF9idWZsZW4gJWRcbiIsCisJICAgICAgbGliX251bV9sb2NfY3B1cywKKwkgICAgICBOX0NQVV9MSU5FUyhsaWJfbnVtX2xvY19jcHVzKSwKKwkgICAgICBDUFVfTElORV9MRU5HVEgsCisJICAgICAgcHJvY19zdGF0X2J1Zmxlbik7CisgICAgICBmZmx1c2god2hlcmUpOworICAgIH0KKyAgICBwcm9jX3N0YXRfYnVmID0gKGNoYXIgKiltYWxsb2MgKHByb2Nfc3RhdF9idWZsZW4pOworICAgIGlmICghcHJvY19zdGF0X2J1ZikgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQ2Fubm90IGFsbG9jYXRlIGJ1ZmZlciBtZW1vcnkhXG4iKTsKKyAgICAgIGV4aXQgKDEpOworICAgIH0KKyAgfQorICByZXR1cm47Cit9CisKK3ZvaWQKK2NwdV91dGlsX3Rlcm1pbmF0ZSh2b2lkKQoreworICBjbG9zZShwcm9jX3N0YXRfZmQpOworICBwcm9jX3N0YXRfZmQgPSAtMTsKKyAgZnJlZShwcm9jX3N0YXRfYnVmKTsKKyAgcHJvY19zdGF0X2J1ZiA9IE5VTEw7CisgIHJldHVybjsKK30KKworaW50CitnZXRfY3B1X21ldGhvZCgpCit7CisgIHJldHVybiBQUk9DX1NUQVQ7Cit9CisKK2Zsb2F0CitjYWxpYnJhdGVfaWRsZV9yYXRlIChpbnQgaXRlcmF0aW9ucywgaW50IGludGVydmFsKQoreworICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgeworICAgIHByb2Nfc3RhdF9mZCA9IG9wZW4gKFBST0NfU1RBVF9GSUxFX05BTUUsIE9fUkRPTkxZLCBOVUxMKTsKKyAgICBpZiAocHJvY19zdGF0X2ZkIDwgMCkgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXMhXG4iLCBQUk9DX1NUQVRfRklMRV9OQU1FKTsKKyAgICAgIGV4aXQgKDEpOworICAgIH07CisgIH07CisKKyAgaWYgKCFwcm9jX3N0YXRfYnVmKSB7CisgICAgcHJvY19zdGF0X2J1ZmxlbiA9IE5fQ1BVX0xJTkVTIChsaWJfbnVtX2xvY19jcHVzKSAqIENQVV9MSU5FX0xFTkdUSDsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgImNhbGlicmF0ZTogbGliX251bV9sb2NfY3B1cyAlZCBsaW5lcyAlZCBDUFVfTElORV9MRU5HVEggJWQgcHJvY19zdGF0X2J1ZmxlbiAlZFxuIiwKKwkgICAgICBsaWJfbnVtX2xvY19jcHVzLAorCSAgICAgIE5fQ1BVX0xJTkVTKGxpYl9udW1fbG9jX2NwdXMpLAorCSAgICAgIENQVV9MSU5FX0xFTkdUSCwKKwkgICAgICBwcm9jX3N0YXRfYnVmbGVuKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorICAgIHByb2Nfc3RhdF9idWYgPSAoY2hhciAqKW1hbGxvYyAocHJvY19zdGF0X2J1Zmxlbik7CisgICAgaWYgKCFwcm9jX3N0YXRfYnVmKSB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJDYW5ub3QgYWxsb2NhdGUgYnVmZmVyIG1lbW9yeSFcbiIpOworICAgICAgZXhpdCAoMSk7CisgICAgfTsKKyAgfTsKKworICByZXR1cm4gc3lzY29uZiAoX1NDX0NMS19UQ0spOworfQorCitzdGF0aWMgdm9pZAorZ2V0X2NwdSAoY3B1X3N0YXRlc190ICpyZXMpCit7CisgIGludCBpOworICBpbnQgbiA9IGxpYl9udW1fbG9jX2NwdXM7CisgIGNoYXIgKnAgPSBwcm9jX3N0YXRfYnVmOworCisgIGxzZWVrIChwcm9jX3N0YXRfZmQsIDAsIFNFRUtfU0VUKTsKKyAgcmVhZCAocHJvY19zdGF0X2ZkLCBwLCBwcm9jX3N0YXRfYnVmbGVuKTsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCJwcm9jX3N0YXRfYnVmICclLipzJ1xuIixwcm9jX3N0YXRfYnVmbGVuLHApOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKyAgLyogU2tpcCBmaXJzdCBsaW5lICh0b3RhbCkgb24gU01QICovCisgIGlmIChuID4gMSkgcCA9IHN0cmNociAocCwgJ1xuJyk7CisKKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIG1lbXNldCgmcmVzW2ldLCAwLCBzaXplb2YgKHJlc1tpXSkpOworICAgIHAgPSBzdHJjaHIgKHAsICcgJyk7CisgICAgc3NjYW5mKHAsICIlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1IiwKKwkgICAodW5zaWduZWQgbG9uZyBsb25nICopJnJlc1tpXS51c2VyLAorCSAgICh1bnNpZ25lZCBsb25nIGxvbmcgKikmcmVzW2ldLm5pY2UsCisJICAgKHVuc2lnbmVkIGxvbmcgbG9uZyAqKSZyZXNbaV0uc3lzLAorCSAgICh1bnNpZ25lZCBsb25nIGxvbmcgKikmcmVzW2ldLmlkbGUsCisJICAgKHVuc2lnbmVkIGxvbmcgbG9uZyAqKSZyZXNbaV0uaW93YWl0LAorCSAgICh1bnNpZ25lZCBsb25nIGxvbmcgKikmcmVzW2ldLmhhcmRfaXJxLAorCSAgICh1bnNpZ25lZCBsb25nIGxvbmcgKikmcmVzW2ldLnNvZnRfaXJxLAorCSAgICh1bnNpZ25lZCBsb25nIGxvbmcgKikmcmVzW2ldLnN0ZWFsLAorCSAgICh1bnNpZ25lZCBsb25nIGxvbmcgKikmcmVzW2ldLmd1ZXN0LAorICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nICopJnJlc1tpXS5ndWVzdF9uaWNlKTsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgInJlc1slZF0gaXMgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdVxuIiwKKwkgICAgICBpLAorCSAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpcmVzW2ldLnVzZXIsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNbaV0ubmljZSwKKwkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXJlc1tpXS5zeXMsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNbaV0uaWRsZSwKKwkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXJlc1tpXS5pb3dhaXQsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNbaV0uaGFyZF9pcnEsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNbaV0uc29mdF9pcnEsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNbaV0uc3RlYWwsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNbaV0uZ3Vlc3QsCisgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpcmVzW2ldLmd1ZXN0X25pY2UpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgICAgcCA9IHN0cmNociAocCwgJ1xuJyk7CisgIH07CisKK30KKworLyogdGFrZSB0aGUgaW5pdGlhbCB0aW1lc3RhbXAgYW5kIHN0YXJ0IGNvbGxlY3RpbmcgQ1BVIHV0aWxpemF0aW9uIGlmCisgICByZXF1ZXN0ZWQgKi8KKwordm9pZAorbWVhc3VyZV9jcHVfc3RhcnQoKQoreworICBjcHVfbWV0aG9kID0gUFJPQ19TVEFUOworICBnZXRfY3B1KGxpYl9zdGFydF9jb3VudCk7Cit9CisKKy8qIGNvbGxlY3QgZmluYWwgQ1BVIHV0aWxpemF0aW9uIHJhdyBkYXRhICovCit2b2lkCittZWFzdXJlX2NwdV9zdG9wKCkKK3sKKyAgZ2V0X2NwdShsaWJfZW5kX2NvdW50KTsKK30KKworc3RhdGljIHVpbnQ2NF90Cit0aWNrX3N1YnRyYWN0KHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBlbmQpCit7CisgIGlmIChlbmQgPj0gc3RhcnQgfHwgKHN0YXJ0ICYgMHhmZmZmZmZmZjAwMDAwMDAwVUxMKSkKKyAgICByZXR1cm4gKGVuZCAtIHN0YXJ0KTsKKworICAvKgorICAgKiAgV2Ugd3JhcHBlZCwgYW5kIGl0IGlzIGxpa2VseSB0aGF0IHRoZSBrZXJuZWwgaXMgc3VwcGxpbmcgMzItYml0CisgICAqICBjb3VudGVycywgYmVjYXVzZSAic3RhcnQiIGlzIGxlc3MgdGhhbiAzMi1iaXRzIHdpZGUuICBJZiB0aGF0J3MKKyAgICogIHRoZSBjYXNlLCB0aGVuIGhhbmRsZSB0aGUgd3JhcCBieSBzdWJ0cmFjdGluZyBvZmYgZXZlcnl0aGluZyBidXQKKyAgICogIHRoZSBsb3dlciAzMi1iaXRzIHNvIGFzIHRvIGdldCBiYWNrIHRvIHVuc2lnbmVkIDMyLWJpdAorICAgKiAgYXJpdGhtZXRpYy4KKyAgICovCisgIHJldHVybiAoZW5kIC0gc3RhcnQgKyAgMHhmZmZmZmZmZjAwMDAwMDAwVUxMKTsKK30KKworZmxvYXQKK2NhbGNfY3B1X3V0aWxfaW50ZXJuYWwoZmxvYXQgZWxhcHNlZF90aW1lKQoreworICBpbnQgaTsKKworICBmbG9hdCBjb3JyZWN0aW9uX2ZhY3RvcjsKKyAgY3B1X3N0YXRlc190IGRpZmY7CisgIHVpbnQ2NF90IHRvdGFsX3RpY2tzOworCisgIG1lbXNldCgmbGliX2xvY2FsX2NwdV9zdGF0cywgMCwgc2l6ZW9mKGxpYl9sb2NhbF9jcHVfc3RhdHMpKTsKKworICAvKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsaWJyYXJ5IG1lYXN1cmVkIGEgdGltZSBvdGhlciB0aGFuIHRoZQorICAgICBvbmUgdGhhdCB0aGUgdXNlciB3YW50IGZvciB0aGUgY3B1IHV0aWxpemF0aW9uIGNhbGN1bGF0aW9ucyAtIGZvcgorICAgICBleGFtcGxlLCB0ZXN0cyB0aGF0IHdlcmUgZW5kZWQgYnkgd2F0Y2hkb2cgdGltZXJzIHN1Y2ggYXMgdGhlIHVkcAorICAgICBzdHJlYW0gdGVzdC4gV2UgbGV0IHRoZXNlIHRlc3RzIHRlbGwgdXAgd2hhdCB0aGUgZWxhcHNlZCB0aW1lCisgICAgIHNob3VsZCBiZS4gKi8KKworICBpZiAoZWxhcHNlZF90aW1lICE9IDAuMCkgeworICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKworICAgICAgKChsaWJfZWxhcHNlZCAtIGVsYXBzZWRfdGltZSkgLyBlbGFwc2VkX3RpbWUpOworICB9CisgIGVsc2UgeworICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjA7CisgIH0KKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAibGliX2xvY2FsX21heHJhdGUgPSAlZlxuIiwgbGliX2xvY2FsX21heHJhdGUpOworICB9CisgIGZvciAoaSA9IDA7IGkgPCBsaWJfbnVtX2xvY19jcHVzOyBpKyspIHsKKworICAgIC8qIEZpbmQgdGhlIGRpZmZlcmVuY2UgaW4gYWxsIENQVSBzdGF0IGZpZWxkcyAqLworICAgIGRpZmYudXNlciA9CisgICAgICB0aWNrX3N1YnRyYWN0KGxpYl9zdGFydF9jb3VudFtpXS51c2VyLCBsaWJfZW5kX2NvdW50W2ldLnVzZXIpOworICAgIGRpZmYubmljZSA9CisgICAgICB0aWNrX3N1YnRyYWN0KGxpYl9zdGFydF9jb3VudFtpXS5uaWNlLCBsaWJfZW5kX2NvdW50W2ldLm5pY2UpOworICAgIGRpZmYuc3lzID0KKyAgICAgIHRpY2tfc3VidHJhY3QobGliX3N0YXJ0X2NvdW50W2ldLnN5cywgbGliX2VuZF9jb3VudFtpXS5zeXMpOworICAgIGRpZmYuaWRsZSA9CisgICAgICB0aWNrX3N1YnRyYWN0KGxpYl9zdGFydF9jb3VudFtpXS5pZGxlLCBsaWJfZW5kX2NvdW50W2ldLmlkbGUpOworICAgIGRpZmYuaW93YWl0ID0KKyAgICAgIHRpY2tfc3VidHJhY3QobGliX3N0YXJ0X2NvdW50W2ldLmlvd2FpdCwgbGliX2VuZF9jb3VudFtpXS5pb3dhaXQpOworICAgIGRpZmYuaGFyZF9pcnEgPQorICAgICAgdGlja19zdWJ0cmFjdChsaWJfc3RhcnRfY291bnRbaV0uaGFyZF9pcnEsIGxpYl9lbmRfY291bnRbaV0uaGFyZF9pcnEpOworICAgIGRpZmYuc29mdF9pcnEgPQorICAgICAgdGlja19zdWJ0cmFjdChsaWJfc3RhcnRfY291bnRbaV0uc29mdF9pcnEsIGxpYl9lbmRfY291bnRbaV0uc29mdF9pcnEpOworICAgIGRpZmYuc3RlYWwgPQorICAgICAgdGlja19zdWJ0cmFjdChsaWJfc3RhcnRfY291bnRbaV0uc3RlYWwsIGxpYl9lbmRfY291bnRbaV0uc3RlYWwpOworICAgIGRpZmYuZ3Vlc3QgPQorICAgICAgdGlja19zdWJ0cmFjdChsaWJfc3RhcnRfY291bnRbaV0uZ3Vlc3QsIGxpYl9lbmRfY291bnRbaV0uZ3Vlc3QpOworICAgIGRpZmYuZ3Vlc3RfbmljZSA9CisgICAgICB0aWNrX3N1YnRyYWN0KGxpYl9zdGFydF9jb3VudFtpXS5ndWVzdF9uaWNlLCBsaWJfZW5kX2NvdW50W2ldLmd1ZXN0X25pY2UpOworICAgIHRvdGFsX3RpY2tzID0gZGlmZi51c2VyICsgZGlmZi5uaWNlICsgZGlmZi5zeXMgKyBkaWZmLmlkbGUgKyBkaWZmLmlvd2FpdAorICAgICAgKyBkaWZmLmhhcmRfaXJxICsgZGlmZi5zb2Z0X2lycSArIGRpZmYuc3RlYWwKKyAgICAgICsgZGlmZi5ndWVzdCArIGRpZmYuZ3Vlc3RfbmljZTsKKworICAgIC8qIGNhbGN1bGF0ZSBpZGxlIHRpbWUgYXMgYSBwZXJjZW50YWdlIG9mIGFsbCBDUFUgc3RhdGVzICovCisgICAgaWYgKHRvdGFsX3RpY2tzID09IDApIHsKKyAgICAgIGlmIChkZWJ1ZykgeworCWZwcmludGYod2hlcmUsICJUb3RhbCB0aWNrcyAwIG9uIENQVSAlZCwgY2hhcmdpbmcgbm90aGluZyFcbiIsIGkpOworICAgICAgfQorICAgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSA9IDAuMDsKKyAgICB9IGVsc2UgeworI2RlZmluZSBDUFVfU1RBVF9QRVJDRU5USVpFKHgpICgxMDAuICogKCgoZmxvYXQpKHgpKSAvICgoZmxvYXQpKHRvdGFsX3RpY2tzKSkpKQorICAgICAgLyogdXRpbGl6YXRpb24gPSAxMDAlIC0gJWlkbGUgKi8KKyAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAxMDAuIC0gQ1BVX1NUQVRfUEVSQ0VOVElaRShkaWZmLmlkbGUpOworICAgICAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCArPSBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldOworICAgICAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXNlciArPSBDUFVfU1RBVF9QRVJDRU5USVpFKGRpZmYudXNlcik7CisgICAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV9zeXN0ZW0gKz0gQ1BVX1NUQVRfUEVSQ0VOVElaRShkaWZmLnN5cyk7CisgICAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV9pb3dhaXQgKz0gQ1BVX1NUQVRfUEVSQ0VOVElaRShkaWZmLmlvd2FpdCk7CisgICAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV9pcnEgKz0gQ1BVX1NUQVRfUEVSQ0VOVElaRShkaWZmLmhhcmRfaXJxKTsKKyAgICAgIGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X3N3aW50ciArPSBDUFVfU1RBVF9QRVJDRU5USVpFKGRpZmYuc29mdF9pcnEpOworICAgIH0KKyAgICAvKiBhcHBseSBjb3JyZWN0aW9uIGZhY3RvciAqLworICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gKj0gY29ycmVjdGlvbl9mYWN0b3I7CisgICAgaWYgKGRlYnVnKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorICAgICAgICAgICAgICAiY2FsY19jcHVfdXRpbDogdXRpbCBvbiBwcm9jZXNzb3IgJWQsIGRpZmYgPSAlbGx1ICVsbHUgJWxsdSAiCisJICAgICAgIiVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1IHV0aWwgJWYgY2YgJWZcbiIsCisgICAgICAgICAgICAgIGksCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylkaWZmLnVzZXIsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylkaWZmLm5pY2UsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylkaWZmLnN5cywKKwkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWRpZmYuaWRsZSwKKwkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWRpZmYuaW93YWl0LAorCSAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGlmZi5oYXJkX2lycSwKKwkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWRpZmYuc29mdF9pcnEsCisJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylkaWZmLnN0ZWFsLAorCSAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGlmZi5ndWVzdCwKKwkgICAgICBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldLAorCSAgICAgIGNvcnJlY3Rpb25fZmFjdG9yKTsKKyAgICB9CisgIH0KKworICAvKiB3ZSB3YW50IHRvIGFwcGx5IGNvcnJlY3Rpb24gZmFjdG9yIGFuZCBhdmVyYWdlIGFjcm9zcyBhbGwgbiBwcm9jZXNzb3JzICovCisjZGVmaW5lIENQVV9TVEFUX0ZJWFVQKGZsZG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGxpYl9sb2NhbF9jcHVfc3RhdHMuZmxkbmFtZSA9ICgoY29ycmVjdGlvbl9mYWN0b3IgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsaWJfbG9jYWxfY3B1X3N0YXRzLmZsZG5hbWUpICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICgoZmxvYXQpbGliX251bV9sb2NfY3B1cykpCisKKyAgQ1BVX1NUQVRfRklYVVAoY3B1X3V0aWwpOworICBDUFVfU1RBVF9GSVhVUChjcHVfdXNlcik7CisgIENQVV9TVEFUX0ZJWFVQKGNwdV9zeXN0ZW0pOworICBDUFVfU1RBVF9GSVhVUChjcHVfaW93YWl0KTsKKyAgQ1BVX1NUQVRfRklYVVAoY3B1X2lycSk7CisgIENQVV9TVEFUX0ZJWFVQKGNwdV9zd2ludHIpOworCisgIHJldHVybiBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsOworfQorCit2b2lkCitjcHVfc3RhcnRfaW50ZXJuYWwodm9pZCkKK3sKKyAgZ2V0X2NwdShsaWJfc3RhcnRfY291bnQpOworICByZXR1cm47Cit9CisKK3ZvaWQKK2NwdV9zdG9wX2ludGVybmFsKHZvaWQpCit7CisgIGdldF9jcHUobGliX2VuZF9jb3VudCk7Cit9CmRpZmYgLS1naXQgYS9uZXRjcHVfcHN0YXQuYyBiL3NyYy9uZXRjcHVfcHN0YXQuYwpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBuZXRjcHVfcHN0YXQuYwpyZW5hbWUgdG8gc3JjL25ldGNwdV9wc3RhdC5jCmluZGV4IDA4ZjI3YzEuLjlhNDI4ZDIgMTAwNjQ0Ci0tLSBhL25ldGNwdV9wc3RhdC5jCisrKyBiL3NyYy9uZXRjcHVfcHN0YXQuYwpAQCAtMSw1ICsxLDUgQEAKIGNoYXIgICBuZXRjcHVfcHN0YXRfaWRbXT0iXAotQCgjKW5ldGNwdV9wc3RhdC5jIChjKSBDb3B5cmlnaHQgMjAwNSwgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnksIFZlcnNpb24gMi40LjAiOworQCgjKW5ldGNwdV9wc3RhdC5jIChjKSBDb3B5cmlnaHQgMjAwNS0yMDEyLCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSwgVmVyc2lvbiAyLjYuMCI7CiAKICNpZiBIQVZFX0NPTkZJR19ICiAjIGluY2x1ZGUgPGNvbmZpZy5oPgpAQCAtMTcsNyArMTcsNyBAQAogCiAjaWYgSEFWRV9MSU1JVFNfSAogIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSNlbmRpZiAKKyNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL2RrLmg+CiAjaW5jbHVkZSA8c3lzL3BzdGF0Lmg+CkBAIC0zOCw3ICszOCw3IEBACiBzdGF0aWMgdWludDY0X3QgIGxpYl9lbmRfY291bnRbTUFYQ1BVU107CiAKIHZvaWQKLWNwdV91dGlsX2luaXQodm9pZCkgCitjcHVfdXRpbF9pbml0KHZvaWQpCiB7CiAgIHJldHVybjsKIH0KQEAgLTU1LDcgKzU1LDcgQEAKICAgcmV0dXJuIEhQX0lETEVfQ09VTlRFUjsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGdldF9jcHVfaWRsZSh1aW50NjRfdCAqcmVzKQogewogICAgICAgLyogZ2V0IHRoZSBpZGxlIHN5Y2xlIGNvdW50ZXIgZm9yIGVhY2ggcHJvY2Vzc29yICovCkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgIGxvbmcgbG9uZyBmdWxsOwogICAgICAgICBsb25nICAgICAgd29yZFsyXTsKICAgICAgIH0gKm92ZXJsYXk7Ci0gICAgICAKKwogICAgICAgcHNwID0gKHN0cnVjdCBwc3RfcHJvY2Vzc29yICopbWFsbG9jKGxpYl9udW1fbG9jX2NwdXMgKiBzaXplb2YoKnBzcCkpOwogICAgICAgaWYgKHBzcCA9PSBOVUxMKSB7CiAgICAgICAgIHByaW50ZigibWFsbG9jKCVkKSBmYWlsZWQhXG4iLCBsaWJfbnVtX2xvY19jcHVzICogc2l6ZW9mKCpwc3ApKTsKQEAgLTEwMiwzMSArMTAyLDMxIEBACiAgICAgZmlyc3RjbnRbTUFYQ1BVU10sCiAgICAgc2Vjb25kY250W01BWENQVVNdOwogCi0gIGZsb2F0IAotICAgIGVsYXBzZWQsIAorICBmbG9hdAorICAgIGVsYXBzZWQsCiAgICAgdGVtcF9yYXRlLAogICAgIHJhdGVbTUFYVElNRVNdLAogICAgIGxvY2FsX21heHJhdGU7CiAKLSAgbG9uZyAgCisgIGxvbmcKICAgICBzZWMsCiAgICAgdXNlYzsKIAotICBpbnQgICAKKyAgaW50CiAgICAgaSwKICAgICBqOwotICAKKwogICBsb25nICBjb3VudDsKIAogICBzdHJ1Y3QgIHRpbWV2YWwgdGltZTEsIHRpbWUyOwogICBzdHJ1Y3QgIHRpbWV6b25lIHR6OwogCiAgIHN0cnVjdCBwc3RfcHJvY2Vzc29yICpwc3A7Ci0gIAorCiAgIGlmIChpdGVyYXRpb25zID4gTUFYVElNRVMpIHsKICAgICBpdGVyYXRpb25zID0gTUFYVElNRVM7CiAgIH0KLSAgCisKICAgbG9jYWxfbWF4cmF0ZSA9IC0xLjA7CiAKICAgcHNwID0gKHN0cnVjdCBwc3RfcHJvY2Vzc29yICopbWFsbG9jKGxpYl9udW1fbG9jX2NwdXMgKiBzaXplb2YoKnBzcCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgZ2V0dGltZW9mZGF5ICgmdGltZTEsICZ0eik7CiAgICAgc2xlZXAoaW50ZXJ2YWwpOwogICAgIGdldHRpbWVvZmRheSAoJnRpbWUyLCAmdHopOwotICAgIAorCiAgICAgaWYgKHRpbWUyLnR2X3VzZWMgPCB0aW1lMS50dl91c2VjKQogICAgICAgewogICAgICAgICB0aW1lMi50dl91c2VjICs9IDEwMDAwMDA7CkBAIC0xOTUsOCArMTk1LDggQEAKICAgICAgICAgICAgICAgICAgIGhpXzMyKCZzZWNvbmRjbnRbal0pLAogICAgICAgICAgICAgICAgICAgbG9fMzIoJnNlY29uZGNudFtqXSkpOwogICAgICAgICB9Ci0gICAgICAgIHRlbXBfcmF0ZSA9IChzZWNvbmRjbnRbal0gPj0gZmlyc3RjbnRbal0pID8gCi0gICAgICAgICAgKGZsb2F0KShzZWNvbmRjbnRbal0gLSBmaXJzdGNudFtqXSApL2VsYXBzZWQgOiAKKyAgICAgICAgdGVtcF9yYXRlID0gKHNlY29uZGNudFtqXSA+PSBmaXJzdGNudFtqXSkgPworICAgICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdIC0gZmlyc3RjbnRbal0gKS9lbGFwc2VkIDoKICAgICAgICAgICAgIChmbG9hdCkoc2Vjb25kY250W2pdIC0gZmlyc3RjbnRbal0gKyBMT05HX0xPTkdfTUFYKS9lbGFwc2VkOwogICAgICAgICBpZiAodGVtcF9yYXRlID4gcmF0ZVtpXSkgcmF0ZVtpXSA9IHRlbXBfcmF0ZTsKICAgICAgICAgaWYoZGVidWcpIHsKQEAgLTIyOCwxNSArMjI4LDE2IEBACiAgIGZsb2F0IGFjdHVhbF9yYXRlOwogICBmbG9hdCBjb3JyZWN0aW9uX2ZhY3RvcjsKIAotICBsaWJfbG9jYWxfY3B1X3V0aWwgPSAoZmxvYXQpMC4wOworICBtZW1zZXQoJmxpYl9sb2NhbF9jcHVfc3RhdHMsIDAsIHNpemVvZihsaWJfbG9jYWxfY3B1X3N0YXRzKSk7CisKICAgLyogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGlicmFyeSBtZWFzdXJlZCBhIHRpbWUgb3RoZXIgdGhhbiAqLwogICAvKiB0aGUgb25lIHRoYXQgdGhlIHVzZXIgd2FudCBmb3IgdGhlIGNwdSB1dGlsaXphdGlvbiAqLwogICAvKiBjYWxjdWxhdGlvbnMgLSBmb3IgZXhhbXBsZSwgdGVzdHMgdGhhdCB3ZXJlIGVuZGVkIGJ5ICovCiAgIC8qIHdhdGNoZG9nIHRpbWVycyBzdWNoIGFzIHRoZSB1ZHAgc3RyZWFtIHRlc3QuIFdlIGxldCB0aGVzZSAqLwogICAvKiB0ZXN0cyB0ZWxsIHVwIHdoYXQgdGhlIGVsYXBzZWQgdGltZSBzaG91bGQgYmUuICovCi0gIAorCiAgIGlmIChlbGFwc2VkX3RpbWUgIT0gMC4wKSB7Ci0gICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArIAorICAgIGNvcnJlY3Rpb25fZmFjdG9yID0gKGZsb2F0KSAxLjAgKwogICAgICAgKChsaWJfZWxhcHNlZCAtIGVsYXBzZWRfdGltZSkgLyBlbGFwc2VkX3RpbWUpOwogICB9CiAgIGVsc2UgewpAQCAtMjQ2LDE1ICsyNDcsMTUgQEAKICAgLyogdGhpcyBsb29rcyBqdXN0IGxpa2UgdGhlIGxvb3BlciBjYXNlLiBhdCBsZWFzdCBJIHRoaW5rIGl0ICovCiAgIC8qIHNob3VsZCA6KSByYWogNC85NSAqLwogICBmb3IgKGkgPSAwOyBpIDwgbGliX251bV9sb2NfY3B1czsgaSsrKSB7Ci0gICAgCisKICAgICAvKiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGFyZSBub3QgbW9yZSB0aGFuIGEgbG9uZyBhcGFydC4gSSAqLwogICAgIC8qIGtub3cgdGhhdCB0aGlzIGlzIGJhZCwgYnV0IHRyeWluZyB0byBnbyBmcm9tIGxvbmcgbG9uZ3MgdG8gKi8KICAgICAvKiBhIGZsb2F0IChwZXJoYXBzIGEgZG91YmxlKSBpcyBib2dnbGluZyBteSBtaW5kIHJpZ2h0IG5vdy4gKi8KICAgICAvKiByYWogNC85NSAqLwotICAgIAotICAgIGxvbmcgbG9uZyAKKworICAgIGxvbmcgbG9uZwogICAgICAgZGlmZjsKLSAgICAKKwogICAgIGlmIChsaWJfZW5kX2NvdW50W2ldID49IGxpYl9zdGFydF9jb3VudFtpXSkgewogICAgICAgZGlmZiA9IGxpYl9lbmRfY291bnRbaV0gLSBsaWJfc3RhcnRfY291bnRbaV07CiAgICAgfQpAQCAtMjY0LDMzICsyNjUsMjkgQEAKICAgICBhY3R1YWxfcmF0ZSA9IChmbG9hdCkgZGlmZiAvIGxpYl9lbGFwc2VkOwogICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAobGliX2xvY2FsX21heHJhdGUgLSBhY3R1YWxfcmF0ZSkgLwogICAgICAgbGliX2xvY2FsX21heHJhdGUgKiAxMDA7Ci0gICAgbGliX2xvY2FsX2NwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CisgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKKyAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAgICJjYWxjX2NwdV91dGlsOiBhY3R1YWxfcmF0ZSBvbiBjcHUgJWQgaXMgJWcgbWF4X3JhdGUgJWcgY3B1ICU2LjJmXG4iLAorCSAgICAgICJjYWxjX2NwdV91dGlsOiBhY3R1YWxfcmF0ZSBvbiBjcHUgJWQgaXMgJWcgbWF4X3JhdGUgJWcgY3B1ICU2LjJmIGNmICVmXG4iLAogCSAgICAgIGksCiAJICAgICAgYWN0dWFsX3JhdGUsCiAJICAgICAgbGliX2xvY2FsX21heHJhdGUsCi0JICAgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSk7CisJICAgICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSwKKwkgICAgICBjb3JyZWN0aW9uX2ZhY3Rvcik7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIHdlIHdhbnQgdGhlIGF2ZXJhZ2UgYWNyb3NzIGFsbCBuIHByb2Nlc3NvcnMgKi8KLSAgbGliX2xvY2FsX2NwdV91dGlsIC89IChmbG9hdClsaWJfbnVtX2xvY19jcHVzOwotICAKLSAgaWYgKGRlYnVnKSB7Ci0gICAgZnByaW50Zih3aGVyZSwKLQkgICAgImNhbGNfY3B1X3V0aWw6IGF2ZXJhZ2UgYWNyb3NzIENQVXMgaXMgJWdcbiIsbGliX2xvY2FsX2NwdV91dGlsKTsKLSAgfQotCi0gIGxpYl9sb2NhbF9jcHVfdXRpbCAqPSBjb3JyZWN0aW9uX2ZhY3RvcjsKKyAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCAvPSAoZmxvYXQpbGliX251bV9sb2NfY3B1czsKIAogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiY2FsY19jcHVfdXRpbDogcmV0dXJuaW5nICVnXG4iLGxpYl9sb2NhbF9jcHVfdXRpbCk7CisJICAgICJjYWxjX2NwdV91dGlsOiBhdmVyYWdlIGFjcm9zcyBDUFVzIGlzICVnXG4iLAorICAgICAgICAgICAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCk7CiAgIH0KIAotICByZXR1cm4gbGliX2xvY2FsX2NwdV91dGlsOworICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIAogfQogdm9pZApkaWZmIC0tZ2l0IGEvbmV0Y3B1X3BzdGF0bmV3LmMgYi9zcmMvbmV0Y3B1X3BzdGF0bmV3LmMKc2ltaWxhcml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gbmV0Y3B1X3BzdGF0bmV3LmMKcmVuYW1lIHRvIHNyYy9uZXRjcHVfcHN0YXRuZXcuYwppbmRleCBmZDJkMDM2Li5hODNmZDc4IDEwMDY0NAotLS0gYS9uZXRjcHVfcHN0YXRuZXcuYworKysgYi9zcmMvbmV0Y3B1X3BzdGF0bmV3LmMKQEAgLTEsNSArMSw1IEBACiBjaGFyICAgbmV0Y3B1X3BzdGF0bmV3X2lkW109IlwKLUAoIyluZXRjcHVfcHN0YXRuZXcuYyAoYykgQ29weXJpZ2h0IDIwMDUsIEhld2xldHQtUGFja2FyZCBDb21wYW55LCBWZXJzaW9uIDIuNC4xIjsKK0AoIyluZXRjcHVfcHN0YXRuZXcuYyAoYykgQ29weXJpZ2h0IDIwMDUtMjAxMiBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSwgVmVyc2lvbiAyLjYuMCI7CiAKIC8qIHNpbmNlIHdlICJrbm93IiB0aGF0IHRoaXMgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBvbmx5IG9uIDExLjIzIGFuZAogICAgbGF0ZXIsIGFuZCB0aGF0IDExLjIzIGFuZCBsYXRlciBhcmUgc3RyaWN0bHkgNjQtYml0IGtlcm5lbHMsIHdlIGNhbgpAQCAtMjQsNyArMjQsNyBAQAogCiAjaWYgSEFWRV9MSU1JVFNfSAogIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSNlbmRpZiAKKyNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL2RrLmg+CiAjaW5jbHVkZSA8c3lzL3BzdGF0Lmg+CkBAIC0zMiw3ICszMiw3IEBACiAvKiBIUC1VWCAxMS4yMyBzZWVtcyB0byBoYXZlIGFkZGVkIHRocmVlIG90aGVyIGN5Y2xlIGNvdW50ZXJzIHRvIHRoZQogICAgb3JpZ2luYWwgcHNwX2lkbGVjeWNsZXMgLSBvbmUgZm9yIHVzZXIsIG9uZSBmb3Iga2VybmVsIGFuZCBvbmUgZm9yCiAgICBpbnRlcnJ1cHQuIHNvLCB3ZSBjYW4gbm93IHVzZSB0aG9zZSB0byBjYWxjdWxhdGUgQ1BVIHV0aWxpemF0aW9uCi0gICB3aXRob3V0IHJlcXVpcmluZyBhbnkgY2FsaWJyYXRpb24gcGhhc2UuICByYWogMjAwNS0wMi0xNiAqLyAKKyAgIHdpdGhvdXQgcmVxdWlyaW5nIGFueSBjYWxpYnJhdGlvbiBwaGFzZS4gIHJhaiAyMDA1LTAyLTE2ICovCiAKICNpZm5kZWYgUFNUQVRfSVBDSU5GTwogIyBlcnJvciBTb3JyeSwgcHN0YXQoKSBDUFUgdXRpbGl6YXRpb24gb24gMTAuMCBhbmQgbGF0ZXIgb25seQpAQCAtNjAsOSArNjAsMzEgQEAKIHN0YXRpYyBjcHVfdGltZV9jb3VudGVyc190ICBlbmRpbmdfY3B1X2NvdW50ZXJzW01BWENQVVNdOwogc3RhdGljIGNwdV90aW1lX2NvdW50ZXJzX3QgIGRlbHRhX2NwdV9jb3VudGVyc1tNQVhDUFVTXTsKIAorLyogdGhlcmUgY2FuIGJlIG1vcmUgInByb2Nlc3NvcnMiIGluIHRoZSBzeXN0ZW0gdGhhbiBhcmUgYWN0dWFsbHkKKyAgIG9ubGluZS4gc28sIHdlIGNhbiBlaXRoZXIgd2FsayBhbGwgdGhlIHByb2Nlc3NvcnMgb25lIGF0IGEgdGltZSwKKyAgIHdoaWNoIHdvdWxkIGJlIHNsb3csIG9yIHdlIGNhbiB0cmFjayBub3QganVzdCBsaWJfbnVtX2xvY19jcHUsCisgICB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSAicHJvY2Vzc29ycyIgYnV0IGFsc28gdGhlIHRvdGFsCisgICBudW1iZXIsIGFuZCByZXRyaWV2ZSBhbGwgb2YgdGhlbSBhdCBvbmUgc2hvdCBhbmQgd2FsayB0aGUgbGlzdAorICAgb25jZSwgaWdub3JpbmcgdGhvc2UgdGhhdCBhcmUgb2ZmbGluZS4gIHdlIHdpbGwgYXNzLXUtbWUgdGhlcmUgaXMKKyAgIG5vIGNoYW5nZSB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgb25saW5lIHdoaWxlIHdlIGFyZSBydW5uaW5nCisgICBvciB0aGVyZSB3aWxsIGJlIHN0cmFuZ2UgdGhpbmdzIGhhcHBlbmluZyB0byBDUFUgdXRpbGl6YXRpb24uIHJhagorICAgMjAxMC0wNC0yNyAqLworCitzdGF0aWMgbG9uZyBtYXhfcHJvY19jb3VudDsKKwogdm9pZAotY3B1X3V0aWxfaW5pdCh2b2lkKSAKK2NwdV91dGlsX2luaXQodm9pZCkKIHsKKyAgc3RydWN0IHBzdF9keW5hbWljIHBzZDsKKyAgaWYgKHBzdGF0X2dldGR5bmFtaWMoKHN0cnVjdCBwc3RfZHluYW1pYyAqKSZwc2QsCisgICAgICAgICAgICAgICAgICAgICAgIChzaXplX3Qpc2l6ZW9mKHBzZCksIChzaXplX3QpMSwgMCkgIT0gLTEpIHsKKyAgICBtYXhfcHJvY19jb3VudCA9IHBzZC5wc2RfbWF4X3Byb2NfY250OworICB9CisgIGVsc2UgeworICAgIC8qIHdlIGhvcGUgdGhpcyBuZXZlciBoYXBwZW5zICovCisgICAgbWF4X3Byb2NfY291bnQgPSBsaWJfbnVtX2xvY19jcHVzOworICB9CisKICAgcmV0dXJuOwogfQogCkBAIC04NiwyMyArMTA4LDM0IEBACiAJIG9ubHkgdGhlIGJvdHRvbSAzMi1iaXRzIGFyZSBhY3R1YWxseSB2YWxpZC4gIGRvbid0IGFzayBtZQogCSB3aHksIHRoYXQgaXMganVzdCB0aGUgd2F5IGl0IGlzLiAgc29vLCB3ZSBzaGlmdCB0aGUgcHNjX2hpCiAJIHZhbHVlIGJ5IDMyIGJpdHMgYW5kIHRoZW4ganVzdCBzdW0taW4gdGhlIHBzY19sbyB2YWx1ZS4gIHJhagotCSAyMDA1LzA5LzA2ICovIAorCSAyMDA1LzA5LzA2ICovCiAgICAgICBzdHJ1Y3QgcHN0X3Byb2Nlc3NvciAqcHNwOwogCi0gICAgICBwc3AgPSAoc3RydWN0IHBzdF9wcm9jZXNzb3IgKiltYWxsb2MobGliX251bV9sb2NfY3B1cyAqIHNpemVvZigqcHNwKSk7CisgICAgICAvKiB0byBoYW5kbGUgdGhlIGNhc2VzIG9mICJwcm9jZXNzb3JzIiBwcmVzZW50IGJ1dCBkaXNhYmxlZCwgd2UKKwkgd2lsbCBoYXZlIHRvIGFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggZm9yIGV2ZXJ5b25lIGFuZAorCSB0aGVuIHdhbGsgdGhlIGVudGlyZSBsaXN0LCBwdWxsaW5nIGRhdGEgZm9yIHRob3NlIHdoaWNoIGFyZQorCSBvbmxpbmUsIGFzc3VtaW5nIHRoZSBwcm9jZXNzb3JzIG9ubGluZSBoYXZlIG5vdCBjaGFuZ2VkIGluCisJIHRoZSBtaWRkbGUgb2YgdGhlIHJ1bi4gcmFqIDIwMTAtMDQtMjcgKi8KKyAgICAgIHBzcCA9IChzdHJ1Y3QgcHN0X3Byb2Nlc3NvciAqKW1hbGxvYyhtYXhfcHJvY19jb3VudCAqIHNpemVvZigqcHNwKSk7CiAgICAgICBpZiAocHNwID09IE5VTEwpIHsKLSAgICAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIGxpYl9udW1fbG9jX2NwdXMgKiBzaXplb2YoKnBzcCkpOworICAgICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgbWF4X3Byb2NfY291bnQgKiBzaXplb2YoKnBzcCkpOwogICAgICAgICBleGl0KDEpOwotCSAgfQotICAgICAgaWYgKHBzdGF0X2dldHByb2Nlc3Nvcihwc3AsIHNpemVvZigqcHNwKSwgbGliX251bV9sb2NfY3B1cywgMCkgIT0gLTEpIHsKLSAgICAgICAgaW50IGk7CisgICAgICB9CisgICAgICBpZiAocHN0YXRfZ2V0cHJvY2Vzc29yKHBzcCwgc2l6ZW9mKCpwc3ApLCBtYXhfcHJvY19jb3VudCwgMCkgIT0gLTEpIHsKKyAgICAgICAgaW50IGksajsKIAkvKiB3ZSB1c2UgbGliX2l0aWNrc3BlcmNsa3RpY2sgaW4gb3VyIHNhbml0eSBjaGVja2luZy4gd2UKIAkgICBhc3MtdS1tZSBpdCBpcyB0aGUgc2FtZSB2YWx1ZSBmb3IgZWFjaCBDUFUgLSBmYW1vdXMgbGFzdAogCSAgIHdvcmRzIG5vIGRvdWJ0LiByYWogMjAwNS8wOS8wNiAqLwogCWxpYl9pdGlja3NwZXJjbGt0aWNrID0gcHNwWzBdLnBzcF9pdGlja3NwZXJjbGt0aWNrOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGliX251bV9sb2NfY3B1czsgaSsrKSB7Ci0gICAgICAgICAgcmVzW2ldLmlkbGUgPSAoKCh1aW50NjRfdClwc3BbaV0ucHNwX2lkbGVjeWNsZXMucHNjX2hpIDw8IDMyKSArCi0JCQkgcHNwW2ldLnBzcF9pZGxlY3ljbGVzLnBzY19sbyk7CisJaSA9IGogPSAwOworCXdoaWxlICgoaSA8IGxpYl9udW1fbG9jX2NwdXMpICYmIChqIDwgbWF4X3Byb2NfY291bnQpKSB7CisJICBpZiAocHNwW2pdLnBzcF9wcm9jZXNzb3Jfc3RhdGUgPT0gUFNQX1NQVV9ESVNBQkxFRCkgeworCSAgICBqKys7CisJICAgIGNvbnRpbnVlOworCSAgfQorCSAgLyogd2Uga25vdyB0aGF0IHBzcFtqXSBpcyBvbmxpbmUgKi8KKyAgICAgICAgICByZXNbaV0uaWRsZSA9ICgoKHVpbnQ2NF90KXBzcFtqXS5wc3BfaWRsZWN5Y2xlcy5wc2NfaGkgPDwgMzIpICsKKwkJCSBwc3Bbal0ucHNwX2lkbGVjeWNsZXMucHNjX2xvKTsKICAgICAgICAgICBpZihkZWJ1ZykgewogICAgICAgICAgICAgZnByaW50Zih3aGVyZSwKICAgICAgICAgICAgICAgICAgICAgIlx0aWRsZVslZF0gPSAweCUiUFJJeDY0IiAiLApAQCAtMTEwLDggKzE0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIHJlc1tpXS5pZGxlKTsKICAgICAgICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgICAgICAgfQotICAgICAgICAgIHJlc1tpXS51c2VyID0gKCgodWludDY0X3QpcHNwW2ldLnBzcF91c2VyY3ljbGVzLnBzY19oaSA8PCAzMikgKwotCQkJIHBzcFtpXS5wc3BfdXNlcmN5Y2xlcy5wc2NfbG8pOworICAgICAgICAgIHJlc1tpXS51c2VyID0gKCgodWludDY0X3QpcHNwW2pdLnBzcF91c2VyY3ljbGVzLnBzY19oaSA8PCAzMikgKworCQkJIHBzcFtqXS5wc3BfdXNlcmN5Y2xlcy5wc2NfbG8pOwogICAgICAgICAgIGlmKGRlYnVnKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHdoZXJlLAogICAgICAgICAgICAgICAgICAgICAidXNlclslZF0gPSAweCUiUFJJeDY0IiAiLApAQCAtMTE5LDggKzE1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIHJlc1tpXS51c2VyKTsKICAgICAgICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgICAgICAgfQotICAgICAgICAgIHJlc1tpXS5rZXJuZWwgPSAoKCh1aW50NjRfdClwc3BbaV0ucHNwX3N5c3RlbWN5Y2xlcy5wc2NfaGkgPDwgMzIpICsKLQkJCSAgICBwc3BbaV0ucHNwX3N5c3RlbWN5Y2xlcy5wc2NfbG8pOworICAgICAgICAgIHJlc1tpXS5rZXJuZWwgPSAoKCh1aW50NjRfdClwc3Bbal0ucHNwX3N5c3RlbWN5Y2xlcy5wc2NfaGkgPDwgMzIpICsKKwkJCSAgICBwc3Bbal0ucHNwX3N5c3RlbWN5Y2xlcy5wc2NfbG8pOwogICAgICAgICAgIGlmKGRlYnVnKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHdoZXJlLAogICAgICAgICAgICAgICAgICAgICAia2VyblslZF0gPSAweCUiUFJJeDY0IiAiLApAQCAtMTI4LDggKzE2MSw4IEBACiAgICAgICAgICAgICAgICAgICAgIHJlc1tpXS5rZXJuZWwpOwogICAgICAgICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgICAgICB9Ci0gICAgICAgICAgcmVzW2ldLmludGVycnVwdCA9ICgoKHVpbnQ2NF90KXBzcFtpXS5wc3BfaW50ZXJydXB0Y3ljbGVzLnBzY19oaSA8PCAzMikgKwotCQkJICAgICAgcHNwW2ldLnBzcF9pbnRlcnJ1cHRjeWNsZXMucHNjX2xvKTsKKyAgICAgICAgICByZXNbaV0uaW50ZXJydXB0ID0gKCgodWludDY0X3QpcHNwW2pdLnBzcF9pbnRlcnJ1cHRjeWNsZXMucHNjX2hpIDw8IDMyKSArCisJCQkgICAgICBwc3Bbal0ucHNwX2ludGVycnVwdGN5Y2xlcy5wc2NfbG8pOwogICAgICAgICAgIGlmKGRlYnVnKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHdoZXJlLAogICAgICAgICAgICAgICAgICAgICAiaW50clslZF0gPSAweCUiUFJJeDY0IlxuIiwKQEAgLTEzNyw3ICsxNzAsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXNbaV0uaW50ZXJydXB0KTsKICAgICAgICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgICAgICAgfQotICAgICAgICB9CisJICBpKys7CisJICBqKys7CisJfQogICAgICAgICBmcmVlKHBzcCk7CiAgICAgICB9CiB9CkBAIC0xNTQsMTcgKzE4OSwxOSBAQAogfQogCiBzdGF0aWMgdm9pZAotcHJpbnRfY3B1X3RpbWVfY291bnRlcnMoY2hhciAqbmFtZSwgaW50IGluc3RhbmNlLCBjcHVfdGltZV9jb3VudGVyc190ICpjb3VudGVycykgCitwcmludF9jcHVfdGltZV9jb3VudGVycyhjaGFyICpuYW1lLCBpbnQgaW5zdGFuY2UsIGNwdV90aW1lX2NvdW50ZXJzX3QgKmNvdW50ZXJzKQogewotICBmcHJpbnRmKHdoZXJlLCIlc1slZF06XG4iLG5hbWUsaW5zdGFuY2UpOwogICBmcHJpbnRmKHdoZXJlLAotCSAgIlx0IGlkbGUgJWxsdVxuIixjb3VudGVyc1tpbnN0YW5jZV0uaWRsZSk7Ci0gIGZwcmludGYod2hlcmUsCi0JICAiXHQgdXNlciAlbGx1XG4iLGNvdW50ZXJzW2luc3RhbmNlXS51c2VyKTsKLSAgZnByaW50Zih3aGVyZSwKLQkgICJcdCBrZXJuZWwgJWxsdVxuIixjb3VudGVyc1tpbnN0YW5jZV0ua2VybmVsKTsKLSAgZnByaW50Zih3aGVyZSwKLQkgICJcdCBpbnRlcnJ1cHQgJWxsdVxuIixjb3VudGVyc1tpbnN0YW5jZV0uaW50ZXJydXB0KTsKKwkgICIlc1slZF06XG4iCisJICAiXHQgaWRsZSAlbGx1XG4iCisJICAiXHQgdXNlciAlbGx1XG4iCisJICAiXHQga2VybmVsICVsbHVcbiIKKwkgICJcdCBpbnRlcnJ1cHQgJWxsdVxuIiwKKwkgIG5hbWUsaW5zdGFuY2UsCisJICBjb3VudGVyc1tpbnN0YW5jZV0uaWRsZSwKKwkgIGNvdW50ZXJzW2luc3RhbmNlXS51c2VyLAorCSAgY291bnRlcnNbaW5zdGFuY2VdLmtlcm5lbCwKKwkgIGNvdW50ZXJzW2luc3RhbmNlXS5pbnRlcnJ1cHQpOwogfQogCiBmbG9hdApAQCAtMTk4LDE2ICsyMzUsMTYgQEAKICAgZmxvYXQgYWN0dWFsX3JhdGU7CiAgIGZsb2F0IGNvcnJlY3Rpb25fZmFjdG9yOwogCi0gIGxpYl9sb2NhbF9jcHVfdXRpbCA9IChmbG9hdCkwLjA7CisgIG1lbXNldCgmbGliX2xvY2FsX2NwdV9zdGF0cywgMCwgc2l6ZW9mKGxpYl9sb2NhbF9jcHVfc3RhdHMpKTsKIAogICAvKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsaWJyYXJ5IG1lYXN1cmVkIGEgdGltZSBvdGhlciB0aGFuICovCiAgIC8qIHRoZSBvbmUgdGhhdCB0aGUgdXNlciB3YW50IGZvciB0aGUgY3B1IHV0aWxpemF0aW9uICovCiAgIC8qIGNhbGN1bGF0aW9ucyAtIGZvciBleGFtcGxlLCB0ZXN0cyB0aGF0IHdlcmUgZW5kZWQgYnkgKi8KICAgLyogd2F0Y2hkb2cgdGltZXJzIHN1Y2ggYXMgdGhlIHVkcCBzdHJlYW0gdGVzdC4gV2UgbGV0IHRoZXNlICovCiAgIC8qIHRlc3RzIHRlbGwgdXAgd2hhdCB0aGUgZWxhcHNlZCB0aW1lIHNob3VsZCBiZS4gKi8KLSAgCisKICAgaWYgKGVsYXBzZWRfdGltZSAhPSAwLjApIHsKLSAgICBjb3JyZWN0aW9uX2ZhY3RvciA9IChmbG9hdCkgMS4wICsgCisgICAgY29ycmVjdGlvbl9mYWN0b3IgPSAoZmxvYXQpIDEuMCArCiAgICAgICAoKGxpYl9lbGFwc2VkIC0gZWxhcHNlZF90aW1lKSAvIGVsYXBzZWRfdGltZSk7CiAgIH0KICAgZWxzZSB7CkBAIC0yNDEsMTMgKzI3OCwxMyBAQAogICAgICBmaXggdGhlIGludGVydXB0IGN5Y2xlIGFjY291bnRpbmcuICByYWogMjAwNS8wOS8xNCAqLwogCiAgIC8qIGNhbGN1bGF0ZSB3aGF0IHRoZSBzdW0gb2YgQ1BVIGN5Y2xlcyBfU0hPVUxEXyBiZSAqLwotICBzYW5pdHlfY3B1X2N5Y2xlcyA9ICh1aW50NjRfdCkgKChkb3VibGUpbGliX2VsYXBzZWQgKiAKKyAgc2FuaXR5X2NwdV9jeWNsZXMgPSAodWludDY0X3QpICgoZG91YmxlKWxpYl9lbGFwc2VkICoKICAgICAoZG91YmxlKSBzeXNjb25mKF9TQ19DTEtfVENLKSAqIChkb3VibGUpbGliX2l0aWNrc3BlcmNsa3RpY2spOwogCiAgIC8qIHRoaXMgbG9va3MganVzdCBsaWtlIHRoZSBsb29wZXIgY2FzZS4gYXQgbGVhc3QgSSB0aGluayBpdCAqLwogICAvKiBzaG91bGQgOikgcmFqIDQvOTUgKi8KICAgZm9yIChpID0gMDsgaSA8IGxpYl9udW1fbG9jX2NwdXM7IGkrKykgewotICAgIAorCiAgICAgLyogd2UgYXNzLXUtbWUgdGhhdCB0aGVzZSBjb3VudGVycyB3aWxsIG5ldmVyIHdyYXAgZHVyaW5nIGEKICAgICAgICBuZXRwZXJmIHJ1bi4gIHRoaXMgbWF5IG5vdCBiZSBhIHBhcnRpY3VsYXJseSBzYWZlIHRoaW5nIHRvCiAgICAgICAgZG8uIHJhaiAyMDA1LTAxLTI4ICovCkBAIC0yNTksMTQgKzI5NiwxNCBAQAogICAgICAgc3RhcnRpbmdfY3B1X2NvdW50ZXJzW2ldLmtlcm5lbDsKICAgICBkZWx0YV9jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0ID0gZW5kaW5nX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQgLQogICAgICAgc3RhcnRpbmdfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdDsKLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgcHJpbnRfY3B1X3RpbWVfY291bnRlcnMoImRlbHRhX2NwdV9jb3VudGVycyIsaSxkZWx0YV9jcHVfY291bnRlcnMpOwogICAgIH0KIAogICAgIC8qIG5vdyBnZXQgdGhlIHN1bSwgd2hpY2ggd2UgYXNzLXUtbWUgZG9lcyBub3Qgb3ZlcmZsb3cgYSA2NC1iaXQKICAgICAgICBjb3VudGVyLiByYWogMjAwNS0wMi0xNiAqLwotICAgIHRvdGFsX2NwdV9jeWNsZXMgPSAKKyAgICB0b3RhbF9jcHVfY3ljbGVzID0KICAgICAgIGRlbHRhX2NwdV9jb3VudGVyc1tpXS5pZGxlICsKICAgICAgIGRlbHRhX2NwdV9jb3VudGVyc1tpXS51c2VyICsKICAgICAgIGRlbHRhX2NwdV9jb3VudGVyc1tpXS5rZXJuZWwgKwpAQCAtMjc0LDcgKzMxMSw4IEBACiAKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgInRvdGFsX2NwdV9jeWNsZXMgJSJQUkl1NjQiIHNhbml0eV9jcHVfY3ljbGVzICUiUFJJdTY0IiBtaXNzaW5nICUiUFJJdTY0IlxuIiwKKwkgICAgICAidG90YWxfY3B1X2N5Y2xlcyAlIlBSSXU2NCIgc2FuaXR5X2NwdV9jeWNsZXMgJSJQUkl1NjQKKwkgICAgICAiIG1pc3NpbmcgJSJQUkl1NjQiXG4iLAogCSAgICAgIHRvdGFsX2NwdV9jeWNsZXMsCiAJICAgICAgc2FuaXR5X2NwdV9jeWNsZXMsCiAJICAgICAgc2FuaXR5X2NwdV9jeWNsZXMgLSB0b3RhbF9jcHVfY3ljbGVzKTsKQEAgLTI4OSwzMCArMzI3LDM1IEBACiAgICAgICAgd2UgY2FuIHVzZSB0b3RhbF9jcHVfY3ljbGVzIHJhdGhlciB0aGFuIHNhbml0eV9jcHVfY3ljbGVzLCBidXQKICAgICAgICB1bnRpbCB0aGVuLCB1c2Ugc2FuaXR5X2NwdV9jY2xlcy4gcmFqIDIwMDUvMDkvMTQgKi8KIAotICAgIGZyYWN0aW9uX2lkbGUgPSAoZG91YmxlKWRlbHRhX2NwdV9jb3VudGVyc1tpXS5pZGxlIC8gCisgICAgZnJhY3Rpb25faWRsZSA9IChkb3VibGUpZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmlkbGUgLwogICAgICAgKGRvdWJsZSlzYW5pdHlfY3B1X2N5Y2xlczsKIAotICAgIGZyYWN0aW9uX3VzZXIgPSAoZG91YmxlKWRlbHRhX2NwdV9jb3VudGVyc1tpXS51c2VyIC8gCisgICAgZnJhY3Rpb25fdXNlciA9IChkb3VibGUpZGVsdGFfY3B1X2NvdW50ZXJzW2ldLnVzZXIgLwogICAgICAgKGRvdWJsZSlzYW5pdHlfY3B1X2N5Y2xlczsKIAotICAgIGZyYWN0aW9uX2tlcm5lbCA9IChkb3VibGUpIGRlbHRhX2NwdV9jb3VudGVyc1tpXS5rZXJuZWwgLyAKKyAgICBmcmFjdGlvbl9rZXJuZWwgPSAoZG91YmxlKSBkZWx0YV9jcHVfY291bnRlcnNbaV0ua2VybmVsIC8KICAgICAgIChkb3VibGUpc2FuaXR5X2NwdV9jeWNsZXM7CiAKLSAgICBmcmFjdGlvbl9pbnRlcnJ1cHQgPSAoZG91YmxlKWRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQgLyAKKyAgICBmcmFjdGlvbl9pbnRlcnJ1cHQgPSAoZG91YmxlKWRlbHRhX2NwdV9jb3VudGVyc1tpXS5pbnRlcnJ1cHQgLwogICAgICAgKGRvdWJsZSlzYW5pdHlfY3B1X2N5Y2xlczsKIAogICAgIC8qIGFzcy11LW1lIHRoYXQgaXQgaXMgb25seSBpbnRlcnJ1cHQgdGhhdCBpcyBib2d1cywgYW5kIGFzc2lnbgogICAgICAgIGFsbCB0aGUgIm1pc3NpbmciIGN5Y2xlcyB0byBpdC4gcmFqIDIwMDUvMDkvMTQgKi8KICAgICBlc3RpbWF0ZWRfZnJhY3Rpb25faW50ZXJydXB0ID0gKChkb3VibGUpZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdCArCi0JCQkJICAgIChzYW5pdHlfY3B1X2N5Y2xlcyAtIHRvdGFsX2NwdV9jeWNsZXMpKSAvIAorCQkJCSAgICAoc2FuaXR5X2NwdV9jeWNsZXMgLSB0b3RhbF9jcHVfY3ljbGVzKSkgLwogICAgICAgKGRvdWJsZSlzYW5pdHlfY3B1X2N5Y2xlczsKIAogICAgIGlmIChkZWJ1ZykgewotICAgICAgZnByaW50Zih3aGVyZSwiXHRmcmFjdGlvbl9pZGxlICVnXG4iLGZyYWN0aW9uX2lkbGUpOwotICAgICAgZnByaW50Zih3aGVyZSwiXHRmcmFjdGlvbl91c2VyICVnXG4iLGZyYWN0aW9uX3VzZXIpOwotICAgICAgZnByaW50Zih3aGVyZSwiXHRmcmFjdGlvbl9rZXJuZWwgJWdcbiIsZnJhY3Rpb25fa2VybmVsKTsKLSAgICAgIGZwcmludGYod2hlcmUsIlx0ZnJhY3Rpb25faW50ZXJydXB0ICVnIFdBUk5JTkcsIHBvc3NpYmx5IHVuZGVyLWNvdW50ZWQhXG4iLGZyYWN0aW9uX2ludGVycnVwdCk7Ci0gICAgICBmcHJpbnRmKHdoZXJlLCJcdGVzdGltYXRlZF9mcmFjdGlvbl9pbnRlcnJ1cHQgJWdcbiIsCisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJcdGZyYWN0aW9uX2lkbGUgJWdcbiIKKwkgICAgICAiXHRmcmFjdGlvbl91c2VyICVnXG4iCisJICAgICAgIlx0ZnJhY3Rpb25fa2VybmVsICVnXG4iCisJICAgICAgIlx0ZnJhY3Rpb25faW50ZXJydXB0ICVnIFdBUk5JTkcsIHBvc3NpYmx5IHVuZGVyLWNvdW50ZWQhXG4iCisJICAgICAgIlx0ZXN0aW1hdGVkX2ZyYWN0aW9uX2ludGVycnVwdCAlZ1xuIiwKKwkgICAgICBmcmFjdGlvbl9pZGxlLAorCSAgICAgIGZyYWN0aW9uX3VzZXIsCisJICAgICAgZnJhY3Rpb25fa2VybmVsLAorCSAgICAgIGZyYWN0aW9uX2ludGVycnVwdCwKIAkgICAgICBlc3RpbWF0ZWRfZnJhY3Rpb25faW50ZXJydXB0KTsKICAgICB9CiAKQEAgLTMzMyw1NiArMzc2LDYyIEBACiAgICAgICAgd2UgY2FuIHVzZSB0b3RhbF9jcHVfY3ljbGVzIHJhdGhlciB0aGFuIHNhbml0eV9jcHVfY3ljbGVzLCBidXQKICAgICAgICB1bnRpbCB0aGVuLCB1c2Ugc2FuaXR5X2NwdV9jY2xlcy4gcmFqIDIwMDUvMDkvMTQgKi8KIAotICAgIGZyYWN0aW9uX2lkbGUgPSAKKyAgICBmcmFjdGlvbl9pZGxlID0KICAgICAgIChkZWx0YV9jcHVfY291bnRlcnNbaV0uaWRsZSAqIENBTENfQUNDVVJBQ1kpIC8gc2FuaXR5X2NwdV9jeWNsZXM7CiAKLSAgICBmcmFjdGlvbl91c2VyID0gCisgICAgZnJhY3Rpb25fdXNlciA9CiAgICAgICAoZGVsdGFfY3B1X2NvdW50ZXJzW2ldLnVzZXIgKiBDQUxDX0FDQ1VSQUNZKSAvIHNhbml0eV9jcHVfY3ljbGVzOwogCi0gICAgZnJhY3Rpb25fa2VybmVsID0gCisgICAgZnJhY3Rpb25fa2VybmVsID0KICAgICAgIChkZWx0YV9jcHVfY291bnRlcnNbaV0ua2VybmVsICogQ0FMQ19BQ0NVUkFDWSkgLyBzYW5pdHlfY3B1X2N5Y2xlczsKIAotICAgIGZyYWN0aW9uX2ludGVycnVwdCA9IAorICAgIGZyYWN0aW9uX2ludGVycnVwdCA9CiAgICAgICAoZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdCAqIENBTENfQUNDVVJBQ1kpIC8gc2FuaXR5X2NwdV9jeWNsZXM7CiAKIAotICAgIGVzdGltYXRlZF9mcmFjdGlvbl9pbnRlcnJ1cHQgPSAKLSAgICAgICgoZGVsdGFfY3B1X2NvdW50ZXJzW2ldLmludGVycnVwdCArIAotCShzYW5pdHlfY3B1X2N5Y2xlcyAtIHRvdGFsX2NwdV9jeWNsZXMpKSAqIAorICAgIGVzdGltYXRlZF9mcmFjdGlvbl9pbnRlcnJ1cHQgPQorICAgICAgKChkZWx0YV9jcHVfY291bnRlcnNbaV0uaW50ZXJydXB0ICsKKwkoc2FuaXR5X2NwdV9jeWNsZXMgLSB0b3RhbF9jcHVfY3ljbGVzKSkgKgogICAgICAgIENBTENfQUNDVVJBQ1kpIC8gc2FuaXR5X2NwdV9jeWNsZXM7CiAKICAgICBpZiAoZGVidWcpIHsKLSAgICAgIGZwcmludGYod2hlcmUsIlx0ZnJhY3Rpb25faWRsZSAlIlBSSXU2NCJcbiIsZnJhY3Rpb25faWRsZSk7Ci0gICAgICBmcHJpbnRmKHdoZXJlLCJcdGZyYWN0aW9uX3VzZXIgJSJQUkl1NjQiXG4iLGZyYWN0aW9uX3VzZXIpOwotICAgICAgZnByaW50Zih3aGVyZSwiXHRmcmFjdGlvbl9rZXJuZWwgJSJQUkl1NjQiXG4iLGZyYWN0aW9uX2tlcm5lbCk7Ci0gICAgICBmcHJpbnRmKHdoZXJlLCJcdGZyYWN0aW9uX2ludGVycnVwdCAlIlBSSXU2NCJXQVJOSU5HLCBwb3NzaWJseSB1bmRlci1jb3VudGVkIVxuIixmcmFjdGlvbl9pbnRlcnJ1cHQpOwotICAgICAgZnByaW50Zih3aGVyZSwiXHRlc3RpbWF0ZWRfZnJhY3Rpb25faW50ZXJydXB0ICUiUFJJdTY0IlxuIiwKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIlx0ZnJhY3Rpb25faWRsZSAlIlBSSXU2NCJcbiIKKwkgICAgICAiXHRmcmFjdGlvbl91c2VyICUiUFJJdTY0IlxuIgorCSAgICAgICJcdGZyYWN0aW9uX2tlcm5lbCAlIlBSSXU2NCJcbiIKKwkgICAgICAiXHRmcmFjdGlvbl9pbnRlcnJ1cHQgJSJQUkl1NjQiV0FSTklORywgcG9zc2libHkgdW5kZXItY291bnRlZCFcbiIKKwkgICAgICAiXHRlc3RpbWF0ZWRfZnJhY3Rpb25faW50ZXJydXB0ICUiUFJJdTY0IlxuIiwKKwkgICAgICBmcmFjdGlvbl9pZGxlLAorCSAgICAgIGZyYWN0aW9uX3VzZXIsCisJICAgICAgZnJhY3Rpb25fa2VybmVsLAorCSAgICAgIGZyYWN0aW9uX2ludGVycnVwdCwKIAkgICAgICBlc3RpbWF0ZWRfZnJhY3Rpb25faW50ZXJydXB0KTsKICAgICB9CiAKICAgICAvKiBhbmQgZmluYWxseSwgd2hhdCBpcyBvdXIgQ1BVIHV0aWxpemF0aW9uPyAqLwotICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPSAxMDAuMCAtICgoKGZsb2F0KWZyYWN0aW9uX2lkbGUgLyAKKyAgICBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldID0gMTAwLjAgLSAoKChmbG9hdClmcmFjdGlvbl9pZGxlIC8KIAkJCQkJICAoZmxvYXQpQ0FMQ19BQ0NVUkFDWSkgKiAxMDAuMCk7CiAjZW5kaWYKKyAgICBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldICo9IGNvcnJlY3Rpb25fZmFjdG9yOwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgICAibGliX2xvY2FsX3Blcl9jcHVfdXRpbFslZF0gJWdcbiIsCisJICAgICAgImxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbJWRdICVnICBjZiAlZlxuIiwKIAkgICAgICBpLAotCSAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0pOworCSAgICAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0sCisJICAgICAgY29ycmVjdGlvbl9mYWN0b3IpOwogICAgIH0KLSAgICBsaWJfbG9jYWxfY3B1X3V0aWwgKz0gbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXTsKKyAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsICs9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CiAgIH0KICAgLyogd2Ugd2FudCB0aGUgYXZlcmFnZSBhY3Jvc3MgYWxsIG4gcHJvY2Vzc29ycyAqLwotICBsaWJfbG9jYWxfY3B1X3V0aWwgLz0gKGZsb2F0KWxpYl9udW1fbG9jX2NwdXM7Ci0KLSAgbGliX2xvY2FsX2NwdV91dGlsICo9IGNvcnJlY3Rpb25fZmFjdG9yOworICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsIC89IChmbG9hdClsaWJfbnVtX2xvY19jcHVzOwogCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCi0JICAgICJjYWxjX2NwdV91dGlsOiByZXR1cm5pbmcgJWdcbiIsbGliX2xvY2FsX2NwdV91dGlsKTsKKwkgICAgImNhbGNfY3B1X3V0aWw6IHJldHVybmluZyAlZ1xuIiwKKwkgICAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCk7CiAgIH0KIAotICByZXR1cm4gbGliX2xvY2FsX2NwdV91dGlsOworICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIAogfQogdm9pZApkaWZmIC0tZ2l0IGEvbmV0Y3B1X3N5c2N0bC5jIGIvc3JjL25ldGNwdV9zeXNjdGwuYwpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBuZXRjcHVfc3lzY3RsLmMKcmVuYW1lIHRvIHNyYy9uZXRjcHVfc3lzY3RsLmMKaW5kZXggOTE5ZjYyYy4uZWQ3MDM1YSAxMDA2NDQKLS0tIGEvbmV0Y3B1X3N5c2N0bC5jCisrKyBiL3NyYy9uZXRjcHVfc3lzY3RsLmMKQEAgLTEsNSArMSw1IEBACiBjaGFyICAgbmV0Y3B1X3N5c2N0bF9pZFtdPSJcCi1AKCMpbmV0Y3B1X3N5c2N0bC5jICBWZXJzaW9uIDIuNC4zIjsKK0AoIyluZXRjcHVfc3lzY3RsLmMgIFZlcnNpb24gMi42LjAiOwogCiAjaWYgSEFWRV9DT05GSUdfSAogIyBpbmNsdWRlIDxjb25maWcuaD4KQEAgLTMzLDYgKzMzLDExIEBACiAjIGVuZGlmIC8qIExPTkdfTE9OR19NQVggKi8KICNlbmRpZgogCisjaWZkZWYgX19OZXRCU0RfXworI2RlZmluZQlDUF9USU1FX1RZUEUJdWludDY0X3QKKyNlbHNlCisjZGVmaW5lCUNQX1RJTUVfVFlQRQlsb25nCisjZW5kaWYKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAKQEAgLTU1LDExICs2MCwxMSBAQAogI2luY2x1ZGUgIm5ldHNoLmgiCiAjaW5jbHVkZSAibmV0bGliLmgiCiAKLXN0YXRpYyBsb25nIGxpYl9zdGFydF9jb3VudFtDUFVTVEFURVNdOwotc3RhdGljIGxvbmcgbGliX2VuZF9jb3VudFtDUFVTVEFURVNdOworc3RhdGljIENQX1RJTUVfVFlQRSBsaWJfc3RhcnRfY291bnRbQ1BVU1RBVEVTXTsKK3N0YXRpYyBDUF9USU1FX1RZUEUgbGliX2VuZF9jb3VudFtDUFVTVEFURVNdOwogCiB2b2lkCi1jcHVfdXRpbF9pbml0KHZvaWQpIAorY3B1X3V0aWxfaW5pdCh2b2lkKQogewogICByZXR1cm47CiB9CkBAIC03Nyw3ICs4Miw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1nZXRfY3B1X3RpbWUobG9uZyAqY3B1X3RpbWUpCitnZXRfY3B1X3RpbWUoQ1BfVElNRV9UWVBFICpjcHVfdGltZSkKIHsKICAgc2l6ZV90IGNwdV90aW1lX2xlbiA9IENQVVNUQVRFUyAqIHNpemVvZiAoY3B1X3RpbWVbMF0pOwogCkBAIC05OSwxOSArMTA0LDIxIEBACiBmbG9hdAogY2FsY19jcHVfdXRpbF9pbnRlcm5hbChmbG9hdCBlbGFwc2VkX3RpbWUpCiB7Ci0gIGxvbmcgc3VtX2lkbGUsIHN1bV9idXN5OworICBDUF9USU1FX1RZUEUgc3VtX2lkbGUsIHN1bV9idXN5OwogICBpbnQgaTsKIAorICBtZW1zZXQoJmxpYl9sb2NhbF9jcHVfc3RhdHMsIDAsIHNpemVvZihsaWJfbG9jYWxfY3B1X3N0YXRzKSk7CisKICAgZm9yIChzdW1fYnVzeSA9IDAsIGkgPSAwOyBpIDwgQ1BVU1RBVEVTOyBpKyspIHsKICAgICBpZiAoaSAhPSBDUF9JRExFKQogICAgICAgc3VtX2J1c3kgKz0gbGliX2VuZF9jb3VudFtpXSAtIGxpYl9zdGFydF9jb3VudFtpXTsKICAgfQogCiAgIHN1bV9pZGxlID0gbGliX2VuZF9jb3VudFtDUF9JRExFXSAtIGxpYl9zdGFydF9jb3VudFtDUF9JRExFXTsKLSAgbGliX2xvY2FsX2NwdV91dGlsID0gKGZsb2F0KXN1bV9idXN5IC8gKGZsb2F0KShzdW1fYnVzeSArIHN1bV9pZGxlKTsKLSAgbGliX2xvY2FsX2NwdV91dGlsICo9IDEwMC4wOworICBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsID0gKGZsb2F0KXN1bV9idXN5IC8gKGZsb2F0KShzdW1fYnVzeSArIHN1bV9pZGxlKTsKKyAgbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbCAqPSAxMDAuMDsKIAotICByZXR1cm4gbGliX2xvY2FsX2NwdV91dGlsOworICByZXR1cm4gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXRpbDsKIAogfQogdm9pZApkaWZmIC0tZ2l0IGEvbmV0bGliLmMgYi9zcmMvbmV0bGliLmMKc2ltaWxhcml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gbmV0bGliLmMKcmVuYW1lIHRvIHNyYy9uZXRsaWIuYwppbmRleCA4MzU5ODgxLi5mM2EzZmU1IDEwMDY0NAotLS0gYS9uZXRsaWIuYworKysgYi9zcmMvbmV0bGliLmMKQEAgLTEsNSArMSw1IEBACiBjaGFyICAgIG5ldGxpYl9pZFtdPSJcCi1AKCMpbmV0bGliLmMgKGMpIENvcHlyaWdodCAxOTkzLTIwMDcgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkuIFZlcnNpb24gMi40LjMiOworQCgjKW5ldGxpYi5jIChjKSBDb3B5cmlnaHQgMTk5My0yMDEyIEhld2xldHQtUGFja2FyZCBDb21wYW55LiBWZXJzaW9uIDIuNi4wIjsKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTI5LDggKzI5LDExIEBACiAvKiAgICAgIGZvcm1hdF91bml0cygpICAgICAgICAgIHJldHVybiB0aGUgZm9ybWF0IGluIGVuZ2xpc2ggICAgKi8KIC8qICAgICAgbXNlY19zbGVlcCgpICAgICAgICAgICAgc2xlZXAgZm9yIHNvbWUgbXNlY3MgICAgICAgICAgICAqLwogLyogICAgICBzdGFydF90aW1lcigpICAgICAgICAgICBzdGFydCBhIHRpbWVyICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIHJhbmRvbV9pcF9hZGRyZXNzKCkgICAgIHNlbGVjdCBhIHJhbmRvbSBJUCBhZGRyZXNzIGZyb20gKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHJhbmdlICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgIHRoZSByb3V0aW5lcyB5b3UgZ2V0IHdoZW4gV0FOVF9ETFBJIGlzIGRlZmluZWQuLi4gICAgICAgICAqLworLyogICAgICB0aGUgcm91dGluZXMgeW91IGdldCB3aGVuIFdBTlRfRExQSSBpcyBkZWZpbmVkLi4uICAgICAgICovCisvKiAgICAgIC4uLmFsbCBtb3ZlZCB0byBzcmMvbmV0dGVzdF9kbHBpLmMgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICBkbF9vcGVuKCkgICAgICAgICAgICAgICBvcGVuIGEgZmlsZSBkZXNjcmlwdG9yIGFuZCAgICAgICovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaCB0byB0aGUgY2FyZCAgICAgICAgICAgICAgKi8KQEAgLTU0LDEyICs1NywxNiBAQAogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSAvKiBJdCB3b3VsZCBzZWVtIHRoYXQgbW9zdCBvZiB0aGUgaW5jbHVkZXMgYmVpbmcgZG9uZSBoZXJlIGZyb20gKi8KLSAvKiAic3lzLyIgYWN0dWFsbHkgaGF2ZSBoaWdoZXItbGV2ZWwgd3JhcHBlcnMgYXQganVzdCAvdXNyL2luY2x1ZGUuICovCi0gLyogVGhpcyBpcyBiYXNlZCBvbiBhIHNwb3QtY2hlY2sgb2YgYSBjb3VwbGUgc3lzdGVtcyBhdCBteSBkaXNwb3NhbC4gKi8KLSAvKiBJZiB5b3UgaGF2ZSB0cm91YmxlIGNvbXBpbGluZyB5b3UgbWF5IHdhbnQgdG8gYWRkICJzeXMvIiByYWogMTAvOTUgKi8KKyAvKiBJdCB3b3VsZCBzZWVtIHRoYXQgbW9zdCBvZiB0aGUgaW5jbHVkZXMgYmVpbmcgZG9uZSBoZXJlIGZyb20KKyAgICAic3lzLyIgYWN0dWFsbHkgaGF2ZSBoaWdoZXItbGV2ZWwgd3JhcHBlcnMgYXQganVzdCAvdXNyL2luY2x1ZGUuCisgICAgVGhpcyBpcyBiYXNlZCBvbiBhIHNwb3QtY2hlY2sgb2YgYSBjb3VwbGUgc3lzdGVtcyBhdCBteSBkaXNwb3NhbC4KKyAgICBJZiB5b3UgaGF2ZSB0cm91YmxlIGNvbXBpbGluZyB5b3UgbWF5IHdhbnQgdG8gYWRkICJzeXMvIiByYWoKKyAgICAxMC85NSAqLwogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2lmZGVmIEhBVkVfU1lTQ0FMTF9ICisjaW5jbHVkZSA8c3lzY2FsbC5oPgorI2VuZGlmCiAjaWZkZWYgTVBFCiAjICBkZWZpbmUgTlNJRyBfTlNJRwogI2VuZGlmIC8qIE1QRSAqLwpAQCAtNzYsMTAgKzgzLDEwIEBACiAKIAogI2lmbmRlZiBXSU4zMgotIC8qIGF0IHNvbWUgcG9pbnQsIEkgd291bGQgbGlrZSB0byBnZXQgcmlkIG9mIGFsbCB0aGVzZSAic3lzLyIgKi8KLSAvKiBpbmNsdWRlcyB3aGVyZSBhcHByb3ByaWF0ZS4gaWYgeW91IGhhdmUgYSBzeXN0ZW0gdGhhdCByZXF1aXJlcyAqLwotIC8qIHRoZW0sIHNwZWFrIG5vdywgb3IgeW91ciBzeXN0ZW0gbWF5IG5vdCBjb21pbGUgbGF0ZXIgcmV2aXNpb25zIG9mICovCi0gLyogbmV0cGVyZi4gcmFqIDEvOTYgKi8KKyAvKiBhdCBzb21lIHBvaW50LCBJIHdvdWxkIGxpa2UgdG8gZ2V0IHJpZCBvZiBhbGwgdGhlc2UgInN5cy8iCisgICAgaW5jbHVkZXMgd2hlcmUgYXBwcm9wcmlhdGUuIGlmIHlvdSBoYXZlIGEgc3lzdGVtIHRoYXQgcmVxdWlyZXMvCisgICAgdGhlbSwgc3BlYWsgbm93LCBvciB5b3VyIHN5c3RlbSBtYXkgbm90IGNvbXBpbGUgbGF0ZXIgcmV2aXNpb25zIG9mCisgICAgbmV0cGVyZi4gcmFqIDEvOTYgKi8KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90aW1lcy5oPgpAQCAtMTA0LDcgKzExMSw3IEBACiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNkZWZpbmUgbmV0cGVyZl9zb2NrbGVuX3Qgc29ja2xlbl90CiAjaW5jbHVkZSA8d2luZG93cy5oPgotCisjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KIC8qIHRoZSBvbmx5IHRpbWUgc29tZW9uZSBzaG91bGQgbmVlZCB0byBkZWZpbmUgRE9OVF9JUFY2IGluIHRoZQogICAgInNvdXJjZXMiIGZpbGUgaXMgaWYgdGhleSBhcmUgdHJ5aW5nIHRvIGNvbXBpbGUgb24gV2luZG93cyAyMDAwIG9yCiAgICBOVDQgYW5kIEkgc3VzcGVjdCB0aGlzIG1heSBub3QgYmUgdGhlaXIgb25seSBwcm9ibGVtIDopICovCkBAIC0xMTksMzIgKzEyNiwyMyBAQAogCiAjZW5kaWYgLyogV0lOMzIgKi8KIAorI2lmZGVmIEhBVkVfVU5BTUUKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisKICNpZmRlZiBfQUlYCiAjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgogI2luY2x1ZGUgPHN5cy9zY2hlZC5oPgogI2luY2x1ZGUgPHN5cy9wcmkuaD4KICNkZWZpbmUgUFJJT1JJVFkgUFJJX0xPVwogI2Vsc2UvKiBfQUlYICovCi0jaWZkZWYgX19zZ2kgCisjaWZkZWYgX19zZ2kKICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KICNpbmNsdWRlIDxzeXMvc2NoZWRjdGwuaD4KICNkZWZpbmUgUFJJT1JJVFkgTkRQTE9NSU4KICNlbmRpZiAvKiBfX3NnaSAqLwogI2VuZGlmIC8qIF9BSVggKi8KIAotI2lmZGVmIFdBTlRfRExQSQotI2luY2x1ZGUgPHN5cy9zdHJlYW0uaD4KLSNpbmNsdWRlIDxzeXMvc3Ryb3B0cy5oPgotI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0jaWZkZWYgX19vc2ZfXwotI2luY2x1ZGUgPHN5cy9kbHBpaGRyLmg+Ci0jZWxzZSAvKiBfX29zZl9fICovCi0jaW5jbHVkZSA8c3lzL2RscGkuaD4KLSNpZmRlZiBfX2hwdXgKLSNpbmNsdWRlIDxzeXMvZGxwaV9leHQuaD4KLSNlbmRpZiAvKiBfX2hwdXggKi8KLSNlbmRpZiAvKiBfX29zZl9fICovCi0jZW5kaWYgLyogV0FOVF9ETFBJICovCiAKICNpZmRlZiBIQVZFX01QQ1RMCiAjaW5jbHVkZSA8c3lzL21wY3RsLmg+CkBAIC0xNTUsOSArMTUzLDggQEAKICNlbmRpZgogCiAKLSNpZmRlZiBXQU5UX0hJU1RPR1JBTQogI2luY2x1ZGUgImhpc3QuaCIKLSNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICBMb2NhbCBJbmNsdWRlIEZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0xNjcsNiArMTY0LDcgQEAKICNpbmNsdWRlICJuZXRsaWIuaCIKICNpbmNsdWRlICJuZXRzaC5oIgogI2luY2x1ZGUgIm5ldGNwdS5oIgorI2luY2x1ZGUgIm5ldHBlcmZfdmVyc2lvbi5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtMTg4LDE1ICsxODYsMTkgQEAKICNkZWZpbmUgTE9OR19MT05HX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKICNlbmRpZiAvKiBMT05HX0xPTkdfTUFYICovCiAKLSAvKiBvbGRlciB2ZXJzaW9ucyBvZiBuZXRwZXJmIGtuZXcgYWJvdXQgdGhlIEhQIGtlcm5lbCBJRExFIGNvdW50ZXIuICovCi0gLyogdGhpcyBpcyBub3cgb2Jzb2xldGUgLSBpbiBmYXZvciBvZiBlaXRoZXIgcHN0YXQoKSwgdGltZXMsIG9yIGEgKi8KLSAvKiBwcm9jZXNzLWxldmVsIGxvb3BlciBwcm9jZXNzLiB3ZSBhbHNvIG5vdyByZXF1aXJlIHN1cHBvcnQgZm9yIHRoZSAqLwotIC8qICJsb25nIiBpbnRlZ2VyIHR5cGUuIHJhaiA0Lzk1LiAgKi8KKyAvKiBvbGRlciB2ZXJzaW9ucyBvZiBuZXRwZXJmIGtuZXcgYWJvdXQgdGhlIEhQIGtlcm5lbCBJRExFIGNvdW50ZXIuCisgICAgdGhpcyBpcyBub3cgb2Jzb2xldGUgLSBpbiBmYXZvciBvZiBlaXRoZXIgcHN0YXQoKSwgdGltZXMsIG9yIGEKKyAgICBwcm9jZXNzLWxldmVsIGxvb3BlciBwcm9jZXNzLiB3ZSBhbHNvIG5vdyByZXF1aXJlIHN1cHBvcnQgZm9yIHRoZQorICAgICJsb25nIiBpbnRlZ2VyIHR5cGUuIHJhaiA0Lzk1LiAgKi8KIAotaW50IAoraW50CiAgIGxpYl9udW1fbG9jX2NwdXMsICAgIC8qIHRoZSBudW1iZXIgb2YgY3B1cyBpbiB0aGUgc3lzdGVtICovCiAgIGxpYl9udW1fcmVtX2NwdXM7ICAgIC8qIGhvdyBtYW55IHdlIHRoaW5rIGFyZSBpbiB0aGUgcmVtb3RlICovCiAKK3N0cnVjdCBjcHVfc3RhdHNfc3RydWN0CisgIGxpYl9sb2NhbF9jcHVfc3RhdHMsCisgIGxpYl9yZW1vdGVfY3B1X3N0YXRzOworCiAjZGVmaW5lIFBBR0VTX1BFUl9DSElMRCAyCiAKIGludCAgICAgbGliX3VzZV9pZGxlOwpAQCAtMjA2LDkgKzIwOCw3IEBACiBzdHJ1Y3QgIHRpbWV6b25lICAgICAgICB0ejsKIGZsb2F0ICAgbGliX2VsYXBzZWQsCiAgICAgICAgIGxpYl9sb2NhbF9tYXhyYXRlLAotICAgICAgICBsaWJfcmVtb3RlX21heHJhdGUsCi0gICAgICAgIGxpYl9sb2NhbF9jcHVfdXRpbCwKLSAgICAgICAgbGliX3JlbW90ZV9jcHVfdXRpbDsKKyAgICAgICAgbGliX3JlbW90ZV9tYXhyYXRlOwogCiBmbG9hdCAgIGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbTUFYQ1BVU107CiBpbnQgICAgIGxpYl9jcHVfbWFwW01BWENQVVNdOwpAQCAtMjE3LDExICsyMTcsMTIgQEAKIGludCAgICAgKnJlc3BvbnNlX2FycmF5OwogCiAvKiBJTlZBTElEX1NPQ0tFVCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSA9PSAodW5zaWduZWQgaW50KSh+MCkgPT0gLTEgKi8KLVNPQ0tFVCAgbmV0bGliX2NvbnRyb2wgPSBJTlZBTElEX1NPQ0tFVDsgIAorU09DS0VUICBuZXRsaWJfY29udHJvbCA9IElOVkFMSURfU09DS0VUOwogU09DS0VUICBzZXJ2ZXJfc29jayA9IElOVkFMSURfU09DS0VUOworaW50ICAgICBjb250cm9sX2ZhbWlseSA9IEFGX1VOU1BFQzsKIAogLyogZ2xvYmFsIHZhcmlhYmxlcyB0byBob2xkIHRoZSB2YWx1ZSBmb3IgcHJvY2Vzc29yIGFmZmluaXR5ICovCi1pbnQgICAgIGxvY2FsX3Byb2NfYWZmaW5pdHkscmVtb3RlX3Byb2NfYWZmaW5pdHkgPSAtMTsKK2ludCAgICAgbG9jYWxfcHJvY19hZmZpbml0eSA9IC0xLHJlbW90ZV9wcm9jX2FmZmluaXR5ID0gLTE7CiAKIC8qIHRoZXNlIGFyZSB0byBhbGxvdyBuZXRwZXJmIHRvIGJlIHJ1biBlYXNpbHkgdGhyb3VnaCB0aG9zZSBldmlsLAogICAgZW5kLXRvLWVuZCBicmVha2luZyB0aGluZ3Mga25vd24gYXMgZmlyZXdhbGxzICovCkBAIC0yMzEsMTQgKzIzMiwyMyBAQAogY2hhciAqbG9jYWxfZGF0YV9hZGRyZXNzPU5VTEw7CiBjaGFyICpyZW1vdGVfZGF0YV9hZGRyZXNzPU5VTEw7CiAKK2NoYXIgKmxvY2FsX3N5c25hbWUsICpyZW1vdGVfc3lzbmFtZTsKK2NoYXIgKmxvY2FsX3JlbGVhc2UsICpyZW1vdGVfcmVsZWFzZTsKK2NoYXIgKmxvY2FsX3ZlcnNpb24sICpyZW1vdGVfdmVyc2lvbjsKK2NoYXIgKmxvY2FsX21hY2hpbmUsICpyZW1vdGVfbWFjaGluZTsKKwogaW50IGxvY2FsX2RhdGFfZmFtaWx5PUFGX1VOU1BFQzsKIGludCByZW1vdGVfZGF0YV9mYW1pbHk9QUZfVU5TUEVDOwogCi0gLyogaW4gdGhlIHBhc3QsIEkgd2FzIG92ZXJsYXlpbmcgYSBzdHJ1Y3R1cmUgb24gYW4gYXJyYXkgb2YgaW50cy4gbm93ICovCi0gLyogSSBhbSBnb2luZyB0byBoYXZlIGEgInJlYWwiIHN0cnVjdHVyZSwgYW5kIHBvaW50IGFuIGFycmF5IG9mIGludHMgKi8KLSAvKiBhdCBpdC4gdGhlIHJlYWwgc3RydWN0dXJlIHdpbGwgYmUgZm9yY2VkIHRvIHRoZSBzYW1lIGFsaWdubWVudCBhcyAqLwotIC8qIHRoZSB0eXBlICJkb3VibGUuIiB0aGlzIGNoYW5nZSB3aWxsIG1lYW4gdGhhdCBwcmUtMi4xIG5ldHBlcmZzICovCi0gLyogY2Fubm90IGJlIG1peGVkIHdpdGggMi4xIGFuZCBsYXRlci4gcmFqIDExLzk1ICovCitjaGFyICpuZXRwZXJmX3ZlcnNpb247CisKK2VudW0gbmV0cGVyZl9vdXRwdXRfbW9kZXMgbmV0cGVyZl9vdXRwdXRfbW9kZSA9IEhVTUFOOworCisvKiBpbiB0aGUgcGFzdCwgSSB3YXMgb3ZlcmxheWluZyBhIHN0cnVjdHVyZSBvbiBhbiBhcnJheSBvZiBpbnRzLiBub3cKKyAgIEkgYW0gZ29pbmcgdG8gaGF2ZSBhICJyZWFsIiBzdHJ1Y3R1cmUsIGFuZCBwb2ludCBhbiBhcnJheSBvZiBpbnRzCisgICBhdCBpdC4gdGhlIHJlYWwgc3RydWN0dXJlIHdpbGwgYmUgZm9yY2VkIHRvIHRoZSBzYW1lIGFsaWdubWVudCBhcworICAgdGhlIHR5cGUgImRvdWJsZS4iIHRoaXMgY2hhbmdlIHdpbGwgbWVhbiB0aGF0IHByZS0yLjEgbmV0cGVyZnMKKyAgIGNhbm5vdCBiZSBtaXhlZCB3aXRoIDIuMSBhbmQgbGF0ZXIuIHJhaiAxMS85NSAqLwogCiB1bmlvbiAgIG5ldHBlcmZfcmVxdWVzdF9zdHJ1Y3QgIG5ldHBlcmZfcmVxdWVzdDsKIHVuaW9uICAgbmV0cGVyZl9yZXNwb25zZV9zdHJ1Y3QgbmV0cGVyZl9yZXNwb25zZTsKQEAgLTI0NiwxOCArMjU2LDEwIEBACiBGSUxFICAgICp3aGVyZTsKIAogY2hhciAgICBsaWJmbXQgPSAnPyc7Ci0gICAgICAgIAotI2lmZGVmIFdBTlRfRExQSQotLyogc29tZSBzdHVmZiBmb3IgRExQSSBjb250cm9sIG1lc3NhZ2VzICovCi0jZGVmaW5lIERMUElfREFUQV9TSVpFIDIwNDgKLQotdW5zaWduZWQgbG9uZyBjb250cm9sX2RhdGFbRExQSV9EQVRBX1NJWkVdOwotc3RydWN0IHN0cmJ1ZiBjb250cm9sX21lc3NhZ2UgPSB7RExQSV9EQVRBX1NJWkUsIDAsIChjaGFyICopY29udHJvbF9kYXRhfTsKLQotI2VuZGlmIC8qIFdBTlRfRExQSSAqLwogCiAjaWZkZWYgV0lOMzIKIEhBTkRMRSBoQWxhcm0gPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKK2ludCB0aW1lZF9vdXQ9MDsKICNlbmRpZgogCiBpbnQgICAgIHRpbWVzX3VwOwpAQCAtMjg3LDcgKzI4OSw3IEBACiAgICAgYnl0ZXMuICB0aGlzIHNob3VsZCBiZSBtb3JlIHRoYW4gZW5vdWdoIHRvIGJlIHN1cmUgdGhhdCB0aGVyZSBpcwogICAgIG5vIHBhZ2UgIG9yIGNhY2hlIHRocmFzaGluZyBieSBsb29wZXIgcHJvY2Vzc2VzIG9uIE1QCiAgICAgc3lzdGVtcy4gb3RoZXJ3aXNlICB0aGF0J3MgcmVhbGx5IGp1c3QgdG9vIGJhZCAtIHN1Y2ggc3lzdGVtcwotICAgIHNob3VsZCBkZWZpbmUgIF9TQ19QQUdFX1NJWkUgLSByYWogNC85NSAqLyAKKyAgICBzaG91bGQgZGVmaW5lICBfU0NfUEFHRV9TSVpFIC0gcmFqIDQvOTUgKi8KIAogI2lmbmRlZiBfU0NfUEFHRV9TSVpFCiAjaWZkZWYgV0lOMzIKQEAgLTMwNyw3ICszMDksMTggQEAKIH0KIAogDAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKKyNpZmRlZiBXSU4zMgorSEFORExFIFdpblRpbWVyOworVUlOVCB0aW1lclJlczsKK3ZvaWQgc3RvcF9pdGltZXIoKQoreworCUNhbmNlbFdhaXRhYmxlVGltZXIoV2luVGltZXIpOworCUNsb3NlSGFuZGxlKFdpblRpbWVyKTsKKwl0aW1lRW5kUGVyaW9kKHRpbWVyUmVzKTsKK30KKyNlbHNlCiBzdGF0aWMgdW5zaWduZWQgaW50IHVzZWNfcGVyX2l0dmw7CiAKIApAQCAtMzIwLDE2ICszMzMsMTcgQEAKICAgc3RydWN0IGl0aW1lcnZhbCBvbGRfaW50ZXJ2YWw7CiAKICAgbmV3X2ludGVydmFsLml0X2ludGVydmFsLnR2X3NlYyA9IDA7Ci0gIG5ld19pbnRlcnZhbC5pdF9pbnRlcnZhbC50dl91c2VjID0gMDsgIAorICBuZXdfaW50ZXJ2YWwuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDA7CiAgIG5ld19pbnRlcnZhbC5pdF92YWx1ZS50dl9zZWMgPSAwOwotICBuZXdfaW50ZXJ2YWwuaXRfdmFsdWUudHZfdXNlYyA9IDA7ICAKKyAgbmV3X2ludGVydmFsLml0X3ZhbHVlLnR2X3VzZWMgPSAwOwogICBpZiAoc2V0aXRpbWVyKElUSU1FUl9SRUFMLCZuZXdfaW50ZXJ2YWwsJm9sZF9pbnRlcnZhbCkgIT0gMCkgewotICAgIC8qIHRoZXJlIHdhcyBhIHByb2JsZW0gYXJtaW5nIHRoZSBpbnRlcnZhbCB0aW1lciAqLyAKKyAgICAvKiB0aGVyZSB3YXMgYSBwcm9ibGVtIGFybWluZyB0aGUgaW50ZXJ2YWwgdGltZXIgKi8KICAgICBwZXJyb3IoIm5ldHBlcmY6IHNldGl0aW1lciIpOwogICAgIGV4aXQoMSk7CiAgIH0KICAgcmV0dXJuOwogfQorI2VuZGlmIC8qIFdJTjMyICovCiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KIAwKIApAQCAtMzUwLDExICszNjQsMTEgQEAKIHsKICAgc3RhdGljIGNoYXIgKnBsYWNlID0gRU1TRzsgICAgLyogb3B0aW9uIGxldHRlciBwcm9jZXNzaW5nICovCiAgIHJlZ2lzdGVyIGNoYXIgKm9saTsgICAgICAgICAgICAgICAgICAgLyogb3B0aW9uIGxldHRlciBsaXN0IGluZGV4ICovCi0gIAorCiAgIGlmICghKnBsYWNlKSB7CiAgICAgLyogdXBkYXRlIHNjYW5uaW5nIHBvaW50ZXIgKi8KICAgICAgIGlmIChvcHRpbmQgPj0gYXJnYyB8fCAqKHBsYWNlID0gYXJndltvcHRpbmRdKSAhPSAnLScgfHwgISorK3BsYWNlKSB7Ci0gICAgICAgIHJldHVybiBFT0Y7IAorICAgICAgICByZXR1cm4gRU9GOwogICAgICAgfQogICAgIGlmICgqcGxhY2UgPT0gJy0nKSB7CiAgICAgICAvKiBmb3VuZCAiLS0iICovCkBAIC0zNjMsNyArMzc3LDcgQEAKICAgICAgICAgcmV0dXJuIEVPRjsKICAgICB9CiAgIH0KLSAgCisKICAgLyogb3B0aW9uIGxldHRlciBva2F5PyAqLwogICBpZiAoKG9wdG9wdCA9IChpbnQpKnBsYWNlKyspID09IChpbnQpJzonCiAgICAgICB8fCAhKG9saSA9IHN0cmNocihvc3RyLCBvcHRvcHQpKSkgewpAQCAtMzczLDcgKzM4Nyw3IEBACiAgICAgZXJyb3IoImlsbGVnYWwgb3B0aW9uIik7CiAgICAgcmV0dXJuIEJBRENIOwogICB9Ci0gIGlmICgqKytvbGkgIT0gJzonKSB7ICAKKyAgaWYgKCorK29saSAhPSAnOicpIHsKICAgICAvKiBkb24ndCBuZWVkIGFyZ3VtZW50ICovCiAgICAgb3B0YXJnID0gTlVMTDsKICAgICBpZiAoISpwbGFjZSkKQEAgLTQxNCwxMSArNDI4LDExIEBACiAgICAgZHdFcnJvciA9IEdldExhc3RFcnJvcigpOwogICAgIGR3UmVzdWx0ID0gRm9ybWF0TWVzc2FnZSgKICAgICAgICAgRk9STUFUX01FU1NBR0VfQUxMT0NBVEVfQlVGRkVSfEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHxGT1JNQVRfTUVTU0FHRV9BUkdVTUVOVF9BUlJBWSwKLSAgICAgICAgTlVMTCwgCi0gICAgICAgIGR3RXJyb3IsIAotICAgICAgICBMQU5HX05FVVRSQUwsIAotICAgICAgICAoTFBUU1RSKSZzelRlbXAsIAotICAgICAgICAwLCAKKyAgICAgICAgTlVMTCwKKyAgICAgICAgZHdFcnJvciwKKyAgICAgICAgTEFOR19ORVVUUkFMLAorICAgICAgICAoTFBUU1RSKSZzelRlbXAsCisgICAgICAgIDAsCiAgICAgICAgIE5VTEwgKTsKIAogICAgIGlmIChkd1Jlc3VsdCkKQEAgLTQzMiw5ICs0NDYsMzYgQEAKIH0KICNlbmRpZiAvKiBXSU4zMiAqLwogCitjaGFyICoKK25zZWNfZW5hYmxlZF90b19zdHIoaW50IGVuYWJsZWQpIHsKKyAgc3dpdGNoIChlbmFibGVkKSB7CisgIGNhc2UgTlNFQ19VTktOT1dOOgorICAgIHJldHVybigiVW5rbm93biIpOworICBjYXNlIE5TRUNfRElTQUJMRUQ6CisgICAgcmV0dXJuKCJEaXNhYmxlZCIpOworICBjYXNlIE5TRUNfUEVSTUlTU0lWRToKKyAgICByZXR1cm4oIlBlcm1pc3NpdmUiKTsKKyAgY2FzZSBOU0VDX0VORk9SQ0lORzoKKyAgICByZXR1cm4oIkVuZm9yY2luZyIpOworICBkZWZhdWx0OgorICAgIHJldHVybigiVU5LTk9XTiBNT0RFIik7CisgIH0KK30KKworY2hhciAqIG5zZWNfdHlwZV90b19zdHIoaW50IHR5cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7CisgIGNhc2UgTlNFQ19UWVBFX1VOS05PV046CisgICAgcmV0dXJuKCJVbmtub3duIik7CisgIGNhc2UgTlNFQ19UWVBFX1NFTElOVVg6CisgICAgcmV0dXJuKCJTRUxpbnV4Iik7CisgIGRlZmF1bHQ6CisgICAgcmV0dXJuKCJVTktOT1dOIFRZUEUiKTsKKyAgfQorfQorCiAMCiBjaGFyICoKLWluZXRfdHRvcyhpbnQgdHlwZSkgCitpbmV0X3R0b3MoaW50IHR5cGUpCiB7CiAgIHN3aXRjaCAodHlwZSkgewogICBjYXNlIFNPQ0tfREdSQU06CkBAIC00NDMsNiArNDg0LDE0IEBACiAgIGNhc2UgU09DS19TVFJFQU06CiAgICAgcmV0dXJuKCJTT0NLX1NUUkVBTSIpOwogICAgIGJyZWFrOworI2lmZGVmIFNPQ0tfRENDUAorICBjYXNlIFNPQ0tfRENDUDoKKyAgICByZXR1cm4oIlNPQ0tfRENDUCIpOworI2VuZGlmCisjaWZkZWYgU09DS19TRVFQQUNLRVQKKyAgY2FzZSBTT0NLX1NFUVBBQ0tFVDoKKyAgICByZXR1cm4oIlNPQ0tfU0VRUEFDS0VUIik7CisjZW5kaWYKICAgZGVmYXVsdDoKICAgICByZXR1cm4oIlNPQ0tfVU5LTk9XTiIpOwogICB9CkBAIC00NTAsNiArNDk5LDcgQEAKIAogCiAMCisKIGNoYXIgdW5rbm93blszMl07CiAKIGNoYXIgKgpAQCAtNDY2LDYgKzUxNiwxNiBAQAogICAgIHJldHVybigiSVBQUk9UT19TQ1RQIik7CiAgICAgYnJlYWs7CiAjZW5kaWYKKyNpZiBkZWZpbmVkKElQUFJPVE9fRENDUCkKKyAgY2FzZSBJUFBST1RPX0RDQ1A6CisgICAgcmV0dXJuICJJUFBST1RPX0RDQ1AiOworICAgIGJyZWFrOworI2VuZGlmCisjaWYgZGVmaW5lZChJUFBST1RPX1VEUExJVEUpCisgIGNhc2UgSVBQUk9UT19VRFBMSVRFOgorICAgIHJldHVybiAiSVBQUk9UT19VRFBMSVRFIjsKKyAgICBicmVhazsKKyNlbmRpZgogICBkZWZhdWx0OgogICAgIHNucHJpbnRmKHVua25vd24sc2l6ZW9mKHVua25vd24pLCJJUFBST1RPX1VOS05PV04oJWQpIixwcm90b2NvbCk7CiAgICAgcmV0dXJuKHVua25vd24pOwpAQCAtNDc2LDI0ICs1MzYsMjUgQEAKICNpZm5kZWYgQUZfSU5FVF9TRFAKICNkZWZpbmUgQUZfSU5FVF9TRFAgMjcKICNkZWZpbmUgUEZfSU5FVF9TRFAgQUZfSU5FVF9TRFAKLSNlbmRpZiAKKyNlbmRpZgogCiBjaGFyICoKLWluZXRfZnRvcyhpbnQgZmFtaWx5KSAKK2luZXRfZnRvcyhpbnQgZmFtaWx5KQogewogICBzd2l0Y2goZmFtaWx5KSB7CiAgIGNhc2UgQUZfSU5FVDoKICAgICByZXR1cm4oIkFGX0lORVQiKTsKLSAgICBicmVhazsKICNpZiBkZWZpbmVkKEFGX0lORVQ2KQogICBjYXNlIEFGX0lORVQ2OgogICAgIHJldHVybigiQUZfSU5FVDYiKTsKLSAgICBicmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQoQUZfSU5FVF9TRFApCiAgIGNhc2UgQUZfSU5FVF9TRFA6CiAgICAgcmV0dXJuKCJBRl9JTkVUX1NEUCIpOwotICAgIGJyZWFrOworI2VuZGlmCisjaWYgZGVmaW5lZChBRl9SRFMpCisgIGNhc2UgQUZfUkRTOgorICAgIHJldHVybigiQUZfUkRTIik7CiAjZW5kaWYKICAgZGVmYXVsdDoKICAgICByZXR1cm4oIkFGX1VOU1BFQyIpOwpAQCAtNTAxLDcgKzU2Miw3IEBACiB9CiAKIGludAotaW5ldF9udG9uKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIGludCBjbnQpIAoraW5ldF9udG9uKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIGludCBjbnQpCiAKIHsKIApAQCAtNTI5LDYgKzU5MCwxMyBAQAogICAgIH0KICAgICBicmVhazsKICNlbmRpZgorI2lmIGRlZmluZWQoQUZfUkRTKQorICBjYXNlIEFGX1JEUzoKKyAgICBpZiAoY250ID49IDQpIHsKKyAgICAgIG1lbWNweShkc3Qsc3JjLDQpOworICAgICAgcmV0dXJuIDQ7CisgICAgfQorI2VuZGlmCiAgIGRlZmF1bHQ6CiAgICAgU2V0X2Vycm5vKEVBRk5PU1VQUE9SVCk7CiAgICAgcmV0dXJuKC0xKTsKQEAgLTU0OSw4ICs2MTcsOCBAQAogICB1bnNpZ25lZCBjaGFyIHNjcmF0Y2g7CiAgIGludCBpOwogCi0gIC8qIG9uIHRob3NlIHN5c3RlbXMgd2hlcmUgbnRvaGwgaXMgYSBuby1vcCwgd2Ugd2FudCB0byByZXR1cm4gdGhlICovCi0gIC8qIG9yaWdpbmFsIHZhbHVlLCB1bmNoYW5nZWQgKi8KKyAgLyogb24gdGhvc2Ugc3lzdGVtcyB3aGVyZSBudG9obCBpcyBhIG5vLW9wLCB3ZSB3YW50IHRvIHJldHVybiB0aGUKKyAgICAgb3JpZ2luYWwgdmFsdWUsIHVuY2hhbmdlZCAqLwogCiAgIGlmIChudG9obCgxTCkgPT0gMUwpIHsKICAgICByZXR1cm4obmV0X2RvdWJsZSk7CkBAIC01NTgsMTIgKzYyNiwxMiBAQAogCiAgIGNvbnZfcmVjLndob2xlX3RoaW5nID0gbmV0X2RvdWJsZTsKIAotICAvKiB3ZSBrbm93IHRoYXQgaW4gdGhlIG1lc3NhZ2UgcGFzc2luZyByb3V0aW5lcyB0aGF0IG50b2hsIHdpbGwgaGF2ZSAqLwotICAvKiBiZWVuIGNhbGxlZCBvbiB0aGUgMzIgYml0IHF1YW50aXRpZXMuIHdlIG5lZWQgdG8gcHV0IHRob3NlIGJhY2sgKi8KLSAgLyogdGhlIHdheSB0aGV5IGJlbG9uZyBiZWZvcmUgd2Ugc3dhcCAqLworICAvKiB3ZSBrbm93IHRoYXQgaW4gdGhlIG1lc3NhZ2UgcGFzc2luZyByb3V0aW5lcyB0aGF0IG50b2hsIHdpbGwgaGF2ZQorICAgICBiZWVuIGNhbGxlZCBvbiB0aGUgMzIgYml0IHF1YW50aXRpZXMuIHdlIG5lZWQgdG8gcHV0IHRob3NlIGJhY2sKKyAgICAgdGhlIHdheSB0aGV5IGJlbG9uZyBiZWZvcmUgd2Ugc3dhcCAqLwogICBjb252X3JlYy53b3Jkc1swXSA9IGh0b25sKGNvbnZfcmVjLndvcmRzWzBdKTsKICAgY29udl9yZWMud29yZHNbMV0gPSBodG9ubChjb252X3JlYy53b3Jkc1sxXSk7Ci0gIAorCiAgIC8qIG5vdyBzd2FwICovCiAgIGZvciAoaT0wOyBpPD0gMzsgaSsrKSB7CiAgICAgc2NyYXRjaCA9IGNvbnZfcmVjLmJ5dGVzW2ldOwpAQCAtNTgxLDcgKzY0OSw3IEBACiAjZW5kaWYKIAogICByZXR1cm4oY29udl9yZWMud2hvbGVfdGhpbmcpOwotICAKKwogfQogCiBkb3VibGUKQEAgLTU5OCw4ICs2NjYsOCBAQAogICB1bnNpZ25lZCBjaGFyIHNjcmF0Y2g7CiAgIGludCBpOwogCi0gIC8qIG9uIHRob3NlIHN5c3RlbXMgd2hlcmUgbnRvaGwgaXMgYSBuby1vcCwgd2Ugd2FudCB0byByZXR1cm4gdGhlICovCi0gIC8qIG9yaWdpbmFsIHZhbHVlLCB1bmNoYW5nZWQgKi8KKyAgLyogb24gdGhvc2Ugc3lzdGVtcyB3aGVyZSBudG9obCBpcyBhIG5vLW9wLCB3ZSB3YW50IHRvIHJldHVybiB0aGUKKyAgICAgb3JpZ2luYWwgdmFsdWUsIHVuY2hhbmdlZCAqLwogCiAgIGlmIChudG9obCgxTCkgPT0gMUwpIHsKICAgICByZXR1cm4oaG9zdF9kb3VibGUpOwpAQCAtNjEzLDcgKzY4MSw3IEBACiAgICAgY29udl9yZWMuYnl0ZXNbaV0gPSBjb252X3JlYy5ieXRlc1s3LWldOwogICAgIGNvbnZfcmVjLmJ5dGVzWzctaV0gPSBzY3JhdGNoOwogICB9Ci0gIAorCiAjaWYgZGVmaW5lZChfX0ZMT0FUX1dPUkRfT1JERVIpICYmIGRlZmluZWQoX19CWVRFX09SREVSKQogICBpZiAoX19GTE9BVF9XT1JEX09SREVSICE9IF9fQllURV9PUkRFUikgewogICAgIC8qIEZpeHVwIG1peGVkIGVuZGlhbiBmbG9hdGluZyBwb2ludCBtYWNoaW5lcyAqLwpAQCAtNjIzLDE2ICs2OTEsMTY5IEBACiAgIH0KICNlbmRpZgogCi0gIC8qIHdlIGtub3cgdGhhdCBpbiB0aGUgbWVzc2FnZSBwYXNzaW5nIHJvdXRpbmVzIGh0b25sIHdpbGwgKi8KLSAgLyogYmUgY2FsbGVkIG9uIHRoZSAzMiBiaXQgcXVhbnRpdGllcy4gd2UgbmVlZCB0byBzZXQgdGhpbmdzIHVwIHNvICovCi0gIC8qIHRoYXQgd2hlbiB0aGlzIGhhcHBlbnMsIHRoZSBwcm9wZXIgb3JkZXIgd2lsbCBnbyBvdXQgb24gdGhlICovCi0gIC8qIG5ldHdvcmsgKi8KKyAgLyogd2Uga25vdyB0aGF0IGluIHRoZSBtZXNzYWdlIHBhc3Npbmcgcm91dGluZXMgaHRvbmwgd2lsbCBiZSBjYWxsZWQKKyAgICAgb24gdGhlIDMyIGJpdCBxdWFudGl0aWVzLiB3ZSBuZWVkIHRvIHNldCB0aGluZ3MgdXAgc28gdGhhdCB3aGVuCisgICAgIHRoaXMgaGFwcGVucywgdGhlIHByb3BlciBvcmRlciB3aWxsIGdvIG91dCBvbiB0aGUgbmV0d29yayAqLwogICBjb252X3JlYy53b3Jkc1swXSA9IGh0b25sKGNvbnZfcmVjLndvcmRzWzBdKTsKICAgY29udl9yZWMud29yZHNbMV0gPSBodG9ubChjb252X3JlYy53b3Jkc1sxXSk7Ci0gIAorCiAgIHJldHVybihjb252X3JlYy53aG9sZV90aGluZyk7Ci0gIAorCiB9CisKKwwKKworLyogVGhlIG9yaWdpbmFsIHBhdGNoIGZyb20gR29vZ2xlIHVzZWQgbHJhbmQ0OCwgYnV0IEkgaGF2ZSBiZWVuCisgICBpbmZvcm1lZCB0aGF0IGlzIG5vdCBlYXNpbHkgYXZhaWxhYmxlIHVuZGVyIFdpbmRvd3MuIFNvLCByYXRoZXIKKyAgIHRoYW4gaGF2ZSBzb21lICNpZmRlZnMgaGVyZSBJJ2xsIGp1c3Qgc2ltcGxpc3RpY2FsbHkgcmVwbGFjZQorICAgbHJhbmQ0OCB3aXRoIHJhbmQoKSwgd2hpY2ggc2hvdWxkIGJlICJnb29kIGVub3VnaCIgYXQgc29tZSBwb2ludCBpdAorICAgbWF5IGJlIHN1ZmZpY2llbnQgdG8ganVzdCBjYWxsIHJhbmQoKSBkaXJlY3RseSByYXRoZXIgdGhhbiBjYWxsCisgICB0aGlzIHJhaiAyMDEwMTEzMCAqLworCit1bnNpZ25lZCBpbnQKK3JhbmQzMigpeworICByZXR1cm4gKHVuc2lnbmVkIGludClyYW5kKCkgKiAyICsgcmFuZCgpICUgMjsKK30KKworLyogdGhpcyByb3V0aW5lIHdpbGwgc2V0IHRoZSBpcCBhZGRyZXNzIG9mIHRoZSBzb2NrYWRkciBpbiB0aGUKKyAgIGFkZHJpbmZvIHRvIGEgcmFuZG9tIG51bWJlciBpbiByYW5nZSwgYmFzZWQgb24gdGhlIGFkZHJlc3MKKyAgIGZhbWlseS4gZm9yIGdyaW5zLCB3ZSB3aWxsIHNhbml0eSBjaGVjayB0aGUgdmFsdWUgb2YgbWFza19sZW4KKyAgIGFnYWluc3QgdGhlIGFkZHJlc3MgZmFtaWx5LiBpbml0aWFsIHZlcnNpb24gZnJvbSBnb29nbGUsCisgICBlbmhhbmNlbWVudHMgYnkgcmFqIDIwMTAxMTI5ICovCit2b2lkCityYW5kb21faXBfYWRkcmVzcyhzdHJ1Y3QgYWRkcmluZm8gKnJlcywgaW50IG1hc2tfbGVuKQoreworICBzd2l0Y2gocmVzLT5haV9mYW1pbHkpIHsKKyAgY2FzZSBBRl9JTkVUOiB7CisgICAgc3RydWN0IHNvY2thZGRyX2luICpmb28gPSAoc3RydWN0IHNvY2thZGRyX2luICopcmVzLT5haV9hZGRyOworICAgIHVuc2lnbmVkIGludCBhZGRyID0gbnRvaGwoZm9vLT5zaW5fYWRkci5zX2FkZHIpOworICAgIHVuc2lnbmVkIGludCBtYXNrID0gKCh1bnNpZ25lZCBpbnQpMSA8PCAoMzIgLSBtYXNrX2xlbikpIC0gMTsKKworICAgIGlmICgobWFza19sZW4gPCAwKSB8fCAobWFza19sZW4gPiAzMikpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIk1hc2sgbGVuZ3RoIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMiBpbmNsdXNpdmUgZm9yIEFGX0lORVRcbiIpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAgIGV4aXQoLTEpOworICAgIH0KKworICAgIGFkZHIgPSBudG9obChmb28tPnNpbl9hZGRyLnNfYWRkcik7CisgICAgZG8geworICAgICAgYWRkciA9IChhZGRyICYgfm1hc2spIHwgKHJhbmQzMigpICYgbWFzayk7CisgICAgfSB3aGlsZSAoKGFkZHIgJiAweGZmKSA9PSAweGZmKTsKKyAgICBmb28tPnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKGFkZHIpOworICAgIGJyZWFrOworICB9CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgY2FzZSBBRl9JTkVUNjogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmZvbyA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopcmVzLT5haV9hZGRyOworCisgICAgdW5zaWduZWQgaW50IGksIGxlbjsKKyAgICB1bnNpZ25lZCBpbnQgKmFkZHIgPSAodW5zaWduZWQgaW50ICopJihmb28tPnNpbjZfYWRkci5zNl9hZGRyKTsKKyAgICB1bnNpZ25lZCBpbnQgbWFzazsKKworICAgIGlmICgobWFza19sZW4gPCAwKSB8fCAobWFza19sZW4gPiAxMjgpKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJNYXNrIGxlbmd0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTI4IGluY2x1c2l2ZSBmb3IgQUZfSU5FVFxuIik7CisgICAgICBmZmx1c2god2hlcmUpOworICAgICAgZXhpdCgtMSk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkgKyspeworICAgICAgYWRkcltpXSA9IG50b2hsKGFkZHJbaV0pOworICAgICAgbGVuID0gbWFza19sZW4gLSBpICogMzI7CisgICAgICBsZW4gPSAoKGxlbiA8IDMyKSA/IGxlbiA6IDMyKTsKKyAgICAgIGxlbiA9ICgobGVuID4gMCkgPyBsZW4gOiAwKTsKKyAgICAgIG1hc2sgPSAoKHVuc2lnbmVkIGludCkxIDw8ICgzMiAtIGxlbikpIC0gMTsKKyAgICAgIGFkZHJbaV0gPSAoYWRkcltpXSAmIH5tYXNrKSB8IChyYW5kMzIoKSAmIG1hc2spOworICAgICAgYWRkcltpXSA9IGh0b25sKGFkZHJbaV0pOworICAgICB9CisgICAgYnJlYWs7CisgIH0KKyNlbmRpZgorICBkZWZhdWx0OgorICAgIGZwcmludGYod2hlcmUsCisgICAgICAgICAgICAiVW5leHBlY3RlZCBBZGRyZXNzIEZhbWlseSBvZiAldVxuIixyZXMtPmFpX2ZhbWlseSk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorfQorDAorI2lmIGRlZmluZWQoSEFWRV9TRU5ERklMRSkKK2ludCBuZXRwZXJmX3NlbmRmaWxlKFNPQ0tFVCBzZW5kX3NvY2tldCwgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3JpbmcpIHsKKworICBpbnQgIGxlbjsKKyAgaW50ICByZXQgPSAwOworCisjaWYgZGVmaW5lZChfX2xpbnV4KSB8fCBkZWZpbmVkKF9fc3VuKQorICBvZmZfdCAgICAgc2NyYXRjaF9vZmZzZXQ7ICAgLyogdGhlIGxpbnV4IHNlbmRmaWxlKCkgY2FsbCB3aWxsIHVwZGF0ZQorCQkJCSB0aGUgb2Zmc2V0IHZhcmlhYmxlLCB3aGljaCBpcworCQkJCSBzb21ldGhpbmcgd2UgZG8gX25vdF8gd2FudCB0byBoYXBwZW4KKwkJCQkgdG8gdGhlIHZhbHVlIGluIHRoZSBzZW5kX3JpbmchIHNvLCB3ZQorCQkJCSBoYXZlIHRvIHVzZSBhIHNjcmF0Y2ggdmFyaWFibGUuICovCisjZW5kaWYgLyogX19saW51eCAgfHwgZGVmaW5lZChfX3N1bikgKi8KKworI2lmIGRlZmluZWQgKF9fc3VuKQorICAgc2l6ZV90ICBzY3JhdGNoX2xlbjsJLyogdGhlIHN1biBzZW5kZmlsZXYoKSBuZWVkcyBhIHBsYWNlIHRvCisJCQkgICB0ZWxsIHVzIGhvdyBtYW55IGJ5dGVzIHdlcmUgd3JpdHRlbiwKKwkJCSAgIGV2ZW4gdGhvdWdoIGl0IGFsc28gcmV0dXJucyB0aGUgdmFsdWUgKi8KKyAgIHNlbmRmaWxldmVjX3Qgc3Y7CisjZW5kaWYgLyogX19zdW4gKi8KKworICAgICAgLyogeW91IGNhbiBsb29rIGF0IG5ldGxpYi5oIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWVsZHMgd2UKKwkgYXJlIHBhc3NpbmcgdG8gc2VuZGZpbGUoKS4gMDgvMjAwMCAqLworI2lmIGRlZmluZWQoX19saW51eCkKKyAgICAgIHNjcmF0Y2hfb2Zmc2V0ID0gc2VuZF9yaW5nLT5vZmZzZXQ7CisgICAgICBsZW49c2VuZGZpbGUoc2VuZF9zb2NrZXQsCisJCSAgIHNlbmRfcmluZy0+ZmlsZGVzLAorCQkgICAmc2NyYXRjaF9vZmZzZXQsICAgLyogbW9kaWZpZWQgYWZ0ZXIgdGhlIGNhbGwhICovCisJCSAgIHNlbmRfcmluZy0+bGVuZ3RoKTsKKyNlbGlmIGRlZmluZWQgKF9fc3VuKQorICAgICAgLyogV2UgbXVzdCBjYWxsIHdpdGggU0ZWX05PV0FJVCBhbmQgYSBsYXJnZSBmaWxlIHNpemUgKD49IDE2TUIpCisJIHRvIGdldCB6ZXJvLWNvcHksIGFzIHdlbGwgYXMgY29tcGlsaW5nIHdpdGgKKwkgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0ICovCisgICAgICBzdi5zZnZfZmQgPSBzZW5kX3JpbmctPmZpbGRlczsKKyAgICAgIHN2LnNmdl9mbGFnID0gU0ZWX05PV0FJVDsKKyAgICAgIHN2LnNmdl9vZmYgPSBzZW5kX3JpbmctPm9mZnNldDsKKyAgICAgIHN2LnNmdl9sZW4gPSAgc2VuZF9yaW5nLT5sZW5ndGg7CisgICAgICBsZW4gPSBzZW5kZmlsZXYoc2VuZF9zb2NrZXQsICZzdiwgMSwgJnNjcmF0Y2hfbGVuKTsKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCisgICAgICAvKiBzbyBjbG9zZSB0byBIUC1VWCBhbmQgeWV0IHNvIGZhciBhd2F5Li4uIDopICovCisgICAgICByZXQgPSBzZW5kZmlsZShzZW5kX3JpbmctPmZpbGRlcywKKwkJICAgICBzZW5kX3NvY2tldCwKKwkJICAgICBzZW5kX3JpbmctPm9mZnNldCwKKwkJICAgICBzZW5kX3JpbmctPmxlbmd0aCwKKwkJICAgICBOVUxMLAorCQkgICAgIChvZmZfdCAqKSZsZW4sCisJCSAgICAgc2VuZF9yaW5nLT5mbGFncyk7CisjZWxpZiBkZWZpbmVkKFVTRV9PU1gpCisgICAgICBsZW4gPSBzZW5kX3JpbmctPmxlbmd0aDsKKyAgICAgIHJldCA9IHNlbmRmaWxlKHNlbmRfcmluZy0+ZmlsZGVzLAorCQkgICAgIHNlbmRfc29ja2V0LAorCQkgICAgIHNlbmRfcmluZy0+b2Zmc2V0LAorCQkgICAgIChvZmZfdCAqKSZsZW4sCisJCSAgICAgTlVMTCwKKwkJICAgICBzZW5kX3JpbmctPmZsYWdzKTsKKyNlbHNlIC8qIG9yaWdpbmFsIHNlbmRpbGUgSFAtVVggKi8KKyAgICAgIGxlbj1zZW5kZmlsZShzZW5kX3NvY2tldCwKKwkJICAgc2VuZF9yaW5nLT5maWxkZXMsCisJCSAgIHNlbmRfcmluZy0+b2Zmc2V0LAorCQkgICBzZW5kX3JpbmctPmxlbmd0aCwKKwkJICAgc2VuZF9yaW5nLT5oZHRybCwKKwkJICAgc2VuZF9yaW5nLT5mbGFncyk7CisjZW5kaWYgCisKKyAgICAgIC8qIGZvciBPU1ggYW5kIEZyZWVCU0QsIGEgbm9uLXplcm8gcmV0IG1lYW5zIHNvbWV0aGluZyBmYWlsZWQuCisJIEkgd291bGQgaG9wZSB0aGF0IHRoZSBsZW5ndGggZmllbGRzIGFyZSBzZXQgdG8gLTEgb3IgdGhlCisJIGxpa2UsIGJ1dCBhdCB0aGUgbW9tZW50IEkgZG8gbm90IGtub3cgSSBjYW4gY291bnQgb24KKwkgdGhhdC4gZm9yIG90aGVyIHBsYXRmb3JtcywgcmV0IHdpbGwgYmUgc2V0IHRvIHplcm8gYW5kIHdlIGNhbgorCSByZWx5IGRpcmVjdGx5IG9uIGxlbi4gcmFqIDIwMTMtMDUtMDEgKi8KKyAgICAgIGlmIChyZXQgIT0gMCkKKwlyZXR1cm4gLTE7CisgICAgICBlbHNlCisJcmV0dXJuIGxlbjsKKworfQorI2VuZGlmCiAMCiAKIC8qIG9uZSBvZiB0aGVzZSBkYXlzLCB0aGlzIHNob3VsZCBiZSBhYnN0cmFjdGVkLW91dCBqdXN0IGxpa2UgdGhlIENQVQpAQCAtNjQzLDcgKzg2NCw3IEBACiB7CiAKICAgLyogb24gSFAtVVgsIGV2ZW4gd2hlbiB3ZSB1c2UgdGhlIGxvb3BlciBwcm9jcyB3ZSBuZWVkIHRoZSBwc3RhdCAqLwotICAvKiBjYWxsICovIAorICAvKiBjYWxsICovCiAKICAgaW50IHRlbXBfY3B1czsKIApAQCAtNjUyLDcgKzg3Myw3IEBACiAKICAgc3RydWN0IHBzdF9keW5hbWljIHBzZDsKIAotICBpZiAocHN0YXRfZ2V0ZHluYW1pYygoc3RydWN0IHBzdF9keW5hbWljICopJnBzZCwgCisgIGlmIChwc3RhdF9nZXRkeW5hbWljKChzdHJ1Y3QgcHN0X2R5bmFtaWMgKikmcHNkLAogICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KXNpemVvZihwc2QpLCAoc2l6ZV90KTEsIDApICE9IC0xKSB7CiAgICAgdGVtcF9jcHVzID0gcHNkLnBzZF9wcm9jX2NudDsKICAgfQpAQCAtNjc1LDExICs4OTYsMTEgQEAKICNpZmRlZiBXSU4zMgogICBTWVNURU1fSU5GTyBTeXN0ZW1JbmZvOwogICBHZXRTeXN0ZW1JbmZvKCZTeXN0ZW1JbmZvKTsKLSAgCisKICAgdGVtcF9jcHVzID0gU3lzdGVtSW5mby5kd051bWJlck9mUHJvY2Vzc29yczsKICNlbHNlCi0gIC8qIHdlIG5lZWQgdG8ga25vdyBzb21lIG90aGVyIHdheXMgdG8gZG8gdGhpcywgb3IganVzdCBmYWxsLWJhY2sgb24gKi8KLSAgLyogYSBnbG9iYWwgY29tbWFuZCBsaW5lIG9wdGlvbiAtIHJhaiA0Lzk1ICovCisgIC8qIHdlIG5lZWQgdG8ga25vdyBzb21lIG90aGVyIHdheXMgdG8gZG8gdGhpcywgb3IganVzdCBmYWxsLWJhY2sgb24KKyAgICAgYSBnbG9iYWwgY29tbWFuZCBsaW5lIG9wdGlvbiAtIHJhaiA0Lzk1ICovCiAgIHRlbXBfY3B1cyA9IHNoZWxsX251bV9jcHVzOwogI2VuZGlmICAvKiBXSU4zMiAqLwogI2VuZGlmIC8qIF9TQ19OUFJPQ0VTU09SU19PTkxOICovCkBAIC02ODcsMTggKzkwOCwxNyBAQAogCiAgIGlmICh0ZW1wX2NwdXMgPiBNQVhDUFVTKSB7CiAgICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJTb3JyeSwgdGhpcyBzeXN0ZW0gaGFzIG1vcmUgQ1BVcyAoJWQpIHRoYW4gSSBjYW4gaGFuZGxlICglZCkuXG4iLAorICAgICAgICAgICAgIlNvcnJ5LCB0aGlzIHN5c3RlbSBoYXMgbW9yZSBDUFVzICglZCkgdGhhbiBJIGNhbiBoYW5kbGUgKCVkKS5cbiIKKyAgICAgICAgICAgICJQbGVhc2UgYWx0ZXIgTUFYQ1BVUyBpbiBuZXRsaWIuaCBhbmQgcmVjb21waWxlLlxuIiwKICAgICAgICAgICAgIHRlbXBfY3B1cywKICAgICAgICAgICAgIE1BWENQVVMpOwotICAgIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgICAiUGxlYXNlIGFsdGVyIE1BWENQVVMgaW4gbmV0bGliLmggYW5kIHJlY29tcGlsZS5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgxKTsKICAgfQogCiAgIHJldHVybih0ZW1wX2NwdXMpOwotICAKLX0gIAorCit9CiAKICNpZmRlZiBXSU4zMgogI2lmZGVmIF9fR05VQ19fCkBAIC03MzQsMjEgKzk1NCwzNyBAQAogfQogI2VuZGlmIC8qIFdJTjMyICovCiAKLQwgICAgIAorDAorIC8qIHRoaXMgcm91dGluZSB3aWxsIGRpc2FibGUgYW55IHJ1bm5pbmcgdGltZXIgKi8KK3ZvaWQKK3N0b3BfdGltZXIoKQoreworI2lmbmRlZiBXSU4zMgorICBhbGFybSgwKTsKKyNlbHNlCisgIC8qIGF0IHNvbWUgcG9pbnQgd2UgbWF5IG5lZWQgc29tZSB3aW4zMiBlcXVpdmFsZW50ICovCisgIGlmIChoQWxhcm0gIT0gKEhBTkRMRSkgSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICBTZXRFdmVudChoQWxhcm0pOworICB9CisjZW5kaWYgLyogV0lOMzIgKi8KKworfQorCisMCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICBzaWduYWwgY2F0Y2hlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCisjaWZuZGVmIFdJTjMyCiB2b2lkCi0jaWYgZGVmaW5lZChfX2hwdXgpIAorI2lmIGRlZmluZWQoX19ocHV4KQogY2F0Y2hlcihzaWcsIGNvZGUsIHNjcCkKICAgICAgaW50IHNpZzsKICAgICAgaW50IGNvZGU7CiAgICAgIHN0cnVjdCBzaWdjb250ZXh0ICpzY3A7Ci0jZWxzZSAKKyNlbHNlCiBjYXRjaGVyKGludCBzaWcpCiAjZW5kaWYgLyogX19ocHV4IHx8IF9fVk1TICovCiB7CkBAIC03NjgsMTMgKzEwMDQsMTEgQEAKICNlbmRpZiAvKiBSQUpfREVCVUcgKi8KIAogICBzd2l0Y2goc2lnKSB7Ci0gICAgCisKICAgY2FzZSBTSUdJTlQ6Ci0gICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogY2F1Z2h0IFNJR0lOVFxuIik7Ci0gICAgZmZsdXNoKHdoZXJlKTsKLSAgICBleGl0KDEpOworICAgIHRpbWVzX3VwID0gMTsKICAgICBicmVhazsKLSAgY2FzZSBTSUdBTFJNOiAKKyAgY2FzZSBTSUdBTFJNOgogICAgaWYgKC0tdGVzdF9sZW5fdGlja3MgPT0gMCkgewogICAgICAgLyogdGhlIHRlc3QgaXMgb3ZlciAqLwogICAgICAgaWYgKHRpbWVzX3VwICE9IDApIHsKQEAgLTc4NCwxOCArMTAxOCwyMiBAQAogICAgICAgdGltZXNfdXAgPSAxOwogI2lmIGRlZmluZWQoV0FOVF9JTlRFUlZBTFMpICYmICFkZWZpbmVkKFdBTlRfU1BJTikKICAgICAgIHN0b3BfaXRpbWVyKCk7CisgICAgICAvKiB3ZSBzaG91bGQgYWxzbyBzdG9wIHRoZSBub3JtYWwgdGVzdCB0aW1lciBsZXN0IGl0IGZpcmUgYXQgYW4KKwkgaW5vcHBvcnR1bmUgbW9tZW50IC0gd2UgZG8gbm90IGtub3cgaWYgd2UgZ290IGhlcmUgb2ZmIHRoZQorCSBpbnRlcnZhbCB0aW1lciBvciB0aGUgdGVzdCB0aW1lci4uLiAqLworICAgICAgc3RvcF90aW1lcigpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCiAgICAgICBicmVhazsKICAgICB9CiAgICAgZWxzZSB7CiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICNpZmRlZiBfX2hwdXgKLSAgICAgIC8qIHRoZSB0ZXN0IGlzIG5vdCBvdmVyIHlldCBhbmQgd2UgbXVzdCBoYXZlIGJlZW4gdXNpbmcgdGhlICovCi0gICAgICAvKiBpbnRlcnZhbCB0aW1lci4gaWYgd2Ugd2VyZSBpbiBTWVNfU0lHU1VTUEVORCB3ZSB3YW50IHRvICovCi0gICAgICAvKiByZS1zdGFydCB0aGUgc3lzdGVtIGNhbGwuIE90aGVyd2lzZSwgd2Ugd2FudCB0byBnZXQgb3V0IG9mICovCi0gICAgICAvKiB0aGUgc2lnc3VzcGVuZCBjYWxsLiBJIE5FRUQgVE8gS05PVyBIT1cgVE8gRE8gVEhJUyBGT1IgT1RIRVIgKi8KLSAgICAgIC8qIE9QRVJBVElORyBTWVNURU1TLiBJZiB5b3Uga25vdyBob3csIHBsZWFzZSBsZXQgbWUga25vdy4gcmljayAqLwotICAgICAgLyogam9uZXMgPHJhakBjdXAuaHAuY29tPiAqLworICAgICAgLyogdGhlIHRlc3QgaXMgbm90IG92ZXIgeWV0IGFuZCB3ZSBtdXN0IGhhdmUgYmVlbiB1c2luZyB0aGUKKwkgaW50ZXJ2YWwgdGltZXIuIGlmIHdlIHdlcmUgaW4gU1lTX1NJR1NVU1BFTkQgd2Ugd2FudCB0bworCSByZS1zdGFydCB0aGUgc3lzdGVtIGNhbGwuIE90aGVyd2lzZSwgd2Ugd2FudCB0byBnZXQgb3V0IG9mCisJIHRoZSBzaWdzdXNwZW5kIGNhbGwuIEkgTkVFRCBUTyBLTk9XIEhPVyBUTyBETyBUSElTIEZPUiBPVEhFUgorCSBPUEVSQVRJTkcgU1lTVEVNUy4gSWYgeW91IGtub3cgaG93LCBwbGVhc2UgbGV0IG1lIGtub3cuIHJpY2sKKwkgam9uZXMgPHJpY2suam9uZXMyQGhwLmNvbT4gKi8KICAgICAgIGlmIChzY3AtPnNjX3N5c2NhbGwgIT0gU1lTX1NJR1NVU1BFTkQpIHsKICAgICAgICAgaWYgKGRlYnVnID4gMikgewogICAgICAgICAgIGZwcmludGYod2hlcmUsCkBAIC04MTAsMTMgKzEwNDgsMTMgQEAKICAgICAgICAgICAgICAgImNhdGNoZXI6IGludGVydmFsIHRpbWVyIHJ1bm5pbmcgdW5leHBlY3RlZGx5IVxuIik7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgdGltZXNfdXAgPSAxOwotI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovICAgICAgCisjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICByZXR1cm47CiB9Ci0KKyNlbmRpZiAvKiBXSU4zMiAqLwogCiB2b2lkCiBpbnN0YWxsX3NpZ25hbF9jYXRjaGVycygpCkBAIC04NDIsNyArMTA4MCwxMyBAQAogCiAKICAgZm9yIChpID0gMTsgaSA8PSBOU0lHOyBpKyspIHsKLSAgICBpZiAoaSAhPSBTSUdBTFJNKSB7CisgICAgc3dpdGNoIChpKSB7CisgICAgY2FzZSBTSUdBTFJNOgorICAgIGNhc2UgU0lHUFJPRjoKKyAgICBjYXNlIFNJR1NUT1A6CisgICAgY2FzZSBTSUdLSUxMOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKICAgICAgIGlmIChzaWdhY3Rpb24oaSwmYWN0aW9uLE5VTEwpICE9IDApIHsKICAgICAgICAgZnByaW50Zih3aGVyZSwKICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGluc3RhbGwgc2lnbmFsIGNhdGNoZXIgZm9yIHNpZyAlZCwgZXJybm8gJWRcbiIsCkBAIC04NTUsNyArMTA5OSw3IEBACiAgIH0KICNlbHNlCiAgIHJldHVybjsKLSNlbmRpZiAvKiBXSU4zMiAqLyAKKyNlbmRpZiAvKiBXSU4zMiAqLwogfQogDAogCkBAIC04NjQsNDAgKzExMDgsNTkgQEAKIHZvaWQKIGVtdWxhdGVfYWxhcm0oIGludCBzZWNvbmRzICkKIHsKLQlEV09SRCBFcnJvckNvZGU7CisgIERXT1JEIEVycm9yQ29kZTsKKyAgRFdPUkQgSGFuZGxlc0Nsb3NlZEZsYWdzID0gMDsKIAotCS8qIFdhaXQgb24gdGhpcyBldmVudCBmb3IgcGFybSBzZWNvbmRzLiAqLworICAvKiBXYWl0IG9uIHRoaXMgZXZlbnQgZm9yIHBhcm0gc2Vjb25kcy4gKi8KIAotCUVycm9yQ29kZSA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaEFsYXJtLCBzZWNvbmRzKjEwMDApOwotCWlmIChFcnJvckNvZGUgPT0gV0FJVF9GQUlMRUQpCi0JewotCQlwZXJyb3IoIldhaXRGb3JTaW5nbGVPYmplY3QgZmFpbGVkIik7Ci0JCWV4aXQoMSk7CisgIEVycm9yQ29kZSA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaEFsYXJtLCBzZWNvbmRzKjEwMDApOworICBpZiAoRXJyb3JDb2RlID09IFdBSVRfRkFJTEVEKQorICAgIHsKKyAgICAgIHBlcnJvcigiV2FpdEZvclNpbmdsZU9iamVjdCBmYWlsZWQiKTsKKyAgICAgIGV4aXQoMSk7CisgICAgfQorCisgIGlmIChFcnJvckNvZGUgPT0gV0FJVF9USU1FT1VUKQorICAgIHsKKyAgICAgIC8qIFdhaXRGb3JTaW5nbGVPYmplY3QgdGltZWQgb3V0OyB0aGlzIG1lYW5zIHRoZSB0aW1lcgorCSB3YXNuJ3QgY2FuY2VsZWQuICovCisKKyAgICAgIHRpbWVzX3VwID0gMTsKKworICAgICAgLyogR2l2ZSB0aGUgb3RoZXIgdGhyZWFkcyB0aW1lIHRvIG5vdGljZSB0aGF0IHRpbWVzX3VwIGhhcworCSBjaGFuZ2VkIHN0YXRlIGJlZm9yZSB0YWtpbmcgdGhlIGhhcnNoIHN0ZXAgb2YgY2xvc2luZyB0aGUKKwkgc29ja2V0cy4gKi8KKyAgICAgIHRpbWVkX291dD0wOworICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3QoaEFsYXJtLCBQQURfVElNRS8yKjEwMDApID09CisJICBXQUlUX1RJTUVPVVQpIHsKKyAgICAgICAgdGltZWRfb3V0PTE7CisJLyogV2UgaGF2ZSB5ZXQgdG8gZmluZCBhIGdvb2Qgd2F5IHRvIGZ1bGx5IGVtdWxhdGUKKwkgICB0aGUgZWZmZWN0cyBvZiBzaWduYWxzIGFuZCBnZXR0aW5nIEVJTlRSIGZyb20KKwkgICBzeXN0ZW0gY2FsbHMgdW5kZXIgd2luc29jaywgc28gd2hhdCB3ZSBkbyBoZXJlIGlzCisJICAgY2xvc2UgdGhlIHNvY2tldCBvdXQgZnJvbSB1bmRlciB0aGUgb3RoZXIgdGhyZWFkLgorCSAgIEl0IGlzIHJhdGhlciBrbHVkZ3ksIGJ1dCBzaG91bGQgYmUgc3VmZmljaWVudCB0bworCSAgIGdldCB0aGlzIHB1cHB5IHNoaXBwZWQuICBUaGUgY29uY2VwdCBjYW4gYmUKKwkgICBhdHRyaWJ1dGVkL2JsYW1lZCA6KSBvbiBSb2JpbiByYWogMS85NiAqLworCQorCWlmICh3aW5fa2x1ZGdlX3NvY2tldCAhPSBJTlZBTElEX1NPQ0tFVCkgeworCSAgSGFuZGxlc0Nsb3NlZEZsYWdzIHw9IDE7CisJICBjbG9zZXNvY2tldCh3aW5fa2x1ZGdlX3NvY2tldCk7CiAJfQotCi0JaWYgKEVycm9yQ29kZSA9PSBXQUlUX1RJTUVPVVQpCi0JewotCSAgLyogV2FpdEZvclNpbmdsZU9iamVjdCB0aW1lZCBvdXQ7IHRoaXMgbWVhbnMgdGhlIHRpbWVyCi0JICAgICB3YXNuJ3QgY2FuY2VsZWQuICovCi0KLSAgICAgICAgdGltZXNfdXAgPSAxOwotCi0gICAgICAgIC8qIFdlIGhhdmUgeWV0IHRvIGZpbmQgYSBnb29kIHdheSB0byBmdWxseSBlbXVsYXRlIHRoZSBlZmZlY3RzICovCi0gICAgICAgIC8qIG9mIHNpZ25hbHMgYW5kIGdldHRpbmcgRUlOVFIgZnJvbSBzeXN0ZW0gY2FsbHMgdW5kZXIgKi8KLSAgICAgICAgLyogd2luc29jaywgc28gd2hhdCB3ZSBkbyBoZXJlIGlzIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20gKi8KLSAgICAgICAgLyogdW5kZXIgdGhlIG90aGVyIHRocmVhZC4gIEl0IGlzIHJhdGhlciBrbHVkZ3ksIGJ1dCBzaG91bGQgYmUgKi8KLSAgICAgICAgLyogc3VmZmljaWVudCB0byBnZXQgdGhpcyBwdXBweSBzaGlwcGVkLiAgVGhlIGNvbmNlcHQgY2FuIGJlICovCi0gICAgICAgIC8qIGF0dHJpYnV0ZWQvYmxhbWVkIDopIG9uIFJvYmluIHJhaiAxLzk2ICovCi0KLSAgICAgICAgaWYgKHdpbl9rbHVkZ2Vfc29ja2V0ICE9IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgICAgY2xvc2Vzb2NrZXQod2luX2tsdWRnZV9zb2NrZXQpOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3aW5fa2x1ZGdlX3NvY2tldDIgIT0gSU5WQUxJRF9TT0NLRVQpIHsKLSAgICAgICAgICBjbG9zZXNvY2tldCh3aW5fa2x1ZGdlX3NvY2tldDIpOwotICAgICAgICB9CisJaWYgKHdpbl9rbHVkZ2Vfc29ja2V0MiAhPSBJTlZBTElEX1NPQ0tFVCkgeworCSAgSGFuZGxlc0Nsb3NlZEZsYWdzIHw9IDI7CisJICBjbG9zZXNvY2tldCh3aW5fa2x1ZGdlX3NvY2tldDIpOwogCX0KKyAgICAgIH0KKyAgICAgIGlmKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwKKwkJImVtdWxhdGVfYWxhcm0gLSBIYW5kbGVzQ2xvc2VkRmxhZ3M6ICV4XG4iLAorCQlIYW5kbGVzQ2xvc2VkRmxhZ3MpOworCWZmbHVzaCh3aGVyZSk7CisgICAgICB9CisgICAgfQogfQogCisKICNlbmRpZiAvKiBXSU4zMiAqLwogCiB2b2lkCkBAIC05MDUsNDMgKzExNjgsNDQgQEAKIHsKIAogI2lmZGVmIFdJTjMyCi0JLyorKitTQUYgV2hhdCBpZiBTdGFydFRpbWVyIGlzIGNhbGxlZCB0d2ljZSB3aXRob3V0IHRoZSBmaXJzdCB0aW1lciAqLwotCS8qKyorU0FGIGV4cGlyaW5nPyAqLworICAvKisqK1NBRiBXaGF0IGlmIFN0YXJ0VGltZXIgaXMgY2FsbGVkIHR3aWNlIHdpdGhvdXQgdGhlIGZpcnN0IHRpbWVyICovCisgIC8qKyorU0FGIGV4cGlyaW5nPyAqLwogCi0JRFdPUkQgIHRocmVhZF9pZCA7Ci0JSEFORExFIHRIYW5kbGU7CisgIERXT1JEICB0aHJlYWRfaWQgOworICBIQU5ETEUgdEhhbmRsZTsKIAotCWlmIChoQWxhcm0gPT0gKEhBTkRMRSkgSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgIGlmIChoQWxhcm0gPT0gKEhBTkRMRSkgSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgeworICAgICAgLyogQ3JlYXRlIHRoZSBBbGFybSBldmVudCBvYmplY3QgKi8KKyAgICAgIGhBbGFybSA9IENyZWF0ZUV2ZW50KAorCQkJICAgKExQU0VDVVJJVFlfQVRUUklCVVRFUykgTlVMTCwgLyogbm8gc2VjdXJpdHkgKi8KKwkJCSAgIEZBTFNFLAkgLyogYXV0byByZXNldCBldmVudCAqLworCQkJICAgRkFMU0UsICAgLyogaW5pdC4gc3RhdGUgPSByZXNldCAqLworCQkJICAgKHZvaWQgKilOVUxMKTsgIC8qIHVubmFtZWQgZXZlbnQgb2JqZWN0ICovCisgICAgICBpZiAoaEFsYXJtID09IChIQU5ETEUpIElOVkFMSURfSEFORExFX1ZBTFVFKQogCXsKLQkJLyogQ3JlYXRlIHRoZSBBbGFybSBldmVudCBvYmplY3QgKi8KLQkJaEFsYXJtID0gQ3JlYXRlRXZlbnQoIAotCQkJKExQU0VDVVJJVFlfQVRUUklCVVRFUykgTlVMTCwJICAvKiBubyBzZWN1cml0eSAqLwotCQkJRkFMU0UsCSAvKiBhdXRvIHJlc2V0IGV2ZW50ICovCi0JCQlGQUxTRSwgICAvKiBpbml0LiBzdGF0ZSA9IHJlc2V0ICovCi0JCQkodm9pZCAqKU5VTEwpOyAgLyogdW5uYW1lZCBldmVudCBvYmplY3QgKi8KLQkJaWYgKGhBbGFybSA9PSAoSEFORExFKSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLQkJewotCQkJcGVycm9yKCJDcmVhdGVFdmVudCBmYWlsdXJlIik7Ci0JCQlleGl0KDEpOwotCQl9CisJICBwZXJyb3IoIkNyZWF0ZUV2ZW50IGZhaWx1cmUiKTsKKwkgIGV4aXQoMSk7CiAJfQotCWVsc2UKLQl7Ci0JCVJlc2V0RXZlbnQoaEFsYXJtKTsKLQl9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgUmVzZXRFdmVudChoQWxhcm0pOworICAgIH0KIAogCi0JdEhhbmRsZSA9IENyZWF0ZVRocmVhZCgwLAotCQkJCQkgICAgICAgMCwKLQkJCQkJCSAgIChMUFRIUkVBRF9TVEFSVF9ST1VUSU5FKWVtdWxhdGVfYWxhcm0sCi0JCQkJCQkgICAoTFBWT0lEKShVTE9OR19QVFIpdGltZSwKLQkJCQkJCSAgIDAsCQkKLQkJCQkJCSAgICZ0aHJlYWRfaWQgKSA7Ci0JQ2xvc2VIYW5kbGUodEhhbmRsZSk7CisgIHRIYW5kbGUgPSBDcmVhdGVUaHJlYWQoMCwKKwkJCSAwLAorCQkJIChMUFRIUkVBRF9TVEFSVF9ST1VUSU5FKWVtdWxhdGVfYWxhcm0sCisJCQkgKExQVk9JRCkoVUxPTkdfUFRSKXRpbWUsCisJCQkgMCwKKwkJCSAmdGhyZWFkX2lkICkgOworICBDbG9zZUhhbmRsZSh0SGFuZGxlKTsKIAogI2Vsc2UgLyogbm90IFdJTjMyICovCiAKIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworaW50IHJldDsKIAogaWYgKGRlYnVnKSB7CiAgIGZwcmludGYod2hlcmUsIkFib3V0IHRvIHN0YXJ0IGEgdGltZXIgZm9yICVkIHNlY29uZHMuXG4iLHRpbWUpOwpAQCAtOTQ5LDggKzEyMTMsNiBAQAogfQogCiAgIGFjdGlvbi5zYV9oYW5kbGVyID0gY2F0Y2hlcjsKLSAgc2lnZW1wdHlzZXQoJihhY3Rpb24uc2FfbWFzaykpOwotICBzaWdhZGRzZXQoJihhY3Rpb24uc2FfbWFzayksU0lHQUxSTSk7CiAKICNpZmRlZiBTQV9JTlRFUlJVUFQKICAgLyogb24gc29tZSBzeXN0ZW1zIChTdW5PUyA0LmJsYWgpLCBzeXN0ZW0gY2FsbHMgYXJlIHJlc3RhcnRlZC4gd2UgZG8gKi8KQEAgLTk2MCw2NiArMTIyMiwxMDIgQEAKICAgYWN0aW9uLnNhX2ZsYWdzID0gMDsKICNlbmRpZiAvKiBTQV9JTlRFUlJVUFQgKi8KIAorICBzaWdlbXB0eXNldCgmKGFjdGlvbi5zYV9tYXNrKSk7CisgIHNpZ2FkZHNldCgmKGFjdGlvbi5zYV9tYXNrKSxTSUdBTFJNKTsKICAgaWYgKHNpZ2FjdGlvbihTSUdBTFJNLCAmYWN0aW9uLCBOVUxMKSA8IDApIHsKLSAgICBmcHJpbnRmKHdoZXJlLCJzdGFydF90aW1lcjogZXJyb3IgaW5zdGFsbGluZyBhbGFybSBoYW5kbGVyICIpOwotICAgIGZwcmludGYod2hlcmUsImVycm5vICVkXG4iLGVycm5vKTsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAic3RhcnRfdGltZXI6IGVycm9yIGluc3RhbGxpbmcgYWxhcm0gaGFuZGxlciBlcnJubyAlZFxuIiwKKwkgICAgZXJybm8pOwogICAgIGZmbHVzaCh3aGVyZSk7Ci0gICAgZXhpdCgxKTsKKyAgICBleGl0KC0xKTsKICAgfQogCi0gIC8qIHRoaXMgaXMgdGhlIGVhc3kgY2FzZSAtIGp1c3Qgc2V0IHRoZSB0aW1lciBmb3Igc28gbWFueSBzZWNvbmRzICovIAotICBpZiAoYWxhcm0odGltZSkgIT0gMCkgeworICBzaWdlbXB0eXNldCgmKGFjdGlvbi5zYV9tYXNrKSk7CisgIHNpZ2FkZHNldCgmKGFjdGlvbi5zYV9tYXNrKSxTSUdJTlQpOworICBpZiAoc2lnYWN0aW9uKFNJR0lOVCwgJmFjdGlvbiwgTlVMTCkgPCAwKSB7CiAgICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJlcnJvciBzdGFydGluZyBhbGFybSB0aW1lciwgZXJybm8gJWRcbiIsCisJICAgICJzdGFydF90aW1lcjogZXJyb3IgaW5zdGFsbGluZyBTSUdJTlQgaGFuZGxlciBlcnJubyAlZFxuIiwKKwkgICAgZXJybm8pOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgtMSk7CisgIH0KKworICAvKiB0aGlzIGlzIHRoZSBlYXN5IGNhc2UgLSBqdXN0IHNldCB0aGUgdGltZXIgZm9yIHNvIG1hbnkgc2Vjb25kcyAqLworICByZXQgPSBhbGFybSh0aW1lKTsKKyAgaWYgKHJldCAhPSAwKSB7CisgICAgZnByaW50Zih3aGVyZSwKKyAgICAgICAgICAgICJlcnJvciBzdGFydGluZyBhbGFybSB0aW1lciwgcmV0ICVkIGVycm5vICVkXG4iLAorCSAgICByZXQsCiAgICAgICAgICAgICBlcnJubyk7CiAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKICAgfQogI2VuZGlmIC8qIFdJTjMyICovCiAKICAgdGVzdF9sZW5fdGlja3MgPSAxOwogCi19IAotCi0MCi0gLyogdGhpcyByb3V0aW5lIHdpbGwgZGlzYWJsZSBhbnkgcnVubmluZyB0aW1lciAqLwotdm9pZAotc3RvcF90aW1lcigpCi17Ci0jaWZuZGVmIFdJTjMyCi0gIGFsYXJtKDApOwotI2Vsc2UKLSAgLyogYXQgc29tZSBwb2ludCB3ZSBtYXkgbmVlZCBzb21lIHdpbjMyIGVxdWl2YWxlbnQgKi8KLSAgCWlmIChoQWxhcm0gIT0gKEhBTkRMRSkgSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0JewotCQlTZXRFdmVudChoQWxhcm0pOwotCX0KLSNlbmRpZiAvKiBXSU4zMiAqLwotCiB9CiAKKwogDAogI2lmZGVmIFdBTlRfSU5URVJWQUxTCi0gLyogdGhpcyByb3V0aW5lIHdpbGwgZW5hYmxlIHRoZSBpbnRlcnZhbCB0aW1lciBhbmQgc2V0IHRoaW5ncyB1cCBzbyAqLwotIC8qIHRoYXQgZm9yIGEgdGltZWQgdGVzdCB0aGUgdGVzdCB3aWxsIGVuZCBhdCB0aGUgcHJvcGVyIHRpbWUuIGl0ICovCi0gLyogc2hvdWxkIGRldGVjdCB0aGUgcHJlc2VuY2Ugb2YgUE9TSVguNCB0aW1lcl8qIHJvdXRpbmVzIG9uZSBvZiAqLwotIC8qIHRoZXNlIGRheXMgKi8KKy8qIHRoaXMgcm91dGluZSB3aWxsIGVuYWJsZSB0aGUgaW50ZXJ2YWwgdGltZXIgYW5kIHNldCB0aGluZ3MgdXAgc28KKyAgIHRoYXQgZm9yIGEgdGltZWQgdGVzdCB0aGUgdGVzdCB3aWxsIGVuZCBhdCB0aGUgcHJvcGVyIHRpbWUuIGl0CisgICBzaG91bGQgZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBQT1NJWC40IHRpbWVyXyogcm91dGluZXMgb25lIG9mIHRoZXNlCisgICBkYXlzICovCiB2b2lkCiBzdGFydF9pdGltZXIodW5zaWduZWQgaW50IGludGVydmFsX2xlbl9tc2VjICkKIHsKLQorI2lmZGVmIFdJTjMyCisgICAgTEFSR0VfSU5URUdFUiBsaUR1ZVRpbWU7CisJVElNRUNBUFMgcHRjOworCU1NUkVTVUxUIG1tcjsKKwkKKwkvKiBtYWtlIHN1cmUgdGltZXIgcmVzb2x1dGlvbiBpcyBhdCBsZWFzdCBhcyBzbWFsbCBhcyBpbnRlcnZhbCBsZW5ndGggKi8KKwl0aW1lclJlcz1pbnRlcnZhbF9sZW5fbXNlYzsKKwltbXI9dGltZUdldERldkNhcHMoJnB0Yywgc2l6ZW9mIChwdGMpKTsKKwlpZiAobW1yPT1USU1FUlJfTk9FUlJPUil7CisJICBpZiAoaW50ZXJ2YWxfbGVuX21zZWM8cHRjLndQZXJpb2RNaW4peworCQl0aW1lclJlcz1wdGMud1BlcmlvZE1pbjsKKwkJZnByaW50Zih3aGVyZSwgIlRpbWVyIGNhbm5vdCBiZSBzZXQgdG8gJWRtc2VjLiAgTWluaW11bSB0aW1lciByZXNvbHV0aW9uOiAlZFxuIiwgaW50ZXJ2YWxfbGVuX21zZWMsIHB0Yy53UGVyaW9kTWluKTsKKwkJZmZsdXNoKHdoZXJlKTsKKwkgIH0KKwl9CisJLyogdGltZUJlZ2luUGVyaW9kKCkgYWZmZWN0cyBhIGdsb2JhbCBXaW5kb3dzIHNldHRpbmcuIAorCVdpbmRvd3MgdXNlcyB0aGUgbG93ZXN0IHZhbHVlICh0aGF0IGlzLCBoaWdoZXN0IHJlc29sdXRpb24pIHJlcXVlc3RlZCBieSBhbnkgcHJvY2Vzcy4gKi8KKwltbXI9dGltZUJlZ2luUGVyaW9kKHRpbWVyUmVzKTsKKwkvKiBDcmVhdGUgYSB3YWl0YWJsZSB0aW1lci4gKi8KKyAgICBXaW5UaW1lciA9IENyZWF0ZVdhaXRhYmxlVGltZXIoTlVMTCwgRkFMU0UsICJJbnRlcnZhbFRpbWVyIik7CisgICAgaWYgKE5VTEwgPT0gV2luVGltZXIpCisgICAgeworICAgICAgICBmcHJpbnRmKHdoZXJlLCAiQ3JlYXRlV2FpdGFibGVUaW1lciBmYWlsZWQgKCVkKVxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICBmZmx1c2god2hlcmUpOworCQlleGl0KDEpOworICAgIH0KKyAJLypUaGUgdGltZSBhZnRlciB3aGljaCB0aGUgc3RhdGUgb2YgdGhlIHRpbWVyIGlzIHRvIGJlIHNldCB0byBzaWduYWxlZCB0aGUgZmlyc3QgdGltZSwgCisJaW4gMTAwIG5hbm9zZWNvbmQgaW50ZXJ2YWxzLiAgTmVnYXRpdmUgdmFsdWVzIGluZGljYXRlIHJlbGF0aXZlIHRpbWUuICovCisgICAgbGlEdWVUaW1lLlF1YWRQYXJ0PS0xMDAwMExMKmludGVydmFsX2xlbl9tc2VjOworICAgLyogU2V0IHRoZSB0aW1lciB0byB3YWl0IGZvciBpbnRlcnZhbF9sZW5fbXNlYyBhbmQgcGVyaW9kaWNhbGx5IHNpZ25hbCBldmVyeSBpbnRlcnZhbF9sZW5fbXNlYyAqLworICAgIGlmICghU2V0V2FpdGFibGVUaW1lcihXaW5UaW1lciwgJmxpRHVlVGltZSwgaW50ZXJ2YWxfbGVuX21zZWMsIE5VTEwsIE5VTEwsIFRSVUUpKQorICAgIHsKKyAgICAgICAgZnByaW50Zih3aGVyZSwiU2V0V2FpdGFibGVUaW1lciBmYWlsZWQgKCVkKVxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICBmZmx1c2god2hlcmUpOworCQlleGl0KDEpOworICAgIH0KKyNlbHNlCiAgIHVuc2lnbmVkIGludCB0aWNrc19wZXJfaXR2bDsKIAogICBzdHJ1Y3QgaXRpbWVydmFsIG5ld19pbnRlcnZhbDsKICAgc3RydWN0IGl0aW1lcnZhbCBvbGRfaW50ZXJ2YWw7CiAKLSAgLyogaWYgLURXQU5UX0lOVEVSVkFMUyB3YXMgdXNlZCwgd2Ugd2lsbCB1c2UgdGhlIHRpY2tpbmcgb2YgdGhlIGl0aW1lciB0byAqLwotICAvKiB0ZWxsIHVzIHdoZW4gdGhlIHRlc3QgaXMgb3Zlci4gd2hpbGUgdGhlIHVzZXIgd2lsbCBiZSBzcGVjaWZ5aW5nICovCi0gIC8qIHNvbWUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgd2Uga25vdyB0aGF0IHRoZSBpbnRlcnZhbCB0aW1lciBpcyAqLwotICAvKiByZWFsbHkgaW4gdW5pdHMgb2YgMS9IWi4gc28sIHRvIHByZXZlbnQgdGhlIHRlc3QgZnJvbSBydW5uaW5nICovCi0gIC8qICJsb25nIiBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8ga2VlcCB0aGlzIGluIG1pbmQgd2hlbiBjYWxjdWxhdGluZyAqLwotICAvKiB0aGUgbnVtYmVyIG9mIGl0aW1lciBldmVudHMgKi8KKyAgLyogaWYgLURXQU5UX0lOVEVSVkFMUyB3YXMgdXNlZCwgd2Ugd2lsbCB1c2UgdGhlIHRpY2tpbmcgb2YgdGhlCisgICAgIGl0aW1lciB0byB0ZWxsIHVzIHdoZW4gdGhlIHRlc3QgaXMgb3Zlci4gd2hpbGUgdGhlIHVzZXIgd2lsbCBiZQorICAgICBzcGVjaWZ5aW5nIHNvbWUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgd2Uga25vdyB0aGF0IHRoZSBpbnRlcnZhbAorICAgICB0aW1lciBpcyByZWFsbHkgaW4gdW5pdHMgb2YgMS9IWi4gc28sIHRvIHByZXZlbnQgdGhlIHRlc3QgZnJvbQorICAgICBydW5uaW5nICJsb25nIiBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8ga2VlcCB0aGlzIGluIG1pbmQgd2hlbgorICAgICBjYWxjdWxhdGluZyB0aGUgbnVtYmVyIG9mIGl0aW1lciBldmVudHMgKi8KIAotICB0aWNrc19wZXJfaXR2bCA9ICgoaW50ZXJ2YWxfd2F0ZSAqIHN5c2NvbmYoX1NDX0NMS19UQ0spICogMTAwMCkgLyAKKyAgdGlja3NfcGVyX2l0dmwgPSAoKGludGVydmFsX3dhdGUgKiBzeXNjb25mKF9TQ19DTEtfVENLKSAqIDEwMDApIC8KICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMCk7CiAKICAgaWYgKHRpY2tzX3Blcl9pdHZsID09IDApIHRpY2tzX3Blcl9pdHZsID0gMTsKQEAgLTEwMzgsMjYgKzEzMzYsMjcgQEAKICAgfQogCiAgIGlmIChkZWJ1ZykgewotICAgIGZwcmludGYod2hlcmUsInNldHRpbmcgdGhlIGludGVydmFsIHRpbWVyIHRvICVkIHNlYyAlZCB1c2VjICIsCisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgInNldHRpbmcgdGhlIGludGVydmFsIHRpbWVyIHRvICVkIHNlYyAlZCB1c2VjIHRlc3QgbGVuICVkIHRpY2tzXG4iLAogICAgICAgICAgICAgdXNlY19wZXJfaXR2bCAvIDEwMDAwMDAsCi0gICAgICAgICAgICB1c2VjX3Blcl9pdHZsICUgMTAwMDAwMCk7Ci0gICAgZnByaW50Zih3aGVyZSwidGVzdCBsZW4gJWQgdGlja3NcbiIsCisgICAgICAgICAgICB1c2VjX3Blcl9pdHZsICUgMTAwMDAwMCwKICAgICAgICAgICAgIHRlc3RfbGVuX3RpY2tzKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKLSAgLyogaWYgdGhpcyB3YXMgbm90IGEgdGltZWQgdGVzdCwgdGhlbiB3ZSByZWFsbHkgYXVnaHQgdG8gZW5hYmxlIHRoZSAqLwotICAvKiBzaWduYWwgY2F0Y2hlciByYWogMi85NSAqLworICAvKiBpZiB0aGlzIHdhcyBub3QgYSB0aW1lZCB0ZXN0LCB0aGVuIHdlIHJlYWxseSBhdWdodCB0byBlbmFibGUgdGhlCisgICAgIHNpZ25hbCBjYXRjaGVyIHJhaiAyLzk1ICovCiAKICAgbmV3X2ludGVydmFsLml0X2ludGVydmFsLnR2X3NlYyA9IHVzZWNfcGVyX2l0dmwgLyAxMDAwMDAwOwotICBuZXdfaW50ZXJ2YWwuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IHVzZWNfcGVyX2l0dmwgJSAxMDAwMDAwOyAgCisgIG5ld19pbnRlcnZhbC5pdF9pbnRlcnZhbC50dl91c2VjID0gdXNlY19wZXJfaXR2bCAlIDEwMDAwMDA7CiAgIG5ld19pbnRlcnZhbC5pdF92YWx1ZS50dl9zZWMgPSB1c2VjX3Blcl9pdHZsIC8gMTAwMDAwMDsKLSAgbmV3X2ludGVydmFsLml0X3ZhbHVlLnR2X3VzZWMgPSB1c2VjX3Blcl9pdHZsICUgMTAwMDAwMDsgIAorICBuZXdfaW50ZXJ2YWwuaXRfdmFsdWUudHZfdXNlYyA9IHVzZWNfcGVyX2l0dmwgJSAxMDAwMDAwOwogICBpZiAoc2V0aXRpbWVyKElUSU1FUl9SRUFMLCZuZXdfaW50ZXJ2YWwsJm9sZF9pbnRlcnZhbCkgIT0gMCkgewotICAgIC8qIHRoZXJlIHdhcyBhIHByb2JsZW0gYXJtaW5nIHRoZSBpbnRlcnZhbCB0aW1lciAqLyAKKyAgICAvKiB0aGVyZSB3YXMgYSBwcm9ibGVtIGFybWluZyB0aGUgaW50ZXJ2YWwgdGltZXIgKi8KICAgICBwZXJyb3IoIm5ldHBlcmY6IHNldGl0aW1lciIpOwogICAgIGV4aXQoMSk7CiAgIH0KKyAjZW5kaWYgLyogV0lOMzIqLwogfQogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCiAKQEAgLTEwOTEsNiArMTM5MCw3IEBACiAjZW5kaWYKIH0KIAorCiAMCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtMTEwNSwxNSArMTQwNSwyMiBAQAogewogICBpbnQgaTsKIAotICB3aGVyZSAgICAgICAgICAgID0gc3Rkb3V0OworICB3aGVyZSA9IHN0ZG91dDsKIAogICByZXF1ZXN0X2FycmF5ID0gKGludCAqKSgmbmV0cGVyZl9yZXF1ZXN0KTsKICAgcmVzcG9uc2VfYXJyYXkgPSAoaW50ICopKCZuZXRwZXJmX3Jlc3BvbnNlKTsKIAogICBmb3IgKGkgPSAwOyBpIDwgTUFYQ1BVUzsgaSsrKSB7Ci0gICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtpXSA9IDAuMDsKKyAgICBsaWJfbG9jYWxfcGVyX2NwdV91dGlsW2ldID0gLTEuMDsKICAgfQogCisgIGxpYl9sb2NhbF9jcHVfc3RhdHMucGVha19jcHVfaWQgPSAtMTsKKyAgbGliX2xvY2FsX2NwdV9zdGF0cy5wZWFrX2NwdV91dGlsID0gLTEuMDsKKyAgbGliX3JlbW90ZV9jcHVfc3RhdHMucGVha19jcHVfaWQgPSAtMTsKKyAgbGliX3JlbW90ZV9jcHVfc3RhdHMucGVha19jcHVfdXRpbCA9IC0xLjA7CisKKyAgbmV0cGVyZl92ZXJzaW9uID0gc3RyZHVwKE5FVFBFUkZfVkVSU0lPTik7CisKICAgLyogb24gdGhvc2Ugc3lzdGVtcyB3aGVyZSB3ZSBrbm93IHRoYXQgQ1BVIG51bWJlcnMgbWF5IG5vdCBzdGFydCBhdAogICAgICB6ZXJvIGFuZCBiZSBjb250aWd1b3VzLCB3ZSBwcm92aWRlIGEgd2F5IHRvIG1hcCBmcm9tIGEKICAgICAgY29udGlndW91cywgc3RhcnRpbmcgZnJvbSAwIENQVSBpZCBzcGFjZSB0byB0aGUgYWN0dWFsIENQVSBpZHMuCkBAIC0xMTI2LDIzICsxNDMzLDI0IEBACiAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJuZXRsaWJfaW5pdDogcmVxdWVzdF9hcnJheSBhdCAlcFxuIiwKLSAgICAgICAgICAgIHJlcXVlc3RfYXJyYXkpOwotICAgIGZwcmludGYod2hlcmUsCisgICAgICAgICAgICAibmV0bGliX2luaXQ6IHJlcXVlc3RfYXJyYXkgYXQgJXBcbiIKICAgICAgICAgICAgICJuZXRsaWJfaW5pdDogcmVzcG9uc2VfYXJyYXkgYXQgJXBcbiIsCisgICAgICAgICAgICByZXF1ZXN0X2FycmF5LAogICAgICAgICAgICAgcmVzcG9uc2VfYXJyYXkpOwotCiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQogCisgIC8qIHNvbWUgZnVuY3Rpb25hbGl0eSBtaWdodCB3YW50IHRvIHVzZSByYW5kb20gbnVtYmVycywgc28gd2Ugc2hvdWxkCisgICAgIGluaXRpYWxpemUgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yICovCisgIHNyYW5kKGdldHBpZCgpKTsKKwogfQogDAotIC8qIHRoaXMgcm91dGluZSB3aWxsIGNvbnZlciB0aGUgc3RyaW5nIGludG8gYW4gdW5zaWduZWQgaW50ZWdlci4gaXQgKi8KLSAvKiBpcyB1c2VkIHByaW1hcmlseSBmb3IgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIHRha2luZyBhIG51bWJlciAqLwotIC8qIChzdWNoIGFzIHRoZSBzb2NrZXQgc2l6ZSkgd2hpY2ggY291bGQgYmUgcmF0aGVyIGxhcmdlLiBJZiBzb21lb25lICovCi0gLyogZW50ZXJzIDMyTSwgdGhlbiB0aGUgbnVtYmVyIHdpbGwgYmUgY29udmVydGVkIHRvIDMyICogMTAyNCAqIDEwMjQuICovCi0gLyogSWYgdGhleSBpbnRlciAzMm0sIHRoZSBudW1iZXIgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gMzIgKiAxMDAwICogKi8KLSAvKiAxMDAwICovCisvKiB0aGlzIHJvdXRpbmUgd2lsbCBjb252ZXIgdGhlIHN0cmluZyBpbnRvIGFuIHVuc2lnbmVkIGludGVnZXIuIGl0IGlzCisgICB1c2VkIHByaW1hcmlseSBmb3IgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIHRha2luZyBhIG51bWJlciAoc3VjaAorICAgYXMgdGhlIHNvY2tldCBzaXplKSB3aGljaCBjb3VsZCBiZSByYXRoZXIgbGFyZ2UuIElmIHNvbWVvbmUgZW50ZXJzCisgICAzMk0sIHRoZW4gdGhlIG51bWJlciB3aWxsIGJlIGNvbnZlcnRlZCB0byAzMiAqIDEwMjQgKiAxMDI0LiAgSWYKKyAgIHRoZXkgaW50ZXIgMzJtLCB0aGUgbnVtYmVyIHdpbGwgYmUgY29udmVydGVkIHRvIDMyICogMTAwMCAqIDEwMDAgKi8KIHVuc2lnbmVkIGludAogY29udmVydChjaGFyICpzdHJpbmcpCiAKQEAgLTEyMDMsMTMgKzE1MTEsMTQgQEAKIH0KIAogDAotIC8qIHRoaXMgcm91dGluZSB3aWxsIGFsbG9jYXRlIGEgY2lyY3VsYXIgbGlzdCBvZiBidWZmZXJzIGZvciBlaXRoZXIgKi8KLSAvKiBzZW5kIG9yIHJlY2VpdmUgb3BlcmF0aW9ucy4gZWFjaCBvZiB0aGVzZSBidWZmZXJzIHdpbGwgYmUgYWxpZ25lZCAqLwotIC8qIGFuZCBvZmZzZXQgYXMgcGVyIHRoZSB1c2VycyByZXF1ZXN0LiB0aGUgY2lyY3VtZmVyZW5jZSBvZiB0aGlzICovCi0gLyogcmluZyB3aWxsIGJlIGNvbnRyb2xsZWQgYnkgdGhlIHNldHRpbmcgb2Ygc2VuZF93aWR0aC4gdGhlIGJ1ZmZlcnMgKi8KLSAvKiB3aWxsIGJlIGZpbGxlZCB3aXRoIGRhdGEgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgaW4gZmlsbF9maWxlLiBpZiAqLwotIC8qIGZpbGxfZmlsZSBpcyBhbiBlbXB0eSBzdHJpbmcsIHRoZSBidWZmZXJzIHdpbGwgbm90IGJlIGZpbGxlZCB3aXRoICovCi0gLyogYW55IHBhcnRpY3VsYXIgZGF0YSAqLworLyogdGhpcyByb3V0aW5lIHdpbGwgYWxsb2NhdGUgYSBjaXJjdWxhciBsaXN0IG9mIGJ1ZmZlcnMgZm9yIGVpdGhlcgorICAgc2VuZCBvciByZWNlaXZlIG9wZXJhdGlvbnMuIGVhY2ggb2YgdGhlc2UgYnVmZmVycyB3aWxsIGJlIGFsaWduZWQKKyAgIGFuZCBvZmZzZXQgYXMgcGVyIHRoZSB1c2VycyByZXF1ZXN0LiB0aGUgY2lyY3VtZmVyZW5jZSBvZiB0aGlzIHJpbmcKKyAgIHdpbGwgYmUgY29udHJvbGxlZCBieSB0aGUgc2V0dGluZyBvZiB3aWR0aC4gdGhlIGJ1ZmZlcnMgd2lsbCBiZQorICAgZmlsbGVkIHdpdGggZGF0YSBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBpbiBmaWxsX2ZpbGUuIGlmIGZpbGxfZmlsZQorICAgaXMgYW4gZW1wdHkgc3RyaW5nLCB0aGUgYnVmZmVycyB3aWxsIGJlIGZpbGxlZCBmcm9tICJkZWZhdWx0X2ZpbGwiCisgICB3aGljaCB3aWxsIGJlICJuZXRwZXJmIiBzbyBhbnlvbmUgc25pZmZpbmcgdGhlIHRyYWZmaWMgd2lsbCBoYXZlIGEKKyAgIGJldHRlciBpZGVhIHdoYXQgdGhpcyB0cmFmZmljIGhhcHBlbnMgdG8gYmUuICovCiAKIHN0cnVjdCByaW5nX2VsdCAqCiBhbGxvY2F0ZV9idWZmZXJfcmluZyhpbnQgd2lkdGgsIGludCBidWZmZXJfc2l6ZSwgaW50IGFsaWdubWVudCwgaW50IG9mZnNldCkKQEAgLTEyMzMsMTYgKzE1NDIsMTcgQEAKIAogICAvKiBkaWQgdGhlIHVzZXIgd2lzaCB0byBoYXZlIHRoZSBidWZmZXJzIHByZS1maWxsZWQgd2l0aCBkYXRhIGZyb20gYSAqLwogICAvKiBwYXJ0aWN1bGFyIHNvdXJjZT8gKi8KLSAgaWYgKHN0cmNtcChmaWxsX2ZpbGUsIiIpID09IDApIHsKKyAgaWYgKHN0cmNtcChsb2NhbF9maWxsX2ZpbGUsIiIpID09IDApIHsKICAgICBkb19maWxsID0gMDsKICAgICBmaWxsX3NvdXJjZSA9IE5VTEw7CiAgIH0KICAgZWxzZSB7CiAgICAgZG9fZmlsbCA9IDE7Ci0gICAgZmlsbF9zb3VyY2UgPSAoRklMRSAqKWZvcGVuKGZpbGxfZmlsZSwiciIpOworICAgIGZpbGxfc291cmNlID0gKEZJTEUgKilmb3Blbihsb2NhbF9maWxsX2ZpbGUsInIiKTsKICAgICBpZiAoZmlsbF9zb3VyY2UgPT0gKEZJTEUgKilOVUxMKSB7Ci0gICAgICBwZXJyb3IoIkNvdWxkIG5vdCBvcGVuIHJlcXVlc3RlZCBmaWxsIGZpbGUiKTsKLSAgICAgIGV4aXQoMSk7CisgICAgICBmcHJpbnRmKHdoZXJlLCJDb3VsZCBub3Qgb3BlbiByZXF1ZXN0ZWQgZmlsbCBmaWxlOiAlc1xuIiwKKwkgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9CiAgIH0KIApAQCAtMTI1MywyNiArMTU2MywzMSBAQAogICAgIC8qIGdldCB0aGUgcmluZyBlbGVtZW50ICovCiAgICAgdGVtcF9saW5rID0gKHN0cnVjdCByaW5nX2VsdCAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHJpbmdfZWx0KSk7CiAgICAgaWYgKHRlbXBfbGluayA9PSBOVUxMKSB7Ci0gICAgICBwcmludGYoIm1hbGxvYyglenUpIGZhaWxlZCFcbiIsIHNpemVvZihzdHJ1Y3QgcmluZ19lbHQpKTsKLSAgICAgIGV4aXQoMSk7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJtYWxsb2MoJXUpIGZhaWxlZCFcbiIsCisJICAgICAgKHVuc2lnbmVkIGludClzaXplb2Yoc3RydWN0IHJpbmdfZWx0KSk7CisgICAgICBleGl0KC0xKTsKICAgICB9CisgICAgdGVtcF9saW5rLT5jb21wbGV0aW9uX3B0ciA9IE5VTEw7CiAgICAgLyogcmVtZW1iZXIgdGhlIGZpcnN0IG9uZSBzbyB3ZSBjYW4gY2xvc2UgdGhlIHJpbmcgYXQgdGhlIGVuZCAqLwogICAgIGlmIChpID09IDEpIHsKICAgICAgIGZpcnN0X2xpbmsgPSB0ZW1wX2xpbms7CiAgICAgfQogICAgIHRlbXBfbGluay0+YnVmZmVyX2Jhc2UgPSAoY2hhciAqKW1hbGxvYyhtYWxsb2Nfc2l6ZSk7Ci0gICAgaWYgKHRlbXBfbGluayA9PSBOVUxMKSB7Ci0gICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgbWFsbG9jX3NpemUpOwotICAgICAgZXhpdCgxKTsKLQl9CisgICAgaWYgKHRlbXBfbGluay0+YnVmZmVyX2Jhc2UgPT0gTlVMTCkgeworICAgICAgZnByaW50Zih3aGVyZSwKKwkgICAgICAibWFsbG9jKCVkKSBmYWlsZWQhXG4iLAorCSAgICAgIG1hbGxvY19zaXplKTsKKyAgICAgIGV4aXQoLTEpOworICAgIH0KIAogI2lmbmRlZiBXSU4zMgotICAgIHRlbXBfbGluay0+YnVmZmVyX3B0ciA9IChjaGFyICopKCggKGxvbmcpKHRlbXBfbGluay0+YnVmZmVyX2Jhc2UpICsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKWFsaWdubWVudCAtIDEpICYgICAgICAgIAorICAgIHRlbXBfbGluay0+YnVmZmVyX3B0ciA9IChjaGFyICopKCggKGxvbmcpKHRlbXBfbGluay0+YnVmZmVyX2Jhc2UpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpYWxpZ25tZW50IC0gMSkgJgogICAgICAgICAgICAgICAgICAgICAgICAgIH4oKGxvbmcpYWxpZ25tZW50IC0gMSkpOwogI2Vsc2UKLSAgICB0ZW1wX2xpbmstPmJ1ZmZlcl9wdHIgPSAoY2hhciAqKSgoIChVTE9OR19QVFIpKHRlbXBfbGluay0+YnVmZmVyX2Jhc2UpICsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpYWxpZ25tZW50IC0gMSkgJiAgIAorICAgIHRlbXBfbGluay0+YnVmZmVyX3B0ciA9IChjaGFyICopKCggKFVMT05HX1BUUikodGVtcF9saW5rLT5idWZmZXJfYmFzZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKWFsaWdubWVudCAtIDEpICYKICAgICAgICAgICAgICAgICAgICAgICAgICB+KChVTE9OR19QVFIpYWxpZ25tZW50IC0gMSkpOwogI2VuZGlmCiAgICAgdGVtcF9saW5rLT5idWZmZXJfcHRyICs9IG9mZnNldDsKQEAgLTEzMzUsNyArMTY1MCw3IEBACiAgIGxpbWl0ID0gdGVtcF9idWZmZXIgKyBsZW5ndGg7CiAgIGRpcnR5X3RvdGFscyA9IDA7CiAKLSAgZm9yIChpID0gMDsgCisgIGZvciAoaSA9IDA7CiAgICAgICAgKChpIDwgZGlydHlfY291bnQpICYmICh0ZW1wX2J1ZmZlciA8IGxpbWl0KSk7CiAgICAgICAgaSsrKSB7CiAgICAgKnRlbXBfYnVmZmVyICs9IChjaGFyKWk7CkBAIC0xMzQzLDcgKzE2NTgsNyBAQAogICAgIHRlbXBfYnVmZmVyKys7CiAgIH0KIAotICBmb3IgKGkgPSAwOyAKKyAgZm9yIChpID0gMDsKICAgICAgICAoKGkgPCBjbGVhbl9jb3VudCkgJiYgKHRlbXBfYnVmZmVyIDwgbGltaXQpKTsKICAgICAgICBpKyspIHsKICAgICBkaXJ0eV90b3RhbHMgKz0gKnRlbXBfYnVmZmVyOwpAQCAtMTM2NCwxMyArMTY3OSwxMyBAQAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjaW5jbHVkZSA8c3lzL2V4cy5oPgogCi0gLyogdGhpcyByb3V0aW5lIHdpbGwgYWxsb2NhdGUgYSBjaXJjdWxhciBsaXN0IG9mIGJ1ZmZlcnMgZm9yIGVpdGhlciAqLwotIC8qIHNlbmQgb3IgcmVjZWl2ZSBvcGVyYXRpb25zLiBlYWNoIG9mIHRoZXNlIGJ1ZmZlcnMgd2lsbCBiZSBhbGlnbmVkICovCi0gLyogYW5kIG9mZnNldCBhcyBwZXIgdGhlIHVzZXJzIHJlcXVlc3QuIHRoZSBjaXJjdW1mZXJlbmNlIG9mIHRoaXMgKi8KLSAvKiByaW5nIHdpbGwgYmUgY29udHJvbGxlZCBieSB0aGUgc2V0dGluZyBvZiBzZW5kX3dpZHRoLiB0aGUgYnVmZmVycyAqLwotIC8qIHdpbGwgYmUgZmlsbGVkIHdpdGggZGF0YSBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBpbiBmaWxsX2ZpbGUuIGlmICovCi0gLyogZmlsbF9maWxlIGlzIGFuIGVtcHR5IHN0cmluZywgdGhlIGJ1ZmZlcnMgd2lsbCBub3QgYmUgZmlsbGVkIHdpdGggKi8KLSAvKiBhbnkgcGFydGljdWxhciBkYXRhICovCisvKiB0aGlzIHJvdXRpbmUgd2lsbCBhbGxvY2F0ZSBhIGNpcmN1bGFyIGxpc3Qgb2YgYnVmZmVycyBmb3IgZWl0aGVyCisgICBzZW5kIG9yIHJlY2VpdmUgb3BlcmF0aW9ucy4gZWFjaCBvZiB0aGVzZSBidWZmZXJzIHdpbGwgYmUgYWxpZ25lZAorICAgYW5kIG9mZnNldCBhcyBwZXIgdGhlIHVzZXJzIHJlcXVlc3QuIHRoZSBjaXJjdW1mZXJlbmNlIG9mIHRoaXMgcmluZworICAgd2lsbCBiZSBjb250cm9sbGVkIGJ5IHRoZSBzZXR0aW5nIG9mIHNlbmRfd2lkdGguIHRoZSBidWZmZXJzIHdpbGwKKyAgIGJlIGZpbGxlZCB3aXRoIGRhdGEgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgaW4gbG9jYWxfZmlsbF9maWxlLiBpZgorICAgbG9jYWxfZmlsbF9maWxlIGlzIGFuIGVtcHR5IHN0cmluZywgdGhlIGJ1ZmZlcnMgd2lsbCBub3QgYmUgZmlsbGVkIHdpdGgKKyAgIGFueSBwYXJ0aWN1bGFyIGRhdGEgKi8KIAogc3RydWN0IHJpbmdfZWx0ICoKIGFsbG9jYXRlX2V4c19idWZmZXJfcmluZyAoaW50IHdpZHRoLCBpbnQgYnVmZmVyX3NpemUsIGludCBhbGlnbm1lbnQsIGludCBvZmZzZXQsIGV4c19taGFuZGxlX3QgKm1oYW5kbGVwKQpAQCAtMTM5NSwxMiArMTcxMCwxMiBAQAogCiAgICAgLyogZGlkIHRoZSB1c2VyIHdpc2ggdG8gaGF2ZSB0aGUgYnVmZmVycyBwcmUtZmlsbGVkIHdpdGggZGF0YSBmcm9tIGEgKi8KICAgICAvKiBwYXJ0aWN1bGFyIHNvdXJjZT8gKi8KLSAgICBpZiAoc3RyY21wIChmaWxsX2ZpbGUsICIiKSA9PSAwKSB7CisgICAgaWYgKHN0cmNtcCAobG9jYWxfZmlsbF9maWxlLCAiIikgPT0gMCkgewogICAgICAgICBkb19maWxsID0gMDsKICAgICAgICAgZmlsbF9zb3VyY2UgPSBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvX2ZpbGwgPSAxOwotICAgICAgICBmaWxsX3NvdXJjZSA9IChGSUxFICopIGZvcGVuIChmaWxsX2ZpbGUsICJyIik7CisgICAgICAgIGZpbGxfc291cmNlID0gKEZJTEUgKikgZm9wZW4gKGxvY2FsX2ZpbGxfZmlsZSwgInIiKTsKICAgICAgICAgaWYgKGZpbGxfc291cmNlID09IChGSUxFICopIE5VTEwpIHsKICAgICAgICAgICAgIHBlcnJvciAoIkNvdWxkIG5vdCBvcGVuIHJlcXVlc3RlZCBmaWxsIGZpbGUiKTsKICAgICAgICAgICAgIGV4aXQgKDEpOwpAQCAtMTQxMCw3ICsxNzI1LDggQEAKICAgICBhc3NlcnQgKHdpZHRoID49IDEpOwogCiAgICAgaWYgKGRlYnVnKSB7Ci0gICAgICAgIGZwcmludGYgKHdoZXJlLCAiYWxsb2NhdGVfZXhzX2J1ZmZlcl9yaW5nOiAiCisgICAgICAgIGZwcmludGYgKHdoZXJlLAorCQkgImFsbG9jYXRlX2V4c19idWZmZXJfcmluZzogIgogICAgICAgICAgICAgICAgICAid2lkdGg9JWQgYnVmZmVyX3NpemU9JWQgYWxpZ25tZW50PSVkIG9mZnNldD0lZFxuIiwKICAgICAgICAgICAgICAgICAgd2lkdGgsIGJ1ZmZlcl9zaXplLCBhbGlnbm1lbnQsIG9mZnNldCk7CiAgICAgfQpAQCAtMTQyNiw3ICsxNzQyLDggQEAKICAgICB9CiAgICAgbW1hcF9idWZmZXJfYWxpZ25lZCA9IChjaGFyICopICgodWludHB0cl90KW1tYXBfYnVmZmVyICYgfihOQlBHLTEpKTsKICAgICBpZiAoZGVidWcpIHsKLSAgICAgICAgZnByaW50ZiAod2hlcmUsICJhbGxvY2F0ZV9leHNfYnVmZmVyX3Jpbmc6ICIKKyAgICAgICAgZnByaW50ZiAod2hlcmUsCisJCSAiYWxsb2NhdGVfZXhzX2J1ZmZlcl9yaW5nOiAiCiAgICAgICAgICAgICAgICAgICJtbWFwIGJ1ZmZlciBzaXplPSVkIGFkZHJlc3M9MHglcCBhbGlnbmVkPTB4JXBcbiIsCiAgICAgICAgICAgICAgICAgIG1tYXBfc2l6ZSwgbW1hcF9idWZmZXIsIG1tYXBfYnVmZmVyX2FsaWduZWQpOwogICAgIH0KQEAgLTE0OTIsNyArMTgwOSw3IEBACiAgICAgICAgIHByZXZfbGluayA9IHRlbXBfbGluazsKICAgICB9CiAKLSAgICByZXR1cm4gKGZpcnN0X2xpbmspOyAgICAgICAgLyogaXQncyBhIGNpcmNsZSwgZG9lc24ndCBtYXR0ZXIgd2hpY2ggd2UgcmV0dXJuICovCisgICAgcmV0dXJuIChmaXJzdF9saW5rKTsgIC8qIGl0IGlzIGEgY2lyY2xlLCBkb2Vzbid0IG1hdHRlciB3aGljaCB3ZSByZXR1cm4gKi8KIH0KIAogI2VuZGlmIC8qIEhBVkVfSUNTQ19FWFMgKi8KQEAgLTE1MTAsNyArMTgyNyw3IEBACiAgICBhIHRlbXBvYXJhcnkgZmlsZSBhbmQgZmlsbCBpdCB3aXRoIHJhbmRvbSBkYXRhIGFuZCB1c2UgdGhhdAogICAgaW5zdGVhZC4gIHJhaiAyMDA3LTA4LTA5ICovCiAKLXN0cnVjdCBzZW5kZmlsZV9yaW5nX2VsdCAqCitzdHJ1Y3QgcmluZ19lbHQgKgogYWxsb2Nfc2VuZGZpbGVfYnVmX3JpbmcoaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFsaWdubWVudCwKQEAgLTE1MTgsMTAgKzE4MzUsMTAgQEAKIAogewogCi0gIHN0cnVjdCBzZW5kZmlsZV9yaW5nX2VsdCAqZmlyc3RfbGluayA9IE5VTEw7Ci0gIHN0cnVjdCBzZW5kZmlsZV9yaW5nX2VsdCAqdGVtcF9saW5rICA9IE5VTEw7Ci0gIHN0cnVjdCBzZW5kZmlsZV9yaW5nX2VsdCAqcHJldl9saW5rOwotICAKKyAgc3RydWN0IHJpbmdfZWx0ICpmaXJzdF9saW5rID0gTlVMTDsKKyAgc3RydWN0IHJpbmdfZWx0ICp0ZW1wX2xpbmsgID0gTlVMTDsKKyAgc3RydWN0IHJpbmdfZWx0ICpwcmV2X2xpbms7CisKICAgaW50IGk7CiAgIGludCBmaWxkZXM7CiAgIHN0cnVjdCBzdGF0IHN0YXRidWY7CkBAIC0xNTI5LDExICsxODQ2LDExIEBACiAgIC8qIGlmIHRoZSB1c2VyIGhhcyBub3Qgc3BlY2lmaWVkIGEgZmlsZSB3aXRoIHRoZSAtRiBvcHRpb24sIHdlIHdpbGwKICAgICAgZmFpbCB0aGUgdGVzdC4gb3RoZXJ3aXNlLCBnbyBhaGVhZCBhbmQgdHJ5IHRvIG9wZW4gdGhlCiAgICAgIGZpbGUuIDA4LzIwMDAgKi8KLSAgaWYgKHN0cmNtcChmaWxsX2ZpbGUsIiIpID09IDApIHsKKyAgaWYgKHN0cmNtcChsb2NhbF9maWxsX2ZpbGUsIiIpID09IDApIHsKICAgICAvKiB1c2UgYW4gdGVtcCBmaWxlIGZvciB0aGUgZmlsbCBmaWxlICovCi0gICAgY2hhciAqdGVtcF9maWxlOworICAgIGNoYXIgdGVtcF9maWxlW10gPSB7Im5ldHBlcmZYWFhYWFhcMCJ9OwogICAgIGludCAqdGVtcF9idWZmZXI7Ci0gICAgCisKICAgICAvKiBtYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBhbiBpbnRzIHdvcnRoLCBldmVuIGlmIHRoZSB1c2VyIGlzCiAgICAgICAgdXNpbmcgYW4gaW5zYW5lIGJ1ZmZlciBzaXplIGZvciBhIHNlbmRmaWxlIHRlc3QuIHdlIGFyZQogICAgICAgIGFzcy11LW1lLWluZyB0aGF0IG1hbGxvYyB3aWxsIHJldHVybiBzb21ldGhpbmcgYXQgbGVhc3QgYWxpZ25lZApAQCAtMTU0MiwxNSArMTg1OSwxNCBAQAogICAgIGlmICh0ZW1wX2J1ZmZlcikgewogICAgICAgLyogb2ssIHdlIGhhdmUgdGhlIGJ1ZmZlciB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUsIGxldHMgZ2V0IGEKIAkgdGVtcG9yYXJ5IGZpbGVuYW1lICovCi0gICAgICB0ZW1wX2ZpbGUgPSB0bXBuYW0oTlVMTCk7Ci0gICAgICBpZiAoTlVMTCAhPSB0ZW1wX2ZpbGUpIHsKLQlmaWxkZXMgPSBvcGVuKHRlbXBfZmlsZSxPX1JEV1IgfCBPX0VYQ0wgfCBPX0NSRUFULDA2MDApOworICAgICAgZmlsZGVzID0gbWtzdGVtcCh0ZW1wX2ZpbGUpOworICAgICAgLyogbm8gbmVlZCB0byBjYWxsIG9wZW4gYmVjYXVzZSBta3N0ZW1wIGRpZCBpdCAqLwogCWlmICgtMSAhPSBmaWxkZXMpIHsKIAkgIGludCBjb3VudDsKIAkgIGludCAqaW50X3B0cjsKIAotCSAgLyogaW5pdGlhbGl6ZSB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKi8KLQkgIHNyYW5kKGdldHBpZCgpKTsKKwkgIC8qIHdlIGluaXRpYWxpemUgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGluCisJICAgICBuZXRsaWJfaW5pdCgpIG5vdy4gcmFqIDIwMTEwMTExICovCiAKIAkgIC8qIHVubGluayB0aGUgZmlsZSBzbyBpdCBnb2VzIHBvb2Ygd2hlbiB3ZQogCSAgICAgZXhpdC4gdW5sZXNzL3VudGlsIHNob3duIHRvIGJlIGEgcHJvYmxlbSB3ZSB3aWxsCkBAIC0xNTc0LDE0ICsxODkwLDkgQEAKIAkgICAgICBleGl0KC0xKTsKIAkgICAgfQogCSAgfQotCX0KLQllbHNlIHsKLQkgIHBlcnJvcigiYWxsb2NhdGVfc2VuZGZpbGVfYnVmX3Jpbmc6IGNvdWxkIG5vdCBvcGVuIHRlbXBmaWxlIik7Ci0JICBleGl0KC0xKTsKLQl9CiAgICAgICB9CiAgICAgICBlbHNlIHsKLQlwZXJyb3IoImFsbG9jYXRlX3NlbmRmaWxlX2J1Zl9yaW5nOiBjb3VsZCBub3QgYWxsb2NhdGUgdGVtcCBuYW1lIik7CisJcGVycm9yKCJhbGxvY19zZW5kZmlsZV9idWZfcmluZzogY291bGQgbm90IGFsbG9jYXRlIHRlbXAgbmFtZSIpOwogCWV4aXQoLTEpOwogICAgICAgfQogICAgIH0KQEAgLTE1OTIsNyArMTkwMyw3IEBACiAgIH0KICAgZWxzZSB7CiAgICAgLyogdGhlIHVzZXIgcG9pbnRlZCB1cyBhdCBhIGZpbGUsIHNvIHRyeSBpdCAqLwotICAgIGZpbGRlcyA9IG9wZW4oZmlsbF9maWxlICwgT19SRE9OTFkpOworICAgIGZpbGRlcyA9IG9wZW4obG9jYWxfZmlsbF9maWxlICwgT19SRE9OTFkpOwogICAgIGlmIChmaWxkZXMgPT0gLTEpewogICAgICAgcGVycm9yKCJhbGxvY19zZW5kZmlsZV9idWZfcmluZzogQ291bGQgbm90IG9wZW4gcmVxdWVzdGVkIGZpbGUiKTsKICAgICAgIGV4aXQoMSk7CkBAIC0xNjAxLDM1ICsxOTEyLDM4IEBACiAgICAgICAgY29tcGxldGUgcmluZy4gdGhhdCB3YXkgd2UgZG8gbm90IG5lZWQgYWRkaXRpb25hbCBsb2dpYyBpbiB0aGUKICAgICAgICByaW5nIHNldHVwIHRvIGRlYWwgd2l0aCB3cmFwLWFyb3VuZCBpc3N1ZXMuIHdlIG1pZ2h0IHdhbnQgdGhhdAogICAgICAgIHNvbWVkYXksIGJ1dCBub3QganVzdCBub3cuIDA4LzIwMDAgKi8KLSAgICBpZiAoc3RhdChmaWxsX2ZpbGUsJnN0YXRidWYpICE9IDApIHsKKyAgICBpZiAoc3RhdChsb2NhbF9maWxsX2ZpbGUsJnN0YXRidWYpICE9IDApIHsKICAgICAgIHBlcnJvcigiYWxsb2Nfc2VuZGZpbGVfYnVmX3Jpbmc6IGNvdWxkIG5vdCBzdGF0IGZpbGUiKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQogICAgIGlmIChzdGF0YnVmLnN0X3NpemUgPCAod2lkdGggKiBidWZmZXJfc2l6ZSkpIHsKICAgICAgIC8qIHRoZSBmaWxlIGlzIHRvbyBzaG9ydCAqLwotICAgICAgZnByaW50ZihzdGRlcnIsImFsbG9jX3NlbmRmaWxlX2J1Zl9yaW5nOiBzcGVjaWZpZWQgZmlsZSB0b28gc21hbGwuXG4iKTsKLSAgICAgIGZwcmludGYoc3RkZXJyLCJmaWxlIG11c3QgYmUgbGFyZ2VyIHRoYW4gc2VuZF93aWR0aCAqIHNlbmRfc2l6ZVxuIik7CisgICAgICBmcHJpbnRmKHN0ZGVyciwKKwkgICAgICAiYWxsb2Nfc2VuZGZpbGVfYnVmX3Jpbmc6IHNwZWNpZmllZCBmaWxlIHRvbyBzbWFsbC5cbiIKKwkgICAgICAiZmlsZSBtdXN0IGJlIGxhcmdlciB0aGFuIHNlbmRfd2lkdGggKiBzZW5kX3NpemVcbiIpOwogICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgICBleGl0KDEpOwogICAgIH0KICAgfQotICAKKwogICAvKiBzbywgYXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgZmlsZGVzIGlzIGEgZGVzY3JpcHRvciB3aGljaAogICAgICByZWZlcmVuY2VzIGEgZmlsZSBvZiBzdWZmaWNpZW50IHNpemUgZm9yIG91ciBuZWZhcmlvdXMKICAgICAgcG9ycG9pc2VzLiByYWogMjAwNy0wOC0wOSAqLwogCiAgIHByZXZfbGluayA9IE5VTEw7CiAgIGZvciAoaSA9IDE7IGkgPD0gd2lkdGg7IGkrKykgewotICAgIC8qIGdldCB0aGUgcmluZyBlbGVtZW50LiB3ZSBzaG91bGQgcHJvYmFibHkgbWFrZSBzdXJlIHRoZSBtYWxsb2MoKSAKLSAgICAgd2FzIHN1Y2Nlc3NmdWwsIGJ1dCBmb3Igbm93IHdlJ2xsIGp1c3QgbGV0IHRoZSBjb2RlIGJvbWIKLSAgICAgbXlzdGVyaW91c2x5LiAwOC8yMDAwICovCisgICAgLyogZ2V0IHRoZSByaW5nIGVsZW1lbnQuIHdlIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgdGhlIG1hbGxvYygpCisgICAgICAgd2FzIHN1Y2Nlc3NmdWwsIGJ1dCBmb3Igbm93IHdlJ2xsIGp1c3QgbGV0IHRoZSBjb2RlIGJvbWIKKyAgICAgICBteXN0ZXJpb3VzbHkuIDA4LzIwMDAgKi8KIAotICAgIHRlbXBfbGluayA9IChzdHJ1Y3Qgc2VuZGZpbGVfcmluZ19lbHQgKikKLSAgICAgIG1hbGxvYyhzaXplb2Yoc3RydWN0IHNlbmRmaWxlX3JpbmdfZWx0KSk7CisgICAgdGVtcF9saW5rID0gKHN0cnVjdCByaW5nX2VsdCAqKQorICAgICAgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmluZ19lbHQpKTsKICAgICBpZiAodGVtcF9saW5rID09IE5VTEwpIHsKLSAgICAgIHByaW50ZigibWFsbG9jKCV1KSBmYWlsZWQhXG4iLCBzaXplb2Yoc3RydWN0IHNlbmRmaWxlX3JpbmdfZWx0KSk7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJtYWxsb2MoJXUpIGZhaWxlZCFcbiIsCisJICAgICAgKHVuc2lnbmVkIGludCkgc2l6ZW9mKHN0cnVjdCByaW5nX2VsdCkpOwogICAgICAgZXhpdCgxKTsKLQl9CisgICAgfQogCiAgICAgLyogcmVtZW1iZXIgdGhlIGZpcnN0IG9uZSBzbyB3ZSBjYW4gY2xvc2UgdGhlIHJpbmcgYXQgdGhlIGVuZCAqLwogCkBAIC0xNjU2LDcgKzE5NzAsNyBAQAogICB9CiAgIC8qIGNsb3NlIHRoZSByaW5nICovCiAgIGZpcnN0X2xpbmstPm5leHQgPSB0ZW1wX2xpbms7Ci0gIAorCiAgIHJldHVybihmaXJzdF9saW5rKTsgLyogaXQncyBhIGR1bW15IHJpbmcgKi8KIH0KIApAQCAtMTY3NiwxMCArMTk5MCwxMCBAQAogdm9pZAogZHVtcF9yZXF1ZXN0KCkKIHsKLXNpemVfdCBjb3VudGVyID0gMDsKK2ludCBjb3VudGVyID0gMDsKIGZwcmludGYod2hlcmUsInJlcXVlc3QgY29udGVudHM6XG4iKTsKIGZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCAoKHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQpLTMpOyBjb3VudGVyICs9IDQpIHsKLSAgZnByaW50Zih3aGVyZSwiJXp1Olx0JTh4ICU4eCAlOHggJTh4IFx0fCU0LjRzfCB8JTQuNHN8IHwlNC40c3wgfCU0LjRzfFxuIiwKKyAgZnByaW50Zih3aGVyZSwiJWQ6XHQlOHggJTh4ICU4eCAlOHggXHR8JTQuNHN8IHwlNC40c3wgfCU0LjRzfCB8JTQuNHN8XG4iLAogICAgICAgICAgIGNvdW50ZXIsCiAgICAgICAgICAgcmVxdWVzdF9hcnJheVtjb3VudGVyXSwKICAgICAgICAgICByZXF1ZXN0X2FycmF5W2NvdW50ZXIrMV0sCkBAIC0xNzA3LDExICsyMDIxLDExIEBACiB2b2lkCiBkdW1wX3Jlc3BvbnNlKCkKIHsKLXNpemVfdCBjb3VudGVyID0gMDsKK2ludCBjb3VudGVyID0gMDsKIAogZnByaW50Zih3aGVyZSwicmVzcG9uc2UgY29udGVudHNcbiIpOwogZm9yIChjb3VudGVyID0gMDsgY291bnRlciA8ICgoc2l6ZW9mKG5ldHBlcmZfcmVzcG9uc2UpLzQpLTMpOyBjb3VudGVyICs9IDQpIHsKLSAgZnByaW50Zih3aGVyZSwiJXp1Olx0JTh4ICU4eCAlOHggJTh4IFx0PiU0LjRzPCA+JTQuNHM8ID4lNC40czwgPiU0LjRzPFxuIiwKKyAgZnByaW50Zih3aGVyZSwiJWQ6XHQlOHggJTh4ICU4eCAlOHggXHQ+JTQuNHM8ID4lNC40czwgPiU0LjRzPCA+JTQuNHM8XG4iLAogICAgICAgICAgIGNvdW50ZXIsCiAgICAgICAgICAgcmVzcG9uc2VfYXJyYXlbY291bnRlcl0sCiAgICAgICAgICAgcmVzcG9uc2VfYXJyYXlbY291bnRlcisxXSwKQEAgLTE3MjcsOCArMjA0MSw4IEBACiAKICAvKgogCi0gICAgICBmb3JtYXRfbnVtYmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgZm9ybWF0X251bWJlcigpCisKICAgcmV0dXJuIGEgcG9pbnRlciB0byBhIGZvcm1hdHRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgdmFsdWUgcGFzc2VkCiAgIHRyYW5zbGF0ZWQgaW50byB0aGUgdW5pdHMgc3BlY2lmaWVkLiBJdCBhc3N1bWVzIHRoYXQgdGhlIGJhc2UgdW5pdHMKICAgYXJlIGJ5dGVzLiBJZiB0aGUgZm9ybWF0IGNhbGxzIGZvciBiaXRzLCBpdCB3aWxsIHVzZSBTSSB1bml0cyAoMTBeKQpAQCAtMTc0MiwxNCArMjA1NiwxNyBAQAogICBlbHNld2hlcmUgc3VjaCBhcyBpbiB0aGUgVENQX1JSLWFzLWJpZGlyZWN0aW9uYWwgdGVzdCBjYXNlLgogCiAgKi8KLSAKKwogCiBjaGFyICoKIGZvcm1hdF9udW1iZXIoZG91YmxlIG51bWJlcikKIHsKICAgc3RhdGljICBjaGFyICAgIGZtdGJ1Zls2NF07Ci0gICAgICAgIAorCiAgIHN3aXRjaCAobGliZm10KSB7CisgIGNhc2UgJ0InOgorICAgIHNucHJpbnRmKGZtdGJ1Ziwgc2l6ZW9mKGZtdGJ1ZiksICAiJS03LjJmIiAsIG51bWJlcik7CisgICAgYnJlYWs7CiAgIGNhc2UgJ0snOgogICAgIHNucHJpbnRmKGZtdGJ1Ziwgc2l6ZW9mKGZtdGJ1ZiksICAiJS03LjJmIiAsIG51bWJlciAvIDEwMjQuMCk7CiAgICAgYnJlYWs7CkBAIC0xNzU5LDYgKzIwNzYsOSBAQAogICBjYXNlICdHJzoKICAgICBzbnByaW50ZihmbXRidWYsIHNpemVvZihmbXRidWYpLCAgIiUtNy4yZiIsIG51bWJlciAvIDEwMjQuMCAvIDEwMjQuMCAvIDEwMjQuMCk7CiAgICAgYnJlYWs7CisgIGNhc2UgJ2InOgorICAgIHNucHJpbnRmKGZtdGJ1Ziwgc2l6ZW9mKGZtdGJ1ZiksICAiJS03LjJmIiAsIG51bWJlciAqIDgpOworICAgIGJyZWFrOwogICBjYXNlICdrJzoKICAgICBzbnByaW50ZihmbXRidWYsIHNpemVvZihmbXRidWYpLCAgIiUtNy4yZiIsIG51bWJlciAqIDggLyAxMDAwLjApOwogICAgIGJyZWFrOwpAQCAtMTgyOSw3ICsyMTQ5LDcgQEAKICAgZGVmYXVsdDoKICAgICBtZXRob2RfY2hhciA9ICc/JzsKICAgfQotICAKKwogICByZXR1cm4gbWV0aG9kX2NoYXI7CiAKIH0KQEAgLTE4MzgsOCArMjE1OCwxMSBAQAogZm9ybWF0X3VuaXRzKCkKIHsKICAgc3RhdGljICAgICAgICBjaGFyICAgIHVuaXRidWZbNjRdOwotICAKKwogICBzd2l0Y2ggKGxpYmZtdCkgeworICBjYXNlICdCJzoKKyAgICBzdHJjcHkodW5pdGJ1ZiwgIkJ5dGVzIik7CisgICAgYnJlYWs7CiAgIGNhc2UgJ0snOgogICAgIHN0cmNweSh1bml0YnVmLCAiS0J5dGVzIik7CiAgICAgYnJlYWs7CkBAIC0xODQ5LDYgKzIxNzIsOSBAQAogICBjYXNlICdHJzoKICAgICBzdHJjcHkodW5pdGJ1ZiwgIkdCeXRlcyIpOwogICAgIGJyZWFrOworICBjYXNlICdiJzoKKyAgICBzdHJjcHkodW5pdGJ1ZiwgIjEwXjBiaXRzIik7CisgICAgYnJlYWs7CiAgIGNhc2UgJ2snOgogICAgIHN0cmNweSh1bml0YnVmLCAiMTBeM2JpdHMiKTsKICAgICBicmVhazsKQEAgLTE4NjEsMTEgKzIxODcsMTQgQEAKICAgY2FzZSAneCc6CiAgICAgc3RyY3B5KHVuaXRidWYsICJUcmFucyIpOwogICAgIGJyZWFrOwotICAgIAorICBjYXNlICd1JzoKKyAgICBzdHJjcHkodW5pdGJ1ZiwiVXNlYyIpOworICAgIGJyZWFrOworCiAgIGRlZmF1bHQ6CiAgICAgc3RyY3B5KHVuaXRidWYsICJLQnl0ZXMiKTsKICAgfQotICAKKwogICByZXR1cm4gdW5pdGJ1ZjsKIH0KIAwKQEAgLTE4NzcsNyArMjIwNiw3IEBACiAvKiB0ZWFyLWRvd24gdGhlIGNvbnRyb2wgY29ubmVjdGlvbiBiZXR3ZWVuIG1lIGFuZCB0aGUgc2VydmVyLiAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi12b2lkIAordm9pZAogc2h1dGRvd25fY29udHJvbCgpCiB7CiAKQEAgLTE5MDMsMjEgKzIyMzIsMjEgQEAKICAgICBleGl0KDEpOwogICB9CiAKLSAgLyogTm93LCB3ZSBoYW5nIG9uIGEgc2VsZWN0IHdhaXRpbmcgZm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lICovCi0gIC8qIHJlYWRhYmxlIHRvIHJlY2VpdmUgdGhlIHNodXRkb3duIGluZGljYXRpb24gZnJvbSB0aGUgcmVtb3RlLiB0aGlzICovCi0gIC8qIHdpbGwgYmUgImp1c3QiIGxpa2UgdGhlIHJlY3ZfcmVzcG9uc2UoKSBjb2RlICovCisgIC8qIE5vdywgd2UgaGFuZyBvbiBhIHNlbGVjdCB3YWl0aW5nIGZvciB0aGUgc29ja2V0IHRvIGJlY29tZQorICAgICByZWFkYWJsZSB0byByZWNlaXZlIHRoZSBzaHV0ZG93biBpbmRpY2F0aW9uIGZyb20gdGhlIHJlbW90ZS4gdGhpcworICAgICB3aWxsIGJlICJqdXN0IiBsaWtlIHRoZSByZWN2X3Jlc3BvbnNlKCkgY29kZQogCi0gIC8qIHdlIG9ubHkgc2VsZWN0IG9uY2UuIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgcmVzcG9uc2UgaXMgc3BsaXQgKi8KLSAgLyogKHdoaWNoIHNob3VsZCBub3QgYmUgaGFwcGVuaW5nLCB0aGF0IHdlIHdpbGwgcmVjZWl2ZSB0aGUgd2hvbGUgKi8KLSAgLyogdGhpbmcgYW5kIG5vdCBoYXZlIGEgcHJvYmxlbSA7LSkgKi8KKyAgICAgd2Ugb25seSBzZWxlY3Qgb25jZS4gaXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSByZXNwb25zZSBpcyBzcGxpdAorICAgICAod2hpY2ggc2hvdWxkIG5vdCBiZSBoYXBwZW5pbmcsIHRoYXQgd2Ugd2lsbCByZWNlaXZlIHRoZSB3aG9sZQorICAgICB0aGluZyBhbmQgbm90IGhhdmUgYSBwcm9ibGVtIDstKSAqLwogCiAgIEZEX1pFUk8oJnJlYWRmZHMpOwogICBGRF9TRVQobmV0bGliX2NvbnRyb2wsJnJlYWRmZHMpOwogICB0aW1lb3V0LnR2X3NlYyAgPSA2MDsgLyogd2FpdCBvbmUgbWludXRlIHRoZW4gcHVudCAqLwogICB0aW1lb3V0LnR2X3VzZWMgPSAwOwogCi0gIC8qIHNlbGVjdCBoYWQgYmV0dGVyIHJldHVybiBvbmUsIG9yIHRoZXJlIHdhcyBlaXRoZXIgYSBwcm9ibGVtIG9yIGEgKi8KLSAgLyogdGltZW91dC4uLiAqLworICAvKiBzZWxlY3QgaGFkIGJldHRlciByZXR1cm4gb25lLCBvciB0aGVyZSB3YXMgZWl0aGVyIGEgcHJvYmxlbSBvciBhCisgICAgIHRpbWVvdXQuLi4gKi8KICAgaWYgKHNlbGVjdChGRF9TRVRTSVpFLAogICAgICAgICAgICAgICZyZWFkZmRzLAogICAgICAgICAgICAgIDAsCkBAIC0xOTM0LDcgKzIyNjMsNyBAQAogCiB9CiAKLS8qIAorLyoKICAgYmluZF90b19zcGVjaWZpY19wcm9jZXNzb3Igd2lsbCBiaW5kIHRoZSBjYWxsaW5nIHByb2Nlc3MgdG8gdGhlCiAgIHByb2Nlc3NvciBpbiAicHJvY2Vzc29yIiAgSXQgaGFzIGxvdHMgb2YgdWdseSBpZmRlZnMgdG8gZGVhbCB3aXRoCiAgIGFsbCB0aGUgZGlmZmVyZW50IHdheXMgc3lzdGVtcyBkbyBwcm9jZXNzb3IgYWZmaW5pdHkuICB0aGlzIGlzIGEKQEAgLTE5OTAsOCArMjMxOSwxMyBAQAogCiAjaWYgZGVmaW5lZChfX0NQVV9TRVRTSVpFKQogI2RlZmluZSBORVRQRVJGX0NQVV9TRVRTSVpFIF9fQ1BVX1NFVFNJWkUKKyNpZiBkZWZpbmVkKF9fQ1BVX1NFVF9TKQorI2RlZmluZSBORVRQRVJGX0NQVV9TRVQoY3B1LCBjcHVzZXRwKSAgX19DUFVfU0VUX1MoY3B1LCBzaXplb2YgKGNwdV9zZXRfdCksIGNwdXNldHApCisjZGVmaW5lIE5FVFBFUkZfQ1BVX1pFUk8oY3B1c2V0cCkgICAgICBfX0NQVV9aRVJPX1MgKHNpemVvZiAoY3B1X3NldF90KSwgY3B1c2V0cCkKKyNlbHNlCiAjZGVmaW5lIE5FVFBFUkZfQ1BVX1NFVChjcHUsIGNwdXNldHApICBfX0NQVV9TRVQoY3B1LCBjcHVzZXRwKQogI2RlZmluZSBORVRQRVJGX0NQVV9aRVJPKGNwdXNldHApICAgICAgX19DUFVfWkVSTyAoY3B1c2V0cCkKKyNlbmRpZgogICB0eXBlZGVmIGNwdV9zZXRfdCBuZXRwZXJmX2NwdV9zZXRfdDsKICNlbHNlCiAjZGVmaW5lIE5FVFBFUkZfQ1BVX1NFVFNJWkUgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpCkBAIC0yMDA2LDcgKzIzNDAsNyBAQAogICBpZiAobWFwcGVkX2FmZmluaXR5IDwgOCpzaXplb2YobmV0cGVyZl9jcHVfc2V0KSkgewogICAgIE5FVFBFUkZfQ1BVX1pFUk8oJm5ldHBlcmZfY3B1X3NldCk7CiAgICAgTkVUUEVSRl9DUFVfU0VUKG1hcHBlZF9hZmZpbml0eSwmbmV0cGVyZl9jcHVfc2V0KTsKLSAgICAKKwogICAgIGlmIChzY2hlZF9zZXRhZmZpbml0eShnZXRwaWQoKSwgbGVuLCAmbmV0cGVyZl9jcHVfc2V0KSkgewogICAgICAgaWYgKGRlYnVnKSB7CiAJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gc2V0IFBJRCAlZCdzIENQVSBhZmZpbml0eSBlcnJubyAlZFxuIiwKQEAgLTIwMjIsNyArMjM1Niw3IEBACiAJZmZsdXNoKHN0ZGVycik7CiAgICAgICB9CiAgIH0KLSAgICAgIAorCiAjZWxpZiBIQVZFX0JJTkRfVE9fQ1BVX0lECiAgIC8qIHRoaXMgaXMgdGhlIG9uZSBmb3IgVHJ1NjQgKi8KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTIwMzAsNyArMjM2NCw3IEBACiAjaW5jbHVkZSA8c3lzL3Byb2Nlc3Nvci5oPgogCiAgIC8qIHJlYWxseSBzaG91bGQgYmUgY2hlY2tpbmcgYSByZXR1cm4gY29kZSBvbmUgb2YgdGhlc2UgZGF5cy4gcmFqCi0gICAgIDIwMDUvMDgvMzEgKi8gCisgICAgIDIwMDUvMDgvMzEgKi8KIAogICBiaW5kX3RvX2NwdV9pZChnZXRwaWQoKSwgbWFwcGVkX2FmZmluaXR5LDApOwogCkBAIC0yMDQwLDI2ICsyMzc0LDI2IEBACiAgICAgVUxPTkdfUFRSIEFmZmluaXR5TWFzazsKICAgICBVTE9OR19QVFIgUHJvY2Vzc0FmZmluaXR5TWFzazsKICAgICBVTE9OR19QVFIgU3lzdGVtQWZmaW5pdHlNYXNrOwotICAgIAotICAgIGlmICgobWFwcGVkX2FmZmluaXR5IDwgMCkgfHwgCisKKyAgICBpZiAoKG1hcHBlZF9hZmZpbml0eSA8IDApIHx8CiAJKG1hcHBlZF9hZmZpbml0eSA+IE1BWElNVU1fUFJPQ0VTU09SUykpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgIkludmFsaWQgcHJvY2Vzc29yX2FmZmluaXR5IHNwZWNpZmllZDogJWRcbiIsIG1hcHBlZF9hZmZpbml0eSk7ICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIUdldFByb2Nlc3NBZmZpbml0eU1hc2soCi0JCQkJR2V0Q3VycmVudFByb2Nlc3MoKSwgCi0JCQkJJlByb2Nlc3NBZmZpbml0eU1hc2ssIAorCQkJCUdldEN1cnJlbnRQcm9jZXNzKCksCisJCQkJJlByb2Nlc3NBZmZpbml0eU1hc2ssCiAJCQkJJlN5c3RlbUFmZmluaXR5TWFzaykpCiAgICAgICB7CiAJcGVycm9yKCJHZXRQcm9jZXNzQWZmaW5pdHlNYXNrIGZhaWxlZCIpOwogCWZmbHVzaChzdGRlcnIpOwogCWV4aXQoMSk7CiAgICAgICB9Ci0gICAgCisKICAgICBBZmZpbml0eU1hc2sgPSAoVUxPTkdfUFRSKTEgPDwgbWFwcGVkX2FmZmluaXR5OwotICAgIAorCiAgICAgaWYgKEFmZmluaXR5TWFzayAmIFByb2Nlc3NBZmZpbml0eU1hc2spIHsKICAgICAgIGlmICghU2V0VGhyZWFkQWZmaW5pdHlNYXNrKCBHZXRDdXJyZW50VGhyZWFkKCksIEFmZmluaXR5TWFzaykpIHsKIAlwZXJyb3IoIlNldFRocmVhZEFmZmluaXR5TWFzayBmYWlsZWQiKTsKQEAgLTIwOTgsNiArMjQzMiw4MCBAQAogCiAMCiAKKy8qIHNlbmQgYSByZXF1ZXN0LCBvbmx5IGNvbnZlcnRpbmcgdGhlIGZpcnN0IG4gaW50cy13b3J0aCBvZiB0aGUKKyAgIHRlc3Qtc3BlY2lmaWMgZGF0YSB2aWEgaHRvbmwoKSBiZWZvcmUgc2VuZGluZyBvbiB0aGUKKyAgIGNvbm5lY3Rpb24uIHRoZSBmaXJzdCB0d28gaW50cywgd2hpY2ggYXJlIGJlZm9yZSB0aGUgdGVzdC1zcGVjaWZpYworICAgcG9ydGlvbiBhcmUgYWx3YXlzIGNvbnZlcnRlZC4gcmFqIDIwMDgtMDItMDUgKi8KKwordm9pZAorc2VuZF9yZXF1ZXN0X24oaW50IG4pCit7CisKKyAgaW50ICAgY291bnRlcixjb3VudDsKKworICBpZiAobiA8IDApIGNvdW50ID0gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkvNDsKKyAgZWxzZSBjb3VudCA9IDIgKyBuOworCisgIC8qIHNpbGVudGx5IHRydW5jYXRlIGlmIHRoZSBjYWxsZXIgY2FsbGVkIGZvciBtb3JlIHRoYW4gd2UgaGF2ZSAqLworICBpZiAoY291bnQgPiBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KS80KSB7CisgICAgaWYgKGRlYnVnID4gMSkgeworICAgICAgZnByaW50Zih3aGVyZSwKKwkgICAgICAiV0FSTklORywgaHRvbmwgY29udmVyc2lvbiBjb3VudCBvZiAlZCB3YXMgbGFyZ2VyIHRoYW4gbmV0cGVyZl9yZXF1ZXN0XG4iLAorCSAgICAgIGNvdW50IC0gMik7CisgICAgICBmZmx1c2god2hlcmUpOworICAgIH0KKyAgICBjb3VudCA9IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQ7CisgIH0KKworICAvKiBkaXNwbGF5IHRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdCBpZiB0aGUgZGVidWcgbGV2ZWwgaXMgaGlnaAorICAgICBlbm91Z2guIG90aGVyd2lzZSwganVzdCBzZW5kIHRoZSBkYXJuZWQgdGhpbmcgOy0pICovCisKKyAgaWYgKGRlYnVnID4gMSkgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICJlbnRlcmVkIHNlbmRfcmVxdWVzdF9uLi4uY29udGVudHMgYmVmb3JlICVkIGh0b25sczpcbiIsCisJICAgIGNvdW50KTsKKyAgICBkdW1wX3JlcXVlc3QoKTsKKyAgfQorCisgIC8qIHBhc3MgdGhlIHByb2Nlc3NvciBhZmZpbml0eSByZXF1ZXN0IHZhbHVlIHRvIG5ldHNlcnZlciB0aGlzIGlzIGEKKyAgICAga2x1ZGdlIGFuZCBJIGtub3cgaXQuICBzZ2IgOC8xMS8wNC4gd2Uga2VlcCB0aGlzIGhlcmUgdG8gZGVhbAorICAgICB3aXRoIHRoZXJlIGJlaW5nIHR3byBwYXRocyB0byB0aGlzIHBsYWNlIC0gZGlyZWN0IGFuZCB2aWEKKyAgICAgc2VuZF9yZXF1ZXN0KCkgICovCisKKyAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQuZHVtbXkgPSByZW1vdGVfcHJvY19hZmZpbml0eTsKKworICAvKiBwdXQgdGhlIGVudGlyZSByZXF1ZXN0IGFycmF5IGludG8gbmV0d29yayBvcmRlci4gV2UgZG8gdGhpcworICAgICBhcmJpdHJhcmlseSByYXRoZXIgdGhhbiB0cnlpbmcgdG8gZmlndXJlLW91dCBqdXN0IGhvdyBtdWNoIG9mIHRoZQorICAgICByZXF1ZXN0IGFycmF5IGNvbnRhaW5zIHJlYWwgaW5mb3JtYXRpb24uIHRoaXMgc2hvdWxkIGJlIHNpbXBsZXIsCisgICAgIGFuZCBhdCBhbnkgcmF0ZSwgdGhlIHBlcmZvcm1hbmNlIG9mIHNlbmRpbmcgY29udHJvbCBtZXNzYWdlcyBmb3IKKyAgICAgdGhpcyBiZW5jaG1hcmsgaXMgbm90IG9mIGFueSByZWFsIGNvbmNlcm4uICovCisKKyAgZm9yIChjb3VudGVyID0gMDsgY291bnRlciA8IGNvdW50OyBjb3VudGVyKyspIHsKKyAgICByZXF1ZXN0X2FycmF5W2NvdW50ZXJdID0gaHRvbmwocmVxdWVzdF9hcnJheVtjb3VudGVyXSk7CisgIH0KKworICBpZiAoZGVidWcgPiAxKSB7CisgICAgZnByaW50Zih3aGVyZSwic2VuZF9yZXF1ZXN0X24uLi5jb250ZW50cyBhZnRlciAlZCBodG9ubHM6XG4iLAorCSAgICBjb3VudCk7CisgICAgZHVtcF9yZXF1ZXN0KCk7CisKKyAgICBmcHJpbnRmKHdoZXJlLAorICAgICAgICAgICAgIlxuc2VuZF9yZXF1ZXN0OiBhYm91dCB0byBzZW5kICV1IGJ5dGVzIGZyb20gJXBcbiIsCisgICAgICAgICAgICAodW5zaWduZWQgaW50KSBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KSwKKyAgICAgICAgICAgICZuZXRwZXJmX3JlcXVlc3QpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICBpZiAoc2VuZChuZXRsaWJfY29udHJvbCwKKyAgICAgICAgICAgKGNoYXIgKikmbmV0cGVyZl9yZXF1ZXN0LAorICAgICAgICAgICBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KSwKKyAgICAgICAgICAgMCkgIT0gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkpIHsKKyAgICBwZXJyb3IoInNlbmRfcmVxdWVzdDogc2VuZCBjYWxsIGZhaWx1cmUiKTsKKworICAgIGV4aXQoMSk7CisgIH0KK30KKwogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgLyogICAgIHNlbmRfcmVxdWVzdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtMjExMyw1MSArMjUyMSw4NSBAQAogdm9pZAogc2VuZF9yZXF1ZXN0KCkKIHsKLSAgc2l6ZV90IGNvdW50ZXI9MDsKLSAgCi0gIC8qIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIHRoZSByZXF1ZXN0IGlmIHRoZSBkZWJ1ZyBsZXZlbCBpcyBoaWdoICovCi0gIC8qIGVub3VnaC4gb3RoZXJ3aXNlLCBqdXN0IHNlbmQgdGhlIGRhcm5lZCB0aGluZyA7LSkgKi8KLSAgCi0gIGlmIChkZWJ1ZyA+IDEpIHsKLSAgICBmcHJpbnRmKHdoZXJlLCJlbnRlcmVkIHNlbmRfcmVxdWVzdC4uLmNvbnRlbnRzIGJlZm9yZSBodG9ubDpcbiIpOwotICAgIGR1bXBfcmVxdWVzdCgpOwotICB9CiAKLSAgLyogcGFzcyB0aGUgcHJvY2Vzc29yIGFmZmluaXR5IHJlcXVlc3QgdmFsdWUgdG8gbmV0c2VydmVyICovCi0gIC8qIHRoaXMgaXMgYSBrbHVkZ2UgYW5kIEkga25vdyBpdC4gIHNnYiA4LzExLzA0ICAgICAgICAgICAqLworICAvKiBwYXNzIHRoZSBwcm9jZXNzb3IgYWZmaW5pdHkgcmVxdWVzdCB2YWx1ZSB0byBuZXRzZXJ2ZXIgdGhpcyBpcyBhCisgICAgIGtsdWRnZSBhbmQgSSBrbm93IGl0LiAgc2diIDgvMTEvMDQgICovCiAKICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQuZHVtbXkgPSByZW1vdGVfcHJvY19hZmZpbml0eTsKIAotICAvKiBwdXQgdGhlIGVudGlyZSByZXF1ZXN0IGFycmF5IGludG8gbmV0d29yayBvcmRlci4gV2UgZG8gdGhpcyAqLwotICAvKiBhcmJpdHJhcmlseSByYXRoZXIgdGhhbiB0cnlpbmcgdG8gZmlndXJlLW91dCBqdXN0IGhvdyBtdWNoICovCi0gIC8qIG9mIHRoZSByZXF1ZXN0IGFycmF5IGNvbnRhaW5zIHJlYWwgaW5mb3JtYXRpb24uIHRoaXMgc2hvdWxkICovCi0gIC8qIGJlIHNpbXBsZXIsIGFuZCBhdCBhbnkgcmF0ZSwgdGhlIHBlcmZvcm1hbmNlIG9mIHNlbmRpbmcgKi8KLSAgLyogY29udHJvbCBtZXNzYWdlcyBmb3IgdGhpcyBiZW5jaG1hcmsgaXMgbm90IG9mIGFueSByZWFsICovCi0gIC8qIGNvbmNlcm4uICovIAotICAKLSAgZm9yIChjb3VudGVyPTA7Y291bnRlciA8IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQ7IGNvdW50ZXIrKykgewotICAgIHJlcXVlc3RfYXJyYXlbY291bnRlcl0gPSBodG9ubChyZXF1ZXN0X2FycmF5W2NvdW50ZXJdKTsKLSAgfQotICAKLSAgaWYgKGRlYnVnID4gMSkgewotICAgIGZwcmludGYod2hlcmUsInNlbmRfcmVxdWVzdC4uLmNvbnRlbnRzIGFmdGVyIGh0b25sOlxuIik7Ci0gICAgZHVtcF9yZXF1ZXN0KCk7CisgIC8qIGNhbGwgc2VuZF9yZXF1ZXN0X24gdGVsbGluZyBpdCB0byBjb252ZXJ0IGV2ZXJ5dGhpbmcgKi8KIAorICBzZW5kX3JlcXVlc3RfbigtMSk7CisKK30KKworLyogc2VuZCBhIHJlc3BvbnNlLCBvbmx5IGNvbnZlcnRpbmcgdGhlIGZpcnN0IG4gaW50cy13b3J0aCBvZiB0aGUKKyAgIHRlc3Qtc3BlY2lmaWMgZGF0YSB2aWEgaHRvbmwoKSBiZWZvcmUgc2VuZGluZyBvbiB0aGUKKyAgIGNvbm5lY3Rpb24uIHRoZSBmaXJzdCB0d28gaW50cywgd2hpY2ggYXJlIGJlZm9yZSB0aGUgdGVzdC1zcGVjaWZpYworICAgcG9ydGlvbiBhcmUgYWx3YXlzIGNvbnZlcnRlZC4gcmFqIDIwMDgtMDItMDUgKi8KKwordm9pZAorc2VuZF9yZXNwb25zZV9uKGludCBuKQoreworICBpbnQgICBjb3VudGVyLCBjb3VudDsKKyAgaW50CWJ5dGVzX3NlbnQ7CisKKyAgaWYgKG4gPCAwKSBjb3VudCA9IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQ7CisgIGVsc2UgY291bnQgPSAyICsgbjsKKworICAvKiBzaWxlbnRseSB0cnVuY2F0ZSBpZiB0aGUgY2FsbGVyIGNhbGxlZCBmb3IgbW9yZSB0aGFuIHdlIGhhdmUgKi8KKyAgaWYgKGNvdW50ID4gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkvNCkgeworICAgIGlmIChkZWJ1ZyA+IDEpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIldBUk5JTkcsIGh0b25sIGNvbnZlcnNpb24gY291bnQgb2YgJWQgd2FzIGxhcmdlciB0aGFuIG5ldHBlcmZfcmVxdWVzdFxuIiwKKwkgICAgICBjb3VudCAtIDIpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgICAgY291bnQgPSBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KS80OworICB9CisKKyAgLyogZGlzcGxheSB0aGUgY29udGVudHMgb2YgdGhlIHJlcXVlc3QgaWYgdGhlIGRlYnVnIGxldmVsIGlzIGhpZ2ggKi8KKyAgLyogZW5vdWdoLiBvdGhlcndpc2UsIGp1c3Qgc2VuZCB0aGUgZGFybmVkIHRoaW5nIDstKSAqLworCisgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICAgIlxuc2VuZF9yZXF1ZXN0OiBhYm91dCB0byBzZW5kICV6dSBieXRlcyBmcm9tICVwXG4iLAotICAgICAgICAgICAgc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCksCi0gICAgICAgICAgICAmbmV0cGVyZl9yZXF1ZXN0KTsKKyAgICAgICAgICAgICJzZW5kX3Jlc3BvbnNlX246IGNvbnRlbnRzIG9mICV1IGludHMgYmVmb3JlICVkIGh0b25sLFxuIiwKKyAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpIHNpemVvZihuZXRwZXJmX3Jlc3BvbnNlKS80LAorCSAgICBjb3VudCk7CisgICAgZHVtcF9yZXNwb25zZSgpOworICB9CisKKyAgLyogcHV0IHRoZSBlbnRpcmUgcmVzcG9uc2VfYXJyYXkgaW50byBuZXR3b3JrIG9yZGVyLiBXZSBkbyB0aGlzCisgICAgIGFyYml0cmFyaWx5IHJhdGhlciB0aGFuIHRyeWluZyB0byBmaWd1cmUtb3V0IGp1c3QgaG93IG11Y2ggb2YgdGhlCisgICAgIHJlcXVlc3QgYXJyYXkgY29udGFpbnMgcmVhbCBpbmZvcm1hdGlvbi4gdGhpcyBzaG91bGQgYmUgc2ltcGxlciwKKyAgICAgYW5kIGF0IGFueSByYXRlLCB0aGUgcGVyZm9ybWFuY2Ugb2Ygc2VuZGluZyBjb250cm9sIG1lc3NhZ2VzIGZvcgorICAgICB0aGlzIGJlbmNobWFyayBpcyBub3Qgb2YgYW55IHJlYWwgY29uY2Vybi4gKi8KKworICBmb3IgKGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgY291bnQ7IGNvdW50ZXIrKykgeworICAgIHJlc3BvbnNlX2FycmF5W2NvdW50ZXJdID0gaHRvbmwocmVzcG9uc2VfYXJyYXlbY291bnRlcl0pOworICB9CisKKyAgaWYgKGRlYnVnID4gMSkgeworICAgIGZwcmludGYod2hlcmUsCisgICAgICAgICAgICAic2VuZF9yZXNwb25zZV9uOiBjb250ZW50cyBhZnRlciBodG9ubFxuIik7CisgICAgZHVtcF9yZXNwb25zZSgpOworICAgIGZwcmludGYod2hlcmUsCisgICAgICAgICAgICAiYWJvdXQgdG8gc2VuZCAldSBieXRlcyBmcm9tICVwXG4iLAorICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgc2l6ZW9mKG5ldHBlcmZfcmVzcG9uc2UpLAorICAgICAgICAgICAgJm5ldHBlcmZfcmVzcG9uc2UpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KIAotICBpZiAoc2VuZChuZXRsaWJfY29udHJvbCwKLSAgICAgICAgICAgKGNoYXIgKikmbmV0cGVyZl9yZXF1ZXN0LAotICAgICAgICAgICBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KSwKLSAgICAgICAgICAgMCkgIT0gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkpIHsKLSAgICBwZXJyb3IoInNlbmRfcmVxdWVzdDogc2VuZCBjYWxsIGZhaWx1cmUiKTsKLSAgICAKKyAgLypLQyovCisgIGlmICgoYnl0ZXNfc2VudCA9IHNlbmQoc2VydmVyX3NvY2ssCisJCQkgKGNoYXIgKikmbmV0cGVyZl9yZXNwb25zZSwKKwkJCSBzaXplb2YobmV0cGVyZl9yZXNwb25zZSksCisJCQkgMCkpICE9IHNpemVvZihuZXRwZXJmX3Jlc3BvbnNlKSkgeworICAgIHBlcnJvcigic2VuZF9yZXNwb25zZV9uOiBzZW5kIGNhbGwgZmFpbHVyZSIpOworICAgIGZwcmludGYod2hlcmUsICJCeXRlc1NlbnQ6ICVkXG4iLCBieXRlc19zZW50KTsKICAgICBleGl0KDEpOwogICB9CisKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjE3NSw1MCArMjYxNywxNzUgQEAKIHZvaWQKIHNlbmRfcmVzcG9uc2UoKQogewotICBzaXplX3QgY291bnRlcj0wOwotICBpbnQJYnl0ZXNfc2VudDsKIAotICAvKiBkaXNwbGF5IHRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdCBpZiB0aGUgZGVidWcgbGV2ZWwgaXMgaGlnaCAqLwotICAvKiBlbm91Z2guIG90aGVyd2lzZSwganVzdCBzZW5kIHRoZSBkYXJuZWQgdGhpbmcgOy0pICovCisgIHNlbmRfcmVzcG9uc2VfbigtMSk7CiAKK30KKworLyogZ28gYmFjayBhbmQgInVuZG8iIHRoZSBudG9obCB0aGF0IHJlY3ZfcmVxdWVzdCgpIGRpZCwgc3RhcnRpbmcgd2l0aAorICAgdGhlIHNwZWNpZmllZCBwb2ludCBhbmQgZ29pbmcgdG8gdGhlIGVuZCBvZiB0aGUgcmVxdWVzdCBhcnJheSAqLwordm9pZAorZml4dXBfcmVxdWVzdF9uKGludCBuKQoreworICBpbnQgaTsKKyAgaW50IGxpbWl0OworCisgIGxpbWl0ID0gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkgLyA0OworICAvKiB3ZSBtdXN0IHJlbWVtYmVyIHRoYXQgdGhlIHJlcXVlc3RfYXJyYXkgYWxzbyBjb250YWlucyB0d28gaW50cyBvZgorICAgICAib3RoZXIiIHN0dWZmLCBzbyB3ZSBzdGFydCB0aGUgZml4dXAgdHdvIGluIC0gYXQgbGVhc3QgSSB0aGluayB3ZQorICAgICBzaG91bGQuICByYWogMjAxMi0wNC0wMiAqLworICBmb3IgKGkgPSBuICsgMjsgaSA8IGxpbWl0OyBpKyspIHsKKyAgICByZXF1ZXN0X2FycmF5W2ldID0gaHRvbmwocmVxdWVzdF9hcnJheVtpXSk7CisgIH0KICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgICAic2VuZF9yZXNwb25zZTogY29udGVudHMgb2YgJXp1IGludHMgYmVmb3JlIGh0b25sXG4iLAotICAgICAgICAgICAgc2l6ZW9mKG5ldHBlcmZfcmVzcG9uc2UpLzQpOwotICAgIGR1bXBfcmVzcG9uc2UoKTsKKwkgICAgIiVzOiByZXF1ZXN0IGNvbnRlbnRzIGFmdGVyIGZpeHVwIGF0IHRoZSAlZCB0aCBpbnRcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgbik7CisgICAgZHVtcF9yZXF1ZXN0KCk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorfQorCisvKiByZWNlaXZlIGEgcmVxdWVzdCwgb25seSBjb252ZXJ0aW5nIHRoZSBmaXJzdCBuIGludHMtd29ydGggb2YgdGhlCisgICB0ZXN0LXNwZWNpZmljIGRhdGEgdmlhIGh0b25sKCkgYmVmb3JlIHNlbmRpbmcgb24gdGhlCisgICBjb25uZWN0aW9uLiB0aGUgZmlyc3QgdHdvIGludHMsIHdoaWNoIGFyZSBiZWZvcmUgdGhlIHRlc3Qtc3BlY2lmaWMKKyAgIHBvcnRpb24gYXJlIGFsd2F5cyBjb252ZXJ0ZWQuIHJhaiAyMDA4LTAyLTA1ICovCisKK2ludAorcmVjdl9yZXF1ZXN0X3RpbWVkX24oaW50IG4sIGludCBzZWNvbmRzKQoreworICBpbnQgICAgIHRvdF9ieXRlc19yZWN2ZCwKKyAgICBieXRlc19yZWN2ZCwKKyAgICBieXRlc19sZWZ0OworICBjaGFyICAgICpidWYgPSAoY2hhciAqKSZuZXRwZXJmX3JlcXVlc3Q7CisgIGludCAgICAgYnVmbGVuID0gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCk7CisgIGludCAgICAgY291bnRlcixjb3VudDsKKworICBmZF9zZXQgIHJlYWRmZHM7CisgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisKKyAgaWYgKG4gPCAwKSBjb3VudCA9IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQ7CisgIGVsc2UgY291bnQgPSAyICsgbjsKKworICAvKiBzaWxlbnRseSB0cnVuY2F0ZSBpZiB0aGUgY2FsbGVyIGNhbGxlZCBmb3IgbW9yZSB0aGFuIHdlIGhhdmUgKi8KKyAgaWYgKGNvdW50ID4gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkvNCkgeworICAgIGlmIChkZWJ1ZyA+IDEpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIldBUk5JTkcsIGh0b25sIGNvbnZlcnNpb24gY291bnQgb2YgJWQgd2FzIGxhcmdlciB0aGFuIG5ldHBlcmZfcmVxdWVzdFxuIiwKKwkgICAgICBjb3VudCAtIDIpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgICAgY291bnQgPSBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KS80OwogICB9CiAKLSAgLyogcHV0IHRoZSBlbnRpcmUgcmVzcG9uc2VfYXJyYXkgaW50byBuZXR3b3JrIG9yZGVyLiBXZSBkbyB0aGlzICovCi0gIC8qIGFyYml0cmFyaWx5IHJhdGhlciB0aGFuIHRyeWluZyB0byBmaWd1cmUtb3V0IGp1c3QgaG93IG11Y2ggb2YgdGhlICovCi0gIC8qIHJlcXVlc3QgYXJyYXkgY29udGFpbnMgcmVhbCBpbmZvcm1hdGlvbi4gdGhpcyBzaG91bGQgYmUgc2ltcGxlciwgKi8KLSAgLyogYW5kIGF0IGFueSByYXRlLCB0aGUgcGVyZm9ybWFuY2Ugb2Ygc2VuZGluZyBjb250cm9sIG1lc3NhZ2VzIGZvciAqLwotICAvKiB0aGlzIGJlbmNobWFyayBpcyBub3Qgb2YgYW55IHJlYWwgY29uY2Vybi4gKi8KLSAgCi0gIGZvciAoY291bnRlcj0wO2NvdW50ZXIgPCBzaXplb2YobmV0cGVyZl9yZXNwb25zZSkvNDsgY291bnRlcisrKSB7Ci0gICAgcmVzcG9uc2VfYXJyYXlbY291bnRlcl0gPSBodG9ubChyZXNwb25zZV9hcnJheVtjb3VudGVyXSk7CisgIC8qIGZvciB0aGUgdGltZSBiZWluZywgd2UgcmF0aGVyIHJlbHkgb24gc2VsZWN0IGRlY3JlbWVudGluZyB0aW1lb3V0CisgICAgIGVhY2ggdGltZSB0byBwcmVjbHVkZSBzb21lb25lIHdpdGggbmVmYXJpb3VzIGludGVudCBmcm9tIGp1c3QKKyAgICAgZHJpYmJsaW5nIGRhdGEgdG8gdXMgcGllY2VtZWFsLiAgb2YgY291cnNlLCB3aG8ga25vd3Mgd2hhdAorICAgICBzb21lb25lIHdpdGggbmVmYXJpb3VzIGludGVudCBtaWdodCBjb21lLXVwIHdpdGguIHJhaiAyMDEyLTAxLTIzICovCisgIHRvdF9ieXRlc19yZWN2ZCA9IDA7CisgIGJ5dGVzX3JlY3ZkID0gMDsgICAgIC8qIG50X2xpbnQ7IGJ5dGVzX3JlY3ZkIHVuaW5pdGlhbGl6ZWQgaWYgYnVmbGVuID09IDAgKi8KKyAgYnl0ZXNfbGVmdCAgICAgID0gYnVmbGVuOworICB0aW1lb3V0LnR2X3NlYyA9IHNlY29uZHM7CisgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisgIGRvIHsKKyAgICBGRF9aRVJPKCZyZWFkZmRzKTsKKyAgICBGRF9TRVQoc2VydmVyX3NvY2ssJnJlYWRmZHMpOworICAgIGlmIChzZWxlY3QoRkRfU0VUU0laRSwKKwkgICAgICAgJnJlYWRmZHMsCisJICAgICAgIDAsCisJICAgICAgIDAsCisJICAgICAgIChzZWNvbmRzID4gMCkgPyAmdGltZW91dCA6IE5VTEwpICE9IDEpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIklzc3VlIHJlY2VpdmluZyByZXF1ZXN0IG9uIGNvbnRyb2wgY29ubmVjdGlvbi4gRXJybm8gJWQgKCVzKVxuIiwKKwkgICAgICBlcnJubywKKwkgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAgIGNsb3NlKHNlcnZlcl9zb2NrKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKGJ5dGVzX3JlY3ZkID0gcmVjdihzZXJ2ZXJfc29jaywgYnVmLCBieXRlc19sZWZ0LCAwKSkgPiAwKSB7CisgICAgICB0b3RfYnl0ZXNfcmVjdmQgKz0gYnl0ZXNfcmVjdmQ7CisgICAgICBidWYgICAgICAgICAgICAgKz0gYnl0ZXNfcmVjdmQ7CisgICAgICBieXRlc19sZWZ0ICAgICAgLT0gYnl0ZXNfcmVjdmQ7CisgICAgfQorICB9ICB3aGlsZSAoKHRvdF9ieXRlc19yZWN2ZCAhPSBidWZsZW4pICYmCisJICAgIChieXRlc19yZWN2ZCA+IDAgKSk7CisKKyAgLyogcHV0IHRoZSByZXF1ZXN0IGludG8gaG9zdCBvcmRlciAqLworCisgIGZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCBjb3VudDsgY291bnRlcisrKSB7CisgICAgcmVxdWVzdF9hcnJheVtjb3VudGVyXSA9IG50b2hsKHJlcXVlc3RfYXJyYXlbY291bnRlcl0pOwogICB9Ci0gIAotICBpZiAoZGVidWcgPiAxKSB7CisKKyAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJzZW5kX3Jlc3BvbnNlOiBjb250ZW50cyBhZnRlciBodG9ubFxuIik7Ci0gICAgZHVtcF9yZXNwb25zZSgpOwotICAgIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgICAiYWJvdXQgdG8gc2VuZCAlenUgYnl0ZXMgZnJvbSAlcFxuIiwKLSAgICAgICAgICAgIHNpemVvZihuZXRwZXJmX3Jlc3BvbnNlKSwKLSAgICAgICAgICAgICZuZXRwZXJmX3Jlc3BvbnNlKTsKKwkgICAgInJlY3ZfcmVxdWVzdDogcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgcmVxdWVzdC5cbiIsCisJICAgIHRvdF9ieXRlc19yZWN2ZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQogCi0gIC8qS0MqLwotICBpZiAoKGJ5dGVzX3NlbnQgPSBzZW5kKHNlcnZlcl9zb2NrLAotICAgICAgICAgICAoY2hhciAqKSZuZXRwZXJmX3Jlc3BvbnNlLAotICAgICAgICAgICBzaXplb2YobmV0cGVyZl9yZXNwb25zZSksCi0gICAgICAgICAgIDApKSAhPSBzaXplb2YobmV0cGVyZl9yZXNwb25zZSkpIHsKLSAgICBwZXJyb3IoInNlbmRfcmVzcG9uc2U6IHNlbmQgY2FsbCBmYWlsdXJlIik7Ci0JZnByaW50Zih3aGVyZSwgIkJ5dGVzU2VudDogJWRcbiIsIGJ5dGVzX3NlbnQpOwotICAgIGV4aXQoMSk7CisgIGlmIChieXRlc19yZWN2ZCA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICBQcmludF9lcnJubyh3aGVyZSwKKwkJInJlY3ZfcmVxdWVzdDogZXJyb3Igb24gcmVjdiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgY2xvc2Uoc2VydmVyX3NvY2spOworICAgIHJldHVybiAtMTsKICAgfQotICAKKworICBpZiAoYnl0ZXNfcmVjdmQgPT0gMCkgeworICAgIC8qIHRoZSByZW1vdGUgaGFzIHNodXRkb3duIHRoZSBjb250cm9sIGNvbm5lY3Rpb24sIHdlIHNob3VsZCBzaHV0CisgICAgICAgaXQgZG93biBhcyB3ZWxsIGFuZCByZXR1cm4gKi8KKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgInJlY3ZfcmVxdWVzdDogcmVtb3RlIHJlcXVlc3RlZCBzaHV0ZG93biBvZiBjb250cm9sXG4iKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorCisgICAgY2xvc2Uoc2VydmVyX3NvY2spOworICAgIHJldHVybiAwOworICB9CisKKyAgaWYgKHRvdF9ieXRlc19yZWN2ZCA8IGJ1ZmxlbikgeworICAgIGlmIChkZWJ1ZyA+IDEpCisgICAgICBkdW1wX3JlcXVlc3QoKTsKKworICAgIGZwcmludGYod2hlcmUsCisJICAgICJyZWN2X3JlcXVlc3Q6IHBhcnRpYWwgcmVxdWVzdCByZWNlaXZlZCBvZiAlZCBieXRlc1xuIiwKKwkgICAgdG90X2J5dGVzX3JlY3ZkKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGNsb3NlKHNlcnZlcl9zb2NrKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICBpZiAoZGVidWcgPiAxKSB7CisgICAgZHVtcF9yZXF1ZXN0KCk7CisgIH0KKworICAvKiBnZXQgdGhlIHByb2Nlc3NvciBhZmZpbml0eSByZXF1ZXN0IHZhbHVlIGZyb20gbmV0cGVyZiB0aGlzIGlzIGEKKyAgICAga2x1ZGdlIGFuZCBJIGtub3cgaXQuICBzZ2IgOC8xMS8wNCAgKi8KKworICBsb2NhbF9wcm9jX2FmZmluaXR5ID0gbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQuZHVtbXk7CisKKyAgaWYgKGxvY2FsX3Byb2NfYWZmaW5pdHkgIT0gLTEpIHsKKyAgICBiaW5kX3RvX3NwZWNpZmljX3Byb2Nlc3Nvcihsb2NhbF9wcm9jX2FmZmluaXR5LDApOworICB9CisKKyAgcmV0dXJuIGJ1ZmxlbjsKK30KKworLyogcmVjZWl2ZSBhIHJlcXVlc3QsIG9ubHkgY29udmVydGluZyB0aGUgZmlyc3QgbiBpbnRzLXdvcnRoIG9mIHRoZQorICAgdGVzdC1zcGVjaWZpYyBkYXRhIHZpYSBodG9ubCgpIGJlZm9yZSBzZW5kaW5nIG9uIHRoZQorICAgY29ubmVjdGlvbi4gdGhlIGZpcnN0IHR3byBpbnRzLCB3aGljaCBhcmUgYmVmb3JlIHRoZSB0ZXN0LXNwZWNpZmljCisgICBwb3J0aW9uIGFyZSBhbHdheXMgY29udmVydGVkLiByYWogMjAwOC0wMi0wNSAqLworCitpbnQKK3JlY3ZfcmVxdWVzdF9uKGludCBuKQoreworCisgIHJldHVybiByZWN2X3JlcXVlc3RfdGltZWRfbihuLDApOworCiB9CiAKICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0yMjMzLDExMyArMjgwMCwxNDkgQEAKICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi12b2lkCitpbnQKIHJlY3ZfcmVxdWVzdCgpCiB7Ci1pbnQgICAgIHRvdF9ieXRlc19yZWN2ZCwKLSAgICAgICAgYnl0ZXNfcmVjdmQsIAotICAgICAgICBieXRlc19sZWZ0OwotY2hhciAgICAqYnVmID0gKGNoYXIgKikmbmV0cGVyZl9yZXF1ZXN0OwotaW50ICAgICBidWZsZW4gPSBzaXplb2YobmV0cGVyZl9yZXF1ZXN0KTsKLXNpemVfdCAgY291bnRlcjsKIAotdG90X2J5dGVzX3JlY3ZkID0gMDsgICAgCi0gYnl0ZXNfcmVjdmQgPSAwOyAgICAgLyogbnRfbGludDsgYnl0ZXNfcmVjdmQgdW5pbml0aWFsaXplZCBpZiBidWZsZW4gPT0gMCAqLwotYnl0ZXNfbGVmdCAgICAgID0gYnVmbGVuOwotd2hpbGUgKCh0b3RfYnl0ZXNfcmVjdmQgIT0gYnVmbGVuKSAmJgotICAgICAgICgoYnl0ZXNfcmVjdmQgPSByZWN2KHNlcnZlcl9zb2NrLCBidWYsIGJ5dGVzX2xlZnQsMCkpID4gMCApKSB7Ci0gIHRvdF9ieXRlc19yZWN2ZCArPSBieXRlc19yZWN2ZDsKLSAgYnVmICAgICAgICAgICAgICs9IGJ5dGVzX3JlY3ZkOwotICBieXRlc19sZWZ0ICAgICAgLT0gYnl0ZXNfcmVjdmQ7CisgIHJldHVybiByZWN2X3JlcXVlc3RfbigtMSk7CisKIH0KIAotLyogcHV0IHRoZSByZXF1ZXN0IGludG8gaG9zdCBvcmRlciAqLwordm9pZAorcmVjdl9yZXNwb25zZV90aW1lZF9uKGludCBhZGRsX3RpbWUsIGludCBuKQoreworICBpbnQgICAgIHRvdF9ieXRlc19yZWN2ZCwKKyAgICAgICAgICBieXRlc19yZWN2ZCA9IDAsCisgICAgICAgICAgYnl0ZXNfbGVmdDsKKyAgY2hhciAgICAqYnVmID0gKGNoYXIgKikmbmV0cGVyZl9yZXNwb25zZTsKKyAgaW50ICAgICBidWZsZW4gPSBzaXplb2YobmV0cGVyZl9yZXNwb25zZSk7CisgIGludCAgICAgY291bnRlcixjb3VudDsKIAotZm9yIChjb3VudGVyID0gMDsgY291bnRlciA8IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpL3NpemVvZihpbnQpOyBjb3VudGVyKyspIHsKLSAgcmVxdWVzdF9hcnJheVtjb3VudGVyXSA9IG50b2hsKHJlcXVlc3RfYXJyYXlbY291bnRlcl0pOwotfQorICAvKiBzdHVmZiBmb3Igc2VsZWN0LCB1c2UgZmRfc2V0IGZvciBiZXR0ZXIgY29tcGxpYW5jZSAqLworICBmZF9zZXQgIHJlYWRmZHM7CisgIHN0cnVjdCAgdGltZXZhbCB0aW1lb3V0OwogCi1pZiAoZGVidWcpIHsKLSAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAicmVjdl9yZXF1ZXN0OiByZWNlaXZlZCAlZCBieXRlcyBvZiByZXF1ZXN0LlxuIiwKLSAgICAgICAgICB0b3RfYnl0ZXNfcmVjdmQpOwotICBmZmx1c2god2hlcmUpOwotfQorICB0b3RfYnl0ZXNfcmVjdmQgPSAwOworICBieXRlc19sZWZ0ICAgICAgPSBidWZsZW47CiAKLWlmIChieXRlc19yZWN2ZCA9PSBTT0NLRVRfRVJST1IpIHsKLSAgUHJpbnRfZXJybm8od2hlcmUsCi0gICAgICAgICAgInJlY3ZfcmVxdWVzdDogZXJyb3Igb24gcmVjdiIpOwotICBmZmx1c2god2hlcmUpOwotICBleGl0KDEpOwotfQorICBpZiAobiA8IDApIGNvdW50ID0gc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdCkvNDsKKyAgZWxzZSBjb3VudCA9IDIgKyBuOwogCi1pZiAoYnl0ZXNfcmVjdmQgPT0gMCkgewotICAvKiB0aGUgcmVtb3RlIGhhcyBzaHV0ZG93biB0aGUgY29udHJvbCBjb25uZWN0aW9uLCB3ZSBzaG91bGQgc2h1dCBpdCAqLwotICAvKiBkb3duIGFzIHdlbGwgYW5kIGV4aXQgKi8KKyAgLyogc2lsZW50bHkgdHJ1bmNhdGUgaWYgdGhlIGNhbGxlciBjYWxsZWQgZm9yIG1vcmUgdGhhbiB3ZSBoYXZlICovCisgIGlmIChjb3VudCA+IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQpIHsKKyAgICBpZiAoZGVidWcgPiAxKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJXQVJOSU5HLCBodG9ubCBjb252ZXJzaW9uIGNvdW50IG9mICVkIHdhcyBsYXJnZXIgdGhhbiBuZXRwZXJmX3Jlc3BvbnNlXG4iLAorCSAgICAgIGNvdW50IC0gMik7CisgICAgICBmZmx1c2god2hlcmUpOworICAgIH0KKyAgICBjb3VudCA9IHNpemVvZihuZXRwZXJmX3JlcXVlc3QpLzQ7CisgIH0KKworICAvKiB6ZXJvIG91dCB0aGUgcmVzcG9uc2Ugc3RydWN0dXJlICovCisKKyAgLyogQlVHIEZJWCBTSkIgMi80LzkzIC0gc2hvdWxkIGJlIDwgbm90IDw9ICovCisgIGZvciAoY291bnRlciA9IDA7CisgICAgICAgY291bnRlciA8IHNpemVvZihuZXRwZXJmX3Jlc3BvbnNlKS9zaXplb2YoaW50KTsKKyAgICAgICBjb3VudGVyKyspIHsKKyAgICByZXNwb25zZV9hcnJheVtjb3VudGVyXSA9IDA7CisgIH0KKworICAvKiB3ZSBvbmx5IHNlbGVjdCBvbmNlLiBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIHJlc3BvbnNlIGlzIHNwbGl0CisgICAgICh3aGljaCBzaG91bGQgbm90IGJlIGhhcHBlbmluZywgdGhhdCB3ZSB3aWxsIHJlY2VpdmUgdGhlIHdob2xlCisgICAgIHRoaW5nIGFuZCBub3QgaGF2ZSBhIHByb2JsZW0gOy0pICovCisKKyAgRkRfWkVSTygmcmVhZGZkcyk7CisgIEZEX1NFVChuZXRsaWJfY29udHJvbCwmcmVhZGZkcyk7CisgIHRpbWVvdXQudHZfc2VjICA9IDEyMCArIGFkZGxfdGltZTsgIC8qIHdhaXQgYXQgbGVhc3QgdHdvIG1pbnV0ZXMKKwkJCQkJIGJlZm9yZSBwdW50aW5nIC0gdGhlCisJCQkJCSBVU0VfTE9PUEVSIENQVSBzdHVmZiBtYXkKKwkJCQkJIGNhdXNlIHJlbW90ZSdzIHRvIGhhdmUgYSBiaXQKKwkJCQkJIGxvbmdlciB0aW1lIG9mIGl0IHRoYW4gNjAKKwkJCQkJIHNlY29uZHMgd291bGQgYWxsb3cuCisJCQkJCSB0cmlnZ2VyZWQgYnkgZml4IGZyb20gSmVmZgorCQkJCQkgRHdvcmsuICovCisgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisKKyAgLyogc2VsZWN0IGhhZCBiZXR0ZXIgcmV0dXJuIG9uZSwgb3IgdGhlcmUgd2FzIGVpdGhlciBhIHByb2JsZW0gb3IgYSAqLworICAvKiB0aW1lb3V0Li4uICovCisKKyAgaWYgKChjb3VudGVyID0gc2VsZWN0KEZEX1NFVFNJWkUsCisJCQkmcmVhZGZkcywKKwkJCTAsCisJCQkwLAorCQkJJnRpbWVvdXQpKSAhPSAxKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBubyByZXNwb25zZSByZWNlaXZlZC4gZXJybm8gJWQgY291bnRlciAlZFxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBlcnJubywKKwkgICAgY291bnRlcik7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIHdoaWxlICgodG90X2J5dGVzX3JlY3ZkICE9IGJ1ZmxlbikgJiYKKwkgKChieXRlc19yZWN2ZCA9IHJlY3YobmV0bGliX2NvbnRyb2wsIGJ1ZiwgYnl0ZXNfbGVmdCwwKSkgPiAwICkpIHsKKyAgICB0b3RfYnl0ZXNfcmVjdmQgKz0gYnl0ZXNfcmVjdmQ7CisgICAgYnVmICAgICAgICAgICAgICs9IGJ5dGVzX3JlY3ZkOworICAgIGJ5dGVzX2xlZnQgICAgICAtPSBieXRlc19yZWN2ZDsKKyAgfQogCiAgIGlmIChkZWJ1ZykgewotICAgIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgICAicmVjdl9yZXF1ZXN0OiByZW1vdGUgcmVxdWVzdGVkIHNodXRkb3duIG9mIGNvbnRyb2xcbiIpOworICAgIGZwcmludGYod2hlcmUsInJlY3ZfcmVzcG9uc2U6IHJlY2VpdmVkIGEgJWQgYnl0ZSByZXNwb25zZVxuIiwKKwkgICAgdG90X2J5dGVzX3JlY3ZkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKLSAgaWYgKG5ldGxpYl9jb250cm9sICE9IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgIHNodXRkb3duX2NvbnRyb2woKTsKKyAgLyogcHV0IHRoZSBkZXNpcmVkIHF1YW50aXR5IG9mIHRoZSByZXNwb25zZSBpbnRvIGhvc3Qgb3JkZXIgKi8KKworICBmb3IgKGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgY291bnQ7IGNvdW50ZXIrKykgeworICAgIHJlc3BvbnNlX2FycmF5W2NvdW50ZXJdID0gbnRvaGwocmVzcG9uc2VfYXJyYXlbY291bnRlcl0pOwogICB9Ci0gIGV4aXQoMCk7CisKKyAgaWYgKGJ5dGVzX3JlY3ZkID09IFNPQ0tFVF9FUlJPUikgeworICAgIHBlcnJvcigicmVjdl9yZXNwb25zZSIpOworICAgIGV4aXQoMSk7CisgIH0KKyAgaWYgKHRvdF9ieXRlc19yZWN2ZCA8IGJ1ZmxlbikgeworICAgIGZwcmludGYoc3RkZXJyLAorCSAgICAicmVjdl9yZXNwb25zZTogcGFydGlhbCByZXNwb25zZSByZWNlaXZlZDogJWQgYnl0ZXNcbiIsCisJICAgIHRvdF9ieXRlc19yZWN2ZCk7CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgaWYgKGRlYnVnID4gMSkKKyAgICAgIGR1bXBfcmVzcG9uc2UoKTsKKyAgICBleGl0KDEpOworICB9CisgIGlmIChkZWJ1ZyA+IDEpIHsKKyAgICBkdW1wX3Jlc3BvbnNlKCk7CisgIH0KIH0KIAotaWYgKHRvdF9ieXRlc19yZWN2ZCA8IGJ1ZmxlbikgewotICBpZiAoZGVidWcgPiAxKQotICAgIGR1bXBfcmVxdWVzdCgpOworLyoKIAotICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICJyZWN2X3JlcXVlc3Q6IHBhcnRpYWwgcmVxdWVzdCByZWNlaXZlZCBvZiAlZCBieXRlc1xuIiwKLSAgICAgICAgICB0b3RfYnl0ZXNfcmVjdmQpOwotICBmZmx1c2god2hlcmUpOwotICBleGl0KDEpOwotfQorICByZWN2X3Jlc3BvbnNlX3RpbWVkKCkKIAotIGlmIChkZWJ1ZyA+IDEpIHsKLSAgIGR1bXBfcmVxdWVzdCgpOwotIH0gCisgIHJlY2VpdmUgdGhlIHJlbW90ZSdzIHJlc3BvbnNlIG9uIHRoZSBjb250cm9sIHNvY2tldC4gd2Ugd2lsbCBwdXQgdGhlCisgIGVudGlyZSByZXNwb25zZSBpbnRvIGhvc3Qgb3JkZXIgYmVmb3JlIGdpdmluZyBpdCB0byB0aGUgY2FsbGluZworICByb3V0aW5lLiBob3BlZnVsbHksIHRoaXMgd2lsbCBnbyBtb3N0IG9mIHRoZSB3YXkgdG8gaW5zdXJpbmcKKyAgaW50ZXJ2ZW5kb3IgaW50ZXJvcGVyYWJpbGl0eS4gaWYgdGhlcmUgYXJlIGFueSBwcm9ibGVtcywgd2Ugd2lsbAorICBqdXN0IHB1bnQgdGhlIGVudGlyZSBzaXR1YXRpb24uCiAKLSAgLyogZ2V0IHRoZSBwcm9jZXNzb3IgYWZmaW5pdHkgcmVxdWVzdCB2YWx1ZSBmcm9tIG5ldHBlcmYgKi8KLSAgLyogdGhpcyBpcyBhIGtsdWRnZSBhbmQgSSBrbm93IGl0LiAgc2diIDgvMTEvMDQgICAgICAgICAgKi8KKyAgVGhlIGNhbGwgdG8gc2VsZWN0IGF0IHRoZSBiZWdpbm5pbmcgaXMgdG8gZ2V0IHVzIG91dCBvZiBoYW5nCisgIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHJlbW90ZSBnaXZlcy11cCBidXQgd2UgZG9uJ3QgZmluZC1vdXQgYWJvdXQKKyAgaXQuIFRoaXMgc2VlbXMgdG8gaGFwcGVuIG9ubHkgcmFyZWx5LCBidXQgaXQgd291bGQgYmUgbmljZSB0byBiZQorICBzb21ld2hhdCByb2J1c3QgOy0pCiAKLSAgbG9jYWxfcHJvY19hZmZpbml0eSA9IG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LmR1bW15OwotCi0gIGlmIChsb2NhbF9wcm9jX2FmZmluaXR5ICE9IC0xKSB7Ci0gICAgYmluZF90b19zcGVjaWZpY19wcm9jZXNzb3IobG9jYWxfcHJvY19hZmZpbml0eSwwKTsKLSAgfSAKLQotfQotCi0gLyoKLQotICAgICAgcmVjdl9yZXNwb25zZV90aW1lZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSByZWNlaXZlIHRoZSByZW1vdGUncyByZXNwb25zZSBvbiB0aGUgY29udHJvbCBzb2NrZXQuIHdlIHdpbGwgcHV0IHRoZQotIGVudGlyZSByZXNwb25zZSBpbnRvIGhvc3Qgb3JkZXIgYmVmb3JlIGdpdmluZyBpdCB0byB0aGUgY2FsbGluZwotIHJvdXRpbmUuIGhvcGVmdWxseSwgdGhpcyB3aWxsIGdvIG1vc3Qgb2YgdGhlIHdheSB0byBpbnN1cmluZwotIGludGVydmVuZG9yIGludGVyb3BlcmFiaWxpdHkuIGlmIHRoZXJlIGFyZSBhbnkgcHJvYmxlbXMsIHdlIHdpbGwganVzdAotIHB1bnQgdGhlIGVudGlyZSBzaXR1YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotIFRoZSBjYWxsIHRvIHNlbGVjdCBhdCB0aGUgYmVnaW5uaW5nIGlzIHRvIGdldCB1cyBvdXQgb2YgaGFuZwotIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHJlbW90ZSBnaXZlcy11cCBidXQgd2UgZG9uJ3QgZmluZC1vdXQgYWJvdXQKLSBpdC4gVGhpcyBzZWVtcyB0byBoYXBwZW4gb25seSByYXJlbHksIGJ1dCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlCi0gc29tZXdoYXQgcm9idXN0IDstKQotCi0gVGhlICJfdGltZWQiIHBhcnQgaXMgdG8gYWxsb3cgdGhlIGNhbGxlciB0byBhZGQgKG9yIEkgc3VwcG9zZQotIHN1YnRyYWN0KSBmcm9tIHRoZSBsZW5ndGggb2YgdGltZW91dCBvbiB0aGUgc2VsZWN0IGNhbGwuIHRoaXMgd2FzCi0gYWRkZWQgc2luY2Ugbm90IGFsbCB0aGUgQ1BVIHV0aWxpemF0aW9uIG1lY2hhbmlzbXMgcmVxdWlyZSBhIDQwCi0gc2Vjb25kIGNhbGlicmF0aW9uLCBhbmQgd2UgdXNlZCB0byBoYXZlIGFuIGFyaWJ0cmFyeSA0MCBzZWNvbmQgc2xlZXAKLSBpbiAiY2FsaWJyYXRlX3JlbW90ZV9jcHUiIC0gc2luY2Ugd2UgZG9uJ3QgX2Fsd2F5c18gbmVlZCB0aGF0LCB3ZQotIHdhbnQgdG8gc2ltcGx5IGFkZCA0MCBzZWNvbmRzIHRvIHRoZSBzZWxlY3QoKSB0aW1lb3V0IGZyb20gdGhhdCBjYWxsLAotIGJ1dCBkb24ndCB3YW50IHRvIGNoYW5nZSBhbGwgdGhlICJyZWN2X3Jlc3BvbnNlIiBjYWxscyBpbiB0aGUgY29kZQotIHJpZ2h0IGF3YXkuICBzb29vLCB3ZSBwdXNoIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBvbGQKLSByZWN2X3Jlc3BvbnNlKCkgaW50byBhIG5ldyByZWN2X3Jlc3BvbnNlX3RpbWVkKGFkZGxfdGltb3V0KSBjYWxsLCBhbmQKLSBoYXZlIHJlY3ZfcmVzcG9uc2UoKSBjYWxsIHJlY3ZfcmVzcG9uc2VfdGltZWQoMCkuICByYWogMjAwNS0wNS0xNgorICBUaGUgIl90aW1lZCIgcGFydCBpcyB0byBhbGxvdyB0aGUgY2FsbGVyIHRvIGFkZCAob3IgSSBzdXBwb3NlCisgIHN1YnRyYWN0KSBmcm9tIHRoZSBsZW5ndGggb2YgdGltZW91dCBvbiB0aGUgc2VsZWN0IGNhbGwuIHRoaXMgd2FzCisgIGFkZGVkIHNpbmNlIG5vdCBhbGwgdGhlIENQVSB1dGlsaXphdGlvbiBtZWNoYW5pc21zIHJlcXVpcmUgYSA0MAorICBzZWNvbmQgY2FsaWJyYXRpb24sIGFuZCB3ZSB1c2VkIHRvIGhhdmUgYW4gYXJpYnRyYXJ5IDQwIHNlY29uZCBzbGVlcAorICBpbiAiY2FsaWJyYXRlX3JlbW90ZV9jcHUiIC0gc2luY2Ugd2UgZG9uJ3QgX2Fsd2F5c18gbmVlZCB0aGF0LCB3ZQorICB3YW50IHRvIHNpbXBseSBhZGQgNDAgc2Vjb25kcyB0byB0aGUgc2VsZWN0KCkgdGltZW91dCBmcm9tIHRoYXQKKyAgY2FsbCwgYnV0IGRvbid0IHdhbnQgdG8gY2hhbmdlIGFsbCB0aGUgInJlY3ZfcmVzcG9uc2UiIGNhbGxzIGluIHRoZQorICBjb2RlIHJpZ2h0IGF3YXkuICBzb29vLCB3ZSBwdXNoIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBvbGQKKyAgcmVjdl9yZXNwb25zZSgpIGludG8gYSBuZXcgcmVjdl9yZXNwb25zZV90aW1lZChhZGRsX3RpbW91dCkgY2FsbCwKKyAgYW5kIGhhdmUgcmVjdl9yZXNwb25zZSgpIGNhbGwgcmVjdl9yZXNwb25zZV90aW1lZCgwKS4gIHJhagorICAyMDA1LTA1LTE2CiAKICAqLwogCkBAIC0yMzQ3LDEwMCArMjk1MCwyNiBAQAogdm9pZAogcmVjdl9yZXNwb25zZV90aW1lZChpbnQgYWRkbF90aW1lKQogewotaW50ICAgICB0b3RfYnl0ZXNfcmVjdmQsCi0gICAgICAgIGJ5dGVzX3JlY3ZkID0gMCwgCi0gICAgICAgIGJ5dGVzX2xlZnQ7Ci1jaGFyICAgICpidWYgPSAoY2hhciAqKSZuZXRwZXJmX3Jlc3BvbnNlOwotaW50ICAgICBidWZsZW4gPSBzaXplb2YobmV0cGVyZl9yZXNwb25zZSk7Ci1zaXplX3QgIGNvdW50ZXI7CiAKLSAvKiBzdHVmZiBmb3Igc2VsZWN0LCB1c2UgZmRfc2V0IGZvciBiZXR0ZXIgY29tcGxpYW5jZSAqLwotZmRfc2V0ICByZWFkZmRzOwotc3RydWN0ICB0aW1ldmFsIHRpbWVvdXQ7CisgIC8qIC0xID0+IGNvbnZlcnQgYWxsIHRoZSB0ZXN0LXNwZWNpZmljIGRhdGEgdmlhIG50b2hsICovCisgIHJlY3ZfcmVzcG9uc2VfdGltZWRfbihhZGRsX3RpbWUsLTEpOwogCi10b3RfYnl0ZXNfcmVjdmQgPSAwOyAgICAKLWJ5dGVzX2xlZnQgICAgICA9IGJ1ZmxlbjsKLQotLyogemVybyBvdXQgdGhlIHJlc3BvbnNlIHN0cnVjdHVyZSAqLwotCi0vKiBCVUcgRklYIFNKQiAyLzQvOTMgLSBzaG91bGQgYmUgPCBub3QgPD0gKi8KLWZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCBzaXplb2YobmV0cGVyZl9yZXNwb25zZSkvc2l6ZW9mKGludCk7IGNvdW50ZXIrKykgewotICAgICAgICByZXNwb25zZV9hcnJheVtjb3VudGVyXSA9IDA7Ci19Ci0KLSAvKiB3ZSBvbmx5IHNlbGVjdCBvbmNlLiBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIHJlc3BvbnNlIGlzIHNwbGl0ICovCi0gLyogKHdoaWNoIHNob3VsZCBub3QgYmUgaGFwcGVuaW5nLCB0aGF0IHdlIHdpbGwgcmVjZWl2ZSB0aGUgd2hvbGUgKi8KLSAvKiB0aGluZyBhbmQgbm90IGhhdmUgYSBwcm9ibGVtIDstKSAqLwotCi1GRF9aRVJPKCZyZWFkZmRzKTsKLUZEX1NFVChuZXRsaWJfY29udHJvbCwmcmVhZGZkcyk7Ci10aW1lb3V0LnR2X3NlYyAgPSAxMjAgKyBhZGRsX3RpbWU7ICAvKiB3YWl0IGF0IGxlYXN0IHR3byBtaW51dGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBwdW50aW5nIC0gdGhlIFVTRV9MT09QRVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVIHN0dWZmIG1heSBjYXVzZSByZW1vdGUncyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGEgYml0IGxvbmdlciB0aW1lIG9mIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gNjAgc2Vjb25kcyB3b3VsZCBhbGxvdy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkIGJ5IGZpeCBmcm9tIEplZmYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHdvcmsuICovCi10aW1lb3V0LnR2X3VzZWMgPSAwOwotCi0gLyogc2VsZWN0IGhhZCBiZXR0ZXIgcmV0dXJuIG9uZSwgb3IgdGhlcmUgd2FzIGVpdGhlciBhIHByb2JsZW0gb3IgYSAqLwotIC8qIHRpbWVvdXQuLi4gKi8KLQotaWYgKChjb3VudGVyID0gc2VsZWN0KEZEX1NFVFNJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgJnJlYWRmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0KSkgIT0gMSkgewotICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICJuZXRwZXJmOiByZWNlaXZlX3Jlc3BvbnNlOiBubyByZXNwb25zZSByZWNlaXZlZC4gZXJybm8gJWQgY291bnRlciAlenVcbiIsCi0gICAgICAgICAgZXJybm8sCi0gICAgICAgICAgY291bnRlcik7Ci0gIGV4aXQoMSk7Ci19Ci0KLXdoaWxlICgodG90X2J5dGVzX3JlY3ZkICE9IGJ1ZmxlbikgJiYKLSAgICAgICAoKGJ5dGVzX3JlY3ZkID0gcmVjdihuZXRsaWJfY29udHJvbCwgYnVmLCBieXRlc19sZWZ0LDApKSA+IDAgKSkgewotICB0b3RfYnl0ZXNfcmVjdmQgKz0gYnl0ZXNfcmVjdmQ7Ci0gIGJ1ZiAgICAgICAgICAgICArPSBieXRlc19yZWN2ZDsKLSAgYnl0ZXNfbGVmdCAgICAgIC09IGJ5dGVzX3JlY3ZkOwotfQotCi1pZiAoZGVidWcpIHsKLSAgZnByaW50Zih3aGVyZSwicmVjdl9yZXNwb25zZTogcmVjZWl2ZWQgYSAlZCBieXRlIHJlc3BvbnNlXG4iLAotICAgICAgICAgIHRvdF9ieXRlc19yZWN2ZCk7Ci0gIGZmbHVzaCh3aGVyZSk7Ci19Ci0KLS8qIHB1dCB0aGUgcmVzcG9uc2UgaW50byBob3N0IG9yZGVyICovCi0KLWZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCBzaXplb2YobmV0cGVyZl9yZXNwb25zZSkvc2l6ZW9mKGludCk7IGNvdW50ZXIrKykgewotICByZXNwb25zZV9hcnJheVtjb3VudGVyXSA9IG50b2hsKHJlc3BvbnNlX2FycmF5W2NvdW50ZXJdKTsKLX0KLQotaWYgKGJ5dGVzX3JlY3ZkID09IFNPQ0tFVF9FUlJPUikgewotICAgICAgICBwZXJyb3IoInJlY3ZfcmVzcG9uc2UiKTsKLSAgICAgICAgZXhpdCgxKTsKLX0KLWlmICh0b3RfYnl0ZXNfcmVjdmQgPCBidWZsZW4pIHsKLSAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgInJlY3ZfcmVzcG9uc2U6IHBhcnRpYWwgcmVzcG9uc2UgcmVjZWl2ZWQ6ICVkIGJ5dGVzXG4iLAotICAgICAgICAgIHRvdF9ieXRlc19yZWN2ZCk7Ci0gIGZmbHVzaChzdGRlcnIpOwotICBpZiAoZGVidWcgPiAxKQotICAgIGR1bXBfcmVzcG9uc2UoKTsKLSAgZXhpdCgxKTsKLX0KLWlmIChkZWJ1ZyA+IDEpIHsKLSAgZHVtcF9yZXNwb25zZSgpOwotfQogfQogCiB2b2lkCi1yZWN2X3Jlc3BvbnNlKCkgCityZWN2X3Jlc3BvbnNlKCkKIHsKLSAgcmVjdl9yZXNwb25zZV90aW1lZCgwKTsKKyAgLyogMCA9PiBubyBhZGRpdGlvbmFsIHRpbWUsIC0xID0+IGNvbnZlcnQgYWxsIHRlc3Qtc3BlY2lmaWMgZGF0YSAqLworICByZWN2X3Jlc3BvbnNlX3RpbWVkX24oMCwtMSk7CiB9CiAKK3ZvaWQKK3JlY3ZfcmVzcG9uc2VfbihpbnQgbikKK3sKKyAgcmVjdl9yZXNwb25zZV90aW1lZF9uKDAsbik7Cit9CisKKwogDAogCiAjaWYgZGVmaW5lZChVU0VfUFNUQVQpIHx8IGRlZmluZWQgKFVTRV9TWVNDVEwpCkBAIC0yNDU0LDggKzI5ODMsOCBAQAogICB9ICpvdmVybGF5OwogCiAgIG92ZXJsYXkgPSAodW5pb24gb3ZlcmxheV91ICopYmlnX2ludDsKLSAgLyogb24gdGhvc2Ugc3lzdGVtcyB3aGljaCBhcmUgYnl0ZSBzd2FwcGVkLCB3ZSByZWFsbHkgd2lzaCB0byAqLwotICAvKiByZXR1cm4gd29yZHNbMV0gLSBhdCBsZWFzdCBJIHRoaW5rIHNvIC0gcmFqIDQvOTUgKi8KKyAgLyogb24gdGhvc2Ugc3lzdGVtcyB3aGljaCBhcmUgYnl0ZSBzd2FwcGVkLCB3ZSByZWFsbHkgd2lzaCB0byByZXR1cm4KKyAgICAgd29yZHNbMV0gLSBhdCBsZWFzdCBJIHRoaW5rIHNvIC0gcmFqIDQvOTUgKi8KICAgaWYgKGh0b25sKDFMKSA9PSAxTCkgewogICAgIC8qIHdlIGFyZSBhICJub3JtYWwiIDopIG1hY2hpbmUgKi8KICAgICByZXR1cm4ob3ZlcmxheS0+d29yZHNbMF0pOwpAQCAtMjQ3NSw4ICszMDA0LDggQEAKICAgfSAqb3ZlcmxheTsKIAogICBvdmVybGF5ID0gKHVuaW9uIG92ZXJsYXlfdSAqKWJpZ19pbnQ7Ci0gIC8qIG9uIHRob3NlIHN5c3RlbXMgd2hpY2ggYXJlIGJ5dGUgc3dhcHBlZCwgd2UgcmVhbGx5IHdpc2ggdG8gKi8KLSAgLyogcmV0dXJuIHdvcmRzWzBdIC0gYXQgbGVhc3QgSSB0aGluayBzbyAtIHJhaiA0Lzk1ICovCisgIC8qIG9uIHRob3NlIHN5c3RlbXMgd2hpY2ggYXJlIGJ5dGUgc3dhcHBlZCwgd2UgcmVhbGx5IHdpc2ggdG8gcmV0dXJuCisgICAgIHdvcmRzWzBdIC0gYXQgbGVhc3QgSSB0aGluayBzbyAtIHJhaiA0Lzk1ICovCiAgIGlmIChodG9ubCgxTCkgPT0gMUwpIHsKICAgICAvKiB3ZSBhcmUgYSAibm9ybWFsIiA6KSBtYWNoaW5lICovCiAgICAgcmV0dXJuKG92ZXJsYXktPndvcmRzWzFdKTsKQEAgLTI0OTcsMjQgKzMwMjYsNTMgQEAKIAogDAogdm9pZAotc2V0X3NvY2tfYnVmZmVyIChTT0NLRVQgc2QsIGVudW0gc29ja19idWZmZXIgd2hpY2gsIGludCByZXF1ZXN0ZWRfc2l6ZSwgaW50ICplZmZlY3RpdmVfc2l6ZXApCitnZXRfc29ja19idWZmZXIgKFNPQ0tFVCBzZCwgZW51bSBzb2NrX2J1ZmZlciB3aGljaCwgaW50ICplZmZlY3RpdmVfc2l6ZXApCiB7CiAjaWZkZWYgU09fU05EQlVGCiAgIGludCBvcHRuYW1lID0gKHdoaWNoID09IFNFTkRfQlVGRkVSKSA/IFNPX1NOREJVRiA6IFNPX1JDVkJVRjsKICAgbmV0cGVyZl9zb2NrbGVuX3Qgc29ja19vcHRfbGVuOwogCisgIHNvY2tfb3B0X2xlbiA9IHNpemVvZigqZWZmZWN0aXZlX3NpemVwKTsKKyAgaWYgKGdldHNvY2tvcHQoc2QsIFNPTF9TT0NLRVQsIG9wdG5hbWUsIChjaGFyICopZWZmZWN0aXZlX3NpemVwLAorCQkgJnNvY2tfb3B0X2xlbikgPCAwKSB7CisgICAgZnByaW50Zih3aGVyZSwgIm5ldHBlcmY6IGdldF9zb2NrX2J1ZmZlcjogZ2V0c29ja29wdCAlczogZXJybm8gJWRcbiIsCisJICAgICh3aGljaCA9PSBTRU5EX0JVRkZFUikgPyAiU09fU05EQlVGIiA6ICJTT19SQ1ZCVUYiLCBlcnJubyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAqZWZmZWN0aXZlX3NpemVwID0gLTE7CisgIH0KKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCAibmV0cGVyZjogZ2V0X3NvY2tfYnVmZmVyOiAiCisJICAgICIlcyBzb2NrZXQgc2l6ZSBkZXRlcm1pbmVkIHRvIGJlICVkXG4iLAorCSAgICAod2hpY2ggPT0gU0VORF9CVUZGRVIpID8gInNlbmQiIDogInJlY2VpdmUiLCAqZWZmZWN0aXZlX3NpemVwKTsKKyAgICBmZmx1c2god2hlcmUpOworICB9CisKKyNlbHNlCisgICplZmZlY3RpdmVfc2l6ZXAgPSAtMTsKKyNlbmRpZgorfQorCit2b2lkCitzZXRfc29ja19idWZmZXIgKFNPQ0tFVCBzZCwgZW51bSBzb2NrX2J1ZmZlciB3aGljaCwgaW50IHJlcXVlc3RlZF9zaXplLCBpbnQgKmVmZmVjdGl2ZV9zaXplcCkKK3sKKyNpZmRlZiBTT19TTkRCVUYKKworICBpbnQgb3B0bmFtZSA9ICh3aGljaCA9PSBTRU5EX0JVRkZFUikgPyBTT19TTkRCVUYgOiBTT19SQ1ZCVUY7CisKICAgLyogc2VlbXMgdGhhdCB1bmRlciBXaW5kb3dzLCBzZXR0aW5nIGEgdmFsdWUgb2YgemVybyBpcyBob3cgb25lCiAgICAgIHRlbGxzIHRoZSBzdGFjayB5b3Ugd2lzaCB0byBlbmFibGUgY29weS1hdm9pZGFuY2UuIEtudXRoIG9ubHkKICAgICAga25vd3Mgd2hhdCBpdCB3aWxsIGRvIG9uIG90aGVyIHN0YWNrcywgYnV0IGl0IG1pZ2h0IGJlCiAgICAgIGludGVyZXN0aW5nIHRvIGZpbmQtb3V0LCBzbyB3ZSB3b24ndCBib3RoZXIgI2lmZGVmJ2luZyB0aGUgY2hhbmdlCi0gICAgIHRvIGFsbG93IGFza2luZyBmb3IgMCBieXRlcy4gQ291cnRlc3kgb2YgU0FGLCAyMDA3LTA1ICByYWoKKyAgICAgdG8gYWxsb3cgYXNraW5nIGZvciAwIGJ5dGVzLiBDb3VydGVzeSBvZiBTQUYsIDIwMDctMDUgcmFqCiAgICAgIDIwMDctMDUtMzEgKi8KICAgaWYgKHJlcXVlc3RlZF9zaXplID49IDApIHsKICAgICBpZiAoc2V0c29ja29wdChzZCwgU09MX1NPQ0tFVCwgb3B0bmFtZSwKIAkJICAgKGNoYXIgKikmcmVxdWVzdGVkX3NpemUsIHNpemVvZihpbnQpKSA8IDApIHsKLSAgICAgIGZwcmludGYod2hlcmUsICJuZXRwZXJmOiBzZXRfc29ja19idWZmZXI6ICVzIG9wdGlvbjogZXJybm8gJWRcbiIsCisgICAgICBmcHJpbnRmKHdoZXJlLCAibmV0cGVyZjogc2V0X3NvY2tfYnVmZmVyOiAlcyBvcHRpb246IGVycm5vICVkICglcylcbiIsCiAJICAgICAgKHdoaWNoID09IFNFTkRfQlVGRkVSKSA/ICJTT19TTkRCVUYiIDogIlNPX1JDVkJVRiIsCi0JICAgICAgZXJybm8pOworCSAgICAgIGVycm5vLAorCSAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgZXhpdCgxKTsKICAgICB9CkBAIC0yNTI2LDU3ICszMDg0LDQzIEBACiAgICAgfQogICB9CiAKLSAgLyogTm93LCB3ZSB3aWxsIGZpbmQtb3V0IHdoYXQgdGhlIHNpemUgYWN0dWFsbHkgYmVjYW1lLCBhbmQgcmVwb3J0ICovCi0gIC8qIHRoYXQgYmFjayB0byB0aGUgdXNlci4gSWYgdGhlIGNhbGwgZmFpbHMsIHdlIHdpbGwganVzdCByZXBvcnQgYSAtMSAqLwotICAvKiBiYWNrIHRvIHRoZSBpbml0aWF0b3IgZm9yIHRoZSByZWN2IGJ1ZmZlciBzaXplLiAqLworICAvKiB0aGUgZ2V0c29ja29wdCgpIGNhbGwgdGhhdCB1c2VkIHRvIGJlIGhlcmUgaGFzIGJlZW4gaG9pc3RlZCBpbnRvCisgICAgIGl0cyBvd24gcm91dGluZSB0byBiZSB1c2VkIG9uIHRob3NlIHBsYXRmb3JtcyB3aGVyZSB0aGUgc29ja2V0CisgICAgIGJ1ZmZlciBzaXplcyBtaWdodCBjaGFuZ2UgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIHRoZSBlbmQgb2YgdGhlCisgICAgIHJ1bi4gcmFqIDIwMDgtMDEtMTUgKi8KIAotICBzb2NrX29wdF9sZW4gPSBzaXplb2YobmV0cGVyZl9zb2NrbGVuX3QpOwotICBpZiAoZ2V0c29ja29wdChzZCwgU09MX1NPQ0tFVCwgb3B0bmFtZSwgKGNoYXIgKillZmZlY3RpdmVfc2l6ZXAsCi0JCSAmc29ja19vcHRfbGVuKSA8IDApIHsKLSAgICBmcHJpbnRmKHdoZXJlLCAibmV0cGVyZjogc2V0X3NvY2tfYnVmZmVyOiBnZXRzb2Nrb3B0ICVzOiBlcnJubyAlZFxuIiwKLQkgICAgKHdoaWNoID09IFNFTkRfQlVGRkVSKSA/ICJTT19TTkRCVUYiIDogIlNPX1JDVkJVRiIsIGVycm5vKTsKLSAgICBmZmx1c2god2hlcmUpOwotICAgICplZmZlY3RpdmVfc2l6ZXAgPSAtMTsKLSAgfQorICBnZXRfc29ja19idWZmZXIoc2QsIHdoaWNoLCBlZmZlY3RpdmVfc2l6ZXApOwogCi0gIGlmIChkZWJ1ZykgewotICAgIGZwcmludGYod2hlcmUsICJuZXRwZXJmOiBzZXRfc29ja19idWZmZXI6ICIKLQkgICAgIiVzIHNvY2tldCBzaXplIGRldGVybWluZWQgdG8gYmUgJWRcbiIsCi0JICAgICh3aGljaCA9PSBTRU5EX0JVRkZFUikgPyAic2VuZCIgOiAicmVjZWl2ZSIsICplZmZlY3RpdmVfc2l6ZXApOwotICAgIGZmbHVzaCh3aGVyZSk7Ci0gIH0KICNlbHNlIC8qIFNPX1NOREJVRiAqLwotICAqZWZmZWN0aXZlX3NpemUgPSAtMTsKKyAgKmVmZmVjdGl2ZV9zaXplcCA9IC0xOwogI2VuZGlmIC8qIFNPX1NOREJVRiAqLwogfQogCiB2b2lkCiBkdW1wX2FkZHJpbmZvKEZJTEUgKmR1bXBsb2MsIHN0cnVjdCBhZGRyaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgY2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IGZhbWlseSkKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IGZhbWlseSkKIHsKICAgc3RydWN0IHNvY2thZGRyICphaV9hZGRyOwogICBzdHJ1Y3QgYWRkcmluZm8gKnRlbXA7CiAgIHRlbXA9aW5mbzsKIAotICBmcHJpbnRmKGR1bXBsb2MsICJnZXRhZGRyaW5mbyByZXR1cm5lZCB0aGUgZm9sbG93aW5nIGZvciBob3N0ICclcycgIiwgaG9zdCk7Ci0gIGZwcmludGYoZHVtcGxvYywgInBvcnQgJyVzJyAiLCBwb3J0KTsKLSAgZnByaW50ZihkdW1wbG9jLCAiZmFtaWx5ICVzXG4iLCBpbmV0X2Z0b3MoZmFtaWx5KSk7CisgIGZwcmludGYoZHVtcGxvYywKKwkgICJnZXRhZGRyaW5mbyByZXR1cm5lZCB0aGUgZm9sbG93aW5nIGZvciBob3N0ICclcycgcG9ydCAnJXMnICIKKwkgICIgZmFtaWx5ICVzXG4iLAorCSAgaG9zdCwKKwkgIHBvcnQsCisJICBpbmV0X2Z0b3MoZmFtaWx5KSk7CisKICAgd2hpbGUgKHRlbXApIHsKICAgICAvKiBzZWVtcyB0aGF0IFNvbGFyaXMgMTAgR0EgYml0cyB3aWxsIG5vdCBnaXZlIGEgY2Fub25pY2FsIG5hbWUKICAgICAgICBmb3IgOjowIG9yIDAuMC4wLjAsIGFuZCB0aGVpciBmcHJpbnRmKCkgY2Fubm90IGRlYWwgd2l0aCBhIG51bGwKICAgICAgICBwb2ludGVyLCBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciBhIG51bGwgcG9pbnRlci4gIHByb2JhYmx5IGEKICAgICAgICBzYWZlIHRoaW5nIHRvIGRvIGFueXdheSwgZXZlbnRob3VnaCBpdCB3YXMgbm90IG5lY2Vzc2FyeSBvbgogICAgICAgIGxpbnV4IG9yIGhwLXV4LiByYWogMjAwNS0wMi0wOSAqLwotICAgIGlmICh0ZW1wLT5haV9jYW5vbm5hbWUpIHsKLSAgICAgIGZwcmludGYoZHVtcGxvYywKLQkgICAgICAiXHRjYW5ub25pY2FsIG5hbWU6ICclcydcbiIsdGVtcC0+YWlfY2Fub25uYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBmcHJpbnRmKGR1bXBsb2MsCi0JICAgICAgIlx0Y2Fubm9uaWNhbCBuYW1lOiAnJXMnXG4iLCIobmlsKSIpOwotICAgIH0KICAgICBmcHJpbnRmKGR1bXBsb2MsCisJICAgICJcdGNhbm5vbmljYWwgbmFtZTogJyVzJ1xuIgogICAgICAgICAgICAgIlx0ZmxhZ3M6ICV4IGZhbWlseTogJXM6IHNvY2t0eXBlOiAlcyBwcm90b2NvbCAlcyBhZGRybGVuICVkXG4iLAorCSAgICAodGVtcC0+YWlfY2Fub25uYW1lKSA/IHRlbXAtPmFpX2Nhbm9ubmFtZSA6ICIobmlsKSIsCiAgICAgICAgICAgICB0ZW1wLT5haV9mbGFncywKICAgICAgICAgICAgIGluZXRfZnRvcyh0ZW1wLT5haV9mYW1pbHkpLAogICAgICAgICAgICAgaW5ldF90dG9zKHRlbXAtPmFpX3NvY2t0eXBlKSwKQEAgLTI1ODQsODggKzMxMjgsNTIgQEAKICAgICAgICAgICAgIHRlbXAtPmFpX2FkZHJsZW4pOwogICAgIGFpX2FkZHIgPSB0ZW1wLT5haV9hZGRyOwogICAgIGlmIChhaV9hZGRyICE9IE5VTEwpIHsKKyAgICAgIGludCBpOwogICAgICAgZnByaW50ZihkdW1wbG9jLAotICAgICAgICAgICAgICAiXHRzYV9mYW1pbHk6ICVzIHNhZGF0YTogJWQgJWQgJWQgJWQgJWQgJWRcbiIsCi0gICAgICAgICAgICAgIGluZXRfZnRvcyhhaV9hZGRyLT5zYV9mYW1pbHkpLAotICAgICAgICAgICAgICAodV9jaGFyKWFpX2FkZHItPnNhX2RhdGFbMF0sCi0gICAgICAgICAgICAgICh1X2NoYXIpYWlfYWRkci0+c2FfZGF0YVsxXSwKLSAgICAgICAgICAgICAgKHVfY2hhcilhaV9hZGRyLT5zYV9kYXRhWzJdLAotICAgICAgICAgICAgICAodV9jaGFyKWFpX2FkZHItPnNhX2RhdGFbM10sCi0gICAgICAgICAgICAgICh1X2NoYXIpYWlfYWRkci0+c2FfZGF0YVs0XSwKLSAgICAgICAgICAgICAgKHVfY2hhcilhaV9hZGRyLT5zYV9kYXRhWzVdKTsKKyAgICAgICAgICAgICAgIlx0c2FfZmFtaWx5OiAlcyBzYWRhdGE6IiwKKyAgICAgICAgICAgICAgaW5ldF9mdG9zKGFpX2FkZHItPnNhX2ZhbWlseSkpOworICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIHRlbXAtPmFpX2FkZHJsZW47IGkrKykgeworCWZwcmludGYoZHVtcGxvYywKKwkJKHRlbXAtPmFpX2ZhbWlseSA9PSBBRl9JTkVUKSA/ICIgJWQiIDogIiAlLjJ4IiwKKwkJKHVfY2hhcilhaV9hZGRyLT5zYV9kYXRhW2ldKTsKKyAgICAgIH0KKyAgICAgIGZwcmludGYoZHVtcGxvYywiXG4iKTsKICAgICB9CiAgICAgdGVtcCA9IHRlbXAtPmFpX25leHQ7CiAgIH0KICAgZmZsdXNoKGR1bXBsb2MpOwogfQogCi0vKgotICBlc3RhYmxpc2hfY29udHJvbCgpCi0KLXNldC11cCB0aGUgY29udHJvbCBjb25uZWN0aW9uIGJldHdlZW4gbmV0cGVyZiBhbmQgdGhlIG5ldHNlcnZlciBzbyB3ZQotY2FuIGFjdHVhbGx5IHJ1biBzb21lIHRlc3RzLiBpZiB3ZSBjYW5ub3QgZXN0YWJsaXNoIHRoZSBjb250cm9sCi1jb25uZWN0aW9uLCB0aGF0IG1heSBvciBtYXkgbm90IGJlIGEgZ29vZCB0aGluZywgc28gd2Ugd2lsbCBsZXQgdGhlCi1jYWxsZXIgZGVjaWRlIHdoYXQgdG8gZG8uCi0KLXRvIGFzc2lzdCB3aXRoIHBlc2t5IGVuZC10by1lbmQtdW5mcmllbmRseSB0aGluZ3MgbGlrZSBmaXJld2FsbHMsIHdlCi1hbGxvdyB0aGUgY2FsbGVyIHRvIHNwZWNpZnkgYm90aCB0aGUgcmVtb3RlIGhvc3RuYW1lIGFuZCBwb3J0LCBhbmQgdGhlCi1sb2NhbCBhZGRyZXNzaW5nIGluZm8uICBpIGJlbGlldmUgdGhhdCBpbiB0aGVvcnkgaXQgaXMgcG9zc2libGUgdG8KLWhhdmUgYW4gSVB2NCBlbmRwb2ludCBhbmQgYW4gSVB2NiBlbmRwb2ludCBjb21tdW5pY2F0ZSB3aXRoIG9uZQotYW5vdGhlciwgYnV0IGZvciB0aGUgdGltZSBiZWluZywgd2UgYXJlIG9ubHkgZ29pbmcgdG8gdGFrZS1pbiBvbmUKLXJlcXVlc3RlZCBhZGRyZXNzIGZhbWlseSBwYXJhbWV0ZXIuIHRoaXMgbWVhbnMgdGhhdCB0aGUgb25seSB3YXkKLShpaXJjKSB0aGF0IHdlIG1pZ2h0IGdldCBhIG1peGVkLW1vZGUgY29ubmVjdGlvbiB3b3VsZCBiZSBpZiB0aGUKLWFkZHJlc3MgZmFtaWx5IGlzIHNwZWNpZmllZCBhcyBBRl9VTlNQRUMsIGFuZCBnZXRhZGRyaW5mbygpIHJldHVybnMKLWRpZmZlcmVudCBmYW1pbGllcyBmb3IgdGhlIGxvY2FsIGFuZCBzZXJ2ZXIgbmFtZXMuCi0KLXRoZSAibmFtZXMiIGNhbiBhbHNvIGJlIElQIGFkZHJlc3NlcyBpbiBBU0NJSSBzdHJpbmcgZm9ybS4KLQotcmFqIDIwMDMtMDItMjcgKi8KLQotU09DS0VUCi1lc3RhYmxpc2hfY29udHJvbF9pbnRlcm5hbChjaGFyICpob3N0bmFtZSwKLQkJCSAgIGNoYXIgKnBvcnQsCi0JCQkgICBpbnQgICByZW1mYW0sCi0JCQkgICBjaGFyICpsb2NhbGhvc3QsCi0JCQkgICBjaGFyICpsb2NhbHBvcnQsCi0JCQkgICBpbnQgICBsb2NmYW0pCitzdHJ1Y3QgYWRkcmluZm8gKgorcmVzb2x2ZV9ob3N0KGNoYXIgKmhvc3RuYW1lLAorCSAgICAgY2hhciAqcG9ydCwKKwkgICAgIGludCAgIGZhbWlseSkKIHsKLSAgaW50IG5vdF9jb25uZWN0ZWQ7Ci0gIFNPQ0tFVCBjb250cm9sX3NvY2s7CisgIHN0cnVjdCBhZGRyaW5mbyAgIGhpbnRzOworICBzdHJ1Y3QgYWRkcmluZm8gICphaTsKICAgaW50IGNvdW50OwogICBpbnQgZXJyb3I7CiAKLSAgc3RydWN0IGFkZHJpbmZvICAgaGludHM7Ci0gIHN0cnVjdCBhZGRyaW5mbyAgKmxvY2FsX3JlczsKLSAgc3RydWN0IGFkZHJpbmZvICAqcmVtb3RlX3JlczsKLSAgc3RydWN0IGFkZHJpbmZvICAqbG9jYWxfcmVzX3RlbXA7Ci0gIHN0cnVjdCBhZGRyaW5mbyAgKnJlbW90ZV9yZXNfdGVtcDsKLQogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICAgImVzdGFibGlzaF9jb250cm9sIGNhbGxlZCB3aXRoIGhvc3QgJyVzJyBwb3J0ICclcycgcmVtZmFtICVzXG4iLAorICAgICAgICAgICAgInJlc29sdmVfaG9zdCBjYWxsZWQgd2l0aCBob3N0ICclcycgcG9ydCAnJXMnIGZhbWlseSAlc1xuIiwKICAgICAgICAgICAgIGhvc3RuYW1lLAogICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgIGluZXRfZnRvcyhyZW1mYW0pKTsKLSAgICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICAgIlx0XHRsb2NhbCAnJXMnIHBvcnQgJyVzJyBsb2NmYW0gJXNcbiIsCi0gICAgICAgICAgICBsb2NhbGhvc3QsCi0gICAgICAgICAgICBsb2NhbHBvcnQsCi0gICAgICAgICAgICBpbmV0X2Z0b3MobG9jZmFtKSk7CisgICAgICAgICAgICBpbmV0X2Z0b3MoZmFtaWx5KSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQogCi0gIC8qIGZpcnN0LCB3ZSBkbyB0aGUgcmVtb3RlICovCiAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwotICBoaW50cy5haV9mYW1pbHkgPSByZW1mYW07CisgIGhpbnRzLmFpX2ZhbWlseSA9IGZhbWlseTsKICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKICAgaGludHMuYWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKLSAgaGludHMuYWlfZmxhZ3MgPSAwfEFJX0NBTk9OTkFNRTsKKyAgaGludHMuYWlfZmxhZ3MgPSBBSV9DQU5PTk5BTUUgfCBBSV9BRERSQ09ORklHOwogICBjb3VudCA9IDA7CiAgIGRvIHsKICAgICBlcnJvciA9IGdldGFkZHJpbmZvKChjaGFyICopaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAmaGludHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3RlX3Jlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAmYWkpOwogICAgIGNvdW50ICs9IDE7CiAgICAgaWYgKGVycm9yID09IEVBSV9BR0FJTikgewogICAgICAgaWYgKGRlYnVnKSB7CkBAIC0yNjc3LDU5ICszMTg1LDgxIEBACiAgIH0gd2hpbGUgKChlcnJvciA9PSBFQUlfQUdBSU4pICYmIChjb3VudCA8PSA1KSk7CiAKICAgaWYgKGVycm9yKSB7Ci0gICAgcHJpbnRmKCJlc3RhYmxpc2ggY29udHJvbDogY291bGQgbm90IHJlc29sdmUgcmVtb3RlICclcycgcG9ydCAnJXMnIGFmICVzIiwKKyAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgcmVzb2x2ZSBob3N0ICclcycgcG9ydCAnJXMnIGFmICVzIgorCSAgICJcblx0Z2V0YWRkcmluZm8gcmV0dXJuZWQgJWQgJXNcbiIsCisJICAgX19GVU5DVElPTl9fLAogICAgICAgICAgICBob3N0bmFtZSwKICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgaW5ldF9mdG9zKHJlbWZhbSkpOwotICAgIHByaW50ZigiXG5cdGdldGFkZHJpbmZvIHJldHVybmVkICVkICVzXG4iLAorICAgICAgICAgICBpbmV0X2Z0b3MoZmFtaWx5KSwKICAgICAgICAgICAgZXJyb3IsCiAgICAgICAgICAgIGdhaV9zdHJlcnJvcihlcnJvcikpOwotICAgIHJldHVybihJTlZBTElEX1NPQ0tFVCk7CisgICAgcmV0dXJuKE5VTEwpOwogICB9CiAKICAgaWYgKGRlYnVnKSB7Ci0gICAgZHVtcF9hZGRyaW5mbyh3aGVyZSwgcmVtb3RlX3JlcywgaG9zdG5hbWUsIHBvcnQsIHJlbWZhbSk7CisgICAgZHVtcF9hZGRyaW5mbyh3aGVyZSwgYWksIGhvc3RuYW1lLCBwb3J0LCBmYW1pbHkpOwogICB9CiAKLSAgLyogbm93IHdlIGRvIHRoZSBsb2NhbCAqLwotICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKLSAgaGludHMuYWlfZmFtaWx5ID0gbG9jZmFtOwotICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOwotICBoaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOwotICBoaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkV8QUlfQ0FOT05OQU1FOwotICBjb3VudCA9IDA7Ci0gIGRvIHsKLSAgICBjb3VudCArPSAxOwotICAgIGVycm9yID0gZ2V0YWRkcmluZm8oKGNoYXIgKilsb2NhbGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWxvY2FscG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZoaW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9yZXMpOwotICAgIGlmIChlcnJvciA9PSBFQUlfQUdBSU4pIHsKLSAgICAgIGlmIChkZWJ1ZykgewotICAgICAgICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICAgICAgICJTbGVlcGluZyBvbiBnZXRhZGRyaW5mbyglcywlcykgRUFJX0FHQUlOIGNvdW50ICVkIFxuIiwKLSAgICAgICAgICAgICAgICBsb2NhbGhvc3QsCi0gICAgICAgICAgICAgICAgbG9jYWxwb3J0LAotICAgICAgICAgICAgICAgIGNvdW50KTsKLSAgICAgICAgZmZsdXNoKHdoZXJlKTsKLSAgICAgIH0KLSAgICAgIHNsZWVwKDEpOwotICAgIH0KLSAgfSB3aGlsZSAoKGVycm9yID09IEVBSV9BR0FJTikgJiYgKGNvdW50IDw9IDUpKTsKKyAgcmV0dXJuIChhaSk7Cit9CiAKLSAgaWYgKGVycm9yKSB7Ci0gICAgcHJpbnRmKCJlc3RhYmxpc2ggY29udHJvbDogY291bGQgbm90IHJlc29sdmUgbG9jYWwgJyVzJyBwb3J0ICclcycgYWYgJXMiLAotICAgICAgICAgICBsb2NhbGhvc3QsCi0gICAgICAgICAgIGxvY2FscG9ydCwKLSAgICAgICAgICAgaW5ldF9mdG9zKGxvY2ZhbSkpOwotICAgIHByaW50ZigiXG5cdGdldGFkZHJpbmZvIHJldHVybmVkICVkICVzXG4iLAotICAgICAgICAgICBlcnJvciwKLSAgICAgICAgICAgZ2FpX3N0cmVycm9yKGVycm9yKSk7CisvKgorICBlc3RhYmxpc2hfY29udHJvbCgpCisKKyAgc2V0LXVwIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gYmV0d2VlbiBuZXRwZXJmIGFuZCB0aGUgbmV0c2VydmVyIHNvCisgIHdlIGNhbiBhY3R1YWxseSBydW4gc29tZSB0ZXN0cy4gaWYgd2UgY2Fubm90IGVzdGFibGlzaCB0aGUgY29udHJvbAorICBjb25uZWN0aW9uLCB0aGF0IG1heSBvciBtYXkgbm90IGJlIGEgZ29vZCB0aGluZywgc28gd2Ugd2lsbCBsZXQgdGhlCisgIGNhbGxlciBkZWNpZGUgd2hhdCB0byBkby4KKworICB0byBhc3Npc3Qgd2l0aCBwZXNreSBlbmQtdG8tZW5kLXVuZnJpZW5kbHkgdGhpbmdzIGxpa2UgZmlyZXdhbGxzLCB3ZQorICBhbGxvdyB0aGUgY2FsbGVyIHRvIHNwZWNpZnkgYm90aCB0aGUgcmVtb3RlIGhvc3RuYW1lIGFuZCBwb3J0LCBhbmQKKyAgdGhlIGxvY2FsIGFkZHJlc3NpbmcgaW5mby4gIGkgYmVsaWV2ZSB0aGF0IGluIHRoZW9yeSBpdCBpcyBwb3NzaWJsZQorCisgIGFub3RoZXIsIGJ1dCBmb3IgdGhlIHRpbWUgYmVpbmcsIHdlIGFyZSBvbmx5IGdvaW5nIHRvIHRha2UtaW4gb25lCisgIHJlcXVlc3RlZCBhZGRyZXNzIGZhbWlseSBwYXJhbWV0ZXIuIHRoaXMgbWVhbnMgdGhhdCB0aGUgb25seSB3YXkKKyAgKGlpcmMpIHRoYXQgd2UgbWlnaHQgZ2V0IGEgbWl4ZWQtbW9kZSBjb25uZWN0aW9uIHdvdWxkIGJlIGlmIHRoZQorICBhZGRyZXNzIGZhbWlseSBpcyBzcGVjaWZpZWQgYXMgQUZfVU5TUEVDLCBhbmQgZ2V0YWRkcmluZm8oKSByZXR1cm5zCisgIGRpZmZlcmVudCBmYW1pbGllcyBmb3IgdGhlIGxvY2FsIGFuZCBzZXJ2ZXIgbmFtZXMuCisKKyAgdGhlICJuYW1lcyIgY2FuIGFsc28gYmUgSVAgYWRkcmVzc2VzIGluIEFTQ0lJIHN0cmluZyBmb3JtLgorCisgIHJhaiAyMDAzLTAyLTI3ICovCisKK1NPQ0tFVAorZXN0YWJsaXNoX2NvbnRyb2xfaW50ZXJuYWwoY2hhciAqaG9zdG5hbWUsCisJCQkgICBjaGFyICpwb3J0LAorCQkJICAgaW50ICAgcmVtZmFtLAorCQkJICAgY2hhciAqbG9jYWxob3N0LAorCQkJICAgY2hhciAqbG9jYWxwb3J0LAorCQkJICAgaW50ICAgbG9jZmFtKQoreworICBpbnQgbm90X2Nvbm5lY3RlZDsKKyAgU09DS0VUIGNvbnRyb2xfc29jazsKKworICBzdHJ1Y3QgYWRkcmluZm8gICpsb2NhbF9yZXM7CisgIHN0cnVjdCBhZGRyaW5mbyAgKnJlbW90ZV9yZXM7CisgIHN0cnVjdCBhZGRyaW5mbyAgKmxvY2FsX3Jlc190ZW1wOworICBzdHJ1Y3QgYWRkcmluZm8gICpyZW1vdGVfcmVzX3RlbXA7CisKKyAgcmVtb3RlX3JlcyA9IHJlc29sdmVfaG9zdChob3N0bmFtZSwgcG9ydCwgcmVtZmFtKTsKKyAgaWYgKCFyZW1vdGVfcmVzKQogICAgIHJldHVybihJTlZBTElEX1NPQ0tFVCk7Ci0gIH0KKworICBsb2NhbF9yZXMgPSByZXNvbHZlX2hvc3QobG9jYWxob3N0LCBsb2NhbHBvcnQsIGxvY2ZhbSk7CisgIGlmICghbG9jYWxfcmVzKQorICAgIHJldHVybihJTlZBTElEX1NPQ0tFVCk7CiAKICAgaWYgKGRlYnVnKSB7Ci0gICAgZHVtcF9hZGRyaW5mbyh3aGVyZSwgbG9jYWxfcmVzLCBsb2NhbGhvc3QsIGxvY2FscG9ydCwgbG9jZmFtKTsKKyAgICBmcHJpbnRmKHdoZXJlLAorICAgICAgICAgICAgImVzdGFibGlzaF9jb250cm9sIGNhbGxlZCB3aXRoIGhvc3QgJyVzJyBwb3J0ICclcycgcmVtZmFtICVzXG4iCisgICAgICAgICAgICAiXHRcdGxvY2FsICclcycgcG9ydCAnJXMnIGxvY2ZhbSAlc1xuIiwKKyAgICAgICAgICAgIGhvc3RuYW1lLAorICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAgIGluZXRfZnRvcyhyZW1mYW0pLAorICAgICAgICAgICAgbG9jYWxob3N0LAorICAgICAgICAgICAgbG9jYWxwb3J0LAorICAgICAgICAgICAgaW5ldF9mdG9zKGxvY2ZhbSkpOworICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KIAogICBub3RfY29ubmVjdGVkID0gMTsKQEAgLTI3MzgsMTQgKzMyNjgsMTUgQEAKICAgLyogd2Ugd2FudCB0byBsb29wIHRocm91Z2ggYWxsIHRoZSBwb3NzaWJpbGl0aWVzLiBsb29waW5nIG9uIHRoZQogICAgICBsb2NhbCBhZGRyZXNzZXMgd2lsbCBiZSBoYW5kbGVkIHdpdGhpbiB0aGUgd2hpbGUgbG9vcC4gIEkgc3VwcG9zZQogICAgICB0aGVzZSBpcyBzb21lIG1vcmUgIkMtZXhwZXJ0IiB3YXkgdG8gY29kZSB0aGlzLCBidXQgaXQgaGFzIG5vdAotICAgICBsZXB0IHRvIG1pbmQganVzdCB5ZXQgOikgIHJhaiAyMDAzLTAyMDI0ICovCisgICAgIGxlcHQgdG8gbWluZCBqdXN0IHlldCA6KSByYWogMjAwMy0wMjAyNCAqLwogCiAgIHdoaWxlIChyZW1vdGVfcmVzX3RlbXAgIT0gTlVMTCkgewogCiAgICAgLyogSSBhbSBndWVzc2luZyB0aGF0IHdlIHNob3VsZCB1c2UgdGhlIGFkZHJlc3MgZmFtaWx5IG9mIHRoZQogICAgICAgIGxvY2FsIGVuZHBvaW50LCBhbmQgd2Ugd2lsbCBub3Qgd29ycnkgYWJvdXQgbWl4ZWQgZmFtaWx5IHR5cGVzCiAgICAgICAgLSBwcmVzdW1lYWJseSB0aGUgc3RhY2sgb3Igb3RoZXIgdHJhbnNpdGlvbiBtZWNoYW5pc21zIHdpbGwgYmUKLSAgICAgICBhYmxlIHRvIGRlYWwgd2l0aCB0aGF0IGZvciB1cy4gZmFtb3VzIGxhc3Qgd29yZHMgOikgIHJhaiAyMDAzLTAyLTI2ICovCisgICAgICAgYWJsZSB0byBkZWFsIHdpdGggdGhhdCBmb3IgdXMuIGZhbW91cyBsYXN0IHdvcmRzIDopIHJhagorICAgICAgIDIwMDMtMDItMjYgKi8KICAgICBjb250cm9sX3NvY2sgPSBzb2NrZXQobG9jYWxfcmVzX3RlbXAtPmFpX2ZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgU09DS19TVFJFQU0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwpAQCAtMjc1Myw3ICszMjg0LDggQEAKICAgICAgIC8qIGF0IHNvbWUgcG9pbnQgd2UnbGwgbmVlZCBhIG1vcmUgZ2VuZXJpYyAiZGlzcGxheSBlcnJvciIKICAgICAgICAgIG1lc3NhZ2UgZm9yIHdoZW4vaWYgd2UgdXNlIEdVSXMgYW5kIHRoZSBsaWtlLiB1bmxpa2UgYSBiaW5kCiAgICAgICAgICBvciBjb25uZWN0IGZhaWx1cmUsIGZhaWx1cmUgdG8gYWxsb2NhdGUgYSBzb2NrZXQgaXMKLSAgICAgICAgICJpbW1lZGlhdGVseSBmYXRhbCIgYW5kIHNvIHdlIHJldHVybiB0byB0aGUgY2FsbGVyLiByYWogMjAwMy0wMi0yNCAqLworICAgICAgICAgImltbWVkaWF0ZWx5IGZhdGFsIiBhbmQgc28gd2UgcmV0dXJuIHRvIHRoZSBjYWxsZXIuIHJhagorICAgICAgICAgMjAwMy0wMi0yNCAqLwogICAgICAgaWYgKGRlYnVnKSB7CiAgICAgICAgIHBlcnJvcigiZXN0YWJsaXNoX2NvbnRyb2w6IHVuYWJsZSB0byBhbGxvY2F0ZSBjb250cm9sIHNvY2tldCIpOwogICAgICAgfQpAQCAtMjc5MCwxMCArMzMyMiwxMCBAQAogCS8qIHRoZSBjb25uZWN0IGNhbGwgZmFpbGVkICovCiAJaWYgKGRlYnVnKSB7CiAJICBmcHJpbnRmKHdoZXJlLAotCQkgICJlc3RhYmxpc2hfY29udHJvbDogY29ubmVjdCBmYWlsZWQsIGVycm5vICVkICVzXG4iLAorCQkgICJlc3RhYmxpc2hfY29udHJvbDogY29ubmVjdCBmYWlsZWQsIGVycm5vICVkICVzXG4iCisJCSAgIiAgICB0cnlpbmcgbmV4dCBhZGRyZXNzIGNvbWJpbmF0aW9uXG4iLAogCQkgIGVycm5vLAogCQkgIHN0cmVycm9yKGVycm5vKSk7Ci0JICBmcHJpbnRmKHdoZXJlLCAiICAgIHRyeWluZyBuZXh0IGFkZHJlc3MgY29tYmluYXRpb25cbiIpOwogCSAgZmZsdXNoKHdoZXJlKTsKIAl9CiAgICAgICB9CkBAIC0yODAyLDEwICszMzM0LDEwIEBACiAgICAgICAvKiB0aGUgYmluZCBmYWlsZWQgKi8KICAgICAgIGlmIChkZWJ1ZykgewogCWZwcmludGYod2hlcmUsCi0JCSJlc3RhYmxpc2hfY29udHJvbDogYmluZCBmYWlsZWQsIGVycm5vICVkICVzXG4iLAorCQkiZXN0YWJsaXNoX2NvbnRyb2w6IGJpbmQgZmFpbGVkLCBlcnJubyAlZCAlc1xuIgorCQkiICAgIHRyeWluZyBuZXh0IGFkZHJlc3MgY29tYmluYXRpb25cbiIsCiAJCWVycm5vLAogCQlzdHJlcnJvcihlcnJubykpOwotCWZwcmludGYod2hlcmUsICIgICAgdHJ5aW5nIG5leHQgYWRkcmVzcyBjb21iaW5hdGlvblxuIik7CiAJZmZsdXNoKHdoZXJlKTsKICAgICAgIH0KICAgICB9CkBAIC0yODI1LDE0ICszMzU3LDIxIEBACiAgICAgY2xvc2UoY29udHJvbF9zb2NrKTsKICAgfQogCisgIGNvbnRyb2xfZmFtaWx5ID0gbG9jYWxfcmVzX3RlbXAtPmFpX2ZhbWlseTsKKwogICAvKiB3ZSBubyBsb25nZXIgbmVlZCB0aGUgYWRkcmluZm8gc3R1ZmYgKi8KICAgZnJlZWFkZHJpbmZvKGxvY2FsX3Jlcyk7CiAgIGZyZWVhZGRyaW5mbyhyZW1vdGVfcmVzKTsKIAogICAvKiBzbywgd2UgYXJlIGVpdGhlciBjb25uZWN0ZWQgb3Igbm90ICovCiAgIGlmIChub3RfY29ubmVjdGVkKSB7Ci0gICAgZnByaW50Zih3aGVyZSwgImVzdGFibGlzaCBjb250cm9sOiBhcmUgeW91IHN1cmUgdGhlcmUgaXMgYSBuZXRzZXJ2ZXIgbGlzdGVuaW5nIG9uICVzIGF0IHBvcnQgJXM/XG4iLGhvc3RuYW1lLHBvcnQpOworICAgIGZwcmludGYod2hlcmUsCisJICAgICJlc3RhYmxpc2ggY29udHJvbDogYXJlIHlvdSBzdXJlIHRoZXJlIGlzIGEgbmV0c2VydmVyICIKKwkgICAgImxpc3RlbmluZyBvbiAlcyBhdCBwb3J0ICVzP1xuIiwKKwkgICAgaG9zdG5hbWUsCisJICAgIHBvcnQpOwogICAgIGZmbHVzaCh3aGVyZSk7CisgICAgY29udHJvbF9mYW1pbHkgPSBBRl9VTlNQRUM7CiAgICAgcmV0dXJuKElOVkFMSURfU09DS0VUKTsKICAgfQogICAvKiBhdCB0aGlzIHBvaW50LCB3ZSBhcmUgY29ubmVjdGVkLiAgd2UgcHJvYmFibHkgd2FudCBzb21lIHNvcnQgb2YKQEAgLTI4NTgsNyArMzM5Nyw5IEBACiAJCQkJCSAgICAgIGxvY2ZhbSk7CiAgIGlmIChuZXRsaWJfY29udHJvbCA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIGZwcmludGYod2hlcmUsCi0JICAgICJlc3RhYmxpc2hfY29udHJvbCBjb3VsZCBub3QgZXN0YWJsaXNoIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gZnJvbSAlcyBwb3J0ICVzIGFkZHJlc3MgZmFtaWx5ICVzIHRvICVzIHBvcnQgJXMgYWRkcmVzcyBmYW1pbHkgJXNcbiIsCisJICAgICJlc3RhYmxpc2hfY29udHJvbCBjb3VsZCBub3QgZXN0YWJsaXNoIHRoZSBjb250cm9sIgorCSAgICAiIGNvbm5lY3Rpb24gZnJvbSAlcyBwb3J0ICVzIGFkZHJlc3MgZmFtaWx5ICVzIHRvICVzIgorCSAgICAiIHBvcnQgJXMgYWRkcmVzcyBmYW1pbHkgJXNcbiIsCiAJICAgIGxvY2FsaG9zdCxsb2NhbHBvcnQsaW5ldF9mdG9zKGxvY2ZhbSksCiAJICAgIGhvc3RuYW1lLHBvcnQsaW5ldF9mdG9zKHJlbWZhbSkpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC0yOTExLDcgKzM0NTIsNyBAQAogCSAgR2V0VmVyc2lvbigpICYgMHhGRiAsCiAJICBHZXRWZXJzaW9uKCkgJiAweEZGMDAgLAogCSAgU3lzdGVtSW5mby5kd1Byb2Nlc3NvclR5cGUKLQkgIAorCiAjZWxzZQogCSAgIiUtMTVzJS0xNXMlLTE1cyUtMTVzJS0xNXMiLAogCSAgc3lzdGVtX25hbWUuc3lzbmFtZSwKQEAgLTI5NzIsMjggKzM1MTMsMjggQEAKIGlkZW50aWZ5X3JlbW90ZSgpCiB7CiAKLWNoYXIgICAgKnJlbW90ZV9pZD0iIjsKKyAgY2hhciAgICAqcmVtb3RlX2lkPSIiOwogCi0vKiBzZW5kIGEgcmVxdWVzdCBmb3Igbm9kZSBpbmZvIHRvIHRoZSByZW1vdGUgKi8KLW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZSA9IE5PREVfSURFTlRJRlk7CisgIC8qIHNlbmQgYSByZXF1ZXN0IGZvciBub2RlIGluZm8gdG8gdGhlIHJlbW90ZSAqLworICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgPSBOT0RFX0lERU5USUZZOwogCi1zZW5kX3JlcXVlc3QoKTsKKyAgc2VuZF9yZXF1ZXN0KCk7CiAKLS8qIGFuZCBub3cgd2FpdCBmb3IgdGhlIHJlcGx5IHRvIGNvbWUgYmFjayAqLworICAvKiBhbmQgbm93IHdhaXQgZm9yIHRoZSByZXBseSB0byBjb21lIGJhY2sgKi8KIAotcmVjdl9yZXNwb25zZSgpOworICByZWN2X3Jlc3BvbnNlKCk7CiAKLWlmIChuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewotICAgICAgICBTZXRfZXJybm8obmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwotICAgICAgICBwZXJyb3IoImlkZW50aWZ5X3JlbW90ZTogb24gcmVtb3RlIik7Ci0gICAgICAgIGV4aXQoMSk7Ci19CisgIGlmIChuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgeworICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CisgICAgcGVycm9yKCJpZGVudGlmeV9yZW1vdGU6IG9uIHJlbW90ZSIpOworICAgIGV4aXQoMSk7CisgIH0KIAotZnByaW50Zih3aGVyZSwiUmVtb3RlIEluZm9ybWF0aW9uIFxuXAorICBmcHJpbnRmKHdoZXJlLCJSZW1vdGUgSW5mb3JtYXRpb24gXG5cCiBTeXNuYW1lICAgICAgIE5vZGVuYW1lICAgICAgIFJlbGVhc2UgICAgICAgIFZlcnNpb24gICAgICAgIE1hY2hpbmVcbiIpOwogCi1mcHJpbnRmKHdoZXJlLCIlcyIsCi0gICAgICAgcmVtb3RlX2lkKTsKKyAgZnByaW50Zih3aGVyZSwiJXMiLAorCSAgcmVtb3RlX2lkKTsKIH0KIAogdm9pZApAQCAtMzAwMiw3ICszNTQzLDcgQEAKIAogICBnZXR0aW1lb2ZkYXkoJnRpbWUxLAogICAgICAgICAgICAgICAgJnR6KTsKLSAgCisKICAgaWYgKG1lYXN1cmVfY3B1KSB7CiAgICAgY3B1X3V0aWxfaW5pdCgpOwogICAgIG1lYXN1cmluZ19jcHUgPSAxOwpAQCAtMzAyNCwyMSArMzU2NSwyMyBAQAogICAgIGNwdV9zdG9wX2ludGVybmFsKCk7CiAgICAgY3B1X3V0aWxfdGVybWluYXRlKCk7CiAgIH0KLSAgCisKICAgZ2V0dGltZW9mZGF5KCZ0aW1lMiwKIAkgICAgICAgJnR6KTsKLSAgCisKICAgaWYgKHRpbWUyLnR2X3VzZWMgPCB0aW1lMS50dl91c2VjKSB7CiAgICAgdGltZTIudHZfdXNlYyArPSAxMDAwMDAwOwogICAgIHRpbWUyLnR2X3NlYyAgLT0gMTsKICAgfQotICAKKwogICBzZWMgICAgID0gdGltZTIudHZfc2VjIC0gdGltZTEudHZfc2VjOwogICB1c2VjICAgID0gdGltZTIudHZfdXNlYyAtIHRpbWUxLnR2X3VzZWM7CiAgIGxpYl9lbGFwc2VkICAgICA9IChmbG9hdClzZWMgKyAoKGZsb2F0KXVzZWMvKGZsb2F0KTEwMDAwMDAuMCk7Ci0gIAorI2lmZGVmIFdJTjMyCisgIGlmICh0aW1lZF9vdXQpIGxpYl9lbGFwc2VkLT1QQURfVElNRS8yOworI2VuZGlmCiAgICplbGFwc2VkID0gbGliX2VsYXBzZWQ7Ci0gIAorCiB9CiAKIApAQCAtMzA2OCwxMSArMzYxMSwyMiBAQAogICBjYXNlICdnJzoKICAgICBkaXZpc29yID0gMTAwMC4wICogMTAwMC4wICogMTAwMC4wIC8gOC4wOwogICAgIGJyZWFrOwotICAgIAorICBjYXNlICd4JzoKKyAgY2FzZSAnYic6CisgIGNhc2UgJ0InOgorICAgIGRpdmlzb3IgPSAxLjA7CisgICAgYnJlYWs7CisgIGNhc2UgJ3UnOgorICAgIC8qIGxhdGVuY3kgaW4gbWljcm9zZWNvbmRzIGEgYml0IHNxdWlycmVseSBidXQgd2UgZG9uJ3Qgd2FudCB0bworICAgICAgIHJlYWxseSBtdWNrIHdpdGggdGhpbmdzIGZvciB0aGUgZGVmYXVsdCByZXR1cm4gc3RhdGVtZW50LgorICAgICAgIGludmVydCB0cmFuc2FjdGlvbnMgcGVyIHNlY29uZCBhbmQgbXVsdGlwbHkgdG8gZ2V0IG1pY3Jvc2Vjb25kcworICAgICAgIHBlciB0cmFuc2FjdGlvbiAqLworICAgIHJldHVybiAoMSAvICh1bml0c19yZWNlaXZlZCAvIGVsYXBzZWQpKSAqIDEwMDAwMDAuMDsKKwogICBkZWZhdWx0OgogICAgIGRpdmlzb3IgPSAxMDI0LjA7CiAgIH0KLSAgCisKICAgcmV0dXJuICh1bml0c19yZWNlaXZlZCAvIGRpdmlzb3IgLyBlbGFwc2VkKTsKIAogfQpAQCAtMzExNiw4ICszNjcwLDE2IEBACiAgICAgZGl2aXNvciA9IDEwMDAuMCAqIDEwMDAuMCAqIDEwMDAuMCAvIDguMDsKICAgICBicmVhazsKICAgY2FzZSAneCc6CisgIGNhc2UgJ2InOgorICBjYXNlICdCJzoKICAgICBkaXZpc29yID0gMS4wOwogICAgIGJyZWFrOworICBjYXNlICd1JzoKKyAgICAvKiBsYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyBhIGJpdCBzcXVpcnJlbHkgYnV0IHdlIGRvbid0IHdhbnQgdG8KKyAgICAgICByZWFsbHkgbXVjayB3aXRoIHRoaW5ncyBmb3IgdGhlIGRlZmF1bHQgcmV0dXJuIHN0YXRlbWVudC4KKyAgICAgICBpbnZlcnQgdHJhbnNhY3Rpb25zIHBlciBzZWNvbmQgYW5kIG11bHRpcGx5IHRvIGdldCBtaWNyb3NlY29uZHMKKyAgICAgICBwZXIgdHJhbnNhY3Rpb24gKi8KKyAgICByZXR1cm4gKDEgLyAodW5pdHNfcmVjZWl2ZWQgLyBlbGFwc2VkKSkgKiAxMDAwMDAwLjA7CiAKICAgZGVmYXVsdDoKICAgICBmcHJpbnRmKHdoZXJlLApAQCAtMzEyNiw3ICszNjg4LDcgQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGRpdmlzb3IgPSAxMDI0LjA7CiAgIH0KLSAgCisKICAgcmV0dXJuICh1bml0c19yZWNlaXZlZCAvIGRpdmlzb3IgLyBlbGFwc2VkKTsKIAogfQpAQCAtMzE0MiwxMyArMzcwNCwyNSBAQAogCiAKIAotZmxvYXQgCitmbG9hdAogY2FsY19jcHVfdXRpbChmbG9hdCBlbGFwc2VkX3RpbWUpCiB7Ci0gIHJldHVybihjYWxjX2NwdV91dGlsX2ludGVybmFsKGVsYXBzZWRfdGltZSkpOworICBmbG9hdCB0ZW1wX3V0aWw7CisgIGludCBpOworICB0ZW1wX3V0aWwgPSBjYWxjX2NwdV91dGlsX2ludGVybmFsKGVsYXBzZWRfdGltZSk7CisKKyAgLyogbm93LCB3aGF0IHdhcyB0aGUgbW9zdCB1dGlsaXplZCBDUFUgYW5kIGl0cyB1dGlsPyAqLworICBmb3IgKGkgPSAwOyBpIDwgTUFYQ1BVUzsgaSsrKSB7CisgICAgaWYgKGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV0gPiBsaWJfbG9jYWxfY3B1X3N0YXRzLnBlYWtfY3B1X3V0aWwpIHsKKyAgICAgIGxpYl9sb2NhbF9jcHVfc3RhdHMucGVha19jcHVfdXRpbCA9IGxpYl9sb2NhbF9wZXJfY3B1X3V0aWxbaV07CisgICAgICBsaWJfbG9jYWxfY3B1X3N0YXRzLnBlYWtfY3B1X2lkID0gbGliX2NwdV9tYXBbaV07CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRlbXBfdXRpbDsKIH0KIAotZmxvYXQgCitmbG9hdAogY2FsY19zZXJ2aWNlX2RlbWFuZF9pbnRlcm5hbChkb3VibGUgdW5pdF9kaXZpc29yLAogCQkJICAgICBkb3VibGUgdW5pdHNfc2VudCwKIAkJCSAgICAgZmxvYXQgZWxhcHNlZF90aW1lLApAQCAtMzE2MSw1NSArMzczNSw1NyBAQAogICBkb3VibGUgdGhydXB1dDsKIAogICBpZiAoZGVidWcpIHsKLSAgICBmcHJpbnRmKHdoZXJlLCJjYWxjX3NlcnZpY2VfZGVtYW5kIGNhbGxlZDogIHVuaXRzX3NlbnQgPSAlZlxuIiwKLSAgICAgICAgICAgIHVuaXRzX3NlbnQpOwotICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZF90aW1lID0gJWZcbiIsCi0gICAgICAgICAgICBlbGFwc2VkX3RpbWUpOwotICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X3V0aWwgPSAlZlxuIiwKLSAgICAgICAgICAgIGNwdV91dGlsaXphdGlvbik7Ci0gICAgZnByaW50Zih3aGVyZSwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gY3B1ID0gJWRcbiIsCisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgImNhbGNfc2VydmljZV9kZW1hbmQgY2FsbGVkOiAgdW5pdHNfc2VudCA9ICVmXG4iCisJICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRfdGltZSA9ICVmXG4iCisJICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV91dGlsID0gJWZcbiIKKwkgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtIGNwdSA9ICVkXG4iLAorICAgICAgICAgICAgdW5pdHNfc2VudCwKKyAgICAgICAgICAgIGVsYXBzZWRfdGltZSwKKyAgICAgICAgICAgIGNwdV91dGlsaXphdGlvbiwKICAgICAgICAgICAgIG51bV9jcHVzKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKICAgaWYgKG51bV9jcHVzID09IDApIG51bV9jcHVzID0gbGliX251bV9sb2NfY3B1czsKLSAgCisKICAgaWYgKGVsYXBzZWRfdGltZSA9PSAwLjApIHsKICAgICBlbGFwc2VkX3RpbWUgPSBsaWJfZWxhcHNlZDsKICAgfQogICBpZiAoY3B1X3V0aWxpemF0aW9uID09IDAuMCkgewotICAgIGNwdV91dGlsaXphdGlvbiA9IGxpYl9sb2NhbF9jcHVfdXRpbDsKKyAgICBjcHVfdXRpbGl6YXRpb24gPSBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV91dGlsOwogICB9Ci0gIAotICB0aHJ1cHV0ID0gKHVuaXRzX3NlbnQgLyAKLSAgICAgICAgICAgICAoZG91YmxlKSB1bml0X2Rpdmlzb3IgLyAKKworICB0aHJ1cHV0ID0gKHVuaXRzX3NlbnQgLworICAgICAgICAgICAgIChkb3VibGUpIHVuaXRfZGl2aXNvciAvCiAgICAgICAgICAgICAgKGRvdWJsZSkgZWxhcHNlZF90aW1lKTsKIAotICAvKiBvbiBNUCBzeXN0ZW1zLCBpdCBpcyBuZWNlc3NhcnkgdG8gbXVsdGlwbHkgdGhlIHNlcnZpY2UgZGVtYW5kIGJ5ICovCi0gIC8qIHRoZSBudW1iZXIgb2YgQ1BVJ3MuIGF0IGxlYXN0LCBJIGJlbGlldmUgdGhhdCB0byBiZSB0aGUgY2FzZTopICovCi0gIC8qIHJhaiAxMC85NSAqLworICAvKiBvbiBNUCBzeXN0ZW1zLCBpdCBpcyBuZWNlc3NhcnkgdG8gbXVsdGlwbHkgdGhlIHNlcnZpY2UgZGVtYW5kIGJ5CisgICAgIHRoZSBudW1iZXIgb2YgQ1BVJ3MuIGF0IGxlYXN0LCBJIGJlbGlldmUgdGhhdCB0byBiZSB0aGUgY2FzZTopCisgICAgIHJhaiAxMC85NSAqLwogCi0gIC8qIHRocnVwdXQgaGFzIGEgInBlciBzZWNvbmQiIGNvbXBvbmVudC4gaWYgd2Ugd2VyZSB1c2luZyAxMDAlICggKi8KLSAgLyogMTAwLjApIG9mIHRoZSBDUFUgaW4gYSBzZWNvbmQsIHRoYXQgd291bGQgYmUgMSBzZWNvbmQsIG9yIDEgKi8KLSAgLyogbWlsbGlzZWNvbmQsIHNvIHdlIG11bHRpcGx5IGNwdV91dGlsaXphdGlvbiBieSAxMCB0byBnbyB0byAqLwotICAvKiBtaWxsaXNlY29uZHMsIG9yIDEwLDAwMCB0byBnbyB0byBtaWNybyBzZWNvbmRzLiBXaXRoIHJldmlzaW9uICovCi0gIC8qIDIuMSwgdGhlIHNlcnZpY2UgZGVtYW5kIG1lYXN1cmUgZ29lcyB0byBtaWNyb3NlY29uZHMgcGVyIHVuaXQuICovCi0gIC8qIHJhaiAxMi85NSAqLyAKLSAgc2VydmljZV9kZW1hbmQgPSAoY3B1X3V0aWxpemF0aW9uKjEwMDAwLjAvdGhydXB1dCkgKiAKKyAgLyogdGhydXB1dCBoYXMgYSAicGVyIHNlY29uZCIgY29tcG9uZW50LiBpZiB3ZSB3ZXJlIHVzaW5nIDEwMCUgKAorICAgICAxMDAuMCkgb2YgdGhlIENQVSBpbiBhIHNlY29uZCwgdGhhdCB3b3VsZCBiZSAxIHNlY29uZCwgb3IgMQorICAgICBtaWxsaXNlY29uZCwgc28gd2UgbXVsdGlwbHkgY3B1X3V0aWxpemF0aW9uIGJ5IDEwIHRvIGdvIHRvCisgICAgIG1pbGxpc2Vjb25kcywgb3IgMTAsMDAwIHRvIGdvIHRvIG1pY3JvIHNlY29uZHMuIFdpdGggcmV2aXNpb24KKyAgICAgMi4xLCB0aGUgc2VydmljZSBkZW1hbmQgbWVhc3VyZSBnb2VzIHRvIG1pY3Jvc2Vjb25kcyBwZXIgdW5pdC4KKyAgICAgcmFqIDEyLzk1ICovCisgIHNlcnZpY2VfZGVtYW5kID0gKGNwdV91dGlsaXphdGlvbioxMDAwMC4wL3RocnVwdXQpICoKICAgICAoZmxvYXQpIG51bV9jcHVzOwotICAKKwogICBpZiAoZGVidWcpIHsKLSAgICBmcHJpbnRmKHdoZXJlLCJjYWxjX3NlcnZpY2VfZGVtYW5kIHVzaW5nOiAgIHVuaXRzX3NlbnQgPSAlZlxuIiwKLSAgICAgICAgICAgIHVuaXRzX3NlbnQpOwotICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZF90aW1lID0gJWZcbiIsCi0gICAgICAgICAgICBlbGFwc2VkX3RpbWUpOwotICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X3V0aWwgPSAlZlxuIiwKLSAgICAgICAgICAgIGNwdV91dGlsaXphdGlvbik7Ci0gICAgZnByaW50Zih3aGVyZSwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gY3B1ID0gJWRcbiIsCi0gICAgICAgICAgICBudW1fY3B1cyk7Ci0gICAgZnByaW50Zih3aGVyZSwiY2FsY19zZXJ2aWNlX2RlbWFuZCBnb3Q6ICAgICB0aHJ1cHV0ID0gJWZcbiIsCi0gICAgICAgICAgICB0aHJ1cHV0KTsKLSAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZkZW0gPSAlZlxuIiwKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiY2FsY19zZXJ2aWNlX2RlbWFuZCB1c2luZzogICB1bml0c19zZW50ID0gJWZcbiIKKwkgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZF90aW1lID0gJWZcbiIKKwkgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X3V0aWwgPSAlZlxuIgorCSAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gY3B1ID0gJWRcbiIKKwkgICAgImNhbGNfc2VydmljZV9kZW1hbmQgZ290OiAgICAgdGhydXB1dCA9ICVmXG4iCisJICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZkZW0gPSAlZlxuIiwKKyAgICAgICAgICAgIHVuaXRzX3NlbnQsCisgICAgICAgICAgICBlbGFwc2VkX3RpbWUsCisgICAgICAgICAgICBjcHVfdXRpbGl6YXRpb24sCisgICAgICAgICAgICBudW1fY3B1cywKKyAgICAgICAgICAgIHRocnVwdXQsCiAgICAgICAgICAgICBzZXJ2aWNlX2RlbWFuZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQpAQCAtMzIzMiwxNCArMzgwOCwxNyBAQAogCQkJCSAgICAgIG51bV9jcHVzKSk7CiB9CiAKLWZsb2F0IGNhbGNfc2VydmljZV9kZW1hbmRfdHJhbnMoZG91YmxlIHVuaXRzX3NlbnQsCi0JCQkJZmxvYXQgZWxhcHNlZF90aW1lLAotCQkJCWZsb2F0IGNwdV91dGlsaXphdGlvbiwKLQkJCQlpbnQgbnVtX2NwdXMpCisvKiB1c2UgdGhlIHZhbHVlIG9mIGxpYmZtdCB0byBkZXRlcm1pbmUgdGhlIHVuaXRfZGl2aXNvciAqLworZmxvYXQgY2FsY19zZXJ2aWNlX2RlbWFuZF9mbXQoZG91YmxlIHVuaXRzX3NlbnQsCisJCQkgICAgICBmbG9hdCBlbGFwc2VkX3RpbWUsCisJCQkgICAgICBmbG9hdCBjcHVfdXRpbGl6YXRpb24sCisJCQkgICAgICBpbnQgbnVtX2NwdXMpCiAKIHsKKyAgZG91YmxlIHVuaXRfZGl2aXNvcjsKIAotICBkb3VibGUgdW5pdF9kaXZpc29yID0gKGRvdWJsZSkxLjA7CisgIGlmICgneCcgPT0gbGliZm10KSB1bml0X2Rpdmlzb3IgPSAxLjA7CisgIGVsc2UgdW5pdF9kaXZpc29yID0gMTAyNC4wOwogCiAgIHJldHVybihjYWxjX3NlcnZpY2VfZGVtYW5kX2ludGVybmFsKHVuaXRfZGl2aXNvciwKIAkJCQkgICAgICB1bml0c19zZW50LApAQCAtMzI1Myw3ICszODMyLDcgQEAKIGZsb2F0CiBjYWxpYnJhdGVfbG9jYWxfY3B1KGZsb2F0IGxvY2FsX2NwdV9yYXRlKQogewotICAKKwogICBsaWJfbnVtX2xvY19jcHVzID0gZ2V0X251bV9jcHVzKCk7CiAKICAgbGliX3VzZV9pZGxlID0gMDsKQEAgLTMyNjMsMTcgKzM4NDIsMTcgQEAKICNlbmRpZiAvKiBVU0VfTE9PUEVSICovCiAKICAgaWYgKGxvY2FsX2NwdV9yYXRlID4gMCkgewotICAgIC8qIFRoZSB1c2VyIHRoaW5rIHRoYXQgaGUga25vd3Mgd2hhdCB0aGUgY3B1IHJhdGUgaXMuIFdlIGFzc3VtZSAqLwotICAgIC8qIHRoYXQgYWxsIHRoZSBwcm9jZXNzb3JzIG9mIGFuIE1QIHN5c3RlbSBhcmUgZXNzZW50aWFsbHkgdGhlICovCi0gICAgLyogc2FtZSAtIGZvciB0aGlzIHJlYXNvbiB3ZSBkbyBub3QgaGF2ZSBhIHBlciBwcm9jZXNzb3IgbWF4cmF0ZS4gKi8KLSAgICAvKiBpZiB0aGUgbWFjaGluZSBoYXMgcHJvY2Vzc29ycyB3aGljaCBhcmUgZGlmZmVyZW50IGluICovCi0gICAgLyogcGVyZm9ybWFuY2UsIHRoZSBDUFUgdXRpbGl6YXRpb24gd2lsbCBiZSBza2V3ZWQuIHJhaiA0Lzk1ICovCisgICAgLyogVGhlIHVzZXIgdGhpbmsgdGhhdCBoZSBrbm93cyB3aGF0IHRoZSBjcHUgcmF0ZSBpcy4gV2UgYXNzdW1lCisgICAgICAgdGhhdCBhbGwgdGhlIHByb2Nlc3NvcnMgb2YgYW4gTVAgc3lzdGVtIGFyZSBlc3NlbnRpYWxseSB0aGUKKyAgICAgICBzYW1lIC0gZm9yIHRoaXMgcmVhc29uIHdlIGRvIG5vdCBoYXZlIGEgcGVyIHByb2Nlc3NvciBtYXhyYXRlLgorICAgICAgIGlmIHRoZSBtYWNoaW5lIGhhcyBwcm9jZXNzb3JzIHdoaWNoIGFyZSBkaWZmZXJlbnQgaW4KKyAgICAgICBwZXJmb3JtYW5jZSwgdGhlIENQVSB1dGlsaXphdGlvbiB3aWxsIGJlIHNrZXdlZC4gcmFqIDQvOTUgKi8KICAgICBsaWJfbG9jYWxfbWF4cmF0ZSA9IGxvY2FsX2NwdV9yYXRlOwogICB9CiAgIGVsc2UgewotICAgIC8qIGlmIG5laXRoZXIgVVNFX0xPT1BFUiBub3IgVVNFX1BTVEFUIGFyZSBkZWZpbmVkLCB3ZSByZXR1cm4gYSAqLwotICAgIC8qIDAuMCB0byBpbmRpY2F0ZSB0aGF0IHRpbWVzIG9yIGdldHJ1c2FnZSBzaG91bGQgYmUgdXNlZC4gcmFqICovCi0gICAgLyogNC85NSAqLworICAgIC8qIGlmIG5laXRoZXIgVVNFX0xPT1BFUiBub3IgVVNFX1BTVEFUIGFyZSBkZWZpbmVkLCB3ZSByZXR1cm4gYQorICAgICAgIDAuMCB0byBpbmRpY2F0ZSB0aGF0IHRpbWVzIG9yIGdldHJ1c2FnZSBzaG91bGQgYmUgdXNlZC4gcmFqCisgICAgICAgNC85NSAqLwogICAgIGxpYl9sb2NhbF9tYXhyYXRlID0gKGZsb2F0KTAuMDsKICNpZiBkZWZpbmVkKFVTRV9QUk9DX1NUQVQpIHx8IGRlZmluZWQoVVNFX0xPT1BFUikgfHwgZGVmaW5lZChVU0VfUFNUQVQpIHx8IGRlZmluZWQoVVNFX0tTVEFUKSB8fCBkZWZpbmVkKFVTRV9QRVJGU1RBVCkgfHwgZGVmaW5lZChVU0VfU1lTQ1RMKQogICAgIGxpYl9sb2NhbF9tYXhyYXRlID0gY2FsaWJyYXRlX2lkbGVfcmF0ZSg0LDEwKTsKQEAgLTMyOTAsOSArMzg2OSw5IEBACiAKICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlID0gQ1BVX0NBTElCUkFURTsKICAgc2VuZF9yZXF1ZXN0KCk7Ci0gIC8qIHdlIGtub3cgdGhhdCBjYWxpYnJhdGlvbiB3aWxsIGxhc3QgYXQgbGVhc3QgNDAgc2Vjb25kcywgc28gZ28gdG8gKi8KLSAgLyogc2xlZXAgZm9yIHRoYXQgbG9uZyBzbyB0aGUgNjAgc2Vjb25kIHNlbGVjdCBpbiByZWN2X3Jlc3BvbnNlIHdpbGwgKi8KLSAgLyogbm90IHBvcC4gcmFqIDcvOTUgKi8KKyAgLyogd2Uga25vdyB0aGF0IGNhbGlicmF0aW9uIHdpbGwgbGFzdCBhdCBsZWFzdCA0MCBzZWNvbmRzLCBzbyBnbyB0bworICAgICBzbGVlcCBmb3IgdGhhdCBsb25nIHNvIHRoZSA2MCBzZWNvbmQgc2VsZWN0IGluIHJlY3ZfcmVzcG9uc2Ugd2lsbAorICAgICBub3QgcG9wLiByYWogNy85NSAqLwogCiAgIC8qIHdlIGtub3cgdGhhdCBDUFUgY2FsaWJyYXRpb24gbWF5IGxhc3QgYXMgbG9uZyBhcyA0MCBzZWNvbmRzLCBzbwogICAgICBtYWtlIHN1cmUgd2UgInNlbGVjdCIgZm9yIGF0IGxlYXN0IHRoYXQgbG9uZyB3aGlsZSBsb29raW5nIGZvcgpAQCAtMzMwMCw5ICszODc5LDkgQEAKICAgcmVjdl9yZXNwb25zZV90aW1lZCg0MCk7CiAKICAgaWYgKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7Ci0gICAgLyogaW5pdGlhbGx5LCBzaWxlbnRseSBpZ25vcmUgcmVtb3RlIGVycm9ycyBhbmQgcGFzcyAqLwotICAgIC8qIGJhY2sgYSB6ZXJvIHRvIHRoZSBjYWxsZXIgdGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gKi8KLSAgICAvKiBtaXggcmV2IDEuMCBhbmQgcmV2IDEuMSBuZXRwZXJmcy4uLiAqLworICAgIC8qIGluaXRpYWxseSwgc2lsZW50bHkgaWdub3JlIHJlbW90ZSBlcnJvcnMgYW5kIHBhc3MgYmFjayBhIHplcm8KKyAgICAgICB0byB0aGUgY2FsbGVyIHRoaXMgc2hvdWxkIGFsbG93IHVzIHRvIG1peCByZXYgMS4wIGFuZCByZXYgMS4xCisgICAgICAgbmV0cGVyZnMuLi4gKi8KICAgICByZXR1cm4oKGZsb2F0KTAuMCk7CiAgIH0KICAgZWxzZSB7CkBAIC0zMzE1LDEzICszODk0LDE1IEBACiAJICBzaXplb2YobGliX251bV9yZW1fY3B1cykpOwogLyogICAgcmVtcmF0ZSA9IChmbG9hdCkgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YVswXTsgKi8KICAgICByZXR1cm4ocmVtcmF0ZSk7Ci0gIH0gICAgIAorICB9CiB9CisKKwogDAogI2lmbmRlZiBXSU4zMgotLyogV0lOMzIgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgb2YgdGhlIGZpbGUgc2V0cyB0byBzZWxlY3QgYmUgbm9uLW51bGwuICovCi0vKiBTaW5jZSBtc2VjX3NsZWVwIHJvdXRpbmUgaXMgb25seSBjYWxsZWQgYnkgbmV0dGVzdF9kbHBpICYgbmV0dGVzdF91bml4LCAgKi8KLS8qIGxldCdzIGR1Y2sgdGhpcyBpc3N1ZS4gKi8KKy8qIFdJTjMyIHJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIG9mIHRoZSBmaWxlIHNldHMgdG8gc2VsZWN0IGJlCisgICBub24tbnVsbC4gIFNpbmNlIG1zZWNfc2xlZXAgcm91dGluZSBpcyBvbmx5IGNhbGxlZCBieSBuZXR0ZXN0X2RscGkKKyAgICYgbmV0dGVzdF91bml4LCBsZXQncyBkdWNrIHRoaXMgaXNzdWUuICovCiAKIGludAogbXNlY19zbGVlcCggaW50IG1zZWNzICkKQEAgLTMzNDcsMTEgKzM5MjgsMjM5IEBACiB9CiAjZW5kaWYgLyogV0lOMzIgKi8KIAotI2lmZGVmIFdBTlRfSElTVE9HUkFNCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykgfHwgZGVmaW5lZChXQU5UX0RFTU8pCisKK2ludCBkZW1vX21vZGU7ICAgICAgICAgICAgICAgICAgICAvKiBhcmUgd2UgYWN0dWFsbHkgaW4gZGVtbyBtb2RlPyA9IDAKKwkJCQkgICAgID09IG5vdCBpbiBkZW1vIG1vZGU7IDEgPT0gY2xhc3NpYworCQkJCSAgICAgdW5pdCBiYXNlZCBkZW1vIG1vZGU7IDIgPT0gYWx3YXlzCisJCQkJICAgICB0aW1lc3RhbXAgZGVtbyBtb2RlICovCitkb3VibGUgZGVtb19pbnRlcnZhbCA9IDEwMDAwMDAuMDsgLyogd2hhdCBpcyB0aGUgZGVzaXJlZCBpbnRlcnZhbCB0bworCQkJCSAgICAgZGlzcGxheSBpbnRlcnZhbCByZXN1bHRzLiBkZWZhdWx0CisJCQkJICAgICBpcyBvbmUgc2Vjb25kIGluIHVuaXRzIG9mCisJCQkJICAgICBtaWNyb3NlY29uZHMgKi8KK2RvdWJsZSBkZW1vX3VuaXRzID0gMC4wOyAgICAgICAgICAvKiB3aGF0IGlzIG91ciBjdXJyZW50IGJlc3QgZ3Vlc3MgYXMKKwkJCQkgICAgIHRvIGhvdyBtYW55IHdvcmsgdW5pdHMgbXVzdCBiZQorCQkJCSAgICAgZG9uZSB0byBiZSBuZWFyIHRoZSBkZXNpcmVkCisJCQkJICAgICByZXBvcnRpbmcgaW50ZXJ2YWw/ICovCisKK2RvdWJsZSB1bml0c190aGlzX3RpY2s7CisjZW5kaWYKKworI2lmZGVmIFdBTlRfREVNTworI2lmZGVmIEhBVkVfR0VUSFJUSU1FCitzdGF0aWMgaHJ0aW1lX3QgZGVtb19vbmU7CitzdGF0aWMgaHJ0aW1lX3QgZGVtb190d287CitzdGF0aWMgaHJ0aW1lX3QgKmRlbW9fb25lX3B0ciA9ICZkZW1vX29uZTsKK3N0YXRpYyBocnRpbWVfdCAqZGVtb190d29fcHRyID0gJmRlbW9fdHdvOworc3RhdGljIGhydGltZV90ICp0ZW1wX2RlbW9fcHRyID0gJmRlbW9fb25lOworI2VsaWYgZGVmaW5lZChXSU4zMikKK3N0YXRpYyBMQVJHRV9JTlRFR0VSIGRlbW9fb25lOworc3RhdGljIExBUkdFX0lOVEVHRVIgZGVtb190d287CitzdGF0aWMgTEFSR0VfSU5URUdFUiAqZGVtb19vbmVfcHRyID0gJmRlbW9fb25lOworc3RhdGljIExBUkdFX0lOVEVHRVIgKmRlbW9fdHdvX3B0ciA9ICZkZW1vX3R3bzsKK3N0YXRpYyBMQVJHRV9JTlRFR0VSICp0ZW1wX2RlbW9fcHRyID0gJmRlbW9fb25lOworI2Vsc2UKK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCBkZW1vX29uZTsKK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCBkZW1vX3R3bzsKK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCAqZGVtb19vbmVfcHRyID0gJmRlbW9fb25lOworc3RhdGljIHN0cnVjdCB0aW1ldmFsICpkZW1vX3R3b19wdHIgPSAmZGVtb190d287CitzdGF0aWMgc3RydWN0IHRpbWV2YWwgKnRlbXBfZGVtb19wdHIgPSAmZGVtb19vbmU7CisjZW5kaWYKKwordm9pZCBkZW1vX2ZpcnN0X3RpbWVzdGFtcCgpIHsKKyAgSElTVF90aW1lc3RhbXAoZGVtb19vbmVfcHRyKTsKK30KKwordm9pZCBkZW1vX3Jlc2V0KCkgeworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiUmVzZXR0aW5nIGludGVyaW0gcmVzdWx0c1xuIik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorICB1bml0c190aGlzX3RpY2sgPSAwOworICBkZW1vX2ZpcnN0X3RpbWVzdGFtcCgpOworfQorCisvKiBmb3IgYSBfU1RSRUFNIHRlc3QsICJhIiBzaG91bGQgYmUgbHNzX3NpemUgYW5kICJiIiBzaG91bGQgYmUKKyAgIHJzcl9zaXplLiBmb3IgYSBfTUFFUlRTIHRlc3QsICJhIiBzaG91bGQgYmUgbHNyX3NpemUgYW5kICJiIiBzaG91bGQKKyAgIGJlIHJzc19zaXplLiByYWogMjAwNS0wNC0wNiAqLwordm9pZCBkZW1vX3N0cmVhbV9zZXR1cCh1aW50MzJfdCBhLCB1aW50MzJfdCBiKSB7CisgIGlmICgoZGVtb19tb2RlKSAmJiAoZGVtb191bml0cyA9PSAwKSkgeworICAgIC8qIHRha2Ugb3VyIGRlZmF1bHQgdmFsdWUgb2YgZGVtb191bml0cyB0byBiZSB0aGUgbGFyZ2VyIG9mCisgICAgICAgdHdpY2UgdGhlIHJlbW90ZSdzIFNPX1JDVkJVRiBvciB0d2ljZSBvdXIgU09fU05EQlVGICovCisgICAgaWYgKGEgPiBiKSB7CisgICAgICBkZW1vX3VuaXRzID0gMiphOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGRlbW9fdW5pdHMgPSAyKmI7CisgICAgfQorICB9Cit9CisKKyNpZmRlZiBXSU4zMgorX19mb3JjZWlubGluZSB2b2lkIGRlbW9faW50ZXJ2YWxfZGlzcGxheShkb3VibGUgYWN0dWFsX2ludGVydmFsKQorI2Vsc2UKKyAgaW5saW5lIHZvaWQgZGVtb19pbnRlcnZhbF9kaXNwbGF5KGRvdWJsZSBhY3R1YWxfaW50ZXJ2YWwpCisjZW5kaWYKK3sKKyAgc3RhdGljIGludCBjb3VudCA9IDA7CisgIHN0cnVjdCB0aW1ldmFsIG5vdzsKKyAgCisgIGdldHRpbWVvZmRheSgmbm93LE5VTEwpOworICBzd2l0Y2ggKG5ldHBlcmZfb3V0cHV0X21vZGUpIHsKKyAgY2FzZSBIVU1BTjoKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiSW50ZXJpbSByZXN1bHQ6ICU3LjJmICVzL3Mgb3ZlciAlLjNmIHNlY29uZHMgZW5kaW5nIGF0ICVsZC4lLjNsZFxuIiwKKwkgICAgY2FsY190aHJ1cHV0X2ludGVydmFsKHVuaXRzX3RoaXNfdGljaywKKwkJCQkgIGFjdHVhbF9pbnRlcnZhbC8xMDAwMDAwLjApLAorCSAgICBmb3JtYXRfdW5pdHMoKSwKKwkgICAgYWN0dWFsX2ludGVydmFsLzEwMDAwMDAuMCwKKwkgICAgbm93LnR2X3NlYywKKwkgICAgKGxvbmcpIG5vdy50dl91c2VjLzEwMDApOworICAgIGJyZWFrOworICBjYXNlIENTVjoKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJTcuMmYsJXMvcywlLjNmLCVsZC4lLjNsZFxuIiwKKwkgICAgY2FsY190aHJ1cHV0X2ludGVydmFsKHVuaXRzX3RoaXNfdGljaywKKwkJCQkgIGFjdHVhbF9pbnRlcnZhbC8xMDAwMDAwLjApLAorCSAgICBmb3JtYXRfdW5pdHMoKSwKKwkgICAgYWN0dWFsX2ludGVydmFsLzEwMDAwMDAuMCwKKwkgICAgbm93LnR2X3NlYywKKwkgICAgKGxvbmcpIG5vdy50dl91c2VjLzEwMDApOworICAgIGJyZWFrOworICBjYXNlIEtFWVZBTDoKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiTkVUUEVSRl9JTlRFUklNX1JFU1VMVFslZF09JS4yZlxuIgorCSAgICAiTkVUUEVSRl9VTklUU1slZF09JXMvc1xuIgorCSAgICAiTkVUUEVSRl9JTlRFUlZBTFslZF09JS4zZlxuIgorCSAgICAiTkVUUEVSRl9FTkRJTkdbJWRdPSVsZC4lLjNsZFxuIiwKKwkgICAgY291bnQsCisJICAgIGNhbGNfdGhydXB1dF9pbnRlcnZhbCh1bml0c190aGlzX3RpY2ssCisJCQkJICBhY3R1YWxfaW50ZXJ2YWwvMTAwMDAwMC4wKSwKKwkgICAgY291bnQsCisJICAgIGZvcm1hdF91bml0cygpLAorCSAgICBjb3VudCwKKwkgICAgYWN0dWFsX2ludGVydmFsLzEwMDAwMDAuMCwKKwkgICAgY291bnQsCisJICAgIG5vdy50dl9zZWMsCisJICAgIChsb25nKSBub3cudHZfdXNlYy8xMDAwKTsKKyAgICBjb3VudCArPSAxOworICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIGZwcmludGYod2hlcmUsCisJICAgICJIZXkgUmlja3kgeW91IG5vdCBmaW5lLCB0aGVyZXMgYSBidWcgYXQgZGVtbyB0aW1lLiBIZXkgUmlja3khIik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorICBmZmx1c2god2hlcmUpOworfQorCisvKiB0aGlzIGhhcyBnb3R0ZW4gbG9uZyBlbm91Z2ggdG8gd2FycmFudCBiZWluZyBhbiBpbmxpbmUgZnVuY3Rpb24KKyAgIHJhdGhlciB0aGFuIGEgbWFjcm8sIGFuZCBpdCBoYXMgYmVlbiBlbm91Z2ggeWVhcnMgc2luY2UgYWxsIHRoZQorICAgaW1wb3J0YW50IGNvbXBpbGVycyBoYXZlIHN1cHBvcnRlZCBzdWNoIGEgY29uc3RydWN0IHNvIGl0IHNob3VsZAorICAgbm90IGJlIGEgYmlnIGRlYWwuIHJhaiAyMDEyLTAxLTIzICovCisKKyNpZmRlZiBXSU4zMgorLyogSXQgd291bGQgc2VlbSB0aGF0IHRoZSBNaWNyb3NvZnQgY29tcGlsZXIgd2lsbCBub3QgaW5saW5lIGFjcm9zcworICAgc291cmNlIGZpbGVzLiBTbyB0aGVyZSBpcyBsaXR0bGUgcG9pbnQgaW4gaGF2aW5nIGFuIGlubGluZQorICAgZGlyZWN0aXZlIGluIHRoYXQgc2l0dWF0aW9uLiAgT2YgY291cnNlIHRoYXQgbWFrZXMgbWUgd29uZGVyIGlmIGFuCisgICBpbmxpbmUgZGlyZWN0aXZlIGhhcyB0byBhcHBlYXIgaW4gbmV0bGliLmguLi4gKi8KK3ZvaWQgZGVtb19pbnRlcnZhbF90aWNrKHVpbnQzMl90IHVuaXRzKQorI2Vsc2UKKyAgaW5saW5lIHZvaWQgZGVtb19pbnRlcnZhbF90aWNrKHVpbnQzMl90IHVuaXRzKQorI2VuZGlmCit7CisgIGRvdWJsZSBhY3R1YWxfaW50ZXJ2YWwgPSAwLjA7CisKKyAgc3dpdGNoIChkZW1vX21vZGUpIHsKKyAgY2FzZSAwOgorICAgIHJldHVybjsKKyAgY2FzZSAxOiAvKiB1c2UgdGhlIHVuaXQgYWNjdW11bGF0aW9uIGZpcnN0ICovCisgICAgdW5pdHNfdGhpc190aWNrICs9IHVuaXRzOworICAgIGlmICh1bml0c190aGlzX3RpY2sgPj0gZGVtb191bml0cykgeworICAgICAgLyogdGltZSB0byBwb3NzaWJseSB1cGRhdGUgZGVtb191bml0cyBhbmQgbWF5YmUgb3V0cHV0IGFuCisJIGludGVyaW0gcmVzdWx0ICovCisgICAgICBISVNUX3RpbWVzdGFtcChkZW1vX3R3b19wdHIpOworICAgICAgYWN0dWFsX2ludGVydmFsID0gZGVsdGFfbWljcm8oZGVtb19vbmVfcHRyLGRlbW9fdHdvX3B0cik7CisgICAgICAvKiB3ZSBhbHdheXMgd2FudCB0byBmaW5lLXR1bmUgZGVtb191bml0cyBoZXJlIHdoZXRoZXIgd2UgZW1pdAorCSBhbiBpbnRlcmltIHJlc3VsdCBvciBub3QuICBpZiB3ZSBhcmUgc2hvcnQsIHRoaXMgd2lsbAorCSBsZW5ndGhlbiBkZW1vX3VuaXRzLiAgaWYgd2UgYXJlIGxvbmcsIHRoaXMgd2lsbCBzaG9ydGVuIGl0ICovCisgICAgICBkZW1vX3VuaXRzID0gZGVtb191bml0cyAqIChkZW1vX2ludGVydmFsIC8gYWN0dWFsX2ludGVydmFsKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgcmV0dXJuOworICAgIGJyZWFrOworICBjYXNlIDI6ICAvKiBBbHdheXMgdGltZXN0YW1wICovCisgICAgdW5pdHNfdGhpc190aWNrICs9IHVuaXRzOworICAgIEhJU1RfdGltZXN0YW1wKGRlbW9fdHdvX3B0cik7CisgICAgYWN0dWFsX2ludGVydmFsID0gZGVsdGFfbWljcm8oZGVtb19vbmVfcHRyLGRlbW9fdHdvX3B0cik7CisKKyAgICBicmVhazsKKyAgZGVmYXVsdDoKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiVW5leHBlY3RlZCB2YWx1ZSBvZiBkZW1vX21vZGUgb2YgJWQuIFBsZWFzZSByZXBvcnQgdGhpcyBhcyBhIGJ1Zy5cbiIsCisJICAgIGRlbW9fbW9kZSk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorCisKKworICAvKiB1bml0cyA9PSAwIHdpbGwgYmUgd2hlbiB3ZSBoYXZlIGNvbXBsZXRlZCBhIHRlc3QuICB3ZSB3YW50IHRvCisgICAgIGVtaXQgYSBmaW5hbCBpbnRlcmltIHJlc3VsdHMgaWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gcmVwb3J0ICovCisgIGlmIChhY3R1YWxfaW50ZXJ2YWwgPj0gZGVtb19pbnRlcnZhbCkgeworICAgIC8qIHRpbWUgdG8gZW1pdCBhbiBpbnRlcmltIHJlc3VsdCwgZ2l2aW5nIHRoZSBjdXJyZW50IHRpbWUgdG8gdGhlCisgICAgICAgbWlsbGlzZWNvbmQgZm9yIGNvbXBhdGFiaWxpdHkgd2l0aCBSUkQgICovCisgICAgZGVtb19pbnRlcnZhbF9kaXNwbGF5KGFjdHVhbF9pbnRlcnZhbCk7CisgICAgdW5pdHNfdGhpc190aWNrID0gMC4wOworICAgIC8qIG5vdyBnZXQgYSBuZXcgc3RhcnRpbmcgdGltZXN0YW1wLiAgd2UgY291bGQgYmUgY2xldmVyCisgICAgICAgYW5kIHN3YXAgcG9pbnRlcnMgLSB0aGUgbWF0aCB3ZSBkbyBwcm9iYWJseSBkb2VzIG5vdAorICAgICAgIHRha2UgYWxsIHRoYXQgbG9uZywgYnV0IGZvciBub3cgdGhpcyB3aWxsIHN1ZmZpY2UgKi8KKyAgICB0ZW1wX2RlbW9fcHRyID0gZGVtb19vbmVfcHRyOworICAgIGRlbW9fb25lX3B0ciA9IGRlbW9fdHdvX3B0cjsKKyAgICBkZW1vX3R3b19wdHIgPSB0ZW1wX2RlbW9fcHRyOworICAgIAorICB9Cit9CisKK3ZvaWQgZGVtb19pbnRlcnZhbF9maW5hbCgpIHsKKyAgZG91YmxlIGFjdHVhbF9pbnRlcnZhbDsKKworICBzd2l0Y2ggKGRlbW9fbW9kZSkgeworICBjYXNlIDA6CisgICAgcmV0dXJuOworICBjYXNlIDE6CisgIGNhc2UgMjoKKyAgICBpZiAodW5pdHNfdGhpc190aWNrID4gMC4wKSB7CisgICAgICBISVNUX3RpbWVzdGFtcChkZW1vX3R3b19wdHIpOworICAgICAgYWN0dWFsX2ludGVydmFsID0gZGVsdGFfbWljcm8oZGVtb19vbmVfcHRyLGRlbW9fdHdvX3B0cik7CisgICAgICBkZW1vX2ludGVydmFsX2Rpc3BsYXkoYWN0dWFsX2ludGVydmFsKTsKKyAgICAgIHVuaXRzX3RoaXNfdGljayA9IDAuMDsKKyAgICB9CisgIH0KK30KKwordm9pZCBkZW1vX3N0cmVhbV9pbnRlcnZhbCh1aW50MzJfdCB1bml0cykgeworICBkZW1vX2ludGVydmFsX3RpY2sodW5pdHMpOworfQorCit2b2lkIGRlbW9fcnJfc2V0dXAodWludDMyX3QgYSkgeworICBpZiAoKGRlbW9fbW9kZSkgJiYgKGRlbW9fdW5pdHMgPT0gMCkpIHsKKyAgICAvKiB0YWtlIHdoYXRldmVyIHdlIGFyZSBnaXZlbiAqLworICAgIGRlbW9fdW5pdHMgPSBhOworICB9Cit9CisKK3ZvaWQgZGVtb19ycl9pbnRlcnZhbCh1aW50MzJfdCB1bml0cykgeworICBkZW1vX2ludGVydmFsX3RpY2sodW5pdHMpOworfQorCisjZW5kaWYKKwogLyogaGlzdC5jCiAKICAgIEdpdmVuIGEgdGltZSBkaWZmZXJlbmNlIGluIG1pY3Jvc2Vjb25kcywgaW5jcmVtZW50IG9uZSBvZiA2MQotICAgZGlmZmVyZW50IGJ1Y2tldHM6IAorICAgZGlmZmVyZW50IGJ1Y2tldHM6CiAKICAgIDAgLSA5IGluIGluY3JlbWVudHMgb2YgMSB1c2VjCiAgICAwIC0gOSBpbiBpbmNyZW1lbnRzIG9mIDEwIHVzZWNzCkBAIC0zMzYyLDEyICs0MTcxLDEyIEBACiAgICAxIC0gOSBpbiBpbmNyZW1lbnRzIG9mIDEgc2VjCiAgICAxIC0gOSBpbiBpbmNyZW1lbnRzIG9mIDEwIHNlYwogICAgPiAxMDAgc2VjcwotICAgCisKICAgIFRoaXMgd2lsbCBhbGxvdyBhbnkgdGltZSB0byBiZSByZWNvcmRlZCB0byB3aXRoaW4gYW4gYWNjdXJhY3kgb2YKLSAgIDEwJSwgYW5kIHByb3ZpZGVzIGEgY29tcGFjdCAgcmVwcmVzZW50YXRpb24gZm9yIGNhcHR1cmluZyB0aGUKKyAgIDEwJSwgYW5kIHByb3ZpZGVzIGEgY29tcGFjdCByZXByZXNlbnRhdGlvbiBmb3IgY2FwdHVyaW5nIHRoZQogICAgZGlzdHJpYnV0aW9uIG9mIGEgbGFyZ2UgbnVtYmVyIG9mIHRpbWUgZGlmZmVyZW5jZXMgKGUuZy4KICAgIHJlcXVlc3QtcmVzcG9uc2UgbGF0ZW5jaWVzKS4KLSAgIAorCiAgICBDb2xpbiBMb3cgIDEwLzYvOTMKICAgIFJpY2sgSm9uZXMgMjAwNC0wNi0xNSBleHRlbmQgdG8gdW5pdCBhbmQgdGVuIHVzZWNzCiAqLwpAQCAtMzM3NiwyMSArNDE4NSw1MCBAQAogCiAvKiNkZWZpbmUgSElTVF9URVNUKi8KIAotSElTVCAKLUhJU1RfbmV3KHZvaWQpewotICAgSElTVCBoOwotICAgaWYoKGggPSAoSElTVCkgbWFsbG9jKHNpemVvZihzdHJ1Y3QgaGlzdG9ncmFtX3N0cnVjdCkpKSA9PSBOVUxMKSB7Ci0gICAgIHBlcnJvcigiSElTVF9uZXcgLSBtYWxsb2MgZmFpbGVkIik7Ci0gICAgIGV4aXQoMSk7Ci0gICB9Ci0gICBISVNUX2NsZWFyKGgpOwotICAgcmV0dXJuIGg7CitISVNUCitISVNUX25ld19uKGludCBtYXhfb3V0c3RhbmRpbmcpIHsKKyAgSElTVCBoOworCisgIGlmKChoID0gKEhJU1QpIG1hbGxvYyhzaXplb2Yoc3RydWN0IGhpc3RvZ3JhbV9zdHJ1Y3QpKSkgPT0gTlVMTCkgeworICAgIHBlcnJvcigiSElTVF9uZXdfbiAtIGhpc3RvZ3JhbV9zdHJ1Y3QgbWFsbG9jIGZhaWxlZCIpOworICAgIGV4aXQoMSk7CisgIH0KKyAgSElTVF9jbGVhcihoKTsKKworICAvKiB3ZSBuZXZlciB3YW50IHRvIGhhdmUgYSBmdWxsIHF1ZXVlLCBzbyB3aWxsIHRyYWRlIGEgbGl0dGxlIHNwYWNlCisgICAgIGZvciB0aGF0LiBvbmUgZGF5IHdlIG1heSBzdGlsbCBoYXZlIHRvIGNoZWNrIGZvciBhIGZ1bGwgcXVldWUgKi8KKyAgaC0+bGltaXQgPSBtYXhfb3V0c3RhbmRpbmcgKyAxOworCisgIC8qIG5vdyBhbGxvY2F0ZSB0aGUgdGltZV9vbmVzIGJhc2VkIG9uIGgtPmxpbWl0ICovCisjaWZkZWYgSEFWRV9HRVRIUlRJTUUKKyAgaC0+dGltZV9vbmVzID0gKGhydGltZV90ICopIG1hbGxvYyhoLT5saW1pdCAqIHNpemVvZihocnRpbWVfdCkpOworI2VsaWYgSEFWRV9HRVRfSFJUCisgIGgtPnRpbWVfb25lcyA9IChocnRfdCAqKSBtYWxsb2MoaC0+bGltaXQgKiBzaXplb2YoaHJ0X3QpKTsKKyNlbGlmIGRlZmluZWQoV0lOMzIpCisgIGgtPnRpbWVfb25lcyA9IChMQVJHRV9JTlRFR0VSICopIG1hbGxvYyhoLT5saW1pdCAqCisJCQkJCSAgc2l6ZW9mKExBUkdFX0lOVEVHRVIpKTsKKyNlbHNlCisgIGgtPnRpbWVfb25lcyA9IChzdHJ1Y3QgdGltZXZhbCAqKSBtYWxsb2MoaC0+bGltaXQgKgorCQkJCQkgICBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsKKyNlbmRpZiAvKiBIQVZFX0dFVEhSVElNRSAqLworICBpZiAoaC0+dGltZV9vbmVzID09IE5VTEwpIHsKKyAgICBwZXJyb3IoIkhJU1RfbmV3X24gLSB0aW1lX29uZXMgbWFsbG9jIGZhaWxlZCIpOworICAgIGV4aXQoMSk7CisgIH0KKworICByZXR1cm4gaDsKIH0KIAotdm9pZCAKK0hJU1QKK0hJU1RfbmV3KHZvaWQpeworICByZXR1cm4gSElTVF9uZXdfbigwKTsKK30KKworCit2b2lkCiBISVNUX2NsZWFyKEhJU1QgaCl7CiAgICBpbnQgaTsKLSAgIGZvcihpID0gMDsgaSA8IDEwOyBpKyspeworICAgZm9yKGkgPSAwOyBpIDwgSElTVF9OVU1fT0ZfQlVDS0VUOyBpKyspewogICAgICAgaC0+dW5pdF91c2VjW2ldID0gMDsKICAgICAgIGgtPnRlbl91c2VjW2ldID0gMDsKICAgICAgIGgtPmh1bmRyZWRfdXNlY1tpXSA9IDA7CkBAIC0zNDAyLDM1ICs0MjQwLDc0IEBACiAgICB9CiAgICBoLT5yaWRpY3Vsb3VzID0gMDsKICAgIGgtPnRvdGFsID0gMDsKKyAgIGgtPnN1bSA9IDA7CisgICBoLT5zdW1zcXVhcmUgPSAwOworICAgaC0+aG1pbiA9IDA7CisgICBoLT5obWF4ID0gMDsKKyAgIGgtPmxpbWl0ID0gMDsKKyAgIGgtPmNvdW50ID0gMDsKKyAgIGgtPnByb2R1Y2VyID0gMDsKKyAgIGgtPmNvbnN1bWVyID0gMDsKKyAgIGgtPnRpbWVfb25lcyA9IE5VTEw7CiB9CiAKLXZvaWQgCit2b2lkCitISVNUX3B1cmdlKEhJU1QgaCkgeworICBoLT5jb3VudCA9IDA7CisgIGgtPnByb2R1Y2VyID0gMDsKKyAgaC0+Y29uc3VtZXIgPSAwOworfQorCit2b2lkCiBISVNUX2FkZChyZWdpc3RlciBISVNUIGgsIGludCB0aW1lX2RlbHRhKXsKLSAgIHJlZ2lzdGVyIGludCB2YWw7CisgICByZWdpc3RlciBmbG9hdCB2YWw7CisgICByZWdpc3RlciBpbnQgYmFzZSA9IEhJU1RfTlVNX09GX0JVQ0tFVCAvIDEwOworCisgICAvKiBjaGVjayBmb3IgPCAwIGFkZGVkIHZpYSBWTXdhcmUgRVNYIHBhdGNoZXMuICovCisKKyAgIC8qIGhvaXN0ZWQgdXAgdG8gdGhlIHRvcCBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIGNvdW50IGFueQorICAgICAgcmlkaWN1bG91cyB2YWx1ZXMgaW4gdGhlIGFjdHVhbCBzdGF0aXN0aWNzLiByaWdodD8gcmFqCisgICAgICAyMDExLTA3LTI4ICovCisgICBpZiAodGltZV9kZWx0YSA8IDApIHsKKyAgICAgaC0+cmlkaWN1bG91cysrOworICAgICByZXR1cm47CisgICB9CisKKyAgIGlmICghaC0+dG90YWwpCisgICAgICBoLT5obWluID0gaC0+aG1heCA9IHRpbWVfZGVsdGE7CiAgICBoLT50b3RhbCsrOwotICAgdmFsID0gdGltZV9kZWx0YTsKLSAgIGlmKHZhbCA8PSA5KSBoLT51bml0X3VzZWNbdmFsXSsrOworICAgaC0+c3VtICs9IHRpbWVfZGVsdGE7CisgICAvKiBhbSBJIGp1c3QgYmVpbmcgcGFyYW5vaWQgYWJvdXQgdGhlIG92ZXJoZWFkIG9mIHBvdygpIHdoZW4gd2UKKyAgICAgIGFyZW4ndCBhbGwgdGhhdCBpbnRlcmVzdGVkIGluIHRoZSBzdGF0aXN0aWNzIGRlcml2ZWQgZnJvbSBpdD8KKyAgICAgIHJhaiAyMDEwMDkxNCAqLworICAgaWYgKGtlZXBfc3RhdGlzdGljcykgeworICAgICBoLT5zdW1zcXVhcmUgKz0gcG93KHRpbWVfZGVsdGEsIDIpOworICAgfQorICAgaC0+aG1pbiA9ICgoaC0+aG1pbiA8IHRpbWVfZGVsdGEpID8gaC0+aG1pbiA6IHRpbWVfZGVsdGEpOworICAgaC0+aG1heCA9ICgoaC0+aG1heCA+IHRpbWVfZGVsdGEpID8gaC0+aG1heCA6IHRpbWVfZGVsdGEpOworICAgdmFsID0gKGZsb2F0KSB0aW1lX2RlbHRhOworICAgaWYodmFsIDwgMTApIGgtPnVuaXRfdXNlY1soaW50KSh2YWwgKiBiYXNlKV0rKzsKICAgIGVsc2UgewotICAgICB2YWwgPSB2YWwvMTA7Ci0gICAgIGlmKHZhbCA8PSA5KSBoLT50ZW5fdXNlY1t2YWxdKys7CisgICAgIHZhbCAvPSAxMDsKKyAgICAgaWYodmFsIDwgMTApIGgtPnRlbl91c2VjWyhpbnQpKHZhbCAqIGJhc2UpXSsrOwogICAgICBlbHNlIHsKLSAgICAgICB2YWwgPSB2YWwvMTA7Ci0gICAgICAgaWYodmFsIDw9IDkpIGgtPmh1bmRyZWRfdXNlY1t2YWxdKys7CisgICAgICAgdmFsIC89IDEwOworICAgICAgIGlmKHZhbCA8IDEwKSBoLT5odW5kcmVkX3VzZWNbKGludCkodmFsICogYmFzZSldKys7CiAgICAgICAgZWxzZSB7Ci0JIHZhbCA9IHZhbC8xMDsKLQkgaWYodmFsIDw9IDkpIGgtPnVuaXRfbXNlY1t2YWxdKys7CisJIHZhbCAvPSAxMDsKKwkgaWYodmFsIDwgMTApIGgtPnVuaXRfbXNlY1soaW50KSh2YWwgKiBiYXNlKV0rKzsKIAkgZWxzZSB7Ci0JICAgdmFsID0gdmFsLzEwOwotCSAgIGlmKHZhbCA8PSA5KSBoLT50ZW5fbXNlY1t2YWxdKys7CisJICAgdmFsIC89IDEwOworCSAgIGlmKHZhbCA8IDEwKSBoLT50ZW5fbXNlY1soaW50KSh2YWwgKiBiYXNlKV0rKzsKIAkgICBlbHNlIHsKLQkgICAgIHZhbCA9IHZhbC8xMDsKLQkgICAgIGlmKHZhbCA8PSA5KSBoLT5odW5kcmVkX21zZWNbdmFsXSsrOworCSAgICAgdmFsIC89IDEwOworCSAgICAgaWYodmFsIDwgMTApIGgtPmh1bmRyZWRfbXNlY1soaW50KSh2YWwgKiBiYXNlKV0rKzsKIAkgICAgIGVsc2UgewotICAgICAgICAgICAgICAgdmFsID0gdmFsLzEwOwotICAgICAgICAgICAgICAgaWYodmFsIDw9IDkpIGgtPnVuaXRfc2VjW3ZhbF0rKzsKKyAgICAgICAgICAgICAgIHZhbCAvPSAxMDsKKyAgICAgICAgICAgICAgIGlmKHZhbCA8IDEwKSBoLT51bml0X3NlY1soaW50KSh2YWwgKiBiYXNlKV0rKzsKICAgICAgICAgICAgICAgIGVsc2UgewotCQkgdmFsID0gdmFsLzEwOwotCQkgaWYodmFsIDw9IDkpIGgtPnRlbl9zZWNbdmFsXSsrOworCQkgdmFsIC89IDEwOworCQkgaWYodmFsIDwgMTApIGgtPnRlbl9zZWNbKGludCkodmFsICogYmFzZSldKys7CiAJCSBlbHNlIGgtPnJpZGljdWxvdXMrKzsKICAgICAgICAgICAgICAgIH0KIAkgICAgIH0KQEAgLTM0NDEsMjUgKzQzMTgsMzIgQEAKICAgIH0KIH0KIAotI2RlZmluZSBSQl9wcmludGYgcHJpbnRmCi0KLXZvaWQgCit2b2lkCiBvdXRwdXRfcm93KEZJTEUgKmZkLCBjaGFyICp0aXRsZSwgaW50ICpyb3cpewotICAgcmVnaXN0ZXIgaW50IGk7Ci0gICBSQl9wcmludGYoIiVzIiwgdGl0bGUpOwotICAgZm9yKGkgPSAwOyBpIDwgMTA7IGkrKykgUkJfcHJpbnRmKCI6ICU0ZCIsIHJvd1tpXSk7Ci0gICBSQl9wcmludGYoIlxuIik7CisgIHJlZ2lzdGVyIGludCBpOworICByZWdpc3RlciBpbnQgajsKKyAgcmVnaXN0ZXIgaW50IGJhc2UgPSAgSElTVF9OVU1fT0ZfQlVDS0VUIC8gMTA7CisgIHJlZ2lzdGVyIGludCBzdW07CisgIGZwcmludGYod2hlcmUsIiVzIiwgdGl0bGUpOworICBmb3IoaSA9IDA7IGkgPCAxMDsgaSsrKXsKKyAgICBzdW0gPSAwOworICAgIGZvciAoaiA9IGkgKiBiYXNlOyBqIDwgIChpICsgMSkgKiBiYXNlOyBqKyspIHsKKyAgICAgIHN1bSArPSByb3dbal07CisgICAgfQorICAgIGZwcmludGYod2hlcmUsIjogJTRkIiwgc3VtKTsKKyAgfQorICBmcHJpbnRmKHdoZXJlLCJcbiIpOwogfQogCiBpbnQKIHN1bV9yb3coaW50ICpyb3cpIHsKICAgaW50IHN1bSA9IDA7CiAgIGludCBpOwotICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgc3VtICs9IHJvd1tpXTsKKyAgZm9yIChpID0gMDsgaSA8IEhJU1RfTlVNX09GX0JVQ0tFVDsgaSsrKSBzdW0gKz0gcm93W2ldOwogICByZXR1cm4oc3VtKTsKIH0KIAotdm9pZCAKK3ZvaWQKIEhJU1RfcmVwb3J0KEhJU1QgaCl7CiAjaWZuZGVmIE9MRF9ISVNUT0dSQU0KICAgIG91dHB1dF9yb3coc3Rkb3V0LCAiVU5JVF9VU0VDICAgICAiLCBoLT51bml0X3VzZWMpOwpAQCAtMzQ3NSwxMSArNDM1OSwxMDUgQEAKICAgIG91dHB1dF9yb3coc3Rkb3V0LCAiSFVORFJFRF9NU0VDICAiLCBoLT5odW5kcmVkX21zZWMpOwogICAgb3V0cHV0X3JvdyhzdGRvdXQsICJVTklUX1NFQyAgICAgICIsIGgtPnVuaXRfc2VjKTsKICAgIG91dHB1dF9yb3coc3Rkb3V0LCAiVEVOX1NFQyAgICAgICAiLCBoLT50ZW5fc2VjKTsKLSAgIFJCX3ByaW50ZigiPjEwMF9TRUNTOiAlZFxuIiwgaC0+cmlkaWN1bG91cyk7Ci0gICBSQl9wcmludGYoIkhJU1RfVE9UQUw6ICAgICAgJWRcbiIsIGgtPnRvdGFsKTsKKyAgIGZwcmludGYod2hlcmUsIj4xMDBfU0VDUzogJWRcbiIsIGgtPnJpZGljdWxvdXMpOworICAgZnByaW50Zih3aGVyZSwiSElTVF9UT1RBTDogICAgICAlZFxuIiwgaC0+dG90YWwpOworICAgaWYgKGRlYnVnKSB7CisgICAgIGZwcmludGYod2hlcmUsCisJICAgICAic3VtICUiUFJJaTY0Iiwgc3Vtc3F1YXJlICVmLCBsaW1pdCAlZCBjb3VudCAlZFxuIiwKKwkgICAgIGgtPnN1bSwKKwkgICAgIGgtPnN1bXNxdWFyZSwKKwkgICAgIGgtPmxpbWl0LAorCSAgICAgaC0+Y291bnQpOworICAgfQogfQogCi0jZW5kaWYKKy8qIHNlYXJjaCBidWNrZXRzIGZvciBlYWNoIHVuaXQgKi8KK2ludAorSElTVF9zZWFyY2hfYnVja2V0KGludCAqdW5pdCwgaW50IG51bSwgaW50ICpsYXN0LCBpbnQgKmN1cnJlbnQsIGRvdWJsZSBzY2FsZSl7CisgIGludCBiYXNlID0gSElTVF9OVU1fT0ZfQlVDS0VUIC8gMTA7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgSElTVF9OVU1fT0ZfQlVDS0VUOyBpKyspeworICAgICpsYXN0ID0gKmN1cnJlbnQ7CisgICAgKmN1cnJlbnQgKz0gdW5pdFtpXTsKKyAgICBpZiAoKmN1cnJlbnQgPj0gbnVtKQorICAgICAgcmV0dXJuIChpbnQpKChpICsgKGRvdWJsZSkobnVtIC0gKmxhc3QpLygqY3VycmVudCAtICpsYXN0KSkgKiBzY2FsZS9iYXNlKTsKKyAgfQorICByZXR1cm4gMDsKK30KKworLyogZ2V0IHBlcmNlbnRpbGUgZnJvbSBoaXN0b2dyYW0gKi8KK2ludAorSElTVF9nZXRfcGVyY2VudGlsZShISVNUIGgsIGNvbnN0IGRvdWJsZSBwZXJjZW50aWxlKXsKKyAgZG91YmxlIHdpbl9rbHVkZ2UgPSBwZXJjZW50aWxlICogKGRvdWJsZSkgaC0+dG90YWw7CisgIGludCBudW0gPSAoaW50KSB3aW5fa2x1ZGdlOworICBpbnQgbGFzdCA9IDA7CisgIGludCBjdXJyZW50ID0gMDsKKyAgaW50IHJlc3VsdDsKKworICBpZiAoIW51bSkKKyAgICByZXR1cm4gMDsKKworICAvKiBzZWFyY2ggaW4gdW5pdCB1c2VjIHJhbmdlICovCisgIHJlc3VsdCA9IEhJU1Rfc2VhcmNoX2J1Y2tldChoLT51bml0X3VzZWMsIG51bSwgJmxhc3QsICZjdXJyZW50LCAxZTApOworICBpZiAocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgLyogc2VhcmNoIGluIHRlbiB1c2VjIHJhbmdlICovCisgIHJlc3VsdCA9IEhJU1Rfc2VhcmNoX2J1Y2tldChoLT50ZW5fdXNlYywgbnVtLCAmbGFzdCwgJmN1cnJlbnQsIDFlMSk7CisgIGlmIChyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKKworICAvKiBzZWFyY2ggaW4gdGVuIGh1bmRyZWQgdXNlYyByYW5nZSAqLworICByZXN1bHQgPSBISVNUX3NlYXJjaF9idWNrZXQoaC0+aHVuZHJlZF91c2VjLCBudW0sICZsYXN0LCAmY3VycmVudCwgMWUyKTsKKyAgaWYgKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIC8qIHNlYXJjaCBpbiB1bmljIG1zZWMgcmFuZ2UgKi8KKyAgcmVzdWx0ID0gSElTVF9zZWFyY2hfYnVja2V0KGgtPnVuaXRfbXNlYywgbnVtLCAmbGFzdCwgJmN1cnJlbnQsIDFlMyk7CisgIGlmIChyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKKworICAvKiBzZWFyY2ggaW4gdGVuIG1zZWMgcmFuZ2UgKi8KKyAgcmVzdWx0ID0gSElTVF9zZWFyY2hfYnVja2V0KGgtPnRlbl9tc2VjLCBudW0sICZsYXN0LCAmY3VycmVudCwgMWU0KTsKKyAgaWYgKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIC8qIHNlYXJjaCBpbiBodW5kcmVkIG1zZWMgcmFuZ2UgKi8KKyAgcmVzdWx0ID0gSElTVF9zZWFyY2hfYnVja2V0KGgtPmh1bmRyZWRfbXNlYywgbnVtLCAmbGFzdCwgJmN1cnJlbnQsIDFlNSk7CisgIGlmIChyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKKworICAvKiBzZWFyY2ggaW4gdW5pdCBzZWMgcmFuZ2UgKi8KKyAgcmVzdWx0ID0gSElTVF9zZWFyY2hfYnVja2V0KGgtPnVuaXRfc2VjLCBudW0sICZsYXN0LCAmY3VycmVudCwgMWU2KTsKKyAgaWYgKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIC8qIHNlYXJjaCBpbiB0ZW4gc2VjIHJhbmdlICovCisgIHJlc3VsdCA9IEhJU1Rfc2VhcmNoX2J1Y2tldChoLT50ZW5fc2VjLCBudW0sICZsYXN0LCAmY3VycmVudCwgMWU3KTsKKyAgaWYgKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIHJldHVybiAoaW50KSgxZTgpOworfQorCisKKy8qIGdldCBiYXNpYyBzdGF0cyAqLwordm9pZAorSElTVF9nZXRfc3RhdHMoSElTVCBoLCBpbnQgKm1pbiwgaW50ICptYXgsIGRvdWJsZSAqbWVhbiwgZG91YmxlICpzdGRkZXYpeworICAqbWluID0gaC0+aG1pbjsKKyAgKm1heCA9IGgtPmhtYXg7CisgIGlmIChoLT50b3RhbCl7CisgICAgKm1lYW4gPSAoZG91YmxlKWgtPnN1bSAvIChkb3VibGUpaC0+dG90YWw7CisgICAgKnN0ZGRldiA9IChoLT5zdW1zcXVhcmUgKiBoLT50b3RhbCAtIHBvdygoZG91YmxlKWgtPnN1bSwgMikpIC8KKyAgICAgIHBvdyhoLT50b3RhbCwgMik7CisgICAgKnN0ZGRldiA9IHNxcnQoKnN0ZGRldik7CisgIH0KKyAgZWxzZXsKKyAgICAqbWVhbiA9IDA7CisgICAgKnN0ZGRldiA9IDA7CisgIH0KK30KKwogCiAvKiB3aXRoIHRoZSBhZHZlbnQgb2Ygc2l0LWFuZC1zcGluIGludGVydmFscyBzdXBwb3J0LCB3ZSBtaWdodCBhcyB3ZWxsCiAgICBtYWtlIHRoZXNlIHRoaW5ncyBhdmFpbGFibGUgYWxsIHRoZSB0aW1lLCBub3QganVzdCBmb3IgZGVtbyBvcgpAQCAtMzUyNSw5ICs0NTAzLDkgQEAKIGludCBkZWx0YV9taWNybyhMQVJHRV9JTlRFR0VSICpiZWdpbiwgTEFSR0VfSU5URUdFUiAqZW5kKQogewogCUxBUkdFX0lOVEVHRVIgRGVsdGFUaW1lc3RhbXA7Ci0Jc3RhdGljIExBUkdFX0lOVEVHRVIgVGlja0h6ID0gezAsMH07CisJc3RhdGljIExBUkdFX0lOVEVHRVIgVGlja0h6ID0ge3swLDB9fTsKIAotCWlmIChUaWNrSHouUXVhZFBhcnQgPT0gMCkgCisJaWYgKFRpY2tIei5RdWFkUGFydCA9PSAwKQogCXsKIAkJUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmVGlja0h6KTsKIAl9CkBAIC0zNTM2LDkgKzQ1MTQsOSBAQAogCSAgZ29vZCBlbm91Z2g/IFNwZW5jZXI6IFllcywgdGhhdCBzaG91bGQgYmUgbW9yZSB0aGFuIGdvb2QKIAkgIGVub3VnaCBmb3IgaGlzdG9ncmFtIHN1cHBvcnQgKi8KIAotCURlbHRhVGltZXN0YW1wLlF1YWRQYXJ0ID0gKGVuZC0+UXVhZFBhcnQgLSBiZWdpbi0+UXVhZFBhcnQpICogCisJRGVsdGFUaW1lc3RhbXAuUXVhZFBhcnQgPSAoZW5kLT5RdWFkUGFydCAtIGJlZ2luLT5RdWFkUGFydCkgKgogCSAgMTAwMDAwMC9UaWNrSHouUXVhZFBhcnQ7Ci0JYXNzZXJ0KChEZWx0YVRpbWVzdGFtcC5IaWdoUGFydCA9PSAwKSAmJiAKKwlhc3NlcnQoKERlbHRhVGltZXN0YW1wLkhpZ2hQYXJ0ID09IDApICYmCiAJICAgICAgICgoaW50KURlbHRhVGltZXN0YW1wLkxvd1BhcnQgPj0gMCkpOwogCiAJcmV0dXJuIChpbnQpRGVsdGFUaW1lc3RhbXAuTG93UGFydDsKQEAgLTM1NzYsMjY1ICs0NTU0LDg0IEBACiB9CiAjZW5kaWYgLyogSEFWRV9HRVRIUlRJTUUgKi8KIAotDAotI2lmZGVmIFdBTlRfRExQSQotCi1pbnQKLXB1dF9jb250cm9sKGZkLCBsZW4sIHByaSwgYWNrKQotICAgICBpbnQgZmQsIGxlbiwgcHJpLCBhY2s7Ci17Ci0gIGludCBlcnJvcjsKLSAgaW50IGZsYWdzID0gMDsKLSAgZGxfZXJyb3JfYWNrX3QgKmVycl9hY2sgPSAoZGxfZXJyb3JfYWNrX3QgKiljb250cm9sX2RhdGE7Ci0KLSAgY29udHJvbF9tZXNzYWdlLmxlbiA9IGxlbjsKLQotICBpZiAoKGVycm9yID0gcHV0bXNnKGZkLCAmY29udHJvbF9tZXNzYWdlLCAwLCBwcmkpKSA8IDAgKSB7Ci0gICAgZnByaW50Zih3aGVyZSwicHV0X2NvbnRyb2w6IHB1dG1zZyBlcnJvciAlZFxuIixlcnJvcik7Ci0gICAgZmZsdXNoKHdoZXJlKTsKLSAgICByZXR1cm4oLTEpOwotICB9Ci0gIGlmICgoZXJyb3IgPSBnZXRtc2coZmQsICZjb250cm9sX21lc3NhZ2UsIDAsICZmbGFncykpIDwgMCkgewotICAgIGZwcmludGYod2hlcmUsInB1dF9jb250cm9sOiBnZXRzbWcgZXJyb3IgJWRcbiIsZXJyb3IpOwotICAgIGZmbHVzaCh3aGVyZSk7Ci0gICAgcmV0dXJuKC0xKTsKLSAgfQotICBpZiAoZXJyX2Fjay0+ZGxfcHJpbWl0aXZlICE9IGFjaykgewotICAgIGZwcmludGYod2hlcmUsInB1dF9jb250cm9sOiBhY2tub3dsZWRnZW1lbnQgZXJyb3Igd2FudGVkICV1IGdvdCAldSBcbiIsCi0gICAgICAgICAgICBhY2ssZXJyX2Fjay0+ZGxfcHJpbWl0aXZlKTsKLSAgICBpZiAoZXJyX2Fjay0+ZGxfcHJpbWl0aXZlID09IERMX0VSUk9SX0FDSykgewotICAgICAgZnByaW50Zih3aGVyZSwiICAgICAgICAgICAgIGRsX2Vycm9yX3ByaW1pdGl2ZTogJXVcbiIsCi0gICAgICAgICAgICAgIGVycl9hY2stPmRsX2Vycm9yX3ByaW1pdGl2ZSk7Ci0gICAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICAgICAgZGxfZXJybm86ICAgICAgICAgICAldVxuIiwKLSAgICAgICAgICAgICAgZXJyX2Fjay0+ZGxfZXJybm8pOwotICAgICAgZnByaW50Zih3aGVyZSwiICAgICAgICAgICAgIGRsX3VuaXhfZXJybm8gICAgICAgJXVcbiIsCi0gICAgICAgICAgICAgIGVycl9hY2stPmRsX3VuaXhfZXJybm8pOwotICAgIH0KLSAgICBmZmx1c2god2hlcmUpOwotICAgIHJldHVybigtMSk7Ci0gIH0KLQotICByZXR1cm4oMCk7Ci19Ci0gICAgCi1pbnQKLWRsX29wZW4oY2hhciBkZXZmaWxlW10sIGludCBwcGEpCi17Ci0gIGludCBmZDsKLSAgZGxfYXR0YWNoX3JlcV90ICphdHRhY2hfcmVxID0gKGRsX2F0dGFjaF9yZXFfdCAqKWNvbnRyb2xfZGF0YTsKLQotICBpZiAoKGZkID0gb3BlbihkZXZmaWxlLCBPX1JEV1IpKSA9PSAtMSkgewotICAgIGZwcmludGYod2hlcmUsIm5ldHBlcmY6IGRsX29wZW46IG9wZW4gb2YgJXMgZmFpbGVkLCBlcnJubyA9ICVkXG4iLAotICAgICAgICAgICAgZGV2ZmlsZSwKLSAgICAgICAgICAgIGVycm5vKTsKLSAgICByZXR1cm4oLTEpOwotICB9Ci0KLSAgYXR0YWNoX3JlcS0+ZGxfcHJpbWl0aXZlID0gRExfQVRUQUNIX1JFUTsKLSAgYXR0YWNoX3JlcS0+ZGxfcHBhID0gcHBhOwotCi0gIGlmIChwdXRfY29udHJvbChmZCwgc2l6ZW9mKGRsX2F0dGFjaF9yZXFfdCksIDAsIERMX09LX0FDSykgPCAwKSB7Ci0gICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJuZXRwZXJmOiBkbF9vcGVuOiBjb3VsZCBub3Qgc2VuZCBjb250cm9sIG1lc3NhZ2UsIGVycm5vID0gJWRcbiIsCi0gICAgICAgICAgICBlcnJubyk7Ci0gICAgcmV0dXJuKC0xKTsKLSAgfQotICByZXR1cm4oZmQpOwotfQotCi1pbnQKLWRsX2JpbmQoaW50IGZkLCBpbnQgc2FwLCBpbnQgbW9kZSwgY2hhciAqZGxzYXBfcHRyLCBpbnQgKmRsc2FwX2xlbikKLXsKLSAgZGxfYmluZF9yZXFfdCAqYmluZF9yZXEgPSAoZGxfYmluZF9yZXFfdCAqKWNvbnRyb2xfZGF0YTsKLSAgZGxfYmluZF9hY2tfdCAqYmluZF9hY2sgPSAoZGxfYmluZF9hY2tfdCAqKWNvbnRyb2xfZGF0YTsKLQotICBiaW5kX3JlcS0+ZGxfcHJpbWl0aXZlID0gRExfQklORF9SRVE7Ci0gIGJpbmRfcmVxLT5kbF9zYXAgPSBzYXA7Ci0gIGJpbmRfcmVxLT5kbF9tYXhfY29uaW5kID0gMTsKLSAgYmluZF9yZXEtPmRsX3NlcnZpY2VfbW9kZSA9IG1vZGU7Ci0gIGJpbmRfcmVxLT5kbF9jb25uX21nbXQgPSAwOwotICBiaW5kX3JlcS0+ZGxfeGlkdGVzdF9mbGcgPSAwOwotCi0gIGlmIChwdXRfY29udHJvbChmZCwgc2l6ZW9mKGRsX2JpbmRfcmVxX3QpLCAwLCBETF9CSU5EX0FDSykgPCAwKSB7Ci0gICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJuZXRwZXJmOiBkbF9iaW5kOiBjb3VsZCBub3Qgc2VuZCBjb250cm9sIG1lc3NhZ2UsIGVycm5vID0gJWRcbiIsCi0gICAgICAgICAgICBlcnJubyk7Ci0gICAgcmV0dXJuKC0xKTsKLSAgfQotCi0gIC8qIGF0IHRoaXMgcG9pbnQsIHRoZSBjb250cm9sX2RhdGEgcG9ydGlvbiBvZiB0aGUgY29udHJvbCBtZXNzYWdlICovCi0gIC8qIHN0cnVjdHVyZSBzaG91bGQgY29udGFpbiBhIERMX0JJTkRfQUNLLCB3aGljaCB3aWxsIGhhdmUgYSBmdWxsICovCi0gIC8qIERMU0FQIGluIGl0LiB3ZSB3YW50IHRvIGV4dHJhY3QgdGhpcyBhbmQgcGFzcyBpdCB1cCBzbyB0aGF0ICAgICovCi0gIC8qIGl0IGNhbiBiZSBwYXNzZWQgYXJvdW5kLiAqLwotICBpZiAoKmRsc2FwX2xlbiA+PSBiaW5kX2Fjay0+ZGxfYWRkcl9sZW5ndGgpIHsKLSAgICBiY29weSgoY2hhciAqKWJpbmRfYWNrK2JpbmRfYWNrLT5kbF9hZGRyX29mZnNldCwKLSAgICAgICAgICBkbHNhcF9wdHIsCi0gICAgICAgICAgYmluZF9hY2stPmRsX2FkZHJfbGVuZ3RoKTsKLSAgICAqZGxzYXBfbGVuID0gYmluZF9hY2stPmRsX2FkZHJfbGVuZ3RoOwotICAgIHJldHVybigwKTsKLSAgfQotICBlbHNlIHsgCi0gICAgcmV0dXJuICgtMSk7IAotICB9Ci19Ci0KLWludAotZGxfY29ubmVjdChpbnQgZmQsIHVuc2lnbmVkIGNoYXIgKnJlbW90ZV9hZGRyLCBpbnQgcmVtb3RlX2FkZHJfbGVuKQotewotICBkbF9jb25uZWN0X3JlcV90ICpjb25uZWN0aW9uX3JlcSA9IChkbF9jb25uZWN0X3JlcV90ICopY29udHJvbF9kYXRhOwotICBkbF9jb25uZWN0X2Nvbl90ICpjb25uZWN0aW9uX2NvbiA9IChkbF9jb25uZWN0X2Nvbl90ICopY29udHJvbF9kYXRhOwotICBzdHJ1Y3QgcG9sbGZkIHBpbmZvOwotCi0gIGludCBmbGFncyA9IDA7Ci0KLSAgLyogdGhpcyBpcyBoZXJlIG9uIHRoZSBvZmYgY2hhbmNlIHRoYXQgd2UgcmVhbGx5IHdhbnQgc29tZSBkYXRhICovCi0gIHVfbG9uZyBkYXRhX2FyZWFbNTEyXTsKLSAgc3RydWN0IHN0cmJ1ZiBkYXRhX21lc3NhZ2U7Ci0KLSAgaW50IGVycm9yOwotCi0gIGRhdGFfbWVzc2FnZS5tYXhsZW4gPSAyMDQ4OwotICBkYXRhX21lc3NhZ2UubGVuID0gMDsKLSAgZGF0YV9tZXNzYWdlLmJ1ZiA9IChjaGFyICopZGF0YV9hcmVhOwotCi0gIGNvbm5lY3Rpb25fcmVxLT5kbF9wcmltaXRpdmUgPSBETF9DT05ORUNUX1JFUTsKLSAgY29ubmVjdGlvbl9yZXEtPmRsX2Rlc3RfYWRkcl9sZW5ndGggPSByZW1vdGVfYWRkcl9sZW47Ci0gIGNvbm5lY3Rpb25fcmVxLT5kbF9kZXN0X2FkZHJfb2Zmc2V0ID0gc2l6ZW9mKGRsX2Nvbm5lY3RfcmVxX3QpOwotICBjb25uZWN0aW9uX3JlcS0+ZGxfcW9zX2xlbmd0aCA9IDA7Ci0gIGNvbm5lY3Rpb25fcmVxLT5kbF9xb3Nfb2Zmc2V0ID0gMDsKLSAgYmNvcHkgKHJlbW90ZV9hZGRyLCAKLSAgICAgICAgICh1bnNpZ25lZCBjaGFyICopY29udHJvbF9kYXRhICsgc2l6ZW9mKGRsX2Nvbm5lY3RfcmVxX3QpLAotICAgICAgICAgcmVtb3RlX2FkZHJfbGVuKTsKLQotICAvKiB3ZWxsLCBJIHdvdWxkIGNhbGwgdGhlIHB1dF9jb250cm9sIHJvdXRpbmUgaGVyZSwgYnV0IHRoZSBzZXF1ZW5jZSAqLwotICAvKiBvZiBjb25uZWN0aW9uIHN0dWZmIHdpdGggRExQSSBpcyBhIGJpdCBzY3Jld2V5IHdpdGggYWxsIHRoaXMgKi8KLSAgLyogbWVzc2FnZSBwYXNzaW5nIC0gVG90bywgSSBkb24ndCB0aGluayB3ZXJlIGluIEJlcmtlbGV5IGFueW1vcmUuICovCi0KLSAgY29udHJvbF9tZXNzYWdlLmxlbiA9IHNpemVvZihkbF9jb25uZWN0X3JlcV90KSArIHJlbW90ZV9hZGRyX2xlbjsKLSAgaWYgKChlcnJvciA9IHB1dG1zZyhmZCwmY29udHJvbF9tZXNzYWdlLDAsMCkpICE9MCkgewotICAgIGZwcmludGYod2hlcmUsImRsX2Nvbm5lY3Q6IHB1dG1zZyBmYWlsdXJlLCBlcnJubyA9ICVkLCBlcnJvciAweCV4IFxuIiwKLSAgICAgICAgICAgIGVycm5vLGVycm9yKTsKLSAgICBmZmx1c2god2hlcmUpOwotICAgIHJldHVybigtMSk7Ci0gIH07Ci0KLSAgcGluZm8uZmQgPSBmZDsKLSAgcGluZm8uZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSTsKLSAgcGluZm8ucmV2ZW50cyA9IDA7Ci0KLSAgaWYgKChlcnJvciA9IGdldG1zZyhmZCwmY29udHJvbF9tZXNzYWdlLCZkYXRhX21lc3NhZ2UsJmZsYWdzKSkgIT0gMCkgewotICAgIGZwcmludGYod2hlcmUsImRsX2Nvbm5lY3Q6IGdldG1zZyBmYWlsdXJlLCBlcnJubyA9ICVkLCBlcnJvciAweCV4IFxuIiwKLSAgICAgICAgICAgIGVycm5vLGVycm9yKTsKLSAgICBmZmx1c2god2hlcmUpOwotICAgIHJldHVybigtMSk7Ci0gIH0KLSAgd2hpbGUgKGNvbnRyb2xfZGF0YVswXSA9PSBETF9URVNUX0NPTikgewotICAgIC8qIGkgc3VwcG9zZSB3ZSBzcGluIHVudGlsIHdlIGdldCBhbiBlcnJvciwgb3IgYSBjb25uZWN0aW9uICovCi0gICAgLyogaW5kaWNhdGlvbiAqLwotICAgIGlmKChlcnJvciA9IGdldG1zZyhmZCwmY29udHJvbF9tZXNzYWdlLCZkYXRhX21lc3NhZ2UsJmZsYWdzKSkgIT0wKSB7Ci0gICAgICAgZnByaW50Zih3aGVyZSwiZGxfY29ubmVjdDogZ2V0bXNnIGZhaWx1cmUsIGVycm5vID0gJWQsIGVycm9yID0gMHgleFxuIiwKLSAgICAgICAgICAgICAgIGVycm5vLGVycm9yKTsKLSAgICAgICBmZmx1c2god2hlcmUpOwotICAgICAgIHJldHVybigtMSk7Ci0gICAgfQotICB9Ci0KLSAgLyogd2UgYXJlIG91dCAtIGl0IGVpdGhlciB3b3JrZWQgb3IgaXQgZGlkbid0IC0gd2hpY2ggd2FzIGl0PyAqLwotICBpZiAoY29udHJvbF9kYXRhWzBdID09IERMX0NPTk5FQ1RfQ09OKSB7Ci0gICAgcmV0dXJuKDApOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybigtMSk7Ci0gIH0KLX0KLQotaW50Ci1kbF9hY2NlcHQoZmQsIHJlbW90ZV9hZGRyLCByZW1vdGVfYWRkcl9sZW4pCi0gICAgIGludCBmZDsKLSAgICAgdW5zaWduZWQgY2hhciAqcmVtb3RlX2FkZHI7Ci0gICAgIGludCByZW1vdGVfYWRkcl9sZW47Ci17Ci0gIGRsX2Nvbm5lY3RfaW5kX3QgKmNvbm5lY3RfaW5kID0gKGRsX2Nvbm5lY3RfaW5kX3QgKiljb250cm9sX2RhdGE7Ci0gIGRsX2Nvbm5lY3RfcmVzX3QgKmNvbm5lY3RfcmVzID0gKGRsX2Nvbm5lY3RfcmVzX3QgKiljb250cm9sX2RhdGE7Ci0gIGludCB0bXBfY29yOwotICBpbnQgZmxhZ3MgPSAwOwotCi0gIC8qIGhhbmcgYXJvdW5kIGFuZCB3YWl0IGZvciBhIGNvbm5lY3Rpb24gcmVxdWVzdCAqLwotICBnZXRtc2coZmQsJmNvbnRyb2xfbWVzc2FnZSwwLCZmbGFncyk7Ci0gIHdoaWxlIChjb250cm9sX2RhdGFbMF0gIT0gRExfQ09OTkVDVF9JTkQpIHsKLSAgICBnZXRtc2coZmQsJmNvbnRyb2xfbWVzc2FnZSwwLCZmbGFncyk7Ci0gIH0KLQotICAvKiBub3cgcmVzcG9uZCB0byB0aGUgcmVxdWVzdC4gYXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gYmUgc3VyZSAqLwotICAvKiB0aGF0IHRoZSBjb25uZWN0aW9uIGNhbWUgZnJvbSB0aGUgY29ycmVjdCBzdGF0aW9uIGFkZHJlc3MsIGJ1dCAqLwotICAvKiB3aWxsIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGl0IGp1c3Qgbm93LiAqLwotCi0gIHRtcF9jb3IgPSBjb25uZWN0X2luZC0+ZGxfY29ycmVsYXRpb247Ci0KLSAgY29ubmVjdF9yZXMtPmRsX3ByaW1pdGl2ZSA9IERMX0NPTk5FQ1RfUkVTOwotICBjb25uZWN0X3Jlcy0+ZGxfY29ycmVsYXRpb24gPSB0bXBfY29yOwotICBjb25uZWN0X3Jlcy0+ZGxfcmVzcF90b2tlbiA9IDA7Ci0gIGNvbm5lY3RfcmVzLT5kbF9xb3NfbGVuZ3RoID0gMDsKLSAgY29ubmVjdF9yZXMtPmRsX3Fvc19vZmZzZXQgPSAwOwotICBjb25uZWN0X3Jlcy0+ZGxfZ3Jvd3RoID0gMDsKLQotICByZXR1cm4ocHV0X2NvbnRyb2woZmQsIHNpemVvZihkbF9jb25uZWN0X3Jlc190KSwgMCwgRExfT0tfQUNLKSk7Ci0KLX0KLQotaW50Ci1kbF9zZXRfd2luZG93KGZkLCB3aW5kb3cpCi0gICAgIGludCBmZCwgd2luZG93OwotewotICByZXR1cm4oMCk7Ci19Ci0KIHZvaWQKLWRsX3N0YXRzKGZkKQotICAgICBpbnQgZmQ7Ci17CitISVNUX3RpbWVzdGFtcF9zdGFydChISVNUIGgpIHsKKworICBpZiAoTlVMTCA9PSBoKSB7CisgICAgZnByaW50Zih3aGVyZSwiSElTVF90aW1lc3RhbXBfc3RhcnQgY2FsbGVkIHdpdGggTlVMTCBoaXN0b2dyYW1cbiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgtMSk7CisgIH0KKyAgaWYgKGgtPmNvdW50ID09IGgtPmxpbWl0KSB7CisgICAgZnByaW50Zih3aGVyZSwiSElTVF90aW1lc3RhbXBfc3RhcnQgY2FsbGVkIHdpdGggZnVsbCB0aW1lX29uZXNcbiIpOworICB9CisKKyAgSElTVF90aW1lc3RhbXAoJihoLT50aW1lX29uZXNbaC0+cHJvZHVjZXJdKSk7CisgIGgtPnByb2R1Y2VyICs9IDE7CisgIGgtPnByb2R1Y2VyICU9IGgtPmxpbWl0OworICBoLT5jb3VudCArPSAxOworCisKIH0KIAotaW50Ci1kbF9zZW5kX2Rpc2MoZmQpCi0gICAgIGludCBmZDsKLXsKKy8qIHNuYXAgYW4gZW5kaW5nIHRpbWVzdGFtcCBhbmQgYWRkIHRoZSBkZWx0YSB0byB0aGUgaGlzdG9ncmFtICovCit2b2lkCitISVNUX3RpbWVzdGFtcF9zdG9wX2FkZChISVNUIGgpIHsKKworICBpZiAoTlVMTCA9PSBoKSB7CisgICAgZnByaW50Zih3aGVyZSwiSElTVF90aW1lc3RhbXBfc3RvcCBjYWxsZWQgd2l0aCBOVUxMIGhpc3RvZ3JhbVxuIik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorCisgIGlmIChoLT5jb25zdW1lciA9PSBoLT5wcm9kdWNlcikgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICJISVNUX3RpbWVzdGFtcF9zdG9wIGNhbGxlZCB3aXRoIGVtcHR5IHRpbWVfb25lcyBjb25zdW1lciAlZCBwcm9kdWNlciAlZFxuIiwKKwkgICAgaC0+Y29uc3VtZXIsCisJICAgIGgtPnByb2R1Y2VyKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoLTEpOworICB9CisgIC8qIHRha2Ugb3VyIHN0b3BwaW5nIHRpbWVzdGFtcCAqLworICBISVNUX3RpbWVzdGFtcCgmKGgtPnRpbWVfdHdvKSk7CisKKyAgLyogbm93IGFkZCBpdCAqLworICBISVNUX2FkZChoLGRlbHRhX21pY3JvKCYoaC0+dGltZV9vbmVzW2gtPmNvbnN1bWVyXSksJihoLT50aW1lX3R3bykpKTsKKyAgaC0+Y29uc3VtZXIgKz0gMTsKKyAgaC0+Y29uc3VtZXIgJT0gaC0+bGltaXQ7CisgIGgtPmNvdW50IC09IDE7CisKIH0KIAotaW50Ci1kbF9yZWN2X2Rpc2MoZmQpCi0gICAgIGludCBmZDsKLXsKLX0KLSNlbmRpZiAvKiBXQU5UX0RMUEkqLworDAogCi0gLyogdGhlc2Ugcm91dGluZXMgZm9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGFyZSBjb3VydGVzeSBvZiBJQk0uIFRoZXkgKi8KLSAvKiBoYXZlIGJlZW4gbW9kaWZpZWQgc2xpZ2h0bHkgZm9yIG1vcmUgZ2VuZXJhbCB1c2FnZSBiZXlvbmQgVENQL1VEUCAqLwotIC8qIHRlc3RzLiByYWogMTEvOTQgSSB3b3VsZCBzdXNwZWN0IHRoYXQgdGhpcyBjb2RlIGNhcnJpZXMgYW4gSUJNICovCi0gLyogY29weXJpZ2h0IHRoYXQgaXMgbXVjaCB0aGUgc2FtZSBhcyB0aGF0IGZvciB0aGUgb3JpZ2luYWwgSFAgKi8KLSAvKiBuZXRwZXJmIGNvZGUgKi8KKy8qIHRoZXNlIHJvdXRpbmVzIGZvciBjb25maWRlbmNlIGludGVydmFscyBhcmUgY291cnRlc3kgb2YgSUJNLiBUaGV5CisgICBoYXZlIGJlZW4gbW9kaWZpZWQgc2xpZ2h0bHkgZm9yIG1vcmUgZ2VuZXJhbCB1c2FnZSBiZXlvbmQgVENQL1VEUAorICAgdGVzdHMuIHJhaiAxMS85NCBJIHdvdWxkIHN1c3BlY3QgdGhhdCB0aGlzIGNvZGUgY2FycmllcyBhbiBJQk0KKyAgIGNvcHlyaWdodCB0aGF0IGlzIG11Y2ggdGhlIHNhbWUgYXMgdGhhdCBmb3IgdGhlIG9yaWdpbmFsIEhQIG5ldHBlcmYKKyAgIGNvZGUgKi8KIGludCAgICAgY29uZmlkZW5jZV9pdGVyYXRpb25zOyAvKiBmb3IgaXRlcmF0aW9ucyAqLwogCi1kb3VibGUgIAorZG91YmxlCiAgIHJlc3VsdF9jb25maWQ9LTEwLjAsCiAgIGxvY19jcHVfY29uZmlkPS0xMC4wLAogICByZW1fY3B1X2NvbmZpZD0tMTAuMCwKIAotICBtZWFzdXJlZF9zdW1fcmVzdWx0PTAuMCwgCisgIG1lYXN1cmVkX3N1bV9yZXN1bHQ9MC4wLAogICBtZWFzdXJlZF9zcXVhcmVfc3VtX3Jlc3VsdD0wLjAsCi0gIG1lYXN1cmVkX21lYW5fcmVzdWx0PTAuMCwgCi0gIG1lYXN1cmVkX3Zhcl9yZXN1bHQ9MC4wLCAKKyAgbWVhc3VyZWRfbWVhbl9yZXN1bHQ9MC4wLAorICBtZWFzdXJlZF92YXJfcmVzdWx0PTAuMCwKIAogICBtZWFzdXJlZF9zdW1fbG9jYWxfY3B1PTAuMCwKICAgbWVhc3VyZWRfc3F1YXJlX3N1bV9sb2NhbF9jcHU9MC4wLAogICBtZWFzdXJlZF9tZWFuX2xvY2FsX2NwdT0wLjAsCi0gIG1lYXN1cmVkX3Zhcl9sb2NhbF9jcHU9MC4wLCAKKyAgbWVhc3VyZWRfdmFyX2xvY2FsX2NwdT0wLjAsCiAKICAgbWVhc3VyZWRfc3VtX3JlbW90ZV9jcHU9MC4wLAogICBtZWFzdXJlZF9zcXVhcmVfc3VtX3JlbW90ZV9jcHU9MC4wLAogICBtZWFzdXJlZF9tZWFuX3JlbW90ZV9jcHU9MC4wLAotICBtZWFzdXJlZF92YXJfcmVtb3RlX2NwdT0wLjAsIAotICAKKyAgbWVhc3VyZWRfdmFyX3JlbW90ZV9jcHU9MC4wLAorCiAgIG1lYXN1cmVkX3N1bV9sb2NhbF9zZXJ2aWNlX2RlbWFuZD0wLjAsCiAgIG1lYXN1cmVkX3NxdWFyZV9zdW1fbG9jYWxfc2VydmljZV9kZW1hbmQ9MC4wLAogICBtZWFzdXJlZF9tZWFuX2xvY2FsX3NlcnZpY2VfZGVtYW5kPTAuMCwKQEAgLTM4NTAsOCArNDY0Nyw4IEBACiAgIG1lYXN1cmVkX21lYW5fbG9jYWxfdGltZT0wLjAsCiAgIG1lYXN1cmVkX3Zhcl9sb2NhbF90aW1lPTAuMCwKIAotICBtZWFzdXJlZF9tZWFuX3JlbW90ZV90aW1lPTAuMCwgCi0gIAorICBtZWFzdXJlZF9tZWFuX3JlbW90ZV90aW1lPTAuMCwKKwogICBtZWFzdXJlZF9mYWlscywKICAgbWVhc3VyZWRfbG9jYWxfcmVzdWx0cywKICAgY29uZmlkZW5jZT0tMTAuMDsKQEAgLTM4NjIsNyArNDY1OSw3IEBACiAvKiAgICAgIENvbnN0YW50cyBmb3IgQ29uZmlkZW5jZSBJbnRlcnZhbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIAordm9pZAogaW5pdF9zdGF0KCkKIHsKICAgICAgICAgbWVhc3VyZWRfc3VtX3Jlc3VsdD0wLjA7CkBAIC0zOTAyLDEwICs0Njk5LDEwIEBACiAgICAgICAgIGNvbmZpZGVuY2U9LTEwLjA7CiB9CiAKLSAvKiB0aGlzIHJvdXRpbmUgZG9lcyBhIHNpbXBsZSB0YWJsZSBsb29rdXAgZm9yIHNvbWUgc3RhdGlzdGljYWwgKi8KLSAvKiBmdW5jdGlvbiB0aGF0IEkgd291bGQgcmVtZW1iZXIgaWYgSSBzdGF5ZWQgYXdha2UgaW4gbXkgcHJvYnN0YXRzICovCi0gLyogY2xhc3MuLi4gcmFqIDExLzk0ICovCi1kb3VibGUgCisvKiB0aGlzIHJvdXRpbmUgZG9lcyBhIHNpbXBsZSB0YWJsZSBsb29rdXAgZm9yIHNvbWUgc3RhdGlzdGljYWwKKyAgIGZ1bmN0aW9uIHRoYXQgSSB3b3VsZCByZW1lbWJlciBpZiBJIHN0YXllZCBhd2FrZSBpbiBteSBwcm9ic3RhdHMKKyAgIGNsYXNzLi4uIHJhaiAxMS85NCAqLworZG91YmxlCiBjb25maWQoaW50IGxldmVsLCBpbnQgZnJlZWRvbSkKIHsKIGRvdWJsZSAgdDk5WzM1XSx0OTVbMzVdOwpAQCAtMzk0MCw3ICs0NzM3LDcgQEAKICAgIHQ5NVsyOF09IDIuMDQ4OwogICAgdDk1WzI5XT0gMi4wNDU7CiAgICB0OTVbMzBdPSAyLjA0MjsKLSAgIAorCiAgICB0OTlbMV09NjMuNjU3OwogICAgdDk5WzJdPSA5LjkyNTsKICAgIHQ5OVszXT0gNS44NDE7CkBAIC0zOTcxLDcgKzQ3NjgsNyBAQAogICAgdDk5WzI4XT0gMi43NjM7CiAgICB0OTlbMjldPSAyLjc1NjsKICAgIHQ5OVszMF09IDIuNzUwOwotICAgCisKICAgIGlmKGxldmVsPT05NSl7CiAgICAgICAgIHJldHVybih0OTVbZnJlZWRvbV0pOwogICAgfSBlbHNlIGlmKGxldmVsPT05OSl7CkBAIC0zOTkzLDUxICs0NzkwLDQ5IEBACiAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAgICJjYWxjdWxhdGVfY29uZmlkZW5jZTogaXRyICAlZDsgdGltZSAlZjsgcmVzICAlZlxuIiwKKyAgICAgICAgICAgICJjYWxjdWxhdGVfY29uZmlkZW5jZTogaXRyICAlZDsgdGltZSAlZjsgcmVzICAlZlxuIgorICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY3B1ICVmOyByY3B1ICVmXG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzZG0gJWY7IHJzZG0gJWZcbiIsCiAgICAgICAgICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbnMsCiAgICAgICAgICAgICB0aW1lLAotICAgICAgICAgICAgcmVzdWx0KTsKLSAgICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY3B1ICVmOyByY3B1ICVmXG4iLAorICAgICAgICAgICAgcmVzdWx0LAogICAgICAgICAgICAgbG9jX2NwdSwKLSAgICAgICAgICAgIHJlbV9jcHUpOwotICAgIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzZG0gJWY7IHJzZG0gJWZcbiIsCisgICAgICAgICAgICByZW1fY3B1LAogICAgICAgICAgICAgbG9jX3NkLAogICAgICAgICAgICAgcmVtX3NkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKICAgLyogdGhlIHRlc3QgdGltZSAqLwotICBtZWFzdXJlZF9zdW1fbG9jYWxfdGltZSAgICAgICAgICAgICAgICs9IAorICBtZWFzdXJlZF9zdW1fbG9jYWxfdGltZSAgICAgICAgICAgICAgICs9CiAgICAgKGRvdWJsZSkgdGltZTsKLSAgbWVhc3VyZWRfc3F1YXJlX3N1bV9sb2NhbF90aW1lICAgICAgICArPSAKKyAgbWVhc3VyZWRfc3F1YXJlX3N1bV9sb2NhbF90aW1lICAgICAgICArPQogICAgIChkb3VibGUpIHRpbWUqdGltZTsKLSAgbWVhc3VyZWRfbWVhbl9sb2NhbF90aW1lICAgICAgICAgICAgICA9ICAKKyAgbWVhc3VyZWRfbWVhbl9sb2NhbF90aW1lICAgICAgICAgICAgICA9CiAgICAgKGRvdWJsZSkgbWVhc3VyZWRfc3VtX2xvY2FsX3RpbWUvY29uZmlkZW5jZV9pdGVyYXRpb25zOwotICBtZWFzdXJlZF92YXJfbG9jYWxfdGltZSAgICAgICAgICAgICAgID0gIAorICBtZWFzdXJlZF92YXJfbG9jYWxfdGltZSAgICAgICAgICAgICAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zcXVhcmVfc3VtX2xvY2FsX3RpbWUvY29uZmlkZW5jZV9pdGVyYXRpb25zCiAgICAgICAtbWVhc3VyZWRfbWVhbl9sb2NhbF90aW1lKm1lYXN1cmVkX21lYW5fbG9jYWxfdGltZTsKLSAgCisKICAgLyogdGhlIHRlc3QgcmVzdWx0ICovCi0gIG1lYXN1cmVkX3N1bV9yZXN1bHQgICAgICAgICAgICs9IAorICBtZWFzdXJlZF9zdW1fcmVzdWx0ICAgICAgICAgICArPQogICAgIChkb3VibGUpIHJlc3VsdDsKLSAgbWVhc3VyZWRfc3F1YXJlX3N1bV9yZXN1bHQgICAgKz0gCisgIG1lYXN1cmVkX3NxdWFyZV9zdW1fcmVzdWx0ICAgICs9CiAgICAgKGRvdWJsZSkgcmVzdWx0KnJlc3VsdDsKLSAgbWVhc3VyZWRfbWVhbl9yZXN1bHQgICAgICAgICAgPSAgCisgIG1lYXN1cmVkX21lYW5fcmVzdWx0ICAgICAgICAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zdW1fcmVzdWx0L2NvbmZpZGVuY2VfaXRlcmF0aW9uczsKLSAgbWVhc3VyZWRfdmFyX3Jlc3VsdCAgICAgICAgICAgPSAgCisgIG1lYXN1cmVkX3Zhcl9yZXN1bHQgICAgICAgICAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zcXVhcmVfc3VtX3Jlc3VsdC9jb25maWRlbmNlX2l0ZXJhdGlvbnMKICAgICAgIC1tZWFzdXJlZF9tZWFuX3Jlc3VsdCptZWFzdXJlZF9tZWFuX3Jlc3VsdDsKIAogICAvKiBsb2NhbCBjcHUgdXRpbGl6YXRpb24gKi8KLSAgbWVhc3VyZWRfc3VtX2xvY2FsX2NwdSAgICAgICAgKz0gCisgIG1lYXN1cmVkX3N1bV9sb2NhbF9jcHUgICAgICAgICs9CiAgICAgKGRvdWJsZSkgbG9jX2NwdTsKLSAgbWVhc3VyZWRfc3F1YXJlX3N1bV9sb2NhbF9jcHUgKz0gCisgIG1lYXN1cmVkX3NxdWFyZV9zdW1fbG9jYWxfY3B1ICs9CiAgICAgKGRvdWJsZSkgbG9jX2NwdSpsb2NfY3B1OwotICBtZWFzdXJlZF9tZWFuX2xvY2FsX2NwdSAgICAgICA9IAorICBtZWFzdXJlZF9tZWFuX2xvY2FsX2NwdSAgICAgICA9CiAgICAgKGRvdWJsZSkgbWVhc3VyZWRfc3VtX2xvY2FsX2NwdS9jb25maWRlbmNlX2l0ZXJhdGlvbnM7Ci0gIG1lYXN1cmVkX3Zhcl9sb2NhbF9jcHUgICAgICAgID0gCisgIG1lYXN1cmVkX3Zhcl9sb2NhbF9jcHUgICAgICAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zcXVhcmVfc3VtX2xvY2FsX2NwdS9jb25maWRlbmNlX2l0ZXJhdGlvbnMKICAgICAgIC1tZWFzdXJlZF9tZWFuX2xvY2FsX2NwdSptZWFzdXJlZF9tZWFuX2xvY2FsX2NwdTsKIApAQCAtNDA0Niw5ICs0ODQxLDkgQEAKICAgICAoZG91YmxlKSByZW1fY3B1OwogICBtZWFzdXJlZF9zcXVhcmVfc3VtX3JlbW90ZV9jcHUrPQogICAgIChkb3VibGUpIHJlbV9jcHUqcmVtX2NwdTsKLSAgbWVhc3VyZWRfbWVhbl9yZW1vdGVfY3B1ICAgICAgPSAKKyAgbWVhc3VyZWRfbWVhbl9yZW1vdGVfY3B1ICAgICAgPQogICAgIChkb3VibGUpIG1lYXN1cmVkX3N1bV9yZW1vdGVfY3B1L2NvbmZpZGVuY2VfaXRlcmF0aW9uczsKLSAgbWVhc3VyZWRfdmFyX3JlbW90ZV9jcHUgICAgICAgPSAKKyAgbWVhc3VyZWRfdmFyX3JlbW90ZV9jcHUgICAgICAgPQogICAgIChkb3VibGUpIG1lYXN1cmVkX3NxdWFyZV9zdW1fcmVtb3RlX2NwdS9jb25maWRlbmNlX2l0ZXJhdGlvbnMKICAgICAgIC1tZWFzdXJlZF9tZWFuX3JlbW90ZV9jcHUqbWVhc3VyZWRfbWVhbl9yZW1vdGVfY3B1OwogCkBAIC00MDU3LDkgKzQ4NTIsOSBAQAogICAgIChkb3VibGUpIGxvY19zZDsKICAgbWVhc3VyZWRfc3F1YXJlX3N1bV9sb2NhbF9zZXJ2aWNlX2RlbWFuZCs9CiAgICAgKGRvdWJsZSkgbG9jX3NkKmxvY19zZDsKLSAgbWVhc3VyZWRfbWVhbl9sb2NhbF9zZXJ2aWNlX2RlbWFuZCAgICA9IAorICBtZWFzdXJlZF9tZWFuX2xvY2FsX3NlcnZpY2VfZGVtYW5kICAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zdW1fbG9jYWxfc2VydmljZV9kZW1hbmQvY29uZmlkZW5jZV9pdGVyYXRpb25zOwotICBtZWFzdXJlZF92YXJfbG9jYWxfc2VydmljZV9kZW1hbmQgICAgID0gCisgIG1lYXN1cmVkX3Zhcl9sb2NhbF9zZXJ2aWNlX2RlbWFuZCAgICAgPQogICAgIChkb3VibGUpIG1lYXN1cmVkX3NxdWFyZV9zdW1fbG9jYWxfc2VydmljZV9kZW1hbmQvY29uZmlkZW5jZV9pdGVyYXRpb25zCiAgICAgICAtbWVhc3VyZWRfbWVhbl9sb2NhbF9zZXJ2aWNlX2RlbWFuZCptZWFzdXJlZF9tZWFuX2xvY2FsX3NlcnZpY2VfZGVtYW5kOwogCkBAIC00MDY4LDI2ICs0ODYzLDI2IEBACiAgICAgKGRvdWJsZSkgcmVtX3NkOwogICBtZWFzdXJlZF9zcXVhcmVfc3VtX3JlbW90ZV9zZXJ2aWNlX2RlbWFuZCs9CiAgICAgKGRvdWJsZSkgcmVtX3NkKnJlbV9zZDsKLSAgbWVhc3VyZWRfbWVhbl9yZW1vdGVfc2VydmljZV9kZW1hbmQgICA9IAorICBtZWFzdXJlZF9tZWFuX3JlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zdW1fcmVtb3RlX3NlcnZpY2VfZGVtYW5kL2NvbmZpZGVuY2VfaXRlcmF0aW9uczsKLSAgbWVhc3VyZWRfdmFyX3JlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgICA9IAorICBtZWFzdXJlZF92YXJfcmVtb3RlX3NlcnZpY2VfZGVtYW5kICAgID0KICAgICAoZG91YmxlKSBtZWFzdXJlZF9zcXVhcmVfc3VtX3JlbW90ZV9zZXJ2aWNlX2RlbWFuZC9jb25maWRlbmNlX2l0ZXJhdGlvbnMKICAgICAgIC1tZWFzdXJlZF9tZWFuX3JlbW90ZV9zZXJ2aWNlX2RlbWFuZCptZWFzdXJlZF9tZWFuX3JlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKIAotICBpZihjb25maWRlbmNlX2l0ZXJhdGlvbnM+MSl7IAotICAgICByZXN1bHRfY29uZmlkPSAoZG91YmxlKSBpbnRlcnZhbCAtIAotICAgICAgIDIuMCAqIGNvbmZpZChjb25maWRlbmNlX2xldmVsLGNvbmZpZGVuY2VfaXRlcmF0aW9ucy0xKSogCi0gICAgICAgICBzcXJ0KG1lYXN1cmVkX3Zhcl9yZXN1bHQvKGNvbmZpZGVuY2VfaXRlcmF0aW9ucy0xLjApKSAvIAorICBpZihjb25maWRlbmNlX2l0ZXJhdGlvbnM+MSl7CisgICAgIHJlc3VsdF9jb25maWQ9IChkb3VibGUpIGludGVydmFsIC0KKyAgICAgICAyLjAgKiBjb25maWQoY29uZmlkZW5jZV9sZXZlbCxjb25maWRlbmNlX2l0ZXJhdGlvbnMtMSkqCisgICAgICAgICBzcXJ0KG1lYXN1cmVkX3Zhcl9yZXN1bHQvKGNvbmZpZGVuY2VfaXRlcmF0aW9ucy0xLjApKSAvCiAgICAgICAgICAgIG1lYXN1cmVkX21lYW5fcmVzdWx0OwogCi0gICAgIGxvY19jcHVfY29uZmlkPSAoZG91YmxlKSBpbnRlcnZhbCAtIAotICAgICAgIDIuMCAqIGNvbmZpZChjb25maWRlbmNlX2xldmVsLGNvbmZpZGVuY2VfaXRlcmF0aW9ucy0xKSogCi0gICAgICAgICBzcXJ0KG1lYXN1cmVkX3Zhcl9sb2NhbF9jcHUvKGNvbmZpZGVuY2VfaXRlcmF0aW9ucy0xLjApKSAvIAorICAgICBsb2NfY3B1X2NvbmZpZD0gKGRvdWJsZSkgaW50ZXJ2YWwgLQorICAgICAgIDIuMCAqIGNvbmZpZChjb25maWRlbmNlX2xldmVsLGNvbmZpZGVuY2VfaXRlcmF0aW9ucy0xKSoKKyAgICAgICAgIHNxcnQobWVhc3VyZWRfdmFyX2xvY2FsX2NwdS8oY29uZmlkZW5jZV9pdGVyYXRpb25zLTEuMCkpIC8KICAgICAgICAgICAgbWVhc3VyZWRfbWVhbl9sb2NhbF9jcHU7CiAKLSAgICAgcmVtX2NwdV9jb25maWQ9IChkb3VibGUpIGludGVydmFsIC0gCisgICAgIHJlbV9jcHVfY29uZmlkPSAoZG91YmxlKSBpbnRlcnZhbCAtCiAgICAgICAgMi4wICogY29uZmlkKGNvbmZpZGVuY2VfbGV2ZWwsY29uZmlkZW5jZV9pdGVyYXRpb25zLTEpKgotICAgICAgICAgc3FydChtZWFzdXJlZF92YXJfcmVtb3RlX2NwdS8oY29uZmlkZW5jZV9pdGVyYXRpb25zLTEuMCkpIC8gCisgICAgICAgICBzcXJ0KG1lYXN1cmVkX3Zhcl9yZW1vdGVfY3B1Lyhjb25maWRlbmNlX2l0ZXJhdGlvbnMtMS4wKSkgLwogICAgICAgICAgICBtZWFzdXJlZF9tZWFuX3JlbW90ZV9jcHU7CiAKICAgICAgaWYoZGVidWcpewpAQCAtNDEyOSwzMyArNDkyNCw0MiBAQAogICAqcmVtb3RlX3NlcnZpY2VfZGVtYW5kICAgPSAoZmxvYXQpbWVhc3VyZWRfbWVhbl9yZW1vdGVfc2VydmljZV9kZW1hbmQ7CiB9CiAKLSAvKiBkaXNwbGF5X2NvbmZpZGVuY2UoKSBpcyBjYWxsZWQgd2hlbiB3ZSBjb3VsZCBub3QgYWNoaWV2ZSB0aGUgKi8KLSAvKiBkZXNpcmVjIGNvbmZpZGVuY2UgaW4gdGhlIHJlc3VsdHMuIGl0IHdpbGwgcHJpbnQgdGhlIGFjaGlldmVkICovCi0gLyogY29uZmlkZW5jZSB0byAid2hlcmUiIHJhaiAxMS85NCAqLworZG91YmxlCitnZXRfcmVzdWx0X2NvbmZpZCgpCit7CisgIHJldHVybiAoZG91YmxlKSAoMTAwLjAgKiAoaW50ZXJ2YWwgLSByZXN1bHRfY29uZmlkKSk7Cit9CisKK2RvdWJsZQorZ2V0X2xvY19jcHVfY29uZmlkKCkKK3sKKyAgcmV0dXJuIChkb3VibGUpICgxMDAuMCAqIChpbnRlcnZhbCAtIGxvY19jcHVfY29uZmlkKSk7Cit9CisKK2RvdWJsZQorZ2V0X3JlbV9jcHVfY29uZmlkKCkKK3sKKyAgcmV0dXJuIChkb3VibGUpICgxMDAuMCAqIChpbnRlcnZhbCAtIHJlbV9jcHVfY29uZmlkKSk7Cit9CisKKy8qIGRpc3BsYXlfY29uZmlkZW5jZSgpIGlzIGNhbGxlZCB3aGVuIHdlIGNvdWxkIG5vdCBhY2hpZXZlIHRoZQorICAgZGVzaXJlZCBjb25maWRlbmNlIGluIHRoZSByZXN1bHRzLiBpdCB3aWxsIHByaW50IHRoZSBhY2hpZXZlZAorICAgY29uZmlkZW5jZSB0byAid2hlcmUiIHJhaiAxMS85NCAqLwogdm9pZAogZGlzcGxheV9jb25maWRlbmNlKCkKIAogewogICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICIhISEgV0FSTklOR1xuIik7Ci0gIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgIiEhISBEZXNpcmVkIGNvbmZpZGVuY2Ugd2FzIG5vdCBhY2hpZXZlZCB3aXRoaW4gIik7Ci0gIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgInRoZSBzcGVjaWZpZWQgaXRlcmF0aW9ucy5cbiIpOwotICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICIhISEgVGhpcyBpbXBsaWVzIHRoYXQgdGhlcmUgd2FzIHZhcmlhYmlsaXR5IGluICIpOwotICBmcHJpbnRmKHdoZXJlLAotICAgICAgICAgICJ0aGUgdGVzdCBlbnZpcm9ubWVudCB0aGF0XG4iKTsKLSAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAiISEhIG11c3QgYmUgaW52ZXN0aWdhdGVkIGJlZm9yZSBnb2luZyBmdXJ0aGVyLlxuIik7Ci0gIGZwcmludGYod2hlcmUsCi0gICAgICAgICAgIiEhISBDb25maWRlbmNlIGludGVydmFsczogVGhyb3VnaHB1dCAgICAgIDogJTQuMWYlJVxuIiwKLSAgICAgICAgICAxMDAuMCAqIChpbnRlcnZhbCAtIHJlc3VsdF9jb25maWQpKTsKLSAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAiISEhICAgICAgICAgICAgICAgICAgICAgICBMb2NhbCBDUFUgdXRpbCAgOiAlNC4xZiUlXG4iLAotICAgICAgICAgIDEwMC4wICogKGludGVydmFsIC0gbG9jX2NwdV9jb25maWQpKTsKLSAgZnByaW50Zih3aGVyZSwKLSAgICAgICAgICAiISEhICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgQ1BVIHV0aWwgOiAlNC4xZiUlXG5cbiIsCisgICAgICAgICAgIiEhISBXQVJOSU5HXG4iCisgICAgICAgICAgIiEhISBEZXNpcmVkIGNvbmZpZGVuY2Ugd2FzIG5vdCBhY2hpZXZlZCB3aXRoaW4gIgorICAgICAgICAgICJ0aGUgc3BlY2lmaWVkIGl0ZXJhdGlvbnMuXG4iCisgICAgICAgICAgIiEhISBUaGlzIGltcGxpZXMgdGhhdCB0aGVyZSB3YXMgdmFyaWFiaWxpdHkgaW4gIgorICAgICAgICAgICJ0aGUgdGVzdCBlbnZpcm9ubWVudCB0aGF0XG4iCisgICAgICAgICAgIiEhISBtdXN0IGJlIGludmVzdGlnYXRlZCBiZWZvcmUgZ29pbmcgZnVydGhlci5cbiIKKyAgICAgICAgICAiISEhIENvbmZpZGVuY2UgaW50ZXJ2YWxzOiBUaHJvdWdocHV0ICAgICAgOiAlNC4zZiUlXG4iCisgICAgICAgICAgIiEhISAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwgQ1BVIHV0aWwgIDogJTQuM2YlJVxuIgorICAgICAgICAgICIhISEgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBDUFUgdXRpbCA6ICU0LjNmJSVcblxuIiwKKyAgICAgICAgICAxMDAuMCAqIChpbnRlcnZhbCAtIHJlc3VsdF9jb25maWQpLAorICAgICAgICAgIDEwMC4wICogKGludGVydmFsIC0gbG9jX2NwdV9jb25maWQpLAogICAgICAgICAgIDEwMC4wICogKGludGVydmFsIC0gcmVtX2NwdV9jb25maWQpKTsKIH0KLQpkaWZmIC0tZ2l0IGEvbmV0bGliLmggYi9zcmMvbmV0bGliLmgKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gbmV0bGliLmgKcmVuYW1lIHRvIHNyYy9uZXRsaWIuaAppbmRleCA1YjY5MDBlLi43OWYxMWM5IDEwMDY0NAotLS0gYS9uZXRsaWIuaAorKysgYi9zcmMvbmV0bGliLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTMtMjAwNSBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQorICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTMtMjAxMiBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQogKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKQEAgLTE4LDcgKzE4LDcgQEAKIAogI2RlZmluZSBQQURfVElNRSA0CiAvKiBsaWJyYXJ5IHJvdXRpbmUgc3BlY2lmYyBkZWZpbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSAgICAgICAgIE1BWFNQRUNEQVRBICAgICA2MiAgICAgIC8qIGhvdyBtYW55IGludHMgd29ydGggb2YgZGF0YSAgKi8KKyNkZWZpbmUgICAgICAgICBNQVhTUEVDREFUQSAgICAgMTYyICAgICAvKiBob3cgbWFueSBpbnRzIHdvcnRoIG9mIGRhdGEgICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2FuIHRlc3RzIHNlbmQuLi4gICAgICAgICAgICAqLwogI2RlZmluZSAgICAgICAgIE1BWFRJTUVTICAgICAgICA0ICAgICAgIC8qIGhvdyBtYW55IHRpbWVzIG1heSB3ZSBsb29wICAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0byBjYWxpYnJhdGUgICAgICAgICAgICAgICAgICovCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lICAgICAgICAgREVCVUdfT0sgICAgICAgICAgICAgICAgMwogI2RlZmluZSAgICAgICAgIE5PREVfSURFTlRJRlkgICAgICAgICAgIDQKICNkZWZpbmUgICAgICAgICBDUFVfQ0FMSUJSQVRFICAgICAgICAgICA1CisjZGVmaW5lICAgICAgICAgUEFTU1BIUkFTRSAgICAgICAgICAgICAgNgogCiAjZGVmaW5lICAgICAgICAgRE9fVENQX1NUUkVBTSAgICAgICAgICAgMTAKICNkZWZpbmUgICAgICAgICBUQ1BfU1RSRUFNX1JFU1BPTlNFICAgICAxMQpAQCAtMTU4LDYgKzE1OSwxMCBAQAogI2RlZmluZSAgICAgICAgIFRDUF9NQUVSVFNfUkVTUE9OU0UgICAgICAgICA5NQogI2RlZmluZSAgICAgICAgIFRDUF9NQUVSVFNfUkVTVUxUUyAgICAgICAgICA5NgogCisjZGVmaW5lICAgICAgICAgRE9fT01OSSAgICAgICAgICAgICAgICAgICAgIDk3CisjZGVmaW5lICAgICAgICAgT01OSV9SRVNQT05TRSAgICAgICAgICAgICAgIDk4CisjZGVmaW5lICAgICAgICAgT01OSV9SRVNVTFRTICAgICAgICAgICAgICAgIDk5CisKICNkZWZpbmUgICAgICAgICBET19MV1BTVFJfU1RSRUFNICAgICAgICAgICAxMDAKICNkZWZpbmUgICAgICAgICBMV1BTVFJfU1RSRUFNX1JFU1BPTlNFICAgICAxMTAKICNkZWZpbmUgICAgICAgICBMV1BTVFJfU1RSRUFNX1JFU1VMVFMgICAgICAxMjAKQEAgLTIyMSwxMSArMjI2LDE4IEBACiAjZGVmaW5lICAgICAgICAgU0RQX0NDX1JFU1BPTlNFICAgICAgICAgICAgNTUzCiAjZGVmaW5lICAgICAgICAgU0RQX0NDX1JFU1VMVFMgICAgICAgICAgICAgNTU0CiAKKyNkZWZpbmUgICAgICAgICBET19TWVNJTkZPICAgICAgICAgICAgICAgICA2MDAKKyNkZWZpbmUgICAgICAgICBTWVNJTkZPX1JFU1BPTlNFICAgICAgICAgICA2MDEKKwogI2lmIEhBVkVfSU5UVFlQRVNfSAogIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2Vsc2UKICMgaWYgSEFWRV9TVERJTlRfSAogIyAgaW5jbHVkZSA8c3RkaW50Lmg+CisjZWxzZQorIyBpZmRlZiBXSU4zMgorIyAgaW5jbHVkZSAibWlzc2luZ1xpbnR0eXBlcy5oIgorIyBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAKQEAgLTIzNCw2ICsyNDYsMjYgQEAKICAgUkVDVl9CVUZGRVIKIH07CiAKK2VudW0gbmV0cGVyZl9vdXRwdXRfbW9kZXMgeworICBIVU1BTiA9IDAsCisgIENTViwKKyAgS0VZVkFMLAorfTsKKworLyogc29tZSBkZWZpbmVzIGZvciBzZWN1cml0eSB0eXBlcywgcGVyaGFwcyB0aGVzZSB3b3VsZCBiZSBiZXR0ZXIKKyAgIGVsc2V3aGVyZSBidXQgZm9yIG5vdyBoZXJlIHRoZXkgYXJlICovCisKKyNkZWZpbmUgTlNFQ19VTktOT1dOICAtMQorI2RlZmluZSBOU0VDX0RJU0FCTEVEIDAKKyNkZWZpbmUgTlNFQ19QRVJNSVNTSVZFICAxCisjZGVmaW5lIE5TRUNfRU5GT1JDSU5HIDIKKworI2RlZmluZSBOU0VDX1RZUEVfVU5LTk9XTiAtMQorI2RlZmluZSBOU0VDX1RZUEVfU0VMSU5VWCAxCisKKyNkZWZpbmUgTkVURldfVU5LTk9XTiAtMQorI2RlZmluZSBORVRGV19JUFRBQkxFUyAxCisKICAvKiBzb21lIG9mIHRoZSBmaWVsZHMgaW4gdGhlc2Ugc3RydWN0dXJlcyBhcmUgZ29pbmcgdG8gYmUgZG91YmxlcyBhbmQgKi8KICAvKiBzdWNoLiBzbywgd2UgcHJvYmFibHkgd2FudCB0byBlbnN1cmUgdGhhdCB0aGV5IHdpbGwgc3RhcnQgb24gKi8KICAvKiAiZG91YmxlIiBib3VuZGFyaWVzLiB0aGlzIHdpbGwgYnJlYWsgY29tcGF0YWJpbGl0eSB0byBwcmUtMi4xICovCkBAIC0yNjIsNiArMjk0LDQxIEBACiAgIHN0cnVjdCByaW5nX2VsdCAqbmV4dDsgIC8qIG5leHQgZWxlbWVudCBpbiB0aGUgcmluZyAqLwogICBjaGFyICpidWZmZXJfYmFzZTsgICAgICAvKiBpbiBjYXNlIHdlIGhhdmUgdG8gZnJlZSBpdCBhdCBzb21lcG9pbnQgKi8KICAgY2hhciAqYnVmZmVyX3B0cjsgICAgICAgLyogdGhlIGFsaWduZWQgYW5kIG9mZnNldCBwb2ludGVyICovCisgIHZvaWQgKmNvbXBsZXRpb25fcHRyOyAgIC8qIGEgcG9pbnRlciB0byBpbmZvcm1hdGlvbiBmb3IgYXN5bmMgY29tcGxldGlvbiAqLworICAvKiB0aGVzZSBhcmUgZm9yIHNlbmRmaWxlIGNhbGxzIGFuZCBhdCBzb21lIHBvaW50IHdlIHNob3VsZCBjb25zaWRlcgorICAgICB1c2luZyBhIHVuaW9uIGJ1dCBpdCBpc24ndCByZWFsbHkgYWxsIHRoYXQgbXVjaCBleHRyYSBzcGFjZSAqLworICBzdHJ1Y3QgaW92ZWMgKmhkdHJsOyAgICAgICAgICAgIC8qIGEgcG9pbnRlciB0byBhIGhlYWRlci90cmFpbGVyCisJCQkJICAgICB0aGF0IHdlIGRvIG5vdCBpbml0aWFsbHkgdXNlIGFuZAorCQkJCSAgICAgc28gc2hvdWxkIGJlIHNldCB0byBOVUxMIHdoZW4gdGhlIAorCQkJCSAgICAgcmluZyBpcyBzZXR1cC4gKi8KKyAgb2ZmX3Qgb2Zmc2V0OyAgICAgICAgICAgICAgICAgICAvKiB0aGUgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZgorCQkJCSAgICAgdGhlIGZpbGUgZm9yIHRoaXMgc2VuZCAqLworICBzaXplX3QgbGVuZ3RoOyAgICAgICAgICAgICAgICAgIC8qIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VuZCAtCisJCQkJICAgICB0aGlzIGlzIHJlZHVuZGFudCB3aXRoIHRoZQorCQkJCSAgICAgc2VuZF9zaXplIHZhcmlhYmxlIGJ1dCBJIGRlY2lkZWQKKwkJCQkgICAgIHRvIGluY2x1ZGUgaXQgYW55d2F5ICovCisgIGludCBmaWxkZXM7ICAgICAgICAgICAgICAgICAgICAgLyogdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgc291cmNlCisJCQkJICAgICBmaWxlICovIAorICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBmbGFncyB0byBwYXNzIHRvIHNlbmRmaWxlKCkgLSAKKwkJCQkgICAgIHByZXNlbnRseSB1bnVzZWQgYW5kIHNob3VsZCBiZQorCQkJCSAgICAgc2V0IHRvIHplcm8gd2hlbiB0aGUgcmluZyBpcworCQkJCSAgICAgc2V0dXAuICovCit9OworCisvKiBldmVyeXRoaW5nIGluIHBlcmNlbnQgZXhjZXB0IG90aGVyd2lzZSBzdGF0ZWQgKi8KK3N0cnVjdCBjcHVfc3RhdHNfc3RydWN0IHsKKyAgZmxvYXQgY3B1X3V0aWw7ICAvKiBtYW5kYXRvcnkgPSAxMDAlIC0gJWlkbGUgKi8KKworICAvKiBUaGUgZm9sbG93aW5nIGFyZSBvcHRpb25hbCwgZGVwZW5kZW50IHVwb24gbmV0Y3B1IGltcGxlbWVudGF0aW9uICovCisgIGZsb2F0IGNwdV91c2VyOworICBmbG9hdCBjcHVfc3lzdGVtOworICBmbG9hdCBjcHVfaW93YWl0OworICBmbG9hdCBjcHVfaXJxOworICBmbG9hdCBjcHVfc3dpbnRyOworCisgIC8qIG1hbmRhdG9yeSAqLworICBmbG9hdCBwZWFrX2NwdV91dGlsOworICBpbnQgICBwZWFrX2NwdV9pZDsgIC8qIElEIG9mIG1vc3QgbG9hZGVkIENQVSAqLwogfTsKIAogLyogKyorIFNBRiAgU29ycnkgYWJvdXQgdGhlIGhhY2tzIHdpdGggZXJybm87IE5UIG1hZGUgbWUgZG8gaXQgOigKQEAgLTMzNiw4ICs0MDMsMTEgQEAKIAogI2lmbmRlZiBXSU4zMgogI2RlZmluZSBTT0NLRVRfRUlOVFIocmV0dXJuX3ZhbHVlKSAoZXJybm8gPT0gRUlOVFIpCisjZGVmaW5lIFNPQ0tFVF9FQ09OTlJFRlVTRUQocmV0dXJuX3ZhbHVlKSAoZXJybm8gPT0gRUNPTk5SRUZVU0VEKQogI2RlZmluZSBTT0NLRVRfRUFERFJJTlVTRShyZXR1cm5fdmFsdWUpIChlcnJubyA9PSBFQUREUklOVVNFKQogI2RlZmluZSBTT0NLRVRfRUFERFJOT1RBVkFJTChyZXR1cm5fdmFsdWUpIChlcnJubyA9PSBFQUREUk5PVEFWQUlMKQorI2RlZmluZSBTT0NLRVRfRUFHQUlOKHJldHVybl92YWx1ZSkgKGVycm5vID09IEVBR0FJTikKKyNkZWZpbmUgU09DS0VUX0VXT1VMREJMT0NLKHJldHVybl92YWx1ZSkgKGVycm5vID09IEVXT1VMREJMT0NLKQogCiAjZWxzZQogCkBAIC0zNDksMzcgKzQxOSwyMyBAQAogCQkoKChyZXR1cm5fdmFsdWUpID09IFNPQ0tFVF9FUlJPUikgJiYgXAogCSAgICAgKChlcnJubyA9PSBFSU5UUikgfHwgXAogCSAgICAgIChlcnJubyA9PSBXU0FFQ09OTkFCT1JURUQpIHx8IFwKLQkgICAgICAoZXJybm8gPT0gV1NBRUNPTk5SRVNFVCkgKSkKKwkgICAgICAoZXJybm8gPT0gV1NBRUNPTk5SRVNFVCkgfHwgXAorCSAgICAgIChlcnJubyA9PSBFTk9UU09DSykgKSkKICNkZWZpbmUgU09DS0VUX0VBRERSSU5VU0UocmV0dXJuX3ZhbHVlKSBcCiAJCSgoKHJldHVybl92YWx1ZSkgPT0gU09DS0VUX0VSUk9SKSAmJiBcCiAJICAgICAoKGVycm5vID09IFdTQUVBRERSSU5VU0UpICkpCiAjZGVmaW5lIFNPQ0tFVF9FQUREUk5PVEFWQUlMKHJldHVybl92YWx1ZSkgXAogCQkoKChyZXR1cm5fdmFsdWUpID09IFNPQ0tFVF9FUlJPUikgJiYgXAogCSAgICAgKChlcnJubyA9PSBXU0FFQUREUk5PVEFWQUlMKSApKQorLyogZ3Vlc3NpbmcgaGVyZSwgYW5kIGVxdWF0aW5nIGZvciBvbmUgdGhhdCBkb2Vzbid0IGV4aXN0ICovCisjZGVmaW5lIFNPQ0tFVF9FQUdBSU4ocmV0dXJuX3ZhbHVlKSBcCisoKChyZXR1cm5fdmFsdWUpID09IFNPQ0tFVF9FUlJPUikgJiYgKGVycm5vID09IFdTQUVXT1VMREJMT0NLKSkKKyNkZWZpbmUgU09DS0VUX0VXT1VMREJMT0NLKHJldHVybl92YWx1ZSkgXAorICAoKChyZXR1cm5fdmFsdWUpID09IFNPQ0tFVF9FUlJPUikgJiYgKGVycm5vID09IFdTQUVXT1VMREJMT0NLKSkKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TRU5ERklMRQogCi1zdHJ1Y3Qgc2VuZGZpbGVfcmluZ19lbHQgewotICBzdHJ1Y3Qgc2VuZGZpbGVfcmluZ19lbHQgKm5leHQ7IC8qIG5leHQgZWxlbWVudCBpbiB0aGUgcmluZyAqLwotICBpbnQgZmlsZGVzOyAgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIHNvdXJjZQotCQkJCSAgICAgZmlsZSAqLyAKLSAgb2ZmX3Qgb2Zmc2V0OyAgICAgICAgICAgICAgICAgICAvKiB0aGUgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZgotCQkJCSAgICAgdGhlIGZpbGUgZm9yIHRoaXMgc2VuZCAqLwotICBzaXplX3QgbGVuZ3RoOyAgICAgICAgICAgICAgICAgIC8qIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VuZCAtCi0JCQkJICAgICB0aGlzIGlzIHJlZHVuZGFudCB3aXRoIHRoZQotCQkJCSAgICAgc2VuZF9zaXplIHZhcmlhYmxlIGJ1dCBJIGRlY2lkZWQKLQkJCQkgICAgIHRvIGluY2x1ZGUgaXQgYW55d2F5ICovCi0gIHN0cnVjdCBpb3ZlYyAqaGR0cmw7ICAgICAgICAgICAgLyogYSBwb2ludGVyIHRvIGEgaGVhZGVyL3RyYWlsZXIKLQkJCQkgICAgIHRoYXQgd2UgZG8gbm90IGluaXRpYWxseSB1c2UgYW5kCi0JCQkJICAgICBzbyBzaG91bGQgYmUgc2V0IHRvIE5VTEwgd2hlbiB0aGUgCi0JCQkJICAgICByaW5nIGlzIHNldHVwLiAqLwotICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBmbGFncyB0byBwYXNzIHRvIHNlbmRmaWxlKCkgLSAKLQkJCQkgICAgIHByZXNlbnRseSB1bnVzZWQgYW5kIHNob3VsZCBiZQotCQkJCSAgICAgc2V0IHRvIHplcm8gd2hlbiB0aGUgcmluZyBpcwotCQkJCSAgICAgc2V0dXAuICovCi19OwotCiAjZW5kaWYgLyogSEFWRV9TRU5ERklMRSAqLwogCiAgLyogdGhlIGRpZmVyZW50IGNvZGVzIHRvIGRlbm90ZSB0aGUgdHlwZSBvZiBDUFUgdXRpbGl6YXRpb24gKi8KQEAgLTQyNywxNSArNDgzLDIyIEBACiBleHRlcm4gY2hhciAqbG9jYWxfZGF0YV9hZGRyZXNzOwogZXh0ZXJuIGNoYXIgKnJlbW90ZV9kYXRhX2FkZHJlc3M7CiAKK2V4dGVybiBjaGFyICpsb2NhbF9zeXNuYW1lLCAqcmVtb3RlX3N5c25hbWU7CitleHRlcm4gY2hhciAqbG9jYWxfcmVsZWFzZSwgKnJlbW90ZV9yZWxlYXNlOworZXh0ZXJuIGNoYXIgKmxvY2FsX3ZlcnNpb24sICpyZW1vdGVfdmVyc2lvbjsKK2V4dGVybiBjaGFyICpsb2NhbF9tYWNoaW5lLCAqcmVtb3RlX21hY2hpbmU7CisKIGV4dGVybiBpbnQgbG9jYWxfZGF0YV9mYW1pbHk7CiBleHRlcm4gaW50IHJlbW90ZV9kYXRhX2ZhbWlseTsKK2V4dGVybiBpbnQgY29udHJvbF9mYW1pbHk7CiAKIGV4dGVybiAgdW5pb24gbmV0cGVyZl9yZXF1ZXN0X3N0cnVjdCBuZXRwZXJmX3JlcXVlc3Q7CiBleHRlcm4gIHVuaW9uIG5ldHBlcmZfcmVzcG9uc2Vfc3RydWN0IG5ldHBlcmZfcmVzcG9uc2U7CiAKLWV4dGVybiAgZmxvYXQgICAgbGliX2xvY2FsX2NwdV91dGlsOwotZXh0ZXJuICBmbG9hdCAgICBsaWJfZWxhcHNlZDsKLWV4dGVybiAgZmxvYXQgICAgbGliX2xvY2FsX21heHJhdGU7CitleHRlcm4gc3RydWN0IGNwdV9zdGF0c19zdHJ1Y3QgbGliX2xvY2FsX2NwdV9zdGF0czsKK2V4dGVybiBzdHJ1Y3QgY3B1X3N0YXRzX3N0cnVjdCBsaWJfcmVtb3RlX2NwdV9zdGF0czsKK2V4dGVybiBmbG9hdCAgICAgICAgICAgICAgICAgICBsaWJfZWxhcHNlZDsKK2V4dGVybiBmbG9hdCAgICAgICAgICAgICAgICAgICBsaWJfbG9jYWxfbWF4cmF0ZTsKIAogZXh0ZXJuICBjaGFyICAgIGxpYmZtdDsKIApAQCAtNDQ3LDEwICs1MTAsMzAgQEAKIGV4dGVybiAgRklMRSAgICAqd2hlcmU7CiBleHRlcm4gIGludCAgICAgbG9vcHNfcGVyX21zZWM7CiBleHRlcm4gIGZsb2F0ICAgbGliX2xvY2FsX3Blcl9jcHVfdXRpbFtdOworCitleHRlcm4gZW51bSBuZXRwZXJmX291dHB1dF9tb2RlcyBuZXRwZXJmX291dHB1dF9tb2RlOworCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykgfHwgZGVmaW5lZChXQU5UX0RFTU8pCisKK2V4dGVybiBpbnQgICAgZGVtb19tb2RlOworZXh0ZXJuIGRvdWJsZSBkZW1vX2ludGVydmFsOworZXh0ZXJuIGRvdWJsZSBkZW1vX3VuaXRzOworZXh0ZXJuIGRvdWJsZSB1bml0c190aGlzX3RpY2s7CisjaWYgZGVmaW5lZChXQU5UX0RFTU8pCitleHRlcm4gdm9pZCAgIGRlbW9fcnJfaW50ZXJ2YWwodWludDMyX3QgdW5pdHMpOworZXh0ZXJuIHZvaWQgICBkZW1vX3JyX3NldHVwKHVpbnQzMl90IHVuaXRzKTsKK2V4dGVybiB2b2lkICAgZGVtb19zdHJlYW1faW50ZXJ2YWwodWludDMyX3QgdW5pdHMpOworZXh0ZXJuIHZvaWQgICBkZW1vX2ludGVydmFsX3RpY2sodWludDMyX3QgdW5pdHMpOworZXh0ZXJuIHZvaWQgICBkZW1vX2ludGVydmFsX2ZpbmFsKCk7CisjZW5kaWYKKyNlbmRpZiAKICAgCiBleHRlcm4gIHZvaWQgICAgbmV0bGliX2luaXQoKTsKIGV4dGVybiAgaW50ICAgICBuZXRsaWJfZ2V0X3BhZ2Vfc2l6ZSgpOwogZXh0ZXJuICB2b2lkICAgIGluc3RhbGxfc2lnbmFsX2NhdGNoZXJzKCk7CitleHRlcm4gIHN0cnVjdCBhZGRyaW5mbyAqcmVzb2x2ZV9ob3N0KGNoYXIgaG9zdG5hbWVbXSwgCisJCQkJICAgICAgY2hhciBwb3J0W10sIAorCQkJCSAgICAgIGludCBhZik7CiBleHRlcm4gIHZvaWQgICAgZXN0YWJsaXNoX2NvbnRyb2woY2hhciBob3N0bmFtZVtdLCAKIAkJCQkgIGNoYXIgcG9ydFtdLCAKIAkJCQkgIGludCBhZiwKQEAgLTQ2Miw3ICs1NDUsMTMgQEAKIGV4dGVybiAgdm9pZCAgICBzZW5kX3JlcXVlc3QoKTsKIGV4dGVybiAgdm9pZCAgICByZWN2X3Jlc3BvbnNlKCk7CiBleHRlcm4gIHZvaWQgICAgc2VuZF9yZXNwb25zZSgpOwotZXh0ZXJuICB2b2lkICAgIHJlY3ZfcmVxdWVzdCgpOworZXh0ZXJuICBpbnQgICAgIHJlY3ZfcmVxdWVzdCgpOworZXh0ZXJuICBpbnQgICAgIHJlY3ZfcmVxdWVzdF90aW1lZF9uKGludCBuLCBpbnQgc2Vjb25kcyk7CitleHRlcm4gIHZvaWQgICAgc2VuZF9yZXF1ZXN0X24oaW50IG4pOyAgLyogY29udmVydCBvbmx5IHRoZSBmaXJzdCBOIGludHMgKi8KK2V4dGVybiAgdm9pZCAgICByZWN2X3Jlc3BvbnNlX24oaW50IG4pOyAvKiBvZiB0aGUgdGVzdC1zcGVjaWZpYyBkYXRhIHZpYSAqLworZXh0ZXJuICB2b2lkICAgIHNlbmRfcmVzcG9uc2VfbihpbnQgbik7IC8qIGh0b25sL250b25sIGFzIHJlcXVpcmVkICovCitleHRlcm4gIGludCAgICAgcmVjdl9yZXF1ZXN0X24oaW50IG4pOworZXh0ZXJuICB2b2lkICAgIGZpeHVwX3JlcXVlc3RfbihpbnQgbik7CiBleHRlcm4gIHZvaWQgICAgZHVtcF9yZXF1ZXN0KCk7CiBleHRlcm4gIHZvaWQgICAgZHVtcF9hZGRyaW5mbyhGSUxFICpkdW1wbG9jLCBzdHJ1Y3QgYWRkcmluZm8gKmluZm8sCiAJCQkgICAgICBjaGFyICpob3N0LCBjaGFyICpwb3J0LCBpbnQgZmFtaWx5KTsKQEAgLTQ4MywxOSArNTcyLDMwIEBACiAJCQkgIGZsb2F0ICpyZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJICBmbG9hdCAqbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCQkgIGZsb2F0ICpyZW1vdGVfc2VydmljZV9kZW1hbmQpOworZXh0ZXJuICBkb3VibGUgIGdldF9yZXN1bHRfY29uZmlkKCk7CitleHRlcm4gIGRvdWJsZSAgZ2V0X2xvY19jcHVfY29uZmlkKCk7CitleHRlcm4gIGRvdWJsZSAgZ2V0X3JlbV9jcHVfY29uZmlkKCk7CiBleHRlcm4gIHZvaWQgICAgZGlzcGxheV9jb25maWRlbmNlKCk7CitleHRlcm4gIHZvaWQgICAgZ2V0X3NvY2tfYnVmZmVyKFNPQ0tFVCBzZCwKKwkJCQllbnVtIHNvY2tfYnVmZmVyIHdoaWNoLAorCQkJCWludCAqZWZmZWN0aXZlX3NpemVwKTsKIGV4dGVybiAgdm9pZCAgICBzZXRfc29ja19idWZmZXIoU09DS0VUIHNkLAogCQkJCWVudW0gc29ja19idWZmZXIgd2hpY2gsCiAJCQkJaW50IHJlcXVlc3RlZF9zaXplLAogCQkJCWludCAqZWZmZWN0aXZlX3NpemVwKTsKIGV4dGVybiAgY2hhciAgICpmb3JtYXRfdW5pdHMoKTsKIAorZXh0ZXJuICB2b2lkICAgIGdldF9yZW1vdGVfc3lzdGVtX2luZm8oKTsKKwogZXh0ZXJuICBjaGFyICAgICppbmV0X2Z0b3MoaW50IGZhbWlseSk7CiBleHRlcm4gIGNoYXIgICAgKmluZXRfdHRvcyhpbnQgdHlwZSk7CiBleHRlcm4gIGNoYXIgICAgKmluZXRfcHRvcyhpbnQgcHJvdG9jb2wpOworZXh0ZXJuICBjaGFyICAgICpuc2VjX2VuYWJsZWRfdG9fc3RyKGludCBlbmFibGVkKTsKK2V4dGVybiAgY2hhciAgICAqbnNlY190eXBlX3RvX3N0cihpbnQgdHlwZSk7CiBleHRlcm4gIGRvdWJsZSAgbnRvaGQoZG91YmxlIG5ldF9kb3VibGUpOwogZXh0ZXJuICBkb3VibGUgIGh0b25kKGRvdWJsZSBob3N0X2RvdWJsZSk7CiBleHRlcm4gIGludCAgICAgaW5ldF9udG9uKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIGludCBjbnQpOworZXh0ZXJuICB2b2lkICAgIHJhbmRvbV9pcF9hZGRyZXNzKHN0cnVjdCBhZGRyaW5mbyAqcmVzLCBpbnQgbWFza19sZW4pOwogZXh0ZXJuICB2b2lkICAgIGxpYm1haW4oKTsKIGV4dGVybiAgZG91YmxlICBjYWxjX3RocnVwdXQoZG91YmxlIHVuaXRzX3JlY2VpdmVkKTsKIGV4dGVybiAgZG91YmxlICBjYWxjX3RocnVwdXRfaW50ZXJ2YWwoZG91YmxlIHVuaXRzX3JlY2VpdmVkLGRvdWJsZSBlbGFwc2VkKTsKQEAgLTUwNSw3ICs2MDUsMTggQEAKIGV4dGVybiAgZmxvYXQgICBjYWxpYnJhdGVfcmVtb3RlX2NwdSgpOwogZXh0ZXJuICB2b2lkICAgIGJpbmRfdG9fc3BlY2lmaWNfcHJvY2Vzc29yKGludCBwcm9jZXNzb3JfYWZmaW5pdHksaW50IHVzZV9jcHVfbWFwKTsKIGV4dGVybiBpbnQgICAgICBzZXRfbm9uYmxvY2sgKFNPQ0tFVCBzb2NrKTsKLQorZXh0ZXJuIGNoYXIgICAgICpmaW5kX2VncmVzc19pbnRlcmZhY2Uoc3RydWN0IHNvY2thZGRyICpzb3VyY2UsIHN0cnVjdCBzb2NrYWRkciAqZGVzdCk7CitleHRlcm4gY2hhciAgICAgKmZpbmRfaW50ZXJmYWNlX3Nsb3QoY2hhciAqaW50ZXJmYWNlX25hbWUpOworZXh0ZXJuIHZvaWQgICAgIGZpbmRfaW50ZXJmYWNlX2lkcyhjaGFyICppbnRlcmZhY2VfbmFtZSwgaW50ICp2ZW5kb3IsIGludCAqZGV2aWNlLCBpbnQgKnN1Yl92ZW5kLCBpbnQgKnN1Yl9kZXYpOworZXh0ZXJuIHZvaWQgICAgIGZpbmRfZHJpdmVyX2luZm8oY2hhciAqaWZuYW1lLCBjaGFyICpkcml2ZXIsIGNoYXIgKnZlcnNpb24sIGNoYXIgKmZpcm13YXJlLCBjaGFyICpidXMsIGludCBsZW4pOworZXh0ZXJuIHZvaWQgICAgIGZpbmRfc3lzdGVtX2luZm8oY2hhciAqKnN5c3RlbV9tb2RlbCwgY2hhciAqKmNwdV9tb2RlbCwgaW50ICpjcHVfZnJlcXVlbmN5KTsKK2V4dGVybiBpbnQgICAgICBISVNUX2dldF9wZXJjZW50aWxlKCk7CitleHRlcm4gdm9pZCAgICAgSElTVF9nZXRfc3RhdHMoKTsKK2V4dGVybiB2b2lkICAgICBISVNUX3B1cmdlKCk7CitleHRlcm4gdm9pZCAgICAgZmluZF9zZWN1cml0eV9pbmZvKGludCAqZW5hYmxlZCwgaW50ICp0eXBlLCBjaGFyICoqc3BlY2lmaWMpOworZXh0ZXJuIHZvaWQgICAgIGRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CitleHRlcm4gdm9pZCAgICAgZGVtb19yZXNldCgpOworZXh0ZXJuIHZvaWQgICAgIGRlbW9fc3RyZWFtX3NldHVwKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpOwogI2lmbmRlZiBXSU4zMgogCiAvKiBXSU4zMiByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgZmlsZSBzZXRzIHRvIHNlbGVjdCBiZQpAQCAtNTE5LDEwICs2MzAsMTEgQEAKIAkJCQkgICAgZmxvYXQgZWxhcHNlZF90aW1lLAogCQkJCSAgICBmbG9hdCBjcHVfdXRpbGl6YXRpb24sCiAJCQkJICAgIGludCBudW1fY3B1cyk7Ci1leHRlcm4gIGZsb2F0CWNhbGNfc2VydmljZV9kZW1hbmRfdHJhbnMoZG91YmxlIHVuaXRzX3NlbnQsCi0JCQkJCSAgZmxvYXQgZWxhcHNlZF90aW1lLAotCQkJCQkgIGZsb2F0IGNwdV91dGlsaXphdGlvbiwKLQkJCQkJICBpbnQgbnVtX2NwdXMpOworLyogdGhpcyBvbmUgZGV0ZXJtaW5lcyB0aGUgdW5pdCBkaXZpc29yIGJhc2VkIG9uIGxpYmZtdCAqLworZXh0ZXJuICBmbG9hdAljYWxjX3NlcnZpY2VfZGVtYW5kX2ZtdChkb3VibGUgdW5pdHNfc2VudCwKKwkJCQkJZmxvYXQgZWxhcHNlZF90aW1lLAorCQkJCQlmbG9hdCBjcHVfdXRpbGl6YXRpb24sCisJCQkJCWludCBudW1fY3B1cyk7CiAjaWYgZGVmaW5lZChfX2hwdXgpCiBleHRlcm4gIHZvaWQgICAgY2F0Y2hlcihpbnQsIHNpZ2luZm9fdCAqLHZvaWQgKik7CiAjZWxzZQpAQCAtNTM3LDkgKzY0OSwxMiBAQAogI2lmZGVmIEhBVkVfSUNTQ19FWFMKIGV4dGVybiAgc3RydWN0IHJpbmdfZWx0ICphbGxvY2F0ZV9leHNfYnVmZmVyX3JpbmcoKTsKICNlbmRpZiAvKiBIQVZFX0lDU0NfRVhTICovCisKICNpZmRlZiBIQVZFX1NFTkRGSUxFCi1leHRlcm4gIHN0cnVjdCBzZW5kZmlsZV9yaW5nX2VsdCAqYWxsb2Nfc2VuZGZpbGVfYnVmX3JpbmcoKTsKK2V4dGVybiAgc3RydWN0IHJpbmdfZWx0ICphbGxvY19zZW5kZmlsZV9idWZfcmluZygpOworZXh0ZXJuICBpbnQgbmV0cGVyZl9zZW5kZmlsZShTT0NLRVQgc2VuZF9zb2NrZXQsIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nKTsKICNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCisKICNpZmRlZiBXQU5UX0RMUEkKIC8qIGl0IHNlZW1zIHRoYXQgQUlYIGluIGl0cyBmaW5pdGUgd2lzZG9tIGhhcyBzb21lIGJvZ3VzIGRlZmluZSBpbiBhbgogICAgaW5jbHVkZSBmaWxlIHdoaWNoIGRlZmluZXMgInJlbV9hZGRyIiB3aGljaCB0aGVuIHNjcmV3cy11cCB0aGlzIGV4dGVybgpAQCAtNTU1LDEwICs2NzAsMTQgQEAKIAogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiBleHRlcm4gdm9pZCBzdGFydF9pdGltZXIodW5zaWduZWQgaW50IGludGVydmFsX2xlbl9tc2VjKTsKK2V4dGVybiB2b2lkIHN0b3BfaXRpbWVyKHZvaWQpOwogI2VuZGlmCiAgLyogdGhlc2UgYXJlIGFsbCBmb3IgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgc3R1ZmYgKi8KIGV4dGVybiBkb3VibGUgY29uZmlkZW5jZTsKLQorZXh0ZXJuIGRvdWJsZSByZXN1bHRfY29uZmlkOworZXh0ZXJuIGRvdWJsZSBsb2NfY3B1X2NvbmZpZDsKK2V4dGVybiBkb3VibGUgcmVtX2NwdV9jb25maWQ7CitleHRlcm4gaW50IGxpYl9jcHVfbWFwW107CiAjZW5kaWYKIAogI2lmZGVmIFdJTjMyCkBAIC01NjgsNiArNjg3LDcgQEAKICNlbmRpZgogCiAjaWZkZWYgV0lOMzIKK2V4dGVybiBIQU5ETEUgV2luVGltZXI7CiAjaWYgMAogLyogU2hvdWxkIHJlYWxseSB1c2Ugc2FmZSBzdHJpbmcgZnVuY3Rpb25zOyBidXQgbm90IGZvciBub3cuLi4gKi8KICNpbmNsdWRlIDxzdHJzYWZlLmg+CkBAIC01NzYsNiArNjk2LDcgQEAKICNlbmRpZgogCiAjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgorI2RlZmluZSBzdHJkdXAgICBfc3RyZHVwCiAjZW5kaWYKIAogLyogRGVmaW5lIGEgbWFjcm8gdG8gYWxpZ24gYSBidWZmZXIgd2l0aCBhbiBvZmZzZXQgZnJvbSBhIHBvd2VyIG9mIDIKZGlmZiAtLWdpdCBhL25ldHBlcmYuYyBiL3NyYy9uZXRwZXJmLmMKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gbmV0cGVyZi5jCnJlbmFtZSB0byBzcmMvbmV0cGVyZi5jCmluZGV4IDg0NzE3YWMuLjkzNDQ1MzMgMTAwNjQ0Ci0tLSBhL25ldHBlcmYuYworKysgYi9zcmMvbmV0cGVyZi5jCkBAIC0xLDMwICsxLDMwIEBACiAvKgotIAotCSAgIENvcHlyaWdodCAoQykgMTk5My0yMDA3IEhld2xldHQtUGFja2FyZCBDb21wYW55CisKKwkgICBDb3B5cmlnaHQgKEMpIDE5OTMtMjAxMSBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQogICAgICAgICAgICAgICAgICAgICAgICAgIEFMTCBSSUdIVFMgUkVTRVJWRUQuCi0gCisKICAgVGhlIGVuY2xvc2VkIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGluY2x1ZGVzIGNvcHlyaWdodGVkIHdvcmtzCiAgIG9mIEhld2xldHQtUGFja2FyZCBDby4gRm9yIGFzIGxvbmcgYXMgeW91IGNvbXBseSB3aXRoIHRoZSBmb2xsb3dpbmcKICAgbGltaXRhdGlvbnMsIHlvdSBhcmUgaGVyZWJ5IGF1dGhvcml6ZWQgdG8gKGkpIHVzZSwgcmVwcm9kdWNlLCBhbmQKICAgbW9kaWZ5IHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiwgYW5kIHRvIChpaSkgZGlzdHJpYnV0ZSB0aGUKICAgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24sIGluY2x1ZGluZyBtb2RpZmljYXRpb25zLCBmb3IKICAgbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgb25seS4KLSAgICAgIAorCiAgIDEuICBUaGUgZW5jbG9zZWQgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gaXMgbWFkZSBhdmFpbGFibGUgYXQgbm8KICAgICAgIGNoYXJnZSBpbiBvcmRlciB0byBhZHZhbmNlIHRoZSBnZW5lcmFsIGRldmVsb3BtZW50IG9mCiAgICAgICBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgcHJvZHVjdHMuCi0gCisKICAgMi4gIFlvdSBtYXkgbm90IGRlbGV0ZSBhbnkgY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIGluIHRoZQogICAgICAgc29mdHdhcmUgb3IgZG9jdW1lbnRhdGlvbi4gQWxsIGhhcmQgY29waWVzLCBhbmQgY29waWVzIGluCiAgICAgICBzb3VyY2UgY29kZSBvciBvYmplY3QgY29kZSBmb3JtLCBvZiB0aGUgc29mdHdhcmUgb3IKICAgICAgIGRvY3VtZW50YXRpb24gKGluY2x1ZGluZyBtb2RpZmljYXRpb25zKSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QKICAgICAgIG9uZSBvZiB0aGUgY29weXJpZ2h0IG5vdGljZXMuCi0gCisKICAgMy4gIFRoZSBlbmNsb3NlZCBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBoYXMgbm90IGJlZW4gc3ViamVjdGVkCiAgICAgICB0byB0ZXN0aW5nIGFuZCBxdWFsaXR5IGNvbnRyb2wgYW5kIGlzIG5vdCBhIEhld2xldHQtUGFja2FyZCBDby4KICAgICAgIHByb2R1Y3QuIEF0IGEgZnV0dXJlIHRpbWUsIEhld2xldHQtUGFja2FyZCBDby4gbWF5IG9yIG1heSBub3QKICAgICAgIG9mZmVyIGEgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gYXMgYSBwcm9kdWN0LgotICAKKwogICA0LiAgVEhFIFNPRlRXQVJFIEFORCBET0NVTUVOVEFUSU9OIElTIFBST1ZJREVEICJBUyBJUyIuCiAgICAgICBIRVdMRVRULVBBQ0tBUkQgQ09NUEFOWSBET0VTIE5PVCBXQVJSQU5UIFRIQVQgVEhFIFVTRSwKICAgICAgIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUgT1IKQEAgLTM0LDE1ICszNCwxNSBAQAogICAgICAgRVhQUkVTUyBBTkQgSU1QTElFRCwgV0lUSCBSRUdBUkQgVE8gVEhFIFNPRlRXQVJFIEFORCBUSEUKICAgICAgIERPQ1VNRU5UQVRJT04uIEhQIFNQRUNJRklDQUxMWSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgT0YKICAgICAgIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0gIAorCiAgIDUuICBIRVdMRVRULVBBQ0tBUkQgQ09NUEFOWSBXSUxMIE5PVCBJTiBBTlkgRVZFTlQgQkUgTElBQkxFIEZPUiBBTlkKICAgICAgIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCiAgICAgICAoSU5DTFVESU5HIExPU1QgUFJPRklUUykgUkVMQVRFRCBUTyBBTlkgVVNFLCBSRVBST0RVQ1RJT04sCiAgICAgICBNT0RJRklDQVRJT04sIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgU09GVFdBUkUgT1IgRE9DVU1FTlRBVElPTi4KLSAKKwogKi8KIGNoYXIJbmV0cGVyZl9pZFtdPSJcCi1AKCMpbmV0cGVyZi5jIChjKSBDb3B5cmlnaHQgMTk5My0yMDA3IEhld2xldHQtUGFja2FyZCBDb21wYW55LiBWZXJzaW9uIDIuNC4zIjsKK0AoIyluZXRwZXJmLmMgKGMpIENvcHlyaWdodCAxOTkzLTIwMTIgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkuIFZlcnNpb24gMi42LjAiOwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNTAsNiArNTAsMTIgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaWYgSEFWRV9TVFJJTkdfSAorIyBpZiAhU1REQ19IRUFERVJTICYmIEhBVkVfTUVNT1JZX0gKKyMgIGluY2x1ZGUgPG1lbW9yeS5oPgorIyBlbmRpZgorIyBpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgogI2lmZGVmIEhBVkVfU1RSSU5HU19ICiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCkBAIC01OSwxNCArNjUsMTAgQEAKICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBXSU4zMgotLyogdGhpcyBzaG91bGQgb25seSBiZSB0ZW1wb3JhcnkgKi8KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLQogI2lmZGVmIFdJTjMyCiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSAibWlzc2luZ1xzdGRpbnQuaCIKICNlbmRpZiAvKiBXSU4zMiAqLwogCiAjaW5jbHVkZSAibmV0c2guaCIKQEAgLTEwMCw4ICsxMDIsOCBAQAogI2luY2x1ZGUgIm5ldHRlc3Rfc2N0cC5oIgogI2VuZGlmCiAKLSAvKiB0aGlzIGZpbGUgY29udGFpbnMgdGhlIG1haW4gZm9yIHRoZSBuZXRwZXJmIHByb2dyYW0uIGFsbCB0aGUgb3RoZXIgKi8KLSAvKiByb3V0aW5lcyBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUgbmV0c2guYyAqLworIC8qIHRoaXMgZmlsZSBjb250YWlucyB0aGUgbWFpbiBmb3IgdGhlIG5ldHBlcmYgcHJvZ3JhbS4gYWxsIHRoZSBvdGhlcgorICAgIHJvdXRpbmVzIGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZSBuZXRzaC5jICovCiAKIAogaW50IF9jZGVjbApAQCAtMTEwLDQwICsxMTIsNTIgQEAKIAogI2lmZGVmIFdJTjMyCiAgIFdTQURBVEEJd3NhX2RhdGEgOwotICAKKwogICAvKiBJbml0aWFsaXplIHRoZSB3aW5zb2NrIGxpYiAoIHZlcnNpb24gMi4yICkgKi8KICAgaWYgKCBXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FfZGF0YSkgPT0gU09DS0VUX0VSUk9SICl7Ci0gICAgcHJpbnRmKCJXU0FTdGFydHVwKCkgZmFpbGVkIDogJWRcbiIsIEdldExhc3RFcnJvcigpKSA7CisgICAgcHJpbnRmKCJXU0FTdGFydHVwKCkgZmFpbGVkIDogJWx1XG4iLCBHZXRMYXN0RXJyb3IoKSkgOwogICAgIHJldHVybiAxIDsKICAgfQogI2VuZGlmIC8qIFdJTjMyICovCi0gIAorCiAgIG5ldGxpYl9pbml0KCk7Ci0gIHNldF9kZWZhdWx0cygpOworICAvKiB0aGUgY2FsbCB0byBzZXRfZGVmYXVsdHMoKSBpcyBnb25lIGJlY2F1c2Ugd2UgY2FuIGluaXRpYWxpemUgaW4KKyAgICAgZGVjbGFyYXRpb25zIChvciBpcyB0aGF0IGRlZmluaXRpb25zKSB1bmxpa2UgdGhlIG9sZCBkYXlzICovCiAgIHNjYW5fY21kX2xpbmUoYXJnYyxhcmd2KTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZHVtcF9nbG9iYWxzKCk7CiAgICAgaW5zdGFsbF9zaWduYWxfY2F0Y2hlcnMoKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBwcmludGYoInJlbW90ZWhvc3QgaXMgJXMgYW5kIHBvcnQgJXNcbiIsaG9zdF9uYW1lLHRlc3RfcG9ydCk7CiAgICAgZmZsdXNoKHN0ZG91dCk7CiAgIH0KLSAgCi0gIAorCisKICAgaWYgKCFub19jb250cm9sKSB7CiAgICAgZXN0YWJsaXNoX2NvbnRyb2woaG9zdF9uYW1lLHRlc3RfcG9ydCxhZGRyZXNzX2ZhbWlseSwKIAkJICAgICAgbG9jYWxfaG9zdF9uYW1lLGxvY2FsX3Rlc3RfcG9ydCxsb2NhbF9hZGRyZXNzX2ZhbWlseSk7CisKKyAgICBpZiAocGFzc3BocmFzZSAhPSBOVUxMKSB7CisgICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgPSBQQVNTUEhSQVNFOworICAgICAgc3RybmNweSgoY2hhciAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSwKKwkgICAgICBwYXNzcGhyYXNlLAorCSAgICAgIHNpemVvZihuZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEpKTsKKyAgICAgIHNlbmRfcmVxdWVzdF9uKDApOworICAgIH0KICAgfQotICAKKwogICBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9TVFJFQU0iKSA9PSAwKSB7CiAgICAgc2VuZF90Y3Bfc3RyZWFtKGhvc3RfbmFtZSk7CiAgIH0KICAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9NQUVSVFMiKSA9PSAwKSB7CiAgICAgc2VuZF90Y3BfbWFlcnRzKGhvc3RfbmFtZSk7CiAgIH0KKyAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9NU1MiKSA9PSAwKSB7CisgICAgc2VuZF90Y3BfbXNzKGhvc3RfbmFtZSk7CisgIH0KICNpZmRlZiBIQVZFX0lDU0NfRVhTCiAgIGVsc2UgaWYgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJFWFNfVENQX1NUUkVBTSIpID09IDApIHsKICAgICBzZW5kX2V4c190Y3Bfc3RyZWFtKGhvc3RfbmFtZSk7CkBAIC0yMjcsMTEgKzI0MSwxMSBAQAogICAgIHNlbmRfeHRpX3VkcF9ycihob3N0X25hbWUpOwogICB9CiAjZW5kaWYgLyogV0FOVF9YVEkgKi8KLSAgCisKICNpZmRlZiBXQU5UX1NDVFAKICAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsICJTQ1RQX1NUUkVBTSIpID09IDApIHsKICAgICBzZW5kX3NjdHBfc3RyZWFtKGhvc3RfbmFtZSk7Ci0gIH0gICAgICAgCisgIH0KICAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsICJTQ1RQX1JSIikgPT0gMCkgewogICAgIHNlbmRfc2N0cF9ycihob3N0X25hbWUpOwogICB9CkBAIC0yMzksMTAgKzI1MywxMCBAQAogICAgIHNlbmRfc2N0cF9zdHJlYW1fMXRvTWFueShob3N0X25hbWUpOwogICB9CiAgIGVsc2UgaWYgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCAiU0NUUF9SUl9NQU5ZIikgPT0gMCkgewotICAgIHNlbmRfc2N0cF9zdHJlYW1fMXRvTWFueShob3N0X25hbWUpOworICAgIHNlbmRfc2N0cF9ycl8xdG9NYW55KGhvc3RfbmFtZSk7CiAgIH0KICNlbmRpZgotICAKKwogI2lmZGVmIERPX0ROUwogICBlbHNlIGlmIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiRE5TX1JSIikgPT0gMCkgewogICAgIGZwcmludGYoc3RkZXJyLApAQCAtMjYyLDIyICsyNzYsMzEgQEAKICAgICBzZW5kX3NkcF9ycihob3N0X25hbWUpOwogICB9CiAjZW5kaWYgLyogV0FOVF9TRFAgKi8KKyNpZmRlZiBXQU5UX09NTkkKKyAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIk9NTkkiKSA9PSAwKSB7CisgICAgc2VuZF9vbW5pKGhvc3RfbmFtZSk7CisgIH0KKyAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVVSUQiKSA9PSAwKSB7CisgICAgcHJpbnRfdXVpZChob3N0X25hbWUpOworICB9CisjZW5kaWYKICAgZWxzZSB7Ci0gICAgcHJpbnRmKCJUaGUgdGVzdCB5b3UgcmVxdWVzdGVkIGlzIHVua25vd24gdG8gdGhpcyBuZXRwZXJmLlxuIik7Ci0gICAgcHJpbnRmKCJQbGVhc2UgdmVyaWZ5IHRoYXQgeW91IGhhdmUgdGhlIGNvcnJlY3QgdGVzdCBuYW1lLCBcbiIpOwotICAgIHByaW50ZigiYW5kIHRoYXQgdGVzdCBmYW1pbHkgaGFzIGJlZW4gY29tcGlsZWQgaW50byB0aGlzIG5ldHBlcmYuXG4iKTsKKyAgICBwcmludGYoIlRoZSB0ZXN0IHlvdSByZXF1ZXN0ZWQgKCVzKSBpcyB1bmtub3duIHRvIHRoaXMgbmV0cGVyZi5cbiIKKwkgICAiUGxlYXNlIHZlcmlmeSB0aGF0IHlvdSBoYXZlIHRoZSBjb3JyZWN0IHRlc3QgbmFtZSwgXG4iCisJICAgImFuZCB0aGF0IHRlc3QgZmFtaWx5IGhhcyBiZWVuIGNvbXBpbGVkIGludG8gdGhpcyBuZXRwZXJmLlxuIiwKKwkgICB0ZXN0X25hbWUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgaWYgKCFub19jb250cm9sKSB7CiAgICAgc2h1dGRvd25fY29udHJvbCgpOwogICB9Ci0gIAorCiAjaWZkZWYgV0lOMzIKICAgLyogQ2xlYW51cCB0aGUgd2luc29jayBsaWIgKi8KICAgV1NBQ2xlYW51cCgpOwogI2VuZGlmCi0gIAorCiAgIHJldHVybigwKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL25ldHBlcmZfdmVyc2lvbi5oIGIvc3JjL25ldHBlcmZfdmVyc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTZjNDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbmV0cGVyZl92ZXJzaW9uLmgKQEAgLTAsMCArMSBAQAorI2RlZmluZSBORVRQRVJGX1ZFUlNJT04gIjIuNy4wIgpkaWZmIC0tZ2l0IGEvc3JjL25ldHBlcmZfdmVyc2lvbi5oLmluIGIvc3JjL25ldHBlcmZfdmVyc2lvbi5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYmQ0NTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbmV0cGVyZl92ZXJzaW9uLmguaW4KQEAgLTAsMCArMSBAQAorI2RlZmluZSBORVRQRVJGX1ZFUlNJT04gIkBWRVJTSU9OQCIKZGlmZiAtLWdpdCBhL3NyYy9uZXRzZXJ2ZXIuYyBiL3NyYy9uZXRzZXJ2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTM0NzIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL25ldHNlcnZlci5jCkBAIC0wLDAgKzEsMTU3MiBAQAorLyoKKworCSAgIENvcHlyaWdodCAoQykgMTk5My0yMDEyIEhld2xldHQtUGFja2FyZCBDb21wYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgQUxMIFJJR0hUUyBSRVNFUlZFRC4KKworICBUaGUgZW5jbG9zZWQgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gaW5jbHVkZXMgY29weXJpZ2h0ZWQgd29ya3MKKyAgb2YgSGV3bGV0dC1QYWNrYXJkIENvLiBGb3IgYXMgbG9uZyBhcyB5b3UgY29tcGx5IHdpdGggdGhlIGZvbGxvd2luZworICBsaW1pdGF0aW9ucywgeW91IGFyZSBoZXJlYnkgYXV0aG9yaXplZCB0byAoaSkgdXNlLCByZXByb2R1Y2UsIGFuZAorICBtb2RpZnkgdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uLCBhbmQgdG8gKGlpKSBkaXN0cmlidXRlIHRoZQorICBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIG1vZGlmaWNhdGlvbnMsIGZvcgorICBub24tY29tbWVyY2lhbCBwdXJwb3NlcyBvbmx5LgorCisgIDEuICBUaGUgZW5jbG9zZWQgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gaXMgbWFkZSBhdmFpbGFibGUgYXQgbm8KKyAgICAgIGNoYXJnZSBpbiBvcmRlciB0byBhZHZhbmNlIHRoZSBnZW5lcmFsIGRldmVsb3BtZW50IG9mCisgICAgICBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgcHJvZHVjdHMuCisKKyAgMi4gIFlvdSBtYXkgbm90IGRlbGV0ZSBhbnkgY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIGluIHRoZQorICAgICAgc29mdHdhcmUgb3IgZG9jdW1lbnRhdGlvbi4gQWxsIGhhcmQgY29waWVzLCBhbmQgY29waWVzIGluCisgICAgICBzb3VyY2UgY29kZSBvciBvYmplY3QgY29kZSBmb3JtLCBvZiB0aGUgc29mdHdhcmUgb3IKKyAgICAgIGRvY3VtZW50YXRpb24gKGluY2x1ZGluZyBtb2RpZmljYXRpb25zKSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QKKyAgICAgIG9uZSBvZiB0aGUgY29weXJpZ2h0IG5vdGljZXMuCisKKyAgMy4gIFRoZSBlbmNsb3NlZCBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBoYXMgbm90IGJlZW4gc3ViamVjdGVkCisgICAgICB0byB0ZXN0aW5nIGFuZCBxdWFsaXR5IGNvbnRyb2wgYW5kIGlzIG5vdCBhIEhld2xldHQtUGFja2FyZCBDby4KKyAgICAgIHByb2R1Y3QuIEF0IGEgZnV0dXJlIHRpbWUsIEhld2xldHQtUGFja2FyZCBDby4gbWF5IG9yIG1heSBub3QKKyAgICAgIG9mZmVyIGEgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gYXMgYSBwcm9kdWN0LgorCisgIDQuICBUSEUgU09GVFdBUkUgQU5EIERPQ1VNRU5UQVRJT04gSVMgUFJPVklERUQgIkFTIElTIi4KKyAgICAgIEhFV0xFVFQtUEFDS0FSRCBDT01QQU5ZIERPRVMgTk9UIFdBUlJBTlQgVEhBVCBUSEUgVVNFLAorICAgICAgUkVQUk9EVUNUSU9OLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBTT0ZUV0FSRSBPUgorICAgICAgRE9DVU1FTlRBVElPTiBXSUxMIE5PVCBJTkZSSU5HRSBBIFRISVJEIFBBUlRZJ1MgSU5URUxMRUNUVUFMCisgICAgICBQUk9QRVJUWSBSSUdIVFMuIEhQIERPRVMgTk9UIFdBUlJBTlQgVEhBVCBUSEUgU09GVFdBUkUgT1IKKyAgICAgIERPQ1VNRU5UQVRJT04gSVMgRVJST1IgRlJFRS4gSFAgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTLAorICAgICAgRVhQUkVTUyBBTkQgSU1QTElFRCwgV0lUSCBSRUdBUkQgVE8gVEhFIFNPRlRXQVJFIEFORCBUSEUKKyAgICAgIERPQ1VNRU5UQVRJT04uIEhQIFNQRUNJRklDQUxMWSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgT0YKKyAgICAgIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisKKyAgNS4gIEhFV0xFVFQtUEFDS0FSRCBDT01QQU5ZIFdJTEwgTk9UIElOIEFOWSBFVkVOVCBCRSBMSUFCTEUgRk9SIEFOWQorICAgICAgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAgICAgIChJTkNMVURJTkcgTE9TVCBQUk9GSVRTKSBSRUxBVEVEIFRPIEFOWSBVU0UsIFJFUFJPRFVDVElPTiwKKyAgICAgIE1PRElGSUNBVElPTiwgT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBTT0ZUV0FSRSBPUiBET0NVTUVOVEFUSU9OLgorCisqLworCisjaW5jbHVkZSAibmV0cGVyZl92ZXJzaW9uLmgiCisKK2NoYXIJbmV0c2VydmVyX2lkW109IlwKK0AoIyluZXRzZXJ2ZXIuYyAoYykgQ29weXJpZ2h0IDE5OTMtMjAxMiBIZXdsZXR0LVBhY2thcmQgQ28uIFZlcnNpb24gMi42LjAiOworCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2lmIEhBVkVfU1RSSU5HX0gKKyMgaWYgIVNURENfSEVBREVSUyAmJiBIQVZFX01FTU9SWV9ICisjICBpbmNsdWRlIDxtZW1vcnkuaD4KKyMgZW5kaWYKKyMgaW5jbHVkZSA8c3RyaW5nLmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1RSSU5HU19ICisjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9MSU1JVFNfSAorIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9TWVNfSVBDX0gKKyNpbmNsdWRlIDxzeXMvaXBjLmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1lTX0lPQ1RMX0gKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisKKyNpZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaWYgSEFWRV9TSUdOQUxfSAorI2luY2x1ZGUgPHNpZ25hbC5oPgorLyogc29tZSBPUydzIGhhdmUgU0lHQ0xEIGRlZmluZWQgYXMgU0lHQ0hMRCAqLworI2lmbmRlZiBTSUdDTEQKKyNkZWZpbmUgU0lHQ0xEIFNJR0NITEQKKyNlbmRpZiAvKiBTSUdDTEQgKi8KKworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChIQVZFX1NFVFNJRCkKKyNpZiBIQVZFX1NZU19XQUlUX0gKKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisKKyNpZiBIQVZFX1dTMlRDUElQX0gKKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKyNpbmNsdWRlICJtaXNzaW5nXHN0ZGludC5oIgorCisjZGVmaW5lIHN0cmR1cCBfc3RyZHVwCisjZGVmaW5lIHNsZWVwKHgpIFNsZWVwKCh4KSoxMDAwKQorI2RlZmluZSBuZXRwZXJmX3NvY2tsZW5fdCBzb2NrbGVuX3QKKyNlbmRpZiAvKiBXSU4zMiAqLworCisvKiB1bmNvbmRpdGlvbmFsIHN5c3RlbSBpbmNsdWRlcyAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisvKiBuZXRwZXJmIGluY2x1ZGVzICovCisjaW5jbHVkZSAibmV0bGliLmgiCisjaW5jbHVkZSAibmV0dGVzdF9ic2QuaCIKKworI2lmZGVmIFdBTlRfVU5JWAorI2luY2x1ZGUgIm5ldHRlc3RfdW5peC5oIgorI2VuZGlmIC8qIFdBTlRfVU5JWCAqLworCisjaWZkZWYgV0FOVF9ETFBJCisjaW5jbHVkZSAibmV0dGVzdF9kbHBpLmgiCisjZW5kaWYgLyogV0FOVF9ETFBJICovCisKKyNpZmRlZiBXQU5UX1NDVFAKKyNpbmNsdWRlICJuZXR0ZXN0X3NjdHAuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAibmV0c2guaCIKKworI2lmbmRlZiBERUJVR19MT0dfRklMRV9ESVIKKyNpZiBkZWZpbmVkKFdJTjMyKQorI2RlZmluZSBERUJVR19MT0dfRklMRV9ESVIgIiIKKyNlbGlmIGRlZmluZWQoQU5EUk9JRCkKKyNkZWZpbmUgREVCVUdfTE9HX0ZJTEVfRElSICIvZGF0YS9sb2NhbC90bXAvIgorI2Vsc2UKKyNkZWZpbmUgREVCVUdfTE9HX0ZJTEVfRElSICIvdG1wLyIKKyNlbmRpZgorI2VuZGlmIC8qIERFQlVHX0xPR19GSUxFX0RJUiAqLworCisjaWZuZGVmIERFQlVHX0xPR19GSUxFCisjZGVmaW5lIERFQlVHX0xPR19GSUxFIERFQlVHX0xPR19GSUxFX0RJUiJuZXRzZXJ2ZXIuZGVidWciCisjZW5kaWYKKworI2lmICFkZWZpbmVkKFBBVEhfTUFYKQorI2RlZmluZSBQQVRIX01BWCBNQVhfUEFUSAorI2VuZGlmCitjaGFyICAgICBGaWxlTmFtZVtQQVRIX01BWF07CisKK2NoYXIgICAgIGxpc3Rlbl9wb3J0WzEwXTsKKworc3RydWN0IGxpc3Rlbl9lbHQgeworICBTT0NLRVQgZmQ7CisgIHN0cnVjdCBsaXN0ZW5fZWx0ICpuZXh0OworfTsKKworc3RydWN0IGxpc3Rlbl9lbHQgKmxpc3Rlbl9saXN0ID0gTlVMTDsKKworU09DS0VUICAgc2VydmVyX2NvbnRyb2w7CisKK2ludCAgICAgIGNoaWxkOyAgIC8qIGFyZSB3ZSB0aGUgY2hpbGQgb2YgaW5ldGQgb3IgYSBwYXJlbnQgbmV0c2VydmVyPworCQkgICAgICovCitpbnQgICAgICBuZXRwZXJmX2RhZW1vbjsKK2ludCAgICAgIGRhZW1vbl9wYXJlbnQgPSAwOworaW50ICAgICAgbm90X2luZXRkOworaW50ICAgICAgd2FudF9kYWVtb25pemU7CitpbnQgICAgICBzcGF3bl9vbl9hY2NlcHQ7CitpbnQgICAgICBzdXBwcmVzc19kZWJ1ZyA9IDA7CisKK2V4dGVybgljaGFyCSpvcHRhcmc7CitleHRlcm4JaW50CW9wdGluZCwgb3B0ZXJyOworCisvKiBjaGFyICAqcGFzc3BocmFzZSA9IE5VTEw7ICovCisKK3N0YXRpYyB2b2lkCitpbml0X25ldHNlcnZlcl9nbG9iYWxzKCkgeworCisjaWYgZGVmaW5lZChfX1ZNUykgfHwgZGVmaW5lZChWTVdBUkVfVVcpCisgIHNwYXduX29uX2FjY2VwdCA9IDA7CisgIHdhbnRfZGFlbW9uaXplID0gMDsKKyNlbHNlCisgIHNwYXduX29uX2FjY2VwdCA9IDE7CisjaWYgZGVmaW5lZChXSU4zMikKKyAgLyogd2Ugb25seSBrbm93IGhvdyB0byBzcGF3biBpbiBXSU4zMiwgbm90IGRhZW1vbml6ZSAqLworICB3YW50X2RhZW1vbml6ZSA9IDA7CisjZWxzZQorICB3YW50X2RhZW1vbml6ZSA9IDE7CisjZW5kaWYgLyogV0lOMzIgKi8KKyNlbmRpZiAvKiBfX1ZNUyB8fCBWTVdBUkVfVVcgKi8KKworICBjaGlsZCA9IDA7CisgIG5vdF9pbmV0ZCA9IDA7CisgIG5ldHBlcmZfZGFlbW9uID0gMDsKK30KKwordm9pZAordW5saW5rX2VtcHR5X2RlYnVnX2ZpbGUoKSB7CisKKyNpZiAhZGVmaW5lZChXSU4zMikKKyAgc3RydWN0IHN0YXQgYnVmOworCisgIGlmIChzdGF0KEZpbGVOYW1lLCZidWYpPT0gMCkgeworCisgICAgaWYgKGJ1Zi5zdF9zaXplID09IDApCisgICAgICB1bmxpbmsoRmlsZU5hbWUpOworICB9CisjZW5kaWYKK30KKworLyogaXQgaXMgaW1wb3J0YW50IHRoYXQgc2V0X3NlcnZlcl9zb2NrKCkgYmUgY2FsbGVkIGJlZm9yZSB0aGlzCisgICByb3V0aW5lIGFzIHdlIGRlcGVuZCBvbiB0aGUgY29udHJvbCBzb2NrZXQgYmVpbmcgZHVwKCllZCBvdXQgb2YgdGhlCisgICB3YXkgd2hlbiB3ZSBnbyBtZXNzaW5nIGFib3V0IHdpdGggdGhlIHN0cmVhbXMuICovCit2b2lkCitvcGVuX2RlYnVnX2ZpbGUoKQoreworI2lmICFkZWZpbmVkIFdJTjMyCisjZGVmaW5lIE5FVFBFUkZfTlVMTCAiL2Rldi9udWxsIgorI2Vsc2UKKyNkZWZpbmUgTkVUUEVSRl9OVUxMICJudWwiCisjZW5kaWYKKworICBGSUxFICpyZF9udWxsX2ZwOworCisgIGlmICh3aGVyZSAhPSBOVUxMKSBmZmx1c2god2hlcmUpOworCisgIHNucHJpbnRmKEZpbGVOYW1lLAorCSAgIHNpemVvZihGaWxlTmFtZSksCisjaWYgZGVmaW5lZChXSU4zMikKKwkgICAiJXNcXCVzXyVkIiwKKwkgICBnZXRlbnYoIlRFTVAiKSwKKyNlbHNlCisJICAgIiVzXyVkIiwKKyNlbmRpZgorCSAgIERFQlVHX0xPR19GSUxFLAorCSAgIGdldHBpZCgpKTsKKyAgaWYgKCh3aGVyZSA9IGZvcGVuKChzdXBwcmVzc19kZWJ1ZykgPyBORVRQRVJGX05VTEwgOiBGaWxlTmFtZSwKKwkJICAgICAidyIpKSA9PSBOVUxMKSB7CisgICAgcGVycm9yKCJuZXRzZXJ2ZXI6IGRlYnVnIGZpbGUiKTsKKyAgICBleGl0KDEpOworICB9CisKKyNpZiAhZGVmaW5lZChXSU4zMikKKworICBjaG1vZChGaWxlTmFtZSwwNjQ0KTsKKworICAvKiByZWRpcmVjdCBzdGRpbiB0byAiL2Rldi9udWxsIiAqLworICByZF9udWxsX2ZwID0gZm9wZW4oTkVUUEVSRl9OVUxMLCJyIik7CisgIGlmIChOVUxMID09IHJkX251bGxfZnApIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IG9wZW5pbmcgb2YgJXMgZmFpbGVkOiAlcyAoZXJybm8gJWQpXG4iLAorCSAgICBfX0ZVTkNUSU9OX18sCisJICAgIE5FVFBFUkZfTlVMTCwKKwkgICAgc3RyZXJyb3IoZXJybm8pLAorCSAgICBlcnJubyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KDEpOworICB9CisKKyAgaWYgKGNsb3NlKFNURElOX0ZJTEVOTykgPT0gLTEpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGNsb3NlIG9mIFNURElOX0ZJTEVOTyBmYWlsZWQ6ICVzIChlcnJubyAlZClcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgc3RyZXJyb3IoZXJybm8pLAorCSAgICBlcnJubyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KDEpOworICB9CisKKyAgaWYgKGR1cChmaWxlbm8ocmRfbnVsbF9mcCkpID09IC0xKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBkdXAgb2YgcmRfbnVsbF9mcCB0byBzdGRpbiBmYWlsZWQ6ICVzIChlcnJubyAlZClcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgc3RyZXJyb3IoZXJybm8pLAorCSAgICBlcnJubyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KDEpOworICB9CisKKyAgLyogcmVkaXJlY3Qgc3Rkb3V0IHRvICJ3aGVyZSIgKi8KKyAgaWYgKGNsb3NlKFNURE9VVF9GSUxFTk8pID09IC0xKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBjbG9zZSBvZiBTVERPVVRfRklMRU5PIGZhaWxlZDogJXMgKGVycm5vICVkKVxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBzdHJlcnJvcihlcnJubyksCisJICAgIGVycm5vKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoMSk7CisgIH0KKworICBpZiAoZHVwKGZpbGVubyh3aGVyZSkpID09IC0xKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBkdXAgb2Ygd2hlcmUgdG8gc3Rkb3V0IGZhaWxlZDogJXMgKGVycm5vICVkKVxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBzdHJlcnJvcihlcnJubyksCisJICAgIGVycm5vKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoMSk7CisgIH0KKworICAvKiByZWRpcmVjdCBzdGRlcnIgdG8gIndoZXJlIiAqLworICBpZiAoY2xvc2UoU1RERVJSX0ZJTEVOTykgPT0gLTEpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGNsb3NlIG9mIFNUREVSUl9GSUxFTk8gZmFpbGVkOiAlcyAoZXJybm8gJWQpXG4iLAorCSAgICBfX0ZVTkNUSU9OX18sCisJICAgIHN0cmVycm9yKGVycm5vKSwKKwkgICAgZXJybm8pOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIGlmIChkdXAoZmlsZW5vKHdoZXJlKSkgPT0gLTEpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGR1cCBvZiB3aGVyZSB0byBzdGRlcnIgZmFpbGVkOiAlcyAoZXJybm8gJWQpXG4iLAorCSAgICBfX0ZVTkNUSU9OX18sCisJICAgIHN0cmVycm9yKGVycm5vKSwKKwkgICAgZXJybm8pOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgxKTsKKyAgfQorCisjZWxzZQorCisgIC8qIEhvcGVmdWxseSwgYnkgY2xvc2luZyBzdGRvdXQgJiBzdGRlcnIsIHRoZSBzdWJzZXF1ZW50IGZvcGVuIGNhbGxzCisgICAgIHdpbGwgZ2V0IG1hcHBlZCB0byB0aGUgY29ycmVjdCBzdGQgaGFuZGxlcy4gKi8KKyAgZmNsb3NlKHN0ZG91dCk7CisKKyAgaWYgKCh3aGVyZSA9IGZvcGVuKEZpbGVOYW1lLCAidyIpKSA9PSBOVUxMKSB7CisgICAgcGVycm9yKCJuZXRzZXJ2ZXI6IGZvcGVuIG9mIGRlYnVnIGZpbGUgYXMgbmV3IHN0ZG91dCBmYWlsZWQhIik7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIGZjbG9zZShzdGRlcnIpOworCisgIGlmICgod2hlcmUgPSBmb3BlbihGaWxlTmFtZSwgInciKSkgPT0gTlVMTCkgeworICAgIGZwcmludGYoc3Rkb3V0LCAiZm9wZW4gb2YgZGVidWcgZmlsZSBhcyBuZXcgc3RkZXJyIGZhaWxlZCFcbiIpOworICAgIGV4aXQoMSk7CisgIH0KKworI2VuZGlmCisKK30KKworLyogc28sIGVpdGhlciB3ZSBhcmUgYSBjaGlsZCBvZiBpbmV0ZCBpbiB3aGljaCBjYXNlIHNlcnZlcl9zb2NrIHNob3VsZAorICAgYmUgc3RkaW4sIG9yIHdlIGFyZSBhIGNoaWxkIG9mIGEgbmV0c2VydmVyIHBhcmVudC4gIHRoZXJlIHdpbGwgYmUKKyAgIGxvZ2ljIGhlcmUgZm9yIGFsbCBvZiBpdCwgaW5jbHVkaW5nIFdpbmRvd3MuIGl0IGlzIGltcG9ydGFudCB0aGF0CisgICB0aGlzIGJlIGNhbGxlZCBiZWZvcmUgb3Blbl9kZWJ1Z19maWxlKCkgKi8KKwordm9pZAorc2V0X3NlcnZlcl9zb2NrKCkgeworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZW50ZXJcbiIsCisJICAgIF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisjaWZkZWYgV0lOMzIKKyAgc2VydmVyX3NvY2sgPSAoU09DS0VUKUdldFN0ZEhhbmRsZShTVERfSU5QVVRfSEFORExFKTsKKyNlbGlmICFkZWZpbmVkKF9fVk1TKQorICBpZiAoc2VydmVyX3NvY2sgIT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCJZbywgSXogYWluJ3QgaW52YWxpZCFcbiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIC8qIHdlIGR1cCB0aGlzIHRvIHVwIHRoZSByZWZlcmVuY2UgY291bnQgc28gd2hlbiB3ZSBkbyByZWRpcmVjdGlvbgorICAgICBvZiB0aGUgaW8gc3RyZWFtcyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgdG9hc3QgdGhlIGNvbnRyb2wKKyAgICAgY29ubmVjdGlvbiBpbiB0aGUgY2FzZSBvZiBvdXIgYmVpbmcgYSBjaGlsZCBvZiBpbmV0ZC4gKi8KKyAgc2VydmVyX3NvY2sgPSBkdXAoMCk7CisKKyNlbHNlCisgIGlmICgoc2VydmVyX3NvY2sgPQorICAgICAgIHNvY2tldChUQ1BJUCRDX0FVWFMsIFNPQ0tfU1RSRUFNLCAwKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKwkgICAgIiVzOiBmYWlsZWQgdG8gZ3JhYiBhdXggc2VydmVyIHNvY2tldDogJXMgKGVycm5vICVzKVxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBzdHJlcnJvcihlcnJubyksCisJICAgIGVycm5vKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBleGl0KDEpOworICB9CisjZW5kaWYKKworfQorCisKK3ZvaWQKK2NyZWF0ZV9saXN0ZW5zKGNoYXIgaG9zdG5hbWVbXSwgY2hhciBwb3J0W10sIGludCBhZikgeworCisgIHN0cnVjdCBhZGRyaW5mbyBoaW50czsKKyAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CisgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzX3RlbXA7CisgIGludCBjb3VudCwgZXJyb3I7CisgIGludCBvbiA9IDE7CisgIFNPQ0tFVCB0ZW1wX3NvY2tldDsKKyAgc3RydWN0IGxpc3Rlbl9lbHQgKnRlbXBfZWx0OworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYoc3RkZXJyLAorCSAgICAiJXM6IGNhbGxlZCB3aXRoIGhvc3QgJyVzJyBwb3J0ICclcycgZmFtaWx5ICVzKCVkKVxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorICAgICAgICAgICAgaG9zdG5hbWUsCisJICAgIHBvcnQsCisJICAgIGluZXRfZnRvcyhhZiksCisgICAgICAgICAgICBhZik7CisgICAgZmZsdXNoKHN0ZGVycik7CisgIH0KKyBtZW1zZXQoJmhpbnRzLDAsc2l6ZW9mKGhpbnRzKSk7CisgIGhpbnRzLmFpX2ZhbWlseSA9IGFmOworICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworICBoaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOworICBoaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkU7CisKKyAgY291bnQgPSAwOworICBkbyB7CisgICAgZXJyb3IgPSBnZXRhZGRyaW5mbygoY2hhciAqKWhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgJmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX3Jlcyk7CisgICAgY291bnQgKz0gMTsKKyAgICBpZiAoZXJyb3IgPT0gRUFJX0FHQUlOKSB7CisgICAgICBpZiAoZGVidWcpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsCisJCSIlczogU2xlZXBpbmcgb24gZ2V0YWRkcmluZm8gRUFJX0FHQUlOXG4iLAorCQlfX0ZVTkNUSU9OX18pOworICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgIH0KKyAgICAgIHNsZWVwKDEpOworICAgIH0KKyAgfSB3aGlsZSAoKGVycm9yID09IEVBSV9BR0FJTikgJiYgKGNvdW50IDw9IDUpKTsKKworICBpZiAoZXJyb3IpIHsKKyAgICBpZiAoZGVidWcpIHsKKworICAgICAgZnByaW50ZihzdGRlcnIsCisJICAgICAgIiVzOiBjb3VsZCBub3QgcmVzb2x2ZSByZW1vdGUgJyVzJyBwb3J0ICclcycgYWYgJWRcbiIKKwkgICAgICAiXHRnZXRhZGRyaW5mbyByZXR1cm5lZCAlcyAoJWQpXG4iLAorCSAgICAgIF9fRlVOQ1RJT05fXywKKwkgICAgICBob3N0bmFtZSwKKwkgICAgICBwb3J0LAorCSAgICAgIGFmLAorCSAgICAgIGdhaV9zdHJlcnJvcihlcnJvciksCisJICAgICAgZXJyb3IpOworCisgICAgfQorICAgIHJldHVybjsKKyAgfQorCisgIGlmIChkZWJ1ZykgeworICAgIGR1bXBfYWRkcmluZm8oc3RkZXJyLCBsb2NhbF9yZXMsIGhvc3RuYW1lLCBwb3J0LCBhZik7CisgIH0KKworICBsb2NhbF9yZXNfdGVtcCA9IGxvY2FsX3JlczsKKworICB3aGlsZSAobG9jYWxfcmVzX3RlbXAgIT0gTlVMTCkgeworCisgICAgdGVtcF9zb2NrZXQgPSBzb2NrZXQobG9jYWxfcmVzX3RlbXAtPmFpX2ZhbWlseSxTT0NLX1NUUkVBTSwwKTsKKworICAgIGlmICh0ZW1wX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50ZihzdGRlcnIsCisJCSIlcyBjb3VsZCBub3QgYWxsb2NhdGUgYSBzb2NrZXQ6ICVzIChlcnJubyAlZClcbiIsCisJCV9fRlVOQ1RJT05fXywKKwkJc3RyZXJyb3IoZXJybm8pLAorCQllcnJubyk7CisJZmZsdXNoKHN0ZGVycik7CisgICAgICB9CisgICAgICBsb2NhbF9yZXNfdGVtcCA9IGxvY2FsX3Jlc190ZW1wLT5haV9uZXh0OworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgLyogaGFwcGluZXNzIGFuZCBqb3ksIGtlZXAgZ29pbmcgKi8KKyAgICBpZiAoc2V0c29ja29wdCh0ZW1wX3NvY2tldCwKKwkJICAgU09MX1NPQ0tFVCwKKwkJICAgU09fUkVVU0VBRERSLAorCQkgICAoY2hhciAqKSZvbiAsCisJCSAgIHNpemVvZihvbikpID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50ZihzdGRlcnIsCisJCSIlczogd2FybmluZzogY291bGQgbm90IHNldCBTT19SRVVTRUFERFI6ICVzIChlcnJubyAlZClcbiIsCisJCV9fRlVOQ1RJT05fXywKKwkJc3RyZXJyb3IoZXJybm8pLAorCQllcnJubyk7CisJZmZsdXNoKHN0ZGVycik7CisgICAgICB9CisgICAgfQorICAgIC8qIHN0aWxsIGhhcHB5IGFuZCBqb3lmdWwgKi8KKworICAgIGlmICgoYmluZCh0ZW1wX3NvY2tldCwKKwkgICAgICBsb2NhbF9yZXNfdGVtcC0+YWlfYWRkciwKKwkgICAgICBsb2NhbF9yZXNfdGVtcC0+YWlfYWRkcmxlbikgIT0gU09DS0VUX0VSUk9SKSAmJgorCShsaXN0ZW4odGVtcF9zb2NrZXQsMTAyNCkgIT0gU09DS0VUX0VSUk9SKSkgIHsKKworICAgICAgLyogT0ssIG5vdyBhZGQgdG8gdGhlIGxpc3QgKi8KKyAgICAgIHRlbXBfZWx0ID0gKHN0cnVjdCBsaXN0ZW5fZWx0ICopbWFsbG9jKHNpemVvZihzdHJ1Y3QgbGlzdGVuX2VsdCkpOworICAgICAgaWYgKHRlbXBfZWx0KSB7CisJdGVtcF9lbHQtPmZkID0gdGVtcF9zb2NrZXQ7CisJaWYgKGxpc3Rlbl9saXN0KSB7CisJICB0ZW1wX2VsdC0+bmV4dCA9IGxpc3Rlbl9saXN0OworCX0KKwllbHNlIHsKKwkgIHRlbXBfZWx0LT5uZXh0ID0gTlVMTDsKKwl9CisJbGlzdGVuX2xpc3QgPSB0ZW1wX2VsdDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworCWZwcmludGYoc3RkZXJyLAorCQkiJXM6IGNvdWxkIG5vdCBtYWxsb2MgYSBsaXN0ZW5fZWx0XG4iLAorCQlfX0ZVTkNUSU9OX18pOworCWZmbHVzaChzdGRlcnIpOworCWV4aXQoMSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogd2UgY29uc2lkZXIgYSBiaW5kKCkgb3IgbGlzdGVuKCkgZmFpbHVyZSBhIHRyYW5zaWVudCBhbmQgdHJ5CisJIHRoZSBuZXh0IGFkZHJlc3MgKi8KKyAgICAgIGlmIChkZWJ1ZykgeworCWZwcmludGYoc3RkZXJyLAorCQkiJXM6IHdhcm5pbmc6IGJpbmQgb3IgbGlzdGVuIGNhbGwgZmFpbHVyZTogJXMgKGVycm5vICVkKVxuIiwKKwkJX19GVU5DVElPTl9fLAorCQlzdHJlcnJvcihlcnJubyksCisJCWVycm5vKTsKKwlmZmx1c2goc3RkZXJyKTsKKyAgICAgIH0KKyAgICAgIGNsb3NlKHRlbXBfc29ja2V0KTsKKyAgICB9CisgICAgbG9jYWxfcmVzX3RlbXAgPSBsb2NhbF9yZXNfdGVtcC0+YWlfbmV4dDsKKyAgfQorCit9CisKK3ZvaWQKK3NldHVwX2xpc3RlbnMoY2hhciBuYW1lW10sIGNoYXIgcG9ydFtdLCBpbnQgYWYpIHsKKworICBpbnQgZG9faW5ldDsKKyAgaW50IG5vX25hbWUgPSAwOworI2lmZGVmIEFGX0lORVQ2CisgIGludCBkb19pbmV0NjsKKyNlbmRpZgorCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZW50ZXJcbiIsCisJICAgIF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisKKyAgaWYgKHN0cmNtcChuYW1lLCIiKSA9PSAwKSB7CisgICAgbm9fbmFtZSA9IDE7CisgICAgc3dpdGNoIChhZikgeworICAgIGNhc2UgQUZfVU5TUEVDOgorICAgICAgZG9faW5ldCA9IDE7CisjaWZkZWYgQUZfSU5FVDYKKyAgICAgIGRvX2luZXQ2ID0gMTsKKyNlbmRpZgorICAgICAgYnJlYWs7CisgICAgY2FzZSBBRl9JTkVUOgorICAgICAgZG9faW5ldCA9IDE7CisjaWZkZWYgQUZfSU5FVDYKKyAgICAgIGRvX2luZXQ2ID0gMDsKKyNlbmRpZgorICAgICAgYnJlYWs7CisjaWZkZWYgQUZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgZG9faW5ldCA9IDA7CisgICAgICBkb19pbmV0NiA9IDE7CisgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICBkb19pbmV0ID0gMTsKKyAgICB9CisgICAgLyogaWYgd2UgaGF2ZSBJUHY2LCB0cnkgdGhhdCBvbmUgZmlyc3QgYmVjYXVzZSBpdCBtYXkgYmUgYSBzdXBlcnNldCAqLworI2lmZGVmIEFGX0lORVQ2CisgICAgaWYgKGRvX2luZXQ2KQorICAgICAgY3JlYXRlX2xpc3RlbnMoIjo6MCIscG9ydCxBRl9JTkVUNik7CisjZW5kaWYKKyAgICBpZiAoZG9faW5ldCkKKyAgICAgIGNyZWF0ZV9saXN0ZW5zKCIwLjAuMC4wIixwb3J0LEFGX0lORVQpOworICB9CisgIGVsc2UgeworICAgIGNyZWF0ZV9saXN0ZW5zKG5hbWUscG9ydCxhZik7CisgIH0KKworICBpZiAobGlzdGVuX2xpc3QpIHsKKyAgICBmcHJpbnRmKHN0ZG91dCwKKwkgICAgIlN0YXJ0aW5nIG5ldHNlcnZlciB3aXRoIGhvc3QgJyVzJyBwb3J0ICclcycgYW5kIGZhbWlseSAlc1xuIiwKKwkgICAgKG5vX25hbWUpID8gIklOKDYpQUREUl9BTlkiIDogbmFtZSwKKwkgICAgcG9ydCwKKwkgICAgaW5ldF9mdG9zKGFmKSk7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgIH0KKyAgZWxzZSB7CisgICAgZnByaW50ZihzdGRlcnIsCisJICAgICJVbmFibGUgdG8gc3RhcnQgbmV0c2VydmVyIHdpdGggICclcycgcG9ydCAnJXMnIGFuZCBmYW1pbHkgJXNcbiIsCisJICAgIChub19uYW1lKSA/ICJJTig2KUFERFJfQU5ZIiA6IG5hbWUsCisJICAgIHBvcnQsCisJICAgIGluZXRfZnRvcyhhZikpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIGV4aXQoMSk7CisgIH0KK30KKworU09DS0VUCitzZXRfZmRzZXQoc3RydWN0IGxpc3Rlbl9lbHQgKmxpc3QsIGZkX3NldCAqZmRzZXQpIHsKKworICBzdHJ1Y3QgbGlzdGVuX2VsdCAqdGVtcDsKKyAgU09DS0VUIG1heCA9IElOVkFMSURfU09DS0VUOworCisgIEZEX1pFUk8oZmRzZXQpOworCisgIHRlbXAgPSBsaXN0OworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZW50ZXIgbGlzdCAlcCBmZF9zZXQgJXBcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgbGlzdCwKKwkgICAgZmRzZXQpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICB3aGlsZSAodGVtcCkgeworICAgIGlmICh0ZW1wLT5mZCA+IG1heCkKKyAgICAgIG1heCA9IHRlbXAtPmZkOworCisgICAgaWYgKGRlYnVnKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJzZXR0aW5nICVkIGluIGZkc2V0XG4iLAorCSAgICAgIHRlbXAtPmZkKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorCisgICAgRkRfU0VUKHRlbXAtPmZkLGZkc2V0KTsKKworICAgIHRlbXAgPSB0ZW1wLT5uZXh0OworICB9CisKKyAgcmV0dXJuIG1heDsKKworfQorCit2b2lkCitjbG9zZV9saXN0ZW5zKHN0cnVjdCBsaXN0ZW5fZWx0ICpsaXN0KSB7CisgIHN0cnVjdCBsaXN0ZW5fZWx0ICp0ZW1wOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZW50ZXJcbiIsCisJICAgIF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIHRlbXAgPSBsaXN0OworCisgIHdoaWxlICh0ZW1wKSB7CisgICAgY2xvc2UodGVtcC0+ZmQpOworICAgIHRlbXAgPSB0ZW1wLT5uZXh0OworICB9Cit9CisKK3N0YXRpYyBpbnQKK3JlY3ZfcGFzc3BocmFzZSgpIHsKKworICAvKiBtYXkgbmVlZCB0byByZXZpc2l0IHRoZSB0aW1lb3V0LiB3ZSBvbmx5IHJlc3BvbmQgaWYgdGhlcmUgaXMgYW4KKyAgICAgZXJyb3Igd2l0aCByZWNlaXZpbmcgdGhlIHBhc3NwaHJhc2UgKi8KKyAgaWYgKChyZWN2X3JlcXVlc3RfdGltZWRfbigwLDIwKSA+IDApICYmCisgICAgICAobmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlID09IFBBU1NQSFJBU0UpICYmCisgICAgICAoIXN0cmNtcChwYXNzcGhyYXNlLAorCSAgICAgICAoY2hhciAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSkpKSB7CisgICAgLyogaXQgd2FzIG9rZXkgZG9rZXkgKi8KKyAgICByZXR1cm4gMDsKKyAgfQorI2lmIGRlZmluZWQoU0VORF9QQVNTUEhSQVNFX1JFU1BPTlNFKQorICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IFBBU1NQSFJBU0U7CisgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gNDAzOworICAgIHNucHJpbnRmKChjaGFyICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSwKKwkgICAgIHNpemVvZihuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhKSwKKwkgICAgICJTb3JyeSwgdW5hYmxlIHRvIG1hdGNoIHdpdGggcmVxdWlyZWQgcGFzc3BocmFzZVxuIik7CisgIHNlbmRfcmVzcG9uc2VfbigwKTsKKyNlbmRpZgorICBmcHJpbnRmKHdoZXJlLAorCSAgIlVuYWJsZSB0byBtYXRjaCByZXF1aXJlZCBwYXNzcGhyYXNlLiAgQ2xvc2luZyBjb250cm9sIGNvbm5lY3Rpb25cbiIpOworICBmZmx1c2god2hlcmUpOworCisgIGNsb3NlKHNlcnZlcl9zb2NrKTsKKyAgcmV0dXJuIC0xOworfQorCisvKiBUaGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgIm1haW4gZXZlbnQgbG9vcCIgb2YgdGhlIG5ldHBlcmYgc2VydmVyCisgICBjb2RlLiBDb2RlIGFib3ZlIGl0IHdpbGwgaGF2ZSBzZXQtdXAgdGhlIGNvbnRyb2wgY29ubmVjdGlvbiBzbyBpdAorICAgY2FuIGp1c3QgbWVycmlseSBnbyBhYm91dCBpdHMgYnVzaW5lc3MsIHdoaWNoIGlzIHRvICJzY2hlZHVsZSIKKyAgIHBlcmZvcm1hbmNlIHRlc3RzIG9uIHRoZSBzZXJ2ZXIuICAqLworCit2b2lkCitwcm9jZXNzX3JlcXVlc3RzKCkKK3sKKworICBmbG9hdAl0ZW1wX3JhdGU7CisKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBlbnRlclxuIiwKKwkgICAgX19GVU5DVElPTl9fKTsKKyAgICBmZmx1c2god2hlcmUpOworICB9CisKKyAgLyogaWYgdGhlIG5ldHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIGEgcGFzc3BocmFzZSwgbG9vayBmb3IgaXQgaW4KKyAgICAgdGhlIGZpcnN0IHJlcXVlc3QgdG8gYXJyaXZlLiAgaWYgdGhlcmUgaXMgbm8gcGFzc3BocmFzZSBpbiB0aGUKKyAgICAgZmlyc3QgcmVxdWVzdCB3ZSB3aWxsIGVuZC11cCBkdW1waW5nIHRoZSBjb250cm9sIGNvbm5lY3Rpb24uIHJhagorICAgICAyMDEyLTAxLTIzICovCisKKyAgaWYgKChwYXNzcGhyYXNlICE9IE5VTEwpICAmJiAocmVjdl9wYXNzcGhyYXNlKCkpKQorICAgICAgcmV0dXJuOworCisgIHdoaWxlICgxKSB7CisKKyAgICBpZiAocmVjdl9yZXF1ZXN0KCkgPD0gMCkgeworICAgICAgY2xvc2Uoc2VydmVyX3NvY2spOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlKSB7CisKKyAgICBjYXNlIERFQlVHX09OOgorICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBERUJVR19PSzsKKyAgICAgIGlmICghc3VwcHJlc3NfZGVidWcpIHsKKwlkZWJ1ZysrOworCisJaWYgKGRlYnVnID09IDEpIHsKKwkgIC8qIHdlIGp1c3QgZmxpcHBlZC1vbiBkZWJ1Z2dpbmcsIGR1bXAgdGhlIHJlcXVlc3QgYmVjYXVzZQorCSAgICAgcmVjdl9yZXF1ZXN0L3JlY3ZfcmVxdWVzdF9uIHdpbGwgbm90IGhhdmUgZHVtcGVkIGl0IGFzIGl0cworCSAgICAgZHVtcF9yZXF1ZXN0KCkgY2FsbCBpcyBjb25kaXRpb25hbCBvbiBkZWJ1ZyBiZWluZyBzZXQuIHJhagorCSAgICAgMjAxMS0wNy0wOCAqLworCSAgZHVtcF9yZXF1ZXN0KCk7CisJfQorICAgICAgfQorCisgICAgICBzZW5kX3Jlc3BvbnNlKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgREVCVUdfT0ZGOgorICAgICAgaWYgKGRlYnVnKQorCWRlYnVnLS07CisgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IERFQlVHX09LOworICAgICAgc2VuZF9yZXNwb25zZSgpOworICAgICAgLyogd2UgdXNlZCB0byB0YWtlIHRoZSB0cm91YmxlIHRvIGNsb3NlIHRoZSBkZWJ1ZyBmaWxlLCBidXQgU0FGCisJIGFza2VkIGEgZ29vZCBxdWVzdGlvbiB3aGVuIGhlIGFza2VkICJXaHk/IiBhbmQgc2luY2UgSSBjYW5ub3QKKwkgdGhpbmsgb2YgYSBnb29kIHJlYXNvbiwgSSBoYXZlIHJlbW92ZWQgdGhlIGNvZGUuIHJhagorCSAyMDExLTA3LTA4ICovCisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fU1lTSU5GTzoKKyAgICAgIHsKKwluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IFNZU0lORk9fUkVTUE9OU0U7CisKKwlzbnByaW50ZigoY2hhciAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEsCisJCSBzaXplb2YobmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSksCisJCSAiJWMlcyVjJXMlYyVzJWMlcyIsCisJCSAnLCcsCisJCSAiRGVwcmVjYXRlZCIsCisJCSAnLCcKKywJCSAiRGVwcmVjYXRlZCIsCisJCSAnLCcsCisJCSAiRGVwcmVjYXRlZCIsCisJCSAnLCcsCisJCSAiRGVwcmVjYXRlZCIpOworCisJc2VuZF9yZXNwb25zZV9uKDApOworCWJyZWFrOworICAgICAgfQorCisgICAgY2FzZSBDUFVfQ0FMSUJSQVRFOgorICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBDUFVfQ0FMSUJSQVRFOworICAgICAgdGVtcF9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdSgwLjApOworICAgICAgYmNvcHkoKGNoYXIgKikmdGVtcF9yYXRlLAorCSAgICAoY2hhciAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEsCisJICAgIHNpemVvZih0ZW1wX3JhdGUpKTsKKyAgICAgIGJjb3B5KChjaGFyICopJmxpYl9udW1fbG9jX2NwdXMsCisJICAgIChjaGFyICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSArCisJICAgICAgICAgICAgc2l6ZW9mKHRlbXBfcmF0ZSksCisJICAgIHNpemVvZihsaWJfbnVtX2xvY19jcHVzKSk7CisgICAgICBpZiAoZGVidWcpIHsKKwlmcHJpbnRmKHdoZXJlLAorCQkibmV0c2VydmVyOiBzZW5kaW5nIENQVSBpbmZvcm1hdGlvbjogcmF0ZSBpcyAlZyBudW0gY3B1ICVkXG4iLAorCQl0ZW1wX3JhdGUsCisJCWxpYl9udW1fbG9jX2NwdXMpOworCWZmbHVzaCh3aGVyZSk7CisgICAgICB9CisKKyAgICAgIC8qIHdlIG5lZWQgdGhlIGNwdV9zdGFydCwgY3B1X3N0b3AgaW4gdGhlIGxvb3BlciBjYXNlIHRvIGtpbGwKKyAgICAgICAgIHRoZSBjaGlsZCBwcm9jZXNlcyByYWogNy85NSAqLworCisjaWZkZWYgVVNFX0xPT1BFUgorICAgICAgY3B1X3N0YXJ0KDEpOworICAgICAgY3B1X3N0b3AoMSwmdGVtcF9yYXRlKTsKKyNlbmRpZiAvKiBVU0VfTE9PUEVSICovCisKKyAgICAgIHNlbmRfcmVzcG9uc2UoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19UQ1BfU1RSRUFNOgorICAgICAgcmVjdl90Y3Bfc3RyZWFtKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fVENQX01BRVJUUzoKKyAgICAgIHJlY3ZfdGNwX21hZXJ0cygpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX1RDUF9SUjoKKyAgICAgIHJlY3ZfdGNwX3JyKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fVENQX0NSUjoKKyAgICAgIHJlY3ZfdGNwX2Nvbm5fcnIoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19UQ1BfQ0M6CisgICAgICByZWN2X3RjcF9jYygpOworICAgICAgYnJlYWs7CisKKyNpZmRlZiBET18xNjQ0CisgICAgY2FzZSBET19UQ1BfVFJSOgorICAgICAgcmVjdl90Y3BfdHJhbl9ycigpOworICAgICAgYnJlYWs7CisjZW5kaWYgLyogRE9fMTY0NCAqLworCisjaWZkZWYgRE9fTkJSUgorICAgIGNhc2UgRE9fVENQX05CUlI6CisgICAgICByZWN2X3RjcF9uYnJyKCk7CisgICAgICBicmVhazsKKyNlbmRpZiAvKiBET19OQlJSICovCisKKyAgICBjYXNlIERPX1VEUF9TVFJFQU06CisgICAgICByZWN2X3VkcF9zdHJlYW0oKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19VRFBfUlI6CisgICAgICByZWN2X3VkcF9ycigpOworICAgICAgYnJlYWs7CisKKyNpZmRlZiBXQU5UX0RMUEkKKworICAgIGNhc2UgRE9fRExQSV9DT19SUjoKKyAgICAgIHJlY3ZfZGxwaV9jb19ycigpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX0RMUElfQ0xfUlI6CisgICAgICByZWN2X2RscGlfY2xfcnIoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19ETFBJX0NPX1NUUkVBTToKKyAgICAgIHJlY3ZfZGxwaV9jb19zdHJlYW0oKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19ETFBJX0NMX1NUUkVBTToKKyAgICAgIHJlY3ZfZGxwaV9jbF9zdHJlYW0oKTsKKyAgICAgIGJyZWFrOworCisjZW5kaWYgLyogV0FOVF9ETFBJICovCisKKyNpZmRlZiBXQU5UX1VOSVgKKworICAgIGNhc2UgRE9fU1RSRUFNX1NUUkVBTToKKyAgICAgIHJlY3Zfc3RyZWFtX3N0cmVhbSgpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX1NUUkVBTV9SUjoKKyAgICAgIHJlY3Zfc3RyZWFtX3JyKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fREdfU1RSRUFNOgorICAgICAgcmVjdl9kZ19zdHJlYW0oKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19ER19SUjoKKyAgICAgIHJlY3ZfZGdfcnIoKTsKKyAgICAgIGJyZWFrOworCisjZW5kaWYgLyogV0FOVF9VTklYICovCisKKyNpZmRlZiBXQU5UX1hUSQorICAgIGNhc2UgRE9fWFRJX1RDUF9TVFJFQU06CisgICAgICByZWN2X3h0aV90Y3Bfc3RyZWFtKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fWFRJX1RDUF9SUjoKKyAgICAgIHJlY3ZfeHRpX3RjcF9ycigpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX1hUSV9VRFBfU1RSRUFNOgorICAgICAgcmVjdl94dGlfdWRwX3N0cmVhbSgpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX1hUSV9VRFBfUlI6CisgICAgICByZWN2X3h0aV91ZHBfcnIoKTsKKyAgICAgIGJyZWFrOworCisjZW5kaWYgLyogV0FOVF9YVEkgKi8KKworI2lmZGVmIFdBTlRfU0NUUAorICAgIGNhc2UgRE9fU0NUUF9TVFJFQU06CisgICAgICByZWN2X3NjdHBfc3RyZWFtKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fU0NUUF9TVFJFQU1fTUFOWToKKyAgICAgIHJlY3Zfc2N0cF9zdHJlYW1fMXRvTWFueSgpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX1NDVFBfUlI6CisgICAgICByZWN2X3NjdHBfcnIoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBET19TQ1RQX1JSX01BTlk6CisgICAgICByZWN2X3NjdHBfcnJfMXRvTWFueSgpOworICAgICAgYnJlYWs7CisjZW5kaWYKKworI2lmZGVmIFdBTlRfU0RQCisgICAgY2FzZSBET19TRFBfU1RSRUFNOgorICAgICAgcmVjdl9zZHBfc3RyZWFtKCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRE9fU0RQX01BRVJUUzoKKyAgICAgIHJlY3Zfc2RwX21hZXJ0cygpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERPX1NEUF9SUjoKKyAgICAgIHJlY3Zfc2RwX3JyKCk7CisgICAgICBicmVhazsKKyNlbmRpZgorCisjaWZkZWYgV0FOVF9PTU5JCisgICAgY2FzZSBET19PTU5JOgorICAgICAgcmVjdl9vbW5pKCk7CisgICAgICBicmVhazsKKyNlbmRpZgorCisgICAgY2FzZSBQQVNTUEhSQVNFOgorICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwiSWdub3JpbmcgYW4gdW5leHBlY3RlZCBwYXNzcGhyYXNlIGNvbnRyb2wgbWVzc2FnZVxuIik7CisJZmZsdXNoKHdoZXJlKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGZwcmludGYod2hlcmUsInVua25vd24gdGVzdCBudW1iZXIgJWRcbiIsCisJICAgICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubz05OTg7CisgICAgICBzZW5kX3Jlc3BvbnNlKCk7CisgICAgICBicmVhazsKKworICAgIH0KKyAgfQorfQorCisvKiB0aGUgcm91dGluZSB3ZSBjYWxsIHdoZW4gd2UgYXJlIGdvaW5nIHRvIHNwYXduL2Zvcmsvd2hhdG5vdCBhIGNoaWxkCisgICBwcm9jZXNzIGZyb20gdGhlIHBhcmVudCBuZXRzZXJ2ZXIgZGFlbW9uLiByYWogMjAxMS0wNy0wOCAqLwordm9pZAorc3Bhd25fY2hpbGQoKSB7CisKKyNpZiBkZWZpbmVkKEhBVkVfRk9SSykKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGVudGVyXG4iLAorCSAgICBfX0ZVTkNUSU9OX18pOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworCisgIC8qIGZsdXNoIHRoZSB1c3VhbCBzdXNwZWN0cyAqLworICBmZmx1c2goc3RkaW4pOworICBmZmx1c2goc3Rkb3V0KTsKKyAgZmZsdXNoKHN0ZGVycik7CisgIGZmbHVzaCh3aGVyZSk7CisKKyAgc2lnbmFsKFNJR0NMRCxTSUdfSUdOKTsKKworICBzd2l0Y2ggKGZvcmsoKSkgeworICBjYXNlIC0xOgorICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZm9yaygpIGVycm9yICVzIChlcnJubyAlZClcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgc3RyZXJyb3IoZXJybm8pLAorCSAgICBlcnJubyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KDEpOworCisgIGNhc2UgMDoKKyAgICAvKiB3ZSBhcmUgdGhlIGNoaWxkLCBidXQgbm90IG9mIGluZXRkLiAgd2UgZG9uJ3Qga25vdyBpZiB3ZSBhcmUKKyAgICAgICB0aGUgY2hpbGQgb2YgYSBkYWVtb25pemVkIHBhcmVudCBvciBub3QsIHNvIHdlIHN0aWxsIG5lZWQgdG8KKyAgICAgICB3b3JyeSBhYm91dCB0aGUgc3RhbmRhcmQgZmlsZSBkZXNjcmlwdG9ycy4gcmFqIDIwMTEtMDctMTEgKi8KKworICAgIGNsb3NlX2xpc3RlbnMobGlzdGVuX2xpc3QpOworICAgIG9wZW5fZGVidWdfZmlsZSgpOworCisgICAgY2hpbGQgPSAxOworICAgIG5ldHBlcmZfZGFlbW9uID0gMDsKKyAgICBwcm9jZXNzX3JlcXVlc3RzKCk7CisgICAgZXhpdCgwKTsKKyAgICBicmVhazsKKworICBkZWZhdWx0OgorICAgIC8qIHdlIGFyZSB0aGUgcGFyZW50LCBub3QgYSBncmVhdCBkZWFsIHRvIGRvIGhlcmUsIGJ1dCB3ZSBtYXkKKyAgICAgICB3YW50IHRvIHJlYXAgc29tZSBjaGlsZHJlbiAqLworI2lmICFkZWZpbmVkKEhBVkVfU0VUU0lEKQorICAgIC8qIE9ubHkgY2FsbCAid2FpdHBpZCgpIiBpZiAic2V0c2lkKCkiIGlzIG5vdCB1c2VkLiAqLworICAgIHdoaWxlKHdhaXRwaWQoLTEsIE5VTEwsIFdOT0hBTkcpID4gMCkgeworICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwKKwkJIiVzOiByZWFwZWQgYSBjaGlsZCBwcm9jZXNzXG4iLAorCQlfX0ZVTkNUSU9OX18pOworICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIGJyZWFrOworICB9CisKKyNlbGlmIGRlZmluZWQoV0lOMzIpCisKKyAgQk9PTCBiOworICBjaGFyICpjbWRsaW5lOworICBpbnQgY21kbGluZV9sZW5ndGg7CisgIGludCBjbWRfaW5kZXg7CisgIFBST0NFU1NfSU5GT1JNQVRJT04gcGk7CisgIFNUQVJUVVBJTkZPIHNpOworICBpbnQgaTsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGVudGVyXG4iLAorCSAgICBfX0ZVTkNUSU9OX18pOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworCisgIC8qIGNyZWF0ZSB0aGUgY21kbGluZSBhcnJheSBiYXNlZCBvbiBzdHJsZW4ocHJvZ3JhbSkgKyA4MCBjaGFycyAqLworICBjbWRsaW5lX2xlbmd0aCA9IHN0cmxlbihwcm9ncmFtKSArIDgwOworICBjbWRsaW5lID0gbWFsbG9jKGNtZGxpbmVfbGVuZ3RoICsgMSk7ICAvLyArMSBmb3IgdHJhaWxpbmcgbnVsbAorCisgIG1lbXNldCgmc2ksIDAgLCBzaXplb2YoU1RBUlRVUElORk8pKTsKKyAgc2kuY2IgPSBzaXplb2YoU1RBUlRVUElORk8pOworCisgIC8qIFBhc3MgdGhlIHNlcnZlcl9zb2NrIGFzIHN0ZGluIGZvciB0aGUgbmV3IHByb2Nlc3MuICBIb3BlZnVsbHkKKyAgICAgdGhpcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGNyZWF0ZWQgd2l0aCB0aGUgT0JKX0lOSEVSSVQKKyAgICAgYXR0cmlidXRlLiAqLworICBzaS5oU3RkSW5wdXQgPSAoSEFORExFKXNlcnZlcl9zb2NrOworICBzaS5oU3RkT3V0cHV0ID0gR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKTsKKyAgc2kuaFN0ZEVycm9yID0gR2V0U3RkSGFuZGxlKFNURF9FUlJPUl9IQU5ETEUpOworICBzaS5kd0ZsYWdzID0gU1RBUlRGX1VTRVNUREhBTkRMRVM7CisKKyAgLyogQnVpbGQgY21kbGluZSBmb3IgY2hpbGQgcHJvY2VzcyAqLworICBzdHJjcHkoY21kbGluZSwgcHJvZ3JhbSk7CisgIGNtZF9pbmRleCA9IHN0cmxlbihjbWRsaW5lKTsKKyAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKKyAgICBjbWRfaW5kZXggKz0gc25wcmludGYoJmNtZGxpbmVbY21kX2luZGV4XSwKKwkJCSAgY21kbGluZV9sZW5ndGggLSBjbWRfaW5kZXgsCisJCQkgICIgLXYgJWQiLAorCQkJICB2ZXJib3NpdHkpOworICB9CisgIGZvciAoaT0wOyBpIDwgZGVidWc7IGkrKykgeworICAgIGNtZF9pbmRleCArPSBzbnByaW50ZigmY21kbGluZVtjbWRfaW5kZXhdLAorCQkJICBjbWRsaW5lX2xlbmd0aCAtIGNtZF9pbmRleCwKKwkJCSAgIiAtZCIpOworICB9CisgIGNtZF9pbmRleCArPSBzbnByaW50ZigmY21kbGluZVtjbWRfaW5kZXhdLAorCQkJY21kbGluZV9sZW5ndGggLSBjbWRfaW5kZXgsCisJCQkiIC1JICV4IiwKKwkJCShpbnQpKFVJTlRfUFRSKXNlcnZlcl9zb2NrKTsKKworICAvKiBhcmUgdGhlc2UgLWkgc2V0dGluZ3MgZXZlbiBuZWNlc3Nhcnk/IHRoZSBjb21tYW5kIGxpbmUgc2Nhbm5pbmcKKyAgICAgZG9lcyBub3Qgc2VlbSB0byBkbyBhbnl0aGluZyB3aXRoIHRoZW0gKi8KKyAgY21kX2luZGV4ICs9IHNucHJpbnRmKCZjbWRsaW5lW2NtZF9pbmRleF0sCisJCQljbWRsaW5lX2xlbmd0aCAtIGNtZF9pbmRleCwKKwkJCSIgLWkgJXgiLAorCQkJKGludCkoVUlOVF9QVFIpc2VydmVyX2NvbnRyb2wpOworICBjbWRfaW5kZXggKz0gc25wcmludGYoJmNtZGxpbmVbY21kX2luZGV4XSwKKwkJCWNtZGxpbmVfbGVuZ3RoIC0gY21kX2luZGV4LAorCQkJIiAtaSAleCIsCisJCQkoaW50KShVSU5UX1BUUil3aGVyZSk7CisKKyAgYiA9IENyZWF0ZVByb2Nlc3MoTlVMTCwgICAgLyogQXBwbGljYXRpb24gTmFtZSAqLworCQkgICAgY21kbGluZSwKKwkJICAgIE5VTEwsICAgIC8qIFByb2Nlc3Mgc2VjdXJpdHkgYXR0cmlidXRlcyAqLworCQkgICAgTlVMTCwgICAgLyogVGhyZWFkIHNlY3VyaXR5IGF0dHJpYnV0ZXMgKi8KKwkJICAgIFRSVUUsICAgIC8qIEluaGVyaXQgaGFuZGxlcyAqLworCQkgICAgMCwgICAgICAgLyogQ3JlYXRpb24gZmxhZ3MKKwkJCQlQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OLCAgKi8KKwkJICAgIE5VTEwsICAgIC8qIEVudmlvcm5tZW50ICovCisJCSAgICBOVUxMLCAgICAvKiBDdXJyZW50IGRpcmVjdG9yeSAqLworCQkgICAgJnNpLCAgICAgLyogU3RhcnR1cEluZm8gKi8KKwkJICAgICZwaSk7CisgIGlmICghYikKKyAgICB7CisgICAgICBwZXJyb3IoIkNyZWF0ZVByb2Nlc3NmYWlsdXJlOiAiKTsKKyAgICAgIGZyZWUoY21kbGluZSk7IC8qIGV2ZW4gdGhvdWdoIHdlIGV4aXQgOikgKi8KKyAgICAgIGV4aXQoMSk7CisgICAgfQorCisgIC8qIFdlIGRvbid0IG5lZWQgdGhlIHRocmVhZCBvciBwcm9jZXNzIGhhbmRsZXMgYW55IG1vcmU7CisgICAgIGxldCB0aGVtIGdvIGF3YXkgb24gdGhlaXIgb3duIHRpbWVmcmFtZS4gKi8KKworICBDbG9zZUhhbmRsZShwaS5oVGhyZWFkKTsKKyAgQ2xvc2VIYW5kbGUocGkuaFByb2Nlc3MpOworCisgIC8qIHRoZSBjYWxsZXIvcGFyZW50IHdpbGwgY2xvc2Ugc2VydmVyX3NvY2sgKi8KKworICBmcmVlKGNtZGxpbmUpOworCisjZWxzZQorCisgIGZwcmludGYod2hlcmUsCisJICAiJXMgY2FsbGVkIG9uIHBsYXRmb3JtIHdoaWNoIGNhbm5vdCBzcGF3biBjaGlsZHJlblxuIiwKKwkgIF9fRlVOQ1RJT05fXyk7CisgIGZmbHVzaCh3aGVyZSk7CisgIGV4aXQoMSk7CisKKyNlbmRpZiAvKiBIQVZFX0ZPUksgKi8KK30KKwordm9pZAorYWNjZXB0X2Nvbm5lY3Rpb24oU09DS0VUIGxpc3Rlbl9mZCkgeworCisgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHBlZXJhZGRyOworICBuZXRwZXJmX3NvY2tsZW5fdCBwZWVyYWRkcmxlbjsKKyNpZiBkZWZpbmVkKFNPX0tFRVBBTElWRSkKKyAgaW50IG9uID0gMTsKKyNlbmRpZgorCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZW50ZXJcbiIsCisJICAgIF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIHBlZXJhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyKTsKKworICAvKiB3aGlsZSBzZXJ2ZXJfY29udHJvbCBpcyBvbmx5IHVzZWQgYnkgdGhlIFdJTjMyIHBhdGgsIGJ1dCB3aHkKKyAgICAgYm90aGVyIGlmZGVmJ2luZyBpdD8gIGFuZCBiZXNpZGVzLCBkbyB3ZSAqcmVhbGx5KiBuZWVkIGtub3dsZWRnZQorICAgICBvZiBzZXJ2ZXJfY29udHJvbCBpbiB0aGUgV0lOMzIgY2FzZT8gZG8gd2UgaGF2ZSB0byB0ZWxsIHRoZQorICAgICBjaGlsZCBhYm91dCAqYWxsKiB0aGUgbGlzdGVuIGVuZHBvaW50cz8gcmFqIDIwMTEtMDctMDggKi8KKyAgc2VydmVyX2NvbnRyb2wgPSBsaXN0ZW5fZmQ7CisKKyAgaWYgKChzZXJ2ZXJfc29jayA9IGFjY2VwdChsaXN0ZW5fZmQsCisJCQkgICAoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyLAorCQkJICAgICZwZWVyYWRkcmxlbikpID09IElOVkFMSURfU09DS0VUKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBhY2NlcHQgZmFpbHVyZTogJXMgKGVycm5vICVkKVxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBzdHJlcnJvcihlcnJubyksCisJICAgIGVycm5vKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoMSk7CisgIH0KKworI2lmIGRlZmluZWQoU09fS0VFUEFMSVZFKQorICAvKiB3ZSBhcmUgbm90IHRlcnJpYmx5IGNvbmNlcm5lZCBpZiB0aGlzIGRvZXMgbm90IHdvcmssIGl0IGlzIG1lcmVseQorICAgICBkdWN0IHRhcGUgYWRkZWQgdG8gYmVsdHMgYW5kIHN1c3BlbmRlcnMuIHJhaiAyMDExLTA3LTA4ICovCisgIHNldHNvY2tvcHQoc2VydmVyX3NvY2ssCisJICAgICBTT0xfU09DS0VULAorCSAgICAgU09fS0VFUEFMSVZFLAorCSAgICAgKGNvbnN0IGNoYXIgKikmb24sCisJICAgICBzaXplb2Yob24pKTsKKyNlbmRpZgorCisgIGlmIChzcGF3bl9vbl9hY2NlcHQpIHsKKyAgICBzcGF3bl9jaGlsZCgpOworICAgIC8qIHNwYXduX2NoaWxkKCkgb25seSByZXR1cm5zIHdoZW4gd2UgYXJlIHRoZSBwYXJlbnQgKi8KKyAgICBjbG9zZShzZXJ2ZXJfc29jayk7CisgIH0KKyAgZWxzZSB7CisgICAgcHJvY2Vzc19yZXF1ZXN0cygpOworICB9Cit9CisKK3ZvaWQKK2FjY2VwdF9jb25uZWN0aW9ucygpIHsKKworICBmZF9zZXQgcmVhZF9mZHMsIHdyaXRlX2ZkcywgZXhjZXB0X2ZkczsKKyAgU09DS0VUIGhpZ2hfZmQsIGNhbmRpZGF0ZTsKKyAgaW50IG51bV9yZWFkeTsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGVudGVyXG4iLAorCSAgICBfX0ZVTkNUSU9OX18pOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICB3aGlsZSAoMSkgeworCisgICAgRkRfWkVSTygmd3JpdGVfZmRzKTsKKyAgICBGRF9aRVJPKCZleGNlcHRfZmRzKTsKKyAgICBoaWdoX2ZkID0gc2V0X2Zkc2V0KGxpc3Rlbl9saXN0LCZyZWFkX2Zkcyk7CisKKyNpZiAhZGVmaW5lZChXSU4zMikKKyAgICBudW1fcmVhZHkgPSBzZWxlY3QoaGlnaF9mZCArIDEsCisjZWxzZQorICAgIG51bV9yZWFkeSA9IHNlbGVjdCgxLAorI2VuZGlmCisJCSAgICAgICAmcmVhZF9mZHMsCisJCSAgICAgICAmd3JpdGVfZmRzLAorCQkgICAgICAgJmV4Y2VwdF9mZHMsCisJCSAgICAgICBOVUxMKTsKKworICAgIGlmIChudW1fcmVhZHkgPCAwKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICIlczogc2VsZWN0IGZhaWx1cmU6ICVzIChlcnJubyAlZClcbiIsCisJICAgICAgX19GVU5DVElPTl9fLAorCSAgICAgIHN0cmVycm9yKGVycm5vKSwKKwkgICAgICBlcnJubyk7CisgICAgICBmZmx1c2god2hlcmUpOworICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICAvKiB0cnkgdG8ga2VlcCB0aGluZ3Mgc2ltcGxlICovCisgICAgY2FuZGlkYXRlID0gMDsKKyAgICB3aGlsZSAoKG51bV9yZWFkeSkgJiYgKGNhbmRpZGF0ZSA8PSBoaWdoX2ZkKSkgeworICAgICAgaWYgKEZEX0lTU0VUKGNhbmRpZGF0ZSwmcmVhZF9mZHMpKSB7CisJYWNjZXB0X2Nvbm5lY3Rpb24oY2FuZGlkYXRlKTsKKwlGRF9DTFIoY2FuZGlkYXRlLCZyZWFkX2Zkcyk7CisJbnVtX3JlYWR5LS07CisgICAgICB9CisgICAgICBlbHNlIHsKKwljYW5kaWRhdGUrKzsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworI2lmbmRlZiBXSU4zMgorI2RlZmluZSBTRVJWRVJfQVJHUyAiRGRmaEw6bjpOcDp2OlZaOjQ2IgorI2Vsc2UKKyNkZWZpbmUgU0VSVkVSX0FSR1MgIkRkZmhMOm46TnA6djpWWjo0Nkk6aToiCisjZW5kaWYKK3ZvaWQKK3NjYW5fbmV0c2VydmVyX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworCisgIGludCBjOworICBjaGFyIGFyZzFbQlVGU0laXSwgYXJnMltCVUZTSVpdOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlczogZW50ZXJcbiIsCisJICAgIF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIHdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCBTRVJWRVJfQVJHUykpICE9IEVPRil7CisgICAgc3dpdGNoIChjKSB7CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnaCc6CisgICAgICBwcmludF9uZXRzZXJ2ZXJfdXNhZ2UoKTsKKyAgICAgIGV4aXQoMSk7CisgICAgY2FzZSAnZCc6CisgICAgICBkZWJ1ZysrOworICAgICAgc3VwcHJlc3NfZGVidWcgPSAwOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnRCc6CisgICAgICAvKiBwZXJoYXBzIG9uZSBvZiB0aGVzZSBkYXlzIHdlJ2xsIHRha2UgYW4gYXJndW1lbnQgKi8KKyAgICAgIHdhbnRfZGFlbW9uaXplID0gMDsKKyAgICAgIG5vdF9pbmV0ZCA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlICdmJzoKKyAgICAgIHNwYXduX29uX2FjY2VwdCA9IDA7CisgICAgICBub3RfaW5ldGQgPSAxOworICAgICAgYnJlYWs7CisjaWZkZWYgV0lOMzIKKyAgICBjYXNlICdJJzoKKyAgICAgIGNoaWxkID0gVFJVRTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2knOgorICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlICdMJzoKKyAgICAgIG5vdF9pbmV0ZCA9IDE7CisgICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pIHsKKwlzdHJuY3B5KGxvY2FsX2hvc3RfbmFtZSxhcmcxLHNpemVvZihsb2NhbF9ob3N0X25hbWUpKTsKKyAgICAgIH0KKyAgICAgIGlmIChhcmcyWzBdKSB7CisJbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBwYXJzZV9hZGRyZXNzX2ZhbWlseShhcmcyKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ24nOgorICAgICAgc2hlbGxfbnVtX2NwdXMgPSBhdG9pKG9wdGFyZyk7CisgICAgICBpZiAoc2hlbGxfbnVtX2NwdXMgPiBNQVhDUFVTKSB7CisJZnByaW50ZihzdGRlcnIsCisJCSJuZXRzZXJ2ZXI6IFRoaXMgdmVyc2lvbiBjYW4gb25seSBzdXBwb3J0ICVkIENQVXMuIFBsZWFzZSIKKwkJImluY3JlYXNlIE1BWENQVVMgaW4gbmV0bGliLmggYW5kIHJlY29tcGlsZS5cbiIsCisJCU1BWENQVVMpOworCWZmbHVzaChzdGRlcnIpOworCWV4aXQoMSk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICdOJzoKKyAgICAgIHN1cHByZXNzX2RlYnVnID0gMTsKKyAgICAgIGRlYnVnID0gMDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3AnOgorICAgICAgLyogd2Ugd2FudCB0byBvcGVuIGEgbGlzdGVuIHNvY2tldCBhdCBhIHNwZWNpZmllZCBwb3J0IG51bWJlciAqLworICAgICAgc3RybmNweShsaXN0ZW5fcG9ydCxvcHRhcmcsc2l6ZW9mKGxpc3Rlbl9wb3J0KSk7CisgICAgICBub3RfaW5ldGQgPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnWic6CisgICAgICAvKiBvbmx5IGNvcHkgYXMgbXVjaCBvZiB0aGUgcGFzc3BocmFzZSBhcyBjb3VsZCBmaXQgaW4gdGhlCisJIHRlc3Qtc3BlY2lmaWMgcG9ydGlvbiBvZiBhIGNvbnRyb2wgbWVzc2FnZS4gV2luZG93cyBkb2VzIG5vdAorCSBzZWVtIHRvIGhhdmUgYSBzdHJuZHVwKCkgc28ganVzdCBtYWxsb2MgYW5kIHN0cm5jcHkgaXQuICB3ZQorCSB3ZXJlbid0IGNoZWNraW5nIHRoZSBzdHJuZHVwKCkgcmV0dXJuIHNvIHdvbid0IGJvdGhlciB3aXRoCisJIGNoZWNraW5nIG1hbGxvYygpLiB3ZSB3aWxsIHRob3VnaCBtYWtlIGNlcnRhaW4gd2Ugb25seQorCSBhbGxvY2F0ZWQgaXQgb25jZSBpbiB0aGUgZXZlbnQgdGhhdCBzb21lb25lIHB1dHMgLVogb24gdGhlCisJIGNvbW1hbmQgbGluZSBtb3JlIHRoYW4gb25jZSAqLworICAgICAgaWYgKHBhc3NwaHJhc2UgPT0gTlVMTCkgCisJcGFzc3BocmFzZSA9IG1hbGxvYyhzaXplb2YobmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhKSk7CisgICAgICBzdHJuY3B5KHBhc3NwaHJhc2UsCisJICAgICAgb3B0YXJnLAorCSAgICAgIHNpemVvZihuZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEpKTsKKyAgICAgIHBhc3NwaHJhc2Vbc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSkgLSAxXSA9ICdcMCc7CisgICAgICBicmVhazsKKyAgICBjYXNlICc0JzoKKyAgICAgIGxvY2FsX2FkZHJlc3NfZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJzYnOgorI2lmIGRlZmluZWQoQUZfSU5FVDYpCisgICAgICBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IEFGX0lORVQ2OworI2Vsc2UKKyAgICAgIGxvY2FsX2FkZHJlc3NfZmFtaWx5ID0gQUZfVU5TUEVDOworI2VuZGlmCisgICAgICBicmVhazsKKyAgICBjYXNlICd2JzoKKyAgICAgIC8qIHNheSBob3cgbXVjaCB0byBzYXkgKi8KKyAgICAgIHZlcmJvc2l0eSA9IGF0b2kob3B0YXJnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1YnOgorICAgICAgcHJpbnRmKCJOZXRwZXJmIHZlcnNpb24gJXNcbiIsTkVUUEVSRl9WRVJTSU9OKTsKKyAgICAgIGV4aXQoMCk7CisgICAgICBicmVhazsKKworICAgIH0KKyAgfQorfQorCit2b2lkCitkYWVtb25pemUoKSB7CisjaWYgZGVmaW5lZChIQVZFX0ZPUkspCisKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBlbnRlclxuIiwKKwkgICAgX19GVU5DVElPTl9fKTsKKyAgICBmZmx1c2god2hlcmUpOworICB9CisKKyAgLyogZmx1c2ggdGhlIHVzdWFsIHN1c3BlY3RzICovCisgIGZmbHVzaChzdGRpbik7CisgIGZmbHVzaChzdGRvdXQpOworICBmZmx1c2goc3RkZXJyKTsKKworICBzd2l0Y2ggKGZvcmsoKSkgeworICBjYXNlIC0xOgorICAgIGZwcmludGYoc3RkZXJyLAorCSAgICAiJXM6IGZvcmsoKSBlcnJvciAlcyAoZXJybm8gJWQpXG4iLAorCSAgICBfX0ZVTkNUSU9OX18sCisJICAgIHN0cmVycm9yKGVycm5vKSwKKwkgICAgZXJybm8pOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIGV4aXQoMSk7CisgIGNhc2UgMDoKKworICAgIC8qIHBlcmhhcHMgYmVsdCBhbmQgc3VzcGVuZGVycywgYnV0IGlmIHdlIGR1bXAgY29yZSwgcGVyaGFwcworICAgICAgIGJldHRlciB0byBkbyBzbyBoZXJlLiB3ZSB3b24ndCB3b3JyeSBhYm91dCB0aGUgY2FsbCBiZWluZworICAgICAgIHN1Y2Nlc3NmdWwgdGhvdWdoLiByYWogMjAxMS0wNy0wOCAqLworICAgIGNoZGlyKERFQlVHX0xPR19GSUxFX0RJUik7CisKKyAgICAvKiB3ZSBhcmUgdGhlIGNoaWxkLiB3ZSBzaG91bGQgZ2V0IGEgbmV3ICJ3aGVyZSIgdG8gbWF0Y2ggb3VyIG5ldworICAgICAgIHBpZCAqLworCisgICAgb3Blbl9kZWJ1Z19maWxlKCk7CisKKyNpZmRlZiBIQVZFX1NFVFNJRAorICAgICAgc2V0c2lkKCk7CisjZWxzZQorICAgICAgc2V0cGdycCgpOworI2VuZGlmIC8qIEhBVkVfU0VUU0lEICovCisKKyAgICAgIHNpZ25hbChTSUdDTEQsIFNJR19JR04pOworCisgICAgICAvKiBvaywgd2UgY2FuIHN0YXJ0IGFjY2VwdGluZyBjb250cm9sIGNvbm5lY3Rpb25zIG5vdyAqLworICAgICAgYWNjZXB0X2Nvbm5lY3Rpb25zKCk7CisKKyAgZGVmYXVsdDoKKyAgICAvKiB3ZSBhcmUgdGhlIHBhcmVudCwgbm90aGluZyB0byBkbyBidXQgZXhpdD8gKi8KKyAgICBleGl0KDApOworICB9CisKKyNlbHNlCisgIGZwcmludGYod2hlcmUsCisJICAiJXMgY2FsbGVkIG9uIHBsYXRmb3JtIHdoaWNoIGNhbm5vdCBkYWVtb25pemVcbiIsCisJICBfX0ZVTkNUSU9OX18pOworICBmZmx1c2god2hlcmUpOworICBleGl0KDEpOworI2VuZGlmIC8qIEhBVkVfRk9SSyAqLworfQorCitzdGF0aWMgdm9pZAorY2hlY2tfaWZfaW5ldGQoKSB7CisKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiBlbnRlclxuIiwKKwkgICAgX19GVU5DVElPTl9fKTsKKyAgICBmZmx1c2god2hlcmUpOworICB9CisKKyAgaWYgKG5vdF9pbmV0ZCkgeworICAgIHJldHVybjsKKyAgfQorICBlbHNlIHsKKyNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19WTVMpCisgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgbmFtZTsKKyAgICBuZXRwZXJmX3NvY2tsZW5fdCBuYW1lbGVuOworCisgICAgbmFtZWxlbiA9IHNpemVvZihuYW1lKTsKKyAgICBpZiAoZ2V0c29ja25hbWUoMCwKKwkJICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbmFtZSwKKwkJICAgICZuYW1lbGVuKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgIG5vdF9pbmV0ZCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgbm90X2luZXRkID0gMDsKKyAgICAgIGNoaWxkID0gMTsKKyAgICB9CisjZW5kaWYKKyAgfQorfQorCisvKiBPSywgc28gaG93IGRvZXMgYWxsIHRoaXMgd29yayB5b3UgYXNrPyAgV2VsbCwgd2UgYXJlIGluIGEgbWF6ZSBvZgorICAgdHdpc3R5IG9wdGlvbnMsIGFsbCBkaWZmZXJlbnQuICBOZXRzZXJ2ZXIgY2FuIGJlIGludm9rZWQgYXMgYSBjaGlsZAorICAgb2YgaW5ldGQgb3IgdGhlIFZNUyBhdXhpbGlhcnkgc2VydmVyIHByb2Nlc3MsIG9yIGEgcGFyZW50IG5ldHNlcnZlcgorICAgcHJvY2Vzcy4gSW4gdGhvc2UgY2FzZXMsIHdlIGNvdWxkL3Nob3VsZCBmb2xsb3cgdGhlICJjaGlsZCIKKyAgIHBhdGguIEhvd2V2ZXIsIHRoZXJlIGFyZSByZWFsbHkgdHdvICJjaGlsZCIgcGF0aHMgdGhyb3VnaCB0aGUKKyAgIG5ldHNlcnZlciBjb2RlLgorCisgICBXaGVuIHRoaXMgbmV0c2VydmVyIGlzIGEgY2hpbGQgb2YgYSBwYXJlbnQgbmV0c2VydmVyIGluIHRoZQorICAgY2FzZSBvZiAqbml4LCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGNyZWF0ZWQgYnkgYQorICAgc3Bhd25fY2hpbGRfcHJvY2VzcygpIGluIGFjY2VwdF9jb25uZWN0aW9ucygpIGFuZCB3aWxsIG5vdCBoaXQgdGhlCisgICAiY2hpbGQiIHBhdGggaGVyZSBpbiBtYWluKCkuCisKKyAgIFdoZW4gdGhpcyBuZXRzZXJ2ZXIgaXMgYSBjaGlsZCBvZiBhIHBhcmVudCBuZXRzZXJ2ZXIgaW4gdGhlIGNhc2Ugb2YKKyAgIHdpbmRvd3MsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgaGF2ZSBiZWVuIHNwYXduZWQgdmlhIGEKKyAgIENyZWF0ZV9Qcm9jZXNzKCkgY2FsbCBpbiBzcGF3bl9jaGlsZF9wcm9jZXNzKCkgaW4KKyAgIGFjY2VwdF9jb25uZWN0aW9ucywgYnV0IHdpbGwgZmxvdyB0aHJvdWdoIGhlcmUgYWdhaW4uIFdlIHJlbHkgb24KKyAgIHRoZSBzY2FuX25ldHNlcnZlcl9hcmdzKCkgY2FsbCB0byBoYXZlIG5vdGljZWQgdGhlIG1hZ2ljIG9wdGlvbgorICAgdGhhdCB0ZWxscyB1cyB3ZSBhcmUgYSBjaGlsZCBwcm9jZXNzLgorCisgICBXaGVuIHRoaXMgbmV0c2VydmVyIGlzIGxhdW5jaGVkIGZyb20gdGhlIGNvbW1hbmQgbGluZSB3ZSB3aWxsIGZpcnN0CisgICBzZXQtdXAgdGhlIGxpc3RlbiBlbmRwb2ludChzKSBmb3IgdGhlIGNvbnRyb2xsIGNvbm5lY3Rpb24uICBBdCB0aGF0CisgICBwb2ludCB3ZSBkZWNpZGUgaWYgd2Ugd2FudCB0byBhbmQgY2FuIGJlY29tZSBvdXIgb3duIGRhZW1vbiwgb3IKKyAgIHN0YXkgYXR0YWNoZWQgdG8gdGhlICJ0ZXJtaW5hbC4iICBXaGVuIHRoaXMgaGFwcGVucyB1bmRlciAqbml4LCB3ZQorICAgd2lsbCBhZ2FpbiB0YWtlIGEgZm9yaygpIHBhdGggdmlhIGRhZW1vbml6ZSgpIGFuZCB3aWxsIG5vdCBjb21lCisgICBiYWNrIHRocm91Z2ggbWFpbigpLiAgSWYgd2UgZXZlciBsZWFybiBob3cgdG8gYmVjb21lIG91ciBvd24gZGFlbW9uCisgICB1bmRlciBXaW5kb3dzLCB3ZSB3aWxsIHVuZG91YnRlZGx5IHRha2UgYSBDcmVhdGVfUHJvY2VzcygpIHBhdGgKKyAgIGFnYWluIGFuZCB3aWxsIGNvbWUgdGhyb3VnaCBtYWluKCkgb25jZSBhZ2FpbiAtIHRoYXQgaXMgd2hhdCB0aGUKKyAgICJkYWVtb24iIGNhc2UgaGVyZSBpcyBhbGwgYWJvdXQuCisKKyAgIEl0IGlzIGhvcGVkIHRoYXQgdGhpcyBpcyBhbGwgbXVjaCBjbGVhcmVyIHRoYW4gdGhlIG9sZCBzcGFnaGV0dGkKKyAgIGNvZGUgdGhhdCBuZXRzZXJ2ZXIgaGFkIGJlY29tZS4gIHJhaiAyMDExLTA3LTExICovCisKKworaW50IF9jZGVjbAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisKKyNpZmRlZiBXSU4zMgorICBXU0FEQVRBCXdzYV9kYXRhIDsKKworICAvKiBJbml0aWFsaXplIHRoZSB3aW5zb2NrIGxpYiBkbyB3ZSBzdGlsbCB3YW50IHZlcnNpb24gMi4yPyAqLworICBpZiAoIFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwyKSwgJndzYV9kYXRhKSA9PSBTT0NLRVRfRVJST1IgKXsKKyAgICBwcmludGYoIldTQVN0YXJ0dXAoKSBmYWlsZWQgOiAlbHVcbiIsIEdldExhc3RFcnJvcigpKSA7CisgICAgcmV0dXJuIC0xIDsKKyAgfQorI2VuZGlmIC8qIFdJTjMyICovCisKKyAgLyogU2F2ZSBhd2F5IHRoZSBwcm9ncmFtIG5hbWUgKi8KKyAgcHJvZ3JhbSA9IChjaGFyICopbWFsbG9jKHN0cmxlbihhcmd2WzBdKSArIDEpOworICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAgcHJpbnRmKCJtYWxsb2MgZm9yIHByb2dyYW0gbmFtZSBmYWlsZWQhXG4iKTsKKyAgICByZXR1cm4gLTEgOworICB9CisgIHN0cmNweShwcm9ncmFtLCBhcmd2WzBdKTsKKworICBpbml0X25ldHNlcnZlcl9nbG9iYWxzKCk7CisKKyAgbmV0bGliX2luaXQoKTsKKworICBzdHJuY3B5KGxvY2FsX2hvc3RfbmFtZSwiIixzaXplb2YobG9jYWxfaG9zdF9uYW1lKSk7CisgIGxvY2FsX2FkZHJlc3NfZmFtaWx5ID0gQUZfVU5TUEVDOworICBzdHJuY3B5KGxpc3Rlbl9wb3J0LFRFU1RfUE9SVCxzaXplb2YobGlzdGVuX3BvcnQpKTsKKworICBzY2FuX25ldHNlcnZlcl9hcmdzKGFyZ2MsIGFyZ3YpOworCisgIGNoZWNrX2lmX2luZXRkKCk7CisKKyAgaWYgKGNoaWxkKSB7CisgICAgLyogd2UgYXJlIHRoZSBjaGlsZCBvZiBlaXRoZXIgYW4gaW5ldGQgb3IgcGFyZW50IG5ldHNlcnZlciB2aWEKKyAgICAgICBzcGF3bmluZyAoV2luZG93cykgcmF0aGVyIHRoYW4gZm9yaygpaW5nLiBpZiB3ZSB3ZXJlIGZvcmsoKWVkCisgICAgICAgd2Ugd291bGQgbm90IGJlIGNvbWluZyB0aHJvdWdoIHRoaXMgd2F5LiBzZXRfc2VydmVyX3NvY2soKSBtdXN0CisgICAgICAgYmUgY2FsbGVkIGJlZm9yZSBvcGVuX2RlYnVnX2ZpbGUoKSBvciB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0CisgICAgICAgd2UnbGwgdG9hc3QgdGhlIGRlc2NyaXB0b3Igd2hlbiB3ZSBkbyBub3Qgd2lzaCBpdC4gKi8KKyAgICBzZXRfc2VydmVyX3NvY2soKTsKKyAgICBvcGVuX2RlYnVnX2ZpbGUoKTsKKyAgICBwcm9jZXNzX3JlcXVlc3RzKCk7CisgIH0KKyAgZWxzZSBpZiAoZGFlbW9uX3BhcmVudCkgeworICAgIC8qIHdlIGFyZSB0aGUgcGFyZW50IGRhZW1vbml6ZWQgbmV0c2VydmVyCisgICAgICAgcHJvY2Vzcy4gYWNjZXB0X2Nvbm5lY3Rpb25zKCkgd2lsbCBkZWNpZGUgaWYgd2Ugd2FudCB0byBzcGF3biBhCisgICAgICAgY2hpbGQgcHJvY2VzcyAqLworICAgIGFjY2VwdF9jb25uZWN0aW9ucygpOworICB9CisgIGVsc2UgeworICAgIC8qIHdlIGFyZSB0aGUgdG9wIG5ldHNlcnZlciBwcm9jZXNzLCBzbyB3ZSBoYXZlIHRvIGNyZWF0ZSB0aGUKKyAgICAgICBsaXN0ZW4gZW5kcG9pbnQocykgYW5kIGRlY2lkZSBpZiB3ZSB3YW50IHRvIGRhZW1vbml6ZSAqLworICAgIHNldHVwX2xpc3RlbnMobG9jYWxfaG9zdF9uYW1lLGxpc3Rlbl9wb3J0LGxvY2FsX2FkZHJlc3NfZmFtaWx5KTsKKyAgICBpZiAod2FudF9kYWVtb25pemUpIHsKKyAgICAgIGRhZW1vbml6ZSgpOworICAgIH0KKyAgICBhY2NlcHRfY29ubmVjdGlvbnMoKTsKKyAgfQorCisgIHVubGlua19lbXB0eV9kZWJ1Z19maWxlKCk7CisKKyNpZmRlZiBXSU4zMgorICBXU0FDbGVhbnVwKCk7CisjZW5kaWYKKworICByZXR1cm4gMDsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL25ldHNoLmMgYi9zcmMvbmV0c2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODA3ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL25ldHNoLmMKQEAgLTAsMCArMSwxMzIzIEBACisjaW5jbHVkZSAibmV0cGVyZl92ZXJzaW9uLmgiCisKK2NoYXIJbmV0c2hfaWRbXT0iXAorQCgjKW5ldHNoLmMgKGMpIENvcHlyaWdodCAxOTkzLTIwMTIgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkuIFZlcnNpb24gMi42LjAiOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoJCQkJCQkJCSovCisvKglHbG9iYWwgaW5jbHVkZSBmaWxlcwkJCQkJKi8KKy8qCQkJCQkJCQkqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaWZuZGVmIFdJTjMyCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNlbHNlCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjaW5jbHVkZSAibWlzc2luZ1xzdGRpbnQuaCIKKy8qIHdoaWxlIGl0IGlzIHVubGlrZWx5IHRoYXQgYW55b25lIHJ1bm5pbmcgV2luZG93cyAyMDAwIG9yIE5UIDQgaXMKKyAgIGdvaW5nIHRvIGJlIHRyeWluZyB0byBjb21waWxlIHRoaXMsIGlmIHRoZXkgYXJlIHRoZXkgd2lsbCB3YW50IHRvCisgICBkZWZpbmUgRE9OVF9JUFY2IGluIHRoZSBzb3VyY2VzIGZpbGUgKi8KKyNpZm5kZWYgRE9OVF9JUFY2CisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorI2RlZmluZSBuZXRwZXJmX3NvY2tsZW5fdCBzb2NrbGVuX3QKK2V4dGVybglpbnQJZ2V0b3B0KGludCAsIGNoYXIgKiosIGNoYXIgKikgOworI2VuZGlmCisKKworI2lmbmRlZiBTVFJJTkdTCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZSAvKiBTVFJJTkdTICovCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmIC8qIFNUUklOR1MgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgIExvY2FsIEluY2x1ZGUgRmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSAgTkVUU0gKKyNpbmNsdWRlICJuZXRzaC5oIgorI2luY2x1ZGUgIm5ldGxpYi5oIgorI2luY2x1ZGUgIm5ldHRlc3RfYnNkLmgiCisKKyNpZmRlZiBXQU5UX1VOSVgKKyNpbmNsdWRlICJuZXR0ZXN0X3VuaXguaCIKKyNlbmRpZiAvKiBXQU5UX1VOSVggKi8KKworI2lmZGVmIFdBTlRfWFRJCisjaW5jbHVkZSAibmV0dGVzdF94dGkuaCIKKyNlbmRpZiAvKiBXQU5UX1hUSSAqLworCisjaWZkZWYgV0FOVF9ETFBJCisjaW5jbHVkZSAibmV0dGVzdF9kbHBpLmgiCisjZW5kaWYgLyogV0FOVF9ETFBJICovCisKKyNpZmRlZiBXQU5UX1NDVFAKKyNpbmNsdWRlICJuZXR0ZXN0X3NjdHAuaCIKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoJCQkJCQkJCQkqLworLyoJR2xvYmFsIGNvbnN0YW50cyAgYW5kIG1hY3JvcwkJCQkJKi8KKy8qCQkJCQkJCQkJKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFNvbWUgb2YgdGhlIGFyZ3MgdGFrZSBvcHRpb25hbCBwYXJhbWV0ZXJzLiBTaW5jZSB3ZSBhcmUgdXNpbmcKKyAgIGdldG9wdCB0byBwYXJzZSB0aGUgY29tbWFuZCBsaW5lLCB3ZSB3aWxsIHRlbGwgZ2V0b3B0IHRoYXQgdGhleSBkbworICAgbm90IHRha2UgcGFybXMsIGFuZCB0aGVuIGxvb2sgZm9yIHRoZW0gb3Vyc2VsdmVzICovCisKKyNkZWZpbmUgR0xPQkFMX0NNRF9MSU5FX0FSR1MgIkE6YTpiOkI6Q2NkRDpmOkY6SDpoaTpJOmprOks6bDpMOm46Tk86bzpQOnA6clNzOnQ6VDp2OlZXOnc6eTpZOlo6NDYiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgkJCQkJCQkJCSovCisvKglHbG9iYWwgdmFyaWFibGVzIAkJCQkJCSovCisvKgkJCQkJCQkJCSovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBzb21lIG5hbWVzIGFuZCBzdWNoICovCitjaGFyICpwcm9ncmFtOwkJLyogcHJvZ3JhbSBpbnZvY2F0aW9uIG5hbWUgKi8KK2NoYXIgKmNvbW1hbmRfbGluZTsgICAgIC8qIGEgY29weSBvZiB0aGUgZW50aXJlIGNvbW1hbmQgbGluZSAqLworCisvKiBzdHVmZiB0byBzYXkgd2hlcmUgdGhpcyB0ZXN0IGlzIGdvaW5nICovCitjaGFyCisgIGhvc3RfbmFtZVtIT1NUTkFNRVNJWkVdID0gIiIsCSAgICAgIC8qIHJlbW90ZSBob3N0IG5hbWUgb3IgaXAgYWRkciAqLworICBsb2NhbF9ob3N0X25hbWVbSE9TVE5BTUVTSVpFXSA9ICIiLCAvKiBsb2NhbCBob3N0bmFtZSBvciBpcCAqLworICB0ZXN0X25hbWVbQlVGU0laXSA9ICJUQ1BfU1RSRUFNIiwgICAvKiB3aGljaCB0ZXN0IHRvIHJ1biAqLworICB0ZXN0X3BvcnRbUE9SVEJVRlNJWkVdID0gIjEyODY1IiwgICAvKiB3aGVyZSBpcyB0aGUgdGVzdCB3YWl0aW5nICovCisgIGxvY2FsX3Rlc3RfcG9ydFtQT1JUQlVGU0laRV0gPSAiMCI7IC8qIGZyb20gd2hlbmNlIHdlIHNob3VsZCBzdGFydCAqLworCitpbnQKKyAgYWRkcmVzc19mYW1pbHkgPSBBRl9VTlNQRUMsICAgICAgIC8qIHdoaWNoIGFkZHJlc3MgZmFtaWx5IHJlbW90ZSAqLworICBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IEFGX1VOU1BFQzsgLyogd2hpY2ggYWRkcmVzcyBmYW1pbHkgbG9jYWwgKi8KKworLyogdGhlIHNvdXJjZSBvZiBkYXRhIGZvciBmaWxsaW5nIHRoZSBidWZmZXJzICovCitjaGFyICAgIGxvY2FsX2ZpbGxfZmlsZVtCVUZTSVpdID0gIiI7CitjaGFyICAgIHJlbW90ZV9maWxsX2ZpbGVbMzJdID0gIiI7IC8qIHNpemUgbGltaXRlZCBmb3IgY29udHJvbCBtZXNzYWdlICovCisKKy8qIG91dHB1dCBjb250cm9sbGluZyB2YXJpYWJsZXMgKi8KK2ludAorICBkZWJ1ZyA9IDAsCQkJLyogZGVidWdnaW5nIGxldmVsICovCisgIHByaW50X2hlYWRlcnMgPSAxLAkJLyogZG8vZG9uJ3QgZGlzcGxheSBoZWFkZXJzICovCisgIHZlcmJvc2l0eSA9IDEsCQkvKiB2ZXJib3NpdHkgbGV2ZWwgKi8KKyAga2VlcF9oaXN0b2dyYW0gPSAwLAorICBrZWVwX3N0YXRpc3RpY3MgPSAwOworCisvKiBXaGVuIHNwZWNpZmllZCB3aXRoIC1CLCB0aGlzIHdpbGwgYmUgZGlzcGxheWVkIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAgIGZvciBvdXRwdXQgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB0ZXN0IGhlYWRlci4gIG1vc3RseSB0aGlzIGlzCisgICB0byBoZWxwIGlkZW50aWZ5IGEgc3BlY2lmaWMgbmV0cGVyZiByZXN1bHQgd2hlbiBjb25jdXJyZW50IG5ldHBlcmZzCisgICBhcmUgcnVuLiByYWogMjAwNi0wMi0wMSAqLworY2hhciAqcmVzdWx0X2JyYW5kID0gTlVMTDsKKworLyogY3B1IHZhcmlhYmxlcyAqLworaW50CisgIGxvY2FsX2NwdV91c2FnZSA9IDAsCS8qIHlvdSBndWVzc2VkIGl0ICovCisgIHJlbW90ZV9jcHVfdXNhZ2UgPSAwOwkvKiBzdGlsbCByaWdodCAhICovCisKK2Zsb2F0CisgIGxvY2FsX2NwdV9yYXRlID0gMC4wRiwKKyAgcmVtb3RlX2NwdV9yYXRlID0gMC4wRjsKKworaW50CisgIHNoZWxsX251bV9jcHVzPTE7CisKKy8qIHRoZSBlbmQtdGVzdCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMgLSBlaXRoZXIgdHJhbnNhY3Rpb25zLCBieXRlcywKKyAgIG9yIHRpbWUuIGRpZmZlcmVudCB2YXJzIHVzZWQgZm9yIGNsYXJpdHkgLSBzcGFjZSBpcyBjaGVhcCA7LSkgKi8KKworaW50CisgIHRlc3RfdGltZSA9IDEwLCAvKiB0ZXN0IGVuZHMgYnkgdGltZSAqLworICB0ZXN0X2xlbl90aWNrcywgLyogaG93IG1hbnkgdGltZXMgd2lsbCB0aGUgdGltZXIgZ28gb2ZmIGJlZm9yZSB0aGUKKwkJICAgICB0ZXN0IGlzIG92ZXI/ICovCisgIHRlc3RfYnl0ZXMgPSAwLCAvKiB0ZXN0IGVuZHMgb24gYnl0ZSBjb3VudCAqLworICB0ZXN0X3RyYW5zID0gMDsgLyogdGVzdCBlbmRzIG9uIHRyYW4gY291bnQgKi8KKworLyogdGhlIGFsaWdubWVudCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMgKi8KK2ludAorICBsb2NhbF9yZWN2X2FsaWduID0gOCwJLyogYWxpZ25tZW50IGZvciBsb2NhbCByZWNlaXZlcyAqLworICBsb2NhbF9zZW5kX2FsaWduID0gOCwJLyogYWxpZ25tZW50IGZvciBsb2NhbCBzZW5kcyAqLworICBsb2NhbF9zZW5kX29mZnNldCA9IDAsCisgIGxvY2FsX3JlY3Zfb2Zmc2V0ID0gMCwKKyAgcmVtb3RlX3JlY3ZfYWxpZ24gPSA4LCAvKiBhbGlnbm1lbnQgZm9yIHJlbW90ZSByZWNlaXZlcyAqLworICByZW1vdGVfc2VuZF9hbGlnbiA9IDgsIC8qIGFsaWdubWVudCBmb3IgcmVtb3RlIHNlbmRzICovCisgIHJlbW90ZV9zZW5kX29mZnNldCA9IDAsCisgIHJlbW90ZV9yZWN2X29mZnNldCA9IDAsCisgIHJlbW90ZV9zZW5kX3dpZHRoID0gMCwKKyAgcmVtb3RlX3JlY3Zfd2lkdGggPSAwOworCisvKiBob2lzdCBhYm92ZSB0aGUgaWYgZm9yIG9tbmkgKi8KK2ludAorICBpbnRlcnZhbF91c2VjcyA9IDAsCisgIGludGVydmFsX3dhdGUgPSAwLAorICBpbnRlcnZhbF9idXJzdCA9IDAsCisgIHJlbW90ZV9pbnRlcnZhbF91c2VjcyA9IDAsCisgIHJlbW90ZV9pbnRlcnZhbF9idXJzdCA9IDA7CisKKy8qIHdhaXQgdGltZSBiZXR3ZWVuIGNvbnRyb2wvZGF0YSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHN0YXJ0CisgICBvZiBkYXRhIHRyYWZmaWMgKi8KK2ludCB3YWl0X3RpbWVfc2VjcyA9IDA7CisKKworI2lmZGVmIERJUlRZCitpbnQgbG9jX2RpcnR5X2NvdW50ID0gMCwKKyAgICBsb2NfY2xlYW5fY291bnQgPSAwLAorICAgIHJlbV9kaXJ0eV9jb3VudCA9IDAsCisgICAgcmVtX2NsZWFuX2NvdW50ID0gMDsKKyNlbHNlCitpbnQgbG9jX2RpcnR5X2NvdW50ID0gLTEsCisgICAgbG9jX2NsZWFuX2NvdW50ID0gLTEsCisgICAgcmVtX2RpcnR5X2NvdW50ID0gLTEsCisgICAgcmVtX2NsZWFuX2NvdW50ID0gLTE7CisjZW5kaWYgLyogRElSVFkgKi8KKworIC8qIHNvbWUgb2YgdGhlIHZhaXJhYmxlcyBmb3IgY29uZmlkZW5jZSBpbnRlcnZhbHMuLi4gKi8KKworaW50ICBjb25maWRlbmNlX2xldmVsID0gMDsKK2ludCAgaXRlcmF0aW9uX21pbiA9IDE7CitpbnQgIGl0ZXJhdGlvbl9tYXggPSAxOworaW50ICByZXN1bHRfY29uZmlkZW5jZV9vbmx5ID0gMDsKK2RvdWJsZSBpbnRlcnZhbCA9IDAuMDsKKworIC8qIHN0dWZmIHRvIGNvbnRyb2wgdGhlICJ3aWR0aCIgb2YgdGhlIGJ1ZmZlciByaW5ncyBmb3Igc2VuZGluZyBhbmQKKyAgICByZWNlaXZpbmcgZGF0YSAqLworaW50CXNlbmRfd2lkdGg7CitpbnQgICAgIHJlY3Zfd2lkdGg7CisKKy8qIGFkZHJlc3MgZmFtaWx5ICovCitpbnQJYWYgPSBBRl9JTkVUOworCisvKiBzb2NrZXQgcHJpb3JpdHkgdmlhIFNPX1BSSU9SSVRZICovCitpbnQgbG9jYWxfc29ja2V0X3ByaW8gPSAtMTsKK2ludCByZW1vdGVfc29ja2V0X3ByaW8gPSAtMTsKKworLyogYW5kIElQX1RPUyAqLworaW50IGxvY2FsX3NvY2tldF90b3MgPSAtMTsKK2ludCByZW1vdGVfc29ja2V0X3RvcyA9IC0xOworCisvKiBkaWQgc29tZW9uZSByZXF1ZXN0IHByb2Nlc3NvciBhZmZpbml0eT8gKi8KK2ludCBjcHVfYmluZGluZ19yZXF1ZXN0ZWQgPSAwOworCisvKiBhcmUgd2Ugbm90IGVzdGFibGlzaGluZyBhIGNvbnRyb2wgY29ubmVjdGlvbj8gKi8KK2ludCBub19jb250cm9sID0gMDsKKworLyogd2hhdCBpcyB0aGUgcGFzc3BocmFzZT8gKi8KK2NoYXIgKnBhc3NwaHJhc2UgPSBOVUxMOworCitjaGFyIG5ldHNlcnZlcl91c2FnZVtdID0gIlxuXAorVXNhZ2U6IG5ldHNlcnZlciBbb3B0aW9uc10gXG5cCitcblwKK09wdGlvbnM6XG5cCisgICAgLWggICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIHRleHRcblwKKyAgICAtRCAgICAgICAgICAgICAgICBEbyBub3QgZGFlbW9uaXplXG5cCisgICAgLWQgICAgICAgICAgICAgICAgSW5jcmVhc2UgZGVidWdnaW5nIG91dHB1dFxuXAorICAgIC1mICAgICAgICAgICAgICAgIERvIG5vdCBzcGF3biBjaGlscmVuIGZvciBlYWNoIHRlc3QsIHJ1biBzZXJpYWxseVxuXAorICAgIC1MIG5hbWUsZmFtaWx5ICAgIFVzZSBuYW1lIHRvIHBpY2sgbGlzdGVuIGFkZHJlc3MgYW5kIGZhbWlseSBmb3IgZmFtaWx5XG5cCisgICAgLU4gICAgICAgICAgICAgICAgTm8gZGVidWdnaW5nIG91dHB1dCwgZXZlbiBpZiBuZXRwZXJmIGFza3NcblwKKyAgICAtcCBwb3J0bnVtICAgICAgICBMaXN0ZW4gZm9yIGNvbm5lY3QgcmVxdWVzdHMgb24gcG9ydG51bS5cblwKKyAgICAtNCAgICAgICAgICAgICAgICBEbyBJUHY0XG5cCisgICAgLTYgICAgICAgICAgICAgICAgRG8gSVB2NlxuXAorICAgIC12IHZlcmJvc2l0eSAgICAgIFNwZWNpZnkgdGhlIHZlcmJvc2l0eSBsZXZlbFxuXAorICAgIC1WICAgICAgICAgICAgICAgIERpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdFxuXAorICAgIC1aIHBhc3NwaHJhc2UgICAgIEV4cGVjdCBwYXNzcGhyYXNlIGFzIHRoZSBmaXJzdCB0aGluZyByZWNlaXZlZFxuXAorXG4iOworCisvKiBuZXRwZXJmX3VzYWdlIGRvbmUgYXMgdHdvIGNvbmNhdGVuYXRlZCBzdHJpbmdzIHRvIG1ha2UgdGhlIE1TCisgICBjb21waWxlciBoYXBweSB3aGVuIGNvbXBpbGluZyBmb3IgeDg2XzMyLiAgZml4IGZyb20gU3BlbmNlcgorICAgRnJpbmsuICovCisKK2NoYXIgbmV0cGVyZl91c2FnZTFbXSA9ICJcblwKK1VzYWdlOiBuZXRwZXJmIFtnbG9iYWwgb3B0aW9uc10gLS0gW3Rlc3Qgb3B0aW9uc10gXG5cCitcblwKK0dsb2JhbCBvcHRpb25zOlxuXAorICAgIC1hIHNlbmQscmVjdiAgICAgIFNldCB0aGUgbG9jYWwgc2VuZCxyZWN2IGJ1ZmZlciBhbGlnbm1lbnRcblwKKyAgICAtQSBzZW5kLHJlY3YgICAgICBTZXQgdGhlIHJlbW90ZSBzZW5kLHJlY3YgYnVmZmVyIGFsaWdubWVudFxuXAorICAgIC1CIGJyYW5kc3RyICAgICAgIFNwZWNpZnkgYSBzdHJpbmcgdG8gYmUgZW1pdHRlZCB3aXRoIGJyaWVmIG91dHB1dFxuXAorICAgIC1jIFtjcHVfcmF0ZV0gICAgIFJlcG9ydCBsb2NhbCBDUFUgdXNhZ2VcblwKKyAgICAtQyBbY3B1X3JhdGVdICAgICBSZXBvcnQgcmVtb3RlIENQVSB1c2FnZVxuXAorICAgIC1kICAgICAgICAgICAgICAgIEluY3JlYXNlIGRlYnVnZ2luZyBvdXRwdXRcblwKKyAgICAtRCB0aW1lLFt1bml0c10gKiBEaXNwbGF5IGludGVyaW0gcmVzdWx0cyBhdCBsZWFzdCBldmVyeSB0aW1lIGludGVydmFsXG5cCisgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdW5pdHMgYXMgdGhlIGluaXRpYWwgZ3Vlc3MgZm9yIHVuaXRzIHBlciBzZWNvbmRcblwKKyAgICAgICAgICAgICAgICAgICAgICBBIG5lZ2F0aXZlIHZhbHVlIGZvciB0aW1lIHdpbGwgbWFrZSBoZWF2eSB1c2Ugb2YgdGhlXG5cCisgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtJ3MgdGltZXN0YW1waW5nIGZ1bmN0aW9uYWxpdHlcblwKKyAgICAtZiBHfE18S3xnfG18ayAgICBTZXQgdGhlIG91dHB1dCB1bml0c1xuXAorICAgIC1GIGxmaWxsWyxyZmlsbF0qIFByZS1maWxsIGJ1ZmZlcnMgd2l0aCBkYXRhIGZyb20gc3BlY2lmaWVkIGZpbGVcblwKKyAgICAtaCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgdGV4dFxuXAorICAgIC1IIG5hbWV8aXAsZmFtICogIFNwZWNpZnkgdGhlIHRhcmdldCBtYWNoaW5lIGFuZC9vciBsb2NhbCBpcCBhbmQgZmFtaWx5XG5cCisgICAgLWkgbWF4LG1pbiAgICAgICAgU3BlY2lmeSB0aGUgbWF4IGFuZCBtaW4gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgKDE1LDEpXG5cCisgICAgLUkgbHZsWyxpbnR2bF0gICAgU3BlY2lmeSBjb25maWRlbmNlIGxldmVsICg5NSBvciA5OSkgKDk5KSBcblwKKyAgICAgICAgICAgICAgICAgICAgICBhbmQgY29uZmlkZW5jZSBpbnRlcnZhbCBpbiBwZXJjZW50YWdlICgxMClcblwKKyAgICAtaiAgICAgICAgICAgICAgICBLZWVwIGFkZGl0aW9uYWwgdGltaW5nIHN0YXRpc3RpY3NcblwKKyAgICAtbCB0ZXN0bGVuICAgICAgICBTcGVjaWZ5IHRlc3QgZHVyYXRpb24gKD4wIHNlY3MpICg8MCBieXRlc3x0cmFucylcblwKKyAgICAtTCBuYW1lfGlwLGZhbSAqICBTcGVjaWZ5IHRoZSBsb2NhbCBpcHxuYW1lIGFuZCBhZGRyZXNzIGZhbWlseVxuXAorICAgIC1vIHNlbmQscmVjdiAgICAgIFNldCB0aGUgbG9jYWwgc2VuZCxyZWN2IGJ1ZmZlciBvZmZzZXRzXG5cCisgICAgLU8gc2VuZCxyZWN2ICAgICAgU2V0IHRoZSByZW1vdGUgc2VuZCxyZWN2IGJ1ZmZlciBvZmZzZXRcblwKKyAgICAtbiBudW1jcHUgICAgICAgICBTZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIGZvciBDUFUgdXRpbFxuXAorICAgIC1OICAgICAgICAgICAgICAgIEVzdGFibGlzaCBubyBjb250cm9sIGNvbm5lY3Rpb24sIGRvICdzZW5kJyBzaWRlIG9ubHlcblwKKyAgICAtcCBwb3J0LGxwb3J0KiAgICBTcGVjaWZ5IG5ldHNlcnZlciBwb3J0IG51bWJlciBhbmQvb3IgbG9jYWwgcG9ydFxuXAorICAgIC1QIDB8MSAgICAgICAgICAgIERvbid0L0RvIGRpc3BsYXkgdGVzdCBoZWFkZXJzXG5cCisgICAgLXIgICAgICAgICAgICAgICAgQWxsb3cgY29uZmlkZW5jZSB0byBiZSBoaXQgb24gcmVzdWx0IG9ubHlcblwKKyAgICAtcyBzZWNvbmRzICAgICAgICBXYWl0IHNlY29uZHMgYmV0d2VlbiB0ZXN0IHNldHVwIGFuZCB0ZXN0IHN0YXJ0XG5cCisgICAgLVMgICAgICAgICAgICAgICAgU2V0IFNPX0tFRVBBTElWRSBvbiB0aGUgZGF0YSBjb25uZWN0aW9uXG5cCisgICAgLXQgdGVzdG5hbWUgICAgICAgU3BlY2lmeSB0ZXN0IHRvIHBlcmZvcm1cblwKKyAgICAtVCBsY3B1LHJjcHUgICAgICBSZXF1ZXN0IG5ldHBlcmYvbmV0c2VydmVyIGJlIGJvdW5kIHRvIGxvY2FsL3JlbW90ZSBjcHVcblwKKyAgICAtdiB2ZXJib3NpdHkgICAgICBTcGVjaWZ5IHRoZSB2ZXJib3NpdHkgbGV2ZWxcblwKKyAgICAtVyBzZW5kLHJlY3YgICAgICBTZXQgdGhlIG51bWJlciBvZiBzZW5kLHJlY3YgYnVmZmVyc1xuXAorICAgIC12IGxldmVsICAgICAgICAgIFNldCB0aGUgdmVyYm9zaXR5IGxldmVsIChkZWZhdWx0IDEsIG1pbiAwKVxuXAorICAgIC1WICAgICAgICAgICAgICAgIERpc3BsYXkgdGhlIG5ldHBlcmYgdmVyc2lvbiBhbmQgZXhpdFxuXAorICAgIC15IGxvY2FsLHJlbW90ZSAgIFNldCB0aGUgc29ja2V0IHByaW9yaXR5XG5cCisgICAgLVkgbG9jYWwscmVtb3RlICAgU2V0IHRoZSBJUF9UT1MuIFVzZSBoZXhhZGVjaW1hbC5cblwKKyAgICAtWiBwYXNzcGhyYXNlICAgICBTZXQgYW5kIHBhc3MgdG8gbmV0c2VydmVyIGEgcGFzc3BocmFzZVxuIjsKKworY2hhciBuZXRwZXJmX3VzYWdlMltdID0gIlxuXAorRm9yIHRob3NlIG9wdGlvbnMgdGFraW5nIHR3byBwYXJtcywgYXQgbGVhc3Qgb25lIG11c3QgYmUgc3BlY2lmaWVkO1xuXAorc3BlY2lmeWluZyBvbmUgdmFsdWUgd2l0aG91dCBhIGNvbW1hIHdpbGwgc2V0IGJvdGggcGFybXMgdG8gdGhhdFxuXAordmFsdWUsIHNwZWNpZnlpbmcgYSB2YWx1ZSB3aXRoIGEgbGVhZGluZyBjb21tYSB3aWxsIHNldCBqdXN0IHRoZSBzZWNvbmRcblwKK3Bhcm0sIGEgdmFsdWUgd2l0aCBhIHRyYWlsaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIGZpcnN0LiBUbyBzZXRcblwKK2VhY2ggcGFybSB0byB1bmlxdWUgdmFsdWVzLCBzcGVjaWZ5IGJvdGggYW5kIHNlcGFyYXRlIHRoZW0gd2l0aCBhXG5cCitjb21tYS5cblwKK1xuIgorIiogRm9yIHRoZXNlIG9wdGlvbnMgdGFraW5nIHR3byBwYXJtcywgc3BlY2lmeWluZyBvbmUgdmFsdWUgd2l0aCBubyBjb21tYVxuXAord2lsbCBvbmx5IHNldCB0aGUgZmlyc3QgcGFybXMgYW5kIHdpbGwgbGVhdmUgdGhlIHNlY29uZCBhdCB0aGUgZGVmYXVsdFxuXAordmFsdWUuIFRvIHNldCB0aGUgc2Vjb25kIHZhbHVlIGl0IG11c3QgYmUgcHJlY2VkZWQgd2l0aCBhIGNvbW1hIG9yIGJlIGFcblwKK2NvbW1hLXNlcGFyYXRlZCBwYWlyLiBUaGlzIGlzIHRvIHJldGFpbiBwcmV2aW91cyBuZXRwZXJmIGJlaGF2aW91ci5cbiI7CisKKwwKKy8qIFRoaXMgcm91dGluZSB3aWxsIHJldHVybiB0aGUgdHdvIGFyZ3VtZW50cyB0byB0aGUgY2FsbGluZyByb3V0aW5lLgorICAgSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBub3Qgc3BlY2lmaWVkLCBhbmQgdGhlcmUgaXMgbm8gY29tbWEsCisgICB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIHZhbHVlCisgICBvZiB0aGUgZmlyc3QuIElmIHRoZXJlIGlzIGEgY29tbWEsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQKKyAgIGFyZ3VtZW50IHdpbGwgYmUgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgOy0pICovCit2b2lkCiticmVha19hcmdzKGNoYXIgKnMsIGNoYXIgKmFyZzEsIGNoYXIgKmFyZzIpCisKK3sKKyAgY2hhciAqbnM7CisgIG5zID0gc3RyY2hyKHMsJywnKTsKKyAgaWYgKG5zKSB7CisgICAgLyogdGhlcmUgd2FzIGEgY29tbWEgYXJnMiBzaG91bGQgYmUgdGhlIHNlY29uZCBhcmcqLworICAgICpucysrID0gJ1wwJzsKKyAgICB3aGlsZSAoKCphcmcyKysgPSAqbnMrKykgIT0gJ1wwJyk7CisgIH0KKyAgZWxzZSB7CisgICAgLyogdGhlcmUgd2FzIG5vdCBhIGNvbW1hLCB3ZSBjYW4gdXNlIG5zIGFzIGEgdGVtcCBzICovCisgICAgLyogYW5kIGFyZzIgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIGFyZzEgKi8KKyAgICBucyA9IHM7CisgICAgd2hpbGUgKCgqYXJnMisrID0gKm5zKyspICE9ICdcMCcpOworICB9OworICB3aGlsZSAoKCphcmcxKysgPSAqcysrKSAhPSAnXDAnKTsKK30KKworLyogYnJlYWtfYXJnc19leHBsaWNpdF9zZXAKKworICAgdGhpcyByb3V0aW5lIGlzIHNvbWV3aGF0IGxpa2UgYnJlYWtfYXJncyBpbiB0aGF0IGl0IHdpbGwgc2VwYXJhdGUgYQorICAgcGFpciBvZiB2YWx1ZXMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci4gIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIG5vCisgICBzZXBhcmF0b3IgdGhpcyB2ZXJzaW9uIHdpbGwgbm90IGFzcy11LW1lIHRoYXQgYXJnMiBzaG91bGQgYmUgdGhlCisgICBzYW1lIGFzIGFyZzEuIHJhaiAyMDEwMTEyOSAqLworCit2b2lkCiticmVha19hcmdzX2V4cGxpY2l0X3NlcChjaGFyICpzLCBpbnQgc2VwLCBjaGFyICphcmcxLCBjaGFyICphcmcyKQorCit7CisgIGNoYXIgKm5zOworICBucyA9IHN0cmNocihzLHNlcCk7CisgIGlmIChucykgeworICAgIC8qIHRoZXJlIHdhcyBhIHNlcGFyYXRvciBhcmcyIHNob3VsZCBiZSB0aGUgc2Vjb25kIGFyZyovCisgICAgKm5zKysgPSAnXDAnOworICAgIHdoaWxlICgoKmFyZzIrKyA9ICpucysrKSAhPSAnXDAnKTsKKyAgfQorICBlbHNlIHsKKyAgICAvKiB0aGVyZSB3YXMgbm8gc2VwYXJhdG9yLCBzbyB3ZSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgYXJnMiBpcyBcMAorICAgICAgIGxlc3Qgc29tZXRoaW5nIGJlY29tZSBjb25mdXNlZC4gcmFqIDIwMDUtMDItMDQgKi8KKyAgICAqYXJnMiA9ICdcMCc7CisgIH07CisgIHdoaWxlICgoKmFyZzErKyA9ICpzKyspICE9ICdcMCcpOworCit9CisKKy8qIGJyZWFrX2FyZ3NfZXhwbGljaXQgLSBub3cganVzdCBhIHdyYXBwZXIgYXJvdW5kIGEgY2FsbCB0bworICAgYnJlYWtfYXJnc19leHBsaWNpdF9zZXAgcGFzc2luZy1pbiBhICcsJyBhcyB0aGUgc2VwYXJhdG9yLiByYWoKKyAgIDIwMTAxMTI5ICovCisKK3ZvaWQKK2JyZWFrX2FyZ3NfZXhwbGljaXQoY2hhciAqcywgY2hhciAqYXJnMSwgY2hhciAqYXJnMikKKworeworICBicmVha19hcmdzX2V4cGxpY2l0X3NlcChzLCAnLCcsIGFyZzEsIGFyZzIpOworfQorCisKKy8qIGdpdmVuIGEgc3RyaW5nIHdpdGggcG9zc2libGUgdmFsdWVzIGZvciBzZXR0aW5nIGFuIGFkZHJlc3MgZmFtaWx5LAorICAgY29udmVydCB0aGF0IGludG8gb25lIG9mIHRoZSBBRl9tdW1ibGUgdmFsdWVzIC0gQUZfSU5FVCwgQUZfSU5FVDYsCisgICBBRl9VTlNQRUMgYXMgYXByb3ByaWF0ZS4gdGhlIGZhbWlseV9zdHJpbmcgaXMgY29tcGFyZWQgaW4gYQorICAgY2FzZS1pbnNlbnNpdGl2ZSBtYW5uZXIgKi8KKworaW50CitwYXJzZV9hZGRyZXNzX2ZhbWlseShjaGFyIGZhbWlseV9zdHJpbmdbXSkKK3sKKworICBjaGFyIHRlbXBbMTBdOyAgLyogZ290dGEgbG92ZSBtYWdpYyBjb25zdGFudHMgOikgKi8KKworICBzdHJuY3B5KHRlbXAsZmFtaWx5X3N0cmluZywxMCk7CisKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIkF0dGVtcHRpbmcgdG8gcGFyc2UgYWRkcmVzcyBmYW1pbHkgZnJvbSAlcyBkZXJpdmVkIGZyb20gJXNcbiIsCisJICAgIHRlbXAsCisJICAgIGZhbWlseV9zdHJpbmcpOworICB9CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgaWYgKHN0cnN0cih0ZW1wLCI2IikpIHsKKyAgICByZXR1cm4oQUZfSU5FVDYpOworICB9CisjZW5kaWYKKyAgaWYgKHN0cnN0cih0ZW1wLCJpbmV0IikgfHwKKyAgICAgIHN0cnN0cih0ZW1wLCI0IikpIHsKKyAgICByZXR1cm4oQUZfSU5FVCk7CisgIH0KKyNpZiBkZWZpbmVkKEFGX1JEUykKKyAgaWYgKHN0cnN0cih0ZW1wLCJhZl9yZHMiKSB8fAorICAgICAgc3Ryc3RyKHRlbXAsIjMyIikpIHsKKyAgICByZXR1cm4oQUZfUkRTKTsKKyAgfQorI2VuZGlmCisgIGlmIChzdHJzdHIodGVtcCwidW5zcGVjIikgfHwKKyAgICAgIHN0cnN0cih0ZW1wLCIwIikpIHsKKyAgICByZXR1cm4oQUZfVU5TUEVDKTsKKyAgfQorICBmcHJpbnRmKHdoZXJlLAorCSAgIldBUk5JTkchICVzIG5vdCByZWNvZ25pemVkIGFzIGFuIGFkZHJlc3MgZmFtaWx5LCB1c2luZyBBRl9VTlBTRUNcbiIKKwkgICJBcmUgeW91IHN1cmUgbmV0cGVyZiB3YXMgY29uZmlndXJlZCBmb3IgdGhhdCBhZGRyZXNzIGZhbWlseT9cbiIsCisJICBmYW1pbHlfc3RyaW5nKTsKKyAgZmZsdXNoKHdoZXJlKTsKKyAgcmV0dXJuKEFGX1VOU1BFQyk7Cit9CisKK2ludAorcGFyc2Vfc29ja2V0X3R5cGUoY2hhciBzb2NrZXRfc3RyaW5nW10pIHsKKworICBjaGFyIHRlbXBbMTBdOworCisgIHN0cm5jcHkodGVtcCxzb2NrZXRfc3RyaW5nLDEwKTsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiQXR0ZW1wdGluZyB0byBwYXJzZSBzb2NrZXQgdHlwZSBmcm9tICVzIGRlcml2ZWQgZnJvbSAlc1xuIiwKKwkgICAgdGVtcCwKKwkgICAgc29ja2V0X3N0cmluZyk7CisgIH0KKworI2lmZGVmIFNPQ0tfU1RSRUFNCisgIGlmIChzdHJzdHIodGVtcCwic3RyZWFtIikpCisgICAgcmV0dXJuIFNPQ0tfU1RSRUFNOworI2VuZGlmCisjaWZkZWYgU09DS19ER1JBTQorICBpZiAoc3Ryc3RyKHRlbXAsImRncmFtIikpCisgICAgcmV0dXJuIFNPQ0tfREdSQU07CisjZW5kaWYKKyAgcmV0dXJuIE5TVF9VTktOOworCit9CisKK2ludAorcGFyc2VfZGlyZWN0aW9uKGNoYXIgZGlyZWN0aW9uX3N0cmluZ1tdKQoreworICBjaGFyIGFyZzFbQlVGU0laXSxhcmcyW0JVRlNJWl07CisgIGludCBsZWZ0LCByaWdodDsKKworICBpZiAoTlVMTCA9PSBkaXJlY3Rpb25fc3RyaW5nKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBpZiAoZGlyZWN0aW9uX3N0cmluZ1swXSA9PSAnXDAnKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICAvKiBhbGxvdyBzb21lb25lIHRvICJvciIgYnJlYWtfYXJnc19leHBsaWNpdCB3aWxsIHNwbGl0IGF0IHRoZSBmaXJzdAorICAgICAnfCcgaW4gdGhlIHN0cmluZyBzbyB3ZSBrbm93IHRoYXQgYXJnMSBoYXMgbm8gJ3wnIGluIGl0IGFuZCBhcmcyCisgICAgIG1pZ2h0ICovCisgIGJyZWFrX2FyZ3NfZXhwbGljaXRfc2VwKGRpcmVjdGlvbl9zdHJpbmcsJ3wnLGFyZzEsYXJnMik7CisKKyAgLyogYXQgdGhpcyBwb2ludCBvbmx5IGFyZzIgY291bGQgY29udGFpbiBhICd8JyBzbyByZWN1cnNlIG9uIHRoYXQgKi8KKyAgcmlnaHQgPSBwYXJzZV9kaXJlY3Rpb24oYXJnMik7CisKKyAgLyogbm93IHdlIHBhcnNlIHRoZSAibGVmdCBzaWRlIiBvciBhcmcxICovCisgIGlmIChhcmcxWzBdID09ICdcMCcpIHsKKyAgICBsZWZ0ID0gMDsKKyAgfQorICBlbHNlIGlmICgoc3RyY2FzZWNtcChhcmcxLCJ4bWl0IikgPT0gMCkgfHwKKwkgICAoc3RyY2FzZWNtcChhcmcxLCJzZW5kIikgPT0gMCkgfHwKKwkgICAoc3RyY2FzZWNtcChhcmcxLCJzdHJlYW0iKSA9PSAwKSB8fAorCSAgIChzdHJjYXNlY21wKGFyZzEsInRyYW5zbWl0IikgPT0gMCkpIHsKKyAgICBsZWZ0ID0gTkVUUEVSRl9YTUlUOworICB9CisgIGVsc2UgaWYgKChzdHJjYXNlY21wKGFyZzEsInJlY3YiKSA9PSAwKSB8fAorCSAgIChzdHJjYXNlY21wKGFyZzEsInJlY2VpdmUiKSA9PSAwKSB8fAorCSAgIChzdHJjYXNlY21wKGFyZzEsIm1hZXJ0cyIpID09IDApKSB7CisgICAgLyogeWVzLCBhbm90aGVyIG1hZ2ljIG51bWJlci4uLiAqLworICAgIGxlZnQgPSAgTkVUUEVSRl9SRUNWOworICB9CisgIGVsc2UgIGlmIChzdHJjYXNlY21wKGFyZzEsInJyIikgPT0gMCkgeworICAgIGxlZnQgPSBORVRQRVJGX1hNSVR8TkVUUEVSRl9SRUNWOworICB9CisgIGVsc2UgeworICAgIC8qIHdlIG5vdyAiYXNzLXUtbWUiIGl0IGlzIGEgbnVtYmVyIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBzdHJ0b2woKQorICovCisgICAgbGVmdCA9IHN0cnRvbChhcmcxLE5VTEwsMCk7CisgIH0KKworICByZXR1cm4gKGxlZnQgfCByaWdodCk7CisKK30KKworaW50CitwYXJzZV9wcm90b2NvbChjaGFyIHByb3RvY29sX3N0cmluZ1tdKQoreworICBjaGFyIHRlbXBbMTBdOworCisgIHN0cm5jcHkodGVtcCxwcm90b2NvbF9zdHJpbmcsMTApOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICJBdHRlbXB0aW5nIHRvIHBhcnNlIHByb3RvY29sIGZyb20gJXMgZGVyaXZlZCBmcm9tICVzXG4iLAorCSAgICB0ZW1wLAorCSAgICBwcm90b2NvbF9zdHJpbmcpOworICB9CisKKyAgLyogd2UgYXNzLXUtbWUgdGhhdCBldmVyeW9uZSBoYXMgSVBQUk9UT19UQ1AgZWxzZXdoZXJlIHNvIG1pZ2h0IGFzCisgICAgIHdlbGwgaGVyZSwgYW5kIGF2b2lkIGlzc3VlcyB3aXRoIHdpbmRvd3MgdXNpbmcgYW4gZW51bS4gIEt1ZG9zIHRvCisgICAgIEpvbmF0aGFuIENvb2suICovCisgIGlmICghc3RyY2FzZWNtcCh0ZW1wLCJ0Y3AiKSl7CisgICAgc29ja2V0X3R5cGUgPSBTT0NLX1NUUkVBTTsKKyAgICByZXR1cm4gSVBQUk9UT19UQ1A7CisgIH0KKworICBpZiAoIXN0cmNhc2VjbXAodGVtcCwidWRwIikpIHsKKyAgICBzb2NrZXRfdHlwZSA9IFNPQ0tfREdSQU07CisgICAgcmV0dXJuIElQUFJPVE9fVURQOworICB9CisKKyAgLyogd2Uga2VlcCB0aGUgcmVzdCBvZiB0aGUgI2lkZWZzIHRob3VnaCBiZWNhdXNlIHRoZXNlIG1heSBub3QgYmUgYXMKKyAgICAgdW5pdmVyc2FsIGFzIFRDUCBhbmQgVURQLi4uICovCisjaWZkZWYgSVBQUk9UT19TQ1RQCisgIGlmICghc3RyY2FzZWNtcCh0ZW1wLCJzY3RwIikpIHsKKyAgICAvKiBpdCBjYW4gYmUgbW9yZSB0aGFuIG9uZSBzb2NrZXQgdHlwZSAqLworICAgIHJldHVybiBJUFBST1RPX1NDVFA7CisgIH0KKyNlbmRpZgorI2lmZGVmIElQUFJPVE9fU0RQCisgIGlmICghc3RyY2FzZWNtcCh0ZW1wLCJzZHAiKSkgeworICAgIHNvY2tldF90eXBlID0gU09DS19TVFJFQU07CisgICAgcmV0dXJuIElQUFJPVE9fU0RQOworICB9CisjZW5kaWYKKyNpZiBkZWZpbmVkKElQUFJPVE9fRENDUCkgJiYgZGVmaW5lZChTT0NLX0RDQ1ApCisgIGlmICghc3RyY2FzZWNtcCh0ZW1wLCJkY2NwIikpIHsKKyAgICBzb2NrZXRfdHlwZSA9IFNPQ0tfRENDUDsKKyAgICByZXR1cm4gSVBQUk9UT19EQ0NQOworICB9CisjZW5kaWYKKyNpZmRlZiBJUFBST1RPX1VEUExJVEUKKyAgaWYgKCFzdHJjYXNlY21wKHRlbXAsInVkcGxpdGUiKSkgeworICAgIHNvY2tldF90eXBlID0gU09DS19ER1JBTTsKKyAgICByZXR1cm4gSVBQUk9UT19VRFBMSVRFOworICB9CisjZW5kaWYKKyAgcmV0dXJuIElQUFJPVE9fSVA7Cit9CisKKwwKK3ZvaWQKK3ByaW50X25ldHNlcnZlcl91c2FnZSgpCit7CisgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBuZXRzZXJ2ZXJfdXNhZ2UpOworfQorCisMCit2b2lkCitwcmludF9uZXRwZXJmX3VzYWdlKCkKK3sKKyAgZnByaW50ZihzdGRlcnIsICIlcyVzIiwgbmV0cGVyZl91c2FnZTEsIG5ldHBlcmZfdXNhZ2UyKTsKK30KKworLyogY29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byB1cHBlciBjYXNlIGlmIHdlIGtub3cgaG93ICovCitzdGF0aWMgdm9pZAorY29udmVydF90b191cHBlcihjaGFyICpzb3VyY2UpCit7CisjaWYgZGVmaW5lZChIQVZFX1RPVVBQRVIpCisgIGludCBpLGxlbmd0aDsKKworICBsZW5ndGggPSBzdHJsZW4oc291cmNlKTsKKworICBmb3IgKGk9MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgc291cmNlW2ldID0gdG91cHBlcihzb3VyY2VbaV0pOworICB9CisjZW5kaWYKKyAgcmV0dXJuOworCit9CisKK3ZvaWQKK3NjYW5fY21kX2xpbmUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgZXh0ZXJuIGludAlvcHRpbmQ7ICAgICAgICAgICAvKiBpbmRleCBvZiBmaXJzdCB1bnVzZWQgYXJnIAkqLworICBleHRlcm4gY2hhcgkqb3B0YXJnOwkgIC8qIHBvaW50ZXIgdG8gb3B0aW9uIHN0cmluZwkqLworCisgIGludCAgICAgICAgICAgY21uZF9sZW47CisgIGNoYXIgICAgICAgICAgKnA7CisKKyAgaW50CQljOworCisgIGNoYXIJYXJnMVtCVUZTSVpdLCAgLyogYXJndW1lbnQgaG9sZGVycwkJKi8KKyAgICBhcmcyW0JVRlNJWl07CisKKyAgcHJvZ3JhbSA9IChjaGFyICopbWFsbG9jKHN0cmxlbihhcmd2WzBdKSArIDEpOworICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAgcHJpbnRmKCJtYWxsb2MoKSB0byBzdG9yZSBwcm9ncmFtIG5hbWUgZmFpbGVkIVxuIik7CisgICAgZXhpdCgtMSk7CisgIH0KKyAgc3RyY3B5KHByb2dyYW0sIGFyZ3ZbMF0pOworCisgIC8qIGJydXRlIGZvcmNlLCBidXQgZWZmZWN0aXZlICovCisgIGNvbW1hbmRfbGluZSA9IE5VTEw7CisgIGNtbmRfbGVuID0gMDsKKyAgZm9yIChjID0gMDsgYyA8IGFyZ2M7IGMrKykgeworICAgIGNtbmRfbGVuICs9IHN0cmxlbihhcmd2W2NdKTsKKyAgfQorICBjbW5kX2xlbiArPSBhcmdjOyAgLyogZm9yZ2V0IHRoZWUgbm90IHRoZSBzcGFjZXMgKi8KKyAgY29tbWFuZF9saW5lID0gbWFsbG9jKGNtbmRfbGVuKzEpOworCisgIGlmIChjb21tYW5kX2xpbmUgPT0gTlVMTCkgeworICAgIHByaW50ZigibWFsbG9jKCVkKSBmYWlsZWQhXG4iLGNtbmRfbGVuKTsKKyAgICBleGl0KC0xKTsKKyAgfQorICBwID0gY29tbWFuZF9saW5lOworICBmb3IgKGMgPSAwOyBjIDwgYXJnYzsgYysrKSB7CisgICAgbWVtY3B5KHAsYXJndltjXSxzdHJsZW4oYXJndltjXSkpOworICAgIHAgKz0gc3RybGVuKGFyZ3ZbY10pOworICAgICpwID0gJyAnOworICAgIHAgKz0gMTsKKyAgfQorICAqLS1wID0gMDsKKworICAvKiBHbyB0aHJvdWdoIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgYnJlYWsgdGhlbSBvdXQuIEZvcgorICAgICB0aG9zZSBvcHRpb25zIHRoYXQgdGFrZSB0d28gcGFybXMsIHNwZWNpZnlpbmcgb25seSB0aGUgZmlyc3Qgd2lsbAorICAgICBzZXQgYm90aCB0byB0aGF0IHZhbHVlLiBTcGVjaWZ5aW5nIG9ubHkgdGhlIHNlY29uZCB3aWxsIGxlYXZlIHRoZQorICAgICBmaXJzdCB1bnRvdWNoZWQuIFRvIGNoYW5nZSBvbmx5IHRoZSBmaXJzdCwgdXNlIHRoZSBmb3JtIGZpcnN0LAorICAgICAoc2VlIHRoZSByb3V0aW5lIGJyZWFrX2FyZ3MuLiAqLworCisgIHdoaWxlICgoYz0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIEdMT0JBTF9DTURfTElORV9BUkdTKSkgIT0gRU9GKSB7CisgICAgc3dpdGNoIChjKSB7CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnaCc6CisgICAgICBwcmludF9uZXRwZXJmX3VzYWdlKCk7CisgICAgICBleGl0KDEpOworICAgIGNhc2UgJ2EnOgorICAgICAgLyogc2V0IGxvY2FsIGFsaWdubWVudHMgKi8KKyAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworCWxvY2FsX3NlbmRfYWxpZ24gPSBjb252ZXJ0KGFyZzEpOworICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0pCisJbG9jYWxfcmVjdl9hbGlnbiA9IGNvbnZlcnQoYXJnMik7CisgICAgICBicmVhazsKKyAgICBjYXNlICdBJzoKKyAgICAgIC8qIHNldCByZW1vdGUgYWxpZ25tZW50cyAqLworICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKSB7CisJcmVtb3RlX3NlbmRfYWxpZ24gPSBjb252ZXJ0KGFyZzEpOworICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0pCisJcmVtb3RlX3JlY3ZfYWxpZ24gPSBjb252ZXJ0KGFyZzIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnYyc6CisgICAgICAvKiBtZWFzdXJlIGxvY2FsIGNwdSB1c2FnZSBwbGVhc2UuIHRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZAorICAgICAgICAgdGhlIGNwdSByYXRlIGFzIGFuIG9wdGlvbmFsIHBhcm0gKi8KKyAgICAgIGlmIChhcmd2W29wdGluZF0gJiYgaXNkaWdpdCgodW5zaWduZWQgY2hhcilhcmd2W29wdGluZF1bMF0pKXsKKwkvKiB0aGVyZSB3YXMgYW4gb3B0aW9uYWwgcGFybSAqLworCWxvY2FsX2NwdV9yYXRlID0gKGZsb2F0KWF0b2YoYXJndltvcHRpbmRdKTsKKwlvcHRpbmQrKzsKKyAgICAgIH0KKyAgICAgIGxvY2FsX2NwdV91c2FnZSsrOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnQyc6CisgICAgICAvKiBtZWFzdXJlIHJlbW90ZSBjcHUgdXNhZ2UgcGxlYXNlICovCisgICAgICBpZiAoYXJndltvcHRpbmRdICYmIGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpYXJndltvcHRpbmRdWzBdKSl7CisJLyogdGhlcmUgd2FzIGFuIG9wdGlvbmFsIHBhcm0gKi8KKwlyZW1vdGVfY3B1X3JhdGUgPSAoZmxvYXQpYXRvZihhcmd2W29wdGluZF0pOworCW9wdGluZCsrOworICAgICAgfQorICAgICAgcmVtb3RlX2NwdV91c2FnZSsrOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnZCc6CisgICAgICBkZWJ1ZysrOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnRCc6CisjaWYgKGRlZmluZWQgV0FOVF9ERU1PKQorICAgICAgZGVtb19tb2RlID0gMTsgLyogMSA9PSB1c2UgdW5pdHM7IDIgPT0gYWx3YXlzIHRpbWVzdGFtcCAqLworICAgICAgYnJlYWtfYXJnc19leHBsaWNpdChvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKSB7CisJZGVtb19pbnRlcnZhbCA9IGF0b2YoYXJnMSkgKiAxMDAwMDAwLjA7CisJaWYgKGRlbW9faW50ZXJ2YWwgPCAwLjApIHsKKwkgIGRlbW9faW50ZXJ2YWwgPSBkZW1vX2ludGVydmFsICogLTEuMDsKKwkgIGRlbW9fbW9kZSA9IDI7CisJfQorICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0pIHsKKwlkZW1vX3VuaXRzID0gY29udmVydChhcmcyKTsKKyAgICAgIH0KKyNlbHNlCisgICAgICBwcmludGYoIlNvcnJ5LCBEZW1vIE1vZGUgbm90IGNvbmZpZ3VyZWQgaW50byB0aGlzIG5ldHBlcmYuXG4iCisJICAgICAiUGxlYXNlIGNvbnNpZGVyIHJlY29uZmlndXJpbmcgbmV0cGVyZiB3aXRoXG4iCisJICAgICAiLS1lbmFibGUtZGVtbz15ZXMgYW5kIHJlY29tcGlsaW5nXG4iKTsKKyNlbmRpZgorICAgICAgYnJlYWs7CisgICAgY2FzZSAnZic6CisgICAgICAvKiBzZXQgdGhlIHRocnVwdXQgZm9ybWF0dGluZyAqLworICAgICAgbGliZm10ID0gKm9wdGFyZzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ0YnOgorICAgICAgLyogc2V0IHRoZSBmaWxsX2ZpbGUgdmFyaWFibGVzIGZvciBwcmUtZmlsbGluZyBidWZmZXJzLiBjaGVjaworCSB0aGUgcmVtb3RlIGZpbGwgZmlsZSBuYW1lIGxlbmd0aCBhZ2FpbnN0IG91ciBsaW1pdCBhcyB3ZSB3aWxsCisJIG5vdCBoZWFyIGZyb20gdGhlIHJlbW90ZSBvbiBlcnJvcnMgb3BlbmluZyB0aGUgZmlsbAorCSBmaWxlLiBQcm9wcyB0byBKb25hdGhhbiBDb29rIGZvciB0aGUgcmVtb3RlIG5hbWUgY2hlY2sgKi8KKyAgICAgIGJyZWFrX2FyZ3NfZXhwbGljaXQob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworCXN0cm5jcHkobG9jYWxfZmlsbF9maWxlLGFyZzEsc2l6ZW9mKGxvY2FsX2ZpbGxfZmlsZSkpOworCWxvY2FsX2ZpbGxfZmlsZVtzaXplb2YobG9jYWxfZmlsbF9maWxlKSAtIDFdID0gJ1wwJzsKKyAgICAgIH0KKyAgICAgIGlmIChhcmcyWzBdKSB7CisJaWYgKHN0cmxlbihhcmcyKT4oc2l6ZW9mKHJlbW90ZV9maWxsX2ZpbGUpIC0gMSkpeworCSAgZnByaW50ZihzdGRlcnIsCisJCSAgIlJlbW90ZSBmaWxsIGZpbGUgbmFtZSBtdXN0IGJlIGxlc3MgdGhhbiAlZCBjaGFyYWN0ZXJzXG4iLAorCQkgIChpbnQpIHNpemVvZihyZW1vdGVfZmlsbF9maWxlKSk7CisJICBmZmx1c2goc3RkZXJyKTsKKwkgIGV4aXQoLTEpOworCX0KKworCXN0cm5jcHkocmVtb3RlX2ZpbGxfZmlsZSxhcmcyLHNpemVvZihyZW1vdGVfZmlsbF9maWxlKSk7CisJcmVtb3RlX2ZpbGxfZmlsZVtzaXplb2YocmVtb3RlX2ZpbGxfZmlsZSkgLSAxXSA9ICdcMCc7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICdpJzoKKyAgICAgIC8qIHNldCB0aGUgaXRlcmF0aW9ucyBtaW4gYW5kIG1heCBmb3IgY29uZmlkZW5jZSBpbnRlcnZhbHMgKi8KKyAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworCWl0ZXJhdGlvbl9tYXggPSBjb252ZXJ0KGFyZzEpOworICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0gKSB7CisJaXRlcmF0aW9uX21pbiA9IGNvbnZlcnQoYXJnMik7CisgICAgICB9CisgICAgICAvKiBpZiB0aGUgaXRlcmF0aW9uX21heCBpcyA8IGl0ZXJhdGlvbl9taW4gbWFrZSBpdGVyYXRpb25fbWF4CisJIGVxdWFsIGl0ZXJhdGlvbl9taW4gKi8KKyAgICAgIGlmIChpdGVyYXRpb25fbWF4IDwgaXRlcmF0aW9uX21pbikgaXRlcmF0aW9uX21heCA9IGl0ZXJhdGlvbl9taW47CisgICAgICAvKiBsaW1pdCBtaW5pbXVtIHRvIDMgaXRlcmF0aW9ucyAqLworICAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPCAzKSBpdGVyYXRpb25fbWF4ID0gMzsKKyAgICAgIGlmIChpdGVyYXRpb25fbWluIDwgMykgaXRlcmF0aW9uX21pbiA9IDM7CisgICAgICAvKiBsaW1pdCBtYXhpbXVtIHRvIDMwIGl0ZXJhdGlvbnMgKi8KKyAgICAgIGlmIChpdGVyYXRpb25fbWF4ID4gMzApIGl0ZXJhdGlvbl9tYXggPSAzMDsKKyAgICAgIGlmIChpdGVyYXRpb25fbWluID4gMzApIGl0ZXJhdGlvbl9taW4gPSAzMDsKKyAgICAgIGlmIChjb25maWRlbmNlX2xldmVsID09IDApIGNvbmZpZGVuY2VfbGV2ZWwgPSA5OTsKKyAgICAgIGlmIChpbnRlcnZhbCA9PSAwLjApIGludGVydmFsID0gMC4wNTsgLyogZml2ZSBwZXJjZW50ICovCisgICAgICBicmVhazsKKyAgICBjYXNlICdJJzoKKyAgICAgIC8qIHNldCB0aGUgY29uZmlkZW5jZSBsZXZlbCAoOTUgb3IgOTkpIGFuZCB3aWR0aCAqLworICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKSB7CisJY29uZmlkZW5jZV9sZXZlbCA9IGNvbnZlcnQoYXJnMSk7CisgICAgICB9CisgICAgICBpZigoY29uZmlkZW5jZV9sZXZlbCAhPSA5NSkgJiYgKGNvbmZpZGVuY2VfbGV2ZWwgIT0gOTkpKXsKKwlwcmludGYoIk9ubHkgOTUlJSBhbmQgOTklJSBjb25maWRlbmNlIGxldmVsIGlzIHN1cHBvcnRlZFxuIik7CisJZXhpdCgtMSk7CisgICAgICB9CisgICAgICBpZiAoYXJnMlswXSApIHsKKwkvKiBpdCBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSB0byB1c2UgY29udmVydCgpIGhlcmUgc28ganVzdAorCSAgIHVzZSBzdHJ0b2QoKSBpbnN0ZWFkLiByYWogMjAwNy0xMC0yNCAqLworCWludGVydmFsID0gc3RydG9kKGFyZzIsTlVMTCkvMTAwLjA7CisgICAgICB9CisgICAgICAvKiBtYWtlIHN1cmUgdGhhdCBpdGVyYXRpb25fbWluIGFuZCBpdGVyYXRpb25fbWF4IGFyZSBhdCBsZWFzdAorCSBhdCBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZS4gIGlmIGEgLWkgb3B0aW9uIGhhcyBwcmV2aW91c2x5CisJIGJlZW4gcGFyc2VkLCB0aGVzZSB3aWxsIG5vIGxvbmdlciBiZSAxLCBzbyB3ZSBjYW4gY2hlY2sKKwkgYWdhaW5zdCAxICovCisgICAgICBpZiAoaXRlcmF0aW9uX21pbiA9PSAxKSBpdGVyYXRpb25fbWluID0gMzsKKyAgICAgIGlmIChpdGVyYXRpb25fbWF4ID09IDEpIGl0ZXJhdGlvbl9tYXggPSAxMDsKKyAgICAgIC8qIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbnRlcnZhbCBpcyBzZXQgaWYgaXQgaXNuJ3QgYXQgaXRzIGRlZmF1bHQKKwkgdmFsdWUgKi8KKyAgICAgIGlmIChpbnRlcnZhbCA9PSAwLjApIGludGVydmFsID0gMC4wNTsgLyogZml2ZSBwZXJjZW50ICovCisgICAgICBicmVhazsKKyAgICBjYXNlICdqJzoKKyAgICAgIGtlZXBfaGlzdG9ncmFtID0gMTsKKyAgICAgIGtlZXBfc3RhdGlzdGljcyA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlICdrJzoKKyAgICAgIC8qIGxvY2FsIGRpcnR5IGFuZCBjbGVhbiBjb3VudHMgKi8KKyNpZmRlZiBESVJUWQorICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKSB7CisJbG9jX2RpcnR5X2NvdW50ID0gY29udmVydChhcmcxKTsKKyAgICAgIH0KKyAgICAgIGlmIChhcmcyWzBdICkgeworCWxvY19jbGVhbl9jb3VudCA9IGNvbnZlcnQoYXJnMik7CisgICAgICB9CisjZWxzZQorICAgICAgcHJpbnRmKCJJIGRvbid0IGtub3cgaG93IHRvIGdldCBkaXJ0eS5cbiIpOworI2VuZGlmIC8qIERJUlRZICovCisgICAgICBicmVhazsKKyAgICBjYXNlICdLJzoKKyAgICAgIC8qIHJlbW90ZSBkaXJ0eSBhbmQgY2xlYW4gY291bnRzICovCisjaWZkZWYgRElSVFkKKyAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworCXJlbV9kaXJ0eV9jb3VudCA9IGNvbnZlcnQoYXJnMSk7CisgICAgICB9CisgICAgICBpZiAoYXJnMlswXSApIHsKKwlyZW1fY2xlYW5fY291bnQgPSBjb252ZXJ0KGFyZzIpOworICAgICAgfQorI2Vsc2UKKyAgICAgIHByaW50ZigiSSBkb24ndCBrbm93IGhvdyB0byBnZXQgZGlydHkuXG4iKTsKKyNlbmRpZiAvKiBESVJUWSAqLworICAgICAgYnJlYWs7CisgICAgY2FzZSAnbic6CisgICAgICBzaGVsbF9udW1fY3B1cyA9IGF0b2kob3B0YXJnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ04nOgorICAgICAgbm9fY29udHJvbCA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlICdvJzoKKyAgICAgIC8qIHNldCB0aGUgbG9jYWwgb2Zmc2V0cyAqLworICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCWxvY2FsX3NlbmRfb2Zmc2V0ID0gY29udmVydChhcmcxKTsKKyAgICAgIGlmIChhcmcyWzBdKQorCWxvY2FsX3JlY3Zfb2Zmc2V0ID0gY29udmVydChhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ08nOgorICAgICAgLyogc2V0IHRoZSByZW1vdGUgb2Zmc2V0cyAqLworICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCXJlbW90ZV9zZW5kX29mZnNldCA9IGNvbnZlcnQoYXJnMSk7CisgICAgICBpZiAoYXJnMlswXSkKKwlyZW1vdGVfcmVjdl9vZmZzZXQgPSBjb252ZXJ0KGFyZzIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnUCc6CisgICAgICAvKiB0byBwcmludCBvciBub3QgdG8gcHJpbnQsIHRoYXQgaXMgKi8KKyAgICAgIC8qIHRoZSBoZWFkZXIgcXVlc3Rpb24gKi8KKyAgICAgIHByaW50X2hlYWRlcnMgPSBjb252ZXJ0KG9wdGFyZyk7CisgICAgICBicmVhazsKKyAgICBjYXNlICdyJzoKKyAgICAgIC8qIHRoZSB1c2VyIHdpc2hlcyB0aGF0IHdlIGRlY2xhcmUgY29uZmlkZW5jZSB3aGVuIGhpdCBvbiB0aGUKKwkgcmVzdWx0IGV2ZW4gaWYgbm90IHlldCByZWFjaGVkIG9uIENQVSB1dGlsaXphdGlvbi4gIG9ubHkKKwkgbWVhbmluZ2Z1bCBpZiBjcHUgdXRpbCBpcyBlbmFibGVkICovCisgICAgICByZXN1bHRfY29uZmlkZW5jZV9vbmx5ID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1MnOgorICAgICAgLyogdGhlIHVzZXIgd2lzaGVzIHVzIHRvIHNldCBTT19LRUVQQUxJVkUgKi8KKyAgICAgIHdhbnRfa2VlcGFsaXZlID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3MnOgorICAgICAgLyogdGhlIHVzZXIgd2lzaGVzIHVzIHRvIHNsZWVwL3BhdXNlIHNvbWUgbGVuZ3RoIG9mIHRpbWUgYmVmb3JlCisJIGFjdHVhbGx5IHN0YXJ0aW5nIHRoZSB0ZXN0ICovCisgICAgICB3YWl0X3RpbWVfc2VjcyA9IGNvbnZlcnQob3B0YXJnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3QnOgorICAgICAgLyogc2V0IHRoZSB0ZXN0IG5hbWUgYW5kIHNoaWZ0IGl0IHRvIHVwcGVyIGNhc2Ugc28gd2UgZG9uJ3QgaGF2ZQorCSB0byB3b3JyeSBhYm91dCBjb21wYXJlcyBvbiB0aGluZ3MgbGlrZSBzdWJzdHJpbmdzICovCisgICAgICBzdHJuY3B5KHRlc3RfbmFtZSxvcHRhcmcsc2l6ZW9mKHRlc3RfbmFtZSktMSk7CisgICAgICBjb252ZXJ0X3RvX3VwcGVyKHRlc3RfbmFtZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlICdUJzoKKyAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggbmV0c2VydmVyIG9yIG5ldHBlcmYKKyAgICAgICAgIHdpbGwgcnVuICovCisgICAgICBicmVha19hcmdzKG9wdGFyZyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pIHsKKwlsb2NhbF9wcm9jX2FmZmluaXR5ID0gY29udmVydChhcmcxKTsKKwliaW5kX3RvX3NwZWNpZmljX3Byb2Nlc3Nvcihsb2NhbF9wcm9jX2FmZmluaXR5LDApOworICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0pIHsKKwlyZW1vdGVfcHJvY19hZmZpbml0eSA9IGNvbnZlcnQoYXJnMik7CisgICAgICB9CisgICAgICBjcHVfYmluZGluZ19yZXF1ZXN0ZWQgPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnVyc6CisgICAgICAvKiBzZXQgdGhlICJ3aWR0aCIgb2YgdGhlIHVzZXIgc3BhY2UgZGF0YSBidWZmZXIgcmluZy4gVGhpcyB3aWxsCisJIGJlIHRoZSBudW1iZXIgb2Ygc2VuZF9zaXplIGJ1ZmZlcnMgbWFsbG9jJ2QgaW4gdGhlIHRlc3RzICovCisgICAgICBicmVha19hcmdzKG9wdGFyZyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pCisJc2VuZF93aWR0aCA9IGNvbnZlcnQoYXJnMSk7CisgICAgICBpZiAoYXJnMlswXSkKKwlyZWN2X3dpZHRoID0gY29udmVydChhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3knOgorICAgICAgYnJlYWtfYXJncyhvcHRhcmcsIGFyZzEsIGFyZzIpOworI2lmIGRlZmluZWQoU09fUFJJT1JJVFkpCisgICAgICBpZiAoYXJnMVswXSkKKwlsb2NhbF9zb2NrZXRfcHJpbyA9IGNvbnZlcnQoYXJnMSk7CisjZWxzZQorICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwKKwkJIlNldHRpbmcgU09fUFJJT1JJVFkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLCByZXF1ZXN0IHRvIHNldCBTT19QUklPUklUWSBsb2NhbGx5IGlnbm9yZWQuXG4iKTsKKwlmZmx1c2god2hlcmUpOworICAgICAgfQorICAgICAgbG9jYWxfc29ja2V0X3ByaW8gPSAtMzsKKyNlbmRpZgorICAgICAgaWYgKGFyZzJbMF0pCisJcmVtb3RlX3NvY2tldF9wcmlvID0gY29udmVydChhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1knOgorICAgICAgYnJlYWtfYXJncyhvcHRhcmcsIGFyZzEsIGFyZzIpOworI2lmIGRlZmluZWQoSVBfVE9TKSB8fCBkZWZpbmVkKElQVjZfVENMQVNTKQorICAgICAgaWYgKGFyZzFbMF0pCisJbG9jYWxfc29ja2V0X3RvcyA9IHBhcnNlX2lwcW9zKGFyZzEpOworI2Vsc2UKKyAgICAgIGlmIChkZWJ1ZykgeworCWZwcmludGYod2hlcmUsCisJCSJTZXR0aW5nIElQIHR5cGUtb2Ytc2VydmljZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0sIHJlcXVlc3QgdG8gc2V0IGl0IGxvY2FsbHkgaWdub3JlZC5cbiIpOworCWZmbHVzaCh3aGVyZSk7CisgICAgICB9CisgICAgICBsb2NhbF9zb2NrZXRfdG9zID0gLTE7CisjZW5kaWYKKyAgICAgIGlmIChhcmcyWzBdKSB7CisJcmVtb3RlX3NvY2tldF90b3MgPSBwYXJzZV9pcHFvcyhhcmcyKTsKKwlpZiAoZGVidWcpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgIlNldHRpbmcgcmVtb3RlX3NvY2tldF90b3MgdG8gMHgleFxuIiwKKwkJICByZW1vdGVfc29ja2V0X3Rvcyk7CisJICBmZmx1c2god2hlcmUpOworCX0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1onOgorICAgICAgLyogb25seSBjb3B5IGFzIG11Y2ggb2YgdGhlIHBhc3NwaHJhc2UgYXMgY291bGQgZml0IGluIHRoZQorCSB0ZXN0LXNwZWNpZmljIHBvcnRpb24gb2YgYSBjb250cm9sIG1lc3NhZ2UuIFdpbmRvd3MgZG9lcyBub3QKKwkgc2VlbSB0byBoYXZlIGEgc3RybmR1cCgpIHNvIGp1c3QgbWFsbG9jIGFuZCBzdHJuY3B5IGl0LiAgd2UKKwkgd2VyZW4ndCBjaGVja2luZyB0aGUgc3RybmR1cCgpIHJldHVybiBzbyB3b24ndCBib3RoZXIgd2l0aAorCSBjaGVja2luZyBtYWxsb2MoKS4gd2Ugd2lsbCB0aG91Z2ggbWFrZSBjZXJ0YWluIHdlIG9ubHkKKwkgYWxsb2NhdGVkIGl0IG9uY2UgaW4gdGhlIGV2ZW50IHRoYXQgc29tZW9uZSBwdXRzIC1aIG9uIHRoZQorCSBjb21tYW5kIGxpbmUgbW9yZSB0aGFuIG9uY2UgKi8KKyAgICAgIGlmIChwYXNzcGhyYXNlID09IE5VTEwpIAorCXBhc3NwaHJhc2UgPSBtYWxsb2Moc2l6ZW9mKG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSkpOworICAgICAgc3RybmNweShwYXNzcGhyYXNlLAorCSAgICAgIG9wdGFyZywKKwkgICAgICBzaXplb2YobmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhKSk7CisgICAgICBwYXNzcGhyYXNlW3NpemVvZihuZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEpIC0gMV0gPSAnXDAnOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnbCc6CisgICAgICAvKiBkZXRlcm1pbmUgdGVzdCBlbmQgY29uZGl0aW9ucyAqLworICAgICAgLyogYXNzdW1lIGEgdGltZWQgdGVzdCAqLworICAgICAgdGVzdF90aW1lID0gY29udmVydChvcHRhcmcpOworICAgICAgdGVzdF9ieXRlcyA9IHRlc3RfdHJhbnMgPSAwOworICAgICAgaWYgKHRlc3RfdGltZSA8IDApIHsKKwl0ZXN0X2J5dGVzID0gLTEgKiB0ZXN0X3RpbWU7CisJdGVzdF90cmFucyA9IHRlc3RfYnl0ZXM7CisJdGVzdF90aW1lID0gMDsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3YnOgorICAgICAgLyogc2F5IGhvdyBtdWNoIHRvIHNheSAqLworICAgICAgdmVyYm9zaXR5ID0gY29udmVydChvcHRhcmcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAncCc6CisgICAgICAvKiBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBwb3J0IG51bWJlciB3ZSB1c2UgYnJlYWtfYXJnc19leHBsaWNpdAorCSBoZXJlIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMKKwkgZ2VuZXJhdGlvbnMgb2YgbmV0cGVyZiB3aGVyZSBoYXZpbmcgYSBzaW5nbGUgdmFsdWUgZGlkIG5vdAorCSBzZXQgYm90aCByZW1vdGUgX2FuZF8gbG9jYWwgcG9ydCBudW1iZXIuIHJhaiAyMDA1LTAyLTA0ICovCisgICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pCisJc3RybmNweSh0ZXN0X3BvcnQsYXJnMSxQT1JUQlVGU0laRSk7CisgICAgICBpZiAoYXJnMlswXSkKKwlzdHJuY3B5KGxvY2FsX3Rlc3RfcG9ydCxhcmcyLFBPUlRCVUZTSVpFKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ0gnOgorICAgICAgLyogc2F2ZS1vZmYgdGhlIGhvc3QgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24sIHVzZQorCSBicmVha19hcmdzX2V4cGxpY2l0IHNpbmNlIHBhc3NpbmcganVzdCBvbmUgdmFsdWUgc2hvdWxkIG5vdAorCSBzZXQgYm90aCAqLworICAgICAgYnJlYWtfYXJnc19leHBsaWNpdChvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCXN0cm5jcHkoaG9zdF9uYW1lLGFyZzEsc2l6ZW9mKGhvc3RfbmFtZSkpOworICAgICAgaWYgKGFyZzJbMF0pCisJYWRkcmVzc19mYW1pbHkgPSBwYXJzZV9hZGRyZXNzX2ZhbWlseShhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ0wnOgorICAgICAgLyogc2F2ZS1vZmYgdGhlIGxvY2FsIGNvbnRyb2wgc29ja2V0IGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uIHVzZQorCSBicmVha19hcmdzX2V4cGxpY2l0IHNpbmNlIHBhc3NpbmcganVzdCBvbmUgdmFsdWUgc2hvdWxkIG5vdAorCSBzZXQgYm90aCAqLworICAgICAgYnJlYWtfYXJnc19leHBsaWNpdChvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCXN0cm5jcHkobG9jYWxfaG9zdF9uYW1lLGFyZzEsc2l6ZW9mKGxvY2FsX2hvc3RfbmFtZSkpOworICAgICAgaWYgKGFyZzJbMF0pCisJbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBwYXJzZV9hZGRyZXNzX2ZhbWlseShhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3cnOgorICAgICAgLyogV2Ugd2FudCB0byBzZW5kIHJlcXVlc3RzIGF0IGEgY2VydGFpbiB3YXRlLiAgUmVtZW1iZXIgdGhhdAorICAgICAgICAgdGhlcmUgYXJlIDEwMDAwMDAgdXNlY3MgaW4gYSBzZWNvbmQsIGFuZCB0aGF0IHRoZSBwYWNrZXQgcmF0ZQorICAgICAgICAgaXMgZXhwcmVzc2VkIGluIHBhY2tldHMgcGVyIG1pbGxpc2Vjb25kLiBzaHVmZmxlIHRoZSAjaWZkZWYKKyAgICAgICAgIGFyb3VuZCBhIGJpdCB0byBkZWFsIHdpdGggYm90aCBuZXRwZXJmIGFuZCBuZXRzZXJ2ZXIgcG9zc2libHkKKyAgICAgICAgIGRvaW5nIGludGVydmFscyB3aXRoIG9tbmkgdGVzdHMgKi8KKyAgICAgIGJyZWFrX2FyZ3NfZXhwbGljaXQob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworI2lmZGVmIFdBTlRfSU5URVJWQUxTCisJaW50ZXJ2YWxfdXNlY3MgPSBjb252ZXJ0X3RpbWVzcGVjKGFyZzEpOworCWludGVydmFsX3dhdGUgID0gaW50ZXJ2YWxfdXNlY3MgLyAxMDAwOworI2Vsc2UKKwlmcHJpbnRmKHdoZXJlLAorCQkiUGFja2V0IHJhdGUgY29udHJvbCBpcyBub3QgY29tcGlsZWQgaW4uXG4iKTsKKyNlbmRpZgorICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0pIHsKKwkvKiB3ZSBwYXNzIHVzZWNzIHRvIHRoZSByZW1vdGUgYW5kIGxldCBpdCBkZWFsIHRvIGNvdmVyIGJvdGgKKwkgICBpbnRlcnZhbHMgYW5kIHNwaW4gbWV0aG9kcy4gaWYgaGUgd2Fzbid0IGludGVydmFscyBlbmFibGVkCisJICAgaGUgd2lsbCByZXR1cm4gYSBzdWl0YWJsZSB2YWx1ZSBiYWNrIHRvIHVzICovCisJcmVtb3RlX2ludGVydmFsX3VzZWNzID0gY29udmVydF90aW1lc3BlYyhhcmcyKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2InOgorICAgICAgLyogd2Ugd2FudCB0byBoYXZlIGEgYnVyc3Qgc28gbWFueSBwYWNrZXRzIHBlciAqLworICAgICAgLyogaW50ZXJ2YWwuICovCisgICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pIHsKKyNpZmRlZiBXQU5UX0lOVEVSVkFMUworCWludGVydmFsX2J1cnN0ID0gY29udmVydChhcmcxKTsKKwkvKiBzZXQgYSBkZWZhdWx0IGluIGNhc2UgdGhlIHVzZXIgZG9lcyBub3QgaW5jbHVkZSB0aGUgLXcKKwkgICBvcHRpb24gKi8KKwlpZiAoaW50ZXJ2YWxfdXNlY3MgPT0gMCkgeworCSAgaW50ZXJ2YWxfd2F0ZSA9IDE7CisJICBpbnRlcnZhbF91c2VjcyA9IDEwMDA7CisJfQorI2Vsc2UKKwlmcHJpbnRmKHdoZXJlLAorCQkiUGFja2V0IGJ1cnN0IHNpemUgaXMgbm90IGNvbXBpbGVkIGluLiBcbiIpOworI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCisgICAgICB9CisgICAgICAvKiB0aGVyZSBpcyBubyBpZmRlZiBoZXJlIGJlY2F1c2Ugd2UgYXJlIHNlbmRpbmcgdGhpcyB2YWx1ZSB0bworCSB0aGUgcmVtb3RlLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gY29tcGlsZWQgZm9yCisJIGludGVydmFscyBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHdheSBvZiBrbm93aW5nIG9uIHRoaXMgc2lkZQorCSB1bnRpbCB3ZSB0cnkgKi8KKyAgICAgIGlmIChhcmcyWzBdKSB7CisJcmVtb3RlX2ludGVydmFsX2J1cnN0ID0gY29udmVydChhcmcyKTsKKwlpZiAocmVtb3RlX2ludGVydmFsX3VzZWNzID09IDApIHsKKwkgIHJlbW90ZV9pbnRlcnZhbF91c2VjcyA9IDEwMDA7CisJfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAnQic6CisgICAgICByZXN1bHRfYnJhbmQgPSBtYWxsb2Moc3RybGVuKG9wdGFyZykrMSk7CisgICAgICBpZiAoTlVMTCAhPSByZXN1bHRfYnJhbmQpIHsKKwlzdHJjcHkocmVzdWx0X2JyYW5kLG9wdGFyZyk7CisgICAgICB9CisgICAgICBlbHNlIHsKKwlmcHJpbnRmKHdoZXJlLAorCQkiVW5hYmxlIHRvIG1hbGxvYyBzcGFjZSBmb3IgcmVzdWx0IGJyYW5kXG4iKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJzQnOgorICAgICAgYWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUOworICAgICAgbG9jYWxfYWRkcmVzc19mYW1pbHkgPSBBRl9JTkVUOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnNic6CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgICAgIGFkZHJlc3NfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgICBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IEFGX0lORVQ2OworI2Vsc2UKKyAgICAgIHByaW50ZigiVGhpcyBuZXRwZXJmIHdhcyBub3QgY29tcGlsZWQgb24gYW4gSVB2NiBjYXBhYmxlIHN5c3RlbSFcbiIpOworICAgICAgZXhpdCgtMSk7CisjZW5kaWYKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1YnOgorICAgICAgcHJpbnRmKCJOZXRwZXJmIHZlcnNpb24gJXNcbiIsTkVUUEVSRl9WRVJTSU9OKTsKKyAgICAgIGV4aXQoMCk7CisgICAgICBicmVhazsKKyAgICB9OworICB9CisgIC8qIG9rLCB3aGF0IHNob3VsZCBvdXIgZGVmYXVsdCBob3N0bmFtZSBhbmQgbG9jYWwgYmluZGluZyBpbmZvIGJlPworICAgKi8KKworICBpZiAoJ1wwJyA9PSBob3N0X25hbWVbMF0pIHsKKyAgICAvKiBob3N0X25hbWUgd2FzIG5vdCBzZXQgKi8KKyAgICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOgorI2lmIGRlZmluZWQoQUZfUkRTKQorICAgIGNhc2UgQUZfUkRTOgorI2VuZGlmCisgICAgICBzdHJjcHkoaG9zdF9uYW1lLCJsb2NhbGhvc3QiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQUZfVU5TUEVDOgorICAgICAgLyogd2hhdCB0byBkbyBoZXJlPyBjYXNlIGl0IG9mZiB0aGUgbG9jYWxfYWRkcmVzc19mYW1pbHkgSQorCSBzdXBwb3NlICovCisgICAgICBzd2l0Y2ggKGxvY2FsX2FkZHJlc3NfZmFtaWx5KSB7CisgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICBjYXNlIEFGX1VOU1BFQzoKKyNpZiBkZWZpbmVkKEFGX1JEUykKKyAgICAgIGNhc2UgQUZfUkRTOgorI2VuZGlmCisJc3RyY3B5KGhvc3RfbmFtZSwibG9jYWxob3N0Iik7CisJYnJlYWs7CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgICAgIGNhc2UgQUZfSU5FVDY6CisJc3RyY3B5KGhvc3RfbmFtZSwiOjoxIik7CisJYnJlYWs7CisjZW5kaWYKKyAgICAgIGRlZmF1bHQ6CisJcHJpbnRmKCJOZXRwZXJmIGRvZXMgbm90IHVuZGVyc3RhbmQgJWQgYXMgYW4gYWRkcmVzcyBmYW1pbHlcbiIsCisJICAgICAgIGFkZHJlc3NfZmFtaWx5KTsKKwlleGl0KC0xKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworI2lmIGRlZmluZWQoQUZfSU5FVDYpCisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHN0cmNweShob3N0X25hbWUsIjo6MSIpOworICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgcHJpbnRmKCJOZXRwZXJmIGRvZXMgbm90IHVuZGVyc3RhbmQgJWQgYXMgYW4gYWRkcmVzcyBmYW1pbHlcbiIsCisJICAgICBhZGRyZXNzX2ZhbWlseSk7CisgICAgICBleGl0KC0xKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLyogcmVzb2x2ZSB0aGUgaG9zdG5hbWUgYW5kIHB1bGwgdGhlIGFkZHJlc3MgZmFtaWx5IGZyb20gdGhlCisgICAgICAgYWRkcmluZm8gKi8KKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpOworCisgICAgYWkgPSByZXNvbHZlX2hvc3QoaG9zdF9uYW1lLCBOVUxMLCBhZGRyZXNzX2ZhbWlseSk7CisgICAgaWYgKCFhaSkgeworICAgICAgcHJpbnRmKCJOZXRwZXJmIGNvdWxkIG5vdCByZXNvbHZlICVzIGFzIGEgaG9zdCBuYW1lXG4iLCBob3N0X25hbWUpOworICAgICAgZXhpdCgtMSk7CisgICAgfQorICAgIGFkZHJlc3NfZmFtaWx5ID0gYWktPmFpX2ZhbWlseTsKKyAgICBmcmVlYWRkcmluZm8oYWkpOworICB9CisKKworICAvKiBub3csIGhhdmluZyBlc3RhYmxpc2hlZCB0aGUgbmFtZSB0byB3aGljaCB0aGUgY29udHJvbCB3aWxsCisgICAgIGNvbm5lY3QsIGZyb20gd2hhdCBzaG91bGQgaXQgY29tZT8gKi8KKyAgaWYgKCdcMCcgPT0gbG9jYWxfaG9zdF9uYW1lWzBdKSB7CisgICAgc3dpdGNoIChsb2NhbF9hZGRyZXNzX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5FVDoKKyNpZiBkZWZpbmVkKEFGX1JEUykKKyAgICBjYXNlIEFGX1JEUzoKKyNlbmRpZgorICAgICAgc3RyY3B5KGxvY2FsX2hvc3RfbmFtZSwiMC4wLjAuMCIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBRl9VTlNQRUM6CisgICAgICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5KSB7CisgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICBjYXNlIEFGX1VOU1BFQzoKKyNpZiBkZWZpbmVkKEFGX1JEUykKKyAgICBjYXNlIEFGX1JEUzoKKyNlbmRpZgorCXN0cmNweShsb2NhbF9ob3N0X25hbWUsIjAuMC4wLjAiKTsKKwlicmVhazsKKyNpZiBkZWZpbmVkKEFGX0lORVQ2KQorICAgICAgY2FzZSBBRl9JTkVUNjoKKwlzdHJjcHkobG9jYWxfaG9zdF9uYW1lLCI6OjAiKTsKKwlicmVhazsKKyNlbmRpZgorICAgICAgZGVmYXVsdDoKKwlwcmludGYoIk5ldHBlcmYgZG9lcyBub3QgdW5kZXJzdGFuZCAlZCBhcyBhbiBhZGRyZXNzIGZhbWlseVxuIiwKKwkgICAgICAgYWRkcmVzc19mYW1pbHkpOworCWV4aXQoLTEpOworICAgICAgfQorICAgICAgYnJlYWs7CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgc3RyY3B5KGxvY2FsX2hvc3RfbmFtZSwiOjowIik7CisgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICBwcmludGYoIk5ldHBlcmYgZG9lcyBub3QgdW5kZXJzdGFuZCAlZCBhcyBhbiBhZGRyZXNzIGZhbWlseVxuIiwKKwkgICAgIGFkZHJlc3NfZmFtaWx5KTsKKyAgICAgIGV4aXQoLTEpOworICAgIH0KKyAgfQorCisgIC8qIHNvLCBpZiB3ZSBhcmVuJ3QgZXZlbiBnb2luZyB0byBlc3RhYmxpc2ggYSBjb250cm9sIGNvbm5lY3Rpb24gd2UKKyAgICAgc2hvdWxkIHNldCBjZXJ0YWluICJyZW1vdGUiIHNldHRpbmdzIHRvIHJlZmxlY3QgdGhpcywgcmVnYXJkbGVzcworICAgICBvZiB3aGF0IGVsc2UgbWF5IGhhdmUgYmVlbiBzZXQgb24gdGhlIGNvbW1hbmQgbGluZSAqLworICBpZiAobm9fY29udHJvbCkgeworICAgIHJlbW90ZV9zb2NrZXRfcHJpbyA9IC0xOworICAgIHJlbW90ZV9zb2NrZXRfdG9zID0gLTE7CisgICAgcmVtb3RlX3JlY3ZfYWxpZ24gPSAtMTsKKyAgICByZW1vdGVfc2VuZF9hbGlnbiA9IC0xOworICAgIHJlbW90ZV9zZW5kX29mZnNldCA9IC0xOworICAgIHJlbW90ZV9yZWN2X29mZnNldCA9IC0xOworICAgIHJlbW90ZV9jcHVfcmF0ZSA9IChmbG9hdCktMS4wOworICAgIHJlbW90ZV9jcHVfdXNhZ2UgPSAwOworICB9CisKKyAgLyogcGFyc2luZyB0ZXN0LXNwZWNpZmljIG9wdGlvbnMgdXNlZCB0byBiZSBjb25kaXRpb25hbCBvbiB0aGVyZQorICAgICBiZWluZyBhICItLSIgaW4gdGhlIG9wdGlvbiBzdHJlYW0uICBob3dldmVyLCBzb21lIG9mIHRoZSB0ZXN0cworICAgICBoYXZlIG90aGVyIGluaXRpYWxpemF0aW9uIGhhcHBlbmluZyBpbiB0aGVpciAic2NhbiIgcm91dGluZXMgc28KKyAgICAgd2Ugd2FudCB0byBjYWxsIHRoZW0gcmVnYXJkbGVzcy4gcmFqIDIwMDUtMDItMDggKi8KKyAgLyogd2hpbGUgdGhlIHBhcnNpbmcgb2YgdGhlIGNvbW1hbmQgbGluZSB3aWxsIHVwc2hpZnQgdGhlIHRlc3QgbmFtZSwKKyAgICAgc2luY2Ugd2UgZG9uJ3Qga25vdyB0aGF0IHRoZXJlIHdpbGwgYWx3YXlzIGJlIGEgd2F5IHRvIGRvIHNvPyB3ZQorICAgICB3aWxsIHJldGFpbiBmb3Igbm93IHRoZSBzdHJjYXNlY21wIGNhbGxzIHJhdGhlciB0aGFuIHN3aXRjaCB0bworICAgICBzdHJjbXAuIHJhaiAyMDEwMTIyMCAqLworICAgIGlmICgKKyNpZm5kZWYgV0FOVF9NSUdSQVRJT04KKwkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9TVFJFQU0iKSA9PSAwKSB8fAorCShzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX01BRVJUUyIpID09IDApIHx8CisJKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfUlIiKSA9PSAwKSB8fAorCShzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX0NSUiIpID09IDApIHx8CisJKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJVRFBfU1RSRUFNIikgPT0gMCkgfHwKKwkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVEUF9SUiIpID09IDApIHx8CisjZW5kaWYKKyNpZmRlZiBIQVZFX0lDU0NfRVhTCisJKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJFWFNfVENQX1NUUkVBTSIpID09IDApIHx8CisjZW5kaWYgLyogSEFWRV9JQ1NDX0VYUyAqLworI2lmZGVmIEhBVkVfU0VOREZJTEUKKwkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9TRU5ERklMRSIpID09IDApIHx8CisjZW5kaWYgLyogSEFWRV9TRU5ERklMRSAqLworCShzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX0NDIikgPT0gMCkgfHwKKwkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9NU1MiKSA9PSAwKSB8fAorI2lmZGVmIERPXzE2NDQKKwkoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9UUlIiKSA9PSAwKSB8fAorI2VuZGlmIC8qIERPXzE2NDQgKi8KKyNpZmRlZiBET19OQlJSCisJKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfVFJSIikgPT0gMCkgfHwKKyNlbmRpZiAvKiBET19OQlJSICovCisJKDApKQorICAgICAgeworCXNjYW5fc29ja2V0c19hcmdzKGFyZ2MsIGFyZ3YpOworICAgICAgfQorCisjaWZkZWYgV0FOVF9ETFBJCisgICAgZWxzZSBpZiAoKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJETENPX1JSIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiRExDTF9SUiIpID09IDApIHx8CisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIkRMQ09fU1RSRUFNIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiRExDTF9TVFJFQU0iKSA9PSAwKSkKKyAgICAgIHsKKwlzY2FuX2RscGlfYXJncyhhcmdjLCBhcmd2KTsKKyAgICAgIH0KKyNlbmRpZiAvKiBXQU5UX0RMUEkgKi8KKworI2lmZGVmIFdBTlRfVU5JWAorICAgIGVsc2UgaWYgKChzdHJjYXNlY21wKHRlc3RfbmFtZSwiU1RSRUFNX1JSIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiREdfUlIiKSA9PSAwKSB8fAorCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTVFJFQU1fU1RSRUFNIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiREdfU1RSRUFNIikgPT0gMCkpCisgICAgICB7CisJc2Nhbl91bml4X2FyZ3MoYXJnYywgYXJndik7CisgICAgICB9CisjZW5kaWYgLyogV0FOVF9VTklYICovCisKKyNpZmRlZiBXQU5UX1hUSQorICAgIGVsc2UgaWYgKChzdHJjYXNlY21wKHRlc3RfbmFtZSwiWFRJX1RDUF9SUiIpID09IDApIHx8CisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlhUSV9UQ1BfU1RSRUFNIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiWFRJX1VEUF9SUiIpID09IDApIHx8CisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlhUSV9VRFBfU1RSRUFNIikgPT0gMCkpCisgICAgICB7CisJc2Nhbl94dGlfYXJncyhhcmdjLCBhcmd2KTsKKyAgICAgIH0KKyNlbmRpZiAvKiBXQU5UX1hUSSAqLworCisjaWZkZWYgV0FOVF9TQ1RQCisgICAgZWxzZSBpZiAoKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTQ1RQX1NUUkVBTSIpID09IDApIHx8CisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlNDVFBfUlIiKSA9PSAwKSB8fAorCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTQ1RQX1NUUkVBTV9NQU5ZIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiU0NUUF9SUl9NQU5ZIikgPT0gMCkpCisgICAgeworICAgICAgc2Nhbl9zY3RwX2FyZ3MoYXJnYywgYXJndik7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBXQU5UX1NEUAorICAgIGVsc2UgaWYoKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTRFBfU1RSRUFNIikgPT0gMCkgfHwKKwkgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTRFBfTUFFUlRTIikgPT0gMCkgfHwKKwkgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJTRFBfUlIiKSA9PSAwKSkKKyAgICAgIHsKKwlzY2FuX3NkcF9hcmdzKGFyZ2MsIGFyZ3YpOworICAgICAgfQorI2VuZGlmCisKKyNpZmRlZiBXQU5UX09NTkkKKyAgICBlbHNlIGlmICgoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIk9NTkkiKSA9PSAwKSB8fAorI2lmZGVmIFdBTlRfTUlHUkFUSU9OCisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9TVFJFQU0iKSA9PSAwKSB8fAorCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfTUFFUlRTIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX1JSIikgPT0gMCkgfHwKKwkgICAgIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX0NSUiIpID09IDApIHx8CisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVEUF9TVFJFQU0iKSA9PSAwKSB8fAorCSAgICAgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJVRFBfUlIiKSA9PSAwKSB8fAorI2VuZGlmCisJICAgICAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVVSUQiKSA9PSAwKSkgeworICAgICAgc2Nhbl9vbW5pX2FyZ3MoYXJnYywgYXJndik7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiB3aGF0IGlzIG91ciBkZWZhdWx0IHZhbHVlIGZvciB0aGUgb3V0cHV0IHVuaXRzPyAgaWYgdGhlIHRlc3QKKyAgICAgICBuYW1lIGNvbnRhaW5zICJSUiIgb3IgInJyIiBvciAiUnIiIG9yICJyUiIgdGhlbiB0aGUgZGVmYXVsdCBpcworICAgICAgICd4JyBmb3IgdHJhbnNhY3Rpb25zLiBvdGhlcndpc2UgaXQgaXMgJ20nIGZvciBtZWdhYml0cyAoMTBeNikKKyAgICAgICBob3dldmVyLi4uICBpZiB0aGlzIGlzIGFuICJvbW5pIiB0ZXN0IHRoZW4gd2Ugd2FudCB0byBkZWZlcgorICAgICAgIHRoaXMgZGVjaXNpb24gdG8gc2Nhbl9vbW5pX2FyZ3MgKi8KKworICAgIGlmIChzdHJjYXNlY21wKHRlc3RfbmFtZSwib21uaSIpKSB7CisgICAgICBpZiAoJz8nID09IGxpYmZtdCkgeworCS8qIHdlIHVzZSBhIHNlcmllcyBvZiBzdHJzdHIncyBoZXJlIGJlY2F1c2Ugbm90IGV2ZXJ5b25lIGhhcworCSAgIHN0cmNhc2VzdHIgYW5kIEkgZG9uJ3QgZmVlbCBsaWtlIHVwIG9yIGRvd25zaGlmdGluZyB0ZXh0ICovCisJaWYgKChzdHJzdHIodGVzdF9uYW1lLCJSUiIpKSB8fAorCSAgICAoc3Ryc3RyKHRlc3RfbmFtZSwicnIiKSkgfHwKKwkgICAgKHN0cnN0cih0ZXN0X25hbWUsIlJyIikpIHx8CisJICAgIChzdHJzdHIodGVzdF9uYW1lLCJyUiIpKSkgeworCSAgbGliZm10ID0gJ3gnOworCX0KKwllbHNlIHsKKwkgIGxpYmZtdCA9ICdtJzsKKwl9CisgICAgICB9CisgICAgICBlbHNlIGlmICgneCcgPT0gbGliZm10KSB7CisJLyogbm93LCBhIGZvcm1hdCBvZiAneCcgbWFrZXMgbm8gc2Vuc2UgZm9yIGFueXRoaW5nIG90aGVyIHRoYW4KKwkgICBhbiBSUiB0ZXN0LiBpZiBzb21lb25lIGhhcyBiZWVuIHNpbGx5IGVub3VnaCB0byB0cnkgdG8gc2V0CisJICAgdGhhdCwgd2Ugd2lsbCByZXNldCBpdCBzaWxlbnRseSB0byBkZWZhdWx0IC0gbmFtZWx5ICdtJyAqLworCWlmICgoc3Ryc3RyKHRlc3RfbmFtZSwiUlIiKSA9PSBOVUxMKSAmJgorCSAgICAoc3Ryc3RyKHRlc3RfbmFtZSwicnIiKSA9PSBOVUxMKSAmJgorCSAgICAoc3Ryc3RyKHRlc3RfbmFtZSwiUnIiKSA9PSBOVUxMKSAmJgorCSAgICAoc3Ryc3RyKHRlc3RfbmFtZSwiclIiKSA9PSBOVUxMKSkgeworCSAgbGliZm10ID0gJ20nOworCX0KKyAgICAgIH0KKyAgICB9Cit9CisKKwwKK3ZvaWQKK2R1bXBfZ2xvYmFscygpCit7CisgIHByaW50ZigiUHJvZ3JhbSBuYW1lOiAlc1xuIiwgcHJvZ3JhbSk7CisgIHByaW50ZigiTG9jYWwgc2VuZCBhbGlnbm1lbnQ6ICVkXG4iLGxvY2FsX3NlbmRfYWxpZ24pOworICBwcmludGYoIkxvY2FsIHJlY3YgYWxpZ25tZW50OiAlZFxuIixsb2NhbF9yZWN2X2FsaWduKTsKKyAgcHJpbnRmKCJSZW1vdGUgc2VuZCBhbGlnbm1lbnQ6ICVkXG4iLHJlbW90ZV9zZW5kX2FsaWduKTsKKyAgcHJpbnRmKCJSZW1vdGUgcmVjdiBhbGlnbm1lbnQ6ICVkXG4iLHJlbW90ZV9yZWN2X2FsaWduKTsKKyAgcHJpbnRmKCJMb2NhbCBzb2NrZXQgcHJpb3JpdHk6ICVkXG4iLCBsb2NhbF9zb2NrZXRfcHJpbyk7CisgIHByaW50ZigiUmVtb3RlIHNvY2tldCBwcmlvcml0eTogJWRcbiIsIHJlbW90ZV9zb2NrZXRfcHJpbyk7CisgIHByaW50ZigiTG9jYWwgc29ja2V0IFRPUzogJXNcbiIsIGlwdG9zMnN0cihsb2NhbF9zb2NrZXRfdG9zKSk7CisgIHByaW50ZigiUmVtb3RlIHNvY2tldCBUT1M6ICVzXG4iLCBpcHRvczJzdHIocmVtb3RlX3NvY2tldF90b3MpKTsKKyAgcHJpbnRmKCJSZXBvcnQgbG9jYWwgQ1BVICVkXG4iLGxvY2FsX2NwdV91c2FnZSk7CisgIHByaW50ZigiUmVwb3J0IHJlbW90ZSBDUFUgJWRcbiIscmVtb3RlX2NwdV91c2FnZSk7CisgIHByaW50ZigiVmVyYm9zaXR5OiAlZFxuIix2ZXJib3NpdHkpOworICBwcmludGYoIkRlYnVnOiAlZFxuIixkZWJ1Zyk7CisgIHByaW50ZigiUG9ydDogJXNcbiIsdGVzdF9wb3J0KTsKKyAgcHJpbnRmKCJUZXN0IG5hbWU6ICVzXG4iLHRlc3RfbmFtZSk7CisgIHByaW50ZigiVGVzdCBieXRlczogJWQgVGVzdCB0aW1lOiAlZCBUZXN0IHRyYW5zOiAlZFxuIiwKKwkgdGVzdF9ieXRlcywKKwkgdGVzdF90aW1lLAorCSB0ZXN0X3RyYW5zKTsKKyAgcHJpbnRmKCJIb3N0IG5hbWU6ICVzXG4iLGhvc3RfbmFtZSk7CisgIHByaW50ZigiXG4iKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9uZXRzaC5oIGIvc3JjL25ldHNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ1ZGUzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9uZXRzaC5oCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTMtMjAxMiBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQorKi8KKworLyogbGlicmFyaWVkIHBlcmZvcm1hbmNlIGluY2x1ZGUgZmlsZSAJCQkJKi8KKy8qIHRoZSBkZWZpbmUgTk9QRVJGRVhURVJOIHRlbHMgdXMgbm90IHRvIHJlLWRlZmluZSBhbGwgdGhlIAkqLworCisvKiBkZWZpbmVzIGFuZCBkZWZhdWx0cyAqLworI2RlZmluZQkJSE9TVE5BTUVTSVpFIAkyNTUKKyNkZWZpbmUgICAgICAgICBQT1JUQlVGU0laRSAgICAgMTAKKyNkZWZpbmUJCURFRkFVTFRfU0laRQkzMjc2OAorI2RlZmluZQkJSE9TVF9OQU1FCSIxMjcuMC4wLjEiCisjZGVmaW5lCQlURVNUX1BPUlQJIjEyODY1IgorCisvKiBvdXRwdXQgY29udHJvbGxpbmcgdmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSAJREVCVUcgMAkJLyogZGVidWdnaW5nIGxldmVsCQkJKi8KKyNkZWZpbmUgCVZFUkJPU0lUWSAwCS8qIHZlcmJvc2l0eSBsZXZlbAkJCSovCisKKy8qIHRoZSBlbmQtdGVzdCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMgLSBlaXRoZXIgdHJhbnNhY3Rpb25zLCBieXRlcywgICovCisvKiBvciB0aW1lLiBkaWZmZXJlbnQgdmFycyB1c2VkIGZvciBjbGFyaXR5IC0gc3BhY2UgaXMgY2hlYXAgOy0pICAgICAgICAqLworI2RlZmluZSAJVEVTVF9USU1FIDEwCS8qIHRlc3QgZW5kcyBieSB0aW1lCQkJKi8KKyNkZWZpbmUgCVRFU1RfQllURVMgMAkvKiB0ZXN0IGVuZHMgb24gYnl0ZSBjb3VudAkJKi8KKyNkZWZpbmUgCVRFU1RfVFJBTlMgMAkvKiB0ZXN0IGVuZHMgb24gdHJhbiBjb3VudAkJKi8KKworLyogdGhlIGFsaWdubWVudCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMJCQkJKi8KKyNkZWZpbmUgCUxPQ19SRUNWX0FMSUdOCTQJLyogYWxpZ25tZW50IGZvciBsb2NhbCByZWNlaXZlcwkqLworI2RlZmluZSAJTE9DX1NFTkRfQUxJR04JNAkvKiBhbGlnbm1lbnQgZm9yIGxvY2FsIHNlbmRzCSovCisjZGVmaW5lIAlSRU1fUkVDVl9BTElHTgk0CS8qIGFsaWdubWVudCBmb3IgcmVtb3RlIHJlY2VpdmUJKi8KKyNkZWZpbmUgCVJFTV9TRU5EX0FMSUdOCTQJLyogYWxpZ25tZW50IGZvciByZW1vdGUgc2VuZHMJKi8KKworLyogd2hpY2ggd2F5IGFyZSB3ZSBnb2luZyBhbmQgd2hhdCBhcmUgd2UgZG9pbmcgaW4gdGhpcyBoYW5kYmFza2V0Py0pICovCisjZGVmaW5lIE5FVFBFUkZfWE1JVCAweDIKKyNkZWZpbmUgTkVUUEVSRl9SRUNWIDB4NAorCisjZGVmaW5lIE5FVFBFUkZfSVNfUlIoeCkgKCgoeCAmIE5FVFBFUkZfWE1JVCkgJiYgKHggJiBORVRQRVJGX1JFQ1YpKSB8fCBcCisJCQkgICghKCh4ICYgTkVUUEVSRl9YTUlUKSB8fCAoeCAmIE5FVFBFUkZfUkVDVikpKSkKKworI2RlZmluZSBORVRQRVJGX1JFQ1ZfT05MWSh4KSAoKHggJiBORVRQRVJGX1JFQ1YpICYmICEoeCAmIE5FVFBFUkZfWE1JVCkpCisKKyNkZWZpbmUgTkVUUEVSRl9YTUlUX09OTFkoeCkgKCh4ICYgTkVUUEVSRl9YTUlUKSAmJiAhKHggJiBORVRQRVJGX1JFQ1YpKQorCisjZGVmaW5lIE5FVFBFUkZfQ0MoeCkgKCEoeCAmIE5FVFBFUkZfWE1JVCkgJiYgISh4ICYgTkVUUEVSRl9SRUNWKSkKKworCisvKiBtaXNjIGRlZmluZXMgZm9yIHRoZSBoZWxsIG9mIGl0CQkJCQkqLworI2lmbmRlZiBNQVhMT05HCisjZGVmaW5lIAlNQVhMT05HICAJNDI5NDk2NzI5NVVMCisjZW5kaWYgLyogTUFYTE9ORyAqLworCisjaWZkZWYgV0FOVF9EQ0NQCisKKy8qIGluY2x1ZGUgbmV0aW5ldC9pbi5oIHRvIHNlZSBpZiBTT0NLX0RDQ1AgYW5kIElQUFJPVE9fRENDUCBhcmUgdGhlcmUgKi8KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisKKyNpZm5kZWYgU09DS19EQ0NQCisjZGVmaW5lIERDQ1BfV0FSTklORworI2RlZmluZSBTT0NLX0RDQ1AgNgorI2VuZGlmCisKKyNpZm5kZWYgSVBQUk9UT19EQ0NQCisjZGVmaW5lIERDQ1BfV0FSTklORworI2RlZmluZSBJUFBST1RPX0RDQ1AgMzMgIC8qIGRlZmluZWQgYnkgdGhlIElBTkEgKi8KKyNlbmRpZgorCisjaWZuZGVmIFNPTF9EQ0NQCisjZGVmaW5lIERDQ1BfV0FSTklORworI2RlZmluZSBTT0xfRENDUCAyNjkKKyNlbmRpZgorCisjaWZkZWYgRENDUF9XQVJOSU5HCisjd2FybmluZyBUaGlzIHBsYXRmb3JtIGlzIG1pc3Npbmcgb25lIG9mIHNvY2tfZGNjcCBpcHByb3RvX2RjY3Agb3Igc29sX2RjY3AKKyNlbmRpZgorCisjZW5kaWYKKworI2lmbmRlZiBORVRTSAorZXh0ZXJuIGNoYXIJCSpwcm9ncmFtOyAvKiBwcm9ncmFtIGludm9jYXRpb24gbmFtZQkJKi8KK2V4dGVybiBjaGFyICAgICAgICAgICAgICpjb21tYW5kX2xpbmU7ICAvKiBob3cgd2Ugd2VyZSBpbnZva2VkICAgICAgICAgICovCisKK2V4dGVybiBjaGFyICAqcGFzc3BocmFzZTsKKworLyogc3R1ZmYgdG8gc2F5IHdoZXJlIHRoaXMgdGVzdCBpcyBnb2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK2V4dGVybiBjaGFyCWhvc3RfbmFtZVtIT1NUTkFNRVNJWkVdOy8qIHJlbW90ZSBob3N0IG5hbWUgb3IgaXAgYWRkciAgKi8KK2V4dGVybiBjaGFyICAgICBsb2NhbF9ob3N0X25hbWVbSE9TVE5BTUVTSVpFXTsKK2V4dGVybiBjaGFyCXRlc3RfcG9ydFtQT1JUQlVGU0laRV07IC8qIHdoZXJlIGlzIHRoZSB0ZXN0IHdhaXRpbmcgICAgKi8KK2V4dGVybiBjaGFyICAgICBsb2NhbF90ZXN0X3BvcnRbUE9SVEJVRlNJWkVdOworZXh0ZXJuIGludCAgICAgIGFkZHJlc3NfZmFtaWx5OworZXh0ZXJuIGludCAgICAgIGxvY2FsX2FkZHJlc3NfZmFtaWx5OworZXh0ZXJuIGludCAgICAgIHBhcnNlX2FkZHJlc3NfZmFtaWx5KGNoYXIgZmFtaWx5X3N0cmluZ1tdKTsKK2V4dGVybiBpbnQgICAgICBwYXJzZV9zb2NrZXRfdHlwZShjaGFyIHNvY2tldF9zdHJpbmdbXSk7CitleHRlcm4gaW50ICAgICAgcGFyc2VfcHJvdG9jb2woY2hhciBwcm90b2NvbF9zdHJpbmdbXSk7CitleHRlcm4gaW50ICAgICAgcGFyc2VfZGlyZWN0aW9uKGNoYXIgZGlyZWN0aW9uX3N0cmluZ1tdKTsKK2V4dGVybiB2b2lkICAgICBzZXRfZGVmYXVsdHMoKTsKK2V4dGVybiB2b2lkICAgICBzY2FuX2NtZF9saW5lKGludCBhcmdjLCBjaGFyICphcmd2W10pOworZXh0ZXJuIHZvaWQgICAgIGR1bXBfZ2xvYmFscygpOworZXh0ZXJuIHZvaWQgICAgIGJyZWFrX2FyZ3MoY2hhciAqcywgY2hhciAqYXJnMSwgY2hhciAqYXJnMik7CitleHRlcm4gdm9pZCAgICAgYnJlYWtfYXJnc19leHBsaWNpdChjaGFyICpzLCBjaGFyICphcmcxLCBjaGFyICphcmcyKTsKK2V4dGVybiB2b2lkICAgICBicmVha19hcmdzX2V4cGxpY2l0X3NlcChjaGFyICpzLCBpbnQgc2VwLCBjaGFyICphcmcxLCBjaGFyICphcmcyKTsKK2V4dGVybiB2b2lkICAgICBwcmludF9uZXRzZXJ2ZXJfdXNhZ2UoKTsKKworLyogb3V0cHV0IGNvbnRyb2xsaW5nIHZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK2V4dGVybiBpbnQKKyAgZGVidWcsCSAgICAvKiBkZWJ1Z2dpbmcgbGV2ZWwgKi8KKyAgcHJpbnRfaGVhZGVycywgICAgLyogZG8vZG9uJ3QgcHJpbnQgdGVzdCBoZWFkZXJzICovCisgIHZlcmJvc2l0eSwJICAgIC8qIHZlcmJvc2l0eSBsZXZlbCAqLworICBrZWVwX2hpc3RvZ3JhbSwgICAvKiBkbyB3ZSBrZWVwIGEgaGlzdG9ncmFtIG9mIGludGVyZXN0aW5nIHRpbWVzPyAqLworICBrZWVwX3N0YXRpc3RpY3M7ICAvKiBkbyB3ZSBrZWVwL2NhbGN1bGF0ZSBleHBlbnNpdmUgc3RhdGlzdGljcz8gKi8KKworLyogdGhlIGVuZC10ZXN0IGNvbmRpdGlvbnMgZm9yIHRoZSB0ZXN0cyAtIGVpdGhlciB0cmFuc2FjdGlvbnMsIGJ5dGVzLCAgKi8KKy8qIG9yIHRpbWUuIGRpZmZlcmVudCB2YXJzIHVzZWQgZm9yIGNsYXJpdHkgLSBzcGFjZSBpcyBjaGVhcCA7LSkgICAgICAgICovCitleHRlcm4gaW50CisgIHRlc3RfdGltZSwJCS8qIHRlc3QgZW5kcyBieSB0aW1lCQkJKi8KKyAgdGVzdF9sZW5fdGlja3MsCisgIHRlc3RfYnl0ZXMsCQkvKiB0ZXN0IGVuZHMgb24gYnl0ZSBjb3VudAkJKi8KKyAgdGVzdF90cmFuczsJCS8qIHRlc3QgZW5kcyBvbiB0cmFuIGNvdW50CQkqLworCisvKiB3YWl0IHRpbWUgYmV0d2VlbiBjb250cm9sL2RhdGEgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCBzdGFydAorICAgb2YgZGF0YSB0cmFmZmljICAqLworZXh0ZXJuIGludCB3YWl0X3RpbWVfc2VjczsKKworLyogdGhlIGFsaWdubWVudCBjb25kaXRpb25zIGZvciB0aGUgdGVzdHMJCQkJKi8KK2V4dGVybiBpbnQKKyAgbG9jYWxfcmVjdl9hbGlnbiwJLyogYWxpZ25tZW50IGZvciBsb2NhbCByZWNlaXZlcwkJKi8KKyAgbG9jYWxfc2VuZF9hbGlnbiwJLyogYWxpZ25tZW50IGZvciBsb2NhbCBzZW5kcwkJKi8KKyAgcmVtb3RlX3JlY3ZfYWxpZ24sCS8qIGFsaWdubWVudCBmb3IgcmVtb3RlIHJlY2VpdmVzCSovCisgIHJlbW90ZV9zZW5kX2FsaWduLAkvKiBhbGlnbm1lbnQgZm9yIHJlbW90ZSBzZW5kcwkJKi8KKyAgbG9jYWxfc2VuZF9vZmZzZXQsCisgIGxvY2FsX3JlY3Zfb2Zmc2V0LAorICByZW1vdGVfc2VuZF9vZmZzZXQsCisgIHJlbW90ZV9yZWN2X29mZnNldCwKKyAgcmVtb3RlX3NlbmRfd2lkdGgsCisgIHJlbW90ZV9yZWN2X3dpZHRoOworCisvKiBob2lzdCB0aGVzZSBhYm92ZSB0aGUgI2lmIHRvIGRlYWwgd2l0aCBlaXRoZXIgbmV0cGVyZiBvciBuZXRzZXJ2ZXIKKyAgIGNvbmZpZ3VyZWQgZm9yIGl0ICovCisKK2V4dGVybglpbnQgICAgICAgICAgaW50ZXJ2YWxfdXNlY3M7CitleHRlcm4gIGludCAgICAgICAgICBpbnRlcnZhbF93YXRlOworZXh0ZXJuCWludAkgICAgIGludGVydmFsX2J1cnN0OworZXh0ZXJuICBpbnQgICAgICAgICAgcmVtb3RlX2ludGVydmFsX3VzZWNzOworZXh0ZXJuICBpbnQgICAgICAgICAgcmVtb3RlX2ludGVydmFsX2J1cnN0OworCisKKyNpZmRlZiBESVJUWQorZXh0ZXJuIGludAlyZW1fZGlydHlfY291bnQ7CitleHRlcm4gaW50CXJlbV9jbGVhbl9jb3VudDsKK2V4dGVybiBpbnQJbG9jX2RpcnR5X2NvdW50OworZXh0ZXJuIGludAlsb2NfY2xlYW5fY291bnQ7CisjZW5kaWYgLyogRElSVFkgKi8KKworLyogc3R1ZmYgZm9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzICovCisKK2V4dGVybiBpbnQgIGNvbmZpZGVuY2VfbGV2ZWw7CitleHRlcm4gaW50ICBpdGVyYXRpb25fbWluOworZXh0ZXJuIGludCAgaXRlcmF0aW9uX21heDsKK2V4dGVybiBpbnQgIHJlc3VsdF9jb25maWRlbmNlX29ubHk7CitleHRlcm4gZG91YmxlIGludGVydmFsOworZXh0ZXJuIGRvdWJsZSBpbnRlcnZhbF9wY3Q7CisKK2V4dGVybiBpbnQgY3B1X2JpbmRpbmdfcmVxdWVzdGVkOworCisvKiBzdHVmZiB0byBjb250cm9sIHRoZSBidWZmZXJzcGFjZSAid2lkdGgiICovCitleHRlcm4gaW50CXNlbmRfd2lkdGg7CitleHRlcm4gaW50ICAgICAgcmVjdl93aWR0aDsKKworLyogY29udHJvbCB0aGUgc29ja2V0IHByaW9yaXR5ICovCitleHRlcm4gaW50IGxvY2FsX3NvY2tldF9wcmlvOworZXh0ZXJuIGludCByZW1vdGVfc29ja2V0X3ByaW87CisKK2V4dGVybiBpbnQgbG9jYWxfc29ja2V0X3RvczsKK2V4dGVybiBpbnQgcmVtb3RlX3NvY2tldF90b3M7CisKKy8qIGFkZHJlc3MgZmFtaWx5ICovCitleHRlcm4gaW50CWFmOworCisvKiBkaWZmZXJlbnQgb3B0aW9ucyBmb3Igb3RoZXIgdGhpbmdzICovCitleHRlcm4gaW50CisgIGxvY2FsX2NwdV91c2FnZSwKKyAgcmVtb3RlX2NwdV91c2FnZTsKKworZXh0ZXJuIGZsb2F0CisgIGxvY2FsX2NwdV9yYXRlLAorICByZW1vdGVfY3B1X3JhdGU7CisKK2V4dGVybiBpbnQKKyAgc2hlbGxfbnVtX2NwdXM7CisKK2V4dGVybgljaGFyCisgIHRlc3RfbmFtZVtCVUZTSVpdOworCitleHRlcm4gY2hhcgorICBsb2NhbF9maWxsX2ZpbGVbQlVGU0laXSwKKyAgcmVtb3RlX2ZpbGxfZmlsZVszMl07CisKK2V4dGVybiBjaGFyICoKKyAgcmVzdWx0X2JyYW5kOworCitleHRlcm4gaW50CisgIG5vX2NvbnRyb2w7CisKKyNpZmRlZiBXQU5UX0RMUEkKKworZXh0ZXJuIGludAorICBsb2NfcHBhLAorICByZW1fcHBhOworCitleHRlcm4gaW50CisgIGRscGlfc2FwOworCisjZW5kaWYgLyogV0FOVF9ETFBJICovCisKKyNlbmRpZgorCitleHRlcm4gaW50IHBhcnNlX2lwcW9zKGNvbnN0IGNoYXIgKmNwKTsKK2V4dGVybiBjb25zdCBjaGFyICogaXB0b3Myc3RyKGludCBpcHRvcyk7CisKZGlmZiAtLWdpdCBhL25ldHRlc3RfYnNkLmMgYi9zcmMvbmV0dGVzdF9ic2QuYwpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBuZXR0ZXN0X2JzZC5jCnJlbmFtZSB0byBzcmMvbmV0dGVzdF9ic2QuYwppbmRleCBlNzI2ZDMwLi5iNjA1MzI1IDEwMDY0NAotLS0gYS9uZXR0ZXN0X2JzZC5jCisrKyBiL3NyYy9uZXR0ZXN0X2JzZC5jCkBAIC0xLDYgKzEsNiBAQAogI2lmbmRlZiBsaW50CiBjaGFyCW5ldHRlc3RfaWRbXT0iXAotQCgjKW5ldHRlc3RfYnNkLmMgKGMpIENvcHlyaWdodCAxOTkzLTIwMDQgSGV3bGV0dC1QYWNrYXJkIENvLiBWZXJzaW9uIDIuNC4zIjsKK0AoIyluZXR0ZXN0X2JzZC5jIChjKSBDb3B5cmlnaHQgMTk5My0yMDEyIEhld2xldHQtUGFja2FyZCBDby4gVmVyc2lvbiAyLjYuMCI7CiAjZW5kaWYgLyogbGludCAqLwogCiAKQEAgLTI2LDYgKzI2LDcgQEAKIC8qICAgICAgcmVjdl90Y3BfY29ubl9ycigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICBzZW5kX3RjcF9jYygpICAgICAgICAgICBhIGNvbm5lY3QvZGlzY29ubmVjdCB0ZXN0IHdpdGggICovCiAvKiAgICAgIHJlY3ZfdGNwX2NjKCkgICAgICAgICAgIG5vIFJSICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgc2VuZF90Y3BfbXNzKCkgICAgICAgICAganVzdCByZXBvcnQgdGhlIG1zcyAgICAgICAgICAgICAqLwogLyoJc2VuZF91ZHBfc3RyZWFtKCkJcGVyZm9ybSBhIHVkcCBzdHJlYW0gdGVzdAkqLwogLyoJcmVjdl91ZHBfc3RyZWFtKCkJCQkJCSovCiAvKglzZW5kX3VkcF9ycigpCQlwZXJmb3JtIGEgdWRwIHJlcXVlc3QvcmVzcG9uc2UJKi8KQEAgLTk1LDIwICs5NiwyNiBAQAogI2luY2x1ZGUgPG1hbGxvYy5oPgogI2VuZGlmIC8qIE5PU1RETElCSCAqLwogCisKICNpZm5kZWYgV0lOMzIKICNpZiAhZGVmaW5lZChfX1ZNUykKICNpbmNsdWRlIDxzeXMvaXBjLmg+Ci0jZW5kaWYgLyogIWRlZmluZWQoX19WTVMpICovCisjZW5kaWYgLyogIV9fVk1TICovCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorCisjaWZkZWYgSEFWRV9ORVRJTkVUX1NDVFBfSAorI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgogI2Vsc2UgLyogV0lOMzIgKi8KICNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjZGVmaW5lIG5ldHBlcmZfc29ja2xlbl90IHNvY2tsZW5fdAogI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0KKyNpbmNsdWRlICJtaXNzaW5nXHN0ZGludC5oIgogLyogd2hpbGUgaXQgaXMgdW5saWtlbHkgdGhhdCBhbnlvbmUgcnVubmluZyBXaW5kb3dzIDIwMDAgb3IgTlQgNCBpcwogICAgZ29pbmcgdG8gYmUgdHJ5aW5nIHRvIGNvbXBpbGUgdGhpcywgaWYgdGhleSBhcmUgdGhleSB3aWxsIHdhbnQgdG8KICAgIGRlZmluZSBET05UX0lQVjYgaW4gdGhlIHNvdXJjZXMgZmlsZSAqLwpAQCAtMTM4LDE4ICsxNDUsMjUgQEAKICNpbmNsdWRlICJuZXRzaC5oIgogI2luY2x1ZGUgIm5ldHRlc3RfYnNkLmgiCiAKLSNpZiBkZWZpbmVkKFdBTlRfSElTVE9HUkFNKSB8fCBkZWZpbmVkKFdBTlRfREVNTykgCisjaWYgZGVmaW5lZChXQU5UX0hJU1RPR1JBTSkgfHwgZGVmaW5lZChXQU5UX0RFTU8pCiAjaW5jbHVkZSAiaGlzdC5oIgogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKKwogLyogbWFrZSBmaXJzdF9idXJzdF9zaXplIHVuY29uZGl0aW9uYWwgc28gd2UgY2FuIHVzZSBpdCBlYXNpbHkgZW5vdWdoCiAgICB3aGVuIGNhbGN1bGF0aW5nIHRyYW5zYWN0aW9uIGxhdGVuY3kgZm9yIHRoZSBUQ1BfUlIgdGVzdC4gcmFqCi0gICAyMDA3LTA2LTA4ICovCisgICAyMDA3LTA2LTA4IGhvd2V2ZXIsIGNoYW5nZSBpdHMgZGVmYXVsdCB2YWx1ZSBzbyBvbmUgY2FuIHRlbGwgaW4KKyAgICJvbW5pIiBvdXRwdXQgd2hldGhlciBvciBub3QgV0FOVF9CVVJTVCB3YXMgZW5hYmxlZC4gcmFqCisgICAyMDA4LTAxLTI4ICovCisjaWYgZGVmaW5lZChXQU5UX0ZJUlNUX0JVUlNUKQogaW50IGZpcnN0X2J1cnN0X3NpemU9MDsKKyNlbHNlCitpbnQgZmlyc3RfYnVyc3Rfc2l6ZT0tMTsKKyNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX1NFTkRGSUxFKSAmJiAoZGVmaW5lZChfX2xpbnV4KSB8fCBkZWZpbmVkKF9fc3VuX18pKQorI2lmIGRlZmluZWQoSEFWRV9TRU5ERklMRSkgJiYgKGRlZmluZWQoX19saW51eCkgfHwgZGVmaW5lZChfX3N1bikpCiAjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+Ci0jZW5kaWYgLyogSEFWRV9TRU5ERklMRSAmJiAoX19saW51eCB8fCBfX3N1bl9fKSAqLworI2VuZGlmIC8qIEhBVkVfU0VOREZJTEUgJiYgKF9fbGludXggfHwgX19zdW4pICovCiAKIAwKIApAQCAtMTU3LDE5ICsxNzEsMjUgQEAKICAqIGJlIHVzZWQgZWxzZXdoZXJlIGlmIG5lZWRlZC4gIFRoZXkgYXJlIGV4dGVybmVkIHRocm91Z2ggbmV0dGVzdF9ic2QuaAogICovCiAKLWludAkKK2ludAorICBzb2NrZXRfdHlwZSwgICAgICAgICAgLyogdXNlZCBpbml0aWFsbHkgYnkgdGhlICJvbW5pIiB0ZXN0cyAqLwogICByc3Nfc2l6ZV9yZXEgPSAtMSwJLyogcmVxdWVzdGVkIHJlbW90ZSBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZSAqLwogICByc3Jfc2l6ZV9yZXEgPSAtMSwJLyogcmVxdWVzdGVkIHJlbW90ZSBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZSAqLwotICByc3Nfc2l6ZSwJCS8qIHJlbW90ZSBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZQkqLwotICByc3Jfc2l6ZSwJCS8qIHJlbW90ZSBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZQkqLworICByc3Nfc2l6ZSwJCS8qIGluaXRpYWwgcmVtb3RlIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplICovCisgIHJzcl9zaXplLAkJLyogaW5pdGlhbCByZW1vdGUgc29ja2V0IHJlY3YgYnVmZmVyIHNpemUgKi8KKyAgcnNzX3NpemVfZW5kID0gLTEsICAgIC8qIGZpbmFsICByZW1vdGUgc29ja2V0IHNlbmQgYnVmZmVyIHNpemUgKi8KKyAgcnNyX3NpemVfZW5kID0gLTEsICAgIC8qIGZpbmFsICByZW1vdGUgc29ja2V0IHJlY3YgYnVmZmVyIHNpemUgKi8KICAgbHNzX3NpemVfcmVxID0gLTEsCS8qIHJlcXVlc3RlZCBsb2NhbCBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZSAqLwogICBsc3Jfc2l6ZV9yZXEgPSAtMSwJLyogcmVxdWVzdGVkIGxvY2FsIHNvY2tldCByZWN2IGJ1ZmZlciBzaXplICovCiAgIGxzc19zaXplLAkJLyogbG9jYWwgIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplIAkqLwogICBsc3Jfc2l6ZSwJCS8qIGxvY2FsICBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZSAJKi8KKyAgbHNzX3NpemVfZW5kID0gLTEsICAgIC8qIGZpbmFsIGxvY2FsICBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZSAqLworICBsc3Jfc2l6ZV9lbmQgPSAtMSwgICAgLyogZmluYWwgbG9jYWwgIHNvY2tldCByZWN2IGJ1ZmZlciBzaXplICovCiAgIHJlcV9zaXplID0gMSwJCS8qIHJlcXVlc3Qgc2l6ZSAgICAgICAgICAgICAgICAgICAJKi8KICAgcnNwX3NpemUgPSAxLAkJLyogcmVzcG9uc2Ugc2l6ZQkJCSovCiAgIHNlbmRfc2l6ZSwJCS8qIGhvdyBiaWcgYXJlIGluZGl2aWR1YWwgc2VuZHMJCSovCi0gIHJlY3Zfc2l6ZTsJCS8qIGhvdyBiaWcgYXJlIGluZGl2aWR1YWwgcmVjZWl2ZXMJKi8KKyAgcmVjdl9zaXplLAkJLyogaG93IGJpZyBhcmUgaW5kaXZpZHVhbCByZWNlaXZlcwkqLworICB0cmFuc3BvcnRfbXNzX3JlcSA9IC0xOyAvKiB3aGF0IG1heGltdW0gc2VnbWVudCBzaXplIGlzIHdhbnRlZCAqLwogCiBzdGF0aWMgIGludCBjb25maWRlbmNlX2l0ZXJhdGlvbjsKIHN0YXRpYyAgY2hhciAgbG9jYWxfY3B1X21ldGhvZDsKQEAgLTE4OCwxMyArMjA4LDIxIEBACiAjaWZkZWYgVENQX0NPUksKICAgbG9jX3RjcGNvcms9MCwgICAgICAgIC8qIGRvbid0L2RvIHVzZSBUQ1BfQ09SSyBsb2NhbGx5ICAgICAgICAqLwogICByZW1fdGNwY29yaz0wLCAgICAgICAgLyogZG9uJ3QvZG8gdXNlIFRDUF9DT1JLIHJlbW90ZWx5ICAgICAgICovCisjZWxzZQorICBsb2NfdGNwY29yaz0tMSwKKyAgcmVtX3RjcGNvcms9LTEsCiAjZW5kaWYgLyogVENQX0NPUksgKi8KICAgbG9jX3NuZGF2b2lkLAkJLyogYXZvaWQgc2VuZCBjb3BpZXMgbG9jYWxseQkJKi8KICAgbG9jX3JjdmF2b2lkLAkJLyogYXZvaWQgcmVjdiBjb3BpZXMgbG9jYWxseQkJKi8KICAgcmVtX3NuZGF2b2lkLAkJLyogYXZvaWQgc2VuZCBjb3BpZXMgcmVtb3RlbHkJCSovCiAgIHJlbV9yY3Zhdm9pZCwgCS8qIGF2b2lkIHJlY3ZfY29waWVzIHJlbW90ZWx5CQkqLwogICBsb2NhbF9jb25uZWN0ZWQgPSAwLCAgLyogbG9jYWwgc29ja2V0IHR5cGUsIGNvbm5lY3RlZC9ub24tY29ubmVjdGVkICovCi0gIHJlbW90ZV9jb25uZWN0ZWQgPSAwOyAvKiByZW1vdGUgc29ja2V0IHR5cGUsIGNvbm5lY3RlZC9ub24tY29ubmVjdGVkICovCisgIHJlbW90ZV9jb25uZWN0ZWQgPSAwLCAvKiByZW1vdGUgc29ja2V0IHR5cGUsIGNvbm5lY3RlZC9ub24tY29ubmVjdGVkICovCisgIHJvdXRpbmdfYWxsb3dlZCA9IDE7ICAgIC8qIHNldC9jbGVhciBTT19ET05UUk9VVEUgb24gZGF0YSBzb2NrZXQgKi8KKworaW50IG11bHRpY2FzdF90dGwgPSAtMTsgLyogc2hvdWxkIHdlIHNldCB0aGUgbXVsdGljYXN0IFRUTCB0byBhIHZhbHVlPyAqLworCitpbnQgd2FudF9rZWVwYWxpdmUgPSAwOwogCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICNpZmRlZiBIQVZFX0dFVEhSVElNRQpAQCAtMjE3LDYgKzI0NSwxNyBAQAogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiBpbnQgaW50ZXJ2YWxfY291bnQ7CiAjaWZuZGVmIFdBTlRfU1BJTgorI2lmZGVmIFdJTjMyCisjZGVmaW5lIElOVEVSVkFMU19JTklUKCkgXAorICAgIGlmIChpbnRlcnZhbF9idXJzdCkgeyBcCisgICAgICAvKiB6ZXJvIG1lYW5zIHRoYXQgd2UgbmV2ZXIgcGF1c2UsIHNvIHdlIG5ldmVyIHNob3VsZCBuZWVkIHRoZSBcCisgICAgICAgICBpbnRlcnZhbCB0aW1lci4gd2UgdXNlZCB0byB1c2UgaXQgZm9yIGRlbW8gbW9kZSwgYnV0IHdlIGRlYWwgXAorCSB3aXRoIHRoYXQgd2l0aCBhIHZhcmlhbnQgb24gd2F0Y2hpbmcgdGhlIGNsb2NrIHJhdGhlciB0aGFuIFwKKwkgd2FpdGluZyBmb3IgYSB0aW1lci4gcmFqIDIwMDYtMDItMDYgKi8gXAorICAgICAgc3RhcnRfaXRpbWVyKGludGVydmFsX3dhdGUpOyBcCisgICAgfSBcCisgICAgaW50ZXJ2YWxfY291bnQgPSBpbnRlcnZhbF9idXJzdDsgCisjZWxzZQogc2lnc2V0X3Qgc2lnbmFsX3NldDsKICNkZWZpbmUgSU5URVJWQUxTX0lOSVQoKSBcCiAgICAgaWYgKGludGVydmFsX2J1cnN0KSB7IFwKQEAgLTIzNiw3ICsyNzUsMjcgQEAKICAgICAgIGZmbHVzaCh3aGVyZSk7IFwKICAgICAgIGV4aXQoMSk7IFwKICAgICB9CisjZW5kaWYgLyogV0lOMzIgKi8KIAorI2lmZGVmIFdJTjMyCisjZGVmaW5lIElOVEVSVkFMU19XQUlUKCkgXAorICAgICAgLyogaW4gdGhpcyBjYXNlLCB0aGUgaW50ZXJ2YWwgY291bnQgaXMgdGhlIGNvdW50LWRvd24gY291bnRlciBcCisJIHRvIGRlY2lkZSB0byBzbGVlcCBmb3IgYSBsaXR0bGUgYml0ICovIFwKKyAgICAgIGlmICgoaW50ZXJ2YWxfYnVyc3QpICYmICgtLWludGVydmFsX2NvdW50ID09IDApKSB7IFwKKwkvKiBjYWxsIFdhaXRGb3JTaW5nbGVPYmplY3QgYW5kIHdhaXQgZm9yIHRoZSBpbnRlcnZhbCB0aW1lciB0byBnZXQgdXMgXAorCSAgIG91dCAqLyBcCisJaWYgKGRlYnVnID4gMSkgeyBcCisJICBmcHJpbnRmKHdoZXJlLCJhYm91dCB0byBzdXNwZW5kXG4iKTsgXAorCSAgZmZsdXNoKHdoZXJlKTsgXAorCX0gXAorICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KFdpblRpbWVyLCBJTkZJTklURSkgIT0gV0FJVF9PQkpFQ1RfMCkgeyBcCisgICAgICAgIGZwcmludGYod2hlcmUsICJXYWl0Rm9yU2luZ2xlT2JqZWN0IGZhaWxlZCAoJWQpXG4iLCBHZXRMYXN0RXJyb3IoKSk7IFwKKwkgIGZmbHVzaCh3aGVyZSk7IFwKKwkgIGV4aXQoMSk7IFwKKwl9IFwKKwlpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OyBcCisgICAgICB9CisjZWxzZQogI2RlZmluZSBJTlRFUlZBTFNfV0FJVCgpIFwKICAgICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGludGVydmFsIGNvdW50IGlzIHRoZSBjb3VudC1kb3duIGNvdXRlciBcCiAJIHRvIGRlY2lkZSB0byBzbGVlcCBmb3IgYSBsaXR0bGUgYml0ICovIFwKQEAgLTI1Niw2ICszMTUsNyBAQAogCX0gXAogCWludGVydmFsX2NvdW50ID0gaW50ZXJ2YWxfYnVyc3Q7IFwKICAgICAgIH0KKyNlbmRpZiAvKiBXSU4zMiAqLwogI2Vsc2UKIC8qIGZpcnN0IG91dCB0aW1lc3RhbXAgKi8KICNpZmRlZiBIQVZFX0dFVEhSVElNRQpAQCAtMzA2LDExNCArMzY2LDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZmRlZiBXQU5UX0RFTU8KLSNpZmRlZiBIQVZFX0dFVEhSVElNRQotc3RhdGljIGhydGltZV90IGRlbW9fb25lOwotc3RhdGljIGhydGltZV90IGRlbW9fdHdvOwotc3RhdGljIGhydGltZV90ICpkZW1vX29uZV9wdHIgPSAmZGVtb19vbmU7Ci1zdGF0aWMgaHJ0aW1lX3QgKmRlbW9fdHdvX3B0ciA9ICZkZW1vX3R3bzsKLXN0YXRpYyBocnRpbWVfdCAqdGVtcF9kZW1vX3B0ciA9ICZkZW1vX29uZTsKLSNlbGlmIGRlZmluZWQoV0lOMzIpCi1zdGF0aWMgTEFSR0VfSU5URUdFUiBkZW1vX29uZTsKLXN0YXRpYyBMQVJHRV9JTlRFR0VSIGRlbW9fdHdvOwotc3RhdGljIExBUkdFX0lOVEVHRVIgKmRlbW9fb25lX3B0ciA9ICZkZW1vX29uZTsKLXN0YXRpYyBMQVJHRV9JTlRFR0VSICpkZW1vX3R3b19wdHIgPSAmZGVtb190d287Ci1zdGF0aWMgTEFSR0VfSU5URUdFUiAqdGVtcF9kZW1vX3B0ciA9ICZkZW1vX29uZTsKLSNlbHNlCi1zdGF0aWMgc3RydWN0IHRpbWV2YWwgZGVtb19vbmU7Ci1zdGF0aWMgc3RydWN0IHRpbWV2YWwgZGVtb190d287Ci1zdGF0aWMgc3RydWN0IHRpbWV2YWwgKmRlbW9fb25lX3B0ciA9ICZkZW1vX29uZTsKLXN0YXRpYyBzdHJ1Y3QgdGltZXZhbCAqZGVtb190d29fcHRyID0gJmRlbW9fdHdvOwotc3RhdGljIHN0cnVjdCB0aW1ldmFsICp0ZW1wX2RlbW9fcHRyID0gJmRlbW9fb25lOwotI2VuZGlmIAotCi0vKiBmb3IgYSBfU1RSRUFNIHRlc3QsICJhIiBzaG91bGQgYmUgbHNzX3NpemUgYW5kICJiIiBzaG91bGQgYmUKLSAgIHJzcl9zaXplLiBmb3IgYSBfTUFFUlRTIHRlc3QsICJhIiBzaG91bGQgYmUgbHNyX3NpemUgYW5kICJiIiBzaG91bGQKLSAgIGJlIHJzc19zaXplLiByYWogMjAwNS0wNC0wNiAqLwotI2RlZmluZSBERU1PX1NUUkVBTV9TRVRVUChhLGIpIFwKLSAgICBpZiAoKGRlbW9fbW9kZSkgJiYgKGRlbW9fdW5pdHMgPT0gMCkpIHsgXAotICAgICAgLyogdGFrZSBvdXIgZGVmYXVsdCB2YWx1ZSBvZiBkZW1vX3VuaXRzIHRvIGJlIHRoZSBsYXJnZXIgb2YgXAotCSB0d2ljZSB0aGUgcmVtb3RlJ3MgU09fUkNWQlVGIG9yIHR3aWNlIG91ciBTT19TTkRCVUYgKi8gXAotICAgICAgaWYgKGEgPiBiKSB7IFwKLQlkZW1vX3VuaXRzID0gMiphOyBcCi0gICAgICB9IFwKLSAgICAgIGVsc2UgeyBcCi0JZGVtb191bml0cyA9IDIqYjsgXAotICAgICAgfSBcCi0gICAgfQotCi0jZGVmaW5lIERFTU9fU1RSRUFNX0lOVEVSVkFMKHVuaXRzKSBcCi0gICAgICBpZiAoZGVtb19tb2RlKSB7IFwKLQlkb3VibGUgYWN0dWFsX2ludGVydmFsOyBcCi0JdW5pdHNfdGhpc190aWNrICs9IHVuaXRzOyBcCi0JaWYgKHVuaXRzX3RoaXNfdGljayA+PSBkZW1vX3VuaXRzKSB7IFwKLQkgIC8qIHRpbWUgdG8gcG9zc2libHkgdXBkYXRlIGRlbW9fdW5pdHMgYW5kIG1heWJlIG91dHB1dCBhbiBcCi0JICAgICBpbnRlcmltIHJlc3VsdCAqLyBcCi0JICBISVNUX3RpbWVzdGFtcChkZW1vX3R3b19wdHIpOyBcCi0JICBhY3R1YWxfaW50ZXJ2YWwgPSBkZWx0YV9taWNybyhkZW1vX29uZV9wdHIsZGVtb190d29fcHRyKTsgXAotCSAgLyogd2UgYWx3YXlzIHdhbnQgdG8gZmluZS10dW5lIGRlbW9fdW5pdHMgaGVyZSB3aGV0aGVyIHdlIFwKLQkgICAgIGVtaXQgYW4gaW50ZXJpbSByZXN1bHQgb3Igbm90LiAgaWYgd2UgYXJlIHNob3J0LCB0aGlzIFwKLQkgICAgIHdpbGwgbGVuZ3RoZW4gZGVtb191bml0cy4gIGlmIHdlIGFyZSBsb25nLCB0aGlzIHdpbGwgXAotCSAgICAgc2hvcnRlbiBpdCAqLyBcCi0JICBkZW1vX3VuaXRzID0gZGVtb191bml0cyAqIChkZW1vX2ludGVydmFsIC8gYWN0dWFsX2ludGVydmFsKTsgXAotCSAgaWYgKGFjdHVhbF9pbnRlcnZhbCA+PSBkZW1vX2ludGVydmFsKSB7IFwKLQkgICAgLyogdGltZSB0byBlbWl0IGFuIGludGVyaW0gcmVzdWx0ICovIFwKLQkgICAgZnByaW50Zih3aGVyZSwgXAotCQkgICAgIkludGVyaW0gcmVzdWx0OiAlNy4yZiAlcy9zIG92ZXIgJS4yZiBzZWNvbmRzXG4iLCBcCi0JCSAgICBjYWxjX3RocnVwdXRfaW50ZXJ2YWwodW5pdHNfdGhpc190aWNrLCBcCi0JCQkJCSAgYWN0dWFsX2ludGVydmFsLzEwMDAwMDAuMCksIFwKLQkJICAgIGZvcm1hdF91bml0cygpLCBcCi0JCSAgICBhY3R1YWxfaW50ZXJ2YWwvMTAwMDAwMC4wKTsgXAotICAgICAgICAgICAgZmZsdXNoKHdoZXJlKTsgXAotCSAgICB1bml0c190aGlzX3RpY2sgPSAwLjA7IFwKLQkgICAgLyogbm93IGdldCBhIG5ldyBzdGFydGluZyB0aW1lc3RhbXAuICB3ZSBjb3VsZCBiZSBjbGV2ZXIgXAotCSAgICAgICBhbmQgc3dhcCBwb2ludGVycyAtIHRoZSBtYXRoIHdlIGRvIHByb2JhYmx5IGRvZXMgbm90IFwKLQkgICAgICAgdGFrZSBhbGwgdGhhdCBsb25nLCBidXQgZm9yIG5vdyB0aGlzIHdpbGwgc3VmZmljZSAqLyBcCi0JICAgIHRlbXBfZGVtb19wdHIgPSBkZW1vX29uZV9wdHI7IFwKLQkgICAgZGVtb19vbmVfcHRyID0gZGVtb190d29fcHRyOyBcCi0JICAgIGRlbW9fdHdvX3B0ciA9IHRlbXBfZGVtb19wdHI7IFwKLQkgIH0gXAotCX0gXAotICAgICAgfQotCi0jZGVmaW5lIERFTU9fUlJfU0VUVVAoYSkgXAotICAgIGlmICgoZGVtb19tb2RlKSAmJiAoZGVtb191bml0cyA9PSAwKSkgeyBcCi0gICAgICAvKiB0YWtlIHdoYXRldmVyIHdlIGFyZSBnaXZlbiAqLyBcCi0JZGVtb191bml0cyA9IGE7IFwKLSAgICB9Ci0KLSNkZWZpbmUgREVNT19SUl9JTlRFUlZBTCh1bml0cykgXAotICAgICAgaWYgKGRlbW9fbW9kZSkgeyBcCi0JZG91YmxlIGFjdHVhbF9pbnRlcnZhbDsgXAotCXVuaXRzX3RoaXNfdGljayArPSB1bml0czsgXAotCWlmICh1bml0c190aGlzX3RpY2sgPj0gZGVtb191bml0cykgeyBcCi0JICAvKiB0aW1lIHRvIHBvc3NpYmx5IHVwZGF0ZSBkZW1vX3VuaXRzIGFuZCBtYXliZSBvdXRwdXQgYW4gXAotCSAgICAgaW50ZXJpbSByZXN1bHQgKi8gXAotCSAgSElTVF90aW1lc3RhbXAoZGVtb190d29fcHRyKTsgXAotCSAgYWN0dWFsX2ludGVydmFsID0gZGVsdGFfbWljcm8oZGVtb19vbmVfcHRyLGRlbW9fdHdvX3B0cik7IFwKLQkgIC8qIHdlIGFsd2F5cyB3YW50IHRvIGZpbmUtdHVuZSBkZW1vX3VuaXRzIGhlcmUgd2hldGhlciB3ZSBcCi0JICAgICBlbWl0IGFuIGludGVyaW0gcmVzdWx0IG9yIG5vdC4gIGlmIHdlIGFyZSBzaG9ydCwgdGhpcyBcCi0JICAgICB3aWxsIGxlbmd0aGVuIGRlbW9fdW5pdHMuICBpZiB3ZSBhcmUgbG9uZywgdGhpcyB3aWxsIFwKLQkgICAgIHNob3J0ZW4gaXQgKi8gXAotCSAgZGVtb191bml0cyA9IGRlbW9fdW5pdHMgKiAoZGVtb19pbnRlcnZhbCAvIGFjdHVhbF9pbnRlcnZhbCk7IFwKLQkgIGlmIChhY3R1YWxfaW50ZXJ2YWwgPj0gZGVtb19pbnRlcnZhbCkgeyBcCi0JICAgIC8qIHRpbWUgdG8gZW1pdCBhbiBpbnRlcmltIHJlc3VsdCAqLyBcCi0JICAgIGZwcmludGYod2hlcmUsIFwKLQkJICAgICJJbnRlcmltIHJlc3VsdDogJS4yZiAlcy9zIG92ZXIgJS4yZiBzZWNvbmRzXG4iLCBcCi0gICAgICAgICAgICAgICAgICAgIHVuaXRzX3RoaXNfdGljayAvIChhY3R1YWxfaW50ZXJ2YWwvMTAwMDAwMC4wKSwgXAotCQkgICAgIlRyYW5zIiwgXAotCQkgICAgYWN0dWFsX2ludGVydmFsLzEwMDAwMDAuMCk7IFwKLQkgICAgdW5pdHNfdGhpc190aWNrID0gMC4wOyBcCi0JICAgIC8qIG5vdyBnZXQgYSBuZXcgc3RhcnRpbmcgdGltZXN0YW1wLiAgd2UgY291bGQgYmUgY2xldmVyIFwKLQkgICAgICAgYW5kIHN3YXAgcG9pbnRlcnMgLSB0aGUgbWF0aCB3ZSBkbyBwcm9iYWJseSBkb2VzIG5vdCBcCi0JICAgICAgIHRha2UgYWxsIHRoYXQgbG9uZywgYnV0IGZvciBub3cgdGhpcyB3aWxsIHN1ZmZpY2UgKi8gXAotCSAgICB0ZW1wX2RlbW9fcHRyID0gZGVtb19vbmVfcHRyOyBcCi0JICAgIGRlbW9fb25lX3B0ciA9IGRlbW9fdHdvX3B0cjsgXAotCSAgICBkZW1vX3R3b19wdHIgPSB0ZW1wX2RlbW9fcHRyOyBcCi0JICB9IFwKLQl9IFwKLSAgICAgIH0KLSNlbmRpZiAKIAogY2hhciBzb2NrZXRzX3VzYWdlW10gPSAiXG5cCiBVc2FnZTogbmV0cGVyZiBbZ2xvYmFsIG9wdGlvbnNdIC0tIFt0ZXN0IG9wdGlvbnNdIFxuXApAQCAtNDQyLDcgKzM5NCw3IEBACiB2YWx1ZSwgc3BlY2lmeWluZyBhIHZhbHVlIHdpdGggYSBsZWFkaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIHNlY29uZFxuXAogcGFybSwgYSB2YWx1ZSB3aXRoIGEgdHJhaWxpbmcgY29tbWEgd2lsbCBzZXQganVzdCB0aGUgZmlyc3QuIFRvIHNldFxuXAogZWFjaCBwYXJtIHRvIHVuaXF1ZSB2YWx1ZXMsIHNwZWNpZnkgYm90aCBhbmQgc2VwYXJhdGUgdGhlbSB3aXRoIGFcblwKLWNvbW1hLlxuIjsgCitjb21tYS5cbiI7CiAKIAwKIApAQCAtNDU1LDIwICs0MDcsMjIgQEAKICAgc3dpdGNoKG5mKSB7CiAgIGNhc2UgTkZfSU5FVDoKICAgICByZXR1cm4gQUZfSU5FVDsKLSAgICBicmVhazsKICAgY2FzZSBORl9VTlNQRUM6CiAgICAgcmV0dXJuIEFGX1VOU1BFQzsKLSAgICBicmVhazsKICAgY2FzZSBORl9JTkVUNjoKICNpZiBkZWZpbmVkKEFGX0lORVQ2KQogICAgIHJldHVybiBBRl9JTkVUNjsKICNlbHNlCiAgICAgcmV0dXJuIEFGX1VOU1BFQzsKICNlbmRpZgotICAgIGJyZWFrOworICBjYXNlIE5GX1JEUzoKKyNpZiBkZWZpbmVkKEFGX1JEUykKKyAgICByZXR1cm4gQUZfUkRTOworI2Vsc2UKKyAgICByZXR1cm4gQUZfVU5TUEVDOworI2VuZGlmCiAgIGRlZmF1bHQ6CiAgICAgcmV0dXJuIEFGX1VOU1BFQzsKLSAgICBicmVhazsKICAgfQogfQogCkBAIC00NzgsMjAgKzQzMiwxNDIgQEAKICAgc3dpdGNoKGFmKSB7CiAgIGNhc2UgQUZfSU5FVDoKICAgICByZXR1cm4gTkZfSU5FVDsKLSAgICBicmVhazsKICAgY2FzZSBBRl9VTlNQRUM6CiAgICAgcmV0dXJuIE5GX1VOU1BFQzsKLSAgICBicmVhazsKICNpZiBkZWZpbmVkKEFGX0lORVQ2KQogICBjYXNlIEFGX0lORVQ2OgogICAgIHJldHVybiBORl9JTkVUNjsKLSAgICBicmVhazsKKyNlbmRpZgorI2lmIGRlZmluZWQoQUZfUkRTKQorICBjYXNlIEFGX1JEUzoKKyAgICByZXR1cm4gTkZfUkRTOwogI2VuZGlmCiAgIGRlZmF1bHQ6CiAgICAgcmV0dXJuIE5GX1VOU1BFQzsKLSAgICBicmVhazsKICAgfQotfSAgICAgCit9CisKKwwKKy8qIHRoZXNlIHJvdXRpbmVzIHdpbGwgY29udmVydCBiZXR3ZWVuIHRoZSBob3N0cycgc29ja2V0IHR5cGVzIGFuZAorICAgdGhvc2UgbmV0cGVyZiB1c2VzLiAgd2UgbmVlZCB0aGlzIGJlY2F1c2UgZGlmZmVyZW50IHBsYXRmb3JtcyBjYW4KKyAgIGhhdmUgZGlmZmVyZW50IHZhbHVlcyBmb3IgU09DS19TVFJFQU0sIFNPQ0tfREdSQU0gYW5kIHRoZQorICAgbGlrZS4uLiAqLworCitpbnQKK25zdF90b19oc3QoaW50IG5zdCkgeworICBzd2l0Y2gobnN0KSB7CisjaWZkZWYgU09DS19TVFJFQU0KKyAgY2FzZSBOU1RfU1RSRUFNOgorICAgIHJldHVybiBTT0NLX1NUUkVBTTsKKyAgICBicmVhazsgIC8qIG9rLCB0aGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5IDopICovCisjZW5kaWYKKyNpZmRlZiBTT0NLX0RHUkFNCisgIGNhc2UgTlNUX0RHUkFNOgorICAgIHJldHVybiBTT0NLX0RHUkFNOworICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgU09DS19EQ0NQCisgIGNhc2UgTlNUX0RDQ1A6CisgICAgcmV0dXJuIFNPQ0tfRENDUDsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCisgIGNhc2UgTlNUX1NFUVBBQ0tFVDoKKyAgICByZXR1cm4gTlNUX1NFUVBBQ0tFVDsKKyNlbmRpZgorICBkZWZhdWx0OgorICAgIHJldHVybiAtMTsKKyAgfQorfQorCitpbnQKK2hzdF90b19uc3QoaW50IGhzdCkgeworCisgIHN3aXRjaChoc3QpIHsKKyNpZmRlZiBTT0NLX1NUUkVBTQorICBjYXNlIFNPQ0tfU1RSRUFNOgorICAgIHJldHVybiBOU1RfU1RSRUFNOworICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgU09DS19ER1JBTQorICBjYXNlIFNPQ0tfREdSQU06CisgICAgcmV0dXJuIE5TVF9ER1JBTTsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIFNPQ0tfRENDUAorICBjYXNlIFNPQ0tfRENDUDoKKyAgICByZXR1cm4gTlNUX0RDQ1A7CisgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBTT0NLX1NFUVBBQ0tFVAorICBjYXNlIFNPQ0tfU0VRUEFDS0VUOgorICAgIHJldHVybiBOU1RfU0VRUEFDS0VUOworI2VuZGlmCisgIGRlZmF1bHQ6CisgICAgcmV0dXJuIE5TVF9VTktOOworICB9Cit9CitjaGFyICoKK2hzdF90b19zdHIoaW50IGhzdCkgeworCisgIHN3aXRjaChoc3QpIHsKKyNpZmRlZiBTT0NLX1NUUkVBTQorICBjYXNlIFNPQ0tfU1RSRUFNOgorICAgIHJldHVybiAiU3RyZWFtIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIFNPQ0tfREdSQU0KKyAgY2FzZSBTT0NLX0RHUkFNOgorICAgIHJldHVybiAiRGF0YWdyYW0iOworICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgU09DS19EQ0NQCisgIGNhc2UgU09DS19EQ0NQOgorICAgIHJldHVybiAiRENDUCI7CisgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBTT0NLX1NFUVBBQ0tFVAorICBjYXNlIFNPQ0tfU0VRUEFDS0VUOgorICAgIHJldHVybiAiU2VxcGFja2V0IjsKKyNlbmRpZgorICBkZWZhdWx0OgorICAgIHJldHVybiAiVW5rbm93biI7CisgIH0KK30KKworY2hhciAqCitwcm90b2NvbF90b19zdHIoaW50IHByb3RvY29sKSB7CisgIHN3aXRjaChwcm90b2NvbCkgeworICAgIC8qIGFzcy11LW1lIHRoYXQgZXZlcnlvbmUgaGFzIElQUFJPVE9fVENQIGFuZCBJUFBST1RPX1VEUCAqLworICBjYXNlIElQUFJPVE9fVENQOgorICAgIHJldHVybiAiVENQIjsKKyAgY2FzZSBJUFBST1RPX1VEUDoKKyAgICByZXR1cm4gIlVEUCI7CisgICAgLyogYnV0IGRvIG5vdCBhc3N1bWUgdGhhdCBldmVyeW9uZSBoYXMgdGhlIG90aGVycyAqLworI2lmZGVmIElQUFJPVE9fVURQTElURQorICBjYXNlIElQUFJPVE9fVURQTElURToKKyAgICByZXR1cm4gIlVEUExpdGUiOworI2VuZGlmCisjaWZkZWYgSVBQUk9UT19TQ1RQCisgIGNhc2UgSVBQUk9UT19TQ1RQOgorICAgIHJldHVybiAiU0NUUCI7CisjZW5kaWYKKyNpZmRlZiBJUFBST1RPX0RDQ1AKKyAgY2FzZSBJUFBST1RPX0RDQ1A6CisgICAgcmV0dXJuICJEQ0NQIjsKKyNlbmRpZgorI2lmZGVmIElQUFJPVE9fU0RQCisgIGNhc2UgSVBQUk9UT19TRFA6CisgICAgcmV0dXJuICJTRFAiOworI2VuZGlmCisjaWZkZWYgSVBQUk9UT19JUAorICBjYXNlIElQUFJPVE9fSVA6CisgICAgcmV0dXJuICJJUCBEZWZhdWx0IjsKKyNlbmRpZgorICBkZWZhdWx0OgorICAgIHJldHVybiAiVW5rbm93biBQcm90b2NvbCI7CisgIH0KK30KIAogDAogIC8qIFRoaXMgcm91dGluZSBpcyBpbnRlbmRlZCB0byByZXRyaWV2ZSBpbnRlcmVzdGluZyBhc3BlY3RzIG9mIHRjcCAqLwpAQCAtNTA5LDkgKzU4NSw5IEBACiAjaWZkZWYgVENQX01BWFNFRwogICBuZXRwZXJmX3NvY2tsZW5fdCBzb2NrX29wdF9sZW47CiAKLSAgc29ja19vcHRfbGVuID0gc2l6ZW9mKG5ldHBlcmZfc29ja2xlbl90KTsKKyAgc29ja19vcHRfbGVuID0gc2l6ZW9mKGludCk7CiAgIGlmIChnZXRzb2Nrb3B0KHNvY2tldCwKLQkJIGdldHByb3RvYnluYW1lKCJ0Y3AiKS0+cF9wcm90bywJCisJCSBnZXRwcm90b2J5bmFtZSgidGNwIiktPnBfcHJvdG8sCiAJCSBUQ1BfTUFYU0VHLAogCQkgKGNoYXIgKiltc3MsCiAJCSAmc29ja19vcHRfbGVuKSA9PSBTT0NLRVRfRVJST1IpIHsKQEAgLTUyNSw2ICs2MDEsMzcgQEAKICAgKm1zcyA9IC0xOwogI2VuZGlmIC8qIFRDUF9NQVhTRUcgKi8KIH0KKworc3RhdGljCit2b2lkCitzZXRfdGNwX21zcyhTT0NLRVQgc29ja2V0LCBpbnQgbXNzKSB7CisjaWZkZWYgVENQX01BWFNFRworICBuZXRwZXJmX3NvY2tsZW5fdCBzb2NrX29wdF9sZW47CisKKyAgc29ja19vcHRfbGVuID0gc2l6ZW9mKGludCk7CisgIGlmICgoc2V0c29ja29wdChzb2NrZXQsCisJCSAgZ2V0cHJvdG9ieW5hbWUoInRjcCIpLT5wX3Byb3RvLAorCQkgIFRDUF9NQVhTRUcsCisJCSAgKGNvbnN0IGNoYXIgKikmbXNzLAorCQkgIHNvY2tfb3B0X2xlbikgPT0gU09DS0VUX0VSUk9SKSAmJiAoZGVidWcpKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIm5ldHBlcmY6ICVzOiBzZXRzb2Nrb3B0IFRDUF9NQVhTRUc6ICVzIChlcnJubyAlZClcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgc3RyZXJyb3IoZXJybm8pLAorCSAgICBlcnJubyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorI2Vsc2UKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIm5ldHBlcmY6ICVzIHBsYXRmb3JtIGRvZXMgbm90IGtub3cgaG93IHRvIHNldCBUQ1Agc2VnbWVudCBzaXplXG4iLAorCSAgICBfX0ZVTkNUSU9OX18pOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworI2VuZGlmIC8qIFRDUF9NQVhTRUcgKi8KK30KKwogDAogCiAvKiByZXR1cm4gYSBwb2ludGVyIHRvIGEgY29tcGxldGVkIGFkZHJpbmZvIGNoYWluIC0gcHJlZmVyCkBAIC01MzIsNyArNjM5LDcgQEAKICAgIGZhbWlseSAqLwogCiBzdHJ1Y3QgYWRkcmluZm8gKgotY29tcGxldGVfYWRkcmluZm8oY2hhciAqY29udHJvbGhvc3QsIGNoYXIgKmRhdGFfYWRkcmVzcywgY2hhciAqcG9ydCwgaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IGZsYWdzKSAKK2NvbXBsZXRlX2FkZHJpbmZvKGNoYXIgKmNvbnRyb2xob3N0LCBjaGFyICpkYXRhX2FkZHJlc3MsIGNoYXIgKnBvcnQsIGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBmbGFncykKIHsKICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzOwogICBzdHJ1Y3QgYWRkcmluZm8gKnJlczsKQEAgLTU0MSw2ICs2NDgsOSBAQAogI2RlZmluZSBDSEFOR0VEX1NPQ0tfVFlQRSAgMHgxCiAjZGVmaW5lIENIQU5HRURfUFJPVE9DT0wgICAweDIKICNkZWZpbmUgQ0hBTkdFRF9TQ1RQICAgICAgIDB4NAorI2RlZmluZSBDSEFOR0VEX0RDQ1AgICAgICAgMHg4CisjZGVmaW5lIENIQU5HRURfRENDUF9TT0NLICAweDEwCisKICAgaW50ICAgIGNoYW5nZV9pbmZvID0gMDsKICAgc3RhdGljIGludCBjaGFuZ2Vfd2FybmluZ19kaXNwbGF5ZWQgPSAwOwogCkBAIC01NzEsNyArNjgxLDcgQEAKICAgaGludHMuYWlfZmFtaWx5ID0gZmFtaWx5OwogICBoaW50cy5haV9zb2NrdHlwZSA9IHR5cGU7CiAgIGhpbnRzLmFpX3Byb3RvY29sID0gcHJvdG9jb2w7Ci0gIGhpbnRzLmFpX2ZsYWdzID0gZmxhZ3N8QUlfQ0FOT05OQU1FOworICBoaW50cy5haV9mbGFncyA9IGZsYWdzfEFJX0NBTk9OTkFNRXxBSV9BRERSQ09ORklHOwogCiAgIGNvdW50ID0gMDsKICAgZG8gewpAQCAtNTk0LDggKzcwNCwxMSBAQAogICAgICAgIFNPQ0tfU1RSRUFNIGFuZCBJUFBST1RPX1NDVFAgaXQgYmFyZnMgd2l0aCBhIC03CiAgICAgICAgRUFJX1NPQ0tUWVBFLiBzbywgd2UgY2hlY2sgaWYgdGhlIGVycm9yIHdhcyBFQUlfU09DS1RZUEUgYW5kIGlmCiAgICAgICAgd2Ugd2VyZSBhc2tpbmcgZm9yIElQUFJPVE9fU0NUUCBhbmQgaWYgc28sIGtsdWRnZSwgYWdhaW4uLi4gcmFqCi0gICAgICAgMjAwOC0xMC0xMyAqLwotI2lmZGVmIFdBTlRfU0NUUAorICAgICAgIDIwMD8tMTAtMTMgYW5kIG9mIGNvdXJzZSwgcmVxdWlyaW5nIHRoZSBrbHVkZ2UgZm9yIFNDVFAsIGl0IGlzCisgICAgICAgbm8gc3VycHJpc2UgdGhhdCBsaW51eCBuZWVkcyBhIGtsdWRnZSBmb3IgRENDUC4uLmFjdHVhbGx5IG5vdAorICAgICAgIG9ubHkgZG9lcyBpdCBuZWVkIHRoZSBhaV9wcm90b2NvbCBrbHVkZ2UsIGl0IG5lZWRzIGFuCisgICAgICAgYWlfc29ja3R5cGUga2x1ZGdlIHRvby4uLiBzaWdoIHJhaiAyMDA4LTAyLTAxICovCisjaWYgZGVmaW5lZChJUFBST1RPX1NDVFApIHx8IGRlZmluZWQgKElQUFJPVE9fRENDUCkKICAgICBpZiAoRUFJX1NPQ0tUWVBFID09IGVycm9yCiAjaWZkZWYgRUFJX0JBREhJTlRTCiAgICAgICAgIHx8IEVBSV9CQURISU5UUyA9PSBlcnJvcgpAQCAtNjA2LDIyICs3MTksNDUgQEAKIAkgdGhhdCB3ZSBkaWQgdGhpcyBzbyB0aGUgY29kZSBmb3IgdGhlIFNvbGFyaXMga2x1ZGdlIGNhbiBkbwogCSB0aGUgZml4LXVwIGZvciB1cy4gIGFsc28gZmxpcCBlcnJvciBvdmVyIHRvIEVBSV9BR0FJTiBhbmQKIAkgbWFrZSBzdXJlIHdlIGRvbid0ICJjb3VudCIgdGhpcyB0aW1lIGFyb3VuZCB0aGUgbG9vcC4gKi8KLSAgICAgIGhpbnRzLmFpX3Byb3RvY29sID0gMDsKKyNpZiBkZWZpbmVkKElQUFJPVE9fRENDUCkgJiYgZGVmaW5lZChTT0NLX0RDQ1ApCisgICAgICAvKiBvbmx5IHR3ZWFrIG9uIHRoaXMgb25lIHRoZSBzZWNvbmQgdGltZSBhcm91bmQsIGFmdGVyIHdlJ3ZlCisJIGtsdWRnZWQgdGhlIGFpX3Byb3RvY29sIGZpZWxkICovCisgICAgICBpZiAoKGhpbnRzLmFpX3NvY2t0eXBlID09IFNPQ0tfRENDUCkgJiYKKwkgIChoaW50cy5haV9wcm90b2NvbCA9PSAwKSkgeworCWNoYW5nZV9pbmZvIHw9IENIQU5HRURfRENDUF9TT0NLOworCWhpbnRzLmFpX3NvY2t0eXBlID0gMDsKKwkvKiB3ZSBuZWVkIHRvIGdpdmUgaXQgc29tZSBzb3J0IG9mIElQUFJPVE8gb3IgaXQgZ2V0cyB1bmhhcHB5LAorCSAgIHNvIGZvciBub3csIHBpY2sgb25lIGZyb20gZGVlcCB3aXRoaW4gdGhlIGNvbG9uIGFuZCB1c2UKKwkgICBJUFBST1RPX1RDUCAqLworCWhpbnRzLmFpX3Byb3RvY29sID0gSVBQUk9UT19UQ1A7CisgICAgICB9CisKKyAgICAgIGlmIChoaW50cy5haV9wcm90b2NvbCA9PSBJUFBST1RPX0RDQ1ApIHsKKwljaGFuZ2VfaW5mbyB8PSBDSEFOR0VEX0RDQ1A7CisJaGludHMuYWlfcHJvdG9jb2wgPSAwOworICAgICAgfQorCisjZW5kaWYKKyNpZiBkZWZpbmVkKElQUFJPVE9fU0NUUCkKKyAgICAgIGlmIChoaW50cy5haV9wcm90b2NvbCA9PSBJUFBST1RPX1NDVFApIHsKKwljaGFuZ2VfaW5mbyB8PSBDSEFOR0VEX1NDVFA7CisJaGludHMuYWlfcHJvdG9jb2wgPSAwOworICAgICAgfQorI2VuZGlmCisKICAgICAgIGVycm9yID0gRUFJX0FHQUlOOwogICAgICAgY291bnQgLT0gMTsKLSAgICAgIGNoYW5nZV9pbmZvIHw9IENIQU5HRURfU0NUUDsKICAgICB9CiAjZW5kaWYKICAgfSB3aGlsZSAoKGVycm9yID09IEVBSV9BR0FJTikgJiYgKGNvdW50IDw9IDUpKTsKIAogICBpZiAoZXJyb3IpIHsKICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiY29tcGxldGVfYWRkcmluZm86IGNvdWxkIG5vdCByZXNvbHZlICclcycgcG9ydCAnJXMnIGFmICVkIiwKKwkgICAgImNvbXBsZXRlX2FkZHJpbmZvOiBjb3VsZCBub3QgcmVzb2x2ZSAnJXMnIHBvcnQgJyVzJyBhZiAlZCIKKwkgICAgIlxuXHRnZXRhZGRyaW5mbyByZXR1cm5lZCAlZCAlc1xuIiwKIAkgICAgaG9zdG5hbWUsCiAJICAgIHBvcnQsCi0JICAgIGZhbWlseSk7Ci0gICAgZnByaW50Zih3aGVyZSwKLQkgICAgIlxuXHRnZXRhZGRyaW5mbyByZXR1cm5lZCAlZCAlc1xuIiwKKwkgICAgZmFtaWx5LAogCSAgICBlcnJvciwKIAkgICAgZ2FpX3N0cmVycm9yKGVycm9yKSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTY2NywxNSArODAzLDEzIEBACiAgICAgfQogICAgIHRlbXBfcmVzID0gdGVtcF9yZXMtPmFpX25leHQ7CiAgIH0KLQkKKwogICBpZiAoKGNoYW5nZV9pbmZvICYgQ0hBTkdFRF9TT0NLX1RZUEUpICYmCiAgICAgICAhKGNoYW5nZV93YXJuaW5nX2Rpc3BsYXllZCAmIENIQU5HRURfU09DS19UWVBFKSkgewogICAgIGNoYW5nZV93YXJuaW5nX2Rpc3BsYXllZCB8PSBDSEFOR0VEX1NPQ0tfVFlQRTsKICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiV0FSTklORyEgZ2V0YWRkcmluZm8gcmV0dXJuZWQgYSBzb2NrZXQgdHlwZSB3aGljaCBkaWQgbm90XG4iKTsKLSAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAibWF0Y2ggdGhlIHJlcXVlc3RlZCB0eXBlLiAgUGxlYXNlIGNvbnRhY3QgeW91ciB2ZW5kb3IgZm9yXG4iKTsKLSAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiV0FSTklORyEgZ2V0YWRkcmluZm8gcmV0dXJuZWQgYSBzb2NrZXQgdHlwZSB3aGljaCBkaWQgbm90XG4iCisJICAgICJtYXRjaCB0aGUgcmVxdWVzdGVkIHR5cGUuICBQbGVhc2UgY29udGFjdCB5b3VyIHZlbmRvciBmb3JcbiIKIAkgICAgImEgZml4IHRvIHRoaXMgYnVnIGluIGdldGFkZHJpbmZvKClcbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KQEAgLTY4MywxNSArODE3LDIxIEBACiAgIC8qIGlmIHdlIGRyb3BwZWQgdGhlIHByb3RvY29sIGhpbnQsIGl0IHdvdWxkIGJlIGZvciBhIHByb3RvY29sIHRoYXQKICAgICAgZ2V0YWRkcmluZm8oKSB3YXNuJ3Qgc3VwcG9ydGluZyB5ZXQsIG5vdCBmb3IgdGhlIGJ1ZyB0aGF0IGl0IHRvb2sKICAgICAgb3VyIGhpbnQgYW5kIHN0aWxsIHJldHVybmVkIHplcm8uIHJhaiAyMDA2LTEwLTE2ICovCisgIC8qIGFzIHRoZXJlIGlzIG5vdyBhbiBvcGVuIGJ1ZyBhZ2FpbnN0IChPcGVuKVNvbGFyaXMgKGlkIDY4NDc3MzMpIG9uCisgICAgIHRoaXMgYmVoYXZpb3VyIHdlIHdpbGwgb25seSBlbWl0IHRoaXMgd2FybmluZyBpZiBkZWJ1ZyBpcyBzZXQKKyAgICAgdW5kZXIgU29sYXJpcyBhbmQgd2lsbCBjb250aW51ZSB0byBlbWl0IGl0IHVuZGVyIGFueSBjaXJjdW1zdGFuY2UKKyAgICAgb24gb3RoZXIgcGxhdGZvcm1zIHNob3VsZCBpdCBhcmlzZS4gcmFqIDIwMDktMDYtMDMgKi8KKyAgLyogc2luY2UgaXQgaGFzIG5vdyBiZWVuIHR3byB5ZWFycyBzaW5jZSB0aGF0IGJ1ZyB3YXMgZmlsZWQsIGl0CisgICAgIHNob3VsZCBiZSByZXNvbHZlZCBieSBub3csIHNvIHRoZSAib3V0IiBnaXZlbiB0byBTdW4gc2hvdWxkIG5vCisgICAgIGxvbmdlciBiZSBuZWNlc3NhcnkuICBlaXRoZXIgZm9sa3MgYXJlIHJ1bm5pbmcgd2l0aCB0aGUgZml4IG9yCisgICAgIHRoZXkgbmVlZCB0byBnZXQgdGhlIGZpeC4gcmFqIDIwMTEtMDctMDYgKi8KICAgaWYgKChjaGFuZ2VfaW5mbyAmIENIQU5HRURfUFJPVE9DT0wpICYmCiAgICAgICAhKGNoYW5nZV93YXJuaW5nX2Rpc3BsYXllZCAmIENIQU5HRURfUFJPVE9DT0wpICYmCiAgICAgICAoaGludHMuYWlfcHJvdG9jb2wgIT0gMCkpIHsKICAgICBjaGFuZ2Vfd2FybmluZ19kaXNwbGF5ZWQgfD0gQ0hBTkdFRF9QUk9UT0NPTDsKICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiV0FSTklORyEgZ2V0YWRkcmluZm8gcmV0dXJuZWQgYSBwcm90b2NvbCBvdGhlciB0aGFuIHRoZVxuIik7Ci0gICAgZnByaW50Zih3aGVyZSwKLQkgICAgInJlcXVlc3RlZCBwcm90b2NvbC4gIFBsZWFzZSBjb250YWN0IHlvdXIgdmVuZG9yIGZvclxuIik7Ci0gICAgZnByaW50Zih3aGVyZSwKKwkgICAgIldBUk5JTkchIGdldGFkZHJpbmZvIHJldHVybmVkIGEgcHJvdG9jb2wgb3RoZXIgdGhhbiB0aGVcbiIKKwkgICAgInJlcXVlc3RlZCBwcm90b2NvbC4gIFBsZWFzZSBjb250YWN0IHlvdXIgdmVuZG9yIGZvclxuIgogCSAgICAiYSBmaXggdG8gdGhpcyBidWcgaW4gZ2V0YWRkcmluZm8oKVxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQpAQCAtNzAwLDggKzg0MCwxNiBAQAogICAgICAgIShjaGFuZ2Vfd2FybmluZ19kaXNwbGF5ZWQgJiBDSEFOR0VEX1NDVFApKSB7CiAgICAgY2hhbmdlX3dhcm5pbmdfZGlzcGxheWVkIHw9IENIQU5HRURfU0NUUDsKICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiV0FSTklORyEgZ2V0YWRkcmluZm8gb24gdGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBhY2NlcHQgSVBQUk9UT19TQ1RQIVxuIik7CisJICAgICJXQVJOSU5HISBnZXRhZGRyaW5mbyBvbiB0aGlzIHBsYXRmb3JtIGRvZXMgbm90IGFjY2VwdCBJUFBST1RPX1NDVFAhXG4iCisJICAgICJQbGVhc2UgY29udGFjdCB5b3VyIHZlbmRvciBmb3IgYSBmaXggdG8gdGhpcyBidWcgaW4gZ2V0YWRkcmluZm8oKS5cbiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICBpZiAoKGNoYW5nZV9pbmZvICYgQ0hBTkdFRF9EQ0NQKSAmJgorICAgICAgIShjaGFuZ2Vfd2FybmluZ19kaXNwbGF5ZWQgJiBDSEFOR0VEX0RDQ1ApKSB7CisgICAgY2hhbmdlX3dhcm5pbmdfZGlzcGxheWVkIHw9IENIQU5HRURfRENDUDsKICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiV0FSTklORyEgZ2V0YWRkcmluZm8gb24gdGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBhY2NlcHQgSVBQUk9UT19EQ0NQIVxuIgogCSAgICAiUGxlYXNlIGNvbnRhY3QgeW91ciB2ZW5kb3IgZm9yIGEgZml4IHRvIHRoaXMgYnVnIGluIGdldGFkZHJpbmZvKCkuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CkBAIC03MTcsNiArODY1LDEwIEBACiB2b2lkCiBjb21wbGV0ZV9hZGRyaW5mb3Moc3RydWN0IGFkZHJpbmZvICoqcmVtb3RlLHN0cnVjdCBhZGRyaW5mbyAqKmxvY2FsLCBjaGFyIHJlbW90ZV9ob3N0W10sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBmbGFncykgewogCisgIGlmIChyZW1vdGVfZGF0YV9mYW1pbHkgPT0gQUZfVU5TUEVDKSB7CisgICAgcmVtb3RlX2RhdGFfZmFtaWx5ID0gY29udHJvbF9mYW1pbHk7CisgIH0KKwogICAqcmVtb3RlID0gY29tcGxldGVfYWRkcmluZm8ocmVtb3RlX2hvc3QsCiAJCQkgICAgICByZW1vdGVfZGF0YV9hZGRyZXNzLAogCQkJICAgICAgcmVtb3RlX2RhdGFfcG9ydCwKQEAgLTc1NSw3ICs5MDcsNyBAQAogICAgICAgaWYgKChBRl9JTkVUNiA9PSBsb2NhbF9kYXRhX2ZhbWlseSkgfHwKIAkgICgoQUZfVU5TUEVDID09IGxvY2FsX2RhdGFfZmFtaWx5KSAmJgogCSAgIChBRl9JTkVUNiA9PSByZW1vdGVfZGF0YV9mYW1pbHkpKSB8fAotCSAgKChBRl9VTlNQRUMgPT0gbG9jYWxfZGF0YV9mYW1pbHkpICYmIAorCSAgKChBRl9VTlNQRUMgPT0gbG9jYWxfZGF0YV9mYW1pbHkpICYmCiAJICAgKEFGX0lORVQ2ID09ICgqcmVtb3RlKS0+YWlfZmFtaWx5KSkpIHsKIAlzdHJjcHkobG9jYWxfZGF0YV9hZGRyZXNzLCI6OjAiKTsKICAgICAgIH0KQEAgLTc3MSw2ICs5MjMsMTYgQEAKIAkJCSAgICAgcHJvdG9jb2wsCiAJCQkgICAgIGZsYWdzfEFJX1BBU1NJVkUpOwogCisgIC8qIE9LLCBhdCB0aGlzIHBvaW50LCBpZiByZW1vdGVfZGF0YV9hZGRyZXNzIGlzIE5VTEwsIHdlIGtub3cgdGhhdAorICAgICB3ZSB1c2VkIHRoZSB2YWx1ZSBvZiByZW1vdGVfaG9zdCAodGhlIGNvbnRyb2wgY29ubmVjdGlvbikgZm9yIHRoZQorICAgICByZW1vdGUsIHdoaWNoIG1lYW5zIHdlIGNhbi9zaG91bGQgc2V0IHJlbW90ZV9kYXRhX2FkZHJlc3MgdG8KKyAgICAgcmVtb3RlX2hvc3Qgc28gdGhlICJvbW5pIiBvdXRwdXQgcm91dGluZXMgY2FuIHVzZSB0aGF0IGdsb2JhbAorICAgICB2YXJpYWJsZS4gYXQgbGVhc3QgaSB0aGluayBJIGNhbiBnZXQgYXdheSB3aXRoIHRoYXQgOikgSSdtIHN1cmUKKyAgICAgdGhhdCBhdCBzb21lIHBvaW50IEknbGwgZmluZC1vdXQgdGhhdCBJIG5lZWQgdG8gYWxsb2NhdGUKKyAgICAgc29tZXRoaW5nIGZvciBpdCByYXRoZXIgdGhhbiBtZXNzIHdpdGggdGhlIHBvaW50ZXJzLCBidXQgdGhhdCBjYW4KKyAgICAgd2FpdC4gIGZhbW91cyBsYXN0IHdvcmRzIG9mIHJhaiAyMDA4LTAxLTI1ICovCisgIGlmIChyZW1vdGVfZGF0YV9hZGRyZXNzID09IE5VTEwpCisgICAgcmVtb3RlX2RhdGFfYWRkcmVzcyA9IHJlbW90ZV9ob3N0OwogfQogCiB2b2lkCkBAIC03ODIsMTMgKzk0NCwxMyBAQAogICAgIHN0cmNweShob3N0bmFtZSwiOjowIik7CiAgIH0KICNlbmRpZgotICAgIAorCiAgIHNwcmludGYocG9ydHN0ciwgIiV1IiwgcG9ydCk7CiAKIH0KIAogc3RhdGljIHVuc2lnbmVkIHNob3J0Ci1nZXRfcG9ydF9udW1iZXIoc3RydWN0IGFkZHJpbmZvICpyZXMpIAorZ2V0X3BvcnRfbnVtYmVyKHN0cnVjdCBhZGRyaW5mbyAqcmVzKQogewogIHN3aXRjaChyZXMtPmFpX2ZhbWlseSkgewogICBjYXNlIEFGX0lORVQ6IHsKQEAgLTgwNSwyMyArOTY3LDUxIEBACiAjZW5kaWYKICAgZGVmYXVsdDoKICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAiVW5leHBlY3RlZCBBZGRyZXNzIEZhbWlseSBvZiAldVxuIixyZXMtPmFpX2ZhbWlseSk7CisJICAgICJHaXZlbiBVbmV4cGVjdGVkIEFkZHJlc3MgRmFtaWx5IG9mICV1XG4iLHJlcy0+YWlfZmFtaWx5KTsKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoLTEpOwogICB9CiB9CiAKK3N0YXRpYyB2b2lkCitleHRyYWN0X2luZXRfYWRkcmVzc19hbmRfcG9ydChzdHJ1Y3QgYWRkcmluZm8gKnJlcywgdm9pZCAqYWRkciwgaW50IGxlbiwgaW50ICpwb3J0KQoreworIHN3aXRjaChyZXMtPmFpX2ZhbWlseSkgeworICBjYXNlIEFGX0lORVQ6IHsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmZvbyA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilyZXMtPmFpX2FkZHI7CisgICAgKnBvcnQgPSBmb28tPnNpbl9wb3J0OworICAgIG1lbWNweShhZGRyLCYoZm9vLT5zaW5fYWRkciksbWluKGxlbixzaXplb2YoZm9vLT5zaW5fYWRkcikpKTsKKyAgICBicmVhazsKKyAgfQorI2lmIGRlZmluZWQoQUZfSU5FVDYpCisgIGNhc2UgQUZfSU5FVDY6IHsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpmb28gPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXJlcy0+YWlfYWRkcjsKKyAgICAqcG9ydCA9IGZvby0+c2luNl9wb3J0OworICAgIG1lbWNweShhZGRyLCYoZm9vLT5zaW42X2FkZHIpLG1pbihsZW4sc2l6ZW9mKGZvby0+c2luNl9hZGRyKSkpOworICAgIGJyZWFrOworICB9CisjZW5kaWYKKyAgZGVmYXVsdDoKKyAgICAqcG9ydCA9IDB4REVBREJFRUY7CisgICAgc3RybmNweShhZGRyLCJVTktOIEZBTUlMWSIsbGVuKTsKKyAgfQorfQorCiAvKiB0aGlzIHJvdXRpbmUgd2lsbCBzZXQgdGhlIHBvcnQgbnVtYmVyIG9mIHRoZSBzb2NrYWRkciBpbiB0aGUKICAgIGFkZHJpbmZvIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUsIGJhc2VkIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAqLwogdm9pZAogc2V0X3BvcnRfbnVtYmVyKHN0cnVjdCBhZGRyaW5mbyAqcmVzLCB1bnNpZ25lZCBzaG9ydCBwb3J0KQogewogICBzd2l0Y2gocmVzLT5haV9mYW1pbHkpIHsKLSAgY2FzZSBBRl9JTkVUOiB7Ci0gICAgc3RydWN0IHNvY2thZGRyX2luICpmb28gPSAoc3RydWN0IHNvY2thZGRyX2luICopcmVzLT5haV9hZGRyOwotICAgIGZvby0+c2luX3BvcnQgPSBodG9ucyhwb3J0KTsKLSAgICBicmVhazsKLSAgfQorICBjYXNlIEFGX0lORVQ6CisjaWYgZGVmaW5lZChBRl9SRFMpCisgIGNhc2UgQUZfUkRTOgorI2VuZGlmCisgICAgeworICAgICAgc3RydWN0IHNvY2thZGRyX2luICpmb28gPSAoc3RydWN0IHNvY2thZGRyX2luICopcmVzLT5haV9hZGRyOworICAgICAgZm9vLT5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOworICAgICAgYnJlYWs7CisgICAgfQogI2lmIGRlZmluZWQoQUZfSU5FVDYpCiAgIGNhc2UgQUZfSU5FVDY6IHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpmb28gPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXJlcy0+YWlfYWRkcjsKQEAgLTgzMSwxMiArMTAyMSwxNjAgQEAKICNlbmRpZgogICBkZWZhdWx0OgogICAgIGZwcmludGYod2hlcmUsCi0JICAgICJVbmV4cGVjdGVkIEFkZHJlc3MgRmFtaWx5IG9mICV1XG4iLHJlcy0+YWlfZmFtaWx5KTsKKwkgICAgInNldF9wb3J0X251bWJlciBVbmV4cGVjdGVkIEFkZHJlc3MgRmFtaWx5IG9mICV1XG4iLHJlcy0+YWlfZmFtaWx5KTsKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoLTEpOwogICB9CiB9CiAKKy8qIHN0dWZmIHRoZSBhZGRyZXNzIGZhbWlseSwgcG9ydCBudW1iZXIgYW5kIGFkZHJlc3MgaW50byBhCisgICBzb2NrYWRkci4gZm9yIG5vdywgd2Ugd2lsbCBnbyBhaGVhZCBhbmQgemVyby1vdXQgdGhlIHNvY2thZGRyCisgICBmaXJzdCAqLwordm9pZAorc2V0X3NvY2thZGRyX2ZhbWlseV9hZGRyX3BvcnQoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNvY2thZGRyLCBpbnQgZmFtaWx5LCB2b2lkICphZGRyLCBpbnQgcG9ydCkgeworCisgIG1lbXNldChzb2NrYWRkciwwLHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSkpOworCisgIHN3aXRjaCAoZmFtaWx5KSB7CisjaWYgZGVmaW5lZChBRl9SRFMpCisgIGNhc2UgQUZfUkRTOgorI2VuZGlmCisgIGNhc2UgQUZfSU5FVDogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqZm9vID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNvY2thZGRyOworICAgIGZvby0+c2luX3BvcnQgPSBodG9ucygodW5zaWduZWQgc2hvcnQpIHBvcnQpOworICAgIGZvby0+c2luX2ZhbWlseSA9ICh1bnNpZ25lZCBzaG9ydCkgZmFtaWx5OworICAgIG1lbWNweSgmKGZvby0+c2luX2FkZHIpLGFkZHIsc2l6ZW9mKGZvby0+c2luX2FkZHIpKTsKKyAgICAqKGludCAqKWFkZHIgPSBodG9ubCgqKGludCAqKWFkZHIpOworICAgIGJyZWFrOworICB9CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgY2FzZSBBRl9JTkVUNjogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmZvbyA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc29ja2FkZHI7CisgICAgZm9vLT5zaW42X3BvcnQgPSBodG9ucygodW5zaWduZWQgc2hvcnQpIHBvcnQpOworICAgIGZvby0+c2luNl9mYW1pbHkgPSAodW5zaWduZWQgc2hvcnQpIGZhbWlseTsKKyAgICBtZW1jcHkoJihmb28tPnNpbjZfYWRkciksYWRkcixzaXplb2YoZm9vLT5zaW42X2FkZHIpKTsKKyAgICBicmVhazsKKyAgfQorI2VuZGlmCisgIGRlZmF1bHQ6CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgInNldF9zb2NrYWRkcl9mYW1pbHlfYWRkcl9wb3J0IFVuZXhwZWN0ZWQgQWRkcmVzcyBGYW1pbHkgb2YgJXVcbiIsZmFtaWx5KTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoLTEpOworICB9Cit9CisKKy8qIHB1bGwgdGhlIHBvcnQgYW5kIGFkZHJlc3Mgb3V0IG9mIHRoZSBzb2NrYWRkciBpbiBob3N0IGZvcm1hdCAqLworaW50CitnZXRfc29ja2FkZHJfZmFtaWx5X2FkZHJfcG9ydChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqc29ja2FkZHIsIGludCBmYW1pbHksIHZvaWQgKmFkZHIsIGludCAqcG9ydCkKK3sKKyAgc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopc29ja2FkZHI7CisKKyAgaW50IHJldCA9IDA7CisgIGlmIChzaW4tPnNpbl9mYW1pbHkgIT0gZmFtaWx5KSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgImdldF9zb2NrYWRkcl9mYW1pbHlfYWRkcl9wb3J0IGZhbWlseSBtaXNtYXRjaCAlZCB2cyAlZFxuIiwKKwkgICAgc2luLT5zaW5fZmFtaWx5LAorCSAgICBmYW1pbHkpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgc3dpdGNoKGZhbWlseSkgeworI2lmIGRlZmluZWQoQUZfUkRTKQorICBjYXNlIEFGX1JEUzoKKyNlbmRpZgorICBjYXNlICBBRl9JTkVUOiB7CisgICAgKnBvcnQgPSBudG9ocyhzaW4tPnNpbl9wb3J0KTsKKyAgICBtZW1jcHkoYWRkciwmKHNpbi0+c2luX2FkZHIpLHNpemVvZihzaW4tPnNpbl9hZGRyKSk7CisgICAgaWYgKCooaW50ICopYWRkciA9PSBJTkFERFJfQU5ZKSByZXQgPSAxOworICAgICooaW50ICopYWRkciA9IG50b2hsKCooaW50ICopYWRkcik7CisgICAgYnJlYWs7CisgIH0KKyNpZmRlZiBBRl9JTkVUNgorICBjYXNlIEFGX0lORVQ2OiB7CisgICAgaW50IGk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopc29ja2FkZHI7CisgICAgKnBvcnQgPSBudG9ocyhzaW42LT5zaW42X3BvcnQpOworICAgIHJldCA9IDE7CisgICAgZm9yIChpPTA7IGkgPCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKTsgaSsrKQorICAgICAgaWYgKHNpbjYtPnNpbjZfYWRkci5zNl9hZGRyW2ldICE9IDApIHJldD0wOworICAgIG1lbWNweShhZGRyLCYoc2luNi0+c2luNl9hZGRyKSwgc2l6ZW9mKHNpbjYtPnNpbjZfYWRkcikpOworICAgIGJyZWFrOworICB9CisjZW5kaWYKKyAgZGVmYXVsdDoKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiZ2V0X3NvY2thZGRyX2ZhbWlseV9hZGRyX3BvcnQ6IFVuZXhwZWN0ZWQgQWRkcmVzcyBGYW1pbHkgb2YgJXVcbiIsZmFtaWx5KTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIGV4aXQoLTEpOworICB9CisgIHJldHVybiByZXQ7Cit9CisKKwwKK2ludAorc2V0X3NvY2tldF90b3MoU09DS0VUIHNvY2ssIGludCBmYW1pbHksIGludCBzb2NrZXRfdG9zKSB7CisKKyAgaW50IG15X3RvcyA9IC0zOworICBuZXRwZXJmX3NvY2tsZW5fdCBzb2NrX29wdF9sZW47CisKKyAgc3dpdGNoIChmYW1pbHkpIHsKKyNpZiBkZWZpbmVkKElQX1RPUykKKyAgY2FzZSBBRl9JTkVUOgorICAgIC8qIHNob3VsZCBJIG1hc2stYXdheSBhbnl0aGluZyBhYm92ZSB0aGUgYnl0ZT8gKi8KKyAgICBteV90b3MgPSBzb2NrZXRfdG9zOworICAgIGlmIChzZXRzb2Nrb3B0KHNvY2ssCisJCSAgIElQUFJPVE9fSVAsCisJCSAgIElQX1RPUywKKwkJICAgKGNvbnN0IGNoYXIgKikmbXlfdG9zLHNpemVvZihteV90b3MpKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIiVzIGlwX3RvcyBmYWlsZWQgd2l0aCAlcyAoZXJybm8gJWQpXG4iLAorCSAgICAgIF9fRlVOQ1RJT05fXywKKwkgICAgICBzdHJlcnJvcihlcnJubyksCisJICAgICAgZXJybm8pOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAgIG15X3RvcyA9IC0yOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHNvY2tfb3B0X2xlbiA9IHNpemVvZihteV90b3MpOworICAgICAgZ2V0c29ja29wdChzb2NrLAorCQkgSVBQUk9UT19JUCwKKwkJIElQX1RPUywKKwkJIChjaGFyICopJm15X3RvcywKKwkJICZzb2NrX29wdF9sZW4pOworICAgIH0KKyAgICBicmVhazsKKyNlbmRpZgorI2lmIGRlZmluZWQoSVBWNl9UQ0xBU1MpCisgIGNhc2UgQUZfSU5FVDY6CisgICAgLyogc2hvdWxkIEkgbWFzay1hd2F5IGFueXRoaW5nIGFib3ZlIHRoZSBieXRlPyAqLworICAgIG15X3RvcyA9IHNvY2tldF90b3M7CisgICAgaWYgKHNldHNvY2tvcHQoc29jaywKKwkJICAgSVBQUk9UT19JUFY2LAorCQkgICBJUFY2X1RDTEFTUywKKwkJICAgKGNvbnN0IGNoYXIgKikmbXlfdG9zLHNpemVvZihteV90b3MpKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIiVzIGlwX3RvcyBmYWlsZWQgd2l0aCAlcyAoZXJybm8gJWQpXG4iLAorCSAgICAgIF9fRlVOQ1RJT05fXywKKwkgICAgICBzdHJlcnJvcihlcnJubyksCisJICAgICAgZXJybm8pOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAgIG15X3RvcyA9IC0yOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHNvY2tfb3B0X2xlbiA9IHNpemVvZihteV90b3MpOworICAgICAgZ2V0c29ja29wdChzb2NrLAorCQkgSVBQUk9UT19JUFY2LAorCQkgSVBWNl9UQ0xBU1MsCisJCSAoY2hhciAqKSZteV90b3MsCisJCSAmc29ja19vcHRfbGVuKTsKKyAgICB9CisgICAgYnJlYWs7CisjZW5kaWYKKyAgfQorICByZXR1cm4gbXlfdG9zOworfQogDAogCiAgLyogVGhpcyByb3V0aW5lIHdpbGwgY3JlYXRlIGEgZGF0YSAobGlzdGVuKSBzb2NrZXQgd2l0aCB0aGUKQEAgLTg1NSwxNSArMTE5MywxNSBAQAogewogCiAgIFNPQ0tFVCB0ZW1wX3NvY2tldDsKLSAgaW50IG9uZTsKLSAgaW50ICAgIG9uICA9IDE7Ci0gIAorICBpbnQgb25lID0gMTsKKyAgaW50IG9uICA9IDE7CisgIG5ldHBlcmZfc29ja2xlbl90IHNvY2tfb3B0X2xlbjsKIAogICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICB0ZW1wX3NvY2tldCA9IHNvY2tldChyZXMtPmFpX2ZhbWlseSwKIAkJICAgICAgIHJlcy0+YWlfc29ja3R5cGUsCiAJCSAgICAgICByZXMtPmFpX3Byb3RvY29sKTsKLSAgCisKICAgaWYgKHRlbXBfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAibmV0cGVyZjogY3JlYXRlX2RhdGFfc29ja2V0OiBzb2NrZXQ6IGVycm5vICVkIGZhbSAlcyB0eXBlICVzIHByb3QgJXMgZXJybXNnICVzXG4iLApAQCAtODc1LDEyICsxMjEzLDEyIEBACiAgICAgZmZsdXNoKHdoZXJlKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsImNyZWF0ZV9kYXRhX3NvY2tldDogc29ja2V0ICVkIG9idGFpbmVkLi4uXG4iLHRlbXBfc29ja2V0KTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIE1vZGlmeSB0aGUgbG9jYWwgc29ja2V0IHNpemUuIFRoZSByZWFzb24gd2UgYWx0ZXIgdGhlIHNlbmQgYnVmZmVyCiAgICBzaXplIGhlcmUgcmF0aGVyIHRoYW4gd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBtYWRlIGlzIHRvIHRha2UgY2FyZQogICAgb2YgZGVjcmVhc2VzIGluIGJ1ZmZlciBzaXplLiBEZWNyZWFzaW5nIHRoZSB3aW5kb3cgc2l6ZSBhZnRlcgpAQCAtODk0LDcgKzEyMzIsNyBAQAogICAgd2lsbCB0cnkgdG8gZmluZC1vdXQgd2hhdCB0aGVpciB2YWx1ZXMgYXJlLiBJZiB3ZSBjYW5ub3QgdG91Y2ggdGhlCiAgICBzb2NrZXQgYnVmZmVyIGluIGFueSB3YXksIHdlIHdpbGwgc2V0IHRoZSB2YWx1ZXMgdG8gLTEgdG8gaW5kaWNhdGUKICAgIHRoYXQuICAqLwotICAKKwogICAvKiBhbGwgdGhlIG9vZ3kgbml0dHkgZ3JpdHR5IHN0dWZmIG1vdmVkIGZyb20gaGVyZSBpbnRvIHRoZSByb3V0aW5lCiAgICAgIGJlaW5nIGNhbGxlZCBiZWxvdywgcGVyIHBhdGNoZXMgZnJvbSBkYXZpZG0gdG8gd29ya2Fyb3VuZCB0aGUgYnVnCiAgICAgIGluIExpbnV4IGdldHNvY2tvcHQoKS4gIHJhaiAyMDA0LTA2LTE1ICovCkBAIC05MDMsOCArMTI0MSwxMCBAQAogCiAgIC8qIG5vdywgd2UgbWF5IHdpc2ggdG8gZW5hYmxlIHRoZSBjb3B5IGF2b2lkYW5jZSBmZWF0dXJlcyBvbiB0aGUgKi8KICAgLyogbG9jYWwgc3lzdGVtLiBvZiBjb3Vyc2UsIHRoaXMgbWF5IG5vdCBiZSBwb3NzaWJsZS4uLiAqLwotICAKKwogI2lmZGVmIFNPX1JDVl9DT1BZQVZPSUQKKyAgLyogdGhpcyBpcyBhbmNpZW50IHZlc3RpZ2lhbCBIUC1VWCBjb2RlIHRoYXQgc2hvdWxkIHByb2JhYmx5IGdvIGF3YXkKKyAgICAgb25lIGRheSAqLwogICBpZiAobG9jX3JjdmF2b2lkKSB7CiAgICAgaWYgKHNldHNvY2tvcHQodGVtcF9zb2NrZXQsCiAJCSAgIFNPTF9TT0NLRVQsCkBAIC05MTcsMTAgKzEyNTcsNyBAQAogICAgICAgbG9jX3JjdmF2b2lkID0gMDsKICAgICB9CiAgIH0KLSNlbHNlCi0gIC8qIGl0IHdhc24ndCBjb21waWxlZCBpbi4uLiAqLwotICBsb2NfcmN2YXZvaWQgPSAwOwotI2VuZGlmIC8qIFNPX1JDVl9DT1BZQVZPSUQgKi8KKyNlbmRpZgogCiAjaWZkZWYgU09fU05EX0NPUFlBVk9JRAogICBpZiAobG9jX3NuZGF2b2lkKSB7CkBAIC05MzUsMTEgKzEyNzIsOCBAQAogICAgICAgbG9jX3NuZGF2b2lkID0gMDsKICAgICB9CiAgIH0KLSNlbHNlCi0gIC8qIGl0IHdhcyBub3QgY29tcGlsZWQgaW4uLi4gKi8KLSAgbG9jX3NuZGF2b2lkID0gMDsKICNlbmRpZgotICAKKwogICAvKiBOb3csIHdlIHdpbGwgc2VlIGFib3V0IHNldHRpbmcgdGhlIFRDUF9OT0RFTEFZIGZsYWcgb24gdGhlIGxvY2FsICovCiAgIC8qIHNvY2tldC4gV2Ugd2lsbCBvbmx5IGRvIHRoaXMgZm9yIHRob3NlIHN5c3RlbXMgdGhhdCBhY3R1YWxseSAqLwogICAvKiBzdXBwb3J0IHRoZSBvcHRpb24uIElmIGl0IGZhaWxzLCBub3RlIHRoZSBmYWN0LCBidXQga2VlcCBnb2luZy4gKi8KQEAgLTk2MCw3ICsxMjk0LDcgQEAKICAgICAgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCByZXMtPmFpX3Byb3RvY29sIGFjdHVhbGx5IG1ha2VzIHNlbnNlIGZvcgogICAgICBhIF9OT0RFTEFZIHNldHNvY2tvcHQoKSBvciBhIFVEUF9SUiB0ZXN0IG9uIExpbnV4IHdoZXJlIHNvbWVvbmUKICAgICAgbWlzdGFrZW5seSBzZXRzIC1EIHdpbGwgaGFuZy4gIHJhaiAyMDA1LTA0LTIxICovCi0gIAorCiAjaWYgZGVmaW5lZChUQ1BfTk9ERUxBWSkgfHwgZGVmaW5lZChTQ1RQX05PREVMQVkpCiAgIGlmICgobG9jX25vZGVsYXkpICYmIChyZXMtPmFpX3Byb3RvY29sICE9IElQUFJPVE9fVURQKSkgewogCkBAIC05NzUsOSArMTMwOSwxMSBAQAogICAgIC8qIEkgc3VzcGVjdCB0aGF0IFdBTlRfU0NUUCB3b3VsZCBzdWZmaWNlIGhlcmUgc2luY2UgdGhhdCBpcyB0aGUKICAgICAgICBvbmx5IHRpbWUgd2Ugd291bGQgaGF2ZSBjYWxsZWQgZ2V0YWRkcmluZm8gd2l0aCBhIGhpbnRzIGFza2luZwogICAgICAgIGZvciBTQ1RQLCBidXQganVzdCBpbiBjYXNlIHRoZXJlIGlzIGFuIFNDVFAgaW1wbGVtZW50YXRpb24gb3V0Ci0gICAgICAgdGhlcmUgX3dpdGhvdXRfIFNDVFBfTk9ERUxBWS4uLiByYWogMjAwNS0wMy0xNSAqLyAKLQotI2lmIGRlZmluZWQoV0FOVF9TQ1RQKSAmJiBkZWZpbmVkKFNDVFBfTk9ERUxBWSkKKyAgICAgICB0aGVyZSBfd2l0aG91dF8gU0NUUF9OT0RFTEFZLi4uIHJhaiAyMDA1LTAzLTE1ICovCisgICAgLyogY2hhbmdlIHRoaXMgdG8gSVBQUk9UT19TQ1RQIHJhdGhlciB0aGFuIFdBTlRfU0NUUCB0byBiZXR0ZXIgZml0CisgICAgICAgd2l0aCB0aGUgbW9kdXMgb3BlcmFuZGkgb2YgdGhlIG5ldyAib21uaSIgdGVzdHMuIHJhagorICAgICAgIDIwMDgtMDItMDQgKi8KKyNpZiBkZWZpbmVkKElQUFJPVE9fU0NUUCkgJiYgZGVmaW5lZChTQ1RQX05PREVMQVkpCiAgICAgaWYgKElQUFJPVE9fU0NUUCA9PSByZXMtPmFpX3Byb3RvY29sKSB7CiAgICAgICBvcHRpb24gPSBTQ1RQX05PREVMQVk7CiAgICAgfQpAQCAtOTk0LDcgKzEzMzAsNyBAQAogCSAgICAgIGVycm5vKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnID4gMSkgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAibmV0cGVyZjogY3JlYXRlX2RhdGFfc29ja2V0OiBbVENQfFNDVFBdX05PREVMQVkgcmVxdWVzdGVkLi4uXG4iKTsKQEAgLTEwMDIsMzAgKzEzMzgsNjEgQEAKICAgICB9CiAgIH0KICNlbHNlIC8qIFRDUF9OT0RFTEFZICovCi0gIAorCiAgIGxvY19ub2RlbGF5ID0gMDsKLSAgCisKICNlbmRpZiAvKiBUQ1BfTk9ERUxBWSAqLwogCisgIGlmICgodHJhbnNwb3J0X21zc19yZXEgIT0gLTEpICYmIChJUFBST1RPX1RDUCA9PSByZXMtPmFpX3Byb3RvY29sKSkgeworICAgIHNldF90Y3BfbXNzKHRlbXBfc29ja2V0LHRyYW5zcG9ydF9tc3NfcmVxKTsKKyAgfQorCiAjaWYgZGVmaW5lZChUQ1BfQ09SSykKLSAgICAKLSAgICBpZiAobG9jX3RjcGNvcmsgIT0gMCkgewotICAgICAgLyogdGhlIHVzZXIgd2lzaGVzIGZvciB1cyB0byBzZXQgVENQX0NPUksgb24gdGhlIHNvY2tldCAqLwotICAgICAgaW50IG9uZSA9IDE7Ci0gICAgICBpZiAoc2V0c29ja29wdCh0ZW1wX3NvY2tldCwKLQkJICAgICBnZXRwcm90b2J5bmFtZSgidGNwIiktPnBfcHJvdG8sCi0JCSAgICAgVENQX0NPUkssCi0JCSAgICAgKGNoYXIgKikmb25lLAotCQkgICAgIHNpemVvZihvbmUpKSA9PSBTT0NLRVRfRVJST1IpIHsKLQlwZXJyb3IoIm5ldHBlcmY6IHNlbmRmaWxlX3RjcF9zdHJlYW06IHRjcF9jb3JrIik7Ci0JZXhpdCgxKTsKLSAgICAgIH0KKworICBpZiAobG9jX3RjcGNvcmsgPiAwKSB7CisgICAgLyogdGhlIHVzZXIgd2lzaGVzIGZvciB1cyB0byBzZXQgVENQX0NPUksgb24gdGhlIHNvY2tldCAqLworICAgIGlmIChzZXRzb2Nrb3B0KHRlbXBfc29ja2V0LAorCQkgICBnZXRwcm90b2J5bmFtZSgidGNwIiktPnBfcHJvdG8sCisJCSAgIFRDUF9DT1JLLAorCQkgICAoY2hhciAqKSZvbmUsCisJCSAgIHNpemVvZihvbmUpKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgIHBlcnJvcigibmV0cGVyZjogY3JlYXRlX2RhdGFfc29ja2V0OiB0Y3BfY29yayIpOworICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgaWYgKGRlYnVnKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLCJjcmVhdGVfZGF0YV9zb2NrZXQ6IHRjcF9jb3JrLi4uXG4iKTsKKyAgICB9CisgIH0KKworI2VuZGlmIC8qIFRDUF9DT1JLICovCisKKyAgLyogd2VsbCwgYWZ0ZXIgS251dGggb25seSBrbm93cyBob3cgbWFueSB5ZWFycywgSSBoYXZlIGZpbmFsbHkKKyAgICBkZWNpZGVkIHRvIGVuYWJsZSBzZXR0aW5nIFNPX0tFRVBBTElWRSBvbiB0aGUgZGF0YSBzb2NrZXQuICA5OQorICAgIHRpbWVzIG91dCBvZiAxMCB0aGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LCBidXQgdGhhdCAxMDB0aCB0aW1lLAorICAgIHBlcmhhcHMgd2hlbiBuZXRwZXJmIGlzIGJlaW5nIChhYil1c2VkIGJ5IGZ1bmN0aW9uYWwgdGVzdGVycywgbWF5CisgICAgYmVuZWZpdCBmcm9tIGl0LiAgQW5kIGl0IG1heSBoZWxwIGNsZWFuLXVwIHNvbWUgbGluZ2VyaW5nCisgICAgbmV0c2VydmVycyBmcm9tIHRpbWUgdG8gdGltZS4gIHJhaiAyMDExLTA2LTI5ICovCisKKyNpZiBkZWZpbmVkKFNPX0tFRVBBTElWRSkKKworICBpZiAod2FudF9rZWVwYWxpdmUpIHsKKyAgICBpZiAoc2V0c29ja29wdCh0ZW1wX3NvY2tldCwKKwkJICAgU09MX1NPQ0tFVCwKKwkJICAgU09fS0VFUEFMSVZFLAorCQkgICAoY29uc3QgY2hhciAqKSZvbiwKKwkJICAgc2l6ZW9mKG9uKSkgPCAwKSB7CiAgICAgICBpZiAoZGVidWcpIHsKLQlmcHJpbnRmKHdoZXJlLCJzZW5kZmlsZV90Y3Bfc3RyZWFtOiB0Y3BfY29yay4uLlxuIik7CisJZnByaW50Zih3aGVyZSwKKwkJIiVzOiB1bmFibGUgdG8gc2V0IFNPX0tFRVBBTElWRSBvbiBkYXRhIHNvY2tldDogJXMgKGVycm5vICVkKVxuIiwKKwkJX19GVU5DVElPTl9fLAorCQlzdHJlcnJvcihlcnJubyksCisJCWVycm5vKTsKKwlmZmx1c2god2hlcmUpOwogICAgICAgfQogICAgIH0KLSAgICAKLSNlbmRpZiAvKiBUQ1BfQ09SSyAqLyAgICAKKyAgfQorCisjZW5kaWYgLyogU09fS0VFUEFMSVZFICovCiAKICAgLyogc2luY2Ugc29tZSBvZiB0aGUgVURQIHRlc3RzIGRvIG5vdCBkbyBhbnl0aGluZyB0byBjYXVzZSBhbgogICAgICBpbXBsaWNpdCBiaW5kKCkgY2FsbCwgd2UgbmVlZCB0byBiZSByYXRoZXIgZXhwbGljaXQgYWJvdXQgb3VyCkBAIC0xMDMzLDcgKzE0MDAsMjUgQEAKICAgICAgKElOQUREUl9BTlkgZXRjKS4gcmFqIDIwMDQtMDctMjAgKi8KIAogICBpZiAoc2V0c29ja29wdCh0ZW1wX3NvY2tldCwKKyNpZmRlZiBJUFBST1RPX0RDQ1AKKwkJIC8qIGl0IGlzIFJFQUxMWSBTSUxMWSBUSEFUIFRISVMgU0hPVUxEIEJFIE5FRURFRCEhIEkKKwkJICAgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBTT0xfU09DS0VUIGZvciB0aGlzIGp1c3QKKwkJICAgIGxpa2UgVENQIGFuZCBTQ1RQICovCisJCSAvKiBJVCBJUyBFVkVOIFNJTExJRVIgVEhBVCBUSEVSRSBDT1VMRCBCRSBTWVNURU1TCisJCSAgICBXSVRIIElQUFJPVE9fRENDUCBhbmQgbm8gU09MX0RDQ1AgKi8KKyNpZm5kZWYgU09MX0RDQ1AKKyNkZWZpbmUgU09MX0RDQ1AgU09MX1NPQ0tFVAorI2RlZmluZSBORVRQRVJGX05FRURfQ0xFQU5VUCAxCisjZW5kaWYKKwkJIChyZXMtPmFpX3Byb3RvY29sID09IElQUFJPVE9fRENDUCkgPyBTT0xfRENDUCA6IFNPTF9TT0NLRVQsCisjaWZkZWYgTkVUUEVSRl9ORUVEX0NMRUFOVVAKKyN1bmRlZiBTT0xfRENDUAorI3VuZGVmIE5FVFBFUkZfTkVFRF9DTEVBTlVQCisjZW5kaWYKKworI2Vsc2UKIAkJIFNPTF9TT0NLRVQsCisjZW5kaWYKIAkJIFNPX1JFVVNFQUREUiwKIAkJIChjb25zdCBjaGFyICopJm9uLAogCQkgc2l6ZW9mKG9uKSkgPCAwKSB7CkBAIC0xMDQyLDIyICsxNDI3LDc3IEBACiAJICAgIGVycm5vKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIGlmIChiaW5kKHRlbXBfc29ja2V0LAogCSAgIHJlcy0+YWlfYWRkciwKIAkgICByZXMtPmFpX2FkZHJsZW4pIDwgMCkgewogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgICAibmV0cGVyZjogY3JlYXRlX2RhdGFfc29ja2V0OiBkYXRhIHNvY2tldCBiaW5kIGZhaWxlZCBlcnJubyAlZFxuIiwKKwkgICAgICAibmV0cGVyZjogY3JlYXRlX2RhdGFfc29ja2V0OiBkYXRhIHNvY2tldCBiaW5kIGZhaWxlZDogJXMgKGVycm5vICVkKVxuIiwKKwkgICAgICBzdHJlcnJvcihlcnJubyksCiAJICAgICAgZXJybm8pOwogICAgICAgZnByaW50Zih3aGVyZSwiIHBvcnQ6ICVkXG4iLGdldF9wb3J0X251bWJlcihyZXMpKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQogICB9Ci0gIAogCi0gIHJldHVybih0ZW1wX3NvY2tldCk7CisgIC8qIHRoaXMgb25lIGlzIGEgc2xpZ2h0bHkgZ3J1ZGdpbmdseSBhZGRlZCBiYWNrc2lkZSBjb3ZlcmluZyBmb3IKKyAgICAgdGhvc2UgZm9sa3Mgd2hvIChhYil1c2UgbmV0cGVyZiBhcyBhIGZ1bmN0aW9uYWwgdGVzdGluZyB0b29sLCBhbmQKKyAgICAgZnVydGhlciBjb21wb3VuZCB0aGF0IGVycm9yIGJ5IHJ1bm5pbmcgdGVzdHMgb24gc3lzdGVtcyBhbHNvCisgICAgIGNvbm5lY3RlZCB0byB0aGVpciBzaXRlIG5ldHdvcmtzLCBhbmQgdGhlbiBjb21wb3VuZCBpdCBldmVuCisgICAgIGZ1cnRoZXIgY29tcG91bmQgaXQgYnkgcnVubmluZyBVRFBfU1RSRUFNIHRlc3RzIG92ZXIgbGlua3MgdGhhdAorICAgICBnZW5lcmF0ZSBsaW5rLWRvd24gZXZlbnRzIGFuZCBzbyBjYXVzZSB0aGUgdHJhZmZpYyB0byBiZSBzZW50IG91dAorICAgICB0aGUgZGVmYXVsdCByb3V0ZSBpbnRvIHRoZWlyIGNvcnBvcmF0ZSBuZXR3b3JrLi4uICBmcmFua2x5IHN1Y2gKKyAgICAgcGVvcGxlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBydW4gbmV0cGVyZiBpbiB0aGUgZmlyc3QgcGxhY2UKKyAgICAgYnV0IHRoZXJlIHdlIGFyZS4uLiByYWogMjAwOTEwMjYgKi8KIAorI2lmIGRlZmluZWQgKFNPX0RPTlRST1VURSkKKyAgaWYgKCFyb3V0aW5nX2FsbG93ZWQpIHsKKyAgICBpZiAoc2V0c29ja29wdCh0ZW1wX3NvY2tldCwKKwkJICAgU09MX1NPQ0tFVCwKKwkJICAgU09fRE9OVFJPVVRFLAorCQkgICAoY2hhciAqKSZvbmUsCisJCSAgIHNpemVvZihvbmUpKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIm5ldHBlcmY6IGNyZWF0ZV9kYXRhX3NvY2tldDogc29fZG9udHJvdXRlOiBlcnJubyAlZFxuIiwKKwkgICAgICBlcnJubyk7CisgICAgICBmZmx1c2god2hlcmUpOworICAgIH0KKyAgfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFNPX1BSSU9SSVRZKQorICBpZiAobG9jYWxfc29ja2V0X3ByaW8gPj0gMCkgeworICAgIGlmIChzZXRzb2Nrb3B0KHRlbXBfc29ja2V0LAorICAgICAgICAgICAgICAgICAgU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgIFNPX1BSSU9SSVRZLAorICAgICAgICAgICAgICAgICAgJmxvY2FsX3NvY2tldF9wcmlvLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludCkpID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgZnByaW50Zih3aGVyZSwKKyAgICAgICAgICAgICAibmV0cGVyZjogY3JlYXRlX2RhdGFfc29ja2V0OiBzb19wcmlvcml0eTogZXJybm8gJWRcbiIsCisgICAgICAgICAgICAgZXJybm8pOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAgIGxvY2FsX3NvY2tldF9wcmlvID0gLTI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc29ja19vcHRfbGVuID0gNDsKKyAgICAgIGdldHNvY2tvcHQodGVtcF9zb2NrZXQsCisJCSBTT0xfU09DS0VULAorCQkgU09fUFJJT1JJVFksCisJCSAmbG9jYWxfc29ja2V0X3ByaW8sCisJCSAmc29ja19vcHRfbGVuKTsKKyAgICB9CisgIH0KKyNlbHNlCisgIGxvY2FsX3NvY2tldF9wcmlvID0gLTM7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKElQX1RPUykgfHwgZGVmaW5lZChJUFY2X1RDTEFTUykKKyAgaWYgKGxvY2FsX3NvY2tldF90b3MgPiAwKQorICAgIGxvY2FsX3NvY2tldF90b3MgPSBzZXRfc29ja2V0X3Rvcyh0ZW1wX3NvY2tldCxyZXMtPmFpX2ZhbWlseSwgbG9jYWxfc29ja2V0X3Rvcyk7CisjZW5kaWYKKworICByZXR1cm4gdGVtcF9zb2NrZXQ7CiB9CiAKICNpZmRlZiBLTFVER0VfU09DS0VUX09QVElPTlMKQEAgLTEwODAsMTMgKzE1MjAsMTMgQEAKICAgLyogd3JpdHRlbiBjb3JyZWN0bHksIGFuZCBzbyB3ZSBkbyBub3QgbmVlZCB0byBpbmNsdWRlIHRob3NlIGNhbGxzICovCiAgIC8qIGluIHRoaXMga2x1ZGd5IHJvdXRpbmUuIHJhaiAxMS85NSAqLwogCi0gIAorCiAgIC8qIE5vdywgd2Ugd2lsbCBzZWUgYWJvdXQgc2V0dGluZyB0aGUgVENQX05PREVMQVkgZmxhZyBvbiB0aGUgbG9jYWwgKi8KICAgLyogc29ja2V0LiBXZSB3aWxsIG9ubHkgZG8gdGhpcyBmb3IgdGhvc2Ugc3lzdGVtcyB0aGF0IGFjdHVhbGx5ICovCiAgIC8qIHN1cHBvcnQgdGhlIG9wdGlvbi4gSWYgaXQgZmFpbHMsIG5vdGUgdGhlIGZhY3QsIGJ1dCBrZWVwIGdvaW5nLiAqLwogICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBlbmFibGUgVENQX05PREVMQVkgb24gYSBVRFAgc29ja2V0LCB0aGlzICovCiAgIC8qIHdpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUgZGlzcGxheWVkICovCi0gIAorCiAjaWZkZWYgVENQX05PREVMQVkKICAgaWYgKGxvY19ub2RlbGF5KSB7CiAgICAgb25lID0gMTsKQEAgLTEwOTksNyArMTUzOSw3IEBACiAJICAgICAgZXJybm8pOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcgPiAxKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgICJuZXRwZXJmOiBrbHVkZ2Vfc29ja2V0X29wdGlvbnM6IFRDUF9OT0RFTEFZIHJlcXVlc3RlZC4uLlxuIik7CkBAIC0xMTA3LDkgKzE1NDcsOSBAQAogICAgIH0KICAgfQogI2Vsc2UgLyogVENQX05PREVMQVkgKi8KLSAgCisKICAgbG9jX25vZGVsYXkgPSAwOwotICAKKwogI2VuZGlmIC8qIFRDUF9OT0RFTEFZICovCiAKICAgfQpAQCAtMTExOCw3ICsxNTU4LDcgQEAKIAwKIAogc3RhdGljIHZvaWQgKgotZ2V0X2FkZHJlc3NfYWRkcmVzcyhzdHJ1Y3QgYWRkcmluZm8gKmluZm8pIAorZ2V0X2FkZHJlc3NfYWRkcmVzcyhzdHJ1Y3QgYWRkcmluZm8gKmluZm8pCiB7CiAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwogI2lmIGRlZmluZWQoQUZfSU5FVDYpCkBAIC0xMTQzLDI4ICsxNTgzLDM5IEBACiAgIH0KIH0KIAotI2lmIGRlZmluZWQoV0lOMzIpIAorI2lmIGRlZmluZWQoV0lOMzIpCisjaWYgIWRlZmluZWQoSW5ldE50b3ApCiAvKiArKisgV2h5IGlzbid0IHRoaXMgaW4gdGhlIHdpbnNvY2sgaGVhZGVycyB5ZXQ/ICovCiBjb25zdCBjaGFyICoKIGluZXRfbnRvcChpbnQgYWYsIGNvbnN0IHZvaWQgKnNyYywgY2hhciAqZHN0LCBzaXplX3Qgc2l6ZSk7CiAjZW5kaWYKKyNlbmRpZgogCiAvKiBUaGlzIHJvdXRpbmUgaXMgYSBnZW5lcmljIHRlc3QgaGVhZGVyIHByaW50ZXIgZm9yIHRoZSB0b3Btb3N0IGhlYWRlciAqLwogdm9pZAogcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKGNoYXIgdGVzdF9uYW1lW10sIHN0cnVjdCBhZGRyaW5mbyAqc291cmNlLCBzdHJ1Y3QgYWRkcmluZm8gKmRlc3RpbmF0aW9uKQogewogCi0jaWYgZGVmaW5lZChBRl9JTkVUNikKLSAgY2hhciBhZGRyZXNzX2J1ZltJTkVUNl9BRERSU1RSTEVOXTsKKyAgY2hhciAqYWRkcmVzc19idWY7CisKKyNpZmRlZiBBRl9JTkVUNgorICBhZGRyZXNzX2J1ZiA9IG1hbGxvYyhJTkVUNl9BRERSU1RSTEVOKTsKICNlbHNlCi0gIGNoYXIgYWRkcmVzc19idWZbMTZdOyAvKiBtYWdpYyBjb25zdGFudCAqLworICBhZGRyZXNzX2J1ZiA9IG1hbGxvYygxNik7IC8qIG1hZ2ljIGNvbnN0YW50ICovCiAjZW5kaWYKIAotICAvKiB3ZSB3YW50IHRvIGhhdmUgc29tZSBhZGRpdGlvbmFsLCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBpbiAqLwotICAvKiB0aGUgaGVhZGVycy4gd2Uga25vdyBzb21lIG9mIGl0IGhlcmUsIGJ1dCBub3QgYWxsLCBzbyB3ZSB3aWxsICovCi0gIC8qIG9ubHkgcHJpbnQgdGhlIHRlc3QgdGl0bGUgaGVyZSBhbmQgd2lsbCBwcmludCB0aGUgcmVzdWx0cyAqLwotICAvKiB0aXRsZXMgYWZ0ZXIgdGhlIHRlc3QgaXMgZmluaXNoZWQgKi8KLSAgZnByaW50Zih3aGVyZSwgIiVzIiwgdGVzdF9uYW1lKTsKKyAgaWYgKGFkZHJlc3NfYnVmID09IE5VTEwpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCJVbmFibGUgdG8gYWxsb2NhdGUgYWRkcmVzc19idWZcbiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIC8qIHdlIHdhbnQgdG8gaGF2ZSBzb21lIGFkZGl0aW9uYWwsIGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGluIHRoZQorICAgICBoZWFkZXJzLiB3ZSBrbm93IHNvbWUgb2YgaXQgaGVyZSwgYnV0IG5vdCBhbGwsIHNvIHdlIHdpbGwgb25seQorICAgICBwcmludCB0aGUgdGVzdCB0aXRsZSBoZXJlIGFuZCB3aWxsIHByaW50IHRoZSByZXN1bHRzIHRpdGxlcyBhZnRlcgorICAgICB0aGUgdGVzdCBpcyBmaW5pc2hlZCAqLworICBmcHJpbnRmKHdoZXJlLCIlcyIsdGVzdF9uYW1lKTsKKwogICBhZGRyZXNzX2J1ZlswXSA9ICdcMCc7CiAgIGluZXRfbnRvcChzb3VyY2UtPmFpX2ZhbWlseSxnZXRfYWRkcmVzc19hZGRyZXNzKHNvdXJjZSksYWRkcmVzc19idWYsc2l6ZW9mKGFkZHJlc3NfYnVmKSk7CiAgIGZwcmludGYod2hlcmUsCkBAIC0xMTczLDYgKzE2MjQsNyBAQAogCSAgYWRkcmVzc19idWYsCiAJICBnZXRfcG9ydF9udW1iZXIoc291cmNlKSwKIAkgIGluZXRfZnRvcyhzb3VyY2UtPmFpX2ZhbWlseSkpOworCiAgIGFkZHJlc3NfYnVmWzBdID0gJ1wwJzsKICAgaW5ldF9udG9wKGRlc3RpbmF0aW9uLT5haV9mYW1pbHksZ2V0X2FkZHJlc3NfYWRkcmVzcyhkZXN0aW5hdGlvbiksYWRkcmVzc19idWYsc2l6ZW9mKGFkZHJlc3NfYnVmKSk7CiAgIGZwcmludGYod2hlcmUsCkBAIC0xMTg0LDcgKzE2MzYsNyBAQAogCiAgIGlmIChpdGVyYXRpb25fbWF4ID4gMSkgewogICAgIGZwcmludGYod2hlcmUsCi0JICAgICIgOiArLy0lMy4xZiUlIEAgJTJkJSUgY29uZi4gJXMiLAorCSAgICAiIDogKy8tJS4zZiUlIEAgJTJkJSUgY29uZi4gJXMiLAogCSAgICBpbnRlcnZhbC8wLjAyLAogCSAgICBjb25maWRlbmNlX2xldmVsLAogCSAgICByZXN1bHRfY29uZmlkZW5jZV9vbmx5ID8gIiBvbiByZXN1bHQgb25seSIgOiAiIik7CkBAIC0xMTkyLDcgKzE2NDQsNyBAQAogICBpZiAoKGxvY19ub2RlbGF5ID4gMCkgfHwgKHJlbV9ub2RlbGF5ID4gMCkpIHsKICAgICBmcHJpbnRmKHdoZXJlLCIgOiBub2RlbGF5Iik7CiAgIH0KLSAgaWYgKChsb2Nfc25kYXZvaWQgPiAwKSB8fCAKKyAgaWYgKChsb2Nfc25kYXZvaWQgPiAwKSB8fAogICAgICAgKGxvY19yY3Zhdm9pZCA+IDApIHx8CiAgICAgICAocmVtX3NuZGF2b2lkID4gMCkgfHwKICAgICAgIChyZW1fcmN2YXZvaWQgPiAwKSkgewpAQCAtMTIxNSw3ICsxNjY3LDcgQEAKICNlbmRpZgogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCiAKLSNpZmRlZiBESVJUWSAKKyNpZmRlZiBESVJUWQogICBmcHJpbnRmKHdoZXJlLCIgOiBkaXJ0eSBkYXRhIik7CiAjZW5kaWYgLyogRElSVFkgKi8KICNpZmRlZiBXQU5UX0RFTU8KQEAgLTEyMzMsNDQgKzE2ODUsNDcgQEAKICAgICBmcHJpbnRmKHdoZXJlLCIgOiBjcHUgYmluZCIpOwogICB9CiAgIGZwcmludGYod2hlcmUsIlxuIik7Ci0gIAorCisgIGZyZWUoYWRkcmVzc19idWYpOwogfQogCisvKiBpZiBXQU5UX01JR1JBVElPTiBpcyBkZWZpbmVkLCB3ZSB3aWxsIHVzZSB0aGUgc2VuZF90Y3Bfc3RyZWFtKCkKKyAgIGNhbGwgaW4gc3JjL25ldHRlc3Rfb21uaS5jICovCisjaWZuZGVmIFdBTlRfTUlHUkFUSU9OCiAKIC8qIFRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSBUQ1AgdW5pZGlyZWN0aW9uYWwgZGF0YSB0cmFuc2ZlciB0ZXN0ICovCiAvKiAoYS5rLmEuIHN0cmVhbSkgZm9yIHRoZSBzb2NrZXRzIGludGVyZmFjZS4gSXQgcmVjZWl2ZXMgaXRzICovCiAvKiBwYXJhbWV0ZXJzIHZpYSBnbG9iYWwgdmFyaWFibGVzIGZyb20gdGhlIHNoZWxsIGFuZCB3cml0ZXMgaXRzICovCiAvKiBvdXRwdXQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gKi8KIAotCi12b2lkIAordm9pZAogc2VuZF90Y3Bfc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgXG5cCiBieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlcy9zZWMgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmYgJXNcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPQogICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAlNy4yZiAgICVzXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgICAgU2VydmljZSBEZW1hbmRcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFNlbmQgICAgIFJlY3YgICAgIFNlbmQgICAgUmVjdlxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgbG9jYWwgICAgcmVtb3RlICAgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgICUtOC44cy9zICAlJSAlYyAgICAgICUlICVjICAgICAgdXMvS0IgICB1cy9LQlxuXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzAgPQogICAgICIlNi4zZiAlYyAlc1xuIjsKIAogICBjaGFyICpjcHVfZm10XzEgPQogICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAgICU3LjJmICAgJS02LjJmICAgJS02LjJmICAgJS02LjNmICAlLTYuM2YgJXNcbiI7Ci0gIAorCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcblwKIEFsaWdubWVudCAgICAgIE9mZnNldCAgICAgICAgICUtOC44cyAlLTguOHMgICAgU2VuZHMgICAlLTguOHMgUmVjdnNcblwKIExvY2FsICBSZW1vdGUgIExvY2FsICBSZW1vdGUgIFhmZXJlZCAgIFBlciAgICAgICAgICAgICAgICAgUGVyXG5cCkBAIC0xMjgyLDUzICsxNzM3LDU4IEBACiBTZWdtZW50XG5cCiBTaXplIChieXRlcylcblwKICU2ZFxuIjsKLSAgCi0gIAorCisKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIC8qIHdoYXQgd2Ugd2FudCBpcyB0byBoYXZlIGEgYnVmZmVyIHNwYWNlIHRoYXQgaXMgYXQgbGVhc3Qgb25lICovCiAgIC8qIHNlbmQtc2l6ZSBncmVhdGVyIHRoYW4gb3VyIHNlbmQgd2luZG93LiB0aGlzIHdpbGwgaW5zdXJlIHRoYXQgd2UgKi8KICAgLyogYXJlIG5ldmVyIHRyeWluZyB0byByZS11c2UgYSBidWZmZXIgdGhhdCBtYXkgc3RpbGwgYmUgaW4gdGhlIGhhbmRzICovCiAgIC8qIG9mIHRoZSB0cmFuc3BvcnQuIFRoaXMgYnVmZmVyIHdpbGwgYmUgbWFsbG9jJ2QgYWZ0ZXIgd2UgaGF2ZSBmb3VuZCAqLwogICAvKiB0aGUgc2l6ZSBvZiB0aGUgbG9jYWwgc2VuYyBzb2NrZXQgYnVmZmVyLiBXZSB3aWxsIHdhbnQgdG8gZGVhbCAqLwogICAvKiB3aXRoIGFsaWdubWVudCBhbmQgb2Zmc2V0IGNvbmNlcm5zIGFzIHdlbGwuICovCi0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwotICAKKwogICBpbnQgbGVuOwogICB1bnNpZ25lZCBpbnQgbnVtbWVzc2FnZXMgPSAwOwogICBTT0NLRVQgc2VuZF9zb2NrZXQ7CiAgIGludCBieXRlc19yZW1haW5pbmc7CiAgIGludCB0Y3BfbXNzID0gLTE7ICAvKiBwb3NzaWJseSB1bmluaXRpYWxpemVkIG9uIHByaW50ZiBmYXIgYmVsb3cgKi8KIAotICAvKiB3aXRoIGxpbmtzIGxpa2UgZmRkaSwgb25lIGNhbiBzZW5kID4gMzIgYml0cyB3b3J0aCBvZiBieXRlcyAqLwotICAvKiBkdXJpbmcgYSB0ZXN0Li4uIDstKSBhdCBzb21lIHBvaW50LCB0aGlzIHNob3VsZCBwcm9iYWJseSBiZWNvbWUgYSAqLwotICAvKiA2NGJpdCBpbnRlZ3JhbCB0eXBlLCBidXQgdGhvc2UgYXJlIG5vdCBlbnRpcmVseSBjb21tb24geWV0ICovCi0KKyAgLyogd2l0aCBsaW5rcyBsaWtlIGZkZGksIG9uZSBjYW4gc2VuZCA+IDMyIGJpdHMgd29ydGggb2YgYnl0ZXMKKyAgICAgZHVyaW5nIGEgdGVzdC4uLiA7LSkgYXQgc29tZSBwb2ludCwgdGhpcyBzaG91bGQgcHJvYmFibHkgYmVjb21lIGEKKyAgICAgNjRiaXQgaW50ZWdyYWwgdHlwZSwgYnV0IHRob3NlIGFyZSBub3QgZW50aXJlbHkgY29tbW9uCisgICAgIHlldC4uLiB0aW1lIHBhc3NlcywgYW5kIDY0IGJpdCB0eXBlcyBkbyBpbmRlZWQgYmVjb21lIGNvbW1vbi4gKi8KKyNpZiBkZWZpbmVkKFdJTjMyKSAmJiBfTVNDX1ZFUiA8PSAxMjAwCisgIF9faW50NjQgbG9jYWxfYnl0ZXNfc2VudCA9IDA7CisjZWxzZQogICB1bnNpZ25lZCBsb25nIGxvbmcgbG9jYWxfYnl0ZXNfc2VudCA9IDA7CisjZW5kaWYKKwogICBkb3VibGUJYnl0ZXNfc2VudCA9IDAuMDsKLSAgCisKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKICAgZmxvYXQJcmVtb3RlX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogCiAgIGRvdWJsZQl0aHJ1cHV0OwotICAKKwogICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwotICAKKwogICBzdHJ1Y3QJdGNwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdAkqdGNwX3N0cmVhbV9yZXF1ZXN0OwogICBzdHJ1Y3QJdGNwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QJKnRjcF9zdHJlYW1fcmVzcG9uc2U7CiAgIHN0cnVjdAl0Y3Bfc3RyZWFtX3Jlc3VsdHNfc3RydWN0CSp0Y3Bfc3RyZWFtX3Jlc3VsdDsKLSAgCi0gIHRjcF9zdHJlYW1fcmVxdWVzdCAgPSAKKworICB0Y3Bfc3RyZWFtX3JlcXVlc3QgID0KICAgICAoc3RydWN0IHRjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9zdHJlYW1fcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB0Y3Bfc3RyZWFtX3Jlc3VsdCAgID0gCisgIHRjcF9zdHJlYW1fcmVzdWx0ICAgPQogICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwpAQCAtMTMzOCw3ICsxNzk4LDcgQEAKICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIC8qIGNvbXBsZXRlX2FkZHJpbmZvcyB3aWxsIGVpdGhlciBzdWNjZWRlIG9yIGV4aXQgdGhlIHByb2Nlc3MgKi8KICAgY29tcGxldGVfYWRkcmluZm9zKCZyZW1vdGVfcmVzLAogCQkgICAgICZsb2NhbF9yZXMsCkBAIC0xMzQ2LDcgKzE4MDYsNyBAQAogCQkgICAgIFNPQ0tfU1RSRUFNLAogCQkgICAgIElQUFJPVE9fVENQLAogCQkgICAgIDApOwotICAKKwogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJUQ1AgU1RSRUFNIFRFU1QiLGxvY2FsX3JlcyxyZW1vdGVfcmVzKTsKICAgfQpAQCAtMTM2NywyMyArMTgyNywyMyBAQAogCiAgICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycy4gd2UgaGF2ZSB0byByZW1lbWJlciB0aGF0IHdlIG1pZ2h0IGJlICovCiAgICAgLyogZ29pbmcgdGhyb3VnaCB0aGUgbG9vcCBtb3JlIHRoYW4gb25jZS4gKi8KLSAgICAKKwogICAgIG51bW1lc3NhZ2VzICAgID0JMDsKICAgICBieXRlc19zZW50ICAgICA9CTAuMDsKICAgICB0aW1lc191cCAgICAgICA9IAkwOwotICAgIAorCiAgICAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICBzZW5kX3NvY2tldCA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAgIAorCiAgICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF90Y3Bfc3RyZWFtOiB0Y3Agc3RyZWFtIGRhdGEgc29ja2V0Iik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF90Y3Bfc3RyZWFtOiBzZW5kX3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgICAgfQotICAgIAorCiAgICAgLyogYXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBlaXRoZXIgcmV0cmlldmVkIHRoZSBzb2NrZXQgYnVmZmVyIHNpemVzLCAqLwogICAgIC8qIG9yIGhhdmUgdHJpZWQgdG8gc2V0IHRoZW0sIHNvIG5vdywgd2UgbWF5IHdhbnQgdG8gc2V0IHRoZSBzZW5kICovCiAgICAgLyogc2l6ZSBiYXNlZCBvbiB0aGF0IChiZWNhdXNlIHRoZSB1c2VyIGVpdGhlciBkaWQgbm90IHVzZSBhIC1tICovCkBAIC0xMzk4LDcgKzE4NTgsNyBAQAogCXNlbmRfc2l6ZSA9IDQwOTY7CiAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlciByaW5nIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQgYW5kIG9mZnNldC4gKi8KICAgICAvKiBub3RlIGFsc28gdGhhdCB3ZSBoYXZlIGFsbG9jYXRlZCBhIHF1YW50aXR5ICovCiAgICAgLyogb2YgbWVtb3J5IHRoYXQgaXMgYXQgbGVhc3Qgb25lIHNlbmQtc2l6ZSBncmVhdGVyIHRoYW4gb3VyIHNvY2tldCAqLwpAQCAtMTQxMSw3ICsxODcxLDcgQEAKICAgICAgIHNlbmRfd2lkdGggPSAobHNzX3NpemUvc2VuZF9zaXplKSArIDE7CiAgICAgICBpZiAoc2VuZF93aWR0aCA9PSAxKSBzZW5kX3dpZHRoKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7CiAgICAgICAvKiBvbmx5IGFsbG9jYXRlIHRoZSBzZW5kIHJpbmcgb25jZS4gdGhpcyBpcyBhIG5ldHdvcmtpbmcgdGVzdCwgKi8KICAgICAgIC8qIG5vdCBhIG1lbW9yeSBhbGxvY2F0aW9uIHRlc3QuIHRoaXMgd2F5LCB3ZSBkbyBub3QgbmVlZCBhICovCkBAIC0xNDI5LDExICsxODg5LDExIEBACiAgICAgLyogY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUgKi8KICAgICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAgIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiAqLwotICAgIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIW5vX2NvbnRyb2wpIHsKICAgICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZQogCSBzb2NrZXQgcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZQpAQCAtMTQ0Myw3ICsxOTAzLDcgQEAKIAkgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUgc3lzdGVtJ3MgZGVmYXVsdCBzaG91bGQgYmUKIAkgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0IHdpbGwgZGVmYXVsdCB0byAxLCB3aGljaAogCSB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgICAKKwogICAgICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlID0JRE9fVENQX1NUUkVBTTsKICAgICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+c2VuZF9idWZfc2l6ZQk9CXJzc19zaXplX3JlcTsKICAgICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+cmVjdl9idWZfc2l6ZQk9CXJzcl9zaXplX3JlcTsKQEAgLTE0NzEsOSArMTkzMSw5IEBACiAJZnByaW50Zih3aGVyZSwKIAkJIm5ldHBlcmY6IHNlbmRfdGNwX3N0cmVhbTogcmVxdWVzdGluZyBUQ1Agc3RyZWFtIHRlc3RcbiIpOwogICAgICAgfQotICAgICAgCisKICAgICAgIHNlbmRfcmVxdWVzdCgpOwotICAgICAgCisKICAgICAgIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQKICAgICAgICAgIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrCiAgICAgICAgICBpbnRvIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4KQEAgLTE0ODQsOSArMTk0NCw5IEBACiAgICAgICAgICB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzCiAgICAgICAgICB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzIGJlaW5nIHNlbnQgZm9yIHRoZSBUQ1AKICAgICAgICAgIHRlc3RzLiAgKi8KLSAgICAKKwogICAgICAgcmVjdl9yZXNwb25zZSgpOwotICAgIAorCiAgICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAJaWYgKGRlYnVnKQogCSAgZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CkBAIC0xNDk1LDEyICsxOTU1LDEyIEBACiAJcmVtX25vZGVsYXkgICAgID0JdGNwX3N0cmVhbV9yZXNwb25zZS0+bm9fZGVsYXk7CiAJcmVtb3RlX2NwdV91c2FnZT0JdGNwX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHU7CiAJcmVtb3RlX2NwdV9yYXRlID0gdGNwX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGU7Ci0JCisKIAkvKiB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIgcG9ydCBudW1iZXIgaXMgaW4KIAkgICBuZXR3b3JrIG9yZGVyICovCiAJc2V0X3BvcnRfbnVtYmVyKHJlbW90ZV9yZXMsCiAJCQkoc2hvcnQpdGNwX3N0cmVhbV9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlcik7Ci0JCisKIAlyZW1fcmN2YXZvaWQJPSB0Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5zb19yY3Zhdm9pZDsKIAlyZW1fc25kYXZvaWQJPSB0Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5zb19zbmRhdm9pZDsKICAgICAgIH0KQEAgLTE1MTEsMzMgKzE5NzEsNDMgQEAKIAkJbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwogCXBlcnJvcigiIik7CiAJZmZsdXNoKHdoZXJlKTsKLQkKKwogCWV4aXQoMSk7CiAgICAgICB9CiAgICAgfQogCiAjaWZkZWYgV0FOVF9ERU1PCi0gICAgREVNT19TVFJFQU1fU0VUVVAobHNzX3NpemUscnNyX3NpemUpCisgICAgZGVtb19zdHJlYW1fc2V0dXAobHNzX3NpemUscnNyX3NpemUpOwogI2VuZGlmCiAKICAgICAvKkNvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIHNvY2tldCAgKi8KLSAgICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwgCisgICAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHIsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF90Y3Bfc3RyZWFtOiBkYXRhIHNvY2tldCBjb25uZWN0IGZhaWxlZCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9CiAKKyNpZmRlZiBXSU4zMgorICAvKiB0aGlzIGlzIHVzZWQgc28gdGhlIHRpbWVyIHRocmVhZCBjYW4gY2xvc2UgdGhlIHNvY2tldCBvdXQgZnJvbSAqLworICAvKiB1bmRlciB1cywgd2hpY2ggdG8gZGF0ZSBpcyB0aGUgZWFzaWVzdC9jbGVhbmVzdC9sZWFzdCAqLworICAvKiBXaW5kb3dzLXNwZWNpZmljIHdheSBJIGNhbiBmaW5kIHRvIGZvcmNlIHRoZSB3aW5zb2NrIGNhbGxzIHRvICovCisgIC8qIHJldHVybiBXU0FFSU5UUiB3aXRoIHRoZSB0ZXN0IGlzIG92ZXIuIGFueXRoaW5nIHRoYXQgd2lsbCBydW4gb24gKi8KKyAgLyogOTUgYW5kIE5UIGFuZCBpcyBjbG9zZXIgdG8gd2hhdCBuZXRwZXJmIGV4cGVjdHMgZnJvbSBVbml4IHNpZ25hbHMgKi8KKyAgLyogYW5kIHN1Y2ggd291bGQgYmUgYXBwcmVjaWF0ZWQgcmFqIDEvOTYgKi8KKyAgd2luX2tsdWRnZV9zb2NrZXQgPSBzZW5kX3NvY2tldDsKKyNlbmRpZiAvKiBXSU4zMiAqLworCiAgICAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgKi8KICAgICAvKiB0aGUgY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkICovCiAgICAgLyogaGF2ZSBpbmRpY2F0ZWQgYSBwcm9ibGVtLiBJIGZhaWxlZCB0byBzZWUgdGhlIHZhbHVlIG9mIHRoZSAqLwogICAgIC8qIGV4dHJhICBtZXNzYWdlIGFmdGVyIHRoZSBhY2NlcHQgb24gdGhlIHJlbW90ZS4gSWYgaXQgZmFpbGVkLCAqLwogICAgIC8qIHdlJ2xsIHNlZSBpdCBoZXJlLiBJZiBpdCBkaWRuJ3QsIHdlIG1pZ2h0IGFzIHdlbGwgc3RhcnQgcHVtcGluZyAqLwotICAgIC8qIGRhdGEuICovIAotICAgIAorICAgIC8qIGRhdGEuICovCisKICAgICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHN0cmVhbSB0ZXN0LCB0aGV5IGNhbiBiZSAqLwogICAgIC8qIGVpdGhlciB0aW1lIG9yIGJ5dGUtY291bnQgYmFzZWQuICovCi0gICAgCisKICAgICBpZiAodGVzdF90aW1lKSB7CiAgICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgICB0aW1lc191cCA9IDA7CkBAIC0xNTU1LDE2ICsyMDI1LDE2IEBACiAgICAgICBieXRlc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgICAgdGltZXNfdXAgPSAxOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgICAKKwogICAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwogCiAgICAgLyogd2Ugb25seSBzdGFydCB0aGUgaW50ZXJ2YWwgdGltZXIgaWYgd2UgYXJlIHVzaW5nIHRoZQogICAgICAgIHRpbWVyLXRpbWVkIGludGVydmFscyByYXRoZXIgdGhhbiB0aGUgc2l0IGFuZCBzcGluIG9uZXMuIHJhagotICAgICAgIDIwMDYtMDItMDYgKi8gICAgCisgICAgICAgMjAwNi0wMi0wNiAqLwogI2lmIGRlZmluZWQoV0FOVF9JTlRFUlZBTFMpCiAgICAgSU5URVJWQUxTX0lOSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwpAQCAtMTU3MywyNiArMjA0MywyNiBAQAogCiAjaWZkZWYgV0FOVF9ERU1PCiAgICAgICBpZiAoZGVtb19tb2RlKSB7Ci0JSElTVF90aW1lc3RhbXAoZGVtb19vbmVfcHRyKTsKKwlkZW1vX2ZpcnN0X3RpbWVzdGFtcCgpOwogICAgICAgfQogI2VuZGlmCi0gICAgICAKKwogCiAgICAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcyAqLwogICAgIC8qIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiAqLwogICAgIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KICAgICAvKiBhbHdheXMgcmV0dXJuIGZhbHNlLiBXaGVuIHRoZSB0ZXN0IGlzIGZpbmlzaGVkLCB0aGUgd2hvbGUgKi8KICAgICAvKiBleHByZXNzaW9uIHdpbGwgZ28gZmFsc2UgYW5kIHdlIHdpbGwgc3RvcCBzZW5kaW5nIGRhdGEuICovCi0gICAgCisKICAgICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKGJ5dGVzX3JlbWFpbmluZyA+IDApKSB7Ci0gICAgICAKKwogI2lmZGVmIERJUlRZCiAgICAgICBhY2Nlc3NfYnVmZmVyKHNlbmRfcmluZy0+YnVmZmVyX3B0ciwKIAkJICAgIHNlbmRfc2l6ZSwKIAkJICAgIGxvY19kaXJ0eV9jb3VudCwKIAkJICAgIGxvY19jbGVhbl9jb3VudCk7CiAjZW5kaWYgLyogRElSVFkgKi8KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAJLyogdGltZXN0YW1wIGp1c3QgYmVmb3JlIHdlIGdvIGludG8gc2VuZCBhbmQgdGhlbiBhZ2FpbiBqdXN0CkBAIC0xNjI0LDIyICsyMDk0LDIyIEBACiAJSElTVF90aW1lc3RhbXAoJnRpbWVfdHdvKTsKIAlISVNUX2FkZCh0aW1lX2hpc3QsZGVsdGFfbWljcm8oJnRpbWVfb25lLCZ0aW1lX3R3bykpOwogICAgICAgfQotI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovICAgICAgCisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogI2lmZGVmIFdBTlRfREVNTwotICAgICAgREVNT19TVFJFQU1fSU5URVJWQUwoc2VuZF9zaXplKQotI2VuZGlmIAorICAgICAgZGVtb19zdHJlYW1faW50ZXJ2YWwoc2VuZF9zaXplKTsKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKICAgICAgIElOVEVSVkFMU19XQUlUKCk7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAgIAorCiAgICAgICAvKiBub3cgd2Ugd2FudCB0byBtb3ZlIG91ciBwb2ludGVyIHRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSAqLwogICAgICAgLyogZGF0YSBidWZmZXIuLi53ZSBtYXkgYWxzbyB3YW50IHRvIHdyYXAgYmFjayB0byB0aGUgImJlZ2lubmluZyIgKi8KICAgICAgIC8qIG9mIHRoZSBidWZmZXJzcGFjZSwgc28gd2Ugd2lsbCBtb2QgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBzZW50ICovCiAgICAgICAvKiBieSB0aGUgc2VuZCB3aWR0aCwgYW5kIHVzZSB0aGF0IHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IHRvIGFkZCAqLwogICAgICAgLyogdG8gdGhlIGJhc2UgcG9pbnRlci4gKi8KLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorICAgICAgbnVtbWVzc2FnZXMrKzsKICAgICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKICAgICAgIGlmIChieXRlc19yZW1haW5pbmcpIHsKIAlieXRlc19yZW1haW5pbmcgLT0gc2VuZF9zaXplOwpAQCAtMTY0OCw3ICsyMTE4LDcgQEAKIAogICAgIC8qIFRoZSB0ZXN0IGlzIG92ZXIuIEZsdXNoIHRoZSBidWZmZXJzIHRvIHRoZSByZW1vdGUgZW5kLiBXZSBkbyBhICovCiAgICAgLyogZ3JhY2VmdWwgcmVsZWFzZSB0byBpbnN1cmUgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiB0YWtlbiBieSB0aGUgKi8KLSAgICAvKiByZW1vdGUuICovIAorICAgIC8qIHJlbW90ZS4gKi8KIAogICAgIC8qIGJ1dCBmaXJzdCwgaWYgdGhlIHZlcmJvc2l0eSBpcyBncmVhdGVyIHRoYW4gMSwgZmluZC1vdXQgd2hhdCAqLwogICAgIC8qIHRoZSBUQ1AgbWF4aW11bSBzZWdtZW50X3NpemUgd2FzIChpZiBwb3NzaWJsZSkgKi8KQEAgLTE2NTYsNDIgKzIxMjYsNTAgQEAKICAgICAgIHRjcF9tc3MgPSAtMTsKICAgICAgIGdldF90Y3BfaW5mbyhzZW5kX3NvY2tldCwmdGNwX21zcyk7CiAgICAgfQotICAgIAotICAgIGlmIChzaHV0ZG93bihzZW5kX3NvY2tldCxTSFVUX1dSKSA9PSBTT0NLRVRfRVJST1IpIHsKKworICAgIGlmIChzaHV0ZG93bihzZW5kX3NvY2tldCxTSFVUX1dSKSA9PSBTT0NLRVRfRVJST1IgJiYgIXRpbWVzX3VwKSB7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IGNhbm5vdCBzaHV0ZG93biB0Y3Agc3RyZWFtIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBoYW5nIGEgcmVjdigpIG9mZiB0aGUgc29ja2V0IHRvIGJsb2NrIHVudGlsIHRoZSByZW1vdGUgaGFzICovCiAgICAgLyogYnJvdWdodCBhbGwgdGhlIGRhdGEgdXAgaW50byB0aGUgYXBwbGljYXRpb24uIGl0IHdpbGwgZG8gYSAqLwogICAgIC8qIHNodXRkb3duIHRvIGNhdXNlIGEgRklOIHRvIGJlIHNlbnQgb3VyIHdheS4gV2Ugd2lsbCBhc3N1bWUgdGhhdCAqLwogICAgIC8qIGFueSBleGl0IGZyb20gdGhlIHJlY3YoKSBjYWxsIGlzIGdvb2QuLi4gcmFqIDQvOTMgKi8KLSAgICAKKwogICAgIHJlY3Yoc2VuZF9zb2NrZXQsIHNlbmRfcmluZy0+YnVmZmVyX3B0ciwgc2VuZF9zaXplLCAwKTsKLSAgICAKKwogICAgIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LCBhbmQgKi8KICAgICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAgIAorCiAgICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nICovCiAJCQkJCQkvKiBtZWFzdXJlZCBhbmQgaG93ICovCiAJCQkJCQkvKiBsb25nIGRpZCB3ZSByZWFsbHkgKi8KIAkJCQkJCS8qIHJ1bj8gKi8KLSAgICAKKwogICAgIC8qIHdlIGFyZSBmaW5pc2hlZCB3aXRoIHRoZSBzb2NrZXQsIHNvIGNsb3NlIGl0IHRvIHByZXZlbnQgaGl0dGluZyAqLwogICAgIC8qIHRoZSBsaW1pdCBvbiBtYXhpbXVtIG9wZW4gZmlsZXMuICovCiAKICAgICBjbG9zZShzZW5kX3NvY2tldCk7CiAKKyNpZiBkZWZpbmVkKFdBTlRfSU5URVJWQUxTKQorI2lmZGVmIFdJTjMyCisgIHN0b3BfaXRpbWVyKCk7CisjZW5kaWYKKyNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLworCiAgICAgaWYgKCFub19jb250cm9sKSB7CiAgICAgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUKIAkgY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nCiAJIHRoaW5ncy4gSWYgaXQgd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMKIAkgdmFsdWVzLiAqLwotICAgIAorCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7CiAgICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAJaWYgKGRlYnVnKQotCSAgZnByaW50Zih3aGVyZSwicmVtb3RlIHJlc3VsdHMgb2J0YWluZWRcbiIpOworCSAgZnByaW50Zih3aGVyZSwKKwkJICAicmVtb3RlIHJlcG9ydGluZyByZXN1bHRzIGZvciAlLjJmIHNlY29uZHNcbiIsCisJCSAgdGNwX3N0cmVhbV9yZXN1bHQtPmVsYXBzZWRfdGltZSk7CiAgICAgICB9CiAgICAgICBlbHNlIHsKIAlTZXRfZXJybm8obmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwpAQCAtMTcwMCwxMCArMjE3OCwxMCBAQAogCQluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAJcGVycm9yKCIiKTsKIAlmZmx1c2god2hlcmUpOwotCQorCiAJZXhpdCgxKTsKICAgICAgIH0KLSAgICAKKwogICAgICAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciB0aHJ1cHV0IHdhcyBmb3IgdGhlIHRlc3QuIEluIHRoZQogCSBmdXR1cmUsIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dAogCSBtZWFzdXJlZCBieSB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEKQEAgLTE3MTMsNyArMjE5MSw3IEBACiAJIGFuZCBpZiBpdCB3YXMgYnkgYnl0ZXMsIHRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBhIG51bWJlcgogCSBvZiBieXRlcyB0aGF0IHdhc24ndCBhIG11bHRpcGxlIG9mIHRoZSBzZW5kX3NpemUsIHNvIHdlCiAJIHJlYWxseSBkaWRuJ3Qgc2VuZCB3aGF0IGhlIGFza2VkIGZvciA7LSkgKi8KLSAgICAKKwogICAgICAgYnl0ZXNfc2VudAk9IG50b2hkKHRjcF9zdHJlYW1fcmVzdWx0LT5ieXRlc19yZWNlaXZlZCk7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMTcyMSw3ICsyMTk5LDcgQEAKICAgICB9CiAKICAgICB0aHJ1cHV0CT0gY2FsY190aHJ1cHV0KGJ5dGVzX3NlbnQpOwotICAgIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCiAgICAgICAvKiB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSAqLwpAQCAtMTcyOSw3ICsyMjA3LDcgQEAKICAgICAgIC8qIHRoZXJlIHdhcyBubyBpZGxlIGNvdW50ZXIgaW4gdGhlIGtlcm5lbChzKS4gV2UgbmVlZCB0byBtYWtlICovCiAgICAgICAvKiBhIG5vdGUgb2YgdGhpcyBmb3IgdGhlIHVzZXIncyBiZW5lZml0Li4uKi8KICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKLQkKKwogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IGNhbGNfY3B1X3V0aWwoMC4wKTsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTE3NDAsOSArMjIxOCw5IEBACiAJbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7Ci0JCisKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uCT0gdGNwX3N0cmVhbV9yZXN1bHQtPmNwdV91dGlsOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTE3NTMsNyArMjIzMSw3IEBACiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IChmbG9hdCkgLTEuMDsKIAlyZW1vdGVfc2VydmljZV9kZW1hbmQgID0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgIH0gICAgCisgICAgfQogICAgIGVsc2UgewogICAgICAgLyogd2Ugd2VyZSBub3QgbWVhc3VyaW5nIGNwdSwgZm9yIHRoZSBjb25maWRlbmNlIHN0dWZmLCB3ZSAqLwogICAgICAgLyogc2hvdWxkIG1ha2UgaXQgLTEuMCAqLwpAQCAtMTc2Niw3ICsyMjQ0LDcgQEAKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4gKi8KICAgICAvKiBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZSAqLwogICAgIC8qIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHRocnVwdXQsCkBAIC0xNzc0LDggKzIyNTIsOCBAQAogCQkJIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCiAJCQkgbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCQkgcmVtb3RlX3NlcnZpY2VfZGVtYW5kKTsKLSAgICAKLSAgICAKKworCiAgICAgY29uZmlkZW5jZV9pdGVyYXRpb24rKzsKICAgfQogCkBAIC0xODEzLDcgKzIyOTEsNyBAQAogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICBsb2NhbF9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QoY3B1X21ldGhvZCk7CiAgICAgcmVtb3RlX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZCh0Y3Bfc3RyZWFtX3Jlc3VsdC0+Y3B1X21ldGhvZCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKQEAgLTE4MjEsNyArMjI5OSw3IEBACiAJCWNwdV9mbXRfMCwKIAkJbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCWxvY2FsX2NwdV9tZXRob2QsCi0JCSgocHJpbnRfaGVhZGVycykgfHwgCisJCSgocHJpbnRfaGVhZGVycykgfHwKIAkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgfQogICAgICAgZWxzZSB7CkBAIC0xODI5LDcgKzIzMDcsNyBAQAogCQljcHVfZm10XzAsCiAJCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwKIAkJcmVtb3RlX2NwdV9tZXRob2QsCi0JCSgocHJpbnRfaGVhZGVycykgfHwgCisJCSgocHJpbnRfaGVhZGVycykgfHwKIAkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0xODQyLDcgKzIzMjAsNyBAQAogCQlsb2NhbF9jcHVfbWV0aG9kLAogCQlyZW1vdGVfY3B1X21ldGhvZCk7CiAgICAgICB9Ci0gICAgCisKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgY3B1X2ZtdF8xLAkJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KIAkgICAgICByc3Jfc2l6ZSwJCSAgICAgICAgLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLwpAQCAtMTg1NCwyMCArMjMzMiwyMCBAQAogCSAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCS8qIHJlbW90ZSBjcHUgKi8KIAkgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwJLyogbG9jYWwgc2VydmljZSBkZW1hbmQgKi8KIAkgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQsCS8qIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZCAqLwotCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwgCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAogCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlIHsKICAgICAvKiBUaGUgdGVzdGVyIGRpZCBub3Qgd2lzaCB0byBtZWFzdXJlIHNlcnZpY2UgZGVtYW5kLiAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIHRwdXRfZm10XzAsCiAJICAgICAgdGhydXB1dCwKLQkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8IAorCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKIAkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIDE6CkBAIC0xODgyLDI3ICsyMzYwLDI3IEBACiAJICAgICAgc2VuZF9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHNlbmRzICovCiAJICAgICAgZWxhcHNlZF90aW1lLCAJCS8qIGhvdyBsb25nIGRpZCBpdCB0YWtlICovCiAJICAgICAgdGhydXB1dCwgICAgICAgICAgICAgICAgICAvKiBob3cgZmFzdCBkaWQgaXQgZ28gKi8KLQkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8IAorCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKIAkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCisKICAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCiAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCiAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKwogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBrbm93IGl0IGFsbCwgc28gd2Ugd2lsbCBnaXZlIGl0IHRvIGhpbS4gKi8KICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCiAgICAgLyogVENQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgIAorCiAgICAgLyogdGhpcyBzdHVmZiBuZWVkcyB0byBiZSB3b3JrZWQtb3V0IGluIHRoZSBwcmVzZW5jZSBvZiBjb25maWRlbmNlICovCiAgICAgLyogaW50ZXJ2YWxzIGFuZCBtdWx0aXBsZSBpdGVyYXRpb25zIG9mIHRoZSB0ZXN0Li4uIHJhaiAxMS85NCAqLwotIAorCiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAga3NpbmtfZm10LAogCSAgICAiQnl0ZXMiLApAQCAtMTkyNyw3ICsyNDA1LDcgQEAKICAgICBISVNUX3JlcG9ydCh0aW1lX2hpc3QpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAgIH0KLSAgCisKIH0KIAogDApAQCAtMTkzOSwzNCArMjQxNywzNCBAQAogICAgb3V0cHV0IHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuICovCiAKIAotdm9pZCAKK3ZvaWQKIHNlbmRfdGNwX21hZXJ0cyhjaGFyIHJlbW90ZV9ob3N0W10pCiB7Ci0gIAorCiAgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cCiBTb2NrZXQgU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgICAgICAgICBcblwKIFNpemUgICBTaXplICAgIFNpemUgICAgIFRpbWUgICAgIFRocm91Z2hwdXQgIFxuXAogYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgICAgc2Vjcy4gICAgJXMvc2VjICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmICVzXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xID0KLSAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgJTcuMmYgICAgJXMgXG4iOwotICAKKyAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgJTcuMmYgICAlc1xuIjsKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgICAgU2VydmljZSBEZW1hbmRcblwKLVNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFNlbmQgICAgIFJlY3YgICAgIFNlbmQgICAgUmVjdlxuXAorU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgUmVjdiAgICAgU2VuZCAgICAgUmVjdiAgICBTZW5kXG5cCiBTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICBsb2NhbCAgICByZW1vdGUgICBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgICAgc2Vjcy4gICAgJS04LjhzL3MgICUlICVjICAgICAgJSUgJWMgICAgICB1cy9LQiAgIHVzL0tCXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmICVjICVzXG4iOwogCiAgIGNoYXIgKmNwdV9mbXRfMSA9CiAgICAgIiU2ZCAlNmQgJTZkICAgICUtNi4yZiAgICAgJTcuMmYgICAlLTYuMmYgICAlLTYuMmYgICAlLTYuM2YgICUtNi4zZiAlc1xuIjsKLSAgCisKICAgY2hhciAqa3NpbmtfZm10ID0gIlxuXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0ICAgICAgICAgJS04LjhzICUtOC44cyAgICBSZWN2cyAgICUtOC44cyBTZW5kc1xuXAogTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZSAgWGZlcmVkICAgUGVyICAgICAgICAgICAgICAgICBQZXJcblwKQEAgLTE5NzgsMzAgKzI0NTYsMzcgQEAKIFNlZ21lbnRcblwKIFNpemUgKGJ5dGVzKVxuXAogJTZkXG4iOwotICAKLSAgCisKKwogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKLSAgCisKICAgLyogd2hhdCB3ZSB3YW50IGlzIHRvIGhhdmUgYSBidWZmZXIgc3BhY2UgdGhhdCBpcyBhdCBsZWFzdCBvbmUgKi8KICAgLyogcmVjdi1zaXplIGdyZWF0ZXIgdGhhbiBvdXIgcmVjdiB3aW5kb3cuIHRoaXMgd2lsbCBpbnN1cmUgdGhhdCB3ZSAqLwogICAvKiBhcmUgbmV2ZXIgdHJ5aW5nIHRvIHJlLXVzZSBhIGJ1ZmZlciB0aGF0IG1heSBzdGlsbCBiZSBpbiB0aGUgaGFuZHMgKi8KICAgLyogb2YgdGhlIHRyYW5zcG9ydC4gVGhpcyBidWZmZXIgd2lsbCBiZSBtYWxsb2MnZCBhZnRlciB3ZSBoYXZlIGZvdW5kICovCiAgIC8qIHRoZSBzaXplIG9mIHRoZSBsb2NhbCBzZW5jIHNvY2tldCBidWZmZXIuIFdlIHdpbGwgd2FudCB0byBkZWFsICovCiAgIC8qIHdpdGggYWxpZ25tZW50IGFuZCBvZmZzZXQgY29uY2VybnMgYXMgd2VsbC4gKi8KLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7Ci0gIAorCiAgIGludCBsZW47CiAgIHVuc2lnbmVkIGludCBudW1tZXNzYWdlcyA9IDA7CiAgIFNPQ0tFVCByZWN2X3NvY2tldDsKICAgaW50IGJ5dGVzX3JlbWFpbmluZzsKICAgaW50IHRjcF9tc3MgPSAtMTsgIC8qIHBvc3NpYmx5IHVuaW5pdGlhbGl6ZWQgb24gcHJpbnRmIGZhciBiZWxvdyAqLwogCi0gIC8qIHdpdGggbGlua3MgbGlrZSBmZGRpLCBvbmUgY2FuIHJlY3YgPiAzMiBiaXRzIHdvcnRoIG9mIGJ5dGVzICovCi0gIC8qIGR1cmluZyBhIHRlc3QuLi4gOy0pIGF0IHNvbWUgcG9pbnQsIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlY29tZSBhICovCi0gIC8qIDY0Yml0IGludGVncmFsIHR5cGUsIGJ1dCB0aG9zZSBhcmUgbm90IGVudGlyZWx5IGNvbW1vbiB5ZXQgKi8KKyAgLyogd2l0aCBsaW5rcyBsaWtlIGZkZGksIG9uZSBjYW4gcmVjdiA+IDMyIGJpdHMgd29ydGggb2YgYnl0ZXMKKyAgICAgZHVyaW5nIGEgdGVzdC4uLiA7LSkgYXQgc29tZSBwb2ludCwgdGhpcyBzaG91bGQgcHJvYmFibHkgYmVjb21lIGEKKyAgICAgNjRiaXQgaW50ZWdyYWwgdHlwZSwgYnV0IHRob3NlIGFyZSBub3QgZW50aXJlbHkgY29tbW9uIHlldC4gIG9mCisgICAgIGNvdXJzZSwgdGltZSBwYXNzZXMgYW5kIHRoZXkgZG8gYmVjb21lIGNvbW1vbi4KKyAqLwogICBkb3VibGUJYnl0ZXNfc2VudCA9IDAuMDsKKworI2lmIGRlZmluZWQoV0lOMzIpICYmIChfTVNDX1ZFUiA8IDEyMDApCisgIF9faW50NjQgbG9jYWxfYnl0ZXNfcmVjdmQgPSAwOworI2Vsc2UKICAgdW5zaWduZWQgbG9uZyBsb25nIGxvY2FsX2J5dGVzX3JlY3ZkID0gMDsKKyNlbmRpZgogCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CkBAIC0yMDA5LDIxICsyNDk0LDIxIEBACiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKIAogICBkb3VibGUJdGhydXB1dDsKLSAgCisKICAgc3RydWN0IGFkZHJpbmZvICpyZW1vdGVfcmVzOwogICBzdHJ1Y3QgYWRkcmluZm8gKmxvY2FsX3JlczsKLSAgCisKICAgc3RydWN0CXRjcF9tYWVydHNfcmVxdWVzdF9zdHJ1Y3QJKnRjcF9tYWVydHNfcmVxdWVzdDsKICAgc3RydWN0CXRjcF9tYWVydHNfcmVzcG9uc2Vfc3RydWN0CSp0Y3BfbWFlcnRzX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX21hZXJ0c19yZXN1bHRzX3N0cnVjdAkqdGNwX21hZXJ0c19yZXN1bHQ7Ci0gIAotICB0Y3BfbWFlcnRzX3JlcXVlc3QgID0gCisKKyAgdGNwX21hZXJ0c19yZXF1ZXN0ICA9CiAgICAgKHN0cnVjdCB0Y3BfbWFlcnRzX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICB0Y3BfbWFlcnRzX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IHRjcF9tYWVydHNfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgdGNwX21hZXJ0c19yZXN1bHQgICA9IAorICB0Y3BfbWFlcnRzX3Jlc3VsdCAgID0KICAgICAoc3RydWN0IHRjcF9tYWVydHNfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAgICAgdGltZV9oaXN0ID0gSElTVF9uZXcoKTsKQEAgLTIwMzMsMTQgKzI1MTgsMTQgQEAKICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIGNvbXBsZXRlX2FkZHJpbmZvcygmcmVtb3RlX3JlcywKIAkJICAgICAmbG9jYWxfcmVzLAogCQkgICAgIHJlbW90ZV9ob3N0LAogCQkgICAgIFNPQ0tfU1RSRUFNLAogCQkgICAgIElQUFJPVE9fVENQLAogCQkgICAgIDApOwotICAKKwogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJUQ1AgTUFFUlRTIFRFU1QiLGxvY2FsX3JlcyxyZW1vdGVfcmVzKTsKICAgfQpAQCAtMjA2MSwxOSArMjU0NiwxOSBAQAogCiAgICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycy4gd2UgaGF2ZSB0byByZW1lbWJlciB0aGF0IHdlIG1pZ2h0IGJlICovCiAgICAgLyogZ29pbmcgdGhyb3VnaCB0aGUgbG9vcCBtb3JlIHRoYW4gb25jZS4gKi8KLSAgICAKKwogICAgIG51bW1lc3NhZ2VzICAgID0JMDsKICAgICBieXRlc19zZW50ICAgICA9CTAuMDsKICAgICB0aW1lc191cCAgICAgICA9IAkwOwotICAgIAorCiAgICAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICByZWN2X3NvY2tldCA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAgIAorCiAgICAgaWYgKHJlY3Zfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF90Y3BfbWFlcnRzOiB0Y3Agc3RyZWFtIGRhdGEgc29ja2V0Iik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF90Y3BfbWFlcnRzOiByZWN2X3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgICAgfQpAQCAtMjEwNSw3ICsyNTkwLDcgQEAKICAgICAgIHJlY3Zfd2lkdGggPSAobHNyX3NpemUvcmVjdl9zaXplKSArIDE7CiAgICAgICBpZiAocmVjdl93aWR0aCA9PSAxKSByZWN2X3dpZHRoKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlY3ZfcmluZyA9PSBOVUxMKSB7CiAgICAgICAvKiBvbmx5IGFsbG9jYXRlIHRoZSByZWN2IHJpbmcgb25jZS4gdGhpcyBpcyBhIG5ldHdvcmtpbmcgdGVzdCwgKi8KICAgICAgIC8qIG5vdCBhIG1lbW9yeSBhbGxvY2F0aW9uIHRlc3QuIHRoaXMgd2F5LCB3ZSBkbyBub3QgbmVlZCBhICovCkBAIC0yMTIzLDExICsyNjA4LDExIEBACiAgICAgLyogY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUgKi8KICAgICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAgIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiAqLwotICAgIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIW5vX2NvbnRyb2wpIHsKICAgICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZQogCSBzb2NrZXQgcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZQpAQCAtMjE2NSw5ICsyNjUwLDkgQEAKIAlmcHJpbnRmKHdoZXJlLAogCQkibmV0cGVyZjogc2VuZF90Y3BfbWFlcnRzOiByZXF1ZXN0aW5nIFRDUCBtYWVydHMgdGVzdFxuIik7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgc2VuZF9yZXF1ZXN0KCk7Ci0gICAgICAKKwogICAgICAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudAogCSBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjawogCSBpbnRvIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4KQEAgLTIxNzgsOSArMjY2Myw5IEBACiAJIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodCBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMKIAkgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcyBiZWluZyBzZW50IGZvciB0aGUgVENQCiAJIHRlc3RzLiAgKi8KLSAgICAgIAorCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKIAlpZiAoZGVidWcpCiAJICBmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTIxOTAsNyArMjY3NSw3IEBACiAJcmVtb3RlX2NwdV91c2FnZT0JdGNwX21hZXJ0c19yZXNwb25zZS0+bWVhc3VyZV9jcHU7CiAJcmVtb3RlX2NwdV9yYXRlID0gdGNwX21hZXJ0c19yZXNwb25zZS0+Y3B1X3JhdGU7CiAJc2VuZF9zaXplICAgICAgID0gdGNwX21hZXJ0c19yZXNwb25zZS0+c2VuZF9zaXplOwotCQorCiAJLyogd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIHBvcnQgbnVtYmVyIGlzIGluCiAJIG5ldHdvcmsgb3JkZXIgKi8KICAgICAgIHNldF9wb3J0X251bWJlcihyZW1vdGVfcmVzLApAQCAtMjIwNSwzMyArMjY5MCw0MyBAQAogCQluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAJcGVycm9yKCIiKTsKIAlmZmx1c2god2hlcmUpOwotCQorCiAJZXhpdCgxKTsKICAgICAgIH0KICAgICB9CiAKICNpZmRlZiBXQU5UX0RFTU8KLSAgICBERU1PX1NUUkVBTV9TRVRVUChsc3Jfc2l6ZSxyc3Nfc2l6ZSkKKyAgICBkZW1vX3N0cmVhbV9zZXR1cChsc3Jfc2l6ZSxyc3Nfc2l6ZSk7CiAjZW5kaWYKIAogICAgIC8qQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0ICAqLwotICAgIGlmIChjb25uZWN0KHJlY3Zfc29ja2V0LCAKKyAgICBpZiAoY29ubmVjdChyZWN2X3NvY2tldCwKIAkJcmVtb3RlX3Jlcy0+YWlfYWRkciwKIAkJcmVtb3RlX3Jlcy0+YWlfYWRkcmxlbikgPT0gSU5WQUxJRF9TT0NLRVQpewogICAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX3RjcF9tYWVydHM6IGRhdGEgc29ja2V0IGNvbm5lY3QgZmFpbGVkIik7CiAgICAgICBleGl0KDEpOwogICAgIH0KIAorI2lmZGVmIFdJTjMyCisgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgIC8qIFdpbmRvd3Mtc3BlY2lmaWMgd2F5IEkgY2FuIGZpbmQgdG8gZm9yY2UgdGhlIHdpbnNvY2sgY2FsbHMgdG8gKi8KKyAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLworICB3aW5fa2x1ZGdlX3NvY2tldCA9IHJlY3Zfc29ja2V0OworI2VuZGlmIC8qIFdJTjMyICovCisKICAgICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciAqLwogICAgIC8qIHRoZSBjb25uZWN0IHdvdWxkIGhhdmUgZmFpbGVkLCBvciB0aGUgcHJldmlvdXMgcmVzcG9uc2Ugd291bGQgKi8KICAgICAvKiBoYXZlIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlICovCiAgICAgLyogZXh0cmEgIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsICovCiAgICAgLyogd2UnbGwgc2VlIGl0IGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nICovCi0gICAgLyogZGF0YS4gKi8gCi0gICAgCisgICAgLyogZGF0YS4gKi8KKwogICAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgbWFlcnRzIHRlc3QsIHRoZXkgY2FuIGJlICovCiAgICAgLyogZWl0aGVyIHRpbWUgb3IgYnl0ZS1jb3VudCBiYXNlZC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICAgIHRpbWVzX3VwID0gMDsKQEAgLTIyNTQsMTggKzI3NDksMTggQEAKICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAvKiBUaGUgdGVzdGVyIHdhbnRlZCB0byByZWN2IGEgbnVtYmVyIG9mIGJ5dGVzLiB3ZSBkb24ndCBkbyB0aGF0IAorICAgICAgLyogVGhlIHRlc3RlciB3YW50ZWQgdG8gcmVjdiBhIG51bWJlciBvZiBieXRlcy4gd2UgZG9uJ3QgZG8gdGhhdAogCSBpbiBhIFRDUF9NQUVSVFMgdGVzdC4gc29ycnkuIHJhaiAyMDAyLTA2LTIxICovCiAgICAgICBwcmludGYoIm5ldHBlcmY6IHNlbmRfdGNwX21hZXJ0czogdGVzdCBtdXN0IGJlIHRpbWVkXG4iKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAgIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAgIAorCiAgICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7Ci0gICAgCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgIElOVEVSVkFMU19JTklUKCk7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KQEAgLTIyNzQsNyArMjc2OSw3IEBACiAKICNpZmRlZiBXQU5UX0RFTU8KICAgICBpZiAoZGVtb19tb2RlKSB7Ci0gICAgICBISVNUX3RpbWVzdGFtcChkZW1vX29uZV9wdHIpOworICAgICAgZGVtb19maXJzdF90aW1lc3RhbXAoKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMjI5Miw3ICsyNzg3LDcgQEAKICAgICAgIEhJU1RfdGltZXN0YW1wKCZ0aW1lX29uZSk7CiAgICAgfQogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCi0gICAgCisKICAgICB3aGlsZSAoKCF0aW1lc191cCkgJiYgKGxlbj1yZWN2KHJlY3Zfc29ja2V0LAogCQkJCSAgICByZWN2X3JpbmctPmJ1ZmZlcl9wdHIsCiAJCQkJICAgIHJlY3Zfc2l6ZSwKQEAgLTIzMDQsNyArMjc5OSw3IEBACiAJSElTVF90aW1lc3RhbXAoJnRpbWVfdHdvKTsKIAlISVNUX2FkZCh0aW1lX2hpc3QsZGVsdGFfbWljcm8oJnRpbWVfb25lLCZ0aW1lX3R3bykpOwogICAgICAgfQotI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovICAgICAgCisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogI2lmZGVmIERJUlRZCiAgICAgICBhY2Nlc3NfYnVmZmVyKHJlY3ZfcmluZy0+YnVmZmVyX3B0ciwKQEAgLTIzMTQsMTkgKzI4MDksMTkgQEAKICNlbmRpZiAvKiBESVJUWSAqLwogCiAjaWZkZWYgV0FOVF9ERU1PCi0gICAgICBERU1PX1NUUkVBTV9JTlRFUlZBTChsZW4pOworICAgICAgZGVtb19zdHJlYW1faW50ZXJ2YWwobGVuKTsKICNlbmRpZgogCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMgICAgICAKKyNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgICAgSU5URVJWQUxTX1dBSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgICAgCisKICAgICAgIC8qIG5vdyB3ZSB3YW50IHRvIG1vdmUgb3VyIHBvaW50ZXIgdG8gdGhlIG5leHQgcG9zaXRpb24gaW4gdGhlICovCiAgICAgICAvKiBkYXRhIGJ1ZmZlci4uLndlIG1heSBhbHNvIHdhbnQgdG8gd3JhcCBiYWNrIHRvIHRoZSAiYmVnaW5uaW5nIiAqLwogICAgICAgLyogb2YgdGhlIGJ1ZmZlcnNwYWNlLCBzbyB3ZSB3aWxsIG1vZCB0aGUgbnVtYmVyIG9mIG1lc3NhZ2VzIHNlbnQgKi8KICAgICAgIC8qIGJ5IHRoZSByZWN2IHdpZHRoLCBhbmQgdXNlIHRoYXQgdG8gY2FsY3VsYXRlIHRoZSBvZmZzZXQgdG8gYWRkICovCiAgICAgICAvKiB0byB0aGUgYmFzZSBwb2ludGVyLiAqLwotICAgICAgbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCisgICAgICBudW1tZXNzYWdlcysrOwogICAgICAgcmVjdl9yaW5nID0gcmVjdl9yaW5nLT5uZXh0OwogICAgICAgaWYgKGJ5dGVzX3JlbWFpbmluZykgewogCWJ5dGVzX3JlbWFpbmluZyAtPSBsZW47CkBAIC0yMzQxLDcgKzI4MzYsNyBAQAogCUhJU1RfdGltZXN0YW1wKCZ0aW1lX29uZSk7CiAgICAgICB9CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KLSAgICAKKwogICAgIH0KIAogICAgIC8qIGFuIEVJTlRSIGlzIHRvIGJlIGV4cGVjdGVkIHdoZW4gdGhpcyBpcyBhIG5vX2NvbnRyb2wgdGVzdCAqLwpAQCAtMjM1MCwxMyArMjg0NSwxMyBAQAogICAgICAgcHJpbnRmKCJsZW4gd2FzICVkXG4iLGxlbik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIC8qIGlmIHdlIGdldCBoZXJlLCBpdCBtdXN0IG1lYW4gd2UgaGFkIGEgcmVjdiByZXR1cm4gb2YgMCBiZWZvcmUKICAgICAgICB0aGUgd2F0Y2hkb2cgdGltZXIgZXhwaXJlZCwgb3IgdGhlIHdhdGNoZG9nIHRpbWVyIGV4cGlyZWQgYW5kCiAgICAgICAgdGhpcyB3YXMgYSBub19jb250cm9sIHRlc3QgKi8KIAogICAgIC8qIFRoZSB0ZXN0IGlzIG92ZXIuIEZsdXNoIHRoZSBidWZmZXJzIHRvIHRoZSByZW1vdGUgZW5kLiBXZSBkbyBhCi0gICAgICAgZ3JhY2VmdWwgcmVsZWFzZSB0byB0ZWxsIHRoZSAgcmVtb3RlIHdlIGhhdmUgYWxsIHRoZSBkYXRhLiAqLyAgCisgICAgICAgZ3JhY2VmdWwgcmVsZWFzZSB0byB0ZWxsIHRoZSAgcmVtb3RlIHdlIGhhdmUgYWxsIHRoZSBkYXRhLiAqLwogCiAgICAgLyogYnV0IGZpcnN0LCBpZiB0aGUgdmVyYm9zaXR5IGlzIGdyZWF0ZXIgdGhhbiAxLCBmaW5kLW91dCB3aGF0ICovCiAgICAgLyogdGhlIFRDUCBtYXhpbXVtIHNlZ21lbnRfc2l6ZSB3YXMgKGlmIHBvc3NpYmxlKSAqLwpAQCAtMjM2NCwyMyArMjg1OSwyOSBAQAogICAgICAgdGNwX21zcyA9IC0xOwogICAgICAgZ2V0X3RjcF9pbmZvKHJlY3Zfc29ja2V0LCZ0Y3BfbXNzKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2h1dGRvd24ocmVjdl9zb2NrZXQsU0hVVF9XUikgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IGNhbm5vdCBzaHV0ZG93biB0Y3AgbWFlcnRzIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9CiAKICAgICBzdG9wX3RpbWVyKCk7Ci0gICAgCisJCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyNpZmRlZiBXSU4zMgorICAgIHN0b3BfaXRpbWVyKCk7CisjZW5kaWYKKyNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLworCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGxvY2FsIGVsYXBzZWQgdGltZSBmb3IgdGhlCiAgICAgICAgdGVzdCwgYW5kIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1Ci0gICAgICAgdXRpbGl6YXRpb24gKi8gCi0gICAgCisgICAgICAgdXRpbGl6YXRpb24gKi8KKwogICAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyAqLwogCQkJCQkJLyogbWVhc3VyZWQgYW5kIGhvdyAqLwogCQkJCQkJLyogbG9uZyBkaWQgd2UgcmVhbGx5ICovCiAJCQkJCQkvKiBydW4/ICovCi0gICAgCisKICAgICAvKiB3ZSBhcmUgZmluaXNoZWQgd2l0aCB0aGUgc29ja2V0LCBzbyBjbG9zZSBpdCB0byBwcmV2ZW50IGhpdHRpbmcgKi8KICAgICAvKiB0aGUgbGltaXQgb24gbWF4aW11bSBvcGVuIGZpbGVzLiAqLwogCkBAIC0yMzkxLDcgKzI4OTIsNyBAQAogICAgICAgICAgY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nCiAgICAgICAgICB0aGluZ3MuIElmIGl0IHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzCiAgICAgICAgICB2YWx1ZXMuICovCi0gICAgCisKICAgICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKIAlpZiAoZGVidWcpCkBAIC0yNDA0LDEwICsyOTA1LDEwIEBACiAJCW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKIAlwZXJyb3IoIiIpOwogCWZmbHVzaCh3aGVyZSk7Ci0JCisKIAlleGl0KDEpOwogICAgICAgfQotICAgICAgCisKICAgICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUKIAkgZnV0dXJlLCB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQKIAkgbWVhc3VyZWQgYnkgdGhlIHJlbW90ZSwgYnV0IGl0IHNob3VsZCBiZSB0aGUgY2FzZSB0aGF0IGZvciBhCkBAIC0yNDE3LDcgKzI5MTgsNyBAQAogCSBhbmQgaWYgaXQgd2FzIGJ5IGJ5dGVzLCB0aGUgdXNlciBtYXkgaGF2ZSBzcGVjaWZpZWQgYSBudW1iZXIKIAkgb2YgYnl0ZXMgdGhhdCB3YXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgcmVjdl9zaXplLCBzbyB3ZQogCSByZWFsbHkgZGlkbid0IHJlY3Ygd2hhdCBoZSBhc2tlZCBmb3IgOy0pICovCi0gICAgCisKICAgICAgIGJ5dGVzX3NlbnQJPSBudG9oZCh0Y3BfbWFlcnRzX3Jlc3VsdC0+Ynl0ZXNfc2VudCk7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMjQzNCw3ICsyOTM1LDcgQEAKICAgICAgIC8qIHRoZXJlIHdhcyBubyBpZGxlIGNvdW50ZXIgaW4gdGhlIGtlcm5lbChzKS4gV2UgbmVlZCB0byBtYWtlICovCiAgICAgICAvKiBhIG5vdGUgb2YgdGhpcyBmb3IgdGhlIHVzZXIncyBiZW5lZml0Li4uKi8KICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKLQkKKwogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IGNhbGNfY3B1X3V0aWwoMC4wKTsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTI0NDUsOSArMjk0Niw5IEBACiAJbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7Ci0JCisKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uCT0gdGNwX21hZXJ0c19yZXN1bHQtPmNwdV91dGlsOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTI0NTgsNyArMjk1OSw3IEBACiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IChmbG9hdCkgLTEuMDsKIAlyZW1vdGVfc2VydmljZV9kZW1hbmQgID0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgIH0gICAgCisgICAgfQogICAgIGVsc2UgewogICAgICAgLyogd2Ugd2VyZSBub3QgbWVhc3VyaW5nIGNwdSwgZm9yIHRoZSBjb25maWRlbmNlIHN0dWZmLCB3ZSAqLwogICAgICAgLyogc2hvdWxkIG1ha2UgaXQgLTEuMCAqLwpAQCAtMjQ3OSw4ICsyOTgwLDggQEAKIAkJCSByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQkJIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7Ci0gICAgCi0gICAgCisKKwogICAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uKys7CiAgIH0KIApAQCAtMjUxOCw3ICszMDE5LDcgQEAKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKGNwdV9tZXRob2QpOwogICAgIHJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QodGNwX21hZXJ0c19yZXN1bHQtPmNwdV9tZXRob2QpOwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC0yNTI2LDcgKzMwMjcsNyBAQAogCQljcHVfZm10XzAsCiAJCWxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQlsb2NhbF9jcHVfbWV0aG9kLAotCQkoKHByaW50X2hlYWRlcnMpIHx8IAorCQkoKHByaW50X2hlYWRlcnMpIHx8CiAJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIH0KICAgICAgIGVsc2UgewpAQCAtMjUzNCw3ICszMDM1LDcgQEAKIAkJY3B1X2ZtdF8wLAogCQlyZW1vdGVfc2VydmljZV9kZW1hbmQsCiAJCXJlbW90ZV9jcHVfbWV0aG9kLAotCQkoKHByaW50X2hlYWRlcnMpIHx8IAorCQkoKHByaW50X2hlYWRlcnMpIHx8CiAJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMjU0Nyw3ICszMDQ4LDcgQEAKIAkJbG9jYWxfY3B1X21ldGhvZCwKIAkJcmVtb3RlX2NwdV9tZXRob2QpOwogICAgICAgfQotICAgIAorCiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIGNwdV9mbXRfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCiAJICAgICAgcnNyX3NpemUsCQkgICAgICAgIC8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KQEAgLTI1NTksMjAgKzMwNjAsMjAgQEAKIAkgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAkvKiByZW1vdGUgY3B1ICovCiAJICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQsCS8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kICovCiAJICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kLAkvKiByZW1vdGUgc2VydmljZSBkZW1hbmQgKi8KLQkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8IAorCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKIAkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZSB7CiAgICAgLyogVGhlIHRlc3RlciBkaWQgbm90IHdpc2ggdG8gbWVhc3VyZSBzZXJ2aWNlIGRlbWFuZC4gKi8KLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICB0cHV0X2ZtdF8wLAogCSAgICAgIHRocnVwdXQsCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAxOgpAQCAtMjU4NywyNyArMzA4OCwyNyBAQAogCSAgICAgIHNlbmRfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZWN2cyAqLwogCSAgICAgIGVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLwogCSAgICAgIHRocnVwdXQsICAgICAgICAgICAgICAgICAgLyogaG93IGZhc3QgZGlkIGl0IGdvICovCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFRDUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAKKwogICAgIC8qIHRoaXMgc3R1ZmYgbmVlZHMgdG8gYmUgd29ya2VkLW91dCBpbiB0aGUgcHJlc2VuY2Ugb2YgY29uZmlkZW5jZSAqLwogICAgIC8qIGludGVydmFscyBhbmQgbXVsdGlwbGUgaXRlcmF0aW9ucyBvZiB0aGUgdGVzdC4uLiByYWogMTEvOTQgKi8KLSAKKwogICAgIGZwcmludGYod2hlcmUsCiAJICAgIGtzaW5rX2ZtdCwKIAkgICAgIkJ5dGVzIiwKQEAgLTI2MzIsNyArMzEzMywxOTggQEAKICAgICBISVNUX3JlcG9ydCh0aW1lX2hpc3QpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAgIH0KLSAgCisKK30KKyNlbmRpZiAvKiBXQU5UX01JR1JBVElPTiAqLworDAorCisvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgVENQX01TUyB0ZXN0LiAgQWxsIGl0IGRvZXMgaXMgcHJldGVuZAorICAgdG8gYmUgYSBUQ1BfU1RSRUFNIHRlc3QgYW5kIHJlcG9ydCB0aGUgVENQX01TUyBmb3IgdGhlIGRhdGEKKyAgIGNvbm5lY3Rpb24uICBObyBhY3R1YWwgZGF0YSBpcyB0cmFuc2ZlcnJlZC4gcmFqIDIwMDctMTEtMDcKKyovCit2b2lkCitzZW5kX3RjcF9tc3MoY2hhciByZW1vdGVfaG9zdFtdKQoreworCisgIGNoYXIgKm1zc190aXRsZSA9ICJcCitNYXhpbXVtXG5cCitTZWdtZW50XG5cCitTaXplIChieXRlcylcblxuIjsKKworICBjaGFyICptc3NfZm10XzAgPQorICAgICIlZCAlc1xuIjsKKworICBTT0NLRVQgc2VuZF9zb2NrZXQ7CisgIGludCB0Y3BfbXNzID0gLTE7ICAvKiBwb3NzaWJseSB1bmluaXRpYWxpemVkIG9uIHByaW50ZiBmYXIgYmVsb3cgKi8KKworICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CisgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOworCisgIHN0cnVjdAl0Y3Bfc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSp0Y3Bfc3RyZWFtX3JlcXVlc3Q7CisgIHN0cnVjdAl0Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX3N0cmVhbV9yZXNwb25zZTsKKyAgc3RydWN0CXRjcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnRjcF9zdHJlYW1fcmVzdWx0OworCisgIHRjcF9zdHJlYW1fcmVxdWVzdCAgPQorICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKKyAgdGNwX3N0cmVhbV9yZXNwb25zZSA9CisgICAgKHN0cnVjdCB0Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CisgIHRjcF9zdHJlYW1fcmVzdWx0ICAgPQorICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CisKKyAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZSAqLworICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCisgIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCisgIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KKworICAvKiBjb21wbGV0ZV9hZGRyaW5mb3Mgd2lsbCBlaXRoZXIgc3VjY2VkZSBvciBleGl0IHRoZSBwcm9jZXNzICovCisgIGNvbXBsZXRlX2FkZHJpbmZvcygmcmVtb3RlX3JlcywKKwkJICAgICAmbG9jYWxfcmVzLAorCQkgICAgIHJlbW90ZV9ob3N0LAorCQkgICAgIFNPQ0tfU1RSRUFNLAorCQkgICAgIElQUFJPVE9fVENQLAorCQkgICAgIDApOworCisgIGlmICggcHJpbnRfaGVhZGVycyApIHsKKyAgICBwcmludF90b3BfdGVzdF9oZWFkZXIoIlRDUCBNU1MgVEVTVCIsbG9jYWxfcmVzLHJlbW90ZV9yZXMpOworICB9CisKKyAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKKworICBpZiAoc2VuZF9zb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpeworICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF90Y3Bfc3RyZWFtOiB0Y3Agc3RyZWFtIGRhdGEgc29ja2V0Iik7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsInNlbmRfdGNwX3N0cmVhbTogc2VuZF9zb2NrZXQgb2J0YWluZWQuLi5cbiIpOworICB9CisKKworICBpZiAoIW5vX2NvbnRyb2wpIHsKKyAgICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUKKyAgICAgICBzb2NrZXQgcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZQorICAgICAgIHJlYXNvbiBmb3IgYWxsIHRoZSB2YWx1ZXMgYmVpbmcgcGFzc2VkIGluIHRoZSBzZXR1cAorICAgICAgIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCBub3Qgc3BlY2lmeSBhbnkgb2YgdGhlIHBhcmFtZXRlcnMsCisgICAgICAgdGhleSB3aWxsIGJlIHBhc3NlZCBhcyAwLCB3aGljaCB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUKKyAgICAgICB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IHNob3VsZCBiZQorICAgICAgIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsIGRlZmF1bHQgdG8gMSwgd2hpY2gKKyAgICAgICB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KKworICAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZSA9CURPX1RDUF9TVFJFQU07CisgICAgdGNwX3N0cmVhbV9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemVfcmVxOworICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+cmVjdl9idWZfc2l6ZQk9CXJzcl9zaXplX3JlcTsKKyAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPnJlY2VpdmVfc2l6ZQk9CXJlY3Zfc2l6ZTsKKyAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPm5vX2RlbGF5CT0JcmVtX25vZGVsYXk7CisgICAgdGNwX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudAk9CXJlbW90ZV9yZWN2X2FsaWduOworICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+cmVjdl9vZmZzZXQJPQlyZW1vdGVfcmVjdl9vZmZzZXQ7CisgICAgdGNwX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdQk9CXJlbW90ZV9jcHVfdXNhZ2U7CisgICAgdGNwX3N0cmVhbV9yZXF1ZXN0LT5jcHVfcmF0ZQk9CXJlbW90ZV9jcHVfcmF0ZTsKKyAgICBpZiAodGVzdF90aW1lKSB7CisgICAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPnRlc3RfbGVuZ3RoCT0JdGVzdF90aW1lOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+dGVzdF9sZW5ndGgJPQl0ZXN0X2J5dGVzOworICAgIH0KKyAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPnNvX3JjdmF2b2lkCT0JcmVtX3JjdmF2b2lkOworICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+c29fc25kYXZvaWQJPQlyZW1fc25kYXZvaWQ7CisjaWZkZWYgRElSVFkKKyAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPmRpcnR5X2NvdW50ICAgICA9ICAgICAgIHJlbV9kaXJ0eV9jb3VudDsKKyAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPmNsZWFuX2NvdW50ICAgICA9ICAgICAgIHJlbV9jbGVhbl9jb3VudDsKKyNlbmRpZiAvKiBESVJUWSAqLworICAgIHRjcF9zdHJlYW1fcmVxdWVzdC0+cG9ydCAgICAgICAgICAgID0gICAgYXRvaShyZW1vdGVfZGF0YV9wb3J0KTsKKyAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPmlwZmFtaWx5ID0gYWZfdG9fbmYocmVtb3RlX3Jlcy0+YWlfZmFtaWx5KTsKKyAgICBpZiAoZGVidWcgPiAxKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJuZXRwZXJmOiBzZW5kX3RjcF9tc3M6IHJlcXVlc3RpbmcgVENQIHN0cmVhbSB0ZXN0XG4iKTsKKyAgICB9CisKKyAgICBzZW5kX3JlcXVlc3QoKTsKKworICAgIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQKKyAgICAgICBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjaworICAgICAgIGludG8gdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLgorICAgICAgIFRoZSByZW1vdGUgd2lsbCBoYXZlIGNhbGlicmF0ZWQgQ1BVIGlmIG5lY2Vzc2FyeSwgYW5kIHdpbGwKKyAgICAgICBoYXZlIGRvbmUgYWxsIHRoZSBuZWVkZWQgc2V0LXVwIHdlIHdpbGwgaGF2ZSBjYWxpYnJhdGVkIHRoZQorICAgICAgIGNwdSBsb2NhbGx5IGJlZm9yZSBzZW5kaW5nIHRoZSByZXF1ZXN0LCBhbmQgd2lsbCBncmFiIHRoZQorICAgICAgIGNvdW50ZXIgdmFsdWUgcmlnaHQgYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZQorICAgICAgIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodCBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMKKyAgICAgICB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzIGJlaW5nIHNlbnQgZm9yIHRoZSBUQ1AKKyAgICAgICB0ZXN0cy4gICovCisKKyAgICByZWN2X3Jlc3BvbnNlKCk7CisKKyAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CisgICAgICBpZiAoZGVidWcpCisJZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CisgICAgICByc3Jfc2l6ZQkgICAgICA9CXRjcF9zdHJlYW1fcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemU7CisgICAgICByc3Nfc2l6ZQkgICAgICA9CXRjcF9zdHJlYW1fcmVzcG9uc2UtPnNlbmRfYnVmX3NpemU7CisgICAgICByZW1fbm9kZWxheSAgICAgPQl0Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5ub19kZWxheTsKKyAgICAgIHJlbW90ZV9jcHVfdXNhZ2U9CXRjcF9zdHJlYW1fcmVzcG9uc2UtPm1lYXN1cmVfY3B1OworICAgICAgcmVtb3RlX2NwdV9yYXRlID0gdGNwX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGU7CisKKyAgICAgIC8qIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBwb3J0IG51bWJlciBpcyBpbgorCSBuZXR3b3JrIG9yZGVyICovCisgICAgICBzZXRfcG9ydF9udW1iZXIocmVtb3RlX3JlcywKKwkJICAgICAgKHNob3J0KXRjcF9zdHJlYW1fcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIpOworCisgICAgICByZW1fcmN2YXZvaWQJPSB0Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5zb19yY3Zhdm9pZDsKKyAgICAgIHJlbV9zbmRhdm9pZAk9IHRjcF9zdHJlYW1fcmVzcG9uc2UtPnNvX3NuZGF2b2lkOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJuZXRwZXJmOiByZW1vdGUgZXJyb3IgJWQiLAorCSAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKKyAgICAgIHBlcnJvcigiIik7CisgICAgICBmZmx1c2god2hlcmUpOworCisgICAgICBleGl0KDEpOworICAgIH0KKyAgfQorCisgIC8qQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0ICAqLworICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwKKwkgICAgICByZW1vdGVfcmVzLT5haV9hZGRyLAorCSAgICAgIHJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pID09IElOVkFMSURfU09DS0VUKXsKKyAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfdGNwX21zczogZGF0YSBzb2NrZXQgY29ubmVjdCBmYWlsZWQiKTsKKyAgICBleGl0KDEpOworICAgIH0KKworCisgIC8qIGZpbmQtb3V0IHdoYXQgdGhlIFRDUCBtYXhpbXVtIHNlZ21lbnRfc2l6ZSB3YXMgKGlmIHBvc3NpYmxlKSAqLworICB0Y3BfbXNzID0gLTE7CisgIGdldF90Y3BfaW5mbyhzZW5kX3NvY2tldCwmdGNwX21zcyk7CisKKyAgLyoganVzdCBnbyBhaGVhZCBhbmQgY2xvc2UgdGhlIHNvY2tldCwgdGhlIHJlbW90ZSBzaG91bGQgZmlndXJlIGl0CisgICAgIG91dCAqLworICBjbG9zZShzZW5kX3NvY2tldCk7CisKKyAgLyogc3RhdGlzdGljcz8gd2UgZG9uJ3QgbmVlZCBubyBzdGlua2luZyBzdGF0aXN0aWNzICovCisKKworICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CisgICAgY2FzZSAwOgorICAgICAgZnByaW50Zih3aGVyZSwKKwkgICAgICBtc3NfZm10XzAsCisJICAgICAgdGNwX21zcywKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CisJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgIGNhc2UgMjoKKyAgICAgIGlmIChwcmludF9oZWFkZXJzKSB7CisJCWZwcmludGYod2hlcmUsIiVzIixtc3NfdGl0bGUpOworICAgICAgfQorICAgICAgZnByaW50Zih3aGVyZSwKKwkgICAgICBtc3NfZm10XzAsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLworCSAgICAgIHRjcF9tc3MsCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAorCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworCiB9CiAKIAwKQEAgLTI5MzksNyArMzYzMSw3IEBACiAgICAgICAgIH0KIAogI2lmIDAgLyogZGVmIFdBTlRfREVNTyAqLwotICAgICAgICBERU1PX1NUUkVBTV9TRVRVUChsc3Nfc2l6ZSxyc3Jfc2l6ZSkKKyAgICAgICAgZGVtb19zdHJlYW1fc2V0dXAobHNzX3NpemUscnNyX3NpemUpOwogI2VuZGlmCiAKICAgICAgICAgICAgIC8qQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0ICAqLwpAQCAtMjk1MCw2ICszNjQyLDE2IEBACiAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgIH0KIAorI2lmZGVmIFdJTjMyCisgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgIC8qIFdpbmRvd3Mtc3BlY2lmaWMgd2F5IEkgY2FuIGZpbmQgdG8gZm9yY2UgdGhlIHdpbnNvY2sgY2FsbHMgdG8gKi8KKyAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLworICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNlbmRfc29ja2V0OworI2VuZGlmIC8qIFdJTjMyICovCisKICAgICAgICAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgKi8KICAgICAgICAgLyogdGhlIGNvbm5lY3Qgd291bGQgaGF2ZSBmYWlsZWQsIG9yIHRoZSBwcmV2aW91cyByZXNwb25zZSB3b3VsZCAqLwogICAgICAgICAvKiBoYXZlIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlICovCkBAIC0yOTkyLDcgKzM2OTQsNyBAQAogCiAjaWYgMCAvKiBkZWYgV0FOVF9ERU1PICovCiAgICAgICAgIGlmIChkZW1vX21vZGUpIHsKLSAgICAgICAgICAgIEhJU1RfdGltZXN0YW1wKGRlbW9fb25lX3B0cik7CisJICBkZW1vX2ZpcnN0X3RpbWVzdGFtcCgpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMzA4OCw3ICszNzkwLDcgQEAKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogCiAjaWYgMCAvKiBkZWYgV0FOVF9ERU1PICovCi0gICAgICAgICAgICBERU1PX1NUUkVBTV9JTlRFUlZBTChzZW5kX3NpemUpOworICAgICAgICAgICAgZGVtb19zdHJlYW1faW50ZXJ2YWwoc2VuZF9zaXplKTsKICNlbmRpZgogCiAjaWYgMCAvKiBkZWYgV0FOVF9JTlRFUlZBTFMgKi8KQEAgLTMzODYsNTEgKzQwODgsMzMgQEAKIAogDAogCi0jaWYgZGVmaW5lZChIQVZFX1NFTkRGSUxFKSAKKyNpZiBkZWZpbmVkKEhBVkVfU0VOREZJTEUpCiAKLSNpZiBkZWZpbmVkKFFVSUNLX1NFTkRQQVRIKQotCi0vKgotICogYSB0ZW1wb3Jhcnkgc3R1YiBmb3IgdGhlIHNlbmRwYXRoKCkgc3lzdGVtIGNhbGwKLSAqIHdoaWNoIGlzIGRlZmluZWQgJiBpbXBsZW1lbnRlZCBpbiB0aGUga2VybmVsCi0gKiBidXQgd2hpY2ggaGFzIG5vIGxpYmMgc3R1Yi4KLSAqLwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zY2FsbF9kZWZpbmUuaD4KLSNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0KLXNzaXplX3QKLXNlbmRwYXRoKGludCBzLCBjaGFyICpwYXRoLCBvZmZfdCBvZmZzZXQsIHNpemVfdCBuYnl0ZXMsCi0JIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaGR0cmwsIGludCBmbGFncykKLSAgewotICAgIHJldHVybiBzeXNjYWxsKFNZU19zZW5kcGF0aCwgcywgcGF0aCwgb2Zmc2V0LCBuYnl0ZXMsIGhkdHJsLCBmbGFncyk7Ci0gIH0KLSNlbmRpZiAvKiBRVUlDS19TRU5EUEFUSCAqLwogCiAvKiBUaGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgVENQIHVuaWRpcmVjdGlvbmFsIGRhdGEgdHJhbnNmZXIgdGVzdAogICAgKGEuay5hLiBzdHJlYW0pIGZvciB0aGUgc29ja2V0cyBpbnRlcmZhY2UgdXNpbmcgdGhlIHNlbmRmaWxlKCkKICAgIHN5c3RlbSBjYWxsIC0gVENQX1NFTkRGSUxFLiAgSXQgcmVjZWl2ZXMgaXRzICBwYXJhbWV0ZXJzIHZpYSBnbG9iYWwKICAgIHZhcmlhYmxlcyBmcm9tIHRoZSBzaGVsbCBhbmQgd3JpdGVzIGl0cyAgb3V0cHV0IHRvIHRoZSBzdGFuZGFyZAogICAgb3V0cHV0LiBCYXNpY2FsbHksICB0aGlzIGlzIHRoZSBzYW1lIHRlc3QgYXMgdGhlIHNlbmRfdGNwX3N0cmVhbSgpCi0gICBsb2dpYyBhbmQgd2UgZXZlbiB0ZWxsIHRoZSByZW1vdGUgdG8gZG8gYSBUQ1BfU1RSRUFNIHRlc3Qgc2luY2UgZm9yIAorICAgbG9naWMgYW5kIHdlIGV2ZW4gdGVsbCB0aGUgcmVtb3RlIHRvIGRvIGEgVENQX1NUUkVBTSB0ZXN0IHNpbmNlIGZvcgogICAgYWxsIGl0IGtub3dzLCBub3RoaWcgaXMgZGlmZmVyZW50LiAqLwogCi12b2lkIAordm9pZAogc2VuZGZpbGVfdGNwX3N0cmVhbShyZW1vdGVfaG9zdCkKICAgICAgY2hhcglyZW1vdGVfaG9zdFtdOwogewotICAKKwogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKIFJlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXAogU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgXG5cCiBTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICBcblwKIGJ5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgICVzL3NlYyAgXG5cbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzAgPQotICAgICIlNy4yZlxuIjsKLSAgCisgICAgIiU3LjJmICVzXG4iOworCiAgIGNoYXIgKnRwdXRfZm10XzEgPQotICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKKyAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgJTcuMmYgICAlc1xuIjsKIAogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgICAgU2VydmljZSBEZW1hbmRcblwKQEAgLTM0MzksOSArNDEyMyw5IEBACiBieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlLTguOHMvcyAgJSUgJWMgICAgICAlJSAlYyAgICAgIHVzL0tCICAgdXMvS0JcblxuIjsKIAogICBjaGFyICpjcHVfZm10XzAgPQotICAgICIlNi4zZiAlY1xuIjsKKyAgICAiJTYuM2YgJWMgJXNcbiI7CiAgIGNoYXIgKmNwdV9mbXRfMSA9Ci0gICAgIiU2ZCAlNmQgJTZkICAgICUtNi4yZiAgICAgJTcuMmYgICAlLTYuMmYgICAlLTYuMmYgICAlLTYuM2YgICUtNi4zZlxuIjsKKyAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgICAlNy4yZiAgICUtNi4yZiAgICUtNi4yZiAgICUtNi4zZiAgJS02LjNmICVzXG4iOwogCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcblwKIEFsaWdubWVudCAgICAgIE9mZnNldCAgICAgICAgICUtOC44cyAlLTguOHMgICAgU2VuZHMgICAlLTguOHMgUmVjdnNcblwKQEAgLTM0NTYsMTYgKzQxNDAsMTYgQEAKICU2ZFxuIjsKIAogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKLSAgCisKICAgLyogd2hhdCB3ZSB3YW50IGlzIHRvIGhhdmUgYSBidWZmZXIgc3BhY2UgdGhhdCBpcyBhdCBsZWFzdCBvbmUgKi8KICAgLyogc2VuZC1zaXplIGdyZWF0ZXIgdGhhbiBvdXIgc2VuZCB3aW5kb3cuIHRoaXMgd2lsbCBpbnN1cmUgdGhhdCB3ZSAqLwogICAvKiBhcmUgbmV2ZXIgdHJ5aW5nIHRvIHJlLXVzZSBhIGJ1ZmZlciB0aGF0IG1heSBzdGlsbCBiZSBpbiB0aGUgaGFuZHMgKi8KICAgLyogb2YgdGhlIHRyYW5zcG9ydC4gVGhpcyBidWZmZXIgd2lsbCBiZSBtYWxsb2MnZCBhZnRlciB3ZSBoYXZlIGZvdW5kICovCiAgIC8qIHRoZSBzaXplIG9mIHRoZSBsb2NhbCBzZW5jIHNvY2tldCBidWZmZXIuIFdlIHdpbGwgd2FudCB0byBkZWFsICovCiAgIC8qIHdpdGggYWxpZ25tZW50IGFuZCBvZmZzZXQgY29uY2VybnMgYXMgd2VsbC4gKi8KLSAgCi0gIHN0cnVjdCBzZW5kZmlsZV9yaW5nX2VsdCAqc2VuZF9yaW5nOwotICAKKworICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKKwogICBpbnQgbGVuOwogICB1bnNpZ25lZCBpbnQgbnVtbWVzc2FnZXMgPSAwOwogICBTT0NLRVQgc2VuZF9zb2NrZXQ7CkBAIC0zNDc2LDQ2ICs0MTYwLDQ2IEBACiAgIC8qIGR1cmluZyBhIHRlc3QuLi4gOy0pIGF0IHNvbWUgcG9pbnQsIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlY29tZSBhICovCiAgIC8qIDY0Yml0IGludGVncmFsIHR5cGUsIGJ1dCB0aG9zZSBhcmUgbm90IGVudGlyZWx5IGNvbW1vbiB5ZXQgKi8KICAgZG91YmxlCWJ5dGVzX3NlbnQgPSAwLjA7Ci0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKIAogICBkb3VibGUJdGhydXB1dDsKLSAgCisKICAgc3RydWN0ICBhZGRyaW5mbyAqcmVtb3RlX3JlczsKICAgc3RydWN0ICBhZGRyaW5mbyAqbG9jYWxfcmVzOwogICBzdHJ1Y3QJc29ja2FkZHJfaW4Jc2VydmVyOwogCi0jaWYgZGVmaW5lZChfX2xpbnV4KSB8fCBkZWZpbmVkKF9fc3VuX18pCisjaWYgZGVmaW5lZChfX2xpbnV4KSB8fCBkZWZpbmVkKF9fc3VuKQogICBvZmZfdCAgICAgc2NyYXRjaF9vZmZzZXQ7ICAgLyogdGhlIGxpbnV4IHNlbmRmaWxlKCkgY2FsbCB3aWxsIHVwZGF0ZQogCQkJCSB0aGUgb2Zmc2V0IHZhcmlhYmxlLCB3aGljaCBpcwogCQkJCSBzb21ldGhpbmcgd2UgZG8gX25vdF8gd2FudCB0byBoYXBwZW4KIAkJCQkgdG8gdGhlIHZhbHVlIGluIHRoZSBzZW5kX3JpbmchIHNvLCB3ZQogCQkJCSBoYXZlIHRvIHVzZSBhIHNjcmF0Y2ggdmFyaWFibGUuICovCi0jZW5kaWYgLyogX19saW51eCAgfHwgZGVmaW5lZChfX3N1bl9fKSAqLworI2VuZGlmIC8qIF9fbGludXggIHx8IGRlZmluZWQoX19zdW4pICovCiAjaWYgZGVmaW5lZCAoVVNFX09TWCkKICAgIG9mZl90ICAgIHNjcmF0Y2hfbGVuOyAgLyogRGFyd2luIDkueCBuZWVkIGEgdmFsdWUtcmVzdWx0IHBhcmFtZXRlciAgKi8KICNlbmRpZgotI2lmIGRlZmluZWQgKF9fc3VuX18pCi0gICBzaXplX3QgIHNjcmF0Y2hfbGVuOwkvKiB0aGUgc3VuIHNlbmRmaWxldigpIG5lZWRzIGEgcGxhY2UgdG8gCisjaWYgZGVmaW5lZCAoX19zdW4pCisgICBzaXplX3QgIHNjcmF0Y2hfbGVuOwkvKiB0aGUgc3VuIHNlbmRmaWxldigpIG5lZWRzIGEgcGxhY2UgdG8KIAkJCSAgIHRlbGwgdXMgaG93IG1hbnkgYnl0ZXMgd2VyZSB3cml0dGVuLAogCQkJICAgZXZlbiB0aG91Z2ggaXQgYWxzbyByZXR1cm5zIHRoZSB2YWx1ZSAqLwogICAgc2VuZGZpbGV2ZWNfdCBzdjsKLSNlbmRpZiAvKiBfX3N1bl9fICovCi0gIAorI2VuZGlmIC8qIF9fc3VuICovCisKICAgc3RydWN0CXRjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKnRjcF9zdHJlYW1fcmVxdWVzdDsKICAgc3RydWN0CXRjcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSp0Y3Bfc3RyZWFtX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdAkqdGNwX3N0cmVhbV9yZXN1bHQ7CiAKLSAgdGNwX3N0cmVhbV9yZXF1ZXN0ICA9IAorICB0Y3Bfc3RyZWFtX3JlcXVlc3QgID0KICAgICAoc3RydWN0IHRjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9zdHJlYW1fcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB0Y3Bfc3RyZWFtX3Jlc3VsdCAgID0gCisgIHRjcF9zdHJlYW1fcmVzdWx0ICAgPQogICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwpAQCAtMzUyNiwxMCArNDIxMCwxMCBAQAogICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCiAgIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCiAgIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKICAgYnplcm8oKGNoYXIgKikmc2VydmVyLAogCXNpemVvZihzZXJ2ZXIpKTsKLSAgCisKICAgY29tcGxldGVfYWRkcmluZm9zKCZyZW1vdGVfcmVzLAogCQkgICAgICZsb2NhbF9yZXMsCiAJCSAgICAgcmVtb3RlX2hvc3QsCkBAIC0zNTQyLDE2ICs0MjI2LDEzIEBACiAgICAgLyogdGhlIGhlYWRlcnMuIHdlIGtub3cgc29tZSBvZiBpdCBoZXJlLCBidXQgbm90IGFsbCwgc28gd2Ugd2lsbCAqLwogICAgIC8qIG9ubHkgcHJpbnQgdGhlIHRlc3QgdGl0bGUgaGVyZSBhbmQgd2lsbCBwcmludCB0aGUgcmVzdWx0cyAqLwogICAgIC8qIHRpdGxlcyBhZnRlciB0aGUgdGVzdCBpcyBmaW5pc2hlZCAqLwotI2lmZGVmIFFVSUNLX1NFTkRQQVRICi0gICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJUQ1AgU0VORFBBVEggVEVTVCIsbG9jYWxfcmVzLHJlbW90ZV9yZXMpOwotI2Vsc2UKICAgICBwcmludF90b3BfdGVzdF9oZWFkZXIoIlRDUCBTRU5ERklMRSBURVNUIixsb2NhbF9yZXMscmVtb3RlX3Jlcyk7Ci0jZW5kaWYgLyogUVVJQ0tfU0VORFBBVEggKi8KICAgfQorCiAgIHNlbmRfcmluZyA9IE5VTEw7CiAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uID0gMTsKICAgaW5pdF9zdGF0KCk7Ci0gIAorCiAgIC8qIHdlIGhhdmUgYSBncmVhdC1iaWcgd2hpbGUgbG9vcCB3aGljaCBjb250cm9scyB0aGUgbnVtYmVyIG9mIHRpbWVzICovCiAgIC8qIHdlIHJ1biBhIHBhcnRpY3VsYXIgdGVzdC4gdGhpcyBpcyBmb3IgdGhlIGNhbGN1bGF0aW9uIG9mIGEgKi8KICAgLyogY29uZmlkZW5jZSBpbnRlcnZhbCAoSSByZWFsbHkgc2hvdWxkIGhhdmUgc3RheWVkIGF3YWtlIGR1cmluZyAqLwpAQCAtMzU2MSwxNCArNDI0MiwxNCBAQAogCiAgIHdoaWxlICgoKGNvbmZpZGVuY2UgPCAwKSAmJiAoY29uZmlkZW5jZV9pdGVyYXRpb24gPCBpdGVyYXRpb25fbWF4KSkgfHwKIAkgKGNvbmZpZGVuY2VfaXRlcmF0aW9uIDw9IGl0ZXJhdGlvbl9taW4pKSB7Ci0gICAgCisKICAgICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzLiB3ZSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgd2UgbWlnaHQgYmUgKi8KICAgICAvKiBnb2luZyB0aHJvdWdoIHRoZSBsb29wIG1vcmUgdGhhbiBvbmNlLiAqLwotICAgIAorCiAgICAgbnVtbWVzc2FnZXMgICAgPQkwOwogICAgIGJ5dGVzX3NlbnQgICAgID0JMC4wOwogICAgIHRpbWVzX3VwICAgICAgID0gCTA7Ci0gICAgCisKICAgICAvKiBzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICovCiAgICAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKIApAQCAtMzU3NiwxNCArNDI1NywxNCBAQAogICAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kZmlsZV90Y3Bfc3RyZWFtOiB0Y3Agc3RyZWFtIGRhdGEgc29ja2V0Iik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwic2VuZGZpbGVfdGNwX3N0cmVhbTogc2VuZF9zb2NrZXQgb2J0YWluZWQuLi5cbiIpOwogICAgIH0KLSAgICAKKwogI2lmIGRlZmluZWQoVENQX0NPUkspCiAgICAgLyogc2hvdWxkIHRoaXMgZXZlbiBiZSBoZXJlPyE/ICovCi0gICAgaWYgKGxvY190Y3Bjb3JrICE9IDApIHsKKyAgICBpZiAobG9jX3RjcGNvcmsgPiAwKSB7CiAgICAgICAvKiB0aGUgdXNlciB3aXNoZXMgZm9yIHVzIHRvIHNldCBUQ1BfQ09SSyBvbiB0aGUgc29ja2V0ICovCiAgICAgICBpbnQgb25lID0gMTsKICAgICAgIGlmIChzZXRzb2Nrb3B0KHNlbmRfc29ja2V0LApAQCAtMzU5OCw4ICs0Mjc5LDggQEAKIAlmcHJpbnRmKHdoZXJlLCJzZW5kZmlsZV90Y3Bfc3RyZWFtOiB0Y3BfY29yay4uLlxuIik7CiAgICAgICB9CiAgICAgfQotICAgIAotI2VuZGlmIC8qIFRDUF9DT1JLICovICAgIAorCisjZW5kaWYgLyogVENQX0NPUksgKi8KIAogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgZWl0aGVyIHJldHJpZXZlZCB0aGUgc29ja2V0IGJ1ZmZlciBzaXplcywgKi8KICAgICAvKiBvciBoYXZlIHRyaWVkIHRvIHNldCB0aGVtLCBzbyBub3csIHdlIG1heSB3YW50IHRvIHNldCB0aGUgc2VuZCAqLwpAQCAtMzYwOSw3ICs0MjkwLDcgQEAKICAgICAvKiBwYXJ0aWN1bGFyIHJlYXNvbiwganVzdCBhcmJpdHJhcnkuLi4gKi8KIAogICAgIC8qY2hlY2sgZm9yIGZpbGUgc2l6ZS8gbWluIGZpbGUgc2l6ZSBoZXJlPyAgY3JlYXRlIGZpbGUgaGVyZS8gYmFjayBvdXQ/Pz8qLwotICAgIAorCiAgICAgaWYgKHNlbmRfc2l6ZSA9PSAwKSB7CiAgICAgICBpZiAobHNzX3NpemUgPiAwKSB7CiAJc2VuZF9zaXplID0gbHNzX3NpemU7CkBAIC0zNjE4LDcgKzQyOTksNyBAQAogCXNlbmRfc2l6ZSA9IDQwOTY7CiAgICAgICB9CiAgICAgfQotICAgCisKICAgICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHJpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQKICAgICAgICBvZmZzZXQuIG5vdGUgYWxzbyB0aGF0IHdlIGhhdmUgYWxsb2NhdGVkIGEgcXVhbnRpdHkgIG9mIG1lbW9yeQogICAgICAgIHRoYXQgaXMgYXQgbGVhc3Qgb25lIHNlbmQtc2l6ZSBncmVhdGVyIHRoYW4gb3VyIHNvY2tldCAgYnVmZmVyCkBAIC0zNjI2LDM3ICs0MzA3LDM3IEBACiAgICAgICAgYWxsb2NhdGVkIC0gdGhpcyBjYW4gYmUgYSBiaXQgb2YgYSBwcm9ibGVtIHdoZW4gdGhlICBzZW5kX3NpemUKICAgICAgICBpcyBiaWdnZXIgdGhhbiB0aGUgc29ja2V0IHNpemUsIHNvIHdlIG11c3QgY2hlY2suLi4gdGhlICB1c2VyCiAgICAgICAgbWF5IGhhdmUgd2FudGVkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSAid2lkdGgiIG9mIG91ciBzZW5kCi0gICAgICAgYnVmZmVycywgd2Ugc2hvdWxkIHJlc3BlY3QgdGhhdCB3aXNoLi4uICovIAorICAgICAgIGJ1ZmZlcnMsIHdlIHNob3VsZCByZXNwZWN0IHRoYXQgd2lzaC4uLiAqLwogCiAgICAgLypzZW5kcmluZyAtPiBhbiBvZmZzZXQgaW5kZXggdGhhdCB3aWxsIHNoaWZ0IHRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUqLwogICAgIC8qc2VjdGlvbiBvZiB0aGUgZmlsZSBzZW50IHRocm91Z2hvdXQgdGhlIGZpbGUqLwotICAgIAorCiAgICAgaWYgKHNlbmRfd2lkdGggPT0gMCkgewogICAgICAgc2VuZF93aWR0aCA9IChsc3Nfc2l6ZS9zZW5kX3NpemUpICsgMTsKICAgICAgIGlmIChzZW5kX3dpZHRoID09IDEpIHNlbmRfd2lkdGgrKzsKICAgICB9Ci0gICAgCi0gICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7IAorCisgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7CiAKICAgICAgIC8qIG9ubHkgYWxsb2NhdGUgdGhlIHNlbmQgcmluZyBvbmNlLiB0aGlzIGlzIGEgbmV0d29ya2luZyB0ZXN0LAogCSBub3QgYSBtZW1vcnkgYWxsb2NhdGlvbiB0ZXN0LiB0aGlzIHdheSwgd2UgZG8gbm90IG5lZWQgYQogCSBkZWFsbG9jYXRlX2J1ZmZlcl9yaW5nKCkgcm91dGluZSwgYW5kIEkgZG9uJ3QgZmVlbCBsaWtlCi0JIHdyaXRpbmcgb25lIGFueXdheSA6KSByYWogMTEvOTQgKi8gCi0gICAgICAKKwkgd3JpdGluZyBvbmUgYW55d2F5IDopIHJhaiAxMS85NCAqLworCiAgICAgICBzZW5kX3JpbmcgPSBhbGxvY19zZW5kZmlsZV9idWZfcmluZyhzZW5kX3dpZHRoLAogCQkJCQkgIHNlbmRfc2l6ZSwKIAkJCQkJICBsb2NhbF9zZW5kX2FsaWduLAogCQkJCQkgIGxvY2FsX3NlbmRfb2Zmc2V0KTsKICAgICB9Ci0JCisKICAgICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QKICAgICAgICBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlCiAgICAgICAgdGVzdHMgIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuCiAgICAgICAgY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUKICAgICAgICBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28KICAgICAgICB0aHJvdWdoICBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUKLSAgICAgICBiYWNrLiAqLyAKLSAgICAKKyAgICAgICBiYWNrLiAqLworCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgICB9CkBAIC0zNjY4LDcgKzQzNDksNyBAQAogICAgICAgIHRoZXkgd2lsbCBiZSBwYXNzZWQgYXMgMCwgd2hpY2ggIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZQogICAgICAgIHRoYXQgbm8gY2hhbmdlcyBiZXlvbmQgdGhlIHN5c3RlbSdzICBkZWZhdWx0IHNob3VsZCBiZQogICAgICAgIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICBkZWZhdWx0IHRvIDEsIHdoaWNoCi0gICAgICAgd2lsbCBiZSBubyBhbGlnbm1lbnQgYWx0ZXJhdGlvbnMuICovIAorICAgICAgIHdpbGwgYmUgbm8gYWxpZ25tZW50IGFsdGVyYXRpb25zLiAqLwogCiAgICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlID0JRE9fVENQX1NUUkVBTTsKICAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPnNlbmRfYnVmX3NpemUJPQlyc3Nfc2l6ZV9yZXE7CkBAIC0zNzAxLDcgKzQzODIsNyBAQAogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAibmV0cGVyZjogc2VuZF90Y3Bfc3RyZWFtOiByZXF1ZXN0aW5nIFRDUCBzdHJlYW0gdGVzdFxuIik7CiAgICAgfQotICAgIAorCiAgICAgc2VuZF9yZXF1ZXN0KCk7CiAKICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50CkBAIC0zNzEzLDcgKzQzOTQsNyBAQAogICAgICAgIHZhbHVlIHJpZ2h0IGFmdGVyIHRoZSBjb25uZWN0IHJldHVybnMuIFRoZSByZW1vdGUgd2lsbCBncmFiIHRoZQogICAgICAgIGNvdW50ZXIgcmlnaHQgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YKICAgICAgICBleHRyYSBtZXNzYWdlcyBiZWluZyBzZW50IGZvciB0aGUgVENQIHRlc3RzLiAgKi8KLSAgICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKIAogICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKQEAgLTM3MzgsMTYgKzQ0MTksMTYgQEAKIAkgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgICBwZXJyb3IoIiIpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KIAogI2lmZGVmIFdBTlRfREVNTwotICAgIERFTU9fU1RSRUFNX1NFVFVQKGxzc19zaXplLHJzcl9zaXplKQorICAgIGRlbW9fc3RyZWFtX3NldHVwKGxzc19zaXplLHJzcl9zaXplKTsKICNlbmRpZgogCiAgICAgLypDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQgICovCi0gICAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsIAorICAgIGlmIChjb25uZWN0KHNlbmRfc29ja2V0LAogCQlyZW1vdGVfcmVzLT5haV9hZGRyLAogCQlyZW1vdGVfcmVzLT5haV9hZGRybGVuKSA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfdGNwX3N0cmVhbTogZGF0YSBzb2NrZXQgY29ubmVjdCBmYWlsZWQiKTsKQEAgLTM3NTUsMTYgKzQ0MzYsMjYgQEAKICAgICAgIGV4aXQoMSk7CiAgICAgfQogCisjaWZkZWYgV0lOMzIKKyAgLyogdGhpcyBpcyB1c2VkIHNvIHRoZSB0aW1lciB0aHJlYWQgY2FuIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20gKi8KKyAgLyogdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QgKi8KKyAgLyogV2luZG93cy1zcGVjaWZpYyB3YXkgSSBjYW4gZmluZCB0byBmb3JjZSB0aGUgd2luc29jayBjYWxscyB0byAqLworICAvKiByZXR1cm4gV1NBRUlOVFIgd2l0aCB0aGUgdGVzdCBpcyBvdmVyLiBhbnl0aGluZyB0aGF0IHdpbGwgcnVuIG9uICovCisgIC8qIDk1IGFuZCBOVCBhbmQgaXMgY2xvc2VyIHRvIHdoYXQgbmV0cGVyZiBleHBlY3RzIGZyb20gVW5peCBzaWduYWxzICovCisgIC8qIGFuZCBzdWNoIHdvdWxkIGJlIGFwcHJlY2lhdGVkIHJhaiAxLzk2ICovCisgIHdpbl9rbHVkZ2Vfc29ja2V0ID0gc2VuZF9zb2NrZXQ7CisjZW5kaWYgLyogV0lOMzIgKi8KKwogICAgIC8qIERhdGEgU29ja2V0IHNldC11cCBpcyBmaW5pc2hlZC4gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcywgZWl0aGVyCiAgICAgICAgdGhlIGNvbm5lY3Qgd291bGQgaGF2ZSBmYWlsZWQsIG9yIHRoZSBwcmV2aW91cyByZXNwb25zZSB3b3VsZAogICAgICAgIGhhdmUgaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICBleHRyYSBtZXNzYWdlIGFmdGVyIHRoZSBhY2NlcHQgb24gdGhlIHJlbW90ZS4gSWYgaXQgZmFpbGVkLAogICAgICAgIHdlJ2xsIHNlZSBpdCBoZXJlLiBJZiBpdCBkaWRuJ3QsIHdlIG1pZ2h0IGFzIHdlbGwgc3RhcnQgcHVtcGluZwogICAgICAgIGRhdGEuICovCi0gICAgCisKICAgICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHN0cmVhbSB0ZXN0LCB0aGV5IGNhbiBiZSAqLwogICAgIC8qIGVpdGhlciB0aW1lIG9yIGJ5dGUtY291bnQgYmFzZWQuICovCi0gICAgCisKICAgICBpZiAodGVzdF90aW1lKSB7CiAgICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgICB0aW1lc191cCA9IDA7CkBAIC0zNzg0LDIzICs0NDc1LDIzIEBACiAgICAgICBieXRlc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgICAgdGltZXNfdXAgPSAxOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgICAKKwogICAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwotICAgIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBJTlRFUlZBTFNfSU5JVCgpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCiAKLSAgIAorCiAgICAgLyogYmVmb3JlIHdlIHN0YXJ0LCBpbml0aWFsaXplIGEgZmV3IHZhcmlhYmxlcyAqLwogCiAjaWZkZWYgV0FOVF9ERU1PCiAgICAgaWYgKGRlbW9fbW9kZSkgewotICAgICAgSElTVF90aW1lc3RhbXAoZGVtb19vbmVfcHRyKTsKKyAgICAgIGRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM4MDksMTIgKzQ1MDAsMTIgQEAKICAgICAgICBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3QKICAgICAgICB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuIFdoZW4gdGhlIHRlc3QgaXMgZmluaXNoZWQsIHRoZSB3aG9sZQogICAgICAgIGV4cHJlc3Npb24gd2lsbCBnbyBmYWxzZSBhbmQgd2Ugd2lsbCBzdG9wIHNlbmRpbmcgZGF0YS4gKi8KLSAgICAKKwogICAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAoYnl0ZXNfcmVtYWluaW5nID4gMCkpIHsKLSAgICAgIAorCiAgICAgICAvKiB0aGUgc2VuZGZpbGVfdGNwX3N0cmVhbSB0ZXN0IGRvZXMgbm90IHN1cHBvcnQgbWFraW5nIHRoZSBidWZmZXJzCiAJIGRpcnR5LiAwOC8yMDAwICovCi0gICAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBpZiAodmVyYm9zaXR5ID4gMSkgewogCS8qIHRpbWVzdGFtcCBqdXN0IGJlZm9yZSB3ZSBnbyBpbnRvIHNlbmRmaWxlKCkgYW5kIHRoZW4gYWdhaW4KQEAgLTM4MjMsMTAyICs0NTE0LDUxIEBACiAJSElTVF90aW1lc3RhbXAoJnRpbWVfb25lKTsKICAgICAgIH0KICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwotICAgICAgCisKICAgICAgIC8qIHlvdSBjYW4gbG9vayBhdCBuZXRsaWIuaCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmllbGRzIHdlCiAJIGFyZSBwYXNzaW5nIHRvIHNlbmRmaWxlKCkuIDA4LzIwMDAgKi8KLSNpZmRlZiBRVUlDS19TRU5EUEFUSAotICAgICAgaWYgKChsZW49c2VuZHBhdGgoc2VuZF9zb2NrZXQsIAotCQkJZmlsbF9maWxlLAotCQkJc2VuZF9yaW5nLT5vZmZzZXQsCi0JCQlzZW5kX3JpbmctPmxlbmd0aCwKLQkJCXNlbmRfcmluZy0+aGR0cmwsCi0JCQlzZW5kX3JpbmctPmZsYWdzKSkgIT0gc2VuZF9zaXplKQotI2VsaWYgZGVmaW5lZChfX2xpbnV4KQotCXNjcmF0Y2hfb2Zmc2V0ID0gc2VuZF9yaW5nLT5vZmZzZXQ7Ci0gICAgICBpZiAoKGxlbj1zZW5kZmlsZShzZW5kX3NvY2tldCwgCi0JCQlzZW5kX3JpbmctPmZpbGRlcywgCi0JCQkmc2NyYXRjaF9vZmZzZXQsICAgLyogbW9kaWZpZWQgYWZ0ZXIgdGhlIGNhbGwhICovCi0JCQlzZW5kX3JpbmctPmxlbmd0aCkpICE9IHNlbmRfc2l6ZSkKLSNlbGlmIGRlZmluZWQgKF9fc3VuX18pCi0gICAgICAvKiBXZSBtdXN0IGNhbGwgd2l0aCBTRlZfTk9XQUlUIGFuZCBhIGxhcmdlIGZpbGUgc2l6ZSAoPj0gMTZNQikgdG8KLQkgZ2V0IHplcm8tY29weSwgYXMgd2VsbCBhcyBjb21waWxpbmcgd2l0aCAgLURfTEFSR0VGSUxFX1NPVVJDRQotCSAgLURfRklMRV9PRkZTRVRfQklUUz02NCAqLwotICAgICAgc3Yuc2Z2X2ZkID0gc2VuZF9yaW5nLT5maWxkZXM7Ci0gICAgICBzdi5zZnZfZmxhZyA9IFNGVl9OT1dBSVQ7Ci0gICAgICBzdi5zZnZfb2ZmID0gc2VuZF9yaW5nLT5vZmZzZXQ7Ci0gICAgICBzdi5zZnZfbGVuID0gIHNlbmRfcmluZy0+bGVuZ3RoOwotICAgICAgaWYgKChsZW4gPSBzZW5kZmlsZXYoc2VuZF9zb2NrZXQsICZzdiwgMSwgJnNjcmF0Y2hfbGVuKSkgIT0gc2VuZF9zaXplKQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLQkvKiBzbyBjbG9zZSB0byBIUC1VWCBhbmQgeWV0IHNvIGZhciBhd2F5Li4uIDopICovCi0JaWYgKChzZW5kZmlsZShzZW5kX3JpbmctPmZpbGRlcywgCi0JCSAgICAgIHNlbmRfc29ja2V0LCAKLQkJICAgICAgc2VuZF9yaW5nLT5vZmZzZXQsCi0JCSAgICAgIHNlbmRfcmluZy0+bGVuZ3RoLAotCQkgICAgICBOVUxMLAotCQkgICAgICAob2ZmX3QgKikmbGVuLAotCQkgICAgICBzZW5kX3JpbmctPmZsYWdzKSAhPSAwKSB8fAotCSAgICAobGVuICE9IHNlbmRfc2l6ZSkpCi0jZWxpZiBkZWZpbmVkKFVTRV9PU1gpCi0gICAgc2NyYXRjaF9sZW4gPSBzZW5kX3JpbmctPmxlbmd0aDsKLSAgICBpZiAoKHNlbmRmaWxlKHNlbmRfcmluZy0+ZmlsZGVzLAotICAgICAgICAgICAgICBzZW5kX3NvY2tldCwKLSAgICAgICAgICAgICAgc2VuZF9yaW5nLT5vZmZzZXQsCi0gICAgICAgICAgICAgIChvZmZfdCAqKSZzY3JhdGNoX2xlbiwKLSAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgc2VuZF9yaW5nLT5mbGFncykgIT0gMCkgfHwKLSAgICAgICAgKHNjcmF0Y2hfbGVuICE9IHNlbmRfc2l6ZSkpCi0jZWxzZSAvKiBvcmlnaW5hbCBzZW5kaWxlIEhQLVVYICovCi0JICBpZiAoKGxlbj1zZW5kZmlsZShzZW5kX3NvY2tldCwgCi0JCQkgICAgc2VuZF9yaW5nLT5maWxkZXMsIAotCQkJICAgIHNlbmRfcmluZy0+b2Zmc2V0LAotCQkJICAgIHNlbmRfcmluZy0+bGVuZ3RoLAotCQkJICAgIHNlbmRfcmluZy0+aGR0cmwsCi0JCQkgICAgc2VuZF9yaW5nLT5mbGFncykpICE9IHNlbmRfc2l6ZSkKLSNlbmRpZiAvKiBRVUlDS19TRU5EUEFUSCAqLwotCSAgICB7Ci0JICAgICAgLyogdGhlIHRlc3Qgd2FzIGludGVycnVwdGVkLCBtdXN0IGJlIHRoZSBlbmQgb2YgdGVzdC4gdGhlCi0JCSBzZW5kX3RjcF9zdHJlYW0gY29kZSBoYXMgc29tZSBXSU4zMiBpZmRlZnMgdGhhdCB3ZSBkbyBub3QKLQkJIG5lZWQgaGVyZS4gKi8KLQkgICAgICBpZiAoKGxlbiA+PTApIHx8IFNPQ0tFVF9FSU5UUihsZW4pKSB7Ci0JCWJyZWFrOwotCSAgICAgIH0KLQkgICAgICBwZXJyb3IoIm5ldHBlcmY6IGRhdGEgc2VuZCBlcnJvcjogc2VuZGZpbGUiKTsKLQkgICAgICBmcHJpbnRmKHN0ZGVyciwKLQkJICAgICAgImxlbiB3YXMgJWQgc2VuZF9zaXplIHdhcyAlZFxuIiwKLQkJICAgICAgbGVuLAotCQkgICAgICBzZW5kX3NpemUpOwotCSAgICAgIGZmbHVzaChzdGRlcnIpOwotCSAgICAgIGV4aXQoMSk7Ci0JICAgIH0KLSAgICAgIAotICAgICAgLyoJb2Zmc2V0ICs9IGxlbjsqLwotICAgICAgCisgICAgICBpZiAobmV0cGVyZl9zZW5kZmlsZShzZW5kX3NvY2tldCwgc2VuZF9yaW5nKSAhPSBzZW5kX3NpemUpIHsKKwkvKiB0aGUgdGVzdCB3YXMgaW50ZXJydXB0ZWQsIG11c3QgYmUgdGhlIGVuZCBvZiB0ZXN0LiB0aGUKKwkgICBzZW5kX3RjcF9zdHJlYW0gY29kZSBoYXMgc29tZSBXSU4zMiBpZmRlZnMgdGhhdCB3ZSBkbyBub3QKKwkgICBuZWVkIGhlcmUuICovCisJaWYgKChsZW4gPj0wKSB8fCBTT0NLRVRfRUlOVFIobGVuKSkgeworCSAgYnJlYWs7CisJfQorCXBlcnJvcigibmV0cGVyZjogZGF0YSBzZW5kIGVycm9yOiBzZW5kZmlsZSIpOworCWZwcmludGYoc3RkZXJyLAorCQkibGVuIHdhcyAlZCBzZW5kX3NpemUgd2FzICVkXG4iLAorCQlsZW4sCisJCXNlbmRfc2l6ZSk7CisJZmZsdXNoKHN0ZGVycik7CisJZXhpdCgxKTsKKyAgICAgIH0KKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBpZiAodmVyYm9zaXR5ID4gMSkgewogCS8qIHRpbWVzdGFtcCB0aGUgZXhpdCBmcm9tIHRoZSBzZW5kIGNhbGwgYW5kIHVwZGF0ZSB0aGUKIAkgICBoaXN0b2dyYW0gKi8KLSAgICAgIAorCiAJSElTVF90aW1lc3RhbXAoJnRpbWVfdHdvKTsKIAlISVNUX2FkZCh0aW1lX2hpc3QsZGVsdGFfbWljcm8oJnRpbWVfb25lLCZ0aW1lX3R3bykpOwogICAgICAgfQotI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovICAgICAgCi0gICAgCisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KKwogI2lmZGVmIFdBTlRfREVNTwotICAgICAgREVNT19TVFJFQU1fSU5URVJWQUwoc2VuZF9zaXplKTsKLSNlbmRpZiAKLSAgCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMgICAgICAKKyAgICAgIGRlbW9fc3RyZWFtX2ludGVydmFsKHNlbmRfc2l6ZSk7CisjZW5kaWYKKworI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgICBJTlRFUlZBTFNfV0FJVCgpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgICAKKwogICAgICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgKi8KICAgICAgIC8qIGRhdGEgYnVmZmVyLi4ud2UgbWF5IGFsc28gd2FudCB0byB3cmFwIGJhY2sgdG8gdGhlICJiZWdpbm5pbmciICovCiAgICAgICAvKiBvZiB0aGUgYnVmZmVyc3BhY2UsIHNvIHdlIHdpbGwgbW9kIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgc2VudCAqLwogICAgICAgLyogYnkgdGhlIHNlbmQgd2lkdGgsIGFuZCB1c2UgdGhhdCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldCB0byBhZGQgKi8KICAgICAgIC8qIHRvIHRoZSBiYXNlIHBvaW50ZXIuICovCiAKLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAotICAgICAgc2VuZF9yaW5nID0gc2VuZF9yaW5nLT5uZXh0OyAKKyAgICAgIG51bW1lc3NhZ2VzKys7CisgICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7CiAgICAgICBpZiAoYnl0ZXNfcmVtYWluaW5nKSB7CiAJYnl0ZXNfcmVtYWluaW5nIC09IHNlbmRfc2l6ZTsKICAgICAgIH0KQEAgLTM5MzQsMTIgKzQ1NzQsMTIgQEAKICAgICAgIHRjcF9tc3MgPSAtMTsKICAgICAgIGdldF90Y3BfaW5mbyhzZW5kX3NvY2tldCwmdGNwX21zcyk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNodXRkb3duKHNlbmRfc29ja2V0LFNIVVRfV1IpID09IFNPQ0tFVF9FUlJPUikgewogICAgICAgcGVycm9yKCJuZXRwZXJmOiBjYW5ub3Qgc2h1dGRvd24gdGNwIHN0cmVhbSBzb2NrZXQiKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLyogaGFuZyBhIHJlY3YoKSBvZmYgdGhlIHNvY2tldCB0byBibG9jayB1bnRpbCB0aGUgcmVtb3RlIGhhcyAqLwogICAgIC8qIGJyb3VnaHQgYWxsIHRoZSBkYXRhIHVwIGludG8gdGhlIGFwcGxpY2F0aW9uLiBpdCB3aWxsIGRvIGEgKi8KICAgICAvKiBzaHV0ZG93biB0byBjYXVzZSBhIEZJTiB0byBiZSBzZW50IG91ciB3YXkuIFdlIHdpbGwgYXNzdW1lIHRoYXQgKi8KQEAgLTM5NDksMzEgKzQ1ODksMzcgQEAKICAgICAgICBzY3JhdGNoIGJ1ZmZlciBmcm9tIHRoZSBzZW5kX3JpbmcgdG8gdXNlIGZvciB0aGUKICAgICAgICByZWNlaXZlLiBob3dldmVyLCBzaW5jZSB3ZSAia25vdyIgdGhhdCB0aGUgcmVjdiBzaG91bGQgYmUKICAgICAgICByZXR1cm5pbmcgemVybyBieXRlcyAobm90IHRoYXQgd2UgYXJlIG1ha2luZyB0aGUgY2hlY2tzIHdlCi0gICAgICAgc2hvdWxkKSB3ZSBjYW4gcGFzcyB0aGUgYWRkcmVzcyBvZiB0aGUgZmxhZ3MgZmllbGQuIHJhaiAwOC8yMDAwIAorICAgICAgIHNob3VsZCkgd2UgY2FuIHBhc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIGZsYWdzIGZpZWxkLiByYWogMDgvMjAwMAogICAgICovCiAKICAgICByZWN2KHNlbmRfc29ja2V0LAotCSAmKHNlbmRfcmluZy0+ZmxhZ3MpLCAKKwkgJihzZW5kX3JpbmctPmZsYWdzKSwKIAkgc2l6ZW9mKHNlbmRfcmluZy0+ZmxhZ3MpLAogCSAwKTsKLSAgICAKKwogICAgIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LCBhbmQgKi8KICAgICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAgIAorCiAgICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nICovCiAJCQkJCQkvKiBtZWFzdXJlZCBhbmQgaG93ICovCiAJCQkJCQkvKiBsb25nIGRpZCB3ZSByZWFsbHkgKi8KIAkJCQkJCS8qIHJ1bj8gKi8KLSAgICAKKwogICAgIC8qIHdlIGFyZSBmaW5pc2hlZCB3aXRoIHRoZSBzb2NrZXQsIHNvIGNsb3NlIGl0IHRvIHByZXZlbnQgaGl0dGluZyAqLwogICAgIC8qIHRoZSBsaW1pdCBvbiBtYXhpbXVtIG9wZW4gZmlsZXMuICovCiAKICAgICBjbG9zZShzZW5kX3NvY2tldCk7CiAKLSAgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KKyAjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyNpZmRlZiBXSU4zMgorICAgIHN0b3BfaXRpbWVyKCk7CisjZW5kaWYKKyNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLworCisgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgICAvKiBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcgdGhpbmdzLiBJZiBpdCAqLwogICAgIC8qIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KLSAgICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKIAogICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKQEAgLTM5ODgsMTAgKzQ2MzQsMTAgQEAKIAkgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgICBwZXJyb3IoIiIpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUgZnV0dXJlLCAqLwogICAgIC8qIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dCBtZWFzdXJlZCBieSAqLwogICAgIC8qIHRoZSByZW1vdGUsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGNhc2UgdGhhdCBmb3IgYSBUQ1Agc3RyZWFtIHRlc3QsICovCkBAIC00MDAwLDExICs0NjQ2LDExIEBACiAgICAgLyogSWYgaXQgd2FzIHRpbWUsIHdlIG5lZWRlZCB0bywgYW5kIGlmIGl0IHdhcyBieSBieXRlcywgdGhlIHVzZXIgbWF5ICovCiAgICAgLyogaGF2ZSBzcGVjaWZpZWQgYSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3YXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgKi8KICAgICAvKiBzZW5kX3NpemUsIHNvIHdlIHJlYWxseSBkaWRuJ3Qgc2VuZCB3aGF0IGhlIGFza2VkIGZvciA7LSkgKi8KLSAgICAKKwogICAgIGJ5dGVzX3NlbnQJPSBudG9oZCh0Y3Bfc3RyZWFtX3Jlc3VsdC0+Ynl0ZXNfcmVjZWl2ZWQpOwotICAgIAorCiAgICAgdGhydXB1dAk9IGNhbGNfdGhydXB1dChieXRlc19zZW50KTsKLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogCiAgICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCkBAIC00MDEzLDcgKzQ2NTksNyBAQAogICAgICAgLyogdGhlcmUgd2FzIG5vIGlkbGUgY291bnRlciBpbiB0aGUga2VybmVsKHMpLiBXZSBuZWVkIHRvIG1ha2UgKi8KICAgICAgIC8qIGEgbm90ZSBvZiB0aGlzIGZvciB0aGUgdXNlcidzIGJlbmVmaXQuLi4qLwogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewotCQorCiAJbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gY2FsY19jcHVfdXRpbCgwLjApOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gY2FsY19zZXJ2aWNlX2RlbWFuZChieXRlc19zZW50LAogCQkJCQkJICAgICAgMC4wLApAQCAtNDAyNCw5ICs0NjcwLDkgQEAKIAlsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAoZmxvYXQpIC0xLjA7CiAJbG9jYWxfc2VydmljZV9kZW1hbmQJPSAoZmxvYXQpIC0xLjA7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKLQkKKwogCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24JPSB0Y3Bfc3RyZWFtX3Jlc3VsdC0+Y3B1X3V0aWw7CiAJcmVtb3RlX3NlcnZpY2VfZGVtYW5kCT0gY2FsY19zZXJ2aWNlX2RlbWFuZChieXRlc19zZW50LAogCQkJCQkJICAgICAgMC4wLApAQCAtNDAzNyw3ICs0NjgzLDcgQEAKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAoZmxvYXQpIC0xLjA7CiAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiB3ZSB3ZXJlIG5vdCBtZWFzdXJpbmcgY3B1LCBmb3IgdGhlIGNvbmZpZGVuY2Ugc3R1ZmYsIHdlICovCiAgICAgICAvKiBzaG91bGQgbWFrZSBpdCAtMS4wICovCkBAIC00MDUwLDcgKzQ2OTYsNyBAQAogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoZSBjb25maWRlbmNlIGluZm9ybWF0aW9uLiAqLwogICAgIC8qIGlmIGRlYnVnZ2luZyBpcyBvbiwgY2FsY3VsYXRlX2NvbmZpZGVuY2Ugd2lsbCBwcmludC1vdXQgdGhlICovCiAgICAgLyogcGFyYW1ldGVycyB3ZSBwYXNzIGl0ICovCi0gICAgCisKICAgICBjYWxjdWxhdGVfY29uZmlkZW5jZShjb25maWRlbmNlX2l0ZXJhdGlvbiwKIAkJCSBlbGFwc2VkX3RpbWUsCiAJCQkgdGhydXB1dCwKQEAgLTQwNTgsNyArNDcwNCw3IEBACiAJCQkgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKIAkJCSBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJCSByZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAgIAorCiAgICAgY29uZmlkZW5jZV9pdGVyYXRpb24rKzsKICAgfQogCkBAIC00MDk2LDcgKzQ3NDIsNyBAQAogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICBsb2NhbF9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QoY3B1X21ldGhvZCk7CiAgICAgcmVtb3RlX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZCh0Y3Bfc3RyZWFtX3Jlc3VsdC0+Y3B1X21ldGhvZCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKIApAQCAtNDEwNCwxNCArNDc1MCwxOCBAQAogCWZwcmludGYod2hlcmUsCiAJCWNwdV9mbXRfMCwKIAkJbG9jYWxfc2VydmljZV9kZW1hbmQsCi0JCWxvY2FsX2NwdV9tZXRob2QpOworCQlsb2NhbF9jcHVfbWV0aG9kLAorCQkoKHByaW50X2hlYWRlcnMpIHx8CisJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIH0KIAogICAgICAgZWxzZSB7CiAJZnByaW50Zih3aGVyZSwKIAkJY3B1X2ZtdF8wLAogCQlyZW1vdGVfc2VydmljZV9kZW1hbmQsCi0JCXJlbW90ZV9jcHVfbWV0aG9kKTsKKwkJcmVtb3RlX2NwdV9tZXRob2QsCisJCSgocHJpbnRfaGVhZGVycykgfHwKKwkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgfQogCiAgICAgICBicmVhazsKQEAgLTQxMjUsNyArNDc3NSw3IEBACiAJCWxvY2FsX2NwdV9tZXRob2QsCiAJCXJlbW90ZV9jcHVfbWV0aG9kKTsKICAgICAgIH0KLSAgICAKKwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICBjcHVfZm10XzEsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLwogCSAgICAgIHJzcl9zaXplLAkJICAgICAgICAvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCkBAIC00MTM2LDcgKzQ3ODYsOSBAQAogCSAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiwJLyogbG9jYWwgY3B1ICovCiAJICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwJLyogcmVtb3RlIGNwdSAqLwogCSAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAkvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCAqLwotCSAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7CS8qIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZCAqLworCSAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwJLyogcmVtb3RlIHNlcnZpY2UgZGVtYW5kICovCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAorCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDE0NCwxNCArNDc5NiwxNiBAQAogCiAgIGVsc2UgewogICAgIC8qIFRoZSB0ZXN0ZXIgZGlkIG5vdCB3aXNoIHRvIG1lYXN1cmUgc2VydmljZSBkZW1hbmQuICovCi0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewotIAorCiAgICAgY2FzZSAwOgogCiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIHRwdXRfZm10XzAsCi0JICAgICAgdGhydXB1dCk7CisJICAgICAgdGhydXB1dCwKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CisJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDE6CkBAIC00MTY3LDcgKzQ4MjEsOSBAQAogCSAgICAgIGxzc19zaXplLCAJCS8qIGxvY2FsIHNlbmRidWYgc2l6ZSAqLwogCSAgICAgIHNlbmRfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSBzZW5kcyAqLwogCSAgICAgIGVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLwotCSAgICAgIHRocnVwdXQpOy8qIGhvdyBmYXN0IGRpZCBpdCBnbyAqLworCSAgICAgIHRocnVwdXQsICAgICAgICAgICAgICAgICAgLyogaG93IGZhc3QgZGlkIGl0IGdvICovCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAorCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQpAQCAtNDE3NywxNyArNDgzMywxNyBAQAogICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KICAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCi0gIAorCiAgICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKIAogICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBrbm93IGl0IGFsbCwgc28gd2Ugd2lsbCBnaXZlIGl0IHRvIGhpbS4gKi8KICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCiAgICAgLyogVENQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgIAorCiAgICAgLyogdGhpcyBzdHVmZiBuZWVkcyB0byBiZSB3b3JrZWQtb3V0IGluIHRoZSBwcmVzZW5jZSBvZiBjb25maWRlbmNlICovCiAgICAgLyogaW50ZXJ2YWxzIGFuZCBtdWx0aXBsZSBpdGVyYXRpb25zIG9mIHRoZSB0ZXN0Li4uIHJhaiAxMS85NCAqLwotIAorCiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAga3NpbmtfZm10LAogCSAgICAiQnl0ZXMiLApAQCAtNDIyNyw3ICs0ODgzLDcgQEAKIHZvaWQKIHJlY3ZfdGNwX3N0cmVhbSgpCiB7Ci0gIAorCiAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIG15YWRkcl9pbiwgcGVlcmFkZHJfaW47CiAgIFNPQ0tFVCBzX2xpc3RlbixzX2RhdGE7CiAgIG5ldHBlcmZfc29ja2xlbl90IGFkZHJsZW47CkBAIC00MjM1LDcgKzQ4OTEsNyBAQAogICB1bnNpZ25lZCBpbnQJcmVjZWl2ZV9jYWxsczsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwogICBkb3VibGUgICBieXRlc19yZWNlaXZlZDsKLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7CiAKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CkBAIC00MjUwLDI1ICs0OTA2LDI1IEBACiAgIHN0cnVjdAl0Y3Bfc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSp0Y3Bfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAl0Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CXRjcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnRjcF9zdHJlYW1fcmVzdWx0czsKLSAgCisKICNpZmRlZiBET19TRUxFQ1QKICAgRkRfWkVSTygmcmVhZGZkcyk7CiAgIHRpbWVvdXQudHZfc2VjID0gMTsKICAgdGltZW91dC50dl91c2VjID0gMDsKICNlbmRpZiAvKiBET19TRUxFQ1QgKi8KIAotICB0Y3Bfc3RyZWFtX3JlcXVlc3QJPSAKKyAgdGNwX3N0cmVhbV9yZXF1ZXN0CT0KICAgICAoc3RydWN0IHRjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9zdHJlYW1fcmVzcG9uc2UJPSAKKyAgdGNwX3N0cmVhbV9yZXNwb25zZQk9CiAgICAgKHN0cnVjdCB0Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9zdHJlYW1fcmVzdWx0cwk9IAorICB0Y3Bfc3RyZWFtX3Jlc3VsdHMJPQogICAgIChzdHJ1Y3QgdGNwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl90Y3Bfc3RyZWFtOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTQyNzYsMjcgKzQ5MzIsMjcgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9zdHJlYW06IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBUQ1BfU1RSRUFNX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9zdHJlYW06IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlIHRvIGJlIGF0IHRoZSBkZXNpcmVkICovCiAgIC8qIGFsaWdubWVudCB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3Bfc3RyZWFtOiByZXF1ZXN0ZWQgYWxpZ25tZW50IG9mICVkXG4iLAogCSAgICB0Y3Bfc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50KTsKQEAgLTQzMjcsMjAgKzQ5ODMsMjAgQEAKIAkJCQkwKTsKIAogICBzX2xpc3RlbiA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAjaWZkZWYgV0lOMzIKICAgLyogVGhlIHRlc3QgdGltZXIgY2FuIGZpcmUgZHVyaW5nIG9wZXJhdGlvbnMgb24gdGhlIGxpc3RlbmluZyBzb2NrZXQsCiAgICAgIHNvIHRvIG1ha2UgdGhlIHN0YXJ0X3RpbWVyIGJlbG93IHdvcmsgd2UgaGF2ZSB0byBtb3ZlCiAgICAgIGl0IHRvIGNsb3NlIHNfbGlzdGVuIHdoaWxlIHdlIGFyZSBibG9ja2VkIG9uIGFjY2VwdC4gKi8KICAgd2luX2tsdWRnZV9zb2NrZXQyID0gc19saXN0ZW47CiAjZW5kaWYKLSAgCisKICAgLyogd2hhdCBzb3J0IG9mIHNpemVzIGRpZCB3ZSBlbmQtdXAgd2l0aD8gKi8KICAgaWYgKHRjcF9zdHJlYW1fcmVxdWVzdC0+cmVjZWl2ZV9zaXplID09IDApIHsKICAgICBpZiAobHNyX3NpemUgPiAwKSB7CkBAIC00MzUzLDcgKzUwMDksNyBAQAogICBlbHNlIHsKICAgICByZWN2X3NpemUgPSB0Y3Bfc3RyZWFtX3JlcXVlc3QtPnJlY2VpdmVfc2l6ZTsKICAgfQotICAKKwogICAvKiB3ZSB3YW50IHRvIHNldC11cCBvdXIgcmVjdl9yaW5nIGluIGEgbWFubmVyIGFuYWxhZ291cyB0byB3aGF0IHdlICovCiAgIC8qIGRvIG9uIHRoZSBzZW5kaW5nIHNpZGUuIHRoaXMgaXMgbW9yZSBmb3IgdGhlIHNha2Ugb2Ygc3ltbWV0cnkgKi8KICAgLyogdGhhbiBmb3IgdGhlIG5lZWRzIG9mIHNheSBjb3B5IGF2b2lkYW5jZSwgYnV0IGl0IG1pZ2h0IGFsc28gYmUgKi8KQEAgLTQzNzUsNTMgKzUwMzEsNTMgQEAKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9zdHJlYW06IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIE5vdywgbGV0J3Mgc2V0LXVwIHRoZSBzb2NrZXQgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyAqLwogICBpZiAobGlzdGVuKHNfbGlzdGVuLCA1KSA9PSBTT0NLRVRfRVJST1IpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIGNsb3NlKHNfbGlzdGVuKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAKKworCiAgIC8qIG5vdyBnZXQgdGhlIHBvcnQgbnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGFkZHJsZW4gPSBzaXplb2YobXlhZGRyX2luKTsKLSAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLCAKKyAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLAogCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX2luLAogCQkgICZhZGRybGVuKSA9PSBTT0NLRVRfRVJST1IpewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCi0gIHRjcF9zdHJlYW1fcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPSAKKworICB0Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0KICAgICAoaW50KSBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZteWFkZHJfaW4pLT5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgLTEgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgdGNwX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgPSAoZmxvYXQpMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICBpZiAodGNwX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHRjcF9zdHJlYW1fcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKLSAgICB0Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHRjcF9zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0KICAgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUodGNwX3N0cmVhbV9yZXF1ZXN0LT5jcHVfcmF0ZSk7CiAgIH0KICAgZWxzZSB7CiAgICAgdGNwX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAwOwogICB9Ci0gIAorCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgdGNwX3N0cmVhbV9yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOwpAQCAtNDQzMiw5ICs1MDg4LDkgQEAKICAgdGNwX3N0cmVhbV9yZXNwb25zZS0+cmVjZWl2ZV9zaXplID0gcmVjdl9zaXplOwogCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7Ci0gIAorCiAgIGlmICgoc19kYXRhPWFjY2VwdChzX2xpc3RlbiwKIAkJICAgICAoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyX2luLAogCQkgICAgICZhZGRybGVuKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKQEAgLTQ0NDMsNiArNTA5OSwyMSBAQAogICAgIGV4aXQoMSk7CiAgIH0KIAorI2lmZGVmIFdJTjMyCisgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgIC8qIFdpbmRvd3Mtc3BlY2lmaWMgd2F5IEkgY2FuIGZpbmQgdG8gZm9yY2UgdGhlIHdpbnNvY2sgY2FsbHMgdG8gKi8KKyAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLworICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNfZGF0YTsKKyAgd2luX2tsdWRnZV9zb2NrZXQyID0gSU5WQUxJRF9TT0NLRVQ7CisjZW5kaWYgLyogV0lOMzIgKi8KKworICB0aW1lc191cCA9IDA7CisKKyAgc3RhcnRfdGltZXIodGNwX3N0cmVhbV9yZXF1ZXN0LT50ZXN0X2xlbmd0aCArIFBBRF9USU1FKTsKKwogI2lmZGVmIEtMVURHRV9TT0NLRVRfT1BUSU9OUwogICAvKiB0aGlzIGlzIGZvciB0aG9zZSBzeXN0ZW1zIHdoaWNoICpJTkNPUlJFQ1RMWSogZmFpbCB0byBwYXNzICovCiAgIC8qIGF0dHJpYnV0ZXMgYWNyb3NzIGFuIGFjY2VwdCgpIGNhbGwuIEluY2x1ZGluZyB0aGlzIGdvZXMgYWdhaW5zdCAqLwpAQCAtNDQ1MSwxNSArNTEyMiwxNSBAQAogICBrbHVkZ2Vfc29ja2V0X29wdGlvbnMoc19kYXRhKTsKIAogI2VuZGlmIC8qIEtMVURHRV9TT0NLRVRfT1BUSU9OUyAqLwotICAKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydCh0Y3Bfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCisKICAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHNlbmRlciBkb2VzIGEgc2h1dGRvd24sIHdoaWNoIHdpbGwgKi8KICAgLyogcmV0dXJuIGEgbGVuZ3RoIG9mIHplcm8gICAqLwotICAKKwogICAvKiB0aGVyZSB1c2VkIHRvIGJlIGFuICNpZmRlZiBESVJUWSBjYWxsIHRvIGFjY2Vzc19idWZmZXIoKSBoZXJlLAogICAgICBidXQgd2UgaGF2ZSBzd2l0Y2hlZCBmcm9tIGFjY2Vzc2luZyB0aGUgYnVmZmVyIGJlZm9yZSB0aGUgcmVjdigpCiAgICAgIGNhbGwgdG8gYWNjZXNzaW5nIHRoZSBidWZmZXIgYWZ0ZXIgdGhlIHJlY3YoKSBjYWxsLiAgVGhlCkBAIC00NDY5LDkgKzUxNDAsMTEgQEAKICAgYnl0ZXNfcmVjZWl2ZWQgPSAwOwogICByZWNlaXZlX2NhbGxzICA9IDA7CiAKLSAgd2hpbGUgKChsZW4gPSByZWN2KHNfZGF0YSwgcmVjdl9yaW5nLT5idWZmZXJfcHRyLCByZWN2X3NpemUsIDApKSAhPSAwKSB7Ci0gICAgaWYgKGxlbiA9PSBTT0NLRVRfRVJST1IgKQotCXsKKyAgd2hpbGUgKCF0aW1lc191cCAmJiAoKGxlbiA9IHJlY3Yoc19kYXRhLCByZWN2X3JpbmctPmJ1ZmZlcl9wdHIsIHJlY3Zfc2l6ZSwgMCkpICE9IDApKSB7CisgICAgaWYgKGxlbiA9PSBTT0NLRVRfRVJST1IgKSB7CisgICAgICBpZiAodGltZXNfdXApIHsKKwlicmVhazsKKyAgICAgIH0KICAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgICBleGl0KDEpOwpAQCAtNDUwMSwyMCArNTE3NCwyMCBAQAogI2VuZGlmIC8qIERPX1NFTEVDVCAqLwogCiAgIH0KLSAgCisKICAgLyogcGVyZm9ybSBhIHNodXRkb3duIHRvIHNpZ25hbCB0aGUgc2VuZGVyIHRoYXQgKi8KICAgLyogd2UgaGF2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEgc2VudC4gcmFqIDQvOTMgKi8KIAotICBpZiAoc2h1dGRvd24oc19kYXRhLFNIVVRfV1IpID09IFNPQ0tFVF9FUlJPUikgeworICBpZiAoc2h1dGRvd24oc19kYXRhLFNIVVRfV1IpID09IFNPQ0tFVF9FUlJPUiAmJiAhdGltZXNfdXApIHsKICAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgCisKICAgY3B1X3N0b3AodGNwX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfdGNwX3N0cmVhbTogZ290ICVnIGJ5dGVzXG4iLApAQCAtNDUyNCwxOCArNTE5NywxOCBAQAogCSAgICByZWNlaXZlX2NhbGxzKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHRjcF9zdHJlYW1fcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSBodG9uZChieXRlc19yZWNlaXZlZCk7CiAgIHRjcF9zdHJlYW1fcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOwogICB0Y3Bfc3RyZWFtX3Jlc3VsdHMtPnJlY3ZfY2FsbHMJPSByZWNlaXZlX2NhbGxzOwotICAKKwogICB0Y3Bfc3RyZWFtX3Jlc3VsdHMtPmNwdV9tZXRob2QgPSBjcHVfbWV0aG9kOwogICB0Y3Bfc3RyZWFtX3Jlc3VsdHMtPm51bV9jcHVzICAgPSBsaWJfbnVtX2xvY19jcHVzOwotICAKKwogICBpZiAodGNwX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHRjcF9zdHJlYW1fcmVzdWx0cy0+Y3B1X3V0aWwJPSBjYWxjX2NwdV91dGlsKDAuMCk7CiAgIH07Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3RjcF9zdHJlYW06IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwpAQCAtNDU1OSwxMiArNTIzMiwxMiBAQAogDAogLyogVGhpcyBpcyB0aGUgc2VydmVyLXNpZGUgcm91dGluZSBmb3IgdGhlIHRjcCBtYWVydHMgdGVzdC4gSXQgaXMKICAgIGltcGxlbWVudGVkIGFzIG9uZSByb3V0aW5lLiBJIGNvdWxkIGJyZWFrIHRoaW5ncy1vdXQgc29tZXdoYXQsIGJ1dAotICAgZGlkbid0IGZlZWwgaXQgd2FzIG5lY2Vzc2FyeS4gKi8gCisgICBkaWRuJ3QgZmVlbCBpdCB3YXMgbmVjZXNzYXJ5LiAqLwogCiB2b2lkCiByZWN2X3RjcF9tYWVydHMoKQogewotICAKKwogICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBteWFkZHJfaW4sIHBlZXJhZGRyX2luOwogICBzdHJ1Y3QgYWRkcmluZm8gKmxvY2FsX3JlczsKICAgY2hhciAgbG9jYWxfbmFtZVtCVUZTSVpdOwpAQCAtNDU3NiwyNSArNTI0OSwyNSBAQAogICB1bnNpZ25lZCBpbnQJc2VuZF9jYWxsczsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwogICBkb3VibGUgICBieXRlc19zZW50ID0gMC4wIDsKLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAKICAgc3RydWN0CXRjcF9tYWVydHNfcmVxdWVzdF9zdHJ1Y3QJKnRjcF9tYWVydHNfcmVxdWVzdDsKICAgc3RydWN0CXRjcF9tYWVydHNfcmVzcG9uc2Vfc3RydWN0CSp0Y3BfbWFlcnRzX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX21hZXJ0c19yZXN1bHRzX3N0cnVjdAkqdGNwX21hZXJ0c19yZXN1bHRzOwotICAKLSAgdGNwX21hZXJ0c19yZXF1ZXN0CT0gCisKKyAgdGNwX21hZXJ0c19yZXF1ZXN0CT0KICAgICAoc3RydWN0IHRjcF9tYWVydHNfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9tYWVydHNfcmVzcG9uc2UJPSAKKyAgdGNwX21hZXJ0c19yZXNwb25zZQk9CiAgICAgKHN0cnVjdCB0Y3BfbWFlcnRzX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9tYWVydHNfcmVzdWx0cwk9IAorICB0Y3BfbWFlcnRzX3Jlc3VsdHMJPQogICAgIChzdHJ1Y3QgdGNwX21hZXJ0c19yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl90Y3BfbWFlcnRzOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkCiAgICAgIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYKICAgICAgc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUKQEAgLTQ2MDIsMjcgKzUyNzUsMjcgQEAKICAgICAgc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlCiAgICAgIGRldGVybWluZWQsIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvCiAgICAgIHdyb25nIGZvciBhbnkgcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdAogICAgICB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcwogICAgICB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzCiAgICAgIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9tYWVydHM6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBUQ1BfTUFFUlRTX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9tYWVydHM6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlIHRvIGJlIGF0IHRoZSBkZXNpcmVkICovCiAgIC8qIGFsaWdubWVudCB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfbWFlcnRzOiByZXF1ZXN0ZWQgYWxpZ25tZW50IG9mICVkXG4iLAogCSAgICB0Y3BfbWFlcnRzX3JlcXVlc3QtPnNlbmRfYWxpZ25tZW50KTsKQEAgLTQ2MzAsMTIgKzUzMDMsMTIgQEAKICAgfQogCiAgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX21hZXJ0czogZ3JhYmJpbmcgYSBzb2NrZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogY3JlYXRlX2RhdGFfc29ja2V0IGV4cGVjdHMgdG8gZmluZCBzb21lIHRoaW5ncyBpbiB0aGUgZ2xvYmFsICovCiAgIC8qIHZhcmlhYmxlcywgc28gc2V0IHRoZSBnbG9iYWxzIGJhc2VkIG9uIHRoZSB2YWx1ZXMgaW4gdGhlIHJlcXVlc3QuICovCiAgIC8qIG9uY2UgdGhlIHNvY2tldCBoYXMgYmVlbiBjcmVhdGVkLCB3ZSB3aWxsIHNldCB0aGUgcmVzcG9uc2UgdmFsdWVzICovCkBAIC00NjYwLDEzICs1MzMzLDEzIEBACiAJCQkJMCk7CiAKICAgc19saXN0ZW4gPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKLSAgCisKICAgaWYgKHNfbGlzdGVuID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogI2lmZGVmIFdJTjMyCiAgIC8qIFRoZSB0ZXN0IHRpbWVyIGNhbiBmaXJlIGR1cmluZyBvcGVyYXRpb25zIG9uIHRoZSBsaXN0ZW5pbmcgc29ja2V0LAogICAgICBzbyB0byBtYWtlIHRoZSBzdGFydF90aW1lciBiZWxvdyB3b3JrIHdlIGhhdmUgdG8gbW92ZQpAQCAtNDY3NCw3ICs1MzQ3LDcgQEAKICAgd2luX2tsdWRnZV9zb2NrZXQyID0gc19saXN0ZW47CiAjZW5kaWYKIAotICAKKwogICAvKiB3aGF0IHNvcnQgb2Ygc2l6ZXMgZGlkIHdlIGVuZC11cCB3aXRoPyAqLwogICBpZiAodGNwX21hZXJ0c19yZXF1ZXN0LT5zZW5kX3NpemUgPT0gMCkgewogICAgIGlmIChsc3Nfc2l6ZSA+IDApIHsKQEAgLTQ2ODcsNyArNTM2MCw3IEBACiAgIGVsc2UgewogICAgIHNlbmRfc2l6ZSA9IHRjcF9tYWVydHNfcmVxdWVzdC0+c2VuZF9zaXplOwogICB9Ci0gIAorCiAgIC8qIHdlIHdhbnQgdG8gc2V0LXVwIG91ciByZWN2X3JpbmcgaW4gYSBtYW5uZXIgYW5hbGFnb3VzIHRvIHdoYXQgd2UgKi8KICAgLyogZG8gb24gdGhlIHJlY3Zpbmcgc2lkZS4gdGhpcyBpcyBtb3JlIGZvciB0aGUgc2FrZSBvZiBzeW1tZXRyeSAqLwogICAvKiB0aGFuIGZvciB0aGUgbmVlZHMgb2Ygc2F5IGNvcHkgYXZvaWRhbmNlLCBidXQgaXQgbWlnaHQgYWxzbyBiZSAqLwpAQCAtNDcwOSw1MyArNTM4Miw1MyBAQAogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX21hZXJ0czogcmVjZWl2ZSBhbGlnbm1lbnQgYW5kIG9mZnNldCBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogTm93LCBsZXQncyBzZXQtdXAgdGhlIHNvY2tldCB0byBsaXN0ZW4gZm9yIGNvbm5lY3Rpb25zICovCiAgIGlmIChsaXN0ZW4oc19saXN0ZW4sIDUpID09IFNPQ0tFVF9FUlJPUikgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIAorCisKICAgLyogbm93IGdldCB0aGUgcG9ydCBudW1iZXIgYXNzaWduZWQgYnkgdGhlIHN5c3RlbSAgKi8KICAgYWRkcmxlbiA9IHNpemVvZihteWFkZHJfaW4pOwotICBpZiAoZ2V0c29ja25hbWUoc19saXN0ZW4sIAorICBpZiAoZ2V0c29ja25hbWUoc19saXN0ZW4sCiAJCSAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfaW4sCiAJCSAgJmFkZHJsZW4pID09IFNPQ0tFVF9FUlJPUil7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKLSAgdGNwX21hZXJ0c19yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlciA9IAorCisgIHRjcF9tYWVydHNfcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPQogICAgIChpbnQpIG50b2hzKCgoc3RydWN0IHNvY2thZGRyX2luICopJm15YWRkcl9pbiktPnNpbl9wb3J0KTsKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAtMSB0byAqLwogICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKwogICB0Y3BfbWFlcnRzX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IChmbG9hdCkwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmICh0Y3BfbWFlcnRzX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgdGNwX21hZXJ0c19yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwotICAgIHRjcF9tYWVydHNfcmVzcG9uc2UtPmNwdV9yYXRlID0gCisgICAgdGNwX21hZXJ0c19yZXNwb25zZS0+Y3B1X3JhdGUgPQogICAgICAgY2FsaWJyYXRlX2xvY2FsX2NwdSh0Y3BfbWFlcnRzX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQogICBlbHNlIHsKICAgICB0Y3BfbWFlcnRzX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDA7CiAgIH0KLSAgCisKICAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCiAgIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICB0Y3BfbWFlcnRzX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplID0gbHNzX3NpemU7CkBAIC00NzY2LDcgKzU0MzksNyBAQAogICB0Y3BfbWFlcnRzX3Jlc3BvbnNlLT5zZW5kX3NpemUgPSBzZW5kX3NpemU7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICBhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyX2luKTsKIAogICAvKiB3ZSB3aWxsIHN0YXJ0IHRoZSB0aW1lciBiZWZvcmUgdGhlIGFjY2VwdCgpIHRvIGJlIHNvbWV3aGF0CkBAIC00Nzc3LDkgKzU0NTAsOSBAQAogCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwKICAgICAgZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHRjcF9tYWVydHNfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogCiAgIGlmICgoc19kYXRhPWFjY2VwdChzX2xpc3RlbiwKIAkJICAgICAoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyX2luLApAQCAtNDc4OSw4ICs1NDYyLDE5IEBACiAgICAgZXhpdCgxKTsKICAgfQogCisjaWZkZWYgV0lOMzIKKyAgLyogdGhpcyBpcyB1c2VkIHNvIHRoZSB0aW1lciB0aHJlYWQgY2FuIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20gKi8KKyAgLyogdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QgKi8KKyAgLyogV2luZG93cy1zcGVjaWZpYyB3YXkgSSBjYW4gZmluZCB0byBmb3JjZSB0aGUgd2luc29jayBjYWxscyB0byAqLworICAvKiByZXR1cm4gV1NBRUlOVFIgd2l0aCB0aGUgdGVzdCBpcyBvdmVyLiBhbnl0aGluZyB0aGF0IHdpbGwgcnVuIG9uICovCisgIC8qIDk1IGFuZCBOVCBhbmQgaXMgY2xvc2VyIHRvIHdoYXQgbmV0cGVyZiBleHBlY3RzIGZyb20gVW5peCBzaWduYWxzICovCisgIC8qIGFuZCBzdWNoIHdvdWxkIGJlIGFwcHJlY2lhdGVkIHJhaiAxLzk2ICovCisgIHdpbl9rbHVkZ2Vfc29ja2V0ID0gc19kYXRhOworICB3aW5fa2x1ZGdlX3NvY2tldDIgPSBJTlZBTElEX1NPQ0tFVDsKKyNlbmRpZiAvKiBXSU4zMiAqLworCiAjaWZkZWYgS0xVREdFX1NPQ0tFVF9PUFRJT05TCi0gIAorCiAgIC8qIHRoaXMgaXMgZm9yIHRob3NlIHN5c3RlbXMgd2hpY2ggKklOQ09SUkVDVExZKiBmYWlsIHRvIHBhc3MKICAgICAgYXR0cmlidXRlcyBhY3Jvc3MgYW4gYWNjZXB0KCkgY2FsbC4gSW5jbHVkaW5nIHRoaXMgZ29lcyBhZ2FpbnN0CiAgICAgIG15IGJldHRlciBqdWRnZW1lbnQgOiggcmFqIDExLzk1ICovCkBAIC00Nzk4LDEwICs1NDgyLDEwIEBACiAgIGtsdWRnZV9zb2NrZXRfb3B0aW9ucyhzX2RhdGEpOwogCiAjZW5kaWYgLyogS0xVREdFX1NPQ0tFVF9PUFRJT05TICovCi0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHNodXRkb3duLCB3aGljaCB3aWxsICovCiAgIC8qIHJldHVybiBhIGxlbmd0aCBvZiB6ZXJvICAgKi8KLSAgCisKICAgYnl0ZXNfc2VudCA9IDAuMDsKICAgc2VuZF9jYWxscyAgPSAwOwogCkBAIC00ODQzLDcgKzU1MjcsNyBAQAogICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKIAogICB9Ci0gIAorCiAgIC8qIHBlcmZvcm0gYSBzaHV0ZG93biB0byBzaWduYWwgdGhlIHNlbmRlciB0aGF0ICovCiAgIC8qIHdlIGhhdmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhIHNlbnQuIHJhaiA0LzkzICovCiAKQEAgLTQ4NTcsMTQgKzU1NDEsMTQgQEAKICAgICAgYnJvdWdodCBhbGwgdGhlIGRhdGEgdXAgaW50byB0aGUgYXBwbGljYXRpb24uIGl0IHdpbGwgZG8gYQogICAgICBzaHV0ZG93biB0byBjYXVzZSBhIEZJTiB0byBiZSBzZW50IG91ciB3YXkuIFdlIHdpbGwgYXNzdW1lIHRoYXQKICAgICAgYW55IGV4aXQgZnJvbSB0aGUgcmVjdigpIGNhbGwgaXMgZ29vZC4uLiByYWogNC85MyAqLwotICAgIAorCiAgIHJlY3Yoc19kYXRhLCBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsIHNlbmRfc2l6ZSwgMCk7Ci0gICAgCi0gIAorCisKICAgY3B1X3N0b3AodGNwX21hZXJ0c19yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfdGNwX21hZXJ0czogZ290ICVnIGJ5dGVzXG4iLApAQCAtNDg3NCwxNSArNTU1OCwxNSBAQAogCSAgICBzZW5kX2NhbGxzKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHRjcF9tYWVydHNfcmVzdWx0cy0+Ynl0ZXNfc2VudAk9IGh0b25kKGJ5dGVzX3NlbnQpOwogICB0Y3BfbWFlcnRzX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQk9IGVsYXBzZWRfdGltZTsKICAgdGNwX21hZXJ0c19yZXN1bHRzLT5zZW5kX2NhbGxzCT0gc2VuZF9jYWxsczsKLSAgCisKICAgaWYgKHRjcF9tYWVydHNfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB0Y3BfbWFlcnRzX3Jlc3VsdHMtPmNwdV91dGlsCT0gY2FsY19jcHVfdXRpbCgwLjApOwogICB9OwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfbWFlcnRzOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKQEAgLTQ4OTUsNyArNTU3OSw3IEBACiAJICAgIGxlbik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICB0Y3BfbWFlcnRzX3Jlc3VsdHMtPmNwdV9tZXRob2QgPSBjcHVfbWV0aG9kOwogICB0Y3BfbWFlcnRzX3Jlc3VsdHMtPm51bV9jcHVzICAgPSBsaWJfbnVtX2xvY19jcHVzOwogICBzZW5kX3Jlc3BvbnNlKCk7CkBAIC00OTA5LDExICs1NTkzLDExIEBACiAKICAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgc2VuZGluZyAobmV0cGVyZikgc2lkZSBvZiB0aGUgVENQX1JSICovCiAgLyogdGVzdC4gKi8KLQorI2lmbmRlZiBXQU5UX01JR1JBVElPTgogdm9pZAogc2VuZF90Y3BfcnIoY2hhciByZW1vdGVfaG9zdFtdKQogewotICAKKwogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKIExvY2FsIC9SZW1vdGVcblwKIFNvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBUcmFucy5cblwKQEAgLTQ5MjgsMTIgKzU2MTIsMTIgQEAKIAogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmYgJXNcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAgJS02ZCAgJS02LjJmICAgJTcuMmYgICAlc1xuIjsKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXApAQCAtNDk0NSwyNiArNTYyOSwzMiBAQAogU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRwdXQgICAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgICUtOC44cyBsb2NhbCAgcmVtb3RlIGxvY2FsICAgcmVtb3RlXG5cCiBieXRlcyAgYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgIHNlY3MuICAgcGVyIHNlYyAgJSUgJWMgICAgJSUgJWMgICAgdXMvVHIgICB1cy9UclxuXG4iOwotICAKKworICBjaGFyICpjcHVfdGl0bGVfbGF0ZW5jeSA9ICJcCitMb2NhbCAvUmVtb3RlXG5cCitTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgTGF0ZW5jeSAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCitTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgdXNlY3MgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAorYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciB0cmFuICUlICVjICAgICUlICVjICAgIHVzL1RyICAgdXMvVHJcblxuIjsKKwogICBjaGFyICpjcHVfZm10XzAgPQogICAgICIlNi4zZiAlYyAlc1xuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgJS02LjJmICUtNi4yZiAlLTYuM2YgICUtNi4zZiAlc1xuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcCiBBbGlnbm1lbnQgICAgICBPZmZzZXQgICAgICAgICBSb3VuZFRyaXAgIFRyYW5zICAgIFRocm91Z2hwdXRcblwKIExvY2FsICBSZW1vdGUgIExvY2FsICBSZW1vdGUgIExhdGVuY3kgICAgUmF0ZSAgICAgJS04LjhzL3NcblwKIFNlbmQgICBSZWN2ICAgIFNlbmQgICBSZWN2ICAgIHVzZWMvVHJhbiAgcGVyIHNlYyAgT3V0Ym91bmQgICBJbmJvdW5kXG5cCiAlNWQgICU1ZCAgICU1ZCAgJTVkICAgJS02LjNmICAgJS02LjNmICUtNi4zZiAgICAlLTYuM2ZcbiI7Ci0gIAotICAKKworCiAgIGludAkJCXRpbWVkX291dCA9IDA7CiAgIGZsb2F0CQkJZWxhcHNlZF90aW1lOwotICAKKwogICBpbnQJbGVuOwogICBjaGFyCSp0ZW1wX21lc3NhZ2VfcHRyOwogICBpbnQJbnVtbWVzc2FnZXM7CkBAIC00OTc0LDE2ICs1NjY0LDE2IEBACiAKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwotICAKKwogICBpbnQJcnNwX2J5dGVzX2xlZnQ7CiAgIGludAlyc3BfYnl0ZXNfcmVjdmQ7Ci0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwogICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CiAKQEAgLTUwMTYsMTMgKzU3MDYsMTMgQEAKIAkJCQkJICAgICAgIHNlbmQgKi8KICNlbmRpZgogCi0gIHRjcF9ycl9yZXF1ZXN0ID0gCisgIHRjcF9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHRjcF9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgdGNwX3JyX3Jlc3BvbnNlPQogICAgIChzdHJ1Y3QgdGNwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9ycl9yZXN1bHQJPQogICAgIChzdHJ1Y3QgdGNwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC01MDQ0LDkgKzU3MzQsOSBAQAogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJUQ1AgUkVRVUVTVC9SRVNQT05TRSBURVNUIixsb2NhbF9yZXMscmVtb3RlX3Jlcyk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBzZW5kX3JpbmcgPSBOVUxMOwogICByZWN2X3JpbmcgPSBOVUxMOwogICBjb25maWRlbmNlX2l0ZXJhdGlvbiA9IDE7CkBAIC01MDg2LDcgKzU3NzYsNyBAQAogCiAgICAgaWYgKHNlbmRfd2lkdGggPT0gMCkgc2VuZF93aWR0aCA9IDE7CiAgICAgaWYgKHJlY3Zfd2lkdGggPT0gMCkgcmVjdl93aWR0aCA9IDE7Ci0gIAorCiAgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7CiAgICAgICBzZW5kX3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhzZW5kX3dpZHRoLAogCQkJCSAgICAgICByZXFfc2l6ZSwKQEAgLTUxMDAsMzAgKzU3OTAsMzAgQEAKIAkJCQkgICAgICAgbG9jYWxfcmVjdl9hbGlnbiwKIAkJCQkgICAgICAgbG9jYWxfcmVjdl9vZmZzZXQpOwogICAgIH0KLSAgICAKKwogICAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldCAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKLSAgCisKICAgICBpZiAoc2VuZF9zb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpewogICAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX3RjcF9ycjogdGNwIHN0cmVhbSBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfdGNwX3JyOiBzZW5kX3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgICAgfQotICAKKwogICAgIC8qIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgY3B1IHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cywgd2UgbXVzdCAqLwogICAgIC8qIGNhbGlicmF0ZSB0aGUgY3B1KHMpLiBXZSB3aWxsIHBlcmZvcm0gdGhpcyB0YXNrIHdpdGhpbiB0aGUgdGVzdHMgKi8KICAgICAvKiB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbiAqLwogICAgIC8qIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlICovCiAgICAgLyogbm90aGluZyB0byBkby4gSWYgbG9jYWxfY3B1X3JhdGUgaXMgemVybywgdGhlbiB3ZSB3aWxsIGdvIHRocm91Z2ggKi8KICAgICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLwotICAgIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIW5vX2NvbnRyb2wpIHsKICAgICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZQogCSBzb2NrZXQgcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZQpAQCAtNTEzMyw3ICs1ODIzLDcgQEAKIAkgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUgc3lzdGVtJ3MgZGVmYXVsdCBzaG91bGQgYmUKIAkgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0IHdpbGwgZGVmYXVsdCB0byA4LCB3aGljaAogCSB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgICAKKwogICAgICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlCT0JRE9fVENQX1JSOwogICAgICAgdGNwX3JyX3JlcXVlc3QtPnJlY3ZfYnVmX3NpemUJPQlyc3Jfc2l6ZV9yZXE7CiAgICAgICB0Y3BfcnJfcmVxdWVzdC0+c2VuZF9idWZfc2l6ZQk9CXJzc19zaXplX3JlcTsKQEAgLTUxNTYsMTMgKzU4NDYsMTMgQEAKICAgICAgIH0KICAgICAgIHRjcF9ycl9yZXF1ZXN0LT5wb3J0ICAgICAgICAgICAgICA9ICAgICAgYXRvaShyZW1vdGVfZGF0YV9wb3J0KTsKICAgICAgIHRjcF9ycl9yZXF1ZXN0LT5pcGZhbWlseSA9IGFmX3RvX25mKHJlbW90ZV9yZXMtPmFpX2ZhbWlseSk7Ci0gICAgICAKKwogICAgICAgaWYgKGRlYnVnID4gMSkgewogCWZwcmludGYod2hlcmUsIm5ldHBlcmY6IHNlbmRfdGNwX3JyOiByZXF1ZXN0aW5nIFRDUCByciB0ZXN0XG4iKTsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBzZW5kX3JlcXVlc3QoKTsKLSAgICAgIAorCiAgICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50CiAJIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrCiAJIGludG8gdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLgpAQCAtNTE3Myw5ICs1ODYzLDkgQEAKIAkgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0IGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcwogCSB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzIGJlaW5nIHNlbnQgZm9yIHRoZSBUQ1AKIAkgdGVzdHMuICAqLwotICAKKwogICAgICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogCWlmIChkZWJ1ZykKIAkgIGZwcmludGYod2hlcmUsInJlbW90ZSBsaXN0ZW4gZG9uZS5cbiIpOwpAQCAtNTE5NCwzMyArNTg4NCw0MyBAQAogCQluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAJcGVycm9yKCIiKTsKIAlmZmx1c2god2hlcmUpOwotCQorCiAJZXhpdCgxKTsKICAgICAgIH0KICAgICB9CiAKICNpZmRlZiBXQU5UX0RFTU8KLSAgICBERU1PX1JSX1NFVFVQKDEwMDApCisgICAgZGVtb19ycl9zZXR1cCgxMDAwKTsKICNlbmRpZgogCiAgICAgLypDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQgICovCi0gICAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsIAorICAgIGlmIChjb25uZWN0KHNlbmRfc29ja2V0LAogCQlyZW1vdGVfcmVzLT5haV9hZGRyLAogCQlyZW1vdGVfcmVzLT5haV9hZGRybGVuKSA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IGRhdGEgc29ja2V0IGNvbm5lY3QgZmFpbGVkIik7Ci0gICAgICAKKwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKKyNpZmRlZiBXSU4zMgorICAgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgICAgLyogdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QgKi8KKyAgICAvKiBXaW5kb3dzLXNwZWNpZmljIHdheSBJIGNhbiBmaW5kIHRvIGZvcmNlIHRoZSB3aW5zb2NrIGNhbGxzIHRvICovCisgICAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAgIC8qIDk1IGFuZCBOVCBhbmQgaXMgY2xvc2VyIHRvIHdoYXQgbmV0cGVyZiBleHBlY3RzIGZyb20gVW5peCBzaWduYWxzICovCisgICAgLyogYW5kIHN1Y2ggd291bGQgYmUgYXBwcmVjaWF0ZWQgcmFqIDEvOTYgKi8KKyAgICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNlbmRfc29ja2V0OworI2VuZGlmIC8qIFdJTjMyICovCisKICAgICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciB0aGUgKi8KICAgICAvKiBjb25uZWN0IHdvdWxkIGhhdmUgZmFpbGVkLCBvciB0aGUgcHJldmlvdXMgcmVzcG9uc2Ugd291bGQgaGF2ZSAqLwogICAgIC8qIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlIGV4dHJhICovCiAgICAgLyogbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlIGl0ICovCiAgICAgLyogaGVyZS4gSWYgaXQgZGlkbid0LCB3ZSBtaWdodCBhcyB3ZWxsIHN0YXJ0IHB1bXBpbmcgZGF0YS4gKi8KLSAgICAKKwogICAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LCB0aGV5ICovCiAgICAgLyogY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLwotICAgIAorCiAgICAgaWYgKHRlc3RfdGltZSkgewogICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgICAgdGltZXNfdXAgPSAwOwpAQCAtNTIzMiwxNyArNTkzMiwxNyBAQAogICAgICAgdHJhbnNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICAgIHRpbWVzX3VwID0gMTsKICAgICB9Ci0gICAgCisKICAgICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5ICovCiAgICAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KICAgICAvKiB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCi0gICAgCisKICAgICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKIAogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgSU5URVJWQUxTX0lOSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgIAorCiAgICAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcyAqLwogICAgIC8qIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiAqLwogICAgIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KQEAgLTUyNTQsNyArNTk1NCw3IEBACiAKICNpZmRlZiBXQU5UX0RFTU8KICAgICAgIGlmIChkZW1vX21vZGUpIHsKLQlISVNUX3RpbWVzdGFtcChkZW1vX29uZV9wdHIpOworCWRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CiAgICAgICB9CiAjZW5kaWYKIApAQCAtNTI5NSw3ICs1OTk1LDcgQEAKICAgICAgIH0KIAogI2VuZGlmIC8qIFdBTlRfRklSU1RfQlVSU1QgKi8KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAJLyogdGltZXN0YW1wIGp1c3QgYmVmb3JlIG91ciBjYWxsIHRvIHNlbmQsIGFuZCB0aGVuIGFnYWluIGp1c3QKQEAgLTUzMDYsNyArNjAwNiw3IEBACiAJSElTVF90aW1lc3RhbXAoJnRpbWVfb25lKTsKICAgICAgIH0KICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwotICAgICAgCisKICAgICAgIGlmICgobGVuID0gc2VuZChzZW5kX3NvY2tldCwKIAkJICAgICAgc2VuZF9yaW5nLT5idWZmZXJfcHRyLAogCQkgICAgICByZXFfc2l6ZSwKQEAgLTUzMzMsNyArNjAzMyw3IEBACiAJaWYoKHJzcF9ieXRlc19yZWN2ZD1yZWN2KHNlbmRfc29ja2V0LAogCQkJCSB0ZW1wX21lc3NhZ2VfcHRyLAogCQkJCSByc3BfYnl0ZXNfbGVmdCwKLQkJCQkgMCkpID09IFNPQ0tFVF9FUlJPUikgeworCQkJCSAwKSkgPT0gU09DS0VUX0VSUk9SIHx8IHJzcF9ieXRlc19yZWN2ZCA9PSAwKSB7CiAJCWlmICggU09DS0VUX0VJTlRSKHJzcF9ieXRlc19yZWN2ZCkgKSB7CiAJCSAgICAvKiBXZSBoaXQgdGhlIGVuZCBvZiBhIHRpbWVkIHRlc3QuICovCiAJCQl0aW1lZF9vdXQgPSAxOwpAQCAtNTM0NCw5ICs2MDQ0LDkgQEAKIAl9CiAJcnNwX2J5dGVzX2xlZnQgLT0gcnNwX2J5dGVzX3JlY3ZkOwogCXRlbXBfbWVzc2FnZV9wdHIgICs9IHJzcF9ieXRlc19yZWN2ZDsKLSAgICAgIH0JCisgICAgICB9CiAgICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7Ci0gICAgICAKKwogI2lmZGVmIFdBTlRfRklSU1RfQlVSU1QKICAgICAgIC8qIHNvLCBzaW5jZSB3ZSd2ZSBnb3R0ZW4gYSByZXNwb25zZSBiYWNrLCB1cGRhdGUgdGhlCiAJIGJvb2trZWVwaW5nIGFjY29yZGluZ2x5LiAgdGhlcmUgaXMgb25lIGxlc3MgcmVxdWVzdApAQCAtNTM2OCw3ICs2MDY4LDcgQEAKIAkvKiBhbm90aGVyIGNhbGwgdG8gYnJlYWsuICovCiAJYnJlYWs7CiAgICAgICB9Ci0gICAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBpZiAodmVyYm9zaXR5ID4gMSkgewogCUhJU1RfdGltZXN0YW1wKCZ0aW1lX3R3byk7CkBAIC01Mzc3LDE4ICs2MDc3LDE4IEBACiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogI2lmZGVmIFdBTlRfREVNTwotICAgICAgREVNT19SUl9JTlRFUlZBTCgxKTsKKyAgICAgIGRlbW9fcnJfaW50ZXJ2YWwoMSk7CiAjZW5kaWYKIAotI2lmZGVmIFdBTlRfSU5URVJWQUxTICAgICAgCisjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICAgIElOVEVSVkFMU19XQUlUKCk7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAgIAotICAgICAgbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCisKKyAgICAgIG51bW1lc3NhZ2VzKys7CiAgICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAJdHJhbnNfcmVtYWluaW5nLS07CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgaWYgKGRlYnVnID4gMykgewogCWlmICgobnVtbWVzc2FnZXMgJSAxMDApID09IDApIHsKIAkgIGZwcmludGYod2hlcmUsCkBAIC01NDA1LDE5ICs2MTA1LDI1IEBACiAgICAgICAgd2hlbiB0aGV5IHdlcmUgYmVpbmcgY29udHJvbGxlZCBieSB0aW1lLiBTbywgSSBoYXZlIHJlcGxhY2VkCiAgICAgICAgdGhpcyBzaHV0ZG93biBjYWxsIHdpdGggYSBjYWxsIHRvIGNsb3NlIHRoYXQgY2FuIGJlIGZvdW5kIGxhdGVyCiAgICAgICAgaW4gdGhlIHByb2NlZHVyZS4gKi8KLSAgICAKKwogICAgIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LAogICAgICAgIGFuZCB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAgIAorCiAgICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nICovCiAJCQkJCQkvKiBtZWFzdXJlZD8gaG93IGxvbmcgKi8KIAkJCQkJCS8qIGRpZCB3ZSByZWFsbHkgcnVuPyAqLwotICAgIAorCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyNpZmRlZiBXSU4zMgorICAgIHN0b3BfaXRpbWVyKCk7CisjZW5kaWYKKyNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLworCiAgICAgaWYgKCFub19jb250cm9sKSB7CiAgICAgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUKIAkgY2FsY3VsYXRlZCBDUFUgdXRpbGl6YXRpb24uIElmIGl0IHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdAotCSB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8gCi0gICAgCisJIHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLworCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7CiAgICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAJaWYgKGRlYnVnKQpAQCAtNTQzMiwxMiArNjEzOCwxMiBAQAogCWV4aXQoMSk7CiAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciAidGhyb3VnaHB1dCIgd2FzIGZvciB0aGUgdGVzdC4gKi8KLSAgCisKICAgICBieXRlc194ZmVyZAk9IChyZXFfc2l6ZSAqIG51bW1lc3NhZ2VzKSArIChyc3Bfc2l6ZSAqIG51bW1lc3NhZ2VzKTsKICAgICB0aHJ1cHV0CT0gbnVtbWVzc2FnZXMvZWxhcHNlZF90aW1lOwotICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdQogICAgICAgIHV0aWxpemF0aW9uIGZvciB0aGUgc3lzdGVtKHMpIE9mIGNvdXJzZSwgc29tZSBvZiB0aGUKQEAgLTU0NTgsNyArNjE2NCw3IEBACiAJbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7CiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IHRjcF9ycl9yZXN1bHQtPmNwdV91dGlsOwogCS8qIHNpbmNlIGNhbGNfc2VydmljZSBkZW1hbmQgaXMgZG9pbmcgbXMvS3VuaXQgd2Ugd2lsbApAQCAtNTQ3Myw3ICs2MTc5LDcgQEAKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAoZmxvYXQpIC0xLjA7CiAgICAgICB9Ci0gICAgICAKKwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIC8qIHdlIHdlcmUgbm90IG1lYXN1cmluZyBjcHUsIGZvciB0aGUgY29uZmlkZW5jZSBzdHVmZiwgd2UgKi8KQEAgLTU0ODcsNyArNjE5Myw3IEBACiAgICAgLyogYXQgdGhpcyBwb2ludCwgd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIGNvbmZpZGVuY2UgaW5mb3JtYXRpb24uCiAgICAgICAgaWYgZGVidWdnaW5nIGlzIG9uLCBjYWxjdWxhdGVfY29uZmlkZW5jZSB3aWxsIHByaW50LW91dCB0aGUKICAgICAgICBwYXJhbWV0ZXJzIHdlIHBhc3MgaXQgKi8KLSAgICAKKwogICAgIGNhbGN1bGF0ZV9jb25maWRlbmNlKGNvbmZpZGVuY2VfaXRlcmF0aW9uLAogCQkJIGVsYXBzZWRfdGltZSwKIAkJCSB0aHJ1cHV0LApAQCAtNTQ5NSw4ICs2MjAxLDggQEAKIAkJCSByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQkJIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7Ci0gICAgCi0gICAgCisKKwogICAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uKys7CiAKICAgICAvKiB3ZSBhcmUgbm93IGRvbmUgd2l0aCB0aGUgc29ja2V0LCBzbyBjbG9zZSBpdCAqLwpAQCAtNTUzMCw3ICs2MjM2LDcgQEAKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKGNwdV9tZXRob2QpOwogICAgIHJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QodGNwX3JyX3Jlc3VsdC0+Y3B1X21ldGhvZCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKQEAgLTU1MzgsNyArNjI0NCw3IEBACiAJCWNwdV9mbXRfMCwKIAkJbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCWxvY2FsX2NwdV9tZXRob2QsCi0JCSgocHJpbnRfaGVhZGVycykgfHwgCisJCSgocHJpbnRfaGVhZGVycykgfHwKIAkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgfQogICAgICAgZWxzZSB7CkBAIC01NTQ2LDcgKzYyNTIsNyBAQAogCQljcHVfZm10XzAsCiAJCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwKIAkJcmVtb3RlX2NwdV9tZXRob2QsCi0JCSgocHJpbnRfaGVhZGVycykgfHwgCisJCSgocHJpbnRfaGVhZGVycykgfHwKIAkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC01NTY1LDcgKzYyNzEsNyBAQAogCQkgIGZvcm1hdF91bml0cygpLAogCQkgIGxvY2FsX2NwdV9tZXRob2QsCiAJCSAgcmVtb3RlX2NwdV9tZXRob2QpOwotCX0JICAKKwl9CiAgICAgICB9CiAKICAgICAgIGZwcmludGYod2hlcmUsCkBAIC01NTc1LDE0ICs2MjgxLDE0IEBACiAJICAgICAgcmVxX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgcmVxdWVzdHMgKi8KIAkgICAgICByc3Bfc2l6ZSwJCS8qIGd1ZXNzICovCiAJICAgICAgZWxhcHNlZF90aW1lLAkJLyogaG93IGxvbmcgd2FzIHRoZSB0ZXN0ICovCi0JICAgICAgKCd4JyA9PSBsaWJmbXQpID8gdGhydXB1dCA6IAorCSAgICAgICgneCcgPT0gbGliZm10KSA/IHRocnVwdXQgOgogCSAgICAgIGNhbGNfdGhydXB1dF9pbnRlcnZhbF9vbW5pKHRocnVwdXQgKiAocmVxX3NpemUrcnNwX3NpemUpLAogCQkJCQkgMS4wKSwKIAkgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24sCS8qIGxvY2FsIGNwdSAqLwogCSAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCS8qIHJlbW90ZSBjcHUgKi8KIAkgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwJLyogbG9jYWwgc2VydmljZSBkZW1hbmQgKi8KIAkgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQsCS8qIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZCAqLwotCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwgCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAogCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgY3B1X2ZtdF8xX2xpbmVfMiwKQEAgLTU1OTMsNyArNjI5OSw3IEBACiAgIH0KICAgZWxzZSB7CiAgICAgLyogVGhlIHRlc3RlciBkaWQgbm90IHdpc2ggdG8gbWVhc3VyZSBzZXJ2aWNlIGRlbWFuZC4gKi8KLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgZnByaW50Zih3aGVyZSwKQEAgLTU2MDEsNyArNjMwNyw3IEBACiAJICAgICAgKCd4JyA9PSBsaWJmbXQpID8gdGhydXB1dCA6CiAJICAgICAgY2FsY190aHJ1cHV0X2ludGVydmFsX29tbmkodGhydXB1dCAqIChyZXFfc2l6ZStyc3Bfc2l6ZSksCiAJCQkJCSAxLjApLAotCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwgCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAogCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgMToKQEAgLTU2MjcsMjYgKzYzMzMsMjYgQEAKIAkJIGNhbGNfdGhydXB1dF9pbnRlcnZhbF9vbW5pIHdpdGggYW4gZWxhcHNlZCB0aW1lIG9mCiAJCSAxLjAgcyB0byBnZXQgaXQgY29udmVydGVkIHRvIFtrbWddYml0cy9zIG9yCiAJCSBbS01HXUJ5dGVzL3MgKi8KLQkgICAgICAoJ3gnID09IGxpYmZtdCkgPyAgdGhydXB1dCA6IAorCSAgICAgICgneCcgPT0gbGliZm10KSA/ICB0aHJ1cHV0IDoKIAkgICAgICBjYWxjX3RocnVwdXRfaW50ZXJ2YWxfb21uaSh0aHJ1cHV0ICogKHJlcV9zaXplK3JzcF9zaXplKSwKIAkJCQkJIDEuMCksCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICB0cHV0X2ZtdF8xX2xpbmVfMiwKIAkgICAgICByc3Nfc2l6ZSwgCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCiAJICAgICAgcnNyX3NpemUpOwotICAgICAgCisKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICAKKwogICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZSAqLwogICAvKiBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgdGVzdCwgYnV0IGF0IHRoZSAqLwogICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KICAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCi0gIAorCiAgIC8qIGhvdyB0byBoYW5kbGUgdGhlIHZlcmJvc2UgaW5mb3JtYXRpb24gaW4gdGhlIHByZXNlbmNlIG9mICovCiAgIC8qIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGlzIHlldCB0byBiZSBkZXRlcm1pbmVkLi4uIHJhaiAxMS85NCAqLwogICBpZiAodmVyYm9zaXR5ID4gMSkgewpAQCAtNTY2MCw3ICs2MzY2LDcgQEAKICAgICAgICBzaW5jZSB0aGlzIGlzIGJhc2ljYWxseSB0aGUgbGFzdCB0aGluZyB3ZSBhcmUgZ29pbmcgdG8gZG8gd2l0aAogICAgICAgIGl0LCBpdCBkb2VzIG5vdCBtYXR0ZXIuICBzbyB0aGVyZSA6KSByYWogMjAwNy0wNi0wOCAqLwogICAgIC8qIGlmIHRoZSB1c2VyIHdhcyBhc2tpbmcgZm9yIHRyYW5zYWN0aW9ucywgdGhlbiB3ZSByZXBvcnQKLSAgICAgICBtZWdhYml0cyBwZXIgc2VkY29uZCBmb3IgdGhlIHVuaWRpcmVjdGlvbmFsIHRocm91Z2hwdXQsCisgICAgICAgbWVnYWJpdHMgcGVyIHNlY29uZCBmb3IgdGhlIHVuaWRpcmVjdGlvbmFsIHRocm91Z2hwdXQsCiAgICAgICAgb3RoZXJ3aXNlIHdlIHVzZSB0aGUgZGVzaXJlZCB1bml0cy4gKi8KICAgICBpZiAoJ3gnID09IGxpYmZtdCkgewogICAgICAgbGliZm10ID0gJ20nOwpAQCAtNTY3OCw4ICs2Mzg0LDggQEAKIAkgICAgICAgb3V0c3RhbmRpbmcgYXQgYW55IG9uZSB0aW1lLiBvdGhlcndpc2Ugd2Ugd2lsbAogCSAgICAgICB1bmRlcnJlcG9ydCB0aGUgbGF0ZW5jeSBvZiBpbmRpdmlkdWFsCiAJICAgICAgIHRyYW5zYWN0aW9ucy4gbGVhcm5lZCBmcm9tIHNhZiBieSByYWogMjAwNy0wNi0wOCAgKi8KLQkgICAgKCgoZG91YmxlKTEuMC90aHJ1cHV0KSooZG91YmxlKTEwMDAwMDAuMCkgKiAKLQkgICAgKGRvdWJsZSkgKDErZmlyc3RfYnVyc3Rfc2l6ZSksCisJICAgICgoKGRvdWJsZSkxLjAvdGhydXB1dCkqKGRvdWJsZSkxMDAwMDAwLjApICoKKwkgICAgKGRvdWJsZSkgKDEgKyAoKGZpcnN0X2J1cnN0X3NpemUgPiAwKSA/IGZpcnN0X2J1cnN0X3NpemUgOiAwKSksCiAJICAgIHRocnVwdXQsCiAJICAgIGNhbGNfdGhydXB1dF9pbnRlcnZhbF9vbW5pKHRocnVwdXQgKiAoZG91YmxlKXJlcV9zaXplLDEuMCksCiAJICAgIGNhbGNfdGhydXB1dF9pbnRlcnZhbF9vbW5pKHRocnVwdXQgKiAoZG91YmxlKXJzcF9zaXplLDEuMCkpOwpAQCAtNTY5MSw5ICs2Mzk3LDQwIEBACiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogICB9Ci0gIAorCiB9CisjZW5kaWYgLyogV0FOVF9NSUdSQVRJT04gKi8KIAwKKyNpZiBkZWZpbmVkKF9fbGludXgpCisvKgorICogTGludXggaGFzIHRoaXMgb2RkIGJlaGF2aW9yIHdoZXJlIGlmIHRoZSBzb2NrZXQgYnVmZmVycyBhcmUgbGFyZ2VyIHRoYW4KKyAqIGEgZGV2aWNlJ3MgdHhxdWV1ZWxlbiwgdGhlIGtlcm5lbCB3aWxsIHNpbGVudGx5IGRyb3AgdHJhbnNtaXRzIHdoaWNoIHdvdWxkCisgKiBub3QgZml0IGludG8gdGhlIHR4IHF1ZXVlLCBhbmQgbm90ICBwYXNzIGFuIEVOT0JVRlMgZXJyb3IgYmFjayB0byB0aGUKKyAqIGFwcGxpY2F0aW9uLiAgQXMgYSByZXN1bHQsIGEgVURQIHN0cmVhbSB0ZXN0IGNhbiByZXBvcnQgYWJzdXJkIHRyYW5zbWl0CisgKiBiYW5kd2lkdGhzIChsaWtlIDIwR2IvcyBvbiBhIDFHYkUgTklDKS4gIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGF2b2lkZWQgaWYKKyAqIHlvdSAgcmVxdWVzdCBleHRlbmRlZCBlcnJvciByZXBvcnRpbmcgb24gdGhlIHNvY2tldC4gIFRoaXMgaXMgZG9uZSBieQorICogc2V0dGluZyB0aGUgSVBfUkVDVkVSUiBzb2NrZXQgb3B0aW9uIGF0IHRoZSBJUCBsZXZlbC4KKyAqLworc3RhdGljIHZvaWQKK2VuYWJsZV9lbm9idWZzKGludCBzKQoreworICBzdHJ1Y3QgcHJvdG9lbnQgKnByOworICBpbnQgb24gPSAxOworCisgIGlmICgocHIgPSBnZXRwcm90b2J5bmFtZSgiaXAiKSkgPT0gTlVMTCkgeworICAgIGZwcmludGYod2hlcmUsICJlbmFibGVfZW5vYnVmcyBmYWlsZWQ6IGdldHByb3RvYnluYW1lXG4iKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIHJldHVybjsKKyAgfQorICBpZiAoc2V0c29ja29wdChzLCBwci0+cF9wcm90bywgSVBfUkVDVkVSUiwgKGNoYXIgKikmb24sIHNpemVvZihvbikpIDwgMCkgeworICAgIGZwcmludGYod2hlcmUsICJlbmFibGVfZW5vYnVmcyBmYWlsZWQ6IHNldHNvY2tvcHRcbiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgcmV0dXJuOworICB9Cit9CisjZW5kaWYKKworI2lmbmRlZiBXQU5UX01JR1JBVElPTgogdm9pZAogc2VuZF91ZHBfc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKQEAgLTU3MDksNDUgKzY0NDYsNDUgQEAKIFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgIE1lc3NhZ2VzICAgICAgICAgICAgICAgIFxuXAogU2l6ZSAgICBTaXplICAgICBUaW1lICAgICAgICAgT2theSBFcnJvcnMgICBUaHJvdWdocHV0XG5cCiBieXRlcyAgIGJ5dGVzICAgIHNlY3MgICAgICAgICAgICAjICAgICAgIyAgICVzL3NlY1xuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPSAiXAogJTZkICAlNmQgICAlLTcuMmYgICAlN2QgJTZkICAgICU3LjJmXG5cCiAlNmQgICAgICAgICAgICUtNy4yZiAgICU3ZCAgICAgICAgICAgJTcuMmZcblxuIjsKLSAgCi0gIAorCisKICAgY2hhciAqY3B1X3RpdGxlID0gIlwKIFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgIE1lc3NhZ2VzICAgICAgICAgICAgICAgICAgIENQVSAgICAgIFNlcnZpY2VcblwKIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgICAgIE9rYXkgRXJyb3JzICAgVGhyb3VnaHB1dCAgIFV0aWwgICAgIERlbWFuZFxuXAogYnl0ZXMgICBieXRlcyAgICBzZWNzICAgICAgICAgICAgIyAgICAgICMgICAlcy9zZWMgJSUgJWMlYyAgICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuMmYgJWNcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMSA9ICJcCiAlNmQgICU2ZCAgICUtNy4yZiAgICU3ZCAlNmQgICAgJTcuMWYgICAgICUtNi4yZiAgICUtNi4zZlxuXAogJTZkICAgICAgICAgICAlLTcuMmYgICAlN2QgICAgICAgICAgICU3LjFmICAgICAlLTYuMmYgICAlLTYuM2ZcblxuIjsKLSAgCisKICAgdW5zaWduZWQgaW50CW1lc3NhZ2VzX3JlY3ZkOwogICB1bnNpZ25lZCBpbnQgCW1lc3NhZ2VzX3NlbnQ7CiAgIHVuc2lnbmVkIGludAlmYWlsZWRfc2VuZHM7CiAKLSAgZmxvYXQJZWxhcHNlZF90aW1lLCAgCisgIGZsb2F0CWVsYXBzZWRfdGltZSwKICAgICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uLAogICAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uOwotICAKKwogICBmbG9hdAkgbG9jYWxfc2VydmljZV9kZW1hbmQsIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlIGxvY2FsX3RocnVwdXQsIHJlbW90ZV90aHJ1cHV0OwogICBkb3VibGUgYnl0ZXNfc2VudDsKICAgZG91YmxlIGJ5dGVzX3JlY3ZkOwotIAotIAorCisKICAgaW50CWxlbjsKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAgIFNPQ0tFVCAJZGF0YV9zb2NrZXQ7Ci0gIAorCiAgIHVuc2lnbmVkIGludCBzdW1fbWVzc2FnZXNfc2VudDsKICAgdW5zaWduZWQgaW50IHN1bV9tZXNzYWdlc19yZWN2ZDsKICAgdW5zaWduZWQgaW50IHN1bV9mYWlsZWRfc2VuZHM7CkBAIC01NzU1LDE4ICs2NDkyLDE4IEBACiAKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKLSAgCisKICAgc3RydWN0CXVkcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKnVkcF9zdHJlYW1fcmVxdWVzdDsKICAgc3RydWN0CXVkcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSp1ZHBfc3RyZWFtX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdWRwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdAkqdWRwX3N0cmVhbV9yZXN1bHRzOwotICAKLSAgdWRwX3N0cmVhbV9yZXF1ZXN0CT0gCisKKyAgdWRwX3N0cmVhbV9yZXF1ZXN0CT0KICAgICAoc3RydWN0IHVkcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHVkcF9zdHJlYW1fcmVzcG9uc2UJPSAKKyAgdWRwX3N0cmVhbV9yZXNwb25zZQk9CiAgICAgKHN0cnVjdCB1ZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHVkcF9zdHJlYW1fcmVzdWx0cwk9IAorICB1ZHBfc3RyZWFtX3Jlc3VsdHMJPQogICAgIChzdHJ1Y3QgdWRwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwpAQCAtNTc3Nyw3ICs2NTE0LDcgQEAKICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIGNvbXBsZXRlX2FkZHJpbmZvcygmcmVtb3RlX3JlcywKIAkJICAgICAmbG9jYWxfcmVzLAogCQkgICAgIHJlbW90ZV9ob3N0LApAQCAtNTgwNiwyMiArNjU0MywyMiBAQAogCiAgIHdoaWxlICgoKGNvbmZpZGVuY2UgPCAwKSAmJiAoY29uZmlkZW5jZV9pdGVyYXRpb24gPCBpdGVyYXRpb25fbWF4KSkgfHwKIAkgKGNvbmZpZGVuY2VfaXRlcmF0aW9uIDw9IGl0ZXJhdGlvbl9taW4pKSB7Ci0gICAgCisKICAgICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzLiB3ZSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgd2UgbWlnaHQgYmUgKi8KICAgICAvKiBnb2luZyB0aHJvdWdoIHRoZSBsb29wIG1vcmUgdGhhbiBvbmNlLiAqLwogICAgIG1lc3NhZ2VzX3NlbnQgID0gMDsKICAgICBtZXNzYWdlc19yZWN2ZCA9IDA7CiAgICAgZmFpbGVkX3NlbmRzICAgPSAwOwogICAgIHRpbWVzX3VwICAgICAgID0gMDsKLSAgICAKKwogICAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldAkJCSovCiAgICAgZGF0YV9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKLSAgICAKKwogICAgIGlmIChkYXRhX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBwZXJyb3IoInVkcF9zZW5kOiBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBub3csIHdlIHdhbnQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBzZW5kX3NpemUgKi8KICAgICBpZiAoc2VuZF9zaXplID09IDApIHsKICAgICAgIGlmIChsc3Nfc2l6ZSA+IDApIHsKQEAgLTU4MzEsMzkgKzY1NjgsMzkgQEAKIAlzZW5kX3NpemUgPSA0MDk2OwogICAgICAgfQogICAgIH0KLSAgICAKLSAgICAKKworCiAgICAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlciB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQsICovCiAgICAgLyogbW9zdCBvZiB0aGUgbnVtYmVycyBoZXJlIGFyZSBqdXN0IGEgaGFjayB0byBwaWNrIHNvbWV0aGluZyBuaWNlICovCiAgICAgLyogYW5kIGJpZyBpbiBhbiBhdHRlbXB0IHRvIG5ldmVyIHRyeSB0byBzZW5kIGEgYnVmZmVyIGEgc2Vjb25kIHRpbWUgKi8KICAgICAvKiBiZWZvcmUgaXQgbGVhdmVzIHRoZSBub2RlLi4udW5sZXNzIHRoZSB1c2VyIHNldCB0aGUgd2lkdGggKi8KICAgICAvKiBleHBsaWNpdGx5LiAqLwogICAgIGlmIChzZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAzMjsKLSAgICAKKwogICAgIGlmIChzZW5kX3JpbmcgPT0gTlVMTCApIHsKICAgICAgIHNlbmRfcmluZyA9IGFsbG9jYXRlX2J1ZmZlcl9yaW5nKHNlbmRfd2lkdGgsCiAJCQkJICAgICAgIHNlbmRfc2l6ZSwKIAkJCQkgICAgICAgbG9jYWxfc2VuZF9hbGlnbiwKIAkJCQkgICAgICAgbG9jYWxfc2VuZF9vZmZzZXQpOwogICAgIH0KLSAgICAKLSAgICAKKworCiAgICAgLyogaWYgdGhlIHVzZXIgc3VwcGxpZWQgYSBjcHUgcmF0ZSwgdGhpcyBjYWxsIHdpbGwgY29tcGxldGUgcmF0aGVyICovCiAgICAgLyogcXVpY2tseSwgb3RoZXJ3aXNlLCB0aGUgY3B1IHJhdGUgd2lsbCBiZSByZXR1cmVkIHRvIHVzIGZvciAqLwogICAgIC8qIHBvc3NpYmxlIGRpc3BsYXkuIFRoZSBMaWJyYXJ5IHdpbGwga2VlcCBpdCdzIG93biBjb3B5IG9mIHRoaXMgZGF0YSAqLwogICAgIC8qIGZvciB1c2UgZWxzZXdoZXJlLiBXZSB3aWxsIG9ubHkgZGlzcGxheSBpdC4gKERvZXMgdGhhdCBtYWtlIGl0ICovCiAgICAgLyogIm9wYXF1ZSIgdG8gdXM/KSAqLwotICAgIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkKICAgICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7Ci0gICAgCisKICAgICBpZiAoIW5vX2NvbnRyb2wpIHsKICAgICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gc2V0IHVwIHRoZSBkYXRhIGNvbm5lY3Rpb24uIFRoZSBzZXJ2ZXIKICAgICAgICAgIHNlbmRzIGJhY2sgdGhlIHBvcnQgbnVtYmVyIGFuZCBhbHRlcnMgdGhlIHNvY2tldCBwYXJhbWV0ZXJzCiAgICAgICAgICB0aGVyZS4gIE9mIGNvdXJzZSB0aGlzIGlzIGEgZGF0YWdyYW0gc2VydmljZSBzbyBubyBjb25uZWN0aW9uCiAgICAgICAgICBpcyBhY3R1YWxseSBzZXQgdXAsIHRoZSBzZXJ2ZXIganVzdCBzZXRzIHVwIHRoZSBzb2NrZXQgYW5kCiAgICAgICAgICBiaW5kcyBpdC4gKi8KLSAgICAKKwogICAgICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlICAgICAgPSBET19VRFBfU1RSRUFNOwogICAgICAgdWRwX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplICA9IHJzcl9zaXplX3JlcTsKICAgICAgIHVkcF9zdHJlYW1fcmVxdWVzdC0+bWVzc2FnZV9zaXplICAgPSBzZW5kX3NpemU7CkBAIC01ODc3LDExICs2NjE0LDExIEBACiAgICAgICB1ZHBfc3RyZWFtX3JlcXVlc3QtPnNvX3NuZGF2b2lkICAgID0gcmVtX3NuZGF2b2lkOwogICAgICAgdWRwX3N0cmVhbV9yZXF1ZXN0LT5wb3J0ICAgICAgICAgICA9IGF0b2kocmVtb3RlX2RhdGFfcG9ydCk7CiAgICAgICB1ZHBfc3RyZWFtX3JlcXVlc3QtPmlwZmFtaWx5ID0gYWZfdG9fbmYocmVtb3RlX3Jlcy0+YWlfZmFtaWx5KTsKLSAgICAgIAorCiAgICAgICBzZW5kX3JlcXVlc3QoKTsKLSAgICAgIAorCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7Ci0gICAgICAKKwogICAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogCWlmIChkZWJ1ZykKIAkgIGZwcmludGYod2hlcmUsInNlbmRfdWRwX3N0cmVhbTogcmVtb3RlIGRhdGEgY29ubmVjdGlvbiBkb25lLlxuIik7CkBAIC01ODkxLDIxICs2NjI4LDIxIEBACiAJcGVycm9yKCJzZW5kX3VkcF9zdHJlYW06IGVycm9yIG9uIHJlbW90ZSIpOwogCWV4aXQoMSk7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgLyogUGxhY2UgdGhlIHBvcnQgbnVtYmVyIHJldHVybmVkIGJ5IHRoZSByZW1vdGUgaW50byB0aGUgc29ja2FkZHIgKi8KICAgICAgIC8qIHN0cnVjdHVyZSBzbyBvdXIgc2VuZHMgY2FuIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UuIEFsc28gZ2V0ICovCiAgICAgICAvKiBzb21lIG9mIHRoZSByZXR1cm5lZCBzb2NrZXQgYnVmZmVyIGluZm9ybWF0aW9uIGZvciB1c2VyIGRpc3BsYXkuICovCi0gICAgICAKKwogICAgICAgLyogbWFrZSBzdXJlIHRoYXQgcG9ydCBudW1iZXJzIGFyZSBpbiB0aGUgcHJvcGVyIG9yZGVyICovCiAgICAgICBzZXRfcG9ydF9udW1iZXIocmVtb3RlX3Jlcywoc2hvcnQpdWRwX3N0cmVhbV9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlcik7Ci0gICAgICAKKwogICAgICAgcnNyX3NpemUgICAgICAgID0gdWRwX3N0cmVhbV9yZXNwb25zZS0+cmVjdl9idWZfc2l6ZTsKICAgICAgIHJzc19zaXplICAgICAgICA9IHVkcF9zdHJlYW1fcmVzcG9uc2UtPnNlbmRfYnVmX3NpemU7CiAgICAgICByZW1vdGVfY3B1X3JhdGUgPSB1ZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZTsKICAgICB9CiAKICNpZmRlZiBXQU5UX0RFTU8KLSAgICBERU1PX1NUUkVBTV9TRVRVUChsc3Nfc2l6ZSxyc3Jfc2l6ZSkKKyAgICBkZW1vX3N0cmVhbV9zZXR1cChsc3Nfc2l6ZSxyc3Jfc2l6ZSk7CiAjZW5kaWYKIAogICAgIC8qIFdlICJjb25uZWN0IiB1cCB0byB0aGUgcmVtb3RlIHBvc3QgdG8gYWxsb3cgaXMgdG8gdXNlIHRoZSBzZW5kICovCkBAIC01OTE0LDcgKzY2NTEsNyBAQAogICAgIC8qIHRoYXQgd2UgY2FuIGJlIGluZm9ybWVkIG9mIGNlcnRhaW4gdGhpbmdzLCBidXQgYW0gbm90IHN1cmUgKi8KICAgICAvKiB5ZXQuLi5hbHNvLCB0aGlzIGlzIHRoZSB3YXkgSSB3b3VsZCBleHBlY3QgYSBjbGllbnQgdG8gYmVoYXZlICovCiAgICAgLyogd2hlbiB0YWxraW5nIHRvIGEgc2VydmVyICovCi0gICAgaWYgKGxvY2FsX2Nvbm5lY3RlZCkgeyAKKyAgICBpZiAobG9jYWxfY29ubmVjdGVkKSB7CiAgICAgICAgaWYgKGNvbm5lY3QoZGF0YV9zb2NrZXQsCiAgICAgICAJCSAgIHJlbW90ZV9yZXMtPmFpX2FkZHIsCiAJCSAgIHJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pID09IElOVkFMSURfU09DS0VUKXsKQEAgLTU5MjUsMTMgKzY2NjIsMjcgQEAKICAgICAgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgIH0KICAgICB9Ci0gICAgCisKKyNpZiBkZWZpbmVkIChfX2xpbnV4KQorICBlbmFibGVfZW5vYnVmcyhkYXRhX3NvY2tldCk7CisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgIC8qIFdpbmRvd3Mtc3BlY2lmaWMgd2F5IEkgY2FuIGZpbmQgdG8gZm9yY2UgdGhlIHdpbnNvY2sgY2FsbHMgdG8gKi8KKyAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLworICAgIHdpbl9rbHVkZ2Vfc29ja2V0ID0gZGF0YV9zb2NrZXQ7CisjZW5kaWYgLyogV0lOMzIgKi8KKwogICAgIC8qIHNldCB1cCB0aGUgdGltZXIgdG8gY2FsbCB1cyBhZnRlciB0ZXN0X3RpbWUuIG9uZSBvZiB0aGVzZSBkYXlzLCAqLwogICAgIC8qIGl0IG1pZ2h0IGJlIG5pY2UgdG8gZmlndXJlLW91dCBhIG5pY2UgcmVsaWFibGUgd2F5IHRvIGhhdmUgdGhlICovCiAgICAgLyogdGVzdCBjb250cm9sbGVkIGJ5IGEgYnl0ZSBjb3VudCBhcyB3ZWxsLCBidXQgc2luY2UgVURQIGlzIG5vdCAqLwogICAgIC8qIHJlbGlhYmxlLCB0aGF0IGNvdWxkIHByb3ZlIGRpZmZpY3VsdC4gc28sIGluIHRoZSBtZWFudGltZSwgd2UgKi8KICAgICAvKiBvbmx5IGFsbG93IGEgVURQX1NUUkVBTSB0ZXN0IHRvIGJlIGEgdGltZWQgdGVzdC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIHRpbWVzX3VwID0gMDsKICAgICAgIHN0YXJ0X3RpbWVyKHRlc3RfdGltZSk7CkBAIC01OTQwLDE4ICs2NjkxLDE4IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCJTb3JyeSwgVURQX1NUUkVBTSB0ZXN0cyBtdXN0IGJlIHRpbWVkLlxuIik7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KLSAgICAKKwogICAgIC8qIEdldCB0aGUgc3RhcnQgY291bnQgZm9yIHRoZSBpZGxlIGNvdW50ZXIgYW5kIHRoZSBzdGFydCB0aW1lICovCi0gICAgCisKICAgICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgICAKKwogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgSU5URVJWQUxTX0lOSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwogCiAjaWZkZWYgV0FOVF9ERU1PCiAgICAgaWYgKGRlbW9fbW9kZSkgewotICAgICAgSElTVF90aW1lc3RhbXAoZGVtb19vbmVfcHRyKTsKKyAgICAgIGRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU5NjMsNyArNjcxNCw3IEBACiAgICAgLyogdGhlbiBzdGFydHMgYWdhaW4sIHdlIHdvdWxkIGVuZCB0aGUgdGVzdCB0b28gc29vbi4gc29tZXRoaW5nIHRvICovCiAgICAgLyogdGhpbmsgYWJvdXQuLi4gKi8KICAgICB3aGlsZSAoIXRpbWVzX3VwKSB7Ci0gICAgICAKKwogI2lmZGVmIERJUlRZCiAgICAgICAvKiB3ZSB3YW50IHRvIGRpcnR5IHNvbWUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGludGVnZXJzIGluIHRoZSBidWZmZXIgKi8KICAgICAgIC8qIHdlIGFyZSBhYm91dCB0byBzZW5kLiB3ZSBtYXkgYWxzbyB3YW50IHRvIGJyaW5nIHNvbWUgbnVtYmVyIG9mICovCkBAIC01OTc1LDE0ICs2NzI2LDE0IEBACiAJCSAgICBsb2NfZGlydHlfY291bnQsCiAJCSAgICBsb2NfY2xlYW5fY291bnQpOwogI2VuZGlmIC8qIERJUlRZICovCi0gICAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBpZiAodmVyYm9zaXR5ID4gMSkgewogCUhJU1RfdGltZXN0YW1wKCZ0aW1lX29uZSk7CiAgICAgICB9CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KLSAgICAgCi0gICAgICBpZiAobG9jYWxfY29ubmVjdGVkKSB7IAorCisgICAgICBpZiAobG9jYWxfY29ubmVjdGVkKSB7CiAgICAgICAgICBsZW4gPSBzZW5kKGRhdGFfc29ja2V0LAogCSAgCSAgICBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCiAJCSAgICBzZW5kX3NpemUsCkBAIC01OTk3LDcgKzY3NDgsNyBAQAogICAgICAgfQogCiAgICAgICBpZiAobGVuICE9IHNlbmRfc2l6ZSkgewotCWlmICgobGVuID49IDApIHx8IAorCWlmICgobGVuID49IDApIHx8CiAJICAgIFNPQ0tFVF9FSU5UUihsZW4pKQogCSAgYnJlYWs7CiAJaWYgKGVycm5vID09IEVOT0JVRlMpIHsKQEAgLTYwMDcsMTQgKzY3NTgsMTQgQEAKIAlwZXJyb3IoInVkcF9zZW5kOiBkYXRhIHNlbmQgZXJyb3IiKTsKIAlleGl0KDEpOwogICAgICAgfQotICAgICAgbWVzc2FnZXNfc2VudCsrOyAgICAgICAgICAKLSAgICAgIAorICAgICAgbWVzc2FnZXNfc2VudCsrOworCiAgICAgICAvKiBub3cgd2Ugd2FudCB0byBtb3ZlIG91ciBwb2ludGVyIHRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSAqLwogICAgICAgLyogZGF0YSBidWZmZXIuLi4gKi8KLSAgICAgIAorCiAgICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7Ci0gICAgICAKLSAgICAgIAorCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICAgICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKIAkvKiBnZXQgdGhlIHNlY29uZCB0aW1lc3RhbXAgKi8KQEAgLTYwMjQsMjQgKzY3NzUsMzAgQEAKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogCiAjaWZkZWYgV0FOVF9ERU1PCi0gICAgICBERU1PX1NUUkVBTV9JTlRFUlZBTChzZW5kX3NpemUpCisgICAgICBkZW1vX3N0cmVhbV9pbnRlcnZhbChzZW5kX3NpemUpOwogI2VuZGlmCiAKLSNpZmRlZiBXQU5UX0lOVEVSVkFMUyAgICAgIAorI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgICBJTlRFUlZBTFNfV0FJVCgpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgICAKKwogICAgIH0KLSAgICAKKwogICAgIC8qIFRoaXMgaXMgYSB0aW1lZCB0ZXN0LCBzbyB0aGUgcmVtb3RlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIHVzIGFmdGVyICovCiAgICAgLyogYSB0aW1lLiBXZSBzaG91bGQgbm90IG5lZWQgdG8gc2VuZCBhbnkgInN0cmFuZ2UiIG1lc3NhZ2VzIHRvIHRlbGwgKi8KICAgICAvKiB0aGUgcmVtb3RlIHRoYXQgdGhlIHRlc3QgaXMgY29tcGxldGVkLCB1bmxlc3Mgd2UgZGVjaWRlIHRvIGFkZCBhICovCiAgICAgLyogbnVtYmVyIG9mIG1lc3NhZ2VzIHRvIHRoZSB0ZXN0LiAqLwotICAgIAorCiAgICAgLyogdGhlIHRlc3QgaXMgb3Zlciwgc28gZ2V0IHN0YXRzIGFuZCBzdHVmZiAqLwotICAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwJCisgICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLAogCSAgICAgJmVsYXBzZWRfdGltZSk7Ci0gICAgCisKKyNpZiBkZWZpbmVkKFdBTlRfSU5URVJWQUxTKQorI2lmZGVmIFdJTjMyCisgICAgc3RvcF9pdGltZXIoKTsKKyNlbmRpZgorI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCisKICAgICBpZiAoIW5vX2NvbnRyb2wpIHsKICAgICAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kCSovCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7CkBAIC02MDY2LDE0ICs2ODIzLDE0IEBACiAKICAgICBieXRlc19zZW50ICAgID0gKGRvdWJsZSkgc2VuZF9zaXplICogKGRvdWJsZSkgbWVzc2FnZXNfc2VudDsKICAgICBsb2NhbF90aHJ1cHV0ID0gY2FsY190aHJ1cHV0KGJ5dGVzX3NlbnQpOwotICAgIAotICAgIAorCisKICAgICAvKiB3ZSBhc3VtZSB0aGF0IHRoZSByZW1vdGUgcmFuIGZvciBhcyBsb25nIGFzIHdlIGRpZCAqLwotICAgIAorCiAgICAgcmVtb3RlX3RocnVwdXQgPSBjYWxjX3RocnVwdXQoYnl0ZXNfcmVjdmQpOwotICAgIAorCiAgICAgLyogcHJpbnQgdGhlIHJlc3VsdHMgZm9yIHRoaXMgc29ja2V0IGFuZCBtZXNzYWdlIHNpemUgKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwogICAgICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgV2UgcGFzcyB6ZXJvcyBmb3IgdGhlIGxvY2FsICovCkBAIC02MDkzLDcgKzY4NTAsNyBAQAogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IChmbG9hdCkgLTEuMDsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IChmbG9hdCkgLTEuMDsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICAvKiBUaGUgbG9jYWwgY2FsY3VsYXRpb25zIGNvdWxkIHVzZSB2YXJpYWJsZXMgYmVpbmcga2VwdCBieSAqLwogICAgICAgLyogdGhlIGxvY2FsIG5ldGxpYiByb3V0aW5lcy4gVGhlIHJlbW90ZSBjYWxjdWF0aW9ucyBuZWVkIHRvICovCiAgICAgICAvKiBoYXZlIGEgZmV3IHRoaW5ncyBwYXNzZWQgdG8gdGhlbS4gKi8KQEAgLTYxMTcsMTEgKzY4NzQsMTEgQEAKICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSAoZmxvYXQpIC0xLjA7CiAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgID0gKGZsb2F0KSAtMS4wOwogICAgIH0KLSAgICAKKwogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoZSBjb25maWRlbmNlIGluZm9ybWF0aW9uLiAqLwogICAgIC8qIGlmIGRlYnVnZ2luZyBpcyBvbiwgY2FsY3VsYXRlX2NvbmZpZGVuY2Ugd2lsbCBwcmludC1vdXQgdGhlICovCiAgICAgLyogcGFyYW1ldGVycyB3ZSBwYXNzIGl0ICovCi0gICAgCisKICAgICBjYWxjdWxhdGVfY29uZmlkZW5jZShjb25maWRlbmNlX2l0ZXJhdGlvbiwKIAkJCSBlbGFwc2VkX3RpbWUsCiAJCQkgcmVtb3RlX3RocnVwdXQsCkBAIC02MTI5LDcgKzY4ODYsNyBAQAogCQkJIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCiAJCQkgbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCQkgcmVtb3RlX3NlcnZpY2VfZGVtYW5kKTsKLSAgICAKKwogICAgIC8qIHNpbmNlIHRoZSByb3V0aW5lIGNhbGN1bGF0ZV9jb25maWRlbmNlIGlzIHJhdGhlciBnZW5lcmljLCBhbmQgKi8KICAgICAvKiB3ZSBoYXZlIGEgZmV3IG90aGVyIHBhcm1zIG9mIGludGVyZXN0LCB3ZSB3aWxsIGRvIGEgbGl0dGxlIHdvcmsgKi8KICAgICAvKiBoZXJlIHRvIGNhY2x1bGF0ZSB0aGVpciBhdmVyYWdlLiAqLwpAQCAtNjEzNyw3ICs2ODk0LDcgQEAKICAgICBzdW1fbWVzc2FnZXNfcmVjdmQgKz0gbWVzc2FnZXNfcmVjdmQ7CiAgICAgc3VtX2ZhaWxlZF9zZW5kcyAgICs9IGZhaWxlZF9zZW5kczsKICAgICBzdW1fbG9jYWxfdGhydXB1dCAgKz0gbG9jYWxfdGhydXB1dDsKLSAgICAKKwogICAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uKys7CiAKICAgICAvKiB0aGlzIGRhdGFwb2ludCBpcyBkb25lLCBzbyB3ZSBkb24ndCBuZWVkIHRoZSBzb2NrZXQgYW55IGxvbmdlciAqLwpAQCAtNjE2OSw4ICs2OTI2LDggQEAKICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwogICAvKiBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0ICovCiAgIC8qIG5vdCBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCi0gICAgCi0gIAorCisKICAgaWYgKGNvbmZpZGVuY2UgPCAwKSB7CiAgICAgLyogd2UgZGlkIG5vdCBoaXQgY29uZmlkZW5jZSwgYnV0IHdlcmUgd2UgYXNrZWQgdG8gbG9vayBmb3IgaXQ/ICovCiAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPiAxKSB7CkBAIC02MTgxLDcgKzY5MzgsNyBAQAogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICBsb2NhbF9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QoY3B1X21ldGhvZCk7CiAgICAgcmVtb3RlX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZCh1ZHBfc3RyZWFtX3Jlc3VsdHMtPmNwdV9tZXRob2QpOwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC02MjY1LDYgKzcwMjIsNyBAQAogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKIH0KKyNlbmRpZiAvKiBXQU5UX01JR1JBVElPTiAqLwogDAogCiAgLyogdGhpcyByb3V0aW5lIGltcGxlbWVudHMgdGhlIHJlY2VpdmUgc2lkZSAobmV0c2VydmVyKSBvZiB0aGUgKi8KQEAgLTYyODcsMjYgKzcwNDUsMjYgQEAKICAgaW50CWxlbiA9IDA7CiAgIHVuc2lnbmVkIGludAlieXRlc19yZWNlaXZlZCA9IDA7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgaW50CW1lc3NhZ2Vfc2l6ZTsKICAgdW5zaWduZWQgaW50CW1lc3NhZ2VzX3JlY3ZkID0gMDsKLSAgCisKICAgc3RydWN0CXVkcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKnVkcF9zdHJlYW1fcmVxdWVzdDsKICAgc3RydWN0CXVkcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSp1ZHBfc3RyZWFtX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdWRwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdAkqdWRwX3N0cmVhbV9yZXN1bHRzOwotICAKLSAgdWRwX3N0cmVhbV9yZXF1ZXN0ICA9IAorCisgIHVkcF9zdHJlYW1fcmVxdWVzdCAgPQogICAgIChzdHJ1Y3QgdWRwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgdWRwX3N0cmVhbV9yZXNwb25zZSA9IAorICB1ZHBfc3RyZWFtX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IHVkcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgdWRwX3N0cmVhbV9yZXN1bHRzICA9IAorICB1ZHBfc3RyZWFtX3Jlc3VsdHMgID0KICAgICAoc3RydWN0IHVkcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3ZfdWRwX3N0cmVhbTogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwogICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCiAgIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCkBAIC02MzE0LDI3ICs3MDcyLDI3IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3N0cmVhbTogc2V0dGluZyB0aGUgcmVzcG9uc2UgdHlwZS4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IFVEUF9TVFJFQU1fUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZyA+IDIpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3VkcF9zdHJlYW06IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlIHRvIGJlIGF0IHRoZSBkZXNpcmVkICovCiAgIC8qIGFsaWdubWVudCB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldC4gKi8KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3N0cmVhbTogcmVxdWVzdGVkIGFsaWdubWVudCBvZiAlZFxuIiwKIAkgICAgdWRwX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCk7CkBAIC02MzUyLDkgKzcxMTAsOSBAQAogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3N0cmVhbTogcmVjZWl2ZSBhbGlnbm1lbnQgYW5kIG9mZnNldCBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogR3JhYiBhIHNvY2tldCB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3N0cmVhbTogZ3JhYmJpbmcgYSBzb2NrZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC02MzgzLDcgKzcxNDEsNyBAQAogCQkJCTApOwogCiAgIHNfZGF0YSA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICBpZiAoc19kYXRhID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7CkBAIC02MzkxLDMzICs3MTQ5LDMzIEBACiAgIH0KIAogICB1ZHBfc3RyZWFtX3Jlc3BvbnNlLT50ZXN0X2xlbmd0aCA9IHVkcF9zdHJlYW1fcmVxdWVzdC0+dGVzdF9sZW5ndGg7Ci0gIAorCiAgIC8qIG5vdyBnZXQgdGhlIHBvcnQgbnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGFkZHJsZW4gPSBzaXplb2YobXlhZGRyX2luKTsKLSAgaWYgKGdldHNvY2tuYW1lKHNfZGF0YSwgCisgIGlmIChnZXRzb2NrbmFtZShzX2RhdGEsCiAJCSAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfaW4sCiAJCSAgJmFkZHJsZW4pID09IFNPQ0tFVF9FUlJPUil7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2RhdGEpOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCi0gIHVkcF9zdHJlYW1fcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPSAKKworICB1ZHBfc3RyZWFtX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0KICAgICAoaW50KSBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZteWFkZHJfaW4pLT5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgLTEgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgdWRwX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgICAgPSAoZmxvYXQpMC4wOyAvKiBhc3N1bWUgbm8gY3B1ICovCiAgIHVkcF9zdHJlYW1fcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMDsKICAgaWYgKHVkcF9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKQEAgLTY0MjYsMTMgKzcxODQsMTMgQEAKICAgICAvKiAicmVhbCIgY2FsaWJyYXRpb24uIE90aGVyd2lzZSwgYWxsIGl0IHdpbGwgcmVhbGx5IGRvIGlzICovCiAgICAgLyogc3RvcmUgaXQgYXdheS4uLiAqLwogICAgIHVkcF9zdHJlYW1fcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKLSAgICB1ZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHVkcF9zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0KICAgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUodWRwX3N0cmVhbV9yZXF1ZXN0LT5jcHVfcmF0ZSk7CiAgIH0KLSAgCisKICAgbWVzc2FnZV9zaXplCT0gdWRwX3N0cmVhbV9yZXF1ZXN0LT5tZXNzYWdlX3NpemU7CiAgIHRlc3RfdGltZQk9IHVkcF9zdHJlYW1fcmVxdWVzdC0+dGVzdF9sZW5ndGg7Ci0gIAorCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgdWRwX3N0cmVhbV9yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOwpAQCAtNjQ0MSwxMiArNzE5OSwxMiBAQAogICB1ZHBfc3RyZWFtX3Jlc3BvbnNlLT5zb19zbmRhdm9pZCA9IGxvY19zbmRhdm9pZDsKIAogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHVkcF9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogI2lmZGVmIFdJTjMyCiAgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCiAgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCkBAIC02NDU2LDEwICs3MjE0LDEwIEBACiAgIC8qIGFuZCBzdWNoIHdvdWxkIGJlIGFwcHJlY2lhdGVkIHJhaiAxLzk2ICovCiAgIHdpbl9rbHVkZ2Vfc29ja2V0ID0gc19kYXRhOwogI2VuZGlmIC8qIFdJTjMyICovCi0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSB0aW1lciBwb3BzLCBvciBpZiB3ZSBoYXBwZW4gdG8gcmVjdiBhICovCiAgIC8qIG1lc3NhZ2Ugb2YgbGVzcyB0aGFuIHNlbmRfc2l6ZSBieXRlcy4uLiAqLwotICAKKwogICB0aW1lc191cCA9IDA7CiAKICAgc3RhcnRfdGltZXIodGVzdF90aW1lICsgUEFEX1RJTUUpOwpAQCAtNjQ3Miw3ICs3MjMwLDcgQEAKICAgLyogV2UgImNvbm5lY3QiIHVwIHRvIHRoZSByZW1vdGUgcG9zdCB0byBhbGxvdyB1cyB0byB1c2UgdGhlIHJlY3YgKi8KICAgLyogY2FsbCBpbnN0ZWFkIG9mIHRoZSByZWN2ZnJvbSBjYWxsLiBQcmVzdW1lYWJseSwgdGhpcyBpcyBhIGxpdHRsZSAqLwogICAvKiBzaW1wbGVyLCBhbmQgYSBsaXR0bGUgbW9yZSBlZmZpY2llbnQuICovCi0gCisKICAgaWYgKGxvY2FsX2Nvbm5lY3RlZCkgewogCiAgICAgLyogUmVjZWl2ZSB0aGUgZmlyc3QgbWVzc2FnZSB1c2luZyByZWN2ZnJvbSB0byBmaW5kIHRoZSByZW1vdGUgYWRkcmVzcyAqLwpAQCAtNjUwNiw3ICs3MjY0LDcgQEAKICAgICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgfQogICB9Ci0gIAorCiAgIHdoaWxlICghdGltZXNfdXApIHsKICAgICBpZihsb2NhbF9jb25uZWN0ZWQpIHsKICAgICAgICBsZW4gPSByZWN2KHNfZGF0YSwKQEAgLTY1MTYsMTAgKzcyNzQsMTAgQEAKICAgICB9IGVsc2UgewogICAgICAgIGxlbiA9IHJlY3Zmcm9tKHNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICByZWN2X3JpbmctPmJ1ZmZlcl9wdHIsCi0gICAgCSAgICAgICAgICAgICAgbWVzc2FnZV9zaXplLCAKKyAgICAJICAgICAgICAgICAgICBtZXNzYWdlX3NpemUsCiAJCSAgICAgIDAsMCwwKTsKICAgICB9Ci0gICAgICAgCisKICAgICBpZiAobGVuICE9IG1lc3NhZ2Vfc2l6ZSkgewogICAgICAgaWYgKChsZW4gPT0gU09DS0VUX0VSUk9SKSAmJiAhU09DS0VUX0VJTlRSKGxlbikpIHsKICAgICAgICAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CkBAIC02NTMxLDE5ICs3Mjg5LDE5IEBACiAgICAgbWVzc2FnZXNfcmVjdmQrKzsKICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl91ZHBfc3RyZWFtOiBnb3QgJWQgbWVzc2FnZXMuXG4iLG1lc3NhZ2VzX3JlY3ZkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdGltZXIgb3IgPCBzZW5kX3NpemUgYnl0ZXMgcmVjZWl2ZWQuIGluICovCiAgIC8qIHJlYWxpdHksIHdlIG9ubHkgcmVhbGx5IHN1cHBvcnQgYSB0aW1lZCBVRFBfU1RSRUFNIHRlc3QuIHJhaiAqLwogICAvKiAxMi85NSAqLwotICAKKwogICBjcHVfc3RvcCh1ZHBfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICBpZiAodGltZXNfdXApIHsKICAgICAvKiB3ZSBlbmRlZCBvbiBhIHRpbWVyLCBzdWJ0cmFjdCB0aGUgUEFEX1RJTUUgKi8KICAgICBlbGFwc2VkX3RpbWUgLT0gKGZsb2F0KVBBRF9USU1FOwpAQCAtNjU1MSwyNyArNzMwOSwyNyBAQAogICBlbHNlIHsKICAgICBzdG9wX3RpbWVyKCk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl91ZHBfc3RyZWFtOiB0ZXN0IGVuZGVkIGluICVmIHNlY29uZHMuXG4iLGVsYXBzZWRfdGltZSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgCisKKwogICAvKiBXZSB3aWxsIGNvdW50IHRoZSAib2ZmIiBtZXNzYWdlIHRoYXQgZ290IHVzIG91dCBvZiB0aGUgbG9vcCAqLwogICBieXRlc19yZWNlaXZlZCA9IChtZXNzYWdlc19yZWN2ZCAqIG1lc3NhZ2Vfc2l6ZSkgKyBsZW47Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3VkcF9zdHJlYW06IGdvdCAlZCBieXRlc1xuIiwKIAkgICAgYnl0ZXNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUJPSBVRFBfU1RSRUFNX1JFU1VMVFM7Ci0gIHVkcF9zdHJlYW1fcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSBodG9ubChieXRlc19yZWNlaXZlZCk7CisgIHVkcF9zdHJlYW1fcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSBieXRlc19yZWNlaXZlZDsKICAgdWRwX3N0cmVhbV9yZXN1bHRzLT5tZXNzYWdlc19yZWN2ZAk9IG1lc3NhZ2VzX3JlY3ZkOwogICB1ZHBfc3RyZWFtX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQk9IGVsYXBzZWRfdGltZTsKICAgdWRwX3N0cmVhbV9yZXN1bHRzLT5jcHVfbWV0aG9kICAgICAgICA9IGNwdV9tZXRob2Q7CkBAIC02NTgyLDU0ICs3MzQwLDY4IEBACiAgIGVsc2UgewogICAgIHVkcF9zdHJlYW1fcmVzdWx0cy0+Y3B1X3V0aWwJPSAoZmxvYXQpIC0xLjA7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3VkcF9zdHJlYW06IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwogCiAgIGNsb3NlKHNfZGF0YSk7CiAKIH0KIAwKKyNpZm5kZWYgV0FOVF9NSUdSQVRJT04KIHZvaWQKIHNlbmRfdWRwX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKKyAgY2hhciAqdHB1dF90aXRsZV9iYW5kID0gIlwKK0xvY2FsIC9SZW1vdGVcblwKK1NvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBcblwKK1NlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBUaHJvdWdocHV0IFxuXAorYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgICVzL3NlYyAgIFxuXG4iOworCiAgIGNoYXIgKnRwdXRfZm10XzAgPQotICAgICIlNy4yZlxuIjsKLSAgCisgICAgIiU3LjJmICVzXG4iOworCiAgIGNoYXIgKnRwdXRfZm10XzFfbGluZV8xID0gIlwKLSUtNmQgJS02ZCAlLTZkICAgJS02ZCAgJS02LjJmICAgJTcuMmYgICBcbiI7CislLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgJXNcbiI7CisKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgIFJhdGUgICAgIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAlYyAgICAlJSAlYyAgICB1cy9UciAgIHVzL1RyXG5cbiI7Ci0gIAorCisgIGNoYXIgKmNwdV90aXRsZV90cHV0ID0gIlwKK0xvY2FsIC9SZW1vdGVcblwKK1NvY2tldCBTaXplICAgUmVxdWVzdCBSZXNwLiAgRWxhcHNlZCBUcHV0ICAgICBDUFUgICAgQ1BVICAgIFMuZGVtICAgUy5kZW1cblwKK1NlbmQgICBSZWN2ICAgU2l6ZSAgICBTaXplICAgVGltZSAgICAlLTguOHMgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAorYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICVjICAgICUlICVjICAgIHVzL1RyICAgdXMvVHJcblxuIjsKKwogICBjaGFyICpjcHVfZm10XzAgPQotICAgICIlNi4zZiAlY1xuIjsKLSAgCisgICAgIiU2LjNmICVjICVzXG4iOworCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzEgPSAiXAotJS02ZCAlLTZkICUtNmQgICUtNmQgJS02LjJmICAlLTYuMmYgICAlLTYuMmYgJS02LjJmICUtNi4zZiAgJS02LjNmXG4iOwotICAKKyUtNmQgJS02ZCAlLTZkICAlLTZkICUtNi4yZiAgJS02LjJmICAgJS02LjJmICUtNi4yZiAlLTYuM2YgICUtNi4zZiAlc1xuIjsKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8yID0gIlwKICUtNmQgJS02ZFxuIjsKLSAgCisKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKIApAQCAtNjYzOCwxOCArNzQxMCwxOCBAQAogICBTT0NLRVQJc2VuZF9zb2NrZXQ7CiAgIGludAl0cmFuc19yZW1haW5pbmc7CiAgIGludAlieXRlc194ZmVyZDsKLSAgCisKICAgaW50CXJzcF9ieXRlc19yZWN2ZDsKLSAgCisKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKICAgZmxvYXQJcmVtb3RlX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUJdGhydXB1dDsKLSAgCisKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKLSAgCisKICAgc3RydWN0CXVkcF9ycl9yZXF1ZXN0X3N0cnVjdAkqdWRwX3JyX3JlcXVlc3Q7CiAgIHN0cnVjdAl1ZHBfcnJfcmVzcG9uc2Vfc3RydWN0CSp1ZHBfcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAl1ZHBfcnJfcmVzdWx0c19zdHJ1Y3QJKnVkcF9ycl9yZXN1bHQ7CkBAIC02NjYwLDE4ICs3NDMyLDE4IEBACiAgICAgKHN0cnVjdCB1ZHBfcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgdWRwX3JyX3Jlc3VsdAkgPQogICAgIChzdHJ1Y3QgdWRwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CiAgIH0KICNlbmRpZgotICAKKwogICAvKiBzaW5jZSB3ZSBhcmUgbm93IGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBjb2RlIHRoYXQgZXN0YWJsaXNoZWQgdGhlICovCiAgIC8qIGNvbnRyb2wgc29ja2V0LCBhbmQgc2luY2Ugd2Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBkaWZmZXJlbnQgKi8KICAgLyogcHJvdG9jb2xzIGFuZCBzdWNoLCB3ZSBhcmUgcGFzc2VkIHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgaG9zdCBhbmQgKi8KICAgLyogbXVzdCB0dXJuIHRoYXQgaW50byB0aGUgdGVzdCBzcGVjaWZpYyBhZGRyZXNzaW5nIGluZm9ybWF0aW9uLiAqLwotICAKKwogICBjb21wbGV0ZV9hZGRyaW5mb3MoJnJlbW90ZV9yZXMsCiAJCSAgICAgJmxvY2FsX3JlcywKIAkJICAgICByZW1vdGVfaG9zdCwKQEAgLTY2ODQsNyArNzQ1Niw3IEBACiAgIH0KIAogICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzICovCi0gIAorCiAgIHNlbmRfcmluZyAgICAgPSBOVUxMOwogICByZWN2X3JpbmcgICAgID0gTlVMTDsKICAgbnVtbWVzc2FnZXMJPSAwOwpAQCAtNjcwMiw0MyArNzQ3NCw0MyBAQAogCiAgIHdoaWxlICgoKGNvbmZpZGVuY2UgPCAwKSAmJiAoY29uZmlkZW5jZV9pdGVyYXRpb24gPCBpdGVyYXRpb25fbWF4KSkgfHwKIAkgKGNvbmZpZGVuY2VfaXRlcmF0aW9uIDw9IGl0ZXJhdGlvbl9taW4pKSB7Ci0gICAgCisKICAgICBudW1tZXNzYWdlcyAgICAgPSAwOwogICAgIGJ5dGVzX3hmZXJkICAgICA9IDA7CiAgICAgdGltZXNfdXAgICAgICAgID0gMDsKICAgICB0cmFuc19yZW1haW5pbmcgPSAwOwotICAgIAorCiAgICAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlcnMgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0ICovCi0gICAgCisKICAgICBpZiAoc2VuZF93aWR0aCA9PSAwKSBzZW5kX3dpZHRoID0gMTsKICAgICBpZiAocmVjdl93aWR0aCA9PSAwKSByZWN2X3dpZHRoID0gMTsKLSAgICAKKwogICAgIGlmIChzZW5kX3JpbmcgPT0gTlVMTCkgewogICAgICAgc2VuZF9yaW5nID0gYWxsb2NhdGVfYnVmZmVyX3Jpbmcoc2VuZF93aWR0aCwKIAkJCQkgICAgICAgcmVxX3NpemUsCiAJCQkJICAgICAgIGxvY2FsX3NlbmRfYWxpZ24sCiAJCQkJICAgICAgIGxvY2FsX3NlbmRfb2Zmc2V0KTsKICAgICB9Ci0gICAgCisKICAgICBpZiAocmVjdl9yaW5nID09IE5VTEwpIHsKICAgICAgIHJlY3ZfcmluZyA9IGFsbG9jYXRlX2J1ZmZlcl9yaW5nKHJlY3Zfd2lkdGgsCiAJCQkJICAgICAgIHJzcF9zaXplLAogCQkJCSAgICAgICBsb2NhbF9yZWN2X2FsaWduLAogCQkJCSAgICAgICBsb2NhbF9yZWN2X29mZnNldCk7CiAgICAgfQotICAgIAorCiAgICAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICBzZW5kX3NvY2tldCA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAgIAorCiAgICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF91ZHBfcnI6IHVkcCByciBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfdWRwX3JyOiBzZW5kX3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgICAgfQotICAgIAorCiAgICAgLyogSWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCBjcHUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLCB3ZSBtdXN0ICovCiAgICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAgIC8qIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuICovCkBAIC02NzQ3LDExICs3NTE5LDExIEBACiAgICAgLyogYWxsIHRoZSAibm9ybWFsIiBjYWxpYnJhdGlvbiBzdHVmZiBhbmQgcmV0dXJuIHRoZSByYXRlIGJhY2suIElmICovCiAgICAgLyogdGhlcmUgaXMgbm8gaWRsZSBjb3VudGVyIGluIHRoZSBrZXJuZWwgaWRsZSBsb29wLCB0aGUgKi8KICAgICAvKiBsb2NhbF9jcHVfcmF0ZSB3aWxsIGJlIHNldCB0byAtMS4gKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFub19jb250cm9sKSB7CiAgICAgICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUKIAkgc29ja2V0IHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUKQEAgLTY3NjEsNyArNzUzMyw3IEBACiAJIHRoYXQgbm8gY2hhbmdlcyBiZXlvbmQgdGhlIHN5c3RlbSdzIGRlZmF1bHQgc2hvdWxkIGJlCiAJIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsIGRlZmF1bHQgdG8gOCwgd2hpY2gKIAkgd2lsbCBiZSBubyBhbGlnbm1lbnQgYWx0ZXJhdGlvbnMuICovCi0gICAgCisKICAgICAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQk9IERPX1VEUF9SUjsKICAgICAgIHVkcF9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0gcnNyX3NpemVfcmVxOwogICAgICAgdWRwX3JyX3JlcXVlc3QtPnNlbmRfYnVmX3NpemUJPSByc3Nfc2l6ZV9yZXE7CkBAIC02NzgzLDEzICs3NTU1LDEzIEBACiAgICAgICB9CiAgICAgICB1ZHBfcnJfcmVxdWVzdC0+cG9ydCAgICAgICAgICAgICAgICA9IGF0b2kocmVtb3RlX2RhdGFfcG9ydCk7CiAgICAgICB1ZHBfcnJfcmVxdWVzdC0+aXBmYW1pbHkgPSBhZl90b19uZihyZW1vdGVfcmVzLT5haV9mYW1pbHkpOwotICAgICAgCisKICAgICAgIGlmIChkZWJ1ZyA+IDEpIHsKIAlmcHJpbnRmKHdoZXJlLCJuZXRwZXJmOiBzZW5kX3VkcF9ycjogcmVxdWVzdGluZyBVRFAgci9yIHRlc3RcbiIpOwogICAgICAgfQotICAgICAgCisKICAgICAgIHNlbmRfcmVxdWVzdCgpOwotICAgIAorCiAgICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50CiAJIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrCiAJIGludG8gdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLgpAQCAtNjgwMCw5ICs3NTcyLDkgQEAKIAkgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0IGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcwogCSB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzIGJlaW5nIHNlbnQgZm9yIHRoZSBVRFAKIAkgdGVzdHMuICAqLwotICAgIAorCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKIAlpZiAoZGVidWcpCiAJICBmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTY4MjUsNyArNzU5Nyw3IEBACiAgICAgfQogCiAjaWZkZWYgV0FOVF9ERU1PCi0gICAgREVNT19SUl9TRVRVUCgxMDApCisgICAgZGVtb19ycl9zZXR1cCgxMDApOwogI2VuZGlmCiAKICAgICAvKiBDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQuIFRoaXMgd2lsbCBzZXQgKi8KQEAgLTY4MzMsMjMgKzc2MDUsMzMgQEAKICAgICAvKiBkb2VzIG1ha2UgYSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGFzIHdlIG1heSBub3QgaGF2ZSB0byBkbyBhcyAqLwogICAgIC8qIG1hbnkgcm91dGluZyBsb29rdXBzLCBob3dldmVyLCBJIGV4cGVjdCB0aGF0IGEgY2xpZW50IHdvdWxkICovCiAgICAgLyogYmVoYXZlIHRoaXMgd2F5LiByYWogMS85NCAqLwotICAgIAotICAgIGlmICggY29ubmVjdChzZW5kX3NvY2tldCwgCisKKyAgICBpZiAoIGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCSByZW1vdGVfcmVzLT5haV9hZGRyLAogCQkgcmVtb3RlX3Jlcy0+YWlfYWRkcmxlbikgPT0gSU5WQUxJRF9TT0NLRVQgKSB7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IGRhdGEgc29ja2V0IGNvbm5lY3QgZmFpbGVkIik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKworI2lmZGVmIFdJTjMyCisgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgIC8qIFdpbmRvd3Mtc3BlY2lmaWMgd2F5IEkgY2FuIGZpbmQgdG8gZm9yY2UgdGhlIHdpbnNvY2sgY2FsbHMgdG8gKi8KKyAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLworICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNlbmRfc29ja2V0OworI2VuZGlmIC8qIFdJTjMyICovCisKICAgICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciB0aGUgKi8KICAgICAvKiBjb25uZWN0IHdvdWxkIGhhdmUgZmFpbGVkLCBvciB0aGUgcHJldmlvdXMgcmVzcG9uc2Ugd291bGQgaGF2ZSAqLwogICAgIC8qIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlIGV4dHJhICovCiAgICAgLyogbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlIGl0ICovCiAgICAgLyogaGVyZS4gSWYgaXQgZGlkbid0LCB3ZSBtaWdodCBhcyB3ZWxsIHN0YXJ0IHB1bXBpbmcgZGF0YS4gKi8KLSAgICAKKwogICAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LCB0aGV5ICovCiAgICAgLyogY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLwotICAgIAorCiAgICAgaWYgKHRlc3RfdGltZSkgewogICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgICAgdGltZXNfdXAgPSAwOwpAQCAtNjg2MSwyMyArNzY0MywyMyBAQAogICAgICAgdHJhbnNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICAgIHRpbWVzX3VwID0gMTsKICAgICB9Ci0gICAgCisKICAgICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5ICovCiAgICAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KICAgICAvKiB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCi0gICAgCisKICAgICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKIAogI2lmZGVmIFdBTlRfREVNTwogICAgIGlmIChkZW1vX21vZGUpIHsKLSAgICAgIEhJU1RfdGltZXN0YW1wKGRlbW9fb25lX3B0cik7CisgICAgICBkZW1vX2ZpcnN0X3RpbWVzdGFtcCgpOwogICAgIH0KLSNlbmRpZiAKKyNlbmRpZgogCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBJTlRFUlZBTFNfSU5JVCgpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgCisKICAgICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzICovCiAgICAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gKi8KICAgICAvKiBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3QgKi8KQEAgLTY5MjQsOSArNzcwNiw5IEBACiAJICAgIGV4aXQoMSk7CiAJICB9CiAgICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7Ci0gICAgICAKKwogICAgICAgLyogcmVjZWl2ZSB0aGUgcmVzcG9uc2UuIHdpdGggVURQIHdlIHdpbGwgZ2V0IGl0IGFsbCwgb3Igbm90aGluZyAqLwotICAgICAgCisKICAgICAgIGlmKChyc3BfYnl0ZXNfcmVjdmQ9cmVjdihzZW5kX3NvY2tldCwKIAkJCSAgICAgICByZWN2X3JpbmctPmJ1ZmZlcl9wdHIsCiAJCQkgICAgICAgcnNwX3NpemUsCkBAIC02OTQwLDcgKzc3MjIsNyBAQAogCSAgICBleGl0KDEpOwogICAgICAgfQogICAgICAgcmVjdl9yaW5nID0gcmVjdl9yaW5nLT5uZXh0OwotICAgICAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICAgICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKIAlISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwpAQCAtNjk1Niw0NCArNzczOCw1MCBAQAogICAgICAgLyogbWlsbGlzZWNvbmQuICAqLwogCiAjaWZkZWYgV0FOVF9ERU1PCi0gICAgICBERU1PX1JSX0lOVEVSVkFMKDEpOworICAgICAgZGVtb19ycl9pbnRlcnZhbCgxKTsKICNlbmRpZgogCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMgICAgICAKKyNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgICAgSU5URVJWQUxTX1dBSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgICAgCi0gICAgICBudW1tZXNzYWdlcysrOyAgICAgICAgICAKKworICAgICAgbnVtbWVzc2FnZXMrKzsKICAgICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKIAl0cmFuc19yZW1haW5pbmctLTsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBpZiAoZGVidWcgPiAzKSB7CiAJaWYgKChudW1tZXNzYWdlcyAlIDEwMCkgPT0gMCkgewogCSAgZnByaW50Zih3aGVyZSwiVHJhbnNhY3Rpb24gJWQgY29tcGxldGVkXG4iLG51bW1lc3NhZ2VzKTsKIAkgIGZmbHVzaCh3aGVyZSk7CiAJfQogICAgICAgfQotICAgICAgCisKICAgICB9Ci0gICAgCisKICAgICAvKiBmb3Igc29tZSBzdHJhbmdlIHJlYXNvbiwgSSB1c2VkIHRvIGNhbGwgc2h1dGRvd24gb24gdGhlIFVEUCAqLwogICAgIC8qIGRhdGEgc29ja2V0IGhlcmUuIEknbSBub3Qgc3VyZSB3aHksIGJlY2F1c2UgaXQgd291bGQgbm90IGhhdmUgKi8KICAgICAvKiBhbnkgZWZmZWN0Li4uIHJhaiAxMS85NCAqLwotICAgIAorCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCi0gICAgCisKICAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgKi8KIAkJCQkJCS8qIG1lYXN1cmVkPyBob3cgbG9uZyAqLwogCQkJCQkJLyogZGlkIHdlIHJlYWxseSBydW4/ICovCi0gICAgCisKKyNpZiBkZWZpbmVkKFdBTlRfSU5URVJWQUxTKQorI2lmZGVmIFdJTjMyCisgICAgc3RvcF9pdGltZXIoKTsKKyNlbmRpZgorI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCisKICAgICBpZiAoIW5vX2NvbnRyb2wpIHsKICAgICAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kLiBUaGUgcmVtb3RlIHdpbGwgaGF2ZQogCSBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcKIAkgdGhpbmdzLiBJZiBpdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gY2FyZSwgaXQgd2lsbCByZXR1cm4gb2J2aW91cwogCSB2YWx1ZXMuICovCi0gICAgCisKICAgICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKIAlpZiAoZGVidWcpCkBAIC03MDE2LDEwICs3ODA0LDEwIEBACiAgICAgLyogVURQIHJyIHRlc3QsIHRoYXQgdGhlIHR3byBudW1iZXJzIHNob3VsZCBiZSAqdmVyeSogY2xvc2UuLi4gKi8KICAgICAvKiBXZSBjYWxjdWxhdGUgYnl0ZXNfc2VudCByZWdhcmRsZXNzIG9mIHRoZSB3YXkgdGhlIHRlc3QgbGVuZ3RoICovCiAgICAgLyogd2FzIGNvbnRyb2xsZWQuICAqLwotICAgIAorCiAgICAgYnl0ZXNfeGZlcmQJPSAocmVxX3NpemUgKiBudW1tZXNzYWdlcykgKyAocnNwX3NpemUgKiBudW1tZXNzYWdlcyk7CiAgICAgdGhydXB1dAk9IG51bW1lc3NhZ2VzIC8gZWxhcHNlZF90aW1lOwotICAgIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAKICAgICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUgKi8KQEAgLTcwMzEsMTEgKzc4MTksMTEgQEAKIAogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogCWxvY2FsX2NwdV91dGlsaXphdGlvbiA9IGNhbGNfY3B1X3V0aWwoMC4wKTsKLQkKKwogCS8qIHNpbmNlIGNhbGNfc2VydmljZSBkZW1hbmQgaXMgZG9pbmcgbXMvS3VuaXQgd2Ugd2lsbCAqLwogCS8qIG11bHRpcGx5IHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb24gYnkgMTAyNCB0byBnZXQgKi8KIAkvKiAiZ29vZCIgbnVtYmVycyAqLwotCQorCiAJbG9jYWxfc2VydmljZV9kZW1hbmQgID0gY2FsY19zZXJ2aWNlX2RlbWFuZCgoZG91YmxlKSBudW1tZXNzYWdlcyoxMDI0LAogCQkJCQkJICAgIDAuMCwKIAkJCQkJCSAgICAwLjAsCkBAIC03MDQ1LDE0ICs3ODMzLDE0IEBACiAJbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7CiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IHVkcF9ycl9yZXN1bHQtPmNwdV91dGlsOwotCQorCiAJLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsICovCiAJLyogbXVsdGlwbHkgdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbiBieSAxMDI0IHRvIGdldCAqLwogCS8qICJnb29kIiBudW1iZXJzICovCi0JCisKIAlyZW1vdGVfc2VydmljZV9kZW1hbmQgID0gY2FsY19zZXJ2aWNlX2RlbWFuZCgoZG91YmxlKSBudW1tZXNzYWdlcyoxMDI0LAogCQkJCQkJICAgICAwLjAsCiAJCQkJCQkgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCkBAIC03MDcxLDExICs3ODU5LDExIEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IChmbG9hdCkgLTEuMDsKICAgICB9Ci0gICAgCisKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4gKi8KICAgICAvKiBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZSAqLwogICAgIC8qIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHRocnVwdXQsCkBAIC03MDgzLDEwICs3ODcxLDEwIEBACiAJCQkgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKIAkJCSBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJCSByZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAgIAotICAgIAorCisKICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbisrOwotICAgIAorCiAgICAgLyogd2UgYXJlIGRvbmUgd2l0aCB0aGUgc29ja2V0ICovCiAgICAgY2xvc2Uoc2VuZF9zb2NrZXQpOwogICB9CkBAIC03MDk5LDcgKzc4ODcsNyBAQAogCQkJICAgICZyZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJICAgICZsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJCSAgICAmcmVtb3RlX3NlcnZpY2VfZGVtYW5kKTsKLSAgCisKICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciAqLwogICAvKiBoYXMgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlICovCiAgIC8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgKi8KQEAgLTcxMDgsNDIgKzc4OTYsNTcgQEAKICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwogICAvKiBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0ICovCiAgIC8qIG5vdCBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCi0gIAorCiAgIGlmIChjb25maWRlbmNlIDwgMCkgewogICAgIC8qIHdlIGRpZCBub3QgaGl0IGNvbmZpZGVuY2UsIGJ1dCB3ZXJlIHdlIGFza2VkIHRvIGxvb2sgZm9yIGl0PyAqLwogICAgIGlmIChpdGVyYXRpb25fbWF4ID4gMSkgewogICAgICAgZGlzcGxheV9jb25maWRlbmNlKCk7CiAgICAgfQogICB9Ci0gIAorCiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZChjcHVfbWV0aG9kKTsKICAgICByZW1vdGVfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKHVkcF9ycl9yZXN1bHQtPmNwdV9tZXRob2QpOwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAJZnByaW50Zih3aGVyZSwKIAkJY3B1X2ZtdF8wLAogCQlsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKLQkJbG9jYWxfY3B1X21ldGhvZCk7CisJCWxvY2FsX2NwdV9tZXRob2QsCisgICAgICAgICAgICAgICAgKChwcmludF9oZWFkZXJzKSB8fAorICAgICAgICAgICAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwogICAgICAgfQogICAgICAgZWxzZSB7CiAJZnByaW50Zih3aGVyZSwKIAkJY3B1X2ZtdF8wLAogCQlyZW1vdGVfc2VydmljZV9kZW1hbmQsCi0JCXJlbW90ZV9jcHVfbWV0aG9kKTsKKwkJcmVtb3RlX2NwdV9tZXRob2QsCisgICAgICAgICAgICAgICAgKChwcmludF9oZWFkZXJzKSB8fAorICAgICAgICAgICAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSAxOgogICAgIGNhc2UgMjoKICAgICAgIGlmIChwcmludF9oZWFkZXJzKSB7Ci0JZnByaW50Zih3aGVyZSwKLQkJY3B1X3RpdGxlLAotCQlsb2NhbF9jcHVfbWV0aG9kLAotCQlyZW1vdGVfY3B1X21ldGhvZCk7CisgICAgICAgIGlmICgneCcgPT0gbGliZm10KSB7CisgICAgICAgICAgZnByaW50Zih3aGVyZSwKKyAgICAgICAgICAgICAgICAgIGNwdV90aXRsZSwKKyAgICAgICAgICAgICAgICAgIGxvY2FsX2NwdV9tZXRob2QsCisgICAgICAgICAgICAgICAgICByZW1vdGVfY3B1X21ldGhvZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZnByaW50Zih3aGVyZSwKKyAgICAgICAgICAgICAgICAgIGNwdV90aXRsZV90cHV0LAorICAgICAgICAgICAgICAgICAgZm9ybWF0X3VuaXRzKCksCisgICAgICAgICAgICAgICAgICBsb2NhbF9jcHVfbWV0aG9kLAorICAgICAgICAgICAgICAgICAgcmVtb3RlX2NwdV9tZXRob2QpOworICAgICAgICB9CiAgICAgICB9Ci0gICAgCisKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgY3B1X2ZtdF8xX2xpbmVfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCiAJICAgICAgbHNzX3NpemUsCQkvKiBsb2NhbCBzZW5kYnVmIHNpemUgKi8KQEAgLTcxNTEsMTEgKzc5NTQsMTUgQEAKIAkgICAgICByZXFfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZXF1ZXN0cyAqLwogCSAgICAgIHJzcF9zaXplLAkJLyogZ3Vlc3MgKi8KIAkgICAgICBlbGFwc2VkX3RpbWUsCQkvKiBob3cgbG9uZyB3YXMgdGhlIHRlc3QgKi8KLQkgICAgICBudW1tZXNzYWdlcy9lbGFwc2VkX3RpbWUsCisJICAgICAgKCd4JyA9PSBsaWJmbXQpID8gdGhydXB1dCA6CisJICAgICAgY2FsY190aHJ1cHV0X2ludGVydmFsX29tbmkodGhydXB1dCAqIChyZXFfc2l6ZStyc3Bfc2l6ZSksCisJCQkJCQkJCQkgMS4wKSwKIAkgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24sCS8qIGxvY2FsIGNwdSAqLwogCSAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCS8qIHJlbW90ZSBjcHUgKi8KIAkgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwJLyogbG9jYWwgc2VydmljZSBkZW1hbmQgKi8KLQkgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQpOwkvKiByZW1vdGUgc2VydmljZSBkZW1hbmQgKi8KKwkgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQsCS8qIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZCAqLworCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKKwkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIGNwdV9mbXRfMV9saW5lXzIsCiAJICAgICAgcnNzX3NpemUsCkBAIC03MTY5LDE0ICs3OTc2LDIwIEBACiAgICAgY2FzZSAwOgogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICB0cHV0X2ZtdF8wLAotCSAgICAgIG51bW1lc3NhZ2VzL2VsYXBzZWRfdGltZSk7CisJICAgICAgKCd4JyA9PSBsaWJmbXQpID8gdGhydXB1dCA6CisJICAgICAgY2FsY190aHJ1cHV0X2ludGVydmFsX29tbmkodGhydXB1dCAqIChyZXFfc2l6ZStyc3Bfc2l6ZSksCisJCQkJCSAxLjApLAorCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKKwkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIDE6CiAgICAgY2FzZSAyOgogICAgICAgaWYgKHByaW50X2hlYWRlcnMpIHsKLQlmcHJpbnRmKHdoZXJlLHRwdXRfdGl0bGUsZm9ybWF0X3VuaXRzKCkpOworCWZwcmludGYod2hlcmUsCisJCSgneCcgPT0gbGliZm10KSA/IHRwdXRfdGl0bGUgOiB0cHV0X3RpdGxlX2JhbmQsCisJCWZvcm1hdF91bml0cygpKTsKICAgICAgIH0KLSAgICAKKwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICB0cHV0X2ZtdF8xX2xpbmVfMSwJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KIAkgICAgICBsc3Nfc2l6ZSwKQEAgLTcxODQsMTIgKzc5OTcsMTYgQEAKIAkgICAgICByZXFfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZXF1ZXN0cyAqLwogCSAgICAgIHJzcF9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHJlc3BvbnNlcyAqLwogCSAgICAgIGVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLwotCSAgICAgIG51bW1lc3NhZ2VzL2VsYXBzZWRfdGltZSk7CisJICAgICAgKCd4JyA9PSBsaWJmbXQpID8gIHRocnVwdXQgOgorCSAgICAgIGNhbGNfdGhydXB1dF9pbnRlcnZhbF9vbW5pKHRocnVwdXQgKiAocmVxX3NpemUrcnNwX3NpemUpLAorCQkJCQkgMS4wKSwKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CisJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICB0cHV0X2ZtdF8xX2xpbmVfMiwKIAkgICAgICByc3Nfc2l6ZSwgCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCiAJICAgICAgcnNyX3NpemUpOwotICAgICAgCisKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQpAQCAtNzIwMCw3ICs4MDE3LDcgQEAKICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCiAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCiAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKwogICAvKiBob3cgdG8gaGFuZGxlIHRoZSB2ZXJib3NlIGluZm9ybWF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiAqLwogICAvKiBjb25maWRlbmNlIGludGVydmFscyBpcyB5ZXQgdG8gYmUgZGV0ZXJtaW5lZC4uLiByYWogMTEvOTQgKi8KIApAQCAtNzIwOSw3ICs4MDI2LDcgQEAKICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCiAgICAgLyogVURQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgZnByaW50Zih3aGVyZSwiXG5IaXN0b2dyYW0gb2YgcmVxdWVzdC9yZXBvbnNlIHRpbWVzLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTcyMTcsMTMgKzgwMzQsMTQgQEAKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogICB9CiB9CisjZW5kaWYgLyogV0FOVF9NSUdSQVRJT04gKi8KIAwKICAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgcmVjZWl2ZSBzaWRlIChuZXRzZXJ2ZXIpIG9mIGEgVURQX1JSICovCiAgLyogdGVzdC4gKi8KIHZvaWQKIHJlY3ZfdWRwX3JyKCkKIHsKLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7CiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogCkBAIC03MjMyLDcgKzgwNTAsNyBAQAogICBjaGFyIHBvcnRfYnVmZmVyW1BPUlRCVUZTSVpFXTsKIAogICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAgICAgICAgbXlhZGRyX2luOwotICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAgICBwZWVyYWRkcjsgCisgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICAgIHBlZXJhZGRyOwogICBTT0NLRVQJc19kYXRhOwogICBuZXRwZXJmX3NvY2tsZW5fdCAJYWRkcmxlbjsKICAgaW50CXRyYW5zX3JlY2VpdmVkOwpAQCAtNzI0MCwyMyArODA1OCwyMyBAQAogICBpbnQgICByZXF1ZXN0X2J5dGVzX3JlY3ZkOwogICBpbnQgICByZXNwb25zZV9ieXRlc19zZW50OwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHN0cnVjdAl1ZHBfcnJfcmVxdWVzdF9zdHJ1Y3QJKnVkcF9ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJdWRwX3JyX3Jlc3BvbnNlX3N0cnVjdAkqdWRwX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdWRwX3JyX3Jlc3VsdHNfc3RydWN0CSp1ZHBfcnJfcmVzdWx0czsKLSAgCi0gIHVkcF9ycl9yZXF1ZXN0ICA9IAorCisgIHVkcF9ycl9yZXF1ZXN0ICA9CiAgICAgKHN0cnVjdCB1ZHBfcnJfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHVkcF9ycl9yZXNwb25zZSA9IAorICB1ZHBfcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdWRwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHVkcF9ycl9yZXN1bHRzICA9IAorICB1ZHBfcnJfcmVzdWx0cyAgPQogICAgIChzdHJ1Y3QgdWRwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X3VkcF9ycjogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwogICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCiAgIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCkBAIC03MjY0LDI3ICs4MDgyLDI3IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl91ZHBfcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBVRFBfUlJfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3JyOiB0aGUgcmVzcG9uc2UgdHlwZSBpcyBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogV2Ugbm93IGFsdGVyIHRoZSBtZXNzYWdlX3B0ciB2YXJpYWJsZXMgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KICAgLyogYWxpZ25tZW50cyB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldHMuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3JyOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLAogCSAgICB1ZHBfcnJfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsCkBAIC03MzEyLDE0ICs4MTMwLDE0IEBACiAgICAgZnByaW50Zih3aGVyZSwicmVjdl91ZHBfcnI6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdWRwX3JyOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogCiAgIC8qIGNyZWF0ZV9kYXRhX3NvY2tldCBleHBlY3RzIHRvIGZpbmQgc29tZSB0aGluZ3MgaW4gdGhlIGdsb2JhbCAqLwogICAvKiB2YXJpYWJsZXMsIHNvIHNldCB0aGUgZ2xvYmFscyBiYXNlZCBvbiB0aGUgdmFsdWVzIGluIHRoZSByZXF1ZXN0LiAqLwpAQCAtNzM0Miw3MSArODE2MCw3MSBAQAogCQkJCVNPQ0tfREdSQU0sCiAJCQkJSVBQUk9UT19VRFAsCiAJCQkJMCk7Ci0JCQkJCisKICAgc19kYXRhID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgIGlmIChzX2RhdGEgPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogbm93IGdldCB0aGUgcG9ydCBudW1iZXIgYXNzaWduZWQgYnkgdGhlIHN5c3RlbSAgKi8KICAgYWRkcmxlbiA9IHNpemVvZihteWFkZHJfaW4pOwotICBpZiAoZ2V0c29ja25hbWUoc19kYXRhLCAKKyAgaWYgKGdldHNvY2tuYW1lKHNfZGF0YSwKIAkJICAoc3RydWN0IHNvY2thZGRyICopJm15YWRkcl9pbiwKIAkJICAmYWRkcmxlbikgPT0gU09DS0VUX0VSUk9SKXsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIGNsb3NlKHNfZGF0YSk7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKLSAgdWRwX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gCisKKyAgdWRwX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0KICAgICAoaW50KSBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZteWFkZHJfaW4pLT5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdiBwb3J0IG51bWJlciAlZFxuIiwKIAkgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmbXlhZGRyX2luKS0+c2luX3BvcnQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywgKi8KICAgLyogdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbWF4ICovCiAgIC8qIHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUgbWVhc3VyZWQsIG9yICovCiAgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsIHJldHVybiBhIDAuMCB0byAqLwogICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKwogICB1ZHBfcnJfcmVzcG9uc2UtPmNwdV9yYXRlICAgID0gKGZsb2F0KTAuMDsgCS8qIGFzc3VtZSBubyBjcHUgKi8KICAgdWRwX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDA7CiAgIGlmICh1ZHBfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB1ZHBfcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKICAgICB1ZHBfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdSh1ZHBfcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gICAKKwogICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KICAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCiAgIHVkcF9ycl9yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOwogICB1ZHBfcnJfcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemUgPSBsc3Jfc2l6ZTsKICAgdWRwX3JyX3Jlc3BvbnNlLT5zb19yY3Zhdm9pZCAgID0gbG9jX3JjdmF2b2lkOwogICB1ZHBfcnJfcmVzcG9uc2UtPnNvX3NuZGF2b2lkICAgPSBsb2Nfc25kYXZvaWQ7Ci0gCisKICAgc2VuZF9yZXNwb25zZSgpOwotICAKLSAgCisKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydCh1ZHBfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogI2lmZGVmIFdJTjMyCiAgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCiAgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCkBAIC03NDE2LDcgKzgyMzQsNyBAQAogICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLwogICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNfZGF0YTsKICNlbmRpZiAvKiBXSU4zMiAqLwotICAKKwogICBpZiAodWRwX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoID4gMCkgewogICAgIHRpbWVzX3VwID0gMDsKICAgICB0cmFuc19yZW1haW5pbmcgPSAwOwpAQCAtNzQyNywxMyArODI0NSwxMyBAQAogICAgIHRyYW5zX3JlbWFpbmluZyA9IHVkcF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCAqIC0xOwogICB9CiAKLSAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcik7IAorICBhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyKTsKICAgYnplcm8oKGNoYXIgKikmcGVlcmFkZHIsIGFkZHJsZW4pOwotICAKKwogICB0cmFuc19yZWNlaXZlZCA9IDA7CiAKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewotICAgIAorCiAgICAgLyogcmVjZWl2ZSB0aGUgcmVxdWVzdCBmcm9tIHRoZSBvdGhlciBzaWRlICovCiAgICAgaWYgKChyZXF1ZXN0X2J5dGVzX3JlY3ZkID0gcmVjdmZyb20oc19kYXRhLAogCQkgcmVjdl9yaW5nLT5idWZmZXJfcHRyLApAQCAtNzQ1OCw3ICs4Mjc2LDcgQEAKIAkJCQkgICAgICB1ZHBfcnJfcmVxdWVzdC0+cmVzcG9uc2Vfc2l6ZSwKIAkJCQkgICAgICAwLAogCQkJCSAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmcGVlcmFkZHIsCi0JCQkJICAgICAgYWRkcmxlbikpICE9IAorCQkJCSAgICAgIGFkZHJsZW4pKSAhPQogCXVkcF9ycl9yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSB7CiAgICAgICBpZiAoIFNPQ0tFVF9FSU5UUihyZXNwb25zZV9ieXRlc19zZW50KSApCiAJICB7CkBAIC03NDcwLDI3ICs4Mjg4LDI3IEBACiAgICAgICBleGl0KDEpOwogICAgIH0KICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7Ci0gICAgCisKICAgICB0cmFuc19yZWNlaXZlZCsrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAicmVjdl91ZHBfcnI6IFRyYW5zYWN0aW9uICVkIGNvbXBsZXRlLlxuIiwKIAkgICAgICB0cmFuc19yZWNlaXZlZCk7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KLSAgICAKKwogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gdGltZW91dCBvciB0cmFuc2FjdGlvbiBjb3VudCBiZWluZyAqLwogICAvKiByZWFjaGVkICovCi0gIAorCiAgIGNwdV9zdG9wKHVkcF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgaWYgKHRpbWVzX3VwKSB7CiAgICAgLyogd2UgZW5kZWQgdGhlIHRlc3QgYnkgdGltZSwgd2hpY2ggd2FzIGF0IGxlYXN0IDIgc2Vjb25kcyAqLwogICAgIC8qIGxvbmdlciB0aGFuIHdlIHdhbnRlZCB0byBydW4uIHNvLCB3ZSB3YW50IHRvIHN1YnRyYWN0ICovCkBAIC03NDk4LDE2ICs4MzE2LDE2IEBACiAgICAgZWxhcHNlZF90aW1lIC09IFBBRF9USU1FOwogICB9CiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3VkcF9ycjogZ290ICVkIHRyYW5zYWN0aW9uc1xuIiwKIAkgICAgdHJhbnNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIHVkcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqIAotCQkJCSAgICAodWRwX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArIAorCisgIHVkcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqCisJCQkJICAgICh1ZHBfcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKIAkJCQkgICAgIHVkcF9ycl9yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7CiAgIHVkcF9ycl9yZXN1bHRzLT50cmFuc19yZWNlaXZlZCA9IHRyYW5zX3JlY2VpdmVkOwogICB1ZHBfcnJfcmVzdWx0cy0+ZWxhcHNlZF90aW1lCSA9IGVsYXBzZWRfdGltZTsKQEAgLTc1MTYsMTMgKzgzMzQsMTMgQEAKICAgaWYgKHVkcF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHVkcF9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl91ZHBfcnI6IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwogCiAgIC8qIHdlIGFyZSBkb25lIHdpdGggdGhlIHNvY2tldCBub3cgKi8KQEAgLTc1MzYsNyArODM1NCw3IEBACiB2b2lkCiByZWN2X3RjcF9ycigpCiB7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKIApAQCAtNzU1NywyMyArODM3NSwyMyBAQAogICBpbnQJdGltZWRfb3V0ID0gMDsKICAgaW50ICAgc29ja19jbG9zZWQgPSAwOwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHN0cnVjdAl0Y3BfcnJfcmVxdWVzdF9zdHJ1Y3QJKnRjcF9ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJdGNwX3JyX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX3JyX3Jlc3VsdHNfc3RydWN0CSp0Y3BfcnJfcmVzdWx0czsKLSAgCi0gIHRjcF9ycl9yZXF1ZXN0ID0gCisKKyAgdGNwX3JyX3JlcXVlc3QgPQogICAgIChzdHJ1Y3QgdGNwX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICB0Y3BfcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9ycl9yZXN1bHRzID0KICAgICAoc3RydWN0IHRjcF9ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl90Y3BfcnI6IGVudGVyZWQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KICAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwogICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwpAQCAtNzU4MSwyNCArODM5OSwyNCBAQAogICAvKiBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgKi8KICAgLyogdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28gd3JvbmcgZm9yIGFueSAqLwogICAvKiByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KLSAgCisKICAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0ICovCiAgIC8qIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzICovCiAgIC8qIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMgdW5leHBlY3RlZCAqLwogICAvKiByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX3JyOiBzZXR0aW5nIHRoZSByZXNwb25zZSB0eXBlLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlID0gVENQX1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9ycjogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIGFsbG9jYXRlIHRoZSByZWN2IGFuZCBzZW5kIHJpbmdzIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnRzICovCiAgIC8qIGFuZCBvZmZzZXRzLiByYWogNy85NCAqLwogICBpZiAoZGVidWcpIHsKQEAgLTc2MjUsOSArODQ0Myw5IEBACiAJCQkJICAgdGNwX3JyX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50LAogCQkJCSAgIHRjcF9ycl9yZXF1ZXN0LT5yZWN2X29mZnNldCk7CiAKLSAgCisKICAgLyogR3JhYiBhIHNvY2tldCB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtNzY1NywxNSArODQ3NSwxNSBAQAogCQkJCTApOwogCiAgIHNfbGlzdGVuID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgIGlmIChzX2xpc3RlbiA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgCisKKwogI2lmZGVmIFdJTjMyCiAgIC8qIFRoZSB0ZXN0IHRpbWVyIGNhbiBmaXJlIGR1cmluZyBvcGVyYXRpb25zIG9uIHRoZSBsaXN0ZW5pbmcgc29ja2V0LAogICAgICBzbyB0byBtYWtlIHRoZSBzdGFydF90aW1lciBiZWxvdyB3b3JrIHdlIGhhdmUgdG8gbW92ZQpAQCAtNzY3Myw0MyArODQ5MSw0MyBAQAogICB3aW5fa2x1ZGdlX3NvY2tldDIgPSBzX2xpc3RlbjsKICNlbmRpZgogCi0gIAorCiAgIC8qIE5vdywgbGV0J3Mgc2V0LXVwIHRoZSBzb2NrZXQgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyAqLwogICBpZiAobGlzdGVuKHNfbGlzdGVuLCA1KSA9PSBTT0NLRVRfRVJST1IpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIGNsb3NlKHNfbGlzdGVuKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAKKworCiAgIC8qIG5vdyBnZXQgdGhlIHBvcnQgbnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGFkZHJsZW4gPSBzaXplb2YobXlhZGRyX2luKTsKICAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLAotCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX2luLCAKKwkJICAoc3RydWN0IHNvY2thZGRyICopJm15YWRkcl9pbiwKIAkJICAmYWRkcmxlbikgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKLSAgdGNwX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gCisKKyAgdGNwX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0KICAgICAoaW50KSBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZteWFkZHJfaW4pLT5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgMC4wIHRvICovCiAgIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCiAgIHRjcF9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSAoZmxvYXQpMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICB0Y3BfcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMDsKIApAQCAtNzcxNyw4ICs4NTM1LDggQEAKICAgICB0Y3BfcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKICAgICB0Y3BfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdSh0Y3BfcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAotICAKKworCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgdGNwX3JyX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplID0gbHNzX3NpemU7CkBAIC03NzI4LDE4ICs4NTQ2LDE4IEBACiAgIHRjcF9ycl9yZXNwb25zZS0+c29fc25kYXZvaWQgPSBsb2Nfc25kYXZvaWQ7CiAgIHRjcF9ycl9yZXNwb25zZS0+dGVzdF9sZW5ndGggPSB0Y3BfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGg7CiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7Ci0gIAorCiAgIGlmICgoc19kYXRhID0gYWNjZXB0KHNfbGlzdGVuLAogCQkgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZwZWVyYWRkcl9pbiwKIAkJICAgICAgICZhZGRybGVuKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICAvKiBMZXQncyBqdXN0IHB1bnQuIFRoZSByZW1vdGUgd2lsbCBiZSBnaXZlbiBzb21lIGluZm9ybWF0aW9uICovCiAgICAgY2xvc2Uoc19saXN0ZW4pOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogI2lmZGVmIEtMVURHRV9TT0NLRVRfT1BUSU9OUwogICAvKiB0aGlzIGlzIGZvciB0aG9zZSBzeXN0ZW1zIHdoaWNoICpJTkNPUlJFQ1RMWSogZmFpbCB0byBwYXNzICovCiAgIC8qIGF0dHJpYnV0ZXMgYWNyb3NzIGFuIGFjY2VwdCgpIGNhbGwuIEluY2x1ZGluZyB0aGlzIGdvZXMgYWdhaW5zdCAqLwpAQCAtNzc1NywyMSArODU3NSwyMiBAQAogICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLwogICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLwogICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNfZGF0YTsKKyAgd2luX2tsdWRnZV9zb2NrZXQyID0gSU5WQUxJRF9TT0NLRVQ7CiAjZW5kaWYgLyogV0lOMzIgKi8KIAogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9ycjogYWNjZXB0IGNvbXBsZXRlcyBvbiB0aGUgZGF0YSBjb25uZWN0aW9uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydCh0Y3BfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogICAvKiBUaGUgbG9vcCB3aWxsIGV4aXQgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUgdGVzdCB0aW1lLCBvciB3aGVuICovCiAgIC8qIHdlIGhhdmUgZXhjaGFuZ2VkIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucy4gKi8KLSAgCisKICAgaWYgKHRjcF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTc3ODMsNyArODYwMiw3IEBACiAgIH0KIAogICB0cmFuc19yZWNlaXZlZCA9IDA7Ci0gIAorCiAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKICAgICB0ZW1wX21lc3NhZ2VfcHRyID0gcmVjdl9yaW5nLT5idWZmZXJfcHRyOwogICAgIHJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nCT0gdGNwX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZTsKQEAgLTc4MjQsMTAgKzg2NDMsMTAgQEAKICAgICAgIGlmIChkZWJ1ZykgewogCWZwcmludGYod2hlcmUsInlvNVxuIik7CiAJZmZsdXNoKHdoZXJlKTsKLSAgICAgIH0JCQkJCQkKKyAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKwogICAgIC8qIE5vdywgc2VuZCB0aGUgcmVzcG9uc2UgdG8gdGhlIHJlbW90ZSAqLwogICAgIGlmKChieXRlc19zZW50PXNlbmQoc19kYXRhLAogCQkJc2VuZF9yaW5nLT5idWZmZXJfcHRyLApAQCAtNzgzNywxNCArODY1NiwxNCBAQAogCS8qIHRoZSB0ZXN0IHRpbWVyIGhhcyBwb3BwZWQgKi8KIAl0aW1lZF9vdXQgPSAxOwogCWZwcmludGYod2hlcmUsInlvNlxuIik7Ci0JZmZsdXNoKHdoZXJlKTsJCQkJCQkKKwlmZmx1c2god2hlcmUpOwogCWJyZWFrOwogICAgICAgfQogICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSA5OTI7CiAgICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKIAogICAgIHRyYW5zX3JlY2VpdmVkKys7CkBAIC03ODUyLDEzICs4NjcxLDEzIEBACiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9CiAgIH0KLSAgCi0gIAorCisKICAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHRyYW5zYWN0aW9uIGNvdW50IGJlaW5nICovCiAgIC8qIHJlYWNoZWQgKi8KLSAgCisKICAgY3B1X3N0b3AodGNwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICBzdG9wX3RpbWVyKCk7CiAKICAgaWYgKHRpbWVkX291dCkgewpAQCAtNzg2OSwxNiArODY4OCwxNiBAQAogICB9CiAKICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfdGNwX3JyOiBnb3QgJWQgdHJhbnNhY3Rpb25zXG4iLAogCSAgICB0cmFuc19yZWNlaXZlZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgdGNwX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkID0gKHRyYW5zX3JlY2VpdmVkICogCi0JCQkJICAgICh0Y3BfcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsgCisKKyAgdGNwX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkID0gKHRyYW5zX3JlY2VpdmVkICoKKwkJCQkgICAgKHRjcF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemUgKwogCQkJCSAgICAgdGNwX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUpKTsKICAgdGNwX3JyX3Jlc3VsdHMtPnRyYW5zX3JlY2VpdmVkID0gdHJhbnNfcmVjZWl2ZWQ7CiAgIHRjcF9ycl9yZXN1bHRzLT5lbGFwc2VkX3RpbWUgICA9IGVsYXBzZWRfdGltZTsKQEAgLTc4ODcsMTkgKzg3MDYsMTkgQEAKICAgaWYgKHRjcF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHRjcF9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfcnI6IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogd2UgYXJlIG5vdyBkb25lIHdpdGggdGhlIHNvY2tldHMgKi8KICAgY2xvc2Uoc19kYXRhKTsKICAgY2xvc2Uoc19saXN0ZW4pOwogCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKIH0KIAogDApAQCAtNzkxNiw3ICs4NzM1LDcgQEAKICAgLyogdmFyaWFibGUgZXF1YWwgdG8gdGhlIG91dHB1dCBvZiB0aGlzIHRlc3QuIFdlIGlnbm9yZSBhbnkgcmF0ZXMgKi8KICAgLyogdGhhdCBtYXkgaGF2ZSBiZWVuIHNwZWNpZmllZC4gSW4gZmFjdCwgd2UgaWdub3JlIGFsbCBvZiB0aGUgKi8KICAgLyogY29tbWFuZCBsaW5lIGFyZ3MhICovCi0gIAorCiAgIGZwcmludGYod2hlcmUsCiAJICAiJWciLAogCSAgY2FsaWJyYXRlX2xvY2FsX2NwdSgwLjApKTsKQEAgLTc5MjcsNyArODc0Niw3IEBACiAJICAgIChsaWJfbnVtX2xvY19jcHVzID4gMSkgPyAiYXJlIiA6ICJpcyIsCiAJICAgIGxpYl9udW1fbG9jX2NwdXMsCiAJICAgIChsaWJfbnVtX2xvY19jcHVzID4gMSkgPyAiY3B1cyIgOiAiY3B1Iik7Ci0JICAgIAorCiAgIC8qIHdlIG5lZWQgdGhlIGNwdV9zdGFydCwgY3B1X3N0b3AgaW4gdGhlIGxvb3BlciBjYXNlIHRvIGtpbGwgdGhlICovCiAgIC8qIGNoaWxkIHByb2Nlc2VzIHJhaiA0Lzk1ICovCiAKQEAgLTc5MzYsNyArODc1NSw3IEBACiAgIGNwdV9zdG9wKDEsJmR1bW15KTsKICNlbmRpZiAvKiBVU0VfTE9PUEVSICovCiAKLX0JCit9CiAKIHZvaWQKIHJlbV9jcHVfcmF0ZSgpCkBAIC03OTQ0LDExICs4NzYzLDExIEBACiAgIC8qIHRoaXMgdGVzdCBpcyBtdWNoIGxpa2UgdGhlIGxvY2FsIHZhcmlhbnQsIGV4Y2VwdCB0aGF0IGl0IHdvcmtzIGZvciAqLwogICAvKiB0aGUgcmVtb3RlIHN5c3RlbSwgc28gaW4gdGhpcyBjYXNlLCB3ZSBkbyBwYXkgYXR0ZW50aW9uIHRvIHRoZSAqLwogICAvKiB2YWx1ZSBvZiB0aGUgJy1IJyBjb21tYW5kIGxpbmUgYXJndW1lbnQuICovCi0gIAorCiAgIGZwcmludGYod2hlcmUsCiAJICAiJWciLAogCSAgY2FsaWJyYXRlX3JlbW90ZV9jcHUoKSk7Ci0gIAorCiAgIGlmICh2ZXJib3NpdHkgPiAxKQogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJcblRoZXJlICVzICVkIHJlbW90ZSAlc1xuIiwKQEAgLTc5NTcsOCArODc3Niw5IEBACiAJICAgIChsaWJfbnVtX3JlbV9jcHVzID4gMSkgPyAiY3B1cyIgOiAiY3B1Iik7CiAKIH0KLQwKIAorDAorI2lmbmRlZiBXQU5UX01JR1JBVElPTgogIC8qIHRoaXMgdGVzdCBpcyBpbnRlbmRlZCB0byB0ZXN0IHRoZSBwZXJmb3JtYW5jZSBvZiBlc3RhYmxpc2hpbmcgYQogICAgIGNvbm5lY3Rpb24sIGV4Y2hhbmdpbmcgYSByZXF1ZXN0L3Jlc3BvbnNlIHBhaXIsIGFuZCByZXBlYXRpbmcuIGl0CiAgICAgaXMgZXhwZWN0ZWQgdGhhdCB0aGlzIHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZy1wb2ludCBmb3IKQEAgLTc5NjksNDYgKzg3ODksNDYgQEAKIHZvaWQKIHNlbmRfdGNwX2Nvbm5fcnIoY2hhciByZW1vdGVfaG9zdFtdKQogewotICAKKwogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKIExvY2FsIC9SZW1vdGVcblwKIFNvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBUcmFucy5cblwKIFNlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBSYXRlICAgICAgICAgXG5cCiBieXRlcyAgQnl0ZXMgIGJ5dGVzICAgIGJ5dGVzICAgc2Vjcy4gICAgcGVyIHNlYyAgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAgJS02ZCAgJS02LjJmICAgJTcuMmYgICBcbiI7CiAgIGNoYXIgKnRwdXRfZm10XzFfbGluZV8yID0gIlwKICUtNmQgJS02ZFxuIjsKLSAgCisKICAgY2hhciAqY3B1X3RpdGxlID0gIlwKIExvY2FsIC9SZW1vdGVcblwKIFNvY2tldCBTaXplICAgUmVxdWVzdCBSZXNwLiAgRWxhcHNlZCBUcmFucy4gICBDUFUgICAgQ1BVICAgIFMuZGVtICAgUy5kZW1cblwKIFNlbmQgICBSZWN2ICAgU2l6ZSAgICBTaXplICAgVGltZSAgICBSYXRlICAgICBsb2NhbCAgcmVtb3RlIGxvY2FsICAgcmVtb3RlXG5cCiBieXRlcyAgYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgIHNlY3MuICAgcGVyIHNlYyAgJSUgICAgICAlJSAgICAgIHVzL1RyICAgdXMvVHJcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICUtNmQgJS02LjJmICAlLTYuMmYgICAlLTYuMmYgJS02LjJmICUtNi4zZiAgJS02LjNmXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8yID0gIlwKICUtNmQgJS02ZFxuIjsKLSAgCisKICAgY2hhciAqa3NpbmtfZm10ID0gIlxuXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0XG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCiBTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdlxuXAogJTVkICAlNWQgICAlNWQgICU1ZFxuIjsKLSAgCi0gIAorCisKICAgaW50CQkJdGltZWRfb3V0ID0gMDsKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIGludAlsZW47CiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKQEAgLTgwMTksMTMgKzg4MzksMTMgQEAKICAgZG91YmxlCWJ5dGVzX3hmZXJkOwogICBpbnQJcnNwX2J5dGVzX2xlZnQ7CiAgIGludAlyc3BfYnl0ZXNfcmVjdmQ7Ci0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwogICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CiAKQEAgLTgwMzUsMTUgKzg4NTUsMTUgQEAKICAgc3RydWN0CXRjcF9jb25uX3JyX3JlcXVlc3Rfc3RydWN0CSp0Y3BfY29ubl9ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJdGNwX2Nvbm5fcnJfcmVzcG9uc2Vfc3RydWN0CSp0Y3BfY29ubl9ycl9yZXNwb25zZTsKICAgc3RydWN0CXRjcF9jb25uX3JyX3Jlc3VsdHNfc3RydWN0CSp0Y3BfY29ubl9ycl9yZXN1bHQ7Ci0gIAotICB0Y3BfY29ubl9ycl9yZXF1ZXN0ID0gCisKKyAgdGNwX2Nvbm5fcnJfcmVxdWVzdCA9CiAgICAgKHN0cnVjdCB0Y3BfY29ubl9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgdGNwX2Nvbm5fcnJfcmVzcG9uc2UgPSAKKyAgdGNwX2Nvbm5fcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX2Nvbm5fcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgdGNwX2Nvbm5fcnJfcmVzdWx0ID0KICAgICAoc3RydWN0IHRjcF9jb25uX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCi0gIAorCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC04MDU0LDcgKzg4NzQsNyBAQAogICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCiAgIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCiAgIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKICAgY29tcGxldGVfYWRkcmluZm9zKCZyZW1vdGVfcmVzLAogCQkgICAgICZsb2NhbF9yZXMsCiAJCSAgICAgcmVtb3RlX2hvc3QsCkBAIC04MDY1LDEzICs4ODg1LDEzIEBACiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICBwcmludF90b3BfdGVzdF9oZWFkZXIoIlRDUCBDb25uZWN0L1JlcXVlc3QvUmVzcG9uc2UgVEVTVCIsbG9jYWxfcmVzLHJlbW90ZV9yZXMpOwogICB9Ci0gIAorCiAgIC8qIGluaXRpYWxpemUgYSBmZXcgY291bnRlcnMgKi8KLSAgCisKICAgbnVtbWVzc2FnZXMJPQkwOwogICBieXRlc194ZmVyZAk9CTAuMDsKICAgdGltZXNfdXAgCT0gCTA7Ci0gIAorCiAgIC8qIHNldC11cCB0aGUgZGF0YSBidWZmZXJzIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQgYW5kIG9mZnNldCAqLwogICBpZiAoc2VuZF93aWR0aCA9PSAwKSBzZW5kX3dpZHRoID0gMTsKICAgaWYgKHJlY3Zfd2lkdGggPT0gMCkgcmVjdl93aWR0aCA9IDE7CkBAIC04MDkwLDIwICs4OTEwLDIwIEBACiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInNlbmRfdGNwX2Nvbm5fcnI6IHNlbmRfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgfQotICAKKwogICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QgKi8KICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAvKiB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbiAqLwogICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwogICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgfQogCiAgIGlmICghbm9fY29udHJvbCkgewotICAKKwogICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZQogICAgICAgIHNvY2tldCBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlCiAgICAgICAgcmVhc29uIGZvciBhbGwgdGhlIHZhbHVlcyBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmCkBAIC04MTEyLDcgKzg5MzIsNyBAQAogICAgICAgIGJleW9uZCB0aGUgc3lzdGVtJ3MgZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4gQWxpZ25tZW50IGlzIHRoZQogICAgICAgIGV4Y2VwdGlvbiwgaXQgd2lsbCBkZWZhdWx0IHRvIDgsIHdoaWNoIHdpbGwgYmUgbm8gYWxpZ25tZW50CiAgICAgICAgYWx0ZXJhdGlvbnMuICovCi0gIAorCiAgICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlID0JRE9fVENQX0NSUjsKICAgICB0Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemVfcmVxOwogICAgIHRjcF9jb25uX3JyX3JlcXVlc3QtPnNlbmRfYnVmX3NpemUJPQlyc3Nfc2l6ZV9yZXE7CkBAIC04MTM1LDEzICs4OTU1LDEzIEBACiAgICAgfQogICAgIHRjcF9jb25uX3JyX3JlcXVlc3QtPnBvcnQgICAgICAgICAgID0gYXRvaShyZW1vdGVfZGF0YV9wb3J0KTsKICAgICB0Y3BfY29ubl9ycl9yZXF1ZXN0LT5pcGZhbWlseSAgICAgICA9IGFmX3RvX25mKHJlbW90ZV9yZXMtPmFpX2ZhbWlseSk7Ci0gICAgCisKICAgICBpZiAoZGVidWcgPiAxKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJuZXRwZXJmOiBzZW5kX3RjcF9jb25uX3JyOiByZXF1ZXN0aW5nIFRDUCBjcnIgdGVzdFxuIik7CiAgICAgfQotICAgIAorCiAgICAgc2VuZF9yZXF1ZXN0KCk7Ci0gICAgCisKICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50CiAgICAgICAgc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sKICAgICAgICBpbnRvIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4KQEAgLTgxNTEsOSArODk3MSw5IEBACiAgICAgICAgdmFsdWUgcmlnaHQgYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlCiAgICAgICAgY291bnRlciByaWdodCBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZgogICAgICAgIGV4dHJhIG1lc3NhZ2VzIGJlaW5nIHNlbnQgZm9yIHRoZSBUQ1AgdGVzdHMuICAqLwotICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKLSAgCisKICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgICByc3Jfc2l6ZQkgICAgICAgPQl0Y3BfY29ubl9ycl9yZXNwb25zZS0+cmVjdl9idWZfc2l6ZTsKICAgICAgIHJzc19zaXplCSAgICAgICA9CXRjcF9jb25uX3JyX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplOwpAQCAtODE2Myw3ICs4OTgzLDcgQEAKICAgICAgIC8qIG1ha2Ugc3VyZSB0aGF0IHBvcnQgbnVtYmVycyBhcmUgaW4gbmV0d29yayBvcmRlciAqLwogICAgICAgc2V0X3BvcnRfbnVtYmVyKHJlbW90ZV9yZXMsCiAJCSAgICAgICh1bnNpZ25lZCBzaG9ydCl0Y3BfY29ubl9ycl9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlcik7Ci0gICAgICAKKwogICAgICAgaWYgKGRlYnVnKSB7CiAJZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CiAJZnByaW50Zih3aGVyZSwicmVtb3RlIHBvcnQgaXMgJXVcbiIsZ2V0X3BvcnRfbnVtYmVyKHJlbW90ZV9yZXMpKTsKQEAgLTgxODEsMTQgKzkwMDEsMTQgQEAKICAgICB9CiAgIH0KICNpZmRlZiBXQU5UX0RFTU8KLSAgREVNT19SUl9TRVRVUCgxMDApCisgIGRlbW9fcnJfc2V0dXAoMTAwKTsKICNlbmRpZgogCiAgIC8qIHBpY2sgYSBuaWNlIHJhbmRvbSBzcG90IGJldHdlZW4gY2xpZW50X3BvcnRfbWluIGFuZCAqLwogICAvKiBjbGllbnRfcG9ydF9tYXggZm9yIG91ciBpbml0aWFsIHBvcnQgbnVtYmVyICovCiAgIHNyYW5kKGdldHBpZCgpKTsKICAgaWYgKGNsaWVudF9wb3J0X21heCAtIGNsaWVudF9wb3J0X21pbikgewotICAgIG15cG9ydCA9IGNsaWVudF9wb3J0X21pbiArIAorICAgIG15cG9ydCA9IGNsaWVudF9wb3J0X21pbiArCiAgICAgICAocmFuZCgpICUgKGNsaWVudF9wb3J0X21heCAtIGNsaWVudF9wb3J0X21pbikpOwogICB9CiAgIGVsc2UgewpAQCAtODE5OCw3ICs5MDE4LDcgQEAKICAgbXlwb3J0LS07CiAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LCB0aGV5ICovCiAgIC8qIGNhbiBiZSBlaXRoZXIgdGltZSBvciB0cmFuc2FjdGlvbiBiYXNlZC4gKi8KLSAgCisKICAgaWYgKHRlc3RfdGltZSkgewogICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICB0aW1lc191cCA9IDA7CkBAIC04MjEwLDIwICs5MDMwLDIwIEBACiAgICAgdHJhbnNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICB0aW1lc191cCA9IDE7CiAgIH0KLSAgCisKICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAvKiB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCiAKLSAgCisKICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7CiAKICNpZmRlZiBXQU5UX0RFTU8KICAgICAgIGlmIChkZW1vX21vZGUpIHsKLQlISVNUX3RpbWVzdGFtcChkZW1vX29uZV9wdHIpOworCWRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CiAgICAgICB9CiAjZW5kaWYKLSAgCisKICAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcyAqLwogICAvKiBjb250cm9sbGVkIGJ5IHRpbWUsIHRoZSBieXRlIGNvdW50IGNoZWNrIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gKi8KICAgLyogV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3Qgd2lsbCAqLwpAQCAtODI3NCw3ICs5MDk0LDcgQEAKICAgICAvKiBzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICovCiAgICAgc2V0X3BvcnRfbnVtYmVyKGxvY2FsX3JlcywgKHVuc2lnbmVkIHNob3J0KW15cG9ydCk7CiAgICAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKLSAgCisKICAgICBpZiAoc2VuZF9zb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF90Y3BfY29ubl9ycjogdGNwIHN0cmVhbSBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKQEAgLTgyODUsNyArOTEwNSw3IEBACiAgICAgICAgY3JlYXRlX2RhdGFfc29ja2V0IHJvdXRpbmUuICovCiAKICAgICAvKiBDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQgICovCi0gICAgaWYgKChyZXQgPSBjb25uZWN0KHNlbmRfc29ja2V0LCAKKyAgICBpZiAoKHJldCA9IGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCSAgICAgICByZW1vdGVfcmVzLT5haV9hZGRyLAogCQkgICAgICAgcmVtb3RlX3Jlcy0+YWlfYWRkcmxlbikpID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIGlmIChTT0NLRVRfRUlOVFIocmV0KSkKQEAgLTgzODIsNiArOTIwMiwxNSBAQAogICAgIC8qIHplcm8gcmV0dXJuIHdlIGNhbiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgdGhhdCBzdGljayB1cyB3aXRoIHRoZSAqLwogICAgIC8qIFRJTUVfV0FJVCBjb25uZWN0aW9uIGFuZCBub3QgdGhlIHNlcnZlci4gcmFqIDgvOTYgKi8KIAorI2lmZGVmIFZNV0FSRV9VVworICAgIC8qIHdoeSB0aGlzIHNob3VsZCBiZSBmb3IgVk13YXJlIEknbSBub3Qgc3VyZSwgYnV0IGl0IHdhcyBnaXZlbiBhcworICAgICAgIHBhcnQgb2YgdGhlIHBhdGNoZXMsIHNvIHdlIGluY2x1ZGUgaXQgaGVyZSwgYnV0IHB1dCBpdCB1bmRlciBhbgorICAgICAgIGlmZGVmIFZNV0FSRV9VVy4gcmFqIDIwMDgtMDctMjUgKi8KKyAgICBpZiAoc3BfYnl0ZXNfcmVjdmQgPCAwICYmIGVycm5vID09IEVDT05OUkVTRVQpIHsKKyAgICAgIHJzcF9ieXRlc19yZWN2ZCA9IDA7CisgICAgfQorI2VuZGlmIC8qIFZNV0FSRV9VVyAqLworCiAgICAgaWYgKHJzcF9ieXRlc19yZWN2ZCA9PSAwKSB7CiAgICAgICAvKiBjb25uZWN0aW9uIGNsb3NlLCBjYWxsIGNsb3NlLiB3ZSBhc3N1bWUgdGhhdCB0aGUgcmVxdWlzaXRlICovCiAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgaGF2ZSBiZWVuIHJlY2VpdmVkICovCkBAIC04Mzk1LDE0ICs5MjI0LDE0IEBACiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogI2lmZGVmIFdBTlRfREVNTwotICAgICAgREVNT19SUl9JTlRFUlZBTCgxKQorICAgICAgZGVtb19ycl9pbnRlcnZhbCgxKTsKICNlbmRpZgogCi0gICAgICBudW1tZXNzYWdlcysrOyAgICAgICAgICAKKyAgICAgIG51bW1lc3NhZ2VzKys7CiAgICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAJdHJhbnNfcmVtYWluaW5nLS07CiAgICAgICB9Ci0gICAgCisKICAgICAgIGlmIChkZWJ1ZyA+IDMpIHsKIAlmcHJpbnRmKHdoZXJlLAogCQkiVHJhbnNhY3Rpb24gJWQgY29tcGxldGVkIG9uIGxvY2FsIHBvcnQgJWRcbiIsCkBAIC04NDI1LDIxICs5MjU0LDIxIEBACiAJICBwZXJyb3IoInNlbmRfdGNwX2Nvbm5fcnI6IGRhdGEgcmVjdiBlcnJvciIpOwogCSAgZXhpdCgxKTsKICAgICB9Ci0gICAgICAKKwogICB9CiAKLSAgCisKICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwogCiAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyBtZWFzdXJlZD8gKi8KICAgLyogaG93IGxvbmcgZGlkIHdlIHJlYWxseSBydW4/ICovCi0gIAorCiAgIGlmICghbm9fY29udHJvbCkgewogICAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kLiBUaGUgcmVtb3RlIHdpbGwgaGF2ZQogICAgICAgIGNhbGN1bGF0ZWQgc2VydmljZSBkZW1hbmQgYW5kIGFsbCB0aG9zZSBpbnRlcmVzdGluZyB0aGluZ3MuIElmCiAgICAgICAgaXQgd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLwotICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgICBpZiAoZGVidWcpCkBAIC04NDUyLDcgKzkyODEsNyBAQAogCSAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICAgIHBlcnJvcigiIik7CiAgICAgICBmZmx1c2god2hlcmUpOwotICAgICAgCisKICAgICAgIGV4aXQoMSk7CiAgICAgfQogICB9CkBAIC04NDY3LDExICs5Mjk2LDExIEBACiAgIC8qIHNlbmRfc2l6ZSwgc28gd2UgcmVhbGx5IGRpZG4ndCBzZW5kIHdoYXQgaGUgYXNrZWQgZm9yIDstKSBXZSB1c2UgKi8KICAgLyogS2J5dGVzL3MgYXMgdGhlIHVuaXRzIG9mIHRocnVwdXQgZm9yIGEgVENQIHN0cmVhbSB0ZXN0LCB3aGVyZSBLID0gKi8KICAgLyogMTAyNC4gQSBmdXR1cmUgZW5oYW5jZW1lbnQgKm1pZ2h0KiBiZSB0byBjaG9vc2UgZnJvbSBhIGNvdXBsZSBvZiAqLwotICAvKiB1bml0IHNlbGVjdGlvbnMuICovIAotICAKKyAgLyogdW5pdCBzZWxlY3Rpb25zLiAqLworCiAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICB0aHJ1cHV0CT0gY2FsY190aHJ1cHV0KGJ5dGVzX3hmZXJkKTsKLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGZvciB0aGUgc3lzdGVtKHMpICovCkBAIC04NDk5LDcgKzkzMjgsNyBAQAogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAoZmxvYXQpIC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAgIGlmIChyZW1vdGVfY3B1X3JhdGUgPT0gMC4wKSB7CiAJZnByaW50Zih3aGVyZSwKQEAgLTg1MjEsNyArOTM1MCw3IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IChmbG9hdCkgLTEuMDsKICAgICB9Ci0gICAgCisKICAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyICovCiAgICAgLyogaGFzIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSAqLwogICAgIC8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgKi8KQEAgLTg1MzAsNyArOTM1OSw3IEBACiAgICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwogICAgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KICAgICAvKiBub3QgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC04NTUzLDcgKzkzODIsNyBAQAogCQlsb2NhbF9jcHVfbWV0aG9kLAogCQlyZW1vdGVfY3B1X21ldGhvZCk7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICBjcHVfZm10XzFfbGluZV8xLAkJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KIAkgICAgICBsc3Nfc2l6ZSwJCS8qIGxvY2FsIHNlbmRidWYgc2l6ZSAqLwpAQCAtODU5OSwyMyArOTQyOCwyMyBAQAogCSAgICAgIHRwdXRfZm10XzFfbGluZV8yLAogCSAgICAgIHJzc19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KIAkgICAgICByc3Jfc2l6ZSk7Ci0gICAgICAKKwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFRDUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICBrc2lua19mbXQsCiAJICAgIGxvY2FsX3NlbmRfYWxpZ24sCkBAIC04NjMwLDE0ICs5NDU5LDE0IEBACiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogICB9Ci0gIAotfQogCit9CisjZW5kaWYgLyogV0FOVF9NSUdSQVRJT04gKi8KIAwKIHZvaWQKIHJlY3ZfdGNwX2Nvbm5fcnIoKQogewotICAKKwogICBjaGFyICAqbWVzc2FnZTsKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CiAgIGNoYXIgbG9jYWxfbmFtZVtCVUZTSVpdOwpAQCAtODY1NiwyMyArOTQ4NSwyMyBAQAogICBpbnQJcmVxdWVzdF9ieXRlc19yZW1haW5pbmc7CiAgIGludAl0aW1lZF9vdXQgPSAwOwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHN0cnVjdAl0Y3BfY29ubl9ycl9yZXF1ZXN0X3N0cnVjdAkqdGNwX2Nvbm5fcnJfcmVxdWVzdDsKICAgc3RydWN0CXRjcF9jb25uX3JyX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX2Nvbm5fcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAl0Y3BfY29ubl9ycl9yZXN1bHRzX3N0cnVjdAkqdGNwX2Nvbm5fcnJfcmVzdWx0czsKLSAgCi0gIHRjcF9jb25uX3JyX3JlcXVlc3QgPSAKKworICB0Y3BfY29ubl9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHRjcF9jb25uX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB0Y3BfY29ubl9ycl9yZXNwb25zZSA9IAorICB0Y3BfY29ubl9ycl9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCB0Y3BfY29ubl9ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB0Y3BfY29ubl9ycl9yZXN1bHRzID0gCisgIHRjcF9jb25uX3JyX3Jlc3VsdHMgPQogICAgIChzdHJ1Y3QgdGNwX2Nvbm5fcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3ZfdGNwX2Nvbm5fcnI6IGVudGVyZWQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KICAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwogICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwpAQCAtODY4MCwxOSArOTUwOSwxOSBAQAogICAvKiBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgKi8KICAgLyogdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28gd3JvbmcgZm9yIGFueSAqLwogICAvKiByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KLSAgCisKICAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0ICovCiAgIC8qIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzICovCiAgIC8qIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMgdW5leHBlY3RlZCAqLwogICAvKiByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2Nvbm5fcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBUQ1BfQ1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9jb25uX3JyOiB0aGUgcmVzcG9uc2UgdHlwZSBpcyBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC04NzA0LDEwICs5NTMzLDEwIEBACiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIERBVEFCVUZGRVJMRU4pOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogV2Ugbm93IGFsdGVyIHRoZSBtZXNzYWdlX3B0ciB2YXJpYWJsZXMgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KICAgLyogYWxpZ25tZW50cyB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldHMuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3RjcF9jb25uX3JyOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLApAQCAtODcyMSwxNiArOTU1MCwxNiBAQAogICB9CiAKICAgcmVjdl9tZXNzYWdlX3B0ciA9IEFMSUdOX0JVRkZFUihtZXNzYWdlLCB0Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCwgdGNwX2Nvbm5fcnJfcmVxdWVzdC0+cmVjdl9vZmZzZXQpOwotICAKKwogICBzZW5kX21lc3NhZ2VfcHRyID0gQUxJR05fQlVGRkVSKG1lc3NhZ2UsIHRjcF9jb25uX3JyX3JlcXVlc3QtPnNlbmRfYWxpZ25tZW50LCB0Y3BfY29ubl9ycl9yZXF1ZXN0LT5zZW5kX29mZnNldCk7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2Nvbm5fcnI6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2Nvbm5fcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtODc0NSw3ICs5NTc0LDcgQEAKICAgbG9jX25vZGVsYXkgPSB0Y3BfY29ubl9ycl9yZXF1ZXN0LT5ub19kZWxheTsKICAgbG9jX3JjdmF2b2lkID0gdGNwX2Nvbm5fcnJfcmVxdWVzdC0+c29fcmN2YXZvaWQ7CiAgIGxvY19zbmRhdm9pZCA9IHRjcF9jb25uX3JyX3JlcXVlc3QtPnNvX3NuZGF2b2lkOwotICAKKwogICBzZXRfaG9zdG5hbWVfYW5kX3BvcnQobG9jYWxfbmFtZSwKIAkJCXBvcnRfYnVmZmVyLAogCQkJbmZfdG9fYWYodGNwX2Nvbm5fcnJfcmVxdWVzdC0+aXBmYW1pbHkpLApAQCAtODc2MCw3ICs5NTg5LDcgQEAKIAkJCQkwKTsKIAogICBzX2xpc3RlbiA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKQEAgLTg3ODAsNyArOTYwOSw3IEBACiAKIAogICAvKiBOb3csIGxldCdzIHNldC11cCB0aGUgc29ja2V0IHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMgKi8KLSAgaWYgKGxpc3RlbihzX2xpc3RlbiwgNSkgPT0gU09DS0VUX0VSUk9SKSB7CisgIGlmIChsaXN0ZW4oc19saXN0ZW4sIDEyOCkgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwpAQCAtODc5MCw3ICs5NjE5LDcgQEAKICAgICB9CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBub3cgZ2V0IHRoZSBwb3J0IG51bWJlciBhc3NpZ25lZCBieSB0aGUgc3lzdGVtICAqLwogICBhZGRybGVuID0gc2l6ZW9mKG15YWRkcl9pbik7CiAgIGlmIChnZXRzb2NrbmFtZShzX2xpc3RlbiwKQEAgLTg4MDUsMTIgKzk2MzQsMTIgQEAKICAgICB9CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKLSAgdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPSAKKworICB0Y3BfY29ubl9ycl9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlciA9CiAgICAgKGludCkgbnRvaHMoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmbXlhZGRyX2luKS0+c2luX3BvcnQpOwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJ0ZWxsaW5nIHRoZSByZW1vdGUgdG8gY2FsbCBtZSBhdCAlZFxuIiwKQEAgLTg4MTgsMjIgKzk2NDcsMjIgQEAKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgMC4wIHRvICovCiAgIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCiAgIHRjcF9jb25uX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IChmbG9hdCkwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmICh0Y3BfY29ubl9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHRjcF9jb25uX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7Ci0gICAgdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gCisgICAgdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0KICAgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUodGNwX2Nvbm5fcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAogCi0gIAorCisKICAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCiAgIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICB0Y3BfY29ubl9ycl9yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOwpAQCAtODg0MywxNyArOTY3MiwxNyBAQAogICB0Y3BfY29ubl9ycl9yZXNwb25zZS0+c29fc25kYXZvaWQgPSBsb2Nfc25kYXZvaWQ7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICBhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyX2luKTsKLSAgCisKICAgLyogTm93IGl0J3MgdGltZSB0byBzdGFydCByZWNlaXZpbmcgZGF0YSBvbiB0aGUgY29ubmVjdGlvbi4gV2Ugd2lsbCAqLwogICAvKiBmaXJzdCBncmFiIHRoZSBhcHJvcHJpYXRlIGNvdW50ZXJzIGFuZCB0aGVuIHN0YXJ0IGdyYWJiaW5nLiAqLwotICAKKwogICBjcHVfc3RhcnQodGNwX2Nvbm5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogICAvKiBUaGUgbG9vcCB3aWxsIGV4aXQgd2hlbiB0aGUgc2VuZGVyIGRvZXMgYSBzaHV0ZG93biwgd2hpY2ggd2lsbCAqLwogICAvKiByZXR1cm4gYSBsZW5ndGggb2YgemVybyAgICovCi0gIAorCiAgIGlmICh0Y3BfY29ubl9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTg4NjMsMTQgKzk2OTIsMTQgQEAKICAgICB0aW1lc191cCA9IDE7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gdGNwX2Nvbm5fcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGggKiAtMTsKICAgfQotICAKKwogICB0cmFuc19yZWNlaXZlZCA9IDA7CiAKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewogCiAgICAgLyogYWNjZXB0IGEgY29ubmVjdGlvbiBmcm9tIHRoZSByZW1vdGUgKi8KICNpZmRlZiBXSU4zMgotICAgIC8qIFRoZSB0ZXN0IHRpbWVyIHdpbGwgcHJvYmFibHkgZmlyZSBkdXJpbmcgdGhpcyBhY2NlcHQsIAorICAgIC8qIFRoZSB0ZXN0IHRpbWVyIHdpbGwgcHJvYmFibHkgZmlyZSBkdXJpbmcgdGhpcyBhY2NlcHQsCiAgICAgICAgc28gdG8gbWFrZSB0aGUgc3RhcnRfdGltZXIgYWJvdmUgd29yayB3ZSBoYXZlIHRvIG1vdmUKICAgICAgICBpdCB0byBjbG9zZSBzX2xpc3RlbiB3aGlsZSB3ZSBhcmUgYmxvY2tlZCBvbiBhY2NlcHQuICovCiAgICAgd2luX2tsdWRnZV9zb2NrZXQgPSBzX2xpc3RlbjsKQEAgLTg4ODYsNyArOTcxNSw3IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9jb25uX3JyOiBhY2NlcHQ6IGVycm5vID0gJWRcbiIsZXJybm8pOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgIGNsb3NlKHNfbGlzdGVuKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KIApAQCAtODg5NCw3ICs5NzIzLDcgQEAKICAgICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2Nvbm5fcnI6IGFjY2VwdGVkIGRhdGEgY29ubmVjdGlvbi5cbiIpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9Ci0gIAorCiAjaWZkZWYgV0lOMzIKICAgLyogdGhpcyBpcyB1c2VkIHNvIHRoZSB0aW1lciB0aHJlYWQgY2FuIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20gKi8KICAgLyogdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QgKi8KQEAgLTg5MDksMTQgKzk3MzgsMTQgQEAKICAgICAvKiB0aGlzIGlzIGZvciB0aG9zZSBzeXN0ZW1zIHdoaWNoICpJTkNPUlJFQ1RMWSogZmFpbCB0byBwYXNzICovCiAgICAgLyogYXR0cmlidXRlcyBhY3Jvc3MgYW4gYWNjZXB0KCkgY2FsbC4gSW5jbHVkaW5nIHRoaXMgZ29lcyBhZ2FpbnN0ICovCiAgICAgLyogbXkgYmV0dGVyIGp1ZGdlbWVudCA6KCByYWogMTEvOTUgKi8KLSAgICAKKwogICAgIGtsdWRnZV9zb2NrZXRfb3B0aW9ucyhzX2RhdGEpOwogCiAjZW5kaWYgLyogS0xVREdFX1NPQ0tFVF9PUFRJT05TICovCi0gIAorCiAgICAgdGVtcF9tZXNzYWdlX3B0cgk9IHJlY3ZfbWVzc2FnZV9wdHI7CiAgICAgcmVxdWVzdF9ieXRlc19yZW1haW5pbmcJPSB0Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIG90aGVyIHNpZGUgKi8KICAgICB3aGlsZSAoIXRpbWVzX3VwICYmIChyZXF1ZXN0X2J5dGVzX3JlbWFpbmluZyA+IDApKSB7CiAgICAgICBpZigocmVxdWVzdF9ieXRlc19yZWN2ZD1yZWN2KHNfZGF0YSwKQEAgLTg5MzMsMjAgKzk3NjIsMjcgQEAKIAlzZW5kX3Jlc3BvbnNlKCk7CiAJZXhpdCgxKTsKICAgICAgIH0KLSAgICAgIGVsc2UgeworICAgICAgZWxzZSBpZiAocmVxdWVzdF9ieXRlc19yZWN2ZCA+IDApIHsKIAlyZXF1ZXN0X2J5dGVzX3JlbWFpbmluZyAtPSByZXF1ZXN0X2J5dGVzX3JlY3ZkOwogCXRlbXBfbWVzc2FnZV9wdHIgICs9IHJlcXVlc3RfYnl0ZXNfcmVjdmQ7CiAgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgIAkvKiBmb3Igc29tZSByZWFzb24gdGhlIHJlbW90ZSBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gb24KKwkgKiB1cyBhbmQgdGhhdCBpcyB1bmV4cGVjdGVkIHNvIHdlIHNob3VsZCBqdXN0IGNsb3NlIHRoZQorCSAqIHNvY2tldCBhbmQgbW92ZS1vbi4gZm9yIHRoYXQgd2Ugd2lsbCB1c2UgYW4gZXZpbCBnb3RvCisJICogbmVlbmVyIG5lZW5lciByYWogMjAwOTA2MjIgKi8KKyAgICAJZ290byBiYWlsOworICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmICh0aW1lZF9vdXQpIHsKICAgICAgIC8qIHdlIGhpdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGJhc2VkIG9uIHRpbWUgLSBsZXRzICovCiAgICAgICAvKiBiYWlsIG91dCBvZiBoZXJlIG5vdy4uLiAqLwogICAgICAgZnByaW50Zih3aGVyZSwieW81XG4iKTsKLSAgICAgIGZmbHVzaCh3aGVyZSk7CQkJCQkJCisgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorCiAgICAgLyogTm93LCBzZW5kIHRoZSByZXNwb25zZSB0byB0aGUgcmVtb3RlICovCiAgICAgaWYoKGJ5dGVzX3NlbnQ9c2VuZChzX2RhdGEsCiAJCQlzZW5kX21lc3NhZ2VfcHRyLApAQCAtODk1NiwxOSArOTc5MiwxOSBAQAogCS8qIHRoZSB0ZXN0IHRpbWVyIGhhcyBwb3BwZWQgKi8KIAl0aW1lZF9vdXQgPSAxOwogCWZwcmludGYod2hlcmUsInlvNlxuIik7Ci0JZmZsdXNoKHdoZXJlKTsJCQkJCQkKKwlmZmx1c2god2hlcmUpOwogCWJyZWFrOwogICAgICAgfQogICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSA5OTsKICAgICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgdHJhbnNfcmVjZWl2ZWQrKzsKICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgInJlY3ZfdGNwX2Nvbm5fcnI6IFRyYW5zYWN0aW9uICVkIGNvbXBsZXRlXG4iLApAQCAtODk4OCwxOSArOTgyNCwyMSBAQAogCSByZWN2X21lc3NhZ2VfcHRyLAogCSAxLAogCSAwKTsKK2JhaWw6CiAgICAgY2xvc2Uoc19kYXRhKTsKICNlbHNlCitiYWlsOgogICAgIGNsb3NlKHNfZGF0YSk7CiAjZW5kaWYgLyogVENQX0NSUl9TSFVURE9XTiAqLwogCiAgIH0KLSAgCi0gIAorCisKICAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHRyYW5zYWN0aW9uIGNvdW50IGJlaW5nICovCiAgIC8qIHJlYWNoZWQgKi8KLSAgCisKICAgY3B1X3N0b3AodGNwX2Nvbm5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIGlmICh0aW1lZF9vdXQpIHsKICAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzICovCiAgICAgLyogbG9uZ2VyIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgKi8KQEAgLTkwMDgsMzEgKzk4NDYsMzEgQEAKICAgICBlbGFwc2VkX3RpbWUgLT0gUEFEX1RJTUU7CiAgIH0KICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfdGNwX2Nvbm5fcnI6IGdvdCAlZCB0cmFuc2FjdGlvbnNcbiIsCiAJICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICB0Y3BfY29ubl9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZAk9ICh0cmFuc19yZWNlaXZlZCAqIAotCQkJCQkgICAodGNwX2Nvbm5fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsgCisKKyAgdGNwX2Nvbm5fcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKgorCQkJCQkgICAodGNwX2Nvbm5fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKIAkJCQkJICAgIHRjcF9jb25uX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUpKTsKICAgdGNwX2Nvbm5fcnJfcmVzdWx0cy0+dHJhbnNfcmVjZWl2ZWQJPSB0cmFuc19yZWNlaXZlZDsKICAgdGNwX2Nvbm5fcnJfcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOwogICBpZiAodGNwX2Nvbm5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB0Y3BfY29ubl9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfY29ubl9ycjogdGVzdCBjb21wbGV0ZSwgc2VuZGluZyByZXN1bHRzLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiB9CiAMCiAKQEAgLTkwNDUsNTAgKzk4ODMsNTAgQEAKICAvKiBpdCB3aWxsIGFsc28gbG9vayAoY2FuIGxvb2spIG11Y2ggbGlrZSB0aGUgY29tbXVuaWNhdGlvbiBwYXR0ZXJuICovCiAgLyogb2YgaHR0cCBmb3Igd3d3IGFjY2Vzcy4gKi8KIAotaW50IAoraW50CiBzZW5kX3RjcF90cmFuX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgXG4iOwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICAgICAgJSUgICAgICB1cy9UciAgIHVzL1RyXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAlLTZkICUtNi4yZiAgJS02LjJmICAgJS02LjJmICUtNi4yZiAlLTYuM2YgICUtNi4zZlxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcblwKIEFsaWdubWVudCAgICAgIE9mZnNldFxuXAogTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZVxuXAogU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3ZcblwKICU1ZCAgJTVkICAgJTVkICAlNWRcbiI7Ci0gIAotICAKKworCiAgIGludCAJCQlvbmUgPSAxOwogICBpbnQJCQl0aW1lZF9vdXQgPSAwOwogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKLSAgCisKICAgaW50CWxlbjsKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwpAQCAtOTEwMCwxMyArOTkzOCwxMyBAQAogICBpbnQJc29ja19vcHRfbGVuID0gc2l6ZW9mKGludCk7CiAgIGludAlyc3BfYnl0ZXNfbGVmdDsKICAgaW50CXJzcF9ieXRlc19yZWN2ZDsKLSAgCisKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKICAgZmxvYXQJcmVtb3RlX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUJdGhydXB1dDsKLSAgCisKICAgc3RydWN0CWhvc3RlbnQJICAgICAgICAqaHA7CiAgIHN0cnVjdAlzb2NrYWRkcl9pbglzZXJ2ZXI7CiAgIHN0cnVjdCAgICAgICAgc29ja2FkZHJfaW4gICAgICpteWFkZHI7CkBAIC05MTE2LDE1ICs5OTU0LDE1IEBACiAgIHN0cnVjdAl0Y3BfdHJhbl9ycl9yZXF1ZXN0X3N0cnVjdAkqdGNwX3RyYW5fcnJfcmVxdWVzdDsKICAgc3RydWN0CXRjcF90cmFuX3JyX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX3RyYW5fcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAl0Y3BfdHJhbl9ycl9yZXN1bHRzX3N0cnVjdAkqdGNwX3RyYW5fcnJfcmVzdWx0OwotICAKLSAgdGNwX3RyYW5fcnJfcmVxdWVzdCA9IAorCisgIHRjcF90cmFuX3JyX3JlcXVlc3QgPQogICAgIChzdHJ1Y3QgdGNwX3RyYW5fcnJfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF90cmFuX3JyX3Jlc3BvbnNlID0gCisgIHRjcF90cmFuX3JyX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IHRjcF90cmFuX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF90cmFuX3JyX3Jlc3VsdCA9CiAgICAgKHN0cnVjdCB0Y3BfdHJhbl9ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAotICAKKworCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwpAQCAtOTEzNSw3ICs5OTczLDcgQEAKICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIG15YWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UpKTsKICAgaWYgKG15YWRkciA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSkpOwpAQCAtOTE1OCwxMyArOTk5NiwxMyBAQAogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJUQ1AgVHJhbnNhY3Rpb25hbC9SZXF1ZXN0L1Jlc3BvbnNlIFRFU1QiLGxvY2FsX3JlcyxyZW1vdGVfcmVzKTsKICAgfQotICAKKwogICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzICovCi0gIAorCiAgIG51bW1lc3NhZ2VzCT0JMDsKICAgYnl0ZXNfeGZlcmQJPQkwLjA7CiAgIHRpbWVzX3VwIAk9IAkwOwotICAKKwogICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVycyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQgKi8KICAgaWYgKHNlbmRfd2lkdGggPT0gMCkgc2VuZF93aWR0aCA9IDE7CiAgIGlmIChyZWN2X3dpZHRoID09IDApIHJlY3Zfd2lkdGggPSAxOwpAQCAtOTE4MywxOCArMTAwMjEsMTggQEAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwic2VuZF90Y3BfdHJhbl9ycjogc2VuZF9zb2NrZXQgb2J0YWluZWQuLi5cbiIpOwogICB9Ci0gIAorCiAgIC8qIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgY3B1IHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cywgd2UgbXVzdCAqLwogICAvKiBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlIHRlc3RzICovCiAgIC8qIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuICovCiAgIC8qIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlICovCiAgIC8qIG5vdGhpbmcgdG8gZG8uIElmIGxvY2FsX2NwdV9yYXRlIGlzIHplcm8sIHRoZW4gd2Ugd2lsbCBnbyB0aHJvdWdoICovCiAgIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiovCi0gIAorCiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICBsb2NhbF9jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUobG9jYWxfY3B1X3JhdGUpOwogICB9Ci0gIAorCiAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZSBzb2NrZXQgKi8KICAgLyogcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZSByZWFzb24gZm9yICovCiAgIC8qIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkICovCkBAIC05MjAyLDcgKzEwMDQwLDcgQEAKICAgLyogd2lsbCBpbmRpY2F0ZSB0byB0aGUgcmVtb3RlIHRoYXQgbm8gY2hhbmdlcyBiZXlvbmQgdGhlIHN5c3RlbSdzICovCiAgIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICovCiAgIC8qIGRlZmF1bHQgdG8gOCwgd2hpY2ggd2lsbCBiZSBubyBhbGlnbm1lbnQgYWx0ZXJhdGlvbnMuICovCi0gIAorCiAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQkgICAgICAgID0JRE9fVENQX1RSUjsKICAgdGNwX3RyYW5fcnJfcmVxdWVzdC0+cmVjdl9idWZfc2l6ZQk9CXJzcl9zaXplX3JlcTsKICAgdGNwX3RyYW5fcnJfcmVxdWVzdC0+c2VuZF9idWZfc2l6ZQk9CXJzc19zaXplX3JlcTsKQEAgLTkyMjksOSArMTAwNjcsOSBAQAogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF90Y3BfdHJhbl9ycjogcmVxdWVzdGluZyBUQ1BfVFJSIHRlc3RcbiIpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVxdWVzdCgpOwotICAKKwogICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50IAkqLwogICAvKiBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjayBpbnRvIAkqLwogICAvKiB0aGUgdmFyaWFibGVzIGhlcmUgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGlmIGRlc2lyZWQuICBUaGUJKi8KQEAgLTkyNDEsOSArMTAwNzksOSBAQAogICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodAkqLwogICAvKiBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcwkqLwogICAvKiBiZWluZyBzZW50IGZvciB0aGUgVENQIHRlc3RzLgkJCQkJKi8KLSAgCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgcnNyX3NpemUJPQl0Y3BfdHJhbl9ycl9yZXNwb25zZS0+cmVjdl9idWZfc2l6ZTsKICAgICByc3Nfc2l6ZQk9CXRjcF90cmFuX3JyX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplOwpAQCAtOTI3NCw3ICsxMDExMiw3IEBACiAgIC8qIHNhbWUsIHRoZW4ganVzdCBzZXQgdG8gX21pbiAqLwogICBpZiAoY2xpZW50X3BvcnRfbWF4IC0gY2xpZW50X3BvcnRfbWluKSB7CiAgICAgc3JhbmQoZ2V0cGlkKCkpOwotICAgIG15cG9ydCA9IGNsaWVudF9wb3J0X21pbiArIAorICAgIG15cG9ydCA9IGNsaWVudF9wb3J0X21pbiArCiAgICAgICAocmFuZCgpICUgKGNsaWVudF9wb3J0X21heCAtIGNsaWVudF9wb3J0X21pbikpOwogICB9CiAgIGVsc2UgewpAQCAtOTI4NCwxMCArMTAxMjIsMTAgQEAKICAgLyogdGhlcmUgd2lsbCBiZSBhICsrIGJlZm9yZSB0aGUgZmlyc3QgY2FsbCB0byBiaW5kLCBzbyBzdWJ0cmFjdCBvbmUgKi8KICAgbXlwb3J0LS07CiAgIG15YWRkci0+c2luX3BvcnQgPSBodG9ucygodW5zaWduZWQgc2hvcnQpbXlwb3J0KTsKLSAgCisKICAgLyogU2V0LXVwIHRoZSB0ZXN0IGVuZCBjb25kaXRpb25zLiBGb3IgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHRoZXkgKi8KICAgLyogY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLwotICAKKwogICBpZiAodGVzdF90aW1lKSB7CiAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgIHRpbWVzX3VwID0gMDsKQEAgLTkyOTksMTMgKzEwMTM3LDEzIEBACiAgICAgdHJhbnNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICB0aW1lc191cCA9IDE7CiAgIH0KLSAgCisKICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAvKiB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCi0gIAorCiAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwotICAKKwogICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzICovCiAgIC8qIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiAqLwogICAvKiBXaGVuIHRoZSB0ZXN0IGlzIGNvbnRyb2xsZWQgYnkgYnl0ZSBjb3VudCwgdGhlIHRpbWUgdGVzdCB3aWxsICovCkBAIC05MzMxLDcgKzEwMTY5LDcgQEAKICAgICAvKiBhbGwgZGVwZW5kcyBvbiAicmVhbGl0eSBvZiBwcm9ncmFtbWluZy4iIGtlZXBpbmcgaXQgdGhpcyB3YXkgaXMgKi8KICAgICAvKiBhIGJpdCBtb3JlIGNvbnNlcnZhdGl2ZSBJIGltYWdpbmUgLSByYWogMy85NSAqLwogICAgIHNlbmRfc29ja2V0ID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfdGNwX3RyYW5fcnI6IHRjcCBzdHJlYW0gZGF0YSBzb2NrZXQiKTsKICAgICAgIGV4aXQoMSk7CkBAIC05NDA5LDcgKzEwMjQ3LDcgQEAKICAgICBpZigobGVuPXNlbmR0byhzZW5kX3NvY2tldCwKIAkJICAgc2VuZF9yaW5nLT5idWZmZXJfcHRyLAogCQkgICByZXFfc2l6ZSwKLQkJICAgTVNHX0VPRiwgCisJCSAgIE1TR19FT0YsCiAJCSAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLAogCQkgICBzaXplb2Yoc2VydmVyKSkpICE9IHJlcV9zaXplKSB7CiAgICAgICBpZiAoU09DS0VUX0VJTlRSKGxlbikpCkBAIC05NDQzLDcgKzEwMjgxLDcgQEAKICAgICAgIH0KICAgICAgIHJzcF9ieXRlc19sZWZ0IC09IHJzcF9ieXRlc19yZWN2ZDsKICAgICAgIHRlbXBfbWVzc2FnZV9wdHIgICs9IHJzcF9ieXRlc19yZWN2ZDsKLSAgICB9CQorICAgIH0KICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7CiAKICAgICBpZiAodGltZWRfb3V0KSB7CkBAIC05NDYxLDExICsxMDI5OSwxMSBAQAogICAgIH0KICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogCi0gICAgbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCisgICAgbnVtbWVzc2FnZXMrKzsKICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcgPiAzKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgICJUcmFuc2FjdGlvbiAlZCBjb21wbGV0ZWQgb24gbG9jYWwgcG9ydCAlZFxuIiwKQEAgLTk0NzYsMTcgKzEwMzE0LDE3IEBACiAKIAogICB9Ci0gIAorCiAgIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LCBhbmQgKi8KICAgLyogd2lsbCBhbHNvIHN0b3JlLWF3YXkgdGhlIG5lY2Vzc2FyaWVzIGZvciBjcHUgdXRpbGl6YXRpb24gKi8KIAogICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgbWVhc3VyZWQ/ICovCiAgIC8qIGhvdyBsb25nIGRpZCB3ZSByZWFsbHkgcnVuPyAqLwotICAKKwogICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgLyogY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQgKi8KICAgLyogd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLwotICAKKwogICByZWN2X3Jlc3BvbnNlKCk7CiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCkBAIC05NTAxLDcgKzEwMzM5LDcgQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciB0aHJ1cHV0IHdhcyBmb3IgdGhlIHRlc3QuIEluIHRoZSBmdXR1cmUsICovCiAgIC8qIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dCBtZWFzdXJlZCBieSAqLwogICAvKiB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEgVENQIHN0cmVhbSB0ZXN0LCAqLwpAQCAtOTUxMiwxMSArMTAzNTAsMTEgQEAKICAgLyogc2VuZF9zaXplLCBzbyB3ZSByZWFsbHkgZGlkbid0IHNlbmQgd2hhdCBoZSBhc2tlZCBmb3IgOy0pIFdlIHVzZSAqLwogICAvKiBLYnl0ZXMvcyBhcyB0aGUgdW5pdHMgb2YgdGhydXB1dCBmb3IgYSBUQ1Agc3RyZWFtIHRlc3QsIHdoZXJlIEsgPSAqLwogICAvKiAxMDI0LiBBIGZ1dHVyZSBlbmhhbmNlbWVudCAqbWlnaHQqIGJlIHRvIGNob29zZSBmcm9tIGEgY291cGxlIG9mICovCi0gIC8qIHVuaXQgc2VsZWN0aW9ucy4gKi8gCi0gIAorICAvKiB1bml0IHNlbGVjdGlvbnMuICovCisKICAgYnl0ZXNfeGZlcmQJPSAocmVxX3NpemUgKiBudW1tZXNzYWdlcykgKyAocnNwX3NpemUgKiBudW1tZXNzYWdlcyk7CiAgIHRocnVwdXQJPSBjYWxjX3RocnVwdXQoYnl0ZXNfeGZlcmQpOwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgKi8KQEAgLTk1NDIsNyArMTAzODAsNyBAQAogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAoZmxvYXQpIC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAgIGlmIChyZW1vdGVfY3B1X3JhdGUgPT0gMC4wKSB7CiAJZnByaW50Zih3aGVyZSwiREFOR0VSICBEQU5HRVIgIERBTkdFUiAgICBEQU5HRVIgIERBTkdFUiAgREFOR0VSICAgIERBTkdFUiFcbiIpOwpAQCAtOTU2Miw3ICsxMDQwMCw3IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IChmbG9hdCkgLTEuMDsKICAgICB9Ci0gICAgCisKICAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyICovCiAgICAgLyogaGFzIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSAqLwogICAgIC8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgKi8KQEAgLTk1NzEsNyArMTA0MDksNyBAQAogICAgIC8qIG9mIGdyZWF0ZXIgdGhhbiAxLCB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgKi8KICAgICAvKiBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0ICovCiAgICAgLyogbm90IGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtOTU5NCw3ICsxMDQzMiw3IEBACiAJCWxvY2FsX2NwdV9tZXRob2QsCiAJCXJlbW90ZV9jcHVfbWV0aG9kKTsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIGNwdV9mbXRfMV9saW5lXzEsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLwogCSAgICAgIGxzc19zaXplLAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCkBAIC05NjQwLDIzICsxMDQ3OCwyMyBAQAogCSAgICAgIHRwdXRfZm10XzFfbGluZV8yLAogCSAgICAgIHJzc19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KIAkgICAgICByc3Jfc2l6ZSk7Ci0gICAgICAKKwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFRDUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICBrc2lua19mbXQsCiAJICAgIGxvY2FsX3NlbmRfYWxpZ24sCkBAIC05NjcxLDE0ICsxMDUwOSwxNCBAQAogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKICAgfQotICAKKwogfQogCiAMCi1pbnQgCitpbnQKIHJlY3ZfdGNwX3RyYW5fcnIoKQogewotICAKKwogICBjaGFyICAqbWVzc2FnZTsKICAgc3RydWN0CXNvY2thZGRyX2luICAgICAgICBteWFkZHJfaW4sCiAgIHBlZXJhZGRyX2luOwpAQCAtOTY5NiwyMyArMTA1MzQsMjMgQEAKICAgaW50CXJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nOwogICBpbnQJdGltZWRfb3V0ID0gMDsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwotICAKKwogICBzdHJ1Y3QJdGNwX3RyYW5fcnJfcmVxdWVzdF9zdHJ1Y3QJKnRjcF90cmFuX3JyX3JlcXVlc3Q7CiAgIHN0cnVjdAl0Y3BfdHJhbl9ycl9yZXNwb25zZV9zdHJ1Y3QJKnRjcF90cmFuX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX3RyYW5fcnJfcmVzdWx0c19zdHJ1Y3QJKnRjcF90cmFuX3JyX3Jlc3VsdHM7Ci0gIAotICB0Y3BfdHJhbl9ycl9yZXF1ZXN0ID0gCisKKyAgdGNwX3RyYW5fcnJfcmVxdWVzdCA9CiAgICAgKHN0cnVjdCB0Y3BfdHJhbl9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgdGNwX3RyYW5fcnJfcmVzcG9uc2UgPSAKKyAgdGNwX3RyYW5fcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX3RyYW5fcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgdGNwX3RyYW5fcnJfcmVzdWx0cyA9IAorICB0Y3BfdHJhbl9ycl9yZXN1bHRzID0KICAgICAoc3RydWN0IHRjcF90cmFuX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X3RjcF90cmFuX3JyOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTk3MjAsMTkgKzEwNTU4LDE5IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfdHJhbl9ycjogc2V0dGluZyB0aGUgcmVzcG9uc2UgdHlwZS4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IFRDUF9UUlJfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX3RyYW5fcnI6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTk3NDQsMTAgKzEwNTgyLDEwIEBACiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIERBVEFCVUZGRVJMRU4pOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogV2Ugbm93IGFsdGVyIHRoZSBtZXNzYWdlX3B0ciB2YXJpYWJsZXMgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KICAgLyogYWxpZ25tZW50cyB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldHMuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3RjcF90cmFuX3JyOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLApAQCAtOTc2MSwyNyArMTA1OTksMjcgQEAKICAgfQogCiAgIHJlY3ZfbWVzc2FnZV9wdHIgPSBBTElHTl9CVUZGRVIobWVzc2FnZSwgdGNwX3RyYW5fcnJfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsIHRjcF90cmFuX3JyX3JlcXVlc3QtPnJlY3Zfb2Zmc2V0KTsKLSAgCisKICAgc2VuZF9tZXNzYWdlX3B0ciA9IEFMSUdOX0JVRkZFUihtZXNzYWdlLCB0Y3BfdHJhbl9ycl9yZXF1ZXN0LT5zZW5kX2FsaWdubWVudCwgdGNwX3RyYW5fcnJfcmVxdWVzdC0+c2VuZF9vZmZzZXQpOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF90cmFuX3JyOiByZWNlaXZlIGFsaWdubWVudCBhbmQgb2Zmc2V0IHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlICovCiAgIC8qIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzICovCiAgIC8qIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywgKi8KICAgLyogSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLwotICAKKwogICBiemVybygoY2hhciAqKSZteWFkZHJfaW4sCiAJc2l6ZW9mKG15YWRkcl9pbikpOwogICBteWFkZHJfaW4uc2luX2ZhbWlseSAgICAgID0gQUZfSU5FVDsKICAgbXlhZGRyX2luLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgIG15YWRkcl9pbi5zaW5fcG9ydCAgICAgICAgPSBodG9ucygodW5zaWduZWQgc2hvcnQpdGNwX3RyYW5fcnJfcmVxdWVzdC0+cG9ydCk7Ci0gIAorCiAgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX3RyYW5fcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtOTc5Niw3ICsxMDYzNCw3IEBACiAgIGxvY19ub2RlbGF5ID0gdGNwX3RyYW5fcnJfcmVxdWVzdC0+bm9fZGVsYXk7CiAgIGxvY19yY3Zhdm9pZCA9IHRjcF90cmFuX3JyX3JlcXVlc3QtPnNvX3JjdmF2b2lkOwogICBsb2Nfc25kYXZvaWQgPSB0Y3BfdHJhbl9ycl9yZXF1ZXN0LT5zb19zbmRhdm9pZDsKLSAgCisKICAgc2V0X2hvc3RuYW1lX2FuZF9wb3J0KGxvY2FsX25hbWUsCiAJCQlwb3J0X2J1ZmZlciwKIAkJCW5mX3RvX2FmKHRjcF90cmFuX3JyX3JlcXVlc3QtPmlwZmFtaWx5KSwKQEAgLTk4MTEsNyArMTA2NDksNyBAQAogCQkJCTApOwogCiAgIHNfbGlzdGVuID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgIGlmIChzX2xpc3RlbiA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgc2VuZF9yZXNwb25zZSgpOwpAQCAtOTgzNSw3ICsxMDY3Myw3IEBACiAgIC8qIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsICovCiAgIC8qIG11bHRpLWNvbm5lY3Rpb24gc2l0dWF0aW9uLCBidXQgZm9yIG5vdywgd2UnbGwgaWdub3JlIHRoZSBpc3N1ZSAqLwogICAvKiBhbmQgY29uY2VudHJhdGUgb24gc2luZ2xlIGNvbm5lY3Rpb24gdGVzdGluZy4gKi8KLSAgCisKICAgaWYgKGJpbmQoc19saXN0ZW4sCiAJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfaW4sCiAJICAgc2l6ZW9mKG15YWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewpAQCAtOTg1Myw3ICsxMDY5MSw3IEBACiAgIC8qIHRoaXMgbWlnaHQgd2FudCB0byBiZSBhIHBhcm0gdG8gdGhlIHRlc3QgcmFqIDMvOTUgKi8KICAgaWYgKHNldHNvY2tvcHQoc19saXN0ZW4sCiAJCSBJUFBST1RPX1RDUCwKLQkJIFRDUF9OT1BVU0gsIAorCQkgVENQX05PUFVTSCwKIAkJIChjb25zdCBjaGFyICopJk5vUHVzaCwKIAkJIHNpemVvZihpbnQpKSA9PSBTT0NLRVRfRVJST1IpIHsKICAgICBmcHJpbnRmKHdoZXJlLApAQCAtOTg3Niw3ICsxMDcxNCw3IEBACiAgICAgfQogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogbm93IGdldCB0aGUgcG9ydCBudW1iZXIgYXNzaWduZWQgYnkgdGhlIHN5c3RlbSAgKi8KICAgYWRkcmxlbiA9IHNpemVvZihteWFkZHJfaW4pOwogICBpZiAoZ2V0c29ja25hbWUoc19saXN0ZW4sCkBAIC05ODkxLDExICsxMDcyOSwxMSBAQAogICAgIH0KICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIE5vdyBteWFkZHJfaW4gY29udGFpbnMgdGhlIHBvcnQgYW5kIHRoZSBpbnRlcm5ldCBhZGRyZXNzIHRoaXMgaXMgKi8KICAgLyogcmV0dXJuZWQgdG8gdGhlIHNlbmRlciBhbHNvIGltcGxpY2l0bHkgdGVsbGluZyB0aGUgc2VuZGVyIHRoYXQgdGhlICovCiAgIC8qIHNvY2tldCBidWZmZXIgc2l6aW5nIGhhcyBiZWVuIGRvbmUuICovCi0gIAorCiAgIHRjcF90cmFuX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gKGludCkgbnRvaHMobXlhZGRyX2luLnNpbl9wb3J0KTsKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwidGVsbGluZyB0aGUgcmVtb3RlIHRvIGNhbGwgbWUgYXQgJWRcbiIsCkBAIC05OTAzLDIyICsxMDc0MSwyMiBAQAogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAwLjAgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgdGNwX3RyYW5fcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICBpZiAodGNwX3RyYW5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB0Y3BfdHJhbl9ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwotICAgIHRjcF90cmFuX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHRjcF90cmFuX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9CiAgICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1KHRjcF90cmFuX3JyX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQotICAKIAotICAKKworCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgdGNwX3RyYW5fcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKQEAgLTk5MjgsMTcgKzEwNzY2LDE3IEBACiAgIHRjcF90cmFuX3JyX3Jlc3BvbnNlLT5zb19zbmRhdm9pZCA9IGxvY19zbmRhdm9pZDsKIAogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiAgIGFkZHJsZW4gPSBzaXplb2YocGVlcmFkZHJfaW4pOwotICAKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydCh0Y3BfdHJhbl9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHNodXRkb3duLCB3aGljaCB3aWxsICovCiAgIC8qIHJldHVybiBhIGxlbmd0aCBvZiB6ZXJvICAgKi8KLSAgCisKICAgaWYgKHRjcF90cmFuX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoID4gMCkgewogICAgIHRpbWVzX3VwID0gMDsKICAgICB0cmFuc19yZW1haW5pbmcgPSAwOwpAQCAtOTk0OCw3ICsxMDc4Niw3IEBACiAgICAgdGltZXNfdXAgPSAxOwogICAgIHRyYW5zX3JlbWFpbmluZyA9IHRjcF90cmFuX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoICogLTE7CiAgIH0KLSAgCisKICAgdHJhbnNfcmVjZWl2ZWQgPSAwOwogCiAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKQEAgLTk5NjUsMTUgKzEwODAzLDE1IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF90cmFuX3JyOiBhY2NlcHQ6IGVycm5vID0gJWRcbiIsZXJybm8pOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgIGNsb3NlKHNfbGlzdGVuKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX3RyYW5fcnI6IGFjY2VwdGVkIGRhdGEgY29ubmVjdGlvbi5cbiIpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9Ci0gIAorCiAjaWZkZWYgV0lOMzIKICAgLyogdGhpcyBpcyB1c2VkIHNvIHRoZSB0aW1lciB0aHJlYWQgY2FuIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20gKi8KICAgLyogdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QgKi8KQEAgLTk5OTIsMTAgKzEwODMwLDEwIEBACiAgIGtsdWRnZV9zb2NrZXRfb3B0aW9ucyhzX2RhdGEpOwogCiAjZW5kaWYgLyogS0xVREdFX1NPQ0tFVF9PUFRJT05TICovCi0gIAorCiAgICAgdGVtcF9tZXNzYWdlX3B0cgk9IHJlY3ZfbWVzc2FnZV9wdHI7CiAgICAgcmVxdWVzdF9ieXRlc19yZW1haW5pbmcJPSB0Y3BfdHJhbl9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIG90aGVyIHNpZGUuIHdlIGNhbiBqdXN0IHJlY2VpdmUgKi8KICAgICAvKiB1bnRpbCB3ZSBnZXQgemVybyBieXRlcywgYnV0IHRoYXQgd291bGQgYmUgYSBzbGlnaHQgc3RydWN0dXJlICovCiAgICAgLyogY2hhbmdlIGluIHRoZSBjb2RlLCB3aXRoIG1pbmltYWwgcGVyZm9tYW5jZSBlZmZlY3RzLiBJZiAqLwpAQCAtMTAwMjIsMTUgKzEwODYwLDE1IEBACiAJdGVtcF9tZXNzYWdlX3B0ciAgKz0gcmVxdWVzdF9ieXRlc19yZWN2ZDsKICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBpZiAodGltZWRfb3V0KSB7CiAgICAgICAvKiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBiYXNlZCBvbiB0aW1lIC0gbGV0cyAqLwogICAgICAgLyogYmFpbCBvdXQgb2YgaGVyZSBub3cuLi4gKi8KICAgICAgIGZwcmludGYod2hlcmUsInlvNVxuIik7Ci0gICAgICBmZmx1c2god2hlcmUpOwkJCQkJCQorICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKwogICAgIC8qIE5vdywgc2VuZCB0aGUgcmVzcG9uc2UgdG8gdGhlIHJlbW90ZSB3ZSBjYW4gdXNlIHNlbmR0byBoZXJlIHRvICovCiAgICAgLyogaGVscCByZW1pbmQgcGVvcGxlIHRoYXQgdGhpcyBpcyBhbiByZmMgMTY0NCBzdHlsZSBvZiB0ZXN0ICovCiAgICAgaWYoKGJ5dGVzX3NlbnQ9c2VuZHRvKHNfZGF0YSwKQEAgLTEwMDQzLDE5ICsxMDg4MSwxOSBAQAogCS8qIHRoZSB0ZXN0IHRpbWVyIGhhcyBwb3BwZWQgKi8KIAl0aW1lZF9vdXQgPSAxOwogCWZwcmludGYod2hlcmUsInlvNlxuIik7Ci0JZmZsdXNoKHdoZXJlKTsJCQkJCQkKKwlmZmx1c2god2hlcmUpOwogCWJyZWFrOwogICAgICAgfQogICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSA5OTsKICAgICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgdHJhbnNfcmVjZWl2ZWQrKzsKICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgInJlY3ZfdGNwX3RyYW5fcnI6IFRyYW5zYWN0aW9uICVkIGNvbXBsZXRlXG4iLApAQCAtMTAwNjksMTMgKzEwOTA3LDEzIEBACiAgICAgY2xvc2Uoc19kYXRhKTsKIAogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gdGltZW91dCBvciB0cmFuc2FjdGlvbiBjb3VudCBiZWluZyAqLwogICAvKiByZWFjaGVkICovCi0gIAorCiAgIGNwdV9zdG9wKHRjcF90cmFuX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICBpZiAodGltZWRfb3V0KSB7CiAgICAgLyogd2UgZW5kZWQgdGhlIHRlc3QgYnkgdGltZSwgd2hpY2ggd2FzIGF0IGxlYXN0IDIgc2Vjb25kcyAqLwogICAgIC8qIGxvbmdlciB0aGFuIHdlIHdhbnRlZCB0byBydW4uIHNvLCB3ZSB3YW50IHRvIHN1YnRyYWN0ICovCkBAIC0xMDA4MywzMSArMTA5MjEsMzEgQEAKICAgICBlbGFwc2VkX3RpbWUgLT0gUEFEX1RJTUU7CiAgIH0KICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfdGNwX3RyYW5fcnI6IGdvdCAlZCB0cmFuc2FjdGlvbnNcbiIsCiAJICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICB0Y3BfdHJhbl9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZAk9ICh0cmFuc19yZWNlaXZlZCAqIAotCQkJCQkgICAodGNwX3RyYW5fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsgCisKKyAgdGNwX3RyYW5fcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKgorCQkJCQkgICAodGNwX3RyYW5fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKIAkJCQkJICAgIHRjcF90cmFuX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUpKTsKICAgdGNwX3RyYW5fcnJfcmVzdWx0cy0+dHJhbnNfcmVjZWl2ZWQJPSB0cmFuc19yZWNlaXZlZDsKICAgdGNwX3RyYW5fcnJfcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOwogICBpZiAodGNwX3RyYW5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB0Y3BfdHJhbl9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfdHJhbl9ycjogdGVzdCBjb21wbGV0ZSwgc2VuZGluZyByZXN1bHRzLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiB9CiAjZW5kaWYgLyogRE9fMTY0NCAqLwogDApAQCAtMTAxMTgsNDYgKzEwOTU2LDQ2IEBACiB2b2lkCiBzZW5kX3RjcF9uYnJyKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgXG4iOwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICVjICAgICUlICVjICAgIHVzL1RyICAgdXMvVHJcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2YgJWNcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICUtNmQgJS02LjJmICAlLTYuMmYgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0XG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCiBTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdlxuXAogJTVkICAlNWQgICAlNWQgICU1ZFxuIjsKLSAgCi0gIAorCisKICAgaW50CQkJdGltZWRfb3V0ID0gMDsKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIGludAlsZW47CiAgIGNoYXIJKnRlbXBfbWVzc2FnZV9wdHI7CiAgIGludAludW1tZXNzYWdlczsKQEAgLTEwMTY3LDIwICsxMTAwNSwyMCBAQAogCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKLSAgCisKICAgaW50CXJzcF9ieXRlc19sZWZ0OwogICBpbnQJcnNwX2J5dGVzX3JlY3ZkOwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAgIGRvdWJsZQl0aHJ1cHV0OwotICAKKwogICBzdHJ1Y3QJaG9zdGVudAkgICAgICAgICpocDsKICAgc3RydWN0CXNvY2thZGRyX3N0b3JhZ2UJc2VydmVyOwogICB1bnNpZ25lZCAgICAgIGludCAgICAgICAgICAgICBhZGRyOwotICAKKwogICBzdHJ1Y3QJdGNwX3JyX3JlcXVlc3Rfc3RydWN0CSp0Y3BfcnJfcmVxdWVzdDsKICAgc3RydWN0CXRjcF9ycl9yZXNwb25zZV9zdHJ1Y3QJKnRjcF9ycl9yZXNwb25zZTsKICAgc3RydWN0CXRjcF9ycl9yZXN1bHRzX3N0cnVjdAkqdGNwX3JyX3Jlc3VsdDsKQEAgLTEwMTg4LDEzICsxMTAyNiwxMyBAQAogICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwogCi0gIHRjcF9ycl9yZXF1ZXN0ID0gCisgIHRjcF9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHRjcF9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgdGNwX3JyX3Jlc3BvbnNlPQogICAgIChzdHJ1Y3QgdGNwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9ycl9yZXN1bHQJPQogICAgIChzdHJ1Y3QgdGNwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC0xMDIwOCw3ICsxMTA0Niw3IEBACiAKICAgYnplcm8oKGNoYXIgKikmc2VydmVyLAogCXNpemVvZihzZXJ2ZXIpKTsKLSAgCisKICAgY29tcGxldGVfYWRkcmluZm9zKCZyZW1vdGVfcmVzLAogCQkgICAgICZsb2NhbF9yZXMsCiAJCSAgICAgcmVtb3RlX2hvc3QsCkBAIC0xMDIxOSw5ICsxMTA1Nyw5IEBACiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICBwcmludF90b3BfdGVzdF9oZWFkZXIoIlRDUCBOb24tQmxvY2tpbmcgUkVRVUVTVC9SRVNQT05TRSBURVNUIixsb2NhbF9yZXMscmVtb3RlX3Jlcyk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBzZW5kX3JpbmcgPSBOVUxMOwogICByZWN2X3JpbmcgPSBOVUxMOwogICBjb25maWRlbmNlX2l0ZXJhdGlvbiA9IDE7CkBAIC0xMDI1Miw3ICsxMTA5MCw3IEBACiAKICAgICBpZiAoc2VuZF93aWR0aCA9PSAwKSBzZW5kX3dpZHRoID0gMTsKICAgICBpZiAocmVjdl93aWR0aCA9PSAwKSByZWN2X3dpZHRoID0gMTsKLSAgCisKICAgICBpZiAoc2VuZF9yaW5nID09IE5VTEwpIHsKICAgICAgIHNlbmRfcmluZyA9IGFsbG9jYXRlX2J1ZmZlcl9yaW5nKHNlbmRfd2lkdGgsCiAJCQkJICAgICAgIHJlcV9zaXplLApAQCAtMTAyNjYsMzAgKzExMTA0LDMwIEBACiAJCQkJICAgICAgIGxvY2FsX3JlY3ZfYWxpZ24sCiAJCQkJICAgICAgIGxvY2FsX3JlY3Zfb2Zmc2V0KTsKICAgICB9Ci0gICAgCisKICAgICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHNlbmRfc29ja2V0ID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF90Y3BfbmJycjogdGNwIHN0cmVhbSBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfdGNwX25icnI6IHNlbmRfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgICB9Ci0gIAorCiAgICAgLyogSWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCBjcHUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLCB3ZSBtdXN0ICovCiAgICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAgIC8qIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuICovCiAgICAgLyogY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUgKi8KICAgICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAgIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiovCi0gICAgCisKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgICBsb2NhbF9jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUobG9jYWxfY3B1X3JhdGUpOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZSBzb2NrZXQgKi8KICAgICAvKiBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlIHJlYXNvbiBmb3IgKi8KICAgICAvKiBhbGwgdGhlIHZhbHVlcyBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCAqLwpAQCAtMTAyOTcsNyArMTExMzUsNyBAQAogICAgIC8qIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyAqLwogICAgIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICovCiAgICAgLyogZGVmYXVsdCB0byA4LCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgICAKKwogICAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQk9CURPX1RDUF9OQlJSOwogICAgIHRjcF9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemVfcmVxOwogICAgIHRjcF9ycl9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemVfcmVxOwpAQCAtMTAzMTgsMTMgKzExMTU2LDEzIEBACiAgICAgZWxzZSB7CiAgICAgICB0Y3BfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGgJPQl0ZXN0X3RyYW5zICogLTE7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnID4gMSkgewogICAgICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF90Y3BfbmJycjogcmVxdWVzdGluZyBUQ1AgcnIgdGVzdFxuIik7CiAgICAgfQotICAgIAorCiAgICAgc2VuZF9yZXF1ZXN0KCk7Ci0gICAgCisKICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50IAkqLwogICAgIC8qIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrIGludG8gKi8KICAgICAvKiB0aGUgdmFyaWFibGVzIGhlcmUgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGlmIGRlc2lyZWQuICBUaGUJKi8KQEAgLTEwMzM0LDkgKzExMTcyLDkgQEAKICAgICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodCovCiAgICAgLyogYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMJKi8KICAgICAvKiBiZWluZyBzZW50IGZvciB0aGUgVENQIHRlc3RzLgkJCQkJKi8KLSAgCisKICAgICByZWN2X3Jlc3BvbnNlKCk7Ci0gIAorCiAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgICAgaWYgKGRlYnVnKQogCWZwcmludGYod2hlcmUsInJlbW90ZSBsaXN0ZW4gZG9uZS5cbiIpOwpAQCAtMTAzNTgsMzEgKzExMTk2LDQxIEBACiAgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKkNvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIHNvY2tldCAgKi8KLSAgICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwgCisgICAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHIsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogZGF0YSBzb2NrZXQgY29ubmVjdCBmYWlsZWQiKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIC8qIG5vdyB0aGF0IHdlIGFyZSBjb25uZWN0ZWQsIG1hcmsgdGhlIHNvY2tldCBhcyBub24tYmxvY2tpbmcgKi8KICAgICBpZiAoIXNldF9ub25ibG9jayhzZW5kX3NvY2tldCkpIHsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2V0X25vbmJsb2NrIik7CiAgICAgICBleGl0KDEpOwogICAgIH0KIAorI2lmZGVmIFdJTjMyCisgIC8qIHRoaXMgaXMgdXNlZCBzbyB0aGUgdGltZXIgdGhyZWFkIGNhbiBjbG9zZSB0aGUgc29ja2V0IG91dCBmcm9tICovCisgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgIC8qIFdpbmRvd3Mtc3BlY2lmaWMgd2F5IEkgY2FuIGZpbmQgdG8gZm9yY2UgdGhlIHdpbnNvY2sgY2FsbHMgdG8gKi8KKyAgLyogcmV0dXJuIFdTQUVJTlRSIHdpdGggdGhlIHRlc3QgaXMgb3Zlci4gYW55dGhpbmcgdGhhdCB3aWxsIHJ1biBvbiAqLworICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAvKiBhbmQgc3VjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCByYWogMS85NiAqLworICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNlbmRfc29ja2V0OworI2VuZGlmIC8qIFdJTjMyICovCisKICAgICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciB0aGUgKi8KICAgICAvKiBjb25uZWN0IHdvdWxkIGhhdmUgZmFpbGVkLCBvciB0aGUgcHJldmlvdXMgcmVzcG9uc2Ugd291bGQgaGF2ZSAqLwogICAgIC8qIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlIGV4dHJhICovCiAgICAgLyogbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlIGl0ICovCiAgICAgLyogaGVyZS4gSWYgaXQgZGlkbid0LCB3ZSBtaWdodCBhcyB3ZWxsIHN0YXJ0IHB1bXBpbmcgZGF0YS4gKi8KLSAgICAKKwogICAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LCB0aGV5ICovCiAgICAgLyogY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLwotICAgIAorCiAgICAgaWYgKHRlc3RfdGltZSkgewogICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgICAgdGltZXNfdXAgPSAwOwpAQCAtMTAzOTQsMTcgKzExMjQyLDE3IEBACiAgICAgICB0cmFuc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgICAgdGltZXNfdXAgPSAxOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgICAKKwogICAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwogCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBJTlRFUlZBTFNfSU5JVCgpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgCisKICAgICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzICovCiAgICAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICovCiAgICAgLyogV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3Qgd2lsbCAqLwpAQCAtMTA0MTcsNyArMTEyNjUsNyBAQAogICAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKICAgICAgIC8qIHNlbmQgdGhlIHJlcXVlc3QuIHdlIGFzc3VtZSB0aGF0IGlmIHdlIHVzZSBhIGJsb2NraW5nIHNvY2tldCwgKi8KICAgICAgIC8qIHRoZSByZXF1ZXN0IHdpbGwgYmUgc2VudCBhdCBvbmUgc2hvdC4gKi8KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAJLyogdGltZXN0YW1wIGp1c3QgYmVmb3JlIG91ciBjYWxsIHRvIHNlbmQsIGFuZCB0aGVuIGFnYWluIGp1c3QgKi8KQEAgLTEwNDQzLDcgKzExMjkxLDcgQEAKIAlleGl0KDEpOwogICAgICAgfQogICAgICAgc2VuZF9yaW5nID0gc2VuZF9yaW5nLT5uZXh0OwotICAgICAgCisKICAgICAgIC8qIHJlY2VpdmUgdGhlIHJlc3BvbnNlLiBzaW5jZSB3ZSBhcmUgdXNpbmcgbm9uLWJsb2NraW5nIEkvTywgd2UgKi8KICAgICAgIC8qIHdpbGwgInNwaW4iIG9uIHRoZSByZWN2cyAqLwogICAgICAgcnNwX2J5dGVzX2xlZnQgPSByc3Bfc2l6ZTsKQEAgLTEwNDcyLDMwICsxMTMyMCwzMCBAQAogCX0KIAlyc3BfYnl0ZXNfbGVmdCAtPSByc3BfYnl0ZXNfcmVjdmQ7CiAJdGVtcF9tZXNzYWdlX3B0ciAgKz0gcnNwX2J5dGVzX3JlY3ZkOwotICAgICAgfQkKKyAgICAgIH0KICAgICAgIHJlY3ZfcmluZyA9IHJlY3ZfcmluZy0+bmV4dDsKLSAgICAgIAorCiAgICAgICBpZiAodGltZWRfb3V0KSB7CiAJLyogd2UgbWF5IGhhdmUgYmVlbiBpbiBhIG5lc3RlZCB3aGlsZSBsb29wIC0gd2UgbmVlZCAqLwogCS8qIGFub3RoZXIgY2FsbCB0byBicmVhay4gKi8KIAlicmVhazsKICAgICAgIH0KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAJSElTVF90aW1lc3RhbXAoJnRpbWVfdHdvKTsKIAlISVNUX2FkZCh0aW1lX2hpc3QsZGVsdGFfbWljcm8oJnRpbWVfb25lLCZ0aW1lX3R3bykpOwogICAgICAgfQogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMgICAgICAKKyNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgICAgSU5URVJWQUxTX1dBSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgICAgCi0gICAgICBudW1tZXNzYWdlcysrOyAgICAgICAgICAKKworICAgICAgbnVtbWVzc2FnZXMrKzsKICAgICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKIAl0cmFuc19yZW1haW5pbmctLTsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBpZiAoZGVidWcgPiAzKSB7CiAJaWYgKChudW1tZXNzYWdlcyAlIDEwMCkgPT0gMCkgewogCSAgZnByaW50Zih3aGVyZSwKQEAgLTEwNTEyLDE4ICsxMTM2MCwyNCBAQAogICAgIC8qIHRoZXkgd2VyZSBiZWluZyBjb250cm9sbGVkIGJ5IHRpbWUuIFNvLCBJIGhhdmUgcmVwbGFjZWQgdGhpcyAqLwogICAgIC8qIHNodXRkb3duIGNhbGwgd2l0aCBhIGNhbGwgdG8gY2xvc2UgdGhhdCBjYW4gYmUgZm91bmQgbGF0ZXIgaW4gdGhlICovCiAgICAgLyogcHJvY2VkdXJlLiAqLwotICAgIAorCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCi0gICAgCisKICAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgKi8KIAkJCQkJCS8qIG1lYXN1cmVkPyBob3cgbG9uZyAqLwogCQkJCQkJLyogZGlkIHdlIHJlYWxseSBydW4/ICovCi0gICAgCisKICAgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgICAvKiBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcgdGhpbmdzLiBJZiBpdCAqLwogICAgIC8qIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KLSAgICAKKworI2lmIGRlZmluZWQoV0FOVF9JTlRFUlZBTFMpCisjaWZkZWYgV0lOMzIKKyAgICBzdG9wX2l0aW1lcigpOworI2VuZGlmCisjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgICBpZiAoZGVidWcpCkBAIC0xMDUzNiwxNSArMTEzOTAsMTUgQEAKIAkgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgICBwZXJyb3IoIiIpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiAqLwotICAKKwogICAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICAgIHRocnVwdXQJPSBudW1tZXNzYWdlcy9lbGFwc2VkX3RpbWU7Ci0gIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCiAgICAgICAvKiB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSAqLwpAQCAtMTA1NjUsNyArMTE0MTksNyBAQAogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IChmbG9hdCkgLTEuMDsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IChmbG9hdCkgLTEuMDsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgewogCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSB0Y3BfcnJfcmVzdWx0LT5jcHVfdXRpbDsKIAkvKiBzaW5jZSBjYWxjX3NlcnZpY2UgZGVtYW5kIGlzIGRvaW5nIG1zL0t1bml0IHdlIHdpbGwgKi8KQEAgLTEwNTgwLDcgKzExNDM0LDcgQEAKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAoZmxvYXQpIC0xLjA7CiAgICAgICB9Ci0gICAgICAKKwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIC8qIHdlIHdlcmUgbm90IG1lYXN1cmluZyBjcHUsIGZvciB0aGUgY29uZmlkZW5jZSBzdHVmZiwgd2UgKi8KQEAgLTEwNTk0LDcgKzExNDQ4LDcgQEAKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4gKi8KICAgICAvKiBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZSAqLwogICAgIC8qIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHRocnVwdXQsCkBAIC0xMDYwMiw4ICsxMTQ1Niw4IEBACiAJCQkgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKIAkJCSBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJCSByZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAgIAotICAgIAorCisKICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbisrOwogCiAgICAgLyogd2UgYXJlIG5vdyBkb25lIHdpdGggdGhlIHNvY2tldCwgc28gY2xvc2UgaXQgKi8KQEAgLTEwNjM3LDcgKzExNDkxLDcgQEAKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKGNwdV9tZXRob2QpOwogICAgIHJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QodGNwX3JyX3Jlc3VsdC0+Y3B1X21ldGhvZCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKQEAgLTEwNjgzLDcgKzExNTM3LDcgQEAKICAgfQogICBlbHNlIHsKICAgICAvKiBUaGUgdGVzdGVyIGRpZCBub3Qgd2lzaCB0byBtZWFzdXJlIHNlcnZpY2UgZGVtYW5kLiAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBmcHJpbnRmKHdoZXJlLApAQCAtMTA3MDgsMTcgKzExNTYyLDE3IEBACiAJICAgICAgdHB1dF9mbXRfMV9saW5lXzIsCiAJICAgICAgcnNzX3NpemUsIAkJLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLwogCSAgICAgIHJzcl9zaXplKTsKLSAgICAgIAorCiAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCisKICAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCiAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCiAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKwogICAvKiBob3cgdG8gaGFuZGxlIHRoZSB2ZXJib3NlIGluZm9ybWF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiAqLwogICAvKiBjb25maWRlbmNlIGludGVydmFscyBpcyB5ZXQgdG8gYmUgZGV0ZXJtaW5lZC4uLiByYWogMTEvOTQgKi8KICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKQEAgLTEwNzI2LDcgKzExNTgwLDcgQEAKICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCiAgICAgLyogVENQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgICAKKwogICAgIGZwcmludGYod2hlcmUsCiAJICAgIGtzaW5rX2ZtdCwKIAkgICAgbG9jYWxfc2VuZF9hbGlnbiwKQEAgLTEwNzQxLDE1ICsxMTU5NSwxNSBAQAogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKICAgfQotICAKKwogfQogDAogIC8qIHRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSByZWNlaXZlIChuZXRzZXJ2ZXIpIHNpZGUgb2YgYSBUQ1BfUlIgKi8KICAvKiB0ZXN0ICovCi12b2lkIAordm9pZAogcmVjdl90Y3BfbmJycigpCiB7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKIApAQCAtMTA3NjksMjMgKzExNjIzLDIzIEBACiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwogICBjaGFyIGxvY2FsX25hbWVbQlVGU0laXTsKICAgY2hhciBwb3J0X2J1ZmZlcltQT1JUQlVGU0laRV07Ci0gIAorCiAgIHN0cnVjdAl0Y3BfcnJfcmVxdWVzdF9zdHJ1Y3QJKnRjcF9ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJdGNwX3JyX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX3JyX3Jlc3VsdHNfc3RydWN0CSp0Y3BfcnJfcmVzdWx0czsKLSAgCi0gIHRjcF9ycl9yZXF1ZXN0ID0gCisKKyAgdGNwX3JyX3JlcXVlc3QgPQogICAgIChzdHJ1Y3QgdGNwX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICB0Y3BfcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9ycl9yZXN1bHRzID0KICAgICAoc3RydWN0IHRjcF9ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl90Y3BfbmJycjogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwogICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCiAgIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCkBAIC0xMDc5MywyNCArMTE2NDcsMjQgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9uYnJyOiBzZXR0aW5nIHRoZSByZXNwb25zZSB0eXBlLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlID0gVENQX1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9uYnJyOiB0aGUgcmVzcG9uc2UgdHlwZSBpcyBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogYWxsb2NhdGUgdGhlIHJlY3YgYW5kIHNlbmQgcmluZ3Mgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudHMgKi8KICAgLyogYW5kIG9mZnNldHMuIHJhaiA3Lzk0ICovCiAgIGlmIChkZWJ1ZykgewpAQCAtMTA4MzcsMjAgKzExNjkxLDIwIEBACiAJCQkJICAgdGNwX3JyX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50LAogCQkJCSAgIHRjcF9ycl9yZXF1ZXN0LT5yZWN2X29mZnNldCk7CiAKLSAgCisKICAgLyogTGV0J3MgY2xlYXItb3V0IG91ciBzb2NrYWRkciBmb3IgdGhlIHNha2Ugb2YgY2xlYW5saW5lcy4gVGhlbiB3ZSAqLwogICAvKiBjYW4gcHV0IGluIE9VUiB2YWx1ZXMgIS0pIEF0IHNvbWUgcG9pbnQsIHdlIG1heSB3YW50IHRvIG5haWwgdGhpcyAqLwogICAvKiBzb2NrZXQgdG8gYSBwYXJ0aWN1bGFyIG5ldHdvcmstbGV2ZWwgYWRkcmVzcywgYnV0IGZvciBub3csICovCiAgIC8qIElOQUREUl9BTlkgc2hvdWxkIGJlIGp1c3QgZmluZS4gKi8KLSAgCisKICAgYnplcm8oKGNoYXIgKikmbXlhZGRyX2luLAogCXNpemVvZihteWFkZHJfaW4pKTsKICAgbXlhZGRyX2luLnNpbl9mYW1pbHkgICAgICA9IEFGX0lORVQ7CiAgIG15YWRkcl9pbi5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwogICBteWFkZHJfaW4uc2luX3BvcnQgICAgICAgID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KXRjcF9ycl9yZXF1ZXN0LT5wb3J0KTsKLSAgCisKICAgLyogR3JhYiBhIHNvY2tldCB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfbmJycjogZ3JhYmJpbmcgYSBzb2NrZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC0xMDg2NSw3ICsxMTcxOSw3IEBACiAgIGxvY19ub2RlbGF5ID0gdGNwX3JyX3JlcXVlc3QtPm5vX2RlbGF5OwogICBsb2NfcmN2YXZvaWQgPSB0Y3BfcnJfcmVxdWVzdC0+c29fcmN2YXZvaWQ7CiAgIGxvY19zbmRhdm9pZCA9IHRjcF9ycl9yZXF1ZXN0LT5zb19zbmRhdm9pZDsKLSAgCisKICAgc2V0X2hvc3RuYW1lX2FuZF9wb3J0KGxvY2FsX25hbWUsCiAJCQlwb3J0X2J1ZmZlciwKIAkJCW5mX3RvX2FmKHRjcF9ycl9yZXF1ZXN0LT5pcGZhbWlseSksCkBAIC0xMDg4MCw0MCArMTE3MzQsNDAgQEAKIAkJCQkwKTsKIAogICBzX2xpc3RlbiA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTGV0J3MgZ2V0IGFuIGFkZHJlc3MgYXNzaWduZWQgdG8gdGhpcyBzb2NrZXQgc28gd2UgY2FuIHRlbGwgdGhlICovCiAgIC8qIGluaXRpYXRvciBob3cgdG8gcmVhY2ggdGhlIGRhdGEgc29ja2V0LiBUaGVyZSBtYXkgYmUgYSBkZXNpcmUgdG8gKi8KICAgLyogbmFpbCB0aGlzIHNvY2tldCB0byBhIHNwZWNpZmljIElQIGFkZHJlc3MgaW4gYSBtdWx0aS1ob21lZCwgKi8KICAgLyogbXVsdGktY29ubmVjdGlvbiBzaXR1YXRpb24sIGJ1dCBmb3Igbm93LCB3ZSdsbCBpZ25vcmUgdGhlIGlzc3VlICovCiAgIC8qIGFuZCBjb25jZW50cmF0ZSBvbiBzaW5nbGUgY29ubmVjdGlvbiB0ZXN0aW5nLiAqLwotICAKKwogICBpZiAoYmluZChzX2xpc3RlbiwKIAkgICAoc3RydWN0IHNvY2thZGRyICopJm15YWRkcl9pbiwKIAkgICBzaXplb2YobXlhZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3csIGxldCdzIHNldC11cCB0aGUgc29ja2V0IHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMgKi8KICAgaWYgKGxpc3RlbihzX2xpc3RlbiwgNSkgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgCisKKwogICAvKiBub3cgZ2V0IHRoZSBwb3J0IG51bWJlciBhc3NpZ25lZCBieSB0aGUgc3lzdGVtICAqLwogICBhZGRybGVuID0gc2l6ZW9mKG15YWRkcl9pbik7CiAgIGlmIChnZXRzb2NrbmFtZShzX2xpc3RlbiwKQEAgLTEwOTIxLDIzICsxMTc3NSwyMyBAQAogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCisKICAgdGNwX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gKGludCkgbnRvaHMobXlhZGRyX2luLnNpbl9wb3J0KTsKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAwLjAgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgdGNwX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IDAuMDsgCS8qIGFzc3VtZSBubyBjcHUgKi8KICAgdGNwX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDA7CiAKQEAgLTEwOTQ1LDggKzExNzk5LDggQEAKICAgICB0Y3BfcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKICAgICB0Y3BfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdSh0Y3BfcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAotICAKKworCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgdGNwX3JyX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplID0gbHNzX3NpemU7CkBAIC0xMDk1Niw5ICsxMTgxMCw5IEBACiAgIHRjcF9ycl9yZXNwb25zZS0+c29fc25kYXZvaWQgPSBsb2Nfc25kYXZvaWQ7CiAgIHRjcF9ycl9yZXNwb25zZS0+dGVzdF9sZW5ndGggPSB0Y3BfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGg7CiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7Ci0gIAorCiAgIGlmICgoc19kYXRhID0gYWNjZXB0KHNfbGlzdGVuLAogCQkgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZwZWVyYWRkcl9pbiwKIAkJICAgICAgICZhZGRybGVuKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKQEAgLTEwOTY2LDcgKzExODIwLDcgQEAKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3RjcF9uYnJyOiBhY2NlcHQgY29tcGxldGVzIG9uIHRoZSBkYXRhIGNvbm5lY3Rpb24uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtMTA5ODAsMTcgKzExODM0LDE3IEBACiAgIGtsdWRnZV9zb2NrZXRfb3B0aW9ucyhzX2RhdGEpOwogCiAjZW5kaWYgLyogS0xVREdFX1NPQ0tFVF9PUFRJT05TICovCi0gICAgCisKICAgLyogbm93IHRoYXQgd2UgYXJlIGNvbm5lY3RlZCwgbWFyayB0aGUgc29ja2V0IGFzIG5vbi1ibG9ja2luZyAqLwogICBpZiAoIXNldF9ub25ibG9jayhzX2RhdGEpKSB7CiAgICAgY2xvc2Uoc19kYXRhKTsKICAgICBleGl0KDEpOwogICB9CiAKLSAgCisKICAgLyogTm93IGl0J3MgdGltZSB0byBzdGFydCByZWNlaXZpbmcgZGF0YSBvbiB0aGUgY29ubmVjdGlvbi4gV2Ugd2lsbCAqLwogICAvKiBmaXJzdCBncmFiIHRoZSBhcHJvcHJpYXRlIGNvdW50ZXJzIGFuZCB0aGVuIHN0YXJ0IGdyYWJiaW5nLiAqLwotICAKKwogICBjcHVfc3RhcnQodGNwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKIAogI2lmZGVmIFdJTjMyCkBAIC0xMTAwMiwxMCArMTE4NTYsMTAgQEAKICAgLyogYW5kIHN1Y2ggd291bGQgYmUgYXBwcmVjaWF0ZWQgcmFqIDEvOTYgKi8KICAgd2luX2tsdWRnZV9zb2NrZXQgPSBzX2RhdGE7CiAjZW5kaWYgLyogV0lOMzIgKi8KLSAgCisKICAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHNlbmRlciBkb2VzIGEgc2h1dGRvd24sIHdoaWNoIHdpbGwgKi8KICAgLyogcmV0dXJuIGEgbGVuZ3RoIG9mIHplcm8gICAqLwotICAKKwogICBpZiAodGNwX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoID4gMCkgewogICAgIHRpbWVzX3VwID0gMDsKICAgICB0cmFuc19yZW1haW5pbmcgPSAwOwpAQCAtMTEwMTcsNyArMTE4NzEsNyBAQAogICB9CiAKICAgdHJhbnNfcmVjZWl2ZWQgPSAwOwotICAKKwogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHRyYW5zX3JlbWFpbmluZyA+IDApKSB7CiAgICAgdGVtcF9tZXNzYWdlX3B0ciA9IHJlY3ZfcmluZy0+YnVmZmVyX3B0cjsKICAgICByZXF1ZXN0X2J5dGVzX3JlbWFpbmluZwk9IHRjcF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7CkBAIC0xMTA2MCwxMCArMTE5MTQsMTAgQEAKICAgICAgIC8qIHdlIGhpdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGJhc2VkIG9uIHRpbWUgLSBsZXRzICovCiAgICAgICAvKiBiYWlsIG91dCBvZiBoZXJlIG5vdy4uLiAqLwogICAgICAgZnByaW50Zih3aGVyZSwieW81XG4iKTsKLSAgICAgIGZmbHVzaCh3aGVyZSk7CQkJCQkJCisgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorCiAgICAgLyogTm93LCBzZW5kIHRoZSByZXNwb25zZSB0byB0aGUgcmVtb3RlICovCiAgICAgaWYoKGJ5dGVzX3NlbnQ9c2VuZChzX2RhdGEsCiAJCQlzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCkBAIC0xMTA3MywxNCArMTE5MjcsMTQgQEAKIAkvKiB0aGUgdGVzdCB0aW1lciBoYXMgcG9wcGVkICovCiAJdGltZWRfb3V0ID0gMTsKIAlmcHJpbnRmKHdoZXJlLCJ5bzZcbiIpOwotCWZmbHVzaCh3aGVyZSk7CQkJCQkJCisJZmZsdXNoKHdoZXJlKTsKIAlicmVhazsKICAgICAgIH0KICAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gOTkyOwogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7CiAKICAgICB0cmFuc19yZWNlaXZlZCsrOwpAQCAtMTEwODgsMTMgKzExOTQyLDEzIEBACiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9CiAgIH0KLSAgCi0gIAorCisKICAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHRyYW5zYWN0aW9uIGNvdW50IGJlaW5nICovCiAgIC8qIHJlYWNoZWQgKi8KLSAgCisKICAgY3B1X3N0b3AodGNwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICBzdG9wX3RpbWVyKCk7CiAKICAgaWYgKHRpbWVkX291dCkgewpAQCAtMTExMDUsMTYgKzExOTU5LDE2IEBACiAgIH0KIAogICAvKiBzZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBzZW5kZXIJCQkqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfbmJycjogZ290ICVkIHRyYW5zYWN0aW9uc1xuIiwKIAkgICAgdHJhbnNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIHRjcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqIAotCQkJCSAgICAodGNwX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArIAorCisgIHRjcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqCisJCQkJICAgICh0Y3BfcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKIAkJCQkgICAgIHRjcF9ycl9yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7CiAgIHRjcF9ycl9yZXN1bHRzLT50cmFuc19yZWNlaXZlZCA9IHRyYW5zX3JlY2VpdmVkOwogICB0Y3BfcnJfcmVzdWx0cy0+ZWxhcHNlZF90aW1lICAgPSBlbGFwc2VkX3RpbWU7CkBAIC0xMTEyMywxOCArMTE5NzcsMTggQEAKICAgaWYgKHRjcF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHRjcF9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfbmJycjogdGVzdCBjb21wbGV0ZSwgc2VuZGluZyByZXN1bHRzLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiB3ZSBhcmUgZG9uZSB3aXRoIHRoZSBzb2NrZXQsIGZyZWUgaXQgKi8KICAgY2xvc2Uoc19kYXRhKTsKIAogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiB9CiAKICNlbmRpZiAvKiBET19OQlJSICovCkBAIC0xMTE1MSw0NiArMTIwMDUsNDYgQEAKIHZvaWQKIHNlbmRfdGNwX2NjKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgXG4iOwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICAgICAgJSUgICAgICB1cy9UciAgIHVzL1RyXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAlLTZkICUtNi4yZiAgJS02LjJmICAgJS02LjJmICUtNi4yZiAlLTYuM2YgICUtNi4zZlxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcblwKIEFsaWdubWVudCAgICAgIE9mZnNldFxuXAogTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZVxuXAogU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3ZcblwKICU1ZCAgJTVkICAgJTVkICAlNWRcbiI7Ci0gIAotICAKKworCiAgIGludAkJCXRpbWVkX291dCA9IDA7CiAgIGZsb2F0CQkJZWxhcHNlZF90aW1lOwotICAKKwogICBjaGFyCXRlbXBfbWVzc2FnZV9wdHJbMV07CiAgIGludAludW1tZXNzYWdlczsKICAgU09DS0VUCXNlbmRfc29ja2V0OwpAQCAtMTExOTgsMTMgKzEyMDUyLDEzIEBACiAgIGRvdWJsZQlieXRlc194ZmVyZDsKICAgaW50CXJzcF9ieXRlc19sZWZ0ID0gMTsKICAgaW50CXJzcF9ieXRlc19yZWN2ZDsKLSAgCisKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKICAgZmxvYXQJcmVtb3RlX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUJdGhydXB1dDsKLSAgCisKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKIApAQCAtMTEyMTQsMTUgKzEyMDY4LDE1IEBACiAgIHN0cnVjdAl0Y3BfY2NfcmVxdWVzdF9zdHJ1Y3QJKnRjcF9jY19yZXF1ZXN0OwogICBzdHJ1Y3QJdGNwX2NjX3Jlc3BvbnNlX3N0cnVjdAkqdGNwX2NjX3Jlc3BvbnNlOwogICBzdHJ1Y3QJdGNwX2NjX3Jlc3VsdHNfc3RydWN0CSp0Y3BfY2NfcmVzdWx0OwotICAKLSAgdGNwX2NjX3JlcXVlc3QgPSAKKworICB0Y3BfY2NfcmVxdWVzdCA9CiAgICAgKHN0cnVjdCB0Y3BfY2NfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9jY19yZXNwb25zZSA9IAorICB0Y3BfY2NfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX2NjX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHRjcF9jY19yZXN1bHQgPQogICAgIChzdHJ1Y3QgdGNwX2NjX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCi0gIAorCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC0xMTIzMyw3ICsxMjA4Nyw3IEBACiAgIC8qIGNvbnRyb2wgc29ja2V0LCBhbmQgc2luY2Ugd2Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBkaWZmZXJlbnQgKi8KICAgLyogcHJvdG9jb2xzIGFuZCBzdWNoLCB3ZSBhcmUgcGFzc2VkIHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgaG9zdCBhbmQgKi8KICAgLyogbXVzdCB0dXJuIHRoYXQgaW50byB0aGUgdGVzdCBzcGVjaWZpYyBhZGRyZXNzaW5nIGluZm9ybWF0aW9uLiAqLwotICAKKwogICBjb21wbGV0ZV9hZGRyaW5mb3MoJnJlbW90ZV9yZXMsCiAJCSAgICAgJmxvY2FsX3JlcywKIAkJICAgICByZW1vdGVfaG9zdCwKQEAgLTExMjQ0LDMxICsxMjA5OCwzMSBAQAogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJUQ1AgQ29ubmVjdC9DbG9zZSBURVNUIixsb2NhbF9yZXMscmVtb3RlX3Jlcyk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBudW1tZXNzYWdlcwk9CTA7CiAgIGJ5dGVzX3hmZXJkCT0JMC4wOwogICB0aW1lc191cCAJPSAJMDsKLSAgCisKICAgLyogc2luY2UgdGhlcmUgYXJlIG5vIGRhdGEgYnVmZmVycyBpbiB0aGlzIHRlc3QsIHdlIG5lZWQgbm8gc2VuZCBvciAqLwogICAvKiByZWN2IHJpbmdzICovCiAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwic2VuZF90Y3BfY2M6IHNlbmRfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgfQotICAKKwogICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QgKi8KICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAvKiB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbiAqLwogICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwogICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgfQotICAKKwogICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUgc29ja2V0ICovCiAgIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwogICAvKiBhbGwgdGhlIHZhbHVlcyBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCAqLwpAQCAtMTEyNzYsNyArMTIxMzAsNyBAQAogICAvKiB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUgc3lzdGVtJ3MgKi8KICAgLyogZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0IHdpbGwgKi8KICAgLyogZGVmYXVsdCB0byA4LCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgCisKICAgbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQucmVxdWVzdF90eXBlCT0JRE9fVENQX0NDOwogICB0Y3BfY2NfcmVxdWVzdC0+cmVjdl9idWZfc2l6ZQkgICAgICAgID0JcnNyX3NpemVfcmVxOwogICB0Y3BfY2NfcmVxdWVzdC0+c2VuZF9idWZfc2l6ZQkgICAgICAgID0JcnNzX3NpemVfcmVxOwpAQCAtMTEzMDMsOSArMTIxNTcsOSBAQAogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF90Y3BfY2M6IHJlcXVlc3RpbmcgVENQIGNyciB0ZXN0XG4iKTsKICAgfQotICAKKwogICBzZW5kX3JlcXVlc3QoKTsKLSAgCisKICAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudCAJKi8KICAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAJKi8KICAgLyogdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLiAgVGhlCSovCkBAIC0xMTMxNSw5ICsxMjE2OSw5IEBACiAgIC8qIGFmdGVyIHRoZSBjb25uZWN0IHJldHVybnMuIFRoZSByZW1vdGUgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0CSovCiAgIC8qIGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcyB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzCSovCiAgIC8qIGJlaW5nIHNlbnQgZm9yIHRoZSBUQ1AgdGVzdHMuCQkJCQkqLwotICAKKwogICByZWN2X3Jlc3BvbnNlKCk7Ci0gIAorCiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICByc3Jfc2l6ZQk9CXRjcF9jY19yZXNwb25zZS0+cmVjdl9idWZfc2l6ZTsKICAgICByc3Nfc2l6ZQk9CXRjcF9jY19yZXNwb25zZS0+c2VuZF9idWZfc2l6ZTsKQEAgLTExMzQ0LDE0ICsxMjE5OCwxNCBAQAogICB9CiAKICNpZmRlZiBXQU5UX0RFTU8KLSAgREVNT19SUl9TRVRVUCgxMDApCisgIGRlbW9fcnJfc2V0dXAoMTAwKTsKICNlbmRpZgotICAKKwogICAvKiBwaWNrIGEgbmljZSByYW5kb20gc3BvdCBiZXR3ZWVuIGNsaWVudF9wb3J0X21pbiBhbmQgKi8KICAgLyogY2xpZW50X3BvcnRfbWF4IGZvciBvdXIgaW5pdGlhbCBwb3J0IG51bWJlciAqLwogICBzcmFuZChnZXRwaWQoKSk7CiAgIGlmIChjbGllbnRfcG9ydF9tYXggLSBjbGllbnRfcG9ydF9taW4pIHsKLSAgICBteXBvcnQgPSBjbGllbnRfcG9ydF9taW4gKyAKKyAgICBteXBvcnQgPSBjbGllbnRfcG9ydF9taW4gKwogICAgICAgKHJhbmQoKSAlIChjbGllbnRfcG9ydF9tYXggLSBjbGllbnRfcG9ydF9taW4pKTsKICAgfQogICBlbHNlIHsKQEAgLTExMzU5LDEwICsxMjIxMywxMCBAQAogICB9CiAgIC8qIHRoZXJlIHdpbGwgYmUgYSArKyBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgdG8gYmluZCwgc28gc3VidHJhY3Qgb25lICovCiAgIG15cG9ydC0tOwotICAKKwogICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwogICAvKiBjYW4gYmUgZWl0aGVyIHRpbWUgb3IgdHJhbnNhY3Rpb24gYmFzZWQuICovCi0gIAorCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgdGltZXNfdXAgPSAwOwpAQCAtMTEzNzQsMTYgKzEyMjI4LDE2IEBACiAgICAgdHJhbnNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICB0aW1lc191cCA9IDE7CiAgIH0KLSAgCisKICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAvKiB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCi0gIAorCiAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwogCiAjaWZkZWYgV0FOVF9ERU1PCiAgIGlmIChkZW1vX21vZGUpIHsKLSAgICBISVNUX3RpbWVzdGFtcChkZW1vX29uZV9wdHIpOworICAgIGRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CiAgIH0KICNlbmRpZgogCkBAIC0xMTQ0MiwxMSArMTIyOTYsMjEgQEAKICAgICAgIGV4aXQoMSk7CiAgICAgfQogCisjaWZkZWYgV0lOMzIKKyAgICAvKiB0aGlzIGlzIHVzZWQgc28gdGhlIHRpbWVyIHRocmVhZCBjYW4gY2xvc2UgdGhlIHNvY2tldCBvdXQgZnJvbSAqLworICAgIC8qIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0ICovCisgICAgLyogV2luZG93cy1zcGVjaWZpYyB3YXkgSSBjYW4gZmluZCB0byBmb3JjZSB0aGUgd2luc29jayBjYWxscyB0byAqLworICAgIC8qIHJldHVybiBXU0FFSU5UUiB3aXRoIHRoZSB0ZXN0IGlzIG92ZXIuIGFueXRoaW5nIHRoYXQgd2lsbCBydW4gb24gKi8KKyAgICAvKiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXggc2lnbmFscyAqLworICAgIC8qIGFuZCBzdWNoIHdvdWxkIGJlIGFwcHJlY2lhdGVkIHJhaiAxLzk2ICovCisgICAgd2luX2tsdWRnZV9zb2NrZXQgPSBzZW5kX3NvY2tldDsKKyNlbmRpZiAvKiBXSU4zMiAqLworCiAgICAgLyogd2UgdXNlZCB0byBoYXZlIGEgY2FsbCB0byBiaW5kKCkgaGVyZSwgYnV0IHRoYXQgaXMgYmVpbmcKICAgICAgICB0YWtlbiBjYXJlIG9mIGJ5IGNyZWF0ZV9kYXRhX3NvY2tldCgpLiByYWogMjAwNS0wMi0wOCAqLwogCiAgICAgLyogQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0ICAqLwotICAgIGlmICgocmV0ID0gY29ubmVjdChzZW5kX3NvY2tldCwgCisgICAgaWYgKChyZXQgPSBjb25uZWN0KHNlbmRfc29ja2V0LAogCQkgICAgICAgcmVtb3RlX3Jlcy0+YWlfYWRkciwKIAkJICAgICAgIHJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pKSA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBpZiAoU09DS0VUX0VJTlRSKHJldCkpCkBAIC0xMTQ4NCwxNCArMTIzNDgsMTQgQEAKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogCiAjaWZkZWYgV0FOVF9ERU1PCi0gICAgICBERU1PX1JSX0lOVEVSVkFMKDEpCisgICAgICBkZW1vX3JyX2ludGVydmFsKDEpOwogI2VuZGlmCiAKLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorICAgICAgbnVtbWVzc2FnZXMrKzsKICAgICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKIAl0cmFuc19yZW1haW5pbmctLTsKICAgICAgIH0KLSAgICAKKwogICAgICAgaWYgKGRlYnVnID4gMykgewogCWZwcmludGYod2hlcmUsCiAJCSJUcmFuc2FjdGlvbiAlZCBjb21wbGV0ZWQgb24gbG9jYWwgcG9ydCAldVxuIiwKQEAgLTExNTE0LDIwICsxMjM3OCwyMCBAQAogCSAgcGVycm9yKCJzZW5kX3RjcF9jYzogZGF0YSByZWN2IGVycm9yIik7CiAJICBleGl0KDEpOwogICAgIH0KLSAgICAgIAorCiAgIH0KIAotICAKKwogICAvKiB0aGlzIGNhbGwgd2lsbCBhbHdheXMgZ2l2ZSB1cyB0aGUgZWxhcHNlZCB0aW1lIGZvciB0aGUgdGVzdCwgYW5kICovCiAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCiAKICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nIG1lYXN1cmVkPyAqLwogICAvKiBob3cgbG9uZyBkaWQgd2UgcmVhbGx5IHJ1bj8gKi8KLSAgCisKICAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlICovCiAgIC8qIGNhbGN1bGF0ZWQgc2VydmljZSBkZW1hbmQgYW5kIGFsbCB0aG9zZSBpbnRlcmVzdGluZyB0aGluZ3MuIElmIGl0ICovCiAgIC8qIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KLSAgCisKICAgcmVjdl9yZXNwb25zZSgpOwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgaWYgKGRlYnVnKQpAQCAtMTE1NDAsMTAgKzEyNDA0LDEwIEBACiAJICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgcGVycm9yKCIiKTsKICAgICBmZmx1c2god2hlcmUpOwotICAgICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUgZnV0dXJlLCAqLwogICAvKiB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQgbWVhc3VyZWQgYnkgKi8KICAgLyogdGhlIHJlbW90ZSwgYnV0IGl0IHNob3VsZCBiZSB0aGUgY2FzZSB0aGF0IGZvciBhIFRDUCBzdHJlYW0gdGVzdCwgKi8KQEAgLTExNTU0LDExICsxMjQxOCwxMSBAQAogICAvKiBzZW5kX3NpemUsIHNvIHdlIHJlYWxseSBkaWRuJ3Qgc2VuZCB3aGF0IGhlIGFza2VkIGZvciA7LSkgV2UgdXNlICovCiAgIC8qIEtieXRlcy9zIGFzIHRoZSB1bml0cyBvZiB0aHJ1cHV0IGZvciBhIFRDUCBzdHJlYW0gdGVzdCwgd2hlcmUgSyA9ICovCiAgIC8qIDEwMjQuIEEgZnV0dXJlIGVuaGFuY2VtZW50ICptaWdodCogYmUgdG8gY2hvb3NlIGZyb20gYSBjb3VwbGUgb2YgKi8KLSAgLyogdW5pdCBzZWxlY3Rpb25zLiAqLyAKLSAgCisgIC8qIHVuaXQgc2VsZWN0aW9ucy4gKi8KKwogICBieXRlc194ZmVyZAk9IChyZXFfc2l6ZSAqIG51bW1lc3NhZ2VzKSArIChyc3Bfc2l6ZSAqIG51bW1lc3NhZ2VzKTsKICAgdGhydXB1dAk9IGNhbGNfdGhydXB1dChieXRlc194ZmVyZCk7Ci0gIAorCiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUgKi8KICAgICAvKiB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSAqLwpAQCAtMTE1ODQsNyArMTI0NDgsNyBAQAogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAoZmxvYXQpIC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAgIGlmIChyZW1vdGVfY3B1X3JhdGUgPT0gMC4wKSB7CiAJZnByaW50Zih3aGVyZSwiREFOR0VSICBEQU5HRVIgIERBTkdFUiAgICBEQU5HRVIgIERBTkdFUiAgREFOR0VSICAgIERBTkdFUiFcbiIpOwpAQCAtMTE2MDQsNyArMTI0NjgsNyBAQAogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IChmbG9hdCkgLTEuMDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAoZmxvYXQpIC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciAqLwogICAgIC8qIGhhcyBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgKi8KICAgICAvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCwgb3IgdGhlIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZC4gSWYgdGhlICovCkBAIC0xMTYxMyw3ICsxMjQ3Nyw3IEBACiAgICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwogICAgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KICAgICAvKiBub3QgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC0xMTYzNiw3ICsxMjUwMCw3IEBACiAJCWxvY2FsX2NwdV9tZXRob2QsCiAJCXJlbW90ZV9jcHVfbWV0aG9kKTsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIGNwdV9mbXRfMV9saW5lXzEsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLwogCSAgICAgIGxzc19zaXplLAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCkBAIC0xMTY4MiwyMyArMTI1NDYsMjMgQEAKIAkgICAgICB0cHV0X2ZtdF8xX2xpbmVfMiwKIAkgICAgICByc3Nfc2l6ZSwgCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCiAJICAgICAgcnNyX3NpemUpOwotICAgICAgCisKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICAKKwogICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZSAqLwogICAvKiBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgdGVzdCwgYnV0IGF0IHRoZSAqLwogICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KICAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCi0gIAorCiAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLiAqLwogICAgIC8qIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgKi8KICAgICAvKiBUQ1Agc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyAqLwogICAgIC8qIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLwotICAgIAorCiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAga3NpbmtfZm10LAogCSAgICBsb2NhbF9zZW5kX2FsaWduLApAQCAtMTE3MTMsMTQgKzEyNTc3LDE0IEBACiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogICB9Ci0gIAorCiB9CiAKIAwKIHZvaWQKIHJlY3ZfdGNwX2NjKCkKIHsKLSAgCisKICAgY2hhciAgKm1lc3NhZ2U7CiAKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CkBAIC0xMTczNiwyMyArMTI2MDAsMjMgQEAKICAgaW50CXRyYW5zX3JlbWFpbmluZzsKICAgaW50CXRpbWVkX291dCA9IDA7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgc3RydWN0CXRjcF9jY19yZXF1ZXN0X3N0cnVjdAkqdGNwX2NjX3JlcXVlc3Q7CiAgIHN0cnVjdAl0Y3BfY2NfcmVzcG9uc2Vfc3RydWN0CSp0Y3BfY2NfcmVzcG9uc2U7CiAgIHN0cnVjdAl0Y3BfY2NfcmVzdWx0c19zdHJ1Y3QJKnRjcF9jY19yZXN1bHRzOwotICAKLSAgdGNwX2NjX3JlcXVlc3QgPSAKKworICB0Y3BfY2NfcmVxdWVzdCA9CiAgICAgKHN0cnVjdCB0Y3BfY2NfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9jY19yZXNwb25zZSA9IAorICB0Y3BfY2NfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgdGNwX2NjX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHRjcF9jY19yZXN1bHRzID0gCisgIHRjcF9jY19yZXN1bHRzID0KICAgICAoc3RydWN0IHRjcF9jY19yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl90Y3BfY2M6IGVudGVyZWQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KICAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwogICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwpAQCAtMTE3NjAsMTkgKzEyNjI0LDE5IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfY2M6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBUQ1BfQ0NfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2NjOiB0aGUgcmVzcG9uc2UgdHlwZSBpcyBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC0xMTc4NCwxMCArMTI2NDgsMTAgQEAKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgREFUQUJVRkZFUkxFTik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlcyB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLwogICAvKiBhbGlnbm1lbnRzIHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0cy4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfdGNwX2NjOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLApAQCAtMTE4MDEsMTYgKzEyNjY1LDE2IEBACiAgIH0KIAogICByZWN2X21lc3NhZ2VfcHRyID0gQUxJR05fQlVGRkVSKG1lc3NhZ2UsIHRjcF9jY19yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCwgdGNwX2NjX3JlcXVlc3QtPnJlY3Zfb2Zmc2V0KTsKLSAgCisKICAgc2VuZF9tZXNzYWdlX3B0ciA9IEFMSUdOX0JVRkZFUihtZXNzYWdlLCB0Y3BfY2NfcmVxdWVzdC0+c2VuZF9hbGlnbm1lbnQsIHRjcF9jY19yZXF1ZXN0LT5zZW5kX29mZnNldCk7CiAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfY2M6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2NjOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTExODQwLDcgKzEyNzA0LDcgQEAKIAkJCQkwKTsKIAogICBzX2xpc3RlbiA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKQEAgLTExODcwLDcgKzEyNzM0LDcgQEAKICAgICB9CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBub3cgZ2V0IHRoZSBwb3J0IG51bWJlciBhc3NpZ25lZCBieSB0aGUgc3lzdGVtICAqLwogICBhZGRybGVuID0gc2l6ZW9mKG15YWRkcl9pbik7CiAgIGlmIChnZXRzb2NrbmFtZShzX2xpc3RlbiwKQEAgLTExODg1LDEyICsxMjc0OSwxMiBAQAogICAgIH0KICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIE5vdyBteWFkZHJfaW4gY29udGFpbnMgdGhlIHBvcnQgYW5kIHRoZSBpbnRlcm5ldCBhZGRyZXNzIHRoaXMgaXMgKi8KICAgLyogcmV0dXJuZWQgdG8gdGhlIHNlbmRlciBhbHNvIGltcGxpY2l0bHkgdGVsbGluZyB0aGUgc2VuZGVyIHRoYXQgdGhlICovCiAgIC8qIHNvY2tldCBidWZmZXIgc2l6aW5nIGhhcyBiZWVuIGRvbmUuICovCi0gIAotICB0Y3BfY2NfcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPSAKKworICB0Y3BfY2NfcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPQogICAgIChpbnQpIG50b2hzKCgoc3RydWN0IHNvY2thZGRyX2luICopJm15YWRkcl9pbiktPnNpbl9wb3J0KTsKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwidGVsbGluZyB0aGUgcmVtb3RlIHRvIGNhbGwgbWUgYXQgJWRcbiIsCkBAIC0xMTg5OCwyMiArMTI3NjIsMjIgQEAKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgMC4wIHRvICovCiAgIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCiAgIHRjcF9jY19yZXNwb25zZS0+Y3B1X3JhdGUgPSAoZmxvYXQpMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICBpZiAodGNwX2NjX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgdGNwX2NjX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7Ci0gICAgdGNwX2NjX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHRjcF9jY19yZXNwb25zZS0+Y3B1X3JhdGUgPQogICAgICAgY2FsaWJyYXRlX2xvY2FsX2NwdSh0Y3BfY2NfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAogCi0gIAorCisKICAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCiAgIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICB0Y3BfY2NfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKQEAgLTExOTIzLDE3ICsxMjc4NywxNyBAQAogICB0Y3BfY2NfcmVzcG9uc2UtPnNvX3NuZGF2b2lkID0gbG9jX3NuZGF2b2lkOwogCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHRjcF9jY19yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHNodXRkb3duLCB3aGljaCB3aWxsICovCiAgIC8qIHJldHVybiBhIGxlbmd0aCBvZiB6ZXJvICAgKi8KLSAgCisKICAgaWYgKHRjcF9jY19yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTExOTQzLDEyICsxMjgwNywxMiBAQAogICAgIHRpbWVzX3VwID0gMTsKICAgICB0cmFuc19yZW1haW5pbmcgPSB0Y3BfY2NfcmVxdWVzdC0+dGVzdF9sZW5ndGggKiAtMTsKICAgfQotICAKKwogICB0cmFuc19yZWNlaXZlZCA9IDA7CiAKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewogI2lmZGVmIFdJTjMyCi0gICAgLyogVGhlIHRlc3QgdGltZXIgd2lsbCBwcm9iYWJseSBmaXJlIGR1cmluZyB0aGlzIGFjY2VwdCwgCisgICAgLyogVGhlIHRlc3QgdGltZXIgd2lsbCBwcm9iYWJseSBmaXJlIGR1cmluZyB0aGlzIGFjY2VwdCwKICAgICAgICBzbyB0byBtYWtlIHRoZSBzdGFydF90aW1lciBhYm92ZSB3b3JrIHdlIGhhdmUgdG8gbW92ZQogICAgICAgIGl0IHRvIGNsb3NlIHNfbGlzdGVuIHdoaWxlIHdlIGFyZSBibG9ja2VkIG9uIGFjY2VwdC4gKi8KICAgICB3aW5fa2x1ZGdlX3NvY2tldCA9IHNfbGlzdGVuOwpAQCAtMTE5NjUsNyArMTI4MjksNyBAQAogICAgICAgZnByaW50Zih3aGVyZSwicmVjdl90Y3BfY2M6IGFjY2VwdDogZXJybm8gPSAlZFxuIixlcnJubyk7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgICAgY2xvc2Uoc19saXN0ZW4pOwotICAgICAgCisKICAgICAgIGV4aXQoMSk7CiAgICAgfQogCkBAIC0xMTk3MywxMSArMTI4MzcsMTEgQEAKICAgICAvKiB0aGlzIGlzIGZvciB0aG9zZSBzeXN0ZW1zIHdoaWNoICpJTkNPUlJFQ1RMWSogZmFpbCB0byBwYXNzICovCiAgICAgLyogYXR0cmlidXRlcyBhY3Jvc3MgYW4gYWNjZXB0KCkgY2FsbC4gSW5jbHVkaW5nIHRoaXMgZ29lcyBhZ2FpbnN0ICovCiAgICAgLyogbXkgYmV0dGVyIGp1ZGdlbWVudCA6KCByYWogMTEvOTUgKi8KLSAgICAKKwogICAgIGtsdWRnZV9zb2NrZXRfb3B0aW9ucyhzX2RhdGEpOwogCiAjZW5kaWYgLyogS0xVREdFX1NPQ0tFVF9PUFRJT05TICovCi0gIAorCiAjaWZkZWYgV0lOMzIKICAgLyogdGhpcyBpcyB1c2VkIHNvIHRoZSB0aW1lciB0aHJlYWQgY2FuIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20gKi8KICAgLyogdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QgKi8KQEAgLTExOTkyLDcgKzEyODU2LDcgQEAKICAgICAgIGZwcmludGYod2hlcmUsInJlY3ZfdGNwX2NjOiBhY2NlcHRlZCBkYXRhIGNvbm5lY3Rpb24uXG4iKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQotICAKKwogCiAgICAgLyogY2xvc2UgdGhlIGNvbm5lY3Rpb24uIHRoZSBzZXJ2ZXIgd2lsbCBsaWtlbHkgZG8gYSBncmFjZWZ1bCAqLwogICAgIC8qIGNsb3NlIG9mIHRoZSBjb25uZWN0aW9uLCBpbnN1cmluZyB0aGF0IGFsbCBkYXRhIGhhcyBhcnJpdmVkIGF0ICovCkBAIC0xMjAwNiw3ICsxMjg3MCw3IEBACiAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogICAgICAgdHJhbnNfcmVtYWluaW5nLS07CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgICJyZWN2X3RjcF9jYzogVHJhbnNhY3Rpb24gJWQgY29tcGxldGVcbiIsCkBAIC0xMjAxNSwxMyArMTI4NzksMTMgQEAKICAgICB9CiAKICAgfQotICAKLSAgCisKKwogICAvKiBUaGUgbG9vcCBub3cgZXhpdHMgZHVlIHRvIHRpbWVvdXQgb3IgdHJhbnNhY3Rpb24gY291bnQgYmVpbmcgKi8KICAgLyogcmVhY2hlZCAqLwotICAKKwogICBjcHVfc3RvcCh0Y3BfY2NfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIGlmICh0aW1lZF9vdXQpIHsKICAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzICovCiAgICAgLyogbG9uZ2VyIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgKi8KQEAgLTEyMDI5LDMxICsxMjg5MywzMiBAQAogICAgIGVsYXBzZWRfdGltZSAtPSBQQURfVElNRTsKICAgfQogICAvKiBzZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBzZW5kZXIJCQkqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfY2M6IGdvdCAlZCB0cmFuc2FjdGlvbnNcbiIsCiAJICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICB0Y3BfY2NfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKiAKLQkJCQkJICAgKHRjcF9jY19yZXF1ZXN0LT5yZXF1ZXN0X3NpemUgKyAKLQkJCQkJICAgIHRjcF9jY19yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7Ci0gIHRjcF9jY19yZXN1bHRzLT50cmFuc19yZWNlaXZlZAk9IHRyYW5zX3JlY2VpdmVkOwotICB0Y3BfY2NfcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOworCisgIHRjcF9jY19yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqCisJCQkJICAgICh0Y3BfY2NfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKKwkJCQkgICAgIHRjcF9jY19yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7CisgIHRjcF9jY19yZXN1bHRzLT50cmFuc19yZWNlaXZlZCA9IHRyYW5zX3JlY2VpdmVkOworICB0Y3BfY2NfcmVzdWx0cy0+ZWxhcHNlZF90aW1lCSA9IGVsYXBzZWRfdGltZTsKKyAgdGNwX2NjX3Jlc3VsdHMtPm51bV9jcHVzICAgICAgID0gbGliX251bV9sb2NfY3B1czsKICAgaWYgKHRjcF9jY19yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHRjcF9jY19yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl90Y3BfY2M6IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogfQogDAogdm9pZApAQCAtMTIwNzAsMjAgKzEyOTM1LDI0IEBACiAKIHsKIAotI2RlZmluZSBTT0NLRVRTX0FSR1MgImI6Q0RuTmhIOkw6bTpNOnA6UDpyOnM6UzpUOlZ3Olc6ejQ2IgorI2RlZmluZSBTT0NLRVRTX0FSR1MgImI6Q0RuTmhIOkw6bTpNOnA6UDpyOlI6czpTOlQ6Vnc6Vzp6NDYiCiAKICAgZXh0ZXJuIGNoYXIJKm9wdGFyZzsJICAvKiBwb2ludGVyIHRvIG9wdGlvbiBzdHJpbmcJKi8KLSAgCisKICAgaW50CQljOwotICAKLSAgY2hhcgkKKworICBjaGFyCiAgICAgYXJnMVtCVUZTSVpdLCAgLyogYXJndW1lbnQgaG9sZGVycwkJKi8KICAgICBhcmcyW0JVRlNJWl07CiAKICAgaWYgKGRlYnVnKSB7CiAgICAgaW50IGk7CiAgICAgcHJpbnRmKCIlcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHZlY3RvclxuIiwKKyNpZiBfTVNDX1ZFUiA8PSAxMjAwCisJICAgInNjYW5fc29ja2V0c19hcmdzIik7CisjZWxzZQogCSAgIF9fZnVuY19fKTsKKyNlbmRpZgogICAgIGZvciAoaSA9IDA7IGk8IGFyZ2M7IGkrKykgewogICAgICAgcHJpbnRmKCIlcyAiLGFyZ3ZbaV0pOwogICAgIH0KQEAgLTEyMDkzLDE1ICsxMjk2MiwyMSBAQAogICBzdHJuY3B5KGxvY2FsX2RhdGFfcG9ydCwiMCIsc2l6ZW9mKGxvY2FsX2RhdGFfcG9ydCkpOwogICBzdHJuY3B5KHJlbW90ZV9kYXRhX3BvcnQsIjAiLHNpemVvZihyZW1vdGVfZGF0YV9wb3J0KSk7CiAKKyAgLyogYnkgZGVmYXVsdCwgb25seSBhIFVEUF9TVFJFQU0gdGVzdCBkaXNhbGxvd3Mgcm91dGluZywgdG8gY292ZXIKKyAgICAgdGhlIGJhY2tzaWRlcyBvZiBpbmNvbXBldGVudCB0ZXN0ZXJzIHdobyBoYXZlIGJvZ3VzIHNldHVwcyAqLworICBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVEUF9TVFJFQU0iKSA9PSAwKSB7CisgICAgcm91dGluZ19hbGxvd2VkID0gMDsKKyAgfQorCiAgIC8qIEdvIHRocm91Z2ggYWxsIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBicmVhayB0aGVtICovCiAgIC8qIG91dC4gRm9yIHRob3NlIG9wdGlvbnMgdGhhdCB0YWtlIHR3byBwYXJtcywgc3BlY2lmeWluZyBvbmx5ICovCiAgIC8qIHRoZSBmaXJzdCB3aWxsIHNldCBib3RoIHRvIHRoYXQgdmFsdWUuIFNwZWNpZnlpbmcgb25seSB0aGUgKi8KICAgLyogc2Vjb25kIHdpbGwgbGVhdmUgdGhlIGZpcnN0IHVudG91Y2hlZC4gVG8gY2hhbmdlIG9ubHkgdGhlICovCiAgIC8qIGZpcnN0LCB1c2UgdGhlIGZvcm0gImZpcnN0LCIgKHNlZSB0aGUgcm91dGluZSBicmVha19hcmdzLi4gKi8KLSAgCisKICAgd2hpbGUgKChjPSBnZXRvcHQoYXJnYywgYXJndiwgU09DS0VUU19BUkdTKSkgIT0gRU9GKSB7CiAgICAgc3dpdGNoIChjKSB7Ci0gICAgY2FzZSAnPyc6CQorICAgIGNhc2UgJz8nOgogICAgIGNhc2UgJzQnOgogICAgICAgcmVtb3RlX2RhdGFfZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgIGxvY2FsX2RhdGFfZmFtaWx5ID0gQUZfSU5FVDsKQEAgLTEyMTMyLDcgKzEzMDA3LDcgQEAKICAgICAgIC8qIHNldCBUQ1BfQ09SSyAqLwogICAgICAgbG9jX3RjcGNvcmsgPSAxOwogICAgICAgcmVtX3RjcGNvcmsgPSAxOyAvKiBob3dldmVyLCBhdCBmaXJzdCwgd2Ugb255IGhhdmUgY29yayBhZmZlY3QgbG9jICovCi0jZWxzZSAKKyNlbHNlCiAgICAgICBwcmludGYoIldBUk5JTkc6IFRDUF9DT1JLIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSFcbiIpOwogI2VuZGlmIC8qIFRDUF9DT1JLICovCiAgICAgICBicmVhazsKQEAgLTEyMTQ1LDcgKzEzMDIwLDcgQEAKICAgICAgIGJyZWFrX2FyZ3NfZXhwbGljaXQob3B0YXJnLGFyZzEsYXJnMik7CiAgICAgICBpZiAoYXJnMVswXSkgewogCS8qIG1ha2Ugc3VyZSB3ZSBsZWF2ZSByb29tIGZvciB0aGUgTlVMTCB0ZXJtaW5hdGlvbiBib3lzIGFuZAotCSAgIGdpcmxzLiByYWogMjAwNS0wMi04MiAqLyAKKwkgICBnaXJscy4gcmFqIDIwMDUtMDItODIgKi8KIAlyZW1vdGVfZGF0YV9hZGRyZXNzID0gbWFsbG9jKHN0cmxlbihhcmcxKSsxKTsKIAlzdHJuY3B5KHJlbW90ZV9kYXRhX2FkZHJlc3MsYXJnMSxzdHJsZW4oYXJnMSkpOwogICAgICAgfQpAQCAtMTIxNTYsNyArMTMwMzEsNyBAQAogICAgICAgYnJlYWtfYXJnc19leHBsaWNpdChvcHRhcmcsYXJnMSxhcmcyKTsKICAgICAgIGlmIChhcmcxWzBdKSB7CiAJLyogbWFrZSBzdXJlIHdlIGxlYXZlIHJvb20gZm9yIHRoZSBOVUxMIHRlcm1pbmF0aW9uIGJveXMgYW5kCi0JICAgZ2lybHMuIHJhaiAyMDA1LTAyLTgyICovIAorCSAgIGdpcmxzLiByYWogMjAwNS0wMi04MiAqLwogCWxvY2FsX2RhdGFfYWRkcmVzcyA9IG1hbGxvYyhzdHJsZW4oYXJnMSkrMSk7CiAJc3RybmNweShsb2NhbF9kYXRhX2FkZHJlc3MsYXJnMSxzdHJsZW4oYXJnMSkpOwogICAgICAgfQpAQCAtMTIxODQsOSArMTMwNTksMTMgQEAKICAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CiAgICAgICBpZiAoYXJnMVswXSkKIAlyZXFfc2l6ZSA9IGNvbnZlcnQoYXJnMSk7Ci0gICAgICBpZiAoYXJnMlswXSkJCisgICAgICBpZiAoYXJnMlswXSkKIAlyc3Bfc2l6ZSA9IGNvbnZlcnQoYXJnMik7CiAgICAgICBicmVhazsKKyAgICBjYXNlICdSJzoKKyAgICAgIC8qIGVuYWJsZS9kaXNhYmxlIHJvdXRpbmcgb24gdGhlIGRhdGEgY29ubmVjdGlvbiovCisgICAgICByb3V0aW5nX2FsbG93ZWQgPSBhdG9pKG9wdGFyZyk7CisgICAgICBicmVhazsKICAgICBjYXNlICdtJzoKICAgICAgIC8qIHNldCB0aGUgc2VuZCBzaXplICovCiAgICAgICBzZW5kX3NpemUgPSBjb252ZXJ0KG9wdGFyZyk7CkBAIC0xMjIwOSw3ICsxMzA4OCw3IEBACiAgICAgICBicmVha19hcmdzKG9wdGFyZyxhcmcxLGFyZzIpOwogICAgICAgaWYgKGFyZzFbMF0pCiAJY2xpZW50X3BvcnRfbWluID0gYXRvaShhcmcxKTsKLSAgICAgIGlmIChhcmcyWzBdKQkKKyAgICAgIGlmIChhcmcyWzBdKQogCWNsaWVudF9wb3J0X21heCA9IGF0b2koYXJnMik7CiAgICAgICBicmVhazsKICAgICBjYXNlICdQJzoKQEAgLTEyMjE5LDcgKzEzMDk4LDcgQEAKICAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CiAgICAgICBpZiAoYXJnMVswXSkKIAlzdHJuY3B5KGxvY2FsX2RhdGFfcG9ydCxhcmcxLHNpemVvZihsb2NhbF9kYXRhX3BvcnQpKTsKLSAgICAgIGlmIChhcmcyWzBdKQkKKyAgICAgIGlmIChhcmcyWzBdKQogCXN0cm5jcHkocmVtb3RlX2RhdGFfcG9ydCxhcmcyLHNpemVvZihyZW1vdGVfZGF0YV9wb3J0KSk7CiAgICAgICBicmVhazsKICAgICBjYXNlICd0JzoKQEAgLTEyMjU4LDcgKzEzMTM3LDcgQEAKICAgICB9OwogICB9CiAKLSNpZiBkZWZpbmVkKFdBTlRfRklSU1RfQlVSU1QpIAorI2lmIGRlZmluZWQoV0FOVF9GSVJTVF9CVVJTVCkKICNpZiBkZWZpbmVkKFdBTlRfSElTVE9HUkFNKQogICAvKiBpZiBXQU5UX0ZJUlNUX0JVUlNUIGFuZCBXQU5UX0hJU1RPR1JBTSBhcmUgZGVmaW5lZCBhbmQgdGhlIHVzZXIKICAgICAgaW5kZWVkIHdhbnRzIGEgbm9uLXplcm8gZmlyc3QgYnVyc3Qgc2l6ZSwgYW5kIHdlIHdvdWxkIGVtaXQgYQpAQCAtMTIzMTYsMTggKzEzMTk1LDggQEAKIAlzdHJzdHIodGVzdF9uYW1lLCJTRU5ERklMRSIpKSB7CiAgICAgICByZWN2X3NpemUgPSAtMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoc3Ryc3RyKHRlc3RfbmFtZSwiUlIiKSkgewotICAgICAgLyogSSBhbSBob3dldmVyIF9jZXJ0YWluXyB0aGF0IGZvciBhIG5vIGNvbnRyb2wgUlIgdGVzdCB0aGUKLQkgcmVzcG9uc2Ugc2l6ZSBtdXN0IGVxdWFsIHRoZSByZXF1ZXN0IHNpemUgc2luY2UgOTkgdGltZXMgb3V0Ci0JIG9mIHRlbiB3ZSB3aWxsIGJlIHNwZWFraW5nIHRvIHRoZSBlY2hvIHNlcnZpY2Ugc29tZXdoZXJlICovCi0gICAgICByc3Bfc2l6ZSA9IHJlcV9zaXplOwotICAgIH0KICAgICBlbHNlIGlmIChzdHJzdHIodGVzdF9uYW1lLCJNQUVSVFMiKSkgewogICAgICAgc2VuZF9zaXplID0gLTE7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgcHJpbnRmKCJObyBkZWZhdWx0IHBvcnQga25vd24gZm9yIHRoZSAlcyB0ZXN0LCBwbGVhc2Ugc2V0IG9uZSB5b3Vyc2VsZlxuIix0ZXN0X25hbWUpOwotICAgICAgZXhpdCgtMSk7Ci0gICAgfQogICB9CiB9CmRpZmYgLS1naXQgYS9zcmMvbmV0dGVzdF9ic2QuaCBiL3NyYy9uZXR0ZXN0X2JzZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MWQ1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbmV0dGVzdF9ic2QuaApAQCAtMCwwICsxLDY3NiBAQAorLyoKKyAgICAgICAgQ29weXJpZ2h0IChDKSAxOTkzLTIwMTIgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKKyovCisKKyAvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHRlc3Qtc3BlY2lmaWMgZGVmaW5pdGlvbnMgZm9yIG5ldHBlcmYncyBCU0QgKi8KKyAvKiBzb2NrZXRzIHRlc3RzICovCisKKy8qIHdlbGwgYm95cyBhbmQgZ2lybHMsIHNlZW1zIHRoYXQgd2hpbGUgQUZfSU5FVCBpcyAiMiIgYW5kIEFGX1VOU1BFQworICAgaXMgIjAiIHRoZSB3b3JsZCBvdmVyLCBBRl9JTkVUNiBpcyBkaWZmZXJlbnQgdmFsdWVzIGRlcGVuZGluZyBvbgorICAgdGhlIHBsYXRmb3JtLi4uIGdycnIuICBPbiBIUC1VWCAxMWkgaXQgaXMgIjIyIiBhbmQgb24gTGludXggMi42IGl0CisgICBpcyAiMTAiIHNvb29vby4uLiB3ZSBoYXZlIHRvIGRlZmluZSBvdXIgb3duIHNwYWNlIGZvciBuZXRwZXJmIHRvCisgICBlbmFibGUgdXMgdG8gcGFzcyB2YWx1ZXMgYXJvdW5kIGZyb20gbWFjaGluZSB0byBtYWNoaW5lLiByYWoKKyAgIDIwMDUtMDItMDggKi8KKyNkZWZpbmUgTkZfVU5TUEVDIDAKKyNkZWZpbmUgTkZfSU5FVCAgIDQKKyNkZWZpbmUgTkZfSU5FVDYgIDYKKy8qIHNpbmNlIGl0IGlzbid0IGNsZWFyIHRoYXQgQUZfUkRTIHdpbGwgYmUgdGhlIHNhbWUgdmFsdWUgZXZlcnl3aGVyZQorICAgd2Ugd2lsbCBoYXZlIGFuIE5GX1JEUyBhcyB3ZWxsIGFuZCB3aWxsIG1ha2UgaXQgImx1Y2t5IDciIHJhagorICAgMjAwOTEwMTQgKi8KKyNkZWZpbmUgTkZfUkRTICAgIDcKKworLyogaXQgd291bGQgYWxzbyBzZWVtIHRoYXQgdGhlIHNvY2tldCB0eXBlIGRlZmluZXMgZGlmZmVyIGZyb20KKyAgIHBsYXRmb3JtIHRvIHBsYXRmb3JtLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGRlZmluZSBvdXIgb3duIHZhbHVlcworICAgdG8gcGFzcyBiZXR3ZWVuIG5ldHBlcmYgYW5kIG5ldHNlcnZlciBzbyB0aGV5IGNhbiBiZSB0cmFuc2xhdGVkIHRvCisgICB0aGUgbG9jYWwgdmVyc2lvbnMuICBOU1QgPT0gTmV0cGVyZiBTb2NrZXQgVHlwZSByYWogMjAwOC0wMS0xNCAqLworI2RlZmluZSBOU1RfVU5LTiAgICAgLTEKKyNkZWZpbmUgTlNUX1NUUkVBTSAgICAxCisjZGVmaW5lIE5TVF9ER1JBTSAgICAgMgorI2RlZmluZSBOU1RfRENDUCAgICAgIDMKKyNkZWZpbmUgTlNUX1NFUVBBQ0tFVCA0CisKKyNpZmRlZiBXQU5UX09NTkkKKyNkZWZpbmUgT01OSV9OT19ERUxBWSAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBPTU5JX1VTRV9TRU5ERklMRSAgICAweDAwMDAwMDAyCisjZGVmaW5lIE9NTklfQ09OTkVDVF9URVNUICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgT01OSV9NRUFTVVJFX0NQVSAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBPTU5JX0NIRUNLU1VNX09GRiAgICAweDAwMDAwMDEwCisjZGVmaW5lIE9NTklfUk9VVElOR19BTExPV0VEIDB4MDAwMDAwMjAKKyNkZWZpbmUgT01OSV9XQU5UX0lGTkFNRSAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBPTU5JX1dBTlRfSUZTTE9UICAgICAweDAwMDAwMDgwCisjZGVmaW5lIE9NTklfV0FOVF9JRklEUyAgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgT01OSV9XQU5UX0RSVklORk8gICAgMHgwMDAwMDIwMAorI2RlZmluZSBPTU5JX0NIRUNLX0lOVEVSVkFMICAweDAwMDAwNDAwICAvKiBkZXByZWNhdGVkIDIwMTUtMDQtMjAgKi8KKyNkZWZpbmUgT01OSV9GQVNUT1BFTiAgICAgICAgMHgwMDAwMDgwMAorI2RlZmluZSBPTU5JX01BTkFHRV9GSVJFV0FMTCAweDAwMDAxMDAwCisjZGVmaW5lIE9NTklfVVNFX1BLVElORk8gICAgIDB4MDAwMDIwMDAKKyNkZWZpbmUgT01OSV9VU0VfQ09OTkVDVEVEICAgMHgwMDAwNDAwMAorI2RlZmluZSBPTU5JX1dBTlRfREVGRVJfQUNDRVBUIDB4MDAwMDgwMDAKKy8qIHJvb20gaW4gdGhlIG1pZGRsZSAqLworI2RlZmluZSBPTU5JX1dBTlRfS0VFUEFMSVZFICAweDgwMDAwMDAwCisKK3N0cnVjdCAgb21uaV9yZXF1ZXN0X3N0cnVjdCB7CisgIGludDMyX3QgICAgc2VuZF9idWZfc2l6ZTsgICAgICAgICAvKiBTT19TTkRCVUYgKi8KKyAgdWludDMyX3QgICBzZW5kX3NpemU7ICAgICAgICAgICAgIC8qIGJ5dGVzIHBlciBzZW5kKCkgY2FsbCAqLworICB1aW50MzJfdCAgIHNlbmRfYWxpZ25tZW50OyAgICAgICAgLyogYWxpZ25tZW50IG9mIHNlbmQgYnVmZmVyICovCisgIHVpbnQzMl90ICAgc2VuZF9vZmZzZXQ7ICAgICAgICAgICAvKiBvZmZzZXQgZnJvbSBzZW5kIGFsaWdubWVudCAqLworICB1aW50MzJfdCAgIHNlbmRfd2lkdGg7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHNlbmQgYnVmZmVycyB0byB1c2UgKi8KKyAgaW50MzJfdCAgICByZXF1ZXN0X3NpemU7ICAgICAgICAgIC8qIHNpemUgb2YgYSByZXF1ZXN0ICovCisKKyAgaW50MzJfdCAgICByZWN2X2J1Zl9zaXplOyAgICAgICAgIC8qIFNPX1JDVkJVRiAqLworICB1aW50MzJfdCAgIHJlY2VpdmVfc2l6ZTsgICAgICAgICAgLyogc2l6ZSBvZiBidWZmZXJzIGluIHJlY3YgKi8KKyAgdWludDMyX3QgICByZWN2X2FsaWdubWVudDsgICAgICAgIC8qIGFsaWdubWVudCBvZiByZWN2IGJ1ZmZlciAqLworICB1aW50MzJfdCAgIHJlY3Zfb2Zmc2V0OyAgICAgICAgICAgLyogb2Zmc2V0IGZyb20gcmVjdiBhbGlnbm1lbnQgKi8KKyAgdWludDMyX3QgICByZWN2X3dpZHRoOyAgICAgICAgICAgIC8qIG51bWJlciBvZiByZWN2IGJ1ZmZlcnMgdG8gdXNlICovCisgIGludDMyX3QgICAgcmVzcG9uc2Vfc2l6ZTsgICAgICAgICAvKiBzaXplIG9mIGEgcmVzcG9uc2UgKi8KKworICB1aW50MzJfdCAgIGZsYWdzOyAgICAgICAgICAgICAgICAgLyogdG8gY29udmV5IHRoaW5ncyB0aGF0IGRpZG4ndAorCQkJCSAgICAgICByZWFsbHkgbmVlZCB0byBidXJuIGFuIGVudGlyZQorCQkJCSAgICAgICBpbnQgKi8KKworICBmbG9hdCAgICAgIGNwdV9yYXRlOyAgICAgICAvKiBkbyB3ZSBrbm93IGhvdyBmYXN0IHRoZSBjcHUgaXMgYWxyZWFkeT8gKi8KKworICBpbnQzMl90ICAgIHRlc3RfbGVuZ3RoOyAgICAvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8gKi8KKworICB1aW50MzJfdCAgIHNvX3JjdmF2b2lkOyAgICAvKiBhdm9pZCBjb3BpZXMgb24gcmVjdj8gKi8KKyAgdWludDMyX3QgICBzb19zbmRhdm9pZDsgICAgLyogYXZvaWQgY29waWVzIG9uIHNlbmQ/ICovCisgIHVpbnQzMl90ICAgc2VuZF9kaXJ0eV9jb3VudDsgLyogYnl0ZXMgdG8gZGlydHkgYmVmb3JlIGNhbGxpbmcgc2VuZCAqLworICB1aW50MzJfdCAgIHJlY3ZfZGlydHlfY291bnQ7IC8qIGJ5dGVzIHRvIGRpcnR5IGJlZm9yZSBjYWxsaW5nIHJlY3YgKi8KKyAgdWludDMyX3QgICByZWN2X2NsZWFuX2NvdW50OyAvKiBieXRlcyB0byBhY2Nlc3MgYmVmb3JlIGNhbGxpbmcgcmVjdiAqLworCisgIHVpbnQzMl90ICAgZGF0YV9wb3J0OyAgICAgLyogd2hhdCBwb3J0IG51bWJlciBzaG91bGQgbmV0c2VydmVyIHVzZT8gKi8KKyAgdWludDMyX3QgICBpcGZhbWlseTsgICAgICAvKiBhZGRyZXNzIGZhbWlseSBvZiB0aGUgZGF0YSBjb25uZWN0aW9uICovCisgIHVpbnQzMl90ICAgc29ja2V0X3R5cGU7ICAgLyogZGdyYW0/IHN0cmVhbT8gb3RoZXI/ICovCisgIHVpbnQzMl90ICAgcHJvdG9jb2w7ICAgICAgLyogdGhlIHByb3RvY29sIG9mIHRoZSBkYXRhIGNvbm5lY3Rpb24gKi8KKyAgdWludDMyX3QgICBkaXJlY3Rpb247ICAgICAvKiB3aGljaCB3YXkgZmxvd3MgdGhlIGRhdGE/ICovCisgIHVpbnQzMl90ICAgbmV0cGVyZl9wb3J0OyAgLyogd2hlbiBuZXRzZXJ2ZXIgbmVlZHMgbmV0cGVyZidzIGRhdGEgcG9ydCAqLworICB1aW50MzJfdCAgIGludGVydmFsX2J1cnN0Oy8qIGhvdyBtYW55IHRoaW5ncyB0byBkbyBlYWNoIGludGVydmFsICovCisgIHVpbnQzMl90ICAgaW50ZXJ2YWxfdXNlY3M7LyogaG93IGxvbmcgZWFjaCBpbnRlcnZhbCBzaG91bGQgYmUgKi8KKyAgdWludDMyX3QgICBuZXRwZXJmX2lwWzRdOyAvKiB3aGVuIG5ldHNlcnZlciBuZWVkcyBuZXRwZXJmJ3MgZGF0YSBJUCAqLworICB1aW50MzJfdCAgIG5ldHNlcnZlcl9pcFs0XTsgLyogd2hlbiBuZXRwZXJmIHRlbGxzIG5ldHNlcnZlciBoaXMgSVAgKi8KKyAgaW50MzJfdCAgICBzb2NrZXRfcHJpbzsgLyogd2hhdCBuZXRzZXJ2ZXIgc2hvdWxkIHVzZSBmb3Igc29ja2V0IHByaW8gKi8KKyAgaW50MzJfdCAgICBzb2NrZXRfdG9zOyAgLyogd2hhdCBuZXRzZXJ2ZXIgc2hvdWxkIHVzZSBmb3Igc29ja2V0IHRvcyAqLworICAvKiB0aGVyZSBhcmUgMzggImludHMiIGFib3ZlIGhlcmUsIGFkZCBhbm90aGVyIGFuZCB5b3Ugd2lsbCBuZWVkIHRvCisgICAgIGFkanVzdCB0aGUgZGVmaW5lIGJlbG93ICovCisjZGVmaW5lIE9NTklfUkVRVUVTVF9DT05WX0NVVE9GRiAzOAorICBjaGFyICAgICAgIGNvbmdfY29udHJvbFsxNl07IC8qIHRoZSByZXF1ZXN0ZWQgY29uZ2VzdGlvbiBjb250cm9sIGFsZyAqLworICBjaGFyICAgICAgIGZpbGxfZmlsZVszMl07IC8qIGZpbGUgZnJvbSB3aGljaCBuZXRzZXJ2ZXIgZmlsbHMgYnVmcyAqLworICAvKiB0b3RhbCBzaXplb2YgbXVzdCBiZSA8PSBNQVhTUEVDREFUQSpzaXplb2YoaW50KSAqLworfTsKKworc3RydWN0ICBvbW5pX3Jlc3BvbnNlX3N0cnVjdCB7CisgIGludDMyX3QgICAgcmVjdl9idWZfc2l6ZTsKKyAgdWludDMyX3QgICByZWNlaXZlX3NpemU7CisgIGludDMyX3QgICAgcmVjdl93aWR0aDsKKworICBpbnQzMl90ICAgIHNlbmRfYnVmX3NpemU7CisgIHVpbnQzMl90ICAgc2VuZF9zaXplOworICBpbnQzMl90ICAgIHNlbmRfd2lkdGg7CisKKyAgdWludDMyX3QgICBmbGFnczsKKworICBmbG9hdCAgICAgIGNwdV9yYXRlOworCisgIHVpbnQzMl90ICAgdGVzdF9sZW5ndGg7CisKKyAgdWludDMyX3QgICBzb19yY3Zhdm9pZDsKKyAgdWludDMyX3QgICBzb19zbmRhdm9pZDsKKworICB1aW50MzJfdCAgIGRhdGFfcG9ydDsgICAgIC8qIGNvbm5lY3QgdG8gdGhpcyBwb3J0IG51bWJlciAqLworCisgIHVpbnQzMl90ICAgaW50ZXJ2YWxfYnVyc3Q7LyogaG93IG1hbnkgdGhpbmdzIHRvIGRvIGVhY2ggaW50ZXJ2YWwgKi8KKyAgdWludDMyX3QgICBpbnRlcnZhbF91c2VjczsvKiBob3cgbG9uZyBlYWNoIGludGVydmFsIHNob3VsZCBiZSAqLworICAvKiB0aGVzZSBhcmUgaGVyZSBiZWNhdXNlIHRoZXkgY2FuIGJlIGNoZWNrZWQgYmVmb3JlIGFjdHVhbCBkYXRhCisgICAgIGNvbm5lY3Rpb25zIGFyZSBtYWRlLCBhbmQgdGhlIG9tbmlfcmVzdWx0c19zdHJ1Y3QgaXMgYWxyZWFkeQorICAgICBmdWxsICovCisgIHVpbnQzMl90ICAgY3B1X2ZyZXF1ZW5jeTsgIC8qIHRoaXMgc2hvdWxkIGJlIG1lZ2FoZXJ0eiAqLworICB1aW50MzJfdCAgIHNlY3VyaXR5X2luZm87CisgIGludDMyX3QgICAgc29ja2V0X3ByaW87CisgIGludDMyX3QgICAgc29ja2V0X3RvczsKKyAgLyogdGhlcmUgYXJlIDE4IGludHMgYWJvdmUgaGVyZSwgYWRkIGFub3RoZXIgYW5kIHlvdSBuZWVkIHRvIGFkanVzdAorICAgICB0aGUgZGVmaW5lIGJlbG93ICovCisjZGVmaW5lIE9NTklfUkVTUE9OU0VfQ09OVl9DVVRPRkYgMTgKKyAgY2hhciAgICAgICBzeXN0ZW1fbW9kZWxbMzNdOworICBjaGFyICAgICAgIGNwdV9tb2RlbFs4MF07ICAvKiBzZWVtcyBsaWtlIGFuIGF3ZnVsIGxvdCBkb2Vzbid0CisJCQkJaXQuIHNvbWUgY2xldmVyIHBlcnNvbiBhdCBJbnRlbAorCQkJCWRlY2lkZWQgdG8gZ2l2ZSBNb250ZWNpdG8gcHJvY2Vzc29ycyBhCisJCQkJbmFtZSB0aGF0IGxvbmcgLSBhbmQgc3RpbGwgZGlkbid0CisJCQkJaW5jbHVkZSB0aGUgOU5OTiBtb2RlbCBudW1iZXIhICovCisgIGNoYXIgICAgICAgc2VjdXJpdHlfc3RyaW5nWzE2XTsKKyAgLyogdG90YWwgc2l6ZW9mIG11c3QgYmUgPD0gTUFYU1BFQ0RBVEEqc2l6ZW9mKGludCkgKi8KK307CisKK3N0cnVjdCBvbW5pX3Jlc3VsdHNfc3RydWN0IHsKKyAgdWludDMyX3QgICBieXRlc19yZWNlaXZlZF9oaTsgIC8qIHdoeT8gYmVjYXVzZSB3ZSBjYW5ub3QgZWFzaWx5IHNlbmQgKi8KKyAgdWludDMyX3QgICBieXRlc19yZWNlaXZlZF9sbzsgIC8qIHVpbnQ2NF90IG9yIGRvdWJsZXMgYmV0d2VlbiBlbmRpYW5lc3MgKi8KKyAgdWludDMyX3QgICByZWN2X2NhbGxzOworICBpbnQzMl90ICAgIHJlY3ZfYnVmX3NpemU7IC8qIFNPX1JDVkJVRiBhdCBlbmQgb2YgdGVzdCAqLworCisgIHVpbnQzMl90ICAgYnl0ZXNfc2VudF9oaTsKKyAgdWludDMyX3QgICBieXRlc19zZW50X2xvOworICB1aW50MzJfdCAgIHNlbmRfY2FsbHM7CisgIGludDMyX3QgICAgc2VuZF9idWZfc2l6ZTsgLyogU09fU05EQlVGIGF0IGVuZCBvZiB0ZXN0ICovCisgIHVpbnQzMl90ICAgZmFpbGVkX3NlbmRzOworICB1aW50MzJfdCAgIHRyYW5zX3JlY2VpdmVkOworCisgIGZsb2F0ICAgICAgZWxhcHNlZF90aW1lOyAgLyogbGVuZ3RoIG9mIHRlc3QgaW4gc2Vjb25kcyAqLworCisgIGZsb2F0ICAgICAgY3B1X3V0aWw7CisgIGZsb2F0ICAgICAgY3B1X3BlcmNlbnRfdXNlcjsKKyAgZmxvYXQgICAgICBjcHVfcGVyY2VudF9zeXN0ZW07CisgIGZsb2F0ICAgICAgY3B1X3BlcmNlbnRfaW93YWl0OworICBmbG9hdCAgICAgIGNwdV9wZXJjZW50X2lycTsKKyAgZmxvYXQgICAgICBjcHVfcGVyY2VudF9zd2ludHI7CisgIGZsb2F0ICAgICAgc2Vydl9kZW07CisgIHVpbnQzMl90ICAgY3B1X21ldGhvZDsgICAgLyogaG93IHdhcyBDUFUgdXRpbCBtZWFzdXJlZD8gKi8KKyAgdWludDMyX3QgICBudW1fY3B1czsgICAgICAvKiBudW1iZXIgb2YgQ1BVcyBpbiByZW1vdGUgKi8KKworICBpbnQzMl90ICAgIHBlYWtfY3B1X2lkOyAgIC8qIElEIG9mIHRoZSBtb3N0IHV0aWxpemVkIENQVSAqLworICBmbG9hdCAgICAgIHBlYWtfY3B1X3V0aWw7IC8qIGl0cyBpbmRpdmlkdWFsIHV0aWxpemF0aW9uICovCisgIGludDMyX3QgICAgdmVuZG9yOworICBpbnQzMl90ICAgIGRldmljZTsgICAgICAgIC8qIHBjaSBkZXZpY2UgaWQgb2YgdGhlIHByb2JhYmxlIGVncmVzcworCQkJICAgICAgIGludGVyZmFjZSAqLworICBpbnQzMl90ICAgIHN1YnZlbmRvcjsKKyAgaW50MzJfdCAgICBzdWJkZXZpY2U7CisgIGludDMyX3QgICAgdHJhbnNwb3J0X3JldHJhbnM7CisgIC8qIHRoZXJlIGFyZSAyNyBpbnRzIGFib3ZlIGhlcmUsIGFkZCBhbm90aGVyIGFuZCB5b3UgbmVlZCB0byBhZGp1c3QKKyAgICAgdGhlIGRlZmluZSBiZWxvdyAqLworICAjZGVmaW5lIE9NTklfUkVTVUxUU19DT05WX0NVVE9GRiAyNworICBjaGFyICAgICAgIGlmbmFtZVsxNl07ICAgIC8qIHRoZSBwcm9iYWJsZSBlZ3Jlc3MgaW50ZXJmYWNlICovCisgIGNoYXIgICAgICAgZHJpdmVyWzMyXTsgICAgLyogc2l6ZSBiYXNlZCBvbiBsaW51eC9ldGh0b29sLmggKi8KKyAgY2hhciAgICAgICB2ZXJzaW9uWzMyXTsKKyAgY2hhciAgICAgICBmaXJtd2FyZVszMl07CisgIGNoYXIgICAgICAgYnVzWzMyXTsKKyAgY2hhciAgICAgICBpZnNsb3RbMTZdOyAgICAvKiBzbG90IGlkIG9mIHRoZSBwcm9iYWJsZSBlZ3Jlc3MgaW50ZXJmYWNlICovCisgIGNoYXIgICAgICAgY29uZ19jb250cm9sWzE2XTsgLyogd2hhdCB0aGUgY29uZ2VzdGlvbiBjb250cm9sIGFsZyB3YXMgKi8KKyAgLyogdG90YWwgc2l6ZW9mIG11c3QgYmUgPD0gTUFYU1BFQ0RBVEEqc2l6ZW9mKGludCkgKi8KK307CisKKyNlbmRpZiAvKiBXQU5UX09NTkkgKi8KKworc3RydWN0CXRjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgeworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQgLSB0aGUgKi8KKwkJCS8qIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciB0aGF0IGlzICovCisgIGludAlyZWNlaXZlX3NpemU7ICAgLyogaG93IG1hbnkgYnl0ZXMgZG8gd2Ugd2FudCB0byByZWNlaXZlIGF0IG9uZSAqLworCQkJLyogdGltZT8gKi8KKyAgaW50CXJlY3ZfYWxpZ25tZW50OyAvKiB3aGF0IGlzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlY2VpdmUgKi8KKwkJCS8qIGJ1ZmZlcj8gKi8KKyAgaW50CXJlY3Zfb2Zmc2V0OyAgICAvKiBhbmQgYXQgd2hhdCBvZmZzZXQgZnJvbSB0aGF0IGFsaWdubWVudD8gKi8KKyAgaW50CW5vX2RlbGF5OyAgICAgICAvKiBkbyB3ZSBkaXNhYmxlIHRoZSBuYWdsZSBhbGdvcml0aG0gZm9yIHNlbmQgKi8KKwkJCS8qIGNvYWxlc2Npbmc/ICovCisgIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdSB1dGlsaXphdGlvbiAqLworCQkJLyogbWVhc3VyZWQ/ICovCisgIGZsb2F0CWNwdV9yYXRlOwkvKiBkbyB3ZSBrbm93IGhvdyBmYXN0IHRoZSBjcHUgaXMgYWxyZWFkeT8gKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIGNvcGllcyBvbiAqLworCQkJLyogcmVjZWl2ZXM/ICovCisgIGludAlzb19zbmRhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHNlbmQgY29waWVzPyAqLworICBpbnQgICBkaXJ0eV9jb3VudDsgICAgLyogaG93IG1hbnkgaW50ZWdlcnMgaW4gdGhlIHJlY2VpdmUgYnVmZmVyICovCisJCQkvKiBzaG91bGQgYmUgbWFkZSBkaXJ0eSBiZWZvcmUgY2FsbGluZyByZWN2PyAqLworICBpbnQgICBjbGVhbl9jb3VudDsgICAgLyogaG93IG1hbnkgaW50ZWdlcnMgc2hvdWxkIGJlIHJlYWQgZnJvbSB0aGUgKi8KKwkJCS8qIHJlY3YgYnVmZmVyIGJlZm9yZSBjYWxsaW5nIHJlY3Y/ICovCisgIGludCAgIHBvcnQ7ICAgICAgICAgICAvKiB0aGUgcG9ydCB0byB3aGljaCB0aGUgcmVjdiBzaWRlIHNob3VsZCBiaW5kCisJCQkgICB0byBhbGxvdyBuZXRwZXJmIHRvIHJ1biB0aHJvdWdoIHRob3NlIGV2aWwKKwkJCSAgIGZpcmV3YWxsIHRoaW5ncyAqLworICBpbnQgICBpcGZhbWlseTsgICAgICAgLyogdGhlIGFkZHJlc3MgZmFtaWx5IG9mIGlwYWRkcmVzcyAqLworfTsKKworc3RydWN0CXRjcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0IHsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KKyAgaW50CXJlY2VpdmVfc2l6ZTsKKyAgaW50CW5vX2RlbGF5OworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzZW5kX2J1Zl9zaXplOworICBpbnQJZGF0YV9wb3J0X251bWJlcjsJLyogY29ubmVjdCB0byBtZSBoZXJlCSovCisgIGZsb2F0CWNwdV9yYXRlOwkJLyogY291bGQgd2UgbWVhc3VyZQkqLworICBpbnQJc29fcmN2YXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgcmVjZWl2ZSBjb3BpZXM/ICovCisgIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KK307CisKK3N0cnVjdCB0Y3Bfc3RyZWFtX3Jlc3VsdHNfc3RydWN0IHsKKyAgZG91YmxlICAgICAgICAgYnl0ZXNfcmVjZWl2ZWQ7CisgIHVuc2lnbmVkIGludAkgcmVjdl9jYWxsczsKKyAgZmxvYXQJICAgICAgICAgZWxhcHNlZF90aW1lOwkvKiBob3cgbG9uZyB0aGUgdGVzdCByYW4gKi8KKyAgZmxvYXQJICAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBmbG9hdAkgICAgICAgICBzZXJ2X2RlbTsJLyogLTEgaWYgbm90IG1lYXN1cmVkICovCisgIGludCAgICAgICAgICAgIGNwdV9tZXRob2Q7ICAgIC8qIGhvdyB3YXMgY3B1IHV0aWwgbWVhc3VyZWQ/ICovCisgIGludCAgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCisgIGludCAgICAgICAgICAgIHJlY3ZfYnVmX3NpemU7IC8qIGhvdyBsYXJnZSB3YXMgaXQgYXQgdGhlIGVuZD8gKi8KKyAgaW50ICAgICAgICAgICAgc2VuZF9idWZfc2l6ZTsgLyogaG93IGxhcmdlIHdhcyBpdCBhdCB0aGUgZW5kPyAqLworfTsKKworc3RydWN0CXRjcF9tYWVydHNfcmVxdWVzdF9zdHJ1Y3QgeworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQgLSB0aGUgKi8KKwkJCS8qIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciB0aGF0IGlzICovCisgIGludAlzZW5kX3NpemU7ICAgICAgLyogaG93IG1hbnkgYnl0ZXMgZG8gd2Ugd2FudCBuZXRzZXJ2ZXIgdG8gc2VuZAorCQkJICAgYXQgb25lIHRpbWU/ICovCisgIGludAlzZW5kX2FsaWdubWVudDsgLyogd2hhdCBpcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBzZW5kICovCisJCQkvKiBidWZmZXI/ICovCisgIGludAlzZW5kX29mZnNldDsgICAgLyogYW5kIGF0IHdoYXQgb2Zmc2V0IGZyb20gdGhhdCBhbGlnbm1lbnQ/ICovCisgIGludAlub19kZWxheTsgICAgICAgLyogZG8gd2UgZGlzYWJsZSB0aGUgbmFnbGUgYWxnb3JpdGhtIGZvciBzZW5kICovCisJCQkvKiBjb2FsZXNjaW5nPyAqLworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUgdXRpbGl6YXRpb24gKi8KKwkJCS8qIG1lYXN1cmVkPyAqLworICBmbG9hdAljcHVfcmF0ZTsJLyogZG8gd2Uga25vdyBob3cgZmFzdCB0aGUgY3B1IGlzIGFscmVhZHk/ICovCisgIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLworICBpbnQJc29fcmN2YXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBjb3BpZXMgb24gKi8KKwkJCS8qIHJlY2VpdmVzPyAqLworICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KKyAgaW50ICAgZGlydHlfY291bnQ7ICAgIC8qIGhvdyBtYW55IGludGVnZXJzIGluIHRoZSBzZW5kIGJ1ZmZlciAqLworCQkJLyogc2hvdWxkIGJlIG1hZGUgZGlydHkgYmVmb3JlIGNhbGxpbmcgcmVjdj8gKi8KKyAgaW50ICAgY2xlYW5fY291bnQ7ICAgIC8qIGhvdyBtYW55IGludGVnZXJzIHNob3VsZCBiZSByZWFkIGZyb20gdGhlICovCisJCQkvKiByZWN2IGJ1ZmZlciBiZWZvcmUgY2FsbGluZyByZWN2PyAqLworICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAorCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCisJCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KKyAgaW50ICAgaXBmYW1pbHk7Cit9OworCitzdHJ1Y3QJdGNwX21hZXJ0c19yZXNwb25zZV9zdHJ1Y3QgeworICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLworICBpbnQJc2VuZF9zaXplOworICBpbnQJbm9fZGVsYXk7CisgIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLworICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KKyAgaW50CXNlbmRfYnVmX3NpemU7CisgIGludAlkYXRhX3BvcnRfbnVtYmVyOwkvKiBjb25uZWN0IHRvIG1lIGhlcmUJKi8KKyAgZmxvYXQJY3B1X3JhdGU7CQkvKiBjb3VsZCB3ZSBtZWFzdXJlCSovCisgIGludAlzb19yY3Zhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCByZWNlaXZlIGNvcGllcz8gKi8KKyAgaW50CXNvX3NuZGF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHNlbmQgY29waWVzPyAqLworfTsKKworc3RydWN0IHRjcF9tYWVydHNfcmVzdWx0c19zdHJ1Y3QgeworICBkb3VibGUgICAgICAgICBieXRlc19zZW50OworICB1bnNpZ25lZCBpbnQJIHNlbmRfY2FsbHM7CisgIGZsb2F0CSAgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCisgIGZsb2F0CSAgICAgICAgIGNwdV91dGlsOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KKyAgZmxvYXQJICAgICAgICAgc2Vydl9kZW07CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBpbnQgICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLworICBpbnQgICAgICAgICAgICBudW1fY3B1czsgICAgICAvKiBob3cgbWFueSBDUFVzIGhhZCB0aGUgcmVtb3RlPyAqLworfTsKKworc3RydWN0CXRjcF9ycl9yZXF1ZXN0X3N0cnVjdCB7CisgIGludAlyZWN2X2J1Zl9zaXplOwkvKiBob3cgYmlnIGRvZXMgdGhlIGNsaWVudCB3YW50IGl0CSovCisgIGludAlzZW5kX2J1Zl9zaXplOworICBpbnQJcmVjdl9hbGlnbm1lbnQ7CisgIGludAlyZWN2X29mZnNldDsKKyAgaW50CXNlbmRfYWxpZ25tZW50OworICBpbnQJc2VuZF9vZmZzZXQ7CisgIGludAlyZXF1ZXN0X3NpemU7CisgIGludAlyZXNwb25zZV9zaXplOworICBpbnQJbm9fZGVsYXk7CisgIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLworICBmbG9hdAljcHVfcmF0ZTsJLyogZG8gd2Uga25vdyBob3cgZmFzdCB0aGUgY3B1IGlzPwkqLworICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KKyAgaW50CXNvX3JjdmF2b2lkOyAgICAvKiBkbyB3ZSB3YW50IHRoZSByZW1vdGUgdG8gYXZvaWQgcmVjZWl2ZSAqLworCQkJLyogY29waWVzPyAqLworICBpbnQJc29fc25kYXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCBzZW5kIGNvcGllcz8gKi8KKyAgaW50ICAgcG9ydDsgICAgICAgICAgIC8qIHRoZSBwb3J0IHRvIHdoaWNoIHRoZSByZWN2IHNpZGUgc2hvdWxkIGJpbmQKKwkJCSAgIHRvIGFsbG93IG5ldHBlcmYgdG8gcnVuIHRocm91Z2ggdGhvc2UgZXZpbAorCQkJICAgZmlyZXdhbGwgdGhpbmdzICovCisgIGludCAgIGlwZmFtaWx5OworfTsKKworc3RydWN0CXRjcF9ycl9yZXNwb25zZV9zdHJ1Y3QgeworICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLworICBpbnQJbm9fZGVsYXk7CisgIGludAltZWFzdXJlX2NwdTsJLyogZG9lcyB0aGUgY2xpZW50IHdhbnQgc2VydmVyIGNwdQkqLworICBpbnQJdGVzdF9sZW5ndGg7CS8qIGhvdyBsb25nIGlzIHRoZSB0ZXN0PwkJKi8KKyAgaW50CXNlbmRfYnVmX3NpemU7CisgIGludAlkYXRhX3BvcnRfbnVtYmVyOwkvKiBjb25uZWN0IHRvIG1lIGhlcmUJKi8KKyAgZmxvYXQJY3B1X3JhdGU7CQkvKiBjb3VsZCB3ZSBtZWFzdXJlCSovCisgIGludAlzb19yY3Zhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCByZWNlaXZlIGNvcGllcz8gKi8KKyAgaW50CXNvX3NuZGF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHNlbmQgY29waWVzPyAqLworfTsKKworc3RydWN0IHRjcF9ycl9yZXN1bHRzX3N0cnVjdCB7CisgIHVuc2lnbmVkIGludCAgYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCisgIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLworICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLworICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCisgIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KKyAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLworICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCit9OworCitzdHJ1Y3QJdGNwX2Nvbm5fcnJfcmVxdWVzdF9zdHJ1Y3QgeworICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CXJlY3ZfYWxpZ25tZW50OworICBpbnQJcmVjdl9vZmZzZXQ7CisgIGludAlzZW5kX2FsaWdubWVudDsKKyAgaW50CXNlbmRfb2Zmc2V0OworICBpbnQJcmVxdWVzdF9zaXplOworICBpbnQJcmVzcG9uc2Vfc2l6ZTsKKyAgaW50CW5vX2RlbGF5OworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KKyAgZmxvYXQJY3B1X3JhdGU7CS8qIGRvIHdlIGtub3cgaG93IGZhc3QgdGhlIGNwdSBpcz8JKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHJlY2VpdmUgKi8KKwkJCS8qIGNvcGllcz8gKi8KKyAgaW50CXNvX3NuZGF2b2lkOyAgICAvKiBkbyB3ZSB3YW50IHRoZSByZW1vdGUgdG8gYXZvaWQgc2VuZCBjb3BpZXM/ICovCisgIGludCAgIHBvcnQ7ICAgICAgICAgICAvKiB0aGUgcG9ydCB0byB3aGljaCB0aGUgcmVjdiBzaWRlIHNob3VsZCBiaW5kCisJCQkgICB0byBhbGxvdyBuZXRwZXJmIHRvIHJ1biB0aHJvdWdoIHRob3NlIGV2aWwKKwkJCSAgIGZpcmV3YWxsIHRoaW5ncyAqLworICBpbnQgICBpcGZhbWlseTsKK307CisKKworc3RydWN0CXRjcF9jb25uX3JyX3Jlc3BvbnNlX3N0cnVjdCB7CisgIGludAlyZWN2X2J1Zl9zaXplOwkvKiBob3cgYmlnIGRvZXMgdGhlIGNsaWVudCB3YW50IGl0CSovCisgIGludAlub19kZWxheTsKKyAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCisgIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CWRhdGFfcG9ydF9udW1iZXI7CS8qIGNvbm5lY3QgdG8gbWUgaGVyZQkqLworICBmbG9hdAljcHVfcmF0ZTsJCS8qIGNvdWxkIHdlIG1lYXN1cmUJKi8KKyAgaW50CXNvX3JjdmF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHJlY2VpdmUgY29waWVzPyAqLworICBpbnQJc29fc25kYXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgc2VuZCBjb3BpZXM/ICovCit9OworCitzdHJ1Y3QgdGNwX2Nvbm5fcnJfcmVzdWx0c19zdHJ1Y3QgeworICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCisgIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLworICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLworICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCisgIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KKyAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLworICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCit9OworCitzdHJ1Y3QJdGNwX3RyYW5fcnJfcmVxdWVzdF9zdHJ1Y3QgeworICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CXJlY3ZfYWxpZ25tZW50OworICBpbnQJcmVjdl9vZmZzZXQ7CisgIGludAlzZW5kX2FsaWdubWVudDsKKyAgaW50CXNlbmRfb2Zmc2V0OworICBpbnQJcmVxdWVzdF9zaXplOworICBpbnQJcmVzcG9uc2Vfc2l6ZTsKKyAgaW50CW5vX2RlbGF5OworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KKyAgZmxvYXQJY3B1X3JhdGU7CS8qIGRvIHdlIGtub3cgaG93IGZhc3QgdGhlIGNwdSBpcz8JKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHJlY2VpdmUgKi8KKwkJCS8qIGNvcGllcz8gKi8KKyAgaW50CXNvX3NuZGF2b2lkOyAgICAvKiBkbyB3ZSB3YW50IHRoZSByZW1vdGUgdG8gYXZvaWQgc2VuZCBjb3BpZXM/ICovCisgIGludCAgIHBvcnQ7ICAgICAgICAgICAvKiB0aGUgcG9ydCB0byB3aGljaCB0aGUgcmVjdiBzaWRlIHNob3VsZCBiaW5kCisJCQkgICB0byBhbGxvdyBuZXRwZXJmIHRvIHJ1biB0aHJvdWdoIHRob3NlIGV2aWwKKwkJCSAgIGZpcmV3YWxsIHRoaW5ncyAqLworICBpbnQgICBpcGZhbWlseTsKK307CisKKworc3RydWN0CXRjcF90cmFuX3JyX3Jlc3BvbnNlX3N0cnVjdCB7CisgIGludAlyZWN2X2J1Zl9zaXplOwkvKiBob3cgYmlnIGRvZXMgdGhlIGNsaWVudCB3YW50IGl0CSovCisgIGludAlub19kZWxheTsKKyAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCisgIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CWRhdGFfcG9ydF9udW1iZXI7CS8qIGNvbm5lY3QgdG8gbWUgaGVyZQkqLworICBmbG9hdAljcHVfcmF0ZTsJCS8qIGNvdWxkIHdlIG1lYXN1cmUJKi8KKyAgaW50CXNvX3JjdmF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHJlY2VpdmUgY29waWVzPyAqLworICBpbnQJc29fc25kYXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgc2VuZCBjb3BpZXM/ICovCit9OworCitzdHJ1Y3QgdGNwX3RyYW5fcnJfcmVzdWx0c19zdHJ1Y3QgeworICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCisgIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLworICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLworICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCisgIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KKyAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLworICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCisKK307CisKK3N0cnVjdAl1ZHBfc3RyZWFtX3JlcXVlc3Rfc3RydWN0IHsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CisgIGludAltZXNzYWdlX3NpemU7CisgIGludCAgIHJlY3ZfY29ubmVjdGVkOworICBpbnQJcmVjdl9hbGlnbm1lbnQ7CisgIGludAlyZWN2X29mZnNldDsKKyAgaW50CWNoZWNrc3VtX29mZjsKKyAgaW50CW1lYXN1cmVfY3B1OworICBmbG9hdAljcHVfcmF0ZTsKKyAgaW50CXRlc3RfbGVuZ3RoOworICBpbnQJc29fcmN2YXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCByZWNlaXZlICovCisJCQkvKiBjb3BpZXM/ICovCisgIGludAlzb19zbmRhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHNlbmQgY29waWVzPyAqLworICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAorCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCisJCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KKyAgaW50ICAgaXBmYW1pbHk7CisKK307CisKK3N0cnVjdAl1ZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCB7CisgIGludAlyZWN2X2J1Zl9zaXplOworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CW1lYXN1cmVfY3B1OworICBpbnQJdGVzdF9sZW5ndGg7CisgIGludAlkYXRhX3BvcnRfbnVtYmVyOworICBmbG9hdAljcHVfcmF0ZTsKKyAgaW50CXNvX3JjdmF2b2lkOwkvKiBjb3VsZCB0aGUgcmVtb3RlIGF2b2lkIHJlY2VpdmUgY29waWVzPyAqLworICBpbnQJc29fc25kYXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgc2VuZCBjb3BpZXM/ICovCit9OworCitzdHJ1Y3QJdWRwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCB7CisgIHVuc2lnbmVkIGludAltZXNzYWdlc19yZWN2ZDsKKyAgdW5zaWduZWQgaW50CWJ5dGVzX3JlY2VpdmVkOworICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsKKyAgZmxvYXQJICAgICAgICBjcHVfdXRpbDsKKyAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLworICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCit9OworCisKK3N0cnVjdAl1ZHBfcnJfcmVxdWVzdF9zdHJ1Y3QgeworICBpbnQJcmVjdl9idWZfc2l6ZTsJLyogaG93IGJpZyBkb2VzIHRoZSBjbGllbnQgd2FudCBpdAkqLworICBpbnQJc2VuZF9idWZfc2l6ZTsKKyAgaW50CXJlY3ZfYWxpZ25tZW50OworICBpbnQJcmVjdl9vZmZzZXQ7CisgIGludAlzZW5kX2FsaWdubWVudDsKKyAgaW50CXNlbmRfb2Zmc2V0OworICBpbnQJcmVxdWVzdF9zaXplOworICBpbnQJcmVzcG9uc2Vfc2l6ZTsKKyAgaW50CW5vX2RlbGF5OworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KKyAgZmxvYXQJY3B1X3JhdGU7CS8qIGRvIHdlIGtub3cgaG93IGZhc3QgdGhlIGNwdSBpcz8JKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzb19yY3Zhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHJlY2VpdmUgKi8KKwkJCS8qIGNvcGllcz8gKi8KKyAgaW50CXNvX3NuZGF2b2lkOyAgICAvKiBkbyB3ZSB3YW50IHRoZSByZW1vdGUgdG8gYXZvaWQgc2VuZCBjb3BpZXM/ICovCisgIGludCAgIHBvcnQ7ICAgICAgICAgICAvKiB0aGUgcG9ydCB0byB3aGljaCB0aGUgcmVjdiBzaWRlIHNob3VsZCBiaW5kCisJCQkgICB0byBhbGxvdyBuZXRwZXJmIHRvIHJ1biB0aHJvdWdoIHRob3NlIGV2aWwKKwkJCSAgIGZpcmV3YWxsIHRoaW5ncyAqLworICBpbnQgICBpcGZhbWlseTsKK307CisKK3N0cnVjdAl1ZHBfcnJfcmVzcG9uc2Vfc3RydWN0IHsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KKyAgaW50CW5vX2RlbGF5OworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzZW5kX2J1Zl9zaXplOworICBpbnQJZGF0YV9wb3J0X251bWJlcjsJLyogY29ubmVjdCB0byBtZSBoZXJlCSovCisgIGZsb2F0CWNwdV9yYXRlOwkJLyogY291bGQgd2UgbWVhc3VyZQkqLworICBpbnQJc29fcmN2YXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgcmVjZWl2ZSBjb3BpZXM/ICovCisgIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KK307CisKK3N0cnVjdCB1ZHBfcnJfcmVzdWx0c19zdHJ1Y3QgeworICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCisgIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLworICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLworICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCisgIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KKyAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAvKiBob3cgd2FzIGNwdSB1dGlsIG1lYXN1cmVkPyAqLworICBpbnQgICAgICAgICAgIG51bV9jcHVzOyAgICAgIC8qIGhvdyBtYW55IENQVXMgaGFkIHRoZSByZW1vdGU/ICovCit9OworCitzdHJ1Y3QJdGNwX2NjX3JlcXVlc3Rfc3RydWN0IHsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KKyAgaW50CXNlbmRfYnVmX3NpemU7CisgIGludAlyZWN2X2FsaWdubWVudDsKKyAgaW50CXJlY3Zfb2Zmc2V0OworICBpbnQJc2VuZF9hbGlnbm1lbnQ7CisgIGludAlzZW5kX29mZnNldDsKKyAgaW50CXJlcXVlc3Rfc2l6ZTsKKyAgaW50CXJlc3BvbnNlX3NpemU7CisgIGludAlub19kZWxheTsKKyAgaW50CW1lYXN1cmVfY3B1OwkvKiBkb2VzIHRoZSBjbGllbnQgd2FudCBzZXJ2ZXIgY3B1CSovCisgIGZsb2F0CWNwdV9yYXRlOwkvKiBkbyB3ZSBrbm93IGhvdyBmYXN0IHRoZSBjcHUgaXM/CSovCisgIGludAl0ZXN0X2xlbmd0aDsJLyogaG93IGxvbmcgaXMgdGhlIHRlc3Q/CQkqLworICBpbnQJc29fcmN2YXZvaWQ7ICAgIC8qIGRvIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBhdm9pZCByZWNlaXZlICovCisJCQkvKiBjb3BpZXM/ICovCisgIGludAlzb19zbmRhdm9pZDsgICAgLyogZG8gd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGF2b2lkIHNlbmQgY29waWVzPyAqLworICBpbnQgICBwb3J0OyAgICAgICAgICAgLyogdGhlIHBvcnQgdG8gd2hpY2ggdGhlIHJlY3Ygc2lkZSBzaG91bGQgYmluZAorCQkJICAgdG8gYWxsb3cgbmV0cGVyZiB0byBydW4gdGhyb3VnaCB0aG9zZSBldmlsCisJCQkgICBmaXJld2FsbCB0aGluZ3MgKi8KKyAgaW50ICAgaXBmYW1pbHk7Cit9OworCisKK3N0cnVjdAl0Y3BfY2NfcmVzcG9uc2Vfc3RydWN0IHsKKyAgaW50CXJlY3ZfYnVmX3NpemU7CS8qIGhvdyBiaWcgZG9lcyB0aGUgY2xpZW50IHdhbnQgaXQJKi8KKyAgaW50CW5vX2RlbGF5OworICBpbnQJbWVhc3VyZV9jcHU7CS8qIGRvZXMgdGhlIGNsaWVudCB3YW50IHNlcnZlciBjcHUJKi8KKyAgaW50CXRlc3RfbGVuZ3RoOwkvKiBob3cgbG9uZyBpcyB0aGUgdGVzdD8JCSovCisgIGludAlzZW5kX2J1Zl9zaXplOworICBpbnQJZGF0YV9wb3J0X251bWJlcjsJLyogY29ubmVjdCB0byBtZSBoZXJlCSovCisgIGZsb2F0CWNwdV9yYXRlOwkJLyogY291bGQgd2UgbWVhc3VyZQkqLworICBpbnQJc29fcmN2YXZvaWQ7CS8qIGNvdWxkIHRoZSByZW1vdGUgYXZvaWQgcmVjZWl2ZSBjb3BpZXM/ICovCisgIGludAlzb19zbmRhdm9pZDsJLyogY291bGQgdGhlIHJlbW90ZSBhdm9pZCBzZW5kIGNvcGllcz8gKi8KK307CisKK3N0cnVjdCB0Y3BfY2NfcmVzdWx0c19zdHJ1Y3QgeworICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQ7CS8qIGlnbm9yZWQgaW5pdGlhbGx5ICovCisgIHVuc2lnbmVkIGludAlyZWN2X2NhbGxzOwkvKiBpZ25vcmVkIGluaXRpYWxseSAqLworICB1bnNpZ25lZCBpbnQJdHJhbnNfcmVjZWl2ZWQ7CS8qIG5vdCBpZ25vcmVkICAqLworICBmbG9hdAkgICAgICAgIGVsYXBzZWRfdGltZTsJLyogaG93IGxvbmcgdGhlIHRlc3QgcmFuICovCisgIGZsb2F0CSAgICAgICAgY3B1X3V0aWw7CS8qIC0xIGlmIG5vdCBtZWFzdXJlZCAqLworICBmbG9hdAkgICAgICAgIHNlcnZfZGVtOwkvKiAtMSBpZiBub3QgbWVhc3VyZWQgKi8KKyAgaW50ICAgICAgICAgICBjcHVfbWV0aG9kOyAgICAgLyogaG93IHdhcyBjcHUgdXRpbCBtZWFzdXJlZD8gKi8KKyAgaW50ICAgICAgICAgICBudW1fY3B1czsgICAgICAgLyogaG93IG1hbnkgQ1BVcyBoYWQgdGhlIHJlbW90ZT8gKi8KK307CisKK2V4dGVybiBpbnQKKyAgc29ja2V0X3R5cGUsICAgICAgLyogaW5pdGlhbGx5IHVzZWQgYnkgdGhlICJvbW5pIiB0ZXN0cyAqLworICByc3Nfc2l6ZV9yZXEsICAgICAvKiByZXF1ZXN0ZWQgcmVtb3RlIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplICovCisgIHJzcl9zaXplX3JlcSwgICAgIC8qIHJlcXVlc3RlZCByZW1vdGUgc29ja2V0IHJlY3YgYnVmZmVyIHNpemUgKi8KKyAgcnNzX3NpemUsICAgICAgICAgLyogcmVtb3RlIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplICovCisgIHJzcl9zaXplLCAgICAgICAgIC8qIHJlbW90ZSBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZSAqLworICByc3Jfc2l6ZV9lbmQsCisgIHJzc19zaXplX2VuZCwKKyAgbHNzX3NpemVfcmVxLCAgICAgLyogcmVxdWVzdGVkIGxvY2FsIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplICovCisgIGxzcl9zaXplX3JlcSwgICAgIC8qIHJlcXVlc3RlZCBsb2NhbCBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZSAqLworICBsc3Nfc2l6ZSwgICAgICAgICAvKiBsb2NhbCAgc29ja2V0IHNlbmQgYnVmZmVyIHNpemUgKi8KKyAgbHNyX3NpemUsICAgICAgICAgLyogbG9jYWwgIHNvY2tldCByZWN2IGJ1ZmZlciBzaXplICovCisgIGxzc19zaXplX2VuZCwKKyAgbHNyX3NpemVfZW5kLAorICByZXFfc2l6ZSwgICAgICAgICAvKiByZXF1ZXN0IHNpemUgKi8KKyAgcnNwX3NpemUsICAgICAgICAgLyogcmVzcG9uc2Ugc2l6ZSAqLworICBzZW5kX3NpemUsICAgICAgICAvKiBob3cgYmlnIGFyZSBpbmRpdmlkdWFsIHNlbmRzICovCisgIHJlY3Zfc2l6ZSwgICAgICAgIC8qIGhvdyBiaWcgYXJlIGluZGl2aWR1YWwgcmVjZWl2ZXMgKi8KKyAgbG9jX25vZGVsYXksICAgICAgLyogZG9uJ3QvZG8gdXNlIE5PREVMQVkgbG9jYWxseSAqLworICByZW1fbm9kZWxheSwgICAgICAvKiBkb24ndC9kbyB1c2UgTk9ERUxBWSByZW1vdGVseSAqLworICBsb2Nfc25kYXZvaWQsICAgICAvKiBhdm9pZCBzZW5kIGNvcGllcyBsb2NhbGx5ICovCisgIGxvY19yY3Zhdm9pZCwgICAgIC8qIGF2b2lkIHJlY3YgY29waWVzIGxvY2FsbHkgKi8KKyAgcmVtX3NuZGF2b2lkLCAgICAgLyogYXZvaWQgc2VuZCBjb3BpZXMgcmVtb3RlbHkgKi8KKyAgcmVtX3JjdmF2b2lkLCAgICAgLyogYXZvaWQgcmVjdl9jb3BpZXMgcmVtb3RlbHkgKi8KKyAgcm91dGluZ19hbGxvd2VkLCAgLyogZG8gd2Ugc2V0L2NsZWFyIFNPX0RPTlRST1VURSBvbiBkYXRhIHNvY2sgKi8KKyAgbXVsdGljYXN0X3R0bCwgICAgLyogd2hhdCBzaG91bGQgdGhlIFRUTCBiZSBvbiBtY2FzdCBkZ3JhbXMgKi8KKyAgd2FudF9rZWVwYWxpdmUsICAgLyogZG8gd2UgYm90aGVyIHNldHRpbmcgU09fS0VFUEFMSVZFPyAqLworICB0cmFuc3BvcnRfbXNzX3JlcTsKKworI2lmZGVmIFdBTlRfT01OSQorZXh0ZXJuIHZvaWQgc2Nhbl9vbW5pX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CisjZW5kaWYKK2V4dGVybiB2b2lkIHNjYW5fc29ja2V0c19hcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pOworZXh0ZXJuIHN0cnVjdCBhZGRyaW5mbyAqY29tcGxldGVfYWRkcmluZm8oY2hhciAqY29udHJvbGhvc3QsCisJCQkJICAgY2hhciAqZGF0YV9hZGRyZXNzLAorCQkJCSAgIGNoYXIgKnBvcnQsCisJCQkJICAgaW50IGZhbWlseSwKKwkJCQkgICBpbnQgdHlwZSwKKwkJCQkgICBpbnQgcHJvdG9jb2wsCisJCQkJICAgaW50IGZsYWdzKTsKK2V4dGVybiB2b2lkIGNvbXBsZXRlX2FkZHJpbmZvcyhzdHJ1Y3QgYWRkcmluZm8gKipyZW1vdGUsCisJCQkgICAgICAgc3RydWN0IGFkZHJpbmZvICoqbG9jYWwsCisJCQkgICAgICAgY2hhciByZW1vdGVfaG9zdFtdLAorCQkJICAgICAgIGludCB0eXBlLAorCQkJICAgICAgIGludCBwcm90b2NvbCwKKwkJCSAgICAgICBpbnQgZmxhZ3MpOworZXh0ZXJuIGludCBhZl90b19uZihpbnQgYWYpOworZXh0ZXJuIGludCBuZl90b19hZihpbnQgbmYpOworZXh0ZXJuIGludCBuc3RfdG9faHN0KGludCBuc3QpOworZXh0ZXJuIGludCBoc3RfdG9fbnN0KGludCBoc3QpOworZXh0ZXJuIGNoYXIgKmhzdF90b19zdHIoaW50IGhzdCk7CitleHRlcm4gY2hhciAqcHJvdG9jb2xfdG9fc3RyKGludCBwcm90b2NvbCk7CitleHRlcm4gdm9pZCBwcmludF90b3BfdGVzdF9oZWFkZXIoY2hhciB0ZXN0X25hbWVbXSwKKwkJCQkgIHN0cnVjdCBhZGRyaW5mbyAqc291cmNlLAorCQkJCSAgc3RydWN0IGFkZHJpbmZvICpkZXN0aW5hdGlvbik7CitleHRlcm4gdm9pZCBzZXRfcG9ydF9udW1iZXIoc3RydWN0IGFkZHJpbmZvICpyZXMsCisJCQkgICAgdW5zaWduZWQgc2hvcnQgcG9ydCk7CitleHRlcm4gdm9pZCBzZXRfaG9zdG5hbWVfYW5kX3BvcnQoY2hhciAqaG9zdG5hbWUsCisJCQkJICBjaGFyICpwb3J0c3RyLAorCQkJCSAgaW50IGZhbWlseSwKKwkJCQkgIGludCBwb3J0KTsKK2V4dGVybiB2b2lkIHNldF9zb2NrYWRkcl9mYW1pbHlfYWRkcl9wb3J0KHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpzb2NrYWRkciwKKwkJCQkJICBpbnQgZmFtaWx5LAorCQkJCQkgIHZvaWQgKmFkZHIsCisJCQkJCSAgaW50IHBvcnQpOworZXh0ZXJuIGludCAgZ2V0X3NvY2thZGRyX2ZhbWlseV9hZGRyX3BvcnQoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNvY2thZGRyLAorCQkJCQkgIGludCBmYW1pbHksCisJCQkJCSAgdm9pZCAqYWRkciwKKwkJCQkJICBpbnQgKnBvcnQpOworZXh0ZXJuIHZvaWQgc2VuZF90Y3BfbXNzKGNoYXIgcmVtb3RlX2hvc3RbXSk7CitleHRlcm4gdm9pZCBzZW5kX3RjcF9zdHJlYW0oY2hhciByZW1vdGVfaG9zdFtdKTsKK2V4dGVybiB2b2lkIHNlbmRfdGNwX21hZXJ0cyhjaGFyIHJlbW90ZV9ob3N0W10pOworZXh0ZXJuIHZvaWQgc2VuZF90Y3BfcnIoY2hhciByZW1vdGVfaG9zdFtdKTsKK2V4dGVybiB2b2lkIHNlbmRfdGNwX2Nvbm5fcnIoY2hhciByZW1vdGVfaG9zdFtdKTsKK2V4dGVybiB2b2lkIHNlbmRfdGNwX2NjKGNoYXIgcmVtb3RlX2hvc3RbXSk7CitleHRlcm4gdm9pZCBzZW5kX3VkcF9zdHJlYW0oY2hhciByZW1vdGVfaG9zdFtdKTsKK2V4dGVybiB2b2lkIHNlbmRfdWRwX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSk7CisKK2V4dGVybiB2b2lkIHNlbmRfb21uaShjaGFyIHJlbW90ZV9ob3N0W10pOworZXh0ZXJuIHZvaWQgcHJpbnRfdXVpZChjaGFyIHJlbW90ZV9ob3N0W10pOworZXh0ZXJuIHZvaWQgcmVjdl9vbW5pKCk7CisKK2V4dGVybiB2b2lkIHJlY3ZfdGNwX3N0cmVhbSgpOworZXh0ZXJuIHZvaWQgcmVjdl90Y3BfbWFlcnRzKCk7CitleHRlcm4gdm9pZCByZWN2X3RjcF9ycigpOworZXh0ZXJuIHZvaWQgcmVjdl90Y3BfY29ubl9ycigpOworZXh0ZXJuIHZvaWQgcmVjdl90Y3BfY2MoKTsKK2V4dGVybiB2b2lkIHJlY3ZfdWRwX3N0cmVhbSgpOworZXh0ZXJuIHZvaWQgcmVjdl91ZHBfcnIoKTsKKworZXh0ZXJuIHZvaWQgbG9jX2NwdV9yYXRlKCk7CitleHRlcm4gdm9pZCByZW1fY3B1X3JhdGUoKTsKKworI2lmZGVmIEhBVkVfSUNTQ19FWFMKK2V4dGVybiB2b2lkIHNlbmRfZXhzX3RjcF9zdHJlYW0oY2hhciByZW1vdGVob3N0W10pOworI2VuZGlmIC8qIEhBVkVfSUNTQ19FWFMgKi8KKworI2lmZGVmIEhBVkVfU0VOREZJTEUKK2V4dGVybiB2b2lkIHNlbmRmaWxlX3RjcF9zdHJlYW0oY2hhciByZW1vdGVob3N0W10pOworI2VuZGlmIC8qIEhBVkVfU0VOREZJTEUgKi8KKworI2lmICFkZWZpbmVkKEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0UpICYmICFkZWZpbmVkKHNvY2thZGRyX3N0b3JhZ2UpCisjZGVmaW5lIHNvY2thZGRyX3N0b3JhZ2Ugc29ja2FkZHJfaW4KKyNlbmRpZgorCisjaWZkZWYgRE9fTkJSUgorZXh0ZXJuIHZvaWQgc2VuZF90Y3BfbmJycihjaGFyIHJlbW90ZV9ob3N0W10pOworCitleHRlcm4gdm9pZCByZWN2X3RjcF9uYnJyKCk7CisjZW5kaWYKKworZXh0ZXJuIFNPQ0tFVCBjcmVhdGVfZGF0YV9zb2NrZXQoc3RydWN0IGFkZHJpbmZvICpyZXMpOwpkaWZmIC0tZ2l0IGEvbmV0dGVzdF9kbHBpLmMgYi9zcmMvbmV0dGVzdF9kbHBpLmMKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gbmV0dGVzdF9kbHBpLmMKcmVuYW1lIHRvIHNyYy9uZXR0ZXN0X2RscGkuYwppbmRleCBhYjNlNzlmLi5iOTNmOTE3IDEwMDY0NAotLS0gYS9uZXR0ZXN0X2RscGkuYworKysgYi9zcmMvbmV0dGVzdF9kbHBpLmMKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmZGVmIFdBTlRfRExQSQogY2hhcgluZXR0ZXN0X2RscGlfaWRbXT0iXAotQCgjKW5ldHRlc3RfZGxwaS5jIChjKSBDb3B5cmlnaHQgMTk5MywxOTk1LDIwMDQgSGV3bGV0dC1QYWNrYXJkIENvLiBWZXJzaW9uIDIuNC4zIjsKK0AoIyluZXR0ZXN0X2RscGkuYyAoYykgQ29weXJpZ2h0IDE5OTMtMjAxMiBIZXdsZXR0LVBhY2thcmQgQ28uIFZlcnNpb24gMi42LjAiOwogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTQ4LDEwICs0OCwxNiBAQAogI2luY2x1ZGUgIm5ldHNoLmgiCiAjaW5jbHVkZSAibmV0dGVzdF9kbHBpLmgiCiAMCisvKiBzb21lIHN0dWZmIGZvciBETFBJIGNvbnRyb2wgbWVzc2FnZXMgKi8KKyNkZWZpbmUgRExQSV9EQVRBX1NJWkUgMjA0OAorCit1bnNpZ25lZCBsb25nIGNvbnRyb2xfZGF0YVtETFBJX0RBVEFfU0laRV07CitzdHJ1Y3Qgc3RyYnVmIGNvbnRyb2xfbWVzc2FnZSA9IHtETFBJX0RBVEFfU0laRSwgMCwgKGNoYXIgKiljb250cm9sX2RhdGF9OworCiAvKiB0aGVzZSBhcmUgc29tZSB2YXJpYWJsZXMgZ2xvYmFsIHRvIGFsbCB0aGUgRExQSSB0ZXN0cy4gZGVjbGFyZSAqLwogLyogdGhlbSBzdGF0aWMgdG8gbWFrZSB0aGVtIGdsb2JhbCBvbmx5IHRvIHRoaXMgZmlsZSAqLwogCi1zdGF0aWMgaW50IAorc3RhdGljIGludAogICByc3dfc2l6ZSwJCS8qIHJlbW90ZSBzZW5kIHdpbmRvdyBzaXplCSovCiAgIHJyd19zaXplLAkJLyogcmVtb3RlIHJlY3Ygd2luZG93IHNpemUJKi8KICAgbHN3X3NpemUsCQkvKiBsb2NhbCAgc2VuZCB3aW5kb3cgc2l6ZSAJKi8KQEAgLTkwLDcgKzk2LDI0MSBAQAogdmFsdWUsIHNwZWNpZnlpbmcgYSB2YWx1ZSB3aXRoIGEgbGVhZGluZyBjb21tYSB3aWxsIHNldCBqdXN0IHRoZSBzZWNvbmRcblwKIHBhcm0sIGEgdmFsdWUgd2l0aCBhIHRyYWlsaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIGZpcnN0LiBUbyBzZXRcblwKIGVhY2ggcGFybSB0byB1bmlxdWUgdmFsdWVzLCBzcGVjaWZ5IGJvdGggYW5kIHNlcGFyYXRlIHRoZW0gd2l0aCBhXG5cCi1jb21tYS5cbiI7IAorY29tbWEuXG4iOworCisMCisKKy8qIHJvdXRpbmVzIHRoYXQgdXNlZCB0byBiZSBpbiBzcmMvbmV0bGliLmMgYnV0IHRoaXMgY29kZSBpcyB0aGUgb25seQorICAgY29kZSB0aGF0IHVzZXMgdGhlbS4gcmFqIDIwMTEwMTExICovCisKKworaW50CitwdXRfY29udHJvbChmZCwgbGVuLCBwcmksIGFjaykKKyAgICAgaW50IGZkLCBsZW4sIHByaSwgYWNrOworeworICBpbnQgZXJyb3I7CisgIGludCBmbGFncyA9IDA7CisgIGRsX2Vycm9yX2Fja190ICplcnJfYWNrID0gKGRsX2Vycm9yX2Fja190ICopY29udHJvbF9kYXRhOworCisgIGNvbnRyb2xfbWVzc2FnZS5sZW4gPSBsZW47CisKKyAgaWYgKChlcnJvciA9IHB1dG1zZyhmZCwgJmNvbnRyb2xfbWVzc2FnZSwgMCwgcHJpKSkgPCAwICkgeworICAgIGZwcmludGYod2hlcmUsInB1dF9jb250cm9sOiBwdXRtc2cgZXJyb3IgJWRcbiIsZXJyb3IpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgcmV0dXJuKC0xKTsKKyAgfQorICBpZiAoKGVycm9yID0gZ2V0bXNnKGZkLCAmY29udHJvbF9tZXNzYWdlLCAwLCAmZmxhZ3MpKSA8IDApIHsKKyAgICBmcHJpbnRmKHdoZXJlLCJwdXRfY29udHJvbDogZ2V0c21nIGVycm9yICVkXG4iLGVycm9yKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIHJldHVybigtMSk7CisgIH0KKyAgaWYgKGVycl9hY2stPmRsX3ByaW1pdGl2ZSAhPSBhY2spIHsKKyAgICBmcHJpbnRmKHdoZXJlLCJwdXRfY29udHJvbDogYWNrbm93bGVkZ2VtZW50IGVycm9yIHdhbnRlZCAldSBnb3QgJXUgXG4iLAorICAgICAgICAgICAgYWNrLGVycl9hY2stPmRsX3ByaW1pdGl2ZSk7CisgICAgaWYgKGVycl9hY2stPmRsX3ByaW1pdGl2ZSA9PSBETF9FUlJPUl9BQ0spIHsKKyAgICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICBkbF9lcnJvcl9wcmltaXRpdmU6ICV1XG4iLAorICAgICAgICAgICAgICBlcnJfYWNrLT5kbF9lcnJvcl9wcmltaXRpdmUpOworICAgICAgZnByaW50Zih3aGVyZSwiICAgICAgICAgICAgIGRsX2Vycm5vOiAgICAgICAgICAgJXVcbiIsCisgICAgICAgICAgICAgIGVycl9hY2stPmRsX2Vycm5vKTsKKyAgICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgICAgICBkbF91bml4X2Vycm5vICAgICAgICV1XG4iLAorICAgICAgICAgICAgICBlcnJfYWNrLT5kbF91bml4X2Vycm5vKTsKKyAgICB9CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICByZXR1cm4oLTEpOworICB9CisKKyAgcmV0dXJuKDApOworfQorCitpbnQKK2RsX29wZW4oY2hhciBkZXZmaWxlW10sIGludCBwcGEpCit7CisgIGludCBmZDsKKyAgZGxfYXR0YWNoX3JlcV90ICphdHRhY2hfcmVxID0gKGRsX2F0dGFjaF9yZXFfdCAqKWNvbnRyb2xfZGF0YTsKKworICBpZiAoKGZkID0gb3BlbihkZXZmaWxlLCBPX1JEV1IpKSA9PSAtMSkgeworICAgIGZwcmludGYod2hlcmUsIm5ldHBlcmY6IGRsX29wZW46IG9wZW4gb2YgJXMgZmFpbGVkLCBlcnJubyA9ICVkXG4iLAorICAgICAgICAgICAgZGV2ZmlsZSwKKyAgICAgICAgICAgIGVycm5vKTsKKyAgICByZXR1cm4oLTEpOworICB9CisKKyAgYXR0YWNoX3JlcS0+ZGxfcHJpbWl0aXZlID0gRExfQVRUQUNIX1JFUTsKKyAgYXR0YWNoX3JlcS0+ZGxfcHBhID0gcHBhOworCisgIGlmIChwdXRfY29udHJvbChmZCwgc2l6ZW9mKGRsX2F0dGFjaF9yZXFfdCksIDAsIERMX09LX0FDSykgPCAwKSB7CisgICAgZnByaW50Zih3aGVyZSwKKyAgICAgICAgICAgICJuZXRwZXJmOiBkbF9vcGVuOiBjb3VsZCBub3Qgc2VuZCBjb250cm9sIG1lc3NhZ2UsIGVycm5vID0gJWRcbiIsCisgICAgICAgICAgICBlcnJubyk7CisgICAgcmV0dXJuKC0xKTsKKyAgfQorICByZXR1cm4oZmQpOworfQorCitpbnQKK2RsX2JpbmQoaW50IGZkLCBpbnQgc2FwLCBpbnQgbW9kZSwgY2hhciAqZGxzYXBfcHRyLCBpbnQgKmRsc2FwX2xlbikKK3sKKyAgZGxfYmluZF9yZXFfdCAqYmluZF9yZXEgPSAoZGxfYmluZF9yZXFfdCAqKWNvbnRyb2xfZGF0YTsKKyAgZGxfYmluZF9hY2tfdCAqYmluZF9hY2sgPSAoZGxfYmluZF9hY2tfdCAqKWNvbnRyb2xfZGF0YTsKKworICBiaW5kX3JlcS0+ZGxfcHJpbWl0aXZlID0gRExfQklORF9SRVE7CisgIGJpbmRfcmVxLT5kbF9zYXAgPSBzYXA7CisgIGJpbmRfcmVxLT5kbF9tYXhfY29uaW5kID0gMTsKKyAgYmluZF9yZXEtPmRsX3NlcnZpY2VfbW9kZSA9IG1vZGU7CisgIGJpbmRfcmVxLT5kbF9jb25uX21nbXQgPSAwOworICBiaW5kX3JlcS0+ZGxfeGlkdGVzdF9mbGcgPSAwOworCisgIGlmIChwdXRfY29udHJvbChmZCwgc2l6ZW9mKGRsX2JpbmRfcmVxX3QpLCAwLCBETF9CSU5EX0FDSykgPCAwKSB7CisgICAgZnByaW50Zih3aGVyZSwKKyAgICAgICAgICAgICJuZXRwZXJmOiBkbF9iaW5kOiBjb3VsZCBub3Qgc2VuZCBjb250cm9sIG1lc3NhZ2UsIGVycm5vID0gJWRcbiIsCisgICAgICAgICAgICBlcnJubyk7CisgICAgcmV0dXJuKC0xKTsKKyAgfQorCisgIC8qIGF0IHRoaXMgcG9pbnQsIHRoZSBjb250cm9sX2RhdGEgcG9ydGlvbiBvZiB0aGUgY29udHJvbCBtZXNzYWdlICovCisgIC8qIHN0cnVjdHVyZSBzaG91bGQgY29udGFpbiBhIERMX0JJTkRfQUNLLCB3aGljaCB3aWxsIGhhdmUgYSBmdWxsICovCisgIC8qIERMU0FQIGluIGl0LiB3ZSB3YW50IHRvIGV4dHJhY3QgdGhpcyBhbmQgcGFzcyBpdCB1cCBzbyB0aGF0ICAgICovCisgIC8qIGl0IGNhbiBiZSBwYXNzZWQgYXJvdW5kLiAqLworICBpZiAoKmRsc2FwX2xlbiA+PSBiaW5kX2Fjay0+ZGxfYWRkcl9sZW5ndGgpIHsKKyAgICBiY29weSgoY2hhciAqKWJpbmRfYWNrK2JpbmRfYWNrLT5kbF9hZGRyX29mZnNldCwKKyAgICAgICAgICBkbHNhcF9wdHIsCisgICAgICAgICAgYmluZF9hY2stPmRsX2FkZHJfbGVuZ3RoKTsKKyAgICAqZGxzYXBfbGVuID0gYmluZF9hY2stPmRsX2FkZHJfbGVuZ3RoOworICAgIHJldHVybigwKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gKC0xKTsKKyAgfQorfQorCitpbnQKK2RsX2Nvbm5lY3QoaW50IGZkLCB1bnNpZ25lZCBjaGFyICpyZW1vdGVfYWRkciwgaW50IHJlbW90ZV9hZGRyX2xlbikKK3sKKyAgZGxfY29ubmVjdF9yZXFfdCAqY29ubmVjdGlvbl9yZXEgPSAoZGxfY29ubmVjdF9yZXFfdCAqKWNvbnRyb2xfZGF0YTsKKyAgZGxfY29ubmVjdF9jb25fdCAqY29ubmVjdGlvbl9jb24gPSAoZGxfY29ubmVjdF9jb25fdCAqKWNvbnRyb2xfZGF0YTsKKyAgc3RydWN0IHBvbGxmZCBwaW5mbzsKKworICBpbnQgZmxhZ3MgPSAwOworCisgIC8qIHRoaXMgaXMgaGVyZSBvbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHdlIHJlYWxseSB3YW50IHNvbWUgZGF0YSAqLworICB1X2xvbmcgZGF0YV9hcmVhWzUxMl07CisgIHN0cnVjdCBzdHJidWYgZGF0YV9tZXNzYWdlOworCisgIGludCBlcnJvcjsKKworICBkYXRhX21lc3NhZ2UubWF4bGVuID0gMjA0ODsKKyAgZGF0YV9tZXNzYWdlLmxlbiA9IDA7CisgIGRhdGFfbWVzc2FnZS5idWYgPSAoY2hhciAqKWRhdGFfYXJlYTsKKworICBjb25uZWN0aW9uX3JlcS0+ZGxfcHJpbWl0aXZlID0gRExfQ09OTkVDVF9SRVE7CisgIGNvbm5lY3Rpb25fcmVxLT5kbF9kZXN0X2FkZHJfbGVuZ3RoID0gcmVtb3RlX2FkZHJfbGVuOworICBjb25uZWN0aW9uX3JlcS0+ZGxfZGVzdF9hZGRyX29mZnNldCA9IHNpemVvZihkbF9jb25uZWN0X3JlcV90KTsKKyAgY29ubmVjdGlvbl9yZXEtPmRsX3Fvc19sZW5ndGggPSAwOworICBjb25uZWN0aW9uX3JlcS0+ZGxfcW9zX29mZnNldCA9IDA7CisgIGJjb3B5IChyZW1vdGVfYWRkciwKKyAgICAgICAgICh1bnNpZ25lZCBjaGFyICopY29udHJvbF9kYXRhICsgc2l6ZW9mKGRsX2Nvbm5lY3RfcmVxX3QpLAorICAgICAgICAgcmVtb3RlX2FkZHJfbGVuKTsKKworICAvKiB3ZWxsLCBJIHdvdWxkIGNhbGwgdGhlIHB1dF9jb250cm9sIHJvdXRpbmUgaGVyZSwgYnV0IHRoZSBzZXF1ZW5jZSAqLworICAvKiBvZiBjb25uZWN0aW9uIHN0dWZmIHdpdGggRExQSSBpcyBhIGJpdCBzY3Jld2V5IHdpdGggYWxsIHRoaXMgKi8KKyAgLyogbWVzc2FnZSBwYXNzaW5nIC0gVG90bywgSSBkb24ndCB0aGluayB3ZXJlIGluIEJlcmtlbGV5IGFueW1vcmUuICovCisKKyAgY29udHJvbF9tZXNzYWdlLmxlbiA9IHNpemVvZihkbF9jb25uZWN0X3JlcV90KSArIHJlbW90ZV9hZGRyX2xlbjsKKyAgaWYgKChlcnJvciA9IHB1dG1zZyhmZCwmY29udHJvbF9tZXNzYWdlLDAsMCkpICE9MCkgeworICAgIGZwcmludGYod2hlcmUsImRsX2Nvbm5lY3Q6IHB1dG1zZyBmYWlsdXJlLCBlcnJubyA9ICVkLCBlcnJvciAweCV4IFxuIiwKKyAgICAgICAgICAgIGVycm5vLGVycm9yKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIHJldHVybigtMSk7CisgIH07CisKKyAgcGluZm8uZmQgPSBmZDsKKyAgcGluZm8uZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSTsKKyAgcGluZm8ucmV2ZW50cyA9IDA7CisKKyAgaWYgKChlcnJvciA9IGdldG1zZyhmZCwmY29udHJvbF9tZXNzYWdlLCZkYXRhX21lc3NhZ2UsJmZsYWdzKSkgIT0gMCkgeworICAgIGZwcmludGYod2hlcmUsImRsX2Nvbm5lY3Q6IGdldG1zZyBmYWlsdXJlLCBlcnJubyA9ICVkLCBlcnJvciAweCV4IFxuIiwKKyAgICAgICAgICAgIGVycm5vLGVycm9yKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIHJldHVybigtMSk7CisgIH0KKyAgd2hpbGUgKGNvbnRyb2xfZGF0YVswXSA9PSBETF9URVNUX0NPTikgeworICAgIC8qIGkgc3VwcG9zZSB3ZSBzcGluIHVudGlsIHdlIGdldCBhbiBlcnJvciwgb3IgYSBjb25uZWN0aW9uICovCisgICAgLyogaW5kaWNhdGlvbiAqLworICAgIGlmKChlcnJvciA9IGdldG1zZyhmZCwmY29udHJvbF9tZXNzYWdlLCZkYXRhX21lc3NhZ2UsJmZsYWdzKSkgIT0wKSB7CisgICAgICAgZnByaW50Zih3aGVyZSwiZGxfY29ubmVjdDogZ2V0bXNnIGZhaWx1cmUsIGVycm5vID0gJWQsIGVycm9yID0gMHgleFxuIiwKKyAgICAgICAgICAgICAgIGVycm5vLGVycm9yKTsKKyAgICAgICBmZmx1c2god2hlcmUpOworICAgICAgIHJldHVybigtMSk7CisgICAgfQorICB9CisKKyAgLyogd2UgYXJlIG91dCAtIGl0IGVpdGhlciB3b3JrZWQgb3IgaXQgZGlkbid0IC0gd2hpY2ggd2FzIGl0PyAqLworICBpZiAoY29udHJvbF9kYXRhWzBdID09IERMX0NPTk5FQ1RfQ09OKSB7CisgICAgcmV0dXJuKDApOworICB9CisgIGVsc2UgeworICAgIHJldHVybigtMSk7CisgIH0KK30KKworaW50CitkbF9hY2NlcHQoZmQsIHJlbW90ZV9hZGRyLCByZW1vdGVfYWRkcl9sZW4pCisgICAgIGludCBmZDsKKyAgICAgdW5zaWduZWQgY2hhciAqcmVtb3RlX2FkZHI7CisgICAgIGludCByZW1vdGVfYWRkcl9sZW47Cit7CisgIGRsX2Nvbm5lY3RfaW5kX3QgKmNvbm5lY3RfaW5kID0gKGRsX2Nvbm5lY3RfaW5kX3QgKiljb250cm9sX2RhdGE7CisgIGRsX2Nvbm5lY3RfcmVzX3QgKmNvbm5lY3RfcmVzID0gKGRsX2Nvbm5lY3RfcmVzX3QgKiljb250cm9sX2RhdGE7CisgIGludCB0bXBfY29yOworICBpbnQgZmxhZ3MgPSAwOworCisgIC8qIGhhbmcgYXJvdW5kIGFuZCB3YWl0IGZvciBhIGNvbm5lY3Rpb24gcmVxdWVzdCAqLworICBnZXRtc2coZmQsJmNvbnRyb2xfbWVzc2FnZSwwLCZmbGFncyk7CisgIHdoaWxlIChjb250cm9sX2RhdGFbMF0gIT0gRExfQ09OTkVDVF9JTkQpIHsKKyAgICBnZXRtc2coZmQsJmNvbnRyb2xfbWVzc2FnZSwwLCZmbGFncyk7CisgIH0KKworICAvKiBub3cgcmVzcG9uZCB0byB0aGUgcmVxdWVzdC4gYXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gYmUgc3VyZSAqLworICAvKiB0aGF0IHRoZSBjb25uZWN0aW9uIGNhbWUgZnJvbSB0aGUgY29ycmVjdCBzdGF0aW9uIGFkZHJlc3MsIGJ1dCAqLworICAvKiB3aWxsIGFzc3VtZSB0aGF0IHdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGl0IGp1c3Qgbm93LiAqLworCisgIHRtcF9jb3IgPSBjb25uZWN0X2luZC0+ZGxfY29ycmVsYXRpb247CisKKyAgY29ubmVjdF9yZXMtPmRsX3ByaW1pdGl2ZSA9IERMX0NPTk5FQ1RfUkVTOworICBjb25uZWN0X3Jlcy0+ZGxfY29ycmVsYXRpb24gPSB0bXBfY29yOworICBjb25uZWN0X3Jlcy0+ZGxfcmVzcF90b2tlbiA9IDA7CisgIGNvbm5lY3RfcmVzLT5kbF9xb3NfbGVuZ3RoID0gMDsKKyAgY29ubmVjdF9yZXMtPmRsX3Fvc19vZmZzZXQgPSAwOworICBjb25uZWN0X3Jlcy0+ZGxfZ3Jvd3RoID0gMDsKKworICByZXR1cm4ocHV0X2NvbnRyb2woZmQsIHNpemVvZihkbF9jb25uZWN0X3Jlc190KSwgMCwgRExfT0tfQUNLKSk7CisKK30KKworaW50CitkbF9zZXRfd2luZG93KGZkLCB3aW5kb3cpCisgICAgIGludCBmZCwgd2luZG93OworeworICByZXR1cm4oMCk7Cit9CisKK3ZvaWQKK2RsX3N0YXRzKGZkKQorICAgICBpbnQgZmQ7Cit7Cit9CisKK2ludAorZGxfc2VuZF9kaXNjKGZkKQorICAgICBpbnQgZmQ7Cit7Cit9CisKK2ludAorZGxfcmVjdl9kaXNjKGZkKQorICAgICBpbnQgZmQ7Cit7Cit9CiAKIAwKIC8qIFRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSBDTyB1bmlkaXJlY3Rpb25hbCBkYXRhIHRyYW5zZmVyIHRlc3QgKi8KQEAgLTk5LDU0ICszMzksNTQgQEAKIC8qIG91dHB1dCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAqLwogCiAKLXZvaWQgCit2b2lkCiBzZW5kX2RscGlfY29fc3RyZWFtKCkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKIFdpbmRvdyBXaW5kb3cgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgXG5cCiBmcmFtZXMgZnJhbWVzICBieXRlcyAgICBzZWNzLiAgICAlcy9zZWMgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPQogICAgICIlNWQgICU1ZCAgJTZkICAgICUtNi4yZiAgICU3LjJmICAgXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgU2VydmljZSBEZW1hbmRcblwKIFdpbmRvdyBXaW5kb3cgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFNlbmQgICBSZWN2ICAgIFNlbmQgICAgUmVjdlxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgbG9jYWwgIHJlbW90ZSAgbG9jYWwgICByZW1vdGVcblwKIGZyYW1lcyBmcmFtZXMgIGJ5dGVzICAgIHNlY3MuICAgICUtOC44cy9zICAlJSAgICAgICUlICAgICAgIHVzL0tCICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMSA9CiAgICAgIiU1ZCAgJTVkICAlNmQgICAgJS02LjJmICAgICAlNy4yZiAgICUtNi4yZiAlLTYuMmYgICUtNi4zZiAgJS02LjNmXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXG5cCiBBbGlnbm1lbnQgICAgICBPZmZzZXQgICAgICAgICAlLTguOHMgJS04LjhzICAgIFNlbmRzICAgJS04LjhzIFJlY3ZzXG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlICBYZmVyZWQgICBQZXIgICAgICAgICAgICAgICAgIFBlclxuXAogU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3YgICAgICAgICAgICAgU2VuZCAoYXZnKSAgICAgICAgICBSZWN2IChhdmcpXG5cCiAlNWQgICAlNWQgICU1ZCAgICU1ZCAlNi40ZyAgJTYuMmYgICAgICU2ZCAlNi4yZiAgICU2ZFxuIjsKLSAgCi0gIAorCisKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgaW50IGludGVydmFsX2NvdW50OwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gIAorCiAgIC8qIHdoYXQgd2Ugd2FudCBpcyB0byBoYXZlIGEgYnVmZmVyIHNwYWNlIHRoYXQgaXMgYXQgbGVhc3Qgb25lICovCiAgIC8qIHNlbmQtc2l6ZSBncmVhdGVyIHRoYW4gb3VyIHNlbmQgd2luZG93LiB0aGlzIHdpbGwgaW5zdXJlIHRoYXQgd2UgKi8KICAgLyogYXJlIG5ldmVyIHRyeWluZyB0byByZS11c2UgYSBidWZmZXIgdGhhdCBtYXkgc3RpbGwgYmUgaW4gdGhlIGhhbmRzICovCiAgIC8qIG9mIHRoZSB0cmFuc3BvcnQuIFRoaXMgYnVmZmVyIHdpbGwgYmUgbWFsbG9jJ2QgYWZ0ZXIgd2UgaGF2ZSBmb3VuZCAqLwogICAvKiB0aGUgc2l6ZSBvZiB0aGUgbG9jYWwgc2VuYyBzb2NrZXQgYnVmZmVyLiBXZSB3aWxsIHdhbnQgdG8gZGVhbCAqLwogICAvKiB3aXRoIGFsaWdubWVudCBhbmQgb2Zmc2V0IGNvbmNlcm5zIGFzIHdlbGwuICovCi0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBjaGFyCSptZXNzYWdlOwogICBjaGFyCSptZXNzYWdlX3B0cjsKQEAgLTE1Niw3ICszOTYsNyBAQAogICBpbnQJKm1lc3NhZ2VfaW50X3B0cjsKICAgaW50CW1lc3NhZ2Vfb2Zmc2V0OwogICBpbnQJbWFsbG9jX3NpemU7Ci0gIAorCiAgIGludAlsZW47CiAgIGludAludW1tZXNzYWdlczsKICAgaW50CXNlbmRfZGVzY3JpcHRvcjsKQEAgLTE2NCwyOCArNDA0LDI4IEBACiAgIC8qIHdpdGggbGlua3MgbGlrZSBmZGRpLCBvbmUgY2FuIHNlbmQgPiAzMiBiaXRzIHdvcnRoIG9mIGJ5dGVzICovCiAgIC8qIGR1cmluZyBhIHRlc3QuLi4gOy0pICovCiAgIGRvdWJsZQlieXRlc19zZW50OwotICAKKwogI2lmZGVmIERJUlRZCiAgIGludAlpOwogI2VuZGlmIC8qIERJUlRZICovCi0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdAlkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdAkqZGxwaV9jb19zdHJlYW1fcmVxdWVzdDsKICAgc3RydWN0CWRscGlfY29fc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqZGxwaV9jb19zdHJlYW1fcmVzcG9uc2U7CiAgIHN0cnVjdAlkbHBpX2NvX3N0cmVhbV9yZXN1bHRzX3N0cnVjdAkqZGxwaV9jb19zdHJlYW1fcmVzdWx0OwotICAKLSAgZGxwaV9jb19zdHJlYW1fcmVxdWVzdAk9IAorCisgIGRscGlfY29fc3RyZWFtX3JlcXVlc3QJPQogICAgIChzdHJ1Y3QgZGxwaV9jb19zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIGRscGlfY29fc3RyZWFtX3Jlc3BvbnNlCT0KICAgICAoc3RydWN0IGRscGlfY29fc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIGRscGlfY29fc3RyZWFtX3Jlc3VsdAkgICAgICAgID0gCisgIGRscGlfY29fc3RyZWFtX3Jlc3VsdAkgICAgICAgID0KICAgICAoc3RydWN0IGRscGlfY29fc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKCBwcmludF9oZWFkZXJzICkgewogICAgIGZwcmludGYod2hlcmUsIkRMUEkgQ08gU1RSRUFNIFRFU1RcbiIpOwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkKQEAgLTE5MywzMyArNDMzLDMzIEBACiAgICAgZWxzZQogICAgICAgZnByaW50Zih3aGVyZSx0cHV0X3RpdGxlLGZvcm1hdF91bml0cygpKTsKICAgfQotICAKKwogICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzICovCi0gIAorCiAgIG51bW1lc3NhZ2VzCT0JMDsKICAgYnl0ZXNfc2VudAk9CTAuMDsKICAgdGltZXNfdXAgCT0gCTA7Ci0gIAorCiAgIC8qc2V0IHVwIHRoZSBkYXRhIGRlc2NyaXB0b3IgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBzZW5kX2Rlc2NyaXB0b3IgPSBkbF9vcGVuKGxvY19kbHBpX2RldmljZSxsb2NfcHBhKTsgIAorICBzZW5kX2Rlc2NyaXB0b3IgPSBkbF9vcGVuKGxvY19kbHBpX2RldmljZSxsb2NfcHBhKTsKICAgaWYgKHNlbmRfZGVzY3JpcHRvciA8IDApewogICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF9kbHBpX2NvX3N0cmVhbTogZGxwaSBzdHJlYW0gZGF0YSBkZXNjcmlwdG9yIik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBiaW5kIHRoZSBwdXBweSBhbmQgZ2V0IHRoZSBhc3NpZ25lZCBkbHNhcCAqLwogICBkbHNhcF9sZW4gPSBCVUZTSVo7Ci0gIGlmIChkbF9iaW5kKHNlbmRfZGVzY3JpcHRvciwgCisgIGlmIChkbF9iaW5kKHNlbmRfZGVzY3JpcHRvciwKICAgICAgICAgICAgICAgZGxwaV9zYXAsIERMX0NPRExTLCBkbHNhcCwgJmRsc2FwX2xlbikgIT0gMCkgewogICAgIGZwcmludGYod2hlcmUsInNlbmRfZGxwaV9jb19ycjogYmluZCBmYWlsdXJlXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwic2VuZF9kbHBpX2NvX3N0cmVhbTogc2VuZF9kZXNjcmlwdG9yIG9idGFpbmVkLi4uXG4iKTsKICAgfQotICAKKwogI2lmZGVmIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRCiAgIGlmIChsc3dfc2l6ZSA+IDApIHsKICAgICBpZiAoZGVidWcgPiAxKSB7CkBAIC0yMzQsMzcgKzQ3NCwzNyBAQAogICAgICAgZnByaW50Zih3aGVyZSwiICAgICAgICAgICAgICAgICAgICAgICAgICByZWN2OiAlZFxuIixscndfc2l6ZSk7CiAgICAgfQogICB9Ci0gIAotICAKKworCiAgIC8qIE5vdywgd2Ugd2lsbCBmaW5kLW91dCB3aGF0IHRoZSBzaXplIGFjdHVhbGx5IGJlY2FtZSwgYW5kIHJlcG9ydCAqLwogICAvKiB0aGF0IGJhY2sgdG8gdGhlIHVzZXIuIElmIHRoZSBjYWxsIGZhaWxzLCB3ZSB3aWxsIGp1c3QgcmVwb3J0IGEgLTEgKi8KICAgLyogYmFjayB0byB0aGUgaW5pdGlhdG9yIGZvciB0aGUgcmVjdiBidWZmZXIgc2l6ZS4gKi8KLSAgCi0gIAorCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgIm5ldHBlcmY6IHNlbmRfZGxwaV9jb19zdHJlYW06IHdpbmRvdyBzaXplcyBkZXRlcm1pbmVkLi4uXG4iKTsKICAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICBzZW5kOiAlZCByZWN2OiAlZFxuIixsc3dfc2l6ZSxscndfc2l6ZSk7Ci0gICAgZmZsdWNoKHdoZXJlKTsKKyAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAjZWxzZSAvKiBETF9IUF9TRVRfTE9DQUxfV0lOX1JFUSAqLwotICAKKwogICBsc3dfc2l6ZSA9IC0xOwogICBscndfc2l6ZSA9IC0xOwotICAKKwogI2VuZGlmIC8qIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRICovCi0gIAorCiAgIC8qIHdlIHNob3VsZCBwaWNrIGEgZGVmYXVsdCBzZW5kX3NpemUsIGl0IHNob3VsZCBub3QgYmUgbGFyZ2VyIHRoYW4gKi8KICAgLyogdGhlIG1pbiBvZiB0aGUgdHdvIGludGVyZmFjZSBNVFUncywgYW5kIHNob3VsZCBwZXJoYXBzIGRlZmF1bHQgdG8gKi8KICAgLyogdGhlIEludGVyZmFjZSBNVFUsIGJ1dCBmb3Igbm93LCB3ZSB3aWxsIGRlZmF1bHQgaXQgdG8gMTAyNC4uLiBpZiAqLwogICAvKiBzb21lb25lIHdhbnRzIHRvIGNoYW5nZSB0aGlzLCB0aGUgc2hvdWxkIGNoYW5nZSB0aGUgY29ycmVzcG9uZGluZyAqLwogICAvKiBsaW5lcyBpbiB0aGUgcmVjdl9kbHBpX2NvX3N0cmVhbSByb3V0aW5lICovCi0gIAorCiAgIGlmIChzZW5kX3NpemUgPT0gMCkgewogICAgIHNlbmRfc2l6ZSA9IDEwMjQ7CiAgIH0KLSAgCisKICAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlciB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQuICovCiAgIC8qIEFmdGVyIHdlIGhhdmUgY2FsY3VsYXRlZCB0aGUgcHJvcGVyIHN0YXJ0aW5nIGFkZHJlc3MsIHdlIHdhbnQgdG8gKi8KICAgLyogcHV0IHRoYXQgYmFjayBpbnRvIHRoZSBtZXNzYWdlIHZhcmlhYmxlIHNvIHdlIGdvIGJhY2sgdG8gdGhlICovCkBAIC0yODIsMzQgKzUyMiwzNCBAQAogICAgIHNlbmRfd2lkdGggPSAobHN3X3NpemUvc2VuZF9zaXplKSArIDE7CiAgICAgaWYgKHNlbmRfd2lkdGggPT0gMSkgc2VuZF93aWR0aCsrOwogICB9Ci0gIAorCiAgIHNlbmRfcmluZyA9IGFsbG9jYXRlX2J1ZmZlcl9yaW5nKHNlbmRfd2lkdGgsCiAJCQkJICAgc2VuZF9zaXplLAogCQkJCSAgIGxvY2FsX3NlbmRfYWxpZ24sCiAJCQkJICAgbG9jYWxfc2VuZF9vZmZzZXQpOwotICAKKwogICBzZW5kX21lc3NhZ2UubWF4bGVuID0gc2VuZF9zaXplOwogICBzZW5kX21lc3NhZ2UubGVuID0gc2VuZF9zaXplOwogICBzZW5kX21lc3NhZ2UuYnVmID0gc2VuZF9yaW5nLT5idWZmZXJfcHRyOwotICAKKwogICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QgKi8KICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAvKiB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbiAqLwogICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwogICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgfQotICAKKwogICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUgc29ja2V0ICovCiAgIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwogICAvKiBhbGwgdGhlIHZhbHVlcyBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCAqLwogICAvKiBub3Qgc3BlY2lmeSBhbnkgb2YgdGhlIHBhcmFtZXRlcnMsIHRoZXkgd2lsbCBiZSBwYXNzZWQgYXMgMCwgd2hpY2ggKi8KICAgLyogd2lsbCBpbmRpY2F0ZSB0byB0aGUgcmVtb3RlIHRoYXQgbm8gY2hhbmdlcyBiZXlvbmQgdGhlIHN5c3RlbSdzICovCiAgIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuICovCi0gIAorCiAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQkgPQlET19ETFBJX0NPX1NUUkVBTTsKICAgZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+c2VuZF93aW5fc2l6ZSA9CXJzd19zaXplOwogICBkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X3dpbl9zaXplID0JcnJ3X3NpemU7CkBAIC0zMjMsOSArNTYzLDkgQEAKICAgZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+ZGV2X25hbWVfbGVuICA9ICAgICAgc3RybGVuKHJlbV9kbHBpX2RldmljZSk7CiAgIHN0cmNweShkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5kbHBpX2RldmljZSwKIAkgcmVtX2RscGlfZGV2aWNlKTsKLSAgCisKICNpZmRlZiBfX2FscGhhCi0gIAorCiAgIC8qIG9rIC0gZXZlbiBvbiBhIERFQyBib3gsIHN0cmluZ3MgYXJlIHN0cmluZ3MuIEkgZGlkbid0IHJlYWxseSB3YW50ICovCiAgIC8qIHRvIG50b2hsIHRoZSB3b3JkcyBvZiBhIHN0cmluZy4gc2luY2UgSSBkb24ndCB3YW50IHRvIHRlYWNoIHRoZSAqLwogICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0zMzYsMTkgKzU3NiwxOSBAQAogICAgIGludCAqY2hhcndvcmQ7CiAgICAgaW50ICppbml0d29yZDsKICAgICBpbnQgKmxhc3R3b3JkOwotICAgIAorCiAgICAgaW5pdHdvcmQgPSAoaW50ICopIGRscGlfY29fc3RyZWFtX3JlcXVlc3QtPmRscGlfZGV2aWNlOwogICAgIGxhc3R3b3JkID0gaW5pdHdvcmQgKyAoKHN0cmxlbihyZW1fZGxwaV9kZXZpY2UpICsgMykgLyA0KTsKLSAgICAKKwogICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgY2hhcndvcmQgPCBsYXN0d29yZDsKIAkgY2hhcndvcmQrKykgewotICAgICAgCisKICAgICAgICpjaGFyd29yZCA9IG50b2hsKCpjaGFyd29yZCk7CiAgICAgfQogICB9CiAjZW5kaWYgLyogX19hbHBoYSAqLwotICAKKwogICBpZiAodGVzdF90aW1lKSB7CiAgICAgZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+dGVzdF9sZW5ndGgJPQl0ZXN0X3RpbWU7CiAgIH0KQEAgLTM1OSwxNSArNTk5LDE1IEBACiAgIGRscGlfY29fc3RyZWFtX3JlcXVlc3QtPmRpcnR5X2NvdW50ICAgICAgID0gICAgICAgcmVtX2RpcnR5X2NvdW50OwogICBkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5jbGVhbl9jb3VudCAgICAgICA9ICAgICAgIHJlbV9jbGVhbl9jb3VudDsKICNlbmRpZiAvKiBESVJUWSAqLwotICAKLSAgCisKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgIm5ldHBlcmY6IHNlbmRfZGxwaV9jb19zdHJlYW06IHJlcXVlc3RpbmcgRExQSSBDTyBzdHJlYW0gdGVzdFxuIik7CiAgIH0KLSAgCisKICAgc2VuZF9yZXF1ZXN0KCk7Ci0gIAorCiAgIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQgCSovCiAgIC8qIHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAJKi8KICAgLyogdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLiAgVGhlCSovCkBAIC0zNzcsOSArNjE3LDkgQEAKICAgLyogYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQJKi8KICAgLyogYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMJKi8KICAgLyogYmVpbmcgc2VudCBmb3IgdGhlIFRDUCB0ZXN0cy4JCQkJCSovCi0gIAorCiAgIHJlY3ZfcmVzcG9uc2UoKTsKLSAgCisKICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgIGlmIChkZWJ1ZykKICAgICAgIGZwcmludGYod2hlcmUsInJlbW90ZSBsaXN0ZW4gZG9uZS5cbiIpOwpAQCAtMzkzLDcgKzYzMyw3IEBACiAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIENvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIGRlc2NyaXB0b3IgKi8KICAgaWYoZGxfY29ubmVjdChzZW5kX2Rlc2NyaXB0b3IsCiAJCWRscGlfY29fc3RyZWFtX3Jlc3BvbnNlLT5zdGF0aW9uX2FkZHIsCkBAIC00MDIsMTYgKzY0MiwxNiBAQAogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciB0aGUgKi8KICAgLyogY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkIGhhdmUgKi8KICAgLyogaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUgZXh0cmEgKi8KICAgLyogbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlIGl0ICovCiAgIC8qIGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCi0gIAorCiAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgc3RyZWFtIHRlc3QsIHRoZXkgY2FuIGJlICovCiAgIC8qIGVpdGhlciB0aW1lIG9yIGJ5dGUtY291bnQgYmFzZWQuICovCi0gIAorCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgdGltZXNfdXAgPSAwOwpAQCAtNDIzLDI3ICs2NjMsMjcgQEAKICAgICBieXRlc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgIHRpbWVzX3VwID0gMTsKICAgfQotICAKKwogICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5ICovCiAgIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCiAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7Ci0gIAorCiAgIC8qIFdlIHVzZSBhbiAiT1IiIHRvIGNvbnRyb2wgdGVzdCBleGVjdXRpb24uIFdoZW4gdGhlIHRlc3QgaXMgKi8KICAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICovCiAgIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KICAgLyogYWx3YXlzIHJldHVybiBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBmaW5pc2hlZCwgdGhlIHdob2xlICovCiAgIC8qIGV4cHJlc3Npb24gd2lsbCBnbyBmYWxzZSBhbmQgd2Ugd2lsbCBzdG9wIHNlbmRpbmcgZGF0YS4gKi8KLSAgCisKICNpZmRlZiBESVJUWQogICAvKiBpbml0aWFsaXplIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBmb3IgcHV0dGluZyBkaXJ0eSBzdHVmZiAqLwogICAvKiBpbnRvIHRoZSBzZW5kIGJ1ZmZlci4gcmFqICovCiAgIHNyYW5kKChpbnQpIGdldHBpZCgpKTsKICNlbmRpZiAvKiBESVJUWSAqLwotICAKKwogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKGJ5dGVzX3JlbWFpbmluZyA+IDApKSB7Ci0gICAgCisKICNpZmRlZiBESVJUWQogICAgIC8qIHdlIHdhbnQgdG8gZGlydHkgc29tZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgaW50ZWdlcnMgaW4gdGhlIGJ1ZmZlciAqLwogICAgIC8qIHdlIGFyZSBhYm91dCB0byBzZW5kLiB3ZSBtYXkgYWxzbyB3YW50IHRvIGJyaW5nIHNvbWUgbnVtYmVyIG9mICovCkBAIC00NTksNyArNjk5LDcgQEAKICAgICAgIG1lc3NhZ2VfaW50X3B0cisrOwogICAgIH0KICNlbmRpZiAvKiBESVJUWSAqLwotICAgIAorCiAgICAgaWYoKHB1dG1zZyhzZW5kX2Rlc2NyaXB0b3IsCiAJICAgICAgIDAsCiAJICAgICAgICZzZW5kX21lc3NhZ2UsCkBAIC00NzYsMzQgKzcxNiwzNCBAQAogCSBpbnRlcnZhbF9jb3VudCA8IGludGVydmFsX3dhdGU7CiAJIGludGVydmFsX2NvdW50KyspOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgCisKICAgICBpZiAoZGVidWcgPiA0KSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJuZXRwZXJmOiBzZW5kX2NscGlfY29fc3RyZWFtOiBwdXRtc2cgY2FsbGVkICIpOwogICAgICAgZnByaW50Zih3aGVyZSwibGVuIGlzICVkXG4iLHNlbmRfbWVzc2FnZS5sZW4pOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9Ci0gICAgCi0gICAgbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCisKKyAgICBudW1tZXNzYWdlcysrOwogICAgIGlmIChieXRlc19yZW1haW5pbmcpIHsKICAgICAgIGJ5dGVzX3JlbWFpbmluZyAtPSBzZW5kX3NpemU7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIFRoZSB0ZXN0IGlzIG92ZXIuIEZsdXNoIHRoZSBidWZmZXJzIHRvIHRoZSByZW1vdGUgZW5kLiBXZSBkbyBhICovCiAgIC8qIGdyYWNlZnVsIHJlbGVhc2UgdG8gaW5zdXJlIHRoYXQgYWxsIGRhdGEgaGFzIGJlZW4gdGFrZW4gYnkgdGhlICovCiAgIC8qIHJlbW90ZS4gdGhpcyBuZWVkcyBhIGxpdHRsZSB3b3JrIC0gdGhlcmUgaXMgbm8gdGhyZWUtd2F5ICovCiAgIC8qIGhhbmRzaGFrZSB3aXRoIHR5cGUgdHdvIGFzIHRoZXJlIGlzIHdpdGggVENQLCBzbyB0aGVyZSByZWFsbHkgKi8KICAgLyogc2hvdWxkIGJlIGEgbWVzc2FnZSBleGNoYW5nZSBoZXJlLiBob3dldmVyLCB3ZSB3aWxsIGZpbmVzc2UgaXQgYnkgKi8KLSAgLyogc2F5aW5nIHRoYXQgdGhlIHRlc3RzIHNob3VkbCBydW4gZm9yIGEgd2hpbGUuICovIAotICAKKyAgLyogc2F5aW5nIHRoYXQgdGhlIHRlc3RzIHNob3VkbCBydW4gZm9yIGEgd2hpbGUuICovCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwic2VuZGluZyB0ZXN0IGVuZCBzaWduYWwgXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHNlbmRfbWVzc2FnZS5sZW4gPSAoc2VuZF9zaXplIC0gMSk7CiAgIGlmIChzZW5kX21lc3NhZ2UubGVuID09IDApIHNlbmRfbWVzc2FnZS5sZW4gPSAyOwotICAKKwogICBpZigocHV0bXNnKHNlbmRfZGVzY3JpcHRvciwKIAkgICAgIDAsCiAJICAgICAmc2VuZF9tZXNzYWdlLApAQCAtNTExLDE3ICs3NTEsMTcgQEAKICAgICBwZXJyb3IoIm5ldHBlcmY6IGRhdGEgc2VuZCBlcnJvciIpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAKKwogICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgbWVhc3VyZWQ/ICovCiAgIC8qIGhvdyBsb25nIGRpZCB3ZSByZWFsbHkgcnVuPyAqLwotICAKKwogICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgLyogY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQgKi8KICAgLyogd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLwotICAKKwogICByZWN2X3Jlc3BvbnNlKCk7CiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCkBAIC01MzAsMTAgKzc3MCwxMCBAQAogICBlbHNlIHsKICAgICBTZXRfZXJybm8obmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwogICAgIHBlcnJvcigibmV0cGVyZjogcmVtb3RlIGVycm9yIik7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUgZnV0dXJlLCAqLwogICAvKiB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQgbWVhc3VyZWQgYnkgKi8KICAgLyogdGhlIHJlbW90ZSwgYnV0IGl0IHNob3VsZCBiZSB0aGUgY2FzZSB0aGF0IGZvciBhIFRDUCBzdHJlYW0gdGVzdCwgKi8KQEAgLTU0MiwxMCArNzgyLDEwIEBACiAgIC8qIElmIGl0IHdhcyB0aW1lLCB3ZSBuZWVkZWQgdG8sIGFuZCBpZiBpdCB3YXMgYnkgYnl0ZXMsIHRoZSB1c2VyIG1heSAqLwogICAvKiBoYXZlIHNwZWNpZmllZCBhIG51bWJlciBvZiBieXRlcyB0aGF0IHdhc24ndCBhIG11bHRpcGxlIG9mIHRoZSAqLwogICAvKiBzZW5kX3NpemUsIHNvIHdlIHJlYWxseSBkaWRuJ3Qgc2VuZCB3aGF0IGhlIGFza2VkIGZvciA7LSkgKi8KLSAgCisKICAgYnl0ZXNfc2VudAk9ICgoZG91YmxlKSBzZW5kX3NpemUgKiAoZG91YmxlKSBudW1tZXNzYWdlcykgKyAoZG91YmxlKSBsZW47CiAgIHRocnVwdXQJCT0gY2FsY190aHJ1cHV0KGJ5dGVzX3NlbnQpOwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgKi8KQEAgLTU3MCw3ICs4MTAsNyBAQAogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gLTEuMDsKICAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gLTEuMDsKICAgICB9Ci0gICAgCisKICAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgaWYgKHJlbW90ZV9jcHVfcmF0ZSA9PSAwLjApIHsKIAlmcHJpbnRmKHdoZXJlLApAQCAtNTg5LDcgKzgyOSw3IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gLTEuMDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAtMS4wOwogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHVzZXIgKi8KICAgICAvKiBoYXMgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlICovCiAgICAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLwpAQCAtNTk4LDcgKzgzOCw3IEBACiAgICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwogICAgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KICAgICAvKiBub3QgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC02NDgsMTkgKzg4OCwxOSBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFRDUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICBrc2lua19mbXQsCiAJICAgICJCeXRlcyIsCkBAIC02NzYsNyArOTE2LDcgQEAKIAkgICAgYnl0ZXNfc2VudCAvIChkb3VibGUpZGxwaV9jb19zdHJlYW1fcmVzdWx0LT5yZWN2X2NhbGxzLAogCSAgICBkbHBpX2NvX3N0cmVhbV9yZXN1bHQtPnJlY3ZfY2FsbHMpOwogICB9Ci0gIAorCiB9CiAMCiAKQEAgLTY4NCwxNyArOTI0LDE3IEBACiAvKiBpbXBsZW1lbnRlZCBhcyBvbmUgcm91dGluZS4gSSBjb3VsZCBicmVhayB0aGluZ3Mtb3V0IHNvbWV3aGF0LCBidXQgKi8KIC8qIGRpZG4ndCBmZWVsIGl0IHdhcyBuZWNlc3NhcnkuICovCiAKLWludCAKK2ludAogICByZWN2X2RscGlfY29fc3RyZWFtKCkKIHsKLSAgCisKICAgaW50CWRhdGFfZGVzY3JpcHRvcjsKICAgaW50CWZsYWdzID0gMDsKICAgaW50CW1lYXN1cmVfY3B1OwogICBpbnQJYnl0ZXNfcmVjZWl2ZWQ7CiAgIGludAlyZWNlaXZlX2NhbGxzOwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogICBjaGFyCSptZXNzYWdlX3B0cjsKICAgY2hhcgkqbWVzc2FnZTsKQEAgLTcwMywyMCArOTQzLDIwIEBACiAgIGludCAgIGRpcnR5X2NvdW50OwogICBpbnQgICBjbGVhbl9jb3VudDsKICAgaW50ICAgaTsKLSAgCisKICAgc3RydWN0CWRscGlfY29fc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSpkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0OwogICBzdHJ1Y3QJZGxwaV9jb19zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSpkbHBpX2NvX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CWRscGlfY29fc3RyZWFtX3Jlc3VsdHNfc3RydWN0CSpkbHBpX2NvX3N0cmVhbV9yZXN1bHRzOwotICAKKwogICBkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0CT0gKHN0cnVjdCBkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgZGxwaV9jb19zdHJlYW1fcmVzcG9uc2UJPSAoc3RydWN0IGRscGlfY29fc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIGRscGlfY29fc3RyZWFtX3Jlc3VsdHMJPSAoc3RydWN0IGRscGlfY29fc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X2RscGlfY29fc3RyZWFtOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTcyNCwzNSArOTY0LDM1IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBETFBJX0NPX1NUUkVBTV9SRVNQT05TRTsKLSAgCisKICAgLyogV2Ugbm93IGFsdGVyIHRoZSBtZXNzYWdlX3B0ciB2YXJpYWJsZSB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLwogICAvKiBhbGlnbm1lbnQgd2l0aCB0aGUgZGVzaXJlZCBvZmZzZXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY29fc3RyZWFtOiByZXF1ZXN0ZWQgYWxpZ25tZW50IG9mICVkXG4iLAogCSAgICBkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgCisKKwogICAvKiBHcmFiIGEgZGVzY3JpcHRvciB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGxwaV9jb19zdHJlYW06IGdyYWJiaW5nIGEgZGVzY3JpcHRvci4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgCi0gIAorCisKKwogI2lmZGVmIF9fYWxwaGEKLSAgCisKICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaW4ndCByZWFsbHkgd2FudCAqLwogICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgLyogc2VuZF8gYW5kIHJlY3ZfIF9yZXF1ZXN0IGFuZCBfcmVzcG9uc2Ugcm91dGluZXMgYWJvdXQgdGhlIHR5cGVzLCAqLwpAQCAtNzYzLDE5ICsxMDAzLDE5IEBACiAgICAgaW50ICpjaGFyd29yZDsKICAgICBpbnQgKmluaXR3b3JkOwogICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgCisKICAgICBpbml0d29yZCA9IChpbnQgKikgZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+ZGxwaV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+ZGV2X25hbWVfbGVuICsgMykgLyA0KTsKLSAgICAKKwogICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgY2hhcndvcmQgPCBsYXN0d29yZDsKIAkgY2hhcndvcmQrKykgewotICAgICAgCisKICAgICAgICpjaGFyd29yZCA9IGh0b25sKCpjaGFyd29yZCk7CiAgICAgfQogICB9CiAjZW5kaWYgLyogX19hbHBoYSAqLwotICAKKwogICBkYXRhX2Rlc2NyaXB0b3IgPSBkbF9vcGVuKGRscGlfY29fc3RyZWFtX3JlcXVlc3QtPmRscGlfZGV2aWNlLAogCQkJICAgIGRscGlfY29fc3RyZWFtX3JlcXVlc3QtPnBwYSk7CiAgIGlmIChkYXRhX2Rlc2NyaXB0b3IgPCAwKSB7CkBAIC03ODMsMTMgKzEwMjMsMTMgQEAKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBMZXQncyBnZXQgYW4gYWRkcmVzcyBhc3NpZ25lZCB0byB0aGlzIGRlc2NyaXB0b3Igc28gd2UgY2FuIHRlbGwgdGhlICovCiAgIC8qIGluaXRpYXRvciBob3cgdG8gcmVhY2ggdGhlIGRhdGEgZGVzY3JpcHRvci4gVGhlcmUgbWF5IGJlIGEgZGVzaXJlIHRvICovCiAgIC8qIG5haWwgdGhpcyBkZXNjcmlwdG9yIHRvIGEgc3BlY2lmaWMgYWRkcmVzcyBpbiBhIG11bHRpLWhvbWVkLCAqLwogICAvKiBtdWx0aS1jb25uZWN0aW9uIHNpdHVhdGlvbiwgYnV0IGZvciBub3csIHdlJ2xsIGlnbm9yZSB0aGUgaXNzdWUgKi8KICAgLyogYW5kIGNvbmNlbnRyYXRlIG9uIHNpbmdsZSBjb25uZWN0aW9uIHRlc3RpbmcuICovCi0gIAorCiAgIC8qIGJpbmQgdGhlIHNhcCBhbmQgcmV0cmlldmUgdGhlIGRsc2FwIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGRscGlfY29fc3RyZWFtX3Jlc3BvbnNlLT5zdGF0aW9uX2FkZHJfbGVuID0gMTQ7IC8qIGFyYml0cmFyeSAqLwogICBpZiAoZGxfYmluZChkYXRhX2Rlc2NyaXB0b3IsCkBAIC04MDEsMjggKzEwNDEsMjggQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogVGhlIGluaXRpYXRvciBtYXkgaGF2ZSB3aXNoZWQtdXMgdG8gbW9kaWZ5IHRoZSBzb2NrZXQgYnVmZmVyICovCiAgIC8qIHNpemVzLiBXZSBzaG91bGQgZ2l2ZSBpdCBhIHNob3QuIElmIGhlIGRpZG4ndCBhc2sgdXMgdG8gY2hhbmdlIHRoZSAqLwogICAvKiBzaXplcywgd2Ugc2hvdWxkIGxldCBoaW0ga25vdyB3aGF0IHNpemVzIHdlcmUgaW4gdXNlIGF0IHRoaXMgZW5kLiAqLwogICAvKiBJZiBub25lIG9mIHRoaXMgY29kZSBpcyBjb21waWxlZC1pbiwgdGhlbiB3ZSB3aWxsIHRlbGwgdGhlICovCiAgIC8qIGluaXRpYXRvciB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHBsYXkgd2l0aCB0aGUgc29ja2V0IGJ1ZmZlciBieSAqLwogICAvKiBzZXR0aW5nIHRoZSBzaXplIGluIHRoZSByZXNwb25zZSB0byAtMS4gKi8KLSAgCisKICNpZmRlZiBETF9IUF9TRVRfTE9DQUxfV0lOX1JFUQotICAKKwogICBpZiAoZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+cmVjdl93aW5fc2l6ZSkgewogICB9CiAgIC8qIE5vdywgd2Ugd2lsbCBmaW5kLW91dCB3aGF0IHRoZSBzaXplIGFjdHVhbGx5IGJlY2FtZSwgYW5kIHJlcG9ydCAqLwogICAvKiB0aGF0IGJhY2sgdG8gdGhlIHVzZXIuIElmIHRoZSBjYWxsIGZhaWxzLCB3ZSB3aWxsIGp1c3QgcmVwb3J0IGEgLTEgKi8KICAgLyogYmFjayB0byB0aGUgaW5pdGlhdG9yIGZvciB0aGUgcmVjdiBidWZmZXIgc2l6ZS4gKi8KLSAgCisKICNlbHNlIC8qIHRoZSBzeXN0ZW0gd29uJ3QgbGV0IHVzIHBsYXkgd2l0aCB0aGUgYnVmZmVycyAqLwotICAKKwogICBkbHBpX2NvX3N0cmVhbV9yZXNwb25zZS0+cmVjdl93aW5fc2l6ZQk9IC0xOwotICAKKwogI2VuZGlmIC8qIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRICovCi0gIAorCiAgIC8qIHdoYXQgc29ydCBvZiBzaXplcyBkaWQgd2UgZW5kLXVwIHdpdGg/ICovCiAgIC8qIHRoaXMgYml0IG9mIGNvZGUgd2hvdWxkIGRlZmF1bHQgdG8gdGhlIEludGVyZmFjZSBNVFUgKi8KICAgaWYgKGRscGlfY29fc3RyZWFtX3JlcXVlc3QtPnJlY2VpdmVfc2l6ZSA9PSAwKSB7CkBAIC04MzEsMTAgKzEwNzEsMTAgQEAKICAgZWxzZSB7CiAgICAgcmVjdl9zaXplID0gZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+cmVjZWl2ZV9zaXplOwogICB9Ci0gIAorCiAgIC8qIHRlbGwgdGhlIG90aGVyIGZlbGxvdyB3aGF0IG91ciByZWNlaXZlIHNpemUgYmVjYW1lICovCiAgIGRscGlfY29fc3RyZWFtX3Jlc3BvbnNlLT5yZWNlaXZlX3NpemUgPSByZWN2X3NpemU7Ci0gIAorCiAgIC8qIGp1c3QgYSBsaXR0bGUgcHJlcCB3b3JrIGZvciB3aGVuIHdlIG1heSBoYXZlIHRvIGJlaGF2ZSBsaWtlIHRoZSAqLwogICAvKiBzZW5kaW5nIHNpZGUuLi4gKi8KICAgbWVzc2FnZSA9IChjaGFyICopbWFsbG9jKHJlY3Zfc2l6ZSAqIDIpOwpAQCAtODQ3LDM0ICsxMDg3LDM0IEBACiAgIHJlY3ZfbWVzc2FnZS5tYXhsZW4gPSByZWN2X3NpemU7CiAgIHJlY3ZfbWVzc2FnZS5sZW4gPSAwOwogICByZWN2X21lc3NhZ2UuYnVmID0gbWVzc2FnZV9wdHI7Ci0gIAorCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9kbHBpX2NvX3N0cmVhbTogcmVjZWl2ZSBhbGlnbm1lbnQgYW5kIG9mZnNldCBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAtMSB0byAqLwogICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKwogICBkbHBpX2NvX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgPSAwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmIChkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIGRscGlfY29fc3RyZWFtX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7Ci0gICAgZGxwaV9jb19zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0gCisgICAgZGxwaV9jb19zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0KICAgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUoZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgLyogYWNjZXB0IGEgY29ubmVjdGlvbiBvbiB0aGlzIGZpbGUgZGVzY3JpcHRvci4gYXQgc29tZSBwb2ludCwgKi8KICAgLyogZGxfYWNjZXB0IHdpbGwgImRvIHRoZSByaWdodCB0aGluZyIgd2l0aCB0aGUgbGFzdCB0d28gcGFybXMsIGJ1dCAqLwogICAvKiBmb3Igbm93IGl0IGlnbm9yZXMgdGhlbSwgc28gd2Ugd2lsbCBwYXNzIHplcm9zLiAqLwotICAKKwogICBpZihkbF9hY2NlcHQoZGF0YV9kZXNjcmlwdG9yLCAwLCAwKSAhPSAwKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGxwaV9jb19zdHJlYW06IGVycm9yIGluIGFjY2VwdCwgZXJybm8gJWRcbiIsCkBAIC04ODQsMjMgKzExMjQsMjMgQEAKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6cmVjdl9kbHBpX2NvX3N0cmVhbTogY29ubmVjdGlvbiBhY2NlcHRlZFxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydChkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAorCiAjaWZkZWYgRElSVFkKICAgLyogd2Ugd2FudCB0byBkaXJ0eSBzb21lIG51bWJlciBvZiBjb25zZWN1dGl2ZSBpbnRlZ2VycyBpbiB0aGUgYnVmZmVyICovCiAgIC8qIHdlIGFyZSBhYm91dCB0byByZWN2LiB3ZSBtYXkgYWxzbyB3YW50IHRvIGJyaW5nIHNvbWUgbnVtYmVyIG9mICovCiAgIC8qIHRoZW0gY2xlYW5seSBpbnRvIHRoZSBjYWNoZS4gVGhlIGNsZWFuIG9uZXMgd2lsbCBmb2xsb3cgYW55IGRpcnR5ICovCiAgIC8qIG9uZXMgaW50byB0aGUgY2FjaGUuICovCi0gIAorCiAgIGRpcnR5X2NvdW50ID0gZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+ZGlydHlfY291bnQ7CiAgIGNsZWFuX2NvdW50ID0gZGxwaV9jb19zdHJlYW1fcmVxdWVzdC0+Y2xlYW5fY291bnQ7CiAgIG1lc3NhZ2VfaW50X3B0ciA9IChpbnQgKiltZXNzYWdlX3B0cjsKQEAgLTkxMywxMiArMTE1MywxMiBAQAogICAgIG1lc3NhZ2VfaW50X3B0cisrOwogICB9CiAjZW5kaWYgLyogRElSVFkgKi8KLSAgCi0gIHJlY3ZfbWVzc2FnZS5sZW4gPSByZWN2X3NpemU7IAorCisgIHJlY3ZfbWVzc2FnZS5sZW4gPSByZWN2X3NpemU7CiAgIHdoaWxlIChyZWN2X21lc3NhZ2UubGVuID09IHJlY3Zfc2l6ZSkgewotICAgIGlmIChnZXRtc2coZGF0YV9kZXNjcmlwdG9yLCAKKyAgICBpZiAoZ2V0bXNnKGRhdGFfZGVzY3JpcHRvciwKIAkgICAgICAgMCwKLQkgICAgICAgJnJlY3ZfbWVzc2FnZSwgCisJICAgICAgICZyZWN2X21lc3NhZ2UsCiAJICAgICAgICZmbGFncykgIT0gMCkgewogICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICAgIHNlbmRfcmVzcG9uc2UoKTsKQEAgLTkyNiwxNSArMTE2NiwxNSBAQAogICAgIH0KICAgICBieXRlc19yZWNlaXZlZCArPSByZWN2X21lc3NhZ2UubGVuOwogICAgIHJlY2VpdmVfY2FsbHMrKzsKLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAibmV0c2VydmVyOnJlY3ZfZGxwaV9jb19zdHJlYW06IGdldG1zZyBhY2NlcHRlZCAlZCBieXRlc1xuIiwKIAkgICAgICByZWN2X21lc3NhZ2UubGVuKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQotICAgIAotICAgIAorCisKICNpZmRlZiBESVJUWQogICAgIG1lc3NhZ2VfaW50X3B0ciA9IChpbnQgKiltZXNzYWdlX3B0cjsKICAgICBmb3IgKGkgPSAwOyBpIDwgZGlydHlfY291bnQ7IGkrKykgewpAQCAtOTQ2LDIzICsxMTg2LDIzIEBACiAgICAgICBtZXNzYWdlX2ludF9wdHIrKzsKICAgICB9CiAjZW5kaWYgLyogRElSVFkgKi8KLSAgICAKKwogICB9Ci0gIAorCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gemVybyBieXRlcyByZWNlaXZlZC4gKi8KICAgLyogc2hvdWxkIHBlcmZvcm0gYSBkaXNjb25uZWN0IHRvIHNpZ25hbCB0aGUgc2VuZGVyIHRoYXQgKi8KICAgLyogd2UgaGF2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEgc2VudC4gKi8KLSAgCisKICAgaWYgKGNsb3NlKGRhdGFfZGVzY3JpcHRvcikgPT0gLTEpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGNwdV9zdG9wKGRscGlfY29fc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICAvKiBzZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBzZW5kZXIJCQkqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9kbHBpX2NvX3N0cmVhbTogZ290ICVkIGJ5dGVzXG4iLApAQCAtOTcyLDIxICsxMjEyLDIxIEBACiAJICAgIHJlY2VpdmVfY2FsbHMpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgZGxwaV9jb19zdHJlYW1fcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSBieXRlc19yZWNlaXZlZDsKICAgZGxwaV9jb19zdHJlYW1fcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOwogICBkbHBpX2NvX3N0cmVhbV9yZXN1bHRzLT5yZWN2X2NhbGxzCQk9IHJlY2VpdmVfY2FsbHM7Ci0gIAorCiAgIGlmIChkbHBpX2NvX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIGRscGlfY29fc3RyZWFtX3Jlc3VsdHMtPmNwdV91dGlsCT0gY2FsY19jcHVfdXRpbCgwLjApOwogICB9OwotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGxwaV9jb19zdHJlYW06IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwogfQogDApAQCAtOTk0LDg3ICsxMjM0LDg3IEBACiAKIGludCBzZW5kX2RscGlfY29fcnIoY2hhciByZW1vdGVfaG9zdFtdKQogewotICAKKwogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKICBMb2NhbCAvUmVtb3RlXG5cCiAgV2luZG93IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLlxuXAogIFNlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBSYXRlICAgICAgICAgXG5cCiAgZnJhbWVzIGZyYW1lcyBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAgJS02ZCAlLTZkICUtNmQgICAlLTZkICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogICUtNmQgJS02ZFxuIjsKLSAgCisKICAgY2hhciAqY3B1X3RpdGxlID0gIlwKICBMb2NhbCAvUmVtb3RlXG5cCiAgV2luZG93IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogIFNlbmQgICBSZWN2ICAgU2l6ZSAgICBTaXplICAgVGltZSAgICBSYXRlICAgICBsb2NhbCAgcmVtb3RlIGxvY2FsICAgcmVtb3RlXG5cCiAgZnJhbWVzIGZyYW1lcyBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICAgICAgJSUgICAgICB1cy9UciAgIHVzL1RyXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8xID0gIlwKICAlLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzIgPSAiXAogICUtNmQgJS02ZFxuIjsKLSAgCisKICAgY2hhciAqa3NpbmtfZm10ID0gIlwKICBBbGlnbm1lbnQgICAgICBPZmZzZXRcblwKICBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCiAgU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3ZcblwKICAlNWQgICU1ZCAgICU1ZCAgJTVkXG4iOwotICAKLSAgCisKKwogICBpbnQJCQl0aW1lZF9vdXQgPSAwOwogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKICAgaW50CSAgICBkbHNhcF9sZW47CiAgIGNoYXIgICAgICBkbHNhcFtCVUZTSVpdOwotICAKKwogICBpbnQgICBmbGFncyA9IDA7CiAgIGNoYXIJKnNlbmRfbWVzc2FnZV9wdHI7CiAgIGNoYXIJKnJlY3ZfbWVzc2FnZV9wdHI7CiAgIGNoYXIJKnRlbXBfbWVzc2FnZV9wdHI7CiAgIHN0cnVjdCBzdHJidWYgc2VuZF9tZXNzYWdlOwogICBzdHJ1Y3Qgc3RyYnVmIHJlY3ZfbWVzc2FnZTsKLSAgCisKICAgaW50CW51bW1lc3NhZ2VzOwogICBpbnQJc2VuZF9kZXNjcmlwdG9yOwogICBpbnQJdHJhbnNfcmVtYWluaW5nOwogICBkb3VibGUJYnl0ZXNfeGZlcmQ7Ci0gIAorCiAgIGludAlyc3BfYnl0ZXNfbGVmdDsKLSAgCisKICAgLyogd2UgYXNzdW1lIHRoYXQgc3RhdGlvbiBhZHJlc3NlcyBmaXQgd2l0aGluIHR3byBpbnRzICovCiAgIHVuc2lnbmVkIGludCAgIHJlbW90ZV9hZGRyZXNzWzFdOwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAgIGRvdWJsZQl0aHJ1cHV0OwotICAKKwogICBzdHJ1Y3QJZGxwaV9jb19ycl9yZXF1ZXN0X3N0cnVjdAkqZGxwaV9jb19ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJZGxwaV9jb19ycl9yZXNwb25zZV9zdHJ1Y3QJKmRscGlfY29fcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAlkbHBpX2NvX3JyX3Jlc3VsdHNfc3RydWN0CSpkbHBpX2NvX3JyX3Jlc3VsdDsKLSAgCi0gIGRscGlfY29fcnJfcmVxdWVzdAk9IAorCisgIGRscGlfY29fcnJfcmVxdWVzdAk9CiAgICAgKHN0cnVjdCBkbHBpX2NvX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBkbHBpX2NvX3JyX3Jlc3BvbnNlCT0gCisgIGRscGlfY29fcnJfcmVzcG9uc2UJPQogICAgIChzdHJ1Y3QgZGxwaV9jb19ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBkbHBpX2NvX3JyX3Jlc3VsdAk9IAorICBkbHBpX2NvX3JyX3Jlc3VsdAk9CiAgICAgKHN0cnVjdCBkbHBpX2NvX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZSAqLwogICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCiAgIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCiAgIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKICAgaWYgKCBwcmludF9oZWFkZXJzICkgewogICAgIGZwcmludGYod2hlcmUsIkRMUEkgQ08gUkVRVUVTVC9SRVNQT05TRSBURVNUXG4iKTsKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpCkBAIC0xMDgyLDYyICsxMzIyLDYyIEBACiAgICAgZWxzZQogICAgICAgZnByaW50Zih3aGVyZSx0cHV0X3RpdGxlLGZvcm1hdF91bml0cygpKTsKICAgfQotICAKKwogICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzICovCi0gIAorCiAgIG51bW1lc3NhZ2VzCT0JMDsKICAgYnl0ZXNfeGZlcmQJPQkwLjA7CiAgIHRpbWVzX3VwIAk9IAkwOwotICAKKwogICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVycyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQgKi8KICAgdGVtcF9tZXNzYWdlX3B0ciA9IChjaGFyICopbWFsbG9jKHJlcV9zaXplK01BWEFMSUdOTUVOVCtNQVhPRkZTRVQpOwogICBpZiAodGVtcF9tZXNzYWdlX3B0ciA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIHJlcV9zaXplK01BWEFMSUdOTUVOVCtNQVhPRkZTRVQpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgc2VuZF9tZXNzYWdlX3B0ciA9IChjaGFyICopKCggKGxvbmcpIHRlbXBfbWVzc2FnZV9wdHIgKyAKLQkJCSAgICAgICAobG9uZykgbG9jYWxfc2VuZF9hbGlnbiAtIDEpICYJCisgIHNlbmRfbWVzc2FnZV9wdHIgPSAoY2hhciAqKSgoIChsb25nKSB0ZW1wX21lc3NhZ2VfcHRyICsKKwkJCSAgICAgICAobG9uZykgbG9jYWxfc2VuZF9hbGlnbiAtIDEpICYKIAkJCSAgICAgIH4oKGxvbmcpIGxvY2FsX3NlbmRfYWxpZ24gLSAxKSk7CiAgIHNlbmRfbWVzc2FnZV9wdHIgPSBzZW5kX21lc3NhZ2VfcHRyICsgbG9jYWxfc2VuZF9vZmZzZXQ7CiAgIHNlbmRfbWVzc2FnZS5tYXhsZW4gPSByZXFfc2l6ZStNQVhBTElHTk1FTlQrTUFYT0ZGU0VUOwogICBzZW5kX21lc3NhZ2UubGVuICAgID0gcmVxX3NpemU7CiAgIHNlbmRfbWVzc2FnZS5idWYgICAgPSBzZW5kX21lc3NhZ2VfcHRyOwotICAKKwogICB0ZW1wX21lc3NhZ2VfcHRyID0gKGNoYXIgKiltYWxsb2MocnNwX3NpemUrTUFYQUxJR05NRU5UK01BWE9GRlNFVCk7CiAgIGlmICh0ZW1wX21lc3NhZ2VfcHRyID09IE5VTEwpIHsKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgcnNwX3NpemUrTUFYQUxJR05NRU5UK01BWE9GRlNFVCk7CiAgICAgZXhpdCgxKTsKICAgfQotICByZWN2X21lc3NhZ2VfcHRyID0gKGNoYXIgKikoKCAobG9uZykgdGVtcF9tZXNzYWdlX3B0ciArIAotCQkJICAgICAgIChsb25nKSBsb2NhbF9yZWN2X2FsaWduIC0gMSkgJgkKKyAgcmVjdl9tZXNzYWdlX3B0ciA9IChjaGFyICopKCggKGxvbmcpIHRlbXBfbWVzc2FnZV9wdHIgKworCQkJICAgICAgIChsb25nKSBsb2NhbF9yZWN2X2FsaWduIC0gMSkgJgogCQkJICAgICAgfigobG9uZykgbG9jYWxfcmVjdl9hbGlnbiAtIDEpKTsKICAgcmVjdl9tZXNzYWdlX3B0ciA9IHJlY3ZfbWVzc2FnZV9wdHIgKyBsb2NhbF9yZWN2X29mZnNldDsKICAgcmVjdl9tZXNzYWdlLm1heGxlbiA9IHJzcF9zaXplK01BWEFMSUdOTUVOVCtNQVhPRkZTRVQ7CiAgIHJlY3ZfbWVzc2FnZS5sZW4gICAgPSAwOwogICByZWN2X21lc3NhZ2UuYnVmICAgID0gc2VuZF9tZXNzYWdlX3B0cjsKLSAgCisKICAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgCisKICAgc2VuZF9kZXNjcmlwdG9yID0gZGxfb3Blbihsb2NfZGxwaV9kZXZpY2UsbG9jX3BwYSk7CiAgIGlmIChzZW5kX2Rlc2NyaXB0b3IgPCAwKXsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfZGxwaV9jb19ycjogdGNwIHN0cmVhbSBkYXRhIGRlc2NyaXB0b3IiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInNlbmRfZGxwaV9jb19ycjogc2VuZF9kZXNjcmlwdG9yIG9idGFpbmVkLi4uXG4iKTsKICAgfQotICAKKwogICAvKiBiaW5kIHRoZSBwdXBweSBhbmQgZ2V0IHRoZSBhc3NpZ25lZCBkbHNhcCAqLwotICAKKwogICBkbHNhcF9sZW4gPSBCVUZTSVo7Ci0gIGlmIChkbF9iaW5kKHNlbmRfZGVzY3JpcHRvciwgCisgIGlmIChkbF9iaW5kKHNlbmRfZGVzY3JpcHRvciwKIAkgICAgICBkbHBpX3NhcCwgRExfQ09ETFMsIGRsc2FwLCAmZGxzYXBfbGVuKSAhPSAwKSB7CiAgICAgZnByaW50Zih3aGVyZSwic2VuZF9kbHBpX2NvX3JyOiBiaW5kIGZhaWx1cmVcbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBNb2RpZnkgdGhlIGxvY2FsIHNvY2tldCBzaXplLiBUaGUgcmVhc29uIHdlIGFsdGVyIHRoZSBzZW5kIGJ1ZmZlciAqLwogICAvKiBzaXplIGhlcmUgcmF0aGVyIHRoYW4gd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBtYWRlIGlzIHRvIHRha2UgY2FyZSAqLwogICAvKiBvZiBkZWNyZWFzZXMgaW4gYnVmZmVyIHNpemUuIERlY3JlYXNpbmcgdGhlIHdpbmRvdyBzaXplIGFmdGVyICovCkBAIC0xMTUwLDcgKzEzOTAsNyBAQAogICAvKiB0aGF0IHRoZSBzb2NrZXQgYnVmZmVycyBiZSBhbHRlcmVkLCB3ZSB3aWxsIHRyeSB0byBmaW5kLW91dCB3aGF0ICovCiAgIC8qIHRoZWlyIHZhbHVlcyBhcmUuIElmIHdlIGNhbm5vdCB0b3VjaCB0aGUgc29ja2V0IGJ1ZmZlciBpbiBhbnkgd2F5LCAqLwogICAvKiB3ZSB3aWxsIHNldCB0aGUgdmFsdWVzIHRvIC0xIHRvIGluZGljYXRlIHRoYXQuICAqLwotICAKKwogI2lmZGVmIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRCiAgIGlmIChsc3dfc2l6ZSA+IDApIHsKICAgICBpZiAoZGVidWcgPiAxKSB7CkBAIC0xMTY0LDM2ICsxNDA0LDM2IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Y6ICVkXG4iLGxyd19zaXplKTsKICAgICB9CiAgIH0KLSAgCi0gIAorCisKICAgLyogTm93LCB3ZSB3aWxsIGZpbmQtb3V0IHdoYXQgdGhlIHNpemUgYWN0dWFsbHkgYmVjYW1lLCBhbmQgcmVwb3J0ICovCiAgIC8qIHRoYXQgYmFjayB0byB0aGUgdXNlci4gSWYgdGhlIGNhbGwgZmFpbHMsIHdlIHdpbGwganVzdCByZXBvcnQgYSAtMSAqLwogICAvKiBiYWNrIHRvIHRoZSBpbml0aWF0b3IgZm9yIHRoZSByZWN2IGJ1ZmZlciBzaXplLiAqLwotICAKLSAgCisKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRwZXJmOiBzZW5kX2RscGlfY29fcnI6IHNvY2tldCBzaXplcyBkZXRlcm1pbmVkLi4uXG4iKTsKICAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICBzZW5kOiAlZCByZWN2OiAlZFxuIixsc3dfc2l6ZSxscndfc2l6ZSk7CiAgIH0KLSAgCisKICNlbHNlIC8qIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRICovCi0gIAorCiAgIGxzd19zaXplID0gLTE7CiAgIGxyd19zaXplID0gLTE7Ci0gIAorCiAjZW5kaWYgLyogRExfSFBfU0VUX0xPQ0FMX1dJTl9SRVEgKi8KLSAgCisKICAgLyogSWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCBjcHUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLCB3ZSBtdXN0ICovCiAgIC8qIGNhbGlicmF0ZSB0aGUgY3B1KHMpLiBXZSB3aWxsIHBlcmZvcm0gdGhpcyB0YXNrIHdpdGhpbiB0aGUgdGVzdHMgKi8KICAgLyogdGhlbXNlbHZlcy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGUgY3B1IHJhdGUsIHRoZW4gKi8KICAgLyogY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUgKi8KICAgLyogbm90aGluZyB0byBkby4gSWYgbG9jYWxfY3B1X3JhdGUgaXMgemVybywgdGhlbiB3ZSB3aWxsIGdvIHRocm91Z2ggKi8KICAgLyogYWxsIHRoZSAibm9ybWFsIiBjYWxpYnJhdGlvbiBzdHVmZiBhbmQgcmV0dXJuIHRoZSByYXRlIGJhY2suKi8KLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgIH0KLSAgCisKICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlIHNvY2tldCAqLwogICAvKiBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlIHJlYXNvbiBmb3IgKi8KICAgLyogYWxsIHRoZSB2YWx1ZXMgYmVpbmcgcGFzc2VkIGluIHRoZSBzZXR1cCBtZXNzYWdlLiBJZiB0aGUgdXNlciBkaWQgKi8KQEAgLTEyMDEsNyArMTQ0MSw3IEBACiAgIC8qIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyAqLwogICAvKiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQgd2lsbCAqLwogICAvKiBkZWZhdWx0IHRvIDgsIHdoaWNoIHdpbGwgYmUgbm8gYWxpZ25tZW50IGFsdGVyYXRpb25zLiAqLwotICAKKwogICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUJICAgICAgICA9CURPX0RMUElfQ09fUlI7CiAgIGRscGlfY29fcnJfcmVxdWVzdC0+cmVjdl93aW5fc2l6ZQk9CXJyd19zaXplOwogICBkbHBpX2NvX3JyX3JlcXVlc3QtPnNlbmRfd2luX3NpemUJPQlyc3dfc2l6ZTsKQEAgLTEyMTksNyArMTQ1OSw3IEBACiAgIHN0cmNweShkbHBpX2NvX3JyX3JlcXVlc3QtPmRscGlfZGV2aWNlLAogCSByZW1fZGxwaV9kZXZpY2UpOwogI2lmZGVmIF9fYWxwaGEKLSAgCisKICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaW4ndCByZWFsbHkgd2FudCAqLwogICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgLyogc2VuZF8gYW5kIHJlY3ZfIF9yZXF1ZXN0IGFuZCBfcmVzcG9uc2Ugcm91dGluZXMgYWJvdXQgdGhlIHR5cGVzLCAqLwpAQCAtMTIzMCwzMiArMTQ3MCwzMiBAQAogICAgIGludCAqY2hhcndvcmQ7CiAgICAgaW50ICppbml0d29yZDsKICAgICBpbnQgKmxhc3R3b3JkOwotICAgIAorCiAgICAgaW5pdHdvcmQgPSAoaW50ICopIGRscGlfY29fcnJfcmVxdWVzdC0+ZGxwaV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoc3RybGVuKHJlbV9kbHBpX2RldmljZSkgKyAzKSAvIDQpOwotICAgIAorCiAgICAgZm9yIChjaGFyd29yZCA9IGluaXR3b3JkOwogCSBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSBjaGFyd29yZCsrKSB7Ci0gICAgICAKKwogICAgICAgKmNoYXJ3b3JkID0gbnRvaGwoKmNoYXJ3b3JkKTsKICAgICB9CiAgIH0KICNlbmRpZiAvKiBfX2FscGhhICovCi0gIAorCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICBkbHBpX2NvX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoCT0JdGVzdF90aW1lOwogICB9CiAgIGVsc2UgewogICAgIGRscGlfY29fcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGgJPQl0ZXN0X3RyYW5zICogLTE7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsIm5ldHBlcmY6IHNlbmRfZGxwaV9jb19ycjogcmVxdWVzdGluZyBUQ1Agc3RyZWFtIHRlc3RcbiIpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVxdWVzdCgpOwotICAKKwogICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50IAkqLwogICAvKiBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjayBpbnRvIAkqLwogICAvKiB0aGUgdmFyaWFibGVzIGhlcmUgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGlmIGRlc2lyZWQuICBUaGUJKi8KQEAgLTEyNjUsOSArMTUwNSw5IEBACiAgIC8qIGFmdGVyIHRoZSBjb25uZWN0IHJldHVybnMuIFRoZSByZW1vdGUgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0CSovCiAgIC8qIGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcyB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzCSovCiAgIC8qIGJlaW5nIHNlbnQgZm9yIHRoZSBUQ1AgdGVzdHMuCQkJCQkqLwotICAKKwogICByZWN2X3Jlc3BvbnNlKCk7Ci0gIAorCiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCiAgICAgICBmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTEyNzUsMTcgKzE1MTUsMTcgQEAKICAgICByc3dfc2l6ZQk9CWRscGlfY29fcnJfcmVzcG9uc2UtPnNlbmRfd2luX3NpemU7CiAgICAgcmVtb3RlX2NwdV91c2FnZT0JZGxwaV9jb19ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHU7CiAgICAgcmVtb3RlX2NwdV9yYXRlID0gCWRscGlfY29fcnJfcmVzcG9uc2UtPmNwdV9yYXRlOwotICAgIAorCiAgIH0KICAgZWxzZSB7CiAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKkNvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIGRlc2NyaXB0b3IgICovCi0gIAorCiAgIGlmKGRsX2Nvbm5lY3Qoc2VuZF9kZXNjcmlwdG9yLAogCQlkbHBpX2NvX3JyX3Jlc3BvbnNlLT5zdGF0aW9uX2FkZHIsCiAJCWRscGlfY29fcnJfcmVzcG9uc2UtPnN0YXRpb25fYWRkcl9sZW4pICE9IDApIHsKQEAgLTEyOTMsMTYgKzE1MzMsMTYgQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgdGhlICovCiAgIC8qIGNvbm5lY3Qgd291bGQgaGF2ZSBmYWlsZWQsIG9yIHRoZSBwcmV2aW91cyByZXNwb25zZSB3b3VsZCBoYXZlICovCiAgIC8qIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlIGV4dHJhICovCiAgIC8qIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsIHdlJ2xsIHNlZSBpdCAqLwogICAvKiBoZXJlLiBJZiBpdCBkaWRuJ3QsIHdlIG1pZ2h0IGFzIHdlbGwgc3RhcnQgcHVtcGluZyBkYXRhLiAqLwotICAKKwogICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwogICAvKiBjYW4gYmUgZWl0aGVyIHRpbWUgb3IgdHJhbnNhY3Rpb24gYmFzZWQuICovCi0gIAorCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgdGltZXNfdXAgPSAwOwpAQCAtMTMxNCwxMyArMTU1NCwxMyBAQAogICAgIHRyYW5zX3JlbWFpbmluZyA9IHRlc3RfYnl0ZXM7CiAgICAgdGltZXNfdXAgPSAxOwogICB9Ci0gIAorCiAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KICAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAKKwogICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgCisKICAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcyAqLwogICAvKiBjb250cm9sbGVkIGJ5IHRpbWUsIHRoZSBieXRlIGNvdW50IGNoZWNrIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gKi8KICAgLyogV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3Qgd2lsbCAqLwpAQCAtMTMyOSw3ICsxNTY5LDcgQEAKICAgLyoganVzdCBhcmJpdHJhcmlseSBkZWNyZW1lbnQgdHJhbnNfcmVtYWluaW5nIGZvciB0aGUgdGltZWQgdGVzdCwgYnV0ICovCiAgIC8qIHdpbGwgbm90IGRvIHRoYXQganVzdCB5ZXQuLi4gT25lIG90aGVyIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90ICovCiAgIC8qIHRoZSBzZW5kIGJ1ZmZlciBhbmQgdGhlIHJlY2VpdmUgYnVmZmVyIHNob3VsZCBiZSB0aGUgc2FtZSBidWZmZXIuICovCi0gIAorCiAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKICAgICAvKiBzZW5kIHRoZSByZXF1ZXN0ICovCiAgICAgaWYoKHB1dG1zZyhzZW5kX2Rlc2NyaXB0b3IsCkBAIC0xMzQ1LDEzICsxNTg1LDEzIEBACiAgICAgICBwZXJyb3IoInNlbmRfZGxwaV9jb19ycjogcHV0bXNnIGVycm9yIik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwicmVjdl9tZXNzYWdlLmxlbiAlZFxuIixyZWN2X21lc3NhZ2UubGVuKTsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfbWVzc2FnZS5sZW4gJWRcbiIsc2VuZF9tZXNzYWdlLmxlbik7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KLSAgICAKKwogICAgIC8qIHJlY2VpdmUgdGhlIHJlc3BvbnNlICovCiAgICAgLyogdGhpcyBuZWVkcyBzb21lIHdvcmsgd2l0aCBzdHJlYW1zIGJ1ZmZlcnMgaWYgd2UgYXJlIGdvaW5nIHRvICovCiAgICAgLyogc3VwcG9ydCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGxhcmdlciB0aGFuIHRoZSBNVFUgb2YgdGhlICovCkBAIC0xMzcyLDE5ICsxNjEyLDE5IEBACiAJZXhpdCgxKTsKICAgICAgIH0KICAgICAgIHJzcF9ieXRlc19sZWZ0IC09IHJlY3ZfbWVzc2FnZS5sZW47Ci0gICAgfQkKLSAgICAKKyAgICB9CisKICAgICBpZiAodGltZWRfb3V0KSB7CiAgICAgICAvKiB3ZSBtYXkgaGF2ZSBiZWVuIGluIGEgbmVzdGVkIHdoaWxlIGxvb3AgLSB3ZSBuZWVkICovCiAgICAgICAvKiBhbm90aGVyIGNhbGwgdG8gYnJlYWsuICovCiAgICAgICBicmVhazsKICAgICB9Ci0gICAgCi0gICAgbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCisKKyAgICBudW1tZXNzYWdlcysrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZyA+IDMpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgIlRyYW5zYWN0aW9uICVkIGNvbXBsZXRlZFxuIiwKQEAgLTEzOTIsMjQgKzE2MzIsMjQgQEAKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgdXNlZCB0byBjYWxsIHNodXRkb3duIG9udGhlIGRhdGEgc29ja2V0IHRvIGJlICovCiAgIC8qIHN1cmUgYWxsIHRoZSBkYXRhIHdhcyBkZWxpdmVyZWQsIGJ1dCB0aGlzIHdhcyBub3QgZ2VybWFuZSBpbiBhICovCiAgIC8qIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgYW5kIGl0IHdhcyBjYXVzaW5nIHRoZSB0ZXN0cyB0byAiaGFuZyIgd2hlbiAqLwogICAvKiB0aGV5IHdlcmUgYmVpbmcgY29udHJvbGxlZCBieSB0aW1lLiBTbywgSSBoYXZlIHJlcGxhY2VkIHRoaXMgKi8KICAgLyogc2h1dGRvd24gY2FsbCB3aXRoIGEgY2FsbCB0byBjbG9zZSB0aGF0IGNhbiBiZSBmb3VuZCBsYXRlciBpbiB0aGUgKi8KICAgLyogcHJvY2VkdXJlLiAqLwotICAKKwogICAvKiB0aGlzIGNhbGwgd2lsbCBhbHdheXMgZ2l2ZSB1cyB0aGUgZWxhcHNlZCB0aW1lIGZvciB0aGUgdGVzdCwgYW5kICovCiAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCi0gIAorCiAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyBtZWFzdXJlZD8gKi8KICAgLyogaG93IGxvbmcgZGlkIHdlIHJlYWxseSBydW4/ICovCi0gIAorCiAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kLiBUaGUgcmVtb3RlIHdpbGwgaGF2ZSAqLwogICAvKiBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcgdGhpbmdzLiBJZiBpdCAqLwogICAvKiB3YXNuJ3Qgc3VwcG9zZWQgdG8gY2FyZSwgaXQgd2lsbCByZXR1cm4gb2J2aW91cyB2YWx1ZXMuICovCi0gIAorCiAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgIGlmIChkZWJ1ZykKQEAgLTE0MTgsMTAgKzE2NTgsMTAgQEAKICAgZWxzZSB7CiAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgY2FsY3VsYXRlIHdoYXQgb3VyIHRocnVwdXQgd2FzIGZvciB0aGUgdGVzdC4gSW4gdGhlIGZ1dHVyZSwgKi8KICAgLyogd2UgbWF5IHdhbnQgdG8gaW5jbHVkZSBhIGNhbGN1bGF0aW9uIG9mIHRoZSB0aHJ1cHV0IG1lYXN1cmVkIGJ5ICovCiAgIC8qIHRoZSByZW1vdGUsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGNhc2UgdGhhdCBmb3IgYSBUQ1Agc3RyZWFtIHRlc3QsICovCkBAIC0xNDMyLDExICsxNjcyLDExIEBACiAgIC8qIHNlbmRfc2l6ZSwgc28gd2UgcmVhbGx5IGRpZG4ndCBzZW5kIHdoYXQgaGUgYXNrZWQgZm9yIDstKSBXZSB1c2UgKi8KICAgLyogS2J5dGVzL3MgYXMgdGhlIHVuaXRzIG9mIHRocnVwdXQgZm9yIGEgVENQIHN0cmVhbSB0ZXN0LCB3aGVyZSBLID0gKi8KICAgLyogMTAyNC4gQSBmdXR1cmUgZW5oYW5jZW1lbnQgKm1pZ2h0KiBiZSB0byBjaG9vc2UgZnJvbSBhIGNvdXBsZSBvZiAqLwotICAvKiB1bml0IHNlbGVjdGlvbnMuICovIAotICAKKyAgLyogdW5pdCBzZWxlY3Rpb25zLiAqLworCiAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICB0aHJ1cHV0CQk9IGNhbGNfdGhydXB1dChieXRlc194ZmVyZCk7Ci0gIAorCiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUgKi8KICAgICAvKiB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSAqLwpAQCAtMTQ2Miw3ICsxNzAyLDcgQEAKICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbgk9IC0xLjA7CiAgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAgIGlmIChyZW1vdGVfY3B1X3JhdGUgPT0gMC4wKSB7CiAJZnByaW50Zih3aGVyZSwiREFOR0VSICBEQU5HRVIgIERBTkdFUiAgICBEQU5HRVIgIERBTkdFUiAgREFOR0VSICAgIERBTkdFUiFcbiIpOwpAQCAtMTQ4Miw3ICsxNzIyLDcgQEAKICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSAtMS4wOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciAqLwogICAgIC8qIGhhcyBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgKi8KICAgICAvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCwgb3IgdGhlIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZC4gSWYgdGhlICovCkBAIC0xNDkxLDcgKzE3MzEsNyBAQAogICAgIC8qIG9mIGdyZWF0ZXIgdGhhbiAxLCB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgKi8KICAgICAvKiBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0ICovCiAgICAgLyogbm90IGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtMTU0NiwzMiArMTc4NiwzMiBAQAogCSAgICAgIHRwdXRfZm10XzFfbGluZV8yLAogCSAgICAgIHJzd19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KIAkgICAgICBycndfc2l6ZSk7Ci0gICAgICAKKwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFRDUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICBrc2lua19mbXQpOwogICB9CiAgIC8qIFRoZSB0ZXN0IGlzIG92ZXIuIEtpbGwgdGhlIGRhdGEgZGVzY3JpcHRvciAqLwotICAKKwogICBpZiAoY2xvc2Uoc2VuZF9kZXNjcmlwdG9yKSA9PSAtMSkgewogICAgIHBlcnJvcigic2VuZF9kbHBpX2NvX3JyOiBjYW5ub3Qgc2h1dGRvd24gdGNwIHN0cmVhbSBkZXNjcmlwdG9yIik7CiAgIH0KLSAgCisKIH0KIAwKIHZvaWQKQEAgLTE1ODYsMzggKzE4MjYsMzggQEAKICAgICAiV2luZG93ICBNZXNzYWdlICBFbGFwc2VkICAgICAgTWVzc2FnZXMgICAgICAgICAgICAgICAgXG5cCiBTaXplICAgIFNpemUgICAgIFRpbWUgICAgICAgICBPa2F5IEVycm9ycyAgIFRocm91Z2hwdXRcblwKIGZyYW1lcyAgYnl0ZXMgICAgc2VjcyAgICAgICAgICAgICMgICAgICAjICAgJXMvc2VjXG5cbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzAgPQogICAgICIlNy4yZlxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMSA9CiAgICAgIiU1ZCAgICU1ZCAgICAlLTcuMmYgICAlN2QgJTZkICAgICU3LjJmXG5cCiAlNWQgICAgICAgICAgICAlLTcuMmYgICAlN2QgICAgICAgICAgICU3LjJmXG5cbiI7Ci0gIAotICAKKworCiAgIGNoYXIgKmNwdV90aXRsZSA9CiAgICAgIldpbmRvdyAgTWVzc2FnZSAgRWxhcHNlZCAgICAgIE1lc3NhZ2VzICAgICAgICAgICAgICAgICAgIENQVSAgICAgU2VydmljZVxuXAogU2l6ZSAgICBTaXplICAgICBUaW1lICAgICAgICAgT2theSBFcnJvcnMgICBUaHJvdWdocHV0ICAgVXRpbCAgICBEZW1hbmRcblwKIGZyYW1lcyAgYnl0ZXMgICAgc2VjcyAgICAgICAgICAgICMgICAgICAjICAgJXMvc2VjICAgJSUgICAgICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMSA9CiAgICAgIiU1ZCAgICU1ZCAgICAlLTcuMmYgICAlN2QgJTZkICAgICU3LjFmICAgICAgJS02LjJmICAlLTYuM2ZcblwKICU1ZCAgICAgICAgICAgICUtNy4yZiAgICU3ZCAgICAgICAgICAgJTcuMWYgICAgICAlLTYuMmYgICUtNi4zZlxuXG4iOwotICAKKwogICBpbnQJbWVzc2FnZXNfcmVjdmQ7CiAgIGZsb2F0CWVsYXBzZWRfdGltZSwKLSAgbG9jYWxfY3B1X3V0aWxpemF0aW9uLCAKKyAgbG9jYWxfY3B1X3V0aWxpemF0aW9uLAogICByZW1vdGVfY3B1X3V0aWxpemF0aW9uOwotICAKKwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZCwgcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUJbG9jYWxfdGhydXB1dCwgcmVtb3RlX3RocnVwdXQ7CiAgIGRvdWJsZQlieXRlc19zZW50OwogICBkb3VibGUJYnl0ZXNfcmVjdmQ7Ci0gIAotICAKKworCiAgIGludAkqbWVzc2FnZV9pbnRfcHRyOwogICBjaGFyCSptZXNzYWdlX3B0cjsKICAgY2hhcgkqbWVzc2FnZTsKQEAgLTE2MjUsNyArMTg2NSw3IEBACiAgIHN0cnVjdCBzdHJidWYgc2VuZF9tZXNzYWdlOwogICBzdHJ1Y3Qgc3RyYnVmIHNjdGxfbWVzc2FnZTsKICAgZGxfdW5pdGRhdGFfcmVxX3QgKmRhdGFfcmVxID0gKGRsX3VuaXRkYXRhX3JlcV90ICopc2N0bF9kYXRhOwotICAKKwogICBjaGFyIGRsc2FwW0JVRlNJWl07CiAgIGludCAgZGxzYXBfbGVuOwogICBpbnQJbWVzc2FnZV9vZmZzZXQ7CkBAIC0xNjM0LDU0ICsxODc0LDU0IEBACiAgIGludAlmYWlsZWRfY293czsKICAgaW50IAltZXNzYWdlc19zZW50OwogICBpbnQgCWRhdGFfZGVzY3JpcHRvcjsKLSAgCi0gIAorCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICBpbnQJaW50ZXJ2YWxfY291bnQ7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KICNpZmRlZiBESVJUWQogICBpbnQJaTsKICNlbmRpZiAvKiBESVJUWSAqLwotICAKKwogICBzdHJ1Y3QJZGxwaV9jbF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKmRscGlfY2xfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlkbHBpX2NsX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QJKmRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlOwogICBzdHJ1Y3QJZGxwaV9jbF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKmRscGlfY2xfc3RyZWFtX3Jlc3VsdHM7Ci0gIAorCiAgIGRscGlfY2xfc3RyZWFtX3JlcXVlc3QJPSAoc3RydWN0IGRscGlfY2xfc3RyZWFtX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBkbHBpX2NsX3N0cmVhbV9yZXNwb25zZQk9IChzdHJ1Y3QgZGxwaV9jbF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgZGxwaV9jbF9zdHJlYW1fcmVzdWx0cwk9IChzdHJ1Y3QgZGxwaV9jbF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRmKCJETFBJIENMIFVOSURJUkVDVElPTkFMIFNFTkQgVEVTVFxuIik7CiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKQogICAgICAgcHJpbnRmKGNwdV90aXRsZSxmb3JtYXRfdW5pdHMoKSk7CiAgICAgZWxzZQogICAgICAgcHJpbnRmKHRwdXRfdGl0bGUsZm9ybWF0X3VuaXRzKCkpOwotICB9CQotICAKKyAgfQorCiAgIGZhaWxlZF9zZW5kcwk9IDA7CiAgIG1lc3NhZ2VzX3NlbnQJPSAwOwogICB0aW1lc191cAk9IDA7Ci0gIAorCiAgIC8qc2V0IHVwIHRoZSBkYXRhIGRlc2NyaXB0b3IJCQkqLwotICAKKwogICBkYXRhX2Rlc2NyaXB0b3IgPSBkbF9vcGVuKGxvY19kbHBpX2RldmljZSxsb2NfcHBhKTsKICAgaWYgKGRhdGFfZGVzY3JpcHRvciA8IDApewogICAgIHBlcnJvcigic2VuZF9kbHBpX2NsX3N0cmVhbTogZGF0YSBkZXNjcmlwdG9yIik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBiaW5kIHRoZSBwdXBweSBhbmQgZ2V0IHRoZSBhc3NpZ25lZCBkbHNhcCAqLwogICBkbHNhcF9sZW4gPSBCVUZTSVo7Ci0gIGlmIChkbF9iaW5kKGRhdGFfZGVzY3JpcHRvciwgCisgIGlmIChkbF9iaW5kKGRhdGFfZGVzY3JpcHRvciwKICAgICAgICAgICAgICAgZGxwaV9zYXAsIERMX0NMRExTLCBkbHNhcCwgJmRsc2FwX2xlbikgIT0gMCkgewogICAgIGZwcmludGYod2hlcmUsInNlbmRfZGxwaV9jbF9zdHJlYW06IGJpbmQgZmFpbHVyZVxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIE1vZGlmeSB0aGUgbG9jYWwgc29ja2V0IHNpemUgKFNOREJVRiBzaXplKSAgICAqLwotICAKKwogI2lmZGVmIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRCiAgIGlmIChsc3dfc2l6ZSA+IDApIHsKICAgICBpZiAoZGVidWcgPiAxKSB7CkBAIC0xNjk1LDI1ICsxOTM1LDI1IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Y6ICVkXG4iLGxyd19zaXplKTsKICAgICB9CiAgIH0KLSAgCi0gIAorCisKICAgLyogTm93LCB3ZSB3aWxsIGZpbmQtb3V0IHdoYXQgdGhlIHNpemUgYWN0dWFsbHkgYmVjYW1lLCBhbmQgcmVwb3J0ICovCiAgIC8qIHRoYXQgYmFjayB0byB0aGUgdXNlci4gSWYgdGhlIGNhbGwgZmFpbHMsIHdlIHdpbGwganVzdCByZXBvcnQgYSAtMSAqLwogICAvKiBiYWNrIHRvIHRoZSBpbml0aWF0b3IgZm9yIHRoZSByZWN2IGJ1ZmZlciBzaXplLiAqLwotICAKKwogI2Vsc2UgLyogRExfSFBfU0VUX0xPQ0FMX1dJTl9SRVEgKi8KLSAgCisKICAgbHN3X3NpemUgPSAtMTsKICAgbHJ3X3NpemUgPSAtMTsKLSAgCisKICNlbmRpZiAvKiBETF9IUF9TRVRfTE9DQUxfV0lOX1JFUSAqLwotICAKKwogICAvKiBub3csIHdlIHdhbnQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBzZW5kX3NpemUgKi8KICAgaWYgKHNlbmRfc2l6ZSA9PSAwKSB7CiAgICAgc2VuZF9zaXplID0gMTAyNDsKICAgfQotICAKLSAgCisKKwogICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQgYW5kIG9mZnNldCwgKi8KICAgLyogbW9zdCBvZiB0aGUgbnVtYmVycyBoZXJlIGFyZSBqdXN0IGEgaGFjayB0byBwaWNrIHNvbWV0aGluZyBuaWNlICovCiAgIC8qIGFuZCBiaWcgaW4gYW4gYXR0ZW1wdCB0byBuZXZlciB0cnkgdG8gc2VuZCBhIGJ1ZmZlciBhIHNlY29uZCB0aW1lICovCkBAIC0xNzI1LDMzICsxOTY1LDMzIEBACiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIHNlbmRfc2l6ZSAqIChzZW5kX3dpZHRoICsgMSkgKyBsb2NhbF9zZW5kX2FsaWduICsgbG9jYWxfc2VuZF9vZmZzZXQpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgbWVzc2FnZV9wdHIgPSAoY2hhciAqKSgoIChsb25nKSBtZXNzYWdlICsgCi0JCQkgIChsb25nKSBsb2NhbF9zZW5kX2FsaWduIC0gMSkgJgkKKyAgbWVzc2FnZV9wdHIgPSAoY2hhciAqKSgoIChsb25nKSBtZXNzYWdlICsKKwkJCSAgKGxvbmcpIGxvY2FsX3NlbmRfYWxpZ24gLSAxKSAmCiAJCQkgfigobG9uZykgbG9jYWxfc2VuZF9hbGlnbiAtIDEpKTsKICAgbWVzc2FnZV9wdHIgPSBtZXNzYWdlX3B0ciArIGxvY2FsX3NlbmRfb2Zmc2V0OwogICBtZXNzYWdlID0gbWVzc2FnZV9wdHI7CiAgIHNlbmRfbWVzc2FnZS5tYXhsZW4gPSBzZW5kX3NpemU7CiAgIHNlbmRfbWVzc2FnZS5sZW4gPSBzZW5kX3NpemU7CiAgIHNlbmRfbWVzc2FnZS5idWYgPSBtZXNzYWdlOwotICAKKwogICBzY3RsX21lc3NhZ2UubWF4bGVuID0gQlVGU0laOwogICBzY3RsX21lc3NhZ2UubGVuICAgID0gMDsKICAgc2N0bF9tZXNzYWdlLmJ1ZiAgICA9IHNjdGxfZGF0YTsKLSAgCisKICAgLyogaWYgdGhlIHVzZXIgc3VwcGxpZWQgYSBjcHUgcmF0ZSwgdGhpcyBjYWxsIHdpbGwgY29tcGxldGUgcmF0aGVyICovCiAgIC8qIHF1aWNrbHksIG90aGVyd2lzZSwgdGhlIGNwdSByYXRlIHdpbGwgYmUgcmV0dXJlZCB0byB1cyBmb3IgKi8KICAgLyogcG9zc2libGUgZGlzcGxheS4gVGhlIExpYnJhcnkgd2lsbCBrZWVwIGl0J3Mgb3duIGNvcHkgb2YgdGhpcyBkYXRhICovCiAgIC8qIGZvciB1c2UgZWxzZXdoZXJlLiBXZSB3aWxsIG9ubHkgZGlzcGxheSBpdC4gKERvZXMgdGhhdCBtYWtlIGl0ICovCiAgIC8qICJvcGFxdWUiIHRvIHVzPykgKi8KLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSkKICAgICBsb2NhbF9jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUobG9jYWxfY3B1X3JhdGUpOwotICAKKwogICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIHNldCB1cCB0aGUgZGF0YSBjb25uZWN0aW9uLiBUaGUgc2VydmVyICovCiAgIC8qIHNlbmRzIGJhY2sgdGhlIHBvcnQgbnVtYmVyIGFuZCBhbHRlcnMgdGhlIHNvY2tldCBwYXJhbWV0ZXJzIHRoZXJlLiAqLwogICAvKiBPZiBjb3Vyc2UgdGhpcyBpcyBhIGRhdGFncmFtIHNlcnZpY2Ugc28gbm8gY29ubmVjdGlvbiBpcyBhY3R1YWxseSAqLwogICAvKiBzZXQgdXAsIHRoZSBzZXJ2ZXIganVzdCBzZXRzIHVwIHRoZSBzb2NrZXQgYW5kIGJpbmRzIGl0LiAqLwotICAKKwogICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgICAgICAgICAgICAgICAgID0gRE9fRExQSV9DTF9TVFJFQU07CiAgIGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPnJlY3Zfd2luX3NpemUJICAgICAgICA9IHJyd19zaXplOwogICBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT5tZXNzYWdlX3NpemUJICAgICAgICA9IHNlbmRfc2l6ZTsKQEAgLTE3NjQsOSArMjAwNCw5IEBACiAgIGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPmRldl9uYW1lX2xlbiAgICAgICAgICA9IHN0cmxlbihyZW1fZGxwaV9kZXZpY2UpOwogICBzdHJjcHkoZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+ZGxwaV9kZXZpY2UsCiAJIHJlbV9kbHBpX2RldmljZSk7Ci0gIAorCiAjaWZkZWYgX19hbHBoYQotICAKKwogICAvKiBvayAtIGV2ZW4gb24gYSBERUMgYm94LCBzdHJpbmdzIGFyZSBzdHJpbmdzLiBJIGRpbid0IHJlYWxseSB3YW50ICovCiAgIC8qIHRvIG50b2hsIHRoZSB3b3JkcyBvZiBhIHN0cmluZy4gc2luY2UgSSBkb24ndCB3YW50IHRvIHRlYWNoIHRoZSAqLwogICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0xNzc3LDMxICsyMDE3LDMxIEBACiAgICAgaW50ICpjaGFyd29yZDsKICAgICBpbnQgKmluaXR3b3JkOwogICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgCisKICAgICBpbml0d29yZCA9IChpbnQgKikgZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+ZGxwaV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoc3RybGVuKHJlbV9kbHBpX2RldmljZSkgKyAzKSAvIDQpOwotICAgIAorCiAgICAgZm9yIChjaGFyd29yZCA9IGluaXR3b3JkOwogCSBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSBjaGFyd29yZCsrKSB7Ci0gICAgICAKKwogICAgICAgKmNoYXJ3b3JkID0gbnRvaGwoKmNoYXJ3b3JkKTsKICAgICB9CiAgIH0KICNlbmRpZiAvKiBfX2FscGhhICovCi0gIAorCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT50ZXN0X2xlbmd0aAk9CXRlc3RfdGltZTsKICAgfQogICBlbHNlIHsKICAgICBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT50ZXN0X2xlbmd0aAk9CXRlc3RfYnl0ZXMgKiAtMTsKICAgfQotICAKLSAgCisKKwogICBzZW5kX3JlcXVlc3QoKTsKLSAgCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgaWYgKGRlYnVnKQogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF9kbHBpX2NsX3N0cmVhbTogcmVtb3RlIGRhdGEgY29ubmVjdGlvbiBkb25lLlxuIik7CkBAIC0xODExLDExICsyMDUxLDExIEBACiAgICAgcGVycm9yKCJzZW5kX2RscGlfY2xfc3RyZWFtOiBlcnJvciBvbiByZW1vdGUiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIHBsYWNlIHNvbWUgb2YgdGhlIHJlbW90ZSdzIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24gaW50byB0aGUgc2VuZCAqLwogICAvKiBzdHJ1Y3R1cmUgc28gb3VyIHNlbmRzIGNhbiBiZSBzZW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlLiBBbHNvIGdldCAqLwogICAvKiBzb21lIG9mIHRoZSByZXR1cm5lZCBzb2NrZXQgYnVmZmVyIGluZm9ybWF0aW9uIGZvciB1c2VyIGRpc3BsYXkuICovCi0gIAorCiAgIC8qIHNldC11cCB0aGUgZGVzdGluYXRpb24gYWRkcmVzc2luZyBjb250cm9sIGluZm8gKi8KICAgZGF0YV9yZXEtPmRsX3ByaW1pdGl2ZSA9IERMX1VOSVREQVRBX1JFUTsKICAgYmNvcHkoKGNoYXIgKikoZGxwaV9jbF9zdHJlYW1fcmVzcG9uc2UtPnN0YXRpb25fYWRkciksCkBAIC0xODMwLDI1ICsyMDcwLDI1IEBACiAgIGRhdGFfcmVxLT5kbF9wcmlvcml0eS5kbF9taW4gPSBETF9RT1NfRE9OVF9DQVJFOwogICBkYXRhX3JlcS0+ZGxfcHJpb3JpdHkuZGxfbWF4ID0gRExfUU9TX0RPTlRfQ0FSRTsKIAotICBzY3RsX21lc3NhZ2UubGVuID0gc2l6ZW9mKGRsX3VuaXRkYXRhX3JlcV90KSArIAorICBzY3RsX21lc3NhZ2UubGVuID0gc2l6ZW9mKGRsX3VuaXRkYXRhX3JlcV90KSArCiAgICAgZGF0YV9yZXEtPmRsX2Rlc3RfYWRkcl9sZW5ndGg7Ci0gIAorCiAgIHJyd19zaXplCSAgICAgICAgPSBkbHBpX2NsX3N0cmVhbV9yZXNwb25zZS0+cmVjdl93aW5fc2l6ZTsKICAgcnN3X3NpemUJICAgICAgICA9IGRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlLT5zZW5kX3dpbl9zaXplOwogICByZW1vdGVfY3B1X3JhdGUJPSBkbHBpX2NsX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGU7Ci0gIAotICAKKworCiAgIC8qIHNldCB1cCB0aGUgdGltZXIgdG8gY2FsbCB1cyBhZnRlciB0ZXN0X3RpbWUJKi8KICAgc3RhcnRfdGltZXIodGVzdF90aW1lKTsKLSAgCisKICAgLyogR2V0IHRoZSBzdGFydCBjb3VudCBmb3IgdGhlIGlkbGUgY291bnRlciBhbmQgdGhlIHN0YXJ0IHRpbWUgKi8KLSAgCisKICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7Ci0gIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgaW50ZXJ2YWxfY291bnQgPSBpbnRlcnZhbF9idXJzdDsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAKKwogICAvKiBTZW5kIGRhdGFncmFtcyBsaWtlIHRoZXJlIHdhcyBubyB0b21vcnJvdyAqLwogICB3aGlsZSAoIXRpbWVzX3VwKSB7CiAjaWZkZWYgRElSVFkKQEAgLTE4ODgsMTIgKzIxMjgsMTIgQEAKICAgICAgIH0KICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIG1lc3NhZ2VzX3NlbnQrKzsgICAgICAgICAgCi0gICAgCisgICAgbWVzc2FnZXNfc2VudCsrOworCiAgICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgKi8KICAgICAvKiBkYXRhIGJ1ZmZlci4uLnNpbmNlIHRoZXJlIHdhcyBhIHN1Y2Nlc3NmdWwgc2VuZCAqLwotICAgIAotICAgIAorCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGludGVydmFsIGNvdW50IGlzIHRoZSBjb3VudC1kb3duIGNvdXRlciAqLwogICAgIC8qIHRvIGRlY2lkZSB0byBzbGVlcCBmb3IgYSBsaXR0bGUgYml0ICovCkBAIC0xOTA2LDIwICsyMTQ2LDIwIEBACiAgICAgICB9CiAgICAgICBpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OwogICAgIH0KLSAgICAKKwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgCisKICAgfQotICAKKwogICAvKiBUaGlzIGlzIGEgdGltZWQgdGVzdCwgc28gdGhlIHJlbW90ZSB3aWxsIGJlIHJldHVybmluZyB0byB1cyBhZnRlciAqLwogICAvKiBhIHRpbWUuIFdlIHNob3VsZCBub3QgbmVlZCB0byBzZW5kIGFueSAic3RyYW5nZSIgbWVzc2FnZXMgdG8gdGVsbCAqLwogICAvKiB0aGUgcmVtb3RlIHRoYXQgdGhlIHRlc3QgaXMgY29tcGxldGVkLCB1bmxlc3Mgd2UgZGVjaWRlIHRvIGFkZCBhICovCiAgIC8qIG51bWJlciBvZiBtZXNzYWdlcyB0byB0aGUgdGVzdC4gKi8KLSAgCisKICAgLyogdGhlIHRlc3QgaXMgb3Zlciwgc28gZ2V0IHN0YXRzIGFuZCBzdHVmZiAqLwotICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsCQorICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsCiAJICAgJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kCSovCiAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewpAQCAtMTkzMSwxOSArMjE3MSwxOSBAQAogICAgIHBlcnJvcigic2VuZF9kbHBpX2NsX3N0cmVhbTogZXJyb3Igb24gcmVtb3RlIik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBieXRlc19zZW50CT0gc2VuZF9zaXplICogbWVzc2FnZXNfc2VudDsKICAgbG9jYWxfdGhydXB1dAk9IGNhbGNfdGhydXB1dChieXRlc19zZW50KTsKLSAgCisKICAgbWVzc2FnZXNfcmVjdmQJPSBkbHBpX2NsX3N0cmVhbV9yZXN1bHRzLT5tZXNzYWdlc19yZWN2ZDsKICAgYnl0ZXNfcmVjdmQJPSBzZW5kX3NpemUgKiBtZXNzYWdlc19yZWN2ZDsKLSAgCisKICAgLyogd2UgYXN1bWUgdGhhdCB0aGUgcmVtb3RlIHJhbiBmb3IgYXMgbG9uZyBhcyB3ZSBkaWQgKi8KLSAgCisKICAgcmVtb3RlX3RocnVwdXQJPSBjYWxjX3RocnVwdXQoYnl0ZXNfcmVjdmQpOwotICAKKwogICAvKiBwcmludCB0aGUgcmVzdWx0cyBmb3IgdGhpcyBkZXNjcmlwdG9yIGFuZCBtZXNzYWdlIHNpemUgKi8KLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGZvciB0aGUgc3lzdGVtKHMpIFdlIHBhc3MgemVyb3MgZm9yIHRoZSBsb2NhbCAqLwpAQCAtMTk1NSw3ICsyMTk1LDcgQEAKIAlmcHJpbnRmKHdoZXJlLCJMb2NhbCBDUFUgdXNhZ2UgbnVtYmVycyBiYXNlZCBvbiBwcm9jZXNzIGluZm9ybWF0aW9uIG9ubHkhXG4iKTsKIAlmZmx1c2god2hlcmUpOwogICAgICAgfQotICAgICAgCisKICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbgk9IGNhbGNfY3B1X3V0aWwoMC4wKTsKICAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gY2FsY19zZXJ2aWNlX2RlbWFuZChieXRlc19zZW50LAogCQkJCQkJICAgICAgMC4wLApAQCAtMTk2Niw3ICsyMjA2LDcgQEAKICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbgk9IC0xLjA7CiAgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgLyogVGhlIGxvY2FsIGNhbGN1bGF0aW9ucyBjb3VsZCB1c2UgdmFyaWFibGVzIGJlaW5nIGtlcHQgYnkgKi8KICAgICAvKiB0aGUgbG9jYWwgbmV0bGliIHJvdXRpbmVzLiBUaGUgcmVtb3RlIGNhbGN1YXRpb25zIG5lZWQgdG8gKi8KICAgICAvKiBoYXZlIGEgZmV3IHRoaW5ncyBwYXNzZWQgdG8gdGhlbS4gKi8KQEAgLTE5NzYsNyArMjIxNiw3IEBACiAJZnByaW50Zih3aGVyZSwiUkVNT1RFIENQVSB1c2FnZSBudW1iZXJzIGJhc2VkIG9uIHByb2Nlc3MgaW5mb3JtYXRpb24gb25seSFcbiIpOwogCWZmbHVzaCh3aGVyZSk7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbgk9IGRscGlfY2xfc3RyZWFtX3Jlc3VsdHMtPmNwdV91dGlsOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kCT0gY2FsY19zZXJ2aWNlX2RlbWFuZChieXRlc19yZWN2ZCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTE5ODcsNyArMjIyNyw3IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uCT0gLTEuMDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZAk9IC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciAqLwogICAgIC8qIGhhcyBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgKi8KICAgICAvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCwgb3IgdGhlIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZC4gSWYgdGhlICovCkBAIC0xOTk2LDcgKzIyMzYsNyBAQAogICAgIC8qIG9mIGdyZWF0ZXIgdGhhbiAxLCB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgKi8KICAgICAvKiBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0ICovCiAgICAgLyogbm90IGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtMjA2MCw3ICsyMzAwLDcgQEAKIGludAogICByZWN2X2RscGlfY2xfc3RyZWFtKCkKIHsKLSAgCisKICAgY2hhciAgKm1lc3NhZ2U7CiAgIGludAlkYXRhX2Rlc2NyaXB0b3I7CiAgIGludAlsZW47CkBAIC0yMDcyLDI3ICsyMzEyLDI3IEBACiAgIC8qIHRoZXNlIGFyZSB0byBtYWtlIHJlYWRpbmcgc29tZSBvZiB0aGUgRExQSSBjb250cm9sIG1lc3NhZ2VzIGVhc2llciAqLwogICBkbF91bml0ZGF0YV9pbmRfdCAqZGF0YV9pbmQgPSAoZGxfdW5pdGRhdGFfaW5kX3QgKilyY3RsX2RhdGE7CiAgIGRsX3VkZXJyb3JfaW5kX3QgICp1ZGVyX2luZCA9IChkbF91ZGVycm9yX2luZF90ICopcmN0bF9kYXRhOwotICAKKwogICBpbnQJYnl0ZXNfcmVjZWl2ZWQgPSAwOwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIGludAltZXNzYWdlX3NpemU7CiAgIGludAltZXNzYWdlc19yZWN2ZCA9IDA7CiAgIGludAltZWFzdXJlX2NwdTsKLSAgCisKICAgc3RydWN0CWRscGlfY2xfc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSpkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0OwogICBzdHJ1Y3QJZGxwaV9jbF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSpkbHBpX2NsX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CWRscGlfY2xfc3RyZWFtX3Jlc3VsdHNfc3RydWN0CSpkbHBpX2NsX3N0cmVhbV9yZXN1bHRzOwotICAKKwogICBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0CT0gKHN0cnVjdCBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgZGxwaV9jbF9zdHJlYW1fcmVzcG9uc2UJPSAoc3RydWN0IGRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIGRscGlfY2xfc3RyZWFtX3Jlc3VsdHMJPSAoc3RydWN0IGRscGlfY2xfc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X2RscGlfY2xfc3RyZWFtOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gZGVzY3JpcHRvciB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwogICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCiAgIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCkBAIC0yMTAwLDE5ICsyMzQwLDE5IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGxwaV9jbF9zdHJlYW06IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBETFBJX0NMX1NUUkVBTV9SRVNQT05TRTsKLSAgCisKICAgaWYgKGRlYnVnID4gMikgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGxwaV9jbF9zdHJlYW06IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTIxMjQsMTAgKzIzNjQsMTAgQEAKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgREFUQUJVRkZFUkxFTik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlIHRvIGJlIGF0IHRoZSBkZXNpcmVkICovCiAgIC8qIGFsaWdubWVudCB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldC4gKi8KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGxwaV9jbF9zdHJlYW06IHJlcXVlc3RlZCBhbGlnbm1lbnQgb2YgJWRcbiIsCiAJICAgIGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50KTsKQEAgLTIxMzUsNyArMjM3NSw3IEBACiAgIH0KIAogICBtZXNzYWdlX3B0ciA9IEFMSUdOX0JVRkZFUihtZXNzYWdlLCBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCwgZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+cmVjdl9vZmZzZXQpOwotICAKKwogICBpZiAoZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+bWVzc2FnZV9zaXplID4gMCkgewogICAgIHJlY3ZfbWVzc2FnZS5tYXhsZW4gPSBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT5tZXNzYWdlX3NpemU7CiAgIH0KQEAgLTIxNDQsMjQgKzIzODQsMjQgQEAKICAgfQogICByZWN2X21lc3NhZ2UubGVuICAgID0gMDsKICAgcmVjdl9tZXNzYWdlLmJ1ZiAgICA9IG1lc3NhZ2VfcHRyOwotICAKKwogICByY3RsX21lc3NhZ2UubWF4bGVuID0gQlVGU0laOwogICByY3RsX21lc3NhZ2UubGVuICAgID0gMDsKICAgcmN0bF9tZXNzYWdlLmJ1ZiAgICA9IHJjdGxfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X2RscGlfY2xfc3RyZWFtOiByZWNlaXZlIGFsaWdubWVudCBhbmQgb2Zmc2V0IHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kbHBpX2NsX3N0cmVhbTogZ3JhYmJpbmcgYSBkZXNjcmlwdG9yLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAjaWZkZWYgX19hbHBoYQotICAKKwogICAvKiBvayAtIGV2ZW4gb24gYSBERUMgYm94LCBzdHJpbmdzIGFyZSBzdHJpbmdzLiBJIGRpbid0IHJlYWxseSB3YW50ICovCiAgIC8qIHRvIG50b2hsIHRoZSB3b3JkcyBvZiBhIHN0cmluZy4gc2luY2UgSSBkb24ndCB3YW50IHRvIHRlYWNoIHRoZSAqLwogICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0yMTcyLDE5ICsyNDEyLDE5IEBACiAgICAgaW50ICpjaGFyd29yZDsKICAgICBpbnQgKmluaXR3b3JkOwogICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgCisKICAgICBpbml0d29yZCA9IChpbnQgKikgZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+ZGxwaV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+ZGV2X25hbWVfbGVuICsgMykgLyA0KTsKLSAgICAKKwogICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgY2hhcndvcmQgPCBsYXN0d29yZDsKIAkgY2hhcndvcmQrKykgewotICAgICAgCisKICAgICAgICpjaGFyd29yZCA9IGh0b25sKCpjaGFyd29yZCk7CiAgICAgfQogICB9CiAjZW5kaWYgLyogX19hbHBoYSAqLwotICAKKwogICBkYXRhX2Rlc2NyaXB0b3IgPSBkbF9vcGVuKGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPmRscGlfZGV2aWNlLAogCQkJICAgIGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPnBwYSk7CiAgIGlmIChkYXRhX2Rlc2NyaXB0b3IgPCAwKSB7CkBAIC0yMTkyLDI4ICsyNDMyLDI4IEBACiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogVGhlIGluaXRpYXRvciBtYXkgaGF2ZSB3aXNoZWQtdXMgdG8gbW9kaWZ5IHRoZSB3aW5kb3cgKi8KICAgLyogc2l6ZXMuIFdlIHNob3VsZCBnaXZlIGl0IGEgc2hvdC4gSWYgaGUgZGlkbid0IGFzayB1cyB0byBjaGFuZ2UgdGhlICovCiAgIC8qIHNpemVzLCB3ZSBzaG91bGQgbGV0IGhpbSBrbm93IHdoYXQgc2l6ZXMgd2VyZSBpbiB1c2UgYXQgdGhpcyBlbmQuICovCiAgIC8qIElmIG5vbmUgb2YgdGhpcyBjb2RlIGlzIGNvbXBpbGVkLWluLCB0aGVuIHdlIHdpbGwgdGVsbCB0aGUgKi8KICAgLyogaW5pdGlhdG9yIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gcGxheSB3aXRoIHRoZSBzaXplcyBieSAqLwogICAvKiBzZXR0aW5nIHRoZSBzaXplIGluIHRoZSByZXNwb25zZSB0byAtMS4gKi8KLSAgCisKICNpZmRlZiBETF9IUF9TRVRfTE9DQUxfV0lOX1JFUQotICAKKwogICBpZiAoZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+cmVjdl93aW5fc2l6ZSkgewogICAgIGRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlLT5yZWN2X3dpbl9zaXplCT0gLTE7CiAgIH0KLSAgCisKICNlbHNlIC8qIHRoZSBzeXN0ZW0gd29uJ3QgbGV0IHVzIHBsYXkgd2l0aCB0aGUgYnVmZmVycyAqLwotICAKKwogICBkbHBpX2NsX3N0cmVhbV9yZXNwb25zZS0+cmVjdl93aW5fc2l6ZQk9IC0xOwotICAKKwogI2VuZGlmIC8qIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRICovCi0gIAorCiAgIGRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlLT50ZXN0X2xlbmd0aCA9IGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPnRlc3RfbGVuZ3RoOwotICAKKwogICAvKiBiaW5kIHRoZSBzYXAgYW5kIHJldHJpZXZlIHRoZSBkbHNhcCBhc3NpZ25lZCBieSB0aGUgc3lzdGVtICAqLwogICBkbHBpX2NsX3N0cmVhbV9yZXNwb25zZS0+c3RhdGlvbl9hZGRyX2xlbiA9IDE0OyAvKiBhcmJpdHJhcnkgKi8KICAgaWYgKGRsX2JpbmQoZGF0YV9kZXNjcmlwdG9yLApAQCAtMjIyNSwxNSArMjQ2NSwxNSBAQAogICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyAgID0gMDsKLSAgCisKICAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywgKi8KICAgLyogdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbWF4ICovCiAgIC8qIHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUgbWVhc3VyZWQsIG9yICovCiAgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsIHJldHVybiBhIC0xIHRvICovCiAgIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCiAgIGRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IDAuMDsgCS8qIGFzc3VtZSBubyBjcHUgKi8KICAgaWYgKGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgLyogV2Ugd2lsbCBwYXNzIHRoZSByYXRlIGludG8gdGhlIGNhbGlicmF0aW9uIHJvdXRpbmUuIElmIHRoZSAqLwpAQCAtMjI0MywzMyArMjQ4MywzMyBAQAogICAgIGRscGlfY2xfc3RyZWFtX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7CiAgICAgZGxwaV9jbF9zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT5jcHVfcmF0ZSk7CiAgIH0KLSAgCisKICAgbWVzc2FnZV9zaXplCT0gZGxwaV9jbF9zdHJlYW1fcmVxdWVzdC0+bWVzc2FnZV9zaXplOwogICB0ZXN0X3RpbWUJPSBkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT50ZXN0X2xlbmd0aDsKLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydChkbHBpX2NsX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSB0aW1lciBwb3BzLCBvciBpZiB3ZSBoYXBwZW4gdG8gcmVjdiBhICovCiAgIC8qIG1lc3NhZ2Ugb2YgbGVzcyB0aGFuIHNlbmRfc2l6ZSBieXRlcy4uLiAqLwotICAKKwogICB0aW1lc191cCA9IDA7CiAgIHN0YXJ0X3RpbWVyKHRlc3RfdGltZSArIFBBRF9USU1FKTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kbHBpX2NsX3N0cmVhbTogYWJvdXQgdG8gZW50ZXIgaW5uZXIgc2FuY3R1bS5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgd2hpbGUgKCF0aW1lc191cCkgewotICAgIGlmKChnZXRtc2coZGF0YV9kZXNjcmlwdG9yLCAKLQkgICAgICAgJnJjdGxfbWVzc2FnZSwgICAgCisgICAgaWYoKGdldG1zZyhkYXRhX2Rlc2NyaXB0b3IsCisJICAgICAgICZyY3RsX21lc3NhZ2UsCiAJICAgICAgICZyZWN2X21lc3NhZ2UsCi0JICAgICAgICZmbGFncykgIT0gMCkgfHwgCisJICAgICAgICZmbGFncykgIT0gMCkgfHwKICAgICAgICAoZGF0YV9pbmQtPmRsX3ByaW1pdGl2ZSAhPSBETF9VTklUREFUQV9JTkQpKSB7CiAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKIAkvKiBBZ2Fpbiwgd2UgaGF2ZSBsaWtlbHkgaGl0IHRlc3QtZW5kIHRpbWUgKi8KQEAgLTIyODYsMTcgKzI1MjYsMTcgQEAKICAgICB9CiAgICAgbWVzc2FnZXNfcmVjdmQrKzsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY2xfc3RyZWFtOiBnb3QgJWQgbWVzc2FnZXMuXG4iLG1lc3NhZ2VzX3JlY3ZkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdGltZXIgb3IgPCBzZW5kX3NpemUgYnl0ZXMgcmVjZWl2ZWQuICovCi0gIAorCiAgIGNwdV9zdG9wKGRscGlfY2xfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICBpZiAodGltZXNfdXApIHsKICAgICAvKiB3ZSBlbmRlZCBvbiBhIHRpbWVyLCBzdWJ0cmFjdCB0aGUgUEFEX1RJTUUgKi8KICAgICBlbGFwc2VkX3RpbWUgLT0gKGZsb2F0KVBBRF9USU1FOwpAQCAtMjMwNCwyNSArMjU0NCwyNSBAQAogICBlbHNlIHsKICAgICBzdG9wX3RpbWVyKCk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kbHBpX2NsX3N0cmVhbTogdGVzdCBlbmRlZCBpbiAlZiBzZWNvbmRzLlxuIixlbGFwc2VkX3RpbWUpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIAorCisKICAgLyogV2Ugd2lsbCBjb3VudCB0aGUgIm9mZiIgbWVzc2FnZSAqLwogICBieXRlc19yZWNlaXZlZCA9IChtZXNzYWdlc19yZWN2ZCAqIG1lc3NhZ2Vfc2l6ZSkgKyBsZW47Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X2RscGlfY2xfc3RyZWFtOiBnb3QgJWQgYnl0ZXNcbiIsCiAJICAgIGJ5dGVzX3JlY2VpdmVkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlCQk9IERMUElfQ0xfU1RSRUFNX1JFU1VMVFM7CiAgIGRscGlfY2xfc3RyZWFtX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gYnl0ZXNfcmVjZWl2ZWQ7CiAgIGRscGlfY2xfc3RyZWFtX3Jlc3VsdHMtPm1lc3NhZ2VzX3JlY3ZkCT0gbWVzc2FnZXNfcmVjdmQ7CkBAIC0yMzMzLDU4ICsyNTczLDU4IEBACiAgIGVsc2UgewogICAgIGRscGlfY2xfc3RyZWFtX3Jlc3VsdHMtPmNwdV91dGlsCT0gLTEuMDsKICAgfQotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGxwaV9jbF9zdHJlYW06IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogfQogDAogaW50IHNlbmRfZGxwaV9jbF9ycihjaGFyIHJlbW90ZV9ob3N0W10pCiB7Ci0gIAorCiAgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogV2luZG93IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLlxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgICBTaXplICAgIFRpbWUgICAgIFJhdGUgICAgICAgICBcblwKIGZyYW1lcyBmcmFtZXMgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgXG5cbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzAgPQogICAgICIlNy4yZlxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICAlLTZkICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogV2luZG93IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgIFJhdGUgICAgIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKIGZyYW1lcyBmcmFtZXMgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAgICAgICUlICAgICAgdXMvVHIgICB1cy9UclxuXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzAgPQogICAgICIlNi4zZlxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0XG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCiBTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdlxuXAogJTVkICAlNWQgICAlNWQgICU1ZFxuIjsKLSAgCi0gIAorCisKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIGludCAgIGRsc2FwX2xlbjsKICAgaW50ICAgZmxhZ3MgPSAwOwogICBjaGFyCSpzZW5kX21lc3NhZ2VfcHRyOwpAQCAtMjM5NywyMyArMjYzNywyMyBAQAogICBzdHJ1Y3Qgc3RyYnVmIHJlY3ZfbWVzc2FnZTsKICAgc3RydWN0IHN0cmJ1ZiBzY3RsX21lc3NhZ2U7CiAgIHN0cnVjdCBzdHJidWYgcmN0bF9tZXNzYWdlOwotICAKKwogICAvKiB0aGVzZSBhcmUgdG8gbWFrZSByZWFkaW5nIHNvbWUgb2YgdGhlIERMUEkgY29udHJvbCBtZXNzYWdlcyBlYXNpZXIgKi8KICAgZGxfdW5pdGRhdGFfaW5kX3QgKmRhdGFfaW5kID0gKGRsX3VuaXRkYXRhX2luZF90ICopcmN0bF9kYXRhOwogICBkbF91bml0ZGF0YV9yZXFfdCAqZGF0YV9yZXEgPSAoZGxfdW5pdGRhdGFfcmVxX3QgKilzY3RsX2RhdGE7CiAgIGRsX3VkZXJyb3JfaW5kX3QgICp1ZGVyX2luZCA9IChkbF91ZGVycm9yX2luZF90ICopcmN0bF9kYXRhOwotICAKKwogICBpbnQJbnVtbWVzc2FnZXM7CiAgIGludAlzZW5kX2Rlc2NyaXB0b3I7CiAgIGludAl0cmFuc19yZW1haW5pbmc7CiAgIGludAlieXRlc194ZmVyZDsKLSAgCisKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKICAgZmxvYXQJcmVtb3RlX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUgdGhydXB1dDsKLSAgCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAvKiB0aW1pbmcgc3R1ZmYgKi8KICNkZWZpbmUJTUFYX0tFUFRfVElNRVMJMTAyNApAQCAtMjQyNywxOCArMjY2NywxOCBAQAogICBzdHJ1Y3QJdGltZXZhbAkJcmVjdl90aW1lOwogICBzdHJ1Y3QJdGltZXZhbAkJc2xlZXBfdGltZXZhbDsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAKKwogICBzdHJ1Y3QJZGxwaV9jbF9ycl9yZXF1ZXN0X3N0cnVjdAkqZGxwaV9jbF9ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJZGxwaV9jbF9ycl9yZXNwb25zZV9zdHJ1Y3QJKmRscGlfY2xfcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAlkbHBpX2NsX3JyX3Jlc3VsdHNfc3RydWN0CSpkbHBpX2NsX3JyX3Jlc3VsdDsKLSAgCi0gIGRscGlfY2xfcnJfcmVxdWVzdAk9IAorCisgIGRscGlfY2xfcnJfcmVxdWVzdAk9CiAgICAgKHN0cnVjdCBkbHBpX2NsX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBkbHBpX2NsX3JyX3Jlc3BvbnNlCT0gCisgIGRscGlfY2xfcnJfcmVzcG9uc2UJPQogICAgIChzdHJ1Y3QgZGxwaV9jbF9ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBkbHBpX2NsX3JyX3Jlc3VsdAk9IAorICBkbHBpX2NsX3JyX3Jlc3VsdAk9CiAgICAgKHN0cnVjdCBkbHBpX2NsX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgLyogd2Ugd2FudCB0byB6ZXJvIG91dCB0aGUgdGltZXMsIHNvIHdlIGNhbiBkZXRlY3QgdW51c2VkIGVudHJpZXMuICovCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgdGltZV9pbmRleCA9IDA7CkBAIC0yNDQ4LDcgKzI2ODgsNyBAQAogICB9CiAgIHRpbWVfaW5kZXggPSAwOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gIAorCiAgIGlmIChwcmludF9oZWFkZXJzKSB7CiAgICAgZnByaW50Zih3aGVyZSwiRExQSSBDTCBSRVFVRVNUL1JFU1BPTlNFIFRFU1RcbiIpOwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkKQEAgLTI0NTYsNjAgKzI2OTYsNjAgQEAKICAgICBlbHNlCiAgICAgICBmcHJpbnRmKHdoZXJlLHRwdXRfdGl0bGUsZm9ybWF0X3VuaXRzKCkpOwogICB9Ci0gIAorCiAgIC8qIGluaXRpYWxpemUgYSBmZXcgY291bnRlcnMgKi8KLSAgCisKICAgbnVtbWVzc2FnZXMJPQkwOwogICBieXRlc194ZmVyZAk9CTA7CiAgIHRpbWVzX3VwIAk9IAkwOwotICAKKwogICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQgYW5kIG9mZnNldCAqLwogICB0ZW1wX21lc3NhZ2VfcHRyID0gKGNoYXIgKiltYWxsb2MocmVxX3NpemUrTUFYQUxJR05NRU5UK01BWE9GRlNFVCk7CiAgIGlmICh0ZW1wX21lc3NhZ2VfcHRyID09IE5VTEwpIHsKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgcmVxX3NpemUrTUFYQUxJR05NRU5UK01BWE9GRlNFVCk7CiAgICAgZXhpdCgxKTsKICAgfQotICBzZW5kX21lc3NhZ2VfcHRyID0gKGNoYXIgKikoKCAobG9uZyl0ZW1wX21lc3NhZ2VfcHRyICsgCi0JCQkgICAgICAgKGxvbmcpIGxvY2FsX3NlbmRfYWxpZ24gLSAxKSAmCQorICBzZW5kX21lc3NhZ2VfcHRyID0gKGNoYXIgKikoKCAobG9uZyl0ZW1wX21lc3NhZ2VfcHRyICsKKwkJCSAgICAgICAobG9uZykgbG9jYWxfc2VuZF9hbGlnbiAtIDEpICYKIAkJCSAgICAgIH4oKGxvbmcpIGxvY2FsX3NlbmRfYWxpZ24gLSAxKSk7CiAgIHNlbmRfbWVzc2FnZV9wdHIgPSBzZW5kX21lc3NhZ2VfcHRyICsgbG9jYWxfc2VuZF9vZmZzZXQ7CiAgIHNlbmRfbWVzc2FnZS5tYXhsZW4gPSByZXFfc2l6ZTsKICAgc2VuZF9tZXNzYWdlLmxlbiAgICA9IHJlcV9zaXplOwogICBzZW5kX21lc3NhZ2UuYnVmICAgID0gc2VuZF9tZXNzYWdlX3B0cjsKLSAgCisKICAgdGVtcF9tZXNzYWdlX3B0ciA9IChjaGFyICopbWFsbG9jKHJzcF9zaXplK01BWEFMSUdOTUVOVCtNQVhPRkZTRVQpOwogICBpZiAodGVtcF9tZXNzYWdlX3B0ciA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIHJzcF9zaXplK01BWEFMSUdOTUVOVCtNQVhPRkZTRVQpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgcmVjdl9tZXNzYWdlX3B0ciA9IChjaGFyICopKCggKGxvbmcpdGVtcF9tZXNzYWdlX3B0ciArIAotCQkJICAgICAgIChsb25nKSBsb2NhbF9yZWN2X2FsaWduIC0gMSkgJgkKKyAgcmVjdl9tZXNzYWdlX3B0ciA9IChjaGFyICopKCggKGxvbmcpdGVtcF9tZXNzYWdlX3B0ciArCisJCQkgICAgICAgKGxvbmcpIGxvY2FsX3JlY3ZfYWxpZ24gLSAxKSAmCiAJCQkgICAgICB+KChsb25nKSBsb2NhbF9yZWN2X2FsaWduIC0gMSkpOwogICByZWN2X21lc3NhZ2VfcHRyID0gcmVjdl9tZXNzYWdlX3B0ciArIGxvY2FsX3JlY3Zfb2Zmc2V0OwogICByZWN2X21lc3NhZ2UubWF4bGVuID0gcnNwX3NpemU7CiAgIHJlY3ZfbWVzc2FnZS5sZW4gICAgPSAwOwogICByZWN2X21lc3NhZ2UuYnVmICAgID0gcmVjdl9tZXNzYWdlX3B0cjsKLSAgCisKICAgc2N0bF9tZXNzYWdlLm1heGxlbiA9IEJVRlNJWjsKICAgc2N0bF9tZXNzYWdlLmxlbiAgICA9IDA7CiAgIHNjdGxfbWVzc2FnZS5idWYgICAgPSBzY3RsX2RhdGE7Ci0gIAorCiAgIHJjdGxfbWVzc2FnZS5tYXhsZW4gPSBCVUZTSVo7CiAgIHJjdGxfbWVzc2FnZS5sZW4gICAgPSAwOwogICByY3RsX21lc3NhZ2UuYnVmICAgID0gcmN0bF9kYXRhOwotICAKKwogICAvKiBsZXRzIGdldCBvdXJzZWx2ZXMgYSBmaWxlIGRlc2NyaXB0b3IgKi8KLSAgCisKICAgc2VuZF9kZXNjcmlwdG9yID0gZGxfb3Blbihsb2NfZGxwaV9kZXZpY2UsbG9jX3BwYSk7CiAgIGlmIChzZW5kX2Rlc2NyaXB0b3IgPCAwKXsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfZGxwaV9jbF9ycjogZGxwaSBjbCByciBzZW5kIGRlc2NyaXB0b3IiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInNlbmRfZGxwaV9jbF9ycjogc2VuZF9kZXNjcmlwdG9yIG9idGFpbmVkLi4uXG4iKTsKICAgfQotICAKKwogICAvKiBiaW5kIHRoZSBzYXAgdG8gdGhlIGRlc2NyaXB0b3IgYW5kIGdldCB0aGUgZGxzYXAgKi8KICAgZGxzYXBfbGVuID0gQlVGU0laOwogICBpZiAoZGxfYmluZChzZW5kX2Rlc2NyaXB0b3IsCkBAIC0yNTIxLDE0ICsyNzYxLDE0IEBACiAgICAgZmZsdXNoKHdoZXJlKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIE1vZGlmeSB0aGUgbG9jYWwgc29ja2V0IHNpemUuIElmIHRoZSB1c2VyIGhhcyBub3QgcmVxdWVzdGVkIHRoYXQgKi8KICAgLyogdGhlIHNvY2tldCBidWZmZXJzIGJlIGFsdGVyZWQsIHdlIHdpbGwgdHJ5IHRvIGZpbmQtb3V0IHdoYXQgdGhlaXIgKi8KICAgLyogdmFsdWVzIGFyZS4gSWYgd2UgY2Fubm90IHRvdWNoIHRoZSBzb2NrZXQgYnVmZmVyIGluIGFueSB3YXksIHdlICovCiAgIC8qIHdpbGwgc2V0IHRoZSB2YWx1ZXMgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdC4gIFRoZSByZWNlaXZlIHNvY2tldCAqLwogICAvKiBtdXN0IGhhdmUgZW5vdWdoIHNwYWNlIHRvIGhvbGQgYWRkcmVzc2luZyBpbmZvcm1hdGlvbiBzbyArPSBhICovCi0gIC8qIHNpemVvZiBzdHJ1Y3Qgc29ja2FkZHJfaW4gdG8gaXQuICovIAotICAKKyAgLyogc2l6ZW9mIHN0cnVjdCBzb2NrYWRkcl9pbiB0byBpdC4gKi8KKwogICAvKiB0aGlzIGlzIGFjdHVhbGx5IG5vdGhpbmcgY29kZSwgYW5kIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHRoZSAqLwogICAvKiBhbGFsYWdvdXMgY2FsbHMgaW4gdGhlIFNUUkVBTSB0ZXN0IHdoZXJlIHRoZSB3aW5kb3cgc2l6ZSBpcyBzZXQgKi8KICAgLyogd2l0aCB0aGUgSFAgRExQSSBFeHRlbnNpb24uIHJhaiA4Lzk0ICovCkBAIC0yNTQ1LDI0ICsyNzg1LDI0IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCIgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZTogJWRcbiIsbHJ3X3NpemUpOwogICAgIH0KICAgfQotICAKLSAgCisKKwogICAvKiBOb3csIHdlIHdpbGwgZmluZC1vdXQgd2hhdCB0aGUgc2l6ZSBhY3R1YWxseSBiZWNhbWUsIGFuZCByZXBvcnQgKi8KICAgLyogdGhhdCBiYWNrIHRvIHRoZSB1c2VyLiBJZiB0aGUgY2FsbCBmYWlscywgd2Ugd2lsbCBqdXN0IHJlcG9ydCBhIC0xICovCiAgIC8qIGJhY2sgdG8gdGhlIGluaXRpYXRvciBmb3IgdGhlIHJlY3YgYnVmZmVyIHNpemUuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHBlcmY6IHNlbmRfZGxwaV9jbF9ycjogc29ja2V0IHNpemVzIGRldGVybWluZWQuLi5cbiIpOwogICAgIGZwcmludGYod2hlcmUsIiAgICAgICAgIHNlbmQ6ICVkIHJlY3Y6ICVkXG4iLGxzd19zaXplLGxyd19zaXplKTsKICAgfQotICAKKwogI2Vsc2UgLyogU09fU05EQlVGICovCi0gIAorCiAgIGxzd19zaXplID0gLTE7CiAgIGxyd19zaXplID0gLTE7Ci0gIAorCiAjZW5kaWYgLyogU09fU05EQlVGICovCi0gIAorCiAgIC8qIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgY3B1IHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cywgd2UgbXVzdCAqLwogICAvKiBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlIHRlc3RzICovCiAgIC8qIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuICovCkBAIC0yNTcxLDExICsyODExLDExIEBACiAgIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiBJZiAqLwogICAvKiB0aGVyZSBpcyBubyBpZGxlIGNvdW50ZXIgaW4gdGhlIGtlcm5lbCBpZGxlIGxvb3AsIHRoZSAqLwogICAvKiBsb2NhbF9jcHVfcmF0ZSB3aWxsIGJlIHNldCB0byAtMS4gKi8KLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgIH0KLSAgCisKICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlIHNvY2tldCAqLwogICAvKiBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlIHJlYXNvbiBmb3IgKi8KICAgLyogYWxsIHRoZSB2YWx1ZXMgYmVpbmcgcGFzc2VkIGluIHRoZSBzZXR1cCBtZXNzYWdlLiBJZiB0aGUgdXNlciBkaWQgKi8KQEAgLTI1ODMsNyArMjgyMyw3IEBACiAgIC8qIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyAqLwogICAvKiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQgd2lsbCAqLwogICAvKiBkZWZhdWx0IHRvIDgsIHdoaWNoIHdpbGwgYmUgbm8gYWxpZ25tZW50IGFsdGVyYXRpb25zLiAqLwotICAKKwogICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUJICAgICAgICA9CURPX0RMUElfQ0xfUlI7CiAgIGRscGlfY2xfcnJfcmVxdWVzdC0+cmVjdl93aW5fc2l6ZQk9CXJyd19zaXplOwogICBkbHBpX2NsX3JyX3JlcXVlc3QtPnNlbmRfd2luX3NpemUJPQlyc3dfc2l6ZTsKQEAgLTI2MDAsOSArMjg0MCw5IEBACiAgIGRscGlfY2xfcnJfcmVxdWVzdC0+ZGV2X25hbWVfbGVuICAgICAgPSAgICAgICBzdHJsZW4ocmVtX2RscGlfZGV2aWNlKTsKICAgc3RyY3B5KGRscGlfY2xfcnJfcmVxdWVzdC0+ZGxwaV9kZXZpY2UsCiAJIHJlbV9kbHBpX2RldmljZSk7Ci0gIAorCiAjaWZkZWYgX19hbHBoYQotICAKKwogICAvKiBvayAtIGV2ZW4gb24gYSBERUMgYm94LCBzdHJpbmdzIGFyZSBzdHJpbmdzLiBJIGRpbid0IHJlYWxseSB3YW50ICovCiAgIC8qIHRvIG50b2hsIHRoZSB3b3JkcyBvZiBhIHN0cmluZy4gc2luY2UgSSBkb24ndCB3YW50IHRvIHRlYWNoIHRoZSAqLwogICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0yNjEzLDMyICsyODUzLDMyIEBACiAgICAgaW50ICpjaGFyd29yZDsKICAgICBpbnQgKmluaXR3b3JkOwogICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgCisKICAgICBpbml0d29yZCA9IChpbnQgKikgZGxwaV9jbF9ycl9yZXF1ZXN0LT5kbHBpX2RldmljZTsKICAgICBsYXN0d29yZCA9IGluaXR3b3JkICsgKChzdHJsZW4ocmVtX2RscGlfZGV2aWNlKSArIDMpIC8gNCk7Ci0gICAgCisKICAgICBmb3IgKGNoYXJ3b3JkID0gaW5pdHdvcmQ7CiAJIGNoYXJ3b3JkIDwgbGFzdHdvcmQ7CiAJIGNoYXJ3b3JkKyspIHsKLSAgICAgIAorCiAgICAgICAqY2hhcndvcmQgPSBudG9obCgqY2hhcndvcmQpOwogICAgIH0KICAgfQogI2VuZGlmIC8qIF9fYWxwaGEgKi8KLSAgCisKICAgaWYgKHRlc3RfdGltZSkgewogICAgIGRscGlfY2xfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGgJPQl0ZXN0X3RpbWU7CiAgIH0KICAgZWxzZSB7CiAgICAgZGxwaV9jbF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aAk9CXRlc3RfdHJhbnMgKiAtMTsKICAgfQotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF9kbHBpX2NsX3JyOiByZXF1ZXN0aW5nIERMUEkgQ0wgcmVxdWVzdC9yZXNwb25zZSB0ZXN0XG4iKTsKICAgfQotICAKKwogICBzZW5kX3JlcXVlc3QoKTsKLSAgCisKICAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudCAJKi8KICAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAJKi8KICAgLyogdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLiAgVGhlCSovCkBAIC0yNjQ4LDkgKzI4ODgsOSBAQAogICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodAkqLwogICAvKiBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcwkqLwogICAvKiBiZWluZyBzZW50IGZvciB0aGUgdGVzdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgaWYgKGRlYnVnKQogICAgICAgZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CkBAIC0yNjU4LDcgKzI4OTgsNyBAQAogICAgIHJzd19zaXplCT0JZGxwaV9jbF9ycl9yZXNwb25zZS0+c2VuZF93aW5fc2l6ZTsKICAgICByZW1vdGVfY3B1X3VzYWdlPQlkbHBpX2NsX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdTsKICAgICByZW1vdGVfY3B1X3JhdGUgPSAJZGxwaV9jbF9ycl9yZXNwb25zZS0+Y3B1X3JhdGU7Ci0gICAgCisKICAgICAvKiBzZXQtdXAgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3NpbmcgY29udHJvbCBpbmZvICovCiAgICAgZGF0YV9yZXEtPmRsX3ByaW1pdGl2ZSA9IERMX1VOSVREQVRBX1JFUTsKICAgICBiY29weSgoY2hhciAqKShkbHBpX2NsX3JyX3Jlc3BvbnNlLT5zdGF0aW9uX2FkZHIpLApAQCAtMjY2OCw3ICsyOTA4LDcgQEAKICAgICBkYXRhX3JlcS0+ZGxfZGVzdF9hZGRyX2xlbmd0aCA9IGRscGlfY2xfcnJfcmVzcG9uc2UtPnN0YXRpb25fYWRkcl9sZW47CiAgICAgLyogdGhlcmUgaXMgYSBkbF9wcmlvcml0eSBzdHJ1Y3R1cmUgdG9vLCBidXQgSSBhbSBpZ25vcmluZyBpdCBmb3IgKi8KICAgICAvKiB0aGUgdGltZSBiZWluZy4gKi8KLSAgICBzY3RsX21lc3NhZ2UubGVuID0gc2l6ZW9mKGRsX3VuaXRkYXRhX3JlcV90KSArIAorICAgIHNjdGxfbWVzc2FnZS5sZW4gPSBzaXplb2YoZGxfdW5pdGRhdGFfcmVxX3QpICsKICAgICAgIGRhdGFfcmVxLT5kbF9kZXN0X2FkZHJfbGVuZ3RoOwogICAgIC8qIGZhbW91cyBsYXN0IHdvcmRzIC0gc29tZSBETFBJIHByb3ZpZGVycyBnZXQgdW5oYXBweSBpZiB0aGUKICAgICAgICBwcmlvcml0eSBzdHVmZiBpcyBub3QgaW5pdGlhbGl6ZWQuICBmaXggZnJvbSBOaWNvbGFzIFRob21hcy4gKi8KQEAgLTI2ODEsMTYgKzI5MjEsMTYgQEAKICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgdGhlICovCiAgIC8qIGNvbm5lY3Qgd291bGQgaGF2ZSBmYWlsZWQsIG9yIHRoZSBwcmV2aW91cyByZXNwb25zZSB3b3VsZCBoYXZlICovCiAgIC8qIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlIGV4dHJhICovCiAgIC8qIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsIHdlJ2xsIHNlZSBpdCAqLwogICAvKiBoZXJlLiBJZiBpdCBkaWRuJ3QsIHdlIG1pZ2h0IGFzIHdlbGwgc3RhcnQgcHVtcGluZyBkYXRhLiAqLwotICAKKwogICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwogICAvKiBjYW4gYmUgZWl0aGVyIHRpbWUgb3IgdHJhbnNhY3Rpb24gYmFzZWQuICovCi0gIAorCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgdGltZXNfdXAgPSAwOwpAQCAtMjcwMiwxMyArMjk0MiwxMyBAQAogICAgIHRyYW5zX3JlbWFpbmluZyA9IHRlc3RfYnl0ZXM7CiAgICAgdGltZXNfdXAgPSAxOwogICB9Ci0gIAorCiAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KICAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAKKwogICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgCisKICAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcyAqLwogICAvKiBjb250cm9sbGVkIGJ5IHRpbWUsIHRoZSBieXRlIGNvdW50IGNoZWNrIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gKi8KICAgLyogV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3Qgd2lsbCAqLwpAQCAtMjczNSwxNyArMjk3NSwxNyBAQAogICAgICAgcGVycm9yKCJzZW5kX2RscGlfY2xfcnI6IGRhdGEgc2VuZCBlcnJvciIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXNwb25zZS4gYXQgc29tZSBwb2ludCwgd2Ugd2lsbCBuZWVkIHRvIGhhbmRsZSAqLwogICAgIC8qIHNlbmRpbmcgcmVzcG9uc2VzIHdoaWNoIGFyZSBncmVhdGVyIHRoYW4gdGhlIGRhdGFsaW5rIE1UVS4gd2UgKi8KICAgICAvKiBtYXkgYWxzbyB3YW50IHRvIGFkZCBzb21lIERMUEkgZXJyb3IgY2hlY2tpbmcsIGJ1dCBmb3Igbm93IHdlICovCiAgICAgLyogd2lsbCBpZ25vcmUgdGhhdCBhbmQganVzdCBsZXQgZXJyb3JzIHN0b3AgdGhlIHRlc3Qgd2l0aCBsaXR0bGUgKi8KICAgICAvKiBpbmRpY2F0aW9uIG9mIHdoYXQgbWlnaHQgYWN0dWFsbHkgYmUgd3JvbmcuICovCi0gICAgCi0gICAgaWYoKGdldG1zZyhzZW5kX2Rlc2NyaXB0b3IsIAotCSAgICAgICAmcmN0bF9tZXNzYWdlLCAgICAKKworICAgIGlmKChnZXRtc2coc2VuZF9kZXNjcmlwdG9yLAorCSAgICAgICAmcmN0bF9tZXNzYWdlLAogCSAgICAgICAmcmVjdl9tZXNzYWdlLAotCSAgICAgICAmZmxhZ3MpICE9IDApIHx8IAorCSAgICAgICAmZmxhZ3MpICE9IDApIHx8CiAgICAgICAgKGRhdGFfaW5kLT5kbF9wcmltaXRpdmUgIT0gRExfVU5JVERBVEFfSU5EKSkgewogICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CiAJLyogQWdhaW4sIHdlIGhhdmUgbGlrZWx5IGhpdCB0ZXN0LWVuZCB0aW1lICovCkBAIC0yNzYwLDE4ICszMDAwLDE4IEBACiAgICAgfQogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgZ2V0dGltZW9mZGF5KCZyZWN2X3RpbWUsJmR1bW15X3pvbmUpOwotICAgIAorCiAgICAgLyogbm93IHdlIGRvIHNvbWUgYXJpdGhtYXRpYyBvbiB0aGUgdHdvIHRpbWV2YWxzICovCiAgICAgaWYgKHJlY3ZfdGltZS50dl91c2VjIDwgc2VuZF90aW1lLnR2X3VzZWMpIHsKICAgICAgIC8qIHdlIHdyYXBwZWQgYXJvdW5kIGEgc2Vjb25kICovCiAgICAgICByZWN2X3RpbWUudHZfdXNlYyArPSAxMDAwMDAwOwogICAgICAgcmVjdl90aW1lLnR2X3NlYyAgLT0gMTsKICAgICB9Ci0gICAgCisKICAgICAvKiBhbmQgc3RvcmUgaXQgYXdheSAqLwogICAgIGtlcHRfdGltZXNbdGltZV9pbmRleF0gPSAocmVjdl90aW1lLnR2X3NlYyAtIHNlbmRfdGltZS50dl9zZWMpICogMTAwMDAwMDsKICAgICBrZXB0X3RpbWVzW3RpbWVfaW5kZXhdICs9IChyZWN2X3RpbWUudHZfdXNlYyAtIHNlbmRfdGltZS50dl91c2VjKTsKLSAgICAKKwogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIG1heSB3aXNoIHRvIHNsZWVwIGZvciBzb21lIHBlcmlvZCBvZiAqLwogICAgIC8qIHRpbWUsIHNvIHdlIHNlZSBob3cgbG9uZyB0aGF0IGxhc3QgdHJhbnNhY3Rpb24ganVzdCB0b29rLCAqLwogICAgIC8qIGFuZCBzbGVlcCBmb3IgdGhlIGRpZmZlcmVuY2Ugb2YgdGhhdCBhbmQgdGhlIGludGVydmFsLiBXZSAqLwpAQCAtMjc5MCwzMiArMzAzMCwzMiBAQAogCSAgICAgICAmc2xlZXBfdGltZXZhbCk7CiAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgLyogbm93IHVwIHRoZSB0aW1lIGluZGV4ICovCiAgICAgdGltZV9pbmRleCA9ICh0aW1lX2luZGV4ICsxKSVNQVhfS0VQVF9USU1FUzsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorICAgIG51bW1lc3NhZ2VzKys7CiAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogICAgICAgdHJhbnNfcmVtYWluaW5nLS07CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnID4gMykgewogICAgICAgZnByaW50Zih3aGVyZSwiVHJhbnNhY3Rpb24gJWQgY29tcGxldGVkXG4iLG51bW1lc3NhZ2VzKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQotICAgIAorCiAgIH0KLSAgCisKICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAKKwogICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgbWVhc3VyZWQ/ICovCiAgIC8qIGhvdyBsb25nIGRpZCB3ZSByZWFsbHkgcnVuPyAqLwotICAKKwogICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgLyogY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQgKi8KICAgLyogd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLwotICAKKwogICByZWN2X3Jlc3BvbnNlKCk7CiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCkBAIC0yODI0LDEwICszMDY0LDEwIEBACiAgIGVsc2UgewogICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciB0aHJ1cHV0IHdhcyBmb3IgdGhlIHRlc3QuIEluIHRoZSBmdXR1cmUsICovCiAgIC8qIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dCBtZWFzdXJlZCBieSAqLwogICAvKiB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEgVURQIHN0cmVhbSB0ZXN0LCAqLwpAQCAtMjgzNiwxMCArMzA3NiwxMCBAQAogICAvKiBJZiBpdCB3YXMgdGltZSwgd2UgbmVlZGVkIHRvLCBhbmQgaWYgaXQgd2FzIGJ5IGJ5dGVzLCB0aGUgdXNlciBtYXkgKi8KICAgLyogaGF2ZSBzcGVjaWZpZWQgYSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3YXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgKi8KICAgLyogc2VuZF9zaXplLCBzbyB3ZSByZWFsbHkgZGlkbid0IHNlbmQgd2hhdCBoZSBhc2tlZCBmb3IgOy0pIFdlIHVzZSAqLwotICAKKwogICBieXRlc194ZmVyZAk9IChyZXFfc2l6ZSAqIG51bW1lc3NhZ2VzKSArIChyc3Bfc2l6ZSAqIG51bW1lc3NhZ2VzKTsKICAgdGhydXB1dAkJPSBjYWxjX3RocnVwdXQoYnl0ZXNfeGZlcmQpOwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgKi8KQEAgLTI4NjUsNyArMzEwNSw3IEBACiAgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAtMS4wOwogICAgIH0KLSAgICAKKwogICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICBpZiAocmVtb3RlX2NwdV9yYXRlID09IDAuMCkgewogCWZwcmludGYod2hlcmUsIkRBTkdFUiAgREFOR0VSICBEQU5HRVIgICAgREFOR0VSICBEQU5HRVIgIERBTkdFUiAgICBEQU5HRVIhXG4iKTsKQEAgLTI4ODUsNyArMzEyNSw3IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gLTEuMDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAtMS4wOwogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHVzZXIgKi8KICAgICAvKiBoYXMgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlICovCiAgICAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLwpAQCAtMjg5NCw3ICszMTM0LDcgQEAKICAgICAvKiBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mICovCiAgICAgLyogYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBmcm9tIG91dHNpZGUgb2YgdGhpcyBibG9jayBhcyBpdCBpdCAqLwogICAgIC8qIG5vdCBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCi0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKQEAgLTI5NTEsMjMgKzMxOTEsMjMgQEAKIAkgICAgICB0cHV0X2ZtdF8xX2xpbmVfMiwKIAkgICAgICByc3dfc2l6ZSwgCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCiAJICAgICAgcnJ3X3NpemUpOwotICAgICAgCisKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICAKKwogICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZSAqLwogICAvKiBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgdGVzdCwgYnV0IGF0IHRoZSAqLwogICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KICAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCi0gIAorCiAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLiAqLwogICAgIC8qIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgKi8KICAgICAvKiBVRFAgc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyAqLwogICAgIC8qIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLwotICAgIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBrZXB0X3RpbWVzW01BWF9LRVBUX1RJTUVTXSA9IDA7CiAgICAgdGltZV9pbmRleCA9IDA7CkBAIC0yOTg3LDE1ICszMjI3LDE1IEBACiAgIH0KIH0KIAwKLWludCAKK2ludAogICByZWN2X2RscGlfY2xfcnIoKQogewotICAKKwogICBjaGFyICAqbWVzc2FnZTsKICAgaW50CWRhdGFfZGVzY3JpcHRvcjsKICAgaW50ICAgZmxhZ3MgPSAwOwogICBpbnQJbWVhc3VyZV9jcHU7Ci0gIAorCiAgIGNoYXIJKnJlY3ZfbWVzc2FnZV9wdHI7CiAgIGNoYXIJKnNlbmRfbWVzc2FnZV9wdHI7CiAgIGNoYXIgIHNjdGxfZGF0YVtCVUZTSVpdOwpAQCAtMzAwNSwzMiArMzI0NSwzMiBAQAogICBzdHJ1Y3Qgc3RyYnVmIHJlY3ZfbWVzc2FnZTsKICAgc3RydWN0IHN0cmJ1ZiBzY3RsX21lc3NhZ2U7CiAgIHN0cnVjdCBzdHJidWYgcmN0bF9tZXNzYWdlOwotICAKKwogICAvKiB0aGVzZSBhcmUgdG8gbWFrZSByZWFkaW5nIHNvbWUgb2YgdGhlIERMUEkgY29udHJvbCBtZXNzYWdlcyBlYXNpZXIgKi8KICAgZGxfdW5pdGRhdGFfaW5kX3QgKmRhdGFfaW5kID0gKGRsX3VuaXRkYXRhX2luZF90ICopcmN0bF9kYXRhOwogICBkbF91bml0ZGF0YV9yZXFfdCAqZGF0YV9yZXEgPSAoZGxfdW5pdGRhdGFfcmVxX3QgKilzY3RsX2RhdGE7CiAgIGRsX3VkZXJyb3JfaW5kX3QgICp1ZGVyX2luZCA9IChkbF91ZGVycm9yX2luZF90ICopcmN0bF9kYXRhOwotICAKKwogICBpbnQJdHJhbnNfcmVjZWl2ZWQ7CiAgIGludAl0cmFuc19yZW1haW5pbmc7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgc3RydWN0CWRscGlfY2xfcnJfcmVxdWVzdF9zdHJ1Y3QJKmRscGlfY2xfcnJfcmVxdWVzdDsKICAgc3RydWN0CWRscGlfY2xfcnJfcmVzcG9uc2Vfc3RydWN0CSpkbHBpX2NsX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJZGxwaV9jbF9ycl9yZXN1bHRzX3N0cnVjdAkqZGxwaV9jbF9ycl9yZXN1bHRzOwotICAKLSAgZGxwaV9jbF9ycl9yZXF1ZXN0ICA9IAorCisgIGRscGlfY2xfcnJfcmVxdWVzdCAgPQogICAgIChzdHJ1Y3QgZGxwaV9jbF9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgZGxwaV9jbF9ycl9yZXNwb25zZSA9IAorICBkbHBpX2NsX3JyX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IGRscGlfY2xfcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgZGxwaV9jbF9ycl9yZXN1bHRzICA9IAorICBkbHBpX2NsX3JyX3Jlc3VsdHMgID0KICAgICAoc3RydWN0IGRscGlfY2xfcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3ZfZGxwaV9jbF9ycjogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIGRlc2NyaXB0b3Igd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KICAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwogICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwpAQCAtMzAzOCwxOSArMzI3OCwxOSBAQAogICAvKiBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgKi8KICAgLyogdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28gd3JvbmcgZm9yIGFueSAqLwogICAvKiByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KLSAgCisKICAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0ICovCiAgIC8qIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzICovCiAgIC8qIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMgdW5leHBlY3RlZCAqLwogICAvKiByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGxwaV9jbF9ycjogc2V0dGluZyB0aGUgcmVzcG9uc2UgdHlwZS4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IERMUElfQ0xfUlJfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGxwaV9jbF9ycjogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtMzA2MiwxMCArMzMwMiwxMCBAQAogICAgIHByaW50ZigibWFsbG9jKCVkKSBmYWlsZWQhXG4iLCBEQVRBQlVGRkVSTEVOKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGVzIHRvIGJlIGF0IHRoZSBkZXNpcmVkICovCiAgIC8qIGFsaWdubWVudHMgd2l0aCB0aGUgZGVzaXJlZCBvZmZzZXRzLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9kbHBpX2NsX3JyOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLApAQCAtMzA4MiwyOSArMzMyMiwyOSBAQAogICByZWN2X21lc3NhZ2UubWF4bGVuID0gZGxwaV9jbF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7CiAgIHJlY3ZfbWVzc2FnZS5sZW4gICAgPSAwOwogICByZWN2X21lc3NhZ2UuYnVmICAgID0gcmVjdl9tZXNzYWdlX3B0cjsKLSAgCisKICAgc2VuZF9tZXNzYWdlX3B0ciA9IEFMSUdOX0JVRkZFUihtZXNzYWdlLCBkbHBpX2NsX3JyX3JlcXVlc3QtPnNlbmRfYWxpZ25tZW50LCBkbHBpX2NsX3JyX3JlcXVlc3QtPnNlbmRfb2Zmc2V0KTsKICAgc2VuZF9tZXNzYWdlLm1heGxlbiA9IGRscGlfY2xfcnJfcmVxdWVzdC0+cmVzcG9uc2Vfc2l6ZTsKICAgc2VuZF9tZXNzYWdlLmxlbiAgICA9IGRscGlfY2xfcnJfcmVxdWVzdC0+cmVzcG9uc2Vfc2l6ZTsKICAgc2VuZF9tZXNzYWdlLmJ1ZiAgICA9IHNlbmRfbWVzc2FnZV9wdHI7Ci0gIAorCiAgIHNjdGxfbWVzc2FnZS5tYXhsZW4gPSBCVUZTSVo7CiAgIHNjdGxfbWVzc2FnZS5sZW4gICAgPSAwOwogICBzY3RsX21lc3NhZ2UuYnVmICAgID0gc2N0bF9kYXRhOwotICAKKwogICByY3RsX21lc3NhZ2UubWF4bGVuID0gQlVGU0laOwogICByY3RsX21lc3NhZ2UubGVuICAgID0gMDsKICAgcmN0bF9tZXNzYWdlLmJ1ZiAgICA9IHJjdGxfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kbHBpX2NsX3JyOiByZWNlaXZlIGFsaWdubWVudCBhbmQgb2Zmc2V0IHNldC4uLlxuIik7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kbHBpX2NsX3JyOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgCisKKwogI2lmZGVmIF9fYWxwaGEKLSAgCisKICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaW4ndCByZWFsbHkgd2FudCAqLwogICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgLyogc2VuZF8gYW5kIHJlY3ZfIF9yZXF1ZXN0IGFuZCBfcmVzcG9uc2Ugcm91dGluZXMgYWJvdXQgdGhlIHR5cGVzLCAqLwpAQCAtMzExNSwxOSArMzM1NSwxOSBAQAogICAgIGludCAqY2hhcndvcmQ7CiAgICAgaW50ICppbml0d29yZDsKICAgICBpbnQgKmxhc3R3b3JkOwotICAgIAorCiAgICAgaW5pdHdvcmQgPSAoaW50ICopIGRscGlfY2xfcnJfcmVxdWVzdC0+ZGxwaV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoZGxwaV9jbF9ycl9yZXF1ZXN0LT5kZXZfbmFtZV9sZW4gKyAzKSAvIDQpOwotICAgIAorCiAgICAgZm9yIChjaGFyd29yZCA9IGluaXR3b3JkOwogCSBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSBjaGFyd29yZCsrKSB7Ci0gICAgICAKKwogICAgICAgKmNoYXJ3b3JkID0gaHRvbmwoKmNoYXJ3b3JkKTsKICAgICB9CiAgIH0KICNlbmRpZiAvKiBfX2FscGhhICovCi0gIAorCiAgIGRhdGFfZGVzY3JpcHRvciA9IGRsX29wZW4oZGxwaV9jbF9ycl9yZXF1ZXN0LT5kbHBpX2RldmljZSwKIAkJCSAgICBkbHBpX2NsX3JyX3JlcXVlc3QtPnBwYSk7CiAgIGlmIChkYXRhX2Rlc2NyaXB0b3IgPCAwKSB7CkBAIC0zMTM1LDM0ICszMzc1LDM0IEBACiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIAorCisKICAgLyogVGhlIGluaXRpYXRvciBtYXkgaGF2ZSB3aXNoZWQtdXMgdG8gbW9kaWZ5IHRoZSB3aW5kb3cgKi8KICAgLyogc2l6ZXMuIFdlIHNob3VsZCBnaXZlIGl0IGEgc2hvdC4gSWYgaGUgZGlkbid0IGFzayB1cyB0byBjaGFuZ2UgdGhlICovCiAgIC8qIHNpemVzLCB3ZSBzaG91bGQgbGV0IGhpbSBrbm93IHdoYXQgc2l6ZXMgd2VyZSBpbiB1c2UgYXQgdGhpcyBlbmQuICovCiAgIC8qIElmIG5vbmUgb2YgdGhpcyBjb2RlIGlzIGNvbXBpbGVkLWluLCB0aGVuIHdlIHdpbGwgdGVsbCB0aGUgKi8KICAgLyogaW5pdGlhdG9yIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gcGxheSB3aXRoIHRoZSBzaXplcyBieSAqLwogICAvKiBzZXR0aW5nIHRoZSBzaXplIGluIHRoZSByZXNwb25zZSB0byAtMS4gKi8KLSAgCisKICNpZmRlZiBETF9IUF9TRVRfTE9DQUxfV0lOX1JFUQotICAKKwogICBpZiAoZGxwaV9jbF9ycl9yZXF1ZXN0LT5yZWN2X3dpbl9zaXplKSB7CiAgIH0KLSAgCisKICAgaWYgKGRscGlfY2xfcnJfcmVxdWVzdC0+c2VuZF93aW5fc2l6ZSkgewogICB9Ci0gIAorCiAgIC8qIE5vdywgd2Ugd2lsbCBmaW5kLW91dCB3aGF0IHRoZSBzaXplcyBhY3R1YWxseSBiZWNhbWUsIGFuZCByZXBvcnQgKi8KICAgLyogdGhlbSBiYWNrIHRvIHRoZSB1c2VyLiBJZiB0aGUgY2FsbHMgZmFpbCwgd2Ugd2lsbCBqdXN0IHJlcG9ydCBhIC0xICovCiAgIC8qIGJhY2sgdG8gdGhlIGluaXRpYXRvciBmb3IgdGhlIGJ1ZmZlciBzaXplLiAqLwotICAKKwogI2Vsc2UgLyogdGhlIHN5c3RlbSB3b24ndCBsZXQgdXMgcGxheSB3aXRoIHRoZSBidWZmZXJzICovCi0gIAorCiAgIGRscGlfY2xfcnJfcmVzcG9uc2UtPnJlY3Zfd2luX3NpemUJPSAtMTsKICAgZGxwaV9jbF9ycl9yZXNwb25zZS0+c2VuZF93aW5fc2l6ZQk9IC0xOwotICAKKwogI2VuZGlmIC8qIERMX0hQX1NFVF9MT0NBTF9XSU5fUkVRICovCi0gIAorCiAgIC8qIGJpbmQgdGhlIHNhcCBhbmQgcmV0cmlldmUgdGhlIGRsc2FwIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGRscGlfY2xfcnJfcmVzcG9uc2UtPnN0YXRpb25fYWRkcl9sZW4gPSAxNDsgLyogYXJiaXRyYXJ5ICovCiAgIGlmIChkbF9iaW5kKGRhdGFfZGVzY3JpcHRvciwKQEAgLTMxNzQsMjggKzM0MTQsMjggQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAwLjAgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgZGxwaV9jbF9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSAwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmIChkbHBpX2NsX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgZGxwaV9jbF9ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwogICAgIGRscGlfY2xfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShkbHBpX2NsX3JyX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQotICAKKwogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCByZWNlaXZpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydChkbHBpX2NsX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCisKICAgaWYgKGRscGlfY2xfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGggPiAwKSB7CiAgICAgdGltZXNfdXAgPSAwOwogICAgIHRyYW5zX3JlbWFpbmluZyA9IDA7CkBAIC0zMjA1LDE3ICszNDQ1LDE3IEBACiAgIHRpbWVzX3VwID0gMTsKICAgdHJhbnNfcmVtYWluaW5nID0gZGxwaV9jbF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCAqIC0xOwogfQotICAKKwogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHRyYW5zX3JlbWFpbmluZyA+IDApKSB7Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIG90aGVyIHNpZGUuIGF0IHNvbWUgcG9pbnQgd2UgbmVlZCAqLwogICAgIC8qIHRvIGhhbmRsZSAibG9naWNhbCIgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyB3aGljaCBhcmUgbGFyZ2VyICovCiAgICAgLyogdGhhbiB0aGUgZGF0YSBsaW5rIE1UVSAqLwotICAgIAotICAgIGlmKChnZXRtc2coZGF0YV9kZXNjcmlwdG9yLCAKLQkgICAgICAgJnJjdGxfbWVzc2FnZSwgICAgCisKKyAgICBpZigoZ2V0bXNnKGRhdGFfZGVzY3JpcHRvciwKKwkgICAgICAgJnJjdGxfbWVzc2FnZSwKIAkgICAgICAgJnJlY3ZfbWVzc2FnZSwKLQkgICAgICAgJmZsYWdzKSAhPSAwKSB8fCAKKwkgICAgICAgJmZsYWdzKSAhPSAwKSB8fAogICAgICAgIChkYXRhX2luZC0+ZGxfcHJpbWl0aXZlICE9IERMX1VOSVREQVRBX0lORCkpIHsKICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewogCS8qIEFnYWluLCB3ZSBoYXZlIGxpa2VseSBoaXQgdGVzdC1lbmQgdGltZSAqLwpAQCAtMzIzMywxMCArMzQ3MywxMCBAQAogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBOb3csIHNlbmQgdGhlIHJlc3BvbnNlIHRvIHRoZSByZW1vdGUuIGZpcnN0IGNvcHkgdGhlIGRsc2FwICovCiAgICAgLyogaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVjZWl2ZSB0byB0aGUgc2VuZGluZyBjb250cm9sIG1lc3NhZ2UgKi8KLSAgICAKKwogICAgIGRhdGFfcmVxLT5kbF9kZXN0X2FkZHJfb2Zmc2V0ID0gc2l6ZW9mKGRsX3VuaXRkYXRhX3JlcV90KTsKICAgICBiY29weSgoY2hhciAqKWRhdGFfaW5kICsgZGF0YV9pbmQtPmRsX3NyY19hZGRyX29mZnNldCwKIAkgIChjaGFyICopZGF0YV9yZXEgKyBkYXRhX3JlcS0+ZGxfZGVzdF9hZGRyX29mZnNldCwKQEAgLTMyNjgsMjcgKzM1MDgsMjcgQEAKICAgICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgdHJhbnNfcmVjZWl2ZWQrKzsKICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgInJlY3ZfZGxwaV9jbF9ycjogVHJhbnNhY3Rpb24gJWQgY29tcGxldGUuXG4iLAogCSAgICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQotICAgIAorCiAgIH0KLSAgCi0gIAorCisKICAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHRyYW5zYWN0aW9uIGNvdW50IGJlaW5nICovCiAgIC8qIHJlYWNoZWQgKi8KLSAgCisKICAgY3B1X3N0b3AoZGxwaV9jbF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgaWYgKHRpbWVzX3VwKSB7CiAgICAgLyogd2UgZW5kZWQgdGhlIHRlc3QgYnkgdGltZSwgd2hpY2ggd2FzIGF0IGxlYXN0IDIgc2Vjb25kcyAqLwogICAgIC8qIGxvbmdlciB0aGFuIHdlIHdhbnRlZCB0byBydW4uIHNvLCB3ZSB3YW50IHRvIHN1YnRyYWN0ICovCkBAIC0zMjk2LDY3ICszNTM2LDY3IEBACiAgICAgZWxhcHNlZF90aW1lIC09IFBBRF9USU1FOwogICB9CiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X2RscGlfY2xfcnI6IGdvdCAlZCB0cmFuc2FjdGlvbnNcbiIsCiAJICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICBkbHBpX2NsX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gKHRyYW5zX3JlY2VpdmVkICogCi0JCQkJCSAgIChkbHBpX2NsX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArIAorCisgIGRscGlfY2xfcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKgorCQkJCQkgICAoZGxwaV9jbF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemUgKwogCQkJCQkgICAgZGxwaV9jbF9ycl9yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7CiAgIGRscGlfY2xfcnJfcmVzdWx0cy0+dHJhbnNfcmVjZWl2ZWQJPSB0cmFuc19yZWNlaXZlZDsKICAgZGxwaV9jbF9ycl9yZXN1bHRzLT5lbGFwc2VkX3RpbWUJPSBlbGFwc2VkX3RpbWU7CiAgIGlmIChkbHBpX2NsX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgZGxwaV9jbF9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9kbHBpX2NsX3JyOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKIH0KIAwKLWludCAKK2ludAogICByZWN2X2RscGlfY29fcnIoKQogewotICAKKwogICBjaGFyICAqbWVzc2FnZTsKICAgU09DS0VUCXNfbGlzdGVuLGRhdGFfZGVzY3JpcHRvcjsKLSAgCisKICAgaW50CW1lYXN1cmVfY3B1OwotICAKKwogICBpbnQgICBmbGFncyA9IDA7CiAgIGNoYXIJKnJlY3ZfbWVzc2FnZV9wdHI7CiAgIGNoYXIJKnNlbmRfbWVzc2FnZV9wdHI7CiAgIHN0cnVjdCBzdHJidWYgc2VuZF9tZXNzYWdlOwogICBzdHJ1Y3Qgc3RyYnVmIHJlY3ZfbWVzc2FnZTsKLSAgCisKICAgaW50CXRyYW5zX3JlY2VpdmVkOwogICBpbnQJdHJhbnNfcmVtYWluaW5nOwogICBpbnQJcmVxdWVzdF9ieXRlc19yZW1haW5pbmc7CiAgIGludAl0aW1lZF9vdXQgPSAwOwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHN0cnVjdAlkbHBpX2NvX3JyX3JlcXVlc3Rfc3RydWN0CSpkbHBpX2NvX3JyX3JlcXVlc3Q7CiAgIHN0cnVjdAlkbHBpX2NvX3JyX3Jlc3BvbnNlX3N0cnVjdAkqZGxwaV9jb19ycl9yZXNwb25zZTsKICAgc3RydWN0CWRscGlfY29fcnJfcmVzdWx0c19zdHJ1Y3QJKmRscGlfY29fcnJfcmVzdWx0czsKLSAgCisKICAgZGxwaV9jb19ycl9yZXF1ZXN0CT0gKHN0cnVjdCBkbHBpX2NvX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBkbHBpX2NvX3JyX3Jlc3BvbnNlCT0gKHN0cnVjdCBkbHBpX2NvX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIGRscGlfY29fcnJfcmVzdWx0cwk9IChzdHJ1Y3QgZGxwaV9jb19ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl9kbHBpX2NvX3JyOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTMzNjQsMTkgKzM2MDQsMTkgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY29fcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBETFBJX0NPX1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY29fcnI6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTMzODgsMTAgKzM2MjgsMTAgQEAKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgREFUQUJVRkZFUkxFTik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlcyB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLwogICAvKiBhbGlnbm1lbnRzIHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0cy4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGxwaV9jb19ycjogcmVxdWVzdGVkIHJlY3YgYWxpZ25tZW50IG9mICVkIG9mZnNldCAlZFxuIiwKQEAgLTM0MDgsMTIgKzM2NDgsMTIgQEAKICAgcmVjdl9tZXNzYWdlLm1heGxlbiA9IGRscGlfY29fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplOwogICByZWN2X21lc3NhZ2UubGVuICAgID0gMDsKICAgcmVjdl9tZXNzYWdlLmJ1ZiAgICA9IHJlY3ZfbWVzc2FnZV9wdHI7Ci0gIAorCiAgIHNlbmRfbWVzc2FnZV9wdHIgPSBBTElHTl9CVUZGRVIobWVzc2FnZSwgZGxwaV9jb19ycl9yZXF1ZXN0LT5zZW5kX2FsaWdubWVudCwgZGxwaV9jb19ycl9yZXF1ZXN0LT5zZW5kX29mZnNldCk7CiAgIHNlbmRfbWVzc2FnZS5tYXhsZW4gPSBkbHBpX2NvX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemU7CiAgIHNlbmRfbWVzc2FnZS5sZW4gICAgPSBkbHBpX2NvX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemU7CiAgIHNlbmRfbWVzc2FnZS5idWYgICAgPSBzZW5kX21lc3NhZ2VfcHRyOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY29fcnI6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY29fcnI6IHNlbmRfbWVzc2FnZS5idWYgJXggLmxlbiAlZCAubWF4bGVuICVkXG4iLApAQCAtMzQyMiwyMyArMzY2MiwyMyBAQAogCSAgICByZWN2X21lc3NhZ2UuYnVmLHJlY3ZfbWVzc2FnZS5sZW4scmVjdl9tZXNzYWdlLm1heGxlbik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlICovCiAgIC8qIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzICovCiAgIC8qIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywgKi8KICAgLyogSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLwotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RscGlfY29fcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIGxldHMgZ3JhYiBhIGZpbGUgZGVzY3JpcHRvciBmb3IgYSBwYXJ0aWN1bGFyIGxpbmsgKi8KLSAgCisKICNpZmRlZiBfX2FscGhhCi0gIAorCiAgIC8qIG9rIC0gZXZlbiBvbiBhIERFQyBib3gsIHN0cmluZ3MgYXJlIHN0cmluZ3MuIEkgZGluJ3QgcmVhbGx5IHdhbnQgKi8KICAgLyogdG8gbnRvaGwgdGhlIHdvcmRzIG9mIGEgc3RyaW5nLiBzaW5jZSBJIGRvbid0IHdhbnQgdG8gdGVhY2ggdGhlICovCiAgIC8qIHNlbmRfIGFuZCByZWN2XyBfcmVxdWVzdCBhbmQgX3Jlc3BvbnNlIHJvdXRpbmVzIGFib3V0IHRoZSB0eXBlcywgKi8KQEAgLTM0NDksMzAgKzM2ODksMzAgQEAKICAgICBpbnQgKmNoYXJ3b3JkOwogICAgIGludCAqaW5pdHdvcmQ7CiAgICAgaW50ICpsYXN0d29yZDsKLSAgICAKKwogICAgIGluaXR3b3JkID0gKGludCAqKSBkbHBpX2NvX3JyX3JlcXVlc3QtPmRscGlfZGV2aWNlOwogICAgIGxhc3R3b3JkID0gaW5pdHdvcmQgKyAoKGRscGlfY29fcnJfcmVxdWVzdC0+ZGV2X25hbWVfbGVuICsgMykgLyA0KTsKLSAgICAKKwogICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgY2hhcndvcmQgPCBsYXN0d29yZDsKIAkgY2hhcndvcmQrKykgewotICAgICAgCisKICAgICAgICpjaGFyd29yZCA9IGh0b25sKCpjaGFyd29yZCk7CiAgICAgfQogICB9CiAjZW5kaWYgLyogX19hbHBoYSAqLwotICAKKwogICBpZiAoKGRhdGFfZGVzY3JpcHRvciA9IGRsX29wZW4oZGxwaV9jb19ycl9yZXF1ZXN0LT5kbHBpX2RldmljZSwKIAkJCQkgZGxwaV9jb19ycl9yZXF1ZXN0LT5wcGEpKSA8IDApIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIGJpbmQgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBhIHNhcCBhbmQgZ2V0IHRoZSByZXN1bHRhbnQgZGxzYXAgKi8KICAgZGxwaV9jb19ycl9yZXNwb25zZS0+c3RhdGlvbl9hZGRyX2xlbiA9IDE0OyAvKmFyYml0cmFyeSBuZWVkcyBmaXhpbmcgKi8KLSAgaWYgKGRsX2JpbmQoZGF0YV9kZXNjcmlwdG9yLCAKLSAgICAgICAgICAgICAgZGxwaV9jb19ycl9yZXF1ZXN0LT5zYXAsIAorICBpZiAoZGxfYmluZChkYXRhX2Rlc2NyaXB0b3IsCisgICAgICAgICAgICAgIGRscGlfY29fcnJfcmVxdWVzdC0+c2FwLAogICAgICAgICAgICAgICBETF9DT0RMUywKICAgICAgICAgICAgICAgKGNoYXIgKilkbHBpX2NvX3JyX3Jlc3BvbnNlLT5zdGF0aW9uX2FkZHIsCiAgICAgICAgICAgICAgICZkbHBpX2NvX3JyX3Jlc3BvbnNlLT5zdGF0aW9uX2FkZHJfbGVuKSAhPSAwKSB7CkBAIC0zNDgwLDM4ICszNzIwLDM4IEBACiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogVGhlIGluaXRpYXRvciBtYXkgaGF2ZSB3aXNoZWQtdXMgdG8gbW9kaWZ5IHRoZSBzb2NrZXQgYnVmZmVyICovCiAgIC8qIHNpemVzLiBXZSBzaG91bGQgZ2l2ZSBpdCBhIHNob3QuIElmIGhlIGRpZG4ndCBhc2sgdXMgdG8gY2hhbmdlIHRoZSAqLwogICAvKiBzaXplcywgd2Ugc2hvdWxkIGxldCBoaW0ga25vdyB3aGF0IHNpemVzIHdlcmUgaW4gdXNlIGF0IHRoaXMgZW5kLiAqLwogICAvKiBJZiBub25lIG9mIHRoaXMgY29kZSBpcyBjb21waWxlZC1pbiwgdGhlbiB3ZSB3aWxsIHRlbGwgdGhlICovCiAgIC8qIGluaXRpYXRvciB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHBsYXkgd2l0aCB0aGUgc29ja2V0IGJ1ZmZlciBieSAqLwogICAvKiBzZXR0aW5nIHRoZSBzaXplIGluIHRoZSByZXNwb25zZSB0byAtMS4gKi8KLSAgCisKICNpZmRlZiBETF9IUF9TRVRfTE9DQUxfV0lOX1JFUQotICAKKwogICBpZiAoZGxwaV9jb19ycl9yZXF1ZXN0LT5yZWN2X3dpbl9zaXplKSB7CiAgICAgLyogU01PUCAqLwogICB9Ci0gIAorCiAgIGlmIChkbHBpX2NvX3JyX3JlcXVlc3QtPnNlbmRfd2luX3NpemUpIHsKICAgICAvKiBTTU9QICovCiAgIH0KLSAgCisKICAgLyogTm93LCB3ZSB3aWxsIGZpbmQtb3V0IHdoYXQgdGhlIHNpemVzIGFjdHVhbGx5IGJlY2FtZSwgYW5kIHJlcG9ydCAqLwogICAvKiB0aGVtIGJhY2sgdG8gdGhlIHVzZXIuIElmIHRoZSBjYWxscyBmYWlsLCB3ZSB3aWxsIGp1c3QgcmVwb3J0IGEgLTEgKi8KICAgLyogYmFjayB0byB0aGUgaW5pdGlhdG9yIGZvciB0aGUgYnVmZmVyIHNpemUuICovCi0gIAorCiAjZWxzZSAvKiB0aGUgc3lzdGVtIHdvbid0IGxldCB1cyBwbGF5IHdpdGggdGhlIGJ1ZmZlcnMgKi8KLSAgCisKICAgZGxwaV9jb19ycl9yZXNwb25zZS0+cmVjdl93aW5fc2l6ZQk9IC0xOwogICBkbHBpX2NvX3JyX3Jlc3BvbnNlLT5zZW5kX3dpbl9zaXplCT0gLTE7Ci0gIAorCiAjZW5kaWYgLyogRExfSFBfU0VUX0xPQ0FMX1dJTl9SRVEgKi8KLSAgCisKICAgLyogd2UgbWF5IGhhdmUgYmVlbiByZXF1ZXN0ZWQgdG8gZW5hYmxlIHRoZSBjb3B5IGF2b2lkYW5jZSBmZWF0dXJlcy4gKi8KICAgLyogY2FuIHdlIGFjdHVhbGx5IGRvIHRoaXMgd2l0aCBETFBJLCB0aGUgd29ybGQgd29uZGVycyAqLwotICAKKwogICBpZiAoZGxwaV9jb19ycl9yZXF1ZXN0LT5zb19yY3Zhdm9pZCkgewogI2lmZGVmIFNPX1JDVl9DT1BZQVZPSUQKICAgICBkbHBpX2NvX3JyX3Jlc3BvbnNlLT5zb19yY3Zhdm9pZCA9IDA7CkBAIC0zNTIwLDcgKzM3NjAsNyBAQAogICAgIGRscGlfY29fcnJfcmVzcG9uc2UtPnNvX3JjdmF2b2lkID0gMDsKICNlbmRpZgogICB9Ci0gIAorCiAgIGlmIChkbHBpX2NvX3JyX3JlcXVlc3QtPnNvX3NuZGF2b2lkKSB7CiAjaWZkZWYgU09fU05EX0NPUFlBVk9JRAogICAgIGRscGlfY29fcnJfcmVzcG9uc2UtPnNvX3NuZGF2b2lkID0gMDsKQEAgLTM1MjksMjcgKzM3NjksMjcgQEAKICAgICBkbHBpX2NvX3JyX3Jlc3BvbnNlLT5zb19zbmRhdm9pZCA9IDA7CiAjZW5kaWYKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyAgID0gMDsKLSAgCisKICAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywgKi8KICAgLyogdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbWF4ICovCiAgIC8qIHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUgbWVhc3VyZWQsIG9yICovCiAgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsIHJldHVybiBhIDAuMCB0byAqLwogICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKwogICBkbHBpX2NvX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IDAuMDsgCS8qIGFzc3VtZSBubyBjcHUgKi8KICAgaWYgKGRscGlfY29fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBkbHBpX2NvX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7CiAgICAgZGxwaV9jb19ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGRscGlfY29fcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgLyogYWNjZXB0IGEgY29ubmVjdGlvbiBvbiB0aGlzIGZpbGUgZGVzY3JpcHRvci4gYXQgc29tZSBwb2ludCwgKi8KICAgLyogZGxfYWNjZXB0IHdpbGwgImRvIHRoZSByaWdodCB0aGluZyIgd2l0aCB0aGUgbGFzdCB0d28gcGFybXMsIGJ1dCAqLwogICAvKiBmb3Igbm93IGl0IGlnbm9yZXMgdGhlbSwgc28gd2Ugd2lsbCBwYXNzIHplcm9zLiAqLwotICAKKwogICBpZihkbF9hY2NlcHQoZGF0YV9kZXNjcmlwdG9yLCAwLCAwKSAhPSAwKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGxwaV9jb19ycjogZXJyb3IgaW4gYWNjZXB0LCBlcnJubyAlZFxuIiwKQEAgLTM1NTksMjEgKzM3OTksMjEgQEAKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9kbHBpX2NvX3JyOiBhY2NlcHQgY29tcGxldGVzIG9uIHRoZSBkYXRhIGNvbm5lY3Rpb24uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KGRscGlfY29fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogICAvKiBUaGUgbG9vcCB3aWxsIGV4aXQgd2hlbiB0aGUgc2VuZGVyIGRvZXMgYSBzaHV0ZG93biwgd2hpY2ggd2lsbCAqLwogICAvKiByZXR1cm4gYSBsZW5ndGggb2YgemVybyAgICovCi0gIAorCiAgIGlmIChkbHBpX2NvX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoID4gMCkgewogICAgIHRpbWVzX3VwID0gMDsKICAgICB0cmFuc19yZW1haW5pbmcgPSAwOwpAQCAtMzU4MywxMCArMzgyMywxMCBAQAogICB0aW1lc191cCA9IDE7CiAgIHRyYW5zX3JlbWFpbmluZyA9IGRscGlfY29fcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGggKiAtMTsKIH0KLSAgCisKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewogICAgIHJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nCT0gZGxwaV9jb19ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIG90aGVyIHNpZGUuIHRoZXJlIG5lZWRzIHRvIGJlIHNvbWUgKi8KICAgICAvKiBtb3JlIGxvZ2luIGluIHBsYWNlIGZvciBoYW5kbGluZyBtZXNzYWdlcyBsYXJnZXIgdGhhbiBsaW5rIG10dSwgKi8KICAgICAvKiBidXQgdGhhdCBjYW4gd2FpdCBmb3IgbGF0ZXIgKi8KQEAgLTM2MDAsMTQgKzM4NDAsMTQgQEAKIAkgIHRpbWVkX291dCA9IDE7CiAJICBicmVhazsKIAl9Ci0JCisKICAgICAgICAgaWYgKGRlYnVnKSB7CiAJICBmcHJpbnRmKHdoZXJlLCJmYWlsZWQgZ2V0bXNnIGNhbGwgZXJybm8gJWRcbiIsZXJybm8pOwogCSAgZnByaW50Zih3aGVyZSwicmVjdl9tZXNzYWdlLmxlbiAlZFxuIixyZWN2X21lc3NhZ2UubGVuKTsKIAkgIGZwcmludGYod2hlcmUsInNlbmRfbWVzc2FnZS5sZW4gJWRcbiIsc2VuZF9tZXNzYWdlLmxlbik7CiAJICBmZmx1c2god2hlcmUpOwogICAgICAgICB9Ci0JCisKIAluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogCXNlbmRfcmVzcG9uc2UoKTsKIAlleGl0KDEpOwpAQCAtMzYxNiwxOSArMzg1NiwxOSBAQAogCXJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nIC09IHJlY3ZfbWVzc2FnZS5sZW47CiAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKHRpbWVkX291dCkgewogICAgICAgLyogd2UgaGl0IHRoZSBlbmQgb2YgdGhlIHRlc3QgYmFzZWQgb24gdGltZSAtIGxldHMgYmFpbCBvdXQgb2YgKi8KLSAgICAgIC8qIGhlcmUgbm93Li4uICovIAorICAgICAgLyogaGVyZSBub3cuLi4gKi8KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwicmVjdl9tZXNzYWdlLmxlbiAlZFxuIixyZWN2X21lc3NhZ2UubGVuKTsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfbWVzc2FnZS5sZW4gJWRcbiIsc2VuZF9tZXNzYWdlLmxlbik7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KLSAgICAKKwogICAgIC8qIE5vdywgc2VuZCB0aGUgcmVzcG9uc2UgdG8gdGhlIHJlbW90ZSAqLwogICAgIGlmKChwdXRtc2coZGF0YV9kZXNjcmlwdG9yLAogCSAgICAgICAwLApAQCAtMzY0MywxMiArMzg4MywxMiBAQAogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICB0cmFuc19yZWNlaXZlZCsrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAicmVjdl9kbHBpX2NvX3JyOiBUcmFuc2FjdGlvbiAlZCBjb21wbGV0ZVxuIiwKQEAgLTM2NTYsMTMgKzM4OTYsMTMgQEAKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gdGltZW91dCBvciB0cmFuc2FjdGlvbiBjb3VudCBiZWluZyAqLwogICAvKiByZWFjaGVkICovCi0gIAorCiAgIGNwdV9zdG9wKGRscGlfY29fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIGlmICh0aW1lZF9vdXQpIHsKICAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzICovCiAgICAgLyogbG9uZ2VyIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgKi8KQEAgLTM2NzAsMzEgKzM5MTAsMzEgQEAKICAgICBlbGFwc2VkX3RpbWUgLT0gUEFEX1RJTUU7CiAgIH0KICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGxwaV9jb19ycjogZ290ICVkIHRyYW5zYWN0aW9uc1xuIiwKIAkgICAgdHJhbnNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIGRscGlfY29fcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKiAKLQkJCQkJICAgKGRscGlfY29fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsgCisKKyAgZGxwaV9jb19ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZAk9ICh0cmFuc19yZWNlaXZlZCAqCisJCQkJCSAgIChkbHBpX2NvX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArCiAJCQkJCSAgICBkbHBpX2NvX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUpKTsKICAgZGxwaV9jb19ycl9yZXN1bHRzLT50cmFuc19yZWNlaXZlZAk9IHRyYW5zX3JlY2VpdmVkOwogICBkbHBpX2NvX3JyX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQk9IGVsYXBzZWRfdGltZTsKICAgaWYgKGRscGlfY29fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBkbHBpX2NvX3JyX3Jlc3VsdHMtPmNwdV91dGlsCT0gY2FsY19jcHVfdXRpbChlbGFwc2VkX3RpbWUpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X2RscGlfY29fcnI6IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogfQogDAogLyogdGhpcyByb3V0aW5lIHdpbGwgZGlzcGxheSB0aGUgdXNhZ2Ugc3RyaW5nIGZvciB0aGUgRExQSSB0ZXN0cyAqLwpAQCAtMzcxMiw5ICszOTUyLDkgQEAKIHsKICAgZXh0ZXJuIGludAlvcHRpbmQsIG9wdGVycnM7ICAvKiBpbmRleCBvZiBmaXJzdCB1bnVzZWQgYXJnIAkqLwogICBleHRlcm4gY2hhcgkqb3B0YXJnOwkgIC8qIHBvaW50ZXIgdG8gb3B0aW9uIHN0cmluZwkqLwotICAKKwogICBpbnQJCWM7Ci0gIAorCiAgIGNoYXIJYXJnMVtCVUZTSVpdLCAgLyogYXJndW1lbnQgaG9sZGVycwkJKi8KICAgYXJnMltCVUZTSVpdOwogCkBAIC0zNzIzLDE4ICszOTYzLDE4IEBACiAJICAgICJUaGUgRExQSSB0ZXN0cyBkbyBub3Qga25vdyBob3cgdG8gcnVuIHdpdGggbm8gY29udHJvbCBjb25uZWN0aW9uXG4iKTsKICAgICBleGl0KC0xKTsKICAgfQotICAKKwogICAvKiBHbyB0aHJvdWdoIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgYnJlYWsgdGhlbSAqLwogICAvKiBvdXQuIEZvciB0aG9zZSBvcHRpb25zIHRoYXQgdGFrZSB0d28gcGFybXMsIHNwZWNpZnlpbmcgb25seSAqLwogICAvKiB0aGUgZmlyc3Qgd2lsbCBzZXQgYm90aCB0byB0aGF0IHZhbHVlLiBTcGVjaWZ5aW5nIG9ubHkgdGhlICovCiAgIC8qIHNlY29uZCB3aWxsIGxlYXZlIHRoZSBmaXJzdCB1bnRvdWNoZWQuIFRvIGNoYW5nZSBvbmx5IHRoZSAqLwogICAvKiBmaXJzdCwgdXNlIHRoZSBmb3JtIGZpcnN0LCAoc2VlIHRoZSByb3V0aW5lIGJyZWFrX2FyZ3MuLiAqLwotICAKKwogI2RlZmluZSBETFBJX0FSR1MgIkQ6aE06bTpwOnI6czpXOnc6IgotICAKKwogICB3aGlsZSAoKGM9IGdldG9wdChhcmdjLCBhcmd2LCBETFBJX0FSR1MpKSAhPSBFT0YpIHsKICAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICc/JzoJCisgICAgY2FzZSAnPyc6CiAgICAgY2FzZSAnaCc6CiAgICAgICBwcmludF9kbHBpX3VzYWdlKCk7CiAgICAgICBleGl0KDEpOwpAQCAtMzc2Nyw3ICs0MDA3LDcgQEAKICAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CiAgICAgICBpZiAoYXJnMVswXSkKIAlyZXFfc2l6ZSA9IGF0b2koYXJnMSk7Ci0gICAgICBpZiAoYXJnMlswXSkJCisgICAgICBpZiAoYXJnMlswXSkKIAlyc3Bfc2l6ZSA9IGF0b2koYXJnMik7CiAgICAgICBicmVhazsKICAgICBjYXNlICdzJzoKZGlmZiAtLWdpdCBhL25ldHRlc3RfZGxwaS5oIGIvc3JjL25ldHRlc3RfZGxwaS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBuZXR0ZXN0X2RscGkuaApyZW5hbWUgdG8gc3JjL25ldHRlc3RfZGxwaS5oCmRpZmYgLS1naXQgYS9zcmMvbmV0dGVzdF9vbW5pLmMgYi9zcmMvbmV0dGVzdF9vbW5pLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQyMjFhOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9uZXR0ZXN0X29tbmkuYwpAQCAtMCwwICsxLDc0OTAgQEAKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2lmZGVmIFdBTlRfT01OSQorY2hhciBuZXR0ZXN0X29tbmlfaWRbXT0iXAorQCgjKW5ldHRlc3Rfb21uaS5jIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEyIEhld2xldHQtUGFja2FyZCBDby4gVmVyc2lvbiAyLjYuMCI7CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUX0gKKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIFNURENfSEVBREVSUworIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3RkZGVmLmg+CisjZWxzZQorIyBpZiBIQVZFX1NURExJQl9ICisjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgZW5kaWYKKyNlbmRpZgorI2lmIEhBVkVfU1RSSU5HX0gKKyMgaWYgIVNURENfSEVBREVSUyAmJiBIQVZFX01FTU9SWV9ICisjICBpbmNsdWRlIDxtZW1vcnkuaD4KKyMgZW5kaWYKKyMgaW5jbHVkZSA8c3RyaW5nLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NUUklOR1NfSAorIyBpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKyNpZiBIQVZFX0lOVFRZUEVTX0gKKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1RESU5UX0gKKyMgIGluY2x1ZGUgPHN0ZGludC5oPgorIyBlbmRpZgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX0lPQ1RMX0gKKyMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NDSEVEX0gKKyMgaW5jbHVkZSA8c2NoZWQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZm5kZWYgV0lOMzIKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2VuZGlmCisKKyNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TWVNfVElNRV9ICisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbHNlCisjICBpbmNsdWRlIDx0aW1lLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKyNpZmRlZiBOT1NURExJQkgKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbmRpZiAvKiBOT1NURExJQkggKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaWZuZGVmIFdJTjMyCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKworLyogaXQgd291bGQgc2VlbSB0aGF0IGluY2x1ZGluZyBib3RoIDxuZXRpbmV0L3RjcC5oPiBhbmQgPGxpbnV4L3RjcC5oPgorICAgaXMgbm90IGEgcGF0aCB0byBoYXBwaW5lc3MgYW5kIGpveSB3aGVuIG9uZSB3aXNoZXMgdG8gZ3JhYiB0Y3BfaW5mbworICAgc3RhdHMgYW5kIG5vdCBnZXQgc29tZXRoaW5nIGxpa2UgdGhlIGNvbXBpbGVyIGNvbXBsYWluaW5nIGFib3V0CisgICBlaXRoZXIgcmVkZWZpbml0aW9ucywgb3IgbWlzc2luZyB0Y3BpX3RvdGFsX3JldHJhbnMuICovCisjaWZkZWYgSEFWRV9MSU5VWF9UQ1BfSAorI2luY2x1ZGUgPGxpbnV4L3RjcC5oPgorI2Vsc2UKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisKKy8qIHRoaXMgaXMgdG8gZ2V0IHVzIHRoZSBkZWZpbml0aW9uIG9mIE1TR19GQVNUT1BFTi4gd2UgbWF5IG5lZWQgdG8KKyAgIGNoZWF0IGp1c3QgYSBsaXRsZSBhdCBmaXJzdCAqLworI2lmZGVmIEhBVkVfTElOVVhfU09DS0VUX0gKKyMgaW5jbHVkZSA8bGludXgvc29ja2V0Lmg+CisjIGlmbmRlZiBNU0dfRkFTVE9QRU4KKyMgIHdhcm5pbmcgVXNpbmcgb3VyIG93biB2YWx1ZSBmb3IgTVNHX0ZBU1RPUEVOCisjICBkZWZpbmUgTVNHX0ZBU1RPUEVOCTB4MjAwMDAwMDAJLyogU2VuZCBkYXRhIGluIFRDUCBTWU4gKi8KKyMgZW5kaWYKKyMgaWZuZGVmIFRDUF9GQVNUT1BFTgorIyAgd2FybmluZyBVc2luZyBvdXIgb3duIHZhbHVlIGZvciBUQ1BfRkFTVE9QRU4KKyMgIGRlZmluZSBUQ1BfRkFTVE9QRU4gMjMKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ORVRJTkVUX1NDVFBfSAorI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2Vsc2UgLyogV0lOMzIgKi8KKyNpbmNsdWRlIDxwcm9jZXNzLmg+CisjZGVmaW5lIG5ldHBlcmZfc29ja2xlbl90IHNvY2tsZW5fdAorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisvKiB3aGlsZSBpdCBpcyB1bmxpa2VseSB0aGF0IGFueW9uZSBydW5uaW5nIFdpbmRvd3MgMjAwMCBvciBOVCA0IGlzCisgICBnb2luZyB0byBiZSB0cnlpbmcgdG8gY29tcGlsZSB0aGlzLCBpZiB0aGV5IGFyZSB0aGV5IHdpbGwgd2FudCB0bworICAgZGVmaW5lIERPTlRfSVBWNiBpbiB0aGUgc291cmNlcyBmaWxlICovCisjaWZuZGVmIERPTlRfSVBWNgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKyNkZWZpbmUgc2xlZXAoeCkgU2xlZXAoKHgpKjEwMDApCisKKyNpbmNsdWRlICJtaXNzaW5nXHN0ZGludC5oIgorI2VuZGlmIC8qIFdJTjMyICovCisKKy8qIFdlIGRvbid0IHdhbnQgdG8gdXNlIGJhcmUgY29uc3RhbnRzIGluIHRoZSBzaHV0ZG93bigpIGNhbGwuICBJbiB0aGUKKyAgIGV4dHJlbWVseSB1bmxpa2VseSBldmVudCB0aGF0IFNIVVRfV1IgaXNuJ3QgZGVmaW5lZCwgd2Ugd2lsbCBkZWZpbmUKKyAgIGl0IHRvIHRoZSB2YWx1ZSB3ZSB1c2VkIHRvIGJlIHBhc3NpbmcgdG8gc2h1dGRvd24oKSBhbnl3YXkuICByYWoKKyAgIDIwMDctMDItMDggKi8KKyNpZiAhZGVmaW5lZChTSFVUX1dSKQorI2RlZmluZSBTSFVUX1dSIDEKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoSEFWRV9HRVRBRERSSU5GTykgfHwgIWRlZmluZWQoSEFWRV9HRVROQU1FSU5GTykKKyMgaW5jbHVkZSAibWlzc2luZy9nZXRhZGRyaW5mby5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJuZXRsaWIuaCIKKyNpbmNsdWRlICJuZXRzaC5oIgorI2luY2x1ZGUgIm5ldHRlc3RfYnNkLmgiCisKKy8qIHdlIG9ubHkgcmVhbGx5IHVzZSB0aGlzIG9uY2UsIGJ1dCB0aGUgaW5pdGlhbCBwYXRjaCB0bworICAgc3JjL25ldHRlc3RfYnNkLmMgdXNlZCBpdCBpbiBzZXZlcmFsIHBsYWNlcy4ga2VlcCBpdCBhcyBhIG1hY3JvCisgICBqdXN0IGZvciBraWNrcyBhbmQganVzdCBpbiBjYXNlIHdlIGRvIGVuZC11cCBuZWVkaW5nIHRvIHVzZSBpdAorICAgbXVsdGlwbGUgdGltZXMuICovCisKKyNkZWZpbmUgV0FJVF9CRUZPUkVfREFUQV9UUkFGRklDKCkgXAoreyBcCisgIGlmICh3YWl0X3RpbWVfc2VjcykgXAorICAgIHNsZWVwKHdhaXRfdGltZV9zZWNzKTsgXAorfSBcCisKKworLyogc2luY2Ugc29tZW9uZSBjYW4gYXNrIGZvciBsYXRlbmN5IHN0YXRzLCB3ZSB3aWxsIGFsd2F5cyBpbmNsdWRlCisgICB0aGlzIGFuZCBkbyB0aGUgb3RoZXIgb3RoZXIgdGhpbmdzICovCisjaW5jbHVkZSAiaGlzdC5oIgorCitzdGF0aWMgSElTVCB0aW1lX2hpc3Q7CisKKworCisjaWZkZWYgV0FOVF9JTlRFUlZBTFMKK2ludCBpbnRlcnZhbF9jb3VudDsKK3Vuc2lnbmVkIGludCBpbnRlcnZhbF93YWl0X21pY3Jvc2Vjb25kczsKKworLyogaG9pc3QgdGhlIHRpbWVzdGFtcHMgdXAgaGVyZSBzbyB3ZSBjYW4gdXNlIHRoZW0gdG8gZmFjdG9yLW91dCB0aGUKKyAgIHRpbWUgc3BlbnQgIndhaXRpbmciICovCisvKiBmaXJzdCBvdXQgdGltZXN0YW1wICovCisjaWZkZWYgSEFWRV9HRVRIUlRJTUUKK3N0YXRpYyBocnRpbWVfdCBpbnR2bF9vbmU7CitzdGF0aWMgaHJ0aW1lX3QgaW50dmxfdHdvOworc3RhdGljIGhydGltZV90IGludHZsX3dhaXRfc3RhcnQ7CitzdGF0aWMgaHJ0aW1lX3QgKmludHZsX29uZV9wdHIgPSAmaW50dmxfb25lOworc3RhdGljIGhydGltZV90ICppbnR2bF90d29fcHRyID0gJmludHZsX3R3bzsKK3N0YXRpYyBocnRpbWVfdCAqdGVtcF9pbnR2bF9wdHIgPSAmaW50dmxfb25lOworI2VsaWYgZGVmaW5lZChXSU4zMikKK3N0YXRpYyBMQVJHRV9JTlRFR0VSIGludHZsX29uZTsKK3N0YXRpYyBMQVJHRV9JTlRFR0VSIGludHZsX3R3bzsKK3N0YXRpYyBMQVJHRV9JTlRFR0VSIGludHZsX3dhaXRfc3RhcnQ7CitzdGF0aWMgTEFSR0VfSU5URUdFUiAqaW50dmxfb25lX3B0ciA9ICZpbnR2bF9vbmU7CitzdGF0aWMgTEFSR0VfSU5URUdFUiAqaW50dmxfdHdvX3B0ciA9ICZpbnR2bF90d287CitzdGF0aWMgTEFSR0VfSU5URUdFUiAqdGVtcF9pbnR2bF9wdHIgPSAmaW50dmxfb25lOworI2Vsc2UKK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCBpbnR2bF9vbmU7CitzdGF0aWMgc3RydWN0IHRpbWV2YWwgaW50dmxfdHdvOworc3RhdGljIHN0cnVjdCB0aW1ldmFsIGludHZsX3dhaXRfc3RhcnQ7CitzdGF0aWMgc3RydWN0IHRpbWV2YWwgKmludHZsX29uZV9wdHIgPSAmaW50dmxfb25lOworc3RhdGljIHN0cnVjdCB0aW1ldmFsICppbnR2bF90d29fcHRyID0gJmludHZsX3R3bzsKK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCAqdGVtcF9pbnR2bF9wdHIgPSAmaW50dmxfb25lOworI2VuZGlmCisKKyNpZm5kZWYgV0FOVF9TUElOCisjaWZkZWYgV0lOMzIKKyNkZWZpbmUgSU5URVJWQUxTX0lOSVQoKSBcCisgICAgaWYgKGludGVydmFsX2J1cnN0KSB7IFwKKyAgICAgIC8qIHplcm8gbWVhbnMgdGhhdCB3ZSBuZXZlciBwYXVzZSwgc28gd2UgbmV2ZXIgc2hvdWxkIG5lZWQgdGhlIFwKKyAgICAgICAgIGludGVydmFsIHRpbWVyLiB3ZSB1c2VkIHRvIHVzZSBpdCBmb3IgZGVtbyBtb2RlLCBidXQgd2UgZGVhbCBcCisJIHdpdGggdGhhdCB3aXRoIGEgdmFyaWFudCBvbiB3YXRjaGluZyB0aGUgY2xvY2sgcmF0aGVyIHRoYW4gXAorCSB3YWl0aW5nIGZvciBhIHRpbWVyLiByYWogMjAwNi0wMi0wNiAqLyBcCisgICAgICBzdGFydF9pdGltZXIoaW50ZXJ2YWxfd2F0ZSk7IFwKKyAgICB9IFwKKyAgICBpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OyBcCisgICAgaW50ZXJ2YWxfd2FpdF9taWNyb3NlY29uZHMgPSAwOworI2Vsc2UKK3NpZ3NldF90IHNpZ25hbF9zZXQ7CisjZGVmaW5lIElOVEVSVkFMU19JTklUKCkgXAorICAgIGlmIChpbnRlcnZhbF9idXJzdCkgeyBcCisgICAgICAvKiB6ZXJvIG1lYW5zIHRoYXQgd2UgbmV2ZXIgcGF1c2UsIHNvIHdlIG5ldmVyIHNob3VsZCBuZWVkIHRoZSBcCisgICAgICAgICBpbnRlcnZhbCB0aW1lci4gd2UgdXNlZCB0byB1c2UgaXQgZm9yIGRlbW8gbW9kZSwgYnV0IHdlIGRlYWwgXAorCSB3aXRoIHRoYXQgd2l0aCBhIHZhcmlhbnQgb24gd2F0Y2hpbmcgdGhlIGNsb2NrIHJhdGhlciB0aGFuIFwKKwkgd2FpdGluZyBmb3IgYSB0aW1lci4gcmFqIDIwMDYtMDItMDYgKi8gXAorICAgICAgc3RhcnRfaXRpbWVyKGludGVydmFsX3dhdGUpOyBcCisgICAgfSBcCisgICAgaW50ZXJ2YWxfY291bnQgPSBpbnRlcnZhbF9idXJzdDsgXAorICAgIGludGVydmFsX3dhaXRfbWljcm9zZWNvbmRzID0gMDsgXAorICAgIC8qIGdldCB0aGUgc2lnbmFsIHNldCBmb3IgdGhlIGNhbGwgdG8gc2lnc3VzcGVuZCAqLyBcCisgICAgaWYgKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgKHNpZ3NldF90ICopTlVMTCwgJnNpZ25hbF9zZXQpICE9IDApIHsgXAorICAgICAgZnByaW50Zih3aGVyZSwgXAorCSAgICAgICIlczogdW5hYmxlIHRvIGdldCBzaWdtYXNrIGVycm5vICVkXG4iLCBcCisJICAgICAgX19GVU5DVElPTl9fLCBcCisJICAgICAgZXJybm8pOyBcCisgICAgICBmZmx1c2god2hlcmUpOyBcCisgICAgICBleGl0KDEpOyBcCisgICAgfQorI2VuZGlmIC8qIFdJTjMyICovCisKKyNpZmRlZiBXSU4zMgorI2RlZmluZSBJTlRFUlZBTFNfV0FJVCgpIFwKKyAgICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGludGVydmFsIGNvdW50IGlzIHRoZSBjb3VudC1kb3duIGNvdW50ZXIgXAorCSB0byBkZWNpZGUgdG8gc2xlZXAgZm9yIGEgbGl0dGxlIGJpdCAqLyBcCisgICAgICBpZiAoKGludGVydmFsX2J1cnN0KSAmJiAoLS1pbnRlcnZhbF9jb3VudCA9PSAwKSkgeyBcCisJLyogY2FsbCBXYWl0Rm9yU2luZ2xlT2JqZWN0IGFuZCB3YWl0IGZvciB0aGUgaW50ZXJ2YWwgdGltZXIgdG8gZ2V0IHVzIFwKKwkgICBvdXQgKi8gXAorCWlmIChkZWJ1ZyA+IDEpIHsgXAorCSAgZnByaW50Zih3aGVyZSwiYWJvdXQgdG8gc3VzcGVuZFxuIik7IFwKKwkgIGZmbHVzaCh3aGVyZSk7IFwKKwl9IFwKKyAgICAgICAgSElTVF90aW1lc3RhbXAoJmludHZsX3dhaXRfc3RhcnQpOyBcCisgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3QoV2luVGltZXIsIElORklOSVRFKSAhPSBXQUlUX09CSkVDVF8wKSB7IFwKKyAgICAgICAgZnByaW50Zih3aGVyZSwgIldhaXRGb3JTaW5nbGVPYmplY3QgZmFpbGVkICglZClcbiIsIEdldExhc3RFcnJvcigpKTsgXAorCSAgZmZsdXNoKHdoZXJlKTsgXAorCSAgZXhpdCgxKTsgXAorCX0gXAorICAgICAgICBISVNUX3RpbWVzdGFtcCgmaW50dmxfdHdvKTsgXAorICAgICAgICBpbnRlcnZhbF93YWl0X21pY3Jvc2Vjb25kcyArPSBcCisgICAgICAgICAgZGVsdGFfbWljcm8oJmludHZsX3dhaXRfc3RhcnQsJmludHZsX3R3byk7IFwKKwlpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OyBcCisgICAgICB9CisjZWxzZQorI2RlZmluZSBJTlRFUlZBTFNfV0FJVCgpIFwKKyAgICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGludGVydmFsIGNvdW50IGlzIHRoZSBjb3VudC1kb3duIGNvdXRlciBcCisJIHRvIGRlY2lkZSB0byBzbGVlcCBmb3IgYSBsaXR0bGUgYml0ICovIFwKKyAgICAgIGlmICgoaW50ZXJ2YWxfYnVyc3QpICYmICgtLWludGVydmFsX2NvdW50ID09IDApKSB7IFwKKwkvKiBjYWxsIHNpZ3N1c3BlbmQgYW5kIHdhaXQgZm9yIHRoZSBpbnRlcnZhbCB0aW1lciB0byBnZXQgdXMgXAorCSAgIG91dCAqLyBcCisJaWYgKGRlYnVnID4gMSkgeyBcCisJICBmcHJpbnRmKHdoZXJlLCJhYm91dCB0byBzdXNwZW5kXG4iKTsgXAorCSAgZmZsdXNoKHdoZXJlKTsgXAorCX0gXAorICAgICAgICBISVNUX3RpbWVzdGFtcCgmaW50dmxfd2FpdF9zdGFydCk7IFwKKwlpZiAoc2lnc3VzcGVuZCgmc2lnbmFsX3NldCkgPT0gRUZBVUxUKSB7IFwKKwkgIGZwcmludGYod2hlcmUsIFwKKwkJICAiJXM6IGZhdWx0IHdpdGggc2lnc3VzcGVuZC5cbiIsIFwKKyAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7IFwKKwkgIGZmbHVzaCh3aGVyZSk7IFwKKwkgIGV4aXQoMSk7IFwKKwl9IFwKKyAgICAgICAgSElTVF90aW1lc3RhbXAoJmludHZsX3R3byk7IFwKKyAgICAgICAgaW50ZXJ2YWxfd2FpdF9taWNyb3NlY29uZHMgKz0gXAorICAgICAgICAgIGRlbHRhX21pY3JvKCZpbnR2bF93YWl0X3N0YXJ0LCZpbnR2bF90d28pOyBcCisJaW50ZXJ2YWxfY291bnQgPSBpbnRlcnZhbF9idXJzdDsgXAorICAgICAgfQorI2VuZGlmIC8qIFdJTjMyICovCisjZWxzZQorCisjZGVmaW5lIElOVEVSVkFMU19JTklUKCkgXAorICAgICAgaWYgKGludGVydmFsX2J1cnN0KSB7IFwKKwlISVNUX3RpbWVzdGFtcChpbnR2bF9vbmVfcHRyKTsgXAorICAgICAgfSBcCisgICAgICBpbnRlcnZhbF93YWl0X21pY3Jvc2Vjb25kcyA9IDA7IFwKKyAgICAgIGludGVydmFsX2NvdW50ID0gaW50ZXJ2YWxfYnVyc3Q7IFwKKworI2RlZmluZSBJTlRFUlZBTFNfV0FJVCgpIFwKKyAgICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGludGVydmFsIGNvdW50IGlzIHRoZSBjb3VudC1kb3duIGNvdXRlciBcCisJIHRvIGRlY2lkZSB0byBzbGVlcCBmb3IgYSBsaXR0bGUgYml0ICovIFwKKyAgICAgIGlmICgoaW50ZXJ2YWxfYnVyc3QpICYmICgtLWludGVydmFsX2NvdW50ID09IDApKSB7IFwKKwkvKiBzcGluIGFuZCB3YWl0IGZvciB0aGUgaW50ZXJ2YWwgdGltZXIgdG8gZ2V0IHVzIFwKKwkgICBvdXQgKi8gXAorCWlmIChkZWJ1ZyA+IDEpIHsgXAorCSAgZnByaW50Zih3aGVyZSwiYWJvdXQgdG8gc3BpbiBzdXNwZW5kXG4iKTsgXAorCSAgZmZsdXNoKHdoZXJlKTsgXAorCX0gXAorICAgICAgICBcCisgICAgICAgIEhJU1RfdGltZXN0YW1wKCZpbnR2bF93YWl0X3N0YXJ0KTsgXAorICAgICAgICBkbyB7IFwKKyAgICAgICAgICBISVNUX3RpbWVzdGFtcChpbnR2bF90d29fcHRyKTsgfSBcCisgICAgICAgIHdoaWxlKGRlbHRhX21pY3JvKGludHZsX29uZV9wdHIsaW50dmxfdHdvX3B0cikgPCBpbnRlcnZhbF91c2Vjcyk7IFwKKyAgICAgICAgaW50ZXJ2YWxfd2FpdF9taWNyb3NlY29uZHMgKz0gXAorICAgICAgICAgIGRlbHRhX21pY3JvKCZpbnR2bF93YWl0X3N0YXJ0LCZpbnR2bF90d28pOyBcCisJdGVtcF9pbnR2bF9wdHIgPSBpbnR2bF9vbmVfcHRyOyBcCisJaW50dmxfb25lX3B0ciA9IGludHZsX3R3b19wdHI7IFwKKwlpbnR2bF90d29fcHRyID0gdGVtcF9pbnR2bF9wdHI7IFwKKwlpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OyBcCisgICAgICB9CisjZW5kaWYKKyNlbmRpZgorCisjZGVmaW5lIE5FVFBFUkZfV0FJVEFMTCAweDEKKworZXh0ZXJuIHZvaWQgZ2V0X3V1aWRfc3RyaW5nKGNoYXIgKnN0cmluZywgc2l6ZV90IHNpemUpOworCisvKiBhIGJvYXRsb2FkIG9mIGdsb2JhbHMgd2hpbGUgSSBzZXR0bGUgdGhpbmdzIG91dCAqLworY2hhciAqb3V0cHV0X3NlbGVjdGlvbl9zcGVjID0gTlVMTDsKKworY2hhciB0ZXN0X3V1aWRbMzhdOworCitkb3VibGUgcmVzdWx0X2NvbmZpZF9wY3QgPSAtMS4wOworZG91YmxlIGxvY19jcHVfY29uZmlkX3BjdCA9IC0xLjA7Citkb3VibGUgcmVtX2NwdV9jb25maWRfcGN0ID0gLTEuMDsKK2RvdWJsZSBpbnRlcnZhbF9wY3QgPSAtMS4wOworCitpbnQgcHJvdG9jb2w7CitpbnQgZGlyZWN0aW9uOworaW50IHJlbW90ZV9zZW5kX3NpemUgPSAtMTsKK2ludCByZW1vdGVfcmVjdl9zaXplID0gLTE7CitpbnQgcmVtb3RlX3NlbmRfc2l6ZV9yZXEgPSAtMTsKK2ludCByZW1vdGVfcmVjdl9zaXplX3JlcSA9IC0xOworaW50IHJlbW90ZV91c2Vfc2VuZGZpbGU7CisKK2V4dGVybiBpbnQgbG9jX2RpcnR5X2NvdW50OworZXh0ZXJuIGludCBsb2NfY2xlYW5fY291bnQ7CitleHRlcm4gaW50IHJlbV9kaXJ0eV9jb3VudDsKK2V4dGVybiBpbnQgcmVtX2NsZWFuX2NvdW50OworaW50IHJlbW90ZV9jaGVja3N1bV9vZmY7CitpbnQgY29ubmVjdGlvbl90ZXN0OworaW50IGRvbnRfZ2l2ZV91cCA9IDA7CitpbnQgdXNlX2Zhc3RvcGVuID0gMDsKK2ludCB1c2Vfd3JpdGUgPSAwOworaW50IG5lZWRfdG9fY29ubmVjdDsKK2ludCBuZWVkX2Nvbm5lY3Rpb247CitpbnQgYnl0ZXNfdG9fc2VuZDsKK2RvdWJsZSBieXRlc19wZXJfc2VuZDsKK2ludCBmYWlsZWRfc2VuZHM7CitpbnQgYnl0ZXNfdG9fcmVjdjsKK2RvdWJsZSBieXRlc19wZXJfcmVjdjsKK2ludCBudWxsX21lc3NhZ2Vfb2sgPSAwOworCitpbnQgd2FzX2xlZ2FjeSA9IDA7CitpbnQgbGVnYWN5ID0gMDsKK2ludCBpbXBsaWNpdF9kaXJlY3Rpb24gPSAwOworaW50IGV4cGxpY2l0X2RhdGFfYWRkcmVzcyA9IDA7CitpbnQgd2FudF9kZWZlcl9hY2NlcHQgPSAwOworCit1aW50NjRfdCAgICAgIHRyYW5zX2NvbXBsZXRlZCA9IDA7CitpbnQ2NF90ICAgICAgIHVuaXRzX3JlbWFpbmluZzsKK3VpbnQ2NF90ICAgICAgYnl0ZXNfc2VudCA9IDA7Cit1aW50NjRfdCAgICAgIGJ5dGVzX3JlY2VpdmVkID0gMDsKK3VpbnQ2NF90ICAgICAgbG9jYWxfc2VuZF9jYWxscyA9IDA7Cit1aW50NjRfdCAgICAgIGxvY2FsX3JlY2VpdmVfY2FsbHMgPSAwOwordWludDY0X3QgICAgICByZW1vdGVfYnl0ZXNfc2VudDsKK3VpbnQ2NF90ICAgICAgcmVtb3RlX2J5dGVzX3JlY2VpdmVkOwordWludDY0X3QgICAgICByZW1vdGVfc2VuZF9jYWxsczsKK3VpbnQ2NF90ICAgICAgcmVtb3RlX3JlY2VpdmVfY2FsbHM7Citkb3VibGUgICAgICAgIGJ5dGVzX3hmZXJkOworZG91YmxlICAgICAgICByZW1vdGVfYnl0ZXNfeGZlcmQ7Citkb3VibGUgICAgICAgIHJlbW90ZV9ieXRlc19wZXJfcmVjdjsKK2RvdWJsZSAgICAgICAgcmVtb3RlX2J5dGVzX3Blcl9zZW5kOworZmxvYXQgICAgICAgICBlbGFwc2VkX3RpbWU7CitmbG9hdCAgICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbjsKK2Zsb2F0CSAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kOworZmxvYXQgICAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uOworZmxvYXQJICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kOworZG91YmxlCSAgICAgIHRocnVwdXQ7Citkb3VibGUgICAgICAgIGxvY2FsX3NlbmRfdGhydXB1dDsKK2RvdWJsZSAgICAgICAgbG9jYWxfcmVjdl90aHJ1cHV0OworZG91YmxlICAgICAgICByZW1vdGVfc2VuZF90aHJ1cHV0OworZG91YmxlICAgICAgICByZW1vdGVfcmVjdl90aHJ1cHV0OworCisvKiBrbHVkZ2VzIGZvciBvbW5pIG91dHB1dCAqLworZG91YmxlICAgICAgZWxhcHNlZF90aW1lX2RvdWJsZTsKK2RvdWJsZSAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kX2RvdWJsZTsKK2RvdWJsZSAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZF9kb3VibGU7Citkb3VibGUgICAgICB0cmFuc2FjdGlvbl9yYXRlID0gMS4wOworZG91YmxlICAgICAgcnR0X2xhdGVuY3kgPSAtMS4wOworaW50MzJfdCAgICAgdHJhbnNwb3J0X21zcyA9IC0yOworaW50MzJfdCAgICAgbG9jYWxfdHJhbnNwb3J0X3JldHJhbnMgPSAtMjsKK2ludDMyX3QgICAgIHJlbW90ZV90cmFuc3BvcnRfcmV0cmFucyA9IC0yOworY2hhciAgICAgICAgKmRlcHJlY2F0ZWRfc3RyID0gIkRlcHJlY2F0ZWQiOworaW50ICAgICAgICAgcmVtb3RlX2ludGVyZmFjZV92ZW5kb3IgPSAtMjsKK2ludCAgICAgICAgIHJlbW90ZV9pbnRlcmZhY2VfZGV2aWNlID0gLTI7CitpbnQgICAgICAgICByZW1vdGVfaW50ZXJmYWNlX3N1YnZlbmRvciA9IC0yOworaW50ICAgICAgICAgcmVtb3RlX2ludGVyZmFjZV9zdWJkZXZpY2UgPSAtMjsKK2ludCAgICAgICAgIGxvY2FsX2ludGVyZmFjZV92ZW5kb3IgPSAtMjsKK2ludCAgICAgICAgIGxvY2FsX2ludGVyZmFjZV9kZXZpY2UgPSAtMjsKK2ludCAgICAgICAgIGxvY2FsX2ludGVyZmFjZV9zdWJ2ZW5kb3IgPSAtMjsKK2ludCAgICAgICAgIGxvY2FsX2ludGVyZmFjZV9zdWJkZXZpY2UgPSAtMjsKK2ludCAgICAgICAgIGxvY2FsX2NwdV9mcmVxdWVuY3kgPSAwOworaW50ICAgICAgICAgcmVtb3RlX2NwdV9mcmVxdWVuY3kgPSAwOworCitpbnQgICAgICAgICBsb2NhbF9zZWN1cml0eV90eXBlX2lkOworaW50ICAgICAgICAgbG9jYWxfc2VjdXJpdHlfZW5hYmxlZF9udW07CitpbnQgICAgICAgICByZW1vdGVfc2VjdXJpdHlfdHlwZV9pZDsKK2ludCAgICAgICAgIHJlbW90ZV9zZWN1cml0eV9lbmFibGVkX251bTsKKworY2hhciAgICAgICAgbG9jYWxfY29uZ19jb250cm9sWzE2XSA9ICIiOworY2hhciAgICAgICAgcmVtb3RlX2NvbmdfY29udHJvbFsxNl0gPSAiIjsKK2NoYXIgICAgICAgIGxvY2FsX2NvbmdfY29udHJvbF9yZXFbMTZdID0gIiI7CitjaGFyICAgICAgICByZW1vdGVfY29uZ19jb250cm9sX3JlcVsxNl0gPSAiIjsKKworaW50ICAgICAgICAgcmVjZWl2ZV90aW1lb3V0ID0gLTE7CisKKy8qIG5ldyBzdGF0aXN0aWNzIGJhc2VkIG9uIGNvZGUgZGlmZnMgZnJvbSBHb29nbGUsIHdpdGggcmFqJ3Mgb3duCisgICBwZXJzb25hbCB0d2lzdCBhZGRlZCB0byBtYWtlIHRoZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBvbW5pCisgICB0ZXN0cy4uLiAyMDEwMDkxMyAqLworCisvKiBtaW4gYW5kIG1heCAibGF0ZW5jeSIgKi8KK2ludCAgICAgICAgIG1pbl9sYXRlbmN5ID0gLTEsIG1heF9sYXRlbmN5ID0gLTE7CisvKiB0aGUgcGVyY2VudGlsZXMgKi8KK2ludCAgICAgICAgIHA1MF9sYXRlbmN5ID0gLTEsIHA5MF9sYXRlbmN5ID0gLTEsIHA5OV9sYXRlbmN5ID0gLTE7CisvKiBtZWFuIGFuZCBzdGRkZXYgLSB3aGlsZSB0aGUgbWVhbiBpcyByZWR1bnRhbnQgd2l0aCB0aGUgKl9SUiB0ZXN0IHdlCisgICBrZWVwIGl0IGJlY2F1c2UgaXQgd29uJ3QgYmUgZm9yIG90aGVyIHRlc3RzICovCitkb3VibGUgICAgICBtZWFuX2xhdGVuY3kgPSAtMS4wLCBzdGRkZXZfbGF0ZW5jeSA9IC0xLjA7CisKKy8qIGRlZmF1bHQgdG8gemVybyB0byBhdm9pZCByYW5kb21pemluZyAqLworaW50IGxvY2FsX21hc2tfbGVuID0gMDsKK2ludCByZW1vdGVfbWFza19sZW4gPSAwOworCitpbnQgcHJpbnRpbmdfaW5pdGlhbGl6ZWQgPSAwOworCitjaGFyICpzZF9zdHI7CitjaGFyICp0aHJ1cHV0X2Zvcm1hdF9zdHI7CisKK2NoYXIgKnNvY2tldF90eXBlX3N0cjsKK2NoYXIgKnByb3RvY29sX3N0cjsKK2NoYXIgKmRpcmVjdGlvbl9zdHI7CisKK2V4dGVybiBpbnQgZmlyc3RfYnVyc3Rfc2l6ZTsKKworaW50ICBwYXJhbGxlbF9jb25uZWN0aW9ucyA9IDE7CisKK3N0YXRpYyBpbnQgc29ja2V0X2RlYnVnID0gMDsKKworI2lmIGRlZmluZWQoSEFWRV9TRU5ERklMRSkgJiYgKGRlZmluZWQoX19saW51eCkgfHwgZGVmaW5lZChfX3N1bikpCisjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CisjZW5kaWYgLyogSEFWRV9TRU5ERklMRSAmJiAoX19saW51eCB8fCBfX3N1bikgKi8KKworc3RhdGljIGludCBjb25maWRlbmNlX2l0ZXJhdGlvbjsKKworc3RhdGljICBpbnQgbG9jYWxfY3B1X21ldGhvZDsKK3N0YXRpYyAgaW50IHJlbW90ZV9jcHVfbWV0aG9kOworCisvKiB0aGVzZSB3aWxsIGNvbnRyb2wgdGhlIHdpZHRoIG9mIHBvcnQgbnVtYmVycyB3ZSB0cnkgdG8gdXNlIGluIHRoZSAqLworLyogVENQX0NSUiBhbmQvb3IgVENQX1RSUiB0ZXN0cy4gcmFqIDMvOTUgKi8KK3N0YXRpYyBpbnQgY2xpZW50X3BvcnRfbWluID0gNTAwMDsKK3N0YXRpYyBpbnQgY2xpZW50X3BvcnRfbWF4ID0gNjU1MzU7CisKKyAvKiBkaWZmZXJlbnQgb3B0aW9ucyBmb3IgdGhlIHNvY2tldHMJCQkJKi8KKworaW50CisgIGxvY19ub2RlbGF5LAkJLyogZG9uJ3QvZG8gdXNlIE5PREVMQVkJbG9jYWxseQkJKi8KKyAgcmVtX25vZGVsYXksCQkvKiBkb24ndC9kbyB1c2UgTk9ERUxBWSByZW1vdGVseQkqLworICBsb2Nfc25kYXZvaWQsCQkvKiBhdm9pZCBzZW5kIGNvcGllcyBsb2NhbGx5CQkqLworICBsb2NfcmN2YXZvaWQsCQkvKiBhdm9pZCByZWN2IGNvcGllcyBsb2NhbGx5CQkqLworICByZW1fc25kYXZvaWQsCQkvKiBhdm9pZCBzZW5kIGNvcGllcyByZW1vdGVseQkJKi8KKyAgcmVtX3JjdmF2b2lkOyAJLyogYXZvaWQgcmVjdl9jb3BpZXMgcmVtb3RlbHkJCSovCisKK2V4dGVybiBpbnQKKyAgbG9jX3RjcGNvcmssCisgIHJlbV90Y3Bjb3JrLAorICBsb2NhbF9jb25uZWN0ZWQsCisgIHJlbW90ZV9jb25uZWN0ZWQ7CisKK2VudW0gbmV0cGVyZl9vdXRwdXRfdHlwZSB7CisgIE5FVFBFUkZfVFlQRV9VTktOT1dOLAorICBORVRQRVJGX1RZUEVfVUlOVDMyLAorICBORVRQRVJGX1RZUEVfSU5UMzIsCisgIE5FVFBFUkZfVFlQRV9VSU5UNjQsCisgIE5FVFBFUkZfVFlQRV9JTlQ2NCwKKyAgTkVUUEVSRl9UWVBFX0NIQVIsCisgIE5FVFBFUkZfVFlQRV9GTE9BVCwKKyAgTkVUUEVSRl9UWVBFX0RPVUJMRSwKK307CisKKy8qIHlvdSBzaG91bGQgYWRkIHRvIHRoaXMgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgc2hvdWxkIGFwcGVhciBpbgorICAgdGhlIGRlZmF1bHQgY3N2IChldmVyeXRoaW5nKSBvdXRwdXQgKi8KKworZW51bSBuZXRwZXJmX291dHB1dF9uYW1lIHsKKyAgTkVUUEVSRl9PVVRQVVRfVU5LTk9XTiwKKyAgT1VUUFVUX05PTkUsCisgIFNPQ0tFVF9UWVBFLAorICBQUk9UT0NPTCwKKyAgRElSRUNUSU9OLAorICBFTEFQU0VEX1RJTUUsCisgIFRIUk9VR0hQVVQsCisgIFRIUk9VR0hQVVRfVU5JVFMsCisgIExTU19TSVpFX1JFUSwKKyAgTFNTX1NJWkUsCisgIExTU19TSVpFX0VORCwKKyAgTFNSX1NJWkVfUkVRLAorICBMU1JfU0laRSwKKyAgTFNSX1NJWkVfRU5ELAorICBSU1NfU0laRV9SRVEsCisgIFJTU19TSVpFLAorICBSU1NfU0laRV9FTkQsCisgIFJTUl9TSVpFX1JFUSwKKyAgUlNSX1NJWkUsCisgIFJTUl9TSVpFX0VORCwKKyAgTE9DQUxfU0VORF9TSVpFLAorICBMT0NBTF9SRUNWX1NJWkUsCisgIFJFTU9URV9TRU5EX1NJWkUsCisgIFJFTU9URV9SRUNWX1NJWkUsCisgIFJFUVVFU1RfU0laRSwKKyAgUkVTUE9OU0VfU0laRSwKKyAgTE9DQUxfQ1BVX1VUSUwsCisgIExPQ0FMX0NQVV9QRVJDRU5UX1VTRVIsCisgIExPQ0FMX0NQVV9QRVJDRU5UX1NZU1RFTSwKKyAgTE9DQUxfQ1BVX1BFUkNFTlRfSU9XQUlULAorICBMT0NBTF9DUFVfUEVSQ0VOVF9JUlEsCisgIExPQ0FMX0NQVV9QRVJDRU5UX1NXSU5UUiwKKyAgTE9DQUxfQ1BVX01FVEhPRCwKKyAgTE9DQUxfU0QsCisgIFJFTU9URV9DUFVfVVRJTCwKKyAgUkVNT1RFX0NQVV9QRVJDRU5UX1VTRVIsCisgIFJFTU9URV9DUFVfUEVSQ0VOVF9TWVNURU0sCisgIFJFTU9URV9DUFVfUEVSQ0VOVF9JT1dBSVQsCisgIFJFTU9URV9DUFVfUEVSQ0VOVF9JUlEsCisgIFJFTU9URV9DUFVfUEVSQ0VOVF9TV0lOVFIsCisgIFJFTU9URV9DUFVfTUVUSE9ELAorICBSRU1PVEVfU0QsCisgIFNEX1VOSVRTLAorICBDT05GSURFTkNFX0xFVkVMLAorICBDT05GSURFTkNFX0lOVEVSVkFMLAorICBDT05GSURFTkNFX0lURVJBVElPTiwKKyAgVEhST1VHSFBVVF9DT05GSUQsCisgIExPQ0FMX0NQVV9DT05GSUQsCisgIFJFTU9URV9DUFVfQ09ORklELAorICBUUkFOU0FDVElPTl9SQVRFLAorICBSVF9MQVRFTkNZLAorICBCVVJTVF9TSVpFLAorICBMT0NBTF9UUkFOU1BPUlRfUkVUUkFOUywKKyAgUkVNT1RFX1RSQU5TUE9SVF9SRVRSQU5TLAorICBUUkFOU1BPUlRfTVNTLAorICBMT0NBTF9TRU5EX1RIUk9VR0hQVVQsCisgIExPQ0FMX1JFQ1ZfVEhST1VHSFBVVCwKKyAgUkVNT1RFX1NFTkRfVEhST1VHSFBVVCwKKyAgUkVNT1RFX1JFQ1ZfVEhST1VHSFBVVCwKKyAgTE9DQUxfQ1BVX0JJTkQsCisgIExPQ0FMX0NQVV9DT1VOVCwKKyAgTE9DQUxfQ1BVX1BFQUtfVVRJTCwKKyAgTE9DQUxfQ1BVX1BFQUtfSUQsCisgIExPQ0FMX0NQVV9NT0RFTCwKKyAgTE9DQUxfQ1BVX0ZSRVFVRU5DWSwKKyAgUkVNT1RFX0NQVV9CSU5ELAorICBSRU1PVEVfQ1BVX0NPVU5ULAorICBSRU1PVEVfQ1BVX1BFQUtfVVRJTCwKKyAgUkVNT1RFX0NQVV9QRUFLX0lELAorICBSRU1PVEVfQ1BVX01PREVMLAorICBSRU1PVEVfQ1BVX0ZSRVFVRU5DWSwKKyAgU09VUkNFX1BPUlQsCisgIFNPVVJDRV9BRERSLAorICBTT1VSQ0VfRkFNSUxZLAorICBERVNUX1BPUlQsCisgIERFU1RfQUREUiwKKyAgREVTVF9GQU1JTFksCisgIExPQ0FMX1NFTkRfQ0FMTFMsCisgIExPQ0FMX1JFQ1ZfQ0FMTFMsCisgIExPQ0FMX0JZVEVTX1BFUl9SRUNWLAorICBMT0NBTF9CWVRFU19QRVJfU0VORCwKKyAgTE9DQUxfQllURVNfU0VOVCwKKyAgTE9DQUxfQllURVNfUkVDVkQsCisgIExPQ0FMX0JZVEVTX1hGRVJELAorICBMT0NBTF9TRU5EX09GRlNFVCwKKyAgTE9DQUxfUkVDVl9PRkZTRVQsCisgIExPQ0FMX1NFTkRfQUxJR04sCisgIExPQ0FMX1JFQ1ZfQUxJR04sCisgIExPQ0FMX1NFTkRfV0lEVEgsCisgIExPQ0FMX1JFQ1ZfV0lEVEgsCisgIExPQ0FMX1NFTkRfRElSVFlfQ09VTlQsCisgIExPQ0FMX1JFQ1ZfRElSVFlfQ09VTlQsCisgIExPQ0FMX1JFQ1ZfQ0xFQU5fQ09VTlQsCisgIExPQ0FMX05PREVMQVksCisgIExPQ0FMX0NPUkssCisgIFJFTU9URV9TRU5EX0NBTExTLAorICBSRU1PVEVfUkVDVl9DQUxMUywKKyAgUkVNT1RFX0JZVEVTX1BFUl9SRUNWLAorICBSRU1PVEVfQllURVNfUEVSX1NFTkQsCisgIFJFTU9URV9CWVRFU19TRU5ULAorICBSRU1PVEVfQllURVNfUkVDVkQsCisgIFJFTU9URV9CWVRFU19YRkVSRCwKKyAgUkVNT1RFX1NFTkRfT0ZGU0VULAorICBSRU1PVEVfUkVDVl9PRkZTRVQsCisgIFJFTU9URV9TRU5EX0FMSUdOLAorICBSRU1PVEVfUkVDVl9BTElHTiwKKyAgUkVNT1RFX1NFTkRfV0lEVEgsCisgIFJFTU9URV9SRUNWX1dJRFRILAorICBSRU1PVEVfU0VORF9ESVJUWV9DT1VOVCwKKyAgUkVNT1RFX1JFQ1ZfRElSVFlfQ09VTlQsCisgIFJFTU9URV9SRUNWX0NMRUFOX0NPVU5ULAorICBSRU1PVEVfTk9ERUxBWSwKKyAgUkVNT1RFX0NPUkssCisgIExPQ0FMX1NZU05BTUUsCisgIExPQ0FMX1NZU1RFTV9NT0RFTCwKKyAgTE9DQUxfUkVMRUFTRSwKKyAgTE9DQUxfVkVSU0lPTiwKKyAgTE9DQUxfTUFDSElORSwKKyAgUkVNT1RFX1NZU05BTUUsCisgIFJFTU9URV9TWVNURU1fTU9ERUwsCisgIFJFTU9URV9SRUxFQVNFLAorICBSRU1PVEVfVkVSU0lPTiwKKyAgUkVNT1RFX01BQ0hJTkUsCisgIExPQ0FMX0lOVEVSRkFDRV9OQU1FLAorICBMT0NBTF9JTlRFUkZBQ0VfVkVORE9SLAorICBMT0NBTF9JTlRFUkZBQ0VfREVWSUNFLAorICBMT0NBTF9JTlRFUkZBQ0VfU1VCVkVORE9SLAorICBMT0NBTF9JTlRFUkZBQ0VfU1VCREVWSUNFLAorICBMT0NBTF9EUklWRVJfTkFNRSwKKyAgTE9DQUxfRFJJVkVSX1ZFUlNJT04sCisgIExPQ0FMX0RSSVZFUl9GSVJNV0FSRSwKKyAgTE9DQUxfRFJJVkVSX0JVUywKKyAgTE9DQUxfSU5URVJGQUNFX1NMT1QsCisgIFJFTU9URV9JTlRFUkZBQ0VfTkFNRSwKKyAgUkVNT1RFX0lOVEVSRkFDRV9WRU5ET1IsCisgIFJFTU9URV9JTlRFUkZBQ0VfREVWSUNFLAorICBSRU1PVEVfSU5URVJGQUNFX1NVQlZFTkRPUiwKKyAgUkVNT1RFX0lOVEVSRkFDRV9TVUJERVZJQ0UsCisgIFJFTU9URV9EUklWRVJfTkFNRSwKKyAgUkVNT1RFX0RSSVZFUl9WRVJTSU9OLAorICBSRU1PVEVfRFJJVkVSX0ZJUk1XQVJFLAorICBSRU1PVEVfRFJJVkVSX0JVUywKKyAgUkVNT1RFX0lOVEVSRkFDRV9TTE9ULAorICBMT0NBTF9JTlRFUlZBTF9VU0VDUywKKyAgTE9DQUxfSU5URVJWQUxfQlVSU1QsCisgIFJFTU9URV9JTlRFUlZBTF9VU0VDUywKKyAgUkVNT1RFX0lOVEVSVkFMX0JVUlNULAorICBMT0NBTF9TRUNVUklUWV9UWVBFX0lELAorICBMT0NBTF9TRUNVUklUWV9UWVBFLAorICBMT0NBTF9TRUNVUklUWV9FTkFCTEVEX05VTSwKKyAgTE9DQUxfU0VDVVJJVFlfRU5BQkxFRCwKKyAgTE9DQUxfU0VDVVJJVFlfU1BFQ0lGSUMsCisgIFJFTU9URV9TRUNVUklUWV9UWVBFX0lELAorICBSRU1PVEVfU0VDVVJJVFlfVFlQRSwKKyAgUkVNT1RFX1NFQ1VSSVRZX0VOQUJMRURfTlVNLAorICBSRU1PVEVfU0VDVVJJVFlfRU5BQkxFRCwKKyAgUkVNT1RFX1NFQ1VSSVRZX1NQRUNJRklDLAorICBSRVNVTFRfQlJBTkQsCisgIFVVSUQsCisgIE1JTl9MQVRFTkNZLAorICBNQVhfTEFURU5DWSwKKyAgUDUwX0xBVEVOQ1ksCisgIFA5MF9MQVRFTkNZLAorICBQOTlfTEFURU5DWSwKKyAgTUVBTl9MQVRFTkNZLAorICBTVERERVZfTEFURU5DWSwKKyAgTE9DQUxfU09DS0VUX1BSSU8sCisgIFJFTU9URV9TT0NLRVRfUFJJTywKKyAgTE9DQUxfU09DS0VUX1RPUywKKyAgUkVNT1RFX1NPQ0tFVF9UT1MsCisgIExPQ0FMX0NPTkdfQ09OVFJPTCwKKyAgUkVNT1RFX0NPTkdfQ09OVFJPTCwKKyAgTE9DQUxfRklMTF9GSUxFLAorICBSRU1PVEVfRklMTF9GSUxFLAorICBDT01NQU5EX0xJTkUsICAgIC8qIENPTU1BTkRfTElORSBzaG91bGQgYWx3YXlzIGJlICJsYXN0IiAqLworICBPVVRQVVRfRU5ELAorICBORVRQRVJGX09VVFBVVF9NQVgKK307CisKKy8qIGZsYWdzIGZvciB0aGUgb3V0cHV0IGdyb3VwcywgbG93ZXIgMTYgYml0cyBmb3IgcmVtb3RlLCB1cHBlciAxNgorICAgYml0cyBmb3IgbG9jYWwgKi8KKworI2RlZmluZSBPTU5JX1dBTlRfUkVNX0lGTkFNRSAgMFgwMDAwMDAwMQorI2RlZmluZSBPTU5JX1dBTlRfTE9DX0lGTkFNRSAgMFgwMDAxMDAwMAorI2RlZmluZSBPTU5JX1dBTlRfUkVNX0lGU0xPVCAgMFgwMDAwMDAwMgorI2RlZmluZSBPTU5JX1dBTlRfTE9DX0lGU0xPVCAgMFgwMDAyMDAwMAorI2RlZmluZSBPTU5JX1dBTlRfUkVNX0lGSURTICAgMFgwMDAwMDAwNAorI2RlZmluZSBPTU5JX1dBTlRfTE9DX0lGSURTICAgMFgwMDA0MDAwMAorI2RlZmluZSBPTU5JX1dBTlRfUkVNX0RSVklORk8gMFgwMDAwMDAwOAorI2RlZmluZSBPTU5JX1dBTlRfTE9DX0RSVklORk8gMFgwMDA4MDAwMAorI2RlZmluZSBPTU5JX1dBTlRfU1RBVFMgICAgICAgMFgwMDEwMDAxMAorI2RlZmluZSBPTU5JX1dBTlRfUkVNX0NPTkcgICAgMFgwMDAwMDAyMAorI2RlZmluZSBPTU5JX1dBTlRfTE9DX0NPTkcgICAgMFgwMDIwMDAwMAorCit1bnNpZ25lZCBpbnQgZGVzaXJlZF9vdXRwdXRfZ3JvdXBzID0gMDsKKwordHlwZWRlZiBzdHJ1Y3QgbmV0cGVyZl9vdXRwdXRfZWx0IHsKKyAgZW51bSBuZXRwZXJmX291dHB1dF9uYW1lIG91dHB1dF9uYW1lOyAgLyogYmVsdCBhbmQgc3VzcGVuZGVycyAqLworICBpbnQgbWF4X2xpbmVfbGVuOyAvKiBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgb2YgdGhlICJsaW5lcyIgKi8KKyAgaW50IHRvdF9saW5lX2xlbjsgLyogdG90YWwgbGVuZ3RoIG9mIGFsbCBsaW5lcywgaW5jbHVkaW5nIHNwYWNlcyAqLworICBjaGFyICpsaW5lWzRdOworICBjaGFyICpmb3JtYXQ7ICAgICAgICAvKiBmb3JtYXQgdG8gYXBwbHkgdG8gdmFsdWUgKi8KKyAgdm9pZCAqZGlzcGxheV92YWx1ZTsgLyogd2hlcmUgdG8gZmluZCB0aGUgdmFsdWUgKi8KKyAgZW51bSBuZXRwZXJmX291dHB1dF90eXBlIG91dHB1dF90eXBlOyAvKiB3aGF0IHR5cGUgaXMgdGhlIHZhbHVlPyAqLworICBpbnQgIG91dHB1dF9kZWZhdWx0OyAvKiBpcyBpdCBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCBvdXRwdXQgKi8KKyAgdW5zaWduZWQgaW50IG91dHB1dF9ncm91cDsgLyogdXNlZCB0byBhdm9pZCBzb21lIGxvb2t1cHMgKi8KK30gbmV0cGVyZl9vdXRwdXRfZWx0X3Q7CisKK25ldHBlcmZfb3V0cHV0X2VsdF90IG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtORVRQRVJGX09VVFBVVF9NQVhdOworCisjZGVmaW5lIE5FVFBFUkZfTUFYX0JMT0NLUyA0CisKKy8qIGxldCB1cyBzaW1wbHkgdXNlIG9uZSwgdHdvLWRpbWVuc2lvbmFsIGxpc3QsIGFuZCBlaXRoZXIgdXNlIG9yIHNvbWUKKyAgIG9mIHRoZSBhZGRpdGlvbmFsIGRpbWVuc2lvbiBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2Ygb3V0cHV0IHdlIGFyZQorICAgZG9pbmcuICB0aGlzIHNob3VsZCBoZWxwIHNpbXBsaWZ5IG1hdHRlcnMuIHJhaiAyMDExMDEyMCAqLworCitlbnVtIG5ldHBlcmZfb3V0cHV0X25hbWUgb3V0cHV0X2xpc3RbTkVUUEVSRl9NQVhfQkxPQ0tTXVtORVRQRVJGX09VVFBVVF9NQVhdOworCisvKiBzb21lIHRoaW5ncyBmb3Igc2V0dGluZyB0aGUgc291cmNlIElQIGFkZHJlc3Mgb24gb3V0Z29pbmcgVURQCisgICBzZW5kcy4gYm9ycm93cyBsaWJlcmFsbHkgZnJvbQorICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMDYyMjA1L3NldHRpbmctdGhlLXNvdXJjZS1pcC1mb3ItYS11ZHAtc29ja2V0ICovCisKK2ludCB3YW50X3VzZV9wa3RpbmZvID0gMDsKK2ludCB1c2VfcGt0aW5mbyA9IDA7CitpbnQgaGF2ZV9wa3RpbmZvID0gMDsKKyNpZmRlZiBJUF9QS1RJTkZPCitzdHJ1Y3QgaW5fcGt0aW5mbyBpbl9wa3RpbmZvOworI2VuZGlmCisKK2NoYXIgKmRpcmVjdGlvbl90b19zdHIoaW50IGRpcmVjdGlvbikgeworICBpZiAoTkVUUEVSRl9SRUNWX09OTFkoZGlyZWN0aW9uKSkgcmV0dXJuICJSZWNlaXZlIjsKKyAgaWYgKE5FVFBFUkZfWE1JVF9PTkxZKGRpcmVjdGlvbikpIHJldHVybiAiU2VuZCI7CisgIGlmIChORVRQRVJGX0NDKGRpcmVjdGlvbikpIHJldHVybiAiQ29ubmVjdGlvbiI7CisgIGVsc2UgaWYgKGNvbm5lY3Rpb25fdGVzdCkgeworICAgIHJldHVybiAiQ29ubmVjdHxTZW5kfFJlY3YiOworICB9CisgIGVsc2UgcmV0dXJuICJTZW5kfFJlY3YiOworfQorCitzdGF0aWMgdW5zaWduZWQgc2hvcnQKK2dldF9wb3J0X251bWJlcihzdHJ1Y3QgYWRkcmluZm8gKnJlcykKK3sKKyAgc3dpdGNoKHJlcy0+YWlfZmFtaWx5KSB7CisgIGNhc2UgQUZfSU5FVDogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqZm9vID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXJlcy0+YWlfYWRkcjsKKyAgICByZXR1cm4obnRvaHMoZm9vLT5zaW5fcG9ydCkpOworICAgIGJyZWFrOworICB9CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgY2FzZSBBRl9JTkVUNjogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmZvbyA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopcmVzLT5haV9hZGRyOworICAgIHJldHVybihudG9ocyhmb28tPnNpbjZfcG9ydCkpOworICAgIGJyZWFrOworICB9CisjZW5kaWYKKyAgZGVmYXVsdDoKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiVW5leHBlY3RlZCBBZGRyZXNzIEZhbWlseSAldVxuIixyZXMtPmFpX2ZhbWlseSk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorfQorCisvKiBkb2VzIHRoaXMgbmVlZCB0byBiZWNvbWUgY29uZGl0aW9uYWwgb24gdGhlIHByZXNlbmNlIG9mIHRoZSBtYWNyb3MKKyAgIG9yIG1pZ2h0IHdlIGFzcy11LW1lIHRoYXQgd2Ugd2lsbCBub3QgYmUgY29tcGlsZWQgb24gc29tZXRoaW5nIHNvCisgICBvbGQgYXMgdG8gbm90IGhhdmUgd2hhdCB3ZSB1c2U/IHJhaiAyMDA5MDgwMyAqLworc3RhdGljIGludAoraXNfbXVsdGljYXN0X2FkZHIoc3RydWN0IGFkZHJpbmZvICpyZXMpIHsKKyAgc3dpdGNoKHJlcy0+YWlfZmFtaWx5KSB7CisgIGNhc2UgQUZfSU5FVDogeworICAgIC8qIElQdjQgbXVsdGljYXN0IHJ1bnMgZnJvbSAyMjQuMC4wLjAgdG8gMjM5LjI1NS4yNTUuMjU1IG9yCisgICAgICAgMHhFMDAwMDAwMCB0byAweEVGRkZGRkZGLiBUaGFua2Z1bGx5IHRob3VnaCB0aGVyZSBhcmUgbWFjcm9zCisgICAgICAgYXZhaWxhYmxlIHRvIG1ha2UgdGhlIGNoZWNrcyBmb3Igb25lICovCisgICAgc3RydWN0IGluX2FkZHIgYmFyID0gKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilyZXMtPmFpX2FkZHIpLT5zaW5fYWRkcjsKKyAgICAvKiBhbmQgaGVyZSBJIHRob3VnaHQgSU5fTVVMVElDQVNUIHdvdWxkIG9wZXJhdGUgb24gdGhpbmdzIGluCisgICAgICAgbmV0d29yayBieXRlIG9yZGVyPz8/ICByYWogMjAxMDAzMTUgKi8KKyAgICByZXR1cm4gSU5fTVVMVElDQVNUKG50b2hsKGJhci5zX2FkZHIpKTsKKyAgfQorI2lmIGRlZmluZWQoQUZfSU5FVDYpCisgIGNhc2UgQUZfSU5FVDY6IHsKKyAgICBzdHJ1Y3QgaW42X2FkZHIgKmJhciA9ICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopcmVzLT5haV9hZGRyKS0+c2luNl9hZGRyKTsKKyAgICByZXR1cm4gSU42X0lTX0FERFJfTVVMVElDQVNUKGJhcik7CisgIH0KKyNlbmRpZgorICBkZWZhdWx0OgorICAgIGZwcmludGYod2hlcmUsCisJICAgICJVbmV4cGVjdGVkIEFkZHJlc3MgRmFtaWx5IGZvciBNdWx0aWNhc3QgQ2hlY2sgJXVcbiIsCisJICAgIHJlcy0+YWlfZmFtaWx5KTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIHJldHVybiAwOyAgLyogb3Igc2hvdWxkIHdlIGV4aXQ/ICovCisgIH0KK30KKworc3RhdGljIHZvaWQKK3NldF9tdWx0aWNhc3RfdHRsKFNPQ0tFVCBzb2NrKSB7CisgIGludCBvcHRsZW4gPSBzaXplb2YoaW50KTsKKworICAvKiBub3cgc2V0L2dldCB0aGUgVFRMICovCisgIGlmIChtdWx0aWNhc3RfdHRsID49IDApIHsKKyAgICBpZiAoc2V0c29ja29wdChzb2NrLAorCQkgICBJUFBST1RPX0lQLAorI2lmIGRlZmluZWQoSVBfTVVMVElDQVNUX1RUTCkKKwkJICAgSVBfTVVMVElDQVNUX1RUTCwKKyNlbHNlCisJCSAgIElQX1RUTCwKKyNlbmRpZgorCQkgICAoY29uc3QgY2hhciAqKSZtdWx0aWNhc3RfdHRsLAorCQkgICBzaXplb2YobXVsdGljYXN0X3R0bCkpID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgZnByaW50Zih3aGVyZSwKKwkgICAgICAic2V0c29ja29wdChJUF9UVEwpIGZhaWxlZCBlcnJubyAlZFxuIiwKKwkgICAgICBlcnJubyk7CisgICAgfQorICB9CisgIGlmIChnZXRzb2Nrb3B0KHNvY2ssCisJCSBJUFBST1RPX0lQLAorCQkgSVBfVFRMLAorCQkgKGNoYXIgKikmbXVsdGljYXN0X3R0bCwKKwkJIChuZXRwZXJmX3NvY2tsZW5fdCAqKSZvcHRsZW4pIDwgMCkgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICJnZXRzb2Nrb3B0KElQX1RUTCkgZmFpbGVkIGVycm5vICVkXG4iLAorCSAgICBlcnJubyk7CisgICAgbXVsdGljYXN0X3R0bCA9IC0yOworICB9Cit9CisKKy8qIHdlIHByZXN1bWUgd2UgYXJlIG9ubHkgY2FsbGVkIHdpdGggc29tZXRoaW5nIHdoaWNoIGlzIGFjdHVhbGx5IGEKKyAgIG11bHRpY2FzdCBhZGRyZXNzLiByYWogMjAxMDAzMTUgKi8KK3N0YXRpYyB2b2lkCitqb2luX211bHRpY2FzdF9hZGRyKFNPQ0tFVCBzb2NrLCBzdHJ1Y3QgYWRkcmluZm8gKnJlcykgeworICBzd2l0Y2gocmVzLT5haV9mYW1pbHkpIHsKKyAgY2FzZSBBRl9JTkVUOiB7CisgICAgc3RydWN0IGlwX21yZXEgbXJlcTsKKyAgICBzdHJ1Y3QgaW5fYWRkciBiYXIgPSAoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXJlcy0+YWlfYWRkciktPnNpbl9hZGRyOworICAgIGludCBvcHRsZW4gPSBzaXplb2YoaW50KTsKKyAgICBpbnQgb25lICAgID0gMTsKKworICAgIG1yZXEuaW1yX211bHRpYWRkci5zX2FkZHI9YmFyLnNfYWRkcjsKKyAgICBtcmVxLmltcl9pbnRlcmZhY2Uuc19hZGRyPWh0b25sKElOQUREUl9BTlkpOworICAgIGlmIChzZXRzb2Nrb3B0KHNvY2ssCisJCSAgIElQUFJPVE9fSVAsCisJCSAgIElQX0FERF9NRU1CRVJTSElQLAorCQkgICAoY29uc3QgY2hhciAqKSZtcmVxLAorCQkgICBzaXplb2YobXJlcSkpID09IDApIHsKKworICAgICAgLyogbGV0IG90aGVycyBkbyB0aGUgc2FtZSAqLworICAgICAgaWYgKHNldHNvY2tvcHQoc29jaywKKwkJICAgICBTT0xfU09DS0VULAorCQkgICAgIFNPX1JFVVNFQUREUiwKKwkJICAgICAoY29uc3QgY2hhciAqKSZvbmUsCisJCSAgICAgc2l6ZW9mKG9uZSkpID09IFNPQ0tFVF9FUlJPUikgeworCWlmIChkZWJ1ZykgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICAiam9pbl9tdWx0aWNhc3RfYWRkciBTT19SRVVTQUREUiBmYWlsZWQgZXJybm8gJWRcbiIsCisJCSAgZXJybm8pOworCSAgZmZsdXNoKHdoZXJlKTsKKwl9CisgICAgICB9CisKKyAgICAgIC8qIG5vdyBzZXQvZ2V0IHRoZSBUVEwgKi8KKyAgICAgIGlmIChtdWx0aWNhc3RfdHRsID49IDApIHsKKwlpZiAoc2V0c29ja29wdChzb2NrLAorCQkgICAgICAgSVBQUk9UT19JUCwKKwkJICAgICAgIElQX1RUTCwKKwkJICAgICAgIChjb25zdCBjaGFyICopJm11bHRpY2FzdF90dGwsCisJCSAgICAgICBzaXplb2YobXVsdGljYXN0X3R0bCkpID09IFNPQ0tFVF9FUlJPUikgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICAic2V0c29ja29wdChJUF9UVEwpIGZhaWxlZCBlcnJubyAlZFxuIiwKKwkJICBlcnJubyk7CisJfQorICAgICAgfQorICAgICAgaWYgKGdldHNvY2tvcHQoc29jaywKKwkJICAgICBJUFBST1RPX0lQLAorCQkgICAgIElQX1RUTCwKKwkJICAgICAoY2hhciAqKSZtdWx0aWNhc3RfdHRsLAorCQkgICAgIChuZXRwZXJmX3NvY2tsZW5fdCAqKSZvcHRsZW4pID09IFNPQ0tFVF9FUlJPUikgeworCWZwcmludGYod2hlcmUsCisJCSJnZXRzb2Nrb3B0KElQX1RUTCkgZmFpbGVkIGVycm5vICVkXG4iLAorCQllcnJubyk7CisJbXVsdGljYXN0X3R0bCA9IC0yOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGlmIChkZWJ1ZykgeworCWZwcmludGYod2hlcmUsCisJCSJzZXRzb2Nrb3B0KElQX0FERF9NRU1CRVJTSElQKSBmYWlsZWQgZXJybm8gJWRcbiIsCisJCWVycm5vKTsKKwlmZmx1c2god2hlcmUpOworICAgICAgfQorICAgIH0KKyAgICBicmVhazsKKyAgfQorICBjYXNlIEFGX0lORVQ2OiB7CisgICAgZnByaW50Zih3aGVyZSwiSSBkbyBub3Qga25vdyBob3cgdG8gam9pbiBhbiBJUHY2IG11bHRpY2FzdCBncm91cFxuIik7CisgICAgYnJlYWs7CisgIH0KKworICB9CisgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2V4dHJhY3RfaW5ldF9hZGRyZXNzX2FuZF9wb3J0KHN0cnVjdCBhZGRyaW5mbyAqcmVzLCB2b2lkICphZGRyLCBpbnQgbGVuLCBpbnQgKnBvcnQpCit7Cisgc3dpdGNoKHJlcy0+YWlfZmFtaWx5KSB7CisgIGNhc2UgQUZfSU5FVDogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqZm9vID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXJlcy0+YWlfYWRkcjsKKyAgICAqcG9ydCA9IGZvby0+c2luX3BvcnQ7CisgICAgbWVtY3B5KGFkZHIsJihmb28tPnNpbl9hZGRyKSxtaW4obGVuLHNpemVvZihmb28tPnNpbl9hZGRyKSkpOworICAgIGJyZWFrOworICB9CisjaWYgZGVmaW5lZChBRl9JTkVUNikKKyAgY2FzZSBBRl9JTkVUNjogeworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmZvbyA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopcmVzLT5haV9hZGRyOworICAgICpwb3J0ID0gZm9vLT5zaW42X3BvcnQ7CisgICAgbWVtY3B5KGFkZHIsJihmb28tPnNpbjZfYWRkciksbWluKGxlbixzaXplb2YoZm9vLT5zaW42X2FkZHIpKSk7CisgICAgYnJlYWs7CisgIH0KKyNlbmRpZgorICBkZWZhdWx0OgorICAgICpwb3J0ID0gMHhERUFEQkVFRjsKKyAgICBzdHJuY3B5KGFkZHIsIlVOS04gRkFNSUxZIixsZW4pOworICB9Cit9CisKK3ZvaWQKK3BpY2tfbmV4dF9wb3J0X251bWJlcihzdHJ1Y3QgYWRkcmluZm8gKmxvY2FsX3Jlcywgc3RydWN0IGFkZHJpbmZvICpyZW1vdGVfcmVzKSB7CisKKyAgc3RhdGljIGludCBteXBvcnRfaW5pdCA9IDA7CisgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBteXBvcnQgPSAwOworCisgIGlmICgwID09IG15cG9ydF9pbml0KSAgeworICAgIC8qIHBpY2sgYSBuaWNlIHJhbmRvbSBzcG90IGJldHdlZW4gY2xpZW50X3BvcnRfbWluIGFuZAorICAgICAgIGNsaWVudF9wb3J0X21heCBmb3Igb3VyIGluaXRpYWwgcG9ydCBudW1iZXIsIGJ1dCBvbmx5IGZvciBhCisgICAgICAgY29ubmVjdGlvbiBvcmllbnRlZCB0ZXN0LiBvdGhlcndpc2UsIHdlIHdpbGwgd2FudCB0byBzZXQgbXlwb3J0CisgICAgICAgdG8gYSBzcGVjaWZpYyBwb3J0IHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGlmIHRoZXkgaGF2ZSBzbyBwcm92aWRlZAorICAgICAgIGEgc3BlY2lmaWMgcG9ydCA6KSAgcmFqIDIwMDgtMDEtMDggKi8KKyAgICBzcmFuZChnZXRwaWQoKSk7CisgICAgaWYgKGNsaWVudF9wb3J0X21heCAtIGNsaWVudF9wb3J0X21pbikgeworICAgICAgbXlwb3J0ID0gY2xpZW50X3BvcnRfbWluICsKKwkocmFuZCgpICUgKGNsaWVudF9wb3J0X21heCAtIGNsaWVudF9wb3J0X21pbikpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIG15cG9ydCA9ICh1bnNpZ25lZCBzaG9ydCljbGllbnRfcG9ydF9taW47CisgICAgfQorICAgIC8qIHRoZXJlIHdpbGwgYmUgYSArKyBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgdG8gYmluZCwgc28gc3VidHJhY3Qgb25lICovCisgICAgbXlwb3J0LS07CisgICAgbXlwb3J0X2luaXQgPSAxOworICB9CisKKyAgLyogbmV3cG9ydDogKi8KKyAgLyogcGljayBhIG5ldyBwb3J0IG51bWJlciAqLworICBteXBvcnQrKzsKKworICAvKiBjaGVjayB0byBzZWUgaWYgd2UgYXJlIHVzaW5nIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0aGUKKyAgICAgc2VydmVyIGlzIHNpdHRpbmcgX2JlZm9yZV8gd2UgY2hlY2sgYWdhaW5zdCB0aGUgYm91bmRhcmllcyBsZXN0CisgICAgIHRoZSBzZXJ2ZXIgc2l0cyBhdCB0aGUgdXBwZXIgYm91bmRhcnkuIGlmIHRoaXMgaGFwcGVucyB0byBiZSBhCisgICAgIGxvb3BiYWNrIHRlc3QsIHRyeWluZyB0byB1c2UgdGhlIHNhbWUgcG9ydG51bWJlciB3b3VsZCBsZWFkIHRvCisgICAgIHVuc2F0aXNmeWluZyByZXN1bHRzIGFuZCBzaG91bGQgYmUgYXZvaWRlZC4gIGlmIHRoaXMgaXNuJ3QgYQorICAgICBsb29wYmFjayB0ZXN0LCBhdm9pZGluZyB1c2luZyB0aGUgc2FtZSBwb3J0IG51bWJlciBkb2Vzbid0CisgICAgIHNlcmlvdXNseSBhZmZlY3QgYW55dGhpbmcgYW55d2F5ICovCisKKyAgaWYgKG15cG9ydCA9PSBnZXRfcG9ydF9udW1iZXIocmVtb3RlX3JlcykpIG15cG9ydCsrOworCisgIC8qIHdyYXAgdGhlIHBvcnQgbnVtYmVyIHdoZW4gd2UgcmVhY2ggdGhlIHVwcGVyIGJvdW5kLiAgZm9yCisgICAgIHN0dWRlbnRzIG9mIG5ldHdvcmtpbmcgaGlzdG9yeSwgc29tZSBhbmNpZW50IHN0YWNrcyAoMTk4MCdzIGFuZAorICAgICBlYXJseSAxOTkwJ3MgcGVyaGFwcykgbWlzdGFrZW5seSB0cmVhdGVkIHRoZXNlIHBvcnQgbnVtYmVycyBhcworICAgICBzaWduZWQgMTYgYml0IHF1YW50aXRpZXMuICB3ZSBtYWtlIG5vIGVmZm9ydCBoZXJlIHRvIHN1cHBvcnQKKyAgICAgc3VjaCBzdGFja3MuIHJhaiAyMDA4LTAxLTA4ICovCisgIGlmIChteXBvcnQgPj0gY2xpZW50X3BvcnRfbWF4KSB7CisgICAgbXlwb3J0ID0gKHVuc2lnbmVkIHNob3J0KWNsaWVudF9wb3J0X21pbjsKKyAgfQorCisgIC8qIHNldCB1cCB0aGUgZGF0YSBzb2NrZXQgKi8KKyAgc2V0X3BvcnRfbnVtYmVyKGxvY2FsX3JlcywgKHVuc2lnbmVkIHNob3J0KW15cG9ydCk7Cit9CisKKy8qIGF0IHNvbWUgcG9pbnQgdGhpcyBzaG91bGQgYmVjb21lIGEgdGFibGUgbG9va3VwLi4uIHJhaiAyMDA5MDgxMyAqLworY2hhciAqCituZXRwZXJmX291dHB1dF9lbnVtX3RvX3N0cihlbnVtIG5ldHBlcmZfb3V0cHV0X25hbWUgb3V0cHV0X25hbWUpCit7CisgIHN3aXRjaCAob3V0cHV0X25hbWUpIHsKKyAgY2FzZSBPVVRQVVRfTk9ORToKKyAgICByZXR1cm4gIk9VVFBVVF9OT05FIjsKKyAgY2FzZSAgIENPTU1BTkRfTElORToKKyAgICByZXR1cm4gIkNPTU1BTkRfTElORSI7CisgIGNhc2UgVVVJRDoKKyAgICByZXR1cm4gIlVVSUQiOworICBjYXNlIFJFU1VMVF9CUkFORDoKKyAgICByZXR1cm4gIlJFU1VMVF9CUkFORCI7CisgIGNhc2UgICBTT0NLRVRfVFlQRToKKyAgICByZXR1cm4gIlNPQ0tFVF9UWVBFIjsKKyAgY2FzZSAgIERJUkVDVElPTjoKKyAgICByZXR1cm4gIkRJUkVDVElPTiI7CisgIGNhc2UgICBQUk9UT0NPTDoKKyAgICByZXR1cm4gIlBST1RPQ09MIjsKKyAgY2FzZSAgIEVMQVBTRURfVElNRToKKyAgICByZXR1cm4gIkVMQVBTRURfVElNRSI7CisgIGNhc2UgICBTT1VSQ0VfUE9SVDoKKyAgICByZXR1cm4gIlNPVVJDRV9QT1JUIjsKKyAgY2FzZSAgIFNPVVJDRV9BRERSOgorICAgIHJldHVybiAiU09VUkNFX0FERFIiOworICBjYXNlIFNPVVJDRV9GQU1JTFk6CisgICAgcmV0dXJuICJTT1VSQ0VfRkFNSUxZIjsKKyAgY2FzZSAgIERFU1RfUE9SVDoKKyAgICByZXR1cm4gIkRFU1RfUE9SVCI7CisgIGNhc2UgICBERVNUX0FERFI6CisgICAgcmV0dXJuICJERVNUX0FERFIiOworICBjYXNlIERFU1RfRkFNSUxZOgorICAgIHJldHVybiAiREVTVF9GQU1JTFkiOworICBjYXNlIFRIUk9VR0hQVVQ6CisgICAgcmV0dXJuICJUSFJPVUdIUFVUIjsKKyAgY2FzZSBMT0NBTF9TRU5EX1RIUk9VR0hQVVQ6CisgICAgcmV0dXJuICJMT0NBTF9TRU5EX1RIUk9VR0hQVVQiOworICBjYXNlIExPQ0FMX1JFQ1ZfVEhST1VHSFBVVDoKKyAgICByZXR1cm4gIkxPQ0FMX1JFQ1ZfVEhST1VHSFBVVCI7CisgIGNhc2UgUkVNT1RFX1NFTkRfVEhST1VHSFBVVDoKKyAgICByZXR1cm4gIlJFTU9URV9TRU5EX1RIUk9VR0hQVVQiOworICBjYXNlIFJFTU9URV9SRUNWX1RIUk9VR0hQVVQ6CisgICAgcmV0dXJuICJSRU1PVEVfUkVDVl9USFJPVUdIUFVUIjsKKyAgY2FzZSBUSFJPVUdIUFVUX1VOSVRTOgorICAgIHJldHVybiAiVEhST1VHSFBVVF9VTklUUyI7CisgIGNhc2UgQ09ORklERU5DRV9MRVZFTDoKKyAgICByZXR1cm4gIkNPTkZJREVOQ0VfTEVWRUwiOworICBjYXNlIENPTkZJREVOQ0VfSU5URVJWQUw6CisgICAgcmV0dXJuICJDT05GSURFTkNFX0lOVEVSVkFMIjsKKyAgY2FzZSBDT05GSURFTkNFX0lURVJBVElPTjoKKyAgICByZXR1cm4gIkNPTkZJREVOQ0VfSVRFUkFUSU9OIjsKKyAgY2FzZSBUSFJPVUdIUFVUX0NPTkZJRDoKKyAgICByZXR1cm4gIlRIUk9VR0hQVVRfQ09ORklEIjsKKyAgY2FzZSBMT0NBTF9DUFVfQ09ORklEOgorICAgIHJldHVybiAiTE9DQUxfQ1BVX0NPTkZJRCI7CisgIGNhc2UgUkVNT1RFX0NQVV9DT05GSUQ6CisgICAgcmV0dXJuICJSRU1PVEVfQ1BVX0NPTkZJRCI7CisgIGNhc2UgUlRfTEFURU5DWToKKyAgICByZXR1cm4gIlJUX0xBVEVOQ1kiOworICBjYXNlIFRSQU5TQUNUSU9OX1JBVEU6CisgICAgcmV0dXJuICJUUkFOU0FDVElPTl9SQVRFIjsKKyAgY2FzZSBCVVJTVF9TSVpFOgorICAgIHJldHVybiAiQlVSU1RfU0laRSI7CisgIGNhc2UgTE9DQUxfVFJBTlNQT1JUX1JFVFJBTlM6CisgICAgcmV0dXJuICJMT0NBTF9UUkFOU1BPUlRfUkVUUkFOUyI7CisgIGNhc2UgUkVNT1RFX1RSQU5TUE9SVF9SRVRSQU5TOgorICAgIHJldHVybiAiUkVNT1RFX1RSQU5TUE9SVF9SRVRSQU5TIjsKKyAgY2FzZSBUUkFOU1BPUlRfTVNTOgorICAgIHJldHVybiAiVFJBTlNQT1JUX01TUyI7CisgIGNhc2UgUkVRVUVTVF9TSVpFOgorICAgIHJldHVybiAiUkVRVUVTVF9TSVpFIjsKKyAgY2FzZSBSRVNQT05TRV9TSVpFOgorICAgIHJldHVybiAiUkVTUE9OU0VfU0laRSI7CisgIGNhc2UgICBMU1NfU0laRV9SRVE6CisgICAgcmV0dXJuICJMU1NfU0laRV9SRVEiOworICBjYXNlICAgTFNTX1NJWkU6CisgICAgcmV0dXJuICJMU1NfU0laRSI7CisgIGNhc2UgICBMU1NfU0laRV9FTkQ6CisgICAgcmV0dXJuICJMU1NfU0laRV9FTkQiOworICBjYXNlICAgTFNSX1NJWkVfUkVROgorICAgIHJldHVybiAiTFNSX1NJWkVfUkVRIjsKKyAgY2FzZSAgIExTUl9TSVpFOgorICAgIHJldHVybiAiTFNSX1NJWkUiOworICBjYXNlICAgTFNSX1NJWkVfRU5EOgorICAgIHJldHVybiAiTFNSX1NJWkVfRU5EIjsKKyAgY2FzZSAgIExPQ0FMX1NFTkRfU0laRToKKyAgICByZXR1cm4gIkxPQ0FMX1NFTkRfU0laRSI7CisgIGNhc2UgICBMT0NBTF9SRUNWX1NJWkU6CisgICAgcmV0dXJuICJMT0NBTF9SRUNWX1NJWkUiOworICBjYXNlICAgTE9DQUxfU0VORF9DQUxMUzoKKyAgICByZXR1cm4gIkxPQ0FMX1NFTkRfQ0FMTFMiOworICBjYXNlICAgTE9DQUxfUkVDVl9DQUxMUzoKKyAgICByZXR1cm4gIkxPQ0FMX1JFQ1ZfQ0FMTFMiOworICBjYXNlICAgTE9DQUxfQllURVNfUEVSX1JFQ1Y6CisgICAgcmV0dXJuICJMT0NBTF9CWVRFU19QRVJfUkVDViI7CisgIGNhc2UgICBMT0NBTF9CWVRFU19QRVJfU0VORDoKKyAgICByZXR1cm4gIkxPQ0FMX0JZVEVTX1BFUl9TRU5EIjsKKyAgY2FzZSAgIExPQ0FMX0JZVEVTX1NFTlQ6CisgICAgcmV0dXJuICJMT0NBTF9CWVRFU19TRU5UIjsKKyAgY2FzZSAgIExPQ0FMX0JZVEVTX1JFQ1ZEOgorICAgIHJldHVybiAiTE9DQUxfQllURVNfUkVDVkQiOworICBjYXNlICAgTE9DQUxfQllURVNfWEZFUkQ6CisgICAgcmV0dXJuICJMT0NBTF9CWVRFU19YRkVSRCI7CisgIGNhc2UgTE9DQUxfU0VORF9PRkZTRVQ6CisgICAgcmV0dXJuICJMT0NBTF9TRU5EX09GRlNFVCI7CisgIGNhc2UgTE9DQUxfUkVDVl9PRkZTRVQ6CisgICAgcmV0dXJuICJMT0NBTF9SRUNWX09GRlNFVCI7CisgIGNhc2UgTE9DQUxfUkVDVl9BTElHTjoKKyAgICByZXR1cm4gIkxPQ0FMX1JFQ1ZfQUxJR04iOworICBjYXNlIExPQ0FMX1NFTkRfQUxJR046CisgICAgcmV0dXJuICJMT0NBTF9TRU5EX0FMSUdOIjsKKyAgY2FzZSBMT0NBTF9TRU5EX1dJRFRIOgorICAgIHJldHVybiAiTE9DQUxfU0VORF9XSURUSCI7CisgIGNhc2UgTE9DQUxfUkVDVl9XSURUSDoKKyAgICByZXR1cm4gIkxPQ0FMX1JFQ1ZfV0lEVEgiOworICBjYXNlICAgTE9DQUxfU0VORF9ESVJUWV9DT1VOVDoKKyAgICByZXR1cm4gIkxPQ0FMX1NFTkRfRElSVFlfQ09VTlQiOworICBjYXNlICAgTE9DQUxfUkVDVl9ESVJUWV9DT1VOVDoKKyAgICByZXR1cm4gIkxPQ0FMX1JFQ1ZfRElSVFlfQ09VTlQiOworICBjYXNlICAgTE9DQUxfUkVDVl9DTEVBTl9DT1VOVDoKKyAgICByZXR1cm4gIkxPQ0FMX1JFQ1ZfQ0xFQU5fQ09VTlQiOworICBjYXNlICAgTE9DQUxfQ1BVX1VUSUw6CisgICAgcmV0dXJuICJMT0NBTF9DUFVfVVRJTCI7CisgIGNhc2UgICBMT0NBTF9DUFVfUEVSQ0VOVF9VU0VSOgorICAgIHJldHVybiAiTE9DQUxfQ1BVX1BFUkNFTlRfVVNFUiI7CisgIGNhc2UgICBMT0NBTF9DUFVfUEVSQ0VOVF9TWVNURU06CisgICAgcmV0dXJuICJMT0NBTF9DUFVfUEVSQ0VOVF9TWVNURU0iOworICBjYXNlICAgTE9DQUxfQ1BVX1BFUkNFTlRfSU9XQUlUOgorICAgIHJldHVybiAiTE9DQUxfQ1BVX1BFUkNFTlRfSU9XQUlUIjsKKyAgY2FzZSAgIExPQ0FMX0NQVV9QRVJDRU5UX0lSUToKKyAgICByZXR1cm4gIkxPQ0FMX0NQVV9QRVJDRU5UX0lSUSI7CisgIGNhc2UgICBMT0NBTF9DUFVfUEVSQ0VOVF9TV0lOVFI6CisgICAgcmV0dXJuICJMT0NBTF9DUFVfUEVSQ0VOVF9TV0lOVFIiOworICBjYXNlICAgTE9DQUxfQ1BVX0JJTkQ6CisgICAgcmV0dXJuICJMT0NBTF9DUFVfQklORCI7CisgIGNhc2UgICBMT0NBTF9TRDoKKyAgICByZXR1cm4gIkxPQ0FMX1NEIjsKKyAgY2FzZSAgIFNEX1VOSVRTOgorICAgIHJldHVybiAiU0RfVU5JVFMiOworICBjYXNlICAgTE9DQUxfQ1BVX01FVEhPRDoKKyAgICByZXR1cm4gIkxPQ0FMX0NQVV9NRVRIT0QiOworICBjYXNlIExPQ0FMX0NQVV9DT1VOVDoKKyAgICByZXR1cm4gIkxPQ0FMX0NQVV9DT1VOVCI7CisgIGNhc2UgICBMT0NBTF9DUFVfUEVBS19VVElMOgorICAgIHJldHVybiAiTE9DQUxfQ1BVX1BFQUtfVVRJTCI7CisgIGNhc2UgTE9DQUxfQ1BVX1BFQUtfSUQ6CisgICAgcmV0dXJuICJMT0NBTF9DUFVfUEVBS19JRCI7CisgIGNhc2UgICBMT0NBTF9OT0RFTEFZOgorICAgIHJldHVybiAiTE9DQUxfTk9ERUxBWSI7CisgIGNhc2UgICBMT0NBTF9DT1JLOgorICAgIHJldHVybiAiTE9DQUxfQ09SSyI7CisgIGNhc2UgICBSU1NfU0laRV9SRVE6CisgICAgcmV0dXJuICJSU1NfU0laRV9SRVEiOworICBjYXNlICAgUlNTX1NJWkU6CisgICAgcmV0dXJuICJSU1NfU0laRSI7CisgIGNhc2UgICBSU1NfU0laRV9FTkQ6CisgICAgcmV0dXJuICJSU1NfU0laRV9FTkQiOworICBjYXNlICAgUlNSX1NJWkVfUkVROgorICAgIHJldHVybiAiUlNSX1NJWkVfUkVRIjsKKyAgY2FzZSAgIFJTUl9TSVpFOgorICAgIHJldHVybiAiUlNSX1NJWkUiOworICBjYXNlICAgUlNSX1NJWkVfRU5EOgorICAgIHJldHVybiAiUlNSX1NJWkVfRU5EIjsKKyAgY2FzZSAgIFJFTU9URV9TRU5EX1NJWkU6CisgICAgcmV0dXJuICJSRU1PVEVfU0VORF9TSVpFIjsKKyAgY2FzZSAgIFJFTU9URV9SRUNWX1NJWkU6CisgICAgcmV0dXJuICJSRU1PVEVfUkVDVl9TSVpFIjsKKyAgY2FzZSAgIFJFTU9URV9TRU5EX0NBTExTOgorICAgIHJldHVybiAiUkVNT1RFX1NFTkRfQ0FMTFMiOworICBjYXNlICAgUkVNT1RFX1JFQ1ZfQ0FMTFM6CisgICAgcmV0dXJuICJSRU1PVEVfUkVDVl9DQUxMUyI7CisgIGNhc2UgICBSRU1PVEVfQllURVNfUEVSX1JFQ1Y6CisgICAgcmV0dXJuICJSRU1PVEVfQllURVNfUEVSX1JFQ1YiOworICBjYXNlICAgUkVNT1RFX0JZVEVTX1BFUl9TRU5EOgorICAgIHJldHVybiAiUkVNT1RFX0JZVEVTX1BFUl9TRU5EIjsKKyAgY2FzZSAgIFJFTU9URV9CWVRFU19TRU5UOgorICAgIHJldHVybiAiUkVNT1RFX0JZVEVTX1NFTlQiOworICBjYXNlICAgUkVNT1RFX0JZVEVTX1JFQ1ZEOgorICAgIHJldHVybiAiUkVNT1RFX0JZVEVTX1JFQ1ZEIjsKKyAgY2FzZSAgIFJFTU9URV9CWVRFU19YRkVSRDoKKyAgICByZXR1cm4gIlJFTU9URV9CWVRFU19YRkVSRCI7CisgIGNhc2UgUkVNT1RFX1NFTkRfT0ZGU0VUOgorICAgIHJldHVybiAiUkVNT1RFX1NFTkRfT0ZGU0VUIjsKKyAgY2FzZSBSRU1PVEVfUkVDVl9PRkZTRVQ6CisgICAgcmV0dXJuICJSRU1PVEVfUkVDVl9PRkZTRVQiOworICBjYXNlIFJFTU9URV9SRUNWX0FMSUdOOgorICAgIHJldHVybiAiUkVNT1RFX1JFQ1ZfQUxJR04iOworICBjYXNlIFJFTU9URV9TRU5EX0FMSUdOOgorICAgIHJldHVybiAiUkVNT1RFX1NFTkRfQUxJR04iOworICBjYXNlIFJFTU9URV9TRU5EX1dJRFRIOgorICAgIHJldHVybiAiUkVNT1RFX1NFTkRfV0lEVEgiOworICBjYXNlIFJFTU9URV9SRUNWX1dJRFRIOgorICAgIHJldHVybiAiUkVNT1RFX1JFQ1ZfV0lEVEgiOworICBjYXNlICAgUkVNT1RFX1NFTkRfRElSVFlfQ09VTlQ6CisgICAgcmV0dXJuICJSRU1PVEVfU0VORF9ESVJUWV9DT1VOVCI7CisgIGNhc2UgICBSRU1PVEVfUkVDVl9ESVJUWV9DT1VOVDoKKyAgICByZXR1cm4gIlJFTU9URV9SRUNWX0RJUlRZX0NPVU5UIjsKKyAgY2FzZSAgIFJFTU9URV9SRUNWX0NMRUFOX0NPVU5UOgorICAgIHJldHVybiAiUkVNT1RFX1JFQ1ZfQ0xFQU5fQ09VTlQiOworICBjYXNlICAgUkVNT1RFX0NQVV9VVElMOgorICAgIHJldHVybiAiUkVNT1RFX0NQVV9VVElMIjsKKyAgY2FzZSAgIFJFTU9URV9DUFVfUEVSQ0VOVF9VU0VSOgorICAgIHJldHVybiAiUkVNT1RFX0NQVV9QRVJDRU5UX1VTRVIiOworICBjYXNlICAgUkVNT1RFX0NQVV9QRVJDRU5UX1NZU1RFTToKKyAgICByZXR1cm4gIlJFTU9URV9DUFVfUEVSQ0VOVF9TWVNURU0iOworICBjYXNlICAgUkVNT1RFX0NQVV9QRVJDRU5UX0lPV0FJVDoKKyAgICByZXR1cm4gIlJFTU9URV9DUFVfUEVSQ0VOVF9JT1dBSVQiOworICBjYXNlICAgUkVNT1RFX0NQVV9QRVJDRU5UX0lSUToKKyAgICByZXR1cm4gIlJFTU9URV9DUFVfUEVSQ0VOVF9JUlEiOworICBjYXNlICAgUkVNT1RFX0NQVV9QRVJDRU5UX1NXSU5UUjoKKyAgICByZXR1cm4gIlJFTU9URV9DUFVfUEVSQ0VOVF9TV0lOVFIiOworICBjYXNlICAgUkVNT1RFX0NQVV9CSU5EOgorICAgIHJldHVybiAiUkVNT1RFX0NQVV9CSU5EIjsKKyAgY2FzZSAgIFJFTU9URV9TRDoKKyAgICByZXR1cm4gIlJFTU9URV9TRCI7CisgIGNhc2UgICBSRU1PVEVfQ1BVX01FVEhPRDoKKyAgICByZXR1cm4gIlJFTU9URV9DUFVfTUVUSE9EIjsKKyAgY2FzZSBSRU1PVEVfQ1BVX0NPVU5UOgorICAgIHJldHVybiAiUkVNT1RFX0NQVV9DT1VOVCI7CisgIGNhc2UgUkVNT1RFX0NQVV9QRUFLX1VUSUw6CisgICAgcmV0dXJuICJSRU1PVEVfQ1BVX1BFQUtfVVRJTCI7CisgIGNhc2UgUkVNT1RFX0NQVV9QRUFLX0lEOgorICAgIHJldHVybiAiUkVNT1RFX0NQVV9QRUFLX0lEIjsKKyAgY2FzZSAgIFJFTU9URV9OT0RFTEFZOgorICAgIHJldHVybiAiUkVNT1RFX05PREVMQVkiOworICBjYXNlICAgUkVNT1RFX0NPUks6CisgICAgcmV0dXJuICJSRU1PVEVfQ09SSyI7CisgIGNhc2UgTE9DQUxfSU5URVJGQUNFX1NMT1Q6CisgICAgcmV0dXJuICJMT0NBTF9JTlRFUkZBQ0VfU0xPVCI7CisgIGNhc2UgUkVNT1RFX0lOVEVSRkFDRV9TTE9UOgorICAgIHJldHVybiAiUkVNT1RFX0lOVEVSRkFDRV9TTE9UIjsKKyAgY2FzZSBSRU1PVEVfSU5URVJGQUNFX1NVQkRFVklDRToKKyAgICByZXR1cm4gIlJFTU9URV9JTlRFUkZBQ0VfU1VCREVWSUNFIjsKKyAgY2FzZSBSRU1PVEVfSU5URVJGQUNFX1NVQlZFTkRPUjoKKyAgICByZXR1cm4gIlJFTU9URV9JTlRFUkZBQ0VfU1VCVkVORE9SIjsKKyAgY2FzZSBSRU1PVEVfSU5URVJGQUNFX0RFVklDRToKKyAgICByZXR1cm4gIlJFTU9URV9JTlRFUkZBQ0VfREVWSUNFIjsKKyAgY2FzZSBSRU1PVEVfSU5URVJGQUNFX1ZFTkRPUjoKKyAgICByZXR1cm4gIlJFTU9URV9JTlRFUkZBQ0VfVkVORE9SIjsKKyAgY2FzZSBMT0NBTF9JTlRFUkZBQ0VfU1VCREVWSUNFOgorICAgIHJldHVybiAiTE9DQUxfSU5URVJGQUNFX1NVQkRFVklDRSI7CisgIGNhc2UgTE9DQUxfSU5URVJGQUNFX1NVQlZFTkRPUjoKKyAgICByZXR1cm4gIkxPQ0FMX0lOVEVSRkFDRV9TVUJWRU5ET1IiOworICBjYXNlIExPQ0FMX0lOVEVSRkFDRV9ERVZJQ0U6CisgICAgcmV0dXJuICJMT0NBTF9JTlRFUkZBQ0VfREVWSUNFIjsKKyAgY2FzZSBMT0NBTF9JTlRFUkZBQ0VfVkVORE9SOgorICAgIHJldHVybiAiTE9DQUxfSU5URVJGQUNFX1ZFTkRPUiI7CisgIGNhc2UgTE9DQUxfSU5URVJGQUNFX05BTUU6CisgICAgcmV0dXJuICJMT0NBTF9JTlRFUkZBQ0VfTkFNRSI7CisgIGNhc2UgUkVNT1RFX0lOVEVSRkFDRV9OQU1FOgorICAgIHJldHVybiAiUkVNT1RFX0lOVEVSRkFDRV9OQU1FIjsKKyAgY2FzZSBSRU1PVEVfRFJJVkVSX05BTUU6CisgICAgcmV0dXJuICJSRU1PVEVfRFJJVkVSX05BTUUiOworICBjYXNlIFJFTU9URV9EUklWRVJfVkVSU0lPTjoKKyAgICByZXR1cm4gIlJFTU9URV9EUklWRVJfVkVSU0lPTiI7CisgIGNhc2UgUkVNT1RFX0RSSVZFUl9GSVJNV0FSRToKKyAgICByZXR1cm4gIlJFTU9URV9EUklWRVJfRklSTVdBUkUiOworICBjYXNlIFJFTU9URV9EUklWRVJfQlVTOgorICAgIHJldHVybiAiUkVNT1RFX0RSSVZFUl9CVVMiOworICBjYXNlIExPQ0FMX0RSSVZFUl9OQU1FOgorICAgIHJldHVybiAiTE9DQUxfRFJJVkVSX05BTUUiOworICBjYXNlIExPQ0FMX0RSSVZFUl9WRVJTSU9OOgorICAgIHJldHVybiAiTE9DQUxfRFJJVkVSX1ZFUlNJT04iOworICBjYXNlIExPQ0FMX0RSSVZFUl9GSVJNV0FSRToKKyAgICByZXR1cm4gIkxPQ0FMX0RSSVZFUl9GSVJNV0FSRSI7CisgIGNhc2UgTE9DQUxfSU5URVJWQUxfVVNFQ1M6CisgICAgcmV0dXJuICJMT0NBTF9JTlRFUlZBTF9VU0VDUyI7CisgIGNhc2UgTE9DQUxfSU5URVJWQUxfQlVSU1Q6CisgICAgcmV0dXJuICJMT0NBTF9JTlRFUlZBTF9CVVJTVCI7CisgIGNhc2UgUkVNT1RFX0lOVEVSVkFMX1VTRUNTOgorICAgIHJldHVybiAiUkVNT1RFX0lOVEVSVkFMX1VTRUNTIjsKKyAgY2FzZSBSRU1PVEVfSU5URVJWQUxfQlVSU1Q6CisgICAgcmV0dXJuICJSRU1PVEVfSU5URVJWQUxfQlVSU1QiOworICBjYXNlIExPQ0FMX1NFQ1VSSVRZX1RZUEVfSUQ6CisgICAgcmV0dXJuICJMT0NBTF9TRUNVUklUWV9UWVBFX0lEIjsKKyAgY2FzZSBMT0NBTF9TRUNVUklUWV9FTkFCTEVEX05VTToKKyAgICByZXR1cm4gIkxPQ0FMX1NFQ1VSSVRZX0VOQUJMRURfTlVNIjsKKyAgY2FzZSBMT0NBTF9TRUNVUklUWV9UWVBFOgorICAgIHJldHVybiAiTE9DQUxfU0VDVVJJVFlfVFlQRSI7CisgIGNhc2UgTE9DQUxfU0VDVVJJVFlfRU5BQkxFRDoKKyAgICByZXR1cm4gIkxPQ0FMX1NFQ1VSSVRZX0VOQUJMRUQiOworICBjYXNlIExPQ0FMX1NFQ1VSSVRZX1NQRUNJRklDOgorICAgIHJldHVybiAiTE9DQUxfU0VDVVJJVFlfU1BFQ0lGSUMiOworICBjYXNlIFJFTU9URV9TRUNVUklUWV9UWVBFX0lEOgorICAgIHJldHVybiAiUkVNT1RFX1NFQ1VSSVRZX1RZUEVfSUQiOworICBjYXNlIFJFTU9URV9TRUNVUklUWV9FTkFCTEVEX05VTToKKyAgICByZXR1cm4gIlJFTU9URV9TRUNVUklUWV9FTkFCTEVEX05VTSI7CisgIGNhc2UgUkVNT1RFX1NFQ1VSSVRZX1RZUEU6CisgICAgcmV0dXJuICJSRU1PVEVfU0VDVVJJVFlfVFlQRSI7CisgIGNhc2UgUkVNT1RFX1NFQ1VSSVRZX0VOQUJMRUQ6CisgICAgcmV0dXJuICJSRU1PVEVfU0VDVVJJVFlfRU5BQkxFRCI7CisgIGNhc2UgUkVNT1RFX1NFQ1VSSVRZX1NQRUNJRklDOgorICAgIHJldHVybiAiUkVNT1RFX1NFQ1VSSVRZX1NQRUNJRklDIjsKKyAgY2FzZSBMT0NBTF9EUklWRVJfQlVTOgorICAgIHJldHVybiAiTE9DQUxfRFJJVkVSX0JVUyI7CisgIGNhc2UgUkVNT1RFX1NZU05BTUU6CisgICAgcmV0dXJuICJSRU1PVEVfU1lTTkFNRSI7CisgIGNhc2UgUkVNT1RFX01BQ0hJTkU6CisgICAgcmV0dXJuICJSRU1PVEVfTUFDSElORSI7CisgIGNhc2UgUkVNT1RFX1ZFUlNJT046CisgICAgcmV0dXJuICJSRU1PVEVfVkVSU0lPTiI7CisgIGNhc2UgUkVNT1RFX1JFTEVBU0U6CisgICAgcmV0dXJuICJSRU1PVEVfUkVMRUFTRSI7CisgIGNhc2UgTE9DQUxfU1lTTkFNRToKKyAgICByZXR1cm4gIkxPQ0FMX1NZU05BTUUiOworICBjYXNlIExPQ0FMX01BQ0hJTkU6CisgICAgcmV0dXJuICJMT0NBTF9NQUNISU5FIjsKKyAgY2FzZSBMT0NBTF9WRVJTSU9OOgorICAgIHJldHVybiAiTE9DQUxfVkVSU0lPTiI7CisgIGNhc2UgTE9DQUxfUkVMRUFTRToKKyAgICByZXR1cm4gIkxPQ0FMX1JFTEVBU0UiOworICBjYXNlIFJFTU9URV9DUFVfTU9ERUw6CisgICAgcmV0dXJuICJSRU1PVEVfQ1BVX01PREVMIjsKKyAgY2FzZSBSRU1PVEVfQ1BVX0ZSRVFVRU5DWToKKyAgICByZXR1cm4gIlJFTU9URV9DUFVfRlJFUVVFTkNZIjsKKyAgY2FzZSBSRU1PVEVfU1lTVEVNX01PREVMOgorICAgIHJldHVybiAiUkVNT1RFX1NZU1RFTV9NT0RFTCI7CisgIGNhc2UgTE9DQUxfQ1BVX01PREVMOgorICAgIHJldHVybiAiTE9DQUxfQ1BVX01PREVMIjsKKyAgY2FzZSBMT0NBTF9DUFVfRlJFUVVFTkNZOgorICAgIHJldHVybiAiTE9DQUxfQ1BVX0ZSRVFVRU5DWSI7CisgIGNhc2UgTE9DQUxfU1lTVEVNX01PREVMOgorICAgIHJldHVybiAiTE9DQUxfU1lTVEVNX01PREVMIjsKKyAgY2FzZSBNSU5fTEFURU5DWToKKyAgICByZXR1cm4gIk1JTl9MQVRFTkNZIjsKKyAgY2FzZSBNQVhfTEFURU5DWToKKyAgICByZXR1cm4gIk1BWF9MQVRFTkNZIjsKKyAgY2FzZSBQNTBfTEFURU5DWToKKyAgICByZXR1cm4gIlA1MF9MQVRFTkNZIjsKKyAgY2FzZSBQOTBfTEFURU5DWToKKyAgICByZXR1cm4gIlA5MF9MQVRFTkNZIjsKKyAgY2FzZSBQOTlfTEFURU5DWToKKyAgICByZXR1cm4gIlA5OV9MQVRFTkNZIjsKKyAgY2FzZSBNRUFOX0xBVEVOQ1k6CisgICAgcmV0dXJuICJNRUFOX0xBVEVOQ1kiOworICBjYXNlIFNURERFVl9MQVRFTkNZOgorICAgIHJldHVybiAiU1REREVWX0xBVEVOQ1kiOworICBjYXNlIExPQ0FMX1NPQ0tFVF9QUklPOgorICAgIHJldHVybiAiTE9DQUxfU09DS0VUX1BSSU8iOworICBjYXNlIFJFTU9URV9TT0NLRVRfUFJJTzoKKyAgICByZXR1cm4gIlJFTU9URV9TT0NLRVRfUFJJTyI7CisgIGNhc2UgTE9DQUxfU09DS0VUX1RPUzoKKyAgICByZXR1cm4gIkxPQ0FMX1NPQ0tFVF9UT1MiOworICBjYXNlIFJFTU9URV9TT0NLRVRfVE9TOgorICAgIHJldHVybiAiUkVNT1RFX1NPQ0tFVF9UT1MiOworICBjYXNlIExPQ0FMX0NPTkdfQ09OVFJPTDoKKyAgICByZXR1cm4gIkxPQ0FMX0NPTkdfQ09OVFJPTCI7CisgIGNhc2UgUkVNT1RFX0NPTkdfQ09OVFJPTDoKKyAgICByZXR1cm4gIlJFTU9URV9DT05HX0NPTlRST0wiOworICBjYXNlIExPQ0FMX0ZJTExfRklMRToKKyAgICByZXR1cm4gIkxPQ0FMX0ZJTExfRklMRSI7CisgIGNhc2UgUkVNT1RFX0ZJTExfRklMRToKKyAgICByZXR1cm4gIlJFTU9URV9GSUxMX0ZJTEUiOworICBjYXNlIE9VVFBVVF9FTkQ6CisgICAgcmV0dXJuICJPVVRQVVRfRU5EIjsKKyAgZGVmYXVsdDoKKyAgICByZXR1cm4gIiFVTktOT1dOIE9VVFBVVCBTRUxFQ1RPUiEiOworICB9Cit9CisKK3ZvaWQKK3ByaW50X25ldHBlcmZfb3V0cHV0X2VudHJ5KEZJTEUgKndoZXJlLCBlbnVtIG5ldHBlcmZfb3V0cHV0X25hbWUgd2hhdCkKK3sKK30KKwordm9pZCBwcmludF9vbW5pX2luaXRfbGlzdCgpOworCit2b2lkCitkdW1wX25ldHBlcmZfb3V0cHV0X2xpc3QoRklMRSAqd2hlcmUpIHsKKworICBpbnQgaSxqOworCisgIGZvciAoaSA9IDA7IGkgPCBORVRQRVJGX01BWF9CTE9DS1M7IGkrKykgeworICAgIGZwcmludGYod2hlcmUsIk91dHB1dCBCbG9jayAlZFxuIixpICsgMSk7CisgICAgZm9yIChqID0gMDsgaiA8IE5FVFBFUkZfT1VUUFVUX01BWDsgaisrKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLCIlcyAiLG5ldHBlcmZfb3V0cHV0X2VudW1fdG9fc3RyKG91dHB1dF9saXN0W2ldW2pdKSk7CisgICAgfQorICAgIGZwcmludGYod2hlcmUsIlxuIik7CisgIH0KKyAgZmZsdXNoKHdoZXJlKTsKK30KKwordm9pZAorZHVtcF9uZXRwZXJmX291dHB1dF9jaG9pY2VzKEZJTEUgKndoZXJlLCBpbnQgY3N2KSB7CisgIGludCBpOworCisgIHByaW50X29tbmlfaW5pdF9saXN0KCk7CisKKyAgZm9yIChpID0gT1VUUFVUX05PTkU7IGkgPCBORVRQRVJGX09VVFBVVF9NQVg7IGkrKyl7CisgICAgaWYgKE9VVFBVVF9OT05FICE9IGkpIHsKKyAgICAgIGZwcmludGYod2hlcmUsIiVjIiwoY3N2KSA/ICcsJyA6ICdcbicpOworICAgIH0KKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXMiLAorCSAgICBuZXRwZXJmX291dHB1dF9lbnVtX3RvX3N0cihuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ub3V0cHV0X25hbWUpKTsKKyAgfQorICBmcHJpbnRmKHdoZXJlLCJcbiIpOworICBmZmx1c2god2hlcmUpOworfQorCit2b2lkCitkdW1wX25ldHBlcmZfb3V0cHV0X3NvdXJjZShGSUxFICp3aGVyZSkKK3sKKyAgaW50IGk7CisKKyAgLyogYmVsdHMgYW5kIHN1c3BlbmRlcnMgZXZlcnlvbmUuLi4gKi8KKyAgZm9yIChpID0gT1VUUFVUX05PTkU7IGkgPCBORVRQRVJGX09VVFBVVF9NQVg7IGkrKykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICJPdXRwdXQgTmFtZTogJXNcbiIKKwkgICAgIlx0bWF4X2xpbmVfbGVuICVkIHRvdF9saW5lX2xlbiAlZCBkaXNwbGF5X3ZhbHVlICVwXG4iCisJICAgICJcdGxpbmVbMF06IHwlc3xcbiIKKwkgICAgIlx0bGluZVsxXTogfCVzfFxuIgorCSAgICAiXHRsaW5lWzJdOiB8JXN8XG4iCisJICAgICJcdGxpbmVbM106IHwlc3xcbiIKKwkgICAgIlx0Zm9ybWF0OiB8JXN8XG4iLAorCSAgICBuZXRwZXJmX291dHB1dF9lbnVtX3RvX3N0cihuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ub3V0cHV0X25hbWUpLAorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ubWF4X2xpbmVfbGVuLAorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0udG90X2xpbmVfbGVuLAorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0uZGlzcGxheV92YWx1ZSwKKwkgICAgKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5saW5lWzBdID09IE5VTEwpID8gIiIgOgorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ubGluZVswXSwKKwkgICAgKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5saW5lWzFdID09IE5VTEwpID8gIiIgOgorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ubGluZVsxXSwKKwkgICAgKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5saW5lWzJdID09IE5VTEwpID8gIiIgOgorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ubGluZVsyXSwKKwkgICAgKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5saW5lWzNdID09IE5VTEwpID8gIiIgOgorCSAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ubGluZVszXSwKKwkgICAgKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5mb3JtYXQgPT0gTlVMTCkgPyAiIiA6CisJICAgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5mb3JtYXQpOworICB9CisgIGZmbHVzaCh3aGVyZSk7Cit9CisKKyNkZWZpbmUgTVlfTUFYKGEsYikgKChhID4gYikgPyBhIDogYikKKworI2RlZmluZSBORVRQRVJGX0xJTkVfTUFYKHgpIFwKKyAgICBNWV9NQVgoTVlfTUFYKE1ZX01BWChzdHJsZW4obmV0cGVyZl9vdXRwdXRfc291cmNlW3hdLmxpbmVbMF0pLFwKKwkJICAgICAgICAgc3RybGVuKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVt4XS5saW5lWzFdKSksXAorCSAgICAgICAgICBzdHJsZW4obmV0cGVyZl9vdXRwdXRfc291cmNlW3hdLmxpbmVbMl0pKSxcCisJICAgc3RybGVuKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVt4XS5saW5lWzNdKSkKKworI2RlZmluZSBORVRQRVJGX0xJTkVfVE9UKHgpIFwKKyAgICBzdHJsZW4obmV0cGVyZl9vdXRwdXRfc291cmNlW3hdLmxpbmVbMF0pICtcCisgICAgc3RybGVuKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVt4XS5saW5lWzFdKSArXAorICAgIHN0cmxlbihuZXRwZXJmX291dHB1dF9zb3VyY2VbeF0ubGluZVsyXSkgK1wKKyAgICBzdHJsZW4obmV0cGVyZl9vdXRwdXRfc291cmNlW3hdLmxpbmVbM10pICsgNAorCitlbnVtIG5ldHBlcmZfb3V0cHV0X25hbWUKK21hdGNoX3N0cmluZ190b19vdXRwdXRfbW5lbm9taWMoY2hhciAqY2FuZGlkYXRlKSB7CisKKyAgZW51bSBuZXRwZXJmX291dHB1dF9uYW1lIG5hbWU7CisgIGZvciAobmFtZSA9IE9VVFBVVF9OT05FOyBuYW1lIDwgTkVUUEVSRl9PVVRQVVRfTUFYOyBuYW1lKyspIHsKKyAgICBpZighc3RyY2FzZWNtcChjYW5kaWRhdGUsbmV0cGVyZl9vdXRwdXRfZW51bV90b19zdHIobmFtZSkpKQorICAgICAgcmV0dXJuIG5hbWU7CisgIH0KKyAgcmV0dXJuIE5FVFBFUkZfT1VUUFVUX1VOS05PV047Cit9CisKK2VudW0gbmV0cGVyZl9vdXRwdXRfbmFtZQorbWF0Y2hfc3RyaW5nX3RvX291dHB1dChjaGFyICpjYW5kaWRhdGUpCit7CisgIGNoYXIgKmgxLCp0ZW1wOworICBlbnVtIG5ldHBlcmZfb3V0cHV0X25hbWUgbmFtZTsKKyAgaW50IGssbGVuOworCisgIC8qIGF0IHNvbWUgcG9pbnQgd2UgbWF5IG5lZWQvd2FudCB0byB3b3JyeSBhYm91dCBsZWFkaW5nIGFuZAorICAgICB0cmFpbGluZyBzcGFjZXMsIGJ1dCBmb3Igbm93IHdlIHdpbGwgbGVhdmUgdGhhdCBvbnVzIG9uIHRoZQorICAgICB1c2VyLiAqLworCisgIGZvciAobmFtZSA9IE9VVFBVVF9OT05FOyBuYW1lIDwgTkVUUEVSRl9PVVRQVVRfTUFYOyBuYW1lKyspIHsKKyAgICAvKiB0cnkgZm9yIGEgbWF0Y2ggYmFzZWQgb24gdGhlIG5tZW1vbmljL2VudW0gKi8KKyAgICBpZiAoIXN0cmNhc2VjbXAoY2FuZGlkYXRlLG5ldHBlcmZfb3V0cHV0X2VudW1fdG9fc3RyKG5hbWUpKSkKKyAgICAgIHJldHVybiBuYW1lOworCisgICAgLyogdHJ5IGZvciBhIG1hdGNoIG9uIHRoZSBhY3R1YWwgaGVhZGVyIHRleHQgKi8KKyAgICB0ZW1wID0gbWFsbG9jKE5FVFBFUkZfTElORV9UT1QobmFtZSkpOworICAgIGgxID0gdGVtcDsKKyAgICBpZiAoaDEgIT0gTlVMTCkgeworICAgICAgZm9yIChrID0gMDsgKChrIDwgNCkgJiYKKwkJICAgKE5VTEwgIT0gbmV0cGVyZl9vdXRwdXRfc291cmNlW25hbWVdLmxpbmVba10pICYmCisJCSAgIChzdHJjbXAoIiIsbmV0cGVyZl9vdXRwdXRfc291cmNlW25hbWVdLmxpbmVba10pKSk7IGsrKykgeworCWxlbiA9IHNwcmludGYoaDEsCisJCSAgICAgICIlcyIsCisJCSAgICAgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtuYW1lXS5saW5lW2tdKTsKKwkqKGgxICsgbGVuKSA9ICcgJzsKKwkvKiBub3cgbW92ZSB0byB0aGUgbmV4dCBzdGFydGluZyBjb2x1bW4uIGZvciBjc3Ygd2UgYXJlbid0IHdvcnJpZWQKKwkgICBhYm91dCBhbGlnbm1lbnQgYmV0d2VlbiB0aGUgaGVhZGVyIGFuZCB0aGUgdmFsdWUgbGluZXMgKi8KKwloMSArPSBsZW4gKyAxOworICAgICAgfQorICAgICAgLyogdGhpcyB0aW1lIHdlIHdhbnQgbnVsbCB0ZXJtaW5hdGlvbiBwbGVhc2UgKi8KKyAgICAgICooaDEgLSAxKSA9IDA7CisgICAgICBpZiAoIXN0cmNhc2VjbXAoY2FuZGlkYXRlLHRlbXApKSB7CisJZnJlZSh0ZW1wKTsKKwlyZXR1cm4gbmFtZTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKwlmcmVlKHRlbXApOworICAgIH0KKyAgfQorICAvKiBpZiB3ZSBnZXQgaGVyZSBpdCBtZWFucyB0aGVyZSB3YXMgbm8gbWF0Y2ggKi8KKyAgcmV0dXJuIE9VVFBVVF9OT05FOworfQorCisKK3ZvaWQKK3NldF9vdXRwdXRfbGlzdF9hbGwoKSB7CisKKyAgaW50IGksIGo7ICAvKiBsaW5lLCBjb2x1bW4gKi8KKyAgZW51bSBuZXRwZXJmX291dHB1dF9uYW1lIGs7CisKKyAgLyogTGluZSBPbmUgU09DS0VUX1RZUEUgdG8gUkVTUE9OU0VfU0laRSAqLworICBpID0gMDsKKyAgaiA9IDA7CisgIGZvciAoayA9IFNPQ0tFVF9UWVBFOyBrIDw9IFJFU1BPTlNFX1NJWkU7IGsrKykgeworICAgIG91dHB1dF9saXN0W2ldW2orK10gPSBrOworICAgIGRlc2lyZWRfb3V0cHV0X2dyb3VwcyB8PSBuZXRwZXJmX291dHB1dF9zb3VyY2Vba10ub3V0cHV0X2dyb3VwOworICB9CisKKyAgLyogTGluZSBUd28gTE9DQUxfQ1BVX1VUSUwgdG8gVFJBTlNQT1JUX01TUyAqLworICBpID0gMTsKKyAgaiA9IDA7CisgIGZvciAoayA9IExPQ0FMX0NQVV9VVElMOyBrIDw9IFRSQU5TUE9SVF9NU1M7IGsrKykgeworICAgIG91dHB1dF9saXN0W2ldW2orK10gPSBrOworICAgIGRlc2lyZWRfb3V0cHV0X2dyb3VwcyB8PSBuZXRwZXJmX291dHB1dF9zb3VyY2Vba10ub3V0cHV0X2dyb3VwOworICB9CisKKyAgLyogTGluZSBUaHJlZSBMT0NBTF9TRU5EX1RIUk9VR0hQVVQgdGhyb3VnaHQgUkVNT1RFX0NPUksgKi8KKyAgaSA9IDI7CisgIGogPSAwOworICBmb3IgKGsgPSBMT0NBTF9TRU5EX1RIUk9VR0hQVVQ7IGsgPD0gUkVNT1RFX0NPUks7IGsrKykgeworICAgIG91dHB1dF9saXN0W2ldW2orK10gPSBrOworICAgIGRlc2lyZWRfb3V0cHV0X2dyb3VwcyB8PSBuZXRwZXJmX291dHB1dF9zb3VyY2Vba10ub3V0cHV0X2dyb3VwOworICB9CisKKyAgLyogTGluZSBGb3VyIExPQ0FMX1NZU05BTUUgdGhyb3VnaCBDT01NQU5EX0xJTkUgKi8KKyAgaSA9IDM7CisgIGogPSAwOworICBmb3IgKGsgPSBMT0NBTF9TWVNOQU1FOyBrIDw9IENPTU1BTkRfTElORTsgaysrKSB7CisgICAgb3V0cHV0X2xpc3RbaV1baisrXSA9IGs7CisgICAgZGVzaXJlZF9vdXRwdXRfZ3JvdXBzIHw9IG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtrXS5vdXRwdXRfZ3JvdXA7CisgIH0KKworfQorCit2b2lkCitwYXJzZV9vdXRwdXRfc2VsZWN0aW9uX2ZpbGUoY2hhciAqc2VsZWN0aW9uX2ZpbGUpIHsKKyAgRklMRSAqc2VsZWN0aW9uczsKKyAgY2hhciBuYW1lWzgxXTsgLyogYmVzdCBiZSBtb3JlIHRoYW4gZW5vdWdoICovCisgIGludCBuYW1lcG9zOworICBpbnQgYzsKKyAgaW50IGo7CisgIGludCBsaW5lLGNvbHVtbjsKKworICBzZWxlY3Rpb25zID0gZm9wZW4oc2VsZWN0aW9uX2ZpbGUsInIiKTsKKyAgaWYgKCFzZWxlY3Rpb25zKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIkNvdWxkIG5vdCBvcGVuIG91dHB1dCBzZWxlY3Rpb24gZmlsZSAnJXMnIGVycm5vICVkXG4iLAorCSAgICBzZWxlY3Rpb25fZmlsZSwKKwkgICAgZXJybm8pOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgtMSk7CisgIH0KKworICBsaW5lID0gMDsKKyAgY29sdW1uID0gMTsKKyAgbmFtZXBvcyA9IDA7CisgIG5hbWVbMF0gPSAwOworICBuYW1lWzgwXSA9IDA7CisgIGogPSAwOworICB3aGlsZSAoKChjID0gZmdldGMoc2VsZWN0aW9ucykpICE9IEVPRikgJiYgKGxpbmUgPCA0KSkgeworICAgIGlmIChuYW1lcG9zID09IDgwKSB7CisgICAgICAvKiB0b28gbG9uZyAqLworCisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJPdXRwdXQgc2VsZWN0aW9uIHN0YXJ0aW5nIGNvbHVtbiAlZCBvbiBsaW5lICVkIGlzIHRvbyBsb25nXG4iLAorCSAgICAgIGxpbmUgKyAxLAorCSAgICAgIGNvbHVtbik7CisgICAgICBmZmx1c2god2hlcmUpOworICAgICAgZXhpdCgtMSk7CisgICAgfQorICAgIGlmIChjID09ICcsJykgeworICAgICAgLyogdGltZSB0byBjaGVjayBmb3IgYSBtYXRjaCwgYnV0IG9ubHkgaWYgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlCisJIGN1cnJlbnQgcm93IG9mIHRoZSBhcnJheSAgKi8KKyAgICAgIGlmIChqID09IE5FVFBFUkZfT1VUUFVUX01BWCkgeworCWZwcmludGYod2hlcmUsIlRvbyBtYW55IG91dHB1dCBzZWxlY3RvcnMgb24gbGluZSAlZFxuIixsaW5lKTsKKwlmZmx1c2god2hlcmUpOworCWV4aXQoLTEpOworICAgICAgfQorICAgICAgbmFtZVtuYW1lcG9zXSA9IDA7CisgICAgICBvdXRwdXRfbGlzdFtsaW5lXVtqKytdID0gbWF0Y2hfc3RyaW5nX3RvX291dHB1dChuYW1lKTsKKyAgICAgIG5hbWVwb3MgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChjID09ICdcbicpIHsKKyAgICAgIC8qIG1vdmUgdG8gdGhlIG5leHQgbGluZSBhZnRlciBjaGVja2luZyBmb3IgYSBtYXRjaCAqLworICAgICAgbmFtZVtuYW1lcG9zXSA9IDA7CisgICAgICBvdXRwdXRfbGlzdFtsaW5lKytdW2orK10gPSBtYXRjaF9zdHJpbmdfdG9fb3V0cHV0KG5hbWUpOworICAgICAgbmFtZXBvcyA9IDA7CisgICAgICBqID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNwcmludChjKSkgeworICAgICAgbmFtZVtuYW1lcG9zKytdID0gKGNoYXIpYzsKKyAgICB9CisgICAgY29sdW1uKys7CisgIH0KKworICAvKiBvaywgZG8gd2UgbmVlZC93YW50IHRvIGRvIGFueXRoaW5nIGhlcmU/IGF0IHByZXNlbnQgd2Ugd2lsbAorICAgICBzaWxlbnRseSBpZ25vcmUgdGhlIHJlc3Qgb2YgdGhlIGZpbGUgaWYgd2UgZXhpdCB0aGUgbG9vcCBvbiBsaW5lCisgICAgIGNvdW50ICovCisgIGlmICgoYyA9PSBFT0YpICYmIChuYW1lcG9zID4gMCkpIHsKKyAgICBuYW1lW25hbWVwb3NdID0gMDsKKyAgICBvdXRwdXRfbGlzdFtsaW5lXVtqXSA9ICAgbWF0Y2hfc3RyaW5nX3RvX291dHB1dChuYW1lKTsKKyAgfQorCit9CisKK3ZvaWQKK3BhcnNlX291dHB1dF9zZWxlY3Rpb25fbGluZShpbnQgbGluZSwgY2hhciAqbGlzdCkgeworCisgIGNoYXIgKnRva2VuOworICBpbnQgajsKKyAgZW51bSBuZXRwZXJmX291dHB1dF9uYW1lIG5hbWU7CisKKyAgLyogYmVsdCBhbmQgc3VzcGVuZGVycyAqLworICBpZiAobGluZSA8IDApIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAicGFyc2Vfb3V0cHV0X3NlbGVjdGlvbl9saW5lIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIGxpbmUgbnVtYmVyICVkXG4iLGxpbmUpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgtMSk7CisgIH0KKworICAvKiBzaWxlbnRseSBpZ25vcmUgZXh0cmEgbGluZXMgYW5kIG9ubHkgd2FybiBpZiBkZWJ1ZyBpcyBzZXQgKi8KKyAgaWYgKGxpbmUgPj0gTkVUUEVSRl9NQVhfQkxPQ0tTKSB7CisgICAgaWYgKGRlYnVnKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICJUaGVyZSBjYW4gYmUgbm8gbW9yZSB0aGFuICVkIG91dHB1dCBzZWxlY3Rpb24gbGluZXMuIgorCSAgICAgICIgSWdub3Jpbmcgb3V0cHV0IHNlbGVjdGlvbiBsaW5lICVkIHwlc3xcbiIsCisJICAgICAgTkVUUEVSRl9NQVhfQkxPQ0tTLAorCSAgICAgIGxpbmUgKyAxLAorCSAgICAgIGxpc3QpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgICAgcmV0dXJuOworICB9CisKKworICBqPTA7CisgIHRva2VuID0gc3RydG9rKGxpc3QsIiAsIik7CisgIHdoaWxlICgodG9rZW4pICYmIChqIDwgTkVUUEVSRl9PVVRQVVRfTUFYKSkgeworCisgICAgbmFtZSA9IG1hdGNoX3N0cmluZ190b19vdXRwdXRfbW5lbm9taWModG9rZW4pOworCisgICAgaWYgKChuYW1lID09IE5FVFBFUkZfT1VUUFVUX1VOS05PV04pICYmIChkZWJ1ZykpIHsKKyAgICAgIGZwcmludGYod2hlcmUsIklnbm9yaW5nIHVua25vd24gb3V0cHV0IHNlbGVjdG9yICVkIHwlc3wgb24gbGluZSAlZFxuIiwKKwkgICAgICBqICsgMSwKKwkgICAgICB0b2tlbiwKKwkgICAgICBsaW5lICsxKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgb3V0cHV0X2xpc3RbbGluZV1bal0gPSBuYW1lOworICAgICAgZGVzaXJlZF9vdXRwdXRfZ3JvdXBzIHw9IG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtuYW1lXS5vdXRwdXRfZ3JvdXA7CisgICAgICBqKys7CisgICAgfQorCisgICAgdG9rZW4gPSBzdHJ0b2soTlVMTCwiICwiKTsKKyAgfQorICBpZiAoKHRva2VuKSAmJiAoZGVidWcpKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIlRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJWQgb3V0cHV0IHNlbGVjdG9ycyBwZXIgbGluZS4gIgorCSAgICAiSWdub3JpbmcgcmVtYWluaW5nIHNlbGVjdG9ycyBvbiBsaW5lICVkXG4iLAorCSAgICBORVRQRVJGX09VVFBVVF9NQVgsbGluZSArMSk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorfQorCit2b2lkCitwYXJzZV9vdXRwdXRfc2VsZWN0aW9uX2RpcmVjdChjaGFyICpvdXRwdXRfc2VsZWN0aW9uKSB7CisKKyAgY2hhciAqc291cmNlLCpsaW5lLCpyZW1haW5kZXIsKnRlbXA7CisgIGNoYXIgKmYxLCAqZjIsICpmMzsKKyAgaW50IGksbGVuLGRvbmU7CisKKyAgbGVuID0gc3RybGVuKG91dHB1dF9zZWxlY3Rpb24pOworCisgIHNvdXJjZSA9IHN0cmR1cChvdXRwdXRfc2VsZWN0aW9uKTsKKyAgbGluZSA9IChjaGFyICopIG1hbGxvYyhsZW4rMSk7CisgIHJlbWFpbmRlciA9IChjaGFyICopIG1hbGxvYyhsZW4rMSk7CisKKyAgaWYgKChOVUxMID09IHNvdXJjZSkgfHwKKyAgICAgIChOVUxMID09IGxpbmUpIHx8CisgICAgICAoTlVMTCA9PSByZW1haW5kZXIpKSB7CisgICAgZnByaW50Zih3aGVyZSwiVW5hYmxlIHRvIG1hbGxvYyBtZW1vcnkgZm9yIG91dHB1dCBzZWxlY3Rpb24gcGFyc2luZ1xuIik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorCisgIGYxID0gc291cmNlOworICBmMiA9IGxpbmU7CisgIGYzID0gcmVtYWluZGVyOworCisgIGkgPSAwOworICBkb25lID0gMDsKKyAgZG8geworICAgIGJyZWFrX2FyZ3NfZXhwbGljaXRfc2VwKHNvdXJjZSwnOycsbGluZSxyZW1haW5kZXIpOworICAgIGlmIChsaW5lWzBdKSB7CisgICAgICBwYXJzZV9vdXRwdXRfc2VsZWN0aW9uX2xpbmUoaSxsaW5lKTsKKyAgICB9CisgICAgaWYgKHJlbWFpbmRlclswXSkgeworICAgICAgdGVtcCA9IHNvdXJjZTsKKyAgICAgIHNvdXJjZSA9IHJlbWFpbmRlcjsKKyAgICAgIHJlbWFpbmRlciA9IHRlbXA7CisgICAgICBpKys7CisgICAgICAvKgorICAgICAgaWYgKGkgPT0gTkVUUEVSRl9NQVhfQkxPQ0tTKSB7CisJZnByaW50Zih3aGVyZSwKKwkJIlRvbyBtYW55IG91dHB1dCBibG9ja3MgcmVxdWVzdGVkLCBtYXhpbXVtIGlzICVkXG4iLAorCQlORVRQRVJGX01BWF9CTE9DS1MpOworCWZmbHVzaCh3aGVyZSk7CisJZXhpdCgtMSk7CisgICAgICB9CisgICAgICAqLworICAgICAgY29udGludWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgZG9uZSA9IDE7CisgICAgfQorICB9IHdoaWxlICghZG9uZSk7CisKKyAgZnJlZShmMSk7CisgIGZyZWUoZjIpOworICBmcmVlKGYzKTsKKworfQorCisvKiBidWlsZGluZyBibG9ja3MgZm9yIG91dHB1dCBzZWxlY3Rpb24gKi8KKyNkZWZpbmUgTkVUUEVSRl9UUFVUICJFTEFQU0VEX1RJTUUsVEhST1VHSFBVVCxUSFJPVUdIUFVUX1VOSVRTIgorI2RlZmluZSBORVRQRVJGX09VVFBVVF9TVFJFQU0gIkxTU19TSVpFX0VORCxSU1JfU0laRV9FTkQsTE9DQUxfU0VORF9TSVpFIgorI2RlZmluZSBORVRQRVJGX09VVFBVVF9NQUVSVFMgIlJTU19TSVpFX0VORCxMU1JfU0laRV9FTkQsUkVNT1RFX1NFTkRfU0laRSIKKyNkZWZpbmUgTkVUUEVSRl9DUFUgIkxPQ0FMX0NQVV9VVElMLExPQ0FMX0NQVV9QRVJDRU5UX1VTRVIsTE9DQUxfQ1BVX1BFUkNFTlRfU1lTVEVNLExPQ0FMX0NQVV9QRVJDRU5UX0lPV0FJVCxMT0NBTF9DUFVfUEVSQ0VOVF9JUlEsTE9DQUxfQ1BVX1BFUkNFTlRfU1dJTlRSLExPQ0FMX0NQVV9NRVRIT0QsUkVNT1RFX0NQVV9VVElMLFJFTU9URV9DUFVfUEVSQ0VOVF9VU0VSLFJFTU9URV9DUFVfUEVSQ0VOVF9TWVNURU0sUkVNT1RFX0NQVV9QRVJDRU5UX0lPV0FJVCxSRU1PVEVfQ1BVX1BFUkNFTlRfSVJRLFJFTU9URV9DUFVfUEVSQ0VOVF9TV0lOVFIsUkVNT1RFX0NQVV9NRVRIT0QsTE9DQUxfU0QsUkVNT1RFX1NELFNEX1VOSVRTIgorI2RlZmluZSBORVRQRVJGX1JSICJMU1NfU0laRV9FTkQsTFNSX1NJWkVfRU5ELFJTUl9TSVpFX0VORCxSU1NfU0laRV9FTkQsUkVRVUVTVF9TSVpFLFJFU1BPTlNFX1NJWkUiCisKK3ZvaWQKK3NldF9vdXRwdXRfbGlzdF9ieV90ZXN0KCkgeworCisgIGNoYXIgKnN0cmVhbV9ub19jcHUgPSBORVRQRVJGX09VVFBVVF9TVFJFQU0gIiwiIE5FVFBFUkZfVFBVVDsKKyAgY2hhciAqc3RyZWFtX2NwdSA9IE5FVFBFUkZfT1VUUFVUX1NUUkVBTSAiLCIgTkVUUEVSRl9UUFVUICIsIiBORVRQRVJGX0NQVTsKKyAgY2hhciAqbWFlcnRzX25vX2NwdSA9IE5FVFBFUkZfT1VUUFVUX01BRVJUUyAiLCIgTkVUUEVSRl9UUFVUOworICBjaGFyICptYWVydHNfY3B1ID0gIE5FVFBFUkZfT1VUUFVUX01BRVJUUyAiLCIgTkVUUEVSRl9UUFVUICIsIiBORVRQRVJGX0NQVTsKKyAgY2hhciAqcnJfbm9fY3B1ID0gTkVUUEVSRl9SUiAiLCIgTkVUUEVSRl9UUFVUOworICBjaGFyICpycl9jcHUgPSBORVRQRVJGX1JSICIsIiBORVRQRVJGX1RQVVQgIiwiIE5FVFBFUkZfQ1BVOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsIiVzIHNldHRpbmcgdGhlIG91dHB1dCBsaXN0IGJ5IHRlc3RcbiIsCisJICAgIF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIGlmIChORVRQRVJGX1hNSVRfT05MWShkaXJlY3Rpb24pKSB7CisgICAgaWYgKCEobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpKQorICAgICAgcGFyc2Vfb3V0cHV0X3NlbGVjdGlvbl9kaXJlY3Qoc3RyZWFtX25vX2NwdSk7CisgICAgZWxzZQorICAgICAgcGFyc2Vfb3V0cHV0X3NlbGVjdGlvbl9kaXJlY3Qoc3RyZWFtX2NwdSk7CisgIH0KKyAgZWxzZSBpZiAoTkVUUEVSRl9SRUNWX09OTFkoZGlyZWN0aW9uKSkgeworICAgIGlmICghKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSkKKyAgICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZGlyZWN0KG1hZXJ0c19ub19jcHUpOworICAgIGVsc2UKKyAgICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZGlyZWN0KG1hZXJ0c19jcHUpOworICB9CisgIGVsc2UgaWYgKE5FVFBFUkZfQ0MoZGlyZWN0aW9uKSkgeworICAgIGlmICghKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSkKKyAgICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZGlyZWN0KHJyX25vX2NwdSk7CisgICAgZWxzZQorICAgICAgcGFyc2Vfb3V0cHV0X3NlbGVjdGlvbl9kaXJlY3QocnJfY3B1KTsKKyAgfQorICBlbHNlIGlmIChORVRQRVJGX0lTX1JSKGRpcmVjdGlvbikpIHsKKyAgICBpZiAoIShsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkpCisgICAgICBwYXJzZV9vdXRwdXRfc2VsZWN0aW9uX2RpcmVjdChycl9ub19jcHUpOworICAgIGVsc2UKKyAgICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZGlyZWN0KHJyX2NwdSk7CisgIH0KKyAgZWxzZSB7CisgICAgLyogbm8gaWRlYSAqLworICAgIGlmIChkZWJ1ZykgeworICAgICAgZnByaW50Zih3aGVyZSwiQ2Fubm90IGRldGVybWluZSBkZWZhdWx0IHRlc3Qgb3V0cHV0LCB1c2luZyBtaW5zXG4iKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZGlyZWN0KE5FVFBFUkZfVFBVVCAiLCIgTkVUUEVSRl9DUFUpOworICB9Cit9CisKK3ZvaWQKK3BhcnNlX291dHB1dF9zZWxlY3Rpb24oY2hhciAqb3V0cHV0X3NlbGVjdGlvbikgeworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsIiVzIGlzIHBhcnNpbmcgdGhlIG91dHB1dCBzZWxlY3Rpb24gJyVzJ1xuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBvdXRwdXRfc2VsZWN0aW9uKTsKKyAgICBmZmx1c2god2hlcmUpOworICB9CisKKyAgLyogaXMgaXQgdGhlIG1hZ2ljIGtleXdvcmQ/ICovCisgIGlmIChzdHJjYXNlY21wKG91dHB1dF9zZWxlY3Rpb24sImFsbCIpID09IDApIHsKKyAgICBzZXRfb3V0cHV0X2xpc3RfYWxsKCk7CisgIH0KKyAgLyogZG8gbm90IGZvcmdldCB0aGUgY2FzZSB3aGVuIHRoZSBvdXRwdXRfc2VsZWN0aW9uIGlzIGEgc2luZ2xlCisgICAgIG1uZW1vbmljIHdpdGhvdXQgYW55IHNlcGFyYXRvcnMuLi4gKi8KKyAgZWxzZSBpZiAoc3RyY2hyKG91dHB1dF9zZWxlY3Rpb24sJywnKSB8fAorCSAgIHN0cmNocihvdXRwdXRfc2VsZWN0aW9uLCc7JykgfHwKKwkgICAobWF0Y2hfc3RyaW5nX3RvX291dHB1dF9tbmVub21pYyhvdXRwdXRfc2VsZWN0aW9uKSAhPQorCSAgICBORVRQRVJGX09VVFBVVF9VTktOT1dOKSkgeworICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZGlyZWN0KG91dHB1dF9zZWxlY3Rpb24pOworICB9CisgIGVsc2UgeworICAgIHBhcnNlX291dHB1dF9zZWxlY3Rpb25fZmlsZShvdXRwdXRfc2VsZWN0aW9uKTsKKyAgfQorICBpZiAoZGVidWcgPiAyKSB7CisgICAgZHVtcF9uZXRwZXJmX291dHB1dF9saXN0KHN0ZGVycik7CisgIH0KKyAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorc2V0X291dHB1dF9lbHQoZW51bSBuZXRwZXJmX291dHB1dF9uYW1lIG5hbWUsCisJICAgICAgIGNoYXIgKmxpbmUwLCBjaGFyICpsaW5lMSwgY2hhciAqbGluZTIsIGNoYXIgKmxpbmUzLAorCSAgICAgICBjaGFyICpmb3JtYXQsCisJICAgICAgIHZvaWQgKnZhbHVlLAorCSAgICAgICB1bnNpZ25lZCBpbnQgb3V0X2RlZmF1bHQsCisJICAgICAgIHVuc2lnbmVkIGludCBncm91cCwKKwkgICAgICAgZW51bSBuZXRwZXJmX291dHB1dF90eXBlIHR5cGUpIHsKKworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ub3V0cHV0X25hbWUgPSBuYW1lOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ubGluZVswXSA9IGxpbmUwOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ubGluZVsxXSA9IGxpbmUxOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ubGluZVsyXSA9IGxpbmUyOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ubGluZVszXSA9IGxpbmUzOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0uZm9ybWF0ID0gZm9ybWF0OworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0uZGlzcGxheV92YWx1ZSA9IHZhbHVlOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ub3V0cHV0X2RlZmF1bHQgPSBvdXRfZGVmYXVsdDsKKyAgbmV0cGVyZl9vdXRwdXRfc291cmNlW25hbWVdLm91dHB1dF9ncm91cCA9IGdyb3VwOworICBuZXRwZXJmX291dHB1dF9zb3VyY2VbbmFtZV0ubWF4X2xpbmVfbGVuID0gTkVUUEVSRl9MSU5FX01BWChuYW1lKTsKKyAgbmV0cGVyZl9vdXRwdXRfc291cmNlW25hbWVdLnRvdF9saW5lX2xlbiA9IE5FVFBFUkZfTElORV9UT1QobmFtZSk7CisgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtuYW1lXS5vdXRwdXRfdHlwZSA9IHR5cGU7Cit9CisKK3ZvaWQKK3ByaW50X29tbmlfaW5pdF9saXN0KCkgeworCisgIGludCBpOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsIiVzIGNhbGxlZFxuIiwKKwkgICAgX19GVU5DVElPTl9fKTsKKyAgfQorCisgIC8qIGJlbHRzIGFuZCBzdXNwZW5kZXJzIGV2ZXJ5b25lLi4uICovCisgIGZvciAoaSA9IE5FVFBFUkZfT1VUUFVUX1VOS05PV047IGkgPCBORVRQRVJGX09VVFBVVF9NQVg7IGkrKykgeworICAgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5vdXRwdXRfbmFtZSA9IGk7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLm1heF9saW5lX2xlbiA9IDA7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLnRvdF9saW5lX2xlbiA9IDA7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLmxpbmVbMF0gPSAiIjsKKyAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0ubGluZVsxXSA9ICIiOworICAgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5saW5lWzJdID0gIiI7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLmxpbmVbM10gPSAiIjsKKyAgICBuZXRwZXJmX291dHB1dF9zb3VyY2VbaV0uZm9ybWF0ID0gIiI7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLmRpc3BsYXlfdmFsdWUgPSBOVUxMOworICAgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtpXS5vdXRwdXRfZGVmYXVsdCA9IDE7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLm91dHB1dF9ncm91cCA9IDA7CisgICAgbmV0cGVyZl9vdXRwdXRfc291cmNlW2ldLm91dHB1dF90eXBlID0gTkVUUEVSRl9UWVBFX1VOS05PV047CisgIH0KKworICBzZXRfb3V0cHV0X2VsdChPVVRQVVRfTk9ORSwgIiAiLCAiIiwgIiIsICIiLCAiJXMiLCAmIiAiLDEsIDAsCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoQ09NTUFORF9MSU5FLCAiQ29tbWFuZCIsIkxpbmUiLCIiLCIiLCJcIiVzXCIiLAorCQkgY29tbWFuZF9saW5lLDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChVVUlELCAiVGVzdCIsICJVVUlEIiwgIiIsICIiLCAiJXMiLCB0ZXN0X3V1aWQsIDEsIDAsCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVTVUxUX0JSQU5ELCAiUmVzdWx0IiwgIlRhZyIsICIiLCAiIiwgIlwiJXNcIiIsCisJCSByZXN1bHRfYnJhbmQsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChTT0NLRVRfVFlQRSwgIlNvY2tldCIsICJUeXBlIiwgIiIsICIiLCAiJXMiLAorCQkgc29ja2V0X3R5cGVfc3RyLCAxLCAwLCBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoRElSRUNUSU9OLCAiRGlyZWN0aW9uIiwgIiIsICIiLCAiIiwgIiVzIiwKKwkJIGRpcmVjdGlvbl9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChQUk9UT0NPTCwgIlByb3RvY29sIiwgIiIsICIiLCAiIiwgIiVzIiwKKwkJIHByb3RvY29sX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KEVMQVBTRURfVElNRSwgIkVsYXBzZWQiLCAiVGltZSIsICIoc2VjKSIsICIiLCAiJS4yZiIsCisJCSAmZWxhcHNlZF90aW1lX2RvdWJsZSwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoU09VUkNFX1BPUlQsICJTb3VyY2UiLCAiUG9ydCIsICIiLCAiIiwgIiVzIiwKKwkJIGxvY2FsX2RhdGFfcG9ydCwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFNPVVJDRV9BRERSLCAiU291cmNlIiwgIkFkZHJlc3MiLCAiIiwgIiIsICIlcyIsCisJCSBsb2NhbF9kYXRhX2FkZHJlc3MsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChTT1VSQ0VfRkFNSUxZLCAiU291cmNlIiwgIkZhbWlseSIsICIiLCAiIiwgIiVkIiwKKwkJICZsb2NhbF9kYXRhX2ZhbWlseSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChERVNUX1BPUlQsICJEZXN0aW5hdGlvbiIsICJQb3J0IiwgIiIsICIiLCAiJXMiLAorCQkgcmVtb3RlX2RhdGFfcG9ydCwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KERFU1RfQUREUiwgIkRlc3RpbmF0aW9uIiwgIkFkZHJlc3MiLCAiIiwgIiIsICIlcyIsCisJCSByZW1vdGVfZGF0YV9hZGRyZXNzLCAxLCAwLCBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoREVTVF9GQU1JTFksICJEZXN0aW5hdGlvbiIsICJGYW1pbHkiLCAiIiwgIiIsICIlZCIsCisJCSAmcmVtb3RlX2RhdGFfZmFtaWx5LCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFRIUk9VR0hQVVQsICJUaHJvdWdocHV0IiwgIiIsICIiLCAiIiwgIiUuMmYiLAorCQkgJnRocnVwdXQsIDEsIDAsIE5FVFBFUkZfVFlQRV9ET1VCTEUpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NFTkRfVEhST1VHSFBVVCwgIkxvY2FsIiwgIlNlbmQiLCAiVGhyb3VnaHB1dCIsICIiLAorCQkgIiUuMmYiLCAmbG9jYWxfc2VuZF90aHJ1cHV0LCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9SRUNWX1RIUk9VR0hQVVQsICJMb2NhbCIsICJSZWN2IiwgIlRocm91Z2hwdXQiLCAiIiwKKwkJICIlLjJmIiwgJmxvY2FsX3JlY3ZfdGhydXB1dCwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX1NFTkRfVEhST1VHSFBVVCwgIlJlbW90ZSIsICJTZW5kIiwgIlRocm91Z2hwdXQiLCAiIiwKKwkJICIlLjJmIiwgJnJlbW90ZV9zZW5kX3RocnVwdXQsIDEsIDAsIE5FVFBFUkZfVFlQRV9ET1VCTEUpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9SRUNWX1RIUk9VR0hQVVQsICJSZW1vdGUiLCAiUmVjdiIsICJUaHJvdWdocHV0IiwgIiIsCisJCSAiJS4yZiIsICZyZW1vdGVfcmVjdl90aHJ1cHV0LCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChUSFJPVUdIUFVUX1VOSVRTLCAiVGhyb3VnaHB1dCIsICJVbml0cyIsICIiLCAiIiwgIiVzL3MiLAorCQkgdGhydXB1dF9mb3JtYXRfc3RyLCAxLCAwLCBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoQ09ORklERU5DRV9MRVZFTCwgIkNvbmZpZGVuY2UiLCAiTGV2ZWwiLCAiUGVyY2VudCIsICIiLCAiJWQiLAorCQkgJmNvbmZpZGVuY2VfbGV2ZWwsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoQ09ORklERU5DRV9JTlRFUlZBTCwgIkNvbmZpZGVuY2UiLCAiV2lkdGgiLCAiVGFyZ2V0IiwgIiIsCisJCSAiJWYiLCAmaW50ZXJ2YWxfcGN0LCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChDT05GSURFTkNFX0lURVJBVElPTiwgIkNvbmZpZGVuY2UiLCAiSXRlcmF0aW9ucyIsICJSdW4iLCAiIiwKKwkJICIlZCIsICZjb25maWRlbmNlX2l0ZXJhdGlvbiwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChUSFJPVUdIUFVUX0NPTkZJRCwgIlRocm91Z2hwdXQiLCAiQ29uZmlkZW5jZSIsICJXaWR0aCAoJSkiLAorCQkgIiIsICIlLjNmIiwgJnJlc3VsdF9jb25maWRfcGN0LCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DUFVfQ09ORklELCAiTG9jYWwiLCAiQ1BVIiwgIkNvbmZpZGVuY2UiLCAiV2lkdGggKCUpIiwKKwkJICIlLjNmIiwgJmxvY19jcHVfY29uZmlkX3BjdCwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0NQVV9DT05GSUQsICJSZW1vdGUiLCAiQ1BVIiwgIkNvbmZpZGVuY2UiLCAiV2lkdGggKCUpIiwKKwkJICIlLjNmIiwgJnJlbV9jcHVfY29uZmlkX3BjdCwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoUlRfTEFURU5DWSwgIlJvdW5kIiwgIlRyaXAiLCAiTGF0ZW5jeSIsICJ1c2VjL3RyYW4iLCAiJS4zZiIsCisJCSAmcnR0X2xhdGVuY3ksIDEsIDAsIE5FVFBFUkZfVFlQRV9ET1VCTEUpOworCisgIHNldF9vdXRwdXRfZWx0KFRSQU5TQUNUSU9OX1JBVEUsICJUcmFuc2FjdGlvbiIsICJSYXRlIiwgIlRyYW4vcyIsICIiLCAiJS4zZiIsCisJCSAmdHJhbnNhY3Rpb25fcmF0ZSwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoVFJBTlNQT1JUX01TUywgIlRyYW5zcG9ydCIsICJNU1MiLCAiYnl0ZXMiLCAiIiwgIiVkIiwKKwkJICZ0cmFuc3BvcnRfbXNzLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1RSQU5TUE9SVF9SRVRSQU5TLCAiTG9jYWwiLCAiVHJhbnNwb3J0IiwKKwkJICJSZXRyYW5zbWlzc2lvbnMiLCAiIiwgIiVkIiwgJmxvY2FsX3RyYW5zcG9ydF9yZXRyYW5zLCAxLCAwLAorCQkgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfVFJBTlNQT1JUX1JFVFJBTlMsICJSZW1vdGUiLCAiVHJhbnNwb3J0IiwKKwkJICJSZXRyYW5zbWlzc2lvbnMiLCAiIiwgIiVkIiwgJnJlbW90ZV90cmFuc3BvcnRfcmV0cmFucywgMSwgMCwKKwkJIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVRVUVTVF9TSVpFLCAiUmVxdWVzdCIsICJTaXplIiwgIkJ5dGVzIiwgIiIsICIlZCIsCisJCSAmcmVxX3NpemUsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVTUE9OU0VfU0laRSwgIlJlc3BvbnNlIiwgIlNpemUiLCAiQnl0ZXMiLCAiIiwgIiVkIiwKKwkJICZyc3Bfc2l6ZSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChCVVJTVF9TSVpFLCAiSW5pdGlhbCIsICJCdXJzdCIsICJSZXF1ZXN0cyIsICIiLCAiJWQiLAorCQkgJmZpcnN0X2J1cnN0X3NpemUsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTFNTX1NJWkVfUkVRLCAiTG9jYWwiLCAiU2VuZCBTb2NrZXQiLCAiU2l6ZSIsICJSZXF1ZXN0ZWQiLAorCQkgIiVkIiwgJmxzc19zaXplX3JlcSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMU1NfU0laRSwgIkxvY2FsIiwgIlNlbmQgU29ja2V0IiwgIlNpemUiLCAiSW5pdGlhbCIsICIlZCIsCisJCSAmbHNzX3NpemUsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTFNTX1NJWkVfRU5ELCAiTG9jYWwiLCAiU2VuZCBTb2NrZXQiLCAiU2l6ZSIsICJGaW5hbCIsICIlZCIsCisJCSAmbHNzX3NpemVfZW5kLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExTUl9TSVpFX1JFUSwgIkxvY2FsIiwgIlJlY3YgU29ja2V0IiwgIlNpemUiLCAiUmVxdWVzdGVkIiwKKwkJICIlZCIsICZsc3Jfc2l6ZV9yZXEsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTFNSX1NJWkUsICJMb2NhbCIsICJSZWN2IFNvY2tldCIsICJTaXplIiwgIkluaXRpYWwiLCAiJWQiLAorCQkgJmxzcl9zaXplLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExTUl9TSVpFX0VORCwgIkxvY2FsIiwgIlJlY3YgU29ja2V0IiwgIlNpemUiLCAiRmluYWwiLCAiJWQiLAorCQkgJmxzcl9zaXplX2VuZCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TRU5EX1NJWkUsICJMb2NhbCIsICJTZW5kIiwgIlNpemUiLCAiIiwgIiVkIiwKKwkJICZzZW5kX3NpemUsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfUkVDVl9TSVpFLCAiTG9jYWwiLCAiUmVjdiIsICJTaXplIiwgIiIsICIlZCIsCisJCSAmcmVjdl9zaXplLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NFTkRfQ0FMTFMsICJMb2NhbCIsICJTZW5kIiwgIkNhbGxzIiwgIiIsICIlIlBSSXU2NCwKKwkJICZsb2NhbF9zZW5kX2NhbGxzLCAxLCAwLCBORVRQRVJGX1RZUEVfVUlOVDY0KTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9SRUNWX0NBTExTLCAiTG9jYWwiLCAiUmVjdiIsICJDYWxscyIsICIiLCAiJSJQUkl1NjQsCisJCSAmbG9jYWxfcmVjZWl2ZV9jYWxscywgMSwgMCwgTkVUUEVSRl9UWVBFX1VJTlQ2NCk7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQllURVNfUEVSX1JFQ1YsICJMb2NhbCIsICJCeXRlcyIsICJQZXIiLCAiUmVjdiIsICIlLjJmIiwKKwkJICZieXRlc19wZXJfcmVjdiwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQllURVNfUEVSX1NFTkQsICJMb2NhbCIsICJCeXRlcyIsICJQZXIiLCAiU2VuZCIsICIlLjJmIiwKKwkJICZieXRlc19wZXJfc2VuZCwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQllURVNfUkVDVkQsICJMb2NhbCIsICJCeXRlcyIsICJSZWNlaXZlZCIsICIiLCAiJSJQUkl1NjQsCisJCSAmYnl0ZXNfcmVjZWl2ZWQsIDEsIDAsIE5FVFBFUkZfVFlQRV9VSU5UNjQpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0JZVEVTX1NFTlQsICJMb2NhbCIsICJCeXRlcyIsICJTZW50IiwgIiIsICIlIlBSSXU2NCwKKwkJICZieXRlc19zZW50LCAxLCAwLCBORVRQRVJGX1RZUEVfVUlOVDY0KTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9CWVRFU19YRkVSRCwgIkxvY2FsIiwgIkJ5dGVzIiwgIlhmZXJyZWQiLCAiIiwgIiUuMGYiLAorCQkgJmJ5dGVzX3hmZXJkLCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TRU5EX1dJRFRILCAiTG9jYWwiLCAiU2VuZCIsICJXaWR0aCIsICIiLCAiJWQiLAorCQkgJnNlbmRfd2lkdGgsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfUkVDVl9XSURUSCwgIkxvY2FsIiwgIlJlY3YiLCAiV2lkdGgiLCAiIiwgIiVkIiwKKwkJICZyZWN2X3dpZHRoLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NFTkRfT0ZGU0VULCAiTG9jYWwiLCAiU2VuZCIsICJPZmZzZXQiLCAiIiwgIiVkIiwKKwkJICZsb2NhbF9zZW5kX29mZnNldCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9SRUNWX09GRlNFVCwgIkxvY2FsIiwgIlJlY3YiLCAiT2Zmc2V0IiwgIiIsICIlZCIsCisJCSAmbG9jYWxfcmVjdl9vZmZzZXQsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfUkVDVl9BTElHTiwgIkxvY2FsIiwgIlJlY3YiLCAiQWxpZ25tZW50IiwgIiIsICIlZCIsCisJCSAmbG9jYWxfcmVjdl9hbGlnbiwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TRU5EX0FMSUdOLCAiTG9jYWwiLCAiU2VuZCIsICJBbGlnbm1lbnQiLCAiIiwgIiVkIiwKKwkJICZsb2NhbF9zZW5kX2FsaWduLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NFTkRfRElSVFlfQ09VTlQsICJMb2NhbCIsICJTZW5kIiwgIkRpcnR5IiwgIkNvdW50IiwKKwkJICIlZCIsICZsb2NfZGlydHlfY291bnQsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfUkVDVl9ESVJUWV9DT1VOVCwgIkxvY2FsIiwgIlJlY3YiLCAiRGlydHkiLCAiQ291bnQiLAorCQkgIiVkIiwgJmxvY19kaXJ0eV9jb3VudCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9SRUNWX0NMRUFOX0NPVU5ULCAiTG9jYWwiLCAiUmVjdiIsICJDbGVhbiIsICJDb3VudCIsCisJCSAiJWQiLCAmbG9jX2NsZWFuX2NvdW50LCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0NQVV9VVElMLCAiTG9jYWwiLCAiQ1BVIiwgIlV0aWwiLCAiJSIsICIlLjJmIiwKKwkJICZsb2NhbF9jcHVfdXRpbGl6YXRpb24sIDEsIDAsIE5FVFBFUkZfVFlQRV9GTE9BVCk7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQ1BVX1BFUkNFTlRfVVNFUiwgIkxvY2FsIiwgIkNQVSIsICJVc2VyIiwgIiUiLCAiJS4yZiIsCisJCSAmbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXNlciwgMSwgMCwgTkVUUEVSRl9UWVBFX0ZMT0FUKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DUFVfUEVSQ0VOVF9TWVNURU0sCisgICAgICAgICAgICAgICAgICJMb2NhbCIsICJDUFUiLCAiU3lzdGVtIiwgIiUiLCAiJS4yZiIsCisJCSAmbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfc3lzdGVtLCAxLCAwLCBORVRQRVJGX1RZUEVfRkxPQVQpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0NQVV9QRVJDRU5UX0lPV0FJVCwKKyAgICAgICAgICAgICAgICAgIkxvY2FsIiwgIkNQVSIsICJJL08iLCAiJSIsICIlLjJmIiwKKwkJICZsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV9pb3dhaXQsIDEsIDAsIE5FVFBFUkZfVFlQRV9GTE9BVCk7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQ1BVX1BFUkNFTlRfSVJRLAorICAgICAgICAgICAgICAgICAiTG9jYWwiLCAiQ1BVIiwgIklSUSIsICIlIiwgIiUuMmYiLAorCQkgJmxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X2lycSwgMSwgMCwgTkVUUEVSRl9UWVBFX0ZMT0FUKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DUFVfUEVSQ0VOVF9TV0lOVFIsCisgICAgICAgICAgICAgICAgICJMb2NhbCIsICJDUFUiLCAic3dpbnRyIiwgIiUiLCAiJS4yZiIsCisJCSAmbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfc3dpbnRyLCAxLCAwLCBORVRQRVJGX1RZUEVfRkxPQVQpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0NQVV9QRUFLX1VUSUwsICJMb2NhbCIsICJQZWFrIiwgIlBlciBDUFUiLCAiVXRpbCAlIiwKKwkJICIlLjJmIiwgJmxpYl9sb2NhbF9jcHVfc3RhdHMucGVha19jcHVfdXRpbCwgMSwgMCwKKyAgICAgICAgICAgICAgICAgTkVUUEVSRl9UWVBFX0ZMT0FUKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DUFVfUEVBS19JRCwgIkxvY2FsIiwgIlBlYWsiLCAiUGVyIENQVSIsICJJRCIsICIlZCIsCisJCSAmbGliX2xvY2FsX2NwdV9zdGF0cy5wZWFrX2NwdV9pZCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DUFVfQklORCwgIkxvY2FsIiwgIkNQVSIsICJCaW5kIiwgIiIsICIlZCIsCisJCSAmbG9jYWxfcHJvY19hZmZpbml0eSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TRCwgIkxvY2FsIiwgIlNlcnZpY2UiLCAiRGVtYW5kIiwgIiIsICIlLjNmIiwKKwkJICZsb2NhbF9zZXJ2aWNlX2RlbWFuZF9kb3VibGUsIDEsIDAsIE5FVFBFUkZfVFlQRV9ET1VCTEUpOworCisgIHNldF9vdXRwdXRfZWx0KFNEX1VOSVRTLCAiU2VydmljZSIsICJEZW1hbmQiLCAiVW5pdHMiLCAiIiwgIiVzIiwKKwkJIHNkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0NQVV9NRVRIT0QsICJMb2NhbCIsICJDUFUiLCAiVXRpbCIsICJNZXRob2QiLCAiJWMiLAorCQkgJmxvY2FsX2NwdV9tZXRob2QsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQ1BVX0NPVU5ULCAiTG9jYWwiLCAiQ1BVIiwgIkNvdW50IiwgIiIsICIlZCIsCisJCSAmbGliX251bV9sb2NfY3B1cywgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9OT0RFTEFZLCAiTG9jYWwiLCAiTk9ERUxBWSIsICIiLCAiIiwgIiVkIiwKKwkJICZsb2Nfbm9kZWxheSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DT1JLLCAiTG9jYWwiLCAiQ29yayIsICIiLCAiIiwgIiVkIiwKKwkJICZsb2NfdGNwY29yaywgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSU1NfU0laRV9SRVEsICJSZW1vdGUiLCAiU2VuZCBTb2NrZXQiLCAiU2l6ZSIsICJSZXF1ZXN0ZWQiLAorCQkgIiVkIiwgJnJzc19zaXplX3JlcSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSU1NfU0laRSwgIlJlbW90ZSIsICJTZW5kIFNvY2tldCIsICJTaXplIiwgIkluaXRpYWwiLCAiJWQiLAorCQkgJnJzc19zaXplLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJTU19TSVpFX0VORCwgIlJlbW90ZSIsICJTZW5kIFNvY2tldCIsICJTaXplIiwgIkZpbmFsIiwgIiVkIiwKKwkJICZyc3Nfc2l6ZV9lbmQsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUlNSX1NJWkVfUkVRLCAiUmVtb3RlIiwgIlJlY3YgU29ja2V0IiwgIlNpemUiLCAiUmVxdWVzdGVkIiwKKwkJICIlZCIsICZyc3Jfc2l6ZV9yZXEsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUlNSX1NJWkUsICJSZW1vdGUiLCAiUmVjdiBTb2NrZXQiLCAiU2l6ZSIsICJJbml0aWFsIiwgIiVkIiwKKwkJICZyc3Jfc2l6ZSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSU1JfU0laRV9FTkQsICJSZW1vdGUiLCAiUmVjdiBTb2NrZXQiLCAiU2l6ZSIsICJGaW5hbCIsICIlZCIsCisJCSAmcnNyX3NpemVfZW5kLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TRU5EX1NJWkUsICJSZW1vdGUiLCAiU2VuZCIsICJTaXplIiwgIiIsICIlZCIsCisJCSAmcmVtb3RlX3NlbmRfc2l6ZSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfUkVDVl9TSVpFLCAiUmVtb3RlIiwgIlJlY3YiLCAiU2l6ZSIsICIiLCAiJWQiLAorCQkgJnJlbW90ZV9yZWN2X3NpemUsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX1NFTkRfQ0FMTFMsICJSZW1vdGUiLCAiU2VuZCIsICJDYWxscyIsICIiLCAiJSJQUkl1NjQsCisJCSAmcmVtb3RlX3NlbmRfY2FsbHMsIDEsIDAsIE5FVFBFUkZfVFlQRV9VSU5UNjQpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9SRUNWX0NBTExTLCAiUmVtb3RlIiwgIlJlY3YiLCAiQ2FsbHMiLCAiIiwgIiUiUFJJdTY0LAorCQkgJnJlbW90ZV9yZWNlaXZlX2NhbGxzLCAxLCAwLCBORVRQRVJGX1RZUEVfVUlOVDY0KTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQllURVNfUEVSX1JFQ1YsICJSZW1vdGUiLCAiQnl0ZXMiLCAiUGVyIiwgIlJlY3YiLAorCQkgIiUuMmYiLCAmcmVtb3RlX2J5dGVzX3Blcl9yZWN2LCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQllURVNfUEVSX1NFTkQsICJSZW1vdGUiLCAiQnl0ZXMiLCAiUGVyIiwgIlNlbmQiLAorCQkgIiUuMmYiLCAmcmVtb3RlX2J5dGVzX3Blcl9zZW5kLCAxLCAwLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQllURVNfUkVDVkQsICJSZW1vdGUiLCAiQnl0ZXMiLCAiUmVjZWl2ZWQiLCAiIiwKKwkJICIlIlBSSXU2NCwgJnJlbW90ZV9ieXRlc19yZWNlaXZlZCwgMSwgMCwgTkVUUEVSRl9UWVBFX1VJTlQ2NCk7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0JZVEVTX1NFTlQsICJSZW1vdGUiLCAiQnl0ZXMiLCAiU2VudCIsICIiLCAiJSJQUkl1NjQsCisJCSAmcmVtb3RlX2J5dGVzX3NlbnQsIDEsIDAsIE5FVFBFUkZfVFlQRV9VSU5UNjQpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9CWVRFU19YRkVSRCwgIlJlbW90ZSIsICJCeXRlcyIsICJYZmVycmVkIiwgIiIsICIlLjBmIiwKKwkJICZyZW1vdGVfYnl0ZXNfeGZlcmQsIDEsIDAsIE5FVFBFUkZfVFlQRV9ET1VCTEUpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TRU5EX1dJRFRILCAiUmVtb3RlIiwgIlNlbmQiLCAiV2lkdGgiLCAiIiwgIiVkIiwKKwkJICZyZW1vdGVfc2VuZF93aWR0aCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfUkVDVl9XSURUSCwgIlJlbW90ZSIsICJSZWN2IiwgIldpZHRoIiwgIiIsICIlZCIsCisJCSAmcmVtb3RlX3JlY3Zfd2lkdGgsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX1NFTkRfT0ZGU0VULCAiUmVtb3RlIiwgIlNlbmQiLCAiT2Zmc2V0IiwgIiIsICIlZCIsCisJCSAmcmVtb3RlX3NlbmRfb2Zmc2V0LCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9SRUNWX09GRlNFVCwgIlJlbW90ZSIsICJSZWN2IiwgIk9mZnNldCIsICIiLCAiJWQiLAorCQkgJnJlbW90ZV9yZWN2X29mZnNldCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfUkVDVl9BTElHTiwgIlJlbW90ZSIsICJSZWN2IiwgIkFsaWdubWVudCIsICIiLCAiJWQiLAorCQkgJnJlbW90ZV9yZWN2X2FsaWduLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TRU5EX0FMSUdOLCAiUmVtb3RlIiwgIlNlbmQiLCAiQWxpZ25tZW50IiwgIiIsICIlZCIsCisJCSAmcmVtb3RlX3NlbmRfYWxpZ24sIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX1NFTkRfRElSVFlfQ09VTlQsICJSZW1vdGUiLCAiU2VuZCIsICJEaXJ0eSIsICJDb3VudCIsCisJCSAiJWQiLCAmcmVtX2RpcnR5X2NvdW50LCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9SRUNWX0RJUlRZX0NPVU5ULCAiUmVtb3RlIiwgIlJlY3YiLCAiRGlydHkiLCAiQ291bnQiLAorCQkgIiVkIiwgJnJlbV9kaXJ0eV9jb3VudCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfUkVDVl9DTEVBTl9DT1VOVCwgIlJlbW90ZSIsICJSZWN2IiwgIkNsZWFuIiwgIkNvdW50IiwKKwkJICIlZCIsICZyZW1fY2xlYW5fY291bnQsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0NQVV9VVElMLCAiUmVtb3RlIiwgIkNQVSIsICJVdGlsIiwgIiUiLCAiJS4yZiIsCisJCSAmcmVtb3RlX2NwdV91dGlsaXphdGlvbiwgMSwgMCwgTkVUUEVSRl9UWVBFX0ZMT0FUKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ1BVX1BFUkNFTlRfVVNFUiwgIlJlbW90ZSIsICJDUFUiLCAiVXNlciIsICIlIiwgIiUuMmYiLAorCQkgJmxpYl9yZW1vdGVfY3B1X3N0YXRzLmNwdV91c2VyLCAxLCAwLCBORVRQRVJGX1RZUEVfRkxPQVQpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9DUFVfUEVSQ0VOVF9TWVNURU0sCisgICAgICAgICAgICAgICAgICJSZW1vdGUiLCAiQ1BVIiwgIlN5c3RlbSIsICIlIiwgIiUuMmYiLAorCQkgJmxpYl9yZW1vdGVfY3B1X3N0YXRzLmNwdV9zeXN0ZW0sIDEsIDAsIE5FVFBFUkZfVFlQRV9GTE9BVCk7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0NQVV9QRVJDRU5UX0lPV0FJVCwKKyAgICAgICAgICAgICAgICAgIlJlbW90ZSIsICJDUFUiLCAiSS9PIiwgIiUiLCAiJS4yZiIsCisJCSAmbGliX3JlbW90ZV9jcHVfc3RhdHMuY3B1X2lvd2FpdCwgMSwgMCwgTkVUUEVSRl9UWVBFX0ZMT0FUKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ1BVX1BFUkNFTlRfSVJRLAorICAgICAgICAgICAgICAgICAiUmVtb3RlIiwgIkNQVSIsICJJUlEiLCAiJSIsICIlLjJmIiwKKwkJICZsaWJfcmVtb3RlX2NwdV9zdGF0cy5jcHVfaXJxLCAxLCAwLCBORVRQRVJGX1RZUEVfRkxPQVQpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9DUFVfUEVSQ0VOVF9TV0lOVFIsCisgICAgICAgICAgICAgICAgICJSZW1vdGUiLCAiQ1BVIiwgInN3aW50ciIsICIlIiwgIiUuMmYiLAorCQkgJmxpYl9yZW1vdGVfY3B1X3N0YXRzLmNwdV9zd2ludHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9GTE9BVCk7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0NQVV9QRUFLX1VUSUwsICJSZW1vdGUiLCAiUGVhayIsICJQZXIgQ1BVIiwgIlV0aWwgJSIsCisJCSAiJS4yZiIsICZsaWJfcmVtb3RlX2NwdV9zdGF0cy5wZWFrX2NwdV91dGlsLCAxLCAwLAorICAgICAgICAgICAgICAgICBORVRQRVJGX1RZUEVfRkxPQVQpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9DUFVfUEVBS19JRCwgIlJlbW90ZSIsICJQZWFrIiwgIlBlciBDUFUiLCAiSUQiLCAiJWQiLAorCQkgJmxpYl9yZW1vdGVfY3B1X3N0YXRzLnBlYWtfY3B1X2lkLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9DUFVfQklORCwgIlJlbW90ZSIsICJDUFUiLCAiQmluZCIsICIiLCAiJWQiLAorCQkgJnJlbW90ZV9wcm9jX2FmZmluaXR5LCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TRCwgIlJlbW90ZSIsICJTZXJ2aWNlIiwgIkRlbWFuZCIsICIiLCAiJS4zZiIsCisJCSAmcmVtb3RlX3NlcnZpY2VfZGVtYW5kX2RvdWJsZSwgMSwgMCwgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0NQVV9NRVRIT0QsICJSZW1vdGUiLCAiQ1BVIiwgIlV0aWwiLCAiTWV0aG9kIiwgIiVjIiwKKwkJICZyZW1vdGVfY3B1X21ldGhvZCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ1BVX0NPVU5ULCAiUmVtb3RlIiwgIkNQVSIsICJDb3VudCIsICIiLCAiJWQiLAorCQkgJmxpYl9udW1fcmVtX2NwdXMsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX05PREVMQVksICJSZW1vdGUiLCAiTk9ERUxBWSIsICIiLCAiIiwgIiVkIiwKKwkJICZyZW1fbm9kZWxheSwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ09SSywgIlJlbW90ZSIsICJDb3JrIiwgIiIsICIiLCAiJWQiLAorCQkgJnJlbV90Y3Bjb3JrLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0RSSVZFUl9OQU1FLCAiTG9jYWwiLCAiRHJpdmVyIiwgIk5hbWUiLCAiIiwgIiVzIiwKKwkJIGRlcHJlY2F0ZWRfc3RyLCAxLCBPTU5JX1dBTlRfTE9DX0RSVklORk8sCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfRFJJVkVSX1ZFUlNJT04sICJMb2NhbCIsICJEcml2ZXIiLCAiVmVyc2lvbiIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIE9NTklfV0FOVF9MT0NfRFJWSU5GTywKKwkJIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9EUklWRVJfRklSTVdBUkUsICJMb2NhbCIsICJEcml2ZXIiLCAiRmlybXdhcmUiLCAiIiwKKwkJICIlcyIsIGRlcHJlY2F0ZWRfc3RyLCAxLCBPTU5JX1dBTlRfTE9DX0RSVklORk8sCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfRFJJVkVSX0JVUywgIkxvY2FsIiwgIkRyaXZlciIsICJCdXMiLCAiIiwgIiVzIiwKKwkJIGRlcHJlY2F0ZWRfc3RyLCAxLCBPTU5JX1dBTlRfTE9DX0RSVklORk8sIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfRFJJVkVSX05BTUUsICJSZW1vdGUiLCAiRHJpdmVyIiwgIk5hbWUiLCAiIiwgIiVzIiwKKwkJIGRlcHJlY2F0ZWRfc3RyLCAxLCBPTU5JX1dBTlRfUkVNX0RSVklORk8sCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0RSSVZFUl9WRVJTSU9OLCAiUmVtb3RlIiwgIkRyaXZlciIsICJWZXJzaW9uIiwgIiIsCisJCSAiJXMiLCBkZXByZWNhdGVkX3N0ciwgMSwgT01OSV9XQU5UX1JFTV9EUlZJTkZPLAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9EUklWRVJfRklSTVdBUkUsICJSZW1vdGUiLCAiRHJpdmVyIiwgIkZpcm13YXJlIiwgIiIsCisJCSAiJXMiLCBkZXByZWNhdGVkX3N0ciwgMSwgT01OSV9XQU5UX1JFTV9EUlZJTkZPLAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9EUklWRVJfQlVTLCAiUmVtb3RlIiwgIkRyaXZlciIsICJCdXMiLCAiIiwgIiVzIiwKKwkJIGRlcHJlY2F0ZWRfc3RyLCAxLCBPTU5JX1dBTlRfUkVNX0RSVklORk8sCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfSU5URVJGQUNFX1NVQkRFVklDRSwgIkxvY2FsIiwgIkludGVyZmFjZSIsICJTdWJkZXZpY2UiLAorCQkgIiIsICIweCUuNHgiLCAmbG9jYWxfaW50ZXJmYWNlX3N1YmRldmljZSwgMSwKKwkJIE9NTklfV0FOVF9MT0NfSUZJRFMsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfSU5URVJGQUNFX0RFVklDRSwgIkxvY2FsIiwgIkludGVyZmFjZSIsICJEZXZpY2UiLCAiIiwKKwkJICIweCUuNHgiLCAmbG9jYWxfaW50ZXJmYWNlX2RldmljZSwgMSwgT01OSV9XQU5UX0xPQ19JRklEUywKKwkJIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfSU5URVJGQUNFX1NVQlZFTkRPUiwgIkxvY2FsIiwgIkludGVyZmFjZSIsICJTdWJ2ZW5kb3IiLAorCQkgIiIsICIweCUuNHgiLCAmbG9jYWxfaW50ZXJmYWNlX3N1YnZlbmRvciwgMSwKKwkJIE9NTklfV0FOVF9MT0NfSUZJRFMsIE5FVFBFUkZfVFlQRV9VSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0lOVEVSRkFDRV9WRU5ET1IsICJMb2NhbCIsICJJbnRlcmZhY2UiLCAiVmVuZG9yIiwgIiIsCisJCSAiMHglLjR4IiwgJmxvY2FsX2ludGVyZmFjZV92ZW5kb3IsIDEsIE9NTklfV0FOVF9MT0NfSUZJRFMsCisJCSBORVRQRVJGX1RZUEVfVUlOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfSU5URVJGQUNFX1NVQkRFVklDRSwgIlJlbW90ZSIsICJJbnRlcmZhY2UiLAorCQkgIlN1YmRldmljZSIsICIiLCAiMHglLjR4IiwgJnJlbW90ZV9pbnRlcmZhY2Vfc3ViZGV2aWNlLCAxLAorCQkgT01OSV9XQU5UX1JFTV9JRklEUywgTkVUUEVSRl9UWVBFX1VJTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0lOVEVSRkFDRV9ERVZJQ0UsICJSZW1vdGUiLCAiSW50ZXJmYWNlIiwgIkRldmljZSIsICIiLAorCQkgIjB4JS40eCIsICZyZW1vdGVfaW50ZXJmYWNlX2RldmljZSwgMSwgT01OSV9XQU5UX1JFTV9JRklEUywKKwkJIE5FVFBFUkZfVFlQRV9VSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9JTlRFUkZBQ0VfU1VCVkVORE9SLCAiUmVtb3RlIiwgIkludGVyZmFjZSIsCisJCSAiU3VidmVuZG9yIiwgIiIsICIweCUuNHgiLCAmcmVtb3RlX2ludGVyZmFjZV9zdWJ2ZW5kb3IsIDEsCisJCSBPTU5JX1dBTlRfUkVNX0lGSURTLCBORVRQRVJGX1RZUEVfVUlOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfSU5URVJGQUNFX1ZFTkRPUiwgIlJlbW90ZSIsICJJbnRlcmZhY2UiLCAiVmVuZG9yIiwgIiIsCisJCSAiMHglLjR4IiwgJnJlbW90ZV9pbnRlcmZhY2VfdmVuZG9yLCAxLCBPTU5JX1dBTlRfUkVNX0lGSURTLAorCQkgTkVUUEVSRl9UWVBFX1VJTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfSU5URVJGQUNFX05BTUUsICJMb2NhbCIsICJJbnRlcmZhY2UiLCAiTmFtZSIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIE9NTklfV0FOVF9MT0NfSUZOQU1FLAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9JTlRFUkZBQ0VfTkFNRSwgIlJlbW90ZSIsICJJbnRlcmZhY2UiLCAiTmFtZSIsICIiLAorCQkgIiVzIiwgZGVwcmVjYXRlZF9zdHIsIDEsIE9NTklfV0FOVF9SRU1fSUZOQU1FLAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0lOVEVSRkFDRV9TTE9ULCAiTG9jYWwiLCAiSW50ZXJmYWNlIiwgIlNsb3QiLCAiIiwgIiVzIiwKKwkJIGRlcHJlY2F0ZWRfc3RyLCAxLCBPTU5JX1dBTlRfTE9DX0lGU0xPVCwKKwkJIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfSU5URVJGQUNFX1NMT1QsICAiUmVtb3RlIiwgICJJbnRlcmZhY2UiLCAgIlNsb3QiLCAgIiIsCisJCSAiJXMiLCAgZGVwcmVjYXRlZF9zdHIsIDEsIE9NTklfV0FOVF9SRU1fSUZTTE9ULAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9NQUNISU5FLCAiUmVtb3RlIiwgIk1hY2hpbmUiLCAiIiwgIiIsICIlcyIsCisJCSBkZXByZWNhdGVkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9WRVJTSU9OLCAiUmVtb3RlIiwgIlZlcnNpb24iLCAiIiwgIiIsICIlcyIsCisJCSBkZXByZWNhdGVkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9SRUxFQVNFLCAiUmVtb3RlIiwgIlJlbGVhc2UiLCAiIiwgIiIsICIlcyIsCisJCSBkZXByZWNhdGVkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TWVNOQU1FLCAiUmVtb3RlIiwgIlN5c25hbWUiLCAiIiwgIiIsICIlcyIsCisJCSBkZXByZWNhdGVkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX01BQ0hJTkUsICJMb2NhbCIsICJNYWNoaW5lIiwgIiIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9WRVJTSU9OLCAiTG9jYWwiLCAiVmVyc2lvbiIsICIiLCAiIiwgIiVzIiwKKwkJIGRlcHJlY2F0ZWRfc3RyLCAxLCAwLCBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfUkVMRUFTRSwgIkxvY2FsIiwgIlJlbGVhc2UiLCAiIiwgIiIsICIlcyIsCisJCSBkZXByZWNhdGVkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NZU05BTUUsICJMb2NhbCIsICJTeXNuYW1lIiwgIiIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfSU5URVJWQUxfVVNFQ1MsICJSZW1vdGUiLCAiSW50ZXJ2YWwiLCAiVXNlY3MiLCAiIiwKKwkJICIlZCIsICZyZW1vdGVfaW50ZXJ2YWxfdXNlY3MsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0lOVEVSVkFMX0JVUlNULCAiUmVtb3RlIiwgIkludGVydmFsIiwgIkJ1cnN0IiwgIiIsCisJCSAiJWQiLCAmcmVtb3RlX2ludGVydmFsX2J1cnN0LCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NFQ1VSSVRZX0VOQUJMRUQsICJMb2NhbCIsICJPUyIsICJTZWN1cml0eSIsICJFbmFibGVkIiwKKwkJICIlcyIsIGRlcHJlY2F0ZWRfc3RyLCAxLCAwLCBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfU0VDVVJJVFlfVFlQRSwgIkxvY2FsIiwgIk9TIiwgIlNlY3VyaXR5IiwgIlR5cGUiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TRUNVUklUWV9TUEVDSUZJQywgIkxvY2FsIiwgIk9TIiwgIlNlY3VyaXR5IiwKKwkJICJTcGVjaWZpYyIsICIlcyIsIGRlcHJlY2F0ZWRfc3RyLCAxLCAwLAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX1NFQ1VSSVRZX0VOQUJMRURfTlVNLCAiTG9jYWwiLCAiT1MiLCAiU2VjdXJpdHkiLAorCQkgIkVuYWJsZWQgTnVtIiwgIiVkIiwgJmxvY2FsX3NlY3VyaXR5X2VuYWJsZWRfbnVtLCAxLCAwLAorCQkgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TRUNVUklUWV9UWVBFX0lELCAiTG9jYWwiLCAiT1MiLCAiU2VjdXJpdHkiLCAiVHlwZSBJRCIsCisJCSAiJWQiLCAmbG9jYWxfc2VjdXJpdHlfdHlwZV9pZCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfU0VDVVJJVFlfRU5BQkxFRCwgIlJlbW90ZSIsICJPUyIsICJTZWN1cml0eSIsCisJCSAiRW5hYmxlZCIsICIlcyIsIGRlcHJlY2F0ZWRfc3RyLCAxLCAwLAorCQkgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TRUNVUklUWV9UWVBFLCAiUmVtb3RlIiwgIk9TIiwgIlNlY3VyaXR5IiwgIlR5cGUiLAorCQkgIiVzIiwgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfU0VDVVJJVFlfU1BFQ0lGSUMsICJSZW1vdGUiLCAiT1MiLCAiU2VjdXJpdHkiLAorCQkgIlNwZWNpZmljIiwgIiVzIiwgZGVwcmVjYXRlZF9zdHIsIDEsIDAsCisJCSBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX1NFQ1VSSVRZX0VOQUJMRURfTlVNLCAiUmVtb3RlIiwgIk9TIiwgIlNlY3VyaXR5IiwKKwkJICJFbmFibGVkIiwgIiVkIiwgJnJlbW90ZV9zZWN1cml0eV9lbmFibGVkX251bSwgMSwgMCwKKwkJIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX1NFQ1VSSVRZX1RZUEVfSUQsICJSZW1vdGUiLCAiT1MiLCAiU2VjdXJpdHkiLCAiVHlwZSIsCisJCSAiJWQiLCAmcmVtb3RlX3NlY3VyaXR5X3R5cGVfaWQsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfSU5URVJWQUxfVVNFQ1MsICJMb2NhbCIsICJJbnRlcnZhbCIsICJVc2VjcyIsICIiLCAiJWQiLAorCQkgJmludGVydmFsX3VzZWNzLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0lOVEVSVkFMX0JVUlNULCAiTG9jYWwiLCAiSW50ZXJ2YWwiLCAiQnVyc3QiLCAiIiwgIiVkIiwKKwkJICZpbnRlcnZhbF9idXJzdCwgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfU1lTVEVNX01PREVMLCAiUmVtb3RlIiwgIlN5c3RlbSIsICJNb2RlbCIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ1BVX01PREVMLCAiUmVtb3RlIiwgIkNQVSIsICJNb2RlbCIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ1BVX0ZSRVFVRU5DWSwgIlJlbW90ZSIsICJDUFUiLCAiRnJlcXVlbmN5IiwgIk1IeiIsCisJCSAiJWQiLCAmcmVtb3RlX2NwdV9mcmVxdWVuY3ksIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfU1lTVEVNX01PREVMLCAiTG9jYWwiLCAiU3lzdGVtIiwgIk1vZGVsIiwgIiIsICIlcyIsCisJCSBkZXByZWNhdGVkX3N0ciwgMSwgMCwgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0NQVV9NT0RFTCwgIkxvY2FsIiwgIkNQVSIsICJNb2RlbCIsICIiLCAiJXMiLAorCQkgZGVwcmVjYXRlZF9zdHIsIDEsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9DUFVfRlJFUVVFTkNZLCAiTG9jYWwiLCAiQ1BVIiwgIkZyZXF1ZW5jeSIsICJNSHoiLCAiJWQiLAorCQkgJmxvY2FsX2NwdV9mcmVxdWVuY3ksIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTUlOX0xBVEVOQ1ksICJNaW5pbXVtIiwgIkxhdGVuY3kiLCAiTWljcm9zZWNvbmRzIiwgIiIsICIlZCIsCisJCSAmbWluX2xhdGVuY3ksIDAsIE9NTklfV0FOVF9TVEFUUywgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChNQVhfTEFURU5DWSwgIk1heGltdW0iLCAiTGF0ZW5jeSIsICJNaWNyb3NlY29uZHMiLCAiIiwgIiVkIiwKKwkJICZtYXhfbGF0ZW5jeSwgMCwgT01OSV9XQU5UX1NUQVRTLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFA1MF9MQVRFTkNZLCAiNTB0aCIsICJQZXJjZW50aWxlIiwgIkxhdGVuY3kiLCAiTWljcm9zZWNvbmRzIiwKKwkJICIlZCIsICZwNTBfbGF0ZW5jeSwgMCwgT01OSV9XQU5UX1NUQVRTLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFA5MF9MQVRFTkNZLCAiOTB0aCIsICJQZXJjZW50aWxlIiwgIkxhdGVuY3kiLCAiTWljcm9zZWNvbmRzIiwKKwkJICIlZCIsICZwOTBfbGF0ZW5jeSwgMCwgT01OSV9XQU5UX1NUQVRTLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFA5OV9MQVRFTkNZLCAiOTl0aCIsICJQZXJjZW50aWxlIiwgIkxhdGVuY3kiLCAiTWljcm9zZWNvbmRzIiwKKwkJICIlZCIsICZwOTlfbGF0ZW5jeSwgMCwgT01OSV9XQU5UX1NUQVRTLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KE1FQU5fTEFURU5DWSwgIk1lYW4iLCAiTGF0ZW5jeSIsICJNaWNyb3NlY29uZHMiLCAiIiwgIiUuMmYiLAorCQkgJm1lYW5fbGF0ZW5jeSwgMCwgT01OSV9XQU5UX1NUQVRTLCBORVRQRVJGX1RZUEVfRE9VQkxFKTsKKworICBzZXRfb3V0cHV0X2VsdChTVERERVZfTEFURU5DWSwgIlN0ZGRldiIsICJMYXRlbmN5IiwgIk1pY3Jvc2Vjb25kcyIsICIiLAorCQkgIiUuMmYiLCAmc3RkZGV2X2xhdGVuY3ksIDAsIE9NTklfV0FOVF9TVEFUUywgTkVUUEVSRl9UWVBFX0RPVUJMRSk7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfU09DS0VUX1BSSU8sICJMb2NhbCIsICJTb2NrZXQiLCAiUHJpb3JpdHkiLCAiIiwgIiVkIiwKKwkJICZsb2NhbF9zb2NrZXRfcHJpbywgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfU09DS0VUX1BSSU8sICJSZW1vdGUiLCAiU29ja2V0IiwgIlByaW9yaXR5IiwgIiIsICIlZCIKKwkJICwgJnJlbW90ZV9zb2NrZXRfcHJpbywgMSwgMCwgTkVUUEVSRl9UWVBFX0lOVDMyKTsKKworICBzZXRfb3V0cHV0X2VsdChMT0NBTF9TT0NLRVRfVE9TLCAiTG9jYWwiLCAiU29ja2V0IiwgIlRPUyIsICIiLCAiMHglLjJ4IiwKKwkJICZsb2NhbF9zb2NrZXRfdG9zLCAxLCAwLCBORVRQRVJGX1RZUEVfSU5UMzIpOworCisgIHNldF9vdXRwdXRfZWx0KFJFTU9URV9TT0NLRVRfVE9TLCAiUmVtb3RlIiwgIlNvY2tldCIsICJUT1MiLCAiIiwgIjB4JS4yeCIsCisJCSAmcmVtb3RlX3NvY2tldF90b3MsIDEsIDAsIE5FVFBFUkZfVFlQRV9JTlQzMik7CisKKyAgc2V0X291dHB1dF9lbHQoTE9DQUxfQ09OR19DT05UUk9MLCAiTG9jYWwiLCAiQ29uZ2VzdGlvbiIsICJDb250cm9sIiwKKwkJICJBbGdvcml0aG0iLCAiJXMiLCBsb2NhbF9jb25nX2NvbnRyb2wsIDAsCisJCSBPTU5JX1dBTlRfTE9DX0NPTkcsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChSRU1PVEVfQ09OR19DT05UUk9MLCAiUmVtb3RlIiwgIkNvbmdlc3Rpb24iLCAiQ29udHJvbCIsCisJCSAiQWxnb3JpdGhtIiwgIiVzIiwgcmVtb3RlX2NvbmdfY29udHJvbCwgMCwKKwkJIE9NTklfV0FOVF9SRU1fQ09ORywgTkVUUEVSRl9UWVBFX0NIQVIpOworCisgIHNldF9vdXRwdXRfZWx0KExPQ0FMX0ZJTExfRklMRSwgIkxvY2FsIiwgIkZpbGwiLCAiRmlsZSIsICIiLCAiJXMiLAorCQkgbG9jYWxfZmlsbF9maWxlLCAwLCAwLCBORVRQRVJGX1RZUEVfQ0hBUik7CisKKyAgc2V0X291dHB1dF9lbHQoUkVNT1RFX0ZJTExfRklMRSwgIlJlbW90ZSIsICJGaWxsIiwgIkZpbGUiLCAiIiwgIiVzIiwKKwkJIHJlbW90ZV9maWxsX2ZpbGUsIDAsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworICBzZXRfb3V0cHV0X2VsdChPVVRQVVRfRU5ELCAiVGhpcyIsICJJcyIsICJUaGUiLCAiRW5kIiwgIiVzIiwKKwkJIE5VTEwsIDAsIDAsIE5FVFBFUkZfVFlQRV9DSEFSKTsKKworfQorCit2b2lkCitwcmludF9vbW5pX2luaXQoKSB7CisKKyAgaW50IGksajsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCIlcyBlbnRlcmVkXG4iLAorCSAgICBfX0ZVTkNUSU9OX18pOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICAvKiB3aHkgaXMgdGhpcyBiZWZvcmUgdGhlIGlmIHlvdSBhc2s/IGJlY2F1c2Ugc29tZSBvZiB0aGUgb3V0cHV0CisgICAgIHNwZWNpZmllcnMgYXJlIGNoYXIgKiByYXRoZXIgdGhhbiBjaGFyW10gYW5kIHdoZW4gSSB3YW50ZWQgdG8KKyAgICAgc3RhcnQgc2V0dGluZyBvdXRwdXRfZ3JvdXAgZmxhZ3MgSSB3YXMgbmVlZGluZyB0byBjYWxsCisgICAgIHByaW50X29tbmlfaW5pdCgpIGJlZm9yZSB0aGUgY2hhciAqICdzIHdlcmUgbWFsbG9jZWQsIHdoaWNoIG1lYW50CisgICAgIHRoZSBuZXRwZXJmX291dHB1dF9zb3VyY2UgZ290IE5VTEwgcG9pbnRlcnMuICB0aGVyZSBpcworICAgICB1bmRvdWJ0ZWRseSBhIGNsZWFuZXIgd2F5IHRvIGRvIGFsbCB0aGlzLiByYWogMjAxMTA2MjkgKi8KKworICBwcmludF9vbW5pX2luaXRfbGlzdCgpOworCisgIGlmIChwcmludGluZ19pbml0aWFsaXplZCkgcmV0dXJuOworCisgIHByaW50aW5nX2luaXRpYWxpemVkID0gMTsKKworCisgIC8qIGJlbHRzIGFuZCBzdXNwZW5kZXJzICovCisgIGZvciAoaiA9IDA7IGogPCBORVRQRVJGX01BWF9CTE9DS1M7IGorKykKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkVUUEVSRl9PVVRQVVRfTUFYOyBpKyspCisgICAgICBvdXRwdXRfbGlzdFtqXVtpXSA9IE9VVFBVVF9FTkQ7CisKKworICBpZiAob3V0cHV0X3NlbGVjdGlvbl9zcGVjKSB7CisgICAgICBwYXJzZV9vdXRwdXRfc2VsZWN0aW9uKG91dHB1dF9zZWxlY3Rpb25fc3BlYyk7CisgIH0KKyAgZWxzZSB7CisgICAgICBzZXRfb3V0cHV0X2xpc3RfYnlfdGVzdCgpOworICB9CisKK30KKworLyogd2h5PyBiZWNhdXNlIG9uZSBjYW5ub3Qgc2ltcGx5IHBhc3MgYSBwb2ludGVyIHRvIHNucHJpbnRmIC0gd2VsbAorICAgZXhjZXB0IHdoZW4gaXQgaXMgZXhwZWN0aW5nIG9uZS4uLiAqLworaW50CitteV9zbnByaW50ZihjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLCBuZXRwZXJmX291dHB1dF9lbHRfdCAqb3V0cHV0X2VsdCkKK3sKKyAgc3dpdGNoIChvdXRwdXRfZWx0LT5vdXRwdXRfdHlwZSkgeworICBjYXNlIE5FVFBFUkZfVFlQRV9DSEFSOgorICAgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsCisJCSAgICBvdXRwdXRfZWx0LT5mb3JtYXQsCisJCSAgICAoY2hhciAqKW91dHB1dF9lbHQtPmRpc3BsYXlfdmFsdWUpOworICAgIGJyZWFrOworICBjYXNlIE5FVFBFUkZfVFlQRV9JTlQzMjoKKyAgICByZXR1cm4gc25wcmludGYoYnVmZmVyLCBzaXplLAorCQkgICAgb3V0cHV0X2VsdC0+Zm9ybWF0LAorCQkgICAgKihpbnQgKikob3V0cHV0X2VsdC0+ZGlzcGxheV92YWx1ZSkpOworICAgIGJyZWFrOworICBjYXNlIE5FVFBFUkZfVFlQRV9VSU5UMzI6CisgICAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwKKwkJICAgIG91dHB1dF9lbHQtPmZvcm1hdCwKKwkJICAgICoodW5zaWduZWQgaW50ICopKG91dHB1dF9lbHQtPmRpc3BsYXlfdmFsdWUpKTsKKyAgICBicmVhazsKKyAgY2FzZSBORVRQRVJGX1RZUEVfSU5UNjQ6CisgICAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwKKwkJICAgIG91dHB1dF9lbHQtPmZvcm1hdCwKKwkJICAgICoobG9uZyBsb25nICopKG91dHB1dF9lbHQtPmRpc3BsYXlfdmFsdWUpKTsKKyAgICBicmVhazsKKyAgY2FzZSBORVRQRVJGX1RZUEVfVUlOVDY0OgorICAgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsCisJCSAgICBvdXRwdXRfZWx0LT5mb3JtYXQsCisJCSAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKShvdXRwdXRfZWx0LT5kaXNwbGF5X3ZhbHVlKSk7CisgICAgYnJlYWs7CisgIGNhc2UgTkVUUEVSRl9UWVBFX0ZMT0FUOgorICAgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsCisJCSAgICBvdXRwdXRfZWx0LT5mb3JtYXQsCisJCSAgICAqKGZsb2F0ICopKG91dHB1dF9lbHQtPmRpc3BsYXlfdmFsdWUpKTsKKyAgICBicmVhazsKKyAgY2FzZSBORVRQRVJGX1RZUEVfRE9VQkxFOgorICAgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsCisJCSAgICBvdXRwdXRfZWx0LT5mb3JtYXQsCisJCSAgICAqKGRvdWJsZSAqKShvdXRwdXRfZWx0LT5kaXNwbGF5X3ZhbHVlKSk7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgZnByaW50ZihzdGRlcnIsCisJICAgICJVbmtub3duL3Vuc3VwcG9ydGVkIG91dHB1dF9lbHQgb3V0cHV0X3R5cGUgb2YgJWRcbiIsCisJICAgIG91dHB1dF9lbHQtPm91dHB1dF90eXBlKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBleGl0KC0xKTsKKyAgfQorfQorCit2b2lkCitwcmludF9vbW5pX2NzdigpCit7CisKKyAgaW50IGksaixrLGJ1Zmxlbix2YWxsZW47CisKKyAgY2hhciAqaGRyMSA9IE5VTEw7CisgIGNoYXIgKnZhbDEgPSBOVUxMOworICBjaGFyICpoMSA9IE5VTEw7CisgIGNoYXIgKnYxID0gTlVMTDsKKyAgY2hhciB0bXB2YWxbMTAyNF07CisKKyAgYnVmbGVuID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IE5FVFBFUkZfTUFYX0JMT0NLUzsgaSsrKSB7CisgICAgZm9yIChqID0gMDsKKwkgKChqIDwgTkVUUEVSRl9PVVRQVVRfTUFYKSAmJgorCSAgKG91dHB1dF9saXN0W2ldW2pdICE9IE9VVFBVVF9FTkQpKTsKKwkgaisrKSB7CisgICAgICBpZiAoKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0uZm9ybWF0ICE9IE5VTEwpICYmCisJICAobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5kaXNwbGF5X3ZhbHVlICE9IE5VTEwpKSB7CisJdmFsbGVuID0KKwkgIG15X3NucHJpbnRmKHRtcHZhbCwKKwkJICAgICAgMTAyNCwKKwkJICAgICAgJihuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dKSk7CisJaWYgKHZhbGxlbiA9PSAtMSkgeworCSAgZnByaW50Zih3aGVyZSwibXlfc25wcmludGYgZmFpbGVkIG9uICVzIHdpdGggZm9ybWF0ICVzXG4iLAorCQkgIG5ldHBlcmZfb3V0cHV0X2VudW1fdG9fc3RyKGopLAorCQkgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0uZm9ybWF0KTsKKwkgIGZmbHVzaCh3aGVyZSk7CisJfQorCXZhbGxlbiArPSAxOyAvKiBmb3JnZXQgbm90IHRoZSB0ZXJtaW5hdG9yICovCisgICAgICB9CisgICAgICBlbHNlCisJdmFsbGVuID0gMDsKKworICAgICAgaWYgKHZhbGxlbiA+CisJICBuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLnRvdF9saW5lX2xlbikKKwluZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLnRvdF9saW5lX2xlbiA9IHZhbGxlbjsKKworICAgICAgYnVmbGVuICs9CisJbmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS50b3RfbGluZV9sZW47CisgICAgfQorICB9CisKKyAgaWYgKHByaW50X2hlYWRlcnMpIGhkcjEgPSBtYWxsb2MoYnVmbGVuICsgMSk7CisgIHZhbDEgPSBtYWxsb2MoYnVmbGVuICsgMSk7CisKKyAgaWYgKCgoaGRyMSA9PSBOVUxMKSAmJiAocHJpbnRfaGVhZGVycykpIHx8CisgICAgICAodmFsMSA9PSBOVUxMKSkgeworICAgIGZwcmludGYod2hlcmUsInVuYWJsZSB0byBhbGxvY2F0ZSBvdXRwdXQgYnVmZmVyc1xuIik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICBleGl0KC0xKTsKKyAgfQorCisgIGlmIChwcmludF9oZWFkZXJzKSBtZW1zZXQoaGRyMSwnICcsYnVmbGVuICsgMSk7CisgIG1lbXNldCh2YWwxLCcgJyxidWZsZW4gKyAxKTsKKworICAvKiBvc3RlbnNpYmx5LCB3ZSBub3cgImtub3ciIHRoYXQgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgaW4gYWxsIG91cgorICAgICBzdHJpbmdzLCBhbmQgd2UgaGF2ZSBzcGFjZXMgd2hlcmUgd2Ugd2FudCB0aGVtIGV0YyAqLworICBoMSA9IGhkcjE7CisgIHYxID0gdmFsMTsKKyAgZm9yIChpID0gMDsgaSA8IE5FVFBFUkZfTUFYX0JMT0NLUzsgaSsrKSB7CisgICAgZm9yIChqID0gMDsKKwkgKChqIDwgTkVUUEVSRl9PVVRQVVRfTUFYKSAmJgorCSAgKG91dHB1dF9saXN0W2ldW2pdICE9IE9VVFBVVF9FTkQpKTsKKwkgaisrKSB7CisgICAgICBpbnQgbGVuOworICAgICAgbGVuID0gMDsKKyAgICAgIGlmIChwcmludF9oZWFkZXJzKSB7CisJZm9yIChrID0gMDsgKChrIDwgNCkgJiYKKwkJICAgICAoTlVMTCAhPQorCQkgICAgICBuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLmxpbmVba10pICYmCisJCSAgICAgKHN0cmNtcCgiIixuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLmxpbmVba10pKSk7IGsrKykgeworCisJICBsZW4gPSBzcHJpbnRmKGgxLAorCQkJIiVzIiwKKwkJCW5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0ubGluZVtrXSk7CisJICAqKGgxICsgbGVuKSA9ICcgJzsKKwkgIC8qIG5vdyBtb3ZlIHRvIHRoZSBuZXh0IHN0YXJ0aW5nIGNvbHVtbi4gZm9yIGNzdiB3ZSBhcmVuJ3Qgd29ycmllZAorCSAgICAgYWJvdXQgYWxpZ25tZW50IGJldHdlZW4gdGhlIGhlYWRlciBhbmQgdGhlIHZhbHVlIGxpbmVzICovCisJICBoMSArPSBsZW4gKyAxOworCX0KKwkqKGgxIC0gMSkgPSAnLCc7CisgICAgICB9CisgICAgICBpZiAoKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0uZm9ybWF0ICE9IE5VTEwpICYmCisJICAobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5kaXNwbGF5X3ZhbHVlICE9IE5VTEwpKSB7CisJLyogdG90X2xpbmVfbGVuIGlzIGJvZ3VzIGhlcmUsIGJ1dCBzaG91bGQgYmUgIk9LIiA/ICovCisJbGVuID0gbXlfc25wcmludGYodjEsCisJCQkgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0udG90X2xpbmVfbGVuLAorCQkJICAmKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0pKTsKKworCS8qIG51a2UgdGhlIHRyYWlsaW5nIFxuIiBmcm9tIHRoZSBzdHJpbmcgcm91dGluZS4gICovCisJKih2MSArIGxlbikgPSAnLCc7CisJdjEgKz0gbGVuICsgMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworCS8qIHdlIG5lZWQgYSAnLCcgZXZlbiBpZiB0aGVyZSBpcyBubyB2YWx1ZSAqLworCSp2MSA9ICcsJzsKKwl2MSArPSAyOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qIG9rLCBfbm93XyBudWxsIHRlcm1pbmF0ZSBlYWNoIGxpbmUgYnkgbnVraW5nIHRoZSBsYXN0IGNvbW1hLiAgZG8KKyAgICAgd2UgaGF2ZSBhbiBPQk9CIGhlcmU/ICovCisgIGlmIChwcmludF9oZWFkZXJzKSAqKGgxLTEpID0gMDsKKyAgKih2MS0xKSA9IDA7CisgIC8qIGFuZCBub3cgc3BpdCBpdCBvdXQsIGJ1dCBvbmx5IGlmIGl0IGlzIGdvaW5nIHRvIGhhdmUgc29tZXRoaW5nCisgICAgIGluIGl0LiB3ZSBkb24ndCB3YW50IGEgYnVuY2ggb2YgYmxhbmsgbGluZXMgb3IgbnVsbHMuLi4gICovCisgIGlmIChvdXRwdXRfbGlzdFswXVswXSAhPSBPVVRQVVRfRU5EKSB7CisgICAgaWYgKHByaW50X2hlYWRlcnMpIHByaW50ZigiJXNcbiIsaGRyMSk7CisgICAgcHJpbnRmKCIlc1xuIix2YWwxKTsKKyAgfQorCisgIGlmIChoZHIxICE9IE5VTEwpIGZyZWUoaGRyMSk7CisgIGlmICh2YWwxICE9IE5VTEwpIGZyZWUodmFsMSk7CisKK30KKwordm9pZAorcHJpbnRfb21uaV9rZXl3b3JkKCkKK3sKKyAgLyogdGhpcyBvbmUgc2hvdWxkIGJlIHRoZSBzaW1wbGVzdCBvZiBhbGwgLSBubyBidWZmZXJzIHRvIGFsbG9jYXRlLAorICAgICBqdXN0IHNwaXQgaXQgYWxsIG91dC4gcmFqIDIwMDgwODA1ICovCisKKyAgaW50IGksajsKKyAgY2hhciB0bXB2YWxbMTAyNF07CisgIGludCB2YWxsZW47CisKKyAgZm9yIChpID0gMDsgaSA8IE5FVFBFUkZfTUFYX0JMT0NLUzsgaSsrKSB7CisgICAgZm9yIChqID0gMDsKKwkgKChqIDwgTkVUUEVSRl9PVVRQVVRfTUFYKSAmJgorCSAgKG91dHB1dF9saXN0W2ldW2pdICE9IE9VVFBVVF9FTkQpKTsKKwkgaisrKSB7CisgICAgICBpZiAoKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0uZm9ybWF0ICE9IE5VTEwpICYmCisJICAobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5kaXNwbGF5X3ZhbHVlICE9IE5VTEwpKSB7CisJdmFsbGVuID0KKwkgIG15X3NucHJpbnRmKHRtcHZhbCwKKwkJICAgICAgMTAyNCwKKwkJICAgICAgJihuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dKSk7CisJaWYgKHZhbGxlbiA9PSAtMSkgeworCSAgc25wcmludGYodG1wdmFsLAorCQkgICAxMDI0LAorCQkgICAibXlfc25wcmludGYgZmFpbGVkIHdpdGggZm9ybWF0ICVzXG4iLAorCQkgICBuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLmZvcm1hdCk7CisJfQorCWZwcmludGYod2hlcmUsCisJCSIlcz0lc1xuIixuZXRwZXJmX291dHB1dF9lbnVtX3RvX3N0cihvdXRwdXRfbGlzdFtpXVtqXSksCisJCXRtcHZhbCk7CisgICAgICB9CisgICAgfQorICB9CisgIGZmbHVzaCh3aGVyZSk7Cit9CisKK3ZvaWQKK3ByaW50X29tbmlfaHVtYW4oKQoreworCisgIGludCBpLGosayxidWZsZW4sYnVmbGVuX21heDsKKworICBjaGFyICpoZHJbNF07CisgIGNoYXIgKnZhbDEgPSBOVUxMOworICBjaGFyIHRtcHZhbFsxMDI0XTsgIC8qIGV4Y2Vzc2l2ZSwgYnV0IHdlIG1heSBoYXZlIHRoZSBjb21tYW5kIGxpbmUgKi8KKyAgaW50ICB2YWxsZW47CisKKyAgZm9yIChrID0gMDsgayA8IDQ7IGsgKyspIHsKKyAgICBoZHJba10gPSBOVUxMOworICB9CisKKyAgLyogZGVjaXNpb25zLCBkZWNpc2lvbnMuLi4gd2FsayB0aGUgbGlzdCB0d2ljZSB0byBvbmx5IG5lZWQgdG8KKyAgICAgYWxsb2NhdGUgdGhlIGNoYXJjdGVyIGJ1ZmZlcnMgb25jZSwgb3Igd2FsayBpdCBvbmNlIGFuZCBwb3NzaWJseQorICAgICByZWFsbG9jYXRlIHRoZW0gYXMgSSBnby4uLiBvaCwgbGV0cyB3YWxrIGl0IHR3aWNlIGp1c3QgZm9yIGZ1biB0bworICAgICBzdGFydC4gc2luY2Ugb25seSBub3cgZG8gd2Uga25vdyB0aGF0IHRoZSB2YWx1ZXMgYXJlIGFyb3VuZCB0byBiZQorICAgICBwcmludGVkLCB3ZSBzaG91bGQgdHJ5IHRoZSBzbnByaW50ZiBmb3IgdGhlIHZhbHVlIGFuZCBzZWUgaG93CisgICAgIG11Y2ggc3BhY2UgaXQgd2FudHMgYW5kIHVwZGF0ZSBtYXhfbGluZV9sZW4gYWNjb3JkaW5nbHkgKi8KKyAgYnVmbGVuX21heCA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCBORVRQRVJGX01BWF9CTE9DS1M7IGkrKykgeworICAgIGJ1ZmxlbiA9IDA7CisgICAgZm9yIChqID0gMDsKKwkgKChqIDwgTkVUUEVSRl9PVVRQVVRfTUFYKSAmJgorCSAgKG91dHB1dF9saXN0W2ldW2pdICE9IE9VVFBVVF9FTkQpKTsKKwkgaisrKSB7CisgICAgICBpZiAoKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0uZm9ybWF0ICE9IE5VTEwpICYmCisJICAobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5kaXNwbGF5X3ZhbHVlICE9CisJICAgTlVMTCkpCisJLyogbmVlZCB0byBjb3VudCB0aGUgXG4gKi8KKwl2YWxsZW4gPSBteV9zbnByaW50Zih0bXB2YWwsCisJCQkgICAgIDEwMjQsCisJCQkgICAgICYobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXSkpICsgMTsKKyAgICAgIGVsc2UKKwl2YWxsZW4gPSAwOworCisgICAgICBpZiAodmFsbGVuID4KKwkgIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0ubWF4X2xpbmVfbGVuKQorCW5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0ubWF4X2xpbmVfbGVuID0gdmFsbGVuOworCisgICAgICBidWZsZW4gKz0KKwluZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLm1heF9saW5lX2xlbiArIDE7CisgICAgfQorCisgICAgaWYgKGJ1ZmxlbiA+IGJ1Zmxlbl9tYXgpCisgICAgICBidWZsZW5fbWF4ID0gYnVmbGVuOworICB9CisKKyAgLyogbW9yZSBiZWx0cyBhbmQgc3VzcGVuZGVycyAqLworICBmb3IgKGsgPSAwOyAoayA8IDQpICYmIChwcmludF9oZWFkZXJzKTsgaysrKSB7CisgICAgaGRyW2tdID0gbWFsbG9jKGJ1Zmxlbl9tYXgrMSk7CisgIH0KKyAgdmFsMSA9IG1hbGxvYyhidWZsZW5fbWF4KzEpOworCisgIC8qIHdlIGNvdWxkIHByb2JhYmx5IGJlIG1vcmUgc3VjY2luY3QgaGVyZSBidXQgcGVyaGFwcyB0aGUgY29tcGlsZXIKKyAgICAgY2FuIGZpZ3VyZSB0aGF0IG91dCBmb3IgdXMgOikgKi8KKyAgZm9yIChrID0gMDsgKGsgPCA0KSAmJiAocHJpbnRfaGVhZGVycyk7IGsrKykgeworICAgIGlmIChoZHJba10gPT0gTlVMTCkgeworICAgICAgZnByaW50Zih3aGVyZSwiVW5hYmxlIHRvIGFsbG9jYXRlIG91dHB1dCBidWZmZXJzXG4iKTsKKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgICBleGl0KC0xKTsKKyAgICB9CisgIH0KKworICAvKiBvc3RlbnNpYmx5LCB3ZSBub3cgImtub3ciIHRoYXQgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgaW4gYWxsIG91cgorICAgICBzdHJpbmdzLCBhbmQgd2UgaGF2ZSBzcGFjZXMgd2hlcmUgd2Ugd2FudCB0aGVtIGV0YyAqLworICBmb3IgKGkgPSAwOyBpIDwgTkVUUEVSRl9NQVhfQkxPQ0tTOyBpKyspIHsKKyAgICBjaGFyICpoWzRdOworICAgIGNoYXIgKnYxID0gdmFsMTsKKworICAgIGZvciAoayA9IDA7IGsgPCA0OyBrKyspIGhba10gPSBoZHJba107CisKKyAgICAvKiB3ZSB3YW50IHRvIGJsYW5rIHRoaW5ncyBvdXQgZWFjaCB0aW1lIHNpbmNlIHdlIHNraXAgYXJvdW5kIGEgbG90ICovCisgICAgZm9yIChrID0gMDsgKGsgPCA0KSAmJiAocHJpbnRfaGVhZGVycyk7IGsrKykgeworICAgICAgbWVtc2V0KGhkcltrXSwnICcsYnVmbGVuX21heCsxKTsKKyAgICB9CisgICAgbWVtc2V0KHZhbDEsJyAnLGJ1Zmxlbl9tYXgrMSk7CisKKworICAgIGZvciAoaiA9IDA7CisJICgoaiA8IE5FVFBFUkZfT1VUUFVUX01BWCkgJiYKKwkgIChvdXRwdXRfbGlzdFtpXVtqXSAhPSBPVVRQVVRfRU5EKSk7CisJIGorKykgeworICAgICAgaWYgKHByaW50X2hlYWRlcnMpIHsKKwlmb3IgKGsgPSAwOyBrIDwgNDsgaysrKSB7CisJICBtZW1jcHkoaFtrXSwKKwkJIG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0ubGluZVtrXSwKKwkJIHN0cmxlbihuZXRwZXJmX291dHB1dF9zb3VyY2Vbb3V0cHV0X2xpc3RbaV1bal1dLmxpbmVba10pKTsKKwl9CisgICAgICB9CisgICAgICBpZiAoKG5ldHBlcmZfb3V0cHV0X3NvdXJjZVtvdXRwdXRfbGlzdFtpXVtqXV0uZm9ybWF0ICE9IE5VTEwpICYmCisJICAobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5kaXNwbGF5X3ZhbHVlICE9IE5VTEwpKSB7CisJaW50IGxlbjsKKwlsZW4gPSBteV9zbnByaW50Zih2MSwKKwkJCSAgbmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5tYXhfbGluZV9sZW4sCisJCQkgICYobmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXSkpOworCS8qIG51a2UgdGhlIHRyYWlsaW5nIFxuIiBmcm9tIHRoZSBzdHJpbmcgcm91dGluZS4gICovCisJKih2MSArIGxlbikgPSAnICc7CisgICAgICB9CisgICAgICAvKiBub3cgbW92ZSB0byB0aGUgbmV4dCBzdGFydGluZyBjb2x1bW4gKi8KKyAgICBmb3IgKGsgPSAwOyAoayA8IDQpICYmIChwcmludF9oZWFkZXJzKTsgaysrKSB7CisJaFtrXSArPQorCSAgbmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5tYXhfbGluZV9sZW4gKyAxOworICAgICAgfQorICAgICAgdjEgKz0gbmV0cGVyZl9vdXRwdXRfc291cmNlW291dHB1dF9saXN0W2ldW2pdXS5tYXhfbGluZV9sZW4gKyAxOworICAgIH0KKyAgICAvKiBvaywgX25vd18gbnVsbCB0ZXJtaW5hdGUgZWFjaCBsaW5lLiAgZG8gd2UgaGF2ZSBhbiBPQk9CIGhlcmU/ICovCisgICAgZm9yIChrID0gMDsgKGsgPCA0KSAmJiAocHJpbnRfaGVhZGVycyk7IGsrKykgeworICAgICAgKmhba10gPSAwOworICAgIH0KKyAgICAqdjEgPSAwOworICAgIC8qIGFuZCBub3cgc3BpdCBpdCBvdXQsIGJ1dCBvbmx5IGlmIGl0IGlzIGdvaW5nIHRvIGhhdmUgc29tZXRoaW5nCisgICAgICAgaW4gaXQuIHdlIGRvbid0IHdhbnQgYSBidW5jaCBvZiBibGFuayBsaW5lcyBvciBudWxscy4uLiBhdCBzb21lCisgICAgIHBvaW50IHdlIG1pZ2h0IHdhbnQgdG8gd29yayBiYWNrd2FyZHMgY29sbGFwc2luZSB3aGl0ZXNwYWNlIGZyb20KKyAgICAgdGhlIHJpZ2h0IGJ1dCBmb3Igbm93LCB3ZSB3b24ndCBib3RoZXIgKi8KKyAgICBpZiAob3V0cHV0X2xpc3RbaV1bMF0gIT0gT1VUUFVUX0VORCkgeworICAgICAgaWYgKGkgPiAwKSBwcmludGYoIlxuIik7IC8qIHdlIHdhbnQgYSBibGFuayBsaW5lIGJldHdlZW4gYmxvY2tzID8gKi8KKyAgICAgIGZvciAoayA9IDA7IChrIDwgNCkgJiYgKHByaW50X2hlYWRlcnMpOyBrKyspIHsKKwlwcmludGYoIiVzXG4iLGhkcltrXSk7CisgICAgICB9CisgICAgICBwcmludGYoIiVzXG4iLHZhbDEpOworICAgIH0KKyAgfTsKKyAgZm9yIChrID0gMDsgayA8IDQ7IGsrKykgeworICAgIGlmIChoZHJba10gIT0gTlVMTCkgZnJlZShoZHJba10pOworICB9Cit9CisKK3ZvaWQKK3ByaW50X29tbmkoKQoreworCisgIHByaW50X29tbmlfaW5pdCgpOworCisgIGlmIChkZWJ1ZyA+IDIpCisgICAgZHVtcF9uZXRwZXJmX291dHB1dF9zb3VyY2Uod2hlcmUpOworCisgIHN3aXRjaCAobmV0cGVyZl9vdXRwdXRfbW9kZSkgeworICBjYXNlIENTVjoKKyAgICBwcmludF9vbW5pX2NzdigpOworICAgIGJyZWFrOworICBjYXNlIEtFWVZBTDoKKyAgICBwcmludF9vbW5pX2tleXdvcmQoKTsKKyAgICBicmVhazsKKyAgY2FzZSBIVU1BTjoKKyAgICBwcmludF9vbW5pX2h1bWFuKCk7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgZnByaW50Zih3aGVyZSwiWW8gUmljayEgVGhlcmUgaXMgYSBidWcgaW4gbmV0cGVyZl9vdXRwdXRfbW9kZSFcbiIpOworICAgIGZmbHVzaCh3aGVyZSk7CisgICAgZXhpdCgtMSk7CisgIH0KKworfQorLyogZm9yIHRoZSBuZXh0IGZldyByb3V0aW5lcyAoY29ubmVjdCwgYWNjZXB0LCBzZW5kLCByZWN2LAorICAgZGlzY29ubmVjdC9jbG9zZSkgd2Ugd2lsbCB1c2UgYSByZXR1cm4gb2YgLTEgdG8gbWVhbiB0aW1lcyB1cCwgLTIKKyAgIHRvIG1lYW4gYSB0cmFuc2llbnQgZXJyb3IgKGVnIEVOT0JVRlMgb24gYSBVRFAgc2VuZCBjYWxsKSBhbmQgLTMgdG8KKyAgIG1lYW4gaGFyZCBlcnJvci4gIHRoaXMgbWVhbnMgaXQgaXMgb2sgZm9yIHRoZSBjb25uZWN0IHJvdXRpbmUgdG8KKyAgIHJldHVybiBhIDAgKHplcm8pIGlmIHRoYXQgaGFwcGVucyB0byBiZSB0aGUgZmQvU09DS0VUIHdlIGdldCBhbmQgaW4KKyAgIHRoZW9yeSB3ZSB3aWxsIGJlIGFibGUgdG8gc3VwcG9ydCB6ZXJvLWxlbmd0aCBtZXNzYWdlcyBvbiB0aG9zZQorICAgcHJvdG9jb2xzIHdoaWNoIHN1cHBvcnQgaXQuICBhbGwgaW4gdGhlb3J5IG9mIGNvdXJzZS4gcmFqCisgICAyMDA4LTAxLTA5ICovCisKK2ludAorY29ubmVjdF9kYXRhX3NvY2tldChTT0NLRVQgc2VuZF9zb2NrZXQsIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlcywgaW50IGRvbnRfZ2l2ZV91cCkKK3sKKyAgaW50IHJldDsKKworICAvKiBDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQgICovCisgIGlmICgocmV0ID0gY29ubmVjdChzZW5kX3NvY2tldCwKKwkJICAgICByZW1vdGVfcmVzLT5haV9hZGRyLAorCQkgICAgIHJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pKSA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgIGlmIChTT0NLRVRfRUlOVFIocmV0KSkgIHsKKyAgICAgIC8qIHdlIGludGVycHJldCB0aGlzIHRvIG1lYW4gdGhhdCB0aGUgdGVzdCBpcyBzdXBwb3NlZCB0byBiZQorCSBvdmVyLCBzbyByZXR1cm4gYSB2YWx1ZSBvZiAtMSB0byB0aGUgY2FsbGVyICovCisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICgoU09DS0VUX0VBRERSSU5VU0UocmV0KSkgfHwgU09DS0VUX0VBRERSTk9UQVZBSUwocmV0KSB8fCBkb250X2dpdmVfdXApIHsKKyAgICAgIC8qIGxpa2VseSBzb21ldGhpbmcgb3VyIGV4cGxpY2l0IGJpbmQoKSB3b3VsZCBoYXZlIGNhdWdodCBpbgorCSB0aGUgcGFzdCwgc28gZ28gZ2V0IGFub3RoZXIgcG9ydCwgdmlhIGNyZWF0ZV9kYXRhX3NvY2tldC4KKwkgeWVzLCB0aGlzIGlzIGEgYml0IG1vcmUgb3ZlcmhlYWQgdGhhbiBiZWZvcmUsIGJ1dCB0aGUKKwkgY29uZGl0aW9uIHNob3VsZCBiZSByYXRoZXIgcmFyZS4gd2Ugb25seSBnZXQgYSBuZXcgcG9ydCBpZgorCSB0aGlzIHdhcyBhIGNvbm5lY3Rpb24taW5jbHVkaW5nIHRlc3QgbGlrZSBUQ1BfQ1JSIG9yCisJIFRDUF9DQy4gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gcmV0dXJuIGFuIGVycm9yLiByYWoKKwkgMjAwOC0wMS0wOCAqLworICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBlbHNlCisgICAgICAvKiAtMyBtZWFucyB0aGVyZSB3YXMgYW4gZXJyb3IgKi8KKyAgICAgIHJldHVybiAtMzsKKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljCitpbnQgc2VuZF9wa3RpbmZvKFNPQ0tFVCBkYXRhX3NvY2tldCwgY2hhciAqYnVmZmVyLCBpbnQgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmRlc3RpbmF0aW9uLCBpbnQgZGVzdGxlbikgeworI2lmZGVmIElQX1BLVElORk8KKyAgc3RydWN0IG1zZ2hkciBtc2c7CisgIHN0cnVjdCBpb3ZlYyBpb3ZlY1sxXTsKKyAgY2hhciBtc2dfY29udHJvbFs1MTJdOworICBzdHJ1Y3QgY21zZ2hkciAqY21zZzsKKyAgaW50IGNtc2dfc3BhY2UgPSAwOworCisgIGlvdmVjWzBdLmlvdl9iYXNlID0gYnVmZmVyOworICBpb3ZlY1swXS5pb3ZfbGVuID0gbGVuOworICBtc2cubXNnX25hbWUgPSBkZXN0aW5hdGlvbjsKKyAgbXNnLm1zZ19uYW1lbGVuID0gZGVzdGxlbjsKKyAgbXNnLm1zZ19pb3YgPSBpb3ZlYzsKKyAgbXNnLm1zZ19pb3ZsZW4gPSAxOworICBtc2cubXNnX2NvbnRyb2wgPSBtc2dfY29udHJvbDsKKyAgbXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKG1zZ19jb250cm9sKTsKKyAgbXNnLm1zZ19mbGFncyA9IDA7CisKKyAgY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7CisgIGlmIChoYXZlX3BrdGluZm8pIHsKKyAgICBjbXNnLT5jbXNnX2xldmVsID0gSVBQUk9UT19JUDsKKyAgICBjbXNnLT5jbXNnX3R5cGUgPSBJUF9QS1RJTkZPOworICAgIGNtc2ctPmNtc2dfbGVuID0gQ01TR19MRU4oc2l6ZW9mKGluX3BrdGluZm8pKTsKKyAgICAqKHN0cnVjdCBpbl9wa3RpbmZvKilDTVNHX0RBVEEoY21zZykgPSBpbl9wa3RpbmZvOworICAgIGNtc2dfc3BhY2UgKz0gQ01TR19TUEFDRShzaXplb2YoaW5fcGt0aW5mbykpOworICB9CisgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNtc2dfc3BhY2U7CisgIHJldHVybiBzZW5kbXNnKGRhdGFfc29ja2V0LCAmbXNnLCAwKTsKKyNlbHNlCisgIHJldHVybiAtMTsKKyNlbmRpZiAvKiBJUF9QS1RJTkZPICovCit9CisKKworaW50CitzZW5kX2RhdGEoU09DS0VUIGRhdGFfc29ja2V0LCBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZywgdWludDMyX3QgYnl0ZXNfdG9fc2VuZCwgc3RydWN0IHNvY2thZGRyICpkZXN0aW5hdGlvbiwgaW50IGRlc3RsZW4sIGludCBwcm90b2NvbCkgeworCisgIGludCBsZW47CisKKyAgLyogaWYgdGhlIHVzZXIgaGFzIHN1cHBsaWVkIGEgZGVzdGluYXRpb24sIHdlIHVzZSBzZW5kdG8sIG90aGVyd2lzZQorICAgICB3ZSB1c2Ugc2VuZC4gIHdlIGFzcy11LW1lIGJsb2NraW5nIG9wZXJhdGlvbnMgYWx3YXlzLCBzbyBubyBuZWVkCisgICAgIHRvIGNoZWNrIGZvciBlYWdhaW4gb3IgdGhlIGxpa2UuICovCisKKyAgaWYgKGRlYnVnID4gMikgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlcyBzb2NrICVkLCByaW5nIGVsdCAlcCwgYnl0ZXMgJWQsIGRlc3QgJXAsIGxlbiAlZFxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBkYXRhX3NvY2tldCwKKwkgICAgc2VuZF9yaW5nLAorCSAgICBieXRlc190b19zZW5kLAorCSAgICBkZXN0aW5hdGlvbiwKKwkgICAgZGVzdGxlbik7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIGlmIChkZXN0aW5hdGlvbikgeworICAgIGlmIChoYXZlX3BrdGluZm8pIHsKKyAgICAgIGxlbiA9IHNlbmRfcGt0aW5mbyhkYXRhX3NvY2tldCwKKwkJCSBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCisJCQkgYnl0ZXNfdG9fc2VuZCwKKwkJCSBkZXN0aW5hdGlvbiwKKwkJCSBkZXN0bGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBsZW4gPSBzZW5kdG8oZGF0YV9zb2NrZXQsCisJCSAgIHNlbmRfcmluZy0+YnVmZmVyX3B0ciwKKwkJICAgYnl0ZXNfdG9fc2VuZCwKKyNpZiBkZWZpbmVkKE1TR19GQVNUT1BFTikKKwkJICAgKHVzZV9mYXN0b3BlbiAmJiBwcm90b2NvbCA9PSBJUFBST1RPX1RDUCkgPyBNU0dfRkFTVE9QRU4gOiAwLAorI2Vsc2UKKwkJICAgMCwKKyNlbmRpZgorCQkgICBkZXN0aW5hdGlvbiwKKwkJICAgZGVzdGxlbik7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGlmICghdXNlX3dyaXRlKSB7CisgICAgICBsZW4gPSBzZW5kKGRhdGFfc29ja2V0LAorCQkgc2VuZF9yaW5nLT5idWZmZXJfcHRyLAorCQkgYnl0ZXNfdG9fc2VuZCwKKwkJIDApOworICAgIH0KKyAgICBlbHNlIHsKKyNpZm5kZWYgV0lOMzIKKyAgICAgIGxlbiA9IHdyaXRlKGRhdGFfc29ja2V0LAorCQkgIHNlbmRfcmluZy0+YnVmZmVyX3B0ciwKKwkJICBieXRlc190b19zZW5kKTsKKyNlbHNlCisgICAgICBmcHJpbnRmKHdoZXJlLCJJJ20gc29ycnkgRGF2ZSBJIGNhbm5vdCB3cml0ZSgpIHVuZGVyIFdpbmRvd3NcbiIpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICAgIHJldHVybiAtMzsKKyNlbmRpZgorICAgIH0KKyAgfQorICBpZihsZW4gIT0gYnl0ZXNfdG9fc2VuZCkgeworICAgIC8qIGRvbid0IGZvcmdldCB0aGF0IHNvbWUgcGxhdGZvcm1zIG1heSBkbyBhIHBhcnRpYWwgc2VuZCB1cG9uCisgICAgICAgcmVjZWlwdCBvZiB0aGUgaW50ZXJydXB0IGFuZCBub3QgcmV0dXJuIGFuIEVJTlRSLi4uICovCisgICAgaWYgKFNPQ0tFVF9FSU5UUihsZW4pIHx8IChsZW4gPj0gMCkpCisgICAgICB7CisJLyogd2UgaGl0IHRoZSBlbmQgb2YgYSAgdGltZWQgdGVzdC4gKi8KKwlyZXR1cm4gLTE7CisgICAgICB9CisgICAgLyogaWYgdGhpcyBpcyBVRFAgaXQgaXMgcG9zc2libGUgdG8gcmVjZWl2ZSBhbiBFTk9CVUZTIG9uIHRoZSBzZW5kCisgICAgICAgY2FsbCBhbmQgaXQgd291bGQgbm90IGJlIGEgZmF0YWwgZXJyb3IuICBvZiBjb3Vyc2UgaWYgd2Ugd2VyZQorICAgICAgIHRvIHJldHVybiAwIHRoZW4gaXQgd291bGQgbWFrZSB0aGUgdGVzdCB0aGluayBpdCB3YXMgb3ZlciB3aGVuCisgICAgICAgaXQgcmVhbGx5IHdhc24ndC4gIHRoZSBxdWVzdGlvbiBiZWNvbWVzIHdoYXQgdG8gZG8uICBmb3IgdGhlCisgICAgICAgdGltZSBiZWluZywgdGhlIGFuc3dlciB3aWxsIGxpa2VseSBiZSB0byByZXR1cm4gc29tZXRoaW5nIGxpa2UKKyAgICAgICAtMiB0byBpbmRpY2F0ZSBhIG5vbi1mYXRhbCBlcnJvciBoYXBwZW5lZCBvbiB0aGUgc2VuZCBhbmQgbGV0CisgICAgICAgdGhlIGNhbGxlciBmaWd1cmUgaXQgb3V0IDopIHdlIHdvbid0IGFjdHVhbGx5IGNoZWNrIHRvIHNlZSBpZgorICAgICAgIHRoaXMgaXMgVURQIC0gaXQgaXMgdGhlIGF1dGhvcidzIGV4cGVyaWVuY2UgaW4gbWFueSwgTWFueSwgTUFOWQorICAgICAgIHllYXJzIHRoYXQgdGhlIG9ubHkgdGltZSBhbiBFTk9CVUZTIGhhcyBiZWVuIHJldHVybmVkIGluIGEKKyAgICAgICBuZXRwZXJmIHRlc3QgaGFzIGJlZW4gd2l0aCBVRFAuICBmYW1vdXMgbGFzdCB3b3JkcyA6KSAqLworICAgIGlmIChlcnJubyA9PSBFTk9CVUZTKQorICAgICAgcmV0dXJuIC0yOworICAgIGVsc2UgeworICAgICAgZnByaW50Zih3aGVyZSwiJXM6IGRhdGEgc2VuZCBlcnJvcjogJXMgKGVycm5vICVkKVxuIiwKKwkgICAgICBfX0ZVTkNUSU9OX18sIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworICAgICAgcmV0dXJuIC0zOworICAgIH0KKyAgfQorICByZXR1cm4gbGVuOworfQorCisjaWYgZGVmaW5lZChfX2xpbnV4KQorc3RhdGljIGludAorcmVjdl9kYXRhX25vX2NvcHkoU09DS0VUIGRhdGFfc29ja2V0LCBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZywgdWludDMyX3QgYnl0ZXNfdG9fcmVjdiwgc3RydWN0IHNvY2thZGRyICpzb3VyY2UsIG5ldHBlcmZfc29ja2xlbl90ICpzb3VyY2VsZW4sIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqbnVtX3JlY2VpdmVzKSB7CisKKyNpZm5kZWYgU1BMSUNFX0ZfTU9WRQorIyBkZWZpbmUgU1BMSUNFX0ZfTU9WRSAweDAxCisjZW5kaWYKKyNpZm5kZWYgU1BMSUNFX0ZfTk9OQkxPQ0sKKyMgZGVmaW5lIFNQTElDRV9GX05PTkJMT0NLIDB4MDIKKyNlbmRpZgorCisgIHN0YXRpYyBpbnQgcGZkWzJdID0gey0xLCAtMX07CisgIHN0YXRpYyBpbnQgZmRudWxsID0gLTE7CisKKworICBjaGFyICp0ZW1wX21lc3NhZ2VfcHRyOworICBpbnQgYnl0ZXNfbGVmdDsKKyAgaW50IGJ5dGVzX3JlY3ZkOworICBpbnQgbXlfcmVjdnM7CisgIGludCBteV9mbGFncyA9IFNQTElDRV9GX01PVkUgfCBTUExJQ0VfRl9OT05CTE9DSzsgLyogdmFsdWVzCisJCQkJCQkgICAgICAgc3VnZ2VzdGVkIGJ5CisJCQkJCQkgICAgICAgRXJpYyBEdW1hemV0ICovCisgIGludCByZXQ7CisKKyAgaWYgKHBmZFswXSA9PSAtMSkgeworICAgIGlmIChwaXBlKHBmZCkpIHsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAgIiVzIHBpcGUgY2FsbCBmYWlsZWQgd2l0aCBlcnJubyAlZCAnJXMnXG4iLAorCSAgICAgIF9fRlVOQ1RJT05fXywKKwkgICAgICBlcnJubywKKwkgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgcmV0dXJuIC00OyAgLyogdGhpcyB3aWxsIGNhdXNlIHJlY3ZfZGF0YSB0byBkbyB0aGluZ3MgdGhlCisJCSAgICAgb2xkLWZhc2hpb25lZCB3YXkgZm9yIHRoZSB0ZXN0ICovCisgICAgfQorICAgIGlmICgoZmRudWxsID0gb3BlbigiL2Rldi9udWxsIixPX1dST05MWSkpID09IC0xKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgICIlcyBvcGVuIGNhbGwgZmFpbGVkIHdpdGggZXJybm8gJWQgJyVzJ1xuIiwKKwkgICAgICBfX0ZVTkNUSU9OX18sCisJICAgICAgZXJybm8sCisJICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgIHJldHVybiAtNDsKKyAgICB9CisgIH0gICAgCisKKyAgLyogcmVjZWl2ZSBkYXRhIG9mZiB0aGUgZGF0YV9zb2NrZXQsIGFzcy11LW1lLWluZyBhIGJsb2NraW5nIHNvY2tldAorICAgICBhbGwgdGhlIHdheSEtKSAyMDA4LTAxLTA4ICovCisgIG15X3JlY3ZzID0gMDsKKyAgYnl0ZXNfbGVmdCA9IGJ5dGVzX3RvX3JlY3Y7CisKKyAgaWYgKGRlYnVnID4gMSkgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlcyBzb2NrICVkLCByaW5nIGVsdCAlcCwgYnl0ZXMgJWQsIHNvdXJjZSAlcCwgc3JjbGVuICVkLCBmbGFncyAleCwgbnVtX3JlY3YgJXBcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgZGF0YV9zb2NrZXQsCisJICAgIHJlY3ZfcmluZywKKwkgICAgYnl0ZXNfdG9fcmVjdiwKKwkgICAgc291cmNlLAorCSAgICAoc291cmNlICE9IE5VTEwpID8gKnNvdXJjZWxlbiA6IC0xLAorCSAgICBmbGFncywKKwkgICAgbnVtX3JlY2VpdmVzKTsKKyAgICBmZmx1c2god2hlcmUpOworICB9CisgIGRvIHsKKworICAgIGJ5dGVzX3JlY3ZkID0gc3BsaWNlKGRhdGFfc29ja2V0LAorCQkJIE5VTEwsCisJCQkgcGZkWzFdLAorCQkJIE5VTEwsCisJCQkgYnl0ZXNfbGVmdCwKKwkJCSBteV9mbGFncyk7CisgICAgCisgICAgCisgICAgaWYgKGJ5dGVzX3JlY3ZkID4gMCkgeworICAgICAgLyogcGVyIEVyaWMgRHVtYXpldCwgd2Ugc2hvdWxkIGp1c3QgbGV0IHRoaXMgc2Vjb25kIHNwbGljZSBjYWxsCisJIG1vdmUgYXMgbWFueSBieXRlcyBhcyBpdCBjYW4gYW5kIG5vdCB3b3JyeSBhYm91dCBob3cgbXVjaC4KKwkgdGhpcyBzaG91bGQgbWFrZSB0aGUgY2FsbCBtb3JlIHJvYnVzdCB3aGVuIG1hZGUgb24gYSBzeXN0ZW0KKwkgdW5kZXIgbWVtb3J5IHByZXNzdXJlICovCisgICAgICBzcGxpY2UocGZkWzBdLCBOVUxMLCBmZG51bGwsIE5VTEwsIDEgPDwgMzAsIG15X2ZsYWdzKTsKKyAgICAgIGJ5dGVzX2xlZnQgLT0gYnl0ZXNfcmVjdmQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIG15X3JlY3ZzKys7IC8qIHNob3VsZCB0aGUgcGFpciBvZiBzcGxpY2VzIGNvdW50IGFzIG9uZT8gKi8KKyAgfSB3aGlsZSAoKGJ5dGVzX2xlZnQgPiAwKSAmJiAoZmxhZ3MgJiBORVRQRVJGX1dBSVRBTEwpKTsKKworICAqbnVtX3JlY2VpdmVzID0gbXlfcmVjdnM7CisKKyAgLyogT0ssIHdlIGFyZSBvdXQgb2YgdGhlIGxvb3AgLSBub3cgd2hhdD8gKi8KKyAgaWYgKGJ5dGVzX3JlY3ZkIDwgMCkgeworICAgIC8qIGRpZCB0aGUgdGltZXIgaGl0LCBvciB3YXMgdGhlcmUgYW4gZXJyb3I/ICovCisgICAgaWYgKFNPQ0tFVF9FSU5UUihieXRlc19yZWN2ZCkpCisgICAgICB7CisJLyogV2UgaGl0IHRoZSBlbmQgb2YgYSB0aW1lZCB0ZXN0LiAqLworCXJldHVybiAtMTsKKyAgICAgIH0KKyAgICAvKiBpdCB3YXMgYSBoYXJkIGVycm9yICovCisgICAgcmV0dXJuIC0zOworICB9CisKKworICAvKiB0aGlzIGxvb2tzIGEgbGl0dGxlIGZ1bm55LCBidXQgc2hvdWxkIGJlIGNvcnJlY3QuICBpZiB3ZSBoYWQKKyAgICAgTkVUUEVSRl9XQUlUQUxMIHNldCBhbmQgd2UgZ290IGhlcmUsIGl0IG1lYW5zIHdlIGdvdCBhbGwgdGhlCisgICAgIGJ5dGVzIG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlLiAgb3RoZXJ3aXNlIHdlIHdvdWxkIGhhdmUgaGl0IHRoZQorICAgICBlcnJvciBvciBlbmQgb2YgdGVzdCBjYXNlcy4gIGlmIE5FVFBFUkZfV0FJVEFMTCBpc24ndCBzZXQsIHRoaXMKKyAgICAgaXMgYSBTVFJFQU0gdGVzdCwgYW5kIHdlIHdpbGwgaGF2ZSBvbmx5IG1hZGUgb25lIGNhbGwgdG8gcmVjdiwgc28KKyAgICAgYnl0ZXNfcmVjdmQgd2lsbCBiZSBhY2N1cmF0ZS4gKi8KKyAgaWYgKGJ5dGVzX2xlZnQpCisgICAgcmV0dXJuIGJ5dGVzX3JlY3ZkOworICBlbHNlCisgICAgcmV0dXJuIGJ5dGVzX3RvX3JlY3Y7CisKK30KKworI2VuZGlmCisKK3N0YXRpYworaW50IHJlY3ZfcGt0aW5mbyhTT0NLRVQgZGF0YV9zb2NrZXQsIGNoYXIgKm1lc3NhZ2VfcHRyLCBpbnQgYnl0ZXNfdG9fcmVjdiwgIGludCBteV9mbGFncywgc3RydWN0IHNvY2thZGRyICpzb3VyY2UsIG5ldHBlcmZfc29ja2xlbl90ICpzb3VyY2VsZW4pIHsKKworI2lmZGVmIElQX1BLVElORk8KKyAgc3RydWN0IGlvdmVjICBteV9pb3ZlYzsKKyAgc3RydWN0IG1zZ2hkciBteV9oZWFkZXI7CisgIHN0cnVjdCBjbXNnaGRyICpjbXNnOworICBzdHJ1Y3QgaW5fcGt0aW5mbyAqcGt0aW5mbzsKKworICBjaGFyIGNvbnRyb2xfYnVmWzUxMl07CisgIGludCBvbm9mZiA9IDE7CisgIGludCByZXQ7CisKKyAgbXlfaW92ZWMuaW92X2Jhc2UgPSBtZXNzYWdlX3B0cjsKKyAgbXlfaW92ZWMuaW92X2xlbiA9IGJ5dGVzX3RvX3JlY3Y7CisKKyAgbXlfaGVhZGVyLm1zZ19uYW1lID0gc291cmNlOworICBteV9oZWFkZXIubXNnX25hbWVsZW4gPSAqc291cmNlbGVuOworICBteV9oZWFkZXIubXNnX2lvdiA9ICZteV9pb3ZlYzsKKyAgbXlfaGVhZGVyLm1zZ19pb3ZsZW4gPSAxOworICBteV9oZWFkZXIubXNnX2NvbnRyb2wgPSBjb250cm9sX2J1ZjsKKyAgbXlfaGVhZGVyLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNvbnRyb2xfYnVmKTsKKworICAvKiBub3QgZ29pbmcgdG8gYm90aGVyIGNoZWNraW5nLCBpZiBpdCBkb2Vzbid0IHdvcmsgd2UgYXJlIG5vCisgICAgIHdvcnNlLW9mZiB0aGFuIHdlIHdlcmUgYmVmb3JlLiB3ZSBhcmUgZ29pbmcgdG8gaWdub3JlIElQdjYgZm9yCisgICAgIHRoZSB0aW1lIGJlaW5nICovCisgIHNldHNvY2tvcHQoZGF0YV9zb2NrZXQsIElQUFJPVE9fSVAsIElQX1BLVElORk8sICZvbm9mZiwgc2l6ZW9mKG9ub2ZmKSk7CisgIAorICByZXQgPSByZWN2bXNnKGRhdGFfc29ja2V0LCAmbXlfaGVhZGVyLCAwKTsKKworICBpZiAocmV0ID49IDApIHsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbWU7CisgICAgc3RydWN0IHNvY2thZGRyX2luIGNsZWFyOworICAgIG5ldHBlcmZfc29ja2xlbl90IG1lbGVuID0gc2l6ZW9mKG1lKTsKKyAgICBmb3IgKGNtc2cgPSBDTVNHX0ZJUlNUSERSKCZteV9oZWFkZXIpOworCSBjbXNnICE9IE5VTEw7CisJIGNtc2cgPSBDTVNHX05YVEhEUigmbXlfaGVhZGVyLCBjbXNnKSkgeworICAgICAgaWYgKGNtc2ctPmNtc2dfbGV2ZWwgPT0gSVBQUk9UT19JUCAmJiBjbXNnLT5jbXNnX3R5cGUgPT0gSVBfUEtUSU5GTykgeworCWluX3BrdGluZm8gPSAqKHN0cnVjdCBpbl9wa3RpbmZvICopQ01TR19EQVRBKGNtc2cpOworCWhhdmVfcGt0aW5mbyA9IDE7CisgICAgICB9CisgICAgfQorICB9CisKKyAgb25vZmYgPSAwOworICBzZXRzb2Nrb3B0KGRhdGFfc29ja2V0LCBJUFBST1RPX0lQLCBJUF9QS1RJTkZPLCAmb25vZmYsIHNpemVvZihvbm9mZikpOworCisgIHJldHVybiByZXQ7CisjZWxzZQorICByZXR1cm4gLTE7CisjZW5kaWYKK30KKworCitpbnQKK3JlY3ZfZGF0YShTT0NLRVQgZGF0YV9zb2NrZXQsIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nLCB1aW50MzJfdCBieXRlc190b19yZWN2LCBzdHJ1Y3Qgc29ja2FkZHIgKnNvdXJjZSwgbmV0cGVyZl9zb2NrbGVuX3QgKnNvdXJjZWxlbiwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpudW1fcmVjZWl2ZXMpIHsKKworICBjaGFyICp0ZW1wX21lc3NhZ2VfcHRyOworICBpbnQgYnl0ZXNfbGVmdDsKKyAgaW50IGJ5dGVzX3JlY3ZkOworICBpbnQgbXlfcmVjdnM7CisgIGludCBteV9mbGFncyA9IDA7IC8qIHdpbGwgd2Ugb25lIGRheSB3YW50IHRvIHNldCBNU0dfV0FJVEFMTD8gKi8KKworI2lmIGRlZmluZWQoX19saW51eCkKKyAgaW50IHJldDsKKyAgaWYgKGxvY19yY3Zhdm9pZCA9PSAxKSB7CisgICAgcmV0ID0gcmVjdl9kYXRhX25vX2NvcHkoZGF0YV9zb2NrZXQsIHJlY3ZfcmluZywgYnl0ZXNfdG9fcmVjdiwgc291cmNlLCBzb3VyY2VsZW4sIGZsYWdzLCBudW1fcmVjZWl2ZXMpOworICAgIGlmIChyZXQgIT0gLTQpCisgICAgICByZXR1cm4gcmV0OworICAgIGVsc2UKKyAgICAgIGxvY19yY3Zhdm9pZCA9IDA7CisgIH0KKyNlbmRpZgorCisgIC8qIHJlY2VpdmUgZGF0YSBvZmYgdGhlIGRhdGFfc29ja2V0LCBhc3MtdS1tZS1pbmcgYSBibG9ja2luZyBzb2NrZXQKKyAgICAgYWxsIHRoZSB3YXkhLSkgMjAwOC0wMS0wOCAqLworICBteV9yZWN2cyA9IDA7CisgIGJ5dGVzX2xlZnQgPSBieXRlc190b19yZWN2OworICB0ZW1wX21lc3NhZ2VfcHRyICA9IHJlY3ZfcmluZy0+YnVmZmVyX3B0cjsKKworICBpZiAoZGVidWcgPiAxKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzIHNvY2sgJWQsIHJpbmcgZWx0ICVwLCBieXRlcyAlZCwgc291cmNlICVwLCBzcmNsZW4gJWQsIGZsYWdzICV4LCBudW1fcmVjdiAlcFxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBkYXRhX3NvY2tldCwKKwkgICAgcmVjdl9yaW5nLAorCSAgICBieXRlc190b19yZWN2LAorCSAgICBzb3VyY2UsCisJICAgIChzb3VyY2UgIT0gTlVMTCkgPyAqc291cmNlbGVuIDogLTEsCisJICAgIGZsYWdzLAorCSAgICBudW1fcmVjZWl2ZXMpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKyAgZG8geworICAgIGlmIChzb3VyY2UpIHsKKyAgICAgIC8qIGNhbGwgcmVjdmZyb20gaXQgZG9lcyBsb29rIGEgbGl0dGxlIHNpbGx5IGhlcmUgaW5zaWRlIHRoZSBkbworCSB3aGlsZSwgYnV0IEkgdGhpbmsgaXQgaXMgb2sgLSBhIFVEUCBvciBvdGhlciBER1JBTSBvcgorCSBTRVFQQUNLRVQgKD8pIHNvY2tldCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBvbmx5IHRpbWUgd2UKKwkgcGFzcy1pbiBhIHNvdXJjZSBwb2ludGVyIHdpbGwgaGF2ZSBhIHNlbWFudGljIHRoYXQgc2hvdWxkIGdldAorCSB1cyBvdXQgb2YgdGhlIGRvd2hpbGUgb24gdGhlIGZpcnN0IGNhbGwgYW55d2F5LiAgaWYgaXQKKwkgdHVybnMtb3V0IG5vdCB0byBiZSB0aGUgY2FzZSwgdGhlbiB3ZSBjYW4gaG9pc3QgdGhlIGlmIGFib3ZlCisJIHRoZSBkbyBhbmQgcHV0IHRoZSBkb3doaWxlIGluIHRoZSBlbHNlLiAqLworICAgICAgaWYgKHVzZV9wa3RpbmZvKSB7CisJYnl0ZXNfcmVjdmQgPSByZWN2X3BrdGluZm8oZGF0YV9zb2NrZXQsCisJCQkJICAgdGVtcF9tZXNzYWdlX3B0ciwKKwkJCQkgICBieXRlc19sZWZ0LAorCQkJCSAgIG15X2ZsYWdzLAorCQkJCSAgIHNvdXJjZSwKKwkJCQkgICBzb3VyY2VsZW4pOworCXVzZV9wa3RpbmZvID0gMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworCWJ5dGVzX3JlY3ZkID0gcmVjdmZyb20oZGF0YV9zb2NrZXQsCisJCQkgICAgICAgdGVtcF9tZXNzYWdlX3B0ciwKKwkJCSAgICAgICBieXRlc19sZWZ0LAorCQkJICAgICAgIG15X2ZsYWdzLAorCQkJICAgICAgIHNvdXJjZSwKKwkJCSAgICAgICBzb3VyY2VsZW4pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIGp1c3QgY2FsbCByZWN2ICovCisgICAgICBieXRlc19yZWN2ZCA9IHJlY3YoZGF0YV9zb2NrZXQsCisJCQkgdGVtcF9tZXNzYWdlX3B0ciwKKwkJCSBieXRlc19sZWZ0LAorCQkJIG15X2ZsYWdzKTsKKyAgICB9CisgICAgaWYgKGJ5dGVzX3JlY3ZkID4gMCkgeworICAgICAgYnl0ZXNfbGVmdCAtPSBieXRlc19yZWN2ZDsKKyAgICAgIHRlbXBfbWVzc2FnZV9wdHIgKz0gYnl0ZXNfcmVjdmQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIG15X3JlY3ZzKys7CisgIH0gd2hpbGUgKChieXRlc19sZWZ0ID4gMCkgJiYgKGZsYWdzICYgTkVUUEVSRl9XQUlUQUxMKSk7CisKKyAgKm51bV9yZWNlaXZlcyA9IG15X3JlY3ZzOworCisgIC8qIE9LLCB3ZSBhcmUgb3V0IG9mIHRoZSBsb29wIC0gbm93IHdoYXQ/ICovCisgIGlmIChieXRlc19yZWN2ZCA8IDApIHsKKyAgICAvKiBkaWQgdGhlIHRpbWVyIGhpdCwgb3Igd2FzIHRoZXJlIGFuIGVycm9yPyAqLworICAgIGlmIChTT0NLRVRfRUlOVFIoYnl0ZXNfcmVjdmQpKQorICAgICAgeworCS8qIFdlIGhpdCB0aGUgZW5kIG9mIGEgdGltZWQgdGVzdC4gKi8KKwlyZXR1cm4gLTE7CisgICAgICB9CisgICAgaWYgKFNPQ0tFVF9FQUdBSU4oYnl0ZXNfcmVjdmQpIHx8CisJU09DS0VUX0VXT1VMREJMT0NLKGJ5dGVzX3JlY3ZkKSkgeworICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICAvKiBpdCB3YXMgYSBoYXJkIGVycm9yICovCisgICAgcmV0dXJuIC0zOworICB9CisKKworICAvKiB0aGlzIGxvb2tzIGEgbGl0dGxlIGZ1bm55LCBidXQgc2hvdWxkIGJlIGNvcnJlY3QuICBpZiB3ZSBoYWQKKyAgICAgTkVUUEVSRl9XQUlUQUxMIHNldCBhbmQgd2UgZ290IGhlcmUsIGl0IG1lYW5zIHdlIGdvdCBhbGwgdGhlCisgICAgIGJ5dGVzIG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlLiAgb3RoZXJ3aXNlIHdlIHdvdWxkIGhhdmUgaGl0IHRoZQorICAgICBlcnJvciBvciBlbmQgb2YgdGVzdCBjYXNlcy4gIGlmIE5FVFBFUkZfV0FJVEFMTCBpc24ndCBzZXQsIHRoaXMKKyAgICAgaXMgYSBTVFJFQU0gdGVzdCwgYW5kIHdlIHdpbGwgaGF2ZSBvbmx5IG1hZGUgb25lIGNhbGwgdG8gcmVjdiwgc28KKyAgICAgYnl0ZXNfcmVjdmQgd2lsbCBiZSBhY2N1cmF0ZS4gKi8KKyAgaWYgKGJ5dGVzX2xlZnQpCisgICAgcmV0dXJuIGJ5dGVzX3JlY3ZkOworICBlbHNlCisgICAgcmV0dXJuIGJ5dGVzX3RvX3JlY3Y7CisKK30KKworCitpbnQKK2Nsb3NlX2RhdGFfc29ja2V0KFNPQ0tFVCBkYXRhX3NvY2tldCwgc3RydWN0IHNvY2thZGRyICpwZWVyLCBpbnQgcGVlcmxlbiwgaW50IHByb3RvY29sKQoreworCisgIGludCByZXQ7CisgIGNoYXIgYnVmZmVyWzRdOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlcyBzb2NrICVkIHBlZXIgJXAgcGVlcmxlbiAlZCBwcm90b2NvbCAlZFxuIiwKKwkgICAgX19GVU5DVElPTl9fLAorCSAgICBkYXRhX3NvY2tldCwKKwkgICAgcGVlciwKKwkgICAgcGVlcmxlbiwKKwkgICAgcHJvdG9jb2wpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICBpZiAocHJvdG9jb2wgPT0gSVBQUk9UT19VRFApIHsKKyAgICAvKiB0cnkgdG8gZ2l2ZSB0aGUgcmVtb3RlIGEgc2lnbmFsLiB3aGF0IHRoaXMgbWVhbnMgaWYgd2UgZXZlcgorICAgICAgIHdhbnRlZCB0byBhY3R1YWxseSBzZW5kIHplcm8tbGVuZ3RoIG1lc3NhZ2VzIHJlbWFpbnMgdG8gYmUgc2VlbgorICAgICAgIDopICAqLworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgIGlmIChwZWVyKQorCXJldCA9IHNlbmR0byhkYXRhX3NvY2tldCwKKwkJICAgICBidWZmZXIsCisJCSAgICAgMCwKKwkJICAgICAwLAorCQkgICAgIHBlZXIsCisJCSAgICAgcGVlcmxlbik7CisgICAgICBlbHNlCisJcmV0ID0gc2VuZChkYXRhX3NvY2tldCwKKwkJICAgYnVmZmVyLAorCQkgICAwLAorCQkgICAwKTsKKyAgICAgIGlmIChTT0NLRVRfRUlOVFIocmV0KSkgeworCWNsb3NlKGRhdGFfc29ja2V0KTsKKwlyZXR1cm4gLTE7CisgICAgICB9CisgICAgfQorICB9CisgIHJldCA9IGNsb3NlKGRhdGFfc29ja2V0KTsKKworICBpZiAoU09DS0VUX0VJTlRSKHJldCkpIHsKKyAgICAvKiBlbmQgb2YgdGVzdCAqLworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIGlmIChyZXQgPT0gMCkgeworICAgIHJldHVybiByZXQ7CisgIH0KKyAgZWxzZQorICAgIHJldHVybiAtMzsKKworfQorCitpbnQKK2Rpc2Nvbm5lY3RfZGF0YV9zb2NrZXQoU09DS0VUIGRhdGFfc29ja2V0LCBpbnQgaW5pdGlhdGUsIGludCBkb19jbG9zZSwgc3RydWN0IHNvY2thZGRyICpwZWVyLCBpbnQgcGVlcmxlbikKK3sKKworICBjaGFyIGJ1ZmZlcls0XTsKKyAgaW50IGJ5dGVzX3JlY3ZkOworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsCisJICAgICIlcyBzb2NrICVkIGluaXQgJWQgZG9fY2xvc2UgJWQgcHJvdG9jb2wgJWRcbiIsCisJICAgIF9fRlVOQ1RJT05fXywKKwkgICAgZGF0YV9zb2NrZXQsCisJICAgIGluaXRpYXRlLAorCSAgICBkb19jbG9zZSwKKwkgICAgcHJvdG9jb2wpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICAvKiBhdCBzb21lIHBvaW50IHdlJ2xsIG5lZWQgdG8gYWJzdHJhY3QgdGhpcyBhIGxpdHRsZS4gIGZvciBub3csIGlmCisgICAgIHRoZSBwcm90b2NvbCBpcyBVRFAsIHdlIHRyeSB0byBzZW5kIHNvbWUgbnVtYmVyIG9mIHplcm8tbGVuZ3RoCisgICAgIGRhdGFncmFtcyB0byBhbGxvdyB0aGUgcmVtb3RlIHRvIGdldCBvdXQgb2YgaXRzIGxvb3Agd2l0aG91dAorICAgICBoYXZpbmcgdG8gd2FpdCBmb3IgdGhlIHBhZGRlZCB0aW1lciB0byBleHBpcmUuIGlmIGl0IGlzbid0IFVEUCwKKyAgICAgd2UgYXNzdW1lIGEgcmVsaWFibGUgY29ubmVjdGlvbiBhbmQgY2FuIGRvIHRoZSB1c3VhbCBncmFjZWZ1bAorICAgICBzaHV0ZG93biB0aGluZyAqLworCisgIC8qIHRoaXMgbmVlZHMgdG8gYmUgcmV2aXNpdGVkIGZvciB0aGUgbmV0cGVyZiByZWNlaXZpbmcgY2FzZSB3aGVuCisgICAgIHRoZSB0ZXN0IGlzIHRlcm1pbmF0ZWQgYnkgYSBDdHJsLUMuICByYWogMjAxMi0wMS0yNCAqLworCisgIGlmIChwcm90b2NvbCAhPSBJUFBST1RPX1VEUCkgeworICAgIGlmIChpbml0aWF0ZSkKKyAgICAgIHNodXRkb3duKGRhdGFfc29ja2V0LCBTSFVUX1dSKTsKKworICAgIC8qIHdlIGFyZSBleHBlY3RpbmcgdG8gZ2V0IGVpdGhlciBhIHJldHVybiBvZiB6ZXJvIGluZGljYXRpbmcKKyAgICAgICBjb25uZWN0aW9uIGNsb3NlLCBvciBhbiBlcnJvci4gb2YgY291cnNlLCB3ZSAqbWF5KiBuZXZlcgorICAgICAgIHJlY2VpdmUgYW55dGhpbmcgZnJvbSB0aGUgcmVtb3RlIHdoaWNoIG1lYW5zIHdlIHByb2JhYmx5IHJlYWxseQorICAgICAgIGF1Z2h0IHRvIGhhdmUgYSBzZWxlY3QgaGVyZSBidXQgdW50aWwgd2UgYXJlIG9uY2UgYml0dGVuIHdlCisgICAgICAgd2lsbCByZW1haW4gdHdpY2UgYm9sZC4gKi8KKyAgICBieXRlc19yZWN2ZCA9IHJlY3YoZGF0YV9zb2NrZXQsCisJCSAgICAgICBidWZmZXIsCisJCSAgICAgICAxLAorCQkgICAgICAgMCk7CisKKyAgICBpZiAoYnl0ZXNfcmVjdmQgIT0gMCkgeworICAgICAgLyogY29ubmVjdGlvbiBjbG9zZSwgY2FsbCBjbG9zZS4gd2UgYXNzdW1lIHRoYXQgdGhlIHJlcXVpc2l0ZQorICAgICAgICAgbnVtYmVyIG9mIGJ5dGVzIGhhdmUgYmVlbiByZWNlaXZlZCAqLworICAgICAgaWYgKFNPQ0tFVF9FSU5UUihieXRlc19yZWN2ZCkpCisJeworCSAgLyogV2UgaGl0IHRoZSBlbmQgb2YgYSB0aW1lZCB0ZXN0LiAqLworCSAgcmV0dXJuIC0xOworCX0KKyAgICAgIHJldHVybiAtMzsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgaWYgKHBlZXIpCisJYnl0ZXNfcmVjdmQgPSBzZW5kdG8oZGF0YV9zb2NrZXQsCisJCQkgICAgIGJ1ZmZlciwKKwkJCSAgICAgMCwKKwkJCSAgICAgMCwKKwkJCSAgICAgcGVlciwKKwkJCSAgICAgcGVlcmxlbik7CisgICAgICBlbHNlCisJYnl0ZXNfcmVjdmQgPSBzZW5kKGRhdGFfc29ja2V0LAorCQkJICAgYnVmZmVyLAorCQkJICAgMCwKKwkJCSAgIDApOworICAgICAgLyogd2Ugb25seSByZWFsbHkgY2FyZSBpZiB0aGUgdGltZXIgZXhwaXJlZCBvbiB1cyAqLworICAgICAgaWYgKFNPQ0tFVF9FSU5UUihieXRlc19yZWN2ZCkpIHsKKwlpZiAoZG9fY2xvc2UpCisJICBjbG9zZShkYXRhX3NvY2tldCk7CisJcmV0dXJuIC0xOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmIChkb19jbG9zZSkKKyAgICBjbG9zZShkYXRhX3NvY2tldCk7CisKKyAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBIQVZFX0xJTlVYX1RDUF9ICitzdGF0aWMgdm9pZAorZHVtcF90Y3BfaW5mbyhzdHJ1Y3QgdGNwX2luZm8gKnRjcF9pbmZvKQoreworCisgIGZwcmludGYoc3RkZXJyLAorCSAgInRjcGlfcnRvICVkIHRjcGlfYXRvICVkIHRjcGlfcG10dSAlZCB0Y3BpX3Jjdl9zc3RocmVzaCAlZFxuIgorCSAgInRjcGlfcnR0ICVkIHRjcGlfcnR0dmFyICVkIHRjcGlfc25kX3NzdGhyZXNoICVkIHRwY2lfc25kX2N3bmQgJWRcbiIKKwkgICJ0Y3BpX3Jlb3JkZXJpbmcgJWQgdGNwaV90b3RhbF9yZXRyYW5zICVkXG4iLAorCSAgdGNwX2luZm8tPnRjcGlfcnRvLAorCSAgdGNwX2luZm8tPnRjcGlfYXRvLAorCSAgdGNwX2luZm8tPnRjcGlfcG10dSwKKwkgIHRjcF9pbmZvLT50Y3BpX3Jjdl9zc3RocmVzaCwKKwkgIHRjcF9pbmZvLT50Y3BpX3J0dCwKKwkgIHRjcF9pbmZvLT50Y3BpX3J0dHZhciwKKwkgIHRjcF9pbmZvLT50Y3BpX3NuZF9zc3RocmVzaCwKKwkgIHRjcF9pbmZvLT50Y3BpX3NuZF9jd25kLAorCSAgdGNwX2luZm8tPnRjcGlfcmVvcmRlcmluZywKKwkgIHRjcF9pbmZvLT50Y3BpX3RvdGFsX3JldHJhbnMpOworICAKKyAgcmV0dXJuOworfQorCisjZW5kaWYKKworc3RhdGljIGludAorZ2V0X3RyYW5zcG9ydF9yZXRyYW5zKFNPQ0tFVCBzb2NrZXQsIGludCBwcm90b2NvbCkgeworCisjaWZkZWYgSEFWRV9MSU5VWF9UQ1BfSAorICBzdHJ1Y3QgdGNwX2luZm8gdGNwX2luZm87CisKKyAgaW50IHJldDsKKyAgbmV0cGVyZl9zb2NrbGVuX3QgaW5mb3NpemU7CisKKyAgaWYgKHByb3RvY29sICE9IElQUFJPVE9fVENQKQorICAgIHJldHVybiAtMTsKKworICBpbmZvc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGNwX2luZm8pOworCisgIGlmICgocmV0ID0gZ2V0c29ja29wdChzb2NrZXQscHJvdG9jb2wsVENQX0lORk8sJnRjcF9pbmZvLCZpbmZvc2l6ZSkpIDwgMCkgeworICAgIGlmIChkZWJ1ZykgeworICAgICAgZnByaW50Zih3aGVyZSwKKwkgICAgICAiJXM6IGdldHNvY2tvcHQgZXJybm8gJWQgJXNcbiIsCisJICAgICAgX19GVU5DVElPTl9fLAorCSAgICAgIGVycm5vLAorCSAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICBmZmx1c2god2hlcmUpOworICAgIH0KKyAgICByZXR1cm4gLTE7CisgIH0KKyAgZWxzZSB7CisKKyAgICAvKiB3ZSBhc3N1bWUgdGhhdCBpZiB3ZSBoYXZlIExJTlVYX1RDUF9IIHdlIGFsc28gaGF2ZSBnZXRlbnYgKi8KKyAgICBpZiAoZGVidWcgPiAxIHx8IGdldGVudigiRFVNUF9UQ1BfSU5GTyIpKSB7CisgICAgICBkdW1wX3RjcF9pbmZvKCZ0Y3BfaW5mbyk7CisgICAgfQorICAgIHJldHVybiB0Y3BfaW5mby50Y3BpX3RvdGFsX3JldHJhbnM7CisgIH0KKworCisjZWxzZQorICByZXR1cm4gLTE7CisjZW5kaWYKK30KKworCitzdGF0aWMgdm9pZAorZ2V0X3RyYW5zcG9ydF9pbmZvKFNPQ0tFVCBzb2NrZXQsIGludCAqbXNzLCBpbnQgcHJvdG9jb2wpCit7CisKKyAgbmV0cGVyZl9zb2NrbGVuX3Qgc29ja19vcHRfbGVuOworICBpbnQgb3B0aW9uOworICBzb2NrX29wdF9sZW4gPSBzaXplb2YobmV0cGVyZl9zb2NrbGVuX3QpOworCisgIHN3aXRjaCAocHJvdG9jb2wpIHsKKyNpZiBkZWZpbmVkKElQUFJPVE9fVENQKSAmJiBkZWZpbmVkKFRDUF9NQVhTRUcpCisgIGNhc2UgSVBQUk9UT19UQ1A6CisgICAgb3B0aW9uID0gVENQX01BWFNFRzsKKyAgICBicmVhazsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChJUFBST1RPX1NDVFApICYmIGRlZmluZWQoU0NUUF9NQVhTRUcpCisgIGNhc2UgSVBQUk9UT19TQ1RQOgorICAgIG9wdGlvbiA9IFNDVFBfTUFYU0VHOworICAgIGJyZWFrOworI2VuZGlmCisgIGRlZmF1bHQ6CisgICAgKm1zcyA9IC0xOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChnZXRzb2Nrb3B0KHNvY2tldCwKKwkJIHByb3RvY29sLAorCQkgb3B0aW9uLAorCQkgKGNoYXIgKiltc3MsCisJCSAmc29ja19vcHRfbGVuKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAiJXM6IGdldHNvY2tvcHQ6IGVycm5vICVkXG4iLAorCSAgICBfX0ZVTkNUSU9OX18sCisJICAgIGVycm5vKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgICptc3MgPSAtMTsKKyAgfQorCit9CisKK3N0YXRpYyB2b2lkCitnZXRfdHJhbnNwb3J0X2NvbmdfY29udHJvbChTT0NLRVQgc29ja2V0LCBpbnQgcHJvdG9jb2wsIGNoYXIgY29uZ19jb250cm9sW10sIGludCBsZW4pCit7CisjaWZkZWYgVENQX0NPTkdFU1RJT04KKyAgaW50IG15X2xlbiA9IGxlbjsKKyAgaWYgKHByb3RvY29sICE9IElQUFJPVE9fVENQKSB7CisgICAgc3RybmNweShjb25nX2NvbnRyb2wsIlRDUCBPbmx5IixsZW4pOworICB9CisgIGVsc2UgaWYgKGdldHNvY2tvcHQoc29ja2V0LAorCQkgICAgICBwcm90b2NvbCwgVENQX0NPTkdFU1RJT04sIGNvbmdfY29udHJvbCwgJm15X2xlbikgPT0KKwkgICBTT0NLRVRfRVJST1IpIHsKKyAgICBzbnByaW50Zihjb25nX2NvbnRyb2wsbGVuLCIlZCBlcnJubyIsZXJybm8pOworICB9CisjZWxzZQorICBzdHJuY3B5KGNvbmdfY29udHJvbCwiVW5hdmFpbGFibGUiLGxlbik7CisjZW5kaWYKKyAgY29uZ19jb250cm9sW2xlbi0xXSA9ICdcMCc7Cit9CisKK3N0YXRpYyB2b2lkCitzZXRfdHJhbnNwb3J0X2NvbmdfY29udHJvbChTT0NLRVQgc29ja2V0LCBpbnQgcHJvdG9jb2wsIGNoYXIgY29uZ19jb250cm9sW10sIGludCBsZW4pCit7CisjaWZkZWYgVENQX0NPTkdFU1RJT04KKyAgaWYgKHByb3RvY29sID09IElQUFJPVE9fVENQKSB7CisgICAgLyogaWYgaXQgZmFpbHMsIHdlJ2xsIHBpY2sgdGhhdCB1cCB2aWEgdGhlIHN1YnNlcXVlbnQgImdldCIgKi8KKyAgICBzZXRzb2Nrb3B0KHNvY2tldCwgcHJvdG9jb2wsIFRDUF9DT05HRVNUSU9OLCBjb25nX2NvbnRyb2wsIGxlbik7CisgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAorc2V0X3JlY2VpdmVfdGltZW91dChTT0NLRVQgc29jaywgaW50IHRpbWVvdXQpIAoreworI2lmZGVmIFNPX1JDVlRJTUVPCisjaWZuZGVmIFdJTjMyCisgIHN0cnVjdCB0aW1ldmFsIGZvbzsKKworICBmb28udHZfc2VjID0gdGltZW91dDsKKyAgZm9vLnR2X3VzZWMgPSAwOworCisgIGlmIChzZXRzb2Nrb3B0KHNvY2ssU09MX1NPQ0tFVCxTT19SQ1ZUSU1FTywmZm9vLHNpemVvZihmb28pKSA8IDApIHsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsIk5vdGUgLSBhdHRlbXB0IHRvIHNldCBhIHJlY2VpdmUgdGltZW91dCBvbiB0aGUgZGF0YSBzb2NrZXQgZmFpbGVkIHdpdGggZXJybm8gJWQgKCVzKVxuIiwKKwkgICAgICBlcnJubywKKwkgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgIH0KKyNlbmRpZgorI2VuZGlmCit9CisKK3N0YXRpYyBTT0NLRVQKK29tbmlfY3JlYXRlX2RhdGFfc29ja2V0KHN0cnVjdCBhZGRyaW5mbyAqcmVzKQoreworICBTT0NLRVQgdGVtcF9zb2NrZXQ7CisKKyAgdGVtcF9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQocmVzKTsKKworICBpZiAodGVtcF9zb2NrZXQgIT0gU09DS0VUX0VSUk9SKSB7CisgICAgaWYgKGxvY2FsX2NvbmdfY29udHJvbF9yZXFbMF0gIT0gJ1wwJykgeworICAgICAgc2V0X3RyYW5zcG9ydF9jb25nX2NvbnRyb2wodGVtcF9zb2NrZXQsCisJCQkJIHJlcy0+YWlfcHJvdG9jb2wsCisJCQkJIGxvY2FsX2NvbmdfY29udHJvbF9yZXEsCisJCQkJIHNpemVvZihsb2NhbF9jb25nX2NvbnRyb2xfcmVxKSk7CisgICAgfQorCisgICAgaWYgKChyZXMtPmFpX3Byb3RvY29sID09IElQUFJPVE9fVURQKSAmJgorCShyZWNlaXZlX3RpbWVvdXQgIT0gLTEpKSB7CisgICAgICBzZXRfcmVjZWl2ZV90aW1lb3V0KHRlbXBfc29ja2V0LCByZWNlaXZlX3RpbWVvdXQpOworICAgIH0KKyAgICAgIAorICAgIGlmIChzb2NrZXRfZGVidWcpIHsKKyAgICAgIGludCBvbmUgPSAxOworICAgICAgc2V0c29ja29wdCh0ZW1wX3NvY2tldCwgCisJCSBTT0xfU09DS0VULAorCQkgU09fREVCVUcsCisJCSAmb25lLAorCQkgc2l6ZW9mKG9uZSkpOworICAgIH0KKyAgfQorICByZXR1cm4gdGVtcF9zb2NrZXQ7Cit9CisvKiBjaG9vc2luZyB0aGUgZGVmYXVsdCBzZW5kIHNpemUgaXMgYSB0cmlmbGUgbW9yZSBjb21wbGljYXRlZCB0aGFuIGl0CisgICB1c2VkIHRvIGJlIGFzIHdlIGhhdmUgdG8gYWNjb3VudCBmb3IgZGlmZmVyZW50IHByb3RvY29sIGxpbWl0cyAqLworCisjZGVmaW5lIFVEUF9MRU5HVEhfTUFYICgweEZGRkYgLSAyOCkKKworc3RhdGljIGludAorY2hvb3NlX3NlbmRfc2l6ZShpbnQgbHNzLCBpbnQgcHJvdG9jb2wpIHsKKworICBpbnQgc2VuZF9zaXplOworCisgIGlmIChsc3MgPiAwKSB7CisgICAgc2VuZF9zaXplID0gbHNzX3NpemU7CisKKyAgICAvKiB3ZSB3aWxsIGFzc3VtZSB0aGF0IGV2ZXJ5b25lIGhhcyBJUFBST1RPX1VEUCBhbmQgdGh1cyBhdm9pZCBhbgorICAgICAgIGlzc3VlIHdpdGggV2luZG93cyB1c2luZyBhbiBlbnVtICovCisgICAgaWYgKChwcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgJiYgKHNlbmRfc2l6ZSA+IFVEUF9MRU5HVEhfTUFYKSkKKyAgICAgIHNlbmRfc2l6ZSA9IFVEUF9MRU5HVEhfTUFYOworCisgIH0KKyAgZWxzZSB7CisgICAgc2VuZF9zaXplID0gNDA5NjsKKyAgfQorICByZXR1cm4gc2VuZF9zaXplOworfQorCisvKiBicmFpbiBkZWFkIHNpbXBsZSB3YXkgdG8gZ2V0IG5ldHBlcmYgdG8gZW1pdCBhIHV1aWQuIHNhZGx5LCBieSB0aGlzCisgICBwb2ludCB3ZSB3aWxsIGhhdmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGUgY29udHJvbCBjb25uZWN0aW9uIGJ1dAorICAgdGhvc2UgYXJlIHRoZSBicmVha3MuIHdlIGRvIF9OT1RfIGluY2x1ZGUgYSB0cmFpbGluZyBuZXdsaW5lCisgICBiZWNhdXNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgdGhpcyBpbiBhIHNjcmlwdCAqLworCit2b2lkCitwcmludF91dWlkKGNoYXIgcmVtb3RlX2hvc3RbXSkKK3sKKyAgcHJpbnRmKCIlcyIsdGVzdF91dWlkKTsKK30KKyNpZiBkZWZpbmVkKF9fbGludXgpCisvKgorICogTGludXggaGFzIHRoaXMgb2RkIGJlaGF2aW9yIHdoZXJlIGlmIHRoZSBzb2NrZXQgYnVmZmVycyBhcmUgbGFyZ2VyCisgKiB0aGFuIGEgZGV2aWNlJ3MgdHhxdWV1ZWxlbiwgdGhlIGtlcm5lbCB3aWxsIHNpbGVudGx5IGRyb3AgdHJhbnNtaXRzCisgKiB3aGljaCB3b3VsZCBub3QgZml0IGludG8gdGhlIHR4IHF1ZXVlLCBhbmQgbm90IHBhc3MgYW4gRU5PQlVGUworICogZXJyb3IgYmFjayB0byB0aGUgYXBwbGljYXRpb24uICBBcyBhIHJlc3VsdCwgYSBVRFAgc3RyZWFtIHRlc3QgY2FuCisgKiByZXBvcnQgYWJzdXJkIHRyYW5zbWl0IGJhbmR3aWR0aHMgKGxpa2UgMjBHYi9zIG9uIGEgMUdiRSBOSUMpLgorICogVGhpcyBiZWhhdmlvciBjYW4gYmUgYXZvaWRlZCBpZiB5b3UgcmVxdWVzdCBleHRlbmRlZCBlcnJvcgorICogcmVwb3J0aW5nIG9uIHRoZSBzb2NrZXQuICBUaGlzIGlzIGRvbmUgYnkgc2V0dGluZyB0aGUgSVBfUkVDVkVSUgorICogc29ja2V0IG9wdGlvbiBhdCB0aGUgSVAgbGV2ZWwuCisgKi8KK3N0YXRpYyB2b2lkCitlbmFibGVfZW5vYnVmcyhpbnQgcykKK3sKKyAgc3RydWN0IHByb3RvZW50ICpwcjsKKyAgaW50IG9uID0gMTsKKyAgCisgIGlmICgocHIgPSBnZXRwcm90b2J5bmFtZSgiaXAiKSkgPT0gTlVMTCkgeworICAgIGZwcmludGYod2hlcmUsICIlcyBmYWlsZWQ6IGdldHByb3RvYnluYW1lXG4iLF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKHNldHNvY2tvcHQocywgcHItPnBfcHJvdG8sIElQX1JFQ1ZFUlIsIChjaGFyICopJm9uLCBzaXplb2Yob24pKSA8IDApIHsKKyAgICBmcHJpbnRmKHdoZXJlLCAiJXMgZmFpbGVkOiBzZXRzb2Nrb3B0IChlcnJubyAlZClcbiIsX19GVU5DVElPTl9fLGVycm5vKTsKKyAgICBmZmx1c2god2hlcmUpOworICAgIHJldHVybjsKKyAgfQorfQorI2VuZGlmCisKK3ZvaWQKK3NldF9vbW5pX3JlcXVlc3RfZmxhZ3Moc3RydWN0IG9tbmlfcmVxdWVzdF9zdHJ1Y3QgKm9tbmlfcmVxdWVzdCkgeworCisgICAgICAvKiB3ZSBoYXZlIG5vIGVsc2UgY2xhdXNlcyBoZXJlIGJlY2F1c2Ugd2UgcHJldmlvdXNseSBzZXQgZmxhZ3MKKwkgdG8gemVybyBhYm92ZSByYWogMjAwOTA4MDMgKi8KKyAgICAgIGlmIChyZW1fbm9kZWxheSkKKwlvbW5pX3JlcXVlc3QtPmZsYWdzIHw9IE9NTklfTk9fREVMQVk7CisKKyAgICAgIGlmIChyZW1vdGVfdXNlX3NlbmRmaWxlKQorCW9tbmlfcmVxdWVzdC0+ZmxhZ3MgfD0gT01OSV9VU0VfU0VOREZJTEU7CisKKyAgICAgIGlmIChjb25uZWN0aW9uX3Rlc3QpCisJb21uaV9yZXF1ZXN0LT5mbGFncyB8PSBPTU5JX0NPTk5FQ1RfVEVTVDsKKworICAgICAgaWYgKHJlbW90ZV9jaGVja3N1bV9vZmYpCisJb21uaV9yZXF1ZXN0LT5mbGFncyB8PSBPTU5JX0NIRUNLU1VNX09GRjsKKworICAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpCisJb21uaV9yZXF1ZXN0LT5mbGFncyB8PSBPTU5JX01FQVNVUkVfQ1BVOworCisgICAgICBpZiAocm91dGluZ19hbGxvd2VkKQorCW9tbmlfcmVxdWVzdC0+ZmxhZ3MgfD0gT01OSV9ST1VUSU5HX0FMTE9XRUQ7CisKKyAgICAgIGlmIChkZXNpcmVkX291dHB1dF9ncm91cHMgJiBPTU5JX1dBTlRfUkVNX0lGTkFNRSkKKwlvbW5pX3JlcXVlc3QtPmZsYWdzIHw9IE9NTklfV0FOVF9JRk5BTUU7CisKKyAgICAgIGlmIChkZXNpcmVkX291dHB1dF9ncm91cHMgJiBPTU5JX1dBTlRfUkVNX0lGU0xPVCkKKwlvbW5pX3JlcXVlc3QtPmZsYWdzIHw9IE9NTklfV0FOVF9JRlNMT1Q7CisKKyAgICAgIGlmIChkZXNpcmVkX291dHB1dF9ncm91cHMgJiBPTU5JX1dBTlRfUkVNX0lGSURTKQorCW9tbmlfcmVxdWVzdC0+ZmxhZ3MgfD0gT01OSV9XQU5UX0lGSURTOworCisgICAgICBpZiAoZGVzaXJlZF9vdXRwdXRfZ3JvdXBzICYgT01OSV9XQU5UX1JFTV9EUlZJTkZPKQorCW9tbmlfcmVxdWVzdC0+ZmxhZ3MgfD0gT01OSV9XQU5UX0RSVklORk87CisKKyAgICAgIGlmIChkZXNpcmVkX291dHB1dF9ncm91cHMgJiBPTU5JX1dBTlRfUkVNX0NPTkcpCisJb21uaV9yZXF1ZXN0LT5mbGFncyB8PSBPTU5JX1dBTlRfUkVNX0NPTkc7CisKKyAgICAgIGlmICh1c2VfZmFzdG9wZW4pCisJb21uaV9yZXF1ZXN0LT5mbGFncyB8PSBPTU5JX0ZBU1RPUEVOOworCisgICAgICBpZiAod2FudF91c2VfcGt0aW5mbykKKwlvbW5pX3JlcXVlc3QtPmZsYWdzIHw9IE9NTklfVVNFX1BLVElORk87CisKKyAgICAgIGlmICh3YW50X2RlZmVyX2FjY2VwdCkKKwlvbW5pX3JlcXVlc3QtPmZsYWdzIHw9IE9NTklfV0FOVF9ERUZFUl9BQ0NFUFQ7CisKK30KKworCisvKiB0aGlzIGNvZGUgaXMgaW50ZW5kZWQgdG8gYmUgInRoZSB0d28gcm91dGluZXMgdG8gcnVuIHRoZW0gYWxsIiBmb3IKKyAgIEJTRGlzaCBzb2NrZXRzLiAgaXQgY29tZXMgYWJvdXQgYXMgcGFydCBvZiBhIGRlc2lyZSB0byBzaHJpbmsgdGhlCisgICBjb2RlIGZvb3RwcmludCBvZiBuZXRwZXJmIGFuZCB0byBhdm9pZCBoYXZpbmcgc28gbWFueSBibGVzc2VkCisgICByb3V0aW5lcyB0byBhbHRlciBhcyB0aW1lIGdvZXMgYnkuICB0aGUgZG93bnNpZGUgaXMgdGhlcmUgd2lsbCBiZQorICAgbW9yZSAiaWZzIiB0aGFuIHRoZXJlIHdlcmUgYmVmb3JlLiByYWogMjAwOC0wMS0wNyAqLworCit2b2lkCitzZW5kX29tbmlfaW5uZXIoY2hhciByZW1vdGVfaG9zdFtdLCB1bnNpZ25lZCBpbnQgbGVnYWN5X2NhbGxlciwgY2hhciBoZWFkZXJfc3RyW10pCit7CisKKyAgaW50IHJldCxycmV0OworICBpbnQgY29ubmVjdGVkID0gMDsKKyAgaW50IHRpbWVkX291dCA9IDA7CisgIGludCBwYWRfdGltZSA9IDA7CisKKyAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CisgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOworCisgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHJlbW90ZV9hZGRyOworICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBteV9hZGRyOworICBpbnQgICAgICAgICAgICAgICAgICAgICByZW1vdGVfYWRkcl9sZW4gPSBzaXplb2YocmVtb3RlX2FkZHIpOworICBuZXRwZXJmX3NvY2tsZW5fdCAgICAgICBteV9hZGRyX2xlbiA9IHNpemVvZihteV9hZGRyKTsKKworICBTT0NLRVQJZGF0YV9zb2NrZXQ7CisgIGludCAgICAgICAgICAgbmVlZF9zb2NrZXQ7CisKKyAgdWludDMyX3QgICB0ZW1wX3JlY3ZzOworICBjaGFyICB0bXBmbXQ7CisKKyAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CisgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKKworICBzdHJ1Y3QJb21uaV9yZXF1ZXN0X3N0cnVjdAkqb21uaV9yZXF1ZXN0OworICBzdHJ1Y3QJb21uaV9yZXNwb25zZV9zdHJ1Y3QJKm9tbmlfcmVzcG9uc2U7CisgIHN0cnVjdAlvbW5pX3Jlc3VsdHNfc3RydWN0CSpvbW5pX3Jlc3VsdDsKKworI2lmZGVmIFdBTlRfRklSU1RfQlVSU1QKKyAgaW50IHJlcXVlc3RzX291dHN0YW5kaW5nID0gMDsKKyNlbmRpZgorCisgIG9tbmlfcmVxdWVzdCA9CisgICAgKHN0cnVjdCBvbW5pX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOworICBvbW5pX3Jlc3BvbnNlID0KKyAgICAoc3RydWN0IG9tbmlfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKKyAgb21uaV9yZXN1bHQgPQorICAgIChzdHJ1Y3Qgb21uaV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CisKKworICBpZiAoa2VlcF9oaXN0b2dyYW0pIHsKKyAgICBpZiAoZmlyc3RfYnVyc3Rfc2l6ZSA+IDApCisgICAgICB0aW1lX2hpc3QgPSBISVNUX25ld19uKGZpcnN0X2J1cnN0X3NpemUgKyAxKTsKKyAgICBlbHNlCisgICAgICB0aW1lX2hpc3QgPSBISVNUX25ld19uKDEpOworICB9CisKKyAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZQorICAgICBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50CisgICAgIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kCisgICAgIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KKworICBjb21wbGV0ZV9hZGRyaW5mb3MoJnJlbW90ZV9yZXMsCisJCSAgICAgJmxvY2FsX3JlcywKKwkJICAgICByZW1vdGVfaG9zdCwKKwkJICAgICBzb2NrZXRfdHlwZSwKKwkJICAgICBwcm90b2NvbCwKKwkJICAgICAwKTsKKworICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CisgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKGhlYWRlcl9zdHIsbG9jYWxfcmVzLHJlbW90ZV9yZXMpOworICB9CisKKyAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLworCisgIG5lZWRfc29ja2V0ICAgPSAxOworCisgIGlmIChjb25uZWN0aW9uX3Rlc3QpCisgICAgcGlja19uZXh0X3BvcnRfbnVtYmVyKGxvY2FsX3JlcyxyZW1vdGVfcmVzKTsKKworCisgIC8qIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgY3B1IHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cywgd2UgbXVzdAorICAgICBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlIHRlc3RzCisgICAgIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuCisgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlCisgICAgIG5vdGhpbmcgdG8gZG8uIElmIGxvY2FsX2NwdV9yYXRlIGlzIHplcm8sIHRoZW4gd2Ugd2lsbCBnbyB0aHJvdWdoCisgICAgIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiovCisKKyAgaWYgKGxvY2FsX2NwdV91c2FnZSkgeworICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CisgIH0KKworICBjb25maWRlbmNlX2l0ZXJhdGlvbiA9IDE7CisgIGluaXRfc3RhdCgpOworCisgIHNlbmRfcmluZyA9IE5VTEw7CisgIHJlY3ZfcmluZyA9IE5VTEw7CisKKyAgLyogeW91IHdpbGwga2VlcCBydW5uaW5nIHRoZSB0ZXN0IHVudGlsIHlvdSBnZXQgaXQgcmlnaHQhIDopICovCisgIHdoaWxlICgoKGNvbmZpZGVuY2UgPCAwKSAmJiAoY29uZmlkZW5jZV9pdGVyYXRpb24gPD0gaXRlcmF0aW9uX21heCkpIHx8CisJIChjb25maWRlbmNlX2l0ZXJhdGlvbiA8PSBpdGVyYXRpb25fbWluKSkgeworCisgICAgdHJhbnNfY29tcGxldGVkID0gMDsKKyAgICBieXRlc194ZmVyZAk9IDAuMDsKKyAgICByZW1vdGVfYnl0ZXNfeGZlcmQgPSAwLjA7CisgICAgdGltZXNfdXAgCT0gMDsKKyAgICBieXRlc19zZW50ID0gMDsKKyAgICBieXRlc19yZWNlaXZlZCA9IDA7CisgICAgbG9jYWxfc2VuZF9jYWxscyA9IDA7CisgICAgbG9jYWxfcmVjZWl2ZV9jYWxscyA9IDA7CisKKyAgICAvKiBzaW5jZSB3ZSBhcmUgdHJhY2tpbmcgdGhlIG51bWJlciBvZiBvdXRzdGFuZGluZyByZXF1ZXN0cyBmb3IKKyAgICAgICB0aW1lc3RhbXBpbmcgcHVycG9zZXMsIGFuZCBzaW5jZSB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mCisgICAgICAgdXNpbmcgY29uZmlkZW5jZSBpbnRlcnZhbHMgbWF5IG5vdCBoYXZlIGNvbXBsZXRlZCBhbGwgb2YgdGhlbSwKKyAgICAgICB3ZSBub3cgbmVlZCB0byBmb3JnZXQgYWJvdXQgdGhlbSBvciB3ZSB3aWxsIG1pc3Rha2VubHkgZmlsbCBvdXIKKyAgICAgICB0cmFja2luZyBhcnJheS4gcmFqIDIwMTEtMDMtMTQgKi8KKyAgICBpZiAoa2VlcF9oaXN0b2dyYW0pIHsKKyAgICAgIEhJU1RfcHVyZ2UodGltZV9oaXN0KTsKKyAgICB9CisKKyNpZmRlZiBXQU5UX0ZJUlNUX0JVUlNUCisgICAgLyogd2UgaGF2ZSB0byByZW1lbWJlciB0byByZXNldCB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucworICAgICAgIG91dHN0YW5kaW5nIGFuZCB0aGUgImNvbmdlc3Rpb24gd2luZG93IGZvciBlYWNoIG5ldworICAgICAgIGl0ZXJhdGlvbi4gcmFqIDIwMDYtMDEtMzEuICovCisgICAgcmVxdWVzdHNfb3V0c3RhbmRpbmcgPSAwOworI2VuZGlmCisKKyAgICAvKiBpZiB0aGUgY29tbWFuZC1saW5lIGluY2x1ZGVkIHJlcXVlc3RzIHRvIHJhbmRvbWl6ZSB0aGUgSVAKKyAgICAgICBhZGRyZXNzZXMsIHRoZW4gaG9ub3IgaXQuICBvZiBjb3Vyc2UsIHRoaXMgbWF5IG5vdCB3b3JrIGFsbCB0aGF0CisgICAgICAgd2VsbCBmb3Igc29tZSB0ZXN0cy4uLiByYWogMjAxMDExMjkgKi8KKyAgICBpZiAobG9jYWxfbWFza19sZW4pCisgICAgICByYW5kb21faXBfYWRkcmVzcyhsb2NhbF9yZXMsIGxvY2FsX21hc2tfbGVuKTsKKyAgICBpZiAocmVtb3RlX21hc2tfbGVuKQorICAgICAgcmFuZG9tX2lwX2FkZHJlc3MocmVtb3RlX3JlcywgcmVtb3RlX21hc2tfbGVuKTsKKworICAgIGRhdGFfc29ja2V0ID0gb21uaV9jcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKKworICAgIGlmIChkYXRhX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX29tbmk6IHVuYWJsZSB0byBjcmVhdGUgZGF0YSBzb2NrZXQiKTsKKyAgICAgIGV4aXQoMSk7CisgICAgfQorI2lmIGRlZmluZWQoX19saW51eCkKKyAgICAvKiB3ZSByZWFsbHkgb25seSBuZWVkIHRoaXMgZm9yIGEgVURQX1NUUkVBTSB0ZXN0LiB3ZSBwYXJ0aWN1bGFybHkKKyAgICAgICBkbyBub3Qgd2FudCBpdCBmb3IgYSBDQyBvciBDUlIgdGVzdC4gcmFqIDIwMTItMDgtMDYgKi8KKyAgICBpZiAoKHByb3RvY29sID09IElQUFJPVE9fVURQKSAmJgorCU5FVFBFUkZfWE1JVF9PTkxZKGRpcmVjdGlvbikpIHsKKyAgICAgIGVuYWJsZV9lbm9idWZzKGRhdGFfc29ja2V0KTsKKyAgICB9CisjZW5kaWYKKyAgICBuZWVkX3NvY2tldCA9IDA7CisKKyAgICAvKiB3ZSBuZWVkIHRvIGNvbnNpZGVyIGlmIHRoaXMgaXMgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIGlmIHdlCisgICAgICAgYXJlIHJlY2VpdmluZywgaWYgd2UgYXJlIHNlbmRpbmcsIGV0Yywgd2hlbiBzZXR0aW5nLXVwIG91ciByZWN2CisgICAgICAgYW5kIHNlbmQgYnVmZmVyIHJpbmdzLiB3ZSBzaG91bGQgb25seSBuZWVkIHRvIGRvIHRoaXMgb25jZSwgYW5kCisgICAgICAgdGhhdCB3b3VsZCBiZSB3aGVuIHRoZSByZWxldmFudCBfcmluZyB2YXJpYWJsZSBpcyBOVUxMLiByYWoKKyAgICAgICAyMDA4LTAxLTE4ICovCisgICAgaWYgKGRpcmVjdGlvbiAmIE5FVFBFUkZfWE1JVCkgeworICAgICAgaWYgKGlzX211bHRpY2FzdF9hZGRyKHJlbW90ZV9yZXMpKSB7CisJc2V0X211bHRpY2FzdF90dGwoZGF0YV9zb2NrZXQpOworICAgICAgfQorCisgICAgICBpZiAoTlVMTCA9PSBzZW5kX3JpbmcpIHsKKwlpZiAocmVxX3NpemUgPiAwKSB7CisJICAvKiByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QgKi8KKwkgIGlmIChzZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAxOworCSAgYnl0ZXNfdG9fc2VuZCA9IHJlcV9zaXplOworCX0KKwllbHNlIHsKKwkgIC8qIHN0cmVhbSB0ZXN0ICovCisJICBpZiAoc2VuZF9zaXplID09IDApIHsKKwkgICAgc2VuZF9zaXplID0gY2hvb3NlX3NlbmRfc2l6ZShsc3Nfc2l6ZSxwcm90b2NvbCk7CisJICB9CisJICBpZiAoc2VuZF93aWR0aCA9PSAwKQorCSAgICBzZW5kX3dpZHRoID0gKGxzc19zaXplL3NlbmRfc2l6ZSkgKyAxOworCSAgaWYgKHNlbmRfd2lkdGggPT0gMSkgc2VuZF93aWR0aCsrOworCSAgYnl0ZXNfdG9fc2VuZCA9IHNlbmRfc2l6ZTsKKwl9CisKKwlzZW5kX3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhzZW5kX3dpZHRoLAorCQkJCQkgYnl0ZXNfdG9fc2VuZCwKKwkJCQkJIGxvY2FsX3NlbmRfYWxpZ24sCisJCQkJCSBsb2NhbF9zZW5kX29mZnNldCk7CisJaWYgKGRlYnVnKSB7CisJICBmcHJpbnRmKHdoZXJlLAorCQkgICIlczogJWQgZW50cnkgc2VuZF9yaW5nIG9idGFpbmVkLi4uXG4iLAorCQkgIF9fRlVOQ1RJT05fXywKKwkJICBzZW5kX3dpZHRoKTsKKwl9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKGRpcmVjdGlvbiAmIE5FVFBFUkZfUkVDVikgeworICAgICAgLyogZG8gd2UgbmVlZCB0byBqb2luIGEgbXVsdGljYXN0IGdyb3VwPyAqLworICAgICAgaWYgKGlzX211bHRpY2FzdF9hZGRyKGxvY2FsX3JlcykpIHsKKwlqb2luX211bHRpY2FzdF9hZGRyKGRhdGFfc29ja2V0LCBsb2NhbF9yZXMpOworICAgICAgfQorCisgICAgICAvKiBkbyB3ZSBuZWVkIHRvIGFsbG9jYXRlIGEgcmVjdl9yaW5nPyAqLworICAgICAgaWYgKE5VTEwgPT0gcmVjdl9yaW5nKSB7CisJaWYgKHJzcF9zaXplID4gMCkgeworCSAgaWYgKHJlY3Zfd2lkdGggPT0gMCkgcmVjdl93aWR0aCA9IDE7CisJICBieXRlc190b19yZWN2ID0gcnNwX3NpemU7CisJfQorCWVsc2UgeworCSAgLyogc3RyZWFtIHRlc3QgKi8KKwkgIGlmIChyZWN2X3NpemUgPT0gMCkgeworCSAgICBpZiAobHNyX3NpemUgPiAwKSB7CisJICAgICAgcmVjdl9zaXplID0gbHNyX3NpemU7CisJICAgIH0KKwkgICAgZWxzZSB7CisJICAgICAgcmVjdl9zaXplID0gNDA5NjsKKwkgICAgfQorCSAgfQorCSAgaWYgKHJlY3Zfd2lkdGggPT0gMCkgeworCSAgICByZWN2X3dpZHRoID0gKGxzcl9zaXplL3JlY3Zfc2l6ZSkgKyAxOworCSAgICBpZiAocmVjdl93aWR0aCA9PSAxKSByZWN2X3dpZHRoKys7CisJICB9CisJICBieXRlc190b19yZWN2ID0gcmVjdl9zaXplOworCX0KKworCXJlY3ZfcmluZyA9IGFsbG9jYXRlX2J1ZmZlcl9yaW5nKHJlY3Zfd2lkdGgsCisJCQkJCSBieXRlc190b19yZWN2LAorCQkJCQkgbG9jYWxfcmVjdl9hbGlnbiwKKwkJCQkJIGxvY2FsX3JlY3Zfb2Zmc2V0KTsKKwlpZiAoZGVidWcpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgIiVzOiAlZCBlbnRyeSByZWN2X3Jpbmcgb2J0YWluZWQuLi5cbiIsCisJCSAgX19GVU5DVElPTl9fLAorCQkgIHJlY3Zfd2lkdGgpOworCX0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW5vX2NvbnRyb2wpIHsKKworICAgICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3RlbiBvciBvdGhlcndpc2UgcHJlcGFyZSBmb3IKKwkgd2hhdCBpcyB0byBjb21lLiBUaGUgc2VydmVyIGFsdGVycyB0aGUgc29ja2V0IHBhcmFtdGVycyBvbiB0aGUKKwkgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciBhbGwgdGhlIHZhbHVlcworCSBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCBub3Qgc3BlY2lmeQorCSBhbnkgb2YgdGhlIHBhcmFtZXRlcnMsIHRoZXkgd2lsbCBiZSBwYXNzZWQgYXMgdmFsdWVzIHdoaWNoIHdpbGwKKwkgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncworCSBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQgd2lsbAorCSBkZWZhdWx0IHRvIDgsIHdoaWNoIHdpbGwgcHJvYmFibHkgYmUgbm8gYWxpZ25tZW50CisJIGFsdGVyYXRpb25zLiAqLworCisgICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgPSBET19PTU5JOworICAgICAgb21uaV9yZXF1ZXN0LT5mbGFncyAgICAgICAgICAgICAgICAgID0gMDsKKyAgICAgIG9tbmlfcmVxdWVzdC0+c2VuZF9idWZfc2l6ZQkgICA9IHJzc19zaXplX3JlcTsKKyAgICAgIG9tbmlfcmVxdWVzdC0+c2VuZF9zaXplICAgICAgICAgICAgICA9IHJlbW90ZV9zZW5kX3NpemVfcmVxOworICAgICAgb21uaV9yZXF1ZXN0LT5zZW5kX2FsaWdubWVudAkgICA9IHJlbW90ZV9zZW5kX2FsaWduOworICAgICAgb21uaV9yZXF1ZXN0LT5zZW5kX29mZnNldAkgICAgICAgICAgID0gcmVtb3RlX3NlbmRfb2Zmc2V0OworICAgICAgb21uaV9yZXF1ZXN0LT5zZW5kX3dpZHRoICAgICAgICAgICAgID0gc2VuZF93aWR0aDsKKyAgICAgIG9tbmlfcmVxdWVzdC0+cmVxdWVzdF9zaXplCSAgID0gcmVxX3NpemU7CisKKyAgICAgIG9tbmlfcmVxdWVzdC0+cmVjdl9idWZfc2l6ZQkgICA9IHJzcl9zaXplX3JlcTsKKyAgICAgIG9tbmlfcmVxdWVzdC0+cmVjZWl2ZV9zaXplICAgICAgICAgICA9IHJlbW90ZV9yZWN2X3NpemVfcmVxOworICAgICAgb21uaV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudAkgICA9IHJlbW90ZV9yZWN2X2FsaWduOworICAgICAgb21uaV9yZXF1ZXN0LT5yZWN2X29mZnNldAkgICAgICAgICAgID0gcmVtb3RlX3JlY3Zfb2Zmc2V0OworICAgICAgb21uaV9yZXF1ZXN0LT5yZWN2X3dpZHRoICAgICAgICAgICAgID0gcmVjdl93aWR0aDsKKyAgICAgIG9tbmlfcmVxdWVzdC0+cmVzcG9uc2Vfc2l6ZQkgICA9IHJzcF9zaXplOworICAgICAgb21uaV9yZXF1ZXN0LT5zb2NrZXRfcHJpbyAgICAgICAgICAgID0gcmVtb3RlX3NvY2tldF9wcmlvOworICAgICAgb21uaV9yZXF1ZXN0LT5zb2NrZXRfdG9zICAgICAgICAgICAgID0gcmVtb3RlX3NvY2tldF90b3M7CisKKyAgICAgIHNldF9vbW5pX3JlcXVlc3RfZmxhZ3Mob21uaV9yZXF1ZXN0KTsKKworICAgICAgLyogcGVyaGFwcyB0aGlzIHNob3VsZCBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uCisJIHJlbW90ZV9jb25nX2NvbnRyb2xfcmVxWzBdIG5vdCBiZWluZyBOVUxMPyAqLworICAgICAgc3RybmNweShvbW5pX3JlcXVlc3QtPmNvbmdfY29udHJvbCwKKwkgICAgICByZW1vdGVfY29uZ19jb250cm9sX3JlcSwKKwkgICAgICBzaXplb2Yob21uaV9yZXF1ZXN0LT5jb25nX2NvbnRyb2wpKTsKKyAgICAgIG9tbmlfcmVxdWVzdC0+Y29uZ19jb250cm9sW3NpemVvZihvbW5pX3JlcXVlc3QtPmNvbmdfY29udHJvbCkgLSAxXSA9CisJJ1wwJzsKKworICAgICAgaWYgKHdhbnRfa2VlcGFsaXZlKQorCW9tbmlfcmVxdWVzdC0+ZmxhZ3MgfD0gT01OSV9XQU5UX0tFRVBBTElWRTsKKworICAgICAgb21uaV9yZXF1ZXN0LT5jcHVfcmF0ZQkgICAgICAgICAgID0gcmVtb3RlX2NwdV9yYXRlOworICAgICAgaWYgKHRlc3RfdGltZSkKKwlvbW5pX3JlcXVlc3QtPnRlc3RfbGVuZ3RoCSAgID0gdGVzdF90aW1lOworICAgICAgZWxzZQorCW9tbmlfcmVxdWVzdC0+dGVzdF9sZW5ndGgJICAgPSB0ZXN0X3RyYW5zICogLTE7CisgICAgICBvbW5pX3JlcXVlc3QtPnNvX3JjdmF2b2lkCSAgICAgICAgICAgPSByZW1fcmN2YXZvaWQ7CisgICAgICBvbW5pX3JlcXVlc3QtPnNvX3NuZGF2b2lkCSAgICAgICAgICAgPSByZW1fc25kYXZvaWQ7CisgICAgICBvbW5pX3JlcXVlc3QtPnNlbmRfZGlydHlfY291bnQgICAgICAgPSByZW1fZGlydHlfY291bnQ7CisgICAgICBvbW5pX3JlcXVlc3QtPnJlY3ZfZGlydHlfY291bnQgICAgICAgPSByZW1fZGlydHlfY291bnQ7CisgICAgICBvbW5pX3JlcXVlc3QtPnJlY3ZfY2xlYW5fY291bnQgICAgICAgPSByZW1fY2xlYW5fY291bnQ7CisKKyAgICAgIG9tbmlfcmVxdWVzdC0+ZGF0YV9wb3J0ICAgICAgICAgICAgICA9IGF0b2kocmVtb3RlX2RhdGFfcG9ydCk7CisgICAgICBvbW5pX3JlcXVlc3QtPmlwZmFtaWx5ICAgICAgICAgICAgICAgPSBhZl90b19uZihyZW1vdGVfcmVzLT5haV9mYW1pbHkpOworICAgICAgb21uaV9yZXF1ZXN0LT5zb2NrZXRfdHlwZSAgICAgICAgICAgID0gaHN0X3RvX25zdChzb2NrZXRfdHlwZSk7CisgICAgICBvbW5pX3JlcXVlc3QtPnByb3RvY29sICAgICAgICAgICAgICAgPSBwcm90b2NvbDsKKworICAgICAgb21uaV9yZXF1ZXN0LT5pbnRlcnZhbF9idXJzdCAgICAgICAgID0gcmVtb3RlX2ludGVydmFsX2J1cnN0OworICAgICAgb21uaV9yZXF1ZXN0LT5pbnRlcnZhbF91c2VjcyAgICAgICAgID0gcmVtb3RlX2ludGVydmFsX3VzZWNzOworCisgICAgICBvbW5pX3JlcXVlc3QtPmRpcmVjdGlvbiAgICAgICAgICAgICAgPSAwOworICAgICAgLyogeWVzLCB0aGUgc2Vuc2UgaGVyZSBpcyBjb3JyZWN0IC0gaWYgd2UgYXJlIHRyYW5zbWl0dGluZywgdGhleQorCSByZWNlaXZlLCBpZiB3ZSBhcmUgcmVjZWl2aW5nLCB0aGV5IGFyZSB0cmFuc21pdHRpbmcuLi4gKi8KKyAgICAgIGlmIChkaXJlY3Rpb24gJiBORVRQRVJGX1hNSVQpCisJb21uaV9yZXF1ZXN0LT5kaXJlY3Rpb24gfD0gTkVUUEVSRl9SRUNWOworICAgICAgaWYgKGRpcmVjdGlvbiAmIE5FVFBFUkZfUkVDVikKKwlvbW5pX3JlcXVlc3QtPmRpcmVjdGlvbiB8PSBORVRQRVJGX1hNSVQ7CisKKyAgICAgIC8qIHNvbWUgdGVzdHMgbWF5IHJlcXVpcmUga25vd2xlZGdlIG9mIG91ciBsb2NhbCBhZGRyZXNzaW5nLiBzdWNoCisJIHRlc3RzIHdpbGwgZm9yIHRoZSB0aW1lIGJlaW5nIHJlcXVpcmUgdGhhdCB0aGUgdXNlciBzcGVjaWZ5IGEKKwkgbG9jYWwgSVAvbmFtZSBzbyB3ZSBjYW4gZXh0cmFjdCB0aGVtIGZyb20gdGhlIGRhdGFfc29ja2V0LiAqLworICAgICAgZ2V0c29ja25hbWUoZGF0YV9zb2NrZXQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlfYWRkciwgJm15X2FkZHJfbGVuKTsKKworICAgICAgcmV0ID0gZ2V0X3NvY2thZGRyX2ZhbWlseV9hZGRyX3BvcnQoJm15X2FkZHIsCisJCQkJCSAgbmZfdG9fYWYob21uaV9yZXF1ZXN0LT5pcGZhbWlseSksCisJCQkJCSAgb21uaV9yZXF1ZXN0LT5uZXRwZXJmX2lwLAorCQkJCQkgICYob21uaV9yZXF1ZXN0LT5uZXRwZXJmX3BvcnQpKTsKKyAgICAgIHJldCA9IGdldF9zb2NrYWRkcl9mYW1pbHlfYWRkcl9wb3J0KChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKXJlbW90ZV9yZXMtPmFpX2FkZHIsCisJCQkJCSAgbmZfdG9fYWYob21uaV9yZXF1ZXN0LT5pcGZhbWlseSksCisJCQkJCSAgb21uaV9yZXF1ZXN0LT5uZXRzZXJ2ZXJfaXAsCisJCQkJCSAgJihvbW5pX3JlcXVlc3QtPmRhdGFfcG9ydCkpOworICAgICAgLyogaWYgdGhlIHVzZXIgZGlkbid0IGV4cGxpY2l0bHkgc2V0IHRoZSByZW1vdGUgZGF0YSBhZGRyZXNzIHdlCisJIGRvbid0IHdhbnQgdG8gcGFzcyBhbG9uZyB0aGUgb25lIHdlIHBpY2tlZCBpbXBsaWNpdGx5LCBvciBhCisJIG5ldHNlcnZlciBzaXR0aW5nIGJlaGluZCBhIChCTEVUQ0gpIE5BVCB3aWxsIGJlIGFza2VkIHRvIHRyeQorCSB0byBiaW5kIHRvIHRoZSAicHVibGljIiBJUC4gKi8KKyAgICAgIGlmICghZXhwbGljaXRfZGF0YV9hZGRyZXNzKSB7CisJb21uaV9yZXF1ZXN0LT5uZXRzZXJ2ZXJfaXBbMF0gPSAwOworCW9tbmlfcmVxdWVzdC0+bmV0c2VydmVyX2lwWzFdID0gMDsKKwlvbW5pX3JlcXVlc3QtPm5ldHNlcnZlcl9pcFsyXSA9IDA7CisJb21uaV9yZXF1ZXN0LT5uZXRzZXJ2ZXJfaXBbM10gPSAwOworICAgICAgfQorICAgICAgaWYgKGRlYnVnID4gMSkgeworCWZwcmludGYod2hlcmUsIm5ldHBlcmY6ICVzOiByZXF1ZXN0aW5nIE9NTkkgdGVzdFxuIixfX0ZVTkNUSU9OX18pOworICAgICAgfQorCisgICAgICBzdHJuY3B5KG9tbmlfcmVxdWVzdC0+ZmlsbF9maWxlLAorCSAgICAgIHJlbW90ZV9maWxsX2ZpbGUsCisJICAgICAgc2l6ZW9mKG9tbmlfcmVxdWVzdC0+ZmlsbF9maWxlKSk7CisKKyAgICAgIHNlbmRfcmVxdWVzdF9uKE9NTklfUkVRVUVTVF9DT05WX0NVVE9GRik7CisKKworICAgICAgLyogdGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSBzaG91bGQgY29udGFpbiBhbGwgdGhlIHJlbGV2YW50CisJIHNvY2tldCBhbmQgb3RoZXIgcGFyYW1ldGVycyB3ZSBuZWVkIHRvIGtub3cgZm9yIHRoaXMgdGVzdC4KKwkgc28sIHdlIGNhbiBzaG92ZSB0aGVtIGJhY2sgaW50byB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGhlcmUKKwkgYW5kIGJlIG9uIG91ciB3YXkuICovCisKKyAgICAgIHJlY3ZfcmVzcG9uc2VfbihPTU5JX1JFU1BPTlNFX0NPTlZfQ1VUT0ZGKTsgLyogYnJpdHRsZSwgYnV0IGZ1bmN0aW9uYWwgKi8KKworICAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgeworCXJzcl9zaXplCSAgICA9IG9tbmlfcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemU7CisJcmVtb3RlX3JlY3Zfc2l6ZSAgICA9IG9tbmlfcmVzcG9uc2UtPnJlY2VpdmVfc2l6ZTsKKwlyc3Nfc2l6ZQkgICAgPSBvbW5pX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplOworCXJlbW90ZV9zZW5kX3NpemUgICAgPSBvbW5pX3Jlc3BvbnNlLT5zZW5kX3NpemU7CisJcmVtX25vZGVsYXkgICAgICAgICA9IG9tbmlfcmVzcG9uc2UtPmZsYWdzICYgT01OSV9OT19ERUxBWTsKKwlyZW1vdGVfdXNlX3NlbmRmaWxlID0gb21uaV9yZXNwb25zZS0+ZmxhZ3MgJiBPTU5JX1VTRV9TRU5ERklMRTsKKwlyZW1vdGVfY3B1X3VzYWdlICAgID0gb21uaV9yZXNwb25zZS0+ZmxhZ3MgJiBPTU5JX01FQVNVUkVfQ1BVOworCXJlbW90ZV9jcHVfcmF0ZSAgICAgPSBvbW5pX3Jlc3BvbnNlLT5jcHVfcmF0ZTsKKwlyZW1vdGVfc2VuZF93aWR0aCAgID0gb21uaV9yZXNwb25zZS0+c2VuZF93aWR0aDsKKwlyZW1vdGVfcmVjdl93aWR0aCAgID0gb21uaV9yZXNwb25zZS0+cmVjdl93aWR0aDsKKwlyZW1vdGVfc29ja2V0X3ByaW8gID0gb21uaV9yZXNwb25zZS0+c29ja2V0X3ByaW87CisJcmVtb3RlX3NvY2tldF90b3MgICA9IG9tbmlfcmVzcG9uc2UtPnNvY2tldF90b3M7CisKKwkvKiBtYWtlIHN1cmUgdGhhdCBwb3J0IG51bWJlcnMgYXJlIGluIG5ldHdvcmsgb3JkZXIgYmVjYXVzZQorCSAgIHJlY3ZfcmVzcG9uc2Ugd2lsbCBoYXZlIHB1dCBldmVyeXRoaW5nIGludG8gaG9zdCBvcmRlciAqLworCXNldF9wb3J0X251bWJlcihyZW1vdGVfcmVzLAorCQkJKHVuc2lnbmVkIHNob3J0KW9tbmlfcmVzcG9uc2UtPmRhdGFfcG9ydCk7CisKKwlpZiAoZGVidWcpIHsKKwkgIGZwcmludGYod2hlcmUsInJlbW90ZSBsaXN0ZW4gZG9uZS5cbiIpOworCSAgZnByaW50Zih3aGVyZSwicmVtb3RlIHBvcnQgaXMgJXVcbiIsZ2V0X3BvcnRfbnVtYmVyKHJlbW90ZV9yZXMpKTsKKwkgIGZmbHVzaCh3aGVyZSk7CisJfQorICAgICAgfQorICAgICAgZWxzZSB7CisJU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKKwlmcHJpbnRmKHdoZXJlLAorCQkibmV0cGVyZjogcmVtb3RlIGVycm9yICVkIiwKKwkJbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOworCXBlcnJvcigiIik7CisJZmZsdXNoKHdoZXJlKTsKKwlleGl0KC0xKTsKKyAgICAgIH0KKworICAgIH0KKworI2lmZGVmIFdBTlRfREVNTworICAgIC8qIGF0IHNvbWUgcG9pbnQgd2Ugd2lsbCBoYXZlIHRvIGJlIG1vcmUgY2xldmVyIGFib3V0IHRoaXMsIGJ1dAorICAgICAgIGZvciBub3cgd2Ugd29uJ3QgKi8KKworICAgIGRlbW9fcnJfc2V0dXAoMTAwKTsKKyNlbmRpZgorCisgICAgLyogaWYgd2UgYXJlIG5vdCBhIGNvbm5lY3Rpb25sZXNzIHByb3RvY29sLCB3ZSBuZWVkIHRvIGNvbm5lY3QuIGF0CisgICAgICAgc29tZSBwb2ludCBldmVuIGlmIHdlIGFyZSBhIGNvbm5lY3Rpb25sZXNzIHByb3RvY29sLCB3ZSBtYXkKKyAgICAgICBzdGlsbCB3YW50IHRvICJjb25uZWN0IiBmb3IgY29udmVuaWVuY2UgcmFqIDIwMDgtMDEtMTQgKi8KKyAgICBuZWVkX3RvX2Nvbm5lY3QgPSAocHJvdG9jb2wgIT0gSVBQUk9UT19VRFApIHx8IGxvY2FsX2Nvbm5lY3RlZDsKKworICAgIC8qIHBvc3NpYmx5IHdhaXQganVzdCBhIG1vbWVudCBiZWZvcmUgYWN0dWFsbHkgc3RhcnRpbmcgLSB1c2VkCisgICAgICAgbWFpbmx5IHdoZW4gb25lIGlzIGRvaW5nIG1hbnkgbWFueSBtYW55IGNvbmN1cnJlbnQgbmV0cGVyZgorICAgICAgIHRlc3RzICovCisgICAgV0FJVF9CRUZPUkVfREFUQV9UUkFGRklDKCk7CisKKyAgICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciB0ZXN0cyBvdmVyIGEKKyAgICAgICAicmVsaWFibGUvY29ubmVjdGlvbi1vcmllbnRlZCIgdHJhbnNwb3J0IChlZyBUQ1AsIFNDVFAsIGV0YykKKyAgICAgICB0aGlzIGNhbiBiZSBlaXRoZXIgdGltZSBvciBieXRlL3RyYW5zYWN0aW9uIGNvdW50IGJhc2VkLiAgZm9yCisgICAgICAgdW5yZWxpYWJsZSB0cmFuc3BvcnQgb3IgY29ubmVjdGlvbiB0ZXN0cyBpdCBjYW4gb25seSBiZSB0aW1lCisgICAgICAgYmFzZWQuICBoYXZpbmcgc2FpZCB0aGF0LCB3ZSByZWx5IGVudGlyZWx5IG9uIG90aGVyIGNvZGUgdG8KKyAgICAgICBlbmZvcmNlIHRoaXMgYmVmb3JlIHdlIGV2ZW4gZ2V0IGhlcmUuIHJhaiAyMDA4LTAxLTA4ICovCisKKyAgICAvKiBlbmFibGUgYSB0ZXN0X3RpbWUgb2YgMCB0byBtZWFuIGp1c3Qga2VlcCBydW5uaW5nIHVudGlsCisgICAgICAgc29tZXRoaW5nIG90aGVyIHRoYW4gYWxhcm0oKSBnZW5lcmF0ZXMgYSBzaWduYWwuIHJhagorICAgICAgIDIwMTItMDItMDEgKi8KKyAgICBpZiAoKHRlc3RfdGltZSkgfHwgKCh0ZXN0X3RyYW5zID09IDApICYmICh0ZXN0X2J5dGVzID09IDApKSkgeworICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAgaWYKKwkgd2UgYXJlIGEgcmVjdi1vbmx5IHRlc3QsIHdlIG5lZWQgdG8gcHJvdGVjdCBvdXJzZWxmIGFnYWluc3QKKwkgdGhlIHJlbW90ZSBnb2luZyBwb29mLCBidXQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QKKwkgZ2l2ZS11cCBiZWZvcmUgdGhleSBmaW5pc2gsIHNvIHdlIHdpbGwgYWRkIGEgUEFEX1RJTUUgdG8gdGhlCisJIHRpbWVyLiAgaWYgd2UgYXJlIFJSIG9yIFhNSVQsIHRoZXJlIHNob3VsZCBiZSBubyBuZWVkIGZvcgorCSBwYWRkaW5nICovCisgICAgICB0aW1lc191cCA9IDA7CisgICAgICB1bml0c19yZW1haW5pbmcgPSAwOworICAgICAgaWYgKCghbm9fY29udHJvbCkgJiYgCisJICAoTkVUUEVSRl9SRUNWX09OTFkoZGlyZWN0aW9uKSkgJiYKKwkgICgodGVzdF90cmFucyA9PSAwKSAmJiAodGVzdF9ieXRlcyA9PSAwKSkpCisJICAgIHBhZF90aW1lID0gMDsKKyAgICAgIHN0YXJ0X3RpbWVyKHRlc3RfdGltZSArIHBhZF90aW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBUaGUgdGVzdGVyIHdhbnRlZCB0byBzZW5kIGEgbnVtYmVyIG9mIGJ5dGVzIG9yIGV4Y2hhbmdlIGEKKwkgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucy4gKi8KKyAgICAgIGlmIChORVRQRVJGX0lTX1JSKGRpcmVjdGlvbikpCisJdW5pdHNfcmVtYWluaW5nID0gdGVzdF90cmFuczsKKyAgICAgIGVsc2UKKwl1bml0c19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOworICAgICAgdGltZXNfdXAgPSAxOworICAgIH0KKworICAgIC8qIGdyYWIgdGhlIGN1cnJlbnQgdGltZSwgYW5kIGlmIG5lY2Vzc2FyeSBhbnkgc3RhcnRpbmcgaW5mb3JtYXRpb24KKyAgICAgICBmb3IgdGhlIGdhdGhlcmluZyBvZiBDUFUgdXRpbGl6YXRpb24gYXQgdGhpcyBlbmQuICovCisgICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7CisKKyNpZiBkZWZpbmVkKFdBTlRfSU5URVJWQUxTKQorICAgIElOVEVSVkFMU19JTklUKCk7CisjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KKworI2lmZGVmIFdBTlRfREVNTworICAgIGlmIChkZW1vX21vZGUpIHsKKyAgICAgIGRlbW9fZmlyc3RfdGltZXN0YW1wKCk7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiB0aGUgIk9SIiBoZXJlIGFsbG93cyB1cyB0byBjb250cm9sIHRlc3QgbGVuZ3RoIGJ5IGVpdGhlcgorICAgICAgIGJ5dGUvdHJhbnNhY3Rpb24gY291bnQgb3IgYnkgdGltZXIuICB3aGVuIHRoZSB0ZXN0IGlzCisgICAgICAgYnl0ZS90cmFuc2FjdGlvbiBjb3VudCBiYXNlZCB0aGUgdGltZSB0ZXN0IHdpbGwgYWx3YXlzIGV2YWx1YXRlCisgICAgICAgZmFsc2UuIHdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZS90cmFuc2FjdGlvbgorICAgICAgIGNvdW50IHdpbGwgYWx3YXlzIGV2YWx1YXRlIHRvIGZhbHNlLiAgd2hlbiB0aGUgdGVzdCBpcyBmaW5pc2hlZAorICAgICAgIHRoZSB3aG9sZSBleHByZXNzaW9uIHdpbGwgZ28gZmFsc2UgYW5kIHdlIHdpbGwgc3RvcCBzZW5kaW5nCisgICAgICAgZGF0YS4gYXQgbGVhc3QgdGhhdCBpcyB0aGUgcGxhbiA6KSAgcmFqIDIwMDgtMDEtMDggKi8KKworICAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodW5pdHNfcmVtYWluaW5nID4gMCkpIHsKKworICAgICAgLyogd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHdoZW4gd2Ugc25hcCBhIHRpbWVzdGFtcAorCSBkZXBlbmRpbmcgb24gdGhlIHRlc3QgcGFyYW1ldGVycy4gdGhpcyBvbmUgKnNob3VsZCogY292ZXIKKwkgZXZlcnl0aGluZyBidXQgdGhlIGJ1cnN0IHJlcXVlc3QvcmVzcG9uc2UgdGVzdCAtIGZhbW91cyBsYXN0CisJIHdvcmRzIG9mIGNvdXJzZS4gcmFqIDIwMTEwMTExICovCisKKyAgICAgIGlmIChrZWVwX2hpc3RvZ3JhbSkgeworCUhJU1RfdGltZXN0YW1wX3N0YXJ0KHRpbWVfaGlzdCk7CisgICAgICB9CisKKworICAgIGFnYWluOgorCisgICAgICBpZiAobmVlZF9zb2NrZXQpIHsKKwlpZiAoY29ubmVjdGlvbl90ZXN0KQorCSAgcGlja19uZXh0X3BvcnRfbnVtYmVyKGxvY2FsX3JlcyxyZW1vdGVfcmVzKTsKKworCWRhdGFfc29ja2V0ID0gb21uaV9jcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKKworCWlmIChkYXRhX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCkgeworCSAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX29tbmk6IHVuYWJsZSB0byBjcmVhdGUgZGF0YSBzb2NrZXQiKTsKKwkgIGV4aXQoMSk7CisJfQorCW5lZWRfc29ja2V0ID0gMDsKKyNpZiBkZWZpbmVkKF9fbGludXgpCisJaWYgKChwcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgJiYKKwkgICAgKGRpcmVjdGlvbiAmIE5FVFBFUkZfWE1JVCkpIHsKKwkgIGVuYWJsZV9lbm9idWZzKGRhdGFfc29ja2V0KTsKKwl9CisjZW5kaWYKKyAgICAgIH0KKworICAgICAgLyogb25seSBjb25uZWN0IGlmIGFuZCB3aGVuIHdlIG5lZWQgdG8gKi8KKyAgICAgIGlmIChuZWVkX3RvX2Nvbm5lY3QgJiYgIXVzZV9mYXN0b3BlbikgeworCS8qIGFzc2lnbiB0byBkYXRhX3NvY2tldCBzaW5jZSBjb25uZWN0X2RhdGFfc29ja2V0IHJldHVybnMKKwkgICBTT0NLRVQgYW5kIG5vdCBpbnQgdGhhbmtzIHRvIFdpbmRvd3MuICovCisJcmV0ID0gY29ubmVjdF9kYXRhX3NvY2tldChkYXRhX3NvY2tldCxyZW1vdGVfcmVzLGRvbnRfZ2l2ZV91cCk7CisJaWYgKHJldCA9PSAwKSB7CisJICBjb25uZWN0ZWQgPSAxOworCSAgbmVlZF90b19jb25uZWN0ID0gMDsKKwl9CisJZWxzZSBpZiAocmV0ID09IC0xKSB7CisJICB0aW1lc191cCA9IDE7CisJICB0aW1lZF9vdXQgPSAxOworCSAgYnJlYWs7CisJfQorCWVsc2UgaWYgKChyZXQgPT0gLTIpICYmIGNvbm5lY3Rpb25fdGVzdCkgeworCSAgLyogdHJhbnNpZW50IGVycm9yICBvbiBhIGNvbm5lY3Rpb24gdGVzdCBtZWFucyBnbyBhcm91bmQgYW5kCisJICAgICB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIGxvY2FsIHBvcnQgbnVtYmVyICovCisJICBpZiAoZGVidWcpIHsKKwkgICAgZnByaW50Zih3aGVyZSwidHJhbnNpZW50ISB0cmFuc2llbnQhIHRvcnBlZG8gaW4gdGhlIHdhdGVyIVxuIik7CisJICAgIGZmbHVzaCh3aGVyZSk7CisJICB9CisJICBjbG9zZShkYXRhX3NvY2tldCk7CisJICBjb25uZWN0ZWQgPSAwOyAgLyogcHJvYmFibHkgcmVkdW5kYW50IGJ1dCB3aGF0IHRoZSBoZWNrLi4uICovCisJICBuZWVkX3NvY2tldCA9IDE7CisJICBuZWVkX3RvX2Nvbm5lY3QgPSAxOworCSAgLyogdGhpcyB3aWxsIHN0dWZmIHRoZSBuZXh0IGxvY2FsIHBvcnQgbnVtYmVyIHdpdGhpbiBib3VuZHMKKwkgICAgIGludG8gb3VyIGxvY2FsIHJlcywgYW5kIHRoZW4gd2hlbiB0aGUgZ290byBoYXMgdXMKKwkgICAgIGFsbG9jYXRpbmcgYSBuZXcgc29ja2V0IGl0IHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGggdGhlCisJICAgICBiaW5kKCkgY2FsbCAqLworCSAgcGlja19uZXh0X3BvcnRfbnVtYmVyKGxvY2FsX3JlcyxyZW1vdGVfcmVzKTsKKwkgIC8qIHllcyBWaXJnaW5pYSwgYSBnb3RvLiAgcGVyaGFwcyBvbmUgZGF5IHdlIHdpbGwgcmV3cml0ZQorCSAgICAgdGhlIGNvZGUgdG8gYXZvaWQgaXQgYnV0IGZvciBub3csIGEgZ290by4uLiByYWogKi8KKwkgIGdvdG8gYWdhaW47CisJfQorCWVsc2UgeworCSAgLyogZWl0aGVyIHRoaXMgd2FzIGEgaGFyZCBmYWlsdXJlICgtMykgb3IgYSBzb2Z0IGZhaWx1cmUgb24KKwkgICAgIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgY29ubmVjdGlvbiB0ZXN0ICovCisJICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfb21uaTogY29ubmVjdF9kYXRhX3NvY2tldCBmYWlsZWQiKTsKKwkgIGV4aXQoMSk7CisJfQorICAgICAgfQorCisjaWZkZWYgV0FOVF9GSVJTVF9CVVJTVAorICAgICAgLyogTG9uZyBhZ28gYW5kIGZhciBhd2F5LCBvbiBqdXN0IGFib3V0IGFueSAqbml4LCBvbmUgY291bGQKKwkgYXZvaWQgaGF2aW5nIG11bHRpcGxlIHJlcXVlc3RzIGJ1bmRsZWQgaW50byB0aGUgc2FtZSBUQ1AKKwkgc2VnbWVudCBzaW1wbHkgYnkgc2V0dGluZyBUQ1BfTk9ERUxBWSBhbmQgcGVyaGFwcyBub3QgdHJ5aW5nCisJIHRvIGhhdmUgbW9yZSBvdXRzdGFuZGluZyBhdCBvbmUgdGltZSB0aGFuIG91ciBndWVzc3RpbWF0ZSBhcworCSB0byB0aGUgVENQIGNvbmdlc3Rpb24gd2luZG93LiAgSW4gdGhhdCB3YXkgb25lIGNvdWxkIHVzZSBhCisJIGJ1cnN0IG1vZGUgVENQX1JSIHRlc3QgYXMgcGFydCBvZiB0cnlpbmcgdG8gbWVhc3VyZSBtYXhpbXVtCisJIHBhY2tldHMgcGVyIHNlY29uZCAoUFBTKSBvbiBhIHN5c3RlbSBvciB0aHJvdWdoIGEgTklDICh3ZWxsLAorCSBhc3N1bWluZyB0aGVyZSB3ZXJlbid0IG1hbnkgcmV0cmFuc21pc3Npb25zIGFueXdheSkgVGhlc2UKKwkgZGF5cyB3aXRoIExpbnV4IHRoZSBkb21pbmFudCAqbml4IGFuZCB3aXRoIGl0IGhhdmluZyBtYWRlIGl0CisJIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIGRvIGFueSBsb25nZXIsIGl0IGlzIG5vIGxvbmdlciB3b3J0aAorCSBpdCB0byB0cnkgdGhlIGFwcGxpY2F0aW9uLWxheWVyIGJhY2tmbGlwcy4gIFNvLCBJIGFtIHJlbW92aW5nCisJIHRoZW0uICBBdCBzb21lIHBvaW50IHdlJ2xsIHNpbXBseSBoYXZlIHRvIGVuaGFuY2UgdGhpcyBjb2RlCisJIHRvIGRlYWwgd2l0aCBtdWx0aXBsZSBjb25uZWN0aW9ucyBhdCBvbmUgdGltZSwgZWFjaCB3aXRoIGp1c3QKKwkgdGhlIG9uZSB0cmFuc2FjdGlvbiBpbiBmbGlnaHQgZm9yIG91ciBQUFMgdGVzdGluZy4gIE11bHRpcGxlCisJIG5ldHBlcmZzLCBlYWNoIHdpdGggb25lIGNvbm5lY3Rpb24gYW5kIG9uZSB0cmFuc2FjdGlvbiBpbgorCSBmbGlnaHQgcmFwaWRseSBiZWNvbWVzIGEgY29udGV4dC1zd2l0Y2hpbmcgYmVuY2htYXJrIHJhdGhlcgorCSB0aGFuICJuZXR3b3JraW5nIi4gIHJhaiAyMDE1LTA0LTIwICovCisKKyAgICAgIHdoaWxlICgoZmlyc3RfYnVyc3Rfc2l6ZSA+IDApICYmCisJICAgICAocmVxdWVzdHNfb3V0c3RhbmRpbmcgPCBmaXJzdF9idXJzdF9zaXplKSAmJgorCSAgICAgKE5FVFBFUkZfSVNfUlIoZGlyZWN0aW9uKSkgJiYKKwkgICAgICghY29ubmVjdGlvbl90ZXN0KSkgeworCWlmIChkZWJ1ZyA+IDEpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgImluamVjdGluZywgcmVxX291dHN0YW5kaW5nICVkIGJ1cnN0ICVkXG4iLAorCQkgIHJlcXVlc3RzX291dHN0YW5kaW5nLAorCQkgIGZpcnN0X2J1cnN0X3NpemUpOworCX0KKworCWlmICgocmV0ID0gc2VuZF9kYXRhKGRhdGFfc29ja2V0LAorCQkJICAgICBzZW5kX3JpbmcsCisJCQkgICAgIGJ5dGVzX3RvX3NlbmQsCisJCQkgICAgIChjb25uZWN0ZWQpID8gTlVMTCA6IHJlbW90ZV9yZXMtPmFpX2FkZHIsCisJCQkgICAgIHJlbW90ZV9yZXMtPmFpX2FkZHJsZW4sCisJCQkgICAgIHByb3RvY29sKSkgIT0gYnl0ZXNfdG9fc2VuZCkgeworCSAgLyogaW4gdGhlb3J5LCB3ZSBzaG91bGQgbmV2ZXIgaGl0IHRoZSBlbmQgb2YgdGhlIHRlc3QgaW4gdGhlCisJICAgICBmaXJzdCBidXJzdC4gIGhvd2V2ZXIsIGluIHByYWN0aWNlIEkgaGF2ZSBpbmRlZWQgc2VlbgorCSAgICAgc29tZSBFTk9CVUZTIGhhcHBlbiBpbiBzb21lIGFnZ3JlZ2F0ZSB0ZXN0cy4gIHNvIHdlIG5lZWQKKwkgICAgIHRvIGJlIGEgYml0IG1vcmUgc29waGlzdGljYXRlZCBpbiBob3cgd2UgaGFuZGxlIGl0LiByYWoKKwkgICAgIDIwMTMwNTE2ICovCisJICBpZiAocmV0ICE9IC0yKSB7CisJICAgIHBlcnJvcigic2VuZF9vbW5pOiBpbml0aWFsIGJ1cnN0IGRhdGEgc2VuZCBlcnJvciIpOworCSAgICBleGl0KC0xKTsKKwkgIH0KKwkgIGZhaWxlZF9zZW5kcysrOworCX0KKwllbHNlIHsKKwkgIGxvY2FsX3NlbmRfY2FsbHMgKz0gMTsKKwkgIHJlcXVlc3RzX291dHN0YW5kaW5nICs9IDE7CisJfQorCisJLyogeWVzLCBpdCBzZWVtcyBhIHRyaWZsZSBvZGQgaGF2aW5nIHRoaXMgKmFmdGVyKiB0aGUgc2VuZCgpCisJICAganVzdCBhYm92ZSwgYnV0IHJlYWxseSB0aGlzIGlzIGZvciB0aGUgbmV4dCBzZW5kKCkgb3IKKwkgICByZWN2KCkgY2FsbCBiZWxvdyBvciBpbiB0aGUgaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCwgYW5kIHRoZQorCSAgIGZpcnN0IEhJU1RfdGltZXN0YW1wX3N0YXJ0KCkgY2FsbCBhdCB0aGUgdG9wIG9mIHRoZQorCSAgIG91dGVybW9zdCBsb29wIHdpbGwgYmUgZm9yIHRoZSBmaXJzdCBzZW5kKCkgY2FsbCBoZXJlIGluCisJICAgdGhlIGJ1cnN0IGNvZGUuICBjbGVhciBhaW4ndCBpdD8tKSByYWogMjAxMTAxMTEgKi8KKworCWlmIChrZWVwX2hpc3RvZ3JhbSkgeworCSAgSElTVF90aW1lc3RhbXBfc3RhcnQodGltZV9oaXN0KTsKKwl9CisgICAgICB9CisKKyNlbmRpZiAvKiBXQU5UX0ZJUlNUX0JVUlNUICovCisKKyAgICAgIC8qIGlmIHdlIHNob3VsZCB0cnkgdG8gc2VuZCBzb21ldGhpbmcsIHRoZW4gYnkgYWxsIG1lYW5zLCBsZXQgdXMKKwkgdHJ5IHRvIHNlbmQgc29tZXRoaW5nLiAqLworICAgICAgaWYgKGRpcmVjdGlvbiAmIE5FVFBFUkZfWE1JVCkgeworCisJcmV0ID0gc2VuZF9kYXRhKGRhdGFfc29ja2V0LAorCQkJc2VuZF9yaW5nLAorCQkJYnl0ZXNfdG9fc2VuZCwKKwkJCShjb25uZWN0ZWQpID8gTlVMTCA6IHJlbW90ZV9yZXMtPmFpX2FkZHIsCisJCQkvKiBpZiB0aGUgZGVzdGluYXRpb24gYWJvdmUgaXMgTlVMTCwgdGhpcyBpcyBpZ25vcmVkICovCisJCQlyZW1vdGVfcmVzLT5haV9hZGRybGVuLAorCQkJcHJvdG9jb2wpOworCS8qIHRoZSBvcmRlciBvZiB0aGVzZSBpZidzIHdpbGwgc2VlbSBhIHRyaWZmbGUgc3RyYW5nZSwgYnV0IHRoZXkKKwkgICBhcmUgbXkgYmVzdCBndWVzcyBhcyB0byBvcmRlciBvZiBwcm9iYWJpbHR5IGFuZC9vciBpbXBvcnRhbmNlCisJICAgdG8gdGhlIG92ZXJoZWFkIHJhaiAyMDA4LTAxLTA5Ki8KKwlpZiAocmV0ID09IGJ5dGVzX3RvX3NlbmQpIHsKKwkgIC8qIGlmIHRoaXMgaXMgYSBzZW5kLW9ubHkgdGVzdCBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQgd2UKKwkgICAgIGRlY3JlbWVudCB1bml0c19yZW1haW5pbmcgYnkgdGhlIGJ5dGVzIHNlbnQgKi8KKwkgIGlmICghKGRpcmVjdGlvbiAmIE5FVFBFUkZfUkVDVikgJiYgKHVuaXRzX3JlbWFpbmluZyA+IDApKSB7CisJICAgIHVuaXRzX3JlbWFpbmluZyAtPSByZXQ7CisJICB9CisJICBieXRlc19zZW50ICs9IHJldDsKKwkgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKKwkgIGxvY2FsX3NlbmRfY2FsbHMrKzsKKwl9CisJZWxzZSBpZiAocmV0ID09IC0yKSB7CisJICAvKiB3aGF0IHRvIGRvIGhlcmUgLTIgbWVhbnMgYSBub24tZmF0YWwgZXJyb3IgLSBwcm9iYWJseQorCSAgICAgRU5PQlVGUyBhbmQgc28gb3VyIHNlbmQgZGlkbid0IGhhcHBlbi4gIGluIHRoZSBvbGQgY29kZSBmb3IKKwkgICAgIFVEUF9TVFJFQU0gd2Ugd291bGQganVzdCBjb250aW51ZSBpbiB0aGUgd2hpbGUgbG9vcC4gIGl0CisJICAgICBpc24ndCBjbGVhciB0aGF0IGlzIHdoYXQgdG8gZG8gaGVyZSwgc28gd2Ugd2lsbCBzaW1wbHkKKwkgICAgIGluY3JlbWVudCB0aGUgZmFpbGVkX3NlbmRzIHN0YXQgYW5kIGZhbGwtdGhyb3VnaC4gSWYgdGhpcworCSAgICAgaXMgYSBVRFBfU1RSRUFNIHN0eWxlIG9mIHRlc3QsIHRoZSBuZXQgZWZmZWN0IHNob3VsZCBiZSB0aGUKKwkgICAgIHNhbWUuIGlmIHRoaXMgaXMgYSBVRFBfUlIgd2l0aCBhIHJlYWxseS1iaWcgYnVyc3QgY291bnQsIEkKKwkgICAgIGRvbid0IHRoaW5rIHdlIHdlcmUgY2hlY2tpbmcgZm9yIEVOT0JVRlMgdGhlcmUgYW55d2F5IGFuZAorCSAgICAgc28gd291bGQgaGF2ZSBmYWlsZWQuICBIZXJlIHdlIGNhbiBqdXN0IGxldCB0aGluZ3MKKwkgICAgIHNsaWRlLiAqLworCSAgZmFpbGVkX3NlbmRzKys7CisJfQorCWVsc2UgaWYgKHJldCA9PSAwKSB7CisJICAvKiB3YXMgdGhpcyBhIHplcm8tYnl0ZSBzZW5kPyBpZiBpdCB3YXMsIHRoZW4gb3N0ZW5zaWJseSB3ZQorCSAgICAgd291bGQgaGl0IHRoZSByZXQgPT0gYnl0ZXNfdG9fc2VuZCBjYXNlIHdoaWNoIG1lYW5zIHdlJ2QKKwkgICAgIG5ldmVyIGdldCBoZXJlIGFzIHdlIGFyZSB1c2luZyBibG9ja2luZyBzZW1hbnRpY3MgKi8KKwkgIGZwcmludGYod2hlcmUsIkhPVyBESUQgSSBHRVQgSEVSRT9cbiIpOworCSAgZmZsdXNoKHdoZXJlKTsKKwl9CisJZWxzZSBpZiAocmV0ID09IC0xKSB7CisJICB0aW1lc191cCA9IDE7CisJICB0aW1lZF9vdXQgPSAxOworCSAgYnJlYWs7CisJfQorCWVsc2UgeworCSAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX29tbmk6IHNlbmRfZGF0YSBmYWlsZWQiKTsKKwkgIGV4aXQoMSk7CisJfQorCisgICAgICB9CisKKyNpZmRlZiBXQU5UX0ZJUlNUX0JVUlNUCisgICAgICAvKiBpdCBpc24ndCBjbGVhciB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBkaXJlY3Rpb25zIGhlcmUuICB0aGUKKwkgaW5jcmVtZW50IHNob3VsZCBiZSBjaGVhcGVyIHRoYW4gdGhlIGNvbmRpdGlvbmFsLCBhbmQgaXQKKwkgc2hvdWxkbid0IGh1cnQgdGhlIG90aGVyIGRpcmVjdGlvbnMgYmVjYXVzZSB0aGV5J2xsIG5ldmVyCisJIGxvb2sgYXQgdGhlbS4gZmFtb3VzIGxhc3Qgd29yZHMgb2YgcmFqIDIwMDgtMDEtMjUgKi8KKyAgICAgIHJlcXVlc3RzX291dHN0YW5kaW5nICs9IDE7CisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisgICAgICAvKiB0aGlzIGlzIHVzZWQgc28gdGhlIHRpbWVyIHRocmVhZCBjYW4gY2xvc2UgdGhlIHNvY2tldCBvdXQKKwlmcm9tIHVuZGVyIHVzLCB3aGljaCB0byBkYXRlIGlzIHRoZSBlYXNpZXN0L2NsZWFuZXN0L2xlYXN0CisJV2luZG93cy1zcGVjaWZpYyB3YXkgSSBjYW4gZmluZCB0byBmb3JjZSB0aGUgd2luc29jayBjYWxscyB0bworCXJldHVybiBXU0FFSU5UUiB3aXRoIHRoZSB0ZXN0IGlzIG92ZXIuIGFueXRoaW5nIHRoYXQgd2lsbCBydW4KKwlvbiA5NSBhbmQgTlQgYW5kIGlzIGNsb3NlciB0byB3aGF0IG5ldHBlcmYgZXhwZWN0cyBmcm9tIFVuaXgKKwlzaWduYWxzIGFuZCBzdWNoIHdvdWxkIGJlIGFwcHJlY2lhdGVkIHJhaiAxLzk2ICovCisgICAgICB3aW5fa2x1ZGdlX3NvY2tldCA9IGRhdGFfc29ja2V0OworI2VuZGlmIC8qIFdJTjMyICovCisKKyAgICAgIGlmIChkaXJlY3Rpb24gJiBORVRQRVJGX1JFQ1YpIHsKKwlycmV0ID0gcmVjdl9kYXRhKGRhdGFfc29ja2V0LAorCQkJcmVjdl9yaW5nLAorCQkJYnl0ZXNfdG9fcmVjdiwKKwkJCShjb25uZWN0ZWQpID8gTlVMTCA6IChzdHJ1Y3Qgc29ja2FkZHIgKikmcmVtb3RlX2FkZHIsCisJCQkvKiBpZiByZW1vdGVfYWRkciBOVUxMIHRoaXMgaXMgaWdub3JlZCAqLworCQkJJnJlbW90ZV9hZGRyX2xlbiwKKwkJCS8qIGlmIFhNSVQgYWxzbyBzZXQgdGhpcyBpcyBSUiBzbyB3YWl0YWxsICovCisJCQkoZGlyZWN0aW9uICYgTkVUUEVSRl9YTUlUKSA/IE5FVFBFUkZfV0FJVEFMTDogMCwKKwkJCSZ0ZW1wX3JlY3ZzKTsKKwlpZiAocnJldCA+IDApIHsKKwkgIC8qIGlmIHRoaXMgaXMgYSByZWN2LW9ubHkgdGVzdCBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQgd2UKKwkgICAgIGRlY3JlbWVudCB0aGUgdW5pdHNfcmVtYWluaW5nIGJ5IHRoZSBieXRlcyByZWNlaXZlZCAqLworCSAgaWYgKCEoZGlyZWN0aW9uICYgTkVUUEVSRl9YTUlUKSAmJiAodW5pdHNfcmVtYWluaW5nID4gMCkpIHsKKwkgICAgdW5pdHNfcmVtYWluaW5nIC09IHJyZXQ7CisJICB9CisJICBieXRlc19yZWNlaXZlZCArPSBycmV0OworCSAgbG9jYWxfcmVjZWl2ZV9jYWxscyArPSB0ZW1wX3JlY3ZzOworCX0KKwllbHNlIGlmIChycmV0ID09IDApIHsKKwkgIC8qIGlzIHRoaXMgdGhlIGVuZCBvZiBhIHRlc3QsIGp1c3QgYSB6ZXJvLWJ5dGUgcmVjdiwgb3IKKwkgICAgIHNvbWV0aGluZyBlbHNlPyB0aGF0IGlzIGFuIGV4Y2VlZGluZ2x5IGdvb2QgcXVlc3Rpb24gYW5kCisJICAgICBvbmUgZm9yIHdoaWNoIEkgZG9uJ3QgcHJlc2VudGx5IGhhdmUgYSBnb29kIGFuc3dlciwgYnV0CisJICAgICB0aGF0IHdvbid0IHN0b3AgbWUgZnJvbSBndWVzc2luZyA6KSByYWogMjAwOC0wMS0wOSAqLworCSAgaWYgKCEoKGNvbm5lY3Rpb25fdGVzdCkgfHwgKG51bGxfbWVzc2FnZV9vaykpKSB7CisJICAgIC8qIGlmIGl0IGlzIG5laXRoZXIgYSBjb25uZWN0aW9uX3Rlc3Qgbm9yIG51bGxfbWVzc2FnZV9vayBpdAorCSAgICAgICBtdXN0IGJlIHRoZSBlbmQgb2YgdGhlIHRlc3QgKi8KKwkgICAgdGltZXNfdXAgPSAxOyAvKiBvc3RlbnNpYmx5IHRoZSBzaWduYWwgaGFuZGxlciBkaWQgdGhpcyAqLworCSAgICBicmVhazsKKwkgIH0KKwkgIGxvY2FsX3JlY2VpdmVfY2FsbHMgKz0gdGVtcF9yZWN2czsKKwl9CisJZWxzZSBpZiAocnJldCA9PSAtMSkgeworCSAgLyogdGVzdCB0aW1lZC1vdXQgKi8KKwkgIHRpbWVzX3VwID0gMTsKKwkgIHRpbWVkX291dCA9IDE7CisJICBicmVhazsKKwl9CisJZWxzZSBpZiAocnJldCA9PSAtMikgeworCSAgLyogd2UgdGltZWQtb3V0IG9uIGEgZGF0YSByZWNlaXZlLiAgdGhpcyBpcyBvbmx5IGFsbG93ZWQgZm9yCisJICAgICBhIFVEUF9SUiB0ZXN0LiAgd2Ugd2FudCB0byBzZXQgdGhpbmdzIHVwIHNvIHdlIHN0YXJ0CisJICAgICByYW1waW5nIHVwIGFnYWluIGxpa2Ugd2Ugd2VyZSBhdCB0aGUgYmVnaW5uaW5nLiBpZiB3ZQorCSAgICAgYWN0dWFsbHkgdGltZW91dCBpdCBtZWFucyB0aGF0IGFsbCBoYXMgYmVlbiBsb3N0LiAgb3IgYXQKKwkgICAgIGxlYXN0IHdlIGFzc3VtZSBzbyAqLworCSAgaWYgKGRlYnVnKSB7CisJICAgIGZwcmludGYod2hlcmUsIlRpbWVvdXQgcmVjZWl2aW5nIHJlc29uc2UgZnJvbSByZW1vdGVcbiIpOworCSAgICBmZmx1c2god2hlcmUpOworCSAgfQorI2lmZGVmIFdBTlRfRklSU1RfQlVSU1QKKwkgIGlmIChmaXJzdF9idXJzdF9zaXplKSB7CisJICAgIHJlcXVlc3RzX291dHN0YW5kaW5nID0gMDsKKwkgIH0KKyNlbmRpZgorCSAgaWYgKGtlZXBfaGlzdG9ncmFtKSB7CisJICAgIEhJU1RfcHVyZ2UodGltZV9oaXN0KTsKKwkgIH0KKyNpZmRlZiBXQU5UX0RFTU8KKwkgIC8qICJzdGFydCBvdmVyIiBvbiBhIGRlbW8gaW50ZXJ2YWwuIHdlIHdpbGwgZm9yZ2V0IGFib3V0CisJICBldmVyeXRoaW5nIHRoYXQgaGFwcGVuZWQgaW4gdGhlIGRlbW8gaW50ZXJ2YWwgdXAgdG8gdGhlCisJICB0aW1lb3V0IGFuZCBiZWdpbiBmcmVzaC4gKi8KKwkgIGRlbW9fcmVzZXQoKTsgCisjZW5kaWYgLyogV0FOVF9ERU1PICovCisKKwkgIGNvbnRpbnVlOworCX0KKwllbHNlIHsKKwkgIC8qIGFueXRoaW5nIGVsc2UgaXMgYmFkICovCisJICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfb21uaTogcmVjdl9kYXRhIGZhaWxlZCIpOworCSAgZXhpdCgxKTsKKwl9CisJcmVjdl9yaW5nID0gcmVjdl9yaW5nLT5uZXh0OworCisjaWZkZWYgV0FOVF9GSVJTVF9CVVJTVAorCS8qIHNvLCBzaW5jZSB3ZSd2ZSBnb3R0ZW4gYSByZXNwb25zZSBiYWNrLCB1cGRhdGUgdGhlCisJICAgYm9va2tlZXBpbmcgYWNjb3JkaW5nbHkuICB0aGVyZSBpcyBvbmUgbGVzcyByZXF1ZXN0CisJICAgb3V0c3RhbmRpbmcgYW5kIHdlIGNhbiBwdXQgb25lIG1vcmUgb3V0IHRoZXJlIHRoYW4KKwkgICBiZWZvcmUuICovCisJcmVxdWVzdHNfb3V0c3RhbmRpbmcgLT0gMTsKKyNlbmRpZgorCisgICAgICB9CisKKyAgICAgIC8qIGlmIHRoaXMgaXMgYSBjb25uZWN0aW9uIHRlc3QsIHdlIHdhbnQgdG8gZG8gc29tZSBzdHVmZiBhYm91dAorCSBjb25uZWN0aW9uIGNsb3NlIGhlcmUgaW4gdGhlIHRlc3QgbG9vcC4gcmFqIDIwMDgtMDEtMDggKi8KKyAgICAgIGlmIChjb25uZWN0aW9uX3Rlc3QpIHsKKworI2lmZGVmIF9fbGludXgKKwkvKiBzbywgIkxpbnV4IiB3aXRoIGF1dG90dW5pbmcgbGlrZXMgdG8gYWx0ZXIgdGhlIHNvY2tldCBidWZmZXIKKwkgICBzaXplcyBvdmVyIHRoZSBsaWZlIG9mIHRoZSBjb25uZWN0aW9uLCBidXQgb25seSBkb2VzIHNvIHdoZW4KKwkgICBvbmUgdGFrZXMgdGhlIGRlZmF1bHRzIGF0IHRpbWUgb2Ygc29ja2V0IGNyZWF0aW9uLiAgaWYgd2UKKwkgICB0b29rIHRob3NlIGRlZmF1bHRzLCB3ZSBzaG91bGQgaW5xdWlyZSBhcyB0byB3aGF0IHRoZSB2YWx1ZXMKKwkgICB1bHRpbWF0ZWx5IGJlY2FtZS4gcmFqIDIwMDgtMDEtMTUgKi8KKwkvKiBob3dldmVyIGFubm95aW5nIGhhdmluZyB0byBkbyB0aGlzIG1pZ2h0IGJlLCBpdCByZWFsbHkKKwkgICBzaG91bGRuJ3QgYmUgZG9uZSBvdmVyIGFuZCBvdmVyIGFnYWluLiBpbnN0ZWFkIHdlIHdpbGwKKwkgICBhc3N1bWUgaXQgZG9lcyBub3QgY2hhbmdlLCB3aGljaCBpcyBmaW5lIHNpbmNlIHdlIHdvdWxkCisJICAgaGF2ZSBvbmx5IHJlcG9ydGVkIG9uZSBvZiB0aGVtIGFueXdheS4gcmFqIDIwMTAwOTE3ICovCisJaWYgKChsc3Jfc2l6ZV9yZXEgPCAwKSAmJiAoLTEgPT0gbHNyX3NpemVfZW5kKSkKKwkgIGdldF9zb2NrX2J1ZmZlcihkYXRhX3NvY2tldCwgUkVDVl9CVUZGRVIsICZsc3Jfc2l6ZV9lbmQpOworCWVsc2UKKwkgIGxzcl9zaXplX2VuZCA9IGxzcl9zaXplOworCWlmICgobHNzX3NpemVfcmVxIDwgMCkgJiYgKC0xID09IGxzc19zaXplX2VuZCkpCisJICBnZXRfc29ja19idWZmZXIoZGF0YV9zb2NrZXQsIFNFTkRfQlVGRkVSLCAmbHNzX3NpemVfZW5kKTsKKwllbHNlCisJICBsc3Nfc2l6ZV9lbmQgPSBsc3Nfc2l6ZTsKKyNlbHNlCisJbHNyX3NpemVfZW5kID0gbHNyX3NpemU7CisJbHNzX3NpemVfZW5kID0gbHNzX3NpemU7CisjZW5kaWYKKworCS8qIHdlIHdpbGwgb25seSBtYWtlIHRoaXMgY2FsbCB0aGUgb25lIHRpbWUgLSBhZnRlciB0aGUgZmlyc3QKKwkgICBjYWxsLCB0aGUgdmFsdWUgd2lsbCBiZSByZWFsIG9yIC0xLiBpZiB0aGlzIGlzIGEgY29ubmVjdGlvbgorCSAgIHRlc3Qgd2Ugd2FudCB0byBkbyB0aGlzIGhlcmUgYmVjYXVzZSBsYXRlciB3ZSB3b24ndCBiZQorCSAgIGNvbm5lY3RlZCBhbmQgdGhlIGRhdGEgbWF5IG5vIGxvbmdlciBiZSBhdmFpbGFibGUuICovCisJaWYgKHRyYW5zcG9ydF9tc3MgPT0gLTIpCisJICBnZXRfdHJhbnNwb3J0X2luZm8oZGF0YV9zb2NrZXQsCisJCQkgICAgICZ0cmFuc3BvcnRfbXNzLAorCQkJICAgICBsb2NhbF9yZXMtPmFpX3Byb3RvY29sKTsKKworCisJcmV0ID0gZGlzY29ubmVjdF9kYXRhX3NvY2tldChkYXRhX3NvY2tldCwKKwkJCQkgICAgIChub19jb250cm9sKSA/IDEgOiAwLAorCQkJCSAgICAgMSwKKwkJCQkgICAgIE5VTEwsCisJCQkJICAgICAwKTsKKwlpZiAocmV0ID09IDApIHsKKwkgIC8qIHdlIHdpbGwgbmVlZCBhIG5ldyBjb25uZWN0aW9uIHRvIGJlIGVzdGFibGlzaGVkIG5leHQgdGltZQorCSAgICAgYXJvdW5kIHRoZSBsb29wLiAgSG93ZXZlciwgdGhlIG5leHQgdGltZSBhcm91bmQgdGhlIGxvb3AKKwkgICAgIHdpbGwgYWxyZWFkeSBiZSBwaWNraW5nIHRoZSBuZXh0IHBvcnQgbnVtYmVyICovCisJICBuZWVkX3RvX2Nvbm5lY3QgPSAxOworCSAgY29ubmVjdGVkID0gMDsKKwkgIG5lZWRfc29ja2V0ID0gMTsKKwl9CisJZWxzZSBpZiAocmV0ID09IC0xKSB7CisJICB0aW1lc191cCA9IDE7CisJICB0aW1lZF9vdXQgPSAxOworCSAgYnJlYWs7CisJfQorCWVsc2UgeworCSAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX29tbmk6IGRpc2Nvbm5lY3RfZGF0YV9zb2NrZXQgZmFpbGVkIik7CisJICBleGl0KDEpOworCX0KKyAgICAgIH0KKworCisgICAgICBpZiAoa2VlcF9oaXN0b2dyYW0pIHsKKwlISVNUX3RpbWVzdGFtcF9zdG9wX2FkZCh0aW1lX2hpc3QpOworICAgICAgfQorCisjaWZkZWYgV0FOVF9ERU1PCisgICAgICBpZiAoTkVUUEVSRl9JU19SUihkaXJlY3Rpb24pKSB7CisJaWYgKGxpYmZtdCA9PSAneCcpIHsKKwkgIGRlbW9faW50ZXJ2YWxfdGljaygxKTsKKwl9CisJZWxzZSB7CisJICBkZW1vX2ludGVydmFsX3RpY2socmVxX3NpemUgKyByc3Bfc2l6ZSk7CisJfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoTkVUUEVSRl9YTUlUX09OTFkoZGlyZWN0aW9uKSkgeworCWRlbW9faW50ZXJ2YWxfdGljayhieXRlc190b19zZW5kKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworCWRlbW9faW50ZXJ2YWxfdGljayhycmV0KTsKKyAgICAgIH0KKyNlbmRpZgorCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyAgICAgIElOVEVSVkFMU19XQUlUKCk7CisjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KKworCisgICAgICAvKiB3YXMgdGhpcyBhICJ0cmFuc2FjdGlvbiIgdGVzdD8gKi8KKyAgICAgIGlmIChORVRQRVJGX0lTX1JSKGRpcmVjdGlvbikpIHsKKwl0cmFuc19jb21wbGV0ZWQrKzsKKwlpZiAodW5pdHNfcmVtYWluaW5nKSB7CisJICB1bml0c19yZW1haW5pbmctLTsKKwl9CisgICAgICB9CisKKworICAgIH0KKworICAgIC8qIHdlIGFyZSBub3csIG9zdGVuc2libHksIGF0IHRoZSBlbmQgb2YgdGhpcyBpdGVyYXRpb24gKi8KKworI2lmIGRlZmluZWQoV0FOVF9ERU1PKQorICAgIC8qIGlmIHdlIHdlcmUgaW4gZGVtbyBtb2RlIHRoaXMgd2lsbCBlbnN1cmUgb25lIGZpbmFsIGludGVyaW0KKyAgICAgICByZXN1bHQsIHdoaWNoLCBuYXR1cmFsbHkgbWlnaHQgYmUgYSBiaXQgZWFybHkgOikgKi8KKyAgICBkZW1vX2ludGVydmFsX2ZpbmFsKCk7CisjZW5kaWYKKworICAgIGlmICh0cmFuc3BvcnRfbXNzID09IC0yKQorICAgICAgZ2V0X3RyYW5zcG9ydF9pbmZvKGRhdGFfc29ja2V0LAorCQkJICZ0cmFuc3BvcnRfbXNzLAorCQkJIGxvY2FsX3Jlcy0+YWlfcHJvdG9jb2wpOworICAgIGxvY2FsX3RyYW5zcG9ydF9yZXRyYW5zID0gZ2V0X3RyYW5zcG9ydF9yZXRyYW5zKGRhdGFfc29ja2V0LAorCQkJCQkJICAgIGxvY2FsX3Jlcy0+YWlfcHJvdG9jb2wpOworCisKKyAgICAvKiBzbywgaWYgd2UgaGF2ZS9oYWQgYSBkYXRhIGNvbm5lY3Rpb24sIHdlIHdpbGwgd2FudCB0byBjbG9zZSBpdAorICAgICAgIG5vdywgYW5kIHRoaXMgd2lsbCBiZSBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZXJlIGlzIGEgY29udHJvbAorICAgICAgIGNvbm5lY3Rpb24uICovCisKKyAgICBpZiAoY29ubmVjdGVkKSB7CisKKyNpZmRlZiBfX2xpbnV4CisgICAgICAvKiBzbywgIkxpbnV4IiB3aXRoIGF1dG90dW5pbmcgbGlrZXMgdG8gYWx0ZXIgdGhlIHNvY2tldCBidWZmZXIKKwkgc2l6ZXMgb3ZlciB0aGUgbGlmZSBvZiB0aGUgY29ubmVjdGlvbiwgYnV0IG9ubHkgZG9lcyBzbyB3aGVuCisJIG9uZSB0YWtlcyB0aGUgZGVmYXVsdHMgYXQgdGltZSBvZiBzb2NrZXQgY3JlYXRpb24uICBpZiB3ZSB0b29rCisJIHRob3NlIGRlZmF1bHRzLCB3ZSBzaG91bGQgaW5xdWlyZSBhcyB0byB3aGF0IHRoZSB2YWx1ZXMKKwkgdWx0aW1hdGVseSBiZWNhbWUuIHJhaiAyMDA4LTAxLTE1ICovCisgICAgICBpZiAobHNyX3NpemVfcmVxIDwgMCkKKwlnZXRfc29ja19idWZmZXIoZGF0YV9zb2NrZXQsIFJFQ1ZfQlVGRkVSLCAmbHNyX3NpemVfZW5kKTsKKyAgICAgIGVsc2UKKwlsc3Jfc2l6ZV9lbmQgPSBsc3Jfc2l6ZTsKKyAgICAgIGlmIChsc3Nfc2l6ZV9yZXEgPCAwKQorCWdldF9zb2NrX2J1ZmZlcihkYXRhX3NvY2tldCwgU0VORF9CVUZGRVIsICZsc3Nfc2l6ZV9lbmQpOworICAgICAgZWxzZQorCWxzc19zaXplX2VuZCA9IGxzc19zaXplOworI2Vsc2UKKyAgICAgIGxzcl9zaXplX2VuZCA9IGxzcl9zaXplOworICAgICAgbHNzX3NpemVfZW5kID0gbHNzX3NpemU7CisjZW5kaWYKKyAgICAgIGlmICgoZGVzaXJlZF9vdXRwdXRfZ3JvdXBzICYgT01OSV9XQU5UX0xPQ19DT05HKSAmJgorCSAgKGxvY2FsX2NvbmdfY29udHJvbFswXSA9PSAnXDAnKSkgeworCWdldF90cmFuc3BvcnRfY29uZ19jb250cm9sKGRhdGFfc29ja2V0LAorCQkJCSAgIGxvY2FsX3Jlcy0+YWlfcHJvdG9jb2wsCisJCQkJICAgbG9jYWxfY29uZ19jb250cm9sLAorCQkJCSAgIHNpemVvZihsb2NhbF9jb25nX2NvbnRyb2wpKTsKKyAgICAgIH0KKworICAgICAgLyogQ0hFQ0sgUEFSTVMgSEVSRTsgKi8KKyAgICAgIHJldCA9IGRpc2Nvbm5lY3RfZGF0YV9zb2NrZXQoZGF0YV9zb2NrZXQsCisJCQkJICAgMSwKKwkJCQkgICAxLAorCQkJCSAgIE5VTEwsCisJCQkJICAgMCk7CisgICAgICBjb25uZWN0ZWQgPSAwOworICAgICAgbmVlZF9zb2NrZXQgPSAxOworCisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogdGhpcyBpcyB0aGUgVURQIGNhc2UgYXQgcHJlc2VudCAqLworICAgICAgcmV0ID0gZGlzY29ubmVjdF9kYXRhX3NvY2tldChkYXRhX3NvY2tldCwKKwkJCQkgICAxLAorCQkJCSAgIDEsCisJCQkJICAgcmVtb3RlX3Jlcy0+YWlfYWRkciwKKwkJCQkgICByZW1vdGVfcmVzLT5haV9hZGRybGVuKTsKKyAgICAgIG5lZWRfc29ja2V0ID0gMTsKKyAgICAgIGxzcl9zaXplX2VuZCA9IGxzcl9zaXplOworICAgICAgbHNzX3NpemVfZW5kID0gbHNzX3NpemU7CisgICAgfQorCisgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZAorICAgICAgIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCisKKyAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CisKKyAgICAvKiBpZiB3ZSB0aW1lZC1vdXQsIGFuZCBoYWQgcGFkZGVkIHRoZSB0aW1lciwgd2UgbmVlZCB0byBzdWJ0cmFjdAorICAgICAgIHRoZSBwYWRfdGltZSBmcm9tIHRoZSBlbGFwc2VkIHRpbWUgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB3ZQorICAgICAgIHdlcmUgZXNzZW50aWFsbHkgaWRsZSBmb3IgcGFkX3RpbWUgYW5kIGp1c3Qgd2FpdGluZyBmb3IgYSB0aW1lcgorICAgICAgIHRvIGV4cGlyZSBvbiBzb21ldGhpbmcgbGlrZSBhIFVEUCB0ZXN0LiAgaWYgd2UgaGF2ZSBub3QgcGFkZGVkCisgICAgICAgdGhlIHRpbWVyLCBwYWRfdGltZSB3aWxsIGJlIHplcm8uICBpZiB3ZSBoYXZlIG5vdCB0aW1lZCBvdXQKKyAgICAgICB0aGVuIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHN0b3AgdGhlIHRpbWVyLiAqLworICAgIGlmICh0aW1lZF9vdXQpIHsKKyAgICAgIGlmIChkZWJ1ZykgeworCWZwcmludGYod2hlcmUsIkFkanVzdGluZyBlbGFwc2VkX3RpbWUgYnkgJWQgc2Vjb25kc1xuIixwYWRfdGltZSk7CisJZmZsdXNoKHdoZXJlKTsKKyAgICAgIH0KKyAgICAgIGVsYXBzZWRfdGltZSAtPSAoZmxvYXQpcGFkX3RpbWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3RvcF90aW1lcigpOworICAgIH0KKworICAgIGlmICghbm9fY29udHJvbCkgeworICAgICAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlCisJIGNhbGN1bGF0ZWQgc2VydmljZSBkZW1hbmQgYW5kIGFsbCB0aG9zZSBpbnRlcmVzdGluZyB0aGluZ3MuIElmCisJIGl0IHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KKworICAgICAgcmVjdl9yZXNwb25zZV9uKE9NTklfUkVTVUxUU19DT05WX0NVVE9GRik7CisgICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CisJaWYgKGRlYnVnKQorCSAgZnByaW50Zih3aGVyZSwicmVtb3RlIHJlc3VsdHMgb2J0YWluZWRcbiIpOworCXJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2Qob21uaV9yZXN1bHQtPmNwdV9tZXRob2QpOworCWxpYl9udW1fcmVtX2NwdXMgPSBvbW5pX3Jlc3VsdC0+bnVtX2NwdXM7CisJbGliX3JlbW90ZV9jcHVfc3RhdHMuY3B1X3V0aWwgPSBvbW5pX3Jlc3VsdC0+Y3B1X3V0aWw7CisJbGliX3JlbW90ZV9jcHVfc3RhdHMuY3B1X3VzZXIgPSBvbW5pX3Jlc3VsdC0+Y3B1X3BlcmNlbnRfdXNlcjsKKwlsaWJfcmVtb3RlX2NwdV9zdGF0cy5jcHVfc3lzdGVtID0gb21uaV9yZXN1bHQtPmNwdV9wZXJjZW50X3N5c3RlbTsKKwlsaWJfcmVtb3RlX2NwdV9zdGF0cy5jcHVfaW93YWl0ID0gb21uaV9yZXN1bHQtPmNwdV9wZXJjZW50X2lvd2FpdDsKKwlsaWJfcmVtb3RlX2NwdV9zdGF0cy5jcHVfaXJxID0gb21uaV9yZXN1bHQtPmNwdV9wZXJjZW50X2lycTsKKwlsaWJfcmVtb3RlX2NwdV9zdGF0cy5jcHVfc3dpbnRyID0gb21uaV9yZXN1bHQtPmNwdV9wZXJjZW50X3N3aW50cjsKKwlsaWJfcmVtb3RlX2NwdV9zdGF0cy5wZWFrX2NwdV91dGlsID0gb21uaV9yZXN1bHQtPnBlYWtfY3B1X3V0aWw7CisJbGliX3JlbW90ZV9jcHVfc3RhdHMucGVha19jcHVfaWQgPSBvbW5pX3Jlc3VsdC0+cGVha19jcHVfaWQ7CisJLyogd2h5PyAgYmVjYXVzZSBzb21lIHN0YWNrcyB3YW50IHRvIGJlIGNsZXZlciBhbmQgYXV0b3R1bmUgdGhlaXIKKwkgICBzb2NrZXQgYnVmZmVyIHNpemVzLCB3aGljaCBtZWFucyB0aGF0IGlmIHdlIGFjY2VwdCB0aGUgZGVmYXVsdHMsCisJICAgdGhlIHNpemUgd2UgZ2V0IGZyb20gZ2V0c29ja29wdCgpIGF0IHRoZSBiZWdpbm5pbmcgb2YgYQorCSAgIGNvbm5lY3Rpb24gbWF5IG5vdCBiZSB3aGF0IHdlIHdvdWxkIGdldCBhdCB0aGUgZW5kIG9mIHRoZQorCSAgIGNvbm5lY3Rpb24uLi4gKi8KKwlyc3Jfc2l6ZV9lbmQgPSBvbW5pX3Jlc3VsdC0+cmVjdl9idWZfc2l6ZTsKKwlyc3Nfc2l6ZV9lbmQgPSBvbW5pX3Jlc3VsdC0+c2VuZF9idWZfc2l6ZTsKKwlyZW1vdGVfYnl0ZXNfc2VudCA9ICh1aW50NjRfdClvbW5pX3Jlc3VsdC0+Ynl0ZXNfc2VudF9oaSA8PCAzMjsKKwlyZW1vdGVfYnl0ZXNfc2VudCArPSBvbW5pX3Jlc3VsdC0+Ynl0ZXNfc2VudF9sbzsKKwlyZW1vdGVfc2VuZF9jYWxscyA9IG9tbmlfcmVzdWx0LT5zZW5kX2NhbGxzOworCXJlbW90ZV9ieXRlc19yZWNlaXZlZCA9ICh1aW50NjRfdClvbW5pX3Jlc3VsdC0+Ynl0ZXNfcmVjZWl2ZWRfaGkgPDwgMzI7CisJcmVtb3RlX2J5dGVzX3JlY2VpdmVkICs9IG9tbmlfcmVzdWx0LT5ieXRlc19yZWNlaXZlZF9sbzsKKwlyZW1vdGVfcmVjZWl2ZV9jYWxscyA9IG9tbmlfcmVzdWx0LT5yZWN2X2NhbGxzOworCXJlbW90ZV9ieXRlc194ZmVyZCA9IChkb3VibGUpIHJlbW90ZV9ieXRlc19yZWNlaXZlZCArCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2J5dGVzX3NlbnQ7CisJaWYgKG9tbmlfcmVzdWx0LT5yZWN2X2NhbGxzID4gMCkKKwkgIHJlbW90ZV9ieXRlc19wZXJfcmVjdiA9IChkb3VibGUpIHJlbW90ZV9ieXRlc19yZWNlaXZlZCAvCisJICAgIChkb3VibGUpIG9tbmlfcmVzdWx0LT5yZWN2X2NhbGxzOworCWVsc2UKKwkgIHJlbW90ZV9ieXRlc19wZXJfcmVjdiA9IDAuMDsKKwlpZiAob21uaV9yZXN1bHQtPnNlbmRfY2FsbHMgPiAwKQorCSAgcmVtb3RlX2J5dGVzX3Blcl9zZW5kID0gKGRvdWJsZSkgcmVtb3RlX2J5dGVzX3NlbnQgLworCSAgICAoZG91YmxlKSBvbW5pX3Jlc3VsdC0+c2VuZF9jYWxsczsKKwllbHNlCisJICByZW1vdGVfYnl0ZXNfcGVyX3NlbmQgPSAwLjA7CisKKwlyZW1vdGVfdHJhbnNwb3J0X3JldHJhbnMgPSBvbW5pX3Jlc3VsdC0+dHJhbnNwb3J0X3JldHJhbnM7CisJLyogd2hhdCB3YXMgdGhlIGNvbmdlc3Rpb24gY29udHJvbD8gKi8KKwlpZiAoZGVzaXJlZF9vdXRwdXRfZ3JvdXBzICYgT01OSV9XQU5UX1JFTV9DT05HKSB7CisJICBzdHJuY3B5KHJlbW90ZV9jb25nX2NvbnRyb2wsCisJCSAgb21uaV9yZXN1bHQtPmNvbmdfY29udHJvbCwKKwkJICBzaXplb2YocmVtb3RlX2NvbmdfY29udHJvbCkpOworCSAgcmVtb3RlX2NvbmdfY29udHJvbFtzaXplb2YocmVtb3RlX2NvbmdfY29udHJvbCkgLSAxXSA9ICdcMCc7CisJfQorICAgICAgfQorICAgICAgZWxzZSB7CisJU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKKwlmcHJpbnRmKHdoZXJlLAorCQkibmV0cGVyZjogcmVtb3RlIGVycm9yICVkIiwKKwkJbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOworCXBlcnJvcigiIik7CisJZmZsdXNoKHdoZXJlKTsKKworCWV4aXQoLTEpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIHdoZW4gd2UgYXJlIHNlbmRpbmcsIGluIGEgbm9fY29udHJvbCB0ZXN0LCB3ZSBoYXZlIHRvCisJIGFzcy11LW1lIHRoYXQgZXZlcnl0aGluZyB3ZSBzZW50IHdhcyByZWNlaXZlZCwgb3RoZXJ3aXNlLCB3ZQorCSB3aWxsIHJlcG9ydCBhIHRyYW5zZmVyIHJhdGUgb2YgemVyby4gKi8KKyAgICAgIHJlbW90ZV9ieXRlc194ZmVyZCA9IChkb3VibGUpIGJ5dGVzX3NlbnQ7CisgICAgfQorCisgICAgLyogc28sIHdoYXQgd2FzIHRoZSBlbmQgcmVzdWx0PyAqLworICAgIGxvY2FsX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZChjcHVfbWV0aG9kKTsKKworICAgIGlmIChsb2NhbF9zZW5kX2NhbGxzID4gMCkKKyAgICAgIGJ5dGVzX3Blcl9zZW5kID0gKGRvdWJsZSkgYnl0ZXNfc2VudCAvIChkb3VibGUpIGxvY2FsX3NlbmRfY2FsbHM7CisgICAgZWxzZSBieXRlc19wZXJfc2VuZCA9IDAuMDsKKworICAgIGlmIChsb2NhbF9yZWNlaXZlX2NhbGxzID4gMCkKKyAgICAgIGJ5dGVzX3Blcl9yZWN2ID0gKGRvdWJsZSkgYnl0ZXNfcmVjZWl2ZWQgLyAoZG91YmxlKSBsb2NhbF9yZWNlaXZlX2NhbGxzOworICAgIGVsc2UKKyAgICAgIGJ5dGVzX3Blcl9yZWN2ID0gMC4wOworCisgICAgYnl0ZXNfeGZlcmQgID0gKGRvdWJsZSkgYnl0ZXNfc2VudCArIGJ5dGVzX3JlY2VpdmVkOworCisgICAgLyogaWYgdGhlIG91dHB1dCBmb3JtYXQgaXMgJ3gnIHdlIGtub3cgdGhlIHRlc3Qgd2FzCisgICAgICAgcmVxdWVzdC9yZXNwb25zZS4gIGlmIHRoZSBsaWJmbXQgaXMgc29tZXRoaW5nIGVsc2UsIGl0IGNvdWxkIGJlCisgICAgICAgeG1pdCwgcmVjdiBvciBiaWRpcmVjdGlvbmFsLiBpZiB3ZSB3ZXJlIHRoZSByZWNlaXZlciB0aGVuIHdlCisgICAgICAgY2FuIHVzZSBvdXIgYnl0ZSB0b3RhbHMgZXZlbiBpZiBpdCBpcworICAgICAgIFVEUC91bnJlbGlhYmxlLiBvdGhlcndpc2UsIHdlIHVzZSB0aGUgcmVtb3RlIHRvdGFscyAtIHRoZXkKKyAgICAgICBzaG91bGQgYmUgdGhlIHNhbWUgaWYgdGhlIHByb3RvY29sIGlzIHJlbGlhYmxlLCBhbmQgaWYgaXQgaXMKKyAgICAgICB1bnJlbGlhYmxlIHRoZW4gd2Ugd2FudCB3aGF0IHdhcyBhY3R1YWxseSByZWNlaXZlZCAqLworICAgIGlmICgneCcgPT0gbGliZm10KQorICAgICAgLyogaXQgd2FzIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0ICovCisgICAgICB0aHJ1cHV0ID0gY2FsY190aHJ1cHV0KChkb3VibGUpdHJhbnNfY29tcGxldGVkKTsKKyAgICBlbHNlIGlmIChORVRQRVJGX1JFQ1ZfT05MWShkaXJlY3Rpb24pKQorICAgICAgdGhydXB1dCAgICAgID0gY2FsY190aHJ1cHV0KGJ5dGVzX3hmZXJkKTsKKyAgICBlbHNlCisgICAgICB0aHJ1cHV0ID0gY2FsY190aHJ1cHV0KHJlbW90ZV9ieXRlc194ZmVyZCk7CisKKyAgICBpZiAoTkVUUEVSRl9JU19SUihkaXJlY3Rpb24pKSB7CisgICAgICBmbG9hdCBydHRfZWxhcHNlZF90aW1lID0gZWxhcHNlZF90aW1lOworCisjaWZkZWYgV0FOVF9JTlRFUlZBTFMKKyAgICAgIC8qIGlmIHRoZSB0ZXN0IHdhcyBwYWNlZCwgd2UgbmVlZCB0byBzdWJ0cmFjdCB0aGUgdGltZSB3ZSB3ZXJlCisJIHNpdHRpbmcgcGFjZWQgZnJvbSB0aGUgdGltZSB3ZSB1c2UgdG8gY2FsY3VsYXRlIHRoZSBhdmVyYWdlCisJIHJ0dF9sYXRlbmN5LiBPZiBjb3Vyc2UsIHdvbid0IHJlYWxseSBrbm93IGhvdyBsb25nIHdlIHdlcmUKKwkgc2l0dGluZyB1bmxlc3Mgd2UgYnJhY2tldCB0aGUgc2l0IHdpdGggdGltaW5nIGNhbGxzLCB3aGljaAorCSB3aWxsIGJlIGFkZGl0aW9uYWwgb3ZlcmhlYWQgYWZmZWN0aW5nIENQVSB1dGlsaXphdGlvbi4gIGJ1dCwKKwkgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhIGZyZWUgbHVuY2ggaXMgdGhlcmUgOikgcmFqCisJIDIwMTEwMTIxICovCisgICAgICBpZiAoaW50ZXJ2YWxfYnVyc3QpIHsKKwlydHRfZWxhcHNlZF90aW1lIC09IChmbG9hdCkoaW50ZXJ2YWxfd2FpdF9taWNyb3NlY29uZHMgLyAxMDAwMDAwLjApOworICAgICAgfQorI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCisKKyAgICAgIGlmICghY29ubmVjdGlvbl90ZXN0KSB7CisgICAgICAvKiBjYWxjdWxhdGUgdGhlIHJvdW5kIHRyaXAgbGF0ZW5jeSwgdXNpbmcgdGhlIHRyYW5zYWN0aW9uIHJhdGUKKwkgd2hldGhlciBvciBub3QgdGhlIHVzZXIgd2FzIGFza2luZyBmb3IgdGhydXB1dCB0byBiZSBpbiAneCcKKwkgdW5pdHMgcGxlYXNlLi4uIGhvd2V2ZXIuLi4gYSBjb25uZWN0aW9uX3Rlc3Qgb25seSBldmVyIGhhcworCSBvbmUgdHJhbnNhY3Rpb24gaW4gZmxpZ2h0IGF0IG9uZSB0aW1lICovCisgICAgICBydHRfbGF0ZW5jeSA9CisJKCgoZG91YmxlKTEuMC8odHJhbnNfY29tcGxldGVkL3J0dF9lbGFwc2VkX3RpbWUpKSAqCisJIChkb3VibGUpMTAwMDAwMC4wKSAqCisJKGRvdWJsZSkgKDEgKyAoKGZpcnN0X2J1cnN0X3NpemUgPiAwKSA/IGZpcnN0X2J1cnN0X3NpemUgOiAwKSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKwlydHRfbGF0ZW5jeSA9ICgoZG91YmxlKTEuMC8odHJhbnNfY29tcGxldGVkL3J0dF9lbGFwc2VkX3RpbWUpKSAqCisJICAoZG91YmxlKTEwMDAwMDAuMDsKKyAgICAgIH0KKyAgICAgIHRtcGZtdCA9IGxpYmZtdDsKKyAgICAgIGxpYmZtdCA9ICd4JzsKKyAgICAgIHRyYW5zYWN0aW9uX3JhdGUgPSBjYWxjX3RocnVwdXQoKGRvdWJsZSl0cmFuc19jb21wbGV0ZWQpOworICAgICAgbGliZm10ID0gdG1wZm10OworICAgIH0KKworICAgIC8qIG9rLCB0aW1lIHRvIHBvc3NpYmx5IGNhbGN1bGF0ZSBjcHUgdXRpbCBhbmQvb3Igc2VydmljZSBkZW1hbmQgKi8KKyAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CisKKyAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiA9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKKworICAgICAgLyogd2UgbmVlZCB0byBkZWNpZGUgd2hhdCB0byBmZWVkIHRoZSBzZXJ2aWNlIGRlbWFuZCBiZWFzdCwKKwkgd2hpY2ggd2lsbCwgdWx0aW1hdGVseSwgZGVwZW5kIG9uIHdoYXQgc29ydCBvZiB0ZXN0IGl0IGlzIGFuZAorCSB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBhc2tlZCBmb3Igc29tZXRoaW5nIHNwZWNpZmljIC0gYXMgaW4KKwkgcGVyIEtCIGV2ZW4gb24gYSBUQ1BfUlIgdGVzdCBpZiBpdCBpcyBiZWluZyAoYWIpdXNlZCBhcyBhCisJIGJpZGlyZWN0aW9uYWwgYnVsay10cmFuc2ZlciB0ZXN0LiByYWogMjAwOC0wMS0xNCAqLworICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQgID0KKwljYWxjX3NlcnZpY2VfZGVtYW5kX2ZtdCgoJ3gnID09IGxpYmZtdCkgPyAoZG91YmxlKXRyYW5zX2NvbXBsZXRlZDogYnl0ZXNfeGZlcmQsCisJCQkJMC4wLAorCQkJCTAuMCwKKwkJCQkwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAoZmxvYXQpIC0xLjA7CisgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IChmbG9hdCkgLTEuMDsKKyAgICB9CisKKyAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgeworCisgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gb21uaV9yZXN1bHQtPmNwdV91dGlsOworCisgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgPQorCWNhbGNfc2VydmljZV9kZW1hbmRfZm10KCgneCcgPT0gbGliZm10KSA/IChkb3VibGUpIHRyYW5zX2NvbXBsZXRlZDogYnl0ZXNfeGZlcmQsCisJCQkJMC4wLAorCQkJCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCisJCQkJb21uaV9yZXN1bHQtPm51bV9jcHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOworICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IChmbG9hdCkgLTEuMDsKKyAgICB9CisKKyAgICAvKiB0aW1lIHRvIGNhbGN1bGF0ZSBvdXIgY29uZmlkZW5jZSAqLworICAgIGNhbGN1bGF0ZV9jb25maWRlbmNlKGNvbmZpZGVuY2VfaXRlcmF0aW9uLAorCQkJIGVsYXBzZWRfdGltZSwKKwkJCSB0aHJ1cHV0LAorCQkJIGxvY2FsX2NwdV91dGlsaXphdGlvbiwKKwkJCSByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAorCQkJIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAorCQkJIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7CisKKyAgICAvKiB0aGlzIHRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgY29uZmlkZW5jZSB3aGlsZSBsb29wPyAqLworICAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uKys7CisgIH0KKworICAvKiB3ZSBlbmQgd2l0aCBjb25maWRlbmNlX2l0ZXJhdGlvbiBvbmUgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZgorICAgICBpdGVyYXRpb25zLiAgaWYgd2Ugd2VyZW4ndCBkb2luZyBjb25maWRlbmNlIGludGVydmFscyB0aGlzIHdpbGwKKyAgICAgc3RpbGwgYmUgcmVwb3J0ZWQgYXMgb25lICovCisgIGNvbmZpZGVuY2VfaXRlcmF0aW9uLS07CisKKyNpZiBkZWZpbmVkKFdBTlRfSU5URVJWQUxTKQorI2lmZGVmIFdJTjMyCisgIHN0b3BfaXRpbWVyKCk7CisjZW5kaWYKKyNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLworCisvKiBhdCBzb21lIHBvaW50IHdlIG1heSB3YW50IHRvIGFjdHVhbGx5IGRpc3BsYXkgc29tZSByZXN1bHRzIDopICovCisKKyAgcmV0cmlldmVfY29uZmlkZW50X3ZhbHVlcygmZWxhcHNlZF90aW1lLAorCQkJICAgICZ0aHJ1cHV0LAorCQkJICAgICZsb2NhbF9jcHVfdXRpbGl6YXRpb24sCisJCQkgICAgJnJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCisJCQkgICAgJmxvY2FsX3NlcnZpY2VfZGVtYW5kLAorCQkJICAgICZyZW1vdGVfc2VydmljZV9kZW1hbmQpOworCisgIC8qIGEga2x1ZGdlIGZvciBvbW5pIHByaW50aW5nIGJlY2F1c2UgSSBkb24ndCBrbm93IGhvdyB0byB0ZWxsIHRoYXQKKyAgICAgc29tZXRoaW5nIGlzIGEgZmxvYXQgdnMgYSBkb3VibGUgaW4gbXlfc25wcmludGYoKSBnaXZlbiB3aGF0IGl0CisgICAgIGlzIHBhc3NlZCBhbmQgSSdtIG5vdCByZWFkeSB0byBmb3JjZSBhbGwgdGhlIG5ldGxpYi5jIHN0dWZmIHRvCisgICAgIHVzZSBkb3VibGVzIHJhdGhlciB0aGFuIGZsb2F0cy4gaGVscCB0aGVyZSB3b3VsZCBiZQorICAgICBhcHByZWNpYXRlZC4gcmFqIDIwMDgtMDEtMjggKi8KKyAgZWxhcHNlZF90aW1lX2RvdWJsZSA9IChkb3VibGUpIGVsYXBzZWRfdGltZTsKKyAgbG9jYWxfc2VydmljZV9kZW1hbmRfZG91YmxlID0gKGRvdWJsZSlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKKyAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kX2RvdWJsZSA9IChkb3VibGUpcmVtb3RlX3NlcnZpY2VfZGVtYW5kOworCisgIGlmICgneCcgPT0gbGliZm10KSBzZF9zdHIgPSAidXNlYy9UcmFuIjsKKyAgZWxzZSBzZF9zdHIgPSAidXNlYy9LQiI7CisKKyAgaWYgKGl0ZXJhdGlvbl9tYXggPiAxKSB7CisgICAgcmVzdWx0X2NvbmZpZF9wY3QgPSBnZXRfcmVzdWx0X2NvbmZpZCgpOworICAgIGxvY19jcHVfY29uZmlkX3BjdCA9IGdldF9sb2NfY3B1X2NvbmZpZCgpOworICAgIHJlbV9jcHVfY29uZmlkX3BjdCA9IGdldF9yZW1fY3B1X2NvbmZpZCgpOworICAgIGludGVydmFsX3BjdCA9IGludGVydmFsICogMTAwLjA7CisgIH0KKworICAvKiBhdCBzb21lIHBvaW50IHdlIG5lZWQgdG8gYXZlcmFnZSB0aGVzZSBkdXJpbmcgYSBjb25maWRlbmNlCisgICAgIGludGVydmFsIHJ1biwgYW5kIHdoZW4gd2UgZG8gZG8gdGhhdCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UKKyAgICAgcmVzdG9yZSB0aGUgdmFsdWUgb2YgbGliZm10IGNvcnJlY3RseSAqLworICB0bXBmbXQgPSBsaWJmbXQ7CisgIGlmICgneCcgPT0gbGliZm10KSB7CisgICAgbGliZm10ID0gJ20nOworICB9CisgIGxvY2FsX3NlbmRfdGhydXB1dCA9IGNhbGNfdGhydXB1dCgoZG91YmxlKWJ5dGVzX3NlbnQpOworICBsb2NhbF9yZWN2X3RocnVwdXQgPSBjYWxjX3RocnVwdXQoKGRvdWJsZSlieXRlc19yZWNlaXZlZCk7CisgIHJlbW90ZV9zZW5kX3RocnVwdXQgPSBjYWxjX3RocnVwdXQoKGRvdWJsZSlyZW1vdGVfYnl0ZXNfc2VudCk7CisgIHJlbW90ZV9yZWN2X3RocnVwdXQgPSBjYWxjX3RocnVwdXQoKGRvdWJsZSlyZW1vdGVfYnl0ZXNfcmVjZWl2ZWQpOworCisgIGxpYmZtdCA9IHRtcGZtdDsKKworICAvKiB3ZXJlIHdlIHRyYWNraW5nIHBvc3NpYmx5IGV4cGVuc2l2ZSBzdGF0aXN0aWNzPyAqLworICBpZiAoa2VlcF9zdGF0aXN0aWNzKSB7CisgICAgSElTVF9nZXRfc3RhdHModGltZV9oaXN0LAorCQkgICAmbWluX2xhdGVuY3ksCisJCSAgICZtYXhfbGF0ZW5jeSwKKwkJICAgJm1lYW5fbGF0ZW5jeSwKKwkJICAgJnN0ZGRldl9sYXRlbmN5KTsKKyAgICBwNTBfbGF0ZW5jeSA9IEhJU1RfZ2V0X3BlcmNlbnRpbGUodGltZV9oaXN0LCAwLjUwKTsKKyAgICBwOTBfbGF0ZW5jeSA9IEhJU1RfZ2V0X3BlcmNlbnRpbGUodGltZV9oaXN0LCAwLjkwKTsKKyAgICBwOTlfbGF0ZW5jeSA9IEhJU1RfZ2V0X3BlcmNlbnRpbGUodGltZV9oaXN0LCAwLjk5KTsKKworICB9CisKKyAgLyogaWYgd2UgYXJlIHJ1bm5pbmcgYSBsZWdhY3kgdGVzdCB3ZSBkbyBub3QgZG8gdGhlIG5pZnR5IG5ldyBvbW5pCisgICAgIG91dHB1dCBzdHVmZiAqLworICBpZiAoIWxlZ2FjeSkgeworICAgIHByaW50X29tbmkoKTsKKyAgfQorCisjaWYgZGVmaW5lZChERUJVR19PTU5JX09VVFBVVCkKKyB7CisgICAvKiBqdXN0IHNvbWV0aGluZyBxdWljayB0byBzYW5pdHkgY2hlY2sgdGhlIG91dHB1dCBzZWxlY3RvcnMuIHRoaXMKKyAgICAgIHNob3VsZCBiZSBnb25lIGZvciAicHJvZHVjdGlvbiIgOikgKi8KKyAgIGludCBpOworICAgcHJpbnRfb21uaV9pbml0KCk7CisgICBvdXRwdXRfbGlzdFswXVsxXSA9IE9VVFBVVF9FTkQ7CisgICBmb3IgKGkgPSBPVVRQVVRfTk9ORTsgaSA8IE5FVFBFUkZfT1VUUFVUX01BWDsgaSsrKSB7CisgICAgIG91dHB1dF9saXN0WzBdWzBdID0gaTsKKyAgICAgcHJpbnRfb21uaV9jc3YoKTsKKyAgIH0KKyB9CisjZW5kaWYKKworICAvKiBsaWtlbHkgYXMgbm90IHdlIGFyZSBnb2luZyB0byBkbyBzb21ldGhpbmcgc2xpZ2h0bHkgZGlmZmVyZW50IGhlcmUgKi8KKyAgaWYgKCh2ZXJib3NpdHkgPiAxKSAmJiAoIWxlZ2FjeSkpIHsKKworI2lmZGVmIFdBTlRfSElTVE9HUkFNCisgICAgZnByaW50Zih3aGVyZSwiXG5IaXN0b2dyYW0gb2YgIik7CisgICAgaWYgKE5FVFBFUkZfUkVDVl9PTkxZKGRpcmVjdGlvbikpCisgICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2Iik7CisgICAgaWYgKE5FVFBFUkZfWE1JVF9PTkxZKGRpcmVjdGlvbikpCisgICAgICBmcHJpbnRmKHdoZXJlLCJzZW5kIik7CisgICAgaWYgKE5FVFBFUkZfSVNfUlIoZGlyZWN0aW9uKSkgeworICAgICAgaWYgKGNvbm5lY3Rpb25fdGVzdCkgeworCWlmIChORVRQRVJGX0NDKGRpcmVjdGlvbikpIHsKKwkgIGZwcmludGYod2hlcmUsImNvbm5lY3QvY2xvc2UiKTsKKwl9CisJZWxzZSB7CisJICBmcHJpbnRmKHdoZXJlLCJjb25uZWN0L3JlcXVlc3QvcmVzcG9uc2UvY2xvc2UiKTsKKwl9CisgICAgICB9CisgICAgICBlbHNlIHsKKwlmcHJpbnRmKHdoZXJlLCJyZXF1ZXN0L3Jlc3BvbnNlIik7CisgICAgICB9CisgICAgfQorICAgIGZwcmludGYod2hlcmUsIiB0aW1lc1xuIik7CisgICAgSElTVF9yZXBvcnQodGltZV9oaXN0KTsKKyAgICBmZmx1c2god2hlcmUpOworI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCisKKyAgfQorCit9CisKKwordm9pZAorc2VuZF9vbW5pKGNoYXIgcmVtb3RlX2hvc3RbXSkKK3sKKyAgY2hhciBuYW1lX2J1ZlszMl07CisgIHNucHJpbnRmKG5hbWVfYnVmLHNpemVvZihuYW1lX2J1ZiksIk9NTkkgJXMgVEVTVCIsZGlyZWN0aW9uX3N0cik7CisgIG5hbWVfYnVmWzMxXSA9ICdcMCc7CisgIHNlbmRfb21uaV9pbm5lcihyZW1vdGVfaG9zdCwgMCwgbmFtZV9idWYpOworfQorCisjaWYgZGVmaW5lZChXSU4zMikKKyNpZiAhZGVmaW5lZChJbmV0TnRvcCkKKy8qICsqKyBXaHkgaXNuJ3QgdGhpcyBpbiB0aGUgd2luc29jayBoZWFkZXJzIHlldD8gKi8KK2NvbnN0IGNoYXIgKgoraW5ldF9udG9wKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIHNpemVfdCBzaXplKTsKKyNlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitzZXRfaG9zdG5hbWVfYW5kX3BvcnRfMih2b2lkICphZGRyLCBjaGFyICpob3N0bmFtZSwgY2hhciAqcG9ydHN0ciwgaW50IGZhbWlseSwgaW50IHBvcnQpCit7CisKKyAgaW5ldF9udG9wKGZhbWlseSwgYWRkciwgaG9zdG5hbWUsIEJVRlNJWik7CisKKyAgc3ByaW50Zihwb3J0c3RyLCAiJXUiLCBwb3J0KTsKKworfQorCisMCisKKy8qIHRoZSBuYW1lIGlzIHNvbWV0aGluZyBvZiBhIG1pc25vbWVyIHNpbmNlIHRoaXMgdGVzdCBjb3VsZCBzZW5kLCBvcgorICAgcmVjZWl2ZSwgb3IgYm90aCwgYnV0IGl0IG1hdGNoZXMgdGhlIGhpc3RvcmljYWwgbmV0cGVyZiByb3V0aW5lCisgICBuYW1pbmcgY29udmVudGlvbiBmb3Igd2hhdCBydW5zIGluIHRoZSBuZXRzZXJ2ZXIgY29udGV4dC4gKi8KK3ZvaWQKK3JlY3Zfb21uaSgpCit7CisKKyAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CisgIGNoYXIgbG9jYWxfbmFtZVtCVUZTSVpdOworICBjaGFyIHBvcnRfYnVmZmVyW1BPUlRCVUZTSVpFXTsKKworICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBteWFkZHJfaW4sIHBlZXJhZGRyX2luOworICBpbnQgcGVlcmFkZHJfc2V0ID0gMDsKKyAgU09DS0VUIHNfbGlzdGVuLCBkYXRhX3NvY2tldDsKKyAgbmV0cGVyZl9zb2NrbGVuX3QgCWFkZHJsZW47CisKKyAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CisgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOworCisgIGludAl0aW1lZF9vdXQgPSAwOworICBpbnQgICBwYWRfdGltZSA9IDA7CisgIGludCAgIG5lZWRfdG9fY29ubmVjdCA9IDA7CisgIGludCAgIG5lZWRfdG9fYWNjZXB0OworICBpbnQgICBjb25uZWN0ZWQ7CisgIGludCAgIHJldDsKKyAgdWludDMyX3QgICB0ZW1wX3JlY3ZzOworCisgIHN0cnVjdAlvbW5pX3JlcXVlc3Rfc3RydWN0CSpvbW5pX3JlcXVlc3Q7CisgIHN0cnVjdAlvbW5pX3Jlc3BvbnNlX3N0cnVjdAkqb21uaV9yZXNwb25zZTsKKyAgc3RydWN0CW9tbmlfcmVzdWx0c19zdHJ1Y3QJKm9tbmlfcmVzdWx0czsKKworICBvbW5pX3JlcXVlc3QgPQorICAgIChzdHJ1Y3Qgb21uaV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKKyAgb21uaV9yZXNwb25zZSA9CisgICAgKHN0cnVjdCBvbW5pX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CisgIG9tbmlfcmVzdWx0cyA9CisgICAgKHN0cnVjdCBvbW5pX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6ICVzOiBlbnRlcmVkLi4uXG4iLF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIC8qIG5ldHNlcnZlciBoYXMgbm8gZ29vZCB3YXkgb2Yga25vd2luZyB3aGVyZSB0aGUgY29udmVyc2lvbiBjdXRvZmYKKyAgICAgcG9pbnQgaXMsIHNvIHdlIGhhdmUgdG8gZml4IGl0IGFmdGVyIHRoZSBmYWN0ICovCisgIGZpeHVwX3JlcXVlc3RfbihPTU5JX1JFUVVFU1RfQ09OVl9DVVRPRkYpOworCisgIC8qIHRodXMgZml4ZWQtdXAsIHdlIGNhbiBleHRyYWN0IHRoZSByZXF1ZXN0ZWQgY29uZ2VzdGlvbiBjb250cm9sCisgICAgIGFsZ29yaXRobSAqLworICBzdHJuY3B5KGxvY2FsX2NvbmdfY29udHJvbF9yZXEsCisJICBvbW5pX3JlcXVlc3QtPmNvbmdfY29udHJvbCwKKwkgIHNpemVvZihsb2NhbF9jb25nX2NvbnRyb2xfcmVxKSk7CisKKyAgLyogYmFzZWQgb24gd2hhdCB3ZSBoYXZlIGJlZW4gdG9sZCBieSB0aGUgcmVtb3RlIG5ldHBlcmYsIHdlIHdhbnQgdG8KKyAgICAgc2V0dXAgb3VyIGVuZHBvaW50IGZvciB0aGUgImRhdGEgY29ubmVjdGlvbiIgYW5kIGxldCB0aGUgcmVtb3RlCisgICAgIG5ldHBlcmYga25vdyB0aGUgc2l0dWF0aW9uLiAqLworCisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsIiVzOiBzZXR0aW5nIHRoZSByZXNwb25zZSB0eXBlLi4uXG4iLF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlID0gT01OSV9SRVNQT05TRTsKKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLCIlczogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iLF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCisKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwiJXM6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iLF9fRlVOQ1RJT05fXyk7CisgICAgZmZsdXNoKHdoZXJlKTsKKyAgfQorCisgIC8qIGNyZWF0ZV9kYXRhX3NvY2tldCBleHBlY3RzIHRvIGZpbmQgc29tZSB0aGluZ3MgaW4gdGhlIGdsb2JhbAorICAgICB2YXJpYWJsZXMsIHNvIHNldCB0aGUgZ2xvYmFscyBiYXNlZCBvbiB0aGUgdmFsdWVzIGluIHRoZSByZXF1ZXN0LgorICAgICBvbmNlIHRoZSBzb2NrZXQgaGFzIGJlZW4gY3JlYXRlZCwgd2Ugd2lsbCBzZXQgdGhlIHJlc3BvbnNlIHZhbHVlcworICAgICBiYXNlZCBvbiB0aGUgdXBkYXRlZCB2YWx1ZSBvZiB0aG9zZSBnbG9iYWxzLiByYWogNy85NCAqLworICBsc3Nfc2l6ZV9yZXEgICAgPSBvbW5pX3JlcXVlc3QtPnNlbmRfYnVmX3NpemU7CisgIGxzcl9zaXplX3JlcSAgICA9IG9tbmlfcmVxdWVzdC0+cmVjdl9idWZfc2l6ZTsKKyAgbG9jX25vZGVsYXkgICAgID0gKG9tbmlfcmVxdWVzdC0+ZmxhZ3MpICYgT01OSV9OT19ERUxBWTsKKyAgbG9jX3JjdmF2b2lkICAgID0gb21uaV9yZXF1ZXN0LT5zb19yY3Zhdm9pZDsKKyAgbG9jX3NuZGF2b2lkICAgID0gb21uaV9yZXF1ZXN0LT5zb19zbmRhdm9pZDsKKyAgcm91dGluZ19hbGxvd2VkID0gKG9tbmlfcmVxdWVzdC0+ZmxhZ3MpICYgT01OSV9ST1VUSU5HX0FMTE9XRUQ7CisgIHdhbnRfa2VlcGFsaXZlICA9IChvbW5pX3JlcXVlc3QtPmZsYWdzKSAmIE9NTklfV0FOVF9LRUVQQUxJVkU7CisgIGxvY2FsX3NvY2tldF9wcmlvID0gb21uaV9yZXF1ZXN0LT5zb2NrZXRfcHJpbzsKKyAgbG9jYWxfc29ja2V0X3RvcyAgPSBvbW5pX3JlcXVlc3QtPnNvY2tldF90b3M7CisgIHdhbnRfZGVmZXJfYWNjZXB0ID0gb21uaV9yZXF1ZXN0LT5mbGFncyAmIE9NTklfV0FOVF9ERUZFUl9BQ0NFUFQ7CisKKyNpZmRlZiBXQU5UX0lOVEVSVkFMUworICBpbnRlcnZhbF91c2VjcyA9IG9tbmlfcmVxdWVzdC0+aW50ZXJ2YWxfdXNlY3M7CisgIGludGVydmFsX3dhdGUgID0gaW50ZXJ2YWxfdXNlY3MgLyAxMDAwOworICBpbnRlcnZhbF9idXJzdCA9IG9tbmlfcmVxdWVzdC0+aW50ZXJ2YWxfYnVyc3Q7CisjZWxzZQorICBpbnRlcnZhbF91c2VjcyA9IDA7CisgIGludGVydmFsX3dhdGUgID0gMTsKKyAgaW50ZXJ2YWxfYnVyc3QgPSAwOworI2VuZGlmCisKKyAgY29ubmVjdGlvbl90ZXN0ID0gb21uaV9yZXF1ZXN0LT5mbGFncyAmIE9NTklfQ09OTkVDVF9URVNUOworI2lmZGVmIFRDUF9GQVNUT1BFTgorICB1c2VfZmFzdG9wZW4gPSBvbW5pX3JlcXVlc3QtPmZsYWdzICYgT01OSV9GQVNUT1BFTjsKKyNlbmRpZgorICBkaXJlY3Rpb24gICAgICAgPSBvbW5pX3JlcXVlc3QtPmRpcmVjdGlvbjsKKyAgdXNlX3BrdGluZm8gPSAob21uaV9yZXF1ZXN0LT5mbGFncykgJiBPTU5JX1VTRV9QS1RJTkZPOworCisgIC8qIGxldCdzIGJlIHF1aXRlIGNlcnRhaW4gdGhlIGZpbGwgZmlsZSBzdHJpbmcgaXMgbnVsbCB0ZXJtaW5hdGVkICovCisgIG9tbmlfcmVxdWVzdC0+ZmlsbF9maWxlW3NpemVvZihvbW5pX3JlcXVlc3QtPmZpbGxfZmlsZSkgLSAxXSA9ICdcMCc7CisgIHN0cm5jcHkobG9jYWxfZmlsbF9maWxlLAorCSAgb21uaV9yZXF1ZXN0LT5maWxsX2ZpbGUsCisJICBzaXplb2YobG9jYWxfZmlsbF9maWxlKSk7CisKKyAgLyoga2x1ZGd5LCBiZWNhdXNlIEkgaGF2ZSBubyB3YXkgYXQgcHJlc2VudCB0byBzYXkgaG93IG1hbnkgYnl0ZXMKKyAgICAgbmVlZGVkIHRvIGJlIHN3YXBwZWQgYXJvdW5kIGZvciB0aGUgcmVxdWVzdCBmcm9tIHdoaWNoIHRoaXMgaXMKKyAgICAgcHVsbGVkLCBhbmQgaXQgaXMgcHJvYmFibHkgYWxsIHdyb25nIGZvciBJUHY2IDooICovCisgIHN3aXRjaCAobmZfdG9fYWYob21uaV9yZXF1ZXN0LT5pcGZhbWlseSkpIHsKKyAgY2FzZSBBRl9JTkVUNjoKKyAgICAvKiB5ZXMgaW5kZWVkIGl0IGlzLCBkbyBub3RoaW5nLCBieiAqLworICAgIGJyZWFrOworICBjYXNlIEFGX0lORVQ6CisgIGRlZmF1bHQ6CisgICAgZm9yIChyZXQ9MDsgcmV0IDwgNDsgcmV0KyspIHsKKyAgICAgIG9tbmlfcmVxdWVzdC0+bmV0c2VydmVyX2lwW3JldF0gPSBodG9ubChvbW5pX3JlcXVlc3QtPm5ldHNlcnZlcl9pcFtyZXRdKTsKKyAgICAgIG9tbmlfcmVxdWVzdC0+bmV0cGVyZl9pcFtyZXRdID0gaHRvbmwob21uaV9yZXF1ZXN0LT5uZXRwZXJmX2lwW3JldF0pOworICAgIH0KKyAgICBicmVhazsKKyAgfQorCisgIHNldF9ob3N0bmFtZV9hbmRfcG9ydF8yKG9tbmlfcmVxdWVzdC0+bmV0c2VydmVyX2lwLAorCQkJICBsb2NhbF9uYW1lLAorCQkJICBwb3J0X2J1ZmZlciwKKwkJCSAgbmZfdG9fYWYob21uaV9yZXF1ZXN0LT5pcGZhbWlseSksCisJCQkgIG9tbmlfcmVxdWVzdC0+ZGF0YV9wb3J0KTsKKworICBsb2NhbF9yZXMgPSBjb21wbGV0ZV9hZGRyaW5mbyhsb2NhbF9uYW1lLAorCQkJCWxvY2FsX25hbWUsCisJCQkJcG9ydF9idWZmZXIsCisJCQkJbmZfdG9fYWYob21uaV9yZXF1ZXN0LT5pcGZhbWlseSksCisJCQkJbnN0X3RvX2hzdChvbW5pX3JlcXVlc3QtPnNvY2tldF90eXBlKSwKKwkJCQlvbW5pX3JlcXVlc3QtPnByb3RvY29sLAorCQkJCTApOworCisgIHNfbGlzdGVuID0gb21uaV9jcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKKworICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOworICAgIHNlbmRfcmVzcG9uc2UoKTsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsImNvdWxkIG5vdCBjcmVhdGUgZGF0YSBzb2NrZXRcbiIpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgICAgZXhpdCgtMSk7CisgIH0KKworICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlcyB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLworICAvKiBhbGlnbm1lbnRzIHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0cy4gKi8KKworICBpZiAoZGVidWcpIHsKKyAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAicmVjdl9vbW5pOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iCisJICAgICJyZWN2X29tbmk6IHJlcXVlc3RlZCBzZW5kIGFsaWdubWVudCBvZiAlZCBvZmZzZXQgJWRcbiIsCisJICAgIG9tbmlfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsCisJICAgIG9tbmlfcmVxdWVzdC0+cmVjdl9vZmZzZXQsCisJICAgIG9tbmlfcmVxdWVzdC0+c2VuZF9hbGlnbm1lbnQsCisJICAgIG9tbmlfcmVxdWVzdC0+c2VuZF9vZmZzZXQpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICBvbW5pX3Jlc3BvbnNlLT5zZW5kX3NpemUgPSBvbW5pX3JlcXVlc3QtPnNlbmRfc2l6ZTsKKyAgb21uaV9yZXNwb25zZS0+c2VuZF93aWR0aCA9IG9tbmlfcmVxdWVzdC0+c2VuZF93aWR0aDsKKyAgb21uaV9yZXNwb25zZS0+c29ja2V0X3ByaW8gPSBsb2NhbF9zb2NrZXRfcHJpbzsKKyAgb21uaV9yZXNwb25zZS0+c29ja2V0X3RvcyA9IGxvY2FsX3NvY2tldF90b3M7CisKKyAgaWYgKG9tbmlfcmVxdWVzdC0+ZGlyZWN0aW9uICYgTkVUUEVSRl9YTUlUKSB7CisjaWZkZWYgZm8KKyAgICAvKiBkbyB3ZSBuZWVkIHRvIHNldCBtdWx0aWNhc3QgdHRsPyAqLworICAgIGlmIChpc19tdWx0aWNhc3RfYWRkcihyZW1vdGVfcmVzKSkgeworICAgICAgLyogeWVzLCBzX2xpc3RlbiAtIGZvciBhIFVEUCB0ZXN0IHdlIHdpbGwgYmUgY29weWluZyBpdCB0bworCSBkYXRhX3NvY2tldCBidXQgdGhhdCBoYXNuJ3QgaGFwcGVuZWQgeWV0LiByYWogMjAxMDAzMTUgKi8KKyAgICAgIHNldF9tdWx0aWNhc3RfdHRsKHNfbGlzdGVuKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChvbW5pX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUgPiAwKSB7CisgICAgICAvKiByZXF1ZXN0L3Jlc3BvbnNlX3Rlc3QgKi8KKyAgICAgIGJ5dGVzX3RvX3NlbmQgPSBvbW5pX3JlcXVlc3QtPnJlc3BvbnNlX3NpemU7CisgICAgICBpZiAob21uaV9yZXF1ZXN0LT5zZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAxOworICAgICAgZWxzZSBzZW5kX3dpZHRoID0gb21uaV9yZXF1ZXN0LT5zZW5kX3dpZHRoOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGlmIChvbW5pX3JlcXVlc3QtPnNlbmRfc2l6ZSA9PSAtMSkgeworCWJ5dGVzX3RvX3NlbmQgPSBjaG9vc2Vfc2VuZF9zaXplKGxzc19zaXplLG9tbmlfcmVxdWVzdC0+cHJvdG9jb2wpOworICAgICAgfQorICAgICAgZWxzZSBieXRlc190b19zZW5kID0gb21uaV9yZXF1ZXN0LT5zZW5kX3NpemU7CisgICAgICAvKiBzZXQgdGhlIHNlbmRfd2lkdGggKi8KKyAgICAgIGlmIChvbW5pX3JlcXVlc3QtPnNlbmRfd2lkdGggPT0gMCkgeworCXNlbmRfd2lkdGggPSAobHNzX3NpemUvYnl0ZXNfdG9fc2VuZCkgKyAxOworCWlmIChzZW5kX3dpZHRoID09IDEpIHNlbmRfd2lkdGgrKzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKwlzZW5kX3dpZHRoID0gb21uaV9yZXF1ZXN0LT5zZW5kX3dpZHRoOworICAgIH0KKyAgICBzZW5kX3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhzZW5kX3dpZHRoLAorCQkJCSAgICAgYnl0ZXNfdG9fc2VuZCwKKwkJCQkgICAgIG9tbmlfcmVxdWVzdC0+c2VuZF9hbGlnbm1lbnQsCisJCQkJICAgICBvbW5pX3JlcXVlc3QtPnNlbmRfb2Zmc2V0KTsKKworICAgIG9tbmlfcmVzcG9uc2UtPnNlbmRfd2lkdGggPSBzZW5kX3dpZHRoOworICAgIG9tbmlfcmVzcG9uc2UtPnNlbmRfc2l6ZSA9IGJ5dGVzX3RvX3NlbmQ7CisgIH0KKworICBvbW5pX3Jlc3BvbnNlLT5yZWNlaXZlX3NpemUgPSBvbW5pX3JlcXVlc3QtPnJlY2VpdmVfc2l6ZTsKKyAgb21uaV9yZXNwb25zZS0+cmVjdl93aWR0aCA9IG9tbmlfcmVxdWVzdC0+cmVjdl93aWR0aDsKKyAgaWYgKG9tbmlfcmVxdWVzdC0+ZGlyZWN0aW9uICYgTkVUUEVSRl9SRUNWKSB7CisKKyAgICAvKiBkbyB3ZSBuZWVkIHRvIGpvaW4gYSBtdWx0aWNhc3QgZ3JvdXA/ICovCisgICAgaWYgKGlzX211bHRpY2FzdF9hZGRyKGxvY2FsX3JlcykpIHsKKyAgICAgIC8qIHllcywgc19saXN0ZW4gLSBmb3IgYSBVRFAgdGVzdCB3ZSB3aWxsIGJlIGNvcHlpbmcgaXQgdG8KKwkgZGF0YV9zb2NrZXQgYnV0IHRoYXQgaGFzbid0IGhhcHBlbmVkIHlldC4gcmFqIDIwMTAwMzE1ICovCisgICAgICBqb2luX211bHRpY2FzdF9hZGRyKHNfbGlzdGVuLCBsb2NhbF9yZXMpOworICAgIH0KKworICAgIGlmIChvbW5pX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSA+IDApIHsKKyAgICAgIC8qIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCAqLworICAgICAgYnl0ZXNfdG9fcmVjdiA9IG9tbmlfcmVxdWVzdC0+cmVxdWVzdF9zaXplOworICAgICAgaWYgKG9tbmlfcmVxdWVzdC0+cmVjdl93aWR0aCA9PSAwKSByZWN2X3dpZHRoID0gMTsKKyAgICAgIGVsc2UgcmVjdl93aWR0aCA9IG9tbmlfcmVxdWVzdC0+cmVjdl93aWR0aDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAob21uaV9yZXF1ZXN0LT5yZWNlaXZlX3NpemUgPT0gLTEpIHsKKwlpZiAobHNyX3NpemUgPiAwKSBieXRlc190b19yZWN2ID0gbHNyX3NpemU7CisJZWxzZSAgYnl0ZXNfdG9fcmVjdiA9IDQwOTY7CisgICAgICB9CisgICAgICBlbHNlIHsKKwlieXRlc190b19yZWN2ID0gb21uaV9yZXF1ZXN0LT5yZWNlaXZlX3NpemU7CisgICAgICB9CisgICAgICAvKiBzZXQgdGhlIHJlY3Zfd2lkdGggKi8KKyAgICAgIGlmIChvbW5pX3JlcXVlc3QtPnJlY3Zfd2lkdGggPT0gMCkgeworCXJlY3Zfd2lkdGggPSAobHNyX3NpemUvYnl0ZXNfdG9fcmVjdikgKyAxOworCWlmIChyZWN2X3dpZHRoID09IDEpIHJlY3Zfd2lkdGgrKzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKwlyZWN2X3dpZHRoID0gb21uaV9yZXF1ZXN0LT5yZWN2X3dpZHRoOworICAgIH0KKyAgICByZWN2X3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhyZWN2X3dpZHRoLAorCQkJCSAgICAgYnl0ZXNfdG9fcmVjdiwKKwkJCQkgICAgIG9tbmlfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsCisJCQkJICAgICBvbW5pX3JlcXVlc3QtPnJlY3Zfb2Zmc2V0KTsKKworICAgIG9tbmlfcmVzcG9uc2UtPnJlY2VpdmVfc2l6ZSA9IGJ5dGVzX3RvX3JlY3Y7CisgICAgb21uaV9yZXNwb25zZS0+cmVjdl93aWR0aCA9IHJlY3Zfd2lkdGg7CisgIH0KKworI2lmZGVmIFdJTjMyCisgIC8qIFRoZSB0ZXN0IHRpbWVyIGNhbiBmaXJlIGR1cmluZyBvcGVyYXRpb25zIG9uIHRoZSBsaXN0ZW5pbmcgc29ja2V0LAorICAgICBzbyB0byBtYWtlIHRoZSBzdGFydF90aW1lciBiZWxvdyB3b3JrIHdlIGhhdmUgdG8gbW92ZQorICAgICBpdCB0byBjbG9zZSBzX2xpc3RlbiB3aGlsZSB3ZSBhcmUgYmxvY2tlZCBvbiBhY2NlcHQuICovCisgIHdpbl9rbHVkZ2Vfc29ja2V0MiA9IHNfbGlzdGVuOworI2VuZGlmCisKKyAgbmVlZF90b19hY2NlcHQgPSAob21uaV9yZXF1ZXN0LT5wcm90b2NvbCAhPSBJUFBST1RPX1VEUCk7CisKKyAgLyogd2UgbmVlZCB0byBoYW5nIGEgbGlzdGVuIGZvciBldmVyeXRoaW5nIHRoYXQgbmVlZHMgYXQgbGVhc3Qgb25lCisgICAgIGFjY2VwdC4gdGhlIGFnZS1vbGQgY29uc3RhbnQgb2YgNSBpcyBwcm9iYWJseSBPSyBmb3Igb3VyIHB1cnBvc2VzCisgICAgIGJ1dCBkb2VzIG5vdCBuZWNlc3NhcmlseSByZXByZXNlbnQgYmVzdCBwcmFjdGljZSAqLworICBpZiAobmVlZF90b19hY2NlcHQpIHsKKyAgICBpbnQgYmFja2xvZyA9IDU7CisjaWZkZWYgVENQX0ZBU1RPUEVOCisgICAgLyogb25lIG9mIHRoZXNlIGRheXMgSSB3aWxsIGhhdmUgdG8gZ28gZmluZC1vdXQgd2hhdCB0aGUgYmFja2xvZworICAgICAgIGlzIHN1cHBvc2VkIHRvIGJlIGhlcmUuICB1bnRpbCB0aGVuLCBJJ2xsIGp1c3Qgc2V0IGl0IHRvIGZpdmUKKyAgICAgICBsaWtlIHRoZSBsaXN0ZW4oKSBjYWxsIGRvZXMgLSBpdCBpcyBjbGFzc2ljLCBhbmQgd2FzIHdoYXQgd2FzCisgICAgICAgdXNlZCBpbiB0aGUgb25saW5lIGV4YW1wbGUgSSBmb3VuZCAqLworICAgIGlmICh1c2VfZmFzdG9wZW4gJiYKKwkoc2V0c29ja29wdChzX2xpc3RlbixJUFBST1RPX1RDUCwgVENQX0ZBU1RPUEVOLCAmYmFja2xvZywgc2l6ZW9mKGJhY2tsb2cpKSA9PQorCSBTT0NLRVRfRVJST1IpKSB7CisgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOworICAgICAgY2xvc2Uoc19saXN0ZW4pOworICAgICAgc2VuZF9yZXNwb25zZSgpOworICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwibmV0cGVyZnNlcnZlcjogJXMgY291bGQgbm90IGZhc3RvcGVuXG4iLF9fRlVOQ1RJT05fXyk7CisJZmZsdXNoKHdoZXJlKTsKKyAgICAgIH0KKyAgICAgIGV4aXQoMSk7CisgICAgfQorI2VuZGlmIC8qIFRDUF9GQVNUT1BFTiAqLworI2lmZGVmIFRDUF9ERUZFUl9BQ0NFUFQKKyAgICBpZiAod2FudF9kZWZlcl9hY2NlcHQgJiYKKwkoc2V0c29ja29wdChzX2xpc3RlbiwgSVBQUk9UT19UQ1AsIFRDUF9ERUZFUl9BQ0NFUFQsICZiYWNrbG9nLCBzaXplb2YoYmFja2xvZykpID09IFNPQ0tFVF9FUlJPUikpIHsKKyAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CisgICAgICBjbG9zZShzX2xpc3Rlbik7CisgICAgICBzZW5kX3Jlc3BvbnNlKCk7CisgICAgICBpZiAoZGVidWcpIHsKKwlmcHJpbnRmKHdoZXJlLAorCQkibmV0cGVyZnNlcnZlcjogJXMgY291bGQgbm90IGRlZmVyIGFjY2VwdFxuIixfX0ZVTkNUSU9OX18pOworCWZmbHVzaCh3aGVyZSk7CisgICAgICB9CisgICAgICBleGl0KDEpOworICAgIH0KKyNlbmRpZiAvKiBUQ1BfREVGRVJfQUNDRVBUICovCisgICAgaWYgKGxpc3RlbihzX2xpc3RlbiwgYmFja2xvZykgPT0gU09DS0VUX0VSUk9SKSB7CisgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOworICAgICAgY2xvc2Uoc19saXN0ZW4pOworICAgICAgc2VuZF9yZXNwb25zZSgpOworICAgICAgaWYgKGRlYnVnKSB7CisJZnByaW50Zih3aGVyZSwibmV0cGVyZnNlcnZlcjogJXMgY291bGQgbm90IGxpc3RlblxuIixfX0ZVTkNUSU9OX18pOworCWZmbHVzaCh3aGVyZSk7CisgICAgICB9CisgICAgICBleGl0KDEpOworICAgIH0KKyAgfQorCisgIC8qIG5vdyBnZXQgdGhlIHBvcnQgbnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCisgIGFkZHJsZW4gPSBzaXplb2YobXlhZGRyX2luKTsKKyAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLAorCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX2luLAorCQkgICZhZGRybGVuKSA9PSBTT0NLRVRfRVJST1IpeworICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CisgICAgY2xvc2Uoc19saXN0ZW4pOworICAgIHNlbmRfcmVzcG9uc2UoKTsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsImNvdWxkIG5vdCBnZXRzb2NrbmFtZVxuIik7CisgICAgICBmZmx1c2god2hlcmUpOworICAgIH0KKyAgICBleGl0KC0xKTsKKyAgfQorCisgIC8qIE5vdyBteWFkZHJfaW4gY29udGFpbnMgdGhlIHBvcnQgYW5kIHRoZSBpbnRlcm5ldCBhZGRyZXNzIHRoaXMgaXMKKyAgICAgcmV0dXJuZWQgdG8gdGhlIHNlbmRlciBhbHNvIGltcGxpY2l0bHkgdGVsbGluZyB0aGUgc2VuZGVyIHRoYXQKKyAgICAgdGhlIHNvY2tldCBidWZmZXIgc2l6aW5nIGhhcyBiZWVuIGRvbmUuIGxpa2VseSBhcyBub3QsIHRoZSBJUAorICAgICBhZGRyZXNzIHdpbGwgYmUgdGhlIHdpbGRjYXJkIC0gc28gd2Ugb25seSByZWFsbHkgbmVlZCB0byBleHRyYWN0CisgICAgIHRoZSBwb3J0IG51bWJlci4gc2luY2Ugc2VuZF9yZXNwb25zZSBpcyBnb2luZyB0byBjYWxsIGh0b25sIG9uCisgICAgIGFsbCB0aGUgZmllbGRzLCB3ZSB3YW50IHRvIGluaXRpYWxseSBwdXQgdGhlIHBvcnQgbnVtYmVyIGluIHRoZXJlCisgICAgIGluIGhvc3Qgb3JkZXIuICovCisKKyAgb21uaV9yZXNwb25zZS0+ZGF0YV9wb3J0ID0KKyAgICAoaW50KSBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZteWFkZHJfaW4pLT5zaW5fcG9ydCk7CisgIGlmIChkZWJ1ZykgeworICAgIGZwcmludGYod2hlcmUsInRlbGxpbmcgdGhlIHJlbW90ZSB0byBjYWxsIG1lIGF0ICVkXG4iLAorCSAgICBvbW5pX3Jlc3BvbnNlLT5kYXRhX3BvcnQpOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKyAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7CisKKyAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywgKi8KKyAgLyogdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbWF4ICovCisgIC8qIHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUgbWVhc3VyZWQsIG9yICovCisgIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsIHJldHVybiBhIDAuMCB0byAqLworICAvKiB0aGUgaW5pdGlhdG9yLiAqLworCisgIG9tbmlfcmVzcG9uc2UtPmNwdV9yYXRlID0gKGZsb2F0KTAuMDsgCS8qIGFzc3VtZSBubyBjcHUgKi8KKyAgb21uaV9yZXNwb25zZS0+ZmxhZ3MgJj0gfk9NTklfTUVBU1VSRV9DUFU7CisgIGlmIChvbW5pX3JlcXVlc3QtPmZsYWdzICYgT01OSV9NRUFTVVJFX0NQVSkgeworICAgIG9tbmlfcmVzcG9uc2UtPmZsYWdzIHw9IE9NTklfTUVBU1VSRV9DUFU7CisgICAgb21uaV9yZXNwb25zZS0+Y3B1X3JhdGUgPQorICAgICAgY2FsaWJyYXRlX2xvY2FsX2NwdShvbW5pX3JlcXVlc3QtPmNwdV9yYXRlKTsKKyAgfQorCisgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLworICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KKyAgb21uaV9yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOworICBvbW5pX3Jlc3BvbnNlLT5yZWN2X2J1Zl9zaXplID0gbHNyX3NpemU7CisgIGlmIChsb2Nfbm9kZWxheSkKKyAgICBvbW5pX3Jlc3BvbnNlLT5mbGFncyB8PSBPTU5JX05PX0RFTEFZOworICBlbHNlCisgICAgb21uaV9yZXNwb25zZS0+ZmxhZ3MgJj0gfk9NTklfTk9fREVMQVk7CisKKyAgb21uaV9yZXNwb25zZS0+c29fcmN2YXZvaWQgPSBsb2NfcmN2YXZvaWQ7CisgIG9tbmlfcmVzcG9uc2UtPnNvX3NuZGF2b2lkID0gbG9jX3NuZGF2b2lkOworICBvbW5pX3Jlc3BvbnNlLT5pbnRlcnZhbF91c2VjcyA9IGludGVydmFsX3VzZWNzOworICBvbW5pX3Jlc3BvbnNlLT5pbnRlcnZhbF9idXJzdCA9IGludGVydmFsX2J1cnN0OworCisgIHNlbmRfcmVzcG9uc2VfbihPTU5JX1JFU1BPTlNFX0NPTlZfQ1VUT0ZGKTsgLyogYnJpdHRsZSwgYnV0IGZ1bmN0aW9uYWwgKi8KKworICBsb2NhbF9zZW5kX2NhbGxzID0gMDsKKyAgbG9jYWxfcmVjZWl2ZV9jYWxscyA9IDA7CisKKyAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7CisgIG1lbXNldCgmcGVlcmFkZHJfaW4sMCxzaXplb2YocGVlcmFkZHJfaW4pKTsKKworICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCisgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCisKKyAgY3B1X3N0YXJ0KG9tbmlfcmVxdWVzdC0+ZmxhZ3MgJiBPTU5JX01FQVNVUkVfQ1BVKTsKKworICAvKiBpZiB0aGUgdGVzdCBpcyB0aW1lZCwgc2V0IGEgdGltZXIgb2Ygc3VpdGFibGUgbGVuZ3RoLiAgaWYgdGhlCisgICAgIHRlc3QgaXMgYnkgYnl0ZS90cmFuc2FjdGlvbiBjb3VudCwgd2UgZG9uJ3QgbmVlZCBhIHRpbWVyIC0gb3IKKyAgICAgcmF0aGVyIHdlIHJlbHkgb24gdGhlIG5ldHBlcmYgdG8gb25seSBhc2sgdXMgdG8gZG8gdHJhbnNhY3Rpb24KKyAgICAgY291bnRzIG92ZXIgInJlbGlhYmxlIiBwcm90b2NvbHMuICBwZXJoYXBzIGF0IHNvbWUgcG9pbnQgd2UKKyAgICAgc2hvdWxkIGFkZCBhIGNoZWNrIGhlcmVib3V0cyB0byB2ZXJpZnkgdGhhdC4uLiAqLworCisgIGlmIChvbW5pX3JlcXVlc3QtPnRlc3RfbGVuZ3RoID49IDApIHsKKyAgICB0aW1lc191cCA9IDA7CisgICAgdW5pdHNfcmVtYWluaW5nID0gMDsKKwl0ZXN0X3RpbWU9b21uaV9yZXF1ZXN0LT50ZXN0X2xlbmd0aDsKKyAgICAvKiBpZiB3ZSBhcmUgdGhlIHNlbmRlciBhbmQgb25seSBzZW5kaW5nLCB0aGVuIHdlIGRvbid0IG5lZWQvd2FudAorICAgICAgIHRoZSBwYWRkaW5nLCBvdGhlcndpc2UsIHdlIG5lZWQgdGhlIHBhZGRpbmcgKi8KKyAgICBpZiAoIShORVRQRVJGX1hNSVRfT05MWShvbW5pX3JlcXVlc3QtPmRpcmVjdGlvbikpICYmIAorCShvbW5pX3JlcXVlc3QtPnRlc3RfbGVuZ3RoID4gMCkpCisgICAgICBwYWRfdGltZSA9IFBBRF9USU1FOworICAgIHN0YXJ0X3RpbWVyKG9tbmlfcmVxdWVzdC0+dGVzdF9sZW5ndGggKyBwYWRfdGltZSk7CisgIH0KKyAgZWxzZSB7CisgICAgdGltZXNfdXAgPSAxOworICAgIHVuaXRzX3JlbWFpbmluZyA9IG9tbmlfcmVxdWVzdC0+dGVzdF9sZW5ndGggKiAtMTsKKyAgfQorCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyAgSU5URVJWQUxTX0lOSVQoKTsKKyNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLworCisKKyAgdHJhbnNfY29tcGxldGVkID0gMDsKKyAgYnl0ZXNfc2VudCA9IDA7CisgIGJ5dGVzX3JlY2VpdmVkID0gMDsKKyAgY29ubmVjdGVkID0gMDsKKworICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHVuaXRzX3JlbWFpbmluZyA+IDApKSB7CisKKyAgICBpZiAobmVlZF90b19hY2NlcHQpIHsKKyAgICAgIC8qIGFjY2VwdCBhIGNvbm5lY3Rpb24gZnJvbSB0aGUgcmVtb3RlICovCisjaWZkZWYgV0lOMzIKKyAgICAgIC8qIFRoZSB0ZXN0IHRpbWVyIHdpbGwgcHJvYmFibHkgZmlyZSBkdXJpbmcgdGhpcyBhY2NlcHQsCisJIHNvIHRvIG1ha2UgdGhlIHN0YXJ0X3RpbWVyIGFib3ZlIHdvcmsgd2UgaGF2ZSB0byBtb3ZlCisJIGl0IHRvIGNsb3NlIHNfbGlzdGVuIHdoaWxlIHdlIGFyZSBibG9ja2VkIG9uIGFjY2VwdC4gKi8KKyAgICAgIHdpbl9rbHVkZ2Vfc29ja2V0ID0gc19saXN0ZW47CisjZW5kaWYKKyAgICAgIGlmICgoZGF0YV9zb2NrZXQ9YWNjZXB0KHNfbGlzdGVuLAorCQkJICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZwZWVyYWRkcl9pbiwKKwkJCSAgICAgICZhZGRybGVuKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKwlpZiAoZXJybm8gPT0gRUlOVFIpIHsKKwkgIC8qIHRoZSB0aW1lciBwb3BwZWQgKi8KKwkgIHRpbWVzX3VwID0gMTsgLyogb3N0ZW5zaWJseSB0aGUgc2lnbmFsIGhhbmRlciBkZWFsdCB3aXRoIHRoaXM/Ki8KKwkgIHRpbWVkX291dCA9IDE7CisJICBicmVhazsKKwl9CisJbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKKwlzZW5kX3Jlc3BvbnNlKCk7CisJZnByaW50Zih3aGVyZSwiJXM6IGFjY2VwdDogZXJybm8gPSAlZFxuIixfX0ZVTkNUSU9OX18sZXJybm8pOworCWZmbHVzaCh3aGVyZSk7CisJY2xvc2Uoc19saXN0ZW4pOworCisJZXhpdCgtMSk7CisgICAgICB9CisKKyAgICAgIGlmIChkZWJ1ZykgeworCWZwcmludGYod2hlcmUsIiVzOiBhY2NlcHRlZCBkYXRhIGNvbm5lY3Rpb24uXG4iLF9fRlVOQ1RJT05fXyk7CisJZmZsdXNoKHdoZXJlKTsKKyAgICAgIH0KKyAgICAgIG5lZWRfdG9fYWNjZXB0ID0gMDsKKyAgICAgIGNvbm5lY3RlZCA9IDE7CisKKyNpZmRlZiBLTFVER0VfU09DS0VUX09QVElPTlMKKyAgICAgIC8qIHRoaXMgaXMgZm9yIHRob3NlIHN5c3RlbXMgd2hpY2ggKklOQ09SUkVDVExZKiBmYWlsIHRvIHBhc3MKKwkgYXR0cmlidXRlcyBhY3Jvc3MgYW4gYWNjZXB0KCkgY2FsbC4gSW5jbHVkaW5nIHRoaXMgZ29lcworCSBhZ2FpbnN0IG15IGJldHRlciBqdWRnZW1lbnQgOiggcmFqIDExLzk1ICovCisKKyAgICAgIGtsdWRnZV9zb2NrZXRfb3B0aW9ucyhkYXRhX3NvY2tldCk7CisKKyNlbmRpZiAvKiBLTFVER0VfU09DS0VUX09QVElPTlMgKi8KKworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIEkgd29uZGVyIGlmIGR1cGluZyB3b3VsZCBiZSBiZXR0ZXIgaGVyZT8gd2UgYWxzbyBuZWVkIHRvIHNldAorCSBwZWVyYWRkcl9pbiBzbyB3ZSBjYW4gc2VuZCB0byBuZXRwZXJmIGlmIHRoaXMgaXNuJ3QgYQorCSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3Qgb3IgaWYgd2UgYXJlIGdvaW5nIHRvIGNvbm5lY3QoKSB0aGUKKwkgc29ja2V0LCBidXQgd2Ugb25seSBuZWVkIHRvIGRvIGl0IG9uY2UuICovCisgICAgICBpZiAoKG9tbmlfcmVxdWVzdC0+cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApICYmCisJICAoIXBlZXJhZGRyX3NldCkpIHsKKwlwZWVyYWRkcl9zZXQgPSAxOworCWRhdGFfc29ja2V0ID0gc19saXN0ZW47CisJc2V0X3NvY2thZGRyX2ZhbWlseV9hZGRyX3BvcnQoJnBlZXJhZGRyX2luLAorCQkJCSAgICAgIG5mX3RvX2FmKG9tbmlfcmVxdWVzdC0+aXBmYW1pbHkpLAorCQkJCSAgICAgIG9tbmlfcmVxdWVzdC0+bmV0cGVyZl9pcCwKKwkJCQkgICAgICBvbW5pX3JlcXVlc3QtPm5ldHBlcmZfcG9ydCk7CisgICAgICB9CisgICAgfQorCisjaWZkZWYgV0lOMzIKKyAgLyogdGhpcyBpcyB1c2VkIHNvIHRoZSB0aW1lciB0aHJlYWQgY2FuIGNsb3NlIHRoZSBzb2NrZXQgb3V0IGZyb20KKyAgICAgdW5kZXIgdXMsIHdoaWNoIHRvIGRhdGUgaXMgdGhlIGVhc2llc3QvY2xlYW5lc3QvbGVhc3QKKyAgICAgV2luZG93cy1zcGVjaWZpYyB3YXkgSSBjYW4gZmluZCB0byBmb3JjZSB0aGUgd2luc29jayBjYWxscyB0bworICAgICByZXR1cm4gV1NBRUlOVFIgd2l0aCB0aGUgdGVzdCBpcyBvdmVyLiBhbnl0aGluZyB0aGF0IHdpbGwgcnVuIG9uCisgICAgIDk1IGFuZCBOVCBhbmQgaXMgY2xvc2VyIHRvIHdoYXQgbmV0cGVyZiBleHBlY3RzIGZyb20gVW5peCBzaWduYWxzCisgICAgIGFuZCBzdWNoIHdvdWxkIGJlIGFwcHJlY2lhdGVkIHJhaiAxLzk2ICovCisgIHdpbl9rbHVkZ2Vfc29ja2V0ID0gZGF0YV9zb2NrZXQ7CisjZW5kaWYgLyogV0lOMzIgKi8KKworICAgIC8qIGluIHJlY3Zfb21uaSwgd2UgY2hlY2sgcmVjdiBmaXJzdCwgYW5kIF90aGVuXyBzZW5kLCBvdGhlcndpc2UsCisgICAgICAgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3Qgd2lsbCBiZSBhbGwgbWVzc2VkLXVwIDopIGFuZCB0aGF0IHRoZW4KKyAgICAgICBpcyB3aHkgdGhlcmUgYXJlIHR3byByb3V0aW5lcyB0byBydWxlIHRoZW0gYWxsIHJhdGhlciB0aGFuIGp1c3QKKyAgICAgICBvbmUgOikgKi8KKyAgICBpZiAoKG9tbmlfcmVxdWVzdC0+ZGlyZWN0aW9uICYgTkVUUEVSRl9SRUNWKSAmJgorCSgoIXRpbWVzX3VwKSB8fCAodW5pdHNfcmVtYWluaW5nID4gMCkpKSB7CisgICAgICByZXQgPSByZWN2X2RhdGEoZGF0YV9zb2NrZXQsCisJCSAgICAgIHJlY3ZfcmluZywKKwkJICAgICAgYnl0ZXNfdG9fcmVjdiwKKwkJICAgICAgKGNvbm5lY3RlZCkgPyBOVUxMIDogKHN0cnVjdCBzb2NrYWRkciAqKSZwZWVyYWRkcl9pbiwKKwkJICAgICAgJmFkZHJsZW4sCisJCSAgICAgIC8qIGlmIFhNSVQgYWxzbywgdGhlbiB0aGlzIGlzIFJSIHRlc3Qgc28gd2FpdGFsbCAqLworCQkgICAgICAoZGlyZWN0aW9uICYgTkVUUEVSRl9YTUlUKSA/IE5FVFBFUkZfV0FJVEFMTDogMCwKKwkJICAgICAgJnRlbXBfcmVjdnMpOworICAgICAgaWYgKHJldCA+IDApIHsKKwkvKiBpZiB0aGlzIGlzIGEgcmVjdi1vbmx5IHRlc3QgY29udHJvbGxlZCBieSBieXRlIGNvdW50IHdlCisJICAgZGVjcmVtZW50IHRoZSB1bml0c19yZW1haW5pbmcgYnkgdGhlIGJ5dGVzIHJlY2VpdmVkICovCisJaWYgKCEoZGlyZWN0aW9uICYgTkVUUEVSRl9YTUlUKSAmJiAodW5pdHNfcmVtYWluaW5nID4gMCkpIHsKKwkgIHVuaXRzX3JlbWFpbmluZyAtPSByZXQ7CisJfQorCWJ5dGVzX3JlY2VpdmVkICs9IHJldDsKKwlsb2NhbF9yZWNlaXZlX2NhbGxzICs9IHRlbXBfcmVjdnM7CisgICAgICB9CisgICAgICBlbHNlIGlmIChyZXQgPT0gMCkgeworCS8qIGlzIHRoaXMgdGhlIGVuZCBvZiBhIHRlc3QsIGp1c3QgYSB6ZXJvLWJ5dGUgcmVjdiwgb3IKKwkgICBzb21ldGhpbmcgZWxzZT8gdGhhdCBpcyBhbiBleGNlZWRpbmdseSBnb29kIHF1ZXN0aW9uIGFuZAorCSAgIG9uZSBmb3Igd2hpY2ggSSBkb24ndCBwcmVzZW50bHkgaGF2ZSBhIGdvb2QgYW5zd2VyLCBidXQKKwkgICB0aGF0IHdvbid0IHN0b3AgbWUgZnJvbSBndWVzc2luZyA6KSByYWogMjAwOC0wMS0wOSAqLworCWlmICghKChjb25uZWN0aW9uX3Rlc3QpIHx8IChudWxsX21lc3NhZ2Vfb2spKSkgeworCSAgLyogaWYgaXQgaXMgbmVpdGhlciBhIGNvbm5lY3Rpb25fdGVzdCBub3IgbnVsbF9tZXNzYWdlX29rIGl0CisJICAgICBtdXN0IGJlIHRoZSBlbmQgb2YgdGhlIHRlc3QgKi8KKwkgIHRpbWVzX3VwID0gMTsKKwkgIGJyZWFrOworCX0KKwlsb2NhbF9yZWNlaXZlX2NhbGxzICs9IHRlbXBfcmVjdnM7CisgICAgICB9CisgICAgICBlbHNlIGlmIChyZXQgPT0gLTEpIHsKKwkvKiB0ZXN0IHRpbWVkLW91dCAqLworCXRpbWVzX3VwID0gMTsKKwl0aW1lZF9vdXQgPSAxOworCWJyZWFrOworICAgICAgfQorICAgICAgZWxzZSB7CisJLyogcHJlc2VudGx5IGF0IGxlYXN0LCAtMiBhbmQgLTMgYXJlIGVxdWFsbHkgYmFkIG9uIHJlY3YgKi8KKwkvKiB3ZSBuZWVkIGEgcmVzcG9uc2UgbWVzc2FnZSBoZXJlIGZvciB0aGUgY29udHJvbCBjb25uZWN0aW9uCisJICAgYmVmb3JlIHdlIGV4aXQhICovCisJbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKKwlzZW5kX3Jlc3BvbnNlKCk7CisJZXhpdCgtMSk7CisgICAgICB9CisgICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7CisgICAgfQorCisgICAgLyogaWYgd2Ugc2hvdWxkIHRyeSB0byBzZW5kIHNvbWV0aGluZywgdGhlbiBieSBhbGwgbWVhbnMsIGxldCB1cworICAgICAgIHRyeSB0byBzZW5kIHNvbWV0aGluZy4gKi8KKyAgICBpZiAoKG9tbmlfcmVxdWVzdC0+ZGlyZWN0aW9uICYgTkVUUEVSRl9YTUlUKSAmJgorCSgoIXRpbWVzX3VwKSB8fCAodW5pdHNfcmVtYWluaW5nID4gMCkpKSB7CisgICAgICAKKyAgICAgIC8qIHRoZXJlIHVzZWQgdG8gYmUgc29tZSBjb2RlIGhlcmUgbG9va2luZyBzY2hlZF95aWVsZCgpIHVudGlsCisJIHRoZXJlIHdhcyBubyBtb3JlIHF1ZXVlZCwgdW5zZW50IGRhdGEgb24gdGhlIHNvY2tldCBidXQKKwkgZnJhbmtseSwgSSd2ZSBubyBpZGVhIHdoYXQgdGhhdCB3YXMgYWxsIGFib3V0IHNvIEkgaGF2ZQorCSByZW1vdmVkIGl0LiBJdCBtYXkgaGF2ZSBiZWVuIHBhcnQgb2YgYSBrbHVkZ2UgdG8gdHJ5IHRvIGF2b2lkCisJIGNvYWxlc2NpbmcgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyAqLworCisgICAgICBpZiAob21uaV9yZXF1ZXN0LT5wcm90b2NvbCA9PSBJUFBST1RPX1VEUCAmJiBuZWVkX3RvX2Nvbm5lY3QgJiYKKyAgICAgICAgICAhY29ubmVjdGVkKSB7CisgICAgICAgIGlmIChjb25uZWN0KGRhdGFfc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyKikmcGVlcmFkZHJfaW4sCisgICAgICAgICAgICAgICAgICAgIGFkZHJsZW4pID09IElOVkFMSURfU09DS0VUKSB7CisJICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOworCSAgc2VuZF9yZXNwb25zZSgpOworCSAgY2xvc2UoZGF0YV9zb2NrZXQpOworCSAgZXhpdCgtMSk7CisgICAgICAgIH0KKyAgICAgICAgY29ubmVjdGVkID0gMTsKKyAgICAgIH0KKyAgICAgIAorICAgICAgcmV0ID0gc2VuZF9kYXRhKGRhdGFfc29ja2V0LAorCQkgICAgICBzZW5kX3JpbmcsCisJCSAgICAgIGJ5dGVzX3RvX3NlbmQsCisJCSAgICAgIChjb25uZWN0ZWQpID8gTlVMTCA6IChzdHJ1Y3Qgc29ja2FkZHIgKikmcGVlcmFkZHJfaW4sCisJCSAgICAgIGFkZHJsZW4sCisJCSAgICAgIG9tbmlfcmVxdWVzdC0+cHJvdG9jb2wpOworCisgICAgICAvKiB0aGUgb3JkZXIgb2YgdGhlc2UgaWYncyB3aWxsIHNlZW0gYSB0cmlmZmxlIHN0cmFuZ2UsIGJ1dCB0aGV5CisJIGFyZSBteSBiZXN0IGd1ZXNzIGFzIHRvIG9yZGVyIG9mIHByb2JhYmlsdHkgYW5kL29yIGltcG9ydGFuY2UKKwkgdG8gdGhlIG92ZXJoZWFkIHJhaiAyMDA4LTAxLTA5Ki8KKyAgICAgIGlmIChyZXQgPT0gYnl0ZXNfdG9fc2VuZCkgeworCS8qIGlmIHRoaXMgaXMgYSBzZW5kLW9ubHkgdGVzdCBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQgd2UKKwkgICBkZWNyZW1lbnQgdW5pdHNfcmVtYWluaW5nIGJ5IHRoZSBieXRlcyBzZW50ICovCisJaWYgKCEoZGlyZWN0aW9uICYgTkVUUEVSRl9SRUNWKSAmJiAodW5pdHNfcmVtYWluaW5nID4gMCkpIHsKKwkgIHVuaXRzX3JlbWFpbmluZyAtPSByZXQ7CisJfQorCWJ5dGVzX3NlbnQgKz0gcmV0OworCXNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKKwlsb2NhbF9zZW5kX2NhbGxzKys7CisgICAgICB9CisgICAgICBlbHNlIGlmIChyZXQgPT0gLTIpIHsKKwkvKiB3aGF0IHRvIGRvIGhlcmUgLTIgbWVhbnMgYSBub24tZmF0YWwgZXJyb3IgLSBwcm9iYWJseQorCSAgIEVOT0JVRlMgYW5kIHNvIG91ciBzZW5kIGRpZG4ndCBoYXBwZW4uICBpbiB0aGUgb2xkIGNvZGUgZm9yCisJICAgVURQX1NUUkVBTSB3ZSB3b3VsZCBqdXN0IGNvbnRpbnVlIGluIHRoZSB3aGlsZSBsb29wLiAgaXQKKwkgICBpc24ndCBjbGVhciB0aGF0IGlzIHdoYXQgdG8gZG8gaGVyZSwgc28gd2Ugd2lsbCBzaW1wbHkKKwkgICBpbmNyZW1lbnQgdGhlIGZhaWxlZF9zZW5kcyBzdGF0IGFuZCBmYWxsLXRocm91Z2guIElmIHRoaXMKKwkgICBpcyBhIFVEUF9TVFJFQU0gc3R5bGUgb2YgdGVzdCwgdGhlIG5ldCBlZmZlY3Qgc2hvdWxkIGJlIHRoZQorCSAgIHNhbWUuIGlmIHRoaXMgaXMgYSBVRFBfUlIgd2l0aCBhIHJlYWxseS1iaWcgYnVyc3QgY291bnQsIEkKKwkgICBkb24ndCB0aGluayB3ZSB3ZXJlIGNoZWNraW5nIGZvciBFTk9CVUZTIHRoZXJlIGFueXdheSBhbmQKKwkgICBzbyB3b3VsZCBoYXZlIGZhaWxlZC4gIEhlcmUgd2UgY2FuIGp1c3QgbGV0IHRoaW5ncworCSAgIHNsaWRlLiAqLworCWZhaWxlZF9zZW5kcysrOworICAgICAgfQorICAgICAgZWxzZSBpZiAocmV0ID09IDApIHsKKwkvKiB3YXMgdGhpcyBhIHplcm8tYnl0ZSBzZW5kPyBpZiBpdCB3YXMsIHRoZW4gb3N0ZW5zaWJseSB3ZQorCSAgIHdvdWxkIGhpdCB0aGUgcmV0ID09IGJ5dGVzX3RvX3NlbmQgY2FzZSB3aGljaCBtZWFucyB3ZSdkCisJICAgbmV2ZXIgZ2V0IGhlcmUgYXMgd2UgYXJlIHVzaW5nIGJsb2NraW5nIHNlbWFudGljcyAqLworICAgICAgfQorICAgICAgZWxzZSBpZiAocmV0ID09IC0xKSB7CisJdGltZXNfdXAgPSAxOworCXRpbWVkX291dCA9IDE7CisJYnJlYWs7CisgICAgICB9CisgICAgICBlbHNlIHsKKwkvKiB3ZSBuZWVkIGEgcmVzcG9uc2UgbWVzc2FnZSBiYWNrIHRvIG5ldHBlcmYgaGVyZSBiZWZvcmUgd2UKKwkgICBleGl0ICovCisJLyogTkVFRCBSRVNQT05TRTsgKi8KKwluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOworCXNlbmRfcmVzcG9uc2UoKTsKKwlleGl0KC0xKTsKKyAgICAgIH0KKworICAgIH0KKworICAgIGlmIChjb25uZWN0aW9uX3Rlc3QpIHsKKyNpZmRlZiBfX2xpbnV4CisgICAgICAvKiBzbywgIkxpbnV4IiB3aXRoIGF1dG90dW5pbmcgbGlrZXMgdG8gYWx0ZXIgdGhlIHNvY2tldCBidWZmZXIKKwkgc2l6ZXMgb3ZlciB0aGUgbGlmZSBvZiB0aGUgY29ubmVjdGlvbiwgYnV0IG9ubHkgZG9lcyBzbyB3aGVuCisJIG9uZSB0YWtlcyB0aGUgZGVmYXVsdHMgYXQgdGltZSBvZiBzb2NrZXQgY3JlYXRpb24uICBpZiB3ZQorCSB0b29rIHRob3NlIGRlZmF1bHRzLCB3ZSBzaG91bGQgaW5xdWlyZSBhcyB0byB3aGF0IHRoZSB2YWx1ZXMKKwkgdWx0aW1hdGVseSBiZWNhbWUuIHJhaiAyMDA4LTAxLTE1ICovCisgICAgICAvKiBidXQgYXMgYW5ub3lpbmcgYXMgaXQgaXMgdG8gaGF2ZSB0byBtYWtlIHRoZXNlIGNhbGxzLCBkb24ndAorCSBwZW5hbGl6ZSBsaW51eCBieSBjYWxsaW5nIHRoZW0gb3ZlciBhbmQgb3ZlciBhZ2Fpbi4gaW5zdGVhZAorCSB3ZSB3aWxsIHNpbXBseSBhc3MtdS1tZSB0aGF0IGl0IHdpbGwgYmVjb21lIHRoZSBzYW1lIHZhbHVlCisJIG92ZXIgYW5kIG92ZXIgYWdhaW4uIHJhaiAyMDEwMDkxNyAqLworICAgICAgaWYgKChsc3Jfc2l6ZV9yZXEgPCAwKSAmJiAoLTEgPT0gbHNyX3NpemVfZW5kKSkKKwlnZXRfc29ja19idWZmZXIoZGF0YV9zb2NrZXQsIFJFQ1ZfQlVGRkVSLCAmbHNyX3NpemVfZW5kKTsKKyAgICAgIGVsc2UKKwlsc3Jfc2l6ZV9lbmQgPSBsc3Jfc2l6ZTsKKyAgICAgIGlmICgobHNzX3NpemVfcmVxIDwgMCkgJiYgKC0xID09IGxzc19zaXplX2VuZCkpCisJZ2V0X3NvY2tfYnVmZmVyKGRhdGFfc29ja2V0LCBTRU5EX0JVRkZFUiwgJmxzc19zaXplX2VuZCk7CisgICAgICBlbHNlCisJbHNzX3NpemVfZW5kID0gbHNzX3NpemU7CisjZWxzZQorICAgICAgbHNyX3NpemVfZW5kID0gbHNyX3NpemU7CisgICAgICBsc3Nfc2l6ZV9lbmQgPSBsc3Nfc2l6ZTsKKyNlbmRpZgorICAgICAgcmV0ID0gY2xvc2VfZGF0YV9zb2NrZXQoZGF0YV9zb2NrZXQsTlVMTCwwLG9tbmlfcmVxdWVzdC0+cHJvdG9jb2wpOworICAgICAgaWYgKHJldCA9PSAtMSkgeworCXRpbWVzX3VwID0gMTsKKwl0aW1lZF9vdXQgPSAxOworCWJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZiAocmV0IDwgMCkgeworCW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CisJc2VuZF9yZXNwb25zZSgpOworCXBlcnJvcigibmV0cGVyZjogcmVjdl9vbW5pOiBjbG9zZV9kYXRhX3NvY2tldCBmYWlsZWQiKTsKKwlmZmx1c2god2hlcmUpOworCWV4aXQoLTEpOworICAgICAgfQorICAgICAgLyogd2Ugd2lsbCBuZWVkIGEgbmV3IGNvbm5lY3Rpb24gdG8gYmUgZXN0YWJsaXNoZWQgKi8KKyAgICAgIG5lZWRfdG9fYWNjZXB0ID0gMTsKKyAgICAgIGNvbm5lY3RlZCA9IDA7CisgICAgfQorCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyAgICBJTlRFUlZBTFNfV0FJVCgpOworI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCisKKyAgICAvKiB3YXMgdGhpcyBhICJ0cmFuc2FjdGlvbiIgdGVzdD8gZG9uJ3QgZm9yIGdldCB0aGF0IGEgVENQX0NDCisgICAgICAgc3R5bGUgdGVzdCB3aWxsIGhhdmUgbm8geG1pdCBvciByZWN2IDopIHNvLCB3ZSBjaGVjayBmb3IgZWl0aGVyCisgICAgICAgYm90aCBYTUlUIGFuZCBSRUNWIHNldCwgb3IgbmVpdGhlciBYTUlUIG5vciBSRUNWIHNldCAqLworICAgIGlmIChORVRQRVJGX0lTX1JSKG9tbmlfcmVxdWVzdC0+ZGlyZWN0aW9uKSkgeworICAgICAgdHJhbnNfY29tcGxldGVkKys7CisgICAgICBpZiAodW5pdHNfcmVtYWluaW5nKSB7CisJdW5pdHNfcmVtYWluaW5nLS07CisgICAgICB9CisgICAgfQorICB9CisKKyAgLyogVGhlIGN1cnJlbnQgaXRlcmF0aW9uIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHVuaXQgY291bnQKKyAgICAgYmVpbmcgIHJlYWNoZWQgKi8KKyAgc3RvcF90aW1lcigpOworICBjcHVfc3RvcChvbW5pX3JlcXVlc3QtPmZsYWdzICYgT01OSV9NRUFTVVJFX0NQVSwmZWxhcHNlZF90aW1lKTsKKyAgY2xvc2Uoc19saXN0ZW4pOworCisjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKKyNpZmRlZiBXSU4zMgorICBzdG9wX2l0aW1lcigpOworI2VuZGlmCisjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KKworIGlmICh0aW1lZF9vdXQpIHsKKyAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCBtYXkgaGF2ZSBiZWVuIFBBRF9USU1FIHNlY29uZHMKKyAgICAgICBsb25nZXIgdGhhbiB3ZSB3YW50ZWQgdG8gcnVuLiBzbywgd2Ugd2FudCB0byBzdWJ0cmFjdCBwYWRfdGltZQorICAgICAgIGZyb20gdGhlIGVsYXBzZWRfdGltZS4gaWYgd2UgZGlkbid0IHBhZCB0aGUgdGltZXIgcGFkX3RpbWUgd2lsbAorICAgICAgIGJlIDAgc28gd2UgY2FuIGp1c3Qgc3VidHJhY3QgaXQgYW55d2F5IDopICovCisgICAgaWYgKGRlYnVnKSB7CisgICAgICBmcHJpbnRmKHdoZXJlLCJBZGp1c3RpbmcgZWxhcHNlZCB0aW1lIGJ5ICVkIHNlY29uZHNcbiIscGFkX3RpbWUpOworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisgICAgZWxhcHNlZF90aW1lIC09IHBhZF90aW1lOworICB9CisKKyAgcmVtb3RlX3RyYW5zcG9ydF9yZXRyYW5zID0gZ2V0X3RyYW5zcG9ydF9yZXRyYW5zKGRhdGFfc29ja2V0LAorCQkJCQkJICAgb21uaV9yZXF1ZXN0LT5wcm90b2NvbCk7CisKKyAgaWYgKGNvbm5lY3RlZCkgeworI2lmZGVmIF9fbGludXgKKyAgICAvKiBzbywgIkxpbnV4IiB3aXRoIGF1dG90dW5pbmcgbGlrZXMgdG8gYWx0ZXIgdGhlIHNvY2tldCBidWZmZXIKKyAgICAgICBzaXplcyBvdmVyIHRoZSBsaWZlIG9mIHRoZSBjb25uZWN0aW9uLCBidXQgb25seSBkb2VzIHNvIHdoZW4KKyAgICAgICBvbmUgdGFrZXMgdGhlIGRlZmF1bHRzIGF0IHRpbWUgb2Ygc29ja2V0IGNyZWF0aW9uLiAgaWYgd2UgdG9vaworICAgICAgIHRob3NlIGRlZmF1bHRzLCB3ZSBzaG91bGQgaW5xdWlyZSBhcyB0byB3aGF0IHRoZSB2YWx1ZXMKKyAgICAgICB1bHRpbWF0ZWx5IGJlY2FtZS4gcmFqIDIwMDgtMDEtMTUgKi8KKyAgICBpZiAobHNyX3NpemVfcmVxIDwgMCkKKyAgICAgIGdldF9zb2NrX2J1ZmZlcihkYXRhX3NvY2tldCwgUkVDVl9CVUZGRVIsICZsc3Jfc2l6ZV9lbmQpOworICAgIGVsc2UKKyAgICAgIGxzcl9zaXplX2VuZCA9IGxzcl9zaXplOworICAgIGlmIChsc3Nfc2l6ZV9yZXEgPCAwKQorICAgICAgZ2V0X3NvY2tfYnVmZmVyKGRhdGFfc29ja2V0LCBTRU5EX0JVRkZFUiwgJmxzc19zaXplX2VuZCk7CisgICAgZWxzZQorICAgICAgbHNzX3NpemVfZW5kID0gbHNzX3NpemU7CisjZWxzZQorICAgIGxzcl9zaXplX2VuZCA9IGxzcl9zaXplOworICAgIGxzc19zaXplX2VuZCA9IGxzc19zaXplOworI2VuZGlmCisgICAgaWYgKG9tbmlfcmVxdWVzdC0+ZmxhZ3MgJiBPTU5JX1dBTlRfUkVNX0NPTkcpIHsKKyAgICAgIGdldF90cmFuc3BvcnRfY29uZ19jb250cm9sKGRhdGFfc29ja2V0LAorCQkJCSBsb2NhbF9yZXMtPmFpX3Byb3RvY29sLAorCQkJCSBvbW5pX3Jlc3VsdHMtPmNvbmdfY29udHJvbCwKKwkJCQkgc2l6ZW9mKG9tbmlfcmVzdWx0cy0+Y29uZ19jb250cm9sKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3RybmNweShvbW5pX3Jlc3VsdHMtPmNvbmdfY29udHJvbCwiIixzaXplb2Yob21uaV9yZXN1bHRzLT5jb25nX2NvbnRyb2wpKTsKKyAgICB9CisKKworICAgIGNsb3NlX2RhdGFfc29ja2V0KGRhdGFfc29ja2V0LE5VTEwsMCxvbW5pX3JlcXVlc3QtPnByb3RvY29sKTsKKyAgfQorICBlbHNlIHsKKyAgICBjbG9zZV9kYXRhX3NvY2tldChkYXRhX3NvY2tldCwoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyX2luLGFkZHJsZW4sb21uaV9yZXF1ZXN0LT5wcm90b2NvbCk7CisgICAgbHNyX3NpemVfZW5kID0gbHNyX3NpemU7CisgICAgbHNzX3NpemVfZW5kID0gbHNzX3NpemU7CisgIH0KKworICAvKiBzZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBzZW5kZXIgICovCisKKyAgb21uaV9yZXN1bHRzLT5zZW5kX2NhbGxzICAgICAgPSAodWludDMyX3QpIGxvY2FsX3NlbmRfY2FsbHM7CisgIG9tbmlfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWRfbG8gPSBieXRlc19yZWNlaXZlZCAmIDB4MDAwMDAwMDBGRkZGRkZGRlVMTDsKKyAgb21uaV9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZF9oaSA9IChieXRlc19yZWNlaXZlZCAmIDB4RkZGRkZGRkYwMDAwMDAwMFVMTCkgPj4gMzI7CisgIG9tbmlfcmVzdWx0cy0+cmVjdl9idWZfc2l6ZSAgID0gbHNyX3NpemVfZW5kOworICBvbW5pX3Jlc3VsdHMtPnJlY3ZfY2FsbHMgICAgICA9ICh1aW50MzJfdCkgbG9jYWxfcmVjZWl2ZV9jYWxsczsKKyAgb21uaV9yZXN1bHRzLT5ieXRlc19zZW50X2xvICAgPSBieXRlc19zZW50ICYgMHgwMDAwMDAwMEZGRkZGRkZGVUxMOworICBvbW5pX3Jlc3VsdHMtPmJ5dGVzX3NlbnRfaGkgICA9IChieXRlc19zZW50ICYgMHhGRkZGRkZGRjAwMDAwMDAwVUxMKSA+PiAzMjsKKyAgb21uaV9yZXN1bHRzLT5zZW5kX2J1Zl9zaXplICAgPSBsc3Nfc2l6ZV9lbmQ7CisgIG9tbmlfcmVzdWx0cy0+dHJhbnNfcmVjZWl2ZWQJPSAodWludDMyX3QpIHRyYW5zX2NvbXBsZXRlZDsKKyAgb21uaV9yZXN1bHRzLT5lbGFwc2VkX3RpbWUJPSBlbGFwc2VkX3RpbWU7CisgIG9tbmlfcmVzdWx0cy0+dHJhbnNwb3J0X3JldHJhbnMgPSByZW1vdGVfdHJhbnNwb3J0X3JldHJhbnM7CisgIG9tbmlfcmVzdWx0cy0+Y3B1X21ldGhvZCAgICAgID0gY3B1X21ldGhvZDsKKyAgb21uaV9yZXN1bHRzLT5udW1fY3B1cyAgICAgICAgPSBsaWJfbnVtX2xvY19jcHVzOworICBpZiAob21uaV9yZXF1ZXN0LT5mbGFncyAmIE9NTklfTUVBU1VSRV9DUFUpIHsKKyAgICBvbW5pX3Jlc3VsdHMtPmNwdV91dGlsICAgICAgICAgICAgPSBjYWxjX2NwdV91dGlsKGVsYXBzZWRfdGltZSk7CisgICAgb21uaV9yZXN1bHRzLT5jcHVfcGVyY2VudF91c2VyICAgID0gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfdXNlcjsKKyAgICBvbW5pX3Jlc3VsdHMtPmNwdV9wZXJjZW50X3N5c3RlbSAgPSBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV9zeXN0ZW07CisgICAgb21uaV9yZXN1bHRzLT5jcHVfcGVyY2VudF9pb3dhaXQgID0gbGliX2xvY2FsX2NwdV9zdGF0cy5jcHVfaW93YWl0OworICAgIG9tbmlfcmVzdWx0cy0+Y3B1X3BlcmNlbnRfaXJxICAgICA9IGxpYl9sb2NhbF9jcHVfc3RhdHMuY3B1X2lycTsKKyAgICBvbW5pX3Jlc3VsdHMtPmNwdV9wZXJjZW50X3N3aW50ciAgPSBsaWJfbG9jYWxfY3B1X3N0YXRzLmNwdV9zd2ludHI7CisgICAgb21uaV9yZXN1bHRzLT5wZWFrX2NwdV91dGlsICAgICAgID0gbGliX2xvY2FsX2NwdV9zdGF0cy5wZWFrX2NwdV91dGlsOworICAgIG9tbmlfcmVzdWx0cy0+cGVha19jcHVfaWQgICAgICAgICA9IGxpYl9sb2NhbF9jcHVfc3RhdHMucGVha19jcHVfaWQ7CisgIH0KKworI2lmIGRlZmluZWQoV0FOVF9JTlRFUlZBTFMpCisjaWZkZWYgV0lOMzIKKyAgc3RvcF9pdGltZXIoKTsKKyNlbmRpZgorI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCisKKyAgaWYgKGRlYnVnKSB7CisgICAgZnByaW50Zih3aGVyZSwKKwkgICAgIiVzOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iLAorCSAgICBfX0ZVTkNUSU9OX18pOworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KKworICBzZW5kX3Jlc3BvbnNlX24oT01OSV9SRVNVTFRTX0NPTlZfQ1VUT0ZGKTsKKworfQorCisMCisjaWZkZWYgV0FOVF9NSUdSQVRJT04KK3ZvaWQKK3NlbmRfdGNwX3N0cmVhbShjaGFyIHJlbW90ZV9ob3N0W10pCit7CisKKyAgY2hhciAqdHB1dF90aXRsZSA9ICJcCitSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKK1NvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFxuXAorU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgXG5cCitieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlcy9zZWMgIFxuXG4iOworCisgIGNoYXIgKnRwdXRfZm10XzAgPQorICAgICIlNy4yZiAlc1xuIjsKKworICBjaGFyICp0cHV0X2ZtdF8xID0KKyAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgJTcuMmYgICAlc1xuIjsKKworICBjaGFyICpjcHVfdGl0bGUgPSAiXAorUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgICAgU2VydmljZSBEZW1hbmRcblwKK1NvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFNlbmQgICAgIFJlY3YgICAgIFNlbmQgICAgUmVjdlxuXAorU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgbG9jYWwgICAgcmVtb3RlICAgbG9jYWwgICByZW1vdGVcblwKK2J5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgICUtOC44cy9zICAlJSAlYyAgICAgICUlICVjICAgICAgdXMvS0IgICB1cy9LQlxuXG4iOworCisgIGNoYXIgKmNwdV9mbXRfMCA9CisgICAgIiU2LjNmICVjICVzXG4iOworCisgIGNoYXIgKmNwdV9mbXRfMSA9CisgICAgIiU2ZCAlNmQgJTZkICAgICUtNi4yZiAgICAgJTcuMmYgICAlLTYuMmYgICAlLTYuMmYgICAlLTYuM2YgICUtNi4zZiAlc1xuIjsKKworICBjaGFyICprc2lua19mbXQgPSAiXG5cCitBbGlnbm1lbnQgICAgICBPZmZzZXQgICAgICAgICAlLTguOHMgJS04LjhzICAgIFNlbmRzICAgJS04LjhzIFJlY3ZzXG5cCitMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlICBYZmVyZWQgICBQZXIgICAgICAgICAgICAgICAgIFBlclxuXAorU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3YgICAgICAgICAgICAgU2VuZCAoYXZnKSAgICAgICAgICBSZWN2IChhdmcpXG5cCislNWQgICAlNWQgICU1ZCAgICU1ZCAlNiJQUklkNjQiICAlNi4yZiAgICAlNiJQUklkNjQiICAgJTYuMmYgJTYiUFJJZDY0IlxuIjsKKworICBjaGFyICprc2lua19mbXQyID0gIlxuXAorTWF4aW11bVxuXAorU2VnbWVudFxuXAorU2l6ZSAoYnl0ZXMpXG5cCislNmRcbiI7CisKKyAgc2VuZF9vbW5pX2lubmVyKHJlbW90ZV9ob3N0LCBsZWdhY3ksICJNSUdSQVRFRCBUQ1AgU1RSRUFNIFRFU1QiKTsKKworCisgIGlmIChsZWdhY3kpIHsKKworICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbiwgYnV0IG9ubHkgaWYgd2UKKyAgICAgICBhcmUgdHJ1bHkgYWN0aW5nIGFzIGEgbGVnYWN5IHRlc3QuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQKKyAgICAgICB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSBsb2NhbCBzZXJ2aWNlCisgICAgICAgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkCisgICAgICAgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAic3RyZWFtcGVyZiIKKyAgICAgICBudW1iZXJzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgdmVyYm9zaXR5IG9mIGdyZWF0ZXIgdGhhbgorICAgICAgIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiBiYWNrZ3JvdW5kCisgICAgICAgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgbm90CisgICAgICAgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLworCisgICAgaWYgKGNvbmZpZGVuY2UgPCAwKSB7CisgICAgICAvKiB3ZSBkaWQgbm90IGhpdCBjb25maWRlbmNlLCBidXQgd2VyZSB3ZSBhc2tlZCB0byBsb29rIGZvciBpdD8gKi8KKyAgICAgIGlmIChpdGVyYXRpb25fbWF4ID4gMSkgeworCWRpc3BsYXlfY29uZmlkZW5jZSgpOworICAgICAgfQorICAgIH0KKworICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgeworCisgICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgeworICAgICAgY2FzZSAwOgorCWlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X2ZtdF8wLAorCQkgIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAorCQkgIGxvY2FsX2NwdV9tZXRob2QsCisJCSAgKChwcmludF9oZWFkZXJzKSB8fAorCQkgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwl9CisJZWxzZSB7CisJICBmcHJpbnRmKHdoZXJlLAorCQkgIGNwdV9mbXRfMCwKKwkJICByZW1vdGVfc2VydmljZV9kZW1hbmQsCisJCSAgcmVtb3RlX2NwdV9tZXRob2QsCisJCSAgKChwcmludF9oZWFkZXJzKSB8fAorCQkgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwl9CisJYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICBjYXNlIDI6CisJaWYgKHByaW50X2hlYWRlcnMpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X3RpdGxlLAorCQkgIGZvcm1hdF91bml0cygpLAorCQkgIGxvY2FsX2NwdV9tZXRob2QsCisJCSAgcmVtb3RlX2NwdV9tZXRob2QpOworCX0KKworCWZwcmludGYod2hlcmUsCisJCWNwdV9mbXRfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJCXJzcl9zaXplLAkJLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLworCQlsc3Nfc2l6ZSwJCS8qIGxvY2FsIHNlbmRidWYgc2l6ZSAqLworCQlzZW5kX3NpemUsCSAgICAgICAgLyogaG93IGxhcmdlIHdlcmUgdGhlIHNlbmRzICovCisJCWVsYXBzZWRfdGltZSwJCS8qIGhvdyBsb25nIHdhcyB0aGUgdGVzdCAqLworCQl0aHJ1cHV0LCAJCS8qIHdoYXQgd2FzIHRoZSB4ZmVyIHJhdGUgKi8KKwkJbG9jYWxfY3B1X3V0aWxpemF0aW9uLAkvKiBsb2NhbCBjcHUgKi8KKwkJcmVtb3RlX2NwdV91dGlsaXphdGlvbiwJLyogcmVtb3RlIGNwdSAqLworCQlsb2NhbF9zZXJ2aWNlX2RlbWFuZCwJLyogbG9jYWwgc2VydmljZSBkZW1hbmQgKi8KKwkJcmVtb3RlX3NlcnZpY2VfZGVtYW5kLAkvKiByZW1vdGUgc2VydmljZSBkZW1hbmQgKi8KKwkJKChwcmludF9oZWFkZXJzKSB8fAorCQkgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisJYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogVGhlIHRlc3RlciBkaWQgbm90IHdpc2ggdG8gbWVhc3VyZSBzZXJ2aWNlIGRlbWFuZC4gKi8KKworICAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKKyAgICAgIGNhc2UgMDoKKwlmcHJpbnRmKHdoZXJlLAorCQl0cHV0X2ZtdF8wLAorCQl0aHJ1cHV0LAorCQkoKHByaW50X2hlYWRlcnMpIHx8CisJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwlicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgIGNhc2UgMjoKKwlpZiAocHJpbnRfaGVhZGVycykgeworCSAgZnByaW50Zih3aGVyZSx0cHV0X3RpdGxlLGZvcm1hdF91bml0cygpKTsKKwl9CisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJCXJzcl9zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KKwkJbHNzX3NpemUsIAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCisJCXNlbmRfc2l6ZSwJICAgICAgICAvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgc2VuZHMgKi8KKwkJZWxhcHNlZF90aW1lLCAJCS8qIGhvdyBsb25nIGRpZCBpdCB0YWtlICovCisJCXRocnVwdXQsICAgICAgICAgICAgICAgIC8qIGhvdyBmYXN0IGRpZCBpdCBnbyAqLworCQkoKHByaW50X2hlYWRlcnMpIHx8CisJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwlicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZSAqLworICAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCisgICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCisgICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KKyAgICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KKworICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CisgICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCisgICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCisgICAgICAvKiBUQ1Agc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyAqLworICAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCisKKyAgICAgIC8qIHRoaXMgc3R1ZmYgbmVlZHMgdG8gYmUgd29ya2VkLW91dCBpbiB0aGUgcHJlc2VuY2Ugb2YgY29uZmlkZW5jZSAqLworICAgICAgLyogaW50ZXJ2YWxzIGFuZCBtdWx0aXBsZSBpdGVyYXRpb25zIG9mIHRoZSB0ZXN0Li4uIHJhaiAxMS85NCAqLworCisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgIGtzaW5rX2ZtdCwKKwkgICAgICAiQnl0ZXMiLAorCSAgICAgICJCeXRlcyIsCisJICAgICAgIkJ5dGVzIiwKKwkgICAgICBsb2NhbF9zZW5kX2FsaWduLAorCSAgICAgIHJlbW90ZV9yZWN2X2FsaWduLAorCSAgICAgIGxvY2FsX3NlbmRfb2Zmc2V0LAorCSAgICAgIHJlbW90ZV9yZWN2X29mZnNldCwKKwkgICAgICBieXRlc19zZW50LAorCSAgICAgIGJ5dGVzX3NlbnQgLyAoZG91YmxlKWxvY2FsX3NlbmRfY2FsbHMsCisJICAgICAgbG9jYWxfc2VuZF9jYWxscywKKwkgICAgICBieXRlc19zZW50IC8gKGRvdWJsZSlyZW1vdGVfcmVjZWl2ZV9jYWxscywKKwkgICAgICByZW1vdGVfcmVjZWl2ZV9jYWxscyk7CisgICAgICBmcHJpbnRmKHdoZXJlLAorCSAgICAgIGtzaW5rX2ZtdDIsCisJICAgICAgdHJhbnNwb3J0X21zcyk7CisjaWZkZWYgV0FOVF9ISVNUT0dSQU0KKyAgICAgIGZwcmludGYod2hlcmUsIlxuXG5IaXN0b2dyYW0gb2YgdGltZSBzcGVudCBpbiBzZW5kKCkgY2FsbC5cbiIpOworICAgICAgSElTVF9yZXBvcnQodGltZV9oaXN0KTsKKyNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLworICAgICAgZmZsdXNoKHdoZXJlKTsKKyAgICB9CisKKyAgfQorfQorCit2b2lkCitzZW5kX3RjcF9tYWVydHMoY2hhciByZW1vdGVfaG9zdFtdKQoreworCisgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAorUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cCitTb2NrZXQgU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgICAgICAgICBcblwKK1NpemUgICBTaXplICAgIFNpemUgICAgIFRpbWUgICAgIFRocm91Z2hwdXQgIFxuXAorYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgICAgc2Vjcy4gICAgJXMvc2VjICBcblxuIjsKKworICBjaGFyICp0cHV0X2ZtdF8wID0KKyAgICAiJTcuMmYgJXNcbiI7CisKKyAgY2hhciAqdHB1dF9mbXRfMSA9CisgICAgIiU2ZCAlNmQgJTZkICAgICUtNi4yZiAgICU3LjJmICAgJXNcbiI7CisKKyAgY2hhciAqY3B1X3RpdGxlID0gIlwKK1JlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpemF0aW9uICAgICAgIFNlcnZpY2UgRGVtYW5kXG5cCitTb2NrZXQgU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgICAgICAgICBSZWN2ICAgICBTZW5kICAgICBSZWN2ICAgIFNlbmRcblwKK1NpemUgICBTaXplICAgIFNpemUgICAgIFRpbWUgICAgIFRocm91Z2hwdXQgIGxvY2FsICAgIHJlbW90ZSAgIGxvY2FsICAgcmVtb3RlXG5cCitieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlLTguOHMvcyAgJSUgJWMgICAgICAlJSAlYyAgICAgIHVzL0tCICAgdXMvS0JcblxuIjsKKworICBjaGFyICpjcHVfZm10XzAgPQorICAgICIlNi4zZiAlYyAlc1xuIjsKKworICBjaGFyICpjcHVfZm10XzEgPQorICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAgICU3LjJmICAgJS02LjJmICAgJS02LjJmICAgJS02LjNmICAlLTYuM2YgJXNcbiI7CisKKyAgY2hhciAqa3NpbmtfZm10ID0gIlxuXAorQWxpZ25tZW50ICAgICAgT2Zmc2V0ICAgICAgICAgJS04LjhzICUtOC44cyAgICBSZWN2cyAgICUtOC44cyBTZW5kc1xuXAorTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZSAgWGZlcmVkICAgUGVyICAgICAgICAgICAgICAgICBQZXJcblwKK1JlY3YgICBTZW5kICAgIFJlY3YgICBTZW5kICAgICAgICAgICAgIFJlY3YgKGF2ZykgICAgICAgICAgU2VuZCAoYXZnKVxuXAorJTVkICAgJTVkICAlNWQgICAlNWQgJTYiUFJJZDY0IiAgJTYuMmYgICAgJTZkICAgJTYuMmYgJTZkXG4iOworCisgIGNoYXIgKmtzaW5rX2ZtdDIgPSAiXG5cCitNYXhpbXVtXG5cCitTZWdtZW50XG5cCitTaXplIChieXRlcylcblwKKyU2ZFxuIjsKKworICBzZW5kX29tbmlfaW5uZXIocmVtb3RlX2hvc3QsIGxlZ2FjeSwgIk1JR1JBVEVEIFRDUCBNQUVSVFMgVEVTVCIpOworCisKKyAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLCBidXQgb25seSBpZiB3ZSBhcmUKKyAgICAgdHJ1bHkgYWN0aW5nIGFzIGEgbGVhY3kgdGVzdC4gIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQKKyAgICAgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgbG9jYWwgc2VydmljZQorICAgICBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQKKyAgICAgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAic3RyZWFtcGVyZiIgbnVtYmVycy4gSWYKKyAgICAgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHZlcmJvc2l0eSBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbAorICAgICBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbQorICAgICBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgbm90IGNwdV9tZWFzdXJlbWVudAorICAgICBzcGVjaWZpYy4uLiAgKi8KKworICBpZiAobGVnYWN5KSB7CisKKyAgICBpZiAoY29uZmlkZW5jZSA8IDApIHsKKyAgICAgIC8qIHdlIGRpZCBub3QgaGl0IGNvbmZpZGVuY2UsIGJ1dCB3ZXJlIHdlIGFza2VkIHRvIGxvb2sgZm9yIGl0PyAqLworICAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPiAxKSB7CisJZGlzcGxheV9jb25maWRlbmNlKCk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CisKKyAgICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CisgICAgICBjYXNlIDA6CisJaWYgKGxvY2FsX2NwdV91c2FnZSkgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICBjcHVfZm10XzAsCisJCSAgbG9jYWxfc2VydmljZV9kZW1hbmQsCisJCSAgbG9jYWxfY3B1X21ldGhvZCwKKwkJICAoKHByaW50X2hlYWRlcnMpIHx8CisJCSAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCX0KKwllbHNlIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X2ZtdF8wLAorCQkgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwKKwkJICByZW1vdGVfY3B1X21ldGhvZCwKKwkJICAoKHByaW50X2hlYWRlcnMpIHx8CisJCSAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCX0KKwlicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgIGNhc2UgMjoKKwlpZiAocHJpbnRfaGVhZGVycykgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICBjcHVfdGl0bGUsCisJCSAgZm9ybWF0X3VuaXRzKCksCisJCSAgbG9jYWxfY3B1X21ldGhvZCwKKwkJICByZW1vdGVfY3B1X21ldGhvZCk7CisJfQorCisJZnByaW50Zih3aGVyZSwKKwkJY3B1X2ZtdF8xLAkJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KKwkJcnNyX3NpemUsCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCisJCWxzc19zaXplLAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCisJCXJlbW90ZV9zZW5kX3NpemUsCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZWN2cyAqLworCQllbGFwc2VkX3RpbWUsCQkvKiBob3cgbG9uZyB3YXMgdGhlIHRlc3QgKi8KKwkJdGhydXB1dCwgCQkvKiB3aGF0IHdhcyB0aGUgeGZlciByYXRlICovCisJCWxvY2FsX2NwdV91dGlsaXphdGlvbiwJLyogbG9jYWwgY3B1ICovCisJCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCS8qIHJlbW90ZSBjcHUgKi8KKwkJbG9jYWxfc2VydmljZV9kZW1hbmQsCS8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kICovCisJCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwJLyogcmVtb3RlIHNlcnZpY2UgZGVtYW5kICovCisJCSgocHJpbnRfaGVhZGVycykgfHwKKwkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCWJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIFRoZSB0ZXN0ZXIgZGlkIG5vdCB3aXNoIHRvIG1lYXN1cmUgc2VydmljZSBkZW1hbmQuICovCisKKyAgICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CisgICAgICBjYXNlIDA6CisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMCwKKwkJdGhydXB1dCwKKwkJKChwcmludF9oZWFkZXJzKSB8fAorCQkgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisJYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICBjYXNlIDI6CisJaWYgKHByaW50X2hlYWRlcnMpIHsKKwkgIGZwcmludGYod2hlcmUsdHB1dF90aXRsZSxmb3JtYXRfdW5pdHMoKSk7CisJfQorCWZwcmludGYod2hlcmUsCisJCXRwdXRfZm10XzEsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLworCQlsc3Jfc2l6ZSwgCQkvKiBsb2NhbCByZWN2YnVmIHNpemUgKi8KKwkJcnNzX3NpemUsIAkJLyogcmVtb3Qgc2VuZGJ1ZiBzaXplICovCisJCXJlbW90ZV9zZW5kX3NpemUsCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZWN2cyAqLworCQllbGFwc2VkX3RpbWUsIAkJLyogaG93IGxvbmcgZGlkIGl0IHRha2UgKi8KKwkJdGhydXB1dCwgICAgICAgICAgICAgICAgLyogaG93IGZhc3QgZGlkIGl0IGdvICovCisJCSgocHJpbnRfaGVhZGVycykgfHwKKwkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCWJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCisgICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KKyAgICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KKyAgICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLworICAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLworCisgICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKKyAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBrbm93IGl0IGFsbCwgc28gd2Ugd2lsbCBnaXZlIGl0IHRvIGhpbS4gKi8KKyAgICAgIC8qIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgKi8KKyAgICAgIC8qIFRDUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCisgICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KKworICAgICAgLyogdGhpcyBzdHVmZiBuZWVkcyB0byBiZSB3b3JrZWQtb3V0IGluIHRoZSBwcmVzZW5jZSBvZiBjb25maWRlbmNlICovCisgICAgICAvKiBpbnRlcnZhbHMgYW5kIG11bHRpcGxlIGl0ZXJhdGlvbnMgb2YgdGhlIHRlc3QuLi4gcmFqIDExLzk0ICovCisKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAga3NpbmtfZm10LAorCSAgICAgICJCeXRlcyIsCisJICAgICAgIkJ5dGVzIiwKKwkgICAgICAiQnl0ZXMiLAorCSAgICAgIGxvY2FsX3JlY3ZfYWxpZ24sCisJICAgICAgcmVtb3RlX3JlY3ZfYWxpZ24sCisJICAgICAgbG9jYWxfcmVjdl9vZmZzZXQsCisJICAgICAgcmVtb3RlX3JlY3Zfb2Zmc2V0LAorCSAgICAgIGJ5dGVzX3JlY2VpdmVkLAorCSAgICAgIGJ5dGVzX3JlY2VpdmVkIC8gKGRvdWJsZSlsb2NhbF9yZWNlaXZlX2NhbGxzLAorCSAgICAgIGxvY2FsX3JlY2VpdmVfY2FsbHMsCisJICAgICAgcmVtb3RlX2J5dGVzX3NlbnQgLyAoZG91YmxlKXJlbW90ZV9zZW5kX2NhbGxzLAorCSAgICAgIHJlbW90ZV9zZW5kX2NhbGxzKTsKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAga3NpbmtfZm10MiwKKwkgICAgICB0cmFuc3BvcnRfbXNzKTsKKworI2lmZGVmIFdBTlRfSElTVE9HUkFNCisgICAgICBmcHJpbnRmKHdoZXJlLCJcblxuSGlzdG9ncmFtIG9mIHRpbWUgc3BlbnQgaW4gcmVjdigpIGNhbGwuXG4iKTsKKyAgICAgIEhJU1RfcmVwb3J0KHRpbWVfaGlzdCk7CisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorICB9Cit9CisKKwwKK3ZvaWQKK3NlbmRfdGNwX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSkgeworCisgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAorTG9jYWwgL1JlbW90ZVxuXAorU29ja2V0IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLlxuXAorU2VuZCAgIFJlY3YgICBTaXplICAgICBTaXplICAgIFRpbWUgICAgIFJhdGUgICAgICAgICBcblwKK2J5dGVzICBCeXRlcyAgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgXG5cbiI7CisKKyAgY2hhciAqdHB1dF90aXRsZV9iYW5kID0gIlwKK0xvY2FsIC9SZW1vdGVcblwKK1NvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBcblwKK1NlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBUaHJvdWdocHV0IFxuXAorYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgICVzL3NlYyAgIFxuXG4iOworCisgIGNoYXIgKnRwdXRfZm10XzAgPQorICAgICIlNy4yZiAlc1xuIjsKKworICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCislLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgJXNcbiI7CisgIGNoYXIgKnRwdXRfZm10XzFfbGluZV8yID0gIlwKKyUtNmQgJS02ZFxuIjsKKworICBjaGFyICpjcHVfdGl0bGUgPSAiXAorTG9jYWwgL1JlbW90ZVxuXAorU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAorU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgIFJhdGUgICAgIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKK2J5dGVzICBieXRlcyAgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAlYyAgICAlJSAlYyAgICB1cy9UciAgIHVzL1RyXG5cbiI7CisKKyAgY2hhciAqY3B1X3RpdGxlX3RwdXQgPSAiXAorTG9jYWwgL1JlbW90ZVxuXAorU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRwdXQgICAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAorU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgICUtOC44cyBsb2NhbCAgcmVtb3RlIGxvY2FsICAgcmVtb3RlXG5cCitieXRlcyAgYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgIHNlY3MuICAgcGVyIHNlYyAgJSUgJWMgICAgJSUgJWMgICAgdXMvS0IgICB1cy9LQlxuXG4iOworCisgIGNoYXIgKmNwdV90aXRsZV9sYXRlbmN5ID0gIlwKK0xvY2FsIC9SZW1vdGVcblwKK1NvY2tldCBTaXplICAgUmVxdWVzdCBSZXNwLiAgRWxhcHNlZCBMYXRlbmN5ICBDUFUgICAgQ1BVICAgIFMuZGVtICAgUy5kZW1cblwKK1NlbmQgICBSZWN2ICAgU2l6ZSAgICBTaXplICAgVGltZSAgICB1c2VjcyAgICBsb2NhbCAgcmVtb3RlIGxvY2FsICAgcmVtb3RlXG5cCitieXRlcyAgYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgIHNlY3MuICAgcGVyIHRyYW4gJSUgJWMgICAgJSUgJWMgICAgdXMvVHIgICB1cy9UclxuXG4iOworCisgIGNoYXIgKmNwdV9mbXRfMCA9CisgICAgIiU2LjNmICVjICVzXG4iOworCisgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzEgPSAiXAorJS02ZCAlLTZkICUtNmQgICUtNmQgJS02LjJmICAlLTYuMmYgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2YgJXNcbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCislLTZkICUtNmRcbiI7CisKKyAgY2hhciAqa3NpbmtfZm10ID0gIlwKK0FsaWdubWVudCAgICAgIE9mZnNldCAgICAgICAgIFJvdW5kVHJpcCAgVHJhbnMgICAgVGhyb3VnaHB1dFxuXAorTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZSAgTGF0ZW5jeSAgICBSYXRlICAgICAlLTguOHMvc1xuXAorU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3YgICAgdXNlYy9UcmFuICBwZXIgc2VjICBPdXRib3VuZCAgIEluYm91bmRcblwKKyU1ZCAgJTVkICAgJTVkICAlNWQgICAlLTYuM2YgICAlLTYuM2YgJS02LjNmICAgICUtNi4zZlxuIjsKKworICBzZW5kX29tbmlfaW5uZXIocmVtb3RlX2hvc3QsIGxlZ2FjeSwgIk1JR1JBVEVEIFRDUCBSRVFVRVNUL1JFU1BPTlNFIFRFU1QiKTsKKworICBpZiAobGVnYWN5KSB7CisgICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgICBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgbG9jYWwKKyAgICAgICBzZXJ2aWNlIGRlbWFuZCwgb3IgdGhlIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZC4gSWYgdGhlIHVzZXIgaGFzCisgICAgICAgcmVxdWVzdGVkIHZlcmJvc2l0eSBsZXZlbCAxLCBoZSB3aWxsIGdldCB0aGUgYmFzaWMgInN0cmVhbXBlcmYiCisgICAgICAgbnVtYmVycy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHZlcmJvc2l0eSBvZiBncmVhdGVyIHRoYW4gMSwKKyAgICAgICB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgYmFja2dyb3VuZCBpbmZvcm1hdGlvbgorICAgICAgIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0IG5vdCBjcHVfbWVhc3VyZW1lbnQKKyAgICAgICBzcGVjaWZpYy4uLiAgKi8KKworICAgIGlmIChjb25maWRlbmNlIDwgMCkgeworICAgICAgLyogd2UgZGlkIG5vdCBoaXQgY29uZmlkZW5jZSwgYnV0IHdlcmUgd2UgYXNrZWQgdG8gbG9vayBmb3IgaXQ/ICovCisgICAgICBpZiAoaXRlcmF0aW9uX21heCA+IDEpIHsKKwlkaXNwbGF5X2NvbmZpZGVuY2UoKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKKworICAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKKyAgICAgIGNhc2UgMDoKKwlpZiAobG9jYWxfY3B1X3VzYWdlKSB7CisJICBmcHJpbnRmKHdoZXJlLAorCQkgIGNwdV9mbXRfMCwKKwkJICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKKwkJICBsb2NhbF9jcHVfbWV0aG9kLAorCQkgICgocHJpbnRfaGVhZGVycykgfHwKKwkJICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisJfQorCWVsc2UgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICBjcHVfZm10XzAsCisJCSAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kLAorCQkgIHJlbW90ZV9jcHVfbWV0aG9kLAorCQkgICgocHJpbnRfaGVhZGVycykgfHwKKwkJICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisJfQorCWJyZWFrOworICAgICAgY2FzZSAxOgorICAgICAgY2FzZSAyOgorCWlmIChwcmludF9oZWFkZXJzKSB7CisJICBpZiAoJ3gnID09IGxpYmZtdCkgeworCSAgICBmcHJpbnRmKHdoZXJlLAorCQkgICAgY3B1X3RpdGxlLAorCQkgICAgbG9jYWxfY3B1X21ldGhvZCwKKwkJICAgIHJlbW90ZV9jcHVfbWV0aG9kKTsKKwkgIH0KKwkgIGVsc2UgeworCSAgICBmcHJpbnRmKHdoZXJlLAorCQkgICAgY3B1X3RpdGxlX3RwdXQsCisJCSAgICBmb3JtYXRfdW5pdHMoKSwKKwkJICAgIGxvY2FsX2NwdV9tZXRob2QsCisJCSAgICByZW1vdGVfY3B1X21ldGhvZCk7CisJICB9CisJfQorCisJZnByaW50Zih3aGVyZSwKKwkJY3B1X2ZtdF8xX2xpbmVfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJCWxzc19zaXplLAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCisJCWxzcl9zaXplLAorCQlyZXFfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZXF1ZXN0cyAqLworCQlyc3Bfc2l6ZSwJCS8qIGd1ZXNzICovCisJCWVsYXBzZWRfdGltZSwJCS8qIGhvdyBsb25nIHdhcyB0aGUgdGVzdCAqLworCQl0aHJ1cHV0LAorCQlsb2NhbF9jcHVfdXRpbGl6YXRpb24sCS8qIGxvY2FsIGNwdSAqLworCQlyZW1vdGVfY3B1X3V0aWxpemF0aW9uLAkvKiByZW1vdGUgY3B1ICovCisJCWxvY2FsX3NlcnZpY2VfZGVtYW5kLAkvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCAqLworCQlyZW1vdGVfc2VydmljZV9kZW1hbmQsCS8qIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZCAqLworCQkoKHByaW50X2hlYWRlcnMpIHx8CisJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwlmcHJpbnRmKHdoZXJlLAorCQljcHVfZm10XzFfbGluZV8yLAorCQlyc3Nfc2l6ZSwKKwkJcnNyX3NpemUpOworCWJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIFRoZSB0ZXN0ZXIgZGlkIG5vdCB3aXNoIHRvIG1lYXN1cmUgc2VydmljZSBkZW1hbmQuICovCisKKyAgICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CisgICAgICBjYXNlIDA6CisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMCwKKwkJdGhydXB1dCwKKwkJKChwcmludF9oZWFkZXJzKSB8fAorCQkgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisJYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICBjYXNlIDI6CisJaWYgKHByaW50X2hlYWRlcnMpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgKCd4JyA9PSBsaWJmbXQpID8gdHB1dF90aXRsZSA6IHRwdXRfdGl0bGVfYmFuZCwKKwkJICBmb3JtYXRfdW5pdHMoKSk7CisJfQorCisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMV9saW5lXzEsCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJCWxzc19zaXplLAorCQlsc3Jfc2l6ZSwKKwkJcmVxX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgcmVxdWVzdHMgKi8KKwkJcnNwX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgcmVzcG9uc2VzICovCisJCWVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLworCQkvKiBhcmUgd2UgdHJhbnMgb3IgZG8gd2UgbmVlZCB0byBjb252ZXJ0IHRvIGJ5dGVzIHRoZW4KKwkJICAgYml0cz8gYXQgdGhpcyBwb2ludCwgdGhydXB1dCBpcyBpbiBvdXIgImNvbmZpZGVudCIKKwkJICAgdHJhbnNhY3Rpb25zIHBlciBzZWNvbmQuIHdlIGNhbiBjb252ZXJ0IHRvIGEKKwkJICAgYmlkaXJlY3Rpb25hbCBiaXRyYXRlIGJ5IG11bHRpcGx5aW5nIHRoYXQgYnkgdGhlIHN1bQorCQkgICBvZiB0aGUgcmVxX3NpemUgYW5kIHJzcF9zaXplLiAgd2UgcGFzcyB0aGF0IHRvCisJCSAgIGNhbGNfdGhydXB1dF9pbnRlcnZhbF9vbW5pIHdpdGggYW4gZWxhcHNlZCB0aW1lIG9mCisJCSAgIDEuMCBzIHRvIGdldCBpdCBjb252ZXJ0ZWQgdG8gW2ttZ11iaXRzL3Mgb3IKKwkJICAgW0tNR11CeXRlcy9zICovCisJCXRocnVwdXQsCisJCSgocHJpbnRfaGVhZGVycykgfHwKKwkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCWZwcmludGYod2hlcmUsCisJCXRwdXRfZm10XzFfbGluZV8yLAorCQlyc3Nfc2l6ZSwgCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCisJCXJzcl9zaXplKTsKKworCWJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCisgICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KKyAgICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KKyAgICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLworICAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLworCisgICAgLyogaG93IHRvIGhhbmRsZSB0aGUgdmVyYm9zZSBpbmZvcm1hdGlvbiBpbiB0aGUgcHJlc2VuY2Ugb2YgKi8KKyAgICAvKiBjb25maWRlbmNlIGludGVydmFscyBpcyB5ZXQgdG8gYmUgZGV0ZXJtaW5lZC4uLiByYWogMTEvOTQgKi8KKyAgICBpZiAodmVyYm9zaXR5ID4gMSkgeworICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLiAqLworICAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLworICAgICAgLyogVENQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KKyAgICAgIC8qIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLworCisgICAgICAvKiBub3JtYWxseSwgeW91IG1pZ2h0IHRoaW5rIHRoYXQgaWYgd2Ugd2VyZSBtZXNzaW5nIGFib3V0IHdpdGgKKwkgdGhlIHZhbHVlIG9mIGxpYmZtdCB3ZSB3b3VsZCBuZWVkIHRvIHB1dCBpdCBiYWNrIGFnYWluLCBidXQKKwkgc2luY2UgdGhpcyBpcyBiYXNpY2FsbHkgdGhlIGxhc3QgdGhpbmcgd2UgYXJlIGdvaW5nIHRvIGRvIHdpdGgKKwkgaXQsIGl0IGRvZXMgbm90IG1hdHRlci4gIHNvIHRoZXJlIDopIHJhaiAyMDA3LTA2LTA4ICovCisgICAgICAvKiBpZiB0aGUgdXNlciB3YXMgYXNraW5nIGZvciB0cmFuc2FjdGlvbnMsIHRoZW4gd2UgcmVwb3J0CisJIG1lZ2FiaXRzIHBlciBzZWNvbmQgZm9yIHRoZSB1bmlkaXJlY3Rpb25hbCB0aHJvdWdocHV0LAorCSBvdGhlcndpc2Ugd2UgdXNlIHRoZSBkZXNpcmVkIHVuaXRzLiAqLworICAgICAgaWYgKCd4JyA9PSBsaWJmbXQpIHsKKwlsaWJmbXQgPSAnbSc7CisgICAgICB9CisKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAga3NpbmtfZm10LAorCSAgICAgIGZvcm1hdF91bml0cygpLAorCSAgICAgIGxvY2FsX3NlbmRfYWxpZ24sCisJICAgICAgcmVtb3RlX3JlY3Zfb2Zmc2V0LAorCSAgICAgIGxvY2FsX3NlbmRfb2Zmc2V0LAorCSAgICAgIHJlbW90ZV9yZWN2X29mZnNldCwKKwkgICAgICAvKiBpZiB0aGUgdXNlciBoYXMgZW5hYmxlIGJ1cnN0IG1vZGUsIHdlIGhhdmUgdG8gcmVtZW1iZXIKKwkJIHRvIGFjY291bnQgZm9yIHRoYXQgaW4gdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbnMKKwkJIG91dHN0YW5kaW5nIGF0IGFueSBvbmUgdGltZS4gb3RoZXJ3aXNlIHdlIHdpbGwKKwkJIHVuZGVycmVwb3J0IHRoZSBsYXRlbmN5IG9mIGluZGl2aWR1YWwKKwkJIHRyYW5zYWN0aW9ucy4gbGVhcm5lZCBmcm9tIHNhZiBieSByYWogMjAwNy0wNi0wOCAgKi8KKwkgICAgICAoKChkb3VibGUpMS4wL3RyYW5zYWN0aW9uX3JhdGUpKihkb3VibGUpMTAwMDAwMC4wKSAqCisJICAgICAgKGRvdWJsZSkgKDEgKyAoKGZpcnN0X2J1cnN0X3NpemUgPiAwKSA/IGZpcnN0X2J1cnN0X3NpemUgOiAwKSksCisJICAgICAgdHJhbnNhY3Rpb25fcmF0ZSwKKwkgICAgICBjYWxjX3RocnVwdXRfaW50ZXJ2YWxfb21uaSh0cmFuc2FjdGlvbl9yYXRlICogKGRvdWJsZSlyZXFfc2l6ZSwKKwkJCQkJIDEuMCksCisJICAgICAgY2FsY190aHJ1cHV0X2ludGVydmFsX29tbmkodHJhbnNhY3Rpb25fcmF0ZSAqIChkb3VibGUpcnNwX3NpemUsCisJCQkJCSAxLjApKTsKKworI2lmZGVmIFdBTlRfSElTVE9HUkFNCisgICAgICBmcHJpbnRmKHdoZXJlLCJcbkhpc3RvZ3JhbSBvZiByZXF1ZXN0L3Jlc3BvbnNlIHRpbWVzXG4iKTsKKyAgICAgIEhJU1RfcmVwb3J0KHRpbWVfaGlzdCk7CisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorICB9Cit9CisKKwordm9pZAorc2VuZF90Y3BfY29ubl9ycihjaGFyIHJlbW90ZV9ob3N0W10pCit7CisKKyAgY2hhciAqdHB1dF90aXRsZSA9ICJcCitMb2NhbCAvUmVtb3RlXG5cCitTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCitTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAorYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKKworICBjaGFyICp0cHV0X2ZtdF8wID0KKyAgICAiJTcuMmZcbiI7CisKKyAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzEgPSAiXAorJS02ZCAlLTZkICUtNmQgICAlLTZkICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKKyAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAorJS02ZCAlLTZkXG4iOworCisgIGNoYXIgKmNwdV90aXRsZSA9ICJcCitMb2NhbCAvUmVtb3RlXG5cCitTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCitTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAorYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICAgICAgJSUgICAgICB1cy9UciAgIHVzL1RyXG5cbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8wID0KKyAgICAiJTYuM2ZcbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMSA9ICJcCislLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCislLTZkICUtNmRcbiI7CisKKyAgY2hhciAqa3NpbmtfZm10ID0gIlxuXAorQWxpZ25tZW50ICAgICAgT2Zmc2V0XG5cCitMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCitTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdlxuXAorJTVkICAlNWQgICAlNWQgICU1ZFxuIjsKKworICBzZW5kX29tbmlfaW5uZXIocmVtb3RlX2hvc3QsCisJCSAgbGVnYWN5LAorCQkgICJNSUdSQVRFRCBUQ1AgQ29ubmVjdC9SZXF1ZXN0L1Jlc3BvbnNlIFRFU1QiKTsKKworICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyICovCisgIC8qIGhhcyBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgKi8KKyAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLworICAvKiB1c2VyIGhhcyByZXF1ZXN0ZWQgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAqLworICAvKiAic3RyZWFtcGVyZiIgbnVtYmVycy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHZlcmJvc2l0eSAqLworICAvKiBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mICovCisgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KKyAgLyogbm90IGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KKworICBpZiAobGVnYWN5KSB7CisgICAgaWYgKGNvbmZpZGVuY2UgPCAwKSB7CisgICAgICAvKiB3ZSBkaWQgbm90IGhpdCBjb25maWRlbmNlLCBidXQgd2VyZSB3ZSBhc2tlZCB0byBsb29rIGZvciBpdD8gKi8KKyAgICAgIGlmIChpdGVyYXRpb25fbWF4ID4gMSkgeworCWRpc3BsYXlfY29uZmlkZW5jZSgpOworICAgICAgfQorICAgIH0KKworICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgeworCisgICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgeworICAgICAgY2FzZSAwOgorCWlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X2ZtdF8wLAorCQkgIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAorCQkgIGxvY2FsX2NwdV9tZXRob2QpOworCX0KKwllbHNlIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X2ZtdF8wLAorCQkgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwKKwkJICByZW1vdGVfY3B1X21ldGhvZCk7CisJfQorCWJyZWFrOworICAgICAgY2FzZSAxOgorICAgICAgY2FzZSAyOgorCWlmIChwcmludF9oZWFkZXJzKSB7CisJICBmcHJpbnRmKHdoZXJlLAorCQkgIGNwdV90aXRsZSwKKwkJICBsb2NhbF9jcHVfbWV0aG9kLAorCQkgIHJlbW90ZV9jcHVfbWV0aG9kKTsKKwl9CisKKwlmcHJpbnRmKHdoZXJlLAorCQljcHVfZm10XzFfbGluZV8xLAkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLworCQlsc3Nfc2l6ZSwJCS8qIGxvY2FsIHNlbmRidWYgc2l6ZSAqLworCQlsc3Jfc2l6ZSwKKwkJcmVxX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgcmVxdWVzdHMgKi8KKwkJcnNwX3NpemUsCQkvKiBndWVzcyAqLworCQllbGFwc2VkX3RpbWUsCQkvKiBob3cgbG9uZyB3YXMgdGhlIHRlc3QgKi8KKwkJdGhydXB1dCwKKwkJbG9jYWxfY3B1X3V0aWxpemF0aW9uLAkvKiBsb2NhbCBjcHUgKi8KKwkJcmVtb3RlX2NwdV91dGlsaXphdGlvbiwJLyogcmVtb3RlIGNwdSAqLworCQlsb2NhbF9zZXJ2aWNlX2RlbWFuZCwJLyogbG9jYWwgc2VydmljZSBkZW1hbmQgKi8KKwkJcmVtb3RlX3NlcnZpY2VfZGVtYW5kKTsJLyogcmVtb3RlIHNlcnZpY2UgZGVtYW5kICovCisJZnByaW50Zih3aGVyZSwKKwkJY3B1X2ZtdF8xX2xpbmVfMiwKKwkJcnNzX3NpemUsCisJCXJzcl9zaXplKTsKKwlicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBUaGUgdGVzdGVyIGRpZCBub3Qgd2lzaCB0byBtZWFzdXJlIHNlcnZpY2UgZGVtYW5kLiAqLworCisgICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgeworICAgICAgY2FzZSAwOgorCWZwcmludGYod2hlcmUsCisJCXRwdXRfZm10XzAsCisJCXRocnVwdXQpOworCWJyZWFrOworICAgICAgY2FzZSAxOgorICAgICAgY2FzZSAyOgorCWlmIChwcmludF9oZWFkZXJzKSB7CisJICBmcHJpbnRmKHdoZXJlLHRwdXRfdGl0bGUsZm9ybWF0X3VuaXRzKCkpOworCX0KKworCWZwcmludGYod2hlcmUsCisJCXRwdXRfZm10XzFfbGluZV8xLAkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLworCQlsc3Nfc2l6ZSwKKwkJbHNyX3NpemUsCisJCXJlcV9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHJlcXVlc3RzICovCisJCXJzcF9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHJlc3BvbnNlcyAqLworCQllbGFwc2VkX3RpbWUsIAkJLyogaG93IGxvbmcgZGlkIGl0IHRha2UgKi8KKwkJdGhydXB1dCk7CisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMV9saW5lXzIsCisJCXJzc19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KKwkJcnNyX3NpemUpOworCisJYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KKyAgICAvKiBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgdGVzdCwgYnV0IGF0IHRoZSAqLworICAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLworICAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCisgICAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCisKKyAgICAvKiBob3cgdG8gaGFuZGxlIHRoZSB2ZXJib3NlIGluZm9ybWF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiAqLworICAgIC8qIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGlzIHlldCB0byBiZSBkZXRlcm1pbmVkLi4uIHJhaiAxMS85NCAqLworICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CisgICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCisgICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCisgICAgICAvKiBUQ1Agc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyAqLworICAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCisKKyAgICAgIGZwcmludGYod2hlcmUsCisJICAgICAga3NpbmtfZm10LAorCSAgICAgIGxvY2FsX3NlbmRfYWxpZ24sCisJICAgICAgcmVtb3RlX3JlY3ZfYWxpZ24sCisJICAgICAgbG9jYWxfc2VuZF9vZmZzZXQsCisJICAgICAgcmVtb3RlX3JlY3Zfb2Zmc2V0KTsKKworI2lmZGVmIFdBTlRfSElTVE9HUkFNCisgICAgICBmcHJpbnRmKHdoZXJlLCJcbkhpc3RvZ3JhbSBvZiByZXF1ZXN0L3Jlc3BvbnNlIHRpbWVzXG4iKTsKKyAgICAgIEhJU1RfcmVwb3J0KHRpbWVfaGlzdCk7CisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KKyAgICAgIGZmbHVzaCh3aGVyZSk7CisgICAgfQorICB9Cit9CisKK3ZvaWQKK3NlbmRfdWRwX3N0cmVhbShjaGFyIHJlbW90ZV9ob3N0W10pCit7CisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKgkJCQkJCQkJCSovCisgIC8qICAgICAgICAgICAgICAgCVVEUCBVbmlkaXJlY3Rpb25hbCBTZW5kIFRlc3QgICAgICAgICAgICAgICAgICAgICovCisgIC8qCQkJCQkJCQkJKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgY2hhciAqdHB1dF90aXRsZSA9ICJcCitTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICBNZXNzYWdlcyAgICAgICAgICAgICAgICBcblwKK1NpemUgICAgU2l6ZSAgICAgVGltZSAgICAgICAgIE9rYXkgRXJyb3JzICAgVGhyb3VnaHB1dFxuXAorYnl0ZXMgICBieXRlcyAgICBzZWNzICAgICAgICAgICAgIyAgICAgICMgICAlcy9zZWNcblxuIjsKKworICBjaGFyICp0cHV0X2ZtdF8wID0KKyAgICAiJTcuMmZcbiI7CisKKyAgY2hhciAqdHB1dF9mbXRfMSA9ICJcCislNmQgICU2ZCAgICUtNy4yZiAgICU3IlBSSXU2NCIgJTZkICAgICU3LjJmXG5cCislNmQgICAgICAgICAgICUtNy4yZiAgICU3IlBSSXU2NCIgICAgICAgICAgICU3LjJmXG5cbiI7CisKKworICBjaGFyICpjcHVfdGl0bGUgPSAiXAorU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgTWVzc2FnZXMgICAgICAgICAgICAgICAgICAgQ1BVICAgICAgU2VydmljZVxuXAorU2l6ZSAgICBTaXplICAgICBUaW1lICAgICAgICAgT2theSBFcnJvcnMgICBUaHJvdWdocHV0ICAgVXRpbCAgICAgRGVtYW5kXG5cCitieXRlcyAgIGJ5dGVzICAgIHNlY3MgICAgICAgICAgICAjICAgICAgIyAgICVzL3NlYyAlJSAlYyVjICAgICB1cy9LQlxuXG4iOworCisgIGNoYXIgKmNwdV9mbXRfMCA9CisgICAgIiU2LjJmICVjXG4iOworCisgIGNoYXIgKmNwdV9mbXRfMSA9ICJcCislNmQgICU2ZCAgICUtNy4yZiAgICU3IlBSSXU2NCIgJTZkICAgICU3LjFmICAgICAlLTYuMmYgICAlLTYuM2ZcblwKKyU2ZCAgICAgICAgICAgJS03LjJmICAgJTciUFJJdTY0IiAgICAgICAgICAgJTcuMWYgICAgICUtNi4yZiAgICUtNi4zZlxuXG4iOworCisKKyAgc2VuZF9vbW5pX2lubmVyKHJlbW90ZV9ob3N0LCBsZWdhY3ksICJNSUdSQVRFRCBVRFAgU1RSRUFNIFRFU1QiKTsKKworICBpZiAobGVnYWN5KSB7CisgICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgICBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgbG9jYWwKKyAgICAgICBzZXJ2aWNlIGRlbWFuZCwgb3IgdGhlIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZC4gSWYgdGhlIHVzZXIgaGFzCisgICAgICAgcmVxdWVzdGVkIHZlcmJvc2l0eSBsZXZlbCAxLCBoZSB3aWxsIGdldCB0aGUgYmFzaWMgInN0cmVhbXBlcmYiCisgICAgICAgbnVtYmVycy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHZlcmJvc2l0eSBvZiBncmVhdGVyIHRoYW4KKyAgICAgICAxLCB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgYmFja2dyb3VuZAorICAgICAgIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0IG5vdAorICAgICAgIGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KKworCisgICAgaWYgKGNvbmZpZGVuY2UgPCAwKSB7CisgICAgICAvKiB3ZSBkaWQgbm90IGhpdCBjb25maWRlbmNlLCBidXQgd2VyZSB3ZSBhc2tlZCB0byBsb29rIGZvciBpdD8gKi8KKyAgICAgIGlmIChpdGVyYXRpb25fbWF4ID4gMSkgeworCWRpc3BsYXlfY29uZmlkZW5jZSgpOworICAgICAgfQorICAgIH0KKworICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgeworCisgICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgeworICAgICAgY2FzZSAwOgorCWlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X2ZtdF8wLAorCQkgIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAorCQkgIGxvY2FsX2NwdV9tZXRob2QpOworCX0KKwllbHNlIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X2ZtdF8wLAorCQkgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwKKwkJICBsb2NhbF9jcHVfbWV0aG9kKTsKKwl9CisJYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICBjYXNlIDI6CisJaWYgKHByaW50X2hlYWRlcnMpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgY3B1X3RpdGxlLAorCQkgIGZvcm1hdF91bml0cygpLAorCQkgIGxvY2FsX2NwdV9tZXRob2QsCisJCSAgcmVtb3RlX2NwdV9tZXRob2QpOworCX0KKworCWZwcmludGYod2hlcmUsCisJCWNwdV9mbXRfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJCWxzc19zaXplLAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCisJCXNlbmRfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSBzZW5kcyAqLworCQllbGFwc2VkX3RpbWUsCQkvKiBob3cgbG9uZyB3YXMgdGhlIHRlc3QgKi8KKwkJbG9jYWxfc2VuZF9jYWxscywKKwkJZmFpbGVkX3NlbmRzLAorCQlsb2NhbF9zZW5kX3RocnVwdXQsIAkvKiB3aGF0IHdhcyB0aGUgeGZlciByYXRlICovCisJCWxvY2FsX2NwdV91dGlsaXphdGlvbiwJLyogbG9jYWwgY3B1ICovCisJCWxvY2FsX3NlcnZpY2VfZGVtYW5kLAkvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCAqLworCQlyc3Jfc2l6ZSwKKwkJZWxhcHNlZF90aW1lLAorCQlyZW1vdGVfcmVjZWl2ZV9jYWxscywKKwkJcmVtb3RlX3JlY3ZfdGhydXB1dCwKKwkJcmVtb3RlX2NwdV91dGlsaXphdGlvbiwJLyogcmVtb3RlIGNwdSAqLworCQlyZW1vdGVfc2VydmljZV9kZW1hbmQpOwkvKiByZW1vdGUgc2VydmljZSBkZW1hbmQgKi8KKwlicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBUaGUgdGVzdGVyIGRpZCBub3Qgd2lzaCB0byBtZWFzdXJlIHNlcnZpY2UgZGVtYW5kLiAqLworICAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKKyAgICAgIGNhc2UgMDoKKwlmcHJpbnRmKHdoZXJlLAorCQl0cHV0X2ZtdF8wLAorCQlsb2NhbF9zZW5kX3RocnVwdXQpOworCWJyZWFrOworICAgICAgY2FzZSAxOgorICAgICAgY2FzZSAyOgorCWlmIChwcmludF9oZWFkZXJzKSB7CisJICBmcHJpbnRmKHdoZXJlLHRwdXRfdGl0bGUsZm9ybWF0X3VuaXRzKCkpOworCX0KKwlmcHJpbnRmKHdoZXJlLAorCQl0cHV0X2ZtdF8xLAkJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KKwkJbHNzX3NpemUsIAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCisJCXNlbmRfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSBzZW5kcyAqLworCQllbGFwc2VkX3RpbWUsIAkJLyogaG93IGxvbmcgZGlkIGl0IHRha2UgKi8KKwkJbG9jYWxfc2VuZF9jYWxscywKKwkJZmFpbGVkX3NlbmRzLAorCQlsb2NhbF9zZW5kX3RocnVwdXQsCisJCXJzcl9zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KKwkJZWxhcHNlZF90aW1lLAorCQlyZW1vdGVfcmVjZWl2ZV9jYWxscywKKwkJcmVtb3RlX3JlY3ZfdGhydXB1dCk7CisJYnJlYWs7CisgICAgICB9CisgICAgfQorCisjaWZkZWYgV0FOVF9ISVNUT0dSQU0KKyAgICBpZiAodmVyYm9zaXR5ID4gMSkgeworICAgICAgZnByaW50Zih3aGVyZSwiXG5IaXN0b2dyYW0gb2YgdGltZSBzcGVudCBpbiBzZW5kKCkgY2FsbFxuIik7CisgICAgICBISVNUX3JlcG9ydCh0aW1lX2hpc3QpOworICAgIH0KKyNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLworICAgIGZmbHVzaCh3aGVyZSk7CisgIH0KK30KKwordm9pZAorc2VuZF91ZHBfcnIoY2hhciByZW1vdGVfaG9zdFtdKQoreworCisgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAorTG9jYWwgL1JlbW90ZVxuXAorU29ja2V0IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLlxuXAorU2VuZCAgIFJlY3YgICBTaXplICAgICBTaXplICAgIFRpbWUgICAgIFJhdGUgICAgICAgICBcblwKK2J5dGVzICBCeXRlcyAgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgXG5cbiI7CisKKyAgY2hhciAqdHB1dF90aXRsZV9iYW5kID0gIlwKK0xvY2FsIC9SZW1vdGVcblwKK1NvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBcblwKK1NlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBUaHJvdWdocHV0IFxuXAorYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgICVzL3NlYyAgIFxuXG4iOworCisgIGNoYXIgKnRwdXRfZm10XzAgPQorICAgICIlNy4yZiAlc1xuIjsKKworICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCislLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgJXNcbiI7CisKKyAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAorJS02ZCAlLTZkXG4iOworCisgIGNoYXIgKmNwdV90aXRsZSA9ICJcCitMb2NhbCAvUmVtb3RlXG5cCitTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCitTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAorYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICVjICAgICUlICVjICAgIHVzL1RyICAgdXMvVHJcblxuIjsKKworICBjaGFyICpjcHVfdGl0bGVfdHB1dCA9ICJcCitMb2NhbCAvUmVtb3RlXG5cCitTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHB1dCAgICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCitTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgJS04LjhzIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKK2J5dGVzICBieXRlcyAgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAlYyAgICAlJSAlYyAgICB1cy9LQiAgIHVzL0tCXG5cbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8wID0KKyAgICAiJTYuM2YgJWMgJXNcbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMSA9ICJcCislLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2YgJXNcbiI7CisKKyAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCislLTZkICUtNmRcbiI7CisKKyAgc2VuZF9vbW5pX2lubmVyKHJlbW90ZV9ob3N0LCBsZWdhY3ksICJNSUdSQVRFRCBVRFAgUkVRVUVTVC9SRVNQT05TRSBURVNUIik7CisKKyAgaWYgKGxlZ2FjeSkgeworICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHVzZXIgaGFzCisgICAgICAgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlIGxvY2FsCisgICAgICAgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSB1c2VyIGhhcworICAgICAgIHJlcXVlc3RlZCB2ZXJib3NpdHkgbGV2ZWwgMSwgaGUgd2lsbCBnZXQgdGhlIGJhc2ljICJzdHJlYW1wZXJmIgorICAgICAgIG51bWJlcnMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSB2ZXJib3NpdHkgb2YgZ3JlYXRlciB0aGFuCisgICAgICAgMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mIGJhY2tncm91bmQKKyAgICAgICBpbmZvcm1hdGlvbiBmcm9tIG91dHNpZGUgb2YgdGhpcyBibG9jayBhcyBpdCBpdCBub3QKKyAgICAgICBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCisKKyAgICBpZiAoY29uZmlkZW5jZSA8IDApIHsKKyAgICAgIC8qIHdlIGRpZCBub3QgaGl0IGNvbmZpZGVuY2UsIGJ1dCB3ZXJlIHdlIGFza2VkIHRvIGxvb2sgZm9yIGl0PyAqLworICAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPiAxKSB7CisJZGlzcGxheV9jb25maWRlbmNlKCk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CisKKyAgICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CisgICAgICBjYXNlIDA6CisJaWYgKGxvY2FsX2NwdV91c2FnZSkgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICBjcHVfZm10XzAsCisJCSAgbG9jYWxfc2VydmljZV9kZW1hbmQsCisJCSAgbG9jYWxfY3B1X21ldGhvZCwKKwkJICAoKHByaW50X2hlYWRlcnMpIHx8CisJCSAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCisJfQorCWVsc2UgeworCSAgZnByaW50Zih3aGVyZSwKKwkJICBjcHVfZm10XzAsCisJCSAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kLAorCQkgIHJlbW90ZV9jcHVfbWV0aG9kLAorCQkgICgocHJpbnRfaGVhZGVycykgfHwKKwkJICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisKKwl9CisJYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICBjYXNlIDI6CisJaWYgKHByaW50X2hlYWRlcnMpIHsKKwkgIGlmICgneCcgPT0gbGliZm10KSB7CisJICAgIGZwcmludGYod2hlcmUsCisJCSAgICBjcHVfdGl0bGUsCisJCSAgICBsb2NhbF9jcHVfbWV0aG9kLAorCQkgICAgcmVtb3RlX2NwdV9tZXRob2QpOworCSAgfQorCSAgZWxzZSB7CisJICAgIGZwcmludGYod2hlcmUsCisJCSAgICBjcHVfdGl0bGVfdHB1dCwKKwkJICAgIGZvcm1hdF91bml0cygpLAorCQkgICAgbG9jYWxfY3B1X21ldGhvZCwKKwkJICAgIHJlbW90ZV9jcHVfbWV0aG9kKTsKKwkgIH0KKwl9CisKKwlmcHJpbnRmKHdoZXJlLAorCQljcHVfZm10XzFfbGluZV8xLAkJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KKwkJbHNzX3NpemUsCQkvKiBsb2NhbCBzZW5kYnVmIHNpemUgKi8KKwkJbHNyX3NpemUsCisJCXJlcV9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHJlcXVlc3RzICovCisJCXJzcF9zaXplLAkJLyogZ3Vlc3MgKi8KKwkJZWxhcHNlZF90aW1lLAkJLyogaG93IGxvbmcgd2FzIHRoZSB0ZXN0ICovCisJCXRocnVwdXQsCisJCWxvY2FsX2NwdV91dGlsaXphdGlvbiwJLyogbG9jYWwgY3B1ICovCisJCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCS8qIHJlbW90ZSBjcHUgKi8KKwkJbG9jYWxfc2VydmljZV9kZW1hbmQsCS8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kICovCisJCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwJLyogcmVtb3RlIHNlcnZpY2UgZGVtYW5kICovCisJCSgocHJpbnRfaGVhZGVycykgfHwKKwkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOworCWZwcmludGYod2hlcmUsCisJCWNwdV9mbXRfMV9saW5lXzIsCisJCXJzc19zaXplLAorCQlyc3Jfc2l6ZSk7CisJYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogVGhlIHRlc3RlciBkaWQgbm90IHdpc2ggdG8gbWVhc3VyZSBzZXJ2aWNlIGRlbWFuZC4gKi8KKyAgICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CisgICAgICBjYXNlIDA6CisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMCwKKwkJdGhydXB1dCwKKwkJKChwcmludF9oZWFkZXJzKSB8fAorCQkgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CisJYnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICBjYXNlIDI6CisJaWYgKHByaW50X2hlYWRlcnMpIHsKKwkgIGZwcmludGYod2hlcmUsCisJCSAgKCd4JyA9PSBsaWJmbXQpID8gdHB1dF90aXRsZSA6IHRwdXRfdGl0bGVfYmFuZCwKKwkJICBmb3JtYXRfdW5pdHMoKSk7CisJfQorCisJZnByaW50Zih3aGVyZSwKKwkJdHB1dF9mbXRfMV9saW5lXzEsCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJCWxzc19zaXplLAorCQlsc3Jfc2l6ZSwKKwkJcmVxX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgcmVxdWVzdHMgKi8KKwkJcnNwX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgcmVzcG9uc2VzICovCisJCWVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLworCQl0aHJ1cHV0LAorCQkoKHByaW50X2hlYWRlcnMpIHx8CisJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKKwlmcHJpbnRmKHdoZXJlLAorCQl0cHV0X2ZtdF8xX2xpbmVfMiwKKwkJcnNzX3NpemUsIAkJLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLworCQlyc3Jfc2l6ZSk7CisKKwlicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZSAqLworICAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCisgICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCisgICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KKyAgICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KKworICAgIC8qIGhvdyB0byBoYW5kbGUgdGhlIHZlcmJvc2UgaW5mb3JtYXRpb24gaW4gdGhlIHByZXNlbmNlIG9mICovCisgICAgLyogY29uZmlkZW5jZSBpbnRlcnZhbHMgaXMgeWV0IHRvIGJlIGRldGVybWluZWQuLi4gcmFqIDExLzk0ICovCisKKyAgICBpZiAodmVyYm9zaXR5ID4gMSkgeworICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLiAqLworICAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLworICAgICAgLyogVURQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KKyAgICAgIC8qIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLworCisjaWZkZWYgV0FOVF9ISVNUT0dSQU0KKyAgICAgIGZwcmludGYod2hlcmUsIlxuSGlzdG9ncmFtIG9mIHJlcXVlc3QvcmVwb25zZSB0aW1lcy5cbiIpOworICAgICAgSElTVF9yZXBvcnQodGltZV9oaXN0KTsKKyNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLworICAgIH0KKyAgICBmZmx1c2god2hlcmUpOworICB9Cit9CisKKworI2VuZGlmIC8qIFdBTlRfTUlHUkFUSU9OICovCisKKwwKKy8qIHVzaW5nIGxlZ2FjeSB0ZXN0IG5hbWVzIHdpbGwgY2F1c2UgY2VydGFpbiBkZWZhdWx0IHNldHRpbmdzIHRvIGJlCisgICBtYWRlIGJlZm9yZSB3ZSBzY2FuIHRoZSB0ZXN0LXNwZWNpZmljIGFyZ3VtZW50cy4gIHJhaiAyMDEwLTA3LTIwICovCitzdGF0aWMgdm9pZAorc2V0X29tbmlfZGVmYXVsdHNfYnlfbGVnYWN5X3Rlc3RuYW1lKCkgeworCisgIC8qIHRoZSB1YmVyIGRlZmF1bHRzIGFyZSBmb3IgYSB1bmlkaXJlY3Rpb25hbCB0ZXN0IHVzaW5nIFRDUCAqLworICBwcm90b2NvbCA9IElQUFJPVE9fVENQOworICBzb2NrZXRfdHlwZSA9IFNPQ0tfU1RSRUFNOworICBjb25uZWN0aW9uX3Rlc3QgPSAwOworICByZXFfc2l6ZSA9IHJzcF9zaXplID0gLTE7CisgIHdhc19sZWdhY3kgPSAxOworICBsZWdhY3kgPSAxOworICBpbXBsaWNpdF9kaXJlY3Rpb24gPSAwOyAgLyogZG8gd2UgYWxsb3cgY2VydGFpbiBvcHRpb25zIHRvCisJCQkgICAgICBpbXBsaWNpdGx5IGFmZmVjdCB0aGUgdGVzdCBkaXJlY3Rpb24/ICovCisgIGlmIChzdHJjYXNlY21wKHRlc3RfbmFtZSwiVENQX1NUUkVBTSIpID09IDApIHsKKyAgICBkaXJlY3Rpb24gPSBORVRQRVJGX1hNSVQ7CisgIH0KKyAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlRDUF9NQUVSVFMiKSA9PSAwKSB7CisgICAgZGlyZWN0aW9uID0gTkVUUEVSRl9SRUNWOworICB9CisgIGVsc2UgaWYgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfUlIiKSA9PSAwKSB7CisgICAgcmVxX3NpemUgPSByc3Bfc2l6ZSA9IDE7CisgICAgZGlyZWN0aW9uID0gMDsKKyAgICBkaXJlY3Rpb24gfD0gTkVUUEVSRl9YTUlUOworICAgIGRpcmVjdGlvbiB8PSBORVRQRVJGX1JFQ1Y7CisgIH0KKyAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIlVEUF9TVFJFQU0iKSA9PSAwKSB7CisgICAgIHByb3RvY29sID0gSVBQUk9UT19VRFA7CisgICAgc29ja2V0X3R5cGUgPSBTT0NLX0RHUkFNOworICB9CisgIGVsc2UgaWYgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJVRFBfUlIiKSA9PSAwKSB7CisgICAgIHByb3RvY29sID0gSVBQUk9UT19VRFA7CisgICAgc29ja2V0X3R5cGUgPSBTT0NLX0RHUkFNOworICAgIGRpcmVjdGlvbiA9IDA7CisgICAgZGlyZWN0aW9uIHw9IE5FVFBFUkZfWE1JVDsKKyAgICBkaXJlY3Rpb24gfD0gTkVUUEVSRl9SRUNWOworICAgIHJlcV9zaXplID0gcnNwX3NpemUgPSAxOworICB9CisgIGVsc2UgaWYgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfQ0MiKSA9PSAwKSB7CisgICAgZGlyZWN0aW9uID0gMDsKKyAgICBjb25uZWN0aW9uX3Rlc3QgPSAxOworICB9CisgIGVsc2UgaWYgKHN0cmNhc2VjbXAodGVzdF9uYW1lLCJUQ1BfQ1JSIikgPT0gMCkgeworICAgIGRpcmVjdGlvbiA9IDA7CisgICAgZGlyZWN0aW9uIHw9IE5FVFBFUkZfWE1JVDsKKyAgICBkaXJlY3Rpb24gfD0gTkVUUEVSRl9SRUNWOworICAgIHJlcV9zaXplID0gcnNwX3NpemUgPSAxOworICAgIGNvbm5lY3Rpb25fdGVzdCA9IDE7CisgIH0KKyAgZWxzZSBpZiAoc3RyY2FzZWNtcCh0ZXN0X25hbWUsIm9tbmkiKSA9PSAwKSB7CisgICAgLyogdGhlcmUgaXMgbm90IG11Y2ggdG8gZG8gaGVyZSBidXQgY2xlYXIgdGhlIGxlZ2FjeSBmbGFnICovCisgICAgd2FzX2xlZ2FjeSA9IDA7CisgICAgbGVnYWN5ID0gMDsKKyAgICBpbXBsaWNpdF9kaXJlY3Rpb24gPSAxOworICB9CisgIHNvY2tldF90eXBlX3N0ciA9IGhzdF90b19zdHIoc29ja2V0X3R5cGUpOworfQorCitjaGFyIG9tbmlfdXNhZ2VbXSA9ICJcblwKK1VzYWdlOiBuZXRwZXJmIFtnbG9iYWwgb3B0aW9uc10gLS0gW3Rlc3Qgb3B0aW9uc10gXG5cCitcblwKK09NTkkgYW5kIE1pZ3JhdGVkIEJTRCBTb2NrZXRzIFRlc3QgT3B0aW9uczpcblwKKyAgICAtYiBudW1iZXIgICAgICAgICBTZW5kIG51bWJlciByZXF1ZXN0cyBhdCBzdGFydCBvZiBfUlIgdGVzdHNcblwKKyAgICAtYyAgICAgICAgICAgICAgICBFeHBsaWNpdGx5IGRlY2xhcmUgdGhpcyBhIGNvbm5lY3Rpb24gdGVzdCBzdWNoIGFzXG5cCisgICAgICAgICAgICAgICAgICAgICAgVENQX0NSUiBvciBUQ1BfQ0NcblwKKyAgICAtQyAgICAgICAgICAgICAgICBTZXQgVENQX0NPUksgd2hlbiBhdmFpbGFibGVcblwKKyAgICAtZCBkaXJlY3Rpb24gICAgICBFeHBsaWNpdGx5IHNldCB0ZXN0IGRpcmVjdGlvbiBiYXNlZCBvbiBiaXR3aXNlIE9SXG5cCisgICAgICAgICAgICAgICAgICAgICAgb2YgMHgyIGZvciB0cmFuc21pdCBhbmQgMHg0IGZvciByZWNlaXZlLiBEZWZhdWx0OlxuXAorICAgICAgICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRlc3QgdHlwZVxuXAorICAgIC1EIFtMXVssUl0gICAgICAgIFNldCBUQ1BfTk9ERUxBWSBsb2NhbGx5IGFuZC9vciByZW1vdGVseSAoVENQXyopXG5cCisgICAgLWggICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIHRleHRcblwKKyAgICAtSCBuYW1lWy9tYXNrXSxmYW0gIFVzZSBuYW1lIChvciBJUCkgYW5kIGZhbWlseSBhcyB0YXJnZXQgb2YgZGF0YSBjb25uZWN0aW9uXG5cCisgICAgICAgICAgICAgICAgICAgICAgQSBtYXNrIHZhbHVlIHdpbGwgY2F1c2UgcmFuZG9taXphdGlvbiBvZiB0aGUgSVAgdXNlZFxuXAorICAgIC1rIFtmaWxlXSAgICAgICAgIEdlbmVyYXRlIGtleXZhbCBvdXRwdXQgb3B0aW9uYWxseSBiYXNlZCBvbiBmaWxlXG5cCisgICAgICAgICAgICAgICAgICAgICAgVXNlIGZpbGVuYW1lIG9mICc/JyB0byBnZXQgdGhlIGxpc3Qgb2YgY2hvaWNlc1xuXAorICAgIC1LIGxvY1sscmVtXSAgICAgIFNldCB0aGUgbG9jYWwgYW5kL29yIHJlbW90ZSBjb25nZXN0aW9uIGNvbnRyb2xcblwKKyAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG0gdG8gdXNlIG9uIHRob3NlIHBsYXRmb3JtcyB3aGVyZSBpdCBjYW5cblwKKyAgICAgICAgICAgICAgICAgICAgICBiZSBzZXQuXG5cCisgICAgLUwgbmFtZVsvbWFza10sZmFtICBVc2UgbmFtZSAob3IgSVApIGFuZCBmYW1pbHkgYXMgc291cmNlIG9mIGRhdGEgY29ubmVjdGlvblxuXAorICAgICAgICAgICAgICAgICAgICAgIEEgbWFzayB2YWx1ZSB3aWxsIGNhdXNlIHJhbmRvbWl6YXRpb24gb2YgdGhlIElQIHVzZWRcblwKKyAgICAtbSBsb2NhbCxyZW1vdGUgICBTZXQgdGhlIHNlbmQgc2l6ZSBmb3IgX1NUUkVBTS9fTUFFUlRTIHRlc3RzXG5cCisgICAgLU0gbG9jYWwscmVtb3RlICAgU2V0IHRoZSByZWN2IHNpemUgZm9yIF9TVFJFQU0vX01BRVJUUyB0ZXN0c1xuXAorICAgIC1uICAgICAgICAgICAgICAgIFVzZSB0aGUgY29ubmVjdGVkIHNvY2tldCBmb3IgVURQIGxvY2FsbHlcblwKKyAgICAtTiAgICAgICAgICAgICAgICBVc2UgdGhlIGNvbm5lY3RlZCBzb2NrZXQgZm9yIFVEUCByZW1vdGVseVxuXAorICAgIC1vIFtmaWxlXSAgICAgICAgIEdlbmVyYXRlIENTViBvdXRwdXQgb3B0aW9uYWxseSBiYXNlZCBvbiBmaWxlXG5cCisgICAgICAgICAgICAgICAgICAgICAgVXNlIGZpbGVuYW1lIG9mICc/JyB0byBnZXQgdGhlIGxpc3Qgb2YgY2hvaWNlc1xuXAorICAgIC1PIFtmaWxlXSAgICAgICAgIEdlbmVyYXRlIGNsYXNzaWMtc3R5bGUgb3V0cHV0IGJhc2VkIG9uIGZpbGVcblwKKyAgICAgICAgICAgICAgICAgICAgICBVc2UgZmlsZW5hbWUgb2YgJz8nIHRvIGdldCB0aGUgbGlzdCBvZiBjaG9pY2VzXG5cCisgICAgLXAgbWluWyxtYXhdICAgICAgU2V0IHRoZSBtaW4vbWF4IHBvcnQgbnVtYmVycyBmb3IgVENQX0NSUiwgVENQX1RSUlxuXAorICAgIC1QIGxvY2FsWyxyZW1vdGVdIFNldCB0aGUgbG9jYWwvcmVtb3RlIHBvcnQgZm9yIHRoZSBkYXRhIHNvY2tldFxuXAorICAgIC1yIHJlcSxbcnNwXSAgICAgIFNldCByZXF1ZXN0L3Jlc3BvbnNlIHNpemVzIChUQ1BfUlIsIFVEUF9SUilcblwKKyAgICAtUiAwLzEgICAgICAgICAgICBBbGxvdyByb3V0aW5nIG9mIHRyYWZmaWMgb24gZGF0YSBjb25uZWN0aW9uLlxuXAorICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IDAgKG9mZikgZm9yIFVEUF9TVFJFQU0sIDEgKG9uKSBvdGhlcndpc2VcblwKKyAgICAtcyBzZW5kWyxyZWN2XSAgICBTZXQgbG9jYWwgc29ja2V0IHNlbmQvcmVjdiBidWZmZXIgc2l6ZXNcblwKKyAgICAtUyBzZW5kWyxyZWN2XSAgICBTZXQgcmVtb3RlIHNvY2tldCBzZW5kL3JlY3YgYnVmZmVyIHNpemVzXG5cCisgICAgLXQgdHlwZSAgICAgICAgICAgRXhwbGljaXRseSBzZXQgc29ja2V0IHR5cGUuIERlZmF1bHQgaXMgaW1wbGljaXRcblwKKyAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBvdGhlciBzZXR0aW5nc1xuXAorICAgIC1UIHByb3RvY29sICAgICAgIEV4cGxpY2l0bHkgc2V0IGRhdGEgY29ubmVjdGlvbiBwcm90b2NvbC4gRGVmYXVsdCBpc1xuXAorICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0IGJhc2VkIG9uIG90aGVyIHNldHRpbmdzXG5cCisgICAgLXUgdXVpZCAgICAgICAgICAgVXNlIHRoZSBzdXBwbGllZCBzdHJpbmcgYXMgdGhlIFVVSUQgZm9yIHRoaXMgdGVzdC5cblwKKyAgICAtNCAgICAgICAgICAgICAgICBVc2UgQUZfSU5FVCAoZWcgSVB2NCkgb24gYm90aCBlbmRzIG9mIHRoZSBkYXRhIGNvbm5cblwKKyAgICAtNiAgICAgICAgICAgICAgICBVc2UgQUZfSU5FVDYgKGVnIElQdjYpIG9uIGJvdGggZW5kcyBvZiB0aGUgZGF0YSBjb25uXG5cCitcblwKK0ZvciB0aG9zZSBvcHRpb25zIHRha2luZyB0d28gcGFybXMsIGF0IGxlYXN0IG9uZSBtdXN0IGJlIHNwZWNpZmllZDtcblwKK3NwZWNpZnlpbmcgb25lIHZhbHVlIHdpdGhvdXQgYSBjb21tYSB3aWxsIHNldCBib3RoIHBhcm1zIHRvIHRoYXRcblwKK3ZhbHVlLCBzcGVjaWZ5aW5nIGEgdmFsdWUgd2l0aCBhIGxlYWRpbmcgY29tbWEgd2lsbCBzZXQganVzdCB0aGUgc2Vjb25kXG5cCitwYXJtLCBhIHZhbHVlIHdpdGggYSB0cmFpbGluZyBjb21tYSB3aWxsIHNldCBqdXN0IHRoZSBmaXJzdC4gVG8gc2V0XG5cCitlYWNoIHBhcm0gdG8gdW5pcXVlIHZhbHVlcywgc3BlY2lmeSBib3RoIGFuZCBzZXBhcmF0ZSB0aGVtIHdpdGggYVxuXAorY29tbWEuXG4iOworCit2b2lkCitwcmludF9vbW5pX3VzYWdlKCkKK3sKKworICBmd3JpdGUob21uaV91c2FnZSwgc2l6ZW9mKGNoYXIpLCBzdHJsZW4ob21uaV91c2FnZSksIHN0ZG91dCk7CisgIGV4aXQoMSk7CisKK30KKworDAordm9pZAorc2Nhbl9vbW5pX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKworeworCisjZGVmaW5lIE9NTklfQVJHUyAiYUJiOmNDZDpEZTpGZ0c6aEg6aTpJajprSzpsOkw6bTpNOm5Ob09wOlA6cjpSOnM6Uzp0OlQ6dTpVVnc6Vzo0NiIKKworICBleHRlcm4gY2hhcgkqb3B0YXJnOwkgIC8qIHBvaW50ZXIgdG8gb3B0aW9uIHN0cmluZwkqLworCisgIGludAkJYzsKKyAgaW50ICAgICAgICAgICBoYXZlX3V1aWQgPSAwOworICBpbnQgICAgICAgICAgIGhhdmVfUl9vcHRpb24gPSAwOworCisgIGNoYXIKKyAgICBhcmcxW0JVRlNJWl0sICAvKiBhcmd1bWVudCBob2xkZXJzCQkqLworICAgIGFyZzJbQlVGU0laXSwKKyAgICBhcmczW0JVRlNJWl07CisKKyAgaWYgKGRlYnVnKSB7CisgICAgaW50IGk7CisgICAgcHJpbnRmKCIlcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHZlY3RvclxuIiwKKwkgICBfX0ZVTkNUSU9OX18pOworICAgIGZvciAoaSA9IDA7IGk8IGFyZ2M7IGkrKykgeworICAgICAgcHJpbnRmKCIlcyAiLGFyZ3ZbaV0pOworICAgIH0KKyAgICBwcmludGYoIlxuIik7CisgIH0KKworICAvKiBkb3VibGUtY2hlY2sgc3RydWN0IHNpemVzICovCisgIHsKKyAgICBjb25zdCB1bmlvbiBuZXRwZXJmX3JlcXVlc3Rfc3RydWN0ICogdSA9IChjb25zdCB1bmlvbiBuZXRwZXJmX3JlcXVlc3Rfc3RydWN0ICopMDsKKyAgICBpZiAoZGVidWcpIHsKKyAgICAgIGZwcmludGYod2hlcmUsICJzaXplb2Yob21uaV9yZXF1ZXN0X3N0cnVjdCk9JWQvJWRcbiIsCisgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHN0cnVjdCBvbW5pX3JlcXVlc3Rfc3RydWN0KSwKKyAgICAgICAgICAgICAgKGludClzaXplb2YodS0+Y29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEpKTsKKyAgICAgIGZwcmludGYod2hlcmUsICJzaXplb2Yob21uaV9yZXNwb25zZV9zdHJ1Y3QpPSVkLyVkXG4iLAorICAgICAgICAgICAgICAoaW50KXNpemVvZihzdHJ1Y3Qgb21uaV9yZXNwb25zZV9zdHJ1Y3QpLAorICAgICAgICAgICAgICAoaW50KXNpemVvZih1LT5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSkpOworICAgICAgZnByaW50Zih3aGVyZSwgInNpemVvZihvbW5pX3Jlc3VsdHNfc3RydWN0KT0lZC8lZFxuIiwKKyAgICAgICAgICAgICAgKGludClzaXplb2Yoc3RydWN0IG9tbmlfcmVzdWx0c19zdHJ1Y3QpLAorICAgICAgICAgICAgICAoaW50KXNpemVvZih1LT5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YSkpOworICAgIH0KKyAgICBhc3NlcnQoc2l6ZW9mKHN0cnVjdCBvbW5pX3JlcXVlc3Rfc3RydWN0KQorICAgICAgICAgICA8PSBzaXplb2YodS0+Y29udGVudC50ZXN0X3NwZWNpZmljX2RhdGEpKTsKKyAgICBhc3NlcnQoc2l6ZW9mKHN0cnVjdCBvbW5pX3Jlc3BvbnNlX3N0cnVjdCkKKyAgICAgICAgICAgPD0gc2l6ZW9mKHUtPmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhKSk7CisgICAgYXNzZXJ0KHNpemVvZihzdHJ1Y3Qgb21uaV9yZXN1bHRzX3N0cnVjdCkKKyAgICAgICAgICAgPD0gc2l6ZW9mKHUtPmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhKSk7CisgIH0KKworICBzdHJuY3B5KGxvY2FsX2RhdGFfcG9ydCwiMCIsc2l6ZW9mKGxvY2FsX2RhdGFfcG9ydCkpOworICBzdHJuY3B5KHJlbW90ZV9kYXRhX3BvcnQsIjAiLHNpemVvZihyZW1vdGVfZGF0YV9wb3J0KSk7CisKKyAgLyogdGhpcyB3aWxsIGhhbmRsZSBzZXR0aW5nIGRlZmF1bHQgc2V0dGluZ3MgYmFzZWQgb24gdGVzdCBuYW1lICovCisgIHNldF9vbW5pX2RlZmF1bHRzX2J5X2xlZ2FjeV90ZXN0bmFtZSgpOworCisgIC8qIEdvIHRocm91Z2ggYWxsIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBicmVhayB0aGVtIG91dC4gRm9yCisgICAgIHRob3NlIG9wdGlvbnMgdGhhdCB0YWtlIHR3byBwYXJtcywgc3BlY2lmeWluZyBvbmx5IHRoZSBmaXJzdCB3aWxsCisgICAgIHNldCBib3RoIHRvIHRoYXQgdmFsdWUuIFNwZWNpZnlpbmcgb25seSB0aGUgc2Vjb25kIHdpbGwgbGVhdmUgdGhlCisgICAgIGZpcnN0IHVudG91Y2hlZC4gVG8gY2hhbmdlIG9ubHkgdGhlIGZpcnN0LCB1c2UgdGhlIGZvcm0gImZpcnN0LCIKKyAgICAgKHNlZSB0aGUgcm91dGluZSBicmVha19hcmdzLi4gKi8KKworICB3aGlsZSAoKGM9IGdldG9wdChhcmdjLCBhcmd2LCBPTU5JX0FSR1MpKSAhPSBFT0YpIHsKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlICc/JzoKKyAgICBjYXNlICc0JzoKKyAgICAgIHJlbW90ZV9kYXRhX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBsb2NhbF9kYXRhX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBicmVhazsKKyAgICBjYXNlICc2JzoKKyNpZiBkZWZpbmVkKEFGX0lORVQ2KQorICAgICAgcmVtb3RlX2RhdGFfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgICBsb2NhbF9kYXRhX2ZhbWlseSA9IEFGX0lORVQ2OworI2Vsc2UKKyAgICAgIGZwcmludGYoc3RkZXJyLAorCSAgICAgICJUaGlzIG5ldHBlcmYgd2FzIG5vdCBjb21waWxlZCBvbiBhbiBJUHY2IGNhcGFibGUgaG9zdCFcbiIpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICBleGl0KC0xKTsKKyNlbmRpZgorICAgICAgYnJlYWs7CisgICAgY2FzZSAnaCc6CisgICAgICBwcmludF9vbW5pX3VzYWdlKCk7CisgICAgICBleGl0KDEpOworICAgIGNhc2UgJ2EnOgorICAgICAgd2FudF9kZWZlcl9hY2NlcHQgPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnQic6CisgICAgICB3YW50X3VzZV9wa3RpbmZvID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2InOgorI2lmZGVmIFdBTlRfRklSU1RfQlVSU1QKKyAgICAgIGZpcnN0X2J1cnN0X3NpemUgPSBhdG9pKG9wdGFyZyk7CisjZWxzZSAvKiBXQU5UX0ZJUlNUX0JVUlNUICovCisgICAgICBwcmludGYoIkluaXRpYWwgcmVxdWVzdCBidXJzdCBmdW5jdGlvbmFsaXR5IG5vdCBjb21waWxlZC1pbiFcbiIpOworI2VuZGlmIC8qIFdBTlRfRklSU1RfQlVSU1QgKi8KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2MnOgorICAgICAgLyogdGhpcyBpcyBhIGNvbm5lY3Rpb24gdGVzdCAqLworICAgICAgY29ubmVjdGlvbl90ZXN0ID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ0MnOgorI2lmZGVmIFRDUF9DT1JLCisgICAgICAvKiBzZXQgVENQX0NPUksgKi8KKyAgICAgIGxvY190Y3Bjb3JrID0gMTsKKyAgICAgIHJlbV90Y3Bjb3JrID0gMTsgLyogaG93ZXZlciwgYXQgZmlyc3QsIHdlIG9ueSBoYXZlIGNvcmsgYWZmZWN0IGxvYyAqLworI2Vsc2UKKyAgICAgIHByaW50ZigiV0FSTklORzogVENQX0NPUksgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIVxuIik7CisjZW5kaWYgLyogVENQX0NPUksgKi8KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2QnOgorICAgICAgLyogYXJiaXRyYXJpbHkgc2V0IHRoZSBkaXJlY3Rpb24gdmFyaWFibGUsIGJ1dCBvbmx5IGZvciBhbgorCSBhY3R1YWwgb21uaSB0ZXN0IGFuZCB0aGVuIGRpc2FibGUgaW1wbGljaXQgc2V0dGluZyBvZgorCSBkaXJlY3Rpb24gKi8KKyAgICAgIGlmICghd2FzX2xlZ2FjeSkgeworCWRpcmVjdGlvbiA9IHBhcnNlX2RpcmVjdGlvbihvcHRhcmcpOworCWltcGxpY2l0X2RpcmVjdGlvbiA9IDA7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICdEJzoKKyAgICAgIC8qIHNldCB0aGUgVENQIG5vZGVsYXkgZmxhZyAqLworICAgICAgbG9jX25vZGVsYXkgPSAxOworICAgICAgcmVtX25vZGVsYXkgPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnRic6CisjaWYgZGVmaW5lZChNU0dfRkFTVE9QRU4pCisgICAgICB1c2VfZmFzdG9wZW4gPSAxOworI2Vsc2UKKyAgICAgIHByaW50ZigiV0FSTklORzogVENQIEZBU1RPUEVOIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSFcbiIpOworI2VuZGlmCisgICAgICBicmVhazsKKyAgICBjYXNlICdlJzoKKyAgICAgIC8qIHNldCB0aGUgckVjZWl2ZSB0aW1lb3V0ICovCisgICAgICByZWNlaXZlX3RpbWVvdXQgPSBhdG9pKG9wdGFyZyk7CisgICAgICBicmVhazsKKyAgICBjYXNlICdnJzoKKyAgICAgIC8qIGVuYWJsZSBTT19ERUJVRywgb3IgYXQgbGVhc3QgbWFrZSB0aGUgYXR0ZW1wdCwgb24gdGhlIGRhdGEgc29ja2V0ICovCisgICAgICBzb2NrZXRfZGVidWcgPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnRyc6CisgICAgICAvKiBzZXQgdGhlIHZhbHVlIGZvciBhIHRjcF9tYXhzZUcgY2FsbCovCisgICAgICB0cmFuc3BvcnRfbXNzX3JlcSA9IGF0b2kob3B0YXJnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ0gnOgorICAgICAgYnJlYWtfYXJnc19leHBsaWNpdF9zZXAob3B0YXJnLCcsJyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pIHsKKwkvKiBjaGVjayB0byBzZWUgaWYgdGhlcmUgd2FzIGEgd2lkdGgsIHdoaWNoIHdlIHdvdWxkIHdhbnQgdG8KKwkgICBiZSBhcmczLiBmb3Igc2ltcGxpY2l0aWVzIHNha2UsIHdlIHdpbGwgYXNzdW1lIHRoZSB3aWR0aAorCSAgIG11c3QgZm9sbG93IHRoZSBhZGRyZXNzIGFuZCBub3QgdGhlIGFkZHJlc3MgZmFtaWx5IC0gaWUKKwkgICAxLjIuMy40LzI0LGluZXQuICBUaGlzIG1lYW5zIHdlIGNhbiBqdXN0IHBhc3Mgb3B0YXJnIGFnYWluCisJICAgYXMgdGhlIHNvdXJjZSByYXRoZXIgdGhhbiBoYXZlIHRvIHNodWZmbGUgYXJnIHZhbHVlcy4gKi8KKwlicmVha19hcmdzX2V4cGxpY2l0X3NlcChvcHRhcmcsJy8nLGFyZzEsYXJnMyk7CisJaWYgKGFyZzFbMF0pIHsKKwkgIHJlbW90ZV9kYXRhX2FkZHJlc3MgPSBtYWxsb2Moc3RybGVuKGFyZzEpKzEpOworCSAgc3RyY3B5KHJlbW90ZV9kYXRhX2FkZHJlc3MsYXJnMSk7CisJICBleHBsaWNpdF9kYXRhX2FkZHJlc3MgPSAxOworCX0KKwlpZiAoYXJnM1swXSkgeworCSAgcmVtb3RlX21hc2tfbGVuID0gY29udmVydChhcmczKTsKKwl9CisgICAgICB9CisgICAgICBpZiAoYXJnMlswXSkgeworCXJlbW90ZV9kYXRhX2ZhbWlseSA9IHBhcnNlX2FkZHJlc3NfZmFtaWx5KGFyZzIpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAnaSc6CisgICAgICBmcHJpbnRmKHN0ZGVyciwiVGhlIHN1cHBvcnQgZm9yIGNoZWNrX2ludGVydmFsIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGUgY29udHJpYnV0aW5nIGVkaXRvciBubyBsb25nZXIga25ldyB3aGF0IGl0IHdhcyBmb3JcbiIpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICBicmVhazsKKyAgICBjYXNlICdJJzoKKyAgICAgIHVzZV93cml0ZSA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlICdqJzoKKyAgICAgIHBhcmFsbGVsX2Nvbm5lY3Rpb25zID0gYXRvaShvcHRhcmcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnayc6CisgICAgICBuZXRwZXJmX291dHB1dF9tb2RlID0gS0VZVkFMOworICAgICAgbGVnYWN5ID0gMDsKKyAgICAgIC8qIG9ibGl0ZXJhdGUgYW55IHByZXZpb3VzIGZpbGUgbmFtZSAqLworICAgICAgaWYgKG91dHB1dF9zZWxlY3Rpb25fc3BlYykgeworCWZyZWUob3V0cHV0X3NlbGVjdGlvbl9zcGVjKTsKKwlvdXRwdXRfc2VsZWN0aW9uX3NwZWMgPSBOVUxMOworICAgICAgfQorICAgICAgaWYgKGFyZ3Zbb3B0aW5kXSAmJiAoKHVuc2lnbmVkIGNoYXIpYXJndltvcHRpbmRdWzBdICE9ICctJykpIHsKKwkvKiB3ZSBhc3N1bWUgdGhhdCB3aGF0IGZvbGxvd3MgaXMgdGhlIG5hbWUgb2YgYSBmaWxlIHdpdGggdGhlCisJICAgbGlzdCBvZiBkZXNpcmVkIG91dHB1dCB2YWx1ZXMuICovCisJb3V0cHV0X3NlbGVjdGlvbl9zcGVjID0gc3RyZHVwKGFyZ3Zbb3B0aW5kXSk7CisJb3B0aW5kKys7CisJLyogc3BlY2lhbCBjYXNlIC0gaWYgdGhlIGZpbGUgbmFtZSBpcyAiPyIgdGhlbiB3ZSB3aWxsIGVtaXQgYQorCSAgIGxpc3Qgb2YgdGhlIGF2YWlsYWJsZSBvdXRwdXRzICovCisJaWYgKHN0cmNtcChvdXRwdXRfc2VsZWN0aW9uX3NwZWMsIj8iKSA9PSAwKSB7CisJICBkdW1wX25ldHBlcmZfb3V0cHV0X2Nob2ljZXMoc3Rkb3V0LDEpOworCSAgZXhpdCgxKTsKKwl9CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICdLJzoKKyAgICAgIC8qICJLb25nZXN0aW9uIEtvbnRyb2wgKi8KKyAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkKKwlzdHJuY3B5KGxvY2FsX2NvbmdfY29udHJvbF9yZXEsYXJnMSxzaXplb2YobG9jYWxfY29uZ19jb250cm9sX3JlcSkpOworICAgICAgaWYgKGFyZzJbMl0pCisJc3RybmNweShyZW1vdGVfY29uZ19jb250cm9sX3JlcSxhcmcyLHNpemVvZihyZW1vdGVfY29uZ19jb250cm9sX3JlcSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnbCc6CisgICAgICBtdWx0aWNhc3RfdHRsID0gYXRvaShvcHRhcmcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnTCc6CisgICAgICBicmVha19hcmdzX2V4cGxpY2l0X3NlcChvcHRhcmcsJywnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworCS8qIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSB3YXMgYSB3aWR0aCwgd2hpY2ggd2Ugd291bGQgd2FudCB0bworCSAgIGJlIGFyZzMuIGZvciBzaW1wbGljaXRpZXMgc2FrZSwgd2Ugd2lsbCBhc3N1bWUgdGhlIHdpZHRoCisJICAgbXVzdCBmb2xsb3cgdGhlIGFkZHJlc3MgYW5kIG5vdCB0aGUgYWRkcmVzcyBmYW1pbHkgLSBpZQorCSAgIDEuMi4zLjQvMjQsaW5ldC4gIFRoaXMgbWVhbnMgd2UgY2FuIGp1c3QgcGFzcyBvcHRhcmcgYWdhaW4KKwkgICBhcyB0aGUgc291cmNlIHJhdGhlciB0aGFuIGhhdmUgdG8gc2h1ZmZsZSBhcmcgdmFsdWVzLiAqLworCWJyZWFrX2FyZ3NfZXhwbGljaXRfc2VwKG9wdGFyZywnLycsYXJnMSxhcmczKTsKKwlpZiAoYXJnMVswXSkgeworCSAgbG9jYWxfZGF0YV9hZGRyZXNzID0gbWFsbG9jKHN0cmxlbihhcmcxKSsxKTsKKwkgIHN0cmNweShsb2NhbF9kYXRhX2FkZHJlc3MsYXJnMSk7CisJfQorCWlmIChhcmczWzBdKSB7CisJICBsb2NhbF9tYXNrX2xlbiA9IGNvbnZlcnQoYXJnMyk7CisJfQorICAgICAgfQorICAgICAgaWYgKGFyZzJbMF0pIHsKKwlsb2NhbF9kYXRhX2ZhbWlseSA9IHBhcnNlX2FkZHJlc3NfZmFtaWx5KGFyZzIpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAnbSc6CisgICAgICAvKiBzZXQgdGhlIHNlbmQgc2l6ZS4gaWYgd2Ugc2V0IHRoZSBsb2NhbCBzZW5kIHNpemUgaXQgd2lsbCBhZGQKKwkgWE1JVCB0byBkaXJlY3Rpb24uICBpZiB3ZSBzZXQgdGhlIHJlbW90ZSBzZW5kIHNpemUgaXQgd2lsbAorCSBhZGQgUkVDViB0byB0aGUgZGlyZWN0aW9uLiAgbGlrZWx5IGFzIG5vdCB0aGlzIHdpbGwgbmVlZCBzb21lCisJIGFkZGl0aW9uYWwgdGhyb3VnaHQgKi8KKyAgICAgIGJyZWFrX2FyZ3NfZXhwbGljaXQob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkgeworCXNlbmRfc2l6ZSA9IGNvbnZlcnQoYXJnMSk7CisJaWYgKGltcGxpY2l0X2RpcmVjdGlvbikKKwkgIGRpcmVjdGlvbiB8PSBORVRQRVJGX1hNSVQ7CisgICAgICB9CisgICAgICBpZiAoYXJnMlswXSkgeworCXJlbW90ZV9zZW5kX3NpemVfcmVxID0gY29udmVydChhcmcyKTsKKwlpZiAoaW1wbGljaXRfZGlyZWN0aW9uKQorCSAgZGlyZWN0aW9uIHw9IE5FVFBFUkZfUkVDVjsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ00nOgorICAgICAgLyogc2V0IHRoZSByZWN2IHNpemVzLiAgaWYgd2Ugc2V0IHRoZSBsb2NhbCByZWN2IHNpemUgaXQgd2lsbAorCSBhZGQgUkVDViB0byBkaXJlY3Rpb24uICBpZiB3ZSBzZXQgdGhlIHJlbW90ZSByZWN2IHNpemUgaXQKKwkgd2lsbCBhZGQgWE1JVCB0byBkaXJlY3Rpb24gICovCisgICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOworICAgICAgaWYgKGFyZzFbMF0pIHsKKwlyZW1vdGVfcmVjdl9zaXplX3JlcSA9IGNvbnZlcnQoYXJnMSk7CisJaWYgKGltcGxpY2l0X2RpcmVjdGlvbikKKwkgIGRpcmVjdGlvbiB8PSBORVRQRVJGX1hNSVQ7CisgICAgICB9CisgICAgICBpZiAoYXJnMlswXSkgeworCXJlY3Zfc2l6ZSA9IGNvbnZlcnQoYXJnMik7CisJaWYgKGltcGxpY2l0X2RpcmVjdGlvbikKKwkgIGRpcmVjdGlvbiB8PSBORVRQRVJGX1JFQ1Y7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICduJzoKKyAgICAgIC8qIHNldCB0aGUgbG9jYWwgc29ja2V0IHR5cGUgKi8KKyAgICAgIGxvY2FsX2Nvbm5lY3RlZCA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlICdOJzoKKyAgICAgIC8qIHNldCB0aGUgcmVtb3RlIHNvY2tldCB0eXBlICovCisgICAgICByZW1vdGVfY29ubmVjdGVkID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ28nOgorICAgICAgbmV0cGVyZl9vdXRwdXRfbW9kZSA9IENTVjsKKyAgICAgIGxlZ2FjeSA9IDA7CisgICAgICAvKiBvYmxpdGVyYXRlIGFueSBwcmV2aW91cyBmaWxlIG5hbWUgKi8KKyAgICAgIGlmIChvdXRwdXRfc2VsZWN0aW9uX3NwZWMpIHsKKwlmcmVlKG91dHB1dF9zZWxlY3Rpb25fc3BlYyk7CisJb3V0cHV0X3NlbGVjdGlvbl9zcGVjID0gTlVMTDsKKyAgICAgIH0KKyAgICAgIGlmIChvdXRwdXRfc2VsZWN0aW9uX3NwZWMpIHsKKwlmcmVlKG91dHB1dF9zZWxlY3Rpb25fc3BlYyk7CisJb3V0cHV0X3NlbGVjdGlvbl9zcGVjID0gTlVMTDsKKyAgICAgIH0KKyAgICAgIGlmIChhcmd2W29wdGluZF0gJiYgKCh1bnNpZ25lZCBjaGFyKWFyZ3Zbb3B0aW5kXVswXSAhPSAnLScpKSB7CisJLyogd2UgYXNzdW1lIHRoYXQgd2hhdCBmb2xsb3dzIGlzIHRoZSBuYW1lIG9mIGEgZmlsZSB3aXRoIHRoZQorCSAgIGxpc3Qgb2YgZGVzaXJlZCBvdXRwdXQgdmFsdWVzLiAqLworCW91dHB1dF9zZWxlY3Rpb25fc3BlYyA9IHN0cmR1cChhcmd2W29wdGluZF0pOworCW9wdGluZCsrOworCS8qIHNwZWNpYWwgY2FzZSAtIGlmIHRoZSBmaWxlIG5hbWUgaXMgIj8iIHRoZW4gd2Ugd2lsbCBlbWl0IGEKKwkgICBsaXN0IG9mIHRoZSBhdmFpbGFibGUgb3V0cHV0cyAqLworCWlmIChzdHJjbXAob3V0cHV0X3NlbGVjdGlvbl9zcGVjLCI/IikgPT0gMCkgeworCSAgZHVtcF9uZXRwZXJmX291dHB1dF9jaG9pY2VzKHN0ZG91dCwxKTsKKwkgIGV4aXQoMSk7CisJfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAnTyc6CisgICAgICBuZXRwZXJmX291dHB1dF9tb2RlID0gSFVNQU47CisgICAgICBsZWdhY3kgPSAwOworICAgICAgLyogb2JsaXRlcmF0ZSBhbnkgcHJldmlvdXMgZmlsZSBuYW1lICovCisgICAgICBpZiAob3V0cHV0X3NlbGVjdGlvbl9zcGVjKSB7CisJZnJlZShvdXRwdXRfc2VsZWN0aW9uX3NwZWMpOworCW91dHB1dF9zZWxlY3Rpb25fc3BlYyA9IE5VTEw7CisgICAgICB9CisgICAgICBpZiAoYXJndltvcHRpbmRdICYmICgodW5zaWduZWQgY2hhcilhcmd2W29wdGluZF1bMF0gIT0gJy0nKSkgeworCS8qIHdlIGFzc3VtZSB0aGF0IHdoYXQgZm9sbG93cyBpcyB0aGUgbmFtZSBvZiBhIGZpbGUgd2l0aCB0aGUKKwkgICBsaXN0IG9mIGRlc2lyZWQgb3V0cHV0IHZhbHVlcyAqLworCW91dHB1dF9zZWxlY3Rpb25fc3BlYyA9IHN0cmR1cChhcmd2W29wdGluZF0pOworCW9wdGluZCsrOworCWlmIChzdHJjbXAob3V0cHV0X3NlbGVjdGlvbl9zcGVjLCI/IikgPT0gMCkgeworCSAgZHVtcF9uZXRwZXJmX291dHB1dF9jaG9pY2VzKHN0ZG91dCwwKTsKKwkgIGV4aXQoMSk7CisJfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAncCc6CisgICAgICAvKiBzZXQgdGhlIG1pbiBhbmQgbWF4IHBvcnQgbnVtYmVycyBmb3IgdGhlIFRDUF9DUlIgYW5kIFRDUF9UUlIgKi8KKyAgICAgIC8qIHRlc3RzLiAqLworICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCWNsaWVudF9wb3J0X21pbiA9IGF0b2koYXJnMSk7CisgICAgICBpZiAoYXJnMlswXSkKKwljbGllbnRfcG9ydF9tYXggPSBhdG9pKGFyZzIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnUCc6CisgICAgICAvKiBzZXQgdGhlIGxvY2FsIGFuZCByZW1vdGUgZGF0YSBwb3J0IG51bWJlcnMgZm9yIHRoZSB0ZXN0cyB0bworCSBhbGxvdyB0aGVtIHRvIHJ1biB0aHJvdWdoIHRob3NlIGJsYW5rZXR5IGJsYW5rIGVuZC10by1lbmQKKwkgYnJlYWtpbmcgZmlyZXdhbGxzLiByYWogMjAwNC0wNi0xNSAqLworICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCXN0cm5jcHkobG9jYWxfZGF0YV9wb3J0LGFyZzEsc2l6ZW9mKGxvY2FsX2RhdGFfcG9ydCkpOworICAgICAgaWYgKGFyZzJbMF0pCisJc3RybmNweShyZW1vdGVfZGF0YV9wb3J0LGFyZzIsc2l6ZW9mKHJlbW90ZV9kYXRhX3BvcnQpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3InOgorICAgICAgLyogc2V0IHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHNpemVzLiBzZXR0aW5nIHJlcXVlc3QvcmVzcG9uc2UKKwkgc2l6ZXMgaW1wbGljaXRseSBzZXRzIGRpcmVjdGlvbiB0byBYTUlUIGFuZCBSRUNWICovCisgICAgICBpZiAoaW1wbGljaXRfZGlyZWN0aW9uKSB7CisJZGlyZWN0aW9uIHw9IE5FVFBFUkZfWE1JVDsKKwlkaXJlY3Rpb24gfD0gTkVUUEVSRl9SRUNWOworICAgICAgfQorICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKKyAgICAgIGlmIChhcmcxWzBdKQorCXJlcV9zaXplID0gY29udmVydChhcmcxKTsKKyAgICAgIGlmIChhcmcyWzBdKQorCXJzcF9zaXplID0gY29udmVydChhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1InOgorICAgICAgcm91dGluZ19hbGxvd2VkID0gYXRvaShvcHRhcmcpOworICAgICAgaGF2ZV9SX29wdGlvbiA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlICdzJzoKKyAgICAgIC8qIHNldCBsb2NhbCBzb2NrZXQgc2l6ZXMgKi8KKyAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkKKwlsc3Nfc2l6ZV9yZXEgPSBjb252ZXJ0KGFyZzEpOworICAgICAgaWYgKGFyZzJbMF0pCisJbHNyX3NpemVfcmVxID0gY29udmVydChhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1MnOgorICAgICAgLyogc2V0IHJlbW90ZSBzb2NrZXQgc2l6ZXMgKi8KKyAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CisgICAgICBpZiAoYXJnMVswXSkKKwlyc3Nfc2l6ZV9yZXEgPSBjb252ZXJ0KGFyZzEpOworICAgICAgaWYgKGFyZzJbMF0pCisJcnNyX3NpemVfcmVxID0gY29udmVydChhcmcyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3QnOgorICAgICAgLyogc2V0IHRoZSBzb2NrZXQgdHlwZSAqLworICAgICAgc29ja2V0X3R5cGUgPSBwYXJzZV9zb2NrZXRfdHlwZShvcHRhcmcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnVCc6CisgICAgICAvKiBzZXQgdGhlIHByb3RvY29sIC0gYWthICJUcmFuc3BvcnQiICovCisgICAgICBwcm90b2NvbCA9IHBhcnNlX3Byb3RvY29sKG9wdGFyZyk7CisgICAgICBicmVhazsKKyAgICBjYXNlICd1JzoKKyAgICAgIC8qIHVzZSB0aGUgc3VwcGxpZWQgc3RyaW5nIGFzIHRoZSBVVUlEIGZvciB0aGlzIHRlc3QuIGF0IHNvbWUKKwkgcG9pbnQgd2UgbWF5IHdhbnQgdG8gc2FuaXR5IGNoZWNrIHRoZSBzdHJpbmcgd2UgYXJlIGdpdmVuIGJ1dAorCSBmb3Igbm93IHdlIHdvbid0IHdvcnJ5IGFib3V0IGl0ICovCisgICAgICBzdHJuY3B5KHRlc3RfdXVpZCxvcHRhcmcsc2l6ZW9mKHRlc3RfdXVpZCkpOworICAgICAgLyogc3RybmNweSBtYXkgbGVhdmUgdXMgd2l0aCBhIHN0cmluZyB3aXRob3V0IGEgbnVsbCBhdCB0aGUgZW5kICovCisgICAgICB0ZXN0X3V1aWRbc2l6ZW9mKHRlc3RfdXVpZCkgLSAxXSA9IDA7CisgICAgICBoYXZlX3V1aWQgPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnVSc6CisgICAgICAvKiB3ZSBkb24ndCB3YW50IHRvIGdpdmUtdXAgb24gdGhlIGZhaWx1cmUgb2YgYSBjb25uZWN0KCkgY2FsbCAqLworICAgICAgZG9udF9naXZlX3VwID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1cnOgorICAgICAgLyogc2V0IHRoZSAid2lkdGgiIG9mIHRoZSB1c2VyIHNwYWNlIGRhdGEgKi8KKyAgICAgIC8qIGJ1ZmZlci4gVGhpcyB3aWxsIGJlIHRoZSBudW1iZXIgb2YgKi8KKyAgICAgIC8qIHNlbmRfc2l6ZSBidWZmZXJzIG1hbGxvYydkIGluIHRoZSAqLworICAgICAgLyogKl9TVFJFQU0gdGVzdC4gSXQgbWF5IGJlIGVuaGFuY2VkIHRvIHNldCAqLworICAgICAgLyogYm90aCBzZW5kIGFuZCByZWNlaXZlICJ3aWR0aHMiIGJ1dCBmb3Igbm93ICovCisgICAgICAvKiBpdCBpcyBqdXN0IHRoZSBzZW5kaW5nICpfU1RSRUFNLiAqLworICAgICAgc2VuZF93aWR0aCA9IGNvbnZlcnQob3B0YXJnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1YnIDoKKyAgICAgIC8qIHdlIHdhbnQgdG8gZG8gY29weSBhdm9pZGFuY2UgYW5kIHdpbGwgc2V0ICovCisgICAgICAvKiBpdCBmb3IgZXZlcnl0aGluZywgZXZlcnl3aGVyZSwgaWYgd2UgcmVhbGx5ICovCisgICAgICAvKiBjYW4uIG9mIGNvdXJzZSwgd2UgZG9uJ3Qga25vdyBhbnl0aGluZyAqLworICAgICAgLyogYWJvdXQgdGhlIHJlbW90ZS4uLiAqLworICAgICAgbG9jX3NuZGF2b2lkID0gMTsKKyAgICAgIGxvY19yY3Zhdm9pZCA9IDE7CisgICAgICByZW1fc25kYXZvaWQgPSAxOworICAgICAgcmVtX3JjdmF2b2lkID0gMTsKKyAgICAgIGJyZWFrOworICAgIH07CisgIH0KKworICAvKiBnZW5lcmF0ZSB0aGUgVVVJRCBmb3IgdGhpcyB0ZXN0IGlmIHRoZSB1c2VyIGhhcyBub3Qgc3VwcGxpZWQgaXQgKi8KKyAgaWYgKCFoYXZlX3V1aWQpCisgICAgZ2V0X3V1aWRfc3RyaW5nKHRlc3RfdXVpZCxzaXplb2YodGVzdF91dWlkKSk7CisKKyAgcHJvdG9jb2xfc3RyID0gcHJvdG9jb2xfdG9fc3RyKHByb3RvY29sKTsKKyAgLyogb2ssIGlmIHdlIGhhdmUgZ29uZSB0aHJvdWdoIGFsbCB0aGF0LCBhbmQgZGlyZWN0aW9uIGlzIHN0aWxsCisgICAgIHplcm8sIGxldCB1cyBzZWUgaWYgaXQgbmVlZHMgdG8gYmUgc2V0IHRvIHNvbWV0aGluZyBlbHNlLiAqLworICBpZiAoKDAgPT0gZGlyZWN0aW9uKSAmJiAoIWNvbm5lY3Rpb25fdGVzdCkpIGRpcmVjdGlvbiA9IE5FVFBFUkZfWE1JVDsKKyAgZGlyZWN0aW9uX3N0ciA9IGRpcmVjdGlvbl90b19zdHIoZGlyZWN0aW9uKTsKKworICAvKiB0byBjb3ZlciB0aGUgYmFja3NpZGUgb2YgYmxpdGhlcmluZyBpZGlvdHMgd2hvIHJ1biB1bmlkaXJlY3Rpb25hbAorICAgICBVRFAgdGVzdHMgb24gdGVzdCBzZXR1cHMgd2hlcmUgdGhleSBtaWdodCB0cmFzaCB0aGVpciBjb3Jwb3JhdGUKKyAgICAgV0FOLCB3ZSBncnVkZ2luZ2x5IHByb3ZpZGUgYSBzYWZldHkgbGF0Y2guIHVubGVzcyBleHBsaWNpdGx5CisgICAgIGVuYWJsZWQsIFVEUF9TVFJFQU0vVURQX01BRVJUUyBzb2NrZXRzIHdpbGwgbm90IGFsbG93IHRoZW1zZWx2ZXMKKyAgICAgdG8gYmUgcm91dGVkIHZpYSBhIGdhdGV3YXkuIHJhaiAyMDA5MTAyNiAqLworCisgIGlmICgoIWhhdmVfUl9vcHRpb24pICYmCisgICAgICAocHJvdG9jb2wgPT0gSVBQUk9UT19VRFApICYmCisgICAgICAoIU5FVFBFUkZfSVNfUlIoZGlyZWN0aW9uKSkpIHsKKyAgICByb3V0aW5nX2FsbG93ZWQgPSAwOworICB9CisKKyAgLyogc29tZSBvdGhlciBzYW5pdHkgY2hlY2tzIHdlIG5lZWQgdG8gbWFrZSB3b3VsZCBpbmNsdWRlIHN0dWZmIHdoZW4KKyAgICAgdGhlIHVzZXIgaGFzIHNldCAtbSBhbmQgLU0gc3VjaCB0aGF0IGJvdGggWE1JVCBhbmQgUkVDViBhcmUgc2V0CisgICAgIGFuZCBoYXMgbm90IHNldCAtci4gaW5pdGlhbGx5IHdlIHdpbGwgbm90IGFsbG93IHRoYXQuICBhdCBzb21lCisgICAgIHBvaW50IHdlIG1pZ2h0IGFsbG93IHRoYXQgaWYgdGhlIHVzZXIgaGFzIGFsc28gc2V0IC1yLCBidXQgdW50aWwKKyAgICAgdGhlbiB0aGUgY29kZSB3aWxsIHNpbXBseSBpZ25vcmUgdGhlIHZhbHVlcyBmcm9tIC1tIGFuZCAtTSB3aGVuCisgICAgIC1yIGlzIHNldC4gKi8KKworI2lmIGRlZmluZWQoV0FOVF9ISVNUT0dSQU0pCisgIGlmICh2ZXJib3NpdHkgPiAxKSBrZWVwX2hpc3RvZ3JhbSA9IDE7CisjZW5kaWYKKworICAvKiBkaWQgdGhlIHVzZXIgdXNlIC1kIDYgYnV0IG5vdCBzZXQgLXI/ICovCisgIGlmIChORVRQRVJGX0lTX1JSKGRpcmVjdGlvbikgJiYgIU5FVFBFUkZfQ0MoZGlyZWN0aW9uKSkgeworICAgIGlmIChyZXFfc2l6ZSA9PSAtMSkKKyAgICAgIHJlcV9zaXplID0gMTsKKyAgICBpZiAocnNwX3NpemUgPT0gLTEpCisgICAgICByc3Bfc2l6ZSA9IDE7CisgIH0KKworICAvKiBvaywgdGltZSB0byBzYW5pdHkgY2hlY2sgdGhlIG91dHB1dCB1bml0cyAqLworICBpZiAoJz8nID09IGxpYmZtdCkgeworICAgIC8qIGlmIHRoaXMgaXMgYSBSUiB0ZXN0IHRoZW4gc2V0IGl0IHRvICd4JyBmb3IgdHJhbnNhY3Rpb25zICovCisgICAgaWYgKE5FVFBFUkZfSVNfUlIoZGlyZWN0aW9uKSkgeworICAgICAgbGliZm10ID0gJ3gnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGxpYmZtdCA9ICdtJzsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoJ3gnID09IGxpYmZtdCkgeworICAgIC8qIG5vdywgYSBmb3JtYXQgb2YgJ3gnIG1ha2VzIG5vIHNlbnNlIGZvciBhbnl0aGluZyBvdGhlciB0aGFuCisgICAgICAgYW4gUlIgdGVzdC4gaWYgc29tZW9uZSBoYXMgYmVlbiBzaWxseSBlbm91Z2ggdG8gdHJ5IHRvIHNldAorICAgICAgIHRoYXQsIHdlIHdpbGwgcmVzZXQgaXQgc2lsZW50bHkgdG8gZGVmYXVsdCAtIG5hbWVseSAnbScgKi8KKyAgICBpZiAoIU5FVFBFUkZfSVNfUlIoZGlyZWN0aW9uKSkgeworICAgICAgbGliZm10ID0gJ20nOworICAgIH0KKyAgfQorCisgIC8qIHRoaXMgbmVlZHMgdG8gYmUgc3RyZHVwIDopICovCisgIHRocnVwdXRfZm9ybWF0X3N0ciA9IHN0cmR1cChmb3JtYXRfdW5pdHMoKSk7CisKKyAgLyogc28sIGlmIHRoZXJlIGlzIHRvIGJlIG5vIGNvbnRyb2wgY29ubmVjdGlvbiwgd2Ugd2FudCB0byBoYXZlIHNvbWUKKyAgICAgZGlmZmVyZW50IHNldHRpbmdzIGZvciBhIGZldyB0aGluZ3MgKi8KKworICBpZiAobm9fY29udHJvbCkgeworICAgIGlmIChzdHJjbXAocmVtb3RlX2RhdGFfcG9ydCwiMCIpID09IDApIHsKKyAgICAgIC8qIHdlIG5lZWQgdG8gc2VsZWN0IGVpdGhlciB0aGUgZGlzY2FyZCBwb3J0LCBlY2hvIHBvcnQgb3IKKwkgY2hhcmdlbiBwb3J0IGRlZGVwZW5kaW5nIG9uIHRoZSB0ZXN0IGRpcmVjdGlvbi4gcmFqCisJIDIwMTAxMjIwICovCisgICAgICBpZiAoTkVUUEVSRl9YTUlUX09OTFkoZGlyZWN0aW9uKSkgeworCXN0cm5jcHkocmVtb3RlX2RhdGFfcG9ydCwiZGlzY2FyZCIsc2l6ZW9mKHJlbW90ZV9kYXRhX3BvcnQpKTsKKwlyZWN2X3NpemUgPSAtMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKE5FVFBFUkZfUkVDVl9PTkxZKGRpcmVjdGlvbikpIHsKKwlzdHJuY3B5KHJlbW90ZV9kYXRhX3BvcnQsImNoYXJnZW4iLHNpemVvZihyZW1vdGVfZGF0YV9wb3J0KSk7CisJc2VuZF9zaXplID0gLTE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChORVRQRVJGX0lTX1JSKGRpcmVjdGlvbikgfHwgTkVUUEVSRl9DQyhkaXJlY3Rpb24pKSB7CisJc3RybmNweShyZW1vdGVfZGF0YV9wb3J0LCJlY2hvIixzaXplb2YocmVtb3RlX2RhdGFfcG9ydCkpOworCXJzcF9zaXplID0gcmVxX3NpemU7CisgICAgICB9CisgICAgICBlbHNlIHsKKwlwcmludGYoIk5vIGRlZmF1bHQgcG9ydCBrbm93biBmb3IgdGhlICVzIHRlc3QsIHBsZWFzZSBzZXQgb25lIHlvdXJzZWxmXG4iLHRlc3RfbmFtZSk7CisJZXhpdCgtMSk7CisgICAgICB9CisgICAgfQorICAgIHJlbW90ZV9kYXRhX3BvcnRbc2l6ZW9mKHJlbW90ZV9kYXRhX3BvcnQpIC0gMV0gPSAnXDAnOworCisgICAgLyogSSBnbyBiYWNrIGFuZCBmb3J0aCBvbiB3aGV0aGVyIHRoZXNlIHNob3VsZCBiZWNvbWUgLTEgb3IgaWYKKyAgICAgICB0aGV5IHNob3VsZCBiZWNvbWUgMCBmb3IgYSBub19jb250cm9sIHRlc3QuIHdoYXQgZG8geW91IHRoaW5rPworICAgICAgIHJhaiAyMDA2LTAyLTA4ICovCisKKyAgICByZW1fcmN2YXZvaWQgPSAtMTsKKyAgICByZW1fc25kYXZvaWQgPSAtMTsKKyAgICByc3Nfc2l6ZV9yZXEgPSAtMTsKKyAgICByc3Jfc2l6ZV9yZXEgPSAtMTsKKyAgICByZW1fbm9kZWxheSA9IC0xOworCisgIH0KKyAgLyogc28sIGRpZCB0aGUgdXNlciByZXF1ZXN0IGEgZmV3IHRoaW5ncyBpbXBsaWNpdGx5IHZpYSBvdXRwdXQgc2VsZWN0aW9uPyAqLworICBpZiAoIWxlZ2FjeSkKKyAgICBwcmludF9vbW5pX2luaXQoKTsKKworICBpZiAoZGVzaXJlZF9vdXRwdXRfZ3JvdXBzICYgT01OSV9XQU5UX1NUQVRTKSB7CisgICAga2VlcF9zdGF0aXN0aWNzID0gMTsKKyAgICBrZWVwX2hpc3RvZ3JhbSA9IDE7CisgIH0KKworfQorCisjZW5kaWYgLyogV0FOVF9PTU5JICovCmRpZmYgLS1naXQgYS9uZXR0ZXN0X3NjdHAuYyBiL3NyYy9uZXR0ZXN0X3NjdHAuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBuZXR0ZXN0X3NjdHAuYwpyZW5hbWUgdG8gc3JjL25ldHRlc3Rfc2N0cC5jCmluZGV4IDdjZmNkOWYuLmIyNGFmM2IgMTAwNjQ0Ci0tLSBhL25ldHRlc3Rfc2N0cC5jCisrKyBiL3NyYy9uZXR0ZXN0X3NjdHAuYwpAQCAtMSw2ICsxLDYgQEAKICNpZm5kZWYgbGludAogY2hhcgluZXR0ZXN0X3NjdHBbXT0iXAotQCgjKW5ldHRlc3Rfc2N0cC5jIChjKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEhld2xldHQtUGFja2FyZCBDby4gVmVyc2lvbiAyLjQuMyI7CitAKCMpbmV0dGVzdF9zY3RwLmMgKGMpIENvcHlyaWdodCAyMDA1LTIwMTIgSGV3bGV0dC1QYWNrYXJkIENvLiBWZXJzaW9uIDIuNi4wIjsKICNlbHNlCiAjZGVmaW5lIERJUlRZCiAjZGVmaW5lIFdBTlRfSElTVE9HUkFNCkBAIC0xMDIsOCArMTAyLDYgQEAKIHN0YXRpYyAgY2hhciAgcmVtb3RlX2NwdV9tZXRob2Q7CiAKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQotc3RhdGljIHN0cnVjdCB0aW1ldmFsIHRpbWVfb25lOwotc3RhdGljIHN0cnVjdCB0aW1ldmFsIHRpbWVfdHdvOwogc3RhdGljIEhJU1QgdGltZV9oaXN0OwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKQEAgLTE0NywxMiArMTQ1LDEwIEBACiAgLyogY2FsbGVkIG91dHNpZGUgb2YgdGhlIHRpbWluZyBsb29wICovCiBzdGF0aWMKIHZvaWQKLWdldF9zY3RwX2luZm8oc29ja2V0LCBtc3MpCi0gICAgIGludCBzb2NrZXQ7Ci0gICAgIGludCAqbXNzOworZ2V0X3NjdHBfaW5mbyggaW50IHNvY2tldCwgaW50ICptc3MgKQogewogCi0gIGludCBzb2NrX29wdF9sZW47CisgIHNvY2tsZW5fdCBzb2NrX29wdF9sZW47CiAKICAgaWYgKHNjdHBfb3B0X2luZm8oc29ja2V0LAogCQkgICAgMCwKQEAgLTE2Niw5ICsxNjIsNyBAQAogDAogc3RhdGljCiB2b2lkCi1zY3RwX2VuYWJsZV9ldmVudHMoc29ja2V0LCBldl9tYXNrKQotICAgIGludCBzb2NrZXQ7Ci0gICAgaW50IGV2X21hc2s7CitzY3RwX2VuYWJsZV9ldmVudHMoIGludCBzb2NrZXQsIGludCBldl9tYXNrICkKIHsKICAgICBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgZXY7CiAKQEAgLTIyMiw5ICsyMTYsNyBAQAogCiBzdGF0aWMKIHNjdHBfZGlzcG9zaXRpb25fdAotc2N0cF9wcm9jZXNzX2V2ZW50KHNvY2tldCwgYnVmKQotICAgIGludCBzb2NrZXQ7Ci0gICAgdm9pZCAqYnVmOworc2N0cF9wcm9jZXNzX2V2ZW50KCBpbnQgc29ja2V0LCB2b2lkICpidWYgKQogewogCiAgICAgc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlICpzYWM7CkBAIC0zMjIsOCArMzE0LDcgQEAKIAogCiB2b2lkIAotc2VuZF9zY3RwX3N0cmVhbShyZW1vdGVfaG9zdCkKLWNoYXIJcmVtb3RlX2hvc3RbXTsKK3NlbmRfc2N0cF9zdHJlYW0oIGNoYXIgcmVtb3RlX2hvc3RbXSApCiB7CiAgIAogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKQEAgLTQwOCw4ICszOTksNiBAQAogICAKICAgc3RydWN0IGFkZHJpbmZvCSpyZW1vdGVfcmVzOwogICBzdHJ1Y3QgYWRkcmluZm8JKmxvY2FsX3JlczsKLSAgc3RydWN0IGFkZHJpbmZvCSpsb2NhbF9yZW1vdGVfcmVzOwotICBzdHJ1Y3QgYWRkcmluZm8JKmxvY2FsX2xvY2FsX3JlczsKIAogICBzdHJ1Y3QJc2N0cF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKnNjdHBfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlzY3RwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QJKnNjdHBfc3RyZWFtX3Jlc3BvbnNlOwpAQCAtNDIzLDcgKzQxMiw3IEBACiAgICAgKHN0cnVjdCBzY3RwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQotICB0aW1lX2hpc3QgPSBISVNUX25ldygpOworICB0aW1lX2hpc3QgPSBISVNUX25ld19uKDEpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAgIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUgKi8KICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwpAQCAtNzE1LDcgKzcwNCw3IEBACiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIC8qIHRpbWVzdGFtcCBqdXN0IGJlZm9yZSB3ZSBnbyBpbnRvIHNlbmQgYW5kIHRoZW4gYWdhaW4ganVzdCBhZnRlciAqLwogICAgICAgLyogd2UgY29tZSBvdXQgcmFqIDgvOTQgKi8KLSAgICAgIEhJU1RfdGltZXN0YW1wKCZ0aW1lX29uZSk7CisgICAgICBISVNUX3RpbWVzdGFtcF9zdGFydCh0aW1lX2hpc3QpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAgICAgICAKICAgICAgIHdoaWxlICgobGVuPXNjdHBfc2VuZG1zZyhzZW5kX3NvY2tldCwKQEAgLTczOSw4ICs3MjgsNyBAQAogCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIC8qIHRpbWVzdGFtcCB0aGUgZXhpdCBmcm9tIHRoZSBzZW5kIGNhbGwgYW5kIHVwZGF0ZSB0aGUgaGlzdG9ncmFtICovCi0gICAgICBISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwotICAgICAgSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKKyAgICAgIEhJU1RfdGltZXN0YW1wX3N0b3BfYWRkKHRpbWVfaGlzdCk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8gICAgICAKIAogI2lmZGVmIFdBTlRfSU5URVJWQUxTICAgICAgCkBAIC0xMDU4LDEzICsxMDQ2LDEzIEBACiAvKiBkaWRuJ3QgZmVlbCBpdCB3YXMgbmVjZXNzYXJ5LiAqLwogCiB2b2lkCi1yZWN2X3NjdHBfc3RyZWFtKCkKK3JlY3Zfc2N0cF9zdHJlYW0oIHZvaWQgKQogewogICAKICAgc3RydWN0IHNvY2thZGRyX2luIG15YWRkcl9pbjsgLyogbmVlZGVkIHRvIGdldCBwb3J0IG51bWJlciAqLwogICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBwZWVyYWRkcjsJLyogdXNlZCBpbiBhY2NlcHQgKi8KICAgaW50CXNfbGlzdGVuLHNfZGF0YTsKLSAgaW50IAlhZGRybGVuOworICBzb2NrbGVuX3QgCWFkZHJsZW47CiAgIGludAlsZW47CiAgIHVuc2lnbmVkIGludAlyZWNlaXZlX2NhbGxzOwogICBmbG9hdAllbGFwc2VkX3RpbWU7CkBAIC0xNDU4LDggKzE0NDYsNyBAQAogCiAKIHZvaWQgCi1zZW5kX3NjdHBfc3RyZWFtXzF0b01hbnkocmVtb3RlX2hvc3QpCi1jaGFyCXJlbW90ZV9ob3N0W107CitzZW5kX3NjdHBfc3RyZWFtXzF0b01hbnkoIGNoYXIgcmVtb3RlX2hvc3RbXSApCiB7CiAgIAogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKQEAgLTE1MzMsNyArMTUyMCw2IEBACiAjaWZkZWYgRElSVFkKICAgaW50CWk7CiAjZW5kaWYgLyogRElSVFkgKi8KLSAgaW50IGo7CiAKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKQEAgLTE1NDQsOCArMTUzMCw2IEBACiAgIAogICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwotICBzdHJ1Y3QgYWRkcmluZm8gKmxhc3RfcmVtb3RlX3JlczsKLSAgc3RydWN0IGFkZHJpbmZvICpsYXN0X2xvY2FsX3JlczsKIAogICBzdHJ1Y3QJc2N0cF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKnNjdHBfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlzY3RwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QJKnNjdHBfc3RyZWFtX3Jlc3BvbnNlOwpAQCAtMTU1OSw3ICsxNTQzLDcgQEAKICAgICAoc3RydWN0IHNjdHBfc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKIAogI2lmZGVmIFdBTlRfSElTVE9HUkFNCi0gIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CisgIHRpbWVfaGlzdCA9IEhJU1RfbmV3X24oMSk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KICAgCiAgIGNvbXBsZXRlX2FkZHJpbmZvcygmcmVtb3RlX3JlcywKQEAgLTE4NTgsNyArMTg0Miw3IEBACiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIC8qIHRpbWVzdGFtcCBqdXN0IGJlZm9yZSB3ZSBnbyBpbnRvIHNlbmQgYW5kIHRoZW4gYWdhaW4ganVzdCBhZnRlciAqLwogICAgICAgLyogd2UgY29tZSBvdXQgcmFqIDgvOTQgKi8KLSAgICAgIGdldHRpbWVvZmRheSgmdGltZV9vbmUsTlVMTCk7CisgICAgICBISVNUX3RpbWVzdGFtcF9zdGFydCh0aW1lX2hpc3QpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAgICAgICAKICAgICAgIGZvciAoaiA9IDA7IGogPCBudW1fYXNzb2NpYXRpb25zOyBqKyspIHsKQEAgLTE4ODksOCArMTg3Myw3IEBACiAKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICAgICAgLyogdGltZXN0YW1wIHRoZSBleGl0IGZyb20gdGhlIHNlbmQgY2FsbCBhbmQgdXBkYXRlIHRoZSBoaXN0b2dyYW0gKi8KLSAgICAgIGdldHRpbWVvZmRheSgmdGltZV90d28sTlVMTCk7Ci0gICAgICBISVNUX2FkZCh0aW1lX2hpc3QsZGVsdGFfbWljcm8oJnRpbWVfb25lLCZ0aW1lX3R3bykpOworICAgICAgSElTVF90aW1lc3RhbXBfc3RvcF9hZGQodGltZV9oaXN0KTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLyAgICAgIAogCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMgICAgICAKQEAgLTIyMjAsMTIgKzIyMDMsMTIgQEAKIC8qIGRpZG4ndCBmZWVsIGl0IHdhcyBuZWNlc3NhcnkuICovCiAKIHZvaWQKLXJlY3Zfc2N0cF9zdHJlYW1fMXRvTWFueSgpCityZWN2X3NjdHBfc3RyZWFtXzF0b01hbnkoIHZvaWQgKQogewogICAKICAgc3RydWN0IHNvY2thZGRyX2luIG15YWRkcl9pbjsKICAgaW50CXNfcmVjdjsKLSAgaW50IAlhZGRybGVuOworICBzb2NrbGVuX3QgCWFkZHJsZW47CiAgIGludAlsZW47CiAgIHVuc2lnbmVkIGludAlyZWNlaXZlX2NhbGxzOwogICBmbG9hdAllbGFwc2VkX3RpbWU7CkBAIC0yNTc0LDggKzI1NTcsNyBAQAogIC8qIHRlc3QuICovCiAKIHZvaWQKLXNlbmRfc2N0cF9ycihyZW1vdGVfaG9zdCkKLSAgICAgY2hhcglyZW1vdGVfaG9zdFtdOworc2VuZF9zY3RwX3JyKCBjaGFyIHJlbW90ZV9ob3N0W10gKQogewogICAKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCkBAIC0yNjM3LDcgKzI2MTksNiBAQAogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAgIGRvdWJsZQl0aHJ1cHV0OwogCi0gIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHBlZXI7CiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CiAKQEAgLTI2NTgsNyArMjYzOSw3IEBACiAgICAgKHN0cnVjdCBzY3RwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KLSAgdGltZV9oaXN0ID0gSElTVF9uZXcoKTsKKyAgdGltZV9oaXN0ID0gSElTVF9uZXdfbigxKTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogCiAgIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUgKi8KQEAgLTI5MTUsNyArMjg5Niw3IEBACiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIC8qIHRpbWVzdGFtcCBqdXN0IGJlZm9yZSBvdXIgY2FsbCB0byBzZW5kLCBhbmQgdGhlbiBhZ2FpbiBqdXN0ICovCiAgICAgICAvKiBhZnRlciB0aGUgcmVjZWl2ZSByYWogOC85NCAqLwotICAgICAgSElTVF90aW1lc3RhbXAoJnRpbWVfb25lKTsKKyAgICAgIEhJU1RfdGltZXN0YW1wX3N0YXJ0KHRpbWVfaGlzdCk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KICAgICAgIAogICAgICAgd2hpbGUgKChsZW49c2N0cF9zZW5kbXNnKHNlbmRfc29ja2V0LApAQCAtMjk3Myw4ICsyOTU0LDcgQEAKICAgICAgIH0KICAgICAgIAogI2lmZGVmIFdBTlRfSElTVE9HUkFNCi0gICAgICBISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwotICAgICAgSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKKyAgICAgIEhJU1RfdGltZXN0YW1wX3N0b3BfYWRkKHRpbWVfaGlzdCk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KICNpZmRlZiBXQU5UX0lOVEVSVkFMUyAgICAgIAogICAgICAgaWYgKGRlbW9fbW9kZSkgewpAQCAtMzI1NCw3ICszMjM0LDcgQEAKICAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgcmVjZWl2ZSAobmV0c2VydmVyKSBzaWRlIG9mIGEgVENQX1JSICovCiAgLyogdGVzdCAqLwogdm9pZAotcmVjdl9zY3RwX3JyKCkKK3JlY3Zfc2N0cF9yciggdm9pZCApCiB7CiAgIAogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKQEAgLTMyNjYsNyArMzI0Niw3IEBACiAKICAgc3RydWN0IHNvY2thZGRyX2luICAgICAgICBteWFkZHJfaW4sIHBlZXJhZGRyX2luOwogICBpbnQJc19saXN0ZW4sIHNfZGF0YTsKLSAgaW50IAlhZGRybGVuOworICBzb2NrbGVuX3QgCWFkZHJsZW47CiAgIGNoYXIJKnRlbXBfbWVzc2FnZV9wdHI7CiAgIGludAl0cmFuc19yZWNlaXZlZDsKICAgaW50CXRyYW5zX3JlbWFpbmluZzsKQEAgLTM2MjcsOCArMzYwNyw3IEBACiAgICBTQ1RQX1JSXzFUT01BTlkgdGVzdCAqLwogCiB2b2lkCi1zZW5kX3NjdHBfcnJfMXRvTWFueShyZW1vdGVfaG9zdCkKLSAgICAgY2hhcglyZW1vdGVfaG9zdFtdOworc2VuZF9zY3RwX3JyXzF0b01hbnkoIGNoYXIgcmVtb3RlX2hvc3RbXSApCiB7CiAgIAogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKQEAgLTM2OTAsNyArMzY2OSw2IEBACiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlCXRocnVwdXQ7CiAKLSAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgcGVlcjsKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKIApAQCAtMzcxMSw3ICszNjg5LDcgQEAKICAgICAoc3RydWN0IHNjdHBfcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICAKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQotICB0aW1lX2hpc3QgPSBISVNUX25ldygpOworICB0aW1lX2hpc3QgPSBISVNUX25ld19uKDEpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKICAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZSAqLwpAQCAtMzk4Niw3ICszOTY0LDcgQEAKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogCS8qIHRpbWVzdGFtcCBqdXN0IGJlZm9yZSBvdXIgY2FsbCB0byBzZW5kLCBhbmQgdGhlbiBhZ2FpbiBqdXN0ICovCiAJLyogYWZ0ZXIgdGhlIHJlY2VpdmUgcmFqIDgvOTQgKi8KLQlnZXR0aW1lb2ZkYXkoJnRpbWVfb25lLE5VTEwpOworCUhJU1RfdGltZXN0YW1wX3N0YXJ0KHRpbWVfaGlzdCk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAkKIAl3aGlsZSAoKGxlbj1zY3RwX3NlbmRtc2coc2VuZF9zb2NrZXRbal0sCkBAIC00MDQ2LDggKzQwMjQsNyBAQAogCX0KIAkKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQotCWdldHRpbWVvZmRheSgmdGltZV90d28sTlVMTCk7Ci0JSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKKwlISVNUX3RpbWVzdGFtcF9zdG9wX2FkZCh0aW1lX2hpc3QpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAJCiAJbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCkBAIC00MzA2LDcgKzQyODMsNyBAQAogIC8qIHRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSByZWNlaXZlIChuZXRzZXJ2ZXIpIHNpZGUgb2YgYSBUQ1BfUlIgKi8KICAvKiB0ZXN0ICovCiB2b2lkCi1yZWN2X3NjdHBfcnJfMXRvTWFueSgpCityZWN2X3NjdHBfcnJfMXRvTWFueSggdm9pZCApCiB7CiAgIAogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKQEAgLTQzMjEsOCArNDI5OCw3IEBACiAgIGludCAgICBtc2dfZmxhZ3M7CiAKICAgaW50CXNfcmN2OwotICBpbnQgCWFkZHJsZW47Ci0gIGNoYXIJKnRlbXBfbWVzc2FnZV9wdHI7CisgIHNvY2tsZW5fdCAJYWRkcmxlbjsKICAgaW50CXRyYW5zX3JlY2VpdmVkOwogICBpbnQJdHJhbnNfcmVtYWluaW5nOwogICBpbnQJYnl0ZXNfc2VudDsKQEAgLTQ1NjQsNyArNDU0MCw3IEBACiAJICAvKiB0aGUgdGltZXIgcG9wcGVkICovCiAJICB0aW1lZF9vdXQgPSAxOwogCSAgYnJlYWs7Ci0JfSBlbHNlIGlmIChub25fYmxvY2sgJiBlcnJubyA9PSBFQUdBSU4pIHsKKwl9IGVsc2UgaWYgKG5vbl9ibG9jayAmJiBlcnJubyA9PSBFQUdBSU4pIHsKIAkgICAgLyogZG8gcmVjdm1zZyBhZ2FpbiAqLwogCSAgICBjb250aW51ZTsKIAl9CkBAIC00NjczLDE4ICs0NjQ5LDE2IEBACiAKIAogdm9pZAotcHJpbnRfc2N0cF91c2FnZSgpCitwcmludF9zY3RwX3VzYWdlKCB2b2lkICkKIHsKIAogICBwcmludGYoIiVzIixzY3RwX3VzYWdlKTsKICAgZXhpdCgxKTsKIAogfQotdm9pZAotc2Nhbl9zY3RwX2FyZ3MoYXJnYywgYXJndikKLSAgICAgaW50CWFyZ2M7Ci0gICAgIGNoYXIJKmFyZ3ZbXTsKIAordm9pZAorc2Nhbl9zY3RwX2FyZ3MoIGludCBhcmdjLCBjaGFyICphcmd2W10gKQogewogCiAjZGVmaW5lIFNPQ0tFVFNfQVJHUyAiQkRoSDpJOkw6bTpNOlA6cjpzOlM6Vk46VDo0NiIKZGlmZiAtLWdpdCBhL25ldHRlc3Rfc2N0cC5oIGIvc3JjL25ldHRlc3Rfc2N0cC5oCnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIG5ldHRlc3Rfc2N0cC5oCnJlbmFtZSB0byBzcmMvbmV0dGVzdF9zY3RwLmgKaW5kZXggNTI5Nzg1My4uNTk1YzNhNSAxMDA2NDQKLS0tIGEvbmV0dGVzdF9zY3RwLmgKKysrIGIvc3JjL25ldHRlc3Rfc2N0cC5oCkBAIC0xMTgsMTEgKzExOCwxNyBAQAogICAgIFNDVFBfQ0xPU0UsCiB9IHNjdHBfZGlzcG9zaXRpb25fdDsKIAotZXh0ZXJuIHZvaWQgc2VuZF9zY3RwX3N0cmVhbSgpOwotZXh0ZXJuIHZvaWQgc2VuZF9zY3RwX3JyKCk7CitleHRlcm4gdm9pZCBzY2FuX3NjdHBfYXJncyggaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSApOwogCi1leHRlcm4gdm9pZCByZWN2X3NjdHBfc3RyZWFtKCk7Ci1leHRlcm4gdm9pZCByZWN2X3NjdHBfcnIoKTsKK2V4dGVybiB2b2lkIHNlbmRfc2N0cF9zdHJlYW0oIGNoYXIgcmVtb3RlX2hvc3RbXSApOworZXh0ZXJuIHZvaWQgc2VuZF9zY3RwX3N0cmVhbV8xdG9NYW55KCBjaGFyIHJlbW90ZV9ob3N0W10gKTsKK2V4dGVybiB2b2lkIHNlbmRfc2N0cF9yciggY2hhciByZW1vdGVfaG9zdFtdICk7CitleHRlcm4gdm9pZCBzZW5kX3NjdHBfcnJfMXRvTWFueSggY2hhciByZW1vdGVfaG9zdFtdICk7CisKK2V4dGVybiB2b2lkIHJlY3Zfc2N0cF9zdHJlYW0oIHZvaWQgKTsKK2V4dGVybiB2b2lkIHJlY3Zfc2N0cF9zdHJlYW1fMXRvTWFueSggdm9pZCApOworZXh0ZXJuIHZvaWQgcmVjdl9zY3RwX3JyKCB2b2lkICk7CitleHRlcm4gdm9pZCByZWN2X3NjdHBfcnJfMXRvTWFueSggdm9pZCApOwogCiBleHRlcm4gdm9pZCBsb2NfY3B1X3JhdGUoKTsKIGV4dGVybiB2b2lkIHJlbV9jcHVfcmF0ZSgpOwpkaWZmIC0tZ2l0IGEvbmV0dGVzdF9zZHAuYyBiL3NyYy9uZXR0ZXN0X3NkcC5jCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIG5ldHRlc3Rfc2RwLmMKcmVuYW1lIHRvIHNyYy9uZXR0ZXN0X3NkcC5jCmluZGV4IDY5NmZkM2UuLjQ0ZGRiMjMgMTAwNjQ0Ci0tLSBhL25ldHRlc3Rfc2RwLmMKKysrIGIvc3JjL25ldHRlc3Rfc2RwLmMKQEAgLTEsNiArMSw2IEBACiAjaWZuZGVmIGxpbnQKIGNoYXIJbmV0dGVzdF9zZHBbXT0iXAotQCgjKW5ldHRlc3Rfc2RwLmMgKGMpIENvcHlyaWdodCAyMDA3IEhld2xldHQtUGFja2FyZCBDby4gVmVyc2lvbiAyLjQuNCI7CitAKCMpbmV0dGVzdF9zZHAuYyAoYykgQ29weXJpZ2h0IDIwMDctMjAxMiBIZXdsZXR0LVBhY2thcmQgQ28uIFZlcnNpb24gMi42LjAiOwogI2Vsc2UKICNkZWZpbmUgRElSVFkKICNkZWZpbmUgV0FOVF9ISVNUT0dSQU0KQEAgLTI5LDcgKzI5LDcgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChXQU5UX1NEUCkKLSAgICAgCisKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC02Myw3ICs2Myw3IEBACiAjZWxzZQogI2Vycm9yIE11c3QgaGF2ZSBlaXRoZXIgTVNHX0VPRiBvciBNU0dfRklOIGRlZmluZWQKICNlbmRpZgotI2VuZGlmIAorI2VuZGlmCiAKICNpbmNsdWRlICJuZXRsaWIuaCIKICNpbmNsdWRlICJuZXRzaC5oIgpAQCAtODcsNyArODcsNyBAQAogLyogdGhlc2UgdmFyaWFibGVzIGFyZSBzcGVjaWZpYyB0byBTRFAgdGVzdHMuIGRlY2xhcmUgKi8KIC8qIHRoZW0gc3RhdGljIHRvIG1ha2UgdGhlbSBnbG9iYWwgb25seSB0byB0aGlzIGZpbGUuICovCiAKLXN0YXRpYyBpbnQJCitzdGF0aWMgaW50CiAgIG1zZ19jb3VudCA9IDAsCS8qIG51bWJlciBvZiBtZXNzYWdlcyB0byB0cmFuc21pdCBvbiBhc3NvY2lhdGlvbiAqLwogICBub25fYmxvY2sgPSAwLAkvKiBkZWZhdWx0IHRvIGJsb2NraW5nIHNvY2tldHMgKi8KICAgbnVtX2Fzc29jaWF0aW9ucyA9IDE7IC8qIG51bWJlciBvZiBhc3NvY2lhdGlvbnMgb24gdGhlIGVuZHBvaW50ICovCkBAIC0xMjcsOCArMTI3LDggQEAKIHZhbHVlLCBzcGVjaWZ5aW5nIGEgdmFsdWUgd2l0aCBhIGxlYWRpbmcgY29tbWEgd2lsbCBzZXQganVzdCB0aGUgc2Vjb25kXG5cCiBwYXJtLCBhIHZhbHVlIHdpdGggYSB0cmFpbGluZyBjb21tYSB3aWxsIHNldCBqdXN0IHRoZSBmaXJzdC4gVG8gc2V0XG5cCiBlYWNoIHBhcm0gdG8gdW5pcXVlIHZhbHVlcywgc3BlY2lmeSBib3RoIGFuZCBzZXBhcmF0ZSB0aGVtIHdpdGggYVxuXAotY29tbWEuXG4iOyAKLSAgICAgCitjb21tYS5cbiI7CisKIAwKICAvKiBUaGlzIHJvdXRpbmUgaXMgaW50ZW5kZWQgdG8gcmV0cmlldmUgaW50ZXJlc3RpbmcgYXNwZWN0cyBvZiBzZHAgKi8KICAvKiBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbi4gYXQgZmlyc3QsIGl0IGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZSAqLwpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAKICAgc29ja19vcHRfbGVuID0gc2l6ZW9mKG5ldHBlcmZfc29ja2xlbl90KTsKICAgaWYgKGdldHNvY2tvcHQoc29ja2V0LAotCQkgZ2V0cHJvdG9ieW5hbWUoInRjcCIpLT5wX3Byb3RvLAkKKwkJIGdldHByb3RvYnluYW1lKCJ0Y3AiKS0+cF9wcm90bywKIAkJIFRDUF9NQVhTRUcsCiAJCSAoY2hhciAqKW1zcywKIAkJICZzb2NrX29wdF9sZW4pID09IFNPQ0tFVF9FUlJPUikgewpAQCAtMTYzLDM0ICsxNjMsMzQgQEAKIAogfQogCi12b2lkIAordm9pZAogc2VuZF9zZHBfc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgXG5cCiBieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlcy9zZWMgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmYgJXNcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPQogICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAlNy4yZiAgICVzXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgICAgU2VydmljZSBEZW1hbmRcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFNlbmQgICAgIFJlY3YgICAgIFNlbmQgICAgUmVjdlxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgbG9jYWwgICAgcmVtb3RlICAgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgICUtOC44cy9zICAlJSAlYyAgICAgICUlICVjICAgICAgdXMvS0IgICB1cy9LQlxuXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzAgPQogICAgICIlNi4zZiAlYyAlc1xuIjsKIAogICBjaGFyICpjcHVfZm10XzEgPQogICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAgICU3LjJmICAgJS02LjJmICAgJS02LjJmICAgJS02LjNmICAlLTYuM2YgJXNcbiI7Ci0gIAorCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcblwKIEFsaWdubWVudCAgICAgIE9mZnNldCAgICAgICAgICUtOC44cyAlLTguOHMgICAgU2VuZHMgICAlLTguOHMgUmVjdnNcblwKIExvY2FsICBSZW1vdGUgIExvY2FsICBSZW1vdGUgIFhmZXJlZCAgIFBlciAgICAgICAgICAgICAgICAgUGVyXG5cCkBAIC0yMDIsMTkgKzIwMiwxOSBAQAogU2VnbWVudFxuXAogU2l6ZSAoYnl0ZXMpXG5cCiAlNmRcbiI7Ci0gIAotICAKKworCiAgIGZsb2F0CQkJZWxhcHNlZF90aW1lOwotICAKKwogICAvKiB3aGF0IHdlIHdhbnQgaXMgdG8gaGF2ZSBhIGJ1ZmZlciBzcGFjZSB0aGF0IGlzIGF0IGxlYXN0IG9uZSAqLwogICAvKiBzZW5kLXNpemUgZ3JlYXRlciB0aGFuIG91ciBzZW5kIHdpbmRvdy4gdGhpcyB3aWxsIGluc3VyZSB0aGF0IHdlICovCiAgIC8qIGFyZSBuZXZlciB0cnlpbmcgdG8gcmUtdXNlIGEgYnVmZmVyIHRoYXQgbWF5IHN0aWxsIGJlIGluIHRoZSBoYW5kcyAqLwogICAvKiBvZiB0aGUgdHJhbnNwb3J0LiBUaGlzIGJ1ZmZlciB3aWxsIGJlIG1hbGxvYydkIGFmdGVyIHdlIGhhdmUgZm91bmQgKi8KICAgLyogdGhlIHNpemUgb2YgdGhlIGxvY2FsIHNlbmMgc29ja2V0IGJ1ZmZlci4gV2Ugd2lsbCB3YW50IHRvIGRlYWwgKi8KICAgLyogd2l0aCBhbGlnbm1lbnQgYW5kIG9mZnNldCBjb25jZXJucyBhcyB3ZWxsLiAqLwotICAKKwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKLSAgCisKICAgaW50IGxlbjsKICAgdW5zaWduZWQgaW50IG51bW1lc3NhZ2VzID0gMDsKICAgU09DS0VUIHNlbmRfc29ja2V0OwpAQCAtMjI3LDI4ICsyMjcsMjggQEAKIAogICB1bnNpZ25lZCBsb25nIGxvbmcgbG9jYWxfYnl0ZXNfc2VudCA9IDA7CiAgIGRvdWJsZQlieXRlc19zZW50ID0gMC4wOwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7Ci0gIAorCiAgIHN0cnVjdAlzZHBfc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSpzZHBfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlzZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqc2RwX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CXNkcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnNkcF9zdHJlYW1fcmVzdWx0OwotICAKLSAgc2RwX3N0cmVhbV9yZXF1ZXN0ICA9IAorCisgIHNkcF9zdHJlYW1fcmVxdWVzdCAgPQogICAgIChzdHJ1Y3Qgc2RwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc2RwX3N0cmVhbV9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCBzZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHNkcF9zdHJlYW1fcmVzdWx0ICAgPSAKKyAgc2RwX3N0cmVhbV9yZXN1bHQgICA9CiAgICAgKHN0cnVjdCBzZHBfc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC0yNTgsNyArMjU4LDcgQEAKICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIC8qIGNvbXBsZXRlX2FkZHJpbmZvcyB3aWxsIGVpdGhlciBzdWNjZWRlIG9yIGV4aXQgdGhlIHByb2Nlc3MgKi8KICAgY29tcGxldGVfYWRkcmluZm9zKCZyZW1vdGVfcmVzLAogCQkgICAgICZsb2NhbF9yZXMsCkBAIC0yNjYsNyArMjY2LDcgQEAKIAkJICAgICBTT0NLX1NUUkVBTSwKIAkJICAgICBJUFBST1RPX1RDUCwKIAkJICAgICAwKTsKLSAgCisKICAgaWYgKCBwcmludF9oZWFkZXJzICkgewogICAgIHByaW50X3RvcF90ZXN0X2hlYWRlcigiU0RQIFNUUkVBTSBURVNUIixsb2NhbF9yZXMscmVtb3RlX3Jlcyk7CiAgIH0KQEAgLTI4NywyNiArMjg3LDI2IEBACiAKICAgICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzLiB3ZSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgd2UgbWlnaHQgYmUgKi8KICAgICAvKiBnb2luZyB0aHJvdWdoIHRoZSBsb29wIG1vcmUgdGhhbiBvbmNlLiAqLwotICAgIAorCiAgICAgbnVtbWVzc2FnZXMgICAgPQkwOwogICAgIGJ5dGVzX3NlbnQgICAgID0JMC4wOwogICAgIHRpbWVzX3VwICAgICAgID0gCTA7Ci0gICAgCisKICAgICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIC8qIGZha2UgdGhpbmdzIG91dCBieSBjaGFuZ2luZyBsb2NhbF9yZXMtPmFpX2ZhbWlseSB0byBBRl9JTkVUX1NEUCAqLwogICAgIGxvY2FsX3Jlcy0+YWlfZmFtaWx5ID0gQUZfSU5FVF9TRFA7CiAgICAgbG9jYWxfcmVzLT5haV9wcm90b2NvbCA9IDA7CiAgICAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfZGF0YV9zb2NrZXQobG9jYWxfcmVzKTsKLSAgICAKKwogICAgIGlmIChzZW5kX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfc2RwX3N0cmVhbTogc2RwIHN0cmVhbSBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfc2RwX3N0cmVhbTogc2VuZF9zb2NrZXQgb2J0YWluZWQuLi5cbiIpOwogICAgIH0KLSAgICAKKwogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgZWl0aGVyIHJldHJpZXZlZCB0aGUgc29ja2V0IGJ1ZmZlciBzaXplcywgKi8KICAgICAvKiBvciBoYXZlIHRyaWVkIHRvIHNldCB0aGVtLCBzbyBub3csIHdlIG1heSB3YW50IHRvIHNldCB0aGUgc2VuZCAqLwogICAgIC8qIHNpemUgYmFzZWQgb24gdGhhdCAoYmVjYXVzZSB0aGUgdXNlciBlaXRoZXIgZGlkIG5vdCB1c2UgYSAtbSAqLwpAQCAtMzIxLDcgKzMyMSw3IEBACiAJc2VuZF9zaXplID0gNDA5NjsKICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHJpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0LiAqLwogICAgIC8qIG5vdGUgYWxzbyB0aGF0IHdlIGhhdmUgYWxsb2NhdGVkIGEgcXVhbnRpdHkgKi8KICAgICAvKiBvZiBtZW1vcnkgdGhhdCBpcyBhdCBsZWFzdCBvbmUgc2VuZC1zaXplIGdyZWF0ZXIgdGhhbiBvdXIgc29ja2V0ICovCkBAIC0zMzQsNyArMzM0LDcgQEAKICAgICAgIHNlbmRfd2lkdGggPSAobHNzX3NpemUvc2VuZF9zaXplKSArIDE7CiAgICAgICBpZiAoc2VuZF93aWR0aCA9PSAxKSBzZW5kX3dpZHRoKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7CiAgICAgICAvKiBvbmx5IGFsbG9jYXRlIHRoZSBzZW5kIHJpbmcgb25jZS4gdGhpcyBpcyBhIG5ldHdvcmtpbmcgdGVzdCwgKi8KICAgICAgIC8qIG5vdCBhIG1lbW9yeSBhbGxvY2F0aW9uIHRlc3QuIHRoaXMgd2F5LCB3ZSBkbyBub3QgbmVlZCBhICovCkBAIC0zNTIsMTEgKzM1MiwxMSBAQAogICAgIC8qIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlICovCiAgICAgLyogbm90aGluZyB0byBkby4gSWYgbG9jYWxfY3B1X3JhdGUgaXMgemVybywgdGhlbiB3ZSB3aWxsIGdvIHRocm91Z2ggKi8KICAgICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4gKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFub19jb250cm9sKSB7CiAgICAgICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUKIAkgc29ja2V0IHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUKQEAgLTM2Niw3ICszNjYsNyBAQAogCSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IHNob3VsZCBiZQogCSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQgd2lsbCBkZWZhdWx0IHRvIDEsIHdoaWNoCiAJIHdpbGwgYmUgbm8gYWxpZ25tZW50IGFsdGVyYXRpb25zLiAqLwotICAgIAorCiAgICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgPQlET19TRFBfU1RSRUFNOwogICAgICAgc2RwX3N0cmVhbV9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemVfcmVxOwogICAgICAgc2RwX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemVfcmVxOwpAQCAtMzk0LDkgKzM5NCw5IEBACiAJZnByaW50Zih3aGVyZSwKIAkJIm5ldHBlcmY6IHNlbmRfc2RwX3N0cmVhbTogcmVxdWVzdGluZyBTRFAgc3RyZWFtIHRlc3RcbiIpOwogICAgICAgfQotICAgICAgCisKICAgICAgIHNlbmRfcmVxdWVzdCgpOwotICAgICAgCisKICAgICAgIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQKICAgICAgICAgIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrCiAgICAgICAgICBpbnRvIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4KQEAgLTQwNyw5ICs0MDcsOSBAQAogICAgICAgICAgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0IGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcwogICAgICAgICAgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcyBiZWluZyBzZW50IGZvciB0aGUgU0RQCiAgICAgICAgICB0ZXN0cy4gICovCi0gICAgCisKICAgICAgIHJlY3ZfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogCWlmIChkZWJ1ZykKIAkgIGZwcmludGYod2hlcmUsInJlbW90ZSBsaXN0ZW4gZG9uZS5cbiIpOwpAQCAtNDE4LDEyICs0MTgsMTIgQEAKIAlyZW1fbm9kZWxheSAgICAgPQlzZHBfc3RyZWFtX3Jlc3BvbnNlLT5ub19kZWxheTsKIAlyZW1vdGVfY3B1X3VzYWdlPQlzZHBfc3RyZWFtX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdTsKIAlyZW1vdGVfY3B1X3JhdGUgPSBzZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZTsKLQkKKwogCS8qIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBwb3J0IG51bWJlciBpcyBpbgogCSAgIG5ldHdvcmsgb3JkZXIgKi8KIAlzZXRfcG9ydF9udW1iZXIocmVtb3RlX3JlcywKIAkJCShzaG9ydClzZHBfc3RyZWFtX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyKTsKLQkKKwogCXJlbV9yY3Zhdm9pZAk9IHNkcF9zdHJlYW1fcmVzcG9uc2UtPnNvX3JjdmF2b2lkOwogCXJlbV9zbmRhdm9pZAk9IHNkcF9zdHJlYW1fcmVzcG9uc2UtPnNvX3NuZGF2b2lkOwogICAgICAgfQpAQCAtNDM0LDcgKzQzNCw3IEBACiAJCW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKIAlwZXJyb3IoIiIpOwogCWZmbHVzaCh3aGVyZSk7Ci0JCisKIAlleGl0KDEpOwogICAgICAgfQogICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQAogI2VuZGlmCiAKICAgICAvKkNvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIHNvY2tldCAgKi8KLSAgICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwgCisgICAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHIsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF9zZHBfc3RyZWFtOiBkYXRhIHNvY2tldCBjb25uZWN0IGZhaWxlZCIpOwpAQCAtNDU2LDExICs0NTYsMTEgQEAKICAgICAvKiBoYXZlIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlICovCiAgICAgLyogZXh0cmEgIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsICovCiAgICAgLyogd2UnbGwgc2VlIGl0IGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nICovCi0gICAgLyogZGF0YS4gKi8gCi0gICAgCisgICAgLyogZGF0YS4gKi8KKwogICAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgc3RyZWFtIHRlc3QsIHRoZXkgY2FuIGJlICovCiAgICAgLyogZWl0aGVyIHRpbWUgb3IgYnl0ZS1jb3VudCBiYXNlZC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICAgIHRpbWVzX3VwID0gMDsKQEAgLTQ3OCwxNiArNDc4LDE2IEBACiAgICAgICBieXRlc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgICAgdGltZXNfdXAgPSAxOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgICAKKwogICAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwogCiAgICAgLyogd2Ugb25seSBzdGFydCB0aGUgaW50ZXJ2YWwgdGltZXIgaWYgd2UgYXJlIHVzaW5nIHRoZQogICAgICAgIHRpbWVyLXRpbWVkIGludGVydmFscyByYXRoZXIgdGhhbiB0aGUgc2l0IGFuZCBzcGluIG9uZXMuIHJhagotICAgICAgIDIwMDYtMDItMDYgKi8gICAgCisgICAgICAgMjAwNi0wMi0wNiAqLwogI2lmIGRlZmluZWQoV0FOVF9JTlRFUlZBTFMpCiAgICAgSU5URVJWQUxTX0lOSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwpAQCAtNDk5LDIzICs0OTksMjMgQEAKIAlISVNUX3RpbWVzdGFtcChkZW1vX29uZV9wdHIpOwogICAgICAgfQogI2VuZGlmCi0gICAgICAKKwogCiAgICAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcyAqLwogICAgIC8qIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiAqLwogICAgIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KICAgICAvKiBhbHdheXMgcmV0dXJuIGZhbHNlLiBXaGVuIHRoZSB0ZXN0IGlzIGZpbmlzaGVkLCB0aGUgd2hvbGUgKi8KICAgICAvKiBleHByZXNzaW9uIHdpbGwgZ28gZmFsc2UgYW5kIHdlIHdpbGwgc3RvcCBzZW5kaW5nIGRhdGEuICovCi0gICAgCisKICAgICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKGJ5dGVzX3JlbWFpbmluZyA+IDApKSB7Ci0gICAgICAKKwogI2lmZGVmIERJUlRZCiAgICAgICBhY2Nlc3NfYnVmZmVyKHNlbmRfcmluZy0+YnVmZmVyX3B0ciwKIAkJICAgIHNlbmRfc2l6ZSwKIAkJICAgIGxvY19kaXJ0eV9jb3VudCwKIAkJICAgIGxvY19jbGVhbl9jb3VudCk7CiAjZW5kaWYgLyogRElSVFkgKi8KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CiAJLyogdGltZXN0YW1wIGp1c3QgYmVmb3JlIHdlIGdvIGludG8gc2VuZCBhbmQgdGhlbiBhZ2FpbiBqdXN0CkBAIC01NDcsMjIgKzU0NywyMiBAQAogCUhJU1RfdGltZXN0YW1wKCZ0aW1lX3R3byk7CiAJSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKICAgICAgIH0KLSNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLyAgICAgIAorI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKICNpZmRlZiBXQU5UX0RFTU8KICAgICAgIERFTU9fU1RSRUFNX0lOVEVSVkFMKHNlbmRfc2l6ZSkKLSNlbmRpZiAKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChXQU5UX0lOVEVSVkFMUykKICAgICAgIElOVEVSVkFMU19XQUlUKCk7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAgIAorCiAgICAgICAvKiBub3cgd2Ugd2FudCB0byBtb3ZlIG91ciBwb2ludGVyIHRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSAqLwogICAgICAgLyogZGF0YSBidWZmZXIuLi53ZSBtYXkgYWxzbyB3YW50IHRvIHdyYXAgYmFjayB0byB0aGUgImJlZ2lubmluZyIgKi8KICAgICAgIC8qIG9mIHRoZSBidWZmZXJzcGFjZSwgc28gd2Ugd2lsbCBtb2QgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBzZW50ICovCiAgICAgICAvKiBieSB0aGUgc2VuZCB3aWR0aCwgYW5kIHVzZSB0aGF0IHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IHRvIGFkZCAqLwogICAgICAgLyogdG8gdGhlIGJhc2UgcG9pbnRlci4gKi8KLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorICAgICAgbnVtbWVzc2FnZXMrKzsKICAgICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKICAgICAgIGlmIChieXRlc19yZW1haW5pbmcpIHsKIAlieXRlc19yZW1haW5pbmcgLT0gc2VuZF9zaXplOwpAQCAtNTcxLDcgKzU3MSw3IEBACiAKICAgICAvKiBUaGUgdGVzdCBpcyBvdmVyLiBGbHVzaCB0aGUgYnVmZmVycyB0byB0aGUgcmVtb3RlIGVuZC4gV2UgZG8gYSAqLwogICAgIC8qIGdyYWNlZnVsIHJlbGVhc2UgdG8gaW5zdXJlIHRoYXQgYWxsIGRhdGEgaGFzIGJlZW4gdGFrZW4gYnkgdGhlICovCi0gICAgLyogcmVtb3RlLiAqLyAKKyAgICAvKiByZW1vdGUuICovCiAKICAgICAvKiBidXQgZmlyc3QsIGlmIHRoZSB2ZXJib3NpdHkgaXMgZ3JlYXRlciB0aGFuIDEsIGZpbmQtb3V0IHdoYXQgKi8KICAgICAvKiB0aGUgU0RQIG1heGltdW0gc2VnbWVudF9zaXplIHdhcyAoaWYgcG9zc2libGUpICovCkBAIC01NzksMjcgKzU3OSwyNyBAQAogICAgICAgc2RwX21zcyA9IC0xOwogICAgICAgZ2V0X3NkcF9pbmZvKHNlbmRfc29ja2V0LCZzZHBfbXNzKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2h1dGRvd24oc2VuZF9zb2NrZXQsU0hVVF9XUikgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IGNhbm5vdCBzaHV0ZG93biBzZHAgc3RyZWFtIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBoYW5nIGEgcmVjdigpIG9mZiB0aGUgc29ja2V0IHRvIGJsb2NrIHVudGlsIHRoZSByZW1vdGUgaGFzICovCiAgICAgLyogYnJvdWdodCBhbGwgdGhlIGRhdGEgdXAgaW50byB0aGUgYXBwbGljYXRpb24uIGl0IHdpbGwgZG8gYSAqLwogICAgIC8qIHNodXRkb3duIHRvIGNhdXNlIGEgRklOIHRvIGJlIHNlbnQgb3VyIHdheS4gV2Ugd2lsbCBhc3N1bWUgdGhhdCAqLwogICAgIC8qIGFueSBleGl0IGZyb20gdGhlIHJlY3YoKSBjYWxsIGlzIGdvb2QuLi4gcmFqIDQvOTMgKi8KLSAgICAKKwogICAgIHJlY3Yoc2VuZF9zb2NrZXQsIHNlbmRfcmluZy0+YnVmZmVyX3B0ciwgc2VuZF9zaXplLCAwKTsKLSAgICAKKwogICAgIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LCBhbmQgKi8KICAgICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAgIAorCiAgICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nICovCiAJCQkJCQkvKiBtZWFzdXJlZCBhbmQgaG93ICovCiAJCQkJCQkvKiBsb25nIGRpZCB3ZSByZWFsbHkgKi8KIAkJCQkJCS8qIHJ1bj8gKi8KLSAgICAKKwogICAgIC8qIHdlIGFyZSBmaW5pc2hlZCB3aXRoIHRoZSBzb2NrZXQsIHNvIGNsb3NlIGl0IHRvIHByZXZlbnQgaGl0dGluZyAqLwogICAgIC8qIHRoZSBsaW1pdCBvbiBtYXhpbXVtIG9wZW4gZmlsZXMuICovCiAKQEAgLTYxMCw3ICs2MTAsNyBAQAogCSBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcKIAkgdGhpbmdzLiBJZiBpdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gY2FyZSwgaXQgd2lsbCByZXR1cm4gb2J2aW91cwogCSB2YWx1ZXMuICovCi0gICAgCisKICAgICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKIAlpZiAoZGVidWcpCkBAIC02MjMsMTAgKzYyMywxMCBAQAogCQluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAJcGVycm9yKCIiKTsKIAlmZmx1c2god2hlcmUpOwotCQorCiAJZXhpdCgxKTsKICAgICAgIH0KLSAgICAKKwogICAgICAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciB0aHJ1cHV0IHdhcyBmb3IgdGhlIHRlc3QuIEluIHRoZQogCSBmdXR1cmUsIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dAogCSBtZWFzdXJlZCBieSB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEKQEAgLTYzNiw3ICs2MzYsNyBAQAogCSBhbmQgaWYgaXQgd2FzIGJ5IGJ5dGVzLCB0aGUgdXNlciBtYXkgaGF2ZSBzcGVjaWZpZWQgYSBudW1iZXIKIAkgb2YgYnl0ZXMgdGhhdCB3YXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgc2VuZF9zaXplLCBzbyB3ZQogCSByZWFsbHkgZGlkbid0IHNlbmQgd2hhdCBoZSBhc2tlZCBmb3IgOy0pICovCi0gICAgCisKICAgICAgIGJ5dGVzX3NlbnQJPSBudG9oZChzZHBfc3RyZWFtX3Jlc3VsdC0+Ynl0ZXNfcmVjZWl2ZWQpOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTY0NCw3ICs2NDQsNyBAQAogICAgIH0KIAogICAgIHRocnVwdXQJPSBjYWxjX3RocnVwdXQoYnl0ZXNfc2VudCk7Ci0gICAgCisKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUgKi8KICAgICAgIC8qIHV0aWxpemF0aW9uIGZvciB0aGUgc3lzdGVtKHMpICovCkBAIC02NTIsNyArNjUyLDcgQEAKICAgICAgIC8qIHRoZXJlIHdhcyBubyBpZGxlIGNvdW50ZXIgaW4gdGhlIGtlcm5lbChzKS4gV2UgbmVlZCB0byBtYWtlICovCiAgICAgICAvKiBhIG5vdGUgb2YgdGhpcyBmb3IgdGhlIHVzZXIncyBiZW5lZml0Li4uKi8KICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKLQkKKwogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IGNhbGNfY3B1X3V0aWwoMC4wKTsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTY2Myw5ICs2NjMsOSBAQAogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IChmbG9hdCkgLTEuMDsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IChmbG9hdCkgLTEuMDsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgewotCQorCiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbgk9IHNkcF9zdHJlYW1fcmVzdWx0LT5jcHVfdXRpbDsKIAlyZW1vdGVfc2VydmljZV9kZW1hbmQJPSBjYWxjX3NlcnZpY2VfZGVtYW5kKGJ5dGVzX3NlbnQsCiAJCQkJCQkgICAgICAwLjAsCkBAIC02NzYsNyArNjc2LDcgQEAKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gKGZsb2F0KSAtMS4wOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAoZmxvYXQpIC0xLjA7CiAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiB3ZSB3ZXJlIG5vdCBtZWFzdXJpbmcgY3B1LCBmb3IgdGhlIGNvbmZpZGVuY2Ugc3R1ZmYsIHdlICovCiAgICAgICAvKiBzaG91bGQgbWFrZSBpdCAtMS4wICovCkBAIC02ODksNyArNjg5LDcgQEAKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4gKi8KICAgICAvKiBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZSAqLwogICAgIC8qIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHRocnVwdXQsCkBAIC02OTcsOCArNjk3LDggQEAKIAkJCSByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQkJIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7Ci0gICAgCi0gICAgCisKKwogICAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uKys7CiAgIH0KIApAQCAtNzM2LDcgKzczNiw3IEBACiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZChjcHVfbWV0aG9kKTsKICAgICByZW1vdGVfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKHNkcF9zdHJlYW1fcmVzdWx0LT5jcHVfbWV0aG9kKTsKLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtNzQ0LDcgKzc0NCw3IEBACiAJCWNwdV9mbXRfMCwKIAkJbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCWxvY2FsX2NwdV9tZXRob2QsCi0JCSgocHJpbnRfaGVhZGVycykgfHwgCisJCSgocHJpbnRfaGVhZGVycykgfHwKIAkJIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgfQogICAgICAgZWxzZSB7CkBAIC03NTIsNyArNzUyLDcgQEAKIAkJY3B1X2ZtdF8wLAogCQlyZW1vdGVfc2VydmljZV9kZW1hbmQsCiAJCXJlbW90ZV9jcHVfbWV0aG9kLAotCQkoKHByaW50X2hlYWRlcnMpIHx8IAorCQkoKHByaW50X2hlYWRlcnMpIHx8CiAJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtNzY1LDcgKzc2NSw3IEBACiAJCWxvY2FsX2NwdV9tZXRob2QsCiAJCXJlbW90ZV9jcHVfbWV0aG9kKTsKICAgICAgIH0KLSAgICAKKwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICBjcHVfZm10XzEsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLwogCSAgICAgIHJzcl9zaXplLAkJICAgICAgICAvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCkBAIC03NzcsMjAgKzc3NywyMCBAQAogCSAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCS8qIHJlbW90ZSBjcHUgKi8KIAkgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwJLyogbG9jYWwgc2VydmljZSBkZW1hbmQgKi8KIAkgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQsCS8qIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZCAqLwotCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwgCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAogCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlIHsKICAgICAvKiBUaGUgdGVzdGVyIGRpZCBub3Qgd2lzaCB0byBtZWFzdXJlIHNlcnZpY2UgZGVtYW5kLiAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIHRwdXRfZm10XzAsCiAJICAgICAgdGhydXB1dCwKLQkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8IAorCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKIAkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIDE6CkBAIC04MDUsMjcgKzgwNSwyNyBAQAogCSAgICAgIHNlbmRfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSBzZW5kcyAqLwogCSAgICAgIGVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLwogCSAgICAgIHRocnVwdXQsICAgICAgICAgICAgICAgICAgLyogaG93IGZhc3QgZGlkIGl0IGdvICovCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFNEUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAKKwogICAgIC8qIHRoaXMgc3R1ZmYgbmVlZHMgdG8gYmUgd29ya2VkLW91dCBpbiB0aGUgcHJlc2VuY2Ugb2YgY29uZmlkZW5jZSAqLwogICAgIC8qIGludGVydmFscyBhbmQgbXVsdGlwbGUgaXRlcmF0aW9ucyBvZiB0aGUgdGVzdC4uLiByYWogMTEvOTQgKi8KLSAKKwogICAgIGZwcmludGYod2hlcmUsCiAJICAgIGtzaW5rX2ZtdCwKIAkgICAgIkJ5dGVzIiwKQEAgLTg1MCw3ICs4NTAsNyBAQAogICAgIEhJU1RfcmVwb3J0KHRpbWVfaGlzdCk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KICAgfQotICAKKwogfQogCiAMCkBAIC04NjIsMzQgKzg2MiwzNCBAQAogICAgb3V0cHV0IHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuICovCiAKIAotdm9pZCAKK3ZvaWQKIHNlbmRfc2RwX21hZXJ0cyhjaGFyIHJlbW90ZV9ob3N0W10pCiB7Ci0gIAorCiAgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cCiBTb2NrZXQgU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgICAgICAgICBcblwKIFNpemUgICBTaXplICAgIFNpemUgICAgIFRpbWUgICAgIFRocm91Z2hwdXQgIFxuXAogYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgICAgc2Vjcy4gICAgJXMvc2VjICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmICVzXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xID0KICAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgJTcuMmYgICBcbiAlcyI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXphdGlvbiAgICAgICBTZXJ2aWNlIERlbWFuZFxuXAogU29ja2V0IFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgICAgICAgICAgU2VuZCAgICAgUmVjdiAgICAgU2VuZCAgICBSZWN2XG5cCiBTaXplICAgU2l6ZSAgICBTaXplICAgICBUaW1lICAgICBUaHJvdWdocHV0ICBsb2NhbCAgICByZW1vdGUgICBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICAgYnl0ZXMgICAgc2Vjcy4gICAgJS04LjhzL3MgICUlICVjICAgICAgJSUgJWMgICAgICB1cy9LQiAgIHVzL0tCXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmICVjICVzXG4iOwogCiAgIGNoYXIgKmNwdV9mbXRfMSA9CiAgICAgIiU2ZCAlNmQgJTZkICAgICUtNi4yZiAgICAgJTcuMmYgICAlLTYuMmYgICAlLTYuMmYgICAlLTYuM2YgICUtNi4zZiAlc1xuIjsKLSAgCisKICAgY2hhciAqa3NpbmtfZm10ID0gIlxuXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0ICAgICAgICAgJS04LjhzICUtOC44cyAgICBSZWN2cyAgICUtOC44cyBTZW5kc1xuXAogTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZSAgWGZlcmVkICAgUGVyICAgICAgICAgICAgICAgICBQZXJcblwKQEAgLTkwMSwxOSArOTAxLDE5IEBACiBTZWdtZW50XG5cCiBTaXplIChieXRlcylcblwKICU2ZFxuIjsKLSAgCi0gIAorCisKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIC8qIHdoYXQgd2Ugd2FudCBpcyB0byBoYXZlIGEgYnVmZmVyIHNwYWNlIHRoYXQgaXMgYXQgbGVhc3Qgb25lICovCiAgIC8qIHJlY3Ytc2l6ZSBncmVhdGVyIHRoYW4gb3VyIHJlY3Ygd2luZG93LiB0aGlzIHdpbGwgaW5zdXJlIHRoYXQgd2UgKi8KICAgLyogYXJlIG5ldmVyIHRyeWluZyB0byByZS11c2UgYSBidWZmZXIgdGhhdCBtYXkgc3RpbGwgYmUgaW4gdGhlIGhhbmRzICovCiAgIC8qIG9mIHRoZSB0cmFuc3BvcnQuIFRoaXMgYnVmZmVyIHdpbGwgYmUgbWFsbG9jJ2QgYWZ0ZXIgd2UgaGF2ZSBmb3VuZCAqLwogICAvKiB0aGUgc2l6ZSBvZiB0aGUgbG9jYWwgc2VuYyBzb2NrZXQgYnVmZmVyLiBXZSB3aWxsIHdhbnQgdG8gZGVhbCAqLwogICAvKiB3aXRoIGFsaWdubWVudCBhbmQgb2Zmc2V0IGNvbmNlcm5zIGFzIHdlbGwuICovCi0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwotICAKKwogICBpbnQgbGVuOwogICB1bnNpZ25lZCBpbnQgbnVtbWVzc2FnZXMgPSAwOwogICBTT0NLRVQgcmVjdl9zb2NrZXQ7CkBAIC05MzIsMjEgKzkzMiwyMSBAQAogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdCBhZGRyaW5mbyAqcmVtb3RlX3JlczsKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7Ci0gIAorCiAgIHN0cnVjdAlzZHBfbWFlcnRzX3JlcXVlc3Rfc3RydWN0CSpzZHBfbWFlcnRzX3JlcXVlc3Q7CiAgIHN0cnVjdAlzZHBfbWFlcnRzX3Jlc3BvbnNlX3N0cnVjdAkqc2RwX21hZXJ0c19yZXNwb25zZTsKICAgc3RydWN0CXNkcF9tYWVydHNfcmVzdWx0c19zdHJ1Y3QJKnNkcF9tYWVydHNfcmVzdWx0OwotICAKLSAgc2RwX21hZXJ0c19yZXF1ZXN0ICA9IAorCisgIHNkcF9tYWVydHNfcmVxdWVzdCAgPQogICAgIChzdHJ1Y3Qgc2RwX21hZXJ0c19yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc2RwX21hZXJ0c19yZXNwb25zZSA9CiAgICAgKHN0cnVjdCBzZHBfbWFlcnRzX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHNkcF9tYWVydHNfcmVzdWx0ICAgPSAKKyAgc2RwX21hZXJ0c19yZXN1bHQgICA9CiAgICAgKHN0cnVjdCBzZHBfbWFlcnRzX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC05NTYsMTQgKzk1NiwxNCBAQAogICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCiAgIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCiAgIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKICAgY29tcGxldGVfYWRkcmluZm9zKCZyZW1vdGVfcmVzLAogCQkgICAgICZsb2NhbF9yZXMsCiAJCSAgICAgcmVtb3RlX2hvc3QsCiAJCSAgICAgU09DS19TVFJFQU0sCiAJCSAgICAgSVBQUk9UT19UQ1AsCiAJCSAgICAgMCk7Ci0gIAorCiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICBwcmludF90b3BfdGVzdF9oZWFkZXIoIlNEUCBNQUVSVFMgVEVTVCIsbG9jYWxfcmVzLHJlbW90ZV9yZXMpOwogICB9CkBAIC05ODQsMjIgKzk4NCwyMiBAQAogCiAgICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycy4gd2UgaGF2ZSB0byByZW1lbWJlciB0aGF0IHdlIG1pZ2h0IGJlICovCiAgICAgLyogZ29pbmcgdGhyb3VnaCB0aGUgbG9vcCBtb3JlIHRoYW4gb25jZS4gKi8KLSAgICAKKwogICAgIG51bW1lc3NhZ2VzICAgID0JMDsKICAgICBieXRlc19zZW50ICAgICA9CTAuMDsKICAgICB0aW1lc191cCAgICAgICA9IAkwOwotICAgIAorCiAgICAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAvKiBmYWtlIHRoaW5ncyBvdXQgYnkgY2hhbmdpbmcgbG9jYWxfcmVzLT5haV9mYW1pbHkgdG8gQUZfSU5FVF9TRFAgKi8KICAgICBsb2NhbF9yZXMtPmFpX2ZhbWlseSA9IEFGX0lORVRfU0RQOwogICAgIGxvY2FsX3Jlcy0+YWlfcHJvdG9jb2wgPSAwOwogICAgIHJlY3Zfc29ja2V0ID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gICAgCisKICAgICBpZiAocmVjdl9zb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpewogICAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX3NkcF9tYWVydHM6IHNkcCBzdHJlYW0gZGF0YSBzb2NrZXQiKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJzZW5kX3NkcF9tYWVydHM6IHJlY3Zfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgICB9CkBAIC0xMDMxLDcgKzEwMzEsNyBAQAogICAgICAgcmVjdl93aWR0aCA9IChsc3Jfc2l6ZS9yZWN2X3NpemUpICsgMTsKICAgICAgIGlmIChyZWN2X3dpZHRoID09IDEpIHJlY3Zfd2lkdGgrKzsKICAgICB9Ci0gICAgCisKICAgICBpZiAocmVjdl9yaW5nID09IE5VTEwpIHsKICAgICAgIC8qIG9ubHkgYWxsb2NhdGUgdGhlIHJlY3YgcmluZyBvbmNlLiB0aGlzIGlzIGEgbmV0d29ya2luZyB0ZXN0LCAqLwogICAgICAgLyogbm90IGEgbWVtb3J5IGFsbG9jYXRpb24gdGVzdC4gdGhpcyB3YXksIHdlIGRvIG5vdCBuZWVkIGEgKi8KQEAgLTEwNDksMTEgKzEwNDksMTEgQEAKICAgICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwogICAgIC8qIG5vdGhpbmcgdG8gZG8uIElmIGxvY2FsX2NwdV9yYXRlIGlzIHplcm8sIHRoZW4gd2Ugd2lsbCBnbyB0aHJvdWdoICovCiAgICAgLyogYWxsIHRoZSAibm9ybWFsIiBjYWxpYnJhdGlvbiBzdHVmZiBhbmQgcmV0dXJuIHRoZSByYXRlIGJhY2suICovCi0gICAgCisKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgICBsb2NhbF9jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUobG9jYWxfY3B1X3JhdGUpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghbm9fY29udHJvbCkgewogICAgICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlCiAJIHNvY2tldCBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlCkBAIC0xMDkxLDkgKzEwOTEsOSBAQAogCWZwcmludGYod2hlcmUsCiAJCSJuZXRwZXJmOiBzZW5kX3NkcF9tYWVydHM6IHJlcXVlc3RpbmcgU0RQIG1hZXJ0cyB0ZXN0XG4iKTsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBzZW5kX3JlcXVlc3QoKTsKLSAgICAgIAorCiAgICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50CiAJIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrCiAJIGludG8gdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLgpAQCAtMTEwNCw5ICsxMTA0LDkgQEAKIAkgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0IGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcwogCSB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzIGJlaW5nIHNlbnQgZm9yIHRoZSBTRFAKIAkgdGVzdHMuICAqLwotICAgICAgCisKICAgICAgIHJlY3ZfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogCWlmIChkZWJ1ZykKIAkgIGZwcmludGYod2hlcmUsInJlbW90ZSBsaXN0ZW4gZG9uZS5cbiIpOwpAQCAtMTExNiw3ICsxMTE2LDcgQEAKIAlyZW1vdGVfY3B1X3VzYWdlPQlzZHBfbWFlcnRzX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdTsKIAlyZW1vdGVfY3B1X3JhdGUgPSBzZHBfbWFlcnRzX3Jlc3BvbnNlLT5jcHVfcmF0ZTsKIAlzZW5kX3NpemUgICAgICAgPSBzZHBfbWFlcnRzX3Jlc3BvbnNlLT5zZW5kX3NpemU7Ci0JCisKIAkvKiB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIgcG9ydCBudW1iZXIgaXMgaW4KIAkgbmV0d29yayBvcmRlciAqLwogICAgICAgc2V0X3BvcnRfbnVtYmVyKHJlbW90ZV9yZXMsCkBAIC0xMTMxLDcgKzExMzEsNyBAQAogCQluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAJcGVycm9yKCIiKTsKIAlmZmx1c2god2hlcmUpOwotCQorCiAJZXhpdCgxKTsKICAgICAgIH0KICAgICB9CkBAIC0xMTQxLDcgKzExNDEsNyBAQAogI2VuZGlmCiAKICAgICAvKkNvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIHNvY2tldCAgKi8KLSAgICBpZiAoY29ubmVjdChyZWN2X3NvY2tldCwgCisgICAgaWYgKGNvbm5lY3QocmVjdl9zb2NrZXQsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHIsCiAJCXJlbW90ZV9yZXMtPmFpX2FkZHJsZW4pID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF9zZHBfbWFlcnRzOiBkYXRhIHNvY2tldCBjb25uZWN0IGZhaWxlZCIpOwpAQCAtMTE1MywxMSArMTE1MywxMSBAQAogICAgIC8qIGhhdmUgaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUgKi8KICAgICAvKiBleHRyYSAgbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgKi8KICAgICAvKiB3ZSdsbCBzZWUgaXQgaGVyZS4gSWYgaXQgZGlkbid0LCB3ZSBtaWdodCBhcyB3ZWxsIHN0YXJ0IHB1bXBpbmcgKi8KLSAgICAvKiBkYXRhLiAqLyAKLSAgICAKKyAgICAvKiBkYXRhLiAqLworCiAgICAgLyogU2V0LXVwIHRoZSB0ZXN0IGVuZCBjb25kaXRpb25zLiBGb3IgYSBtYWVydHMgdGVzdCwgdGhleSBjYW4gYmUgKi8KICAgICAvKiBlaXRoZXIgdGltZSBvciBieXRlLWNvdW50IGJhc2VkLiAqLwotICAgIAorCiAgICAgaWYgKHRlc3RfdGltZSkgewogICAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgICAgdGltZXNfdXAgPSAwOwpAQCAtMTE4MCwxOCArMTE4MCwxOCBAQAogICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgIC8qIFRoZSB0ZXN0ZXIgd2FudGVkIHRvIHJlY3YgYSBudW1iZXIgb2YgYnl0ZXMuIHdlIGRvbid0IGRvIHRoYXQgCisgICAgICAvKiBUaGUgdGVzdGVyIHdhbnRlZCB0byByZWN2IGEgbnVtYmVyIG9mIGJ5dGVzLiB3ZSBkb24ndCBkbyB0aGF0CiAJIGluIGEgU0RQX01BRVJUUyB0ZXN0LiBzb3JyeS4gcmFqIDIwMDItMDYtMjEgKi8KICAgICAgIHByaW50ZigibmV0cGVyZjogc2VuZF9zZHBfbWFlcnRzOiB0ZXN0IG11c3QgYmUgdGltZWRcbiIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5ICovCiAgICAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KICAgICAvKiB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCi0gICAgCisKICAgICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgICAKKwogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgSU5URVJWQUxTX0lOSVQoKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwpAQCAtMTIxOCw3ICsxMjE4LDcgQEAKICAgICAgIEhJU1RfdGltZXN0YW1wKCZ0aW1lX29uZSk7CiAgICAgfQogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCi0gICAgCisKICAgICB3aGlsZSAoKCF0aW1lc191cCkgJiYgKGxlbj1yZWN2KHJlY3Zfc29ja2V0LAogCQkJCSAgICByZWN2X3JpbmctPmJ1ZmZlcl9wdHIsCiAJCQkJICAgIHJlY3Zfc2l6ZSwKQEAgLTEyMzAsNyArMTIzMCw3IEBACiAJSElTVF90aW1lc3RhbXAoJnRpbWVfdHdvKTsKIAlISVNUX2FkZCh0aW1lX2hpc3QsZGVsdGFfbWljcm8oJnRpbWVfb25lLCZ0aW1lX3R3bykpOwogICAgICAgfQotI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovICAgICAgCisjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogI2lmZGVmIERJUlRZCiAgICAgICBhY2Nlc3NfYnVmZmVyKHJlY3ZfcmluZy0+YnVmZmVyX3B0ciwKQEAgLTEyNDMsMTYgKzEyNDMsMTYgQEAKICAgICAgIERFTU9fU1RSRUFNX0lOVEVSVkFMKGxlbik7CiAjZW5kaWYKIAotI2lmZGVmIFdBTlRfSU5URVJWQUxTICAgICAgCisjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICAgIElOVEVSVkFMU19XQUlUKCk7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAgIAorCiAgICAgICAvKiBub3cgd2Ugd2FudCB0byBtb3ZlIG91ciBwb2ludGVyIHRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSAqLwogICAgICAgLyogZGF0YSBidWZmZXIuLi53ZSBtYXkgYWxzbyB3YW50IHRvIHdyYXAgYmFjayB0byB0aGUgImJlZ2lubmluZyIgKi8KICAgICAgIC8qIG9mIHRoZSBidWZmZXJzcGFjZSwgc28gd2Ugd2lsbCBtb2QgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBzZW50ICovCiAgICAgICAvKiBieSB0aGUgcmVjdiB3aWR0aCwgYW5kIHVzZSB0aGF0IHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IHRvIGFkZCAqLwogICAgICAgLyogdG8gdGhlIGJhc2UgcG9pbnRlci4gKi8KLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorICAgICAgbnVtbWVzc2FnZXMrKzsKICAgICAgIHJlY3ZfcmluZyA9IHJlY3ZfcmluZy0+bmV4dDsKICAgICAgIGlmIChieXRlc19yZW1haW5pbmcpIHsKIAlieXRlc19yZW1haW5pbmcgLT0gbGVuOwpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAKIAlISVNUX3RpbWVzdGFtcCgmdGltZV9vbmUpOwogICAgICAgfQogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCi0gICAgCisKICAgICB9CiAKICAgICAvKiBhbiBFSU5UUiBpcyB0byBiZSBleHBlY3RlZCB3aGVuIHRoaXMgaXMgYSBub19jb250cm9sIHRlc3QgKi8KQEAgLTEyNzYsMTMgKzEyNzYsMTMgQEAKICAgICAgIHByaW50ZigibGVuIHdhcyAlZFxuIixsZW4pOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBpZiB3ZSBnZXQgaGVyZSwgaXQgbXVzdCBtZWFuIHdlIGhhZCBhIHJlY3YgcmV0dXJuIG9mIDAgYmVmb3JlCiAgICAgICAgdGhlIHdhdGNoZG9nIHRpbWVyIGV4cGlyZWQsIG9yIHRoZSB3YXRjaGRvZyB0aW1lciBleHBpcmVkIGFuZAogICAgICAgIHRoaXMgd2FzIGEgbm9fY29udHJvbCB0ZXN0ICovCiAKICAgICAvKiBUaGUgdGVzdCBpcyBvdmVyLiBGbHVzaCB0aGUgYnVmZmVycyB0byB0aGUgcmVtb3RlIGVuZC4gV2UgZG8gYQotICAgICAgIGdyYWNlZnVsIHJlbGVhc2UgdG8gdGVsbCB0aGUgIHJlbW90ZSB3ZSBoYXZlIGFsbCB0aGUgZGF0YS4gKi8gIAorICAgICAgIGdyYWNlZnVsIHJlbGVhc2UgdG8gdGVsbCB0aGUgIHJlbW90ZSB3ZSBoYXZlIGFsbCB0aGUgZGF0YS4gKi8KIAogICAgIC8qIGJ1dCBmaXJzdCwgaWYgdGhlIHZlcmJvc2l0eSBpcyBncmVhdGVyIHRoYW4gMSwgZmluZC1vdXQgd2hhdCAqLwogICAgIC8qIHRoZSBTRFAgbWF4aW11bSBzZWdtZW50X3NpemUgd2FzIChpZiBwb3NzaWJsZSkgKi8KQEAgLTEyOTAsMjMgKzEyOTAsMjMgQEAKICAgICAgIHNkcF9tc3MgPSAtMTsKICAgICAgIGdldF9zZHBfaW5mbyhyZWN2X3NvY2tldCwmc2RwX21zcyk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNodXRkb3duKHJlY3Zfc29ja2V0LFNIVVRfV1IpID09IFNPQ0tFVF9FUlJPUikgewogICAgICAgcGVycm9yKCJuZXRwZXJmOiBjYW5ub3Qgc2h1dGRvd24gc2RwIG1hZXJ0cyBzb2NrZXQiKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQogCiAgICAgc3RvcF90aW1lcigpOwotICAgIAorCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGxvY2FsIGVsYXBzZWQgdGltZSBmb3IgdGhlCiAgICAgICAgdGVzdCwgYW5kIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1Ci0gICAgICAgdXRpbGl6YXRpb24gKi8gCi0gICAgCisgICAgICAgdXRpbGl6YXRpb24gKi8KKwogICAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyAqLwogCQkJCQkJLyogbWVhc3VyZWQgYW5kIGhvdyAqLwogCQkJCQkJLyogbG9uZyBkaWQgd2UgcmVhbGx5ICovCiAJCQkJCQkvKiBydW4/ICovCi0gICAgCisKICAgICAvKiB3ZSBhcmUgZmluaXNoZWQgd2l0aCB0aGUgc29ja2V0LCBzbyBjbG9zZSBpdCB0byBwcmV2ZW50IGhpdHRpbmcgKi8KICAgICAvKiB0aGUgbGltaXQgb24gbWF4aW11bSBvcGVuIGZpbGVzLiAqLwogCkBAIC0xMzE3LDcgKzEzMTcsNyBAQAogICAgICAgICAgY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nCiAgICAgICAgICB0aGluZ3MuIElmIGl0IHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzCiAgICAgICAgICB2YWx1ZXMuICovCi0gICAgCisKICAgICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKIAlpZiAoZGVidWcpCkBAIC0xMzMwLDEwICsxMzMwLDEwIEBACiAJCW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKIAlwZXJyb3IoIiIpOwogCWZmbHVzaCh3aGVyZSk7Ci0JCisKIAlleGl0KDEpOwogICAgICAgfQotICAgICAgCisKICAgICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUKIAkgZnV0dXJlLCB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQKIAkgbWVhc3VyZWQgYnkgdGhlIHJlbW90ZSwgYnV0IGl0IHNob3VsZCBiZSB0aGUgY2FzZSB0aGF0IGZvciBhCkBAIC0xMzQzLDcgKzEzNDMsNyBAQAogCSBhbmQgaWYgaXQgd2FzIGJ5IGJ5dGVzLCB0aGUgdXNlciBtYXkgaGF2ZSBzcGVjaWZpZWQgYSBudW1iZXIKIAkgb2YgYnl0ZXMgdGhhdCB3YXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgcmVjdl9zaXplLCBzbyB3ZQogCSByZWFsbHkgZGlkbid0IHJlY3Ygd2hhdCBoZSBhc2tlZCBmb3IgOy0pICovCi0gICAgCisKICAgICAgIGJ5dGVzX3NlbnQJPSBudG9oZChzZHBfbWFlcnRzX3Jlc3VsdC0+Ynl0ZXNfc2VudCk7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMTM2MCw3ICsxMzYwLDcgQEAKICAgICAgIC8qIHRoZXJlIHdhcyBubyBpZGxlIGNvdW50ZXIgaW4gdGhlIGtlcm5lbChzKS4gV2UgbmVlZCB0byBtYWtlICovCiAgICAgICAvKiBhIG5vdGUgb2YgdGhpcyBmb3IgdGhlIHVzZXIncyBiZW5lZml0Li4uKi8KICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKLQkKKwogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IGNhbGNfY3B1X3V0aWwoMC4wKTsKIAlsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTEzNzEsOSArMTM3MSw5IEBACiAJbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gKGZsb2F0KSAtMS4wOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7Ci0JCisKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uCT0gc2RwX21hZXJ0c19yZXN1bHQtPmNwdV91dGlsOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKIAkJCQkJCSAgICAgIDAuMCwKQEAgLTEzODQsNyArMTM4NCw3IEBACiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IChmbG9hdCkgLTEuMDsKIAlyZW1vdGVfc2VydmljZV9kZW1hbmQgID0gKGZsb2F0KSAtMS4wOwogICAgICAgfQotICAgIH0gICAgCisgICAgfQogICAgIGVsc2UgewogICAgICAgLyogd2Ugd2VyZSBub3QgbWVhc3VyaW5nIGNwdSwgZm9yIHRoZSBjb25maWRlbmNlIHN0dWZmLCB3ZSAqLwogICAgICAgLyogc2hvdWxkIG1ha2UgaXQgLTEuMCAqLwpAQCAtMTQwNSw4ICsxNDA1LDggQEAKIAkJCSByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQkJIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7Ci0gICAgCi0gICAgCisKKwogICAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uKys7CiAgIH0KIApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKGNwdV9tZXRob2QpOwogICAgIHJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2Qoc2RwX21hZXJ0c19yZXN1bHQtPmNwdV9tZXRob2QpOwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC0xNDUyLDcgKzE0NTIsNyBAQAogCQljcHVfZm10XzAsCiAJCWxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQlsb2NhbF9jcHVfbWV0aG9kLAotCQkoKHByaW50X2hlYWRlcnMpIHx8IAorCQkoKHByaW50X2hlYWRlcnMpIHx8CiAJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIH0KICAgICAgIGVsc2UgewpAQCAtMTQ2MCw3ICsxNDYwLDcgQEAKIAkJY3B1X2ZtdF8wLAogCQlyZW1vdGVfc2VydmljZV9kZW1hbmQsCiAJCXJlbW90ZV9jcHVfbWV0aG9kLAotCQkoKHByaW50X2hlYWRlcnMpIHx8IAorCQkoKHByaW50X2hlYWRlcnMpIHx8CiAJCSAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAKIAkJbG9jYWxfY3B1X21ldGhvZCwKIAkJcmVtb3RlX2NwdV9tZXRob2QpOwogICAgICAgfQotICAgIAorCiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgIGNwdV9mbXRfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCiAJICAgICAgcnNyX3NpemUsCQkgICAgICAgIC8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KQEAgLTE0ODUsMjAgKzE0ODUsMjAgQEAKIAkgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAkvKiByZW1vdGUgY3B1ICovCiAJICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQsCS8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kICovCiAJICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kLAkvKiByZW1vdGUgc2VydmljZSBkZW1hbmQgKi8KLQkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8IAorCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwKIAkgICAgICAgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZSB7CiAgICAgLyogVGhlIHRlc3RlciBkaWQgbm90IHdpc2ggdG8gbWVhc3VyZSBzZXJ2aWNlIGRlbWFuZC4gKi8KLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICB0cHV0X2ZtdF8wLAogCSAgICAgIHRocnVwdXQsCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAxOgpAQCAtMTUxMywyNyArMTUxMywyNyBAQAogCSAgICAgIHNlbmRfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZWN2cyAqLwogCSAgICAgIGVsYXBzZWRfdGltZSwgCQkvKiBob3cgbG9uZyBkaWQgaXQgdGFrZSAqLwogCSAgICAgIHRocnVwdXQsICAgICAgICAgICAgICAgICAgLyogaG93IGZhc3QgZGlkIGl0IGdvICovCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFNEUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAKKwogICAgIC8qIHRoaXMgc3R1ZmYgbmVlZHMgdG8gYmUgd29ya2VkLW91dCBpbiB0aGUgcHJlc2VuY2Ugb2YgY29uZmlkZW5jZSAqLwogICAgIC8qIGludGVydmFscyBhbmQgbXVsdGlwbGUgaXRlcmF0aW9ucyBvZiB0aGUgdGVzdC4uLiByYWogMTEvOTQgKi8KLSAKKwogICAgIGZwcmludGYod2hlcmUsCiAJICAgIGtzaW5rX2ZtdCwKIAkgICAgIkJ5dGVzIiwKQEAgLTE1NTgsNyArMTU1OCw3IEBACiAgICAgSElTVF9yZXBvcnQodGltZV9oaXN0KTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogICB9Ci0gIAorCiB9CiAvKiBUaGlzIGlzIHRoZSBzZXJ2ZXItc2lkZSByb3V0aW5lIGZvciB0aGUgc2RwIHN0cmVhbSB0ZXN0LiBJdCBpcyAqLwogLyogaW1wbGVtZW50ZWQgYXMgb25lIHJvdXRpbmUuIEkgY291bGQgYnJlYWsgdGhpbmdzLW91dCBzb21ld2hhdCwgYnV0ICovCkBAIC0xNTY3LDcgKzE1NjcsNyBAQAogdm9pZAogcmVjdl9zZHBfc3RyZWFtKCkKIHsKLSAgCisKICAgc3RydWN0IHNvY2thZGRyX2luIG15YWRkcl9pbiwgcGVlcmFkZHJfaW47CiAgIFNPQ0tFVCBzX2xpc3RlbixzX2RhdGE7CiAgIG5ldHBlcmZfc29ja2xlbl90IGFkZHJsZW47CkBAIC0xNTc1LDcgKzE1NzUsNyBAQAogICB1bnNpZ25lZCBpbnQJcmVjZWl2ZV9jYWxsczsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwogICBkb3VibGUgICBieXRlc19yZWNlaXZlZDsKLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7CiAKICAgc3RydWN0IGFkZHJpbmZvICpsb2NhbF9yZXM7CkBAIC0xNTkwLDI1ICsxNTkwLDI1IEBACiAgIHN0cnVjdAlzZHBfc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSpzZHBfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlzZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqc2RwX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CXNkcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnNkcF9zdHJlYW1fcmVzdWx0czsKLSAgCisKICNpZmRlZiBET19TRUxFQ1QKICAgRkRfWkVSTygmcmVhZGZkcyk7CiAgIHRpbWVvdXQudHZfc2VjID0gMTsKICAgdGltZW91dC50dl91c2VjID0gMDsKICNlbmRpZiAvKiBET19TRUxFQ1QgKi8KIAotICBzZHBfc3RyZWFtX3JlcXVlc3QJPSAKKyAgc2RwX3N0cmVhbV9yZXF1ZXN0CT0KICAgICAoc3RydWN0IHNkcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHNkcF9zdHJlYW1fcmVzcG9uc2UJPSAKKyAgc2RwX3N0cmVhbV9yZXNwb25zZQk9CiAgICAgKHN0cnVjdCBzZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHNkcF9zdHJlYW1fcmVzdWx0cwk9IAorICBzZHBfc3RyZWFtX3Jlc3VsdHMJPQogICAgIChzdHJ1Y3Qgc2RwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl9zZHBfc3RyZWFtOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTE2MTYsMjcgKzE2MTYsMjcgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3NkcF9zdHJlYW06IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBTRFBfU1RSRUFNX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3NkcF9zdHJlYW06IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlIHRvIGJlIGF0IHRoZSBkZXNpcmVkICovCiAgIC8qIGFsaWdubWVudCB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9zZHBfc3RyZWFtOiByZXF1ZXN0ZWQgYWxpZ25tZW50IG9mICVkXG4iLAogCSAgICBzZHBfc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50KTsKQEAgLTE2NzAsMjAgKzE2NzAsMjAgQEAKICAgbG9jYWxfcmVzLT5haV9mYW1pbHkgPSBBRl9JTkVUX1NEUDsKICAgbG9jYWxfcmVzLT5haV9wcm90b2NvbCA9IDA7CiAgIHNfbGlzdGVuID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgIGlmIChzX2xpc3RlbiA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICNpZmRlZiBXSU4zMgogICAvKiBUaGUgdGVzdCB0aW1lciBjYW4gZmlyZSBkdXJpbmcgb3BlcmF0aW9ucyBvbiB0aGUgbGlzdGVuaW5nIHNvY2tldCwKICAgICAgc28gdG8gbWFrZSB0aGUgc3RhcnRfdGltZXIgYmVsb3cgd29yayB3ZSBoYXZlIHRvIG1vdmUKICAgICAgaXQgdG8gY2xvc2Ugc19saXN0ZW4gd2hpbGUgd2UgYXJlIGJsb2NrZWQgb24gYWNjZXB0LiAqLwogICB3aW5fa2x1ZGdlX3NvY2tldDIgPSBzX2xpc3RlbjsKICNlbmRpZgotICAKKwogICAvKiB3aGF0IHNvcnQgb2Ygc2l6ZXMgZGlkIHdlIGVuZC11cCB3aXRoPyAqLwogICBpZiAoc2RwX3N0cmVhbV9yZXF1ZXN0LT5yZWNlaXZlX3NpemUgPT0gMCkgewogICAgIGlmIChsc3Jfc2l6ZSA+IDApIHsKQEAgLTE2OTYsNyArMTY5Niw3IEBACiAgIGVsc2UgewogICAgIHJlY3Zfc2l6ZSA9IHNkcF9zdHJlYW1fcmVxdWVzdC0+cmVjZWl2ZV9zaXplOwogICB9Ci0gIAorCiAgIC8qIHdlIHdhbnQgdG8gc2V0LXVwIG91ciByZWN2X3JpbmcgaW4gYSBtYW5uZXIgYW5hbGFnb3VzIHRvIHdoYXQgd2UgKi8KICAgLyogZG8gb24gdGhlIHNlbmRpbmcgc2lkZS4gdGhpcyBpcyBtb3JlIGZvciB0aGUgc2FrZSBvZiBzeW1tZXRyeSAqLwogICAvKiB0aGFuIGZvciB0aGUgbmVlZHMgb2Ygc2F5IGNvcHkgYXZvaWRhbmNlLCBidXQgaXQgbWlnaHQgYWxzbyBiZSAqLwpAQCAtMTcxOCw1MiArMTcxOCw1MiBAQAogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc2RwX3N0cmVhbTogcmVjZWl2ZSBhbGlnbm1lbnQgYW5kIG9mZnNldCBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogTm93LCBsZXQncyBzZXQtdXAgdGhlIHNvY2tldCB0byBsaXN0ZW4gZm9yIGNvbm5lY3Rpb25zICovCiAgIGlmIChsaXN0ZW4oc19saXN0ZW4sIDUpID09IFNPQ0tFVF9FUlJPUikgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIAorCisKICAgLyogbm93IGdldCB0aGUgcG9ydCBudW1iZXIgYXNzaWduZWQgYnkgdGhlIHN5c3RlbSAgKi8KICAgYWRkcmxlbiA9IHNpemVvZihteWFkZHJfaW4pOwotICBpZiAoZ2V0c29ja25hbWUoc19saXN0ZW4sIAorICBpZiAoZ2V0c29ja25hbWUoc19saXN0ZW4sCiAJCSAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfaW4sCiAJCSAgJmFkZHJsZW4pID09IFNPQ0tFVF9FUlJPUil7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKKwogICBzZHBfc3RyZWFtX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gKGludCkgbnRvaHMobXlhZGRyX2luLnNpbl9wb3J0KTsKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAtMSB0byAqLwogICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKwogICBzZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IChmbG9hdCkwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmIChzZHBfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgc2RwX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwotICAgIHNkcF9zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0gCisgICAgc2RwX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgPQogICAgICAgY2FsaWJyYXRlX2xvY2FsX2NwdShzZHBfc3RyZWFtX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQogICBlbHNlIHsKICAgICBzZHBfc3RyZWFtX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDA7CiAgIH0KLSAgCisKICAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCiAgIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICBzZHBfc3RyZWFtX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplID0gbHNzX3NpemU7CkBAIC0xNzc0LDkgKzE3NzQsOSBAQAogICBzZHBfc3RyZWFtX3Jlc3BvbnNlLT5yZWNlaXZlX3NpemUgPSByZWN2X3NpemU7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICBhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyX2luKTsKLSAgCisKICAgaWYgKChzX2RhdGE9YWNjZXB0KHNfbGlzdGVuLAogCQkgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmcGVlcmFkZHJfaW4sCiAJCSAgICAgJmFkZHJsZW4pKSA9PSBJTlZBTElEX1NPQ0tFVCkgewpAQCAtMTc5MywxNSArMTc5MywxNSBAQAogICBrbHVkZ2Vfc29ja2V0X29wdGlvbnMoc19kYXRhKTsKIAogI2VuZGlmIC8qIEtMVURHRV9TT0NLRVRfT1BUSU9OUyAqLwotICAKKwogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydChzZHBfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCisKICAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHNlbmRlciBkb2VzIGEgc2h1dGRvd24sIHdoaWNoIHdpbGwgKi8KICAgLyogcmV0dXJuIGEgbGVuZ3RoIG9mIHplcm8gICAqLwotICAKKwogICAvKiB0aGVyZSB1c2VkIHRvIGJlIGFuICNpZmRlZiBESVJUWSBjYWxsIHRvIGFjY2Vzc19idWZmZXIoKSBoZXJlLAogICAgICBidXQgd2UgaGF2ZSBzd2l0Y2hlZCBmcm9tIGFjY2Vzc2luZyB0aGUgYnVmZmVyIGJlZm9yZSB0aGUgcmVjdigpCiAgICAgIGNhbGwgdG8gYWNjZXNzaW5nIHRoZSBidWZmZXIgYWZ0ZXIgdGhlIHJlY3YoKSBjYWxsLiAgVGhlCkBAIC0xODQzLDcgKzE4NDMsNyBAQAogI2VuZGlmIC8qIERPX1NFTEVDVCAqLwogCiAgIH0KLSAgCisKICAgLyogcGVyZm9ybSBhIHNodXRkb3duIHRvIHNpZ25hbCB0aGUgc2VuZGVyIHRoYXQgKi8KICAgLyogd2UgaGF2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEgc2VudC4gcmFqIDQvOTMgKi8KIApAQCAtMTg1MiwxMSArMTg1MiwxMSBAQAogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gIAorCiAgIGNwdV9zdG9wKHNkcF9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3NkcF9zdHJlYW06IGdvdCAlZyBieXRlc1xuIiwKQEAgLTE4NjYsMTggKzE4NjYsMTggQEAKIAkgICAgcmVjZWl2ZV9jYWxscyk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBzZHBfc3RyZWFtX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gaHRvbmQoYnl0ZXNfcmVjZWl2ZWQpOwogICBzZHBfc3RyZWFtX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQk9IGVsYXBzZWRfdGltZTsKICAgc2RwX3N0cmVhbV9yZXN1bHRzLT5yZWN2X2NhbGxzCT0gcmVjZWl2ZV9jYWxsczsKLSAgCisKICAgc2RwX3N0cmVhbV9yZXN1bHRzLT5jcHVfbWV0aG9kID0gY3B1X21ldGhvZDsKICAgc2RwX3N0cmVhbV9yZXN1bHRzLT5udW1fY3B1cyAgID0gbGliX251bV9sb2NfY3B1czsKLSAgCisKICAgaWYgKHNkcF9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBzZHBfc3RyZWFtX3Jlc3VsdHMtPmNwdV91dGlsCT0gY2FsY19jcHVfdXRpbCgwLjApOwogICB9OwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9zZHBfc3RyZWFtOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKQEAgLTE5MDEsMTIgKzE5MDEsMTIgQEAKIAwKIC8qIFRoaXMgaXMgdGhlIHNlcnZlci1zaWRlIHJvdXRpbmUgZm9yIHRoZSBzZHAgbWFlcnRzIHRlc3QuIEl0IGlzCiAgICBpbXBsZW1lbnRlZCBhcyBvbmUgcm91dGluZS4gSSBjb3VsZCBicmVhayB0aGluZ3Mtb3V0IHNvbWV3aGF0LCBidXQKLSAgIGRpZG4ndCBmZWVsIGl0IHdhcyBuZWNlc3NhcnkuICovIAorICAgZGlkbid0IGZlZWwgaXQgd2FzIG5lY2Vzc2FyeS4gKi8KIAogdm9pZAogcmVjdl9zZHBfbWFlcnRzKCkKIHsKLSAgCisKICAgc3RydWN0IHNvY2thZGRyX2luIG15YWRkcl9pbiwgcGVlcmFkZHJfaW47CiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwogICBjaGFyICBsb2NhbF9uYW1lW0JVRlNJWl07CkBAIC0xOTE4LDI1ICsxOTE4LDI1IEBACiAgIHVuc2lnbmVkIGludAlzZW5kX2NhbGxzOwogICBmbG9hdAllbGFwc2VkX3RpbWU7CiAgIGRvdWJsZSAgIGJ5dGVzX3NlbnQgPSAwLjAgOwotICAKKwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKIAogICBzdHJ1Y3QJc2RwX21hZXJ0c19yZXF1ZXN0X3N0cnVjdAkqc2RwX21hZXJ0c19yZXF1ZXN0OwogICBzdHJ1Y3QJc2RwX21hZXJ0c19yZXNwb25zZV9zdHJ1Y3QJKnNkcF9tYWVydHNfcmVzcG9uc2U7CiAgIHN0cnVjdAlzZHBfbWFlcnRzX3Jlc3VsdHNfc3RydWN0CSpzZHBfbWFlcnRzX3Jlc3VsdHM7Ci0gIAotICBzZHBfbWFlcnRzX3JlcXVlc3QJPSAKKworICBzZHBfbWFlcnRzX3JlcXVlc3QJPQogICAgIChzdHJ1Y3Qgc2RwX21hZXJ0c19yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgc2RwX21hZXJ0c19yZXNwb25zZQk9IAorICBzZHBfbWFlcnRzX3Jlc3BvbnNlCT0KICAgICAoc3RydWN0IHNkcF9tYWVydHNfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgc2RwX21hZXJ0c19yZXN1bHRzCT0gCisgIHNkcF9tYWVydHNfcmVzdWx0cwk9CiAgICAgKHN0cnVjdCBzZHBfbWFlcnRzX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X3NkcF9tYWVydHM6IGVudGVyZWQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQKICAgICAgcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZgogICAgICBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZQpAQCAtMTk0NCwyNyArMTk0NCwyNyBAQAogICAgICBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUKICAgICAgZGV0ZXJtaW5lZCwgdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28KICAgICAgd3JvbmcgZm9yIGFueSByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KLSAgCisKICAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0CiAgICAgIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzCiAgICAgIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMKICAgICAgdW5leHBlY3RlZCByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc2RwX21hZXJ0czogc2V0dGluZyB0aGUgcmVzcG9uc2UgdHlwZS4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IFNEUF9NQUVSVFNfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc2RwX21hZXJ0czogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGUgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KICAgLyogYWxpZ25tZW50IHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3NkcF9tYWVydHM6IHJlcXVlc3RlZCBhbGlnbm1lbnQgb2YgJWRcbiIsCiAJICAgIHNkcF9tYWVydHNfcmVxdWVzdC0+c2VuZF9hbGlnbm1lbnQpOwpAQCAtMTk3MiwxMiArMTk3MiwxMiBAQAogICB9CiAKICAgLyogR3JhYiBhIHNvY2tldCB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9zZHBfbWFlcnRzOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBjcmVhdGVfZGF0YV9zb2NrZXQgZXhwZWN0cyB0byBmaW5kIHNvbWUgdGhpbmdzIGluIHRoZSBnbG9iYWwgKi8KICAgLyogdmFyaWFibGVzLCBzbyBzZXQgdGhlIGdsb2JhbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBpbiB0aGUgcmVxdWVzdC4gKi8KICAgLyogb25jZSB0aGUgc29ja2V0IGhhcyBiZWVuIGNyZWF0ZWQsIHdlIHdpbGwgc2V0IHRoZSByZXNwb25zZSB2YWx1ZXMgKi8KQEAgLTIwMDUsMTMgKzIwMDUsMTMgQEAKICAgbG9jYWxfcmVzLT5haV9mYW1pbHkgPSBBRl9JTkVUX1NEUDsKICAgbG9jYWxfcmVzLT5haV9wcm90b2NvbCA9IDA7CiAgIHNfbGlzdGVuID0gY3JlYXRlX2RhdGFfc29ja2V0KGxvY2FsX3Jlcyk7Ci0gIAorCiAgIGlmIChzX2xpc3RlbiA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICNpZmRlZiBXSU4zMgogICAvKiBUaGUgdGVzdCB0aW1lciBjYW4gZmlyZSBkdXJpbmcgb3BlcmF0aW9ucyBvbiB0aGUgbGlzdGVuaW5nIHNvY2tldCwKICAgICAgc28gdG8gbWFrZSB0aGUgc3RhcnRfdGltZXIgYmVsb3cgd29yayB3ZSBoYXZlIHRvIG1vdmUKQEAgLTIwMTksNyArMjAxOSw3IEBACiAgIHdpbl9rbHVkZ2Vfc29ja2V0MiA9IHNfbGlzdGVuOwogI2VuZGlmCiAKLSAgCisKICAgLyogd2hhdCBzb3J0IG9mIHNpemVzIGRpZCB3ZSBlbmQtdXAgd2l0aD8gKi8KICAgaWYgKHNkcF9tYWVydHNfcmVxdWVzdC0+c2VuZF9zaXplID09IDApIHsKICAgICBpZiAobHNzX3NpemUgPiAwKSB7CkBAIC0yMDMyLDcgKzIwMzIsNyBAQAogICBlbHNlIHsKICAgICBzZW5kX3NpemUgPSBzZHBfbWFlcnRzX3JlcXVlc3QtPnNlbmRfc2l6ZTsKICAgfQotICAKKwogICAvKiB3ZSB3YW50IHRvIHNldC11cCBvdXIgcmVjdl9yaW5nIGluIGEgbWFubmVyIGFuYWxhZ291cyB0byB3aGF0IHdlICovCiAgIC8qIGRvIG9uIHRoZSByZWN2aW5nIHNpZGUuIHRoaXMgaXMgbW9yZSBmb3IgdGhlIHNha2Ugb2Ygc3ltbWV0cnkgKi8KICAgLyogdGhhbiBmb3IgdGhlIG5lZWRzIG9mIHNheSBjb3B5IGF2b2lkYW5jZSwgYnV0IGl0IG1pZ2h0IGFsc28gYmUgKi8KQEAgLTIwNTQsNTIgKzIwNTQsNTIgQEAKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3NkcF9tYWVydHM6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIE5vdywgbGV0J3Mgc2V0LXVwIHRoZSBzb2NrZXQgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyAqLwogICBpZiAobGlzdGVuKHNfbGlzdGVuLCA1KSA9PSBTT0NLRVRfRVJST1IpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIGNsb3NlKHNfbGlzdGVuKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAKKworCiAgIC8qIG5vdyBnZXQgdGhlIHBvcnQgbnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGFkZHJsZW4gPSBzaXplb2YobXlhZGRyX2luKTsKLSAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLCAKKyAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLAogCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX2luLAogCQkgICZhZGRybGVuKSA9PSBTT0NLRVRfRVJST1IpewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCisKICAgc2RwX21hZXJ0c19yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlciA9IChpbnQpIG50b2hzKG15YWRkcl9pbi5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgLTEgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgc2RwX21hZXJ0c19yZXNwb25zZS0+Y3B1X3JhdGUgPSAoZmxvYXQpMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICBpZiAoc2RwX21hZXJ0c19yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHNkcF9tYWVydHNfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKLSAgICBzZHBfbWFlcnRzX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHNkcF9tYWVydHNfcmVzcG9uc2UtPmNwdV9yYXRlID0KICAgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUoc2RwX21hZXJ0c19yZXF1ZXN0LT5jcHVfcmF0ZSk7CiAgIH0KICAgZWxzZSB7CiAgICAgc2RwX21hZXJ0c19yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAwOwogICB9Ci0gIAorCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgc2RwX21hZXJ0c19yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOwpAQCAtMjExMCw3ICsyMTEwLDcgQEAKICAgc2RwX21hZXJ0c19yZXNwb25zZS0+c2VuZF9zaXplID0gc2VuZF9zaXplOwogCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7CiAKICAgLyogd2Ugd2lsbCBzdGFydCB0aGUgdGltZXIgYmVmb3JlIHRoZSBhY2NlcHQoKSB0byBiZSBzb21ld2hhdApAQCAtMjEyMSw5ICsyMTIxLDkgQEAKIAogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsCiAgICAgIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydChzZHBfbWFlcnRzX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCisKIAogICBpZiAoKHNfZGF0YT1hY2NlcHQoc19saXN0ZW4sCiAJCSAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZwZWVyYWRkcl9pbiwKQEAgLTIxMzQsNyArMjEzNCw3IEBACiAgIH0KIAogI2lmZGVmIEtMVURHRV9TT0NLRVRfT1BUSU9OUwotICAKKwogICAvKiB0aGlzIGlzIGZvciB0aG9zZSBzeXN0ZW1zIHdoaWNoICpJTkNPUlJFQ1RMWSogZmFpbCB0byBwYXNzCiAgICAgIGF0dHJpYnV0ZXMgYWNyb3NzIGFuIGFjY2VwdCgpIGNhbGwuIEluY2x1ZGluZyB0aGlzIGdvZXMgYWdhaW5zdAogICAgICBteSBiZXR0ZXIganVkZ2VtZW50IDooIHJhaiAxMS85NSAqLwpAQCAtMjE0MiwxMCArMjE0MiwxMCBAQAogICBrbHVkZ2Vfc29ja2V0X29wdGlvbnMoc19kYXRhKTsKIAogI2VuZGlmIC8qIEtMVURHRV9TT0NLRVRfT1BUSU9OUyAqLwotICAKKwogICAvKiBUaGUgbG9vcCB3aWxsIGV4aXQgd2hlbiB0aGUgc2VuZGVyIGRvZXMgYSBzaHV0ZG93biwgd2hpY2ggd2lsbCAqLwogICAvKiByZXR1cm4gYSBsZW5ndGggb2YgemVybyAgICovCi0gIAorCiAgIGJ5dGVzX3NlbnQgPSAwLjA7CiAgIHNlbmRfY2FsbHMgID0gMDsKIApAQCAtMjE4Nyw3ICsyMTg3LDcgQEAKICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7CiAKICAgfQotICAKKwogICAvKiBwZXJmb3JtIGEgc2h1dGRvd24gdG8gc2lnbmFsIHRoZSBzZW5kZXIgdGhhdCAqLwogICAvKiB3ZSBoYXZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSBzZW50LiByYWogNC85MyAqLwogCkBAIC0yMjAxLDE0ICsyMjAxLDE0IEBACiAgICAgIGJyb3VnaHQgYWxsIHRoZSBkYXRhIHVwIGludG8gdGhlIGFwcGxpY2F0aW9uLiBpdCB3aWxsIGRvIGEKICAgICAgc2h1dGRvd24gdG8gY2F1c2UgYSBGSU4gdG8gYmUgc2VudCBvdXIgd2F5LiBXZSB3aWxsIGFzc3VtZSB0aGF0CiAgICAgIGFueSBleGl0IGZyb20gdGhlIHJlY3YoKSBjYWxsIGlzIGdvb2QuLi4gcmFqIDQvOTMgKi8KLSAgICAKKwogICByZWN2KHNfZGF0YSwgc2VuZF9yaW5nLT5idWZmZXJfcHRyLCBzZW5kX3NpemUsIDApOwotICAgIAotICAKKworCiAgIGNwdV9zdG9wKHNkcF9tYWVydHNfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3NkcF9tYWVydHM6IGdvdCAlZyBieXRlc1xuIiwKQEAgLTIyMTgsMTUgKzIyMTgsMTUgQEAKIAkgICAgc2VuZF9jYWxscyk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBzZHBfbWFlcnRzX3Jlc3VsdHMtPmJ5dGVzX3NlbnQJPSBodG9uZChieXRlc19zZW50KTsKICAgc2RwX21hZXJ0c19yZXN1bHRzLT5lbGFwc2VkX3RpbWUJPSBlbGFwc2VkX3RpbWU7CiAgIHNkcF9tYWVydHNfcmVzdWx0cy0+c2VuZF9jYWxscwk9IHNlbmRfY2FsbHM7Ci0gIAorCiAgIGlmIChzZHBfbWFlcnRzX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgc2RwX21hZXJ0c19yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoMC4wKTsKICAgfTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3Zfc2RwX21hZXJ0czogdGVzdCBjb21wbGV0ZSwgc2VuZGluZyByZXN1bHRzLlxuIik7CkBAIC0yMjM5LDcgKzIyMzksNyBAQAogCSAgICBsZW4pOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2RwX21hZXJ0c19yZXN1bHRzLT5jcHVfbWV0aG9kID0gY3B1X21ldGhvZDsKICAgc2RwX21hZXJ0c19yZXN1bHRzLT5udW1fY3B1cyAgID0gbGliX251bV9sb2NfY3B1czsKICAgc2VuZF9yZXNwb25zZSgpOwpAQCAtMjI1Nyw0NiArMjI1Nyw0NiBAQAogdm9pZAogc2VuZF9zZHBfcnIoY2hhciByZW1vdGVfaG9zdFtdKQogewotICAKKwogICBjaGFyICp0cHV0X3RpdGxlID0gIlwKIExvY2FsIC9SZW1vdGVcblwKIFNvY2tldCBTaXplICAgUmVxdWVzdCAgUmVzcC4gICBFbGFwc2VkICBUcmFucy5cblwKIFNlbmQgICBSZWN2ICAgU2l6ZSAgICAgU2l6ZSAgICBUaW1lICAgICBSYXRlICAgICAgICAgXG5cCiBieXRlcyAgQnl0ZXMgIGJ5dGVzICAgIGJ5dGVzICAgc2Vjcy4gICAgcGVyIHNlYyAgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmYgJXNcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAgJS02ZCAgJS02LjJmICAgJTcuMmYgICAlc1xuIjsKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgIFJhdGUgICAgIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAlYyAgICAlJSAlYyAgICB1cy9UciAgIHVzL1RyXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmICVjICVzXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAlLTZkICUtNi4yZiAgJS02LjJmICAlLTYuMmYgJS02LjJmICUtNi4zZiAgJS02LjNmICVzXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8yID0gIlwKICUtNmQgJS02ZFxuIjsKLSAgCisKICAgY2hhciAqa3NpbmtfZm10ID0gIlwKIEFsaWdubWVudCAgICAgIE9mZnNldFxuXAogTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZVxuXAogU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3ZcblwKICU1ZCAgJTVkICAgJTVkICAlNWRcbiI7Ci0gIAotICAKKworCiAgIGludAkJCXRpbWVkX291dCA9IDA7CiAgIGZsb2F0CQkJZWxhcHNlZF90aW1lOwotICAKKwogICBpbnQJbGVuOwogICBjaGFyCSp0ZW1wX21lc3NhZ2VfcHRyOwogICBpbnQJbnVtbWVzc2FnZXM7CkBAIC0yMzA2LDE2ICsyMzA2LDE2IEBACiAKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwotICAKKwogICBpbnQJcnNwX2J5dGVzX2xlZnQ7CiAgIGludAlyc3BfYnl0ZXNfcmVjdmQ7Ci0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdCBhZGRyaW5mbyAqbG9jYWxfcmVzOwogICBzdHJ1Y3QgYWRkcmluZm8gKnJlbW90ZV9yZXM7CiAKQEAgLTIzNDgsMTMgKzIzNDgsMTMgQEAKIAkJCQkJICAgICAgIHNlbmQgKi8KICNlbmRpZgogCi0gIHNkcF9ycl9yZXF1ZXN0ID0gCisgIHNkcF9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHNkcF9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc2RwX3JyX3Jlc3BvbnNlPQogICAgIChzdHJ1Y3Qgc2RwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHNkcF9ycl9yZXN1bHQJPQogICAgIChzdHJ1Y3Qgc2RwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CkBAIC0yMzc2LDkgKzIzNzYsOSBAQAogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRfdG9wX3Rlc3RfaGVhZGVyKCJTRFAgUkVRVUVTVC9SRVNQT05TRSBURVNUIixsb2NhbF9yZXMscmVtb3RlX3Jlcyk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBzZW5kX3JpbmcgPSBOVUxMOwogICByZWN2X3JpbmcgPSBOVUxMOwogICBjb25maWRlbmNlX2l0ZXJhdGlvbiA9IDE7CkBAIC0yNDE4LDcgKzI0MTgsNyBAQAogCiAgICAgaWYgKHNlbmRfd2lkdGggPT0gMCkgc2VuZF93aWR0aCA9IDE7CiAgICAgaWYgKHJlY3Zfd2lkdGggPT0gMCkgcmVjdl93aWR0aCA9IDE7Ci0gIAorCiAgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7CiAgICAgICBzZW5kX3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhzZW5kX3dpZHRoLAogCQkJCSAgICAgICByZXFfc2l6ZSwKQEAgLTI0MzIsMzMgKzI0MzIsMzMgQEAKIAkJCQkgICAgICAgbG9jYWxfcmVjdl9hbGlnbiwKIAkJCQkgICAgICAgbG9jYWxfcmVjdl9vZmZzZXQpOwogICAgIH0KLSAgICAKKwogICAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldCAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgLyogZmFrZSB0aGluZ3Mgb3V0IGJ5IGNoYW5naW5nIGxvY2FsX3Jlcy0+YWlfZmFtaWx5IHRvIEFGX0lORVRfU0RQICovCiAgICAgbG9jYWxfcmVzLT5haV9mYW1pbHkgPSBBRl9JTkVUX1NEUDsKICAgICBsb2NhbF9yZXMtPmFpX3Byb3RvY29sID0gMDsKICAgICBzZW5kX3NvY2tldCA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICAgIGlmIChzZW5kX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfc2RwX3JyOiBzZHAgc3RyZWFtIGRhdGEgc29ja2V0Iik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF9zZHBfcnI6IHNlbmRfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgICB9Ci0gIAorCiAgICAgLyogSWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCBjcHUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLCB3ZSBtdXN0ICovCiAgICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAgIC8qIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuICovCiAgICAgLyogY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUgKi8KICAgICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAgIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiovCi0gICAgCisKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgICBsb2NhbF9jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUobG9jYWxfY3B1X3JhdGUpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghbm9fY29udHJvbCkgewogICAgICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlCiAJIHNvY2tldCBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlCkBAIC0yNDY4LDcgKzI0NjgsNyBAQAogCSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyBkZWZhdWx0IHNob3VsZCBiZQogCSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQgd2lsbCBkZWZhdWx0IHRvIDgsIHdoaWNoCiAJIHdpbGwgYmUgbm8gYWxpZ25tZW50IGFsdGVyYXRpb25zLiAqLwotICAgIAorCiAgICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUJPQlET19TRFBfUlI7CiAgICAgICBzZHBfcnJfcmVxdWVzdC0+cmVjdl9idWZfc2l6ZQk9CXJzcl9zaXplX3JlcTsKICAgICAgIHNkcF9ycl9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemVfcmVxOwpAQCAtMjQ5MSwxMyArMjQ5MSwxMyBAQAogICAgICAgfQogICAgICAgc2RwX3JyX3JlcXVlc3QtPnBvcnQgICAgICAgICAgICAgID0gICAgICBhdG9pKHJlbW90ZV9kYXRhX3BvcnQpOwogICAgICAgc2RwX3JyX3JlcXVlc3QtPmlwZmFtaWx5ID0gYWZfdG9fbmYocmVtb3RlX3Jlcy0+YWlfZmFtaWx5KTsKLSAgICAgIAorCiAgICAgICBpZiAoZGVidWcgPiAxKSB7CiAJZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF9zZHBfcnI6IHJlcXVlc3RpbmcgU0RQIHJyIHRlc3RcbiIpOwogICAgICAgfQotICAgICAgCisKICAgICAgIHNlbmRfcmVxdWVzdCgpOwotICAgICAgCisKICAgICAgIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQKIAkgc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sKIAkgaW50byB0aGUgdmFyaWFibGVzIGhlcmUgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGlmIGRlc2lyZWQuCkBAIC0yNTA4LDkgKzI1MDgsOSBAQAogCSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzCiAJIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMgYmVpbmcgc2VudCBmb3IgdGhlIFNEUAogCSB0ZXN0cy4gICovCi0gIAorCiAgICAgICByZWN2X3Jlc3BvbnNlKCk7Ci0gIAorCiAgICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAJaWYgKGRlYnVnKQogCSAgZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CkBAIC0yNTI5LDcgKzI1MjksNyBAQAogCQluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAJcGVycm9yKCIiKTsKIAlmZmx1c2god2hlcmUpOwotCQorCiAJZXhpdCgxKTsKICAgICAgIH0KICAgICB9CkBAIC0yNTM5LDIzICsyNTM5LDIzIEBACiAjZW5kaWYKIAogICAgIC8qQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0ICAqLwotICAgIGlmIChjb25uZWN0KHNlbmRfc29ja2V0LCAKKyAgICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwKIAkJcmVtb3RlX3Jlcy0+YWlfYWRkciwKIAkJcmVtb3RlX3Jlcy0+YWlfYWRkcmxlbikgPT0gSU5WQUxJRF9TT0NLRVQpewogICAgICAgcGVycm9yKCJuZXRwZXJmOiBkYXRhIHNvY2tldCBjb25uZWN0IGZhaWxlZCIpOwotICAgICAgCisKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgdGhlICovCiAgICAgLyogY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkIGhhdmUgKi8KICAgICAvKiBpbmRpY2F0ZWQgYSBwcm9ibGVtLiBJIGZhaWxlZCB0byBzZWUgdGhlIHZhbHVlIG9mIHRoZSBleHRyYSAqLwogICAgIC8qIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsIHdlJ2xsIHNlZSBpdCAqLwogICAgIC8qIGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCi0gICAgCisKICAgICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwogICAgIC8qIGNhbiBiZSBlaXRoZXIgdGltZSBvciB0cmFuc2FjdGlvbiBiYXNlZC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICAgIHRpbWVzX3VwID0gMDsKQEAgLTI1NjcsMTcgKzI1NjcsMTcgQEAKICAgICAgIHRyYW5zX3JlbWFpbmluZyA9IHRlc3RfYnl0ZXM7CiAgICAgICB0aW1lc191cCA9IDE7CiAgICAgfQotICAgIAorCiAgICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAgIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAgIAorCiAgICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7CiAKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgIElOVEVSVkFMU19JTklUKCk7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAKKwogICAgIC8qIFdlIHVzZSBhbiAiT1IiIHRvIGNvbnRyb2wgdGVzdCBleGVjdXRpb24uIFdoZW4gdGhlIHRlc3QgaXMgKi8KICAgICAvKiBjb250cm9sbGVkIGJ5IHRpbWUsIHRoZSBieXRlIGNvdW50IGNoZWNrIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gKi8KICAgICAvKiBXaGVuIHRoZSB0ZXN0IGlzIGNvbnRyb2xsZWQgYnkgYnl0ZSBjb3VudCwgdGhlIHRpbWUgdGVzdCB3aWxsICovCkBAIC0yNjMwLDcgKzI2MzAsNyBAQAogICAgICAgfQogCiAjZW5kaWYgLyogV0FOVF9GSVJTVF9CVVJTVCAqLwotICAgICAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICAgICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKIAkvKiB0aW1lc3RhbXAganVzdCBiZWZvcmUgb3VyIGNhbGwgdG8gc2VuZCwgYW5kIHRoZW4gYWdhaW4ganVzdApAQCAtMjY0MSw3ICsyNjQxLDcgQEAKIAlISVNUX3RpbWVzdGFtcCgmdGltZV9vbmUpOwogICAgICAgfQogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCi0gICAgICAKKwogICAgICAgaWYgKChsZW4gPSBzZW5kKHNlbmRfc29ja2V0LAogCQkgICAgICBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCiAJCSAgICAgIHJlcV9zaXplLApAQCAtMjY3OSw5ICsyNjc5LDkgQEAKIAl9CiAJcnNwX2J5dGVzX2xlZnQgLT0gcnNwX2J5dGVzX3JlY3ZkOwogCXRlbXBfbWVzc2FnZV9wdHIgICs9IHJzcF9ieXRlc19yZWN2ZDsKLSAgICAgIH0JCisgICAgICB9CiAgICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7Ci0gICAgICAKKwogI2lmZGVmIFdBTlRfRklSU1RfQlVSU1QKICAgICAgIC8qIHNvLCBzaW5jZSB3ZSd2ZSBnb3R0ZW4gYSByZXNwb25zZSBiYWNrLCB1cGRhdGUgdGhlCiAJIGJvb2trZWVwaW5nIGFjY29yZGluZ2x5LiAgdGhlcmUgaXMgb25lIGxlc3MgcmVxdWVzdApAQCAtMjcwMyw3ICsyNzAzLDcgQEAKIAkvKiBhbm90aGVyIGNhbGwgdG8gYnJlYWsuICovCiAJYnJlYWs7CiAgICAgICB9Ci0gICAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBpZiAodmVyYm9zaXR5ID4gMSkgewogCUhJU1RfdGltZXN0YW1wKCZ0aW1lX3R3byk7CkBAIC0yNzE1LDE1ICsyNzE1LDE1IEBACiAgICAgICBERU1PX1JSX0lOVEVSVkFMKDEpOwogI2VuZGlmCiAKLSNpZmRlZiBXQU5UX0lOVEVSVkFMUyAgICAgIAorI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgICBJTlRFUlZBTFNfV0FJVCgpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgICAKLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorCisgICAgICBudW1tZXNzYWdlcysrOwogICAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogCXRyYW5zX3JlbWFpbmluZy0tOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChkZWJ1ZyA+IDMpIHsKIAlpZiAoKG51bW1lc3NhZ2VzICUgMTAwKSA9PSAwKSB7CiAJICBmcHJpbnRmKHdoZXJlLApAQCAtMjc0MCwxOSArMjc0MCwxOSBAQAogICAgICAgIHdoZW4gdGhleSB3ZXJlIGJlaW5nIGNvbnRyb2xsZWQgYnkgdGltZS4gU28sIEkgaGF2ZSByZXBsYWNlZAogICAgICAgIHRoaXMgc2h1dGRvd24gY2FsbCB3aXRoIGEgY2FsbCB0byBjbG9zZSB0aGF0IGNhbiBiZSBmb3VuZCBsYXRlcgogICAgICAgIGluIHRoZSBwcm9jZWR1cmUuICovCi0gICAgCisKICAgICAvKiB0aGlzIGNhbGwgd2lsbCBhbHdheXMgZ2l2ZSB1cyB0aGUgZWxhcHNlZCB0aW1lIGZvciB0aGUgdGVzdCwKICAgICAgICBhbmQgd2lsbCBhbHNvIHN0b3JlLWF3YXkgdGhlIG5lY2Vzc2FyaWVzIGZvciBjcHUgdXRpbGl6YXRpb24gKi8KLSAgICAKKwogICAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyAqLwogCQkJCQkJLyogbWVhc3VyZWQ/IGhvdyBsb25nICovCiAJCQkJCQkvKiBkaWQgd2UgcmVhbGx5IHJ1bj8gKi8KLSAgICAKKwogICAgIGlmICghbm9fY29udHJvbCkgewogICAgICAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlCiAJIGNhbGN1bGF0ZWQgQ1BVIHV0aWxpemF0aW9uLiBJZiBpdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gY2FyZSwgaXQKLQkgd2lsbCByZXR1cm4gb2J2aW91cyB2YWx1ZXMuICovIAotICAgIAorCSB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KKwogICAgICAgcmVjdl9yZXNwb25zZSgpOwogICAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogCWlmIChkZWJ1ZykKQEAgLTI3NjcsMTIgKzI3NjcsMTIgQEAKIAlleGl0KDEpOwogICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhyb3VnaHB1dCB3YXMgZm9yIHRoZSB0ZXN0LiAqLwotICAKKwogICAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICAgIHRocnVwdXQJPSBudW1tZXNzYWdlcy9lbGFwc2VkX3RpbWU7Ci0gIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1CiAgICAgICAgdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgT2YgY291cnNlLCBzb21lIG9mIHRoZQpAQCAtMjc5Myw3ICsyNzkzLDcgQEAKIAlsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAoZmxvYXQpIC0xLjA7CiAJbG9jYWxfc2VydmljZV9kZW1hbmQJPSAoZmxvYXQpIC0xLjA7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKIAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gc2RwX3JyX3Jlc3VsdC0+Y3B1X3V0aWw7CiAJLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsCkBAIC0yODA4LDcgKzI4MDgsNyBAQAogCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSAoZmxvYXQpIC0xLjA7CiAJcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IChmbG9hdCkgLTEuMDsKICAgICAgIH0KLSAgICAgIAorCiAgICAgfQogICAgIGVsc2UgewogICAgICAgLyogd2Ugd2VyZSBub3QgbWVhc3VyaW5nIGNwdSwgZm9yIHRoZSBjb25maWRlbmNlIHN0dWZmLCB3ZSAqLwpAQCAtMjgyMiw3ICsyODIyLDcgQEAKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4KICAgICAgICBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZQogICAgICAgIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHRocnVwdXQsCkBAIC0yODMwLDggKzI4MzAsOCBAQAogCQkJIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCiAJCQkgbG9jYWxfc2VydmljZV9kZW1hbmQsCiAJCQkgcmVtb3RlX3NlcnZpY2VfZGVtYW5kKTsKLSAgICAKLSAgICAKKworCiAgICAgY29uZmlkZW5jZV9pdGVyYXRpb24rKzsKIAogICAgIC8qIHdlIGFyZSBub3cgZG9uZSB3aXRoIHRoZSBzb2NrZXQsIHNvIGNsb3NlIGl0ICovCkBAIC0yODY1LDcgKzI4NjUsNyBAQAogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICBsb2NhbF9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QoY3B1X21ldGhvZCk7CiAgICAgcmVtb3RlX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZChzZHBfcnJfcmVzdWx0LT5jcHVfbWV0aG9kKTsKLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtMjg3Myw3ICsyODczLDcgQEAKIAkJY3B1X2ZtdF8wLAogCQlsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJbG9jYWxfY3B1X21ldGhvZCwKLQkJKChwcmludF9oZWFkZXJzKSB8fCAKKwkJKChwcmludF9oZWFkZXJzKSB8fAogCQkgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICB9CiAgICAgICBlbHNlIHsKQEAgLTI4ODEsNyArMjg4MSw3IEBACiAJCWNwdV9mbXRfMCwKIAkJcmVtb3RlX3NlcnZpY2VfZGVtYW5kLAogCQlyZW1vdGVfY3B1X21ldGhvZCwKLQkJKChwcmludF9oZWFkZXJzKSB8fCAKKwkJKChwcmludF9oZWFkZXJzKSB8fAogCQkgKHJlc3VsdF9icmFuZCA9PSBOVUxMKSkgPyAiIiA6IHJlc3VsdF9icmFuZCk7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTI5MDYsNyArMjkwNiw3IEBACiAJICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwJLyogcmVtb3RlIGNwdSAqLwogCSAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAkvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCAqLwogCSAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCwJLyogcmVtb3RlIHNlcnZpY2UgZGVtYW5kICovCi0JICAgICAgKChwcmludF9oZWFkZXJzKSB8fCAKKwkgICAgICAoKHByaW50X2hlYWRlcnMpIHx8CiAJICAgICAgIChyZXN1bHRfYnJhbmQgPT0gTlVMTCkpID8gIiIgOiByZXN1bHRfYnJhbmQpOwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICBjcHVfZm10XzFfbGluZV8yLApAQCAtMjkxNywxMyArMjkxNywxMyBAQAogICB9CiAgIGVsc2UgewogICAgIC8qIFRoZSB0ZXN0ZXIgZGlkIG5vdCB3aXNoIHRvIG1lYXN1cmUgc2VydmljZSBkZW1hbmQuICovCi0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgdHB1dF9mbXRfMCwKIAkgICAgICB0aHJ1cHV0LAotCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwgCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAogCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgMToKQEAgLTI5NDAsMjMgKzI5NDAsMjMgQEAKIAkgICAgICByc3Bfc2l6ZSwJCS8qIGhvdyBsYXJnZSB3ZXJlIHRoZSByZXNwb25zZXMgKi8KIAkgICAgICBlbGFwc2VkX3RpbWUsIAkJLyogaG93IGxvbmcgZGlkIGl0IHRha2UgKi8KIAkgICAgICB0aHJ1cHV0LAotCSAgICAgICgocHJpbnRfaGVhZGVycykgfHwgCisJICAgICAgKChwcmludF9oZWFkZXJzKSB8fAogCSAgICAgICAocmVzdWx0X2JyYW5kID09IE5VTEwpKSA/ICIiIDogcmVzdWx0X2JyYW5kKTsKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgdHB1dF9mbXRfMV9saW5lXzIsCiAJICAgICAgcnNzX3NpemUsIAkJLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLwogCSAgICAgIHJzcl9zaXplKTsKLSAgICAgIAorCiAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCisKICAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCiAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCiAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKwogICAvKiBob3cgdG8gaGFuZGxlIHRoZSB2ZXJib3NlIGluZm9ybWF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiAqLwogICAvKiBjb25maWRlbmNlIGludGVydmFscyBpcyB5ZXQgdG8gYmUgZGV0ZXJtaW5lZC4uLiByYWogMTEvOTQgKi8KICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKQEAgLTI5NjQsNyArMjk2NCw3IEBACiAgICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwogICAgIC8qIFNEUCBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCiAgICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICBrc2lua19mbXQsCiAJICAgIGxvY2FsX3NlbmRfYWxpZ24sCkBAIC0yOTc5LDE0ICsyOTc5LDE0IEBACiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KIAogICB9Ci0gIAorCiB9CiAgLyogdGhpcyByb3V0aW5lIGltcGxlbWVudHMgdGhlIHJlY2VpdmUgKG5ldHNlcnZlcikgc2lkZSBvZiBhIFNEUF9SUiAqLwogIC8qIHRlc3QgKi8KIHZvaWQKIHJlY3Zfc2RwX3JyKCkKIHsKLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogCkBAIC0zMDA3LDIzICszMDA3LDIzIEBACiAgIGludAl0aW1lZF9vdXQgPSAwOwogICBpbnQgICBzb2NrX2Nsb3NlZCA9IDA7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgc3RydWN0CXNkcF9ycl9yZXF1ZXN0X3N0cnVjdAkqc2RwX3JyX3JlcXVlc3Q7CiAgIHN0cnVjdAlzZHBfcnJfcmVzcG9uc2Vfc3RydWN0CSpzZHBfcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAlzZHBfcnJfcmVzdWx0c19zdHJ1Y3QJKnNkcF9ycl9yZXN1bHRzOwotICAKLSAgc2RwX3JyX3JlcXVlc3QgPSAKKworICBzZHBfcnJfcmVxdWVzdCA9CiAgICAgKHN0cnVjdCBzZHBfcnJfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHNkcF9ycl9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCBzZHBfcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc2RwX3JyX3Jlc3VsdHMgPQogICAgIChzdHJ1Y3Qgc2RwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X3NkcF9ycjogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwogICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCiAgIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCkBAIC0zMDMxLDI0ICszMDMxLDI0IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9zZHBfcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBTRFBfUlJfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc2RwX3JyOiB0aGUgcmVzcG9uc2UgdHlwZSBpcyBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogYWxsb2NhdGUgdGhlIHJlY3YgYW5kIHNlbmQgcmluZ3Mgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudHMgKi8KICAgLyogYW5kIG9mZnNldHMuIHJhaiA3Lzk0ICovCiAgIGlmIChkZWJ1ZykgewpAQCAtMzA3NSw5ICszMDc1LDkgQEAKIAkJCQkgICBzZHBfcnJfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsCiAJCQkJICAgc2RwX3JyX3JlcXVlc3QtPnJlY3Zfb2Zmc2V0KTsKIAotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3NkcF9ycjogZ3JhYmJpbmcgYSBzb2NrZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CkBAIC0zMTEwLDE1ICszMTEwLDE1IEBACiAgIGxvY2FsX3Jlcy0+YWlfZmFtaWx5ID0gQUZfSU5FVF9TRFA7CiAgIGxvY2FsX3Jlcy0+YWlfcHJvdG9jb2wgPSAwOwogICBzX2xpc3RlbiA9IGNyZWF0ZV9kYXRhX3NvY2tldChsb2NhbF9yZXMpOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIAorCisKICNpZmRlZiBXSU4zMgogICAvKiBUaGUgdGVzdCB0aW1lciBjYW4gZmlyZSBkdXJpbmcgb3BlcmF0aW9ucyBvbiB0aGUgbGlzdGVuaW5nIHNvY2tldCwKICAgICAgc28gdG8gbWFrZSB0aGUgc3RhcnRfdGltZXIgYmVsb3cgd29yayB3ZSBoYXZlIHRvIG1vdmUKQEAgLTMxMjYsNDIgKzMxMjYsNDIgQEAKICAgd2luX2tsdWRnZV9zb2NrZXQyID0gc19saXN0ZW47CiAjZW5kaWYKIAotICAKKwogICAvKiBOb3csIGxldCdzIHNldC11cCB0aGUgc29ja2V0IHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMgKi8KICAgaWYgKGxpc3RlbihzX2xpc3RlbiwgNSkgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgCisKKwogICAvKiBub3cgZ2V0IHRoZSBwb3J0IG51bWJlciBhc3NpZ25lZCBieSB0aGUgc3lzdGVtICAqLwogICBhZGRybGVuID0gc2l6ZW9mKG15YWRkcl9pbik7CiAgIGlmIChnZXRzb2NrbmFtZShzX2xpc3RlbiwKLQkJICAoc3RydWN0IHNvY2thZGRyICopJm15YWRkcl9pbiwgCisJCSAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfaW4sCiAJCSAgJmFkZHJsZW4pID09IFNPQ0tFVF9FUlJPUikgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCisKICAgc2RwX3JyX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gKGludCkgbnRvaHMobXlhZGRyX2luLnNpbl9wb3J0KTsKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAwLjAgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgc2RwX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IChmbG9hdCkwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIHNkcF9ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAwOwogCkBAIC0zMTY5LDggKzMxNjksOCBAQAogICAgIHNkcF9ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwogICAgIHNkcF9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KHNkcF9ycl9yZXF1ZXN0LT5jcHVfcmF0ZSk7CiAgIH0KLSAgCi0gIAorCisKICAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCiAgIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICBzZHBfcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKQEAgLTMxODAsMTggKzMxODAsMTggQEAKICAgc2RwX3JyX3Jlc3BvbnNlLT5zb19zbmRhdm9pZCA9IGxvY19zbmRhdm9pZDsKICAgc2RwX3JyX3Jlc3BvbnNlLT50ZXN0X2xlbmd0aCA9IHNkcF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aDsKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICBhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyX2luKTsKLSAgCisKICAgaWYgKChzX2RhdGEgPSBhY2NlcHQoc19saXN0ZW4sCiAJCSAgICAgICAoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyX2luLAogCQkgICAgICAgJmFkZHJsZW4pKSA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIC8qIExldCdzIGp1c3QgcHVudC4gVGhlIHJlbW90ZSB3aWxsIGJlIGdpdmVuIHNvbWUgaW5mb3JtYXRpb24gKi8KICAgICBjbG9zZShzX2xpc3Rlbik7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAjaWZkZWYgS0xVREdFX1NPQ0tFVF9PUFRJT05TCiAgIC8qIHRoaXMgaXMgZm9yIHRob3NlIHN5c3RlbXMgd2hpY2ggKklOQ09SUkVDVExZKiBmYWlsIHRvIHBhc3MgKi8KICAgLyogYXR0cmlidXRlcyBhY3Jvc3MgYW4gYWNjZXB0KCkgY2FsbC4gSW5jbHVkaW5nIHRoaXMgZ29lcyBhZ2FpbnN0ICovCkBAIC0zMjE1LDE1ICszMjE1LDE1IEBACiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9zZHBfcnI6IGFjY2VwdCBjb21wbGV0ZXMgb24gdGhlIGRhdGEgY29ubmVjdGlvbi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogTm93IGl0J3MgdGltZSB0byBzdGFydCByZWNlaXZpbmcgZGF0YSBvbiB0aGUgY29ubmVjdGlvbi4gV2Ugd2lsbCAqLwogICAvKiBmaXJzdCBncmFiIHRoZSBhcHJvcHJpYXRlIGNvdW50ZXJzIGFuZCB0aGVuIHN0YXJ0IGdyYWJiaW5nLiAqLwotICAKKwogICBjcHVfc3RhcnQoc2RwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCisKICAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gd2UgaGl0IHRoZSBlbmQgb2YgdGhlIHRlc3QgdGltZSwgb3Igd2hlbiAqLwogICAvKiB3ZSBoYXZlIGV4Y2hhbmdlZCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiB0cmFuc2FjdGlvbnMuICovCi0gIAorCiAgIGlmIChzZHBfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGggPiAwKSB7CiAgICAgdGltZXNfdXAgPSAwOwogICAgIHRyYW5zX3JlbWFpbmluZyA9IDA7CkBAIC0zMjM1LDcgKzMyMzUsNyBAQAogICB9CiAKICAgdHJhbnNfcmVjZWl2ZWQgPSAwOwotICAKKwogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHRyYW5zX3JlbWFpbmluZyA+IDApKSB7CiAgICAgdGVtcF9tZXNzYWdlX3B0ciA9IHJlY3ZfcmluZy0+YnVmZmVyX3B0cjsKICAgICByZXF1ZXN0X2J5dGVzX3JlbWFpbmluZwk9IHNkcF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7CkBAIC0zMjc2LDEwICszMjc2LDEwIEBACiAgICAgICBpZiAoZGVidWcpIHsKIAlmcHJpbnRmKHdoZXJlLCJ5bzVcbiIpOwogCWZmbHVzaCh3aGVyZSk7Ci0gICAgICB9CQkJCQkJCisgICAgICB9CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisKICAgICAvKiBOb3csIHNlbmQgdGhlIHJlc3BvbnNlIHRvIHRoZSByZW1vdGUgKi8KICAgICBpZigoYnl0ZXNfc2VudD1zZW5kKHNfZGF0YSwKIAkJCXNlbmRfcmluZy0+YnVmZmVyX3B0ciwKQEAgLTMyODksMTQgKzMyODksMTQgQEAKIAkvKiB0aGUgdGVzdCB0aW1lciBoYXMgcG9wcGVkICovCiAJdGltZWRfb3V0ID0gMTsKIAlmcHJpbnRmKHdoZXJlLCJ5bzZcbiIpOwotCWZmbHVzaCh3aGVyZSk7CQkJCQkJCisJZmZsdXNoKHdoZXJlKTsKIAlicmVhazsKICAgICAgIH0KICAgICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gOTkyOwogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7CiAKICAgICB0cmFuc19yZWNlaXZlZCsrOwpAQCAtMzMwNCwxMyArMzMwNCwxMyBAQAogICAgICAgdHJhbnNfcmVtYWluaW5nLS07CiAgICAgfQogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gdGltZW91dCBvciB0cmFuc2FjdGlvbiBjb3VudCBiZWluZyAqLwogICAvKiByZWFjaGVkICovCi0gIAorCiAgIGNwdV9zdG9wKHNkcF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgc3RvcF90aW1lcigpOwogCiAgIGlmICh0aW1lZF9vdXQpIHsKQEAgLTMzMjEsMTYgKzMzMjEsMTYgQEAKICAgfQogCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3NkcF9ycjogZ290ICVkIHRyYW5zYWN0aW9uc1xuIiwKIAkgICAgdHJhbnNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIHNkcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqIAotCQkJCSAgICAoc2RwX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArIAorCisgIHNkcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqCisJCQkJICAgIChzZHBfcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKIAkJCQkgICAgIHNkcF9ycl9yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7CiAgIHNkcF9ycl9yZXN1bHRzLT50cmFuc19yZWNlaXZlZCA9IHRyYW5zX3JlY2VpdmVkOwogICBzZHBfcnJfcmVzdWx0cy0+ZWxhcHNlZF90aW1lICAgPSBlbGFwc2VkX3RpbWU7CkBAIC0zMzM5LDE5ICszMzM5LDE5IEBACiAgIGlmIChzZHBfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBzZHBfcnJfcmVzdWx0cy0+Y3B1X3V0aWwJPSBjYWxjX2NwdV91dGlsKGVsYXBzZWRfdGltZSk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3Zfc2RwX3JyOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIHdlIGFyZSBub3cgZG9uZSB3aXRoIHRoZSBzb2NrZXRzICovCiAgIGNsb3NlKHNfZGF0YSk7CiAgIGNsb3NlKHNfbGlzdGVuKTsKIAogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiB9CiAKIApAQCAtMzM3NCwxMCArMzM3NCwxMCBAQAogI2RlZmluZSBTT0NLRVRTX0FSR1MgImI6RGhIOkk6TDptOk06UDpyOnM6UzpWNDYiCiAKICAgZXh0ZXJuIGNoYXIJKm9wdGFyZzsJICAvKiBwb2ludGVyIHRvIG9wdGlvbiBzdHJpbmcJKi8KLSAgCisKICAgaW50CQljOwotICAKLSAgY2hhcgkKKworICBjaGFyCiAgICAgYXJnMVtCVUZTSVpdLCAgLyogYXJndW1lbnQgaG9sZGVycwkJKi8KICAgICBhcmcyW0JVRlNJWl07CiAKQEAgLTMzODksMTYgKzMzODksMTYgQEAKIAogICBzdHJuY3B5KGxvY2FsX2RhdGFfcG9ydCwiMCIsc2l6ZW9mKGxvY2FsX2RhdGFfcG9ydCkpOwogICBzdHJuY3B5KHJlbW90ZV9kYXRhX3BvcnQsIjAiLHNpemVvZihyZW1vdGVfZGF0YV9wb3J0KSk7Ci0gIAorCiAgIC8qIEdvIHRocm91Z2ggYWxsIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBicmVhayB0aGVtICovCiAgIC8qIG91dC4gRm9yIHRob3NlIG9wdGlvbnMgdGhhdCB0YWtlIHR3byBwYXJtcywgc3BlY2lmeWluZyBvbmx5ICovCiAgIC8qIHRoZSBmaXJzdCB3aWxsIHNldCBib3RoIHRvIHRoYXQgdmFsdWUuIFNwZWNpZnlpbmcgb25seSB0aGUgKi8KICAgLyogc2Vjb25kIHdpbGwgbGVhdmUgdGhlIGZpcnN0IHVudG91Y2hlZC4gVG8gY2hhbmdlIG9ubHkgdGhlICovCiAgIC8qIGZpcnN0LCB1c2UgdGhlIGZvcm0gImZpcnN0LCIgKHNlZSB0aGUgcm91dGluZSBicmVha19hcmdzLi4gKi8KLSAgCisKICAgd2hpbGUgKChjPSBnZXRvcHQoYXJnYywgYXJndiwgU09DS0VUU19BUkdTKSkgIT0gRU9GKSB7CiAgICAgc3dpdGNoIChjKSB7Ci0gICAgY2FzZSAnPyc6CQorICAgIGNhc2UgJz8nOgogICAgIGNhc2UgJzQnOgogICAgICAgcmVtb3RlX2RhdGFfZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgIGxvY2FsX2RhdGFfZmFtaWx5ID0gQUZfSU5FVDsKQEAgLTM0MzMsNyArMzQzMyw3IEBACiAgICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOwogICAgICAgaWYgKGFyZzFbMF0pIHsKIAkvKiBtYWtlIHN1cmUgd2UgbGVhdmUgcm9vbSBmb3IgdGhlIE5VTEwgdGVybWluYXRpb24gYm95cyBhbmQKLQkgICBnaXJscy4gcmFqIDIwMDUtMDItODIgKi8gCisJICAgZ2lybHMuIHJhaiAyMDA1LTAyLTgyICovCiAJcmVtb3RlX2RhdGFfYWRkcmVzcyA9IG1hbGxvYyhzdHJsZW4oYXJnMSkrMSk7CiAJc3RybmNweShyZW1vdGVfZGF0YV9hZGRyZXNzLGFyZzEsc3RybGVuKGFyZzEpKTsKICAgICAgIH0KQEAgLTM0NDQsNyArMzQ0NCw3IEBACiAgICAgICBicmVha19hcmdzX2V4cGxpY2l0KG9wdGFyZyxhcmcxLGFyZzIpOwogICAgICAgaWYgKGFyZzFbMF0pIHsKIAkvKiBtYWtlIHN1cmUgd2UgbGVhdmUgcm9vbSBmb3IgdGhlIE5VTEwgdGVybWluYXRpb24gYm95cyBhbmQKLQkgICBnaXJscy4gcmFqIDIwMDUtMDItODIgKi8gCisJICAgZ2lybHMuIHJhaiAyMDA1LTAyLTgyICovCiAJbG9jYWxfZGF0YV9hZGRyZXNzID0gbWFsbG9jKHN0cmxlbihhcmcxKSsxKTsKIAlzdHJuY3B5KGxvY2FsX2RhdGFfYWRkcmVzcyxhcmcxLHN0cmxlbihhcmcxKSk7CiAgICAgICB9CkBAIC0zNDU4LDcgKzM0NTgsNyBAQAogICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKICAgICAgIGlmIChhcmcxWzBdKQogCXN0cm5jcHkobG9jYWxfZGF0YV9wb3J0LGFyZzEsc2l6ZW9mKGxvY2FsX2RhdGFfcG9ydCkpOwotICAgICAgaWYgKGFyZzJbMF0pCQorICAgICAgaWYgKGFyZzJbMF0pCiAJc3RybmNweShyZW1vdGVfZGF0YV9wb3J0LGFyZzIsc2l6ZW9mKHJlbW90ZV9kYXRhX3BvcnQpKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ3MnOgpAQCAtMzQ4Miw3ICszNDgyLDcgQEAKICAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CiAgICAgICBpZiAoYXJnMVswXSkKIAlyZXFfc2l6ZSA9IGNvbnZlcnQoYXJnMSk7Ci0gICAgICBpZiAoYXJnMlswXSkJCisgICAgICBpZiAoYXJnMlswXSkKIAlyc3Bfc2l6ZSA9IGNvbnZlcnQoYXJnMik7CiAgICAgICBicmVhazsKICAgICBjYXNlICdtJzoKQEAgLTM1MjcsNyArMzUyNyw3IEBACiAgICAgICByZW1fcmN2YXZvaWQgPSAxOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnTic6Ci0gICAgICAvKiB0aGlzIG9wdG9uIGFsbG93cyB0aGUgdXNlciB0byBzZXQgdGhlIG51bWJlciBvZiAKKyAgICAgIC8qIHRoaXMgb3B0b24gYWxsb3dzIHRoZSB1c2VyIHRvIHNldCB0aGUgbnVtYmVyIG9mCiAgICAgICAgKiBtZXNzYWdlcyB0byBzZW5kLiAgVGhpcyBpbiBlZmZlY3QgbW9kaWZpZXMgdGhlIHRlc3QKICAgICAgICAqIHRpbWUuICBJZiB3ZSBrbm93IHRoZSBtZXNzYWdlIHNpemUsIHRoZW4gdGhlIHdlIGNhbgogICAgICAgICogZXhwcmVzcyB0aGUgdGVzdCB0aW1lIGFzIG1lc3NhZ2Vfc2l6ZSAqIG51bWJlcl9tZXNzYWdlcwpkaWZmIC0tZ2l0IGEvbmV0dGVzdF9zZHAuaCBiL3NyYy9uZXR0ZXN0X3NkcC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBuZXR0ZXN0X3NkcC5oCnJlbmFtZSB0byBzcmMvbmV0dGVzdF9zZHAuaApkaWZmIC0tZ2l0IGEvbmV0dGVzdF91bml4LmMgYi9zcmMvbmV0dGVzdF91bml4LmMKc2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gbmV0dGVzdF91bml4LmMKcmVuYW1lIHRvIHNyYy9uZXR0ZXN0X3VuaXguYwppbmRleCBlNDcxNmE0Li4xNDMzZDk4IDEwMDY0NAotLS0gYS9uZXR0ZXN0X3VuaXguYworKysgYi9zcmMvbmV0dGVzdF91bml4LmMKQEAgLTgsMTAgKzgsMTQgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCisjaWZkZWYgV0lOMzIKKyNlcnJvciBVbml4IERvbWFpbiBTb2NrZXRzIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyIFdpbmRvd3MKKyNlbmRpZgorCiAjaWZkZWYgV0FOVF9VTklYCiBjaGFyCW5ldHRlc3RfdW5peF9pZFtdPSJcCi1AKCMpbmV0dGVzdF91bml4LmMgKGMpIENvcHlyaWdodCAxOTk0LTIwMDcgSGV3bGV0dC1QYWNrYXJkIENvLiBWZXJzaW9uIDIuNC4zIjsKLSAgICAgCitAKCMpbmV0dGVzdF91bml4LmMgKGMpIENvcHlyaWdodCAxOTk0LTIwMTIgSGV3bGV0dC1QYWNrYXJkIENvLiBWZXJzaW9uIDIuNi4wIjsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKgkJCQkJCQkJKi8KIC8qCW5ldHRlc3RfYnNkLmMJCQkJCQkqLwpAQCAtMzQsMjYgKzM4LDIwIEBACiAvKglyZW1fY3B1X3JhdGUoKQkgICAgICBmaW5kIHRoZSByZW1vdGUgY3B1IG1heHJhdGUJKi8KIC8qCQkJCQkJCQkqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgIAotIC8qIGF0IHNvbWUgcG9pbnQsIEkgbWlnaHQgd2FudCB0byBnby1pbiBhbmQgc2VlIGlmIEkgcmVhbGx5IG5lZWQgYWxsICovCi0gLyogdGhlc2UgaW5jbHVkZXMsIGJ1dCBmb3IgdGhlIG1vbWVudCwgd2UnbGwgbGV0IHRoZW0gYWxsIGp1c3Qgc2l0ICovCi0gLyogdGhlcmUuIHJhaiA4Lzk0ICovCisKKyAvKiBhdCBzb21lIHBvaW50LCBJIG1pZ2h0IHdhbnQgdG8gZ28taW4gYW5kIHNlZSBpZiBJIHJlYWxseSBuZWVkIGFsbAorICAgIHRoZXNlIGluY2x1ZGVzLCBidXQgZm9yIHRoZSBtb21lbnQsIHdlJ2xsIGxldCB0aGVtIGFsbCBqdXN0IHNpdAorICAgIHRoZXJlLiByYWogOC85NCAqLwogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpZm5kZWYgV0lOMzIKICNpbmNsdWRlIDxzeXMvaXBjLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c3lzL3VuLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZWxzZSAvKiBXSU4zMiAqLwotI2luY2x1ZGUgPHByb2Nlc3MuaD4KLSNpbmNsdWRlIDx3aW5zb2NrMi5oPgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZiAvKiBXSU4zMiAqLwogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtNjYsMjQgKzY0LDI0IEBACiAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCi0gICAKKwogI2luY2x1ZGUgIm5ldGxpYi5oIgogI2luY2x1ZGUgIm5ldHNoLmgiCiAjaW5jbHVkZSAibmV0dGVzdF91bml4LmgiCiAKIAwKIAotIC8qIHRoZXNlIHZhcmlhYmxlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIFVOSVggc29ja2V0cyB0ZXN0cy4gZGVjbGFyZSAqLwotIC8qIHRoZW0gc3RhdGljIHRvIG1ha2UgdGhlbSBnbG9iYWwgb25seSB0byB0aGlzIGZpbGUuICovCisvKiB0aGVzZSB2YXJpYWJsZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBVTklYIHNvY2tldHMgdGVzdHMuIGRlY2xhcmUKKyAgICB0aGVtIHN0YXRpYyB0byBtYWtlIHRoZW0gZ2xvYmFsIG9ubHkgdG8gdGhpcyBmaWxlLiAqLwogCiAjZGVmaW5lIFVOSVhfUFJGWCAibmV0cGVyZi4iCiAjZGVmaW5lIFVOSVhfTEVOR1RIX01BWCAweEZGRkYgLSAyOAogCiBzdGF0aWMgY2hhcgotICBwYXRoX3ByZWZpeFszMl07IAorICBwYXRoX3ByZWZpeFszMl07CiAKLXN0YXRpYyBpbnQJCi0gIHJzc19zaXplLAkJLyogcmVtb3RlIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplCSovCitzdGF0aWMgaW50CisgIHJzc19zaXplLAkJLyogcmVtb3RlIHNvY2tldCBzZW5kIGJ1ZmZlciBzaXplICovCiAgIHJzcl9zaXplLAkJLyogcmVtb3RlIHNvY2tldCByZWN2IGJ1ZmZlciBzaXplCSovCiAgIGxzc19zaXplX3JlcSwJCS8qIHJlcXVlc3RlZCBsb2NhbCBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZSAqLwogICBsc3Jfc2l6ZV9yZXEsCQkvKiByZXF1ZXN0ZWQgbG9jYWwgc29ja2V0IHJlY3YgYnVmZmVyIHNpemUgKi8KQEAgLTExNCwxNyArMTEyLDE3IEBACiB2YWx1ZSwgc3BlY2lmeWluZyBhIHZhbHVlIHdpdGggYSBsZWFkaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIHNlY29uZFxuXAogcGFybSwgYSB2YWx1ZSB3aXRoIGEgdHJhaWxpbmcgY29tbWEgd2lsbCBzZXQganVzdCB0aGUgZmlyc3QuIFRvIHNldFxuXAogZWFjaCBwYXJtIHRvIHVuaXF1ZSB2YWx1ZXMsIHNwZWNpZnkgYm90aCBhbmQgc2VwYXJhdGUgdGhlbSB3aXRoIGFcblwKLWNvbW1hLlxuIjsgCitjb21tYS5cbiI7CiAMCi0gLyogdGhpcyByb3V0aW5nIGluaXRpYWxpemVzIGFsbCB0aGUgdGVzdCBzcGVjaWZpYyB2YXJpYWJsZXMgKi8KKy8qIHRoaXMgcm91dGluZyBpbml0aWFsaXplcyBhbGwgdGhlIHRlc3Qgc3BlY2lmaWMgdmFyaWFibGVzICovCiAKIHN0YXRpYyB2b2lkCiBpbml0X3Rlc3RfdmFycygpCiB7CiAgIHJzc19zaXplICA9IDA7CiAgIHJzcl9zaXplICA9IDA7Ci0gIGxzc19zaXplX3JlcSA9IDA7Ci0gIGxzcl9zaXplX3JlcSA9IDA7CisgIGxzc19zaXplX3JlcSA9IC0xOworICBsc3Jfc2l6ZV9yZXEgPSAtMTsKICAgbHNzX3NpemUgID0gMDsKICAgbHNyX3NpemUgID0gMDsKICAgcmVxX3NpemUgID0gMTsKQEAgLTEzNCwyNyArMTMyLDI2IEBACiAKICAgc3RyY3B5KHBhdGhfcHJlZml4LCIvdG1wIik7CiAKLX0gICAgIAorfQogDAotIC8qIFRoaXMgcm91dGluZSB3aWxsIGNyZWF0ZSBhIGRhdGEgKGxpc3Rlbikgc29ja2V0IHdpdGggdGhlIGFwcm9wcmlhdGUgKi8KLSAvKiBvcHRpb25zIHNldCBhbmQgcmV0dXJuIGl0IHRvIHRoZSBjYWxsZXIuIHRoaXMgcmVwbGFjZXMgYWxsIHRoZSAqLwotIC8qIGR1cGxpY2F0ZSBjb2RlIGluIGVhY2ggb2YgdGhlIHRlc3Qgcm91dGluZXMgYW5kIHNob3VsZCBoZWxwIG1ha2UgKi8KLSAvKiB0aGluZ3MgYSBsaXR0bGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQuIHNpbmNlIHRoaXMgcm91dGluZSBjYW4gYmUgKi8KLSAvKiBjYWxsZWQgYnkgZWl0aGVyIHRoZSBuZXRwZXJmIG9yIG5ldHNlcnZlciBwcm9ncmFtcywgYWxsIG91dHB1dCAqLwotIC8qIHNob3VsZCBiZSBkaXJlY3RlZCB0b3dhcmRzICJ3aGVyZS4iIGZhbWlseSBpcyBnZW5lcmFsbHkgQUZfVU5JWCwgKi8KLSAvKiBhbmQgdHlwZSB3aWxsIGJlIGVpdGhlciBTT0NLX1NUUkVBTSBvciBTT0NLX0RHUkFNICovCisvKiBUaGlzIHJvdXRpbmUgd2lsbCBjcmVhdGUgYSBkYXRhIChsaXN0ZW4pIHNvY2tldCB3aXRoIHRoZSBhcHJvcHJpYXRlCisgICBvcHRpb25zIHNldCBhbmQgcmV0dXJuIGl0IHRvIHRoZSBjYWxsZXIuIHRoaXMgcmVwbGFjZXMgYWxsIHRoZQorICAgZHVwbGljYXRlIGNvZGUgaW4gZWFjaCBvZiB0aGUgdGVzdCByb3V0aW5lcyBhbmQgc2hvdWxkIGhlbHAgbWFrZQorICAgdGhpbmdzIGEgbGl0dGxlIGVhc2llciB0byB1bmRlcnN0YW5kLiBzaW5jZSB0aGlzIHJvdXRpbmUgY2FuIGJlCisgICBjYWxsZWQgYnkgZWl0aGVyIHRoZSBuZXRwZXJmIG9yIG5ldHNlcnZlciBwcm9ncmFtcywgYWxsIG91dHB1dAorICAgc2hvdWxkIGJlIGRpcmVjdGVkIHRvd2FyZHMgIndoZXJlLiIgZmFtaWx5IGlzIGdlbmVyYWxseSBBRl9VTklYLAorICAgYW5kIHR5cGUgd2lsbCBiZSBlaXRoZXIgU09DS19TVFJFQU0gb3IgU09DS19ER1JBTSAqLwogU09DS0VUCiBjcmVhdGVfdW5peF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUpCiB7CiAKICAgU09DS0VUIHRlbXBfc29ja2V0OwotICBpbnQgc29ja19vcHRfbGVuOwogCiAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldCAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIHRlbXBfc29ja2V0ID0gc29ja2V0KGZhbWlseSwgCisgIHRlbXBfc29ja2V0ID0gc29ja2V0KGZhbWlseSwKIAkJICAgICAgIHR5cGUsCiAJCSAgICAgICAwKTsKLSAgCisKICAgaWYgKHRlbXBfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAibmV0cGVyZjogY3JlYXRlX3VuaXhfc29ja2V0OiBzb2NrZXQ6ICVkXG4iLApAQCAtMTYyLDI1ICsxNTksMjYgQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwiY3JlYXRlX3VuaXhfc29ja2V0OiBzb2NrZXQgJWQgb2J0YWluZWQuLi5cbiIsdGVtcF9zb2NrZXQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIC8qIE1vZGlmeSB0aGUgbG9jYWwgc29ja2V0IHNpemUuIFRoZSByZWFzb24gd2UgYWx0ZXIgdGhlIHNlbmQgYnVmZmVyICovCi0gIC8qIHNpemUgaGVyZSByYXRoZXIgdGhhbiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIG1hZGUgaXMgdG8gdGFrZSBjYXJlICovCi0gIC8qIG9mIGRlY3JlYXNlcyBpbiBidWZmZXIgc2l6ZS4gRGVjcmVhc2luZyB0aGUgd2luZG93IHNpemUgYWZ0ZXIgKi8KLSAgLyogY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGlzIGEgU1RSRUFNIG5vLW5vLiBBbHNvLCBieSBzZXR0aW5nIHRoZSAqLwotICAvKiBidWZmZXIgKHdpbmRvdykgc2l6ZSBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIHdlIGNhbiAqLwotICAvKiBjb250cm9sIHRoZSBTVFJFQU0gTVNTIChzZWdtZW50IHNpemUpLiBUaGUgTVNTIGlzIG5ldmVyIG1vcmUgdGhhdCAxLzIgKi8KLSAgLyogdGhlIG1pbmltdW0gcmVjZWl2ZSBidWZmZXIgc2l6ZSBhdCBlYWNoIGhhbGYgb2YgdGhlIGNvbm5lY3Rpb24uICovCi0gIC8qIFRoaXMgaXMgd2h5IHdlIGFyZSBhbHRlcmluZyB0aGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBvbiB0aGUgc2VuZGluZyAqLwotICAvKiBzaXplIG9mIGEgdW5pZGlyZWN0aW9uYWwgdHJhbnNmZXIuIElmIHRoZSB1c2VyIGhhcyBub3QgcmVxdWVzdGVkICovCi0gIC8qIHRoYXQgdGhlIHNvY2tldCBidWZmZXJzIGJlIGFsdGVyZWQsIHdlIHdpbGwgdHJ5IHRvIGZpbmQtb3V0IHdoYXQgKi8KLSAgLyogdGhlaXIgdmFsdWVzIGFyZS4gSWYgd2UgY2Fubm90IHRvdWNoIHRoZSBzb2NrZXQgYnVmZmVyIGluIGFueSB3YXksICovCi0gIC8qIHdlIHdpbGwgc2V0IHRoZSB2YWx1ZXMgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdC4gICovCi0gIAorCisgIC8qIE1vZGlmeSB0aGUgbG9jYWwgc29ja2V0IHNpemUuIFRoZSByZWFzb24gd2UgYWx0ZXIgdGhlIHNlbmQgYnVmZmVyCisgICAgIHNpemUgaGVyZSByYXRoZXIgdGhhbiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIG1hZGUgaXMgdG8gdGFrZSBjYXJlCisgICAgIG9mIGRlY3JlYXNlcyBpbiBidWZmZXIgc2l6ZS4gRGVjcmVhc2luZyB0aGUgd2luZG93IHNpemUgYWZ0ZXIKKyAgICAgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGlzIGEgU1RSRUFNIG5vLW5vLiBBbHNvLCBieSBzZXR0aW5nIHRoZQorICAgICBidWZmZXIgKHdpbmRvdykgc2l6ZSBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIHdlIGNhbgorICAgICBjb250cm9sIHRoZSBTVFJFQU0gTVNTIChzZWdtZW50IHNpemUpLiBUaGUgTVNTIGlzIG5ldmVyIG1vcmUgdGhhdAorICAgICAxLzIgdGhlIG1pbmltdW0gcmVjZWl2ZSBidWZmZXIgc2l6ZSBhdCBlYWNoIGhhbGYgb2YgdGhlCisgICAgIGNvbm5lY3Rpb24uICBUaGlzIGlzIHdoeSB3ZSBhcmUgYWx0ZXJpbmcgdGhlIHJlY2VpdmUgYnVmZmVyIHNpemUKKyAgICAgb24gdGhlIHNlbmRpbmcgc2l6ZSBvZiBhIHVuaWRpcmVjdGlvbmFsIHRyYW5zZmVyLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgbm90IHJlcXVlc3RlZCB0aGF0IHRoZSBzb2NrZXQgYnVmZmVycyBiZSBhbHRlcmVkLCB3ZSB3aWxsIHRyeSB0bworICAgICBmaW5kLW91dCB3aGF0IHRoZWlyIHZhbHVlcyBhcmUuIElmIHdlIGNhbm5vdCB0b3VjaCB0aGUgc29ja2V0CisgICAgIGJ1ZmZlciBpbiBhbnkgd2F5LCB3ZSB3aWxsIHNldCB0aGUgdmFsdWVzIHRvIC0xIHRvIGluZGljYXRlCisgICAgIHRoYXQuICAqLworCiAgIHNldF9zb2NrX2J1ZmZlcih0ZW1wX3NvY2tldCwgU0VORF9CVUZGRVIsIGxzc19zaXplX3JlcSwgJmxzc19zaXplKTsKICAgc2V0X3NvY2tfYnVmZmVyKHRlbXBfc29ja2V0LCBSRUNWX0JVRkZFUiwgbHNyX3NpemVfcmVxLCAmbHNyX3NpemUpOwogCkBAIC0xODksMTA4ICsxODcsMTA4IEBACiB9CiAKIAwKLS8qIFRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSBTVFJFQU0gdW5pZGlyZWN0aW9uYWwgZGF0YSB0cmFuc2ZlciB0ZXN0ICovCi0vKiAoYS5rLmEuIHN0cmVhbSkgZm9yIHRoZSBzb2NrZXRzIGludGVyZmFjZS4gSXQgcmVjZWl2ZXMgaXRzICovCi0vKiBwYXJhbWV0ZXJzIHZpYSBnbG9iYWwgdmFyaWFibGVzIGZyb20gdGhlIHNoZWxsIGFuZCB3cml0ZXMgaXRzICovCi0vKiBvdXRwdXQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gKi8KKy8qIFRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSBTVFJFQU0gdW5pZGlyZWN0aW9uYWwgZGF0YSB0cmFuc2ZlcgorICAgdGVzdCAoYS5rLmEuIHN0cmVhbSkgZm9yIHRoZSBzb2NrZXRzIGludGVyZmFjZS4gSXQgcmVjZWl2ZXMgaXRzCisgICBwYXJhbWV0ZXJzIHZpYSBnbG9iYWwgdmFyaWFibGVzIGZyb20gdGhlIHNoZWxsIGFuZCB3cml0ZXMgaXRzCisgICBvdXRwdXQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gKi8KIAogCi12b2lkIAordm9pZAogc2VuZF9zdHJlYW1fc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgXG5cCiBieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlcy9zZWMgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPQogICAgICIlNWQgICU1ZCAgJTZkICAgICUtNi4yZiAgICU3LjJmICAgXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogUmVjdiAgIFNlbmQgICAgU2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl6YXRpb24gICAgU2VydmljZSBEZW1hbmRcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFNlbmQgICBSZWN2ICAgIFNlbmQgICAgUmVjdlxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgbG9jYWwgIHJlbW90ZSAgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgIGJ5dGVzICAgIHNlY3MuICAgICUtOC44cy9zICAlJSAgICAgICUlICAgICAgIHVzL0tCICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMSA9CiAgICAgIiU1ZCAgJTVkICAlNmQgICAgJS02LjJmICAgICAlNy4yZiAgICUtNi4yZiAlLTYuMmYgICUtNi4zZiAgJS02LjNmXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXG5cCiBBbGlnbm1lbnQgICAgICBPZmZzZXQgICAgICAgICAlLTguOHMgJS04LjhzICAgIFNlbmRzICAgJS04LjhzIFJlY3ZzXG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlICBYZmVyZWQgICBQZXIgICAgICAgICAgICAgICAgIFBlclxuXAogU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3YgICAgICAgICAgICAgU2VuZCAoYXZnKSAgICAgICAgICBSZWN2IChhdmcpXG5cCiAlNWQgICAlNWQgICU1ZCAgICU1ZCAlNi40ZyAgJTYuMmYgICAgICU2ZCAlNi4yZiAgICU2ZFxuIjsKLSAgCi0gIAorCisKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgaW50IGludGVydmFsX2NvdW50OwogI2VuZGlmCi0gIAotICAvKiB3aGF0IHdlIHdhbnQgaXMgdG8gaGF2ZSBhIGJ1ZmZlciBzcGFjZSB0aGF0IGlzIGF0IGxlYXN0IG9uZSAqLwotICAvKiBzZW5kLXNpemUgZ3JlYXRlciB0aGFuIG91ciBzZW5kIHdpbmRvdy4gdGhpcyB3aWxsIGluc3VyZSB0aGF0IHdlICovCi0gIC8qIGFyZSBuZXZlciB0cnlpbmcgdG8gcmUtdXNlIGEgYnVmZmVyIHRoYXQgbWF5IHN0aWxsIGJlIGluIHRoZSBoYW5kcyAqLwotICAvKiBvZiB0aGUgdHJhbnNwb3J0LiBUaGlzIGJ1ZmZlciB3aWxsIGJlIG1hbGxvYydkIGFmdGVyIHdlIGhhdmUgZm91bmQgKi8KLSAgLyogdGhlIHNpemUgb2YgdGhlIGxvY2FsIHNlbmMgc29ja2V0IGJ1ZmZlci4gV2Ugd2lsbCB3YW50IHRvIGRlYWwgKi8KLSAgLyogd2l0aCBhbGlnbm1lbnQgYW5kIG9mZnNldCBjb25jZXJucyBhcyB3ZWxsLiAqLwotICAKKworICAvKiB3aGF0IHdlIHdhbnQgaXMgdG8gaGF2ZSBhIGJ1ZmZlciBzcGFjZSB0aGF0IGlzIGF0IGxlYXN0IG9uZQorICAgICBzZW5kLXNpemUgZ3JlYXRlciB0aGFuIG91ciBzZW5kIHdpbmRvdy4gdGhpcyB3aWxsIGluc3VyZSB0aGF0IHdlCisgICAgIGFyZSBuZXZlciB0cnlpbmcgdG8gcmUtdXNlIGEgYnVmZmVyIHRoYXQgbWF5IHN0aWxsIGJlIGluIHRoZQorICAgICBoYW5kcyBvZiB0aGUgdHJhbnNwb3J0LiBUaGlzIGJ1ZmZlciB3aWxsIGJlIG1hbGxvYydkIGFmdGVyIHdlCisgICAgIGhhdmUgZm91bmQgdGhlIHNpemUgb2YgdGhlIGxvY2FsIHNlbmMgc29ja2V0IGJ1ZmZlci4gV2Ugd2lsbCB3YW50CisgICAgIHRvIGRlYWwgd2l0aCBhbGlnbm1lbnQgYW5kIG9mZnNldCBjb25jZXJucyBhcyB3ZWxsLiAqLworCiAjaWZkZWYgRElSVFkKICAgaW50CSptZXNzYWdlX2ludF9wdHI7CiAjZW5kaWYKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwotICAKKwogICBpbnQJbGVuID0gMDsKICAgaW50CW51bW1lc3NhZ2VzOwogICBTT0NLRVQgc2VuZF9zb2NrZXQ7CiAgIGludAlieXRlc19yZW1haW5pbmc7Ci0gIC8qIHdpdGggbGlua3MgbGlrZSBmZGRpLCBvbmUgY2FuIHNlbmQgPiAzMiBiaXRzIHdvcnRoIG9mIGJ5dGVzICovCi0gIC8qIGR1cmluZyBhIHRlc3QuLi4gOy0pICovCisgIC8qIHdpdGggbGlua3MgbGlrZSBmZGRpLCBvbmUgY2FuIHNlbmQgPiAzMiBiaXRzIHdvcnRoIG9mIGJ5dGVzCisgICAgIGR1cmluZyBhIHRlc3QuLi4gOy0pICovCiAgIGRvdWJsZQlieXRlc19zZW50OwotICAKKwogI2lmZGVmIERJUlRZCiAgIGludAlpOwogI2VuZGlmIC8qIERJUlRZICovCi0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdAlzb2NrYWRkcl91bglzZXJ2ZXI7Ci0gIAorCiAgIHN0cnVjdAlzdHJlYW1fc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSpzdHJlYW1fc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqc3RyZWFtX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CXN0cmVhbV9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnN0cmVhbV9zdHJlYW1fcmVzdWx0OwotICAKLSAgc3RyZWFtX3N0cmVhbV9yZXF1ZXN0ICA9IAorCisgIHN0cmVhbV9zdHJlYW1fcmVxdWVzdCAgPQogICAgIChzdHJ1Y3Qgc3RyZWFtX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc3RyZWFtX3N0cmVhbV9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCBzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHN0cmVhbV9zdHJlYW1fcmVzdWx0ICAgPSAKKyAgc3RyZWFtX3N0cmVhbV9yZXN1bHQgICA9CiAgICAgKHN0cnVjdCBzdHJlYW1fc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCi0gIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUgKi8KLSAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwotICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwotICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCisgIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUKKyAgICAgY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudAorICAgICBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZAorICAgICBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCisKICAgYnplcm8oKGNoYXIgKikmc2VydmVyLAogCXNpemVvZihzZXJ2ZXIpKTsKICAgc2VydmVyLnN1bl9mYW1pbHkgPSBBRl9VTklYOwotICAKLSAgCisKKwogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgZnByaW50Zih3aGVyZSwiU1RSRUFNIFNUUkVBTSBURVNUXG4iKTsKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpCkBAIC0yOTgsMzIgKzI5NiwzMiBAQAogICAgIGVsc2UKICAgICAgIGZwcmludGYod2hlcmUsdHB1dF90aXRsZSxmb3JtYXRfdW5pdHMoKSk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBudW1tZXNzYWdlcwk9CTA7CiAgIGJ5dGVzX3NlbnQJPQkwLjA7CiAgIHRpbWVzX3VwIAk9IAkwOwotICAKKwogICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBzZW5kX3NvY2tldCA9IGNyZWF0ZV91bml4X3NvY2tldChBRl9VTklYLCAKKyAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfdW5peF9zb2NrZXQoQUZfVU5JWCwKIAkJCQkgICBTT0NLX1NUUkVBTSk7Ci0gIAorCiAgIGlmIChzZW5kX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX3N0cmVhbV9zdHJlYW06IHN0cmVhbSBzdHJlYW0gZGF0YSBzb2NrZXQiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInNlbmRfc3RyZWFtX3N0cmVhbTogc2VuZF9zb2NrZXQgb2J0YWluZWQuLi5cbiIpOwogICB9Ci0gIAotICAvKiBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGVpdGhlciByZXRyaWV2ZWQgdGhlIHNvY2tldCBidWZmZXIgc2l6ZXMsICovCi0gIC8qIG9yIGhhdmUgdHJpZWQgdG8gc2V0IHRoZW0sIHNvIG5vdywgd2UgbWF5IHdhbnQgdG8gc2V0IHRoZSBzZW5kICovCi0gIC8qIHNpemUgYmFzZWQgb24gdGhhdCAoYmVjYXVzZSB0aGUgdXNlciBlaXRoZXIgZGlkIG5vdCB1c2UgYSAtbSAqLwotICAvKiBvcHRpb24sIG9yIHVzZWQgb25lIHdpdGggYW4gYXJndW1lbnQgb2YgMCkuIElmIHRoZSBzb2NrZXQgYnVmZmVyICovCi0gIC8qIHNpemUgaXMgbm90IGF2YWlsYWJsZSwgd2Ugd2lsbCBzZXQgdGhlIHNlbmQgc2l6ZSB0byA0S0IgLSBubyAqLwotICAvKiBwYXJ0aWN1bGFyIHJlYXNvbiwganVzdCBhcmJpdHJhcnkuLi4gKi8KKworICAvKiBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGVpdGhlciByZXRyaWV2ZWQgdGhlIHNvY2tldCBidWZmZXIgc2l6ZXMsCisgICAgIG9yIGhhdmUgdHJpZWQgdG8gc2V0IHRoZW0sIHNvIG5vdywgd2UgbWF5IHdhbnQgdG8gc2V0IHRoZSBzZW5kCisgICAgIHNpemUgYmFzZWQgb24gdGhhdCAoYmVjYXVzZSB0aGUgdXNlciBlaXRoZXIgZGlkIG5vdCB1c2UgYSAtbQorICAgICBvcHRpb24sIG9yIHVzZWQgb25lIHdpdGggYW4gYXJndW1lbnQgb2YgMCkuIElmIHRoZSBzb2NrZXQgYnVmZmVyCisgICAgIHNpemUgaXMgbm90IGF2YWlsYWJsZSwgd2Ugd2lsbCBzZXQgdGhlIHNlbmQgc2l6ZSB0byA0S0IgLSBubworICAgICBwYXJ0aWN1bGFyIHJlYXNvbiwganVzdCBhcmJpdHJhcnkuLi4gKi8KICAgaWYgKHNlbmRfc2l6ZSA9PSAwKSB7CiAgICAgaWYgKGxzc19zaXplID4gMCkgewogICAgICAgc2VuZF9zaXplID0gbHNzX3NpemU7CkBAIC0zMzIsNDUgKzMzMCw0NSBAQAogICAgICAgc2VuZF9zaXplID0gNDA5NjsKICAgICB9CiAgIH0KLSAgCi0gIC8qIHNldC11cCB0aGUgZGF0YSBidWZmZXIgcmluZyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQuICovCi0gIC8qIG5vdGUgYWxzbyB0aGF0IHdlIGhhdmUgYWxsb2NhdGVkIGEgcXVhbnRpdHkgKi8KLSAgLyogb2YgbWVtb3J5IHRoYXQgaXMgYXQgbGVhc3Qgb25lIHNlbmQtc2l6ZSBncmVhdGVyIHRoYW4gb3VyIHNvY2tldCAqLwotICAvKiBidWZmZXIgc2l6ZS4gV2Ugd2FudCB0byBiZSBzdXJlIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byAqLwotICAvKiBidWZmZXJzIGFsbG9jYXRlZCAtIHRoaXMgY2FuIGJlIGEgYml0IG9mIGEgcHJvYmxlbSB3aGVuIHRoZSAqLwotICAvKiBzZW5kX3NpemUgaXMgYmlnZ2VyIHRoYW4gdGhlIHNvY2tldCBzaXplLCBzbyB3ZSBtdXN0IGNoZWNrLi4uIHRoZSAqLwotICAvKiB1c2VyIG1heSBoYXZlIHdhbnRlZCB0byBleHBsaWNpdGx5IHNldCB0aGUgIndpZHRoIiBvZiBvdXIgc2VuZCAqLwotICAvKiBidWZmZXJzLCB3ZSBzaG91bGQgcmVzcGVjdCB0aGF0IHdpc2guLi4gKi8KKworICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHJpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQKKyAgICAgb2Zmc2V0LiAgbm90ZSBhbHNvIHRoYXQgd2UgaGF2ZSBhbGxvY2F0ZWQgYSBxdWFudGl0eSBvZiBtZW1vcnkKKyAgICAgdGhhdCBpcyBhdCBsZWFzdCBvbmUgc2VuZC1zaXplIGdyZWF0ZXIgdGhhbiBvdXIgc29ja2V0IGJ1ZmZlcgorICAgICBzaXplLiBXZSB3YW50IHRvIGJlIHN1cmUgdGhhdCB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvIGJ1ZmZlcnMKKyAgICAgYWxsb2NhdGVkIC0gdGhpcyBjYW4gYmUgYSBiaXQgb2YgYSBwcm9ibGVtIHdoZW4gdGhlIHNlbmRfc2l6ZSBpcworICAgICBiaWdnZXIgdGhhbiB0aGUgc29ja2V0IHNpemUsIHNvIHdlIG11c3QgY2hlY2suLi4gdGhlIHVzZXIgbWF5CisgICAgIGhhdmUgd2FudGVkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSAid2lkdGgiIG9mIG91ciBzZW5kIGJ1ZmZlcnMsIHdlCisgICAgIHNob3VsZCByZXNwZWN0IHRoYXQgd2lzaC4uLiAqLwogICBpZiAoc2VuZF93aWR0aCA9PSAwKSB7CiAgICAgc2VuZF93aWR0aCA9IChsc3Nfc2l6ZS9zZW5kX3NpemUpICsgMTsKICAgICBpZiAoc2VuZF93aWR0aCA9PSAxKSBzZW5kX3dpZHRoKys7CiAgIH0KLSAgCisKICAgc2VuZF9yaW5nID0gYWxsb2NhdGVfYnVmZmVyX3Jpbmcoc2VuZF93aWR0aCwKIAkJCQkgICBzZW5kX3NpemUsCiAJCQkJICAgbG9jYWxfc2VuZF9hbGlnbiwKIAkJCQkgICBsb2NhbF9zZW5kX29mZnNldCk7CiAKLSAgLyogSWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCBjcHUgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLCB3ZSBtdXN0ICovCi0gIC8qIGNhbGlicmF0ZSB0aGUgY3B1KHMpLiBXZSB3aWxsIHBlcmZvcm0gdGhpcyB0YXNrIHdpdGhpbiB0aGUgdGVzdHMgKi8KLSAgLyogdGhlbXNlbHZlcy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGUgY3B1IHJhdGUsIHRoZW4gKi8KLSAgLyogY2FsaWJyYXRlX2xvY2FsX2NwdSB3aWxsIHJldHVybiByYXRoZXIgcXVpY2tseSBhcyBpdCB3aWxsIGhhdmUgKi8KLSAgLyogbm90aGluZyB0byBkby4gSWYgbG9jYWxfY3B1X3JhdGUgaXMgemVybywgdGhlbiB3ZSB3aWxsIGdvIHRocm91Z2ggKi8KLSAgLyogYWxsIHRoZSAibm9ybWFsIiBjYWxpYnJhdGlvbiBzdHVmZiBhbmQgcmV0dXJuIHRoZSByYXRlIGJhY2suKi8KLSAgCisgIC8qIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgY3B1IHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cywgd2UgbXVzdAorICAgICBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlIHRlc3RzCisgICAgIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuCisgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlCisgICAgIG5vdGhpbmcgdG8gZG8uIElmIGxvY2FsX2NwdV9yYXRlIGlzIHplcm8sIHRoZW4gd2Ugd2lsbCBnbyB0aHJvdWdoCisgICAgIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiovCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgIH0KLSAgCi0gIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZSBzb2NrZXQgKi8KLSAgLyogcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZSByZWFzb24gZm9yICovCi0gIC8qIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkICovCi0gIC8qIG5vdCBzcGVjaWZ5IGFueSBvZiB0aGUgcGFyYW1ldGVycywgdGhleSB3aWxsIGJlIHBhc3NlZCBhcyAwLCB3aGljaCAqLwotICAvKiB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUgc3lzdGVtJ3MgKi8KLSAgLyogZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0IHdpbGwgKi8KLSAgLyogZGVmYXVsdCB0byAxLCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgCi0gIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQkJPQlET19TVFJFQU1fU1RSRUFNOworCisgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZSBzb2NrZXQKKyAgICAgcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZSByZWFzb24gZm9yCisgICAgIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkCisgICAgIG5vdCBzcGVjaWZ5IGFueSBvZiB0aGUgcGFyYW1ldGVycywgdGhleSB3aWxsIGJlIHBhc3NlZCBhcyAwLAorICAgICB3aGljaCB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUKKyAgICAgc3lzdGVtJ3MgZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0CisgICAgIHdpbGwgZGVmYXVsdCB0byAxLCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KKworICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUJPQlET19TVFJFQU1fU1RSRUFNOwogICBzdHJlYW1fc3RyZWFtX3JlcXVlc3QtPnNlbmRfYnVmX3NpemUJPQlyc3Nfc2l6ZTsKICAgc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemU7CiAgIHN0cmVhbV9zdHJlYW1fcmVxdWVzdC0+cmVjZWl2ZV9zaXplCT0JcmVjdl9zaXplOwpAQCAtMzg4LDI3ICszODYsMjcgQEAKICAgc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5kaXJ0eV9jb3VudCAgICA9ICAgICAgIHJlbV9kaXJ0eV9jb3VudDsKICAgc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5jbGVhbl9jb3VudCAgICA9ICAgICAgIHJlbV9jbGVhbl9jb3VudDsKICNlbmRpZiAvKiBESVJUWSAqLwotICAKLSAgCisKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgIm5ldHBlcmY6IHNlbmRfc3RyZWFtX3N0cmVhbTogcmVxdWVzdGluZyBTVFJFQU0gc3RyZWFtIHRlc3RcbiIpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVxdWVzdCgpOwotICAKLSAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudCAJKi8KLSAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAJKi8KLSAgLyogdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLiAgVGhlCSovCi0gIC8qIHJlbW90ZSB3aWxsIGhhdmUgY2FsaWJyYXRlZCBDUFUgaWYgbmVjZXNzYXJ5LCBhbmQgd2lsbCBoYXZlIGRvbmUJKi8KLSAgLyogYWxsIHRoZSBuZWVkZWQgc2V0LXVwIHdlIHdpbGwgaGF2ZSBjYWxpYnJhdGVkIHRoZSBjcHUgbG9jYWxseQkqLwotICAvKiBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdCwgYW5kIHdpbGwgZ3JhYiB0aGUgY291bnRlciB2YWx1ZSByaWdodAkqLwotICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodAkqLwotICAvKiBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcwkqLwotICAvKiBiZWluZyBzZW50IGZvciB0aGUgU1RSRUFNIHRlc3RzLgkJCQkJKi8KLSAgCisKKyAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudAorICAgICBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjayBpbnRvCisgICAgIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4gIFRoZQorICAgICByZW1vdGUgd2lsbCBoYXZlIGNhbGlicmF0ZWQgQ1BVIGlmIG5lY2Vzc2FyeSwgYW5kIHdpbGwgaGF2ZSBkb25lCisgICAgIGFsbCB0aGUgbmVlZGVkIHNldC11cCB3ZSB3aWxsIGhhdmUgY2FsaWJyYXRlZCB0aGUgY3B1IGxvY2FsbHkKKyAgICAgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QsIGFuZCB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgdmFsdWUgcmlnaHQKKyAgICAgYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQKKyAgICAgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMKKyAgICAgYmVpbmcgc2VudCBmb3IgdGhlIFNUUkVBTSB0ZXN0cy4gICovCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgaWYgKGRlYnVnKQogICAgICAgZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CkBAIC00MjMsMjUgKzQyMSwyNSBAQAogICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF9zdHJlYW1fc3RyZWFtOiByZW1vdGUgZXJyb3IiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0ICAqLwotICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwgCisgIGlmIChjb25uZWN0KHNlbmRfc29ja2V0LAogCSAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLAogCSAgICAgIHNpemVvZihzZXJ2ZXIpKSA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgcGVycm9yKCJuZXRwZXJmOiBzZW5kX3N0cmVhbV9zdHJlYW06IGRhdGEgc29ja2V0IGNvbm5lY3QgZmFpbGVkIik7CiAgICAgcHJpbnRmKCIgcGF0aDogJXNcbiIsc2VydmVyLnN1bl9wYXRoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciB0aGUgKi8KLSAgLyogY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkIGhhdmUgKi8KLSAgLyogaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUgZXh0cmEgKi8KLSAgLyogbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlIGl0ICovCi0gIC8qIGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCi0gIAotICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHN0cmVhbSB0ZXN0LCB0aGV5IGNhbiBiZSAqLwotICAvKiBlaXRoZXIgdGltZSBvciBieXRlLWNvdW50IGJhc2VkLiAqLwotICAKKworICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlcgorICAgICB0aGUgY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkCisgICAgIGhhdmUgaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUgZXh0cmEKKyAgICAgbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlCisgICAgIGl0IGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCisKKyAgLyogU2V0LXVwIHRoZSB0ZXN0IGVuZCBjb25kaXRpb25zLiBGb3IgYSBzdHJlYW0gdGVzdCwgdGhleSBjYW4gYmUKKyAgICAgZWl0aGVyIHRpbWUgb3IgYnl0ZS1jb3VudCBiYXNlZC4gKi8KKwogICBpZiAodGVzdF90aW1lKSB7CiAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgIHRpbWVzX3VwID0gMDsKQEAgLTQ1MywzNCArNDUxLDM1IEBACiAgICAgYnl0ZXNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICB0aW1lc191cCA9IDE7CiAgIH0KLSAgCi0gIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KLSAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KLSAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAKKworICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5CisgICAgIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1CisgICAgIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KKwogICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgCi0gIC8qIFdlIHVzZSBhbiAiT1IiIHRvIGNvbnRyb2wgdGVzdCBleGVjdXRpb24uIFdoZW4gdGhlIHRlc3QgaXMgKi8KLSAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICovCi0gIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KLSAgLyogYWx3YXlzIHJldHVybiBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBmaW5pc2hlZCwgdGhlIHdob2xlICovCi0gIC8qIGV4cHJlc3Npb24gd2lsbCBnbyBmYWxzZSBhbmQgd2Ugd2lsbCBzdG9wIHNlbmRpbmcgZGF0YS4gKi8KLSAgCisKKyAgLyogV2UgdXNlIGFuICJPUiIgdG8gY29udHJvbCB0ZXN0IGV4ZWN1dGlvbi4gV2hlbiB0aGUgdGVzdCBpcworICAgICBjb250cm9sbGVkIGJ5IHRpbWUsIHRoZSBieXRlIGNvdW50IGNoZWNrIHdpbGwgYWx3YXlzIHJldHVybgorICAgICBmYWxzZS4gIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0CisgICAgIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBmaW5pc2hlZCwgdGhlIHdob2xlCisgICAgIGV4cHJlc3Npb24gd2lsbCBnbyBmYWxzZSBhbmQgd2Ugd2lsbCBzdG9wIHNlbmRpbmcgZGF0YS4gKi8KKwogI2lmZGVmIERJUlRZCi0gIC8qIGluaXRpYWxpemUgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGZvciBwdXR0aW5nIGRpcnR5IHN0dWZmICovCi0gIC8qIGludG8gdGhlIHNlbmQgYnVmZmVyLiByYWogKi8KKyAgLyogaW5pdGlhbGl6ZSB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZm9yIHB1dHRpbmcgZGlydHkgc3R1ZmYKKyAgICAgaW50byB0aGUgc2VuZCBidWZmZXIuIHJhaiAqLwogICBzcmFuZCgoaW50KSBnZXRwaWQoKSk7CiAjZW5kaWYKLSAgCisKICAgd2hpbGUgKCghdGltZXNfdXApIHx8IChieXRlc19yZW1haW5pbmcgPiAwKSkgewotICAgIAorCiAjaWZkZWYgRElSVFkKLSAgICAvKiB3ZSB3YW50IHRvIGRpcnR5IHNvbWUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGludGVnZXJzIGluIHRoZSBidWZmZXIgKi8KLSAgICAvKiB3ZSBhcmUgYWJvdXQgdG8gc2VuZC4gd2UgbWF5IGFsc28gd2FudCB0byBicmluZyBzb21lIG51bWJlciBvZiAqLwotICAgIC8qIHRoZW0gY2xlYW5seSBpbnRvIHRoZSBjYWNoZS4gVGhlIGNsZWFuIG9uZXMgd2lsbCBmb2xsb3cgYW55IGRpcnR5ICovCi0gICAgLyogb25lcyBpbnRvIHRoZSBjYWNoZS4gYXQgc29tZSBwb2ludCwgd2UgbWlnaHQgd2FudCB0byByZXBsYWNlICovCi0gICAgLyogdGhlIHJhbmQoKSBjYWxsIHdpdGggc29tZXRoaW5nIGZyb20gYSB0YWJsZSB0byByZWR1Y2Ugb3VyIGNhbGwgKi8KLSAgICAvKiBvdmVyaGVhZCBkdXJpbmcgdGhlIHRlc3QsIGJ1dCBpdCBpcyBub3QgYSBoaWdoIHByaW9yaXR5IGl0ZW0uICovCisgICAgLyogd2Ugd2FudCB0byBkaXJ0eSBzb21lIG51bWJlciBvZiBjb25zZWN1dGl2ZSBpbnRlZ2VycyBpbiB0aGUKKyAgICAgICBidWZmZXIgd2UgYXJlIGFib3V0IHRvIHNlbmQuIHdlIG1heSBhbHNvIHdhbnQgdG8gYnJpbmcgc29tZQorICAgICAgIG51bWJlciBvZiB0aGVtIGNsZWFubHkgaW50byB0aGUgY2FjaGUuIFRoZSBjbGVhbiBvbmVzIHdpbGwKKyAgICAgICBmb2xsb3cgYW55IGRpcnR5IG9uZXMgaW50byB0aGUgY2FjaGUuIGF0IHNvbWUgcG9pbnQsIHdlIG1pZ2h0CisgICAgICAgd2FudCB0byByZXBsYWNlIHRoZSByYW5kKCkgY2FsbCB3aXRoIHNvbWV0aGluZyBmcm9tIGEgdGFibGUgdG8KKyAgICAgICByZWR1Y2Ugb3VyIGNhbGwgb3ZlcmhlYWQgZHVyaW5nIHRoZSB0ZXN0LCBidXQgaXQgaXMgbm90IGEgaGlnaAorICAgICAgIHByaW9yaXR5IGl0ZW0uICovCiAgICAgbWVzc2FnZV9pbnRfcHRyID0gKGludCAqKShzZW5kX3JpbmctPmJ1ZmZlcl9wdHIpOwogICAgIGZvciAoaSA9IDA7IGkgPCBsb2NfZGlydHlfY291bnQ7IGkrKykgewogICAgICAgKm1lc3NhZ2VfaW50X3B0ciA9IHJhbmQoKTsKQEAgLTQ5MSw3ICs0OTAsNyBAQAogICAgICAgbWVzc2FnZV9pbnRfcHRyKys7CiAgICAgfQogI2VuZGlmIC8qIERJUlRZICovCi0gICAgCisKICAgICBpZigobGVuPXNlbmQoc2VuZF9zb2NrZXQsCiAJCSBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCiAJCSBzZW5kX3NpemUsCkBAIC01MDksNDAgKzUwOCwzOSBAQAogCSBpbnRlcnZhbF9jb3VudCA8IGludGVydmFsX3dhdGU7CiAJIGludGVydmFsX2NvdW50KyspOwogI2VuZGlmCi0gICAgCi0gICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgKi8KLSAgICAvKiBkYXRhIGJ1ZmZlci4uLndlIG1heSBhbHNvIHdhbnQgdG8gd3JhcCBiYWNrIHRvIHRoZSAiYmVnaW5uaW5nIiAqLwotICAgIC8qIG9mIHRoZSBidWZmZXJzcGFjZSwgc28gd2Ugd2lsbCBtb2QgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBzZW50ICovCi0gICAgLyogYnkgdGhlIHNlbmQgd2lkdGgsIGFuZCB1c2UgdGhhdCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldCB0byBhZGQgKi8KLSAgICAvKiB0byB0aGUgYmFzZSBwb2ludGVyLiAqLwotICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorCisgICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUKKyAgICAgICBkYXRhIGJ1ZmZlci4uLndlIG1heSBhbHNvIHdhbnQgdG8gd3JhcCBiYWNrIHRvIHRoZSAiYmVnaW5uaW5nIgorICAgICAgIG9mIHRoZSBidWZmZXJzcGFjZSwgc28gd2Ugd2lsbCBtb2QgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBzZW50CisgICAgICAgYnkgdGhlIHNlbmQgd2lkdGgsIGFuZCB1c2UgdGhhdCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldCB0byBhZGQKKyAgICAgICB0byB0aGUgYmFzZSBwb2ludGVyLiAqLworICAgIG51bW1lc3NhZ2VzKys7CiAgICAgc2VuZF9yaW5nID0gc2VuZF9yaW5nLT5uZXh0OwogICAgIGlmIChieXRlc19yZW1haW5pbmcpIHsKICAgICAgIGJ5dGVzX3JlbWFpbmluZyAtPSBzZW5kX3NpemU7CiAgICAgfQogICB9Ci0gIAotICAvKiBUaGUgdGVzdCBpcyBvdmVyLiBGbHVzaCB0aGUgYnVmZmVycyB0byB0aGUgcmVtb3RlIGVuZC4gV2UgZG8gYSAqLwotICAvKiBncmFjZWZ1bCByZWxlYXNlIHRvIGluc3VyZSB0aGF0IGFsbCBkYXRhIGhhcyBiZWVuIHRha2VuIGJ5IHRoZSAqLwotICAvKiByZW1vdGUuICovIAotICAKKworICAvKiBUaGUgdGVzdCBpcyBvdmVyLiBGbHVzaCB0aGUgYnVmZmVycyB0byB0aGUgcmVtb3RlIGVuZC4gV2UgZG8gYQorICAgICBncmFjZWZ1bCByZWxlYXNlIHRvIGluc3VyZSB0aGF0IGFsbCBkYXRhIGhhcyBiZWVuIHRha2VuIGJ5IHRoZQorICAgICByZW1vdGUuICovCisKICAgaWYgKGNsb3NlKHNlbmRfc29ja2V0KSA9PSAtMSkgewogICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF9zdHJlYW1fc3RyZWFtOiBjYW5ub3QgY2xvc2Ugc29ja2V0Iik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwotICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwotICAKLSAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nICovCi0JCQkJCQkvKiBtZWFzdXJlZCBhbmQgaG93ICovCi0JCQkJCQkvKiBsb25nIGRpZCB3ZSByZWFsbHkgKi8KLQkJCQkJCS8qIHJ1bj8gKi8gIAotICAKLSAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlICovCi0gIC8qIGNhbGN1bGF0ZWQgc2VydmljZSBkZW1hbmQgYW5kIGFsbCB0aG9zZSBpbnRlcmVzdGluZyB0aGluZ3MuIElmIGl0ICovCi0gIC8qIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KLSAgCisKKyAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZAorICAgICB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLworCisgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsgLyogd2FzIGNwdSBiZWluZyBtZWFzdXJlZAorCQkJCQkgICAgICBhbmQgaG93IGxvbmcgZGlkIHdlCisJCQkJCSAgICAgIHJlYWxseSBydW4/ICovCisKKyAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlCisgICAgIGNhbGN1bGF0ZWQgc2VydmljZSBkZW1hbmQgYW5kIGFsbCB0aG9zZSBpbnRlcmVzdGluZyB0aGluZ3MuIElmIGl0CisgICAgIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KKwogICByZWN2X3Jlc3BvbnNlKCk7CiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCkBAIC01NTEsMjggKzU0OSwyOSBAQAogICBlbHNlIHsKICAgICBTZXRfZXJybm8obmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwogICAgIHBlcnJvcigibmV0cGVyZjogcmVtb3RlIGVycm9yIik7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBXZSBub3cgY2FsY3VsYXRlIHdoYXQgb3VyIHRocnVwdXQgd2FzIGZvciB0aGUgdGVzdC4gSW4gdGhlIGZ1dHVyZSwgKi8KLSAgLyogd2UgbWF5IHdhbnQgdG8gaW5jbHVkZSBhIGNhbGN1bGF0aW9uIG9mIHRoZSB0aHJ1cHV0IG1lYXN1cmVkIGJ5ICovCi0gIC8qIHRoZSByZW1vdGUsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGNhc2UgdGhhdCBmb3IgYSBTVFJFQU0gc3RyZWFtIHRlc3QsICovCi0gIC8qIHRoYXQgdGhlIHR3byBudW1iZXJzIHNob3VsZCBiZSAqdmVyeSogY2xvc2UuLi4gV2UgY2FsY3VsYXRlICovCi0gIC8qIGJ5dGVzX3NlbnQgcmVnYXJkbGVzcyBvZiB0aGUgd2F5IHRoZSB0ZXN0IGxlbmd0aCB3YXMgY29udHJvbGxlZC4gKi8KLSAgLyogSWYgaXQgd2FzIHRpbWUsIHdlIG5lZWRlZCB0bywgYW5kIGlmIGl0IHdhcyBieSBieXRlcywgdGhlIHVzZXIgbWF5ICovCi0gIC8qIGhhdmUgc3BlY2lmaWVkIGEgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2Fzbid0IGEgbXVsdGlwbGUgb2YgdGhlICovCi0gIC8qIHNlbmRfc2l6ZSwgc28gd2UgcmVhbGx5IGRpZG4ndCBzZW5kIHdoYXQgaGUgYXNrZWQgZm9yIDstKSAqLwotICAKKworICAvKiBXZSBub3cgY2FsY3VsYXRlIHdoYXQgb3VyIHRocnVwdXQgd2FzIGZvciB0aGUgdGVzdC4gSW4gdGhlCisgICAgIGZ1dHVyZSwgd2UgbWF5IHdhbnQgdG8gaW5jbHVkZSBhIGNhbGN1bGF0aW9uIG9mIHRoZSB0aHJ1cHV0CisgICAgIG1lYXN1cmVkIGJ5IHRoZSByZW1vdGUsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGNhc2UgdGhhdCBmb3IgYQorICAgICBTVFJFQU0gc3RyZWFtIHRlc3QsIHRoYXQgdGhlIHR3byBudW1iZXJzIHNob3VsZCBiZSAqdmVyeSoKKyAgICAgY2xvc2UuLi4gV2UgY2FsY3VsYXRlIGJ5dGVzX3NlbnQgcmVnYXJkbGVzcyBvZiB0aGUgd2F5IHRoZSB0ZXN0CisgICAgIGxlbmd0aCB3YXMgY29udHJvbGxlZC4gIElmIGl0IHdhcyB0aW1lLCB3ZSBuZWVkZWQgdG8sIGFuZCBpZiBpdAorICAgICB3YXMgYnkgYnl0ZXMsIHRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBhIG51bWJlciBvZiBieXRlcyB0aGF0CisgICAgIHdhc24ndCBhIG11bHRpcGxlIG9mIHRoZSBzZW5kX3NpemUsIHNvIHdlIHJlYWxseSBkaWRuJ3Qgc2VuZCB3aGF0CisgICAgIGhlIGFza2VkIGZvciA7LSkgKi8KKwogICBieXRlc19zZW50CT0gKChkb3VibGUpIHNlbmRfc2l6ZSAqIChkb3VibGUpIG51bW1lc3NhZ2VzKSArIGxlbjsKICAgdGhydXB1dAk9IGNhbGNfdGhydXB1dChieXRlc19zZW50KTsKIAogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKLSAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCi0gICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgKi8KLSAgICAvKiBPZiBjb3Vyc2UsIHNvbWUgb2YgdGhlIGluZm9ybWF0aW9uIG1pZ2h0IGJlIGJvZ3VzIGJlY2F1c2UgKi8KLSAgICAvKiB0aGVyZSB3YXMgbm8gaWRsZSBjb3VudGVyIGluIHRoZSBrZXJuZWwocykuIFdlIG5lZWQgdG8gbWFrZSAqLwotICAgIC8qIGEgbm90ZSBvZiB0aGlzIGZvciB0aGUgdXNlcidzIGJlbmVmaXQuLi4qLworICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUKKyAgICAgICB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSBPZiBjb3Vyc2UsIHNvbWUgb2YgdGhlCisgICAgICAgaW5mb3JtYXRpb24gbWlnaHQgYmUgYm9ndXMgYmVjYXVzZSB0aGVyZSB3YXMgbm8gaWRsZSBjb3VudGVyIGluCisgICAgICAgdGhlIGtlcm5lbChzKS4gV2UgbmVlZCB0byBtYWtlIGEgbm90ZSBvZiB0aGlzIGZvciB0aGUgdXNlcidzCisgICAgICAgYmVuZWZpdC4uLiovCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgaWYgKGxvY2FsX2NwdV9yYXRlID09IDAuMCkgewogCWZwcmludGYod2hlcmUsIldBUk5JTkcgV0FSTklORyBXQVJOSU5HICBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAgV0FSTklORyFcbiIpOwpAQCAtNTg5LDcgKzU4OCw3IEBACiAgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAtMS4wOwogICAgIH0KLSAgICAKKwogICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICBpZiAocmVtb3RlX2NwdV9yYXRlID09IDAuMCkgewogCWZwcmludGYod2hlcmUsIkRBTkdFUiAgIERBTkdFUiAgREFOR0VSICAgREFOR0VSICAgREFOR0VSICBEQU5HRVIgICBEQU5HRVIhXG4iKTsKQEAgLTYwNiwxNiArNjA1LDE2IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gLTEuMDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAtMS4wOwogICAgIH0KLSAgICAKLSAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyICovCi0gICAgLyogaGFzIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSAqLwotICAgIC8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgKi8KLSAgICAvKiB1c2VyIGhhcyByZXF1ZXN0ZWQgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAqLwotICAgIC8qICJzdHJlYW1wZXJmIiBudW1iZXJzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgdmVyYm9zaXR5ICovCi0gICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwotICAgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KLSAgICAvKiBub3QgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLwotICAgIAorCisgICAgLyogV2UgYXJlIG5vdyByZWFkeSB0byBwcmludCBhbGwgdGhlIGluZm9ybWF0aW9uLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgICBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgbG9jYWwKKyAgICAgICBzZXJ2aWNlIGRlbWFuZCwgb3IgdGhlIHJlbW90ZSBzZXJ2aWNlIGRlbWFuZC4gSWYgdGhlIHVzZXIgaGFzCisgICAgICAgcmVxdWVzdGVkIHZlcmJvc2l0eSBsZXZlbCAxLCBoZSB3aWxsIGdldCB0aGUgYmFzaWMgInN0cmVhbXBlcmYiCisgICAgICAgbnVtYmVycy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHZlcmJvc2l0eSBvZiBncmVhdGVyIHRoYW4KKyAgICAgICAxLCB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgYmFja2dyb3VuZAorICAgICAgIGluZm9ybWF0aW9uIGZyb20gb3V0c2lkZSBvZiB0aGlzIGJsb2NrIGFzIGl0IGl0IG5vdAorICAgICAgIGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtNjU2LDI4ICs2NTUsMjggQEAKICAgICBjYXNlIDE6CiAgICAgY2FzZSAyOgogICAgICAgZnByaW50Zih3aGVyZSwKLQkgICAgICB0cHV0X2ZtdF8xLAkJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KLQkgICAgICByc3Jfc2l6ZSwgCQkvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCi0JICAgICAgbHNzX3NpemUsIAkJLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCi0JICAgICAgc2VuZF9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHNlbmRzICovCi0JICAgICAgZWxhcHNlZF90aW1lLCAJCS8qIGhvdyBsb25nIGRpZCBpdCB0YWtlICovCi0JICAgICAgdGhydXB1dCk7LyogaG93IGZhc3QgZGlkIGl0IGdvICovCisJICAgICAgdHB1dF9mbXRfMSwgICAgLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KKwkgICAgICByc3Jfc2l6ZSwgICAgICAvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCisJICAgICAgbHNzX3NpemUsICAgICAgLyogbG9jYWwgc2VuZGJ1ZiBzaXplICovCisJICAgICAgc2VuZF9zaXplLCAgICAgLyogaG93IGxhcmdlIHdlcmUgdGhlIHNlbmRzICovCisJICAgICAgZWxhcHNlZF90aW1lLCAgLyogaG93IGxvbmcgZGlkIGl0IHRha2UgKi8KKwkgICAgICB0aHJ1cHV0KTsgICAgICAvKiBob3cgZmFzdCBkaWQgaXQgZ28gKi8KICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICAKLSAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KLSAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KLSAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCi0gIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCi0gIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKworICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZQorICAgICBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgdGVzdCwgYnV0IGF0IHRoZQorICAgICBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlIGZvcm1hdHRpbmcsIHNvIEkgd2lsbAorICAgICBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZworICAgICB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KKwogICBpZiAodmVyYm9zaXR5ID4gMSkgewotICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBrbm93IGl0IGFsbCwgc28gd2Ugd2lsbCBnaXZlIGl0IHRvIGhpbS4gKi8KLSAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCi0gICAgLyogU1RSRUFNIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KLSAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgICAKKyAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uCisgICAgICAgVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dAorICAgICAgIFNUUkVBTSBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzIGFuZAorICAgICAgIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCisKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICBrc2lua19mbXQsCiAJICAgICJCeXRlcyIsCkBAIC02OTMsMjYgKzY5MiwyNiBAQAogCSAgICBieXRlc19zZW50IC8gKGRvdWJsZSlzdHJlYW1fc3RyZWFtX3Jlc3VsdC0+cmVjdl9jYWxscywKIAkgICAgc3RyZWFtX3N0cmVhbV9yZXN1bHQtPnJlY3ZfY2FsbHMpOwogICB9Ci0gIAorCiB9CiAMCiAKLS8qIFRoaXMgaXMgdGhlIHNlcnZlci1zaWRlIHJvdXRpbmUgZm9yIHRoZSBzdHJlYW0gc3RyZWFtIHRlc3QuIEl0IGlzICovCi0vKiBpbXBsZW1lbnRlZCBhcyBvbmUgcm91dGluZS4gSSBjb3VsZCBicmVhayB0aGluZ3Mtb3V0IHNvbWV3aGF0LCBidXQgKi8KLS8qIGRpZG4ndCBmZWVsIGl0IHdhcyBuZWNlc3NhcnkuICovCisvKiBUaGlzIGlzIHRoZSBzZXJ2ZXItc2lkZSByb3V0aW5lIGZvciB0aGUgc3RyZWFtIHN0cmVhbSB0ZXN0LiBJdCBpcworICAgaW1wbGVtZW50ZWQgYXMgb25lIHJvdXRpbmUuIEkgY291bGQgYnJlYWsgdGhpbmdzLW91dCBzb21ld2hhdCwgYnV0CisgICBkaWRuJ3QgZmVlbCBpdCB3YXMgbmVjZXNzYXJ5LiAqLwogCiB2b2lkCiByZWN2X3N0cmVhbV9zdHJlYW0oKQogewotICAKKwogICBzdHJ1Y3Qgc29ja2FkZHJfdW4gbXlhZGRyX3VuLCBwZWVyYWRkcl91bjsKICAgU09DS0VUIHNfbGlzdGVuLHNfZGF0YTsKLSAgaW50IAlhZGRybGVuOworICBuZXRwZXJmX3NvY2tsZW5fdCBhZGRybGVuOwogICBpbnQJbGVuOwogICBpbnQJcmVjZWl2ZV9jYWxscyA9IDA7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKICAgaW50ICAgYnl0ZXNfcmVjZWl2ZWQ7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogCiAjaWZkZWYgRElSVFkKQEAgLTcyMiw5NSArNzIxLDk1IEBACiAgIGludCAgIGNsZWFuX2NvdW50OwogICBpbnQgICBpOwogI2VuZGlmCi0gIAorCiAgIHN0cnVjdAlzdHJlYW1fc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSpzdHJlYW1fc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqc3RyZWFtX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0CXN0cmVhbV9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnN0cmVhbV9zdHJlYW1fcmVzdWx0czsKLSAgCi0gIHN0cmVhbV9zdHJlYW1fcmVxdWVzdAk9IAorCisgIHN0cmVhbV9zdHJlYW1fcmVxdWVzdAk9CiAgICAgKHN0cnVjdCBzdHJlYW1fc3RyZWFtX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlCT0gCisgIHN0cmVhbV9zdHJlYW1fcmVzcG9uc2UJPQogICAgIChzdHJ1Y3Qgc3RyZWFtX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBzdHJlYW1fc3RyZWFtX3Jlc3VsdHMJPSAKKyAgc3RyZWFtX3N0cmVhbV9yZXN1bHRzCT0KICAgICAoc3RydWN0IHN0cmVhbV9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3Zfc3RyZWFtX3N0cmVhbTogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KLSAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwotICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwotICAvKiBzZW50IHVzIDAncy4gSWYgdGhlIHNvY2tldCBzaXplcyBjYW5ub3QgYmUgY2hhbmdlZCwgdGhlbiB3ZSB3aWxsICovCi0gIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwotICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCi0gIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKLSAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0ICovCi0gIC8qIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzICovCi0gIC8qIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMgdW5leHBlY3RlZCAqLwotICAvKiByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCisgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkCisgICAgIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYKKyAgICAgc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUKKyAgICAgc2VudCB1cyAwJ3MuIElmIHRoZSBzb2NrZXQgc2l6ZXMgY2Fubm90IGJlIGNoYW5nZWQsIHRoZW4gd2Ugd2lsbAorICAgICBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUKKyAgICAgZGV0ZXJtaW5lZCwgdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28KKyAgICAgd3JvbmcgZm9yIGFueSByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KKworICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQKKyAgICAgd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMKKyAgICAgdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cworICAgICB1bmV4cGVjdGVkIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3N0cmVhbV9zdHJlYW06IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBTVFJFQU1fU1RSRUFNX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3N0cmVhbV9zdHJlYW06IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgLyogV2Ugbm93IGFsdGVyIHRoZSBtZXNzYWdlX3B0ciB2YXJpYWJsZSB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLwotICAvKiBhbGlnbm1lbnQgd2l0aCB0aGUgZGVzaXJlZCBvZmZzZXQuICovCi0gIAorCisgIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGUgdG8gYmUgYXQgdGhlIGRlc2lyZWQKKyAgICAgYWxpZ25tZW50IHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0LiAqLworCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc3RyZWFtX3N0cmVhbTogcmVxdWVzdGVkIGFsaWdubWVudCBvZiAlZFxuIiwKIAkgICAgc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQogCi0gIC8qIExldCdzIGNsZWFyLW91dCBvdXIgc29ja2FkZHIgZm9yIHRoZSBzYWtlIG9mIGNsZWFubGluZXMuIFRoZW4gd2UgKi8KLSAgLyogY2FuIHB1dCBpbiBPVVIgdmFsdWVzICEtKSBBdCBzb21lIHBvaW50LCB3ZSBtYXkgd2FudCB0byBuYWlsIHRoaXMgKi8KLSAgLyogc29ja2V0IHRvIGEgcGFydGljdWxhciBuZXR3b3JrLWxldmVsIGFkZHJlc3MsIGJ1dCBmb3Igbm93LCAqLwotICAvKiBJTkFERFJfQU5ZIHNob3VsZCBiZSBqdXN0IGZpbmUuICovCi0gIAorICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlCisgICAgIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzCisgICAgIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywKKyAgICAgSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLworCiAgIGJ6ZXJvKChjaGFyICopJm15YWRkcl91biwKIAlzaXplb2YobXlhZGRyX3VuKSk7CiAgIG15YWRkcl91bi5zdW5fZmFtaWx5ICAgICAgPSBBRl9VTklYOwotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3N0cmVhbV9zdHJlYW06IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBjcmVhdGVfdW5peF9zb2NrZXQgZXhwZWN0cyB0byBmaW5kIHNvbWUgdGhpbmdzIGluIHRoZSBnbG9iYWwgKi8KLSAgLyogdmFyaWFibGVzLCBzbyBzZXQgdGhlIGdsb2JhbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBpbiB0aGUgcmVxdWVzdC4gKi8KLSAgLyogb25jZSB0aGUgc29ja2V0IGhhcyBiZWVuIGNyZWF0ZWQsIHdlIHdpbGwgc2V0IHRoZSByZXNwb25zZSB2YWx1ZXMgKi8KLSAgLyogYmFzZWQgb24gdGhlIHVwZGF0ZWQgdmFsdWUgb2YgdGhvc2UgZ2xvYmFscy4gcmFqIDcvOTQgKi8KKworICAvKiBjcmVhdGVfdW5peF9zb2NrZXQgZXhwZWN0cyB0byBmaW5kIHNvbWUgdGhpbmdzIGluIHRoZSBnbG9iYWwKKyAgICAgdmFyaWFibGVzLCBzbyBzZXQgdGhlIGdsb2JhbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBpbiB0aGUgcmVxdWVzdC4KKyAgICAgb25jZSB0aGUgc29ja2V0IGhhcyBiZWVuIGNyZWF0ZWQsIHdlIHdpbGwgc2V0IHRoZSByZXNwb25zZSB2YWx1ZXMKKyAgICAgYmFzZWQgb24gdGhlIHVwZGF0ZWQgdmFsdWUgb2YgdGhvc2UgZ2xvYmFscy4gcmFqIDcvOTQgKi8KICAgbHNzX3NpemVfcmVxID0gc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplOwogICBsc3Jfc2l6ZV9yZXEgPSBzdHJlYW1fc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYnVmX3NpemU7CiAKICAgc19saXN0ZW4gPSBjcmVhdGVfdW5peF9zb2NrZXQoQUZfVU5JWCwKIAkJCQlTT0NLX1NUUkVBTSk7Ci0gIAorCiAgIGlmIChzX2xpc3RlbiA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIExldCdzIGdldCBhbiBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoaXMgc29ja2V0IHNvIHdlIGNhbiB0ZWxsIHRoZSAqLwotICAvKiBpbml0aWF0b3IgaG93IHRvIHJlYWNoIHRoZSBkYXRhIHNvY2tldC4gVGhlcmUgbWF5IGJlIGEgZGVzaXJlIHRvICovCi0gIC8qIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsICovCi0gIC8qIG11bHRpLWNvbm5lY3Rpb24gc2l0dWF0aW9uLCBidXQgZm9yIG5vdywgd2UnbGwgaWdub3JlIHRoZSBpc3N1ZSAqLwotICAvKiBhbmQgY29uY2VudHJhdGUgb24gc2luZ2xlIGNvbm5lY3Rpb24gdGVzdGluZy4gKi8KLSAgCisKKyAgLyogTGV0J3MgZ2V0IGFuIGFkZHJlc3MgYXNzaWduZWQgdG8gdGhpcyBzb2NrZXQgc28gd2UgY2FuIHRlbGwgdGhlCisgICAgIGluaXRpYXRvciBob3cgdG8gcmVhY2ggdGhlIGRhdGEgc29ja2V0LiBUaGVyZSBtYXkgYmUgYSBkZXNpcmUgdG8KKyAgICAgbmFpbCB0aGlzIHNvY2tldCB0byBhIHNwZWNpZmljIElQIGFkZHJlc3MgaW4gYSBtdWx0aS1ob21lZCwKKyAgICAgbXVsdGktY29ubmVjdGlvbiBzaXR1YXRpb24sIGJ1dCBmb3Igbm93LCB3ZSdsbCBpZ25vcmUgdGhlIGlzc3VlCisgICAgIGFuZCBjb25jZW50cmF0ZSBvbiBzaW5nbGUgY29ubmVjdGlvbiB0ZXN0aW5nLiAqLworCiAgIHN0cmNweShteWFkZHJfdW4uc3VuX3BhdGgsdGVtcG5hbShwYXRoX3ByZWZpeCwibmV0cGVyZi4iKSk7CiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInNlbGVjdGVkIGEgcGF0aCBvZiAlc1xuIixteWFkZHJfdW4uc3VuX3BhdGgpOwpAQCAtODIzLDEwICs4MjIsMTAgQEAKICAgICBmcHJpbnRmKHdoZXJlLCJjb3VsZCBub3QgYmluZCB0byBwYXRoXG4iKTsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBjaG1vZChteWFkZHJfdW4uc3VuX3BhdGgsIDA2NjYpOwogCiAgIC8qIHdoYXQgc29ydCBvZiBzaXplcyBkaWQgd2UgZW5kLXVwIHdpdGg/ICovCkBAIC04NDEsMTMgKzg0MCwxMyBAQAogICBlbHNlIHsKICAgICByZWN2X3NpemUgPSBzdHJlYW1fc3RyZWFtX3JlcXVlc3QtPnJlY2VpdmVfc2l6ZTsKICAgfQotICAKLSAgLyogd2Ugd2FudCB0byBzZXQtdXAgb3VyIHJlY3ZfcmluZyBpbiBhIG1hbm5lciBhbmFsYWdvdXMgdG8gd2hhdCB3ZSAqLwotICAvKiBkbyBvbiB0aGUgc2VuZGluZyBzaWRlLiB0aGlzIGlzIG1vcmUgZm9yIHRoZSBzYWtlIG9mIHN5bW1ldHJ5ICovCi0gIC8qIHRoYW4gZm9yIHRoZSBuZWVkcyBvZiBzYXkgY29weSBhdm9pZGFuY2UsIGJ1dCBpdCBtaWdodCBhbHNvIGJlICovCi0gIC8qIG1vcmUgcmVhbGlzdGljIC0gdGhpcyB3YXkgb25lIGNvdWxkIGNvbmNlaXZhYmx5IGdvIHdpdGggYSAqLwotICAvKiBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB3aGVuIHRha2luZyB0aGUgZGF0YSBhbiBwdXR0aW5nIGl0IGludG8gKi8KLSAgLyogdGhlIGZpbGVzeXN0ZW0gb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4gcmFqIDcvOTQgKi8KKworICAvKiB3ZSB3YW50IHRvIHNldC11cCBvdXIgcmVjdl9yaW5nIGluIGEgbWFubmVyIGFuYWxhZ291cyB0byB3aGF0IHdlCisgICAgIGRvIG9uIHRoZSBzZW5kaW5nIHNpZGUuIHRoaXMgaXMgbW9yZSBmb3IgdGhlIHNha2Ugb2Ygc3ltbWV0cnkKKyAgICAgdGhhbiBmb3IgdGhlIG5lZWRzIG9mIHNheSBjb3B5IGF2b2lkYW5jZSwgYnV0IGl0IG1pZ2h0IGFsc28gYmUKKyAgICAgbW9yZSByZWFsaXN0aWMgLSB0aGlzIHdheSBvbmUgY291bGQgY29uY2VpdmFibHkgZ28gd2l0aCBhCisgICAgIGRvdWJsZS1idWZmZXJpbmcgc2NoZW1lIHdoZW4gdGFraW5nIHRoZSBkYXRhIGFuIHB1dHRpbmcgaXQgaW50bworICAgICB0aGUgZmlsZXN5c3RlbSBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiByYWogNy85NCAqLwogCiAgIGlmIChyZWN2X3dpZHRoID09IDApIHsKICAgICByZWN2X3dpZHRoID0gKGxzcl9zaXplL3JlY3Zfc2l6ZSkgKyAxOwpAQCAtODYzLDU3ICs4NjIsNTcgQEAKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3N0cmVhbV9zdHJlYW06IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIE5vdywgbGV0J3Mgc2V0LXVwIHRoZSBzb2NrZXQgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyAqLwogICBpZiAobGlzdGVuKHNfbGlzdGVuLCA1KSA9PSBTT0NLRVRfRVJST1IpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIGNsb3NlKHNfbGlzdGVuKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIG5vdyBnZXQgdGhlIHBvcnQgbnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gICovCiAgIGFkZHJsZW4gPSBzaXplb2YobXlhZGRyX3VuKTsKLSAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLCAKKyAgaWYgKGdldHNvY2tuYW1lKHNfbGlzdGVuLAogCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX3VuLAogCQkgICZhZGRybGVuKSA9PSBTT0NLRVRfRVJST1IpewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIE5vdyBteWFkZHJfdW4gY29udGFpbnMgdGhlIHBhdGggKi8KLSAgLyogcmV0dXJuZWQgdG8gdGhlIHNlbmRlciBhbHNvIGltcGxpY2l0bHkgdGVsbGluZyB0aGUgc2VuZGVyIHRoYXQgdGhlICovCi0gIC8qIHNvY2tldCBidWZmZXIgc2l6aW5nIGhhcyBiZWVuIGRvbmUuICovCisKKyAgLyogTm93IG15YWRkcl91biBjb250YWlucyB0aGUgcGF0aCByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28KKyAgICAgaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzCisgICAgIGJlZW4gZG9uZS4gKi8KICAgc3RyY3B5KHN0cmVhbV9zdHJlYW1fcmVzcG9uc2UtPnVuaXhfcGF0aCxteWFkZHJfdW4uc3VuX3BhdGgpOwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyAgID0gMDsKLSAgCi0gIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCi0gIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwotICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwotICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAtMSB0byAqLwotICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKworICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLAorICAgICB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZQorICAgICBtYXggcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZQorICAgICBtZWFzdXJlZCwgb3Igc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwKKyAgICAgcmV0dXJuIGEgLTEgdG8gdGhlIGluaXRpYXRvci4gKi8KKwogICBzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IDAuMDsgCS8qIGFzc3VtZSBubyBjcHUgKi8KICAgaWYgKHN0cmVhbV9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7Ci0gICAgc3RyZWFtX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgPSAKKyAgICBzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9CiAgICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1KHN0cmVhbV9zdHJlYW1fcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAotICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KLSAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCisKKyAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mCisgICAgIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICBzdHJlYW1fc3RyZWFtX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplID0gbHNzX3NpemU7CiAgIHN0cmVhbV9zdHJlYW1fcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemUgPSBsc3Jfc2l6ZTsKICAgc3RyZWFtX3N0cmVhbV9yZXNwb25zZS0+cmVjZWl2ZV9zaXplID0gcmVjdl9zaXplOwogCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl91bik7Ci0gIAorCiAgIGlmICgoc19kYXRhPWFjY2VwdChzX2xpc3RlbiwKIAkJICAgICAoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyX3VuLAogCQkgICAgICZhZGRybGVuKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKQEAgLTkyMSwyMCArOTIwLDIwIEBACiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KLSAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKKyAgLyogTm93IGl0J3MgdGltZSB0byBzdGFydCByZWNlaXZpbmcgZGF0YSBvbiB0aGUgY29ubmVjdGlvbi4gV2Ugd2lsbAorICAgICBmaXJzdCBncmFiIHRoZSBhcHJvcHJpYXRlIGNvdW50ZXJzIGFuZCB0aGVuIHN0YXJ0IGdyYWJiaW5nLiAqLworCiAgIGNwdV9zdGFydChzdHJlYW1fc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCi0gIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHNodXRkb3duLCB3aGljaCB3aWxsICovCi0gIC8qIHJldHVybiBhIGxlbmd0aCBvZiB6ZXJvICAgKi8KLSAgCisKKyAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHNlbmRlciBkb2VzIGEgc2h1dGRvd24sIHdoaWNoIHdpbGwKKyAgICAgcmV0dXJuIGEgbGVuZ3RoIG9mIHplcm8gICovCisKICNpZmRlZiBESVJUWQotICAgIC8qIHdlIHdhbnQgdG8gZGlydHkgc29tZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgaW50ZWdlcnMgaW4gdGhlIGJ1ZmZlciAqLwotICAgIC8qIHdlIGFyZSBhYm91dCB0byByZWN2LiB3ZSBtYXkgYWxzbyB3YW50IHRvIGJyaW5nIHNvbWUgbnVtYmVyIG9mICovCi0gICAgLyogdGhlbSBjbGVhbmx5IGludG8gdGhlIGNhY2hlLiBUaGUgY2xlYW4gb25lcyB3aWxsIGZvbGxvdyBhbnkgZGlydHkgKi8KLSAgICAvKiBvbmVzIGludG8gdGhlIGNhY2hlLiAqLworICAvKiB3ZSB3YW50IHRvIGRpcnR5IHNvbWUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGludGVnZXJzIGluIHRoZQorICAgICBidWZmZXIgd2UgYXJlIGFib3V0IHRvIHJlY3YuIHdlIG1heSBhbHNvIHdhbnQgdG8gYnJpbmcgc29tZQorICAgICBudW1iZXIgb2YgdGhlbSBjbGVhbmx5IGludG8gdGhlIGNhY2hlLiBUaGUgY2xlYW4gb25lcyB3aWxsIGZvbGxvdworICAgICBhbnkgZGlydHkgb25lcyBpbnRvIHRoZSBjYWNoZS4gKi8KIAogICBkaXJ0eV9jb3VudCA9IHN0cmVhbV9zdHJlYW1fcmVxdWVzdC0+ZGlydHlfY291bnQ7CiAgIGNsZWFuX2NvdW50ID0gc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5jbGVhbl9jb3VudDsKQEAgLTk3NCwyNSArOTczLDI1IEBACiAgICAgfQogI2VuZGlmIC8qIERJUlRZICovCiAgIH0KLSAgCi0gIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gemVybyBieXRlcyByZWNlaXZlZC4gd2Ugd2lsbCBoYXZlICovCi0gIC8qIGNvdW50ZWQgb25lIHRvbyBtYW55IG1lc3NhZ2VzIHJlY2VpdmVkLCBzbyBkZWNyZW1lbnQgdGhlICovCi0gIC8qIHJlY2VpdmVfY2FsbHMgY291bnRlciBieSBvbmUuIHJhaiA3Lzk0ICovCisKKyAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB6ZXJvIGJ5dGVzIHJlY2VpdmVkLiB3ZSB3aWxsIGhhdmUKKyAgICAgY291bnRlZCBvbmUgdG9vIG1hbnkgbWVzc2FnZXMgcmVjZWl2ZWQsIHNvIGRlY3JlbWVudCB0aGUKKyAgICAgcmVjZWl2ZV9jYWxscyBjb3VudGVyIGJ5IG9uZS4gcmFqIDcvOTQgKi8KICAgcmVjZWl2ZV9jYWxscy0tOwotICAKLSAgLyogcGVyZm9ybSBhIHNodXRkb3duIHRvIHNpZ25hbCB0aGUgc2VuZGVyIHRoYXQgKi8KLSAgLyogd2UgaGF2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEgc2VudC4gcmFqIDQvOTMgKi8KKworICAvKiBwZXJmb3JtIGEgc2h1dGRvd24gdG8gc2lnbmFsIHRoZSBzZW5kZXIgdGhhdCB3ZSBoYXZlIHJlY2VpdmVkIGFsbAorICAgICB0aGUgZGF0YSBzZW50LiByYWogNC85MyAqLwogCiAgIGlmIChzaHV0ZG93bihzX2RhdGEsMSkgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gIAorCiAgIGNwdV9zdG9wKHN0cmVhbV9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3N0cmVhbV9zdHJlYW06IGdvdCAlZCBieXRlc1xuIiwKQEAgLTEwMDIsNzIgKzEwMDEsNzIgQEAKIAkgICAgcmVjZWl2ZV9jYWxscyk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBzdHJlYW1fc3RyZWFtX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gYnl0ZXNfcmVjZWl2ZWQ7CiAgIHN0cmVhbV9zdHJlYW1fcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOwogICBzdHJlYW1fc3RyZWFtX3Jlc3VsdHMtPnJlY3ZfY2FsbHMJPSByZWNlaXZlX2NhbGxzOwotICAKKwogICBpZiAoc3RyZWFtX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHN0cmVhbV9zdHJlYW1fcmVzdWx0cy0+Y3B1X3V0aWwJPSBjYWxjX2NwdV91dGlsKDAuMCk7CiAgIH07Ci0gIAorCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9zdHJlYW1fc3RyZWFtOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKICAgdW5saW5rKG15YWRkcl91bi5zdW5fcGF0aCk7CiB9CiAMCiAKLSAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgc2VuZGluZyAobmV0cGVyZikgc2lkZSBvZiB0aGUgU1RSRUFNX1JSICovCi0gLyogdGVzdC4gKi8KKy8qIHRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSBzZW5kaW5nIChuZXRwZXJmKSBzaWRlIG9mIHRoZSBTVFJFQU1fUlIKKyAgIHRlc3QuICovCiAKIHZvaWQKIHNlbmRfc3RyZWFtX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgXG4iOwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICAgICAgJSUgICAgICB1cy9UciAgIHVzL1RyXG5cbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMCA9CiAgICAgIiU2LjNmXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8xID0gIlwKICUtNmQgJS02ZCAlLTZkICAlLTZkICUtNi4yZiAgJS02LjJmICAgJS02LjJmICUtNi4yZiAlLTYuM2YgICUtNi4zZlxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmtzaW5rX2ZtdCA9ICJcCiBBbGlnbm1lbnQgICAgICBPZmZzZXRcblwKIExvY2FsICBSZW1vdGUgIExvY2FsICBSZW1vdGVcblwKIFNlbmQgICBSZWN2ICAgIFNlbmQgICBSZWN2XG5cCiAlNWQgICU1ZCAgICU1ZCAgJTVkXG4iOwotICAKLSAgCisKKwogICBpbnQJCQl0aW1lZF9vdXQgPSAwOwogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKLSAgCisKICAgaW50CWxlbjsKICAgY2hhcgkqdGVtcF9tZXNzYWdlX3B0cjsKICAgaW50CW51bW1lc3NhZ2VzOwpAQCAtMTA3Nyw0MCArMTA3Niw0MCBAQAogCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKLSAgCisKICAgaW50CXJzcF9ieXRlc19sZWZ0OwogICBpbnQJcnNwX2J5dGVzX3JlY3ZkOwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAgIGRvdWJsZQl0aHJ1cHV0OwotICAKKwogICBzdHJ1Y3QJc29ja2FkZHJfdW4Jc2VydmVyOwotICAKKwogICBzdHJ1Y3QJc3RyZWFtX3JyX3JlcXVlc3Rfc3RydWN0CSpzdHJlYW1fcnJfcmVxdWVzdDsKICAgc3RydWN0CXN0cmVhbV9ycl9yZXNwb25zZV9zdHJ1Y3QJKnN0cmVhbV9ycl9yZXNwb25zZTsKICAgc3RydWN0CXN0cmVhbV9ycl9yZXN1bHRzX3N0cnVjdAkqc3RyZWFtX3JyX3Jlc3VsdDsKLSAgCi0gIHN0cmVhbV9ycl9yZXF1ZXN0ID0gCisKKyAgc3RyZWFtX3JyX3JlcXVlc3QgPQogICAgIChzdHJ1Y3Qgc3RyZWFtX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBzdHJlYW1fcnJfcmVzcG9uc2U9CiAgICAgKHN0cnVjdCBzdHJlYW1fcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc3RyZWFtX3JyX3Jlc3VsdAk9CiAgICAgKHN0cnVjdCBzdHJlYW1fcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKLSAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZSAqLwotICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCi0gIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCi0gIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKKyAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZQorICAgICBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50CisgICAgIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kCisgICAgIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KKwogICBiemVybygoY2hhciAqKSZzZXJ2ZXIsCiAJc2l6ZW9mKHNlcnZlcikpOwotICAKKwogICBzZXJ2ZXIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7Ci0gIAotICAKKworCiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICBmcHJpbnRmKHdoZXJlLCJTVFJFQU0gUkVRVUVTVC9SRVNQT05TRSBURVNUXG4iKTsKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpCkBAIC0xMTE4LDIwICsxMTE3LDIwIEBACiAgICAgZWxzZQogICAgICAgZnByaW50Zih3aGVyZSx0cHV0X3RpdGxlLGZvcm1hdF91bml0cygpKTsKICAgfQotICAKKwogICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzICovCi0gIAorCiAgIG51bW1lc3NhZ2VzCT0JMDsKICAgYnl0ZXNfeGZlcmQJPQkwLjA7CiAgIHRpbWVzX3VwIAk9IAkwOwotICAKLSAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlcnMgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0LiAqLwotICAvKiBzaW5jZSB0aGlzIGlzIGEgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LCBkZWZhdWx0IHRoZSBzZW5kX3dpZHRoIGFuZCAqLwotICAvKiByZWN2X3dpZHRoIHRvIDEgYW5kIG5vdCB0d28gcmFqIDcvOTQgKi8KKworICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVycyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQuCisgICAgIHNpbmNlIHRoaXMgaXMgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIGRlZmF1bHQgdGhlIHNlbmRfd2lkdGggYW5kCisgICAgIHJlY3Zfd2lkdGggdG8gMSBhbmQgbm90IHR3byByYWogNy85NCAqLwogCiAgIGlmIChzZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAxOwogICBpZiAocmVjdl93aWR0aCA9PSAwKSByZWN2X3dpZHRoID0gMTsKLSAgCisKICAgc2VuZF9yaW5nID0gYWxsb2NhdGVfYnVmZmVyX3Jpbmcoc2VuZF93aWR0aCwKIAkJCQkgICByZXFfc2l6ZSwKIAkJCQkgICBsb2NhbF9zZW5kX2FsaWduLApAQCAtMTE0MSwzOSArMTE0MCwzOSBAQAogCQkJCSAgIHJzcF9zaXplLAogCQkJCSAgIGxvY2FsX3JlY3ZfYWxpZ24sCiAJCQkJICAgbG9jYWxfcmVjdl9vZmZzZXQpOwotCQkJCSAgIAorCiAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldCAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIHNlbmRfc29ja2V0ID0gY3JlYXRlX3VuaXhfc29ja2V0KEFGX1VOSVgsIAorICBzZW5kX3NvY2tldCA9IGNyZWF0ZV91bml4X3NvY2tldChBRl9VTklYLAogCQkJCSAgIFNPQ0tfU1RSRUFNKTsKLSAgCisKICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfc3RyZWFtX3JyOiBzdHJlYW0gc3RyZWFtIGRhdGEgc29ja2V0Iik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJzZW5kX3N0cmVhbV9ycjogc2VuZF9zb2NrZXQgb2J0YWluZWQuLi5cbiIpOwogICB9Ci0gIAotICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QgKi8KLSAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwotICAvKiB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbiAqLwotICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwotICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwotICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLwotICAKKworICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QKKyAgICAgY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cworICAgICB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbgorICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZQorICAgICBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaAorICAgICBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLworCiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICBsb2NhbF9jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUobG9jYWxfY3B1X3JhdGUpOwogICB9Ci0gIAotICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUgc29ja2V0ICovCi0gIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwotICAvKiBhbGwgdGhlIHZhbHVlcyBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCAqLwotICAvKiBub3Qgc3BlY2lmeSBhbnkgb2YgdGhlIHBhcmFtZXRlcnMsIHRoZXkgd2lsbCBiZSBwYXNzZWQgYXMgMCwgd2hpY2ggKi8KLSAgLyogd2lsbCBpbmRpY2F0ZSB0byB0aGUgcmVtb3RlIHRoYXQgbm8gY2hhbmdlcyBiZXlvbmQgdGhlIHN5c3RlbSdzICovCi0gIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICovCi0gIC8qIGRlZmF1bHQgdG8gOCwgd2hpY2ggd2lsbCBiZSBubyBhbGlnbm1lbnQgYWx0ZXJhdGlvbnMuICovCi0gIAorCisgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZSBzb2NrZXQKKyAgICAgcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZSByZWFzb24gZm9yCisgICAgIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkCisgICAgIG5vdCBzcGVjaWZ5IGFueSBvZiB0aGUgcGFyYW1ldGVycywgdGhleSB3aWxsIGJlIHBhc3NlZCBhcyAwLAorICAgICB3aGljaCB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUKKyAgICAgc3lzdGVtJ3MgZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0CisgICAgIHdpbGwgZGVmYXVsdCB0byA4LCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KKwogICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUJPQlET19TVFJFQU1fUlI7CiAgIHN0cmVhbV9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemU7CiAgIHN0cmVhbV9ycl9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemU7CkBAIC0xMTkxLDI1ICsxMTkwLDI1IEBACiAgIGVsc2UgewogICAgIHN0cmVhbV9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aAk9CXRlc3RfdHJhbnMgKiAtMTsKICAgfQotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF9zdHJlYW1fcnI6IHJlcXVlc3RpbmcgU1RSRUFNIHJyIHRlc3RcbiIpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVxdWVzdCgpOwotICAKLSAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudCAJKi8KLSAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAJKi8KLSAgLyogdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLiAgVGhlCSovCi0gIC8qIHJlbW90ZSB3aWxsIGhhdmUgY2FsaWJyYXRlZCBDUFUgaWYgbmVjZXNzYXJ5LCBhbmQgd2lsbCBoYXZlIGRvbmUJKi8KLSAgLyogYWxsIHRoZSBuZWVkZWQgc2V0LXVwIHdlIHdpbGwgaGF2ZSBjYWxpYnJhdGVkIHRoZSBjcHUgbG9jYWxseQkqLwotICAvKiBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdCwgYW5kIHdpbGwgZ3JhYiB0aGUgY291bnRlciB2YWx1ZSByaWdodAkqLwotICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodAkqLwotICAvKiBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcwkqLwotICAvKiBiZWluZyBzZW50IGZvciB0aGUgU1RSRUFNIHRlc3RzLgkJCQkJKi8KLSAgCisKKyAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudAorICAgICBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjayBpbnRvCisgICAgIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4gIFRoZQorICAgICByZW1vdGUgd2lsbCBoYXZlIGNhbGlicmF0ZWQgQ1BVIGlmIG5lY2Vzc2FyeSwgYW5kIHdpbGwgaGF2ZSBkb25lCisgICAgIGFsbCB0aGUgbmVlZGVkIHNldC11cCB3ZSB3aWxsIGhhdmUgY2FsaWJyYXRlZCB0aGUgY3B1IGxvY2FsbHkKKyAgICAgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QsIGFuZCB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgdmFsdWUgcmlnaHQKKyAgICAgYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQKKyAgICAgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMKKyAgICAgYmVpbmcgc2VudCBmb3IgdGhlIFNUUkVBTSB0ZXN0cy4gICovCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgaWYgKGRlYnVnKQogICAgICAgZnByaW50Zih3aGVyZSwicmVtb3RlIGxpc3RlbiBkb25lLlxuIik7CkBAIC0xMjIzLDI4ICsxMjIyLDI4IEBACiAgIGVsc2UgewogICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLypDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQgICovCi0gIGlmIChjb25uZWN0KHNlbmRfc29ja2V0LCAKKyAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2ZXIsCiAJICAgICAgc2l6ZW9mKHNlcnZlcikpID09IElOVkFMSURfU09DS0VUKXsKICAgICBwZXJyb3IoIm5ldHBlcmY6IGRhdGEgc29ja2V0IGNvbm5lY3QgZmFpbGVkIik7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciB0aGUgKi8KLSAgLyogY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkIGhhdmUgKi8KLSAgLyogaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUgZXh0cmEgKi8KLSAgLyogbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlIGl0ICovCi0gIC8qIGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCi0gIAotICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwotICAvKiBjYW4gYmUgZWl0aGVyIHRpbWUgb3IgdHJhbnNhY3Rpb24gYmFzZWQuICovCi0gIAorCisgIC8qIERhdGEgU29ja2V0IHNldC11cCBpcyBmaW5pc2hlZC4gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcywgZWl0aGVyCisgICAgIHRoZSBjb25uZWN0IHdvdWxkIGhhdmUgZmFpbGVkLCBvciB0aGUgcHJldmlvdXMgcmVzcG9uc2Ugd291bGQKKyAgICAgaGF2ZSBpbmRpY2F0ZWQgYSBwcm9ibGVtLiBJIGZhaWxlZCB0byBzZWUgdGhlIHZhbHVlIG9mIHRoZSBleHRyYQorICAgICBtZXNzYWdlIGFmdGVyIHRoZSBhY2NlcHQgb24gdGhlIHJlbW90ZS4gSWYgaXQgZmFpbGVkLCB3ZSdsbCBzZWUKKyAgICAgaXQgaGVyZS4gSWYgaXQgZGlkbid0LCB3ZSBtaWdodCBhcyB3ZWxsIHN0YXJ0IHB1bXBpbmcgZGF0YS4gKi8KKworICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleQorICAgICBjYW4gYmUgZWl0aGVyIHRpbWUgb3IgdHJhbnNhY3Rpb24gYmFzZWQuICovCisKICAgaWYgKHRlc3RfdGltZSkgewogICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICB0aW1lc191cCA9IDA7CkBAIC0xMjU2LDMyICsxMjU1LDMyIEBACiAgICAgdHJhbnNfcmVtYWluaW5nID0gdGVzdF9ieXRlczsKICAgICB0aW1lc191cCA9IDE7CiAgIH0KLSAgCi0gIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KLSAgLyogdmFsdWUgb2YgdGhlIGlkbGUgY291bnRlciBmb3IgbGF0ZXIgdXNlIGluIG1lYXN1cmluZyBjcHUgKi8KLSAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAKKworICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5CisgICAgIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1CisgICAgIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KKwogICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgCi0gIC8qIFdlIHVzZSBhbiAiT1IiIHRvIGNvbnRyb2wgdGVzdCBleGVjdXRpb24uIFdoZW4gdGhlIHRlc3QgaXMgKi8KLSAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICovCi0gIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KLSAgLyogYWx3YXlzIHJldHVybiBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBmaW5pc2hlZCwgdGhlIHdob2xlICovCi0gIC8qIGV4cHJlc3Npb24gd2lsbCBnbyBmYWxzZSBhbmQgd2Ugd2lsbCBzdG9wIHNlbmRpbmcgZGF0YS4gSSB0aGluayBJICovCi0gIC8qIGp1c3QgYXJiaXRyYXJpbHkgZGVjcmVtZW50IHRyYW5zX3JlbWFpbmluZyBmb3IgdGhlIHRpbWVkIHRlc3QsIGJ1dCAqLwotICAvKiB3aWxsIG5vdCBkbyB0aGF0IGp1c3QgeWV0Li4uIE9uZSBvdGhlciBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCAqLwotICAvKiB0aGUgc2VuZCBidWZmZXIgYW5kIHRoZSByZWNlaXZlIGJ1ZmZlciBzaG91bGQgYmUgdGhlIHNhbWUgYnVmZmVyLiAqLwotICAKKworICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzCisgICAgIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuCisgICAgIGZhbHNlLiAgV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3QKKyAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiBXaGVuIHRoZSB0ZXN0IGlzIGZpbmlzaGVkLCB0aGUgd2hvbGUKKyAgICAgZXhwcmVzc2lvbiB3aWxsIGdvIGZhbHNlIGFuZCB3ZSB3aWxsIHN0b3Agc2VuZGluZyBkYXRhLiBJIHRoaW5rIEkKKyAgICAganVzdCBhcmJpdHJhcmlseSBkZWNyZW1lbnQgdHJhbnNfcmVtYWluaW5nIGZvciB0aGUgdGltZWQgdGVzdCwKKyAgICAgYnV0IHdpbGwgbm90IGRvIHRoYXQganVzdCB5ZXQuLi4gT25lIG90aGVyIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3IKKyAgICAgbm90IHRoZSBzZW5kIGJ1ZmZlciBhbmQgdGhlIHJlY2VpdmUgYnVmZmVyIHNob3VsZCBiZSB0aGUgc2FtZQorICAgICBidWZmZXIuICovCisKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewotICAgIC8qIHNlbmQgdGhlIHJlcXVlc3QuIHdlIGFzc3VtZSB0aGF0IGlmIHdlIHVzZSBhIGJsb2NraW5nIHNvY2tldCwgKi8KLSAgICAvKiB0aGUgcmVxdWVzdCB3aWxsIGJlIHNlbnQgYXQgb25lIHNob3QuICovCisgICAgLyogc2VuZCB0aGUgcmVxdWVzdC4gd2UgYXNzdW1lIHRoYXQgaWYgd2UgdXNlIGEgYmxvY2tpbmcgc29ja2V0LAorICAgICAgIHRoZSByZXF1ZXN0IHdpbGwgYmUgc2VudCBhdCBvbmUgc2hvdC4gKi8KICAgICBpZigobGVuPXNlbmQoc2VuZF9zb2NrZXQsCiAJCSBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCiAJCSByZXFfc2l6ZSwKIAkJIDApKSAhPSByZXFfc2l6ZSkgewogICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0JLyogd2UgaGl0IHRoZSBlbmQgb2YgYSAqLwotCS8qIHRpbWVkIHRlc3QuICovCisJLyogd2UgaGl0IHRoZSBlbmQgb2YgYSB0aW1lZCB0ZXN0LiAqLwogCXRpbWVkX291dCA9IDE7CiAJYnJlYWs7CiAgICAgICB9CkBAIC0xMjg5LDcgKzEyODgsNyBAQAogICAgICAgZXhpdCgxKTsKICAgICB9CiAgICAgc2VuZF9yaW5nID0gc2VuZF9yaW5nLT5uZXh0OwotICAgIAorCiAgICAgLyogcmVjZWl2ZSB0aGUgcmVzcG9uc2UgKi8KICAgICByc3BfYnl0ZXNfbGVmdCA9IHJzcF9zaXplOwogICAgIHRlbXBfbWVzc2FnZV9wdHIgID0gcmVjdl9yaW5nLT5idWZmZXJfcHRyOwpAQCAtMTMwOCwyMCArMTMwNywyMCBAQAogICAgICAgfQogICAgICAgcnNwX2J5dGVzX2xlZnQgLT0gcnNwX2J5dGVzX3JlY3ZkOwogICAgICAgdGVtcF9tZXNzYWdlX3B0ciAgKz0gcnNwX2J5dGVzX3JlY3ZkOwotICAgIH0JCisgICAgfQogICAgIHJlY3ZfcmluZyA9IHJlY3ZfcmluZy0+bmV4dDsKLSAgICAKKwogICAgIGlmICh0aW1lZF9vdXQpIHsKLSAgICAgIC8qIHdlIG1heSBoYXZlIGJlZW4gaW4gYSBuZXN0ZWQgd2hpbGUgbG9vcCAtIHdlIG5lZWQgKi8KLSAgICAgIC8qIGFub3RoZXIgY2FsbCB0byBicmVhay4gKi8KKyAgICAgIC8qIHdlIG1heSBoYXZlIGJlZW4gaW4gYSBuZXN0ZWQgd2hpbGUgbG9vcCAtIHdlIG5lZWQKKyAgICAgICAgIGFub3RoZXIgY2FsbCB0byBicmVhay4gKi8KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKLSAgICBudW1tZXNzYWdlcysrOyAgICAgICAgICAKKworICAgIG51bW1lc3NhZ2VzKys7CiAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogICAgICAgdHJhbnNfcmVtYWluaW5nLS07CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnID4gMykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAiVHJhbnNhY3Rpb24gJWQgY29tcGxldGVkXG4iLApAQCAtMTMyOSwyNCArMTMyOCwyNiBAQAogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9CiAgIH0KLSAgCi0gIC8qIEF0IHRoaXMgcG9pbnQgd2UgdXNlZCB0byBjYWxsIHNodXRkb3duIG9uIHRoZSBkYXRhIHNvY2tldCB0byBiZSAqLwotICAvKiBzdXJlIGFsbCB0aGUgZGF0YSB3YXMgZGVsaXZlcmVkLCBidXQgdGhpcyB3YXMgbm90IGdlcm1hbmUgaW4gYSAqLwotICAvKiByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIGFuZCBpdCB3YXMgY2F1c2luZyB0aGUgdGVzdHMgdG8gImhhbmciIHdoZW4gKi8KLSAgLyogdGhleSB3ZXJlIGJlaW5nIGNvbnRyb2xsZWQgYnkgdGltZS4gU28sIEkgaGF2ZSByZXBsYWNlZCB0aGlzICovCi0gIC8qIHNodXRkb3duIGNhbGwgd2l0aCBhIGNhbGwgdG8gY2xvc2UgdGhhdCBjYW4gYmUgZm91bmQgbGF0ZXIgaW4gdGhlICovCi0gIC8qIHByb2NlZHVyZS4gKi8KLSAgCi0gIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LCBhbmQgKi8KLSAgLyogd2lsbCBhbHNvIHN0b3JlLWF3YXkgdGhlIG5lY2Vzc2FyaWVzIGZvciBjcHUgdXRpbGl6YXRpb24gKi8KLSAgCi0gIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyBtZWFzdXJlZD8gKi8KLSAgLyogaG93IGxvbmcgZGlkIHdlIHJlYWxseSBydW4/ICovCi0gIAotICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KLSAgLyogY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQgKi8KLSAgLyogd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLwotICAKKworICAvKiBBdCB0aGlzIHBvaW50IHdlIHVzZWQgdG8gY2FsbCBzaHV0ZG93biBvbiB0aGUgZGF0YSBzb2NrZXQgdG8gYmUKKyAgICAgc3VyZSBhbGwgdGhlIGRhdGEgd2FzIGRlbGl2ZXJlZCwgYnV0IHRoaXMgd2FzIG5vdCBnZXJtYW5lIGluIGEKKyAgICAgcmVxdWVzdC9yZXNwb25zZSB0ZXN0LCBhbmQgaXQgd2FzIGNhdXNpbmcgdGhlIHRlc3RzIHRvICJoYW5nIgorICAgICB3aGVuIHRoZXkgd2VyZSBiZWluZyBjb250cm9sbGVkIGJ5IHRpbWUuIFNvLCBJIGhhdmUgcmVwbGFjZWQgdGhpcworICAgICBzaHV0ZG93biBjYWxsIHdpdGggYSBjYWxsIHRvIGNsb3NlIHRoYXQgY2FuIGJlIGZvdW5kIGxhdGVyIGluIHRoZQorICAgICBwcm9jZWR1cmUuICovCisKKyAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZAorICAgICB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLworCisgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZworCQkJCQkJICAgbWVhc3VyZWQ/IGhvdyBsb25nCisJCQkJCQkgICBkaWQgd2UgcmVhbGx5CisJCQkJCQkgICBydW4/ICovCisKKyAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlCisgICAgIGNhbGN1bGF0ZWQgc2VydmljZSBkZW1hbmQgYW5kIGFsbCB0aG9zZSBpbnRlcmVzdGluZyB0aGluZ3MuIElmIGl0CisgICAgIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KKwogICByZWN2X3Jlc3BvbnNlKCk7CiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCkBAIC0xMzU1LDMxICsxMzU2LDMxIEBACiAgIGVsc2UgewogICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUgZnV0dXJlLCAqLwotICAvKiB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQgbWVhc3VyZWQgYnkgKi8KLSAgLyogdGhlIHJlbW90ZSwgYnV0IGl0IHNob3VsZCBiZSB0aGUgY2FzZSB0aGF0IGZvciBhIFNUUkVBTSBzdHJlYW0gdGVzdCwgKi8KLSAgLyogdGhhdCB0aGUgdHdvIG51bWJlcnMgc2hvdWxkIGJlICp2ZXJ5KiBjbG9zZS4uLiBXZSBjYWxjdWxhdGUgKi8KLSAgLyogYnl0ZXNfc2VudCByZWdhcmRsZXNzIG9mIHRoZSB3YXkgdGhlIHRlc3QgbGVuZ3RoIHdhcyBjb250cm9sbGVkLiAqLwotICAvKiBJZiBpdCB3YXMgdGltZSwgd2UgbmVlZGVkIHRvLCBhbmQgaWYgaXQgd2FzIGJ5IGJ5dGVzLCB0aGUgdXNlciBtYXkgKi8KLSAgLyogaGF2ZSBzcGVjaWZpZWQgYSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3YXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgKi8KLSAgLyogc2VuZF9zaXplLCBzbyB3ZSByZWFsbHkgZGlkbid0IHNlbmQgd2hhdCBoZSBhc2tlZCBmb3IgOy0pIFdlIHVzZSAqLwotICAvKiBLYnl0ZXMvcyBhcyB0aGUgdW5pdHMgb2YgdGhydXB1dCBmb3IgYSBTVFJFQU0gc3RyZWFtIHRlc3QsIHdoZXJlIEsgPSAqLwotICAvKiAxMDI0LiBBIGZ1dHVyZSBlbmhhbmNlbWVudCAqbWlnaHQqIGJlIHRvIGNob29zZSBmcm9tIGEgY291cGxlIG9mICovCi0gIC8qIHVuaXQgc2VsZWN0aW9ucy4gKi8gCi0gIAorCisgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUKKyAgICAgZnV0dXJlLCB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQKKyAgICAgbWVhc3VyZWQgYnkgdGhlIHJlbW90ZSwgYnV0IGl0IHNob3VsZCBiZSB0aGUgY2FzZSB0aGF0IGZvciBhCisgICAgIFNUUkVBTSBzdHJlYW0gdGVzdCwgdGhhdCB0aGUgdHdvIG51bWJlcnMgc2hvdWxkIGJlICp2ZXJ5KgorICAgICBjbG9zZS4uLiBXZSBjYWxjdWxhdGUgYnl0ZXNfc2VudCByZWdhcmRsZXNzIG9mIHRoZSB3YXkgdGhlIHRlc3QKKyAgICAgbGVuZ3RoIHdhcyBjb250cm9sbGVkLiAgSWYgaXQgd2FzIHRpbWUsIHdlIG5lZWRlZCB0bywgYW5kIGlmIGl0CisgICAgIHdhcyBieSBieXRlcywgdGhlIHVzZXIgbWF5IGhhdmUgc3BlY2lmaWVkIGEgbnVtYmVyIG9mIGJ5dGVzIHRoYXQKKyAgICAgd2Fzbid0IGEgbXVsdGlwbGUgb2YgdGhlIHNlbmRfc2l6ZSwgc28gd2UgcmVhbGx5IGRpZG4ndCBzZW5kIHdoYXQKKyAgICAgaGUgYXNrZWQgZm9yIDstKSBXZSB1c2UgS2J5dGVzL3MgYXMgdGhlIHVuaXRzIG9mIHRocnVwdXQgZm9yIGEKKyAgICAgU1RSRUFNIHN0cmVhbSB0ZXN0LCB3aGVyZSBLID0gMTAyNC4gQSBmdXR1cmUgZW5oYW5jZW1lbnQgKm1pZ2h0KgorICAgICBiZSB0byBjaG9vc2UgZnJvbSBhIGNvdXBsZSBvZiB1bml0IHNlbGVjdGlvbnMuICovCisKICAgYnl0ZXNfeGZlcmQJPSAocmVxX3NpemUgKiBudW1tZXNzYWdlcykgKyAocnNwX3NpemUgKiBudW1tZXNzYWdlcyk7CiAgIHRocnVwdXQJPSBjYWxjX3RocnVwdXQoYnl0ZXNfeGZlcmQpOwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKLSAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCi0gICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgKi8KLSAgICAvKiBPZiBjb3Vyc2UsIHNvbWUgb2YgdGhlIGluZm9ybWF0aW9uIG1pZ2h0IGJlIGJvZ3VzIGJlY2F1c2UgKi8KLSAgICAvKiB0aGVyZSB3YXMgbm8gaWRsZSBjb3VudGVyIGluIHRoZSBrZXJuZWwocykuIFdlIG5lZWQgdG8gbWFrZSAqLwotICAgIC8qIGEgbm90ZSBvZiB0aGlzIGZvciB0aGUgdXNlcidzIGJlbmVmaXQuLi4qLworICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUKKyAgICAgICB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSBPZiBjb3Vyc2UsIHNvbWUgb2YgdGhlCisgICAgICAgaW5mb3JtYXRpb24gbWlnaHQgYmUgYm9ndXMgYmVjYXVzZSB0aGVyZSB3YXMgbm8gaWRsZSBjb3VudGVyIGluCisgICAgICAgdGhlIGtlcm5lbChzKS4gV2UgbmVlZCB0byBtYWtlIGEgbm90ZSBvZiB0aGlzIGZvciB0aGUgdXNlcidzCisgICAgICAgYmVuZWZpdC4uLiovCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgaWYgKGxvY2FsX2NwdV9yYXRlID09IDAuMCkgewogCWZwcmludGYod2hlcmUsIldBUk5JTkcgV0FSTklORyBXQVJOSU5HICBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAgV0FSTklORyFcbiIpOwpAQCAtMTM4Nyw5ICsxMzg4LDggQEAKIAlmZmx1c2god2hlcmUpOwogICAgICAgfQogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uID0gY2FsY19jcHVfdXRpbCgwLjApOwotICAgICAgLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsICovCi0gICAgICAvKiBtdWx0aXBseSB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICovCi0gICAgICAvKiAiZ29vZCIgbnVtYmVycyAqLworICAgICAgLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsIG11bHRpcGx5CisgICAgICAgICB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICJnb29kIiBudW1iZXJzICovCiAgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCAgPSBjYWxjX3NlcnZpY2VfZGVtYW5kKChkb3VibGUpIG51bW1lc3NhZ2VzKjEwMjQsCiAJCQkJCQkgIDAuMCwKIAkJCQkJCSAgMC4wLApAQCAtMTM5OSw3ICsxMzk5LDcgQEAKICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbgk9IC0xLjA7CiAgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZAk9IC0xLjA7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlbW90ZV9jcHVfdXNhZ2UpIHsKICAgICAgIGlmIChyZW1vdGVfY3B1X3JhdGUgPT0gMC4wKSB7CiAJZnByaW50Zih3aGVyZSwiREFOR0VSICBEQU5HRVIgIERBTkdFUiAgICBEQU5HRVIgIERBTkdFUiAgREFOR0VSICAgIERBTkdFUiFcbiIpOwpAQCAtMTQwNyw5ICsxNDA3LDggQEAKIAlmZmx1c2god2hlcmUpOwogICAgICAgfQogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IHN0cmVhbV9ycl9yZXN1bHQtPmNwdV91dGlsOwotICAgICAgLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsICovCi0gICAgICAvKiBtdWx0aXBseSB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICovCi0gICAgICAvKiAiZ29vZCIgbnVtYmVycyAqLworICAgICAgLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsIG11bHRpcGx5CisgICAgICAgICB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICJnb29kIiBudW1iZXJzICovCiAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgPSBjYWxjX3NlcnZpY2VfZGVtYW5kKChkb3VibGUpIG51bW1lc3NhZ2VzKjEwMjQsCiAJCQkJCQkgIDAuMCwKIAkJCQkJCSAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKQEAgLTE0MTksMTYgKzE0MTgsMTYgQEAKICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSAtMS4wOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IC0xLjA7CiAgICAgfQotICAgIAotICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHVzZXIgKi8KLSAgICAvKiBoYXMgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlICovCi0gICAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLwotICAgIC8qIHVzZXIgaGFzIHJlcXVlc3RlZCB2ZXJib3NpdHkgbGV2ZWwgMSwgaGUgd2lsbCBnZXQgdGhlIGJhc2ljICovCi0gICAgLyogInN0cmVhbXBlcmYiIG51bWJlcnMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSB2ZXJib3NpdHkgKi8KLSAgICAvKiBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mICovCi0gICAgLyogYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBmcm9tIG91dHNpZGUgb2YgdGhpcyBibG9jayBhcyBpdCBpdCAqLwotICAgIC8qIG5vdCBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCi0gICAgCisKKyAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyIGhhcworICAgICAgIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSBsb2NhbAorICAgICAgIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgICByZXF1ZXN0ZWQgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAic3RyZWFtcGVyZiIKKyAgICAgICBudW1iZXJzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgdmVyYm9zaXR5IG9mIGdyZWF0ZXIgdGhhbgorICAgICAgIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiBiYWNrZ3JvdW5kCisgICAgICAgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgbm90CisgICAgICAgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLworCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC0xNDgzLDg2ICsxNDgyLDg3IEBACiAJICAgICAgdHB1dF9mbXRfMV9saW5lXzIsCiAJICAgICAgcnNzX3NpemUsIAkJLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLwogCSAgICAgIHJzcl9zaXplKTsKLSAgICAgIAorCiAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCi0gIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCi0gIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCi0gIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwotICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwotICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKKyAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUKKyAgICAgb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUKKyAgICAgbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSBmb3JtYXR0aW5nLCBzbyBJIHdpbGwKKyAgICAganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcKKyAgICAgdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCisKICAgaWYgKHZlcmJvc2l0eSA+IDEpIHsKLSAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8ga25vdyBpdCBhbGwsIHNvIHdlIHdpbGwgZ2l2ZSBpdCB0byBoaW0uICovCi0gICAgLyogVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluY2x1ZGUgYXMgbXVjaCBhcyB3ZSBjYW4gZmluZCBhYm91dCAqLwotICAgIC8qIFNUUkVBTSBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCi0gICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLgorICAgICAgIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQKKyAgICAgICBTVFJFQU0gc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyBhbmQKKyAgICAgICBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLworCiAgICAgZnByaW50Zih3aGVyZSwKKyAgICAJICAgICIlcyIsCiAJICAgIGtzaW5rX2ZtdCk7CiAgIH0KICAgLyogVGhlIHRlc3QgaXMgb3Zlci4gS2lsbCB0aGUgZGF0YSBzb2NrZXQgKi8KLSAgCisKICAgaWYgKGNsb3NlKHNlbmRfc29ja2V0KSA9PSAtMSkgewogICAgIHBlcnJvcigic2VuZF9zdHJlYW1fcnI6IGNhbm5vdCBzaHV0ZG93biBzdHJlYW0gc3RyZWFtIHNvY2tldCIpOwogICB9Ci0gIAorCiB9CiAMCiB2b2lkCiBzZW5kX2RnX3N0cmVhbShjaGFyIHJlbW90ZV9ob3N0W10pCiB7Ci0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gIC8qCQkJCQkJCQkJKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoJCQkJCQkJCSAgICAgICAqLwogICAvKiAgICAgICAgICAgICAgIAlERyBVbmlkaXJlY3Rpb25hbCBTZW5kIFRlc3QgICAgICAgICAgICAgICAgICAgICovCi0gIC8qCQkJCQkJCQkJKi8KLSAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoJCQkJCQkJCSAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICBjaGFyICp0cHV0X3RpdGxlID0KICAgICAiU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgTWVzc2FnZXMgICAgICAgICAgICAgICAgXG5cCiBTaXplICAgIFNpemUgICAgIFRpbWUgICAgICAgICBPa2F5IEVycm9ycyAgIFRocm91Z2hwdXRcblwKIGJ5dGVzICAgYnl0ZXMgICAgc2VjcyAgICAgICAgICAgICMgICAgICAjICAgJXMvc2VjXG5cbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzAgPQogICAgICIlNy4yZlxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMSA9CiAgICAgIiU1ZCAgICU1ZCAgICAlLTcuMmYgICAlN2QgJTZkICAgICU3LjJmXG5cCiAlNWQgICAgICAgICAgICAlLTcuMmYgICAlN2QgICAgICAgICAgICU3LjJmXG5cbiI7Ci0gIAotICAKKworCiAgIGNoYXIgKmNwdV90aXRsZSA9CiAgICAgIlNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgIE1lc3NhZ2VzICAgICAgICAgICAgICAgICAgIENQVSAgICAgU2VydmljZVxuXAogU2l6ZSAgICBTaXplICAgICBUaW1lICAgICAgICAgT2theSBFcnJvcnMgICBUaHJvdWdocHV0ICAgVXRpbCAgICBEZW1hbmRcblwKIGJ5dGVzICAgYnl0ZXMgICAgc2VjcyAgICAgICAgICAgICMgICAgICAjICAgJXMvc2VjICAgJSUgICAgICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMSA9CiAgICAgIiU1ZCAgICU1ZCAgICAlLTcuMmYgICAlN2QgJTZkICAgICU3LjFmICAgICAgJS02LjJmICAlLTYuM2ZcblwKICU1ZCAgICAgICAgICAgICUtNy4yZiAgICU3ZCAgICAgICAgICAgJTcuMWYgICAgICAlLTYuMmYgICUtNi4zZlxuXG4iOwotICAKKwogICBpbnQJbWVzc2FnZXNfcmVjdmQ7Ci0gIGZsb2F0CWVsYXBzZWRfdGltZSwgCi0gIGxvY2FsX2NwdV91dGlsaXphdGlvbiwgCisgIGZsb2F0CWVsYXBzZWRfdGltZSwKKyAgbG9jYWxfY3B1X3V0aWxpemF0aW9uLAogICByZW1vdGVfY3B1X3V0aWxpemF0aW9uOwotICAKKwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZCwgcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUJbG9jYWxfdGhydXB1dCwgcmVtb3RlX3RocnVwdXQ7CiAgIGRvdWJsZQlieXRlc19zZW50OwogICBkb3VibGUJYnl0ZXNfcmVjdmQ7Ci0gIAotICAKKworCiAgIGludAlsZW47CiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBpbnQJZmFpbGVkX3NlbmRzOwogICBpbnQJZmFpbGVkX2Nvd3M7CiAgIGludCAJbWVzc2FnZXNfc2VudDsKICAgU09DS0VUIGRhdGFfc29ja2V0OwotICAKLSAgCisKKwogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgIGludAlpbnRlcnZhbF9jb3VudDsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwpAQCAtMTU3MCw0OSArMTU3MCw0OSBAQAogICBpbnQJKm1lc3NhZ2VfaW50X3B0cjsKICAgaW50CWk7CiAjZW5kaWYgLyogRElSVFkgKi8KLSAgCisKICAgc3RydWN0CXNvY2thZGRyX3VuCXNlcnZlcjsKLSAgCisKICAgc3RydWN0CWRnX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdAkqZGdfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlkZ19zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSpkZ19zdHJlYW1fcmVzcG9uc2U7CiAgIHN0cnVjdAlkZ19zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKmRnX3N0cmVhbV9yZXN1bHRzOwotICAKKwogICBkZ19zdHJlYW1fcmVxdWVzdAk9IChzdHJ1Y3QgZGdfc3RyZWFtX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBkZ19zdHJlYW1fcmVzcG9uc2UJPSAoc3RydWN0IGRnX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBkZ19zdHJlYW1fcmVzdWx0cwk9IChzdHJ1Y3QgZGdfc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCi0gIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUgKi8KLSAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwotICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwotICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCisgIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUKKyAgICAgY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudAorICAgICBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZAorICAgICBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCisKICAgYnplcm8oKGNoYXIgKikmc2VydmVyLAogCXNpemVvZihzZXJ2ZXIpKTsKLSAgCisKICAgc2VydmVyLnN1bl9mYW1pbHkgPSBBRl9VTklYOwotICAKKwogICBpZiAoIHByaW50X2hlYWRlcnMgKSB7CiAgICAgcHJpbnRmKCJERyBVTklESVJFQ1RJT05BTCBTRU5EIFRFU1RcbiIpOwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkKICAgICAgIHByaW50ZihjcHVfdGl0bGUsZm9ybWF0X3VuaXRzKCkpOwogICAgIGVsc2UKICAgICAgIHByaW50Zih0cHV0X3RpdGxlLGZvcm1hdF91bml0cygpKTsKLSAgfQkKLSAgCisgIH0KKwogICBmYWlsZWRfc2VuZHMJPSAwOwogICBmYWlsZWRfY293cwk9IDA7CiAgIG1lc3NhZ2VzX3NlbnQJPSAwOwogICB0aW1lc191cAk9IDA7Ci0gIAorCiAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldAkJCSovCiAgIGRhdGFfc29ja2V0ID0gY3JlYXRlX3VuaXhfc29ja2V0KEFGX1VOSVgsCiAJCQkJICAgU09DS19ER1JBTSk7Ci0gIAorCiAgIGlmIChkYXRhX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgcGVycm9yKCJkZ19zZW5kOiBkYXRhIHNvY2tldCIpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogbm93LCB3ZSB3YW50IHRvIHNlZSBpZiB3ZSBuZWVkIHRvIHNldCB0aGUgc2VuZF9zaXplICovCiAgIGlmIChzZW5kX3NpemUgPT0gMCkgewogICAgIGlmIChsc3Nfc2l6ZSA+IDApIHsKQEAgLTE2MjIsMTMgKzE2MjIsMTMgQEAKICAgICAgIHNlbmRfc2l6ZSA9IDQwOTY7CiAgICAgfQogICB9Ci0gIAotICAKLSAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlciB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQsICovCi0gIC8qIG1vc3Qgb2YgdGhlIG51bWJlcnMgaGVyZSBhcmUganVzdCBhIGhhY2sgdG8gcGljayBzb21ldGhpbmcgbmljZSAqLwotICAvKiBhbmQgYmlnIGluIGFuIGF0dGVtcHQgdG8gbmV2ZXIgdHJ5IHRvIHNlbmQgYSBidWZmZXIgYSBzZWNvbmQgdGltZSAqLwotICAvKiBiZWZvcmUgaXQgbGVhdmVzIHRoZSBub2RlLi4udW5sZXNzIHRoZSB1c2VyIHNldCB0aGUgd2lkdGggKi8KLSAgLyogZXhwbGljaXRseS4gKi8KKworCisgIC8qIHNldC11cCB0aGUgZGF0YSBidWZmZXIgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0LAorICAgICBtb3N0IG9mIHRoZSBudW1iZXJzIGhlcmUgYXJlIGp1c3QgYSBoYWNrIHRvIHBpY2sgc29tZXRoaW5nIG5pY2UKKyAgICAgYW5kIGJpZyBpbiBhbiBhdHRlbXB0IHRvIG5ldmVyIHRyeSB0byBzZW5kIGEgYnVmZmVyIGEgc2Vjb25kIHRpbWUKKyAgICAgYmVmb3JlIGl0IGxlYXZlcyB0aGUgbm9kZS4uLnVubGVzcyB0aGUgdXNlciBzZXQgdGhlIHdpZHRoCisgICAgIGV4cGxpY2l0bHkuICovCiAgIGlmIChzZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAzMjsKIAogICBzZW5kX3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhzZW5kX3dpZHRoLApAQCAtMTYzNiwyNCArMTYzNiwyNSBAQAogCQkJCSAgIGxvY2FsX3NlbmRfYWxpZ24sCiAJCQkJICAgbG9jYWxfc2VuZF9vZmZzZXQpOwogCi0gIC8qIEF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdG8gZG8gdGhpbmdzIGxpa2UgZGlzYWJsZSBERyBjaGVja3N1bW1pbmcgKi8KLSAgLyogYW5kIG1lYXN1cmUgdGhlIGNwdSByYXRlIGFuZCBhbGwgdGhhdCBzbyB3ZSBhcmUgcmVhZHkgdG8gZ28gKi8KLSAgLyogaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHRlc3QgcmVzcG9uc2UgbWVzc2FnZSBpcyBkZWxpdmVyZWQuICovCi0gIAotICAvKiBpZiB0aGUgdXNlciBzdXBwbGllZCBhIGNwdSByYXRlLCB0aGlzIGNhbGwgd2lsbCBjb21wbGV0ZSByYXRoZXIgKi8KLSAgLyogcXVpY2tseSwgb3RoZXJ3aXNlLCB0aGUgY3B1IHJhdGUgd2lsbCBiZSByZXR1cmVkIHRvIHVzIGZvciAqLwotICAvKiBwb3NzaWJsZSBkaXNwbGF5LiBUaGUgTGlicmFyeSB3aWxsIGtlZXAgaXQncyBvd24gY29weSBvZiB0aGlzIGRhdGEgKi8KLSAgLyogZm9yIHVzZSBlbHNld2hlcmUuIFdlIHdpbGwgb25seSBkaXNwbGF5IGl0LiAoRG9lcyB0aGF0IG1ha2UgaXQgKi8KLSAgLyogIm9wYXF1ZSIgdG8gdXM/KSAqLwotICAKKyAgLyogQXQgdGhpcyBwb2ludCwgd2Ugd2FudCB0byBkbyB0aGluZ3MgbGlrZSBkaXNhYmxlIERHIGNoZWNrc3VtbWluZworICAgICBhbmQgbWVhc3VyZSB0aGUgY3B1IHJhdGUgYW5kIGFsbCB0aGF0IHNvIHdlIGFyZSByZWFkeSB0byBnbworICAgICBpbW1lZGlhdGVseSBhZnRlciB0aGUgdGVzdCByZXNwb25zZSBtZXNzYWdlIGlzIGRlbGl2ZXJlZC4gKi8KKworICAvKiBpZiB0aGUgdXNlciBzdXBwbGllZCBhIGNwdSByYXRlLCB0aGlzIGNhbGwgd2lsbCBjb21wbGV0ZSByYXRoZXIKKyAgICAgcXVpY2tseSwgb3RoZXJ3aXNlLCB0aGUgY3B1IHJhdGUgd2lsbCBiZSByZXR1cmVkIHRvIHVzIGZvcgorICAgICBwb3NzaWJsZSBkaXNwbGF5LiBUaGUgTGlicmFyeSB3aWxsIGtlZXAgaXQncyBvd24gY29weSBvZiB0aGlzCisgICAgIGRhdGEgZm9yIHVzZSBlbHNld2hlcmUuIFdlIHdpbGwgb25seSBkaXNwbGF5IGl0LiAoRG9lcyB0aGF0IG1ha2UKKyAgICAgaXQgIm9wYXF1ZSIgdG8gdXM/KSAqLworCiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpCiAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKLSAgCi0gIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gc2V0IHVwIHRoZSBkYXRhIGNvbm5lY3Rpb24uIFRoZSBzZXJ2ZXIgKi8KLSAgLyogc2VuZHMgYmFjayB0aGUgcG9ydCBudW1iZXIgYW5kIGFsdGVycyB0aGUgc29ja2V0IHBhcmFtZXRlcnMgdGhlcmUuICovCi0gIC8qIE9mIGNvdXJzZSB0aGlzIGlzIGEgZGF0YWdyYW0gc2VydmljZSBzbyBubyBjb25uZWN0aW9uIGlzIGFjdHVhbGx5ICovCi0gIC8qIHNldCB1cCwgdGhlIHNlcnZlciBqdXN0IHNldHMgdXAgdGhlIHNvY2tldCBhbmQgYmluZHMgaXQuICovCi0gIAorCisgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gc2V0IHVwIHRoZSBkYXRhIGNvbm5lY3Rpb24uIFRoZSBzZXJ2ZXIKKyAgICAgc2VuZHMgYmFjayB0aGUgcG9ydCBudW1iZXIgYW5kIGFsdGVycyB0aGUgc29ja2V0IHBhcmFtZXRlcnMKKyAgICAgdGhlcmUuICBPZiBjb3Vyc2UgdGhpcyBpcyBhIGRhdGFncmFtIHNlcnZpY2Ugc28gbm8gY29ubmVjdGlvbiBpcworICAgICBhY3R1YWxseSBzZXQgdXAsIHRoZSBzZXJ2ZXIganVzdCBzZXRzIHVwIHRoZSBzb2NrZXQgYW5kIGJpbmRzCisgICAgIGl0LiAqLworCiAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZSA9IERPX0RHX1NUUkVBTTsKICAgZGdfc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYnVmX3NpemUJPSByc3Jfc2l6ZTsKICAgZGdfc3RyZWFtX3JlcXVlc3QtPm1lc3NhZ2Vfc2l6ZQk9IHNlbmRfc2l6ZTsKQEAgLTE2NjIsMTEgKzE2NjMsMTEgQEAKICAgZGdfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1CT0gcmVtb3RlX2NwdV91c2FnZTsKICAgZGdfc3RyZWFtX3JlcXVlc3QtPmNwdV9yYXRlCQk9IHJlbW90ZV9jcHVfcmF0ZTsKICAgZGdfc3RyZWFtX3JlcXVlc3QtPnRlc3RfbGVuZ3RoCT0gdGVzdF90aW1lOwotICAKKwogICBzZW5kX3JlcXVlc3QoKTsKLSAgCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgaWYgKGRlYnVnKQogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF9kZ19zdHJlYW06IHJlbW90ZSBkYXRhIGNvbm5lY3Rpb24gZG9uZS5cbiIpOwpAQCAtMTY3Niw1NCArMTY3Nyw1NiBAQAogICAgIHBlcnJvcigic2VuZF9kZ19zdHJlYW06IGVycm9yIG9uIHJlbW90ZSIpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIFBsYWNlIHRoZSBwb3J0IG51bWJlciByZXR1cm5lZCBieSB0aGUgcmVtb3RlIGludG8gdGhlIHNvY2thZGRyICovCi0gIC8qIHN0cnVjdHVyZSBzbyBvdXIgc2VuZHMgY2FuIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UuIEFsc28gZ2V0ICovCi0gIC8qIHNvbWUgb2YgdGhlIHJldHVybmVkIHNvY2tldCBidWZmZXIgaW5mb3JtYXRpb24gZm9yIHVzZXIgZGlzcGxheS4gKi8KLSAgCisKKyAgLyogUGxhY2UgdGhlIHBvcnQgbnVtYmVyIHJldHVybmVkIGJ5IHRoZSByZW1vdGUgaW50byB0aGUgc29ja2FkZHIKKyAgICAgc3RydWN0dXJlIHNvIG91ciBzZW5kcyBjYW4gYmUgc2VudCB0byB0aGUgY29ycmVjdCBwbGFjZS4gQWxzbyBnZXQKKyAgICAgc29tZSBvZiB0aGUgcmV0dXJuZWQgc29ja2V0IGJ1ZmZlciBpbmZvcm1hdGlvbiBmb3IgdXNlcgorICAgICBkaXNwbGF5LiAqLworCiAgIC8qIG1ha2Ugc3VyZSB0aGF0IHBvcnQgbnVtYmVycyBhcmUgaW4gdGhlIHByb3BlciBvcmRlciAqLwogICBzdHJjcHkoc2VydmVyLnN1bl9wYXRoLGRnX3N0cmVhbV9yZXNwb25zZS0+dW5peF9wYXRoKTsKICAgcnNyX3NpemUJPSBkZ19zdHJlYW1fcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemU7CiAgIHJzc19zaXplCT0gZGdfc3RyZWFtX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplOwogICByZW1vdGVfY3B1X3JhdGUJPSBkZ19zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlOwotICAKLSAgLyogV2UgImNvbm5lY3QiIHVwIHRvIHRoZSByZW1vdGUgcG9zdCB0byBhbGxvdyBpcyB0byB1c2UgdGhlIHNlbmQgKi8KLSAgLyogY2FsbCBpbnN0ZWFkIG9mIHRoZSBzZW5kdG8gY2FsbC4gUHJlc3VtZWFibHksIHRoaXMgaXMgYSBsaXR0bGUgKi8KLSAgLyogc2ltcGxlciwgYW5kIGEgbGl0dGxlIG1vcmUgZWZmaWNpZW50LiBJIHRoaW5rIHRoYXQgaXQgYWxzbyBtZWFucyAqLwotICAvKiB0aGF0IHdlIGNhbiBiZSBpbmZvcm1lZCBvZiBjZXJ0YWluIHRoaW5ncywgYnV0IGFtIG5vdCBzdXJlIHlldC4uLiAqLwotICAKKworICAvKiBXZSAiY29ubmVjdCIgdXAgdG8gdGhlIHJlbW90ZSBwb3N0IHRvIGFsbG93IGlzIHRvIHVzZSB0aGUgc2VuZAorICAgICBjYWxsIGluc3RlYWQgb2YgdGhlIHNlbmR0byBjYWxsLiBQcmVzdW1lYWJseSwgdGhpcyBpcyBhIGxpdHRsZQorICAgICBzaW1wbGVyLCBhbmQgYSBsaXR0bGUgbW9yZSBlZmZpY2llbnQuIEkgdGhpbmsgdGhhdCBpdCBhbHNvIG1lYW5zCisgICAgIHRoYXQgd2UgY2FuIGJlIGluZm9ybWVkIG9mIGNlcnRhaW4gdGhpbmdzLCBidXQgYW0gbm90IHN1cmUKKyAgICAgeWV0Li4uICovCisKICAgaWYgKGNvbm5lY3QoZGF0YV9zb2NrZXQsCiAJICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2ZXIsCiAJICAgICAgc2l6ZW9mKHNlcnZlcikpID09IElOVkFMSURfU09DS0VUKXsKICAgICBwZXJyb3IoInNlbmRfZGdfc3RyZWFtOiBkYXRhIHNvY2tldCBjb25uZWN0IGZhaWxlZCIpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIHNldCB1cCB0aGUgdGltZXIgdG8gY2FsbCB1cyBhZnRlciB0ZXN0X3RpbWUJKi8KKworICAvKiBzZXQgdXAgdGhlIHRpbWVyIHRvIGNhbGwgdXMgYWZ0ZXIgdGVzdF90aW1lICAqLwogICBzdGFydF90aW1lcih0ZXN0X3RpbWUpOwotICAKKwogICAvKiBHZXQgdGhlIHN0YXJ0IGNvdW50IGZvciB0aGUgaWRsZSBjb3VudGVyIGFuZCB0aGUgc3RhcnQgdGltZSAqLwotICAKKwogICBjcHVfc3RhcnQobG9jYWxfY3B1X3VzYWdlKTsKLSAgCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICBpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OwogI2VuZGlmCi0gIAotICAvKiBTZW5kIGRhdGFncmFtcyBsaWtlIHRoZXJlIHdhcyBubyB0b21vcnJvdy4gYXQgc29tZXBvaW50IGl0IG1pZ2h0ICovCi0gIC8qIGJlIG5pY2UgdG8gc2V0IHRoaXMgdXAgc28gdGhhdCBhIHF1YW50aXR5IG9mIGJ5dGVzIGNvdWxkIGJlIHNlbnQsICovCi0gIC8qIGJ1dCB3ZSBzdGlsbCBuZWVkIHNvbWUgc29ydCBvZiBlbmQgb2YgdGVzdCB0cmlnZ2VyIG9uIHRoZSByZWNlaXZlICovCi0gIC8qIHNpZGUuIHRoYXQgY291bGQgYmUgYSBzZWxlY3Qgd2l0aCBhIG9uZSBzZWNvbmQgdGltZW91dCwgYnV0IHRoZW4gKi8KLSAgLyogaWYgdGhlcmUgaXMgYSB0ZXN0IHdoZXJlIG5vbmUgb2YgdGhlIGRhdGEgYXJyaXZlcyBmb3IgYXdpbGUgYW5kICovCi0gIC8qIHRoZW4gc3RhcnRzIGFnYWluLCB3ZSB3b3VsZCBlbmQgdGhlIHRlc3QgdG9vIHNvb24uIHNvbWV0aGluZyB0byAqLwotICAvKiB0aGluayBhYm91dC4uLiAqLworCisgIC8qIFNlbmQgZGF0YWdyYW1zIGxpa2UgdGhlcmUgd2FzIG5vIHRvbW9ycm93LiBhdCBzb21lcG9pbnQgaXQgbWlnaHQKKyAgICAgYmUgbmljZSB0byBzZXQgdGhpcyB1cCBzbyB0aGF0IGEgcXVhbnRpdHkgb2YgYnl0ZXMgY291bGQgYmUgc2VudCwKKyAgICAgYnV0IHdlIHN0aWxsIG5lZWQgc29tZSBzb3J0IG9mIGVuZCBvZiB0ZXN0IHRyaWdnZXIgb24gdGhlIHJlY2VpdmUKKyAgICAgc2lkZS4gdGhhdCBjb3VsZCBiZSBhIHNlbGVjdCB3aXRoIGEgb25lIHNlY29uZCB0aW1lb3V0LCBidXQgdGhlbgorICAgICBpZiB0aGVyZSBpcyBhIHRlc3Qgd2hlcmUgbm9uZSBvZiB0aGUgZGF0YSBhcnJpdmVzIGZvciBhd2lsZSBhbmQKKyAgICAgdGhlbiBzdGFydHMgYWdhaW4sIHdlIHdvdWxkIGVuZCB0aGUgdGVzdCB0b28gc29vbi4gc29tZXRoaW5nIHRvCisgICAgIHRoaW5rIGFib3V0Li4uICovCiAgIHdoaWxlICghdGltZXNfdXApIHsKIAogI2lmZGVmIERJUlRZCi0gICAgLyogd2Ugd2FudCB0byBkaXJ0eSBzb21lIG51bWJlciBvZiBjb25zZWN1dGl2ZSBpbnRlZ2VycyBpbiB0aGUgYnVmZmVyICovCi0gICAgLyogd2UgYXJlIGFib3V0IHRvIHNlbmQuIHdlIG1heSBhbHNvIHdhbnQgdG8gYnJpbmcgc29tZSBudW1iZXIgb2YgKi8KLSAgICAvKiB0aGVtIGNsZWFubHkgaW50byB0aGUgY2FjaGUuIFRoZSBjbGVhbiBvbmVzIHdpbGwgZm9sbG93IGFueSBkaXJ0eSAqLwotICAgIC8qIG9uZXMgaW50byB0aGUgY2FjaGUuICovCisgICAgLyogd2Ugd2FudCB0byBkaXJ0eSBzb21lIG51bWJlciBvZiBjb25zZWN1dGl2ZSBpbnRlZ2VycyBpbiB0aGUKKyAgICAgICBidWZmZXIgd2UgYXJlIGFib3V0IHRvIHNlbmQuIHdlIG1heSBhbHNvIHdhbnQgdG8gYnJpbmcgc29tZQorICAgICAgIG51bWJlciBvZiB0aGVtIGNsZWFubHkgaW50byB0aGUgY2FjaGUuIFRoZSBjbGVhbiBvbmVzIHdpbGwKKyAgICAgICBmb2xsb3cgYW55IGRpcnR5IG9uZXMgaW50byB0aGUgY2FjaGUuICovCiAgICAgbWVzc2FnZV9pbnRfcHRyID0gKGludCAqKShzZW5kX3JpbmctPmJ1ZmZlcl9wdHIpOwogICAgIGZvciAoaSA9IDA7IGkgPCBsb2NfZGlydHlfY291bnQ7IGkrKykgewogICAgICAgKm1lc3NhZ2VfaW50X3B0ciA9IDQ7CkBAIC0xNzQ4LDQxICsxNzUxLDQxIEBACiAgICAgICBwZXJyb3IoImRnX3NlbmQ6IGRhdGEgc2VuZCBlcnJvciIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgbWVzc2FnZXNfc2VudCsrOyAgICAgICAgICAKLSAgICAKLSAgICAvKiBub3cgd2Ugd2FudCB0byBtb3ZlIG91ciBwb2ludGVyIHRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSAqLwotICAgIC8qIGRhdGEgYnVmZmVyLi4uICovCisgICAgbWVzc2FnZXNfc2VudCsrOworCisgICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUKKyAgICAgICBkYXRhIGJ1ZmZlci4uLiAqLwogCiAgICAgc2VuZF9yaW5nID0gc2VuZF9yaW5nLT5uZXh0OwotICAgIAotICAgIAorCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwotICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGludGVydmFsIGNvdW50IGlzIHRoZSBjb3VudC1kb3duIGNvdXRlciAqLwotICAgIC8qIHRvIGRlY2lkZSB0byBzbGVlcCBmb3IgYSBsaXR0bGUgYml0ICovCisgICAgLyogaW4gdGhpcyBjYXNlLCB0aGUgaW50ZXJ2YWwgY291bnQgaXMgdGhlIGNvdW50LWRvd24gY291dGVyIHRvCisgICAgICAgZGVjaWRlIHRvIHNsZWVwIGZvciBhIGxpdHRsZSBiaXQgKi8KICAgICBpZiAoKGludGVydmFsX2J1cnN0KSAmJiAoLS1pbnRlcnZhbF9jb3VudCA9PSAwKSkgewotICAgICAgLyogY2FsbCB0aGUgc2xlZXAgcm91dGluZSBmb3Igc29tZSBtaWxsaXNlY29uZHMsIGlmIG91ciAqLwotICAgICAgLyogdGltZXIgcG9wcGVkIHdoaWxlIHdlIHdlcmUgaW4gdGhlcmUsIHdlIHdhbnQgdG8gKi8KLSAgICAgIC8qIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4gKi8KKyAgICAgIC8qIGNhbGwgdGhlIHNsZWVwIHJvdXRpbmUgZm9yIHNvbWUgbWlsbGlzZWNvbmRzLCBpZiBvdXIgdGltZXIKKyAgICAgICAgIHBvcHBlZCB3aGlsZSB3ZSB3ZXJlIGluIHRoZXJlLCB3ZSB3YW50IHRvIGJyZWFrIG91dCBvZiB0aGUKKyAgICAgICAgIGxvb3AuICovCiAgICAgICBpZiAobXNlY19zbGVlcChpbnRlcnZhbF93YXRlKSkgewogCWJyZWFrOwogICAgICAgfQogICAgICAgaW50ZXJ2YWxfY291bnQgPSBpbnRlcnZhbF9idXJzdDsKICAgICB9Ci0gICAgCisKICNlbmRpZgotICAgIAorCiAgIH0KLSAgCi0gIC8qIFRoaXMgaXMgYSB0aW1lZCB0ZXN0LCBzbyB0aGUgcmVtb3RlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIHVzIGFmdGVyICovCi0gIC8qIGEgdGltZS4gV2Ugc2hvdWxkIG5vdCBuZWVkIHRvIHNlbmQgYW55ICJzdHJhbmdlIiBtZXNzYWdlcyB0byB0ZWxsICovCi0gIC8qIHRoZSByZW1vdGUgdGhhdCB0aGUgdGVzdCBpcyBjb21wbGV0ZWQsIHVubGVzcyB3ZSBkZWNpZGUgdG8gYWRkIGEgKi8KLSAgLyogbnVtYmVyIG9mIG1lc3NhZ2VzIHRvIHRoZSB0ZXN0LiAqLwotICAKKworICAvKiBUaGlzIGlzIGEgdGltZWQgdGVzdCwgc28gdGhlIHJlbW90ZSB3aWxsIGJlIHJldHVybmluZyB0byB1cyBhZnRlcgorICAgICBhIHRpbWUuIFdlIHNob3VsZCBub3QgbmVlZCB0byBzZW5kIGFueSAic3RyYW5nZSIgbWVzc2FnZXMgdG8gdGVsbAorICAgICB0aGUgcmVtb3RlIHRoYXQgdGhlIHRlc3QgaXMgY29tcGxldGVkLCB1bmxlc3Mgd2UgZGVjaWRlIHRvIGFkZCBhCisgICAgIG51bWJlciBvZiBtZXNzYWdlcyB0byB0aGUgdGVzdC4gKi8KKwogICAvKiB0aGUgdGVzdCBpcyBvdmVyLCBzbyBnZXQgc3RhdHMgYW5kIHN0dWZmICovCi0gIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwJCisgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwKIAkgICAmZWxhcHNlZF90aW1lKTsKLSAgCi0gIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kCSovCisKKyAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQgICovCiAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgIGlmIChkZWJ1ZykKQEAgLTE3OTMsMzEgKzE3OTYsMzEgQEAKICAgICBwZXJyb3IoInNlbmRfZGdfc3RyZWFtOiBlcnJvciBvbiByZW1vdGUiKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGJ5dGVzX3NlbnQJPSBzZW5kX3NpemUgKiBtZXNzYWdlc19zZW50OwogICBsb2NhbF90aHJ1cHV0CT0gY2FsY190aHJ1cHV0KGJ5dGVzX3NlbnQpOwotICAKKwogICBtZXNzYWdlc19yZWN2ZAk9IGRnX3N0cmVhbV9yZXN1bHRzLT5tZXNzYWdlc19yZWN2ZDsKICAgYnl0ZXNfcmVjdmQJPSBzZW5kX3NpemUgKiBtZXNzYWdlc19yZWN2ZDsKLSAgCisKICAgLyogd2UgYXN1bWUgdGhhdCB0aGUgcmVtb3RlIHJhbiBmb3IgYXMgbG9uZyBhcyB3ZSBkaWQgKi8KLSAgCisKICAgcmVtb3RlX3RocnVwdXQJPSBjYWxjX3RocnVwdXQoYnl0ZXNfcmVjdmQpOwotICAKKwogICAvKiBwcmludCB0aGUgcmVzdWx0cyBmb3IgdGhpcyBzb2NrZXQgYW5kIG1lc3NhZ2Ugc2l6ZSAqLwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlIHx8IHJlbW90ZV9jcHVfdXNhZ2UpIHsKLSAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCi0gICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgV2UgcGFzcyB6ZXJvcyBmb3IgdGhlIGxvY2FsICovCi0gICAgLyogY3B1IHV0aWxpemF0aW9uIGFuZCBlbGFwc2VkIHRpbWUgdG8gdGVsbCB0aGUgcm91dGluZSB0byB1c2UgKi8KLSAgICAvKiB0aGUgbGlicmFyaWVzIG93biB2YWx1ZXMgZm9yIHRob3NlLiAqLworICAgIC8qIFdlIG11c3Qgbm93IGRvIGEgbGl0dGxlIG1hdGggZm9yIHNlcnZpY2UgZGVtYW5kIGFuZCBjcHUKKyAgICAgICB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSBXZSBwYXNzIHplcm9zIGZvciB0aGUgbG9jYWwgY3B1CisgICAgICAgdXRpbGl6YXRpb24gYW5kIGVsYXBzZWQgdGltZSB0byB0ZWxsIHRoZSByb3V0aW5lIHRvIHVzZSB0aGUKKyAgICAgICBsaWJyYXJpZXMgb3duIHZhbHVlcyBmb3IgdGhvc2UuICovCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgICAgaWYgKGxvY2FsX2NwdV9yYXRlID09IDAuMCkgewogCWZwcmludGYod2hlcmUsIldBUk5JTkcgV0FSTklORyBXQVJOSU5HICBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAgV0FSTklORyFcbiIpOwogCWZwcmludGYod2hlcmUsIkxvY2FsIENQVSB1c2FnZSBudW1iZXJzIGJhc2VkIG9uIHByb2Nlc3MgaW5mb3JtYXRpb24gb25seSFcbiIpOwogCWZmbHVzaCh3aGVyZSk7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gY2FsY19jcHVfdXRpbCgwLjApOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSBjYWxjX3NlcnZpY2VfZGVtYW5kKGJ5dGVzX3NlbnQsCiAJCQkJCQkgICAgICAwLjAsCkBAIC0xODI4LDE3ICsxODMxLDE3IEBACiAgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAtMS4wOwogICAgIH0KLSAgICAKLSAgICAvKiBUaGUgbG9jYWwgY2FsY3VsYXRpb25zIGNvdWxkIHVzZSB2YXJpYWJsZXMgYmVpbmcga2VwdCBieSAqLwotICAgIC8qIHRoZSBsb2NhbCBuZXRsaWIgcm91dGluZXMuIFRoZSByZW1vdGUgY2FsY3VhdGlvbnMgbmVlZCB0byAqLwotICAgIC8qIGhhdmUgYSBmZXcgdGhpbmdzIHBhc3NlZCB0byB0aGVtLiAqLworCisgICAgLyogVGhlIGxvY2FsIGNhbGN1bGF0aW9ucyBjb3VsZCB1c2UgdmFyaWFibGVzIGJlaW5nIGtlcHQgYnkgdGhlCisgICAgICAgbG9jYWwgbmV0bGliIHJvdXRpbmVzLiBUaGUgcmVtb3RlIGNhbGN1YXRpb25zIG5lZWQgdG8gaGF2ZSBhCisgICAgICAgZmV3IHRoaW5ncyBwYXNzZWQgdG8gdGhlbS4gKi8KICAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgaWYgKHJlbW90ZV9jcHVfcmF0ZSA9PSAwLjApIHsKIAlmcHJpbnRmKHdoZXJlLCJEQU5HRVIgICBEQU5HRVIgIERBTkdFUiAgIERBTkdFUiAgREFOR0VSICAgREFOR0VSICAgREFOR0VSIVxuIik7CiAJZnByaW50Zih3aGVyZSwiUkVNT1RFIENQVSB1c2FnZSBudW1iZXJzIGJhc2VkIG9uIHByb2Nlc3MgaW5mb3JtYXRpb24gb25seSFcbiIpOwogCWZmbHVzaCh3aGVyZSk7CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbgk9IGRnX3N0cmVhbV9yZXN1bHRzLT5jcHVfdXRpbDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZAk9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfcmVjdmQsCiAJCQkJCQkgICAgICAwLjAsCkBAIC0xODQ5LDE2ICsxODUyLDE2IEBACiAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uCT0gLTEuMDsKICAgICAgIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZAk9IC0xLjA7CiAgICAgfQotICAgIAotICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHVzZXIgKi8KLSAgICAvKiBoYXMgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlICovCi0gICAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLwotICAgIC8qIHVzZXIgaGFzIHJlcXVlc3RlZCB2ZXJib3NpdHkgbGV2ZWwgMSwgaGUgd2lsbCBnZXQgdGhlIGJhc2ljICovCi0gICAgLyogInN0cmVhbXBlcmYiIG51bWJlcnMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSB2ZXJib3NpdHkgKi8KLSAgICAvKiBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mICovCi0gICAgLyogYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBmcm9tIG91dHNpZGUgb2YgdGhpcyBibG9jayBhcyBpdCBpdCAqLwotICAgIC8qIG5vdCBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCi0gICAgCisKKyAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyIGhhcworICAgICAgIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSBsb2NhbAorICAgICAgIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgICByZXF1ZXN0ZWQgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAic3RyZWFtcGVyZiIKKyAgICAgICBudW1iZXJzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgdmVyYm9zaXR5IG9mIGdyZWF0ZXIgdGhhbgorICAgICAgIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiBiYWNrZ3JvdW5kCisgICAgICAgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgbm90CisgICAgICAgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLworCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC0xODc0LDE1ICsxODc3LDE1IEBACiAgICAgICBicmVhazsKICAgICBjYXNlIDE6CiAgICAgICBmcHJpbnRmKHdoZXJlLAotCSAgICAgIGNwdV9mbXRfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCi0JICAgICAgbHNzX3NpemUsCQkvKiBsb2NhbCBzZW5kYnVmIHNpemUgKi8KLQkgICAgICBzZW5kX3NpemUsCQkvKiBob3cgbGFyZ2Ugd2VyZSB0aGUgc2VuZHMgKi8KLQkgICAgICBlbGFwc2VkX3RpbWUsCQkvKiBob3cgbG9uZyB3YXMgdGhlIHRlc3QgKi8KKwkgICAgICBjcHVfZm10XzEsCSAgICAvKiB0aGUgZm9ybWF0IHN0cmluZyAqLworCSAgICAgIGxzc19zaXplLAkJICAgIC8qIGxvY2FsIHNlbmRidWYgc2l6ZSAqLworCSAgICAgIHNlbmRfc2l6ZSwJICAgIC8qIGhvdyBsYXJnZSB3ZXJlIHRoZSBzZW5kcyAqLworCSAgICAgIGVsYXBzZWRfdGltZSwJICAgIC8qIGhvdyBsb25nIHdhcyB0aGUgdGVzdCAqLwogCSAgICAgIG1lc3NhZ2VzX3NlbnQsCiAJICAgICAgZmFpbGVkX3NlbmRzLAotCSAgICAgIGxvY2FsX3RocnVwdXQsIAkJLyogd2hhdCB3YXMgdGhlIHhmZXIgcmF0ZSAqLwotCSAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiwJLyogbG9jYWwgY3B1ICovCi0JICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQsCS8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kICovCisJICAgICAgbG9jYWxfdGhydXB1dCwgCSAgICAvKiB3aGF0IHdhcyB0aGUgeGZlciByYXRlICovCisJICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uLC8qIGxvY2FsIGNwdSAqLworCSAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kLCAvKiBsb2NhbCBzZXJ2aWNlIGRlbWFuZCAqLwogCSAgICAgIHJzcl9zaXplLAogCSAgICAgIGVsYXBzZWRfdGltZSwKIAkgICAgICBtZXNzYWdlc19yZWN2ZCwKQEAgLTE5MjAsOCArMTkyMyw4IEBACiB9CiAMCiAKLSAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgcmVjZWl2ZSBzaWRlIChuZXRzZXJ2ZXIpIG9mIHRoZSAqLwotIC8qIERHX1NUUkVBTSBwZXJmb3JtYW5jZSB0ZXN0LiAqLworIC8qIHRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSByZWNlaXZlIHNpZGUgKG5ldHNlcnZlcikgb2YgdGhlCisgICAgREdfU1RSRUFNIHBlcmZvcm1hbmNlIHRlc3QuICovCiAKIHZvaWQKIHJlY3ZfZGdfc3RyZWFtKCkKQEAgLTE5MzMsNTQgKzE5MzYsNTQgQEAKICAgaW50CWxlbiA9IDA7CiAgIGludAlieXRlc19yZWNlaXZlZCA9IDA7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgaW50CW1lc3NhZ2Vfc2l6ZTsKICAgaW50CW1lc3NhZ2VzX3JlY3ZkID0gMDsKLSAgCisKICAgc3RydWN0CWRnX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdAkqZGdfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAlkZ19zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSpkZ19zdHJlYW1fcmVzcG9uc2U7CiAgIHN0cnVjdAlkZ19zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKmRnX3N0cmVhbV9yZXN1bHRzOwotICAKLSAgZGdfc3RyZWFtX3JlcXVlc3QgID0gCisKKyAgZGdfc3RyZWFtX3JlcXVlc3QgID0KICAgICAoc3RydWN0IGRnX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgZGdfc3RyZWFtX3Jlc3BvbnNlID0gCisgIGRnX3N0cmVhbV9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCBkZ19zdHJlYW1fcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgZGdfc3RyZWFtX3Jlc3VsdHMgID0gCisgIGRnX3N0cmVhbV9yZXN1bHRzICA9CiAgICAgKHN0cnVjdCBkZ19zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3ZfZGdfc3RyZWFtOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwotICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCi0gIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCi0gIC8qIHNlbnQgdXMgMCdzLiBJZiB0aGUgc29ja2V0IHNpemVzIGNhbm5vdCBiZSBjaGFuZ2VkLCB0aGVuIHdlIHdpbGwgKi8KLSAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCi0gIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KLSAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAotICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KLSAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KLSAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCi0gIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKKyAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQKKyAgICAgcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZgorICAgICBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZQorICAgICBzZW50IHVzIDAncy4gSWYgdGhlIHNvY2tldCBzaXplcyBjYW5ub3QgYmUgY2hhbmdlZCwgdGhlbiB3ZSB3aWxsCisgICAgIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZQorICAgICBkZXRlcm1pbmVkLCB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbworICAgICB3cm9uZyBmb3IgYW55IHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLworCisgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdAorICAgICB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcworICAgICB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzCisgICAgIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLworCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RnX3N0cmVhbTogc2V0dGluZyB0aGUgcmVzcG9uc2UgdHlwZS4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IERHX1NUUkVBTV9SRVNQT05TRTsKLSAgCisKICAgaWYgKGRlYnVnID4gMikgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfc3RyZWFtOiB0aGUgcmVzcG9uc2UgdHlwZSBpcyBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGUgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KLSAgLyogYWxpZ25tZW50IHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0LiAqLwotICAKKworICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlIHRvIGJlIGF0IHRoZSBkZXNpcmVkCisgICAgIGFsaWdubWVudCB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldC4gKi8KKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kZ19zdHJlYW06IHJlcXVlc3RlZCBhbGlnbm1lbnQgb2YgJWRcbiIsCiAJICAgIGRnX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCk7CkBAIC0xOTk4LDQ0ICsyMDAxLDQ0IEBACiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kZ19zdHJlYW06IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlICovCi0gIC8qIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzICovCi0gIC8qIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywgKi8KLSAgLyogSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLwotICAKKworICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlCisgICAgIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzCisgICAgIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywKKyAgICAgSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLworCiAgIGJ6ZXJvKChjaGFyICopJm15YWRkcl91biwKIAlzaXplb2YobXlhZGRyX3VuKSk7CiAgIG15YWRkcl91bi5zdW5fZmFtaWx5ICAgICAgPSBBRl9VTklYOwotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9kZ19zdHJlYW06IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKLSAgLyogY3JlYXRlX3VuaXhfc29ja2V0IGV4cGVjdHMgdG8gZmluZCBzb21lIHRoaW5ncyBpbiB0aGUgZ2xvYmFsICovCi0gIC8qIHZhcmlhYmxlcywgc28gc2V0IHRoZSBnbG9iYWxzIGJhc2VkIG9uIHRoZSB2YWx1ZXMgaW4gdGhlIHJlcXVlc3QuICovCi0gIC8qIG9uY2UgdGhlIHNvY2tldCBoYXMgYmVlbiBjcmVhdGVkLCB3ZSB3aWxsIHNldCB0aGUgcmVzcG9uc2UgdmFsdWVzICovCi0gIC8qIGJhc2VkIG9uIHRoZSB1cGRhdGVkIHZhbHVlIG9mIHRob3NlIGdsb2JhbHMuIHJhaiA3Lzk0ICovCisgIC8qIGNyZWF0ZV91bml4X3NvY2tldCBleHBlY3RzIHRvIGZpbmQgc29tZSB0aGluZ3MgaW4gdGhlIGdsb2JhbAorICAgICB2YXJpYWJsZXMsIHNvIHNldCB0aGUgZ2xvYmFscyBiYXNlZCBvbiB0aGUgdmFsdWVzIGluIHRoZSByZXF1ZXN0LgorICAgICBvbmNlIHRoZSBzb2NrZXQgaGFzIGJlZW4gY3JlYXRlZCwgd2Ugd2lsbCBzZXQgdGhlIHJlc3BvbnNlIHZhbHVlcworICAgICBiYXNlZCBvbiB0aGUgdXBkYXRlZCB2YWx1ZSBvZiB0aG9zZSBnbG9iYWxzLiByYWogNy85NCAqLwogICBsc3Jfc2l6ZSA9IGRnX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplOwotICAgIAorCiAgIHNfZGF0YSA9IGNyZWF0ZV91bml4X3NvY2tldChBRl9VTklYLAogCQkJICAgICAgU09DS19ER1JBTSk7Ci0gIAorCiAgIGlmIChzX2RhdGEgPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBMZXQncyBnZXQgYW4gYWRkcmVzcyBhc3NpZ25lZCB0byB0aGlzIHNvY2tldCBzbyB3ZSBjYW4gdGVsbCB0aGUgKi8KLSAgLyogaW5pdGlhdG9yIGhvdyB0byByZWFjaCB0aGUgZGF0YSBzb2NrZXQuIFRoZXJlIG1heSBiZSBhIGRlc2lyZSB0byAqLwotICAvKiBuYWlsIHRoaXMgc29ja2V0IHRvIGEgc3BlY2lmaWMgSVAgYWRkcmVzcyBpbiBhIG11bHRpLWhvbWVkLCAqLwotICAvKiBtdWx0aS1jb25uZWN0aW9uIHNpdHVhdGlvbiwgYnV0IGZvciBub3csIHdlJ2xsIGlnbm9yZSB0aGUgaXNzdWUgKi8KLSAgLyogYW5kIGNvbmNlbnRyYXRlIG9uIHNpbmdsZSBjb25uZWN0aW9uIHRlc3RpbmcuICovCi0gIAorCisgIC8qIExldCdzIGdldCBhbiBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoaXMgc29ja2V0IHNvIHdlIGNhbiB0ZWxsIHRoZQorICAgICBpbml0aWF0b3IgaG93IHRvIHJlYWNoIHRoZSBkYXRhIHNvY2tldC4gVGhlcmUgbWF5IGJlIGEgZGVzaXJlIHRvCisgICAgIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsCisgICAgIG11bHRpLWNvbm5lY3Rpb24gc2l0dWF0aW9uLCBidXQgZm9yIG5vdywgd2UnbGwgaWdub3JlIHRoZSBpc3N1ZQorICAgICBhbmQgY29uY2VudHJhdGUgb24gc2luZ2xlIGNvbm5lY3Rpb24gdGVzdGluZy4gKi8KKwogICBzdHJjcHkobXlhZGRyX3VuLnN1bl9wYXRoLHRlbXBuYW0ocGF0aF9wcmVmaXgsIm5ldHBlcmYuIikpOwogICBpZiAoYmluZChzX2RhdGEsCiAJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfdW4sCkBAIC0yMDQ4LDYxICsyMDUxLDYxIEBACiAgIGNobW9kKG15YWRkcl91bi5zdW5fcGF0aCwgMDY2Nik7CiAKICAgZGdfc3RyZWFtX3Jlc3BvbnNlLT50ZXN0X2xlbmd0aCA9IGRnX3N0cmVhbV9yZXF1ZXN0LT50ZXN0X2xlbmd0aDsKLSAgCi0gIC8qIE5vdyBteWFkZHJfdW4gY29udGFpbnMgdGhlIHBvcnQgYW5kIHRoZSBpbnRlcm5ldCBhZGRyZXNzIHRoaXMgaXMgKi8KLSAgLyogcmV0dXJuZWQgdG8gdGhlIHNlbmRlciBhbHNvIGltcGxpY2l0bHkgdGVsbGluZyB0aGUgc2VuZGVyIHRoYXQgdGhlICovCi0gIC8qIHNvY2tldCBidWZmZXIgc2l6aW5nIGhhcyBiZWVuIGRvbmUuICovCi0gIAorCisgIC8qIE5vdyBteWFkZHJfdW4gY29udGFpbnMgdGhlIHBvcnQgYW5kIHRoZSBpbnRlcm5ldCBhZGRyZXNzIHRoaXMgaXMKKyAgICAgcmV0dXJuZWQgdG8gdGhlIHNlbmRlciBhbHNvIGltcGxpY2l0bHkgdGVsbGluZyB0aGUgc2VuZGVyIHRoYXQKKyAgICAgdGhlIHNvY2tldCBidWZmZXIgc2l6aW5nIGhhcyBiZWVuIGRvbmUuICovCisKICAgc3RyY3B5KGRnX3N0cmVhbV9yZXNwb25zZS0+dW5peF9wYXRoLG15YWRkcl91bi5zdW5fcGF0aCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKLSAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywgKi8KLSAgLyogdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbWF4ICovCi0gIC8qIHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUgbWVhc3VyZWQsIG9yICovCi0gIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsIHJldHVybiBhIC0xIHRvICovCi0gIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCisgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsCisgICAgIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlCisgICAgIG1heCByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlCisgICAgIG1lYXN1cmVkLCBvciBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbAorICAgICByZXR1cm4gYSAtMSB0byB0aGUgaW5pdGlhdG9yLiAqLworCiAgIGRnX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgPSAwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmIChkZ19zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKLSAgICAvKiBXZSB3aWxsIHBhc3MgdGhlIHJhdGUgaW50byB0aGUgY2FsaWJyYXRpb24gcm91dGluZS4gSWYgdGhlICovCi0gICAgLyogdXNlciBkaWQgbm90IHNwZWNpZnkgb25lLCBpdCB3aWxsIGJlIDAuMCwgYW5kIHdlIHdpbGwgZG8gYSAqLwotICAgIC8qICJyZWFsIiBjYWxpYnJhdGlvbi4gT3RoZXJ3aXNlLCBhbGwgaXQgd2lsbCByZWFsbHkgZG8gaXMgKi8KLSAgICAvKiBzdG9yZSBpdCBhd2F5Li4uICovCisgICAgLyogV2Ugd2lsbCBwYXNzIHRoZSByYXRlIGludG8gdGhlIGNhbGlicmF0aW9uIHJvdXRpbmUuIElmIHRoZSB1c2VyCisgICAgICAgZGlkIG5vdCBzcGVjaWZ5IG9uZSwgaXQgd2lsbCBiZSAwLjAsIGFuZCB3ZSB3aWxsIGRvIGEgInJlYWwiCisgICAgICAgY2FsaWJyYXRpb24uIE90aGVyd2lzZSwgYWxsIGl0IHdpbGwgcmVhbGx5IGRvIGlzIHN0b3JlIGl0CisgICAgICAgYXdheS4uLiAqLwogICAgIGRnX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwotICAgIGRnX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgPSAKKyAgICBkZ19zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0KICAgICAgIGNhbGlicmF0ZV9sb2NhbF9jcHUoZGdfc3RyZWFtX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQotICAKKwogICBtZXNzYWdlX3NpemUJPSBkZ19zdHJlYW1fcmVxdWVzdC0+bWVzc2FnZV9zaXplOwogICB0ZXN0X3RpbWUJPSBkZ19zdHJlYW1fcmVxdWVzdC0+dGVzdF9sZW5ndGg7Ci0gIAotICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KLSAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCisKKyAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mCisgICAgIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICBkZ19zdHJlYW1fcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKICAgZGdfc3RyZWFtX3Jlc3BvbnNlLT5yZWN2X2J1Zl9zaXplID0gbHNyX3NpemU7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKLSAgLyogTm93IGl0J3MgdGltZSB0byBzdGFydCByZWNlaXZpbmcgZGF0YSBvbiB0aGUgY29ubmVjdGlvbi4gV2Ugd2lsbCAqLwotICAvKiBmaXJzdCBncmFiIHRoZSBhcHJvcHJpYXRlIGNvdW50ZXJzIGFuZCB0aGVuIHN0YXJ0IGdyYWJiaW5nLiAqLwotICAKKworICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsCisgICAgIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCisKICAgY3B1X3N0YXJ0KGRnX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAotICAvKiBUaGUgbG9vcCB3aWxsIGV4aXQgd2hlbiB0aGUgdGltZXIgcG9wcywgb3IgaWYgd2UgaGFwcGVuIHRvIHJlY3YgYSAqLwotICAvKiBtZXNzYWdlIG9mIGxlc3MgdGhhbiBzZW5kX3NpemUgYnl0ZXMuLi4gKi8KLSAgCisKKyAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHRpbWVyIHBvcHMsIG9yIGlmIHdlIGhhcHBlbiB0byByZWN2IGEKKyAgICAgbWVzc2FnZSBvZiBsZXNzIHRoYW4gc2VuZF9zaXplIGJ5dGVzLi4uICovCisKICAgdGltZXNfdXAgPSAwOwogICBzdGFydF90aW1lcih0ZXN0X3RpbWUgKyBQQURfVElNRSk7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfc3RyZWFtOiBhYm91dCB0byBlbnRlciBpbm5lciBzYW5jdHVtLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICB3aGlsZSAoIXRpbWVzX3VwKSB7Ci0gICAgaWYgKChsZW4gPSByZWN2KHNfZGF0YSwgCisgICAgaWYgKChsZW4gPSByZWN2KHNfZGF0YSwKIAkJICAgIHJlY3ZfcmluZy0+YnVmZmVyX3B0ciwKLQkJICAgIG1lc3NhZ2Vfc2l6ZSwgCisJCSAgICBtZXNzYWdlX3NpemUsCiAJCSAgICAwKSkgIT0gbWVzc2FnZV9zaXplKSB7CiAgICAgICBpZiAoKGxlbiA9PSBTT0NLRVRfRVJST1IpICYmIChlcnJubyAhPSBFSU5UUikpIHsKIAluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwpAQCAtMjExNCwxNyArMjExNywxNyBAQAogICAgIG1lc3NhZ2VzX3JlY3ZkKys7CiAgICAgcmVjdl9yaW5nID0gcmVjdl9yaW5nLT5uZXh0OwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfc3RyZWFtOiBnb3QgJWQgbWVzc2FnZXMuXG4iLG1lc3NhZ2VzX3JlY3ZkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAKKworCiAgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdGltZXIgb3IgPCBzZW5kX3NpemUgYnl0ZXMgcmVjZWl2ZWQuICovCi0gIAorCiAgIGNwdV9zdG9wKGRnX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgaWYgKHRpbWVzX3VwKSB7CiAgICAgLyogd2UgZW5kZWQgb24gYSB0aW1lciwgc3VidHJhY3QgdGhlIFBBRF9USU1FICovCiAgICAgZWxhcHNlZF90aW1lIC09IChmbG9hdClQQURfVElNRTsKQEAgLTIxMzIsMjUgKzIxMzUsMjUgQEAKICAgZWxzZSB7CiAgICAgc3RvcF90aW1lcigpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfc3RyZWFtOiB0ZXN0IGVuZGVkIGluICVmIHNlY29uZHMuXG4iLGVsYXBzZWRfdGltZSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgCisKKwogICAvKiBXZSB3aWxsIGNvdW50IHRoZSAib2ZmIiBtZXNzYWdlIHRoYXQgZ290IHVzIG91dCBvZiB0aGUgbG9vcCAqLwogICBieXRlc19yZWNlaXZlZCA9IChtZXNzYWdlc19yZWN2ZCAqIG1lc3NhZ2Vfc2l6ZSkgKyBsZW47Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X2RnX3N0cmVhbTogZ290ICVkIGJ5dGVzXG4iLAogCSAgICBieXRlc19yZWNlaXZlZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZQkJPSBER19TVFJFQU1fUkVTVUxUUzsKICAgZGdfc3RyZWFtX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gYnl0ZXNfcmVjZWl2ZWQ7CiAgIGRnX3N0cmVhbV9yZXN1bHRzLT5tZXNzYWdlc19yZWN2ZAk9IG1lc3NhZ2VzX3JlY3ZkOwpAQCAtMjE2MSw1NyArMjE2NCw1NyBAQAogICBlbHNlIHsKICAgICBkZ19zdHJlYW1fcmVzdWx0cy0+Y3B1X3V0aWwJPSAtMS4wOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9kZ19zdHJlYW06IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogfQogDAogdm9pZAogc2VuZF9kZ19ycihjaGFyIHJlbW90ZV9ob3N0W10pCiB7Ci0gIAorCiAgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLlxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgICBTaXplICAgIFRpbWUgICAgIFJhdGUgICAgICAgICBcblwKIGJ5dGVzICBCeXRlcyAgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgXG5cbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzAgPQogICAgICIlNy4yZlxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICAlLTZkICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgIFJhdGUgICAgIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAgICAgICUlICAgICAgdXMvVHIgICB1cy9UclxuXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzAgPQogICAgICIlNi4zZlxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKLSAgCi0gIC8qIHdlIGFkZCBNQVhBTElHTk1FTlQgYW5kIE1BWE9GRlNFVCB0byBpbnN1cmUgdGhhdCB0aGVyZSBpcyBlbm91Z2ggKi8KLSAgLyogc3BhY2UgZm9yIGEgbWF4aW1hbGx5IGFsaWduZWQsIG1heGltYWxseSBzaXplZCBtZXNzYWdlLiBBdCBzb21lICovCi0gIC8qIHBvaW50LCB3ZSBtYXkgd2FudCB0byBhY3R1YWxseSBtYWtlIHRoaXMgZXZlbiBsYXJnZXIgYW5kIGN5Y2xlICovCi0gIC8qIHRocm91Z2ggdGhlIHRoaW5nIG9uZSBwaWVjZSBhdCBhIHRpbWUuKi8KLSAgCisKKyAgLyogd2UgYWRkIE1BWEFMSUdOTUVOVCBhbmQgTUFYT0ZGU0VUIHRvIGluc3VyZSB0aGF0IHRoZXJlIGlzIGVub3VnaAorICAgICBzcGFjZSBmb3IgYSBtYXhpbWFsbHkgYWxpZ25lZCwgbWF4aW1hbGx5IHNpemVkIG1lc3NhZ2UuIEF0IHNvbWUKKyAgICAgcG9pbnQsIHdlIG1heSB3YW50IHRvIGFjdHVhbGx5IG1ha2UgdGhpcyBldmVuIGxhcmdlciBhbmQgY3ljbGUKKyAgICAgdGhyb3VnaCB0aGUgdGhpbmcgb25lIHBpZWNlIGF0IGEgdGltZS4qLworCiAgIGludAlsZW47CiAgIGNoYXIJKnNlbmRfbWVzc2FnZV9wdHI7CiAgIGNoYXIJKnJlY3ZfbWVzc2FnZV9wdHI7CkBAIC0yMjIwLDE1ICsyMjIzLDE1IEBACiAgIFNPQ0tFVCBzZW5kX3NvY2tldDsKICAgaW50CXRyYW5zX3JlbWFpbmluZzsKICAgaW50CWJ5dGVzX3hmZXJkOwotICAKKwogICBpbnQJcnNwX2J5dGVzX3JlY3ZkOwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAgIGRvdWJsZQl0aHJ1cHV0OwotICAKKwogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgIC8qIHRpbWluZyBzdHVmZiAqLwogI2RlZmluZQlNQVhfS0VQVF9USU1FUwkxMDI0CkBAIC0yMjQyLDIwICsyMjQ1LDIwIEBACiAgIHN0cnVjdAl0aW1ldmFsCQlyZWN2X3RpbWU7CiAgIHN0cnVjdAl0aW1ldmFsCQlzbGVlcF90aW1ldmFsOwogI2VuZGlmCi0gIAorCiAgIHN0cnVjdAlzb2NrYWRkcl91bglzZXJ2ZXIsIG15YWRkcl91bjsKLSAgCisKICAgc3RydWN0CWRnX3JyX3JlcXVlc3Rfc3RydWN0CSpkZ19ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJZGdfcnJfcmVzcG9uc2Vfc3RydWN0CSpkZ19ycl9yZXNwb25zZTsKICAgc3RydWN0CWRnX3JyX3Jlc3VsdHNfc3RydWN0CSpkZ19ycl9yZXN1bHQ7Ci0gIAotICBkZ19ycl9yZXF1ZXN0CT0gCisKKyAgZGdfcnJfcmVxdWVzdAk9CiAgICAgKHN0cnVjdCBkZ19ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgZGdfcnJfcmVzcG9uc2U9CiAgICAgKHN0cnVjdCBkZ19ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBkZ19ycl9yZXN1bHQJPQogICAgIChzdHJ1Y3QgZGdfcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICAvKiB3ZSB3YW50IHRvIHplcm8gb3V0IHRoZSB0aW1lcywgc28gd2UgY2FuIGRldGVjdCB1bnVzZWQgZW50cmllcy4gKi8KICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICB0aW1lX2luZGV4ID0gMDsKQEAgLTIyNjUsMTIgKzIyNjgsMTIgQEAKICAgfQogICB0aW1lX2luZGV4ID0gMDsKICNlbmRpZgotICAKLSAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZSAqLwotICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCi0gIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCi0gIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKKyAgLyogc2luY2Ugd2UgYXJlIG5vdyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgY29kZSB0aGF0IGVzdGFibGlzaGVkIHRoZQorICAgICBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50CisgICAgIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kCisgICAgIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KKwogICBiemVybygoY2hhciAqKSZzZXJ2ZXIsCiAJc2l6ZW9mKHNlcnZlcikpOwogICBzZXJ2ZXIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7CkBAIC0yMjgwLDcgKzIyODMsNyBAQAogICBteWFkZHJfdW4uc3VuX2ZhbWlseSA9IEFGX1VOSVg7CiAKICAgc3RyY3B5KG15YWRkcl91bi5zdW5fcGF0aCx0ZW1wbmFtKHBhdGhfcHJlZml4LCJuZXRwZXJmLiIpKTsKLSAgCisKICAgaWYgKCBwcmludF9oZWFkZXJzICkgewogICAgIGZwcmludGYod2hlcmUsIkRHIFJFUVVFU1QvUkVTUE9OU0UgVEVTVFxuIik7CiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKQpAQCAtMjI4OCwyMSArMjI5MSwyMSBAQAogICAgIGVsc2UKICAgICAgIGZwcmludGYod2hlcmUsdHB1dF90aXRsZSxmb3JtYXRfdW5pdHMoKSk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBudW1tZXNzYWdlcwk9CTA7CiAgIGJ5dGVzX3hmZXJkCT0JMDsKICAgdGltZXNfdXAgCT0gCTA7Ci0gIAorCiAgIC8qIHNldC11cCB0aGUgZGF0YSBidWZmZXIgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0ICovCiAgIHRlbXBfbWVzc2FnZV9wdHIgPSAoY2hhciAqKW1hbGxvYyhEQVRBQlVGRkVSTEVOKTsKICAgaWYgKHRlbXBfbWVzc2FnZV9wdHIgPT0gTlVMTCkgewogICAgIHByaW50ZigibWFsbG9jKCVkKSBmYWlsZWQhXG4iLCBEQVRBQlVGRkVSTEVOKTsKICAgICBleGl0KDEpOwogICB9Ci0gIHNlbmRfbWVzc2FnZV9wdHIgPSAoY2hhciAqKSgoIChsb25nKXRlbXBfbWVzc2FnZV9wdHIgKyAKLQkJCShsb25nKSBsb2NhbF9zZW5kX2FsaWduIC0gMSkgJgkKKyAgc2VuZF9tZXNzYWdlX3B0ciA9IChjaGFyICopKCggKGxvbmcpdGVtcF9tZXNzYWdlX3B0ciArCisJCQkobG9uZykgbG9jYWxfc2VuZF9hbGlnbiAtIDEpICYKIAkJCX4oKGxvbmcpIGxvY2FsX3NlbmRfYWxpZ24gLSAxKSk7CiAgIHNlbmRfbWVzc2FnZV9wdHIgPSBzZW5kX21lc3NhZ2VfcHRyICsgbG9jYWxfc2VuZF9vZmZzZXQ7CiAgIHRlbXBfbWVzc2FnZV9wdHIgPSAoY2hhciAqKW1hbGxvYyhEQVRBQlVGRkVSTEVOKTsKQEAgLTIzMTAsNDYgKzIzMTMsNDYgQEAKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgREFUQUJVRkZFUkxFTik7CiAgICAgZXhpdCgxKTsKICAgfQotICByZWN2X21lc3NhZ2VfcHRyID0gKGNoYXIgKikoKCAobG9uZyl0ZW1wX21lc3NhZ2VfcHRyICsgCi0JCQkobG9uZykgbG9jYWxfcmVjdl9hbGlnbiAtIDEpICYJCisgIHJlY3ZfbWVzc2FnZV9wdHIgPSAoY2hhciAqKSgoIChsb25nKXRlbXBfbWVzc2FnZV9wdHIgKworCQkJKGxvbmcpIGxvY2FsX3JlY3ZfYWxpZ24gLSAxKSAmCiAJCQl+KChsb25nKSBsb2NhbF9yZWN2X2FsaWduIC0gMSkpOwogICByZWN2X21lc3NhZ2VfcHRyID0gcmVjdl9tZXNzYWdlX3B0ciArIGxvY2FsX3JlY3Zfb2Zmc2V0OwotICAKKwogICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBzZW5kX3NvY2tldCA9IGNyZWF0ZV91bml4X3NvY2tldChBRl9VTklYLCAKKyAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfdW5peF9zb2NrZXQoQUZfVU5JWCwKIAkJCQkgICBTT0NLX0RHUkFNKTsKLSAgCisKICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfZGdfcnI6IGRnIHJyIGRhdGEgc29ja2V0Iik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJzZW5kX2RnX3JyOiBzZW5kX3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgIH0KLSAgCi0JCi0gIC8qIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgY3B1IHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cywgd2UgbXVzdCAqLwotICAvKiBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlIHRlc3RzICovCi0gIC8qIHRoZW1zZWx2ZXMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhlIGNwdSByYXRlLCB0aGVuICovCi0gIC8qIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlICovCi0gIC8qIG5vdGhpbmcgdG8gZG8uIElmIGxvY2FsX2NwdV9yYXRlIGlzIHplcm8sIHRoZW4gd2Ugd2lsbCBnbyB0aHJvdWdoICovCi0gIC8qIGFsbCB0aGUgIm5vcm1hbCIgY2FsaWJyYXRpb24gc3R1ZmYgYW5kIHJldHVybiB0aGUgcmF0ZSBiYWNrLiBJZiAqLwotICAvKiB0aGVyZSBpcyBubyBpZGxlIGNvdW50ZXIgaW4gdGhlIGtlcm5lbCBpZGxlIGxvb3AsIHRoZSAqLwotICAvKiBsb2NhbF9jcHVfcmF0ZSB3aWxsIGJlIHNldCB0byAtMS4gKi8KLSAgCisKKworICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QKKyAgICAgY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cworICAgICB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbgorICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZQorICAgICBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaAorICAgICBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4gSWYKKyAgICAgdGhlcmUgaXMgbm8gaWRsZSBjb3VudGVyIGluIHRoZSBrZXJuZWwgaWRsZSBsb29wLCB0aGUKKyAgICAgbG9jYWxfY3B1X3JhdGUgd2lsbCBiZSBzZXQgdG8gLTEuICovCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgIH0KLSAgCi0gIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gZG8gYSBsaXN0ZW4uIFRoZSBzZXJ2ZXIgYWx0ZXJzIHRoZSBzb2NrZXQgKi8KLSAgLyogcGFyYW10ZXJzIG9uIHRoZSBvdGhlciBzaWRlIGF0IHRoaXMgcG9pbnQsIGhlbmNlIHRoZSByZWFzb24gZm9yICovCi0gIC8qIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkICovCi0gIC8qIG5vdCBzcGVjaWZ5IGFueSBvZiB0aGUgcGFyYW1ldGVycywgdGhleSB3aWxsIGJlIHBhc3NlZCBhcyAwLCB3aGljaCAqLwotICAvKiB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUgc3lzdGVtJ3MgKi8KLSAgLyogZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4gQWxpZ25tZW50IGlzIHRoZSBleGNlcHRpb24sIGl0IHdpbGwgKi8KLSAgLyogZGVmYXVsdCB0byA4LCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgCisKKyAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlIHNvY2tldAorICAgICBwYXJhbXRlcnMgb24gdGhlIG90aGVyIHNpZGUgYXQgdGhpcyBwb2ludCwgaGVuY2UgdGhlIHJlYXNvbiBmb3IKKyAgICAgYWxsIHRoZSB2YWx1ZXMgYmVpbmcgcGFzc2VkIGluIHRoZSBzZXR1cCBtZXNzYWdlLiBJZiB0aGUgdXNlciBkaWQKKyAgICAgbm90IHNwZWNpZnkgYW55IG9mIHRoZSBwYXJhbWV0ZXJzLCB0aGV5IHdpbGwgYmUgcGFzc2VkIGFzIDAsCisgICAgIHdoaWNoIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZQorICAgICBzeXN0ZW0ncyBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQKKyAgICAgd2lsbCBkZWZhdWx0IHRvIDgsIHdoaWNoIHdpbGwgYmUgbm8gYWxpZ25tZW50IGFsdGVyYXRpb25zLiAqLworCiAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQk9CURPX0RHX1JSOwogICBkZ19ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemU7CiAgIGRnX3JyX3JlcXVlc3QtPnNlbmRfYnVmX3NpemUJPQlyc3Nfc2l6ZTsKQEAgLTIzNjcsMjUgKzIzNzAsMjUgQEAKICAgZWxzZSB7CiAgICAgZGdfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGgJPQl0ZXN0X3RyYW5zICogLTE7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsIm5ldHBlcmY6IHNlbmRfZGdfcnI6IHJlcXVlc3RpbmcgREcgcmVxdWVzdC9yZXNwb25zZSB0ZXN0XG4iKTsKICAgfQotICAKKwogICBzZW5kX3JlcXVlc3QoKTsKLSAgCi0gIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQgCSovCi0gIC8qIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrIGludG8gCSovCi0gIC8qIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4gIFRoZQkqLwotICAvKiByZW1vdGUgd2lsbCBoYXZlIGNhbGlicmF0ZWQgQ1BVIGlmIG5lY2Vzc2FyeSwgYW5kIHdpbGwgaGF2ZSBkb25lCSovCi0gIC8qIGFsbCB0aGUgbmVlZGVkIHNldC11cCB3ZSB3aWxsIGhhdmUgY2FsaWJyYXRlZCB0aGUgY3B1IGxvY2FsbHkJKi8KLSAgLyogYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QsIGFuZCB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgdmFsdWUgcmlnaHQJKi8KLSAgLyogYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQJKi8KLSAgLyogYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMJKi8KLSAgLyogYmVpbmcgc2VudCBmb3IgdGhlIERHIHRlc3RzLgkJCQkJKi8KLSAgCisKKyAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudAorICAgICBzb2NrZXQgcGFyYW1ldGVycyBmb3IgdGhpcyB0ZXN0IHR5cGUuIFdlIHdpbGwgcHV0IHRoZW0gYmFjayBpbnRvCisgICAgIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4gIFRoZQorICAgICByZW1vdGUgd2lsbCBoYXZlIGNhbGlicmF0ZWQgQ1BVIGlmIG5lY2Vzc2FyeSwgYW5kIHdpbGwgaGF2ZSBkb25lCisgICAgIGFsbCB0aGUgbmVlZGVkIHNldC11cCB3ZSB3aWxsIGhhdmUgY2FsaWJyYXRlZCB0aGUgY3B1IGxvY2FsbHkKKyAgICAgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QsIGFuZCB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgdmFsdWUgcmlnaHQKKyAgICAgYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQKKyAgICAgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMKKyAgICAgYmVpbmcgc2VudCBmb3IgdGhlIERHIHRlc3RzLiAgKi8KKwogICByZWN2X3Jlc3BvbnNlKCk7Ci0gIAorCiAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICBpZiAoZGVidWcpCiAgICAgICBmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTIzOTksMTMgKzI0MDIsMTMgQEAKICAgZWxzZSB7CiAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgLyogQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0LiBUaGlzIHdpbGwgc2V0ICovCi0gIC8qIHRoZSBkZWZhdWx0IGRlc3RpbmF0aW9uIGFkZHJlc3Mgb24gdGhpcyBzb2NrZXQuIHdlIG5lZWQgdG8gYmluZCAqLwotICAvKiBvdXQgc29ja2V0IHNvIHRoYXQgdGhlIHJlbW90ZSBnZXRzIHNvbWV0aGluZyBmcm9tIGEgcmVjdmZyb20gICovCisKKyAgLyogQ29ubmVjdCB1cCB0byB0aGUgcmVtb3RlIHBvcnQgb24gdGhlIGRhdGEgc29ja2V0LiBUaGlzIHdpbGwgc2V0CisgICAgIHRoZSBkZWZhdWx0IGRlc3RpbmF0aW9uIGFkZHJlc3Mgb24gdGhpcyBzb2NrZXQuIHdlIG5lZWQgdG8gYmluZAorICAgICBvdXQgc29ja2V0IHNvIHRoYXQgdGhlIHJlbW90ZSBnZXRzIHNvbWV0aGluZyBmcm9tIGEgcmVjdmZyb20gICovCiAgIGlmIChiaW5kKHNlbmRfc29ja2V0LAogCSAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX3VuLAogCSAgIHNpemVvZihteWFkZHJfdW4pKSA9PSBTT0NLRVRfRVJST1IpIHsKQEAgLTI0MTQsMjMgKzI0MTcsMjMgQEAKICAgICBjbG9zZShzZW5kX3NvY2tldCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsIAorCisgIGlmIChjb25uZWN0KHNlbmRfc29ja2V0LAogCSAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLAogCSAgICAgIHNpemVvZihzZXJ2ZXIpKSA9PSBJTlZBTElEX1NPQ0tFVCApIHsKICAgICBwZXJyb3IoIm5ldHBlcmY6IGRhdGEgc29ja2V0IGNvbm5lY3QgZmFpbGVkIik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgdGhlICovCi0gIC8qIGNvbm5lY3Qgd291bGQgaGF2ZSBmYWlsZWQsIG9yIHRoZSBwcmV2aW91cyByZXNwb25zZSB3b3VsZCBoYXZlICovCi0gIC8qIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlIGV4dHJhICovCi0gIC8qIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsIHdlJ2xsIHNlZSBpdCAqLwotICAvKiBoZXJlLiBJZiBpdCBkaWRuJ3QsIHdlIG1pZ2h0IGFzIHdlbGwgc3RhcnQgcHVtcGluZyBkYXRhLiAqLwotICAKLSAgLyogU2V0LXVwIHRoZSB0ZXN0IGVuZCBjb25kaXRpb25zLiBGb3IgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHRoZXkgKi8KLSAgLyogY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLwotICAKKworICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlcgorICAgICB0aGUgY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkCisgICAgIGhhdmUgaW5kaWNhdGVkIGEgcHJvYmxlbS4gSSBmYWlsZWQgdG8gc2VlIHRoZSB2YWx1ZSBvZiB0aGUgZXh0cmEKKyAgICAgbWVzc2FnZSBhZnRlciB0aGUgYWNjZXB0IG9uIHRoZSByZW1vdGUuIElmIGl0IGZhaWxlZCwgd2UnbGwgc2VlCisgICAgIGl0IGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCisKKyAgLyogU2V0LXVwIHRoZSB0ZXN0IGVuZCBjb25kaXRpb25zLiBGb3IgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHRoZXkKKyAgICAgY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLworCiAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAvKiBUaGUgdXNlciB3YW50ZWQgdG8gZW5kIHRoZSB0ZXN0IGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuICovCiAgICAgdGltZXNfdXAgPSAwOwpAQCAtMjQ0MiwyMSArMjQ0NSwyMiBAQAogICAgIHRyYW5zX3JlbWFpbmluZyA9IHRlc3RfYnl0ZXM7CiAgICAgdGltZXNfdXAgPSAxOwogICB9Ci0gIAotICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5ICovCi0gIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCi0gIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgCisKKyAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseQorICAgICB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdQorICAgICB1dGlsaXphdGlvbiBhbmQvb3Igc2VydmljZSBkZW1hbmQgYW5kIHRocnVwdXQuICovCisKICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7Ci0gIAotICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzICovCi0gIC8qIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiAqLwotICAvKiBXaGVuIHRoZSB0ZXN0IGlzIGNvbnRyb2xsZWQgYnkgYnl0ZSBjb3VudCwgdGhlIHRpbWUgdGVzdCB3aWxsICovCi0gIC8qIGFsd2F5cyByZXR1cm4gZmFsc2UuIFdoZW4gdGhlIHRlc3QgaXMgZmluaXNoZWQsIHRoZSB3aG9sZSAqLwotICAvKiBleHByZXNzaW9uIHdpbGwgZ28gZmFsc2UgYW5kIHdlIHdpbGwgc3RvcCBzZW5kaW5nIGRhdGEuIEkgdGhpbmsgSSAqLwotICAvKiBqdXN0IGFyYml0cmFyaWx5IGRlY3JlbWVudCB0cmFuc19yZW1haW5pbmcgZm9yIHRoZSB0aW1lZCB0ZXN0LCBidXQgKi8KLSAgLyogd2lsbCBub3QgZG8gdGhhdCBqdXN0IHlldC4uLiBPbmUgb3RoZXIgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgKi8KLSAgLyogdGhlIHNlbmQgYnVmZmVyIGFuZCB0aGUgcmVjZWl2ZSBidWZmZXIgc2hvdWxkIGJlIHRoZSBzYW1lIGJ1ZmZlci4gKi8KKworICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzCisgICAgIGNvbnRyb2xsZWQgYnkgdGltZSwgdGhlIGJ5dGUgY291bnQgY2hlY2sgd2lsbCBhbHdheXMgcmV0dXJuCisgICAgIGZhbHNlLiAgV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3QKKyAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiBXaGVuIHRoZSB0ZXN0IGlzIGZpbmlzaGVkLCB0aGUgd2hvbGUKKyAgICAgZXhwcmVzc2lvbiB3aWxsIGdvIGZhbHNlIGFuZCB3ZSB3aWxsIHN0b3Agc2VuZGluZyBkYXRhLiBJIHRoaW5rIEkKKyAgICAganVzdCBhcmJpdHJhcmlseSBkZWNyZW1lbnQgdHJhbnNfcmVtYWluaW5nIGZvciB0aGUgdGltZWQgdGVzdCwKKyAgICAgYnV0IHdpbGwgbm90IGRvIHRoYXQganVzdCB5ZXQuLi4gT25lIG90aGVyIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3IKKyAgICAgbm90IHRoZSBzZW5kIGJ1ZmZlciBhbmQgdGhlIHJlY2VpdmUgYnVmZmVyIHNob3VsZCBiZSB0aGUgc2FtZQorICAgICBidWZmZXIuICovCiAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKICAgICAvKiBzZW5kIHRoZSByZXF1ZXN0ICovCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKQEAgLTI0NzQsOSArMjQ3OCw5IEBACiAgICAgICBwZXJyb3IoInNlbmRfZGdfcnI6IGRhdGEgc2VuZCBlcnJvciIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXNwb25zZS4gd2l0aCBERyB3ZSB3aWxsIGdldCBpdCBhbGwsIG9yIG5vdGhpbmcgKi8KLSAgICAKKwogICAgIGlmKChyc3BfYnl0ZXNfcmVjdmQ9cmVjdihzZW5kX3NvY2tldCwKIAkJCSAgICAgcmVjdl9tZXNzYWdlX3B0ciwKIAkJCSAgICAgcnNwX3NpemUsCkBAIC0yNDkwLDIzICsyNDk0LDIyIEBACiAgICAgfQogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgZ2V0dGltZW9mZGF5KCZyZWN2X3RpbWUsJmR1bW15X3pvbmUpOwotICAgIAorCiAgICAgLyogbm93IHdlIGRvIHNvbWUgYXJpdGhtYXRpYyBvbiB0aGUgdHdvIHRpbWV2YWxzICovCiAgICAgaWYgKHJlY3ZfdGltZS50dl91c2VjIDwgc2VuZF90aW1lLnR2X3VzZWMpIHsKICAgICAgIC8qIHdlIHdyYXBwZWQgYXJvdW5kIGEgc2Vjb25kICovCiAgICAgICByZWN2X3RpbWUudHZfdXNlYyArPSAxMDAwMDAwOwogICAgICAgcmVjdl90aW1lLnR2X3NlYyAgLT0gMTsKICAgICB9Ci0gICAgCisKICAgICAvKiBhbmQgc3RvcmUgaXQgYXdheSAqLwogICAgIGtlcHRfdGltZXNbdGltZV9pbmRleF0gPSAocmVjdl90aW1lLnR2X3NlYyAtIHNlbmRfdGltZS50dl9zZWMpICogMTAwMDAwMDsKICAgICBrZXB0X3RpbWVzW3RpbWVfaW5kZXhdICs9IChyZWN2X3RpbWUudHZfdXNlYyAtIHNlbmRfdGltZS50dl91c2VjKTsKLSAgICAKLSAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSBtYXkgd2lzaCB0byBzbGVlcCBmb3Igc29tZSBwZXJpb2Qgb2YgKi8KLSAgICAvKiB0aW1lLCBzbyB3ZSBzZWUgaG93IGxvbmcgdGhhdCBsYXN0IHRyYW5zYWN0aW9uIGp1c3QgdG9vaywgKi8KLSAgICAvKiBhbmQgc2xlZXAgZm9yIHRoZSBkaWZmZXJlbmNlIG9mIHRoYXQgYW5kIHRoZSBpbnRlcnZhbC4gV2UgKi8KLSAgICAvKiB3aWxsIG5vdCBzbGVlcCBpZiB0aGUgdGltZSB3b3VsZCBiZSBsZXNzIHRoYW4gYSAqLwotICAgIC8qIG1pbGxpc2Vjb25kLiAgKi8KKworICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIG1heSB3aXNoIHRvIHNsZWVwIGZvciBzb21lIHBlcmlvZCBvZiB0aW1lLCBzbworICAgICAgIHdlIHNlZSBob3cgbG9uZyB0aGF0IGxhc3QgdHJhbnNhY3Rpb24ganVzdCB0b29rLCBhbmQgc2xlZXAgZm9yCisgICAgICAgdGhlIGRpZmZlcmVuY2Ugb2YgdGhhdCBhbmQgdGhlIGludGVydmFsLiBXZSB3aWxsIG5vdCBzbGVlcCBpZgorICAgICAgIHRoZSB0aW1lIHdvdWxkIGJlIGxlc3MgdGhhbiBhIG1pbGxpc2Vjb25kLiAgKi8KICAgICBpZiAoaW50ZXJ2YWxfdXNlY3MgPiAwKSB7CiAgICAgICBzbGVlcF91c2VjcyA9IGludGVydmFsX3VzZWNzIC0ga2VwdF90aW1lc1t0aW1lX2luZGV4XTsKICAgICAgIGlmIChzbGVlcF91c2VjcyA+IDEwMDApIHsKQEAgLTI1MjAsNDMgKzI1MjMsNDUgQEAKIAkgICAgICAgJnNsZWVwX3RpbWV2YWwpOwogICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIC8qIG5vdyB1cCB0aGUgdGltZSBpbmRleCAqLwogICAgIHRpbWVfaW5kZXggPSAodGltZV9pbmRleCArMSklTUFYX0tFUFRfVElNRVM7CiAjZW5kaWYKLSAgICBudW1tZXNzYWdlcysrOyAgICAgICAgICAKKyAgICBudW1tZXNzYWdlcysrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZyA+IDMpIHsKICAgICAgIGZwcmludGYod2hlcmUsIlRyYW5zYWN0aW9uICVkIGNvbXBsZXRlZFxuIixudW1tZXNzYWdlcyk7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KLSAgICAKKwogICB9Ci0gIAotICAvKiBUaGUgdGVzdCBpcyBvdmVyLiBGbHVzaCB0aGUgYnVmZmVycyB0byB0aGUgcmVtb3RlIGVuZC4gV2UgZG8gYSAqLwotICAvKiBncmFjZWZ1bCByZWxlYXNlIHRvIGluc3VyZSB0aGF0IGFsbCBkYXRhIGhhcyBiZWVuIHRha2VuIGJ5IHRoZSAqLwotICAvKiByZW1vdGUuIE9mIGNvdXJzZSwgc2luY2UgdGhpcyB3YXMgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHRoZXJlICovCi0gIC8qIHNob3VsZCBiZSBubyBkYXRhIG91dHN0YW5kaW5nIG9uIHRoZSBzb2NrZXQgOy0pICovIAotICAKKworICAvKiBUaGUgdGVzdCBpcyBvdmVyLiBGbHVzaCB0aGUgYnVmZmVycyB0byB0aGUgcmVtb3RlIGVuZC4gV2UgZG8gYQorICAgICBncmFjZWZ1bCByZWxlYXNlIHRvIGluc3VyZSB0aGF0IGFsbCBkYXRhIGhhcyBiZWVuIHRha2VuIGJ5IHRoZQorICAgICByZW1vdGUuIE9mIGNvdXJzZSwgc2luY2UgdGhpcyB3YXMgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHRoZXJlCisgICAgIHNob3VsZCBiZSBubyBkYXRhIG91dHN0YW5kaW5nIG9uIHRoZSBzb2NrZXQgOy0pICovCisKICAgaWYgKHNodXRkb3duKHNlbmRfc29ja2V0LDEpID09IFNPQ0tFVF9FUlJPUikgewogICAgIHBlcnJvcigibmV0cGVyZjogY2Fubm90IHNodXRkb3duIGRnIHN0cmVhbSBzb2NrZXQiKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIHRoaXMgY2FsbCB3aWxsIGFsd2F5cyBnaXZlIHVzIHRoZSBlbGFwc2VkIHRpbWUgZm9yIHRoZSB0ZXN0LCBhbmQgKi8KLSAgLyogd2lsbCBhbHNvIHN0b3JlLWF3YXkgdGhlIG5lY2Vzc2FyaWVzIGZvciBjcHUgdXRpbGl6YXRpb24gKi8KLSAgCi0gIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyBtZWFzdXJlZD8gKi8KLSAgLyogaG93IGxvbmcgZGlkIHdlIHJlYWxseSBydW4/ICovCi0gIAotICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KLSAgLyogY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQgKi8KLSAgLyogd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLwotICAKKworICAvKiB0aGlzIGNhbGwgd2lsbCBhbHdheXMgZ2l2ZSB1cyB0aGUgZWxhcHNlZCB0aW1lIGZvciB0aGUgdGVzdCwgYW5kCisgICAgIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCisKKyAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLCZlbGFwc2VkX3RpbWUpOwkvKiB3YXMgY3B1IGJlaW5nCisJCQkJCQkgICBtZWFzdXJlZD8gaG93IGxvbmcKKwkJCQkJCSAgIGRpZCB3ZSByZWFsbHkKKwkJCQkJCSAgIHJ1bj8gKi8KKworICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUKKyAgICAgY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQKKyAgICAgd2Fzbid0IHN1cHBvc2VkIHRvIGNhcmUsIGl0IHdpbGwgcmV0dXJuIG9idmlvdXMgdmFsdWVzLiAqLworCiAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgIGlmIChkZWJ1ZykKQEAgLTI1NjUsMjggKzI1NzAsMjkgQEAKICAgZWxzZSB7CiAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKLSAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciB0aHJ1cHV0IHdhcyBmb3IgdGhlIHRlc3QuIEluIHRoZSBmdXR1cmUsICovCi0gIC8qIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dCBtZWFzdXJlZCBieSAqLwotICAvKiB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEgREcgc3RyZWFtIHRlc3QsICovCi0gIC8qIHRoYXQgdGhlIHR3byBudW1iZXJzIHNob3VsZCBiZSAqdmVyeSogY2xvc2UuLi4gV2UgY2FsY3VsYXRlICovCi0gIC8qIGJ5dGVzX3NlbnQgcmVnYXJkbGVzcyBvZiB0aGUgd2F5IHRoZSB0ZXN0IGxlbmd0aCB3YXMgY29udHJvbGxlZC4gKi8KLSAgLyogSWYgaXQgd2FzIHRpbWUsIHdlIG5lZWRlZCB0bywgYW5kIGlmIGl0IHdhcyBieSBieXRlcywgdGhlIHVzZXIgbWF5ICovCi0gIC8qIGhhdmUgc3BlY2lmaWVkIGEgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2Fzbid0IGEgbXVsdGlwbGUgb2YgdGhlICovCi0gIC8qIHNlbmRfc2l6ZSwgc28gd2UgcmVhbGx5IGRpZG4ndCBzZW5kIHdoYXQgaGUgYXNrZWQgZm9yIDstKSBXZSB1c2UgKi8KLSAgCisKKyAgLyogV2Ugbm93IGNhbGN1bGF0ZSB3aGF0IG91ciB0aHJ1cHV0IHdhcyBmb3IgdGhlIHRlc3QuIEluIHRoZQorICAgICBmdXR1cmUsIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dAorICAgICBtZWFzdXJlZCBieSB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEgREcKKyAgICAgc3RyZWFtIHRlc3QsIHRoYXQgdGhlIHR3byBudW1iZXJzIHNob3VsZCBiZSAqdmVyeSogY2xvc2UuLi4gV2UKKyAgICAgY2FsY3VsYXRlIGJ5dGVzX3NlbnQgcmVnYXJkbGVzcyBvZiB0aGUgd2F5IHRoZSB0ZXN0IGxlbmd0aCB3YXMKKyAgICAgY29udHJvbGxlZC4gIElmIGl0IHdhcyB0aW1lLCB3ZSBuZWVkZWQgdG8sIGFuZCBpZiBpdCB3YXMgYnkKKyAgICAgYnl0ZXMsIHRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBhIG51bWJlciBvZiBieXRlcyB0aGF0IHdhc24ndAorICAgICBhIG11bHRpcGxlIG9mIHRoZSBzZW5kX3NpemUsIHNvIHdlIHJlYWxseSBkaWRuJ3Qgc2VuZCB3aGF0IGhlCisgICAgIGFza2VkIGZvciA7LSkgV2UgdXNlICovCisKICAgYnl0ZXNfeGZlcmQJPSAocmVxX3NpemUgKiBudW1tZXNzYWdlcykgKyAocnNwX3NpemUgKiBudW1tZXNzYWdlcyk7CiAgIHRocnVwdXQJCT0gY2FsY190aHJ1cHV0KGJ5dGVzX3hmZXJkKTsKLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7Ci0gICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwotICAgIC8qIHV0aWxpemF0aW9uIGZvciB0aGUgc3lzdGVtKHMpICovCi0gICAgLyogT2YgY291cnNlLCBzb21lIG9mIHRoZSBpbmZvcm1hdGlvbiBtaWdodCBiZSBib2d1cyBiZWNhdXNlICovCi0gICAgLyogdGhlcmUgd2FzIG5vIGlkbGUgY291bnRlciBpbiB0aGUga2VybmVsKHMpLiBXZSBuZWVkIHRvIG1ha2UgKi8KLSAgICAvKiBhIG5vdGUgb2YgdGhpcyBmb3IgdGhlIHVzZXIncyBiZW5lZml0Li4uKi8KKyAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1CisgICAgICAgdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgT2YgY291cnNlLCBzb21lIG9mIHRoZQorICAgICAgIGluZm9ybWF0aW9uIG1pZ2h0IGJlIGJvZ3VzIGJlY2F1c2UgdGhlcmUgd2FzIG5vIGlkbGUgY291bnRlciBpbgorICAgICAgIHRoZSBrZXJuZWwocykuIFdlIG5lZWQgdG8gbWFrZSBhIG5vdGUgb2YgdGhpcyBmb3IgdGhlIHVzZXIncworICAgICAgIGJlbmVmaXQuLi4qLwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICAgIGlmIChsb2NhbF9jcHVfcmF0ZSA9PSAwLjApIHsKIAlmcHJpbnRmKHdoZXJlLCJXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAgV0FSTklORyBXQVJOSU5HIFdBUk5JTkcgIFdBUk5JTkchXG4iKTsKQEAgLTI1OTQsOSArMjYwMCw4IEBACiAJZmZsdXNoKHdoZXJlKTsKICAgICAgIH0KICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiA9IGNhbGNfY3B1X3V0aWwoMC4wKTsKLSAgICAgIC8qIHNpbmNlIGNhbGNfc2VydmljZSBkZW1hbmQgaXMgZG9pbmcgbXMvS3VuaXQgd2Ugd2lsbCAqLwotICAgICAgLyogbXVsdGlwbHkgdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbiBieSAxMDI0IHRvIGdldCAqLwotICAgICAgLyogImdvb2QiIG51bWJlcnMgKi8KKyAgICAgIC8qIHNpbmNlIGNhbGNfc2VydmljZSBkZW1hbmQgaXMgZG9pbmcgbXMvS3VuaXQgd2Ugd2lsbCBtdWx0aXBseQorICAgICAgICAgdGhlIG51bWJlciBvZiB0cmFuc2FjdGlvbiBieSAxMDI0IHRvIGdldCAiZ29vZCIgbnVtYmVycyAqLwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQgID0gY2FsY19zZXJ2aWNlX2RlbWFuZCgoZG91YmxlKSBudW1tZXNzYWdlcyoxMDI0LAogCQkJCQkJICAwLjAsCiAJCQkJCQkgIDAuMCwKQEAgLTI2MDYsNyArMjYxMSw3IEBACiAgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAtMS4wOwogICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQJPSAtMS4wOwogICAgIH0KLSAgICAKKwogICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICBpZiAocmVtb3RlX2NwdV9yYXRlID09IDAuMCkgewogCWZwcmludGYod2hlcmUsIkRBTkdFUiAgREFOR0VSICBEQU5HRVIgICAgREFOR0VSICBEQU5HRVIgIERBTkdFUiAgICBEQU5HRVIhXG4iKTsKQEAgLTI2MTQsOSArMjYxOSw4IEBACiAJZmZsdXNoKHdoZXJlKTsKICAgICAgIH0KICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSBkZ19ycl9yZXN1bHQtPmNwdV91dGlsOwotICAgICAgLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsICovCi0gICAgICAvKiBtdWx0aXBseSB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICovCi0gICAgICAvKiAiZ29vZCIgbnVtYmVycyAqLworICAgICAgLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsIG11bHRpcGx5CisgICAgICAgICB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICJnb29kIiBudW1iZXJzICovCiAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgID0gY2FsY19zZXJ2aWNlX2RlbWFuZCgoZG91YmxlKSBudW1tZXNzYWdlcyoxMDI0LAogCQkJCQkJICAgMC4wLAogCQkJCQkJICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKQEAgLTI2MjYsMTYgKzI2MzAsMTYgQEAKICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSAtMS4wOwogICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IC0xLjA7CiAgICAgfQotICAgIAotICAgIC8qIFdlIGFyZSBub3cgcmVhZHkgdG8gcHJpbnQgYWxsIHRoZSBpbmZvcm1hdGlvbi4gSWYgdGhlIHVzZXIgKi8KLSAgICAvKiBoYXMgc3BlY2lmaWVkIHplcm8tbGV2ZWwgdmVyYm9zaXR5LCB3ZSB3aWxsIGp1c3QgcHJpbnQgdGhlICovCi0gICAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLwotICAgIC8qIHVzZXIgaGFzIHJlcXVlc3RlZCB2ZXJib3NpdHkgbGV2ZWwgMSwgaGUgd2lsbCBnZXQgdGhlIGJhc2ljICovCi0gICAgLyogInN0cmVhbXBlcmYiIG51bWJlcnMuIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSB2ZXJib3NpdHkgKi8KLSAgICAvKiBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mICovCi0gICAgLyogYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBmcm9tIG91dHNpZGUgb2YgdGhpcyBibG9jayBhcyBpdCBpdCAqLwotICAgIC8qIG5vdCBjcHVfbWVhc3VyZW1lbnQgc3BlY2lmaWMuLi4gICovCi0gICAgCisKKyAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyIGhhcworICAgICAgIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSBsb2NhbAorICAgICAgIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgdXNlciBoYXMKKyAgICAgICByZXF1ZXN0ZWQgdmVyYm9zaXR5IGxldmVsIDEsIGhlIHdpbGwgZ2V0IHRoZSBiYXNpYyAic3RyZWFtcGVyZiIKKyAgICAgICBudW1iZXJzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgdmVyYm9zaXR5IG9mIGdyZWF0ZXIgdGhhbgorICAgICAgIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiBiYWNrZ3JvdW5kCisgICAgICAgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgbm90CisgICAgICAgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLworCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC0yNjUyLDEyICsyNjU2LDEyIEBACiAgICAgY2FzZSAxOgogICAgIGNhc2UgMjoKICAgICAgIGZwcmludGYod2hlcmUsCi0JICAgICAgY3B1X2ZtdF8xX2xpbmVfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCisJICAgICAgY3B1X2ZtdF8xX2xpbmVfMSwJLyogdGhlIGZvcm1hdCBzdHJpbmcgKi8KIAkgICAgICBsc3Nfc2l6ZSwJCS8qIGxvY2FsIHNlbmRidWYgc2l6ZSAqLwogCSAgICAgIGxzcl9zaXplLAogCSAgICAgIHJlcV9zaXplLAkJLyogaG93IGxhcmdlIHdlcmUgdGhlIHJlcXVlc3RzICovCiAJICAgICAgcnNwX3NpemUsCQkvKiBndWVzcyAqLwotCSAgICAgIGVsYXBzZWRfdGltZSwJCS8qIGhvdyBsb25nIHdhcyB0aGUgdGVzdCAqLworCSAgICAgIGVsYXBzZWRfdGltZSwJLyogaG93IGxvbmcgd2FzIHRoZSB0ZXN0ICovCiAJICAgICAgbnVtbWVzc2FnZXMvZWxhcHNlZF90aW1lLAogCSAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiwJLyogbG9jYWwgY3B1ICovCiAJICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwJLyogcmVtb3RlIGNwdSAqLwpAQCAtMjY5MiwyMyArMjY5NiwyMyBAQAogCSAgICAgIHRwdXRfZm10XzFfbGluZV8yLAogCSAgICAgIHJzc19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KIAkgICAgICByc3Jfc2l6ZSk7Ci0gICAgICAKKwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAotICAvKiBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIHRoZSAqLwotICAvKiBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgZm9yIHRoaXMgdGVzdCwgYnV0IGF0IHRoZSAqLwotICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KLSAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KLSAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCi0gIAorCisgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlCisgICAgIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlCisgICAgIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgZm9ybWF0dGluZywgc28gSSB3aWxsCisgICAgIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nCisgICAgIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLworCiAgIGlmICh2ZXJib3NpdHkgPiAxKSB7Ci0gICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLiAqLwotICAgIC8qIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgKi8KLSAgICAvKiBERyBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzICovCi0gICAgLyogYW5kIGFsbCB0aGF0IHNvcnQgb2Ygcm90Li4uICovCi0gICAgCisgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGtub3cgaXQgYWxsLCBzbyB3ZSB3aWxsIGdpdmUgaXQgdG8gaGltLgorICAgICAgIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgREcKKyAgICAgICBzdGF0aXN0aWNzLCB0aGUgYWxpZ25tZW50cyBvZiB0aGUgc2VuZHMgYW5kIHJlY2VpdmVzIGFuZCBhbGwKKyAgICAgICB0aGF0IHNvcnQgb2Ygcm90Li4uICovCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgIGtlcHRfdGltZXNbTUFYX0tFUFRfVElNRVNdID0gMDsKICAgICB0aW1lX2luZGV4ID0gMDsKQEAgLTI3MjksNjcgKzI3MzMsNjcgQEAKICAgdW5saW5rKG15YWRkcl91bi5zdW5fcGF0aCk7CiB9CiAMCi0gLyogdGhpcyByb3V0aW5lIGltcGxlbWVudHMgdGhlIHJlY2VpdmUgc2lkZSAobmV0c2VydmVyKSBvZiBhIERHX1JSICovCi0gLyogdGVzdC4gKi8KKyAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgcmVjZWl2ZSBzaWRlIChuZXRzZXJ2ZXIpIG9mIGEgREdfUlIKKyAgICB0ZXN0LiAqLwogdm9pZAogcmVjdl9kZ19ycigpCiB7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKIAogICBzdHJ1Y3QJc29ja2FkZHJfdW4gICAgICAgIG15YWRkcl91biwKICAgcGVlcmFkZHJfdW47CiAgIFNPQ0tFVCBzX2RhdGE7Ci0gIGludCAJYWRkcmxlbjsKKyAgbmV0cGVyZl9zb2NrbGVuX3QgYWRkcmxlbjsKICAgaW50CXRyYW5zX3JlY2VpdmVkID0gMDsKICAgaW50CXRyYW5zX3JlbWFpbmluZzsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwotICAKKwogICBzdHJ1Y3QJZGdfcnJfcmVxdWVzdF9zdHJ1Y3QJKmRnX3JyX3JlcXVlc3Q7CiAgIHN0cnVjdAlkZ19ycl9yZXNwb25zZV9zdHJ1Y3QJKmRnX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJZGdfcnJfcmVzdWx0c19zdHJ1Y3QJKmRnX3JyX3Jlc3VsdHM7Ci0gIAotICBkZ19ycl9yZXF1ZXN0ICA9IAorCisgIGRnX3JyX3JlcXVlc3QgID0KICAgICAoc3RydWN0IGRnX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBkZ19ycl9yZXNwb25zZSA9IAorICBkZ19ycl9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCBkZ19ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICBkZ19ycl9yZXN1bHRzICA9IAorICBkZ19ycl9yZXN1bHRzICA9CiAgICAgKHN0cnVjdCBkZ19ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl9kZ19ycjogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KLSAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwotICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwotICAvKiBzZW50IHVzIDAncy4gSWYgdGhlIHNvY2tldCBzaXplcyBjYW5ub3QgYmUgY2hhbmdlZCwgdGhlbiB3ZSB3aWxsICovCi0gIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwotICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCi0gIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKLSAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0ICovCi0gIC8qIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzICovCi0gIC8qIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMgdW5leHBlY3RlZCAqLwotICAvKiByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCisgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkCisgICAgIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYKKyAgICAgc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUKKyAgICAgc2VudCB1cyAwJ3MuIElmIHRoZSBzb2NrZXQgc2l6ZXMgY2Fubm90IGJlIGNoYW5nZWQsIHRoZW4gd2Ugd2lsbAorICAgICBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUKKyAgICAgZGV0ZXJtaW5lZCwgdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28KKyAgICAgd3JvbmcgZm9yIGFueSByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KKworICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQKKyAgICAgd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMKKyAgICAgdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cworICAgICB1bmV4cGVjdGVkIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RnX3JyOiBzZXR0aW5nIHRoZSByZXNwb25zZSB0eXBlLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlID0gREdfUlJfUkVTUE9OU0U7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfcnI6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgLyogV2Ugbm93IGFsdGVyIHRoZSBtZXNzYWdlX3B0ciB2YXJpYWJsZXMgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KLSAgLyogYWxpZ25tZW50cyB3aXRoIHRoZSBkZXNpcmVkIG9mZnNldHMuICovCi0gIAorCisgIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGVzIHRvIGJlIGF0IHRoZSBkZXNpcmVkCisgICAgIGFsaWdubWVudHMgd2l0aCB0aGUgZGVzaXJlZCBvZmZzZXRzLiAqLworCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfcnI6IHJlcXVlc3RlZCByZWN2IGFsaWdubWVudCBvZiAlZCBvZmZzZXQgJWRcbiIsCiAJICAgIGRnX3JyX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50LApAQCAtMjgxNyw0NyArMjgyMSw0NyBAQAogICAgIGZwcmludGYod2hlcmUsInJlY3ZfZGdfcnI6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlICovCi0gIC8qIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzICovCi0gIC8qIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywgKi8KLSAgLyogSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLwotICAKKworICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlCisgICAgIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzCisgICAgIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywKKyAgICAgSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLworCiAgIGJ6ZXJvKChjaGFyICopJm15YWRkcl91biwKIAlzaXplb2YobXlhZGRyX3VuKSk7CiAgIG15YWRkcl91bi5zdW5fZmFtaWx5ICAgICAgPSBBRl9VTklYOwotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X2RnX3JyOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKIAotICAvKiBjcmVhdGVfdW5peF9zb2NrZXQgZXhwZWN0cyB0byBmaW5kIHNvbWUgdGhpbmdzIGluIHRoZSBnbG9iYWwgKi8KLSAgLyogdmFyaWFibGVzLCBzbyBzZXQgdGhlIGdsb2JhbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBpbiB0aGUgcmVxdWVzdC4gKi8KLSAgLyogb25jZSB0aGUgc29ja2V0IGhhcyBiZWVuIGNyZWF0ZWQsIHdlIHdpbGwgc2V0IHRoZSByZXNwb25zZSB2YWx1ZXMgKi8KLSAgLyogYmFzZWQgb24gdGhlIHVwZGF0ZWQgdmFsdWUgb2YgdGhvc2UgZ2xvYmFscy4gcmFqIDcvOTQgKi8KKworICAvKiBjcmVhdGVfdW5peF9zb2NrZXQgZXhwZWN0cyB0byBmaW5kIHNvbWUgdGhpbmdzIGluIHRoZSBnbG9iYWwKKyAgICAgdmFyaWFibGVzLCBzbyBzZXQgdGhlIGdsb2JhbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBpbiB0aGUgcmVxdWVzdC4KKyAgICAgb25jZSB0aGUgc29ja2V0IGhhcyBiZWVuIGNyZWF0ZWQsIHdlIHdpbGwgc2V0IHRoZSByZXNwb25zZSB2YWx1ZXMKKyAgICAgYmFzZWQgb24gdGhlIHVwZGF0ZWQgdmFsdWUgb2YgdGhvc2UgZ2xvYmFscy4gcmFqIDcvOTQgKi8KICAgbHNzX3NpemVfcmVxID0gZGdfcnJfcmVxdWVzdC0+c2VuZF9idWZfc2l6ZTsKICAgbHNyX3NpemVfcmVxID0gZGdfcnJfcmVxdWVzdC0+cmVjdl9idWZfc2l6ZTsKIAogICBzX2RhdGEgPSBjcmVhdGVfdW5peF9zb2NrZXQoQUZfVU5JWCwKIAkJCSAgICAgIFNPQ0tfREdSQU0pOwotICAKKwogICBpZiAoc19kYXRhID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBMZXQncyBnZXQgYW4gYWRkcmVzcyBhc3NpZ25lZCB0byB0aGlzIHNvY2tldCBzbyB3ZSBjYW4gdGVsbCB0aGUgKi8KLSAgLyogaW5pdGlhdG9yIGhvdyB0byByZWFjaCB0aGUgZGF0YSBzb2NrZXQuIFRoZXJlIG1heSBiZSBhIGRlc2lyZSB0byAqLwotICAvKiBuYWlsIHRoaXMgc29ja2V0IHRvIGEgc3BlY2lmaWMgSVAgYWRkcmVzcyBpbiBhIG11bHRpLWhvbWVkLCAqLwotICAvKiBtdWx0aS1jb25uZWN0aW9uIHNpdHVhdGlvbiwgYnV0IGZvciBub3csIHdlJ2xsIGlnbm9yZSB0aGUgaXNzdWUgKi8KLSAgLyogYW5kIGNvbmNlbnRyYXRlIG9uIHNpbmdsZSBjb25uZWN0aW9uIHRlc3RpbmcuICovCi0gIAorCisgIC8qIExldCdzIGdldCBhbiBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoaXMgc29ja2V0IHNvIHdlIGNhbiB0ZWxsIHRoZQorICAgICBpbml0aWF0b3IgaG93IHRvIHJlYWNoIHRoZSBkYXRhIHNvY2tldC4gVGhlcmUgbWF5IGJlIGEgZGVzaXJlIHRvCisgICAgIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsCisgICAgIG11bHRpLWNvbm5lY3Rpb24gc2l0dWF0aW9uLCBidXQgZm9yIG5vdywgd2UnbGwgaWdub3JlIHRoZSBpc3N1ZQorICAgICBhbmQgY29uY2VudHJhdGUgb24gc2luZ2xlIGNvbm5lY3Rpb24gdGVzdGluZy4gKi8KKwogICBzdHJjcHkobXlhZGRyX3VuLnN1bl9wYXRoLHRlbXBuYW0ocGF0aF9wcmVmaXgsIm5ldHBlcmYuIikpOwogICBpZiAoYmluZChzX2RhdGEsCiAJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfdW4sCkBAIC0yODY2LDQyICsyODcwLDQyIEBACiAgICAgdW5saW5rKG15YWRkcl91bi5zdW5fcGF0aCk7CiAgICAgY2xvc2Uoc19kYXRhKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBOb3cgbXlhZGRyX3VuIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCi0gIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwotICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKKworICAvKiBOb3cgbXlhZGRyX3VuIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzCisgICAgIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0CisgICAgIHRoZSBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLworCiAgIHN0cmNweShkZ19ycl9yZXNwb25zZS0+dW5peF9wYXRoLG15YWRkcl91bi5zdW5fcGF0aCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKLSAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywgKi8KLSAgLyogdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbWF4ICovCi0gIC8qIHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUgbWVhc3VyZWQsIG9yICovCi0gIC8qIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsIHJldHVybiBhIDAuMCB0byAqLwotICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKworICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLAorICAgICB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZQorICAgICBtYXggcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZQorICAgICBtZWFzdXJlZCwgb3Igc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwKKyAgICAgcmV0dXJuIGEgMC4wIHRvIHRoZSBpbml0aWF0b3IuICovCisKICAgZGdfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICBpZiAoZGdfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBkZ19ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwogICAgIGRnX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IGNhbGlicmF0ZV9sb2NhbF9jcHUoZGdfcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gICAKLSAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCi0gIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLworCisgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZgorICAgICB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgZGdfcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKICAgZGdfcnJfcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemUgPSBsc3Jfc2l6ZTsKLSAKKwogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAotICAKLSAgLyogTm93IGl0J3MgdGltZSB0byBzdGFydCByZWNlaXZpbmcgZGF0YSBvbiB0aGUgY29ubmVjdGlvbi4gV2Ugd2lsbCAqLwotICAvKiBmaXJzdCBncmFiIHRoZSBhcHJvcHJpYXRlIGNvdW50ZXJzIGFuZCB0aGVuIHN0YXJ0IGdyYWJiaW5nLiAqLwotICAKKworCisgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwKKyAgICAgZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KKwogICBjcHVfc3RhcnQoZGdfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogICBpZiAoZGdfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGggPiAwKSB7CiAgICAgdGltZXNfdXAgPSAwOwogICAgIHRyYW5zX3JlbWFpbmluZyA9IDA7CkBAIC0yOTExLDEyICsyOTE1LDEyIEBACiAgICAgdGltZXNfdXAgPSAxOwogICAgIHRyYW5zX3JlbWFpbmluZyA9IGRnX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoICogLTE7CiAgIH0KLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl91bik7CiAgIGJ6ZXJvKChjaGFyICopJnBlZXJhZGRyX3VuLCBhZGRybGVuKTsKLSAgCisKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewotICAgIAorCiAgICAgLyogcmVjZWl2ZSB0aGUgcmVxdWVzdCBmcm9tIHRoZSBvdGhlciBzaWRlICovCiAgICAgZnByaW50Zih3aGVyZSwic29ja2V0ICVkIHB0ciAlcCBzaXplICVkXG4iLAogCSAgICBzX2RhdGEsCkBAIC0yOTYxLDc1ICsyOTY1LDc1IEBACiAgICAgICBleGl0KDEpOwogICAgIH0KICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7Ci0gICAgCisKICAgICB0cmFuc19yZWNlaXZlZCsrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAicmVjdl9kZ19ycjogVHJhbnNhY3Rpb24gJWQgY29tcGxldGUuXG4iLAogCSAgICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQotICAgIAorCiAgIH0KLSAgCi0gIAotICAvKiBUaGUgbG9vcCBub3cgZXhpdHMgZHVlIHRvIHRpbWVvdXQgb3IgdHJhbnNhY3Rpb24gY291bnQgYmVpbmcgKi8KLSAgLyogcmVhY2hlZCAqLwotICAKKworCisgIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gdGltZW91dCBvciB0cmFuc2FjdGlvbiBjb3VudCBiZWluZworICAgICByZWFjaGVkICovCisKICAgY3B1X3N0b3AoZGdfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIGlmICh0aW1lc191cCkgewotICAgIC8qIHdlIGVuZGVkIHRoZSB0ZXN0IGJ5IHRpbWUsIHdoaWNoIHdhcyBhdCBsZWFzdCAyIHNlY29uZHMgKi8KLSAgICAvKiBsb25nZXIgdGhhbiB3ZSB3YW50ZWQgdG8gcnVuLiBzbywgd2Ugd2FudCB0byBzdWJ0cmFjdCAqLwotICAgIC8qIFBBRF9USU1FIGZyb20gdGhlIGVsYXBzZWRfdGltZS4gKi8KKyAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzIGxvbmdlcgorICAgICAgIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgUEFEX1RJTUUgZnJvbQorICAgICAgIHRoZSBlbGFwc2VkX3RpbWUuICovCiAgICAgZWxhcHNlZF90aW1lIC09IFBBRF9USU1FOwogICB9CiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X2RnX3JyOiBnb3QgJWQgdHJhbnNhY3Rpb25zXG4iLAogCSAgICB0cmFuc19yZWNlaXZlZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgZGdfcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKiAKLQkJCQkJICAgKGRnX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArIAorCisgIGRnX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gKHRyYW5zX3JlY2VpdmVkICoKKwkJCQkJICAgKGRnX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArCiAJCQkJCSAgICBkZ19ycl9yZXF1ZXN0LT5yZXNwb25zZV9zaXplKSk7CiAgIGRnX3JyX3Jlc3VsdHMtPnRyYW5zX3JlY2VpdmVkCT0gdHJhbnNfcmVjZWl2ZWQ7CiAgIGRnX3JyX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQk9IGVsYXBzZWRfdGltZTsKICAgaWYgKGRnX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgZGdfcnJfcmVzdWx0cy0+Y3B1X3V0aWwJPSBjYWxjX2NwdV91dGlsKGVsYXBzZWRfdGltZSk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfZGdfcnI6IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwogICB1bmxpbmsobXlhZGRyX3VuLnN1bl9wYXRoKTsKLSAgCisKIH0KLSAvKiB0aGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgcmVjZWl2ZSAobmV0c2VydmVyKSBzaWRlIG9mIGEgU1RSRUFNX1JSICovCi0gLyogdGVzdCAqLworIC8qIHRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSByZWNlaXZlIChuZXRzZXJ2ZXIpIHNpZGUgb2YgYQorICAgIFNUUkVBTV9SUiB0ZXN0ICovCiAMCiB2b2lkCiByZWN2X3N0cmVhbV9ycigpCiB7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqc2VuZF9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnJlY3ZfcmluZzsKIAogICBzdHJ1Y3QJc29ja2FkZHJfdW4gICAgICAgIG15YWRkcl91biwKICAgcGVlcmFkZHJfdW47CiAgIFNPQ0tFVCBzX2xpc3RlbixzX2RhdGE7Ci0gIGludCAJYWRkcmxlbjsKKyAgbmV0cGVyZl9zb2NrbGVuX3QgYWRkcmxlbjsKICAgY2hhcgkqdGVtcF9tZXNzYWdlX3B0cjsKICAgaW50CXRyYW5zX3JlY2VpdmVkID0gMDsKICAgaW50CXRyYW5zX3JlbWFpbmluZzsKQEAgLTMwMzgsNTAgKzMwNDIsNTAgQEAKICAgaW50CXJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nOwogICBpbnQJdGltZWRfb3V0ID0gMDsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwotICAKKwogICBzdHJ1Y3QJc3RyZWFtX3JyX3JlcXVlc3Rfc3RydWN0CSpzdHJlYW1fcnJfcmVxdWVzdDsKICAgc3RydWN0CXN0cmVhbV9ycl9yZXNwb25zZV9zdHJ1Y3QJKnN0cmVhbV9ycl9yZXNwb25zZTsKICAgc3RydWN0CXN0cmVhbV9ycl9yZXN1bHRzX3N0cnVjdAkqc3RyZWFtX3JyX3Jlc3VsdHM7Ci0gIAotICBzdHJlYW1fcnJfcmVxdWVzdCA9IAorCisgIHN0cmVhbV9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHN0cmVhbV9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgc3RyZWFtX3JyX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IHN0cmVhbV9ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICBzdHJlYW1fcnJfcmVzdWx0cyA9CiAgICAgKHN0cnVjdCBzdHJlYW1fcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3Zfc3RyZWFtX3JyOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwotICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCi0gIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCi0gIC8qIHNlbnQgdXMgMCdzLiBJZiB0aGUgc29ja2V0IHNpemVzIGNhbm5vdCBiZSBjaGFuZ2VkLCB0aGVuIHdlIHdpbGwgKi8KLSAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCi0gIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KLSAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAotICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KLSAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KLSAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCi0gIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKKyAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQKKyAgICAgcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZgorICAgICBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZQorICAgICBzZW50IHVzIDAncy4gSWYgdGhlIHNvY2tldCBzaXplcyBjYW5ub3QgYmUgY2hhbmdlZCwgdGhlbiB3ZSB3aWxsCisgICAgIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZQorICAgICBkZXRlcm1pbmVkLCB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbworICAgICB3cm9uZyBmb3IgYW55IHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLworCisgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdAorICAgICB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcworICAgICB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzCisgICAgIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLworCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc3RyZWFtX3JyOiBzZXR0aW5nIHRoZSByZXNwb25zZSB0eXBlLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5yZXNwb25zZV90eXBlID0gU1RSRUFNX1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3N0cmVhbV9ycjogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBhbGxvY2F0ZSB0aGUgcmVjdiBhbmQgc2VuZCByaW5ncyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50cyAqLwotICAvKiBhbmQgb2Zmc2V0cy4gcmFqIDcvOTQgKi8KKworICAvKiBhbGxvY2F0ZSB0aGUgcmVjdiBhbmQgc2VuZCByaW5ncyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50cworICAgICBhbmQgb2Zmc2V0cy4gcmFqIDcvOTQgKi8KICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9zdHJlYW1fcnI6IHJlcXVlc3RlZCByZWN2IGFsaWdubWVudCBvZiAlZCBvZmZzZXQgJWRcbiIsCiAJICAgIHN0cmVhbV9ycl9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCwKQEAgLTMxMDYsNDYgKzMxMTAsNDYgQEAKIAkJCQkgICBzdHJlYW1fcnJfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsCiAJCQkJICAgc3RyZWFtX3JyX3JlcXVlc3QtPnJlY3Zfb2Zmc2V0KTsKIAotICAKLSAgLyogTGV0J3MgY2xlYXItb3V0IG91ciBzb2NrYWRkciBmb3IgdGhlIHNha2Ugb2YgY2xlYW5saW5lcy4gVGhlbiB3ZSAqLwotICAvKiBjYW4gcHV0IGluIE9VUiB2YWx1ZXMgIS0pIEF0IHNvbWUgcG9pbnQsIHdlIG1heSB3YW50IHRvIG5haWwgdGhpcyAqLwotICAvKiBzb2NrZXQgdG8gYSBwYXJ0aWN1bGFyIG5ldHdvcmstbGV2ZWwgYWRkcmVzcywgYnV0IGZvciBub3csICovCi0gIC8qIElOQUREUl9BTlkgc2hvdWxkIGJlIGp1c3QgZmluZS4gKi8KLSAgCisKKyAgLyogTGV0J3MgY2xlYXItb3V0IG91ciBzb2NrYWRkciBmb3IgdGhlIHNha2Ugb2YgY2xlYW5saW5lcy4gVGhlbiB3ZQorICAgICBjYW4gcHV0IGluIE9VUiB2YWx1ZXMgIS0pIEF0IHNvbWUgcG9pbnQsIHdlIG1heSB3YW50IHRvIG5haWwgdGhpcworICAgICBzb2NrZXQgdG8gYSBwYXJ0aWN1bGFyIG5ldHdvcmstbGV2ZWwgYWRkcmVzcywgYnV0IGZvciBub3csCisgICAgIElOQUREUl9BTlkgc2hvdWxkIGJlIGp1c3QgZmluZS4gKi8KKwogICBiemVybygoY2hhciAqKSZteWFkZHJfdW4sCiAJc2l6ZW9mKG15YWRkcl91bikpOwogICBteWFkZHJfdW4uc3VuX2ZhbWlseSAgICAgID0gQUZfVU5JWDsKLSAgCisKICAgLyogR3JhYiBhIHNvY2tldCB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl9zdHJlYW1fcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKLSAgLyogY3JlYXRlX3VuaXhfc29ja2V0IGV4cGVjdHMgdG8gZmluZCBzb21lIHRoaW5ncyBpbiB0aGUgZ2xvYmFsICovCi0gIC8qIHZhcmlhYmxlcywgc28gc2V0IHRoZSBnbG9iYWxzIGJhc2VkIG9uIHRoZSB2YWx1ZXMgaW4gdGhlIHJlcXVlc3QuICovCi0gIC8qIG9uY2UgdGhlIHNvY2tldCBoYXMgYmVlbiBjcmVhdGVkLCB3ZSB3aWxsIHNldCB0aGUgcmVzcG9uc2UgdmFsdWVzICovCi0gIC8qIGJhc2VkIG9uIHRoZSB1cGRhdGVkIHZhbHVlIG9mIHRob3NlIGdsb2JhbHMuIHJhaiA3Lzk0ICovCisgIC8qIGNyZWF0ZV91bml4X3NvY2tldCBleHBlY3RzIHRvIGZpbmQgc29tZSB0aGluZ3MgaW4gdGhlIGdsb2JhbAorICAgICB2YXJpYWJsZXMsIHNvIHNldCB0aGUgZ2xvYmFscyBiYXNlZCBvbiB0aGUgdmFsdWVzIGluIHRoZSByZXF1ZXN0LgorICAgICBvbmNlIHRoZSBzb2NrZXQgaGFzIGJlZW4gY3JlYXRlZCwgd2Ugd2lsbCBzZXQgdGhlIHJlc3BvbnNlIHZhbHVlcworICAgICBiYXNlZCBvbiB0aGUgdXBkYXRlZCB2YWx1ZSBvZiB0aG9zZSBnbG9iYWxzLiByYWogNy85NCAqLwogICBsc3Nfc2l6ZV9yZXEgPSBzdHJlYW1fcnJfcmVxdWVzdC0+c2VuZF9idWZfc2l6ZTsKICAgbHNyX3NpemVfcmVxID0gc3RyZWFtX3JyX3JlcXVlc3QtPnJlY3ZfYnVmX3NpemU7Ci0gIAorCiAgIHNfbGlzdGVuID0gY3JlYXRlX3VuaXhfc29ja2V0KEFGX1VOSVgsCiAJCQkJU09DS19TVFJFQU0pOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCi0gIC8qIExldCdzIGdldCBhbiBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoaXMgc29ja2V0IHNvIHdlIGNhbiB0ZWxsIHRoZSAqLwotICAvKiBpbml0aWF0b3IgaG93IHRvIHJlYWNoIHRoZSBkYXRhIHNvY2tldC4gVGhlcmUgbWF5IGJlIGEgZGVzaXJlIHRvICovCi0gIC8qIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsICovCi0gIC8qIG11bHRpLWNvbm5lY3Rpb24gc2l0dWF0aW9uLCBidXQgZm9yIG5vdywgd2UnbGwgaWdub3JlIHRoZSBpc3N1ZSAqLwotICAvKiBhbmQgY29uY2VudHJhdGUgb24gc2luZ2xlIGNvbm5lY3Rpb24gdGVzdGluZy4gKi8KLSAgCisKKyAgLyogTGV0J3MgZ2V0IGFuIGFkZHJlc3MgYXNzaWduZWQgdG8gdGhpcyBzb2NrZXQgc28gd2UgY2FuIHRlbGwgdGhlCisgICAgIGluaXRpYXRvciBob3cgdG8gcmVhY2ggdGhlIGRhdGEgc29ja2V0LiBUaGVyZSBtYXkgYmUgYSBkZXNpcmUgdG8KKyAgICAgbmFpbCB0aGlzIHNvY2tldCB0byBhIHNwZWNpZmljIElQIGFkZHJlc3MgaW4gYSBtdWx0aS1ob21lZCwKKyAgICAgbXVsdGktY29ubmVjdGlvbiBzaXR1YXRpb24sIGJ1dCBmb3Igbm93LCB3ZSdsbCBpZ25vcmUgdGhlIGlzc3VlCisgICAgIGFuZCBjb25jZW50cmF0ZSBvbiBzaW5nbGUgY29ubmVjdGlvbiB0ZXN0aW5nLiAqLworCiAgIHN0cmNweShteWFkZHJfdW4uc3VuX3BhdGgsdGVtcG5hbShwYXRoX3ByZWZpeCwibmV0cGVyZi4iKSk7CiAgIGlmIChiaW5kKHNfbGlzdGVuLAogCSAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXlhZGRyX3VuLApAQCAtMzE1NCw3MCArMzE1OCw3MCBAQAogICAgIHVubGluayhteWFkZHJfdW4uc3VuX3BhdGgpOwogICAgIGNsb3NlKHNfbGlzdGVuKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIE5vdywgbGV0J3Mgc2V0LXVwIHRoZSBzb2NrZXQgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyAqLwogICBpZiAobGlzdGVuKHNfbGlzdGVuLCA1KSA9PSBTT0NLRVRfRVJST1IpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIGNsb3NlKHNfbGlzdGVuKTsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICAvKiBOb3cgbXlhZGRyX3VuIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCi0gIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwotICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKKworICAvKiBOb3cgbXlhZGRyX3VuIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzCisgICAgIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0CisgICAgIHRoZSBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLworCiAgIHN0cmNweShzdHJlYW1fcnJfcmVzcG9uc2UtPnVuaXhfcGF0aCxteWFkZHJfdW4uc3VuX3BhdGgpOwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyAgID0gMDsKLSAgCi0gIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCi0gIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwotICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwotICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAwLjAgdG8gKi8KLSAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKKyAgLyogQnV0IHdhaXQsIHRoZXJlJ3MgbW9yZS4gSWYgdGhlIGluaXRpYXRvciB3YW50ZWQgY3B1IG1lYXN1cmVtZW50cywKKyAgICAgdGhlbiB3ZSBtdXN0IGNhbGwgdGhlIGNhbGlicmF0ZSByb3V0aW5lLCB3aGljaCB3aWxsIHJldHVybiB0aGUKKyAgICAgbWF4IHJhdGUgYmFjayB0byB0aGUgaW5pdGlhdG9yLiBJZiB0aGUgQ1BVIHdhcyBub3QgdG8gYmUKKyAgICAgbWVhc3VyZWQsIG9yIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGNhbGlicmF0aW9uLCB3ZSB3aWxsCisgICAgIHJldHVybiBhIDAuMCB0byB0aGUgaW5pdGlhdG9yLiAqLworCiAgIHN0cmVhbV9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSAwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmIChzdHJlYW1fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICBzdHJlYW1fcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKICAgICBzdHJlYW1fcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShzdHJlYW1fcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gIAotICAKLSAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mICovCi0gIC8qIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLworCisKKyAgLyogYmVmb3JlIHdlIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIGluaXRpYXRvciwgcHVsbCBzb21lIG9mCisgICAgIHRoZSBzb2NrZXQgcGFybXMgZnJvbSB0aGUgZ2xvYmFscyAqLwogICBzdHJlYW1fcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKICAgc3RyZWFtX3JyX3Jlc3BvbnNlLT5yZWN2X2J1Zl9zaXplID0gbHNyX3NpemU7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICBhZGRybGVuID0gc2l6ZW9mKHBlZXJhZGRyX3VuKTsKLSAgCisKICAgaWYgKChzX2RhdGEgPSBhY2NlcHQoc19saXN0ZW4sCiAJCSAgICAgICAoc3RydWN0IHNvY2thZGRyICopJnBlZXJhZGRyX3VuLAogCQkgICAgICAgJmFkZHJsZW4pKSA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIC8qIExldCdzIGp1c3QgcHVudC4gVGhlIHJlbW90ZSB3aWxsIGJlIGdpdmVuIHNvbWUgaW5mb3JtYXRpb24gKi8KICAgICBjbG9zZShzX2xpc3Rlbik7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3Zfc3RyZWFtX3JyOiBhY2NlcHQgY29tcGxldGVzIG9uIHRoZSBkYXRhIGNvbm5lY3Rpb24uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCi0gIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCisgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwKKyAgICAgZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KKwogICBjcHVfc3RhcnQoc3RyZWFtX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCi0gIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHNodXRkb3duLCB3aGljaCB3aWxsICovCi0gIC8qIHJldHVybiBhIGxlbmd0aCBvZiB6ZXJvICAgKi8KLSAgCisKKyAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHNlbmRlciBkb2VzIGEgc2h1dGRvd24sIHdoaWNoIHdpbGwKKyAgICAgcmV0dXJuIGEgbGVuZ3RoIG9mIHplcm8gICovCisKICAgaWYgKHN0cmVhbV9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTMyMjcsMTEgKzMyMzEsMTEgQEAKICAgICB0aW1lc191cCA9IDE7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gc3RyZWFtX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoICogLTE7CiAgIH0KLSAgCisKICAgd2hpbGUgKCghdGltZXNfdXApIHx8ICh0cmFuc19yZW1haW5pbmcgPiAwKSkgewogICAgIHRlbXBfbWVzc2FnZV9wdHIgPSByZWN2X3JpbmctPmJ1ZmZlcl9wdHI7CiAgICAgcmVxdWVzdF9ieXRlc19yZW1haW5pbmcJPSBzdHJlYW1fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplOwotICAgIAorCiAgICAgLyogcmVjZWl2ZSB0aGUgcmVxdWVzdCBmcm9tIHRoZSBvdGhlciBzaWRlICovCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJhYm91dCB0byByZWNlaXZlIGZvciB0cmFucyAlZFxuIix0cmFuc19yZWNlaXZlZCk7CkBAIC0zMjY1LDEzICszMjY5LDEzIEBACiAgICAgcmVjdl9yaW5nID0gcmVjdl9yaW5nLT5uZXh0OwogCiAgICAgaWYgKHRpbWVkX291dCkgewotICAgICAgLyogd2UgaGl0IHRoZSBlbmQgb2YgdGhlIHRlc3QgYmFzZWQgb24gdGltZSAtIGxldHMgKi8KLSAgICAgIC8qIGJhaWwgb3V0IG9mIGhlcmUgbm93Li4uICovCisgICAgICAvKiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBiYXNlZCBvbiB0aW1lIC0gbGV0cworICAgICAgICAgYmFpbCBvdXQgb2YgaGVyZSBub3cuLi4gKi8KICAgICAgIGZwcmludGYod2hlcmUsInlvNVxuIik7Ci0gICAgICBmZmx1c2god2hlcmUpOwkJCQkJCQorICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKwogICAgIC8qIE5vdywgc2VuZCB0aGUgcmVzcG9uc2UgdG8gdGhlIHJlbW90ZSAqLwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwiYWJvdXQgdG8gc2VuZCBmb3IgdHJhbnMgJWRcbiIsdHJhbnNfcmVjZWl2ZWQpOwpAQCAtMzI4NSwyMSArMzI4OSwyMSBAQAogCS8qIHRoZSB0ZXN0IHRpbWVyIGhhcyBwb3BwZWQgKi8KIAl0aW1lZF9vdXQgPSAxOwogCWZwcmludGYod2hlcmUsInlvNlxuIik7Ci0JZmZsdXNoKHdoZXJlKTsJCQkJCQkKKwlmZmx1c2god2hlcmUpOwogCWJyZWFrOwogICAgICAgfQogICAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSA5OTc7CiAgICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKIAogICAgIHRyYW5zX3JlY2VpdmVkKys7CiAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogICAgICAgdHJhbnNfcmVtYWluaW5nLS07CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAgICJyZWN2X3N0cmVhbV9ycjogVHJhbnNhY3Rpb24gJWQgY29tcGxldGVcbiIsCkBAIC0zMzA3LDQzICszMzExLDQzIEBACiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KICAgfQotICAKLSAgCi0gIC8qIFRoZSBsb29wIG5vdyBleGl0cyBkdWUgdG8gdGltZW91dCBvciB0cmFuc2FjdGlvbiBjb3VudCBiZWluZyAqLwotICAvKiByZWFjaGVkICovCi0gIAorCisKKyAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHRyYW5zYWN0aW9uIGNvdW50IGJlaW5nCisgICAgIHJlYWNoZWQgKi8KKwogICBjcHVfc3RvcChzdHJlYW1fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIGlmICh0aW1lZF9vdXQpIHsKLSAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzICovCi0gICAgLyogbG9uZ2VyIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgKi8KLSAgICAvKiBQQURfVElNRSBmcm9tIHRoZSBlbGFwc2VkX3RpbWUuICovCisgICAgLyogd2UgZW5kZWQgdGhlIHRlc3QgYnkgdGltZSwgd2hpY2ggd2FzIGF0IGxlYXN0IDIgc2Vjb25kcyBsb25nZXIKKyAgICAgICB0aGFuIHdlIHdhbnRlZCB0byBydW4uIHNvLCB3ZSB3YW50IHRvIHN1YnRyYWN0IFBBRF9USU1FIGZyb20KKyAgICAgICB0aGUgZWxhcHNlZF90aW1lLiAqLwogICAgIGVsYXBzZWRfdGltZSAtPSBQQURfVElNRTsKICAgfQogICAvKiBzZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBzZW5kZXIJCQkqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9zdHJlYW1fcnI6IGdvdCAlZCB0cmFuc2FjdGlvbnNcbiIsCiAJICAgIHRyYW5zX3JlY2VpdmVkKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAotICBzdHJlYW1fcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKiAKLQkJCQkJICAgKHN0cmVhbV9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemUgKyAKKworICBzdHJlYW1fcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSAodHJhbnNfcmVjZWl2ZWQgKgorCQkJCQkgICAoc3RyZWFtX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArCiAJCQkJCSAgICBzdHJlYW1fcnJfcmVxdWVzdC0+cmVzcG9uc2Vfc2l6ZSkpOwogICBzdHJlYW1fcnJfcmVzdWx0cy0+dHJhbnNfcmVjZWl2ZWQJPSB0cmFuc19yZWNlaXZlZDsKICAgc3RyZWFtX3JyX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQk9IGVsYXBzZWRfdGltZTsKICAgaWYgKHN0cmVhbV9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSkgewogICAgIHN0cmVhbV9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl9zdHJlYW1fcnI6IHRlc3QgY29tcGxldGUsIHNlbmRpbmcgcmVzdWx0cy5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgc2VuZF9yZXNwb25zZSgpOwogICB1bmxpbmsobXlhZGRyX3VuLnN1bl9wYXRoKTsKIH0KQEAgLTMzNjEsMTMgKzMzNjUsMTMgQEAKIHsKICNkZWZpbmUgVU5JWF9BUkdTICJobTpNOnA6cjpzOlM6IgogICBleHRlcm4gY2hhcgkqb3B0YXJnOwkgIC8qIHBvaW50ZXIgdG8gb3B0aW9uIHN0cmluZwkqLwotICAKKwogICBpbnQJCWM7Ci0gIAotICBjaGFyCQorCisgIGNoYXIKICAgICBhcmcxW0JVRlNJWl0sICAvKiBhcmd1bWVudCBob2xkZXJzCQkqLwogICAgIGFyZzJbQlVGU0laXTsKLSAgCisKICAgaW5pdF90ZXN0X3ZhcnMoKTsKIAogICBpZiAobm9fY29udHJvbCkgewpAQCAtMzM3Niw1NiArMzM4MCw1NiBAQAogICAgIGV4aXQoLTEpOwogICB9CiAKLSAgLyogR28gdGhyb3VnaCBhbGwgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYW5kIGJyZWFrIHRoZW0gKi8KLSAgLyogb3V0LiBGb3IgdGhvc2Ugb3B0aW9ucyB0aGF0IHRha2UgdHdvIHBhcm1zLCBzcGVjaWZ5aW5nIG9ubHkgKi8KLSAgLyogdGhlIGZpcnN0IHdpbGwgc2V0IGJvdGggdG8gdGhhdCB2YWx1ZS4gU3BlY2lmeWluZyBvbmx5IHRoZSAqLwotICAvKiBzZWNvbmQgd2lsbCBsZWF2ZSB0aGUgZmlyc3QgdW50b3VjaGVkLiBUbyBjaGFuZ2Ugb25seSB0aGUgKi8KLSAgLyogZmlyc3QsIHVzZSB0aGUgZm9ybSAiZmlyc3QsIiAoc2VlIHRoZSByb3V0aW5lIGJyZWFrX2FyZ3MuLiAqLwotICAKKyAgLyogR28gdGhyb3VnaCBhbGwgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYW5kIGJyZWFrIHRoZW0gb3V0LiBGb3IKKyAgICAgdGhvc2Ugb3B0aW9ucyB0aGF0IHRha2UgdHdvIHBhcm1zLCBzcGVjaWZ5aW5nIG9ubHkgdGhlIGZpcnN0IHdpbGwKKyAgICAgc2V0IGJvdGggdG8gdGhhdCB2YWx1ZS4gU3BlY2lmeWluZyBvbmx5IHRoZSBzZWNvbmQgd2lsbCBsZWF2ZSB0aGUKKyAgICAgZmlyc3QgdW50b3VjaGVkLiBUbyBjaGFuZ2Ugb25seSB0aGUgZmlyc3QsIHVzZSB0aGUgZm9ybSAiZmlyc3QsIgorICAgICAoc2VlIHRoZSByb3V0aW5lIGJyZWFrX2FyZ3MuLiAqLworCiAgIHdoaWxlICgoYz0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFVOSVhfQVJHUykpICE9IEVPRikgewogICAgIHN3aXRjaCAoYykgewotICAgIGNhc2UgJz8nOgkKKyAgICBjYXNlICc/JzoKICAgICBjYXNlICdoJzoKICAgICAgIHByaW50X3VuaXhfdXNhZ2UoKTsKICAgICAgIGV4aXQoMSk7CiAgICAgY2FzZSAncCc6Ci0gICAgICAvKiBzZXQgdGhlIHBhdGggcHJlZml4IChkaXJlY3RvcnkpIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSAqLwotICAgICAgLyogcGlwZXMuIGF0IHNvbWUgcG9pbnQsIHRoZXJlIHNob3VsZCBiZSBzb21lIGVycm9yIGNoZWNraW5nLiAqLworICAgICAgLyogc2V0IHRoZSBwYXRoIHByZWZpeCAoZGlyZWN0b3J5KSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUKKyAgICAgICAgIHBpcGVzLiBhdCBzb21lIHBvaW50LCB0aGVyZSBzaG91bGQgYmUgc29tZSBlcnJvciBjaGVja2luZy4gKi8KICAgICAgIHN0cmNweShwYXRoX3ByZWZpeCxvcHRhcmcpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAncyc6CiAgICAgICAvKiBzZXQgbG9jYWwgc29ja2V0IHNpemVzICovCiAgICAgICBicmVha19hcmdzKG9wdGFyZyxhcmcxLGFyZzIpOwogICAgICAgaWYgKGFyZzFbMF0pCi0JbHNzX3NpemVfcmVxID0gYXRvaShhcmcxKTsKKwlsc3Nfc2l6ZV9yZXEgPSBjb252ZXJ0KGFyZzEpOwogICAgICAgaWYgKGFyZzJbMF0pCi0JbHNyX3NpemVfcmVxID0gYXRvaShhcmcyKTsKKwlsc3Jfc2l6ZV9yZXEgPSBjb252ZXJ0KGFyZzIpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUyc6CiAgICAgICAvKiBzZXQgcmVtb3RlIHNvY2tldCBzaXplcyAqLwogICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKICAgICAgIGlmIChhcmcxWzBdKQotCXJzc19zaXplID0gYXRvaShhcmcxKTsKKwlyc3Nfc2l6ZSA9IGNvbnZlcnQoYXJnMSk7CiAgICAgICBpZiAoYXJnMlswXSkKLQlyc3Jfc2l6ZSA9IGF0b2koYXJnMik7CisJcnNyX3NpemUgPSBjb252ZXJ0KGFyZzIpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAncic6CiAgICAgICAvKiBzZXQgdGhlIHJlcXVlc3QvcmVzcG9uc2Ugc2l6ZXMgKi8KICAgICAgIGJyZWFrX2FyZ3Mob3B0YXJnLGFyZzEsYXJnMik7CiAgICAgICBpZiAoYXJnMVswXSkKLQlyZXFfc2l6ZSA9IGF0b2koYXJnMSk7Ci0gICAgICBpZiAoYXJnMlswXSkJCi0JcnNwX3NpemUgPSBhdG9pKGFyZzIpOworCXJlcV9zaXplID0gY29udmVydChhcmcxKTsKKyAgICAgIGlmIChhcmcyWzBdKQorCXJzcF9zaXplID0gY29udmVydChhcmcyKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ20nOgogICAgICAgLyogc2V0IHRoZSBzZW5kIHNpemUgKi8KLSAgICAgIHNlbmRfc2l6ZSA9IGF0b2kob3B0YXJnKTsKKyAgICAgIHNlbmRfc2l6ZSA9IGNvbnZlcnQob3B0YXJnKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ00nOgogICAgICAgLyogc2V0IHRoZSByZWN2IHNpemUgKi8KLSAgICAgIHJlY3Zfc2l6ZSA9IGF0b2kob3B0YXJnKTsKKyAgICAgIHJlY3Zfc2l6ZSA9IGNvbnZlcnQob3B0YXJnKTsKICAgICAgIGJyZWFrOwogICAgIH07CiAgIH0KIH0KLSNlbmRpZiAvKiBXQU5UX1VOSVggKi8gCisjZW5kaWYgLyogV0FOVF9VTklYICovCmRpZmYgLS1naXQgYS9uZXR0ZXN0X3VuaXguaCBiL3NyYy9uZXR0ZXN0X3VuaXguaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbmV0dGVzdF91bml4LmgKcmVuYW1lIHRvIHNyYy9uZXR0ZXN0X3VuaXguaApkaWZmIC0tZ2l0IGEvbmV0dGVzdF94dGkuYyBiL3NyYy9uZXR0ZXN0X3h0aS5jCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIG5ldHRlc3RfeHRpLmMKcmVuYW1lIHRvIHNyYy9uZXR0ZXN0X3h0aS5jCmluZGV4IDlkMjdmMjUuLjlhZmM5NjEgMTAwNjQ0Ci0tLSBhL25ldHRlc3RfeHRpLmMKKysrIGIvc3JjL25ldHRlc3RfeHRpLmMKQEAgLTUsMTIgKzUsMTcgQEAKICNpZmRlZiBXQU5UX1hUSQogI2lmbmRlZiBsaW50CiBjaGFyCW5ldHRlc3RfeHRpX2lkW109IlwKLUAoIyluZXR0ZXN0X3h0aS5jIChjKSBDb3B5cmlnaHQgMTk5NS0yMDA3IEhld2xldHQtUGFja2FyZCBDby4gVmVyc2lvbiAyLjQuMyI7CitAKCMpbmV0dGVzdF94dGkuYyAoYykgQ29weXJpZ2h0IDE5OTUtMjAxMiBIZXdsZXR0LVBhY2thcmQgQ28uIFZlcnNpb24gMi42LjAiOwogI2Vsc2UKICNkZWZpbmUgRElSVFkKICNkZWZpbmUgV0FOVF9ISVNUT0dSQU0KICNkZWZpbmUgV0FOVF9JTlRFUlZBTFMKICNlbmRpZiAvKiBsaW50ICovCisKKyNpZmRlZiBXSU4zMgorI2Vycm9yIFhUSSBJbnRlcmZhY2UgdGVzdHMgYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIgV2luZG93cworI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoJCQkJCQkJCSovCiAvKgluZXR0ZXN0X3h0aS5jCQkJCQkJKi8KQEAgLTM2LDIyICs0MSwxNiBAQAogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgPGNvbmZpZy5oPgotI2VuZGlmIAorI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxmY250bC5oPgotI2lmbmRlZiBXSU4zMgogI2luY2x1ZGUgPHN5cy9pcGMuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPG5ldGRiLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KLSNlbHNlIC8qIFdJTjMyICovCi0jaW5jbHVkZSA8cHJvY2Vzcy5oPgotI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmIC8qIFdJTjMyICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC03Niw3ICs3NSw3IEBACiAgLyogdGhlc2UgdmFyaWFibGVzIGFyZSBzcGVjaWZpYyB0byB0aGUgWFRJIHNvY2tldHMgdGVzdHMuIGRlY2xhcmUgKi8KICAvKiB0aGVtIHN0YXRpYyB0byBtYWtlIHRoZW0gZ2xvYmFsIG9ubHkgdG8gdGhpcyBmaWxlLiAqLwogCi1zdGF0aWMgaW50CQorc3RhdGljIGludAogICByc3Nfc2l6ZSwJCS8qIHJlbW90ZSBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZQkqLwogICByc3Jfc2l6ZSwJCS8qIHJlbW90ZSBzb2NrZXQgcmVjdiBidWZmZXIgc2l6ZQkqLwogICBsc3Nfc2l6ZSwJCS8qIGxvY2FsICBzb2NrZXQgc2VuZCBidWZmZXIgc2l6ZSAJKi8KQEAgLTEzNyw4ICsxMzYsOCBAQAogdmFsdWUsIHNwZWNpZnlpbmcgYSB2YWx1ZSB3aXRoIGEgbGVhZGluZyBjb21tYSB3aWxsIHNldCBqdXN0IHRoZSBzZWNvbmRcblwKIHBhcm0sIGEgdmFsdWUgd2l0aCBhIHRyYWlsaW5nIGNvbW1hIHdpbGwgc2V0IGp1c3QgdGhlIGZpcnN0LiBUbyBzZXRcblwKIGVhY2ggcGFybSB0byB1bmlxdWUgdmFsdWVzLCBzcGVjaWZ5IGJvdGggYW5kIHNlcGFyYXRlIHRoZW0gd2l0aCBhXG5cCi1jb21tYS5cbiI7IAotICAgICAKK2NvbW1hLlxuIjsKKwogDAogIC8qIFRoaXMgcm91dGluZSBpcyBpbnRlbmRlZCB0byByZXRyaWV2ZSBpbnRlcmVzdGluZyBhc3BlY3RzIG9mIHRjcCAqLwogIC8qIGZvciB0aGUgZGF0YSBjb25uZWN0aW9uLiBhdCBmaXJzdCwgaXQgYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlICovCkBAIC0xODcsNyArMTg2LDcgQEAKIAogICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICB0ZW1wX3NvY2tldCA9IHRfb3BlbihuYW1lLE9fUkRXUixOVUxMKTsKLSAgCisKICAgaWYgKHRlbXBfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAibmV0cGVyZjogY3JlYXRlX3h0aV9lbmRwb2ludDogdF9vcGVuICVzOiBlcnJubyAlZCB0X2Vycm5vICVkXG4iLApAQCAtMTk3LDE0ICsxOTYsMTQgQEAKICAgICBmZmx1c2god2hlcmUpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwiY3JlYXRlX3h0aV9lbmRwb2ludDogc29ja2V0ICVkIG9idGFpbmVkLi4uXG4iLHRlbXBfc29ja2V0KTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIGFsbG9jYXRlIHdoYXQgd2UgbmVlZCBmb3Igb3B0aW9uIG1nbXQgKi8KLSAgaWYgKChvcHRfcmVxID0gKHN0cnVjdCB0X29wdG1nbXQgKil0X2FsbG9jKHRlbXBfc29ja2V0LFRfT1BUTUdNVCxUX0FMTCkpID09IAorICBpZiAoKG9wdF9yZXEgPSAoc3RydWN0IHRfb3B0bWdtdCAqKXRfYWxsb2ModGVtcF9zb2NrZXQsVF9PUFRNR01ULFRfQUxMKSkgPT0KICAgICAgIE5VTEwpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAibmV0cGVyZjogY3JlYXRlX3h0aV9lbmRwb2ludDogdF9hbGxvYzogb3B0X3JlcSBlcnJubyAlZFxuIiwKQEAgLTIxOSw3ICsyMTgsNyBAQAogCSAgICBvcHRfcmVxLT5vcHQuYnVmLAogCSAgICBvcHRfcmVxLT5vcHQubWF4bGVuLAogCSAgICBvcHRfcmVxLT5vcHQubGVuKTsKLSAgICAKKwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KIApAQCAtMjY5LDI0ICsyNjgsMjQgQEAKICAgLyogdGhlIGZpcnN0IHBhcnQgaXMgZm9yIHRoZSBuZXRidWYgdGhhdCBob2xkcyB0aGUgb3B0aW9uIHdlIHdhbnQgKi8KICAgLyogdG8gbmVnb3RpYXRlIG9yIGNoZWNrICovCiAgIC8qIHRoZSBidWZmZXIgb2YgdGhlIG5ldGJ1ZiBwb2ludHMgYXQgdGhlIHNvY2tldCBvcHRpb25zIHN0cnVjdHVyZSAqLwotICAKKwogICAvKiB3ZSBhc3N1bWUgdGhhdCB0aGUgdF9hbGxvYyBjYWxsIGFsbG9jYXRlZCBhIGJ1ZmZlciB0aGF0IHN0YXJ0ZWQgKi8KICAgLyogb24gYSBwcm9wZXIgYWxpZ25tZW50ICovCiAgIHNvY2tfb3B0aW9uID0gKHN0cnVjdCBzb2NrX29wdGlvbiAqKW9wdF9yZXEtPm9wdC5idWY7Ci0gIAorCiAgIC8qIGFuZCBuZXh0LCBzZXQgdGhlIGZpZWxkcyBpbiB0aGUgc29ja19vcHRpb24gc3RydWN0dXJlICovCiAgIHNvY2tfb3B0aW9uLT5teW9wdGhkci5sZXZlbCA9IFhUSV9HRU5FUklDOwogICBzb2NrX29wdGlvbi0+bXlvcHRoZHIubmFtZSAgPSBYVElfU05EQlVGOwogICBzb2NrX29wdGlvbi0+bXlvcHRoZHIubGVuICAgPSBzaXplb2Yoc3RydWN0IHRfb3B0aGRyKSArIHNpemVvZihsb25nKTsKICAgc29ja19vcHRpb24tPnZhbHVlICAgICAgICA9IGxzc19zaXplOwotICAKKwogICBvcHRfcmVxLT5vcHQubGVuICAgICAgICAgID0gc2l6ZW9mKHN0cnVjdCB0X29wdGhkcikgKyBzaXplb2YobG9uZyk7Ci0gIAorCiAgIC8qIG5vdywgc2V0LXVwIHRoZSBzdHVmZiB0byByZXR1cm4gdGhlIHZhbHVlIGluIHRoZSBlbmQgKi8KICAgLyogd2UgYXNzdW1lIHRoYXQgdGhlIHRfYWxsb2MgY2FsbCBhbGxvY2F0ZWQgYSBidWZmZXIgdGhhdCBzdGFydGVkICovCiAgIC8qIG9uIGEgcHJvcGVyIGFsaWdubWVudCAqLwogICBzb2NrX29wdGlvbiA9IChzdHJ1Y3Qgc29ja19vcHRpb24gKilvcHRfcmV0LT5vcHQuYnVmOwotICAKKwogICAvKiBmaW5hbGx5LCBjYWxsIHRfb3B0bWdtdC4gY2xlYXIgYXMgbXVkLiAqLwogICBpZiAodF9vcHRtZ210KHRlbXBfc29ja2V0LG9wdF9yZXEsb3B0X3JldCkgPT0gLTEpIHsKICAgICBmcHJpbnRmKHdoZXJlLApAQCAtMzE4LDI4ICszMTcsMjggQEAKICAgICAvKiB0aGUgc2FtZSBhcyBUX0RFRkFVTFQgcmFqIDMvOTUgKi8KICAgICBvcHRfcmVxLT5mbGFncyA9IFRfQ1VSUkVOVDsKICAgfQotICAKKwogICAvKiB0aGUgZmlyc3QgcGFydCBpcyBmb3IgdGhlIG5ldGJ1ZiB0aGF0IGhvbGRzIHRoZSBvcHRpb24gd2Ugd2FudCAqLwogICAvKiB0byBuZWdvdGlhdGUgb3IgY2hlY2sgKi8KICAgLyogdGhlIGJ1ZmZlciBvZiB0aGUgbmV0YnVmIHBvaW50cyBhdCB0aGUgc29ja2V0IG9wdGlvbnMgc3RydWN0dXJlICovCi0gIAorCiAgIC8qIHdlIGFzc3VtZSB0aGF0IHRoZSB0X2FsbG9jIGNhbGwgYWxsb2NhdGVkIGEgYnVmZmVyIHRoYXQgc3RhcnRlZCAqLwogICAvKiBvbiBhIHByb3BlciBhbGlnbm1lbnQgKi8KICAgc29ja19vcHRpb24gPSAoc3RydWN0IHNvY2tfb3B0aW9uICopb3B0X3JlcS0+b3B0LmJ1ZjsKLSAgCisKICAgLyogYW5kIG5leHQsIHNldCB0aGUgZmllbGRzIGluIHRoZSBzb2NrX29wdGlvbiBzdHJ1Y3R1cmUgKi8KICAgc29ja19vcHRpb24tPm15b3B0aGRyLmxldmVsID0gWFRJX0dFTkVSSUM7CiAgIHNvY2tfb3B0aW9uLT5teW9wdGhkci5uYW1lICA9IFhUSV9SQ1ZCVUY7CiAgIHNvY2tfb3B0aW9uLT5teW9wdGhkci5sZW4gICA9IHNpemVvZihzdHJ1Y3QgdF9vcHRoZHIpICsgc2l6ZW9mKGxvbmcpOwogICBzb2NrX29wdGlvbi0+dmFsdWUgICAgICAgID0gbHNyX3NpemU7Ci0gIAorCiAgIG9wdF9yZXEtPm9wdC5sZW4gICAgICAgICAgPSBzaXplb2Yoc3RydWN0IHRfb3B0aGRyKSArIHNpemVvZihsb25nKTsKLSAgCisKICAgLyogbm93LCBzZXQtdXAgdGhlIHN0dWZmIHRvIHJldHVybiB0aGUgdmFsdWUgaW4gdGhlIGVuZCAqLwogICAvKiB3ZSBhc3N1bWUgdGhhdCB0aGUgdF9hbGxvYyBjYWxsIGFsbG9jYXRlZCBhIGJ1ZmZlciB0aGF0IHN0YXJ0ZWQgKi8KICAgLyogb24gYSBwcm9wZXIgYWxpZ25tZW50ICovCiAgIHNvY2tfb3B0aW9uID0gKHN0cnVjdCBzb2NrX29wdGlvbiAqKW9wdF9yZXQtPm9wdC5idWY7Ci0gIAorCiAgIC8qIGZpbmFsbHksIGNhbGwgdF9vcHRtZ210LiBjbGVhciBhcyBtdWQuICovCiAgIGlmICh0X29wdG1nbXQodGVtcF9zb2NrZXQsb3B0X3JlcSxvcHRfcmV0KSA9PSAtMSkgewogICAgIGZwcmludGYod2hlcmUsCkBAIC0zNTgsMTcgKzM1NywxNyBAQAogCSAgICBsc3Nfc2l6ZSxsc3Jfc2l6ZSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogI2Vsc2UgLyogWFRJX1NOREJVRiAqLwotICAKKwogICBsc3Nfc2l6ZSA9IC0xOwogICBsc3Jfc2l6ZSA9IC0xOwotICAKKwogI2VuZGlmIC8qIFhUSV9TTkRCVUYgKi8KIAogICAvKiBub3csIHdlIG1heSB3aXNoIHRvIGVuYWJsZSB0aGUgY29weSBhdm9pZGFuY2UgZmVhdHVyZXMgb24gdGhlICovCiAgIC8qIGxvY2FsIHN5c3RlbS4gb2YgY291cnNlLCB0aGlzIG1heSBub3QgYmUgcG9zc2libGUuLi4gKi8KLSAgCisKICAgaWYgKGxvY19yY3Zhdm9pZCkgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJuZXRwZXJmOiBjcmVhdGVfeHRpX2VuZHBvaW50OiBDb3VsZCBub3QgZW5hYmxlIHJlY2VpdmUgY29weSBhdm9pZGFuY2UiKTsKQEAgLTM4MiwxMyArMzgxLDEzIEBACiAgICAgZmZsdXNoKHdoZXJlKTsKICAgICBsb2Nfc25kYXZvaWQgPSAwOwogICB9Ci0gIAorCiAgIC8qIE5vdywgd2Ugd2lsbCBzZWUgYWJvdXQgc2V0dGluZyB0aGUgVENQX05PREVMQVkgZmxhZyBvbiB0aGUgbG9jYWwgKi8KICAgLyogc29ja2V0LiBXZSB3aWxsIG9ubHkgZG8gdGhpcyBmb3IgdGhvc2Ugc3lzdGVtcyB0aGF0IGFjdHVhbGx5ICovCiAgIC8qIHN1cHBvcnQgdGhlIG9wdGlvbi4gSWYgaXQgZmFpbHMsIG5vdGUgdGhlIGZhY3QsIGJ1dCBrZWVwIGdvaW5nLiAqLwogICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBlbmFibGUgVENQX05PREVMQVkgb24gYSBVRFAgc29ja2V0LCB0aGlzICovCiAgIC8qIHdpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUgZGlzcGxheWVkICovCi0gIAorCiAjaWZkZWYgVENQX05PREVMQVkKICAgaWYgKChzdHJjbXAodGVzdF9uYW1lLCJYVElfVENQX1NUUkVBTSIpID09IDApIHx8CiAgICAgICAoc3RyY21wKHRlc3RfbmFtZSwiWFRJX1RDUF9SUiIpID09IDApIHx8CkBAIC00MDMsMjggKzQwMiwyOCBAQAogICAgICAgLyogdGhlIHNhbWUgYXMgVF9ERUZBVUxUIHJhaiAzLzk1ICovCiAgICAgICBvcHRfcmVxLT5mbGFncyA9IFRfQ1VSUkVOVDsKICAgICB9Ci0gICAgCisKICAgICAvKiB0aGUgZmlyc3QgcGFydCBpcyBmb3IgdGhlIG5ldGJ1ZiB0aGF0IGhvbGRzIHRoZSBvcHRpb24gd2Ugd2FudCAqLwogICAgIC8qIHRvIG5lZ290aWF0ZSBvciBjaGVjayB0aGUgYnVmZmVyIG9mIHRoZSBuZXRidWYgcG9pbnRzIGF0IHRoZSAqLwotICAgIC8qIHNvY2tldCBvcHRpb25zIHN0cnVjdHVyZSAqLyAKLSAgICAKKyAgICAvKiBzb2NrZXQgb3B0aW9ucyBzdHJ1Y3R1cmUgKi8KKwogICAgIC8qIHdlIGFzc3VtZSB0aGF0IHRoZSB0X2FsbG9jIGNhbGwgYWxsb2NhdGVkIGEgYnVmZmVyIHRoYXQgc3RhcnRlZCAqLwogICAgIC8qIG9uIGEgcHJvcGVyIGFsaWdubWVudCAqLwogICAgIHNvY2tfb3B0aW9uID0gKHN0cnVjdCBzb2NrX29wdGlvbiAqKW9wdF9yZXEtPm9wdC5idWY7Ci0gICAgCisKICAgICAvKiBhbmQgbmV4dCwgc2V0IHRoZSBmaWVsZHMgaW4gdGhlIHNvY2tfb3B0aW9uIHN0cnVjdHVyZSAqLwogICAgIHNvY2tfb3B0aW9uLT5teW9wdGhkci5sZXZlbCA9IElORVRfVENQOwogICAgIHNvY2tfb3B0aW9uLT5teW9wdGhkci5uYW1lICA9IFRDUF9OT0RFTEFZOwogICAgIHNvY2tfb3B0aW9uLT5teW9wdGhkci5sZW4gICA9IHNpemVvZihzdHJ1Y3QgdF9vcHRoZHIpICsgc2l6ZW9mKGxvbmcpOwogICAgIHNvY2tfb3B0aW9uLT52YWx1ZSAgICAgICAgICA9IFRfWUVTOwotICAgIAorCiAgICAgb3B0X3JlcS0+b3B0LmxlbiAgICAgICAgICA9IHNpemVvZihzdHJ1Y3QgdF9vcHRoZHIpICsgc2l6ZW9mKGxvbmcpOwotICAgIAorCiAgICAgLyogbm93LCBzZXQtdXAgdGhlIHN0dWZmIHRvIHJldHVybiB0aGUgdmFsdWUgaW4gdGhlIGVuZCAqLwogICAgIC8qIHdlIGFzc3VtZSB0aGF0IHRoZSB0X2FsbG9jIGNhbGwgYWxsb2NhdGVkIGEgYnVmZmVyIHRoYXQgc3RhcnRlZCAqLwogICAgIC8qIG9uIGEgcHJvcGVyIGFsaWdubWVudCAqLwogICAgIHNvY2tfb3B0aW9uID0gKHN0cnVjdCBzb2NrX29wdGlvbiAqKW9wdF9yZXQtPm9wdC5idWY7Ci0gICAgCisKICAgICAvKiBmaW5hbGx5LCBjYWxsIHRfb3B0bWdtdC4gY2xlYXIgYXMgbXVkLiAqLwogICAgIGlmICh0X29wdG1nbXQodGVtcF9zb2NrZXQsb3B0X3JlcSxvcHRfcmV0KSA9PSAtMSkgewogICAgICAgZnByaW50Zih3aGVyZSwKQEAgLTQzNyw5ICs0MzYsOSBAQAogICAgIGxvY19ub2RlbGF5ID0gc29ja19vcHRpb24tPnZhbHVlOwogICB9CiAjZWxzZSAvKiBUQ1BfTk9ERUxBWSAqLwotICAKKwogICBsb2Nfbm9kZWxheSA9IDA7Ci0gIAorCiAjZW5kaWYgLyogVENQX05PREVMQVkgKi8KIAogICByZXR1cm4odGVtcF9zb2NrZXQpOwpAQCAtNDUzLDM0ICs0NTIsMzQgQEAKIC8qIG91dHB1dCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAqLwogCiAKLXZvaWQgCit2b2lkCiBzZW5kX3h0aV90Y3Bfc3RyZWFtKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBSZWN2ICAgU2VuZCAgICBTZW5kICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKIFNvY2tldCBTb2NrZXQgIE1lc3NhZ2UgIEVsYXBzZWQgICAgICAgICAgICAgIFxuXAogU2l6ZSAgIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgVGhyb3VnaHB1dCAgXG5cCiBieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlcy9zZWMgIFxuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPQogICAgICIlNmQgJTZkICU2ZCAgICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKLSAgCisKICAgY2hhciAqY3B1X3RpdGxlID0gIlwKIFJlY3YgICBTZW5kICAgIFNlbmQgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpemF0aW9uICAgICAgIFNlcnZpY2UgRGVtYW5kXG5cCiBTb2NrZXQgU29ja2V0ICBNZXNzYWdlICBFbGFwc2VkICAgICAgICAgICAgICBTZW5kICAgICBSZWN2ICAgICBTZW5kICAgIFJlY3ZcblwKIFNpemUgICBTaXplICAgIFNpemUgICAgIFRpbWUgICAgIFRocm91Z2hwdXQgIGxvY2FsICAgIHJlbW90ZSAgIGxvY2FsICAgcmVtb3RlXG5cCiBieXRlcyAgYnl0ZXMgICBieXRlcyAgICBzZWNzLiAgICAlLTguOHMvcyAgJSUgJWMgICAgICAlJSAlYyAgICAgIHVzL0tCICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2YgJWNcbiI7CiAKICAgY2hhciAqY3B1X2ZtdF8xID0KICAgICAiJTZkICU2ZCAlNmQgICAgJS02LjJmICAgICAlNy4yZiAgICUtNi4yZiAgICUtNi4yZiAgICUtNi4zZiAgJS02LjNmXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXG5cCiBBbGlnbm1lbnQgICAgICBPZmZzZXQgICAgICAgICAlLTguOHMgJS04LjhzICAgIFNlbmRzICAgJS04LjhzIFJlY3ZzXG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlICBYZmVyZWQgICBQZXIgICAgICAgICAgICAgICAgIFBlclxuXApAQCAtNDkyLDI2ICs0OTEsMjYgQEAKIFNlZ21lbnRcblwKIFNpemUgKGJ5dGVzKVxuXAogJTZkXG4iOwotICAKLSAgCisKKwogICBmbG9hdAkJCWVsYXBzZWRfdGltZTsKLSAgCisKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICBpbnQgaW50ZXJ2YWxfY291bnQ7CiAgIHNpZ3NldF90IHNpZ25hbF9zZXQ7CiAjZW5kaWYKLSAgCisKICAgLyogd2hhdCB3ZSB3YW50IGlzIHRvIGhhdmUgYSBidWZmZXIgc3BhY2UgdGhhdCBpcyBhdCBsZWFzdCBvbmUgKi8KICAgLyogc2VuZC1zaXplIGdyZWF0ZXIgdGhhbiBvdXIgc2VuZCB3aW5kb3cuIHRoaXMgd2lsbCBpbnN1cmUgdGhhdCB3ZSAqLwogICAvKiBhcmUgbmV2ZXIgdHJ5aW5nIHRvIHJlLXVzZSBhIGJ1ZmZlciB0aGF0IG1heSBzdGlsbCBiZSBpbiB0aGUgaGFuZHMgKi8KICAgLyogb2YgdGhlIHRyYW5zcG9ydC4gVGhpcyBidWZmZXIgd2lsbCBiZSBtYWxsb2MnZCBhZnRlciB3ZSBoYXZlIGZvdW5kICovCiAgIC8qIHRoZSBzaXplIG9mIHRoZSBsb2NhbCBzZW5jIHNvY2tldCBidWZmZXIuIFdlIHdpbGwgd2FudCB0byBkZWFsICovCiAgIC8qIHdpdGggYWxpZ25tZW50IGFuZCBvZmZzZXQgY29uY2VybnMgYXMgd2VsbC4gKi8KLSAgCisKICAgaW50CSptZXNzYWdlX2ludF9wdHI7CiAKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7Ci0gIAorCiAgIGludCBsZW47CiAgIHVuc2lnbmVkIGludCBudW1tZXNzYWdlczsKICAgU09DS0VUIHNlbmRfc29ja2V0OwpAQCAtNTIzLDMyICs1MjIsMzIgQEAKICAgLyogNjRiaXQgaW50ZWdyYWwgdHlwZSwgYnV0IHRob3NlIGFyZSBub3QgZW50aXJlbHkgY29tbW9uIHlldCAqLwogCiAgIGRvdWJsZQlieXRlc19zZW50OwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAKICAgZG91YmxlCXRocnVwdXQ7Ci0gIAorCiAgIC8qIHNvbWUgYWRkcmVzc2luZyBpbmZvcm1hdGlvbiAqLwogICBzdHJ1Y3QJaG9zdGVudAkgICAgICAgICpocDsKICAgc3RydWN0CXNvY2thZGRyX2luCXNlcnZlcjsKICAgdW5zaWduZWQgICAgICBpbnQgICAgICAgICAgICAgYWRkcjsKIAogICBzdHJ1Y3QgdF9jYWxsIHNlcnZlcl9jYWxsOwotICAKKwogICBzdHJ1Y3QJeHRpX3RjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QJKnh0aV90Y3Bfc3RyZWFtX3JlcXVlc3Q7CiAgIHN0cnVjdAl4dGlfdGNwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QJKnh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlOwogICBzdHJ1Y3QJeHRpX3RjcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QJKnh0aV90Y3Bfc3RyZWFtX3Jlc3VsdDsKLSAgCi0gIHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3QgID0gCisKKyAgeHRpX3RjcF9zdHJlYW1fcmVxdWVzdCAgPQogICAgIChzdHJ1Y3QgeHRpX3RjcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHh0aV90Y3Bfc3RyZWFtX3Jlc3VsdCAgID0gCisgIHh0aV90Y3Bfc3RyZWFtX3Jlc3VsdCAgID0KICAgICAoc3RydWN0IHh0aV90Y3Bfc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCkBAIC01NTYsMTMgKzU1NSwxMyBAQAogICAvKiBjb250cm9sIHNvY2tldCwgYW5kIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgZGlmZmVyZW50ICovCiAgIC8qIHByb3RvY29scyBhbmQgc3VjaCwgd2UgYXJlIHBhc3NlZCB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgYW5kICovCiAgIC8qIG11c3QgdHVybiB0aGF0IGludG8gdGhlIHRlc3Qgc3BlY2lmaWMgYWRkcmVzc2luZyBpbmZvcm1hdGlvbi4gKi8KLSAgCisKICAgYnplcm8oKGNoYXIgKikmc2VydmVyLAogCXNpemVvZihzZXJ2ZXIpKTsKLSAgCisKICAgLyogaXQgd291bGQgc2VlbSB0aGF0IHdoaWxlIEhQLVVYIHdpbGwgYWxsb3cgYW4gSVAgYWRkcmVzcyAoYXMgYSAqLwogICAvKiBzdHJpbmcpIGluIGEgY2FsbCB0byBnZXRob3N0YnluYW1lLCBvdGhlciwgbGVzcyBlbmxpZ2h0ZW5lZCAqLwotICAvKiBzeXN0ZW1zIGRvIG5vdC4gZml4IGZyb20gYXdqYWNrc0BjYS5zYW5kaWEuZ292IHJhaiAxMC85NSAqLyAgCisgIC8qIHN5c3RlbXMgZG8gbm90LiBmaXggZnJvbSBhd2phY2tzQGNhLnNhbmRpYS5nb3YgcmFqIDEwLzk1ICovCiAgIC8qIG9yZGVyIGNoYW5nZWQgdG8gY2hlY2sgZm9yIElQIGFkZHJlc3MgZmlyc3QuIHJhaiA3Lzk2ICovCiAKICAgaWYgKChhZGRyID0gaW5ldF9hZGRyKHJlbW90ZV9ob3N0KSkgPT0gU09DS0VUX0VSUk9SKSB7CkBAIC01ODcsOCArNTg2LDggQEAKICAgICAvKiBpdCB3YXMgYSB2YWxpZCBJUCBhZGRyZXNzICovCiAgICAgc2VydmVyLnNpbl9hZGRyLnNfYWRkciA9IGFkZHI7CiAgICAgc2VydmVyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICB9ICAgIAotICAKKyAgfQorCiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICAvKiB3ZSB3YW50IHRvIGhhdmUgc29tZSBhZGRpdGlvbmFsLCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBpbiAqLwogICAgIC8qIHRoZSBoZWFkZXJzLiB3ZSBrbm93IHNvbWUgb2YgaXQgaGVyZSwgYnV0IG5vdCBhbGwsIHNvIHdlIHdpbGwgKi8KQEAgLTYwNSw3ICs2MDQsNyBAQAogICAgIGlmIChsb2Nfbm9kZWxheSB8fCByZW1fbm9kZWxheSkgewogICAgICAgZnByaW50Zih3aGVyZSwiIDogbm9kZWxheSIpOwogICAgIH0KLSAgICBpZiAobG9jX3NuZGF2b2lkIHx8IAorICAgIGlmIChsb2Nfc25kYXZvaWQgfHwKIAlsb2NfcmN2YXZvaWQgfHwKIAlyZW1fc25kYXZvaWQgfHwKIAlyZW1fcmN2YXZvaWQpIHsKQEAgLTYxNyw3ICs2MTYsNyBAQAogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgZnByaW50Zih3aGVyZSwiIDogaW50ZXJ2YWwiKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotI2lmZGVmIERJUlRZIAorI2lmZGVmIERJUlRZCiAgICAgZnByaW50Zih3aGVyZSwiIDogZGlydHkgZGF0YSIpOwogI2VuZGlmIC8qIERJUlRZICovCiAgICAgZnByaW50Zih3aGVyZSwiXG4iKTsKQEAgLTYzOSwyMyArNjM4LDIzIEBACiAKICAgICAvKiBpbml0aWFsaXplIGEgZmV3IGNvdW50ZXJzLiB3ZSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgd2UgbWlnaHQgYmUgKi8KICAgICAvKiBnb2luZyB0aHJvdWdoIHRoZSBsb29wIG1vcmUgdGhhbiBvbmNlLiAqLwotICAgIAorCiAgICAgbnVtbWVzc2FnZXMgICAgPQkwOwogICAgIGJ5dGVzX3NlbnQgICAgID0JMC4wOwogICAgIHRpbWVzX3VwICAgICAgID0gCTA7Ci0gICAgCisKICAgICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHNlbmRfc29ja2V0ID0gY3JlYXRlX3h0aV9lbmRwb2ludChsb2NfeHRpX2RldmljZSk7Ci0gICAgCisKICAgICBpZiAoc2VuZF9zb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF94dGlfdGNwX3N0cmVhbTogdGNwIHN0cmVhbSBkYXRhIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZGVidWcpIHsKICAgICAgIGZwcmludGYod2hlcmUsInNlbmRfeHRpX3RjcF9zdHJlYW06IHNlbmRfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBpdCB3b3VsZCBzZWVtIHRoYXQgd2l0aCBYVEksIHRoZXJlIGlzIG5vIGltcGxpY2l0IGJpbmQgb24gYSAqLwogICAgIC8qIGNvbm5lY3QsIHNvIHdlIGhhdmUgdG8gbWFrZSBhIGNhbGwgdG8gdF9iaW5kLiB0aGlzIGlzIG5vdCAqLwogICAgIC8qIHRlcnJpYmx5IGNvbnZlbmllbnQsIGJ1dCBJIHN1cHBvc2UgdGhhdCAic3RhbmRhcmQgaXMgYmV0dGVyICovCkBAIC02NjUsNyArNjY0LDcgQEAKICAgICAgIHRfZXJyb3IoInNlbmRfeHRpX3RjcF9zdHJlYW06IHRfYmluZCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgICAKKwogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgZWl0aGVyIHJldHJpZXZlZCB0aGUgc29ja2V0IGJ1ZmZlciBzaXplcywgKi8KICAgICAvKiBvciBoYXZlIHRyaWVkIHRvIHNldCB0aGVtLCBzbyBub3csIHdlIG1heSB3YW50IHRvIHNldCB0aGUgc2VuZCAqLwogICAgIC8qIHNpemUgYmFzZWQgb24gdGhhdCAoYmVjYXVzZSB0aGUgdXNlciBlaXRoZXIgZGlkIG5vdCB1c2UgYSAtbSAqLwpAQCAtNjgwLDcgKzY3OSw3IEBACiAJc2VuZF9zaXplID0gNDA5NjsKICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHJpbmcgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0LiAqLwogICAgIC8qIG5vdGUgYWxzbyB0aGF0IHdlIGhhdmUgYWxsb2NhdGVkIGEgcXVhbnRpdHkgKi8KICAgICAvKiBvZiBtZW1vcnkgdGhhdCBpcyBhdCBsZWFzdCBvbmUgc2VuZC1zaXplIGdyZWF0ZXIgdGhhbiBvdXIgc29ja2V0ICovCkBAIC02OTQsNyArNjkzLDcgQEAKICAgICAgIHNlbmRfd2lkdGggPSAobHNzX3NpemUvc2VuZF9zaXplKSArIDE7CiAgICAgICBpZiAoc2VuZF93aWR0aCA9PSAxKSBzZW5kX3dpZHRoKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMKSB7CiAgICAgICAvKiBvbmx5IGFsbG9jYXRlIHRoZSBzZW5kIHJpbmcgb25jZS4gdGhpcyBpcyBhIG5ldHdvcmtpbmcgdGVzdCwgKi8KICAgICAgIC8qIG5vdCBhIG1lbW9yeSBhbGxvY2F0aW9uIHRlc3QuIHRoaXMgd2F5LCB3ZSBkbyBub3QgbmVlZCBhICovCkBAIC03MTIsMTEgKzcxMSwxMSBAQAogICAgIC8qIGNhbGlicmF0ZV9sb2NhbF9jcHUgd2lsbCByZXR1cm4gcmF0aGVyIHF1aWNrbHkgYXMgaXQgd2lsbCBoYXZlICovCiAgICAgLyogbm90aGluZyB0byBkby4gSWYgbG9jYWxfY3B1X3JhdGUgaXMgemVybywgdGhlbiB3ZSB3aWxsIGdvIHRocm91Z2ggKi8KICAgICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4gKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgICAgfQotICAgIAorCiAgICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlIHNvY2tldCAqLwogICAgIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwogICAgIC8qIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkICovCkBAIC03MjQsNyArNzIzLDcgQEAKICAgICAvKiB3aWxsIGluZGljYXRlIHRvIHRoZSByZW1vdGUgdGhhdCBubyBjaGFuZ2VzIGJleW9uZCB0aGUgc3lzdGVtJ3MgKi8KICAgICAvKiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLiBBbGlnbm1lbnQgaXMgdGhlIGV4Y2VwdGlvbiwgaXQgd2lsbCAqLwogICAgIC8qIGRlZmF1bHQgdG8gMSwgd2hpY2ggd2lsbCBiZSBubyBhbGlnbm1lbnQgYWx0ZXJhdGlvbnMuICovCi0gICAgCisKICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgICAgICAgICAgPSBET19YVElfVENQX1NUUkVBTTsKICAgICB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplICA9IHJzc19zaXplOwogICAgIHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYnVmX3NpemUgID0gcnNyX3NpemU7CkBAIC03NDQsOSArNzQzLDkgQEAKICAgICB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5zb19zbmRhdm9pZCAgICA9IHJlbV9zbmRhdm9pZDsKIAogICAgIHN0cmNweSh4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT54dGlfZGV2aWNlLCByZW1feHRpX2RldmljZSk7Ci0gIAorCiAjaWZkZWYgX19hbHBoYQotICAKKwogICAgIC8qIG9rIC0gZXZlbiBvbiBhIERFQyBib3gsIHN0cmluZ3MgYXJlIHN0cmluZ3MuIEkgZGlkbid0IHJlYWxseSB3YW50ICovCiAgICAgLyogdG8gbnRvaGwgdGhlIHdvcmRzIG9mIGEgc3RyaW5nLiBzaW5jZSBJIGRvbid0IHdhbnQgdG8gdGVhY2ggdGhlICovCiAgICAgLyogc2VuZF8gYW5kIHJlY3ZfIF9yZXF1ZXN0IGFuZCBfcmVzcG9uc2Ugcm91dGluZXMgYWJvdXQgdGhlIHR5cGVzLCAqLwpAQCAtNzU3LDMyICs3NTYsMzIgQEAKICAgICAgIGludCAqY2hhcndvcmQ7CiAgICAgICBpbnQgKmluaXR3b3JkOwogICAgICAgaW50ICpsYXN0d29yZDsKLSAgICAgIAorCiAgICAgICBpbml0d29yZCA9IChpbnQgKikgeHRpX3RjcF9zdHJlYW1fcmVxdWVzdC0+eHRpX2RldmljZTsKICAgICAgIGxhc3R3b3JkID0gaW5pdHdvcmQgKyAoKHN0cmxlbihyZW1feHRpX2RldmljZSkgKyAzKSAvIDQpOwotICAgICAgCisKICAgICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgICBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSAgIGNoYXJ3b3JkKyspIHsKLQkKKwogCSpjaGFyd29yZCA9IG50b2hsKCpjaGFyd29yZCk7CiAgICAgICB9CiAgICAgfQogI2VuZGlmIC8qIF9fYWxwaGEgKi8KLSAgICAKKwogI2lmZGVmIERJUlRZCiAgICAgeHRpX3RjcF9zdHJlYW1fcmVxdWVzdC0+ZGlydHlfY291bnQgICAgICAgICA9IHJlbV9kaXJ0eV9jb3VudDsKICAgICB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5jbGVhbl9jb3VudCAgICAgICAgID0gcmVtX2NsZWFuX2NvdW50OwogI2VuZGlmIC8qIERJUlRZICovCi0gICAgCi0gICAgCisKKwogICAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICAgIGZwcmludGYod2hlcmUsCiAgICAgICAgICAgICAgICJuZXRwZXJmOiBzZW5kX3h0aV90Y3Bfc3RyZWFtOiByZXF1ZXN0aW5nIFRDUCBzdHJlYW0gdGVzdFxuIik7CiAgICAgfQotICAgIAorCiAgICAgc2VuZF9yZXF1ZXN0KCk7Ci0gICAgCisKICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50ICAgICovCiAgICAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAqLwogICAgIC8qIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4gIFRoZSAgICAgKi8KQEAgLTc5Miw5ICs3OTEsOSBAQAogICAgIC8qIGFmdGVyIHRoZSBjb25uZWN0IHJldHVybnMuIFRoZSByZW1vdGUgd2lsbCBncmFiIHRoZSBjb3VudGVyIHJpZ2h0Ki8KICAgICAvKiBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcyAgICovCiAgICAgLyogYmVpbmcgc2VudCBmb3IgdGhlIFRDUCB0ZXN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIAorCiAgICAgcmVjdl9yZXNwb25zZSgpOwotICAgIAorCiAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgICAgaWYgKGRlYnVnKQogICAgICAgICBmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTgwNyw0MSArODA2LDQxIEBACiAgICAgICAvKiB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIgcG9ydCBudW1iZXIgaXMgaW4gKi8KICAgICAgIC8qIG5ldHdvcmsgb3JkZXIgKi8KICAgICAgIHNlcnZlci5zaW5fcG9ydCAgID0gKHNob3J0KXh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyOwotICAgICAgc2VydmVyLnNpbl9wb3J0ICAgPSBodG9ucyhzZXJ2ZXIuc2luX3BvcnQpOyAKKyAgICAgIHNlcnZlci5zaW5fcG9ydCAgID0gaHRvbnMoc2VydmVyLnNpbl9wb3J0KTsKICAgICAgIHJlbV9yY3Zhdm9pZCAgICAgID0geHRpX3RjcF9zdHJlYW1fcmVzcG9uc2UtPnNvX3JjdmF2b2lkOwogICAgICAgcmVtX3NuZGF2b2lkICAgICAgPSB4dGlfdGNwX3N0cmVhbV9yZXNwb25zZS0+c29fc25kYXZvaWQ7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICAgIHBlcnJvcigibmV0cGVyZjogcmVtb3RlIGVycm9yIik7Ci0gICAgICAKKwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKkNvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIHNvY2tldCAgKi8KICAgICBtZW1zZXQgKCZzZXJ2ZXJfY2FsbCwgMCwgc2l6ZW9mKHNlcnZlcl9jYWxsKSk7CiAgICAgc2VydmVyX2NhbGwuYWRkci5tYXhsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKICAgICBzZXJ2ZXJfY2FsbC5hZGRyLmxlbiAgICA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogICAgIHNlcnZlcl9jYWxsLmFkZHIuYnVmICAgID0gKGNoYXIgKikmc2VydmVyOwogCi0gICAgaWYgKHRfY29ubmVjdChzZW5kX3NvY2tldCwgCisgICAgaWYgKHRfY29ubmVjdChzZW5kX3NvY2tldCwKIAkJICAmc2VydmVyX2NhbGwsCiAJCSAgTlVMTCkgPT0gSU5WQUxJRF9TT0NLRVQpewogICAgICAgdF9lcnJvcigibmV0cGVyZjogc2VuZF94dGlfdGNwX3N0cmVhbTogZGF0YSBzb2NrZXQgY29ubmVjdCBmYWlsZWQiKTsKICAgICAgIHByaW50ZigiIHBvcnQ6ICVkXG4iLG50b2hzKHNlcnZlci5zaW5fcG9ydCkpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBEYXRhIFNvY2tldCBzZXQtdXAgaXMgZmluaXNoZWQuIElmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIGVpdGhlciAqLwogICAgIC8qIHRoZSBjb25uZWN0IHdvdWxkIGhhdmUgZmFpbGVkLCBvciB0aGUgcHJldmlvdXMgcmVzcG9uc2Ugd291bGQgKi8KICAgICAvKiBoYXZlIGluZGljYXRlZCBhIHByb2JsZW0uIEkgZmFpbGVkIHRvIHNlZSB0aGUgdmFsdWUgb2YgdGhlICovCiAgICAgLyogZXh0cmEgIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsICovCiAgICAgLyogd2UnbGwgc2VlIGl0IGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nICovCi0gICAgLyogZGF0YS4gKi8gCi0gICAgCisgICAgLyogZGF0YS4gKi8KKwogICAgIC8qIFNldC11cCB0aGUgdGVzdCBlbmQgY29uZGl0aW9ucy4gRm9yIGEgc3RyZWFtIHRlc3QsIHRoZXkgY2FuIGJlICovCiAgICAgLyogZWl0aGVyIHRpbWUgb3IgYnl0ZS1jb3VudCBiYXNlZC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICAgIHRpbWVzX3VwID0gMDsKQEAgLTg1OSwxMyArODU4LDEzIEBACiAgICAgICBieXRlc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgICAgdGltZXNfdXAgPSAxOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRoZSBjcHVfc3RhcnQgcm91dGluZSB3aWxsIGdyYWIgdGhlIGN1cnJlbnQgdGltZSBhbmQgcG9zc2libHkgKi8KICAgICAvKiB2YWx1ZSBvZiB0aGUgaWRsZSBjb3VudGVyIGZvciBsYXRlciB1c2UgaW4gbWVhc3VyaW5nIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgICAKKwogICAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwotICAgIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBpZiAoKGludGVydmFsX2J1cnN0KSB8fCAoZGVtb19tb2RlKSkgewogICAgICAgLyogemVybyBtZWFucyB0aGF0IHdlIG5ldmVyIHBhdXNlLCBzbyB3ZSBuZXZlciBzaG91bGQgbmVlZCB0aGUgKi8KQEAgLTg5MCw5ICs4ODksOSBAQAogICAgIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KICAgICAvKiBhbHdheXMgcmV0dXJuIGZhbHNlLiBXaGVuIHRoZSB0ZXN0IGlzIGZpbmlzaGVkLCB0aGUgd2hvbGUgKi8KICAgICAvKiBleHByZXNzaW9uIHdpbGwgZ28gZmFsc2UgYW5kIHdlIHdpbGwgc3RvcCBzZW5kaW5nIGRhdGEuICovCi0gICAgCisKICAgICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKGJ5dGVzX3JlbWFpbmluZyA+IDApKSB7Ci0gICAgICAKKwogI2lmZGVmIERJUlRZCiAgICAgICAvKiB3ZSB3YW50IHRvIGRpcnR5IHNvbWUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGludGVnZXJzIGluIHRoZSBidWZmZXIgKi8KICAgICAgIC8qIHdlIGFyZSBhYm91dCB0byBzZW5kLiB3ZSBtYXkgYWxzbyB3YW50IHRvIGJyaW5nIHNvbWUgbnVtYmVyIG9mICovCkBAIC05MDUsMTMgKzkwNCwxMyBAQAogCQkgICAgbG9jX2RpcnR5X2NvdW50LAogCQkgICAgbG9jX2NsZWFuX2NvdW50KTsKICNlbmRpZiAvKiBESVJUWSAqLwotICAgICAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICAgICAgLyogdGltZXN0YW1wIGp1c3QgYmVmb3JlIHdlIGdvIGludG8gc2VuZCBhbmQgdGhlbiBhZ2FpbiBqdXN0IGFmdGVyICovCiAgICAgICAvKiB3ZSBjb21lIG91dCByYWogOC85NCAqLwogICAgICAgSElTVF90aW1lc3RhbXAoJnRpbWVfb25lKTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwotICAgICAgCisKICAgICAgIGlmKChsZW49dF9zbmQoc2VuZF9zb2NrZXQsCiAJCSAgICBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCiAJCSAgICBzZW5kX3NpemUsCkBAIC05MzMsOSArOTMyLDkgQEAKICAgICAgIC8qIHRpbWVzdGFtcCB0aGUgZXhpdCBmcm9tIHRoZSBzZW5kIGNhbGwgYW5kIHVwZGF0ZSB0aGUgaGlzdG9ncmFtICovCiAgICAgICBISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwogICAgICAgSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKLSNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLyAgICAgIAorI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAKLSNpZmRlZiBXQU5UX0lOVEVSVkFMUyAgICAgIAorI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgICBpZiAoZGVtb19tb2RlKSB7CiAgICAgICAgIHVuaXRzX3RoaXNfdGljayArPSBzZW5kX3NpemU7CiAgICAgICB9CkBAIC05NTcsMTMgKzk1NiwxMyBAQAogICAgICAgICBpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OwogICAgICAgfQogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgICAKKwogICAgICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgKi8KICAgICAgIC8qIGRhdGEgYnVmZmVyLi4ud2UgbWF5IGFsc28gd2FudCB0byB3cmFwIGJhY2sgdG8gdGhlICJiZWdpbm5pbmciICovCiAgICAgICAvKiBvZiB0aGUgYnVmZmVyc3BhY2UsIHNvIHdlIHdpbGwgbW9kIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgc2VudCAqLwogICAgICAgLyogYnkgdGhlIHNlbmQgd2lkdGgsIGFuZCB1c2UgdGhhdCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldCB0byBhZGQgKi8KICAgICAgIC8qIHRvIHRoZSBiYXNlIHBvaW50ZXIuICovCi0gICAgICBudW1tZXNzYWdlcysrOyAgICAgICAgICAKKyAgICAgIG51bW1lc3NhZ2VzKys7CiAgICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7CiAgICAgICBpZiAoYnl0ZXNfcmVtYWluaW5nKSB7CiAgICAgICAgIGJ5dGVzX3JlbWFpbmluZyAtPSBzZW5kX3NpemU7CkBAIC05NzIsNyArOTcxLDcgQEAKIAogICAgIC8qIFRoZSB0ZXN0IGlzIG92ZXIuIEZsdXNoIHRoZSBidWZmZXJzIHRvIHRoZSByZW1vdGUgZW5kLiBXZSBkbyBhICovCiAgICAgLyogZ3JhY2VmdWwgcmVsZWFzZSB0byBpbnN1cmUgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiB0YWtlbiBieSB0aGUgKi8KLSAgICAvKiByZW1vdGUuICovIAorICAgIC8qIHJlbW90ZS4gKi8KIAogICAgIC8qIGJ1dCBmaXJzdCwgaWYgdGhlIHZlcmJvc2l0eSBpcyBncmVhdGVyIHRoYW4gMSwgZmluZC1vdXQgd2hhdCAqLwogICAgIC8qIHRoZSBUQ1AgbWF4aW11bSBzZWdtZW50X3NpemUgd2FzIChpZiBwb3NzaWJsZSkgKi8KQEAgLTk4MCwzNiArOTc5LDM2IEBACiAgICAgICB0Y3BfbXNzID0gLTE7CiAgICAgICBnZXRfeHRpX2luZm8oc2VuZF9zb2NrZXQsaW5mb19zdHJ1Y3QpOwogICAgIH0KLSAgICAKKwogICAgIGlmICh0X3NuZHJlbChzZW5kX3NvY2tldCkgPT0gLTEpIHsKICAgICAgIHRfZXJyb3IoIm5ldHBlcmY6IGNhbm5vdCBzaHV0ZG93biB0Y3Agc3RyZWFtIHNvY2tldCIpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBoYW5nIGEgdF9yY3ZyZWwoKSBvZmYgdGhlIHNvY2tldCB0byBibG9jayB1bnRpbCB0aGUgcmVtb3RlIGhhcyAqLwogICAgIC8qIGJyb3VnaHQgYWxsIHRoZSBkYXRhIHVwIGludG8gdGhlIGFwcGxpY2F0aW9uLiBpdCB3aWxsIGRvIGEgKi8KICAgICAvKiB0X3NlZHJlbCB0byBjYXVzZSBhIEZJTiB0byBiZSBzZW50IG91ciB3YXkuIFdlIHdpbGwgYXNzdW1lIHRoYXQgKi8KICAgICAvKiBhbnkgZXhpdCBmcm9tIHRoZSB0X3JjdnJlbCgpIGNhbGwgaXMgZ29vZC4uLiByYWogMi85NSAqLwotICAgIAorCiAgICAgaWYgKGRlYnVnID4gMSkgewogICAgICAgZnByaW50Zih3aGVyZSwiYWJvdXQgdG8gaGFuZyBhIHJlY2VpdmUgZm9yIGdyYWNlZnVsIHJlbGVhc2UuXG4iKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgfQogCiAgICAgdF9yY3ZyZWwoc2VuZF9zb2NrZXQpOwotICAgIAorCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCi0gICAgCisKICAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7ICAgIC8qIHdhcyBjcHUgYmVpbmcgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1lYXN1cmVkIGFuZCBob3cgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvbmcgZGlkIHdlIHJlYWxseSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcnVuPyAqLwotICAgIAorCiAgICAgLyogR2V0IHRoZSBzdGF0aXN0aWNzIGZyb20gdGhlIHJlbW90ZSBlbmQuIFRoZSByZW1vdGUgd2lsbCBoYXZlICovCiAgICAgLyogY2FsY3VsYXRlZCBzZXJ2aWNlIGRlbWFuZCBhbmQgYWxsIHRob3NlIGludGVyZXN0aW5nIHRoaW5ncy4gSWYgaXQgKi8KICAgICAvKiB3YXNuJ3Qgc3VwcG9zZWQgdG8gY2FyZSwgaXQgd2lsbCByZXR1cm4gb2J2aW91cyB2YWx1ZXMuICovCi0gICAgCisKICAgICByZWN2X3Jlc3BvbnNlKCk7CiAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgICAgaWYgKGRlYnVnKQpAQCAtMTAxOCwxMCArMTAxNywxMCBAQAogICAgIGVsc2UgewogICAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICAgIHBlcnJvcigibmV0cGVyZjogcmVtb3RlIGVycm9yIik7Ci0gICAgICAKKwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICAvKiBXZSBub3cgY2FsY3VsYXRlIHdoYXQgb3VyIHRocnVwdXQgd2FzIGZvciB0aGUgdGVzdC4gSW4gdGhlIGZ1dHVyZSwgKi8KICAgICAvKiB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGEgY2FsY3VsYXRpb24gb2YgdGhlIHRocnVwdXQgbWVhc3VyZWQgYnkgKi8KICAgICAvKiB0aGUgcmVtb3RlLCBidXQgaXQgc2hvdWxkIGJlIHRoZSBjYXNlIHRoYXQgZm9yIGEgVENQIHN0cmVhbSB0ZXN0LCAqLwpAQCAtMTAzMCwxMSArMTAyOSwxMSBAQAogICAgIC8qIElmIGl0IHdhcyB0aW1lLCB3ZSBuZWVkZWQgdG8sIGFuZCBpZiBpdCB3YXMgYnkgYnl0ZXMsIHRoZSB1c2VyIG1heSAqLwogICAgIC8qIGhhdmUgc3BlY2lmaWVkIGEgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2Fzbid0IGEgbXVsdGlwbGUgb2YgdGhlICovCiAgICAgLyogc2VuZF9zaXplLCBzbyB3ZSByZWFsbHkgZGlkbid0IHNlbmQgd2hhdCBoZSBhc2tlZCBmb3IgOy0pICovCi0gICAgCisKICAgICBieXRlc19zZW50ICA9IHh0aV90Y3Bfc3RyZWFtX3Jlc3VsdC0+Ynl0ZXNfcmVjZWl2ZWQ7CiAKICAgICB0aHJ1cHV0ICAgICA9IGNhbGNfdGhydXB1dChieXRlc19zZW50KTsKLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwogICAgICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgKi8KQEAgLTEwNDIsNyArMTA0MSw3IEBACiAgICAgICAvKiB0aGVyZSB3YXMgbm8gaWRsZSBjb3VudGVyIGluIHRoZSBrZXJuZWwocykuIFdlIG5lZWQgdG8gbWFrZSAqLwogICAgICAgLyogYSBub3RlIG9mIHRoaXMgZm9yIHRoZSB1c2VyJ3MgYmVuZWZpdC4uLiovCiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7Ci0gICAgICAgIAorCiAgICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiAgID0gY2FsY19jcHVfdXRpbCgwLjApOwogICAgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCAgICA9IGNhbGNfc2VydmljZV9kZW1hbmQoYnl0ZXNfc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwKQEAgLTEwNTMsOSArMTA1Miw5IEBACiAgICAgICAgIGxvY2FsX2NwdV91dGlsaXphdGlvbiAgID0gLTEuMDsKICAgICAgICAgbG9jYWxfc2VydmljZV9kZW1hbmQgICAgPSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7Ci0gICAgICAgIAorCiAgICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb24gID0geHRpX3RjcF9zdHJlYW1fcmVzdWx0LT5jcHVfdXRpbDsKICAgICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICAgPSBjYWxjX3NlcnZpY2VfZGVtYW5kKGJ5dGVzX3NlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAsCkBAIC0xMDY2LDcgKzEwNjUsNyBAQAogICAgICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uID0gLTEuMDsKICAgICAgICAgcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IC0xLjA7CiAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiB3ZSB3ZXJlIG5vdCBtZWFzdXJpbmcgY3B1LCBmb3IgdGhlIGNvbmZpZGVuY2Ugc3R1ZmYsIHdlICovCiAgICAgICAvKiBzaG91bGQgbWFrZSBpdCAtMS4wICovCkBAIC0xMDc5LDcgKzEwNzgsNyBAQAogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoZSBjb25maWRlbmNlIGluZm9ybWF0aW9uLiAqLwogICAgIC8qIGlmIGRlYnVnZ2luZyBpcyBvbiwgY2FsY3VsYXRlX2NvbmZpZGVuY2Ugd2lsbCBwcmludC1vdXQgdGhlICovCiAgICAgLyogcGFyYW1ldGVycyB3ZSBwYXNzIGl0ICovCi0gICAgCisKICAgICBjYWxjdWxhdGVfY29uZmlkZW5jZShjb25maWRlbmNlX2l0ZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhydXB1dCwKQEAgLTEwODcsOCArMTA4Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAgIAotICAgIAorCisKICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbisrOwogICB9CiAKQEAgLTExMjYsNyArMTEyNSw3IEBACiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZChjcHVfbWV0aG9kKTsKICAgICByZW1vdGVfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKHh0aV90Y3Bfc3RyZWFtX3Jlc3VsdC0+Y3B1X21ldGhvZCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKQEAgLTExNTEsNyArMTE1MCw3IEBACiAJCWxvY2FsX2NwdV9tZXRob2QsCiAJCXJlbW90ZV9jcHVfbWV0aG9kKTsKICAgICAgIH0KLSAgICAKKwogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICBjcHVfZm10XzEsCQkvKiB0aGUgZm9ybWF0IHN0cmluZyAqLwogCSAgICAgIHJzcl9zaXplLAkJICAgICAgICAvKiByZW1vdGUgcmVjdmJ1ZiBzaXplICovCkBAIC0xMTY4LDcgKzExNjcsNyBAQAogICB9CiAgIGVsc2UgewogICAgIC8qIFRoZSB0ZXN0ZXIgZGlkIG5vdCB3aXNoIHRvIG1lYXN1cmUgc2VydmljZSBkZW1hbmQuICovCi0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGZwcmludGYod2hlcmUsCkBAIC0xMTkwLDIyICsxMTg5LDIyIEBACiAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCisKICAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCiAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCiAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKwogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBrbm93IGl0IGFsbCwgc28gd2Ugd2lsbCBnaXZlIGl0IHRvIGhpbS4gKi8KICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCiAgICAgLyogVENQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgIAorCiAgICAgLyogdGhpcyBzdHVmZiBuZWVkcyB0byBiZSB3b3JrZWQtb3V0IGluIHRoZSBwcmVzZW5jZSBvZiBjb25maWRlbmNlICovCiAgICAgLyogaW50ZXJ2YWxzIGFuZCBtdWx0aXBsZSBpdGVyYXRpb25zIG9mIHRoZSB0ZXN0Li4uIHJhaiAxMS85NCAqLwotIAorCiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAga3NpbmtfZm10LAogCSAgICAiQnl0ZXMiLApAQCAtMTIzMCw3ICsxMjI5LDcgQEAKICAgICBISVNUX3JlcG9ydCh0aW1lX2hpc3QpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCiAgIH0KLSAgCisKIH0KIAwKIApAQCAtMTIzOCwxMCArMTIzNywxMCBAQAogLyogaW1wbGVtZW50ZWQgYXMgb25lIHJvdXRpbmUuIEkgY291bGQgYnJlYWsgdGhpbmdzLW91dCBzb21ld2hhdCwgYnV0ICovCiAvKiBkaWRuJ3QgZmVlbCBpdCB3YXMgbmVjZXNzYXJ5LiAqLwogCi12b2lkIAordm9pZAogcmVjdl94dGlfdGNwX3N0cmVhbSgpCiB7Ci0gIAorCiAgIHN0cnVjdCBzb2NrYWRkcl9pbiBteWFkZHJfaW4sIHBlZXJhZGRyX2luOwogICBzdHJ1Y3QgdF9iaW5kICAgICAgYmluZF9yZXEsIGJpbmRfcmVzcDsKICAgc3RydWN0IHRfY2FsbCAgICAgIGNhbGxfcmVxOwpAQCAtMTI1MiwyOCArMTI1MSwyOCBAQAogICB1bnNpZ25lZCBpbnQJcmVjZWl2ZV9jYWxsczsKICAgZmxvYXQJICAgICAgICBlbGFwc2VkX3RpbWU7CiAgIGRvdWJsZSAgICAgICAgYnl0ZXNfcmVjZWl2ZWQ7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogCiAgIGludCAgICptZXNzYWdlX2ludF9wdHI7CiAgIGludCAgIGk7Ci0gIAorCiAgIHN0cnVjdCB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdAkqeHRpX3RjcF9zdHJlYW1fcmVxdWVzdDsKICAgc3RydWN0IHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqeHRpX3RjcF9zdHJlYW1fcmVzcG9uc2U7CiAgIHN0cnVjdCB4dGlfdGNwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdAkqeHRpX3RjcF9zdHJlYW1fcmVzdWx0czsKLSAgCi0gIHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3QJPSAKKworICB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0CT0KICAgICAoc3RydWN0IHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB4dGlfdGNwX3N0cmVhbV9yZXNwb25zZQk9IAorICB4dGlfdGNwX3N0cmVhbV9yZXNwb25zZQk9CiAgICAgKHN0cnVjdCB4dGlfdGNwX3N0cmVhbV9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB4dGlfdGNwX3N0cmVhbV9yZXN1bHRzCT0gCisgIHh0aV90Y3Bfc3RyZWFtX3Jlc3VsdHMJPQogICAgIChzdHJ1Y3QgeHRpX3RjcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJuZXRzZXJ2ZXI6IHJlY3ZfeHRpX3RjcF9zdHJlYW06IGVudGVyZWQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogV2Ugd2FudCB0byBzZXQtdXAgdGhlIGxpc3RlbiBzb2NrZXQgd2l0aCBhbGwgdGhlIGRlc2lyZWQgKi8KICAgLyogcGFyYW1ldGVycyBhbmQgdGhlbiBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgYWxsIGlzIHJlYWR5LiBJZiAqLwogICAvKiBzb2NrZXQgc2l6ZSBkZWZhdWx0cyBhcmUgdG8gYmUgdXNlZCwgdGhlbiB0aGUgaW5pdGlhdG9yIHdpbGwgaGF2ZSAqLwpAQCAtMTI4MSwyNyArMTI4MCwyNyBAQAogICAvKiBzZW5kLWJhY2sgd2hhdCB0aGV5IGFyZS4gSWYgdGhhdCBpbmZvcm1hdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgKi8KICAgLyogdGhlbiB3ZSBzZW5kLWJhY2sgLTEncyBmb3IgdGhlIHNpemVzLiBJZiB0aGluZ3MgZ28gd3JvbmcgZm9yIGFueSAqLwogICAvKiByZWFzb24sIHdlIHdpbGwgZHJvcCBiYWNrIHRlbiB5YXJkcyBhbmQgcHVudC4gKi8KLSAgCisKICAgLyogSWYgYW55dGhpbmcgZ29lcyB3cm9uZywgd2Ugd2FudCB0aGUgcmVtb3RlIHRvIGtub3cgYWJvdXQgaXQuIEl0ICovCiAgIC8qIHdvdWxkIGJlIGJlc3QgaWYgdGhlIGVycm9yIHRoYXQgdGhlIHJlbW90ZSByZXBvcnRzIHRvIHRoZSB1c2VyIGlzICovCiAgIC8qIHRoZSBhY3R1YWwgZXJyb3Igd2UgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIHNvbWUgYm9ndXMgdW5leHBlY3RlZCAqLwogICAvKiByZXNwb25zZSB0eXBlIG1lc3NhZ2UuICovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfeHRpX3RjcF9zdHJlYW06IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBYVElfVENQX1NUUkVBTV9SRVNQT05TRTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdGNwX3N0cmVhbTogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGUgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KICAgLyogYWxpZ25tZW50IHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3Bfc3RyZWFtOiByZXF1ZXN0ZWQgYWxpZ25tZW50IG9mICVkXG4iLAogCSAgICB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCk7CkBAIC0xMzEyLDIwICsxMzExLDIwIEBACiAgIC8qIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzICovCiAgIC8qIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywgKi8KICAgLyogSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLwotICAKKwogICBiemVybygoY2hhciAqKSZteWFkZHJfaW4sCiAJc2l6ZW9mKG15YWRkcl9pbikpOwogICBteWFkZHJfaW4uc2luX2ZhbWlseSAgICAgID0gQUZfSU5FVDsKICAgbXlhZGRyX2luLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgIG15YWRkcl9pbi5zaW5fcG9ydCAgICAgICAgPSAwOwotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3Bfc3RyZWFtOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBjcmVhdGVfeHRpX2VuZHBvaW50IGV4cGVjdHMgdG8gZmluZCBzb21lIHRoaW5ncyBpbiB0aGUgZ2xvYmFsICovCiAgIC8qIHZhcmlhYmxlcywgc28gc2V0IHRoZSBnbG9iYWxzIGJhc2VkIG9uIHRoZSB2YWx1ZXMgaW4gdGhlIHJlcXVlc3QuICovCiAgIC8qIG9uY2UgdGhlIHNvY2tldCBoYXMgYmVlbiBjcmVhdGVkLCB3ZSB3aWxsIHNldCB0aGUgcmVzcG9uc2UgdmFsdWVzICovCkBAIC0xMzM3LDcgKzEzMzYsNyBAQAogICBsb2Nfc25kYXZvaWQgPSB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5zb19zbmRhdm9pZDsKIAogI2lmZGVmIF9fYWxwaGEKLSAgCisKICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaW4ndCByZWFsbHkgd2FudCAqLwogICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgLyogc2VuZF8gYW5kIHJlY3ZfIF9yZXF1ZXN0IGFuZCBfcmVzcG9uc2Ugcm91dGluZXMgYWJvdXQgdGhlIHR5cGVzLCAqLwpAQCAtMTM0OCwzNCArMTM0NywzNCBAQAogICAgIGludCAqY2hhcndvcmQ7CiAgICAgaW50ICppbml0d29yZDsKICAgICBpbnQgKmxhc3R3b3JkOwotICAgIAorCiAgICAgaW5pdHdvcmQgPSAoaW50ICopIHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3QtPnh0aV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoeHRpX3RjcF9zdHJlYW1fcmVxdWVzdC0+ZGV2X25hbWVfbGVuICsgMykgLyA0KTsKLSAgICAKKwogICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgY2hhcndvcmQgPCBsYXN0d29yZDsKIAkgY2hhcndvcmQrKykgewotICAgICAgCisKICAgICAgICpjaGFyd29yZCA9IGh0b25sKCpjaGFyd29yZCk7CiAgICAgfQogICB9Ci0gIAorCiAjZW5kaWYgLyogX19hbHBoYSAqLwogCiAgIHNfbGlzdGVuID0gY3JlYXRlX3h0aV9lbmRwb2ludCh4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT54dGlfZGV2aWNlKTsKLSAgCisKICAgaWYgKHNfbGlzdGVuID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBMZXQncyBnZXQgYW4gYWRkcmVzcyBhc3NpZ25lZCB0byB0aGlzIHNvY2tldCBzbyB3ZSBjYW4gdGVsbCB0aGUgKi8KICAgLyogaW5pdGlhdG9yIGhvdyB0byByZWFjaCB0aGUgZGF0YSBzb2NrZXQuIFRoZXJlIG1heSBiZSBhIGRlc2lyZSB0byAqLwogICAvKiBuYWlsIHRoaXMgc29ja2V0IHRvIGEgc3BlY2lmaWMgSVAgYWRkcmVzcyBpbiBhIG11bHRpLWhvbWVkLCAqLwogICAvKiBtdWx0aS1jb25uZWN0aW9uIHNpdHVhdGlvbiwgYnV0IGZvciBub3csIHdlJ2xsIGlnbm9yZSB0aGUgaXNzdWUgKi8KICAgLyogYW5kIGNvbmNlbnRyYXRlIG9uIHNpbmdsZSBjb25uZWN0aW9uIHRlc3RpbmcuICovCi0gIAorCiAgIGJpbmRfcmVxLmFkZHIubWF4bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgIGJpbmRfcmVxLmFkZHIubGVuICAgID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgIGJpbmRfcmVxLmFkZHIuYnVmICAgID0gKGNoYXIgKikmbXlhZGRyX2luOwpAQCAtMTM5Miw3ICsxMzkxLDcgQEAKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IHRfZXJybm87CiAgICAgY2xvc2Uoc19saXN0ZW4pOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KIApAQCAtMTQwMiw3ICsxNDAxLDcgQEAKIAkgICAgbnRvaHMobXlhZGRyX2luLnNpbl9wb3J0KSk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiB3aGF0IHNvcnQgb2Ygc2l6ZXMgZGlkIHdlIGVuZC11cCB3aXRoPyAqLwogICBpZiAoeHRpX3RjcF9zdHJlYW1fcmVxdWVzdC0+cmVjZWl2ZV9zaXplID09IDApIHsKICAgICBpZiAobHNyX3NpemUgPiAwKSB7CkBAIC0xNDE1LDcgKzE0MTQsNyBAQAogICBlbHNlIHsKICAgICByZWN2X3NpemUgPSB4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5yZWNlaXZlX3NpemU7CiAgIH0KLSAgCisKICAgLyogd2Ugd2FudCB0byBzZXQtdXAgb3VyIHJlY3ZfcmluZyBpbiBhIG1hbm5lciBhbmFsYWdvdXMgdG8gd2hhdCB3ZSAqLwogICAvKiBkbyBvbiB0aGUgc2VuZGluZyBzaWRlLiB0aGlzIGlzIG1vcmUgZm9yIHRoZSBzYWtlIG9mIHN5bW1ldHJ5ICovCiAgIC8qIHRoYW4gZm9yIHRoZSBuZWVkcyBvZiBzYXkgY29weSBhdm9pZGFuY2UsIGJ1dCBpdCBtaWdodCBhbHNvIGJlICovCkBAIC0xNDM3LDMxICsxNDM2LDMxIEBACiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdGNwX3N0cmVhbTogcmVjdiBhbGlnbm1lbnQgYW5kIG9mZnNldCBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCi0gIHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5kYXRhX3BvcnRfbnVtYmVyID0gCisKKyAgeHRpX3RjcF9zdHJlYW1fcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPQogICAgIChpbnQpIG50b2hzKG15YWRkcl9pbi5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgLTEgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgeHRpX3RjcF9zdHJlYW1fcmVzcG9uc2UtPmNwdV9yYXRlID0gMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICBpZiAoeHRpX3RjcF9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB4dGlfdGNwX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwotICAgIHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9CiAgICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1KHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQogICBlbHNlIHsKICAgICB4dGlfdGNwX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAwOwogICB9Ci0gIAorCiAgIC8qIGJlZm9yZSB3ZSBzZW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IsIHB1bGwgc29tZSBvZiAqLwogICAvKiB0aGUgc29ja2V0IHBhcm1zIGZyb20gdGhlIGdsb2JhbHMgKi8KICAgeHRpX3RjcF9zdHJlYW1fcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKQEAgLTE0NzIsNyArMTQ3MSw3IEBACiAgIHh0aV90Y3Bfc3RyZWFtX3Jlc3BvbnNlLT5yZWNlaXZlX3NpemUgPSByZWN2X3NpemU7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogICAvKiBOb3csIGxldCdzIHNldC11cCB0aGUgc29ja2V0IHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMuIGZvciB4dGksICovCiAgIC8qIHRoZSB0X2xpc3RlbiBjYWxsIGlzIGJsb2NraW5nIGJ5IGRlZmF1bHQgLSB0aGlzIGlzIGRpZmZlcmVudCAqLwogICAvKiBzZW1hbnRpY3MgZnJvbSBCU0QgLSBwcm9iYWJseSBoYXMgdG8gZG8gd2l0aCBiZWluZyBhYmxlIHRvIHJlamVjdCAqLwpAQCAtMTQ5OCwxNCArMTQ5NywxNCBAQAogICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3h0aV90Y3Bfc3RyZWFtOiB0X2xpc3RlbiBjb21wbGV0ZSB0X2xvb2sgMHglLjR4XG4iLAogCSAgICB0X2xvb2soc19saXN0ZW4pKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIG5vdyBqdXN0IHJ1YmJlciBzdGFtcCB0aGUgdGhpbmcuIHdlIHdhbnQgdG8gdXNlIHRoZSBzYW1lIGZkPyBzbyAqLwogICAvKiB3ZSB3aWxsIGp1c3QgZXF1YXRlIHNfZGF0YSB3aXRoIHNfbGlzdGVuLiB0aGlzIHNlZW1zIGEgbGl0dGxlICovCiAgIC8qIGhva2V5IHRvIG1lLCBidXQgdGhlbiBJJ20gYSBCU0QgYmlnZ290IHN0aWxsLiByYWogMi85NSAqLwpAQCAtMTUyMSw3ICsxNTIwLDcgQEAKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl94dGlfdGNwX3N0cmVhbTogdF9hY2NlcHQgY29tcGxldGUgdF9sb29rIDB4JS40eFxuIiwKQEAgLTE1MzUsMTIgKzE1MzQsMTIgQEAKIAogICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHJlY2VpdmluZyBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLiBXZSB3aWxsICovCiAgIC8qIGZpcnN0IGdyYWIgdGhlIGFwcm9wcmlhdGUgY291bnRlcnMgYW5kIHRoZW4gc3RhcnQgZ3JhYmJpbmcuICovCi0gIAorCiAgIGNwdV9zdGFydCh4dGlfdGNwX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHRfc25kcmVsLCB3aGljaCB3aWxsICovCiAgIC8qIHJldHVybiBUX0xPT0sgZXJyb3IgZnJvbSB0aGUgdF9yZWN2ICovCi0gIAorCiAjaWZkZWYgRElSVFkKICAgICAvKiB3ZSB3YW50IHRvIGRpcnR5IHNvbWUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGludGVnZXJzIGluIHRoZSBidWZmZXIgKi8KICAgICAvKiB3ZSBhcmUgYWJvdXQgdG8gcmVjdi4gd2UgbWF5IGFsc28gd2FudCB0byBicmluZyBzb21lIG51bWJlciBvZiAqLwpAQCAtMTU2MywxMCArMTU2MiwxMCBAQAogCQkgICAgICAmeHRpX2ZsYWdzKSkgIT0gLTEpIHsKICAgICBieXRlc19yZWNlaXZlZCArPSBsZW47CiAgICAgcmVjZWl2ZV9jYWxscysrOwotICAgIAorCiAgICAgLyogbW9yZSB0byB0aGUgbmV4dCBidWZmZXIgaW4gdGhlIHJlY3ZfcmluZyAqLwogICAgIHJlY3ZfcmluZyA9IHJlY3ZfcmluZy0+bmV4dDsKLSAgICAKKwogI2lmZGVmIERJUlRZCiAKICAgYWNjZXNzX2J1ZmZlcihyZWN2X3JpbmctPmJ1ZmZlcl9wdHIsCkBAIC0xNTc2LDcgKzE1NzUsNyBAQAogCiAjZW5kaWYgLyogRElSVFkgKi8KICAgfQotICAKKwogICBpZiAodF9sb29rKHNfZGF0YSkgPT0gVF9PUkRSRUwpIHsKICAgICAvKiB0aGlzIGlzIGEgbm9ybWFsIGV4aXQgcGF0aCAqLwogICAgIGlmIChkZWJ1ZykgewpAQCAtMTYwMCw3ICsxNTk5LDcgQEAKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiByZWNlaXZlIHRoZSByZWxlYXNlIGFuZCBsZXQgdGhlIGluaXRpYXRvciBrbm93IHRoYXQgd2UgaGF2ZSAqLwogICAvKiByZWNlaXZlZCBhbGwgdGhlIGRhdGEuIHJhaiAzLzk1ICovCiAKQEAgLTE2MDgsNyArMTYwNyw3IEBACiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKLSAgfSAgICAKKyAgfQogCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCkBAIC0xNjIxLDcgKzE2MjAsNyBAQAogICAgIHNlbmRfcmVzcG9uc2UoKTsKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3h0aV90Y3Bfc3RyZWFtOiB0X3NuZHJlbCBjb21wbGV0ZVxuIik7CkBAIC0xNjI5LDkgKzE2MjgsOSBAQAogICB9CiAKICAgY3B1X3N0b3AoeHRpX3RjcF9zdHJlYW1fcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIC8qIHNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHNlbmRlcgkJCSovCi0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3h0aV90Y3Bfc3RyZWFtOiBnb3QgJWcgYnl0ZXNcbiIsCkBAIC0xNjQxLDE1ICsxNjQwLDE1IEBACiAJICAgIHJlY2VpdmVfY2FsbHMpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgeHRpX3RjcF9zdHJlYW1fcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQJPSBieXRlc19yZWNlaXZlZDsKICAgeHRpX3RjcF9zdHJlYW1fcmVzdWx0cy0+ZWxhcHNlZF90aW1lCT0gZWxhcHNlZF90aW1lOwogICB4dGlfdGNwX3N0cmVhbV9yZXN1bHRzLT5yZWN2X2NhbGxzCT0gcmVjZWl2ZV9jYWxsczsKLSAgCisKICAgaWYgKHh0aV90Y3Bfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgeHRpX3RjcF9zdHJlYW1fcmVzdWx0cy0+Y3B1X3V0aWwJPSBjYWxjX2NwdV91dGlsKDAuMCk7CiAgIH07Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3h0aV90Y3Bfc3RyZWFtOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKQEAgLTE2NjIsNyArMTY2MSw3IEBACiAJICAgIGxlbik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICB4dGlfdGNwX3N0cmVhbV9yZXN1bHRzLT5jcHVfbWV0aG9kID0gY3B1X21ldGhvZDsKICAgc2VuZF9yZXNwb25zZSgpOwogCkBAIC0xNjc1LDQ5ICsxNjc0LDQ5IEBACiAgLyogdGhpcyByb3V0aW5lIGltcGxlbWVudHMgdGhlIHNlbmRpbmcgKG5ldHBlcmYpIHNpZGUgb2YgdGhlIFhUSV9UQ1BfUlIgKi8KICAvKiB0ZXN0LiAqLwogCi12b2lkIAordm9pZAogc2VuZF94dGlfdGNwX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgXG4iOwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICVjICAgICUlICVjICAgIHVzL1RyICAgdXMvVHJcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2YgJWNcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICUtNmQgJS02LjJmICAlLTYuMmYgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0XG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCiBTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdlxuXAogJTVkICAlNWQgICAlNWQgICU1ZFxuIjsKLSAgCi0gIAorCisKICAgaW50CQkJdGltZWRfb3V0ID0gMDsKICAgZmxvYXQJCQllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIGludAlsZW47CiAgIGNoYXIJKnRlbXBfbWVzc2FnZV9wdHI7CiAgIGludAludW1tZXNzYWdlczsKQEAgLTE3MjcsMzggKzE3MjYsMzggQEAKIAogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7Ci0gIAorCiAgIGludAlyc3BfYnl0ZXNfbGVmdDsKICAgaW50CXJzcF9ieXRlc19yZWN2ZDsKLSAgCisKICAgZmxvYXQJbG9jYWxfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlsb2NhbF9zZXJ2aWNlX2RlbWFuZDsKICAgZmxvYXQJcmVtb3RlX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUJdGhydXB1dDsKLSAgCisKICAgc3RydWN0CWhvc3RlbnQJICAgICAgICAqaHA7CiAgIHN0cnVjdAlzb2NrYWRkcl9pbglzZXJ2ZXI7CiAgIHVuc2lnbmVkICAgICAgaW50ICAgICAgICAgICAgIGFkZHI7Ci0gIAorCiAgIHN0cnVjdCB0X2NhbGwgc2VydmVyX2NhbGw7CiAKICAgc3RydWN0CXh0aV90Y3BfcnJfcmVxdWVzdF9zdHJ1Y3QJKnh0aV90Y3BfcnJfcmVxdWVzdDsKICAgc3RydWN0CXh0aV90Y3BfcnJfcmVzcG9uc2Vfc3RydWN0CSp4dGlfdGNwX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJeHRpX3RjcF9ycl9yZXN1bHRzX3N0cnVjdAkqeHRpX3RjcF9ycl9yZXN1bHQ7Ci0gIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgaW50CWludGVydmFsX2NvdW50OwogICBzaWdzZXRfdCBzaWduYWxfc2V0OwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCiAKLSAgeHRpX3RjcF9ycl9yZXF1ZXN0ID0gCisgIHh0aV90Y3BfcnJfcmVxdWVzdCA9CiAgICAgKHN0cnVjdCB4dGlfdGNwX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICB4dGlfdGNwX3JyX3Jlc3BvbnNlPQogICAgIChzdHJ1Y3QgeHRpX3RjcF9ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICB4dGlfdGNwX3JyX3Jlc3VsdAk9CiAgICAgKHN0cnVjdCB4dGlfdGNwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwogI2VuZGlmIC8qIFdBTlRfSElTVE9HUkFNICovCkBAIC0xNzcwLDEwICsxNzY5LDEwIEBACiAKICAgYnplcm8oKGNoYXIgKikmc2VydmVyLAogCXNpemVvZihzZXJ2ZXIpKTsKLSAgCisKICAgLyogaXQgd291bGQgc2VlbSB0aGF0IHdoaWxlIEhQLVVYIHdpbGwgYWxsb3cgYW4gSVAgYWRkcmVzcyAoYXMgYSAqLwogICAvKiBzdHJpbmcpIGluIGEgY2FsbCB0byBnZXRob3N0YnluYW1lLCBvdGhlciwgbGVzcyBlbmxpZ2h0ZW5lZCAqLwotICAvKiBzeXN0ZW1zIGRvIG5vdC4gZml4IGZyb20gYXdqYWNrc0BjYS5zYW5kaWEuZ292IHJhaiAxMC85NSAqLyAgCisgIC8qIHN5c3RlbXMgZG8gbm90LiBmaXggZnJvbSBhd2phY2tzQGNhLnNhbmRpYS5nb3YgcmFqIDEwLzk1ICovCiAgIC8qIG9yZGVyIGNoYW5nZWQgdG8gY2hlY2sgZm9yIElQIGFkZHJlc3MgZmlyc3QuIHJhaiA3Lzk2ICovCiAKICAgaWYgKChhZGRyID0gaW5ldF9hZGRyKHJlbW90ZV9ob3N0KSkgPT0gU09DS0VUX0VSUk9SKSB7CkBAIC0xNzk4LDggKzE3OTcsOCBAQAogICAgIC8qIGl0IHdhcyBhIHZhbGlkIElQIGFkZHJlc3MgKi8KICAgICBzZXJ2ZXIuc2luX2FkZHIuc19hZGRyID0gYWRkcjsKICAgICBzZXJ2ZXIuc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0gIH0gICAgCi0gIAorICB9CisKICAgaWYgKCBwcmludF9oZWFkZXJzICkgewogICAgIGZwcmludGYod2hlcmUsIlhUSSBUQ1AgUkVRVUVTVC9SRVNQT05TRSBURVNUIik7CiAgICAgZnByaW50Zih3aGVyZSwiIHRvICVzIiwgcmVtb3RlX2hvc3QpOwpAQCAtMTgxMiw3ICsxODExLDcgQEAKICAgICBpZiAobG9jX25vZGVsYXkgfHwgcmVtX25vZGVsYXkpIHsKICAgICAgIGZwcmludGYod2hlcmUsIiA6IG5vZGVsYXkiKTsKICAgICB9Ci0gICAgaWYgKGxvY19zbmRhdm9pZCB8fCAKKyAgICBpZiAobG9jX3NuZGF2b2lkIHx8CiAJbG9jX3JjdmF2b2lkIHx8CiAJcmVtX3NuZGF2b2lkIHx8CiAJcmVtX3JjdmF2b2lkKSB7CkBAIC0xODI0LDE0ICsxODIzLDE0IEBACiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBmcHJpbnRmKHdoZXJlLCIgOiBpbnRlcnZhbCIpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0jaWZkZWYgRElSVFkgCisjaWZkZWYgRElSVFkKICAgICBmcHJpbnRmKHdoZXJlLCIgOiBkaXJ0eSBkYXRhIik7CiAjZW5kaWYgLyogRElSVFkgKi8KICAgICBmcHJpbnRmKHdoZXJlLCJcbiIpOwogICB9Ci0gIAorCiAgIC8qIGluaXRpYWxpemUgYSBmZXcgY291bnRlcnMgKi8KLSAgCisKICAgc2VuZF9yaW5nID0gTlVMTDsKICAgcmVjdl9yaW5nID0gTlVMTDsKICAgY29uZmlkZW5jZV9pdGVyYXRpb24gPSAxOwpAQCAtMTg2Miw3ICsxODYxLDcgQEAKIAogICAgIGlmIChzZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAxOwogICAgIGlmIChyZWN2X3dpZHRoID09IDApIHJlY3Zfd2lkdGggPSAxOwotICAKKwogICAgIGlmIChzZW5kX3JpbmcgPT0gTlVMTCkgewogICAgICAgc2VuZF9yaW5nID0gYWxsb2NhdGVfYnVmZmVyX3Jpbmcoc2VuZF93aWR0aCwKIAkJCQkgICAgICAgcmVxX3NpemUsCkBAIC0xODc2LDE1ICsxODc1LDE1IEBACiAJCQkJICAgICAgIGxvY2FsX3JlY3ZfYWxpZ24sCiAJCQkJICAgICAgIGxvY2FsX3JlY3Zfb2Zmc2V0KTsKICAgICB9Ci0gICAgCisKICAgICAvKnNldCB1cCB0aGUgZGF0YSBzb2NrZXQgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHNlbmRfc29ja2V0ID0gY3JlYXRlX3h0aV9lbmRwb2ludChsb2NfeHRpX2RldmljZSk7Ci0gIAorCiAgICAgaWYgKHNlbmRfc29ja2V0ID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF94dGlfdGNwX3JyOiB0Y3Agc3RyZWFtIGRhdGEgc29ja2V0Iik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF94dGlfdGNwX3JyOiBzZW5kX3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgICAgfQpAQCAtMTg5OCwxOCArMTg5NywxOCBAQAogICAgICAgdF9lcnJvcigic2VuZF94dGlfdGNwX3N0cmVhbTogdF9iaW5kIik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgCisKICAgICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QgKi8KICAgICAvKiBjYWxpYnJhdGUgdGhlIGNwdShzKS4gV2Ugd2lsbCBwZXJmb3JtIHRoaXMgdGFzayB3aXRoaW4gdGhlIHRlc3RzICovCiAgICAgLyogdGhlbXNlbHZlcy4gSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGUgY3B1IHJhdGUsIHRoZW4gKi8KICAgICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwogICAgIC8qIG5vdGhpbmcgdG8gZG8uIElmIGxvY2FsX2NwdV9yYXRlIGlzIHplcm8sIHRoZW4gd2Ugd2lsbCBnbyB0aHJvdWdoICovCiAgICAgLyogYWxsIHRoZSAibm9ybWFsIiBjYWxpYnJhdGlvbiBzdHVmZiBhbmQgcmV0dXJuIHRoZSByYXRlIGJhY2suKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgICAgfQotICAgIAorCiAgICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlIHNvY2tldCAqLwogICAgIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwogICAgIC8qIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkICovCkBAIC0xOTE3LDcgKzE5MTYsNyBAQAogICAgIC8qIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyAqLwogICAgIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICovCiAgICAgLyogZGVmYXVsdCB0byA4LCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgICAKKwogICAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQk9CURPX1hUSV9UQ1BfUlI7CiAgICAgeHRpX3RjcF9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemU7CiAgICAgeHRpX3RjcF9ycl9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemU7CkBAIC0xOTQwLDkgKzE5MzksOSBAQAogICAgIH0KIAogICAgIHN0cmNweSh4dGlfdGNwX3JyX3JlcXVlc3QtPnh0aV9kZXZpY2UsIHJlbV94dGlfZGV2aWNlKTsKLSAgCisKICNpZmRlZiBfX2FscGhhCi0gIAorCiAgICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaWRuJ3QgcmVhbGx5IHdhbnQgKi8KICAgICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0xOTUzLDI1ICsxOTUyLDI1IEBACiAgICAgICBpbnQgKmNoYXJ3b3JkOwogICAgICAgaW50ICppbml0d29yZDsKICAgICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgICAKKwogICAgICAgaW5pdHdvcmQgPSAoaW50ICopIHh0aV90Y3BfcnJfcmVxdWVzdC0+eHRpX2RldmljZTsKICAgICAgIGxhc3R3b3JkID0gaW5pdHdvcmQgKyAoKHN0cmxlbihyZW1feHRpX2RldmljZSkgKyAzKSAvIDQpOwotICAgICAgCisKICAgICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgICBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSAgIGNoYXJ3b3JkKyspIHsKLQkKKwogCSpjaGFyd29yZCA9IG50b2hsKCpjaGFyd29yZCk7CiAgICAgICB9CiAgICAgfQogI2VuZGlmIC8qIF9fYWxwaGEgKi8KLSAgICAKKwogICAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICAgIGZwcmludGYod2hlcmUsIm5ldHBlcmY6IHNlbmRfeHRpX3RjcF9ycjogcmVxdWVzdGluZyBUQ1AgcnIgdGVzdFxuIik7CiAgICAgfQotICAgIAorCiAgICAgc2VuZF9yZXF1ZXN0KCk7Ci0gICAgCisKICAgICAvKiBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHJlbGV2YW50IAkqLwogICAgIC8qIHNvY2tldCBwYXJhbWV0ZXJzIGZvciB0aGlzIHRlc3QgdHlwZS4gV2Ugd2lsbCBwdXQgdGhlbSBiYWNrIGludG8gKi8KICAgICAvKiB0aGUgdmFyaWFibGVzIGhlcmUgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGlmIGRlc2lyZWQuICBUaGUJKi8KQEAgLTE5ODEsOSArMTk4MCw5IEBACiAgICAgLyogYWZ0ZXIgdGhlIGNvbm5lY3QgcmV0dXJucy4gVGhlIHJlbW90ZSB3aWxsIGdyYWIgdGhlIGNvdW50ZXIgcmlnaHQqLwogICAgIC8qIGFmdGVyIHRoZSBhY2NlcHQgY2FsbC4gVGhpcyBzYXZlcyB0aGUgaGFzc2xlIG9mIGV4dHJhIG1lc3NhZ2VzCSovCiAgICAgLyogYmVpbmcgc2VudCBmb3IgdGhlIFRDUCB0ZXN0cy4JCQkJCSovCi0gIAorCiAgICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICAgIGlmIChkZWJ1ZykKIAlmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTE5OTksMTcgKzE5OTgsMTcgQEAKICAgICBlbHNlIHsKICAgICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgICAgCisKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLypDb25uZWN0IHVwIHRvIHRoZSByZW1vdGUgcG9ydCBvbiB0aGUgZGF0YSBzb2NrZXQgICovCiAgICAgbWVtc2V0ICgmc2VydmVyX2NhbGwsIDAsIHNpemVvZihzZXJ2ZXJfY2FsbCkpOwogICAgIHNlcnZlcl9jYWxsLmFkZHIubWF4bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgICAgc2VydmVyX2NhbGwuYWRkci5sZW4gICAgPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKICAgICBzZXJ2ZXJfY2FsbC5hZGRyLmJ1ZiAgICA9IChjaGFyICopJnNlcnZlcjsKIAotICAgIGlmICh0X2Nvbm5lY3Qoc2VuZF9zb2NrZXQsIAorICAgIGlmICh0X2Nvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCSAgJnNlcnZlcl9jYWxsLAogCQkgIE5VTEwpID09IElOVkFMSURfU09DS0VUKXsKICAgICAgIHRfZXJyb3IoIm5ldHBlcmY6IHNlbmRfeHRpX3RjcF9ycjogZGF0YSBzb2NrZXQgY29ubmVjdCBmYWlsZWQiKTsKQEAgLTIwMjIsMTAgKzIwMjEsMTAgQEAKICAgICAvKiBpbmRpY2F0ZWQgYSBwcm9ibGVtLiBJIGZhaWxlZCB0byBzZWUgdGhlIHZhbHVlIG9mIHRoZSBleHRyYSAqLwogICAgIC8qIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsIHdlJ2xsIHNlZSBpdCAqLwogICAgIC8qIGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCi0gICAgCisKICAgICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwogICAgIC8qIGNhbiBiZSBlaXRoZXIgdGltZSBvciB0cmFuc2FjdGlvbiBiYXNlZC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICAgIHRpbWVzX3VwID0gMDsKQEAgLTIwMzcsMTEgKzIwMzYsMTEgQEAKICAgICAgIHRyYW5zX3JlbWFpbmluZyA9IHRlc3RfYnl0ZXM7CiAgICAgICB0aW1lc191cCA9IDE7CiAgICAgfQotICAgIAorCiAgICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAgIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAgIAorCiAgICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7CiAKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwpAQCAtMjA2MCw3ICsyMDU5LDcgQEAKICAgICAgIGV4aXQoMSk7CiAgICAgfQogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgCisKICAgICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzICovCiAgICAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICovCiAgICAgLyogV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3Qgd2lsbCAqLwpAQCAtMjA3MywxMyArMjA3MiwxMyBAQAogICAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKICAgICAgIC8qIHNlbmQgdGhlIHJlcXVlc3QuIHdlIGFzc3VtZSB0aGF0IGlmIHdlIHVzZSBhIGJsb2NraW5nIHNvY2tldCwgKi8KICAgICAgIC8qIHRoZSByZXF1ZXN0IHdpbGwgYmUgc2VudCBhdCBvbmUgc2hvdC4gKi8KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIC8qIHRpbWVzdGFtcCBqdXN0IGJlZm9yZSBvdXIgY2FsbCB0byBzZW5kLCBhbmQgdGhlbiBhZ2FpbiBqdXN0ICovCiAgICAgICAvKiBhZnRlciB0aGUgcmVjZWl2ZSByYWogOC85NCAqLwogICAgICAgSElTVF90aW1lc3RhbXAoJnRpbWVfb25lKTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwotICAgICAgCisKICAgICAgIGlmKChsZW49dF9zbmQoc2VuZF9zb2NrZXQsCiAJCSAgICBzZW5kX3JpbmctPmJ1ZmZlcl9wdHIsCiAJCSAgICByZXFfc2l6ZSwKQEAgLTIwOTksNyArMjA5OCw3IEBACiAgICAgICAgIGV4aXQoMSk7CiAgICAgICB9CiAgICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7Ci0gICAgICAKKwogICAgICAgLyogcmVjZWl2ZSB0aGUgcmVzcG9uc2UgKi8KICAgICAgIHJzcF9ieXRlc19sZWZ0ID0gcnNwX3NpemU7CiAgICAgICB0ZW1wX21lc3NhZ2VfcHRyICA9IHJlY3ZfcmluZy0+YnVmZmVyX3B0cjsKQEAgLTIxMjMsMjAgKzIxMjIsMjAgQEAKIAl9CiAJcnNwX2J5dGVzX2xlZnQgLT0gcnNwX2J5dGVzX3JlY3ZkOwogCXRlbXBfbWVzc2FnZV9wdHIgICs9IHJzcF9ieXRlc19yZWN2ZDsKLSAgICAgIH0JCisgICAgICB9CiAgICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7Ci0gICAgICAKKwogICAgICAgaWYgKHRpbWVkX291dCkgewogCS8qIHdlIG1heSBoYXZlIGJlZW4gaW4gYSBuZXN0ZWQgd2hpbGUgbG9vcCAtIHdlIG5lZWQgKi8KIAkvKiBhbm90aGVyIGNhbGwgdG8gYnJlYWsuICovCiAJYnJlYWs7CiAgICAgICB9Ci0gICAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwogICAgICAgSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwotI2lmZGVmIFdBTlRfSU5URVJWQUxTICAgICAgCisjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICAgIGlmIChkZW1vX21vZGUpIHsKIAl1bml0c190aGlzX3RpY2sgKz0gMTsKICAgICAgIH0KQEAgLTIxNTgsMTIgKzIxNTcsMTIgQEAKIAlpbnRlcnZhbF9jb3VudCA9IGludGVydmFsX2J1cnN0OwogICAgICAgfQogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgICAKLSAgICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorCisgICAgICBudW1tZXNzYWdlcysrOwogICAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogCXRyYW5zX3JlbWFpbmluZy0tOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChkZWJ1ZyA+IDMpIHsKIAlpZiAoKG51bW1lc3NhZ2VzICUgMTAwKSA9PSAwKSB7CiAJICBmcHJpbnRmKHdoZXJlLApAQCAtMjE3NCwxOCArMjE3MywxOCBAQAogICAgICAgfQogICAgIH0KIAotICAgIAorCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCi0gICAgCisKICAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgKi8KIAkJCQkJCS8qIG1lYXN1cmVkPyBob3cgbG9uZyAqLwogCQkJCQkJLyogZGlkIHdlIHJlYWxseSBydW4/ICovCi0gICAgCisKICAgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgICAvKiBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcgdGhpbmdzLiBJZiBpdCAqLwogICAgIC8qIHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KLSAgICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgICBpZiAoZGVidWcpCkBAIC0yMTk0LDE1ICsyMTkzLDE1IEBACiAgICAgZWxzZSB7CiAgICAgICBTZXRfZXJybm8obmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwogICAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiAqLwotICAKKwogICAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICAgIHRocnVwdXQJPSBudW1tZXNzYWdlcy9lbGFwc2VkX3RpbWU7Ci0gIAorCiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCiAgICAgICAvKiB1dGlsaXphdGlvbiBmb3IgdGhlIHN5c3RlbShzKSAqLwpAQCAtMjIyMyw3ICsyMjIyLDcgQEAKIAlsb2NhbF9jcHVfdXRpbGl6YXRpb24JPSAtMS4wOwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gLTEuMDsKICAgICAgIH0KLSAgICAgIAorCiAgICAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgewogCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSB4dGlfdGNwX3JyX3Jlc3VsdC0+Y3B1X3V0aWw7CiAJLyogc2luY2UgY2FsY19zZXJ2aWNlIGRlbWFuZCBpcyBkb2luZyBtcy9LdW5pdCB3ZSB3aWxsICovCkBAIC0yMjM4LDcgKzIyMzcsNyBAQAogCXJlbW90ZV9jcHVfdXRpbGl6YXRpb24gPSAtMS4wOwogCXJlbW90ZV9zZXJ2aWNlX2RlbWFuZCAgPSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiB3ZSB3ZXJlIG5vdCBtZWFzdXJpbmcgY3B1LCBmb3IgdGhlIGNvbmZpZGVuY2Ugc3R1ZmYsIHdlICovCkBAIC0yMjUyLDcgKzIyNTEsNyBAQAogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoZSBjb25maWRlbmNlIGluZm9ybWF0aW9uLiAqLwogICAgIC8qIGlmIGRlYnVnZ2luZyBpcyBvbiwgY2FsY3VsYXRlX2NvbmZpZGVuY2Ugd2lsbCBwcmludC1vdXQgdGhlICovCiAgICAgLyogcGFyYW1ldGVycyB3ZSBwYXNzIGl0ICovCi0gICAgCisKICAgICBjYWxjdWxhdGVfY29uZmlkZW5jZShjb25maWRlbmNlX2l0ZXJhdGlvbiwKIAkJCSBlbGFwc2VkX3RpbWUsCiAJCQkgdGhydXB1dCwKQEAgLTIyNjAsOCArMjI1OSw4IEBACiAJCQkgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKIAkJCSBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJCSByZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAgIAotICAgIAorCisKICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbisrOwogCiAgICAgLyogd2UgYXJlIG5vdyBkb25lIHdpdGggdGhlIHNvY2tldCwgc28gY2xvc2UgaXQgKi8KQEAgLTIyOTUsNyArMjI5NCw3IEBACiAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgIGxvY2FsX2NwdV9tZXRob2QgPSBmb3JtYXRfY3B1X21ldGhvZChjcHVfbWV0aG9kKTsKICAgICByZW1vdGVfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKHh0aV90Y3BfcnJfcmVzdWx0LT5jcHVfbWV0aG9kKTsKLSAgICAKKwogICAgIHN3aXRjaCAodmVyYm9zaXR5KSB7CiAgICAgY2FzZSAwOgogICAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSkgewpAQCAtMjM0MSw3ICsyMzQwLDcgQEAKICAgfQogICBlbHNlIHsKICAgICAvKiBUaGUgdGVzdGVyIGRpZCBub3Qgd2lzaCB0byBtZWFzdXJlIHNlcnZpY2UgZGVtYW5kLiAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBmcHJpbnRmKHdoZXJlLApAQCAtMjM2NiwxNyArMjM2NSwxNyBAQAogCSAgICAgIHRwdXRfZm10XzFfbGluZV8yLAogCSAgICAgIHJzc19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KIAkgICAgICByc3Jfc2l6ZSk7Ci0gICAgICAKKwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIAorCiAgIC8qIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluZyB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHNvbWUgb2YgdGhlICovCiAgIC8qIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyB0ZXN0LCBidXQgYXQgdGhlICovCiAgIC8qIG1vbWVudCwgSSBkbyBub3Qgd2lzaCB0byBmaWd1cmUtb3V0IGFsbCB0aGUgIGZvcm1hdHRpbmcsIHNvIEkgd2lsbCAqLwogICAvKiBqdXN0IHB1dCB0aGlzIGNvbW1lbnQgaGVyZSB0byBoZWxwIHJlbWluZCBtZSB0aGF0IGl0IGlzIHNvbWV0aGluZyAqLwogICAvKiB0aGF0IHNob3VsZCBiZSBkb25lIGF0IGEgbGF0ZXIgdGltZS4gKi8KLSAgCisKICAgLyogaG93IHRvIGhhbmRsZSB0aGUgdmVyYm9zZSBpbmZvcm1hdGlvbiBpbiB0aGUgcHJlc2VuY2Ugb2YgKi8KICAgLyogY29uZmlkZW5jZSBpbnRlcnZhbHMgaXMgeWV0IHRvIGJlIGRldGVybWluZWQuLi4gcmFqIDExLzk0ICovCiAgIGlmICh2ZXJib3NpdHkgPiAxKSB7CkBAIC0yMzg0LDcgKzIzODMsNyBAQAogICAgIC8qIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgKi8KICAgICAvKiBUQ1Agc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyAqLwogICAgIC8qIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLwotICAgIAorCiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAga3NpbmtfZm10LAogCSAgICBsb2NhbF9zZW5kX2FsaWduLApAQCAtMjM5OSw3ICsyMzk4LDcgQEAKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwogCiAgIH0KLSAgCisKIH0KIAwKIHZvaWQKQEAgLTI0MTQsNDcgKzI0MTMsNDcgQEAKIFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgIE1lc3NhZ2VzICAgICAgICAgICAgICAgIFxuXAogU2l6ZSAgICBTaXplICAgICBUaW1lICAgICAgICAgT2theSBFcnJvcnMgICBUaHJvdWdocHV0XG5cCiBieXRlcyAgIGJ5dGVzICAgIHNlY3MgICAgICAgICAgICAjICAgICAgIyAgICVzL3NlY1xuXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8wID0KICAgICAiJTcuMmZcbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzEgPSAiXAogJTZkICAlNmQgICAlLTcuMmYgICAlN2QgJTZkICAgICU3LjJmXG5cCiAlNmQgICAgICAgICAgICUtNy4yZiAgICU3ZCAgICAgICAgICAgJTcuMmZcblxuIjsKLSAgCi0gIAorCisKICAgY2hhciAqY3B1X3RpdGxlID0gIlwKIFNvY2tldCAgTWVzc2FnZSAgRWxhcHNlZCAgICAgIE1lc3NhZ2VzICAgICAgICAgICAgICAgICAgIENQVSAgICAgIFNlcnZpY2VcblwKIFNpemUgICAgU2l6ZSAgICAgVGltZSAgICAgICAgIE9rYXkgRXJyb3JzICAgVGhyb3VnaHB1dCAgIFV0aWwgICAgIERlbWFuZFxuXAogYnl0ZXMgICBieXRlcyAgICBzZWNzICAgICAgICAgICAgIyAgICAgICMgICAlcy9zZWMgJSUgJWMlYyAgICAgdXMvS0JcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuMmYgJWNcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMSA9ICJcCiAlNmQgICU2ZCAgICUtNy4yZiAgICU3ZCAlNmQgICAgJTcuMWYgICAgICUtNi4yZiAgICUtNi4zZlxuXAogJTZkICAgICAgICAgICAlLTcuMmYgICAlN2QgICAgICAgICAgICU3LjFmICAgICAlLTYuMmYgICAlLTYuM2ZcblxuIjsKLSAgCisKICAgdW5zaWduZWQgaW50CW1lc3NhZ2VzX3JlY3ZkOwogICB1bnNpZ25lZCBpbnQgCW1lc3NhZ2VzX3NlbnQ7CiAgIHVuc2lnbmVkIGludAlmYWlsZWRfc2VuZHM7CiAKLSAgZmxvYXQJZWxhcHNlZF90aW1lLCAgCisgIGZsb2F0CWVsYXBzZWRfdGltZSwKICAgICAgICAgcmVjdl9lbGFwc2VkLAogICAgICAgICBsb2NhbF9jcHVfdXRpbGl6YXRpb24sCiAgICAgICAgIHJlbW90ZV9jcHVfdXRpbGl6YXRpb247Ci0gIAorCiAgIGZsb2F0CSBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwgcmVtb3RlX3NlcnZpY2VfZGVtYW5kOwogICBkb3VibGUgbG9jYWxfdGhydXB1dCwgcmVtb3RlX3RocnVwdXQ7CiAgIGRvdWJsZSBieXRlc19zZW50OwogICBkb3VibGUgYnl0ZXNfcmVjdmQ7Ci0gIAotICAKKworCiAgIGludAlsZW47CiAgIGludAkqbWVzc2FnZV9pbnRfcHRyOwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKICAgU09DS0VUIGRhdGFfc29ja2V0OwotICAKKwogICB1bnNpZ25lZCBpbnQgc3VtX21lc3NhZ2VzX3NlbnQ7CiAgIHVuc2lnbmVkIGludCBzdW1fbWVzc2FnZXNfcmVjdmQ7CiAgIHVuc2lnbmVkIGludCBzdW1fZmFpbGVkX3NlbmRzOwpAQCAtMjQ2NCwyNCArMjQ2MywyNCBAQAogICBpbnQJaW50ZXJ2YWxfY291bnQ7CiAgIHNpZ3NldF90IHNpZ25hbF9zZXQ7CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgCisKICAgc3RydWN0ICAgaG9zdGVudCAgICAgKmhwOwogICBzdHJ1Y3QgICBzb2NrYWRkcl9pbiBzZXJ2ZXI7CiAgIHVuc2lnbmVkIGludCAgICAgICAgIGFkZHI7Ci0gIAorCiAgIHN0cnVjdCB0X3VuaXRkYXRhIHVuaXRkYXRhOwotICAgCisKICAgc3RydWN0IHh0aV91ZHBfc3RyZWFtX3JlcXVlc3Rfc3RydWN0CSp4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0OwogICBzdHJ1Y3QgeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0CSp4dGlfdWRwX3N0cmVhbV9yZXNwb25zZTsKICAgc3RydWN0IHh0aV91ZHBfc3RyZWFtX3Jlc3VsdHNfc3RydWN0CSp4dGlfdWRwX3N0cmVhbV9yZXN1bHRzOwotICAKLSAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdCAgPSAKKworICB4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0ICA9CiAgICAgKHN0cnVjdCB4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2UgPSAKKyAgeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgeHRpX3VkcF9zdHJlYW1fcmVzdWx0cyAgPSAKKyAgeHRpX3VkcF9zdHJlYW1fcmVzdWx0cyAgPQogICAgIChzdHJ1Y3QgeHRpX3VkcF9zdHJlYW1fcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgIHRpbWVfaGlzdCA9IEhJU1RfbmV3KCk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KQEAgLTI0OTAsMTMgKzI0ODksMTMgQEAKICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIGJ6ZXJvKChjaGFyICopJnNlcnZlciwKIAlzaXplb2Yoc2VydmVyKSk7Ci0gIAorCiAgIC8qIGl0IHdvdWxkIHNlZW0gdGhhdCB3aGlsZSBIUC1VWCB3aWxsIGFsbG93IGFuIElQIGFkZHJlc3MgKGFzIGEgKi8KICAgLyogc3RyaW5nKSBpbiBhIGNhbGwgdG8gZ2V0aG9zdGJ5bmFtZSwgb3RoZXIsIGxlc3MgZW5saWdodGVuZWQgKi8KLSAgLyogc3lzdGVtcyBkbyBub3QuIGZpeCBmcm9tIGF3amFja3NAY2Euc2FuZGlhLmdvdiByYWogMTAvOTUgKi8gIAorICAvKiBzeXN0ZW1zIGRvIG5vdC4gZml4IGZyb20gYXdqYWNrc0BjYS5zYW5kaWEuZ292IHJhaiAxMC85NSAqLwogICAvKiBvcmRlciBjaGFuZ2VkIHRvIGNoZWNrIGZvciBJUCBhZGRyZXNzIGZpcnN0LiByYWogNy85NiAqLwogCiAgIGlmICgoYWRkciA9IGluZXRfYWRkcihyZW1vdGVfaG9zdCkpID09IFNPQ0tFVF9FUlJPUikgewpAQCAtMjUyMSw4ICsyNTIwLDggQEAKICAgICAvKiBpdCB3YXMgYSB2YWxpZCBJUCBhZGRyZXNzICovCiAgICAgc2VydmVyLnNpbl9hZGRyLnNfYWRkciA9IGFkZHI7CiAgICAgc2VydmVyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICB9ICAgIAotICAKKyAgfQorCiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICBmcHJpbnRmKHdoZXJlLCJVRFAgVU5JRElSRUNUSU9OQUwgU0VORCBURVNUIik7CiAgICAgZnByaW50Zih3aGVyZSwiIHRvICVzIiwgcmVtb3RlX2hvc3QpOwpAQCAtMjUzMiw3ICsyNTMxLDcgQEAKIAkgICAgICBpbnRlcnZhbC8wLjAyLAogCSAgICAgIGNvbmZpZGVuY2VfbGV2ZWwpOwogICAgICAgfQotICAgIGlmIChsb2Nfc25kYXZvaWQgfHwgCisgICAgaWYgKGxvY19zbmRhdm9pZCB8fAogCWxvY19yY3Zhdm9pZCB8fAogCXJlbV9zbmRhdm9pZCB8fAogCXJlbV9yY3Zhdm9pZCkgewpAQCAtMjU0NCwxMiArMjU0MywxMiBAQAogI2lmZGVmIFdBTlRfSU5URVJWQUxTCiAgICAgZnByaW50Zih3aGVyZSwiIDogaW50ZXJ2YWwiKTsKICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotI2lmZGVmIERJUlRZIAorI2lmZGVmIERJUlRZCiAgICAgZnByaW50Zih3aGVyZSwiIDogZGlydHkgZGF0YSIpOwogI2VuZGlmIC8qIERJUlRZICovCiAgICAgZnByaW50Zih3aGVyZSwiXG4iKTsKLSAgfQkKLSAgCisgIH0KKwogICBzZW5kX3JpbmcgICAgICAgICAgICA9IE5VTEw7CiAgIGNvbmZpZGVuY2VfaXRlcmF0aW9uID0gMTsKICAgaW5pdF9zdGF0KCk7CkBAIC0yNTY3LDE3ICsyNTY2LDE3IEBACiAKICAgd2hpbGUgKCgoY29uZmlkZW5jZSA8IDApICYmIChjb25maWRlbmNlX2l0ZXJhdGlvbiA8IGl0ZXJhdGlvbl9tYXgpKSB8fAogCSAoY29uZmlkZW5jZV9pdGVyYXRpb24gPD0gaXRlcmF0aW9uX21pbikpIHsKLSAgICAKKwogICAgIC8qIGluaXRpYWxpemUgYSBmZXcgY291bnRlcnMuIHdlIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCB3ZSBtaWdodCBiZSAqLwogICAgIC8qIGdvaW5nIHRocm91Z2ggdGhlIGxvb3AgbW9yZSB0aGFuIG9uY2UuICovCiAgICAgbWVzc2FnZXNfc2VudCAgPSAwOwogICAgIG1lc3NhZ2VzX3JlY3ZkID0gMDsKICAgICBmYWlsZWRfc2VuZHMgICA9IDA7CiAgICAgdGltZXNfdXAgICAgICAgPSAwOwotICAgIAorCiAgICAgLypzZXQgdXAgdGhlIGRhdGEgc29ja2V0CQkJKi8KICAgICBkYXRhX3NvY2tldCA9IGNyZWF0ZV94dGlfZW5kcG9pbnQobG9jX3h0aV9kZXZpY2UpOwotICAgIAorCiAgICAgaWYgKGRhdGFfc29ja2V0ID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgICBwZXJyb3IoInNlbmRfeHRpX3VkcF9zdHJlYW06IGNyZWF0ZV94dGlfZW5kcG9pbnQiKTsKICAgICAgIGV4aXQoMSk7CkBAIC0yNTk3LDM2ICsyNTk2LDM2IEBACiAJc2VuZF9zaXplID0gNDA5NjsKICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICAvKiBzZXQtdXAgdGhlIGRhdGEgYnVmZmVyIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQgYW5kIG9mZnNldCwgKi8KICAgICAvKiBtb3N0IG9mIHRoZSBudW1iZXJzIGhlcmUgYXJlIGp1c3QgYSBoYWNrIHRvIHBpY2sgc29tZXRoaW5nIG5pY2UgKi8KICAgICAvKiBhbmQgYmlnIGluIGFuIGF0dGVtcHQgdG8gbmV2ZXIgdHJ5IHRvIHNlbmQgYSBidWZmZXIgYSBzZWNvbmQgdGltZSAqLwogICAgIC8qIGJlZm9yZSBpdCBsZWF2ZXMgdGhlIG5vZGUuLi51bmxlc3MgdGhlIHVzZXIgc2V0IHRoZSB3aWR0aCAqLwogICAgIC8qIGV4cGxpY2l0bHkuICovCiAgICAgaWYgKHNlbmRfd2lkdGggPT0gMCkgc2VuZF93aWR0aCA9IDMyOwotICAgIAorCiAgICAgaWYgKHNlbmRfcmluZyA9PSBOVUxMICkgewogICAgICAgc2VuZF9yaW5nID0gYWxsb2NhdGVfYnVmZmVyX3Jpbmcoc2VuZF93aWR0aCwKIAkJCQkgICAgICAgc2VuZF9zaXplLAogCQkJCSAgICAgICBsb2NhbF9zZW5kX2FsaWduLAogCQkJCSAgICAgICBsb2NhbF9zZW5kX29mZnNldCk7CiAgICAgfQotICAgIAotICAgIAorCisKICAgICAvKiBpZiB0aGUgdXNlciBzdXBwbGllZCBhIGNwdSByYXRlLCB0aGlzIGNhbGwgd2lsbCBjb21wbGV0ZSByYXRoZXIgKi8KICAgICAvKiBxdWlja2x5LCBvdGhlcndpc2UsIHRoZSBjcHUgcmF0ZSB3aWxsIGJlIHJldHVyZWQgdG8gdXMgZm9yICovCiAgICAgLyogcG9zc2libGUgZGlzcGxheS4gVGhlIExpYnJhcnkgd2lsbCBrZWVwIGl0J3Mgb3duIGNvcHkgb2YgdGhpcyBkYXRhICovCiAgICAgLyogZm9yIHVzZSBlbHNld2hlcmUuIFdlIHdpbGwgb25seSBkaXNwbGF5IGl0LiAoRG9lcyB0aGF0IG1ha2UgaXQgKi8KICAgICAvKiAib3BhcXVlIiB0byB1cz8pICovCi0gICAgCisKICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKQogICAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKLSAgICAKKwogICAgIC8qIFRlbGwgdGhlIHJlbW90ZSBlbmQgdG8gc2V0IHVwIHRoZSBkYXRhIGNvbm5lY3Rpb24uIFRoZSBzZXJ2ZXIgKi8KICAgICAvKiBzZW5kcyBiYWNrIHRoZSBwb3J0IG51bWJlciBhbmQgYWx0ZXJzIHRoZSBzb2NrZXQgcGFyYW1ldGVycyB0aGVyZS4gKi8KICAgICAvKiBPZiBjb3Vyc2UgdGhpcyBpcyBhIGRhdGFncmFtIHNlcnZpY2Ugc28gbm8gY29ubmVjdGlvbiBpcyBhY3R1YWxseSAqLwogICAgIC8qIHNldCB1cCwgdGhlIHNlcnZlciBqdXN0IHNldHMgdXAgdGhlIHNvY2tldCBhbmQgYmluZHMgaXQuICovCi0gICAgCisKICAgICBuZXRwZXJmX3JlcXVlc3QuY29udGVudC5yZXF1ZXN0X3R5cGUgICAgICA9IERPX1hUSV9VRFBfU1RSRUFNOwogICAgIHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPnJlY3ZfYnVmX3NpemUgID0gcnNyX3NpemU7CiAgICAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+bWVzc2FnZV9zaXplICAgPSBzZW5kX3NpemU7CkBAIC0yNjM3LDExICsyNjM2LDExIEBACiAgICAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+dGVzdF9sZW5ndGggICAgPSB0ZXN0X3RpbWU7CiAgICAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+c29fcmN2YXZvaWQgICAgPSByZW1fcmN2YXZvaWQ7CiAgICAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+c29fc25kYXZvaWQgICAgPSByZW1fc25kYXZvaWQ7Ci0gICAgCisKICAgICBzdHJjcHkoeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+eHRpX2RldmljZSwgcmVtX3h0aV9kZXZpY2UpOwotICAKKwogI2lmZGVmIF9fYWxwaGEKLSAgCisKICAgICAvKiBvayAtIGV2ZW4gb24gYSBERUMgYm94LCBzdHJpbmdzIGFyZSBzdHJpbmdzLiBJIGRpZG4ndCByZWFsbHkgd2FudCAqLwogICAgIC8qIHRvIG50b2hsIHRoZSB3b3JkcyBvZiBhIHN0cmluZy4gc2luY2UgSSBkb24ndCB3YW50IHRvIHRlYWNoIHRoZSAqLwogICAgIC8qIHNlbmRfIGFuZCByZWN2XyBfcmVxdWVzdCBhbmQgX3Jlc3BvbnNlIHJvdXRpbmVzIGFib3V0IHRoZSB0eXBlcywgKi8KQEAgLTI2NTIsMjMgKzI2NTEsMjMgQEAKICAgICAgIGludCAqY2hhcndvcmQ7CiAgICAgICBpbnQgKmluaXR3b3JkOwogICAgICAgaW50ICpsYXN0d29yZDsKLSAgICAgIAorCiAgICAgICBpbml0d29yZCA9IChpbnQgKikgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+eHRpX2RldmljZTsKICAgICAgIGxhc3R3b3JkID0gaW5pdHdvcmQgKyAoKHN0cmxlbihyZW1feHRpX2RldmljZSkgKyAzKSAvIDQpOwotICAgICAgCisKICAgICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgICBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSAgIGNoYXJ3b3JkKyspIHsKLQkKKwogCSpjaGFyd29yZCA9IG50b2hsKCpjaGFyd29yZCk7CiAgICAgICB9CiAgICAgfQogI2VuZGlmIC8qIF9fYWxwaGEgKi8KIAogICAgIHNlbmRfcmVxdWVzdCgpOwotICAgIAorCiAgICAgcmVjdl9yZXNwb25zZSgpOwotICAgIAorCiAgICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgICAgaWYgKGRlYnVnKQogCWZwcmludGYod2hlcmUsInNlbmRfeHRpX3VkcF9zdHJlYW06IHJlbW90ZSBkYXRhIGNvbm5lY3Rpb24gZG9uZS5cbiIpOwpAQCAtMjY3OCwyNSArMjY3NywyNSBAQAogICAgICAgcGVycm9yKCJzZW5kX3h0aV91ZHBfc3RyZWFtOiBlcnJvciBvbiByZW1vdGUiKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLyogUGxhY2UgdGhlIHBvcnQgbnVtYmVyIHJldHVybmVkIGJ5IHRoZSByZW1vdGUgaW50byB0aGUgc29ja2FkZHIgKi8KICAgICAvKiBzdHJ1Y3R1cmUgc28gb3VyIHNlbmRzIGNhbiBiZSBzZW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlLiBBbHNvIGdldCAqLwogICAgIC8qIHNvbWUgb2YgdGhlIHJldHVybmVkIHNvY2tldCBidWZmZXIgaW5mb3JtYXRpb24gZm9yIHVzZXIgZGlzcGxheS4gKi8KLSAgICAKKwogICAgIC8qIG1ha2Ugc3VyZSB0aGF0IHBvcnQgbnVtYmVycyBhcmUgaW4gdGhlIHByb3BlciBvcmRlciAqLwogICAgIHNlcnZlci5zaW5fcG9ydCA9IChzaG9ydCl4dGlfdWRwX3N0cmVhbV9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlcjsKICAgICBzZXJ2ZXIuc2luX3BvcnQgPSBodG9ucyhzZXJ2ZXIuc2luX3BvcnQpOwogICAgIHJzcl9zaXplICAgICAgICA9IHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlLT5yZWN2X2J1Zl9zaXplOwogICAgIHJzc19zaXplICAgICAgICA9IHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplOwogICAgIHJlbW90ZV9jcHVfcmF0ZSA9IHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZTsKLSAgICAKKwogICAgIC8qIGl0IHdvdWxkIHNlZW0gdGhhdCBYVEkgZG9lcyBub3QgYWxsb3cgdGhlIGV4cGVkaWVudCBvZiAqLwogICAgIC8qICJjb25uZWN0aW5nIiBhIFVEUCBlbmQtcG9pbnQgdGhlIHdheSBCU0QgZG9lcy4gc28sIHdlIHdpbGwgZG8gKi8KICAgICAvKiBldmVyeXRoaW5nIHdpdGggdF9zbmR1ZGF0YSBhbmQgdF9yY3Z1ZGF0YS4gT3VyICJ2aXJ0dWFsIiAqLwogICAgIC8qIGNvbm5lY3QgaGVyZSB3aWxsIGJlIHRvIGFzc2lnbiB0aGUgZGVzdGluYXRpb24gcG9ydGlvbiBvZiB0aGUgKi8KICAgICAvKiB0X3VuaXRkYXRhIHN0cnVjdCBoZXJlLCB3aGVyZSB3ZSB3b3VsZCBoYXZlIG90aGVyd2lzZSBjYWxsZWQgKi8KICAgICAvKiB0X2Nvbm5lY3QoKSByYWogMy85NSAqLwotICAgIAorCiAgICAgbWVtc2V0ICgmdW5pdGRhdGEsIDAsIHNpemVvZih1bml0ZGF0YSkpOwogICAgIHVuaXRkYXRhLmFkZHIubWF4bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgICAgdW5pdGRhdGEuYWRkci5sZW4gICAgPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKQEAgLTI3MjEsNyArMjcyMCw3IEBACiAgICAgLyogdGVzdCBjb250cm9sbGVkIGJ5IGEgYnl0ZSBjb3VudCBhcyB3ZWxsLCBidXQgc2luY2UgVURQIGlzIG5vdCAqLwogICAgIC8qIHJlbGlhYmxlLCB0aGF0IGNvdWxkIHByb3ZlIGRpZmZpY3VsdC4gc28sIGluIHRoZSBtZWFudGltZSwgd2UgKi8KICAgICAvKiBvbmx5IGFsbG93IGEgWFRJX1VEUF9TVFJFQU0gdGVzdCB0byBiZSBhIHRpbWVkIHRlc3QuICovCi0gICAgCisKICAgICBpZiAodGVzdF90aW1lKSB7CiAgICAgICB0aW1lc191cCA9IDA7CiAgICAgICBzdGFydF90aW1lcih0ZXN0X3RpbWUpOwpAQCAtMjczMSwxMSArMjczMCwxMSBAQAogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLyogR2V0IHRoZSBzdGFydCBjb3VudCBmb3IgdGhlIGlkbGUgY291bnRlciBhbmQgdGhlIHN0YXJ0IHRpbWUgKi8KLSAgICAKKwogICAgIGNwdV9zdGFydChsb2NhbF9jcHVfdXNhZ2UpOwotICAgIAorCiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBpZiAoKGludGVydmFsX2J1cnN0KSB8fCAoZGVtb19tb2RlKSkgewogICAgICAgLyogemVybyBtZWFucyB0aGF0IHdlIG5ldmVyIHBhdXNlLCBzbyB3ZSBuZXZlciBzaG91bGQgbmVlZCB0aGUgKi8KQEAgLTI3NTIsNyArMjc1MSw3IEBACiAgICAgICBleGl0KDEpOwogICAgIH0KICNlbmRpZiAvKiBXQU5UX0lOVEVSVkFMUyAqLwotICAgIAorCiAgICAgLyogU2VuZCBkYXRhZ3JhbXMgbGlrZSB0aGVyZSB3YXMgbm8gdG9tb3Jyb3cuIGF0IHNvbWVwb2ludCBpdCBtaWdodCAqLwogICAgIC8qIGJlIG5pY2UgdG8gc2V0IHRoaXMgdXAgc28gdGhhdCBhIHF1YW50aXR5IG9mIGJ5dGVzIGNvdWxkIGJlIHNlbnQsICovCiAgICAgLyogYnV0IHdlIHN0aWxsIG5lZWQgc29tZSBzb3J0IG9mIGVuZCBvZiB0ZXN0IHRyaWdnZXIgb24gdGhlIHJlY2VpdmUgKi8KQEAgLTI3NjEsNyArMjc2MCw3IEBACiAgICAgLyogdGhlbiBzdGFydHMgYWdhaW4sIHdlIHdvdWxkIGVuZCB0aGUgdGVzdCB0b28gc29vbi4gc29tZXRoaW5nIHRvICovCiAgICAgLyogdGhpbmsgYWJvdXQuLi4gKi8KICAgICB3aGlsZSAoIXRpbWVzX3VwKSB7Ci0gICAgICAKKwogI2lmZGVmIERJUlRZCiAgICAgICAvKiB3ZSB3YW50IHRvIGRpcnR5IHNvbWUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGludGVnZXJzIGluIHRoZSBidWZmZXIgKi8KICAgICAgIC8qIHdlIGFyZSBhYm91dCB0byBzZW5kLiB3ZSBtYXkgYWxzbyB3YW50IHRvIGJyaW5nIHNvbWUgbnVtYmVyIG9mICovCkBAIC0yNzc0LDExICsyNzczLDExIEBACiAJCSAgICBsb2NfY2xlYW5fY291bnQpOwogCiAjZW5kaWYgLyogRElSVFkgKi8KLSAgICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICAgIEhJU1RfdGltZXN0YW1wKCZ0aW1lX29uZSk7CiAjZW5kaWYgLyogV0FOVF9ISVNUT0dSQU0gKi8KLSAgICAgIAorCiAgICAgICBpZiAoKHRfc25kdWRhdGEoZGF0YV9zb2NrZXQsCiAJCSAgICAgICZ1bml0ZGF0YSkpICAhPSAwKSB7CiAJaWYgKGVycm5vID09IEVJTlRSKQpAQCAtMjc5MSwyMCArMjc5MCwyMCBAQAogCXRfZXJyb3IoInh0aV91ZHBfc2VuZDogZGF0YSBzZW5kIGVycm9yIik7CiAJZXhpdCgxKTsKICAgICAgIH0KLSAgICAgIG1lc3NhZ2VzX3NlbnQrKzsgICAgICAgICAgCi0gICAgICAKKyAgICAgIG1lc3NhZ2VzX3NlbnQrKzsKKwogICAgICAgLyogbm93IHdlIHdhbnQgdG8gbW92ZSBvdXIgcG9pbnRlciB0byB0aGUgbmV4dCBwb3NpdGlvbiBpbiB0aGUgKi8KICAgICAgIC8qIGRhdGEgYnVmZmVyLi4uYW5kIHVwZGF0ZSB0aGUgdW5pdGRhdGEgc3RydWN0dXJlICovCi0gICAgICAKKwogICAgICAgc2VuZF9yaW5nICAgICAgICAgID0gc2VuZF9yaW5nLT5uZXh0OwogICAgICAgdW5pdGRhdGEudWRhdGEuYnVmID0gc2VuZF9yaW5nLT5idWZmZXJfcHRyOwotICAgICAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICAgICAgLyogZ2V0IHRoZSBzZWNvbmQgdGltZXN0YW1wICovCiAgICAgICBISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwogICAgICAgSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKICNlbmRpZiAvKiBXQU5UX0hJU1RPR1JBTSAqLwotI2lmZGVmIFdBTlRfSU5URVJWQUxTICAgICAgCisjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICAgIGlmIChkZW1vX21vZGUpIHsKIAl1bml0c190aGlzX3RpY2sgKz0gc2VuZF9zaXplOwogICAgICAgfQpAQCAtMjgyNiwxOCArMjgyNSwxOCBAQAogCWludGVydmFsX2NvdW50ID0gaW50ZXJ2YWxfYnVyc3Q7CiAgICAgICB9CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAgIAorCiAgICAgfQotICAgIAorCiAgICAgLyogVGhpcyBpcyBhIHRpbWVkIHRlc3QsIHNvIHRoZSByZW1vdGUgd2lsbCBiZSByZXR1cm5pbmcgdG8gdXMgYWZ0ZXIgKi8KICAgICAvKiBhIHRpbWUuIFdlIHNob3VsZCBub3QgbmVlZCB0byBzZW5kIGFueSAic3RyYW5nZSIgbWVzc2FnZXMgdG8gdGVsbCAqLwogICAgIC8qIHRoZSByZW1vdGUgdGhhdCB0aGUgdGVzdCBpcyBjb21wbGV0ZWQsIHVubGVzcyB3ZSBkZWNpZGUgdG8gYWRkIGEgKi8KICAgICAvKiBudW1iZXIgb2YgbWVzc2FnZXMgdG8gdGhlIHRlc3QuICovCi0gICAgCisKICAgICAvKiB0aGUgdGVzdCBpcyBvdmVyLCBzbyBnZXQgc3RhdHMgYW5kIHN0dWZmICovCi0gICAgY3B1X3N0b3AobG9jYWxfY3B1X3VzYWdlLAkKKyAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsCiAJICAgICAmZWxhcHNlZF90aW1lKTsKLSAgICAKKwogICAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kCSovCiAgICAgcmVjdl9yZXNwb25zZSgpOwogICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKQEAgLTI4NDksMTkgKzI4NDgsMTkgQEAKICAgICAgIHBlcnJvcigic2VuZF94dGlfdWRwX3N0cmVhbTogZXJyb3Igb24gcmVtb3RlIik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGJ5dGVzX3NlbnQgICAgPSAoZG91YmxlKSBzZW5kX3NpemUgKiAoZG91YmxlKSBtZXNzYWdlc19zZW50OwogICAgIGxvY2FsX3RocnVwdXQgPSBjYWxjX3RocnVwdXQoYnl0ZXNfc2VudCk7Ci0gICAgCisKICAgICBtZXNzYWdlc19yZWN2ZCA9IHh0aV91ZHBfc3RyZWFtX3Jlc3VsdHMtPm1lc3NhZ2VzX3JlY3ZkOwogICAgIGJ5dGVzX3JlY3ZkICAgID0gKGRvdWJsZSkgc2VuZF9zaXplICogKGRvdWJsZSkgbWVzc2FnZXNfcmVjdmQ7Ci0gICAgCisKICAgICAvKiB3ZSBhc3VtZSB0aGF0IHRoZSByZW1vdGUgcmFuIGZvciBhcyBsb25nIGFzIHdlIGRpZCAqLwotICAgIAorCiAgICAgcmVtb3RlX3RocnVwdXQgPSBjYWxjX3RocnVwdXQoYnl0ZXNfcmVjdmQpOwotICAgIAorCiAgICAgLyogcHJpbnQgdGhlIHJlc3VsdHMgZm9yIHRoaXMgc29ja2V0IGFuZCBtZXNzYWdlIHNpemUgKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwogICAgICAgLyogdXRpbGl6YXRpb24gZm9yIHRoZSBzeXN0ZW0ocykgV2UgcGFzcyB6ZXJvcyBmb3IgdGhlIGxvY2FsICovCkBAIC0yODgxLDcgKzI4ODAsNyBAQAogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IC0xLjA7CiAJbG9jYWxfc2VydmljZV9kZW1hbmQJPSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIC8qIFRoZSBsb2NhbCBjYWxjdWxhdGlvbnMgY291bGQgdXNlIHZhcmlhYmxlcyBiZWluZyBrZXB0IGJ5ICovCiAgICAgICAvKiB0aGUgbG9jYWwgbmV0bGliIHJvdXRpbmVzLiBUaGUgcmVtb3RlIGNhbGN1YXRpb25zIG5lZWQgdG8gKi8KICAgICAgIC8qIGhhdmUgYSBmZXcgdGhpbmdzIHBhc3NlZCB0byB0aGVtLiAqLwpAQCAtMjkwNSwxMSArMjkwNCwxMSBAQAogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IC0xLjA7CiAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgID0gLTEuMDsKICAgICB9Ci0gICAgCisKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4gKi8KICAgICAvKiBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZSAqLwogICAgIC8qIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHJlbW90ZV90aHJ1cHV0LApAQCAtMjkxNyw3ICsyOTE2LDcgQEAKIAkJCSByZW1vdGVfY3B1X3V0aWxpemF0aW9uLAogCQkJIGxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQkJIHJlbW90ZV9zZXJ2aWNlX2RlbWFuZCk7Ci0gICAgCisKICAgICAvKiBzaW5jZSB0aGUgcm91dGluZSBjYWxjdWxhdGVfY29uZmlkZW5jZSBpcyByYXRoZXIgZ2VuZXJpYywgYW5kICovCiAgICAgLyogd2UgaGF2ZSBhIGZldyBvdGhlciBwYXJtcyBvZiBpbnRlcmVzdCwgd2Ugd2lsbCBkbyBhIGxpdHRsZSB3b3JrICovCiAgICAgLyogaGVyZSB0byBjYWNsdWxhdGUgdGhlaXIgYXZlcmFnZS4gKi8KQEAgLTI5MjUsNyArMjkyNCw3IEBACiAgICAgc3VtX21lc3NhZ2VzX3JlY3ZkICs9IG1lc3NhZ2VzX3JlY3ZkOwogICAgIHN1bV9mYWlsZWRfc2VuZHMgICArPSBmYWlsZWRfc2VuZHM7CiAgICAgc3VtX2xvY2FsX3RocnVwdXQgICs9IGxvY2FsX3RocnVwdXQ7Ci0gICAgCisKICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbisrOwogCiAgICAgLyogdGhpcyBkYXRhcG9pbnQgaXMgZG9uZSwgc28gd2UgZG9uJ3QgbmVlZCB0aGUgc29ja2V0IGFueSBsb25nZXIgKi8KQEAgLTI5NTcsOCArMjk1Niw4IEBACiAgIC8qIG9mIGdyZWF0ZXIgdGhhbiAxLCB3ZSB3aWxsIGRpc3BsYXkgYSB2ZXJpdGFibGUgcGxldGhvcmEgb2YgKi8KICAgLyogYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBmcm9tIG91dHNpZGUgb2YgdGhpcyBibG9jayBhcyBpdCBpdCAqLwogICAvKiBub3QgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLwotICAgIAotICAKKworCiAgIGlmIChjb25maWRlbmNlIDwgMCkgewogICAgIC8qIHdlIGRpZCBub3QgaGl0IGNvbmZpZGVuY2UsIGJ1dCB3ZXJlIHdlIGFza2VkIHRvIGxvb2sgZm9yIGl0PyAqLwogICAgIGlmIChpdGVyYXRpb25fbWF4ID4gMSkgewpAQCAtMjk2OSw3ICsyOTY4LDcgQEAKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKGNwdV9tZXRob2QpOwogICAgIHJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QoeHRpX3VkcF9zdHJlYW1fcmVzdWx0cy0+Y3B1X21ldGhvZCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKHZlcmJvc2l0eSkgewogICAgIGNhc2UgMDoKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKQEAgLTMwNzQsMjYgKzMwNzMsMjYgQEAKICAgaW50IAlhZGRybGVuOwogICB1bnNpZ25lZCBpbnQJYnl0ZXNfcmVjZWl2ZWQgPSAwOwogICBmbG9hdAllbGFwc2VkX3RpbWU7Ci0gIAorCiAgIHVuc2lnbmVkIGludAltZXNzYWdlX3NpemU7CiAgIHVuc2lnbmVkIGludAltZXNzYWdlc19yZWN2ZCA9IDA7Ci0gIAorCiAgIHN0cnVjdCB4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0X3N0cnVjdAkqeHRpX3VkcF9zdHJlYW1fcmVxdWVzdDsKICAgc3RydWN0IHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdAkqeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2U7CiAgIHN0cnVjdCB4dGlfdWRwX3N0cmVhbV9yZXN1bHRzX3N0cnVjdAkqeHRpX3VkcF9zdHJlYW1fcmVzdWx0czsKLSAgCi0gIHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QgID0gCisKKyAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdCAgPQogICAgIChzdHJ1Y3QgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlID0gCisgIHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlID0KICAgICAoc3RydWN0IHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIHh0aV91ZHBfc3RyZWFtX3Jlc3VsdHMgID0gCisgIHh0aV91ZHBfc3RyZWFtX3Jlc3VsdHMgID0KICAgICAoc3RydWN0IHh0aV91ZHBfc3RyZWFtX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X3h0aV91ZHBfc3RyZWFtOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTMxMDEsMjcgKzMxMDAsMjcgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdWRwX3N0cmVhbTogc2V0dGluZyB0aGUgcmVzcG9uc2UgdHlwZS4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQucmVzcG9uc2VfdHlwZSA9IFhUSV9VRFBfU1RSRUFNX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcgPiAyKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdWRwX3N0cmVhbTogdGhlIHJlc3BvbnNlIHR5cGUgaXMgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIG5vdyBhbHRlciB0aGUgbWVzc2FnZV9wdHIgdmFyaWFibGUgdG8gYmUgYXQgdGhlIGRlc2lyZWQgKi8KICAgLyogYWxpZ25tZW50IHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0LiAqLwotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdWRwX3N0cmVhbTogcmVxdWVzdGVkIGFsaWdubWVudCBvZiAlZFxuIiwKIAkgICAgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQpOwpAQCAtMzEzOSwyMCArMzEzOCwyMCBAQAogICAgIGZwcmludGYod2hlcmUsInJlY3ZfeHRpX3VkcF9zdHJlYW06IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIExldCdzIGNsZWFyLW91dCBvdXIgc29ja2FkZHIgZm9yIHRoZSBzYWtlIG9mIGNsZWFubGluZXMuIFRoZW4gd2UgKi8KICAgLyogY2FuIHB1dCBpbiBPVVIgdmFsdWVzICEtKSBBdCBzb21lIHBvaW50LCB3ZSBtYXkgd2FudCB0byBuYWlsIHRoaXMgKi8KICAgLyogc29ja2V0IHRvIGEgcGFydGljdWxhciBuZXR3b3JrLWxldmVsIGFkZHJlc3MsIGJ1dCBmb3Igbm93LCAqLwogICAvKiBJTkFERFJfQU5ZIHNob3VsZCBiZSBqdXN0IGZpbmUuICovCi0gIAorCiAgIGJ6ZXJvKChjaGFyICopJm15YWRkcl9pbiwKIAlzaXplb2YobXlhZGRyX2luKSk7CiAgIG15YWRkcl9pbi5zaW5fZmFtaWx5ICAgICAgPSBBRl9JTkVUOwogICBteWFkZHJfaW4uc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKICAgbXlhZGRyX2luLnNpbl9wb3J0ICAgICAgICA9IDA7Ci0gIAorCiAgIC8qIEdyYWIgYSBzb2NrZXQgdG8gbGlzdGVuIG9uLCBhbmQgdGhlbiBsaXN0ZW4gb24gaXQuICovCi0gIAorCiAgIGlmIChkZWJ1ZyA+IDEpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV91ZHBfc3RyZWFtOiBncmFiYmluZyBhIHNvY2tldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTMxNjcsNyArMzE2Niw3IEBACiAgIGxvY19zbmRhdm9pZCA9IHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPnNvX3NuZGF2b2lkOwogCiAjaWZkZWYgX19hbHBoYQotICAKKwogICAvKiBvayAtIGV2ZW4gb24gYSBERUMgYm94LCBzdHJpbmdzIGFyZSBzdHJpbmdzLiBJIGRpbid0IHJlYWxseSB3YW50ICovCiAgIC8qIHRvIG50b2hsIHRoZSB3b3JkcyBvZiBhIHN0cmluZy4gc2luY2UgSSBkb24ndCB3YW50IHRvIHRlYWNoIHRoZSAqLwogICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0zMTc4LDI4ICszMTc3LDI4IEBACiAgICAgaW50ICpjaGFyd29yZDsKICAgICBpbnQgKmluaXR3b3JkOwogICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgCisKICAgICBpbml0d29yZCA9IChpbnQgKikgeHRpX3VkcF9zdHJlYW1fcmVxdWVzdC0+eHRpX2RldmljZTsKICAgICBsYXN0d29yZCA9IGluaXR3b3JkICsgKCh4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0LT5kZXZfbmFtZV9sZW4gKyAzKSAvIDQpOwotICAgIAorCiAgICAgZm9yIChjaGFyd29yZCA9IGluaXR3b3JkOwogCSBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSBjaGFyd29yZCsrKSB7Ci0gICAgICAKKwogICAgICAgKmNoYXJ3b3JkID0gaHRvbmwoKmNoYXJ3b3JkKTsKICAgICB9CiAgIH0KLSAgCisKICNlbmRpZiAvKiBfX2FscGhhICovCi0gICAgCisKICAgc19kYXRhID0gY3JlYXRlX3h0aV9lbmRwb2ludCh4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0LT54dGlfZGV2aWNlKTsKLSAgCisKICAgaWYgKHNfZGF0YSA9PSBJTlZBTElEX1NPQ0tFVCkgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gZXJybm87CiAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogTGV0J3MgZ2V0IGFuIGFkZHJlc3MgYXNzaWduZWQgdG8gdGhpcyBzb2NrZXQgc28gd2UgY2FuIHRlbGwgdGhlICovCiAgIC8qIGluaXRpYXRvciBob3cgdG8gcmVhY2ggdGhlIGRhdGEgc29ja2V0LiBUaGVyZSBtYXkgYmUgYSBkZXNpcmUgdG8gKi8KICAgLyogbmFpbCB0aGlzIHNvY2tldCB0byBhIHNwZWNpZmljIElQIGFkZHJlc3MgaW4gYSBtdWx0aS1ob21lZCwgKi8KQEAgLTMyMjEsMjcgKzMyMjAsMjcgQEAKIAkgICAgICZiaW5kX3Jlc3ApID09IFNPQ0tFVF9FUlJPUikgewogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gdF9lcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAotICB4dGlfdWRwX3N0cmVhbV9yZXNwb25zZS0+dGVzdF9sZW5ndGggPSAKKworICB4dGlfdWRwX3N0cmVhbV9yZXNwb25zZS0+dGVzdF9sZW5ndGggPQogICAgIHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPnRlc3RfbGVuZ3RoOwotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKLSAgeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPSAKKworICB4dGlfdWRwX3N0cmVhbV9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlciA9CiAgICAgKGludCkgbnRvaHMobXlhZGRyX2luLnNpbl9wb3J0KTsKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gICA9IDA7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAtMSB0byAqLwogICAvKiB0aGUgaW5pdGlhdG9yLiAqLwotICAKKwogICB4dGlfdWRwX3N0cmVhbV9yZXNwb25zZS0+Y3B1X3JhdGUgICAgPSAwLjA7IC8qIGFzc3VtZSBubyBjcHUgKi8KICAgeHRpX3VkcF9zdHJlYW1fcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMDsKICAgaWYgKHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CkBAIC0zMjUwLDEzICszMjQ5LDEzIEBACiAgICAgLyogInJlYWwiIGNhbGlicmF0aW9uLiBPdGhlcndpc2UsIGFsbCBpdCB3aWxsIHJlYWxseSBkbyBpcyAqLwogICAgIC8qIHN0b3JlIGl0IGF3YXkuLi4gKi8KICAgICB4dGlfdWRwX3N0cmVhbV9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwotICAgIHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9IAorICAgIHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9CiAgICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1KHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQotICAKKwogICBtZXNzYWdlX3NpemUJPSB4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0LT5tZXNzYWdlX3NpemU7CiAgIHRlc3RfdGltZQk9IHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPnRlc3RfbGVuZ3RoOwotICAKKwogICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KICAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCiAgIHh0aV91ZHBfc3RyZWFtX3Jlc3BvbnNlLT5zZW5kX2J1Zl9zaXplID0gbHNzX3NpemU7CkBAIC0zMjgwLDIzICszMjc5LDIzIEBACiAgIHVuaXRkYXRhLnVkYXRhLmJ1ZiAgICA9IHJlY3ZfcmluZy0+YnVmZmVyX3B0cjsKIAogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHh0aV91ZHBfc3RyZWFtX3JlcXVlc3QtPm1lYXN1cmVfY3B1KTsKLSAgCisKICAgLyogVGhlIGxvb3Agd2lsbCBleGl0IHdoZW4gdGhlIHRpbWVyIHBvcHMsIG9yIGlmIHdlIGhhcHBlbiB0byByZWN2IGEgKi8KICAgLyogbWVzc2FnZSBvZiBsZXNzIHRoYW4gc2VuZF9zaXplIGJ5dGVzLi4uICovCi0gIAorCiAgIHRpbWVzX3VwID0gMDsKICAgc3RhcnRfdGltZXIodGVzdF90aW1lICsgUEFEX1RJTUUpOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV91ZHBfc3RyZWFtOiBhYm91dCB0byBlbnRlciBpbm5lciBzYW5jdHVtLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICB3aGlsZSAoIXRpbWVzX3VwKSB7CiAjaWZkZWYgUkFKX0RFQlVHCiAgICAgaWYgKGRlYnVnKSB7CkBAIC0zMzE5LDcgKzMzMTgsNyBAQAogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9CiAjZW5kaWYgLyogUkFKX0RFQlVHICovCi0gICAgaWYgKHRfcmN2dWRhdGEoc19kYXRhLCAKKyAgICBpZiAodF9yY3Z1ZGF0YShzX2RhdGEsCiAJCSAgICZ1bml0ZGF0YSwKIAkJICAgJmZsYWdzKSAhPSAwKSB7CiAgICAgICBpZiAoZXJybm8gPT0gVE5PREFUQSkgewpAQCAtMzMzNiwxNyArMzMzNSwxNyBAQAogICAgIHJlY3ZfcmluZyA9IHJlY3ZfcmluZy0+bmV4dDsKICAgICB1bml0ZGF0YS51ZGF0YS5idWYgPSByZWN2X3JpbmctPmJ1ZmZlcl9wdHI7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdWRwX3N0cmVhbTogZ290ICVkIG1lc3NhZ2VzLlxuIixtZXNzYWdlc19yZWN2ZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgCisKKwogICAvKiBUaGUgbG9vcCBub3cgZXhpdHMgZHVlIHRpbWVyIG9yIDwgc2VuZF9zaXplIGJ5dGVzIHJlY2VpdmVkLiAqLwotICAKKwogICBjcHVfc3RvcCh4dGlfdWRwX3N0cmVhbV9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgaWYgKHRpbWVzX3VwKSB7CiAgICAgLyogd2UgZW5kZWQgb24gYSB0aW1lciwgc3VidHJhY3QgdGhlIFBBRF9USU1FICovCiAgICAgZWxhcHNlZF90aW1lIC09IChmbG9hdClQQURfVElNRTsKQEAgLTMzNTQsMjMgKzMzNTMsMjMgQEAKICAgZWxzZSB7CiAgICAgc3RvcF90aW1lcigpOwogICB9Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsInJlY3ZfeHRpX3VkcF9zdHJlYW06IHRlc3QgZW5kZWQgaW4gJWYgc2Vjb25kcy5cbiIsZWxhcHNlZF90aW1lKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIGJ5dGVzX3JlY2VpdmVkID0gKG1lc3NhZ2VzX3JlY3ZkICogbWVzc2FnZV9zaXplKTsKLSAgCisKICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfeHRpX3VkcF9zdHJlYW06IGdvdCAlZCBieXRlc1xuIiwKIAkgICAgYnl0ZXNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUJPSBYVElfVURQX1NUUkVBTV9SRVNVTFRTOwogICB4dGlfdWRwX3N0cmVhbV9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZAk9IGJ5dGVzX3JlY2VpdmVkOwogICB4dGlfdWRwX3N0cmVhbV9yZXN1bHRzLT5tZXNzYWdlc19yZWN2ZAk9IG1lc3NhZ2VzX3JlY3ZkOwpAQCAtMzM4Miw1OCArMzM4MSw1OCBAQAogICBlbHNlIHsKICAgICB4dGlfdWRwX3N0cmVhbV9yZXN1bHRzLT5jcHVfdXRpbAk9IC0xLjA7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnID4gMSkgewogICAgIGZwcmludGYod2hlcmUsCiAJICAgICJyZWN2X3h0aV91ZHBfc3RyZWFtOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKIH0KIAwKIHZvaWQgc2VuZF94dGlfdWRwX3JyKGNoYXIgcmVtb3RlX2hvc3RbXSkKIHsKLSAgCisKICAgY2hhciAqdHB1dF90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgIFJlc3AuICAgRWxhcHNlZCAgVHJhbnMuXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgIFNpemUgICAgVGltZSAgICAgUmF0ZSAgICAgICAgIFxuXAogYnl0ZXMgIEJ5dGVzICBieXRlcyAgICBieXRlcyAgIHNlY3MuICAgIHBlciBzZWMgICBcblxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMCA9CiAgICAgIiU3LjJmXG4iOwotICAKKwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgICUtNmQgICUtNi4yZiAgICU3LjJmICAgXG4iOwogICBjaGFyICp0cHV0X2ZtdF8xX2xpbmVfMiA9ICJcCiAlLTZkICUtNmRcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV90aXRsZSA9ICJcCiBMb2NhbCAvUmVtb3RlXG5cCiBTb2NrZXQgU2l6ZSAgIFJlcXVlc3QgUmVzcC4gIEVsYXBzZWQgVHJhbnMuICAgQ1BVICAgIENQVSAgICBTLmRlbSAgIFMuZGVtXG5cCiBTZW5kICAgUmVjdiAgIFNpemUgICAgU2l6ZSAgIFRpbWUgICAgUmF0ZSAgICAgbG9jYWwgIHJlbW90ZSBsb2NhbCAgIHJlbW90ZVxuXAogYnl0ZXMgIGJ5dGVzICBieXRlcyAgIGJ5dGVzICBzZWNzLiAgIHBlciBzZWMgICUlICVjICAgICUlICVjICAgIHVzL1RyICAgdXMvVHJcblxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8wID0KICAgICAiJTYuM2YgJWNcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICUtNmQgJS02LjJmICAlLTYuMmYgICAlLTYuMmYgJS02LjJmICUtNi4zZiAgJS02LjNmXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzFfbGluZV8yID0gIlwKICUtNmQgJS02ZFxuIjsKLSAgCisKICAgY2hhciAqa3NpbmtfZm10ID0gIlwKIEFsaWdubWVudCAgICAgIE9mZnNldFxuXAogTG9jYWwgIFJlbW90ZSAgTG9jYWwgIFJlbW90ZVxuXAogU2VuZCAgIFJlY3YgICAgU2VuZCAgIFJlY3ZcblwKICU1ZCAgJTVkICAgJTVkICAlNWRcbiI7Ci0gIAotICAKKworCiAgIGZsb2F0CQkJZWxhcHNlZF90aW1lOwotICAKKwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7CiAKQEAgLTM0NDgsMjAgKzM0NDcsMjAgQEAKICAgU09DS0VUIHNlbmRfc29ja2V0OwogICBpbnQJdHJhbnNfcmVtYWluaW5nOwogICBpbnQJYnl0ZXNfeGZlcmQ7Ci0gIAorCiAgIGludAlyc3BfYnl0ZXNfcmVjdmQ7Ci0gIAorCiAgIGZsb2F0CWxvY2FsX2NwdV91dGlsaXphdGlvbjsKICAgZmxvYXQJbG9jYWxfc2VydmljZV9kZW1hbmQ7CiAgIGZsb2F0CXJlbW90ZV9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CXJlbW90ZV9zZXJ2aWNlX2RlbWFuZDsKICAgZG91YmxlIHRocnVwdXQ7Ci0gIAorCiAgIHN0cnVjdAlob3N0ZW50CSAgICAgICAgKmhwOwogICBzdHJ1Y3QJc29ja2FkZHJfaW4Jc2VydmVyLCBteWFkZHJfaW47CiAgIHVuc2lnbmVkICAgICAgaW50ICAgICAgICAgICAgIGFkZHI7CiAgIGludAkgICAgICAgICAgICAgICAgICAgICAgICBhZGRybGVuOwotICAKKwogICBzdHJ1Y3QJeHRpX3VkcF9ycl9yZXF1ZXN0X3N0cnVjdAkqeHRpX3VkcF9ycl9yZXF1ZXN0OwogICBzdHJ1Y3QJeHRpX3VkcF9ycl9yZXNwb25zZV9zdHJ1Y3QJKnh0aV91ZHBfcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAl4dGlfdWRwX3JyX3Jlc3VsdHNfc3RydWN0CSp4dGlfdWRwX3JyX3Jlc3VsdDsKQEAgLTM0NzAsMjkgKzM0NjksMjkgQEAKICAgaW50CWludGVydmFsX2NvdW50OwogICBzaWdzZXRfdCBzaWduYWxfc2V0OwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gIAorCiAgIHh0aV91ZHBfcnJfcmVxdWVzdCAgPQogICAgIChzdHJ1Y3QgeHRpX3VkcF9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgeHRpX3VkcF9ycl9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCB4dGlfdWRwX3JyX3Jlc3BvbnNlX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHh0aV91ZHBfcnJfcmVzdWx0CSA9CiAgICAgKHN0cnVjdCB4dGlfdWRwX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICNpZmRlZiBXQU5UX0hJU1RPR1JBTQogICB0aW1lX2hpc3QgPSBISVNUX25ldygpOwogI2VuZGlmCi0gIAorCiAgIC8qIHNpbmNlIHdlIGFyZSBub3cgZGlzY29ubmVjdGVkIGZyb20gdGhlIGNvZGUgdGhhdCBlc3RhYmxpc2hlZCB0aGUgKi8KICAgLyogY29udHJvbCBzb2NrZXQsIGFuZCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGRpZmZlcmVudCAqLwogICAvKiBwcm90b2NvbHMgYW5kIHN1Y2gsIHdlIGFyZSBwYXNzZWQgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IGFuZCAqLwogICAvKiBtdXN0IHR1cm4gdGhhdCBpbnRvIHRoZSB0ZXN0IHNwZWNpZmljIGFkZHJlc3NpbmcgaW5mb3JtYXRpb24uICovCi0gIAorCiAgIGJ6ZXJvKChjaGFyICopJnNlcnZlciwKIAlzaXplb2Yoc2VydmVyKSk7Ci0gIAorCiAgIC8qIGl0IHdvdWxkIHNlZW0gdGhhdCB3aGlsZSBIUC1VWCB3aWxsIGFsbG93IGFuIElQIGFkZHJlc3MgKGFzIGEgKi8KICAgLyogc3RyaW5nKSBpbiBhIGNhbGwgdG8gZ2V0aG9zdGJ5bmFtZSwgb3RoZXIsIGxlc3MgZW5saWdodGVuZWQgKi8KLSAgLyogc3lzdGVtcyBkbyBub3QuIGZpeCBmcm9tIGF3amFja3NAY2Euc2FuZGlhLmdvdiByYWogMTAvOTUgKi8gIAorICAvKiBzeXN0ZW1zIGRvIG5vdC4gZml4IGZyb20gYXdqYWNrc0BjYS5zYW5kaWEuZ292IHJhaiAxMC85NSAqLwogICAvKiBvcmRlciBjaGFuZ2VkIHRvIGNoZWNrIGZvciBJUCBhZGRyZXNzIGZpcnN0LiByYWogNy85NiAqLwogCiAgIGlmICgoYWRkciA9IGluZXRfYWRkcihyZW1vdGVfaG9zdCkpID09IFNPQ0tFVF9FUlJPUikgewpAQCAtMzUxNyw4ICszNTE2LDggQEAKICAgICAvKiBpdCB3YXMgYSB2YWxpZCBJUCBhZGRyZXNzICovCiAgICAgc2VydmVyLnNpbl9hZGRyLnNfYWRkciA9IGFkZHI7CiAgICAgc2VydmVyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICB9ICAgIAotICAKKyAgfQorCiAgIGlmICggcHJpbnRfaGVhZGVycyApIHsKICAgICBmcHJpbnRmKHdoZXJlLCJYVEkgVURQIFJFUVVFU1QvUkVTUE9OU0UgVEVTVCIpOwogICAgICAgICBmcHJpbnRmKHdoZXJlLCIgdG8gJXMiLCByZW1vdGVfaG9zdCk7CkBAIC0zNTI4LDcgKzM1MjcsNyBAQAogCSAgICAgIGludGVydmFsLzAuMDIsCiAJICAgICAgY29uZmlkZW5jZV9sZXZlbCk7CiAgICAgICB9Ci0gICAgaWYgKGxvY19zbmRhdm9pZCB8fCAKKyAgICBpZiAobG9jX3NuZGF2b2lkIHx8CiAJbG9jX3JjdmF2b2lkIHx8CiAJcmVtX3NuZGF2b2lkIHx8CiAJcmVtX3JjdmF2b2lkKSB7CkBAIC0zNTQwLDE0ICszNTM5LDE0IEBACiAjaWZkZWYgV0FOVF9JTlRFUlZBTFMKICAgICBmcHJpbnRmKHdoZXJlLCIgOiBpbnRlcnZhbCIpOwogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0jaWZkZWYgRElSVFkgCisjaWZkZWYgRElSVFkKICAgICBmcHJpbnRmKHdoZXJlLCIgOiBkaXJ0eSBkYXRhIik7CiAjZW5kaWYgLyogRElSVFkgKi8KICAgICBmcHJpbnRmKHdoZXJlLCJcbiIpOwogICB9Ci0gIAorCiAgIC8qIGluaXRpYWxpemUgYSBmZXcgY291bnRlcnMgKi8KLSAgCisKICAgc2VuZF9yaW5nICAgICA9IE5VTEw7CiAgIHJlY3ZfcmluZyAgICAgPSBOVUxMOwogICBudW1tZXNzYWdlcwk9IDA7CkBAIC0zNTY2LDMxICszNTY1LDMxIEBACiAKICAgd2hpbGUgKCgoY29uZmlkZW5jZSA8IDApICYmIChjb25maWRlbmNlX2l0ZXJhdGlvbiA8IGl0ZXJhdGlvbl9tYXgpKSB8fAogCSAoY29uZmlkZW5jZV9pdGVyYXRpb24gPD0gaXRlcmF0aW9uX21pbikpIHsKLSAgICAKKwogICAgIG51bW1lc3NhZ2VzICAgICA9IDA7CiAgICAgYnl0ZXNfeGZlcmQgICAgID0gMC4wOwogICAgIHRpbWVzX3VwICAgICAgICA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKLSAgICAKKwogICAgIC8qIHNldC11cCB0aGUgZGF0YSBidWZmZXJzIHdpdGggdGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQgYW5kIG9mZnNldCAqLwotICAgIAorCiAgICAgaWYgKHNlbmRfd2lkdGggPT0gMCkgc2VuZF93aWR0aCA9IDE7CiAgICAgaWYgKHJlY3Zfd2lkdGggPT0gMCkgcmVjdl93aWR0aCA9IDE7Ci0gICAgCisKICAgICBpZiAoc2VuZF9yaW5nID09IE5VTEwpIHsKICAgICAgIHNlbmRfcmluZyA9IGFsbG9jYXRlX2J1ZmZlcl9yaW5nKHNlbmRfd2lkdGgsCiAJCQkJICAgICAgIHJlcV9zaXplLAogCQkJCSAgICAgICBsb2NhbF9zZW5kX2FsaWduLAogCQkJCSAgICAgICBsb2NhbF9zZW5kX29mZnNldCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHJlY3ZfcmluZyA9PSBOVUxMKSB7CiAgICAgICByZWN2X3JpbmcgPSBhbGxvY2F0ZV9idWZmZXJfcmluZyhyZWN2X3dpZHRoLAogCQkJCSAgICAgICByc3Bfc2l6ZSwKIAkJCQkgICAgICAgbG9jYWxfcmVjdl9hbGlnbiwKIAkJCQkgICAgICAgbG9jYWxfcmVjdl9vZmZzZXQpOwogICAgIH0KLSAgICAKKwogICAvKiBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gY2FsbCB0X3JjdnVkYXRhKCkgaW5zdGVhZCBvZiB0X3JjdigpIHdlICovCiAgIC8qIG5lZWQgdG8gaW5pdCB0aGUgdW5pdGRhdGEgc3RydWN0dXJlIHJhaiA4Lzk1ICovCiAKQEAgLTM1OTgsNDMgKzM1OTcsNDMgQEAKICAgICByZWN2X3VuaXRkYXRhLmFkZHIubWF4bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgICAgcmVjdl91bml0ZGF0YS5hZGRyLmxlbiAgICA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogICAgIHJlY3ZfdW5pdGRhdGEuYWRkci5idWYgICAgPSAoY2hhciAqKSZzZXJ2ZXI7Ci0gICAgCisKICAgICByZWN2X3VuaXRkYXRhLm9wdC5tYXhsZW4gPSAwOwogICAgIHJlY3ZfdW5pdGRhdGEub3B0LmxlbiAgICA9IDA7CiAgICAgcmVjdl91bml0ZGF0YS5vcHQuYnVmICAgID0gTlVMTDsKLSAgICAKKwogICAgIHJlY3ZfdW5pdGRhdGEudWRhdGEubWF4bGVuID0gcnNwX3NpemU7CiAgICAgcmVjdl91bml0ZGF0YS51ZGF0YS5sZW4gICAgPSByc3Bfc2l6ZTsKICAgICByZWN2X3VuaXRkYXRhLnVkYXRhLmJ1ZiAgICA9IHJlY3ZfcmluZy0+YnVmZmVyX3B0cjsKLSAgICAKKwogICAgIC8qIHNpbmNlIHdlIGFyZSBnb2luZyB0byBjYWxsIHRfc25kdWRhdGEoKSBpbnN0ZWFkIG9mIHRfc25kKCkgd2UgKi8KICAgICAvKiBuZWVkIHRvIGluaXQgdGhlIHVuaXRkYXRhIHN0cnVjdHVyZSByYWogOC85NSAqLwotICAgIAorCiAgICAgbWVtc2V0ICgmc2VuZF91bml0ZGF0YSwgMCwgc2l6ZW9mKHNlbmRfdW5pdGRhdGEpKTsKICAgICBzZW5kX3VuaXRkYXRhLmFkZHIubWF4bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgICAgc2VuZF91bml0ZGF0YS5hZGRyLmxlbiAgICA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwogICAgIHNlbmRfdW5pdGRhdGEuYWRkci5idWYgICAgPSAoY2hhciAqKSZzZXJ2ZXI7Ci0gICAgCisKICAgICBzZW5kX3VuaXRkYXRhLm9wdC5tYXhsZW4gPSAwOwogICAgIHNlbmRfdW5pdGRhdGEub3B0LmxlbiAgICA9IDA7CiAgICAgc2VuZF91bml0ZGF0YS5vcHQuYnVmICAgID0gTlVMTDsKLSAgICAKKwogICAgIHNlbmRfdW5pdGRhdGEudWRhdGEubWF4bGVuID0gcmVxX3NpemU7CiAgICAgc2VuZF91bml0ZGF0YS51ZGF0YS5sZW4gICAgPSByZXFfc2l6ZTsKICAgICBzZW5kX3VuaXRkYXRhLnVkYXRhLmJ1ZiAgICA9IHNlbmRfcmluZy0+YnVmZmVyX3B0cjsKIAogICAgIC8qc2V0IHVwIHRoZSBkYXRhIHNvY2tldCAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfeHRpX2VuZHBvaW50KGxvY194dGlfZGV2aWNlKTsKLSAgICAKKwogICAgIGlmIChzZW5kX3NvY2tldCA9PSBJTlZBTElEX1NPQ0tFVCl7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHNlbmRfeHRpX3VkcF9ycjogdWRwIHJyIGRhdGEgc29ja2V0Iik7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwic2VuZF94dGlfdWRwX3JyOiBzZW5kX3NvY2tldCBvYnRhaW5lZC4uLlxuIik7CiAgICAgfQotICAgIAorCiAgICAgLyogaXQgd291bGQgc2VlbSB0aGF0IHdpdGggWFRJLCB0aGVyZSBpcyBubyBpbXBsaWNpdCBiaW5kICAqLwogICAgIC8qIHNvIHdlIGhhdmUgdG8gbWFrZSBhIGNhbGwgdG8gdF9iaW5kLiB0aGlzIGlzIG5vdCAqLwogICAgIC8qIHRlcnJpYmx5IGNvbnZlbmllbnQsIGJ1dCBJIHN1cHBvc2UgdGhhdCAic3RhbmRhcmQgaXMgYmV0dGVyICovCkBAIC0zNjUzLDExICszNjUyLDExIEBACiAgICAgLyogYWxsIHRoZSAibm9ybWFsIiBjYWxpYnJhdGlvbiBzdHVmZiBhbmQgcmV0dXJuIHRoZSByYXRlIGJhY2suIElmICovCiAgICAgLyogdGhlcmUgaXMgbm8gaWRsZSBjb3VudGVyIGluIHRoZSBrZXJuZWwgaWRsZSBsb29wLCB0aGUgKi8KICAgICAvKiBsb2NhbF9jcHVfcmF0ZSB3aWxsIGJlIHNldCB0byAtMS4gKi8KLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKICAgICAgIGxvY2FsX2NwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdShsb2NhbF9jcHVfcmF0ZSk7CiAgICAgfQotICAgIAorCiAgICAgLyogVGVsbCB0aGUgcmVtb3RlIGVuZCB0byBkbyBhIGxpc3Rlbi4gVGhlIHNlcnZlciBhbHRlcnMgdGhlIHNvY2tldCAqLwogICAgIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwogICAgIC8qIGFsbCB0aGUgdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiB0aGUgc2V0dXAgbWVzc2FnZS4gSWYgdGhlIHVzZXIgZGlkICovCkBAIC0zNjY1LDcgKzM2NjQsNyBAQAogICAgIC8qIHdpbGwgaW5kaWNhdGUgdG8gdGhlIHJlbW90ZSB0aGF0IG5vIGNoYW5nZXMgYmV5b25kIHRoZSBzeXN0ZW0ncyAqLwogICAgIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICovCiAgICAgLyogZGVmYXVsdCB0byA4LCB3aGljaCB3aWxsIGJlIG5vIGFsaWdubWVudCBhbHRlcmF0aW9ucy4gKi8KLSAgICAKKwogICAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQk9IERPX1hUSV9VRFBfUlI7CiAgICAgeHRpX3VkcF9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0gcnNyX3NpemU7CiAgICAgeHRpX3VkcF9ycl9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0gcnNzX3NpemU7CkBAIC0zNjg1LDExICszNjg0LDExIEBACiAgICAgZWxzZSB7CiAgICAgICB4dGlfdWRwX3JyX3JlcXVlc3QtPnRlc3RfbGVuZ3RoCT0gdGVzdF90cmFucyAqIC0xOwogICAgIH0KLSAgICAKKwogICAgIHN0cmNweSh4dGlfdWRwX3JyX3JlcXVlc3QtPnh0aV9kZXZpY2UsIHJlbV94dGlfZGV2aWNlKTsKLSAgCisKICNpZmRlZiBfX2FscGhhCi0gIAorCiAgICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaWRuJ3QgcmVhbGx5IHdhbnQgKi8KICAgICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgICAvKiBzZW5kXyBhbmQgcmVjdl8gX3JlcXVlc3QgYW5kIF9yZXNwb25zZSByb3V0aW5lcyBhYm91dCB0aGUgdHlwZXMsICovCkBAIC0zNzAwLDE0ICszNjk5LDE0IEBACiAgICAgICBpbnQgKmNoYXJ3b3JkOwogICAgICAgaW50ICppbml0d29yZDsKICAgICAgIGludCAqbGFzdHdvcmQ7Ci0gICAgICAKKwogICAgICAgaW5pdHdvcmQgPSAoaW50ICopIHh0aV91ZHBfcnJfcmVxdWVzdC0+eHRpX2RldmljZTsKICAgICAgIGxhc3R3b3JkID0gaW5pdHdvcmQgKyAoKHN0cmxlbihyZW1feHRpX2RldmljZSkgKyAzKSAvIDQpOwotICAgICAgCisKICAgICAgIGZvciAoY2hhcndvcmQgPSBpbml0d29yZDsKIAkgICBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSAgIGNoYXJ3b3JkKyspIHsKLQkKKwogCSpjaGFyd29yZCA9IG50b2hsKCpjaGFyd29yZCk7CiAgICAgICB9CiAgICAgfQpAQCAtMzcxNiw5ICszNzE1LDkgQEAKICAgICBpZiAoZGVidWcgPiAxKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJuZXRwZXJmOiBzZW5kX3h0aV91ZHBfcnI6IHJlcXVlc3RpbmcgVURQIHIvciB0ZXN0XG4iKTsKICAgICB9Ci0gICAgCisKICAgICBzZW5kX3JlcXVlc3QoKTsKLSAgICAKKwogICAgIC8qIFRoZSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgcmVsZXZhbnQgCSovCiAgICAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAqLwogICAgIC8qIHRoZSB2YXJpYWJsZXMgaGVyZSBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaWYgZGVzaXJlZC4gIFRoZQkqLwpAQCAtMzcyOCw5ICszNzI3LDkgQEAKICAgICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodCovCiAgICAgLyogYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsLiBUaGlzIHNhdmVzIHRoZSBoYXNzbGUgb2YgZXh0cmEgbWVzc2FnZXMJKi8KICAgICAvKiBiZWluZyBzZW50IGZvciB0aGUgVURQIHRlc3RzLgkJCQkJKi8KLSAgICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKLSAgICAKKwogICAgIGlmICghbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pIHsKICAgICAgIGlmIChkZWJ1ZykKIAlmcHJpbnRmKHdoZXJlLCJyZW1vdGUgbGlzdGVuIGRvbmUuXG4iKTsKQEAgLTM3NDUsMTkgKzM3NDQsMTkgQEAKICAgICBlbHNlIHsKICAgICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgICAgCisKICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIAorCiAgICAgLyogRGF0YSBTb2NrZXQgc2V0LXVwIGlzIGZpbmlzaGVkLiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCBlaXRoZXIgdGhlICovCiAgICAgLyogY29ubmVjdCB3b3VsZCBoYXZlIGZhaWxlZCwgb3IgdGhlIHByZXZpb3VzIHJlc3BvbnNlIHdvdWxkIGhhdmUgKi8KICAgICAvKiBpbmRpY2F0ZWQgYSBwcm9ibGVtLiBJIGZhaWxlZCB0byBzZWUgdGhlIHZhbHVlIG9mIHRoZSBleHRyYSAqLwogICAgIC8qIG1lc3NhZ2UgYWZ0ZXIgdGhlIGFjY2VwdCBvbiB0aGUgcmVtb3RlLiBJZiBpdCBmYWlsZWQsIHdlJ2xsIHNlZSBpdCAqLwogICAgIC8qIGhlcmUuIElmIGl0IGRpZG4ndCwgd2UgbWlnaHQgYXMgd2VsbCBzdGFydCBwdW1waW5nIGRhdGEuICovCi0gICAgCisKICAgICAvKiBTZXQtdXAgdGhlIHRlc3QgZW5kIGNvbmRpdGlvbnMuIEZvciBhIHJlcXVlc3QvcmVzcG9uc2UgdGVzdCwgdGhleSAqLwogICAgIC8qIGNhbiBiZSBlaXRoZXIgdGltZSBvciB0cmFuc2FjdGlvbiBiYXNlZC4gKi8KLSAgICAKKwogICAgIGlmICh0ZXN0X3RpbWUpIHsKICAgICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBlbmQgdGhlIHRlc3QgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4gKi8KICAgICAgIHRpbWVzX3VwID0gMDsKQEAgLTM3NjksMTEgKzM3NjgsMTEgQEAKICAgICAgIHRyYW5zX3JlbWFpbmluZyA9IHRlc3RfYnl0ZXM7CiAgICAgICB0aW1lc191cCA9IDE7CiAgICAgfQotICAgIAorCiAgICAgLyogVGhlIGNwdV9zdGFydCByb3V0aW5lIHdpbGwgZ3JhYiB0aGUgY3VycmVudCB0aW1lIGFuZCBwb3NzaWJseSAqLwogICAgIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCiAgICAgLyogdXRpbGl6YXRpb24gYW5kL29yIHNlcnZpY2UgZGVtYW5kIGFuZCB0aHJ1cHV0LiAqLwotICAgIAorCiAgICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7CiAKICNpZmRlZiBXQU5UX0lOVEVSVkFMUwpAQCAtMzc5Miw3ICszNzkxLDcgQEAKICAgICAgIGV4aXQoMSk7CiAgICAgfQogI2VuZGlmIC8qIFdBTlRfSU5URVJWQUxTICovCi0gICAgCisKICAgICAvKiBXZSB1c2UgYW4gIk9SIiB0byBjb250cm9sIHRlc3QgZXhlY3V0aW9uLiBXaGVuIHRoZSB0ZXN0IGlzICovCiAgICAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gKi8KICAgICAvKiBmYWxzZS4gV2hlbiB0aGUgdGVzdCBpcyBjb250cm9sbGVkIGJ5IGJ5dGUgY291bnQsIHRoZSB0aW1lIHRlc3QgKi8KQEAgLTM4MjQsOSArMzgyMyw5IEBACiAJZXhpdCgxKTsKICAgICAgIH0KICAgICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKLSAgICAgIAorCiAgICAgICAvKiByZWNlaXZlIHRoZSByZXNwb25zZS4gd2l0aCBVRFAgd2Ugd2lsbCBnZXQgaXQgYWxsLCBvciBub3RoaW5nICovCi0gICAgICAKKwogICAgICAgaWYoKHRfcmN2dWRhdGEoc2VuZF9zb2NrZXQsCiAJCSAgICAgJnJlY3ZfdW5pdGRhdGEsCiAJCSAgICAgJmZsYWdzKSkgIT0gMCkgewpAQCAtMzg1OCwxOCArMzg1NywxOCBAQAogCWV4aXQoMSk7CiAgICAgICB9CiAgICAgICByZWN2X3JpbmcgPSByZWN2X3JpbmctPm5leHQ7Ci0gICAgICAKKwogI2lmZGVmIFdBTlRfSElTVE9HUkFNCiAgICAgICBISVNUX3RpbWVzdGFtcCgmdGltZV90d28pOwogICAgICAgSElTVF9hZGQodGltZV9oaXN0LGRlbHRhX21pY3JvKCZ0aW1lX29uZSwmdGltZV90d28pKTsKLSAgICAgIAorCiAgICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSBtYXkgd2lzaCB0byBzbGVlcCBmb3Igc29tZSBwZXJpb2Qgb2YgKi8KICAgICAgIC8qIHRpbWUsIHNvIHdlIHNlZSBob3cgbG9uZyB0aGF0IGxhc3QgdHJhbnNhY3Rpb24ganVzdCB0b29rLCAqLwogICAgICAgLyogYW5kIHNsZWVwIGZvciB0aGUgZGlmZmVyZW5jZSBvZiB0aGF0IGFuZCB0aGUgaW50ZXJ2YWwuIFdlICovCiAgICAgICAvKiB3aWxsIG5vdCBzbGVlcCBpZiB0aGUgdGltZSB3b3VsZCBiZSBsZXNzIHRoYW4gYSAqLwogICAgICAgLyogbWlsbGlzZWNvbmQuICAqLwogI2VuZGlmCi0jaWZkZWYgV0FOVF9JTlRFUlZBTFMgICAgICAKKyNpZmRlZiBXQU5UX0lOVEVSVkFMUwogICAgICAgaWYgKGRlbW9fbW9kZSkgewogCXVuaXRzX3RoaXNfdGljayArPSAxOwogICAgICAgfQpAQCAtMzg5MSwzMiArMzg5MCwzMiBAQAogCWludGVydmFsX2NvdW50ID0gaW50ZXJ2YWxfYnVyc3Q7CiAgICAgICB9CiAjZW5kaWYgLyogV0FOVF9JTlRFUlZBTFMgKi8KLSAgICAgIAotICAgICAgbnVtbWVzc2FnZXMrKzsgICAgICAgICAgCisKKyAgICAgIG51bW1lc3NhZ2VzKys7CiAgICAgICBpZiAodHJhbnNfcmVtYWluaW5nKSB7CiAJdHJhbnNfcmVtYWluaW5nLS07CiAgICAgICB9Ci0gICAgICAKKwogICAgICAgaWYgKGRlYnVnID4gMykgewogCWlmICgobnVtbWVzc2FnZXMgJSAxMDApID09IDApIHsKIAkgIGZwcmludGYod2hlcmUsIlRyYW5zYWN0aW9uICVkIGNvbXBsZXRlZFxuIixudW1tZXNzYWdlcyk7CiAJICBmZmx1c2god2hlcmUpOwogCX0KICAgICAgIH0KLSAgICAgIAorCiAgICAgfQotICAgIAorCiAgICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAgIC8qIHdpbGwgYWxzbyBzdG9yZS1hd2F5IHRoZSBuZWNlc3NhcmllcyBmb3IgY3B1IHV0aWxpemF0aW9uICovCi0gICAgCisKICAgICBjcHVfc3RvcChsb2NhbF9jcHVfdXNhZ2UsJmVsYXBzZWRfdGltZSk7CS8qIHdhcyBjcHUgYmVpbmcgKi8KIAkJCQkJCS8qIG1lYXN1cmVkPyBob3cgbG9uZyAqLwogCQkJCQkJLyogZGlkIHdlIHJlYWxseSBydW4/ICovCi0gICAgCisKICAgICAvKiBHZXQgdGhlIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVtb3RlIGVuZC4gVGhlIHJlbW90ZSB3aWxsIGhhdmUgKi8KICAgICAvKiBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcgdGhpbmdzLiBJZiAqLwogICAgIC8qIGl0IHdhc24ndCBzdXBwb3NlZCB0byBjYXJlLCBpdCB3aWxsIHJldHVybiBvYnZpb3VzIHZhbHVlcy4gKi8KLSAgICAKKwogICAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgICBpZiAoZGVidWcpCkBAIC0zOTI1LDIwICszOTI0LDIwIEBACiAgICAgZWxzZSB7CiAgICAgICBTZXRfZXJybm8obmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8pOwogICAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKLSAgICAgIAorCiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIC8qIFdlIG5vdyBjYWxjdWxhdGUgd2hhdCBvdXIgdGhydXB1dCB3YXMgZm9yIHRoZSB0ZXN0LiBJbiB0aGUgKi8KICAgICAvKiBmdXR1cmUsIHdlIG1heSB3YW50IHRvIGluY2x1ZGUgYSBjYWxjdWxhdGlvbiBvZiB0aGUgdGhydXB1dCAqLwogICAgIC8qIG1lYXN1cmVkIGJ5IHRoZSByZW1vdGUsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGNhc2UgdGhhdCBmb3IgYSAqLwogICAgIC8qIFVEUCByciB0ZXN0LCB0aGF0IHRoZSB0d28gbnVtYmVycyBzaG91bGQgYmUgKnZlcnkqIGNsb3NlLi4uICovCiAgICAgLyogV2UgY2FsY3VsYXRlIGJ5dGVzX3NlbnQgcmVnYXJkbGVzcyBvZiB0aGUgd2F5IHRoZSB0ZXN0IGxlbmd0aCAqLwogICAgIC8qIHdhcyBjb250cm9sbGVkLiAgKi8KLSAgICAKKwogICAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICAgIHRocnVwdXQJPSBudW1tZXNzYWdlcyAvIGVsYXBzZWRfdGltZTsKLSAgICAKKwogICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UgfHwgcmVtb3RlX2NwdV91c2FnZSkgewogCiAgICAgICAvKiBXZSBtdXN0IG5vdyBkbyBhIGxpdHRsZSBtYXRoIGZvciBzZXJ2aWNlIGRlbWFuZCBhbmQgY3B1ICovCkBAIC0zOTUwLDExICszOTQ5LDExIEBACiAKICAgICAgIGlmIChsb2NhbF9jcHVfdXNhZ2UpIHsKIAlsb2NhbF9jcHVfdXRpbGl6YXRpb24gPSBjYWxjX2NwdV91dGlsKDAuMCk7Ci0JCisKIAkvKiBzaW5jZSBjYWxjX3NlcnZpY2UgZGVtYW5kIGlzIGRvaW5nIG1zL0t1bml0IHdlIHdpbGwgKi8KIAkvKiBtdWx0aXBseSB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9uIGJ5IDEwMjQgdG8gZ2V0ICovCiAJLyogImdvb2QiIG51bWJlcnMgKi8KLQkKKwogCWxvY2FsX3NlcnZpY2VfZGVtYW5kICA9IGNhbGNfc2VydmljZV9kZW1hbmQoKGRvdWJsZSkgbnVtbWVzc2FnZXMqMTAyNCwKIAkJCQkJCSAgICAwLjAsCiAJCQkJCQkgICAgMC4wLApAQCAtMzk2NCwxNCArMzk2MywxNCBAQAogCWxvY2FsX2NwdV91dGlsaXphdGlvbgk9IC0xLjA7CiAJbG9jYWxfc2VydmljZV9kZW1hbmQJPSAtMS4wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmIChyZW1vdGVfY3B1X3VzYWdlKSB7CiAJcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IHh0aV91ZHBfcnJfcmVzdWx0LT5jcHVfdXRpbDsKLQkKKwogCS8qIHNpbmNlIGNhbGNfc2VydmljZSBkZW1hbmQgaXMgZG9pbmcgbXMvS3VuaXQgd2Ugd2lsbCAqLwogCS8qIG11bHRpcGx5IHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb24gYnkgMTAyNCB0byBnZXQgKi8KIAkvKiAiZ29vZCIgbnVtYmVycyAqLwotCQorCiAJcmVtb3RlX3NlcnZpY2VfZGVtYW5kICA9IGNhbGNfc2VydmljZV9kZW1hbmQoKGRvdWJsZSkgbnVtbWVzc2FnZXMqMTAyNCwKIAkJCQkJCSAgICAgMC4wLAogCQkJCQkJICAgICByZW1vdGVfY3B1X3V0aWxpemF0aW9uLApAQCAtMzk5MCwxMSArMzk4OSwxMSBAQAogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IC0xLjA7CiAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgID0gLTEuMDsKICAgICB9Ci0gICAgCisKICAgICAvKiBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgY29uZmlkZW5jZSBpbmZvcm1hdGlvbi4gKi8KICAgICAvKiBpZiBkZWJ1Z2dpbmcgaXMgb24sIGNhbGN1bGF0ZV9jb25maWRlbmNlIHdpbGwgcHJpbnQtb3V0IHRoZSAqLwogICAgIC8qIHBhcmFtZXRlcnMgd2UgcGFzcyBpdCAqLwotICAgIAorCiAgICAgY2FsY3VsYXRlX2NvbmZpZGVuY2UoY29uZmlkZW5jZV9pdGVyYXRpb24sCiAJCQkgZWxhcHNlZF90aW1lLAogCQkJIHRocnVwdXQsCkBAIC00MDAyLDEwICs0MDAxLDEwIEBACiAJCQkgcmVtb3RlX2NwdV91dGlsaXphdGlvbiwKIAkJCSBsb2NhbF9zZXJ2aWNlX2RlbWFuZCwKIAkJCSByZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAgIAotICAgIAorCisKICAgICBjb25maWRlbmNlX2l0ZXJhdGlvbisrOwotICAgIAorCiAgICAgLyogd2UgYXJlIGRvbmUgd2l0aCB0aGUgc29ja2V0ICovCiAgICAgdF9jbG9zZShzZW5kX3NvY2tldCk7CiAgIH0KQEAgLTQwMTgsNyArNDAxNyw3IEBACiAJCQkgICAgJnJlbW90ZV9jcHVfdXRpbGl6YXRpb24sCiAJCQkgICAgJmxvY2FsX3NlcnZpY2VfZGVtYW5kLAogCQkJICAgICZyZW1vdGVfc2VydmljZV9kZW1hbmQpOwotICAKKwogICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyICovCiAgIC8qIGhhcyBzcGVjaWZpZWQgemVyby1sZXZlbCB2ZXJib3NpdHksIHdlIHdpbGwganVzdCBwcmludCB0aGUgKi8KICAgLyogbG9jYWwgc2VydmljZSBkZW1hbmQsIG9yIHRoZSByZW1vdGUgc2VydmljZSBkZW1hbmQuIElmIHRoZSAqLwpAQCAtNDAyNywxOCArNDAyNiwxOCBAQAogICAvKiBvZiBncmVhdGVyIHRoYW4gMSwgd2Ugd2lsbCBkaXNwbGF5IGEgdmVyaXRhYmxlIHBsZXRob3JhIG9mICovCiAgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KICAgLyogbm90IGNwdV9tZWFzdXJlbWVudCBzcGVjaWZpYy4uLiAgKi8KLSAgCisKICAgaWYgKGNvbmZpZGVuY2UgPCAwKSB7CiAgICAgLyogd2UgZGlkIG5vdCBoaXQgY29uZmlkZW5jZSwgYnV0IHdlcmUgd2UgYXNrZWQgdG8gbG9vayBmb3IgaXQ/ICovCiAgICAgaWYgKGl0ZXJhdGlvbl9tYXggPiAxKSB7CiAgICAgICBkaXNwbGF5X2NvbmZpZGVuY2UoKTsKICAgICB9CiAgIH0KLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X21ldGhvZCA9IGZvcm1hdF9jcHVfbWV0aG9kKGNwdV9tZXRob2QpOwogICAgIHJlbW90ZV9jcHVfbWV0aG9kID0gZm9ybWF0X2NwdV9tZXRob2QoeHRpX3VkcF9ycl9yZXN1bHQtPmNwdV9tZXRob2QpOwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC00MDYyLDcgKzQwNjEsNyBAQAogCQlsb2NhbF9jcHVfbWV0aG9kLAogCQlyZW1vdGVfY3B1X21ldGhvZCk7CiAgICAgICB9Ci0gICAgCisKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgY3B1X2ZtdF8xX2xpbmVfMSwJCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCiAJICAgICAgbHNzX3NpemUsCQkvKiBsb2NhbCBzZW5kYnVmIHNpemUgKi8KQEAgLTQwOTUsNyArNDA5NCw3IEBACiAgICAgICBpZiAocHJpbnRfaGVhZGVycykgewogCWZwcmludGYod2hlcmUsdHB1dF90aXRsZSxmb3JtYXRfdW5pdHMoKSk7CiAgICAgICB9Ci0gICAgCisKICAgICAgIGZwcmludGYod2hlcmUsCiAJICAgICAgdHB1dF9mbXRfMV9saW5lXzEsCS8qIHRoZSBmb3JtYXQgc3RyaW5nICovCiAJICAgICAgbHNzX3NpemUsCkBAIC00MTA4LDcgKzQxMDcsNyBAQAogCSAgICAgIHRwdXRfZm10XzFfbGluZV8yLAogCSAgICAgIHJzc19zaXplLCAJCS8qIHJlbW90ZSByZWN2YnVmIHNpemUgKi8KIAkgICAgICByc3Jfc2l6ZSk7Ci0gICAgICAKKwogICAgICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC00MTE5LDcgKzQxMTgsNyBAQAogICAvKiBtb21lbnQsIEkgZG8gbm90IHdpc2ggdG8gZmlndXJlLW91dCBhbGwgdGhlICBmb3JtYXR0aW5nLCBzbyBJIHdpbGwgKi8KICAgLyoganVzdCBwdXQgdGhpcyBjb21tZW50IGhlcmUgdG8gaGVscCByZW1pbmQgbWUgdGhhdCBpdCBpcyBzb21ldGhpbmcgKi8KICAgLyogdGhhdCBzaG91bGQgYmUgZG9uZSBhdCBhIGxhdGVyIHRpbWUuICovCi0gIAorCiAgIC8qIGhvdyB0byBoYW5kbGUgdGhlIHZlcmJvc2UgaW5mb3JtYXRpb24gaW4gdGhlIHByZXNlbmNlIG9mICovCiAgIC8qIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGlzIHlldCB0byBiZSBkZXRlcm1pbmVkLi4uIHJhaiAxMS85NCAqLwogCkBAIC00MTI4LDcgKzQxMjcsNyBAQAogICAgIC8qIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmNsdWRlIGFzIG11Y2ggYXMgd2UgY2FuIGZpbmQgYWJvdXQgKi8KICAgICAvKiBVRFAgc3RhdGlzdGljcywgdGhlIGFsaWdubWVudHMgb2YgdGhlIHNlbmRzIGFuZCByZWNlaXZlcyAqLwogICAgIC8qIGFuZCBhbGwgdGhhdCBzb3J0IG9mIHJvdC4uLiAqLwotICAgIAorCiAjaWZkZWYgV0FOVF9ISVNUT0dSQU0KICAgICBmcHJpbnRmKHdoZXJlLCJcbkhpc3RvZ3JhbSBvZiByZXF1ZXN0L3JlcG9uc2UgdGltZXMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtNDEzOSwxMCArNDEzOCwxMCBAQAogDAogIC8qIHRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSByZWNlaXZlIHNpZGUgKG5ldHNlcnZlcikgb2YgYSBYVElfVURQX1JSICovCiAgLyogdGVzdC4gKi8KLXZvaWQgCit2b2lkCiAgIHJlY3ZfeHRpX3VkcF9ycigpCiB7Ci0gIAorCiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKIApAQCAtNDE1NywxMiArNDE1NiwxMiBAQAogICBpbnQJdHJhbnNfcmVjZWl2ZWQ7CiAgIGludAl0cmFuc19yZW1haW5pbmc7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgc3RydWN0CXh0aV91ZHBfcnJfcmVxdWVzdF9zdHJ1Y3QJKnh0aV91ZHBfcnJfcmVxdWVzdDsKICAgc3RydWN0CXh0aV91ZHBfcnJfcmVzcG9uc2Vfc3RydWN0CSp4dGlfdWRwX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJeHRpX3VkcF9ycl9yZXN1bHRzX3N0cnVjdAkqeHRpX3VkcF9ycl9yZXN1bHRzOwotICAKLSAgCisKKwogICAvKiBhIGxpdHRsZSB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiAqLwogICBtZW1zZXQgKCZteWFkZHJfaW4sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKICAgbXlhZGRyX2luLnNpbl9mYW1pbHkgICAgICA9IEFGX0lORVQ7CkBAIC00MTcxLDE4ICs0MTcwLDE4IEBACiAgIG1lbXNldCAoJnBlZXJhZGRyX2luLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAKICAgLyogYW5kIHNvbWUgbm90IHNvIHBhcmFub2lkIDopICovCi0gIHh0aV91ZHBfcnJfcmVxdWVzdCAgPSAKKyAgeHRpX3VkcF9ycl9yZXF1ZXN0ICA9CiAgICAgKHN0cnVjdCB4dGlfdWRwX3JyX3JlcXVlc3Rfc3RydWN0ICopbmV0cGVyZl9yZXF1ZXN0LmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB4dGlfdWRwX3JyX3Jlc3BvbnNlID0gCisgIHh0aV91ZHBfcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgeHRpX3VkcF9ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICB4dGlfdWRwX3JyX3Jlc3VsdHMgID0gCisgIHh0aV91ZHBfcnJfcmVzdWx0cyAgPQogICAgIChzdHJ1Y3QgeHRpX3VkcF9ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl94dGlfdWRwX3JyOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTQxOTAsMjcgKzQxODksMjcgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV91ZHBfcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBYVElfVURQX1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV91ZHBfcnI6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlcyB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLwogICAvKiBhbGlnbm1lbnRzIHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0cy4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdWRwX3JyOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLAogCSAgICB4dGlfdWRwX3JyX3JlcXVlc3QtPnJlY3ZfYWxpZ25tZW50LApAQCAtNDIzOCw3ICs0MjM3LDcgQEAKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV91ZHBfcnI6IHJlY2VpdmUgYWxpZ25tZW50IGFuZCBvZmZzZXQgc2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIGNyZWF0ZV94dGlfZW5kcG9pbnQgZXhwZWN0cyB0byBmaW5kIHNvbWUgdGhpbmdzIGluIHRoZSBnbG9iYWwgKi8KICAgLyogdmFyaWFibGVzLCBzbyBzZXQgdGhlIGdsb2JhbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBpbiB0aGUgcmVxdWVzdC4gKi8KICAgLyogb25jZSB0aGUgc29ja2V0IGhhcyBiZWVuIGNyZWF0ZWQsIHdlIHdpbGwgc2V0IHRoZSByZXNwb25zZSB2YWx1ZXMgKi8KQEAgLTQyNDksNyArNDI0OCw3IEBACiAgIGxvY19zbmRhdm9pZCA9IHh0aV91ZHBfcnJfcmVxdWVzdC0+c29fc25kYXZvaWQ7CiAKICNpZmRlZiBfX2FscGhhCi0gIAorCiAgIC8qIG9rIC0gZXZlbiBvbiBhIERFQyBib3gsIHN0cmluZ3MgYXJlIHN0cmluZ3MuIEkgZGluJ3QgcmVhbGx5IHdhbnQgKi8KICAgLyogdG8gbnRvaGwgdGhlIHdvcmRzIG9mIGEgc3RyaW5nLiBzaW5jZSBJIGRvbid0IHdhbnQgdG8gdGVhY2ggdGhlICovCiAgIC8qIHNlbmRfIGFuZCByZWN2XyBfcmVxdWVzdCBhbmQgX3Jlc3BvbnNlIHJvdXRpbmVzIGFib3V0IHRoZSB0eXBlcywgKi8KQEAgLTQyNjAsMjIgKzQyNTksMjIgQEAKICAgICBpbnQgKmNoYXJ3b3JkOwogICAgIGludCAqaW5pdHdvcmQ7CiAgICAgaW50ICpsYXN0d29yZDsKLSAgICAKKwogICAgIGluaXR3b3JkID0gKGludCAqKSB4dGlfdWRwX3JyX3JlcXVlc3QtPnh0aV9kZXZpY2U7CiAgICAgbGFzdHdvcmQgPSBpbml0d29yZCArICgoeHRpX3VkcF9ycl9yZXF1ZXN0LT5kZXZfbmFtZV9sZW4gKyAzKSAvIDQpOwotICAgIAorCiAgICAgZm9yIChjaGFyd29yZCA9IGluaXR3b3JkOwogCSBjaGFyd29yZCA8IGxhc3R3b3JkOwogCSBjaGFyd29yZCsrKSB7Ci0gICAgICAKKwogICAgICAgKmNoYXJ3b3JkID0gaHRvbmwoKmNoYXJ3b3JkKTsKICAgICB9CiAgIH0KLSAgCisKICNlbmRpZiAvKiBfX2FscGhhICovCi0gICAgCisKICAgc19kYXRhID0gY3JlYXRlX3h0aV9lbmRwb2ludCh4dGlfdWRwX3JyX3JlcXVlc3QtPnh0aV9kZXZpY2UpOwotICAKKwogICBpZiAoc19kYXRhID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7CkBAIC00Mjg2LDcgKzQyODUsNyBAQAogICAgIGZwcmludGYod2hlcmUsInJlY3ZfeHRpX3VkcF9ycjogZW5kcG9pbnQgY3JlYXRlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBMZXQncyBnZXQgYW4gYWRkcmVzcyBhc3NpZ25lZCB0byB0aGlzIHNvY2tldCBzbyB3ZSBjYW4gdGVsbCB0aGUgKi8KICAgLyogaW5pdGlhdG9yIGhvdyB0byByZWFjaCB0aGUgZGF0YSBzb2NrZXQuIFRoZXJlIG1heSBiZSBhIGRlc2lyZSB0byAqLwogICAvKiBuYWlsIHRoaXMgc29ja2V0IHRvIGEgc3BlY2lmaWMgSVAgYWRkcmVzcyBpbiBhIG11bHRpLWhvbWVkLCAqLwpAQCAtNDMxNiw3ICs0MzE1LDcgQEAKIAogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gdF9lcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9CiAKQEAgLTQzMjcsNDEgKzQzMjYsNDEgQEAKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAKLSAgeHRpX3VkcF9ycl9yZXNwb25zZS0+dGVzdF9sZW5ndGggPSAKKyAgeHRpX3VkcF9ycl9yZXNwb25zZS0+dGVzdF9sZW5ndGggPQogICAgIHh0aV91ZHBfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGg7CiAKLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCisKICAgeHRpX3VkcF9ycl9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlciA9IChpbnQpIG50b2hzKG15YWRkcl9pbi5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICBmcHJpbnRmKHdoZXJlLCJyZWN2IHBvcnQgbnVtYmVyICVkXG4iLG15YWRkcl9pbi5zaW5fcG9ydCk7CiAgIGZmbHVzaCh3aGVyZSk7Ci0gIAorCiAgIC8qIEJ1dCB3YWl0LCB0aGVyZSdzIG1vcmUuIElmIHRoZSBpbml0aWF0b3Igd2FudGVkIGNwdSBtZWFzdXJlbWVudHMsICovCiAgIC8qIHRoZW4gd2UgbXVzdCBjYWxsIHRoZSBjYWxpYnJhdGUgcm91dGluZSwgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG1heCAqLwogICAvKiByYXRlIGJhY2sgdG8gdGhlIGluaXRpYXRvci4gSWYgdGhlIENQVSB3YXMgbm90IHRvIGJlIG1lYXN1cmVkLCBvciAqLwogICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBjYWxpYnJhdGlvbiwgd2Ugd2lsbCByZXR1cm4gYSAwLjAgdG8gKi8KICAgLyogdGhlIGluaXRpYXRvci4gKi8KLSAgCisKICAgeHRpX3VkcF9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgICAgPSAwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIHh0aV91ZHBfcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMDsKICAgaWYgKHh0aV91ZHBfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB4dGlfdWRwX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDE7Ci0gICAgeHRpX3VkcF9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSAKKyAgICB4dGlfdWRwX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9CiAgICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1KHh0aV91ZHBfcnJfcmVxdWVzdC0+Y3B1X3JhdGUpOwogICB9Ci0gICAKKwogICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KICAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCiAgIHh0aV91ZHBfcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKICAgeHRpX3VkcF9ycl9yZXNwb25zZS0+cmVjdl9idWZfc2l6ZSA9IGxzcl9zaXplOwogICB4dGlfdWRwX3JyX3Jlc3BvbnNlLT5zb19yY3Zhdm9pZCAgID0gbG9jX3JjdmF2b2lkOwogICB4dGlfdWRwX3JyX3Jlc3BvbnNlLT5zb19zbmRhdm9pZCAgID0gbG9jX3NuZGF2b2lkOwotIAorCiAgIC8qIHNpbmNlIHdlIGFyZSBnb2luZyB0byBjYWxsIHRfcmN2dWRhdGEoKSBpbnN0ZWFkIG9mIHRfcmN2KCkgd2UgKi8KICAgLyogbmVlZCB0byBpbml0IHRoZSB1bml0ZGF0YSBzdHJ1Y3R1cmUgcmFqIDMvOTUgKi8KIApAQCAtNDM5NSwxMyArNDM5NCwxMyBAQAogICBzZW5kX3VuaXRkYXRhLnVkYXRhLmJ1ZiAgICA9IHNlbmRfcmluZy0+YnVmZmVyX3B0cjsKIAogICBzZW5kX3Jlc3BvbnNlKCk7Ci0gIAotICAKKworCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHh0aV91ZHBfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogICBpZiAoeHRpX3VkcF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTQ0MTEsMTQgKzQ0MTAsMTQgQEAKICAgICB0aW1lc191cCA9IDE7CiAgICAgdHJhbnNfcmVtYWluaW5nID0geHRpX3VkcF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCAqIC0xOwogICB9Ci0gIAorCiAgIGFkZHJsZW4gPSBzaXplb2YocGVlcmFkZHJfaW4pOwogICBiemVybygoY2hhciAqKSZwZWVyYWRkcl9pbiwgYWRkcmxlbik7Ci0gIAorCiAgIHRyYW5zX3JlY2VpdmVkID0gMDsKIAogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHRyYW5zX3JlbWFpbmluZyA+IDApKSB7Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIG90aGVyIHNpZGUgKi8KICAgICBpZiAodF9yY3Z1ZGF0YShzX2RhdGEsCiAJCSAgICZyZWN2X3VuaXRkYXRhLApAQCAtNDQ2NCwyNyArNDQ2MywyNyBAQAogICAgIH0KICAgICBzZW5kX3JpbmcgPSBzZW5kX3JpbmctPm5leHQ7CiAgICAgc2VuZF91bml0ZGF0YS51ZGF0YS5idWYgPSBzZW5kX3JpbmctPmJ1ZmZlcl9wdHI7Ci0gICAgCisKICAgICB0cmFuc19yZWNlaXZlZCsrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAicmVjdl94dGlfdWRwX3JyOiBUcmFuc2FjdGlvbiAlZCBjb21wbGV0ZS5cbiIsCiAJICAgICAgdHJhbnNfcmVjZWl2ZWQpOwogICAgICAgZmZsdXNoKHdoZXJlKTsKICAgICB9Ci0gICAgCisKICAgfQotICAKLSAgCisKKwogICAvKiBUaGUgbG9vcCBub3cgZXhpdHMgZHVlIHRvIHRpbWVvdXQgb3IgdHJhbnNhY3Rpb24gY291bnQgYmVpbmcgKi8KICAgLyogcmVhY2hlZCAqLwotICAKKwogICBjcHVfc3RvcCh4dGlfdWRwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1LCZlbGFwc2VkX3RpbWUpOwotICAKKwogICBpZiAodGltZXNfdXApIHsKICAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzICovCiAgICAgLyogbG9uZ2VyIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgKi8KQEAgLTQ0OTIsMTYgKzQ0OTEsMTYgQEAKICAgICBlbGFwc2VkX3RpbWUgLT0gUEFEX1RJTUU7CiAgIH0KICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfeHRpX3VkcF9ycjogZ290ICVkIHRyYW5zYWN0aW9uc1xuIiwKIAkgICAgdHJhbnNfcmVjZWl2ZWQpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCi0gIHh0aV91ZHBfcnJfcmVzdWx0cy0+Ynl0ZXNfcmVjZWl2ZWQgPSAodHJhbnNfcmVjZWl2ZWQgKiAKLQkJCQkgICAgKHh0aV91ZHBfcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsgCisKKyAgeHRpX3VkcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqCisJCQkJICAgICh4dGlfdWRwX3JyX3JlcXVlc3QtPnJlcXVlc3Rfc2l6ZSArCiAJCQkJICAgICB4dGlfdWRwX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUpKTsKICAgeHRpX3VkcF9ycl9yZXN1bHRzLT50cmFuc19yZWNlaXZlZCA9IHRyYW5zX3JlY2VpdmVkOwogICB4dGlfdWRwX3JyX3Jlc3VsdHMtPmVsYXBzZWRfdGltZQkgPSBlbGFwc2VkX3RpbWU7CkBAIC00NTA5LDEzICs0NTA4LDEzIEBACiAgIGlmICh4dGlfdWRwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgeHRpX3VkcF9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl94dGlfdWRwX3JyOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKIAogICAvKiB3ZSBhcmUgZG9uZSB3aXRoIHRoZSBzb2NrZXQgbm93ICovCkBAIC00NTI1LDEwICs0NTI0LDEwIEBACiAMCiAgLyogdGhpcyByb3V0aW5lIGltcGxlbWVudHMgdGhlIHJlY2VpdmUgKG5ldHNlcnZlcikgc2lkZSBvZiBhIFhUSV9UQ1BfUlIgKi8KICAvKiB0ZXN0ICovCi12b2lkIAordm9pZAogcmVjdl94dGlfdGNwX3JyKCkKIHsKLSAgCisKICAgc3RydWN0IHJpbmdfZWx0ICpzZW5kX3Jpbmc7CiAgIHN0cnVjdCByaW5nX2VsdCAqcmVjdl9yaW5nOwogCkBAIC00NTQ2LDIzICs0NTQ1LDIzIEBACiAgIGludAlyZXF1ZXN0X2J5dGVzX3JlbWFpbmluZzsKICAgaW50CXRpbWVkX291dCA9IDA7CiAgIGZsb2F0CWVsYXBzZWRfdGltZTsKLSAgCisKICAgc3RydWN0CXh0aV90Y3BfcnJfcmVxdWVzdF9zdHJ1Y3QJKnh0aV90Y3BfcnJfcmVxdWVzdDsKICAgc3RydWN0CXh0aV90Y3BfcnJfcmVzcG9uc2Vfc3RydWN0CSp4dGlfdGNwX3JyX3Jlc3BvbnNlOwogICBzdHJ1Y3QJeHRpX3RjcF9ycl9yZXN1bHRzX3N0cnVjdAkqeHRpX3RjcF9ycl9yZXN1bHRzOwotICAKLSAgeHRpX3RjcF9ycl9yZXF1ZXN0ID0gCisKKyAgeHRpX3RjcF9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHh0aV90Y3BfcnJfcmVxdWVzdF9zdHJ1Y3QgKiluZXRwZXJmX3JlcXVlc3QuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7CiAgIHh0aV90Y3BfcnJfcmVzcG9uc2UgPQogICAgIChzdHJ1Y3QgeHRpX3RjcF9ycl9yZXNwb25zZV9zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwogICB4dGlfdGNwX3JyX3Jlc3VsdHMgPQogICAgIChzdHJ1Y3QgeHRpX3RjcF9ycl9yZXN1bHRzX3N0cnVjdCAqKW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC50ZXN0X3NwZWNpZmljX2RhdGE7Ci0gIAorCiAgIGlmIChkZWJ1ZykgewogICAgIGZwcmludGYod2hlcmUsIm5ldHNlcnZlcjogcmVjdl94dGlfdGNwX3JyOiBlbnRlcmVkLi4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIFdlIHdhbnQgdG8gc2V0LXVwIHRoZSBsaXN0ZW4gc29ja2V0IHdpdGggYWxsIHRoZSBkZXNpcmVkICovCiAgIC8qIHBhcmFtZXRlcnMgYW5kIHRoZW4gbGV0IHRoZSBpbml0aWF0b3Iga25vdyB0aGF0IGFsbCBpcyByZWFkeS4gSWYgKi8KICAgLyogc29ja2V0IHNpemUgZGVmYXVsdHMgYXJlIHRvIGJlIHVzZWQsIHRoZW4gdGhlIGluaXRpYXRvciB3aWxsIGhhdmUgKi8KQEAgLTQ1NzAsMjQgKzQ1NjksMjQgQEAKICAgLyogc2VuZC1iYWNrIHdoYXQgdGhleSBhcmUuIElmIHRoYXQgaW5mb3JtYXRpb24gY2Fubm90IGJlIGRldGVybWluZWQsICovCiAgIC8qIHRoZW4gd2Ugc2VuZC1iYWNrIC0xJ3MgZm9yIHRoZSBzaXplcy4gSWYgdGhpbmdzIGdvIHdyb25nIGZvciBhbnkgKi8KICAgLyogcmVhc29uLCB3ZSB3aWxsIGRyb3AgYmFjayB0ZW4geWFyZHMgYW5kIHB1bnQuICovCi0gIAorCiAgIC8qIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIHdlIHdhbnQgdGhlIHJlbW90ZSB0byBrbm93IGFib3V0IGl0LiBJdCAqLwogICAvKiB3b3VsZCBiZSBiZXN0IGlmIHRoZSBlcnJvciB0aGF0IHRoZSByZW1vdGUgcmVwb3J0cyB0byB0aGUgdXNlciBpcyAqLwogICAvKiB0aGUgYWN0dWFsIGVycm9yIHdlIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBzb21lIGJvZ3VzIHVuZXhwZWN0ZWQgKi8KICAgLyogcmVzcG9uc2UgdHlwZSBtZXNzYWdlLiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3BfcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBYVElfVENQX1JSX1JFU1BPTlNFOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3BfcnI6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBhbGxvY2F0ZSB0aGUgcmVjdiBhbmQgc2VuZCByaW5ncyB3aXRoIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50cyAqLwogICAvKiBhbmQgb2Zmc2V0cy4gcmFqIDcvOTQgKi8KICAgaWYgKGRlYnVnKSB7CkBAIC00NjE0LDIwICs0NjEzLDIwIEBACiAJCQkJICAgeHRpX3RjcF9ycl9yZXF1ZXN0LT5yZWN2X2FsaWdubWVudCwKIAkJCQkgICB4dGlfdGNwX3JyX3JlcXVlc3QtPnJlY3Zfb2Zmc2V0KTsKIAotICAKKwogICAvKiBMZXQncyBjbGVhci1vdXQgb3VyIHNvY2thZGRyIGZvciB0aGUgc2FrZSBvZiBjbGVhbmxpbmVzLiBUaGVuIHdlICovCiAgIC8qIGNhbiBwdXQgaW4gT1VSIHZhbHVlcyAhLSkgQXQgc29tZSBwb2ludCwgd2UgbWF5IHdhbnQgdG8gbmFpbCB0aGlzICovCiAgIC8qIHNvY2tldCB0byBhIHBhcnRpY3VsYXIgbmV0d29yay1sZXZlbCBhZGRyZXNzLCBidXQgZm9yIG5vdywgKi8KICAgLyogSU5BRERSX0FOWSBzaG91bGQgYmUganVzdCBmaW5lLiAqLwotICAKKwogICBiemVybygoY2hhciAqKSZteWFkZHJfaW4sCiAJc2l6ZW9mKG15YWRkcl9pbikpOwogICBteWFkZHJfaW4uc2luX2ZhbWlseSAgICAgID0gQUZfSU5FVDsKICAgbXlhZGRyX2luLnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7CiAgIG15YWRkcl9pbi5zaW5fcG9ydCAgICAgICAgPSAwOwotICAKKwogICAvKiBHcmFiIGEgc29ja2V0IHRvIGxpc3RlbiBvbiwgYW5kIHRoZW4gbGlzdGVuIG9uIGl0LiAqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3BfcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtNDY0Miw5ICs0NjQxLDkgQEAKICAgbG9jX25vZGVsYXkgPSB4dGlfdGNwX3JyX3JlcXVlc3QtPm5vX2RlbGF5OwogICBsb2NfcmN2YXZvaWQgPSB4dGlfdGNwX3JyX3JlcXVlc3QtPnNvX3JjdmF2b2lkOwogICBsb2Nfc25kYXZvaWQgPSB4dGlfdGNwX3JyX3JlcXVlc3QtPnNvX3NuZGF2b2lkOwotICAKKwogI2lmZGVmIF9fYWxwaGEKLSAgCisKICAgLyogb2sgLSBldmVuIG9uIGEgREVDIGJveCwgc3RyaW5ncyBhcmUgc3RyaW5ncy4gSSBkaW4ndCByZWFsbHkgd2FudCAqLwogICAvKiB0byBudG9obCB0aGUgd29yZHMgb2YgYSBzdHJpbmcuIHNpbmNlIEkgZG9uJ3Qgd2FudCB0byB0ZWFjaCB0aGUgKi8KICAgLyogc2VuZF8gYW5kIHJlY3ZfIF9yZXF1ZXN0IGFuZCBfcmVzcG9uc2Ugcm91dGluZXMgYWJvdXQgdGhlIHR5cGVzLCAqLwpAQCAtNDY1NSwyOSArNDY1NCwyOSBAQAogICAgIGludCAqY2hhcndvcmQ7CiAgICAgaW50ICppbml0d29yZDsKICAgICBpbnQgKmxhc3R3b3JkOwotICAgIAorCiAgICAgaW5pdHdvcmQgPSAoaW50ICopIHh0aV90Y3BfcnJfcmVxdWVzdC0+eHRpX2RldmljZTsKICAgICBsYXN0d29yZCA9IGluaXR3b3JkICsgKCh4dGlfdGNwX3JyX3JlcXVlc3QtPmRldl9uYW1lX2xlbiArIDMpIC8gNCk7Ci0gICAgCisKICAgICBmb3IgKGNoYXJ3b3JkID0gaW5pdHdvcmQ7CiAJIGNoYXJ3b3JkIDwgbGFzdHdvcmQ7CiAJIGNoYXJ3b3JkKyspIHsKLSAgICAgIAorCiAgICAgICAqY2hhcndvcmQgPSBodG9ubCgqY2hhcndvcmQpOwogICAgIH0KICAgfQotICAKKwogI2VuZGlmIC8qIF9fYWxwaGEgKi8KIAogICBzX2xpc3RlbiA9IGNyZWF0ZV94dGlfZW5kcG9pbnQoeHRpX3RjcF9ycl9yZXF1ZXN0LT54dGlfZGV2aWNlKTsKLSAgCisKICAgaWYgKHNfbGlzdGVuID09IElOVkFMSURfU09DS0VUKSB7CiAgICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnNlcnZfZXJybm8gPSBlcnJubzsKICAgICBzZW5kX3Jlc3BvbnNlKCk7Ci0gICAgCisKICAgICBleGl0KDEpOwogICB9Ci0gIAorCiAgIC8qIExldCdzIGdldCBhbiBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoaXMgc29ja2V0IHNvIHdlIGNhbiB0ZWxsIHRoZSAqLwogICAvKiBpbml0aWF0b3IgaG93IHRvIHJlYWNoIHRoZSBkYXRhIHNvY2tldC4gVGhlcmUgbWF5IGJlIGEgZGVzaXJlIHRvICovCiAgIC8qIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsICovCkBAIC00NzAwLDcgKzQ2OTksNyBAQAogICAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vID0gdF9lcnJubzsKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgc2VuZF9yZXNwb25zZSgpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQogCkBAIC00NzEwLDIwICs0NzA5LDIwIEBACiAJICAgIG50b2hzKG15YWRkcl9pbi5zaW5fcG9ydCkpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogTm93IG15YWRkcl9pbiBjb250YWlucyB0aGUgcG9ydCBhbmQgdGhlIGludGVybmV0IGFkZHJlc3MgdGhpcyBpcyAqLwogICAvKiByZXR1cm5lZCB0byB0aGUgc2VuZGVyIGFsc28gaW1wbGljaXRseSB0ZWxsaW5nIHRoZSBzZW5kZXIgdGhhdCB0aGUgKi8KICAgLyogc29ja2V0IGJ1ZmZlciBzaXppbmcgaGFzIGJlZW4gZG9uZS4gKi8KLSAgCisKICAgeHRpX3RjcF9ycl9yZXNwb25zZS0+ZGF0YV9wb3J0X251bWJlciA9IChpbnQpIG50b2hzKG15YWRkcl9pbi5zaW5fcG9ydCk7CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgMC4wIHRvICovCiAgIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCiAgIHh0aV90Y3BfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gMC4wOyAJLyogYXNzdW1lIG5vIGNwdSAqLwogICB4dGlfdGNwX3JyX3Jlc3BvbnNlLT5tZWFzdXJlX2NwdSA9IDA7CiAKQEAgLTQ3MzEsOCArNDczMCw4IEBACiAgICAgeHRpX3RjcF9ycl9yZXNwb25zZS0+bWVhc3VyZV9jcHUgPSAxOwogICAgIHh0aV90Y3BfcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gY2FsaWJyYXRlX2xvY2FsX2NwdSh4dGlfdGNwX3JyX3JlcXVlc3QtPmNwdV9yYXRlKTsKICAgfQotICAKLSAgCisKKwogICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KICAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCiAgIHh0aV90Y3BfcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemUgPSBsc3Nfc2l6ZTsKQEAgLTQ3NDIsNyArNDc0MSw3IEBACiAgIHh0aV90Y3BfcnJfcmVzcG9uc2UtPnNvX3NuZGF2b2lkID0gbG9jX3NuZGF2b2lkOwogICB4dGlfdGNwX3JyX3Jlc3BvbnNlLT50ZXN0X2xlbmd0aCA9IHh0aV90Y3BfcnJfcmVxdWVzdC0+dGVzdF9sZW5ndGg7CiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgLyogTm93LCBsZXQncyBzZXQtdXAgdGhlIHNvY2tldCB0byBsaXN0ZW4gZm9yIGNvbm5lY3Rpb25zLiBmb3IgeHRpLCAqLwogICAvKiB0aGUgdF9saXN0ZW4gY2FsbCBpcyBibG9ja2luZyBieSBkZWZhdWx0IC0gdGhpcyBpcyBkaWZmZXJlbnQgKi8KICAgLyogc2VtYW50aWNzIGZyb20gQlNEIC0gcHJvYmFibHkgaGFzIHRvIGRvIHdpdGggYmVpbmcgYWJsZSB0byByZWplY3QgKi8KQEAgLTQ3NjgsMTQgKzQ3NjcsMTQgQEAKICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl94dGlfdGNwX3JyOiB0X2xpc3RlbiBjb21wbGV0ZSB0X2xvb2sgMHglLjR4XG4iLAogCSAgICB0X2xvb2soc19saXN0ZW4pKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIG5vdyBqdXN0IHJ1YmJlciBzdGFtcCB0aGUgdGhpbmcuIHdlIHdhbnQgdG8gdXNlIHRoZSBzYW1lIGZkPyBzbyAqLwogICAvKiB3ZSB3aWxsIGp1c3QgZXF1YXRlIHNfZGF0YSB3aXRoIHNfbGlzdGVuLiB0aGlzIHNlZW1zIGEgbGl0dGxlICovCiAgIC8qIGhva2V5IHRvIG1lLCBidXQgdGhlbiBJJ20gYSBCU0QgYmlnZ290IHN0aWxsLiByYWogMi85NSAqLwpAQCAtNDc5MSw3ICs0NzkwLDcgQEAKICAgICBjbG9zZShzX2xpc3Rlbik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl94dGlfdGNwX3JyOiB0X2FjY2VwdCBjb21wbGV0ZSB0X2xvb2sgMHglLjR4IiwKQEAgLTQ4MDIsMTIgKzQ4MDEsMTIgQEAKIAkgICAgbnRvaHMocGVlcmFkZHJfaW4uc2luX3BvcnQpKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHh0aV90Y3BfcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpOwotICAKKwogICBpZiAoeHRpX3RjcF9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTQ4MTksNyArNDgxOCw3IEBACiAgIH0KIAogICB0cmFuc19yZWNlaXZlZCA9IDA7Ci0gIAorCiAgIHdoaWxlICgoIXRpbWVzX3VwKSB8fCAodHJhbnNfcmVtYWluaW5nID4gMCkpIHsKICAgICB0ZW1wX21lc3NhZ2VfcHRyID0gcmVjdl9yaW5nLT5idWZmZXJfcHRyOwogICAgIHJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nCT0geHRpX3RjcF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7CkBAIC00ODYwLDEwICs0ODU5LDEwIEBACiAgICAgICBpZiAoZGVidWcpIHsKIAlmcHJpbnRmKHdoZXJlLCJ5bzVcbiIpOwogCWZmbHVzaCh3aGVyZSk7Ci0gICAgICB9CQkJCQkJCisgICAgICB9CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisKICAgICAvKiBOb3csIHNlbmQgdGhlIHJlc3BvbnNlIHRvIHRoZSByZW1vdGUgKi8KICAgICBpZigoYnl0ZXNfc2VudD10X3NuZChzX2RhdGEsCiAJCQkgc2VuZF9yaW5nLT5idWZmZXJfcHRyLApAQCAtNDg3NCw3ICs0ODczLDcgQEAKIAl0aW1lZF9vdXQgPSAxOwogCWlmIChkZWJ1ZykgewogCSAgZnByaW50Zih3aGVyZSwieW82XG4iKTsKLQkgIGZmbHVzaCh3aGVyZSk7CQkJCQkJCisJICBmZmx1c2god2hlcmUpOwogCX0KIAlicmVhazsKICAgICAgIH0KQEAgLTQ4OTEsNyArNDg5MCw3IEBACiAgICAgICBzZW5kX3Jlc3BvbnNlKCk7CiAgICAgICBleGl0KDEpOwogICAgIH0KLSAgICAKKwogICAgIHNlbmRfcmluZyA9IHNlbmRfcmluZy0+bmV4dDsKIAogICAgIHRyYW5zX3JlY2VpdmVkKys7CkBAIC00ODk5LDEzICs0ODk4LDEzIEBACiAgICAgICB0cmFuc19yZW1haW5pbmctLTsKICAgICB9CiAgIH0KLSAgCi0gIAorCisKICAgLyogVGhlIGxvb3Agbm93IGV4aXRzIGR1ZSB0byB0aW1lb3V0IG9yIHRyYW5zYWN0aW9uIGNvdW50IGJlaW5nICovCiAgIC8qIHJlYWNoZWQgKi8KLSAgCisKICAgY3B1X3N0b3AoeHRpX3RjcF9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSwmZWxhcHNlZF90aW1lKTsKLSAgCisKICAgc3RvcF90aW1lcigpOyAvKiB0aGlzIGlzIHByb2JhYmx5IHVubmVjZXNzYXJ5LCBidXQgaXQgc2hvdWxkbid0IGh1cnQgKi8KIAogICBpZiAodGltZWRfb3V0KSB7CkBAIC00OTE2LDE2ICs0OTE1LDE2IEBACiAgIH0KIAogICAvKiBzZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBzZW5kZXIJCQkqLwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl94dGlfdGNwX3JyOiBnb3QgJWQgdHJhbnNhY3Rpb25zXG4iLAogCSAgICB0cmFuc19yZWNlaXZlZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgeHRpX3RjcF9ycl9yZXN1bHRzLT5ieXRlc19yZWNlaXZlZCA9ICh0cmFuc19yZWNlaXZlZCAqIAotCQkJCQkoeHRpX3RjcF9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemUgKyAKKworICB4dGlfdGNwX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkID0gKHRyYW5zX3JlY2VpdmVkICoKKwkJCQkJKHh0aV90Y3BfcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsKIAkJCQkJIHh0aV90Y3BfcnJfcmVxdWVzdC0+cmVzcG9uc2Vfc2l6ZSkpOwogICB4dGlfdGNwX3JyX3Jlc3VsdHMtPnRyYW5zX3JlY2VpdmVkID0gdHJhbnNfcmVjZWl2ZWQ7CiAgIHh0aV90Y3BfcnJfcmVzdWx0cy0+ZWxhcHNlZF90aW1lICAgPSBlbGFwc2VkX3RpbWU7CkBAIC00OTMzLDE4ICs0OTMyLDE4IEBACiAgIGlmICh4dGlfdGNwX3JyX3JlcXVlc3QtPm1lYXN1cmVfY3B1KSB7CiAgICAgeHRpX3RjcF9ycl9yZXN1bHRzLT5jcHVfdXRpbAk9IGNhbGNfY3B1X3V0aWwoZWxhcHNlZF90aW1lKTsKICAgfQotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLAogCSAgICAicmVjdl94dGlfdGNwX3JyOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIC8qIHdlIGFyZSBkb25lIHdpdGggdGhlIHNvY2tldCwgZnJlZSBpdCAqLwogICB0X2Nsb3NlKHNfZGF0YSk7CiAKICAgc2VuZF9yZXNwb25zZSgpOwotICAKKwogfQogCiAMCkBAIC00OTU2LDUwICs0OTU1LDUwIEBACiAgLyogaXQgd2lsbCBhbHNvIGxvb2sgKGNhbiBsb29rKSBtdWNoIGxpa2UgdGhlIGNvbW11bmljYXRpb24gcGF0dGVybiAqLwogIC8qIG9mIGh0dHAgZm9yIHd3dyBhY2Nlc3MuICovCiAKLXZvaWQgCit2b2lkCiBzZW5kX3h0aV90Y3BfY29ubl9ycihjaGFyIHJlbW90ZV9ob3N0W10pCiB7Ci0gIAorCiAgIGNoYXIgKnRwdXRfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0ICBSZXNwLiAgIEVsYXBzZWQgIFRyYW5zLlxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgICBTaXplICAgIFRpbWUgICAgIFJhdGUgICAgICAgICBcblwKIGJ5dGVzICBCeXRlcyAgYnl0ZXMgICAgYnl0ZXMgICBzZWNzLiAgICBwZXIgc2VjICAgXG5cbiI7Ci0gIAorCiAgIGNoYXIgKnRwdXRfZm10XzAgPQogICAgICIlNy4yZlxuIjsKLSAgCisKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzEgPSAiXAogJS02ZCAlLTZkICUtNmQgICAlLTZkICAlLTYuMmYgICAlNy4yZiAgIFxuIjsKICAgY2hhciAqdHB1dF9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICpjcHVfdGl0bGUgPSAiXAogTG9jYWwgL1JlbW90ZVxuXAogU29ja2V0IFNpemUgICBSZXF1ZXN0IFJlc3AuICBFbGFwc2VkIFRyYW5zLiAgIENQVSAgICBDUFUgICAgUy5kZW0gICBTLmRlbVxuXAogU2VuZCAgIFJlY3YgICBTaXplICAgIFNpemUgICBUaW1lICAgIFJhdGUgICAgIGxvY2FsICByZW1vdGUgbG9jYWwgICByZW1vdGVcblwKIGJ5dGVzICBieXRlcyAgYnl0ZXMgICBieXRlcyAgc2Vjcy4gICBwZXIgc2VjICAlJSAgICAgICUlICAgICAgdXMvVHIgICB1cy9UclxuXG4iOwotICAKKwogICBjaGFyICpjcHVfZm10XzAgPQogICAgICIlNi4zZlxuIjsKLSAgCisKICAgY2hhciAqY3B1X2ZtdF8xX2xpbmVfMSA9ICJcCiAlLTZkICUtNmQgJS02ZCAgJS02ZCAlLTYuMmYgICUtNi4yZiAgICUtNi4yZiAlLTYuMmYgJS02LjNmICAlLTYuM2ZcbiI7Ci0gIAorCiAgIGNoYXIgKmNwdV9mbXRfMV9saW5lXzIgPSAiXAogJS02ZCAlLTZkXG4iOwotICAKKwogICBjaGFyICprc2lua19mbXQgPSAiXAogQWxpZ25tZW50ICAgICAgT2Zmc2V0XG5cCiBMb2NhbCAgUmVtb3RlICBMb2NhbCAgUmVtb3RlXG5cCiBTZW5kICAgUmVjdiAgICBTZW5kICAgUmVjdlxuXAogJTVkICAlNWQgICAlNWQgICU1ZFxuIjsKLSAgCi0gIAorCisKICAgaW50IAkJCW9uZSA9IDE7CiAgIGludAkJCXRpbWVkX291dCA9IDA7CiAgIGZsb2F0CQkJZWxhcHNlZF90aW1lOwotICAKKwogICBpbnQJbGVuOwogICBzdHJ1Y3QgcmluZ19lbHQgKnNlbmRfcmluZzsKICAgc3RydWN0IHJpbmdfZWx0ICpyZWN2X3Jpbmc7CkBAIC01MDExLDEzICs1MDEwLDEzIEBACiAgIGludAlzb2NrX29wdF9sZW4gPSBzaXplb2YoaW50KTsKICAgaW50CXJzcF9ieXRlc19sZWZ0OwogICBpbnQJcnNwX2J5dGVzX3JlY3ZkOwotICAKKwogICBmbG9hdAlsb2NhbF9jcHVfdXRpbGl6YXRpb247CiAgIGZsb2F0CWxvY2FsX3NlcnZpY2VfZGVtYW5kOwogICBmbG9hdAlyZW1vdGVfY3B1X3V0aWxpemF0aW9uOwogICBmbG9hdAlyZW1vdGVfc2VydmljZV9kZW1hbmQ7CiAgIGRvdWJsZQl0aHJ1cHV0OwotICAKKwogICBzdHJ1Y3QJaG9zdGVudAkgICAgICAgICpocDsKICAgc3RydWN0CXNvY2thZGRyX2luCXNlcnZlcjsKICAgc3RydWN0ICAgICAgICBzb2NrYWRkcl9pbiAgICAgKm15YWRkcjsKQEAgLTUwMjcsMTkgKzUwMjYsMTkgQEAKICAgc3RydWN0CXh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0X3N0cnVjdAkqeHRpX3RjcF9jb25uX3JyX3JlcXVlc3Q7CiAgIHN0cnVjdAl4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2Vfc3RydWN0CSp4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2U7CiAgIHN0cnVjdAl4dGlfdGNwX2Nvbm5fcnJfcmVzdWx0c19zdHJ1Y3QJKnh0aV90Y3BfY29ubl9ycl9yZXN1bHQ7Ci0gIAotICB4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdCA9IAorCisgIHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgeHRpX3RjcF9jb25uX3JyX3Jlc3BvbnNlID0gCisgIHh0aV90Y3BfY29ubl9ycl9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCB4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKICAgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdCA9CiAgICAgKHN0cnVjdCB4dGlfdGNwX2Nvbm5fcnJfcmVzdWx0c19zdHJ1Y3QgKiluZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQudGVzdF9zcGVjaWZpY19kYXRhOwotICAKKwogICAvKiBzaW5jZSB3ZSBhcmUgbm93IGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBjb2RlIHRoYXQgZXN0YWJsaXNoZWQgdGhlICovCiAgIC8qIGNvbnRyb2wgc29ja2V0LCBhbmQgc2luY2Ugd2Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBkaWZmZXJlbnQgKi8KICAgLyogcHJvdG9jb2xzIGFuZCBzdWNoLCB3ZSBhcmUgcGFzc2VkIHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgaG9zdCBhbmQgKi8KICAgLyogbXVzdCB0dXJuIHRoYXQgaW50byB0aGUgdGVzdCBzcGVjaWZpYyBhZGRyZXNzaW5nIGluZm9ybWF0aW9uLiAqLwotICAKKwogICBteWFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2luICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKICAgaWYgKG15YWRkciA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJtYWxsb2MoJWQpIGZhaWxlZCFcbiIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKQEAgLTUwNTQsNyArNTA1Myw3IEBACiAKICAgLyogaXQgd291bGQgc2VlbSB0aGF0IHdoaWxlIEhQLVVYIHdpbGwgYWxsb3cgYW4gSVAgYWRkcmVzcyAoYXMgYSAqLwogICAvKiBzdHJpbmcpIGluIGEgY2FsbCB0byBnZXRob3N0YnluYW1lLCBvdGhlciwgbGVzcyBlbmxpZ2h0ZW5lZCAqLwotICAvKiBzeXN0ZW1zIGRvIG5vdC4gZml4IGZyb20gYXdqYWNrc0BjYS5zYW5kaWEuZ292IHJhaiAxMC85NSAqLyAgCisgIC8qIHN5c3RlbXMgZG8gbm90LiBmaXggZnJvbSBhd2phY2tzQGNhLnNhbmRpYS5nb3YgcmFqIDEwLzk1ICovCiAgIC8qIG9yZGVyIGNoYW5nZWQgdG8gY2hlY2sgZm9yIElQIGFkZHJlc3MgZmlyc3QuIHJhaiA3Lzk2ICovCiAKICAgaWYgKChhZGRyID0gaW5ldF9hZGRyKHJlbW90ZV9ob3N0KSkgPT0gU09DS0VUX0VSUk9SKSB7CkBAIC01MDc5LDggKzUwNzgsOCBAQAogICAgIC8qIGl0IHdhcyBhIHZhbGlkIElQIGFkZHJlc3MgKi8KICAgICBzZXJ2ZXIuc2luX2FkZHIuc19hZGRyID0gYWRkcjsKICAgICBzZXJ2ZXIuc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0gIH0gICAgCi0gIAorICB9CisKICAgaWYgKCBwcmludF9oZWFkZXJzICkgewogICAgIGZwcmludGYod2hlcmUsIlRDUCBDb25uZWN0L1JlcXVlc3QvUmVzcG9uc2UgVGVzdFxuIik7CiAgICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKQpAQCAtNTA4OCwxMyArNTA4NywxMyBAQAogICAgIGVsc2UKICAgICAgIGZwcmludGYod2hlcmUsdHB1dF90aXRsZSxmb3JtYXRfdW5pdHMoKSk7CiAgIH0KLSAgCisKICAgLyogaW5pdGlhbGl6ZSBhIGZldyBjb3VudGVycyAqLwotICAKKwogICBudW1tZXNzYWdlcwk9CTA7CiAgIGJ5dGVzX3hmZXJkCT0JMC4wOwogICB0aW1lc191cCAJPSAJMDsKLSAgCisKICAgLyogc2V0LXVwIHRoZSBkYXRhIGJ1ZmZlcnMgd2l0aCB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBhbmQgb2Zmc2V0ICovCiAgIGlmIChzZW5kX3dpZHRoID09IDApIHNlbmRfd2lkdGggPSAxOwogICBpZiAocmVjdl93aWR0aCA9PSAwKSByZWN2X3dpZHRoID0gMTsKQEAgLTUxMTMsMTggKzUxMTIsMTggQEAKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwic2VuZF94dGlfdGNwX2Nvbm5fcnI6IHNlbmRfc29ja2V0IG9idGFpbmVkLi4uXG4iKTsKICAgfQotICAKKwogICAvKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGNwdSB1dGlsaXphdGlvbiBtZWFzdXJlbWVudHMsIHdlIG11c3QgKi8KICAgLyogY2FsaWJyYXRlIHRoZSBjcHUocykuIFdlIHdpbGwgcGVyZm9ybSB0aGlzIHRhc2sgd2l0aGluIHRoZSB0ZXN0cyAqLwogICAvKiB0aGVtc2VsdmVzLiBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjcHUgcmF0ZSwgdGhlbiAqLwogICAvKiBjYWxpYnJhdGVfbG9jYWxfY3B1IHdpbGwgcmV0dXJuIHJhdGhlciBxdWlja2x5IGFzIGl0IHdpbGwgaGF2ZSAqLwogICAvKiBub3RoaW5nIHRvIGRvLiBJZiBsb2NhbF9jcHVfcmF0ZSBpcyB6ZXJvLCB0aGVuIHdlIHdpbGwgZ28gdGhyb3VnaCAqLwogICAvKiBhbGwgdGhlICJub3JtYWwiIGNhbGlicmF0aW9uIHN0dWZmIGFuZCByZXR1cm4gdGhlIHJhdGUgYmFjay4qLwotICAKKwogICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CiAgICAgbG9jYWxfY3B1X3JhdGUgPSBjYWxpYnJhdGVfbG9jYWxfY3B1KGxvY2FsX2NwdV9yYXRlKTsKICAgfQotICAKKwogICAvKiBUZWxsIHRoZSByZW1vdGUgZW5kIHRvIGRvIGEgbGlzdGVuLiBUaGUgc2VydmVyIGFsdGVycyB0aGUgc29ja2V0ICovCiAgIC8qIHBhcmFtdGVycyBvbiB0aGUgb3RoZXIgc2lkZSBhdCB0aGlzIHBvaW50LCBoZW5jZSB0aGUgcmVhc29uIGZvciAqLwogICAvKiBhbGwgdGhlIHZhbHVlcyBiZWluZyBwYXNzZWQgaW4gdGhlIHNldHVwIG1lc3NhZ2UuIElmIHRoZSB1c2VyIGRpZCAqLwpAQCAtNTEzMiw3ICs1MTMxLDcgQEAKICAgLyogd2lsbCBpbmRpY2F0ZSB0byB0aGUgcmVtb3RlIHRoYXQgbm8gY2hhbmdlcyBiZXlvbmQgdGhlIHN5c3RlbSdzICovCiAgIC8qIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuIEFsaWdubWVudCBpcyB0aGUgZXhjZXB0aW9uLCBpdCB3aWxsICovCiAgIC8qIGRlZmF1bHQgdG8gOCwgd2hpY2ggd2lsbCBiZSBubyBhbGlnbm1lbnQgYWx0ZXJhdGlvbnMuICovCi0gIAorCiAgIG5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnJlcXVlc3RfdHlwZQkgICAgICAgID0JRE9fWFRJX1RDUF9DUlI7CiAgIHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZWN2X2J1Zl9zaXplCT0JcnNyX3NpemU7CiAgIHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5zZW5kX2J1Zl9zaXplCT0JcnNzX3NpemU7CkBAIC01MTUzLDEzICs1MTUyLDEzIEBACiAgIGVsc2UgewogICAgIHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aAk9CXRlc3RfdHJhbnMgKiAtMTsKICAgfQotICAKKwogICBpZiAoZGVidWcgPiAxKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0cGVyZjogc2VuZF94dGlfdGNwX2Nvbm5fcnI6IHJlcXVlc3RpbmcgVENQIGNyciB0ZXN0XG4iKTsKICAgfQotICAKKwogICBzZW5kX3JlcXVlc3QoKTsKLSAgCisKICAgLyogVGhlIHJlc3BvbnNlIGZyb20gdGhlIHJlbW90ZSB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSByZWxldmFudCAJKi8KICAgLyogc29ja2V0IHBhcmFtZXRlcnMgZm9yIHRoaXMgdGVzdCB0eXBlLiBXZSB3aWxsIHB1dCB0aGVtIGJhY2sgaW50byAJKi8KICAgLyogdGhlIHZhcmlhYmxlcyBoZXJlIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBpZiBkZXNpcmVkLiAgVGhlCSovCkBAIC01MTY5LDkgKzUxNjgsOSBAQAogICAvKiBhZnRlciB0aGUgY29ubmVjdCByZXR1cm5zLiBUaGUgcmVtb3RlIHdpbGwgZ3JhYiB0aGUgY291bnRlciByaWdodAkqLwogICAvKiBhZnRlciB0aGUgYWNjZXB0IGNhbGwuIFRoaXMgc2F2ZXMgdGhlIGhhc3NsZSBvZiBleHRyYSBtZXNzYWdlcwkqLwogICAvKiBiZWluZyBzZW50IGZvciB0aGUgVENQIHRlc3RzLgkJCQkJKi8KLSAgCisKICAgcmVjdl9yZXNwb25zZSgpOwotICAKKwogICBpZiAoIW5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKSB7CiAgICAgcnNyX3NpemUJPQl4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPnJlY3ZfYnVmX3NpemU7CiAgICAgcnNzX3NpemUJPQl4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPnNlbmRfYnVmX3NpemU7CkBAIC01MTkwLDEzICs1MTg5LDEzIEBACiAgIGVsc2UgewogICAgIFNldF9lcnJubyhuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyk7CiAgICAgcGVycm9yKCJuZXRwZXJmOiByZW1vdGUgZXJyb3IiKTsKLSAgICAKKwogICAgIGV4aXQoMSk7CiAgIH0KLSAgCisKICAgLyogU2V0LXVwIHRoZSB0ZXN0IGVuZCBjb25kaXRpb25zLiBGb3IgYSByZXF1ZXN0L3Jlc3BvbnNlIHRlc3QsIHRoZXkgKi8KICAgLyogY2FuIGJlIGVpdGhlciB0aW1lIG9yIHRyYW5zYWN0aW9uIGJhc2VkLiAqLwotICAKKwogICBpZiAodGVzdF90aW1lKSB7CiAgICAgLyogVGhlIHVzZXIgd2FudGVkIHRvIGVuZCB0aGUgdGVzdCBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLiAqLwogICAgIHRpbWVzX3VwID0gMDsKQEAgLTUyMDgsMTMgKzUyMDcsMTMgQEAKICAgICB0cmFuc19yZW1haW5pbmcgPSB0ZXN0X2J5dGVzOwogICAgIHRpbWVzX3VwID0gMTsKICAgfQotICAKKwogICAvKiBUaGUgY3B1X3N0YXJ0IHJvdXRpbmUgd2lsbCBncmFiIHRoZSBjdXJyZW50IHRpbWUgYW5kIHBvc3NpYmx5ICovCiAgIC8qIHZhbHVlIG9mIHRoZSBpZGxlIGNvdW50ZXIgZm9yIGxhdGVyIHVzZSBpbiBtZWFzdXJpbmcgY3B1ICovCiAgIC8qIHV0aWxpemF0aW9uIGFuZC9vciBzZXJ2aWNlIGRlbWFuZCBhbmQgdGhydXB1dC4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KGxvY2FsX2NwdV91c2FnZSk7Ci0gIAorCiAgIC8qIFdlIHVzZSBhbiAiT1IiIHRvIGNvbnRyb2wgdGVzdCBleGVjdXRpb24uIFdoZW4gdGhlIHRlc3QgaXMgKi8KICAgLyogY29udHJvbGxlZCBieSB0aW1lLCB0aGUgYnl0ZSBjb3VudCBjaGVjayB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICovCiAgIC8qIFdoZW4gdGhlIHRlc3QgaXMgY29udHJvbGxlZCBieSBieXRlIGNvdW50LCB0aGUgdGltZSB0ZXN0IHdpbGwgKi8KQEAgLTUyMjksMTIgKzUyMjgsMTIgQEAKICAgLyogdGhlIHBvcnQgbnVtYmVyIGFzIGEgc2lnbmVkIDE2IGJpdCBxdWFudGl0eS4gKi8KICAgbXlwb3J0ID0gNjU1MzA7CiAgIG15YWRkci0+c2luX3BvcnQgPSBodG9ucyhteXBvcnQpOwotICAKKwogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHRyYW5zX3JlbWFpbmluZyA+IDApKSB7CiAKICAgICAvKiBzZXQgdXAgdGhlIGRhdGEgc29ja2V0ICovCiAgICAgc2VuZF9zb2NrZXQgPSBjcmVhdGVfeHRpX2VuZHBvaW50KGxvY194dGlfZGV2aWNlKTsKLSAgCisKICAgICBpZiAoc2VuZF9zb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICAgIHBlcnJvcigibmV0cGVyZjogc2VuZF94dGlfdGNwX2Nvbm5fcnI6IHRjcCBzdHJlYW0gZGF0YSBzb2NrZXQiKTsKICAgICAgIGV4aXQoMSk7CkBAIC01MjY5LDcgKzUyNjgsNyBAQAogICAgIH0KIAogICAgIC8qIENvbm5lY3QgdXAgdG8gdGhlIHJlbW90ZSBwb3J0IG9uIHRoZSBkYXRhIHNvY2tldCAgKi8KLSAgICBpZiAoY29ubmVjdChzZW5kX3NvY2tldCwgCisgICAgaWYgKGNvbm5lY3Qoc2VuZF9zb2NrZXQsCiAJCShzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLAogCQlzaXplb2Yoc2VydmVyKSkgPT0gSU5WQUxJRF9TT0NLRVQpewogICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CkBAIC01MzIwLDcgKzUzMTksNyBAQAogICAgICAgfQogICAgICAgcnNwX2J5dGVzX2xlZnQgLT0gcnNwX2J5dGVzX3JlY3ZkOwogICAgICAgdGVtcF9tZXNzYWdlX3B0ciAgKz0gcnNwX2J5dGVzX3JlY3ZkOwotICAgIH0JCisgICAgfQogICAgIHJlY3ZfcmluZyA9IHJlY3ZfcmluZy0+bmV4dDsKIAogICAgIGlmICh0aW1lZF9vdXQpIHsKQEAgLTUzMzEsMTEgKzUzMzAsMTEgQEAKIAogICAgIGNsb3NlKHNlbmRfc29ja2V0KTsKIAotICAgIG51bW1lc3NhZ2VzKys7ICAgICAgICAgIAorICAgIG51bW1lc3NhZ2VzKys7CiAgICAgaWYgKHRyYW5zX3JlbWFpbmluZykgewogICAgICAgdHJhbnNfcmVtYWluaW5nLS07CiAgICAgfQotICAgIAorCiAgICAgaWYgKGRlYnVnID4gMykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAiVHJhbnNhY3Rpb24gJWQgY29tcGxldGVkIG9uIGxvY2FsIHBvcnQgJWRcbiIsCkBAIC01MzY5LDE3ICs1MzY4LDE3IEBACiAgICAgfQogCiAgIH0KLSAgCisKICAgLyogdGhpcyBjYWxsIHdpbGwgYWx3YXlzIGdpdmUgdXMgdGhlIGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3QsIGFuZCAqLwogICAvKiB3aWxsIGFsc28gc3RvcmUtYXdheSB0aGUgbmVjZXNzYXJpZXMgZm9yIGNwdSB1dGlsaXphdGlvbiAqLwogCiAgIGNwdV9zdG9wKGxvY2FsX2NwdV91c2FnZSwmZWxhcHNlZF90aW1lKTsJLyogd2FzIGNwdSBiZWluZyBtZWFzdXJlZD8gKi8KICAgLyogaG93IGxvbmcgZGlkIHdlIHJlYWxseSBydW4/ICovCi0gIAorCiAgIC8qIEdldCB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSByZW1vdGUgZW5kLiBUaGUgcmVtb3RlIHdpbGwgaGF2ZSAqLwogICAvKiBjYWxjdWxhdGVkIHNlcnZpY2UgZGVtYW5kIGFuZCBhbGwgdGhvc2UgaW50ZXJlc3RpbmcgdGhpbmdzLiBJZiBpdCAqLwogICAvKiB3YXNuJ3Qgc3VwcG9zZWQgdG8gY2FyZSwgaXQgd2lsbCByZXR1cm4gb2J2aW91cyB2YWx1ZXMuICovCi0gIAorCiAgIHJlY3ZfcmVzcG9uc2UoKTsKICAgaWYgKCFuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubykgewogICAgIGlmIChkZWJ1ZykKQEAgLTUzODgsMTAgKzUzODcsMTAgQEAKICAgZWxzZSB7CiAgICAgU2V0X2Vycm5vKG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vKTsKICAgICBwZXJyb3IoIm5ldHBlcmY6IHJlbW90ZSBlcnJvciIpOwotICAgIAorCiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgY2FsY3VsYXRlIHdoYXQgb3VyIHRocnVwdXQgd2FzIGZvciB0aGUgdGVzdC4gSW4gdGhlIGZ1dHVyZSwgKi8KICAgLyogd2UgbWF5IHdhbnQgdG8gaW5jbHVkZSBhIGNhbGN1bGF0aW9uIG9mIHRoZSB0aHJ1cHV0IG1lYXN1cmVkIGJ5ICovCiAgIC8qIHRoZSByZW1vdGUsIGJ1dCBpdCBzaG91bGQgYmUgdGhlIGNhc2UgdGhhdCBmb3IgYSBUQ1Agc3RyZWFtIHRlc3QsICovCkBAIC01NDAyLDExICs1NDAxLDExIEBACiAgIC8qIHNlbmRfc2l6ZSwgc28gd2UgcmVhbGx5IGRpZG4ndCBzZW5kIHdoYXQgaGUgYXNrZWQgZm9yIDstKSBXZSB1c2UgKi8KICAgLyogS2J5dGVzL3MgYXMgdGhlIHVuaXRzIG9mIHRocnVwdXQgZm9yIGEgVENQIHN0cmVhbSB0ZXN0LCB3aGVyZSBLID0gKi8KICAgLyogMTAyNC4gQSBmdXR1cmUgZW5oYW5jZW1lbnQgKm1pZ2h0KiBiZSB0byBjaG9vc2UgZnJvbSBhIGNvdXBsZSBvZiAqLwotICAvKiB1bml0IHNlbGVjdGlvbnMuICovIAotICAKKyAgLyogdW5pdCBzZWxlY3Rpb25zLiAqLworCiAgIGJ5dGVzX3hmZXJkCT0gKHJlcV9zaXplICogbnVtbWVzc2FnZXMpICsgKHJzcF9zaXplICogbnVtbWVzc2FnZXMpOwogICB0aHJ1cHV0CT0gY2FsY190aHJ1cHV0KGJ5dGVzX3hmZXJkKTsKLSAgCisKICAgaWYgKGxvY2FsX2NwdV91c2FnZSB8fCByZW1vdGVfY3B1X3VzYWdlKSB7CiAgICAgLyogV2UgbXVzdCBub3cgZG8gYSBsaXR0bGUgbWF0aCBmb3Igc2VydmljZSBkZW1hbmQgYW5kIGNwdSAqLwogICAgIC8qIHV0aWxpemF0aW9uIGZvciB0aGUgc3lzdGVtKHMpICovCkBAIC01NDMyLDcgKzU0MzEsNyBAQAogICAgICAgbG9jYWxfY3B1X3V0aWxpemF0aW9uCT0gLTEuMDsKICAgICAgIGxvY2FsX3NlcnZpY2VfZGVtYW5kCT0gLTEuMDsKICAgICB9Ci0gICAgCisKICAgICBpZiAocmVtb3RlX2NwdV91c2FnZSkgewogICAgICAgaWYgKHJlbW90ZV9jcHVfcmF0ZSA9PSAwLjApIHsKIAlmcHJpbnRmKHdoZXJlLCJEQU5HRVIgIERBTkdFUiAgREFOR0VSICAgIERBTkdFUiAgREFOR0VSICBEQU5HRVIgICAgREFOR0VSIVxuIik7CkBAIC01NDUyLDcgKzU0NTEsNyBAQAogICAgICAgcmVtb3RlX2NwdV91dGlsaXphdGlvbiA9IC0xLjA7CiAgICAgICByZW1vdGVfc2VydmljZV9kZW1hbmQgID0gLTEuMDsKICAgICB9Ci0gICAgCisKICAgICAvKiBXZSBhcmUgbm93IHJlYWR5IHRvIHByaW50IGFsbCB0aGUgaW5mb3JtYXRpb24uIElmIHRoZSB1c2VyICovCiAgICAgLyogaGFzIHNwZWNpZmllZCB6ZXJvLWxldmVsIHZlcmJvc2l0eSwgd2Ugd2lsbCBqdXN0IHByaW50IHRoZSAqLwogICAgIC8qIGxvY2FsIHNlcnZpY2UgZGVtYW5kLCBvciB0aGUgcmVtb3RlIHNlcnZpY2UgZGVtYW5kLiBJZiB0aGUgKi8KQEAgLTU0NjEsNyArNTQ2MCw3IEBACiAgICAgLyogb2YgZ3JlYXRlciB0aGFuIDEsIHdlIHdpbGwgZGlzcGxheSBhIHZlcml0YWJsZSBwbGV0aG9yYSBvZiAqLwogICAgIC8qIGJhY2tncm91bmQgaW5mb3JtYXRpb24gZnJvbSBvdXRzaWRlIG9mIHRoaXMgYmxvY2sgYXMgaXQgaXQgKi8KICAgICAvKiBub3QgY3B1X21lYXN1cmVtZW50IHNwZWNpZmljLi4uICAqLwotICAgIAorCiAgICAgc3dpdGNoICh2ZXJib3NpdHkpIHsKICAgICBjYXNlIDA6CiAgICAgICBpZiAobG9jYWxfY3B1X3VzYWdlKSB7CkBAIC01NTE2LDM0ICs1NTE1LDM0IEBACiAJICAgICAgdHB1dF9mbXRfMV9saW5lXzIsCiAJICAgICAgcnNzX3NpemUsIAkJLyogcmVtb3RlIHJlY3ZidWYgc2l6ZSAqLwogCSAgICAgIHJzcl9zaXplKTsKLSAgICAgIAorCiAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCisKICAgLyogaXQgd291bGQgYmUgYSBnb29kIHRoaW5nIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBvZiB0aGUgKi8KICAgLyogb3RoZXIgcGFyYW1ldGVycyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIHRlc3QsIGJ1dCBhdCB0aGUgKi8KICAgLyogbW9tZW50LCBJIGRvIG5vdCB3aXNoIHRvIGZpZ3VyZS1vdXQgYWxsIHRoZSAgZm9ybWF0dGluZywgc28gSSB3aWxsICovCiAgIC8qIGp1c3QgcHV0IHRoaXMgY29tbWVudCBoZXJlIHRvIGhlbHAgcmVtaW5kIG1lIHRoYXQgaXQgaXMgc29tZXRoaW5nICovCiAgIC8qIHRoYXQgc2hvdWxkIGJlIGRvbmUgYXQgYSBsYXRlciB0aW1lLiAqLwotICAKKwogICBpZiAodmVyYm9zaXR5ID4gMSkgewogICAgIC8qIFRoZSB1c2VyIHdhbnRlZCB0byBrbm93IGl0IGFsbCwgc28gd2Ugd2lsbCBnaXZlIGl0IHRvIGhpbS4gKi8KICAgICAvKiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5jbHVkZSBhcyBtdWNoIGFzIHdlIGNhbiBmaW5kIGFib3V0ICovCiAgICAgLyogVENQIHN0YXRpc3RpY3MsIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBzZW5kcyBhbmQgcmVjZWl2ZXMgKi8KICAgICAvKiBhbmQgYWxsIHRoYXQgc29ydCBvZiByb3QuLi4gKi8KLSAgICAKKwogICAgIGZwcmludGYod2hlcmUsCiAJICAgIGtzaW5rX2ZtdCk7CiAgIH0KLSAgCisKIH0KIAogDAotdm9pZCAKK3ZvaWQKIHJlY3ZfeHRpX3RjcF9jb25uX3JyKCkKIHsKLSAgCisKICAgY2hhciAgKm1lc3NhZ2U7CiAgIHN0cnVjdAlzb2NrYWRkcl9pbiAgICAgICAgbXlhZGRyX2luLAogICBwZWVyYWRkcl9pbjsKQEAgLTU1NTksMjMgKzU1NTgsMjMgQEAKICAgaW50CXJlcXVlc3RfYnl0ZXNfcmVtYWluaW5nOwogICBpbnQJdGltZWRfb3V0ID0gMDsKICAgZmxvYXQJZWxhcHNlZF90aW1lOwotICAKKwogICBzdHJ1Y3QJeHRpX3RjcF9jb25uX3JyX3JlcXVlc3Rfc3RydWN0CSp4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdDsKICAgc3RydWN0CXh0aV90Y3BfY29ubl9ycl9yZXNwb25zZV9zdHJ1Y3QJKnh0aV90Y3BfY29ubl9ycl9yZXNwb25zZTsKICAgc3RydWN0CXh0aV90Y3BfY29ubl9ycl9yZXN1bHRzX3N0cnVjdAkqeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHM7Ci0gIAotICB4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdCA9IAorCisgIHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0ID0KICAgICAoc3RydWN0IHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0X3N0cnVjdCAqKW5ldHBlcmZfcmVxdWVzdC5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgeHRpX3RjcF9jb25uX3JyX3Jlc3BvbnNlID0gCisgIHh0aV90Y3BfY29ubl9ycl9yZXNwb25zZSA9CiAgICAgKHN0cnVjdCB4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2Vfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHMgPSAKKyAgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHMgPQogICAgIChzdHJ1Y3QgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHNfc3RydWN0ICopbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnRlc3Rfc3BlY2lmaWNfZGF0YTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwibmV0c2VydmVyOiByZWN2X3h0aV90Y3BfY29ubl9ycjogZW50ZXJlZC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKKwogICAvKiBXZSB3YW50IHRvIHNldC11cCB0aGUgbGlzdGVuIHNvY2tldCB3aXRoIGFsbCB0aGUgZGVzaXJlZCAqLwogICAvKiBwYXJhbWV0ZXJzIGFuZCB0aGVuIGxldCB0aGUgaW5pdGlhdG9yIGtub3cgdGhhdCBhbGwgaXMgcmVhZHkuIElmICovCiAgIC8qIHNvY2tldCBzaXplIGRlZmF1bHRzIGFyZSB0byBiZSB1c2VkLCB0aGVuIHRoZSBpbml0aWF0b3Igd2lsbCBoYXZlICovCkBAIC01NTgzLDE5ICs1NTgyLDE5IEBACiAgIC8qIHNlbmQtYmFjayB3aGF0IHRoZXkgYXJlLiBJZiB0aGF0IGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCAqLwogICAvKiB0aGVuIHdlIHNlbmQtYmFjayAtMSdzIGZvciB0aGUgc2l6ZXMuIElmIHRoaW5ncyBnbyB3cm9uZyBmb3IgYW55ICovCiAgIC8qIHJlYXNvbiwgd2Ugd2lsbCBkcm9wIGJhY2sgdGVuIHlhcmRzIGFuZCBwdW50LiAqLwotICAKKwogICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZSB3YW50IHRoZSByZW1vdGUgdG8ga25vdyBhYm91dCBpdC4gSXQgKi8KICAgLyogd291bGQgYmUgYmVzdCBpZiB0aGUgZXJyb3IgdGhhdCB0aGUgcmVtb3RlIHJlcG9ydHMgdG8gdGhlIHVzZXIgaXMgKi8KICAgLyogdGhlIGFjdHVhbCBlcnJvciB3ZSBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gc29tZSBib2d1cyB1bmV4cGVjdGVkICovCiAgIC8qIHJlc3BvbnNlIHR5cGUgbWVzc2FnZS4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdGNwX2Nvbm5fcnI6IHNldHRpbmcgdGhlIHJlc3BvbnNlIHR5cGUuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgbmV0cGVyZl9yZXNwb25zZS5jb250ZW50LnJlc3BvbnNlX3R5cGUgPSBYVElfVENQX0NSUl9SRVNQT05TRTsKLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdGNwX2Nvbm5fcnI6IHRoZSByZXNwb25zZSB0eXBlIGlzIHNldC4uLlxuIik7CiAgICAgZmZsdXNoKHdoZXJlKTsKQEAgLTU2MDcsMTAgKzU2MDYsMTAgQEAKICAgICBwcmludGYoIm1hbGxvYyglZCkgZmFpbGVkIVxuIiwgREFUQUJVRkZFUkxFTik7CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBXZSBub3cgYWx0ZXIgdGhlIG1lc3NhZ2VfcHRyIHZhcmlhYmxlcyB0byBiZSBhdCB0aGUgZGVzaXJlZCAqLwogICAvKiBhbGlnbm1lbnRzIHdpdGggdGhlIGRlc2lyZWQgb2Zmc2V0cy4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfeHRpX3RjcF9jb25uX3JyOiByZXF1ZXN0ZWQgcmVjdiBhbGlnbm1lbnQgb2YgJWQgb2Zmc2V0ICVkXG4iLApAQCAtNTYyNCwyNyArNTYyMywyNyBAQAogICB9CiAKICAgcmVjdl9tZXNzYWdlX3B0ciA9IEFMSUdOX0JVRkZFUihtZXNzYWdlLCB4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+cmVjdl9hbGlnbm1lbnQsIHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZWN2X29mZnNldCk7Ci0gIAorCiAgIHNlbmRfbWVzc2FnZV9wdHIgPSBBTElHTl9CVUZGRVIobWVzc2FnZSwgeHRpX3RjcF9jb25uX3JyX3JlcXVlc3QtPnNlbmRfYWxpZ25tZW50LCB4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+c2VuZF9vZmZzZXQpOwotICAKKwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3BfY29ubl9ycjogcmVjZWl2ZSBhbGlnbm1lbnQgYW5kIG9mZnNldCBzZXQuLi5cbiIpOwogICAgIGZmbHVzaCh3aGVyZSk7CiAgIH0KLSAgCisKICAgLyogTGV0J3MgY2xlYXItb3V0IG91ciBzb2NrYWRkciBmb3IgdGhlIHNha2Ugb2YgY2xlYW5saW5lcy4gVGhlbiB3ZSAqLwogICAvKiBjYW4gcHV0IGluIE9VUiB2YWx1ZXMgIS0pIEF0IHNvbWUgcG9pbnQsIHdlIG1heSB3YW50IHRvIG5haWwgdGhpcyAqLwogICAvKiBzb2NrZXQgdG8gYSBwYXJ0aWN1bGFyIG5ldHdvcmstbGV2ZWwgYWRkcmVzcywgYnV0IGZvciBub3csICovCiAgIC8qIElOQUREUl9BTlkgc2hvdWxkIGJlIGp1c3QgZmluZS4gKi8KLSAgCisKICAgYnplcm8oKGNoYXIgKikmbXlhZGRyX2luLAogCXNpemVvZihteWFkZHJfaW4pKTsKICAgbXlhZGRyX2luLnNpbl9mYW1pbHkgICAgICA9IEFGX0lORVQ7CiAgIG15YWRkcl9pbi5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwogICBteWFkZHJfaW4uc2luX3BvcnQgICAgICAgID0gMDsKLSAgCisKICAgLyogR3JhYiBhIHNvY2tldCB0byBsaXN0ZW4gb24sIGFuZCB0aGVuIGxpc3RlbiBvbiBpdC4gKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwicmVjdl94dGlfdGNwX2Nvbm5fcnI6IGdyYWJiaW5nIGEgc29ja2V0Li4uXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwpAQCAtNTY1OSw5ICs1NjU4LDkgQEAKICAgbG9jX25vZGVsYXkgPSB4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+bm9fZGVsYXk7CiAgIGxvY19yY3Zhdm9pZCA9IHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5zb19yY3Zhdm9pZDsKICAgbG9jX3NuZGF2b2lkID0geHRpX3RjcF9jb25uX3JyX3JlcXVlc3QtPnNvX3NuZGF2b2lkOwotICAKKwogICBzX2xpc3RlbiA9IGNyZWF0ZV94dGlfZW5kcG9pbnQobG9jX3h0aV9kZXZpY2UpOwotICAKKwogICBpZiAoc19saXN0ZW4gPT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IGVycm5vOwogICAgIHNlbmRfcmVzcG9uc2UoKTsKQEAgLTU2NzcsNyArNTY3Niw3IEBACiAgIC8qIG5haWwgdGhpcyBzb2NrZXQgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIGluIGEgbXVsdGktaG9tZWQsICovCiAgIC8qIG11bHRpLWNvbm5lY3Rpb24gc2l0dWF0aW9uLCBidXQgZm9yIG5vdywgd2UnbGwgaWdub3JlIHRoZSBpc3N1ZSAqLwogICAvKiBhbmQgY29uY2VudHJhdGUgb24gc2luZ2xlIGNvbm5lY3Rpb24gdGVzdGluZy4gKi8KLSAgCisKICAgaWYgKGJpbmQoc19saXN0ZW4sCiAJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZteWFkZHJfaW4sCiAJICAgc2l6ZW9mKG15YWRkcl9pbikpID09IFNPQ0tFVF9FUlJPUikgewpAQCAtNTcwMiw3ICs1NzAxLDcgQEAKICAgICB9CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBub3cgZ2V0IHRoZSBwb3J0IG51bWJlciBhc3NpZ25lZCBieSB0aGUgc3lzdGVtICAqLwogICBhZGRybGVuID0gc2l6ZW9mKG15YWRkcl9pbik7CiAgIGlmIChnZXRzb2NrbmFtZShzX2xpc3RlbiwKQEAgLTU3MTcsMTEgKzU3MTYsMTEgQEAKICAgICB9CiAgICAgZXhpdCgxKTsKICAgfQotICAKKwogICAvKiBOb3cgbXlhZGRyX2luIGNvbnRhaW5zIHRoZSBwb3J0IGFuZCB0aGUgaW50ZXJuZXQgYWRkcmVzcyB0aGlzIGlzICovCiAgIC8qIHJldHVybmVkIHRvIHRoZSBzZW5kZXIgYWxzbyBpbXBsaWNpdGx5IHRlbGxpbmcgdGhlIHNlbmRlciB0aGF0IHRoZSAqLwogICAvKiBzb2NrZXQgYnVmZmVyIHNpemluZyBoYXMgYmVlbiBkb25lLiAqLwotICAKKwogICB4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPmRhdGFfcG9ydF9udW1iZXIgPSAoaW50KSBudG9ocyhteWFkZHJfaW4uc2luX3BvcnQpOwogICBpZiAoZGVidWcpIHsKICAgICBmcHJpbnRmKHdoZXJlLCJ0ZWxsaW5nIHRoZSByZW1vdGUgdG8gY2FsbCBtZSBhdCAlZFxuIiwKQEAgLTU3MjksMjIgKzU3MjgsMjIgQEAKICAgICBmZmx1c2god2hlcmUpOwogICB9CiAgIG5ldHBlcmZfcmVzcG9uc2UuY29udGVudC5zZXJ2X2Vycm5vICAgPSAwOwotICAKKwogICAvKiBCdXQgd2FpdCwgdGhlcmUncyBtb3JlLiBJZiB0aGUgaW5pdGlhdG9yIHdhbnRlZCBjcHUgbWVhc3VyZW1lbnRzLCAqLwogICAvKiB0aGVuIHdlIG11c3QgY2FsbCB0aGUgY2FsaWJyYXRlIHJvdXRpbmUsIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBtYXggKi8KICAgLyogcmF0ZSBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIElmIHRoZSBDUFUgd2FzIG5vdCB0byBiZSBtZWFzdXJlZCwgb3IgKi8KICAgLyogc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgY2FsaWJyYXRpb24sIHdlIHdpbGwgcmV0dXJuIGEgMC4wIHRvICovCiAgIC8qIHRoZSBpbml0aWF0b3IuICovCi0gIAorCiAgIHh0aV90Y3BfY29ubl9ycl9yZXNwb25zZS0+Y3B1X3JhdGUgPSAwLjA7IAkvKiBhc3N1bWUgbm8gY3B1ICovCiAgIGlmICh4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPm1lYXN1cmVfY3B1ID0gMTsKLSAgICB4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPmNwdV9yYXRlID0gCisgICAgeHRpX3RjcF9jb25uX3JyX3Jlc3BvbnNlLT5jcHVfcmF0ZSA9CiAgICAgICBjYWxpYnJhdGVfbG9jYWxfY3B1KHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5jcHVfcmF0ZSk7CiAgIH0KLSAgCiAKLSAgCisKKwogICAvKiBiZWZvcmUgd2Ugc2VuZCB0aGUgcmVzcG9uc2UgYmFjayB0byB0aGUgaW5pdGlhdG9yLCBwdWxsIHNvbWUgb2YgKi8KICAgLyogdGhlIHNvY2tldCBwYXJtcyBmcm9tIHRoZSBnbG9iYWxzICovCiAgIHh0aV90Y3BfY29ubl9ycl9yZXNwb25zZS0+c2VuZF9idWZfc2l6ZSA9IGxzc19zaXplOwpAQCAtNTc1NCwxNyArNTc1MywxNyBAQAogICB4dGlfdGNwX2Nvbm5fcnJfcmVzcG9uc2UtPnNvX3NuZGF2b2lkID0gbG9jX3NuZGF2b2lkOwogCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKICAgYWRkcmxlbiA9IHNpemVvZihwZWVyYWRkcl9pbik7Ci0gIAorCiAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgcmVjZWl2aW5nIGRhdGEgb24gdGhlIGNvbm5lY3Rpb24uIFdlIHdpbGwgKi8KICAgLyogZmlyc3QgZ3JhYiB0aGUgYXByb3ByaWF0ZSBjb3VudGVycyBhbmQgdGhlbiBzdGFydCBncmFiYmluZy4gKi8KLSAgCisKICAgY3B1X3N0YXJ0KHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5tZWFzdXJlX2NwdSk7Ci0gIAorCiAgIC8qIFRoZSBsb29wIHdpbGwgZXhpdCB3aGVuIHRoZSBzZW5kZXIgZG9lcyBhIHNodXRkb3duLCB3aGljaCB3aWxsICovCiAgIC8qIHJldHVybiBhIGxlbmd0aCBvZiB6ZXJvICAgKi8KLSAgCisKICAgaWYgKHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCA+IDApIHsKICAgICB0aW1lc191cCA9IDA7CiAgICAgdHJhbnNfcmVtYWluaW5nID0gMDsKQEAgLTU3NzQsNyArNTc3Myw3IEBACiAgICAgdGltZXNfdXAgPSAxOwogICAgIHRyYW5zX3JlbWFpbmluZyA9IHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT50ZXN0X2xlbmd0aCAqIC0xOwogICB9Ci0gIAorCiAgIHRyYW5zX3JlY2VpdmVkID0gMDsKIAogICB3aGlsZSAoKCF0aW1lc191cCkgfHwgKHRyYW5zX3JlbWFpbmluZyA+IDApKSB7CkBAIC01NzkxLDE4ICs1NzkwLDE4IEBACiAgICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3BfY29ubl9ycjogYWNjZXB0OiBlcnJubyA9ICVkXG4iLGVycm5vKTsKICAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgICBjbG9zZShzX2xpc3Rlbik7Ci0gICAgICAKKwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gIAorCiAgICAgaWYgKGRlYnVnKSB7CiAgICAgICBmcHJpbnRmKHdoZXJlLCJyZWN2X3h0aV90Y3BfY29ubl9ycjogYWNjZXB0ZWQgZGF0YSBjb25uZWN0aW9uLlxuIik7CiAgICAgICBmZmx1c2god2hlcmUpOwogICAgIH0KLSAgCisKICAgICB0ZW1wX21lc3NhZ2VfcHRyCT0gcmVjdl9tZXNzYWdlX3B0cjsKICAgICByZXF1ZXN0X2J5dGVzX3JlbWFpbmluZwk9IHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemU7Ci0gICAgCisKICAgICAvKiByZWNlaXZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIG90aGVyIHNpZGUgKi8KICAgICB3aGlsZShyZXF1ZXN0X2J5dGVzX3JlbWFpbmluZyA+IDApIHsKICAgICAgIGlmKChyZXF1ZXN0X2J5dGVzX3JlY3ZkPXJlY3Yoc19kYXRhLApAQCAtNTgyMywxNSArNTgyMiwxNSBAQAogCXRlbXBfbWVzc2FnZV9wdHIgICs9IHJlcXVlc3RfYnl0ZXNfcmVjdmQ7CiAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKHRpbWVkX291dCkgewogICAgICAgLyogd2UgaGl0IHRoZSBlbmQgb2YgdGhlIHRlc3QgYmFzZWQgb24gdGltZSAtIGxldHMgKi8KICAgICAgIC8qIGJhaWwgb3V0IG9mIGhlcmUgbm93Li4uICovCiAgICAgICBmcHJpbnRmKHdoZXJlLCJ5bzVcbiIpOwotICAgICAgZmZsdXNoKHdoZXJlKTsJCQkJCQkKKyAgICAgIGZmbHVzaCh3aGVyZSk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisKICAgICAvKiBOb3csIHNlbmQgdGhlIHJlc3BvbnNlIHRvIHRoZSByZW1vdGUgKi8KICAgICBpZigoYnl0ZXNfc2VudD1zZW5kKHNfZGF0YSwKIAkJCXNlbmRfbWVzc2FnZV9wdHIsCkBAIC01ODQxLDE5ICs1ODQwLDE5IEBACiAJLyogdGhlIHRlc3QgdGltZXIgaGFzIHBvcHBlZCAqLwogCXRpbWVkX291dCA9IDE7CiAJZnByaW50Zih3aGVyZSwieW82XG4iKTsKLQlmZmx1c2god2hlcmUpOwkJCQkJCQorCWZmbHVzaCh3aGVyZSk7CiAJYnJlYWs7CiAgICAgICB9CiAgICAgICBuZXRwZXJmX3Jlc3BvbnNlLmNvbnRlbnQuc2Vydl9lcnJubyA9IDk5OwogICAgICAgc2VuZF9yZXNwb25zZSgpOwogICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgCisKICAgICB0cmFuc19yZWNlaXZlZCsrOwogICAgIGlmICh0cmFuc19yZW1haW5pbmcpIHsKICAgICAgIHRyYW5zX3JlbWFpbmluZy0tOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkZWJ1ZykgewogICAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgICAicmVjdl94dGlfdGNwX2Nvbm5fcnI6IFRyYW5zYWN0aW9uICVkIGNvbXBsZXRlXG4iLApAQCAtNTg2NSwxMyArNTg2NCwxMyBAQAogICAgIGNsb3NlKHNfZGF0YSk7CiAKICAgfQotICAKLSAgCisKKwogICAvKiBUaGUgbG9vcCBub3cgZXhpdHMgZHVlIHRvIHRpbWVvdXQgb3IgdHJhbnNhY3Rpb24gY291bnQgYmVpbmcgKi8KICAgLyogcmVhY2hlZCAqLwotICAKKwogICBjcHVfc3RvcCh4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUsJmVsYXBzZWRfdGltZSk7Ci0gIAorCiAgIGlmICh0aW1lZF9vdXQpIHsKICAgICAvKiB3ZSBlbmRlZCB0aGUgdGVzdCBieSB0aW1lLCB3aGljaCB3YXMgYXQgbGVhc3QgMiBzZWNvbmRzICovCiAgICAgLyogbG9uZ2VyIHRoYW4gd2Ugd2FudGVkIHRvIHJ1bi4gc28sIHdlIHdhbnQgdG8gc3VidHJhY3QgKi8KQEAgLTU4NzksMzEgKzU4NzgsMzEgQEAKICAgICBlbGFwc2VkX3RpbWUgLT0gUEFEX1RJTUU7CiAgIH0KICAgLyogc2VuZCB0aGUgcmVzdWx0cyB0byB0aGUgc2VuZGVyCQkJKi8KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfeHRpX3RjcF9jb25uX3JyOiBnb3QgJWQgdHJhbnNhY3Rpb25zXG4iLAogCSAgICB0cmFuc19yZWNlaXZlZCk7CiAgICAgZmZsdXNoKHdoZXJlKTsKICAgfQotICAKLSAgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gKHRyYW5zX3JlY2VpdmVkICogCi0JCQkJCSAgICh4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+cmVxdWVzdF9zaXplICsgCisKKyAgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHMtPmJ5dGVzX3JlY2VpdmVkCT0gKHRyYW5zX3JlY2VpdmVkICoKKwkJCQkJICAgKHh0aV90Y3BfY29ubl9ycl9yZXF1ZXN0LT5yZXF1ZXN0X3NpemUgKwogCQkJCQkgICAgeHRpX3RjcF9jb25uX3JyX3JlcXVlc3QtPnJlc3BvbnNlX3NpemUpKTsKICAgeHRpX3RjcF9jb25uX3JyX3Jlc3VsdHMtPnRyYW5zX3JlY2VpdmVkCT0gdHJhbnNfcmVjZWl2ZWQ7CiAgIHh0aV90Y3BfY29ubl9ycl9yZXN1bHRzLT5lbGFwc2VkX3RpbWUJPSBlbGFwc2VkX3RpbWU7CiAgIGlmICh4dGlfdGNwX2Nvbm5fcnJfcmVxdWVzdC0+bWVhc3VyZV9jcHUpIHsKICAgICB4dGlfdGNwX2Nvbm5fcnJfcmVzdWx0cy0+Y3B1X3V0aWwJPSBjYWxjX2NwdV91dGlsKGVsYXBzZWRfdGltZSk7CiAgIH0KLSAgCisKICAgaWYgKGRlYnVnKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgInJlY3ZfeHRpX3RjcF9jb25uX3JyOiB0ZXN0IGNvbXBsZXRlLCBzZW5kaW5nIHJlc3VsdHMuXG4iKTsKICAgICBmZmx1c2god2hlcmUpOwogICB9Ci0gIAorCiAgIHNlbmRfcmVzcG9uc2UoKTsKLSAgCisKIH0KIAwKIHZvaWQKQEAgLTU5MjEsMTMgKzU5MjAsMTMgQEAKICNkZWZpbmUgWFRJX0FSR1MgIkRobTpNOnI6czpTOlZ3Olc6WDoiCiAgIGV4dGVybiBpbnQJb3B0aW5kLCBvcHRlcnJzOyAgLyogaW5kZXggb2YgZmlyc3QgdW51c2VkIGFyZyAJKi8KICAgZXh0ZXJuIGNoYXIJKm9wdGFyZzsJICAvKiBwb2ludGVyIHRvIG9wdGlvbiBzdHJpbmcJKi8KLSAgCisKICAgaW50CQljOwotICAKLSAgY2hhcgkKKworICBjaGFyCiAgICAgYXJnMVtCVUZTSVpdLCAgLyogYXJndW1lbnQgaG9sZGVycwkJKi8KICAgICBhcmcyW0JVRlNJWl07Ci0gIAorCiAgIGlmIChub19jb250cm9sKSB7CiAgICAgZnByaW50Zih3aGVyZSwKIAkgICAgIlRoZSBYVEkgdGVzdHMgZG8gbm90IGtub3cgaG93IHRvIHJ1biB3aXRoIG5vIGNvbnRyb2wgY29ubmVjdGlvblxuIik7CkBAIC01OTM5LDEwICs1OTM4LDEwIEBACiAgIC8qIHRoZSBmaXJzdCB3aWxsIHNldCBib3RoIHRvIHRoYXQgdmFsdWUuIFNwZWNpZnlpbmcgb25seSB0aGUgKi8KICAgLyogc2Vjb25kIHdpbGwgbGVhdmUgdGhlIGZpcnN0IHVudG91Y2hlZC4gVG8gY2hhbmdlIG9ubHkgdGhlICovCiAgIC8qIGZpcnN0LCB1c2UgdGhlIGZvcm0gImZpcnN0LCIgKHNlZSB0aGUgcm91dGluZSBicmVha19hcmdzLi4gKi8KLSAgCisKICAgd2hpbGUgKChjPSBnZXRvcHQoYXJnYywgYXJndiwgWFRJX0FSR1MpKSAhPSBFT0YpIHsKICAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICc/JzoJCisgICAgY2FzZSAnPyc6CiAgICAgY2FzZSAnaCc6CiAgICAgICBwcmludF94dGlfdXNhZ2UoKTsKICAgICAgIGV4aXQoMSk7CkBAIC01OTcyLDcgKzU5NzEsNyBAQAogICAgICAgYnJlYWtfYXJncyhvcHRhcmcsYXJnMSxhcmcyKTsKICAgICAgIGlmIChhcmcxWzBdKQogCXJlcV9zaXplID0gY29udmVydChhcmcxKTsKLSAgICAgIGlmIChhcmcyWzBdKQkKKyAgICAgIGlmIChhcmcyWzBdKQogCXJzcF9zaXplID0gY29udmVydChhcmcyKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ20nOgpkaWZmIC0tZ2l0IGEvbmV0dGVzdF94dGkuaCBiL3NyYy9uZXR0ZXN0X3h0aS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBuZXR0ZXN0X3h0aS5oCnJlbmFtZSB0byBzcmMvbmV0dGVzdF94dGkuaAo=