{"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\\featuresArithmetic\\referDataManager\\areaReferDataManager\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\featuresArithmetic\\referDataManager\\areaReferDataManager\\index.vue","mtime":1738954563567},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5tYXAuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHV0aWxzIGZyb20gJ0AvdXRpbHMnOwppbXBvcnQgeyBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5LmpzJzsKaW1wb3J0IHRhYmxlTWl4aW4gZnJvbSAnQC9taXhpbnMvdGFibGUuanMnOyAvLyDliJfooahtaXhpbnMKaW1wb3J0IGFyZWFEaWFsb2cgZnJvbSAnLi9hcmVhRGlhbG9nLnZ1ZSc7CmltcG9ydCBBUEkgZnJvbSAnQC9hcGkvYnVzaW5lc3MvYXJlYS5qcyc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRGF0YURpbWVuc2lvbicsCiAgY29tcG9uZW50czogewogICAgYXJlYURpYWxvZzogYXJlYURpYWxvZwogIH0sCiAgbWl4aW5zOiBbdGFibGVNaXhpbl0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBjaGVja0xnID0gZnVuY3Rpb24gY2hlY2tMZyhydWxlLCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIG51bVRlbXAgPSB2YWx1ZTsKICAgICAgICB2YXIgbnVtID0gcGFyc2VGbG9hdChudW1UZW1wKTsKICAgICAgICBpZiAobnVtIDwgMCB8fCBudW0gPiAxODApIHsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign57uP5bqm5ZyoMC0xODDkuYvpl7Qs6K+35qC55o2u5o+Q56S65aGr5YaZIScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgICB2YXIgY2hlY2tsdCA9IGZ1bmN0aW9uIGNoZWNrbHQocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBudW1UZW1wID0gdmFsdWU7CiAgICAgICAgdmFyIG51bSA9IHBhcnNlRmxvYXQobnVtVGVtcCk7CiAgICAgICAgaWYgKG51bSA8IDAgfHwgbnVtID4gOTApIHsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign57uP5bqm5ZyoMC05MOS5i+mXtCzor7fmoLnmja7mj5DnpLrloavlhpkhJykpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICAgIHZhciBUUkVFX0NPTkZJRyA9IHsKICAgICAgdHJlZVByb3BzOiB7CiAgICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsCiAgICAgICAgbGFiZWw6ICduYW1lJywKICAgICAgICBpc0xlYWY6ICdpc0xlYWYnCiAgICAgIH0sCiAgICAgIGV4cGFuZEFsbDogZmFsc2UsCiAgICAgIGRlZmF1bHRFeHBhbmRlZEtleXM6IFtdLAogICAgICBkZWZhdWx0RGF0YTogewogICAgICAgIG5hbWU6ICcnLAogICAgICAgIGNvZGU6ICcnLAogICAgICAgIGxvbmdpdHVkZTogJycsCiAgICAgICAgbGF0aXR1ZGU6ICcnCiAgICAgIH0sCiAgICAgIC8vIOW9k+WJjemAieaLqeiKgueCuQogICAgICBjdXJEYXRhOiB7CiAgICAgICAgaWQ6ICdyb290JywKICAgICAgICBuYW1lOiAn5Lit5Zu9JwogICAgICB9LAogICAgICBjdXJOb2RlOiB7fSwKICAgICAgYWN0aW9uVHlwZTogJycsCiAgICAgIGZvcm1SdWxlczogewogICAgICAgIG5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICBjb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn57yW56CB5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogJ15bMC05XSskJywKICAgICAgICAgIG1lc3NhZ2U6ICfnvJbnoIHkuLogMTIg5YiwIDE1IOS9jeaVsOWtlyzor7fmoLnmja7mj5DnpLrloavlhpknLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDEyLAogICAgICAgICAgbWF4OiAxNSwKICAgICAgICAgIG1lc3NhZ2U6ICfnvJbnoIHkuLogMTIg5YiwIDE1IOS9jeaVsOWtlyzor7fmoLnmja7mj5DnpLrloavlhpknLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICBsb25naXR1ZGU6IFt7CiAgICAgICAgICB2YWxpZGF0b3I6IGNoZWNrTGcsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9LCB7CiAgICAgICAgICBwYXR0ZXJuOiAnXlswLTldKyguWzAtOV17MSw2fSk/JCcsCiAgICAgICAgICBtZXNzYWdlOiAn5qC85byP6ZSZ6K+vLOivt+agueaNruaPkOekuuWhq+WGmScsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgIGxhdGl0dWRlOiBbewogICAgICAgICAgdmFsaWRhdG9yOiBjaGVja2x0LAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogJ15bMC05XSsoLlswLTldezEsNn0pPyQnLAogICAgICAgICAgbWVzc2FnZTogJ+agvOW8j+mUmeivryzor7fmoLnmja7mj5DnpLrloavlhpknLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XQogICAgICB9CiAgICB9OwogICAgdmFyIFRBQkxFX0NPTkZJRyA9IHsKICAgICAgLy8g5YiX6KGo6KGo5aS0CiAgICAgIGNvbHVtbnM6IFt7CiAgICAgICAgbGFiZWw6ICfooYzmlL/ljLrliJLlkI3np7AnLAogICAgICAgIHByb3A6ICduYW1lJywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn6KGM5pS/5Yy65YiS57yW56CBJywKICAgICAgICBwcm9wOiAnY29kZScsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+e7j+W6picsCiAgICAgICAgcHJvcDogJ2tleScsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+e6rOW6picsCiAgICAgICAgcHJvcDogJ2tleScsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aOkuW6j+WPtycsCiAgICAgICAgcHJvcDogJ3NuJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICdzbicsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH1dLAogICAgICBkZWZhdWx0RmlsdGVyOiBbewogICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICBwcm9wZXJ0eTogJ3BhcmVudElkJywKICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgdmFsdWU6ICcnCiAgICAgIH1dLAogICAgICByb3dEYXRhOiB7fSwKICAgICAgc2VsZWN0aW9uczogW10sCiAgICAgIHNlcXVlbmNlOiB7fQogICAgfTsKICAgIHZhciBESUFMT0dfQ09ORklHID0gewogICAgICBkaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgZGlhbG9nVGl0bGU6ICfmlrDlop4nLAogICAgICBmaWVsZERpYWxvZ1Zpc2libGU6IGZhbHNlLAogICAgICBkaWFsb2dkRGF0YToge30sCiAgICAgIGRyYXdlclZpc2libGU6IGZhbHNlLAogICAgICBkcmF3ZXJUaXRsZTogJycsCiAgICAgIHBhcmVudFJvdzoge30KICAgIH07CiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7CiAgICAgIHRyZWVEYXRhOiBbXQogICAgfSwgVFJFRV9DT05GSUcpLCBUQUJMRV9DT05GSUcpLCBESUFMT0dfQ09ORklHKSwge30sIHsKICAgICAgdXBsb2FkVmlzaWJsZTogZmFsc2UsCiAgICAgIHVwbG9hZExvYWRpbmc6IGZhbHNlLAogICAgICBzb3J0ZXI6IFt7CiAgICAgICAgZGlyZWN0aW9uOiAnQVNDJywKICAgICAgICBwcm9wZXJ0eTogJ3NuXycKICAgICAgfV0KICAgIH0pOwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIC8vIOmFjee9ruWIl+ihqOaOpeWPo+aWueazle+8muWPquaciemFjee9ruS6huivpeiuoeeul+WxnuaApyDmiY3kvJrmiafooYwgdGFibGUgbWl4aW5z5Lit55qEZ2V0RGF0YeaWueazlQogICAgZGF0YU1ldGhvZDogZnVuY3Rpb24gZGF0YU1ldGhvZCgpIHsKICAgICAgcmV0dXJuIEFQSS5nZXRBcmVhTGlzdDsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICBnZXRUcmVlTm9kZXM6IGZ1bmN0aW9uIGdldFRyZWVOb2Rlcyhub2RlLCByZXNvbHZlKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgcGFyYW1zOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmICghKG5vZGUubGV2ZWwgPT09IDApKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCByZXNvbHZlKFt7CiAgICAgICAgICAgICAgICBjb2RlOiAnQ2hpbmEnLAogICAgICAgICAgICAgICAgZnVsbElkOiAnL3Jvb3QnLAogICAgICAgICAgICAgICAgZnVsbE5hbWU6ICcvQ2hpbmEnLAogICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLAogICAgICAgICAgICAgICAgaGFzQ2hpbGRyZW46IDAsCiAgICAgICAgICAgICAgICBpc0xlYWY6IGZhbHNlLAogICAgICAgICAgICAgICAgaWQ6ICdyb290JywKICAgICAgICAgICAgICAgIGxhdGl0dWRlOiAwLAogICAgICAgICAgICAgICAgbGV2ZWxDb2RlOiAnQ09VTlRSWScsCiAgICAgICAgICAgICAgICBsb25naXR1ZGU6IDAsCiAgICAgICAgICAgICAgICBuYW1lOiAn5Lit5Zu9JywKICAgICAgICAgICAgICAgIHBhcmVudElkOiBudWxsLAogICAgICAgICAgICAgICAgcGtWYWw6ICcnLAogICAgICAgICAgICAgICAgc246IDAKICAgICAgICAgICAgICB9XSkpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YS5pZCkgewogICAgICAgICAgICAgICAgcGFyYW1zID0gX3RoaXMucXMuc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUuZGF0YS5pZAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBBUEkucXVlcnlBcmVhQnlQYXJlbnRJZChwYXJhbXMpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICB2YXIgdHJlZURhdGEgPSByZXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc0xlYWYgPSBpdGVtLmhhc0NoaWxkcmVuID09PSAwID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodHJlZURhdGEpOwogICAgICAgICAgICAgICAgfSkuZmluYWxseShmdW5jdGlvbiAoKSB7fSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlc29sdmUoe30pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGZvcm1hdEFyZWFUcmVlOiBmdW5jdGlvbiBmb3JtYXRBcmVhVHJlZSh2YWx1ZSkgewogICAgICByZXR1cm4gW107CiAgICB9LAogICAgcmVsb2FkVHJlZTogZnVuY3Rpb24gcmVsb2FkVHJlZSgpIHsKICAgICAgdGhpcy4kcmVmcy5hcHBBc3luY1RyZWUuZ2V0VHJlZURhdGEoKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb246IHRyZWVBY3Rpb25z5pSv5oyB5Ye95pWw5Lmf5pSv5oyB5pWw57uE77yM55Sx5LqO5a6e6ZmF5Zy65pmv5b2T5LitIOWPr+iDveS8muWKqOaAgeiuvue9ruaMiemSru+8jOaVheS7peWHveaVsOekuuS+i+adpeWxleekug0KICAgICAqIEBwYXJhbSB7Kn0gZGF0YSDlvZPliY3ngrnlh7voioLngrnmlbDmja4NCiAgICAgKiBAcmV0dXJuIHsqfSDlvZPliY3oioLngrnlsZXnpLrnmoTmk43kvZzpobnmlbDnu4QNCiAgICAgKi8KICAgIHRyZWVBY3Rpb25zOiBmdW5jdGlvbiB0cmVlQWN0aW9ucyhkYXRhKSB7CiAgICAgIC8vIOagueiKgueCueWIpOaWreaWueW8j+S7peS4muWKoeS4uuWHhu+8jOatpOWkhOS7heS4uuekuuS+iwogICAgICByZXR1cm4gW3sKICAgICAgICBsYWJlbDogJ+a3u+WKoCcsCiAgICAgICAgdHlwZTogJ2FkZCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmFkZE5vZGUKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn57yW6L6RJywKICAgICAgICB0eXBlOiAnZWRpdCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmVkaXROb2RlLAogICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgIHJldHVybiByb3cuaWQgIT09ICdyb290JzsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WIoOmZpCcsCiAgICAgICAgdHlwZTogJ2RlbGV0ZScsCiAgICAgICAgbWV0aG9kOiB0aGlzLmRlbE5vZGUsCiAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgcmV0dXJuIHJvdy5pZCAhPT0gJ3Jvb3QnOwogICAgICAgIH0sCiAgICAgICAgdGlwczogJ+WPiuWFtuWtkOiKgueCuScKICAgICAgfV07CiAgICB9LAogICAgb25UcmVlTm9kZUNsaWNrOiBmdW5jdGlvbiBvblRyZWVOb2RlQ2xpY2soZGF0YSkgewogICAgICB2YXIgX3RoaXMkY3VyRGF0YTsKICAgICAgaWYgKGRhdGEuaWQgPT09ICgoX3RoaXMkY3VyRGF0YSA9IHRoaXMuY3VyRGF0YSkgPT09IG51bGwgfHwgX3RoaXMkY3VyRGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkY3VyRGF0YS5pZCkpIHJldHVybjsKICAgICAgdGhpcy5jdXJEYXRhID0gX29iamVjdFNwcmVhZCh7fSwgZGF0YSk7CiAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgfSwKICAgIGdldExldmVubENvZGU6IGZ1bmN0aW9uIGdldExldmVubENvZGUocGxldmVsY29kZSkgewogICAgICB2YXIgbGV2ZWxDb2RlID0gJyc7CiAgICAgIHN3aXRjaCAocGxldmVsY29kZSkgewogICAgICAgIGNhc2UgJ0NPVU5UUlknOgogICAgICAgICAgbGV2ZWxDb2RlID0gJ3Byb3ZpbmNlJzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3Byb3ZpbmNlJzoKICAgICAgICAgIC8v55yBCiAgICAgICAgICBsZXZlbENvZGUgPSAnY2l0eSc7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjaXR5JzoKICAgICAgICAgIC8v5biCCiAgICAgICAgICBsZXZlbENvZGUgPSAnY291bnRyeSc7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjb3VudHJ5JzoKICAgICAgICAgIC8v5Yy65Y6/CiAgICAgICAgICBsZXZlbENvZGUgPSAndG93bic7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd0b3duJzoKICAgICAgICAgIC8v5Lmh6ZWHCiAgICAgICAgICBsZXZlbENvZGUgPSAndmlsbGFnZSc7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd2aWxsYWdlJzoKICAgICAgICAgIC8v5p2RCiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgbGV2ZWxDb2RlID0gJyc7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgICByZXR1cm4gbGV2ZWxDb2RlOwogICAgfSwKICAgIGJlZm9yZUFjdGlvbnNDbGljazogZnVuY3Rpb24gYmVmb3JlQWN0aW9uc0NsaWNrKGFjdGlvbikgewogICAgICB2YXIgX25vZGUkcGFyZW50OwogICAgICB2YXIgZGF0YSA9IGFjdGlvbi5kYXRhLAogICAgICAgIG5vZGUgPSBhY3Rpb24ubm9kZSwKICAgICAgICB0eXBlID0gYWN0aW9uLnR5cGU7CiAgICAgIHZhciBwYXJlbnROYW1lID0gKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwIHx8IChfbm9kZSRwYXJlbnQgPSBub2RlLnBhcmVudCkgPT09IG51bGwgfHwgX25vZGUkcGFyZW50ID09PSB2b2lkIDAgfHwgKF9ub2RlJHBhcmVudCA9IF9ub2RlJHBhcmVudC5kYXRhKSA9PT0gbnVsbCB8fCBfbm9kZSRwYXJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJHBhcmVudC5uYW1lKSB8fCAnJzsKICAgICAgdGhpcy5jdXJEYXRhID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkYXRhKSwge30sIHsKICAgICAgICBwYXJlbnROYW1lOiBwYXJlbnROYW1lCiAgICAgIH0pOwogICAgICB0aGlzLmFjdGlvblR5cGUgPSB0eXBlOwogICAgfSwKICAgIGFkZE5vZGU6IGZ1bmN0aW9uIGFkZE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBjb2RlLCBuYW1lLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBpZCwgUGxldmVsQ29kZSwgcG5hbWUsIG5ld05vZGUsIF95aWVsZCRBUEkkc2F2ZUFyZWEsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZSwgbGF0aXR1ZGUgPSBwYXJhbXMubGF0aXR1ZGUsIGxvbmdpdHVkZSA9IHBhcmFtcy5sb25naXR1ZGU7CiAgICAgICAgICAgICAgaWQgPSBub2RlLmlkLCBQbGV2ZWxDb2RlID0gbm9kZS5QbGV2ZWxDb2RlLCBwbmFtZSA9IG5vZGUucG5hbWU7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIHBhcmVudElkOiBpZCwKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgbGF0aXR1ZGU6IGxhdGl0dWRlLAogICAgICAgICAgICAgICAgbG9uZ2l0dWRlOiBsb25naXR1ZGUsCiAgICAgICAgICAgICAgICBsZXZlbENvZGU6IF90aGlzMi5nZXRMZXZlbmxDb2RlKFBsZXZlbENvZGUpCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDM7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA2OwogICAgICAgICAgICAgIHJldHVybiBBUEkuc2F2ZUFyZWEobmV3Tm9kZSk7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHNhdmVBcmVhID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJHNhdmVBcmVhLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHNhdmVBcmVhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczIucmVmcmVzaFRyZWVOb2RlKCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+a3u+WKoOWMuuWIkuWksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDMpOwogICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5re75Yqg5Yy65YiS5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMywgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGVkaXROb2RlOiBmdW5jdGlvbiBlZGl0Tm9kZShwYXJhbXMpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIG5ld05vZGUsIF95aWVsZCRBUEkkc2F2ZUFyZWEyLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IF9vYmplY3RTcHJlYWQoe30sIHBhcmFtcyk7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnNhdmVBcmVhKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRzYXZlQXJlYTIgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkc2F2ZUFyZWEyLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHNhdmVBcmVhMi5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXMzLnJlZnJlc2hUcmVlTm9kZSh0cnVlKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn57yW6L6R5Yy65YiS5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAxMDsKICAgICAgICAgICAgICBfY29udGV4dDMudDAgPSBfY29udGV4dDNbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQzLnQwIHx8ICfnvJbovpHljLrliJLlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1sxLCAxMF1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZGVsTm9kZTogZnVuY3Rpb24gZGVsTm9kZShwYXJhbXMsIGRhdGEpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zLCBfeWllbGQkQVBJJGRlbGV0ZUFyZWEsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBxdWVyeVBhcmFtcyA9ICdpZHM9JyArIGRhdGEuaWQ7CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmRlbGV0ZUFyZWEocXVlcnlQYXJhbXMpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRkZWxldGVBcmVhID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGRlbGV0ZUFyZWEuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZGVsZXRlQXJlYS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LnJlZnJlc2hUcmVlTm9kZSh0cnVlKTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTljLrliJLmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn5Yig6Zmk5Yy65YiS5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxMDsKICAgICAgICAgICAgICBfY29udGV4dDQudDAgPSBfY29udGV4dDRbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ0LnQwIHx8ICfliKDpmaTljLrliJLlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCwgbnVsbCwgW1sxLCAxMF1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5YiX6KGoIC0tLS0tLS0tLS0tLS0tLS0tCiAgICBvbkJlZm9yZUdldERhdGE6IGZ1bmN0aW9uIG9uQmVmb3JlR2V0RGF0YShxdWVyeVBhcmFtcywgZm9ybURhdGEpIHsKICAgICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLmRlZmF1bHRGaWx0ZXIsICdwYXJlbnRJZCcsIHRoaXMuY3VyRGF0YS5pZCk7CiAgICB9LAogICAgaGFuZGxlU2VsZWN0c0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2VsZWN0c0NoYW5nZShhcnIpIHsKICAgICAgdGhpcy5zZWxlY3Rpb25zID0gYXJyOwogICAgfSwKICAgIGFkZFN1Yk5vZGU6IGZ1bmN0aW9uIGFkZFN1Yk5vZGUoKSB7CiAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSAn5paw5aKe5Yy65YiSJzsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gewogICAgICAgIGNvZGU6ICcnLAogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHBhcmVudElkOiB0aGlzLmN1ckRhdGEuaWQsCiAgICAgICAgbG9uZ2l0dWRlOiAnJywKICAgICAgICBsYXRpdHVkZTogJycKICAgICAgfTsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBlZGl0U3ViTm9kZTogZnVuY3Rpb24gZWRpdFN1Yk5vZGUocm93KSB7CiAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSAiXHU3RjE2XHU4RjkxIC0gIi5jb25jYXQocm93Lm5hbWUpOwogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgZGVsZXRlU3ViTm9kZTogZnVuY3Rpb24gZGVsZXRlU3ViTm9kZSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHRoaXMuJGNvbmZpcm0oIlx1NkI2NFx1NjRDRFx1NEY1Q1x1NUMwNlx1NTIyMFx1OTY2NFx1OTAwOVx1NEUyRFx1NTMzQVx1NTIxMiwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIsICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgdmFyIGlkcywgZGF0YSwgX3lpZWxkJEFQSSRkZWxldGVBcmVhMiwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlkcyA9IF90aGlzNS5zZWxlY3Rpb25zLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgZGF0YSA9ICdpZHM9JyArIGlkcy5qb2luKCcsJyk7CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmRlbGV0ZUFyZWEoZGF0YSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfeWllbGQkQVBJJGRlbGV0ZUFyZWEyID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGRlbGV0ZUFyZWEyLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJGRlbGV0ZUFyZWEyLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczUuZ2V0RGF0YSgpOwogICAgICAgICAgICAgICAgX3RoaXM1LnJlZnJlc2hUcmVlTm9kZSgpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOWMuuWIkuaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfliKDpmaTljLrliJLlpLHotKXvvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0NS50MCA9IF9jb250ZXh0NVsiY2F0Y2giXSgyKTsKICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDUudDAgfHwgJ+WIoOmZpOWMuuWIkuWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzIsIDExXV0pOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICB1cGRhdGVTZXF1ZW5jZTogZnVuY3Rpb24gdXBkYXRlU2VxdWVuY2UoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zZXF1ZW5jZSkubGVuZ3RoKSB7CiAgICAgICAgQVBJLnVwZGF0ZVNlcXVlbmNlKHRoaXMuc2VxdWVuY2UpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgaWYgKHJlcy5zdGF0ZSkgewogICAgICAgICAgICBfdGhpczYuZ2V0RGF0YSgpOwogICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2UoewogICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywKICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfkv53lrZjlj7fmnKrkv67mlLknCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBoYW5kbGVDaGFuZ2VTZXF1OiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VTZXF1KHJvdykgewogICAgICB0aGlzLnNlcXVlbmNlW3Jvdy5pZF0gPSByb3cuc247CiAgICB9LAogICAgb25EaWFsb2dDb25maXJtOiBmdW5jdGlvbiBvbkRpYWxvZ0NvbmZpcm0oKSB7CiAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgICB0aGlzLnJlZnJlc2hUcmVlTm9kZSgpOwogICAgfSwKICAgIHJlZnJlc2hUcmVlTm9kZTogZnVuY3Rpb24gcmVmcmVzaFRyZWVOb2RlKCkgewogICAgICB2YXIgaXNQYXJlbnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlOwogICAgICB2YXIgdHJlZSA9IHRoaXMuJHJlZnMuYXBwQXN5bmNUcmVlLmdldEVsVHJlZSgpOwogICAgICB2YXIgbm9kZSA9IGlzUGFyZW50ID8gdHJlZS5nZXROb2RlKHRoaXMuY3VyRGF0YS5wYXJlbnRJZCkgOiB0cmVlLmdldE5vZGUodGhpcy5jdXJEYXRhLmlkKTsKICAgICAgaWYgKG5vZGUpIHsKICAgICAgICBub2RlLmxvYWRlZCA9IGZhbHNlOwogICAgICAgIG5vZGUuZXhwYW5kKCk7IC8vIOS4u+WKqOiwg+eUqOWxleW8gOiKgueCueaWueazle+8jOmHjeaWsOafpeivouivpeiKgueCueS4i+eahOaJgOacieWtkOiKgueCuQogICAgICB9CiAgICB9CiAgfQp9Ow=="},null]}