CFwYXJlbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHsKCQkJCQkJdG9nZ2xlU3VibWVudShsaW5rLCB0cnVlKTsKCQkJCQl9CgkJCQl9LCAxMDApOwoJCQl9CgkJCQoJCQlmdW5jdGlvbiBpbml0KCkgewoJCQkJdmFyIHBhcmVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhcmVudFNlbGVjdG9yKTsKCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50cy5sZW5ndGg7IGkrKykgewoJCQkJCXZhciBsaW5rID0gcGFyZW50c1tpXS5xdWVyeVNlbGVjdG9yKCdhW2FyaWEtZXhwYW5kZWRdJyk7CgkJCQkJaWYgKGxpbmspIHsKCQkJCQkJbGluay5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5ZG93bik7CgkJCQkJCWxpbmsuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGhhbmRsZUJsdXIpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQkKCQkJaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewoJCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXQpOwoJCQl9IGVsc2UgewoJCQkJaW5pdCgpOwoJCQl9CgkJfSkoKTsKCQk=">