PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHRlbXBsYXRlLnBocAoJIwoJIyBBdXRob3I6IAkJRGVuaXMgUm95CgkjIERhdGU6CQkJMjAwNS0wNi0xNgoJIwoJIyBEZXNjcmlwdGlvbjogVHlwZSB5b3VyIHBhZ2UgY29tbWVudHMgaGVyZSAtIHRoZXNlIGFyZSBub3Qgc2VudCB0byB0aGUgYnJvd3NlcgoJIwoJIwoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCQoJIwoJIyBCZWdpbjogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncy4gIENoYW5nZSB0aGVzZS4gCgkkcGFnZVRpdGxlIAkJPSAiQUpEVCBUYXNrcyI7CgkkcGFnZUtleXdvcmRzCT0gIkFzcGVjdEosIEFKRFQsIEFzcGVjdCBPcmllbnRlZCBTb2Z0d2FyZSBEZXZlbG9wbWVudCwgRWNsaXBzZSwgVGFza3MiOwoJJHBhZ2VBdXRob3IJCT0gIk1hdHQgQ2hhcG1hbiI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKSwgbGV2ZWwgKDEsIDIgb3IgMykKCSMgJE5hdi0+YWRkTmF2U2VwYXJhdG9yKCJNeSBQYWdlIExpbmtzIiwgCSJkb3dubG9hZHMucGhwIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIiwgMyk7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIiwgMyk7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMKCQkKCSRyaWdodGNvbHVtbiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJyaWdodGNvbHVtbi5odG1sIik7CgkJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCgo8ZGl2IGlkPSJtYWluY29udGVudCI+Cgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgoJCgk8aDE+VGFza3M8L2gxPgoKCQk8cD5UaGlzIHBhZ2UgY29udGFpbnMgYSBsaXN0IG9mIEFKRFQgZmVhdHVyZSBkZXZlbG9wbWVudCB0YXNrcyBwZW5kaW5nIG9yCgkJcmVjZW50bHkgY29tcGxldGVkLiBBbnlvbmUgaXMgd2VsY29tZSB0byBjb250cmlidXRlIHRvIHRoZSBwcm9qZWN0LCBlaXRoZXIKCQlieSBwaWNraW5nIG9uZSBvZiB0aGVzZSB0YXNrcyBhbmQgd29ya2luZyBvbiBpdCwgb3IgYnkgYWRkaW5nIG5ldwoJCWZlYXR1cmVzLCBlbmhhbmNlbWVudHMgYW5kIGJ1ZyBmaXhlcyBub3Qgb24gdGhpcyBsaXN0LiBJZiB5b3Ugd291bGQKCQlsaWtlIHRvIHNlZSBhIG5ldyBpdGVtIG9uIHRoaXMgbGlzdCBwbGVhc2UgbGV0IHVzIGtub3cgYnkKCQlyYWlzaW5nIGFuIGVuaGFuY2VtZW50IHJlcXVlc3QgaW4gYnVnemlsbGEuIFdlIHVzZSBidWd6aWxsYSB0byB0cmFjawoJCWFsbCBhY3RpdmUgJiBvdXRzdGFuZGluZyB3b3JrIGl0ZW1zIGZvciBBSkRULCBib3RoIGJ1Z3MgYW5kIGZlYXR1cmVzCgkJKHJlY29yZGVkIGFzIGVuaGFuY2VtZW50cyBpbiBidWd6aWxsYSkuIElmIHlvdSB3YW50IHRvIHdvcmsgb24gYSB0YXNrLAoJCXBsZWFzZSBsZXQgb25lIG9mIHRoZSBjb21taXR0ZXJzIGtub3cgKHZpYSB0aGUgYXNwZWN0ai1kZXYgbGlzdCBmb3IKCQlleGFtcGxlKSBzbyB0aGF0IHdlIGRvbpJ0IGR1cGxpY2F0ZSBlZmZvcnQuIElmIHlvdSBoYXZlIGEgZ3JlYXQgaWRlYQoJCWZvciBhbiBBSkRUIGZlYXR1cmUgb3IgZW5oYW5jZW1lbnQgdGhhdJJzIG5vdCBvbiB0aGUgbGlzdCwgbGV0IHVzIGtub3cKCQlhbmQgd2WSbGwgYWRkIGl0ITwvcD4KCQkKCTxkaXYgY2xhc3M9ImhvbWVpdGVtM2NvbCI+CgkJPGgzPlRhc2tzPC9oMz4KCQkJPGRpdiBhbGlnbj0iY2VudGVyIj4KCQkJPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjIiPgo8dHI+Cjx0aD5EZXNjcmlwdGlvbiBvZiB0YXNrPC90aD4KPHRoPlN0YXR1czwvdGg+Cjx0aD5Pd25lcjwvdGg+Cjx0aD5SZWxlYXNlPC90aD4KPC90cj4KCjx0cj4KPHRkPjxoND5Bc3BlY3RKIFNlYXJjaDwvaDQ+ClN1cHBvcnQgc2VhcmNoaW5nIGZvciBBc3BlY3RKIGNvbnN0cnVjdHMgd2l0aGluIHRoZSBKRFQgc2VhcmNoIGRpYWxvZy4KPC90ZD4KPHRkPldpbGwgYmUgaW1wbGVtZW50ZWQgdGhyb3VnaCBKRFQtd2VhdmluZyAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTcxMDczIj5idWcmbmJzcDs3MTA3MzwvYT4pPC90ZD4KPHRkPkFuZHJldyBFaXNlbmJlcmc8L3RkPgo8dGQ+MS42LjE8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PkNvbnRlbnQgQXNzaXN0IChDdHJsICsgc3BhY2UpPC9oND4KQ29udGVudCBhc3Npc3Qgbm93IHdvcmtzIHdlbGwgaW4gbWFueSBjYXNlcy4gVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBnZXR0aW5nCkpEVCB0byBwcm92aWRlIGNvbXBsZXRpb25zIGZvciBtb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgYnVmZmVyLiBXZSdyZSBjbG9zZQp0byB0aGUgbGltaXRzIG9mIHRoaXMgYXBwcm9hY2ggLSBmb3IgZnVsbCBhc3BlY3QgYXdhcmUgY29kZSBhc3Npc3QsIGUuZy4KY29tcGxldGlvbnMgb24gcG9pbnRjdXQgbmFtZXMgYW5kIHBhcmFtZXRlcnMgZm9sbG93aW5nIHRoZSBiZWdpbm5pbmcgb2YgYW4KYWR2aWNlIHN0YXRlbWVudCwgd2UgbmVlZCBvdXIgb3duIGNvbXBsZXRpb24gcHJvY2Vzc29yLgo8L3RkPgo8dGQ+Tm90IHlldCBhc3NpZ25lZDwvdGQ+Cjx0ZD5Ob3QgeWV0IGFzc2lnbmVkPC90ZD4KPHRkPk5vdCB5ZXQgcGxhbm5lZDwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD48aDQ+VG9vbHRpcCBkZXNjcmlwdGlvbnMgKEYyKTwvaDQ+CkZvciBBc3BlY3RKIGtleXdvcmRzIHNob3cgYW4gZXhwYW5kZWQgdmVyc2lvbiBvZiB0aGUgQXNwZWN0SiBRdWljawpSZWZlcmVuY2Ugc3VtbWFyeSBmb3IgdGhhdCBjb25zdHJ1Y3QuIEZvciBBc3BlY3RKIGRlY2xhcmF0aW9ucywgc2hvdyB0aGUKamF2YWRvYyAoYWpkb2MpIGNvbW1lbnQgYW5kIHNpZ25hdHVyZSBmb3IgdGhvc2UgZGVjbGFyYXRpb25zLgo8L3RkPgo8dGQ+Tm90IHlldCBhc3NpZ25lZDwvdGQ+Cjx0ZD5Ob3QgeWV0IGFzc2lnbmVkPC90ZD4KPHRkPk5vdCB5ZXQgcGxhbm5lZDwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD48aDQ+UGFyYW1ldGVyIEhpbnRzIChDdHJsICsgc2hpZnQgKyBzcGFjZSk8L2g0PgpGb3IgcG9pbnRjdXRzLCBzaG93cyB0aGUgcG9zc2libGUgbWF0Y2hpbmcgcG9pbnRzIJYgZS5nLiBjYWxsKFt2aXNpYmlsaXR5XQpyZXR1cm5fdHlwZSBUeXBlUGF0dGVybi5NZXRob2ROYW1lUGF0dGVybiggQXJnc1BhdHRlcm4gKS4KVG8gYmUgaW52ZXN0aWdhdGVkIHRvIHNlZSB3aGV0aGVyIHRoaXMgd291bGQgYmUgdXNlZnVsIG9yIG5vdC4KPC90ZD4KPHRkPk5vdCB5ZXQgYXNzaWduZWQ8L3RkPgo8dGQ+Tm90IHlldCBhc3NpZ25lZDwvdGQ+Cjx0ZD5Ob3QgeWV0IHBsYW5uZWQ8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PkphdmEgUmVmYWN0b3JpbmcgU3VwcG9ydDwvaDQ+CkVuc3VyZSB0aGF0IGV4aXN0aW5nCnJlZmFjdG9yaW5ncyBpbiBFY2xpcHNlIHdvcmsgY29ycmVjdGx5IGluIHRoZSBwcmVzZW5jZSBvZiBhc3BlY3RzLgo8L3RkPgo8dGQ+U3RhcnRlZCB3aXRoIFJlbmFtZSBwYXJ0aWNpcGF0aW9uICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTU4OTU0Ij5idWcmbmJzcDsxNTg5NTQ8L2E+KTwvdGQ+Cjx0ZD5NYXR0IENoYXBtYW48L3RkPgo8dGQ+MS40LjEgLyAxLjU8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PkFzcGVjdEogUmVmYWN0b3JpbmcgU3VwcG9ydDwvaDQ+CkFkZCBhc3BlY3Qtc3BlY2lmaWMgcmVmYWN0b3JpbmdzLgo8L3RkPgo8dGQ+Tm90IHlldCBhc3NpZ25lZDwvdGQ+Cjx0ZD5Ob3QgeWV0IGFzc2lnbmVkPC90ZD4KPHRkPk5vdCB5ZXQgcGxhbm5lZDwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD48aDQ+Q29tcGxldGUgZGVidWdnaW5nIHN1cHBvcnQ8L2g0PgpUaGUgcmVtYWluaW5nIHdvcmsgaW4gdGhpcyBhcmVhIGlzIHRvIHRpZHkgdXAgdGhlIHN0YWNrLCB0byBhdm9pZApleHBvc2luZyBpbnRlcm5hbCBjb21waWxlciBnZW5lcmF0ZWQgbmFtZXMuCjwvdGQ+Cjx0ZD5Ob3QgeWV0IGFzc2lnbmVkPC90ZD4KPHRkPk5vdCB5ZXQgYXNzaWduZWQ8L3RkPgo8dGQ+Tm90IHlldCBwbGFubmVkPC90ZD4KPC90cj4KCjx0cj4KPHRkPjxoND5Qb2ludGN1dCBNYXRjaGVyPC9oND4KVGhpcyB2aWV3IHdvdWxkIGFsbG93IHlvdSB0byBlbnRlciBhIChzdGF0aWM/KSBwb2ludGN1dCBleHByZXNzaW9uIJYgZWl0aGVyCmJ5IGRpcmVjdGx5IHR5cGluZyBvciBieSB1c2luZyB0aGUgcG9pbnRjdXQgd2l6YXJkIGFuZCBzZWUgdGhlIG1hdGNoZXMgaW4KYSBzZWFyY2ggcmVzdWx0cyBsaXN0IGFuZCBhbHNvIGluIGEgdmlzdWFsaXNlciBsaWtlIHZpZXcuIE9wdGlvbmFsbHkgbWF5CnN1cHBvcnQgbmFtaW5nIGFuZCBzYXZpbmcgb2YgcXVlcmllcy4KPC90ZD4KPHRkPkluIHByb2dyZXNzPC90ZD4KPHRkPkp1bGllJm5ic3A7V2F0ZXJob3VzZSwgTWlrJm5ic3A7S2Vyc3RlbjwvdGQ+Cjx0ZD5Ob3QgeWV0IHBsYW5uZWQ8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PlBvaW50Y3V0IFdpemFyZDwvaDQ+ClRoZSBwb2ludGN1dCB3aXphcmQgZ3VpZGVzIHlvdSBzdGVwIGJ5IHN0ZXAgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZwphIHBvaW50Y3V0IHRoYXQgZG9lcyB3aGF0IHlvdSB3YW50LiBJdCBlbmNvdXJhZ2VzIGdvb2Qgc3R5bGUsIHRlYWNoZXMgYW4gQU8Kd2F5IG9mIHRoaW5raW5nIGFib3V0IHBvaW50Y3V0cywgYW5kIGhhcyBrbm93bGVkZ2Ugb2YgY29tbW9uIGlkaW9tcy4KPC90ZD4KPHRkPk5vdCB5ZXQgYXNzaWduZWQ8L3RkPgo8dGQ+Tm90IHlldCBhc3NpZ25lZDwvdGQ+Cjx0ZD5Ob3QgeWV0IHBsYW5uZWQ8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PlBvaW50Y3V0IFJlYWRlcjwvaDQ+ClRoaXMgaXMgYSBzb3BoaXN0aWNhdGVkIGZvcm0gb2YgdG9vbHRpcCBmb3IgYSBwb2ludGN1dCBkZWNsYXJhdGlvbgp3aGljaCCTcmVhZHOUIHRoZSBwb2ludGN1dCBpbiBwbGFpbiBFbmdsaXNoLgo8L3RkPgo8dGQ+Tm90IHlldCBhc3NpZ25lZDwvdGQ+Cjx0ZD5Ob3QgeWV0IGFzc2lnbmVkPC90ZD4KPHRkPk5vdCB5ZXQgcGxhbm5lZDwvdGQ+CjwvdHI+CgoJCQk8L3RhYmxlPgoJCQk8YnI+PC9hPjwvZGl2PgoJPC9kaXY+CgoKCgoKCTxkaXYgY2xhc3M9ImhvbWVpdGVtM2NvbCI+CgkJPGgzPlJlY2VudGx5IENvbXBsZXRlZCBUYXNrczwvaDM+CgkJCTxkaXYgYWxpZ249ImNlbnRlciI+CgkJCTx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIyIj4KPHRyPgo8dGg+RGVzY3JpcHRpb24gb2YgdGFzazwvdGg+Cjx0aD5TdGF0dXM8L3RoPgo8dGg+T3duZXI8L3RoPgo8dGg+UmVsZWFzZTwvdGg+CjwvdHI+Cgo8dHI+Cjx0ZD48aDQ+TGF1bmNoIHN1cHBvcnQgZm9yIExvYWQgVGltZSBXZWF2aW5nPC9oND4KV2Ugbm93IGhhdmUgQXNwZWN0SiBydW4gY29uZmlndXJhdGlvbiBzdXBwb3J0LiBXZSBuZWVkIHRvIGRldGVybWluZQp3aGF0IHRvIGFkZCB0byB0aGlzIHRvIHN1cHBvcnQgbG9hZCB0aW1lIHdlYXZpbmcuCjwvdGQ+Cjx0ZD5Db21wbGV0ZWQgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTA2NiI+YnVnJm5ic3A7NzEwNjY8L2E+KTwvdGQ+Cjx0ZD5TaWFuIEphbnVhcnk8L3RkPgo8dGQ+MS4yLjE8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PkNyb3NzIFJlZmVyZW5jZSBWaWV3PC9oND4KTmV3IHZpZXcgd2hpY2ggc2hvd3MgdGhlIGNyb3NzY3V0dGluZyByZWxhdGlvbnNoaXBzIG9mIHRoZSBjdXJyZW50IGl0ZW0KPC90ZD4KPHRkPkNvbXBsZXRlZDwvdGQ+Cjx0ZD5IZWxlbiBIYXdraW5zPC90ZD4KPHRkPjEuMjwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD48aDQ+U3RvcmUgcHJvamVjdCBvcHRpb25zPC9oND4KU3RvcmUgQXNwZWN0SiBwcm9qZWN0IG9wdGlvbnMgaW4gYSB2aXNpYmxlIGZpbGUsIHdoaWNoIGNhbiB0aGVuIGJlIGNoZWNrZWQKaW4uIFRoaXMgd291bGQgaW5jbHVkZSBpbmphciBhbmQgYXNwZWN0cGF0aCBzZXR0aW5ncyBldGMuIEpEVCBoYXMgYWRkZWQgYW4KbWVjaGFuaXNtIGZvciB0aGlzIGluIEVjbGlwc2UgMy4xLgo8L3RkPgo8dGQ+Q29tcGxldGVkPC90ZD4KPHRkPk1hdHQgQ2hhcG1hbjwvdGQ+Cjx0ZD4xLjI8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0Pk91dGxpbmUgdmlldzwvaDQ+ClRoZSBvdXRsaW5lIHZpZXcgbmVlZHMgdG8gdXNlIHRoZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgZWFnZXIgcGFyc2VyLCBsaWtlIHRoZQpwYWNrYWdlIGV4cGxvcmVyLgo8L3RkPgo8dGQ+Q29tcGxldGVkPC90ZD4KPHRkPk1hdHQgQ2hhcG1hbjwvdGQ+Cjx0ZD4xLjI8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PkNyb3NzY3V0dGluZyBDaGFuZ2VzIFZpZXc8L2g0PgpUaGlzIHZpZXcgdXBkYXRlIHdvdWxkIHVwZGF0ZSBhZnRlciBhIGJ1aWxkIHdpdGggZGV0YWlscyBvZiBhbnkgbmV3CmNyb3NzY3V0dGluZyByZWxhdGlvbnNoaXBzLCBhcyB3ZWxsIGFzIGFueSByZWxhdGlvbnNoaXBzIHdoaWNoIG5vCmxvbmdlciBleGlzaXQgZS5nLiBtZXRob2QgWFggd2FzIHByZXZpb3VzbHkgYWR2aXNlZCBidXQgaXNuJ3QgYW55Cm1vcmUuIFRoaXMgY291bGQgYmUgdXNlZnVsIHdoZW4gcmVmYWN0b3JpbmcuCjwvdGQ+Cjx0ZD5Db21wbGV0ZWQgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD05MDQ5MCI+YnVnJm5ic3A7OTA0OTA8L2E+KTwvdGQ+Cjx0ZD5NYXR0IENoYXBtYW48L3RkPgo8dGQ+MS4yLjE8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PlN5bW1ldHJpYyBhZHZpc2VzIC8gYWR2aXNlZCBieSBtYXJrZXJzPC9oND4KQWRkIGVkaXRvciBtYXJrZXJzIGxpbmtpbmcgYWR2aWNlIHRvIHRoZSBwbGFjZXMgYmVpbmcgYWR2aXNlZC4KPC90ZD4KPHRkPkNvbXBsZXRlZCAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTc4OTYyIj5idWcmbmJzcDs3ODk2MjwvYT4pPC90ZD4KPHRkPk1hdHQgQ2hhcG1hbjwvdGQ+Cjx0ZD4xLjI8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+PGg0PkluY3JlbWVudGFsIENvbXBpbGF0aW9uPC9oND4KTWFrZSBpbmNyZW1lbnRhbCBjb21waWxhdGlvbiB0aGUgZGVmYXVsdCBtb2RlLiBJdCBpcyBjdXJyZW50bHkgb2ZmIGJ5CmRlZmF1bHQsIHdpdGggYSBwcmVmZXJlbmNlIHBhZ2Ugb3B0aW9uIHRvIHR1cm4gaXQgb24uIFdoZW4gaW5jcmVtZW50YWwKaXMgZW5hYmxlZCwgZG8gd2Ugc3RpbGwgbmVlZCB0aGUgQXNwZWN0SiBidWlsZCBidXR0b24/IChJdCB3b3VsZCBiZQpuaWNlIHRvIGdldCByaWQgb2YgaXQgaWYgd2UgY2FuKS4KPC90ZD4KPHRkPkNvbXBsZXRlZDwvdGQ+Cjx0ZD5BbmR5IENsZW1lbnQ8L3RkPgo8dGQ+MS4yPC90ZD4KPC90cj4KCjx0cj4KPHRkPjxoND5Bc3BlY3QgUmVmYWN0b3JpbmcgVmVyaWZpY2F0aW9uPC9oND4KQ29tcGFyZXMgYSBxdWVyeSAoZm9yIGV4YW1wbGUgk2NhbGwodm9pZCBDYW52YXMudXBkYXRlSGlzdG9yeSguLikplCApIGFnYWluc3QKYW4gYXNwZWN0IHN1cHBseWluZyBhZHZpY2UgKGZvciBleGFtcGxlLCCTYWZ0ZXIoKSByZXR1cm5pbmc6CmV4ZWN1dGlvbigqIEZpZ3VyZUVsZW1lbnQrLnNldCooLi4pKSB7IENhbnZhcy51cGRhdGVIaXN0b3J5KCk7IH2UICkgYW5kCnNob3dzIHRoZSBwbGFjZXMgdGhlIHF1ZXJ5IGNhdGNoZXMgdGhhdCB0aGUgYXNwZWN0IGRvZXNuknQsIGFuZAp2aWNlLXZlcnNhLiBWZXJ5IHVzZWZ1bCBzdXBwb3J0IGFzIHBhcnQgb2YgdGhlIJNFeHRyYWN0IHRvIEFzcGVjdJQgcmVmYWN0b3JpbmcuCjwvdGQ+Cjx0ZD5Db21wbGV0ZWQgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMTM3MjMiPmJ1ZyZuYnNwOzExMzcyMzwvYT4pPC90ZD4KPHRkPkNoYXJsZXMmbmJzcDtaaGFuZywgSnVsaWUmbmJzcDtXYXRlcmhvdXNlPC90ZD4KPHRkPjEuNDwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD48aDQ+QXNwZWN0SiBBU1Q8L2g0PgpNYWtlIHRoZSBBc3BlY3RKIHN0cnVjdHVyZSBtb2RlbCBlYXNpbHkgYXZhaWxhYmxlIHRvIGV4dGVuZGVycwo8L3RkPgo8dGQ+Q29tcGxldGVkICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODg4NjEiPmJ1ZyZuYnNwOzg4ODYxPC9hPik8L3RkPgo8dGQ+QW5keSBDbGVtZW50PC90ZD4KPHRkPjEuNDwvdGQ+CjwvdHI+CgkJCTwvdGFibGU+CgkJCTxicj48L2E+PC9kaXY+Cgk8L2Rpdj4KCgoJCTxociBjbGFzcz0iY2xlYXJlciIgLz4KCTwvZGl2PgoKCSRyaWdodGNvbHVtbgo8L2Rpdj4KCgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4K