{"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\\dataServices\\dataServiceAPI\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataServices\\dataServiceAPI\\index.vue","mtime":1736967331258},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IEFQSSBmcm9tICdAL2FwaS9idXNpbmVzcy9kYXRhU2VydmljZUFQSSc7CmltcG9ydCBTZXJ2aWNlRGlhbG9nIGZyb20gJy4uL2RhdGFTZXJ2aWNlQVBJL1NlcnZpY2VEaWFsb2cudnVlJzsKaW1wb3J0IERldGFpbERpYWxvZyBmcm9tICcuL0RldGFpbERpYWxvZy52dWUnOwppbXBvcnQgQWRkRGlhbG9nIGZyb20gJ0Avdmlld3MvZGF0YVNlcnZpY2VzL2RhdGFTZXJ2aWNlQVBJL0FkZERpYWxvZy52dWUnOwppbXBvcnQgdGFibGVNaXhpbiBmcm9tICdAL21peGlucy90YWJsZS5qcyc7IC8vIOWIl+ihqG1peGlucwppbXBvcnQgU2hvd0RpYWxvZyBmcm9tICdAL3ZpZXdzL2RhdGFTZXJ2aWNlcy9kYXRhU2VydmljZUFQSS9TaG93RGlhbG9nLnZ1ZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBjb21wb25lbnRzOiB7CiAgICBEZXRhaWxEaWFsb2c6IERldGFpbERpYWxvZywKICAgIFNlcnZpY2VEaWFsb2c6IFNlcnZpY2VEaWFsb2csCiAgICBTaG93RGlhbG9nOiBTaG93RGlhbG9nLAogICAgQWRkRGlhbG9nOiBBZGREaWFsb2cKICB9LAogIG1peGluczogW3RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgLy8g5qCRCiAgICB2YXIgVFJFRV9DT05GSUcgPSB7CiAgICAgIG5hbWU6ICcnLAogICAgICB0cmVlSWQ6ICcnLAogICAgICB0cmVlUHJvcHM6IHsKICAgICAgICB2YWx1ZTogJ2lkJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIGV4cGFuZEFsbDogZmFsc2UsCiAgICAgIGRlZmF1bHRFeHBhbmRlZEtleXM6IFsnMCddLAogICAgICAvLyDmraTlpIRmaWVsZHPlhoXphY3nva7lr7nosaHlsZ7mgKfljIXmi6w6IGxhYmVsL3Byb3AvcnVsZXMvdHlwZSjmnprkuL46c3dpdGNoL251bWJlci9pbnB1dCjpu5jorqQpKS9zcGFuLwogICAgICB0cmVlRmllbGRzOiBbewogICAgICAgIGxhYmVsOiAn5o6l5Y+j55uu5b2V5ZCN56ewJywKICAgICAgICBwcm9wOiAnbmFtZScsCiAgICAgICAgbGFiZWxXaWR0aDogJzEyMCcsCiAgICAgICAgcnVsZXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmjqXlj6Pnm67lvZXlkI3np7DkuI3og73kuLrnqbonCiAgICAgICAgfV0KICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5o6l5Y+j55uu5b2V57yW56CBJywKICAgICAgICBwcm9wOiAnY29kZScsCiAgICAgICAgbGFiZWxXaWR0aDogJzEyMCcsCiAgICAgICAgcnVsZXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmjqXlj6Pnm67lvZXnvJbnoIHkuI3og73kuLrnqbonCiAgICAgICAgfV0KICAgICAgfV0sCiAgICAgIGN1ck5vZGU6IHt9IC8vIOW9k+WJjemAieaLqeiKgueCuQogICAgfTsKICAgIC8vIHRhYmxl5YiX6KGoCiAgICB2YXIgVEFCTEVfQ09ORklHID0gewogICAgICAvLyBmaWx0ZXJzOiB7CiAgICAgIC8vICAgYXBpTW9kZTogMSwgLy8g6K+35rGC5pa55byP6buY6K6k5Li6R0VUCiAgICAgIC8vIH0sCiAgICAgIGNyZWF0ZWRMaXN0OiBbewogICAgICAgIGxhYmVsOiAnR0VUJywKICAgICAgICB2YWx1ZTogJzEnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ1BPU1QnLAogICAgICAgIHZhbHVlOiAnMCcKICAgICAgfV0sCiAgICAgIC8vIOWIl+ihqOihqOWktAogICAgICBjb2x1bW5zOiBbewogICAgICAgIGxhYmVsOiAn5o6l5Y+j5ZCN56ewJywKICAgICAgICBwcm9wOiAnYXBpTmFtZScsCiAgICAgICAgd2lkdGg6ICcyMDBweCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aOpeWPo+aPj+i/sCcsCiAgICAgICAgcHJvcDogJ2FwaURlc2MnLAogICAgICAgIHdpZHRoOiAnMjAwcHgnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfmjqXlj6PlnLDlnYAnLAogICAgICAgIHByb3A6ICdhcGlVcmwnLAogICAgICAgIHdpZHRoOiAnMzAwcHgnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfmlbDmja7lupPooajlkI0nLAogICAgICAgIHByb3A6ICdkYkFsaWFzJywKICAgICAgICB3aWR0aDogJzEwMHB4JywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn6K+35rGC5pa55byPJywKICAgICAgICBwcm9wOiAnYXBpTW9kZScsCiAgICAgICAgZGF0YVR5cGU6ICdzbG90JywKICAgICAgICBzbG90OiAnYXBpTW9kZScsCiAgICAgICAgd2lkdGg6ICcxMDBweCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aOpeWPo+eKtuaAgScsCiAgICAgICAgcHJvcDogJ3N0YXR1cycsCiAgICAgICAgd2lkdGg6ICcxNTAnLAogICAgICAgIGFsaWduOiAnY2VudGVyJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIC8vIOS9v+eUqOaPkuanvQogICAgICAgIHNsb3Q6ICdzdGF0dXMnCiAgICAgIH0sIHsKICAgICAgICBkYXRhVHlwZTogJ29wdGlvbicsCiAgICAgICAgbGFiZWw6ICfmk43kvZwnLAogICAgICAgIGZpeGVkOiAncmlnaHQnLAogICAgICAgIG9wZXJhdGlvbjogW3sKICAgICAgICAgIG5hbWU6ICfmtYvor5UnLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tcy11bmZvbGQnLAogICAgICAgICAgY29sb3I6ICcjNDA5ZWZmJywKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuc2hvd0RyYXdlcihyb3cpOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICfmn6XnnIvml6Xlv5cnLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tZG9jdW1lbnQnLAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5zZXJ2aWNlc2hvdyhyb3cpOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICfmjqXlj6PmlofmoaPmn6XnnIsnLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tdGlja2V0cycsCiAgICAgICAgICBjb2xvcjogJyM0MDdjZmYnLAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5kZXRhaWxzc2hvdyhyb3cpOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICflj5HluIMnLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tcy1wcm9tb3Rpb24nLAogICAgICAgICAgY29sb3I6ICcjZmE5MTJhJywKICAgICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgICAgcmV0dXJuIHJvdy5zdGF0dXMgIT09IDE7CiAgICAgICAgICB9LAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5wdWJsaXNoVGFibGUocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Yig6ZmkJywKICAgICAgICAgIGljb246ICdlbC1pY29uLWRlbGV0ZScsCiAgICAgICAgICBjb2xvcjogJ3JlZCcsCiAgICAgICAgICBjbGlja0Z1bjogZnVuY3Rpb24gY2xpY2tGdW4ocm93KSB7CiAgICAgICAgICAgIF90aGlzLmRlbEFwaShyb3cpOwogICAgICAgICAgfQogICAgICAgIH1dCiAgICAgIH1dLAogICAgICBkZWZhdWx0RmlsdGVyOiBbewogICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICBwcm9wZXJ0eTogJ2NhdGFsb2dJZCcsCiAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgIHZhbHVlOiAnJwogICAgICB9XQogICAgfTsKICAgIC8vIGRpYWxvZ+W8ueWHugogICAgdmFyIERJQUxPR19DT05GSUcgPSB7CiAgICAgIGRldGFpbFZpc2libGU6IGZhbHNlLAogICAgICBhZGRWaXNpYmxlOiBmYWxzZSwKICAgICAgZGlhbG9nU2VydmljZTogZmFsc2UsCiAgICAgIGRpYWxvZ0RldGFpbHM6IGZhbHNlLAogICAgICBkcmF3ZXJWaXNpYmxlOiBmYWxzZSwKICAgICAgLy8g5o6n5Yi25oq95bGJ5pi+56S65ZKM6ZqQ6JeP55qE5Y+Y6YePCiAgICAgIGRldGFpbFRpdGxlOiAn57yW6L6RJywKICAgICAgYWRkVGl0bGU6ICfmlrDlop4nLAogICAgICBkaWFsb2dTZXJ2aWNlVGl0bGU6ICfmn6XnnIvml6Xlv5cnLAogICAgICBkaWFsb2dEZXRhaWxzVGl0bGU6ICfmjqXlj6Por6bmg4UnLAogICAgICBkaWFsb2dkRGF0YToge30KICAgIH07CiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgVFJFRV9DT05GSUcpLCBUQUJMRV9DT05GSUcpLCBESUFMT0dfQ09ORklHKSwge30sIHsKICAgICAgLy8g5Li75YiX6KGoZGlhbG9n55u45YWzCiAgICAgIC8vIHN0YXR1czogJycsIC8vIOWIneWni+WMluaOpeWPo+eKtuaAgeS4uuepugogICAgICB0YWJsZURhdGE6IFtdLAogICAgICAvLyDliJ3lp4vljJbliJfooajkuLrnqbrmlbDnu4QKICAgICAgdmFsdWU6ICcnLAogICAgICByZXF1ZXN0VXJsOiAnJywKICAgICAgcmVxdWVzdE1ldGhvZDogJ0dFVCcsCiAgICAgIHJlc3BvbnNlRGF0YTogbnVsbAogICAgfSk7CiAgfSwKICBjb21wdXRlZDogewogICAgLy8g6YWN572u5YiX6KGo5o6l5Y+j5pa55rOV77yb5Y+q5pyJ6YWN572u5LqG6K+l6K6h566X5bGe5oCn5omN5Lya5omn6KGMdGFibGUgbWl4aW5z5Lit55qEZ2V0RGF0YeaWueazlQogICAgZGF0YU1ldGhvZDogZnVuY3Rpb24gZGF0YU1ldGhvZCgpIHsKICAgICAgcmV0dXJuIEFQSS50cmVlcXVlcnlUYWJsZTsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIGFwaU1vZGXmoIfnrb7popzoibIKICAgIGRldGVybWluZVRhZ1R5cGU6IGZ1bmN0aW9uIGRldGVybWluZVRhZ1R5cGUoYXBpTW9kZSkgewogICAgICByZXR1cm4gYXBpTW9kZSA9PT0gJ0dFVCcgPyAnJyA6ICd3YXJuaW5nJzsKICAgIH0sCiAgICAvLyDmoJEKICAgIGdldFRyZWVOb2RlczogZnVuY3Rpb24gZ2V0VHJlZU5vZGVzKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHRyZWVBY3Rpb24sIF95aWVsZCRBUEkkdHJlZUFjdGlvbjIsIHZhbHVlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBBUEkudHJlZUFjdGlvbigpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSR0cmVlQWN0aW9uID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkQVBJJHRyZWVBY3Rpb24yID0gX3lpZWxkJEFQSSR0cmVlQWN0aW9uLnZhbHVlOwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJEFQSSR0cmVlQWN0aW9uMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkQVBJJHRyZWVBY3Rpb24yOwogICAgICAgICAgICAgIF90aGlzMi5kZWZhdWx0RXhwYW5kZWRLZXlzID0gWyh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsdWVbMF0uaWQpIHx8ICcnXTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCB7CiAgICAgICAgICAgICAgICBkYXRhOiB2YWx1ZSB8fCBbXQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgcmVsb2FkVHJlZTogZnVuY3Rpb24gcmVsb2FkVHJlZSgpIHsKICAgICAgdGhpcy4kcmVmcy5hcHBBc3luY1RyZWUuZ2V0VHJlZURhdGEoKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb246IHRyZWVBY3Rpb25z5pSv5oyB5Ye95pWw5Lmf5pSv5oyB5pWw57uE77yM55Sx5LqO5a6e6ZmF5Zy65pmv5b2T5LitIOWPr+iDveS8muWKqOaAgeiuvue9ruaMiemSru+8jOaVheS7peWHveaVsOekuuS+i+adpeWxleekug0KICAgICAqIEBwYXJhbSB7Kn0gZGF0YSDlvZPliY3ngrnlh7voioLngrnmlbDmja4NCiAgICAgKiBAcmV0dXJuIHsqfSDlvZPliY3oioLngrnlsZXnpLrnmoTmk43kvZzpobnmlbDnu4QNCiAgICAgKi8KICAgIHRyZWVBY3Rpb25zOiBmdW5jdGlvbiB0cmVlQWN0aW9ucyhkYXRhKSB7CiAgICAgIC8vIOagueiKgueCueWIpOaWreaWueW8j+S7peS4muWKoeS4uuWHhu+8jOatpOWkhOS7heS4uuekuuS+iwogICAgICByZXR1cm4gW3sKICAgICAgICBsYWJlbDogJ+a3u+WKoCcsCiAgICAgICAgdHlwZTogJ2FkZCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmFkZE5vZGUKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn57yW6L6RJywKICAgICAgICB0eXBlOiAnZWRpdCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmVkaXROb2RlCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WIoOmZpCcsCiAgICAgICAgdHlwZTogJ2RlbGV0ZScsCiAgICAgICAgbWV0aG9kOiB0aGlzLmRlbE5vZGUKICAgICAgfV07CiAgICB9LAogICAgb25UcmVlTm9kZUNsaWNrOiBmdW5jdGlvbiBvblRyZWVOb2RlQ2xpY2sobm9kZSkgewogICAgICB2YXIgX3RoaXMkY3VyTm9kZTsKICAgICAgdGhpcy50cmVlSWQgPSBub2RlLmlkOwogICAgICAvLyDmnoTlu7rmn6Xor6Llj4LmlbDlr7nosaHvvIzmjInnhafkvaDmj5DkvpvnmoTmoLzlvI/npLrkvosKICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gewogICAgICAgIGdyb3VwUmVsYXRpb246ICdBTkQnLAogICAgICAgIGdyb3VwVHJlZToge30sCiAgICAgICAgcGFyYW1zOiB7fSwKICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICBncm91cDogJ21haW4nLAogICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgICAgcGFyZW50R3JvdXA6ICcnLAogICAgICAgICAgcHJvcGVydHk6ICcnLAogICAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgICAgdmFsdWU6IHt9CiAgICAgICAgfSwgewogICAgICAgICAgZ3JvdXA6ICdtYWluJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAnY2F0YWxvZ0lkJywKICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICAgIHZhbHVlOiB0aGlzLnRyZWVJZAogICAgICAgIH1dLAogICAgICAgIHNvcnRlcjogW3sKICAgICAgICAgIGRpcmVjdGlvbjogJ0FTQycsCiAgICAgICAgICBwcm9wZXJ0eTogJycKICAgICAgICB9XQogICAgICB9OwogICAgICBpZiAobm9kZS5pZCA9PT0gKChfdGhpcyRjdXJOb2RlID0gdGhpcy5jdXJOb2RlKSA9PT0gbnVsbCB8fCBfdGhpcyRjdXJOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjdXJOb2RlLmlkKSkgcmV0dXJuOwogICAgICB0aGlzLmRlcHROYW1lID0gbm9kZS5sYWJlbDsKICAgICAgdGhpcy5jdXJOb2RlID0gX29iamVjdFNwcmVhZCh7fSwgbm9kZSk7CiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuJG9wdGlvbnMuZGF0YSgpLmZvcm07CiAgICAgIHRoaXMuZ2V0RGF0YShxdWVyeVBhcmFtcyk7CiAgICB9LAogICAgLy8g55uu5b2V5paw5aKeCiAgICBhZGROb2RlOiBmdW5jdGlvbiBhZGROb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgY29kZSwgbmFtZSwgaWQsIG5ld05vZGUsIF95aWVsZCRBUEkkYWRkQVBJVHJlZSwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGNvZGUgPSBwYXJhbXMuY29kZSwgbmFtZSA9IHBhcmFtcy5uYW1lOwogICAgICAgICAgICAgIGlkID0gbm9kZS5pZDsKICAgICAgICAgICAgICBuZXdOb2RlID0gewogICAgICAgICAgICAgICAgY29kZTogY29kZSwKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBwYXJlbnRJZDogaWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMzsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDY7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5hZGRBUElUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRhZGRBUElUcmVlID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGFkZEFQSVRyZWUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkYWRkQVBJVHJlZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXMzLnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCfmt7vliqDotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn5re75Yqg5o6l5Y+j55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxMjsKICAgICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbImNhdGNoIl0oMyk7CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQyLnQwIHx8ICfmt7vliqDmjqXlj6Pnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1szLCAxMl1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g55uu5b2V57yW6L6RCiAgICBlZGl0Tm9kZTogZnVuY3Rpb24gZWRpdE5vZGUocGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBjb2RlLCBuYW1lLCBwYXJlbnRJZCwgaWQsIG5ld05vZGUsIF95aWVsZCRBUEkkZWRpdEFQSVRyZSwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGNvZGUgPSBwYXJhbXMuY29kZSwgbmFtZSA9IHBhcmFtcy5uYW1lLCBwYXJlbnRJZCA9IHBhcmFtcy5wYXJlbnRJZCwgaWQgPSBwYXJhbXMuaWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDI7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBBUEkuZWRpdEFQSVRyZWUobmV3Tm9kZSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfeWllbGQkQVBJJGVkaXRBUElUcmUgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkZWRpdEFQSVRyZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRlZGl0QVBJVHJlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczQucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+e8lui+kei1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfnvJbovpHmjqXlj6Pnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgyKTsKICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDMudDAgfHwgJ+e8lui+keaOpeWPo+ebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzIsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDnm67lvZXliKDpmaQKICAgIGRlbE5vZGU6IGZ1bmN0aW9uIGRlbE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZUFQSVQsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlQVBJVHJlZShub2RlLmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcmVtb3ZlQVBJVCA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRyZW1vdmVBUElULnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZUFQSVQubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+WIoOmZpOaOpeWPo+ebruW9leWksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDQudDAgfHwgJ+WIoOmZpOi1hOaOpeWPo+ebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIHRhYmxl5YiX6KGo5paw5aKeCiAgICBhZGREYXRhOiBmdW5jdGlvbiBhZGREYXRhKCkgewogICAgICB0aGlzLmFkZFRpdGxlID0gJ+aWsOWinkFQSeaOpeWPoyc7CiAgICAgIHRoaXMuZGlhbG9nZERhdGEgPSB7CiAgICAgICAgY2F0YWxvZ0lkOiB0aGlzLmN1ck5vZGUuaWQKICAgICAgfTsKICAgICAgdGhpcy5hZGRWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICAvLyB0YWJsZeWIl+ihqOe8lui+kQogICAgZWRpdERhdGE6IGZ1bmN0aW9uIGVkaXREYXRhKHJvdykgewogICAgICB0aGlzLmRldGFpbFRpdGxlID0gIlx1N0YxNlx1OEY5MSAtICIuY29uY2F0KHJvdy5hcGlOYW1lKTsKICAgICAgdGhpcy5kaWFsb2dkRGF0YSA9IHJvdzsKICAgICAgdGhpcy5kZXRhaWxWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICAvLyB0YWJsZeWIl+ihqOWIoOmZpAogICAgZGVsQXBpOiBmdW5jdGlvbiBkZWxBcGkocm93KSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCJcdTZCNjRcdTY0Q0RcdTRGNUNcdTVDMDZcdTZDMzhcdTRFNDVcdTUyMjBcdTk2NjRcdThCRTVcdTYzQTVcdTUzRTNcdTk4NzlcdUZGMDgiLmNvbmNhdChyb3cuYXBpTmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBpbmRleDsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBBUEkuZGVsQXBpRGF0YShyb3cuaWQpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3RoaXM2LmdldERhdGEoKTsKICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgICAgICAgLy8g5om+5Yiw6KaB5Yig6Zmk55qE5pWw5o2u5ZyodGFibGVEYXRh5Lit55qE57Si5byVCiAgICAgICAgICAgICAgaW5kZXggPSBfdGhpczYudGFibGVEYXRhLmZpbmRJbmRleChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IHJvdy5pZDsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7CiAgICAgICAgICAgICAgICAvLyDku450YWJsZURhdGHmlbDnu4TkuK3liKDpmaTlr7nlupTnmoTmlbDmja4KICAgICAgICAgICAgICAgIF90aGlzNi50YWJsZURhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcign5Yig6Zmk5pWw5o2u5aSx6LSlOicsIGVycm9yKTsKICAgICAgfSk7CiAgICB9LAogICAgb25CZWZvcmVHZXREYXRhOiBmdW5jdGlvbiBvbkJlZm9yZUdldERhdGEocXVlcnlQYXJhbXMsIGZvcm1EYXRhKSB7CiAgICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5xdWVyeVBhcmFtcywgdGhpcy5kZWZhdWx0RmlsdGVyLCAnY2F0YWxvZ0lkJywgdGhpcy5jdXJOb2RlLmlkKTsKICAgIH0sCiAgICAvLyDmlrDlop7noa7lrprmjInpkq4KICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKGRhdGEsIHBEYXRhKSB7CiAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgfSwKICAgIC8vIOafpeeci+aXpeW/l+aMiemSrgogICAgc2VydmljZXNob3c6IGZ1bmN0aW9uIHNlcnZpY2VzaG93KHJvdykgewogICAgICB0aGlzLmRpYWxvZ1NlcnZpY2VUaXRsZSA9ICJcdTY3RTVcdTc3MEJcdTY1RTVcdTVGRDctICIuY29uY2F0KHJvdy5hcGlOYW1lKTsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB2YXIgcm93SWQgPSByb3cuaWQ7IC8vIOiOt+WPluW9k+WJjeihjOeahGlkCiAgICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IHRydWU7CiAgICAgIHRoaXMuJHJlZnMuU2VydmljZURpYWxvZy5pbml0RGF0YSh7CiAgICAgICAgaWQ6IHJvd0lkCiAgICAgIH0pOyAvLyDlsIZpZOS8oOmAkue7mVNlcnZpY2VEaWFsb2fnu4Tku7YKICAgIH0sCiAgICAvLyDmjqXlj6PmlofmoaPmn6XnnIsKICAgIGRldGFpbHNzaG93OiBmdW5jdGlvbiBkZXRhaWxzc2hvdyhyb3cpIHsKICAgICAgdGhpcy5kaWFsb2dEZXRhaWxzVGl0bGUgPSAiXHU2M0E1XHU1M0UzXHU4QkU2XHU2MEM1LSAiLmNvbmNhdChyb3cuYXBpTmFtZSk7CiAgICAgIHRoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgICAgdGhpcy5kaWFsb2dEZXRhaWxzID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDmtYvor5XmjInpkq4KICAgIHNob3dEcmF3ZXI6IGZ1bmN0aW9uIHNob3dEcmF3ZXIoKSB7CiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgLy8g5Y+R5biDCiAgICBwdWJsaXNoVGFibGU6IGZ1bmN0aW9uIHB1Ymxpc2hUYWJsZShkYXRhKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczcuJGNvbmZpcm0oIlx1NkI2NFx1NjRDRFx1NEY1Q1x1NUMwNlx1NTNEMVx1NUUwM1x1RkYwOCIuY29uY2F0KGRhdGEuYXBpTmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgICAgICAgICB2YXIgX3lpZWxkJEFQSSR1cGRhdGVBY3RpLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXR1cyA9ICcxJzsKICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ni5wcmV2ID0gMTsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy50YWJsZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSS51cGRhdGVBY3Rpb24oZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgX3lpZWxkJEFQSSR1cGRhdGVBY3RpID0gX2NvbnRleHQ2LnNlbnQ7CiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkdXBkYXRlQWN0aS5zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHVwZGF0ZUFjdGkubWVzc2FnZTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuZ2V0RGF0YSgpOwogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2Vzcygn5o6l5Y+j5Y+R5biD5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcudGFibGVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+aOpeWPo+WPkeW4g+Wksei0pe+8gScpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDYucHJldiA9IDExOwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2LnQwID0gX2NvbnRleHQ2WyJjYXRjaCJdKDEpOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ2LnQwIHx8ICfmjqXlj6Plj5HluIPlpLHotKXvvIEnKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgX2NhbGxlZTYsIG51bGwsIFtbMSwgMTFdXSk7CiAgICAgICAgICAgICAgfSkpKS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIGPmtYvor5XmjInpkq7lj5HpgIEKICAgIHNlbmRSZXF1ZXN0OiBmdW5jdGlvbiBzZW5kUmVxdWVzdCgpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTgoKSB7CiAgICAgICAgdmFyIG9wdGlvbnMsIHJlc3BvbnNlLCByZXN1bHQ7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDgpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0OC5wcmV2ID0gMDsKICAgICAgICAgICAgICBvcHRpb25zID0gewogICAgICAgICAgICAgICAgbWV0aG9kOiBfdGhpczgucmVxdWVzdE1ldGhvZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgaWYgKF90aGlzOC5yZXF1ZXN0TWV0aG9kID09PSAnUE9TVCcpIHsKICAgICAgICAgICAgICAgIC8vIOeugOWNleekuuS+i++8jOWunumZheS4reWPr+agueaNruaOpeWPo+mcgOaxguWujOWWhOivt+axguS9k+etieWGheWuuQogICAgICAgICAgICAgICAgb3B0aW9ucy5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoe30pOwogICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gewogICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKF90aGlzOC5yZXF1ZXN0VXJsLCBvcHRpb25zKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIHJlc3BvbnNlID0gX2NvbnRleHQ4LnNlbnQ7CiAgICAgICAgICAgICAgX2NvbnRleHQ4Lm5leHQgPSA4OwogICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICByZXN1bHQgPSBfY29udGV4dDguc2VudDsKICAgICAgICAgICAgICBfdGhpczgucmVzcG9uc2VEYXRhID0gSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKTsKICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDE1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0OC5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX2NvbnRleHQ4LnQwID0gX2NvbnRleHQ4WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzOC5yZXNwb25zZURhdGEgPSAiXHU4QkY3XHU2QzQyXHU1MUZBXHU5NTE5OiAiLmNvbmNhdChfY29udGV4dDgudDAubWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTgsIG51bGwsIFtbMCwgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfQogIH0KfTs="},null]}