{"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":1756864898099},{"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:aW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKdmFyIF9leGNsdWRlZCA9IFsib2NjdXB5Il07CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmVycm9yLmNhdXNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnNvbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLm1hdGNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnBhZC1zdGFydC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHsgZGljdGlvbmFyeUVzY2FwZSwgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCB7IHRhYmxlRGV0YWlsLCB0YWJsZUVkaXQgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvb2JzdGFjbGVDbGVhcmluZ1Jlc2N1ZS9yZXNjdWVSZWdpc3RyYXRpb24nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgcm9hZFNlY3Rpb25JbmZvSW50ZXIgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9yb2FkU2VjdGlvbkluZm8nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgYWxvbmdSb3V0ZUluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2Fsb25nUm91dGVJbmZvJzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7CmltcG9ydCBkaXNwb3NhbFByb2Nlc3MgZnJvbSAnLi9jb21wb25lbnRzL2Rpc3Bvc2FsUHJvY2Vzcy52dWUnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0RldGFpbFBhZ2UnLAogIHByb3BzOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGRlZmF1bHQ6ICdUYWJsZVBhZ2UnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0KICB9LAogIGNvbXBvbmVudHM6IHsKICAgIGRpc3Bvc2FsUHJvY2VzczogZGlzcG9zYWxQcm9jZXNzCiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiHquWumuS5iemqjOivgeinhOWIme+8muacieWAvOaXtuW/hemhu+WcqOiMg+WbtOWGhQogICAgdmFyIHZhbGlkYXRlUmFuZ2UxID0gZnVuY3Rpb24gdmFsaWRhdGVSYW5nZTEoKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbiAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgICAgaWYgKF90aGlzLmRldGFpbEZvcm0uc3RhcnRQZWcgPT09IHVuZGVmaW5lZCB8fCBfdGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnQWRkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign6K+36L6T5YWl5pWR5o+054K55L2N5qGp5Y+35YWo5YC8JykpOwogICAgICAgIH0gZWxzZSBpZiAoIV90aGlzLmlzVmFsdWVJblJhbmdlKF90aGlzLmNvbWJpbmVkVmFsdWUxLCBfdGhpcy5zdGFydFZhbHVlLCBfdGhpcy5lbmRWYWx1ZSkpIHsKICAgICAgICAgIF90aGlzLmRldGFpbEZvcm0uc3RhcnRQZWcgPSB1bmRlZmluZWQ7CiAgICAgICAgICBfdGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGVnQWRkID0gdW5kZWZpbmVkOwogICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCJcdTYyNDBcdTU4NkJcdTUxOTlcdTc2ODRcdTY4NjlcdTUzRjdcdTRFMERcdTU3MjgiLmNvbmNhdChfdGhpcy5zdGFydFZhbHVlLCAiLSIpLmNvbmNhdChfdGhpcy5lbmRWYWx1ZSwgIlx1ODMwM1x1NTZGNFx1NTE4NSIpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICB9OwogICAgfTsKICAgIHJldHVybiB7CiAgICAgIHBpbGVOdW1iZXJSYW5nZTogJycsCiAgICAgIHN0YXJ0VmFsdWU6IDAsCiAgICAgIGVuZFZhbHVlOiAwLAogICAgICBzYXZlTG9hZGluZzogZmFsc2UsCiAgICAgIGRldGFpbEZvcm06IHsKICAgICAgICBzdGFydFBlZzogdW5kZWZpbmVkLAogICAgICAgIHN0YXJ0UGVnQWRkOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgZGV0YWlsRm9ybUJhY2s6IHt9LAogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHBhZ2VUeXBlOiAnZWRpdCcsCiAgICAgIHJvYWRPcHRpb25zOiBbXSwKICAgICAgYWxvbmdSb3V0ZUluZm9EYXRhOiBbXSwKICAgICAgYWRkRWRpdFJ1bGVzOiB7CiAgICAgICAgcmVzY3VlVGVsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5oql5qGI55S16K+d5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIHJlc2N1ZVRpbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmiqXmoYjml7bpl7TkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgZXZlbnRUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5LqL5Lu257G75Z6LJywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICByZXNjdWVUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5pWR5o+057G75Z6L5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICByb2FkSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfot6/mrrXkv6Hmga/kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIGV2ZW50VGltZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+S6i+S7tuWPkeeUn+aXtumXtOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgc3RhcnRQZWc6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdGVSYW5nZTEoKSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGNhclVzZXI6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfovabkuLvlp5PlkI3kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgY2FyVXNlclRlbDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i9puS4u+eUteivneS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XQogICAgICB9LAogICAgICBkaXNhYmxlU2hvdzogdHJ1ZSwKICAgICAgZGlzcG9zYWxQcm9jZXNzOiBmYWxzZQogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBjb21wb25lbnROYW1lOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIobmV3VmFsKSB7CiAgICAgICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy4kb3B0aW9ucy5uYW1lKSB7CiAgICAgICAgICB0aGlzLm9wZW5QYWdlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuY2xvc2VQYWdlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ0RldGFpbFBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBpZiAoZGF0YS5pZCkgewogICAgICAgIF90aGlzMi5nZXREZXRhaWwoZGF0YS5pZCk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGNvbWJpbmVkVmFsdWUxOiBmdW5jdGlvbiBjb21iaW5lZFZhbHVlMSgpIHsKICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoIiIuY29uY2F0KHRoaXMuZGV0YWlsRm9ybS5zdGFydFBlZywgIi4iKS5jb25jYXQoU3RyaW5nKHRoaXMuZGV0YWlsRm9ybS5zdGFydFBlZ0FkZCkucGFkU3RhcnQoMywgJzAnKSkpIHx8IDA7CiAgICB9CiAgfSwKICBtZXRob2RzOiB7CiAgICBkaWN0aW9uYXJ5RXNjYXBlOiBkaWN0aW9uYXJ5RXNjYXBlLAogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIHBhcnNlU3RyaW5nOiBmdW5jdGlvbiBwYXJzZVN0cmluZygpIHsKICAgICAgaWYgKHRoaXMucGlsZU51bWJlclJhbmdlKSB7CiAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5waWxlTnVtYmVyUmFuZ2UubWF0Y2goL15ba0tdKFxkKykoPzpcKyhcZHsxLDN9KSk/fltrS10oXGQrKSg/OlwrKFxkezEsM30pKT8kLyk7CiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gcGFyc2VGbG9hdCgiIi5jb25jYXQobWF0Y2hbMV0sICIuIikuY29uY2F0KFN0cmluZyhtYXRjaFsyXSkucGFkU3RhcnQoMywgJzAnKSkpIHx8IDA7CiAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHBhcnNlRmxvYXQoIiIuY29uY2F0KG1hdGNoWzNdLCAiLiIpLmNvbmNhdChTdHJpbmcobWF0Y2hbNF0pLnBhZFN0YXJ0KDMsICcwJykpKSB8fCAwOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IDA7CiAgICAgIH0KICAgIH0sCiAgICBpc1ZhbHVlSW5SYW5nZTogZnVuY3Rpb24gaXNWYWx1ZUluUmFuZ2UodmFsdWUsIGJvdW5kMSwgYm91bmQyKSB7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IGlzTmFOKHZhbHVlKSkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoIVN0cmluZyh2YWx1ZSkuaW5jbHVkZXMoJy4nKSkgcmV0dXJuIHRydWU7CiAgICAgIHZhciBfcmVmID0gW01hdGgubWluKGJvdW5kMSwgYm91bmQyKSwgTWF0aC5tYXgoYm91bmQxLCBib3VuZDIpXSwKICAgICAgICBtaW4gPSBfcmVmWzBdLAogICAgICAgIG1heCA9IF9yZWZbMV07CiAgICAgIHJldHVybiB2YWx1ZSA+PSBtaW4gJiYgdmFsdWUgPD0gbWF4OwogICAgfSwKICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluayv+e6v+iuvuWkh+S/oeaBrwogICAgZ2V0QWxvbmdSb3V0ZUluZm86IGZ1bmN0aW9uIGdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfd2lwZURhdGEsIF95aWVsZCRhbG9uZ1JvdXRlSW5mbywgX3lpZWxkJGFsb25nUm91dGVJbmZvMiwgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfd2lwZURhdGEgPSBmdW5jdGlvbiBfd2lwZURhdGEoKSB7CiAgICAgICAgICAgICAgICBfdGhpczMuYWxvbmdSb3V0ZUluZm9EYXRhID0gW107CiAgICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczMuYWxvbmdSb3V0ZUluZm9EYXRhKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBhbG9uZ1JvdXRlSW5mb0ludGVyKHJlZmluZVJlcXVlc3RCb2R5KHsKICAgICAgICAgICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRfc2VnbWVudF9pZF8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfSksICdhZGRFZGl0Jyk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkYWxvbmdSb3V0ZUluZm8gPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8ucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkYWxvbmdSb3V0ZUluZm8yOwogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJvd3MpOwogICAgICAgICAgICAgIF90aGlzMy5hbG9uZ1JvdXRlSW5mb0RhdGEgPSByb3dzOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFsiY2F0Y2giXSgxKTsKICAgICAgICAgICAgICAvLyDkuI3kuLror7fmsYLov4flv6vnu5PmnZ/nmoTmg4XlhrXkuIvvvIzph43nva4KICAgICAgICAgICAgICBpZiAoX2NvbnRleHQudDAubWVzc2FnZSAhPT0gJ2NhbmNlbGVkJykgX3dpcGVEYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzEsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBjbGVhckNhclR5cGU6IGZ1bmN0aW9uIGNsZWFyQ2FyVHlwZSgpIHsKICAgICAgdGhpcy4kc2V0KHRoaXMuZGV0YWlsRm9ybSwgJ2NhclR5cGUnLCAnJyk7CiAgICB9LAogICAgZ2V0Q2FyQ2xhc3NpZnk6IGZ1bmN0aW9uIGdldENhckNsYXNzaWZ5KHZhbHVlKSB7CiAgICAgIHZhciBfZGljdCQ7CiAgICAgIHZhciBkaWN0X2FyciA9IGdldERpY3Rpb25hcnlCeUNvZGUoJ2d6Y2wnKTsKICAgICAgdmFyIGRpY3QgPSBkaWN0X2Fyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS52YWx1ZSA9PSB2YWx1ZTsKICAgICAgfSk7CiAgICAgIHJldHVybiBkaWN0Lmxlbmd0aCA/IChfZGljdCQgPSBkaWN0WzBdKSA9PT0gbnVsbCB8fCBfZGljdCQgPT09IHZvaWQgMCB8fCAoX2RpY3QkID0gX2RpY3QkLmxvd2VyRGljKSA9PT0gbnVsbCB8fCBfZGljdCQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kaWN0JFsnZ3pjeCddIDogW107CiAgICB9LAogICAgLy8g5Y2g5Yiw5oOF5Ya156aB55SoCiAgICBjaGVja0Rpc2FibGVkOiBmdW5jdGlvbiBjaGVja0Rpc2FibGVkKCkgewogICAgICByZXR1cm4gdGhpcy5kZXRhaWxGb3JtLm9jY3VweS5pbmNsdWRlcygnMCcpOwogICAgfSwKICAgIGNoZWNrQ2hhbmdlOiBmdW5jdGlvbiBjaGVja0NoYW5nZSgpIHsKICAgICAgaWYgKHRoaXMuZGV0YWlsRm9ybS5vY2N1cHkuaW5jbHVkZXMoJzAnKSkgewogICAgICAgIHRoaXMuZGV0YWlsRm9ybS5vY2N1cHkgPSBbJzAnXTsKICAgICAgfQogICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpOwogICAgfSwKICAgIGNsaWNrRWRpdDogZnVuY3Rpb24gY2xpY2tFZGl0KCkgewogICAgICB0aGlzLnBhZ2VUeXBlID0gdGhpcy5wYWdlVHlwZSA9PT0gJ2VkaXQnID8gJ2RldGFpbCcgOiAnZWRpdCc7CiAgICAgIHRoaXMuZGV0YWlsRm9ybUJhY2sgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGV0YWlsRm9ybSkpOwogICAgICB0aGlzLmdldFJvYWREYXRhKCk7CiAgICB9LAogICAgY2xpY2tDYW5jYWw6IGZ1bmN0aW9uIGNsaWNrQ2FuY2FsKCkgewogICAgICB0aGlzLnBhZ2VUeXBlID0gJ2VkaXQnOwogICAgICB0aGlzLmRldGFpbEZvcm0gPSB0aGlzLmRldGFpbEZvcm1CYWNrOwogICAgfSwKICAgIGNsaWNrU2F2ZTogZnVuY3Rpb24gY2xpY2tTYXZlKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM0LiRyZWZzLmZvcm1JbmZvLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmFsaWQsIG9iamVjdCkgewogICAgICAgICAgICAgICAgICB2YXIgZGF0YSwgcm9hZEluZm8sIF95aWVsZCR0YWJsZUVkaXQsIHN0YXRlOwogICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF90aGlzNC5kZXRhaWxGb3JtKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5vY2N1cHkgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5vY2N1cHkgPSBkYXRhLm9jY3VweS5qb2luKCcsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhcnRQZWcgJiYgZGF0YS5zdGFydFBlZ0FkZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucGVnVmFsID0gJ2snICsgKGRhdGEuc3RhcnRQZWcgfHwgJycpICsgJysnICsgKGRhdGEuc3RhcnRQZWdBZGQgfHwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVzY3VlVGltZSA9IG1vbWVudChkYXRhLnJlc2N1ZVRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpOwogICAgICAgICAgICAgICAgICAgICAgICByb2FkSW5mbyA9IF90aGlzNC5yb2FkT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGRhdGEucm9hZElkOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5yb2FkTmFtZSA9IHJvYWRJbmZvLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucm9hZENvZGUgPSByb2FkSW5mby5jb2RlOwogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDEyOwogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVFZGl0KF9vYmplY3RTcHJlYWQoe30sIGRhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgIF95aWVsZCR0YWJsZUVkaXQgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdGFibGVFZGl0LnN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uuc3VjY2VzcygiXHU3RjE2XHU4RjkxXHU0RkREXHU1QjU4XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LnBhZ2VUeXBlID0gJ2VkaXQnOwogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC5kZXRhaWxGb3JtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfdGhpczQuZGV0YWlsRm9ybSksIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNC5kZXRhaWxGb3JtLm9jY3VweSA9IF90aGlzNC5kZXRhaWxGb3JtLm9jY3VweS5zcGxpdCgnLCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE4OwogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczQuc2F2ZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5maW5pc2goMTgpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMTIsLCAxOCwgMjFdXSk7CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0oKSk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHNpdGVDaGFuZ2U6IGZ1bmN0aW9uIHNpdGVDaGFuZ2UoZSwgdHlwZSkgewogICAgICB2YXIgc2l0ZUluZm8gPSB0aGlzLmFsb25nUm91dGVJbmZvRGF0YS5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGU7CiAgICAgIH0pOwogICAgICB0aGlzLmRldGFpbEZvcm1bIiIuY29uY2F0KHR5cGUsICJOYW1lIildID0gc2l0ZUluZm8ubmFtZTsKICAgIH0sCiAgICAvL+iOt+WPluaJgOWcqOi3r+auteWIl+ihqOaVsOaNrgogICAgZ2V0Um9hZERhdGE6IGZ1bmN0aW9uIGdldFJvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgX3lpZWxkJHJvYWRTZWN0aW9uSW5mLCBfeWllbGQkcm9hZFNlY3Rpb25JbmYyLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHJvYWRTZWN0aW9uSW5mb0ludGVyKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiA9IF95aWVsZCRyb2FkU2VjdGlvbkluZi5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRyb2FkU2VjdGlvbkluZjI7CiAgICAgICAgICAgICAgX3RoaXM1LnJvYWRPcHRpb25zID0gcm93cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGl0ZW0ucm9hZE5hbWUgPSBpdGVtLm5hbWUgKyAnICcgKyBpdGVtLmNvZGU7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBfdGhpczUucm9hZENoYW5nZShfdGhpczUuZGV0YWlsRm9ybS5yb2FkSWQsIHRydWUpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByb2FkQ2hhbmdlOiBmdW5jdGlvbiByb2FkQ2hhbmdlKHZhbHVlKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB2YXIgc2hvdyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7CiAgICAgIHZhciByb2FkSW5mbyA9IHRoaXMucm9hZE9wdGlvbnMuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmlkID09PSB2YWx1ZTsKICAgICAgfSk7CiAgICAgIGlmIChyb2FkSW5mby5zdGFydFBlZ0sgJiYgcm9hZEluZm8uZW5kUGVnSykgewogICAgICAgIHRoaXMucGlsZU51bWJlclJhbmdlID0gcm9hZEluZm8uc3RhcnRQZWdLICsgJ34nICsgcm9hZEluZm8uZW5kUGVnSzsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnBpbGVOdW1iZXJSYW5nZSA9ICcnOwogICAgICB9CiAgICAgIGlmICghc2hvdykgewogICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zdGFydFBlZyA9IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLmRldGFpbEZvcm0uc3RhcnRQZWdBZGQgPSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgdGhpcy5wYXJzZVN0cmluZygpOwogICAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5bmsr/nur/orr7lpIfkv6Hmga8KICAgICAgdGhpcy5nZXRBbG9uZ1JvdXRlSW5mbyh2YWx1ZSwgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICB2YXIgX3RoaXM2JGRldGFpbEZvcm0gPSBfdGhpczYuZGV0YWlsRm9ybSwKICAgICAgICAgIHN0YXJ0UGF0cm9sSWQgPSBfdGhpczYkZGV0YWlsRm9ybS5zdGFydFBhdHJvbElkLAogICAgICAgICAgZW5kUGF0cm9sSWQgPSBfdGhpczYkZGV0YWlsRm9ybS5lbmRQYXRyb2xJZDsKICAgICAgICAvKg0KICAgICAgICAgKiDlt6Hmo4DlvIDlp4vvvIznu5PmnZ/nq5kNCiAgICAgICAgICogKi8KICAgICAgICBpZiAoc3RhcnRQYXRyb2xJZCkgewogICAgICAgICAgaWYgKCFkYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IHN0YXJ0UGF0cm9sSWQ7CiAgICAgICAgICB9KSkgewogICAgICAgICAgICBfdGhpczYuZGV0YWlsRm9ybS5zdGFydFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqeW8gOWni+ermS4uJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZW5kUGF0cm9sSWQpIHsKICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgIHJldHVybiBpLmlkID09PSBlbmRQYXRyb2xJZDsKICAgICAgICAgIH0pKSB7CiAgICAgICAgICAgIF90aGlzNi5kZXRhaWxGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqee7k+adn+ermS4uJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g6ZmE5Lu26aKE6KeIbGlzdAogICAgZ2V0RmlsZVByZXZpZXdVcmxMaXN0OiBmdW5jdGlvbiBnZXRGaWxlUHJldmlld1VybExpc3QoZmlsZXMpIHsKICAgICAgcmV0dXJuIGZpbGVzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmZpbGVQcmV2aWV3VXJsOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDmiZPlvIDpobXpnaLmiafooYwKICAgIG9wZW5QYWdlOiBmdW5jdGlvbiBvcGVuUGFnZSgpIHt9LAogICAgY2hhbmdlUGFnZTogZnVuY3Rpb24gY2hhbmdlUGFnZSgpIHsKICAgICAgdmFyIHBhZ2VOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJzsKICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnOwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVBhZ2UnLCBwYWdlTmFtZSwgZnVuY3Rpb24gKF8pIHsKICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwgewogICAgICAgICAgdHlwZTogdHlwZQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlhbPpl63pobXpnaLmiafooYwKICAgIGNsb3NlUGFnZTogZnVuY3Rpb24gY2xvc2VQYWdlKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgLy8g6YeN572u57uE5Lu25pWw5o2uCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcyksIHsKICAgICAgICBwdWJTdWI6IHRoaXMucHViU3ViCiAgICAgIH0pOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIF90aGlzNy4kcmVmcy5mb3JtSW5mby4kZWwuc2Nyb2xsVG9wID0gMDsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6I635Y+W6K+m5oOFCiAgICBnZXREZXRhaWw6IGZ1bmN0aW9uIGdldERldGFpbChpZCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgX3lpZWxkJHRhYmxlRGV0YWlsLCBfeWllbGQkdGFibGVEZXRhaWwkb2MsIG9jY3VweSwgZGV0YWlsRm9ybSwgc3RhcnRQZWdBcnI7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEZXRhaWwoaWQpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGV0YWlsID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGV0YWlsJG9jID0gX3lpZWxkJHRhYmxlRGV0YWlsLm9jY3VweTsKICAgICAgICAgICAgICBvY2N1cHkgPSBfeWllbGQkdGFibGVEZXRhaWwkb2MgPT09IHZvaWQgMCA/ICcnIDogX3lpZWxkJHRhYmxlRGV0YWlsJG9jOwogICAgICAgICAgICAgIGRldGFpbEZvcm0gPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3lpZWxkJHRhYmxlRGV0YWlsLCBfZXhjbHVkZWQpOwogICAgICAgICAgICAgIF90aGlzOC5kZXRhaWxGb3JtID0gX29iamVjdFNwcmVhZCh7fSwgZGV0YWlsRm9ybSk7CiAgICAgICAgICAgICAgX3RoaXM4LmRldGFpbEZvcm0ub2NjdXB5ID0gb2NjdXB5LnNwbGl0KCcsJyk7CiAgICAgICAgICAgICAgaWYgKF90aGlzOC5kZXRhaWxGb3JtLnBlZ1ZhbCkgewogICAgICAgICAgICAgICAgc3RhcnRQZWdBcnIgPSBfdGhpczguZGV0YWlsRm9ybS5wZWdWYWwuc3BsaXQoJysnKTsKICAgICAgICAgICAgICAgIF90aGlzOC4kc2V0KF90aGlzOC5kZXRhaWxGb3JtLCAnc3RhcnRQZWcnLCBzdGFydFBlZ0FyclswXS5zbGljZSgxKSk7CiAgICAgICAgICAgICAgICBfdGhpczguJHNldChfdGhpczguZGV0YWlsRm9ybSwgJ3N0YXJ0UGVnQWRkJywgc3RhcnRQZWdBcnJbMV0pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczguJHNldChfdGhpczguZGV0YWlsRm9ybSwgJ3N0YXJ0UGVnJywgJycpOwogICAgICAgICAgICAgICAgX3RoaXM4LiRzZXQoX3RoaXM4LmRldGFpbEZvcm0sICdzdGFydFBlZ0FkZCcsICcnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM4LmRpc2FibGVTaG93ID0gZmFsc2U7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmt7vliqDlpITnva7njq/oioIKICAgIGhhbmRsZUFkZERpc3Bvc2FsOiBmdW5jdGlvbiBoYW5kbGVBZGREaXNwb3NhbCgpIHsKICAgICAgdGhpcy5kaXNwb3NhbFByb2Nlc3MgPSB0cnVlOwogICAgfSwKICAgIGhhbmRsZVVwZGF0YUhhbmRsZXM6IGZ1bmN0aW9uIGhhbmRsZVVwZGF0YUhhbmRsZXMoKSB7CiAgICAgIHRoaXMuZ2V0RGV0YWlsKHRoaXMuZGV0YWlsRm9ybS5pZCk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}