PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5SdW5uaW5nIGEgSGlnaC1QZXJmb3JtYW5jZSBXZWIgU2VydmVyIG9uIEhQVVggLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5IGlkPSJtYW51YWwtcGFnZSIgY2xhc3M9Im5vLXNpZGViYXIiPjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjQ8L2E+ICZndDsgPGEgaHJlZj0iLi8iPlBsYXRmb3JtIFNwZWNpZmljIE5vdGVzPC9hPjwvZGl2PjxkaXYgaWQ9InBhZ2UtY29udGVudCI+PGRpdiBpZD0icHJlYW1ibGUiPjxoMT5SdW5uaW5nIGEgSGlnaC1QZXJmb3JtYW5jZSBXZWIgU2VydmVyIG9uIEhQVVg8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL3BsYXRmb3JtL3BlcmYtaHAuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL3BsYXRmb3JtL3BlcmYtaHAuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9wbGF0Zm9ybS9wZXJmLWhwLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPjwvcD4KPC9kaXY+CgoKPHByZT5EYXRlOiBXZWQsIDA1IE5vdiAxOTk3IDE2OjU5OjM0IC0wODAwCkZyb206IFJpY2sgSm9uZXMgJmx0OzxhIGhyZWY9Im1haWx0bzpyYWpAY3VwLmhwLmNvbSI+cmFqQGN1cC5ocC5jb208L2E+Jmd0OwpSZXBseS1UbzogPGEgaHJlZj0ibWFpbHRvOnJhakBjdXAuaHAuY29tIj5yYWpAY3VwLmhwLmNvbTwvYT4KT3JnYW5pemF0aW9uOiBOZXR3b3JrIFBlcmZvcm1hbmNlClN1YmplY3Q6IEhQLVVYIHR1bmluZyB0aXBzPC9wcmU+CgogICAgPHA+SGVyZSBhcmUgc29tZSB0dW5pbmcgdGlwcyBmb3IgSFAtVVggdG8gYWRkIHRvIHRoZSB0dW5pbmcgcGFnZS48L3A+CgogICAgPHA+Rm9yIEhQLVVYIDkuWDogVXBncmFkZSB0byAxMC4yMDxiciAvPgogICAgRm9yIEhQLVVYIDEwLlswMHwwMXwxMF06IFVwZ3JhZGUgdG8gMTAuMjA8L3A+CgogICAgPHA+Rm9yIEhQLVVYIDEwLjIwOjwvcD4KCiAgICA8cD5JbnN0YWxsIHRoZSBsYXRlc3QgY3VtdWxhdGl2ZSBBUlBBIFRyYW5zcG9ydCBQYXRjaC4gVGhpcwogICAgd2lsbCBhbGxvdyB5b3UgdG8gY29uZmlndXJlIHRoZSBzaXplIG9mIHRoZSBUQ1AgY29ubmVjdGlvbgogICAgbG9va3VwIGhhc2ggdGFibGUuIFRoZSBkZWZhdWx0IGlzIDI1NiBidWNrZXRzIGFuZCBtdXN0IGJlIHNldAogICAgdG8gYSBwb3dlciBvZiB0d28uIFRoaXMgaXMgYWNjb21wbGlzaGVkIHdpdGggYWRiIGFnYWluc3QgdGhlCiAgICAqZGlzYyogaW1hZ2Ugb2YgdGhlIGtlcm5lbC4gVGhlIHZhcmlhYmxlIG5hbWUgaXMgPGNvZGU+dGNwX2hhc2hfc2l6ZTwvY29kZT4uCiAgICBOb3RpY2UgdGhhdCBpdCdzIGNyaXRpY2FsbHkgaW1wb3J0YW50IHRoYXQgeW91IHVzZSAiPGNvZGU+VzwvY29kZT4iCiAgICB0byB3cml0ZSBhIDMyIGJpdCBxdWFudGl0eSwgbm90ICI8Y29kZT53PC9jb2RlPiIgdG8gd3JpdGUgYSAxNiBiaXQKICAgIHZhbHVlIHdoZW4gcGF0Y2hpbmcgdGhlIGRpc2MgaW1hZ2UgYmVjYXVzZSB0aGUgPGNvZGU+dGNwX2hhc2hfc2l6ZTwvY29kZT4KICAgIHZhcmlhYmxlIGlzIGEgMzIgYml0IHF1YW50aXR5LjwvcD4KCiAgICA8cD5Ib3cgdG8gcGljayB0aGUgdmFsdWU/IEV4YW1pbmUgdGhlIG91dHB1dCBvZiA8YSBocmVmPSJmdHA6Ly9mdHAuY3VwLmhwLmNvbS9kaXN0L25ldHdvcmtpbmcvdG9vbHMvY29ubmhpc3QiPmZ0cDovL2Z0cC5jdXAuaHAuY29tL2Rpc3QvbmV0d29ya2luZy90b29scy9jb25uaGlzdDwvYT4KICAgIGFuZCBzZWUgaG93IG1hbnkgdG90YWwgVENQIGNvbm5lY3Rpb25zIGV4aXN0IG9uIHRoZSBzeXN0ZW0uIFlvdQogICAgcHJvYmFibHkgd2FudCB0aGF0IG51bWJlciBkaXZpZGVkIGJ5IHRoZSBoYXNoIHRhYmxlIHNpemUgdG8gYmUKICAgIHJlYXNvbmFibHkgc21hbGwsIHNheSBsZXNzIHRoYW4gMTAuIEZvbGtzIGNhbiBsb29rIGF0IEhQJ3MKICAgIFNQRUN3ZWI5NiBkaXNjbG9zdXJlcyBmb3Igc29tZSBjb21tb24gc2V0dGluZ3MuIFRoZXNlIGNhbiBiZQogICAgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5zcGVjYmVuY2gub3JnLyI+aHR0cDovL3d3dy5zcGVjYmVuY2gub3JnLzwvYT4uCiAgICBJZiBhbiBIUC1VWCBzeXN0ZW0gd2FzIHBlcmZvcm1pbmcgYXQgMTAwMCBTUEVDd2ViOTYgY29ubmVjdGlvbnMKICAgIHBlciBzZWNvbmQsIHRoZSA8Y29kZT5USU1FX1dBSVQ8L2NvZGU+IHRpbWUgb2YgNjAgc2Vjb25kcyB3b3VsZCBtZWFuCiAgICA2MCwwMDAgVENQICJjb25uZWN0aW9ucyIgYmVpbmcgdHJhY2tlZC48L3A+CgogICAgPHA+Rm9sa3MgY2FuIGNoZWNrIHRoZWlyIGxpc3RlbiBxdWV1ZSBkZXB0aHMgd2l0aCA8YSBocmVmPSJmdHA6Ly9mdHAuY3VwLmhwLmNvbS9kaXN0L25ldHdvcmtpbmcvbWlzYy9saXN0ZW5xIj5mdHA6Ly9mdHAuY3VwLmhwLmNvbS9kaXN0L25ldHdvcmtpbmcvbWlzYy9saXN0ZW5xPC9hPi48L3A+CgogICAgPHA+SWYgZm9sa3MgYXJlIHJ1bm5pbmcgQXBhY2hlIG9uIGEgUEEtODAwMCBiYXNlZCBzeXN0ZW0sIHRoZXkKICAgIHNob3VsZCBjb25zaWRlciAiY2hhdHInaW5nIiB0aGUgQXBhY2hlIGV4ZWN1dGFibGUgdG8gaGF2ZSBhCiAgICBsYXJnZSBwYWdlIHNpemUuIFRoaXMgd291bGQgYmUgIjxjb2RlPmNoYXRyICtwaSBMICZsdDtCSU5BUlkmZ3Q7PC9jb2RlPiIuCiAgICBUaGUgR0lEIG9mIHRoZSBydW5uaW5nIGV4ZWN1dGFibGUgbXVzdCBoYXZlIDxjb2RlPk1MT0NLPC9jb2RlPiBwcml2aWxlZ2VzLgogICAgPGNvZGU+U2V0cHJpdmdycCgxbSk8L2NvZGU+IHNob3VsZCBiZSBjb25zdWx0ZWQgZm9yIGFzc2lnbmluZwogICAgPGNvZGU+TUxPQ0s8L2NvZGU+LiBUaGUgY2hhbmdlIGNhbiBiZSB2YWxpZGF0ZWQgYnkgcnVubmluZyBHbGFuY2UKICAgIGFuZCBleGFtaW5pbmcgdGhlIG1lbW9yeSByZWdpb25zIG9mIHRoZSBzZXJ2ZXIocykgdG8gbWFrZSBzdXJlIHRoYXQKICAgIHRoZXkgc2hvdyBhIG5vbi10cml2aWFsIGZyYWN0aW9uIG9mIHRoZSB0ZXh0IHNlZ21lbnQgYmVpbmcgbG9ja2VkLjwvcD4KCiAgICA8cD5JZiBmb2xrcyBhcmUgcnVubmluZyBBcGFjaGUgb24gTVAgc3lzdGVtcywgdGhleSBtaWdodAogICAgY29uc2lkZXIgd3JpdGluZyBhIHNtYWxsIHByb2dyYW0gdGhhdCB1c2VzIDxjb2RlPm1wY3RsKCk8L2NvZGU+CiAgICB0byBiaW5kIHByb2Nlc3NlcyB0byBwcm9jZXNzb3JzLiBBIHNpbXBsZSA8Y29kZT5waWQgJSBudW1jcHU8L2NvZGU+CiAgICBhbGdvcml0aG0gaXMgcHJvYmFibHkgc3VmZmljaWVudC4gVGhpcyBtaWdodCBldmVuIGdvIGludG8gdGhlCiAgICBzb3VyY2UgY29kZS48L3A+CgogICAgPHA+SWYgZm9sa3MgYXJlIGNvbmNlcm5lZCBhYm91dCB0aGUgbnVtYmVyIG9mIDxjb2RlPkZJTl9XQUlUXzI8L2NvZGU+CiAgICBjb25uZWN0aW9ucywgdGhleSBjYW4gdXNlIG5ldHR1bmUgdG8gc2hyaW5rIHRoZSB2YWx1ZSBvZgogICAgPGNvZGU+dGNwX2tlZXBzdGFydDwvY29kZT4uIEhvd2V2ZXIsIHRoZXkgc2hvdWxkIGJlIGNhcmVmdWwgdGhlcmUgLQogICAgY2VydGFpbmx5IGRvIG5vdCBtYWtlIGl0IGxlc3MgdGhhbiBvaCB0d28gdG8gZm91ciBtaW51dGVzLiBJZgogICAgPGNvZGU+dGNwX2hhc2hfc2l6ZTwvY29kZT4gaGFzIGJlZW4gc2V0IHdlbGwsIGl0IGlzIHByb2JhYmx5IE9LIHRvCiAgICBsZXQgdGhlIDxjb2RlPkZJTl9XQUlUXzI8L2NvZGU+J3MgdGFrZSBsb25nZXIgdG8gdGltZW91dCAocGVyaGFwcwogICAgZXZlbiB0aGUgZGVmYXVsdCB0d28gaG91cnMpIC0gdGhleSB3aWxsIG5vdCBvbiBhdmVyYWdlIGhhdmUgYSBiaWcKICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS48L3A+CgogICAgPHA+VGhlcmUgYXJlIG90aGVyIHRoaW5ncyB0aGF0IGNvdWxkIGdvIGludG8gdGhlIGNvZGUgYmFzZSwgYnV0CiAgICB0aGF0IG1pZ2h0IGJlIGxlZnQgZm9yIGFub3RoZXIgZW1haWwuIEZlZWwgZnJlZSB0byBkcm9wIG1lIGEKICAgIG1lc3NhZ2UgaWYgeW91IG9yIG90aGVycyBhcmUgaW50ZXJlc3RlZC48L3A+CgogICAgPHA+c2luY2VyZWx5LDwvcD4KCiAgICA8cD5yaWNrIGpvbmVzPC9wPgoKICAgIDxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubmV0cGVyZi5vcmcvbmV0cGVyZi8iPmh0dHA6Ly93d3cubmV0cGVyZi5vcmcvbmV0cGVyZi88L2E+PC9wPgoKICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vcGxhdGZvcm0vcGVyZi1ocC5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvcGxhdGZvcm0vcGVyZi1ocC5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL3BsYXRmb3JtL3BlcmYtaHAuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGFnYWluIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIEZyZWVub2RlLCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L3BsYXRmb3JtL3BlcmYtaHAuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=