{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventRegistration\\components\\ScopeClassify\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventRegistration\\components\\ScopeClassify\\index.vue","mtime":1755157700793},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucGFkLXN0YXJ0LmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnknOwppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHsgdGFibGVEYXRhIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgdHVubmVsRGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3R1bm5lbEluZm8nOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1Njb3BlQ2xhc3NpZnknLAogIHByb3BzOiB7CiAgICB0eXBlOiB7CiAgICAgIGRlZmF1bHQ6ICcxJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgcm9hZElkOiB7CiAgICAgIGRlZmF1bHQ6ICcnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICBwaWxlTnVtYmVyUmFuZ2U6IHsKICAgICAgZGVmYXVsdDogJycsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIGluZm86IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7fSwKICAgICAgdHlwZTogT2JqZWN0CiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiHquWumuS5iemqjOivgeinhOWIme+8muacieWAvOaXtuW/hemhu+WcqOiMg+WbtOWGhQogICAgdmFyIHZhbGlkYXRlUmFuZ2UxID0gZnVuY3Rpb24gdmFsaWRhdGVSYW5nZTEoKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbiAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgICAgaWYgKF90aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGVnID09PSB1bmRlZmluZWQgJiYgX3RoaXMuYWRkRWRpdEZvcm0uc3RhcnRQZWdBZGQgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9IGVsc2UgaWYgKCFfdGhpcy5pc1ZhbHVlSW5SYW5nZShfdGhpcy5jb21iaW5lZFZhbHVlMSwgX3RoaXMuc3RhcnRWYWx1ZSwgX3RoaXMuZW5kVmFsdWUpKSB7CiAgICAgICAgICBfdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHVuZGVmaW5lZDsKICAgICAgICAgIF90aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGVnQWRkID0gdW5kZWZpbmVkOwogICAgICAgICAgX3RoaXMucGxhY2VEYXRhLnN0YXJ0UGVnID0gJyc7CiAgICAgICAgICB2YXIgcGxhY2VEYXRhID0gX3RoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgICAgICBfdGhpcy4kZW1pdCgnY2hhbmdlJywgcGxhY2VEYXRhKTsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigiXHU2MjQwXHU1ODZCXHU1MTk5XHU3Njg0XHU2ODY5XHU1M0Y3XHU0RTBEXHU1NzI4Ii5jb25jYXQoX3RoaXMuc3RhcnRWYWx1ZSwgIi0iKS5jb25jYXQoX3RoaXMuZW5kVmFsdWUsICJcdTgzMDNcdTU2RjRcdTUxODUiKSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH07CiAgICB2YXIgdmFsaWRhdGVSYW5nZTIgPSBmdW5jdGlvbiB2YWxpZGF0ZVJhbmdlMigpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChydWxlLCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgICBpZiAoX3RoaXMuYWRkRWRpdEZvcm0uZW5kUGVnID09PSB1bmRlZmluZWQgJiYgX3RoaXMuYWRkRWRpdEZvcm0uZW5kUGVnQWRkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfSBlbHNlIGlmICghX3RoaXMuaXNWYWx1ZUluUmFuZ2UoX3RoaXMuY29tYmluZWRWYWx1ZTIsIF90aGlzLnN0YXJ0VmFsdWUsIF90aGlzLmVuZFZhbHVlKSkgewogICAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0uZW5kUGVnID0gdW5kZWZpbmVkOwogICAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0uZW5kUGVnQWRkID0gdW5kZWZpbmVkOwogICAgICAgICAgX3RoaXMucGxhY2VEYXRhLmVuZFBlZyA9ICcnOwogICAgICAgICAgdmFyIHBsYWNlRGF0YSA9IF90aGlzLmZvcm1hdFBhbGNlRGF0YSgpOwogICAgICAgICAgX3RoaXMuJGVtaXQoJ2NoYW5nZScsIHBsYWNlRGF0YSk7CiAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIlx1NjI0MFx1NTg2Qlx1NTE5OVx1NzY4NFx1Njg2OVx1NTNGN1x1NEUwRFx1NTcyOCIuY29uY2F0KF90aGlzLnN0YXJ0VmFsdWUsICItIikuY29uY2F0KF90aGlzLmVuZFZhbHVlLCAiXHU4MzAzXHU1NkY0XHU1MTg1IikpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9OwogICAgcmV0dXJuIHsKICAgICAgLy/moanlj7cKICAgICAgbnVtYmVyU3RhdGlvbkRhdGE6IFtdLAogICAgICAvLyDmlLbotLnnq5kKICAgICAgdG9sbFN0YXRpb25EYXRhOiBbXSwKICAgICAgLy8g6Zqn6YGTCiAgICAgIHR1bm5lbERhdGE6IFtdLAogICAgICAvLyDkupLpgJrnq4vkuqQKICAgICAgZ3JhZGVPdmVyRGF0YTogW10sCiAgICAgIC8vIOacjeWKoeWMugogICAgICBzZXJ2aWNlQXJlYURhdGE6IFtdLAogICAgICBhZGRFZGl0Rm9ybTogewogICAgICAgIHN0YXJ0UGVnOiB1bmRlZmluZWQsCiAgICAgICAgc3RhcnRQZWdBZGQ6IHVuZGVmaW5lZCwKICAgICAgICBlbmRQZWc6IHVuZGVmaW5lZCwKICAgICAgICBlbmRQZWdBZGQ6IHVuZGVmaW5lZCwKICAgICAgICBzdGFydFBhdHJvbElkOiAnJywKICAgICAgICBlbmRQYXRyb2xJZDogJycsCiAgICAgICAgcGxhY2VEZXRhaWw6IFtdLAogICAgICAgIHN3elBsYWNlRGV0YWlsOiBbXSwKICAgICAgICBsalBsYWNlRGV0YWlsOiBbXSwKICAgICAgICBzZFBsYWNlRGV0YWlsOiBbXSwKICAgICAgICBmd3FQbGFjZURldGFpbDogW10KICAgICAgfSwKICAgICAgcnVsZXM6IHsKICAgICAgICBzdGFydFBlZzogW3sKICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdGVSYW5nZTEoKSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGVuZFBlZzogW3sKICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdGVSYW5nZTIoKSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIHBsYWNlRGF0YToge30sCiAgICAgIHN0YXJ0VmFsdWU6IDAsCiAgICAgIGVuZFZhbHVlOiAwCiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHt9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7fSwKICBjb21wdXRlZDogewogICAgY29tYmluZWRWYWx1ZTE6IGZ1bmN0aW9uIGNvbWJpbmVkVmFsdWUxKCkgewogICAgICByZXR1cm4gcGFyc2VGbG9hdCgiIi5jb25jYXQodGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZywgIi4iKS5jb25jYXQoU3RyaW5nKHRoaXMuYWRkRWRpdEZvcm0uc3RhcnRQZWdBZGQpLnBhZFN0YXJ0KDMsICcwJykpKSB8fCAwOwogICAgfSwKICAgIGNvbWJpbmVkVmFsdWUyOiBmdW5jdGlvbiBjb21iaW5lZFZhbHVlMigpIHsKICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoIiIuY29uY2F0KHRoaXMuYWRkRWRpdEZvcm0uZW5kUGVnLCAiLiIpLmNvbmNhdChTdHJpbmcodGhpcy5hZGRFZGl0Rm9ybS5lbmRQZWdBZGQpLnBhZFN0YXJ0KDMsICcwJykpKSB8fCAwOwogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIHR5cGU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwsIG9sZFZhbCkgewogICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uc3RhcnRQZWcgPSB1bmRlZmluZWQ7CiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZ0FkZCA9IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmVuZFBlZyA9IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmVuZFBlZ0FkZCA9IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJzsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5wbGFjZURldGFpbCA9IFtdOwogICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uc3d6UGxhY2VEZXRhaWwgPSBbXTsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmxqUGxhY2VEZXRhaWwgPSBbXTsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnNkUGxhY2VEZXRhaWwgPSBbXTsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmZ3cVBsYWNlRGV0YWlsID0gW107CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHJvYWRJZDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCwgb2xkVmFsKSB7CiAgICAgICAgaWYgKG5ld1ZhbCkgewogICAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHVuZGVmaW5lZDsKICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uc3RhcnRQZWdBZGQgPSB1bmRlZmluZWQ7CiAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmVuZFBlZyA9IHVuZGVmaW5lZDsKICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uZW5kUGVnQWRkID0gdW5kZWZpbmVkOwogICAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBhdHJvbElkID0gJyc7CiAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnBsYWNlRGV0YWlsID0gW107CiAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnN3elBsYWNlRGV0YWlsID0gW107CiAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmxqUGxhY2VEZXRhaWwgPSBbXTsKICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uc2RQbGFjZURldGFpbCA9IFtdOwogICAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5md3FQbGFjZURldGFpbCA9IFtdOwogICAgICAgICAgdGhpcy5nZXRBbG9uZ1JvdXRlSW5mbyhuZXdWYWwpOwogICAgICAgICAgdGhpcy5nZXRUdW5uZWxEYXRhKG5ld1ZhbCk7CiAgICAgICAgICB0aGlzLnBhcnNlU3RyaW5nKCk7CiAgICAgICAgfQogICAgICB9LAogICAgICBkZWVwOiB0cnVlLAogICAgICAvLyDlvIDlkK/mt7Hluqbnm5HlkKwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9CiAgfSwKICBtZXRob2RzOiB7CiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgLy/mlZHmj7TlkIzmraUKICAgIHJlc2N1ZVN5bmNocm9uaXphdGlvbjogZnVuY3Rpb24gcmVzY3VlU3luY2hyb25pemF0aW9uKGRhdGEpIHsKICAgICAgaWYgKGRhdGEucGVnVmFsKSB7CiAgICAgICAgdmFyIHN0YXJ0UGVnQXJyID0gZGF0YS5wZWdWYWwuc3BsaXQoJysnKTsKICAgICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ3N0YXJ0UGVnJywgc3RhcnRQZWdBcnJbMF0uc2xpY2UoMSkpOwogICAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnc3RhcnRQZWdBZGQnLCBzdGFydFBlZ0FyclsxXSk7CiAgICAgIH0KICAgICAgaWYgKGRhdGEuc3RhcnRQYXRyb2xJZCkgewogICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uc3RhcnRQYXRyb2xJZCA9IGRhdGEuc3RhcnRQYXRyb2xJZDsKICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sTmFtZSA9IGRhdGEuc3RhcnRQYXRyb2xOYW1lOwogICAgICB9CiAgICAgIGlmIChkYXRhLmVuZFBhdHJvbElkKSB7CiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5lbmRQYXRyb2xJZCA9IGRhdGEuZW5kUGF0cm9sSWQ7CiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5lbmRQYXRyb2xOYW1lID0gZGF0YS5lbmRQYXRyb2xOYW1lOwogICAgICB9CiAgICB9LAogICAgcGFyc2VTdHJpbmc6IGZ1bmN0aW9uIHBhcnNlU3RyaW5nKCkgewogICAgICBpZiAodGhpcy5waWxlTnVtYmVyUmFuZ2UpIHsKICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLnBpbGVOdW1iZXJSYW5nZS5tYXRjaCgvXltrS10oXGQrKSg/OlwrKFxkezEsM30pKT9+W2tLXShcZCspKD86XCsoXGR7MSwzfSkpPyQvKTsKICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBwYXJzZUZsb2F0KCIiLmNvbmNhdChtYXRjaFsxXSwgIi4iKS5jb25jYXQoU3RyaW5nKG1hdGNoWzJdKS5wYWRTdGFydCgzLCAnMCcpKSkgfHwgMDsKICAgICAgICB0aGlzLmVuZFZhbHVlID0gcGFyc2VGbG9hdCgiIi5jb25jYXQobWF0Y2hbM10sICIuIikuY29uY2F0KFN0cmluZyhtYXRjaFs0XSkucGFkU3RhcnQoMywgJzAnKSkpIHx8IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gMDsKICAgICAgICB0aGlzLmVuZFZhbHVlID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgfQogICAgfSwKICAgIGlzVmFsdWVJblJhbmdlOiBmdW5jdGlvbiBpc1ZhbHVlSW5SYW5nZSh2YWx1ZSwgYm91bmQxLCBib3VuZDIpIHsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSByZXR1cm4gZmFsc2U7CiAgICAgIGlmICghU3RyaW5nKHZhbHVlKS5pbmNsdWRlcygnLicpKSByZXR1cm4gdHJ1ZTsKICAgICAgdmFyIF9yZWYgPSBbTWF0aC5taW4oYm91bmQxLCBib3VuZDIpLCBNYXRoLm1heChib3VuZDEsIGJvdW5kMildLAogICAgICAgIG1pbiA9IF9yZWZbMF0sCiAgICAgICAgbWF4ID0gX3JlZlsxXTsKICAgICAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7CiAgICB9LAogICAgc3RhcnRQZWdDaGFuZ2U6IGZ1bmN0aW9uIHN0YXJ0UGVnQ2hhbmdlKHZhbCkgewogICAgICBpZiAodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLmNvbWJpbmVkVmFsdWUxLCB0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWUpKSB7CiAgICAgICAgdGhpcy5wbGFjZURhdGEuc3RhcnRQZWcgPSB2YWw7CiAgICAgICAgdmFyIHBsYWNlRGF0YSA9IHRoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgcGxhY2VEYXRhKTsKICAgICAgfQogICAgfSwKICAgIHN0YXJ0UGVnQWRkQ2hhbmdlOiBmdW5jdGlvbiBzdGFydFBlZ0FkZENoYW5nZSh2YWwpIHsKICAgICAgaWYgKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5jb21iaW5lZFZhbHVlMSwgdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlKSkgewogICAgICAgIHRoaXMucGxhY2VEYXRhLnN0YXJ0UGVnQWRkID0gdmFsOwogICAgICAgIHZhciBwbGFjZURhdGEgPSB0aGlzLmZvcm1hdFBhbGNlRGF0YSgpOwogICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHBsYWNlRGF0YSk7CiAgICAgIH0KICAgIH0sCiAgICBlbmRQZWdDaGFuZ2U6IGZ1bmN0aW9uIGVuZFBlZ0NoYW5nZSh2YWwpIHsKICAgICAgaWYgKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5jb21iaW5lZFZhbHVlMiwgdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlKSkgewogICAgICAgIHRoaXMucGxhY2VEYXRhLmVuZFBlZyA9IHZhbDsKICAgICAgICB2YXIgcGxhY2VEYXRhID0gdGhpcy5mb3JtYXRQYWxjZURhdGEoKTsKICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBwbGFjZURhdGEpOwogICAgICB9CiAgICB9LAogICAgZW5kUGVnQWRkQ2hhbmdlOiBmdW5jdGlvbiBlbmRQZWdBZGRDaGFuZ2UodmFsKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuY29tYmluZWRWYWx1ZTIsIHRoaXMuc3RhcnRWYWx1ZSwgdGhpcy5lbmRWYWx1ZSkpIHsKICAgICAgICB0aGlzLnBsYWNlRGF0YS5lbmRQZWdBZGQgPSB2YWw7CiAgICAgICAgdmFyIHBsYWNlRGF0YSA9IHRoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgcGxhY2VEYXRhKTsKICAgICAgfQogICAgfSwKICAgIGZvcm1hdFBhbGNlRGF0YTogZnVuY3Rpb24gZm9ybWF0UGFsY2VEYXRhKCkgewogICAgICB2YXIgX3RoaXMkcGxhY2VEYXRhID0gdGhpcy5wbGFjZURhdGEsCiAgICAgICAgX3RoaXMkcGxhY2VEYXRhJHN0YXJ0ID0gX3RoaXMkcGxhY2VEYXRhLnN0YXJ0UGVnLAogICAgICAgIHN0YXJ0UGVnID0gX3RoaXMkcGxhY2VEYXRhJHN0YXJ0ID09PSB2b2lkIDAgPyAnJyA6IF90aGlzJHBsYWNlRGF0YSRzdGFydCwKICAgICAgICBfdGhpcyRwbGFjZURhdGEkc3RhcnQyID0gX3RoaXMkcGxhY2VEYXRhLnN0YXJ0UGVnQWRkLAogICAgICAgIHN0YXJ0UGVnQWRkID0gX3RoaXMkcGxhY2VEYXRhJHN0YXJ0MiA9PT0gdm9pZCAwID8gJycgOiBfdGhpcyRwbGFjZURhdGEkc3RhcnQyLAogICAgICAgIF90aGlzJHBsYWNlRGF0YSRlbmRQZSA9IF90aGlzJHBsYWNlRGF0YS5lbmRQZWcsCiAgICAgICAgZW5kUGVnID0gX3RoaXMkcGxhY2VEYXRhJGVuZFBlID09PSB2b2lkIDAgPyAnJyA6IF90aGlzJHBsYWNlRGF0YSRlbmRQZSwKICAgICAgICBfdGhpcyRwbGFjZURhdGEkZW5kUGUyID0gX3RoaXMkcGxhY2VEYXRhLmVuZFBlZ0FkZCwKICAgICAgICBlbmRQZWdBZGQgPSBfdGhpcyRwbGFjZURhdGEkZW5kUGUyID09PSB2b2lkIDAgPyAnJyA6IF90aGlzJHBsYWNlRGF0YSRlbmRQZTIsCiAgICAgICAgX3RoaXMkcGxhY2VEYXRhJHN0YXJ0MyA9IF90aGlzJHBsYWNlRGF0YS5zdGFydFBhdHJvbCwKICAgICAgICBzdGFydFBhdHJvbCA9IF90aGlzJHBsYWNlRGF0YSRzdGFydDMgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMkcGxhY2VEYXRhJHN0YXJ0MywKICAgICAgICBfdGhpcyRwbGFjZURhdGEkZW5kUGEgPSBfdGhpcyRwbGFjZURhdGEuZW5kUGF0cm9sLAogICAgICAgIGVuZFBhdHJvbCA9IF90aGlzJHBsYWNlRGF0YSRlbmRQYSA9PT0gdm9pZCAwID8gJycgOiBfdGhpcyRwbGFjZURhdGEkZW5kUGEsCiAgICAgICAgX3RoaXMkcGxhY2VEYXRhJHBsYWNlID0gX3RoaXMkcGxhY2VEYXRhLnBsYWNlRGV0YWlsLAogICAgICAgIHBsYWNlRGV0YWlsID0gX3RoaXMkcGxhY2VEYXRhJHBsYWNlID09PSB2b2lkIDAgPyBbXSA6IF90aGlzJHBsYWNlRGF0YSRwbGFjZTsKICAgICAgdmFyIHN0YXJ0ID0gc3RhcnRQZWcgPyAnSycgKyBzdGFydFBlZyArIChzdGFydFBlZ0FkZCAhPT0gJycgPyAnKycgKyBzdGFydFBlZ0FkZCA6ICcnKSA6ICcnOwogICAgICB2YXIgZW5kID0gZW5kUGVnID8gJ0snICsgZW5kUGVnICsgKGVuZFBlZ0FkZCAhPT0gJycgPyAnKycgKyBlbmRQZWdBZGQgOiAnJykgOiAnJzsKICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJzEnKSB7CiAgICAgICAgcmV0dXJuIChzdGFydFBhdHJvbCA/IHN0YXJ0UGF0cm9sIDogJycpICsgKGVuZFBhdHJvbCA/ICfoh7MnICsgZW5kUGF0cm9sIDogJycpICsgKHN0YXJ0ID8gJycgKyBzdGFydCA6ICcnKSArIChlbmQgPyAnLScgKyBlbmQgOiAnJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICIgIi5jb25jYXQocGxhY2VEZXRhaWwuam9pbign44CBJykpOwogICAgICB9CiAgICB9LAogICAgLy8g5qC55o2u6Lev5q615p+l6K+i5rK/57q/5L+h5oGvCiAgICBnZXRBbG9uZ1JvdXRlSW5mbzogZnVuY3Rpb24gZ2V0QWxvbmdSb3V0ZUluZm8ocm9hZElkKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIGRhdGEsIF95aWVsZCR0YWJsZURhdGEsIF95aWVsZCR0YWJsZURhdGEkdG90YSwgdG90YWwsIF95aWVsZCR0YWJsZURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMDsKICAgICAgICAgICAgICBkYXRhID0gewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgICAgICAgICB0b3RhbDogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRTZWdtZW50SWQnLAogICAgICAgICAgICAgICAgICB2YWx1ZTogcm9hZElkCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGF0YShyZWZpbmVSZXF1ZXN0Qm9keShkYXRhKSk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHRvdGEgPSBfeWllbGQkdGFibGVEYXRhLnRvdGFsOwogICAgICAgICAgICAgIHRvdGFsID0gX3lpZWxkJHRhYmxlRGF0YSR0b3RhID09PSB2b2lkIDAgPyAwIDogX3lpZWxkJHRhYmxlRGF0YSR0b3RhOwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkcm93cyA9IF95aWVsZCR0YWJsZURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRhYmxlRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0YWJsZURhdGEkcm93czsKICAgICAgICAgICAgICAvL+ahqeWPtwogICAgICAgICAgICAgIF90aGlzMi5udW1iZXJTdGF0aW9uRGF0YSA9IHJvd3MuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnMycgfHwgaXRlbS50eXBlID09PSAnMScgfHwgaXRlbS50eXBlID09PSAnMTEnOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIC8vIOaUtui0ueermQogICAgICAgICAgICAgIF90aGlzMi50b2xsU3RhdGlvbkRhdGEgPSByb3dzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJzMnIHx8IGl0ZW0udHlwZSA9PT0gJzEnOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIC8vIOeri+S6pAogICAgICAgICAgICAgIF90aGlzMi5ncmFkZU92ZXJEYXRhID0gcm93cy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnR5cGUgPCAzOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIC8vIOacjeWKoeWMugogICAgICAgICAgICAgIF90aGlzMi5zZXJ2aWNlQXJlYURhdGEgPSByb3dzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJzQnOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMzsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDEzKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMCwsIDEzLCAxNV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5qC55o2u6Lev5q615p+l6K+i6Zqn6YGT5L+h5oGvCiAgICBnZXRUdW5uZWxEYXRhOiBmdW5jdGlvbiBnZXRUdW5uZWxEYXRhKHJvYWRJZCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgZGF0YSwgX3lpZWxkJHR1bm5lbERhdGEsIF95aWVsZCR0dW5uZWxEYXRhJHRvdCwgdG90YWwsIF95aWVsZCR0dW5uZWxEYXRhJHJvdywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAwOwogICAgICAgICAgICAgIGRhdGEgPSB7CiAgICAgICAgICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogLTEsCiAgICAgICAgICAgICAgICAgIHBhZ2U6IDEsCiAgICAgICAgICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAncm9hZFNlZ21lbnRJZCcsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiByb2FkSWQKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIHR1bm5lbERhdGEocmVmaW5lUmVxdWVzdEJvZHkoZGF0YSkpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJHR1bm5lbERhdGEgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdHVubmVsRGF0YSR0b3QgPSBfeWllbGQkdHVubmVsRGF0YS50b3RhbDsKICAgICAgICAgICAgICB0b3RhbCA9IF95aWVsZCR0dW5uZWxEYXRhJHRvdCA9PT0gdm9pZCAwID8gMCA6IF95aWVsZCR0dW5uZWxEYXRhJHRvdDsKICAgICAgICAgICAgICBfeWllbGQkdHVubmVsRGF0YSRyb3cgPSBfeWllbGQkdHVubmVsRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdHVubmVsRGF0YSRyb3cgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHR1bm5lbERhdGEkcm93OwogICAgICAgICAgICAgIC8vIOmap+mBkwogICAgICAgICAgICAgIF90aGlzMy50dW5uZWxEYXRhID0gcm93czsKICAgICAgICAgICAgICAvLyDmoLnmja5uYW1l5Y676YeNCiAgICAgICAgICAgICAgX3RoaXMzLnR1bm5lbERhdGEgPSBfdGhpczMudHVubmVsRGF0YS5yZWR1Y2UoZnVuY3Rpb24gKGFjY3VtdWxhdG9yLCBjdXJyZW50KSB7CiAgICAgICAgICAgICAgICB2YXIgeCA9IGFjY3VtdWxhdG9yLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSA9PT0gY3VycmVudC5uYW1lOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAoIXgpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yLmNvbmNhdChbY3VycmVudF0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDExOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDExKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1swLCwgMTEsIDEzXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBudW1iZXJDaGFuZ2U6IGZ1bmN0aW9uIG51bWJlckNoYW5nZShlLCB0eXBlKSB7CiAgICAgIHZhciBzaXRlSW5mbyA9IHRoaXMubnVtYmVyU3RhdGlvbkRhdGEuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmlkID09PSBlOwogICAgICB9KTsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybVsiIi5jb25jYXQodHlwZSwgIk5hbWUiKV0gPSBzaXRlSW5mby5uYW1lOwogICAgICB0aGlzLnBsYWNlRGF0YVt0eXBlXSA9IHNpdGVJbmZvLm5hbWU7CiAgICAgIHZhciBwbGFjZURhdGEgPSB0aGlzLmZvcm1hdFBhbGNlRGF0YSgpOwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBwbGFjZURhdGEpOwogICAgfSwKICAgIHNpdGVDaGFuZ2U6IGZ1bmN0aW9uIHNpdGVDaGFuZ2UoZSwgdHlwZSkgewogICAgICB2YXIgc2l0ZUluZm8gPSB0aGlzLnRvbGxTdGF0aW9uRGF0YS5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGU7CiAgICAgIH0pOwogICAgICB0aGlzLmFkZEVkaXRGb3JtWyIiLmNvbmNhdCh0eXBlLCAiTmFtZSIpXSA9IHNpdGVJbmZvLm5hbWU7CiAgICAgIHRoaXMucGxhY2VEYXRhW3R5cGVdID0gc2l0ZUluZm8ubmFtZTsKICAgICAgdmFyIHBsYWNlRGF0YSA9IHRoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHBsYWNlRGF0YSk7CiAgICB9LAogICAgLy8g5pS26LS556uZCiAgICB0b2xsU3RhdGlvbkNoYW5nZTogZnVuY3Rpb24gdG9sbFN0YXRpb25DaGFuZ2UoKSB7CiAgICAgIHRoaXMucGxhY2VEYXRhLnBsYWNlRGV0YWlsID0gdGhpcy5hZGRFZGl0Rm9ybS5zd3pQbGFjZURldGFpbDsKICAgICAgdmFyIHBsYWNlRGF0YSA9IHRoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHBsYWNlRGF0YSk7CiAgICB9LAogICAgLy8g6Zqn6YGTCiAgICB0dW5uZWxDaGFuZ2U6IGZ1bmN0aW9uIHR1bm5lbENoYW5nZSgpIHsKICAgICAgdGhpcy5wbGFjZURhdGEucGxhY2VEZXRhaWwgPSB0aGlzLmFkZEVkaXRGb3JtLnNkUGxhY2VEZXRhaWw7CiAgICAgIHZhciBwbGFjZURhdGEgPSB0aGlzLmZvcm1hdFBhbGNlRGF0YSgpOwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBwbGFjZURhdGEpOwogICAgfSwKICAgIC8vIOeri+S6pAogICAgZ3JhZGVPdmVyQ2hhbmdlOiBmdW5jdGlvbiBncmFkZU92ZXJDaGFuZ2UoZSkgewogICAgICB0aGlzLnBsYWNlRGF0YS5wbGFjZURldGFpbCA9IHRoaXMuYWRkRWRpdEZvcm0ubGpQbGFjZURldGFpbDsKICAgICAgdmFyIHBsYWNlRGF0YSA9IHRoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHBsYWNlRGF0YSk7CiAgICB9LAogICAgLy8g5pyN5Yqh5Yy6CiAgICBzZXJ2aWNlQXJlYUNoYW5nZTogZnVuY3Rpb24gc2VydmljZUFyZWFDaGFuZ2UoKSB7CiAgICAgIHRoaXMucGxhY2VEYXRhLnBsYWNlRGV0YWlsID0gdGhpcy5hZGRFZGl0Rm9ybS5md3FQbGFjZURldGFpbDsKICAgICAgdmFyIHBsYWNlRGF0YSA9IHRoaXMuZm9ybWF0UGFsY2VEYXRhKCk7CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHBsYWNlRGF0YSk7CiAgICB9LAogICAgc2VuZERhdGE6IGZ1bmN0aW9uIHNlbmREYXRhKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgdmFyIGZsYWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRydWU7CiAgICAgIHZhciBfdGhpcyRhZGRFZGl0Rm9ybSA9IHRoaXMuYWRkRWRpdEZvcm0sCiAgICAgICAgcGxhY2VOYW1lID0gX3RoaXMkYWRkRWRpdEZvcm0ucGxhY2VOYW1lLAogICAgICAgIHBsYWNlRGV0YWlsID0gX3RoaXMkYWRkRWRpdEZvcm0ucGxhY2VEZXRhaWwsCiAgICAgICAgc3RhcnRQZWcgPSBfdGhpcyRhZGRFZGl0Rm9ybS5zdGFydFBlZywKICAgICAgICBzdGFydFBlZ0FkZCA9IF90aGlzJGFkZEVkaXRGb3JtLnN0YXJ0UGVnQWRkLAogICAgICAgIGVuZFBlZyA9IF90aGlzJGFkZEVkaXRGb3JtLmVuZFBlZywKICAgICAgICBlbmRQZWdBZGQgPSBfdGhpcyRhZGRFZGl0Rm9ybS5lbmRQZWdBZGQsCiAgICAgICAgc3RhcnRQYXRyb2xJZCA9IF90aGlzJGFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQsCiAgICAgICAgc3RhcnRQYXRyb2xOYW1lID0gX3RoaXMkYWRkRWRpdEZvcm0uc3RhcnRQYXRyb2xOYW1lLAogICAgICAgIGVuZFBhdHJvbElkID0gX3RoaXMkYWRkRWRpdEZvcm0uZW5kUGF0cm9sSWQsCiAgICAgICAgZW5kUGF0cm9sTmFtZSA9IF90aGlzJGFkZEVkaXRGb3JtLmVuZFBhdHJvbE5hbWU7CiAgICAgIHZhciBwZWdTVmFsID0gJyc7CiAgICAgIHZhciBwZWdFVmFsID0gJyc7CiAgICAgIGlmIChzdGFydFBlZyAhPT0gJycgJiYgc3RhcnRQZWcgIT09IHVuZGVmaW5lZCAmJiBzdGFydFBlZ0FkZCAhPT0gJycgJiYgc3RhcnRQZWdBZGQgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHBlZ1NWYWwgPSAnaycgKyAoc3RhcnRQZWcgIT09ICcnID8gc3RhcnRQZWcgOiAnJykgKyAnKycgKyAoc3RhcnRQZWdBZGQgIT09ICcnID8gc3RhcnRQZWdBZGQgOiAnJyk7CiAgICAgIH0KICAgICAgaWYgKGVuZFBlZyAhPT0gJycgJiYgZW5kUGVnICE9PSB1bmRlZmluZWQgJiYgZW5kUGVnQWRkICE9PSAnJyAmJiBlbmRQZWdBZGQgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHBlZ0VWYWwgPSAnaycgKyAoZW5kUGVnICE9PSAnJyA/IGVuZFBlZyA6ICcnKSArICcrJyArIChlbmRQZWdBZGQgIT09ICcnID8gZW5kUGVnQWRkIDogJycpOwogICAgICB9CiAgICAgIGlmICh0aGlzLnR5cGUgPT0gJzEnKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHBlZ1NWYWw6IHBlZ1NWYWwsCiAgICAgICAgICBwZWdFVmFsOiBwZWdFVmFsLAogICAgICAgICAgc3RhcnRQYXRyb2xJZDogc3RhcnRQYXRyb2xJZCwKICAgICAgICAgIHN0YXJ0UGF0cm9sTmFtZTogc3RhcnRQYXRyb2xOYW1lLAogICAgICAgICAgZW5kUGF0cm9sSWQ6IGVuZFBhdHJvbElkLAogICAgICAgICAgZW5kUGF0cm9sTmFtZTogZW5kUGF0cm9sTmFtZQogICAgICAgIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIG5hbWUgPSB0aGlzLnR5cGUgPT0gJzMnID8gJ3NkJyA6IHRoaXMudHlwZSA9PSAnNCcgPyAnbGonIDogdGhpcy50eXBlID09ICcyJyA/ICdzd3onIDogJ2Z3cSc7CiAgICAgICAgdmFyIGFycmF5ID0gW107CiAgICAgICAgaWYgKHRoaXMuYWRkRWRpdEZvcm1bIiIuY29uY2F0KG5hbWUsICJQbGFjZURldGFpbCIpXS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAvL3N3elBsYWNlRGV0YWlsLXRvbGxTdGF0aW9uRGF0YSAgc2RQbGFjZURldGFpbC10dW5uZWxEYXRhICBsalBsYWNlRGV0YWlsLWdyYWRlT3ZlckRhdGEgIGZ3cVBsYWNlRGV0YWlsLXNlcnZpY2VBcmVhRGF0YQogICAgICAgICAgdmFyIGRhdGFTb3VyY2VNYXAgPSB7CiAgICAgICAgICAgICcyJzogewogICAgICAgICAgICAgIHNvdXJjZTogJ3RvbGxTdGF0aW9uRGF0YScsCiAgICAgICAgICAgICAgZmllbGQ6ICdzd3pQbGFjZURldGFpbCcKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzMnOiB7CiAgICAgICAgICAgICAgc291cmNlOiAndHVubmVsRGF0YScsCiAgICAgICAgICAgICAgZmllbGQ6ICdzZFBsYWNlRGV0YWlsJwogICAgICAgICAgICB9LAogICAgICAgICAgICAnNCc6IHsKICAgICAgICAgICAgICBzb3VyY2U6ICdncmFkZU92ZXJEYXRhJywKICAgICAgICAgICAgICBmaWVsZDogJ2xqUGxhY2VEZXRhaWwnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICc1JzogewogICAgICAgICAgICAgIHNvdXJjZTogJ3NlcnZpY2VBcmVhRGF0YScsCiAgICAgICAgICAgICAgZmllbGQ6ICdmd3FQbGFjZURldGFpbCcKICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIHZhciBfZGF0YVNvdXJjZU1hcCR0aGlzJHQgPSBkYXRhU291cmNlTWFwW3RoaXMudHlwZV0sCiAgICAgICAgICAgIHNvdXJjZSA9IF9kYXRhU291cmNlTWFwJHRoaXMkdC5zb3VyY2UsCiAgICAgICAgICAgIGZpZWxkID0gX2RhdGFTb3VyY2VNYXAkdGhpcyR0LmZpZWxkOwogICAgICAgICAgYXJyYXkgPSB0aGlzLmFkZEVkaXRGb3JtW2ZpZWxkXS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIF9tYXRjaGVkSXRlbXMkLCBfbWF0Y2hlZEl0ZW1zJDIsIF9tYXRjaGVkSXRlbXMkMzsKICAgICAgICAgICAgdmFyIG1hdGNoZWRJdGVtcyA9IF90aGlzNFtzb3VyY2VdLmZpbHRlcihmdW5jdGlvbiAoYkl0ZW0pIHsKICAgICAgICAgICAgICByZXR1cm4gYkl0ZW0ubmFtZSA9PT0gU3RyaW5nKGl0ZW0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICBwbGFjZU5hbWU6IGl0ZW0sCiAgICAgICAgICAgICAgcGVnU1ZhbDogcGVnU1ZhbCwKICAgICAgICAgICAgICBwZWdFVmFsOiBwZWdFVmFsLAogICAgICAgICAgICAgIGxhdDogKF9tYXRjaGVkSXRlbXMkID0gbWF0Y2hlZEl0ZW1zWzBdKSA9PT0gbnVsbCB8fCBfbWF0Y2hlZEl0ZW1zJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21hdGNoZWRJdGVtcyQubGF0LAogICAgICAgICAgICAgIGxuZzogKF9tYXRjaGVkSXRlbXMkMiA9IG1hdGNoZWRJdGVtc1swXSkgPT09IG51bGwgfHwgX21hdGNoZWRJdGVtcyQyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWF0Y2hlZEl0ZW1zJDIubG5nLAogICAgICAgICAgICAgIGRpcmVjdGlvbjogKF9tYXRjaGVkSXRlbXMkMyA9IG1hdGNoZWRJdGVtc1swXSkgPT09IG51bGwgfHwgX21hdGNoZWRJdGVtcyQzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWF0Y2hlZEl0ZW1zJDMuZGlyZWN0aW9uCiAgICAgICAgICAgIH07CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICB9CiAgICB9LAogICAgLy/muIXnqbrmlbDmja4KICAgIGNsZWFyQ2hhbmdlOiBmdW5jdGlvbiBjbGVhckNoYW5nZSgpIHsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHVuZGVmaW5lZDsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZ0FkZCA9IHVuZGVmaW5lZDsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5lbmRQZWcgPSB1bmRlZmluZWQ7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0uZW5kUGVnQWRkID0gdW5kZWZpbmVkOwogICAgICB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJzsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBhdHJvbE5hbWUgPSAnJzsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5lbmRQYXRyb2xJZCA9ICcnOwogICAgICB0aGlzLmFkZEVkaXRGb3JtLmVuZFBhdHJvbE5hbWUgPSAnJzsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5wbGFjZURldGFpbCA9IFtdOwogICAgICB0aGlzLmFkZEVkaXRGb3JtLnN3elBsYWNlRGV0YWlsID0gW107CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0ubGpQbGFjZURldGFpbCA9IFtdOwogICAgICB0aGlzLmFkZEVkaXRGb3JtLnNkUGxhY2VEZXRhaWwgPSBbXTsKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5md3FQbGFjZURldGFpbCA9IFtdOwogICAgfSwKICAgIC8vIOivpuaDhei1i+WAvGUKICAgIGdldERldGFpbDogZnVuY3Rpb24gZ2V0RGV0YWlsKHJvdykgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdmFyIHBsYWNlRGV0YWlsID0gcm93LnBsYWNlRGV0YWlsLAogICAgICAgIHBlZ1NWYWwgPSByb3cucGVnU1ZhbCwKICAgICAgICBwZWdFVmFsID0gcm93LnBlZ0VWYWwsCiAgICAgICAgc3RhcnRQYXRyb2xJZCA9IHJvdy5zdGFydFBhdHJvbElkLAogICAgICAgIHN0YXJ0UGF0cm9sTmFtZSA9IHJvdy5zdGFydFBhdHJvbE5hbWUsCiAgICAgICAgZW5kUGF0cm9sSWQgPSByb3cuZW5kUGF0cm9sSWQsCiAgICAgICAgZW5kUGF0cm9sTmFtZSA9IHJvdy5lbmRQYXRyb2xOYW1lOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKF90aGlzNS50eXBlID09ICcxJykgewogICAgICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgICAgIHN0YXJ0UGF0cm9sSWQ6IHN0YXJ0UGF0cm9sSWQsCiAgICAgICAgICAgIHN0YXJ0UGF0cm9sTmFtZTogc3RhcnRQYXRyb2xOYW1lLAogICAgICAgICAgICBlbmRQYXRyb2xJZDogZW5kUGF0cm9sSWQsCiAgICAgICAgICAgIGVuZFBhdHJvbE5hbWU6IGVuZFBhdHJvbE5hbWUKICAgICAgICAgIH07CiAgICAgICAgICBpZiAocGVnU1ZhbCkgewogICAgICAgICAgICB2YXIgc3RhcnRQZWdBcnIgPSBwZWdTVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICAgIGRhdGEuc3RhcnRQZWcgPSBzdGFydFBlZ0FyclswXS5zbGljZSgxKTsKICAgICAgICAgICAgZGF0YS5zdGFydFBlZ0FkZCA9IHN0YXJ0UGVnQXJyWzFdOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHBlZ0VWYWwpIHsKICAgICAgICAgICAgdmFyIGVuZFBlZ0FyciA9IHBlZ0VWYWwuc3BsaXQoJysnKTsKICAgICAgICAgICAgZGF0YS5lbmRQZWcgPSBlbmRQZWdBcnJbMF0uc2xpY2UoMSk7CiAgICAgICAgICAgIGRhdGEuZW5kUGVnQWRkID0gZW5kUGVnQXJyWzFdOwogICAgICAgICAgfQogICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtID0gZGF0YTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8g5o+Q5Y+WIHBlZ1NWYWwg5ZKMIHBlZ0VWYWwKICAgICAgICAgIHJvdy5wbGFjZURldGFpbCA9IEpTT04ucGFyc2Uocm93LnBsYWNlRGV0YWlsKTsKICAgICAgICAgIHZhciBwZWdTVmFscyA9IHJvdy5wbGFjZURldGFpbFswXS5wZWdTVmFsOwogICAgICAgICAgdmFyIHBlZ0VWYWxzID0gcm93LnBsYWNlRGV0YWlsWzBdLnBlZ0VWYWw7CiAgICAgICAgICBpZiAocGVnU1ZhbHMpIHsKICAgICAgICAgICAgdmFyIF9zdGFydFBlZ0FyciA9IHBlZ1NWYWxzLnNwbGl0KCcrJyk7CiAgICAgICAgICAgIF90aGlzNS5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IF9zdGFydFBlZ0FyclswXS5zbGljZSgxKTsKICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtLnN0YXJ0UGVnQWRkID0gX3N0YXJ0UGVnQXJyWzFdOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHBlZ0VWYWxzKSB7CiAgICAgICAgICAgIHZhciBfZW5kUGVnQXJyID0gcGVnRVZhbHMuc3BsaXQoJysnKTsKICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtLmVuZFBlZyA9IF9lbmRQZWdBcnJbMF0uc2xpY2UoMSk7CiAgICAgICAgICAgIF90aGlzNS5hZGRFZGl0Rm9ybS5lbmRQZWdBZGQgPSBfZW5kUGVnQXJyWzFdOwogICAgICAgICAgfQogICAgICAgICAgdmFyIG5hbWUgPSBfdGhpczUudHlwZSA9PSAnMycgPyAnc2QnIDogX3RoaXM1LnR5cGUgPT0gJzQnID8gJ2xqJyA6IF90aGlzNS50eXBlID09ICcyJyA/ICdzd3onIDogJ2Z3cSc7CiAgICAgICAgICAvLyDlsIYgcGxhY2VEZXRhaWwg6L2s5o2i5Li65Zyw54K55ZCN56ew5pWw57uECiAgICAgICAgICBfdGhpczUuYWRkRWRpdEZvcm1bIiIuY29uY2F0KG5hbWUsICJQbGFjZURldGFpbCIpXSA9IHJvdy5wbGFjZURldGFpbC5tYXAoZnVuY3Rpb24gKHBsYWNlKSB7CiAgICAgICAgICAgIHJldHVybiBwbGFjZS5wbGFjZU5hbWU7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogIH0KfTs="},null]}