{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\sourceLayer\\dataODSCatalog\\FieldsManage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\sourceLayer\\dataODSCatalog\\FieldsManage\\index.vue","mtime":1746730556257},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgZGlhbG9nTWl4aW4gZnJvbSAnQC9taXhpbnMvZGlhbG9nLmpzJzsKaW1wb3J0IHV0aWxzIGZyb20gJ0AvaG90ZW50LXVpLXV0aWwuanMnOwppbXBvcnQgRW51bURpY3REaWFsb2cgZnJvbSAnLi9FbnVtRGljdERpYWxvZy52dWUnOwppbXBvcnQgTXVsdGlEaWN0RGlhbG9nIGZyb20gJy4vTXVsdGlEaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnkuanMnOwppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFPRFNDYXRhbG9nJzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdTb3VyY2VGaWVsZHNNYW5hZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIEVudW1EaWN0RGlhbG9nOiBFbnVtRGljdERpYWxvZywKICAgIE11bHRpRGljdERpYWxvZzogTXVsdGlEaWN0RGlhbG9nCiAgfSwKICBtaXhpbnM6IFtkaWFsb2dNaXhpbl0sCiAgcHJvcHM6IHsKICAgIGRhdGE6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4ge307CiAgICAgIH0KICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdmFyIGNoZWNrZXkgPSBmdW5jdGlvbiBjaGVja2V5KHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgewogICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcign5a2X5q6157yW56CB5LiN6IO95Li656m6JykpOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChfdGhpcy5mb3JtLmF0dHJEYXRhLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIGl0ZW0uY29kZSA9PT0gdmFsdWU7CiAgICAgICAgfSkubGVuZ3RoID4gMSkgewogICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCflrZfmrrXnvJbnoIHkuI3og73ph43lpI0hJykpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICAgIHJldHVybiB7CiAgICAgIGZpZWxkc1J1bGVzOiB7CiAgICAgICAgbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+Wtl+auteWQjeensOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBjb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5a2X5q6157yW56CB5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH0sIHsKICAgICAgICAgIHBhdHRlcm46IC9eW2EtekEtWl1bYS16QS1aMC05X10qJC8sCiAgICAgICAgICBtZXNzYWdlOiAn5Lul5a2X5q+N5byA5aS055qE5a2X5q+N44CB5pWw5a2X44CB5LiL5YiS57q/57uE5ZCIJywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH0sIHsKICAgICAgICAgIHZhbGlkYXRvcjogY2hlY2tleSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGZvcm06IHsKICAgICAgICBhdHRyRGF0YTogW10KICAgICAgfSwKICAgICAgaW1wb3J0RGF0YTogewogICAgICAgIHRhYmxlSWQ6ICcnCiAgICAgIH0sCiAgICAgIGRpYWxvZ1Zpc2libGVFbnVtOiBmYWxzZSwKICAgICAgZGlhbG9nVmlzaWJsZU11bHRpOiBmYWxzZSwKICAgICAgY3VycmVudFJvdzogbnVsbCwKICAgICAgaW5kZXg6IG51bGwsCiAgICAgIHRhYmVsRGF0YTogbnVsbCwKICAgICAgdGFibGVMb2FkaW5nOiBmYWxzZSwKICAgICAgdXBsb2FkTG9hZGluZzogZmFsc2UsCiAgICAgIHVwbG9hZFZpc2libGU6IGZhbHNlLAogICAgICBsb2FkaW5nOiBmYWxzZQogICAgfTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKF90aGlzMi5mb3JtLmF0dHJEYXRhKSB7CiAgICAgICAgdmFyIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgICAgIGlmIChrZXkgPT0gMTEzKSB7CiAgICAgICAgICAvLyA9PSA4MyAmJiBldmVudC5jdHJsS2V5CiAgICAgICAgICBfdGhpczIuYWRkQXR0clJvd3MoKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpczIuJHJlZnMuYXR0clRhYmxlU2Nyb2xsYmFySGVpZ2h0LmJvZHlXcmFwcGVyLnNjcm9sbFRvcCA9IF90aGlzMi4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsSGVpZ2h0OwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7CiAgICBhY3Rpb25Vcmw6IGZ1bmN0aW9uIGFjdGlvblVybChfKSB7CiAgICAgIHJldHVybiAiIi5jb25jYXQod2luZG93LmNvbnRleHQucG9ydGFsLCAiL2Jpei9kYXRhUmVzb3VyY2Uvb2RzRmllbGQvdjEvaW1wb3J0RmlsZSIpOwogICAgfQogIH0sIG1hcFN0YXRlKHsKICAgIGhlYWRlcnM6IGZ1bmN0aW9uIGhlYWRlcnMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge30sCiAgbWV0aG9kczogewogICAgaW5pdERhdGE6IGZ1bmN0aW9uIGluaXREYXRhKGRhdGEpIHsKICAgICAgdGhpcy50YWJlbERhdGEgPSBkYXRhOwogICAgICB0aGlzLmltcG9ydERhdGEudGFibGVJZCA9IGRhdGEuaWQ7CiAgICAgIHRoaXMuZ2V0RmllbGRzQnlUYWJsZSgpOwogICAgfSwKICAgIGdldEZpZWxkc0J5VGFibGU6IGZ1bmN0aW9uIGdldEZpZWxkc0J5VGFibGUoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRBUEkkZ2V0RmllbGRzTCwgZmllbGRMaXN0OwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzMy50YWJsZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBBUEkuZ2V0RmllbGRzTGlzdChfdGhpczMuZGF0YS5pZCk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkQVBJJGdldEZpZWxkc0wgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIGZpZWxkTGlzdCA9IF95aWVsZCRBUEkkZ2V0RmllbGRzTC5maWVsZExpc3Q7CiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZmllbGRMaXN0KTsKICAgICAgICAgICAgICBpZiAoZmllbGRMaXN0ICYmIGZpZWxkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIC8vIHRoaXMuZm9ybS5hdHRyRGF0YSA9IGZpZWxkTGlzdDsKICAgICAgICAgICAgICAgIF90aGlzMy5mb3JtLmF0dHJEYXRhID0gZmllbGRMaXN0LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5maWVsZFR5cGUgPT09ICcyJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm0uYXR0ckRhdGEuc29ydChmdW5jdGlvbiAoYSwgYikgewogICAgICAgICAgICAgICAgICByZXR1cm4gYS5zbiAtIGIuc247CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFsiY2F0Y2giXSgxKTsKICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnIpOwogICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0LnQwIHx8ICfotYTmupDpobnlrZfmrrXmn6Xor6LlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX3RoaXMzLnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTIpOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1sxLCA5LCAxMiwgMTVdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyBjaGFuZ2VEaWN0KGRhdGEpIHsKICAgIC8vICAgdGhpcy5jdXJyZW50Um93LmRpbWVuc2lvbklkID0gZGF0YS5pZDsKICAgIC8vICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZSh0aGlzLmluZGV4LCAxLCBkYXRhKTsKICAgIC8vIH0sCiAgICBjaGFuZ2VEaWN0OiBmdW5jdGlvbiBjaGFuZ2VEaWN0KGRhdGEsIGtleSkgewogICAgICAvLyB0aGlzLmN1cnJlbnRSb3cuZGltZW5zaW9uSWQgPSBkYXRhLmlkOwogICAgICAvLyB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuaW5kZXgsIDEsIGRhdGEpOwogICAgICB0aGlzLmN1cnJlbnRSb3cuZGltZW5zaW9uSWQgPSBkYXRhW2tleV07CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UodGhpcy5pbmRleCwgMSwgdGhpcy5jdXJyZW50Um93KTsKICAgIH0sCiAgICAvLyDmlrDlop7lrZfmrrUKICAgIGFkZEF0dHJSb3dzOiBmdW5jdGlvbiBhZGRBdHRyUm93cygpIHsKICAgICAgdmFyIGxhc3QgPSB0aGlzLmZvcm0uYXR0ckRhdGFbdGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCAtIDFdOwogICAgICB2YXIgc24gPSBsYXN0ICYmIGxhc3Quc24gPyBsYXN0LnNuICsgMSA6IDE7CiAgICAgIHZhciByb3cgPSB7CiAgICAgICAgdGFibGVJZDogdGhpcy50YWJlbERhdGEuaWQsCiAgICAgICAgY29kZTogJycsCiAgICAgICAgbmFtZTogJycsCiAgICAgICAgZGVzYzogJycsCiAgICAgICAgZmllbGRUeXBlOiAnMicsCiAgICAgICAgaXNJbml0RmlsZWQ6ICdOJywKICAgICAgICBpc1BrOiAnMCcsCiAgICAgICAgaXNSZXF1aXJlZDogJzAnLAogICAgICAgIFVpQ29tQ29kZTogJ2lucHV0JywKICAgICAgICBkYXRhVHlwZTogJ3ZhcmNoYXInLAogICAgICAgIGRlZmF1bHRWYWx1ZTogJycsCiAgICAgICAgZm9ybWF0OiAnJywKICAgICAgICBmaWVsZFZhbHVlVHlwZTogMSwKICAgICAgICBkaW1lbnNpb25JZDogJycsCiAgICAgICAgdW5pdDogJycsCiAgICAgICAgYXR0ckxlbmd0aDogMjAwLAogICAgICAgIGRlY2ltYWxMZW46IDAsCiAgICAgICAgaXNFbmNyeXB0OiAnMCcsCiAgICAgICAgaXNFZGl0OiAnMCcsCiAgICAgICAgaXNEZXNlbnNpdGl6ZTogJzAnLAogICAgICAgIGlzUGFydGl0aW9uOiAnMCcsCiAgICAgICAgaW5kZXg6IHRoaXMuZm9ybS5hdHRyRGF0YS5sZW5ndGggKyAxCiAgICAgIH07CiAgICAgIHNuID8gcm93LnNuID0gc24gOiBudWxsOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuZm9ybS5hdHRyRGF0YS5sZW5ndGgsIDAsIHJvdyk7CiAgICB9LAogICAgY2hhbmdlRmllbGRWYWx1ZVR5cGU6IGZ1bmN0aW9uIGNoYW5nZUZpZWxkVmFsdWVUeXBlKHZhbCwgcm93LCBpbmRleCkgewogICAgICByb3cuZGltZW5zaW9uSWQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gdmFsOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxLCByb3cpOwogICAgfSwKICAgIC8vIFVJ57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBjaGFuZ2VVSVR5cGU6IGZ1bmN0aW9uIGNoYW5nZVVJVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgY29uc29sZS5sb2codmFsLCByb3csIGluZGV4KTsKICAgICAgcm93LmRhdGFUeXBlID0gJ3ZhcmNoYXInOwogICAgICByb3cuZm9ybWF0ID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9IDE7CiAgICAgIGlmICh2YWwgPT09ICdkYXRlJykgewogICAgICAgIHJvdy5kYXRhVHlwZSA9ICdkYXRlJzsKICAgICAgICByb3cuZm9ybWF0ID0gJ3l5eXktTU0tZGQnOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ2RhdGV0aW1lJykgewogICAgICAgIHJvdy5kYXRhVHlwZSA9ICdkYXRldGltZSc7CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdzZWxlY3QnIHx8IHZhbCA9PT0gJ2NoZWNrYm94JyB8fCB2YWwgPT09ICdyYWRpbycpIHsKICAgICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAyOwogICAgICB9CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEsIHJvdyk7CiAgICB9LAogICAgLy8g5pWw5o2u57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBjaGFuZ2VEYXRhVHlwZTogZnVuY3Rpb24gY2hhbmdlRGF0YVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIHJvdy5hdHRyTGVuZ3RoID0gMDsKICAgICAgcm93LmRlY2ltYWxMZW4gPSAwOwogICAgICByb3cuZm9ybWF0ID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9IDE7CiAgICAgIHJvdy5kaW1lbnNpb25JZCA9ICcnOwogICAgICBpZiAodmFsID09PSAnZGF0ZScpIHsKICAgICAgICByb3cuZm9ybWF0ID0gJ3l5eXktTU0tZGQnOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ2RhdGV0aW1lJykgewogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcyc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAndmFyY2hhcicpIHsKICAgICAgICByb3cuYXR0ckxlbmd0aCA9IDIwMDsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdudW1iZXInKSB7CiAgICAgICAgcm93LmF0dHJMZW5ndGggPSAxMDsKICAgICAgICByb3cuZGVjaW1hbExlbiA9IDI7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDpgInmi6nlrZflhbgKICAgIGhhbmRsZVNlYXJjaERpY3Q6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaERpY3Qocm93LCAkaW5kZXgpIHsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB0aGlzLmluZGV4ID0gJGluZGV4OwogICAgICBpZiAocm93LmZpZWxkVmFsdWVUeXBlID09PSAyKSB7CiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlRW51bSA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAocm93LmZpZWxkVmFsdWVUeXBlID09PSAzKSB7CiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlTXVsdGkgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocGFyYW0sIGRlcGxveWVkKSB7CiAgICAgIGlmIChkZXBsb3llZCAmJiBwYXJhbS5yb3cuaWQpIHJldHVybjsKICAgICAgdGhpcy5oYW5kbGVDb21tYW5kKHBhcmFtKTsKICAgIH0sCiAgICBoYW5kbGVDb21tYW5kOiBmdW5jdGlvbiBoYW5kbGVDb21tYW5kKHBhcmFtKSB7CiAgICAgIHN3aXRjaCAocGFyYW0uY29tbWFuZCkgewogICAgICAgIGNhc2UgJ2RlbCc6CiAgICAgICAgICB0aGlzLmRlbGV0ZUF0dHJSb3dzKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndXAnOgogICAgICAgICAgdGhpcy5hdHRyVXAocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdkb3duJzoKICAgICAgICAgIHRoaXMuYXR0ckRvd24ocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0sCiAgICAvLyDliKDpmaTlrZfmrrUg5Lyq5Yig6ZmkIOiuvue9ruWtl+autSBzdGF0dXMg5YC8IGhpZGUKICAgIGlzRGVsOiBmdW5jdGlvbiBpc0RlbChyb3csIGluZGV4KSB7fSwKICAgIC8vIOWIoOmZpOWtl+autQogICAgZGVsZXRlQXR0clJvd3M6IGZ1bmN0aW9uIGRlbGV0ZUF0dHJSb3dzKHJvdywgaW5kZXgpIHsKICAgICAgaWYgKHJvdy5pc0luaXRGaWxlZCA9PT0gJ1knKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor6XlrZfmrrXkuLrliJ3lp4vlrZfmrrXvvIzkuI3lj6/liKDpmaTvvIEnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgIC8vIGlmICghcm93LmlkKSB7CiAgICAgIC8vICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgIC8vICAgcmV0dXJuOwogICAgICAvLyB9CiAgICAgIC8vCiAgICAgIC8vIHRoaXMuJGNvbmZpcm0oYOaYr+WQpuWIoOmZpOWtl+aute+8iCR7cm93Lm5hbWV977yJP2AsICfmj5DnpLonLCB7CiAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAvLyAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAvLyAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgLy8gfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAgIC8vICAgYXdhaXQgQVBJLmRlbEZpZWxkcyhyb3cuaWQpOwogICAgICAvLyAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7CiAgICAgIC8vICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgIC8vIH0pOwoKICAgICAgLy8gICBpZiAoIXJvdy5pZCkgewogICAgICAvLyAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgIC8vICAgfQogICAgICAvLyAgIHRoaXMuaXNEZWwocm93LCBpbmRleCk7CiAgICB9LAogICAgYXR0clVwOiBmdW5jdGlvbiBhdHRyVXAocm93LCBpbmRleCkgewogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCAtIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uc24gPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5zbjsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCAtIDFdLnNuID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uc24gKyAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEgPSB1dGlscy5hcnJheU1vdmUodGhpcy5mb3JtLmF0dHJEYXRhLCByb3csICd1cCcpOwogICAgfSwKICAgIGF0dHJEb3duOiBmdW5jdGlvbiBhdHRyRG93bihyb3csIGluZGV4KSB7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5zbiA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uc24gKyAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggKyAxXS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCArIDFdLmluZGV4IC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4ICsgMV0uc24gPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLnNuIC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybS5hdHRyRGF0YSwgcm93LCAnZG93bicpOwogICAgfSwKICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiBvbkNhbmNlbCgpIHsKICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YSA9IFtdOwogICAgfSwKICAgIC8vIGFzeW5jIGhhbmRsZVB1Ymxpc2goKSB7CiAgICAvLyAgIHRoaXMuJGNvbmZpcm0oJ+WPkeW4g+WQjuaVsOaNruWwhuaXoOazleS/ruaUueWSjOWIoOmZpCwg5piv5ZCm57un57utPycsICfmj5DnpLonLCB7CiAgICAvLyAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgLy8gICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgLy8gICAgIHR5cGU6ICd3YXJuaW5nJywKICAgIC8vICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAvLyAgICAgdHJ5IHsKICAgIC8vICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAvLyAgICAgICBhd2FpdCBBUEkucHVibGlzaFRhYmxlKHRoaXMuZGF0YS5pZCk7CiAgICAvLyAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WPkeW4g+aIkOWKnycpOwogICAgLy8gICAgICAgdGhpcy5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICAvLyAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTsKICAgIC8vICAgICB9IGZpbmFsbHkgewogICAgLy8gICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAvLyAgICAgfQogICAgLy8gICB9KTsKICAgIC8vIH0sCiAgICAvLyBvbkNvbmZpcm0oKSB7CiAgICAvLyAgIHRoaXMuJHJlZnMuZm9ybS52YWxpZGF0ZShhc3luYyAodmFsaWQsIG9iamVjdCkgPT4gewogICAgLy8gICAgIGlmICh2YWxpZCkgewogICAgLy8gICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtLmF0dHJEYXRhKTsKICAgIC8vICAgICAgIHRyeSB7CiAgICAvLyAgICAgICAgIGNvbnN0IHsgc3RhdGUsIG1lc3NhZ2UgfSA9IGF3YWl0IEFQSS5zYXZlRmllbGRzKHRoaXMuZm9ybS5hdHRyRGF0YSk7CiAgICAvLyAgICAgICAgIGlmIChzdGF0ZSkgewogICAgLy8gICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2X5q615L+d5a2Y5oiQ5YqfJyk7CiAgICAvLyAgICAgICAgICAgdGhpcy4kZW1pdCgnY29uZmlybScpOwogICAgLy8gICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgLy8gICAgICAgICB9IGVsc2UgewogICAgLy8gICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfmk43kvZzlpLHotKUnKTsKICAgIC8vICAgICAgICAgfQogICAgLy8gICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAvLyAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhlcnIgfHwgJ+aTjeS9nOWksei0pScpOwogICAgLy8gICAgICAgfSBmaW5hbGx5IHsKICAgIC8vICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAvLyAgICAgICB9CiAgICAvLyAgICAgfSBlbHNlIHsKICAgIC8vICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhg5pyJJHtPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aH3kuKrlrZfmrrXmnKrpgJrov4fmoKHpqozvvIzor7fmraPnoa7loavlhpnooajljZXjgIJgKTsKICAgIC8vICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgLy8gICAgIH0KICAgIC8vICAgfSk7CiAgICAvLyB9LAogICAgb25Db25maXJtOiBmdW5jdGlvbiBvbkNvbmZpcm0oKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmZvcm0udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMih2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICB2YXIgZmllbGQsIHBhcmFtczsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgZmllbGQgPSBfdGhpczQuZm9ybS5hdHRyRGF0YTsKICAgICAgICAgICAgICAgIHBhcmFtcyA9IGZpZWxkOwogICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSA0OwogICAgICAgICAgICAgICAgaWYgKCFfdGhpczQuZGF0YS5kZXBsb3llZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEwOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gODsKICAgICAgICAgICAgICAgIHJldHVybiBBUEkuc2F2ZU9yVXBkYXRlRmllbGRzKHBhcmFtcyk7CiAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEyOwogICAgICAgICAgICAgICAgcmV0dXJuIEFQSS5zYXZlRmllbGRzKHBhcmFtcyk7CiAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCflrZfmrrXkv53lrZjmiJDlip8nKTsKICAgICAgICAgICAgICAgIF90aGlzNC52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICBfdGhpczQuJGVtaXQoJ2NvbmZpcm0nKTsKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxNzsKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSg0KTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5pON5L2c5aSx6LSlJyk7CiAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMjA7CiAgICAgICAgICAgICAgICBfdGhpczQubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5maW5pc2goMjApOwogICAgICAgICAgICAgIGNhc2UgMjM6CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI3OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAyNToKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAyNzoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzQsIDE3LCAyMCwgMjNdXSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwKICAgIGRvd25sb2FkOiBmdW5jdGlvbiBkb3dubG9hZCgpIHsKICAgICAgdmFyIGZpbGVOYW1lID0gJ+aVsOaNrui0tOa6kOWxgi3mlbDmja7ooajlrZfmrrXmuIXljZUueGxzeCc7CiAgICAgIC8vIGNvbnN0IGZpbGUgPSBgLi9maWxlL2Rvd25sb2FkLyR7ZmlsZU5hbWV9YDsKICAgICAgdmFyIGZpbGUgPSB3aW5kb3cuY29udGV4dC5kb3dubG9hZCArIGZpbGVOYW1lOwogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gZmlsZTsKICAgICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lOyAvLyDorr7nva7kuIvovb3mlofku7bmlofku7blkI0KICAgICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOwogICAgICBhLmNsaWNrKCk7CiAgICAgIGEucmVtb3ZlKCk7CiAgICB9LAogICAgLy8gIOWvvOWFpeaWh+S7tuS4iuS8oOWJjQogICAgYmVmb3JlVXBsb2FkOiBmdW5jdGlvbiBiZWZvcmVVcGxvYWQoZmlsZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy51cGxvYWRWaXNpYmxlID0gZmFsc2U7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgX3RoaXM1LnVwbG9hZExvYWRpbmcgPSB0cnVlOwogICAgICAgIHZhciBzaXplID0gZmlsZS5zaXplLAogICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICBfdGhpczUuJGNvbmZpcm0oIlx1OEJGN1x1Nzg2RVx1OEJBNFx1NjYyRlx1NTQyNlx1NUJGQ1x1NTE2NSBcdTIwMUMiLmNvbmNhdChuYW1lLCAiXHUyMDFEIFx1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgcGFzc2VkT3JOb3QgPSB0cnVlOyAvLyDmmK/lkKbpgJrov4fpqozor4EKICAgICAgICAgIHZhciB0eXBlUmVndWxhciA9IC9cLih4bHN8eGxzeCkkL2k7CiAgICAgICAgICB2YXIgdmVyaWZpY2F0aW9uID0gW3sKICAgICAgICAgICAgY29uZGl0aW9uOiAhdHlwZVJlZ3VsYXIudGVzdChuYW1lKSwKICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbiByZXN1bHQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS4kbWVzc2FnZS5lcnJvcign5Y+q6IO95LiK5LygeGxz5oiWeGxzeOaWh+S7tuexu+WeiycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9XTsKICAgICAgICAgIHZlcmlmaWNhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmNvbmRpdGlvbikgewogICAgICAgICAgICAgIGl0ZW0ucmVzdWx0KCk7CiAgICAgICAgICAgICAgcGFzc2VkT3JOb3QgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczUudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgX3RoaXM1LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS53YXJuaW5nKCflt7Llj5bmtojkuIrkvKAnKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5oiQ5YqfCiAgICBoYW5kbGVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVTdWNjZXNzKHJlcykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCFyZXMuc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgICAgICAgX3RoaXM2LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNi5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDg7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2UuZXJyb3IocmVzLm1lc3NhZ2UpOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDlpLHotKUKICAgIGhhbmRsZUVycm9yOiBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHsKICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIHRoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgfQogIH0KfTs="},null]}