{"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\\dataResource\\dataShare\\shareDataCatalog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataShare\\shareDataCatalog\\index.vue","mtime":1737399334026},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB0YWJsZU1peGluIGZyb20gJ0AvbWl4aW5zL3RhYmxlLmpzJzsKaW1wb3J0IEFkZEVkaXREaWFsb2cgZnJvbSAnLi9BZGRFZGl0RGlhbG9nLnZ1ZSc7CmltcG9ydCBmaWVsZHNNYW5hZ2UgZnJvbSAnLi9maWVsZHNNYW5hZ2UudnVlJzsKaW1wb3J0IEFQSSBmcm9tICdAL2FwaS9idXNpbmVzcy9zaGFyZURhdGFDYXRhbG9nJzsKaW1wb3J0IFB1dE91dERpYWxvZyBmcm9tICcuL1B1dE91dERpYWxvZy52dWUnOwppbXBvcnQgUmVzb3VyY2VBdXRob3JpemUgZnJvbSAnLi9SZXNvdXJjZUF1dGhvcml6ZS52dWUnOwpleHBvcnQgZGVmYXVsdCB7CiAgY29tcG9uZW50czogewogICAgUmVzb3VyY2VBdXRob3JpemU6IFJlc291cmNlQXV0aG9yaXplLAogICAgUHV0T3V0RGlhbG9nOiBQdXRPdXREaWFsb2csCiAgICBmaWVsZHNNYW5hZ2U6IGZpZWxkc01hbmFnZSwKICAgIEFkZEVkaXREaWFsb2c6IEFkZEVkaXREaWFsb2cKICB9LAogIG1peGluczogW3RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdmFyIFRSRUVfQ09ORklHID0gewogICAgICB0cmVlUHJvcHM6IHsKICAgICAgICB2YWx1ZTogJ2lkJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIGRlZmF1bHRFeHBhbmRlZEtleXM6IFsnMCddLAogICAgICB0cmVlRmllbGRzOiBbewogICAgICAgIGxhYmVsOiAn6LWE5rqQ55uu5b2V5ZCN56ewJywKICAgICAgICBwcm9wOiAnbmFtZScsCiAgICAgICAgbGFiZWxXaWR0aDogJzEyMCcsCiAgICAgICAgcnVsZXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfotYTmupDnm67lvZXlkI3np7DkuI3og73kuLrnqbonCiAgICAgICAgfV0KICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn6LWE5rqQ55uu5b2V57yW56CBJywKICAgICAgICBwcm9wOiAnY29kZScsCiAgICAgICAgbGFiZWxXaWR0aDogJzEyMCcsCiAgICAgICAgcnVsZXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfotYTmupDnm67lvZXnvJbnoIHkuI3og73kuLrnqbonCiAgICAgICAgfV0KICAgICAgfV0sCiAgICAgIGN1ck5vZGU6IHt9IC8vIOW9k+WJjemAieaLqeiKgueCuQogICAgfTsKICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIFRSRUVfQ09ORklHKSwge30sIHsKICAgICAgY3JlYXRlZExpc3Q6IFt7CiAgICAgICAgbGFiZWw6ICflj5HluIMnLAogICAgICAgIHZhbHVlOiAxCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+acquWPkeW4gycsCiAgICAgICAgdmFsdWU6IDAKICAgICAgfV0sCiAgICAgIGNvbHVtbnM6IFt7CiAgICAgICAgbGFiZWw6ICfotYTmupDlkI3np7AnLAogICAgICAgIHByb3A6ICduYW1lJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfmlbDmja7lupPooajlkI0nLAogICAgICAgIHByb3A6ICd0YWJsZUNvZGUnLAogICAgICAgIHdpZHRoOiAnMTUwcHgnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+i1hOa6kOabtOaWsOWRqOacnycsCiAgICAgICAgcHJvcDogJ3VwZGF0ZVJhdGUnLAogICAgICAgIHdpZHRoOiAnMTEwcHgnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+i1hOa6kOe6p+WIqycsCiAgICAgICAgcHJvcDogJ2xldmVsJywKICAgICAgICB3aWR0aDogJzgwcHgnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfmmK/lkKblvIDlkK/lupPooajlhbHkuqsnLAogICAgICAgIHByb3A6ICdpc0RhdGFiYXNlJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICdpc0RhdGFiYXNlJywKICAgICAgICB3aWR0aDogJzEwMHB4JywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5piv5ZCm5byA5ZCv5o6l5Y+j5YWx5LqrJywKICAgICAgICBwcm9wOiAnaXNBcGknLAogICAgICAgIGRhdGFUeXBlOiAnc2xvdCcsCiAgICAgICAgc2xvdDogJ2lzQXBpJywKICAgICAgICB3aWR0aDogJzEwMHB4JywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5piv5ZCm5byA5ZCv5paH5Lu25YWx5LqrJywKICAgICAgICBwcm9wOiAnaXNGaWxlJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICdpc0ZpbGUnLAogICAgICAgIHdpZHRoOiAnMTAwcHgnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICflj5HluIPnirbmgIEnLAogICAgICAgIHByb3A6ICdkZXBsb3llZCcsCiAgICAgICAgZGF0YVR5cGU6ICdzbG90JywKICAgICAgICBzbG90OiAnZGVwbG95ZWQnLAogICAgICAgIHdpZHRoOiAnMTAwcHgnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgZGF0YVR5cGU6ICdvcHRpb24nLAogICAgICAgIGxhYmVsOiAn5pON5L2cJywKICAgICAgICB3aWR0aDogJzI1MHB4JywKICAgICAgICBmaXhlZDogJ3JpZ2h0JywKICAgICAgICBvcGVyYXRpb246IFt7CiAgICAgICAgICBuYW1lOiAn5a2X5q61566h55CGJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGNvbG9yOiAnIzQwOWVmZicsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi1zLW9yZGVyJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICAgICAgICBfdGhpcy5maWVsZERpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICflj5HluIPlu7rooagnLAogICAgICAgICAgdHlwZTogJ3RleHQnLAogICAgICAgICAgc2l6ZTogJ21pbmknLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tcy1wcm9tb3Rpb24nLAogICAgICAgICAgY29sb3I6ICcjZmE5MTJhJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgICByZXR1cm4gcm93LmRlcGxveWVkU3RhdHVzICE9PSAnMSc7CiAgICAgICAgICB9LAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5wdXRPdXRDaGFuZ2Uocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn6LWE5rqQ5o6I5p2DJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXNldHRpbmcnLAogICAgICAgICAgcGxhaW46IHRydWUsCiAgICAgICAgICBzaG93SGlkZTogZnVuY3Rpb24gc2hvd0hpZGUocm93KSB7CiAgICAgICAgICAgIHJldHVybiByb3cuaXNEYXRhYmFzZSA9PT0gJzEnOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgICAgICAgICAgX3RoaXMucmVzb3VyY2VEaWFsb2cgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICfmjqXlj6PlhbHkuqsnLAogICAgICAgICAgdHlwZTogJ3RleHQnLAogICAgICAgICAgc2l6ZTogJ21pbmknLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tc2V0dGluZycsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgICAgcmV0dXJuIHJvdy5pc0FwaSA9PT0gJzEnOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuZ29Ub2RhdGFTZXJ2aWNlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+aWh+S7tuWFseS6qycsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi10aWNrZXRzJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgICByZXR1cm4gcm93LmlzRmlsZSA9PT0gJzEnOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuZ290b0ZpbGUocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Yig6ZmkJywKICAgICAgICAgIGljb246ICdlbC1pY29uLWRlbGV0ZScsCiAgICAgICAgICBjb2xvcjogJ3JlZCcsCiAgICAgICAgICBjbGlja0Z1bjogZnVuY3Rpb24gY2xpY2tGdW4ocm93KSB7CiAgICAgICAgICAgIF90aGlzLmRlbFRhYmxlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfV0sCiAgICAgIGRlZmF1bHRGaWx0ZXI6IFt7CiAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgIHByb3BlcnR5OiAnY2F0YWxvZ0lkJywKICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgdmFsdWU6ICcnCiAgICAgIH1dLAogICAgICBkaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgZmllbGREaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgcHV0T3V0VmlzaWJsZTogZmFsc2UsCiAgICAgIHJlc291cmNlRGlhbG9nOiBmYWxzZSwKICAgICAgZGlhbG9nVGl0bGU6ICfmlrDlop4nLAogICAgICBtdWx0aXBsZVNlbGVjdGlvbjogW10KICAgIH0pOwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGRhdGFNZXRob2Q6IGZ1bmN0aW9uIGRhdGFNZXRob2QoKSB7CiAgICAgIHJldHVybiBBUEkuc2hhcmVDYXRhbG9nc1RhYmxlOwogICAgfQogIH0sCiAgbWV0aG9kczogewogICAgLy8g5bem6L655qCRCiAgICBvbkJlZm9yZUdldERhdGE6IGZ1bmN0aW9uIG9uQmVmb3JlR2V0RGF0YShxdWVyeVBhcmFtcywgZm9ybURhdGEpIHsKICAgICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLmRlZmF1bHRGaWx0ZXIsICdjYXRhbG9nSWQnLCB0aGlzLmN1ck5vZGUuaWQpOwogICAgfSwKICAgIGdldFRyZWVOb2RlczogZnVuY3Rpb24gZ2V0VHJlZU5vZGVzKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJGdldFNoYXJlVHIsIF95aWVsZCRBUEkkZ2V0U2hhcmVUcjIsIHZhbHVlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBBUEkuZ2V0U2hhcmVUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkQVBJJGdldFNoYXJlVHIgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0U2hhcmVUcjIgPSBfeWllbGQkQVBJJGdldFNoYXJlVHIudmFsdWU7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkQVBJJGdldFNoYXJlVHIyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRBUEkkZ2V0U2hhcmVUcjI7CiAgICAgICAgICAgICAgX3RoaXMyLmRlZmF1bHRFeHBhbmRlZEtleXMgPSBbKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZVswXS5pZCkgfHwgJyddOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIHsKICAgICAgICAgICAgICAgIGRhdGE6IHZhbHVlIHx8IFtdCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByZWxvYWRUcmVlOiBmdW5jdGlvbiByZWxvYWRUcmVlKCkgewogICAgICB0aGlzLiRyZWZzLmFwcEFzeW5jVHJlZS5nZXRUcmVlRGF0YSgpOwogICAgfSwKICAgIHRyZWVBY3Rpb25zOiBmdW5jdGlvbiB0cmVlQWN0aW9ucyhkYXRhKSB7CiAgICAgIHJldHVybiBbewogICAgICAgIGxhYmVsOiAn5re75YqgJywKICAgICAgICB0eXBlOiAnYWRkJywKICAgICAgICBtZXRob2Q6IHRoaXMuYWRkTm9kZQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfnvJbovpEnLAogICAgICAgIHR5cGU6ICdlZGl0JywKICAgICAgICBtZXRob2Q6IHRoaXMuZWRpdE5vZGUKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5Yig6ZmkJywKICAgICAgICB0eXBlOiAnZGVsZXRlJywKICAgICAgICBtZXRob2Q6IHRoaXMuZGVsTm9kZQogICAgICB9XTsKICAgIH0sCiAgICBvblRyZWVOb2RlQ2xpY2s6IGZ1bmN0aW9uIG9uVHJlZU5vZGVDbGljayhub2RlKSB7CiAgICAgIHZhciBfdGhpcyRjdXJOb2RlOwogICAgICBpZiAobm9kZS5pZCA9PT0gKChfdGhpcyRjdXJOb2RlID0gdGhpcy5jdXJOb2RlKSA9PT0gbnVsbCB8fCBfdGhpcyRjdXJOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjdXJOb2RlLmlkKSkgcmV0dXJuOwogICAgICB0aGlzLmN1ck5vZGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBub2RlKTsKICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICB9LAogICAgYWRkTm9kZTogZnVuY3Rpb24gYWRkTm9kZShwYXJhbXMsIG5vZGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIGNvZGUsIG5hbWUsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGFkZFNoYXJlVHIsIHN0YXRlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZTsKICAgICAgICAgICAgICBpZCA9IG5vZGUuaWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6IGlkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDM7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA2OwogICAgICAgICAgICAgIHJldHVybiBBUEkuYWRkU2hhcmVUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRhZGRTaGFyZVRyID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGFkZFNoYXJlVHIuc3RhdGU7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczMucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+a3u+WKoOi1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDMpOwogICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5re75Yqg6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMywgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGVkaXROb2RlOiBmdW5jdGlvbiBlZGl0Tm9kZShwYXJhbXMpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIGNvZGUsIG5hbWUsIHBhcmVudElkLCBpZCwgbmV3Tm9kZSwgX3lpZWxkJEFQSSRlZGl0U2hhcmVULCBzdGF0ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgY29kZSA9IHBhcmFtcy5jb2RlLCBuYW1lID0gcGFyYW1zLm5hbWUsIHBhcmVudElkID0gcGFyYW1zLnBhcmVudElkLCBpZCA9IHBhcmFtcy5pZDsKICAgICAgICAgICAgICBuZXdOb2RlID0gewogICAgICAgICAgICAgICAgY29kZTogY29kZSwKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMjsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5lZGl0U2hhcmVUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRlZGl0U2hhcmVUID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGVkaXRTaGFyZVQuc3RhdGU7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczQucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+e8lui+kei1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDEzOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTA7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzWyJjYXRjaCJdKDIpOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0My50MCB8fCAn57yW6L6R6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMiwgMTBdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGRlbE5vZGU6IGZ1bmN0aW9uIGRlbE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZVNoYXIsIHN0YXRlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlU2hhcmVUcmVlKG5vZGUuaWQpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRyZW1vdmVTaGFyID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJHJlbW92ZVNoYXIuc3RhdGU7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczUucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOi1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDExOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSA4OwogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDQudDAgfHwgJ+WIoOmZpOi1hOa6kOebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzAsIDhdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWIl+ihqAogICAgYWRkRGF0YTogZnVuY3Rpb24gYWRkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzJGN1ck5vZGUyOwogICAgICBpZiAoISgoX3RoaXMkY3VyTm9kZTIgPSB0aGlzLmN1ck5vZGUpICE9PSBudWxsICYmIF90aGlzJGN1ck5vZGUyICE9PSB2b2lkIDAgJiYgX3RoaXMkY3VyTm9kZTIuaWQpKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6notYTmupDpobnmiYDlsZ7nm67lvZUnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5kaWFsb2dUaXRsZSA9ICfmlrDlop7lhbHkuqvotYTmupAnOwogICAgICB0aGlzLmN1cnJlbnRSb3cgPSB7CiAgICAgICAgY2F0YWxvZ0lkOiB0aGlzLmN1ck5vZGUuaWQKICAgICAgfTsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBlZGl0RGF0YTogZnVuY3Rpb24gZWRpdERhdGEocm93KSB7CiAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSAiXHU3RjE2XHU4RjkxIC0gIi5jb25jYXQocm93Lm5hbWUpOwogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgLy8g5by55bGC5Zue6LCDCiAgICBvbkNvbXBhbnlDb25maXJtOiBmdW5jdGlvbiBvbkNvbXBhbnlDb25maXJtKGRhdGEpIHsKICAgICAgdGhpcy5yZWZyZXNoKCk7CiAgICB9LAogICAgLy8g5YiX6KGo5oyJ6ZKu5LqL5Lu2CiAgICBwdXRPdXRDaGFuZ2U6IGZ1bmN0aW9uIHB1dE91dENoYW5nZShyb3cpIHsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB0aGlzLnB1dE91dFZpc2libGUgPSB0cnVlOwogICAgfSwKICAgIGdvVG9kYXRhU2VydmljZTogZnVuY3Rpb24gZ29Ub2RhdGFTZXJ2aWNlKHJvdykgewogICAgICAvLyB0aGlzLiRyb3V0ZXIucHVzaCgnL2JpelBsYXQvYXBpSW50ZXJmYWNlJyk7CiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsKICAgICAgICBuYW1lOiAnc2hhcmVEYXRhQ2F0YWxvZ0FwaUludGVyZmFjZScsCiAgICAgICAgcXVlcnk6IHsKICAgICAgICAgIGlkOiByb3cuaWQKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGdvdG9GaWxlOiBmdW5jdGlvbiBnb3RvRmlsZShyb3cpIHsKICAgICAgdGhpcy4kcm91dGVyLnB1c2goewogICAgICAgIG5hbWU6ICdvZmZsaW5lRmlsZScsCiAgICAgICAgcXVlcnk6IHsKICAgICAgICAgIGlkOiByb3cuaWQKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGdvdG9MaWJyYXJ5VGFibGU6IGZ1bmN0aW9uIGdvdG9MaWJyYXJ5VGFibGUoKSB7CiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKCcvYml6UGxhdC9kYXRhUmVzb3VyY2UvZGF0YVNoYXJlL3NoYXJlVGFibGUnKTsKICAgIH0sCiAgICBzZWxlY3RDaGFuZ2U6IGZ1bmN0aW9uIHNlbGVjdENoYW5nZShkYXRhKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gW107CiAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIF90aGlzNi5tdWx0aXBsZVNlbGVjdGlvbi5wdXNoKGl0ZW0uaWQpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDliKDpmaTkuovku7YKICAgIGRlbGV0ZVJvd0NoYW5nZTogZnVuY3Rpb24gZGVsZXRlUm93Q2hhbmdlKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNigpIHsKICAgICAgICB2YXIgZGVsSWQ7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGRlbElkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfdGhpczcubXVsdGlwbGVTZWxlY3Rpb24pKS5qb2luKCcsJyk7CiAgICAgICAgICAgICAgX3RoaXM3LiRjb25maXJtKCfmmK/lkKbliKDpmaTpgInkuK3mlbDmja4/JywgJ+aPkOekuicsIHsKICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgICAgICAgICAgdmFyIF95aWVsZCRBUEkkZGVsZXRlVGFibCwgc3RhdGU7CiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFQSS5kZWxldGVUYWJsZURhdGEoZGVsSWQpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgIF95aWVsZCRBUEkkZGVsZXRlVGFibCA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGRlbGV0ZVRhYmwuc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gOTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM3LmdldERhdGEoKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDExOwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1LnQwID0gX2NvbnRleHQ1WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ1LnQwIHx8ICfliKDpmaTlpLHotKXvvIEnKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgX2NhbGxlZTUsIG51bGwsIFtbMCwgMTFdXSk7CiAgICAgICAgICAgICAgfSkpKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5Liq5Yir5Yig6ZmkCiAgICBkZWxUYWJsZTogZnVuY3Rpb24gZGVsVGFibGUocm93KSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCJcdTZCNjRcdTY0Q0RcdTRGNUNcdTVDMDZcdTUyMjBcdTk2NjRcdUZGMDgiLmNvbmNhdChyb3cubmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZVNoYXIyLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ3LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnJlbW92ZVNoYXJlKHJvdy5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHJlbW92ZVNoYXIyID0gX2NvbnRleHQ3LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJHJlbW92ZVNoYXIyLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZVNoYXIyLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAxMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDk7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOC5nZXREYXRhKCk7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAxMzsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfliKDpmaTlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDE4OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIF9jb250ZXh0Ny5wcmV2ID0gMTU7CiAgICAgICAgICAgICAgX2NvbnRleHQ3LnQwID0gX2NvbnRleHQ3WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Ny50MCB8fCAn5Yig6Zmk5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcsIG51bGwsIFtbMCwgMTVdXSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfQogIH0KfTs="},null]}