{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataCollect\\dataCollectCompany\\dataSourceItem\\ModelAttr.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataCollect\\dataCollectCompany\\dataSourceItem\\ModelAttr.vue","mtime":1734375359944},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBmb3JtIGZyb20gJ0AvYXBpL2Zvcm0uanMnOwppbXBvcnQgdXRpbHMgZnJvbSAnQC9ob3RlbnQtdWktdXRpbC5qcyc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnQnVzaW5lc3NPYmpBdHRyJywKICBwcm9wczogWydvcGVuR3JhbmRTb25BdHRyJywgJ2F0dHJUYWJsZURhdGEnLCAnZm9ybURhdGEnLCAnZW50SW5kZXgnLCAnZ3JhbmRTb25JbmRleCddLAogIHdhdGNoOiB7CiAgICBvcGVuR3JhbmRTb25BdHRyOiBmdW5jdGlvbiBvcGVuR3JhbmRTb25BdHRyKHYpIHsKICAgICAgdGhpcy5pc09wZW5HcmFuZFNvbkF0dHIgPSB2OwogICAgfSwKICAgIGF0dHJUYWJsZURhdGE6IGZ1bmN0aW9uIGF0dHJUYWJsZURhdGEodikgewogICAgICB0aGlzLnNvbkRhdGEgPSB2OwogICAgfSwKICAgIGZvcm1EYXRhOiBmdW5jdGlvbiBmb3JtRGF0YSh2KSB7CiAgICAgIHRoaXMudGFibGVEYXRhID0gdjsKICAgIH0sCiAgICBlbnRJbmRleDogZnVuY3Rpb24gZW50SW5kZXgodikgewogICAgICB0aGlzLmluZGV4ID0gdjsKICAgIH0sCiAgICBncmFuZFNvbkluZGV4OiBmdW5jdGlvbiBncmFuZFNvbkluZGV4KHYpIHsKICAgICAgdGhpcy5zb25JbmRleCA9IHY7CiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgaW5kZXg6IDAsCiAgICAgIHNvbkluZGV4OiAwLAogICAgICBpc09wZW5HcmFuZFNvbkF0dHI6IGZhbHNlLAogICAgICBoaWRlQXR0cjogW10sCiAgICAgIHNvbkRhdGE6IFtdLAogICAgICB0YWJsZURhdGE6IFtdLAogICAgICBkYXRhVHlwZTogW3sKICAgICAgICBrZXk6ICd2YXJjaGFyJywKICAgICAgICB2YWx1ZTogJ+Wtl+espuS4sicKICAgICAgfSwgewogICAgICAgIGtleTogJ251bWJlcicsCiAgICAgICAgdmFsdWU6ICfmlbDlrZcnCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICdkYXRlJywKICAgICAgICB2YWx1ZTogJ+aXpeacnycKICAgICAgfSwgewogICAgICAgIGtleTogJ2Nsb2InLAogICAgICAgIHZhbHVlOiAn5aSn5paH5pysJwogICAgICB9XSwKICAgICAgZGF0ZUZvcm1hdDogW3sKICAgICAgICBrZXk6ICd5eXl5LU1NLWRkIEhIOm1tOnNzJywKICAgICAgICB2YWx1ZTogJ3l5eXktTU0tZGQgSEg6bW06c3MnCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICd5eXl5LU1NLWRkJywKICAgICAgICB2YWx1ZTogJ3l5eXktTU0tZGQnCiAgICAgIH1dCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGF0dHJEYXRhOiBmdW5jdGlvbiBhdHRyRGF0YSgpIHsKICAgICAgdmFyIGRhdGEgPSB0aGlzLm9wZW5HcmFuZFNvbkF0dHIgPyB0aGlzLnNvbkRhdGEgOiB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdDsKICAgICAgcmV0dXJuIGRhdGE7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy/nu4Tku7bms6jplIDnp7vpmaTkuovku7bnm5HlkKzlmajvvIzku6XpmLLlpJrmrKHosIPnlKgKICAgIHRoaXMuJHJvb3QuJG9mZigndmFsaWRhdGVGaWVsZCcpOwogIH0sCiAgbWV0aG9kczogewogICAgLy/moKHpqozlvZPliY3lrp7kvZPlrZfmrrUKICAgIGNoZWNrRW50RnVuYzogZnVuY3Rpb24gY2hlY2tFbnRGdW5jKHR5cGUpIHsKICAgICAgdmFyIGNoZWNrRW50RnVuY0RhdGEgPSB7CiAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICBmb3JtRGF0YTogW3RoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XV0KICAgICAgfTsKICAgICAgdGhpcy4kcm9vdC4kZW1pdCgndmFsaWRhdGVGaWVsZCcsIGNoZWNrRW50RnVuY0RhdGEpOwogICAgfSwKICAgIC8v6KGo5Y2V5pWw5o2u5Yqg6L29CiAgICBnZXRGb3JtRGF0YTogZnVuY3Rpb24gZ2V0Rm9ybURhdGEoKSB7CiAgICAgIHZhciB0aGlzXyA9IHRoaXM7CiAgICAgIGlmICh0aGlzXy5mb3JtRGF0YS5pZCkgewogICAgICAgIGZvcm0uZ2V0RW50RGF0YSh0aGlzXy5mb3JtRGF0YS5pZCwgZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICAgIHJlc3AuZGF0YS5lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVudERhdGEsIGluZGV4KSB7CiAgICAgICAgICAgIGlmIChlbnREYXRhLmlzRXh0ZXJuYWwgPT0gJzEnICYmIGluZGV4ID09IDApIHsKICAgICAgICAgICAgICBlbnREYXRhLnNob3cgPSAn5Li75a6e5L2TLeWklic7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50RGF0YS5pc0V4dGVybmFsID09ICcxJykgewogICAgICAgICAgICAgIGVudERhdGEuc2hvdyA9ICflrZDlrp7kvZMt5aSWJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHsKICAgICAgICAgICAgICBlbnREYXRhLmlzQ2hlY2sgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlbnREYXRhLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgZW50RGF0YS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICAgICAgICBpZiAodi5pc0V4dGVybmFsID09ICcxJykgewogICAgICAgICAgICAgICAgICB2LnNob3cgPSAn5a2Z5a6e5L2TLeWklic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICh2YXIgcSA9IDA7IHEgPCBlbnREYXRhLmF0dHJpYnV0ZUxpc3QubGVuZ3RoOyBxKyspIHsKICAgICAgICAgICAgICBpZiAoZW50RGF0YS5hdHRyaWJ1dGVMaXN0W3FdKSB7CiAgICAgICAgICAgICAgICBpZiAoZW50RGF0YS5hdHRyaWJ1dGVMaXN0W3FdLmlzUmVxdWlyZWQgPT0gMCkgewogICAgICAgICAgICAgICAgICBlbnREYXRhLmF0dHJpYnV0ZUxpc3RbcV0uaXNSZXF1aXJlZCA9ICcwJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGVudERhdGEuYXR0cmlidXRlTGlzdFtxXS5pc1JlcXVpcmVkID0gJzEnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudERhdGEuYXR0cmlidXRlTGlzdC5sZW5ndGggLSAxIC0gcTsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2ldLmluZGV4ID4gZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2kgKyAxXS5pbmRleCkgewogICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGVudERhdGEuYXR0cmlidXRlTGlzdFtpXTsKICAgICAgICAgICAgICAgICAgZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2ldID0gZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2kgKyAxXTsKICAgICAgICAgICAgICAgICAgZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2kgKyAxXSA9IHRlbXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHJlc3AuZGF0YS5lbnRzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgZGF0YS5pc0NoZWNrID0gZmFsc2U7CiAgICAgICAgICB9KTsKICAgICAgICAgIC8v6I635Y+W6YCJ5Lit5a6e5L2TCiAgICAgICAgICByZXNwLmRhdGEuZW50c1t0aGlzXy5lbnRJbmRleF0uaXNDaGVjayA9IHRydWU7CiAgICAgICAgICB0aGlzXy4kZW1pdCgndXBkYXRlOmZvcm1EYXRhJywgcmVzcC5kYXRhKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8v5Yi35paw5YWD5pWw5o2uCiAgICByZWxvYWRCeUVudElkOiBmdW5jdGlvbiByZWxvYWRCeUVudElkKGVudCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdmFyIGlkID0gZW50LmlkOwogICAgICBpZiAodGhpcy5vcGVuR3JhbmRTb25BdHRyICYmIGVudC5jaGlsZHJlbiAmJiBlbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIGlkID0gZW50LmNoaWxkcmVuW3RoaXMuZ3JhbmRTb25JbmRleF0uaWQ7CiAgICAgIH0KICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgZm9ybS5yZWxvYWRCeUVudElkKGlkLCBfdGhpcy5mb3JtRGF0YS5hbGlhcykudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIGlmIChyZXNwLnN0YXRlKSB7CiAgICAgICAgICBfdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgIG1lc3NhZ2U6ICfliLfmlrDmiJDlip8s6Iul5a2X5q615pyJ5Y+Y5YyW6K+36YeN5paw5ouW5ou95a2X5q616K6+6K6h6KGo5Y2VJywKICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnCiAgICAgICAgICB9KTsKICAgICAgICAgIF90aGlzLmdldEZvcm1EYXRhKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzMi4kbWVzc2FnZSh7CiAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AubWVzc2FnZSwKICAgICAgICAgICAgdHlwZTogJ2Vycm9yJwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICBlbnRCbHVyOiBmdW5jdGlvbiBlbnRCbHVyKGluZGV4KSB7CiAgICAgIHRoaXMuJGVtaXQoJ2VudEJsdXInLCBpbmRleCk7CiAgICAgIHRoaXMuY2hlY2tFbnRGdW5jKHRydWUpOwogICAgfSwKICAgIGNoaW5lc2VGb3JtYXQ6IGZ1bmN0aW9uIGNoaW5lc2VGb3JtYXQoaWQsIGxpc3QsIHBhcmFtLCBpbmRleCwgdikgewogICAgICB0aGlzLiRlbWl0KCdjaGluZXNlRm9ybWF0JywgaWQsIGxpc3QsIHBhcmFtLCBpbmRleCwgdik7CiAgICB9LAogICAgLy/mlrDlop7lrZfmrrUKICAgIGFkZEF0dHJSb3dzOiBmdW5jdGlvbiBhZGRBdHRyUm93cygpIHsKICAgICAgdmFyIHJvdyA9IHsKICAgICAgICBjb21tZW50OiAnJywKICAgICAgICBuYW1lOiAnJywKICAgICAgICBpc1JlcXVpcmVkOiAnMCcsCiAgICAgICAgZGF0YVR5cGU6ICd2YXJjaGFyJywKICAgICAgICBmb3JtYXQ6ICcnLAogICAgICAgIGludExlbjogJycsCiAgICAgICAgYXR0ckxlbmd0aDogMjAwLAogICAgICAgIGRlY2ltYWxMZW46IDAsCiAgICAgICAgaXNOZXc6IHRydWUsCiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJywKICAgICAgICBkZXNjOiAnJywKICAgICAgICBpbmRleDogdGhpcy5vcGVuR3JhbmRTb25BdHRyID8gdGhpcy5zb25EYXRhLmxlbmd0aCArIDEgOiB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdC5sZW5ndGggKyAxCiAgICAgIH07CiAgICAgIGlmICh0aGlzLm9wZW5HcmFuZFNvbkF0dHIpIHsKICAgICAgICB0aGlzLnNvbkRhdGEucHVzaChyb3cpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0LnB1c2gocm93KTsKICAgICAgfQogICAgfSwKICAgIC8v5pWw5o2u57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBkZWZhdWx0RGF0YUZvcm1hdDogZnVuY3Rpb24gZGVmYXVsdERhdGFGb3JtYXQocm93LCBpbmRleCkgewogICAgICB2YXIgc2VsZWN0QXR0ciA9IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0OwogICAgICBpZiAodGhpcy5vcGVuR3JhbmRTb25BdHRyKSB7CiAgICAgICAgc2VsZWN0QXR0ciA9IHRoaXMuc29uRGF0YTsKICAgICAgfQogICAgICBzZWxlY3RBdHRyW2luZGV4XS5hdHRyTGVuZ3RoID0gMDsKICAgICAgc2VsZWN0QXR0cltpbmRleF0uZGVjaW1hbExlbiA9IDA7CiAgICAgIHNlbGVjdEF0dHJbaW5kZXhdLmZvcm1hdCA9ICcnOwogICAgICBpZiAocm93LmRhdGFUeXBlID09ICdkYXRlJykgewogICAgICAgIHNlbGVjdEF0dHJbaW5kZXhdLmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJzsKICAgICAgfSBlbHNlIGlmIChyb3cuZGF0YVR5cGUgPT0gJ3ZhcmNoYXInKSB7CiAgICAgICAgc2VsZWN0QXR0cltpbmRleF0uYXR0ckxlbmd0aCA9IDIwMDsKICAgICAgfSBlbHNlIGlmIChyb3cuZGF0YVR5cGUgPT0gJ251bWJlcicpIHsKICAgICAgICBzZWxlY3RBdHRyW2luZGV4XS5hdHRyTGVuZ3RoID0gMTA7CiAgICAgICAgc2VsZWN0QXR0cltpbmRleF0uZGVjaW1hbExlbiA9IDI7CiAgICAgIH0KICAgIH0sCiAgICBoYW5kbGVDb21tYW5kOiBmdW5jdGlvbiBoYW5kbGVDb21tYW5kKHBhcmFtKSB7CiAgICAgIHN3aXRjaCAocGFyYW0uY29tbWFuZCkgewogICAgICAgIGNhc2UgJ2RlbCc6CiAgICAgICAgICB0aGlzLmRlbGV0ZUF0dHJSb3dzKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndXAnOgogICAgICAgICAgdGhpcy5hdHRyVXAocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdkb3duJzoKICAgICAgICAgIHRoaXMuYXR0ckRvd24ocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0sCiAgICAvLyDliKDpmaTlrZfmrrUg5Lyq5Yig6ZmkIOiuvue9ruWtl+autSBzdGF0dXMg5YC8IGhpZGUKICAgIGlzRGVsOiBmdW5jdGlvbiBpc0RlbChyb3csIGluZGV4KSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgY291bnQgPSAwOwogICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgaWYgKGl0ZW0uc3RhdHVzID09PSAnaGlkZScpIHsKICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgaWYgKGNvdW50ID49IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0Lmxlbmd0aCAtIDEpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIG1lc3NhZ2U6ICfmnIDlkI7kuIDkuKrlrZfmrrXkuI3og73liKDpmaTvvIEnLAogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICghdGhpcy5mb3JtRGF0YS5kZXBsb3llZCkgewogICAgICAgIGZvcm0uZGVsZXRlQXR0cihyb3cuaWQpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICAgIGlmIChyZXNwLmRhdGEuc3RhdGUpIHsKICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwLmRhdGEubWVzc2FnZSwKICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2UoewogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlLAogICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzMy5mb3JtRGF0YS5lbnRzW190aGlzMy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdC5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgX3RoaXMzLmZvcm1EYXRhLmVudHNbX3RoaXMzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGF0dHJJbmRleCkgewogICAgICAgICAgICBpZiAoYXR0ckluZGV4ID09IGluZGV4KSB7CiAgICAgICAgICAgICAgaXRlbS5pbmRleCA9IGl0ZW0uaW5kZXggLSAxOwogICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgZm9ybS5zYXZlRW50RGF0YShfdGhpczMuZm9ybURhdGEpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICAgICAgaWYgKHJlc3AuZGF0YS5zdGF0ZSkgewogICAgICAgICAgICAgIF90aGlzMy5mb3JtRGF0YS5yZXYrKzsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9ybS5yZW1vdmVBdHRyKHJvdywgdGhpcy5mb3JtRGF0YS5hbGlhcykudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgICAgaWYgKHJlc3AuZGF0YS5zdGF0ZSkgewogICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2UoewogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlICsgJ++8jOW7uuaooeaVsOaNruW3suabtOaWsO+8gScsCiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBfdGhpczMuJGVtaXQoJ2dldEZvcm1EYXRhJyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2UoewogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlLAogICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8v5Yig6Zmk5a2X5q61CiAgICBkZWxldGVBdHRyUm93czogZnVuY3Rpb24gZGVsZXRlQXR0clJvd3Mocm93LCBpbmRleCkgewogICAgICBpZiAoIXRoaXMub3BlbkdyYW5kU29uQXR0cikgewogICAgICAgIGlmIChyb3cuaWQgPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdC5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgYXR0ckluZGV4KSB7CiAgICAgICAgICAgIGlmIChhdHRySW5kZXggPT0gaW5kZXgpIHsKICAgICAgICAgICAgICBpdGVtLmluZGV4ID0gaXRlbS5pbmRleCAtIDE7CiAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMuaXNEZWwocm93LCBpbmRleCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCFyb3cuaWQpIHsKICAgICAgICAgIHRoaXMuYXR0clRhYmxlRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgdGhpcy5hdHRyVGFibGVEYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHsKICAgICAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKICAgICAgICAgICAgICBpdGVtLmluZGV4ID0gaXRlbS5pbmRleCAtIDE7CiAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMuaXNEZWwocm93LCBpbmRleCk7CiAgICAgIH0KICAgIH0sCiAgICBhdHRyVXA6IGZ1bmN0aW9uIGF0dHJVcChyb3csIGluZGV4KSB7CiAgICAgIGlmICghdGhpcy5vcGVuR3JhbmRTb25BdHRyKSB7CiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXhdLmluZGV4ID0gdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXhdLmluZGV4IC0gMTsKICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdFtpbmRleCAtIDFdLmluZGV4ID0gdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXggLSAxXS5pbmRleCArIDE7CiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QgPSB1dGlscy5hcnJheU1vdmUodGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QsIHJvdywgJ3VwJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5zb25EYXRhW2luZGV4XS5pbmRleCA9IHRoaXMuc29uRGF0YVtpbmRleF0uaW5kZXggLSAxOwogICAgICAgIHRoaXMuc29uRGF0YVtpbmRleCAtIDFdLmluZGV4ID0gdGhpcy5zb25EYXRhW2luZGV4IC0gMV0uaW5kZXggKyAxOwogICAgICAgIHRoaXMuc29uRGF0YSA9IHV0aWxzLmFycmF5TW92ZSh0aGlzLnNvbkRhdGEsIHJvdywgJ3VwJyk7CiAgICAgIH0KICAgIH0sCiAgICBhdHRyRG93bjogZnVuY3Rpb24gYXR0ckRvd24ocm93LCBpbmRleCkgewogICAgICBpZiAoIXRoaXMub3BlbkdyYW5kU29uQXR0cikgewogICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0W2luZGV4XS5pbmRleCA9IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0W2luZGV4XS5pbmRleCArIDE7CiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXggKyAxXS5pbmRleCA9IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0W2luZGV4ICsgMV0uaW5kZXggLSAxOwogICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0ID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0LCByb3csICdkb3duJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5zb25EYXRhW2luZGV4XS5pbmRleCA9IHRoaXMuc29uRGF0YVtpbmRleF0uaW5kZXggKyAxOwogICAgICAgIHRoaXMuc29uRGF0YVtpbmRleCArIDFdLmluZGV4ID0gdGhpcy5zb25EYXRhW2luZGV4ICsgMV0uaW5kZXggLSAxOwogICAgICAgIHRoaXMuc29uRGF0YSA9IHV0aWxzLmFycmF5TW92ZSh0aGlzLnNvbkRhdGEsIHJvdywgJ2Rvd24nKTsKICAgICAgfQogICAgfSwKICAgIHJlY292ZXJ5OiBmdW5jdGlvbiByZWNvdmVyeShyb3cpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIGZvcm0ucmVjb3Zlcnkocm93LCB0aGlzLmZvcm1EYXRhLmFsaWFzKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgaWYgKHJlc3AuZGF0YS5zdGF0ZSkgewogICAgICAgICAgX3RoaXM0LiRtZXNzYWdlKHsKICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5kYXRhLm1lc3NhZ2UgKyAn77yM5bu65qih5pWw5o2u5bey5pu05pawJywKICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnCiAgICAgICAgICB9KTsKICAgICAgICAgIF90aGlzNC4kZW1pdCgnZ2V0Rm9ybURhdGEnKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIHJlZnJlc2hBdHRyOiBmdW5jdGlvbiByZWZyZXNoQXR0cihjYikgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdmFyIHBhcmFtID0gewogICAgICAgIGRzYWxpYXM6IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5kc05hbWUsCiAgICAgICAgaXNUYWJsZTogJzEnLAogICAgICAgIG9iak5hbWU6IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS50YWJsZU5hbWUKICAgICAgfTsKICAgICAgaWYgKHRoaXMub3BlbkdyYW5kU29uQXR0cikgewogICAgICAgIHBhcmFtLm9iak5hbWUgPSB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uY2hpbGRyZW5bdGhpcy5ncmFuZFNvbkluZGV4XS50YWJsZU5hbWU7CiAgICAgICAgcGFyYW0uZHNhbGlhcyA9IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5jaGlsZHJlblt0aGlzLmdyYW5kU29uSW5kZXhdLmRzTmFtZTsKICAgICAgfQogICAgICBmb3JtLmdldEhpZGVBdHRyKHBhcmFtLm9iak5hbWUpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICBpZiAocmVzcCkgewogICAgICAgICAgX3RoaXM1LmhpZGVBdHRyID0gcmVzcDsKICAgICAgICB9CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIGZvcm0uZ2V0VGFibGVMaXN0KHBhcmFtKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgICBfdGhpczUuaXNFeGl0ID0gZmFsc2U7CiAgICAgICAgICBfdGhpczUucmVmcmVzaERhdGEgPSByZXNwOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpczUucmVmcmVzaERhdGEuZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoX3RoaXM1LnJlZnJlc2hEYXRhLmRhdGFbaV0ubmFtZSA9PSBwYXJhbS5vYmpOYW1lKSB7CiAgICAgICAgICAgICAgLy8g5Yig6Zmk5Li76ZSu5ZKM5aSW6ZSuCiAgICAgICAgICAgICAgX3RoaXM1LiRodHRwLmdldCgnJHtmb3JtfS9iby9kZWYvdjEvcmVsb2FkQnlFbnRJZD9lbnRJZD0nICsgX3RoaXM1LmZvcm1EYXRhLmVudHNbX3RoaXM1LmVudEluZGV4XS5pZCkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3AuZGF0YS50YWJsZS5jb2x1bW5MaXN0KS5yZXBsYWNlKC9jaGFyTGVuL2csICdhdHRyTGVuZ3RoJykucmVwbGFjZSgvZmllbGROYW1lL2csICduYW1lJykucmVwbGFjZSgvY29sdW1uVHlwZS9nLCAnZGF0YVR5cGUnKS5yZXBsYWNlKC9mZGF0YVR5cGUvZywgJ2Zjb2x1bW5UeXBlJykpOwogICAgICAgICAgICAgICAgdmFyIF90aGlzID0gX3RoaXM1OwogICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB7fTsKICAgICAgICAgICAgICAgIGlmIChfdGhpczUuaGlkZUF0dHIubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICB2YXIgYXR0ciA9ICcnOwogICAgICAgICAgICAgICAgICBfdGhpczUuaGlkZUF0dHIuZm9yRWFjaChmdW5jdGlvbiAodikgewogICAgICAgICAgICAgICAgICAgIGF0dHIgKz0gdi5maWVsZE5hbWUgKyAnLCc7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICBqc29uID0ganNvbi5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFhdHRyLmluY2x1ZGVzKHZhbHVlLmZpZWxkTmFtZSk7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKF90aGlzNS5vcGVuR3JhbmRTb25BdHRyKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNS5mb3JtRGF0YS5lbnRzW190aGlzNS5lbnRJbmRleF0uY2hpbGRyZW5bX3RoaXM1LmdyYW5kU29uSW5kZXhdLmF0dHJpYnV0ZUxpc3QgPSBqc29uOwogICAgICAgICAgICAgICAgICBkYXRhID0gX3RoaXM1LmZvcm1EYXRhLmVudHNbX3RoaXM1LmVudEluZGV4XS5jaGlsZHJlbltfdGhpczUuZ3JhbmRTb25JbmRleF07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczUuZm9ybURhdGEuZW50c1tfdGhpczUuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QgPSBqc29uOwogICAgICAgICAgICAgICAgICBkYXRhID0gX3RoaXM1LmZvcm1EYXRhLmVudHNbX3RoaXM1LmVudEluZGV4XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGEuYXR0cmlidXRlTGlzdCA9IGRhdGEuYXR0cmlidXRlTGlzdC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGl0ZW0ubmFtZS50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICAgICAgICByZXR1cm4gIWl0ZW0uaXNQayAmJiB2YWwgIT0gJ0ZfRk9STV9EQVRBX1JFVl8nICYmIHZhbCAhPSAnUkVGX0lEXycgJiYgKCFfdGhpcy5mb3JtRGF0YS5lbnRzLmZrIHx8IHZhbCAhPSBfdGhpcy5mb3JtRGF0YS5lbnRzLmZrLnRvVXBwZXJDYXNlKCkpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBkYXRhLmF0dHJpYnV0ZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgaXRlbS5pbmRleCA9IGluZGV4ICsgMTsKICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uYXR0ckxlbmd0aCA9PSAwICYmIGl0ZW0uaW50TGVuICE9IDApIHsKICAgICAgICAgICAgICAgICAgICBpdGVtLmF0dHJMZW5ndGggPSBpdGVtLmludExlbjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5Yi35paw5oiQ5YqfJywKICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIF90aGlzNS5pc0V4aXQgPSB0cnVlOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKCFfdGhpczUuaXNFeGl0KSB7CiAgICAgICAgICAgICAgaWYgKF90aGlzNS5vcGVuR3JhbmRTb25BdHRyKSB7CiAgICAgICAgICAgICAgICBfdGhpczUuZm9ybURhdGEuZW50c1tfdGhpczUuZW50SW5kZXhdLmNoaWxkcmVuW190aGlzNS5ncmFuZFNvbkluZGV4XS5hdHRyaWJ1dGVMaXN0ID0gW107CiAgICAgICAgICAgICAgICBfdGhpczUuZ2V0R3JhbmRTb25FbnRzQnlJbmRleChfdGhpczUuZ3JhbmRTb25JbmRleCwgX3RoaXM1LmVudEluZGV4KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKF90aGlzNS5lbnRJbmRleCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgIGZvcm0ucmVtb3ZlQnVzaW5lc3NPYmooX3RoaXM1LmZvcm1EYXRhLmlkKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczUuaGFuZGxlRGlhbG9nQ2xvc2UoKTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczUuZm9ybURhdGEuZW50c1tfdGhpczUuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QgPSBbXTsKICAgICAgICAgICAgICAgICAgX3RoaXM1LiRlbWl0KCdnZXRFbnRzQnlJbmRleCcsIF90aGlzNS5lbnRJbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LCA1MDApOwogICAgICAgICAgX3RoaXM1LmlzRXhpdCA9IGZhbHNlOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0KICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgZG9jdW1lbnQub25rZXlkb3duID0gZnVuY3Rpb24gKCkgewogICAgICBpZiAoX3RoaXMuZm9ybURhdGEuZW50cyAmJiBfdGhpcy5mb3JtRGF0YS5lbnRzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIga2V5ID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgaWYgKGtleSA9PSAxMTMpIHsKICAgICAgICAgIC8vPT0gODMgJiYgZXZlbnQuY3RybEtleQogICAgICAgICAgX3RoaXMuYWRkQXR0clJvd3MoKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpcy4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsVG9wID0gX3RoaXMuJHJlZnMuYXR0clRhYmxlU2Nyb2xsYmFySGVpZ2h0LmJvZHlXcmFwcGVyLnNjcm9sbEhlaWdodDsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogIH0KfTs="},null]}