mirror of
https://github.com/alantang1977/hipy.git
synced 2024-11-22 11:33:08 +02:00
1 line
No EOL
15 KiB
JavaScript
1 line
No EOL
15 KiB
JavaScript
dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wwj+mprOW9seinhltWMl0nLCAvLyBjc3BfQXBwWXNWMgogICAgaG9zdDogJ2h0dHBzOi8vbWFzLnN6eXlkcy5jbi9hcGkucGhwL2FwcC8nLAogICAgdXJsOiAndmlkZW8/dGlkPWZ5Y2xhc3NmeWZpbHRlciZsaW1pdD0yMCZwZz1meXBhZ2UnLAogICAgZmlsdGVyX3VybDogJyZjbGFzcz17e2ZsLmNsYXNzfX0mYXJlYT17e2ZsLmFyZWF9fSZsYW5nPXt7ZmwubGFuZ319JmxldHRlcj17e2ZsLmxldHRlcn19JnllYXI9e3tmbC55ZWFyfX0mYnk9e3tmbC5ieX19JywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMlkzVzRhUnhUSDM0VnJYK3dTNTZONWxTb1hxRUs5aU91TFJLMFVSWlpzWXdnUXgyREx3YUhncjhZWTRob010dVBDVXVCbGRuYVh0K2l3Wjg0SFViMWF0VmF1dU9OM3pwN1pPV2VZODUvWnR3azc4ZnpIdDRtWDZUZUo1NG1mVmxLdlh5ZVdFcXVwWDlJYVZhSHBaYkthZjB1dC9Kb09uMXVkbWJPdGFhWTFNMnRJckMwWmE2V3VuemRXQStqejh6MHpFQVA2dkkyeXQxNHhQZ00wWnJIbGp1bzRKZ0NOMmR4Vmd5R09DVUJ4TkhFR2VsLytrK3NVOEgwQTZBdmE1MnI3d3ZnTTBQdUtWLzRJZlFiRVBQMzlJYzl6QnVScnZPTjVHcUM1dE0vZDhRbk9CWURpY252VDZoZU1BNkM0b3dzOWM0d0RpRk5QYi9QU3IreWlENEI4bWFLMytUdjZBQ2ozWVVsbCs1ZzdBUHFtaDN2ZXA0YnhHYUF4SysrQ2dvTmpBbEIrNDQ2Ly8xV05lcGdpTVQxUk9ncysweW9Da0c4bnAwclg2QU9nVlp5VTlScmdLZ0p3VmV2ZTRTNVZOUVR5YlUzOFB6RVRBMVNCMGE0L3JNOU5lTTYwOW1MMkpPeWkxS3QwU215aWVsZHRPM0UzMFZseldzM2hGQUNvME9kVnIzK0ZoUWJnVW5XOXdaaEtGUUpOZmJ5amFpT2NOQUF0ME0xSDlobWdNcjd2c2M4QXhSMDB2UG9seGdIUVBJKy9jSndCWHZTLzJHZUE1OUtWYytuT3hYM29LdWNjNHdBb2JxdWtLNlh5dUZlWUtaUEd4QysxL1VJVmt5SG1EWHppdlovb01OckR5UFJFOXM0ZDRyWXlJQmQ5SmJYNk15OTZjTlVPV3V0eEY3MDIwcy9qMEFCaUVkaG5nQmIyK294OUJtZ1JEa2Jxd3dHN21jVXlDVGVBV0Y3MkdSQi9HZUVERU1zck1nRVFCVlNkREJkd0JyS0FiOUtwVjJMWERHN2Q0U2htQVpOVzhwR3hoVCtGUGNuMnBMVGJiTGVsM1dLN0plejJEMlRYUDRYOUdkdWZTZnRUdGorVjlpZHNmeUx0ajluK1dOcVgyYjRzN1p5dkxmTzFPVjliNW10enZyYk0xK1o4YlptdnhmbGFNbCtMODdWa3ZoYm5aY204TE03TGtubFpuSmYrcWY4R0w1WVN5WWM2aUVUSVJwVDRnM2FwalR1VktjM0ptVEhGT2Vpb3pwMXlhQU1BeER4QTNIdlFpVHBBUkIxMG9pUXlTdERkd1NsTHBBRStKR1M5S21xUUFYcmZ4eHdmU2d3SStlU2FHWWpiV2YrUG5PYXkrbmxTK3hEaXlOUi9sZG9vV1l5VzRmdWxMMUtHSzEydFZPcndsSTVZeUF2WitrYTJGdkt6a0o5SStYbjBRUEl6WFMvNHpYWDhnd0xJOXJsMUxOcW5CdG95blVuUXplT1dBYUM0dmJaWHhKdUpBZjdUWjcxK24vNzBJZkJtdVhFSFpkb3NJWWgrTlAyTWN6RkFQdWRDZFk3UUIwRHZxMTJMT3gwQXhlMGZlN2QwSndlZ3VIN2Z5NWRjWjQvdlpuTW1xc1B0SDFxUXNBNEFORVp2TTlqWXhtaUE3eUFWdXYzclJrK1REa0gwSE4yRnVPZk1nSHlYVFYxWTlBRXNtdStpK1M2YTc3Zk5kL21CbW05VWc0MzZZT2huMnNFcE5tMEROT1pPeXkvak54a0Q1Q3NmK1pmMFFRMkFPOHI5SC9DQzhtR3dnL2NRQXpUbXlhbXEwVVlDaUhOUDhPcU8rQ2dJUU8rTCtDUVdkU2RTWFYybVczd2ZnUFExYm9SUEE5WHpiT3oralI4VERmQzk1RmpsYTNRdkNZSHVIczYxYXFOZ0dhQXhhMFd2aXNKamdPdlNVNU1EcWtzSTMrTitVUnU1RGwwRkFlTGNCZjVWR0JZbjlvVm9MRVFqdG1pcy9RTjFlZ1IwdXhvQUFBPT0nLAogICAgZGV0YWlsVXJsOiAnL2RldGFpbD92b2RfaWQ9ZnlpZCcsCiAgICBzZWFyY2hVcmw6ICcvc2VhcmNoP3RleHQ9KiomcGc9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnb2todHRwLzQuMS4wJ30sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgLy8g5YiG57G7562b6YCJIC9hcGkucGhwL2FwcC9uYXYgfHwgL3hnYXBwLnBocC92MS9uYXYgfHwgL2FwaS5waHAvdjEudm9kL3R5cGVzCiAgICBjbGFzc19uYW1lOiAn55S15b2xJueUteinhuWJpybnu7zoibom5Yqo5ryrJywKICAgIGNsYXNzX3VybDogJzEmMiYzJjQnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6IGBqczoKICAgICAgICBsZXQgcGxheV9VcmwgPSAnJzsKICAgICAgICBpZiAoL1xcLm0zdTh8XFwubXA0Ly50ZXN0KGlucHV0KSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiBpbnB1dCwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKC8sLy50ZXN0KGlucHV0KSAmJiAvdXJsPS8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zcGxpdCgndXJsPScpOwogICAgICAgICAgICBwbGF5X1VybCA9IGlucHV0WzBdLnNwbGl0KCcsJylbMF07CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICB1cmw6IGlucHV0WzFdLAogICAgICAgICAgICAgICAgcGxheVVybDogcGxheV9VcmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICgvdXJsPXxpZD0vLnRlc3QoaW5wdXQpKSB7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICB1cmw6IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpLnVybCwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKC95b3VrdXxpcWl5aXx2XFwucXFcXC5jb218cHB0dnxzb2h1fGxlXFwuY29tfDE5MDVcXC5jb218bWd0dnxiaWxpYmlsaXxpeGlndWEvLnRlc3QoaW5wdXQpKSB7CgkJCXBsYXlfVXJsID0gL2JpbGliaWxpLy50ZXN0KGlucHV0KSA/ICdodHRwczovL2p4LnhtZmx2LmNvbS8/dXJsPScgOiAnaHR0cHM6Ly9qeC43NzdqaWV4aS5jb20vcGxheWVyLz91cmw9JzsgLy8gdHlwZTDnmoRwYXJzZQoJCQkvLyBwbGF5X1VybCA9IC9iaWxpYmlsaS8udGVzdChpbnB1dCkgPyAnaHR0cHM6Ly9qeC54bWZsdi5jb20vP3VybD0nIDogJ2pzb246aHR0cDovL3BhbmRvd24ucHJvL2FwcC9ra2R5LnBocD91cmw9JzsgLy8gdHlwZTHnmoRwYXJzZeWPr+WKoCdqc29uOifnm7TmjqXop6PmnpB1cmwgKOmZpOS6huicguicnOeahCflvbHop4ZUVifvvIzlhbblroPnmoTlo7Pnmoblj6/nlKgpCgkJCWlucHV0ID0gewoJCQkJang6IDAsCgkJCQl1cmw6IGlucHV0LAoJCQkJcGxheVVybDogcGxheV9VcmwsCgkJCQlwYXJzZTogMSwKCQkJCWhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewoJCQkJCSd1c2VyLWFnZW50JzogJ01vemlsbGEvNS4wJywKCQkJCX0pLAoJCQl9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQKICAgICAgICB9CiAgICBgLAogICAgbGltaXQ6IDYsCiAgICAvLyDlm77niYfmnaXmupA6J0BSZWZlcmVyPWh0dHBzOi8vYXBpLmRvdWJhbi5jb20vQFVzZXItQWdlbnQ9TW96aWxsYS81LjAlMjAoV2luZG93cyUyME5UJTIwMTAuMDslMjBXaW42NDslMjB4NjQpJTIwQXBwbGVXZWJLaXQvNTM3LjM2JTIwKEtIVE1MLCUyMGxpa2UlMjBHZWNrbyklMjBDaHJvbWUvMTEzLjAuMC4wJTIwU2FmYXJpLzUzNy4zNicsCiAgICDmjqjojZA6IGBqczoKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIGxldCBqc29uZGF0YSA9IFtdOwogICAgICAgIGxldCB2aWRlb0xpc3QgPSBbXTsKICAgICAgICBpZiAoL3YxXFwudm9kLy50ZXN0KEhPU1QpKSB7CiAgICAgICAgICAgIGlmKEhPU1QuZW5kc1dpdGgoJy8nKSl7CiAgICAgICAgICAgICAgICBqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChIT1NUICsgJ3ZvZFBoYkFsbCcpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGpzb25kYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KEhPU1QgKyAnL3ZvZFBoYkFsbCcpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2aWRlb0xpc3QgPSBqc29uZGF0YS5kYXRhLmxpc3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYoSE9TVC5lbmRzV2l0aCgnLycpKXsKICAgICAgICAgICAgICAgIGpzb25kYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KEhPU1QgKyAnaW5kZXhfdmlkZW8nKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChIT1NUICsgJy9pbmRleF92aWRlbycpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2aWRlb0xpc3QgPSAveGdhcHAvLnRlc3QoSE9TVCkgPyBqc29uZGF0YS5kYXRhIDoganNvbmRhdGEubGlzdDsKICAgICAgICB9CiAgICAgICAgLy8gbG9nKCd2aWRlb0xpc3QgPT09PT09PT09PiAnK3N0cmluZ2lmeSh2aWRlb0xpc3QpKTsKICAgICAgICB2aWRlb0xpc3QuZm9yRWFjaCgoaXQsaWRleCkgPT4gewogICAgICAgICAgICBsZXQgdmxpc3QgPSAvdjFcXC52b2QvLnRlc3QoSE9TVCkgPyB2aWRlb0xpc3RbaWRleF0udm9kX2xpc3QgOiB2aWRlb0xpc3RbaWRleF0udmxpc3QgOwogICAgICAgICAgICB2bGlzdC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOml0LnZvZF9pZCwKICAgICAgICAgICAgICAgICAgICB0aXRsZTppdC52b2RfbmFtZSwKICAgICAgICAgICAgICAgICAgICBpbWc6aXQudm9kX3BpYy5zdGFydHNXaXRoKCdodHRwJykgPyBpdC52b2RfcGljIDogaXQudm9kX3BpYy5zdGFydHNXaXRoKCcvLycpID8gJ2h0dHBzOicgKyBpdC52b2RfcGljIDogaXQudm9kX3BpYy5zdGFydHNXaXRoKCcvJykgPyBnZXRIb21lKEhPU1QpICsgaXQudm9kX3BpYyA6IGdldEhvbWUoSE9TVCkgKyAnLycgKyBpdC52b2RfcGljLAogICAgICAgICAgICAgICAgICAgIGRlc2M6aXQudm9kX3JlbWFya3MsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgYCwKICAgIOS4gOe6pzogYGpzOgogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGV0IGpzb25kYXRhID0gW107CiAgICAgICAgbGV0IHZpZGVvTGlzdCA9IFtdOwogICAgICAgIGlmICgvdjFcXC52b2QvLnRlc3QoSE9TVCkpIHsKICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKCd2aWRlbycsJ3YxLnZvZCcpLnJlcGxhY2UoJ3RpZCcsJ3R5cGUnKS5yZXBsYWNlKCdwZz0nLCdwYWdlPScpOwogICAgICAgICAgICBqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpOwogICAgICAgICAgICB2aWRlb0xpc3QgPSBqc29uZGF0YS5kYXRhLmxpc3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy8nKyBpbnB1dC5zcGxpdCgnLycpWzRdOwogICAgICAgICAgICBqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpOwogICAgICAgICAgICB2aWRlb0xpc3QgPSBqc29uZGF0YS5saXN0IHx8IGpzb25kYXRhLmRhdGE7CiAgICAgICAgfQogICAgICAgIC8vIGxvZygndmlkZW9MaXN0ID09PT09PT09PT4gJytzdHJpbmdpZnkodmlkZW9MaXN0KSk7CiAgICAgICAgdmlkZW9MaXN0LmZvckVhY2goaXQgPT4gewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdXJsOml0LnZvZF9pZCwKICAgICAgICAgICAgICAgIHRpdGxlOml0LnZvZF9uYW1lLAogICAgICAgICAgICAgICAgaW1nOml0LnZvZF9waWMuc3RhcnRzV2l0aCgnaHR0cCcpID8gaXQudm9kX3BpYyA6IGl0LnZvZF9waWMuc3RhcnRzV2l0aCgnLy8nKSA/ICdodHRwczonICsgaXQudm9kX3BpYyA6IGl0LnZvZF9waWMuc3RhcnRzV2l0aCgnLycpID8gZ2V0SG9tZShIT1NUKSArIGl0LnZvZF9waWMgOiBnZXRIb21lKEhPU1QpICsgJy8nICsgaXQudm9kX3BpYywKICAgICAgICAgICAgICAgIGRlc2M6aXQudm9kX3JlbWFya3MsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIGAsCiAgICDkuoznuqc6IGBqczogCgkJaWYgKC92MVxcLnZvZC8udGVzdChIT1NUKSkgewoJCQlpbnB1dCA9IEhPU1QgKyAnLycrIGlucHV0LnNwbGl0KCcvJylbM107CgkJfSBlbHNlIHsKCQkJaW5wdXQgPSBIT1NUICsgJy8nKyBpbnB1dC5zcGxpdCgnLycpWzNdLnJlcGxhY2UoJ2RldGFpbCcsJ3ZpZGVvX2RldGFpbCcpLnJlcGxhY2UoJ3ZvZF9pZCcsJ2lkJyk7CgkJfQoJCXRyeSB7CgkJCWxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CgkJCWh0bWwgPSBKU09OLnBhcnNlKGh0bWwpOwoJCQlsZXQgbm9kZSA9IC94Z2FwcC8udGVzdChIT1NUKSA/IGh0bWwuZGF0YS52b2RfaW5mbyA6IGh0bWwuZGF0YTsKCQkJVk9EID0gewoJCQkJdm9kX2lkOiBub2RlLnZvZF9pZCwKCQkJCXZvZF9uYW1lOiBub2RlLnZvZF9uYW1lLAoJCQkJdm9kX3BpYzogbm9kZS52b2RfcGljLAoJCQkJdHlwZV9uYW1lOiBub2RlLnZvZF9jbGFzcywKCQkJCXZvZF95ZWFyOiBub2RlLnZvZF95ZWFyLAoJCQkJdm9kX2FyZWE6IG5vZGUudm9kX2FyZWEsCgkJCQl2b2RfcmVtYXJrczogbm9kZS52b2RfcmVtYXJrcywKCQkJCXZvZF9hY3Rvcjogbm9kZS52b2RfYWN0b3IsCgkJCQl2b2RfZGlyZWN0b3I6IG5vZGUudm9kX2RpcmVjdG9yLAoJCQkJdm9kX2NvbnRlbnQ6IG5vZGUudm9kX2NvbnRlbnQuc3RyaXAoKQoJCQl9OwoJCQlpZiAodHlwZW9mIHBsYXlfdXJsID09PSAndW5kZWZpbmVkJykgewoJCQkJdmFyIHBsYXlfdXJsID0gJycKCQkJfQogICAgICAgICAgICB2YXIgbmFtZSA9IHsKICAgICAgICAgICAgICAgICdiZnp5bTN1OCc6ICfmmrTpo44nLAogICAgICAgICAgICAgICAgJzEwODB6eWsnOiAn5LyY6LSoJywKICAgICAgICAgICAgICAgICdrdWFpa2FuJzogJ+W/q+eciycsCiAgICAgICAgICAgICAgICAnbHptM3U4JzogJ+mHj+WtkCcsCiAgICAgICAgICAgICAgICAnZmZtM3U4JzogJ+mdnuWHoScsCiAgICAgICAgICAgICAgICAnaGFpd2Fpa2FuJzogJ+a1t+WklueciycsCiAgICAgICAgICAgICAgICAnZ3NtM3U4JzogJ+WFiemAnycsCiAgICAgICAgICAgICAgICAnenVpZGFtM3U4JzogJ+acgOWkpycsCiAgICAgICAgICAgICAgICAnYmptM3U4JzogJ+WFq+aIkicsCiAgICAgICAgICAgICAgICAnc25tM3U4JzogJ+e0ouWwvCcsCiAgICAgICAgICAgICAgICAnd29sb25nJzogJ+WNp+m+mScsCiAgICAgICAgICAgICAgICAneGxtM3U4JzogJ+aWsOa1qicsCiAgICAgICAgICAgICAgICAneWhtM3U4JzogJ+aoseiKsScsCiAgICAgICAgICAgICAgICAndGttM3U4JzogJ+WkqeepuicsCiAgICAgICAgICAgICAgICAnanNtM3U4JzogJ+aegemAnycsCiAgICAgICAgICAgICAgICAnd2ptM3U4JzogJ+aXoOWwvScsCiAgICAgICAgICAgICAgICAnc2RtM3U4JzogJ+mXqueUtScsCiAgICAgICAgICAgICAgICAna2NtM3U4JzogJ+W/q+i9picsCiAgICAgICAgICAgICAgICAnamlueWluZ20zdTgnOiAn6YeR6bmwJywKICAgICAgICAgICAgICAgICdmc20zdTgnOiAn6aOe6YCfJywKICAgICAgICAgICAgICAgICd0cG0zdTgnOiAn5reY54mHJywKICAgICAgICAgICAgICAgICdsZW0zdTgnOiAn6bG85LmQJywKICAgICAgICAgICAgICAgICdkYm0zdTgnOiAn55m+5bqmJywKICAgICAgICAgICAgICAgICd0b21tM3U4JzogJ+eVquiMhCcsCiAgICAgICAgICAgICAgICAndWttM3U4JzogJ1XphbcnLAogICAgICAgICAgICAgICAgJ2lrbTN1OCc6ICfniLHlnaQnLAogICAgICAgICAgICAgICAgJ2huenltM3U4JzogJ+e6oueJm+i1hOa6kCcsCiAgICAgICAgICAgICAgICAnaG5tM3U4JzogJ+e6oueJmycsCiAgICAgICAgICAgICAgICAnNjh6eV9tM3U4JzogJzY4JywKICAgICAgICAgICAgICAgICdrZG0zdTgnOiAn6YW354K5JywKICAgICAgICAgICAgICAgICdiZHhtM3U4JzogJ+WMl+aWl+aYnycsCiAgICAgICAgICAgICAgICAncWhtM3U4JzogJ+Wlh+iZjicsCiAgICAgICAgICAgICAgICAnaGhtM3U4JzogJ+ixquWNjicsCiAgICAgICAgICAgICAgICAna2JtM3U4JzogJ+W/q+aSrScKICAgICAgICAgICAgfTsKICAgICAgICAgICAgbGV0IGVwaXNvZGVzID0gL3YxXFwudm9kLy50ZXN0KEhPU1QpP25vZGUudm9kX3BsYXlfbGlzdDpub2RlLnZvZF91cmxfd2l0aF9wbGF5ZXI7CgkJCWlmIChlcGlzb2RlcyAhPSAnJykgewoJCQkJbGV0IHBsYXlNYXAgPSB7fTsKCQkJCWxldCBhcnIgPSBbXTsKCQkJCWVwaXNvZGVzLmZvckVhY2goZXAgPT4gewoJCQkJCWxldCBmcm9tID0gW107CgkJCQkJaWYgKC92MVxcLnZvZC8udGVzdChIT1NUKSkgewoJCQkJCQlmcm9tID0gZXAucGxheWVyX2luZm8uZnJvbXx8ZXAucGxheWVyX2luZm8uc2hvd3x8ZXAuZnJvbXx8ZXAuc2hvdzsKCQkJCQl9IGVsc2UgewoJCQkJCQlmcm9tID0gZXAuY29kZXx8ZXAubmFtZTsKCQkJCQl9CgkJCQkJaWYgKCFwbGF5TWFwLmhhc093blByb3BlcnR5KGZyb20pKSB7CgkJCQkJCXBsYXlNYXBbZnJvbV0gPSBbXQoJCQkJCX0KCQkJCQkvLyBsZXQgcGFyc2VfYXBpID0gJyc7CgkJCQkJLy8gaWYgKC92MVxcLnZvZC8udGVzdChIT1NUKSkgewoJCQkJCS8vIAlwYXJzZV9hcGkgPSBlcC5wbGF5ZXJfaW5mby5wYXJzZSAhPSBudWxsID8gZXAucGxheWVyX2luZm8ucGFyc2UgOiBlcC5wbGF5ZXJfaW5mby5wYXJzZTI7CgkJCQkJLy8gCS8vIHBhcnNlX2FwaSA9IC8sLy50ZXN0KHBhcnNlX2FwaSkgPyBwYXJzZV9hcGkuc3BsaXQoJywnKVsxXSA6IHBhcnNlX2FwaTsKCQkJCQkvLyB9IGVsc2UgewoJCQkJCS8vIAlwYXJzZV9hcGkgPSBlcC5wYXJzZV9hcGk7CgkJCQkJLy8gfQoJCQkJCS8vIGxvZygncGFyc2VfYXBpID09PT09PT09PT4gJytwYXJzZV9hcGkpOwoJCQkJCS8vIGlmIChwYXJzZV9hcGkgIT0gbnVsbCAmJiAhL1xcLm0zdTh8XFwubXA0Ly50ZXN0KGVwLnVybCkpIHsKCQkJCQkvLyAJcGFyc2VfYXBpID0gcGFyc2VfYXBpLnJlcGxhY2VBbGwoJy4uJywnLicpIDsKCQkJCQkvLyAJZXAudXJsID0gZXAudXJsLnJlcGxhY2VBbGwoJyQnLCckJytwYXJzZV9hcGkpOwoJCQkJCS8vIH0KCQkJCQlpZiAoZnJvbSAhPSBudWxsKSBwbGF5TWFwW2Zyb21dLnB1c2goZXAudXJsKQoJCQkJfSk7CgkJCQlmb3IgKHZhciBrZXkgaW4gcGxheU1hcCkgewoJCQkJCWlmICgnYmZ6eW0zdTgnID09IGtleSkgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0sCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDEKCQkJCQkJfSkKCQkJCQl9IGVsc2UgaWYgKCcxMDgwenlrJyA9PSBrZXkpIHsKCQkJCQkJYXJyLnB1c2goewoJCQkJCQkJZmxhZzogbmFtZVtrZXldLAoJCQkJCQkJdXJsOiBwbGF5TWFwW2tleV0sCgkJCQkJCQlzb3J0OiAyCgkJCQkJCX0pCgkJCQkJfSBlbHNlIGlmICgna3VhaWthbicgPT0ga2V5KSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogMwoJCQkJCQl9KQoJCQkJCX0gZWxzZSBpZiAoJ2x6bTN1OCcgPT0ga2V5KSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogNAoJCQkJCQl9KQoJCQkJCX0gZWxzZSBpZiAoJ2ZmbTN1OCcgPT0ga2V5KSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogNQoJCQkJCQl9KQoJCQkJCX0gZWxzZSBpZiAoJ3NubTN1OCcgPT0ga2V5KSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogNgoJCQkJCQl9KQoJCQkJCX0gZWxzZSBpZiAoJ3FobTN1OCcgPT0ga2V5KSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogNwoJCQkJCQl9KQoJCQkJCX0gZWxzZSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSA/IG5hbWVba2V5XSA6IGtleSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogOAoJCQkJCQl9KQoJCQkJCX0KCQkJCX0KCQkJCWFyci5zb3J0KChhLCBiKSA9PiBhLnNvcnQgLSBiLnNvcnQpOwoJCQkJbGV0IHBsYXlGcm9tID0gW107CgkJCQlsZXQgcGxheUxpc3QgPSBbXTsKCQkJCWFyci5tYXAodmFsID0+IHsKCQkJCQlpZiAoIS91bmRlZmluZWQvLnRlc3QodmFsLmZsYWcpKSB7CgkJCQkJCXBsYXlGcm9tLnB1c2godmFsLmZsYWcpOwoJCQkJCQlwbGF5TGlzdC5wdXNoKHZhbC51cmwpOwoJCQkJCX0KCQkJCX0pCgkJCQlWT0Qudm9kX3BsYXlfZnJvbSA9IHBsYXlGcm9tLmpvaW4oJyQkJCcpOwoJCQkJVk9ELnZvZF9wbGF5X3VybCA9IHBsYXlMaXN0LmpvaW4oJyQkJCcpOwoJCQl9IGVsc2UgewoJCQkJVk9ELnZvZF9wbGF5X2Zyb20gPSBub2RlLnZvZF9wbGF5X2Zyb207CgkJCQlWT0Qudm9kX3BsYXlfdXJsID0gbm9kZS52b2RfcGxheV91cmw7CgkJCX0KCQl9IGNhdGNoIChlKSB7CgkJCWxvZygi6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOiIgKyBlLm1lc3NhZ2UpOwoJCX0KCWAsCiAgICDmkJzntKI6IGBqczoKCQlsZXQgZCA9IFtdOwoJCWxldCBqc29uZGF0YSA9IFtdOwoJCWxldCB2aWRlb0xpc3QgPSBbXTsKCQlpZiAoL3YxXFwudm9kLy50ZXN0KEhPU1QpKSB7CgkJCWlucHV0ID0gKEhPU1QgKyAnLycrIGlucHV0LnNwbGl0KCcvJylbM10pLnJlcGxhY2UoJy9zZWFyY2gnLCcnKS5yZXBsYWNlKCd0ZXh0PScsJ3dkPScpLnJlcGxhY2UoJ3BnPScsJ3BhZ2U9Jyk7CgkJCWpzb25kYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSk7CgkJCXZpZGVvTGlzdCA9IGpzb25kYXRhLmRhdGEubGlzdDsKCQl9IGVsc2UgewoJCQlpbnB1dCA9IEhPU1QgKyAnLycrIGlucHV0LnNwbGl0KCcvJylbM10KCQkJanNvbmRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKTsKCQkJdmlkZW9MaXN0ID0ganNvbmRhdGEubGlzdCB8fCBqc29uZGF0YS5kYXRhOwoJCX0KCQkvLyBsb2coJ3ZpZGVvTGlzdCA9PT09PT09PT0+ICcrc3RyaW5naWZ5KHZpZGVvTGlzdCkpOwoJCXZpZGVvTGlzdC5mb3JFYWNoKGl0ID0+IHsKCQkJZC5wdXNoKHsKCQkJCXVybDppdC52b2RfaWQsCgkJCQl0aXRsZTppdC52b2RfbmFtZSwKCQkJCWltZzppdC52b2RfcGljLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGl0LnZvZF9waWMgOiBpdC52b2RfcGljLnN0YXJ0c1dpdGgoJy8vJykgPyAnaHR0cHM6JyArIGl0LnZvZF9waWMgOiBpdC52b2RfcGljLnN0YXJ0c1dpdGgoJy8nKSA/IGdldEhvbWUoSE9TVCkgKyBpdC52b2RfcGljIDogZ2V0SG9tZShIT1NUKSArICcvJyArIGl0LnZvZF9waWMsCgkJCQlkZXNjOml0LnZvZF9yZW1hcmtzLAoJCQl9KTsKCQl9KTsKCQlzZXRSZXN1bHQoZCk7CglgLAp9 |