PGh0bWw+CjxoZWFkPgogICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MtY2hhcnNldC5jc3MiIGNoYXJzZXQ9IndpbmRvd3MtMTI1MSI+CiAgICA8IS0tIFRoZSBkb2N1bWVudCBjaGFyc2V0IGFuZCBsaW5rIGNoYXJzZXQgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIAogICAgICAgICBAY2hhcnNldCwgc28gdGhleSBzaG91bGRuJ3QgYWZmZWN0IGFueXRoaW5nLiAtLT4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CjxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NSI+YnVnIDEwMTU1PC9hPjoKQ1NTMjogQGNoYXJzZXQgaXMgbm90IHN1cHBvcnRlZDwvcD4KPHA+VGVzdCB0aGF0IDxjb2RlPkBjaGFyc2V0PC9jb2RlPiB3b3JrcyBhbmQgdGhhdCBpbmRleGVkIHJ1bGUgYWNjZXNzIHZpYSAKYW4gSUUtc3BlY2lmaWMgPGNvZGU+cnVsZXM8L2NvZGU+IHByb3BlcnR5IGRvZXMgbm90IHRha2UgaXQgaW50byBhY2NvdW50LjwvcD4KCjxwIGlkPSJyZXN1bHQiPjwvcD4KCjxzY3JpcHQ+CmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CgpmdW5jdGlvbiB0ZXN0KCkgewogIHRyeSB7CiAgICB0ZXh0ID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uc3R5bGUuY3NzVGV4dDsKICAgIGlmICh0ZXh0Lm1hdGNoKCcuKlNV0dHFU1MuKicpKQogICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOwogICAgZWxzZQogICAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUxVUkU6ICIgKyB0ZXh0OwogIH0gY2F0Y2ggKGV4KSB7CiAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUxVUkU6ICIgKyBleDsKICB9Cn0KPC9zY3JpcHQ+Cgo8L2JvZHk+CjwvaHRtbD4K