BAhJIgKxGDxoMiBpZD0ibWFpbGluZy1saXN0cyI+TWFpbGluZyBsaXN0czwvaDI+Cgo8cD5Gb3IgdXNlcnMgb2YgdGhlIFdpY2tldCBjb21tdW5pdHkgd2UgcnVuIHRoZSBmb2xsb3dpbmcgZW1haWwgbGlzdHM6PC9wPgoKPGRpdiBjbGFzcz0iYnV0dG9uLWJhciI+CiAgICA8YSBjbGFzcz0iYnV0dG9uIiBocmVmPSIjdXNlciI+PGkgY2xhc3M9ImZhIGZhLWNvbW1lbnRzIj48L2k+PGJyIC8+VXNlcnM8L2E+CiAgICA8YSBjbGFzcz0iYnV0dG9uIiBocmVmPSIjZGV2Ij48aSBjbGFzcz0iZmEgZmEtY29kZS1mb3JrIj48L2k+PGJyIC8+RGV2ZWxvcGVyczwvYT4KICAgIDxhIGNsYXNzPSJidXR0b24iIGhyZWY9IiNhbm5vdW5jZSI+PGkgY2xhc3M9ImZhIGZhLWJ1bGxob3JuIj48L2k+PGJyIC8+QW5ub3VuY2VtZW50czwvYT4KICAgIDxhIGNsYXNzPSJidXR0b24iIGhyZWY9IiNjb21taXQiPjxpIGNsYXNzPSJmYSBmYS1maWxlLWNvZGUtbyI+PC9pPjxiciAvPkNvbW1pdHM8L2E+CiAgICA8YSBjbGFzcz0iYnV0dG9uIiBocmVmPSIjc2VjdXJpdHkiPjxpIGNsYXNzPSJmYSBmYS1sb2NrIj48L2k+PGJyIC8+U2VjdXJpdHk8L2E+CjwvZGl2PgoKPHA+TGVhcm4gbW9yZSBhYm91dCB0aGVzZSBsaXN0cyBiZWxvdy48L3A+Cgo8aHIgLz4KCjxoMiBpZD0idXNlciI+VGhlIFVzZXJzIGxpc3Q8L2gyPgoKPHA+QXNrIHlvdXIgcXVlc3Rpb25zIGFuZCBhbnN3ZXIgcXVlc3Rpb25zIG9mIG90aGVyIHVzZXJzIG9uIHRoZSB1c2VycwpsaXN0LiBJdCBpcyBhIG1lZGl1bSB0cmFmZmljIGxpc3Qgd2l0aCBhIGNvdXBsZSBvZiBtZXNzYWdlcyBwZXIgZGF5LgpDb21tdW5pdHkgbWVtYmVycyBhc2sgYW5kIGFuc3dlciBxdWVzdGlvbnMgb24gdGhpcyBsaXN0LiBBbm5vdW5jZW1lbnRzCmFuZCBzZWN1cml0eSB1cGRhdGVzIGFyZSBhbHNvIHNlbnQgdG8gdGhpcyBsaXN0LjwvcD4KCjxwPllvdSBoYXZlIHRvIHN1YnNjcmliZSB0byB0aGlzIGxpc3QgaWYgeW91IHdhbnQgdG8gYXNrIGEgcXVlc3Rpb24gYW5kCnNlZSB0aGUgcmVwbGllcy48L3A+Cgo8dWw+CiAgPGxpPlRyYWZmaWM6IG1lZGl1bTwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvd2lja2V0LXVzZXJzLyI+QnJvd3NlPC9hPiB0aGUgYXJjaGl2ZXM8L2xpPgogIDxsaT48YSBocmVmPSJodHRwOi8vd2lja2V0LXVzZXIubWFya21haWwub3JnIj5TZWFyY2g8L2E+IHRoZSBsaXN0PC9saT4KICA8bGk+PGEgaHJlZj0ibWFpbHRvOnVzZXJzLXN1YnNjcmliZUB3aWNrZXQuYXBhY2hlLm9yZz9zdWJqZWN0PVN1YnNjcmliZSt0bytBcGFjaGUrV2lja2V0K1VzZXIrbGlzdCI+U3Vic2NyaWJlPC9hPiB0byB0aGUgbGlzdDwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzp1c2Vycy11bnN1YnNjcmliZUB3aWNrZXQuYXBhY2hlLm9yZz9zdWJqZWN0PVVuc3Vic2NyaWJlK2Zyb20rQXBhY2hlK1dpY2tldCtVc2VyK2xpc3QiPlVuc3Vic2NyaWJlPC9hPiBmcm9tIHRoZSBsaXN0PC9saT4KICA8bGk+PGEgaHJlZj0ibWFpbHRvOnVzZXJzLWhlbHBAd2lja2V0LmFwYWNoZS5vcmc/c3ViamVjdD1HZXQraGVscCtmb3IrQXBhY2hlK1dpY2tldCtVc2VyK2xpc3QiPkhlbHAgZm9yIHN1YnNjcmlwdGlvbnM8L2E+PC9saT4KPC91bD4KCjxwPk9ubHkgc3Vic2NyaWJlcnMgY2FuIHBvc3QgdG8gdGhpcyBsaXN0LjwvcD4KCjxwPklmIHlvdSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHVwZGF0ZXMgYWJvdXQgdGhlIFdpY2tldCBwcm9qZWN0LApjb25zaWRlciBqdXN0IHN1YnNjcmliaW5nIHRvIHRoZSBhbm5vdW5jZW1lbnRzIGxpc3QuPC9wPgoKPGhyIC8+Cgo8aDIgaWQ9ImRldiI+VGhlIERldmVsb3BlcnMgbGlzdDwvaDI+Cgo8cD5EaXNjdXNzIGludGVybmFscyBvZiB0aGUgZnJhbWV3b3JrLiBUaGUgdHJhZmZpYyBpcyBsb3cgd2l0aCBqdXN0IGEgY291cGxlIG9mIG1lc3NhZ2VzIHBlciB3ZWVrLjwvcD4KCjxwPllvdSBoYXZlIHRvIHN1YnNjcmliZSB0byB0aGlzIGxpc3QgaWYgeW91IHdhbnQgdG8gcGFydGljaXBhdGUgaW4gZGlzY3Vzc2lvbnMuPC9wPgoKPHVsPgogIDxsaT5UcmFmZmljOiBsb3c8L2xpPgogIDxsaT48YSBocmVmPSJodHRwOi8vbWFpbC1hcmNoaXZlcy5hcGFjaGUub3JnL21vZF9tYm94L3dpY2tldC1kZXYvIj5Ccm93c2U8L2E+IHRoZSBhcmNoaXZlczwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93aWNrZXQtZGV2Lm1hcmttYWlsLm9yZyI+U2VhcmNoPC9hPiB0aGUgbGlzdDwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzpkZXYtc3Vic2NyaWJlQHdpY2tldC5hcGFjaGUub3JnP3N1YmplY3Q9U3Vic2NyaWJlK3RvK0FwYWNoZStXaWNrZXQrRGV2K2xpc3QiPlN1YnNjcmliZTwvYT4gdG8gdGhlIGxpc3Q8L2xpPgogIDxsaT48YSBocmVmPSJtYWlsdG86ZGV2LXVuc3Vic2NyaWJlQHdpY2tldC5hcGFjaGUub3JnP3N1YmplY3Q9VW5zdWJzY3JpYmUrZnJvbStBcGFjaGUrV2lja2V0K0RlditsaXN0Ij5VbnN1YnNjcmliZTwvYT4gZnJvbSB0aGUgbGlzdDwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzpkZXYtaGVscEB3aWNrZXQuYXBhY2hlLm9yZz9zdWJqZWN0PUdldCtoZWxwK2ZvcitBcGFjaGUrV2lja2V0K0RlditsaXN0Ij5IZWxwIGZvciBzdWJzY3JpcHRpb25zPC9hPjwvbGk+CjwvdWw+Cgo8cD5Pbmx5IHN1YnNjcmliZXJzIGNhbiBwb3N0IHRvIHRoaXMgbGlzdC48L3A+Cgo8aHIgLz4KCjxoMiBpZD0iYW5ub3VuY2UiPlRoZSBBbm5vdW5jZW1lbnRzIGxpc3Q8L2gyPgoKPHA+VGhlIGFubm91bmNlbWVudHMgbGlzdCBpcyB1c2VkIGZvciBwdWJsaXNoaW5nIG5ld3MgYWJvdXQgcmVsZWFzZXMgYW5kCnNlY3VyaXR5IHVwZGF0ZXMuIEl0IGlzIGEgdmVyeSBsb3cgdHJhZmZpYyBsaXN0LjwvcD4KCjxwPllvdSBzaG91bGQgc3Vic2NyaWJlIHRvIHRoaXMgbGlzdCBpZiB5b3Ugb25seSB3YW50IHRvIGtlZXAgdXAgdG8gZGF0ZQp3aXRoIFdpY2tldCBjb25jZXJuaW5nIHJlbGVhc2VzIGFuZCBzZWN1cml0eSBhbm5vdW5jZW1lbnRzLjwvcD4KCjx1bD4KICA8bGk+VHJhZmZpYzogbG93PC9saT4KICA8bGk+PGEgaHJlZj0iaHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9tb2RfbWJveC93aWNrZXQtYW5ub3VuY2UiPkJyb3dzZTwvYT4gIHRoZSBhcmNoaXZlczwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93aWNrZXQtYW5ub3VuY2UubWFya21haWwub3JnIj5TZWFyY2g8L2E+IHRoZSBsaXN0PC9saT4KICA8bGk+PGEgaHJlZj0ibWFpbHRvOmFubm91bmNlLXN1YnNjcmliZUB3aWNrZXQuYXBhY2hlLm9yZz9zdWJqZWN0PVN1YnNjcmliZSt0bytBcGFjaGUrV2lja2V0K2Fubm91bmNlbWVudHMrbGlzdCI+U3Vic2NyaWJlPC9hPiB0byB0aGUgbGlzdDwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzphbm5vdW5jZS11bnN1YnNjcmliZUB3aWNrZXQuYXBhY2hlLm9yZz9zdWJqZWN0PVVuc3Vic2NyaWJlK2Zyb20rQXBhY2hlK1dpY2tldCthbm5vdW5jZW1lbnRzK2xpc3QiPlVuc3Vic2NyaWJlPC9hPiBmcm9tIHRoZSBsaXN0PC9saT4KICA8bGk+PGEgaHJlZj0ibWFpbHRvOmFubm91bmNlLWhlbHBAd2lja2V0LmFwYWNoZS5vcmc/c3ViamVjdD1HZXQraGVscCtmb3IrQXBhY2hlK1dpY2tldCthbm5vdW5jZW1lbnRzK2xpc3QiPkhlbHAgZm9yIHN1YnNjcmlwdGlvbnM8L2E+PC9saT4KPC91bD4KCjxwPk9ubHkgQXBhY2hlIFdpY2tldCBwcm9qZWN0IG1lbWJlcnMgY2FuIHBvc3QgdG8gdGhpcyBsaXN0LjwvcD4KCjxociAvPgoKPGgyIGlkPSJjb21taXQiPlRoZSBDb21taXQgbGlzdDwvaDI+Cgo8cD5UaGUgY29tbWl0IGxpc3QgaXMgdXNlZCBmb3IgcHVibGlzaGluZyBjb21taXQgbWVzc2FnZXMsIGJ1ZyB0cmFja2VyCnVwZGF0ZXMgYW5kIG90aGVyIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1lc3NhZ2VzLjwvcD4KCjxwPllvdSBzaG91bGQgc3Vic2NyaWJlIHRvIHRoaXMgbGlzdCBpZiB5b3Ugd2FudCB0byBrZWVwIHVwIHRvIGRhdGUgd2l0aApXaWNrZXQgZGV2ZWxvcG1lbnQsIGxpa2Ugd2hpY2ggY29tbWl0cyBoYXBwZW4sIHdoaWNoIGlzc3VlcyBhcmUgdXBkYXRlZAphbmQgb3RoZXIgdGhpbmdzLjwvcD4KCjx1bD4KICA8bGk+VHJhZmZpYzogaGlnaDwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvd2lja2V0LWNvbW1pdHMiPkJyb3dzZTwvYT4gdGhlIGFyY2hpdmVzPC9saT4KICA8bGk+PGEgaHJlZj0iaHR0cDovL3dpY2tldC1jb21taXRzLm1hcmttYWlsLm9yZyI+U2VhcmNoPC9hPiB0aGUgbGlzdDwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzpjb21taXRzLXN1YnNjcmliZUB3aWNrZXQuYXBhY2hlLm9yZz9zdWJqZWN0PVN1YnNjcmliZSt0bytBcGFjaGUrV2lja2V0K2NvbW1pdHMrbGlzdCI+U3Vic2NyaWJlPC9hPiB0byB0aGUgbGlzdDwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzpjb21taXRzLXVuc3Vic2NyaWJlQHdpY2tldC5hcGFjaGUub3JnP3N1YmplY3Q9VW5zdWJzY3JpYmUrZnJvbStBcGFjaGUrV2lja2V0K2NvbW1pdHMrbGlzdCI+VW5zdWJzY3JpYmU8L2E+IGZyb20gdGhlIGxpc3Q8L2xpPgogIDxsaT48YSBocmVmPSJtYWlsdG86Y29tbWl0cy1oZWxwQHdpY2tldC5hcGFjaGUub3JnP3N1YmplY3Q9R2V0K2hlbHArZm9yK0FwYWNoZStXaWNrZXQrY29tbWl0cytsaXN0Ij5IZWxwIGZvciBzdWJzY3JpcHRpb25zPC9hPjwvbGk+CjwvdWw+Cgo8cD5UaGlzIGxpc3QgaXMgcmVhZCBvbmx5LCBhbmQgb25seSBBcGFjaGUgYnVpbGQgc3lzdGVtcyBjYW4gcHVibGlzaCB0byBpdC48L3A+Cgo8aHIgLz4KCjxoMiBpZD0ic2VjdXJpdHkiPlJlcG9ydCBhIHNlY3VyaXR5IGlzc3VlPC9oMj4KCjxwPlRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiB0YWtlcyBhIHZlcnkgYWN0aXZlIHN0YW5jZSBpbgplbGltaW5hdGluZyBzZWN1cml0eSBwcm9ibGVtcyBhZ2FpbnN0IHRoZSBBcGFjaGUgV2lja2V0IHdlYiBmcmFtZXdvcmsuPC9wPgoKPHA+Rm9yIHJlcG9ydGluZyBhbmQgZGlzY3Vzc2luZyBhIHNlY3VyaXR5IGlzc3VlIHlvdSBzaG91bGQgY29udGFjdCB0aGUKV2lja2V0IFBNQyBwcml2YXRlbHkuPC9wPgoKPHA+PHN0cm9uZz4qKiBQTEVBU0UgRE8gTk9UIENSRUFURSBBIFNFQ1VSSVRZIFJFUE9SVCBJTiBPVVIgSVNTVUUgVFJBQ0tFUiAqKjwvc3Ryb25nPjwvcD4KCjxwPlRoZSBpc3N1ZSB0cmFja2VyIGZvciBXaWNrZXQgaXMgbm90IHRoZSBhcHByb3ByaWF0ZSB2ZW51ZSBmb3IgcmVwb3J0aW5nCnNlY3VyaXR5IGlzc3VlcyBhcyB0aGUgaXNzdWUgdHJhY2tlciBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlLiBJbnN0ZWFkLApjb250YWN0IHRoZSBXaWNrZXQgUE1DIHByaXZhdGVseS48L3A+Cgo8aDMgaWQ9ImNvbnRhY3QtdGhlLXdpY2tldC1wbWMtcHJpdmF0ZWx5Ij5Db250YWN0IHRoZSBXaWNrZXQgUE1DIHByaXZhdGVseTwvaDM+Cgo8cD5TZW5kIHlvdXIgc2VjdXJpdHkgaXNzdWUgdG8gPHN0cm9uZz5wcml2YXRlIGF0IHdpY2tldC5hcGFjaGUub3JnPC9zdHJvbmc+LiBUaGlzIGxpc3QKaXMgbm90IHB1YmxpY2x5IGF2YWlsYWJsZSBzbyB3ZSBjYW4gZGlzY3VzcyBhbmQgZml4IHRoZSBpc3N1ZSBpbgpwcml2YXRlIHdpdGhvdXQgbGVha2luZyB0aGUgaW5mbyB0byBhbnkgYmFkIGd1eXMuPC9wPgoKPHA+PGEgY2xhc3M9ImJ1dHRvbiIgaHJlZj0ibWFpbHRvOnByaXZhdGVAd2lja2V0LmFwYWNoZS5vcmc/c3ViamVjdD1TZWN1cml0eSUyMGlzc3VlIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24uaHJlZj0nbWFpbHRvOnByaXZhdGVAd2lja2V0LmFwYWNoZS5vcmc/c3ViamVjdD1TZWN1cml0eSUyMGlzc3VlJztyZXR1cm4gZmFsc2U7Ij4KICAgIDxpIGNsYXNzPSJmYSBmYS1zaGllbGQiPjwvaT4KICAgIFJFUE9SVCBBIFNFQ1VSSVRZIElTU1VFCjwvYT48L3A+Cgo8cD5XZSB0cmVhdCBhbGwgc2VjdXJpdHkgaXNzdWVzIHNlcmlvdXNseSBhbmQgd2lsbCB0cnkgdG8gZml4IHRoZW0gYXMgc29vbgphcyBwb3NzaWJsZSBpbiBhbGwgYWZmZWN0ZWQgdmVyc2lvbnMgdGhhdCB3ZSBzdGlsbCBzdXBwb3J0LjwvcD4KCjxoMyBpZD0icmVwb3J0LW5vcm1hbC1idWdzLWluLWppcmEiPlJlcG9ydCBub3JtYWwgYnVncyBpbiBKSVJBPC9oMz4KCjxwPlRoZSBTZWN1cml0eSBUZWFtIGNhbm5vdCBhY2NlcHQgcmVndWxhciBidWcgcmVwb3J0cyBvciBvdGhlciBxdWVyaWVzLAp3ZSBhc2sgdGhhdCB5b3UgdXNlIG91ciA8YSBocmVmPSIvaGVscC8jcmVwb3J0YnVnIj5idWcgcmVwb3J0aW5nIHBhZ2U8L2E+CmZvciBub3JtYWwsIG5vbi1zZWN1cml0eSBidWdzLjwvcD4KCgY6BkVU