{"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\\appLayer\\appLayerCatalogue\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\appLayer\\appLayerCatalogue\\index.vue","mtime":1749236141335},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5LmpzJzsKaW1wb3J0IHRhYmxlTWl4aW4gZnJvbSAnQC9taXhpbnMvdGFibGUuanMnOyAvLyDliJfooahtaXhpbnMKaW1wb3J0IHNvdXJjZURpYWxvZyBmcm9tICcuL3NvdXJjZURpYWxvZy52dWUnOwppbXBvcnQgZmllbGRzTWFuYWdlIGZyb20gJy4vZmllbGRzTWFuYWdlLnZ1ZSc7CmltcG9ydCBwdXRPdXREaWFsb2cgZnJvbSAnLi9QdXRPdXREaWFsb2cudnVlJzsKaW1wb3J0IEFQSSBmcm9tICdAL2FwaS9idXNpbmVzcy9kYXRhQVBQQ2F0YWxvZy5qcyc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmltcG9ydCBNb3ZlRGlhbG9nIGZyb20gJy4vTW92ZURpYWxvZy52dWUnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0FwcExheWVyQ2F0YWxvZ3VlJywKICBjb21wb25lbnRzOiB7CiAgICBNb3ZlRGlhbG9nOiBNb3ZlRGlhbG9nLAogICAgc291cmNlRGlhbG9nOiBzb3VyY2VEaWFsb2csCiAgICBmaWVsZHNNYW5hZ2U6IGZpZWxkc01hbmFnZSwKICAgIHB1dE91dERpYWxvZzogcHV0T3V0RGlhbG9nCiAgfSwKICBtaXhpbnM6IFt0YWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHZhciBUUkVFX0NPTkZJRyA9IHsKICAgICAgdHJlZVByb3BzOiB7CiAgICAgICAgdmFsdWU6ICdpZCcsCiAgICAgICAgbGFiZWw6ICduYW1lJwogICAgICB9LAogICAgICBleHBhbmRBbGw6IGZhbHNlLAogICAgICBkZWZhdWx0RXhwYW5kZWRLZXlzOiBbJzEnXSwKICAgICAgZGVmYXVsdENoZWNrZWRLZXlzOiBbJzEnXSwKICAgICAgLy8g5q2k5aSEZmllbGRz5YaF6YWN572u5a+56LGh5bGe5oCn5YyF5ousOiBsYWJlbC9wcm9wL3J1bGVzL3R5cGUo5p6a5Li+OnN3aXRjaC9udW1iZXIvaW5wdXQo6buY6K6kKSkvc3Bhbi8KICAgICAgdHJlZUZpZWxkczogW3sKICAgICAgICBsYWJlbDogJ+i1hOa6kOebruW9leWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnLAogICAgICAgIGxhYmVsV2lkdGg6ICcxMjAnLAogICAgICAgIHJ1bGVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LWE5rqQ55uu5b2V5ZCN56ew5LiN6IO95Li656m6JwogICAgICAgIH1dCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+i1hOa6kOebruW9lee8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnLAogICAgICAgIGxhYmVsV2lkdGg6ICcxMjAnLAogICAgICAgIHJ1bGVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LWE5rqQ55uu5b2V57yW56CB5LiN6IO95Li656m6JwogICAgICAgIH1dCiAgICAgIH1dLAogICAgICBjdXJOb2RlOiB7fSAvLyDlvZPliY3pgInmi6noioLngrkKICAgIH07CiAgICB2YXIgVEFCTEVfQ09ORklHID0gewogICAgICBkZXBsb3lTdGF0dXM6IFt7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+W3suWPkeW4gycKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMCcsCiAgICAgICAgbGFiZWw6ICfmnKrlj5HluIMnCiAgICAgIH1dLAogICAgICAvLyDliJfooajooajlpLQKICAgICAgY29sdW1uczogW3sKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOe8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aVsOaNruW6k+ihqOWQjScsCiAgICAgICAgcHJvcDogJ3RhYmxlTmFtZUVuJwogICAgICB9LAogICAgICAvLyB7IGxhYmVsOiAn5Lit5paHJywgcHJvcDogJ3RhYmxlTmFtZUNoJyB9LAogICAgICB7CiAgICAgICAgbGFiZWw6ICflj5HluIPnirbmgIEnLAogICAgICAgIHByb3A6ICdkZXBsb3llZCcsCiAgICAgICAgZGF0YVR5cGU6ICdzbG90JywKICAgICAgICBzbG90OiAnZGVwbG95ZWQnLAogICAgICAgIHdpZHRoOiAnMTQwJywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGRhdGFUeXBlOiAnb3B0aW9uJywKICAgICAgICBsYWJlbDogJ+aTjeS9nCcsCiAgICAgICAgd2lkdGg6ICcyNjBweCcsCiAgICAgICAgZml4ZWQ6ICdyaWdodCcsCiAgICAgICAgb3BlcmF0aW9uOiBbewogICAgICAgICAgbmFtZTogJ+Wtl+auteeuoeeQhicsCiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBzaXplOiAnbWluaScsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi1zLW9yZGVyJywKICAgICAgICAgIGNvbG9yOiAnIzQwOWVmZicsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMucm93RGF0YSA9IHJvdzsKICAgICAgICAgICAgX3RoaXMuZmllbGRNYW5hZ2Uocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Y+R5biD5bu66KGoJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXMtcHJvbW90aW9uJywKICAgICAgICAgIGNvbG9yOiAnI2ZhOTEyYScsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgICAgcmV0dXJuIHJvdy5kZXBsb3llZCAhPT0gJzEnOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMucHVibGlzaFRhYmxlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+WIoOmZpCcsCiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBzaXplOiAnbWluaScsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi1kZWxldGUnLAogICAgICAgICAgY29sb3I6ICdyZWQnLAogICAgICAgICAgcGxhaW46IHRydWUsCiAgICAgICAgICBjbGlja0Z1bjogZnVuY3Rpb24gY2xpY2tGdW4ocm93KSB7CiAgICAgICAgICAgIF90aGlzLmRlbFRhYmxlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfV0sCiAgICAgIGRlZmF1bHRGaWx0ZXI6IFt7CiAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgIHByb3BlcnR5OiAnYXBwQ2F0YWxvZ3NJZCcsCiAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgIHZhbHVlOiAnJwogICAgICB9XSwKICAgICAgcm93RGF0YToge30KICAgIH07CiAgICB2YXIgRElBTE9HX0NPTkZJRyA9IHsKICAgICAgZGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ1RpdGxlOiAn5paw5aKeJywKICAgICAgZmllbGREaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgZGlhbG9nZERhdGE6IHt9LAogICAgICBwdXRPdXRWaXNpYmxlOiBmYWxzZSwKICAgICAgZGlhbG9nTW92ZTogZmFsc2UsCiAgICAgIE1vdmVUaXRsZTogJ+enu+WKqCcKICAgIH07CiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7CiAgICAgIHNlbGVjdGVkUm93czogW10sCiAgICAgIC8vIOaWsOWinu+8muWtmOWCqOmAieS4reeahOihjOaVsOaNrgogICAgICB0cmVlRGF0YTogW10KICAgIH0sIFRSRUVfQ09ORklHKSwgVEFCTEVfQ09ORklHKSwgRElBTE9HX0NPTkZJRyksIHt9LCB7CiAgICAgIHVwbG9hZFZpc2libGU6IGZhbHNlLAogICAgICB1cGxvYWRMb2FkaW5nOiBmYWxzZSwKICAgICAgaW1wb3J0RGF0YTogewogICAgICAgIGNhdGFsb2dJZDogJycKICAgICAgfQogICAgfSk7CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7CiAgICAvLyDphY3nva7liJfooajmjqXlj6Pmlrnms5XvvJrlj6rmnInphY3nva7kuobor6XorqHnrpflsZ7mgKcg5omN5Lya5omn6KGMIHRhYmxlIG1peGluc+S4reeahGdldERhdGHmlrnms5UKICAgIGRhdGFNZXRob2Q6IGZ1bmN0aW9uIGRhdGFNZXRob2QoKSB7CiAgICAgIHJldHVybiBBUEkucXVlcnlBUFBUYWJsZTsKICAgIH0sCiAgICBhY3Rpb25Vcmw6IGZ1bmN0aW9uIGFjdGlvblVybChfKSB7CiAgICAgIHJldHVybiAiIi5jb25jYXQod2luZG93LmNvbnRleHQucG9ydGFsLCAiL2Jpei9hcHAvY2F0YWxvZ3MvdGFibGUvdjEvaW1wb3J0RmlsZSIpOwogICAgfQogIH0sIG1hcFN0YXRlKHsKICAgIGhlYWRlcnM6IGZ1bmN0aW9uIGhlYWRlcnMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBtZXRob2RzOiB7CiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgLy8g5qCRIC0tLS0tLS0tLS0tLS0tLS0tCiAgICBnZXRUcmVlTm9kZXM6IGZ1bmN0aW9uIGdldFRyZWVOb2RlcygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3ZhbHVlJDsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRnZXRBUFBUcmVlLCBfeWllbGQkQVBJJGdldEFQUFRyZWUyLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmdldEFQUFRyZWUoKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0QVBQVHJlZSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRnZXRBUFBUcmVlMiA9IF95aWVsZCRBUEkkZ2V0QVBQVHJlZS52YWx1ZTsKICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRBUEkkZ2V0QVBQVHJlZTIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJEFQSSRnZXRBUFBUcmVlMjsKICAgICAgICAgICAgICBfdGhpczIuZGVmYXVsdEV4cGFuZGVkS2V5cyA9IFsodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCB8fCAoX3ZhbHVlJCA9IHZhbHVlWzBdKSA9PT0gbnVsbCB8fCBfdmFsdWUkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUkLmlkKSB8fCAnJ107CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIiwgewogICAgICAgICAgICAgICAgZGF0YTogdmFsdWUgfHwgW10KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHJlbG9hZFRyZWU6IGZ1bmN0aW9uIHJlbG9hZFRyZWUoKSB7CiAgICAgIHRoaXMuJHJlZnMuYXBwQXN5bmNUcmVlLmdldFRyZWVEYXRhKCk7CiAgICB9LAogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOiB0cmVlQWN0aW9uc+aUr+aMgeWHveaVsOS5n+aUr+aMgeaVsOe7hO+8jOeUseS6juWunumZheWcuuaZr+W9k+S4rSDlj6/og73kvJrliqjmgIHorr7nva7mjInpkq7vvIzmlYXku6Xlh73mlbDnpLrkvovmnaXlsZXnpLoNCiAgICAgKiBAcGFyYW0geyp9IGRhdGEg5b2T5YmN54K55Ye76IqC54K55pWw5o2uDQogICAgICogQHJldHVybiB7Kn0g5b2T5YmN6IqC54K55bGV56S655qE5pON5L2c6aG55pWw57uEDQogICAgICovCiAgICB0cmVlQWN0aW9uczogZnVuY3Rpb24gdHJlZUFjdGlvbnMoZGF0YSkgewogICAgICAvLyDmoLnoioLngrnliKTmlq3mlrnlvI/ku6XkuJrliqHkuLrlh4bvvIzmraTlpITku4XkuLrnpLrkvosKICAgICAgcmV0dXJuIFt7CiAgICAgICAgbGFiZWw6ICfmt7vliqAnLAogICAgICAgIHR5cGU6ICdhZGQnLAogICAgICAgIG1ldGhvZDogdGhpcy5hZGROb2RlCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+e8lui+kScsCiAgICAgICAgdHlwZTogJ2VkaXQnLAogICAgICAgIG1ldGhvZDogdGhpcy5lZGl0Tm9kZSwKICAgICAgICBzaG93SGlkZTogZnVuY3Rpb24gc2hvd0hpZGUocm93KSB7CiAgICAgICAgICByZXR1cm4gcm93LmlkICE9PSAnMSc7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfliKDpmaQnLAogICAgICAgIHR5cGU6ICdkZWxldGUnLAogICAgICAgIG1ldGhvZDogdGhpcy5kZWxOb2RlLAogICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgIHJldHVybiByb3cuaWQgIT09ICcxJzsKICAgICAgICB9CiAgICAgIH1dOwogICAgfSwKICAgIG9uVHJlZU5vZGVDbGljazogZnVuY3Rpb24gb25UcmVlTm9kZUNsaWNrKG5vZGUpIHsKICAgICAgdmFyIF90aGlzJGN1ck5vZGU7CiAgICAgIGlmIChub2RlLmlkID09PSAoKF90aGlzJGN1ck5vZGUgPSB0aGlzLmN1ck5vZGUpID09PSBudWxsIHx8IF90aGlzJGN1ck5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGN1ck5vZGUuaWQpKSByZXR1cm47CiAgICAgIHRoaXMuY3VyTm9kZSA9IF9vYmplY3RTcHJlYWQoe30sIG5vZGUpOwogICAgICB0aGlzLmltcG9ydERhdGEuY2F0YWxvZ0lkID0gdGhpcy5jdXJOb2RlLmlkOwogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCiAgICBhZGROb2RlOiBmdW5jdGlvbiBhZGROb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgY29kZSwgbmFtZSwgaWQsIG5ld05vZGUsIF95aWVsZCRBUEkkYWRkQVBQVHJlZSwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGNvZGUgPSBwYXJhbXMuY29kZSwgbmFtZSA9IHBhcmFtcy5uYW1lOwogICAgICAgICAgICAgIGlkID0gbm9kZS5pZDsKICAgICAgICAgICAgICBuZXdOb2RlID0gewogICAgICAgICAgICAgICAgY29kZTogY29kZSwKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBwYXJlbnRJZDogaWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMzsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDY7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5hZGRBUFBUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRhZGRBUFBUcmVlID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGFkZEFQUFRyZWUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkYWRkQVBQVHJlZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXMzLnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCfmt7vliqDotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDEyOwogICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSgzKTsKICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDIudDAgfHwgJ+a3u+WKoOi1hOa6kOebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzMsIDEyXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBlZGl0Tm9kZTogZnVuY3Rpb24gZWRpdE5vZGUocGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBjb2RlLCBuYW1lLCBwYXJlbnRJZCwgaWQsIG5ld05vZGUsIF95aWVsZCRBUEkkZWRpdEFQUFRyZSwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGNvZGUgPSBwYXJhbXMuY29kZSwgbmFtZSA9IHBhcmFtcy5uYW1lLCBwYXJlbnRJZCA9IHBhcmFtcy5wYXJlbnRJZCwgaWQgPSBwYXJhbXMuaWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDI7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBBUEkuZWRpdEFQUFRyZWUobmV3Tm9kZSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfeWllbGQkQVBJJGVkaXRBUFBUcmUgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkZWRpdEFQUFRyZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRlZGl0QVBQVHJlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczQucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+e8lui+kei1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzWyJjYXRjaCJdKDIpOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0My50MCB8fCAn57yW6L6R6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMiwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGRlbE5vZGU6IGZ1bmN0aW9uIGRlbE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZUFQUFQsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlQVBQVHJlZShub2RlLmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcmVtb3ZlQVBQVCA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRyZW1vdmVBUFBULnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZUFQUFQubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQwID0gX2NvbnRleHQ0WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0NC50MCB8fCAn5Yig6Zmk6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQsIG51bGwsIFtbMCwgOV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5paw5aKe77ya5aSE55CG6KGo5qC86YCJ5oup5Y+Y5YyWCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3Rpb24pIHsKICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBzZWxlY3Rpb247CiAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRSb3dzLCAn5Yu+6YCJ55qE5pWw5o2uJyk7CiAgICB9LAogICAgZGF0YU1vdmU6IGZ1bmN0aW9uIGRhdGFNb3ZlKCkgewogICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7foh7PlsJHpgInmi6nkuIDmnaHopoHnp7vliqjnmoTmlbDmja4nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5kaWFsb2dNb3ZlID0gdHJ1ZTsKICAgICAgdGhpcy5Nb3ZlVGl0bGUgPSAn56e75Yqo6KGoLeivt+mAieaLqeenu+WKqOeahOebruagh+ebruW9lSc7CiAgICB9LAogICAgLy8g5paw5aKe77ya56e75Yqo56Gu6K6k5ZCO55qE5aSE55CGCiAgICBoYW5kbGVNb3ZlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlTW92ZVN1Y2Nlc3MoKSB7CiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gW107IC8vIOa4heepuumAieaLqQogICAgICB0aGlzLnJlZnJlc2goKTsgLy8g5Yi35paw5pWw5o2uCiAgICB9LAogICAgLy8g5YiX6KGoIC0tLS0tLS0tLS0tLQogICAgYWRkVGFibGU6IGZ1bmN0aW9uIGFkZFRhYmxlKCkgewogICAgICB2YXIgX3RoaXMkY3VyTm9kZTI7CiAgICAgIGlmICghKChfdGhpcyRjdXJOb2RlMiA9IHRoaXMuY3VyTm9kZSkgIT09IG51bGwgJiYgX3RoaXMkY3VyTm9kZTIgIT09IHZvaWQgMCAmJiBfdGhpcyRjdXJOb2RlMi5pZCkpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqei1hOa6kOmhueaJgOWxnuebruW9lScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gJ+aWsOWinuaVsOaNrui1hOa6kOmhuSc7CiAgICAgIHRoaXMuZGlhbG9nZERhdGEgPSB7CiAgICAgICAgYXBwQ2F0YWxvZ3NJZDogdGhpcy5jdXJOb2RlLmlkCiAgICAgIH07CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgZWRpdFRhYmxlOiBmdW5jdGlvbiBlZGl0VGFibGUocm93KSB7CiAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSAiXHU3RjE2XHU4RjkxIC0gIi5jb25jYXQocm93Lm5hbWUpOwogICAgICB0aGlzLmRpYWxvZ2REYXRhID0gcm93OwogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgfSwKICAgIGZpZWxkTWFuYWdlOiBmdW5jdGlvbiBmaWVsZE1hbmFnZSgpIHsKICAgICAgdGhpcy5maWVsZERpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgfSwKICAgIGRlbFRhYmxlOiBmdW5jdGlvbiBkZWxUYWJsZShyb3cpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHRoaXMuJGNvbmZpcm0oIlx1NkI2NFx1NjRDRFx1NEY1Q1x1NUMwNlx1NTIyMFx1OTY2NFx1NTIwNlx1N0M3Qlx1RkYwOCIuY29uY2F0KHJvdy5uYW1lLCAiXHVGRjA5LCBcdTY2MkZcdTU0MjZcdTdFRTdcdTdFRUQ/IiksICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRBUEkkcmVtb3ZlQXBwUywgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gMDsKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5yZW1vdmVBcHBTb3VyY2Uocm93LmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcmVtb3ZlQXBwUyA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRyZW1vdmVBcHBTLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZUFwcFMubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNi5nZXREYXRhKCk7CiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk6LWE5rqQ6aG55oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+WIoOmZpOi1hOa6kOmhueWksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0NS50MCA9IF9jb250ZXh0NVsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDUudDAgfHwgJ+WIoOmZpOi1hOa6kOmhueWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIG9uQmVmb3JlR2V0RGF0YTogZnVuY3Rpb24gb25CZWZvcmVHZXREYXRhKHF1ZXJ5UGFyYW1zLCBmb3JtRGF0YSkgewogICAgICB0aGlzLnNldEZpbHRlclZhbHVlKHRoaXMucXVlcnlQYXJhbXMsIHRoaXMuZGVmYXVsdEZpbHRlciwgJ2FwcENhdGFsb2dzSWQnLCB0aGlzLmN1ck5vZGUuaWQpOwogICAgfSwKICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKGRhdGEsIHBEYXRhKSB7CiAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgfSwKICAgIHB1Ymxpc2hUYWJsZTogZnVuY3Rpb24gcHVibGlzaFRhYmxlKGRhdGEpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzNy5yb3dEYXRhID0gZGF0YTsKICAgICAgICAgICAgICBfdGhpczcucHV0T3V0VmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgLy8gICB0aGlzLiRjb25maXJtKGDmraTmk43kvZzlsIblj5HluIPvvIgke2RhdGEubmFtZX3vvIksIOaYr+WQpue7p+e7rT9gLCAn5o+Q56S6JywgewogICAgICAgICAgICAgIC8vICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgICAgICAgLy8gICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgIC8vICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICAgICAgLy8gICB9KQogICAgICAgICAgICAgIC8vICAgICAudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICAgLy8gICAgICAgdHJ5IHsKICAgICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IHsgc3RhdGUsIG1lc3NhZ2UgfSA9IGF3YWl0IEFQSS5wdWJsaXNoQXBwU291cmNlKGRhdGEuaWQpOwogICAgICAgICAgICAgIC8vICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgLy8gICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgICAgICAgICAgIC8vICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+i1hOa6kOmhueWPkeW4g+aIkOWKn++8gScpOwogICAgICAgICAgICAgIC8vICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAvLyAgICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+i1hOa6kOmhueWPkeW4g+Wksei0pe+8gScpOwogICAgICAgICAgICAgIC8vICAgICAgICAgfQogICAgICAgICAgICAgIC8vICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKGVyciB8fCAn6LWE5rqQ6aG55Y+R5biD5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgLy8gICAgICAgfQogICAgICAgICAgICAgIC8vICAgICB9KQogICAgICAgICAgICAgIC8vICAgICAuY2F0Y2goKCkgPT4ge30pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTYpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBkb3dubG9hZDogZnVuY3Rpb24gZG93bmxvYWQoKSB7CiAgICAgIHZhciBmaWxlVHlwZSA9ICfmlbDmja7lupTnlKjlsYLmlbDmja7otYTmupDooajmuIXljZUueGxzeCc7CiAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBhLmhyZWYgPSB3aW5kb3cuY29udGV4dC5kb3dubG9hZCArIGZpbGVUeXBlOwogICAgICBhLmRvd25sb2FkID0gZmlsZVR5cGU7IC8vIOiuvue9ruS4i+i9veaWh+S7tuaWh+S7tuWQjQogICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGEuY2xpY2soKTsKICAgICAgYS5yZW1vdmUoKTsKICAgIH0sCiAgICAvLyAg5a+85YWl5paH5Lu25LiK5Lyg5YmNCiAgICBiZWZvcmVVcGxvYWQ6IGZ1bmN0aW9uIGJlZm9yZVVwbG9hZChmaWxlKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gdHJ1ZTsKICAgICAgICB2YXIgc2l6ZSA9IGZpbGUuc2l6ZSwKICAgICAgICAgIG5hbWUgPSBmaWxlLm5hbWU7CiAgICAgICAgX3RoaXM4LiRjb25maXJtKCJcdThCRjdcdTc4NkVcdThCQTRcdTY2MkZcdTU0MjZcdTVCRkNcdTUxNjUgXHUyMDFDIi5jb25jYXQobmFtZSwgIlx1MjAxRCBcdUZGMUYiKSwgJ+aPkOekuicsIHsKICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoXykgewogICAgICAgICAgdmFyIHBhc3NlZE9yTm90ID0gdHJ1ZTsgLy8g5piv5ZCm6YCa6L+H6aqM6K+BCiAgICAgICAgICB2YXIgdHlwZVJlZ3VsYXIgPSAvXC4oeGxzfHhsc3gpJC9pOwogICAgICAgICAgdmFyIHZlcmlmaWNhdGlvbiA9IFt7CiAgICAgICAgICAgIGNvbmRpdGlvbjogIXR5cGVSZWd1bGFyLnRlc3QobmFtZSksCiAgICAgICAgICAgIHJlc3VsdDogZnVuY3Rpb24gcmVzdWx0KCkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczguJG1lc3NhZ2UuZXJyb3IoJ+WPquiDveS4iuS8oHhsc+aIlnhsc3jmlofku7bnsbvlnosnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfV07CiAgICAgICAgICB2ZXJpZmljYXRpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS5jb25kaXRpb24pIHsKICAgICAgICAgICAgICBpdGVtLnJlc3VsdCgpOwogICAgICAgICAgICAgIHBhc3NlZE9yTm90ID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICBwYXNzZWRPck5vdCA/IHJlc29sdmUoKSA6IHJlamVjdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uud2FybmluZygn5bey5Y+W5raI5LiK5LygJyk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOaIkOWKnwogICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcyhyZXMpIHsKICAgICAgaWYgKHJlcy5zdGF0ZSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMubWVzc2FnZSk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDlpLHotKUKICAgIGhhbmRsZUVycm9yOiBmdW5jdGlvbiBoYW5kbGVFcnJvcihlcnIpIHsKICAgICAgaWYgKGVycikgewogICAgICAgIHZhciBlcnJEYXRhID0gZXJyLnRvU3RyaW5nKCkucmVwbGFjZSgnRXJyb3I6JywgJycpOwogICAgICAgIGVyckRhdGEgPSBKU09OLnBhcnNlKGVyckRhdGEpOwogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyRGF0YS5tZXNzYWdlIHx8ICflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgfQogICAgICB0aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgIH0KICB9Cn07"},null]}