{"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\\enumDicData\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\featuresArithmetic\\referDataManager\\enumDicData\\index.vue","mtime":1737312942170},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudGVzdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB1dGlscyBmcm9tICdAL3V0aWxzJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeS5qcyc7CmltcG9ydCB0YWJsZU1peGluIGZyb20gJ0AvbWl4aW5zL3RhYmxlLmpzJzsgLy8g5YiX6KGobWl4aW5zCmltcG9ydCBkaWN0RGlhbG9nIGZyb20gJy4vZGljdERpYWxvZy52dWUnOwppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RpY3QuanMnOwppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0RhdGFEaW1lbnNpb24nLAogIGNvbXBvbmVudHM6IHsKICAgIGRpY3REaWFsb2c6IGRpY3REaWFsb2cKICB9LAogIG1peGluczogW3RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICB2YXIgVFJFRV9DT05GSUcgPSB7CiAgICAgIHRyZWVQcm9wczogewogICAgICAgIHZhbHVlOiAnaWQnLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgZXhwYW5kQWxsOiBmYWxzZSwKICAgICAgZGVmYXVsdEV4cGFuZGVkS2V5czogWycxNDQwNjAwNzMxMTY5MTk4MDgwJ10sCiAgICAgIC8vIOatpOWkhGZpZWxkc+WGhemFjee9ruWvueixoeWxnuaAp+WMheaLrDogbGFiZWwvcHJvcC9ydWxlcy90eXBlKOaemuS4vjpzd2l0Y2gvbnVtYmVyL2lucHV0KOm7mOiupCkpL3NwYW4vCiAgICAgIHRyZWVGaWVsZHM6IFtdLAogICAgICBjdXJOb2RlOiB7fSAvLyDlvZPliY3pgInmi6noioLngrkKICAgIH07CiAgICB2YXIgVEFCTEVfQ09ORklHID0gewogICAgICAvLyDliJfooajooajlpLQKICAgICAgY29sdW1uczogW3sKICAgICAgICBsYWJlbDogJ+Wtl+WFuOmhueWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnLAogICAgICAgIGFsaWduOiAnbGVmdCcKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5a2X5YW46aG557yW56CBJywKICAgICAgICBwcm9wOiAnY29kZScKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn54q25oCBJywKICAgICAgICBwcm9wOiAnZmxhZycsCiAgICAgICAgZGF0YVR5cGU6ICdzbG90JywKICAgICAgICBzbG90OiAnZmxhZycsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH1dLAogICAgICBkZWZhdWx0RmlsdGVyOiBbewogICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICBwcm9wZXJ0eTogJ1RSRUVfSURfJywKICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgdmFsdWU6ICcnCiAgICAgIH1dLAogICAgICByb3dEYXRhOiB7fSwKICAgICAgc2VsZWN0aW9uczogW10KICAgIH07CiAgICB2YXIgRElBTE9HX0NPTkZJRyA9IHsKICAgICAgZGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ1RpdGxlOiAn5paw5aKeJywKICAgICAgZmllbGREaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgZGlhbG9nZERhdGE6IHt9LAogICAgICBkcmF3ZXJWaXNpYmxlOiBmYWxzZSwKICAgICAgZHJhd2VyVGl0bGU6ICcnLAogICAgICBwYXJlbnRSb3c6IHt9CiAgICB9OwogICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoewogICAgICB0cmVlRGF0YTogW10KICAgIH0sIFRSRUVfQ09ORklHKSwgVEFCTEVfQ09ORklHKSwgRElBTE9HX0NPTkZJRyksIHt9LCB7CiAgICAgIHVwbG9hZFZpc2libGU6IGZhbHNlLAogICAgICB1cGxvYWRMb2FkaW5nOiBmYWxzZSwKICAgICAgcmVmcmVzaFJlZGlzOiBmYWxzZQogICAgfSk7CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7CiAgICAvLyDphY3nva7liJfooajmjqXlj6Pmlrnms5XvvJrlj6rmnInphY3nva7kuobor6XorqHnrpflsZ7mgKcg5omN5Lya5omn6KGMIHRhYmxlIG1peGluc+S4reeahGdldERhdGHmlrnms5UKICAgIGRhdGFNZXRob2Q6IGZ1bmN0aW9uIGRhdGFNZXRob2QoKSB7CiAgICAgIHJldHVybiBBUEkuZ2V0RW51bURpY3Q7CiAgICB9LAogICAgYWN0aW9uVXJsOiBmdW5jdGlvbiBhY3Rpb25VcmwoXykgewogICAgICByZXR1cm4gIiIuY29uY2F0KHdpbmRvdy5jb250ZXh0LnBvcnRhbCwgIi9zeXMvc3lzRGljdGlvbmFyeS92MS9pbXBvcnREaWMiKTsKICAgIH0KICB9LCBtYXBTdGF0ZSh7CiAgICBoZWFkZXJzOiBmdW5jdGlvbiBoZWFkZXJzKHN0YXRlKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgQXV0aG9yaXphdGlvbjogIkJlYXJlciAiLmNvbmNhdChzdGF0ZS5sb2dpbi5jdXJyZW50VXNlci50b2tlbikKICAgICAgfTsKICAgIH0KICB9KSksCiAgbWV0aG9kczogewogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIC8vIOagkSAtLS0tLS0tLS0tLS0tLS0tLQogICAgZ2V0VHJlZU5vZGVzOiBmdW5jdGlvbiBnZXRUcmVlTm9kZXMoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgdmFsdWUsIHRlbXAsIHRyZWVEYXRhOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBBUEkuZ2V0RW51bURpY3RUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICB2YWx1ZSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgdGVtcCA9IHZhbHVlLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0uaWNvbjsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIHRyZWVEYXRhID0gdXRpbHMudGlsZTJuZXN0KHRlbXApOwogICAgICAgICAgICAgIF90aGlzLmRlZmF1bHRFeHBhbmRlZEtleXMgPSBbdHJlZURhdGEgPT09IG51bGwgfHwgdHJlZURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRyZWVEYXRhWzBdLmlkXSB8fCBbXTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCB7CiAgICAgICAgICAgICAgICBkYXRhOiB0cmVlRGF0YVswXSB8fCBbXQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgcmVsb2FkVHJlZTogZnVuY3Rpb24gcmVsb2FkVHJlZSgpIHsKICAgICAgdGhpcy4kcmVmcy5hcHBBc3luY1RyZWUuZ2V0VHJlZURhdGEoKTsKICAgIH0sCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb246IHRyZWVBY3Rpb25z5pSv5oyB5Ye95pWw5Lmf5pSv5oyB5pWw57uE77yM55Sx5LqO5a6e6ZmF5Zy65pmv5b2T5LitIOWPr+iDveS8muWKqOaAgeiuvue9ruaMiemSru+8jOaVheS7peWHveaVsOekuuS+i+adpeWxleekug0KICAgICAqIEBwYXJhbSB7Kn0gZGF0YSDlvZPliY3ngrnlh7voioLngrnmlbDmja4NCiAgICAgKiBAcmV0dXJuIHsqfSDlvZPliY3oioLngrnlsZXnpLrnmoTmk43kvZzpobnmlbDnu4QNCiAgICAgKi8KICAgIHRyZWVBY3Rpb25zOiBmdW5jdGlvbiB0cmVlQWN0aW9ucyhkYXRhKSB7CiAgICAgIC8vIOagueiKgueCueWIpOaWreaWueW8j+S7peS4muWKoeS4uuWHhu+8jOatpOWkhOS7heS4uuekuuS+iwogICAgICByZXR1cm4gW3sKICAgICAgICBsYWJlbDogJ+a3u+WKoCcsCiAgICAgICAgdHlwZTogJ2FkZCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmFkZE5vZGUKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn57yW6L6RJywKICAgICAgICB0eXBlOiAnZWRpdCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmVkaXROb2RlLAogICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgIHJldHVybiByb3cudHlwZUtleSAhPT0gIlNZU19ESUNUIjsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WIoOmZpCcsCiAgICAgICAgdHlwZTogJ2RlbGV0ZScsCiAgICAgICAgbWV0aG9kOiB0aGlzLmRlbE5vZGUsCiAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgcmV0dXJuIHJvdy50eXBlS2V5ICE9PSAiU1lTX0RJQ1QiOwogICAgICAgIH0sCiAgICAgICAgdGlwczogJ+WPiuWFtuWtkOiKgueCuScKICAgICAgfV07CiAgICB9LAogICAgb25UcmVlTm9kZUNsaWNrOiBmdW5jdGlvbiBvblRyZWVOb2RlQ2xpY2sobm9kZSkgewogICAgICB2YXIgX3RoaXMkY3VyTm9kZTsKICAgICAgaWYgKG5vZGUuaWQgPT09ICgoX3RoaXMkY3VyTm9kZSA9IHRoaXMuY3VyTm9kZSkgPT09IG51bGwgfHwgX3RoaXMkY3VyTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkY3VyTm9kZS5pZCkpIHJldHVybjsKICAgICAgdGhpcy5jdXJOb2RlID0gX29iamVjdFNwcmVhZCh7fSwgbm9kZSk7CiAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgfSwKICAgIGFkZE5vZGU6IGZ1bmN0aW9uIGFkZE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciB0eXBlS2V5LCBuYW1lLCBpZCwgbmV3Tm9kZSwgX3lpZWxkJEFQSSRzYXZlRW51bURpLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgdHlwZUtleSA9IHBhcmFtcy50eXBlS2V5LCBuYW1lID0gcGFyYW1zLm5hbWU7CiAgICAgICAgICAgICAgaWQgPSBub2RlLmlkOwogICAgICAgICAgICAgIG5ld05vZGUgPSB7CiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sCiAgICAgICAgICAgICAgICBpZDogIiIsCiAgICAgICAgICAgICAgICB0eXBlR3JvdXBLZXk6IGlkID09IDAgPyBub2RlLnR5cGVLZXkgOiBub2RlLnR5cGVHcm91cEtleSwKICAgICAgICAgICAgICAgIHBhcmVudElkOiBpZCwKICAgICAgICAgICAgICAgIGlzTGVhZjogIk4iLAogICAgICAgICAgICAgICAgc3RydVR5cGU6IDEsCiAgICAgICAgICAgICAgICB0eXBlS2V5OiB0eXBlS2V5LAogICAgICAgICAgICAgICAgbmFtZTogbmFtZQogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAzOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnNhdmVFbnVtRGljdERpcihuZXdOb2RlKTsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkc2F2ZUVudW1EaSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRzYXZlRW51bURpLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHNhdmVFbnVtRGkubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzMi5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+a3u+WKoOWtl+WFuOWIhuexu+Wksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDMpOwogICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5re75Yqg5a2X5YW45YiG57G75aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMywgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGVkaXROb2RlOiBmdW5jdGlvbiBlZGl0Tm9kZShwYXJhbXMpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIHBhcmVudElkLCBuZXdOb2RlLCBfeWllbGQkQVBJJHNhdmVFbnVtRGkyLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgcGFyZW50SWQgPSBwYXJhbXMucGFyZW50SWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IF9vYmplY3RTcHJlYWQoe30sIHBhcmFtcyk7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnNhdmVFbnVtRGljdERpcihuZXdOb2RlKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkc2F2ZUVudW1EaTIgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkc2F2ZUVudW1EaTIuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkc2F2ZUVudW1EaTIubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzMy5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+e8lui+keWtl+WFuOWIhuexu+Wksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzWyJjYXRjaCJdKDIpOwogICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0My50MCB8fCAn57yW6L6R5a2X5YW45YiG57G75aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMiwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGRlbE5vZGU6IGZ1bmN0aW9uIGRlbE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZU11bHQsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlTXVsdGlEaXJOb2RlKG5vZGUpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRyZW1vdmVNdWx0ID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJHJlbW92ZU11bHQuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkcmVtb3ZlTXVsdC5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTlrZflhbjliIbnsbvmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn5Yig6Zmk5a2X5YW45YiG57G75aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQwID0gX2NvbnRleHQ0WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0NC50MCB8fCAn5Yig6Zmk5a2X5YW45YiG57G75aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQsIG51bGwsIFtbMCwgOV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5YiX6KGoIC0tLS0tLS0tLS0tLS0tLS0tCiAgICBvbkJlZm9yZUdldERhdGE6IGZ1bmN0aW9uIG9uQmVmb3JlR2V0RGF0YShxdWVyeVBhcmFtcywgZm9ybURhdGEpIHsKICAgICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLmRlZmF1bHRGaWx0ZXIsICdUUkVFX0lEXycsIHRoaXMuY3VyTm9kZS5pZCk7CiAgICAgIC8vIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5xdWVyeVBhcmFtcywgdGhpcy5kZWZhdWx0RmlsdGVyLCAndHlwZScsICdkaWMnKTsKICAgIH0sCiAgICBhZGRTdWJOb2RlOiBmdW5jdGlvbiBhZGRTdWJOb2RlKCkgewogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gJ+aWsOWinuWtl+WFuOmhuSc7CiAgICAgIHRoaXMuY3VycmVudFJvdyA9IHsKICAgICAgICBrZXk6ICcnLAogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHRyZWVJZDogdGhpcy5jdXJOb2RlLmlkCiAgICAgIH07CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgZWRpdFN1Yk5vZGU6IGZ1bmN0aW9uIGVkaXRTdWJOb2RlKHJvdykgewogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gIlx1N0YxNlx1OEY5MSAtICIuY29uY2F0KHJvdy5uYW1lKTsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgfSwKICAgIGRlbFN1Yk5vZGU6IGZ1bmN0aW9uIGRlbFN1Yk5vZGUocm93KSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCJcdTZCNjRcdTY0Q0RcdTRGNUNcdTVDMDZcdTUyMjBcdTk2NjRcdTVCNTdcdTUxNzhcdTk4NzlcdUZGMDgiLmNvbmNhdChyb3cubmFtZSwgIlx1RkYwOVx1NTNDQVx1NTE3Nlx1NUI1MFx1ODI4Mlx1NzBCOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZURpY3QsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlRGljdE5vZGUocm93LmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcmVtb3ZlRGljdCA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRyZW1vdmVEaWN0LnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZURpY3QubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTlrZflhbjpobnmiJDlip8nKTsKICAgICAgICAgICAgICAgIF90aGlzNS5nZXREYXRhKCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+WIoOmZpOWtl+WFuOmhueWksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0NS50MCA9IF9jb250ZXh0NVsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDUudDAgfHwgJ+WIoOmZpOWtl+WFuOmhueWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIG9uRGlhbG9nQ29uZmlybTogZnVuY3Rpb24gb25EaWFsb2dDb25maXJtKCkgewogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCiAgICBoYW5kbGVTeW5jUmVkaXM6IGZ1bmN0aW9uIGhhbmRsZVN5bmNSZWRpcygpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHRoaXMucmVmcmVzaFJlZGlzID0gdHJ1ZTsKICAgICAgQVBJLnN5bmNEaWN0aW9uYXJ5UmVkaXMoKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MocmVzcC5tZXNzYWdlKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikgewogICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKGVycik7CiAgICAgIH0pLmZpbmFsbHkoZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNi5yZWZyZXNoUmVkaXMgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlU2VsZWN0c0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2VsZWN0c0NoYW5nZShhcnIpIHsKICAgICAgdGhpcy5zZWxlY3Rpb25zID0gYXJyOwogICAgfSwKICAgIGhhbmRsZURpY3RGbGFnOiBmdW5jdGlvbiBoYW5kbGVEaWN0RmxhZyhmbGFnKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB2YXIgbXNnID0gIlx1Nzg2RVx1NUI5QSIuY29uY2F0KGZsYWcsICJcdTc1MjhcdTkwMDlcdTRFMkRcdTY1NzBcdTYzNkVcdTU0MTc/Iik7CiAgICAgIHRoaXMuJGNvbmZpcm0obXNnLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAgIF90aGlzNy5zZWxlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGlkcy5wdXNoKGl0ZW0uaWQpOwogICAgICAgIH0pOwogICAgICAgIHZhciBwYXJhbSA9IF90aGlzNy5xcy5zdHJpbmdpZnkoewogICAgICAgICAgc3RhdHVzOiBmbGFnID09ICflkK8nID8gMSA6IDAsCiAgICAgICAgICBpZHM6IGlkcy5qb2luKCcsJykKICAgICAgICB9KTsKICAgICAgICAvLyDosIPnlKjmjqXlj6Mg5o+Q5Lqk5pWw5o2uCiAgICAgICAgQVBJLnVwZGF0ZURpY3Rpb25hcmllc1N0YXR1cyhwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICBfdGhpczcuc2VsZWN0aW9ucyA9IFtdOwogICAgICAgICAgX3RoaXM3LmdldERhdGEoKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnaW5mbycsCiAgICAgICAgICBtZXNzYWdlOiAiXHU1REYyXHU1M0Q2XHU2RDg4Ii5jb25jYXQoZmxhZyA/ICflkK/nlKgnIDogJ+emgeeUqCcpCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZURpY3REZWxldGU6IGZ1bmN0aW9uIGhhbmRsZURpY3REZWxldGUoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB2YXIgbXNnID0gIlx1Nzg2RVx1NUI5QVx1NTIyMFx1OTY2NFx1OTAwOVx1NEUyRFx1NjU3MFx1NjM2RVx1NTQxNz8iOwogICAgICB0aGlzLiRjb25maXJtKG1zZywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBpZHMgPSBbXTsKICAgICAgICBfdGhpczguc2VsZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpZHMucHVzaChpdGVtLmlkKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgcGFyYW0gPSBfdGhpczgucXMuc3RyaW5naWZ5KHsKICAgICAgICAgIGlkczogaWRzLmpvaW4oJywnKQogICAgICAgIH0pOwogICAgICAgIC8vIOiwg+eUqOaOpeWPoyDmj5DkuqTmlbDmja4KICAgICAgICBBUEkuZGVsZXRlRW51bURpY3QocGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXM4LnNlbGVjdGlvbnMgPSBbXTsKICAgICAgICAgIF90aGlzOC5nZXREYXRhKCk7CiAgICAgICAgfSk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczguJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogJ2luZm8nLAogICAgICAgICAgbWVzc2FnZTogIlx1NURGMlx1NTNENlx1NkQ4OFx1NTIyMFx1OTY2NCIKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5LiL57qn5a2X5YW45qCRCiAgICBzdWJEaWN0VHJlZTogZnVuY3Rpb24gc3ViRGljdFRyZWUocm93KSB7CiAgICAgIHRoaXMuZHJhd2VyVGl0bGUgPSAiXHU1OTFBXHU3RUY0XHU1QjU3XHU1MTc4IC0gIi5jb25jYXQocm93Lm5hbWUpOwogICAgICB0aGlzLnBhcmVudFJvdyA9IHJvdzsKICAgICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBkb3dubG9hZDogZnVuY3Rpb24gZG93bmxvYWQoKSB7CiAgICAgIHZhciBmaWxlVHlwZSA9ICfmnprkuL7lrZflhbjlrprkuYnooajmqKHniYgueGxzeCc7CiAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBhLmhyZWYgPSB3aW5kb3cuY29udGV4dC5kb3dubG9hZCArIGZpbGVUeXBlOwogICAgICBhLmRvd25sb2FkID0gZmlsZVR5cGU7CiAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKICAgICAgYS5jbGljaygpOwogICAgICBhLnJlbW92ZSgpOwogICAgfSwKICAgIC8vICDlr7zlhaXmlofku7bkuIrkvKDliY0KICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgX3RoaXM5LnVwbG9hZExvYWRpbmcgPSB0cnVlOwogICAgICAgIHZhciBzaXplID0gZmlsZS5zaXplLAogICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICBfdGhpczkuJGNvbmZpcm0oIlx1OEJGN1x1Nzg2RVx1OEJBNFx1NjYyRlx1NTQyNlx1NUJGQ1x1NTE2NSBcdTIwMUMiLmNvbmNhdChuYW1lLCAiXHUyMDFEIFx1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgcGFzc2VkT3JOb3QgPSB0cnVlOyAvLyDmmK/lkKbpgJrov4fpqozor4EKICAgICAgICAgIHZhciB0eXBlUmVndWxhciA9IC9cLih4bHN8eGxzeCkkL2k7CiAgICAgICAgICB2YXIgdmVyaWZpY2F0aW9uID0gW3sKICAgICAgICAgICAgY29uZGl0aW9uOiAhdHlwZVJlZ3VsYXIudGVzdChuYW1lKSwKICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbiByZXN1bHQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOS4kbWVzc2FnZS5lcnJvcign5Y+q6IO95LiK5LygeGxz5oiWeGxzeOaWh+S7tuexu+WeiycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9XTsKICAgICAgICAgIHZlcmlmaWNhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmNvbmRpdGlvbikgewogICAgICAgICAgICAgIGl0ZW0ucmVzdWx0KCk7CiAgICAgICAgICAgICAgcGFzc2VkT3JOb3QgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczkudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgX3RoaXM5LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS53YXJuaW5nKCflt7Llj5bmtojkuIrkvKAnKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5oiQ5YqfCiAgICBoYW5kbGVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVTdWNjZXNzKHJlcykgewogICAgICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCflr7zlhaXmiJDlip8nKTsKICAgICAgICB0aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tZXNzYWdlKTsKICAgICAgfQogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOWksei0pQogICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycikgewogICAgICBpZiAoZXJyKSB7CiAgICAgICAgdmFyIGVyckRhdGEgPSBlcnIudG9TdHJpbmcoKS5yZXBsYWNlKCdFcnJvcjonLCAnJyk7CiAgICAgICAgZXJyRGF0YSA9IEpTT04ucGFyc2UoZXJyRGF0YSk7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJEYXRhLm1lc3NhZ2UgfHwgJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB9CiAgICAgIHRoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgfQogIH0KfTs="},null]}