{"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\\roadDamageComp\\RoadDamageRegister\\components\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\roadDamageComp\\RoadDamageRegister\\components\\EditAddPage\\index.vue","mtime":1753128517018},{"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:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBsaXN0RGVsZXRpb24sIHJvYWREYXRhLCB0YWJsZUFkZCwgdGFibGVEZXRhaWwsIHRhYmxlRWRpdCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9yb2FkRGFtYWdlQ29tcC9yb2FkRGFtYWdlUmVnaXN0ZXInOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgYWxvbmdSb3V0ZUluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2Fsb25nUm91dGVJbmZvJzsKaW1wb3J0IHsgZGljdGlvbmFyeUVzY2FwZSwgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCBFdmVudENob2ljZURpYWxvZyBmcm9tICcuL2NvbXBvbmVudHMvRXZlbnRDaG9pY2VEaWFsb2cnOwppbXBvcnQgRGV0YWlsZWRMaXN0R2lhbG9nIGZyb20gJy4vY29tcG9uZW50cy9EZXRhaWxlZExpc3RHaWFsb2cnOwppbXBvcnQgUmV2ZW50U3luY2hyb25pemFEaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL1JldmVudFN5bmNocm9uaXphRGlhbG9nL2luZGV4LnZ1ZSc7CmltcG9ydCBSZXNjdWVTeW5jaHJvbml6YURpYWxvZyBmcm9tICcuL2NvbXBvbmVudHMvUmVzY3VlU3luY2hyb25pemFEaWFsb2cvaW5kZXgudnVlJzsKaW1wb3J0IHsgcmVmaW5lUmVxdWVzdEJvZHkgfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycyc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRWRpdEFkZFBhZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIFJldmVudFN5bmNocm9uaXphRGlhbG9nOiBSZXZlbnRTeW5jaHJvbml6YURpYWxvZywKICAgIFJlc2N1ZVN5bmNocm9uaXphRGlhbG9nOiBSZXNjdWVTeW5jaHJvbml6YURpYWxvZywKICAgIEV2ZW50Q2hvaWNlRGlhbG9nOiBFdmVudENob2ljZURpYWxvZywKICAgIERldGFpbGVkTGlzdEdpYWxvZzogRGV0YWlsZWRMaXN0R2lhbG9nCiAgfSwKICBwcm9wczogewogICAgY29tcG9uZW50TmFtZTogewogICAgICBkZWZhdWx0OiAnRWRpdEFkZFBhZ2UnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBpZDogJycsCiAgICAgIGZvcm1Mb2FkaW5nOiB0cnVlLAogICAgICBpc1Nob3dQb3BvdmVyOiBmYWxzZSwKICAgICAgdHJlZUl0ZW06IHt9LAogICAgICByb2FkT3B0aW9uczogW10sCiAgICAgIGFsb25nUm91dGVJbmZvRGF0YTogW10sCiAgICAgIHBpbGVOdW1iZXJSYW5nZTogJycsCiAgICAgIGFkZEVkaXRGb3JtOiB7CiAgICAgICAgZGlyZWN0aW9uOiAnMScsCiAgICAgICAgZXZlbnRMZXZlbDogMCwKICAgICAgICBldmVudDoge30sCiAgICAgICAgY29tcGVuc2F0aW9uRGV0YWlsc1NpbmdsZTogW10sCiAgICAgICAgY29tcGVuc2F0aW9uRGV0YWlsc0RvdWJsZTogW10KICAgICAgfSwKICAgICAgYWRkRWRpdFJ1bGVzOiB7CiAgICAgICAgZXZlbnROYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5LqL5Lu25qCH6aKY5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIGV2ZW50VGltZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aKpeahiOaXtumXtOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XSwKICAgICAgICByb2FkSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfot6/mrrXkv6Hmga/kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dCiAgICAgICAgLy8gZXZlbnRUeXBlOiBbCiAgICAgICAgLy8gICB7CiAgICAgICAgLy8gICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgIC8vICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5LqL5Lu257G75Z6LJywKICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIC8vICAgfQogICAgICAgIC8vIF0sCiAgICAgICAgLy8gcmVzY3VlVHlwZTogWwogICAgICAgIC8vICAgewogICAgICAgIC8vICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAvLyAgICAgbWVzc2FnZTogJ+aVkeaPtOexu+Wei+S4jeiDveS4uuepuicsCiAgICAgICAgLy8gICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIHJvYWRJZDogWwogICAgICAgIC8vICAgewogICAgICAgIC8vICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAvLyAgICAgbWVzc2FnZTogJ+i3r+auteS/oeaBr+S4jeiDveS4uuepuicsCiAgICAgICAgLy8gICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIHRlYW1JZDogWwogICAgICAgIC8vICAgewogICAgICAgIC8vICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAvLyAgICAgbWVzc2FnZTogJ+a0vumBo+mYn+S8jeS4jeiDveS4uuepuicsCiAgICAgICAgLy8gICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdLAogICAgICAgIC8vIGV2ZW50VGltZTogWwogICAgICAgIC8vICAgewogICAgICAgIC8vICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAvLyAgICAgbWVzc2FnZTogJ+S6i+S7tuWPkeeUn+aXtumXtOS4jeiDveS4uuepuicsCiAgICAgICAgLy8gICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICAvLyAgIH0KICAgICAgICAvLyBdCiAgICAgIH0sCiAgICAgIHNhdmVMb2FkaW5nOiBmYWxzZSwKICAgICAgLy8g5LiK5LygbG9hZGluZwogICAgICByZXNjdWVTeW5jaHJvbml6YURpYWxvZzogZmFsc2UsCiAgICAgIHJldmVudFN5bmNocm9uaXphRGlhbG9nOiBmYWxzZSwKICAgICAgZXZlbnRDaG9pY2VEaWFsb2c6IGZhbHNlLAogICAgICBkZXRhaWxlZExpc3REaWFsb2c6IGZhbHNlLAogICAgICByb3V0ZXJEYXRhOiBbXSwKICAgICAgLy8g6Lev57q/5pWw5o2uCiAgICAgIHB1YlN1YjogbnVsbCwKICAgICAgdGVhbVRyZWVEYXRhOiBbXSwKICAgICAgLy8g5pWR5o+06Zif5LyN57uE57uH5qCRCiAgICAgIGV2ZW50R3JhZGVPcHRpb25zOiBbCiAgICAgIC8v5LqL5Lu2562J57qnCiAgICAgIHsKICAgICAgICBsYWJlbDogJ+aXoOetiee6pycsCiAgICAgICAgdmFsdWU6IDAKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnMee6pycsCiAgICAgICAgdmFsdWU6IDEKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnMue6pycsCiAgICAgICAgdmFsdWU6IDIKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnM+e6pycsCiAgICAgICAgdmFsdWU6IDMKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAnNOe6pycsCiAgICAgICAgdmFsdWU6IDQKICAgICAgfV0sCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIGl0ZW1EZXRhaWw6IHt9LAogICAgICBpdGVtSW5kZXg6ICcnLAogICAgICBvcGVuVFlwZTogJ2FkZCcsCiAgICAgIGlzRGlzYWJsZWQ6IHRydWUKICAgIH07CiAgfSwKICB3YXRjaDogewogICAgY29tcG9uZW50TmFtZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCkgewogICAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMuJG9wdGlvbnMubmFtZSkgewogICAgICAgICAgdGhpcy5vcGVuUGFnZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLmNsb3NlUGFnZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ0VkaXRBZGRQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgIF90aGlzLmdldFJvYWRPcHRpb25zKCk7CiAgICAgIC8vIOi3r+autem7mOiupOWAvAogICAgICBpZiAoZGF0YS50cmVlSXRlbSkgewogICAgICAgIF90aGlzLnRyZWVJdGVtID0gZGF0YS50cmVlSXRlbTsKICAgICAgfQogICAgICBpZiAoZGF0YS5pZCkgewogICAgICAgIF90aGlzLmlkID0gZGF0YS5pZDsKICAgICAgICBfdGhpcy50cmVlSXRlbS5mYXRoZXJJZCA9IGRhdGEuZmF0aGVySWQ7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgZGljdGlvbmFyeUVzY2FwZTogZGljdGlvbmFyeUVzY2FwZSwKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyDkuovku7blm57mmL4g5pWR5o+05Zue5pi+CiAgICBoYW5kbGVTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdChkYXRhKSB7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuYWRkRWRpdEZvcm0pLCBkYXRhKTsKICAgICAgaWYgKGRhdGEucGVnU1ZhbCkgewogICAgICAgIHZhciBzdGFydFBlZ0FyciA9IGRhdGEucGVnU1ZhbC5zcGxpdCgnKycpOwogICAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnc3RhcnRQZWcnLCBzdGFydFBlZ0FyclswXS5zbGljZSgxKSk7CiAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdzdGFydFBlZ0FkZCcsIHN0YXJ0UGVnQXJyWzFdKTsKICAgICAgfQogICAgICBpZiAoZGF0YS5wZWdFVmFsKSB7CiAgICAgICAgdmFyIF9zdGFydFBlZ0FyciA9IGRhdGEucGVnRVZhbC5zcGxpdCgnKycpOwogICAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnZW5kUGVnJywgX3N0YXJ0UGVnQXJyWzBdLnNsaWNlKDEpKTsKICAgICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ2VuZFBlZ0FkZCcsIF9zdGFydFBlZ0FyclsxXSk7CiAgICAgIH0KICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5pZCA9ICcnOwogICAgfSwKICAgIC8vIOi3r+auteaVsOaNruafpeivogogICAgZ2V0Um9hZE9wdGlvbnM6IGZ1bmN0aW9uIGdldFJvYWRPcHRpb25zKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkcm9hZERhdGEsIF95aWVsZCRyb2FkRGF0YSRyb3dzLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiByb2FkRGF0YSh7CiAgICAgICAgICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRyb2FkRGF0YSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWREYXRhJHJvd3MgPSBfeWllbGQkcm9hZERhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHJvYWREYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHJvYWREYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXMyLnJvYWRPcHRpb25zID0gcm93cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGl0ZW0ucm9hZE5hbWUgPSBpdGVtLm5hbWUgKyAnICcgKyBpdGVtLmNvZGU7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAvLyDpu5jorqTotYvlgLzot6/mrrUKICAgICAgICAgICAgICBpZiAoIV90aGlzMi5pZCkgewogICAgICAgICAgICAgICAgX3RoaXMyLiRzZXQoX3RoaXMyLmFkZEVkaXRGb3JtLCAncm9hZElkJywgX3RoaXMyLnRyZWVJdGVtLmlkKTsKICAgICAgICAgICAgICAgIF90aGlzMi4kc2V0KF90aGlzMi5hZGRFZGl0Rm9ybSwgJ3JvYWROYW1lJywgX3RoaXMyLnRyZWVJdGVtLm5hbWUpOwogICAgICAgICAgICAgICAgX3RoaXMyLnJvYWRDaGFuZ2UoX3RoaXMyLnRyZWVJdGVtLmlkKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMyLmdldERldGFpbChfdGhpczIuaWQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOi3r+auteS6i+S7tgogICAgcm9hZENoYW5nZTogZnVuY3Rpb24gcm9hZENoYW5nZShlKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgcm9hZEluZm8gPSB0aGlzLnJvYWRPcHRpb25zLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZTsKICAgICAgfSk7CiAgICAgIC8vIGNvbnNvbGUubG9nKHJvYWRJbmZvLCB0aGlzLnJvYWRPcHRpb25zKQogICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ3JvYWROYW1lJywgcm9hZEluZm8ubmFtZSk7CiAgICAgIGlmIChyb2FkSW5mby5zdGFydFBlZ0sgJiYgcm9hZEluZm8uZW5kUGVnSykgewogICAgICAgIHRoaXMucGlsZU51bWJlclJhbmdlID0gcm9hZEluZm8uc3RhcnRQZWdLICsgJ34nICsgcm9hZEluZm8uZW5kUGVnSzsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnBpbGVOdW1iZXJSYW5nZSA9ICcnOwogICAgICB9CiAgICAgIHRoaXMuZ2V0QWxvbmdSb3V0ZUluZm8oZSwgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICB2YXIgX3RoaXMzJGFkZEVkaXRGb3JtID0gX3RoaXMzLmFkZEVkaXRGb3JtLAogICAgICAgICAgc3RhcnRQYXRyb2xJZCA9IF90aGlzMyRhZGRFZGl0Rm9ybS5zdGFydFBhdHJvbElkLAogICAgICAgICAgZW5kUGF0cm9sSWQgPSBfdGhpczMkYWRkRWRpdEZvcm0uZW5kUGF0cm9sSWQ7CiAgICAgICAgLyoNCiAgICAgICAgICog5beh5qOA5byA5aeL77yM57uT5p2f56uZDQogICAgICAgICAqICovCiAgICAgICAgaWYgKHN0YXJ0UGF0cm9sSWQpIHsKICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgIHJldHVybiBpLmlkID09PSBzdGFydFBhdHJvbElkOwogICAgICAgICAgfSkpIHsKICAgICAgICAgICAgX3RoaXMzLmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJzsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczMuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5beh5qOA5byA5aeL56uZLi4nKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChlbmRQYXRyb2xJZCkgewogICAgICAgICAgaWYgKCFkYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IGVuZFBhdHJvbElkOwogICAgICAgICAgfSkpIHsKICAgICAgICAgICAgX3RoaXMzLmFkZEVkaXRGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqeW3oeajgOe7k+adn+ermS4uJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICBnZXRBbG9uZ1JvdXRlSW5mbzogZnVuY3Rpb24gZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBfd2lwZURhdGEsIF95aWVsZCRhbG9uZ1JvdXRlSW5mbywgX3lpZWxkJGFsb25nUm91dGVJbmZvMiwgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3dpcGVEYXRhID0gZnVuY3Rpb24gX3dpcGVEYXRhKCkgewogICAgICAgICAgICAgICAgX3RoaXM0LmFsb25nUm91dGVJbmZvRGF0YSA9IFtdOwogICAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soX3RoaXM0LmFsb25nUm91dGVJbmZvRGF0YSk7CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBhbG9uZ1JvdXRlSW5mb0ludGVyKHJlZmluZVJlcXVlc3RCb2R5KHsKICAgICAgICAgICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRfc2VnbWVudF9pZF8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfSksICdhZGRFZGl0Jyk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkYWxvbmdSb3V0ZUluZm8gPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkYWxvbmdSb3V0ZUluZm8yID0gX3lpZWxkJGFsb25nUm91dGVJbmZvLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJGFsb25nUm91dGVJbmZvMjsKICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhyb3dzKTsKICAgICAgICAgICAgICBfdGhpczQuYWxvbmdSb3V0ZUluZm9EYXRhID0gcm93czsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDEpOwogICAgICAgICAgICAgIC8vIOS4jeS4uuivt+axgui/h+W/q+e7k+adn+eahOaDheWGteS4i++8jOmHjee9rgogICAgICAgICAgICAgIGlmIChfY29udGV4dDIudDAubWVzc2FnZSAhPT0gJ2NhbmNlbGVkJykgX3dpcGVEYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMSwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOW8gOWni+e7k+adn+ermeS6i+S7tgogICAgc2l0ZUNoYW5nZTogZnVuY3Rpb24gc2l0ZUNoYW5nZShlLCB0eXBlKSB7CiAgICAgIHZhciBzaXRlSW5mbyA9IHRoaXMuYWxvbmdSb3V0ZUluZm9EYXRhLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZTsKICAgICAgfSk7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm1bIiIuY29uY2F0KHR5cGUsICJOYW1lIildID0gc2l0ZUluZm8ubmFtZTsKICAgIH0sCiAgICBjbGlja0VkaXQ6IGZ1bmN0aW9uIGNsaWNrRWRpdChpdGVtLCBpbmRleCkgewogICAgICB0aGlzLmRldGFpbGVkTGlzdERpYWxvZyA9IHRydWU7CiAgICAgIHRoaXMuaXRlbURldGFpbCA9IGl0ZW07CiAgICAgIHRoaXMuaXRlbUluZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMub3BlblRZcGUgPSAnZWRpdCc7CiAgICB9LAogICAgY2xpY2tEZWxldGU6IGZ1bmN0aW9uIGNsaWNrRGVsZXRlKGl0ZW0sIGluZGV4KSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprliKDpmaTmraTmnaHmlbDmja7lkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBfeWllbGQkbGlzdERlbGV0aW9uLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCFpdGVtLmlkKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBsaXN0RGVsZXRpb24oaXRlbS5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkbGlzdERlbGV0aW9uID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkbGlzdERlbGV0aW9uLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkbGlzdERlbGV0aW9uLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgICAgICAgICBpZiAoaXRlbS5wcm9wZXJ0eVN1YmplY3RUeXBlID09PSAnMScpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHNTaW5nbGUuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNS5hZGRFZGl0Rm9ybS5jb21wZW5zYXRpb25EZXRhaWxzRG91YmxlLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB0aGlzLmFkZEVkaXRGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHMuc3BsaWNlKGluZGV4LCAxKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDEwOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgaWYgKGl0ZW0ucHJvcGVydHlTdWJqZWN0VHlwZSA9PT0gJzEnKSB7CiAgICAgICAgICAgICAgICBfdGhpczUuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc1NpbmdsZS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczUuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc0RvdWJsZS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyB0aGlzLmFkZEVkaXRGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHMuc3BsaWNlKGluZGV4LCAxKQogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKTsKICAgIH0sCiAgICBzZW5kRGF0YTogZnVuY3Rpb24gc2VuZERhdGEoZGF0YSkgewogICAgICBpZiAodGhpcy5vcGVuVFlwZSA9PT0gJ2VkaXQnKSB7CiAgICAgICAgaWYgKGRhdGEucHJvcGVydHlTdWJqZWN0VHlwZSA9PT0gJzEnKSB7CiAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHNTaW5nbGVbdGhpcy5pdGVtSW5kZXhdID0gZGF0YTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5jb21wZW5zYXRpb25EZXRhaWxzRG91YmxlW3RoaXMuaXRlbUluZGV4XSA9IGRhdGE7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChkYXRhLnByb3BlcnR5U3ViamVjdFR5cGUgPT09ICcxJykgewogICAgICAgICAgaWYgKHRoaXMuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc1NpbmdsZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc1NpbmdsZS5wdXNoKGRhdGEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdjb21wZW5zYXRpb25EZXRhaWxzU2luZ2xlJywgW2RhdGFdKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoaXMuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc0RvdWJsZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc0RvdWJsZS5wdXNoKGRhdGEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdjb21wZW5zYXRpb25EZXRhaWxzRG91YmxlJywgW2RhdGFdKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvLyDmiZPlvIDpobXpnaLmiafooYwKICAgIG9wZW5QYWdlOiBmdW5jdGlvbiBvcGVuUGFnZSgpIHt9LAogICAgLy8g5bGV56S65by55bGCCiAgICBzaG93RGlhbG9nOiBmdW5jdGlvbiBzaG93RGlhbG9nKGRpYWxvZ05hbWUsIHR5cGUpIHsKICAgICAgdGhpcy5vcGVuVFlwZSA9ICdhZGQnOwogICAgICBpZiAoIWRpYWxvZ05hbWUpIHJldHVybjsKICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgdGhpcy5pdGVtRGV0YWlsID0ge307CiAgICAgIGlmICh0eXBlKSB7CiAgICAgICAgdGhpcy5pdGVtRGV0YWlsLnByb3BlcnR5U3ViamVjdFR5cGUgPSB0eXBlOwogICAgICB9CiAgICB9LAogICAgLy8g5YWz6Zet6aG16Z2i5omn6KGMCiAgICBjbG9zZVBhZ2U6IGZ1bmN0aW9uIGNsb3NlUGFnZSgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHZhciBwdWJTdWIgPSB0aGlzLnB1YlN1YiwKICAgICAgICBhZGRFZGl0UnVsZXMgPSB0aGlzLmFkZEVkaXRSdWxlczsKICAgICAgLy8g6YeN572u57uE5Lu25pWw5o2uCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcyksIHsKICAgICAgICBwdWJTdWI6IHB1YlN1YiwKICAgICAgICBhZGRFZGl0UnVsZXM6IGFkZEVkaXRSdWxlcwogICAgICB9KTsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICBfdGhpczYuJHJlZnMuYWRkRWRpdEZvcm0uJGVsLnNjcm9sbFRvcCA9IDA7CiAgICAgICAgX3RoaXM2LiRyZWZzLmFkZEVkaXRGb3JtLmNsZWFyVmFsaWRhdGUoKTsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlRXZlbnRTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZUV2ZW50U2VsZWN0KGV2ZW50KSB7CiAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnZXZlbnRJZCcsIGV2ZW50LmV2ZW50SWQpOwogICAgfSwKICAgIC8vIOiOt+WPluivpuaDhQogICAgZ2V0RGV0YWlsOiBmdW5jdGlvbiBnZXREZXRhaWwoaWQpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIF90aGlzNyRhZGRFZGl0Rm9ybSwgX3RoaXM3JGFkZEVkaXRGb3JtJGV2LCBldmVudElkLCBfdGhpczckYWRkRWRpdEZvcm0kZXYyLCBldmVudE5vLCBfdGhpczckYWRkRWRpdEZvcm0kcGUsIHBlZ1NWYWwsIF90aGlzNyRhZGRFZGl0Rm9ybSRwZTIsIHBlZ0VWYWwsIHN0YXJ0UGVnQXJyLCBfc3RhcnRQZWdBcnIyOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURldGFpbChpZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfdGhpczcuYWRkRWRpdEZvcm0gPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBfdGhpczckYWRkRWRpdEZvcm0gPSBfdGhpczcuYWRkRWRpdEZvcm0sIF90aGlzNyRhZGRFZGl0Rm9ybSRldiA9IF90aGlzNyRhZGRFZGl0Rm9ybS5ldmVudElkLCBldmVudElkID0gX3RoaXM3JGFkZEVkaXRGb3JtJGV2ID09PSB2b2lkIDAgPyAnJyA6IF90aGlzNyRhZGRFZGl0Rm9ybSRldiwgX3RoaXM3JGFkZEVkaXRGb3JtJGV2MiA9IF90aGlzNyRhZGRFZGl0Rm9ybS5ldmVudE5vLCBldmVudE5vID0gX3RoaXM3JGFkZEVkaXRGb3JtJGV2MiA9PT0gdm9pZCAwID8gJycgOiBfdGhpczckYWRkRWRpdEZvcm0kZXYyLCBfdGhpczckYWRkRWRpdEZvcm0kcGUgPSBfdGhpczckYWRkRWRpdEZvcm0ucGVnU1ZhbCwgcGVnU1ZhbCA9IF90aGlzNyRhZGRFZGl0Rm9ybSRwZSA9PT0gdm9pZCAwID8gJycgOiBfdGhpczckYWRkRWRpdEZvcm0kcGUsIF90aGlzNyRhZGRFZGl0Rm9ybSRwZTIgPSBfdGhpczckYWRkRWRpdEZvcm0ucGVnRVZhbCwgcGVnRVZhbCA9IF90aGlzNyRhZGRFZGl0Rm9ybSRwZTIgPT09IHZvaWQgMCA/ICcnIDogX3RoaXM3JGFkZEVkaXRGb3JtJHBlMjsKICAgICAgICAgICAgICBfdGhpczcuYWRkRWRpdEZvcm0uZXZlbnQgPSB7CiAgICAgICAgICAgICAgICBldmVudElkOiBldmVudElkLAogICAgICAgICAgICAgICAgZXZlbnRObzogZXZlbnRObwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgaWYgKHBlZ1NWYWwpIHsKICAgICAgICAgICAgICAgIHN0YXJ0UGVnQXJyID0gcGVnU1ZhbC5zcGxpdCgnKycpOwogICAgICAgICAgICAgICAgX3RoaXM3LiRzZXQoX3RoaXM3LmFkZEVkaXRGb3JtLCAnc3RhcnRQZWcnLCBzdGFydFBlZ0FyclswXS5zbGljZSgxKSk7CiAgICAgICAgICAgICAgICBfdGhpczcuJHNldChfdGhpczcuYWRkRWRpdEZvcm0sICdzdGFydFBlZ0FkZCcsIHN0YXJ0UGVnQXJyWzFdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHBlZ0VWYWwpIHsKICAgICAgICAgICAgICAgIF9zdGFydFBlZ0FycjIgPSBwZWdFVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICAgICAgICBfdGhpczcuJHNldChfdGhpczcuYWRkRWRpdEZvcm0sICdlbmRQZWcnLCBfc3RhcnRQZWdBcnIyWzBdLnNsaWNlKDEpKTsKICAgICAgICAgICAgICAgIF90aGlzNy4kc2V0KF90aGlzNy5hZGRFZGl0Rm9ybSwgJ2VuZFBlZ0FkZCcsIF9zdGFydFBlZ0FycjJbMV0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIV90aGlzNy5hZGRFZGl0Rm9ybS5jb21wZW5zYXRpb25EZXRhaWxzKSB7CiAgICAgICAgICAgICAgICBfdGhpczcuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc1NpbmdsZSA9IFtdOwogICAgICAgICAgICAgICAgX3RoaXM3LmFkZEVkaXRGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHNEb3VibGUgPSBbXTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM3LmFkZEVkaXRGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHNTaW5nbGUgPSBfdGhpczcuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlscy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvcGVydHlTdWJqZWN0VHlwZSA9PT0gJzEnOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBfdGhpczcuYWRkRWRpdEZvcm0uY29tcGVuc2F0aW9uRGV0YWlsc0RvdWJsZSA9IF90aGlzNy5hZGRFZGl0Rm9ybS5jb21wZW5zYXRpb25EZXRhaWxzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wcm9wZXJ0eVN1YmplY3RUeXBlID09PSAnMic7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM3LnJvYWRDaGFuZ2UoX3RoaXM3LmFkZEVkaXRGb3JtLnJvYWRJZCk7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxMDsKICAgICAgICAgICAgICBfdGhpczcuZm9ybUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmZpbmlzaCgxMCk7CiAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQsIG51bGwsIFtbMCwsIDEwLCAxM11dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5L+d5a2YCiAgICBoYW5kbGVTYXZlOiBmdW5jdGlvbiBoYW5kbGVTYXZlKCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgY29uc29sZS5sb2codGhpcy5hZGRFZGl0Rm9ybSwgJzAwMDAwMDAwMDAwJyk7CiAgICAgIHRoaXMuJHJlZnMuYWRkRWRpdEZvcm0udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUodmFsaWQsIG9iamVjdCkgewogICAgICAgICAgdmFyIGRhdGEsIG15SW50ZXJGYWNlLCBfeWllbGQkbXlJbnRlckZhY2UsIHN0YXRlLCBtZXNzYWdlLCB2YWx1ZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA0OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICBfdGhpczguc2F2ZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RoaXM4LmFkZEVkaXRGb3JtKSk7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGFydFBlZyAhPT0gJycgJiYgZGF0YS5zdGFydFBlZyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuc3RhcnRQZWdBZGQgIT09ICcnICYmIGRhdGEuc3RhcnRQZWdBZGQgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICBkYXRhLnBlZ1NWYWwgPSAnaycgKyAoZGF0YS5zdGFydFBlZyAhPT0gJycgPyBkYXRhLnN0YXJ0UGVnIDogJycpICsgJysnICsgKGRhdGEuc3RhcnRQZWdBZGQgIT09ICcnID8gZGF0YS5zdGFydFBlZ0FkZCA6ICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmVuZFBlZyAhPT0gJycgJiYgZGF0YS5lbmRQZWcgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmVuZFBlZ0FkZCAhPT0gJycgJiYgZGF0YS5lbmRQZWdBZGQgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICBkYXRhLnBlZ0VWYWwgPSAnaycgKyAoZGF0YS5lbmRQZWcgIT09ICcnID8gZGF0YS5lbmRQZWcgOiAnJykgKyAnKycgKyAoZGF0YS5lbmRQZWdBZGQgIT09ICcnID8gZGF0YS5lbmRQZWdBZGQgOiAnJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhLmNvbXBlbnNhdGlvbkRldGFpbHMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGRhdGEuY29tcGVuc2F0aW9uRGV0YWlsc1NpbmdsZSksIF90b0NvbnN1bWFibGVBcnJheShkYXRhLmNvbXBlbnNhdGlvbkRldGFpbHNEb3VibGUpKTsKICAgICAgICAgICAgICAgIG15SW50ZXJGYWNlID0gX3RoaXM4LmlkID8gdGFibGVFZGl0IDogdGFibGVBZGQ7CiAgICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDEwOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxMzsKICAgICAgICAgICAgICAgIHJldHVybiBteUludGVyRmFjZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRhdGEpLCBkYXRhLmV2ZW50KSk7CiAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgIF95aWVsZCRteUludGVyRmFjZSA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkbXlJbnRlckZhY2Uuc3RhdGU7CiAgICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJG15SW50ZXJGYWNlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRteUludGVyRmFjZS52YWx1ZTsKICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgICBtZXNzYWdlID0gX3RoaXM4LmlkID8gJ+e8lui+kScgOiAn5paw5aKeJzsKICAgICAgICAgICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1NEZERFx1NUI1OFx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgICAgICBfdGhpczguY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgX3RoaXM4LmlkID8gJ2VkaXQnIDogJ2FkZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDE4OwogICAgICAgICAgICAgICAgX3RoaXM4LnNhdmVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LmZpbmlzaCgxOCk7CiAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzEwLCwgMTgsIDIxXV0pOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIpIHsKICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCB7CiAgICAgICAgICB0eXBlOiB0eXBlCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOWcqOe7hOS7tumUgOavgeS5i+WJjSDmuIXpmaTorqLpmIXmtojmga8KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1Yik7CiAgfQp9Ow=="},null]}