{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\thread-loader\\dist\\cjs.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\quill\\modules\\syntax.js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\quill\\modules\\syntax.js","mtime":1787309795815},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\babel.config.js","mtime":1787567871334},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1787309791954},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICJDOi9Vc2Vycy9BZG1pbi9EZXNrdG9wL2VkdWNhdGlvbi9mcm9udGVuZC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiOwppbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiOwppbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gIkM6L1VzZXJzL0FkbWluL0Rlc2t0b3AvZWR1Y2F0aW9uL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyI7CmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIjsKaW1wb3J0IF9jYWxsU3VwZXIgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NhbGxTdXBlci5qcyI7CmltcG9ydCBfaW5oZXJpdHMgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIjsKaW1wb3J0IF9zdXBlclByb3BHZXQgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3N1cGVyUHJvcEdldC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmVycm9yLmNhdXNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLndlYWstbWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7CmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7CmltcG9ydCB7IENsYXNzQXR0cmlidXRvciwgU2NvcGUgfSBmcm9tICdwYXJjaG1lbnQnOwppbXBvcnQgSW5saW5lIGZyb20gJy4uL2Jsb3RzL2lubGluZS5qcyc7CmltcG9ydCBRdWlsbCBmcm9tICcuLi9jb3JlL3F1aWxsLmpzJzsKaW1wb3J0IE1vZHVsZSBmcm9tICcuLi9jb3JlL21vZHVsZS5qcyc7CmltcG9ydCB7IGJsb2NrRGVsdGEgfSBmcm9tICcuLi9ibG90cy9ibG9jay5qcyc7CmltcG9ydCBCcmVha0Jsb3QgZnJvbSAnLi4vYmxvdHMvYnJlYWsuanMnOwppbXBvcnQgQ3Vyc29yQmxvdCBmcm9tICcuLi9ibG90cy9jdXJzb3IuanMnOwppbXBvcnQgVGV4dEJsb3QsIHsgZXNjYXBlVGV4dCB9IGZyb20gJy4uL2Jsb3RzL3RleHQuanMnOwppbXBvcnQgQ29kZUJsb2NrLCB7IENvZGVCbG9ja0NvbnRhaW5lciB9IGZyb20gJy4uL2Zvcm1hdHMvY29kZS5qcyc7CmltcG9ydCB7IHRyYXZlcnNlIH0gZnJvbSAnLi9jbGlwYm9hcmQuanMnOwp2YXIgVG9rZW5BdHRyaWJ1dG9yID0gbmV3IENsYXNzQXR0cmlidXRvcignY29kZS10b2tlbicsICdobGpzJywgewogIHNjb3BlOiBTY29wZS5JTkxJTkUKfSk7CnZhciBDb2RlVG9rZW4gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9JbmxpbmUpIHsKICBmdW5jdGlvbiBDb2RlVG9rZW4oc2Nyb2xsLCBkb21Ob2RlLCB2YWx1ZSkgewogICAgdmFyIF90aGlzOwogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvZGVUb2tlbik7CiAgICAvLyBAdHMtZXhwZWN0LWVycm9yCiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQ29kZVRva2VuLCBbc2Nyb2xsLCBkb21Ob2RlLCB2YWx1ZV0pOwogICAgVG9rZW5BdHRyaWJ1dG9yLmFkZChfdGhpcy5kb21Ob2RlLCB2YWx1ZSk7CiAgICByZXR1cm4gX3RoaXM7CiAgfQogIF9pbmhlcml0cyhDb2RlVG9rZW4sIF9JbmxpbmUpOwogIHJldHVybiBfY3JlYXRlQ2xhc3MoQ29kZVRva2VuLCBbewogICAga2V5OiAiZm9ybWF0IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXQoX2Zvcm1hdCwgdmFsdWUpIHsKICAgICAgaWYgKF9mb3JtYXQgIT09IENvZGVUb2tlbi5ibG90TmFtZSkgewogICAgICAgIF9zdXBlclByb3BHZXQoQ29kZVRva2VuLCAiZm9ybWF0IiwgdGhpcywgMykoW19mb3JtYXQsIHZhbHVlXSk7CiAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHsKICAgICAgICBUb2tlbkF0dHJpYnV0b3IuYWRkKHRoaXMuZG9tTm9kZSwgdmFsdWUpOwogICAgICB9IGVsc2UgewogICAgICAgIFRva2VuQXR0cmlidXRvci5yZW1vdmUodGhpcy5kb21Ob2RlKTsKICAgICAgICB0aGlzLmRvbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnN0YXRpY3MuY2xhc3NOYW1lKTsKICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogIm9wdGltaXplIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBvcHRpbWl6ZSgpIHsKICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICBfc3VwZXJQcm9wR2V0KENvZGVUb2tlbiwgIm9wdGltaXplIiwgdGhpcywgMykoYXJndW1lbnRzKTsKICAgICAgaWYgKCFUb2tlbkF0dHJpYnV0b3IudmFsdWUodGhpcy5kb21Ob2RlKSkgewogICAgICAgIHRoaXMudW53cmFwKCk7CiAgICAgIH0KICAgIH0KICB9XSwgW3sKICAgIGtleTogImZvcm1hdHMiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGZvcm1hdHMobm9kZSwgc2Nyb2xsKSB7CiAgICAgIHdoaWxlIChub2RlICE9IG51bGwgJiYgbm9kZSAhPT0gc2Nyb2xsLmRvbU5vZGUpIHsKICAgICAgICBpZiAobm9kZS5jbGFzc0xpc3QgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoQ29kZUJsb2NrLmNsYXNzTmFtZSkpIHsKICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgICAgIHJldHVybiBfc3VwZXJQcm9wR2V0KENvZGVUb2tlbiwgImZvcm1hdHMiLCB0aGlzLCAyKShbbm9kZSwgc2Nyb2xsXSk7CiAgICAgICAgfQogICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9CiAgfV0pOwp9KElubGluZSk7CkNvZGVUb2tlbi5ibG90TmFtZSA9ICdjb2RlLXRva2VuJzsKQ29kZVRva2VuLmNsYXNzTmFtZSA9ICdxbC10b2tlbic7CnZhciBTeW50YXhDb2RlQmxvY2sgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db2RlQmxvY2spIHsKICBmdW5jdGlvbiBTeW50YXhDb2RlQmxvY2soKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3ludGF4Q29kZUJsb2NrKTsKICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFN5bnRheENvZGVCbG9jaywgYXJndW1lbnRzKTsKICB9CiAgX2luaGVyaXRzKFN5bnRheENvZGVCbG9jaywgX0NvZGVCbG9jayk7CiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhTeW50YXhDb2RlQmxvY2ssIFt7CiAgICBrZXk6ICJmb3JtYXQiLAogICAgdmFsdWU6CiAgICAvLyBTeW50YXggbW9kdWxlIHdpbGwgcmVnaXN0ZXIKCiAgICBmdW5jdGlvbiBmb3JtYXQobmFtZSwgdmFsdWUpIHsKICAgICAgaWYgKG5hbWUgPT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSAmJiB2YWx1ZSkgewogICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgICB0aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWxhbmd1YWdlJywgdmFsdWUpOwogICAgICB9IGVsc2UgewogICAgICAgIF9zdXBlclByb3BHZXQoU3ludGF4Q29kZUJsb2NrLCAiZm9ybWF0IiwgdGhpcywgMykoW25hbWUsIHZhbHVlXSk7CiAgICAgIH0KICAgIH0KICB9LCB7CiAgICBrZXk6ICJyZXBsYWNlV2l0aCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gcmVwbGFjZVdpdGgobmFtZSwgdmFsdWUpIHsKICAgICAgdGhpcy5mb3JtYXRBdCgwLCB0aGlzLmxlbmd0aCgpLCBDb2RlVG9rZW4uYmxvdE5hbWUsIGZhbHNlKTsKICAgICAgcmV0dXJuIF9zdXBlclByb3BHZXQoU3ludGF4Q29kZUJsb2NrLCAicmVwbGFjZVdpdGgiLCB0aGlzLCAzKShbbmFtZSwgdmFsdWVdKTsKICAgIH0KICB9XSwgW3sKICAgIGtleTogImNyZWF0ZSIsCiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlKHZhbHVlKSB7CiAgICAgIHZhciBkb21Ob2RlID0gX3N1cGVyUHJvcEdldChTeW50YXhDb2RlQmxvY2ssICJjcmVhdGUiLCB0aGlzLCAyKShbdmFsdWVdKTsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKICAgICAgICBkb21Ob2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1sYW5ndWFnZScsIHZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gZG9tTm9kZTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJmb3JtYXRzIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRzKGRvbU5vZGUpIHsKICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICByZXR1cm4gZG9tTm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGFuZ3VhZ2UnKSB8fCAncGxhaW4nOwogICAgfQogIH0sIHsKICAgIGtleTogInJlZ2lzdGVyIiwKICAgIHZhbHVlOiBmdW5jdGlvbiByZWdpc3RlcigpIHt9CiAgfV0pOwp9KENvZGVCbG9jayk7CnZhciBTeW50YXhDb2RlQmxvY2tDb250YWluZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db2RlQmxvY2tDb250YWluZXIpIHsKICBmdW5jdGlvbiBTeW50YXhDb2RlQmxvY2tDb250YWluZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3ludGF4Q29kZUJsb2NrQ29udGFpbmVyKTsKICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFN5bnRheENvZGVCbG9ja0NvbnRhaW5lciwgYXJndW1lbnRzKTsKICB9CiAgX2luaGVyaXRzKFN5bnRheENvZGVCbG9ja0NvbnRhaW5lciwgX0NvZGVCbG9ja0NvbnRhaW5lcik7CiAgcmV0dXJuIF9jcmVhdGVDbGFzcyhTeW50YXhDb2RlQmxvY2tDb250YWluZXIsIFt7CiAgICBrZXk6ICJhdHRhY2giLAogICAgdmFsdWU6IGZ1bmN0aW9uIGF0dGFjaCgpIHsKICAgICAgX3N1cGVyUHJvcEdldChTeW50YXhDb2RlQmxvY2tDb250YWluZXIsICJhdHRhY2giLCB0aGlzLCAzKShbXSk7CiAgICAgIHRoaXMuZm9yY2VOZXh0ID0gZmFsc2U7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgdGhpcy5zY3JvbGwuZW1pdE1vdW50KHRoaXMpOwogICAgfQogIH0sIHsKICAgIGtleTogImZvcm1hdCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0KG5hbWUsIHZhbHVlKSB7CiAgICAgIGlmIChuYW1lID09PSBTeW50YXhDb2RlQmxvY2suYmxvdE5hbWUpIHsKICAgICAgICB0aGlzLmZvcmNlTmV4dCA9IHRydWU7CiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgICAgY2hpbGQuZm9ybWF0KG5hbWUsIHZhbHVlKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogImZvcm1hdEF0IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRBdChpbmRleCwgbGVuZ3RoLCBuYW1lLCB2YWx1ZSkgewogICAgICBpZiAobmFtZSA9PT0gU3ludGF4Q29kZUJsb2NrLmJsb3ROYW1lKSB7CiAgICAgICAgdGhpcy5mb3JjZU5leHQgPSB0cnVlOwogICAgICB9CiAgICAgIF9zdXBlclByb3BHZXQoU3ludGF4Q29kZUJsb2NrQ29udGFpbmVyLCAiZm9ybWF0QXQiLCB0aGlzLCAzKShbaW5kZXgsIGxlbmd0aCwgbmFtZSwgdmFsdWVdKTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJoaWdobGlnaHQiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGhpZ2hsaWdodChfaGlnaGxpZ2h0KSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICB2YXIgZm9yY2VkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTsKICAgICAgaWYgKHRoaXMuY2hpbGRyZW4uaGVhZCA9PSBudWxsKSByZXR1cm47CiAgICAgIHZhciBub2RlcyA9IEFycmF5LmZyb20odGhpcy5kb21Ob2RlLmNoaWxkTm9kZXMpLmZpbHRlcihmdW5jdGlvbiAobm9kZSkgewogICAgICAgIHJldHVybiBub2RlICE9PSBfdGhpczIudWlOb2RlOwogICAgICB9KTsKICAgICAgdmFyIHRleHQgPSAiIi5jb25jYXQobm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgcmV0dXJuIG5vZGUudGV4dENvbnRlbnQ7CiAgICAgIH0pLmpvaW4oJ1xuJyksICJcbiIpOwogICAgICB2YXIgbGFuZ3VhZ2UgPSBTeW50YXhDb2RlQmxvY2suZm9ybWF0cyh0aGlzLmNoaWxkcmVuLmhlYWQuZG9tTm9kZSk7CiAgICAgIGlmIChmb3JjZWQgfHwgdGhpcy5mb3JjZU5leHQgfHwgdGhpcy5jYWNoZWRUZXh0ICE9PSB0ZXh0KSB7CiAgICAgICAgaWYgKHRleHQudHJpbSgpLmxlbmd0aCA+IDAgfHwgdGhpcy5jYWNoZWRUZXh0ID09IG51bGwpIHsKICAgICAgICAgIHZhciBvbGREZWx0YSA9IHRoaXMuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uIChkZWx0YSwgY2hpbGQpIHsKICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgICAgICByZXR1cm4gZGVsdGEuY29uY2F0KGJsb2NrRGVsdGEoY2hpbGQsIGZhbHNlKSk7CiAgICAgICAgICB9LCBuZXcgRGVsdGEoKSk7CiAgICAgICAgICB2YXIgZGVsdGEgPSBfaGlnaGxpZ2h0KHRleHQsIGxhbmd1YWdlKTsKICAgICAgICAgIG9sZERlbHRhLmRpZmYoZGVsdGEpLnJlZHVjZShmdW5jdGlvbiAoaW5kZXgsIF9yZWYpIHsKICAgICAgICAgICAgdmFyIHJldGFpbiA9IF9yZWYucmV0YWluLAogICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIC8vIFNob3VsZCBiZSBhbGwgcmV0YWlucwogICAgICAgICAgICBpZiAoIXJldGFpbikgcmV0dXJuIGluZGV4OwogICAgICAgICAgICBpZiAoYXR0cmlidXRlcykgewogICAgICAgICAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGZvcm1hdCkgewogICAgICAgICAgICAgICAgaWYgKFtTeW50YXhDb2RlQmxvY2suYmxvdE5hbWUsIENvZGVUb2tlbi5ibG90TmFtZV0uaW5jbHVkZXMoZm9ybWF0KSkgewogICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yCiAgICAgICAgICAgICAgICAgIF90aGlzMi5mb3JtYXRBdChpbmRleCwgcmV0YWluLCBmb3JtYXQsIGF0dHJpYnV0ZXNbZm9ybWF0XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgICAgICByZXR1cm4gaW5kZXggKyByZXRhaW47CiAgICAgICAgICB9LCAwKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5jYWNoZWRUZXh0ID0gdGV4dDsKICAgICAgICB0aGlzLmZvcmNlTmV4dCA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfSwgewogICAga2V5OiAiaHRtbCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gaHRtbChpbmRleCwgbGVuZ3RoKSB7CiAgICAgIHZhciBfdGhpcyRjaGlsZHJlbiRmaW5kID0gdGhpcy5jaGlsZHJlbi5maW5kKGluZGV4KSwKICAgICAgICBfdGhpcyRjaGlsZHJlbiRmaW5kMiA9IF9zbGljZWRUb0FycmF5KF90aGlzJGNoaWxkcmVuJGZpbmQsIDEpLAogICAgICAgIGNvZGVCbG9jayA9IF90aGlzJGNoaWxkcmVuJGZpbmQyWzBdOwogICAgICB2YXIgbGFuZ3VhZ2UgPSBjb2RlQmxvY2sgPyBTeW50YXhDb2RlQmxvY2suZm9ybWF0cyhjb2RlQmxvY2suZG9tTm9kZSkgOiAncGxhaW4nOwogICAgICByZXR1cm4gIjxwcmUgZGF0YS1sYW5ndWFnZT1cIiIuY29uY2F0KGxhbmd1YWdlLCAiXCI+XG4iKS5jb25jYXQoZXNjYXBlVGV4dCh0aGlzLmNvZGUoaW5kZXgsIGxlbmd0aCkpLCAiXG48L3ByZT4iKTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICB2YWx1ZTogZnVuY3Rpb24gb3B0aW1pemUoY29udGV4dCkgewogICAgICBfc3VwZXJQcm9wR2V0KFN5bnRheENvZGVCbG9ja0NvbnRhaW5lciwgIm9wdGltaXplIiwgdGhpcywgMykoW2NvbnRleHRdKTsKICAgICAgaWYgKHRoaXMucGFyZW50ICE9IG51bGwgJiYgdGhpcy5jaGlsZHJlbi5oZWFkICE9IG51bGwgJiYgdGhpcy51aU5vZGUgIT0gbnVsbCkgewogICAgICAgIHZhciBsYW5ndWFnZSA9IFN5bnRheENvZGVCbG9jay5mb3JtYXRzKHRoaXMuY2hpbGRyZW4uaGVhZC5kb21Ob2RlKTsKICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yCiAgICAgICAgaWYgKGxhbmd1YWdlICE9PSB0aGlzLnVpTm9kZS52YWx1ZSkgewogICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgICAgdGhpcy51aU5vZGUudmFsdWUgPSBsYW5ndWFnZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9XSk7Cn0oQ29kZUJsb2NrQ29udGFpbmVyKTsKU3ludGF4Q29kZUJsb2NrQ29udGFpbmVyLmFsbG93ZWRDaGlsZHJlbiA9IFtTeW50YXhDb2RlQmxvY2tdOwpTeW50YXhDb2RlQmxvY2sucmVxdWlyZWRDb250YWluZXIgPSBTeW50YXhDb2RlQmxvY2tDb250YWluZXI7ClN5bnRheENvZGVCbG9jay5hbGxvd2VkQ2hpbGRyZW4gPSBbQ29kZVRva2VuLCBDdXJzb3JCbG90LCBUZXh0QmxvdCwgQnJlYWtCbG90XTsKdmFyIGhpZ2hsaWdodCA9IGZ1bmN0aW9uIGhpZ2hsaWdodChsaWIsIGxhbmd1YWdlLCB0ZXh0KSB7CiAgaWYgKHR5cGVvZiBsaWIudmVyc2lvblN0cmluZyA9PT0gJ3N0cmluZycpIHsKICAgIHZhciBtYWpvclZlcnNpb24gPSBsaWIudmVyc2lvblN0cmluZy5zcGxpdCgnLicpWzBdOwogICAgaWYgKHBhcnNlSW50KG1ham9yVmVyc2lvbiwgMTApID49IDExKSB7CiAgICAgIHJldHVybiBsaWIuaGlnaGxpZ2h0KHRleHQsIHsKICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UKICAgICAgfSkudmFsdWU7CiAgICB9CiAgfQogIHJldHVybiBsaWIuaGlnaGxpZ2h0KGxhbmd1YWdlLCB0ZXh0KS52YWx1ZTsKfTsKdmFyIFN5bnRheCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX01vZHVsZSkgewogIGZ1bmN0aW9uIFN5bnRheChxdWlsbCwgb3B0aW9ucykgewogICAgdmFyIF90aGlzMzsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTeW50YXgpOwogICAgX3RoaXMzID0gX2NhbGxTdXBlcih0aGlzLCBTeW50YXgsIFtxdWlsbCwgb3B0aW9uc10pOwogICAgaWYgKF90aGlzMy5vcHRpb25zLmhsanMgPT0gbnVsbCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5bnRheCBtb2R1bGUgcmVxdWlyZXMgaGlnaGxpZ2h0LmpzLiBQbGVhc2UgaW5jbHVkZSB0aGUgbGlicmFyeSBvbiB0aGUgcGFnZSBiZWZvcmUgUXVpbGwuJyk7CiAgICB9CiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEZpeCBtZSBsYXRlcgogICAgX3RoaXMzLmxhbmd1YWdlcyA9IF90aGlzMy5vcHRpb25zLmxhbmd1YWdlcy5yZWR1Y2UoZnVuY3Rpb24gKG1lbW8sIF9yZWYyKSB7CiAgICAgIHZhciBrZXkgPSBfcmVmMi5rZXk7CiAgICAgIG1lbW9ba2V5XSA9IHRydWU7CiAgICAgIHJldHVybiBtZW1vOwogICAgfSwge30pOwogICAgX3RoaXMzLmhpZ2hsaWdodEJsb3QgPSBfdGhpczMuaGlnaGxpZ2h0QmxvdC5iaW5kKF90aGlzMyk7CiAgICBfdGhpczMuaW5pdExpc3RlbmVyKCk7CiAgICBfdGhpczMuaW5pdFRpbWVyKCk7CiAgICByZXR1cm4gX3RoaXMzOwogIH0KICBfaW5oZXJpdHMoU3ludGF4LCBfTW9kdWxlKTsKICByZXR1cm4gX2NyZWF0ZUNsYXNzKFN5bnRheCwgW3sKICAgIGtleTogImluaXRMaXN0ZW5lciIsCiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdExpc3RlbmVyKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgdGhpcy5xdWlsbC5vbihRdWlsbC5ldmVudHMuU0NST0xMX0JMT1RfTU9VTlQsIGZ1bmN0aW9uIChibG90KSB7CiAgICAgICAgaWYgKCEoYmxvdCBpbnN0YW5jZW9mIFN5bnRheENvZGVCbG9ja0NvbnRhaW5lcikpIHJldHVybjsKICAgICAgICB2YXIgc2VsZWN0ID0gX3RoaXM0LnF1aWxsLnJvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTsKICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEZpeCBtZSBsYXRlcgogICAgICAgIF90aGlzNC5vcHRpb25zLmxhbmd1YWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykgewogICAgICAgICAgdmFyIGtleSA9IF9yZWYzLmtleSwKICAgICAgICAgICAgbGFiZWwgPSBfcmVmMy5sYWJlbDsKICAgICAgICAgIHZhciBvcHRpb24gPSBzZWxlY3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKICAgICAgICAgIG9wdGlvbi50ZXh0Q29udGVudCA9IGxhYmVsOwogICAgICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBrZXkpOwogICAgICAgICAgc2VsZWN0LmFwcGVuZENoaWxkKG9wdGlvbik7CiAgICAgICAgfSk7CiAgICAgICAgc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGJsb3QuZm9ybWF0KFN5bnRheENvZGVCbG9jay5ibG90TmFtZSwgc2VsZWN0LnZhbHVlKTsKICAgICAgICAgIF90aGlzNC5xdWlsbC5yb290LmZvY3VzKCk7IC8vIFByZXZlbnQgc2Nyb2xsaW5nCiAgICAgICAgICBfdGhpczQuaGlnaGxpZ2h0KGJsb3QsIHRydWUpOwogICAgICAgIH0pOwogICAgICAgIGlmIChibG90LnVpTm9kZSA9PSBudWxsKSB7CiAgICAgICAgICBibG90LmF0dGFjaFVJKHNlbGVjdCk7CiAgICAgICAgICBpZiAoYmxvdC5jaGlsZHJlbi5oZWFkKSB7CiAgICAgICAgICAgIHNlbGVjdC52YWx1ZSA9IFN5bnRheENvZGVCbG9jay5mb3JtYXRzKGJsb3QuY2hpbGRyZW4uaGVhZC5kb21Ob2RlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfQogIH0sIHsKICAgIGtleTogImluaXRUaW1lciIsCiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdFRpbWVyKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdmFyIHRpbWVyID0gbnVsbDsKICAgICAgdGhpcy5xdWlsbC5vbihRdWlsbC5ldmVudHMuU0NST0xMX09QVElNSVpFLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHRpbWVyKSB7CiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwogICAgICAgIH0KICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXM1LmhpZ2hsaWdodCgpOwogICAgICAgICAgdGltZXIgPSBudWxsOwogICAgICAgIH0sIF90aGlzNS5vcHRpb25zLmludGVydmFsKTsKICAgICAgfSk7CiAgICB9CiAgfSwgewogICAga2V5OiAiaGlnaGxpZ2h0IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBoaWdobGlnaHQoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB2YXIgYmxvdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDsKICAgICAgdmFyIGZvcmNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTsKICAgICAgaWYgKHRoaXMucXVpbGwuc2VsZWN0aW9uLmNvbXBvc2luZykgcmV0dXJuOwogICAgICB0aGlzLnF1aWxsLnVwZGF0ZShRdWlsbC5zb3VyY2VzLlVTRVIpOwogICAgICB2YXIgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpOwogICAgICB2YXIgYmxvdHMgPSBibG90ID09IG51bGwgPyB0aGlzLnF1aWxsLnNjcm9sbC5kZXNjZW5kYW50cyhTeW50YXhDb2RlQmxvY2tDb250YWluZXIpIDogW2Jsb3RdOwogICAgICBibG90cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250YWluZXIpIHsKICAgICAgICBjb250YWluZXIuaGlnaGxpZ2h0KF90aGlzNi5oaWdobGlnaHRCbG90LCBmb3JjZSk7CiAgICAgIH0pOwogICAgICB0aGlzLnF1aWxsLnVwZGF0ZShRdWlsbC5zb3VyY2VzLlNJTEVOVCk7CiAgICAgIGlmIChyYW5nZSAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UsIFF1aWxsLnNvdXJjZXMuU0lMRU5UKTsKICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogImhpZ2hsaWdodEJsb3QiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGhpZ2hsaWdodEJsb3QodGV4dCkgewogICAgICB2YXIgbGFuZ3VhZ2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICdwbGFpbic7CiAgICAgIGxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZXNbbGFuZ3VhZ2VdID8gbGFuZ3VhZ2UgOiAncGxhaW4nOwogICAgICBpZiAobGFuZ3VhZ2UgPT09ICdwbGFpbicpIHsKICAgICAgICByZXR1cm4gZXNjYXBlVGV4dCh0ZXh0KS5zcGxpdCgnXG4nKS5yZWR1Y2UoZnVuY3Rpb24gKGRlbHRhLCBsaW5lLCBpKSB7CiAgICAgICAgICBpZiAoaSAhPT0gMCkgewogICAgICAgICAgICBkZWx0YS5pbnNlcnQoJ1xuJywgX2RlZmluZVByb3BlcnR5KHt9LCBDb2RlQmxvY2suYmxvdE5hbWUsIGxhbmd1YWdlKSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZGVsdGEuaW5zZXJ0KGxpbmUpOwogICAgICAgIH0sIG5ldyBEZWx0YSgpKTsKICAgICAgfQogICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5xdWlsbC5yb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKENvZGVCbG9jay5jbGFzc05hbWUpOwogICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gaGlnaGxpZ2h0KHRoaXMub3B0aW9ucy5obGpzLCBsYW5ndWFnZSwgdGV4dCk7CiAgICAgIHJldHVybiB0cmF2ZXJzZSh0aGlzLnF1aWxsLnNjcm9sbCwgY29udGFpbmVyLCBbZnVuY3Rpb24gKG5vZGUsIGRlbHRhKSB7CiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgIHZhciB2YWx1ZSA9IFRva2VuQXR0cmlidXRvci52YWx1ZShub2RlKTsKICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgIHJldHVybiBkZWx0YS5jb21wb3NlKG5ldyBEZWx0YSgpLnJldGFpbihkZWx0YS5sZW5ndGgoKSwgX2RlZmluZVByb3BlcnR5KHt9LCBDb2RlVG9rZW4uYmxvdE5hbWUsIHZhbHVlKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVsdGE7CiAgICAgIH1dLCBbZnVuY3Rpb24gKG5vZGUsIGRlbHRhKSB7CiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgIHJldHVybiBub2RlLmRhdGEuc3BsaXQoJ1xuJykucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBub2RlVGV4dCwgaSkgewogICAgICAgICAgaWYgKGkgIT09IDApIG1lbW8uaW5zZXJ0KCdcbicsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgQ29kZUJsb2NrLmJsb3ROYW1lLCBsYW5ndWFnZSkpOwogICAgICAgICAgcmV0dXJuIG1lbW8uaW5zZXJ0KG5vZGVUZXh0KTsKICAgICAgICB9LCBkZWx0YSk7CiAgICAgIH1dLCBuZXcgV2Vha01hcCgpKTsKICAgIH0KICB9XSwgW3sKICAgIGtleTogInJlZ2lzdGVyIiwKICAgIHZhbHVlOiBmdW5jdGlvbiByZWdpc3RlcigpIHsKICAgICAgUXVpbGwucmVnaXN0ZXIoQ29kZVRva2VuLCB0cnVlKTsKICAgICAgUXVpbGwucmVnaXN0ZXIoU3ludGF4Q29kZUJsb2NrLCB0cnVlKTsKICAgICAgUXVpbGwucmVnaXN0ZXIoU3ludGF4Q29kZUJsb2NrQ29udGFpbmVyLCB0cnVlKTsKICAgIH0KICB9XSk7Cn0oTW9kdWxlKTsKU3ludGF4LkRFRkFVTFRTID0gewogIGhsanM6IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB3aW5kb3cuaGxqczsKICB9KCksCiAgaW50ZXJ2YWw6IDEwMDAsCiAgbGFuZ3VhZ2VzOiBbewogICAga2V5OiAncGxhaW4nLAogICAgbGFiZWw6ICdQbGFpbicKICB9LCB7CiAgICBrZXk6ICdiYXNoJywKICAgIGxhYmVsOiAnQmFzaCcKICB9LCB7CiAgICBrZXk6ICdjcHAnLAogICAgbGFiZWw6ICdDKysnCiAgfSwgewogICAga2V5OiAnY3MnLAogICAgbGFiZWw6ICdDIycKICB9LCB7CiAgICBrZXk6ICdjc3MnLAogICAgbGFiZWw6ICdDU1MnCiAgfSwgewogICAga2V5OiAnZGlmZicsCiAgICBsYWJlbDogJ0RpZmYnCiAgfSwgewogICAga2V5OiAneG1sJywKICAgIGxhYmVsOiAnSFRNTC9YTUwnCiAgfSwgewogICAga2V5OiAnamF2YScsCiAgICBsYWJlbDogJ0phdmEnCiAgfSwgewogICAga2V5OiAnamF2YXNjcmlwdCcsCiAgICBsYWJlbDogJ0phdmFTY3JpcHQnCiAgfSwgewogICAga2V5OiAnbWFya2Rvd24nLAogICAgbGFiZWw6ICdNYXJrZG93bicKICB9LCB7CiAgICBrZXk6ICdwaHAnLAogICAgbGFiZWw6ICdQSFAnCiAgfSwgewogICAga2V5OiAncHl0aG9uJywKICAgIGxhYmVsOiAnUHl0aG9uJwogIH0sIHsKICAgIGtleTogJ3J1YnknLAogICAgbGFiZWw6ICdSdWJ5JwogIH0sIHsKICAgIGtleTogJ3NxbCcsCiAgICBsYWJlbDogJ1NRTCcKICB9XQp9OwpleHBvcnQgeyBTeW50YXhDb2RlQmxvY2sgYXMgQ29kZUJsb2NrLCBDb2RlVG9rZW4sIFN5bnRheCBhcyBkZWZhdWx0IH07"},null]}