{"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-eslint\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\jenkins\\workspace\\dataShare-fvue\\src\\api\\fields.js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\api\\fields.js","mtime":1734548164168},{"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-eslint\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgcmVxIGZyb20gJ0AvcmVxdWVzdC5qcyc7CnZhciBmb3JtID0gd2luZG93LmNvbnRleHQuZm9ybTsKdmFyIHBvcnRhbCA9IHdpbmRvdy5jb250ZXh0LnBvcnRhbDsKZXhwb3J0IGRlZmF1bHQgewogIC8v5Yi35paw5aSW6YOo6KGo5YWD5pWw5o2uCiAgcmVsb2FkQnlFbnRJZDogZnVuY3Rpb24gcmVsb2FkQnlFbnRJZChpZCwgYWxpYXMpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvYm8vZGVmL3YxL3JlbG9hZD9pZD0iLmNvbmNhdChpZCwgIiZhbGlhcz0iKS5jb25jYXQoYWxpYXMpKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgc2F2ZVRlbXBsYXRlRGF0YTogZnVuY3Rpb24gc2F2ZVRlbXBsYXRlRGF0YShkYXRhKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgIi9mb3JtL2RhdGFUZW1wbGF0ZS92MS9zYXZlIiwgZGF0YSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8vIOmAmui/h+WIq+WQjeiOt+WPluWFs+iBlOafpeivogogIGdldEJ5QWxpYXNDcTogZnVuY3Rpb24gZ2V0QnlBbGlhc0NxKGFsaWFzLCBjYikgewogICAgcmVxLnBvc3QoZm9ybSArICIvZm9ybS9jdXN0b21RdWVyeS92MS9nZXRCeUFsaWFzIiwgYWxpYXMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNiKHJlc3BvbnNlLmRhdGEpOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluaVsOaNruinhuWbvuWPmOmHjwogIGdldERhdGFUZW1wbGF0ZVZhckxpc3Q6IGZ1bmN0aW9uIGdldERhdGFUZW1wbGF0ZVZhckxpc3QoaWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZ2V0VmFyTGlzdCIpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRQYWdlSnNvbjogZnVuY3Rpb24gZ2V0UGFnZUpzb24ocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vZm9ybS92MS9saXN0JywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v5pWw5o2u5bu65qih5YiG57G75qCR5pWw5o2uCiAgZ2V0QnVzaW5lc3NPYmpUcmVlOiBmdW5jdGlvbiBnZXRCdXNpbmVzc09ialRyZWUocGFyYW0sIGNiKSB7CiAgICByZXEuZ2V0KHBvcnRhbCArICIvc3lzL3N5c1R5cGUvdjEvZ2V0VHlwZXNCeUtleT90eXBlS2V5PSIuY29uY2F0KHBhcmFtKSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY2IocmVzcG9uc2UpOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluaVsOaNruW7uuaooeaVsOaNrgogIGdldEJ1c2luZXNzT2JqRGF0YTogZnVuY3Rpb24gZ2V0QnVzaW5lc3NPYmpEYXRhKHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc292bGUsIHJlamN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAnL2JvL2RlZi92MS9saXN0JywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvdmxlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5pWw5o2u6KeG5Zu+CiAgZ2V0RGF0YWZvcm1hdGlvbjogZnVuY3Rpb24gZ2V0RGF0YWZvcm1hdGlvbihwYXJhbSwgY2IpIHsKICAgIHJlcS5nZXQoZm9ybSArICIvYm8vZGVmL3YxL2dldEJvSnNvbj9hbGlhcz0iLmNvbmNhdChwYXJhbSkpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgY2IocmVzcCk7CiAgICB9KTsKICB9LAogIC8v5L+u5pS55pWw5o2u5bu65qih54q25oCBCiAgdXBkYXRlQnVzaW5lc3NPYmpTdGF0dXM6IGZ1bmN0aW9uIHVwZGF0ZUJ1c2luZXNzT2JqU3RhdHVzKGlkLCBzdGF0dXMpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqY3QpIHsKICAgICAgcmVxLmdldChmb3JtICsgIi9iby9kZWYvdjEvc2V0U3RhdHVzP2lkPSIuY29uY2F0KGlkLCAiJnN0YXR1cz0iKS5jb25jYXQoc3RhdHVzKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v5Yig6Zmk5bu65qih5pWw5o2uCiAgcmVtb3ZlQnVzaW5lc3NPYmo6IGZ1bmN0aW9uIHJlbW92ZUJ1c2luZXNzT2JqKGlkKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamN0KSB7CiAgICAgIHJlcS5yZW1vdmUoZm9ybSArICIvYm8vZGVmL3YxL3JlbW92ZXM/aWRzPSIuY29uY2F0KGlkKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5YiG57G7CiAgZ2V0Q2F0ZWdvcnk6IGZ1bmN0aW9uIGdldENhdGVnb3J5KHR5cGUsIGNiKSB7CiAgICByZXEuZ2V0KHBvcnRhbCArICIvc3lzL3N5c1R5cGUvdjEvZ2V0QnlHcm91cEtleT9ncm91cEtleT0iLmNvbmNhdCh0eXBlKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICBjYihyZXNwKTsKICAgIH0pOwogIH0sCiAgLy/kv67mlLnliIbnsbsKICB1cGRhdGVDYXRlZ29yeTogZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWRzLCBjYXRlZ29yeUlkLCBjYXRlZ29yeU5hbWUpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvYm8vZGVmL3YxL3VwZGF0ZUNhdGVnb3J5P2lkcz0iLmNvbmNhdChpZHMsICImY2F0ZWdvcnlJZD0iKS5jb25jYXQoY2F0ZWdvcnlJZCwgIiZjYXRlZ29yeU5hbWU9IikuY29uY2F0KGNhdGVnb3J5TmFtZSkpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3ApOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/ojrflj5booajljZUKICBnZXRFbnREYXRhOiBmdW5jdGlvbiBnZXRFbnREYXRhKGlkLCBjYikgewogICAgcmVxLmdldChmb3JtICsgIi9iby9kZWYvdjEvZ2V0SnNvbj9pZD0iLmNvbmNhdChpZCkpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgY2IocmVzcCk7CiAgICB9KTsKICB9LAogIC8v5L+d5a2Y5a6e5L2TCiAgc2F2ZUVudERhdGE6IGZ1bmN0aW9uIHNhdmVFbnREYXRhKGpzb24pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2JvL2RlZi92MS9jcmVhdGVUYWJsZUZvcm0iLCBqc29uKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6YC76L6R5Yig6Zmk5a2X5q61CiAgcmVtb3ZlQXR0cjogZnVuY3Rpb24gcmVtb3ZlQXR0cihhdHRyLCBhbGlhcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICIvYm8vZGVmL3YxL3JlbW92ZUF0dHI/YWxpYXM9IiArIGFsaWFzLCBhdHRyKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6L+Y5Y6f5Yig6Zmk5a2X5q61CiAgcmVjb3Zlcnk6IGZ1bmN0aW9uIHJlY292ZXJ5KGF0dHIsIGFsaWFzKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgIi9iby9kZWYvdjEvcmVjb3Zlcnk/YWxpYXM9IiArIGFsaWFzLCBhdHRyKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v5Y+R5biDCiAgZGVwbG95OiBmdW5jdGlvbiBkZXBsb3koaWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvYm8vZGVmL3YxL2RlcGxveT9pZD0iLmNvbmNhdChpZCkpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3ApOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/mlbDmja7mupAKICBnZXREYXRhU291cmNlOiBmdW5jdGlvbiBnZXREYXRhU291cmNlKCkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldChjb250ZXh0LnBvcnRhbCArICIvc3lzL3N5c0RhdGFTb3VyY2UvdjEvZ2V0RGF0YVNvdXJjZXMiKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6YCJ5Lit5aSW6YOo6KGoCiAgZ2V0VGFibGVMaXN0OiBmdW5jdGlvbiBnZXRUYWJsZUxpc3QocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2Zvcm0vY3VzdG9tUXVlcnkvdjEvZ2V0QnlEc09iamVjdE5hbWUiLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+WklumDqOihqOWIh+aNogogIGNoYW5nZVRhYmxlTmFtZTogZnVuY3Rpb24gY2hhbmdlVGFibGVOYW1lKHBhcmFtLCBmbGFnKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgIi9mb3JtL2N1c3RvbVF1ZXJ5L3YxL2dldFRhYmxlP2ZsYWc9IiArIGZsYWcsIHBhcmFtKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v5qih5p2/566h55CG5pWw5o2uCiAgdGVtcGxhdGVMaXN0RGF0YTogZnVuY3Rpb24gdGVtcGxhdGVMaXN0RGF0YShwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICIvZm9ybS90ZW1wbGF0ZS92MS9saXN0IiwgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3ApOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/orr7nva7pu5jorqTmqKHmnb8KICBzZXREZWZhdWx0OiBmdW5jdGlvbiBzZXREZWZhdWx0KGlkLCB0eXBlKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KGZvcm0gKyAiL2Zvcm0vdGVtcGxhdGUvdjEvc2V0RGVmYXVsdD9pZD0iLmNvbmNhdChpZCwgIiZ0eXBlPSIpLmNvbmNhdCh0eXBlKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+aooeadv+WkjeWItgogIGNvcHlUZW1wbGF0ZTogZnVuY3Rpb24gY29weVRlbXBsYXRlKGlkLCBuYW1lLCBhbGlhcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICIvZm9ybS90ZW1wbGF0ZS92MS9jb3B5VGVtcGxhdGU/dGVtcGxhdGVJZD0iLmNvbmNhdChpZCwgIiZuZXdUZW1wbGF0ZU5hbWU9IikuY29uY2F0KG5hbWUsICImbmV3QWxpYXM9IikuY29uY2F0KGFsaWFzKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+WIneWni+WMluaooeadvwogIGluaXRUZW1wbGF0ZTogZnVuY3Rpb24gaW5pdFRlbXBsYXRlKCkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS90ZW1wbGF0ZS92MS9pbml0JykudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+agueaNruWIq+WQjeWIpOaWreihqOWNleaooeadv+aYr+WQpuW3sue7j+WtmOWcqCAg6L+U5Zue57uT5p6c77yadHJ1Ze+8muS4jeWtmOWcqO+8jGZhbHNl77ya5a2Y5ZyoCiAgaXNUZW1wbGF0ZUJ5QWxpYXM6IGZ1bmN0aW9uIGlzVGVtcGxhdGVCeUFsaWFzKGFsaWFzKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KGZvcm0gKyAnL2Zvcm0vdGVtcGxhdGUvdjEvaXNUZW1wbGF0ZUJ5QWxpYXM/YWxpYXM9JyArIGFsaWFzKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W57uR5a6a5pWw5o2uCiAgZ2V0QmluZERhdGE6IGZ1bmN0aW9uIGdldEJpbmREYXRhKGlkLCBhbGlhcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldChmb3JtICsgIi9iby9kZWYvdjEvZ2V0QmluZERhdGE/aWQ9Ii5jb25jYXQoaWQsICImYWxpYXM9IikuY29uY2F0KGFsaWFzKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluS4muWKoeaVsOaNruaooeadv+WIl+ihqOaVsOaNrgogIGdldERhdGFUZW1wbGF0ZURhdGE6IGZ1bmN0aW9uIGdldERhdGFUZW1wbGF0ZURhdGEocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2xpc3RUb0pzb24iLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W6KGo5Y2V5YiX6KGo5pWw5o2uCiAgZ2V0Rm9ybURhdGE6IGZ1bmN0aW9uIGdldEZvcm1EYXRhKHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgIi9mb3JtL2Zvcm0vdjEvbGlzdD9mb3JtVHlwZT1wYyZzdGF0dXM9ZGVwbG95IiwgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+agueaNruihqOWNleWIq+WQjeiOt+WPluaVsOaNruinhuWbvuaVsOaNrgogIGdldEJwbURhdGFUZW1wbGF0ZTogZnVuY3Rpb24gZ2V0QnBtRGF0YVRlbXBsYXRlKGZvcm1LZXksIGJvSWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZ2V0QnBtRGF0YVRlbXBsYXRlP2Zvcm1LZXk9Ii5jb25jYXQoZm9ybUtleSwgIiZib0lkPSIpLmNvbmNhdChib0lkKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEJwbURhdGFUZW1wbGF0ZUJ5SWQ6IGZ1bmN0aW9uIGdldEJwbURhdGFUZW1wbGF0ZUJ5SWQoaWQsIGJvSWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZ2V0QnlUZW1wbGF0ZUlkP2lkPSIuY29uY2F0KGlkLCAiJmJvSWQ9IikuY29uY2F0KGJvSWQpKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgZ2V0QnBtRGF0YVRlbXBsYXRlSW5mbzogZnVuY3Rpb24gZ2V0QnBtRGF0YVRlbXBsYXRlSW5mbyhhbGlhcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldChmb3JtICsgIi9mb3JtL2RhdGFUZW1wbGF0ZS92MS9nZXRCcG1EYXRhVGVtcGxhdGVJbmZvP2FsaWFzPSIgKyBhbGlhcykudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldFRlbXBsYXRlRGF0YUxpc3RGb3JtOiBmdW5jdGlvbiBnZXRUZW1wbGF0ZURhdGFMaXN0Rm9ybShhbGlhcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICIvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZGF0YUxpc3RfIiArIGFsaWFzLCB7fSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIHNhdmVUZW1wbGF0ZUh0bWw6IGZ1bmN0aW9uIHNhdmVUZW1wbGF0ZUh0bWwocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL3NhdmVUZW1wbGF0ZT9pZD0iICsgcGFyYW0uaWQsIHBhcmFtLnRlbXBsYXRlSHRtbCkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5Lia5Yqh5pWw5o2u5YiX6KGoCiAgZ2V0QnBtVGVtcGxhdGVCeVBhZ2luYXRpb246IGZ1bmN0aW9uIGdldEJwbVRlbXBsYXRlQnlQYWdpbmF0aW9uKGRhdGEpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2xpc3RKc29uLyIgKyBkYXRhLnRlbXBsYXRlSWQsIGRhdGEucGFnaW5hdGlvbikudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEN1c3RvbURpYWxvZ3M6IGZ1bmN0aW9uIGdldEN1c3RvbURpYWxvZ3MoKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgIi9mb3JtL2N1c3RvbURpYWxvZy92MS9nZXRBbGwiLCB7fSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEN1c3RvbURpYWxvZ0J5QWxpYXM6IGZ1bmN0aW9uIGdldEN1c3RvbURpYWxvZ0J5QWxpYXMoYWxpYXMpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICIvZm9ybS9jdXN0b21EaWFsb2cvdjEvZ2V0QnlBbGlhcz9hbGlhcz0iICsgYWxpYXMpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRDdXN0b21DaGFydExpc3Q6IGZ1bmN0aW9uIGdldEN1c3RvbUNoYXJ0TGlzdChwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9jdXN0b21DaGFydC92MS9saXN0JywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRDdXN0b21DaGFydEJ5SWQ6IGZ1bmN0aW9uIGdldEN1c3RvbUNoYXJ0QnlJZChpZCkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldChmb3JtICsgJy9mb3JtL2N1c3RvbUNoYXJ0L3YxL2dldC8nICsgaWQpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBzYXZlQ3VzdG9tQ2hhcnQ6IGZ1bmN0aW9uIHNhdmVDdXN0b21DaGFydChwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9jdXN0b21DaGFydC92MS9zYXZlJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBjaGVja1NxbDogZnVuY3Rpb24gY2hlY2tTcWwocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vcXVlcnkvcXVlcnlTcWxkZWYvY2hlY2tTcWwnLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldFF1ZXJ5U3FsRGVmOiBmdW5jdGlvbiBnZXRRdWVyeVNxbERlZihhbGlhcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5U3FsZGVmL2dldEpzb24/YWxpYXM9JyArIGFsaWFzKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgZ2V0VGFibGU6IGZ1bmN0aW9uIGdldFRhYmxlKHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL2N1c3RvbUNoYXJ0L3YxL2dldFRhYmxlJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRMaXN0RGF0YTogZnVuY3Rpb24gZ2V0TGlzdERhdGEoYWxpYXMsIHBhcmFtcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9jdXN0b21DaGFydC92MS9nZXRMaXN0RGF0YT9hbGlhcz0nICsgYWxpYXMsIHBhcmFtcykudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEN1c3RvbVZpZXdMaXN0OiBmdW5jdGlvbiBnZXRDdXN0b21WaWV3TGlzdChwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9xdWVyeS9xdWVyeVNxbGRlZi9saXN0SnNvbicsIHBhcmFtKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgZ2V0Q3VzdG9tVmlld0J5SWQ6IGZ1bmN0aW9uIGdldEN1c3RvbVZpZXdCeUlkKGlkKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KGZvcm0gKyAnL2Zvcm0vcXVlcnkvcXVlcnlTcWxkZWYvZ2V0SnNvbj9pZD0nICsgaWQpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRWaWV3TGlzdDogZnVuY3Rpb24gZ2V0Vmlld0xpc3QocGFyYW0sIGFsaWFzKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5Vmlldy9saXN0SnNvbj9zcWxBbGlhcz0nICsgYWxpYXMsIHBhcmFtKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgZ2V0Vmlld0J5SWQ6IGZ1bmN0aW9uIGdldFZpZXdCeUlkKGlkKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KGZvcm0gKyAnL2Zvcm0vcXVlcnkvcXVlcnlWaWV3L2dldEpzb24/aWQ9JyArIGlkKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgZ2V0VGVtcGxhdGVMaXN0OiBmdW5jdGlvbiBnZXRUZW1wbGF0ZUxpc3QoKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5Vmlldy9nZXRUZW1wTGlzdCcsIHt9KS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgcmVmcmVzaEZpZWxkczogZnVuY3Rpb24gcmVmcmVzaEZpZWxkcyhpZCkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5U3FsZGVmL3JlZnJlc2hGaWVsZHM/aWQ9JyArIGlkKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgc2F2ZUN1c3RvbVZpZXc6IGZ1bmN0aW9uIHNhdmVDdXN0b21WaWV3KHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5U3FsZGVmL3NhdmUnLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEN1c3RvbURpYWxvZzogZnVuY3Rpb24gZ2V0Q3VzdG9tRGlhbG9nKCkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9jdXN0b21EaWFsb2cvdjEvZ2V0QWxsJywge30pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRRdWVyeVZpZXdUZW1wbGF0ZTogZnVuY3Rpb24gZ2V0UXVlcnlWaWV3VGVtcGxhdGUoaWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICcvZm9ybS9xdWVyeS9xdWVyeVZpZXcvZ2V0SnNvbj9pZD0nICsgaWQpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBzYXZlUXVlcnlWaWV3VGVtcGxhdGU6IGZ1bmN0aW9uIHNhdmVRdWVyeVZpZXdUZW1wbGF0ZShpZCwgcGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vcXVlcnkvcXVlcnlWaWV3L3NhdmVUZW1wbGF0ZT9pZD0nICsgaWQsIHBhcmFtKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgc2F2ZVZpZXc6IGZ1bmN0aW9uIHNhdmVWaWV3KHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5Vmlldy9zYXZlJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRDb21WYXJMaXN0OiBmdW5jdGlvbiBnZXRDb21WYXJMaXN0KHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KGZvcm0gKyAnL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2dldFZhckxpc3QnKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/kv53lrZjlvJXlhaXohJrmnKzlkozmoLflvI/lr7nosaEKICBzYXZlRm9ybUpzOiBmdW5jdGlvbiBzYXZlRm9ybUpzKHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdChmb3JtICsgIi9mb3JtL2Zvcm0vdjEvc2F2ZUZvcm1KcyIsIHBhcmFtKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwLmRhdGEpOwogICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgaW1wb3J0Q3VzdG9tU3FsOiBmdW5jdGlvbiBpbXBvcnRDdXN0b21TcWwocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2Zvcm0vcXVlcnkvcXVlcnlTcWxkZWYvaW1wb3J0IiwgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBpbXBvcnRDdXN0b21EaWFsb2c6IGZ1bmN0aW9uIGltcG9ydEN1c3RvbURpYWxvZyhwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICIvZm9ybS9jdXN0b21EaWFsb2cvdjEvaW1wb3J0IiwgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBpbXBvcnRDdXN0b21RdWVyeTogZnVuY3Rpb24gaW1wb3J0Q3VzdG9tUXVlcnkocGFyYW0pIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vY3VzdG9tUXVlcnkvdjEvaW1wb3J0JywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+eJqeeQhuWIoOmZpOWtl+autQogIGRlbGV0ZUF0dHI6IGZ1bmN0aW9uIGRlbGV0ZUF0dHIoaWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5wb3N0KGZvcm0gKyAiL2JvL2RlZi92MS9kZWxldGVBdHRyP2lkPSIuY29uY2F0KGlkKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcCk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRDdXN0b21EaWFsb2dMaXN0OiBmdW5jdGlvbiBnZXRDdXN0b21EaWFsb2dMaXN0KHBhcmFtKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEucG9zdCh3aW5kb3cuY29udGV4dC5mb3JtICsgJy9mb3JtL2N1c3RvbURpYWxvZy92MS9saXN0JywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRCaW5kUmVsYXRpb246IGZ1bmN0aW9uIGdldEJpbmRSZWxhdGlvbihkZWZJZCwgZm9ybUtleSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLmdldCh3aW5kb3cuY29udGV4dC5mb3JtICsgIi9mb3JtL2Zvcm0vdjEvZ2V0QmluZFJlbGF0aW9uP2RlZklkPSIuY29uY2F0KGRlZklkLCAiJmZvcm1LZXk9IikuY29uY2F0KGZvcm1LZXkpKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEJPRGVmQnlGb3JtSWQ6IGZ1bmN0aW9uIGdldEJPRGVmQnlGb3JtSWQoZm9ybUlkKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KHdpbmRvdy5jb250ZXh0LmZvcm0gKyAiL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2dldEJPRGVmQnlGb3JtSWQ/Zm9ybUlkPSIuY29uY2F0KGZvcm1JZCkpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBnZXRIaWRlQXR0cjogZnVuY3Rpb24gZ2V0SGlkZUF0dHIodGFibGVOYW1lKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXEuZ2V0KHdpbmRvdy5jb250ZXh0LmZvcm0gKyAiL2JvL2RlZi92MS9nZXRIaWRlQXR0cj90YWJsZU5hbWU9Ii5jb25jYXQodGFibGVOYW1lKSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldFZpZXdNYW5hZ2VMaXN0OiBmdW5jdGlvbiBnZXRWaWV3TWFuYWdlTGlzdChwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS92aWV3TWFuYWdlL3YxL2xpc3RKc29uJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBjcmVhdGVQaHlzaWNhbFZpZXdCeVZpZXdNbmdJZDogZnVuY3Rpb24gY3JlYXRlUGh5c2ljYWxWaWV3QnlWaWV3TW5nSWQoaWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlcS5nZXQoZm9ybSArICcvZm9ybS92aWV3TWFuYWdlL3YxL2NyZWF0ZVBoeXNpY2FsVmlldy8nICsgaWQpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBzYXZlUHJpbnRUZW1wbGF0ZTogZnVuY3Rpb24gc2F2ZVByaW50VGVtcGxhdGUoZGF0YSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9mb3JtL3YxL3NhdmVQcmludFRlbXBsYXRlJywgZGF0YSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGdldEN1c3RvbVZpZXdzOiBmdW5jdGlvbiBnZXRDdXN0b21WaWV3cyhwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9xdWVyeS9xdWVyeVZpZXcvbGlzdEpzb24nLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8vIOmAmui/h+WIq+WQjeiOt+WPluWvueivneahhgogIGdldERpYWxvZ0J5QWxpYXM6IGZ1bmN0aW9uIGdldERpYWxvZ0J5QWxpYXMoYWxpYXMsIGNiKSB7CiAgICByZXEuZ2V0KGZvcm0gKyAiL2Zvcm0vY3VzdG9tRGlhbG9nL3YxL2dldEJ5QWxpYXM/YWxpYXM9Ii5jb25jYXQoYWxpYXMpKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZS5kYXRhKTsKICAgIH0pOwogIH0sCiAgLyogYml6IHN0YXJ0DQogICAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgLy/ojrflj5boh6rlrprkuYlzcWzop4blm77mlbDmja4KICBnZXRRdWVyeVNxbFZpZXc6IGZ1bmN0aW9uIGdldFF1ZXJ5U3FsVmlldyhkYXRhLCBjYikgewogICAgcmVxLmdldChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5Vmlldy9nZXRKc29uP3NxbEFsaWFzPScgKyBkYXRhLnNxbEFsaWFzICsgJyZhbGlhcz0nICsgZGF0YS5hbGlhcykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY2IocmVzcG9uc2UpOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluiHquWumuS5iXNxbOafpeivouinhuWbvuaVsOaNruWIl+ihqAogIGdldFF1ZXJ5U3FsVmlld0J5UGFnaW5hdGlvbjogZnVuY3Rpb24gZ2V0UXVlcnlTcWxWaWV3QnlQYWdpbmF0aW9uKGRhdGEsIGNiKSB7CiAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL3F1ZXJ5L3F1ZXJ5Vmlldy9kYXRhXycgKyBkYXRhLnNxbEFsaWFzICsgJy8nICsgZGF0YS5hbGlhcywgZGF0YS5wYWdpbmF0aW9uKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZSk7CiAgICB9KTsKICB9LAogIC8vIGRpYWxvZ0FQSQogIGdldGxpc3RKc29uOiBmdW5jdGlvbiBnZXRsaXN0SnNvbihkYXRhLCBjYikgewogICAgaWYgKGRhdGEucmVxdWVzdFR5cGUgPT0gJ1BPU1QnIHx8IGRhdGEuZHNUeXBlID09ICdkYXRhU291cmNlJykgewogICAgICByZXEucG9zdChkYXRhLnF1ZXJ5VXJsLCBkYXRhLnBhZ2VCZWFuKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGNiKHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9CiAgfSwKICBnZXRUcmVlRGF0YTogZnVuY3Rpb24gZ2V0VHJlZURhdGEoZGF0YSwgY2IpIHsKICAgIGlmIChkYXRhLnJlcXVlc3RUeXBlID09ICdHRVQnKSB7CiAgICAgIHJlcS5nZXQoZGF0YS51cmwpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgY2IocmVzcG9uc2UpOwogICAgICB9KTsKICAgIH0KICB9LAogIGdldFBlcm1pc3Npb25MaXN0OiBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uTGlzdChjYikgewogICAgcmVxLmdldCgnJHticG1Nb2RlbH0vZmxvdy9kZWZBdXRob3JpemUvdjEvZ2V0UGVybWlzc2lvbkxpc3QnKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZS5kYXRhKTsKICAgIH0pOwogIH0sCiAgLy9iaXrojrflj5bkuJrliqHmlbDmja7mqKHmnb/kv6Hmga8KICBiaXpHZXRCcG1EYXRhVGVtcGxhdGVJbmZvOiBmdW5jdGlvbiBiaXpHZXRCcG1EYXRhVGVtcGxhdGVJbmZvKGRhdGEsIGNiKSB7CiAgICB2YXIgbmVlZERpc3BsYXlGaWxlZHMgPSBkYXRhLm5lZWREaXNwbGF5RmlsZWRzID8gdHJ1ZSA6IGZhbHNlOwogICAgcmVxLmdldChmb3JtICsgJy9mb3JtL2RhdGFUZW1wbGF0ZS92MS9nZXRCcG1EYXRhVGVtcGxhdGVJbmZvP2FsaWFzPScgKyBkYXRhLnRlbXBsYXRlS2V5ICsgJyZuZWVkRGlzcGxheUZpbGVkcz0nICsgbmVlZERpc3BsYXlGaWxlZHMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNiKHJlc3BvbnNlKTsKICAgIH0pOwogIH0sCiAgLy/ojrflj5bkuJrliqHmlbDmja7mqKHmnb/liJfooajmqKHmnb9odG1sCiAgYml6R2V0VGVtcGxhdGVEYXRhTGlzdEZvcm06IGZ1bmN0aW9uIGJpekdldFRlbXBsYXRlRGF0YUxpc3RGb3JtKGRhdGEsIGNiKSB7CiAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL2RhdGFUZW1wbGF0ZS92MS9kYXRhTGlzdF8nICsgZGF0YSwge30pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNiKHJlc3BvbnNlKTsKICAgIH0pOwogIH0sCiAgLy/kuJrliqHmlbDmja7mqKHmnb/lr7zlh7oKICB0ZW1wbGF0ZUV4cG9ydDogZnVuY3Rpb24gdGVtcGxhdGVFeHBvcnQoZGF0YSwgY2IpIHsKICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2V4cG9ydD9mb3JtS2V5PScgKyBkYXRhLmJvQWxpYXMgKyAnJmdldFR5cGU9JyArIGRhdGEuZ2V0VHlwZSArICcmZmlsdGVyS2V5PScgKyBkYXRhLmZpbHRlcktleSArICcmZXhwRmllbGQ9JyArIGRhdGEuZXhwRmllbGQsIGRhdGEucXVlcnksICdhcnJheWJ1ZmZlcicpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNiKHJlc3BvbnNlLmRhdGEpOwogICAgfSk7CiAgfSwKICBnZXRTdWJEYXRhUGFnaW5hdGlvbjogZnVuY3Rpb24gZ2V0U3ViRGF0YVBhZ2luYXRpb24oZGF0YSwgY2IpIHsKICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2dldFN1YkRhdGFQYWdpbmF0aW9uP2FsaWFzPScgKyBkYXRhLm5hbWUgKyAnJnJlZklkPScgKyBkYXRhLnJlZklkLCBkYXRhLnBhZ2luYXRpb24pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNiKHJlc3BvbnNlKTsKICAgIH0pOwogIH0sCiAgLy/ojrflj5bkuJrliqHmlbDmja7liJfooagKICBiaXpHZXRCcG1UZW1wbGF0ZUJ5UGFnaW5hdGlvbjogZnVuY3Rpb24gYml6R2V0QnBtVGVtcGxhdGVCeVBhZ2luYXRpb24oZGF0YSwgY2IpIHsKICAgIHZhciBkYXRhVGVtcGxhdGVRdWVyeVZvID0gewogICAgICB0ZW1wbGF0ZUlkOiBkYXRhLnRlbXBsYXRlSWQsCiAgICAgIHF1ZXJ5RmlsdGVyOiBkYXRhLnBhZ2luYXRpb24KICAgIH07CiAgICBpZiAoZGF0YS5pc0pvaW5GbG93ICYmIGRhdGEudGFza1R5cGUgJiYgZGF0YS5kZWZLZXkpIHsKICAgICAgZGF0YVRlbXBsYXRlUXVlcnlWby5pc0pvaW5GbG93ID0gZGF0YS5pc0pvaW5GbG93OwogICAgICBkYXRhVGVtcGxhdGVRdWVyeVZvLnRhc2tUeXBlID0gZGF0YS50YXNrVHlwZTsKICAgICAgZGF0YVRlbXBsYXRlUXVlcnlWby5kZWZLZXkgPSBkYXRhLmRlZktleTsKICAgIH0KICAgIGlmIChkYXRhLnNlbGVjdEZpZWxkKSB7CiAgICAgIGRhdGFUZW1wbGF0ZVF1ZXJ5Vm8uc2VsZWN0RmllbGQgPSBkYXRhLnNlbGVjdEZpZWxkOwogICAgICBkYXRhVGVtcGxhdGVRdWVyeVZvLnNlbGVjdFZhbHVlID0gZGF0YS5zZWxlY3RWYWx1ZTsKICAgIH0KICAgIGlmIChkYXRhLnNlbGVjdExpc3QpIHsKICAgICAgZGF0YVRlbXBsYXRlUXVlcnlWby5zZWxlY3RMaXN0ID0gZGF0YS5zZWxlY3RMaXN0OwogICAgfQogICAgZGF0YVRlbXBsYXRlUXVlcnlWby5yZWZJZFZhbHVlID0gZGF0YS5yZWZJZFZhbHVlOwogICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9kYXRhVGVtcGxhdGUvdjEvbGlzdEpzb24nLCBkYXRhVGVtcGxhdGVRdWVyeVZvKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5Lia5Yqh5pWw5o2u5qih5p2/5L+h5oGvCiAgYm9TYXZlOiBmdW5jdGlvbiBib1NhdmUoZGF0YSwgY2IpIHsKICAgIGlmIChkYXRhLmZvcm1LZXkpIHsKICAgICAgZGF0YS5ib0RhdGEuZm9ybUtleSA9IGRhdGEuZm9ybUtleTsKICAgIH0KICAgIGlmIChkYXRhLnRlbXBsYXRlS2V5KSB7CiAgICAgIGRhdGEuYm9EYXRhLnRlbXBsYXRlS2V5ID0gZGF0YS50ZW1wbGF0ZUtleTsKICAgIH0KICAgIHJlcS5wb3N0KGZvcm0gKyAnL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2JvU2F2ZS8nICsgZGF0YS5ib0FsaWFzICsgIj9kZWxEcmFmdElkPSIuY29uY2F0KGRhdGEuZGVsRHJhZnRJZCB8fCAnJyksIGRhdGEuYm9EYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5Lia5Yqh5pWw5o2u5qih5p2/5L+h5oGvCiAgYmF0Y2hVcGRhdGVUZW1wbGF0ZURhdGE6IGZ1bmN0aW9uIGJhdGNoVXBkYXRlVGVtcGxhdGVEYXRhKGRhdGEsIGNiKSB7CiAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL2RhdGFUZW1wbGF0ZS92MS9ib0JhdGNoVXBkYXRlLycgKyBkYXRhLmJvQWxpYXMsIGRhdGEuYm9EYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZSk7CiAgICB9KTsKICB9LAogIC8v5Yig6Zmk5Lia5Yqh5pWw5o2u5qih5p2/Ym/mlbDmja4KICBkZWxldGVUZW1wbGF0ZURhdGFCeUlkOiBmdW5jdGlvbiBkZWxldGVUZW1wbGF0ZURhdGFCeUlkKGRhdGEsIGNiKSB7CiAgICByZXEucmVtb3ZlKGZvcm0gKyAnL2Zvcm0vZGF0YVRlbXBsYXRlL3YxL2JvRGVsLycgKyBkYXRhLmJvQWxpYXMgKyAnP2lkcz0nICsgZGF0YS5pZHMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNiKHJlc3BvbnNlKTsKICAgIH0pOwogIH0sCiAgZG93bmxvYWRNYWluVGVtcEZpbGU6IGZ1bmN0aW9uIGRvd25sb2FkTWFpblRlbXBGaWxlKGRhdGEsIGNiKSB7CiAgICByZXEucG9zdChmb3JtICsgJy9mb3JtL2RhdGFUZW1wbGF0ZS92MS9kb3dubG9hZE1haW5UZW1wRmlsZS8nICsgZGF0YSwgZGF0YSwgJ2FycmF5YnVmZmVyJykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY2IocmVzcG9uc2UuZGF0YSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5Lia5Yqh5pWw5o2u5qih5p2/6KGo5Y2V5pWw5o2uCiAgZ2V0VGVtcGxhdGVGb3JtOiBmdW5jdGlvbiBnZXRUZW1wbGF0ZUZvcm0oZGF0YSwgY2IpIHsKICAgIHJlcS5nZXQoZm9ybSArICcvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZ2V0Rm9ybS8nICsgZGF0YS5mb3JtS2V5ICsgJy8nICsgZGF0YS5ib0FsaWFzICsgJz9pZD0nICsgZGF0YS5pZCArICcmYWN0aW9uPScgKyBkYXRhLmFjdGlvbiArICcmcmVjb3JkSWQ9JyArIGRhdGEucmVjb3JkSWQgKyAnJmRhdGFLZXk9JyArIGRhdGEuZGF0YUtleSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY2IocmVzcG9uc2UpOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluS4muWKoeaVsOaNruaooeadv+ihqOWNleiNieeov+aVsOaNrgogIGdldFRlbXBEcmFmdERhdGE6IGZ1bmN0aW9uIGdldFRlbXBEcmFmdERhdGEoZGF0YSwgY2IpIHsKICAgIHJlcS5nZXQoZm9ybSArICcvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZ2V0VGVtcERyYWZ0RGF0YS8nICsgZGF0YSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY2IocmVzcG9uc2UpOwogICAgfSk7CiAgfSwKICAvL+S/neWtmOS4muWKoeaVsOaNruaooeadv+iNieeov+aVsOaNrgogIGJvU2F2ZURyYWZ0OiBmdW5jdGlvbiBib1NhdmVEcmFmdChkYXRhLCBjYikgewogICAgcmVxLnBvc3QoZm9ybSArICIvZm9ybS9kYXRhVGVtcGxhdGUvdjEvYm9TYXZlRHJhZnQiLCBkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZSk7CiAgICB9KTsKICB9LAogIC8v6I635Y+W5oiR55qE5oql6KGo6I2J56i/CiAgZ2V0TXlUZW1wbGF0ZURyYWZ0TGlzdDogZnVuY3Rpb24gZ2V0TXlUZW1wbGF0ZURyYWZ0TGlzdChwYXJhbSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnBvc3QoZm9ybSArICcvZm9ybS9kYXRhVGVtcGxhdGUvdjEvZ2V0TXlEcmFmdExpc3QnLCBwYXJhbSkudGhlbihmdW5jdGlvbiAocmVzcCkgewogICAgICAgIHJlc29sdmUocmVzcC5kYXRhKTsKICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIHJlbW92ZVRlbXBEcmFmdDogZnVuY3Rpb24gcmVtb3ZlVGVtcERyYWZ0KGlkcykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVxLnJlbW92ZShmb3JtICsgJy9mb3JtL2RhdGFUZW1wbGF0ZS92MS9yZW1vdmVUZW1wRHJhZnQ/aWRzPScgKyBpZHMpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICByZXNvbHZlKHJlc3AuZGF0YSk7CiAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICB0YXNrRGV0YWlsOiBmdW5jdGlvbiB0YXNrRGV0YWlsKGRhdGEsIGNiKSB7CiAgICBpZiAoZGF0YS50YXNrSWQpIHsKICAgICAgcmVxLmdldChicG1SdW10aW1lICsgIi9ydW50aW1lL3Rhc2svdjEvdGFza0RldGFpbEJvP3Rhc2tJZD0iICsgZGF0YS50YXNrSWQgKyAnJnJlcVBhcmFtcz0mbGVhZGVySWQ9JyArIGRhdGEubGVhZGVySWQpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgY2IocmVzcG9uc2UuZGF0YSk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgcmVxLmdldChicG1SdW10aW1lICsgIi9ydW50aW1lL3Rhc2svdjEvdGFza0RldGFpbEJvP3Rhc2tJZD0iICsgZGF0YSArICcmcmVxUGFyYW1zPScpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgY2IocmVzcG9uc2UuZGF0YSk7CiAgICAgIH0pOwogICAgfQogIH0sCiAgLy/moLnmja5pc250SWTmn6Xmib7ooajljZXmlbDmja5hbmRCbwogIGdldEluc3RGb3JtQW5kQk86IGZ1bmN0aW9uIGdldEluc3RGb3JtQW5kQk8oZGF0YSwgY2IpIHsKICAgIGlmIChkYXRhLmluc3RJZCkgewogICAgICByZXEuZ2V0KGJwbVJ1bXRpbWUgKyAiL3J1bnRpbWUvaW5zdGFuY2UvdjEvZ2V0SW5zdEZvcm1BbmRCTz9wcm9JbnN0SWQ9IiArIGRhdGEuaW5zdElkICsgJyZub2RlSWQ9JyArIChkYXRhLm5vZGVJZCB8fCAnJykgKyAnJmZvcm1JZD0nICsgKGRhdGEuZm9ybUlkIHx8ICcnKSArICcmaW5jbHVkRGF0YT0nICsgKGRhdGEuaW5jbHVkRGF0YSB8fCB0cnVlKSArICcmZ2V0U3RhcnRGb3JtPScgKyAoZGF0YS5nZXRTdGFydEZvcm0gfHwgZmFsc2UpKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGNiKHJlc3BvbnNlLmRhdGEpOwogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJlcS5nZXQoYnBtUnVtdGltZSArICIvcnVudGltZS9pbnN0YW5jZS92MS9nZXRJbnN0Rm9ybUFuZEJPP3Byb0luc3RJZD0iICsgZGF0YSArICcmbm9kZUlkPSZpbmNsdWREYXRhPXRydWUnKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGNiKHJlc3BvbnNlLmRhdGEpOwogICAgICB9KTsKICAgIH0KICB9LAogIC8v5rWB56iL5ZCv5Yqo5pe26I635Y+WYm/lkozooajljZUKICBnZXRGb3JtQW5kQk86IGZ1bmN0aW9uIGdldEZvcm1BbmRCTyhkYXRhLCBjYikgewogICAgcmVxLnBvc3QoYnBtUnVtdGltZSArICcvcnVudGltZS9pbnN0YW5jZS92MS9nZXRGb3JtQW5kQk8nLCBkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZS5kYXRhKTsKICAgIH0pOwogIH0sCiAgLy/lkI7lj7DnrqHnkIbpooTop4hWVUXooajljZUKICBwcmV2aWV3RGVzaWduVnVlOiBmdW5jdGlvbiBwcmV2aWV3RGVzaWduVnVlKGlkLCBjYikgewogICAgcmVxLmdldChmb3JtICsgJy9mb3JtL2Zvcm0vdjEvcHJldmlld0Rlc2lnblZ1ZT9mb3JtSWQ9JyArIGlkKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZS5kYXRhKTsKICAgIH0pOwogIH0sCiAgLy/ojrflj5booajljZXmmI7mmL4KICBwcmV2aWV3OiBmdW5jdGlvbiBwcmV2aWV3KGlkLCBjYikgewogICAgcmVxLmdldChmb3JtICsgJy9mb3JtL2Zvcm0vdjEvZ2V0Rm9ybUJ5SWQ/aWQ9JyArIGlkKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBjYihyZXNwb25zZS5kYXRhKTsKICAgIH0pOwogIH0KICAvKiBiaXogZW5kDQogICAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCn07"},null]}