{"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\\obstacleClearingRescue\\RescueRegistration\\components\\DetailPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\obstacleClearingRescue\\RescueRegistration\\components\\DetailPage\\index.vue","mtime":1751880370789},{"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:aW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKdmFyIF9leGNsdWRlZCA9IFsib2NjdXB5Il07CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmVycm9yLmNhdXNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnNvbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLm1hdGNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnBhZC1zdGFydC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHsgZGljdGlvbmFyeUVzY2FwZSwgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCB7IHRhYmxlRGV0YWlsLCB0YWJsZUVkaXQgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvb2JzdGFjbGVDbGVhcmluZ1Jlc2N1ZS9yZXNjdWVSZWdpc3RyYXRpb24nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgcm9hZFNlY3Rpb25JbmZvSW50ZXIgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9yb2FkU2VjdGlvbkluZm8nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgYWxvbmdSb3V0ZUluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2Fsb25nUm91dGVJbmZvJzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRGV0YWlsUGFnZScsCiAgcHJvcHM6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgZGVmYXVsdDogJ1RhYmxlUGFnZScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfQogIH0sCiAgY29tcG9uZW50czoge30sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAvLyDoh6rlrprkuYnpqozor4Hop4TliJnvvJrmnInlgLzml7blv4XpobvlnKjojIPlm7TlhoUKICAgIHZhciB2YWxpZGF0ZVJhbmdlMSA9IGZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2UxKCkgewogICAgICByZXR1cm4gZnVuY3Rpb24gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgewogICAgICAgIGlmIChfdGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnID09PSB1bmRlZmluZWQgfHwgX3RoaXMuZGV0YWlsRm9ybS5zdGFydFBlZ0FkZCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ+ivt+i+k+WFpeaVkeaPtOeCueS9jeahqeWPt+WFqOWAvCcpKTsKICAgICAgICB9IGVsc2UgaWYgKCFfdGhpcy5pc1ZhbHVlSW5SYW5nZShfdGhpcy5jb21iaW5lZFZhbHVlMSwgX3RoaXMuc3RhcnRWYWx1ZSwgX3RoaXMuZW5kVmFsdWUpKSB7CiAgICAgICAgICBfdGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnID0gdW5kZWZpbmVkOwogICAgICAgICAgX3RoaXMuZGV0YWlsRm9ybS5zdGFydFBlZ0FkZCA9IHVuZGVmaW5lZDsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigiXHU2MjQwXHU1ODZCXHU1MTk5XHU3Njg0XHU2ODY5XHU1M0Y3XHU0RTBEXHU1NzI4Ii5jb25jYXQoX3RoaXMuc3RhcnRWYWx1ZSwgIi0iKS5jb25jYXQoX3RoaXMuZW5kVmFsdWUsICJcdTgzMDNcdTU2RjRcdTUxODUiKSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH07CiAgICByZXR1cm4gewogICAgICBwaWxlTnVtYmVyUmFuZ2U6ICcnLAogICAgICBzdGFydFZhbHVlOiAwLAogICAgICBlbmRWYWx1ZTogMCwKICAgICAgc2F2ZUxvYWRpbmc6IGZhbHNlLAogICAgICBkZXRhaWxGb3JtOiB7CiAgICAgICAgc3RhcnRQZWc6IHVuZGVmaW5lZCwKICAgICAgICBzdGFydFBlZ0FkZDogdW5kZWZpbmVkCiAgICAgIH0sCiAgICAgIGRldGFpbEZvcm1CYWNrOiB7fSwKICAgICAgcHViU3ViOiBudWxsLAogICAgICBwYWdlVHlwZTogJ2VkaXQnLAogICAgICByb2FkT3B0aW9uczogW10sCiAgICAgIGFsb25nUm91dGVJbmZvRGF0YTogW10sCiAgICAgIGFkZEVkaXRSdWxlczogewogICAgICAgIHJlc2N1ZVRlbDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aKpeahiOeUteivneS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XSwKICAgICAgICByZXNjdWVUaW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5oql5qGI5pe26Ze05LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIGV2ZW50VHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeS6i+S7tuexu+WeiycsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgcmVzY3VlVHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aVkeaPtOexu+Wei+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgcm9hZElkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6Lev5q615L+h5oGv5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBldmVudFRpbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfkuovku7blj5HnlJ/ml7bpl7TkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHN0YXJ0UGVnOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRlUmFuZ2UxKCksCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwpIHsKICAgICAgICBpZiAobmV3VmFsID09PSB0aGlzLiRvcHRpb25zLm5hbWUpIHsKICAgICAgICAgIHRoaXMub3BlblBhZ2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5jbG9zZVBhZ2UoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnRGV0YWlsUGFnZScsIGZ1bmN0aW9uIChfLCBkYXRhKSB7CiAgICAgIGlmIChkYXRhLmlkKSB7CiAgICAgICAgX3RoaXMyLmdldERldGFpbChkYXRhLmlkKTsKICAgICAgfQogICAgfSk7CiAgfSwKICBjb21wdXRlZDogewogICAgY29tYmluZWRWYWx1ZTE6IGZ1bmN0aW9uIGNvbWJpbmVkVmFsdWUxKCkgewogICAgICByZXR1cm4gcGFyc2VGbG9hdCgiIi5jb25jYXQodGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnLCAiLiIpLmNvbmNhdChTdHJpbmcodGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnQWRkKS5wYWRTdGFydCgzLCAnMCcpKSkgfHwgMDsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgcGFyc2VTdHJpbmc6IGZ1bmN0aW9uIHBhcnNlU3RyaW5nKCkgewogICAgICBpZiAodGhpcy5waWxlTnVtYmVyUmFuZ2UpIHsKICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLnBpbGVOdW1iZXJSYW5nZS5tYXRjaCgvXltrS10oXGQrKSg/OlwrKFxkezEsM30pKT9+W2tLXShcZCspKD86XCsoXGR7MSwzfSkpPyQvKTsKICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBwYXJzZUZsb2F0KCIiLmNvbmNhdChtYXRjaFsxXSwgIi4iKS5jb25jYXQoU3RyaW5nKG1hdGNoWzJdKS5wYWRTdGFydCgzLCAnMCcpKSkgfHwgMDsKICAgICAgICB0aGlzLmVuZFZhbHVlID0gcGFyc2VGbG9hdCgiIi5jb25jYXQobWF0Y2hbM10sICIuIikuY29uY2F0KFN0cmluZyhtYXRjaFs0XSkucGFkU3RhcnQoMywgJzAnKSkpIHx8IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gMDsKICAgICAgfQogICAgfSwKICAgIGlzVmFsdWVJblJhbmdlOiBmdW5jdGlvbiBpc1ZhbHVlSW5SYW5nZSh2YWx1ZSwgYm91bmQxLCBib3VuZDIpIHsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSByZXR1cm4gZmFsc2U7CiAgICAgIGlmICghU3RyaW5nKHZhbHVlKS5pbmNsdWRlcygnLicpKSByZXR1cm4gdHJ1ZTsKICAgICAgdmFyIF9yZWYgPSBbTWF0aC5taW4oYm91bmQxLCBib3VuZDIpLCBNYXRoLm1heChib3VuZDEsIGJvdW5kMildLAogICAgICAgIG1pbiA9IF9yZWZbMF0sCiAgICAgICAgbWF4ID0gX3JlZlsxXTsKICAgICAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7CiAgICB9LAogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICBnZXRBbG9uZ1JvdXRlSW5mbzogZnVuY3Rpb24gZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF93aXBlRGF0YSwgX3lpZWxkJGFsb25nUm91dGVJbmZvLCBfeWllbGQkYWxvbmdSb3V0ZUluZm8yLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF93aXBlRGF0YSA9IGZ1bmN0aW9uIF93aXBlRGF0YSgpIHsKICAgICAgICAgICAgICAgIF90aGlzMy5hbG9uZ1JvdXRlSW5mb0RhdGEgPSBbXTsKICAgICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzMy5hbG9uZ1JvdXRlSW5mb0RhdGEpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIGFsb25nUm91dGVJbmZvSW50ZXIocmVmaW5lUmVxdWVzdEJvZHkoewogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAncm9hZF9zZWdtZW50X2lkXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICB9KSwgJ2FkZEVkaXQnKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbyA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9IF95aWVsZCRhbG9uZ1JvdXRlSW5mby5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8yID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRhbG9uZ1JvdXRlSW5mbzI7CiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socm93cyk7CiAgICAgICAgICAgICAgX3RoaXMzLmFsb25nUm91dGVJbmZvRGF0YSA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMTsKICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0WyJjYXRjaCJdKDEpOwogICAgICAgICAgICAgIC8vIOS4jeS4uuivt+axgui/h+W/q+e7k+adn+eahOaDheWGteS4i++8jOmHjee9rgogICAgICAgICAgICAgIGlmIChfY29udGV4dC50MC5tZXNzYWdlICE9PSAnY2FuY2VsZWQnKSBfd2lwZURhdGEoKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMSwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGNsZWFyQ2FyVHlwZTogZnVuY3Rpb24gY2xlYXJDYXJUeXBlKCkgewogICAgICB0aGlzLiRzZXQodGhpcy5kZXRhaWxGb3JtLCAnY2FyVHlwZScsICcnKTsKICAgIH0sCiAgICBnZXRDYXJDbGFzc2lmeTogZnVuY3Rpb24gZ2V0Q2FyQ2xhc3NpZnkodmFsdWUpIHsKICAgICAgdmFyIF9kaWN0JDsKICAgICAgdmFyIGRpY3RfYXJyID0gZ2V0RGljdGlvbmFyeUJ5Q29kZSgnZ3pjbCcpOwogICAgICB2YXIgZGljdCA9IGRpY3RfYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLnZhbHVlID09IHZhbHVlOwogICAgICB9KTsKICAgICAgcmV0dXJuIGRpY3QubGVuZ3RoID8gKF9kaWN0JCA9IGRpY3RbMF0pID09PSBudWxsIHx8IF9kaWN0JCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RpY3QkLmxvd2VyRGljWydnemN4J10gOiBbXTsKICAgIH0sCiAgICAvLyDljaDliLDmg4XlhrXnpoHnlKgKICAgIGNoZWNrRGlzYWJsZWQ6IGZ1bmN0aW9uIGNoZWNrRGlzYWJsZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLmRldGFpbEZvcm0ub2NjdXB5LmluY2x1ZGVzKCcwJyk7CiAgICB9LAogICAgY2hlY2tDaGFuZ2U6IGZ1bmN0aW9uIGNoZWNrQ2hhbmdlKCkgewogICAgICBpZiAodGhpcy5kZXRhaWxGb3JtLm9jY3VweS5pbmNsdWRlcygnMCcpKSB7CiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm9jY3VweSA9IFsnMCddOwogICAgICB9CiAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCk7CiAgICB9LAogICAgY2xpY2tFZGl0OiBmdW5jdGlvbiBjbGlja0VkaXQoKSB7CiAgICAgIHRoaXMucGFnZVR5cGUgPSB0aGlzLnBhZ2VUeXBlID09PSAnZWRpdCcgPyAnZGV0YWlsJyA6ICdlZGl0JzsKICAgICAgdGhpcy5kZXRhaWxGb3JtQmFjayA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZXRhaWxGb3JtKSk7CiAgICAgIHRoaXMuZ2V0Um9hZERhdGEoKTsKICAgIH0sCiAgICBjbGlja0NhbmNhbDogZnVuY3Rpb24gY2xpY2tDYW5jYWwoKSB7CiAgICAgIHRoaXMucGFnZVR5cGUgPSAnZWRpdCc7CiAgICAgIHRoaXMuZGV0YWlsRm9ybSA9IHRoaXMuZGV0YWlsRm9ybUJhY2s7CiAgICB9LAogICAgY2xpY2tTYXZlOiBmdW5jdGlvbiBjbGlja1NhdmUoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczQuJHJlZnMuZm9ybUluZm8udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMih2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgIHZhciBkYXRhLCByb2FkSW5mbywgX3lpZWxkJHRhYmxlRWRpdCwgc3RhdGU7CiAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHU1MTg1XHU1QkI5XHUzMDAyIikpOwogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDIxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LnNhdmVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RoaXM0LmRldGFpbEZvcm0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLm9jY3VweSAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm9jY3VweSA9IGRhdGEub2NjdXB5LmpvaW4oJywnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGFydFBlZyAmJiBkYXRhLnN0YXJ0UGVnQWRkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wZWdWYWwgPSAnaycgKyAoZGF0YS5zdGFydFBlZyB8fCAnJykgKyAnKycgKyAoZGF0YS5zdGFydFBlZ0FkZCB8fCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5yZXNjdWVUaW1lID0gbW9tZW50KGRhdGEucmVzY3VlVGltZSkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvYWRJbmZvID0gX3RoaXM0LnJvYWRPcHRpb25zLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZGF0YS5yb2FkSWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnJvYWROYW1lID0gcm9hZEluZm8ubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5yb2FkQ29kZSA9IHJvYWRJbmZvLmNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZUVkaXQoX29iamVjdFNwcmVhZCh7fSwgZGF0YSkpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRWRpdCA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCR0YWJsZUVkaXQuc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCJcdTdGMTZcdThGOTFcdTRGRERcdTVCNThcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczQucGFnZVR5cGUgPSAnZWRpdCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LmRldGFpbEZvcm0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzNC5kZXRhaWxGb3JtKSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LmRldGFpbEZvcm0ub2NjdXB5ID0gX3RoaXM0LmRldGFpbEZvcm0ub2NjdXB5LnNwbGl0KCcsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTg7CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC5zYXZlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgxOCk7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1sxMiwsIDE4LCAyMV1dKTsKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSgpKTsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgc2l0ZUNoYW5nZTogZnVuY3Rpb24gc2l0ZUNoYW5nZShlLCB0eXBlKSB7CiAgICAgIHZhciBzaXRlSW5mbyA9IHRoaXMuYWxvbmdSb3V0ZUluZm9EYXRhLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZTsKICAgICAgfSk7CiAgICAgIHRoaXMuZGV0YWlsRm9ybVsiIi5jb25jYXQodHlwZSwgIk5hbWUiKV0gPSBzaXRlSW5mby5uYW1lOwogICAgfSwKICAgIC8v6I635Y+W5omA5Zyo6Lev5q615YiX6KGo5pWw5o2uCiAgICBnZXRSb2FkRGF0YTogZnVuY3Rpb24gZ2V0Um9hZERhdGEoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkcm9hZFNlY3Rpb25JbmYsIF95aWVsZCRyb2FkU2VjdGlvbkluZjIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gcm9hZFNlY3Rpb25JbmZvSW50ZXIoewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkcm9hZFNlY3Rpb25JbmYgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID0gX3lpZWxkJHJvYWRTZWN0aW9uSW5mLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRyb2FkU2VjdGlvbkluZjIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHJvYWRTZWN0aW9uSW5mMjsKICAgICAgICAgICAgICBfdGhpczUucm9hZE9wdGlvbnMgPSByb3dzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgaXRlbS5yb2FkTmFtZSA9IGl0ZW0ubmFtZSArICcgJyArIGl0ZW0uY29kZTsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIF90aGlzNS5yb2FkQ2hhbmdlKF90aGlzNS5kZXRhaWxGb3JtLnJvYWRJZCwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHJvYWRDaGFuZ2U6IGZ1bmN0aW9uIHJvYWRDaGFuZ2UodmFsdWUpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHZhciBzaG93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTsKICAgICAgdmFyIHJvYWRJbmZvID0gdGhpcy5yb2FkT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IHZhbHVlOwogICAgICB9KTsKICAgICAgaWYgKHJvYWRJbmZvLnN0YXJ0UGVnSyAmJiByb2FkSW5mby5lbmRQZWdLKSB7CiAgICAgICAgdGhpcy5waWxlTnVtYmVyUmFuZ2UgPSByb2FkSW5mby5zdGFydFBlZ0sgKyAnficgKyByb2FkSW5mby5lbmRQZWdLOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucGlsZU51bWJlclJhbmdlID0gJyc7CiAgICAgIH0KICAgICAgaWYgKCFzaG93KSB7CiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnID0gdW5kZWZpbmVkOwogICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zdGFydFBlZ0FkZCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICB0aGlzLnBhcnNlU3RyaW5nKCk7CiAgICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluayv+e6v+iuvuWkh+S/oeaBrwogICAgICB0aGlzLmdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIHZhciBfdGhpczYkZGV0YWlsRm9ybSA9IF90aGlzNi5kZXRhaWxGb3JtLAogICAgICAgICAgc3RhcnRQYXRyb2xJZCA9IF90aGlzNiRkZXRhaWxGb3JtLnN0YXJ0UGF0cm9sSWQsCiAgICAgICAgICBlbmRQYXRyb2xJZCA9IF90aGlzNiRkZXRhaWxGb3JtLmVuZFBhdHJvbElkOwogICAgICAgIC8qDQogICAgICAgICAqIOW3oeajgOW8gOWni++8jOe7k+adn+ermQ0KICAgICAgICAgKiAqLwogICAgICAgIGlmIChzdGFydFBhdHJvbElkKSB7CiAgICAgICAgICBpZiAoIWRhdGEuc29tZShmdW5jdGlvbiAoaSkgewogICAgICAgICAgICByZXR1cm4gaS5pZCA9PT0gc3RhcnRQYXRyb2xJZDsKICAgICAgICAgIH0pKSB7CiAgICAgICAgICAgIF90aGlzNi5kZXRhaWxGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJzsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczYuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5byA5aeL56uZLi4nKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChlbmRQYXRyb2xJZCkgewogICAgICAgICAgaWYgKCFkYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IGVuZFBhdHJvbElkOwogICAgICAgICAgfSkpIHsKICAgICAgICAgICAgX3RoaXM2LmRldGFpbEZvcm0uZW5kUGF0cm9sSWQgPSAnJzsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczYuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup57uT5p2f56uZLi4nKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvLyDpmYTku7bpooTop4hsaXN0CiAgICBnZXRGaWxlUHJldmlld1VybExpc3Q6IGZ1bmN0aW9uIGdldEZpbGVQcmV2aWV3VXJsTGlzdChmaWxlcykgewogICAgICByZXR1cm4gZmlsZXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uZmlsZVByZXZpZXdVcmw7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOaJk+W8gOmhtemdouaJp+ihjAogICAgb3BlblBhZ2U6IGZ1bmN0aW9uIG9wZW5QYWdlKCkge30sCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCB7CiAgICAgICAgICB0eXBlOiB0eXBlCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWFs+mXremhtemdouaJp+ihjAogICAgY2xvc2VQYWdlOiBmdW5jdGlvbiBjbG9zZVBhZ2UoKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICAvLyDph43nva7nu4Tku7bmlbDmja4KICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKSwgewogICAgICAgIHB1YlN1YjogdGhpcy5wdWJTdWIKICAgICAgfSk7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgX3RoaXM3LiRyZWZzLmZvcm1JbmZvLiRlbC5zY3JvbGxUb3AgPSAwOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDojrflj5bor6bmg4UKICAgIGdldERldGFpbDogZnVuY3Rpb24gZ2V0RGV0YWlsKGlkKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBfeWllbGQkdGFibGVEZXRhaWwsIF95aWVsZCR0YWJsZURldGFpbCRvYywgb2NjdXB5LCBkZXRhaWxGb3JtLCBzdGFydFBlZ0FycjsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURldGFpbChpZCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEZXRhaWwgPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEZXRhaWwkb2MgPSBfeWllbGQkdGFibGVEZXRhaWwub2NjdXB5OwogICAgICAgICAgICAgIG9jY3VweSA9IF95aWVsZCR0YWJsZURldGFpbCRvYyA9PT0gdm9pZCAwID8gJycgOiBfeWllbGQkdGFibGVEZXRhaWwkb2M7CiAgICAgICAgICAgICAgZGV0YWlsRm9ybSA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfeWllbGQkdGFibGVEZXRhaWwsIF9leGNsdWRlZCk7CiAgICAgICAgICAgICAgX3RoaXM4LmRldGFpbEZvcm0gPSBfb2JqZWN0U3ByZWFkKHt9LCBkZXRhaWxGb3JtKTsKICAgICAgICAgICAgICBfdGhpczguZGV0YWlsRm9ybS5vY2N1cHkgPSBvY2N1cHkuc3BsaXQoJywnKTsKICAgICAgICAgICAgICBpZiAoX3RoaXM4LmRldGFpbEZvcm0ucGVnVmFsKSB7CiAgICAgICAgICAgICAgICBzdGFydFBlZ0FyciA9IF90aGlzOC5kZXRhaWxGb3JtLnBlZ1ZhbC5zcGxpdCgnKycpOwogICAgICAgICAgICAgICAgX3RoaXM4LiRzZXQoX3RoaXM4LmRldGFpbEZvcm0sICdzdGFydFBlZycsIHN0YXJ0UGVnQXJyWzBdLnNsaWNlKDEpKTsKICAgICAgICAgICAgICAgIF90aGlzOC4kc2V0KF90aGlzOC5kZXRhaWxGb3JtLCAnc3RhcnRQZWdBZGQnLCBzdGFydFBlZ0FyclsxXSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzOC4kc2V0KF90aGlzOC5kZXRhaWxGb3JtLCAnc3RhcnRQZWcnLCAnJyk7CiAgICAgICAgICAgICAgICBfdGhpczguJHNldChfdGhpczguZGV0YWlsRm9ybSwgJ3N0YXJ0UGVnQWRkJywgJycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}