1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\views\\activiti\\TemplateManagementNew\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\views\\activiti\\TemplateManagementNew\\index.vue","mtime":1621237346778},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkU6L2JvbWFuLWZyYW13b3JrL3J1b3lpLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRTovYm9tYW4tZnJhbXdvcmsvcnVveWktdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIiOwppbXBvcnQgInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuZGVzY3JpcHRpb24uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWxsLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0ICdAL3V0aWxzL2dvJzsKaW1wb3J0IFZ1ZSBmcm9tICd2dWUnOwppbXBvcnQgUGFyYW1ldGVyQ29uZmlndXJhdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvUGFyYW1ldGVyQ29uZmlndXJhdGlvbic7CmltcG9ydCBGbG93Q2hhcnRDb21wb25lbnQgZnJvbSAnQC9jb21wb25lbnRzL0Zsb3dDaGFydENvbXBvbmVudCc7CmltcG9ydCBGbG93U3VjY2VzcyBmcm9tICdAL2NvbXBvbmVudHMvRmxvd1N1Y2Nlc3MnOwppbXBvcnQgeyBtYXBNdXRhdGlvbnMgfSBmcm9tICd2dWV4JzsKaW1wb3J0IHsgc2V0VGltZW91dCB9IGZyb20gJ3RpbWVycyc7CmltcG9ydCB7IGdldExvYWQsIGdldENvbW1pdCwgZ2V0RHVwbGljYXRlLCBnZXRQdWJsaXNoIH0gZnJvbSAnQC9hcGkvbW9kZWxlci5qcyc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGVtcGxhdGVNYW5hZ2VtZW50TmV3JywKICBjb21wb25lbnRzOiB7CiAgICBQYXJhbWV0ZXJDb25maWd1cmF0aW9uOiBQYXJhbWV0ZXJDb25maWd1cmF0aW9uLAogICAgRmxvd0NoYXJ0Q29tcG9uZW50OiBGbG93Q2hhcnRDb21wb25lbnQsCiAgICBGbG93U3VjY2VzczogRmxvd1N1Y2Nlc3MKICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBjdXJyZW50U3RlcHM6IDAsCiAgICAgIGN1cnJlbnRDb21wb25lbnQ6IG51bGwsCiAgICAgIGltZ0Jhc2U6ICcnLAogICAgICBkZWZhdWx0RGF0YTogewogICAgICAgIGd1aVN0eWxlOiBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAiY2xhc3MiOiAiTmV3R3JhcGhMaW5rc01vZGVsIiwKICAgICAgICAgICJsaW5rRnJvbVBvcnRJZFByb3BlcnR5IjogImZyb21Qb3J0IiwKICAgICAgICAgICJsaW5rVG9Qb3J0SWRQcm9wZXJ0eSI6ICJ0b1BvcnQiLAogICAgICAgICAgIm5vZGVEYXRhQXJyYXkiOiBbewogICAgICAgICAgICAia2V5IjogLTEsCiAgICAgICAgICAgICJjYXRlZ29yeSI6ICJTdGFydCIsCiAgICAgICAgICAgICJsb2MiOiAiMTc1IDAiLAogICAgICAgICAgICAidGV4dCI6ICLlvIDlp4siLAogICAgICAgICAgICAidHlwZSI6IDEKICAgICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6IDAsCiAgICAgICAgICAgICJsb2MiOiAiMTc1IDEwMCIsCiAgICAgICAgICAgICJ0ZXh0IjogIuWuoeaJueiKgueCuSIsCiAgICAgICAgICAgICJ0eXBlIjogMCwKICAgICAgICAgICAgImNhdGVnb3J5IjogJ0FwcHJvdmFsJwogICAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogLTIsCiAgICAgICAgICAgICJjYXRlZ29yeSI6ICJFbmQiLAogICAgICAgICAgICAibG9jIjogIjE3NSAyMDAiLAogICAgICAgICAgICAidGV4dCI6ICLnu5PmnZ8iLAogICAgICAgICAgICAidHlwZSI6IDIKICAgICAgICAgIH1dLAogICAgICAgICAgImxpbmtEYXRhQXJyYXkiOiBbewogICAgICAgICAgICAiZnJvbSI6IC0xLAogICAgICAgICAgICAidG8iOiAwLAogICAgICAgICAgICAiZnJvbVBvcnQiOiAiQiIsCiAgICAgICAgICAgICJ0b1BvcnQiOiAiVCIsCiAgICAgICAgICAgICJrZXkiOiAwCiAgICAgICAgICB9LCB7CiAgICAgICAgICAgICJmcm9tIjogMCwKICAgICAgICAgICAgInRvIjogLTIsCiAgICAgICAgICAgICJmcm9tUG9ydCI6ICJCIiwKICAgICAgICAgICAgInRvUG9ydCI6ICJUIiwKICAgICAgICAgICAgImtleSI6IDEKICAgICAgICAgIH1dCiAgICAgICAgfSksCiAgICAgICAgbm9kZU1zZzogW3sKICAgICAgICAgICJrZXkiOiAtMSwKICAgICAgICAgICJjYXRlZ29yeSI6ICJTdGFydCIsCiAgICAgICAgICAibG9jIjogIjE3NSAwIiwKICAgICAgICAgICJ0ZXh0IjogIuW8gOWniyIsCiAgICAgICAgICAibmFtZSI6ICLlvIDlp4siLAogICAgICAgICAgInR5cGUiOiAxLAogICAgICAgICAgInJ1bGVMaXN0IjogW10KICAgICAgICB9LCB7CiAgICAgICAgICAia2V5IjogMCwKICAgICAgICAgICJsb2MiOiAiMTc1IDEwMCIsCiAgICAgICAgICAidGV4dCI6ICLlrqHmibnoioLngrkiLAogICAgICAgICAgIm5hbWUiOiAi5a6h5om56IqC54K5IiwKICAgICAgICAgICJjYXRlZ29yeSI6ICdBcHByb3ZhbCcsCiAgICAgICAgICAidHlwZSI6IDAsCiAgICAgICAgICAicnVsZUxpc3QiOiBbXSwKICAgICAgICAgICJhY3RTZXJ2aWNlUyI6IFtdLAogICAgICAgICAgImFjdGlvbkNvbmZpZyI6IFtdLAogICAgICAgICAgImFwcHJvdmVsTGlzdCI6IFtdLAogICAgICAgICAgImFwcHJvdmVyU3R5bGUiOiAwCiAgICAgICAgfSwgewogICAgICAgICAgImtleSI6IC0yLAogICAgICAgICAgImNhdGVnb3J5IjogIkVuZCIsCiAgICAgICAgICAibG9jIjogIjE3NSAyMDAiLAogICAgICAgICAgInRleHQiOiAi57uT5p2fIiwKICAgICAgICAgICJuYW1lIjogIue7k+adnyIsCiAgICAgICAgICAidHlwZSI6IDIsCiAgICAgICAgICAiYWN0aW9uQ29uZmlnIjogW3sKICAgICAgICAgICAgaGFuZGxlVmFsdWU6IG51bGwsCiAgICAgICAgICAgIGV4dHJhX21zZzoge30sCiAgICAgICAgICAgIGhhbmRsZVR5cGU6IDMxCiAgICAgICAgICB9LCB7CiAgICAgICAgICAgIGhhbmRsZVZhbHVlOiAne30nLAogICAgICAgICAgICBleHRyYV9tc2c6IHt9LAogICAgICAgICAgICBoYW5kbGVUeXBlOiA0MQogICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICBwYXRoTXNnOiBbewogICAgICAgICAgImZyb20iOiAtMSwKICAgICAgICAgICJ0byI6IDAsCiAgICAgICAgICAiZnJvbVBvcnQiOiAiQiIsCiAgICAgICAgICAidG9Qb3J0IjogIlQiLAogICAgICAgICAgInJ1bGVMaXN0IjogW10sCiAgICAgICAgICAia2V5IjogMAogICAgICAgIH0sIHsKICAgICAgICAgICJmcm9tIjogMCwKICAgICAgICAgICJ0byI6IC0yLAogICAgICAgICAgImZyb21Qb3J0IjogIkIiLAogICAgICAgICAgInRvUG9ydCI6ICJUIiwKICAgICAgICAgICJydWxlTGlzdCI6IFtdLAogICAgICAgICAgImtleSI6IDEKICAgICAgICB9XSwKICAgICAgICByZW1vdmVOb2RlOiBbXSwKICAgICAgICByZW1vdmVQYXRoOiBbXQogICAgICB9LAogICAgICBkYXRhOiB7CiAgICAgICAgZ3VpU3R5bGU6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICJjbGFzcyI6ICJOZXdHcmFwaExpbmtzTW9kZWwiLAogICAgICAgICAgImxpbmtGcm9tUG9ydElkUHJvcGVydHkiOiAiZnJvbVBvcnQiLAogICAgICAgICAgImxpbmtUb1BvcnRJZFByb3BlcnR5IjogInRvUG9ydCIsCiAgICAgICAgICAibm9kZURhdGFBcnJheSI6IFt7CiAgICAgICAgICAgICJrZXkiOiAtMSwKICAgICAgICAgICAgImNhdGVnb3J5IjogIlN0YXJ0IiwKICAgICAgICAgICAgImxvYyI6ICIxNzUgMCIsCiAgICAgICAgICAgICJ0ZXh0IjogIuW8gOWniyIsCiAgICAgICAgICAgICJ0eXBlIjogMQogICAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogMCwKICAgICAgICAgICAgImxvYyI6ICIxNzUgMTAwIiwKICAgICAgICAgICAgInRleHQiOiAi5a6h5om56IqC54K5IiwKICAgICAgICAgICAgInR5cGUiOiAwLAogICAgICAgICAgICAiY2F0ZWdvcnkiOiAnQXBwcm92YWwnCiAgICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAtMiwKICAgICAgICAgICAgImNhdGVnb3J5IjogIkVuZCIsCiAgICAgICAgICAgICJsb2MiOiAiMTc1IDIwMCIsCiAgICAgICAgICAgICJ0ZXh0IjogIue7k+adnyIsCiAgICAgICAgICAgICJ0eXBlIjogMgogICAgICAgICAgfV0sCiAgICAgICAgICAibGlua0RhdGFBcnJheSI6IFt7CiAgICAgICAgICAgICJmcm9tIjogLTEsCiAgICAgICAgICAgICJ0byI6IDAsCiAgICAgICAgICAgICJmcm9tUG9ydCI6ICJCIiwKICAgICAgICAgICAgInRvUG9ydCI6ICJUIiwKICAgICAgICAgICAgImtleSI6IDAKICAgICAgICAgIH0sIHsKICAgICAgICAgICAgImZyb20iOiAwLAogICAgICAgICAgICAidG8iOiAtMiwKICAgICAgICAgICAgImZyb21Qb3J0IjogIkIiLAogICAgICAgICAgICAidG9Qb3J0IjogIlQiLAogICAgICAgICAgICAia2V5IjogMQogICAgICAgICAgfV0KICAgICAgICB9KSwKICAgICAgICBub2RlTXNnOiBbewogICAgICAgICAgImtleSI6IC0xLAogICAgICAgICAgImNhdGVnb3J5IjogIlN0YXJ0IiwKICAgICAgICAgICJsb2MiOiAiMTc1IDAiLAogICAgICAgICAgInRleHQiOiAi5byA5aeLIiwKICAgICAgICAgICJuYW1lIjogIuW8gOWniyIsCiAgICAgICAgICAidHlwZSI6IDEsCiAgICAgICAgICAicnVsZUxpc3QiOiBbXQogICAgICAgIH0sIHsKICAgICAgICAgICJrZXkiOiAwLAogICAgICAgICAgImxvYyI6ICIxNzUgMTAwIiwKICAgICAgICAgICJ0ZXh0IjogIuWuoeaJueiKgueCuSIsCiAgICAgICAgICAibmFtZSI6ICLlrqHmibnoioLngrkiLAogICAgICAgICAgImNhdGVnb3J5IjogJ0FwcHJvdmFsJywKICAgICAgICAgICJ0eXBlIjogMCwKICAgICAgICAgICJydWxlTGlzdCI6IFtdLAogICAgICAgICAgImFjdFNlcnZpY2VTIjogW10sCiAgICAgICAgICAiYWN0aW9uQ29uZmlnIjogW10sCiAgICAgICAgICAiYXBwcm92ZWxMaXN0IjogW10sCiAgICAgICAgICAiYXBwcm92ZXJTdHlsZSI6IDAKICAgICAgICB9LCB7CiAgICAgICAgICAia2V5IjogLTIsCiAgICAgICAgICAiY2F0ZWdvcnkiOiAiRW5kIiwKICAgICAgICAgICJsb2MiOiAiMTc1IDIwMCIsCiAgICAgICAgICAidGV4dCI6ICLnu5PmnZ8iLAogICAgICAgICAgIm5hbWUiOiAi57uT5p2fIiwKICAgICAgICAgICJ0eXBlIjogMiwKICAgICAgICAgICJhY3Rpb25Db25maWciOiBbewogICAgICAgICAgICBoYW5kbGVWYWx1ZTogbnVsbCwKICAgICAgICAgICAgZXh0cmFfbXNnOiB7fSwKICAgICAgICAgICAgaGFuZGxlVHlwZTogMzEKICAgICAgICAgIH0sIHsKICAgICAgICAgICAgaGFuZGxlVmFsdWU6ICd7fScsCiAgICAgICAgICAgIGV4dHJhX21zZzoge30sCiAgICAgICAgICAgIGhhbmRsZVR5cGU6IDQxCiAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgIHBhdGhNc2c6IFt7CiAgICAgICAgICAiZnJvbSI6IC0xLAogICAgICAgICAgInRvIjogMCwKICAgICAgICAgICJmcm9tUG9ydCI6ICJCIiwKICAgICAgICAgICJ0b1BvcnQiOiAiVCIsCiAgICAgICAgICAicnVsZUxpc3QiOiBbXSwKICAgICAgICAgICJrZXkiOiAwCiAgICAgICAgfSwgewogICAgICAgICAgImZyb20iOiAwLAogICAgICAgICAgInRvIjogLTIsCiAgICAgICAgICAiZnJvbVBvcnQiOiAiQiIsCiAgICAgICAgICAidG9Qb3J0IjogIlQiLAogICAgICAgICAgInJ1bGVMaXN0IjogW10sCiAgICAgICAgICAia2V5IjogMQogICAgICAgIH1dLAogICAgICAgIHJlbW92ZU5vZGU6IFtdLAogICAgICAgIHJlbW92ZVBhdGg6IFtdLAogICAgICAgIGF1dG9DbG9zZTogdHJ1ZSwKICAgICAgICBtb2R1bGVUeXBlOiAwCiAgICAgIH0sCiAgICAgIG5vRnJlc2hGbGFnOiBmYWxzZSwKICAgICAgcmVhZE9ubHk6IGZhbHNlLAogICAgICAvL+aYr+WQpuWPquivu+S4uumihOiniOaooeW8jwogICAgICAvL+WtmOaUvuS4ieatpemqpOeahOaVsOaNrgogICAgICBkZWZhdWx0TW9kdWxlVHlwZTogbnVsbCAvL+aaguWtmOaooeeJiOexu+WeiwoKICAgIH07CiAgfSwKICB3YXRjaDogewogICAgY3VycmVudFN0ZXBzOiBmdW5jdGlvbiBjdXJyZW50U3RlcHModmFsKSB7CiAgICAgIC8vIGlmKHRoaXMucmVhZE9ubHkpewogICAgICAvLyAgIHJldHVybgogICAgICAvLyB9CiAgICAgIHZhciBjb21wb25lbnROYW1lID0gImNvbXBvbmVudF8iLmNvbmNhdCh2YWwpOwoKICAgICAgaWYgKFZ1ZS5jb21wb25lbnQoY29tcG9uZW50TmFtZSkgPT09IHVuZGVmaW5lZCkgewogICAgICAgIGlmICh2YWwgPT09IDApIHsKICAgICAgICAgIFZ1ZS5jb21wb25lbnQoY29tcG9uZW50TmFtZSwgUGFyYW1ldGVyQ29uZmlndXJhdGlvbik7CiAgICAgICAgfSBlbHNlIGlmICh2YWwgPT09IDEpIHsKICAgICAgICAgIFZ1ZS5jb21wb25lbnQoY29tcG9uZW50TmFtZSwgRmxvd0NoYXJ0Q29tcG9uZW50KTsKICAgICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gMikgewogICAgICAgICAgVnVlLmNvbXBvbmVudChjb21wb25lbnROYW1lLCBGbG93U3VjY2Vzcyk7CiAgICAgICAgfQogICAgICB9CgogICAgICB0aGlzLmN1cnJlbnRDb21wb25lbnQgPSBjb21wb25lbnROYW1lOwogICAgfQogIH0sCiAgbWV0aG9kczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtYXBNdXRhdGlvbnMoWydjdXJyZW50Q2hhbmdlJ10pKSwge30sIHsKICAgIGdldE1vZHVsZUluZm86IGZ1bmN0aW9uIGdldE1vZHVsZUluZm8oaWQpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgIGdldExvYWQoewogICAgICAgIGlkOiBpZAogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBpZiAocmVzLnJlc3VsdENvZGUgPT09IDApIHsKICAgICAgICAgIHJlcy5kYXRhLmJ1c2luZXNzVHlwZSA9IFt7CiAgICAgICAgICAgIElEOiByZXMuZGF0YS5idXNpbmVzc1R5cGUsCiAgICAgICAgICAgIExhYmVsOiByZXMuZGF0YS5idXNpbmVzc1R5cGVOYW1lLAogICAgICAgICAgICB2YWw6IHJlcy5kYXRhLmJ1c2luZXNzVHlwZVRleHQKICAgICAgICAgIH1dOwogICAgICAgICAgcmVzLmRhdGEuYnVzaW5lc3NOdW1iZXIgPSBbewogICAgICAgICAgICBJRDogU3RyaW5nKHJlcy5kYXRhLmJ1c2luZXNzS2V5SWQpLAogICAgICAgICAgICBMYWJlbDogcmVzLmRhdGEuYnVzaW5lc3NLZXksCiAgICAgICAgICAgIHZhbDogcmVzLmRhdGEuYnVzaW5lc3NLZXlOYW1lCiAgICAgICAgICB9XTsKICAgICAgICAgIF90aGlzLmRhdGEgPSByZXMuZGF0YTsKICAgICAgICAgIF90aGlzLmRhdGEuZ3VpU3R5bGUgPSBKU09OLnBhcnNlKHJlcy5kYXRhLmd1aVN0eWxlKTsKICAgICAgICAgIF90aGlzLmRhdGEubW9kdWxlSWQgPSByZXMuZGF0YS5pZDsKCiAgICAgICAgICBfdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoX3RoaXMucmVhZE9ubHkpIHsKICAgICAgICAgICAgICBfdGhpcy5jdXJyZW50U3RlcHMgPSAyOwogICAgICAgICAgICAgIF90aGlzLm5vRnJlc2hGbGFnID0gZmFsc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgX3RoaXMuJHJlZnMuY29tcG9uZW50XzEuaW5pdCgpOwoKICAgICAgICAgICAgICBfdGhpcy5ub0ZyZXNoRmxhZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX3RoaXMuJE1vZGFsLmZjV2FybmluZyh7CiAgICAgICAgICAgIHRpdGxlOiAn6K2m5ZGKJywKICAgICAgICAgICAgY29udGVudDogcmVzLnJlc3VsdE1zZywKICAgICAgICAgICAgbWFzazogdHJ1ZQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICBuZXh0U3RlcHM6IGZ1bmN0aW9uIG5leHRTdGVwcygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5jaGVja01vZHVsZU5hbWUoKTsKCiAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgaWYgKCFfY29udGV4dC5zZW50KSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBmYWxzZSk7CgogICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGlmICghKF90aGlzMi5jdXJyZW50U3RlcHMgPT09IDAgJiYgX3RoaXMyLmRlZmF1bHRNb2R1bGVUeXBlICE9IF90aGlzMi5kYXRhLm1vZHVsZVR5cGUgJiYgX3RoaXMyLmRlZmF1bHRNb2R1bGVUeXBlICE9PSBudWxsKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgX3RoaXMyLiRNb2RhbC5mY1dhcm5pbmcoewogICAgICAgICAgICAgICAgICB0aXRsZTogJ+itpuWRiicsCiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfmgqjlt7Lkv67mlLnmqKHmnb/nsbvlnosv5Y2V5o2u57G75Z6L77yM6L+Z5bCG5a+86Ie05LiL5LiA5q2l55qE5rWB56iL6K6+6K6h5Zmo5YaF5omA5pyJ6K6+572u5oGi5aSN5Yid5aeL5YyW77yM5piv5ZCm56Gu5a6a5pu05pS5PycsCiAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWw6IHRydWUsCiAgICAgICAgICAgICAgICAgIG1hc2s6IHRydWUsCiAgICAgICAgICAgICAgICAgIG9uT2s6IGZ1bmN0aW9uIG9uT2soKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmRlZmF1bHRNb2R1bGVUeXBlID0gX3RoaXMyLmRhdGEubW9kdWxlVHlwZTsKICAgICAgICAgICAgICAgICAgICBfdGhpczIuZGF0YSA9IE9iamVjdC5hc3NpZ24oX3RoaXMyLmRhdGEsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RoaXMyLmRlZmF1bHREYXRhKSkpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMyLmRhdGEuYnVzaW5lc3NUeXBlICYmIF90aGlzMi5kYXRhLmJ1c2luZXNzVHlwZS5sZW5ndGggPiAwICYmIF90aGlzMi5kYXRhLm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi5kZWZhdWx0TW9kdWxlVHlwZSA9IF90aGlzMi5kYXRhLm1vZHVsZVR5cGU7CiAgICAgICAgICAgICAgICAgICAgICArK190aGlzMi5jdXJyZW50U3RlcHM7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi4kTW9kYWwuZmNXYXJuaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICforablkYonLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAn6K+35aGr5YaZ5b+F5aGr6aG5IScsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s6IHRydWUKICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgb25DYW5jZWw6IGZ1bmN0aW9uIG9uQ2FuY2VsKCkge30KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIpOwoKICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBpZiAoX3RoaXMyLmRhdGEubmFtZSAmJiAoX3RoaXMyLmRhdGEubW9kdWxlVHlwZSA9PT0gMCA/IF90aGlzMi5kYXRhLmJ1c2luZXNzVHlwZSAmJiBfdGhpczIuZGF0YS5idXNpbmVzc1R5cGUubGVuZ3RoID4gMCA6IHRydWUpKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMi5kZWZhdWx0TW9kdWxlVHlwZSA9IF90aGlzMi5kYXRhLm1vZHVsZVR5cGU7CiAgICAgICAgICAgICAgICAgICsrX3RoaXMyLmN1cnJlbnRTdGVwczsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMi4kTW9kYWwuZmNXYXJuaW5nKHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+itpuWRiicsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ+ivt+Whq+WGmeW/heWhq+mhuSEnLAogICAgICAgICAgICAgICAgICAgIG1hc2s6IHRydWUKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBjaGVja01vZHVsZU5hbWU6IGZ1bmN0aW9uIGNoZWNrTW9kdWxlTmFtZSgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CgogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICAgdmFyIGpzb25PYmplY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgSUQ6IF90aGlzMy5kYXRhLm1vZHVsZUlkLAogICAgICAgICAgICAgICAgICAgIE5BTUU6IF90aGlzMy5kYXRhLm5hbWUKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgZ2V0RHVwbGljYXRlKGpzb25PYmplY3QpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0Q29kZSAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgX3RoaXMzLiRNb2RhbC5mY1dhcm5pbmcoewogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+itpuWRiicsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJlcy5yZXN1bHRNc2csCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s6IHRydWUKICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBwcmV2aW91c1N0ZXBzOiBmdW5jdGlvbiBwcmV2aW91c1N0ZXBzKCkgewogICAgICAvL+S4iuS4gOatpQogICAgICAtLXRoaXMuY3VycmVudFN0ZXBzOwogICAgfSwKICAgIGNvbmZpcm06IGZ1bmN0aW9uIGNvbmZpcm0oZmxhZykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgICB2YXIgc3ZnID0gX3RoaXM0LmRhdGEubXlEaXNwbGF5Lm1ha2VJbWFnZSh7CiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIKICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICBfdGhpczQuaW1nQmFzZSA9IHN2Zy5nZXRBdHRyaWJ1dGUoJ3NyYycpOwogICAgICAgICAgICAgICAgICB2YXIgbm9kZU1zZyA9IFtdOwogICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhfdGhpczQuZGF0YS5ub2RlTXNnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBub2RlTXNnLnB1c2goX3RoaXM0LmRhdGEubm9kZU1zZ1tpdGVtXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB2YXIgcGF0aE1zZyA9IFtdOwogICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhfdGhpczQuZGF0YS5wYXRoTXNnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBwYXRoTXNnLnB1c2goX3RoaXM0LmRhdGEucGF0aE1zZ1tpdGVtXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB2YXIganNvbk9iamVjdCA9IHsKICAgICAgICAgICAgICAgICAgICBpZDogX3RoaXM0LmRhdGEubW9kdWxlSWQsCiAgICAgICAgICAgICAgICAgICAgbmFtZTogX3RoaXM0LmRhdGEubmFtZSwKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogX3RoaXM0LmRhdGEuZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgR1VJX1NUWUxFOiBfdGhpczQuZGF0YS5ndWlTdHlsZSwKICAgICAgICAgICAgICAgICAgICB1cmw6IHN2Zy5nZXRBdHRyaWJ1dGUoJ3NyYycpLAogICAgICAgICAgICAgICAgICAgIG1vZHVsZVR5cGU6IF90aGlzNC5kYXRhLm1vZHVsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgQlVTSU5FU1NfVFlQRTogX3RoaXM0LmRhdGEuYnVzaW5lc3NUeXBlID8gX3RoaXM0LmRhdGEuYnVzaW5lc3NUeXBlWzBdLklEIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBCVVNJTkVTU19UWVBFX05BTUU6IF90aGlzNC5kYXRhLmJ1c2luZXNzVHlwZSA/IF90aGlzNC5kYXRhLmJ1c2luZXNzVHlwZVswXS5MYWJlbCA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NUeXBlVGV4dDogX3RoaXM0LmRhdGEuYnVzaW5lc3NUeXBlID8gX3RoaXM0LmRhdGEuYnVzaW5lc3NUeXBlWzBdLnZhbCA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NLZXlJZDogX3RoaXM0LmRhdGEuYnVzaW5lc3NOdW1iZXIgJiYgX3RoaXM0LmRhdGEuYnVzaW5lc3NOdW1iZXIubGVuZ3RoID4gMCA/IF90aGlzNC5kYXRhLmJ1c2luZXNzTnVtYmVyWzBdLklEIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBidXNpbmVzc0tleTogX3RoaXM0LmRhdGEuYnVzaW5lc3NOdW1iZXIgJiYgX3RoaXM0LmRhdGEuYnVzaW5lc3NOdW1iZXIubGVuZ3RoID4gMCA/IF90aGlzNC5kYXRhLmJ1c2luZXNzTnVtYmVyWzBdLkxhYmVsIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBidXNpbmVzc0tleU5hbWU6IF90aGlzNC5kYXRhLmJ1c2luZXNzTnVtYmVyICYmIF90aGlzNC5kYXRhLmJ1c2luZXNzTnVtYmVyLmxlbmd0aCA+IDAgPyBfdGhpczQuZGF0YS5idXNpbmVzc051bWJlclswXS52YWwgOiBudWxsLAogICAgICAgICAgICAgICAgICAgIGF1dG9DbG9zZTogX3RoaXM0LmRhdGEuYXV0b0Nsb3NlLAogICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzQ2hlY2tVcmw6IF90aGlzNC5kYXRhLmJ1c2luZXNzQ2hlY2tVcmwsCiAgICAgICAgICAgICAgICAgICAgbm9kZU1zZzogbm9kZU1zZywKICAgICAgICAgICAgICAgICAgICBwYXRoTXNnOiBwYXRoTXNnLAogICAgICAgICAgICAgICAgICAgIHJlbW92ZU5vZGU6IF90aGlzNC5kYXRhLnJlbW92ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUGF0aDogX3RoaXM0LmRhdGEucmVtb3ZlUGF0aAogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICBnZXRDb21taXQoanNvbk9iamVjdCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHRDb2RlID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmRhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyAgIGd1aVN0eWxlOnsKICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAiY2xhc3MiOiAiZ28uR3JhcGhMaW5rc01vZGVsIiwKICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAibGlua0Zyb21Qb3J0SWRQcm9wZXJ0eSI6ICJmcm9tUG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgImxpbmtUb1BvcnRJZFByb3BlcnR5IjogInRvUG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIm5vZGVEYXRhQXJyYXkiOiBbXSwKICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAibGlua0RhdGFBcnJheSI6IFtdCiAgICAgICAgICAgICAgICAgICAgICAvLyAgIH0KICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghZmxhZykgewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZmxhZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczQuJHJvdXRlci5wdXNoKCcvdG9vbC9hY3Rpdml0aS9tb2RlbGVyJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczQuY3VycmVudENoYW5nZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy90b29sL2FjdGl2aXRpL21vZGVsZXInCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LiRNb2RhbC5mY0Vycm9yKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiByZXMucmVzdWx0TXNnLAogICAgICAgICAgICAgICAgICAgICAgICBvbk9rOiBmdW5jdGlvbiBvbk9rKCkge30KICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hYnJ1cHQoInJldHVybiIsIF9jb250ZXh0My5zZW50KTsKCiAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZm9ybWF0R3VpU3R5bGU6IGZ1bmN0aW9uIGZvcm1hdEd1aVN0eWxlKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKCiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0Tm9kZSA9IHt9OyAvL+iOt+WPluW8gOWni+iKgueCuQoKICAgICAgICAgICAgICAgICAgX3RoaXM1LmRhdGEuZ3VpU3R5bGUubm9kZURhdGFBcnJheS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBpdGVtOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICB2YXIgc3RhcnRsaW5rID0ge307IC8v6I635Y+W56ys5LiA5qC557q/55qE5pWw5o2uCgogICAgICAgICAgICAgICAgICBfdGhpczUuZGF0YS5ndWlTdHlsZS5saW5rRGF0YUFycmF5Lm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmZyb20gPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICBzdGFydGxpbmsgPSBpdGVtOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7IC8v6I635Y+W6L+e57q/55qE5q2j56Gu5o6S5bqPCgoKICAgICAgICAgICAgICAgICAgdmFyIGxpbmtNYXAgPSBbXTsKICAgICAgICAgICAgICAgICAgbmV3IEFycmF5KF90aGlzNS5kYXRhLmd1aVN0eWxlLmxpbmtEYXRhQXJyYXkubGVuZ3RoKS5maWxsKG51bGwpLm1hcChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM1LmRhdGEuZ3VpU3R5bGUubGlua0RhdGFBcnJheS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rTWFwLmxlbmd0aCA9PT0gMCAmJiBpdGVtLmZyb20gPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtNYXAucHVzaChpdGVtKTsKICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua01hcC5sZW5ndGggPiAwICYmIGl0ZW0uZnJvbSA9PT0gbGlua01hcFtsaW5rTWFwLmxlbmd0aCAtIDFdLnRvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtNYXAucHVzaChpdGVtKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIF90aGlzNS5kYXRhLmd1aVN0eWxlLmxpbmtEYXRhQXJyYXkgPSBsaW5rTWFwOyAvL+iOt+WPluiKgueCueeahOato+ehrumhuuW6jwogICAgICAgICAgICAgICAgICAvLyBsZXQgbm9kZU1hcCA9IFtzdGFydE5vZGVdCgogICAgICAgICAgICAgICAgICBfdGhpczUuZGF0YS5ndWlTdHlsZS5ub2RlRGF0YUFycmF5ID0gX3RoaXM1LmRhdGEuZ3VpU3R5bGUubGlua0RhdGFBcnJheS5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgaXRlbSkgewogICAgICAgICAgICAgICAgICAgIHN1bS5wdXNoKF90aGlzNS5kYXRhLkRpYWdyYW0ubW9kZWwuZmluZE5vZGVEYXRhRm9yS2V5KGl0ZW0udG8pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtOwogICAgICAgICAgICAgICAgICB9LCBbc3RhcnROb2RlXSk7IC8v5bCG5omA5pyJ6IqC54K555qEeOi9tOS4juW8gOWni+iKgueCueWvuem9kAoKICAgICAgICAgICAgICAgICAgX3RoaXM1LmRhdGEuZ3VpU3R5bGUubm9kZURhdGFBcnJheS5tYXAoZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxvYyA9IGl0ZW0ubG9jLnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICAgICAgbG9jWzBdID0gc3RhcnROb2RlLmxvYy5zcGxpdCgnICcpWzBdOwogICAgICAgICAgICAgICAgICAgIGxvY1sxXSA9IE51bWJlcihzdGFydE5vZGUubG9jLnNwbGl0KCcgJylbMV0pICsgaW5kZXggKiA4MDsKICAgICAgICAgICAgICAgICAgICBpdGVtLmxvYyA9IGxvYy5qb2luKCcgJyk7CiAgICAgICAgICAgICAgICAgIH0pOyAvL+WwhuaJgOaciei/nue6v+eahHjovbTkuI7lvIDlp4voioLngrnlr7npvZAKCgogICAgICAgICAgICAgICAgICBfdGhpczUuZGF0YS5ndWlTdHlsZS5saW5rRGF0YUFycmF5Lm1hcChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50cy5qLm1hcChmdW5jdGlvbiAodGVtcCkgewogICAgICAgICAgICAgICAgICAgICAgdGVtcC5GID0gc3RhcnRsaW5rLnBvaW50cy5qWzBdLkY7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludHMuai5tYXAoZnVuY3Rpb24gKHRlbXAsIGopIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPT0gaXRlbS5wb2ludHMuai5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5HID0gTnVtYmVyKF90aGlzNS5kYXRhLmd1aVN0eWxlLm5vZGVEYXRhQXJyYXlbaW5kZXhdLmxvYy5zcGxpdCgnICcpWzFdKSArIDIwOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuRyA9IE51bWJlcihfdGhpczUuZGF0YS5ndWlTdHlsZS5ub2RlRGF0YUFycmF5W2luZGV4ICsgMV0ubG9jLnNwbGl0KCcgJylbMV0pIC0gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IF90aGlzNS5kYXRhLmd1aVN0eWxlLmxpbmtEYXRhQXJyYXkubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPT0gaXRlbS5wb2ludHMuai5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5HID0gTnVtYmVyKF90aGlzNS5kYXRhLmd1aVN0eWxlLm5vZGVEYXRhQXJyYXlbaW5kZXhdLmxvYy5zcGxpdCgnICcpWzFdKSArIDIwOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuRyA9IE51bWJlcihfdGhpczUuZGF0YS5ndWlTdHlsZS5ub2RlRGF0YUFycmF5W2luZGV4ICsgMV0ubG9jLnNwbGl0KCcgJylbMV0pIC0gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqICE9PSBpdGVtLnBvaW50cy5qLmxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLkcgPSBOdW1iZXIoX3RoaXM1LmRhdGEuZ3VpU3R5bGUubm9kZURhdGFBcnJheVtpbmRleF0ubG9jLnNwbGl0KCcgJylbMV0pICsgMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5HID0gTnVtYmVyKF90aGlzNS5kYXRhLmd1aVN0eWxlLm5vZGVEYXRhQXJyYXlbaW5kZXggKyAxXS5sb2Muc3BsaXQoJyAnKVsxXSkgLSAyMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgIF90aGlzNS5kYXRhLkRpYWdyYW0ubW9kZWwgPSBnby5Nb2RlbC5mcm9tSnNvbihfdGhpczUuZGF0YS5ndWlTdHlsZSk7CiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBkYXRhQ2hhbmdlOiBmdW5jdGlvbiBkYXRhQ2hhbmdlKGRhdGEpIHsKICAgICAgLy/mr4/kuIDmraXkuK3nmoTmlbDmja7lj5jljJYKICAgICAgdGhpcy5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIGRhdGEpOwogICAgfSwKICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZSgpIHsKICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goInRhZ3NWaWV3L2RlbFZpZXciLCB0aGlzLiRyb3V0ZSk7CiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKCcvdG9vbC9hY3Rpdml0aS9tb2RlbGVyJyk7CiAgICAgIHRoaXMuY3VycmVudENoYW5nZSh7CiAgICAgICAgcGF0aDogJy90b29sL2FjdGl2aXRpL21vZGVsZXInCiAgICAgIH0pOwogICAgfSwKICAgIGNvbmZpcm1BbmRQdWJsaXNoOiBmdW5jdGlvbiBjb25maXJtQW5kUHVibGlzaCgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CgogICAgICAvL+S/neWtmOW5tuWPkeW4gwogICAgICB0aGlzLmNvbmZpcm0odHJ1ZSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgZ2V0UHVibGlzaCh7CiAgICAgICAgICBpZDogcmVzLmRhdGEuaWQKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdENvZGUgPT09IDApIHsKICAgICAgICAgICAgX3RoaXM2LiRzdG9yZS5kaXNwYXRjaCgidGFnc1ZpZXcvZGVsVmlldyIsIF90aGlzNi4kcm91dGUpOwoKICAgICAgICAgICAgX3RoaXM2LiRyb3V0ZXIucHVzaCgnL3Rvb2wvYWN0aXZpdGkvbW9kZWxlcicpOwoKICAgICAgICAgICAgX3RoaXM2LmN1cnJlbnRDaGFuZ2UoewogICAgICAgICAgICAgIHBhdGg6ICcvdG9vbC9hY3Rpdml0aS9tb2RlbGVyJwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9CiAgfSksCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIFZ1ZS5jb21wb25lbnQoImNvbXBvbmVudF8iLmNvbmNhdCh0aGlzLmN1cnJlbnRTdGVwcyksIFZ1ZS5leHRlbmQoT2JqZWN0LmFzc2lnbih7CiAgICAgIGlzS2VlcEFsaXZlTW9kZWw6IHRydWUKICAgIH0sIFBhcmFtZXRlckNvbmZpZ3VyYXRpb24pKSk7CiAgICB0aGlzLmN1cnJlbnRDb21wb25lbnQgPSAiY29tcG9uZW50XyIuY29uY2F0KHRoaXMuY3VycmVudFN0ZXBzKTsKCiAgICBpZiAodGhpcy4kcm91dGUucGFyYW1zLmZsYWcgPT09ICcxJykgewogICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgdGhpcy5ub0ZyZXNoRmxhZyA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudFN0ZXBzID0gMTsKICAgICAgdGhpcy5nZXRNb2R1bGVJbmZvKHRoaXMuJHJvdXRlLnBhcmFtcy5pZCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAodGhpcy4kcm91dGUucGFyYW1zLmlkID09PSB1bmRlZmluZWQpIHsvL+aWsOWingogICAgfSBlbHNlIHsKICAgICAgLy/nvJbovpEKICAgICAgdGhpcy5ub0ZyZXNoRmxhZyA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudFN0ZXBzID0gMTsKICAgICAgdGhpcy5nZXRNb2R1bGVJbmZvKHRoaXMuJHJvdXRlLnBhcmFtcy5pZCk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge30KfTs="},null]}
|