Ly89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8NLy8NLy8gysrKysrKysrKysrKysrKysrKyspUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQ0vLw0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UNLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLg0vLw0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLw0NLy8gPGZ1bmN0aW9uYWw+DQ0vLyB0ZW1wbGF0ZTxSZXR1cm5hYmxlIFIsIGNsYXNzIFQsIENvcHlDb25zdHJ1Y3RpYmxlLi4uIEFyZ3M+IA0vLyAgIHVuc3BlY2lmaWVkIG1lbV9mbihSIChUOjoqIHBtKShBcmdzLi4uKSk7IA0NI2luY2x1ZGUgPGZ1bmN0aW9uYWw+DSNpbmNsdWRlIDxjYXNzZXJ0Pg0Nc3RydWN0IEENew0gICAgY2hhciB0ZXN0MCgpIHtyZXR1cm4gJ2EnO30NICAgIGNoYXIgdGVzdDEoaW50KSB7cmV0dXJuICdiJzt9DSAgICBjaGFyIHRlc3QyKGludCwgZG91YmxlKSB7cmV0dXJuICdjJzt9DX07DQ10ZW1wbGF0ZSA8Y2xhc3MgRj4Ndm9pZA10ZXN0MChGIGYpDXsNICAgIHsNICAgIEEgYTsNICAgIGFzc2VydChmKGEpID09ICdhJyk7DSAgICBBKiBhcCA9ICZhOw0gICAgYXNzZXJ0KGYoYXApID09ICdhJyk7DSAgICB9DX0NDXRlbXBsYXRlIDxjbGFzcyBGPg12b2lkDXRlc3QxKEYgZikNew0gICAgew0gICAgQSBhOw0gICAgYXNzZXJ0KGYoYSwgMSkgPT0gJ2InKTsNICAgIEEqIGFwID0gJmE7DSAgICBhc3NlcnQoZihhcCwgMikgPT0gJ2InKTsNICAgIH0NfQ0NdGVtcGxhdGUgPGNsYXNzIEY+DXZvaWQNdGVzdDIoRiBmKQ17DSAgICB7DSAgICBBIGE7DSAgICBhc3NlcnQoZihhLCAxLCAyKSA9PSAnYycpOw0gICAgQSogYXAgPSAmYTsNICAgIGFzc2VydChmKGFwLCAyLCAzLjUpID09ICdjJyk7DSAgICB9DX0NDWludCBtYWluKCkNew0gICAgdGVzdDAoc3RkOjptZW1fZm4oJkE6OnRlc3QwKSk7DSAgICB0ZXN0MShzdGQ6Om1lbV9mbigmQTo6dGVzdDEpKTsNICAgIHRlc3QyKHN0ZDo6bWVtX2ZuKCZBOjp0ZXN0MikpOw19DQ==