{"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\\TrafficJam\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventRegistration\\components\\TrafficJam\\index.vue","mtime":1741931490665},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOwppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5IH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgeyB0YWJsZUFkZCwgdGFibGVEZXRhaWwsIHRhYmxlRWRpdCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvZXZlbnRSZWdpc3RyYXRpb24nOwppbXBvcnQgeyBnZXREaWN0aW9uYXJ5QnlDb2RlLCBkaWN0aW9uYXJ5RXNjYXBlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IFJvYWRDaG9pY2VEaWFsb2cgZnJvbSAnLi4vUm9hZENob2ljZURpYWxvZyc7CmltcG9ydCBBcHBvaW50RGlhbG9nIGZyb20gJy4uL0FwcG9pbnREaWFsb2cnOwppbXBvcnQgU2NvcGVDbGFzc2lmeSBmcm9tICcuLi9TY29wZUNsYXNzaWZ5JzsKaW1wb3J0IHsgb3JnVHJlZSB9IGZyb20gJ0AvYXBpL3N5c3RlbUludGVyZmFjZSc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByb2FkU2VjdGlvbkluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBhbG9uZ1JvdXRlSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgdGVhbURhdGEgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9wYXRyb2xBbmRSZXNjdWVUZWFtc01nbXQnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1RyYWZmaWNKYW0nLAogIGNvbXBvbmVudHM6IHsKICAgIFJvYWRDaG9pY2VEaWFsb2c6IFJvYWRDaG9pY2VEaWFsb2csCiAgICBBcHBvaW50RGlhbG9nOiBBcHBvaW50RGlhbG9nLAogICAgU2NvcGVDbGFzc2lmeTogU2NvcGVDbGFzc2lmeQogIH0sCiAgcHJvcHM6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgZGVmYXVsdDogJ0VkaXRBZGRQYWdlJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgYWN0aXZlTmFtZTogJ2ZpcnN0JywKICAgICAgZm9ybUxvYWRpbmc6IHRydWUsCiAgICAgIGFwcG9pbnREaWFsb2c6IGZhbHNlLAogICAgICBhZGRFZGl0Rm9ybToge30sCiAgICAgIGFkZEVkaXRSdWxlczogewogICAgICAgIGV2ZW50VGVsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5oql5qGI55S16K+d5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIHJvYWRJZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i3r+auteS/oeaBr+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgdGVhbUlkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5aSE572u6Zif5LyN5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBldmVudFRpbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfkuovku7blj5HnlJ/ml7bpl7TkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIHNhdmVMb2FkaW5nOiBmYWxzZSwKICAgICAgLy8g5LiK5LygbG9hZGluZwogICAgICBpZDogJycsCiAgICAgIC8vIGlk5qCH6K+G56ymCiAgICAgIHJvYWRDaG9pY2VEaWFsb2c6IGZhbHNlLAogICAgICAvLyDmmK/lkKblsZXnpLrpgInmi6not6/mrrXlvLnlsYIKICAgICAgcm91dGVyRGF0YTogW10sCiAgICAgIC8vIOi3r+e6v+aVsOaNrgogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIG1hcExvYWRpbmc6IHRydWUsCiAgICAgIC8vIOWcsOWbvuWKoOi9vWxvYWRpbmcKICAgICAgbWFwOiBudWxsLAogICAgICBtYXBEZWZhdWx0T3B0aW9uczogewogICAgICAgIGNlbnRlcjogWzEwNi41NTA3LCAyOS41NjQ3XSAvKuWcsOWbvuS4reW/g+eCuSovLAogICAgICAgIHpvb206IDkgLyrlnLDlm77pu5jorqTnvKnmlL7nrYnnuqcqLwogICAgICB9LAogICAgICBtYXJrZXJzOiBbXSwKICAgICAgdGVhbVRyZWVEYXRhOiBbXSwKICAgICAgLy8g5pWR5o+06Zif5LyN57uE57uH5qCRCiAgICAgIGV2ZW50R3JhZGVPcHRpb25zOiBbCiAgICAgIC8v5LqL5Lu2562J57qnCiAgICAgIHsKICAgICAgICBsYWJlbDogJzHnuqcnLAogICAgICAgIHZhbHVlOiAxCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzLnuqcnLAogICAgICAgIHZhbHVlOiAyCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzPnuqcnLAogICAgICAgIHZhbHVlOiAzCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzTnuqcnLAogICAgICAgIHZhbHVlOiA0CiAgICAgIH1dLAogICAgICB0YWJsZURhdGE6IFtdLAogICAgICByb2FkT3B0aW9uczogW10sCiAgICAgIGFsb25nUm91dGVJbmZvRGF0YTogW10sCiAgICAgIHRlYW1PcHRpb25zOiBbXSwKICAgICAgb3B0aW9uczogW3sKICAgICAgICBsYWJlbDogJ+WQpicsCiAgICAgICAgdmFsdWU6IDAKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5pivJywKICAgICAgICB2YWx1ZTogMQogICAgICB9XSwKICAgICAgZ2VuZXJhdGVkT3JOb3Q6IDAsCiAgICAgIHRlYW1JbmZvOiB7CiAgICAgICAgdGVhbUlkOiAnJywKICAgICAgICB0ZWFtRnVsbElkOiAnJwogICAgICB9LAogICAgICB0cmFmZmljQ29uZ2VzdGlvbnM6IFtdCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwpIHsKICAgICAgICBpZiAobmV3VmFsID09PSB0aGlzLiRvcHRpb25zLm5hbWUpIHsKICAgICAgICAgIHRoaXMub3BlblBhZ2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5jbG9zZVBhZ2UoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLmdldE9yZ1RyZWVEYXRhKCk7CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnRWRpdEFkZFBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBpZiAoZGF0YS5pZCkgewogICAgICAgIF90aGlzLmlkID0gZGF0YS5pZDsKICAgICAgICBfdGhpcy5nZXREZXRhaWwoZGF0YS5pZCk7CiAgICAgIH0KICAgIH0pOwogICAgdGhpcy5nZXRSb2FkT3B0aW9ucygpOwogIH0sCiAgbWV0aG9kczogewogICAgZGljdGlvbmFyeUVzY2FwZTogZGljdGlvbmFyeUVzY2FwZSwKICAgIHNpdGVDaGFuZ2U6IGZ1bmN0aW9uIHNpdGVDaGFuZ2UoZSwgdHlwZSkgewogICAgICB2YXIgc2l0ZUluZm8gPSB0aGlzLmFsb25nUm91dGVJbmZvRGF0YS5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGU7CiAgICAgIH0pOwogICAgICB0aGlzLmFkZEVkaXRGb3JtWyIiLmNvbmNhdCh0eXBlLCAiTmFtZSIpXSA9IHNpdGVJbmZvLm5hbWU7CiAgICB9LAogICAgc2VuZFJlc2N1ZUluZm86IGZ1bmN0aW9uIHNlbmRSZXNjdWVJbmZvKGRhdGEpIHsKICAgICAgLy8gdGhpcy5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCAnZWRpdCcpCiAgICAgIGNvbnNvbGUubG9nKGRhdGEpOwogICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKGRhdGEpOwogICAgfSwKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyDot6/mrrXmlbDmja7mn6Xor6IKICAgIGdldFJvYWRPcHRpb25zOiBmdW5jdGlvbiBnZXRSb2FkT3B0aW9ucygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJHJvYWRTZWN0aW9uSW5mLCBfeWllbGQkcm9hZFNlY3Rpb25JbmYyLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiByb2FkU2VjdGlvbkluZm9JbnRlcih7CiAgICAgICAgICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRyb2FkU2VjdGlvbkluZiA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiA9IF95aWVsZCRyb2FkU2VjdGlvbkluZi5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRyb2FkU2VjdGlvbkluZjI7CiAgICAgICAgICAgICAgX3RoaXMyLnJvYWRPcHRpb25zID0gcm93cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGl0ZW0ucm9hZE5hbWUgPSBpdGVtLm5hbWUgKyAnICcgKyBpdGVtLmNvZGU7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyghX3RoaXMyLmlkKTsKICAgICAgICAgICAgICBpZiAoIV90aGlzMi5pZCkgewogICAgICAgICAgICAgICAgX3RoaXMyLiRzZXQoX3RoaXMyLmFkZEVkaXRGb3JtLCAncm9hZElkJywgX3RoaXMyLnJvYWRPcHRpb25zWzBdLmlkKTsKICAgICAgICAgICAgICAgIF90aGlzMi5yb2FkQ2hhbmdlKF90aGlzMi5yb2FkT3B0aW9uc1swXS5pZCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6Lev5q616YCJ5oup5Y+Y5YyWCiAgICByb2FkQ2hhbmdlOiBmdW5jdGlvbiByb2FkQ2hhbmdlKHZhbHVlKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczMuZ2V0VGVhbURhdGEodmFsdWUpOwogICAgICAgICAgICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluayv+e6v+iuvuWkh+S/oeaBrwogICAgICAgICAgICAgIF90aGlzMy5nZXRBbG9uZ1JvdXRlSW5mbyh2YWx1ZSwgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciBfdGhpczMkYWRkRWRpdEZvcm0gPSBfdGhpczMuYWRkRWRpdEZvcm0sCiAgICAgICAgICAgICAgICAgIHN0YXJ0UGF0cm9sSWQgPSBfdGhpczMkYWRkRWRpdEZvcm0uc3RhcnRQYXRyb2xJZCwKICAgICAgICAgICAgICAgICAgZW5kUGF0cm9sSWQgPSBfdGhpczMkYWRkRWRpdEZvcm0uZW5kUGF0cm9sSWQ7CgogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAqIOW3oeajgOW8gOWni++8jOe7k+adn+ermQ0KICAgICAgICAgICAgICAgICogKi8KICAgICAgICAgICAgICAgIGlmIChzdGFydFBhdHJvbElkKSB7CiAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IHN0YXJ0UGF0cm9sSWQ7CiAgICAgICAgICAgICAgICAgIH0pKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqeW3oeajgOW8gOWni+ermS4uJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlbmRQYXRyb2xJZCkgewogICAgICAgICAgICAgICAgICBpZiAoIWRhdGEuc29tZShmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmlkID09PSBlbmRQYXRyb2xJZDsKICAgICAgICAgICAgICAgICAgfSkpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczMuYWRkRWRpdEZvcm0uZW5kUGF0cm9sSWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqeW3oeajgOe7k+adn+ermS4uJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICBnZXRBbG9uZ1JvdXRlSW5mbzogZnVuY3Rpb24gZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBfd2lwZURhdGEsIF95aWVsZCRhbG9uZ1JvdXRlSW5mbywgX3lpZWxkJGFsb25nUm91dGVJbmZvMiwgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3dpcGVEYXRhID0gZnVuY3Rpb24gX3dpcGVEYXRhKCkgewogICAgICAgICAgICAgICAgX3RoaXM0LmFsb25nUm91dGVJbmZvRGF0YSA9IFtdOwogICAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soX3RoaXM0LmFsb25nUm91dGVJbmZvRGF0YSk7CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDE7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBhbG9uZ1JvdXRlSW5mb0ludGVyKHJlZmluZVJlcXVlc3RCb2R5KHsKICAgICAgICAgICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRfc2VnbWVudF9pZF8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfSksICdhZGRFZGl0Jyk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkYWxvbmdSb3V0ZUluZm8gPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkYWxvbmdSb3V0ZUluZm8yID0gX3lpZWxkJGFsb25nUm91dGVJbmZvLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJGFsb25nUm91dGVJbmZvMjsKICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhyb3dzKTsKICAgICAgICAgICAgICBfdGhpczQuYWxvbmdSb3V0ZUluZm9EYXRhID0gcm93czsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzWyJjYXRjaCJdKDEpOwogICAgICAgICAgICAgIC8vIOS4jeS4uuivt+axgui/h+W/q+e7k+adn+eahOaDheWGteS4i++8jOmHjee9rgogICAgICAgICAgICAgIGlmIChfY29udGV4dDMudDAubWVzc2FnZSAhPT0gJ2NhbmNlbGVkJykgX3dpcGVEYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMSwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluW3oeafpeaVkeaPtOmYn+S8jeS/oeaBrwogICAgZ2V0VGVhbURhdGE6IGZ1bmN0aW9uIGdldFRlYW1EYXRhKHZhbHVlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkdGVhbURhdGEsIF95aWVsZCR0ZWFtRGF0YSRyb3dzLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHRlYW1EYXRhKHJlZmluZVJlcXVlc3RCb2R5KHsKICAgICAgICAgICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3IuaWRfJywKICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICd0LnR5cGVfJywKICAgICAgICAgICAgICAgICAgdmFsdWU6ICcxJwogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICB9KSwgJ2FkZEVkaXQnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCR0ZWFtRGF0YSA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0ZWFtRGF0YSRyb3dzID0gX3lpZWxkJHRlYW1EYXRhLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCR0ZWFtRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0ZWFtRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzNS50ZWFtT3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOiOt+WPluWFrOWPuOagkQogICAgZ2V0T3JnVHJlZURhdGE6IGZ1bmN0aW9uIGdldE9yZ1RyZWVEYXRhKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgZGF0YTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBvcmdUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBkYXRhID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgX3RoaXM2LnRlYW1UcmVlRGF0YSA9IGRhdGE7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOmYn+S8jemAieaLqQogICAgdGVhbUlkQ2hhbmdlOiBmdW5jdGlvbiB0ZWFtSWRDaGFuZ2UodHlwZSkgewogICAgICB2YXIgX3RoaXMkJHJlZnMsIF90aGlzJCRyZWZzMjsKICAgICAgdGhpc1t0eXBlXS50ZWFtRnVsbElkID0gKChfdGhpcyQkcmVmcyA9IHRoaXMuJHJlZnNbIiIuY29uY2F0KHR5cGUsICJDYXNjYWRlciIpXSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMgPT09IHZvaWQgMCB8fCAoX3RoaXMkJHJlZnMgPSBfdGhpcyQkcmVmcy5nZXRDaGVja2VkTm9kZXMoKVswXSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMgPT09IHZvaWQgMCB8fCAoX3RoaXMkJHJlZnMgPSBfdGhpcyQkcmVmcy5kYXRhKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkJHJlZnMucGF0aCkgfHwgJyc7CiAgICAgIHRoaXNbdHlwZV0udGVhbUlkID0gKChfdGhpcyQkcmVmczIgPSB0aGlzLiRyZWZzWyIiLmNvbmNhdCh0eXBlLCAiQ2FzY2FkZXIiKV0pID09PSBudWxsIHx8IF90aGlzJCRyZWZzMiA9PT0gdm9pZCAwIHx8IChfdGhpcyQkcmVmczIgPSBfdGhpcyQkcmVmczIuZ2V0Q2hlY2tlZE5vZGVzKClbMF0pID09PSBudWxsIHx8IF90aGlzJCRyZWZzMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkJHJlZnMyLnZhbHVlKSB8fCAnJzsKICAgIH0sCiAgICAvLyDlnLDlm77mjILovb3lkI4KICAgIG1hcExvYWQ6IGZ1bmN0aW9uIG1hcExvYWQobWFwKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLm1hcExvYWRpbmcgPSBmYWxzZTsKICAgICAgbWFwLm9uKCdjbGljaycsIGZ1bmN0aW9uIChfcmVmKSB7CiAgICAgICAgdmFyIGxuZ0xhdCA9IF9yZWYubG5nTGF0OwogICAgICAgIHZhciBsbmcgPSBsbmdMYXQubG5nLAogICAgICAgICAgbGF0ID0gbG5nTGF0LmxhdDsKICAgICAgICBfdGhpczcuYWRkRWRpdEZvcm0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzNy5hZGRFZGl0Rm9ybSksIHt9LCB7CiAgICAgICAgICBsbmc6IGxuZywKICAgICAgICAgIGxhdDogbGF0CiAgICAgICAgfSk7CiAgICAgICAgX3RoaXM3LmN1c3RvbVRhZ1BvaW50cyhbbG5nLCBsYXRdKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5L+u5pS557uP57qs5bqm5pu05paw5Zyw5Zu+5qCH54K5CiAgICB1cGRhdGVQb2ludDogZnVuY3Rpb24gdXBkYXRlUG9pbnQoZSkgewogICAgICB2YXIgX3RoaXMkYWRkRWRpdEZvcm0gPSB0aGlzLmFkZEVkaXRGb3JtLAogICAgICAgIGxuZyA9IF90aGlzJGFkZEVkaXRGb3JtLmxuZywKICAgICAgICBsYXQgPSBfdGhpcyRhZGRFZGl0Rm9ybS5sYXQ7CiAgICAgIHRoaXMuY3VzdG9tVGFnUG9pbnRzKFtsbmcsIGxhdF0pOwogICAgfSwKICAgIC8vIOaJk+W8gOmhtemdouaJp+ihjAogICAgb3BlblBhZ2U6IGZ1bmN0aW9uIG9wZW5QYWdlKCkgewogICAgICB0aGlzLmdldFJvYWRPcHRpb25zKCk7CiAgICB9LAogICAgLy8g5bGV56S65by55bGCCiAgICBzaG93RGlhbG9nOiBmdW5jdGlvbiBzaG93RGlhbG9nKGRpYWxvZ05hbWUpIHsKICAgICAgaWYgKCFkaWFsb2dOYW1lKSByZXR1cm47CiAgICAgIHRoaXNbZGlhbG9nTmFtZSArICdEaWFsb2cnXSA9IHRydWU7CiAgICB9LAogICAgc2hvd0FwcG9pbnREaWFsb2c6IGZ1bmN0aW9uIHNob3dBcHBvaW50RGlhbG9nKCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5hZGRFZGl0Rm9ybS52YWxpZGF0ZSgvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNih2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDYucHJldiA9IF9jb250ZXh0Ni5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uud2FybmluZygiXHU2NzA5Ii5jb25jYXQoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgsICJcdTRFMkFcdTVCNTdcdTZCQjVcdTY3MkFcdTkwMUFcdThGQzdcdTY4MjFcdTlBOENcdUZGMENcdThCRjdcdTZCNjNcdTc4NkVcdTU4NkJcdTUxOTlcdTg4NjhcdTUzNTVcdTUxODVcdTVCQjlcdTMwMDIiKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczguYXBwb2ludERpYWxvZyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTYpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIpIHsKICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgb2ZmUGFnZTogZnVuY3Rpb24gb2ZmUGFnZSgpIHsKICAgICAgdGhpcy5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCAnZWRpdCcpOwogICAgfSwKICAgIC8vIOWFs+mXremhtemdouaJp+ihjAogICAgY2xvc2VQYWdlOiBmdW5jdGlvbiBjbG9zZVBhZ2UoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB2YXIgcHViU3ViID0gdGhpcy5wdWJTdWIsCiAgICAgICAgYWRkRWRpdFJ1bGVzID0gdGhpcy5hZGRFZGl0UnVsZXMsCiAgICAgICAgcm9hZE9wdGlvbnMgPSB0aGlzLnJvYWRPcHRpb25zOwogICAgICAvLyDph43nva7nu4Tku7bmlbDmja4KICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKSwgewogICAgICAgIHB1YlN1YjogcHViU3ViLAogICAgICAgIGFkZEVkaXRSdWxlczogYWRkRWRpdFJ1bGVzLAogICAgICAgIHJvYWRPcHRpb25zOiByb2FkT3B0aW9ucwogICAgICB9KTsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICBfdGhpczkuJHJlZnMuYWRkRWRpdEZvcm0uJGVsLnNjcm9sbFRvcCA9IDA7CiAgICAgICAgX3RoaXM5LiRyZWZzLmFkZEVkaXRGb3JtLmNsZWFyVmFsaWRhdGUoKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6I635Y+W6K+m5oOFCiAgICBnZXREZXRhaWw6IGZ1bmN0aW9uIGdldERldGFpbChpZCkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTcoKSB7CiAgICAgICAgdmFyIF90aGlzMTAkYWRkRWRpdEZvcm0sIF90aGlzMTAkYWRkRWRpdEZvcm0kciwgcm9hZElkLCBfdGhpczEwJGFkZEVkaXRGb3JtJHAsIHBlZ1NWYWwsIF90aGlzMTAkYWRkRWRpdEZvcm0kcDIsIHBlZ0VWYWwsIHN0YXJ0UGVnQXJyLCBlbmRQZWdBcnI7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU3JChfY29udGV4dDcpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ny5wcmV2ID0gX2NvbnRleHQ3Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Ny5wcmV2ID0gMDsKICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGV0YWlsKGlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF90aGlzMTAuYWRkRWRpdEZvcm0gPSBfY29udGV4dDcuc2VudDsKICAgICAgICAgICAgICBfdGhpczEwJGFkZEVkaXRGb3JtID0gX3RoaXMxMC5hZGRFZGl0Rm9ybSwgX3RoaXMxMCRhZGRFZGl0Rm9ybSRyID0gX3RoaXMxMCRhZGRFZGl0Rm9ybS5yb2FkSWQsIHJvYWRJZCA9IF90aGlzMTAkYWRkRWRpdEZvcm0kciA9PT0gdm9pZCAwID8gJycgOiBfdGhpczEwJGFkZEVkaXRGb3JtJHIsIF90aGlzMTAkYWRkRWRpdEZvcm0kcCA9IF90aGlzMTAkYWRkRWRpdEZvcm0ucGVnU1ZhbCwgcGVnU1ZhbCA9IF90aGlzMTAkYWRkRWRpdEZvcm0kcCA9PT0gdm9pZCAwID8gJycgOiBfdGhpczEwJGFkZEVkaXRGb3JtJHAsIF90aGlzMTAkYWRkRWRpdEZvcm0kcDIgPSBfdGhpczEwJGFkZEVkaXRGb3JtLnBlZ0VWYWwsIHBlZ0VWYWwgPSBfdGhpczEwJGFkZEVkaXRGb3JtJHAyID09PSB2b2lkIDAgPyAnJyA6IF90aGlzMTAkYWRkRWRpdEZvcm0kcDI7CiAgICAgICAgICAgICAgaWYgKHBlZ1NWYWwpIHsKICAgICAgICAgICAgICAgIHN0YXJ0UGVnQXJyID0gcGVnU1ZhbC5zcGxpdCgnKycpOwogICAgICAgICAgICAgICAgX3RoaXMxMC5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHN0YXJ0UGVnQXJyWzBdLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgX3RoaXMxMC5hZGRFZGl0Rm9ybS5zdGFydFBlZ0FkZCA9IHN0YXJ0UGVnQXJyWzFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAocGVnRVZhbCkgewogICAgICAgICAgICAgICAgZW5kUGVnQXJyID0gcGVnRVZhbC5zcGxpdCgnKycpOwogICAgICAgICAgICAgICAgX3RoaXMxMC5hZGRFZGl0Rm9ybS5lbmRQZWcgPSBlbmRQZWdBcnJbMF0uc2xpY2UoMSk7CiAgICAgICAgICAgICAgICBfdGhpczEwLmFkZEVkaXRGb3JtLmVuZFBlZ0FkZCA9IGVuZFBlZ0FyclsxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMxMC5yb2FkQ2hhbmdlKHJvYWRJZCk7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICBfY29udGV4dDcucHJldiA9IDg7CiAgICAgICAgICAgICAgX3RoaXMxMC5mb3JtTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuZmluaXNoKDgpOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU3LCBudWxsLCBbWzAsLCA4LCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5L+d5a2YCiAgICBoYW5kbGVTYXZlOiBmdW5jdGlvbiBoYW5kbGVTYXZlKCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnMuYWRkRWRpdEZvcm0udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTgodmFsaWQsIG9iamVjdCkgewogICAgICAgICAgdmFyIGRhdGEsIHJvYWRJbmZvOwogICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDgpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ4LnByZXYgPSBfY29udGV4dDgubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMTEuc2F2ZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfdGhpczExLmFkZEVkaXRGb3JtKSk7CiAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXJ0UGVnICYmIGRhdGEuc3RhcnRQZWdBZGQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLnBlZ1NWYWwgPSAnaycgKyAoZGF0YS5zdGFydFBlZyB8fCAnJykgKyAnKycgKyAoZGF0YS5zdGFydFBlZ0FkZCB8fCAnJyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZW5kUGVnICYmIGRhdGEuZW5kUGVnQWRkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5wZWdFVmFsID0gJ2snICsgKGRhdGEuZW5kUGVnIHx8ICcnKSArICcrJyArIChkYXRhLmVuZFBlZ0FkZCB8fCAnJyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZGF0YS5zdGFydFRpbWUgPSBtb21lbnQoZGF0YS5zdGFydFRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpOwogICAgICAgICAgICAgICAgICBkYXRhLmVuZFRpbWUgPSBtb21lbnQoZGF0YS5lbmRUaW1lKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTsKICAgICAgICAgICAgICAgICAgcm9hZEluZm8gPSBfdGhpczExLnJvYWRPcHRpb25zLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZGF0YS5yb2FkSWQ7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICBkYXRhLnJvYWROYW1lID0gcm9hZEluZm8ubmFtZTsKICAgICAgICAgICAgICAgICAgZGF0YS5yb2FkQ29kZSA9IHJvYWRJbmZvLmNvZGU7CiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpOwogICAgICAgICAgICAgICAgICBfdGhpczExLnRyYWZmaWNDb25nZXN0aW9ucy5wdXNoKGRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU4KTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDMsIF94NCkgewogICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICAvLyDmlLnlj5jpobXpnaIKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHZhciBwYWdlTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7CiAgICAgIHZhciB0eXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJzsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHsKICAgICAgICAgIHR5cGU6IHR5cGUKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}