Why Nostr? What is Njump?
2024-01-24 07:05:09

npub1eu…ms6ns on Nostr: video200 ...

video200
data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPnZpZGVvMjAwPC90aXRsZT4KICAgIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDFlbTsKICAgICAgZm9udC1mYW1pbHk6IE5vdG8gU2FuczsKICAgIH0KICAgIGgxIHsKICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgZm9udC1zaXplOiAxLjVlbTsKICAgIH0KICAgICNkZXNjcmlwdGlvbiwKICAgICN0b3JfdGVzdCB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29sb3I6ICM2NjY7CiAgICAgIGxlZnQ6IDE0ZW07CiAgICAgIG1hcmdpbi10b3A6IC4xNGVtOwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgIH0KICAgICN0b3JfdGVzdCB7CiAgICAgIHRvcDogNWVtOwogICAgfQogICAgI3Rvcl90ZXN0LnN1Y2Nlc3MgewogICAgICBjb2xvcjogZ3JlZW47CiAgICB9CiAgICAjdG9yX3Rlc3QuZXJyb3IgewogICAgICBjb2xvcjogeWVsbG93OwogICAgICBiYWNrZ3JvdW5kOiBibGFjazsKICAgIH0KICAgICN0b3JfdGVzdC50ZXN0X2ZhaWwgewogICAgICBjb2xvcjogb3JhbmdlOwogICAgfQogICAgI2xvZyB7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMWVtOwogICAgICB0b3A6IDExZW07CiAgICAgIGJvcmRlcjogLjNlbSBzb2xpZCAjNjY2OwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgICByaWdodDogMWVtOwogICAgICBsZWZ0OiAxZW07CiAgICAgIHBhZGRpbmc6IC41ZW07CiAgICAgIGJhY2tncm91bmQ6ICNlZWU7CiAgICB9CiAgICAjcHJvZ3Jlc3MgewogICAgICBiYWNrZ3JvdW5kOiAjZGRkOwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgfQogICAgI3Byb2dyZXNzYmFyIHsKICAgICAgaGVpZ2h0OiAxLjNlbTsKICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgICAgd2lkdGg6IDAlOwogICAgICBib3JkZXItcmFkaXVzOiAuNGVtOwogICAgfQogICAgI2xvZyA+IGEgewogICAgICBtYXJnaW4tYm90dG9tOiAxZW07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgcCB7CiAgICAgIG1hcmdpbjogMCAwIC41ZW0gMDsKICAgIH0KICAgIHZpZGVvIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgei1pbmRleDogMTsKICAgIH0KICAgICNjYW52YXMsCiAgICB2aWRlbyB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAxZW07CiAgICAgIHJpZ2h0OiAxZW07CiAgICAgIHdpZHRoOiAxMGVtOwogICAgICBoZWlnaHQ6IDZlbTsKICAgIH0KICAgIC5jb2RlIHsKICAgICAgYmFja2dyb3VuZDogI2JiYjsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+Y3JlYXRlIG9uZSBzZWNvbmQgdmlkZW8gY2xpcHMgaW4gYnJvd3NlcjwvcD4KICAgIDxwIGlkPSJ0b3JfdGVzdCI+dG9yIHRlc3Q8L3A+CiAgICA8aDE+dmlkZW8yMDA8L2gxPgogICAgPGZvcm0gaWQ9ImZvcm0iPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9ImZpbGUiIHR5cGU9ImZpbGUiLz4KICAgICAgPC9wPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iZW5jb2RlIiBkaXNhYmxlZD0iMSIgLz4KICAgICAgICA8YnV0dG9uIGlkPSJwdWJsaXNoIiBkaXNhYmxlZD0iMSI+cHVibGlzaDwvYnV0dG9uPgogICAgICA8L3A+CiAgICA8L2Zvcm0+CiAgICA8dmlkZW8gaWQ9InZpZGVvIj48L3ZpZGVvPgogICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGNvbnRyb2xzIGxvb3A9IjEiPjwvdmlkZW8+CiAgICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgogICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgogICAgICA8ZGl2IGlkPSJwcm9ncmVzc2JhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImxvZyI+PGRpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9ub3N0ci10b29sc0AyLjEuNC9saWIvbm9zdHIuYnVuZGxlLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIj4KICAgIGNvbnN0IGFwcF91cmwgPSAiaHR0cDovL2Fnemo1YTRiZTNrZ3A2eXVyaWprNHE3cG0yeWg0YTVucGhkZzR6b3prMzY1eWlyZjdhaHVjdHlkLm9uaW9uIgogICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpCiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKQogICAgY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpCiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpCiAgICBjb25zdCB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIikKICAgIGNvbnN0IHByb2dyZXNzYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzYmFyIikKICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpCiAgICBjb25zdCBtYXhfcHVibGlzaF9zaXplID0gMjYyMTQ0CiAgICBsZXQgZmlsZXMgPSBudWxsCiAgICBsZXQgdmlkZW9fZGF0YV91cmkgPSBudWxsCiAgICBjb25zdCB0b3JfaXBfbGlzdF91cmwgPSAiaHR0cHM6Ly9kZW1vLnN0b3JqLWlwZnMuY29tL2lwZnMvUW1lb0R3aWM5UWpFblhYWG5jSnZqS2l0ek5CUWJLS3hTY1dBbzRKZzV2OTd0SiIKCiAgICBjb25zdCByZWxheXMgPSBbCiAgICAgICJ3czovL294dHJkZXZhdjY0ejY0eWI3eDZyamc0bnR6cWpoZWRtNWI1empxdWx1Z2tuaHpyNDZueTJxYmFkLm9uaW9uIgogICAgXQoKICAgIGNvbnN0IHJlbGF5c19jbGVhcndlYiA9IFsKICAgICAgIndzczovL25vc3RyLnNlbGYtZGV0ZXJtaW5lZC5kZSIKICAgIF0KCiAgICBjb25zdCBldnRfcmVsYXlzID0gWwogICAgICAuLi5yZWxheXMsCiAgICAgICJ3c3M6Ly9yZWxheS5ub3N0ci5iYW5kIgogICAgXQoKICAgIGNvbnN0IGZyYW1lX2R1cmF0aW9uID0gMS8zMAogICAgY29uc3QgZXh0cmFjdF9mcmFtZV9jb3VudCA9IDMwCiAgICBsZXQgdGltZSA9IG51bGwKCiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBmZXRjaCgKICAgICAgImh0dHBzOi8vdW5wa2cuY29tL3dlYm0td2FzbUAwLjQuMS9kaXN0L3dlYm0td29ya2VyLmpzIgogICAgKS50aGVuKHIgPT4gci5hcnJheUJ1ZmZlcigpKQoKICAgIGxldCB3b3JrZXIgPSBudWxsCiAgICBsZXQgZW5jb2RlZF9kYXRhID0gbnVsbAogICAgbGV0IHN0YXJ0X3RpbWUgPSBudWxsCiAgICBsZXQgcmVhZHkgPSBmYWxzZQogICAgbGV0IHZpZGVvX2V2dCA9IG51bGwKICAgIGxldCBub3RlX2V2dCA9IG51bGwKICAgIGxldCBzb2NrZXRzID0gW10KCiAgICBpbmZvKCJjb25uZWN0IikKCiAgICBmdW5jdGlvbiBjb25uZWN0KHJlbGF5cyl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgc29ja2V0cy5wdXNoKC4uLnJlbGF5cy5tYXAociA9PiBuZXcgV2ViU29ja2V0KHIpKSkKCiAgICAgICAgZm9yKGxldCBzb2NrZXQgb2Ygc29ja2V0cyl7CiAgICAgICAgICBzb2NrZXQub25vcGVuID0gYXN5bmMgZnVuY3Rpb24oKXsKICAgICAgICAgICAgaW5mbygiY29ubmVjdGVkICIgKyB0aGlzLnVybCkKICAgICAgICAgICAgLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLmRpc2FibGVkID0gIiIKCiAgICAgICAgICAgIGlmKCFzb2NrZXRzLmZpbmQocyA9PiBzLnJlYWR5U3RhdGUgPT0gMCkpewogICAgICAgICAgICAgIGluZm8oImNvbm5lY3RlZCB0byAiICsgc29ja2V0cy5maWx0ZXIocyA9PiBzLnJlYWR5U3RhdGUgPT0gMSkubGVuZ3RoICsgIiByZWxheXMiKQogICAgICAgICAgICAgIHJlc29sdmUoKQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uKGUpewogICAgICAgICAgICBjb25zdCByZXMgPSBKU09OLnBhcnNlKGUuZGF0YSkKICAgICAgICAgICAgY29uc3QgZXJyb3IgPSAocmVzWzBdID09ICJOT1RJQ0UiICYmIHJlc1sxXSkgfHwgKHJlc1syXSA9PT0gZmFsc2UgJiYgcmVzWzNdKQoKICAgICAgICAgICAgaWYoZXJyb3IpewogICAgICAgICAgICAgIGluZm8oZXJyb3IgKyAiICgiICsgdGhpcy51cmwgKyAiKSIpCiAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihyZXNbMF0gPT0gIk9LIil7CiAgICAgICAgICAgICAgaWYocmVzWzFdID09IHZpZGVvX2V2dC5pZCl7CiAgICAgICAgICAgICAgICBpbmZvKCJwdWJsaXNoIGtpbmQgMSBub3RlIikKICAgICAgICAgICAgICAgIHRoaXMuc2VuZChKU09OLnN0cmluZ2lmeShbIkVWRU5UIiwgbm90ZV9ldnRdKSkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZihyZXNbMV0gPT0gbm90ZV9ldnQuaWQpewogICAgICAgICAgICAgICAgY29uc3QgbmV2ZW50ID0gbWFrZV9uZXZlbnQobm90ZV9ldnQpCiAgICAgICAgICAgICAgICBpbmZvKG1ha2VfbGluayhhcHBfdXJsICsgIi8iICsgbmV2ZW50KSkKICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGluZm8oImNvdWxkIG5vdCBjb25uZWN0IHRvICIgKyB0aGlzLnVybCkKCiAgICAgICAgICAgIGlmKCFzb2NrZXRzLmZpbmQocyA9PiBzLnJlYWR5U3RhdGUgPT0gMCB8fCBzLnJlYWR5U3RhdGUgPT0gMSkpewogICAgICAgICAgICAgIGluZm8oImNvdWxkIG5vdCBjb25uZWN0IHRvIGFueSByZWxheS4gaGF2ZSB5b3Ugc2V0IHVwIHRvciBpbiB5b3VyIGJyb3dzZXIgcHJveHkgc2V0dGluZ3M/IikKICAgICAgICAgICAgICByZWplY3QoKQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgc29ja2V0LmNsb3NlID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgaW5mbygiY29ubmVjdGlvbiBjbG9zZWQ6ICIgKyB0aGlzLnVybCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm0iKS5yZXNldCgpCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJmb3JtIGlucHV0LCBmb3JtIGJ1dHRvbiIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSAiMSIpCgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5vbmNoYW5nZSA9IGZ1bmN0aW9uKCl7CiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKS5mb3JFYWNoKGVsID0+IGVsLmRpc2FibGVkID0gZmFsc2UpCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2giKS5vbmNsaWNrID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZQogICAgICBwdWJsaXNoKCkKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVfdmlkZW9fZXZ0KHZpZGVvX2RhdGFfdXJpLCBzayl7CiAgICAgIHJldHVybiBOb3N0clRvb2xzLmZpbmFsaXplRXZlbnQoewogICAgICAgIGtpbmQ6IDEwNjMsCiAgICAgICAgY3JlYXRlZF9hdDogcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwLCAxMCksCiAgICAgICAgY29udGVudDogInZpZGVvIiwKICAgICAgICB0YWdzOiBbCiAgICAgICAgICBbInVybCIsIHZpZGVvX2RhdGFfdXJpXSwKICAgICAgICAgIFsibSIsICJ2aWRlby93ZWJtIl0KICAgICAgICBdCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VfbmV2ZW50KGV2dCl7CiAgICAgIGNvbnN0IG5ldmVudF9vYmogPSBPYmplY3QuY3JlYXRlKGV2dCkKICAgICAgbmV2ZW50X29iai5yZWxheXMgPSBldnRfcmVsYXlzCiAgICAgIHJldHVybiBOb3N0clRvb2xzLm5pcDE5Lm5ldmVudEVuY29kZShuZXZlbnRfb2JqKQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKXsKICAgICAgY29uc3QgdmlkZW9fbmV2ZW50ID0gbWFrZV9uZXZlbnQodmlkZW9fZXZ0KQoKICAgICAgcmV0dXJuIE5vc3RyVG9vbHMuZmluYWxpemVFdmVudCh7CiAgICAgICAga2luZDogMSwKICAgICAgICBjcmVhdGVkX2F0OiBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsIDEwKSwKICAgICAgICBjb250ZW50OiAidmlkZW9cbm5vc3RyOiIgKyB2aWRlb19uZXZlbnQsCiAgICAgICAgdGFnczogW10sCiAgICAgICAgcmVsYXlzOiBldnRfcmVsYXlzCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2goKXsKICAgICAgc29ja2V0cy5zcGxpY2UoMCkKCiAgICAgIGluZm8oImNvbm5lY3QgdG8gdG9yIHJlbGF5cyIpCiAgICAgIGF3YWl0IGNvbm5lY3QocmVsYXlzKQoKICAgICAgaWYoY2hlY2tfdG9yKCkpewogICAgICAgIGluZm8oImNvbm5lY3QgdG8gY2xlYXJ3ZWIgcmVsYXlzIHRocm91Z2ggdG9yIikKICAgICAgICBhd2FpdCBjb25uZWN0KHJlbGF5c19jbGVhcndlYikKICAgICAgfQoKICAgICAgZm9yKGxldCBzb2NrZXQgb2Ygc29ja2V0cyl7CiAgICAgICAgaWYoc29ja2V0LnJlYWR5U3RhdGUgPT09IDEpewogICAgICAgICAgaW5mbygicHVibGlzaCBraW5kIDEwNjMgZXZlbnQgdG8gIiArIHJlbGF5c1swXSkKICAgICAgICAgIHNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KFsiRVZFTlQiLCB2aWRlb19ldnRdKSkKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB2aWRlbzIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgdmlkZW8yLnBhdXNlKCkKICAgICAgcHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSAiMC41JSIKICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSB0cnVlKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikudmFsdWUgPSAiZW5jb2RpbmciCiAgICAgIGZpbGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5maWxlcwogICAgICBzdGFydCgpCiAgICB9CgogICAgZnVuY3Rpb24gYmxvYlRvRGF0YVVSTChibG9iLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgdmFyIGEgPSBuZXcgRmlsZVJlYWRlcigpCiAgICAgICAgYS5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICByZXNvbHZlKGUudGFyZ2V0LnJlc3VsdCkKICAgICAgICB9CiAgICAgICAgYS5yZWFkQXNEYXRhVVJMKGJsb2IpCiAgICAgIH0pCiAgICB9CgogICAgZnVuY3Rpb24gaW5mbyhkYXRhKXsKICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikKCiAgICAgIGlmKHR5cGVvZiBkYXRhID09ICJzdHJpbmciKXsKICAgICAgICBlbC5pbm5lclRleHQgPSBkYXRhCiAgICAgIH1lbHNlewogICAgICAgIGVsLmFwcGVuZChkYXRhKQogICAgICB9CgogICAgICBsb2cuYXBwZW5kKGVsKQogICAgICBsb2cuc2Nyb2xsVG8oMCwgMWU2KQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NfdmlkZW8oKXsKICAgICAgaW5mbygicHJvY2VzcyB2aWRlbyIpCiAgICAgIGxldCBmcmFtZV9jb3VudCA9IDAKCiAgICAgIHZpZGVvLm9uc2Vla2VkID0gZnVuY3Rpb24oZSkgewogICAgICAgIGZyYW1lX2NvdW50KysKICAgICAgICBpbmZvKCJleHRyYWN0IGZyYW1lICIgKyBmcmFtZV9jb3VudCArICIgLyAiICsgZXh0cmFjdF9mcmFtZV9jb3VudCkKCiAgICAgICAgY3R4LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKICAgICAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgaWYoZnJhbWVfY291bnQgPCBleHRyYWN0X2ZyYW1lX2NvdW50KXsKICAgICAgICAgIHRpbWUgKz0gZnJhbWVfZHVyYXRpb24KICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCgwLCAodGltZSA8IDAgPyB0aGlzLmR1cmF0aW9uIDogMCkgKyB0aW1lKSwgdGhpcy5kdXJhdGlvbikKICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShpbWFnZURhdGEuZGF0YS5idWZmZXIsIFtpbWFnZURhdGEuZGF0YS5idWZmZXJdKQogICAgICAgIH1lbHNlewogICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKG51bGwpCiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdG90YWxfdGltZShzdGFydCl7CiAgICAgIHJldHVybiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydCkgLyAxMDAwCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlQnVmZmVyVVJMKGJ1ZmZlciwgdHlwZSA9ICcnKSB7CiAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtidWZmZXJdLCB7dHlwZX0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYWtlX2xpbmsodGV4dCwgaHJlZil7CiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKICAgICAgbGluay5pbm5lclRleHQgPSB0ZXh0CiAgICAgIGxpbmsuaHJlZiA9IGhyZWYgfHwgdGV4dAogICAgICByZXR1cm4gbGluawogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHNob3dfZGF0YV91cmkoYmxvYil7CiAgICAgIGxldCBibG9iX3VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikKICAgICAgdmlkZW9fZGF0YV91cmkgPSBhd2FpdCBibG9iVG9EYXRhVVJMKGJsb2IpCgogICAgICBpbmZvKCJlbmNvZGluZyBmaW5pc2hlZCAoc2l6ZTogIiArIChwYXJzZUludChibG9iLnNpemUgLyAxMDAsIDEwKSAvIDEwKSArICIga0IsIGJhc2U2NCBzaXplOiAiICsgdmlkZW9fZGF0YV91cmkubGVuZ3RoICsgIiBCLCBkdXJhdGlvbjogIiArIChwYXJzZUludCh0b3RhbF90aW1lKHN0YXJ0X3RpbWUpICogMTAsIDEwKSAvIDEwKSArCiAgICAgICAgICAgICIgcywgc3BlZWQ6ICIgKyAocGFyc2VJbnQodG90YWxfdGltZShzdGFydF90aW1lKSAvIGV4dHJhY3RfZnJhbWVfY291bnQgKiAxMCwgMTApIC8gMTApICArIiBzIC8gZnJhbWUpIikKCiAgICAgIGluZm8obWFrZV9saW5rKGJsb2JfdXJsKSkKCiAgICAgIGlmKHZpZGVvX2RhdGFfdXJpLmxlbmd0aCA+IG1heF9wdWJsaXNoX3NpemUpewogICAgICAgIGluZm8oImV2ZW50IGlzIHRvbyBiaWcgdG8gcHVibGlzaCIpCiAgICAgICAgaW5mbygibWF4IHNpemU6ICIgKyBtYXhfcHVibGlzaF9zaXplICsgIiBCIikKICAgICAgfWVsc2V7CiAgICAgICAgY29uc3Qgc2sgPSBOb3N0clRvb2xzLmdlbmVyYXRlU2VjcmV0S2V5KCkKICAgICAgICB2aWRlb19ldnQgPSBjcmVhdGVfdmlkZW9fZXZ0KHZpZGVvX2RhdGFfdXJpLCBzaykKICAgICAgICBub3RlX2V2dCA9IGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKQogICAgICAgIHdpbmRvdy52aWRlb19ldnQgPSB2aWRlb19ldnQKICAgICAgICB3aW5kb3cubm90ZV9ldnQgPSBub3RlX2V2dAogICAgICB9CgogICAgICB2aWRlbzIuc3JjID0gYmxvYl91cmwKICAgICAgdmlkZW8yLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICB2aWRlbzIucGxheSgpCgogICAgICBwcm9ncmVzc2Jhci5zdHlsZS53aWR0aCA9ICIxMDAlIgogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLnJlc2V0KCkKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Ym1pdCIpLnZhbHVlID0gImVuY29kZSIKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5kaXNhYmxlZCA9IGZhbHNlCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdWJsaXNoIikuZGlzYWJsZWQgPSBmYWxzZQogICAgfQoKICAgIGZ1bmN0aW9uIHdvcmtlcl9tZXNzYWdlKGUpewogICAgICBpZighZS5kYXRhKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSAhPSBudWxsICYmIHR5cGVvZiBlLmRhdGEgPT0gIm9iamVjdCIgJiYgZS5kYXRhLmJ5dGVMZW5ndGggPiAwKXsKICAgICAgICBlbmNvZGVkX2RhdGEucHVzaChlLmRhdGEpCiAgICAgICAgaW5mbygiZW5jb2RlICIgKyBlbmNvZGVkX2RhdGEubGVuZ3RoICsgIiAvICIgKyBleHRyYWN0X2ZyYW1lX2NvdW50KQogICAgICAgIHByb2dyZXNzYmFyLnN0eWxlLndpZHRoID0gcGFyc2VJbnQoKGVuY29kZWRfZGF0YS5sZW5ndGggLyBleHRyYWN0X2ZyYW1lX2NvdW50KSAqIDEwMCwgMTApICsgIiUiCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSA9PSAiUkVBRFkiKXsKICAgICAgICBpbmZvKCJyZWFkeSIsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsKICAgICAgICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCiAgICAgICAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCiAgICAgICAgICByZWFsdGltZTogdHJ1ZSwKICAgICAgICAgIGJpdHJhdGU6IDIwMAogICAgICAgIH0pCgogICAgICAgIHJlYWR5ID0gdHJ1ZQogICAgICAgIHByb2Nlc3NfdmlkZW8oKQogICAgICB9CiAgICAgIGVsc2UgaWYocmVhZHkpewogICAgICAgIGlmKGUuZGF0YS5ieXRlTGVuZ3RoID09IDApewogICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCiAgICAgICAgICByZWFkeSA9IGZhbHNlCiAgICAgICAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKGVuY29kZWRfZGF0YSwgeyB0eXBlOiAndmlkZW8vd2VibScgfSkKICAgICAgICAgIHNob3dfZGF0YV91cmkoYmxvYikKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkX3ZpZGVvKCl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlc1swXSkKCiAgICAgICAgdmlkZW8ub25lcnJvciA9IGZ1bmN0aW9uKGUpewogICAgICAgICAgcmVqZWN0KGUpCiAgICAgICAgfQoKICAgICAgICB2aWRlby5vbmxvYWRlZG1ldGFkYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBjYW52YXMud2lkdGggPSAxMjgwCiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQgLyB2aWRlby52aWRlb1dpZHRoICogY2FudmFzLndpZHRoCiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgKHRpbWUgPCAwID8gdGhpcy5kdXJhdGlvbiA6IDApICsgdGltZSksIHRoaXMuZHVyYXRpb24pCiAgICAgICAgICByZXNvbHZlKCkKICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tfdG9yKCl7CiAgICAgIGxldCBteV9pcCA9IG51bGwKCiAgICAgIHRyeXsKICAgICAgICBteV9pcCA9IGF3YWl0IChhd2FpdCBmZXRjaCgiaHR0cDovL2FwaS5pcGlmeS5vcmciKSkudGV4dCgpCiAgICAgICAgY29uc3QgaXBfbGlzdCA9IGF3YWl0IChhd2FpdCBmZXRjaCh0b3JfaXBfbGlzdF91cmwpKS50ZXh0KCkKICAgICAgICBjb25zdCB0b3JfdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3JfdGVzdCIpCgogICAgICAgIHJldHVybiBbaXBfbGlzdC5pbmRleE9mKG15X2lwKSAhPT0gLTEsIG15X2lwXQogICAgICB9Y2F0Y2goZSl7CiAgICAgICAgcmV0dXJuIFtudWxsLCBteV9pcF0KICAgICAgfQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZV90b3Jfc3RhdHVzKCl7CiAgICAgIHRvcl90ZXN0LmlubmVySFRNTCA9ICJjaGVja2luZyB0b3IiCiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNoZWNrX3RvcigpCgogICAgICBpZihyZXNbMF0gPT09IHRydWUpewogICAgICAgIGluZm8oImlwOiAiICsgcmVzWzFdICsgIiBpcyBrbm93biB0b3IgZXhpdCBub2RlIikKICAgICAgICB0b3JfdGVzdC5pbm5lckhUTUwgPSAidG9yIG9rIgogICAgICAgIHRvcl90ZXN0LmNsYXNzTGlzdC5hZGQoInN1Y2Nlc3MiKQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlIikuZGlzYWJsZWQgPSBmYWxzZQogICAgICB9ZWxzZSBpZihyZXNbMF0gPT09IGZhbHNlKXsKICAgICAgICBpbmZvKCJ5b3VyIGlwOiAiICsgcmVzWzFdKQogICAgICAgIHRvcl90ZXN0LmlubmVySFRNTCA9ICJ5b3UgYXJlIG5vdCB1c2luZyB0b3IiCiAgICAgICAgdG9yX3Rlc3QuY2xhc3NMaXN0LmFkZCgiZXJyb3IiKQogICAgICB9ZWxzZXsKICAgICAgICB0b3JfdGVzdC5pbm5lckhUTUwgPSAidGVzdCBmYWlsZWQgKHlvdSBtYXkgYmUgdXNpbmcgdG9yKSIKICAgICAgICB0b3JfdGVzdC5jbGFzc0xpc3QuYWRkKCJ0ZXN0X2ZhaWwiKQogICAgICB9CiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKXsKICAgICAgaW5mbygic3RhcnQiKQogICAgICB3b3JrZXIgPSBuZXcgV29ya2VyKAogICAgICAgIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogInRleHQvamF2YXNjcmlwdCIgfSkpCiAgICAgICkKCiAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSB3b3JrZXJfbWVzc2FnZQogICAgICBlbmNvZGVkX2RhdGEgPSBbXQogICAgICBub3RlX2V2dCA9IG51bGwKICAgICAgc3RhcnRfdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpCiAgICAgIHRpbWUgPSAxNQoKICAgICAgdHJ5ewogICAgICAgIGF3YWl0IGxvYWRfdmlkZW8oKQogICAgICB9Y2F0Y2goZSl7CiAgICAgICAgaW5mbygidW5zdXBwb3J0ZWQgbWVkaWEgZm9ybWF0LiB0cnkgaDI2NCAobXA0KSwgdnA4ICh3ZWJtKSBvciB2cDkgKHdlYm0pIikKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgaW5mbygiZG93bmxvYWQgd2VibS13YXNtLndhc20iKQogICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImh0dHBzOi8vdW5wa2cuY29tL3dlYm0td2FzbUAwLjQuMS9kaXN0L3dlYm0td2FzbS53YXNtIikKICAgIH0KCiAgICB1cGRhdGVfdG9yX3N0YXR1cygpCiAgICA8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4K
Author Public Key
npub1eu502ceyh3vhd3ejy96yywuaev6hjsy0fn6n35zmlzdwnst75zfshms6ns