{"remainingRequest":"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\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\obstacleClearingRescue\\RescueRegistration\\components\\EditAddPage\\index.vue","mtime":1757061376030},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcycNCmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50Jw0KaW1wb3J0IHtyZWZpbmVSZXF1ZXN0Qm9keX0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnDQppbXBvcnQgew0KICBhcHBvaW50LA0KICB0YWJsZUFkZCwNCiAgdGFibGVEZXRhaWwsDQogIHRhYmxlRWRpdA0KfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvb2JzdGFjbGVDbGVhcmluZ1Jlc2N1ZS9yZXNjdWVSZWdpc3RyYXRpb24nDQppbXBvcnQge2dldERpY3Rpb25hcnlCeUNvZGV9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeScNCmltcG9ydCB7dGFibGVEYXRhIGFzIHJvYWRTZWN0aW9uSW5mb0ludGVyfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9yb2FkU2VjdGlvbkluZm8nDQppbXBvcnQge3RhYmxlRGF0YSBhcyB0ZWFtRGF0YX0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcGF0cm9sQW5kUmVzY3VlVGVhbXNNZ210Jw0KaW1wb3J0IHt0YWJsZURhdGEgYXMgYWxvbmdSb3V0ZUluZm9JbnRlcn0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nDQoNCmltcG9ydCBVc2VyQ2hvaWNlRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9BcHBvaW50RGlhbG9nL2NvbXBvbmVudHMvVXNlckNob2ljZURpYWxvZy9pbmRleC52dWUnDQppbXBvcnQgRXZlbnRDaG9pY2VEaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL0FwcG9pbnREaWFsb2cvY29tcG9uZW50cy9FdmVudENob2ljZURpYWxvZy9pbmRleC52dWUnDQppbXBvcnQgQ2FyQ2hvaWNlRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9BcHBvaW50RGlhbG9nL2NvbXBvbmVudHMvQ2FyQ2hvaWNlRGlhbG9nL2luZGV4LnZ1ZScNCmltcG9ydCB7cGVyc29uQW5kQ2FySW5mb30gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2NvbW1hbmREaXNwYXRjaC9ldmVudFJlZ2lzdHJhdGlvbicNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnRWRpdEFkZFBhZ2UnLA0KICBjb21wb25lbnRzOiB7Q2FyQ2hvaWNlRGlhbG9nLCBFdmVudENob2ljZURpYWxvZywgVXNlckNob2ljZURpYWxvZ30sDQogIHByb3BzOiB7DQogICAgY29tcG9uZW50TmFtZTogew0KICAgICAgZGVmYXVsdDogJ0VkaXRBZGRQYWdlJywNCiAgICAgIHR5cGU6IFN0cmluZw0KICAgIH0NCiAgfSwNCiAgZGF0YSgpIHsNCiAgICAvLyDoh6rlrprkuYnpqozor4Hop4TliJnvvJrmnInlgLzml7blv4XpobvlnKjojIPlm7TlhoUNCiAgICBjb25zdCB2YWxpZGF0ZVJhbmdlMSA9ICgpID0+IHsNCiAgICAgIHJldHVybiAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7DQogICAgICAgIGlmICh0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGVnID09PSB1bmRlZmluZWQgfHwgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZ0FkZCA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCfor7fovpPlhaXmlZHmj7TngrnkvY3moanlj7flhajlgLwnKSkNCiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLmNvbWJpbmVkVmFsdWUxLCB0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWUpKSB7DQogICAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHVuZGVmaW5lZA0KICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uc3RhcnRQZWdBZGQgPSB1bmRlZmluZWQNCiAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYOaJgOWhq+WGmeeahOahqeWPt+S4jeWcqCR7dGhpcy5zdGFydFZhbHVlfS0ke3RoaXMuZW5kVmFsdWV96IyD5Zu05YaFYCkpDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgY2FsbGJhY2soKQ0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIHJldHVybiB7DQogICAgICBwdWJTdWI6IG51bGwsDQogICAgICBmb3JtTG9hZGluZzogdHJ1ZSwNCiAgICAgIGFkZEVkaXRGb3JtOiB7DQogICAgICAgIHJlc2N1ZVRlbDogJycsDQogICAgICAgIHJvYWRJZDogJycsDQogICAgICAgIG9jY3VweTogWycwJ10sDQogICAgICAgIHJlc2N1ZVR5cGU6IDEsDQogICAgICAgIGNhckNsYXNzOiAxLA0KICAgICAgICBjYXJUeXBlOiAxLA0KICAgICAgICByZXNjdWVUaW1lOiBuZXcgRGF0ZSgpLA0KICAgICAgICBjYXI6IHt9LA0KICAgICAgICBwZXJzb246ICcnLA0KICAgICAgICBkaXNwYXRjaENhckNvZGU6ICcnLA0KICAgICAgICBpc0RlbGVnYXRlczogZmFsc2UsDQogICAgICAgIHN0YXJ0UGVnOiB1bmRlZmluZWQsDQogICAgICAgIHN0YXJ0UGVnQWRkOiB1bmRlZmluZWQsDQogICAgICAgIGFwcG9pbnRUaW1lOiAnJw0KICAgICAgfSwNCiAgICAgIGFkZEVkaXRSdWxlczogew0KICAgICAgICBhcHBvaW50VGltZTogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+WnlOa0vuaXtumXtOS4jeiDveS4uuepuicsDQogICAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10NCiAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgIHJlc2N1ZVRlbDogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+aKpeahiOeUteivneS4jeiDveS4uuepuicsDQogICAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10NCiAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgIHJlc2N1ZVRpbWU6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgIG1lc3NhZ2U6ICfmiqXmoYjml7bpl7TkuI3og73kuLrnqbonLA0KICAgICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddDQogICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICBldmVudFR5cGU6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nkuovku7bnsbvlnosnLA0KICAgICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQ0KICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgcmVzY3VlVHlwZTogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+aVkeaPtOexu+Wei+S4jeiDveS4uuepuicsDQogICAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddDQogICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICByb2FkSWQ6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgIG1lc3NhZ2U6ICfot6/mrrXkv6Hmga/kuI3og73kuLrnqbonLA0KICAgICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQ0KICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgdGVhbUlkOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICBtZXNzYWdlOiAn5rS+6YGj6Zif5LyN5LiN6IO95Li656m6JywNCiAgICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10NCiAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgIGV2ZW50VGltZTogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+S6i+S7tuWPkeeUn+aXtumXtOS4jeiDveS4uuepuicsDQogICAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddDQogICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICAvLyBjYXJVc2VyVGVsOiBbDQogICAgICAgIC8vICAgew0KICAgICAgICAvLyAgICAgcGF0dGVybjogL14xKDNbMC05XXw0WzU3XXw1WzAtMzUtOV18N1swNjc4XXw4WzAtOV0pXGR7OH0kLywNCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfovabkuLvnlLXor53ovpPlhaXmnInor68nLA0KICAgICAgICAvLyAgICAgdHJpZ2dlcjogJ2JsdXInDQogICAgICAgIC8vICAgfQ0KICAgICAgICAvLyBdLA0KICAgICAgICAvLyBwZXJzb246IFsNCiAgICAgICAgLy8gICB7DQogICAgICAgIC8vICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfmtL7pgaPkurrlkZjkuI3og73kuLrnqbonLA0KICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddDQogICAgICAgIC8vICAgfQ0KICAgICAgICAvLyBdLA0KICAgICAgICAvLyBkaXNwYXRjaENhckNvZGU6IFsNCiAgICAgICAgLy8gICB7DQogICAgICAgIC8vICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgLy8gICAgIG1lc3NhZ2U6ICfmtL7pgaPovabovobkuI3og73kuLrnqbonLA0KICAgICAgICAvLyAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddDQogICAgICAgIC8vICAgfQ0KICAgICAgICAvLyBdLA0KICAgICAgICByZXNjdWVTdGF0dXM6IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nmlZHmj7TnirbmgIEnLA0KICAgICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQ0KICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgc3RhcnRQZWc6IFsNCiAgICAgICAgICB7cmVxdWlyZWQ6IHRydWUsIHZhbGlkYXRvcjogdmFsaWRhdGVSYW5nZTEoKSwgdHJpZ2dlcjogJ2JsdXInfQ0KICAgICAgICBdLA0KICAgICAgICBjYXJVc2VyOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICBtZXNzYWdlOiAn6L2m5Li75aeT5ZCN5LiN6IO95Li656m6JywNCiAgICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQ0KICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgY2FyVXNlclRlbDogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgbWVzc2FnZTogJ+i9puS4u+eUteivneS4jeiDveS4uuepuicsDQogICAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10NCiAgICAgICAgICB9DQogICAgICAgIF0NCiAgICAgIH0sDQogICAgICBzYXZlTG9hZGluZzogZmFsc2UsIC8vIOS4iuS8oGxvYWRpbmcNCiAgICAgIGlkOiAnJywgLy8gaWTmoIfor4bnrKYNCiAgICAgIHJvYWRPcHRpb25zOiBbXSwNCiAgICAgIGFsb25nUm91dGVJbmZvRGF0YTogW10sDQogICAgICB0ZWFtT3B0aW9uczogW10sDQogICAgICBjYXJEYXRhOiBbXSwNCiAgICAgIGNhckNob2ljZURpYWxvZzogZmFsc2UsDQogICAgICB1c2VyQ2hvaWNlRGlhbG9nOiBmYWxzZSwNCiAgICAgIHBlcnNvbk9wdGlvbnM6IFtdLA0KICAgICAgZXZlbnRDaG9pY2VEaWFsb2c6IGZhbHNlLA0KICAgICAgdGVhbURhdGFMaXN0OiBbXSwNCiAgICAgIGRpc3BhdGNoZXM6IFtdLA0KICAgICAgcGlsZU51bWJlclJhbmdlOiAnJywNCiAgICAgIHN0YXJ0VmFsdWU6IDAsDQogICAgICBlbmRWYWx1ZTogMCwNCiAgICAgIGlzY2xlYXI6IGZhbHNlDQogICAgfQ0KICB9LA0KICBjb21wdXRlZDogew0KICAgIGNvbWJpbmVkVmFsdWUxKCkgew0KICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoYCR7dGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZ30uJHtTdHJpbmcodGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZ0FkZCkucGFkU3RhcnQoMywgJzAnKX1gKSB8fCAwDQogICAgfQ0KICB9LA0KICB3YXRjaDogew0KICAgIGNvbXBvbmVudE5hbWU6IHsNCiAgICAgIGhhbmRsZXIobmV3VmFsKSB7DQogICAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMuJG9wdGlvbnMubmFtZSkgew0KICAgICAgICAgIHRoaXMub3BlblBhZ2UoKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuY2xvc2VQYWdlKCkNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfSwNCiAgY3JlYXRlZCgpIHsNCg0KICB9LA0KICBtb3VudGVkKCkgew0KDQogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdFZGl0QWRkUGFnZScsIChfLCBkYXRhKSA9PiB7DQogICAgICBpZiAoZGF0YS5yb2FkSWQpIHsNCiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5yb2FkSWQgPSBkYXRhLnJvYWRJZA0KICAgICAgfQ0KICAgICAgdGhpcy5nZXRSb2FkRGF0YSgpDQogICAgICB0aGlzLmlzY2xlYXIgPSBmYWxzZQ0KICAgICAgaWYgKGRhdGEuaWQpIHsNCiAgICAgICAgdGhpcy5pZCA9IGRhdGEuaWQNCiAgICAgICAgdGhpcy5nZXREZXRhaWwoZGF0YS5pZCkNCiAgICAgIH0NCiAgICB9KQ0KICB9LA0KICBtZXRob2RzOiB7DQogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZSwNCiAgICBpc0RlbGVnYXRlc0NoYW5nZSh2YWwpIHsNCiAgICAgIGlmICh2YWwpIHsNCiAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdhcHBvaW50VGltZScsIG5ldyBEYXRlKCkpDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ2FwcG9pbnRUaW1lJywgJycpDQogICAgICB9DQogICAgfSwNCiAgICBwYXJzZVN0cmluZygpIHsNCiAgICAgIGlmICh0aGlzLnBpbGVOdW1iZXJSYW5nZSkgew0KICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMucGlsZU51bWJlclJhbmdlLm1hdGNoKC9eW2tLXShcZCspKD86XCsoXGR7MSwzfSkpP35ba0tdKFxkKykoPzpcKyhcZHsxLDN9KSk/JC8pDQogICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHBhcnNlRmxvYXQoYCR7bWF0Y2hbMV19LiR7U3RyaW5nKG1hdGNoWzJdKS5wYWRTdGFydCgzLCAnMCcpfWApIHx8IDANCiAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHBhcnNlRmxvYXQoYCR7bWF0Y2hbM119LiR7U3RyaW5nKG1hdGNoWzRdKS5wYWRTdGFydCgzLCAnMCcpfWApIHx8IDANCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IDANCiAgICAgIH0NCiAgICB9LA0KICAgIGlzVmFsdWVJblJhbmdlKHZhbHVlLCBib3VuZDEsIGJvdW5kMikgew0KICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSByZXR1cm4gZmFsc2UNCiAgICAgIGlmICghU3RyaW5nKHZhbHVlKS5pbmNsdWRlcygnLicpKSByZXR1cm4gdHJ1ZQ0KICAgICAgY29uc3QgW21pbiwgbWF4XSA9IFtNYXRoLm1pbihib3VuZDEsIGJvdW5kMiksIE1hdGgubWF4KGJvdW5kMSwgYm91bmQyKV0NCiAgICAgIHJldHVybiB2YWx1ZSA+PSBtaW4gJiYgdmFsdWUgPD0gbWF4DQogICAgfSwNCiAgICAvLyDljaDliLDmg4XlhrXnpoHnlKgNCiAgICBjaGVja0Rpc2FibGVkKCkgew0KICAgICAgcmV0dXJuIHRoaXMuYWRkRWRpdEZvcm0ub2NjdXB5LmluY2x1ZGVzKCcwJykNCiAgICB9LA0KICAgIGNoYWVja0NoYW5nZShlKSB7DQogICAgICBpZiAodGhpcy5hZGRFZGl0Rm9ybS5vY2N1cHkuaW5jbHVkZXMoJzAnKSkgew0KICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLm9jY3VweSA9IFsnMCddDQogICAgICB9DQogICAgfSwNCiAgICAvLyDlt6Hmn6XmlZHmj7Tngrnlh7vkuovku7YNCiAgICB0ZWFtSWRDaGFuZ2UodmFsdWUpIHsNCiAgICAgIHRoaXMuZ2V0UGVyc29uQW5kQ2FySW5mbyh2YWx1ZSkNCiAgICAgIGxldCB0ZWFtSW5mbyA9IHRoaXMudGVhbU9wdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdmFsdWUpDQogICAgICB0aGlzLmFkZEVkaXRGb3JtLnRlYW1OYW1lID0gdGVhbUluZm8ubmFtZQ0KICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdwZXJzb24nLCAnJykNCiAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnZGlzcGF0Y2hDYXJDb2RlJywgJycpDQogICAgICB0aGlzLmFkZEVkaXRGb3JtLnVzZXIgPSBbXQ0KICAgICAgdGhpcy5kaXNwYXRjaGVzID0gW10NCiAgICB9LA0KICAgIC8vIOagueaNrumYn+S8jWlk5p+l6K+i5Lq65ZGY5L+h5oGv5Y+K6L2m6L6G5L+h5oGvDQogICAgZ2V0UGVyc29uQW5kQ2FySW5mbyhpZCkgew0KICAgICAgcGVyc29uQW5kQ2FySW5mbyhpZCkudGhlbigocmVzKSA9PiB7DQogICAgICAgIGNvbnN0IHttZW1iZXJzID0gW10sIGNhcnMgPSBbXX0gPSByZXMudmFsdWUNCiAgICAgICAgdGhpcy5wZXJzb25PcHRpb25zID0gbWVtYmVycy5tYXAoKHBlcnNvbikgPT4gew0KICAgICAgICAgIHBlcnNvbi5sYWJlbCA9IHBlcnNvbi50ZWwgKyAnICcgKyBwZXJzb24ubmFtZQ0KICAgICAgICAgIHJldHVybiBwZXJzb24NCiAgICAgICAgfSkNCiAgICAgICAgdGhpcy5jYXJEYXRhID0gY2Fycw0KICAgICAgfSkNCiAgICB9LA0KICAgIGhhbmRsZUV2ZW50U2VsZWN0KGRhdGEpIHsNCiAgICAgIGxldCBvYmogPSB7DQogICAgICAgIGV2ZW50SWQ6IGRhdGEuaWQsDQogICAgICAgIGV2ZW50Tm86IGRhdGEuZXZlbnRObywNCiAgICAgICAgcmVzY3VlVGVsOiBkYXRhLmV2ZW50VGVsIHx8ICcnLA0KICAgICAgICByZXNjdWVUaW1lOiBkYXRhLmV2ZW50VGltZSB8fCAnJywNCiAgICAgICAgcm9hZElkOiBkYXRhLnJvYWRJZCB8fCAnJywNCiAgICAgICAgcm9hZE5hbWU6IGRhdGEucm9hZE5hbWUgfHwgJycsDQogICAgICAgIHJvYWRDb2RlOiBkYXRhLnJvYWRDb2RlIHx8ICcnLA0KICAgICAgICBzdGFydFBhdHJvbElkOiBkYXRhLnN0YXJ0UGF0cm9sSWQgfHwgJycsDQogICAgICAgIHN0YXJ0UGF0cm9sTmFtZTogZGF0YS5zdGFydFBhdHJvbE5hbWUgfHwgJycsDQogICAgICAgIGVuZFBhdHJvbElkOiBkYXRhLmVuZFBhdHJvbElkIHx8ICcnLA0KICAgICAgICBlbmRQYXRyb2xOYW1lOiBkYXRhLmVuZFBhdHJvbE5hbWUgfHwgJycsDQogICAgICAgIGRpcmVjdGlvbjogZGF0YS5kaXJlY3Rpb24gfHwgJycNCiAgICAgIH0NCiAgICAgIHRoaXMuYWRkRWRpdEZvcm0gPSB7Li4udGhpcy5hZGRFZGl0Rm9ybSwgLi4ub2JqfQ0KICAgICAgaWYgKGRhdGEucGVnU1ZhbCkgew0KICAgICAgICBsZXQgc3RhcnRQZWdBcnIgPSBkYXRhLnBlZ1NWYWwuc3BsaXQoJysnKQ0KICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGVnID0gc3RhcnRQZWdBcnJbMF0uc2xpY2UoMSkNCiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZ0FkZCA9IHN0YXJ0UGVnQXJyWzFdDQogICAgICB9DQogICAgfSwNCiAgICBoYW5kbGVDYXJTZWxlY3Qoe2Nhck51bWJlciwgY2FyQ2xhc3N9KSB7DQogICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ2Rpc3BhdGNoQ2FyQ29kZScsIGNhck51bWJlcikNCiAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnZGlzcGF0Y2hDYXJUeXBlJywgY2FyQ2xhc3MpDQogICAgICB0aGlzLmRpc3BhdGNoZXMuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICBpdGVtLmRpc3BhdGNoQ2FyQ29kZSA9IGNhck51bWJlcg0KICAgICAgICBpdGVtLmRpc3BhdGNoQ2FyVHlwZSA9IGNhckNsYXNzDQogICAgICB9KQ0KICAgIH0sDQogICAgaGFuZGxlVXNlclNlbGVjdCh1c2VyKSB7DQogICAgICBjb25zdCB7ZGlzcGF0Y2hDYXJDb2RlID0gJycsIGRpc3BhdGNoQ2FyVHlwZSA9ICcnfSA9IHRoaXMuYWRkRWRpdEZvcm0NCiAgICAgIGlmICh1c2VyLmxlbmd0aCA+IDApIHsNCiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS51c2VyID0gdXNlcg0KICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnBlcnNvbiA9IHVzZXIubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpLmpvaW4oJywnKQ0KICAgICAgICB0aGlzLmRpc3BhdGNoZXMgPSB1c2VyLm1hcCgoaXRlbSkgPT4gew0KICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICBkaXNwYXRjaENhckNvZGUsDQogICAgICAgICAgICBkaXNwYXRjaENhclR5cGUsDQogICAgICAgICAgICBkaXNwYXRjaFVzZXJJZDogaXRlbS5pZCwNCiAgICAgICAgICAgIGRpc3BhdGNoVXNlck5hbWU6IGl0ZW0ubmFtZSwNCiAgICAgICAgICAgIGRpc3BhdGNoVXNlclRlbDogaXRlbS50ZWwNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICB9DQogICAgICAvLyB0aGlzLmFkZEVkaXRGb3JtLnBlcnNvbiA9IHVzZXIubmFtZQ0KICAgICAgLy8gdGhpcy5kaXNwYXRjaGVzID0gWw0KICAgICAgLy8gICB7DQogICAgICAvLyAgICAgZGlzcGF0Y2hDYXJDb2RlLA0KICAgICAgLy8gICAgIGRpc3BhdGNoQ2FyVHlwZSwNCiAgICAgIC8vICAgICBkaXNwYXRjaFVzZXJJZDogdXNlci5pZCwNCiAgICAgIC8vICAgICBkaXNwYXRjaFVzZXJOYW1lOiB1c2VyLm5hbWUsDQogICAgICAvLyAgICAgZGlzcGF0Y2hVc2VyVGVsOiB1c2VyLnRlbCwNCiAgICAgIC8vICAgfQ0KICAgICAgLy8gXQ0KICAgIH0sDQogICAgc2l0ZUNoYW5nZShlLCB0eXBlKSB7DQogICAgICBsZXQgc2l0ZUluZm8gPSB0aGlzLmFsb25nUm91dGVJbmZvRGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBlKQ0KICAgICAgdGhpcy5hZGRFZGl0Rm9ybVtgJHt0eXBlfU5hbWVgXSA9IHNpdGVJbmZvLm5hbWUNCiAgICB9LA0KICAgIGNsZWFyQ2FyVHlwZSgpIHsNCiAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnY2FyVHlwZScsICcnKQ0KICAgIH0sDQogICAgZ2V0Q2FyQ2xhc3NpZnkodmFsdWUpIHsNCiAgICAgIGNvbnN0IGRpY3RfYXJyID0gZ2V0RGljdGlvbmFyeUJ5Q29kZSgnZ3pjbCcpDQogICAgICBjb25zdCBkaWN0ID0gZGljdF9hcnIuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnZhbHVlID09IHZhbHVlKQ0KICAgICAgcmV0dXJuIGRpY3QubGVuZ3RoID8gZGljdFswXT8ubG93ZXJEaWM/LlsnZ3pjeCddIDogW10NCiAgICB9LA0KICAgIGhhbmRsZUFwcG9pbnQoKSB7DQogICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKGFzeW5jICh2YWxpZCwgb2JqZWN0KSA9PiB7DQogICAgICAgIGlmICghdmFsaWQpIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoDQogICAgICAgICAgICBg5pyJJHsNCiAgICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgNCiAgICAgICAgICAgIH3kuKrlrZfmrrXmnKrpgJrov4fmoKHpqozvvIzor7fmraPnoa7loavlhpnooajljZXlhoXlrrnjgIJgDQogICAgICAgICAgKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuc2F2ZUxvYWRpbmcgPSB0cnVlDQogICAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYWRkRWRpdEZvcm0pKQ0KICAgICAgICAgIGRhdGEub2NjdXB5ID0gZGF0YS5vY2N1cHkuam9pbignLCcpDQogICAgICAgICAgaWYgKGRhdGEuc3RhcnRQZWcgJiYgZGF0YS5zdGFydFBlZ0FkZCkgew0KICAgICAgICAgICAgZGF0YS5wZWdWYWwgPQ0KICAgICAgICAgICAgICAnaycgKyAoZGF0YS5zdGFydFBlZyB8fCAnJykgKyAnKycgKyAoZGF0YS5zdGFydFBlZ0FkZCB8fCAnJykNCiAgICAgICAgICB9DQogICAgICAgICAgZGF0YS5yZXNjdWVUaW1lID0gbW9tZW50KGRhdGEucmVzY3VlVGltZSkuZm9ybWF0KA0KICAgICAgICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnDQogICAgICAgICAgKQ0KICAgICAgICAgIGRhdGEuYXBwb2ludFRpbWUgPSBtb21lbnQoZGF0YS5hcHBvaW50VGltZSkuZm9ybWF0KA0KICAgICAgICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnDQogICAgICAgICAgKQ0KICAgICAgICAgIGxldCByb2FkSW5mbyA9IHRoaXMucm9hZE9wdGlvbnMuZmluZCgNCiAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmlkID09PSBkYXRhLnJvYWRJZA0KICAgICAgICAgICkNCiAgICAgICAgICBkYXRhLnJvYWROYW1lID0gcm9hZEluZm8ubmFtZQ0KICAgICAgICAgIGRhdGEucm9hZENvZGUgPSByb2FkSW5mby5jb2RlDQogICAgICAgICAgZGF0YS5jYXIgPSB7DQogICAgICAgICAgICBkaXNwYXRjaENhckNvZGU6IGRhdGEuZGlzcGF0Y2hDYXJDb2RlIHx8ICcnLA0KICAgICAgICAgICAgZGlzcGF0Y2hDYXJUeXBlOiBkYXRhLmRpc3BhdGNoQ2FyVHlwZQ0KICAgICAgICAgIH0NCiAgICAgICAgICBkYXRhLmRpc3BhdGNoZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGlzcGF0Y2hlcykpDQogICAgICAgICAgdGhpcy4kY29uZmlybSgn56Gu6K6k5aeU5rS+5pWR5o+05Y2V5ZCX77yfJywgJ+aPkOekuicsIHsNCiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywNCiAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnDQogICAgICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICBsZXQge3N0YXRlLCBtZXNzYWdlLCB2YWx1ZX0gPSBhd2FpdCBhcHBvaW50KHsuLi5kYXRhfSkNCiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7DQogICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKGDlp5TmtL7miJDlip9gKQ0KICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgJ2VkaXQnKQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGZpbmFsbHkgew0KICAgICAgICAgICAgICB0aGlzLnNhdmVMb2FkaW5nID0gZmFsc2UNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7DQogICAgICAgICAgICB0aGlzLnNhdmVMb2FkaW5nID0gZmFsc2UNCiAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgLy/ojrflj5bmiYDlnKjot6/mrrXliJfooajmlbDmja4NCiAgICBhc3luYyBnZXRSb2FkRGF0YSgpIHsNCiAgICAgIGNvbnN0IHtyb3dzID0gW119ID0gYXdhaXQgcm9hZFNlY3Rpb25JbmZvSW50ZXIoe3BhZ2VCZWFuOiB7cGFnZVNpemU6IC0xfX0pDQogICAgICB0aGlzLnJvYWRPcHRpb25zID0gcm93cy5tYXAoKGl0ZW0pID0+IHsNCiAgICAgICAgaXRlbS5yb2FkTmFtZSA9IGl0ZW0ubmFtZSArICcgJyArIGl0ZW0uY29kZQ0KICAgICAgICByZXR1cm4gaXRlbQ0KICAgICAgfSkNCiAgICAgIHRoaXMucm9hZENoYW5nZSh0aGlzLmFkZEVkaXRGb3JtLnJvYWRJZCkNCiAgICB9LA0KDQogICAgcm9hZENoYW5nZSh2YWx1ZSkgew0KICAgICAgbGV0IHJvYWRJbmZvID0gdGhpcy5yb2FkT3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB2YWx1ZSkNCiAgICAgIC8vIGNvbnNvbGUubG9nKHJvYWRJbmZvLCAncm9hZEluZm8nLCB2YWx1ZSwgJ3RoaXMucm9hZE9wdGlvbnMnLCB0aGlzLnJvYWRPcHRpb25zKQ0KICAgICAgaWYgKHJvYWRJbmZvLnN0YXJ0UGVnSyAmJiByb2FkSW5mby5lbmRQZWdLKSB7DQogICAgICAgIHRoaXMucGlsZU51bWJlclJhbmdlID0gcm9hZEluZm8uc3RhcnRQZWdLICsgJ34nICsgcm9hZEluZm8uZW5kUGVnSw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5waWxlTnVtYmVyUmFuZ2UgPSAnJw0KICAgICAgfQ0KICAgICAgaWYgKCF0aGlzLmlzY2xlYXIpIHsNCiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5zdGFydFBlZyA9IHVuZGVmaW5lZA0KICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGVnQWRkID0gdW5kZWZpbmVkDQogICAgICB9DQogICAgICB0aGlzLmFkZEVkaXRGb3JtLnRlYW1JZCA9ICcnDQogICAgICB0aGlzLnBhcnNlU3RyaW5nKCkNCiAgICAgIHRoaXMuZ2V0VGVhbURhdGEodmFsdWUpDQogICAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5bmsr/nur/orr7lpIfkv6Hmga8NCiAgICAgIHRoaXMuZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIChkYXRhKSA9PiB7DQogICAgICAgIGNvbnN0IHtzdGFydFBhdHJvbElkLCBlbmRQYXRyb2xJZH0gPSB0aGlzLmFkZEVkaXRGb3JtDQoNCiAgICAgICAgLyoNCiAgICAgICAgICog5beh5qOA5byA5aeL77yM57uT5p2f56uZDQogICAgICAgICAqICovDQogICAgICAgIGlmIChzdGFydFBhdHJvbElkKSB7DQogICAgICAgICAgaWYgKCFkYXRhLnNvbWUoKGkpID0+IGkuaWQgPT09IHN0YXJ0UGF0cm9sSWQpKSB7DQogICAgICAgICAgICB0aGlzLmFkZEVkaXRGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJw0KICAgICAgICAgICAgc2V0VGltZW91dCgoXykgPT4gdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nlvIDlp4vnq5kuLicpKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChlbmRQYXRyb2xJZCkgew0KICAgICAgICAgIGlmICghZGF0YS5zb21lKChpKSA9PiBpLmlkID09PSBlbmRQYXRyb2xJZCkpIHsNCiAgICAgICAgICAgIHRoaXMuYWRkRWRpdEZvcm0uZW5kUGF0cm9sSWQgPSAnJw0KICAgICAgICAgICAgc2V0VGltZW91dCgoXykgPT4gdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nnu5PmnZ/nq5kuLicpKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluW3oeafpeaVkeaPtOmYn+S8jeS/oeaBrw0KICAgIGFzeW5jIGdldFRlYW1EYXRhKHZhbHVlKSB7DQogICAgICBjb25zdCB7cm93cyA9IFtdfSA9IGF3YWl0IHRlYW1EYXRhKA0KICAgICAgICByZWZpbmVSZXF1ZXN0Qm9keSh7DQogICAgICAgICAgcXVlcnlzOiBbe29wZXJhdGlvbjogJ0lOJywgcHJvcGVydHk6ICdyLmlkXycsIHZhbHVlfV0NCiAgICAgICAgfSksDQogICAgICAgICdhZGRFZGl0Jw0KICAgICAgKQ0KICAgICAgdGhpcy50ZWFtT3B0aW9ucyA9IHJvd3MNCiAgICAgIHRoaXMudGVhbURhdGFMaXN0ID0gcm93cy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gJzInKQ0KICAgICAgaWYgKHRoaXMudGVhbURhdGFMaXN0Lmxlbmd0aCA+IDApIHsNCiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS50ZWFtSWQgPSB0aGlzLnRlYW1EYXRhTGlzdFswXS5pZA0KICAgICAgICB0aGlzLnRlYW1JZENoYW5nZSh0aGlzLnRlYW1EYXRhTGlzdFswXS5pZCkNCiAgICAgIH0NCiAgICB9LA0KDQogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvDQogICAgYXN5bmMgZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGNhbGxiYWNrKSB7DQogICAgICBjb25zdCBfd2lwZURhdGEgPSAoKSA9PiB7DQogICAgICAgIHRoaXMuYWxvbmdSb3V0ZUluZm9EYXRhID0gW10NCiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2sodGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEpDQogICAgICB9DQoNCiAgICAgIHRyeSB7DQogICAgICAgIC8vIOiOt+WPluayv+e6v+iuvuaWvQ0KICAgICAgICBjb25zdCB7cm93cyA9IFtdfSA9IGF3YWl0IGFsb25nUm91dGVJbmZvSW50ZXIoDQogICAgICAgICAgcmVmaW5lUmVxdWVzdEJvZHkoew0KICAgICAgICAgICAgcXVlcnlzOiBbe29wZXJhdGlvbjogJ0lOJywgcHJvcGVydHk6ICdyb2FkX3NlZ21lbnRfaWRfJywgdmFsdWV9XQ0KICAgICAgICAgIH0pLA0KICAgICAgICAgICdhZGRFZGl0Jw0KICAgICAgICApDQoNCiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socm93cykNCiAgICAgICAgdGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEgPSByb3dzDQogICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAvLyDkuI3kuLror7fmsYLov4flv6vnu5PmnZ/nmoTmg4XlhrXkuIvvvIzph43nva4NCiAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgIT09ICdjYW5jZWxlZCcpIF93aXBlRGF0YSgpDQogICAgICB9DQogICAgfSwNCg0KICAgIC8vIOaJk+W8gOmhtemdouaJp+ihjA0KICAgIG9wZW5QYWdlKCkgew0KICAgIH0sDQogICAgLy8g5bGV56S65by55bGCDQogICAgc2hvd0RpYWxvZyhkaWFsb2dOYW1lKSB7DQogICAgICBpZiAoIWRpYWxvZ05hbWUpIHJldHVybg0KICAgICAgaWYgKGRpYWxvZ05hbWUgPT09ICd1c2VyQ2hvaWNlJykgew0KICAgICAgICBpZiAoIXRoaXMuYWRkRWRpdEZvcm0udGVhbUlkKSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign6K+35YWI6YCJ5oup5pWR5o+05rS+6YGj6Zif5LyNJykNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzW2RpYWxvZ05hbWUgKyAnRGlhbG9nJ10gPSB0cnVlDQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXNbZGlhbG9nTmFtZSArICdEaWFsb2cnXSA9IHRydWUNCiAgICAgIH0NCiAgICB9LA0KDQogICAgLy8g5YWz6Zet6aG16Z2i5omn6KGMDQogICAgY2xvc2VQYWdlKCkgew0KICAgICAgY29uc3Qge3B1YlN1YiwgYWRkRWRpdFJ1bGVzLCByb2FkT3B0aW9uc30gPSB0aGlzDQogICAgICAvLyDph43nva7nu4Tku7bmlbDmja4NCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcyksIHsNCiAgICAgICAgcHViU3ViLA0KICAgICAgICBhZGRFZGl0UnVsZXMsDQogICAgICAgIHJvYWRPcHRpb25zDQogICAgICB9KQ0KICAgICAgdGhpcy4kbmV4dFRpY2soKF8pID0+IHsNCiAgICAgICAgdGhpcy4kcmVmcy5hZGRFZGl0Rm9ybS4kZWwuc2Nyb2xsVG9wID0gMA0KICAgICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLmNsZWFyVmFsaWRhdGUoKQ0KICAgICAgfSkNCiAgICB9LA0KICAgIC8vIOiOt+WPluivpuaDhQ0KICAgIGFzeW5jIGdldERldGFpbChpZCkgew0KICAgICAgdHJ5IHsNCiAgICAgICAgdGhpcy5pc2NsZWFyID0gdHJ1ZQ0KICAgICAgICB0aGlzLmFkZEVkaXRGb3JtID0gYXdhaXQgdGFibGVEZXRhaWwoaWQpDQogICAgICAgIGNvbnN0IHtyb2FkSWQgPSAnJywgcGVnVmFsID0gJycsIG9jY3VweSA9ICcnfSA9IHRoaXMuYWRkRWRpdEZvcm0NCiAgICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5vY2N1cHkgPSBvY2N1cHkuc3BsaXQoJywnKQ0KICAgICAgICBpZiAocGVnVmFsKSB7DQogICAgICAgICAgbGV0IHN0YXJ0UGVnQXJyID0gcGVnVmFsLnNwbGl0KCcrJykNCiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5hZGRFZGl0Rm9ybSwgJ3N0YXJ0UGVnJywgc3RhcnRQZWdBcnJbMF0uc2xpY2UoMSkpDQogICAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdzdGFydFBlZ0FkZCcsIHN0YXJ0UGVnQXJyWzFdKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmFkZEVkaXRGb3JtLCAnc3RhcnRQZWcnLCB1bmRlZmluZWQpDQogICAgICAgICAgdGhpcy4kc2V0KHRoaXMuYWRkRWRpdEZvcm0sICdzdGFydFBlZ0FkZCcsIHVuZGVmaW5lZCkNCiAgICAgICAgfQ0KICAgICAgICB0aGlzLnJvYWRDaGFuZ2Uocm9hZElkKQ0KICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgdGhpcy5mb3JtTG9hZGluZyA9IGZhbHNlDQogICAgICB9DQogICAgfSwNCg0KICAgIC8vIOS/neWtmA0KICAgIGhhbmRsZVNhdmUoKSB7DQogICAgICBjb25zb2xlLmxvZyh0aGlzLmFkZEVkaXRGb3JtLCAnYWRkRWRpdEZvcm0nKQ0KICAgICAgdGhpcy4kcmVmcy5hZGRFZGl0Rm9ybS52YWxpZGF0ZShhc3luYyAodmFsaWQsIG9iamVjdCkgPT4gew0KICAgICAgICBpZiAoIXZhbGlkKSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKA0KICAgICAgICAgICAgYOaciSR7DQogICAgICAgICAgICAgIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoDQogICAgICAgICAgICB95Liq5a2X5q615pyq6YCa6L+H5qCh6aqM77yM6K+35q2j56Gu5aGr5YaZ6KGo5Y2V5YaF5a6544CCYA0KICAgICAgICAgICkNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnNhdmVMb2FkaW5nID0gdHJ1ZQ0KICAgICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFkZEVkaXRGb3JtKSkNCiAgICAgICAgICBkYXRhLm9jY3VweSA9IGRhdGEub2NjdXB5LmpvaW4oJywnKQ0KICAgICAgICAgIGlmIChkYXRhLnN0YXJ0UGVnICYmIGRhdGEuc3RhcnRQZWdBZGQpIHsNCiAgICAgICAgICAgIGRhdGEucGVnVmFsID0NCiAgICAgICAgICAgICAgJ2snICsgKGRhdGEuc3RhcnRQZWcgfHwgJycpICsgJysnICsgKGRhdGEuc3RhcnRQZWdBZGQgfHwgJycpDQogICAgICAgICAgfQ0KICAgICAgICAgIGRhdGEucmVzY3VlVGltZSA9IG1vbWVudChkYXRhLnJlc2N1ZVRpbWUpLmZvcm1hdCgNCiAgICAgICAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJw0KICAgICAgICAgICkNCiAgICAgICAgICBsZXQgcm9hZEluZm8gPSB0aGlzLnJvYWRPcHRpb25zLmZpbmQoDQogICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZGF0YS5yb2FkSWQNCiAgICAgICAgICApDQogICAgICAgICAgZGF0YS5yb2FkTmFtZSA9IHJvYWRJbmZvLm5hbWUNCiAgICAgICAgICBkYXRhLnJvYWRDb2RlID0gcm9hZEluZm8uY29kZQ0KICAgICAgICAgIGRhdGEuY2FyID0gew0KICAgICAgICAgICAgZGlzcGF0Y2hDYXJDb2RlOiBkYXRhLmRpc3BhdGNoQ2FyQ29kZSB8fCAnJywNCiAgICAgICAgICAgIGRpc3BhdGNoQ2FyVHlwZTogZGF0YS5kaXNwYXRjaENhclR5cGUNCiAgICAgICAgICB9DQogICAgICAgICAgY29uc3QgbXlJbnRlckZhY2UgPSB0aGlzLmlkID8gdGFibGVFZGl0IDogdGFibGVBZGQNCiAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgbGV0IHtzdGF0ZSwgbWVzc2FnZSwgdmFsdWV9ID0gYXdhaXQgbXlJbnRlckZhY2Uoey4uLmRhdGF9KQ0KICAgICAgICAgICAgaWYgKHN0YXRlKSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcyhg5L+d5a2Y5oiQ5YqfYCkNCiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCB0aGlzLmlkID8gJ2VkaXQnIDogJ2FkZCcpDQogICAgICAgICAgICB9DQogICAgICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgICAgIHRoaXMuc2F2ZUxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KDQogICAgLy8g5pS55Y+Y6aG16Z2iDQogICAgY2hhbmdlUGFnZShwYWdlTmFtZSA9ICcnLCB0eXBlID0gJycpIHsNCiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybg0KICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCAoXykgPT4gew0KICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwge3R5cGV9KQ0KICAgICAgfSkNCiAgICB9DQogIH0sDQogIGJlZm9yZURlc3Ryb3koKSB7DQogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrw0KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1YikNCiAgfQ0KfQ0K"},null]}