{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\SuperTableSelectorDialog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\SuperTableSelectorDialog\\index.vue","mtime":1741314105065},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgU3VwZXJEaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL1N1cGVyRGlhbG9nL2luZGV4LnZ1ZScNCmltcG9ydCB0cmVlU2lkZSBmcm9tICdAL2NvbXBvbmVudHMvdHJlZVNpZGUvaW5kZXgudnVlJw0KaW1wb3J0IHtzZXRRdWVyeVZhbHVlfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycycNCmltcG9ydCBTZWFyY2hDb21tb24gZnJvbSAnQC9jb21wb25lbnRzL1NlYXJjaENvbW1vbi9pbmRleC52dWUnDQppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZScNCmltcG9ydCBfIGZyb20gJ2xvZGFzaCcNCmltcG9ydCB7VGFibGVNaXhpbn0gZnJvbSAnQC9taXhpbnMvdGFibGVNaXhpbicNCg0KZXhwb3J0IGRlZmF1bHQgew0KICAgIG5hbWU6ICdTdXBlclRhYmxlU2VsZWN0b3JEaWFsb2cnLA0KICAgIGluaGVyaXRBdHRyczogZmFsc2UsDQogICAgbWl4aW5zOiBbVGFibGVNaXhpbl0sDQogICAgcHJvcHM6IHsNCiAgICAgICAgaXNTaG93OiB7DQogICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSwNCiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICAgIH0sDQogICAgICAgIHNlbGVjdGVkQ29udGVudDogew0KICAgICAgICAgICAgZGVmYXVsdDogKCkgPT4gW10sDQogICAgICAgICAgICB0eXBlOiBbQXJyYXksIE9iamVjdF0sDQogICAgICAgIH0sDQogICAgICAgIHRvcDogew0KICAgICAgICAgICAgZGVmYXVsdDogJzE0dmgnLA0KICAgICAgICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgICB9LA0KICAgICAgICB3aWR0aDogew0KICAgICAgICAgICAgZGVmYXVsdDogJzgwJScsDQogICAgICAgICAgICB0eXBlOiBTdHJpbmcsDQogICAgICAgIH0sDQogICAgICAgIGhlaWdodDogew0KICAgICAgICAgICAgZGVmYXVsdDogJzY1dmgnLA0KICAgICAgICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgICB9LA0KICAgICAgICBpc1Nob3dUcmVlOiB7DQogICAgICAgICAgICBkZWZhdWx0OiB0cnVlLA0KICAgICAgICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgICAgfSwNCiAgICAgICAgdHJlZU9wdGlvbnM6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7Y2hpbGRyZW46ICdjaGlsZHJlbicsIGxhYmVsOiAnbmFtZSd9KSwNCiAgICAgICAgICAgIHR5cGU6IE9iamVjdCwNCiAgICAgICAgfSwNCiAgICAgICAgdHJlZVRhYkxpc3Q6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+IFtdLA0KICAgICAgICAgICAgdHlwZTogQXJyYXksDQogICAgICAgIH0sDQogICAgICAgIHRyZWVBY3RpdmVUYWJOYW1lOiB7DQogICAgICAgICAgICBkZWZhdWx0OiAnJywNCiAgICAgICAgICAgIHR5cGU6IFN0cmluZywNCiAgICAgICAgfSwNCiAgICAgICAgdHJlZUxvYWRpbmc6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLA0KICAgICAgICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgICAgfSwNCiAgICAgICAgdHJlZUl0ZW06IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSksDQogICAgICAgICAgICB0eXBlOiBPYmplY3QsDQogICAgICAgIH0sDQogICAgICAgIHRhYmxlTG9hZGluZzogew0KICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgICAgICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgICB9LA0KICAgICAgICB0YWJsZVBhcmFtczogew0KICAgICAgICAgICAgZGVmYXVsdDogKCkgPT4gKHsNCiAgICAgICAgICAgICAgICBwYWdlQmVhbjoge3BhZ2VTaXplOiAwLCBwYWdlOiAwLCB0b3RhbDogMH0sDQogICAgICAgICAgICAgICAgcXVlcnlzOiBbXSwNCiAgICAgICAgICAgICAgICBzb3J0ZXI6IFtdLA0KICAgICAgICAgICAgfSksDQogICAgICAgICAgICB0eXBlOiBPYmplY3QsDQogICAgICAgIH0sDQogICAgICAgIHRhYmxlRGF0YTogew0KICAgICAgICAgICAgZGVmYXVsdDogKCkgPT4gW10sDQogICAgICAgICAgICB0eXBlOiBBcnJheSwNCiAgICAgICAgfSwNCiAgICAgICAgdHJlZURhdGE6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+IFtdLA0KICAgICAgICAgICAgdHlwZTogQXJyYXksDQogICAgICAgIH0sDQogICAgICAgIHNlYXJjaE9wdGlvbjogew0KICAgICAgICAgICAgZGVmYXVsdDogKCkgPT4gW10sDQogICAgICAgICAgICB0eXBlOiBBcnJheSwNCiAgICAgICAgfSwNCiAgICAgICAgdGFibGVPcHRpb25zOiB7DQogICAgICAgICAgICBkZWZhdWx0OiAoKSA9PiBbXSwNCiAgICAgICAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgICB9LA0KICAgICAgICB0cmVlS2V5OiB7DQogICAgICAgICAgICBkZWZhdWx0OiAnaWQnLA0KICAgICAgICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgICB9LA0KICAgICAgICBzZWxlY3RLZXk6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6ICdpZCcsDQogICAgICAgICAgICB0eXBlOiBTdHJpbmcsDQogICAgICAgIH0sDQogICAgICAgIHNlbGVjdExhYmVsOiB7DQogICAgICAgICAgICBkZWZhdWx0OiAnbmFtZScsDQogICAgICAgICAgICB0eXBlOiBTdHJpbmcsDQogICAgICAgIH0sDQogICAgICAgIHNlbGVjdFRpdGxlTmFtZTogew0KICAgICAgICAgICAgZGVmYXVsdDogJ+W3sumAieaLqScsDQogICAgICAgICAgICB0eXBlOiBTdHJpbmcsDQogICAgICAgIH0sDQogICAgICAgIHRyZWVWYWx1ZUtleTogew0KICAgICAgICAgICAgZGVmYXVsdDogJycsDQogICAgICAgICAgICB0eXBlOiBTdHJpbmcsDQogICAgICAgIH0sDQogICAgICAgIGRlZmF1bHRUcmVlRXhwYW5kTGV2ZWw6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6IC0xLA0KICAgICAgICAgICAgdHlwZTogTnVtYmVyLA0KICAgICAgICB9LA0KICAgICAgICBpc1NpbmdsZUNob2ljZTogew0KICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgICAgICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgICB9LA0KICAgICAgICBpc1Nob3dTZWxlY3Q6IHsNCiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsDQogICAgICAgICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgICB9LA0KICAgICAgICBpc1Nob3dUYWJsZUNoZWNrYm94OiB7DQogICAgICAgICAgICBkZWZhdWx0OiB0cnVlLA0KICAgICAgICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgICAgfSwNCiAgICAgICAgY29uZmlybUNsb3NlRGlhbG9nOiB7DQogICAgICAgICAgICBkZWZhdWx0OiB0cnVlLA0KICAgICAgICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgICAgfSwNCiAgICAgICAgaXNTaG93UGFnaW5hdGlvbjogew0KICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSwNCiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICAgIH0sDQogICAgICAgIGlzU2hvd1NlYXJjaDogew0KICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSwNCiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICAgIH0sDQogICAgICAgIGlzU2hvd0FkZEJ1dHRvbjogew0KICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgICAgICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgICB9LA0KICAgIH0sDQogICAgY29tcG9uZW50czogew0KICAgICAgICBwYWdpbmF0aW9uLA0KICAgICAgICBTZWFyY2hDb21tb24sDQogICAgICAgIHRyZWVTaWRlLA0KICAgICAgICBTdXBlckRpYWxvZywNCiAgICB9LA0KICAgIGRhdGEoKSB7DQogICAgICAgIHJldHVybiB7DQogICAgICAgICAgICBpbml0aWFsaXplUmVuZGVyaW5nOiBmYWxzZSwgLy8g5by55bGC5YaF5a655Yid5aeL5YyW5riy5p+TDQogICAgICAgICAgICB0YWJsZU1heEhlaWdodDogJzYwMHB4JywNCiAgICAgICAgICAgIGVuaGFuY2VkVGFibGVEYXRhOiBbXSwgLy8g5aKe5by655qE6KGo5qC85pWw5o2u77yI5aKe5Yqg6aKd5aSW54m55oCn77yJDQogICAgICAgICAgICBhbGxTZWxlY3Rpb246IFtdLCAvLyDooajmoLzpgInkuK0NCiAgICAgICAgICAgIGNoZWNrYm94T3B0OiBbXSwgLy8g5aSa6YCJ5qGG6YWN572u5pWw57uEDQogICAgICAgICAgICBjaGVja2JveFNlbGVjdDogW10sIC8vIOWkmumAieahhumAieS4rQ0KICAgICAgICAgICAgY2hlY2tBbGw6IGZhbHNlLCAvLyDlhajpgIkNCiAgICAgICAgICAgIHRhYmxlQ2hlY2tBbGw6IGZhbHNlLCAvLyDooajmoLzlhajpgIkNCiAgICAgICAgICAgIHRhYmxlSXNJbmRldGVybWluYXRlOiBmYWxzZSwgLy8g6KGo5qC85aSa6YCJ5qGG5LiN56Gu5a6aDQogICAgICAgICAgICBpc0luZGV0ZXJtaW5hdGU6IGZhbHNlLCAvLyDlpJrpgInmoYbkuI3noa7lrpoNCiAgICAgICAgfQ0KICAgIH0sDQogICAgY29tcHV0ZWQ6IHsNCiAgICAgICAgaXNTaG93RGlhbG9nOiB7DQogICAgICAgICAgICBnZXQoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTaG93DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc2V0KHZhbCkgew0KICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTppc1Nob3cnLCB2YWwpDQogICAgICAgICAgICB9LA0KICAgICAgICB9LA0KICAgIH0sDQogICAgd2F0Y2g6IHsNCiAgICAgICAgdHJlZURhdGE6IHsNCiAgICAgICAgICAgIGhhbmRsZXIoKSB7DQogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2hvd1RyZWUpIHJldHVybg0KICAgICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKChfKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZVNpZGU/LnNldEN1cnJlbnRLZXkoDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVJdGVtPy5bdGhpcy50cmVlS2V5XSB8fCAnJw0KICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZVNpZGU/LmV4cGFuZEhhbmRsZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRUcmVlRXhwYW5kTGV2ZWwNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgICAgICB9LA0KICAgICAgICB0YWJsZURhdGE6IHsNCiAgICAgICAgICAgIGhhbmRsZXIoZGF0YSkgew0KICAgICAgICAgICAgICAgIHRoaXMuZW5oYW5jZWRUYWJsZURhdGEgPSBkYXRhLm1hcCgoaXRlbSkgPT4gKHsNCiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSwNCiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogdGhpcy5hbGxTZWxlY3Rpb24uc29tZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIChpKSA9PiBpW3RoaXMuc2VsZWN0S2V5XSA9PT0gaXRlbVt0aGlzLnNlbGVjdEtleV0NCiAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFNlbGVjdGlvbi5maW5kKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpKSA9PiBpW3RoaXMuc2VsZWN0S2V5XSA9PT0gaXRlbVt0aGlzLnNlbGVjdEtleV0NCiAgICAgICAgICAgICAgICAgICAgICAgICk/LmRpc2FibGVkID8/IGZhbHNlLA0KICAgICAgICAgICAgICAgIH0pKQ0KICAgICAgICAgICAgICAgIHRoaXMudGFibGVDaGVja0FsbCA9IHRoaXMuZW5oYW5jZWRUYWJsZURhdGEubGVuZ3RoDQogICAgICAgICAgICAgICAgICAgID8gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5ldmVyeSgoaSkgPT4gaS5jaGVja2VkKQ0KICAgICAgICAgICAgICAgICAgICA6IGZhbHNlDQogICAgICAgICAgICAgICAgdGhpcy50YWJsZUlzSW5kZXRlcm1pbmF0ZSA9DQogICAgICAgICAgICAgICAgICAgIHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuc29tZSgoaSkgPT4gaS5jaGVja2VkKSAmJg0KICAgICAgICAgICAgICAgICAgICAhdGhpcy50YWJsZUNoZWNrQWxsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgICAgICAgICAgZGVlcDogdHJ1ZSwNCiAgICAgICAgfSwNCiAgICAgICAgc2VsZWN0ZWRDb250ZW50OiB7DQogICAgICAgICAgICBoYW5kbGVyKGRhdGEpIHsNCiAgICAgICAgICAgICAgICBsZXQgYWxsU2VsZWN0aW9uDQogICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVDaG9pY2UpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKA0KICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGRhdGEpID09PQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbb2JqZWN0IE9iamVjdF0nICYmDQogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgNCiAgICAgICAgICAgICAgICAgICAgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhbGxTZWxlY3Rpb24gPSBbXy5jbG9uZURlZXAoZGF0YSldIHx8IFtdDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhbGxTZWxlY3Rpb24gPSBbXQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgYWxsU2VsZWN0aW9uID0gXy5jbG9uZURlZXAoZGF0YSkgfHwgW10NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSBhbGxTZWxlY3Rpb24ubWFwKChpKSA9PiAoew0KICAgICAgICAgICAgICAgICAgICAuLi5pLA0KICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiB0cnVlLA0KICAgICAgICAgICAgICAgIH0pKQ0KICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2tib3hPcHQoKQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZSwNCiAgICAgICAgICAgIGRlZXA6IHRydWUsDQogICAgICAgIH0sDQogICAgfSwNCiAgICBtb3VudGVkKCkgew0KICAgICAgICB0aGlzLiRyb290LiRvbigncmVzaXplJywgKCkgPT4gew0KICAgICAgICAgICAgdGhpcy5jYWxjVGFibGVIZWlnaHQoNTAwKQ0KICAgICAgICB9KQ0KICAgIH0sDQogICAgbWV0aG9kczogew0KICAgICAgICB0cmVlVGFiQ2hhbmdlKHRyZWVBY3RpdmVUYWJOYW1lKSB7DQogICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6dHJlZUFjdGl2ZVRhYk5hbWUnLCB0cmVlQWN0aXZlVGFiTmFtZSkNCiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3RyZWVUYWJDaGFuZ2UnLCB0cmVlQWN0aXZlVGFiTmFtZSkNCiAgICAgICAgfSwNCiAgICAgICAgLy8g5omT5byA5by55bGC5pe26Kem5Y+RDQogICAgICAgIG9wZW4oKSB7DQogICAgICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZVJlbmRlcmluZykgdGhpcy4kZW1pdCgnaW5pdGlhbGl6ZVJlbmRlcmluZycpDQogICAgICAgICAgICBsZXQgYWxsU2VsZWN0aW9uDQogICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZUNob2ljZSkgew0KICAgICAgICAgICAgICAgIGlmICgNCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMuc2VsZWN0ZWRDb250ZW50KSA9PT0NCiAgICAgICAgICAgICAgICAgICAgICAgICdbb2JqZWN0IE9iamVjdF0nICYmDQogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb250ZW50KS5sZW5ndGgNCiAgICAgICAgICAgICAgICApIHsNCiAgICAgICAgICAgICAgICAgICAgYWxsU2VsZWN0aW9uID0gW18uY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRDb250ZW50KV0gfHwgW10NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBhbGxTZWxlY3Rpb24gPSBbXQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgYWxsU2VsZWN0aW9uID0gXy5jbG9uZURlZXAodGhpcy5zZWxlY3RlZENvbnRlbnQpIHx8IFtdDQogICAgICAgICAgICB9DQogICAgICAgICAgICB0aGlzLmFsbFNlbGVjdGlvbiA9IGFsbFNlbGVjdGlvbi5tYXAoKGkpID0+ICh7Li4uaSwgY2hlY2tlZDogdHJ1ZX0pKQ0KICAgICAgICAgICAgdGhpcy51cGRhdGVDaGVja2JveE9wdCgpDQoNCiAgICAgICAgICAgIC8vIOWIneWni+WMlummluasoeaJk+W8gOW8ueWxgumAieS4reaViOaenCwNCiAgICAgICAgICAgIGlmICh0aGlzLmlzU2hvd1RyZWUgJiYgIXRoaXMuaW5pdGlhbGl6ZVJlbmRlcmluZykgew0KICAgICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKChfKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZVNpZGU/LnNldEN1cnJlbnRLZXkoDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVJdGVtPy5bdGhpcy50cmVlS2V5XSB8fCAnJw0KICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZVNpZGU/LmV4cGFuZEhhbmRsZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRUcmVlRXhwYW5kTGV2ZWwNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ29wZW4nLCB0aGlzLmluaXRpYWxpemVSZW5kZXJpbmcpDQogICAgICAgICAgICB0aGlzLmluaXRpYWxpemVSZW5kZXJpbmcgPSB0cnVlDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g5YWz6Zet5by55bGC5ZCO6Kem5Y+RDQogICAgICAgIGNsb3NlZCgpIHsNCiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcykpIC8vIOmHjee9rmRhdGHkuK3nmoTmlbDmja4NCiAgICAgICAgICAgIC8vIOmHjee9ruaJk+W8gOW8ueWxgumAieS4reaViOaenCwNCiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKChfKSA9PiB7DQogICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaG93VHJlZSkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5zZXRDdXJyZW50S2V5KA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlSXRlbT8uW3RoaXMudHJlZUtleV0gfHwgJycNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5leHBhbmRIYW5kbGUoDQogICAgICAgICAgICAgICAgICAgICAgICB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0VHJlZUV4cGFuZExldmVsDQogICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdGhpcy4kcmVmcy5zZWFyY2hDb21tb24/LmRlbGV0ZUNob29zZSgnYWxsJywgZmFsc2UpIC8vIOa4heepuuaQnOe0oumAieS4rQ0KICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMubXVsdGlwbGVTZWxlY3Rpb24/LmNsZWFyU29ydCgpIC8vIOeUqOS6jua4heepuuaOkuW6j+adoeS7tu+8jOaVsOaNruS8muaBouWkjeaIkOacquaOkuW6j+eahOeKtuaAgQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlZCcpDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g6KGo5qC86KGM5qC35byP6Ieq5a6a5LmJDQogICAgICAgIHJvd0NsYXNzTmFtZSh7cm93fSkgew0KICAgICAgICAgICAgY29uc3QgY2xhc3NBcnIgPSBbXQ0KICAgICAgICAgICAgaWYgKA0KICAgICAgICAgICAgICAgIHRoaXMuYWxsU2VsZWN0aW9uLnNvbWUoDQogICAgICAgICAgICAgICAgICAgIChpKSA9PiBpW3RoaXMuc2VsZWN0S2V5XSA9PT0gcm93W3RoaXMuc2VsZWN0S2V5XQ0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICkgew0KICAgICAgICAgICAgICAgIGNsYXNzQXJyLnB1c2goJ2N1cnJlbnQtcm93JykNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChyb3cuZGlzYWJsZWQpIHsNCiAgICAgICAgICAgICAgICBjbGFzc0Fyci5wdXNoKCdkaXNhYmxlZC1yb3cnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGNsYXNzQXJyLmpvaW4oJyAnKQ0KICAgICAgICB9LA0KDQogICAgICAgIC8v5bem6L655qCR6IqC6YCJ5Lit5pS55Y+YDQogICAgICAgIGN1cnJlbnRDaGFuZ2Uobm9kZUl0ZW0pIHsNCiAgICAgICAgICAgIHRoaXMudGFibGVQYXJhbXMucGFnZUJlYW4ucGFnZSA9IDENCiAgICAgICAgICAgIC8vIOS4uuS6humBv+WFjeW3puS+p+agkeWLvumAieeahOWPguaVsOeUqOS6juihqOagvOafpeivouS4reeahOaWueW8j+acieS4jeehruWumuaAp++8jOWImeaKiuS/ruaUueafpeivoumhueWKn+iDveeVmee7meeItue7hOS7tuiHquW3seWBmg0KICAgICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOnRyZWVJdGVtJywgbm9kZUl0ZW0gfHwge30pDQogICAgICAgICAgICB0aGlzLiRlbWl0KCd0cmVlQ2hhbmdlJywgbm9kZUl0ZW0pDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g6aG26YOo5pCc57Si6YC76L6R6Kem5Y+RDQogICAgICAgIGhhbmRsZVNlYXJjaChkYXRhKSB7DQogICAgICAgICAgICB0aGlzLnRhYmxlUGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxDQogICAgICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHsNCiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnByb3ApICYmIGl0ZW0ucHJvcC5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICAgICAgaXRlbS5wcm9wLmZvckVhY2goKHByb3ApID0+IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy50YWJsZVBhcmFtcywgcHJvcCwgaXRlbS52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtLnByb3AgPT09ICdzdHJpbmcnKSB7DQogICAgICAgICAgICAgICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy50YWJsZVBhcmFtcywgaXRlbS5wcm9wLCBpdGVtLnZhbHVlKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnRhYmxlUGFyYW1zLnF1ZXJ5cykNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLCB0aGlzLnRhYmxlUGFyYW1zLnF1ZXJ5cykNCg0KICAgICAgICAgICAgdGhpcy4kZW1pdCgndGFibGVSZWZyZXNoJywgdGhpcy50YWJsZVBhcmFtcykNCiAgICAgICAgfSwNCg0KICAgICAgICAvL+WIhumhtemhteaVsA0KICAgICAgICBoYW5kbGVDdXJyZW50Q2hhbmdlKHBhZ2UpIHsNCiAgICAgICAgICAgIHRoaXMudGFibGVQYXJhbXMucGFnZUJlYW4ucGFnZSA9IHBhZ2UNCiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3RhYmxlUmVmcmVzaCcsIHRoaXMudGFibGVQYXJhbXMpDQogICAgICAgIH0sDQoNCiAgICAgICAgLy/liIbpobXlpKflsI8NCiAgICAgICAgaGFuZGxlU2l6ZUNoYW5nZShwYWdlU2l6ZSkgew0KICAgICAgICAgICAgdGhpcy50YWJsZVBhcmFtcy5wYWdlQmVhbi5wYWdlU2l6ZSA9IHBhZ2VTaXplDQogICAgICAgICAgICB0aGlzLiRlbWl0KCd0YWJsZVJlZnJlc2gnLCB0aGlzLnRhYmxlUGFyYW1zKQ0KICAgICAgICB9LA0KDQogICAgICAgIC8vIOihqOagvOihjOeCueWHuw0KICAgICAgICB0YWJsZVJvd0NsaWNrKHJvdywgc3RhdHVzKSB7DQogICAgICAgICAgICB0aGlzLnRhYmxlU2VsZWN0aW9uKHJvdywgc3RhdHVzKQ0KICAgICAgICAgICAgdGhpcy51cGRhdGVDaGVja2JveE9wdCgpDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g6KGo5qC85Yu+6YCJ5oiW5Y+W5raI5Yu+6YCJDQogICAgICAgIHRhYmxlU2VsZWN0aW9uKGl0ZW0sIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybg0KICAgICAgICAgICAgY29uc3QgdGFibGVJbmRleCA9IHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuZmluZEluZGV4KA0KICAgICAgICAgICAgICAgIChpKSA9PiBpW3RoaXMuc2VsZWN0S2V5XSA9PT0gaXRlbVt0aGlzLnNlbGVjdEtleV0NCiAgICAgICAgICAgICkNCiAgICAgICAgICAgIGNvbnN0IGZpbmRJbmRleCA9IHRoaXMuYWxsU2VsZWN0aW9uLmZpbmRJbmRleCgNCiAgICAgICAgICAgICAgICAoaSkgPT4gaVt0aGlzLnNlbGVjdEtleV0gPT09IGl0ZW1bdGhpcy5zZWxlY3RLZXldDQogICAgICAgICAgICApDQogICAgICAgICAgICBpZiAodGFibGVJbmRleCAhPT0gLTEpDQogICAgICAgICAgICAgICAgdGhpcy5lbmhhbmNlZFRhYmxlRGF0YVt0YWJsZUluZGV4XS5jaGVja2VkID0gc3RhdHVzDQogICAgICAgICAgICBpZiAoc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVDaG9pY2UpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSBbaXRlbV0NCiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5mb3JFYWNoKChpKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaVt0aGlzLnNlbGVjdEtleV0gIT09IGl0ZW1bdGhpcy5zZWxlY3RLZXldKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuY2hlY2tlZCA9IGZhbHNlDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleCA9PT0gLTEpIHRoaXMuYWxsU2VsZWN0aW9uLnB1c2goaXRlbSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmIChmaW5kSW5kZXggIT09IC0xKSB0aGlzLmFsbFNlbGVjdGlvbi5zcGxpY2UoZmluZEluZGV4LCAxKQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2hlY2tBbGwgPSB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLmV2ZXJ5KChpKSA9PiBpLmNoZWNrZWQpDQogICAgICAgICAgICB0aGlzLnRhYmxlSXNJbmRldGVybWluYXRlID0NCiAgICAgICAgICAgICAgICB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLnNvbWUoKGkpID0+IGkuY2hlY2tlZCkgJiYNCiAgICAgICAgICAgICAgICAhdGhpcy50YWJsZUNoZWNrQWxsDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g5aSa6YCJ5qGG5YiX6KGo5rua5Yqo5Yiw5bqV6YOoDQogICAgICAgIGNoZWNrYm94U2Nyb2xsQm90dG9tKCkgew0KICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKF8pID0+IHsNCiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLiRyZWZzLmNoZWNrYm94R3JvdXA/LiRlbA0KICAgICAgICAgICAgICAgIGNvbnRhaW5lcj8uc2Nyb2xsVG8oew0KICAgICAgICAgICAgICAgICAgICB0b3A6IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQsDQogICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJywNCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyDooajmoLzmu5rliqjliLDmn5DkuIDooYwNCiAgICAgICAgdGFibGVUclNjcm9sbChpdGVtKSB7DQogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoXykgPT4gew0KICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IHRoaXMuJHJlZnMubXVsdGlwbGVTZWxlY3Rpb24NCiAgICAgICAgICAgICAgICBjb25zdCB0aGVUYWJsZVJvd0FyciA9DQogICAgICAgICAgICAgICAgICAgIHRhYmxlRWxlbWVudC5ib2R5V3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKA0KICAgICAgICAgICAgICAgICAgICAgICAgJy5lbC10YWJsZV9fYm9keSB0Ym9keSAuZWwtdGFibGVfX3JvdycNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5maW5kSW5kZXgoDQogICAgICAgICAgICAgICAgICAgIChpKSA9PiBpW3RoaXMuc2VsZWN0S2V5XSA9PT0gaXRlbVt0aGlzLnNlbGVjdEtleV0NCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgaWYgKHJvd0luZGV4ID09PSAtMSkgcmV0dXJuDQoNCiAgICAgICAgICAgICAgICBsZXQgdG9wID0gWy4uLnRoZVRhYmxlUm93QXJyXS5yZWR1Y2UoKHRvcFN1bSwgaSwgaW5kZXgpID0+IHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgcm93SW5kZXgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3BTdW0gKyB0aGVUYWJsZVJvd0FycltpbmRleF0ub2Zmc2V0SGVpZ2h0DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9wU3VtDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9LCAwKQ0KICAgICAgICAgICAgICAgIHRhYmxlRWxlbWVudC5ib2R5V3JhcHBlcj8uc2Nyb2xsVG8oe3RvcCwgYmVoYXZpb3I6ICdzbW9vdGgnfSkNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g5pu05paw5aSa6YCJ5qGG6YWN572u6aG5DQogICAgICAgIHVwZGF0ZUNoZWNrYm94T3B0KCkgew0KICAgICAgICAgICAgdGhpcy5jaGVja2JveE9wdCA9IF8uY2xvbmVEZWVwKHRoaXMuYWxsU2VsZWN0aW9uKQ0KICAgICAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdCA9IHRoaXMuY2hlY2tib3hPcHQubWFwKChpKSA9PiBpW3RoaXMuc2VsZWN0S2V5XSkNCiAgICAgICAgICAgIHRoaXMuY2hlY2tBbGwgPSAhIXRoaXMuY2hlY2tib3hTZWxlY3QubGVuZ3RoDQogICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlDQogICAgICAgICAgICB0aGlzLmNoZWNrYm94U2Nyb2xsQm90dG9tKCkNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyDooajmoLzlhajpgInmlLnlj5gNCiAgICAgICAgdGFibGVIYW5kbGVDaGVja0FsbENoYW5nZSh2YWwpIHsNCiAgICAgICAgICAgIHRoaXMuZW5oYW5jZWRUYWJsZURhdGEuZm9yRWFjaCgoaSkgPT4gdGhpcy50YWJsZVJvd0NsaWNrKGksIHZhbCkpDQogICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlDQogICAgICAgIH0sDQoNCiAgICAgICAgLy8g5aSa6YCJ5qGG5YiX6KGo5YWo6YCJ5qGG5pS55Y+YDQogICAgICAgIGhhbmRsZUNoZWNrQWxsQ2hhbmdlKHZhbCkgew0KICAgICAgICAgICAgaWYgKHZhbCkgew0KICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3QgPSB0aGlzLmNoZWNrYm94T3B0Lm1hcCgNCiAgICAgICAgICAgICAgICAgICAgKGkpID0+IGlbdGhpcy5zZWxlY3RLZXldDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIHRoaXMuYWxsU2VsZWN0aW9uID0gdGhpcy5jaGVja2JveE9wdA0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0ID0gdGhpcy5jaGVja2JveE9wdC5mbGF0TWFwKChpKSA9Pg0KICAgICAgICAgICAgICAgICAgICBpLmRpc2FibGVkID8gaVt0aGlzLnNlbGVjdEtleV0gOiBbXQ0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICB0aGlzLmFsbFNlbGVjdGlvbiA9IHRoaXMuYWxsU2VsZWN0aW9uLmZsYXRNYXAoKGkpID0+DQogICAgICAgICAgICAgICAgICAgIGkuZGlzYWJsZWQgJiYgaS5jaGVja2VkID8gaSA6IFtdDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gISF0aGlzLmNoZWNrYm94U2VsZWN0Lmxlbmd0aA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5jaGVja2JveE9wdC5mb3JFYWNoKChpKSA9PiB7DQogICAgICAgICAgICAgICAgY29uc3QgZmluZEl0ZW0gPSB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLmZpbmQoDQogICAgICAgICAgICAgICAgICAgIChfaSkgPT4gX2lbdGhpcy5zZWxlY3RLZXldID09PSBpW3RoaXMuc2VsZWN0S2V5XQ0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICBpZiAoIWZpbmRJdGVtKSByZXR1cm4NCiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VsZWN0aW9uKGZpbmRJdGVtLCB2YWwpDQogICAgICAgICAgICB9KQ0KICAgICAgICB9LA0KDQogICAgICAgIC8vIOWkmumAieahhuWIl+ihqOWkmumAieahhuaUueWPmA0KICAgICAgICBoYW5kbGVDaGVja2VkQ2hhbmdlKHN0YXR1cywgaXRlbSwgdmFsdWUpIHsNCiAgICAgICAgICAgIHRoaXMudGFibGVUclNjcm9sbChpdGVtKQ0KICAgICAgICAgICAgdGhpcy50YWJsZVNlbGVjdGlvbihpdGVtLCBzdGF0dXMpDQogICAgICAgICAgICBsZXQgY2hlY2tlZENvdW50ID0gdmFsdWUubGVuZ3RoDQogICAgICAgICAgICB0aGlzLmNoZWNrQWxsID0gY2hlY2tlZENvdW50ID09PSB0aGlzLmNoZWNrYm94T3B0Lmxlbmd0aA0KICAgICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPQ0KICAgICAgICAgICAgICAgIGNoZWNrZWRDb3VudCA+IDAgJiYgY2hlY2tlZENvdW50IDwgdGhpcy5jaGVja2JveE9wdC5sZW5ndGgNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyDnoa7orqTmjInpkq7ngrnlh7sNCiAgICAgICAgY29uZmlybSgpIHsNCiAgICAgICAgICAgIGxldCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmFsbFNlbGVjdGlvbi5maWx0ZXIoKGkpID0+IHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja2JveFNlbGVjdC5zb21lKA0KICAgICAgICAgICAgICAgICAgICAoc2VsZWN0S2V5KSA9PiBzZWxlY3RLZXkgPT09IGlbdGhpcy5zZWxlY3RLZXldDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IHRoaXMuaXNTaW5nbGVDaG9pY2UNCiAgICAgICAgICAgICAgICA/IHNlbGVjdGVkQ29udGVudFswXSB8fCB7fQ0KICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRDb250ZW50DQogICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c2VsZWN0ZWRDb250ZW50Jywgc2VsZWN0ZWRDb250ZW50KQ0KICAgICAgICAgICAgdGhpcy4kZW1pdCgnY29uZmlybScsIHNlbGVjdGVkQ29udGVudCkNCiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpcm1DbG9zZURpYWxvZykgdGhpcy5pc1Nob3dEaWFsb2cgPSBmYWxzZQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVBZGQoKSB7DQogICAgICAgICAgICB0aGlzLiRlbWl0KCdhZGQnKQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGVDbGVhclJvdyhyb3csIHN0YXR1cykgew0KICAgICAgICAgICAgLy8g6KGo5qC86KGM54K55Ye7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93Q2xpY2socm93LCBzdGF0dXMpDQogICAgICAgIH0sDQogICAgfSwNCn0NCg=="},null]}