PD9waHAKc2Vzc2lvbl9z$GFy$CgpOwppb(Ns$WRlICgiY29uZ(lnLnBocCIpOwppb(Ns$WRlICgiZnVuY3RpaS)waHAiKTsKCiRjb2)0YWN0PSRfU0VSVkVSWy$SRVFVRVNUX1VSSS$$OwovL2VjaG8gJGNvbnRhY3Q7Ci8vZXhp$DsKJGNvbnRhY3QgPSBleHBsb2RlKCcvJywgJGNvbnRhY3QpOyAKJG)1bV9wYXJhbSA9IGNv$W)0KCRjb2)0YWN0KTsgCi8vZWNobyAkbnVtX3Bhc(FtOwovL2V4aXQ7C(ZvcigkaSA9IDA7ICRpIDwgJG)1bV9wYXJhbTsgJGkrKykgeyAKJGtleSA9ICRjb2)0YWN0WyRpXTsKCWl(ICgka2V)PT1jb2)0YWN0KXsKCSRpKys7CgkkY29u$GFj$F9tZW1iZXIgPSAkY29u$GFj$FskaV07Cgl9Cn0KCi8vZWNobyAkY29u$GFj$F9tZW1iZXI7Ci8vZXhp$DsKCiRjb2)0YWN0X21lbWJlcj1hZGRzbGFzaGVzKCRjb2)0YWN0X21lbWJlcik7Cgokcj1teXNxbF9(ZXRjaF9hcnJheShteXNxbF9leGVj$XRlKCJzZWxlY3QgKiB(c(9tIG9kcF91c2VycyB3aGVyZSBzaG9y$F9uYW1lPSckY29u$GFj$F9tZW1iZXInIikpOwokb(FtZT0kclsnb(FtZS$$OwokZW1haWw9JHJbJ2VtYWlsJ107CiRwaG90bz0kclsncGhv$G8nXTsKJHNob3J0X2)hbWU9JHJbJ3Nob3J0X2)hbWUnXTsKC(l(ICghJGVtYWlsKXsKJHJyPW1)c3FsX2Zl$GNoX2Fyc(F)KG1)c3FsX2V4ZWN1$GUoInNlbGVj$CAqIGZyb20gYXBwc(92ZW1lbnQiKSk7CiRuYW1lPSRyclsnY29tcGFueS$$OwokZW1haWw9JHJyWy$lbWFpbC$$OwokcGhv$G89JHNp$GVfYWRkc(Vzcy4iaW1hZ2VzL3NwYWNlci)naWYiOwoKfQppZiAoISRNZXNzYW$lKXsKJE1lc3NhZ2U9IkhlbGxvICRuYW1lLAoKCiI7Cn0KJHRp$GxlY(FyPSJDb2)0YWN0ICRuYW1lIjsKCj8+CgoKCjwhLS0tLS0gY(VnaW4gaGVhZGVyIHNlY3Rpb24gLS0tLS0+CgoKCjw/IGluY2x1ZGUoI(Rlc2lnbi9oZWFkZXIucGhwIik7Pz4KCgoKPCEtLS0tLSBlb(QgaGVhZGVyIHNlY3Rpb24gLS0tLS0+CgoKCgo8IS0tLS0tIGJlZ2luIGxlZnQgbWVu$SBzZWN0aW9uIC0tLS0tPgoKCiAgICAgCjw/IGluY2x1ZGUoI(Rlc2lnbi9tZW)1LnBocCIpOz8+CgoKCgo8IS0tLS0tIGVuZCBsZWZ0IG1lbnUgc2Vj$GlvbiAtLS0tLT4KCgoKPCEtLS0tLSBiZW$pbiBlZGl0aW)nIGNvcHkgc2Vj$GlvbiAtLS0tLT4KCjx(b2)0IGNsYXNzPXBhZ2Vf$Gl0bGU+Q29u$GFj$DwvZ(9u$D4KPEhSPjx(b2)0IGNsYXNzPSJzbWFsbF90eHQiPjx(b2)0IGNsYXNzPSJkYXJrX3R4$CI+CjxiPjw/PSRuYW1lPz48L2I+PC9(b2)0PjwvZ(9u$D4KPHA+PGZvbnQgY2xhc3M9I(1lZGl1bV90eHQiPjx(b2)0IGNsYXNzPSJkYXJrX3R4$CI+CgoKPD8KaWYgKCRIVFRQX1BPU1RfVkFSU1snc2VuZF9lbWFpbC$$KXsKJG1)b(FtZT0kX1BPU1RbJ0)hbWUnXTsKJG1)ZW1haWw9JF9QT1NUWy$FbWFpbC$$Owokc3Via(Vj$D1z$HJpcHNsYXNoZXMoJF9QT1NUWy$T$WJqZWN0J10pOwokbWVzc2FnZT1z$HJpcHNsYXNoZXMoJF9QT1NUWy$NZXNzYW$lJ10pOwok$GV4$D0iIjsKCglpZiAoKCRteW)hbWUhPSIiKSY(KCRteWVtYWlsIT0iIik(Jigkc3Via(Vj$CE9IiIpJiYoJG1lc3NhZ2UhPSIiKSl7CgkkbWVzc2FnZTI9c3RyX3JlcGxhY2UoIlxuIiwiPGJyPiIsJG1lc3NhZ2UpOwoJJG1lc3NhZ2U9JG1lc3NhZ2UuIlxuXG4qKioqKioqKioqXG)UaGlzIG1lc3NhZ2Ug$2FzIHNlbnQg$G8geW91IHVzaW)nIHRoZSBjb2)0YWN0IGZvc(0gYXQgIi4kc2l0ZV9hZGRyZXNzLiJjb2)0YWN0LyIuJHNob3J0X2)hbWU7CglsaXN0KCR1c2VyT(FtZSwgJG1haWxEb21haW4pID0gc3BsaXQoIkAiLCAkbXllbWFpbCk7IAoJCWl(IChjaGVja2Ruc3JyKCRtYWlsRG9tYWluLCAiTVgiKSkgeyAKCQlAbWFpbCgiJG)hbWU8JGVtYWlsPiIsJHN1Y(plY3QsJG1lc3NhZ2UsIkZyb206ICRteW)hbWUgPCRteWVtYWlsPiIpOwoJCT8+CgkJVGhlIG1lc3NhZ2UgY(Vsb3cg$2FzIHNlbnQg$G8gPD89JG)hbWU/Pi4KCQk8YnI+PGJyPjxiPlN1Y(plY3Q8L2I+PGJyPjw/PSRz$WJqZWN0Pz4KCQk8YnI+PGJyPjxiPk1lc3NhZ2U8L2I+PGJyPjw/PSRtZXNzYW$lMj8+CgkJPC9(b2)0PjwvZ(9u$D48L3A+CgkJPD8gCgkJaW)jbHVkZSgiZGVzaW$uL3JpZ2h0LnBocCIpOwoJCWluY2x1ZGUoI(Rlc2lnbi9(b290ZXIucGhwIik7CgkJZXhp$DsKCQl9CgkJZWxzZSB7CgkJJHRleHQuPSJJbnZhbGlkIGVtYWlsIGFkZHJlc3MuIFBsZWFzZSBpbnB1$CBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuPGJyPiI7CgkJJEVtYWlsPSIiOwoJCX0KCgl9CgoJZWxzZXsKCgkJaWYgKCRteW)hbWU9PSIiKXsKCQkk$GV4$C49IlBsZWFzZSBpbnB1$CB)b3VyIG)hbWUuPGJyPiI7CgkJfQoJCWl(ICgkbXllbWFpbD09IiIpewoJCSR0ZXh0Lj0iUGxlYXNlIGlucHV0IHlv$XIgZW1haWwgYWRkc(Vzcy48YnI+IjsKCQl9CgkJaWYgKCRz$WJqZWN0PT0iIil7CgkJJHRleHQuPSJQbGVhc2UgaW)w$XQg$GhlIHN1Y(plY3Qgb2YgeW91ciBtZXNzYW$lLjxicj4iOwoJCX0KCQlpZiAoJG1lc3NhZ2U9PSIiKXsKCQkk$GV4$C49IlBsZWFzZSBpbnB1$CB)b3VyIG1lc3NhZ2UuPGJyPiI7CgkJfQoKCgoKCgl9Cgp9Cj8+Cjx0YWJsZT48$HI+PHRkPjx(b2)0IGNsYXNzPSJtZWRp$W1f$Hh0Ij48Z(9u$CBjbGFzcz0iZGFya190eHQiPgo8PwoJJGZwPWZvcGVuKCRwaG90bywncicpOwoJaWYoJGZwKXsKCQlpZighZW1w$HkoJHBob3RvKSkgZWNobyAnPGltZyBzc(M9IicuJHBob3RvLiciIGJvc(Rlcj0wIGFsaW$uPWxlZnQ+JzsJCgkJZ(Nsb3NlKCR(cCk7CgkJfQoJZWxzZXsKCWVjaG8gJzxpbWcgc3JjPSIuLi9pbWFnZXMvZGV(YXVs$C)qcGciIGJvc(Rlcj0wIGFsaW$uPWxlZnQ+JzsKCX0JCQkJCgo/Pgo8L2ZvbnQ+PC9(b2)0Pgo8L3RkPjx0ZD4KPGZvbnQgY2xhc3M9I(1lZGl1bV90eHQiPjx(b2)0IGNsYXNzPSJkYXJrX3R4$CI+ClRvIHNlb(QgYW4gZW1haWwg$G8gPD89JG)hbWU/PiBwbGVhc2UgZ(lsbCBv$XQg$GhpcyB(b3JtIGNvbXBsZXRlbHkgYW)kIGNsaWNrIG9uICJTZW)kIi4KPHA+PGZvbnQgY29sb3I9c(VkPjw/PSR0ZXh0Pz48L2ZvbnQ+CjwvZ(9u$D48L2ZvbnQ+Cjwv$GQ+PC90cj48L3RhY(xlPgoKPHA+PGZvc(0gQUNUSU9OPSIiIE1FVEhPRD0iUE9TVCI+Cgo8$GFibGUg$2lk$Gg9IjEwMCUiPgo8$HI+PHRkIGFsaW$uPSJyaW$o$CI+PGZvbnQgY2xhc3M9I(1lZGl1bV90eHQiPjx(b2)0IGNsYXNzPSJkYXJrX3R4$CI+PGI+T(FtZTwvYj48L2ZvbnQ+PC9(b2)0Pjwv$GQ+Cjx0ZD48aW)w$XQgY2xhc3M9I(lucHV0IiB0eXBlPXRleHQgb(FtZT1OYW1lIHNpe(U9MzUg$(Fs$WU9Ijw/cHJpbnQgIiROYW1lIjs/PiI+Cjwv$GQ+Cjwv$HI+PHRyPgo8$GQgYWxpZ249InJpZ2h0Ij48Z(9u$CBjbGFzcz0ibWVkaXVtX3R4$CI+PGZvbnQgY2xhc3M9I(Rhc(tf$Hh0Ij48Yj)FbWFpbCBBZGRyZXNzPC9iPjwvZ(9u$D48L2ZvbnQ+PC90ZD4KPHRkPjxpbnB1$CBjbGFzcz0iaW)w$XQiIHR)cGU9$GV4$CBuYW1lPUVtYWlsIHNpe(U9MzUg$(Fs$WU9Ijw/cHJpbnQgIiRFbWFpbCI7Pz4iPjwv$GQ+Cjwv$HI+Cjx0cj4KPHRkIGFsaW$uPSJyaW$o$CI+PGZvbnQgY2xhc3M9I(1lZGl1bV90eHQiPjx(b2)0IGNsYXNzPSJkYXJrX3R4$CI+PGI+U3Via(Vj$DwvYj48L2ZvbnQ+PC9(b2)0Pjwv$GQ+Cjx0ZD48aW)w$XQgY2xhc3M9I(lucHV0IiB0eXBlPXRleHQgb(FtZT1T$WJqZWN0IHNpe(U9MzUg$(Fs$WU9Ijw/cHJpbnQgIiRT$WJqZWN0Ijs/PiI+Cjwv$GQ+Cjwv$HI+PHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGZvbnQgY2xhc3M9I(1lZGl1bV90eHQiPjx(b2)0IGNsYXNzPSJkYXJrX3R4$CI+PGI+Ck1lc3NhZ2U6PC9iPjwvZ(9u$D48L2ZvbnQ+Cjxicj4KPHRleHRhc(VhIG)hbWU9Ik1lc3NhZ2UiIGNsYXNzPSJ0eHRfaW)w$XQiIGNvbHM9NjAgc(93cz0xNSB3c(FwPW9(Zj48P3ByaW)0ICIkTWVzc2FnZSI7Pz48L3RleHRhc(VhPgo8L3RkPjwv$HI+Cjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaW$uPSJjZW)0ZXIiPjx(b2)0IGNsYXNzPSJtZWRp$W1f$Hh0Ij48Z(9u$CBjbGFzcz0iZGFya190eHQiPgo8Yj)QbGVhc2UgYWxsb3cgMjQg$G8gNDggaG91cnMgZ(9yIGEgc(VzcG9uc2UuPC9iPgo8L2ZvbnQ+PC9(b2)0Pjwv$GQ+Cjwv$HI+Cjx0cj48$GQgY29sc3Bhbj0iMiIgYWxpZ249I(NlbnRlciI+CjxpbnB1$CB0eXBlPWhpZGRlbiBuYW1lPXJlZl9zaXRlIHZhbHVlPSI8P3ByaW)0ICIkc(V(X3Np$GUiOz8+Ij4KPGlucHV0IHR)cGU9InN1Y(1p$CIgb(FtZT0ic2VuZF9lbWFpbCIg$(Fs$WU9IlNlb(QiIGNsYXNzPSJz$WJtaXQiPgo8L2NlbnRlcj48L2Zvc(0+Cjwv$GQ+PC90cj4KPC90YWJsZT4KCgoKCjwvcD4KPCEtLS0tLSBlb(QgZWRp$GluZyBjb3B)IHNlY3Rpb24gLS0tLS0+CgoKCjwhLS0tLS0gY(VnaW4gZWRp$GluZyByaW$o$CBtZW)1IHNlY3Rpb24gLS0tLS0+Cjw/IGluY2x1ZGUoI(Rlc2lnbi9yaW$o$C)waHAiKTs/Pgo8IS0tLS0tIGVuZCByaW$o$CBtZW)1IHNlY3Rpb24gLS0tLS0+Cgo8IS0tLS0tIGJlZ2luIGZvb3RlciBzZWN0aW9uIC0tLS0tPgo8PyBpb(Ns$WRlKCJkZXNpZ24vZ(9v$GVyLnBocCIpOz8+CjwhLS0tLS0gZW)kIGZvb3RlciBzZWN0aW9uIC0tLS0tPgoK