{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/eslint-loader/index.js??ref--14-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/src/mixins/ContentMixin.js","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/src/mixins/ContentMixin.js","mtime":1697426030200},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/babel.config.js","mtime":1684261475125},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/eslint-loader/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiL2hvbWUvY21pc3MvSmVua2lucy93b3Jrc3BhY2UvbWFwaW50ZWdyYXRlZHZ1ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICIvaG9tZS9jbWlzcy9KZW5raW5zL3dvcmtzcGFjZS9tYXBpbnRlZ3JhdGVkdnVlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwppbXBvcnQgeyBnZXRBdmFpbGFibGVUZXJtc0ZvclNwZWNpZXMsIGdldEludGVyYWN0aXZlQWN0aW9uLCBnZXROZXJ2ZU5hbWVzLCBnZXRQYXJlbnRzUmVnaW9uIH0gZnJvbSAiLi4vY29tcG9uZW50cy9TaW11bGF0ZWREYXRhLmpzIjsKaW1wb3J0IEV2ZW50QnVzIGZyb20gIi4uL2NvbXBvbmVudHMvRXZlbnRCdXMiOwppbXBvcnQgbWFya2VyWm9vbUxldmVscyBmcm9tICIuLi9jb21wb25lbnRzL21hcmtlclpvb21MZXZlbHNIYXJkQ29kZWQuanMiOwppbXBvcnQgc3RvcmUgZnJvbSAiLi4vc3RvcmUiOwpmdW5jdGlvbiBjYXBpdGFsaXNlKHRleHQpIHsKICByZXR1cm4gdGV4dFswXS50b1VwcGVyQ2FzZSgpICsgdGV4dC5zdWJzdHJpbmcoMSk7Cn0KCi8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0LCBuby1jb25zb2xlICovCmV4cG9ydCBkZWZhdWx0IHsKICBwcm9wczogewogICAgLyoqCiAgICAgKiBPYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBmb3IKICAgICAqIHRoZSByZXF1aXJlZCB2aWV3aW5nLgogICAgICovCiAgICBlbnRyeTogT2JqZWN0LAogICAgdmlzaWJsZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgbW91c2VIb3ZlcmVkOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9CiAgfSwKICBjb21wdXRlZDogewogICAgc3luY01vZGU6IGZ1bmN0aW9uIHN5bmNNb2RlKCkgewogICAgICByZXR1cm4gc3RvcmUuc3RhdGUuc3BsaXRGbG93LnN5bmNNb2RlOwogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICBFdmVudEJ1cy4kb24oInN0YXJ0SGVscCIsIGZ1bmN0aW9uICgpIHsKICAgICAgX3RoaXMuc3RhcnRIZWxwKCk7CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIHRvZ2dsZVN5bmNNb2RlOiBmdW5jdGlvbiB0b2dnbGVTeW5jTW9kZSgpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIGdldFN0YXRlOiBmdW5jdGlvbiBnZXRTdGF0ZSgpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCiAgICBvcGVuTWFwOiBmdW5jdGlvbiBvcGVuTWFwKHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT09ICJTWU5DIikgewogICAgICAgIHRoaXMudG9nZ2xlU3luY01vZGUoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBFdmVudEJ1cy4kZW1pdCgiT3Blbk5ld01hcCIsIHR5cGUpOwogICAgICB9CiAgICB9LAogICAgdXBkYXRlV2l0aFZpZXdVcmw6IGZ1bmN0aW9uIHVwZGF0ZVdpdGhWaWV3VXJsKCkgewogICAgICByZXR1cm47CiAgICB9LAogICAgLyoqCiAgICAgKiBQZXJmb3JtIGEgbG9jYWwgc2VhcmNoIG9uIHRoaXMgY29udGVudHZ1ZXIKICAgICAqLwogICAgc2VhcmNoOiBmdW5jdGlvbiBzZWFyY2goKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioKICAgICAqIEdldCBhIGxpc3Qgb2Ygc2VhcmNoIHN1Z2dlc3Rpb25zIG9uIHRoaXMgY29udGVudHZ1ZXIKICAgICAqLwogICAgc2VhcmNoU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIHNlYXJjaFN1Z2dlc3Rpb25zKCkgewogICAgICByZXR1cm47CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB3aGVuIHRoZSB2dWVycyBlbWl0IGEgc2VsZWN0ZWQgZXZlbnQuCiAgICAgKi8KICAgIHJlc291cmNlU2VsZWN0ZWQ6IGZ1bmN0aW9uIHJlc291cmNlU2VsZWN0ZWQodHlwZSwgcmVzb3VyY2UpIHsKICAgICAgLy8gU2tpcCBwcm9jZXNzaW5nIGlmIHJlc291cmNlcyBhbHJlYWR5IGhhcyBhY3Rpb25zCiAgICAgIGlmICh0aGlzLnJlc291cmNlSGFzQWN0aW9uKHJlc291cmNlKSkgewogICAgICAgIEV2ZW50QnVzLiRlbWl0KCJQb3BvdmVyQWN0aW9uQ2xpY2siLCByZXNvdXJjZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciByZXR1cm5lZEFjdGlvbiA9IHVuZGVmaW5lZDsKICAgICAgdmFyIGFjdGlvbiA9ICJub25lIjsKICAgICAgdmFyIGZpcmVSZXNvdXJjZVNlbGVjdGVkID0gZmFsc2U7CiAgICAgIHZhciByZXN1bHQgPSB7CiAgICAgICAgcGFuZUluZGV4OiB0aGlzLmVudHJ5LmlkLAogICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlLAogICAgICAgIGludGVybmFsTmFtZTogdW5kZWZpbmVkLAogICAgICAgIGV2ZW50VHlwZTogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIGlmICh0eXBlID09ICJNdWx0aUZsYXRtYXAiIHx8IHR5cGUgPT0gIkZsYXRtYXAiKSB7CiAgICAgICAgcmVzdWx0LmludGVybmFsTmFtZSA9IHRoaXMuaWROYW1lUGFpcltyZXNvdXJjZS5mZWF0dXJlLm1vZGVsc107CiAgICAgICAgaWYgKHJlc291cmNlLmV2ZW50VHlwZSA9PSAiY2xpY2siKSB7CiAgICAgICAgICByZXN1bHQuZXZlbnRUeXBlID0gInNlbGVjdGVkIjsKICAgICAgICAgIGlmIChyZXNvdXJjZS5mZWF0dXJlLnR5cGUgPT0gIm1hcmtlciIpIHsKICAgICAgICAgICAgdmFyIGxhYmVsID0gdGhpcy5pZE5hbWVQYWlyW3Jlc291cmNlLmZlYXR1cmUubW9kZWxzXTsKICAgICAgICAgICAgdmFyIGhhcmRjb2RlZEFubm90YXRpb24gPSBtYXJrZXJab29tTGV2ZWxzLmZpbHRlcihmdW5jdGlvbiAobXopIHsKICAgICAgICAgICAgICByZXR1cm4gbXouaWQgPT09IHJlc291cmNlLmZlYXR1cmUubW9kZWxzOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKHN0b3JlLmdldHRlcnNbInNldHRpbmdzL2lzRmVhdHVyZWRNYXJrZXJJZGVudGlmaWVyIl0ocmVzb3VyY2UuZmVhdHVyZS5pZCkpIHsKICAgICAgICAgICAgICAvLyBJdCBpcyBhIGZlYXR1cmVkIGRhdGFzZXQgc2VhcmNoIGZvciBET0kuCiAgICAgICAgICAgICAgcmV0dXJuZWRBY3Rpb24gPSB7CiAgICAgICAgICAgICAgICB0eXBlOiAiU2VhcmNoIiwKICAgICAgICAgICAgICAgIHRlcm06IHN0b3JlLmdldHRlcnNbInNldHRpbmdzL2ZlYXR1cmVkTWFya2VyRG9pIl0ocmVzb3VyY2UuZmVhdHVyZS5pZCkKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgaWYgKGhhcmRjb2RlZEFubm90YXRpb24uZmlsdGVyKGZ1bmN0aW9uIChoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGgua2V5d29yZDsKICAgICAgICAgICAgfSkubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIC8vIGlmIGl0IG1hdGNoZXMgb3VyIHN0b3JlZCBrZXl3b3JkcywgaXQgaXMgYSBrZXl3b3JkIHNlYXJjaAogICAgICAgICAgICAgIC8vIEtleXdvcmQgc2VhcmNoZXMgZG8gbm90IGNvbnRhaW4gbGFiZWxzLCBzbyBzd2l0Y2ggdG8ga2V5d29yZCBzZWFyY2ggaWYgbm8gbGFiZWwgZXhpc3RzCiAgICAgICAgICAgICAgcmV0dXJuZWRBY3Rpb24gPSB7CiAgICAgICAgICAgICAgICB0eXBlOiAiU2VhcmNoIiwKICAgICAgICAgICAgICAgIHRlcm06ICJodHRwOi8vcHVybC5vYm9saWJyYXJ5Lm9yZy9vYm8vIiArIHJlc291cmNlLmZlYXR1cmUubW9kZWxzLnJlcGxhY2UoIjoiLCAiXyIpCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAvLyBGYWNldCBzZWFyY2ggb24gYW5hdG9teSBpZiBpdCBpcyBub3QgYSBrZXl3b3JkIHNlYXJjaAogICAgICAgICAgICAgIHJldHVybmVkQWN0aW9uID0gewogICAgICAgICAgICAgICAgdHlwZTogIkZhY2V0IiwKICAgICAgICAgICAgICAgIGZhY2V0OiBsYWJlbCwKICAgICAgICAgICAgICAgIGZhY2V0UHJvcFBhdGg6ICJhbmF0b215Lm9yZ2FuLm5hbWUiLAogICAgICAgICAgICAgICAgdGVybTogIkFuYXRvbWljYWwgc3RydWN0dXJlIgogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmlyZVJlc291cmNlU2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICBpZiAodHlwZSA9PSAiTXVsdGlGbGF0bWFwIikgewogICAgICAgICAgICAgIHZhciBmbGF0bWFwID0gdGhpcy4kcmVmcy5tdWx0aWZsYXRtYXAuZ2V0Q3VycmVudEZsYXRtYXAoKS5tYXBJbXA7CiAgICAgICAgICAgICAgZmxhdG1hcC5jbGVhclNlYXJjaFJlc3VsdHMoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZS5mZWF0dXJlLnR5cGUgPT0gImZlYXR1cmUiKSB7CiAgICAgICAgICAgIC8vIERvIG5vIG9wZW4gc2NhZmZvbGQgaW4gc3luYyBtYXAKICAgICAgICAgICAgaWYgKHRoaXMuc3luY01vZGUpIHsKICAgICAgICAgICAgICBmaXJlUmVzb3VyY2VTZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgYWN0aW9uID0gInNjYWZmb2xkIjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2UuZXZlbnRUeXBlID09ICJtb3VzZWVudGVyIikgewogICAgICAgICAgcmVzdWx0LmV2ZW50VHlwZSA9ICJoaWdobGlnaHRlZCI7CiAgICAgICAgICBmaXJlUmVzb3VyY2VTZWxlY3RlZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gIlNjYWZmb2xkIikgewogICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZVswXSkgewogICAgICAgICAgcmVzdWx0LmludGVybmFsTmFtZSA9IHJlc291cmNlWzBdLmRhdGEuaWQ7CiAgICAgICAgICAvLyBGYWNldCBzZWFyY2ggaWYgbWFya2VyIGlzIGNsaWNrZWQKICAgICAgICAgIGlmIChyZXNvdXJjZVswXS5kYXRhLmxhc3RBY3Rpb25Pbk1hcmtlciA9PT0gdHJ1ZSkgewogICAgICAgICAgICByZXR1cm5lZEFjdGlvbiA9IHsKICAgICAgICAgICAgICB0eXBlOiAiRmFjZXQiLAogICAgICAgICAgICAgIGZhY2V0OiBjYXBpdGFsaXNlKHJlc291cmNlWzBdLmRhdGEuaWQpLAogICAgICAgICAgICAgIGZhY2V0UHJvcFBhdGg6ICJhbmF0b215Lm9yZ2FuLm5hbWUiLAogICAgICAgICAgICAgIHRlcm06ICJBbmF0b21pY2FsIHN0cnVjdHVyZSIKICAgICAgICAgICAgfTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmVzdWx0LmV2ZW50VHlwZSA9ICJzZWxlY3RlZCI7CiAgICAgICAgZmlyZVJlc291cmNlU2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIGFjdGlvbiA9ICJzZWFyY2giOwogICAgICB9CiAgICAgIGlmIChyZXR1cm5lZEFjdGlvbiA9PT0gdW5kZWZpbmVkKSByZXR1cm5lZEFjdGlvbiA9IGdldEludGVyYWN0aXZlQWN0aW9uKHJlc3VsdCwgYWN0aW9uKTsKICAgICAgaWYgKHJldHVybmVkQWN0aW9uKSBFdmVudEJ1cy4kZW1pdCgiUG9wb3ZlckFjdGlvbkNsaWNrIiwgcmV0dXJuZWRBY3Rpb24pOwogICAgICBpZiAoZmlyZVJlc291cmNlU2VsZWN0ZWQpIHRoaXMuJGVtaXQoInJlc291cmNlLXNlbGVjdGVkIiwgcmVzdWx0KTsKICAgIH0sCiAgICByZXNvdXJjZUhhc0FjdGlvbjogZnVuY3Rpb24gcmVzb3VyY2VIYXNBY3Rpb24ocmVzb3VyY2UpIHsKICAgICAgcmV0dXJuIHJlc291cmNlLnR5cGUgPT09ICJVUkwiIHx8IHJlc291cmNlLnR5cGUgPT09ICJTZWFyY2giIHx8IHJlc291cmNlLnR5cGUgPT09ICJOZXVyb24gU2VhcmNoIiB8fCByZXNvdXJjZS50eXBlID09ICJGYWNldCIgfHwgcmVzb3VyY2UudHlwZSA9PSAiRmFjZXRzIjsKICAgIH0sCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoaXMgdmlld2VyIGlzIGN1cnJlbnRseSB2aXNpYmxlCiAgICAgKi8KICAgIGlzVmlzaWJsZTogZnVuY3Rpb24gaXNWaXNpYmxlKCkgewogICAgICB2YXIgc2xvdCA9IHN0b3JlLmdldHRlcnNbInNwbGl0Rmxvdy9nZXRTbG90QnlJZCJdKHRoaXMuZW50cnkuaWQpOwogICAgICBpZiAoc2xvdCkgcmV0dXJuIHN0b3JlLmdldHRlcnNbInNwbGl0Rmxvdy9pc1Nsb3RBY3RpdmUiXShzbG90KTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIGRpc3BsYXlUb29sdGlwOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcCgpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IHRoZSB0ZXJtIHRvIHpvb20vaGlnaGxpZ2h0IGluIGEgc3luY2hyb25pc2F0aW9uIGV2ZW50LAogICAgICogaWYgaXQgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBtYXAsIGl0IHdpbGwgcGVyZm9ybSBzZXZlcmFsCiAgICAgKiBjYWxscyB0byB0cnkgdG8gZ2UgYSB2YWxpZCBuYW1lL2lkLgogICAgICovCiAgICBnZXROYW1lQW5kSWRGcm9tU3luY0RhdGE6IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF9nZXROYW1lQW5kSWRGcm9tU3luY0RhdGEgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoZGF0YSkgewogICAgICAgIHZhciBuYW1lLCBpZCwgb2JqZWN0cywgbWF0Y2hlZCwgX21hdGNoZWQ7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgbmFtZSA9IGRhdGEuaW50ZXJuYWxOYW1lOwogICAgICAgICAgICAgIGlmIChuYW1lID09PSB1bmRlZmluZWQgJiYgZGF0YS5yZXNvdXJjZSkgewogICAgICAgICAgICAgICAgbmFtZSA9IGRhdGEucmVzb3VyY2UubGFiZWw7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlkID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgIGlmIChkYXRhLnJlc291cmNlICYmIGRhdGEucmVzb3VyY2UucmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgIGlkID0gZGF0YS5yZXNvdXJjZS5yZXNvdXJjZVswXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCEodGhpcy5lbnRyeS50eXBlID09PSAiU2NhZmZvbGQiKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE4OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG9iamVjdHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkLmZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZShuYW1lKTsgLy8gSWYgYSByZWdpb24gaXMgbm90IGZvdW5kIHVzZSBhIGhhcmRjb2RlZCBsaXN0IHRvIGRldGVybWluZQogICAgICAgICAgICAgIC8vIGl0cyBwYXJlbnRzIHJlZ2lvbiBmaXJzdAogICAgICAgICAgICAgIGlmICghKG9iamVjdHMubGVuZ3RoID09PSAwKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE2OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICghKGRhdGEucmVzb3VyY2UgJiYgZGF0YS5yZXNvdXJjZS5mZWF0dXJlKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG1hdGNoZWQgPSBnZXROZXJ2ZU5hbWVzKGRhdGEucmVzb3VyY2UuZmVhdHVyZS5tb2RlbHMpOwogICAgICAgICAgICAgIGlmICghKG1hdGNoZWQubGVuZ3RoID4gMCkpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBtYXRjaGVkKTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBtYXRjaGVkID0gZ2V0UGFyZW50c1JlZ2lvbihuYW1lKTsKICAgICAgICAgICAgICBpZiAoIW1hdGNoZWQpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBtYXRjaGVkKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICBpZiAoIShpZCAmJiBkYXRhLmV2ZW50VHlwZSA9PT0gInNlbGVjdGVkIikpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBmZXRjaCgiIi5jb25jYXQodGhpcy5hcGlMb2NhdGlvbiwgImdldC1yZWxhdGVkLXRlcm1zLyIpLmNvbmNhdChpZCkpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOwogICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhLnViZXJvbi5hcnJheS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIG5hbWUgPSBkYXRhLnViZXJvbi5hcnJheVswXS5uYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZGF0YS51YmVyb24uYXJyYXlbMF0ubmFtZS5zbGljZSgxKTsKICAgICAgICAgICAgICAgICAgaWQgPSBkYXRhLnViZXJvbi5hcnJheVswXS5pZC50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxOTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICBpZiAodGhpcy5lbnRyeS50eXBlID09PSAiTXVsdGlGbGF0bWFwIikgewogICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICJCbGFkZGVyIikgewogICAgICAgICAgICAgICAgICBuYW1lID0gIlVyaW5hcnkgQmxhZGRlciI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfbWF0Y2hlZCA9IGdldE5lcnZlTmFtZXMobmFtZSk7CiAgICAgICAgICAgICAgICAgIGlmIChfbWF0Y2hlZC5sZW5ndGggPiAwKSBuYW1lID0gX21hdGNoZWRbMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIHsKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIGZ1bmN0aW9uIGdldE5hbWVBbmRJZEZyb21TeW5jRGF0YShfeCkgewogICAgICAgIHJldHVybiBfZ2V0TmFtZUFuZElkRnJvbVN5bmNEYXRhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGdldE5hbWVBbmRJZEZyb21TeW5jRGF0YTsKICAgIH0oKSwKICAgIGdldERhdGFzZXRBbmF0b215SW5mbzogZnVuY3Rpb24gZ2V0RGF0YXNldEFuYXRvbXlJbmZvKGlkZW50aWZpZXIpIHsKICAgICAgZmV0Y2goIiIuY29uY2F0KHRoaXMuYXBpTG9jYXRpb24sICJkYXRhc2V0X2luZm8vYW5hdG9teT9pZGVudGlmaWVyPSIpLmNvbmNhdChpZGVudGlmaWVyKSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgdmFyIHJlc3VsdFBheWxvYWQgPSBkYXRhLnJlc3VsdFswXTsKICAgICAgICB2YXIgbWFya2VyQ3VyaWU7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIG1hcmtlckN1cmllID0gcmVzdWx0UGF5bG9hZC5hbmF0b215Lm9yZ2FuWzBdLmN1cmllOwogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICBtYXJrZXJDdXJpZSA9IHVuZGVmaW5lZDsKICAgICAgICB9CiAgICAgICAgdmFyIG1hcmtlckRvaTsKICAgICAgICB0cnkgewogICAgICAgICAgbWFya2VyRG9pID0gcmVzdWx0UGF5bG9hZC5pdGVtLmN1cmllOwogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICBtYXJrZXJEb2kgPSB1bmRlZmluZWQ7CiAgICAgICAgfQogICAgICAgIHZhciBtYXJrZXJTcGVjaWVzOwogICAgICAgIHRyeSB7CiAgICAgICAgICB2YXIgaW5kZXggPSAwOwogICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICB3aGlsZSAoIWZvdW5kICYmIGluZGV4IDwgcmVzdWx0UGF5bG9hZC5vcmdhbmlzbXMuc3ViamVjdC5sZW5ndGgpIHsKICAgICAgICAgICAgdmFyIGVudHJ5ID0gcmVzdWx0UGF5bG9hZC5vcmdhbmlzbXMuc3ViamVjdFtpbmRleF07CiAgICAgICAgICAgIGlmIChlbnRyeS5zcGVjaWVzKSB7CiAgICAgICAgICAgICAgbWFya2VyU3BlY2llcyA9IGVudHJ5LnNwZWNpZXMubmFtZTsKICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5kZXggKz0gMTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgbWFya2VyU3BlY2llcyA9IHVuZGVmaW5lZDsKICAgICAgICB9CiAgICAgICAgc3RvcmUuY29tbWl0KCJzZXR0aW5ncy91cGRhdGVGZWF0dXJlZE1hcmtlciIsIHsKICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsCiAgICAgICAgICBtYXJrZXI6IG1hcmtlckN1cmllLAogICAgICAgICAgZG9pOiBtYXJrZXJEb2ksCiAgICAgICAgICBzcGVjaWVzOiBtYXJrZXJTcGVjaWVzCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IGEgbGlzdCBvZiBmZWF0dXJlZCBkYXRhc2V0cyB0byBkaXNwbGF5LgogICAgICovCiAgICBnZXRGZWF0dXJlZERhdGFzZXRzOiBmdW5jdGlvbiBnZXRGZWF0dXJlZERhdGFzZXRzKCkgewogICAgICB2YXIgbG9jYWxfdGhpcyA9IHRoaXM7CiAgICAgIGZldGNoKCIiLmNvbmNhdCh0aGlzLmFwaUxvY2F0aW9uLCAiZ2V0X2ZlYXR1cmVkX2RhdGFzZXRzX2lkZW50aWZpZXJzIikpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsKICAgICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIHN0b3JlLmNvbW1pdCgic2V0dGluZ3MvdXBkYXRlRmVhdHVyZWQiLCBkYXRhLmlkZW50aWZpZXJzKTsKICAgICAgICBkYXRhLmlkZW50aWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHsKICAgICAgICAgIGxvY2FsX3RoaXMuZ2V0RGF0YXNldEFuYXRvbXlJbmZvKGVsZW1lbnQpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCiAgICB6b29tVG9GZWF0dXJlczogZnVuY3Rpb24gem9vbVRvRmVhdHVyZXMoKSB7CiAgICAgIHJldHVybjsKICAgIH0sCiAgICBoYW5kbGVTeW5jTW91c2VFdmVudDogZnVuY3Rpb24gKCkgewogICAgICB2YXIgX2hhbmRsZVN5bmNNb3VzZUV2ZW50ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMihkYXRhKSB7CiAgICAgICAgdmFyIGluZm87CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROYW1lQW5kSWRGcm9tU3luY0RhdGEoZGF0YSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBpbmZvID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgaWYgKGRhdGEuZXZlbnRUeXBlID09PSAiaGlnaGxpZ2h0ZWQiKSB7CiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodEZlYXR1cmVzKGluZm8pOwogICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICJzZWxlY3RlZCIpIHsKICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVRvb2x0aXAoaW5mbyk7CiAgICAgICAgICAgICAgICAvL3RoaXMuem9vbVRvRmVhdHVyZXMoaW5mbywgdHJ1ZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIGZ1bmN0aW9uIGhhbmRsZVN5bmNNb3VzZUV2ZW50KF94MikgewogICAgICAgIHJldHVybiBfaGFuZGxlU3luY01vdXNlRXZlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfQogICAgICByZXR1cm4gaGFuZGxlU3luY01vdXNlRXZlbnQ7CiAgICB9KCksCiAgICAvKioKICAgICAqIEhhbmRsZSBzeW5jIHBhbiB6b29tIGV2ZW50CiAgICAgKi8KICAgIGhhbmRsZVN5bmNQYW5ab29tRXZlbnQ6IGZ1bmN0aW9uIGhhbmRsZVN5bmNQYW5ab29tRXZlbnQoKSB7CiAgICAgIHJldHVybjsKICAgIH0sCiAgICBoaWdobGlnaHRGZWF0dXJlczogZnVuY3Rpb24gaGlnaGxpZ2h0RmVhdHVyZXMoKSB7CiAgICAgIHJldHVybjsKICAgIH0sCiAgICByZWNlaXZlU3luY2hyb25pc2VkRXZlbnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF9yZWNlaXZlU3luY2hyb25pc2VkRXZlbnQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKGRhdGEpIHsKICAgICAgICB2YXIgaW5mbzsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCEoZGF0YS5wYW5lSW5kZXggIT09IHRoaXMuZW50cnkuaWQpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGRhdGEuZXZlbnRUeXBlID09ICJwYW5ab29tIikgewogICAgICAgICAgICAgICAgLy90aGlzLmhhbmRsZVN5bmNQYW5ab29tRXZlbnQoZGF0YSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3luY01vdXNlRXZlbnQoZGF0YSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gOTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIGlmICghKGRhdGEuZXZlbnRUeXBlID09ICJzZWxlY3RlZCIpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA3OwogICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWVBbmRJZEZyb21TeW5jRGF0YShkYXRhKTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIGluZm8gPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICB0aGlzLnpvb21Ub0ZlYXR1cmVzKGluZm8sIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTsKICAgICAgfSkpOwogICAgICBmdW5jdGlvbiByZWNlaXZlU3luY2hyb25pc2VkRXZlbnQoX3gzKSB7CiAgICAgICAgcmV0dXJuIF9yZWNlaXZlU3luY2hyb25pc2VkRXZlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfQogICAgICByZXR1cm4gcmVjZWl2ZVN5bmNocm9uaXNlZEV2ZW50OwogICAgfSgpLAogICAgcmVxdWVzdFN5bmNocm9uaXNlZEV2ZW50OiBmdW5jdGlvbiByZXF1ZXN0U3luY2hyb25pc2VkRXZlbnQoKSB7CiAgICAgIHJldHVybjsKICAgIH0sCiAgICBnZXRBdmFpbGFibGVUZXJtczogZnVuY3Rpb24gZ2V0QXZhaWxhYmxlVGVybXMoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICAvL1VzZSB0aGUgZGVmYXVsdCBsaXN0IG9mIHViZXJvbnMgYmVmb3JlIHdlIGdldCB0aGUgbGlzdCBmcm9tCiAgICAgIC8vdGhlIGFwaQogICAgICB2YXIgdGVybXMgPSBnZXRBdmFpbGFibGVUZXJtc0ZvclNwZWNpZXMoKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXJtcy5sZW5ndGg7IGkrKykgewogICAgICAgIHRoaXMuaWROYW1lUGFpclt0ZXJtc1tpXS5pZF0gPSB0ZXJtc1tpXS5uYW1lOwogICAgICB9CiAgICAgIGlmICh0aGlzLmFwaUxvY2F0aW9uKSB7CiAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xsZXIpIHRoaXMuX2NvbnRyb2xsZXIuYWJvcnQoKTsKICAgICAgICB0aGlzLl9jb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOwogICAgICAgIHZhciBzaWduYWwgPSB0aGlzLl9jb250cm9sbGVyLnNpZ25hbDsKICAgICAgICBmZXRjaCgiIi5jb25jYXQodGhpcy5hcGlMb2NhdGlvbiwgImdldC1vcmdhbi1jdXJpZXMiKSwgewogICAgICAgICAgc2lnbmFsOiBzaWduYWwKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICBfdGhpczIuX2NvbnRyb2xsZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICBkYXRhLnViZXJvbi5hcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChwYWlyKSB7CiAgICAgICAgICAgIF90aGlzMi5pZE5hbWVQYWlyW3BhaXIuaWQudG9VcHBlckNhc2UoKV0gPSBwYWlyLm5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYWlyLm5hbWUuc2xpY2UoMSk7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGZsYXRtYXBNYXJrZXJab29tVXBkYXRlOiBmdW5jdGlvbiBmbGF0bWFwTWFya2VyWm9vbVVwZGF0ZSgpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIG9uUmVzaXplOiBmdW5jdGlvbiBvblJlc2l6ZSgpIHsKICAgICAgcmV0dXJuOwogICAgfSwKICAgIHN0YXJ0SGVscDogZnVuY3Rpb24gc3RhcnRIZWxwKCkgewogICAgICBpZiAodGhpcy5pc0luSGVscCA9PT0gZmFsc2UpIHsKICAgICAgICB0aGlzLmhlbHBNb2RlID0gdHJ1ZTsKICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5lbmRIZWxwKTsKICAgICAgICB0aGlzLmlzSW5IZWxwID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIGVuZEhlbHA6IGZ1bmN0aW9uIGVuZEhlbHAoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5lbmRIZWxwKTsKICAgICAgdGhpcy5oZWxwTW9kZSA9IGZhbHNlOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczMuaXNJbkhlbHAgPSBmYWxzZTsKICAgICAgfSwgMjAwKTsKICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBhcGlMb2NhdGlvbjogcHJvY2Vzcy5lbnYuVlVFX0FQUF9BUElfTE9DQVRJT04sCiAgICAgIGFjdGl2ZVNwZWNpZXM6ICJSYXQiLAogICAgICBzY2FmZm9sZENhbWVyYTogdW5kZWZpbmVkLAogICAgICBtYWluU3R5bGU6IHsKICAgICAgICBoZWlnaHQ6IHRoaXMuZW50cnkuZGF0YXNldFRpdGxlID8gImNhbGMoMTAwJSAtIDMwcHgpIiA6ICIxMDAlIiwKICAgICAgICB3aWR0aDogIjEwMCUiLAogICAgICAgIGJvdHRvbTogIjBweCIKICAgICAgfSwKICAgICAgaGVscE1vZGU6IGZhbHNlLAogICAgICBpZE5hbWVQYWlyOiB7fSwKICAgICAgc2NhZmZvbGRMb2FkZWQ6IGZhbHNlLAogICAgICBpc0luSGVscDogZmFsc2UKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5mbGF0bWFwQVBJID0gdW5kZWZpbmVkOwogICAgdGhpcy5hcGlMb2NhdGlvbiA9IHVuZGVmaW5lZDsKICAgIGlmIChzdG9yZS5zdGF0ZS5zZXR0aW5ncy5mbGF0bWFwQVBJKSB0aGlzLmZsYXRtYXBBUEkgPSBzdG9yZS5zdGF0ZS5zZXR0aW5ncy5mbGF0bWFwQVBJOwogICAgaWYgKHN0b3JlLnN0YXRlLnNldHRpbmdzLnNwYXJjQXBpKSB0aGlzLmFwaUxvY2F0aW9uID0gc3RvcmUuc3RhdGUuc2V0dGluZ3Muc3BhcmNBcGk7CiAgfQp9Ow=="},{"version":3,"names":["getAvailableTermsForSpecies","getInteractiveAction","getNerveNames","getParentsRegion","EventBus","markerZoomLevels","store","capitalise","text","toUpperCase","substring","props","entry","Object","visible","type","Boolean","default","mouseHovered","computed","syncMode","state","splitFlow","mounted","_this","$on","startHelp","methods","toggleSyncMode","getState","undefined","openMap","$emit","updateWithViewUrl","search","searchSuggestions","resourceSelected","resource","resourceHasAction","returnedAction","action","fireResourceSelected","result","paneIndex","id","internalName","eventType","idNamePair","feature","models","label","hardcodedAnnotation","filter","mz","getters","term","h","keyword","length","replace","facet","facetPropPath","flatmap","$refs","multiflatmap","getCurrentFlatmap","mapImp","clearSearchResults","data","lastActionOnMarker","isVisible","slot","displayTooltip","getNameAndIdFromSyncData","_getNameAndIdFromSyncData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","name","objects","matched","_matched","wrap","_callee$","_context","prev","next","scaffold","findObjectsWithGroupName","abrupt","fetch","concat","apiLocation","then","response","json","uberon","array","charAt","slice","stop","_x","apply","arguments","getDatasetAnatomyInfo","identifier","resultPayload","markerCurie","anatomy","organ","curie","error","markerDoi","item","markerSpecies","index","found","organisms","subject","species","commit","marker","doi","getFeaturedDatasets","local_this","identifiers","forEach","element","zoomToFeatures","handleSyncMouseEvent","_handleSyncMouseEvent","_callee2","info","_callee2$","_context2","sent","highlightFeatures","_x2","handleSyncPanZoomEvent","receiveSynchronisedEvent","_receiveSynchronisedEvent","_callee3","_callee3$","_context3","_x3","requestSynchronisedEvent","getAvailableTerms","_this2","terms","i","_controller","abort","AbortController","signal","pair","flatmapMarkerZoomUpdate","onResize","isInHelp","helpMode","window","addEventListener","endHelp","_this3","removeEventListener","setTimeout","process","env","VUE_APP_API_LOCATION","activeSpecies","scaffoldCamera","mainStyle","height","datasetTitle","width","bottom","scaffoldLoaded","created","flatmapAPI","settings","sparcApi"],"sources":["/home/cmiss/Jenkins/workspace/mapintegratedvuer/src/mixins/ContentMixin.js"],"sourcesContent":["import {\n getAvailableTermsForSpecies,\n getInteractiveAction,\n getNerveNames,\n getParentsRegion,\n} from \"../components/SimulatedData.js\";\nimport EventBus from \"../components/EventBus\";\nimport markerZoomLevels from \"../components/markerZoomLevelsHardCoded.js\";\nimport store from \"../store\";\n\nfunction capitalise(text) {\n return text[0].toUpperCase() + text.substring(1)\n}\n\n/* eslint-disable no-alert, no-console */\nexport default {\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n visible: {\n type: Boolean,\n default: true,\n },\n mouseHovered: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n syncMode() {\n return store.state.splitFlow.syncMode;\n },\n },\n mounted: function () {\n EventBus.$on(\"startHelp\", () => {\n this.startHelp();\n });\n },\n methods: {\n toggleSyncMode: function () {\n return;\n },\n getState: function () {\n return undefined;\n },\n openMap: function (type) {\n if (type === \"SYNC\") {\n this.toggleSyncMode();\n } else {\n EventBus.$emit(\"OpenNewMap\", type);\n }\n },\n updateWithViewUrl: function() {\n return;\n },\n /**\n * Perform a local search on this contentvuer\n */\n search: function () {\n return false;\n },\n /**\n * Get a list of search suggestions on this contentvuer\n */\n searchSuggestions: function () {\n return;\n },\n /**\n * Callback when the vuers emit a selected event.\n */\n resourceSelected: function (type, resource) {\n // Skip processing if resources already has actions\n if (this.resourceHasAction(resource)) {\n EventBus.$emit(\"PopoverActionClick\", resource);\n return;\n }\n\n let returnedAction = undefined;\n let action = \"none\";\n let fireResourceSelected = false;\n const result = {\n paneIndex: this.entry.id,\n type: type,\n resource: resource,\n internalName: undefined,\n eventType: undefined,\n };\n\n if (type == \"MultiFlatmap\" || type == \"Flatmap\") {\n result.internalName = this.idNamePair[resource.feature.models];\n if (resource.eventType == \"click\") {\n result.eventType = \"selected\";\n if (resource.feature.type == \"marker\") {\n let label = this.idNamePair[resource.feature.models];\n let hardcodedAnnotation = markerZoomLevels.filter(\n mz => mz.id === resource.feature.models\n );\n\n if (\n store.getters[\"settings/isFeaturedMarkerIdentifier\"](\n resource.feature.id\n )\n ) {\n // It is a featured dataset search for DOI.\n returnedAction = {\n type: \"Search\",\n term: store.getters[\"settings/featuredMarkerDoi\"](\n resource.feature.id\n ),\n };\n } else if (hardcodedAnnotation.filter(h => h.keyword).length > 0) {\n // if it matches our stored keywords, it is a keyword search\n // Keyword searches do not contain labels, so switch to keyword search if no label exists\n returnedAction = {\n type: \"Search\",\n term:\n \"http://purl.obolibrary.org/obo/\" +\n resource.feature.models.replace(\":\", \"_\"),\n };\n } else {\n // Facet search on anatomy if it is not a keyword search\n returnedAction = {\n type: \"Facet\",\n facet: label,\n facetPropPath: \"anatomy.organ.name\",\n term: \"Anatomical structure\",\n };\n }\n\n fireResourceSelected = true;\n if (type == \"MultiFlatmap\") {\n const flatmap =\n this.$refs.multiflatmap.getCurrentFlatmap().mapImp;\n flatmap.clearSearchResults();\n }\n } else if (resource.feature.type == \"feature\") {\n // Do no open scaffold in sync map\n if (this.syncMode) {\n fireResourceSelected = true;\n } else {\n action = \"scaffold\";\n }\n }\n } else if (resource.eventType == \"mouseenter\") {\n result.eventType = \"highlighted\";\n fireResourceSelected = true;\n }\n } else if (type == \"Scaffold\") {\n if (resource && resource[0]) {\n result.internalName = resource[0].data.id;\n // Facet search if marker is clicked\n if (resource[0].data.lastActionOnMarker === true) {\n returnedAction = {\n type: \"Facet\",\n facet: capitalise(resource[0].data.id),\n facetPropPath: \"anatomy.organ.name\",\n term: \"Anatomical structure\",\n };\n }\n }\n result.eventType = \"selected\";\n fireResourceSelected = true;\n action = \"search\";\n }\n if (returnedAction === undefined)\n returnedAction = getInteractiveAction(result, action);\n if (returnedAction) EventBus.$emit(\"PopoverActionClick\", returnedAction);\n if (fireResourceSelected) this.$emit(\"resource-selected\", result);\n },\n resourceHasAction: function (resource) {\n return (\n resource.type === \"URL\" ||\n resource.type === \"Search\" ||\n resource.type === \"Neuron Search\" ||\n resource.type == \"Facet\" ||\n resource.type == \"Facets\"\n );\n },\n /**\n * Check if this viewer is currently visible\n */\n isVisible: function () {\n let slot = store.getters[\"splitFlow/getSlotById\"](this.entry.id);\n if (slot) return store.getters[\"splitFlow/isSlotActive\"](slot);\n return false;\n },\n displayTooltip: function() {\n return;\n },\n /**\n * Get the term to zoom/highlight in a synchronisation event,\n * if it cannot be found in the map, it will perform several\n * calls to try to ge a valid name/id.\n */\n getNameAndIdFromSyncData: async function (data) {\n let name = data.internalName;\n if (name === undefined && data.resource) {\n name = data.resource.label;\n }\n let id = undefined;\n if (data.resource && data.resource.resource) {\n id = data.resource.resource[0];\n }\n if (this.entry.type === \"Scaffold\") {\n const objects = this.$refs.scaffold.findObjectsWithGroupName(name);\n // If a region is not found use a hardcoded list to determine\n // its parents region first\n if (objects.length === 0) {\n //Use nerve mapping\n if (data.resource && data.resource.feature) {\n matched = getNerveNames(data.resource.feature.models);\n if (matched.length > 0) return matched;\n }\n let matched = getParentsRegion(name);\n if (matched) {\n return matched;\n }\n // Hardcoded list failed - use an endpoint to find its parents\n if (id && data.eventType === \"selected\") {\n return fetch(`${this.apiLocation}get-related-terms/${id}`)\n .then(response => response.json())\n .then(data => {\n if (data.uberon.array.length > 0) {\n name =\n data.uberon.array[0].name.charAt(0).toUpperCase() +\n data.uberon.array[0].name.slice(1);\n id = data.uberon.array[0].id.toUpperCase();\n return { id, name };\n }\n });\n }\n }\n } else if (this.entry.type === \"MultiFlatmap\") {\n if (name === \"Bladder\") {\n name = \"Urinary Bladder\";\n } else {\n const matched = getNerveNames(name);\n if (matched.length > 0) name = matched[0];\n }\n }\n return { id, name };\n },\n getDatasetAnatomyInfo: function (identifier) {\n fetch(`${this.apiLocation}dataset_info/anatomy?identifier=${identifier}`)\n .then(response => response.json())\n .then(data => {\n const resultPayload = data.result[0];\n let markerCurie;\n try {\n markerCurie = resultPayload.anatomy.organ[0].curie;\n } catch (error) {\n markerCurie = undefined;\n }\n let markerDoi;\n try {\n markerDoi = resultPayload.item.curie;\n } catch (error) {\n markerDoi = undefined;\n }\n let markerSpecies;\n try {\n let index = 0;\n let found = false;\n while (!found && index < resultPayload.organisms.subject.length) {\n const entry = resultPayload.organisms.subject[index];\n if (entry.species) {\n markerSpecies = entry.species.name;\n found = true;\n }\n index += 1;\n }\n } catch (error) {\n markerSpecies = undefined;\n }\n store.commit(\"settings/updateFeaturedMarker\", {\n identifier,\n marker: markerCurie,\n doi: markerDoi,\n species: markerSpecies,\n });\n });\n },\n /**\n * Get a list of featured datasets to display.\n */\n getFeaturedDatasets: function () {\n const local_this = this;\n fetch(`${this.apiLocation}get_featured_datasets_identifiers`)\n .then(response => response.json())\n .then(data => {\n store.commit(\"settings/updateFeatured\", data.identifiers);\n data.identifiers.forEach(element => {\n local_this.getDatasetAnatomyInfo(element);\n });\n });\n },\n zoomToFeatures: function () {\n return;\n },\n handleSyncMouseEvent: async function (data) {\n let info = await this.getNameAndIdFromSyncData(data);\n if (data.eventType === \"highlighted\") {\n this.highlightFeatures(info);\n } else if (data.eventType === \"selected\") {\n this.displayTooltip(info);\n //this.zoomToFeatures(info, true);\n }\n },\n /**\n * Handle sync pan zoom event\n */\n handleSyncPanZoomEvent: function () {\n return;\n },\n highlightFeatures: function () {\n return;\n },\n receiveSynchronisedEvent: async function (data) {\n if (data.paneIndex !== this.entry.id) {\n if (data.eventType == \"panZoom\") {\n //this.handleSyncPanZoomEvent(data);\n } else {\n this.handleSyncMouseEvent(data);\n }\n } else {\n if (data.eventType == \"selected\") {\n let info = await this.getNameAndIdFromSyncData(data);\n this.zoomToFeatures(info, false);\n }\n }\n },\n requestSynchronisedEvent: function () {\n return;\n },\n getAvailableTerms: function () {\n //Use the default list of uberons before we get the list from\n //the api\n let terms = getAvailableTermsForSpecies();\n for (let i = 0; i < terms.length; i++) {\n this.idNamePair[terms[i].id] = terms[i].name;\n }\n if (this.apiLocation) {\n if (this._controller) this._controller.abort();\n this._controller = new AbortController();\n let signal = this._controller.signal;\n fetch(`${this.apiLocation}get-organ-curies`, {\n signal,\n })\n .then(response => response.json())\n .then(data => {\n this._controller = undefined;\n data.uberon.array.forEach(pair => {\n this.idNamePair[pair.id.toUpperCase()] =\n pair.name.charAt(0).toUpperCase() + pair.name.slice(1);\n });\n return;\n });\n }\n },\n flatmapMarkerZoomUpdate() {\n return;\n },\n onResize: function () {\n return;\n },\n startHelp: function () {\n if (this.isInHelp === false) {\n this.helpMode = true;\n window.addEventListener(\"mousedown\", this.endHelp);\n this.isInHelp = true;\n }\n },\n endHelp: function () {\n window.removeEventListener(\"mousedown\", this.endHelp);\n this.helpMode = false;\n setTimeout(() => {\n this.isInHelp = false;\n }, 200);\n },\n },\n data: function () {\n return {\n apiLocation: process.env.VUE_APP_API_LOCATION,\n activeSpecies: \"Rat\",\n scaffoldCamera: undefined,\n mainStyle: {\n height: this.entry.datasetTitle ? \"calc(100% - 30px)\" : \"100%\",\n width: \"100%\",\n bottom: \"0px\",\n },\n helpMode: false,\n idNamePair: {},\n scaffoldLoaded: false,\n isInHelp: false,\n };\n },\n created: function () {\n this.flatmapAPI = undefined;\n this.apiLocation = undefined;\n if (store.state.settings.flatmapAPI)\n this.flatmapAPI = store.state.settings.flatmapAPI;\n if (store.state.settings.sparcApi)\n this.apiLocation = store.state.settings.sparcApi;\n },\n};\n"],"mappings":"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"}]}