{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/babel-loader/lib/index.js!/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/cache-loader/dist/cjs.js??ref--1-0!/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/src/views/rail/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/src/views/rail/index.vue","mtime":1702017170931},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/babel.config.js","mtime":1702017170920},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/cache-loader/dist/cjs.js","mtime":1702017195495},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/babel-loader/lib/index.js","mtime":1702017196389},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/cache-loader/dist/cjs.js","mtime":1702017195495},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-rail/node_modules/vue-loader/lib/index.js","mtime":1702017196548}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgdXRpbHMsIFZNYXAsIFZUaWxlLCBWVmVjdG9yLCBWT3ZlcmxheSwgVkRyYXcgfSBmcm9tICJ2LW9sLW1hcCI7CmltcG9ydCAidi1vbC1tYXAvbGliL3Ytb2wtbWFwLmNzcyI7CmltcG9ydCBtYXBUb29sYmFyIGZyb20gIkAvY29tcG9uZW50cy9tYXBUb29sYmFyL2luZGV4LnZ1ZSI7CmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tICJlbGVtZW50LXVpIjsKaW1wb3J0IHsgZGVsZXRlUmFpbEFjY2VzcywgZ2V0UmFpbERldGFpbEFjY2Vzcywgc2VhcmNoUmFpbEFjY2VzcyB9IGZyb20gIkAvYXBpL3NlY3VyaXR5LXN0YXRpb24tcmFpbHMtY29udHJvbGxlciI7CmltcG9ydCB7IHRleHRTbGljZSB9IGZyb20gIkAvYXBpL2NvbW1vbiI7CmltcG9ydCBPdmVybGF5U3RhdGlvbiBmcm9tICJAL2NvbXBvbmVudHMvbWFwT3ZlcmxheS9zdGF0aW9uIjsKaW1wb3J0IE92ZXJsYXlDb21wYW55IGZyb20gIkAvY29tcG9uZW50cy9tYXBPdmVybGF5L2NvbXBhbnkiOwppbXBvcnQgeyBnZXRDb21wYW55RGV0YWlsIH0gZnJvbSAiQC9hcGkvY29tcGFueS1jb250cm9sbGVyIjsKaW1wb3J0IHsgZ2V0RW1wbG95ZWVzIH0gZnJvbSAiQC9hcGkvZW1wbG95ZWUtY29udHJvbGxlciI7CmltcG9ydCBPdmVybGF5U3RhdGlvbkVtcGxveWVlcyBmcm9tICJAL2NvbXBvbmVudHMvbWFwT3ZlcmxheS9zdGF0aW9uRW1wbG95ZWVzIjsKaW1wb3J0IGVsZWN0cm9uaWNGZW5jZURpYWxvZyBmcm9tICJAL3ZpZXdzL3JhaWwvY29tcG9uZW50cy9lbGVjdHJvbmljRmVuY2UudnVlIjsKaW1wb3J0IGVsZWN0cm9uaWNGZW5jZUVkaXREaWFsb2cgZnJvbSAiQC9jb21wb25lbnRzL2VsZWN0cm9uaWNGZW5jZUVkaXQudnVlIjsKaW1wb3J0IGVsZWN0cm9uaWNGZW5jZVBlb3BsZSBmcm9tICJAL2NvbXBvbmVudHMvZWxlY3Ryb25pY0ZlbmNlUGVvcGxlLnZ1ZSI7CmltcG9ydCBlbGVjdHJvbmljRmVuY2VTdGF0aW9uRGlhbG9nIGZyb20gIkAvY29tcG9uZW50cy9lbGVjdHJvbmljRmVuY2VTdGF0aW9uLnZ1ZSI7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAicmFpbCIsCiAgY29tcG9uZW50czogewogICAgVk1hcCwKICAgIFZUaWxlLAogICAgVlZlY3RvciwKICAgIFZPdmVybGF5LAogICAgVkRyYXcsCiAgICBtYXBUb29sYmFyLAogICAgT3ZlcmxheVN0YXRpb24sCiAgICBPdmVybGF5Q29tcGFueSwKICAgIE92ZXJsYXlTdGF0aW9uRW1wbG95ZWVzLAogICAgZWxlY3Ryb25pY0ZlbmNlRGlhbG9nLAogICAgZWxlY3Ryb25pY0ZlbmNlRWRpdERpYWxvZywKICAgIGVsZWN0cm9uaWNGZW5jZVN0YXRpb25EaWFsb2csCiAgICBlbGVjdHJvbmljRmVuY2VQZW9wbGUKICB9LAogIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICB2aWV3OiB7CiAgICAgICAgY2l0eTogIuWOpumXqCIsCiAgICAgICAgem9vbTogMTIKICAgICAgfSwKICAgICAgdGlsZVR5cGU6ICJHRCIsCiAgICAgIGludGVyYWN0aW9uczogewogICAgICAgIERyYWdSb3RhdGVBbmRab29tOiB0cnVlLAogICAgICAgIGRvdWJsZUNsaWNrWm9vbTogZmFsc2UKICAgICAgfSwKICAgICAgY29udHJvbHM6IHsKICAgICAgICB6b29tOiB0cnVlLAogICAgICAgIHpvb21PcHRpb25zOiB7CiAgICAgICAgICBjbGFzc05hbWU6ICJvbC16b29tLWN1c3RvbSIKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHN0YXRpb25JZDogIiIsCiAgICAgIG1hcFRvb2xMaXN0OiBbImZlbmNlIiwgInRpbGUiXSwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgb3JpZ2luRGF0YTogW10sCiAgICAgIHN0YXRpb246IHt9LAogICAgICBpbmZvOiB7fSwKICAgICAgcmV0dXJuV2luOiB7fSwKICAgICAgbGF5ZXJzOiB7CiAgICAgICAgLy8g6am75Yuk54K5CiAgICAgICAgc3RhdGlvbkxheWVyOiB7CiAgICAgICAgICBmZWF0dXJlczogW10sCiAgICAgICAgICBvdmVybGF5OiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiB1bmRlZmluZWQsCiAgICAgICAgICAgIG9mZnNldDogWzAsIC0zNl0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIC8vIOS8geS4mgogICAgICAgIGNvbXBhbnlMYXllcjogewogICAgICAgICAgZmVhdHVyZXM6IFtdLAogICAgICAgICAgb3ZlcmxheTogewogICAgICAgICAgICBwb3NpdGlvbjogdW5kZWZpbmVkLAogICAgICAgICAgICBvZmZzZXQ6IFswLCAtMzZdCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAvLyDpqbvli6TngrnkurrlkZgKICAgICAgICBzdGF0aW9uRW1wbG95ZWVzTGF5ZXI6IHsKICAgICAgICAgIGZlYXR1cmVzOiBbXSwKICAgICAgICAgIG92ZXJsYXk6IHsKICAgICAgICAgICAgcG9zaXRpb246IHVuZGVmaW5lZCwKICAgICAgICAgICAgb2Zmc2V0OiBbMCwgLTM2XQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgLy8g55S15a2Q5Zu05qCPCiAgICAgICAgcmFpbExheWVyOiB7CiAgICAgICAgICBmZWF0dXJlczogW10sCiAgICAgICAgICBjbHVzdGVyOiB7CiAgICAgICAgICAgIGRpc3RhbmNlOiAxMTAsCiAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgY2lyY2xlOiB7CiAgICAgICAgICAgICAgICByYWRpdXM6IDUwLAogICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICBjb2xvcjogIiMwRTcxRkYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB0ZXh0OiB7CiAgICAgICAgICAgICAgICBmb250OiAiMjJweCBTb3VyY2UgSGFuIFNhbnMgQ04tTWVkaXVtLCBTb3VyY2UgSGFuIFNhbnMgQ04iLAogICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICBjb2xvcjogIiNGRkZGRkYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgIGNvbG9yOiAicmdiYSgyMzAsMTYyLDYwLDAuMikiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0cm9rZTogewogICAgICAgICAgICAgIGNvbG9yOiAiI0U2QTIzQyIsCiAgICAgICAgICAgICAgd2lkdGg6IDIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIG92ZXJsYXk6IHsKICAgICAgICAgICAgcG9zaXRpb246IHVuZGVmaW5lZCwKICAgICAgICAgICAgb2Zmc2V0OiBbMCwgLTM2XQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgaXNFbGVjdHJvbmljRmVuY2VFZGl0RGlhbG9nOiBmYWxzZSwKICAgICAgaXNFbGVjdHJvbmljRmVuY2VTdGF0aW9uRGlhbG9nOiBmYWxzZSwKICAgICAgaXNFbGVjdHJvbmljRmVuY2VEaWFsb2c6IGZhbHNlLAogICAgICBpc0VsZWN0cm9uaWNGZW5jZVBlb3BsZTogZmFsc2UsCiAgICAgIGVsZWN0cm9uaWNGZW5jZURhdGE6IFtdLAogICAgICBlbGVjdHJvbmljRmVuY2VJbmZvOiB7fSwKICAgICAgZHJhd1R5cGU6ICIiLAogICAgICBlbGVjdHJvbmljRmVuY2VQZW9wbGVMaXN0OiBbXSwKICAgICAgcGVvcGxlU3RhdGlvbk5hbWU6ICIiCiAgICB9OwogIH0sCiAgbWV0aG9kczogewogICAgLyoqCiAgICAgKiBA6am75Yuk54K55Zu+5bGC54K55Ye75LqL5Lu2CiAgICAgKiAx44CB5YWI5Yik5pat54K55Ye75L2N572u5piv5ZCm5pyJ6am75Yuk54K5CiAgICAgKiAy44CB6I635Y+W54K55bGe5oCnaWQKICAgICAqIDPjgIHpgJrov4dpZOafpeaJvumpu+WLpOeCueivpuaDhQogICAgICogNOOAgeaKiuivpuaDheaUvuWIsGluZm/lj5jph4/nlKjmnaXlsZXnjrDor6bmg4XvvIhzaG93U3RhdGlvbkluZm/vvIkKICAgICAqIDXjgIHmiornu4/nuqzluqbotYvlgLznu5lwb3NpdGlvbuWxnuaAp+WxleekuuW8ueahhgogICAgICogQHBhcmFtIGV2dAogICAgICogQHBhcmFtIGZlYXR1cmUKICAgICAqLwogICAgY2xpY2tTdGF0aW9uKGV2dCwgZmVhdHVyZSkgewogICAgICBpZiAoZmVhdHVyZSkgewogICAgICAgIHRoaXMuc2hvd1N0YXRpb25JbmZvKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEDkvIHkuJrlm77lsYLngrnlh7vkuovku7YKICAgICAqIEBwYXJhbSBldnQKICAgICAqIEBwYXJhbSBmZWF0dXJlCiAgICAgKi8KICAgIGNsaWNrQ29tcGFueShldnQsIGZlYXR1cmUpIHsKICAgICAgaWYgKGZlYXR1cmUpIHsKICAgICAgICBjb25zb2xlLmxvZyhmZWF0dXJlKTsKICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGZlYXR1cmUuZ2V0KCJmZWF0dXJlcyIpOwogICAgICAgIGlmIChmZWF0dXJlcyAmJiBmZWF0dXJlcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgIGNvbnN0IGNvbXBhbnkgPSBmZWF0dXJlc1swXTsKICAgICAgICAgIGNvbnN0IGluZm8gPSBjb21wYW55LmdldCgicHJvcHMiKTsKICAgICAgICAgIGNvbnNvbGUubG9nKGluZm8pOwogICAgICAgICAgdGhpcy5zaG93Q29tcGFueUluZm8oewogICAgICAgICAgICBpbmZvCiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8g5aaC5p6c5piv6IGa5ZCI54K55bCx5LiL6ZK75LiA57qnCiAgICAgICAgICBjb25zdCB6b29tID0gdGhpcy4kcmVmcy5tYXAubWFwLmdldFZpZXcoKS5nZXRab29tKCkgKyAxOwogICAgICAgICAgY29uc3QgY2VudGVyID0gZXZ0LmNvb3JkaW5hdGU7CiAgICAgICAgICB0aGlzLiRyZWZzLm1hcC5wYW5Ubyh7CiAgICAgICAgICAgIHpvb20sCiAgICAgICAgICAgIGNlbnRlcgogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBA6am75Yuk54K56K+m5oOFCiAgICAgKi8KICAgIHNob3dTdGF0aW9uSW5mbygpIHsKICAgICAgdGhpcy5jbGVhck1hcCgpOwogICAgICBjb25zdCB7CiAgICAgICAgc3VwZXJ2aXNlRGVwYXJ0TmFtZSwKICAgICAgICBhZGRyZXNzLAogICAgICAgIGxvbmdpdHVkZSwKICAgICAgICBsYXRpdHVkZSwKICAgICAgICBzdGF0aW9uVHlwZXMKICAgICAgfSA9IHRoaXMuc3RhdGlvbjsKICAgICAgY29uc3QgW3sKICAgICAgICBtYXBJY29uCiAgICAgIH1dID0gc3RhdGlvblR5cGVzOwogICAgICBpZiAodGhpcy5sYXllcnMuc3RhdGlvbkxheWVyLmZlYXR1cmVzLmxlbmd0aCA8PSAwKSB7CiAgICAgICAgdGhpcy5sYXllcnMuc3RhdGlvbkxheWVyLmZlYXR1cmVzID0gW3sKICAgICAgICAgIGNvb3JkaW5hdGVzOiBbTnVtYmVyKGxvbmdpdHVkZSksIE51bWJlcihsYXRpdHVkZSldLAogICAgICAgICAgY29udmVydDogImdkLTg0IiwKICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgIGljb246IHsKICAgICAgICAgICAgICBzcmM6IG1hcEljb24sCiAgICAgICAgICAgICAgc2NhbGU6IDAuNQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgcHJvcHM6IHRoaXMuc3RhdGlvbgogICAgICAgIH1dOwogICAgICB9CiAgICAgIHRoaXMuaW5mbyA9IHsKICAgICAgICAuLi50aGlzLnN0YXRpb24sCiAgICAgICAgc3VwZXJ2aXNlRGVwYXJ0TmFtZVNsaWNlOiB0ZXh0U2xpY2Uoc3VwZXJ2aXNlRGVwYXJ0TmFtZSksCiAgICAgICAgYWRkcmVzc1NsaWNlOiB0ZXh0U2xpY2UoYWRkcmVzcykKICAgICAgfTsKICAgICAgLyoqCiAgICAgICAqIEDlvLnmoYbkvY3nva7ovazpq5jlvrfovaw4NAogICAgICAgKi8KICAgICAgdGhpcy5sYXllcnMuc3RhdGlvbkxheWVyLm92ZXJsYXkucG9zaXRpb24gPSB1dGlscy5jb252ZXJ0Q29vcmRpbmF0ZShbTnVtYmVyKGxvbmdpdHVkZSksIE51bWJlcihsYXRpdHVkZSldLCAiZ2QtODQiKTsKICAgICAgdGhpcy4kcmVmcy5tYXAucGFuVG8oewogICAgICAgIGNlbnRlcjogdGhpcy5sYXllcnMuc3RhdGlvbkxheWVyLm92ZXJsYXkucG9zaXRpb24KICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBA6am75Yuk54K55by55qGG54K55Ye75YWz6ZetCiAgICAgKi8KICAgIGNsb3NlU3RhdGlvbkluZm8oKSB7CiAgICAgIHRoaXMubGF5ZXJzLnN0YXRpb25MYXllci5vdmVybGF5LnBvc2l0aW9uID0gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogQOS8geS4muivpuaDhQogICAgICogQHBhcmFtIGluZm8KICAgICAqIEBwYXJhbSBpbmZvVHlwZQogICAgICovCiAgICBzaG93Q29tcGFueUluZm8oewogICAgICBpbmZvLAogICAgICBpbmZvVHlwZQogICAgfSkgewogICAgICBjb25zb2xlLmxvZygiY29tcGFueSIsIGluZm8pOwogICAgICBsZXQgewogICAgICAgIG9yZ2FuaXphdGlvbklkCiAgICAgIH0gPSBpbmZvOwogICAgICBnZXRDb21wYW55RGV0YWlsKG9yZ2FuaXphdGlvbklkKS50aGVuKGNvbXBhbnkgPT4gewogICAgICAgIGNvbnN0IHsKICAgICAgICAgIHJlZ2lzdGVyQWRkcmVzcywKICAgICAgICAgIGxvbmdpdHVkZSwKICAgICAgICAgIGxhdGl0dWRlCiAgICAgICAgfSA9IGNvbXBhbnk7CiAgICAgICAgY29uc29sZS5sb2coImNvbXBhbnkiLCBjb21wYW55KTsKICAgICAgICB0aGlzLmluZm8gPSB7CiAgICAgICAgICAuLi5jb21wYW55LAogICAgICAgICAgcmVnaXN0ZXJBZGRyZXNzU2xpY2U6IHRleHRTbGljZShyZWdpc3RlckFkZHJlc3MpCiAgICAgICAgfTsKICAgICAgICBpZiAoaW5mb1R5cGUpIHsKICAgICAgICAgIHRoaXMuY2xlYXJNYXAoKTsKICAgICAgICAgIHRoaXMuaGlkZUZlbmNlVGFibGUoKTsKICAgICAgICAgIHRoaXMucmV0dXJuV2luID0gewogICAgICAgICAgICBpbmZvLAogICAgICAgICAgICBpbmZvVHlwZQogICAgICAgICAgfTsKICAgICAgICAgIHRoaXMubGF5ZXJzLmNvbXBhbnlMYXllci5mZWF0dXJlcyA9IFt7CiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbTnVtYmVyKGxvbmdpdHVkZSksIE51bWJlcihsYXRpdHVkZSldLAogICAgICAgICAgICBjb252ZXJ0OiAiZ2QtODQiLAogICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgIGljb246IHsKICAgICAgICAgICAgICAgIHNyYzogcmVxdWlyZSgiQC9hc3NldHMvaW1hZ2VzL21hcFNlYXJjaC/lhazlj7gucG5nIikKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByb3BzOiBjb21wYW55CiAgICAgICAgICB9XTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogQOW8ueahhuS9jee9rui9rOmrmOW+t+i9rDg0CiAgICAgICAgICovCiAgICAgICAgdGhpcy5sYXllcnMuY29tcGFueUxheWVyLm92ZXJsYXkucG9zaXRpb24gPSB1dGlscy5jb252ZXJ0Q29vcmRpbmF0ZShbTnVtYmVyKGxvbmdpdHVkZSksIE51bWJlcihsYXRpdHVkZSldLCAiZ2QtODQiKTsKICAgICAgICB0aGlzLiRyZWZzLm1hcC5wYW5Ubyh7CiAgICAgICAgICBjZW50ZXI6IHRoaXMubGF5ZXJzLmNvbXBhbnlMYXllci5vdmVybGF5LnBvc2l0aW9uCiAgICAgICAgfSk7CiAgICAgIH0pLmNhdGNoKGVyciA9PiB7CiAgICAgICAgY29uc29sZS5sb2coZXJyKTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBA5LyB5Lia5by55qGG54K55Ye75YWz6ZetCiAgICAgKi8KICAgIGNsb3NlQ29tcGFueUluZm8oKSB7CiAgICAgIHRoaXMucmV0dXJuV2luID0ge307CiAgICAgIHRoaXMubGF5ZXJzLmNvbXBhbnlMYXllci5vdmVybGF5LnBvc2l0aW9uID0gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogQOmpu+WLpOeCueS6uuWRmOivpuaDhQogICAgICogQHBhcmFtIGluZm8KICAgICAqIEBwYXJhbSBpbmZvVHlwZQogICAgICovCiAgICBzaG93U3RhdGlvbkVtcGxveWVlc0luZm8oewogICAgICBpbmZvLAogICAgICBpbmZvVHlwZQogICAgfSkgewogICAgICBjb25zb2xlLmxvZygic2hvd1N0YXRpb25FbXBsb3llZXNJbmZvLSIgKyBpbmZvVHlwZSwgaW5mbyk7CiAgICAgIGxldCB7CiAgICAgICAgaWQKICAgICAgfSA9IGluZm87CiAgICAgIGdldEVtcGxveWVlcyh7CiAgICAgICAgcGFnZUluZGV4OiAxLAogICAgICAgIHBhZ2VTaXplOiAxMDAwLAogICAgICAgIHNlY3VyaXR5U3RhdGlvbklkOiBpZCwKICAgICAgICBzZWFyY2hNb2RlbDogInNlY3VyaXR5U3RhdGlvbiIKICAgICAgfSkudGhlbihyZXMgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCJzdGF0aW9uRW1wbG95ZWVzIiwgcmVzKTsKICAgICAgICBjb25zb2xlLmxvZygic3RhdGlvbiIsIGluZm8pOwogICAgICAgIGluZm9bInN0YXRpb25FbXBsb3llZXMiXSA9IFsuLi5yZXNdLm1hcCh4ID0+IHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIC4uLngsCiAgICAgICAgICAgIGlzUGhvbmU6IGZhbHNlCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRoaXMuaW5mbyA9IHsKICAgICAgICAgIC4uLnt9LAogICAgICAgICAgLi4uaW5mbwogICAgICAgIH07CiAgICAgICAgY29uc29sZS5sb2coImluZm8iLCB0aGlzLmluZm8pOwogICAgICAgIGlmIChpbmZvVHlwZSkgewogICAgICAgICAgdGhpcy5jbGVhck1hcCgpOwogICAgICAgICAgdGhpcy5oaWRlRmVuY2VUYWJsZSgpOwogICAgICAgICAgdGhpcy5yZXR1cm5XaW4gPSB7CiAgICAgICAgICAgIGluZm8sCiAgICAgICAgICAgIGluZm9UeXBlCiAgICAgICAgICB9OwogICAgICAgICAgdGhpcy5sYXllcnMuc3RhdGlvbkVtcGxveWVlc0xheWVyLmZlYXR1cmVzID0gW3sKICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFtOdW1iZXIoaW5mby5sb25naXR1ZGUpLCBOdW1iZXIoaW5mby5sYXRpdHVkZSldLAogICAgICAgICAgICBjb252ZXJ0OiAiZ2QtODQiLAogICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgIGljb246IHsKICAgICAgICAgICAgICAgIHNyYzogcmVxdWlyZSgiQC9hc3NldHMvaW1hZ2VzL21hcFNlYXJjaC/lnKjlspdf5L+d5a6J5ZGYLnBuZyIpCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBwcm9wczogaW5mbwogICAgICAgICAgfV07CiAgICAgICAgICBpZiAoaW5mb1R5cGUgPT09ICJyYWlsIikgewogICAgICAgICAgICBpbmZvWyJuYW1lIl0gPSBpbmZvLnN0YXRpb25OYW1lOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBA5by55qGG5L2N572u6L2s6auY5b636L2sODQKICAgICAgICAgKi8KICAgICAgICB0aGlzLmxheWVycy5zdGF0aW9uRW1wbG95ZWVzTGF5ZXIub3ZlcmxheS5wb3NpdGlvbiA9IHV0aWxzLmNvbnZlcnRDb29yZGluYXRlKFtOdW1iZXIoaW5mby5sb25naXR1ZGUpLCBOdW1iZXIoaW5mby5sYXRpdHVkZSldLCAiZ2QtODQiKTsKICAgICAgICB0aGlzLiRyZWZzLm1hcC5wYW5Ubyh7CiAgICAgICAgICAvLyB6b29tOiAxMywKICAgICAgICAgIC8vIGZseVpvb206IDgsCiAgICAgICAgICBjZW50ZXI6IHRoaXMubGF5ZXJzLnN0YXRpb25FbXBsb3llZXNMYXllci5vdmVybGF5LnBvc2l0aW9uCiAgICAgICAgfSk7CiAgICAgIH0pLmNhdGNoKGVyciA9PiB7CiAgICAgICAgY29uc29sZS5sb2coZXJyKTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBA6am75Yuk54K55Lq65ZGY5Zu+5bGC54K55Ye75LqL5Lu2CiAgICAgKiBAcGFyYW0gZXZ0CiAgICAgKiBAcGFyYW0gZmVhdHVyZQogICAgICovCiAgICBjbGlja1N0YXRpb25FbXBsb3llZXMoZXZ0LCBmZWF0dXJlKSB7CiAgICAgIGlmIChmZWF0dXJlKSB7CiAgICAgICAgY29uc29sZS5sb2coImNsaWNrU3RhdGlvbkVtcGxveWVlcy1mZWF0dXJlIiwgZmVhdHVyZSk7CiAgICAgICAgY29uc3Qgc3RhdGlvbnMgPSBmZWF0dXJlLmdldCgiZmVhdHVyZXMiKTsKICAgICAgICBpZiAoc3RhdGlvbnMgJiYgc3RhdGlvbnMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICBjb25zdCBzdGF0aW9uID0gc3RhdGlvbnNbMF07CiAgICAgICAgICBjb25zdCBpbmZvID0gc3RhdGlvbi5nZXQoInByb3BzIik7CiAgICAgICAgICB0aGlzLnNob3dTdGF0aW9uRW1wbG95ZWVzSW5mbyh7CiAgICAgICAgICAgIGluZm8KICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoZmVhdHVyZS5nZXQoInByb3BzIikpIHsKICAgICAgICAgICAgY29uc3QgaW5mbyA9IGZlYXR1cmUuZ2V0KCJwcm9wcyIpOwogICAgICAgICAgICB0aGlzLnNob3dTdGF0aW9uRW1wbG95ZWVzSW5mbyh7CiAgICAgICAgICAgICAgaW5mbwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIOWmguaenOaYr+iBmuWQiOeCueWwseS4i+mSu+S4gOe6pwogICAgICAgICAgICBjb25zdCB6b29tID0gdGhpcy4kcmVmcy5tYXAubWFwLmdldFZpZXcoKS5nZXRab29tKCkgKyAxOwogICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBldnQuY29vcmRpbmF0ZTsKICAgICAgICAgICAgdGhpcy4kcmVmcy5tYXAucGFuVG8oewogICAgICAgICAgICAgIHpvb20sCiAgICAgICAgICAgICAgY2VudGVyCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogQOmpu+WLpOeCueS6uuaVsOW8ueahhueCueWHu+WFs+mXrQogICAgICovCiAgICBjbG9zZVN0YXRpb25FbXBsb3llZXNJbmZvKCkgewogICAgICB0aGlzLnJldHVybldpbiA9IHt9OwogICAgICB0aGlzLmxheWVycy5zdGF0aW9uRW1wbG95ZWVzTGF5ZXIub3ZlcmxheS5wb3NpdGlvbiA9IHVuZGVmaW5lZDsKICAgIH0sCiAgICAvKioKICAgICAqIEDnlLXlrZDlm7TmoI/lm77lsYLngrnlh7vkuovku7YKICAgICAqIEBwYXJhbSBldnQKICAgICAqIEBwYXJhbSBmZWF0dXJlCiAgICAgKi8KICAgIGNsaWNrUmFpbChldnQsIGZlYXR1cmUpIHsKICAgICAgaWYgKGZlYXR1cmUpIHsKICAgICAgICBjb25zb2xlLmxvZyhmZWF0dXJlKTsKICAgICAgICBjb25zdCByYWlscyA9IGZlYXR1cmUuZ2V0KCJmZWF0dXJlcyIpOwogICAgICAgIGlmIChyYWlscyAmJiByYWlscy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgIHRoaXMuc2hvd1JhaWxJbmZvRnJvbUxpc3QgPSBmYWxzZTsKICAgICAgICAgIGNvbnN0IHJhaWwgPSByYWlsc1swXTsKICAgICAgICAgIGNvbnN0IGluZm8gPSByYWlsLmdldCgicHJvcHMiKTsKICAgICAgICAgIGNvbnNvbGUubG9nKCJjbGlja1JhaWxJbmZvIiwgaW5mbyk7CiAgICAgICAgICB0aGlzLnNob3dSYWlsSW5mbyh7CiAgICAgICAgICAgIGluZm8KICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoZmVhdHVyZS5nZXQoInByb3BzIikpIHsKICAgICAgICAgICAgdGhpcy5zaG93UmFpbEluZm9Gcm9tTGlzdCA9IGZhbHNlOwogICAgICAgICAgICBjb25zdCBpbmZvID0gZmVhdHVyZS5nZXQoInByb3BzIik7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJjbGlja1JhaWxJbmZvIiwgaW5mbyk7CiAgICAgICAgICAgIHRoaXMuc2hvd1JhaWxJbmZvKHsKICAgICAgICAgICAgICBpbmZvCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8g5aaC5p6c5piv6IGa5ZCI54K55bCx5LiL6ZK75LiA57qnCiAgICAgICAgICAgIGNvbnN0IHpvb20gPSB0aGlzLiRyZWZzLm1hcC5tYXAuZ2V0VmlldygpLmdldFpvb20oKSArIDE7CiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IGV2dC5jb29yZGluYXRlOwogICAgICAgICAgICB0aGlzLiRyZWZzLm1hcC5wYW5Ubyh7CiAgICAgICAgICAgICAgem9vbSwKICAgICAgICAgICAgICBjZW50ZXIKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBA55S15a2Q5Zu05qCP6K+m5oOFCiAgICAgKiBAcGFyYW0gaW5mbwogICAgICogQHBhcmFtIGluZm9UeXBlCiAgICAgKi8KICAgIHNob3dSYWlsSW5mbyh7CiAgICAgIGluZm8sCiAgICAgIGluZm9UeXBlCiAgICB9KSB7CiAgICAgIC8vIHRoaXMubGF5ZXJzLnJhaWxMYXllci5mZWF0dXJlcyA9IFtdOwogICAgICBnZXRSYWlsRGV0YWlsQWNjZXNzKGluZm8uaWQpLnRoZW4ocmVzID0+IHsKICAgICAgICBjb25zb2xlLmxvZygicmFpbHJlcyIsIHJlcyk7CiAgICAgICAgY29uc29sZS5sb2coInJhaWxpbmZvIiwgaW5mbyk7CiAgICAgICAgY29uc3QgewogICAgICAgICAgaWQsCiAgICAgICAgICBzaGFwZWRMb2NhdGlvbgogICAgICAgIH0gPSBpbmZvOwogICAgICAgIGNvbnN0IHsKICAgICAgICAgIGNvbXBhbnlOYW1lLAogICAgICAgICAgcmFpbFNoYXBlVHlwZQogICAgICAgIH0gPSByZXM7CiAgICAgICAgdGhpcy5pbmZvID0gewogICAgICAgICAgLi4ucmVzLAogICAgICAgICAgY29tcGFueU5hbWVTbGljZTogdGV4dFNsaWNlKGNvbXBhbnlOYW1lKSwKICAgICAgICAgIHNoYXBlZExvY2F0aW9uLAogICAgICAgICAgLy/lkI7nq6/kvKDlgLzmnInpl67popgKICAgICAgICAgIGlkIC8v5ZCO56uv5Lyg5YC85pyJ6Zeu6aKYCiAgICAgICAgfTsKCiAgICAgICAgaWYgKGluZm9UeXBlKSB7CiAgICAgICAgICB0aGlzLmNsZWFyTWFwKCk7CiAgICAgICAgICB0aGlzLmhpZGVGZW5jZVRhYmxlKCk7CiAgICAgICAgICB0aGlzLnJldHVybldpbiA9IHsKICAgICAgICAgICAgaW5mbywKICAgICAgICAgICAgaW5mb1R5cGUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmIChyYWlsU2hhcGVUeXBlICYmIHJhaWxTaGFwZVR5cGUgPT09ICJDaXJjbGUiKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygiQ2lyY2xlIiwgcmVzLnNoYXBlZExvY2F0aW9uKTsKICAgICAgICAgIGNvbnN0IGZlYXR1cmUgPSB7CiAgICAgICAgICAgIHR5cGU6ICJjaXJjbGUiLAogICAgICAgICAgICAvLyBjZW50ZXI6IFsxMTguMDUxODc2LCAyNC42MDc0NTNdLAogICAgICAgICAgICAvLyByYWRpdXM6IDI3MiwKICAgICAgICAgICAgY29udmVydDogImdkLTg0IiwKICAgICAgICAgICAgY2VudGVyOiBbcmVzLnNoYXBlZExvY2F0aW9uLmdlb3NbMF0ubG9uLCByZXMuc2hhcGVkTG9jYXRpb24uZ2Vvc1swXS5sYXRdLAogICAgICAgICAgICByYWRpdXM6IHJlcy5zaGFwZWRMb2NhdGlvbi5yYWRpdXMsCiAgICAgICAgICAgIHByb3BzOiBpbmZvCiAgICAgICAgICB9OwogICAgICAgICAgY29uc29sZS5sb2coZmVhdHVyZSk7CiAgICAgICAgICB0aGlzLmxheWVycy5yYWlsTGF5ZXIuY2x1c3RlciA9IGZhbHNlOwogICAgICAgICAgdGhpcy5sYXllcnMucmFpbExheWVyLmZlYXR1cmVzID0gW2ZlYXR1cmVdOwogICAgICAgIH0gZWxzZSBpZiAocmFpbFNoYXBlVHlwZSA9PT0gIkNyaWIiIHx8IHJhaWxTaGFwZVR5cGUgPT09ICJQb2x5Z29uIikgewogICAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSByZXMuc2hhcGVkTG9jYXRpb24uZ2Vvcy5tYXAoeCA9PiB7CiAgICAgICAgICAgIHJldHVybiBbeC5sb24sIHgubGF0XTsKICAgICAgICAgIH0pOwogICAgICAgICAgdGhpcy5sYXllcnMucmFpbExheWVyLmNsdXN0ZXIgPSBmYWxzZTsKICAgICAgICAgIHRoaXMubGF5ZXJzLnJhaWxMYXllci5mZWF0dXJlcyA9IFt7CiAgICAgICAgICAgIHR5cGU6ICJwb2x5Z29uIiwKICAgICAgICAgICAgY29udmVydDogImdkLTg0IiwKICAgICAgICAgICAgY29vcmRpbmF0ZXMsCiAgICAgICAgICAgIHByb3BzOiBpbmZvCiAgICAgICAgICB9XTsKICAgICAgICB9CiAgICAgIH0pLmNhdGNoKGVyciA9PiB7CiAgICAgICAgY29uc29sZS5sb2coZXJyKTsKICAgICAgfSk7CiAgICB9LAogICAgb25SYWlsTGF5ZXJDaGFuZ2UoZmVhdHVyZXMpIHsKICAgICAgY29uc29sZS5sb2coZmVhdHVyZXMpOwogICAgICBpZiAoZmVhdHVyZXMgJiYgZmVhdHVyZXMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgY29uc3QgZmVhdHVyZSA9IGZlYXR1cmVzWzBdOwogICAgICAgIGNvbnN0IHR5cGUgPSBmZWF0dXJlLmdldCgidHlwZSIpOwogICAgICAgIGlmICh0eXBlICYmICF0aGlzLnNob3dSYWlsSW5mb0Zyb21MaXN0KSB7CiAgICAgICAgICBjb25zb2xlLmxvZyh0eXBlKTsKICAgICAgICAgIGlmICh0eXBlID09PSAicG9seWdvbiIgfHwgdHlwZSA9PT0gIlBvbHlnb24iKSB7CiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gZmVhdHVyZS5nZXQoImdlb21ldHJ5Iik7CiAgICAgICAgICAgIC8vIGNvbnN0IHZpZXcgPSB0aGlzLiRyZWZzLm1hcC5tYXAuZ2V0VmlldygpOwogICAgICAgICAgICAvLyB2aWV3LmZpdChnZW9tZXRyeSwgewogICAgICAgICAgICAvLyAgIGR1cmF0aW9uOiAxMDAwLAogICAgICAgICAgICAvLyB9KTsKICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy4kcmVmcy5tYXAuY2FsY3VsYXRlQ2VudGVyKGdlb21ldHJ5KTsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgIGNlbnRlcgogICAgICAgICAgICB9ID0gcmVzdWx0OwogICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjb29yZGluYXRlcykKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEDlvLnmoYbkvY3nva7ovazpq5jlvrfovaw4NAogICAgICAgICAgICAgKi8KICAgICAgICAgICAgdGhpcy5sYXllcnMucmFpbExheWVyLm92ZXJsYXkucG9zaXRpb24gPSBjZW50ZXI7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICJjaXJjbGUiIHx8IHR5cGUgPT09ICJDaXJjbGUiKSB7CiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gZmVhdHVyZS5nZXQoImdlb21ldHJ5Iik7CiAgICAgICAgICAgIC8vIGNvbnN0IHZpZXcgPSB0aGlzLiRyZWZzLm1hcC5tYXAuZ2V0VmlldygpOwogICAgICAgICAgICAvLyB2aWV3LmZpdChnZW9tZXRyeSwgewogICAgICAgICAgICAvLyAgIGR1cmF0aW9uOiAxMDAwLAogICAgICAgICAgICAvLyB9KTsKICAgICAgICAgICAgdGhpcy5sYXllcnMucmFpbExheWVyLm92ZXJsYXkucG9zaXRpb24gPSBnZW9tZXRyeS5nZXRDZW50ZXIoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEDnlLXlrZDlm7TmoI/liJfooagKICAgICAqLwogICAgc2V0RmVuY2UoKSB7CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VEaWFsb2cgPSB0cnVlOwogICAgfSwKICAgIC8qKgogICAgICogQOazqOWGjOaYvuekuuW8ueahhuexu+S6i+S7tgogICAgICovCiAgICBldmVudEJ1c0JpbmRpbmcoKSB7CiAgICAgIHRoaXMuJGJ1cy4kb24oImNsaWNrLXN0YXRpb24iLCB0aGlzLnNob3dTdGF0aW9uSW5mbyk7IC8vIOaYvuekuumpu+WLpOeCueW8ueahhgogICAgICB0aGlzLiRidXMuJG9uKCJjbGljay1jb21wYW55IiwgdGhpcy5zaG93Q29tcGFueUluZm8pOyAvLyDmmL7npLrlhazlj7jlvLnmoYYKICAgICAgdGhpcy4kYnVzLiRvbigiY2xpY2stc3RhdGlvbkVtcGxveWVlcyIsIHRoaXMuc2hvd1N0YXRpb25FbXBsb3llZXNJbmZvKTsgLy8g5pi+56S66am75Yuk54K55Lq65ZGYCiAgICB9LAoKICAgIC8qKgogICAgICogQOa4heepuuWcsOWbvgogICAgICovCiAgICBjbGVhck1hcChleGNsdWRlID0gWyJzdGF0aW9uTGF5ZXIiXSkgewogICAgICBmb3IgKGxldCBsYXllcnNLZXkgaW4gdGhpcy5sYXllcnMpIHsKICAgICAgICBpZiAoIWV4Y2x1ZGUuaW5jbHVkZXMobGF5ZXJzS2V5KSkgewogICAgICAgICAgdGhpcy5sYXllcnNbbGF5ZXJzS2V5XS5mZWF0dXJlcyA9IFtdOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLiRyZWZzLm1hcC5jbG9zZU92ZXJsYXlzKCk7CiAgICB9LAogICAgb25DaGFuZ2VMYXllcih0eXBlKSB7CiAgICAgIC8vIGNvbnNvbGUubG9nKCJvbkNoYW5nZUxheWVyIiwgdHlwZSk7CiAgICAgIGlmICh0eXBlLmluZGV4T2YoImRlZmF1bHQiKSA+IC0xKSB7CiAgICAgICAgdGhpcy50aWxlVHlwZSA9ICJHRCI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy50aWxlVHlwZSA9ICJHRF9JTUciOwogICAgICB9CiAgICB9LAogICAgaGlkZUZlbmNlVGFibGUoKSB7CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VFZGl0RGlhbG9nID0gZmFsc2U7CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VTdGF0aW9uRGlhbG9nID0gZmFsc2U7CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VEaWFsb2cgPSBmYWxzZTsKICAgIH0sCiAgICBlbGVjdHJvbmljRmVuY2VDYW5jZWwoKSB7CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VEaWFsb2cgPSBmYWxzZTsKICAgIH0sCiAgICAvKioKICAgICAqIEDmlrDlop7nlLXlrZDlm7TmoI8KICAgICAqLwogICAgYWRkRWxlY3Ryb25pYygpIHsKICAgICAgdGhpcy5pc0VsZWN0cm9uaWNGZW5jZUVkaXREaWFsb2cgPSB0cnVlOwogICAgICB0aGlzLmlzRWxlY3Ryb25pY0ZlbmNlRGlhbG9nID0gZmFsc2U7CiAgICAgIHRoaXMuZWxlY3Ryb25pY0ZlbmNlSW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5pbmZvKSk7CiAgICAgIHRoaXMuZWxlY3Ryb25pY0ZlbmNlSW5mbyA9IHt9OwogICAgICBjb25zb2xlLmxvZyh0aGlzLnN0YXRpb24pOwogICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7CiAgICAgICAgdGhpcy4kcmVmcy5lbGVjdHJvbmljRmVuY2VFZGl0LnVwZGF0ZVN0YXRpb24oewogICAgICAgICAgc3RhdGlvbk5hbWU6IHRoaXMuc3RhdGlvbi5uYW1lLAogICAgICAgICAgcGVvcGxlTnVtOiB0aGlzLnN0YXRpb24uY291bnRPZlNlY3VyaXR5TWFuLAogICAgICAgICAgY291bnRPZlNlY3VyaXR5TWFuOiB0aGlzLnN0YXRpb24uY291bnRPZlNlY3VyaXR5TWFuLAogICAgICAgICAgc3RhdGlvbklkOiB0aGlzLnN0YXRpb24uaWQKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBA57yW6L6R5p+Q5p2h55S15a2Q5Zu05qCPCiAgICAgKiBAcGFyYW0gZGF0YQogICAgICovCiAgICBhc3luYyBlbGVjdHJvbmljRmVuY2VFZGl0Rm4oewogICAgICBkYXRhCiAgICB9KSB7CiAgICAgIGNvbnNvbGUubG9nKCLnvJbovpHmn5DmnaHnlLXlrZDlm7TmoI8iLCBkYXRhKTsKICAgICAgdGhpcy5zaG93UmFpbEluZm9Gcm9tTGlzdCA9IHRydWU7CiAgICAgIC8vIHRoaXMubWFwLmNsZWFyTWFwKCk7CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VEaWFsb2cgPSBmYWxzZTsKICAgICAgdGhpcy5lbGVjdHJvbmljRmVuY2VJbmZvID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgIHRoaXMuZWxlY3Ryb25pY0ZlbmNlSW5mby50aW1lID0gW3RoaXMuZWxlY3Ryb25pY0ZlbmNlSW5mby5iZWdpblRpbWUsIHRoaXMuZWxlY3Ryb25pY0ZlbmNlSW5mby5lbmRUaW1lXTsKICAgICAgY29uc3QgcmFpbCA9IGF3YWl0IGdldFJhaWxEZXRhaWxBY2Nlc3MoZGF0YS5pZCk7CiAgICAgIHRoaXMuaW5mbyA9IHsKICAgICAgICAuLi5yYWlsLAogICAgICAgIC4uLnRoaXMuZWxlY3Ryb25pY0ZlbmNlSW5mbwogICAgICB9OyAvLyDlvLnmoYbkv6Hmga8KICAgICAgY29uc29sZS5sb2codGhpcy5pbmZvKTsKICAgICAgdGhpcy5pc0VsZWN0cm9uaWNGZW5jZUVkaXREaWFsb2cgPSB0cnVlOwogICAgICAvLyDmmL7npLrlj6/nvJbovpHlm7TmoI/ljLrln58KICAgICAgdGhpcy5zaG93TWFwRWRpdG9yKGRhdGEpOwogICAgfSwKICAgIGRlbEVsZWN0cm9uaWMoZGF0YSkgewogICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgbGV0IHBhcmFtcyA9IHsKICAgICAgICBpZDogZGF0YS5kYXRhLmlkCiAgICAgIH07CiAgICAgIGRlbGV0ZVJhaWxBY2Nlc3MocGFyYW1zKS50aGVuKHJlcyA9PiB7CiAgICAgICAgY29uc29sZS5sb2coImRlbGV0ZVJhaWxBY2Nlc3MiLCByZXMpOwogICAgICAgIHRoaXMuJHJlZnNbImVsZWN0cm9uaWNGZW5jZSJdLmdldFJhaWxzKCk7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICBtZXNzYWdlOiAi5Yig6Zmk5oiQ5YqfIiwKICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIgogICAgICAgIH0pOwogICAgICB9KS5jYXRjaChlcnIgPT4gewogICAgICAgIGNvbnNvbGUubG9nKGVycik7CiAgICAgIH0pOwogICAgfSwKICAgIG9wZW5QZW9wbGVOdW1GbihpZCwgc3RhdGlvbk5hbWUpIHsKICAgICAgdGhpcy5lbGVjdHJvbmljRmVuY2VQZW9wbGVMaXN0ID0gW107CiAgICAgIHRoaXMuaXNFbGVjdHJvbmljRmVuY2VQZW9wbGUgPSB0cnVlOwogICAgICB0aGlzLnBlb3BsZVN0YXRpb25OYW1lID0gc3RhdGlvbk5hbWU7CiAgICAgIGdldEVtcGxveWVlcyh7CiAgICAgICAgcGFnZUluZGV4OiAxLAogICAgICAgIHBhZ2VTaXplOiAxMDAwLAogICAgICAgIHNlY3VyaXR5U3RhdGlvbklkOiBpZCwKICAgICAgICBzZWFyY2hNb2RlbDogInNlY3VyaXR5U3RhdGlvbiIKICAgICAgfSkudGhlbihyZXMgPT4gewogICAgICAgIHRoaXMuZWxlY3Ryb25pY0ZlbmNlUGVvcGxlTGlzdCA9IHJlczsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBA5YWz6IGU6am75Yuk54K5CiAgICAgKi8KICAgIHJlbGF0aW9uU3RhdGlvbkZuKGluZm8pIHsKICAgICAgdGhpcy5pc0VsZWN0cm9uaWNGZW5jZVN0YXRpb25EaWFsb2cgPSB0cnVlOwogICAgICB0aGlzLmluZm8gPSB7CiAgICAgICAgLi4udGhpcy5pbmZvLAogICAgICAgIC4uLmluZm8KICAgICAgfTsKICAgIH0sCiAgICBlbGVjdHJvbmljRmVuY2VFZGl0Q2FuY2VsKCkgewogICAgICB0aGlzLmxheWVycy5yYWlsTGF5ZXIuZmVhdHVyZXMgPSBbXTsKICAgICAgdGhpcy5pc0VsZWN0cm9uaWNGZW5jZUVkaXREaWFsb2cgPSBmYWxzZTsKICAgICAgdGhpcy5jbGVhbkRyYXdGaWd1cmUoKTsKICAgICAgc2VhcmNoUmFpbEFjY2Vzcyh7CiAgICAgICAgcGFnZUluZGV4OiAwLAogICAgICAgIHBhZ2VTaXplOiAwLAogICAgICAgIHNlYXJjaE1vZGVsOiAiU3RhdGlvbiIsCiAgICAgICAgc3RhdGlvbklkOiB0aGlzLnN0YXRpb25JZAogICAgICB9KS50aGVuKHJlcyA9PiB7CiAgICAgICAgY29uc29sZS5sb2coInNlYXJjaFJhaWwiLCByZXMpOwogICAgICAgIGlmIChyZXMpIHsKICAgICAgICAgIHRoaXMuZWxlY3Ryb25pY0ZlbmNlRGF0YSA9IHJlczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgTWVzc2FnZSh7CiAgICAgICAgICAgIHR5cGU6ICJlcnJvciIsCiAgICAgICAgICAgIG1lc3NhZ2U6ICLmn6Xor6LnlLXlrZDlm7TmoI/kv6Hmga/lpLHotKUiLAogICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7CiAgICAgICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uID0gImh0dHBzOi8vd3d3LmJhaWR1LmNvbSI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSkuY2F0Y2goKCkgPT4gewogICAgICAgIE1lc3NhZ2UoewogICAgICAgICAgdHlwZTogImVycm9yIiwKICAgICAgICAgIG1lc3NhZ2U6ICLmn6Xor6LnlLXlrZDlm7TmoI/kv6Hmga/lpLHotKUiLAogICAgICAgICAgb25DbG9zZTogKCkgPT4gewogICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24gPSAiaHR0cHM6Ly93d3cuYmFpZHUuY29tIjsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgY2xlYW5EcmF3RmlndXJlKCkgewogICAgICB0aGlzLmRyYXdUeXBlID0gIiI7CiAgICB9LAogICAgLyoqCiAgICAgKiBA5YWz6Zet6am75Yuk54K55Lq65ZGYCiAgICAgKi8KICAgIGVsZWN0cm9uaWNGZW5jZVBlb3BsZUNhbmNlbCgpIHsKICAgICAgdGhpcy5pc0VsZWN0cm9uaWNGZW5jZVBlb3BsZSA9IGZhbHNlOwogICAgfSwKICAgIGVsZWN0cm9uaWNGZW5jZVN0YXRpb25DYW5jZWwoKSB7CiAgICAgIHRoaXMubGF5ZXJzLnJhaWxMYXllci5mZWF0dXJlcyA9IFtdOwogICAgICB0aGlzLmlzRWxlY3Ryb25pY0ZlbmNlU3RhdGlvbkRpYWxvZyA9IGZhbHNlOwogICAgICB0aGlzLmNsZWFuRHJhd0ZpZ3VyZSgpOwogICAgfSwKICAgIHNob3dNYXBFZGl0b3IoewogICAgICBzaGFwZVR5cGUsCiAgICAgIHNoYXBlZExvY2F0aW9uCiAgICB9KSB7CiAgICAgIHN3aXRjaCAoc2hhcGVUeXBlKSB7CiAgICAgICAgY2FzZSAiQ2lyY2xlIjoKICAgICAgICAgIC8vIOWchgogICAgICAgICAgdGhpcy5zaG93Q2lyY2xlRWRpdG9yKHNoYXBlZExvY2F0aW9uKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIlBvbHlnb24iOgogICAgICAgICAgdGhpcy5zaG93UG9seWdvbkVkaXRvcihzaGFwZWRMb2NhdGlvbik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJDcmliIjoKICAgICAgICAgIHRoaXMuc2hvd0NyaWJFZGl0b3Ioc2hhcGVkTG9jYXRpb24pOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0sCiAgICBzaG93UG9seWdvbkVkaXRvcih7CiAgICAgIGdlb3MKICAgIH0pIHsKICAgICAgbGV0IGxpc3QgPSBnZW9zLm1hcChpdGVtID0+IFtpdGVtLmxvbiwgaXRlbS5sYXRdKTsKICAgICAgY29uc29sZS5sb2cobGlzdCk7CiAgICAgIHRoaXMubGF5ZXJzLnJhaWxMYXllci5mZWF0dXJlcyA9IFt7CiAgICAgICAgdHlwZTogInBvbHlnb24iLAogICAgICAgIGNvb3JkaW5hdGVzOiBsaXN0LAogICAgICAgIHN0eWxlOiB0aGlzLmxheWVycy5yYWlsTGF5ZXIuc3R5bGUsCiAgICAgICAgY29udmVydDogImdkLTg0IgogICAgICB9XTsKICAgICAgdGhpcy4kcmVmcy5tYXAuZmx5VG8oewogICAgICAgIHpvb206IDEzLAogICAgICAgIGZseVpvb206IDgsCiAgICAgICAgY2VudGVyOiBsaXN0WzBdCiAgICAgIH0pOwogICAgICBjb25zb2xlLmxvZyh0aGlzLmxheWVycy5yYWlsTGF5ZXIuZmVhdHVyZXMpOwogICAgfSwKICAgIHNob3dDcmliRWRpdG9yKHsKICAgICAgZ2VvcwogICAgfSkgewogICAgICBsZXQgbGlzdCA9IGdlb3MubWFwKGl0ZW0gPT4gW2l0ZW0ubG9uLCBpdGVtLmxhdF0pOwogICAgICBjb25zb2xlLmxvZyhsaXN0KTsKICAgICAgdGhpcy5sYXllcnMucmFpbExheWVyLmZlYXR1cmVzID0gW3sKICAgICAgICB0eXBlOiAicG9seWdvbiIsCiAgICAgICAgY29vcmRpbmF0ZXM6IGxpc3QsCiAgICAgICAgc3R5bGU6IHRoaXMubGF5ZXJzLnJhaWxMYXllci5zdHlsZSwKICAgICAgICBjb252ZXJ0OiAiZ2QtODQiCiAgICAgIH1dOwogICAgICB0aGlzLiRyZWZzLm1hcC5mbHlUbyh7CiAgICAgICAgem9vbTogMTMsCiAgICAgICAgZmx5Wm9vbTogOCwKICAgICAgICBjZW50ZXI6IGxpc3RbMF0KICAgICAgfSk7CiAgICAgIGNvbnNvbGUubG9nKHRoaXMubGF5ZXJzLnJhaWxMYXllci5mZWF0dXJlcyk7CiAgICB9LAogICAgc2hvd0NpcmNsZUVkaXRvcih7CiAgICAgIGdlb3MsCiAgICAgIHJhZGl1cwogICAgfSkgewogICAgICBjb25zdCBbY2VudGVyXSA9IGdlb3MubWFwKGl0ZW0gPT4gW2l0ZW0ubG9uLCBpdGVtLmxhdF0pOwogICAgICBjb25zb2xlLmxvZyhjZW50ZXIpOwogICAgICB0aGlzLmxheWVycy5yYWlsTGF5ZXIuZmVhdHVyZXMgPSBbewogICAgICAgIHR5cGU6ICJDaXJjbGUiLAogICAgICAgIGNlbnRlciwKICAgICAgICByYWRpdXMsCiAgICAgICAgc3R5bGU6IHRoaXMubGF5ZXJzLnJhaWxMYXllci5zdHlsZSwKICAgICAgICBjb252ZXJ0OiAiZ2QtODQiCiAgICAgIH1dOwogICAgICB0aGlzLiRyZWZzLm1hcC5mbHlUbyh7CiAgICAgICAgem9vbTogMTMsCiAgICAgICAgLy8gZmx5Wm9vbTogOCwKICAgICAgICBjZW50ZXIKICAgICAgfSk7CiAgICB9LAogICAgZHJhd1JhaWwodHlwZSkgewogICAgICBjb25zb2xlLmxvZygiZHJhd1JhaWwiLCB0eXBlKTsKICAgICAgLy8gdGhpcy5sYXllcnMucmFpbExheWVyLmZlYXR1cmVzID0gW10KICAgICAgdGhpcy5kcmF3VHlwZSA9IHR5cGU7CiAgICB9LAogICAgZHJhd2VuZChldnQsIG1hcCkgewogICAgICBjb25zdCB7CiAgICAgICAgZmVhdHVyZQogICAgICB9ID0gZXZ0OwogICAgICBjb25zb2xlLmxvZyh0aGlzLmRyYXdUeXBlKTsKICAgICAgdGhpcy5sYXllcnMucmFpbExheWVyLmZlYXR1cmVzID0gW107IC8vIOa4heepuuS4iuS4gOS4queUteWtkOWbtOagjwogICAgICBjb25zdCBnZW9tZXRyeSA9IGZlYXR1cmUuZ2V0R2VvbWV0cnkoKTsKICAgICAgaWYgKHRoaXMuZHJhd1R5cGUgPT09ICJSZWN0YW5nbGUiIHx8IHRoaXMuZHJhd1R5cGUgPT09ICJQb2x5Z29uIikgewogICAgICAgIGNvbnN0IFtjb29yZGluYXRlc10gPSBnZW9tZXRyeS5nZXRDb29yZGluYXRlcygpOwogICAgICAgIGNvbnN0IGNvbnZlcnRDb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzLm1hcChjb29yZGluYXRlID0+IHsKICAgICAgICAgIHJldHVybiB1dGlscy5jb252ZXJ0Q29vcmRpbmF0ZShjb29yZGluYXRlLCAiODQtZ2QiKTsKICAgICAgICB9KTsKICAgICAgICBjb25zb2xlLmxvZyhjb29yZGluYXRlcyk7CiAgICAgICAgY29uc29sZS5sb2coY29udmVydENvb3JkaW5hdGVzKTsKICAgICAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgICAgICBnZW9zOiBjb252ZXJ0Q29vcmRpbmF0ZXMubWFwKGl0ZW0gPT4gewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIGxvbjogaXRlbVswXSwKICAgICAgICAgICAgICBsYXQ6IGl0ZW1bMV0KICAgICAgICAgICAgfTsKICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICBjb25zb2xlLmxvZyhwYXJhbXMpOwogICAgICAgIHRoaXMuJHJlZnMuZWxlY3Ryb25pY0ZlbmNlRWRpdC51cGRhdGVHZW9tZXRyeShwYXJhbXMpOwogICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd1R5cGUgPT09ICJDaXJjbGUiKSB7CiAgICAgICAgY29uc3QgY2VudGVyID0gZ2VvbWV0cnkuZ2V0Q2VudGVyKCk7CiAgICAgICAgY29uc29sZS5sb2coY2VudGVyKTsKICAgICAgICBjb25zdCBnZW9SYWRpdXMgPSBnZW9tZXRyeS5nZXRSYWRpdXMoKTsgLy8g5Y2K5b6ECiAgICAgICAgY29uc3QgbWV0ZXJzUGVyVW5pdCA9IG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLmdldE1ldGVyc1BlclVuaXQoKTsgLy8g5Y2K5b6E5Lul57Gz5Li65Y2V5L2NCiAgICAgICAgY29uc3QgcmFkaXVzID0gKGdlb1JhZGl1cyAqIG1ldGVyc1BlclVuaXQpLnRvRml4ZWQoMik7CiAgICAgICAgY29uc29sZS5sb2cocmFkaXVzKTsKICAgICAgICBjb25zdCBjb252ZXJ0Q29vcmRpbmF0ZXMgPSB1dGlscy5jb252ZXJ0Q29vcmRpbmF0ZShjZW50ZXIsICI4NC1nZCIpOwogICAgICAgIGNvbnN0IHBhcmFtcyA9IHsKICAgICAgICAgIGdlb3M6IFt7CiAgICAgICAgICAgIGxvbjogY29udmVydENvb3JkaW5hdGVzWzBdLAogICAgICAgICAgICBsYXQ6IGNvbnZlcnRDb29yZGluYXRlc1sxXQogICAgICAgICAgfV0sCiAgICAgICAgICByYWRpdXMKICAgICAgICB9OwogICAgICAgIGNvbnNvbGUubG9nKHBhcmFtcyk7CiAgICAgICAgdGhpcy4kcmVmcy5lbGVjdHJvbmljRmVuY2VFZGl0LnVwZGF0ZUdlb21ldHJ5KHBhcmFtcyk7CiAgICAgIH0KICAgIH0KICB9LAogIGJlZm9yZVJvdXRlRW50ZXIodG8sIGZyb20sIG5leHQpIHsKICAgIC8vIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8jL3JhaWwKICAgIC8vID9zdGF0aW9uSWQ9VkdVa1RXekpxRTdZZU9jalZVcC0tX19XMDUyYjFYTm9MbVBja0Y2Y2gxCiAgICAvLyAmYWNjZXNzVG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSjkuZXlKcGMzTWlPaUpoZFhSb01DSXNJbVY0Y0NJNk1UY3dNalV6TnpNd09Dd2lkWE5sY201aGJXVWlPaUp2ZFVGdmNqWlNja2hKUm5aMlMybHRXVFJDSW4wLjBkd0JILW9HSTZveUR0NGJRSEVXMzVrWl92eTV5MFhFLXpFbUc0dm03MGMKICAgIGNvbnN0IHN0YXRpb25JZCA9IHRvLnF1ZXJ5LnN0YXRpb25JZDsKICAgIGlmIChzdGF0aW9uSWQpIHsKICAgICAgLy8g6I635Y+W55S15a2Q5Zu05qCP5L+h5oGvCiAgICAgIHNlYXJjaFJhaWxBY2Nlc3MoewogICAgICAgIHBhZ2VJbmRleDogMCwKICAgICAgICBwYWdlU2l6ZTogMCwKICAgICAgICBzZWFyY2hNb2RlbDogIlN0YXRpb24iLAogICAgICAgIHN0YXRpb25JZAogICAgICB9KS50aGVuKHJlcyA9PiB7CiAgICAgICAgY29uc29sZS5sb2coInNlYXJjaFJhaWwiLCByZXMpOwogICAgICAgIGlmIChyZXMpIHsKICAgICAgICAgIG5leHQodm0gPT4gewogICAgICAgICAgICB2bS5zdGF0aW9uSWQgPSBzdGF0aW9uSWQ7CiAgICAgICAgICAgIHZtLmVsZWN0cm9uaWNGZW5jZURhdGEgPSByZXM7CiAgICAgICAgICAgIHZtLmlzRWxlY3Ryb25pY0ZlbmNlRGlhbG9nID0gdHJ1ZTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBNZXNzYWdlKHsKICAgICAgICAgICAgdHlwZTogImVycm9yIiwKICAgICAgICAgICAgbWVzc2FnZTogIuafpeivoueUteWtkOWbtOagj+S/oeaBr+Wksei0pSIsCiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHsKICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24gPSAiaHR0cHM6Ly93d3cuYmFpZHUuY29tIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9KS5jYXRjaCgoewogICAgICAgIHJlc3BvbnNlCiAgICAgIH0pID0+IHsKICAgICAgICBjb25zdCB7CiAgICAgICAgICBkYXRhCiAgICAgICAgfSA9IHJlc3BvbnNlOwogICAgICAgIE1lc3NhZ2UoewogICAgICAgICAgdHlwZTogImVycm9yIiwKICAgICAgICAgIG1lc3NhZ2U6IGRhdGEubWVzc2FnZSwKICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHsKICAgICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uID0gImh0dHBzOi8vd3d3LmJhaWR1LmNvbSI7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgTWVzc2FnZSh7CiAgICAgICAgdHlwZTogImVycm9yIiwKICAgICAgICBtZXNzYWdlOiAi5pyq6K+G5Yir6am75Yuk54K5SUQiLAogICAgICAgIG9uQ2xvc2U6ICgpID0+IHsKICAgICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwczovL3d3dy5iYWlkdS5jb20iOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfSwKICBtb3VudGVkKCkgewogICAgdGhpcy5ldmVudEJ1c0JpbmRpbmcoKTsKICB9Cn07"},null]}