{"remainingRequest":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\ljzc-fvue\\src\\components\\form\\chart\\EipChart.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\src\\components\\form\\chart\\EipChart.vue","mtime":1705040076962},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgZWNoYXJ0cyBmcm9tICJlY2hhcnRzIjsNCmltcG9ydCBlY1N0YXQgZnJvbSAiZWNoYXJ0cy1zdGF0IjsNCmltcG9ydCBmb3JtIGZyb20gIkAvYXBpL2Zvcm0uanMiOw0KZXhwb3J0IGRlZmF1bHQgew0KICBwcm9wczogew0KICAgIGlkOiB7DQogICAgICB0eXBlOiBTdHJpbmcsDQogICAgICByZXF1aXJlZDogdHJ1ZQ0KICAgIH0NCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7DQogICAgICB0aGlzLmluaXREYXRhKCk7DQogICAgfSk7DQogIH0sDQogIHdhdGNoOiB7DQogICAgaWQ6IGZ1bmN0aW9uKG5ld1YpIHsNCiAgICAgIGlmIChuZXdWKSB7DQogICAgICAgIHRoaXMuY3VzdG9tQ2hhcnQgPSBbXTsNCiAgICAgICAgdGhpcy5kYXRhID0gW107DQogICAgICAgIHRoaXMucXVpY2tTZWFyY2hQcm9wID0gIiI7DQogICAgICAgIHRoaXMuZGVmYXVsdFF1ZXJ5ID0gW107DQogICAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7DQogICAgICAgIHRoaXMuaW5pdERhdGEoKTsNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIHNob3dUYWJsZTogZmFsc2UsDQogICAgICBjdXN0b21DaGFydDoge30sDQogICAgICBwYWdlUmVzdWx0OiB7DQogICAgICAgIHBhZ2U6IDEsDQogICAgICAgIHBhZ2VTaXplOiAyMCwNCiAgICAgICAgdG90YWw6IDANCiAgICAgIH0sDQogICAgICBkYXRhOiBbXSwNCiAgICAgIHF1aWNrU2VhcmNoUHJvcDogIiIsDQogICAgICBkZWZhdWx0UXVlcnk6IFtdLA0KICAgICAgcXVlcnlPcFRyYW5zT2JqOiB7DQogICAgICAgIEVROiAiRVFVQUwiLA0KICAgICAgICBCRVRXRUVOOiAiQkVUV0VFTiIsDQogICAgICAgIEdFOiAiR1JFQVRfRVFVQUwiLA0KICAgICAgICBMRTogIkxFU1NfRVFVQUwiLA0KICAgICAgICBMSzogIkxJS0UiLA0KICAgICAgICBJTjogIklOIg0KICAgICAgfQ0KICAgIH07DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBsb2FkRGF0YShwYXJhbSwgY2IpIHsNCiAgICAgIGlmICh0aGlzLmN1c3RvbUNoYXJ0LmFsaWFzKSB7DQogICAgICAgIHBhcmFtLnBhZ2VCZWFuLnBhZ2VTaXplID0gcGFyc2VJbnQoDQogICAgICAgICAgKHRoaXMuY3VzdG9tQ2hhcnQuY29uZi5tYXhMZW5ndGggJiYgdGhpcy5jdXN0b21DaGFydC5jb25mLm1heExlbmd0aCAhPSAnMCcpID8gdGhpcy5jdXN0b21DaGFydC5jb25mLm1heExlbmd0aCA6IDIwDQogICAgICAgICk7DQogICAgICAgIGZvcm0NCiAgICAgICAgICAuZ2V0TGlzdERhdGEodGhpcy5jdXN0b21DaGFydC5hbGlhcywgcGFyYW0pDQogICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2Uucm93czsNCiAgICAgICAgICAgIHRoaXMucGFnZVJlc3VsdCA9IHsNCiAgICAgICAgICAgICAgcGFnZTogcmVzcG9uc2UucGFnZSwNCiAgICAgICAgICAgICAgcGFnZVNpemU6IHJlc3BvbnNlLnBhZ2VTaXplLA0KICAgICAgICAgICAgICB0b3RhbDogcmVzcG9uc2UudG90YWwNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICB0aGlzLmN1c3RvbUNoYXJ0LnJvd3MgPSB0aGlzLmRhdGE7DQogICAgICAgICAgICB0aGlzLmJ1aWxkQ2hhcnQodGhpcy5jdXN0b21DaGFydCk7DQogICAgICAgICAgfSkNCiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7DQogICAgICAgICAgICBjYigpOw0KICAgICAgICAgIH0pOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgY2IoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGFzeW5jIGluaXREYXRhKCkgew0KICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmb3JtLmdldEN1c3RvbUNoYXJ0QnlJZCh0aGlzLmlkKTsNCiAgICAgIGlmKGRhdGEpew0KICAgICAgICBkYXRhLmNvbmRpdGlvbmZpZWxkID0gSlNPTi5wYXJzZShkYXRhLmNvbmRpdGlvbmZpZWxkKTsNCiAgICAgICAgZGF0YS5kaXNwbGF5ZmllbGQgPSBKU09OLnBhcnNlKGRhdGEuZGlzcGxheWZpZWxkKTsNCiAgICAgICAgZGF0YS54YXhpc0ZpZWxkID0gSlNPTi5wYXJzZShkYXRhLnhheGlzRmllbGQpOw0KICAgICAgICBkYXRhLnNvcnRmaWVsZCA9IEpTT04ucGFyc2UoZGF0YS5zb3J0ZmllbGQpOw0KICAgICAgICBkYXRhLmNvbmYgPSBKU09OLnBhcnNlKGRhdGEuY29uZik7DQogICAgICAgIHRoaXMuY3VzdG9tQ2hhcnQgPSBkYXRhOw0KICAgICAgICB0aGlzLmluaXRDb25kaXRpb24oKTsNCiAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlOw0KICAgICAgfQ0KICAgIH0sDQogICAgaW5pdENvbmRpdGlvbigpIHsNCiAgICAgIGxldCBjb25kaXRpb25zID0gdGhpcy5jdXN0b21DaGFydC5jb25kaXRpb25maWVsZDsNCiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZGl0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICBpZiAoY29uZGl0aW9uc1tpXS5kZWZhdWx0VHlwZSA9PT0gIjEiKSB7DQogICAgICAgICAgdGhpcy5xdWlja1NlYXJjaFByb3AgKz0gY29uZGl0aW9uc1tpXS5maWVsZC50b1VwcGVyQ2FzZSgpICsgIiwiOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuZGVmYXVsdFF1ZXJ5LnB1c2goew0KICAgICAgICAgICAgcHJvcGVydHk6IGNvbmRpdGlvbnNbaV0uZmllbGQsDQogICAgICAgICAgICB2YWx1ZTogY29uZGl0aW9uc1tpXS5kZWZhdWx0VmFsdWUsDQogICAgICAgICAgICBvcGVyYXRpb246IHRoaXMucXVlcnlPcFRyYW5zT2JqW2NvbmRpdGlvbnNbaV0uY29uZGl0aW9uXSwNCiAgICAgICAgICAgIGdyb3VwOiAibWFpbiINCiAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgYnVpbGRDaGFydChkYXRhKSB7DQogICAgICBsZXQgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKSwgImRlZmF1bHQiKTsNCiAgICAgIGxldCBncmlkID0gdGhpcy5nZXRHcmlkKCk7DQogICAgICBkYXRhLmNvbmYudGl0bGUudGV4dCA9IGRhdGEubmFtZTsNCiAgICAgIGRhdGEuY29uZi50aXRsZS50b3AgPSB0aGlzLmdldFRpdGxlUG9zaXRpb24oKTsNCiAgICAgIGxldCBvcHRpb24gPSB7DQogICAgICAgIHRpdGxlOiBkYXRhLmNvbmYudGl0bGUsDQogICAgICAgIHRvb2x0aXA6IHt9LA0KICAgICAgICB0b29sYm94OiB7IGZlYXR1cmU6IHsgc2F2ZUFzSW1hZ2U6IHt9IH0gfSwNCiAgICAgICAgbGVnZW5kOiB7fSwNCiAgICAgICAgZ3JpZDogZ3JpZCwNCiAgICAgICAgc2VyaWVzOiB7fQ0KICAgICAgfTsNCiAgICAgIHN3aXRjaCAoZGF0YS5zdHlsZSkgew0KICAgICAgICBjYXNlIDE6DQogICAgICAgICAgb3B0aW9uID0gdGhpcy5idWlsZExpbmUoZGF0YSwgb3B0aW9uKTsNCiAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAzOg0KICAgICAgICAgIG9wdGlvbiA9IHRoaXMuYnVpbGRQaWUoZGF0YSwgb3B0aW9uKTsNCiAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSA0Og0KICAgICAgICAgIG9wdGlvbiA9IHRoaXMuYnVpbGRSYWRhcihkYXRhLCBvcHRpb24pOw0KICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIDU6DQogICAgICAgICAgb3B0aW9uID0gdGhpcy5idWlsZEZ1bm5lbChkYXRhLCBvcHRpb24pOw0KICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIDY6DQogICAgICAgICAgb3B0aW9uID0gdGhpcy5idWlsZFNjYXR0ZXIoZGF0YSwgb3B0aW9uKTsNCiAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSA3Og0KICAgICAgICAgIG9wdGlvbiA9IHRoaXMuYnVpbGRIZWF0bWFwKGRhdGEsIG9wdGlvbik7DQogICAgICAgICAgYnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgICB0aGlzLmFkanVzdENoYXRUaXRsZShkYXRhLCBvcHRpb24pOw0KICAgICAgbXlDaGFydC5zZXRPcHRpb24ob3B0aW9uKTsNCiAgICB9LA0KICAgIGJ1aWxkTGluZShkYXRhLCBvcHRpb24pIHsNCiAgICAgIGxldCBkaXNwbGF5RmllbGQgPSB0aGlzLmN1c3RvbUNoYXJ0LmRpc3BsYXlmaWVsZDsNCiAgICAgIGxldCBsZWdlbmREYXRhID0gW107DQogICAgICBsZXQgeEF4aXNEYXRhID0gW107DQogICAgICBsZXQgc2VyaWVzRGF0YSA9IFtdOw0KICAgICAgbGV0IHhBeGlzRmllbGQgPSB7fTsNCiAgICAgIGxldCBzZXJpZXMgPSB0aGlzLmN1c3RvbUNoYXJ0LmNvbmYuc2VyaWVzOw0KICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hhcnQueGF4aXNGaWVsZCkNCiAgICAgICAgeEF4aXNGaWVsZCA9IHRoaXMuY3VzdG9tQ2hhcnQueGF4aXNGaWVsZFswXTsNCg0KICAgICAgZm9yIChsZXQgaSA9IDAsIGQ7IChkID0gZGlzcGxheUZpZWxkW2krK10pOyApIHsNCiAgICAgICAgaWYgKGQpIHsNCiAgICAgICAgICBsZXQgYXJyID0gW107DQogICAgICAgICAgbGV0IHR5cGUgPSBkLnR5cGU7DQogICAgICAgICAgbGVnZW5kRGF0YS5wdXNoKGQuY29tbWVudCk7DQogICAgICAgICAgZm9yIChsZXQgaiA9IDAsIHJlczsgKHJlcyA9IGRhdGEucm93c1tqKytdKTsgKSB7DQogICAgICAgICAgICBpZiAoaSA9PT0gMSkgew0KICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXNbeEF4aXNGaWVsZC5maWVsZC50b1VwcGVyQ2FzZSgpXTsNCiAgICAgICAgICAgICAgaWYgKA0KICAgICAgICAgICAgICAgIHhBeGlzRmllbGQuZGJUeXBlID09PSAiZGF0ZSIgJiYNCiAgICAgICAgICAgICAgICB2YWx1ZSAmJg0KICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gIm51bWJlciINCiAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpLmZvcm1hdChkZWZhdWx0Rm10KTsNCiAgICAgICAgICAgICAgeEF4aXNEYXRhLnB1c2godmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHJlcykgew0KICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXNbZC5maWVsZC50b1VwcGVyQ2FzZSgpXTsNCiAgICAgICAgICAgICAgYXJyLnB1c2godmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBsZXQgc2UgPSB7DQogICAgICAgICAgICBuYW1lOiBkLmNvbW1lbnQsDQogICAgICAgICAgICB0eXBlOiBkLnR5cGUsDQogICAgICAgICAgICBkYXRhOiBhcnIsDQogICAgICAgICAgICBzdGFjazogc2VyaWVzLnN0YWNrID8gIm9uZSIgOiBudWxsDQogICAgICAgICAgfTsNCiAgICAgICAgICBpZiAoIXNlcmllcy5kb3VibGVZQXhpcykgew0KICAgICAgICAgICAgc2UueUF4aXNJbmRleCA9IGQueUF4aXMgPT09IDEgPyAwIDogMTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKHR5cGUgPT09ICJsaW5lIikgew0KICAgICAgICAgICAgc2Uuc21vb3RoID0gc2VyaWVzLnNtb290aDsNCiAgICAgICAgICB9DQogICAgICAgICAgc2VyaWVzRGF0YS5wdXNoKHNlKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgb3B0aW9uLnNlcmllcyA9IHNlcmllc0RhdGE7DQogICAgICBvcHRpb24udG9vbHRpcCA9IHsNCiAgICAgICAgdHJpZ2dlcjogImF4aXMiDQogICAgICB9Ow0KICAgICAgb3B0aW9uLmxlZ2VuZC55ID0gNTA7DQogICAgICAvLyBvcHRpb24uZ3JpZCA9IHsNCiAgICAgIC8vICAgbGVmdDogIjMlIiwNCiAgICAgIC8vICAgcmlnaHQ6ICI0JSIsDQogICAgICAvLyAgIGJvdHRvbTogIjMlIiwNCiAgICAgIC8vICAgY29udGFpbkxhYmVsOiB0cnVlDQogICAgICAvLyB9Ow0KICAgICAgaWYgKHNlcmllcy5zaG93VHlwZSB8fCAhc2VyaWVzLmRvdWJsZVlBeGlzKSB7DQogICAgICAgIG9wdGlvbi54QXhpcyA9IFt7IHR5cGU6ICJjYXRlZ29yeSIsIGRhdGE6IHhBeGlzRGF0YSB9XTsNCiAgICAgICAgb3B0aW9uLnlBeGlzID0gc2VyaWVzLmRvdWJsZVlBeGlzDQogICAgICAgICAgPyBbeyB0eXBlOiAidmFsdWUiIH1dDQogICAgICAgICAgOiBbeyB0eXBlOiAidmFsdWUiIH0sIHsgdHlwZTogInZhbHVlIiB9XTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIG9wdGlvbi54QXhpcyA9IFt7IHR5cGU6ICJ2YWx1ZSIgfV07DQogICAgICAgIG9wdGlvbi55QXhpcyA9IFt7IHR5cGU6ICJjYXRlZ29yeSIsIGRhdGE6IHhBeGlzRGF0YSB9XTsNCiAgICAgIH0NCg0KICAgICAgLy/mn7Hnirblm77nmoTml7blgJnkuKTnq6/nlZnnqbrjgILpgb/lhY3mn7Hnirblm77mjKHkvY956L2044CC5oqY57q/5Zu+5YiZ5LiN55WZ56m677yMDQogICAgICBpZiAoZGF0YS5zdHlsZSA9PT0gMikgb3B0aW9uLnhBeGlzWzBdWyJib3VuZGFyeUdhcCJdID0gdHJ1ZTsNCiAgICAgIGlmIChkYXRhLmNvbmYpIHsNCiAgICAgICAgbGV0IG9iaiA9IGRhdGEuY29uZjsNCiAgICAgICAgaWYgKG9iai55TWluID09PSAyKSBvcHRpb24ueUF4aXNbMF1bIm1pbiJdID0gImRhdGFNaW4iOw0KICAgICAgICBpZiAob2JqLnhTaG93QWxsID09PSAyKQ0KICAgICAgICAgIG9wdGlvbi54QXhpc1swXVsiYXhpc0xhYmVsIl0gPSB7DQogICAgICAgICAgICBpbnRlcnZhbDogMCwgLy/mqKrovbTkv6Hmga/lhajpg6jmmL7npLoNCiAgICAgICAgICAgIHJvdGF0ZTogMzANCiAgICAgICAgICB9Ow0KICAgICAgfQ0KICAgICAgaWYgKGRhdGEucm93cy5sZW5ndGggPiAyMCAmJiAhc2VyaWVzLmRhdGFab29tKSB7DQogICAgICAgIG9wdGlvbi5kYXRhWm9vbSA9IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBzdGFydDogMCwNCiAgICAgICAgICAgIGVuZDogMTAsDQogICAgICAgICAgICBoYW5kbGVJY29uOg0KICAgICAgICAgICAgICAiTTEwLjcsMTEuOXYtMS4zSDkuM3YxLjNjLTQuOSwwLjMtOC44LDQuNC04LjgsOS40YzAsNSwzLjksOS4xLDguOCw5LjR2MS4zaDEuM3YtMS4zYzQuOS0wLjMsOC44LTQuNCw4LjgtOS40QzE5LjUsMTYuMywxNS42LDEyLjIsMTAuNywxMS45eiBNMTMuMywyNC40SDYuN1YyM2g2LjZWMjQuNHogTTEzLjMsMTkuNkg2Ljd2LTEuNGg2LjZWMTkuNnoiLA0KICAgICAgICAgICAgaGFuZGxlU2l6ZTogIjgwJSIsDQogICAgICAgICAgICBoYW5kbGVTdHlsZTogew0KICAgICAgICAgICAgICBjb2xvcjogIiNmZmYiLA0KICAgICAgICAgICAgICBzaGFkb3dCbHVyOiAzLA0KICAgICAgICAgICAgICBzaGFkb3dDb2xvcjogInJnYmEoMCwgMCwgMCwgMC42KSIsDQogICAgICAgICAgICAgIHNoYWRvd09mZnNldFg6IDIsDQogICAgICAgICAgICAgIHNoYWRvd09mZnNldFk6IDINCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIF07DQogICAgICAgIG9wdGlvbi5ncmlkLmJvdHRvbSA9IDUwOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgLy8gb3B0aW9uLmdyaWQuYm90dG9tID0gIjMlIjsNCiAgICAgICAgZGVsZXRlIG9wdGlvbi5kYXRhWm9vbTsNCiAgICAgIH0NCiAgICAgIG9wdGlvbi5sZWdlbmQgPSBkYXRhLmNvbmYubGVnZW5kOw0KICAgICAgb3B0aW9uLmxlZ2VuZC5kYXRhID0gbGVnZW5kRGF0YTsNCiAgICAgIHJldHVybiBvcHRpb247DQogICAgfSwNCiAgICBidWlsZFBpZShkYXRhLCBvcHRpb24pIHsNCiAgICAgIGxldCBkaXNwbGF5RmllbGQgPSBkYXRhLmRpc3BsYXlmaWVsZDsNCiAgICAgIGxldCBsZWdlbmREYXRhID0gW107DQogICAgICBsZXQgc2VyaWVzRGF0YSA9IFtdOw0KICAgICAgbGV0IHhBeGlzRmllbGQgPSBkYXRhLnhheGlzRmllbGQ7DQogICAgICBsZXQgc2VyaWVzID0gZGF0YS5jb25mLnNlcmllczsNCiAgICAgIGlmICh4QXhpc0ZpZWxkKSB4QXhpc0ZpZWxkID0geEF4aXNGaWVsZFswXTsNCiAgICAgIGlmIChzZXJpZXMuc2hvd1R5cGUpIHsNCiAgICAgICAgbGV0IGR1cmF0aW9uID0gMTAwIC8gZGF0YS5yb3dzLmxlbmd0aDsNCiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLnJvd3MubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICBsZXQgdmFsdWUgPSBbXTsNCiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3BsYXlGaWVsZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgdmFsdWUucHVzaCh7DQogICAgICAgICAgICAgIG5hbWU6IGRpc3BsYXlGaWVsZFtpXS5jb21tZW50LA0KICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5yb3dzW2pdW2Rpc3BsYXlGaWVsZFtpXS5maWVsZC50b1VwcGVyQ2FzZSgpXQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBpZiAoaiA9PT0gMCkgew0KICAgICAgICAgICAgICBsZWdlbmREYXRhLnB1c2goZGlzcGxheUZpZWxkW2ldLmNvbW1lbnQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBzZXJpZXNEYXRhLnB1c2goew0KICAgICAgICAgICAgbmFtZTogZGF0YS5yb3dzW2pdW3hBeGlzRmllbGQuZmllbGQudG9VcHBlckNhc2UoKV0sDQogICAgICAgICAgICB0eXBlOiAicGllIiwNCiAgICAgICAgICAgIGRhdGE6IHZhbHVlLA0KICAgICAgICAgICAgcmFkaXVzOiBbc2VyaWVzLnJhZGl1c1swXSArICIlIiwgc2VyaWVzLnJhZGl1c1sxXSArICIlIl0sDQogICAgICAgICAgICBjZW50ZXI6IFsNCiAgICAgICAgICAgICAgTnVtYmVyKHNlcmllcy5jZW50ZXJbMF0pICsgaiAqIGR1cmF0aW9uICsgIiUiLA0KICAgICAgICAgICAgICBzZXJpZXMuY2VudGVyWzFdICsgIiUiDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgcm9zZVR5cGU6IHNlcmllcy5yb3NlVHlwZSwNCiAgICAgICAgICAgIHNlbGVjdGVkTW9kZTogc2VyaWVzLnNlbGVjdGVkTW9kZSwNCiAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgIHBvc2l0aW9uOiBzZXJpZXMubGFiZWwucG9zaXRpb24NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgICAgZW1waGFzaXM6IHsNCiAgICAgICAgICAgICAgICBzaGFkb3dCbHVyOiAxMCwNCiAgICAgICAgICAgICAgICBzaGFkb3dPZmZzZXRYOiAwLA0KICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAicmdiYSgwLCAwLCAwLCAwLjUpIg0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGxldCBkdXJhdGlvbiA9IDEwMCAvIGRpc3BsYXlGaWVsZC5sZW5ndGg7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGxheUZpZWxkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgbGV0IHZhbHVlID0gW107DQogICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLnJvd3MubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgIHZhbHVlLnB1c2goew0KICAgICAgICAgICAgICBuYW1lOiBkYXRhLnJvd3Nbal1beEF4aXNGaWVsZC5maWVsZC50b1VwcGVyQ2FzZSgpXSwNCiAgICAgICAgICAgICAgdmFsdWU6IGRhdGEucm93c1tqXVtkaXNwbGF5RmllbGRbaV0uZmllbGQudG9VcHBlckNhc2UoKV0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgaWYgKGkgPT09IDApIHsNCiAgICAgICAgICAgICAgbGVnZW5kRGF0YS5wdXNoKA0KICAgICAgICAgICAgICAgIGRhdGEucm93c1tqXVt4QXhpc0ZpZWxkLmZpZWxkLnRvVXBwZXJDYXNlKCldICsgIiINCiAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgc2VyaWVzRGF0YS5wdXNoKHsNCiAgICAgICAgICAgIG5hbWU6IGRpc3BsYXlGaWVsZFtpXS5jb21tZW50LA0KICAgICAgICAgICAgdHlwZTogInBpZSIsDQogICAgICAgICAgICBkYXRhOiB2YWx1ZSwNCiAgICAgICAgICAgIHJhZGl1czogW3Nlcmllcy5yYWRpdXNbMF0gKyAiJSIsIHNlcmllcy5yYWRpdXNbMV0gKyAiJSJdLA0KICAgICAgICAgICAgY2VudGVyOiBbDQogICAgICAgICAgICAgIE51bWJlcihzZXJpZXMuY2VudGVyWzBdKSArIGkgKiBkdXJhdGlvbiArICIlIiwNCiAgICAgICAgICAgICAgc2VyaWVzLmNlbnRlclsxXSArICIlIg0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIHJvc2VUeXBlOiBzZXJpZXMucm9zZVR5cGUsDQogICAgICAgICAgICBzZWxlY3RlZE1vZGU6IHNlcmllcy5zZWxlY3RlZE1vZGUsDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBwb3NpdGlvbjogc2VyaWVzLmxhYmVsLnBvc2l0aW9uDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIGVtcGhhc2lzOiB7DQogICAgICAgICAgICAgICAgc2hhZG93Qmx1cjogMTAsDQogICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0WDogMCwNCiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcjogInJnYmEoMCwgMCwgMCwgMC41KSINCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIG9wdGlvbi5zZXJpZXMgPSBzZXJpZXNEYXRhOw0KICAgICAgb3B0aW9uLnRvb2x0aXAgPSB7DQogICAgICAgIHRyaWdnZXI6ICJpdGVtIiwNCiAgICAgICAgZm9ybWF0dGVyOiAie2F9IDxici8+e2J9IDoge2N9ICh7ZH0lKSINCiAgICAgIH07DQogICAgICBvcHRpb24ubGVnZW5kID0gZGF0YS5jb25mLmxlZ2VuZDsNCiAgICAgIG9wdGlvbi5sZWdlbmQuZGF0YSA9IGxlZ2VuZERhdGE7DQogICAgICByZXR1cm4gb3B0aW9uOw0KICAgIH0sDQogICAgYnVpbGRSYWRhcihkYXRhLCBvcHRpb24pIHsNCiAgICAgIGxldCBkaXNwbGF5RmllbGQgPSBkYXRhLmRpc3BsYXlmaWVsZDsNCiAgICAgIGxldCBsZWdlbmREYXRhID0gW107DQogICAgICBsZXQgeEF4aXNGaWVsZCA9IGRhdGEueGF4aXNGaWVsZDsNCiAgICAgIGxldCBhcnIgPSBbXTsNCiAgICAgIGxldCBzZXJpZXNEYXRhID0gW107DQogICAgICBsZXQgaW5kaWNhdG9yID0gW107DQogICAgICBsZXQgc2VyaWVzID0gZGF0YS5jb25mLnNlcmllczsNCiAgICAgIGlmICh4QXhpc0ZpZWxkKSB4QXhpc0ZpZWxkID0geEF4aXNGaWVsZFswXTsNCg0KICAgICAgaWYgKHNlcmllcy5zaG93VHlwZSkgew0KICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRhdGEucm93cy5sZW5ndGg7IGorKykgew0KICAgICAgICAgIGxldCB2YWx1ZSA9IFtdOw0KICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGxheUZpZWxkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YWx1ZS5wdXNoKGRhdGEucm93c1tqXVtkaXNwbGF5RmllbGRbaV0uZmllbGQudG9VcHBlckNhc2UoKV0pOw0KICAgICAgICAgICAgaWYgKGogPT09IDApIHsNCiAgICAgICAgICAgICAgaW5kaWNhdG9yLnB1c2goew0KICAgICAgICAgICAgICAgIG5hbWU6IGRpc3BsYXlGaWVsZFtpXS5jb21tZW50DQogICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBsZWdlbmREYXRhLnB1c2goZGF0YS5yb3dzW2pdW3hBeGlzRmllbGQuZmllbGQudG9VcHBlckNhc2UoKV0gKyAiIik7DQogICAgICAgICAgYXJyLnB1c2goew0KICAgICAgICAgICAgbmFtZTogZGF0YS5yb3dzW2pdW3hBeGlzRmllbGQuZmllbGQudG9VcHBlckNhc2UoKV0sDQogICAgICAgICAgICB2YWx1ZTogdmFsdWUsDQogICAgICAgICAgICBhcmVhU3R5bGU6IHsNCiAgICAgICAgICAgICAgb3BhY2l0eTogIjAiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgICAgc2VyaWVzRGF0YSA9IFsNCiAgICAgICAgICB7DQogICAgICAgICAgICB0eXBlOiAicmFkYXIiLA0KICAgICAgICAgICAgZGF0YTogYXJyLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIGVtcGhhc2lzOiB7DQogICAgICAgICAgICAgICAgYXJlYVN0eWxlOiB7DQogICAgICAgICAgICAgICAgICBvcGFjaXR5OiBzZXJpZXMuYXJlYVN0eWxlID8gIjAiIDogIjAuNSINCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIF07DQogICAgICB9IGVsc2Ugew0KICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3BsYXlGaWVsZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIGxldCB2YWx1ZSA9IFtdOw0KICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGF0YS5yb3dzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICB2YWx1ZS5wdXNoKGRhdGEucm93c1tqXVtkaXNwbGF5RmllbGRbaV0uZmllbGQudG9VcHBlckNhc2UoKV0pOw0KICAgICAgICAgICAgaWYgKGkgPT09IDApIHsNCiAgICAgICAgICAgICAgaW5kaWNhdG9yLnB1c2goew0KICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEucm93c1tqXVt4QXhpc0ZpZWxkLmZpZWxkLnRvVXBwZXJDYXNlKCldDQogICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBsZWdlbmREYXRhLnB1c2goZGlzcGxheUZpZWxkW2ldLmNvbW1lbnQpOw0KICAgICAgICAgIGFyci5wdXNoKHsNCiAgICAgICAgICAgIG5hbWU6IGRpc3BsYXlGaWVsZFtpXS5jb21tZW50LA0KICAgICAgICAgICAgdmFsdWU6IHZhbHVlLA0KICAgICAgICAgICAgYXJlYVN0eWxlOiB7DQogICAgICAgICAgICAgIG9wYWNpdHk6ICIwIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIHNlcmllc0RhdGEgPSBbDQogICAgICAgICAgew0KICAgICAgICAgICAgdHlwZTogInJhZGFyIiwNCiAgICAgICAgICAgIGRhdGE6IGFyciwNCiAgICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgICBlbXBoYXNpczogew0KICAgICAgICAgICAgICAgIGFyZWFTdHlsZTogew0KICAgICAgICAgICAgICAgICAgb3BhY2l0eTogc2VyaWVzLmFyZWFTdHlsZSA/ICIwIiA6ICIwLjUiDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICBdOw0KICAgICAgfQ0KDQogICAgICBvcHRpb24uc2VyaWVzID0gc2VyaWVzRGF0YTsNCiAgICAgIG9wdGlvbi5yYWRhciA9IHsNCiAgICAgICAgY2VudGVyOiBbc2VyaWVzLmNlbnRlclswXSArICIlIiwgc2VyaWVzLmNlbnRlclsxXSArICIlIl0sDQogICAgICAgIHJhZGl1czogc2VyaWVzLnJhZGl1cywNCiAgICAgICAgaW5kaWNhdG9yOiBpbmRpY2F0b3INCiAgICAgIH07DQogICAgICBvcHRpb24ubGVnZW5kID0gZGF0YS5jb25mLmxlZ2VuZDsNCiAgICAgIG9wdGlvbi5sZWdlbmQuZGF0YSA9IGxlZ2VuZERhdGE7DQogICAgICByZXR1cm4gb3B0aW9uOw0KICAgIH0sDQogICAgYnVpbGRGdW5uZWwoZGF0YSwgb3B0aW9uKSB7DQogICAgICBsZXQgZGlzcGxheUZpZWxkID0gZGF0YS5kaXNwbGF5ZmllbGQ7DQogICAgICBsZXQgbGVnZW5kRGF0YSA9IFtdOw0KICAgICAgbGV0IHhBeGlzRmllbGQgPSBkYXRhLnhheGlzRmllbGQ7DQogICAgICBsZXQgc2VyaWVzRGF0YSA9IFtdOw0KICAgICAgbGV0IHNlcmllcyA9IGRhdGEuY29uZi5zZXJpZXM7DQogICAgICBpZiAoeEF4aXNGaWVsZCkgeEF4aXNGaWVsZCA9IHhBeGlzRmllbGRbMF07DQoNCiAgICAgIC8v5YiX5pWw5o2u5bGV56S6DQogICAgICBpZiAoc2VyaWVzLnNob3dUeXBlKSB7DQogICAgICAgIGxldCBkdXJhdGlvbiA9IDEwMCAvIGRhdGEucm93cy5sZW5ndGg7DQogICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGF0YS5yb3dzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgbGV0IHZhbHVlID0gW107DQogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwbGF5RmllbGQubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIHZhbHVlLnB1c2goew0KICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5RmllbGRbaV0uY29tbWVudCwNCiAgICAgICAgICAgICAgdmFsdWU6IGRhdGEucm93c1tqXVtkaXNwbGF5RmllbGRbaV0uZmllbGQudG9VcHBlckNhc2UoKV0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgaWYgKGogPT09IDApIHsNCiAgICAgICAgICAgICAgbGVnZW5kRGF0YS5wdXNoKGRpc3BsYXlGaWVsZFtpXS5jb21tZW50KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgc2VyaWVzRGF0YS5wdXNoKHsNCiAgICAgICAgICAgIG5hbWU6IGRhdGEucm93c1tqXVt4QXhpc0ZpZWxkLmZpZWxkLnRvVXBwZXJDYXNlKCldLA0KICAgICAgICAgICAgdHlwZTogImZ1bm5lbCIsDQogICAgICAgICAgICBkYXRhOiB2YWx1ZSwNCiAgICAgICAgICAgIHdpZHRoOiBkdXJhdGlvbiAtIDUgKyAiJSIsDQogICAgICAgICAgICBsZWZ0OiBqICogZHVyYXRpb24gKyAiJSIsDQogICAgICAgICAgICBmdW5uZWxBbGlnbjogc2VyaWVzLmZ1bm5lbEFsaWduLA0KICAgICAgICAgICAgc29ydDogc2VyaWVzLnNvcnQsDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBwb3NpdGlvbjogc2VyaWVzLmxhYmVsLnBvc2l0aW9uDQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIC8v6KGM5pWw5o2u5bGV56S6DQogICAgICAgIGxldCBkdXJhdGlvbiA9IDEwMCAvIGRpc3BsYXlGaWVsZC5sZW5ndGg7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGxheUZpZWxkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgbGV0IHZhbHVlID0gW107DQogICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLnJvd3MubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgIHZhbHVlLnB1c2goew0KICAgICAgICAgICAgICBuYW1lOiBkYXRhLnJvd3Nbal1beEF4aXNGaWVsZC5maWVsZC50b1VwcGVyQ2FzZSgpXSwNCiAgICAgICAgICAgICAgdmFsdWU6IGRhdGEucm93c1tqXVtkaXNwbGF5RmllbGRbaV0uZmllbGQudG9VcHBlckNhc2UoKV0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgaWYgKGkgPT09IDApIHsNCiAgICAgICAgICAgICAgbGVnZW5kRGF0YS5wdXNoKA0KICAgICAgICAgICAgICAgIGRhdGEucm93c1tqXVt4QXhpc0ZpZWxkLmZpZWxkLnRvVXBwZXJDYXNlKCldICsgIiINCiAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgc2VyaWVzRGF0YS5wdXNoKHsNCiAgICAgICAgICAgIG5hbWU6IGRpc3BsYXlGaWVsZFtpXS5jb21tZW50LA0KICAgICAgICAgICAgdHlwZTogImZ1bm5lbCIsDQogICAgICAgICAgICBkYXRhOiB2YWx1ZSwNCiAgICAgICAgICAgIHdpZHRoOiBkdXJhdGlvbiAtIDUgKyAiJSIsDQogICAgICAgICAgICBsZWZ0OiBpICogZHVyYXRpb24gKyAiJSIsDQogICAgICAgICAgICBmdW5uZWxBbGlnbjogc2VyaWVzLmZ1bm5lbEFsaWduLA0KICAgICAgICAgICAgc29ydDogc2VyaWVzLnNvcnQsDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBwb3NpdGlvbjogc2VyaWVzLmxhYmVsLnBvc2l0aW9uDQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgb3B0aW9uLnNlcmllcyA9IHNlcmllc0RhdGE7DQoNCiAgICAgIG9wdGlvbi5sZWdlbmQgPSBkYXRhLmNvbmYubGVnZW5kOw0KICAgICAgb3B0aW9uLmxlZ2VuZC5kYXRhID0gbGVnZW5kRGF0YTsNCiAgICAgIHJldHVybiBvcHRpb247DQogICAgfSwNCiAgICBidWlsZFNjYXR0ZXIoZGF0YSwgb3B0aW9uKSB7DQogICAgICBsZXQgZGlzcGxheUZpZWxkID0gZGF0YS5kaXNwbGF5ZmllbGQ7DQogICAgICBsZXQgbGVnZW5kRGF0YSA9IFtdOw0KICAgICAgbGV0IHhBeGlzRGF0YSA9IFtdOw0KICAgICAgbGV0IHhBeGlzRmllbGQgPSBkYXRhLnhheGlzRmllbGQ7DQogICAgICBsZXQgc2VyaWVzRGF0YSA9IFtdOw0KICAgICAgbGV0IHNlcmllcyA9IGRhdGEuY29uZi5zZXJpZXM7DQogICAgICBpZiAoeEF4aXNGaWVsZCkgeEF4aXNGaWVsZCA9IHhBeGlzRmllbGRbMF07DQoNCiAgICAgIGlmIChzZXJpZXMuc2hvd1R5cGUpIHsNCiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLnJvd3MubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICBsZXQgdmFsdWUgPSBbXTsNCiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3BsYXlGaWVsZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgaWYgKGogPT09IDApIHsNCiAgICAgICAgICAgICAgeEF4aXNEYXRhLnB1c2goZGlzcGxheUZpZWxkW2ldLmNvbW1lbnQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFsdWUucHVzaChbDQogICAgICAgICAgICAgIGRpc3BsYXlGaWVsZFtpXS5jb21tZW50LA0KICAgICAgICAgICAgICBkYXRhLnJvd3Nbal1bZGlzcGxheUZpZWxkW2ldLmZpZWxkLnRvVXBwZXJDYXNlKCldDQogICAgICAgICAgICBdKTsNCiAgICAgICAgICB9DQogICAgICAgICAgbGVnZW5kRGF0YS5wdXNoKGRhdGEucm93c1tqXVt4QXhpc0ZpZWxkLmZpZWxkLnRvVXBwZXJDYXNlKCldICsgIiIpOw0KICAgICAgICAgIHNlcmllc0RhdGEucHVzaCh7DQogICAgICAgICAgICBuYW1lOiBkYXRhLnJvd3Nbal1beEF4aXNGaWVsZC5maWVsZC50b1VwcGVyQ2FzZSgpXSwNCiAgICAgICAgICAgIHR5cGU6ICJzY2F0dGVyIiwNCiAgICAgICAgICAgIGRhdGE6IHZhbHVlDQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGxheUZpZWxkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgbGV0IHZhbHVlID0gW107DQogICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLnJvd3MubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgIGlmIChpID09PSAwKSB7DQogICAgICAgICAgICAgIHhBeGlzRGF0YS5wdXNoKA0KICAgICAgICAgICAgICAgIGRhdGEucm93c1tqXVt4QXhpc0ZpZWxkLmZpZWxkLnRvTG9jYWxlVXBwZXJDYXNlKCldDQogICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YWx1ZS5wdXNoKFsNCiAgICAgICAgICAgICAgZGF0YS5yb3dzW2pdW3hBeGlzRmllbGQuZmllbGQudG9Mb2NhbGVVcHBlckNhc2UoKV0sDQogICAgICAgICAgICAgIGRhdGEucm93c1tqXVtkaXNwbGF5RmllbGRbaV0uZmllbGQudG9Mb2NhbGVVcHBlckNhc2UoKV0NCiAgICAgICAgICAgIF0pOw0KICAgICAgICAgIH0NCiAgICAgICAgICBsZWdlbmREYXRhLnB1c2goZGlzcGxheUZpZWxkW2ldLmNvbW1lbnQpOw0KICAgICAgICAgIHNlcmllc0RhdGEucHVzaCh7DQogICAgICAgICAgICBuYW1lOiBkaXNwbGF5RmllbGRbaV0uY29tbWVudCwNCiAgICAgICAgICAgIHR5cGU6ICJzY2F0dGVyIiwNCiAgICAgICAgICAgIGRhdGE6IHZhbHVlDQogICAgICAgICAgfSk7DQogICAgICAgICAgaWYgKGRpc3BsYXlGaWVsZFtpXS5yZWdyZXNzaW9uICYmIGRpc3BsYXlGaWVsZFtpXS5yZWdyZXNzaW9uIT09J25vbmUnKXsNCiAgICAgICAgICAgIGxldCBteVJlZ3Jlc3Npb24gPSBlY1N0YXQucmVncmVzc2lvbihkaXNwbGF5RmllbGRbaV0ucmVncmVzc2lvbix2YWx1ZSk7DQogICAgICAgICAgICBteVJlZ3Jlc3Npb24ucG9pbnRzLnNvcnQoZnVuY3Rpb24oYSwgYikgew0KICAgICAgICAgICAgICByZXR1cm4gYVswXSAtIGJbMF07DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHNlcmllc0RhdGEucHVzaCh7DQogICAgICAgICAgICAgIG5hbWU6ICdsaW5lJywNCiAgICAgICAgICAgICAgdHlwZTogJ2xpbmUnLA0KICAgICAgICAgICAgICBzaG93U3ltYm9sOiBmYWxzZSwNCiAgICAgICAgICAgICAgZGF0YTogbXlSZWdyZXNzaW9uLnBvaW50cywNCiAgICAgICAgICAgICAgbWFya1BvaW50OiB7DQogICAgICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50Jw0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLA0KICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBteVJlZ3Jlc3Npb24uZXhwcmVzc2lvbiwNCiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzMzMycsDQogICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGRhdGE6IFt7DQogICAgICAgICAgICAgICAgICBjb29yZDogbXlSZWdyZXNzaW9uLnBvaW50c1tteVJlZ3Jlc3Npb24ucG9pbnRzLmxlbmd0aCAtIDFdDQogICAgICAgICAgICAgICAgfV0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgb3B0aW9uLnNlcmllcyA9IHNlcmllc0RhdGE7DQogICAgICBvcHRpb24ueEF4aXMgPSB7DQogICAgICAgIHR5cGU6IGRhdGEuY29uZi5zZXJpZXMueEF4aXNUeXBlDQogICAgICB9Ow0KICAgICAgaWYgKGRhdGEuY29uZi5zZXJpZXMueEF4aXNUeXBlPT09J2NhdGVnb3J5Jyl7DQogICAgICAgIG9wdGlvbi54QXhpcy5kYXRhID0geEF4aXNEYXRhDQogICAgICB9DQogICAgICBvcHRpb24ueUF4aXMgPSB7fTsNCg0KICAgICAgb3B0aW9uLmxlZ2VuZCA9IGRhdGEuY29uZi5sZWdlbmQ7DQogICAgICBvcHRpb24ubGVnZW5kLmRhdGEgPSBsZWdlbmREYXRhOw0KICAgICAgcmV0dXJuIG9wdGlvbjsNCiAgICB9LA0KICAgIGJ1aWxkSGVhdG1hcChkYXRhLCBvcHRpb24pIHsNCiAgICAgIGxldCBkaXNwbGF5RmllbGQgPSBkYXRhLmRpc3BsYXlmaWVsZDsNCiAgICAgIGxldCBsZWdlbmREYXRhID0gW107DQogICAgICBsZXQgcm93cyA9IFtdOw0KICAgICAgbGV0IGNvbHVtbnMgPSBbXTsNCiAgICAgIGxldCBhcnIgPSBbXTsNCiAgICAgIGxldCBtYXggPSAwOw0KICAgICAgbGV0IHhBeGlzRmllbGQgPSBkYXRhLnhheGlzRmllbGQ7DQogICAgICBpZiAoeEF4aXNGaWVsZCkgeEF4aXNGaWVsZCA9IHhBeGlzRmllbGRbMF07DQoNCiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5yb3dzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGlzcGxheUZpZWxkLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgaWYgKGkgPT09IDApIHsNCiAgICAgICAgICAgIGNvbHVtbnMucHVzaChkaXNwbGF5RmllbGRbal0uY29tbWVudCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGFyci5wdXNoKFtpLCBqLCBkYXRhLnJvd3NbaV1bZGlzcGxheUZpZWxkW2pdLmZpZWxkLnRvVXBwZXJDYXNlKCldXSk7DQogICAgICAgICAgaWYgKGRhdGEucm93c1tpXVtkaXNwbGF5RmllbGRbal0uZmllbGQudG9VcHBlckNhc2UoKV0gPiBtYXgpIHsNCiAgICAgICAgICAgIG1heCA9IGRhdGEucm93c1tpXVtkaXNwbGF5RmllbGRbal0uZmllbGQudG9VcHBlckNhc2UoKV07DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJvd3MucHVzaChkYXRhLnJvd3NbaV1beEF4aXNGaWVsZC5maWVsZC50b1VwcGVyQ2FzZSgpXSk7DQogICAgICB9DQogICAgICBvcHRpb24uc2VyaWVzID0gWw0KICAgICAgICB7DQogICAgICAgICAgbmFtZTogInNzcyIsDQogICAgICAgICAgdHlwZTogImhlYXRtYXAiLA0KICAgICAgICAgIGRhdGE6IGFyciwNCiAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgbm9ybWFsOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIF07DQogICAgICBvcHRpb24ueEF4aXMgPSB7DQogICAgICAgIHR5cGU6ICJjYXRlZ29yeSIsDQogICAgICAgIGRhdGE6IHJvd3MsDQogICAgICAgIHNwbGl0QXJlYTogew0KICAgICAgICAgIHNob3c6IHRydWUNCiAgICAgICAgfQ0KICAgICAgfTsNCiAgICAgIG9wdGlvbi55QXhpcyA9IHsNCiAgICAgICAgdHlwZTogImNhdGVnb3J5IiwNCiAgICAgICAgZGF0YTogY29sdW1ucywNCiAgICAgICAgc3BsaXRBcmVhOiB7DQogICAgICAgICAgc2hvdzogdHJ1ZQ0KICAgICAgICB9DQogICAgICB9Ow0KICAgICAgb3B0aW9uLnZpc3VhbE1hcCA9IHsNCiAgICAgICAgbWluOiAwLA0KICAgICAgICBtYXg6IG1heCwNCiAgICAgICAgY2FsY3VsYWJsZTogdHJ1ZSwNCiAgICAgICAgb3JpZW50OiAiaG9yaXpvbnRhbCIsDQogICAgICAgIGxlZnQ6ICJjZW50ZXIiLA0KICAgICAgICBib3R0b206ICIwJSINCiAgICAgIH07DQogICAgICBvcHRpb24udG9vbHRpcCA9IHsNCiAgICAgICAgcG9zaXRpb246ICJ0b3AiDQogICAgICB9Ow0KDQogICAgICBvcHRpb24ubGVnZW5kID0gZGF0YS5jb25mLmxlZ2VuZDsNCiAgICAgIG9wdGlvbi5sZWdlbmQuZGF0YSA9IGxlZ2VuZERhdGE7DQogICAgICByZXR1cm4gb3B0aW9uOw0KICAgIH0sDQogICAgZ2V0R3JpZCgpIHsNCiAgICAgIGxldCB0b3AgPSAwOw0KICAgICAgbGV0IGJvdHRvbSA9IDA7DQogICAgICBsZXQgZ3JpZCA9IHt9Ow0KICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hhcnQuY29uZi50aXRsZS5zaG93KSB7DQogICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYXJ0LmNvbmYudGl0bGUudG9wID09PSAidG9wIikgew0KICAgICAgICAgIHRvcCArPSA3Ow0KICAgICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYXJ0LmNvbmYudGl0bGUuc3VidGV4dCkgew0KICAgICAgICAgICAgdG9wICs9IDU7DQogICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VzdG9tQ2hhcnQuY29uZi50aXRsZS50b3AgPT09ICJib3R0b20iKSB7DQogICAgICAgICAgYm90dG9tICs9IDE2Ow0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAodGhpcy5jdXN0b21DaGFydC5jb25mLmxlZ2VuZC5zaG93KSB7DQogICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYXJ0LmNvbmYubGVnZW5kLnRvcCA9PT0gInRvcCIpIHsNCiAgICAgICAgICB0b3AgKz0gNzsNCiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1c3RvbUNoYXJ0LmNvbmYubGVnZW5kLnRvcCA9PT0gImJvdHRvbSIpIHsNCiAgICAgICAgICBib3R0b20gKz0gMTA7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGlmICh0b3AgIT09IDApIHsNCiAgICAgICAgZ3JpZC50b3AgPSB0b3AgKyAiJSI7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBncmlkLnRvcCA9ICI1JSI7DQogICAgICB9DQogICAgICBpZiAoYm90dG9tICE9PSAwKSB7DQogICAgICAgIGdyaWQuYm90dG9tID0gYm90dG9tICsgIiUiOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIGdyaWQ7DQogICAgfSwNCiAgICBnZXRUaXRsZVBvc2l0aW9uKCkgew0KICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hhcnQuY29uZi50aXRsZS50b3AgPT09ICJ0b3AiKSB7DQogICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUNoYXJ0LmNvbmYubGVnZW5kLnNob3cgJiYNCiAgICAgICAgICB0aGlzLmN1c3RvbUNoYXJ0LmNvbmYubGVnZW5kLnRvcCA9PT0gInRvcCINCiAgICAgICAgICA/ICIyMCINCiAgICAgICAgICA6ICJhdXRvIjsNCiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXN0b21DaGFydC5jb25mLnRpdGxlLnRvcCA9PT0gImJvdHRvbSIpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tQ2hhcnQuY29uZi5sZWdlbmQuc2hvdyAmJg0KICAgICAgICAgIHRoaXMuY3VzdG9tQ2hhcnQuY29uZi5sZWdlbmQudG9wID09PSAiYm90dG9tIg0KICAgICAgICAgID8gIjg0JSINCiAgICAgICAgICA6ICI4OCUiOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tQ2hhcnQuY29uZi50aXRsZS50b3A7DQogICAgICB9DQogICAgfSwNCiAgICBhZGp1c3RDaGF0VGl0bGUoZGF0YSwgb3B0aW9uKSB7DQogICAgICBvcHRpb24ubGVnZW5kLnRvcCA9IDMwOw0KICAgICAgb3B0aW9uLmdyaWQudG9wID0gODA7DQogICAgICBpZiAoZGF0YS5jb25mICYmIGRhdGEuY29uZi50aXRsZSAmJiBkYXRhLmNvbmYudGl0bGUuc3VidGV4dCkgew0KICAgICAgICBvcHRpb24ubGVnZW5kLnRvcCA9IDUwOw0KICAgICAgICBvcHRpb24uZ3JpZC50b3AgPSAxMDA7DQogICAgICB9DQogICAgfQ0KICB9DQp9Ow0K"},null]}