(this["webpackJsonp"] = this["webpackJsonp"] || []).push([["app-service"],[ /* 0 */ /*!**********************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/main.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\n__webpack_require__(/*! uni-pages */ 6);\nvar _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 94));\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 93));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n_vue.default.config.productionTip = false;\n_App.default.mpType = 'app';\ntry {\n var isPromise = function isPromise(obj) {\n return !!obj && ((0, _typeof2.default)(obj) === \"object\" || typeof obj === \"function\") && typeof obj.then === \"function\";\n }; // 统一 vue2 API Promise 化返回格式与 vue3 保持一致\n uni.addInterceptor({\n returnValue: function returnValue(res) {\n if (!isPromise(res)) {\n return res;\n }\n return new Promise(function (resolve, reject) {\n res.then(function (res) {\n if (res[0]) {\n reject(res[0]);\n } else {\n resolve(res[1]);\n }\n });\n });\n }\n });\n} catch (error) {}\nvar app = new _vue.default(_objectSpread({}, _App.default));\napp.$mount();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyJdLCJuYW1lcyI6WyJWdWUiLCJjb25maWciLCJwcm9kdWN0aW9uVGlwIiwiQXBwIiwibXBUeXBlIiwiaXNQcm9taXNlIiwib2JqIiwidGhlbiIsInVuaSIsImFkZEludGVyY2VwdG9yIiwicmV0dXJuVmFsdWUiLCJyZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImVycm9yIiwiYXBwIiwiJG1vdW50Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQW1CO0FBR25CO0FBQXFCO0FBQUE7QUFDckJBLFlBQUcsQ0FBQ0MsTUFBTSxDQUFDQyxhQUFhLEdBQUcsS0FBSztBQUNoQ0MsWUFBRyxDQUFDQyxNQUFNLEdBQUcsS0FBSztBQUVsQixJQUFJO0VBQUEsSUFDT0MsU0FBUyxHQUFsQixTQUFTQSxTQUFTLENBQUNDLEdBQUcsRUFBRTtJQUN0QixPQUNFLENBQUMsQ0FBQ0EsR0FBRyxLQUNKLHNCQUFPQSxHQUFHLE1BQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxVQUFVLENBQUMsSUFDdEQsT0FBT0EsR0FBRyxDQUFDQyxJQUFJLEtBQUssVUFBVTtFQUVsQyxDQUFDLEVBRUQ7RUFDQUMsR0FBRyxDQUFDQyxjQUFjLENBQUM7SUFDakJDLFdBQVcsdUJBQUNDLEdBQUcsRUFBRTtNQUNmLElBQUksQ0FBQ04sU0FBUyxDQUFDTSxHQUFHLENBQUMsRUFBRTtRQUNuQixPQUFPQSxHQUFHO01BQ1o7TUFDQSxPQUFPLElBQUlDLE9BQU8sQ0FBQyxVQUFDQyxPQUFPLEVBQUVDLE1BQU0sRUFBSztRQUN0Q0gsR0FBRyxDQUFDSixJQUFJLENBQUMsVUFBQ0ksR0FBRyxFQUFLO1VBQ2hCLElBQUlBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNWRyxNQUFNLENBQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUNoQixDQUFDLE1BQU07WUFDTEUsT0FBTyxDQUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDakI7UUFDRixDQUFDLENBQUM7TUFDSixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxPQUFPSSxLQUFLLEVBQUUsQ0FBRTtBQUVsQixJQUFNQyxHQUFHLEdBQUcsSUFBSWhCLFlBQUcsbUJBQ2RHLFlBQUcsRUFDTjtBQUNGYSxHQUFHLENBQUNDLE1BQU0sRUFBRSIsImZpbGUiOiIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd1bmktcGFnZXMnO2ltcG9ydCBBcHAgZnJvbSAnLi9BcHAnXG5cblxuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZVxuQXBwLm1wVHlwZSA9ICdhcHAnXG5cbnRyeSB7XG4gIGZ1bmN0aW9uIGlzUHJvbWlzZShvYmopIHtcbiAgICByZXR1cm4gKFxuICAgICAgISFvYmogJiZcbiAgICAgICh0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIikgJiZcbiAgICAgIHR5cGVvZiBvYmoudGhlbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIOe7n+S4gCB2dWUyIEFQSSBQcm9taXNlIOWMlui/lOWbnuagvOW8j+S4jiB2dWUzIOS/neaMgeS4gOiHtFxuICB1bmkuYWRkSW50ZXJjZXB0b3Ioe1xuICAgIHJldHVyblZhbHVlKHJlcykge1xuICAgICAgaWYgKCFpc1Byb21pc2UocmVzKSkge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgcmVzLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXNbMF0pIHtcbiAgICAgICAgICAgIHJlamVjdChyZXNbMF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc1sxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgfVxuXG5jb25zdCBhcHAgPSBuZXcgVnVlKHtcbiAgLi4uQXBwXG59KVxuYXBwLiRtb3VudCgpXG5cblxuXG5cblxuXG5cblxuXG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n"); /***/ }), /* 1 */ /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 2 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3); function _defineProperty(obj, key, value) { key = toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 3 */ /*!**************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 5); function _toPropertyKey(arg) { var key = toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 4 */ /*!*******************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _typeof(obj) { "@babel/helpers - typeof"; return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 5 */ /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 6 */ /*!*************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages.json ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { if (typeof Promise !== 'undefined' && !Promise.prototype.finally) { Promise.prototype.finally = function (callback) { var promise = this.constructor; return this.then(function (value) { return promise.resolve(callback()).then(function () { return value; }); }, function (reason) { return promise.resolve(callback()).then(function () { throw reason; }); }); }; } if (typeof uni !== 'undefined' && uni && uni.requireGlobal) { var global = uni.requireGlobal(); ArrayBuffer = global.ArrayBuffer; Int8Array = global.Int8Array; Uint8Array = global.Uint8Array; Uint8ClampedArray = global.Uint8ClampedArray; Int16Array = global.Int16Array; Uint16Array = global.Uint16Array; Int32Array = global.Int32Array; Uint32Array = global.Uint32Array; Float32Array = global.Float32Array; Float64Array = global.Float64Array; BigInt64Array = global.BigInt64Array; BigUint64Array = global.BigUint64Array; } if (uni.restoreGlobal) { uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval); } __definePage('pages/home/home', function () { return Vue.extend(__webpack_require__(/*! pages/home/home.vue?mpType=page */ 7).default); }); __definePage('pages/index/index', function () { return Vue.extend(__webpack_require__(/*! pages/index/index.vue?mpType=page */ 19).default); }); /***/ }), /* 7 */ /*!**********************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home.vue?mpType=page ***! \**********************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./home.vue?vue&type=template&id=44021cb6&mpType=page */ 8);\n/* harmony import */ var _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./home.vue?vue&type=script&lang=js&mpType=page */ 10);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/home/home.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEg7QUFDNUg7QUFDbUU7QUFDTDs7O0FBRzlEO0FBQ21OO0FBQ25OLGdCQUFnQixpTkFBVTtBQUMxQixFQUFFLHFGQUFNO0FBQ1IsRUFBRSwwRkFBTTtBQUNSLEVBQUUsbUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsOEZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vaG9tZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDQwMjFjYjYmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2hvbWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2hvbWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaG9tZS9ob21lLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n"); /***/ }), /* 8 */ /*!****************************************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home.vue?vue&type=template&id=44021cb6&mpType=page ***! \****************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home.vue?vue&type=template&id=44021cb6&mpType=page */ 9); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 9 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home.vue?vue&type=template&id=44021cb6&mpType=page ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } }, [_c("homeNavigator", { attrs: { _i: 1 } })], 1 ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 10 */ /*!**********************************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***! \**********************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home.vue?vue&type=script&lang=js&mpType=page */ 11);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJ1QixDQUFnQixxdEJBQUcsRUFBQyIsImZpbGUiOiIxMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2hvbWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2hvbWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///10\n"); /***/ }), /* 11 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***! \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _homeNavigator = _interopRequireDefault(__webpack_require__(/*! ../../pages/home/home-navigator.vue */ 12));\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n return {};\n },\n methods: {},\n components: {\n homeNavigator: _homeNavigator.default\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwibWV0aG9kcyIsImNvbXBvbmVudHMiLCJob21lTmF2aWdhdG9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBT0E7QUFQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUdlO0VBQ2RBLElBQUksa0JBQUc7SUFDTixPQUFPLENBRVAsQ0FBQztFQUNGLENBQUM7RUFDREMsT0FBTyxFQUFFLENBRVQsQ0FBQztFQUNEQyxVQUFVLEVBQUU7SUFDWEMsYUFBYSxFQUFiQTtFQUNEO0FBQ0QsQ0FBQztBQUFBIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5pbXBvcnQgaG9tZU5hdmlnYXRvciBmcm9tICcuLi8uLi9wYWdlcy9ob21lL2hvbWUtbmF2aWdhdG9yLnZ1ZSdcbmV4cG9ydCBkZWZhdWx0IHtcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0XG5cdH0sXG5cdGNvbXBvbmVudHM6IHtcblx0XHRob21lTmF2aWdhdG9yXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n"); /***/ }), /* 12 */ /*!********************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home-navigator.vue ***! \********************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./home-navigator.vue?vue&type=template&id=d86f32a0& */ 13);\n/* harmony import */ var _home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./home-navigator.vue?vue&type=script&lang=js& */ 16);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/home/home-navigator.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkg7QUFDM0g7QUFDa0U7QUFDTDs7O0FBRzdEO0FBQ21OO0FBQ25OLGdCQUFnQixpTkFBVTtBQUMxQixFQUFFLG9GQUFNO0FBQ1IsRUFBRSx5RkFBTTtBQUNSLEVBQUUsa0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNkZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2hvbWUtbmF2aWdhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kODZmMzJhMCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2hvbWUtbmF2aWdhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vaG9tZS1uYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2hvbWUvaG9tZS1uYXZpZ2F0b3IudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n"); /***/ }), /* 13 */ /*!***************************************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home-navigator.vue?vue&type=template&id=d86f32a0& ***! \***************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home-navigator.vue?vue&type=template&id=d86f32a0& */ 14); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_template_id_d86f32a0___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 14 */ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home-navigator.vue?vue&type=template&id=d86f32a0& ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "robot"), attrs: { _i: 1 } }, [ _c("image", { attrs: { src: _vm._$s(2, "a-src", __webpack_require__(/*! ../../static/home/robot.png */ 15)), _i: 2, }, }), ]), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 15 */ /*!************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/static/home/robot.png ***! \************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/home/robot.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvaG9tZS9yb2JvdC5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///15\n"); /***/ }), /* 16 */ /*!*********************************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home-navigator.vue?vue&type=script&lang=js& ***! \*********************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home-navigator.vue?vue&type=script&lang=js& */ 17);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_navigator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTB1QixDQUFnQixvdEJBQUcsRUFBQyIsImZpbGUiOiIxNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2hvbWUtbmF2aWdhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaG9tZS1uYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///16\n"); /***/ }), /* 17 */ /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/home/home-navigator.vue?vue&type=script&lang=js& ***! \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLW5hdmlnYXRvci52dWUiXSwibmFtZXMiOlsiZGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7ZUFTQTtFQUNBQTtJQUNBLFFBRUE7RUFDQTtBQUNBO0FBQUEiLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XG5cdFx0PHZpZXcgY2xhc3M9XCJyb2JvdFwiPlxuXHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL3JvYm90LnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxuXHRcdDwvdmlldz5cblx0PC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cblx0ZXhwb3J0IGRlZmF1bHQge1xuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cblx0LmNvbnRhaW5lcntcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdHRvcDogMCU7XG5cdFx0bGVmdDogMDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMzMDMzNzMsICNDOUEzOTEpO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHQucm9ib3R7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHdpZHRoOiA0OHB4O1xuXHRcdFx0aGVpZ2h0OiA0OHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDE1cHg7XG5cdFx0XHRpbWFnZXtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///17\n"); /***/ }), /* 18 */ /*!**********************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***! \**********************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; }); /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file (except for modules). // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. function normalizeComponent ( scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, /* server only */ shadowMode, /* vue-cli only */ components, // fixed by xxxxxx auto components renderjs // fixed by xxxxxx renderjs ) { // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // fixed by xxxxxx auto components if (components) { if (!options.components) { options.components = {} } var hasOwn = Object.prototype.hasOwnProperty for (var name in components) { if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) { options.components[name] = components[name] } } } // fixed by xxxxxx renderjs if (renderjs) { if(typeof renderjs.beforeCreate === 'function'){ renderjs.beforeCreate = [renderjs.beforeCreate] } (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() { this[renderjs.__module] = this }); (options.mixins || (options.mixins = [])).push(renderjs) } // render functions if (render) { options.render = render options.staticRenderFns = staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 'data-v-' + scopeId } var hook if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call (this.$vnode && this.$vnode.ssrContext) || // stateful (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } // inject component styles if (injectStyles) { injectStyles.call(this, context) } // register component module identifier for async chunk inferrence if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier) } } // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook } else if (injectStyles) { hook = shadowMode ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) } : injectStyles } if (hook) { if (options.functional) { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functioal component in vue file var originalRender = options.render options.render = function renderWithStyleInjection (h, context) { hook.call(context) return originalRender(h, context) } } else { // inject component registration as beforeCreate hook var existing = options.beforeCreate options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } } return { exports: scriptExports, options: options } } /***/ }), /* 19 */ /*!************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/index/index.vue?mpType=page ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 20);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 24);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ21OO0FBQ25OLGdCQUFnQixpTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmU4NGEzYyZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2luZGV4L2luZGV4LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n"); /***/ }), /* 20 */ /*!******************************************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***! \******************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 21); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 21 */ /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "content"), attrs: { _i: 0 } }, [ _c( "scroll-view", { attrs: { "scroll-top": _vm._$s(1, "a-scroll-top", _vm.scroll_top), _i: 1, }, }, [ _c( "view", { staticClass: _vm._$s(2, "sc", "scroll-view-text"), attrs: { _i: 2 }, }, _vm._l( _vm._$s(3, "f", { forItems: _vm.recvMsgQueue }), function (msgIndex, index, $20, $30) { return _c( "view", { key: _vm._$s(3, "f", { forIndex: $20, key: 3 + "-" + $30 }), }, [ _vm._$s( "4-" + $30, "i", _vm.isAItell(_vm.recvMsgQueue[index].who_msg) ) ? _c("view", [ _c("image", { attrs: { src: _vm._$s( "5-" + $30, "a-src", _vm.make_avatar(_vm.recvMsgQueue[index].who_msg) ), _i: "5-" + $30, }, }), _c("view", [ _c("view", { ref: "htmlContent", refInFor: true, staticClass: _vm._$s( "7-" + $30, "sc", "htmlContent" ), attrs: { _i: "7-" + $30 }, domProps: { innerHTML: _vm._s( _vm._$s( "7-" + $30, "v-html", _vm.returnText( _vm.recvMsgQueue[index].msg_text ) ) ), }, on: { click: function ($event) { return _vm.handleClick() }, }, }), _vm._$s( "8-" + $30, "i", _vm.recvStatus && _vm.recvMsgQueue[index].isFinish == false ) ? _c( "view", { attrs: { _i: "8-" + $30 }, on: { click: function ($event) { return _vm.stopRecv() }, }, }, [ _c("image", { attrs: { src: _vm._$s( "9-" + $30, "a-src", __webpack_require__(/*! ../../static/closed.png */ 22) ), _i: "9-" + $30, }, }), ] ) : _vm._e(), ]), ]) : _vm._e(), _vm._$s( "10-" + $30, "i", !_vm.isAItell(_vm.recvMsgQueue[index].who_msg) ) ? _c("view", [ _c("view", [ _c("view", [ _c("view"), _c("text", [ _vm._v( _vm._$s( "14-" + $30, "t0-0", _vm._s(_vm.recvMsgQueue[index].msg_text) ) ), ]), ]), _c("view", [ _c("image", { attrs: { src: _vm._$s( "16-" + $30, "a-src", _vm.make_avatar( _vm.recvMsgQueue[index].who_msg ) ), _i: "16-" + $30, }, }), ]), ]), ]) : _vm._e(), ] ) } ), 0 ), ] ), _c("view", [ _c( "view", { staticClass: _vm._$s(18, "sc", "textarea-box"), attrs: { _i: 18 } }, [ _c("textarea", { directives: [ { name: "model", rawName: "v-model", value: _vm.inputValue, expression: "inputValue", }, ], staticClass: _vm._$s(19, "sc", "textarea"), attrs: { disabled: _vm._$s(19, "a-disabled", _vm.disabled), maxlength: _vm._$s(19, "a-maxlength", -1), _i: 19, }, domProps: { value: _vm._$s(19, "v-model", _vm.inputValue) }, on: { keyup: function ($event) { if (!$event.shiftKey) { return null } return _vm.onKeyup("shift") }, keydown: [ function ($event) { if (!$event.shiftKey) { return null } return _vm.onKeydown("shift") }, function ($event) { if ( !$event.type.indexOf("key") && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter") ) { return null } return _vm.onKeydown("enter") }, ], input: function ($event) { if ($event.target.composing) { return } _vm.inputValue = $event.target.value }, }, }), ] ), _c("view", [ _vm._$s(21, "i", _vm.recvStatus == false) ? _c("view", { attrs: { _i: 21 }, on: { click: _vm.sendMsg } }) : _vm._e(), _c( "view", { style: _vm._$s(22, "s", _vm.ani_style), attrs: { animation: _vm._$s(22, "a-animation", _vm.ani), _i: 22 }, }, [ _vm._$s(23, "i", _vm.recvStatus == true) ? _c("image", { attrs: { src: _vm._$s( 23, "a-src", __webpack_require__(/*! ../../static/apple.png */ 23) ), _i: 23, }, }) : _vm._e(), ] ), ]), ]), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 22 */ /*!********************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/static/closed.png ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/closed.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvY2xvc2VkLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///22\n"); /***/ }), /* 23 */ /*!*******************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/static/apple.png ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/apple.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvYXBwbGUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n"); /***/ }), /* 24 */ /*!************************************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***! \************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 25);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTR1QixDQUFnQixzdEJBQUcsRUFBQyIsImZpbGUiOiIyNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///24\n"); /***/ }), /* 25 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 27));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 29));\nvar _markedMin = _interopRequireDefault(__webpack_require__(/*! ../marked/marked.min.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config.js */ 31));\nvar _common = _interopRequireDefault(__webpack_require__(/*! ../highlight.js/lib/common.js */ 32));\n__webpack_require__(/*! highlight.js/styles/atom-one-dark.css */ 91);\n__webpack_require__(/*! ./v-copy.js */ 92);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// 键盘的shift键是否被按下\nvar shiftKeyPressed = false;\nvar _default = {\n components: {\n marked: _markedMin.default\n },\n mounted: function mounted() {\n _markedMin.default.setOptions({\n renderer: new _markedMin.default.Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight: function highlight(code) {\n return _common.default.highlightAuto(code).value;\n },\n langPrefix: \"hljs language-\"\n });\n },\n data: function data() {\n return {\n code: '',\n title: 'Hello',\n disabled: false,\n socketOpen: false,\n socketMsgQueue: [],\n recvMsgQueue: [],\n sendMsgQueue: [],\n inputValue: '',\n _socketTask: null,\n scroll_text_: \"\\n\",\n sendStatus: false,\n recvStatus: false,\n all_src_list: [],\n src_index: 0,\n scroll_top: 0,\n ani: '',\n ani_style: {\n width: \"100upx\",\n height: \"100upx\",\n rotate: 0,\n left: \"25%\",\n right: \"25%\",\n position: \"absolute\"\n },\n angle: 359\n };\n },\n onLoad: function onLoad() {\n this.initTcp();\n },\n methods: {\n setCopy: function setCopy(content) {\n // 使用#ifdef H5和#endif控制各端调用情况\n\n // 该方法不支持h5\n\n uni.setClipboardData({\n data: String(content),\n // 必须字符串\n success: function success() {\n __f__(\"log\", 'success', \" at pages/index/index.vue:157\");\n }\n });\n\n // h5端赋值方法,使用创建节点\n },\n updateSrcList: function updateSrcList() {\n var self = this;\n var list = this.getIndexList(self.scroll_text_);\n for (var i = 0; i < list.length; i += 2) {\n var start = list[i];\n var end = list[i + 1];\n self.all_src_list.push(self.scroll_text_.substring(start, end));\n }\n __f__(\"log\", \"updateSrcList\", self.all_src_list, self.scroll_text_, \" at pages/index/index.vue:191\");\n },\n stopRecv: function stopRecv() {\n var self = this;\n self._socketTask.close();\n self.initTcp(true);\n self.finish_recv();\n },\n handleClick: function handleClick(e) {\n e = e || window.event;\n var target = e.target || e.srcElement;\n var name = target.tagName.toLowerCase();\n var self = this;\n if (name.substring(0, 3) == \"abc\") {\n var name_list = name.split('_');\n if (name_list.length > 0) {\n var _index = parseInt(name_list[1]) - 1;\n __f__(\"log\", \"handleClick\", _index, self.all_src_list, \" at pages/index/index.vue:208\");\n self.setCopy(self.all_src_list[_index]);\n }\n __f__(\"log\", \"handleClick\", self.all_src_list[index], \" at pages/index/index.vue:211\");\n __f__(\"log\", target.tagName.toLowerCase(), \" at pages/index/index.vue:212\");\n }\n __f__(\"log\", name.substring(0, 3), \" at pages/index/index.vue:214\");\n },\n copyUpdates: function copyUpdates() {\n var self = this;\n var str = self.recvMsgQueue[self.recvMsgQueue.length - 1].msg_text;\n var key = \"\";\n var index = self.all_src_list.length;\n while (str.indexOf(key) != -1) {\n index++;\n var s_tag = \"Copy\";\n __f__(\"log\", \"s_tag\", s_tag, \" at pages/index/index.vue:224\");\n str = str.replace(\"\", s_tag);\n }\n // str=str.replaceAll(\"\", \"Copy\")\n self.recvMsgQueue[self.recvMsgQueue.length - 1].msg_text = str;\n // console.log(\"copyUpdates\",str)\n self.$forceUpdate();\n },\n getIndexList: function getIndexList(box_str) {\n var box = box_str;\n var boxarr = [];\n var pos = box.indexOf('```');\n while (pos > -1) {\n boxarr.push(pos);\n pos = box.indexOf('```', pos + 1);\n }\n return boxarr;\n },\n returnText: function returnText(text) {\n return \"\" + text;\n },\n // 滚动窗口以显示最新的一条消息\n showLastMsg: function showLastMsg() {\n var self = this;\n var container = uni.createSelectorQuery().in(this).select(\".scroll-view-text\");\n // 利用uniapp提供的接口获取可视区域的高度和滚动高度\n // let query=uni.createSelectorQuery()\n // let container=query.select('.box');\n container.fields({\n // rect:true, //是否返回节点布局位置信息{left,top,right,bottom}\n size: true,\n //是否返回节点尺寸信息{width,height}\n scrollOffset: true //是否返回节点滚动信息{scrollLeft,scrollTop}\n }, function (res) {\n self.scroll_top = res.height;\n // console.log(res)\n }).exec();\n },\n isAItell: function isAItell(type) {\n if (type === _config.default.type_ai) {\n return true;\n }\n return false;\n },\n make_avatar: function make_avatar(type) {\n if (type === _config.default.type_ai) {\n return \"../../static/PubImgs_avatar_avatar7.png\";\n }\n return \"../../static/PubImgs_avatar_avatar8.png\";\n },\n isShow: function isShow(text) {\n return text != \"\";\n },\n initAni: function initAni() {\n var self = this;\n var action = uni.createAnimation({\n duration: 10000,\n transformOrigin: \"50% 50% 0\",\n timingFunction: \"ease\",\n delay: 0\n });\n self.angle += 360;\n action.rotate(self.angle).step();\n self.ani = action.export();\n setTimeout(self.initAni, 10000);\n },\n tryReConnect: function tryReConnect() {\n var self = this;\n uni.showLoading({\n title: \"正在尝试重新连接\"\n });\n self.disabled = false;\n self.socketOpen = false;\n self.initTcp();\n },\n initTcp: function initTcp() {\n var isStopRecv = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var self = this;\n self._socketTask = new WebSocket(\"ws://47.88.86.123:8000/ws\");\n self._socketTask.onopen = function (res) {\n __f__(\"log\", 'WebSocket连接已打开!', \" at pages/index/index.vue:304\");\n if (!isStopRecv) {\n uni.showLoading({\n title: \"登录成功\"\n });\n }\n self.socketMsgQueue = [];\n uni.hideLoading();\n self.socketOpen = true;\n };\n self._socketTask.onclose = function (res) {\n // uni.showModal({\n // \tshowCancel:false,\n // \ttitle:\"WebSocket is onclose \"\n // })\n __f__(\"log\", \"WebSocket is onclose\", \" at pages/index/index.vue:320\");\n self._socketTask.close();\n self.tryReConnect();\n };\n self._socketTask.onerror = function (res) {\n // uni.showModal({\n // \tshowCancel:false,\n // \ttitle:\"WebSocket连接打开失败,请检查\"\n // })\n __f__(\"log\", 'WebSocket连接打开失败,请检查!', \" at pages/index/index.vue:329\");\n };\n self._socketTask.onmessage = function (res) {\n // console.log('收到服务器内容:' + res.data);\n var content = '';\n var data = JSON.parse(res.data);\n content = data.content + '';\n if (self.sendStatus) {\n self.sendStatus = false;\n // content = '▪ ';\n self.scroll_text_ = '';\n // let index = self.recvMsgQueue.length>0?self.recvMsgQueue.length:0\n self.recvMsgQueue.push({\n who_msg: _config.default.type_ai,\n msg_type: 0,\n msg_text: '',\n isFinish: false\n });\n self.startUpdateView();\n }\n // 在dom渲染完毕后 使聊天窗口滚动到最后一条消息\n self.$nextTick(function () {\n self.showLastMsg();\n });\n // console.log('收到服务器内容:' +content );\n var finish_reason = data.finish_reason + '';\n if (content != 'null') {\n self.scroll_text_ += content;\n // if(content=='.'||content=='。'){\n // self.scroll_text_+='\\n▪ ';\n // }\n }\n\n if (finish_reason != 'null') {\n self.finish_recv();\n // self.recvStatus = false;\n // self.disabled = false;\n // clearTimeout(self.initAni)\n // self.scroll_text_+=\"\\n\"\n // console.log(\"self.recvMsgQueue\",self.scroll_text_)\n // self.stopUpdateView();\n // self.copyUpdates();\n // self.updateSrcList();\n // self.recvMsgQueue[self.recvMsgQueue.length-1].isFinish = true;\n } else {\n self.recvMsgQueue[self.recvMsgQueue.length - 1].msg_text = _markedMin.default.parse(self.scroll_text_);\n }\n // console.log(\"self.recvMsgQueue.length\",self.recvMsgQueue.length)\n };\n },\n finish_recv: function finish_recv() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var self;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n self = _this;\n self.recvStatus = false;\n self.disabled = false;\n clearTimeout(self.initAni);\n self.scroll_text_ += \"\\n\";\n __f__(\"log\", \"self.recvMsgQueue\", self.scroll_text_, \" at pages/index/index.vue:381\");\n self.stopUpdateView();\n self.copyUpdates();\n self.updateSrcList();\n self.recvMsgQueue[self.recvMsgQueue.length - 1].isFinish = true;\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n sendMsg: function sendMsg() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (_this2.inputValue) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\", uni.showToast({\n // 提示内容\n title: '内容不能为空',\n // 不显示图标\n icon: 'none'\n }));\n case 2:\n _this2.sendSocketMessage(_this2.inputValue);\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n onKeyInput: function onKeyInput(event) {\n this.inputValue = event.target.value;\n },\n startUpdateView: function startUpdateView() {\n var self = this;\n self.$forceUpdate();\n setTimeout(self.startUpdateView, 500);\n },\n stopUpdateView: function stopUpdateView() {\n var self = this;\n clearTimeout(self.startUpdateView);\n },\n sendSocketMessage: function sendSocketMessage(msg) {\n var self = this;\n if (this.socketOpen) {\n // uni.showLoading({\n // title:\"正在发送\"\n // })\n self.sendStatus = true;\n self.disabled = true;\n self.ani_style.rotate = 0;\n self.inputValue = '';\n self.initAni();\n self.recvMsgQueue.push({\n who_msg: _config.default.type_self,\n msg_type: 0,\n msg_text: msg,\n isFinish: false\n });\n self.recvStatus = true;\n self._socketTask.send(msg);\n } else {\n this.socketMsgQueue.push(msg);\n }\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 26)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJtYXJrZWQiLCJtb3VudGVkIiwicmVuZGVyZXIiLCJnZm0iLCJ0YWJsZXMiLCJicmVha3MiLCJwZWRhbnRpYyIsInNhbml0aXplIiwic21hcnRMaXN0cyIsInNtYXJ0eXBhbnRzIiwiaGlnaGxpZ2h0IiwibGFuZ1ByZWZpeCIsImRhdGEiLCJjb2RlIiwidGl0bGUiLCJkaXNhYmxlZCIsInNvY2tldE9wZW4iLCJzb2NrZXRNc2dRdWV1ZSIsInJlY3ZNc2dRdWV1ZSIsInNlbmRNc2dRdWV1ZSIsImlucHV0VmFsdWUiLCJfc29ja2V0VGFzayIsInNjcm9sbF90ZXh0XyIsInNlbmRTdGF0dXMiLCJyZWN2U3RhdHVzIiwiYWxsX3NyY19saXN0Iiwic3JjX2luZGV4Iiwic2Nyb2xsX3RvcCIsImFuaSIsImFuaV9zdHlsZSIsIndpZHRoIiwiaGVpZ2h0Iiwicm90YXRlIiwibGVmdCIsInJpZ2h0IiwicG9zaXRpb24iLCJhbmdsZSIsIm9uTG9hZCIsIm1ldGhvZHMiLCJzZXRDb3B5IiwidW5pIiwic3VjY2VzcyIsInVwZGF0ZVNyY0xpc3QiLCJzZWxmIiwic3RvcFJlY3YiLCJoYW5kbGVDbGljayIsImUiLCJjb3B5VXBkYXRlcyIsImluZGV4Iiwic3RyIiwiZ2V0SW5kZXhMaXN0IiwiYm94YXJyIiwicG9zIiwicmV0dXJuVGV4dCIsInNob3dMYXN0TXNnIiwiY29udGFpbmVyIiwic2l6ZSIsInNjcm9sbE9mZnNldCIsImlzQUl0ZWxsIiwibWFrZV9hdmF0YXIiLCJpc1Nob3ciLCJpbml0QW5pIiwiZHVyYXRpb24iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ0aW1pbmdGdW5jdGlvbiIsImRlbGF5IiwiYWN0aW9uIiwic2V0VGltZW91dCIsInRyeVJlQ29ubmVjdCIsImluaXRUY3AiLCJjb250ZW50Iiwid2hvX21zZyIsIm1zZ190eXBlIiwibXNnX3RleHQiLCJpc0ZpbmlzaCIsImZpbmlzaF9yZWN2IiwiY2xlYXJUaW1lb3V0Iiwic2VuZE1zZyIsImljb24iLCJvbktleUlucHV0Iiwic3RhcnRVcGRhdGVWaWV3Iiwic3RvcFVwZGF0ZVZpZXciLCJzZW5kU29ja2V0TWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBb0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFBQSxlQUNBO0VBRUFBO0lBQ0FDO0VBQ0E7RUFFQUM7SUFDQUQ7TUFDQUU7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQTtNQUNBO01BQ0FDO0lBQ0E7RUFHQTtFQUNBQztJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0FDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO01BQ0E7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQXNCQUM7TUFDQTs7TUFFQTs7TUFFQUM7UUFDQTVCO1FBQUE7UUFDQTZCO1VBQ0E7UUFDQTtNQUNBOztNQUdBO0lBb0JBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0FEO01BQ0FBO01BQ0FBO0lBQ0E7SUFDQUU7TUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7VUFDQTtVQUNBO1VBQ0FIO1FBQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FJO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBQztRQUNBO1FBQ0E7UUFDQUM7TUFDQTtNQUNBO01BQ0FOO01BQ0E7TUFDQUE7SUFDQTtJQUVBTztNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQTtJQUVBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBQztRQUNBO1FBQ0FDO1FBQUE7UUFDQUM7TUFDQTtRQUNBZDtRQUNBO01BQ0E7SUFDQTtJQUNBZTtNQUNBO1FBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtNQUNBdEI7TUFDQXVCO01BQ0F2QjtNQUNBd0I7SUFDQTtJQUNBQztNQUNBO01BQ0E1QjtRQUNBMUI7TUFDQTtNQUNBNkI7TUFDQUE7TUFDQUE7SUFDQTtJQUNBMEI7TUFBQTtNQUNBO01BQ0ExQjtNQUNBQTtRQUNBO1FBQ0E7VUFDQUg7WUFDQTFCO1VBQ0E7UUFDQTtRQUNBNkI7UUFDQUg7UUFDQUc7TUFFQTtNQUNBQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQUE7UUFDQUE7TUFDQTtNQUNBQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUVBQTtRQUNBO1FBQ0E7UUFDQTtRQUNBMkI7UUFDQTtVQUNBM0I7VUFDQTtVQUNBQTtVQUNBO1VBQ0FBO1lBQUE0QjtZQUFBQztZQUFBQztZQUFBQztVQUFBO1VBQ0EvQjtRQUNBO1FBQ0E7UUFDQUE7VUFDQUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtVQUNBQTtVQUNBO1VBQ0E7VUFDQTtRQUNBOztRQUNBO1VBQ0FBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBRUE7VUFDQUE7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBZ0M7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFDQWhDO2dCQUNBQTtnQkFDQUE7Z0JBQ0FpQztnQkFDQWpDO2dCQUNBO2dCQUNBQTtnQkFDQUE7Z0JBQ0FBO2dCQUNBQTtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUNBO0lBQ0FrQztNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQSxJQUVBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUFBLGtDQUVBckM7a0JBQ0E7a0JBQ0ExQjtrQkFDQTtrQkFDQWdFO2dCQUNBO2NBQUE7Z0JBRUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBckM7TUFDQXdCO0lBQ0E7SUFDQWM7TUFDQTtNQUNBTDtJQUNBO0lBQ0FNO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBdkM7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7VUFBQTRCO1VBQUFDO1VBQUFDO1VBQUFDO1FBQUE7UUFDQS9CO1FBQ0FBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7RUFHQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxuXHRcdDwhLS0gPHZpZXcgY2xhc3M9XCJ2LWh0bWwtY2xpY2tcIiBAdGFwPVwiaGFuZGxlQ2xpY2soKVwiIHJlZj1cImh0bWxDb250ZW50XCIgdi1odG1sPVwiY29kZVwiPjwvdmlldz5cblx0XHQ8c3BhbiB2LWNvcHk9XCIxMjNcIj7lpI3liLY8L3NwYW4+IC0tPlxuXHRcdDxzY3JvbGwtdmlldyBzY3JvbGwteT1cInRydWVcIiA6c2Nyb2xsLXRvcD1cInNjcm9sbF90b3BcIiBzdHlsZT1cInRvcDogMCU7d2lkdGg6IDEwMHZ3O2hlaWdodDo5MHZoO1wiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJzY3JvbGwtdmlldy10ZXh0XCI+XG5cdFx0XHRcdDx2aWV3ICBzdHlsZT1cIiBtYXJnaW4tcmlnaHQ6IDUlOyBtYXJnaW4tbGVmdDogNSU7IG1hcmdpbi10b3A6IDMlOyBkaXNwbGF5OiBmbGV4O3VzZXItc2VsZWN0OiB0ZXh0O1wiIHYtZm9yPVwiKG1zZ0luZGV4LGluZGV4KSBpbiByZWN2TXNnUXVldWUgXCI+XG5cdFx0XHRcdFx0PCEtLSBhaSDnmoTmtojmga/nu5PmnoTkvZMgLS0+XG5cdFx0XHRcdFx0PHZpZXcgdi1pZj1cImlzQUl0ZWxsKHJlY3ZNc2dRdWV1ZVtpbmRleF0ud2hvX21zZylcIiAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyB3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luLWJvdHRvbTogMyU7XCI+XG5cdFx0XHRcdFx0XHQ8aW1hZ2UgIDpzcmM9XCJtYWtlX2F2YXRhcihyZWN2TXNnUXVldWVbaW5kZXhdLndob19tc2cpXCIgc3R5bGU9XCJ3aWR0aDogMTUwdXB4O2hlaWdodDogMTUwdXB4O21hcmdpbi1yaWdodDogMSU7XCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdDx2aWV3ICBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDMlOyBtYXJnaW4tdG9wOiAxJTttYXJnaW4tbGVmdDogMSU7cGFkZGluZzogMSU7IHdpZHRoOiA3MHZ3O2JhY2tncm91bmQ6ICNFRkVGRUY7Ym9yZGVyLXJhZGl1czogMTBycHggMTBycHggMTBycHggMTBycHg7XCI+XG5cdFx0XHRcdFx0XHRcdDwhLS0gPHRleHQgIHN0eWxlPVwid2lkdGg6IDEwMCU7YWxpZ24tc2VsZjogYXV0bztcIj5cblx0XHRcdFx0XHRcdFx0XHR7e3JlY3ZNc2dRdWV1ZVtpbmRleF0ubXNnX3RleHR9fVxuXHRcdFx0XHRcdFx0XHQ8L3RleHQ+IC0tPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBAdGFwPVwiaGFuZGxlQ2xpY2soKVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgY2xhc3M9XCJodG1sQ29udGVudFwiIHJlZj1cImh0bWxDb250ZW50XCIgdi1odG1sPVwicmV0dXJuVGV4dChyZWN2TXNnUXVldWVbaW5kZXhdLm1zZ190ZXh0KVwiPjwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgQGNsaWNrPVwic3RvcFJlY3YoKVwiIHYtaWY9XCJyZWN2U3RhdHVzJiZyZWN2TXNnUXVldWVbaW5kZXhdLmlzRmluaXNoPT1mYWxzZVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDt3aWR0aDogMTAwJTthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvY2xvc2VkLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDUwdXB4O2hlaWdodDogNTB1cHg7YWxpZ24tc2VsZjogY2VudGVyO1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcblx0XHRcdFx0XHQ8IS0tIOaIkeWPkemAgSDnmoTmtojmga/nu5PmnoTkvZMgLS0+XG5cdFx0XHRcdFx0PHZpZXcgdi1pZj1cIiFpc0FJdGVsbChyZWN2TXNnUXVldWVbaW5kZXhdLndob19tc2cpXCIgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO21hcmdpbi1ib3R0b206IDMlO1wiPlxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImp1c3RpZnktY29udGVudDogZW5kO2Rpc3BsYXk6IGZsZXg7IHdpZHRoOiAxMDAlO2hlaWdodDogMTAwJTsgXCI+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBkaXNwbGF5OiBmbGV4OzthbGlnbi1pdGVtczpjZW50ZXI7IHBhZGRpbmc6IDElO21hcmdpbi1yaWdodDogMiU7YmFja2dyb3VuZDpncmVlbjtib3JkZXItcmFkaXVzOiAxMHJweCAxMHJweCAxMHJweCAxMHJweDtcIj5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldz48L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PHRleHQgIHN0eWxlPVwiYWxpZ24tc2VsZjogYXV0bztjb2xvcjogYWxpY2VibHVlO1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0e3tyZWN2TXNnUXVldWVbaW5kZXhdLm1zZ190ZXh0fX1cblx0XHRcdFx0XHRcdFx0XHQ8L3RleHQ+IFxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDx2aWV3PlxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSAgOnNyYz1cIm1ha2VfYXZhdGFyKHJlY3ZNc2dRdWV1ZVtpbmRleF0ud2hvX21zZylcIiBzdHlsZT1cIndpZHRoOiAxNTB1cHg7aGVpZ2h0OiAxNTB1cHg7cmlnaHQ6IDAlO1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3Njcm9sbC12aWV3PlxuXHRcdFxuXHRcdDx2aWV3IHN0eWxlPVwiZGlzcGxheTogZmxleDt3aWR0aDogMTAwdnc7aGVpZ2h0OiAxMHZoO2JvdHRvbTogMCU7XCI+XG5cdDwhLS0gXHRcdDx2aWV3IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogZ2FpbnNib3JvO3dpZHRoOiA5MCU7XCI+XG5cdFx0XHRcdDxpbnB1dCA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiICBwbGFjZWhvbGRlci1zdHlsZT1cIm1hcmdpbi1sZWZ0OiA1JTtcIiBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTB2aDtcIiBAaW5wdXQ9XCJvbktleUlucHV0XCIgOnZhbHVlPVwiaW5wdXRWYWx1ZVwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5raI5oGv5YaF5a65KOS9v+eUqCBFbnRlciDlj5HpgIEpXCIvPlxuXHRcdFx0PC92aWV3PiAtLT5cblx0XHRcdDx2aWV3IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogZ2FpbnNib3JvO3dpZHRoOiA5MCU7XCIgY2xhc3M9XCJ0ZXh0YXJlYS1ib3hcIj5cblx0XHRcdFx0PHRleHRhcmVhICB2LW1vZGVsPVwiaW5wdXRWYWx1ZVwiIDpjdXJzb3Itc3BhY2luZz1cIjE1XCIgY2xhc3M9XCJ0ZXh0YXJlYVwiIGF1dG8taGVpZ2h0PVwidHJ1ZVwiXG5cdFx0XHRcdFx0QGtleXVwLnNoaWZ0PVwib25LZXl1cCgnc2hpZnQnKVwiIEBrZXlkb3duLnNoaWZ0PVwib25LZXlkb3duKCdzaGlmdCcpXCJcblx0XHRcdFx0XHRAa2V5ZG93bi5lbnRlcj1cIm9uS2V5ZG93bignZW50ZXInKVwiIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIuivt+i+k+WFpea2iOaBr+WGheWuuSjkvb/nlKggRW50ZXIg5Y+R6YCBKVwiIDptYXhsZW5ndGg9XCItMVwiIFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLWNsYXNzPVwiaW5wdXQtcGxhY2Vob2xkZXJcIj48L3RleHRhcmVhPlxuXHRcdFx0PC92aWV3PlxuXHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtcIj5cblx0XHRcdFx0PHZpZXcgdi1pZj1cInJlY3ZTdGF0dXM9PWZhbHNlXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyAgYmFja2dyb3VuZC1jb2xvcjpzbGF0ZWdyYXk7Y29sb3I6IGFsaWNlYmx1ZTthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyXCIgQGNsaWNrPVwic2VuZE1zZ1wiPlxuXHRcdFx0XHRcdOWPkemAgVxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IDphbmltYXRpb249XCJhbmlcIiA6c3R5bGU9XCJhbmlfc3R5bGVcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cInJlY3ZTdGF0dXM9PXRydWVcIiAgc3JjPVwiLi4vLi4vc3RhdGljL2FwcGxlLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1wiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3ZpZXc+XG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XG5cdGltcG9ydCBtYXJrZWQgZnJvbSAnLi4vbWFya2VkL21hcmtlZC5taW4uanMnO1xuXHRpbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnLmpzJztcblx0aW1wb3J0IGhsanMgZnJvbSBcIi4uL2hpZ2hsaWdodC5qcy9saWIvY29tbW9uLmpzXCI7XG5cdGltcG9ydCBcImhpZ2hsaWdodC5qcy9zdHlsZXMvYXRvbS1vbmUtZGFyay5jc3NcIjtcblx0aW1wb3J0ICAnLi92LWNvcHkuanMnO1xuXHQvLyDplK7nm5jnmoRzaGlmdOmUruaYr+WQpuiiq+aMieS4i1xuXHRsZXQgc2hpZnRLZXlQcmVzc2VkID0gZmFsc2VcclxuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0XG5cdFx0Y29tcG9uZW50czp7XG5cdFx0XHRtYXJrZWRcblx0XHR9LFxuXHRcdFxuXHRcdG1vdW50ZWQoKXtcdFx0XHRcblx0XHRcdFx0bWFya2VkLnNldE9wdGlvbnMoe1xuXHRcdFx0XHQgICAgICAgICAgcmVuZGVyZXI6IG5ldyBtYXJrZWQuUmVuZGVyZXIoKSxcblx0XHRcdFx0ICAgICAgICAgIGdmbTogdHJ1ZSxcblx0XHRcdFx0ICAgICAgICAgIHRhYmxlczogdHJ1ZSxcblx0XHRcdFx0ICAgICAgICAgIGJyZWFrczogZmFsc2UsXG5cdFx0XHRcdCAgICAgICAgICBwZWRhbnRpYzogZmFsc2UsXG5cdFx0XHRcdCAgICAgICAgICBzYW5pdGl6ZTogZmFsc2UsXG5cdFx0XHRcdCAgICAgICAgICBzbWFydExpc3RzOiB0cnVlLFxuXHRcdFx0XHQgICAgICAgICAgc21hcnR5cGFudHM6IGZhbHNlLFxuXHRcdFx0XHRcdFx0ICBoaWdobGlnaHQ6IGZ1bmN0aW9uIChjb2RlKSB7XG5cdFx0XHRcdFx0XHQgIFx0XHRcdFx0XHRyZXR1cm4gaGxqcy5oaWdobGlnaHRBdXRvKGNvZGUpLnZhbHVlO1xuXHRcdFx0XHRcdFx0IH0sXG5cdFx0XHRcdFx0XHQgbGFuZ1ByZWZpeDpcImhsanMgbGFuZ3VhZ2UtXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdFxuXHRcdFx0XG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvZGU6JycsXHJcblx0XHRcdFx0dGl0bGU6ICdIZWxsbycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0c29ja2V0T3BlbjpmYWxzZSxcblx0XHRcdFx0c29ja2V0TXNnUXVldWU6W10sXG5cdFx0XHRcdHJlY3ZNc2dRdWV1ZTpbXSxcblx0XHRcdFx0c2VuZE1zZ1F1ZXVlOltdLFxuXHRcdFx0XHRpbnB1dFZhbHVlOiAnJyxcblx0XHRcdFx0X3NvY2tldFRhc2s6bnVsbCxcblx0XHRcdFx0c2Nyb2xsX3RleHRfOlwiXFxuXCIsXG5cdFx0XHRcdHNlbmRTdGF0dXM6ZmFsc2UsXG5cdFx0XHRcdHJlY3ZTdGF0dXM6ZmFsc2UsXG5cdFx0XHRcdGFsbF9zcmNfbGlzdDpbXSxcblx0XHRcdFx0c3JjX2luZGV4OjAsXG5cdFx0XHRcdHNjcm9sbF90b3A6MCxcblx0XHRcdFx0YW5pOicnLFxuXHRcdFx0XHRhbmlfc3R5bGU6e1xuXHRcdFx0XHRcdHdpZHRoOiBcIjEwMHVweFwiLGhlaWdodDogXCIxMDB1cHhcIixyb3RhdGU6IDAsbGVmdDpcIjI1JVwiLHJpZ2h0OlwiMjUlXCIscG9zaXRpb246XCJhYnNvbHV0ZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFuZ2xlOjM1OSxcclxuXHRcdFx0fVx0XHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKCkge1xyXG5cdFx0XHR0aGlzLmluaXRUY3AoKTtcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XG5cdFx0XHQvLyAjaWZkZWYgSDUgJiYgVlVFMlxuXHRcdFx0b25LZXlkb3duKGtleW5hbWUpIHtcblx0XHRcdFx0aWYgKGtleW5hbWUgPT0gJ3NoaWZ0Jykge1xuXHRcdFx0XHRcdC8v5oyJ5LiL5LqGc2hpZnTplK5cblx0XHRcdFx0XHRzaGlmdEtleVByZXNzZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdFx0Ly8g5oyJ5LiL5LqG5Zue6L2mIOS4lCDkuYvliY3msqHmjInkuIsgc2hpZnRcblx0XHRcdFx0aWYgKGtleW5hbWUgPT0gJ2VudGVyJyAmJiAhc2hpZnRLZXlQcmVzc2VkKSB7XG5cdFx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gc2VsZi5zZW5kTXNnKCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uS2V5dXAoa2V5bmFtZSkge1xuXHRcdFx0XHRpZiAoa2V5bmFtZSA9PSAnc2hpZnQnKSB7XG5cdFx0XHRcdFx0Ly/mjInkuIvkuoZzaGlmdOmUrlxuXHRcdFx0XHRcdHNoaWZ0S2V5UHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly8gI2VuZGlmXG5cdFx0XHRzZXRDb3B5KGNvbnRlbnQpe1xuXHRcdFx0ICAgIC8vIOS9v+eUqCNpZmRlZiBINeWSjCNlbmRpZuaOp+WItuWQhOerr+iwg+eUqOaDheWGtVxuXHRcdFx0XG5cdFx0XHQgICAgLy8g6K+l5pa55rOV5LiN5pSv5oyBaDVcblx0XHRcdCAgICAvLyNpZm5kZWYgSDVcblx0XHRcdCAgICB1bmkuc2V0Q2xpcGJvYXJkRGF0YSh7XG5cdFx0XHQgICAgICAgIGRhdGE6IFN0cmluZyhjb250ZW50KSwgLy8g5b+F6aG75a2X56ym5LiyXG5cdFx0XHQgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uICgpIHtcblx0XHRcdCAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzdWNjZXNzJyk7XG5cdFx0XHQgICAgICAgIH1cblx0XHRcdCAgICB9KTtcblx0XHRcdCAgICAvLyNlbmRpZlxuXHRcdFx0XG5cdFx0XHQgICAgLy8gaDXnq6/otYvlgLzmlrnms5XvvIzkvb/nlKjliJvlu7roioLngrlcblx0XHRcdCAgICAvLyAjaWZkZWYgSDVcblx0XHRcdCAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgnY29weScpKSB7IC8vIOWFvOWuueafkOS6m+a1j+iniOWZqOeahOWIpOaWrVxuXHRcdFx0ICAgICAgICBjb25zb2xlLmxvZygn6K+l5rWP6KeI5Zmo5LiN5pSv5oyBJylcblx0XHRcdCAgICB9XG5cdFx0XHQgICAgbGV0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpXG5cdFx0XHQgICAgdGV4dGFyZWEudmFsdWUgPSBjb250ZW50XG5cdFx0XHQgICAgdGV4dGFyZWEucmVhZE9ubHkgPSBcInJlYWRPbmx5XCJcblx0XHRcdCAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKVxuXHRcdFx0ICAgIHRleHRhcmVhLnNlbGVjdCgpIC8vIOmAieaLqeWvueixoVxuXHRcdFx0ICAgIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKDAsIGNvbnRlbnQubGVuZ3RoKSAvLyDmoLjlv4Ncblx0XHRcdCAgICBsZXQgcmVzdWx0ID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpIC8vIOaJp+ihjOa1j+iniOWZqOWkjeWItuWRveS7pFxuXHRcdFx0ICAgIGlmIChyZXN1bHQpIHtcblx0XHRcdCAgICAgICAgdW5pLnNob3dUb2FzdCh7XG5cdFx0XHQgICAgICAgICAgICB0aXRsZTogJ+WkjeWItuaIkOWKnycsXG5cdFx0XHQgICAgICAgICAgICBkdXJhdGlvbjogMjAwMFxuXHRcdFx0ICAgICAgICB9KTtcblx0XHRcdCAgICB9XG5cdFx0XHQgICAgdGV4dGFyZWEucmVtb3ZlKClcblx0XHRcdCAgICAvLyAjZW5kaWZcblx0XHRcdH0sXG5cdFx0XHR1cGRhdGVTcmNMaXN0KCl7XG5cdFx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdFx0bGV0IGxpc3QgPSB0aGlzLmdldEluZGV4TGlzdChzZWxmLnNjcm9sbF90ZXh0Xyk7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrPTIpIHtcblx0XHRcdFx0XHRsZXQgc3RhcnQgPSBsaXN0W2ldO1xuXHRcdFx0XHRcdGxldCBlbmQgPSBsaXN0W2krMV07XG5cdFx0XHRcdFx0c2VsZi5hbGxfc3JjX2xpc3QucHVzaChzZWxmLnNjcm9sbF90ZXh0Xy5zdWJzdHJpbmcoc3RhcnQsZW5kKSlcblx0XHRcdFx0fVx0XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwidXBkYXRlU3JjTGlzdFwiLHNlbGYuYWxsX3NyY19saXN0LHNlbGYuc2Nyb2xsX3RleHRfKVxuXHRcdFx0fSxcblx0XHRcdHN0b3BSZWN2KCl7XG5cdFx0XHRcdGxldCBzZWxmID10aGlzO1xuXHRcdFx0XHRzZWxmLl9zb2NrZXRUYXNrLmNsb3NlKClcblx0XHRcdFx0c2VsZi5pbml0VGNwKHRydWUpO1xuXHRcdFx0XHRzZWxmLmZpbmlzaF9yZWN2KCk7XG5cdFx0XHR9LFxuXHRcdFx0IGhhbmRsZUNsaWNrKGUpIHtcblx0XHRcdFx0ZSA9IGUgfHwgd2luZG93LmV2ZW50O1xuXHRcdFx0XHRsZXQgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xuXHRcdFx0XHRsZXQgbmFtZSA9IHRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdGxldCBzZWxmID10aGlzO1xuXHRcdFx0XHRpZihuYW1lLnN1YnN0cmluZygwLDMpPT1cImFiY1wiKXtcblx0XHRcdFx0XHRsZXQgbmFtZV9saXN0ID0gbmFtZS5zcGxpdCgnXycpO1xuXHRcdFx0XHRcdGlmKG5hbWVfbGlzdC5sZW5ndGg+MCl7XG5cdFx0XHRcdFx0XHRsZXQgaW5kZXggPSBwYXJzZUludChuYW1lX2xpc3RbMV0pLTE7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImhhbmRsZUNsaWNrXCIsaW5kZXgsc2VsZi5hbGxfc3JjX2xpc3QpXG5cdFx0XHRcdFx0XHRzZWxmLnNldENvcHkoc2VsZi5hbGxfc3JjX2xpc3RbaW5kZXhdKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImhhbmRsZUNsaWNrXCIsc2VsZi5hbGxfc3JjX2xpc3RbaW5kZXhdKVxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2cobmFtZS5zdWJzdHJpbmcoMCwzKSlcblx0XHRcdCAgfSxcblx0XHRcdGNvcHlVcGRhdGVzKCl7XG5cdFx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdFx0bGV0IHN0ciA9IHNlbGYucmVjdk1zZ1F1ZXVlW3NlbGYucmVjdk1zZ1F1ZXVlLmxlbmd0aC0xXS5tc2dfdGV4dFxuXHRcdFx0XHRsZXQga2V5ID0gXCI8L2NvZGU+PC9wcmU+XCI7XG5cdFx0XHRcdGxldCBpbmRleCA9IHNlbGYuYWxsX3NyY19saXN0Lmxlbmd0aDtcblx0XHRcdFx0d2hpbGUoc3RyLmluZGV4T2Yoa2V5KSAhPSAtMSl7XG5cdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHRsZXQgc190YWcgPSAgIFwiPC9jb2RlPjxhYmNfXCIraW5kZXgrXCIgY2xhc3M9XFxcImNvcHktYnV0dG9uXFxcIj5Db3B5PC9hYmNfXCIraW5kZXgrXCI+PC9wcmU+XCJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcInNfdGFnXCIsc190YWcpXG5cdFx0XHRcdFx0c3RyPXN0ci5yZXBsYWNlKFwiPC9jb2RlPjwvcHJlPlwiLCBzX3RhZylcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBzdHI9c3RyLnJlcGxhY2VBbGwoXCI8L2NvZGU+PC9wcmU+XCIsIFwiPC9jb2RlPjxhYmMgY2xhc3M9XFxcImNvcHktYnV0dG9uXFxcIj5Db3B5PC9hYmM+PC9wcmU+XCIpXG5cdFx0XHRcdHNlbGYucmVjdk1zZ1F1ZXVlW3NlbGYucmVjdk1zZ1F1ZXVlLmxlbmd0aC0xXS5tc2dfdGV4dCA9IHN0clxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNvcHlVcGRhdGVzXCIsc3RyKVxuXHRcdFx0XHRzZWxmLiRmb3JjZVVwZGF0ZSgpO1xuXHRcdFx0fSxcdFxuXHRcdFx0XG5cdFx0XHRnZXRJbmRleExpc3QoYm94X3N0cil7XG5cdFx0XHRcdGxldCBib3ggPSBib3hfc3RyO1xuXHRcdFx0XHRsZXQgYm94YXJyPVtdO1xuXHRcdFx0XHRsZXQgcG9zID0gYm94LmluZGV4T2YoJ2BgYCcpO1xuXHRcdFx0XHR3aGlsZShwb3M+LTEpe1xuXHRcdFx0XHRcdGJveGFyci5wdXNoKHBvcyk7XG5cdFx0XHRcdFx0cG9zPSBib3guaW5kZXhPZignYGBgJyxwb3MrMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGJveGFyclxuXG5cdFx0XHR9LFxuXHRcdFx0cmV0dXJuVGV4dCh0ZXh0KXtcblx0XHRcdFx0cmV0dXJuIFwiPHN0eWxlPiBwcmUge3Bvc2l0aW9uOiByZWxhdGl2ZTt9LmNvcHktYnV0dG9uIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7cmlnaHQ6IDA7cGFkZGluZzogNHB4IDhweDtiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO2NvbG9yOiAjZmZmO2N1cnNvcjogcG9pbnRlcjt1c2VyLXNlbGVjdDogbm9uZTt9IHAge2xpbmUtaGVpZ2h0OiAyO30gbGl7bGluZS1oZWlnaHQ6IDEuNTt9IHRhYmxlIHtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO3dpZHRoOiAxMDAlO2ZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtmb250LXNpemU6IDE0cHg7fXRhYmxlIHRoLHRhYmxlIHRkIHtib3JkZXI6IDFweCBzb2xpZCAjZGRkO3BhZGRpbmc6IDhweDt0ZXh0LWFsaWduOiBsZWZ0O308L3N0eWxlPlwiK3RleHRcblx0XHRcdH0sXG5cdFx0XHQvLyDmu5rliqjnqpflj6Pku6XmmL7npLrmnIDmlrDnmoTkuIDmnaHmtojmga9cblx0XHRcdHNob3dMYXN0TXNnKCkge1xuXHRcdFx0XHRsZXQgc2VsZiA9IHRoaXM7XG5cdFx0XHRcdGxldCBjb250YWluZXIgPSB1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLmluKHRoaXMpLnNlbGVjdChcIi5zY3JvbGwtdmlldy10ZXh0XCIpO1xuXHRcdFx0XHQvLyDliKnnlKh1bmlhcHDmj5DkvpvnmoTmjqXlj6Pojrflj5blj6/op4bljLrln5/nmoTpq5jluqblkozmu5rliqjpq5jluqZcblx0XHRcdFx0XHQvLyBsZXQgcXVlcnk9dW5pLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxuXHRcdFx0XHRcdC8vIGxldCBjb250YWluZXI9cXVlcnkuc2VsZWN0KCcuYm94Jyk7XG5cdFx0XHRcdFx0Y29udGFpbmVyLmZpZWxkcyh7XG5cdFx0XHRcdFx0XHQvLyByZWN0OnRydWUsICAgLy/mmK/lkKbov5Tlm57oioLngrnluIPlsYDkvY3nva7kv6Hmga97bGVmdCx0b3AscmlnaHQsYm90dG9tfVxuXHRcdFx0XHRcdFx0c2l6ZTp0cnVlLCAgLy/mmK/lkKbov5Tlm57oioLngrnlsLrlr7jkv6Hmga97d2lkdGjvvIxoZWlnaHR9XG5cdFx0XHRcdFx0XHRzY3JvbGxPZmZzZXQ6dHJ1ZSAvL+aYr+WQpui/lOWbnuiKgueCuea7muWKqOS/oeaBr3tzY3JvbGxMZWZ0LHNjcm9sbFRvcH1cblx0XHRcdFx0XHR9LChyZXMpPT57XG5cdFx0XHRcdFx0XHRzZWxmLnNjcm9sbF90b3AgPSByZXMuaGVpZ2h0O1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKVxuXHRcdFx0XHR9KS5leGVjKClcblx0XHRcdH0sXG5cdFx0XHRpc0FJdGVsbCh0eXBlKXtcblx0XHRcdFx0aWYodHlwZT09PWNvbmZpZy50eXBlX2FpKXtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0bWFrZV9hdmF0YXIodHlwZSl7XG5cdFx0XHRcdGlmKHR5cGU9PT1jb25maWcudHlwZV9haSl7XG5cdFx0XHRcdFx0cmV0dXJuIFwiLi4vLi4vc3RhdGljL1B1YkltZ3NfYXZhdGFyX2F2YXRhcjcucG5nXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFwiLi4vLi4vc3RhdGljL1B1YkltZ3NfYXZhdGFyX2F2YXRhcjgucG5nXCI7XG5cdFx0XHR9LFxuXHRcdFx0aXNTaG93KHRleHQpe1xuXHRcdFx0XHRyZXR1cm4gdGV4dCE9XCJcIjtcblx0XHRcdH0sXG5cdFx0XHRpbml0QW5pKCl7XG5cdFx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdFx0bGV0IGFjdGlvbiA9IHVuaS5jcmVhdGVBbmltYXRpb24oe1xuXHRcdFx0XHRcdFx0ICBkdXJhdGlvbjogMTAwMDAsXG5cdFx0XHRcdFx0XHQgIHRyYW5zZm9ybU9yaWdpbjpcIjUwJSA1MCUgMFwiLFxuXHRcdFx0XHRcdFx0ICB0aW1pbmdGdW5jdGlvbjogXCJlYXNlXCIsXG5cdFx0XHRcdFx0XHQgIGRlbGF5OiAwXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRzZWxmLmFuZ2xlKz0zNjA7XG5cdFx0XHRcdGFjdGlvbi5yb3RhdGUoc2VsZi5hbmdsZSkuc3RlcCgpXG5cdFx0XHRcdHNlbGYuYW5pID0gIGFjdGlvbi5leHBvcnQoKVxuXHRcdFx0XHRzZXRUaW1lb3V0KHNlbGYuaW5pdEFuaSwxMDAwMClcblx0XHRcdH0sXG5cdFx0XHR0cnlSZUNvbm5lY3QoKXtcblx0XHRcdFx0bGV0IHNlbGYgPSB0aGlzO1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOlwi5q2j5Zyo5bCd6K+V6YeN5paw6L+e5o6lXCJcblx0XHRcdFx0fSlcdFxuXHRcdFx0XHRzZWxmLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHRcdHNlbGYuc29ja2V0T3BlbiA9IGZhbHNlO1xuXHRcdFx0XHRzZWxmLmluaXRUY3AoKVxuXHRcdFx0fSxcclxuXHRcdFx0aW5pdFRjcChpc1N0b3BSZWN2PWZhbHNlKXtcblx0XHRcdFx0bGV0IHNlbGYgPSB0aGlzO1x0XHRcblx0XHRcdFx0c2VsZi5fc29ja2V0VGFzayA9IG5ldyBXZWJTb2NrZXQoXCJ3czovLzQ3Ljg4Ljg2LjEyMzo4MDAwL3dzXCIpIDtcblx0XHRcdFx0c2VsZi5fc29ja2V0VGFzay5vbm9wZW4gPSBmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRcdCAgY29uc29sZS5sb2coJ1dlYlNvY2tldOi/nuaOpeW3suaJk+W8gO+8gScpO1xuXHRcdFx0XHQgIGlmKCFpc1N0b3BSZWN2KXtcblx0XHRcdFx0XHQgIHVuaS5zaG93TG9hZGluZyh7XG5cdFx0XHRcdFx0ICBcdFx0XHRcdFx0XHR0aXRsZTpcIueZu+W9leaIkOWKn1wiXG5cdFx0XHRcdFx0ICB9KVxuXHRcdFx0XHQgIH1cblx0XHRcdFx0ICBzZWxmLnNvY2tldE1zZ1F1ZXVlID0gW107XG5cdFx0XHRcdCAgdW5pLmhpZGVMb2FkaW5nKClcblx0XHRcdFx0ICBzZWxmLnNvY2tldE9wZW4gPSB0cnVlO1xuXHRcdFx0XHRcdCAgXG5cdFx0XHRcdH07XG5cdFx0XHRcdHNlbGYuX3NvY2tldFRhc2sub25jbG9zZSA9IChyZXMpPT57XG5cdFx0XHRcdFx0Ly8gdW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0Ly8gXHRzaG93Q2FuY2VsOmZhbHNlLFxuXHRcdFx0XHRcdC8vIFx0dGl0bGU6XCJXZWJTb2NrZXQgaXMgb25jbG9zZSBcIlxuXHRcdFx0XHRcdC8vIH0pXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXCJXZWJTb2NrZXQgaXMgb25jbG9zZVwiKVxuXHRcdFx0XHRcdHNlbGYuX3NvY2tldFRhc2suY2xvc2UoKVxuXHRcdFx0XHRcdHNlbGYudHJ5UmVDb25uZWN0KClcblx0XHRcdFx0fTtcblx0XHRcdFx0c2VsZi5fc29ja2V0VGFzay5vbmVycm9yPSBmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRcdFx0Ly8gdW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0Ly8gXHRzaG93Q2FuY2VsOmZhbHNlLFxuXHRcdFx0XHRcdC8vIFx0dGl0bGU6XCJXZWJTb2NrZXTov57mjqXmiZPlvIDlpLHotKXvvIzor7fmo4Dmn6VcIlxuXHRcdFx0XHRcdC8vIH0pXG5cdFx0XHRcdCAgY29uc29sZS5sb2coJ1dlYlNvY2tldOi/nuaOpeaJk+W8gOWksei0pe+8jOivt+ajgOafpe+8gScpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRcblx0XHRcdFx0c2VsZi5fc29ja2V0VGFzay5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRcdCAgLy8gY29uc29sZS5sb2coJ+aUtuWIsOacjeWKoeWZqOWGheWuue+8micgKyByZXMuZGF0YSk7XG5cdFx0XHRcdCAgbGV0IGNvbnRlbnQgPSAnJ1xuXHRcdFx0XHQgIGxldCBkYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG5cdFx0XHRcdCAgY29udGVudCA9IGRhdGEuY29udGVudCsnJ1xuXHRcdFx0XHQgIGlmKHNlbGYuc2VuZFN0YXR1cyl7XG5cdFx0XHRcdFx0ICBzZWxmLnNlbmRTdGF0dXMgPSBmYWxzZTtcblx0XHRcdFx0XHQgIC8vIGNvbnRlbnQgPSAn4paqICc7XG5cdFx0XHRcdFx0ICBzZWxmLnNjcm9sbF90ZXh0XyA9ICcnO1xuXHRcdFx0XHRcdCAgLy8gbGV0IGluZGV4ID0gc2VsZi5yZWN2TXNnUXVldWUubGVuZ3RoPjA/c2VsZi5yZWN2TXNnUXVldWUubGVuZ3RoOjBcblx0XHRcdFx0XHQgIHNlbGYucmVjdk1zZ1F1ZXVlLnB1c2goe3dob19tc2c6Y29uZmlnLnR5cGVfYWksbXNnX3R5cGU6MCxtc2dfdGV4dDonJyxpc0ZpbmlzaDpmYWxzZX0pXG5cdFx0XHRcdFx0ICBzZWxmLnN0YXJ0VXBkYXRlVmlldygpXG5cdFx0XHRcdCAgfVxuXHRcdFx0XHRcdC8vIOWcqGRvbea4suafk+WujOavleWQjiDkvb/ogYrlpKnnqpflj6Pmu5rliqjliLDmnIDlkI7kuIDmnaHmtojmga9cblx0XHRcdFx0XHRzZWxmLiRuZXh0VGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRzZWxmLnNob3dMYXN0TXNnKClcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHQgIC8vIGNvbnNvbGUubG9nKCfmlLbliLDmnI3liqHlmajlhoXlrrnvvJonICtjb250ZW50ICk7XG5cdFx0XHRcdCAgbGV0IGZpbmlzaF9yZWFzb24gPSBkYXRhLmZpbmlzaF9yZWFzb24rJydcblx0XHRcdFx0ICBpZihjb250ZW50IT0nbnVsbCcpe1xuXHRcdFx0XHRcdCAgc2VsZi5zY3JvbGxfdGV4dF8rPWNvbnRlbnQ7XG5cdFx0XHRcdFx0ICAvLyBpZihjb250ZW50PT0nLid8fGNvbnRlbnQ9PSfjgIInKXtcblx0XHRcdFx0XHRcdCAvLyAgc2VsZi5zY3JvbGxfdGV4dF8rPSdcXG7ilqogJztcblx0XHRcdFx0XHQgIC8vIH1cblx0XHRcdFx0ICB9XG5cdFx0XHRcdCAgaWYoZmluaXNoX3JlYXNvbiE9J251bGwnKXtcblx0XHRcdFx0XHQgIHNlbGYuZmluaXNoX3JlY3YoKVxuXHRcdFx0XHRcdCAgLy8gc2VsZi5yZWN2U3RhdHVzID0gZmFsc2U7XG5cdFx0XHRcdFx0ICAvLyBzZWxmLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0ICAvLyBjbGVhclRpbWVvdXQoc2VsZi5pbml0QW5pKVxuXHRcdFx0XHRcdCAgLy8gc2VsZi5zY3JvbGxfdGV4dF8rPVwiXFxuXCJcblx0XHRcdFx0XHQgIC8vIGNvbnNvbGUubG9nKFwic2VsZi5yZWN2TXNnUXVldWVcIixzZWxmLnNjcm9sbF90ZXh0Xylcblx0XHRcdFx0XHQgIC8vIHNlbGYuc3RvcFVwZGF0ZVZpZXcoKTtcblx0XHRcdFx0XHQgIC8vIHNlbGYuY29weVVwZGF0ZXMoKTtcblx0XHRcdFx0XHQgIC8vIHNlbGYudXBkYXRlU3JjTGlzdCgpO1xuXHRcdFx0XHRcdCAgLy8gc2VsZi5yZWN2TXNnUXVldWVbc2VsZi5yZWN2TXNnUXVldWUubGVuZ3RoLTFdLmlzRmluaXNoID0gdHJ1ZTtcblx0XHRcdFx0XG5cdFx0XHRcdCAgfWVsc2V7XG5cdFx0XHRcdFx0c2VsZi5yZWN2TXNnUXVldWVbc2VsZi5yZWN2TXNnUXVldWUubGVuZ3RoLTFdLm1zZ190ZXh0ID0gbWFya2VkLnBhcnNlKHNlbGYuc2Nyb2xsX3RleHRfKTtcblx0XHRcdFx0ICB9XG5cdFx0XHRcdCAgLy8gY29uc29sZS5sb2coXCJzZWxmLnJlY3ZNc2dRdWV1ZS5sZW5ndGhcIixzZWxmLnJlY3ZNc2dRdWV1ZS5sZW5ndGgpXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgZmluaXNoX3JlY3YoKXtcblx0XHRcdFx0bGV0IHNlbGYgPSB0aGlzO1xuXHRcdFx0XHRzZWxmLnJlY3ZTdGF0dXMgPSBmYWxzZTtcblx0XHRcdFx0c2VsZi5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRjbGVhclRpbWVvdXQoc2VsZi5pbml0QW5pKVxuXHRcdFx0XHRzZWxmLnNjcm9sbF90ZXh0Xys9XCJcXG5cIlxuXHRcdFx0XHRjb25zb2xlLmxvZyhcInNlbGYucmVjdk1zZ1F1ZXVlXCIsc2VsZi5zY3JvbGxfdGV4dF8pXG5cdFx0XHRcdHNlbGYuc3RvcFVwZGF0ZVZpZXcoKTtcblx0XHRcdFx0c2VsZi5jb3B5VXBkYXRlcygpO1xuXHRcdFx0XHRzZWxmLnVwZGF0ZVNyY0xpc3QoKTtcblx0XHRcdFx0c2VsZi5yZWN2TXNnUXVldWVbc2VsZi5yZWN2TXNnUXVldWUubGVuZ3RoLTFdLmlzRmluaXNoID0gdHJ1ZTtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBzZW5kTXNnKCl7XG5cdFx0XHRcdC8vIOWmguaenOWGheWuueS4uuepulxuXHRcdFx0XHRpZiAoIXRoaXMuaW5wdXRWYWx1ZSkge1xuXHRcdFx0XHRcdC8vIOW8ueWHuuaPkOekuuahhlxuXHRcdFx0XHRcdHJldHVybiB1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdC8vIOaPkOekuuWGheWuuVxuXHRcdFx0XHRcdFx0dGl0bGU6ICflhoXlrrnkuI3og73kuLrnqbonLFxuXHRcdFx0XHRcdFx0Ly8g5LiN5pi+56S65Zu+5qCHXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnNlbmRTb2NrZXRNZXNzYWdlKHRoaXMuaW5wdXRWYWx1ZSlcblx0XHRcdH0sXG5cdFx0XHRvbktleUlucHV0KGV2ZW50KSB7XG5cdFx0XHRcdHRoaXMuaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuXHRcdFx0fSxcblx0XHRcdHN0YXJ0VXBkYXRlVmlldygpe1xuXHRcdFx0XHRsZXQgc2VsZiA9IHRoaXM7XG5cdFx0XHRcdHNlbGYuJGZvcmNlVXBkYXRlKCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoc2VsZi5zdGFydFVwZGF0ZVZpZXcsNTAwKVxuXHRcdFx0fSxcblx0XHRcdHN0b3BVcGRhdGVWaWV3KCl7XG5cdFx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHNlbGYuc3RhcnRVcGRhdGVWaWV3KVxuXHRcdFx0fSxcblx0XHRcdHNlbmRTb2NrZXRNZXNzYWdlKG1zZykge1xuXHRcdFx0XHRsZXQgc2VsZiA9IHRoaXM7XG5cdFx0XHQgIGlmICh0aGlzLnNvY2tldE9wZW4pIHtcblx0XHRcdFx0IC8vICB1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdC8vIHRpdGxlOlwi5q2j5Zyo5Y+R6YCBXCJcblx0XHRcdFx0IC8vICB9KVxuXHRcdFx0XHRzZWxmLnNlbmRTdGF0dXMgPSB0cnVlO1xuXHRcdFx0XHRzZWxmLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0c2VsZi5hbmlfc3R5bGUucm90YXRlID0gMDtcblx0XHRcdFx0c2VsZi5pbnB1dFZhbHVlID0gJyc7XG5cdFx0XHRcdHNlbGYuaW5pdEFuaSgpO1xuXHRcdFx0XHRzZWxmLnJlY3ZNc2dRdWV1ZS5wdXNoKHt3aG9fbXNnOmNvbmZpZy50eXBlX3NlbGYsbXNnX3R5cGU6MCxtc2dfdGV4dDptc2csaXNGaW5pc2g6ZmFsc2V9KVxuXHRcdFx0XHRzZWxmLnJlY3ZTdGF0dXMgPSB0cnVlO1xuXHRcdFx0XHRzZWxmLl9zb2NrZXRUYXNrLnNlbmQobXNnKVxuXHRcdFx0ICB9IGVsc2Uge1xuXHRcdFx0ICAgIHRoaXMuc29ja2V0TXNnUXVldWUucHVzaChtc2cpO1xuXHRcdFx0ICB9XG5cdFx0XHR9LFxuXHRcdFxuXHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHQuY29udGVudCB7XG5cdFx0aGVpZ2h0OiAxMDB2aDtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdC8qIHBvc2l0aW9uOiByZWxhdGl2ZTsgKi9cclxuXHR9XHJcblx0LnRleHQtYXJlYSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0fVxyXG5cclxuXHQudGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOiAzNnJweDtcclxuXHRcdGNvbG9yOiAjOGY4Zjk0O1xyXG5cdH1cblx0XG5cdC50ZXh0YXJlYS1ib3gsXG5cdC50ZXh0YXJlYSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHR9LFxuXHR0ZXh0YXJlYS1ib3gge1xuXHRcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG5cdH1cblx0XG5cdC50ZXh0YXJlYS1ib3gsXG5cdC50ZXh0YXJlYSxcblx0dGV4dGFyZWEsXG5cdHRleHRhcmVhLWJveCB7XG5cdFx0LyogaGVpZ2h0OiAxMjBweDsgKi9cblx0fVxuXG5cdC50ZXh0YXJlYS1ib3gge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdH1cclxuPC9zdHlsZT5cblxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n"); /***/ }), /* 26 */ /*!*********************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***! \*********************************************************************/ /*! exports provided: log, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; }); function typof (v) { var s = Object.prototype.toString.call(v) return s.substring(8, s.length - 1) } function isDebugMode () { /* eslint-disable no-undef */ return typeof __channelId__ === 'string' && __channelId__ } function jsonStringifyReplacer (k, p) { switch (typof(p)) { case 'Function': return 'function() { [native code] }' default : return p } } function log (type) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } console[type].apply(console, args) } function formatLog () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } var type = args.shift() if (isDebugMode()) { args.push(args.pop().replace('at ', 'uni-app:///')) return console[type].apply(console, args) } var msgs = args.map(function (v) { var type = Object.prototype.toString.call(v).toLowerCase() if (type === '[object object]' || type === '[object array]') { try { v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---' } catch (e) { v = type } } else { if (v === null) { v = '---NULL---' } else if (v === undefined) { v = '---UNDEFINED---' } else { var vType = typof(v).toUpperCase() if (vType === 'NUMBER' || vType === 'BOOLEAN') { v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---' } else { v = String(v) } } } return v }) var msg = '' if (msgs.length > 1) { var lastMsg = msgs.pop() msg = msgs.join('---COMMA---') if (lastMsg.indexOf(' at ') === 0) { msg += lastMsg } else { msg += '---COMMA---' + lastMsg } } else { msg = msgs[0] } console[type](msg) } /***/ }), /* 27 */ /*!**********************************************************!*\ !*** ./node_modules/@babel/runtime/regenerator/index.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4); // TODO(Babel 8): Remove this file. var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 28)(); module.exports = runtime; // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= try { regeneratorRuntime = runtime; } catch (accidentalStrictMode) { if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") { globalThis.regeneratorRuntime = runtime; } else { Function("r", "regeneratorRuntime = r")(runtime); } } /***/ }), /* 28 */ /*!*******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ module.exports = _regeneratorRuntime = function _regeneratorRuntime() { return exports; }, module.exports.__esModule = true, module.exports["default"] = module.exports; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 29 */ /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 30 */ /*!*****************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/marked/marked.min.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(__f__) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);\n/**\n * marked v5.0.4 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n!function (e, u) {\n \"object\" == ( false ? undefined : _typeof(exports)) && \"undefined\" != typeof module ? u(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (u),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n}(this, function (r) {\n \"use strict\";\n\n function i(e, u) {\n for (var t = 0; t < u.length; t++) {\n var n = u[t];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, function (e) {\n e = function (e, u) {\n if (\"object\" != _typeof(e) || null === e) return e;\n var t = e[Symbol.toPrimitive];\n if (void 0 === t) return (\"string\" === u ? String : Number)(e);\n t = t.call(e, u || \"default\");\n if (\"object\" != _typeof(t)) return t;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }(e, \"string\");\n return \"symbol\" == _typeof(e) ? e : String(e);\n }(n.key), n);\n }\n }\n function A() {\n return (A = Object.assign ? Object.assign.bind() : function (e) {\n for (var u = 1; u < arguments.length; u++) {\n var t,\n n = arguments[u];\n for (t in n) {\n Object.prototype.hasOwnProperty.call(n, t) && (e[t] = n[t]);\n }\n }\n return e;\n }).apply(this, arguments);\n }\n function s(e, u) {\n (null == u || u > e.length) && (u = e.length);\n for (var t = 0, n = new Array(u); t < u; t++) {\n n[t] = e[t];\n }\n return n;\n }\n function D(e, u) {\n var t,\n n = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (n) return (n = n.call(e)).next.bind(n);\n if (Array.isArray(e) || (n = function (e, u) {\n var t;\n if (e) return \"string\" == typeof e ? s(e, u) : \"Map\" === (t = \"Object\" === (t = Object.prototype.toString.call(e).slice(8, -1)) && e.constructor ? e.constructor.name : t) || \"Set\" === t ? Array.from(e) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? s(e, u) : void 0;\n }(e)) || u && e && \"number\" == typeof e.length) return n && (e = n), t = 0, function () {\n return t >= e.length ? {\n done: !0\n } : {\n done: !1,\n value: e[t++]\n };\n };\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function e() {\n return {\n async: !1,\n baseUrl: null,\n breaks: !1,\n extensions: null,\n gfm: !0,\n headerIds: !0,\n headerPrefix: \"\",\n highlight: null,\n hooks: null,\n langPrefix: \"language-\",\n mangle: !0,\n pedantic: !1,\n renderer: null,\n sanitize: !1,\n sanitizer: null,\n silent: !1,\n smartypants: !1,\n tokenizer: null,\n walkTokens: null,\n xhtml: !1\n };\n }\n r.defaults = e();\n function t(e) {\n return u[e];\n }\n var n = /[&<>\"']/,\n a = new RegExp(n.source, \"g\"),\n l = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n o = new RegExp(l.source, \"g\"),\n u = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n };\n function d(e, u) {\n if (u) {\n if (n.test(e)) return e.replace(a, t);\n } else if (l.test(e)) return e.replace(o, t);\n return e;\n }\n var c = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/gi;\n function m(e) {\n return e.replace(c, function (e, u) {\n return \"colon\" === (u = u.toLowerCase()) ? \":\" : \"#\" === u.charAt(0) ? \"x\" === u.charAt(1) ? String.fromCharCode(parseInt(u.substring(2), 16)) : String.fromCharCode(+u.substring(1)) : \"\";\n });\n }\n var p = /(^|[^\\[])\\^/g;\n function h(t, e) {\n t = \"string\" == typeof t ? t : t.source, e = e || \"\";\n var n = {\n replace: function replace(e, u) {\n return u = (u = u.source || u).replace(p, \"$1\"), t = t.replace(e, u), n;\n },\n getRegex: function getRegex() {\n return new RegExp(t, e);\n }\n };\n return n;\n }\n var F = /[^\\w:]/g,\n j = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n function f(e, u, t) {\n if (e) {\n try {\n n = decodeURIComponent(m(t)).replace(F, \"\").toLowerCase();\n } catch (e) {\n return null;\n }\n if (0 === n.indexOf(\"javascript:\") || 0 === n.indexOf(\"vbscript:\") || 0 === n.indexOf(\"data:\")) return null;\n }\n var n;\n u && !j.test(t) && (e = t, g[\" \" + (n = u)] || (Z.test(n) ? g[\" \" + n] = n + \"/\" : g[\" \" + n] = E(n, \"/\", !0)), u = -1 === (n = g[\" \" + n]).indexOf(\":\"), t = \"//\" === e.substring(0, 2) ? u ? e : n.replace(O, \"$1\") + e : \"/\" === e.charAt(0) ? u ? e : n.replace(q, \"$1\") + e : n + e);\n try {\n t = encodeURI(t).replace(/%25/g, \"%\");\n } catch (e) {\n return null;\n }\n return t;\n }\n var g = {},\n Z = /^[^:]+:\\/*[^/]*$/,\n O = /^([^:]+:)[\\s\\S]*$/,\n q = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n var k = {\n exec: function exec() {}\n };\n function C(e, u) {\n var t = e.replace(/\\|/g, function (e, u, t) {\n for (var n = !1, r = u; 0 <= --r && \"\\\\\" === t[r];) {\n n = !n;\n }\n return n ? \"|\" : \" |\";\n }).split(/ \\|/),\n n = 0;\n if (t[0].trim() || t.shift(), 0 < t.length && !t[t.length - 1].trim() && t.pop(), t.length > u) t.splice(u);else for (; t.length < u;) {\n t.push(\"\");\n }\n for (; n < t.length; n++) {\n t[n] = t[n].trim().replace(/\\\\\\|/g, \"|\");\n }\n return t;\n }\n function E(e, u, t) {\n var n = e.length;\n if (0 === n) return \"\";\n for (var r = 0; r < n;) {\n var i = e.charAt(n - r - 1);\n if ((i !== u || t) && (i === u || !t)) break;\n r++;\n }\n return e.slice(0, n - r);\n }\n function x(e, u, t, n) {\n var r = u.href,\n u = u.title ? d(u.title) : null,\n i = e[1].replace(/\\\\([\\[\\]])/g, \"$1\");\n return \"!\" !== e[0].charAt(0) ? (n.state.inLink = !0, e = {\n type: \"link\",\n raw: t,\n href: r,\n title: u,\n text: i,\n tokens: n.inlineTokens(i)\n }, n.state.inLink = !1, e) : {\n type: \"image\",\n raw: t,\n href: r,\n title: u,\n text: d(i)\n };\n }\n var b = function () {\n function e(e) {\n this.options = e || r.defaults;\n }\n var u = e.prototype;\n return u.space = function (e) {\n e = this.rules.block.newline.exec(e);\n if (e && 0 < e[0].length) return {\n type: \"space\",\n raw: e[0]\n };\n }, u.code = function (e) {\n var u,\n e = this.rules.block.code.exec(e);\n if (e) return u = e[0].replace(/^ {1,4}/gm, \"\"), {\n type: \"code\",\n raw: e[0],\n codeBlockStyle: \"indented\",\n text: this.options.pedantic ? u : E(u, \"\\n\")\n };\n }, u.fences = function (e) {\n var u,\n t,\n n,\n r,\n e = this.rules.block.fences.exec(e);\n if (e) return u = e[0], t = u, n = e[3] || \"\", t = null === (t = u.match(/^(\\s+)(?:```)/)) ? n : (r = t[1], n.split(\"\\n\").map(function (e) {\n var u = e.match(/^\\s+/);\n return null !== u && u[0].length >= r.length ? e.slice(r.length) : e;\n }).join(\"\\n\")), {\n type: \"code\",\n raw: u,\n lang: e[2] && e[2].trim().replace(this.rules.inline._escapes, \"$1\"),\n text: t\n };\n }, u.heading = function (e) {\n var u,\n t,\n e = this.rules.block.heading.exec(e);\n if (e) return u = e[2].trim(), /#$/.test(u) && (t = E(u, \"#\"), !this.options.pedantic && t && !/ $/.test(t) || (u = t.trim())), {\n type: \"heading\",\n raw: e[0],\n depth: e[1].length,\n text: u,\n tokens: this.lexer.inline(u)\n };\n }, u.hr = function (e) {\n e = this.rules.block.hr.exec(e);\n if (e) return {\n type: \"hr\",\n raw: e[0]\n };\n }, u.blockquote = function (e) {\n var u,\n t,\n n,\n e = this.rules.block.blockquote.exec(e);\n if (e) return u = e[0].replace(/^ *>[ \\t]?/gm, \"\"), t = this.lexer.state.top, this.lexer.state.top = !0, n = this.lexer.blockTokens(u), this.lexer.state.top = t, {\n type: \"blockquote\",\n raw: e[0],\n tokens: n,\n text: u\n };\n }, u.list = function (e) {\n var u = this.rules.block.list.exec(e);\n if (u) {\n var t,\n n,\n r,\n i,\n s,\n a,\n l,\n o,\n D,\n c,\n p,\n h = 1 < (f = u[1].trim()).length,\n F = {\n type: \"list\",\n raw: \"\",\n ordered: h,\n start: h ? +f.slice(0, -1) : \"\",\n loose: !1,\n items: []\n },\n f = h ? \"\\\\d{1,9}\\\\\" + f.slice(-1) : \"\\\\\" + f;\n this.options.pedantic && (f = h ? f : \"[*+-]\");\n for (var g = new RegExp(\"^( {0,3}\" + f + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); e && (p = !1, u = g.exec(e)) && !this.rules.block.hr.test(e);) {\n if (t = u[0], e = e.substring(t.length), l = u[2].split(\"\\n\", 1)[0].replace(/^\\t+/, function (e) {\n return \" \".repeat(3 * e.length);\n }), o = e.split(\"\\n\", 1)[0], this.options.pedantic ? (i = 2, c = l.trimLeft()) : (i = u[2].search(/[^ ]/), c = l.slice(i = 4 < i ? 1 : i), i += u[1].length), s = !1, !l && /^ *$/.test(o) && (t += o + \"\\n\", e = e.substring(o.length + 1), p = !0), !p) for (var A = new RegExp(\"^ {0,\" + Math.min(3, i - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))\"), d = new RegExp(\"^ {0,\" + Math.min(3, i - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\"), k = new RegExp(\"^ {0,\" + Math.min(3, i - 1) + \"}(?:```|~~~)\"), C = new RegExp(\"^ {0,\" + Math.min(3, i - 1) + \"}#\"); e && (o = D = e.split(\"\\n\", 1)[0], this.options.pedantic && (o = o.replace(/^ {1,4}(?=( {4})*[^ ])/g, \" \")), !k.test(o)) && !C.test(o) && !A.test(o) && !d.test(e);) {\n if (o.search(/[^ ]/) >= i || !o.trim()) c += \"\\n\" + o.slice(i);else {\n if (s) break;\n if (4 <= l.search(/[^ ]/)) break;\n if (k.test(l)) break;\n if (C.test(l)) break;\n if (d.test(l)) break;\n c += \"\\n\" + o;\n }\n s || o.trim() || (s = !0), t += D + \"\\n\", e = e.substring(D.length + 1), l = o.slice(i);\n }\n F.loose || (a ? F.loose = !0 : /\\n *\\n *$/.test(t) && (a = !0)), this.options.gfm && (n = /^\\[[ xX]\\] /.exec(c)) && (r = \"[ ] \" !== n[0], c = c.replace(/^\\[[ xX]\\] +/, \"\")), F.items.push({\n type: \"list_item\",\n raw: t,\n task: !!n,\n checked: r,\n loose: !1,\n text: c\n }), F.raw += t;\n }\n F.items[F.items.length - 1].raw = t.trimRight(), F.items[F.items.length - 1].text = c.trimRight(), F.raw = F.raw.trimRight();\n for (var E, m = F.items.length, x = 0; x < m; x++) {\n this.lexer.state.top = !1, F.items[x].tokens = this.lexer.blockTokens(F.items[x].text, []), F.loose || (E = 0 < (E = F.items[x].tokens.filter(function (e) {\n return \"space\" === e.type;\n })).length && E.some(function (e) {\n return /\\n.*\\n/.test(e.raw);\n }), F.loose = E);\n }\n if (F.loose) for (x = 0; x < m; x++) {\n F.items[x].loose = !0;\n }\n return F;\n }\n }, u.html = function (e) {\n var u,\n e = this.rules.block.html.exec(e);\n if (e) return u = {\n type: \"html\",\n block: !0,\n raw: e[0],\n pre: !this.options.sanitizer && (\"pre\" === e[1] || \"script\" === e[1] || \"style\" === e[1]),\n text: e[0]\n }, this.options.sanitize && (e = this.options.sanitizer ? this.options.sanitizer(e[0]) : d(e[0]), u.type = \"paragraph\", u.text = e, u.tokens = this.lexer.inline(e)), u;\n }, u.def = function (e) {\n var u,\n t,\n n,\n e = this.rules.block.def.exec(e);\n if (e) return u = e[1].toLowerCase().replace(/\\s+/g, \" \"), t = e[2] ? e[2].replace(/^<(.*)>$/, \"$1\").replace(this.rules.inline._escapes, \"$1\") : \"\", n = e[3] && e[3].substring(1, e[3].length - 1).replace(this.rules.inline._escapes, \"$1\"), {\n type: \"def\",\n tag: u,\n raw: e[0],\n href: t,\n title: n\n };\n }, u.table = function (e) {\n e = this.rules.block.table.exec(e);\n if (e) {\n var u = {\n type: \"table\",\n header: C(e[1]).map(function (e) {\n return {\n text: e\n };\n }),\n align: e[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n rows: e[3] && e[3].trim() ? e[3].replace(/\\n[ \\t]*$/, \"\").split(\"\\n\") : []\n };\n if (u.header.length === u.align.length) {\n u.raw = e[0];\n for (var t, n, r, i = u.align.length, s = 0; s < i; s++) {\n /^ *-+: *$/.test(u.align[s]) ? u.align[s] = \"right\" : /^ *:-+: *$/.test(u.align[s]) ? u.align[s] = \"center\" : /^ *:-+ *$/.test(u.align[s]) ? u.align[s] = \"left\" : u.align[s] = null;\n }\n for (i = u.rows.length, s = 0; s < i; s++) {\n u.rows[s] = C(u.rows[s], u.header.length).map(function (e) {\n return {\n text: e\n };\n });\n }\n for (i = u.header.length, t = 0; t < i; t++) {\n u.header[t].tokens = this.lexer.inline(u.header[t].text);\n }\n for (i = u.rows.length, t = 0; t < i; t++) {\n for (r = u.rows[t], n = 0; n < r.length; n++) {\n r[n].tokens = this.lexer.inline(r[n].text);\n }\n }\n return u;\n }\n }\n }, u.lheading = function (e) {\n e = this.rules.block.lheading.exec(e);\n if (e) return {\n type: \"heading\",\n raw: e[0],\n depth: \"=\" === e[2].charAt(0) ? 1 : 2,\n text: e[1],\n tokens: this.lexer.inline(e[1])\n };\n }, u.paragraph = function (e) {\n var u,\n e = this.rules.block.paragraph.exec(e);\n if (e) return u = \"\\n\" === e[1].charAt(e[1].length - 1) ? e[1].slice(0, -1) : e[1], {\n type: \"paragraph\",\n raw: e[0],\n text: u,\n tokens: this.lexer.inline(u)\n };\n }, u.text = function (e) {\n e = this.rules.block.text.exec(e);\n if (e) return {\n type: \"text\",\n raw: e[0],\n text: e[0],\n tokens: this.lexer.inline(e[0])\n };\n }, u.escape = function (e) {\n e = this.rules.inline.escape.exec(e);\n if (e) return {\n type: \"escape\",\n raw: e[0],\n text: d(e[1])\n };\n }, u.tag = function (e) {\n e = this.rules.inline.tag.exec(e);\n if (e) return !this.lexer.state.inLink && /^/i.test(e[0]) && (this.lexer.state.inLink = !1), !this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(e[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(e[0]) && (this.lexer.state.inRawBlock = !1), {\n type: this.options.sanitize ? \"text\" : \"html\",\n raw: e[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: !1,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(e[0]) : d(e[0]) : e[0]\n };\n }, u.link = function (e) {\n e = this.rules.inline.link.exec(e);\n if (e) {\n var u = e[2].trim();\n if (!this.options.pedantic && /^$/.test(u)) return;\n var t = E(u.slice(0, -1), \"\\\\\");\n if ((u.length - t.length) % 2 == 0) return;\n } else {\n t = function (e, u) {\n if (-1 !== e.indexOf(u[1])) for (var t = e.length, n = 0, r = 0; r < t; r++) {\n if (\"\\\\\" === e[r]) r++;else if (e[r] === u[0]) n++;else if (e[r] === u[1] && --n < 0) return r;\n }\n return -1;\n }(e[2], \"()\");\n -1 < t && (r = (0 === e[0].indexOf(\"!\") ? 5 : 4) + e[1].length + t, e[2] = e[2].substring(0, t), e[0] = e[0].substring(0, r).trim(), e[3] = \"\");\n }\n var n,\n t = e[2],\n r = \"\";\n return this.options.pedantic ? (n = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(t)) && (t = n[1], r = n[3]) : r = e[3] ? e[3].slice(1, -1) : \"\", t = t.trim(), x(e, {\n href: (t = /^$/.test(u) ? t.slice(1) : t.slice(1, -1) : t) && t.replace(this.rules.inline._escapes, \"$1\"),\n title: r && r.replace(this.rules.inline._escapes, \"$1\")\n }, e[0], this.lexer);\n }\n }, u.reflink = function (e, u) {\n var t;\n if (t = (t = this.rules.inline.reflink.exec(e)) || this.rules.inline.nolink.exec(e)) return (e = u[(e = (t[2] || t[1]).replace(/\\s+/g, \" \")).toLowerCase()]) ? x(t, e, t[0], this.lexer) : {\n type: \"text\",\n raw: u = t[0].charAt(0),\n text: u\n };\n }, u.emStrong = function (e, u, t) {\n void 0 === t && (t = \"\");\n var n = this.rules.inline.emStrong.lDelim.exec(e);\n if (n && (!n[3] || !t.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDF50-\\uDF59\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEC0-\\uDED3\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDCD0-\\uDCEB\\uDCF0-\\uDCF9\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])/))) {\n var r = n[1] || n[2] || \"\";\n if (!r || \"\" === t || this.rules.inline.punctuation.exec(t)) {\n var i = n[0].length - 1,\n s = i,\n a = 0,\n l = \"*\" === n[0][0] ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n for (l.lastIndex = 0, u = u.slice(-1 * e.length + i); null != (n = l.exec(u));) {\n var o,\n D = n[1] || n[2] || n[3] || n[4] || n[5] || n[6];\n if (D) if (o = D.length, n[3] || n[4]) s += o;else if ((n[5] || n[6]) && i % 3 && !((i + o) % 3)) a += o;else if (!(0 < (s -= o))) return o = Math.min(o, o + s + a), D = e.slice(0, i + n.index + (n[0].length - D.length) + o), Math.min(i, o) % 2 ? (o = D.slice(1, -1), {\n type: \"em\",\n raw: D,\n text: o,\n tokens: this.lexer.inlineTokens(o)\n }) : (o = D.slice(2, -2), {\n type: \"strong\",\n raw: D,\n text: o,\n tokens: this.lexer.inlineTokens(o)\n });\n }\n }\n }\n }, u.codespan = function (e) {\n var u,\n t,\n n,\n e = this.rules.inline.code.exec(e);\n if (e) return n = e[2].replace(/\\n/g, \" \"), u = /[^ ]/.test(n), t = /^ /.test(n) && / $/.test(n), n = d(n = u && t ? n.substring(1, n.length - 1) : n, !0), {\n type: \"codespan\",\n raw: e[0],\n text: n\n };\n }, u.br = function (e) {\n e = this.rules.inline.br.exec(e);\n if (e) return {\n type: \"br\",\n raw: e[0]\n };\n }, u.del = function (e) {\n e = this.rules.inline.del.exec(e);\n if (e) return {\n type: \"del\",\n raw: e[0],\n text: e[2],\n tokens: this.lexer.inlineTokens(e[2])\n };\n }, u.autolink = function (e, u) {\n var t,\n e = this.rules.inline.autolink.exec(e);\n if (e) return u = \"@\" === e[2] ? \"mailto:\" + (t = d(this.options.mangle ? u(e[1]) : e[1])) : t = d(e[1]), {\n type: \"link\",\n raw: e[0],\n text: t,\n href: u,\n tokens: [{\n type: \"text\",\n raw: t,\n text: t\n }]\n };\n }, u.url = function (e, u) {\n var t, n, r, i;\n if (t = this.rules.inline.url.exec(e)) {\n if (\"@\" === t[2]) r = \"mailto:\" + (n = d(this.options.mangle ? u(t[0]) : t[0]));else {\n for (; i = t[0], t[0] = this.rules.inline._backpedal.exec(t[0])[0], i !== t[0];) {\n ;\n }\n n = d(t[0]), r = \"www.\" === t[1] ? \"http://\" + t[0] : t[0];\n }\n return {\n type: \"link\",\n raw: t[0],\n text: n,\n href: r,\n tokens: [{\n type: \"text\",\n raw: n,\n text: n\n }]\n };\n }\n }, u.inlineText = function (e, u) {\n e = this.rules.inline.text.exec(e);\n if (e) return u = this.lexer.state.inRawBlock ? this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(e[0]) : d(e[0]) : e[0] : d(this.options.smartypants ? u(e[0]) : e[0]), {\n type: \"text\",\n raw: e[0],\n text: u\n };\n }, e;\n }(),\n B = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: \"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|\\\\n*|$)|\\\\n*|$)|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$))\",\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: k,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/,\n _label: /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/,\n _title: /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/\n },\n w = (B.def = h(B.def).replace(\"label\", B._label).replace(\"title\", B._title).getRegex(), B.bullet = /(?:[*+-]|\\d{1,9}[.)])/, B.listItemStart = h(/^( *)(bull) */).replace(\"bull\", B.bullet).getRegex(), B.list = h(B.list).replace(/bull/g, B.bullet).replace(\"hr\", \"\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))\").replace(\"def\", \"\\\\n+(?=\" + B.def.source + \")\").getRegex(), B._tag = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\", B._comment = /|$)/, B.html = h(B.html, \"i\").replace(\"comment\", B._comment).replace(\"tag\", B._tag).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(), B.lheading = h(B.lheading).replace(/bull/g, B.bullet).getRegex(), B.paragraph = h(B._paragraph).replace(\"hr\", B.hr).replace(\"heading\", \" {0,3}#{1,6} \").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", B._tag).getRegex(), B.blockquote = h(B.blockquote).replace(\"paragraph\", B.paragraph).getRegex(), B.normal = A({}, B), B.gfm = A({}, B.normal, {\n table: \"^ *([^\\\\n ].*\\\\|.*)\\\\n {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"\n }), B.gfm.table = h(B.gfm.table).replace(\"hr\", B.hr).replace(\"heading\", \" {0,3}#{1,6} \").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \" {4}[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", B._tag).getRegex(), B.gfm.paragraph = h(B._paragraph).replace(\"hr\", B.hr).replace(\"heading\", \" {0,3}#{1,6} \").replace(\"|lheading\", \"\").replace(\"table\", B.gfm.table).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", B._tag).getRegex(), B.pedantic = A({}, B.normal, {\n html: h(\"^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))\").replace(\"comment\", B._comment).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: k,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: h(B.normal._paragraph).replace(\"hr\", B.hr).replace(\"heading\", \" *#{1,6} *[^\\n]\").replace(\"lheading\", B.lheading).replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").getRegex()\n }), {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: k,\n tag: \"^comment|^|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^|^\",\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: \"reflink|nolink(?!\\\\()\",\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: k,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~\" + w._uc_punctuation, w.punctuation = h(w.punctuation).replace(/punctuation/g, w._punctuation).getRegex(), w.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g, w.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g, w._comment = h(B._comment).replace(\"(?:--\\x3e|$)\", \"--\\x3e\").getRegex(), w.emStrong.lDelim = h(w.emStrong.lDelim).replace(/punct/g, w._punctuation).getRegex(), w.emStrong.rDelimAst = h(w.emStrong.rDelimAst, \"g\").replace(/punct/g, w._punctuation).getRegex(), w.emStrong.rDelimUnd = h(w.emStrong.rDelimUnd, \"g\").replace(/punct/g, w._punctuation).getRegex(), w._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g, w._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/, w._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/, w.autolink = h(w.autolink).replace(\"scheme\", w._scheme).replace(\"email\", w._email).getRegex(), w._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/, w.tag = h(w.tag).replace(\"comment\", w._comment).replace(\"attribute\", w._attribute).getRegex(), w._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/, w._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/, w._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/, w.link = h(w.link).replace(\"label\", w._label).replace(\"href\", w._href).replace(\"title\", w._title).getRegex(), w.reflink = h(w.reflink).replace(\"label\", w._label).replace(\"ref\", B._label).getRegex(), w.nolink = h(w.nolink).replace(\"ref\", B._label).getRegex(), w.reflinkSearch = h(w.reflinkSearch, \"g\").replace(\"reflink\", w.reflink).replace(\"nolink\", w.nolink).getRegex(), w.normal = A({}, w), w.pedantic = A({}, w.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", w._label).getRegex(),\n reflink: h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", w._label).getRegex()\n }), w.gfm = A({}, w.normal, {\n escape: h(w.escape).replace(\"])\", \"~|])\").getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\' + (t ? e : d(e, !0)) + \"\\n\" : \"
\" + (t ? e : d(e, !0)) + \"
\\n\";\n }, u.blockquote = function (e) {\n return \"
\\n\" + e + \"
\\n\";\n }, u.html = function (e, u) {\n return e;\n }, u.heading = function (e, u, t, n) {\n return this.options.headerIds ? \"' + e + \"\\n\" : \"\" + e + \"\\n\";\n }, u.hr = function () {\n return this.options.xhtml ? \"
\\n\" : \"
\\n\";\n }, u.list = function (e, u, t) {\n var n = u ? \"ol\" : \"ul\";\n return \"<\" + n + (u && 1 !== t ? ' start=\"' + t + '\"' : \"\") + \">\\n\" + e + \"\\n\";\n }, u.listitem = function (e) {\n return \"
  • \" + e + \"
  • \\n\";\n }, u.checkbox = function (e) {\n return \" \";\n }, u.paragraph = function (e) {\n return \"

    \" + e + \"

    \\n\";\n }, u.table = function (e, u) {\n return \"\\n\\n\" + e + \"\\n\" + (u = u && \"\" + u + \"\") + \"
    \\n\";\n }, u.tablerow = function (e) {\n return \"\\n\" + e + \"\\n\";\n }, u.tablecell = function (e, u) {\n var t = u.header ? \"th\" : \"td\";\n return (u.align ? \"<\" + t + ' align=\"' + u.align + '\">' : \"<\" + t + \">\") + e + \"\\n\";\n }, u.strong = function (e) {\n return \"\" + e + \"\";\n }, u.em = function (e) {\n return \"\" + e + \"\";\n }, u.codespan = function (e) {\n return \"\" + e + \"\";\n }, u.br = function () {\n return this.options.xhtml ? \"
    \" : \"
    \";\n }, u.del = function (e) {\n return \"\" + e + \"\";\n }, u.link = function (e, u, t) {\n return null === (e = f(this.options.sanitize, this.options.baseUrl, e)) ? t : (e = '
    \" + t + \"\");\n }, u.image = function (e, u, t) {\n return null === (e = f(this.options.sanitize, this.options.baseUrl, e)) ? t : (e = '\"'\" : \">\"));\n }, u.text = function (e) {\n return e;\n }, e;\n }(),\n z = function () {\n function e() {}\n var u = e.prototype;\n return u.strong = function (e) {\n return e;\n }, u.em = function (e) {\n return e;\n }, u.codespan = function (e) {\n return e;\n }, u.del = function (e) {\n return e;\n }, u.html = function (e) {\n return e;\n }, u.text = function (e) {\n return e;\n }, u.link = function (e, u, t) {\n return \"\" + t;\n }, u.image = function (e, u, t) {\n return \"\" + t;\n }, u.br = function () {\n return \"\";\n }, e;\n }(),\n $ = function () {\n function e() {\n this.seen = {};\n }\n var u = e.prototype;\n return u.serialize = function (e) {\n return e.toLowerCase().trim().replace(/<[!\\/a-z].*?>/gi, \"\").replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, \"\").replace(/\\s/g, \"-\");\n }, u.getNextSafeSlug = function (e, u) {\n var t = e,\n n = 0;\n if (this.seen.hasOwnProperty(t)) for (n = this.seen[e]; t = e + \"-\" + ++n, this.seen.hasOwnProperty(t);) {\n ;\n }\n return u || (this.seen[e] = n, this.seen[t] = 0), t;\n }, u.slug = function (e, u) {\n void 0 === u && (u = {});\n e = this.serialize(e);\n return this.getNextSafeSlug(e, u.dryrun);\n }, e;\n }(),\n S = function () {\n function t(e) {\n this.options = e || r.defaults, this.options.renderer = this.options.renderer || new _(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.textRenderer = new z(), this.slugger = new $();\n }\n t.parse = function (e, u) {\n return new t(u).parse(e);\n }, t.parseInline = function (e, u) {\n return new t(u).parseInline(e);\n };\n var e = t.prototype;\n return e.parse = function (e, u) {\n void 0 === u && (u = !0);\n for (var t, n, r, i, s, a, l, o, D, c, p, h, F, f, g, A, d = \"\", k = e.length, C = 0; C < k; C++) {\n if (o = e[C], this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[o.type] && (!1 !== (A = this.options.extensions.renderers[o.type].call({\n parser: this\n }, o)) || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"paragraph\", \"text\"].includes(o.type))) d += A || \"\";else switch (o.type) {\n case \"space\":\n continue;\n case \"hr\":\n d += this.renderer.hr();\n continue;\n case \"heading\":\n d += this.renderer.heading(this.parseInline(o.tokens), o.depth, m(this.parseInline(o.tokens, this.textRenderer)), this.slugger);\n continue;\n case \"code\":\n d += this.renderer.code(o.text, o.lang, o.escaped);\n continue;\n case \"table\":\n for (a = D = \"\", r = o.header.length, t = 0; t < r; t++) {\n a += this.renderer.tablecell(this.parseInline(o.header[t].tokens), {\n header: !0,\n align: o.align[t]\n });\n }\n for (D += this.renderer.tablerow(a), l = \"\", r = o.rows.length, t = 0; t < r; t++) {\n for (a = \"\", i = (s = o.rows[t]).length, n = 0; n < i; n++) {\n a += this.renderer.tablecell(this.parseInline(s[n].tokens), {\n header: !1,\n align: o.align[n]\n });\n }\n l += this.renderer.tablerow(a);\n }\n d += this.renderer.table(D, l);\n continue;\n case \"blockquote\":\n l = this.parse(o.tokens), d += this.renderer.blockquote(l);\n continue;\n case \"list\":\n for (D = o.ordered, E = o.start, c = o.loose, r = o.items.length, l = \"\", t = 0; t < r; t++) {\n F = (h = o.items[t]).checked, f = h.task, p = \"\", h.task && (g = this.renderer.checkbox(F), c ? 0 < h.tokens.length && \"paragraph\" === h.tokens[0].type ? (h.tokens[0].text = g + \" \" + h.tokens[0].text, h.tokens[0].tokens && 0 < h.tokens[0].tokens.length && \"text\" === h.tokens[0].tokens[0].type && (h.tokens[0].tokens[0].text = g + \" \" + h.tokens[0].tokens[0].text)) : h.tokens.unshift({\n type: \"text\",\n text: g\n }) : p += g), p += this.parse(h.tokens, c), l += this.renderer.listitem(p, f, F);\n }\n d += this.renderer.list(l, D, E);\n continue;\n case \"html\":\n d += this.renderer.html(o.text, o.block);\n continue;\n case \"paragraph\":\n d += this.renderer.paragraph(this.parseInline(o.tokens));\n continue;\n case \"text\":\n for (l = o.tokens ? this.parseInline(o.tokens) : o.text; C + 1 < k && \"text\" === e[C + 1].type;) {\n l += \"\\n\" + ((o = e[++C]).tokens ? this.parseInline(o.tokens) : o.text);\n }\n d += u ? this.renderer.paragraph(l) : l;\n continue;\n default:\n var E = 'Token with \"' + o.type + '\" type was not found.';\n if (this.options.silent) return void __f__(\"error\", E, \" at pages/marked/marked.min.js:6\");\n throw new Error(E);\n }\n }\n return d;\n }, e.parseInline = function (e, u) {\n u = u || this.renderer;\n for (var t, n, r = \"\", i = e.length, s = 0; s < i; s++) {\n if (t = e[s], this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[t.type] && (!1 !== (n = this.options.extensions.renderers[t.type].call({\n parser: this\n }, t)) || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(t.type))) r += n || \"\";else switch (t.type) {\n case \"escape\":\n r += u.text(t.text);\n break;\n case \"html\":\n r += u.html(t.text);\n break;\n case \"link\":\n r += u.link(t.href, t.title, this.parseInline(t.tokens, u));\n break;\n case \"image\":\n r += u.image(t.href, t.title, t.text);\n break;\n case \"strong\":\n r += u.strong(this.parseInline(t.tokens, u));\n break;\n case \"em\":\n r += u.em(this.parseInline(t.tokens, u));\n break;\n case \"codespan\":\n r += u.codespan(t.text);\n break;\n case \"br\":\n r += u.br();\n break;\n case \"del\":\n r += u.del(this.parseInline(t.tokens, u));\n break;\n case \"text\":\n r += u.text(t.text);\n break;\n default:\n var a = 'Token with \"' + t.type + '\" type was not found.';\n if (this.options.silent) return void __f__(\"error\", a, \" at pages/marked/marked.min.js:6\");\n throw new Error(a);\n }\n }\n return r;\n }, t;\n }(),\n T = function () {\n function e(e) {\n this.options = e || r.defaults;\n }\n var u = e.prototype;\n return u.preprocess = function (e) {\n return e;\n }, u.postprocess = function (e) {\n return e;\n }, e;\n }();\n function R(f, g) {\n return function (e, t, n) {\n \"function\" == typeof t && (n = t, t = null);\n var r,\n i,\n s,\n u,\n a = A({}, t),\n l = (t = A({}, I.defaults, a), r = t.silent, i = t.async, s = n, function (e) {\n var u;\n if (e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\", r) return u = \"

    An error occurred:

    \" + d(e.message + \"\", !0) + \"
    \", i ? Promise.resolve(u) : s ? void s(null, u) : u;\n if (i) return Promise.reject(e);\n if (!s) throw e;\n s(e);\n });\n if (null == e) return l(new Error(\"marked(): input parameter is undefined or null\"));\n if (\"string\" != typeof e) return l(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(e) + \", string expected\"));\n if (a = n, (u = t) && !u.silent && (a && __f__(\"warn\", \"marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async\", \" at pages/marked/marked.min.js:6\"), (u.sanitize || u.sanitizer) && __f__(\"warn\", \"marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options\", \" at pages/marked/marked.min.js:6\"), !u.highlight && \"language-\" === u.langPrefix || __f__(\"warn\", \"marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.\", \" at pages/marked/marked.min.js:6\"), u.mangle && __f__(\"warn\", \"marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.\", \" at pages/marked/marked.min.js:6\"), u.baseUrl && __f__(\"warn\", \"marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.\", \" at pages/marked/marked.min.js:6\"), u.smartypants && __f__(\"warn\", \"marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.\", \" at pages/marked/marked.min.js:6\"), u.xhtml && __f__(\"warn\", \"marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.\", \" at pages/marked/marked.min.js:6\"), u.headerIds || u.headerPrefix) && __f__(\"warn\", \"marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.\", \" at pages/marked/marked.min.js:6\"), t.hooks && (t.hooks.options = t), n) {\n var o,\n D = t.highlight;\n try {\n t.hooks && (e = t.hooks.preprocess(e)), o = f(e, t);\n } catch (e) {\n return l(e);\n }\n var c,\n p = function p(u) {\n var e;\n if (!u) try {\n t.walkTokens && I.walkTokens(o, t.walkTokens), e = g(o, t), t.hooks && (e = t.hooks.postprocess(e));\n } catch (e) {\n u = e;\n }\n return t.highlight = D, u ? l(u) : n(null, e);\n };\n return !D || D.length < 3 ? p() : (delete t.highlight, o.length ? (c = 0, I.walkTokens(o, function (t) {\n \"code\" === t.type && (c++, setTimeout(function () {\n D(t.text, t.lang, function (e, u) {\n if (e) return p(e);\n null != u && u !== t.text && (t.text = u, t.escaped = !0), 0 === --c && p();\n });\n }, 0));\n }), void (0 === c && p())) : p());\n }\n if (t.async) return Promise.resolve(t.hooks ? t.hooks.preprocess(e) : e).then(function (e) {\n return f(e, t);\n }).then(function (e) {\n return t.walkTokens ? Promise.all(I.walkTokens(e, t.walkTokens)).then(function () {\n return e;\n }) : e;\n }).then(function (e) {\n return g(e, t);\n }).then(function (e) {\n return t.hooks ? t.hooks.postprocess(e) : e;\n }).catch(l);\n try {\n t.hooks && (e = t.hooks.preprocess(e));\n var h = f(e, t),\n F = (t.walkTokens && I.walkTokens(h, t.walkTokens), g(h, t));\n return F = t.hooks ? t.hooks.postprocess(F) : F;\n } catch (e) {\n return l(e);\n }\n };\n }\n function I(e, u, t) {\n return R(y.lex, S.parse)(e, u, t);\n }\n T.passThroughHooks = new Set([\"preprocess\", \"postprocess\"]), I.options = I.setOptions = function (e) {\n return I.defaults = A({}, I.defaults, e), e = I.defaults, r.defaults = e, I;\n }, I.getDefaults = e, I.defaults = r.defaults, I.use = function () {\n for (var D = I.defaults.extensions || {\n renderers: {},\n childTokens: {}\n }, e = arguments.length, u = new Array(e), t = 0; t < e; t++) {\n u[t] = arguments[t];\n }\n u.forEach(function (s) {\n var t,\n e = A({}, s);\n if (e.async = I.defaults.async || e.async || !1, s.extensions && (s.extensions.forEach(function (r) {\n if (!r.name) throw new Error(\"extension name required\");\n var i;\n if (r.renderer && (i = D.renderers[r.name], D.renderers[r.name] = i ? function () {\n for (var e = arguments.length, u = new Array(e), t = 0; t < e; t++) {\n u[t] = arguments[t];\n }\n var n = r.renderer.apply(this, u);\n return n = !1 === n ? i.apply(this, u) : n;\n } : r.renderer), r.tokenizer) {\n if (!r.level || \"block\" !== r.level && \"inline\" !== r.level) throw new Error(\"extension level must be 'block' or 'inline'\");\n D[r.level] ? D[r.level].unshift(r.tokenizer) : D[r.level] = [r.tokenizer], r.start && (\"block\" === r.level ? D.startBlock ? D.startBlock.push(r.start) : D.startBlock = [r.start] : \"inline\" === r.level && (D.startInline ? D.startInline.push(r.start) : D.startInline = [r.start]));\n }\n r.childTokens && (D.childTokens[r.name] = r.childTokens);\n }), e.extensions = D), s.renderer) {\n var u,\n a = I.defaults.renderer || new _();\n for (u in s.renderer) {\n !function (r) {\n var i = a[r];\n a[r] = function () {\n for (var e = arguments.length, u = new Array(e), t = 0; t < e; t++) {\n u[t] = arguments[t];\n }\n var n = s.renderer[r].apply(a, u);\n return n = !1 === n ? i.apply(a, u) : n;\n };\n }(u);\n }\n e.renderer = a;\n }\n if (s.tokenizer) {\n var n,\n l = I.defaults.tokenizer || new b();\n for (n in s.tokenizer) {\n !function (r) {\n var i = l[r];\n l[r] = function () {\n for (var e = arguments.length, u = new Array(e), t = 0; t < e; t++) {\n u[t] = arguments[t];\n }\n var n = s.tokenizer[r].apply(l, u);\n return n = !1 === n ? i.apply(l, u) : n;\n };\n }(n);\n }\n e.tokenizer = l;\n }\n if (s.hooks) {\n var r,\n o = I.defaults.hooks || new T();\n for (r in s.hooks) {\n !function (r) {\n var i = o[r];\n T.passThroughHooks.has(r) ? o[r] = function (e) {\n return I.defaults.async ? Promise.resolve(s.hooks[r].call(o, e)).then(function (e) {\n return i.call(o, e);\n }) : (e = s.hooks[r].call(o, e), i.call(o, e));\n } : o[r] = function () {\n for (var e = arguments.length, u = new Array(e), t = 0; t < e; t++) {\n u[t] = arguments[t];\n }\n var n = s.hooks[r].apply(o, u);\n return n = !1 === n ? i.apply(o, u) : n;\n };\n }(r);\n }\n e.hooks = o;\n }\n s.walkTokens && (t = I.defaults.walkTokens, e.walkTokens = function (e) {\n var u = [];\n return u.push(s.walkTokens.call(this, e)), u = t ? u.concat(t.call(this, e)) : u;\n }), I.setOptions(e);\n });\n }, I.walkTokens = function (e, a) {\n for (var l, o = [], u = D(e); !(l = u()).done;) {\n !function () {\n var u = l.value;\n switch (o = o.concat(a.call(I, u)), u.type) {\n case \"table\":\n for (var e = D(u.header); !(t = e()).done;) {\n var t = t.value;\n o = o.concat(I.walkTokens(t.tokens, a));\n }\n for (var n, r = D(u.rows); !(n = r()).done;) {\n for (var i = D(n.value); !(s = i()).done;) {\n var s = s.value;\n o = o.concat(I.walkTokens(s.tokens, a));\n }\n }\n break;\n case \"list\":\n o = o.concat(I.walkTokens(u.items, a));\n break;\n default:\n I.defaults.extensions && I.defaults.extensions.childTokens && I.defaults.extensions.childTokens[u.type] ? I.defaults.extensions.childTokens[u.type].forEach(function (e) {\n o = o.concat(I.walkTokens(u[e], a));\n }) : u.tokens && (o = o.concat(I.walkTokens(u.tokens, a)));\n }\n }();\n }\n return o;\n }, I.parseInline = R(y.lexInline, S.parseInline), I.Parser = S, I.parser = S.parse, I.Renderer = _, I.TextRenderer = z, I.Lexer = y, I.lexer = y.lex, I.Tokenizer = b, I.Slugger = $, I.Hooks = T;\n var k = (I.parse = I).options,\n L = I.setOptions,\n U = I.use,\n Q = I.walkTokens,\n M = I.parseInline,\n N = I,\n H = S.parse,\n X = y.lex;\n r.Hooks = T, r.Lexer = y, r.Parser = S, r.Renderer = _, r.Slugger = $, r.TextRenderer = z, r.Tokenizer = b, r.getDefaults = e, r.lexer = X, r.marked = I, r.options = k, r.parse = N, r.parseInline = M, r.parser = H, r.setOptions = L, r.use = U, r.walkTokens = Q;\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 26)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWFya2VkL21hcmtlZC5taW4uanMiXSwibmFtZXMiOlsiZSIsInUiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiciIsImkiLCJ0IiwibGVuZ3RoIiwibiIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJjYWxsIiwiVHlwZUVycm9yIiwia2V5IiwiQSIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImFwcGx5IiwicyIsIkFycmF5IiwiRCIsIml0ZXJhdG9yIiwibmV4dCIsImlzQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJkb25lIiwidmFsdWUiLCJhc3luYyIsImJhc2VVcmwiLCJicmVha3MiLCJleHRlbnNpb25zIiwiZ2ZtIiwiaGVhZGVySWRzIiwiaGVhZGVyUHJlZml4IiwiaGlnaGxpZ2h0IiwiaG9va3MiLCJsYW5nUHJlZml4IiwibWFuZ2xlIiwicGVkYW50aWMiLCJyZW5kZXJlciIsInNhbml0aXplIiwic2FuaXRpemVyIiwic2lsZW50Iiwic21hcnR5cGFudHMiLCJ0b2tlbml6ZXIiLCJ3YWxrVG9rZW5zIiwieGh0bWwiLCJkZWZhdWx0cyIsImEiLCJSZWdFeHAiLCJzb3VyY2UiLCJsIiwibyIsImQiLCJyZXBsYWNlIiwiYyIsIm0iLCJ0b0xvd2VyQ2FzZSIsImNoYXJBdCIsImZyb21DaGFyQ29kZSIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwicCIsImgiLCJnZXRSZWdleCIsIkYiLCJqIiwiZiIsImRlY29kZVVSSUNvbXBvbmVudCIsImluZGV4T2YiLCJnIiwiWiIsIkUiLCJPIiwicSIsImVuY29kZVVSSSIsImsiLCJleGVjIiwiQyIsInNwbGl0IiwidHJpbSIsInNoaWZ0IiwicG9wIiwic3BsaWNlIiwicHVzaCIsIngiLCJocmVmIiwidGl0bGUiLCJzdGF0ZSIsImluTGluayIsInR5cGUiLCJyYXciLCJ0ZXh0IiwidG9rZW5zIiwiaW5saW5lVG9rZW5zIiwiYiIsIm9wdGlvbnMiLCJzcGFjZSIsInJ1bGVzIiwiYmxvY2siLCJuZXdsaW5lIiwiY29kZSIsImNvZGVCbG9ja1N0eWxlIiwiZmVuY2VzIiwibWF0Y2giLCJtYXAiLCJqb2luIiwibGFuZyIsImlubGluZSIsIl9lc2NhcGVzIiwiaGVhZGluZyIsImRlcHRoIiwibGV4ZXIiLCJociIsImJsb2NrcXVvdGUiLCJ0b3AiLCJibG9ja1Rva2VucyIsImxpc3QiLCJvcmRlcmVkIiwic3RhcnQiLCJsb29zZSIsIml0ZW1zIiwicmVwZWF0IiwidHJpbUxlZnQiLCJzZWFyY2giLCJNYXRoIiwibWluIiwidGFzayIsImNoZWNrZWQiLCJ0cmltUmlnaHQiLCJmaWx0ZXIiLCJzb21lIiwiaHRtbCIsInByZSIsImRlZiIsInRhZyIsInRhYmxlIiwiaGVhZGVyIiwiYWxpZ24iLCJyb3dzIiwibGhlYWRpbmciLCJwYXJhZ3JhcGgiLCJlc2NhcGUiLCJpblJhd0Jsb2NrIiwibGluayIsInJlZmxpbmsiLCJub2xpbmsiLCJlbVN0cm9uZyIsImxEZWxpbSIsInB1bmN0dWF0aW9uIiwickRlbGltQXN0IiwickRlbGltVW5kIiwibGFzdEluZGV4IiwiaW5kZXgiLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwiYXV0b2xpbmsiLCJ1cmwiLCJfYmFja3BlZGFsIiwiaW5saW5lVGV4dCIsIkIiLCJfcGFyYWdyYXBoIiwiX2xhYmVsIiwiX3RpdGxlIiwidyIsImJ1bGxldCIsImxpc3RJdGVtU3RhcnQiLCJfdGFnIiwiX2NvbW1lbnQiLCJub3JtYWwiLCJyZWZsaW5rU2VhcmNoIiwiUCIsInYiLCJjaGFyQ29kZUF0IiwicmFuZG9tIiwiX3VjX3B1bmN0dWF0aW9uIiwiX3B1bmN0dWF0aW9uIiwiYmxvY2tTa2lwIiwiZXNjYXBlZEVtU3QiLCJfc2NoZW1lIiwiX2VtYWlsIiwiX2F0dHJpYnV0ZSIsIl9ocmVmIiwic3Ryb25nIiwibWlkZGxlIiwiZW5kQXN0IiwiZW5kVW5kIiwiZW0iLCJfZXh0ZW5kZWRfZW1haWwiLCJ5IiwibGlua3MiLCJjcmVhdGUiLCJpbmxpbmVRdWV1ZSIsImxleCIsImxleElubGluZSIsInNyYyIsInN0YXJ0QmxvY2siLCJmb3JFYWNoIiwiRXJyb3IiLCJrZXlzIiwiaW5jbHVkZXMiLCJsYXN0SW5kZXhPZiIsInN0YXJ0SW5saW5lIiwiZ2V0IiwiXyIsInNsdWciLCJsaXN0aXRlbSIsImNoZWNrYm94IiwidGFibGVyb3ciLCJ0YWJsZWNlbGwiLCJpbWFnZSIsInoiLCIkIiwic2VlbiIsInNlcmlhbGl6ZSIsImdldE5leHRTYWZlU2x1ZyIsImRyeXJ1biIsIlMiLCJ0ZXh0UmVuZGVyZXIiLCJzbHVnZ2VyIiwicGFyc2UiLCJwYXJzZUlubGluZSIsInJlbmRlcmVycyIsInBhcnNlciIsImVzY2FwZWQiLCJ1bnNoaWZ0IiwiVCIsInByZXByb2Nlc3MiLCJwb3N0cHJvY2VzcyIsIlIiLCJJIiwibWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsInRoZW4iLCJhbGwiLCJjYXRjaCIsInBhc3NUaHJvdWdoSG9va3MiLCJTZXQiLCJzZXRPcHRpb25zIiwiZ2V0RGVmYXVsdHMiLCJ1c2UiLCJjaGlsZFRva2VucyIsImxldmVsIiwiaGFzIiwiY29uY2F0IiwiUGFyc2VyIiwiUmVuZGVyZXIiLCJUZXh0UmVuZGVyZXIiLCJMZXhlciIsIlRva2VuaXplciIsIlNsdWdnZXIiLCJIb29rcyIsIkwiLCJVIiwiUSIsIk0iLCJOIiwiSCIsIlgiLCJtYXJrZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxVQUFTQSxDQUFDLEVBQUNDLENBQUMsRUFBQztFQUFDLFFBQVEsV0FBZ0IsdUJBQVBDLE9BQU8sTUFBRSxXQUFXLElBQUUsT0FB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LENBQUNTLElBQUksQ0FBQ3ZDLENBQUMsQ0FBQyxHQUFDLFdBQVcsS0FBR08sQ0FBQyxJQUFFLDBDQUEwQyxDQUFDaUMsSUFBSSxDQUFDakMsQ0FBQyxDQUFDLEdBQUNzQixDQUFDLENBQUM3QixDQUFDLEVBQUNDLENBQUMsQ0FBQyxHQUFDLEtBQUssQ0FBQztJQUFBLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDLENBQUMsSUFBRUMsQ0FBQyxJQUFFRCxDQUFDLElBQUUsUUFBUSxJQUFFLE9BQU9BLENBQUMsQ0FBQ1EsTUFBTSxFQUFDLE9BQU9DLENBQUMsS0FBR1QsQ0FBQyxHQUFDUyxDQUFDLENBQUMsRUFBQ0YsQ0FBQyxHQUFDLENBQUMsRUFBQyxZQUFVO01BQUMsT0FBT0EsQ0FBQyxJQUFFUCxDQUFDLENBQUNRLE1BQU0sR0FBQztRQUFDaUMsSUFBSSxFQUFDLENBQUM7TUFBQyxDQUFDLEdBQUM7UUFBQ0EsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUFDQyxLQUFLLEVBQUMxQyxDQUFDLENBQUNPLENBQUMsRUFBRTtNQUFDLENBQUM7SUFBQSxDQUFDO0lBQUMsTUFBTSxJQUFJYSxTQUFTLENBQUMsdUlBQXVJLENBQUM7RUFBQTtFQUFDLFNBQVNwQixDQUFDLEdBQUU7SUFBQyxPQUFNO01BQUMyQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO01BQUNDLE9BQU8sRUFBQyxJQUFJO01BQUNDLE1BQU0sRUFBQyxDQUFDLENBQUM7TUFBQ0MsVUFBVSxFQUFDLElBQUk7TUFBQ0MsR0FBRyxFQUFDLENBQUMsQ0FBQztNQUFDQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO01BQUNDLFlBQVksRUFBQyxFQUFFO01BQUNDLFNBQVMsRUFBQyxJQUFJO01BQUNDLEtBQUssRUFBQyxJQUFJO01BQUNDLFVBQVUsRUFBQyxXQUFXO01BQUNDLE1BQU0sRUFBQyxDQUFDLENBQUM7TUFBQ0MsUUFBUSxFQUFDLENBQUMsQ0FBQztNQUFDQyxRQUFRLEVBQUMsSUFBSTtNQUFDQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO01BQUNDLFNBQVMsRUFBQyxJQUFJ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QUMsQ0FBQzJHLE9BQU8sR0FBQ3BCLENBQUMsRUFBQ3ZGLENBQUMsQ0FBQ3dPLEtBQUssR0FBQ3VDLENBQUMsRUFBQy9RLENBQUMsQ0FBQ3lPLFdBQVcsR0FBQ3FDLENBQUMsRUFBQzlRLENBQUMsQ0FBQzJPLE1BQU0sR0FBQ3FDLENBQUMsRUFBQ2hSLENBQUMsQ0FBQzZQLFVBQVUsR0FBQ2MsQ0FBQyxFQUFDM1EsQ0FBQyxDQUFDK1AsR0FBRyxHQUFDYSxDQUFDLEVBQUM1USxDQUFDLENBQUN3RCxVQUFVLEdBQUNxTixDQUFDO0FBQUEsQ0FBQyxDQUFDLEMiLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG1hcmtlZCB2NS4wLjQgLSBhIG1hcmtkb3duIHBhcnNlclxuICogQ29weXJpZ2h0IChjKSAyMDExLTIwMjMsIENocmlzdG9waGVyIEplZmZyZXkuIChNSVQgTGljZW5zZWQpXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbWFya2VkanMvbWFya2VkXG4gKi9cbiFmdW5jdGlvbihlLHUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP3UoZXhwb3J0cyk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXCJleHBvcnRzXCJdLHUpOnUoKGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczplfHxzZWxmKS5tYXJrZWQ9e30pfSh0aGlzLGZ1bmN0aW9uKHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGkoZSx1KXtmb3IodmFyIHQ9MDt0PHUubGVuZ3RoO3QrKyl7dmFyIG49dVt0XTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsZnVuY3Rpb24oZSl7ZT1mdW5jdGlvbihlLHUpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgdD1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwPT09dClyZXR1cm4oXCJzdHJpbmdcIj09PXU/U3RyaW5nOk51bWJlcikoZSk7dD10LmNhbGwoZSx1fHxcImRlZmF1bHRcIik7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfShlLFwic3RyaW5nXCIpO3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiBlP2U6U3RyaW5nKGUpfShuLmtleSksbil9fWZ1bmN0aW9uIEEoKXtyZXR1cm4oQT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdT0xO3U8YXJndW1lbnRzLmxlbmd0aDt1Kyspe3ZhciB0LG49YXJndW1lbnRzW3VdO2Zvcih0IGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCkmJihlW3RdPW5bdF0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHMoZSx1KXsobnVsbD09dXx8dT5lLmxlbmd0aCkmJih1PWUubGVuZ3RoKTtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheSh1KTt0PHU7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn1mdW5jdGlvbiBEKGUsdSl7dmFyIHQsbj1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG4pcmV0dXJuKG49bi5jYWxsKGUpKS5uZXh0LmJpbmQobik7aWYoQXJyYXkuaXNBcnJheShlKXx8KG49ZnVuY3Rpb24oZSx1KXt2YXIgdDtpZihlKXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP3MoZSx1KTpcIk1hcFwiPT09KHQ9XCJPYmplY3RcIj09PSh0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOnQpfHxcIlNldFwiPT09dD9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT10fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KT9zKGUsdSk6dm9pZCAwfShlKSl8fHUmJmUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm4gbiYmKGU9biksdD0wLGZ1bmN0aW9uKCl7cmV0dXJuIHQ+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW3QrK119fTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9ZnVuY3Rpb24gZSgpe3JldHVybnthc3luYzohMSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRlclByZWZpeDpcIlwiLGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDpcImxhbmd1YWdlLVwiLG1hbmdsZTohMCxwZWRhbnRpYzohMSxyZW5kZXJlcjpudWxsLHNhbml0aXplOiExLHNhbml0aXplcjpudWxsLHNpbGVudDohMSxzbWFydHlwYW50czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51bGwseGh0bWw6ITF9fXIuZGVmYXVsdHM9ZSgpO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHVbZV19dmFyIG49L1smPD5cIiddLyxhPW5ldyBSZWdFeHAobi5zb3VyY2UsXCJnXCIpLGw9L1s8PlwiJ118Jig/ISgjXFxkezEsN318I1tYeF1bYS1mQS1GMC05XXsxLDZ9fFxcdyspOykvLG89bmV3IFJlZ0V4cChsLnNvdXJjZSxcImdcIiksdT17XCImXCI6XCImYW1wO1wiLFwiPFwiOlwiJmx0O1wiLFwiPlwiOlwiJmd0O1wiLCdcIic6XCImcXVvdDtcIixcIidcIjpcIiYjMzk7XCJ9O2Z1bmN0aW9uIGQoZSx1KXtpZih1KXtpZihuLnRlc3QoZSkpcmV0dXJuIGUucmVwbGFjZShhLHQpfWVsc2UgaWYobC50ZXN0KGUpKXJldHVybiBlLnJlcGxhY2Uobyx0KTtyZXR1cm4gZX12YXIgYz0vJigjKD86XFxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/OlxcdyspKTs/L2dpO2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGUucmVwbGFjZShjLGZ1bmN0aW9uKGUsdSl7cmV0dXJuXCJjb2xvblwiPT09KHU9dS50b0xvd2VyQ2FzZSgpKT9cIjpcIjpcIiNcIj09PXUuY2hhckF0KDApP1wieFwiPT09dS5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh1LnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK3Uuc3Vic3RyaW5nKDEpKTpcIlwifSl9dmFyIHA9LyhefFteXFxbXSlcXF4vZztmdW5jdGlvbiBoKHQsZSl7dD1cInN0cmluZ1wiPT10eXBlb2YgdD90OnQuc291cmNlLGU9ZXx8XCJcIjt2YXIgbj17cmVwbGFjZTpmdW5jdGlvbihlLHUpe3JldHVybiB1PSh1PXUuc291cmNlfHx1KS5yZXBsYWNlKHAsXCIkMVwiKSx0PXQucmVwbGFjZShlLHUpLG59LGdldFJlZ2V4OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBSZWdFeHAodCxlKX19O3JldHVybiBufXZhciBGPS9bXlxcdzpdL2csaj0vXiR8XlthLXpdW2EtejAtOSsuLV0qOnxeWz8jXS9pO2Z1bmN0aW9uIGYoZSx1LHQpe2lmKGUpe3RyeXtuPWRlY29kZVVSSUNvbXBvbmVudChtKHQpKS5yZXBsYWNlKEYsXCJcIikudG9Mb3dlckNhc2UoKX1jYXRjaChlKXtyZXR1cm4gbnVsbH1pZigwPT09bi5pbmRleE9mKFwiamF2YXNjcmlwdDpcIil8fDA9PT1uLmluZGV4T2YoXCJ2YnNjcmlwdDpcIil8fDA9PT1uLmluZGV4T2YoXCJkYXRhOlwiKSlyZXR1cm4gbnVsbH12YXIgbjt1JiYhai50ZXN0KHQpJiYoZT10LGdbXCIgXCIrKG49dSldfHwoWi50ZXN0KG4pP2dbXCIgXCIrbl09bitcIi9cIjpnW1wiIFwiK25dPUUobixcIi9cIiwhMCkpLHU9LTE9PT0obj1nW1wiIFwiK25dKS5pbmRleE9mKFwiOlwiKSx0PVwiLy9cIj09PWUuc3Vic3RyaW5nKDAsMik/dT9lOm4ucmVwbGFjZShPLFwiJDFcIikrZTpcIi9cIj09PWUuY2hhckF0KDApP3U/ZTpuLnJlcGxhY2UocSxcIiQxXCIpK2U6bitlKTt0cnl7dD1lbmNvZGVVUkkodCkucmVwbGFjZSgvJTI1L2csXCIlXCIpfWNhdGNoKGUpe3JldHVybiBudWxsfXJldHVybiB0fXZhciBnPXt9LFo9L15bXjpdKzpcXC8qW14vXSokLyxPPS9eKFteOl0rOilbXFxzXFxTXSokLyxxPS9eKFteOl0rOlxcLypbXi9dKilbXFxzXFxTXSokLzt2YXIgaz17ZXhlYzpmdW5jdGlvbigpe319O2Z1bmN0aW9uIEMoZSx1KXt2YXIgdD1lLnJlcGxhY2UoL1xcfC9nLGZ1bmN0aW9uKGUsdSx0KXtmb3IodmFyIG49ITEscj11OzA8PS0tciYmXCJcXFxcXCI9PT10W3JdOyluPSFuO3JldHVybiBuP1wifFwiOlwiIHxcIn0pLnNwbGl0KC8gXFx8Lyksbj0wO2lmKHRbMF0udHJpbSgpfHx0LnNoaWZ0KCksMDx0Lmxlbmd0aCYmIXRbdC5sZW5ndGgtMV0udHJpbSgpJiZ0LnBvcCgpLHQubGVuZ3RoPnUpdC5zcGxpY2UodSk7ZWxzZSBmb3IoO3QubGVuZ3RoPHU7KXQucHVzaChcIlwiKTtmb3IoO248dC5sZW5ndGg7bisrKXRbbl09dFtuXS50cmltKCkucmVwbGFjZSgvXFxcXFxcfC9nLFwifFwiKTtyZXR1cm4gdH1mdW5jdGlvbiBFKGUsdSx0KXt2YXIgbj1lLmxlbmd0aDtpZigwPT09bilyZXR1cm5cIlwiO2Zvcih2YXIgcj0wO3I8bjspe3ZhciBpPWUuY2hhckF0KG4tci0xKTtpZigoaSE9PXV8fHQpJiYoaT09PXV8fCF0KSlicmVhaztyKyt9cmV0dXJuIGUuc2xpY2UoMCxuLXIpfWZ1bmN0aW9uIHgoZSx1LHQsbil7dmFyIHI9dS5ocmVmLHU9dS50aXRsZT9kKHUudGl0bGUpOm51bGwsaT1lWzFdLnJlcGxhY2UoL1xcXFwoW1xcW1xcXV0pL2csXCIkMVwiKTtyZXR1cm5cIiFcIiE9PWVbMF0uY2hhckF0KDApPyhuLnN0YXRlLmluTGluaz0hMCxlPXt0eXBlOlwibGlua1wiLHJhdzp0LGhyZWY6cix0aXRsZTp1LHRleHQ6aSx0b2tlbnM6bi5pbmxpbmVUb2tlbnMoaSl9LG4uc3RhdGUuaW5MaW5rPSExLGUpOnt0eXBlOlwiaW1hZ2VcIixyYXc6dCxocmVmOnIsdGl0bGU6dSx0ZXh0OmQoaSl9fXZhciBiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLm9wdGlvbnM9ZXx8ci5kZWZhdWx0c312YXIgdT1lLnByb3RvdHlwZTtyZXR1cm4gdS5zcGFjZT1mdW5jdGlvbihlKXtlPXRoaXMucnVsZXMuYmxvY2submV3bGluZS5leGVjKGUpO2lmKGUmJjA8ZVswXS5sZW5ndGgpcmV0dXJue3R5cGU6XCJzcGFjZVwiLHJhdzplWzBdfX0sdS5jb2RlPWZ1bmN0aW9uKGUpe3ZhciB1LGU9dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoZSk7aWYoZSlyZXR1cm4gdT1lWzBdLnJlcGxhY2UoL14gezEsNH0vZ20sXCJcIikse3R5cGU6XCJjb2RlXCIscmF3OmVbMF0sY29kZUJsb2NrU3R5bGU6XCJpbmRlbnRlZFwiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3U6RSh1LFwiXFxuXCIpfX0sdS5mZW5jZXM9ZnVuY3Rpb24oZSl7dmFyIHUsdCxuLHIsZT10aGlzLnJ1bGVzLmJsb2NrLmZlbmNlcy5leGVjKGUpO2lmKGUpcmV0dXJuIHU9ZVswXSx0PXUsbj1lWzNdfHxcIlwiLHQ9bnVsbD09PSh0PXUubWF0Y2goL14oXFxzKykoPzpgYGApLykpP246KHI9dFsxXSxuLnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbihlKXt2YXIgdT1lLm1hdGNoKC9eXFxzKy8pO3JldHVybiBudWxsIT09dSYmdVswXS5sZW5ndGg+PXIubGVuZ3RoP2Uuc2xpY2Uoci5sZW5ndGgpOmV9KS5qb2luKFwiXFxuXCIpKSx7dHlwZTpcImNvZGVcIixyYXc6dSxsYW5nOmVbMl0mJmVbMl0udHJpbSgpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsXCIkMVwiKSx0ZXh0OnR9fSx1LmhlYWRpbmc9ZnVuY3Rpb24oZSl7dmFyIHUsdCxlPXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKGUpO2lmKGUpcmV0dXJuIHU9ZVsyXS50cmltKCksLyMkLy50ZXN0KHUpJiYodD1FKHUsXCIjXCIpLCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJnQmJiEvICQvLnRlc3QodCl8fCh1PXQudHJpbSgpKSkse3R5cGU6XCJoZWFkaW5nXCIscmF3OmVbMF0sZGVwdGg6ZVsxXS5sZW5ndGgsdGV4dDp1LHRva2Vuczp0aGlzLmxleGVyLmlubGluZSh1KX19LHUuaHI9ZnVuY3Rpb24oZSl7ZT10aGlzLnJ1bGVzLmJsb2NrLmhyLmV4ZWMoZSk7aWYoZSlyZXR1cm57dHlwZTpcImhyXCIscmF3OmVbMF19fSx1LmJsb2NrcXVvdGU9ZnVuY3Rpb24oZSl7dmFyIHUsdCxuLGU9dGhpcy5ydWxlcy5ibG9jay5ibG9ja3F1b3RlLmV4ZWMoZSk7aWYoZSlyZXR1cm4gdT1lWzBdLnJlcGxhY2UoL14gKj5bIFxcdF0/L2dtLFwiXCIpLHQ9dGhpcy5sZXhlci5zdGF0ZS50b3AsdGhpcy5sZXhlci5zdGF0ZS50b3A9ITAsbj10aGlzLmxleGVyLmJsb2NrVG9rZW5zKHUpLHRoaXMubGV4ZXIuc3RhdGUudG9wPXQse3R5cGU6XCJibG9ja3F1b3RlXCIscmF3OmVbMF0sdG9rZW5zOm4sdGV4dDp1fX0sdS5saXN0PWZ1bmN0aW9uKGUpe3ZhciB1PXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKGUpO2lmKHUpe3ZhciB0LG4scixpLHMsYSxsLG8sRCxjLHAsaD0xPChmPXVbMV0udHJpbSgpKS5sZW5ndGgsRj17dHlwZTpcImxpc3RcIixyYXc6XCJcIixvcmRlcmVkOmgsc3RhcnQ6aD8rZi5zbGljZSgwLC0xKTpcIlwiLGxvb3NlOiExLGl0ZW1zOltdfSxmPWg/XCJcXFxcZHsxLDl9XFxcXFwiK2Yuc2xpY2UoLTEpOlwiXFxcXFwiK2Y7dGhpcy5vcHRpb25zLnBlZGFudGljJiYoZj1oP2Y6XCJbKistXVwiKTtmb3IodmFyIGc9bmV3IFJlZ0V4cChcIl4oIHswLDN9XCIrZitcIikoKD86W1xcdCBdW15cXFxcbl0qKT8oPzpcXFxcbnwkKSlcIik7ZSYmKHA9ITEsdT1nLmV4ZWMoZSkpJiYhdGhpcy5ydWxlcy5ibG9jay5oci50ZXN0KGUpOyl7aWYodD11WzBdLGU9ZS5zdWJzdHJpbmcodC5sZW5ndGgpLGw9dVsyXS5zcGxpdChcIlxcblwiLDEpWzBdLnJlcGxhY2UoL15cXHQrLyxmdW5jdGlvbihlKXtyZXR1cm5cIiBcIi5yZXBlYXQoMyplLmxlbmd0aCl9KSxvPWUuc3BsaXQoXCJcXG5cIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWM/KGk9MixjPWwudHJpbUxlZnQoKSk6KGk9dVsyXS5zZWFyY2goL1teIF0vKSxjPWwuc2xpY2UoaT00PGk/MTppKSxpKz11WzFdLmxlbmd0aCkscz0hMSwhbCYmL14gKiQvLnRlc3QobykmJih0Kz1vK1wiXFxuXCIsZT1lLnN1YnN0cmluZyhvLmxlbmd0aCsxKSxwPSEwKSwhcClmb3IodmFyIEE9bmV3IFJlZ0V4cChcIl4gezAsXCIrTWF0aC5taW4oMyxpLTEpK1wifSg/OlsqKy1dfFxcXFxkezEsOX1bLildKSgoPzpbIFxcdF1bXlxcXFxuXSopPyg/OlxcXFxufCQpKVwiKSxkPW5ldyBSZWdFeHAoXCJeIHswLFwiK01hdGgubWluKDMsaS0xKStcIn0oKD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFxcXCogKil7Myx9KSg/OlxcXFxuK3wkKVwiKSxrPW5ldyBSZWdFeHAoXCJeIHswLFwiK01hdGgubWluKDMsaS0xKStcIn0oPzpgYGB8fn5+KVwiKSxDPW5ldyBSZWdFeHAoXCJeIHswLFwiK01hdGgubWluKDMsaS0xKStcIn0jXCIpO2UmJihvPUQ9ZS5zcGxpdChcIlxcblwiLDEpWzBdLHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmKG89by5yZXBsYWNlKC9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csXCIgIFwiKSksIWsudGVzdChvKSkmJiFDLnRlc3QobykmJiFBLnRlc3QobykmJiFkLnRlc3QoZSk7KXtpZihvLnNlYXJjaCgvW14gXS8pPj1pfHwhby50cmltKCkpYys9XCJcXG5cIitvLnNsaWNlKGkpO2Vsc2V7aWYocylicmVhaztpZig0PD1sLnNlYXJjaCgvW14gXS8pKWJyZWFrO2lmKGsudGVzdChsKSlicmVhaztpZihDLnRlc3QobCkpYnJlYWs7aWYoZC50ZXN0KGwpKWJyZWFrO2MrPVwiXFxuXCIrb31zfHxvLnRyaW0oKXx8KHM9ITApLHQrPUQrXCJcXG5cIixlPWUuc3Vic3RyaW5nKEQubGVuZ3RoKzEpLGw9by5zbGljZShpKX1GLmxvb3NlfHwoYT9GLmxvb3NlPSEwOi9cXG4gKlxcbiAqJC8udGVzdCh0KSYmKGE9ITApKSx0aGlzLm9wdGlvbnMuZ2ZtJiYobj0vXlxcW1sgeFhdXFxdIC8uZXhlYyhjKSkmJihyPVwiWyBdIFwiIT09blswXSxjPWMucmVwbGFjZSgvXlxcW1sgeFhdXFxdICsvLFwiXCIpKSxGLml0ZW1zLnB1c2goe3R5cGU6XCJsaXN0X2l0ZW1cIixyYXc6dCx0YXNrOiEhbixjaGVja2VkOnIsbG9vc2U6ITEsdGV4dDpjfSksRi5yYXcrPXR9Ri5pdGVtc1tGLml0ZW1zLmxlbmd0aC0xXS5yYXc9dC50cmltUmlnaHQoKSxGLml0ZW1zW0YuaXRlbXMubGVuZ3RoLTFdLnRleHQ9Yy50cmltUmlnaHQoKSxGLnJhdz1GLnJhdy50cmltUmlnaHQoKTtmb3IodmFyIEUsbT1GLml0ZW1zLmxlbmd0aCx4PTA7eDxtO3grKyl0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxGLml0ZW1zW3hdLnRva2Vucz10aGlzLmxleGVyLmJsb2NrVG9rZW5zKEYuaXRlbXNbeF0udGV4dCxbXSksRi5sb29zZXx8KEU9MDwoRT1GLml0ZW1zW3hdLnRva2Vucy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuXCJzcGFjZVwiPT09ZS50eXBlfSkpLmxlbmd0aCYmRS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybi9cXG4uKlxcbi8udGVzdChlLnJhdyl9KSxGLmxvb3NlPUUpO2lmKEYubG9vc2UpZm9yKHg9MDt4PG07eCsrKUYuaXRlbXNbeF0ubG9vc2U9ITA7cmV0dXJuIEZ9fSx1Lmh0bWw9ZnVuY3Rpb24oZSl7dmFyIHUsZT10aGlzLnJ1bGVzLmJsb2NrLmh0bWwuZXhlYyhlKTtpZihlKXJldHVybiB1PXt0eXBlOlwiaHRtbFwiLGJsb2NrOiEwLHJhdzplWzBdLHByZTohdGhpcy5vcHRpb25zLnNhbml0aXplciYmKFwicHJlXCI9PT1lWzFdfHxcInNjcmlwdFwiPT09ZVsxXXx8XCJzdHlsZVwiPT09ZVsxXSksdGV4dDplWzBdfSx0aGlzLm9wdGlvbnMuc2FuaXRpemUmJihlPXRoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihlWzBdKTpkKGVbMF0pLHUudHlwZT1cInBhcmFncmFwaFwiLHUudGV4dD1lLHUudG9rZW5zPXRoaXMubGV4ZXIuaW5saW5lKGUpKSx1fSx1LmRlZj1mdW5jdGlvbihlKXt2YXIgdSx0LG4sZT10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKGUpO2lmKGUpcmV0dXJuIHU9ZVsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZyxcIiBcIiksdD1lWzJdP2VbMl0ucmVwbGFjZSgvXjwoLiopPiQvLFwiJDFcIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcyxcIiQxXCIpOlwiXCIsbj1lWzNdJiZlWzNdLnN1YnN0cmluZygxLGVbM10ubGVuZ3RoLTEpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsXCIkMVwiKSx7dHlwZTpcImRlZlwiLHRhZzp1LHJhdzplWzBdLGhyZWY6dCx0aXRsZTpufX0sdS50YWJsZT1mdW5jdGlvbihlKXtlPXRoaXMucnVsZXMuYmxvY2sudGFibGUuZXhlYyhlKTtpZihlKXt2YXIgdT17dHlwZTpcInRhYmxlXCIsaGVhZGVyOkMoZVsxXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybnt0ZXh0OmV9fSksYWxpZ246ZVsyXS5yZXBsYWNlKC9eICp8XFx8ICokL2csXCJcIikuc3BsaXQoLyAqXFx8ICovKSxyb3dzOmVbM10mJmVbM10udHJpbSgpP2VbM10ucmVwbGFjZSgvXFxuWyBcXHRdKiQvLFwiXCIpLnNwbGl0KFwiXFxuXCIpOltdfTtpZih1LmhlYWRlci5sZW5ndGg9PT11LmFsaWduLmxlbmd0aCl7dS5yYXc9ZVswXTtmb3IodmFyIHQsbixyLGk9dS5hbGlnbi5sZW5ndGgscz0wO3M8aTtzKyspL14gKi0rOiAqJC8udGVzdCh1LmFsaWduW3NdKT91LmFsaWduW3NdPVwicmlnaHRcIjovXiAqOi0rOiAqJC8udGVzdCh1LmFsaWduW3NdKT91LmFsaWduW3NdPVwiY2VudGVyXCI6L14gKjotKyAqJC8udGVzdCh1LmFsaWduW3NdKT91LmFsaWduW3NdPVwibGVmdFwiOnUuYWxpZ25bc109bnVsbDtmb3IoaT11LnJvd3MubGVuZ3RoLHM9MDtzPGk7cysrKXUucm93c1tzXT1DKHUucm93c1tzXSx1LmhlYWRlci5sZW5ndGgpLm1hcChmdW5jdGlvbihlKXtyZXR1cm57dGV4dDplfX0pO2ZvcihpPXUuaGVhZGVyLmxlbmd0aCx0PTA7dDxpO3QrKyl1LmhlYWRlclt0XS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUodS5oZWFkZXJbdF0udGV4dCk7Zm9yKGk9dS5yb3dzLmxlbmd0aCx0PTA7dDxpO3QrKylmb3Iocj11LnJvd3NbdF0sbj0wO248ci5sZW5ndGg7bisrKXJbbl0udG9rZW5zPXRoaXMubGV4ZXIuaW5saW5lKHJbbl0udGV4dCk7cmV0dXJuIHV9fX0sdS5saGVhZGluZz1mdW5jdGlvbihlKXtlPXRoaXMucnVsZXMuYmxvY2subGhlYWRpbmcuZXhlYyhlKTtpZihlKXJldHVybnt0eXBlOlwiaGVhZGluZ1wiLHJhdzplWzBdLGRlcHRoOlwiPVwiPT09ZVsyXS5jaGFyQXQoMCk/MToyLHRleHQ6ZVsxXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZVsxXSl9fSx1LnBhcmFncmFwaD1mdW5jdGlvbihlKXt2YXIgdSxlPXRoaXMucnVsZXMuYmxvY2sucGFyYWdyYXBoLmV4ZWMoZSk7aWYoZSlyZXR1cm4gdT1cIlxcblwiPT09ZVsxXS5jaGFyQXQoZVsxXS5sZW5ndGgtMSk/ZVsxXS5zbGljZSgwLC0xKTplWzFdLHt0eXBlOlwicGFyYWdyYXBoXCIscmF3OmVbMF0sdGV4dDp1LHRva2Vuczp0aGlzLmxleGVyLmlubGluZSh1KX19LHUudGV4dD1mdW5jdGlvbihlKXtlPXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKGUpO2lmKGUpcmV0dXJue3R5cGU6XCJ0ZXh0XCIscmF3OmVbMF0sdGV4dDplWzBdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShlWzBdKX19LHUuZXNjYXBlPWZ1bmN0aW9uKGUpe2U9dGhpcy5ydWxlcy5pbmxpbmUuZXNjYXBlLmV4ZWMoZSk7aWYoZSlyZXR1cm57dHlwZTpcImVzY2FwZVwiLHJhdzplWzBdLHRleHQ6ZChlWzFdKX19LHUudGFnPWZ1bmN0aW9uKGUpe2U9dGhpcy5ydWxlcy5pbmxpbmUudGFnLmV4ZWMoZSk7aWYoZSlyZXR1cm4hdGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePGEgL2kudGVzdChlWzBdKT90aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148XFwvYT4vaS50ZXN0KGVbMF0pJiYodGhpcy5sZXhlci5zdGF0ZS5pbkxpbms9ITEpLCF0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcXHN8PikvaS50ZXN0KGVbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePFxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcXHN8PikvaS50ZXN0KGVbMF0pJiYodGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSExKSx7dHlwZTp0aGlzLm9wdGlvbnMuc2FuaXRpemU/XCJ0ZXh0XCI6XCJodG1sXCIscmF3OmVbMF0saW5MaW5rOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rLGluUmF3QmxvY2s6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrLGJsb2NrOiExLHRleHQ6dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihlWzBdKTpkKGVbMF0pOmVbMF19fSx1Lmxpbms9ZnVuY3Rpb24oZSl7ZT10aGlzLnJ1bGVzLmlubGluZS5saW5rLmV4ZWMoZSk7aWYoZSl7dmFyIHU9ZVsyXS50cmltKCk7aWYoIXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmL148Ly50ZXN0KHUpKXtpZighLz4kLy50ZXN0KHUpKXJldHVybjt2YXIgdD1FKHUuc2xpY2UoMCwtMSksXCJcXFxcXCIpO2lmKCh1Lmxlbmd0aC10Lmxlbmd0aCklMj09MClyZXR1cm59ZWxzZXt0PWZ1bmN0aW9uKGUsdSl7aWYoLTEhPT1lLmluZGV4T2YodVsxXSkpZm9yKHZhciB0PWUubGVuZ3RoLG49MCxyPTA7cjx0O3IrKylpZihcIlxcXFxcIj09PWVbcl0pcisrO2Vsc2UgaWYoZVtyXT09PXVbMF0pbisrO2Vsc2UgaWYoZVtyXT09PXVbMV0mJi0tbjwwKXJldHVybiByO3JldHVybi0xfShlWzJdLFwiKClcIik7LTE8dCYmKHI9KDA9PT1lWzBdLmluZGV4T2YoXCIhXCIpPzU6NCkrZVsxXS5sZW5ndGgrdCxlWzJdPWVbMl0uc3Vic3RyaW5nKDAsdCksZVswXT1lWzBdLnN1YnN0cmluZygwLHIpLnRyaW0oKSxlWzNdPVwiXCIpfXZhciBuLHQ9ZVsyXSxyPVwiXCI7cmV0dXJuIHRoaXMub3B0aW9ucy5wZWRhbnRpYz8obj0vXihbXidcIl0qW15cXHNdKVxccysoWydcIl0pKC4qKVxcMi8uZXhlYyh0KSkmJih0PW5bMV0scj1uWzNdKTpyPWVbM10/ZVszXS5zbGljZSgxLC0xKTpcIlwiLHQ9dC50cmltKCkseChlLHtocmVmOih0PS9ePC8udGVzdCh0KT90aGlzLm9wdGlvbnMucGVkYW50aWMmJiEvPiQvLnRlc3QodSk/dC5zbGljZSgxKTp0LnNsaWNlKDEsLTEpOnQpJiZ0LnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsXCIkMVwiKSx0aXRsZTpyJiZyLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsXCIkMVwiKX0sZVswXSx0aGlzLmxleGVyKX19LHUucmVmbGluaz1mdW5jdGlvbihlLHUpe3ZhciB0O2lmKHQ9KHQ9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKGUpKXx8dGhpcy5ydWxlcy5pbmxpbmUubm9saW5rLmV4ZWMoZSkpcmV0dXJuKGU9dVsoZT0odFsyXXx8dFsxXSkucmVwbGFjZSgvXFxzKy9nLFwiIFwiKSkudG9Mb3dlckNhc2UoKV0pP3godCxlLHRbMF0sdGhpcy5sZXhlcik6e3R5cGU6XCJ0ZXh0XCIscmF3OnU9dFswXS5jaGFyQXQoMCksdGV4dDp1fX0sdS5lbVN0cm9uZz1mdW5jdGlvbihlLHUsdCl7dm9pZCAwPT09dCYmKHQ9XCJcIik7dmFyIG49dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcubERlbGltLmV4ZWMoZSk7aWYobiYmKCFuWzNdfHwhdC5tYXRjaCgvKD86WzAtOUEtWmEtelxceEFBXFx4QjJcXHhCM1xceEI1XFx4QjlcXHhCQVxceEJDLVxceEJFXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjAtXFx1MDU4OFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NjAtXFx1MDY2OVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDMC1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDg3MC1cXHUwODg3XFx1MDg4OS1cXHUwODhFXFx1MDhBMC1cXHUwOEM5XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlFNi1cXHUwOUYxXFx1MDlGNC1cXHUwOUY5XFx1MDlGQ1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNjYtXFx1MEE2RlxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBBRTYtXFx1MEFFRlxcdTBBRjlcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI2Ni1cXHUwQjZGXFx1MEI3MS1cXHUwQjc3XFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEJFNi1cXHUwQkYyXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNURcXHUwQzYwXFx1MEM2MVxcdTBDNjYtXFx1MEM2RlxcdTBDNzgtXFx1MEM3RVxcdTBDODBcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwNC1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDU4LVxcdTBENjFcXHUwRDY2LVxcdTBENzhcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MERFNi1cXHUwREVGXFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg2LVxcdTBFOEFcXHUwRThDLVxcdTBFQTNcXHUwRUE1XFx1MEVBNy1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFRDAtXFx1MEVEOVxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjIwLVxcdTBGMzNcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGLVxcdTEwNDlcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTA5MC1cXHUxMDk5XFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNjktXFx1MTM3Q1xcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcxMVxcdTE3MUYtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTdFMC1cXHUxN0U5XFx1MTdGMC1cXHUxN0Y5XFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc4XFx1MTg4MC1cXHUxODg0XFx1MTg4Ny1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NDYtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTE5RDAtXFx1MTlEQVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBODAtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNENcXHUxQjUwLVxcdTFCNTlcXHUxQjgzLVxcdTFCQTBcXHUxQkFFLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzQwLVxcdTFDNDlcXHUxQzRELVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQzkwLVxcdTFDQkFcXHUxQ0JELVxcdTFDQkZcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjNcXHUxQ0Y1XFx1MUNGNlxcdTFDRkFcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MFxcdTIwNzFcXHUyMDc0LVxcdTIwNzlcXHUyMDdGLVxcdTIwODlcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE1MC1cXHUyMTg5XFx1MjQ2MC1cXHUyNDlCXFx1MjRFQS1cXHUyNEZGXFx1Mjc3Ni1cXHUyNzkzXFx1MkMwMC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyQ0ZEXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkUyRlxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxOTItXFx1MzE5NVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTMyMjAtXFx1MzIyOVxcdTMyNDgtXFx1MzI0RlxcdTMyNTEtXFx1MzI1RlxcdTMyODAtXFx1MzI4OVxcdTMyQjEtXFx1MzJCRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdDQVxcdUE3RDBcXHVBN0QxXFx1QTdEM1xcdUE3RDUtXFx1QTdEOVxcdUE3RjItXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4MzAtXFx1QTgzNVxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RDAtXFx1QThEOVxcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QThGRVxcdUE5MDAtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0YtXFx1QTlEOVxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNTAtXFx1QUE1OVxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2OVxcdUFCNzAtXFx1QUJFMlxcdUFCRjAtXFx1QUJGOVxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdUREMDctXFx1REQzM1xcdURENDAtXFx1REQ3OFxcdUREOEFcXHVERDhCXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REVFMS1cXHVERUZCXFx1REYwMC1cXHVERjIzXFx1REYyRC1cXHVERjRBXFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdURDQTAtXFx1RENBOVxcdURDQjAtXFx1RENEM1xcdURDRDgtXFx1RENGQlxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURENzAtXFx1REQ3QVxcdUREN0MtXFx1REQ4QVxcdUREOEMtXFx1REQ5MlxcdUREOTRcXHVERDk1XFx1REQ5Ny1cXHVEREExXFx1RERBMy1cXHVEREIxXFx1RERCMy1cXHVEREI5XFx1RERCQlxcdUREQkNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjdcXHVERjgwLVxcdURGODVcXHVERjg3LVxcdURGQjBcXHVERkIyLVxcdURGQkFdfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNTgtXFx1REM3NlxcdURDNzktXFx1REM5RVxcdURDQTctXFx1RENBRlxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1RENGQi1cXHVERDFCXFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCQy1cXHVERENGXFx1REREMi1cXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU0MC1cXHVERTQ4XFx1REU2MC1cXHVERTdFXFx1REU4MC1cXHVERTlGXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REVFQi1cXHVERUVGXFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY1OC1cXHVERjcyXFx1REY3OC1cXHVERjkxXFx1REZBOS1cXHVERkFGXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdURDRkEtXFx1REQyM1xcdUREMzAtXFx1REQzOVxcdURFNjAtXFx1REU3RVxcdURFODAtXFx1REVBOVxcdURFQjBcXHVERUIxXFx1REYwMC1cXHVERjI3XFx1REYzMC1cXHVERjQ1XFx1REY1MS1cXHVERjU0XFx1REY3MC1cXHVERjgxXFx1REZCMC1cXHVERkNCXFx1REZFMC1cXHVERkY2XXxcXHVEODA0W1xcdURDMDMtXFx1REMzN1xcdURDNTItXFx1REM2RlxcdURDNzFcXHVEQzcyXFx1REM3NVxcdURDODMtXFx1RENBRlxcdURDRDAtXFx1RENFOFxcdURDRjAtXFx1RENGOVxcdUREMDMtXFx1REQyNlxcdUREMzYtXFx1REQzRlxcdURENDRcXHVERDQ3XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdURERDAtXFx1REREQVxcdURERENcXHVEREUxLVxcdURERjRcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMkJcXHVERTNGXFx1REU0MFxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERUYwLVxcdURFRjlcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1MC1cXHVEQzU5XFx1REM1Ri1cXHVEQzYxXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1RENEMC1cXHVEQ0Q5XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFNTAtXFx1REU1OVxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERUMwLVxcdURFQzlcXHVERjAwLVxcdURGMUFcXHVERjMwLVxcdURGM0JcXHVERjQwLVxcdURGNDZdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENBMC1cXHVEQ0YyXFx1RENGRi1cXHVERDA2XFx1REQwOVxcdUREMEMtXFx1REQxM1xcdUREMTVcXHVERDE2XFx1REQxOC1cXHVERDJGXFx1REQzRlxcdURENDFcXHVERDUwLVxcdURENTlcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUIwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNTAtXFx1REM2Q1xcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENTAtXFx1REQ1OVxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdUREQTAtXFx1RERBOVxcdURFRTAtXFx1REVGMlxcdURGMDJcXHVERjA0LVxcdURGMTBcXHVERjEyLVxcdURGMzNcXHVERjUwLVxcdURGNTlcXHVERkIwXFx1REZDMC1cXHVERkQ0XXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVcXHVEQzgwLVxcdURENDNdfFxcdUQ4MEJbXFx1REY5MC1cXHVERkYwXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4MjJcXHVEODQwLVxcdUQ4NjhcXHVEODZBLVxcdUQ4NkNcXHVEODZGLVxcdUQ4NzJcXHVEODc0LVxcdUQ4NzlcXHVEODgwLVxcdUQ4ODNcXHVEODg1LVxcdUQ4ODddW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzAwLVxcdURDMkZcXHVEQzQxLVxcdURDNDZdfFxcdUQ4MTFbXFx1REMwMC1cXHVERTQ2XXxcXHVEODFBW1xcdURDMDAtXFx1REUzOFxcdURFNDAtXFx1REU1RVxcdURFNjAtXFx1REU2OVxcdURFNzAtXFx1REVCRVxcdURFQzAtXFx1REVDOVxcdURFRDAtXFx1REVFRFxcdURGMDAtXFx1REYyRlxcdURGNDAtXFx1REY0M1xcdURGNTAtXFx1REY1OVxcdURGNUItXFx1REY2MVxcdURGNjMtXFx1REY3N1xcdURGN0QtXFx1REY4Rl18XFx1RDgxQltcXHVERTQwLVxcdURFOTZcXHVERjAwLVxcdURGNEFcXHVERjUwXFx1REY5My1cXHVERjlGXFx1REZFMFxcdURGRTFcXHVERkUzXXxcXHVEODIxW1xcdURDMDAtXFx1REZGN118XFx1RDgyM1tcXHVEQzAwLVxcdURDRDVcXHVERDAwLVxcdUREMDhdfFxcdUQ4MkJbXFx1REZGMC1cXHVERkYzXFx1REZGNS1cXHVERkZCXFx1REZGRFxcdURGRkVdfFxcdUQ4MkNbXFx1REMwMC1cXHVERDIyXFx1REQzMlxcdURENTAtXFx1REQ1MlxcdURENTVcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM0W1xcdURFQzAtXFx1REVEM1xcdURFRTAtXFx1REVGM1xcdURGNjAtXFx1REY3OF18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXFx1REZDRS1cXHVERkZGXXxcXHVEODM3W1xcdURGMDAtXFx1REYxRVxcdURGMjUtXFx1REYyQV18XFx1RDgzOFtcXHVEQzMwLVxcdURDNkRcXHVERDAwLVxcdUREMkNcXHVERDM3LVxcdUREM0RcXHVERDQwLVxcdURENDlcXHVERDRFXFx1REU5MC1cXHVERUFEXFx1REVDMC1cXHVERUVCXFx1REVGMC1cXHVERUY5XXxcXHVEODM5W1xcdURDRDAtXFx1RENFQlxcdURDRjAtXFx1RENGOVxcdURGRTAtXFx1REZFNlxcdURGRTgtXFx1REZFQlxcdURGRURcXHVERkVFXFx1REZGMC1cXHVERkZFXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdURDQzctXFx1RENDRlxcdUREMDAtXFx1REQ0M1xcdURENEJcXHVERDUwLVxcdURENTldfFxcdUQ4M0JbXFx1REM3MS1cXHVEQ0FCXFx1RENBRC1cXHVEQ0FGXFx1RENCMS1cXHVEQ0I0XFx1REQwMS1cXHVERDJEXFx1REQyRi1cXHVERDNEXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDgzQ1tcXHVERDAwLVxcdUREMENdfFxcdUQ4M0VbXFx1REZGMC1cXHVERkY5XXxcXHVEODY5W1xcdURDMDAtXFx1REVERlxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzlcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXFx1REMyMC1cXHVERkZGXXxcXHVEODczW1xcdURDMDAtXFx1REVBMVxcdURFQjAtXFx1REZGRl18XFx1RDg3QVtcXHVEQzAwLVxcdURGRTBdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXXxcXHVEODg0W1xcdURDMDAtXFx1REY0QVxcdURGNTAtXFx1REZGRl18XFx1RDg4OFtcXHVEQzAwLVxcdURGQUZdKS8pKSl7dmFyIHI9blsxXXx8blsyXXx8XCJcIjtpZighcnx8XCJcIj09PXR8fHRoaXMucnVsZXMuaW5saW5lLnB1bmN0dWF0aW9uLmV4ZWModCkpe3ZhciBpPW5bMF0ubGVuZ3RoLTEscz1pLGE9MCxsPVwiKlwiPT09blswXVswXT90aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltVW5kO2ZvcihsLmxhc3RJbmRleD0wLHU9dS5zbGljZSgtMSplLmxlbmd0aCtpKTtudWxsIT0obj1sLmV4ZWModSkpOyl7dmFyIG8sRD1uWzFdfHxuWzJdfHxuWzNdfHxuWzRdfHxuWzVdfHxuWzZdO2lmKEQpaWYobz1ELmxlbmd0aCxuWzNdfHxuWzRdKXMrPW87ZWxzZSBpZigobls1XXx8bls2XSkmJmklMyYmISgoaStvKSUzKSlhKz1vO2Vsc2UgaWYoISgwPChzLT1vKSkpcmV0dXJuIG89TWF0aC5taW4obyxvK3MrYSksRD1lLnNsaWNlKDAsaStuLmluZGV4KyhuWzBdLmxlbmd0aC1ELmxlbmd0aCkrbyksTWF0aC5taW4oaSxvKSUyPyhvPUQuc2xpY2UoMSwtMSkse3R5cGU6XCJlbVwiLHJhdzpELHRleHQ6byx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMobyl9KToobz1ELnNsaWNlKDIsLTIpLHt0eXBlOlwic3Ryb25nXCIscmF3OkQsdGV4dDpvLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhvKX0pfX19fSx1LmNvZGVzcGFuPWZ1bmN0aW9uKGUpe3ZhciB1LHQsbixlPXRoaXMucnVsZXMuaW5saW5lLmNvZGUuZXhlYyhlKTtpZihlKXJldHVybiBuPWVbMl0ucmVwbGFjZSgvXFxuL2csXCIgXCIpLHU9L1teIF0vLnRlc3QobiksdD0vXiAvLnRlc3QobikmJi8gJC8udGVzdChuKSxuPWQobj11JiZ0P24uc3Vic3RyaW5nKDEsbi5sZW5ndGgtMSk6biwhMCkse3R5cGU6XCJjb2Rlc3BhblwiLHJhdzplWzBdLHRleHQ6bn19LHUuYnI9ZnVuY3Rpb24oZSl7ZT10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKGUpO2lmKGUpcmV0dXJue3R5cGU6XCJiclwiLHJhdzplWzBdfX0sdS5kZWw9ZnVuY3Rpb24oZSl7ZT10aGlzLnJ1bGVzLmlubGluZS5kZWwuZXhlYyhlKTtpZihlKXJldHVybnt0eXBlOlwiZGVsXCIscmF3OmVbMF0sdGV4dDplWzJdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhlWzJdKX19LHUuYXV0b2xpbms9ZnVuY3Rpb24oZSx1KXt2YXIgdCxlPXRoaXMucnVsZXMuaW5saW5lLmF1dG9saW5rLmV4ZWMoZSk7aWYoZSlyZXR1cm4gdT1cIkBcIj09PWVbMl0/XCJtYWlsdG86XCIrKHQ9ZCh0aGlzLm9wdGlvbnMubWFuZ2xlP3UoZVsxXSk6ZVsxXSkpOnQ9ZChlWzFdKSx7dHlwZTpcImxpbmtcIixyYXc6ZVswXSx0ZXh0OnQsaHJlZjp1LHRva2Vuczpbe3R5cGU6XCJ0ZXh0XCIscmF3OnQsdGV4dDp0fV19fSx1LnVybD1mdW5jdGlvbihlLHUpe3ZhciB0LG4scixpO2lmKHQ9dGhpcy5ydWxlcy5pbmxpbmUudXJsLmV4ZWMoZSkpe2lmKFwiQFwiPT09dFsyXSlyPVwibWFpbHRvOlwiKyhuPWQodGhpcy5vcHRpb25zLm1hbmdsZT91KHRbMF0pOnRbMF0pKTtlbHNle2Zvcig7aT10WzBdLHRbMF09dGhpcy5ydWxlcy5pbmxpbmUuX2JhY2twZWRhbC5leGVjKHRbMF0pWzBdLGkhPT10WzBdOyk7bj1kKHRbMF0pLHI9XCJ3d3cuXCI9PT10WzFdP1wiaHR0cDovL1wiK3RbMF06dFswXX1yZXR1cm57dHlwZTpcImxpbmtcIixyYXc6dFswXSx0ZXh0Om4saHJlZjpyLHRva2Vuczpbe3R5cGU6XCJ0ZXh0XCIscmF3Om4sdGV4dDpufV19fX0sdS5pbmxpbmVUZXh0PWZ1bmN0aW9uKGUsdSl7ZT10aGlzLnJ1bGVzLmlubGluZS50ZXh0LmV4ZWMoZSk7aWYoZSlyZXR1cm4gdT10aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s/dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihlWzBdKTpkKGVbMF0pOmVbMF06ZCh0aGlzLm9wdGlvbnMuc21hcnR5cGFudHM/dShlWzBdKTplWzBdKSx7dHlwZTpcInRleHRcIixyYXc6ZVswXSx0ZXh0OnV9fSxlfSgpLEI9e25ld2xpbmU6L14oPzogKig/OlxcbnwkKSkrLyxjb2RlOi9eKCB7NH1bXlxcbl0rKD86XFxuKD86ICooPzpcXG58JCkpKik/KSsvLGZlbmNlczovXiB7MCwzfShgezMsfSg/PVteYFxcbl0qKD86XFxufCQpKXx+ezMsfSkoW15cXG5dKikoPzpcXG58JCkoPzp8KFtcXHNcXFNdKj8pKD86XFxufCQpKSg/OiB7MCwzfVxcMVt+YF0qICooPz1cXG58JCl8JCkvLGhyOi9eIHswLDN9KCg/Oi1bXFx0IF0qKXszLH18KD86X1sgXFx0XSopezMsfXwoPzpcXCpbIFxcdF0qKXszLH0pKD86XFxuK3wkKS8saGVhZGluZzovXiB7MCwzfSgjezEsNn0pKD89XFxzfCQpKC4qKSg/Olxcbit8JCkvLGJsb2NrcXVvdGU6L14oIHswLDN9PiA/KHBhcmFncmFwaHxbXlxcbl0qKSg/OlxcbnwkKSkrLyxsaXN0Oi9eKCB7MCwzfWJ1bGwpKFsgXFx0XVteXFxuXSs/KT8oPzpcXG58JCkvLGh0bWw6XCJeIHswLDN9KD86PChzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVtcXFxccz5dW1xcXFxzXFxcXFNdKj8oPzo8L1xcXFwxPlteXFxcXG5dKlxcXFxuK3wkKXxjb21tZW50W15cXFxcbl0qKFxcXFxuK3wkKXw8XFxcXD9bXFxcXHNcXFxcU10qPyg/OlxcXFw/PlxcXFxuKnwkKXw8IVtBLVpdW1xcXFxzXFxcXFNdKj8oPzo+XFxcXG4qfCQpfDwhXFxcXFtDREFUQVxcXFxbW1xcXFxzXFxcXFNdKj8oPzpcXFxcXVxcXFxdPlxcXFxuKnwkKXw8Lz8odGFnKSg/OiArfFxcXFxufC8/PilbXFxcXHNcXFxcU10qPyg/Oig/OlxcXFxuICopK1xcXFxufCQpfDwoPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKShbYS16XVtcXFxcdy1dKikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFxcXHRdKig/OlxcXFxufCQpKVtcXFxcc1xcXFxTXSo/KD86KD86XFxcXG4gKikrXFxcXG58JCl8PC8oPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVthLXpdW1xcXFx3LV0qXFxcXHMqPig/PVsgXFxcXHRdKig/OlxcXFxufCQpKVtcXFxcc1xcXFxTXSo/KD86KD86XFxcXG4gKikrXFxcXG58JCkpXCIsZGVmOi9eIHswLDN9XFxbKGxhYmVsKVxcXTogKig/OlxcbiAqKT8oW148XFxzXVteXFxzXSp8PC4qPz4pKD86KD86ICsoPzpcXG4gKik/fCAqXFxuICopKHRpdGxlKSk/ICooPzpcXG4rfCQpLyx0YWJsZTprLGxoZWFkaW5nOi9eKCg/Oig/IV5idWxsICkufFxcbig/IVxcbnxidWxsICkpKz8pXFxuIHswLDN9KD0rfC0rKSAqKD86XFxuK3wkKS8sX3BhcmFncmFwaDovXihbXlxcbl0rKD86XFxuKD8haHJ8aGVhZGluZ3xsaGVhZGluZ3xibG9ja3F1b3RlfGZlbmNlc3xsaXN0fGh0bWx8dGFibGV8ICtcXG4pW15cXG5dKykqKS8sdGV4dDovXlteXFxuXSsvLF9sYWJlbDovKD8hXFxzKlxcXSkoPzpcXFxcLnxbXlxcW1xcXVxcXFxdKSsvLF90aXRsZTovKD86XCIoPzpcXFxcXCI/fFteXCJcXFxcXSkqXCJ8J1teJ1xcbl0qKD86XFxuW14nXFxuXSspKlxcbj8nfFxcKFteKCldKlxcKSkvfSx3PShCLmRlZj1oKEIuZGVmKS5yZXBsYWNlKFwibGFiZWxcIixCLl9sYWJlbCkucmVwbGFjZShcInRpdGxlXCIsQi5fdGl0bGUpLmdldFJlZ2V4KCksQi5idWxsZXQ9Lyg/OlsqKy1dfFxcZHsxLDl9Wy4pXSkvLEIubGlzdEl0ZW1TdGFydD1oKC9eKCAqKShidWxsKSAqLykucmVwbGFjZShcImJ1bGxcIixCLmJ1bGxldCkuZ2V0UmVnZXgoKSxCLmxpc3Q9aChCLmxpc3QpLnJlcGxhY2UoL2J1bGwvZyxCLmJ1bGxldCkucmVwbGFjZShcImhyXCIsXCJcXFxcbisoPz1cXFxcMT8oPzooPzotICopezMsfXwoPzpfICopezMsfXwoPzpcXFxcKiAqKXszLH0pKD86XFxcXG4rfCQpKVwiKS5yZXBsYWNlKFwiZGVmXCIsXCJcXFxcbisoPz1cIitCLmRlZi5zb3VyY2UrXCIpXCIpLmdldFJlZ2V4KCksQi5fdGFnPVwiYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGhbMS02XXxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFtZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bWV0YXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bFwiLEIuX2NvbW1lbnQ9LzwhLS0oPyEtPz4pW1xcc1xcU10qPyg/Oi0tPnwkKS8sQi5odG1sPWgoQi5odG1sLFwiaVwiKS5yZXBsYWNlKFwiY29tbWVudFwiLEIuX2NvbW1lbnQpLnJlcGxhY2UoXCJ0YWdcIixCLl90YWcpLnJlcGxhY2UoXCJhdHRyaWJ1dGVcIiwvICtbYS16QS1aOl9dW1xcdy46LV0qKD86ICo9ICpcIlteXCJcXG5dKlwifCAqPSAqJ1teJ1xcbl0qJ3wgKj0gKlteXFxzXCInPTw+YF0rKT8vKS5nZXRSZWdleCgpLEIubGhlYWRpbmc9aChCLmxoZWFkaW5nKS5yZXBsYWNlKC9idWxsL2csQi5idWxsZXQpLmdldFJlZ2V4KCksQi5wYXJhZ3JhcGg9aChCLl9wYXJhZ3JhcGgpLnJlcGxhY2UoXCJoclwiLEIuaHIpLnJlcGxhY2UoXCJoZWFkaW5nXCIsXCIgezAsM30jezEsNn0gXCIpLnJlcGxhY2UoXCJ8bGhlYWRpbmdcIixcIlwiKS5yZXBsYWNlKFwifHRhYmxlXCIsXCJcIikucmVwbGFjZShcImJsb2NrcXVvdGVcIixcIiB7MCwzfT5cIikucmVwbGFjZShcImZlbmNlc1wiLFwiIHswLDN9KD86YHszLH0oPz1bXmBcXFxcbl0qXFxcXG4pfH57Myx9KVteXFxcXG5dKlxcXFxuXCIpLnJlcGxhY2UoXCJsaXN0XCIsXCIgezAsM30oPzpbKistXXwxWy4pXSkgXCIpLnJlcGxhY2UoXCJodG1sXCIsXCI8Lz8oPzp0YWcpKD86ICt8XFxcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pXCIpLnJlcGxhY2UoXCJ0YWdcIixCLl90YWcpLmdldFJlZ2V4KCksQi5ibG9ja3F1b3RlPWgoQi5ibG9ja3F1b3RlKS5yZXBsYWNlKFwicGFyYWdyYXBoXCIsQi5wYXJhZ3JhcGgpLmdldFJlZ2V4KCksQi5ub3JtYWw9QSh7fSxCKSxCLmdmbT1BKHt9LEIubm9ybWFsLHt0YWJsZTpcIl4gKihbXlxcXFxuIF0uKlxcXFx8LiopXFxcXG4gezAsM30oPzpcXFxcfCAqKT8oOj8tKzo/ICooPzpcXFxcfCAqOj8tKzo/ICopKikoPzpcXFxcfCAqKT8oPzpcXFxcbigoPzooPyEgKlxcXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzpcXFxcbnwkKSkqKVxcXFxuKnwkKVwifSksQi5nZm0udGFibGU9aChCLmdmbS50YWJsZSkucmVwbGFjZShcImhyXCIsQi5ocikucmVwbGFjZShcImhlYWRpbmdcIixcIiB7MCwzfSN7MSw2fSBcIikucmVwbGFjZShcImJsb2NrcXVvdGVcIixcIiB7MCwzfT5cIikucmVwbGFjZShcImNvZGVcIixcIiB7NH1bXlxcXFxuXVwiKS5yZXBsYWNlKFwiZmVuY2VzXCIsXCIgezAsM30oPzpgezMsfSg/PVteYFxcXFxuXSpcXFxcbil8fnszLH0pW15cXFxcbl0qXFxcXG5cIikucmVwbGFjZShcImxpc3RcIixcIiB7MCwzfSg/OlsqKy1dfDFbLildKSBcIikucmVwbGFjZShcImh0bWxcIixcIjwvPyg/OnRhZykoPzogK3xcXFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSlcIikucmVwbGFjZShcInRhZ1wiLEIuX3RhZykuZ2V0UmVnZXgoKSxCLmdmbS5wYXJhZ3JhcGg9aChCLl9wYXJhZ3JhcGgpLnJlcGxhY2UoXCJoclwiLEIuaHIpLnJlcGxhY2UoXCJoZWFkaW5nXCIsXCIgezAsM30jezEsNn0gXCIpLnJlcGxhY2UoXCJ8bGhlYWRpbmdcIixcIlwiKS5yZXBsYWNlKFwidGFibGVcIixCLmdmbS50YWJsZSkucmVwbGFjZShcImJsb2NrcXVvdGVcIixcIiB7MCwzfT5cIikucmVwbGFjZShcImZlbmNlc1wiLFwiIHswLDN9KD86YHszLH0oPz1bXmBcXFxcbl0qXFxcXG4pfH57Myx9KVteXFxcXG5dKlxcXFxuXCIpLnJlcGxhY2UoXCJsaXN0XCIsXCIgezAsM30oPzpbKistXXwxWy4pXSkgXCIpLnJlcGxhY2UoXCJodG1sXCIsXCI8Lz8oPzp0YWcpKD86ICt8XFxcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pXCIpLnJlcGxhY2UoXCJ0YWdcIixCLl90YWcpLmdldFJlZ2V4KCksQi5wZWRhbnRpYz1BKHt9LEIubm9ybWFsLHtodG1sOmgoXCJeICooPzpjb21tZW50ICooPzpcXFxcbnxcXFxccyokKXw8KHRhZylbXFxcXHNcXFxcU10rPzwvXFxcXDE+ICooPzpcXFxcbnsyLH18XFxcXHMqJCl8PHRhZyg/OlxcXCJbXlxcXCJdKlxcXCJ8J1teJ10qJ3xcXFxcc1teJ1xcXCIvPlxcXFxzXSopKj8vPz4gKig/OlxcXFxuezIsfXxcXFxccyokKSlcIikucmVwbGFjZShcImNvbW1lbnRcIixCLl9jb21tZW50KS5yZXBsYWNlKC90YWcvZyxcIig/ISg/OmF8ZW18c3Ryb25nfHNtYWxsfHN8Y2l0ZXxxfGRmbnxhYmJyfGRhdGF8dGltZXxjb2RlfHZhcnxzYW1wfGtiZHxzdWJ8c3VwfGl8Ynx1fG1hcmt8cnVieXxydHxycHxiZGl8YmRvfHNwYW58YnJ8d2JyfGluc3xkZWx8aW1nKVxcXFxiKVxcXFx3Kyg/ITp8W15cXFxcd1xcXFxzQF0qQClcXFxcYlwiKS5nZXRSZWdleCgpLGRlZjovXiAqXFxbKFteXFxdXSspXFxdOiAqPD8oW15cXHM+XSspPj8oPzogKyhbXCIoXVteXFxuXStbXCIpXSkpPyAqKD86XFxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/Olxcbit8JCkvLGZlbmNlczprLGxoZWFkaW5nOi9eKC4rPylcXG4gezAsM30oPSt8LSspICooPzpcXG4rfCQpLyxwYXJhZ3JhcGg6aChCLm5vcm1hbC5fcGFyYWdyYXBoKS5yZXBsYWNlKFwiaHJcIixCLmhyKS5yZXBsYWNlKFwiaGVhZGluZ1wiLFwiICojezEsNn0gKlteXFxuXVwiKS5yZXBsYWNlKFwibGhlYWRpbmdcIixCLmxoZWFkaW5nKS5yZXBsYWNlKFwiYmxvY2txdW90ZVwiLFwiIHswLDN9PlwiKS5yZXBsYWNlKFwifGZlbmNlc1wiLFwiXCIpLnJlcGxhY2UoXCJ8bGlzdFwiLFwiXCIpLnJlcGxhY2UoXCJ8aHRtbFwiLFwiXCIpLmdldFJlZ2V4KCl9KSx7ZXNjYXBlOi9eXFxcXChbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFxcW1xcXVxcXFxeX2B7fH1+XSkvLGF1dG9saW5rOi9ePChzY2hlbWU6W15cXHNcXHgwMC1cXHgxZjw+XSp8ZW1haWwpPi8sdXJsOmssdGFnOlwiXmNvbW1lbnR8XjwvW2EtekEtWl1bXFxcXHc6LV0qXFxcXHMqPnxePFthLXpBLVpdW1xcXFx3LV0qKD86YXR0cmlidXRlKSo/XFxcXHMqLz8+fF48XFxcXD9bXFxcXHNcXFxcU10qP1xcXFw/PnxePCFbYS16QS1aXStcXFxcc1tcXFxcc1xcXFxTXSo/PnxePCFcXFxcW0NEQVRBXFxcXFtbXFxcXHNcXFxcU10qP1xcXFxdXFxcXF0+XCIsbGluazovXiE/XFxbKGxhYmVsKVxcXVxcKFxccyooaHJlZikoPzpcXHMrKHRpdGxlKSk/XFxzKlxcKS8scmVmbGluazovXiE/XFxbKGxhYmVsKVxcXVxcWyhyZWYpXFxdLyxub2xpbms6L14hP1xcWyhyZWYpXFxdKD86XFxbXFxdKT8vLHJlZmxpbmtTZWFyY2g6XCJyZWZsaW5rfG5vbGluayg/IVxcXFwoKVwiLGVtU3Ryb25nOntsRGVsaW06L14oPzpcXCorKD86KFtwdW5jdF9dKXxbXlxccypdKSl8Xl8rKD86KFtwdW5jdCpdKXwoW15cXHNfXSkpLyxyRGVsaW1Bc3Q6L14oPzpbXl8qXFxcXF18XFxcXC4pKj9cXF9cXF8oPzpbXl8qXFxcXF18XFxcXC4pKj9cXCooPzpbXl8qXFxcXF18XFxcXC4pKj8oPz1cXF9cXF8pfCg/OlteKlxcXFxdfFxcXFwuKSsoPz1bXipdKXxbcHVuY3RfXShcXCorKSg/PVtcXHNdfCQpfCg/OltecHVuY3QqX1xcc1xcXFxdfFxcXFwuKShcXCorKSg/PVtwdW5jdF9cXHNdfCQpfFtwdW5jdF9cXHNdKFxcKispKD89W15wdW5jdCpfXFxzXSl8W1xcc10oXFwqKykoPz1bcHVuY3RfXSl8W3B1bmN0X10oXFwqKykoPz1bcHVuY3RfXSl8KD86W15wdW5jdCpfXFxzXFxcXF18XFxcXC4pKFxcKispKD89W15wdW5jdCpfXFxzXSkvLHJEZWxpbVVuZDovXig/OlteXypcXFxcXXxcXFxcLikqP1xcKlxcKig/OlteXypcXFxcXXxcXFxcLikqP1xcXyg/OlteXypcXFxcXXxcXFxcLikqPyg/PVxcKlxcKil8KD86W15fXFxcXF18XFxcXC4pKyg/PVteX10pfFtwdW5jdCpdKFxcXyspKD89W1xcc118JCl8KD86W15wdW5jdCpfXFxzXFxcXF18XFxcXC4pKFxcXyspKD89W3B1bmN0Klxcc118JCl8W3B1bmN0Klxcc10oXFxfKykoPz1bXnB1bmN0Kl9cXHNdKXxbXFxzXShcXF8rKSg/PVtwdW5jdCpdKXxbcHVuY3QqXShcXF8rKSg/PVtwdW5jdCpdKS99LGNvZGU6L14oYCspKFteYF18W15gXVtcXHNcXFNdKj9bXmBdKVxcMSg/IWApLyxicjovXiggezIsfXxcXFxcKVxcbig/IVxccyokKS8sZGVsOmssdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XFxuKXxbXFxzXFxTXSo/KD86KD89W1xcXFw8IVxcW2AqX118XFxiX3wkKXxbXiBdKD89IHsyLH1cXG4pKSkvLHB1bmN0dWF0aW9uOi9eKFtcXHNwdW5jdHVhdGlvbl0pL30pO2Z1bmN0aW9uIFAoZSl7cmV0dXJuIGUucmVwbGFjZSgvLS0tL2csXCLigJRcIikucmVwbGFjZSgvLS0vZyxcIuKAk1wiKS5yZXBsYWNlKC8oXnxbLVxcdTIwMTQvKFxcW3tcIlxcc10pJy9nLFwiJDHigJhcIikucmVwbGFjZSgvJy9nLFwi4oCZXCIpLnJlcGxhY2UoLyhefFstXFx1MjAxNC8oXFxbe1xcdTIwMThcXHNdKVwiL2csXCIkMeKAnFwiKS5yZXBsYWNlKC9cIi9nLFwi4oCdXCIpLnJlcGxhY2UoL1xcLnszfS9nLFwi4oCmXCIpfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB1LHQ9XCJcIixuPWUubGVuZ3RoLHI9MDtyPG47cisrKXU9ZS5jaGFyQ29kZUF0KHIpLHQrPVwiJiNcIisodT0uNTxNYXRoLnJhbmRvbSgpP1wieFwiK3UudG9TdHJpbmcoMTYpOnUpK1wiO1wiO3JldHVybiB0fXcuX3VjX3B1bmN0dWF0aW9uPVwiXFxcXHUwMEExXFxcXHUwMEE3XFxcXHUwMEFCXFxcXHUwMEI2XFxcXHUwMEI3XFxcXHUwMEJCXFxcXHUwMEJGXFxcXHUwMzdFXFxcXHUwMzg3XFxcXHUwNTVBLVxcXFx1MDU1RlxcXFx1MDU4OVxcXFx1MDU4QVxcXFx1MDVCRVxcXFx1MDVDMFxcXFx1MDVDM1xcXFx1MDVDNlxcXFx1MDVGM1xcXFx1MDVGNFxcXFx1MDYwOVxcXFx1MDYwQVxcXFx1MDYwQ1xcXFx1MDYwRFxcXFx1MDYxQlxcXFx1MDYxRVxcXFx1MDYxRlxcXFx1MDY2QS1cXFxcdTA2NkRcXFxcdTA2RDRcXFxcdTA3MDAtXFxcXHUwNzBEXFxcXHUwN0Y3LVxcXFx1MDdGOVxcXFx1MDgzMC1cXFxcdTA4M0VcXFxcdTA4NUVcXFxcdTA5NjRcXFxcdTA5NjVcXFxcdTA5NzBcXFxcdTBBRjBcXFxcdTBERjRcXFxcdTBFNEZcXFxcdTBFNUFcXFxcdTBFNUJcXFxcdTBGMDQtXFxcXHUwRjEyXFxcXHUwRjE0XFxcXHUwRjNBLVxcXFx1MEYzRFxcXFx1MEY4NVxcXFx1MEZEMC1cXFxcdTBGRDRcXFxcdTBGRDlcXFxcdTBGREFcXFxcdTEwNEEtXFxcXHUxMDRGXFxcXHUxMEZCXFxcXHUxMzYwLVxcXFx1MTM2OFxcXFx1MTQwMFxcXFx1MTY2RFxcXFx1MTY2RVxcXFx1MTY5QlxcXFx1MTY5Q1xcXFx1MTZFQi1cXFxcdTE2RURcXFxcdTE3MzVcXFxcdTE3MzZcXFxcdTE3RDQtXFxcXHUxN0Q2XFxcXHUxN0Q4LVxcXFx1MTdEQVxcXFx1MTgwMC1cXFxcdTE4MEFcXFxcdTE5NDRcXFxcdTE5NDVcXFxcdTFBMUVcXFxcdTFBMUZcXFxcdTFBQTAtXFxcXHUxQUE2XFxcXHUxQUE4LVxcXFx1MUFBRFxcXFx1MUI1QS1cXFxcdTFCNjBcXFxcdTFCRkMtXFxcXHUxQkZGXFxcXHUxQzNCLVxcXFx1MUMzRlxcXFx1MUM3RVxcXFx1MUM3RlxcXFx1MUNDMC1cXFxcdTFDQzdcXFxcdTFDRDNcXFxcdTIwMTAtXFxcXHUyMDI3XFxcXHUyMDMwLVxcXFx1MjA0M1xcXFx1MjA0NS1cXFxcdTIwNTFcXFxcdTIwNTMtXFxcXHUyMDVFXFxcXHUyMDdEXFxcXHUyMDdFXFxcXHUyMDhEXFxcXHUyMDhFXFxcXHUyMzA4LVxcXFx1MjMwQlxcXFx1MjMyOVxcXFx1MjMyQVxcXFx1Mjc2OC1cXFxcdTI3NzVcXFxcdTI3QzVcXFxcdTI3QzZcXFxcdTI3RTYtXFxcXHUyN0VGXFxcXHUyOTgzLVxcXFx1Mjk5OFxcXFx1MjlEOC1cXFxcdTI5REJcXFxcdTI5RkNcXFxcdTI5RkRcXFxcdTJDRjktXFxcXHUyQ0ZDXFxcXHUyQ0ZFXFxcXHUyQ0ZGXFxcXHUyRDcwXFxcXHUyRTAwLVxcXFx1MkUyRVxcXFx1MkUzMC1cXFxcdTJFNDJcXFxcdTMwMDEtXFxcXHUzMDAzXFxcXHUzMDA4LVxcXFx1MzAxMVxcXFx1MzAxNC1cXFxcdTMwMUZcXFxcdTMwMzBcXFxcdTMwM0RcXFxcdTMwQTBcXFxcdTMwRkJcXFxcdUE0RkVcXFxcdUE0RkZcXFxcdUE2MEQtXFxcXHVBNjBGXFxcXHVBNjczXFxcXHVBNjdFXFxcXHVBNkYyLVxcXFx1QTZGN1xcXFx1QTg3NC1cXFxcdUE4NzdcXFxcdUE4Q0VcXFxcdUE4Q0ZcXFxcdUE4RjgtXFxcXHVBOEZBXFxcXHVBOEZDXFxcXHVBOTJFXFxcXHVBOTJGXFxcXHVBOTVGXFxcXHVBOUMxLVxcXFx1QTlDRFxcXFx1QTlERVxcXFx1QTlERlxcXFx1QUE1Qy1cXFxcdUFBNUZcXFxcdUFBREVcXFxcdUFBREZcXFxcdUFBRjBcXFxcdUFBRjFcXFxcdUFCRUJcXFxcdUZEM0VcXFxcdUZEM0ZcXFxcdUZFMTAtXFxcXHVGRTE5XFxcXHVGRTMwLVxcXFx1RkU1MlxcXFx1RkU1NC1cXFxcdUZFNjFcXFxcdUZFNjNcXFxcdUZFNjhcXFxcdUZFNkFcXFxcdUZFNkJcXFxcdUZGMDEtXFxcXHVGRjAzXFxcXHVGRjA1LVxcXFx1RkYwQVxcXFx1RkYwQy1cXFxcdUZGMEZcXFxcdUZGMUFcXFxcdUZGMUJcXFxcdUZGMUZcXFxcdUZGMjBcXFxcdUZGM0ItXFxcXHVGRjNEXFxcXHVGRjNGXFxcXHVGRjVCXFxcXHVGRjVEXFxcXHVGRjVGLVxcXFx1RkY2NVwiLHcuX3B1bmN0dWF0aW9uPVwiIVxcXCIjJCUmJygpK1xcXFwtLiwvOjs8PT4/QFxcXFxbXFxcXF1gXnt8fX5cIit3Ll91Y19wdW5jdHVhdGlvbix3LnB1bmN0dWF0aW9uPWgody5wdW5jdHVhdGlvbikucmVwbGFjZSgvcHVuY3R1YXRpb24vZyx3Ll9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx3LmJsb2NrU2tpcD0vXFxbW15bXFxdXSo/XFxdXFwoW15cXChcXCldKj9cXCl8YFteYF0qP2B8PFtePD5dKj8+L2csdy5lc2NhcGVkRW1TdD0vKD86XnxbXlxcXFxdKSg/OlxcXFxcXFxcKSpcXFxcWypfXS9nLHcuX2NvbW1lbnQ9aChCLl9jb21tZW50KS5yZXBsYWNlKFwiKD86LS1cXHgzZXwkKVwiLFwiLS1cXHgzZVwiKS5nZXRSZWdleCgpLHcuZW1TdHJvbmcubERlbGltPWgody5lbVN0cm9uZy5sRGVsaW0pLnJlcGxhY2UoL3B1bmN0L2csdy5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksdy5lbVN0cm9uZy5yRGVsaW1Bc3Q9aCh3LmVtU3Ryb25nLnJEZWxpbUFzdCxcImdcIikucmVwbGFjZSgvcHVuY3QvZyx3Ll9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx3LmVtU3Ryb25nLnJEZWxpbVVuZD1oKHcuZW1TdHJvbmcuckRlbGltVW5kLFwiZ1wiKS5yZXBsYWNlKC9wdW5jdC9nLHcuX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLHcuX2VzY2FwZXM9L1xcXFwoWyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BcXFtcXF1cXFxcXl9ge3x9fl0pL2csdy5fc2NoZW1lPS9bYS16QS1aXVthLXpBLVowLTkrLi1dezEsMzF9Lyx3Ll9lbWFpbD0vW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXSsoQClbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyg/IVstX10pLyx3LmF1dG9saW5rPWgody5hdXRvbGluaykucmVwbGFjZShcInNjaGVtZVwiLHcuX3NjaGVtZSkucmVwbGFjZShcImVtYWlsXCIsdy5fZW1haWwpLmdldFJlZ2V4KCksdy5fYXR0cmlidXRlPS9cXHMrW2EtekEtWjpfXVtcXHcuOi1dKig/Olxccyo9XFxzKlwiW15cIl0qXCJ8XFxzKj1cXHMqJ1teJ10qJ3xcXHMqPVxccypbXlxcc1wiJz08PmBdKyk/Lyx3LnRhZz1oKHcudGFnKS5yZXBsYWNlKFwiY29tbWVudFwiLHcuX2NvbW1lbnQpLnJlcGxhY2UoXCJhdHRyaWJ1dGVcIix3Ll9hdHRyaWJ1dGUpLmdldFJlZ2V4KCksdy5fbGFiZWw9Lyg/OlxcWyg/OlxcXFwufFteXFxbXFxdXFxcXF0pKlxcXXxcXFxcLnxgW15gXSpgfFteXFxbXFxdXFxcXGBdKSo/Lyx3Ll9ocmVmPS88KD86XFxcXC58W15cXG48PlxcXFxdKSs+fFteXFxzXFx4MDAtXFx4MWZdKi8sdy5fdGl0bGU9L1wiKD86XFxcXFwiP3xbXlwiXFxcXF0pKlwifCcoPzpcXFxcJz98W14nXFxcXF0pKid8XFwoKD86XFxcXFxcKT98W14pXFxcXF0pKlxcKS8sdy5saW5rPWgody5saW5rKS5yZXBsYWNlKFwibGFiZWxcIix3Ll9sYWJlbCkucmVwbGFjZShcImhyZWZcIix3Ll9ocmVmKS5yZXBsYWNlKFwidGl0bGVcIix3Ll90aXRsZSkuZ2V0UmVnZXgoKSx3LnJlZmxpbms9aCh3LnJlZmxpbmspLnJlcGxhY2UoXCJsYWJlbFwiLHcuX2xhYmVsKS5yZXBsYWNlKFwicmVmXCIsQi5fbGFiZWwpLmdldFJlZ2V4KCksdy5ub2xpbms9aCh3Lm5vbGluaykucmVwbGFjZShcInJlZlwiLEIuX2xhYmVsKS5nZXRSZWdleCgpLHcucmVmbGlua1NlYXJjaD1oKHcucmVmbGlua1NlYXJjaCxcImdcIikucmVwbGFjZShcInJlZmxpbmtcIix3LnJlZmxpbmspLnJlcGxhY2UoXCJub2xpbmtcIix3Lm5vbGluaykuZ2V0UmVnZXgoKSx3Lm5vcm1hbD1BKHt9LHcpLHcucGVkYW50aWM9QSh7fSx3Lm5vcm1hbCx7c3Ryb25nOntzdGFydDovXl9ffFxcKlxcKi8sbWlkZGxlOi9eX18oPz1cXFMpKFtcXHNcXFNdKj9cXFMpX18oPyFfKXxeXFwqXFwqKD89XFxTKShbXFxzXFxTXSo/XFxTKVxcKlxcKig/IVxcKikvLGVuZEFzdDovXFwqXFwqKD8hXFwqKS9nLGVuZFVuZDovX18oPyFfKS9nfSxlbTp7c3RhcnQ6L15ffFxcKi8sbWlkZGxlOi9eKClcXCooPz1cXFMpKFtcXHNcXFNdKj9cXFMpXFwqKD8hXFwqKXxeXyg/PVxcUykoW1xcc1xcU10qP1xcUylfKD8hXykvLGVuZEFzdDovXFwqKD8hXFwqKS9nLGVuZFVuZDovXyg/IV8pL2d9LGxpbms6aCgvXiE/XFxbKGxhYmVsKVxcXVxcKCguKj8pXFwpLykucmVwbGFjZShcImxhYmVsXCIsdy5fbGFiZWwpLmdldFJlZ2V4KCkscmVmbGluazpoKC9eIT9cXFsobGFiZWwpXFxdXFxzKlxcWyhbXlxcXV0qKVxcXS8pLnJlcGxhY2UoXCJsYWJlbFwiLHcuX2xhYmVsKS5nZXRSZWdleCgpfSksdy5nZm09QSh7fSx3Lm5vcm1hbCx7ZXNjYXBlOmgody5lc2NhcGUpLnJlcGxhY2UoXCJdKVwiLFwifnxdKVwiKS5nZXRSZWdleCgpLF9leHRlbmRlZF9lbWFpbDovW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XFwuW2EtekEtWjAtOS1fXSpbYS16QS1aMC05XSkrKD8hWy1fXSkvLHVybDovXigoPzpmdHB8aHR0cHM/KTpcXC9cXC98d3d3XFwuKSg/OlthLXpBLVowLTlcXC1dK1xcLj8pK1teXFxzPF0qfF5lbWFpbC8sX2JhY2twZWRhbDovKD86W14/IS4sOjsqXydcIn4oKSZdK3xcXChbXildKlxcKXwmKD8hW2EtekEtWjAtOV0rOyQpfFs/IS4sOjsqXydcIn4pXSsoPyEkKSkrLyxkZWw6L14ofn4/KSg/PVteXFxzfl0pKFtcXHNcXFNdKj9bXlxcc35dKVxcMSg/PVtefl18JCkvLHRleHQ6L14oW2B+XSt8W15gfl0pKD86KD89IHsyLH1cXG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcXC89P19ge1xcfH1+LV0rQCl8W1xcc1xcU10qPyg/Oig/PVtcXFxcPCFcXFtgKn5fXXxcXGJffGh0dHBzPzpcXC9cXC98ZnRwOlxcL1xcL3x3d3dcXC58JCl8W14gXSg/PSB7Mix9XFxuKXxbXmEtekEtWjAtOS4hIyQlJicqK1xcLz0/X2B7XFx8fX4tXSg/PVthLXpBLVowLTkuISMkJSYnKitcXC89P19ge1xcfH1+LV0rQCkpKS99KSx3LmdmbS51cmw9aCh3LmdmbS51cmwsXCJpXCIpLnJlcGxhY2UoXCJlbWFpbFwiLHcuZ2ZtLl9leHRlbmRlZF9lbWFpbCkuZ2V0UmVnZXgoKSx3LmJyZWFrcz1BKHt9LHcuZ2ZtLHticjpoKHcuYnIpLnJlcGxhY2UoXCJ7Mix9XCIsXCIqXCIpLmdldFJlZ2V4KCksdGV4dDpoKHcuZ2ZtLnRleHQpLnJlcGxhY2UoXCJcXFxcYl9cIixcIlxcXFxiX3wgezIsfVxcXFxuXCIpLnJlcGxhY2UoL1xcezIsXFx9L2csXCIqXCIpLmdldFJlZ2V4KCl9KTt2YXIgeT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy50b2tlbnM9W10sdGhpcy50b2tlbnMubGlua3M9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnM9ZXx8ci5kZWZhdWx0cyx0aGlzLm9wdGlvbnMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXJ8fG5ldyBiLHRoaXMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXIsdGhpcy50b2tlbml6ZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMpLmlubGluZVF1ZXVlPVtdLHRoaXMuc3RhdGU9e2luTGluazohMSxpblJhd0Jsb2NrOiExLHRvcDohMH07ZT17YmxvY2s6Qi5ub3JtYWwsaW5saW5lOncubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KGUuYmxvY2s9Qi5wZWRhbnRpYyxlLmlubGluZT13LnBlZGFudGljKTp0aGlzLm9wdGlvbnMuZ2ZtJiYoZS5ibG9jaz1CLmdmbSx0aGlzLm9wdGlvbnMuYnJlYWtzP2UuaW5saW5lPXcuYnJlYWtzOmUuaW5saW5lPXcuZ2ZtKSx0aGlzLnRva2VuaXplci5ydWxlcz1lfXQubGV4PWZ1bmN0aW9uKGUsdSl7cmV0dXJuIG5ldyB0KHUpLmxleChlKX0sdC5sZXhJbmxpbmU9ZnVuY3Rpb24oZSx1KXtyZXR1cm4gbmV3IHQodSkuaW5saW5lVG9rZW5zKGUpfTt2YXIgZSx1LG49dC5wcm90b3R5cGU7cmV0dXJuIG4ubGV4PWZ1bmN0aW9uKGUpe3ZhciB1O2ZvcihlPWUucmVwbGFjZSgvXFxyXFxufFxcci9nLFwiXFxuXCIpLHRoaXMuYmxvY2tUb2tlbnMoZSx0aGlzLnRva2Vucyk7dT10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRoaXMuaW5saW5lVG9rZW5zKHUuc3JjLHUudG9rZW5zKTtyZXR1cm4gdGhpcy50b2tlbnN9LG4uYmxvY2tUb2tlbnM9ZnVuY3Rpb24ocixpKXt2YXIgcyxhLGwsbyxEPXRoaXM7Zm9yKHZvaWQgMD09PWkmJihpPVtdKSxyPXRoaXMub3B0aW9ucy5wZWRhbnRpYz9yLnJlcGxhY2UoL1xcdC9nLFwiICAgIFwiKS5yZXBsYWNlKC9eICskL2dtLFwiXCIpOnIucmVwbGFjZSgvXiggKikoXFx0KykvZ20sZnVuY3Rpb24oZSx1LHQpe3JldHVybiB1K1wiICAgIFwiLnJlcGVhdCh0Lmxlbmd0aCl9KTtyOyl7dmFyIGU9ZnVuY3Rpb24oKXtpZihELm9wdGlvbnMuZXh0ZW5zaW9ucyYmRC5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2smJkQub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuISEocz1lLmNhbGwoe2xleGVyOkR9LHIsaSkpJiYocj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSwhMCl9KSlyZXR1cm5cImNvbnRpbnVlXCI7aWYocz1ELnRva2VuaXplci5zcGFjZShyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLDE9PT1zLnJhdy5sZW5ndGgmJjA8aS5sZW5ndGg/aVtpLmxlbmd0aC0xXS5yYXcrPVwiXFxuXCI6aS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLmNvZGUocikpcmV0dXJuIHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSwhKGE9aVtpLmxlbmd0aC0xXSl8fFwicGFyYWdyYXBoXCIhPT1hLnR5cGUmJlwidGV4dFwiIT09YS50eXBlP2kucHVzaChzKTooYS5yYXcrPVwiXFxuXCIrcy5yYXcsYS50ZXh0Kz1cIlxcblwiK3MudGV4dCxELmlubGluZVF1ZXVlW0QuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1hLnRleHQpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLmZlbmNlcyhyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSxcImNvbnRpbnVlXCI7aWYocz1ELnRva2VuaXplci5oZWFkaW5nKHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksaS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLmhyKHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksaS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLmJsb2NrcXVvdGUocikpcmV0dXJuIHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSxpLnB1c2gocyksXCJjb250aW51ZVwiO2lmKHM9RC50b2tlbml6ZXIubGlzdChyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSxcImNvbnRpbnVlXCI7aWYocz1ELnRva2VuaXplci5odG1sKHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksaS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLmRlZihyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLCEoYT1pW2kubGVuZ3RoLTFdKXx8XCJwYXJhZ3JhcGhcIiE9PWEudHlwZSYmXCJ0ZXh0XCIhPT1hLnR5cGU/RC50b2tlbnMubGlua3Nbcy50YWddfHwoRC50b2tlbnMubGlua3Nbcy50YWddPXtocmVmOnMuaHJlZix0aXRsZTpzLnRpdGxlfSk6KGEucmF3Kz1cIlxcblwiK3MucmF3LGEudGV4dCs9XCJcXG5cIitzLnJhdyxELmlubGluZVF1ZXVlW0QuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1hLnRleHQpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLnRhYmxlKHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksaS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPUQudG9rZW5pemVyLmxoZWFkaW5nKHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksaS5wdXNoKHMpLFwiY29udGludWVcIjt2YXIgdSx0LG47aWYobD1yLEQub3B0aW9ucy5leHRlbnNpb25zJiZELm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrJiYodT0xLzAsdD1yLnNsaWNlKDEpLEQub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0QmxvY2suZm9yRWFjaChmdW5jdGlvbihlKXtcIm51bWJlclwiPT10eXBlb2Yobj1lLmNhbGwoe2xleGVyOnRoaXN9LHQpKSYmMDw9biYmKHU9TWF0aC5taW4odSxuKSl9KSx1PDEvMCkmJjA8PXUmJihsPXIuc3Vic3RyaW5nKDAsdSsxKSksRC5zdGF0ZS50b3AmJihzPUQudG9rZW5pemVyLnBhcmFncmFwaChsKSkpcmV0dXJuIGE9aVtpLmxlbmd0aC0xXSxvJiZcInBhcmFncmFwaFwiPT09YS50eXBlPyhhLnJhdys9XCJcXG5cIitzLnJhdyxhLnRleHQrPVwiXFxuXCIrcy50ZXh0LEQuaW5saW5lUXVldWUucG9wKCksRC5pbmxpbmVRdWV1ZVtELmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9YS50ZXh0KTppLnB1c2gocyksbz1sLmxlbmd0aCE9PXIubGVuZ3RoLHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSxcImNvbnRpbnVlXCI7aWYocz1ELnRva2VuaXplci50ZXh0KHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksKGE9aVtpLmxlbmd0aC0xXSkmJlwidGV4dFwiPT09YS50eXBlPyhhLnJhdys9XCJcXG5cIitzLnJhdyxhLnRleHQrPVwiXFxuXCIrcy50ZXh0LEQuaW5saW5lUXVldWUucG9wKCksRC5pbmxpbmVRdWV1ZVtELmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9YS50ZXh0KTppLnB1c2gocyksXCJjb250aW51ZVwiO2lmKHIpe3ZhciBlPVwiSW5maW5pdGUgbG9vcCBvbiBieXRlOiBcIityLmNoYXJDb2RlQXQoMCk7aWYoRC5vcHRpb25zLnNpbGVudClyZXR1cm4gY29uc29sZS5lcnJvcihlKSxcImJyZWFrXCI7dGhyb3cgbmV3IEVycm9yKGUpfX0oKTtpZihcImNvbnRpbnVlXCIhPT1lJiZcImJyZWFrXCI9PT1lKWJyZWFrfXJldHVybiB0aGlzLnN0YXRlLnRvcD0hMCxpfSxuLmlubGluZT1mdW5jdGlvbihlLHUpe3JldHVybiB0aGlzLmlubGluZVF1ZXVlLnB1c2goe3NyYzplLHRva2Vuczp1PXZvaWQgMD09PXU/W106dX0pLHV9LG4uaW5saW5lVG9rZW5zPWZ1bmN0aW9uKHIsaSl7dmFyIHMsYSxsLGUsbyxELGM9dGhpcyxwPSh2b2lkIDA9PT1pJiYoaT1bXSkscik7aWYodGhpcy50b2tlbnMubGlua3Mpe3ZhciB1PU9iamVjdC5rZXlzKHRoaXMudG9rZW5zLmxpbmtzKTtpZigwPHUubGVuZ3RoKWZvcig7bnVsbCE9KGU9dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2guZXhlYyhwKSk7KXUuaW5jbHVkZXMoZVswXS5zbGljZShlWzBdLmxhc3RJbmRleE9mKFwiW1wiKSsxLC0xKSkmJihwPXAuc2xpY2UoMCxlLmluZGV4KStcIltcIitcImFcIi5yZXBlYXQoZVswXS5sZW5ndGgtMikrXCJdXCIrcC5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5sYXN0SW5kZXgpKX1mb3IoO251bGwhPShlPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAuZXhlYyhwKSk7KXA9cC5zbGljZSgwLGUuaW5kZXgpK1wiW1wiK1wiYVwiLnJlcGVhdChlWzBdLmxlbmd0aC0yKStcIl1cIitwLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtmb3IoO251bGwhPShlPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5lc2NhcGVkRW1TdC5leGVjKHApKTspcD1wLnNsaWNlKDAsZS5pbmRleCtlWzBdLmxlbmd0aC0yKStcIisrXCIrcC5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuZXNjYXBlZEVtU3QubGFzdEluZGV4KSx0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuZXNjYXBlZEVtU3QubGFzdEluZGV4LS07Zm9yKDtyOyl7dmFyIHQ9ZnVuY3Rpb24oKXtpZihvfHwoRD1cIlwiKSxvPSExLGMub3B0aW9ucy5leHRlbnNpb25zJiZjLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUmJmMub3B0aW9ucy5leHRlbnNpb25zLmlubGluZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiEhKHM9ZS5jYWxsKHtsZXhlcjpjfSxyLGkpKSYmKHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSxpLnB1c2gocyksITApfSkpcmV0dXJuXCJjb250aW51ZVwiO2lmKHM9Yy50b2tlbml6ZXIuZXNjYXBlKHIpKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksaS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPWMudG9rZW5pemVyLnRhZyhyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLChhPWlbaS5sZW5ndGgtMV0pJiZcInRleHRcIj09PXMudHlwZSYmXCJ0ZXh0XCI9PT1hLnR5cGU/KGEucmF3Kz1zLnJhdyxhLnRleHQrPXMudGV4dCk6aS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPWMudG9rZW5pemVyLmxpbmsocikpcmV0dXJuIHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSxpLnB1c2gocyksXCJjb250aW51ZVwiO2lmKHM9Yy50b2tlbml6ZXIucmVmbGluayhyLGMudG9rZW5zLmxpbmtzKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLChhPWlbaS5sZW5ndGgtMV0pJiZcInRleHRcIj09PXMudHlwZSYmXCJ0ZXh0XCI9PT1hLnR5cGU/KGEucmF3Kz1zLnJhdyxhLnRleHQrPXMudGV4dCk6aS5wdXNoKHMpLFwiY29udGludWVcIjtpZihzPWMudG9rZW5pemVyLmVtU3Ryb25nKHIscCxEKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSxcImNvbnRpbnVlXCI7aWYocz1jLnRva2VuaXplci5jb2Rlc3BhbihyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSxcImNvbnRpbnVlXCI7aWYocz1jLnRva2VuaXplci5icihyKSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSxcImNvbnRpbnVlXCI7aWYocz1jLnRva2VuaXplci5kZWwocikpcmV0dXJuIHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSxpLnB1c2gocyksXCJjb250aW51ZVwiO2lmKHM9Yy50b2tlbml6ZXIuYXV0b2xpbmsocix2KSlyZXR1cm4gcj1yLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLGkucHVzaChzKSxcImNvbnRpbnVlXCI7aWYoIWMuc3RhdGUuaW5MaW5rJiYocz1jLnRva2VuaXplci51cmwocix2KSkpcmV0dXJuIHI9ci5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSxpLnB1c2gocyksXCJjb250aW51ZVwiO3ZhciB1LHQsbjtpZihsPXIsYy5vcHRpb25zLmV4dGVuc2lvbnMmJmMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0SW5saW5lJiYodT0xLzAsdD1yLnNsaWNlKDEpLGMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0SW5saW5lLmZvckVhY2goZnVuY3Rpb24oZSl7XCJudW1iZXJcIj09dHlwZW9mKG49ZS5jYWxsKHtsZXhlcjp0aGlzfSx0KSkmJjA8PW4mJih1PU1hdGgubWluKHUsbikpfSksdTwxLzApJiYwPD11JiYobD1yLnN1YnN0cmluZygwLHUrMSkpLHM9Yy50b2tlbml6ZXIuaW5saW5lVGV4dChsLFApKXJldHVybiByPXIuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksXCJfXCIhPT1zLnJhdy5zbGljZSgtMSkmJihEPXMucmF3LnNsaWNlKC0xKSksbz0hMCwoYT1pW2kubGVuZ3RoLTFdKSYmXCJ0ZXh0XCI9PT1hLnR5cGU/KGEucmF3Kz1zLnJhdyxhLnRleHQrPXMudGV4dCk6aS5wdXNoKHMpLFwiY29udGludWVcIjtpZihyKXt2YXIgZT1cIkluZmluaXRlIGxvb3Agb24gYnl0ZTogXCIrci5jaGFyQ29kZUF0KDApO2lmKGMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIGNvbnNvbGUuZXJyb3IoZSksXCJicmVha1wiO3Rocm93IG5ldyBFcnJvcihlKX19KCk7aWYoXCJjb250aW51ZVwiIT09dCYmXCJicmVha1wiPT09dClicmVha31yZXR1cm4gaX0sbj10LHU9W3trZXk6XCJydWxlc1wiLGdldDpmdW5jdGlvbigpe3JldHVybntibG9jazpCLGlubGluZTp3fX19XSwoZT1udWxsKSYmaShuLnByb3RvdHlwZSxlKSx1JiZpKG4sdSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0fSgpLF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMub3B0aW9ucz1lfHxyLmRlZmF1bHRzfXZhciB1PWUucHJvdG90eXBlO3JldHVybiB1LmNvZGU9ZnVuY3Rpb24oZSx1LHQpe3ZhciBuLHU9KHV8fFwiXCIpLm1hdGNoKC9cXFMqLylbMF07cmV0dXJuIHRoaXMub3B0aW9ucy5oaWdobGlnaHQmJm51bGwhPShuPXRoaXMub3B0aW9ucy5oaWdobGlnaHQoZSx1KSkmJm4hPT1lJiYodD0hMCxlPW4pLGU9ZS5yZXBsYWNlKC9cXG4kLyxcIlwiKStcIlxcblwiLHU/JzxwcmU+PGNvZGUgY2xhc3M9XCInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K2QodSkrJ1wiPicrKHQ/ZTpkKGUsITApKStcIjwvY29kZT48L3ByZT5cXG5cIjpcIjxwcmU+PGNvZGU+XCIrKHQ/ZTpkKGUsITApKStcIjwvY29kZT48L3ByZT5cXG5cIn0sdS5ibG9ja3F1b3RlPWZ1bmN0aW9uKGUpe3JldHVyblwiPGJsb2NrcXVvdGU+XFxuXCIrZStcIjwvYmxvY2txdW90ZT5cXG5cIn0sdS5odG1sPWZ1bmN0aW9uKGUsdSl7cmV0dXJuIGV9LHUuaGVhZGluZz1mdW5jdGlvbihlLHUsdCxuKXtyZXR1cm4gdGhpcy5vcHRpb25zLmhlYWRlcklkcz9cIjxoXCIrdSsnIGlkPVwiJysodGhpcy5vcHRpb25zLmhlYWRlclByZWZpeCtuLnNsdWcodCkpKydcIj4nK2UrXCI8L2hcIit1K1wiPlxcblwiOlwiPGhcIit1K1wiPlwiK2UrXCI8L2hcIit1K1wiPlxcblwifSx1LmhyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy54aHRtbD9cIjxoci8+XFxuXCI6XCI8aHI+XFxuXCJ9LHUubGlzdD1mdW5jdGlvbihlLHUsdCl7dmFyIG49dT9cIm9sXCI6XCJ1bFwiO3JldHVyblwiPFwiK24rKHUmJjEhPT10Pycgc3RhcnQ9XCInK3QrJ1wiJzpcIlwiKStcIj5cXG5cIitlK1wiPC9cIituK1wiPlxcblwifSx1Lmxpc3RpdGVtPWZ1bmN0aW9uKGUpe3JldHVyblwiPGxpPlwiK2UrXCI8L2xpPlxcblwifSx1LmNoZWNrYm94PWZ1bmN0aW9uKGUpe3JldHVyblwiPGlucHV0IFwiKyhlPydjaGVja2VkPVwiXCIgJzpcIlwiKSsnZGlzYWJsZWQ9XCJcIiB0eXBlPVwiY2hlY2tib3hcIicrKHRoaXMub3B0aW9ucy54aHRtbD9cIiAvXCI6XCJcIikrXCI+IFwifSx1LnBhcmFncmFwaD1mdW5jdGlvbihlKXtyZXR1cm5cIjxwPlwiK2UrXCI8L3A+XFxuXCJ9LHUudGFibGU9ZnVuY3Rpb24oZSx1KXtyZXR1cm5cIjx0YWJsZT5cXG48dGhlYWQ+XFxuXCIrZStcIjwvdGhlYWQ+XFxuXCIrKHU9dSYmXCI8dGJvZHk+XCIrdStcIjwvdGJvZHk+XCIpK1wiPC90YWJsZT5cXG5cIn0sdS50YWJsZXJvdz1mdW5jdGlvbihlKXtyZXR1cm5cIjx0cj5cXG5cIitlK1wiPC90cj5cXG5cIn0sdS50YWJsZWNlbGw9ZnVuY3Rpb24oZSx1KXt2YXIgdD11LmhlYWRlcj9cInRoXCI6XCJ0ZFwiO3JldHVybih1LmFsaWduP1wiPFwiK3QrJyBhbGlnbj1cIicrdS5hbGlnbisnXCI+JzpcIjxcIit0K1wiPlwiKStlK1wiPC9cIit0K1wiPlxcblwifSx1LnN0cm9uZz1mdW5jdGlvbihlKXtyZXR1cm5cIjxzdHJvbmc+XCIrZStcIjwvc3Ryb25nPlwifSx1LmVtPWZ1bmN0aW9uKGUpe3JldHVyblwiPGVtPlwiK2UrXCI8L2VtPlwifSx1LmNvZGVzcGFuPWZ1bmN0aW9uKGUpe3JldHVyblwiPGNvZGU+XCIrZStcIjwvY29kZT5cIn0sdS5icj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/XCI8YnIvPlwiOlwiPGJyPlwifSx1LmRlbD1mdW5jdGlvbihlKXtyZXR1cm5cIjxkZWw+XCIrZStcIjwvZGVsPlwifSx1Lmxpbms9ZnVuY3Rpb24oZSx1LHQpe3JldHVybiBudWxsPT09KGU9Zih0aGlzLm9wdGlvbnMuc2FuaXRpemUsdGhpcy5vcHRpb25zLmJhc2VVcmwsZSkpP3Q6KGU9JzxhIGhyZWY9XCInK2UrJ1wiJyx1JiYoZSs9JyB0aXRsZT1cIicrdSsnXCInKSxlK1wiPlwiK3QrXCI8L2E+XCIpfSx1LmltYWdlPWZ1bmN0aW9uKGUsdSx0KXtyZXR1cm4gbnVsbD09PShlPWYodGhpcy5vcHRpb25zLnNhbml0aXplLHRoaXMub3B0aW9ucy5iYXNlVXJsLGUpKT90OihlPSc8aW1nIHNyYz1cIicrZSsnXCIgYWx0PVwiJyt0KydcIicsdSYmKGUrPScgdGl0bGU9XCInK3UrJ1wiJyksZSsodGhpcy5vcHRpb25zLnhodG1sP1wiLz5cIjpcIj5cIikpfSx1LnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGV9KCksej1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9dmFyIHU9ZS5wcm90b3R5cGU7cmV0dXJuIHUuc3Ryb25nPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx1LmVtPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx1LmNvZGVzcGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx1LmRlbD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdS5odG1sPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx1LnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHUubGluaz1mdW5jdGlvbihlLHUsdCl7cmV0dXJuXCJcIit0fSx1LmltYWdlPWZ1bmN0aW9uKGUsdSx0KXtyZXR1cm5cIlwiK3R9LHUuYnI9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifSxlfSgpLCQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zZWVuPXt9fXZhciB1PWUucHJvdG90eXBlO3JldHVybiB1LnNlcmlhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKC88WyFcXC9hLXpdLio/Pi9naSxcIlwiKS5yZXBsYWNlKC9bXFx1MjAwMC1cXHUyMDZGXFx1MkUwMC1cXHUyRTdGXFxcXCchXCIjJCUmKCkqKywuLzo7PD0+P0BbXFxdXmB7fH1+XS9nLFwiXCIpLnJlcGxhY2UoL1xccy9nLFwiLVwiKX0sdS5nZXROZXh0U2FmZVNsdWc9ZnVuY3Rpb24oZSx1KXt2YXIgdD1lLG49MDtpZih0aGlzLnNlZW4uaGFzT3duUHJvcGVydHkodCkpZm9yKG49dGhpcy5zZWVuW2VdO3Q9ZStcIi1cIisgKytuLHRoaXMuc2Vlbi5oYXNPd25Qcm9wZXJ0eSh0KTspO3JldHVybiB1fHwodGhpcy5zZWVuW2VdPW4sdGhpcy5zZWVuW3RdPTApLHR9LHUuc2x1Zz1mdW5jdGlvbihlLHUpe3ZvaWQgMD09PXUmJih1PXt9KTtlPXRoaXMuc2VyaWFsaXplKGUpO3JldHVybiB0aGlzLmdldE5leHRTYWZlU2x1ZyhlLHUuZHJ5cnVuKX0sZX0oKSxTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLm9wdGlvbnM9ZXx8ci5kZWZhdWx0cyx0aGlzLm9wdGlvbnMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyfHxuZXcgXyx0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRlcmVyPW5ldyB6LHRoaXMuc2x1Z2dlcj1uZXcgJH10LnBhcnNlPWZ1bmN0aW9uKGUsdSl7cmV0dXJuIG5ldyB0KHUpLnBhcnNlKGUpfSx0LnBhcnNlSW5saW5lPWZ1bmN0aW9uKGUsdSl7cmV0dXJuIG5ldyB0KHUpLnBhcnNlSW5saW5lKGUpfTt2YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihlLHUpe3ZvaWQgMD09PXUmJih1PSEwKTtmb3IodmFyIHQsbixyLGkscyxhLGwsbyxELGMscCxoLEYsZixnLEEsZD1cIlwiLGs9ZS5sZW5ndGgsQz0wO0M8aztDKyspaWYobz1lW0NdLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tvLnR5cGVdJiYoITEhPT0oQT10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbby50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sbykpfHwhW1wic3BhY2VcIixcImhyXCIsXCJoZWFkaW5nXCIsXCJjb2RlXCIsXCJ0YWJsZVwiLFwiYmxvY2txdW90ZVwiLFwibGlzdFwiLFwiaHRtbFwiLFwicGFyYWdyYXBoXCIsXCJ0ZXh0XCJdLmluY2x1ZGVzKG8udHlwZSkpKWQrPUF8fFwiXCI7ZWxzZSBzd2l0Y2goby50eXBlKXtjYXNlXCJzcGFjZVwiOmNvbnRpbnVlO2Nhc2VcImhyXCI6ZCs9dGhpcy5yZW5kZXJlci5ocigpO2NvbnRpbnVlO2Nhc2VcImhlYWRpbmdcIjpkKz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZShvLnRva2Vucyksby5kZXB0aCxtKHRoaXMucGFyc2VJbmxpbmUoby50b2tlbnMsdGhpcy50ZXh0UmVuZGVyZXIpKSx0aGlzLnNsdWdnZXIpO2NvbnRpbnVlO2Nhc2VcImNvZGVcIjpkKz10aGlzLnJlbmRlcmVyLmNvZGUoby50ZXh0LG8ubGFuZyxvLmVzY2FwZWQpO2NvbnRpbnVlO2Nhc2VcInRhYmxlXCI6Zm9yKGE9RD1cIlwiLHI9by5oZWFkZXIubGVuZ3RoLHQ9MDt0PHI7dCsrKWErPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUoby5oZWFkZXJbdF0udG9rZW5zKSx7aGVhZGVyOiEwLGFsaWduOm8uYWxpZ25bdF19KTtmb3IoRCs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhhKSxsPVwiXCIscj1vLnJvd3MubGVuZ3RoLHQ9MDt0PHI7dCsrKXtmb3IoYT1cIlwiLGk9KHM9by5yb3dzW3RdKS5sZW5ndGgsbj0wO248aTtuKyspYSs9dGhpcy5yZW5kZXJlci50YWJsZWNlbGwodGhpcy5wYXJzZUlubGluZShzW25dLnRva2Vucykse2hlYWRlcjohMSxhbGlnbjpvLmFsaWduW25dfSk7bCs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhhKX1kKz10aGlzLnJlbmRlcmVyLnRhYmxlKEQsbCk7Y29udGludWU7Y2FzZVwiYmxvY2txdW90ZVwiOmw9dGhpcy5wYXJzZShvLnRva2VucyksZCs9dGhpcy5yZW5kZXJlci5ibG9ja3F1b3RlKGwpO2NvbnRpbnVlO2Nhc2VcImxpc3RcIjpmb3IoRD1vLm9yZGVyZWQsRT1vLnN0YXJ0LGM9by5sb29zZSxyPW8uaXRlbXMubGVuZ3RoLGw9XCJcIix0PTA7dDxyO3QrKylGPShoPW8uaXRlbXNbdF0pLmNoZWNrZWQsZj1oLnRhc2sscD1cIlwiLGgudGFzayYmKGc9dGhpcy5yZW5kZXJlci5jaGVja2JveChGKSxjPzA8aC50b2tlbnMubGVuZ3RoJiZcInBhcmFncmFwaFwiPT09aC50b2tlbnNbMF0udHlwZT8oaC50b2tlbnNbMF0udGV4dD1nK1wiIFwiK2gudG9rZW5zWzBdLnRleHQsaC50b2tlbnNbMF0udG9rZW5zJiYwPGgudG9rZW5zWzBdLnRva2Vucy5sZW5ndGgmJlwidGV4dFwiPT09aC50b2tlbnNbMF0udG9rZW5zWzBdLnR5cGUmJihoLnRva2Vuc1swXS50b2tlbnNbMF0udGV4dD1nK1wiIFwiK2gudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0KSk6aC50b2tlbnMudW5zaGlmdCh7dHlwZTpcInRleHRcIix0ZXh0Omd9KTpwKz1nKSxwKz10aGlzLnBhcnNlKGgudG9rZW5zLGMpLGwrPXRoaXMucmVuZGVyZXIubGlzdGl0ZW0ocCxmLEYpO2QrPXRoaXMucmVuZGVyZXIubGlzdChsLEQsRSk7Y29udGludWU7Y2FzZVwiaHRtbFwiOmQrPXRoaXMucmVuZGVyZXIuaHRtbChvLnRleHQsby5ibG9jayk7Y29udGludWU7Y2FzZVwicGFyYWdyYXBoXCI6ZCs9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShvLnRva2VucykpO2NvbnRpbnVlO2Nhc2VcInRleHRcIjpmb3IobD1vLnRva2Vucz90aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zKTpvLnRleHQ7QysxPGsmJlwidGV4dFwiPT09ZVtDKzFdLnR5cGU7KWwrPVwiXFxuXCIrKChvPWVbKytDXSkudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoby50b2tlbnMpOm8udGV4dCk7ZCs9dT90aGlzLnJlbmRlcmVyLnBhcmFncmFwaChsKTpsO2NvbnRpbnVlO2RlZmF1bHQ6dmFyIEU9J1Rva2VuIHdpdGggXCInK28udHlwZSsnXCIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKEUpO3Rocm93IG5ldyBFcnJvcihFKX1yZXR1cm4gZH0sZS5wYXJzZUlubGluZT1mdW5jdGlvbihlLHUpe3U9dXx8dGhpcy5yZW5kZXJlcjtmb3IodmFyIHQsbixyPVwiXCIsaT1lLmxlbmd0aCxzPTA7czxpO3MrKylpZih0PWVbc10sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3QudHlwZV0mJighMSE9PShuPXRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1t0LnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSx0KSl8fCFbXCJlc2NhcGVcIixcImh0bWxcIixcImxpbmtcIixcImltYWdlXCIsXCJzdHJvbmdcIixcImVtXCIsXCJjb2Rlc3BhblwiLFwiYnJcIixcImRlbFwiLFwidGV4dFwiXS5pbmNsdWRlcyh0LnR5cGUpKSlyKz1ufHxcIlwiO2Vsc2Ugc3dpdGNoKHQudHlwZSl7Y2FzZVwiZXNjYXBlXCI6cis9dS50ZXh0KHQudGV4dCk7YnJlYWs7Y2FzZVwiaHRtbFwiOnIrPXUuaHRtbCh0LnRleHQpO2JyZWFrO2Nhc2VcImxpbmtcIjpyKz11LmxpbmsodC5ocmVmLHQudGl0bGUsdGhpcy5wYXJzZUlubGluZSh0LnRva2Vucyx1KSk7YnJlYWs7Y2FzZVwiaW1hZ2VcIjpyKz11LmltYWdlKHQuaHJlZix0LnRpdGxlLHQudGV4dCk7YnJlYWs7Y2FzZVwic3Ryb25nXCI6cis9dS5zdHJvbmcodGhpcy5wYXJzZUlubGluZSh0LnRva2Vucyx1KSk7YnJlYWs7Y2FzZVwiZW1cIjpyKz11LmVtKHRoaXMucGFyc2VJbmxpbmUodC50b2tlbnMsdSkpO2JyZWFrO2Nhc2VcImNvZGVzcGFuXCI6cis9dS5jb2Rlc3Bhbih0LnRleHQpO2JyZWFrO2Nhc2VcImJyXCI6cis9dS5icigpO2JyZWFrO2Nhc2VcImRlbFwiOnIrPXUuZGVsKHRoaXMucGFyc2VJbmxpbmUodC50b2tlbnMsdSkpO2JyZWFrO2Nhc2VcInRleHRcIjpyKz11LnRleHQodC50ZXh0KTticmVhaztkZWZhdWx0OnZhciBhPSdUb2tlbiB3aXRoIFwiJyt0LnR5cGUrJ1wiIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihhKTt0aHJvdyBuZXcgRXJyb3IoYSl9cmV0dXJuIHJ9LHR9KCksVD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5vcHRpb25zPWV8fHIuZGVmYXVsdHN9dmFyIHU9ZS5wcm90b3R5cGU7cmV0dXJuIHUucHJlcHJvY2Vzcz1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdS5wb3N0cHJvY2Vzcz1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZX0oKTtmdW5jdGlvbiBSKGYsZyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCk7dmFyIHIsaSxzLHUsYT1BKHt9LHQpLGw9KHQ9QSh7fSxJLmRlZmF1bHRzLGEpLHI9dC5zaWxlbnQsaT10LmFzeW5jLHM9bixmdW5jdGlvbihlKXt2YXIgdTtpZihlLm1lc3NhZ2UrPVwiXFxuUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuXCIscilyZXR1cm4gdT1cIjxwPkFuIGVycm9yIG9jY3VycmVkOjwvcD48cHJlPlwiK2QoZS5tZXNzYWdlK1wiXCIsITApK1wiPC9wcmU+XCIsaT9Qcm9taXNlLnJlc29sdmUodSk6cz92b2lkIHMobnVsbCx1KTp1O2lmKGkpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO2lmKCFzKXRocm93IGU7cyhlKX0pO2lmKG51bGw9PWUpcmV0dXJuIGwobmV3IEVycm9yKFwibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbFwiKSk7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIGwobmV3IEVycm9yKFwibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlIFwiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKStcIiwgc3RyaW5nIGV4cGVjdGVkXCIpKTtpZihhPW4sKHU9dCkmJiF1LnNpbGVudCYmKGEmJmNvbnNvbGUud2FybihcIm1hcmtlZCgpOiBjYWxsYmFjayBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFJlYWQgbW9yZSBoZXJlOiBodHRwczovL21hcmtlZC5qcy5vcmcvdXNpbmdfcHJvI2FzeW5jXCIpLCh1LnNhbml0aXplfHx1LnNhbml0aXplcikmJmNvbnNvbGUud2FybihcIm1hcmtlZCgpOiBzYW5pdGl6ZSBhbmQgc2FuaXRpemVyIHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjcuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vbWFya2VkLmpzLm9yZy8jL1VTSU5HX0FEVkFOQ0VELm1kI29wdGlvbnNcIiksIXUuaGlnaGxpZ2h0JiZcImxhbmd1YWdlLVwiPT09dS5sYW5nUHJlZml4fHxjb25zb2xlLndhcm4oXCJtYXJrZWQoKTogaGlnaGxpZ2h0IGFuZCBsYW5nUHJlZml4IHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLWhpZ2hsaWdodC5cIiksdS5tYW5nbGUmJmNvbnNvbGUud2FybihcIm1hcmtlZCgpOiBtYW5nbGUgcGFyYW1ldGVyIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlzIHdhcm5pbmcsIGluc3RhbGwgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLW1hbmdsZSwgb3IgZGlzYWJsZSBieSBzZXR0aW5nIGB7bWFuZ2xlOiBmYWxzZX1gLlwiKSx1LmJhc2VVcmwmJmNvbnNvbGUud2FybihcIm1hcmtlZCgpOiBiYXNlVXJsIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1iYXNlLXVybC5cIiksdS5zbWFydHlwYW50cyYmY29uc29sZS53YXJuKFwibWFya2VkKCk6IHNtYXJ0eXBhbnRzIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1zbWFydHlwYW50cy5cIiksdS54aHRtbCYmY29uc29sZS53YXJuKFwibWFya2VkKCk6IHhodG1sIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC14aHRtbC5cIiksdS5oZWFkZXJJZHN8fHUuaGVhZGVyUHJlZml4KSYmY29uc29sZS53YXJuKFwibWFya2VkKCk6IGhlYWRlcklkcyBhbmQgaGVhZGVyUHJlZml4IHBhcmFtZXRlcnMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlzIHdhcm5pbmcsIGluc3RhbGwgIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1nZm0taGVhZGluZy1pZCwgb3IgZGlzYWJsZSBieSBzZXR0aW5nIGB7aGVhZGVySWRzOiBmYWxzZX1gLlwiKSx0Lmhvb2tzJiYodC5ob29rcy5vcHRpb25zPXQpLG4pe3ZhciBvLEQ9dC5oaWdobGlnaHQ7dHJ5e3QuaG9va3MmJihlPXQuaG9va3MucHJlcHJvY2VzcyhlKSksbz1mKGUsdCl9Y2F0Y2goZSl7cmV0dXJuIGwoZSl9dmFyIGMscD1mdW5jdGlvbih1KXt2YXIgZTtpZighdSl0cnl7dC53YWxrVG9rZW5zJiZJLndhbGtUb2tlbnMobyx0LndhbGtUb2tlbnMpLGU9ZyhvLHQpLHQuaG9va3MmJihlPXQuaG9va3MucG9zdHByb2Nlc3MoZSkpfWNhdGNoKGUpe3U9ZX1yZXR1cm4gdC5oaWdobGlnaHQ9RCx1P2wodSk6bihudWxsLGUpfTtyZXR1cm4hRHx8RC5sZW5ndGg8Mz9wKCk6KGRlbGV0ZSB0LmhpZ2hsaWdodCxvLmxlbmd0aD8oYz0wLEkud2Fsa1Rva2VucyhvLGZ1bmN0aW9uKHQpe1wiY29kZVwiPT09dC50eXBlJiYoYysrLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtEKHQudGV4dCx0LmxhbmcsZnVuY3Rpb24oZSx1KXtpZihlKXJldHVybiBwKGUpO251bGwhPXUmJnUhPT10LnRleHQmJih0LnRleHQ9dSx0LmVzY2FwZWQ9ITApLDA9PT0tLWMmJnAoKX0pfSwwKSl9KSx2b2lkKDA9PT1jJiZwKCkpKTpwKCkpfWlmKHQuYXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0Lmhvb2tzP3QuaG9va3MucHJlcHJvY2VzcyhlKTplKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBmKGUsdCl9KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LndhbGtUb2tlbnM/UHJvbWlzZS5hbGwoSS53YWxrVG9rZW5zKGUsdC53YWxrVG9rZW5zKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBlfSk6ZX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSx0KX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHQuaG9va3M/dC5ob29rcy5wb3N0cHJvY2VzcyhlKTplfSkuY2F0Y2gobCk7dHJ5e3QuaG9va3MmJihlPXQuaG9va3MucHJlcHJvY2VzcyhlKSk7dmFyIGg9ZihlLHQpLEY9KHQud2Fsa1Rva2VucyYmSS53YWxrVG9rZW5zKGgsdC53YWxrVG9rZW5zKSxnKGgsdCkpO3JldHVybiBGPXQuaG9va3M/dC5ob29rcy5wb3N0cHJvY2VzcyhGKTpGfWNhdGNoKGUpe3JldHVybiBsKGUpfX19ZnVuY3Rpb24gSShlLHUsdCl7cmV0dXJuIFIoeS5sZXgsUy5wYXJzZSkoZSx1LHQpfVQucGFzc1Rocm91Z2hIb29rcz1uZXcgU2V0KFtcInByZXByb2Nlc3NcIixcInBvc3Rwcm9jZXNzXCJdKSxJLm9wdGlvbnM9SS5zZXRPcHRpb25zPWZ1bmN0aW9uKGUpe3JldHVybiBJLmRlZmF1bHRzPUEoe30sSS5kZWZhdWx0cyxlKSxlPUkuZGVmYXVsdHMsci5kZWZhdWx0cz1lLEl9LEkuZ2V0RGVmYXVsdHM9ZSxJLmRlZmF1bHRzPXIuZGVmYXVsdHMsSS51c2U9ZnVuY3Rpb24oKXtmb3IodmFyIEQ9SS5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fSxlPWFyZ3VtZW50cy5sZW5ndGgsdT1uZXcgQXJyYXkoZSksdD0wO3Q8ZTt0KyspdVt0XT1hcmd1bWVudHNbdF07dS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciB0LGU9QSh7fSxzKTtpZihlLmFzeW5jPUkuZGVmYXVsdHMuYXN5bmN8fGUuYXN5bmN8fCExLHMuZXh0ZW5zaW9ucyYmKHMuZXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKCFyLm5hbWUpdGhyb3cgbmV3IEVycm9yKFwiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWRcIik7dmFyIGk7aWYoci5yZW5kZXJlciYmKGk9RC5yZW5kZXJlcnNbci5uYW1lXSxELnJlbmRlcmVyc1tyLm5hbWVdPWk/ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx1PW5ldyBBcnJheShlKSx0PTA7dDxlO3QrKyl1W3RdPWFyZ3VtZW50c1t0XTt2YXIgbj1yLnJlbmRlcmVyLmFwcGx5KHRoaXMsdSk7cmV0dXJuIG49ITE9PT1uP2kuYXBwbHkodGhpcyx1KTpufTpyLnJlbmRlcmVyKSxyLnRva2VuaXplcil7aWYoIXIubGV2ZWx8fFwiYmxvY2tcIiE9PXIubGV2ZWwmJlwiaW5saW5lXCIhPT1yLmxldmVsKXRocm93IG5ldyBFcnJvcihcImV4dGVuc2lvbiBsZXZlbCBtdXN0IGJlICdibG9jaycgb3IgJ2lubGluZSdcIik7RFtyLmxldmVsXT9EW3IubGV2ZWxdLnVuc2hpZnQoci50b2tlbml6ZXIpOkRbci5sZXZlbF09W3IudG9rZW5pemVyXSxyLnN0YXJ0JiYoXCJibG9ja1wiPT09ci5sZXZlbD9ELnN0YXJ0QmxvY2s/RC5zdGFydEJsb2NrLnB1c2goci5zdGFydCk6RC5zdGFydEJsb2NrPVtyLnN0YXJ0XTpcImlubGluZVwiPT09ci5sZXZlbCYmKEQuc3RhcnRJbmxpbmU/RC5zdGFydElubGluZS5wdXNoKHIuc3RhcnQpOkQuc3RhcnRJbmxpbmU9W3Iuc3RhcnRdKSl9ci5jaGlsZFRva2VucyYmKEQuY2hpbGRUb2tlbnNbci5uYW1lXT1yLmNoaWxkVG9rZW5zKX0pLGUuZXh0ZW5zaW9ucz1EKSxzLnJlbmRlcmVyKXt2YXIgdSxhPUkuZGVmYXVsdHMucmVuZGVyZXJ8fG5ldyBfO2Zvcih1IGluIHMucmVuZGVyZXIpIWZ1bmN0aW9uKHIpe3ZhciBpPWFbcl07YVtyXT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KGUpLHQ9MDt0PGU7dCsrKXVbdF09YXJndW1lbnRzW3RdO3ZhciBuPXMucmVuZGVyZXJbcl0uYXBwbHkoYSx1KTtyZXR1cm4gbj0hMT09PW4/aS5hcHBseShhLHUpOm59fSh1KTtlLnJlbmRlcmVyPWF9aWYocy50b2tlbml6ZXIpe3ZhciBuLGw9SS5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBiO2ZvcihuIGluIHMudG9rZW5pemVyKSFmdW5jdGlvbihyKXt2YXIgaT1sW3JdO2xbcl09ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx1PW5ldyBBcnJheShlKSx0PTA7dDxlO3QrKyl1W3RdPWFyZ3VtZW50c1t0XTt2YXIgbj1zLnRva2VuaXplcltyXS5hcHBseShsLHUpO3JldHVybiBuPSExPT09bj9pLmFwcGx5KGwsdSk6bn19KG4pO2UudG9rZW5pemVyPWx9aWYocy5ob29rcyl7dmFyIHIsbz1JLmRlZmF1bHRzLmhvb2tzfHxuZXcgVDtmb3IociBpbiBzLmhvb2tzKSFmdW5jdGlvbihyKXt2YXIgaT1vW3JdO1QucGFzc1Rocm91Z2hIb29rcy5oYXMocik/b1tyXT1mdW5jdGlvbihlKXtyZXR1cm4gSS5kZWZhdWx0cy5hc3luYz9Qcm9taXNlLnJlc29sdmUocy5ob29rc1tyXS5jYWxsKG8sZSkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2FsbChvLGUpfSk6KGU9cy5ob29rc1tyXS5jYWxsKG8sZSksaS5jYWxsKG8sZSkpfTpvW3JdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdT1uZXcgQXJyYXkoZSksdD0wO3Q8ZTt0KyspdVt0XT1hcmd1bWVudHNbdF07dmFyIG49cy5ob29rc1tyXS5hcHBseShvLHUpO3JldHVybiBuPSExPT09bj9pLmFwcGx5KG8sdSk6bn19KHIpO2UuaG9va3M9b31zLndhbGtUb2tlbnMmJih0PUkuZGVmYXVsdHMud2Fsa1Rva2VucyxlLndhbGtUb2tlbnM9ZnVuY3Rpb24oZSl7dmFyIHU9W107cmV0dXJuIHUucHVzaChzLndhbGtUb2tlbnMuY2FsbCh0aGlzLGUpKSx1PXQ/dS5jb25jYXQodC5jYWxsKHRoaXMsZSkpOnV9KSxJLnNldE9wdGlvbnMoZSl9KX0sSS53YWxrVG9rZW5zPWZ1bmN0aW9uKGUsYSl7Zm9yKHZhciBsLG89W10sdT1EKGUpOyEobD11KCkpLmRvbmU7KSFmdW5jdGlvbigpe3ZhciB1PWwudmFsdWU7c3dpdGNoKG89by5jb25jYXQoYS5jYWxsKEksdSkpLHUudHlwZSl7Y2FzZVwidGFibGVcIjpmb3IodmFyIGU9RCh1LmhlYWRlcik7ISh0PWUoKSkuZG9uZTspe3ZhciB0PXQudmFsdWU7bz1vLmNvbmNhdChJLndhbGtUb2tlbnModC50b2tlbnMsYSkpfWZvcih2YXIgbixyPUQodS5yb3dzKTshKG49cigpKS5kb25lOylmb3IodmFyIGk9RChuLnZhbHVlKTshKHM9aSgpKS5kb25lOyl7dmFyIHM9cy52YWx1ZTtvPW8uY29uY2F0KEkud2Fsa1Rva2VucyhzLnRva2VucyxhKSl9YnJlYWs7Y2FzZVwibGlzdFwiOm89by5jb25jYXQoSS53YWxrVG9rZW5zKHUuaXRlbXMsYSkpO2JyZWFrO2RlZmF1bHQ6SS5kZWZhdWx0cy5leHRlbnNpb25zJiZJLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnMmJkkuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1t1LnR5cGVdP0kuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1t1LnR5cGVdLmZvckVhY2goZnVuY3Rpb24oZSl7bz1vLmNvbmNhdChJLndhbGtUb2tlbnModVtlXSxhKSl9KTp1LnRva2VucyYmKG89by5jb25jYXQoSS53YWxrVG9rZW5zKHUudG9rZW5zLGEpKSl9fSgpO3JldHVybiBvfSxJLnBhcnNlSW5saW5lPVIoeS5sZXhJbmxpbmUsUy5wYXJzZUlubGluZSksSS5QYXJzZXI9UyxJLnBhcnNlcj1TLnBhcnNlLEkuUmVuZGVyZXI9XyxJLlRleHRSZW5kZXJlcj16LEkuTGV4ZXI9eSxJLmxleGVyPXkubGV4LEkuVG9rZW5pemVyPWIsSS5TbHVnZ2VyPSQsSS5Ib29rcz1UO3ZhciBrPShJLnBhcnNlPUkpLm9wdGlvbnMsTD1JLnNldE9wdGlvbnMsVT1JLnVzZSxRPUkud2Fsa1Rva2VucyxNPUkucGFyc2VJbmxpbmUsTj1JLEg9Uy5wYXJzZSxYPXkubGV4O3IuSG9va3M9VCxyLkxleGVyPXksci5QYXJzZXI9UyxyLlJlbmRlcmVyPV8sci5TbHVnZ2VyPSQsci5UZXh0UmVuZGVyZXI9eixyLlRva2VuaXplcj1iLHIuZ2V0RGVmYXVsdHM9ZSxyLmxleGVyPVgsci5tYXJrZWQ9SSxyLm9wdGlvbnM9ayxyLnBhcnNlPU4sci5wYXJzZUlubGluZT1NLHIucGFyc2VyPUgsci5zZXRPcHRpb25zPUwsci51c2U9VSxyLndhbGtUb2tlbnM9UX0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///30\n"); /***/ }), /* 31 */ /*!************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/index/config.js ***! \************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("var config = {\n post: \"POST\",\n get: \"GET\",\n openid: 'openid',\n type_ai: 'type_ai',\n type_self: 'type_self'\n};\nmodule.exports = config;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvY29uZmlnLmpzIl0sIm5hbWVzIjpbImNvbmZpZyIsInBvc3QiLCJnZXQiLCJvcGVuaWQiLCJ0eXBlX2FpIiwidHlwZV9zZWxmIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBTUEsTUFBTSxHQUFHO0VBQ2RDLElBQUksRUFBQyxNQUFNO0VBQ1hDLEdBQUcsRUFBQyxLQUFLO0VBQ1RDLE1BQU0sRUFBQyxRQUFRO0VBQ2ZDLE9BQU8sRUFBQyxTQUFTO0VBQ2pCQyxTQUFTLEVBQUM7QUFDWCxDQUFDO0FBQ0RDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHUCxNQUFNIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29uZmlnID0ge1xuXHRwb3N0OlwiUE9TVFwiLFxuXHRnZXQ6XCJHRVRcIixcblx0b3BlbmlkOidvcGVuaWQnLFxuXHR0eXBlX2FpOid0eXBlX2FpJyxcblx0dHlwZV9zZWxmOid0eXBlX3NlbGYnLFxufTtcbm1vZHVsZS5leHBvcnRzID0gY29uZmlnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n"); /***/ }), /* 32 */ /*!***********************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/highlight.js/lib/common.js ***! \***********************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var hljs = __webpack_require__(/*! ./core */ 33);\nhljs.registerLanguage('xml', __webpack_require__(/*! ./languages/xml */ 55));\nhljs.registerLanguage('bash', __webpack_require__(/*! ./languages/bash */ 56));\nhljs.registerLanguage('c', __webpack_require__(/*! ./languages/c */ 57));\nhljs.registerLanguage('cpp', __webpack_require__(/*! ./languages/cpp */ 58));\nhljs.registerLanguage('csharp', __webpack_require__(/*! ./languages/csharp */ 59));\nhljs.registerLanguage('css', __webpack_require__(/*! ./languages/css */ 60));\nhljs.registerLanguage('markdown', __webpack_require__(/*! ./languages/markdown */ 61));\nhljs.registerLanguage('diff', __webpack_require__(/*! ./languages/diff */ 62));\nhljs.registerLanguage('ruby', __webpack_require__(/*! ./languages/ruby */ 63));\nhljs.registerLanguage('go', __webpack_require__(/*! ./languages/go */ 64));\nhljs.registerLanguage('graphql', __webpack_require__(/*! ./languages/graphql */ 65));\nhljs.registerLanguage('ini', __webpack_require__(/*! ./languages/ini */ 66));\nhljs.registerLanguage('java', __webpack_require__(/*! ./languages/java */ 67));\nhljs.registerLanguage('javascript', __webpack_require__(/*! ./languages/javascript */ 68));\nhljs.registerLanguage('json', __webpack_require__(/*! ./languages/json */ 69));\nhljs.registerLanguage('kotlin', __webpack_require__(/*! ./languages/kotlin */ 70));\nhljs.registerLanguage('less', __webpack_require__(/*! ./languages/less */ 71));\nhljs.registerLanguage('lua', __webpack_require__(/*! ./languages/lua */ 72));\nhljs.registerLanguage('makefile', __webpack_require__(/*! ./languages/makefile */ 73));\nhljs.registerLanguage('perl', __webpack_require__(/*! ./languages/perl */ 74));\nhljs.registerLanguage('objectivec', __webpack_require__(/*! ./languages/objectivec */ 75));\nhljs.registerLanguage('php', __webpack_require__(/*! ./languages/php */ 76));\nhljs.registerLanguage('php-template', __webpack_require__(/*! ./languages/php-template */ 77));\nhljs.registerLanguage('plaintext', __webpack_require__(/*! ./languages/plaintext */ 78));\nhljs.registerLanguage('python', __webpack_require__(/*! ./languages/python */ 79));\nhljs.registerLanguage('python-repl', __webpack_require__(/*! ./languages/python-repl */ 80));\nhljs.registerLanguage('r', __webpack_require__(/*! ./languages/r */ 81));\nhljs.registerLanguage('rust', __webpack_require__(/*! ./languages/rust */ 82));\nhljs.registerLanguage('scss', __webpack_require__(/*! ./languages/scss */ 83));\nhljs.registerLanguage('shell', __webpack_require__(/*! ./languages/shell */ 84));\nhljs.registerLanguage('sql', __webpack_require__(/*! ./languages/sql */ 85));\nhljs.registerLanguage('swift', __webpack_require__(/*! ./languages/swift */ 86));\nhljs.registerLanguage('yaml', __webpack_require__(/*! ./languages/yaml */ 87));\nhljs.registerLanguage('typescript', __webpack_require__(/*! ./languages/typescript */ 88));\nhljs.registerLanguage('vbnet', __webpack_require__(/*! ./languages/vbnet */ 89));\nhljs.registerLanguage('wasm', __webpack_require__(/*! ./languages/wasm */ 90));\nhljs.HighlightJS = hljs;\nhljs.default = hljs;\nmodule.exports = hljs;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaGlnaGxpZ2h0LmpzL2xpYi9jb21tb24uanMiXSwibmFtZXMiOlsiaGxqcyIsInJlcXVpcmUiLCJyZWdpc3Rlckxhbmd1YWdlIiwiSGlnaGxpZ2h0SlMiLCJkZWZhdWx0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGdCQUFRLENBQUM7QUFFNUJELElBQUksQ0FBQ0UsZ0JBQWdCLENBQUMsS0FBSyxFQUFFRCxtQkFBTyxDQUFDLHlCQUFpQixDQUFDLENBQUM7QUFDeERELElBQUksQ0FBQ0UsZ0JBQWdCLENBQUMsTUFBTSxFQUFFRCxtQkFBTyxDQUFDLDBCQUFrQixDQUFDLENBQUM7QUFDMURELElBQUksQ0FBQ0UsZ0JBQWdCLENBQUMsR0FBRyxFQUFFRCxtQkFBTyxDQUFDLHVCQUFlLENBQUMsQ0FBQztBQUNwREQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUVELG1CQUFPLENBQUMseUJBQWlCLENBQUMsQ0FBQztBQUN4REQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELG1CQUFPLENBQUMsNEJBQW9CLENBQUMsQ0FBQztBQUM5REQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUVELG1CQUFPLENBQUMseUJBQWlCLENBQUMsQ0FBQztBQUN4REQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUVELG1CQUFPLENBQUMsOEJBQXNCLENBQUMsQ0FBQztBQUNsRUQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUVELG1CQUFPLENBQUMsMEJBQWtCLENBQUMsQ0FBQztBQUMxREQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUVELG1CQUFPLENBQUMsMEJBQWtCLENBQUMsQ0FBQztBQUMxREQsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUVELG1CQUFPLENBQUMsd0JBQWdCLENBQUMs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RTFERCxJQUFJLENBQUNHLFdBQVcsR0FBR0gsSUFBSTtBQUN2QkEsSUFBSSxDQUFDSSxPQUFPLEdBQUdKLElBQUk7QUFDbkJLLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHTixJQUFJIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGhsanMgPSByZXF1aXJlKCcuL2NvcmUnKTtcblxuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCd4bWwnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy94bWwnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ2Jhc2gnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9iYXNoJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdjJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvYycpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgnY3BwJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvY3BwJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdjc2hhcnAnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9jc2hhcnAnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ2NzcycsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL2NzcycpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgnbWFya2Rvd24nLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9tYXJrZG93bicpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgnZGlmZicsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL2RpZmYnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ3J1YnknLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9ydWJ5JykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdnbycsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL2dvJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdncmFwaHFsJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvZ3JhcGhxbCcpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgnaW5pJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvaW5pJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdqYXZhJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvamF2YScpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgnamF2YXNjcmlwdCcsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL2phdmFzY3JpcHQnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ2pzb24nLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9qc29uJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdrb3RsaW4nLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9rb3RsaW4nKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ2xlc3MnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9sZXNzJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdsdWEnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9sdWEnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ21ha2VmaWxlJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvbWFrZWZpbGUnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BlcmwnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9wZXJsJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdvYmplY3RpdmVjJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvb2JqZWN0aXZlYycpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgncGhwJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvcGhwJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdwaHAtdGVtcGxhdGUnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9waHAtdGVtcGxhdGUnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ3BsYWludGV4dCcsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL3BsYWludGV4dCcpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgncHl0aG9uJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvcHl0aG9uJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdweXRob24tcmVwbCcsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL3B5dGhvbi1yZXBsJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdyJywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvcicpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgncnVzdCcsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL3J1c3QnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ3Njc3MnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9zY3NzJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdzaGVsbCcsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL3NoZWxsJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCdzcWwnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy9zcWwnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ3N3aWZ0JywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvc3dpZnQnKSk7XG5obGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoJ3lhbWwnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy95YW1sJykpO1xuaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCd0eXBlc2NyaXB0JywgcmVxdWlyZSgnLi9sYW5ndWFnZXMvdHlwZXNjcmlwdCcpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgndmJuZXQnLCByZXF1aXJlKCcuL2xhbmd1YWdlcy92Ym5ldCcpKTtcbmhsanMucmVnaXN0ZXJMYW5ndWFnZSgnd2FzbScsIHJlcXVpcmUoJy4vbGFuZ3VhZ2VzL3dhc20nKSk7XG5cbmhsanMuSGlnaGxpZ2h0SlMgPSBobGpzXG5obGpzLmRlZmF1bHQgPSBobGpzXG5tb2R1bGUuZXhwb3J0cyA9IGhsanM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n"); /***/ }), /* 33 */ /*!*********************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/highlight.js/lib/core.js ***! \*********************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(__f__) {var _wrapNativeSuper = __webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ 34);\nvar _slicedToArray = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 40);\nvar _inherits = __webpack_require__(/*! @babel/runtime/helpers/inherits */ 46);\nvar _possibleConstructorReturn = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 47);\nvar _getPrototypeOf = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 35);\nvar _toConsumableArray = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 49);\nvar _classCallCheck = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 53);\nvar _createClass = __webpack_require__(/*! @babel/runtime/helpers/createClass */ 54);\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear = obj.delete = obj.set = function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add = obj.clear = obj.delete = function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n var prop = obj[name];\n var type = _typeof(prop);\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\nvar Response = /*#__PURE__*/function () {\n \"use strict\";\n\n /**\n * @param {CompiledMode} mode\n */\n function Response(mode) {\n _classCallCheck(this, Response);\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n _createClass(Response, [{\n key: \"ignoreMatch\",\n value: function ignoreMatch() {\n this.isMatchIgnored = true;\n }\n }]);\n return Response;\n}();\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original) {\n /** @type Record */\n var result = Object.create(null);\n for (var key in original) {\n result[key] = original[key];\n }\n for (var _len = arguments.length, objects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n objects[_key - 1] = arguments[_key];\n }\n objects.forEach(function (obj) {\n for (var _key2 in obj) {\n result[_key2] = obj[_key2];\n }\n });\n return (/** @type {T} */result\n );\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nvar SPAN_CLOSE = '';\n\n/**\n * Determines if a node needs to be wrapped in \n *\n * @param {Node} node */\nvar emitsWrappingTags = function emitsWrappingTags(node) {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nvar scopeToCSSClass = function scopeToCSSClass(name, _ref) {\n var prefix = _ref.prefix;\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n var pieces = name.split(\".\");\n return [\"\".concat(prefix).concat(pieces.shift())].concat(_toConsumableArray(pieces.map(function (x, i) {\n return \"\".concat(x).concat(\"_\".repeat(i + 1));\n }))).join(\" \");\n }\n // simple scope\n return \"\".concat(prefix).concat(name);\n};\n\n/** @type {Renderer} */\nvar HTMLRenderer = /*#__PURE__*/function () {\n \"use strict\";\n\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n function HTMLRenderer(parseTree, options) {\n _classCallCheck(this, HTMLRenderer);\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n _createClass(HTMLRenderer, [{\n key: \"addText\",\n value: function addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n }, {\n key: \"openNode\",\n value: function openNode(node) {\n if (!emitsWrappingTags(node)) return;\n var className = scopeToCSSClass(node.scope, {\n prefix: this.classPrefix\n });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n }, {\n key: \"closeNode\",\n value: function closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n }, {\n key: \"value\",\n value: function value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n }, {\n key: \"span\",\n value: function span(className) {\n this.buffer += \"\");\n }\n }]);\n return HTMLRenderer;\n}();\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n/** @returns {DataNode} */\nvar newNode = function newNode() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n /** @type DataNode */\n var result = {\n children: []\n };\n Object.assign(result, opts);\n return result;\n};\nvar TokenTree = /*#__PURE__*/function () {\n \"use strict\";\n\n function TokenTree() {\n _classCallCheck(this, TokenTree);\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n _createClass(TokenTree, [{\n key: \"top\",\n get: function get() {\n return this.stack[this.stack.length - 1];\n }\n }, {\n key: \"root\",\n get: function get() {\n return this.rootNode;\n }\n\n /** @param {Node} node */\n }, {\n key: \"add\",\n value: function add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n }, {\n key: \"openNode\",\n value: function openNode(scope) {\n /** @type Node */\n var node = newNode({\n scope: scope\n });\n this.add(node);\n this.stack.push(node);\n }\n }, {\n key: \"closeNode\",\n value: function closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n }, {\n key: \"closeAllNodes\",\n value: function closeAllNodes() {\n while (this.closeNode()) {\n ;\n }\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n }, {\n key: \"walk\",\n value: function walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n }], [{\n key: \"_walk\",\n value: function _walk(builder, node) {\n var _this = this;\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach(function (child) {\n return _this._walk(builder, child);\n });\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n }, {\n key: \"_collapse\",\n value: function _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n if (node.children.every(function (el) {\n return typeof el === \"string\";\n })) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach(function (child) {\n TokenTree._collapse(child);\n });\n }\n }\n }]);\n return TokenTree;\n}();\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n/**\n * @implements {Emitter}\n */\nvar TokenTreeEmitter = /*#__PURE__*/function (_TokenTree) {\n \"use strict\";\n\n _inherits(TokenTreeEmitter, _TokenTree);\n var _super = _createSuper(TokenTreeEmitter);\n /**\n * @param {*} options\n */\n function TokenTreeEmitter(options) {\n var _this2;\n _classCallCheck(this, TokenTreeEmitter);\n _this2 = _super.call(this);\n _this2.options = options;\n return _this2;\n }\n\n /**\n * @param {string} text\n */\n _createClass(TokenTreeEmitter, [{\n key: \"addText\",\n value: function addText(text) {\n if (text === \"\") {\n return;\n }\n this.add(text);\n }\n\n /** @param {string} scope */\n }, {\n key: \"startScope\",\n value: function startScope(scope) {\n this.openNode(scope);\n }\n }, {\n key: \"endScope\",\n value: function endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n }, {\n key: \"__addSublanguage\",\n value: function __addSublanguage(emitter, name) {\n /** @type DataNode */\n var node = emitter.root;\n if (name) node.scope = \"language:\".concat(name);\n this.add(node);\n }\n }, {\n key: \"toHTML\",\n value: function toHTML() {\n var renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n }, {\n key: \"finalize\",\n value: function finalize() {\n this.closeAllNodes();\n return true;\n }\n }]);\n return TokenTreeEmitter;\n}(TokenTree);\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n args[_key3] = arguments[_key3];\n }\n var joined = args.map(function (x) {\n return source(x);\n }).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n var opts = args[args.length - 1];\n if (_typeof(opts) === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n args[_key4] = arguments[_key4];\n }\n /** @type { object & {capture?: boolean} } */\n var opts = stripOptionsFromArgs(args);\n var joined = '(' + (opts.capture ? \"\" : \"?:\") + args.map(function (x) {\n return source(x);\n }).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return new RegExp(re.toString() + '|').exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nvar BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, _ref2) {\n var joinWith = _ref2.joinWith;\n var numCaptures = 0;\n return regexps.map(function (regex) {\n numCaptures += 1;\n var offset = numCaptures;\n var re = source(regex);\n var out = '';\n while (re.length > 0) {\n var match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(function (re) {\n return \"(\".concat(re, \")\");\n }).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nvar MATCH_NOTHING_RE = /\\b\\B/;\nvar IDENT_RE = '[a-zA-Z]\\\\w*';\nvar UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nvar NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nvar C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nvar BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nvar RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial & {binary?: string | RegExp} } opts\n*/\nvar SHEBANG = function SHEBANG() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(beginShebang, /.*\\b/, opts.binary, /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": function onBegin(m, resp) {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nvar BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]',\n relevance: 0\n};\nvar APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nvar QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nvar PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial}\n */\nvar COMMENT = function COMMENT(begin, end) {\n var modeOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var mode = inherit$1({\n scope: 'comment',\n begin: begin,\n end: end,\n contains: []\n }, modeOptions);\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n var ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\", \"a\", \"is\", \"so\", \"us\", \"to\", \"at\", \"if\", \"in\", \"it\", \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/,\n // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/,\n // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push({\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(/[ ]+/,\n // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(', ENGLISH_WORD, /[.]?[:]?([.][ ]|[ ])/, '){3}') // look for 3 words in a row\n });\n\n return mode;\n};\nvar C_LINE_COMMENT_MODE = COMMENT('//', '$');\nvar C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nvar HASH_COMMENT_MODE = COMMENT('#', '$');\nvar NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nvar C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nvar BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nvar REGEXP_MODE = {\n // this outer rule makes sure we actually have a WHOLE regex and not simply\n // an expression such as:\n //\n // 3 / something\n //\n // (which will then blow up when regex's `illegal` sees the newline)\n begin: /(?=\\/[^/\\n]*\\/)/,\n contains: [{\n scope: 'regexp',\n begin: /\\//,\n end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [BACKSLASH_ESCAPE, {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }]\n }]\n};\nvar TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nvar UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nvar METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial} mode\n */\nvar END_SAME_AS_BEGIN = function END_SAME_AS_BEGIN(mode) {\n return Object.assign(mode, {\n /** @type {ModeCallback} */\n 'on:begin': function onBegin(m, resp) {\n resp.data._beginMatch = m[1];\n },\n /** @type {ModeCallback} */\n 'on:end': function onEnd(m, resp) {\n if (resp.data._beginMatch !== m[1]) resp.ignoreMatch();\n }\n });\n};\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n IDENT_RE: IDENT_RE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n NUMBER_RE: NUMBER_RE,\n C_NUMBER_RE: C_NUMBER_RE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n APOS_STRING_MODE: APOS_STRING_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n COMMENT: COMMENT,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n NUMBER_MODE: NUMBER_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n REGEXP_MODE: REGEXP_MODE,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n METHOD_GUARD: METHOD_GUARD,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n var before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n mode.illegal = either.apply(void 0, _toConsumableArray(mode.illegal));\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nvar beforeMatchExt = function beforeMatchExt(mode, parent) {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n var originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach(function (key) {\n delete mode[key];\n });\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [Object.assign(originalMode, {\n endsParent: true\n })]\n };\n mode.relevance = 0;\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nvar COMMON_KEYWORDS = ['of', 'and', 'for', 'in', 'not', 'or', 'if', 'then', 'parent',\n// common variable name\n'list',\n// common variable name\n'value' // common variable name\n];\n\nvar DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record | Array} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive) {\n var scopeName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_KEYWORD_SCOPE;\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n var compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function (scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(compiledKeywords, compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName));\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(function (x) {\n return x.toLowerCase();\n });\n }\n keywordList.forEach(function (keyword) {\n var pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record}\n */\nvar seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nvar error = function error(message) {\n __f__(\"error\", message, \" at pages/highlight.js/lib/core.js:987\");\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nvar warn = function warn(message) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key5 = 1; _key5 < _len4; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n __f__.apply(void 0, [\"log\", \"WARN: \".concat(message)].concat(args, [\" at pages/highlight.js/lib/core.js:995\"]));\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nvar deprecated = function deprecated(version, message) {\n if (seenDeprecations[\"\".concat(version, \"/\").concat(message)]) return;\n __f__(\"log\", \"Deprecated as of \".concat(version, \". \").concat(message), \" at pages/highlight.js/lib/core.js:1005\");\n seenDeprecations[\"\".concat(version, \"/\").concat(message)] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nvar MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, _ref3) {\n var key = _ref3.key;\n var offset = 0;\n var scopeNames = mode[key];\n /** @type Record */\n var emit = {};\n /** @type Record */\n var positions = {};\n for (var i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n if (_typeof(mode.beginScope) !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n remapScopeNames(mode, mode.begin, {\n key: \"beginScope\"\n });\n mode.begin = _rewriteBackreferences(mode.begin, {\n joinWith: \"\"\n });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n if (_typeof(mode.endScope) !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n remapScopeNames(mode, mode.end, {\n key: \"endScope\"\n });\n mode.end = _rewriteBackreferences(mode.end, {\n joinWith: \"\"\n });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && _typeof(mode.scope) === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = {\n _wrap: mode.beginScope\n };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = {\n _wrap: mode.endScope\n };\n }\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(source(value), 'm' + (language.case_insensitive ? 'i' : '') + (language.unicodeRegex ? 'u' : '') + (global ? 'g' : ''));\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n var MultiRegex = /*#__PURE__*/function () {\n \"use strict\";\n\n function MultiRegex() {\n _classCallCheck(this, MultiRegex);\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n _createClass(MultiRegex, [{\n key: \"addRule\",\n value: function addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n }, {\n key: \"compile\",\n value: function compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = function () {\n return null;\n };\n }\n var terminators = this.regexes.map(function (el) {\n return el[1];\n });\n this.matcherRe = langRe(_rewriteBackreferences(terminators, {\n joinWith: '|'\n }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n }, {\n key: \"exec\",\n value: function exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n var match = this.matcherRe.exec(s);\n if (!match) {\n return null;\n }\n\n // eslint-disable-next-line no-undefined\n var i = match.findIndex(function (el, i) {\n return i > 0 && el !== undefined;\n });\n // @ts-ignore\n var matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n return Object.assign(match, matchData);\n }\n }]);\n return MultiRegex;\n }();\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n Say this is our search group, and we match regex3, but wish to ignore it.\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n regex4 | regex5 ' ie, startAt = 3\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n MOST of the time the parser will be setting startAt manually to 0.\n */\n var ResumableMultiRegex = /*#__PURE__*/function () {\n \"use strict\";\n\n function ResumableMultiRegex() {\n _classCallCheck(this, ResumableMultiRegex);\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n _createClass(ResumableMultiRegex, [{\n key: \"getMatcher\",\n value: function getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n var matcher = new MultiRegex();\n this.rules.slice(index).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n re = _ref5[0],\n opts = _ref5[1];\n return matcher.addRule(re, opts);\n });\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n }, {\n key: \"resumingScanAtSamePosition\",\n value: function resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n }, {\n key: \"considerAll\",\n value: function considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n }, {\n key: \"addRule\",\n value: function addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n }, {\n key: \"exec\",\n value: function exec(s) {\n var m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n var result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ;else {\n // use the second matcher result\n var m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n return result;\n }\n }]);\n return ResumableMultiRegex;\n }();\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n var mm = new ResumableMultiRegex();\n mode.contains.forEach(function (term) {\n return mm.addRule(term.begin, {\n rule: term,\n type: \"begin\"\n });\n });\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, {\n type: \"end\"\n });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, {\n type: \"illegal\"\n });\n }\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n var _ref6;\n var cmode = /** @type CompiledMode */mode;\n if (mode.isCompiled) return cmode;\n [scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch, MultiClass, beforeMatchExt].forEach(function (ext) {\n return ext(mode, parent);\n });\n language.compilerExtensions.forEach(function (ext) {\n return ext(mode, parent);\n });\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n [beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance].forEach(function (ext) {\n return ext(mode, parent);\n });\n mode.isCompiled = true;\n var keywordPattern = null;\n if (_typeof(mode.keywords) === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe( /** @type {RegExp | string} */mode.illegal);\n if (!mode.contains) mode.contains = [];\n mode.contains = (_ref6 = []).concat.apply(_ref6, _toConsumableArray(mode.contains.map(function (c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n })));\n mode.contains.forEach(function (c) {\n compileMode( /** @type Mode */c, cmode);\n });\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n return compileMode( /** @type Mode */language);\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function (variant) {\n return inherit$1(mode, {\n variants: null\n }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, {\n starts: mode.starts ? inherit$1(mode.starts) : null\n });\n }\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\nvar version = \"11.8.0\";\nvar HTMLInjectionError = /*#__PURE__*/function (_Error) {\n \"use strict\";\n\n _inherits(HTMLInjectionError, _Error);\n var _super2 = _createSuper(HTMLInjectionError);\n function HTMLInjectionError(reason, html) {\n var _this3;\n _classCallCheck(this, HTMLInjectionError);\n _this3 = _super2.call(this, reason);\n _this3.name = \"HTMLInjectionError\";\n _this3.html = html;\n return _this3;\n }\n return _createClass(HTMLInjectionError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\nvar escape = escapeHTML;\nvar inherit = inherit$1;\nvar NO_MATCH = Symbol(\"nomatch\");\nvar MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nvar HLJS = function HLJS(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record} */\n var languages = Object.create(null);\n /** @type {Record} */\n var aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n var plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n var SAFE_MODE = true;\n var LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n var PLAINTEXT_LANGUAGE = {\n disableAutodetect: true,\n name: 'Plain text',\n contains: []\n };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n var options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n var classes = block.className + ' ';\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n var match = options.languageDetectRe.exec(classes);\n if (match) {\n var language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n return classes.split(/\\s+/).find(function (_class) {\n return shouldNotHighlight(_class) || getLanguage(_class);\n });\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n var code = \"\";\n var languageName = \"\";\n if (_typeof(optionsOrCode) === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) {\n ignoreIllegals = true;\n }\n\n /** @type {BeforeHighlightContext} */\n var context = {\n code: code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n var result = context.result ? context.result : _highlight(context.language, context.code, ignoreIllegals);\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n var keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n var lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n var match = top.keywordPatternRe.exec(modeBuffer);\n var buf = \"\";\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n var word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n var data = keywordData(top, word);\n if (data) {\n var _data = _slicedToArray(data, 2),\n kind = _data[0],\n keywordRelevance = _data[1];\n emitter.addText(buf);\n buf = \"\";\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n var cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n var result = null;\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */result._top;\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n var i = 1;\n var max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) {\n i++;\n continue;\n }\n var klass = language.classNameAliases[scope[i]] || scope[i];\n var text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n top = Object.create(mode, {\n parent: {\n value: top\n }\n });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n var matched = startsWith(mode.endRe, matchPlusRemainder);\n if (matched) {\n if (mode[\"on:end\"]) {\n var resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n var lexeme = match[0];\n var newMode = match.rule;\n var resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n var beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (var _i = 0, _beforeCallbacks = beforeCallbacks; _i < _beforeCallbacks.length; _i++) {\n var cb = _beforeCallbacks[_i];\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n var lexeme = match[0];\n var matchPlusRemainder = codeToHighlight.substring(match.index);\n var endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) {\n return NO_MATCH;\n }\n var origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n function processContinuations() {\n var list = [];\n for (var current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(function (item) {\n return emitter.openNode(item);\n });\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n var lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n var lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n var err = new Error(\"0 width match regex (\".concat(languageName, \")\"));\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n var _err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '') + '\"');\n _err.mode = top;\n throw _err;\n } else if (match.type === \"end\") {\n var processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n var _err2 = new Error('potential infinite loop, way more iterations than matches');\n throw _err2;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n var language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n var md = compileLanguage(language);\n var result = '';\n /** @type {CompiledMode} */\n var top = continuation || md;\n /** @type Record */\n var continuations = {}; // keep continuations for sub-languages\n var emitter = new options.__emitter(options);\n processContinuations();\n var modeBuffer = '';\n var relevance = 0;\n var index = 0;\n var iterations = 0;\n var resumeScanAtSamePosition = false;\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n var match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n var beforeMatch = codeToHighlight.substring(index, match.index);\n var processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n emitter.finalize();\n result = emitter.toHTML();\n return {\n language: languageName,\n value: result,\n relevance: relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index: index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n var result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n @param {string} code\n @param {Array} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n var plaintext = justTextHighlightResult(code);\n var results = languageSubset.filter(getLanguage).filter(autoDetection).map(function (name) {\n return _highlight(name, code, false);\n });\n results.unshift(plaintext); // plaintext is always an option\n\n var sorted = results.sort(function (a, b) {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n var _sorted = _slicedToArray(sorted, 2),\n best = _sorted[0],\n secondBest = _sorted[1];\n\n /** @type {AutoHighlightResult} */\n var result = best;\n result.secondBest = secondBest;\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n var language = currentLang && aliases[currentLang] || resultLang;\n element.classList.add(\"hljs\");\n element.classList.add(\"language-\".concat(language));\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n var node = null;\n var language = blockLanguage(element);\n if (shouldNotHighlight(language)) return;\n fire(\"before:highlightElement\", {\n el: element,\n language: language\n });\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n __f__(\"warn\", \"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\", \" at pages/highlight.js/lib/core.js:2313\");\n __f__(\"warn\", \"https://github.com/highlightjs/highlight.js/wiki/security\", \" at pages/highlight.js/lib/core.js:2314\");\n __f__(\"warn\", \"The element with unescaped HTML:\", \" at pages/highlight.js/lib/core.js:2315\");\n __f__(\"warn\", element, \" at pages/highlight.js/lib/core.js:2316\");\n }\n if (options.throwUnescapedHTML) {\n var err = new HTMLInjectionError(\"One of your code blocks includes unescaped HTML.\", element.innerHTML);\n throw err;\n }\n }\n node = element;\n var text = node.textContent;\n var result = language ? highlight(text, {\n language: language,\n ignoreIllegals: true\n }) : highlightAuto(text);\n element.innerHTML = result.value;\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n fire(\"after:highlightElement\", {\n el: element,\n result: result,\n text: text\n });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n var initHighlighting = function initHighlighting() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n var wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n wantsHighlight = true;\n return;\n }\n var blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n if (wantsHighlight) highlightAll();\n }\n\n // make sure we are in the browser environment\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n var lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) {\n throw error$1;\n } else {\n error(error$1);\n }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n if (lang.aliases) {\n registerAliases(lang.aliases, {\n languageName: languageName\n });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (var _i2 = 0, _Object$keys = Object.keys(aliases); _i2 < _Object$keys.length; _i2++) {\n var alias = _Object$keys[_i2];\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, _ref7) {\n var languageName = _ref7.languageName;\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(function (alias) {\n aliases[alias.toLowerCase()] = languageName;\n });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n var lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = function (data) {\n plugin[\"before:highlightBlock\"](Object.assign({\n block: data.el\n }, data));\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = function (data) {\n plugin[\"after:highlightBlock\"](Object.assign({\n block: data.el\n }, data));\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n var index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n var cb = event;\n plugins.forEach(function (plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight: highlight,\n highlightAuto: highlightAuto,\n highlightAll: highlightAll,\n highlightElement: highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure: configure,\n initHighlighting: initHighlighting,\n initHighlightingOnLoad: initHighlightingOnLoad,\n registerLanguage: registerLanguage,\n unregisterLanguage: unregisterLanguage,\n listLanguages: listLanguages,\n getLanguage: getLanguage,\n registerAliases: registerAliases,\n autoDetection: autoDetection,\n inherit: inherit,\n addPlugin: addPlugin,\n removePlugin: removePlugin\n });\n hljs.debugMode = function () {\n SAFE_MODE = false;\n };\n hljs.safeMode = function () {\n SAFE_MODE = true;\n };\n hljs.versionString = version;\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n for (var key in MODES) {\n // @ts-ignore\n if (_typeof(MODES[key]) === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n return hljs;\n};\n\n// Other names for the variable may break build script\nvar highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = function () {\n return HLJS({});\n};\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 26)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaGlnaGxpZ2h0LmpzL2xpYi9jb3JlLmpzIl0sIm5hbWVzIjpbImRlZXBGcmVlemUiLCJvYmoiLCJNYXAiLCJjbGVhciIsImRlbGV0ZSIsInNldCIsIkVycm9yIiwiU2V0IiwiYWRkIiwiT2JqZWN0IiwiZnJlZXplIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvckVhY2giLCJuYW1lIiwicHJvcCIsInR5cGUiLCJpc0Zyb3plbiIsIlJlc3BvbnNlIiwibW9kZSIsImRhdGEiLCJ1bmRlZmluZWQiLCJpc01hdGNoSWdub3JlZCIsImVzY2FwZUhUTUwiLCJ2YWx1ZSIsInJlcGxhY2UiLCJpbmhlcml0JDEiLCJvcmlnaW5hbCIsInJlc3VsdCIsImNyZWF0ZSIsImtleSIsIm9iamVjdHMiLCJTUEFOX0NMT1NFIiwiZW1pdHNXcmFwcGluZ1RhZ3MiLCJub2RlIiwic2NvcGUiLCJzY29wZVRvQ1NTQ2xhc3MiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJwaWVjZXMiLCJzcGxpdCIsInNoaWZ0IiwibWFwIiwieCIsImkiLCJyZXBlYXQiLCJqb2luIiwiSFRNTFJlbmRlcmVyIiwicGFyc2VUcmVlIiwib3B0aW9ucyIsImJ1ZmZlciIsImNsYXNzUHJlZml4Iiwid2FsayIsInRleHQiLCJjbGFzc05hbWUiLCJzcGFuIiwibmV3Tm9kZSIsIm9wdHMiLCJjaGlsZHJlbiIsImFzc2lnbiIsIlRva2VuVHJlZSIsInJvb3ROb2RlIiwic3RhY2siLCJsZW5ndGgiLCJ0b3AiLCJwdXNoIiwicG9wIiwiY2xvc2VOb2RlIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkZXIiLCJjb25zdHJ1Y3RvciIsIl93YWxrIiwiYWRkVGV4dCIsIm9wZW5Ob2RlIiwiY2hpbGQiLCJldmVyeSIsImVsIiwiX2NvbGxhcHNlIiwiVG9rZW5UcmVlRW1pdHRlciIsImVtaXR0ZXIiLCJyb290IiwicmVuZGVyZXIiLCJjbG9zZUFsbE5vZGVzIiwic291cmNlIiwicmUiLCJsb29rYWhlYWQiLCJjb25jYXQiLCJhbnlOdW1iZXJPZlRpbWVzIiwib3B0aW9uYWwiLCJhcmdzIiwiam9pbmVkIiwic3RyaXBPcHRpb25zRnJvbUFyZ3MiLCJzcGxpY2UiLCJlaXRoZXIiLCJjYXB0dXJlIiwiY291bnRNYXRjaEdyb3VwcyIsIlJlZ0V4cCIsInRvU3RyaW5nIiwiZXhlYyIsImxleGVtZSIsIm1hdGNoIiwiaW5kZXgiLCJCQUNLUkVGX1JFIiwiX3Jld3JpdGVCYWNrcmVmZXJlbmNlcyIsInJlZ2V4cHMiLCJqb2luV2l0aCIsIm51bUNhcHR1cmVzIiwicmVnZXgiLCJvZmZzZXQiLCJvdXQiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJOdW1iZXIiLCJNQVRDSF9OT1RISU5HX1JFIiwiSURFTlRfUkUiLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwiTlVNQkVSX1JFIiwiQ19OVU1CRVJfUkUiLCJCSU5BUllfTlVNQkVSX1JFIiwiUkVfU1RBUlRFUlNfUkUiLCJTSEVCQU5HIiwiYmVnaW5TaGViYW5nIiwiYmluYXJ5IiwiYmVnaW4iLCJlbmQiLCJyZWxldmFuY2UiLCJtIiwicmVzcCIsImlnbm9yZU1hdGNoIiwiQkFDS1NMQVNIX0VTQ0FQRSIsIkFQT1NfU1RSSU5HX01PREUiLCJpbGxlZ2FsIiwiY29udGFpbnMiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlBIUkFTQUxfV09SRFNfTU9ERSIsIkNPTU1FTlQiLCJtb2RlT3B0aW9ucyIsImV4Y2x1ZGVCZWdpbiIsIkVOR0xJU0hfV09SRCIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiTlVNQkVSX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQklOQVJZX05VTUJFUl9NT0RFIiwiUkVHRVhQX01PREUiLCJUSVRMRV9NT0RFIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiTUVUSE9EX0dVQVJEIiwiRU5EX1NBTUVfQVNfQkVHSU4iLCJfYmVnaW5NYXRjaCIsIk1PREVTIiwiX19wcm90b19fIiwic2tpcElmSGFzUHJlY2VkaW5nRG90IiwicmVzcG9uc2UiLCJiZWZvcmUiLCJpbnB1dCIsInNjb3BlQ2xhc3NOYW1lIiwiX3BhcmVudCIsImJlZ2luS2V5d29yZHMiLCJwYXJlbnQiLCJfX2JlZm9yZUJlZ2luIiwia2V5d29yZHMiLCJjb21waWxlSWxsZWdhbCIsIkFycmF5IiwiaXNBcnJheSIsImNvbXBpbGVNYXRjaCIsImNvbXBpbGVSZWxldmFuY2UiLCJiZWZvcmVNYXRjaEV4dCIsImJlZm9yZU1hdGNoIiwic3RhcnRzIiwib3JpZ2luYWxNb2RlIiwia2V5cyIsImVuZHNQYXJlbnQiLCJDT01NT05fS0VZV09SRFMiLCJERUZBVUxUX0tFWVdPUkRfU0NPUEUiLCJjb21waWxlS2V5d29yZHMiLCJyYXdLZXl3b3JkcyIsImNhc2VJbnNlbnNpdGl2ZSIsInNjb3BlTmFtZSIsImNvbXBpbGVkS2V5d29yZHMiLCJjb21waWxlTGlzdCIsImtleXdvcmRMaXN0IiwidG9Mb3dlckNhc2UiLCJrZXl3b3JkIiwicGFpciIsInNjb3JlRm9yS2V5d29yZCIsInByb3ZpZGVkU2NvcmUiLCJjb21tb25LZXl3b3JkIiwic2VlbkRlcHJlY2F0aW9ucyIsImVycm9yIiwibWVzc2FnZSIsIndhcm4iLCJkZXByZWNhdGVkIiwidmVyc2lvbiIsIk11bHRpQ2xhc3NFcnJvciIsInJlbWFwU2NvcGVOYW1lcyIsInJlZ2V4ZXMiLCJzY29wZU5hbWVzIiwiZW1pdCIsInBvc2l0aW9ucyIsIl9lbWl0IiwiX211bHRpIiwiYmVnaW5NdWx0aUNsYXNzIiwic2tpcCIsInJldHVybkJlZ2luIiwiYmVnaW5TY29wZSIsImVuZE11bHRpQ2xhc3MiLCJleGNsdWRlRW5kIiwicmV0dXJuRW5kIiwiZW5kU2NvcGUiLCJzY29wZVN1Z2FyIiwiTXVsdGlDbGFzcyIsIl93cmFwIiwiY29tcGlsZUxhbmd1YWdlIiwibGFuZ3VhZ2UiLCJsYW5nUmUiLCJnbG9iYWwiLCJjYXNlX2luc2Vuc2l0aXZlIiwidW5pY29kZVJlZ2V4IiwiTXVsdGlSZWdleCIsIm1hdGNoSW5kZXhlcyIsIm1hdGNoQXQiLCJwb3NpdGlvbiIsInRlcm1pbmF0b3JzIiwibWF0Y2hlclJlIiwibGFzdEluZGV4IiwicyIsImZpbmRJbmRleCIsIm1hdGNoRGF0YSIsIlJlc3VtYWJsZU11bHRpUmVnZXgiLCJydWxlcyIsIm11bHRpUmVnZXhlcyIsImNvdW50IiwicmVnZXhJbmRleCIsIm1hdGNoZXIiLCJzbGljZSIsImFkZFJ1bGUiLCJjb21waWxlIiwiZ2V0TWF0Y2hlciIsInJlc3VtaW5nU2NhbkF0U2FtZVBvc2l0aW9uIiwibTIiLCJjb25zaWRlckFsbCIsImJ1aWxkTW9kZVJlZ2V4IiwibW0iLCJ0ZXJtIiwicnVsZSIsInRlcm1pbmF0b3JFbmQiLCJjb21waWxlTW9kZSIsImNtb2RlIiwiaXNDb21waWxlZCIsImV4dCIsImNvbXBpbGVyRXh0ZW5zaW9ucyIsImtleXdvcmRQYXR0ZXJuIiwiJHBhdHRlcm4iLCJrZXl3b3JkUGF0dGVyblJlIiwiYmVnaW5SZSIsImVuZHNXaXRoUGFyZW50IiwiZW5kUmUiLCJpbGxlZ2FsUmUiLCJjIiwiZXhwYW5kT3JDbG9uZU1vZGUiLCJjbGFzc05hbWVBbGlhc2VzIiwiZGVwZW5kZW5jeU9uUGFyZW50IiwidmFyaWFudHMiLCJjYWNoZWRWYXJpYW50cyIsInZhcmlhbnQiLCJIVE1MSW5qZWN0aW9uRXJyb3IiLCJyZWFzb24iLCJodG1sIiwiZXNjYXBlIiwiaW5oZXJpdCIsIk5PX01BVENIIiwiU3ltYm9sIiwiTUFYX0tFWVdPUkRfSElUUyIsIkhMSlMiLCJobGpzIiwibGFuZ3VhZ2VzIiwiYWxpYXNlcyIsInBsdWdpbnMiLCJTQUZFX01PREUiLCJMQU5HVUFHRV9OT1RfRk9VTkQiLCJQTEFJTlRFWFRfTEFOR1VBR0UiLCJkaXNhYmxlQXV0b2RldGVjdCIsImlnbm9yZVVuZXNjYXBlZEhUTUwiLCJ0aHJvd1VuZXNjYXBlZEhUTUwiLCJub0hpZ2hsaWdodFJlIiwibGFuZ3VhZ2VEZXRlY3RSZSIsImNzc1NlbGVjdG9yIiwiX19lbWl0dGVyIiwic2hvdWxkTm90SGlnaGxpZ2h0IiwibGFuZ3VhZ2VOYW1lIiwidGVzdCIsImJsb2NrTGFuZ3VhZ2UiLCJibG9jayIsImNsYXNzZXMiLCJwYXJlbnROb2RlIiwiZ2V0TGFuZ3VhZ2UiLCJmaW5kIiwiX2NsYXNzIiwiaGlnaGxpZ2h0IiwiY29kZU9yTGFuZ3VhZ2VOYW1lIiwib3B0aW9uc09yQ29kZSIsImlnbm9yZUlsbGVnYWxzIiwiY29kZSIsImNvbnRleHQiLCJmaXJlIiwiX2hpZ2hsaWdodCIsImNvZGVUb0hpZ2hsaWdodCIsImNvbnRpbnVhdGlvbiIsImtleXdvcmRIaXRzIiwia2V5d29yZERhdGEiLCJtYXRjaFRleHQiLCJwcm9jZXNzS2V5d29yZHMiLCJtb2RlQnVmZmVyIiwiYnVmIiwid29yZCIsImtpbmQiLCJrZXl3b3JkUmVsZXZhbmNlIiwiY3NzQ2xhc3MiLCJlbWl0S2V5d29yZCIsInByb2Nlc3NTdWJMYW5ndWFnZSIsInN1Ykxhbmd1YWdlIiwiY29udGludWF0aW9ucyIsIl90b3AiLCJoaWdobGlnaHRBdXRvIiwiX19hZGRTdWJsYW5ndWFnZSIsIl9lbWl0dGVyIiwicHJvY2Vzc0J1ZmZlciIsInN0YXJ0U2NvcGUiLCJlbWl0TXVsdGlDbGFzcyIsIm1heCIsImtsYXNzIiwic3RhcnROZXdNb2RlIiwiZW5kT2ZNb2RlIiwibWF0Y2hQbHVzUmVtYWluZGVyIiwibWF0Y2hlZCIsImRvSWdub3JlIiwicmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uIiwiZG9CZWdpbk1hdGNoIiwibmV3TW9kZSIsImJlZm9yZUNhbGxiYWNrcyIsImNiIiwiZG9FbmRNYXRjaCIsImVuZE1vZGUiLCJvcmlnaW4iLCJwcm9jZXNzQ29udGludWF0aW9ucyIsImxpc3QiLCJjdXJyZW50IiwidW5zaGlmdCIsIml0ZW0iLCJsYXN0TWF0Y2giLCJwcm9jZXNzTGV4ZW1lIiwidGV4dEJlZm9yZU1hdGNoIiwiZXJyIiwiYmFkUnVsZSIsInByb2Nlc3NlZCIsIml0ZXJhdGlvbnMiLCJtZCIsIl9fZW1pdFRva2VucyIsInByb2Nlc3NlZENvdW50IiwiZmluYWxpemUiLCJ0b0hUTUwiLCJfaWxsZWdhbEJ5IiwicmVzdWx0U29GYXIiLCJlcnJvclJhaXNlZCIsImp1c3RUZXh0SGlnaGxpZ2h0UmVzdWx0IiwibGFuZ3VhZ2VTdWJzZXQiLCJwbGFpbnRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiYXV0b0RldGVjdGlvbiIsInNvcnRlZCIsInNvcnQiLCJhIiwiYiIsInN1cGVyc2V0T2YiLCJiZXN0Iiwic2Vjb25kQmVzdCIsInVwZGF0ZUNsYXNzTmFtZSIsImVsZW1lbnQiLCJjdXJyZW50TGFuZyIsInJlc3VsdExhbmciLCJjbGFzc0xpc3QiLCJoaWdobGlnaHRFbGVtZW50IiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJjb25maWd1cmUiLCJ1c2VyT3B0aW9ucyIsImluaXRIaWdobGlnaHRpbmciLCJoaWdobGlnaHRBbGwiLCJpbml0SGlnaGxpZ2h0aW5nT25Mb2FkIiwid2FudHNIaWdobGlnaHQiLCJkb2N1bWVudCIsInJlYWR5U3RhdGUiLCJibG9ja3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiYm9vdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZWdpc3Rlckxhbmd1YWdlIiwibGFuZ3VhZ2VEZWZpbml0aW9uIiwibGFuZyIsImVycm9yJDEiLCJyYXdEZWZpbml0aW9uIiwiYmluZCIsInJlZ2lzdGVyQWxpYXNlcyIsInVucmVnaXN0ZXJMYW5ndWFnZSIsImFsaWFzIiwibGlzdExhbmd1YWdlcyIsImFsaWFzTGlzdCIsInVwZ3JhZGVQbHVnaW5BUEkiLCJwbHVnaW4iLCJhZGRQbHVnaW4iLCJyZW1vdmVQbHVnaW4iLCJpbmRleE9mIiwiZXZlbnQiLCJkZXByZWNhdGVIaWdobGlnaHRCbG9jayIsImhpZ2hsaWdodEJsb2NrIiwiZGVidWdNb2RlIiwic2FmZU1vZGUiLCJ2ZXJzaW9uU3RyaW5nIiwibmV3SW5zdGFuY2UiLCJtb2R1bGUiLCJleHBvcnRzIiwiSGlnaGxpZ2h0SlMiLCJkZWZhdWx0Il0sIm1h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QyxDQUFDOztBQUUxQjtBQUNBO0FBQ0F5QixTQUFTLENBQUMwSCxXQUFXLEdBQUc7RUFBQSxPQUFNbkosSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFFdENvSixNQUFNLENBQUNDLE9BQU8sR0FBRzVILFNBQVM7QUFDMUJBLFNBQVMsQ0FBQzZILFdBQVcsR0FBRzdILFNBQVM7QUFDakNBLFNBQVMsQ0FBQzhILE9BQU8sR0FBRzlILFNBQVMsQyIsImZpbGUiOiIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW11bHRpLWFzc2lnbiAqL1xuXG5mdW5jdGlvbiBkZWVwRnJlZXplKG9iaikge1xuICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgb2JqLmNsZWFyID1cbiAgICAgIG9iai5kZWxldGUgPVxuICAgICAgb2JqLnNldCA9XG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21hcCBpcyByZWFkLW9ubHknKTtcbiAgICAgICAgfTtcbiAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBvYmouYWRkID1cbiAgICAgIG9iai5jbGVhciA9XG4gICAgICBvYmouZGVsZXRlID1cbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2V0IGlzIHJlYWQtb25seScpO1xuICAgICAgICB9O1xuICB9XG5cbiAgLy8gRnJlZXplIHNlbGZcbiAgT2JqZWN0LmZyZWV6ZShvYmopO1xuXG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgIGNvbnN0IHByb3AgPSBvYmpbbmFtZV07XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiBwcm9wO1xuXG4gICAgLy8gRnJlZXplIHByb3AgaWYgaXQgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uIGFuZCBhbHNvIG5vdCBhbHJlYWR5IGZyb3plblxuICAgIGlmICgodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgJiYgIU9iamVjdC5pc0Zyb3plbihwcm9wKSkge1xuICAgICAgZGVlcEZyZWV6ZShwcm9wKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5DYWxsYmFja1Jlc3BvbnNlfSBDYWxsYmFja1Jlc3BvbnNlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ29tcGlsZWRNb2RlfSBDb21waWxlZE1vZGUgKi9cbi8qKiBAaW1wbGVtZW50cyBDYWxsYmFja1Jlc3BvbnNlICovXG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihtb2RlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmaW5lZFxuICAgIGlmIChtb2RlLmRhdGEgPT09IHVuZGVmaW5lZCkgbW9kZS5kYXRhID0ge307XG5cbiAgICB0aGlzLmRhdGEgPSBtb2RlLmRhdGE7XG4gICAgdGhpcy5pc01hdGNoSWdub3JlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWdub3JlTWF0Y2goKSB7XG4gICAgdGhpcy5pc01hdGNoSWdub3JlZCA9IHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUhUTUwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAucmVwbGFjZSgvJy9nLCAnJiN4Mjc7Jyk7XG59XG5cbi8qKlxuICogcGVyZm9ybXMgYSBzaGFsbG93IG1lcmdlIG9mIG11bHRpcGxlIG9iamVjdHMgaW50byBvbmVcbiAqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtUfSBvcmlnaW5hbFxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLGFueT5bXX0gb2JqZWN0c1xuICogQHJldHVybnMge1R9IGEgc2luZ2xlIG5ldyBvYmplY3RcbiAqL1xuZnVuY3Rpb24gaW5oZXJpdCQxKG9yaWdpbmFsLCAuLi5vYmplY3RzKSB7XG4gIC8qKiBAdHlwZSBSZWNvcmQ8c3RyaW5nLGFueT4gKi9cbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbCkge1xuICAgIHJlc3VsdFtrZXldID0gb3JpZ2luYWxba2V5XTtcbiAgfVxuICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiAvKiogQHR5cGUge1R9ICovIChyZXN1bHQpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlbmRlcmVyXG4gKiBAcHJvcGVydHkgeyh0ZXh0OiBzdHJpbmcpID0+IHZvaWR9IGFkZFRleHRcbiAqIEBwcm9wZXJ0eSB7KG5vZGU6IE5vZGUpID0+IHZvaWR9IG9wZW5Ob2RlXG4gKiBAcHJvcGVydHkgeyhub2RlOiBOb2RlKSA9PiB2b2lkfSBjbG9zZU5vZGVcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nfSB2YWx1ZVxuICovXG5cbi8qKiBAdHlwZWRlZiB7e3Njb3BlPzogc3RyaW5nLCBsYW5ndWFnZT86IHN0cmluZywgc3VibGFuZ3VhZ2U/OiBib29sZWFufX0gTm9kZSAqL1xuLyoqIEB0eXBlZGVmIHt7d2FsazogKHI6IFJlbmRlcmVyKSA9PiB2b2lkfX0gVHJlZSAqL1xuLyoqICovXG5cbmNvbnN0IFNQQU5fQ0xPU0UgPSAnPC9zcGFuPic7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgbmVlZHMgdG8gYmUgd3JhcHBlZCBpbiA8c3Bhbj5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbmNvbnN0IGVtaXRzV3JhcHBpbmdUYWdzID0gKG5vZGUpID0+IHtcbiAgLy8gcmFyZWx5IHdlIGNhbiBoYXZlIGEgc3VibGFuZ3VhZ2Ugd2hlcmUgbGFuZ3VhZ2UgaXMgdW5kZWZpbmVkXG4gIC8vIFRPRE86IHRyYWNrIGRvd24gd2h5XG4gIHJldHVybiAhIW5vZGUuc2NvcGU7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHt7cHJlZml4OnN0cmluZ319IG9wdGlvbnNcbiAqL1xuY29uc3Qgc2NvcGVUb0NTU0NsYXNzID0gKG5hbWUsIHsgcHJlZml4IH0pID0+IHtcbiAgLy8gc3ViLWxhbmd1YWdlXG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJsYW5ndWFnZTpcIikpIHtcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKFwibGFuZ3VhZ2U6XCIsIFwibGFuZ3VhZ2UtXCIpO1xuICB9XG4gIC8vIHRpZXJlZCBzY29wZTogY29tbWVudC5saW5lXG4gIGlmIChuYW1lLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgIGNvbnN0IHBpZWNlcyA9IG5hbWUuc3BsaXQoXCIuXCIpO1xuICAgIHJldHVybiBbXG4gICAgICBgJHtwcmVmaXh9JHtwaWVjZXMuc2hpZnQoKX1gLFxuICAgICAgLi4uKHBpZWNlcy5tYXAoKHgsIGkpID0+IGAke3h9JHtcIl9cIi5yZXBlYXQoaSArIDEpfWApKVxuICAgIF0uam9pbihcIiBcIik7XG4gIH1cbiAgLy8gc2ltcGxlIHNjb3BlXG4gIHJldHVybiBgJHtwcmVmaXh9JHtuYW1lfWA7XG59O1xuXG4vKiogQHR5cGUge1JlbmRlcmVyfSAqL1xuY2xhc3MgSFRNTFJlbmRlcmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgSFRNTFJlbmRlcmVyXG4gICAqXG4gICAqIEBwYXJhbSB7VHJlZX0gcGFyc2VUcmVlIC0gdGhlIHBhcnNlIHRyZWUgKG11c3Qgc3VwcG9ydCBgd2Fsa2AgQVBJKVxuICAgKiBAcGFyYW0ge3tjbGFzc1ByZWZpeDogc3RyaW5nfX0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IocGFyc2VUcmVlLCBvcHRpb25zKSB7XG4gICAgdGhpcy5idWZmZXIgPSBcIlwiO1xuICAgIHRoaXMuY2xhc3NQcmVmaXggPSBvcHRpb25zLmNsYXNzUHJlZml4O1xuICAgIHBhcnNlVHJlZS53YWxrKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGV4dHMgdG8gdGhlIG91dHB1dCBzdHJlYW1cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgKi9cbiAgYWRkVGV4dCh0ZXh0KSB7XG4gICAgdGhpcy5idWZmZXIgKz0gZXNjYXBlSFRNTCh0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbm9kZSBvcGVuIHRvIHRoZSBvdXRwdXQgc3RyZWFtIChpZiBuZWVkZWQpXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAqL1xuICBvcGVuTm9kZShub2RlKSB7XG4gICAgaWYgKCFlbWl0c1dyYXBwaW5nVGFncyhub2RlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY2xhc3NOYW1lID0gc2NvcGVUb0NTU0NsYXNzKG5vZGUuc2NvcGUsXG4gICAgICB7IHByZWZpeDogdGhpcy5jbGFzc1ByZWZpeCB9KTtcbiAgICB0aGlzLnNwYW4oY2xhc3NOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbm9kZSBjbG9zZSB0byB0aGUgb3V0cHV0IHN0cmVhbSAoaWYgbmVlZGVkKVxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbiAgY2xvc2VOb2RlKG5vZGUpIHtcbiAgICBpZiAoIWVtaXRzV3JhcHBpbmdUYWdzKG5vZGUpKSByZXR1cm47XG5cbiAgICB0aGlzLmJ1ZmZlciArPSBTUEFOX0NMT1NFO1xuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgdGhlIGFjY3VtdWxhdGVkIGJ1ZmZlclxuICAqL1xuICB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cblxuICAvLyBoZWxwZXJzXG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHNwYW4gZWxlbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lICovXG4gIHNwYW4oY2xhc3NOYW1lKSB7XG4gICAgdGhpcy5idWZmZXIgKz0gYDxzcGFuIGNsYXNzPVwiJHtjbGFzc05hbWV9XCI+YDtcbiAgfVxufVxuXG4vKiogQHR5cGVkZWYge3tzY29wZT86IHN0cmluZywgbGFuZ3VhZ2U/OiBzdHJpbmcsIHN1Ymxhbmd1YWdlPzogYm9vbGVhbiwgY2hpbGRyZW46IE5vZGVbXX0gfCBzdHJpbmd9IE5vZGUgKi9cbi8qKiBAdHlwZWRlZiB7e3Njb3BlPzogc3RyaW5nLCBsYW5ndWFnZT86IHN0cmluZywgc3VibGFuZ3VhZ2U/OiBib29sZWFuLCBjaGlsZHJlbjogTm9kZVtdfSB9IERhdGFOb2RlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuRW1pdHRlcn0gRW1pdHRlciAqL1xuLyoqICAqL1xuXG4vKiogQHJldHVybnMge0RhdGFOb2RlfSAqL1xuY29uc3QgbmV3Tm9kZSA9IChvcHRzID0ge30pID0+IHtcbiAgLyoqIEB0eXBlIERhdGFOb2RlICovXG4gIGNvbnN0IHJlc3VsdCA9IHsgY2hpbGRyZW46IFtdIH07XG4gIE9iamVjdC5hc3NpZ24ocmVzdWx0LCBvcHRzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNsYXNzIFRva2VuVHJlZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKiBAdHlwZSBEYXRhTm9kZSAqL1xuICAgIHRoaXMucm9vdE5vZGUgPSBuZXdOb2RlKCk7XG4gICAgdGhpcy5zdGFjayA9IFt0aGlzLnJvb3ROb2RlXTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIGdldCByb290KCkgeyByZXR1cm4gdGhpcy5yb290Tm9kZTsgfVxuXG4gIC8qKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbiAgYWRkKG5vZGUpIHtcbiAgICB0aGlzLnRvcC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7c3RyaW5nfSBzY29wZSAqL1xuICBvcGVuTm9kZShzY29wZSkge1xuICAgIC8qKiBAdHlwZSBOb2RlICovXG4gICAgY29uc3Qgbm9kZSA9IG5ld05vZGUoeyBzY29wZSB9KTtcbiAgICB0aGlzLmFkZChub2RlKTtcbiAgICB0aGlzLnN0YWNrLnB1c2gobm9kZSk7XG4gIH1cblxuICBjbG9zZU5vZGUoKSB7XG4gICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2xvc2VBbGxOb2RlcygpIHtcbiAgICB3aGlsZSAodGhpcy5jbG9zZU5vZGUoKSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMucm9vdE5vZGUsIG51bGwsIDQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIHsgaW1wb3J0KFwiLi9odG1sX3JlbmRlcmVyXCIpLlJlbmRlcmVyIH0gUmVuZGVyZXJcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gYnVpbGRlclxuICAgKi9cbiAgd2FsayhidWlsZGVyKSB7XG4gICAgLy8gdGhpcyBkb2VzIG5vdFxuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLl93YWxrKGJ1aWxkZXIsIHRoaXMucm9vdE5vZGUpO1xuICAgIC8vIHRoaXMgd29ya3NcbiAgICAvLyByZXR1cm4gVG9rZW5UcmVlLl93YWxrKGJ1aWxkZXIsIHRoaXMucm9vdE5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IGJ1aWxkZXJcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAqL1xuICBzdGF0aWMgX3dhbGsoYnVpbGRlciwgbm9kZSkge1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgYnVpbGRlci5hZGRUZXh0KG5vZGUpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgYnVpbGRlci5vcGVuTm9kZShub2RlKTtcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHRoaXMuX3dhbGsoYnVpbGRlciwgY2hpbGQpKTtcbiAgICAgIGJ1aWxkZXIuY2xvc2VOb2RlKG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAgICovXG4gIHN0YXRpYyBfY29sbGFwc2Uobm9kZSkge1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuO1xuICAgIGlmICghbm9kZS5jaGlsZHJlbikgcmV0dXJuO1xuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4uZXZlcnkoZWwgPT4gdHlwZW9mIGVsID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgLy8gbm9kZS50ZXh0ID0gbm9kZS5jaGlsZHJlbi5qb2luKFwiXCIpO1xuICAgICAgLy8gZGVsZXRlIG5vZGUuY2hpbGRyZW47XG4gICAgICBub2RlLmNoaWxkcmVuID0gW25vZGUuY2hpbGRyZW4uam9pbihcIlwiKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgVG9rZW5UcmVlLl9jb2xsYXBzZShjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gIEN1cnJlbnRseSB0aGlzIGlzIGFsbCBwcml2YXRlIEFQSSwgYnV0IHRoaXMgaXMgdGhlIG1pbmltYWwgQVBJIG5lY2Vzc2FyeVxuICB0aGF0IGFuIEVtaXR0ZXIgbXVzdCBpbXBsZW1lbnQgdG8gZnVsbHkgc3VwcG9ydCB0aGUgcGFyc2VyLlxuXG4gIE1pbmltYWwgaW50ZXJmYWNlOlxuXG4gIC0gYWRkVGV4dCh0ZXh0KVxuICAtIF9fYWRkU3VibGFuZ3VhZ2UoZW1pdHRlciwgc3ViTGFuZ3VhZ2VOYW1lKVxuICAtIHN0YXJ0U2NvcGUoc2NvcGUpXG4gIC0gZW5kU2NvcGUoKVxuICAtIGZpbmFsaXplKClcbiAgLSB0b0hUTUwoKVxuXG4qL1xuXG4vKipcbiAqIEBpbXBsZW1lbnRzIHtFbWl0dGVyfVxuICovXG5jbGFzcyBUb2tlblRyZWVFbWl0dGVyIGV4dGVuZHMgVG9rZW5UcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Kn0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICAgKi9cbiAgYWRkVGV4dCh0ZXh0KSB7XG4gICAgaWYgKHRleHQgPT09IFwiXCIpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLmFkZCh0ZXh0KTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gc2NvcGUgKi9cbiAgc3RhcnRTY29wZShzY29wZSkge1xuICAgIHRoaXMub3Blbk5vZGUoc2NvcGUpO1xuICB9XG5cbiAgZW5kU2NvcGUoKSB7XG4gICAgdGhpcy5jbG9zZU5vZGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0VtaXR0ZXIgJiB7cm9vdDogRGF0YU5vZGV9fSBlbWl0dGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBfX2FkZFN1Ymxhbmd1YWdlKGVtaXR0ZXIsIG5hbWUpIHtcbiAgICAvKiogQHR5cGUgRGF0YU5vZGUgKi9cbiAgICBjb25zdCBub2RlID0gZW1pdHRlci5yb290O1xuICAgIGlmIChuYW1lKSBub2RlLnNjb3BlID0gYGxhbmd1YWdlOiR7bmFtZX1gO1xuXG4gICAgdGhpcy5hZGQobm9kZSk7XG4gIH1cblxuICB0b0hUTUwoKSB7XG4gICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgSFRNTFJlbmRlcmVyKHRoaXMsIHRoaXMub3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlbmRlcmVyLnZhbHVlKCk7XG4gIH1cblxuICBmaW5hbGl6ZSgpIHtcbiAgICB0aGlzLmNsb3NlQWxsTm9kZXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge1JlZ0V4cH1cbiAqICovXG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc291cmNlKHJlKSB7XG4gIGlmICghcmUpIHJldHVybiBudWxsO1xuICBpZiAodHlwZW9mIHJlID09PSBcInN0cmluZ1wiKSByZXR1cm4gcmU7XG5cbiAgcmV0dXJuIHJlLnNvdXJjZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlZ0V4cCB8IHN0cmluZyB9IHJlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBsb29rYWhlYWQocmUpIHtcbiAgcmV0dXJuIGNvbmNhdCgnKD89JywgcmUsICcpJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gYW55TnVtYmVyT2ZUaW1lcyhyZSkge1xuICByZXR1cm4gY29uY2F0KCcoPzonLCByZSwgJykqJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gb3B0aW9uYWwocmUpIHtcbiAgcmV0dXJuIGNvbmNhdCgnKD86JywgcmUsICcpPycpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Li4uKFJlZ0V4cCB8IHN0cmluZykgfSBhcmdzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjb25jYXQoLi4uYXJncykge1xuICBjb25zdCBqb2luZWQgPSBhcmdzLm1hcCgoeCkgPT4gc291cmNlKHgpKS5qb2luKFwiXCIpO1xuICByZXR1cm4gam9pbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7IEFycmF5PHN0cmluZyB8IFJlZ0V4cCB8IE9iamVjdD4gfSBhcmdzXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBzdHJpcE9wdGlvbnNGcm9tQXJncyhhcmdzKSB7XG4gIGNvbnN0IG9wdHMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnb2JqZWN0JyAmJiBvcHRzLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgICBhcmdzLnNwbGljZShhcmdzLmxlbmd0aCAtIDEsIDEpO1xuICAgIHJldHVybiBvcHRzO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKiogQHR5cGVkZWYgeyB7Y2FwdHVyZT86IGJvb2xlYW59IH0gUmVnZXhFaXRoZXJPcHRpb25zICovXG5cbi8qKlxuICogQW55IG9mIHRoZSBwYXNzZWQgZXhwcmVzc3Npb25zIG1heSBtYXRjaFxuICpcbiAqIENyZWF0ZXMgYSBodWdlIHRoaXMgfCB0aGlzIHwgdGhhdCB8IHRoYXQgbWF0Y2hcbiAqIEBwYXJhbSB7KFJlZ0V4cCB8IHN0cmluZylbXSB8IFsuLi4oUmVnRXhwIHwgc3RyaW5nKVtdLCBSZWdleEVpdGhlck9wdGlvbnNdfSBhcmdzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlaXRoZXIoLi4uYXJncykge1xuICAvKiogQHR5cGUgeyBvYmplY3QgJiB7Y2FwdHVyZT86IGJvb2xlYW59IH0gICovXG4gIGNvbnN0IG9wdHMgPSBzdHJpcE9wdGlvbnNGcm9tQXJncyhhcmdzKTtcbiAgY29uc3Qgam9pbmVkID0gJygnXG4gICAgKyAob3B0cy5jYXB0dXJlID8gXCJcIiA6IFwiPzpcIilcbiAgICArIGFyZ3MubWFwKCh4KSA9PiBzb3VyY2UoeCkpLmpvaW4oXCJ8XCIpICsgXCIpXCI7XG4gIHJldHVybiBqb2luZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmd9IHJlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBjb3VudE1hdGNoR3JvdXBzKHJlKSB7XG4gIHJldHVybiAobmV3IFJlZ0V4cChyZS50b1N0cmluZygpICsgJ3wnKSkuZXhlYygnJykubGVuZ3RoIC0gMTtcbn1cblxuLyoqXG4gKiBEb2VzIGxleGVtZSBzdGFydCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoIGF0IHRoZSBiZWdpbm5pbmdcbiAqIEBwYXJhbSB7UmVnRXhwfSByZVxuICogQHBhcmFtIHtzdHJpbmd9IGxleGVtZVxuICovXG5mdW5jdGlvbiBzdGFydHNXaXRoKHJlLCBsZXhlbWUpIHtcbiAgY29uc3QgbWF0Y2ggPSByZSAmJiByZS5leGVjKGxleGVtZSk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbn1cblxuLy8gQkFDS1JFRl9SRSBtYXRjaGVzIGFuIG9wZW4gcGFyZW50aGVzaXMgb3IgYmFja3JlZmVyZW5jZS4gVG8gYXZvaWRcbi8vIGFuIGluY29ycmVjdCBwYXJzZSwgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgdGhlIGZvbGxvd2luZzpcbi8vIC0gWy4uLl0gZWxlbWVudHMsIHdoZXJlIHRoZSBtZWFuaW5nIG9mIHBhcmVudGhlc2VzIGFuZCBlc2NhcGVzIGNoYW5nZVxuLy8gLSBvdGhlciBlc2NhcGUgc2VxdWVuY2VzLCBzbyB3ZSBkbyBub3QgbWlzcGFyc2UgZXNjYXBlIHNlcXVlbmNlcyBhc1xuLy8gICBpbnRlcmVzdGluZyBlbGVtZW50c1xuLy8gLSBub24tbWF0Y2hpbmcgb3IgbG9va2FoZWFkIHBhcmVudGhlc2VzLCB3aGljaCBkbyBub3QgY2FwdHVyZS4gVGhlc2Vcbi8vICAgZm9sbG93IHRoZSAnKCcgd2l0aCBhICc/Jy5cbmNvbnN0IEJBQ0tSRUZfUkUgPSAvXFxbKD86W15cXFxcXFxdXXxcXFxcLikqXFxdfFxcKFxcPz98XFxcXChbMS05XVswLTldKil8XFxcXC4vO1xuXG4vLyAqKklOVEVSTkFMKiogTm90IGludGVuZGVkIGZvciBvdXRzaWRlIHVzYWdlXG4vLyBqb2luIGxvZ2ljYWxseSBjb21wdXRlcyByZWdleHBzLmpvaW4oc2VwYXJhdG9yKSwgYnV0IGZpeGVzIHRoZVxuLy8gYmFja3JlZmVyZW5jZXMgc28gdGhleSBjb250aW51ZSB0byBtYXRjaC5cbi8vIGl0IGFsc28gcGxhY2VzIGVhY2ggaW5kaXZpZHVhbCByZWd1bGFyIGV4cHJlc3Npb24gaW50byBpdCdzIG93blxuLy8gbWF0Y2ggZ3JvdXAsIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHNlcXVlbmNpbmcgb2YgdGhvc2UgbWF0Y2ggZ3JvdXBzXG4vLyBpcyBjdXJyZW50bHkgYW4gZXhlcmNpc2UgZm9yIHRoZSBjYWxsZXIuIDotKVxuLyoqXG4gKiBAcGFyYW0geyhzdHJpbmcgfCBSZWdFeHApW119IHJlZ2V4cHNcbiAqIEBwYXJhbSB7e2pvaW5XaXRoOiBzdHJpbmd9fSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBfcmV3cml0ZUJhY2tyZWZlcmVuY2VzKHJlZ2V4cHMsIHsgam9pbldpdGggfSkge1xuICBsZXQgbnVtQ2FwdHVyZXMgPSAwO1xuXG4gIHJldHVybiByZWdleHBzLm1hcCgocmVnZXgpID0+IHtcbiAgICBudW1DYXB0dXJlcyArPSAxO1xuICAgIGNvbnN0IG9mZnNldCA9IG51bUNhcHR1cmVzO1xuICAgIGxldCByZSA9IHNvdXJjZShyZWdleCk7XG4gICAgbGV0IG91dCA9ICcnO1xuXG4gICAgd2hpbGUgKHJlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gQkFDS1JFRl9SRS5leGVjKHJlKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgb3V0ICs9IHJlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG91dCArPSByZS5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpO1xuICAgICAgcmUgPSByZS5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgaWYgKG1hdGNoWzBdWzBdID09PSAnXFxcXCcgJiYgbWF0Y2hbMV0pIHtcbiAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICBvdXQgKz0gJ1xcXFwnICsgU3RyaW5nKE51bWJlcihtYXRjaFsxXSkgKyBvZmZzZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9IG1hdGNoWzBdO1xuICAgICAgICBpZiAobWF0Y2hbMF0gPT09ICcoJykge1xuICAgICAgICAgIG51bUNhcHR1cmVzKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfSkubWFwKHJlID0+IGAoJHtyZX0pYCkuam9pbihqb2luV2l0aCk7XG59XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Nb2RlfSBNb2RlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTW9kZUNhbGxiYWNrfSBNb2RlQ2FsbGJhY2sgKi9cblxuLy8gQ29tbW9uIHJlZ2V4cHNcbmNvbnN0IE1BVENIX05PVEhJTkdfUkUgPSAvXFxiXFxCLztcbmNvbnN0IElERU5UX1JFID0gJ1thLXpBLVpdXFxcXHcqJztcbmNvbnN0IFVOREVSU0NPUkVfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqJztcbmNvbnN0IE5VTUJFUl9SRSA9ICdcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKyk/JztcbmNvbnN0IENfTlVNQkVSX1JFID0gJygtPykoXFxcXGIwW3hYXVthLWZBLUYwLTldK3woXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJzsgLy8gMHguLi4sIDAuLi4sIGRlY2ltYWwsIGZsb2F0XG5jb25zdCBCSU5BUllfTlVNQkVSX1JFID0gJ1xcXFxiKDBiWzAxXSspJzsgLy8gMGIuLi5cbmNvbnN0IFJFX1NUQVJURVJTX1JFID0gJyF8IT18IT09fCV8JT18JnwmJnwmPXxcXFxcKnxcXFxcKj18XFxcXCt8XFxcXCs9fCx8LXwtPXwvPXwvfDp8O3w8PHw8PD18PD18PHw9PT18PT18PXw+Pj49fD4+PXw+PXw+Pj58Pj58PnxcXFxcP3xcXFxcW3xcXFxce3xcXFxcKHxcXFxcXnxcXFxcXj18XFxcXHx8XFxcXHw9fFxcXFx8XFxcXHx8fic7XG5cbi8qKlxuKiBAcGFyYW0geyBQYXJ0aWFsPE1vZGU+ICYge2JpbmFyeT86IHN0cmluZyB8IFJlZ0V4cH0gfSBvcHRzXG4qL1xuY29uc3QgU0hFQkFORyA9IChvcHRzID0ge30pID0+IHtcbiAgY29uc3QgYmVnaW5TaGViYW5nID0gL14jIVsgXSpcXC8vO1xuICBpZiAob3B0cy5iaW5hcnkpIHtcbiAgICBvcHRzLmJlZ2luID0gY29uY2F0KFxuICAgICAgYmVnaW5TaGViYW5nLFxuICAgICAgLy4qXFxiLyxcbiAgICAgIG9wdHMuYmluYXJ5LFxuICAgICAgL1xcYi4qLyk7XG4gIH1cbiAgcmV0dXJuIGluaGVyaXQkMSh7XG4gICAgc2NvcGU6ICdtZXRhJyxcbiAgICBiZWdpbjogYmVnaW5TaGViYW5nLFxuICAgIGVuZDogLyQvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICAvKiogQHR5cGUge01vZGVDYWxsYmFja30gKi9cbiAgICBcIm9uOmJlZ2luXCI6IChtLCByZXNwKSA9PiB7XG4gICAgICBpZiAobS5pbmRleCAhPT0gMCkgcmVzcC5pZ25vcmVNYXRjaCgpO1xuICAgIH1cbiAgfSwgb3B0cyk7XG59O1xuXG4vLyBDb21tb24gbW9kZXNcbmNvbnN0IEJBQ0tTTEFTSF9FU0NBUEUgPSB7XG4gIGJlZ2luOiAnXFxcXFxcXFxbXFxcXHNcXFxcU10nLCByZWxldmFuY2U6IDBcbn07XG5jb25zdCBBUE9TX1NUUklOR19NT0RFID0ge1xuICBzY29wZTogJ3N0cmluZycsXG4gIGJlZ2luOiAnXFwnJyxcbiAgZW5kOiAnXFwnJyxcbiAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgY29udGFpbnM6IFtCQUNLU0xBU0hfRVNDQVBFXVxufTtcbmNvbnN0IFFVT1RFX1NUUklOR19NT0RFID0ge1xuICBzY29wZTogJ3N0cmluZycsXG4gIGJlZ2luOiAnXCInLFxuICBlbmQ6ICdcIicsXG4gIGlsbGVnYWw6ICdcXFxcbicsXG4gIGNvbnRhaW5zOiBbQkFDS1NMQVNIX0VTQ0FQRV1cbn07XG5jb25zdCBQSFJBU0FMX1dPUkRTX01PREUgPSB7XG4gIGJlZ2luOiAvXFxiKGF8YW58dGhlfGFyZXxJJ218aXNuJ3R8ZG9uJ3R8ZG9lc24ndHx3b24ndHxidXR8anVzdHxzaG91bGR8cHJldHR5fHNpbXBseXxlbm91Z2h8Z29ubmF8Z29pbmd8d3RmfHNvfHN1Y2h8d2lsbHx5b3V8eW91cnx0aGV5fGxpa2V8bW9yZSlcXGIvXG59O1xuLyoqXG4gKiBDcmVhdGVzIGEgY29tbWVudCBtb2RlXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBSZWdFeHB9IGJlZ2luXG4gKiBAcGFyYW0ge3N0cmluZyB8IFJlZ0V4cH0gZW5kXG4gKiBAcGFyYW0ge01vZGUgfCB7fX0gW21vZGVPcHRpb25zXVxuICogQHJldHVybnMge1BhcnRpYWw8TW9kZT59XG4gKi9cbmNvbnN0IENPTU1FTlQgPSBmdW5jdGlvbihiZWdpbiwgZW5kLCBtb2RlT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IG1vZGUgPSBpbmhlcml0JDEoXG4gICAge1xuICAgICAgc2NvcGU6ICdjb21tZW50JyxcbiAgICAgIGJlZ2luLFxuICAgICAgZW5kLFxuICAgICAgY29udGFpbnM6IFtdXG4gICAgfSxcbiAgICBtb2RlT3B0aW9uc1xuICApO1xuICBtb2RlLmNvbnRhaW5zLnB1c2goe1xuICAgIHNjb3BlOiAnZG9jdGFnJyxcbiAgICAvLyBoYWNrIHRvIGF2b2lkIHRoZSBzcGFjZSBmcm9tIGJlaW5nIGluY2x1ZGVkLiB0aGUgc3BhY2UgaXMgbmVjZXNzYXJ5IHRvXG4gICAgLy8gbWF0Y2ggaGVyZSB0byBwcmV2ZW50IHRoZSBwbGFpbiB0ZXh0IHJ1bGUgYmVsb3cgZnJvbSBnb2JibGluZyB1cCBkb2N0YWdzXG4gICAgYmVnaW46ICdbIF0qKD89KFRPRE98RklYTUV8Tk9URXxCVUd8T1BUSU1JWkV8SEFDS3xYWFgpOiknLFxuICAgIGVuZDogLyhUT0RPfEZJWE1FfE5PVEV8QlVHfE9QVElNSVpFfEhBQ0t8WFhYKTovLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfSk7XG4gIGNvbnN0IEVOR0xJU0hfV09SRCA9IGVpdGhlcihcbiAgICAvLyBsaXN0IG9mIGNvbW1vbiAxIGFuZCAyIGxldHRlciB3b3JkcyBpbiBFbmdsaXNoXG4gICAgXCJJXCIsXG4gICAgXCJhXCIsXG4gICAgXCJpc1wiLFxuICAgIFwic29cIixcbiAgICBcInVzXCIsXG4gICAgXCJ0b1wiLFxuICAgIFwiYXRcIixcbiAgICBcImlmXCIsXG4gICAgXCJpblwiLFxuICAgIFwiaXRcIixcbiAgICBcIm9uXCIsXG4gICAgLy8gbm90ZTogdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0IG9mIGNvbnRyYWN0aW9ucywganVzdCBwb3B1bGFyIG9uZXNcbiAgICAvW0EtWmEtel0rWyddKGR8dmV8cmV8bGx8dHxzfG4pLywgLy8gY29udHJhY3Rpb25zIC0gY2FuJ3Qgd2UnZCB0aGV5J3JlIGxldCdzLCBldGNcbiAgICAvW0EtWmEtel0rWy1dW2Etel0rLywgLy8gYG5vLXdheWAsIGV0Yy5cbiAgICAvW0EtWmEtel1bYS16XXsyLH0vIC8vIGFsbG93IGNhcGl0YWxpemVkIHdvcmRzIGF0IGJlZ2lubmluZyBvZiBzZW50ZW5jZXNcbiAgKTtcbiAgLy8gbG9va2luZyBsaWtlIHBsYWluIHRleHQsIG1vcmUgbGlrZWx5IHRvIGJlIGEgY29tbWVudFxuICBtb2RlLmNvbnRhaW5zLnB1c2goXG4gICAge1xuICAgICAgLy8gVE9ETzogaG93IHRvIGluY2x1ZGUgXCIsICgsICkgd2l0aG91dCBicmVha2luZyBncmFtbWFycyB0aGF0IHVzZSB0aGVzZSBmb3JcbiAgICAgIC8vIGNvbW1lbnQgZGVsaW1pdGVycz9cbiAgICAgIC8vIGJlZ2luOiAvWyBdKyhbKClcIl0/KFtBLVphLXonLV17Myx9fGlzfGF8SXxzb3x1c3xbdFRdW29PXXxhdHxpZnxpbnxpdHxvbilbLl0/WygpXCI6XT8oWy5dWyBdfFsgXXxcXCkpKXszfS9cbiAgICAgIC8vIC0tLVxuXG4gICAgICAvLyB0aGlzIHRyaWVzIHRvIGZpbmQgc2VxdWVuY2VzIG9mIDMgZW5nbGlzaCB3b3JkcyBpbiBhIHJvdyAod2l0aG91dCBhbnlcbiAgICAgIC8vIFwicHJvZ3JhbW1pbmdcIiB0eXBlIHN5bnRheCkgdGhpcyBnaXZlcyB1cyBhIHN0cm9uZyBzaWduYWwgdGhhdCB3ZSd2ZVxuICAgICAgLy8gVFJVTFkgZm91bmQgYSBjb21tZW50IC0gdnMgcGVyaGFwcyBzY2FubmluZyB3aXRoIHRoZSB3cm9uZyBsYW5ndWFnZS5cbiAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gZmluZCBzb21ldGhpbmcgdGhhdCBMT09LUyBsaWtlIHRoZSBzdGFydCBvZiB0aGVcbiAgICAgIC8vIGNvbW1lbnQgLSBidXQgdGhlbiBpZiB0aGVyZSBpcyBubyByZWFkYWJsZSB0ZXh0IC0gZ29vZCBjaGFuY2UgaXQgaXMgYVxuICAgICAgLy8gZmFsc2UgbWF0Y2ggYW5kIG5vdCBhIGNvbW1lbnQuXG4gICAgICAvL1xuICAgICAgLy8gZm9yIGEgdmlzdWFsIGV4YW1wbGUgcGxlYXNlIHNlZTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzI4MjdcblxuICAgICAgYmVnaW46IGNvbmNhdChcbiAgICAgICAgL1sgXSsvLCAvLyBuZWNlc3NhcnkgdG8gcHJldmVudCB1cyBnb2JibGluZyB1cCBkb2N0YWdzIGxpa2UgLyogQGF1dGhvciBCb2IgTWNnaWxsICovXG4gICAgICAgICcoJyxcbiAgICAgICAgRU5HTElTSF9XT1JELFxuICAgICAgICAvWy5dP1s6XT8oWy5dWyBdfFsgXSkvLFxuICAgICAgICAnKXszfScpIC8vIGxvb2sgZm9yIDMgd29yZHMgaW4gYSByb3dcbiAgICB9XG4gICk7XG4gIHJldHVybiBtb2RlO1xufTtcbmNvbnN0IENfTElORV9DT01NRU5UX01PREUgPSBDT01NRU5UKCcvLycsICckJyk7XG5jb25zdCBDX0JMT0NLX0NPTU1FTlRfTU9ERSA9IENPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nKTtcbmNvbnN0IEhBU0hfQ09NTUVOVF9NT0RFID0gQ09NTUVOVCgnIycsICckJyk7XG5jb25zdCBOVU1CRVJfTU9ERSA9IHtcbiAgc2NvcGU6ICdudW1iZXInLFxuICBiZWdpbjogTlVNQkVSX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5jb25zdCBDX05VTUJFUl9NT0RFID0ge1xuICBzY29wZTogJ251bWJlcicsXG4gIGJlZ2luOiBDX05VTUJFUl9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgQklOQVJZX05VTUJFUl9NT0RFID0ge1xuICBzY29wZTogJ251bWJlcicsXG4gIGJlZ2luOiBCSU5BUllfTlVNQkVSX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5jb25zdCBSRUdFWFBfTU9ERSA9IHtcbiAgLy8gdGhpcyBvdXRlciBydWxlIG1ha2VzIHN1cmUgd2UgYWN0dWFsbHkgaGF2ZSBhIFdIT0xFIHJlZ2V4IGFuZCBub3Qgc2ltcGx5XG4gIC8vIGFuIGV4cHJlc3Npb24gc3VjaCBhczpcbiAgLy9cbiAgLy8gICAgIDMgLyBzb21ldGhpbmdcbiAgLy9cbiAgLy8gKHdoaWNoIHdpbGwgdGhlbiBibG93IHVwIHdoZW4gcmVnZXgncyBgaWxsZWdhbGAgc2VlcyB0aGUgbmV3bGluZSlcbiAgYmVnaW46IC8oPz1cXC9bXi9cXG5dKlxcLykvLFxuICBjb250YWluczogW3tcbiAgICBzY29wZTogJ3JlZ2V4cCcsXG4gICAgYmVnaW46IC9cXC8vLFxuICAgIGVuZDogL1xcL1tnaW11eV0qLyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFsvLFxuICAgICAgICBlbmQ6IC9cXF0vLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICAgIH1cbiAgICBdXG4gIH1dXG59O1xuY29uc3QgVElUTEVfTU9ERSA9IHtcbiAgc2NvcGU6ICd0aXRsZScsXG4gIGJlZ2luOiBJREVOVF9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgVU5ERVJTQ09SRV9USVRMRV9NT0RFID0ge1xuICBzY29wZTogJ3RpdGxlJyxcbiAgYmVnaW46IFVOREVSU0NPUkVfSURFTlRfUkUsXG4gIHJlbGV2YW5jZTogMFxufTtcbmNvbnN0IE1FVEhPRF9HVUFSRCA9IHtcbiAgLy8gZXhjbHVkZXMgbWV0aG9kIG5hbWVzIGZyb20ga2V5d29yZCBwcm9jZXNzaW5nXG4gIGJlZ2luOiAnXFxcXC5cXFxccyonICsgVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuXG4vKipcbiAqIEFkZHMgZW5kIHNhbWUgYXMgYmVnaW4gbWVjaGFuaWNzIHRvIGEgbW9kZVxuICpcbiAqIFlvdXIgbW9kZSBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgYSBzaW5nbGUgKCkgbWF0Y2ggZ3JvdXAgYXMgdGhhdCBmaXJzdCBtYXRjaFxuICogZ3JvdXAgaXMgd2hhdCBpcyB1c2VkIGZvciBjb21wYXJpc29uXG4gKiBAcGFyYW0ge1BhcnRpYWw8TW9kZT59IG1vZGVcbiAqL1xuY29uc3QgRU5EX1NBTUVfQVNfQkVHSU4gPSBmdW5jdGlvbihtb2RlKSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKG1vZGUsXG4gICAge1xuICAgICAgLyoqIEB0eXBlIHtNb2RlQ2FsbGJhY2t9ICovXG4gICAgICAnb246YmVnaW4nOiAobSwgcmVzcCkgPT4geyByZXNwLmRhdGEuX2JlZ2luTWF0Y2ggPSBtWzFdOyB9LFxuICAgICAgLyoqIEB0eXBlIHtNb2RlQ2FsbGJhY2t9ICovXG4gICAgICAnb246ZW5kJzogKG0sIHJlc3ApID0+IHsgaWYgKHJlc3AuZGF0YS5fYmVnaW5NYXRjaCAhPT0gbVsxXSkgcmVzcC5pZ25vcmVNYXRjaCgpOyB9XG4gICAgfSk7XG59O1xuXG52YXIgTU9ERVMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgTUFUQ0hfTk9USElOR19SRTogTUFUQ0hfTk9USElOR19SRSxcbiAgSURFTlRfUkU6IElERU5UX1JFLFxuICBVTkRFUlNDT1JFX0lERU5UX1JFOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICBOVU1CRVJfUkU6IE5VTUJFUl9SRSxcbiAgQ19OVU1CRVJfUkU6IENfTlVNQkVSX1JFLFxuICBCSU5BUllfTlVNQkVSX1JFOiBCSU5BUllfTlVNQkVSX1JFLFxuICBSRV9TVEFSVEVSU19SRTogUkVfU1RBUlRFUlNfUkUsXG4gIFNIRUJBTkc6IFNIRUJBTkcsXG4gIEJBQ0tTTEFTSF9FU0NBUEU6IEJBQ0tTTEFTSF9FU0NBUEUsXG4gIEFQT1NfU1RSSU5HX01PREU6IEFQT1NfU1RSSU5HX01PREUsXG4gIFFVT1RFX1NUUklOR19NT0RFOiBRVU9URV9TVFJJTkdfTU9ERSxcbiAgUEhSQVNBTF9XT1JEU19NT0RFOiBQSFJBU0FMX1dPUkRTX01PREUsXG4gIENPTU1FTlQ6IENPTU1FTlQsXG4gIENfTElORV9DT01NRU5UX01PREU6IENfTElORV9DT01NRU5UX01PREUsXG4gIENfQkxPQ0tfQ09NTUVOVF9NT0RFOiBDX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgSEFTSF9DT01NRU5UX01PREU6IEhBU0hfQ09NTUVOVF9NT0RFLFxuICBOVU1CRVJfTU9ERTogTlVNQkVSX01PREUsXG4gIENfTlVNQkVSX01PREU6IENfTlVNQkVSX01PREUsXG4gIEJJTkFSWV9OVU1CRVJfTU9ERTogQklOQVJZX05VTUJFUl9NT0RFLFxuICBSRUdFWFBfTU9ERTogUkVHRVhQX01PREUsXG4gIFRJVExFX01PREU6IFRJVExFX01PREUsXG4gIFVOREVSU0NPUkVfVElUTEVfTU9ERTogVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICBNRVRIT0RfR1VBUkQ6IE1FVEhPRF9HVUFSRCxcbiAgRU5EX1NBTUVfQVNfQkVHSU46IEVORF9TQU1FX0FTX0JFR0lOXG59KTtcblxuLyoqXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5DYWxsYmFja1Jlc3BvbnNlfSBDYWxsYmFja1Jlc3BvbnNlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlckV4dH0gQ29tcGlsZXJFeHRcbiovXG5cbi8vIEdyYW1tYXIgZXh0ZW5zaW9ucyAvIHBsdWdpbnNcbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjgzM1xuXG4vLyBHcmFtbWFyIGV4dGVuc2lvbnMgYWxsb3cgXCJzeW50YWN0aWMgc3VnYXJcIiB0byBiZSBhZGRlZCB0byB0aGUgZ3JhbW1hciBtb2Rlc1xuLy8gd2l0aG91dCByZXF1aXJpbmcgYW55IHVuZGVybHlpbmcgY2hhbmdlcyB0byB0aGUgY29tcGlsZXIgaW50ZXJuYWxzLlxuXG4vLyBgY29tcGlsZU1hdGNoYCBiZWluZyB0aGUgcGVyZmVjdCBzbWFsbCBleGFtcGxlIG9mIG5vdyBhbGxvd2luZyBhIGdyYW1tYXJcbi8vIGF1dGhvciB0byB3cml0ZSBgbWF0Y2hgIHdoZW4gdGhleSBkZXNpcmUgdG8gbWF0Y2ggYSBzaW5nbGUgZXhwcmVzc2lvbiByYXRoZXJcbi8vIHRoYW4gYmVpbmcgZm9yY2VkIHRvIHVzZSBgYmVnaW5gLiAgVGhlIGV4dGVuc2lvbiB0aGVuIGp1c3QgbW92ZXMgYG1hdGNoYCBpbnRvXG4vLyBgYmVnaW5gIHdoZW4gaXQgcnVucy4gIEllLCBubyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQsIGJ1dCB3ZSd2ZSBqdXN0IG1hZGVcbi8vIHRoZSBleHBlcmllbmNlIG9mIHdyaXRpbmcgKGFuZCByZWFkaW5nIGdyYW1tYXJzKSBhIGxpdHRsZSBiaXQgbmljZXIuXG5cbi8vIC0tLS0tLVxuXG4vLyBUT0RPOiBXZSBuZWVkIG5lZ2F0aXZlIGxvb2stYmVoaW5kIHN1cHBvcnQgdG8gZG8gdGhpcyBwcm9wZXJseVxuLyoqXG4gKiBTa2lwIGEgbWF0Y2ggaWYgaXQgaGFzIGEgcHJlY2VkaW5nIGRvdFxuICpcbiAqIFRoaXMgaXMgdXNlZCBmb3IgYGJlZ2luS2V5d29yZHNgIHRvIHByZXZlbnQgbWF0Y2hpbmcgZXhwcmVzc2lvbnMgc3VjaCBhc1xuICogYGJvYi5rZXl3b3JkLmRvKClgLiBUaGUgbW9kZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHdpcmVzIHRoaXMgdXAgYXMgYVxuICogc3BlY2lhbCBfaW50ZXJuYWxfICdvbjpiZWdpbicgY2FsbGJhY2sgZm9yIG1vZGVzIHdpdGggYGJlZ2luS2V5d29yZHNgXG4gKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoXG4gKiBAcGFyYW0ge0NhbGxiYWNrUmVzcG9uc2V9IHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIHNraXBJZkhhc1ByZWNlZGluZ0RvdChtYXRjaCwgcmVzcG9uc2UpIHtcbiAgY29uc3QgYmVmb3JlID0gbWF0Y2guaW5wdXRbbWF0Y2guaW5kZXggLSAxXTtcbiAgaWYgKGJlZm9yZSA9PT0gXCIuXCIpIHtcbiAgICByZXNwb25zZS5pZ25vcmVNYXRjaCgpO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIEB0eXBlIHtDb21waWxlckV4dH1cbiAqL1xuZnVuY3Rpb24gc2NvcGVDbGFzc05hbWUobW9kZSwgX3BhcmVudCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gIGlmIChtb2RlLmNsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbW9kZS5zY29wZSA9IG1vZGUuY2xhc3NOYW1lO1xuICAgIGRlbGV0ZSBtb2RlLmNsYXNzTmFtZTtcbiAgfVxufVxuXG4vKipcbiAqIGBiZWdpbktleXdvcmRzYCBzeW50YWN0aWMgc3VnYXJcbiAqIEB0eXBlIHtDb21waWxlckV4dH1cbiAqL1xuZnVuY3Rpb24gYmVnaW5LZXl3b3Jkcyhtb2RlLCBwYXJlbnQpIHtcbiAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgaWYgKCFtb2RlLmJlZ2luS2V5d29yZHMpIHJldHVybjtcblxuICAvLyBmb3IgbGFuZ3VhZ2VzIHdpdGgga2V5d29yZHMgdGhhdCBpbmNsdWRlIG5vbi13b3JkIGNoYXJhY3RlcnMgY2hlY2tpbmcgZm9yXG4gIC8vIGEgd29yZCBib3VuZGFyeSBpcyBub3Qgc3VmZmljaWVudCwgc28gaW5zdGVhZCB3ZSBjaGVjayBmb3IgYSB3b3JkIGJvdW5kYXJ5XG4gIC8vIG9yIHdoaXRlc3BhY2UgLSB0aGlzIGRvZXMgbm8gaGFybSBpbiBhbnkgY2FzZSBzaW5jZSBvdXIga2V5d29yZCBlbmdpbmVcbiAgLy8gZG9lc24ndCBhbGxvdyBzcGFjZXMgaW4ga2V5d29yZHMgYW55d2F5cyBhbmQgd2Ugc3RpbGwgY2hlY2sgZm9yIHRoZSBib3VuZGFyeVxuICAvLyBmaXJzdFxuICBtb2RlLmJlZ2luID0gJ1xcXFxiKCcgKyBtb2RlLmJlZ2luS2V5d29yZHMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKSg/IVxcXFwuKSg/PVxcXFxifFxcXFxzKSc7XG4gIG1vZGUuX19iZWZvcmVCZWdpbiA9IHNraXBJZkhhc1ByZWNlZGluZ0RvdDtcbiAgbW9kZS5rZXl3b3JkcyA9IG1vZGUua2V5d29yZHMgfHwgbW9kZS5iZWdpbktleXdvcmRzO1xuICBkZWxldGUgbW9kZS5iZWdpbktleXdvcmRzO1xuXG4gIC8vIHByZXZlbnRzIGRvdWJsZSByZWxldmFuY2UsIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHByb3ZpZGVcbiAgLy8gcmVsZXZhbmNlLCB0aGUgbW9kZSBkb2Vzbid0IG5lZWQgdG8gZG91YmxlIGl0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgaWYgKG1vZGUucmVsZXZhbmNlID09PSB1bmRlZmluZWQpIG1vZGUucmVsZXZhbmNlID0gMDtcbn1cblxuLyoqXG4gKiBBbGxvdyBgaWxsZWdhbGAgdG8gY29udGFpbiBhbiBhcnJheSBvZiBpbGxlZ2FsIHZhbHVlc1xuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBjb21waWxlSWxsZWdhbChtb2RlLCBfcGFyZW50KSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtb2RlLmlsbGVnYWwpKSByZXR1cm47XG5cbiAgbW9kZS5pbGxlZ2FsID0gZWl0aGVyKC4uLm1vZGUuaWxsZWdhbCk7XG59XG5cbi8qKlxuICogYG1hdGNoYCB0byBtYXRjaCBhIHNpbmdsZSBleHByZXNzaW9uIGZvciByZWFkYWJpbGl0eVxuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBjb21waWxlTWF0Y2gobW9kZSwgX3BhcmVudCkge1xuICBpZiAoIW1vZGUubWF0Y2gpIHJldHVybjtcbiAgaWYgKG1vZGUuYmVnaW4gfHwgbW9kZS5lbmQpIHRocm93IG5ldyBFcnJvcihcImJlZ2luICYgZW5kIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggbWF0Y2hcIik7XG5cbiAgbW9kZS5iZWdpbiA9IG1vZGUubWF0Y2g7XG4gIGRlbGV0ZSBtb2RlLm1hdGNoO1xufVxuXG4vKipcbiAqIHByb3ZpZGVzIHRoZSBkZWZhdWx0IDEgcmVsZXZhbmNlIHRvIGFsbCBtb2Rlc1xuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBjb21waWxlUmVsZXZhbmNlKG1vZGUsIF9wYXJlbnQpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmaW5lZFxuICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkgbW9kZS5yZWxldmFuY2UgPSAxO1xufVxuXG4vLyBhbGxvdyBiZWZvcmVNYXRjaCB0byBhY3QgYXMgYSBcInF1YWxpZmllclwiIGZvciB0aGUgbWF0Y2hcbi8vIHRoZSBmdWxsIG1hdGNoIGJlZ2luIG11c3QgYmUgW2JlZm9yZU1hdGNoXVtiZWdpbl1cbmNvbnN0IGJlZm9yZU1hdGNoRXh0ID0gKG1vZGUsIHBhcmVudCkgPT4ge1xuICBpZiAoIW1vZGUuYmVmb3JlTWF0Y2gpIHJldHVybjtcbiAgLy8gc3RhcnRzIGNvbmZsaWN0cyB3aXRoIGVuZHNQYXJlbnQgd2hpY2ggd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNoaWxkXG4gIC8vIHJ1bGUgaXMgbm90IG1hdGNoZWQgbXVsdGlwbGUgdGltZXNcbiAgaWYgKG1vZGUuc3RhcnRzKSB0aHJvdyBuZXcgRXJyb3IoXCJiZWZvcmVNYXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIHN0YXJ0c1wiKTtcblxuICBjb25zdCBvcmlnaW5hbE1vZGUgPSBPYmplY3QuYXNzaWduKHt9LCBtb2RlKTtcbiAgT2JqZWN0LmtleXMobW9kZSkuZm9yRWFjaCgoa2V5KSA9PiB7IGRlbGV0ZSBtb2RlW2tleV07IH0pO1xuXG4gIG1vZGUua2V5d29yZHMgPSBvcmlnaW5hbE1vZGUua2V5d29yZHM7XG4gIG1vZGUuYmVnaW4gPSBjb25jYXQob3JpZ2luYWxNb2RlLmJlZm9yZU1hdGNoLCBsb29rYWhlYWQob3JpZ2luYWxNb2RlLmJlZ2luKSk7XG4gIG1vZGUuc3RhcnRzID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgT2JqZWN0LmFzc2lnbihvcmlnaW5hbE1vZGUsIHsgZW5kc1BhcmVudDogdHJ1ZSB9KVxuICAgIF1cbiAgfTtcbiAgbW9kZS5yZWxldmFuY2UgPSAwO1xuXG4gIGRlbGV0ZSBvcmlnaW5hbE1vZGUuYmVmb3JlTWF0Y2g7XG59O1xuXG4vLyBrZXl3b3JkcyB0aGF0IHNob3VsZCBoYXZlIG5vIGRlZmF1bHQgcmVsZXZhbmNlIHZhbHVlXG5jb25zdCBDT01NT05fS0VZV09SRFMgPSBbXG4gICdvZicsXG4gICdhbmQnLFxuICAnZm9yJyxcbiAgJ2luJyxcbiAgJ25vdCcsXG4gICdvcicsXG4gICdpZicsXG4gICd0aGVuJyxcbiAgJ3BhcmVudCcsIC8vIGNvbW1vbiB2YXJpYWJsZSBuYW1lXG4gICdsaXN0JywgLy8gY29tbW9uIHZhcmlhYmxlIG5hbWVcbiAgJ3ZhbHVlJyAvLyBjb21tb24gdmFyaWFibGUgbmFtZVxuXTtcblxuY29uc3QgREVGQVVMVF9LRVlXT1JEX1NDT1BFID0gXCJrZXl3b3JkXCI7XG5cbi8qKlxuICogR2l2ZW4gcmF3IGtleXdvcmRzIGZyb20gYSBsYW5ndWFnZSBkZWZpbml0aW9uLCBjb21waWxlIHRoZW0uXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLHN0cmluZ3xzdHJpbmdbXT4gfCBBcnJheTxzdHJpbmc+fSByYXdLZXl3b3Jkc1xuICogQHBhcmFtIHtib29sZWFufSBjYXNlSW5zZW5zaXRpdmVcbiAqL1xuZnVuY3Rpb24gY29tcGlsZUtleXdvcmRzKHJhd0tleXdvcmRzLCBjYXNlSW5zZW5zaXRpdmUsIHNjb3BlTmFtZSA9IERFRkFVTFRfS0VZV09SRF9TQ09QRSkge1xuICAvKiogQHR5cGUge2ltcG9ydChcImhpZ2hsaWdodC5qcy9wcml2YXRlXCIpLktleXdvcmREaWN0fSAqL1xuICBjb25zdCBjb21waWxlZEtleXdvcmRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAvLyBpbnB1dCBjYW4gYmUgYSBzdHJpbmcgb2Yga2V5d29yZHMsIGFuIGFycmF5IG9mIGtleXdvcmRzLCBvciBhIG9iamVjdCB3aXRoXG4gIC8vIG5hbWVkIGtleXMgcmVwcmVzZW50aW5nIHNjb3BlTmFtZSAod2hpY2ggY2FuIHRoZW4gcG9pbnQgdG8gYSBzdHJpbmcgb3IgYXJyYXkpXG4gIGlmICh0eXBlb2YgcmF3S2V5d29yZHMgPT09ICdzdHJpbmcnKSB7XG4gICAgY29tcGlsZUxpc3Qoc2NvcGVOYW1lLCByYXdLZXl3b3Jkcy5zcGxpdChcIiBcIikpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3S2V5d29yZHMpKSB7XG4gICAgY29tcGlsZUxpc3Qoc2NvcGVOYW1lLCByYXdLZXl3b3Jkcyk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmtleXMocmF3S2V5d29yZHMpLmZvckVhY2goZnVuY3Rpb24oc2NvcGVOYW1lKSB7XG4gICAgICAvLyBjb2xsYXBzZSBhbGwgb3VyIG9iamVjdHMgYmFjayBpbnRvIHRoZSBwYXJlbnQgb2JqZWN0XG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICBjb21waWxlZEtleXdvcmRzLFxuICAgICAgICBjb21waWxlS2V5d29yZHMocmF3S2V5d29yZHNbc2NvcGVOYW1lXSwgY2FzZUluc2Vuc2l0aXZlLCBzY29wZU5hbWUpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBjb21waWxlZEtleXdvcmRzO1xuXG4gIC8vIC0tLVxuXG4gIC8qKlxuICAgKiBDb21waWxlcyBhbiBpbmRpdmlkdWFsIGxpc3Qgb2Yga2V5d29yZHNcbiAgICpcbiAgICogRXg6IFwiZm9yIGlmIHdoZW4gd2hpbGV8NVwiXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY29wZU5hbWVcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBrZXl3b3JkTGlzdFxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGlsZUxpc3Qoc2NvcGVOYW1lLCBrZXl3b3JkTGlzdCkge1xuICAgIGlmIChjYXNlSW5zZW5zaXRpdmUpIHtcbiAgICAgIGtleXdvcmRMaXN0ID0ga2V5d29yZExpc3QubWFwKHggPT4geC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAga2V5d29yZExpc3QuZm9yRWFjaChmdW5jdGlvbihrZXl3b3JkKSB7XG4gICAgICBjb25zdCBwYWlyID0ga2V5d29yZC5zcGxpdCgnfCcpO1xuICAgICAgY29tcGlsZWRLZXl3b3Jkc1twYWlyWzBdXSA9IFtzY29wZU5hbWUsIHNjb3JlRm9yS2V5d29yZChwYWlyWzBdLCBwYWlyWzFdKV07XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm9wZXIgc2NvcmUgZm9yIGEgZ2l2ZW4ga2V5d29yZFxuICpcbiAqIEFsc28gdGFrZXMgaW50byBhY2NvdW50IGNvbW1lbnQga2V5d29yZHMsIHdoaWNoIHdpbGwgYmUgc2NvcmVkIDAgVU5MRVNTXG4gKiBhbm90aGVyIHNjb3JlIGhhcyBiZWVuIG1hbnVhbGx5IGFzc2lnbmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleXdvcmRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJvdmlkZWRTY29yZV1cbiAqL1xuZnVuY3Rpb24gc2NvcmVGb3JLZXl3b3JkKGtleXdvcmQsIHByb3ZpZGVkU2NvcmUpIHtcbiAgLy8gbWFudWFsIHNjb3JlcyBhbHdheXMgd2luIG92ZXIgY29tbW9uIGtleXdvcmRzXG4gIC8vIHNvIHlvdSBjYW4gZm9yY2UgYSBzY29yZSBvZiAxIGlmIHlvdSByZWFsbHkgaW5zaXN0XG4gIGlmIChwcm92aWRlZFNjb3JlKSB7XG4gICAgcmV0dXJuIE51bWJlcihwcm92aWRlZFNjb3JlKTtcbiAgfVxuXG4gIHJldHVybiBjb21tb25LZXl3b3JkKGtleXdvcmQpID8gMCA6IDE7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGtleXdvcmQgaXMgY29tbW9uIG9yIG5vdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXl3b3JkICovXG5mdW5jdGlvbiBjb21tb25LZXl3b3JkKGtleXdvcmQpIHtcbiAgcmV0dXJuIENPTU1PTl9LRVlXT1JEUy5pbmNsdWRlcyhrZXl3b3JkLnRvTG93ZXJDYXNlKCkpO1xufVxuXG4vKlxuXG5Gb3IgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwbGVhc2Ugc2VlOlxuaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjg4MCNpc3N1ZWNvbW1lbnQtNzQ3Mjc1NDE5XG5cbiovXG5cbi8qKlxuICogQHR5cGUge1JlY29yZDxzdHJpbmcsIGJvb2xlYW4+fVxuICovXG5jb25zdCBzZWVuRGVwcmVjYXRpb25zID0ge307XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAqL1xuY29uc3QgZXJyb3IgPSAobWVzc2FnZSkgPT4ge1xuICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICogQHBhcmFtIHthbnl9IGFyZ3NcbiAqL1xuY29uc3Qgd2FybiA9IChtZXNzYWdlLCAuLi5hcmdzKSA9PiB7XG4gIGNvbnNvbGUubG9nKGBXQVJOOiAke21lc3NhZ2V9YCwgLi4uYXJncyk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICovXG5jb25zdCBkZXByZWNhdGVkID0gKHZlcnNpb24sIG1lc3NhZ2UpID0+IHtcbiAgaWYgKHNlZW5EZXByZWNhdGlvbnNbYCR7dmVyc2lvbn0vJHttZXNzYWdlfWBdKSByZXR1cm47XG5cbiAgY29uc29sZS5sb2coYERlcHJlY2F0ZWQgYXMgb2YgJHt2ZXJzaW9ufS4gJHttZXNzYWdlfWApO1xuICBzZWVuRGVwcmVjYXRpb25zW2Ake3ZlcnNpb259LyR7bWVzc2FnZX1gXSA9IHRydWU7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby10aHJvdy1saXRlcmFsICovXG5cbi8qKlxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ29tcGlsZWRNb2RlfSBDb21waWxlZE1vZGVcbiovXG5cbmNvbnN0IE11bHRpQ2xhc3NFcnJvciA9IG5ldyBFcnJvcigpO1xuXG4vKipcbiAqIFJlbnVtYmVycyBsYWJlbGVkIHNjb3BlIG5hbWVzIHRvIGFjY291bnQgZm9yIGFkZGl0aW9uYWwgaW5uZXIgbWF0Y2hcbiAqIGdyb3VwcyB0aGF0IG90aGVyd2lzZSB3b3VsZCBicmVhayBldmVyeXRoaW5nLlxuICpcbiAqIExldHMgc2F5IHdlIDMgbWF0Y2ggc2NvcGVzOlxuICpcbiAqICAgeyAxID0+IC4uLiwgMiA9PiAuLi4sIDMgPT4gLi4uIH1cbiAqXG4gKiBTbyB3aGF0IHdlIG5lZWQgaXMgYSBjbGVhbiBtYXRjaCBsaWtlIHRoaXM6XG4gKlxuICogICAoYSkoYikoYykgPT4gWyBcImFcIiwgXCJiXCIsIFwiY1wiIF1cbiAqXG4gKiBCdXQgdGhpcyBmYWxscyBhcGFydCB3aXRoIGlubmVyIG1hdGNoIGdyb3VwczpcbiAqXG4gKiAoYSkoKChiKSkpKGMpID0+IFtcImFcIiwgXCJiXCIsIFwiYlwiLCBcImJcIiwgXCJjXCIgXVxuICpcbiAqIE91ciBzY29wZXMgYXJlIG5vdyBcIm91dCBvZiBhbGlnbm1lbnRcIiBhbmQgd2UncmUgcmVwZWF0aW5nIGBiYCAzIHRpbWVzLlxuICogV2hhdCBuZWVkcyB0byBoYXBwZW4gaXMgdGhlIG51bWJlcnMgYXJlIHJlbWFwcGVkOlxuICpcbiAqICAgeyAxID0+IC4uLiwgMiA9PiAuLi4sIDUgPT4gLi4uIH1cbiAqXG4gKiBXZSBhbHNvIG5lZWQgdG8ga25vdyB0aGF0IHRoZSBPTkxZIGdyb3VwcyB0aGF0IHNob3VsZCBiZSBvdXRwdXRcbiAqIGFyZSAxLCAyLCBhbmQgNS4gIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGlzIGJlaGF2aW9yLlxuICpcbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKiBAcGFyYW0ge0FycmF5PFJlZ0V4cCB8IHN0cmluZz59IHJlZ2V4ZXNcbiAqIEBwYXJhbSB7e2tleTogXCJiZWdpblNjb3BlXCJ8XCJlbmRTY29wZVwifX0gb3B0c1xuICovXG5mdW5jdGlvbiByZW1hcFNjb3BlTmFtZXMobW9kZSwgcmVnZXhlcywgeyBrZXkgfSkge1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgY29uc3Qgc2NvcGVOYW1lcyA9IG1vZGVba2V5XTtcbiAgLyoqIEB0eXBlIFJlY29yZDxudW1iZXIsYm9vbGVhbj4gKi9cbiAgY29uc3QgZW1pdCA9IHt9O1xuICAvKiogQHR5cGUgUmVjb3JkPG51bWJlcixzdHJpbmc+ICovXG4gIGNvbnN0IHBvc2l0aW9ucyA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IHJlZ2V4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBwb3NpdGlvbnNbaSArIG9mZnNldF0gPSBzY29wZU5hbWVzW2ldO1xuICAgIGVtaXRbaSArIG9mZnNldF0gPSB0cnVlO1xuICAgIG9mZnNldCArPSBjb3VudE1hdGNoR3JvdXBzKHJlZ2V4ZXNbaSAtIDFdKTtcbiAgfVxuICAvLyB3ZSB1c2UgX2VtaXQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBtYXRjaCBncm91cHMgYXJlIFwidG9wLWxldmVsXCIgdG8gYXZvaWQgZG91YmxlXG4gIC8vIG91dHB1dCBmcm9tIGluc2lkZSBtYXRjaCBncm91cHNcbiAgbW9kZVtrZXldID0gcG9zaXRpb25zO1xuICBtb2RlW2tleV0uX2VtaXQgPSBlbWl0O1xuICBtb2RlW2tleV0uX211bHRpID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICovXG5mdW5jdGlvbiBiZWdpbk11bHRpQ2xhc3MobW9kZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZS5iZWdpbikpIHJldHVybjtcblxuICBpZiAobW9kZS5za2lwIHx8IG1vZGUuZXhjbHVkZUJlZ2luIHx8IG1vZGUucmV0dXJuQmVnaW4pIHtcbiAgICBlcnJvcihcInNraXAsIGV4Y2x1ZGVCZWdpbiwgcmV0dXJuQmVnaW4gbm90IGNvbXBhdGlibGUgd2l0aCBiZWdpblNjb3BlOiB7fVwiKTtcbiAgICB0aHJvdyBNdWx0aUNsYXNzRXJyb3I7XG4gIH1cblxuICBpZiAodHlwZW9mIG1vZGUuYmVnaW5TY29wZSAhPT0gXCJvYmplY3RcIiB8fCBtb2RlLmJlZ2luU2NvcGUgPT09IG51bGwpIHtcbiAgICBlcnJvcihcImJlZ2luU2NvcGUgbXVzdCBiZSBvYmplY3RcIik7XG4gICAgdGhyb3cgTXVsdGlDbGFzc0Vycm9yO1xuICB9XG5cbiAgcmVtYXBTY29wZU5hbWVzKG1vZGUsIG1vZGUuYmVnaW4sIHsga2V5OiBcImJlZ2luU2NvcGVcIiB9KTtcbiAgbW9kZS5iZWdpbiA9IF9yZXdyaXRlQmFja3JlZmVyZW5jZXMobW9kZS5iZWdpbiwgeyBqb2luV2l0aDogXCJcIiB9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICovXG5mdW5jdGlvbiBlbmRNdWx0aUNsYXNzKG1vZGUpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGUuZW5kKSkgcmV0dXJuO1xuXG4gIGlmIChtb2RlLnNraXAgfHwgbW9kZS5leGNsdWRlRW5kIHx8IG1vZGUucmV0dXJuRW5kKSB7XG4gICAgZXJyb3IoXCJza2lwLCBleGNsdWRlRW5kLCByZXR1cm5FbmQgbm90IGNvbXBhdGlibGUgd2l0aCBlbmRTY29wZToge31cIik7XG4gICAgdGhyb3cgTXVsdGlDbGFzc0Vycm9yO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBtb2RlLmVuZFNjb3BlICE9PSBcIm9iamVjdFwiIHx8IG1vZGUuZW5kU2NvcGUgPT09IG51bGwpIHtcbiAgICBlcnJvcihcImVuZFNjb3BlIG11c3QgYmUgb2JqZWN0XCIpO1xuICAgIHRocm93IE11bHRpQ2xhc3NFcnJvcjtcbiAgfVxuXG4gIHJlbWFwU2NvcGVOYW1lcyhtb2RlLCBtb2RlLmVuZCwgeyBrZXk6IFwiZW5kU2NvcGVcIiB9KTtcbiAgbW9kZS5lbmQgPSBfcmV3cml0ZUJhY2tyZWZlcmVuY2VzKG1vZGUuZW5kLCB7IGpvaW5XaXRoOiBcIlwiIH0pO1xufVxuXG4vKipcbiAqIHRoaXMgZXhpc3RzIG9ubHkgdG8gYWxsb3cgYHNjb3BlOiB7fWAgdG8gYmUgdXNlZCBiZXNpZGUgYG1hdGNoOmBcbiAqIE90aGVyd2lzZSBgYmVnaW5TY29wZWAgd291bGQgbmVjZXNzYXJ5IGFuZCB0aGF0IHdvdWxkIGxvb2sgd2VpcmRcblxuICB7XG4gICAgbWF0Y2g6IFsgL2RlZi8sIC9cXHcrLyBdXG4gICAgc2NvcGU6IHsgMTogXCJrZXl3b3JkXCIgLCAyOiBcInRpdGxlXCIgfVxuICB9XG5cbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKi9cbmZ1bmN0aW9uIHNjb3BlU3VnYXIobW9kZSkge1xuICBpZiAobW9kZS5zY29wZSAmJiB0eXBlb2YgbW9kZS5zY29wZSA9PT0gXCJvYmplY3RcIiAmJiBtb2RlLnNjb3BlICE9PSBudWxsKSB7XG4gICAgbW9kZS5iZWdpblNjb3BlID0gbW9kZS5zY29wZTtcbiAgICBkZWxldGUgbW9kZS5zY29wZTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKi9cbmZ1bmN0aW9uIE11bHRpQ2xhc3MobW9kZSkge1xuICBzY29wZVN1Z2FyKG1vZGUpO1xuXG4gIGlmICh0eXBlb2YgbW9kZS5iZWdpblNjb3BlID09PSBcInN0cmluZ1wiKSB7XG4gICAgbW9kZS5iZWdpblNjb3BlID0geyBfd3JhcDogbW9kZS5iZWdpblNjb3BlIH07XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2RlLmVuZFNjb3BlID09PSBcInN0cmluZ1wiKSB7XG4gICAgbW9kZS5lbmRTY29wZSA9IHsgX3dyYXA6IG1vZGUuZW5kU2NvcGUgfTtcbiAgfVxuXG4gIGJlZ2luTXVsdGlDbGFzcyhtb2RlKTtcbiAgZW5kTXVsdGlDbGFzcyhtb2RlKTtcbn1cblxuLyoqXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Nb2RlfSBNb2RlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZE1vZGV9IENvbXBpbGVkTW9kZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTGFuZ3VhZ2V9IExhbmd1YWdlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5ITEpTUGx1Z2lufSBITEpTUGx1Z2luXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZExhbmd1YWdlfSBDb21waWxlZExhbmd1YWdlXG4qL1xuXG4vLyBjb21waWxhdGlvblxuXG4vKipcbiAqIENvbXBpbGVzIGEgbGFuZ3VhZ2UgZGVmaW5pdGlvbiByZXN1bHRcbiAqXG4gKiBHaXZlbiB0aGUgcmF3IHJlc3VsdCBvZiBhIGxhbmd1YWdlIGRlZmluaXRpb24gKExhbmd1YWdlKSwgY29tcGlsZXMgdGhpcyBzb1xuICogdGhhdCBpdCBpcyByZWFkeSBmb3IgaGlnaGxpZ2h0aW5nIGNvZGUuXG4gKiBAcGFyYW0ge0xhbmd1YWdlfSBsYW5ndWFnZVxuICogQHJldHVybnMge0NvbXBpbGVkTGFuZ3VhZ2V9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSkge1xuICAvKipcbiAgICogQnVpbGRzIGEgcmVnZXggd2l0aCB0aGUgY2FzZSBzZW5zaXRpdml0eSBvZiB0aGUgY3VycmVudCBsYW5ndWFnZVxuICAgKlxuICAgKiBAcGFyYW0ge1JlZ0V4cCB8IHN0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtib29sZWFufSBbZ2xvYmFsXVxuICAgKi9cbiAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgIHNvdXJjZSh2YWx1ZSksXG4gICAgICAnbSdcbiAgICAgICsgKGxhbmd1YWdlLmNhc2VfaW5zZW5zaXRpdmUgPyAnaScgOiAnJylcbiAgICAgICsgKGxhbmd1YWdlLnVuaWNvZGVSZWdleCA/ICd1JyA6ICcnKVxuICAgICAgKyAoZ2xvYmFsID8gJ2cnIDogJycpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgIFN0b3JlcyBtdWx0aXBsZSByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBhbGxvd3MgeW91IHRvIHF1aWNrbHkgc2VhcmNoIGZvclxuICAgIHRoZW0gYWxsIGluIGEgc3RyaW5nIHNpbXVsdGFuZW91c2x5IC0gcmV0dXJuaW5nIHRoZSBmaXJzdCBtYXRjaC4gIEl0IGRvZXNcbiAgICB0aGlzIGJ5IGNyZWF0aW5nIGEgaHVnZSAoYXxifGMpIHJlZ2V4IC0gZWFjaCBpbmRpdmlkdWFsIGl0ZW0gd3JhcHBlZCB3aXRoICgpXG4gICAgYW5kIGpvaW5lZCBieSBgfGAgLSB1c2luZyBtYXRjaCBncm91cHMgdG8gdHJhY2sgcG9zaXRpb24uICBXaGVuIGEgbWF0Y2ggaXNcbiAgICBmb3VuZCBjaGVja2luZyB3aGljaCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkgaGFzIGNvbnRlbnQgYWxsb3dzIHVzIHRvIGZpZ3VyZVxuICAgIG91dCB3aGljaCBvZiB0aGUgb3JpZ2luYWwgcmVnZXhlcyAvIG1hdGNoIGdyb3VwcyB0cmlnZ2VyZWQgdGhlIG1hdGNoLlxuXG4gICAgVGhlIG1hdGNoIG9iamVjdCBpdHNlbGYgKHRoZSByZXN1bHQgb2YgYFJlZ2V4LmV4ZWNgKSBpcyByZXR1cm5lZCBidXQgYWxzb1xuICAgIGVuaGFuY2VkIGJ5IG1lcmdpbmcgaW4gYW55IG1ldGEtZGF0YSB0aGF0IHdhcyByZWdpc3RlcmVkIHdpdGggdGhlIHJlZ2V4LlxuICAgIFRoaXMgaXMgaG93IHdlIGtlZXAgdHJhY2sgb2Ygd2hpY2ggbW9kZSBtYXRjaGVkLCBhbmQgd2hhdCB0eXBlIG9mIHJ1bGVcbiAgICAoYGlsbGVnYWxgLCBgYmVnaW5gLCBlbmQsIGV0YykuXG4gICovXG4gIGNsYXNzIE11bHRpUmVnZXgge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhpcy5tYXRjaEluZGV4ZXMgPSB7fTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMucmVnZXhlcyA9IFtdO1xuICAgICAgdGhpcy5tYXRjaEF0ID0gMTtcbiAgICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBhZGRSdWxlKHJlLCBvcHRzKSB7XG4gICAgICBvcHRzLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbisrO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5tYXRjaEluZGV4ZXNbdGhpcy5tYXRjaEF0XSA9IG9wdHM7XG4gICAgICB0aGlzLnJlZ2V4ZXMucHVzaChbb3B0cywgcmVdKTtcbiAgICAgIHRoaXMubWF0Y2hBdCArPSBjb3VudE1hdGNoR3JvdXBzKHJlKSArIDE7XG4gICAgfVxuXG4gICAgY29tcGlsZSgpIHtcbiAgICAgIGlmICh0aGlzLnJlZ2V4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIGF2b2lkcyB0aGUgbmVlZCB0byBjaGVjayBsZW5ndGggZXZlcnkgdGltZSBleGVjIGlzIGNhbGxlZFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZXhlYyA9ICgpID0+IG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB0ZXJtaW5hdG9ycyA9IHRoaXMucmVnZXhlcy5tYXAoZWwgPT4gZWxbMV0pO1xuICAgICAgdGhpcy5tYXRjaGVyUmUgPSBsYW5nUmUoX3Jld3JpdGVCYWNrcmVmZXJlbmNlcyh0ZXJtaW5hdG9ycywgeyBqb2luV2l0aDogJ3wnIH0pLCB0cnVlKTtcbiAgICAgIHRoaXMubGFzdEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICAvKiogQHBhcmFtIHtzdHJpbmd9IHMgKi9cbiAgICBleGVjKHMpIHtcbiAgICAgIHRoaXMubWF0Y2hlclJlLmxhc3RJbmRleCA9IHRoaXMubGFzdEluZGV4O1xuICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLm1hdGNoZXJSZS5leGVjKHMpO1xuICAgICAgaWYgKCFtYXRjaCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gICAgICBjb25zdCBpID0gbWF0Y2guZmluZEluZGV4KChlbCwgaSkgPT4gaSA+IDAgJiYgZWwgIT09IHVuZGVmaW5lZCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBtYXRjaERhdGEgPSB0aGlzLm1hdGNoSW5kZXhlc1tpXTtcbiAgICAgIC8vIHRyaW0gb2ZmIGFueSBlYXJsaWVyIG5vbi1yZWxldmFudCBtYXRjaCBncm91cHMgKGllLCB0aGUgb3RoZXIgcmVnZXhcbiAgICAgIC8vIG1hdGNoIGdyb3VwcyB0aGF0IG1ha2UgdXAgdGhlIG11bHRpLW1hdGNoZXIpXG4gICAgICBtYXRjaC5zcGxpY2UoMCwgaSk7XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG1hdGNoLCBtYXRjaERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAgQ3JlYXRlZCB0byBzb2x2ZSB0aGUga2V5IGRlZmljaWVudGx5IHdpdGggTXVsdGlSZWdleCAtIHRoZXJlIGlzIG5vIHdheSB0b1xuICAgIHRlc3QgZm9yIG11bHRpcGxlIG1hdGNoZXMgYXQgYSBzaW5nbGUgbG9jYXRpb24uICBXaHkgd291bGQgd2UgbmVlZCB0byBkb1xuICAgIHRoYXQ/ICBJbiB0aGUgZnV0dXJlIGEgbW9yZSBkeW5hbWljIGVuZ2luZSB3aWxsIGFsbG93IGNlcnRhaW4gbWF0Y2hlcyB0byBiZVxuICAgIGlnbm9yZWQuICBBbiBleGFtcGxlOiBpZiB3ZSBtYXRjaGVkIHNheSB0aGUgM3JkIHJlZ2V4IGluIGEgbGFyZ2UgZ3JvdXAgYnV0XG4gICAgZGVjaWRlZCB0byBpZ25vcmUgaXQgLSB3ZSdkIG5lZWQgdG8gc3RhcnRlZCB0ZXN0aW5nIGFnYWluIGF0IHRoZSA0dGhcbiAgICByZWdleC4uLiBidXQgTXVsdGlSZWdleCBpdHNlbGYgZ2l2ZXMgdXMgbm8gcmVhbCB3YXkgdG8gZG8gdGhhdC5cblxuICAgIFNvIHdoYXQgdGhpcyBjbGFzcyBjcmVhdGVzIE11bHRpUmVnZXhzIG9uIHRoZSBmbHkgZm9yIHdoYXRldmVyIHNlYXJjaFxuICAgIHBvc2l0aW9uIHRoZXkgYXJlIG5lZWRlZC5cblxuICAgIE5PVEU6IFRoZXNlIGFkZGl0aW9uYWwgTXVsdGlSZWdleCBvYmplY3RzIGFyZSBjcmVhdGVkIGR5bmFtaWNhbGx5LiAgRm9yIG1vc3RcbiAgICBncmFtbWFycyBtb3N0IG9mIHRoZSB0aW1lIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgbmVlZCBhbnl0aGluZyBtb3JlIHRoYW4gdGhlXG4gICAgZmlyc3QgTXVsdGlSZWdleCAtIHNvIHRoaXMgc2hvdWxkbid0IGhhdmUgdG9vIG11Y2ggb3ZlcmhlYWQuXG5cbiAgICBTYXkgdGhpcyBpcyBvdXIgc2VhcmNoIGdyb3VwLCBhbmQgd2UgbWF0Y2ggcmVnZXgzLCBidXQgd2lzaCB0byBpZ25vcmUgaXQuXG5cbiAgICAgIHJlZ2V4MSB8IHJlZ2V4MiB8IHJlZ2V4MyB8IHJlZ2V4NCB8IHJlZ2V4NSAgICAnIGllLCBzdGFydEF0ID0gMFxuXG4gICAgV2hhdCB3ZSBuZWVkIGlzIGEgbmV3IE11bHRpUmVnZXggdGhhdCBvbmx5IGluY2x1ZGVzIHRoZSByZW1haW5pbmdcbiAgICBwb3NzaWJpbGl0aWVzOlxuXG4gICAgICByZWdleDQgfCByZWdleDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpZSwgc3RhcnRBdCA9IDNcblxuICAgIFRoaXMgY2xhc3Mgd3JhcHMgYWxsIHRoYXQgY29tcGxleGl0eSB1cCBpbiBhIHNpbXBsZSBBUEkuLi4gYHN0YXJ0QXRgIGRlY2lkZXNcbiAgICB3aGVyZSBpbiB0aGUgYXJyYXkgb2YgZXhwcmVzc2lvbnMgdG8gc3RhcnQgZG9pbmcgdGhlIG1hdGNoaW5nLiBJdFxuICAgIGF1dG8taW5jcmVtZW50cywgc28gaWYgYSBtYXRjaCBpcyBmb3VuZCBhdCBwb3NpdGlvbiAyLCB0aGVuIHN0YXJ0QXQgd2lsbCBiZVxuICAgIHNldCB0byAzLiAgSWYgdGhlIGVuZCBpcyByZWFjaGVkIHN0YXJ0QXQgd2lsbCByZXR1cm4gdG8gMC5cblxuICAgIE1PU1Qgb2YgdGhlIHRpbWUgdGhlIHBhcnNlciB3aWxsIGJlIHNldHRpbmcgc3RhcnRBdCBtYW51YWxseSB0byAwLlxuICAqL1xuICBjbGFzcyBSZXN1bWFibGVNdWx0aVJlZ2V4IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMucnVsZXMgPSBbXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMubXVsdGlSZWdleGVzID0gW107XG4gICAgICB0aGlzLmNvdW50ID0gMDtcblxuICAgICAgdGhpcy5sYXN0SW5kZXggPSAwO1xuICAgICAgdGhpcy5yZWdleEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0TWF0Y2hlcihpbmRleCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlSZWdleGVzW2luZGV4XSkgcmV0dXJuIHRoaXMubXVsdGlSZWdleGVzW2luZGV4XTtcblxuICAgICAgY29uc3QgbWF0Y2hlciA9IG5ldyBNdWx0aVJlZ2V4KCk7XG4gICAgICB0aGlzLnJ1bGVzLnNsaWNlKGluZGV4KS5mb3JFYWNoKChbcmUsIG9wdHNdKSA9PiBtYXRjaGVyLmFkZFJ1bGUocmUsIG9wdHMpKTtcbiAgICAgIG1hdGNoZXIuY29tcGlsZSgpO1xuICAgICAgdGhpcy5tdWx0aVJlZ2V4ZXNbaW5kZXhdID0gbWF0Y2hlcjtcbiAgICAgIHJldHVybiBtYXRjaGVyO1xuICAgIH1cblxuICAgIHJlc3VtaW5nU2NhbkF0U2FtZVBvc2l0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVnZXhJbmRleCAhPT0gMDtcbiAgICB9XG5cbiAgICBjb25zaWRlckFsbCgpIHtcbiAgICAgIHRoaXMucmVnZXhJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFkZFJ1bGUocmUsIG9wdHMpIHtcbiAgICAgIHRoaXMucnVsZXMucHVzaChbcmUsIG9wdHNdKTtcbiAgICAgIGlmIChvcHRzLnR5cGUgPT09IFwiYmVnaW5cIikgdGhpcy5jb3VudCsrO1xuICAgIH1cblxuICAgIC8qKiBAcGFyYW0ge3N0cmluZ30gcyAqL1xuICAgIGV4ZWMocykge1xuICAgICAgY29uc3QgbSA9IHRoaXMuZ2V0TWF0Y2hlcih0aGlzLnJlZ2V4SW5kZXgpO1xuICAgICAgbS5sYXN0SW5kZXggPSB0aGlzLmxhc3RJbmRleDtcbiAgICAgIGxldCByZXN1bHQgPSBtLmV4ZWMocyk7XG5cbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYmVjYXVzZSB3ZSBoYXZlIG5vIGVhc3kgd2F5IHRvIHNheSBcInJlc3VtZSBzY2FubmluZyBhdCB0aGVcbiAgICAgIC8vIGV4aXN0aW5nIHBvc2l0aW9uIGJ1dCBhbHNvIHNraXAgdGhlIGN1cnJlbnQgcnVsZSBPTkxZXCIuIFdoYXQgaGFwcGVucyBpc1xuICAgICAgLy8gYWxsIHByaW9yIHJ1bGVzIGFyZSBhbHNvIHNraXBwZWQgd2hpY2ggY2FuIHJlc3VsdCBpbiBtYXRjaGluZyB0aGUgd3JvbmdcbiAgICAgIC8vIHRoaW5nLiBFeGFtcGxlIG9mIG1hdGNoaW5nIFwiYm9vZ2VyXCI6XG5cbiAgICAgIC8vIG91ciBtYXRjaGVyIGlzIFtzdHJpbmcsIFwiYm9vZ2VyXCIsIG51bWJlcl1cbiAgICAgIC8vXG4gICAgICAvLyAuLi4uYm9vZ2VyLi4uLlxuXG4gICAgICAvLyBpZiBcImJvb2dlclwiIGlzIGlnbm9yZWQgdGhlbiB3ZSdkIHJlYWxseSBuZWVkIGEgcmVnZXggdG8gc2NhbiBmcm9tIHRoZVxuICAgICAgLy8gU0FNRSBwb3NpdGlvbiBmb3Igb25seTogW3N0cmluZywgbnVtYmVyXSBidXQgaWdub3JpbmcgXCJib29nZXJcIiAoaWYgaXRcbiAgICAgIC8vIHdhcyB0aGUgZmlyc3QgbWF0Y2gpLCBhIHNpbXBsZSByZXN1bWUgd291bGQgc2NhbiBhaGVhZCB3aG8ga25vd3MgaG93XG4gICAgICAvLyBmYXIgbG9va2luZyBvbmx5IGZvciBcIm51bWJlclwiLCBpZ25vcmluZyBwb3RlbnRpYWwgc3RyaW5nIG1hdGNoZXMgKG9yXG4gICAgICAvLyBmdXR1cmUgXCJib29nZXJcIiBtYXRjaGVzIHRoYXQgbWlnaHQgYmUgdmFsaWQuKVxuXG4gICAgICAvLyBTbyB3aGF0IHdlIGRvOiBXZSBleGVjdXRlIHR3byBtYXRjaGVycywgb25lIHJlc3VtaW5nIGF0IHRoZSBzYW1lXG4gICAgICAvLyBwb3NpdGlvbiwgYnV0IHRoZSBzZWNvbmQgZnVsbCBtYXRjaGVyIHN0YXJ0aW5nIGF0IHRoZSBwb3NpdGlvbiBhZnRlcjpcblxuICAgICAgLy8gICAgIC8tLS0gcmVzdW1lIGZpcnN0IHJlZ2V4IG1hdGNoIGhlcmUgKGZvciBbbnVtYmVyXSlcbiAgICAgIC8vICAgICB8Ly0tLS0gZnVsbCBtYXRjaCBoZXJlIGZvciBbc3RyaW5nLCBcImJvb2dlclwiLCBudW1iZXJdXG4gICAgICAvLyAgICAgdnZcbiAgICAgIC8vIC4uLi5ib29nZXIuLi4uXG5cbiAgICAgIC8vIFdoaWNoIGV2ZXIgcmVzdWx0cyBpbiBhIG1hdGNoIGZpcnN0IGlzIHRoZW4gdXNlZC4gU28gdGhpcyAzLTQgc3RlcFxuICAgICAgLy8gcHJvY2VzcyBlc3NlbnRpYWxseSBhbGxvd3MgdXMgdG8gc2F5IFwibWF0Y2ggYXQgdGhpcyBwb3NpdGlvbiwgZXhjbHVkaW5nXG4gICAgICAvLyBhIHByaW9yIHJ1bGUgdGhhdCB3YXMgaWdub3JlZFwiLlxuICAgICAgLy9cbiAgICAgIC8vIDEuIE1hdGNoIFwiYm9vZ2VyXCIgZmlyc3QsIGlnbm9yZS4gQWxzbyBwcm92ZXMgdGhhdCBbc3RyaW5nXSBkb2VzIG5vbiBtYXRjaC5cbiAgICAgIC8vIDIuIFJlc3VtZSBtYXRjaGluZyBmb3IgW251bWJlcl1cbiAgICAgIC8vIDMuIE1hdGNoIGF0IGluZGV4ICsgMSBmb3IgW3N0cmluZywgXCJib29nZXJcIiwgbnVtYmVyXVxuICAgICAgLy8gNC4gSWYgIzIgYW5kICMzIHJlc3VsdCBpbiBtYXRjaGVzLCB3aGljaCBjYW1lIGZpcnN0P1xuICAgICAgaWYgKHRoaXMucmVzdW1pbmdTY2FuQXRTYW1lUG9zaXRpb24oKSkge1xuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbmRleCA9PT0gdGhpcy5sYXN0SW5kZXgpIDsgZWxzZSB7IC8vIHVzZSB0aGUgc2Vjb25kIG1hdGNoZXIgcmVzdWx0XG4gICAgICAgICAgY29uc3QgbTIgPSB0aGlzLmdldE1hdGNoZXIoMCk7XG4gICAgICAgICAgbTIubGFzdEluZGV4ID0gdGhpcy5sYXN0SW5kZXggKyAxO1xuICAgICAgICAgIHJlc3VsdCA9IG0yLmV4ZWMocyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnJlZ2V4SW5kZXggKz0gcmVzdWx0LnBvc2l0aW9uICsgMTtcbiAgICAgICAgaWYgKHRoaXMucmVnZXhJbmRleCA9PT0gdGhpcy5jb3VudCkge1xuICAgICAgICAgIC8vIHdyYXAtYXJvdW5kIHRvIGNvbnNpZGVyaW5nIGFsbCBtYXRjaGVzIGFnYWluXG4gICAgICAgICAgdGhpcy5jb25zaWRlckFsbCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgbW9kZSwgYnVpbGRzIGEgaHVnZSBSZXN1bWFibGVNdWx0aVJlZ2V4IHRoYXQgY2FuIGJlIHVzZWQgdG8gd2Fsa1xuICAgKiB0aGUgY29udGVudCBhbmQgZmluZCBtYXRjaGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICAgKiBAcmV0dXJucyB7UmVzdW1hYmxlTXVsdGlSZWdleH1cbiAgICovXG4gIGZ1bmN0aW9uIGJ1aWxkTW9kZVJlZ2V4KG1vZGUpIHtcbiAgICBjb25zdCBtbSA9IG5ldyBSZXN1bWFibGVNdWx0aVJlZ2V4KCk7XG5cbiAgICBtb2RlLmNvbnRhaW5zLmZvckVhY2godGVybSA9PiBtbS5hZGRSdWxlKHRlcm0uYmVnaW4sIHsgcnVsZTogdGVybSwgdHlwZTogXCJiZWdpblwiIH0pKTtcblxuICAgIGlmIChtb2RlLnRlcm1pbmF0b3JFbmQpIHtcbiAgICAgIG1tLmFkZFJ1bGUobW9kZS50ZXJtaW5hdG9yRW5kLCB7IHR5cGU6IFwiZW5kXCIgfSk7XG4gICAgfVxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIG1tLmFkZFJ1bGUobW9kZS5pbGxlZ2FsLCB7IHR5cGU6IFwiaWxsZWdhbFwiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtbTtcbiAgfVxuXG4gIC8qKiBza2lwIHZzIGFib3J0IHZzIGlnbm9yZVxuICAgKlxuICAgKiBAc2tpcCAgIC0gVGhlIG1vZGUgaXMgc3RpbGwgZW50ZXJlZCBhbmQgZXhpdGVkIG5vcm1hbGx5IChhbmQgY29udGFpbnMgcnVsZXMgYXBwbHkpLFxuICAgKiAgICAgICAgICAgYnV0IGFsbCBjb250ZW50IGlzIGhlbGQgYW5kIGFkZGVkIHRvIHRoZSBwYXJlbnQgYnVmZmVyIHJhdGhlciB0aGFuIGJlaW5nXG4gICAqICAgICAgICAgICBvdXRwdXQgd2hlbiB0aGUgbW9kZSBlbmRzLiAgTW9zdGx5IHVzZWQgd2l0aCBgc3VibGFuZ3VhZ2VgIHRvIGJ1aWxkIHVwXG4gICAqICAgICAgICAgICBhIHNpbmdsZSBsYXJnZSBidWZmZXIgdGhhbiBjYW4gYmUgcGFyc2VkIGJ5IHN1Ymxhbmd1YWdlLlxuICAgKlxuICAgKiAgICAgICAgICAgICAtIFRoZSBtb2RlIGJlZ2luIGFuZHMgZW5kcyBub3JtYWxseS5cbiAgICogICAgICAgICAgICAgLSBDb250ZW50IG1hdGNoZWQgaXMgYWRkZWQgdG8gdGhlIHBhcmVudCBtb2RlIGJ1ZmZlci5cbiAgICogICAgICAgICAgICAgLSBUaGUgcGFyc2VyIGN1cnNvciBpcyBtb3ZlZCBmb3J3YXJkIG5vcm1hbGx5LlxuICAgKlxuICAgKiBAYWJvcnQgIC0gQSBoYWNrIHBsYWNlaG9sZGVyIHVudGlsIHdlIGhhdmUgaWdub3JlLiAgQWJvcnRzIHRoZSBtb2RlIChhcyBpZiBpdFxuICAgKiAgICAgICAgICAgbmV2ZXIgbWF0Y2hlZCkgYnV0IERPRVMgTk9UIGNvbnRpbnVlIHRvIG1hdGNoIHN1YnNlcXVlbnQgYGNvbnRhaW5zYFxuICAgKiAgICAgICAgICAgbW9kZXMuICBBYm9ydCBpcyBiYWQvc3Vib3B0aW1hbCBiZWNhdXNlIGl0IGNhbiByZXN1bHQgaW4gbW9kZXNcbiAgICogICAgICAgICAgIGZhcnRoZXIgZG93biBub3QgZ2V0dGluZyBhcHBsaWVkIGJlY2F1c2UgYW4gZWFybGllciBydWxlIGVhdHMgdGhlXG4gICAqICAgICAgICAgICBjb250ZW50IGJ1dCB0aGVuIGFib3J0cy5cbiAgICpcbiAgICogICAgICAgICAgICAgLSBUaGUgbW9kZSBkb2VzIG5vdCBiZWdpbi5cbiAgICogICAgICAgICAgICAgLSBDb250ZW50IG1hdGNoZWQgYnkgYGJlZ2luYCBpcyBhZGRlZCB0byB0aGUgbW9kZSBidWZmZXIuXG4gICAqICAgICAgICAgICAgIC0gVGhlIHBhcnNlciBjdXJzb3IgaXMgbW92ZWQgZm9yd2FyZCBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogQGlnbm9yZSAtIElnbm9yZXMgdGhlIG1vZGUgKGFzIGlmIGl0IG5ldmVyIG1hdGNoZWQpIGFuZCBjb250aW51ZXMgdG8gbWF0Y2ggYW55XG4gICAqICAgICAgICAgICBzdWJzZXF1ZW50IGBjb250YWluc2AgbW9kZXMuICBJZ25vcmUgaXNuJ3QgdGVjaG5pY2FsbHkgcG9zc2libGUgd2l0aFxuICAgKiAgICAgICAgICAgdGhlIGN1cnJlbnQgcGFyc2VyIGltcGxlbWVudGF0aW9uLlxuICAgKlxuICAgKiAgICAgICAgICAgICAtIFRoZSBtb2RlIGRvZXMgbm90IGJlZ2luLlxuICAgKiAgICAgICAgICAgICAtIENvbnRlbnQgbWF0Y2hlZCBieSBgYmVnaW5gIGlzIGlnbm9yZWQuXG4gICAqICAgICAgICAgICAgIC0gVGhlIHBhcnNlciBjdXJzb3IgaXMgbm90IG1vdmVkIGZvcndhcmQuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBDb21waWxlcyBhbiBpbmRpdmlkdWFsIG1vZGVcbiAgICpcbiAgICogVGhpcyBjYW4gcmFpc2UgYW4gZXJyb3IgaWYgdGhlIG1vZGUgY29udGFpbnMgY2VydGFpbiBkZXRlY3RhYmxlIGtub3duIGxvZ2ljXG4gICAqIGlzc3Vlcy5cbiAgICogQHBhcmFtIHtNb2RlfSBtb2RlXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlIHwgbnVsbH0gW3BhcmVudF1cbiAgICogQHJldHVybnMge0NvbXBpbGVkTW9kZSB8IG5ldmVyfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGlsZU1vZGUobW9kZSwgcGFyZW50KSB7XG4gICAgY29uc3QgY21vZGUgPSAvKiogQHR5cGUgQ29tcGlsZWRNb2RlICovIChtb2RlKTtcbiAgICBpZiAobW9kZS5pc0NvbXBpbGVkKSByZXR1cm4gY21vZGU7XG5cbiAgICBbXG4gICAgICBzY29wZUNsYXNzTmFtZSxcbiAgICAgIC8vIGRvIHRoaXMgZWFybHkgc28gY29tcGlsZXIgZXh0ZW5zaW9ucyBnZW5lcmFsbHkgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dFxuICAgICAgLy8gdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gbWF0Y2gvYmVnaW5cbiAgICAgIGNvbXBpbGVNYXRjaCxcbiAgICAgIE11bHRpQ2xhc3MsXG4gICAgICBiZWZvcmVNYXRjaEV4dFxuICAgIF0uZm9yRWFjaChleHQgPT4gZXh0KG1vZGUsIHBhcmVudCkpO1xuXG4gICAgbGFuZ3VhZ2UuY29tcGlsZXJFeHRlbnNpb25zLmZvckVhY2goZXh0ID0+IGV4dChtb2RlLCBwYXJlbnQpKTtcblxuICAgIC8vIF9fYmVmb3JlQmVnaW4gaXMgY29uc2lkZXJlZCBwcml2YXRlIEFQSSwgaW50ZXJuYWwgdXNlIG9ubHlcbiAgICBtb2RlLl9fYmVmb3JlQmVnaW4gPSBudWxsO1xuXG4gICAgW1xuICAgICAgYmVnaW5LZXl3b3JkcyxcbiAgICAgIC8vIGRvIHRoaXMgbGF0ZXIgc28gY29tcGlsZXIgZXh0ZW5zaW9ucyB0aGF0IGNvbWUgZWFybGllciBoYXZlIGFjY2VzcyB0byB0aGVcbiAgICAgIC8vIHJhdyBhcnJheSBpZiB0aGV5IHdhbnRlZCB0byBwZXJoYXBzIG1hbmlwdWxhdGUgaXQsIGV0Yy5cbiAgICAgIGNvbXBpbGVJbGxlZ2FsLFxuICAgICAgLy8gZGVmYXVsdCB0byAxIHJlbGV2YW5jZSBpZiBub3Qgc3BlY2lmaWVkXG4gICAgICBjb21waWxlUmVsZXZhbmNlXG4gICAgXS5mb3JFYWNoKGV4dCA9PiBleHQobW9kZSwgcGFyZW50KSk7XG5cbiAgICBtb2RlLmlzQ29tcGlsZWQgPSB0cnVlO1xuXG4gICAgbGV0IGtleXdvcmRQYXR0ZXJuID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIG1vZGUua2V5d29yZHMgPT09IFwib2JqZWN0XCIgJiYgbW9kZS5rZXl3b3Jkcy4kcGF0dGVybikge1xuICAgICAgLy8gd2UgbmVlZCBhIGNvcHkgYmVjYXVzZSBrZXl3b3JkcyBtaWdodCBiZSBjb21waWxlZCBtdWx0aXBsZSB0aW1lc1xuICAgICAgLy8gc28gd2UgY2FuJ3QgZ28gZGVsZXRpbmcgJHBhdHRlcm4gZnJvbSB0aGUgb3JpZ2luYWwgb24gdGhlIGZpcnN0XG4gICAgICAvLyBwYXNzXG4gICAgICBtb2RlLmtleXdvcmRzID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kZS5rZXl3b3Jkcyk7XG4gICAgICBrZXl3b3JkUGF0dGVybiA9IG1vZGUua2V5d29yZHMuJHBhdHRlcm47XG4gICAgICBkZWxldGUgbW9kZS5rZXl3b3Jkcy4kcGF0dGVybjtcbiAgICB9XG4gICAga2V5d29yZFBhdHRlcm4gPSBrZXl3b3JkUGF0dGVybiB8fCAvXFx3Ky87XG5cbiAgICBpZiAobW9kZS5rZXl3b3Jkcykge1xuICAgICAgbW9kZS5rZXl3b3JkcyA9IGNvbXBpbGVLZXl3b3Jkcyhtb2RlLmtleXdvcmRzLCBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlKTtcbiAgICB9XG5cbiAgICBjbW9kZS5rZXl3b3JkUGF0dGVyblJlID0gbGFuZ1JlKGtleXdvcmRQYXR0ZXJuLCB0cnVlKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGlmICghbW9kZS5iZWdpbikgbW9kZS5iZWdpbiA9IC9cXEJ8XFxiLztcbiAgICAgIGNtb2RlLmJlZ2luUmUgPSBsYW5nUmUoY21vZGUuYmVnaW4pO1xuICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudCkgbW9kZS5lbmQgPSAvXFxCfFxcYi87XG4gICAgICBpZiAobW9kZS5lbmQpIGNtb2RlLmVuZFJlID0gbGFuZ1JlKGNtb2RlLmVuZCk7XG4gICAgICBjbW9kZS50ZXJtaW5hdG9yRW5kID0gc291cmNlKGNtb2RlLmVuZCkgfHwgJyc7XG4gICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvckVuZCkge1xuICAgICAgICBjbW9kZS50ZXJtaW5hdG9yRW5kICs9IChtb2RlLmVuZCA/ICd8JyA6ICcnKSArIHBhcmVudC50ZXJtaW5hdG9yRW5kO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobW9kZS5pbGxlZ2FsKSBjbW9kZS5pbGxlZ2FsUmUgPSBsYW5nUmUoLyoqIEB0eXBlIHtSZWdFeHAgfCBzdHJpbmd9ICovIChtb2RlLmlsbGVnYWwpKTtcbiAgICBpZiAoIW1vZGUuY29udGFpbnMpIG1vZGUuY29udGFpbnMgPSBbXTtcblxuICAgIG1vZGUuY29udGFpbnMgPSBbXS5jb25jYXQoLi4ubW9kZS5jb250YWlucy5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGV4cGFuZE9yQ2xvbmVNb2RlKGMgPT09ICdzZWxmJyA/IG1vZGUgOiBjKTtcbiAgICB9KSk7XG4gICAgbW9kZS5jb250YWlucy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgY29tcGlsZU1vZGUoLyoqIEB0eXBlIE1vZGUgKi8gKGMpLCBjbW9kZSk7IH0pO1xuXG4gICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICBjb21waWxlTW9kZShtb2RlLnN0YXJ0cywgcGFyZW50KTtcbiAgICB9XG5cbiAgICBjbW9kZS5tYXRjaGVyID0gYnVpbGRNb2RlUmVnZXgoY21vZGUpO1xuICAgIHJldHVybiBjbW9kZTtcbiAgfVxuXG4gIGlmICghbGFuZ3VhZ2UuY29tcGlsZXJFeHRlbnNpb25zKSBsYW5ndWFnZS5jb21waWxlckV4dGVuc2lvbnMgPSBbXTtcblxuICAvLyBzZWxmIGlzIG5vdCB2YWxpZCBhdCB0aGUgdG9wLWxldmVsXG4gIGlmIChsYW5ndWFnZS5jb250YWlucyAmJiBsYW5ndWFnZS5jb250YWlucy5pbmNsdWRlcygnc2VsZicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRVJSOiBjb250YWlucyBgc2VsZmAgaXMgbm90IHN1cHBvcnRlZCBhdCB0aGUgdG9wLWxldmVsIG9mIGEgbGFuZ3VhZ2UuICBTZWUgZG9jdW1lbnRhdGlvbi5cIik7XG4gIH1cblxuICAvLyB3ZSBuZWVkIGEgbnVsbCBvYmplY3QsIHdoaWNoIGluaGVyaXQgd2lsbCBndWFyYW50ZWVcbiAgbGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlcyA9IGluaGVyaXQkMShsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzIHx8IHt9KTtcblxuICByZXR1cm4gY29tcGlsZU1vZGUoLyoqIEB0eXBlIE1vZGUgKi8gKGxhbmd1YWdlKSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG1vZGUgaGFzIGEgZGVwZW5kZW5jeSBvbiBpdCdzIHBhcmVudCBvciBub3RcbiAqXG4gKiBJZiBhIG1vZGUgZG9lcyBoYXZlIGEgcGFyZW50IGRlcGVuZGVuY3kgdGhlbiBvZnRlbiB3ZSBuZWVkIHRvIGNsb25lIGl0IGlmXG4gKiBpdCdzIHVzZWQgaW4gbXVsdGlwbGUgcGxhY2VzIHNvIHRoYXQgZWFjaCBjb3B5IHBvaW50cyB0byB0aGUgY29ycmVjdCBwYXJlbnQsXG4gKiB3aGVyZS1hcyBtb2RlcyB3aXRob3V0IGEgcGFyZW50IGNhbiBvZnRlbiBzYWZlbHkgYmUgcmUtdXNlZCBhdCB0aGUgYm90dG9tIG9mXG4gKiBhIG1vZGUgY2hhaW4uXG4gKlxuICogQHBhcmFtIHtNb2RlIHwgbnVsbH0gbW9kZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gaXMgdGhlcmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBwYXJlbnQ/XG4gKiAqL1xuZnVuY3Rpb24gZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpIHtcbiAgaWYgKCFtb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIG1vZGUuZW5kc1dpdGhQYXJlbnQgfHwgZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUuc3RhcnRzKTtcbn1cblxuLyoqXG4gKiBFeHBhbmRzIGEgbW9kZSBvciBjbG9uZXMgaXQgaWYgbmVjZXNzYXJ5XG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG1vZGVzIHdpdGggcGFyZW50YWwgZGVwZW5kZW5jZWlzIChzZWUgbm90ZXMgb25cbiAqIGBkZXBlbmRlbmN5T25QYXJlbnRgKSBhbmQgZm9yIG5vZGVzIHRoYXQgaGF2ZSBgdmFyaWFudHNgIC0gd2hpY2ggbXVzdCB0aGVuIGJlXG4gKiBleHBsb2RlZCBpbnRvIHRoZWlyIG93biBpbmRpdmlkdWFsIG1vZGVzIGF0IGNvbXBpbGUgdGltZS5cbiAqXG4gKiBAcGFyYW0ge01vZGV9IG1vZGVcbiAqIEByZXR1cm5zIHtNb2RlIHwgTW9kZVtdfVxuICogKi9cbmZ1bmN0aW9uIGV4cGFuZE9yQ2xvbmVNb2RlKG1vZGUpIHtcbiAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGUuY2FjaGVkVmFyaWFudHMpIHtcbiAgICBtb2RlLmNhY2hlZFZhcmlhbnRzID0gbW9kZS52YXJpYW50cy5tYXAoZnVuY3Rpb24odmFyaWFudCkge1xuICAgICAgcmV0dXJuIGluaGVyaXQkMShtb2RlLCB7IHZhcmlhbnRzOiBudWxsIH0sIHZhcmlhbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gRVhQQU5EXG4gIC8vIGlmIHdlIGhhdmUgdmFyaWFudHMgdGhlbiBlc3NlbnRpYWxseSBcInJlcGxhY2VcIiB0aGUgbW9kZSB3aXRoIHRoZSB2YXJpYW50c1xuICAvLyB0aGlzIGhhcHBlbnMgaW4gY29tcGlsZU1vZGUsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb21cbiAgaWYgKG1vZGUuY2FjaGVkVmFyaWFudHMpIHtcbiAgICByZXR1cm4gbW9kZS5jYWNoZWRWYXJpYW50cztcbiAgfVxuXG4gIC8vIENMT05FXG4gIC8vIGlmIHdlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHBhcmVudHMgdGhlbiB3ZSBuZWVkIGEgdW5pcXVlXG4gIC8vIGluc3RhbmNlIG9mIG91cnNlbHZlcywgc28gd2UgY2FuIGJlIHJldXNlZCB3aXRoIG1hbnlcbiAgLy8gZGlmZmVyZW50IHBhcmVudHMgd2l0aG91dCBpc3N1ZVxuICBpZiAoZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpKSB7XG4gICAgcmV0dXJuIGluaGVyaXQkMShtb2RlLCB7IHN0YXJ0czogbW9kZS5zdGFydHMgPyBpbmhlcml0JDEobW9kZS5zdGFydHMpIDogbnVsbCB9KTtcbiAgfVxuXG4gIGlmIChPYmplY3QuaXNGcm96ZW4obW9kZSkpIHtcbiAgICByZXR1cm4gaW5oZXJpdCQxKG1vZGUpO1xuICB9XG5cbiAgLy8gbm8gc3BlY2lhbCBkZXBlbmRlbmN5IGlzc3VlcywganVzdCByZXR1cm4gb3Vyc2VsdmVzXG4gIHJldHVybiBtb2RlO1xufVxuXG52YXIgdmVyc2lvbiA9IFwiMTEuOC4wXCI7XG5cbmNsYXNzIEhUTUxJbmplY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uLCBodG1sKSB7XG4gICAgc3VwZXIocmVhc29uKTtcbiAgICB0aGlzLm5hbWUgPSBcIkhUTUxJbmplY3Rpb25FcnJvclwiO1xuICAgIHRoaXMuaHRtbCA9IGh0bWw7XG4gIH1cbn1cblxuLypcblN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBhdXRvZGV0ZWN0aW9uLlxuaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4qL1xuXG5cbi8qKlxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTW9kZX0gTW9kZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ29tcGlsZWRNb2RlfSBDb21waWxlZE1vZGVcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNvbXBpbGVkU2NvcGV9IENvbXBpbGVkU2NvcGVcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkxhbmd1YWdlfSBMYW5ndWFnZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuSExKU0FwaX0gSExKU0FwaVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuSExKU1BsdWdpbn0gSExKU1BsdWdpblxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuUGx1Z2luRXZlbnR9IFBsdWdpbkV2ZW50XG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5ITEpTT3B0aW9uc30gSExKU09wdGlvbnNcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkxhbmd1YWdlRm59IExhbmd1YWdlRm5cbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhpZ2hsaWdodGVkSFRNTEVsZW1lbnR9IEhpZ2hsaWdodGVkSFRNTEVsZW1lbnRcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkJlZm9yZUhpZ2hsaWdodENvbnRleHR9IEJlZm9yZUhpZ2hsaWdodENvbnRleHRcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcy9wcml2YXRlJykuTWF0Y2hUeXBlfSBNYXRjaFR5cGVcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcy9wcml2YXRlJykuS2V5d29yZERhdGF9IEtleXdvcmREYXRhXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMvcHJpdmF0ZScpLkVuaGFuY2VkTWF0Y2h9IEVuaGFuY2VkTWF0Y2hcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcy9wcml2YXRlJykuQW5ub3RhdGVkRXJyb3J9IEFubm90YXRlZEVycm9yXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5BdXRvSGlnaGxpZ2h0UmVzdWx0fSBBdXRvSGlnaGxpZ2h0UmVzdWx0XG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5IaWdobGlnaHRPcHRpb25zfSBIaWdobGlnaHRPcHRpb25zXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5IaWdobGlnaHRSZXN1bHR9IEhpZ2hsaWdodFJlc3VsdFxuKi9cblxuXG5jb25zdCBlc2NhcGUgPSBlc2NhcGVIVE1MO1xuY29uc3QgaW5oZXJpdCA9IGluaGVyaXQkMTtcbmNvbnN0IE5PX01BVENIID0gU3ltYm9sKFwibm9tYXRjaFwiKTtcbmNvbnN0IE1BWF9LRVlXT1JEX0hJVFMgPSA3O1xuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBobGpzIC0gb2JqZWN0IHRoYXQgaXMgZXh0ZW5kZWQgKGxlZ2FjeSlcbiAqIEByZXR1cm5zIHtITEpTQXBpfVxuICovXG5jb25zdCBITEpTID0gZnVuY3Rpb24oaGxqcykge1xuICAvLyBHbG9iYWwgaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBoaWdobGlnaHQuanMgbGlicmFyeS5cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBMYW5ndWFnZT59ICovXG4gIGNvbnN0IGxhbmd1YWdlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gKi9cbiAgY29uc3QgYWxpYXNlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8qKiBAdHlwZSB7SExKU1BsdWdpbltdfSAqL1xuICBjb25zdCBwbHVnaW5zID0gW107XG5cbiAgLy8gc2FmZS9wcm9kdWN0aW9uIG1vZGUgLSBzd2FsbG93cyBtb3JlIGVycm9ycywgdHJpZXMgdG8ga2VlcCBydW5uaW5nXG4gIC8vIGV2ZW4gaWYgYSBzaW5nbGUgc3ludGF4IG9yIHBhcnNlIGhpdHMgYSBmYXRhbCBlcnJvclxuICBsZXQgU0FGRV9NT0RFID0gdHJ1ZTtcbiAgY29uc3QgTEFOR1VBR0VfTk9UX0ZPVU5EID0gXCJDb3VsZCBub3QgZmluZCB0aGUgbGFuZ3VhZ2UgJ3t9JywgZGlkIHlvdSBmb3JnZXQgdG8gbG9hZC9pbmNsdWRlIGEgbGFuZ3VhZ2UgbW9kdWxlP1wiO1xuICAvKiogQHR5cGUge0xhbmd1YWdlfSAqL1xuICBjb25zdCBQTEFJTlRFWFRfTEFOR1VBR0UgPSB7IGRpc2FibGVBdXRvZGV0ZWN0OiB0cnVlLCBuYW1lOiAnUGxhaW4gdGV4dCcsIGNvbnRhaW5zOiBbXSB9O1xuXG4gIC8vIEdsb2JhbCBvcHRpb25zIHVzZWQgd2hlbiB3aXRoaW4gZXh0ZXJuYWwgQVBJcy4gVGhpcyBpcyBtb2RpZmllZCB3aGVuXG4gIC8vIGNhbGxpbmcgdGhlIGBobGpzLmNvbmZpZ3VyZWAgZnVuY3Rpb24uXG4gIC8qKiBAdHlwZSBITEpTT3B0aW9ucyAqL1xuICBsZXQgb3B0aW9ucyA9IHtcbiAgICBpZ25vcmVVbmVzY2FwZWRIVE1MOiBmYWxzZSxcbiAgICB0aHJvd1VuZXNjYXBlZEhUTUw6IGZhbHNlLFxuICAgIG5vSGlnaGxpZ2h0UmU6IC9eKG5vLT9oaWdobGlnaHQpJC9pLFxuICAgIGxhbmd1YWdlRGV0ZWN0UmU6IC9cXGJsYW5nKD86dWFnZSk/LShbXFx3LV0rKVxcYi9pLFxuICAgIGNsYXNzUHJlZml4OiAnaGxqcy0nLFxuICAgIGNzc1NlbGVjdG9yOiAncHJlIGNvZGUnLFxuICAgIGxhbmd1YWdlczogbnVsbCxcbiAgICAvLyBiZXRhIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3ViamVjdCB0byBjaGFuZ2UsIHdlbGNvbWUgdG8gZGlzY3Vzc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzEwODZcbiAgICBfX2VtaXR0ZXI6IFRva2VuVHJlZUVtaXR0ZXJcbiAgfTtcblxuICAvKiBVdGlsaXR5IGZ1bmN0aW9ucyAqL1xuXG4gIC8qKlxuICAgKiBUZXN0cyBhIGxhbmd1YWdlIG5hbWUgdG8gc2VlIGlmIGhpZ2hsaWdodGluZyBzaG91bGQgYmUgc2tpcHBlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFuZ3VhZ2VOYW1lXG4gICAqL1xuICBmdW5jdGlvbiBzaG91bGROb3RIaWdobGlnaHQobGFuZ3VhZ2VOYW1lKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubm9IaWdobGlnaHRSZS50ZXN0KGxhbmd1YWdlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtIaWdobGlnaHRlZEhUTUxFbGVtZW50fSBibG9jayAtIHRoZSBIVE1MIGVsZW1lbnQgdG8gZGV0ZXJtaW5lIGxhbmd1YWdlIGZvclxuICAgKi9cbiAgZnVuY3Rpb24gYmxvY2tMYW5ndWFnZShibG9jaykge1xuICAgIGxldCBjbGFzc2VzID0gYmxvY2suY2xhc3NOYW1lICsgJyAnO1xuXG4gICAgY2xhc3NlcyArPSBibG9jay5wYXJlbnROb2RlID8gYmxvY2sucGFyZW50Tm9kZS5jbGFzc05hbWUgOiAnJztcblxuICAgIC8vIGxhbmd1YWdlLSogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5vbi1wcmVmaXhlZCBjbGFzcyBuYW1lcy5cbiAgICBjb25zdCBtYXRjaCA9IG9wdGlvbnMubGFuZ3VhZ2VEZXRlY3RSZS5leGVjKGNsYXNzZXMpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShtYXRjaFsxXSk7XG4gICAgICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICAgIHdhcm4oTEFOR1VBR0VfTk9UX0ZPVU5ELnJlcGxhY2UoXCJ7fVwiLCBtYXRjaFsxXSkpO1xuICAgICAgICB3YXJuKFwiRmFsbGluZyBiYWNrIHRvIG5vLWhpZ2hsaWdodCBtb2RlIGZvciB0aGlzIGJsb2NrLlwiLCBibG9jayk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGFuZ3VhZ2UgPyBtYXRjaFsxXSA6ICduby1oaWdobGlnaHQnO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbmQoKF9jbGFzcykgPT4gc2hvdWxkTm90SGlnaGxpZ2h0KF9jbGFzcykgfHwgZ2V0TGFuZ3VhZ2UoX2NsYXNzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29yZSBoaWdobGlnaHRpbmcgZnVuY3Rpb24uXG4gICAqXG4gICAqIE9MRCBBUElcbiAgICogaGlnaGxpZ2h0KGxhbmcsIGNvZGUsIGlnbm9yZUlsbGVnYWxzLCBjb250aW51YXRpb24pXG4gICAqXG4gICAqIE5FVyBBUElcbiAgICogaGlnaGxpZ2h0KGNvZGUsIHtsYW5nLCBpZ25vcmVJbGxlZ2Fsc30pXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlT3JMYW5ndWFnZU5hbWUgLSB0aGUgbGFuZ3VhZ2UgdG8gdXNlIGZvciBoaWdobGlnaHRpbmdcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBIaWdobGlnaHRPcHRpb25zfSBvcHRpb25zT3JDb2RlIC0gdGhlIGNvZGUgdG8gaGlnaGxpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lnbm9yZUlsbGVnYWxzXSAtIHdoZXRoZXIgdG8gaWdub3JlIGlsbGVnYWwgbWF0Y2hlcywgZGVmYXVsdCBpcyB0byBiYWlsXG4gICAqXG4gICAqIEByZXR1cm5zIHtIaWdobGlnaHRSZXN1bHR9IFJlc3VsdCAtIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlc3VsdFxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gbGFuZ3VhZ2UgLSB0aGUgbGFuZ3VhZ2UgbmFtZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0gcmVsZXZhbmNlIC0gdGhlIHJlbGV2YW5jZSBzY29yZVxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWUgLSB0aGUgaGlnaGxpZ2h0ZWQgSFRNTCBjb2RlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2RlIC0gdGhlIG9yaWdpbmFsIHJhdyBjb2RlXG4gICAqIEBwcm9wZXJ0eSB7Q29tcGlsZWRNb2RlfSB0b3AgLSB0b3Agb2YgdGhlIGN1cnJlbnQgbW9kZSBzdGFja1xuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGlsbGVnYWwgLSBpbmRpY2F0ZXMgd2hldGhlciBhbnkgaWxsZWdhbCBtYXRjaGVzIHdlcmUgZm91bmRcbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0KGNvZGVPckxhbmd1YWdlTmFtZSwgb3B0aW9uc09yQ29kZSwgaWdub3JlSWxsZWdhbHMpIHtcbiAgICBsZXQgY29kZSA9IFwiXCI7XG4gICAgbGV0IGxhbmd1YWdlTmFtZSA9IFwiXCI7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zT3JDb2RlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBjb2RlID0gY29kZU9yTGFuZ3VhZ2VOYW1lO1xuICAgICAgaWdub3JlSWxsZWdhbHMgPSBvcHRpb25zT3JDb2RlLmlnbm9yZUlsbGVnYWxzO1xuICAgICAgbGFuZ3VhZ2VOYW1lID0gb3B0aW9uc09yQ29kZS5sYW5ndWFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb2xkIEFQSVxuICAgICAgZGVwcmVjYXRlZChcIjEwLjcuMFwiLCBcImhpZ2hsaWdodChsYW5nLCBjb2RlLCAuLi5hcmdzKSBoYXMgYmVlbiBkZXByZWNhdGVkLlwiKTtcbiAgICAgIGRlcHJlY2F0ZWQoXCIxMC43LjBcIiwgXCJQbGVhc2UgdXNlIGhpZ2hsaWdodChjb2RlLCBvcHRpb25zKSBpbnN0ZWFkLlxcbmh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzIyNzdcIik7XG4gICAgICBsYW5ndWFnZU5hbWUgPSBjb2RlT3JMYW5ndWFnZU5hbWU7XG4gICAgICBjb2RlID0gb3B0aW9uc09yQ29kZTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8zMTQ5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmaW5lZFxuICAgIGlmIChpZ25vcmVJbGxlZ2FscyA9PT0gdW5kZWZpbmVkKSB7IGlnbm9yZUlsbGVnYWxzID0gdHJ1ZTsgfVxuXG4gICAgLyoqIEB0eXBlIHtCZWZvcmVIaWdobGlnaHRDb250ZXh0fSAqL1xuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICBjb2RlLFxuICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlTmFtZVxuICAgIH07XG4gICAgLy8gdGhlIHBsdWdpbiBjYW4gY2hhbmdlIHRoZSBkZXNpcmVkIGxhbmd1YWdlIG9yIHRoZSBjb2RlIHRvIGJlIGhpZ2hsaWdodGVkXG4gICAgLy8ganVzdCBiZSBjaGFuZ2luZyB0aGUgb2JqZWN0IGl0IHdhcyBwYXNzZWRcbiAgICBmaXJlKFwiYmVmb3JlOmhpZ2hsaWdodFwiLCBjb250ZXh0KTtcblxuICAgIC8vIGEgYmVmb3JlIHBsdWdpbiBjYW4gdXN1cnAgdGhlIHJlc3VsdCBjb21wbGV0ZWx5IGJ5IHByb3ZpZGluZyBpdCdzIG93blxuICAgIC8vIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGNhbGwgaGlnaGxpZ2h0XG4gICAgY29uc3QgcmVzdWx0ID0gY29udGV4dC5yZXN1bHRcbiAgICAgID8gY29udGV4dC5yZXN1bHRcbiAgICAgIDogX2hpZ2hsaWdodChjb250ZXh0Lmxhbmd1YWdlLCBjb250ZXh0LmNvZGUsIGlnbm9yZUlsbGVnYWxzKTtcblxuICAgIHJlc3VsdC5jb2RlID0gY29udGV4dC5jb2RlO1xuICAgIC8vIHRoZSBwbHVnaW4gY2FuIGNoYW5nZSBhbnl0aGluZyBpbiByZXN1bHQgdG8gc3VpdGUgaXRcbiAgICBmaXJlKFwiYWZ0ZXI6aGlnaGxpZ2h0XCIsIHJlc3VsdCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIHByaXZhdGUgaGlnaGxpZ2h0IHRoYXQncyB1c2VkIGludGVybmFsbHkgYW5kIGRvZXMgbm90IGZpcmUgY2FsbGJhY2tzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZU5hbWUgLSB0aGUgbGFuZ3VhZ2UgdG8gdXNlIGZvciBoaWdobGlnaHRpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvZGVUb0hpZ2hsaWdodCAtIHRoZSBjb2RlIHRvIGhpZ2hsaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW4/fSBbaWdub3JlSWxsZWdhbHNdIC0gd2hldGhlciB0byBpZ25vcmUgaWxsZWdhbCBtYXRjaGVzLCBkZWZhdWx0IGlzIHRvIGJhaWxcbiAgICogQHBhcmFtIHtDb21waWxlZE1vZGU/fSBbY29udGludWF0aW9uXSAtIGN1cnJlbnQgY29udGludWF0aW9uIG1vZGUsIGlmIGFueVxuICAgKiBAcmV0dXJucyB7SGlnaGxpZ2h0UmVzdWx0fSAtIHJlc3VsdCBvZiB0aGUgaGlnaGxpZ2h0IG9wZXJhdGlvblxuICAqL1xuICBmdW5jdGlvbiBfaGlnaGxpZ2h0KGxhbmd1YWdlTmFtZSwgY29kZVRvSGlnaGxpZ2h0LCBpZ25vcmVJbGxlZ2FscywgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qga2V5d29yZEhpdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGtleXdvcmQgZGF0YSBpZiBhIG1hdGNoIGlzIGEga2V5d29yZFxuICAgICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlIC0gY3VycmVudCBtb2RlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1hdGNoVGV4dCAtIHRoZSB0ZXh0dWFsIG1hdGNoXG4gICAgICogQHJldHVybnMge0tleXdvcmREYXRhIHwgZmFsc2V9XG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5d29yZERhdGEobW9kZSwgbWF0Y2hUZXh0KSB7XG4gICAgICByZXR1cm4gbW9kZS5rZXl3b3Jkc1ttYXRjaFRleHRdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NLZXl3b3JkcygpIHtcbiAgICAgIGlmICghdG9wLmtleXdvcmRzKSB7XG4gICAgICAgIGVtaXR0ZXIuYWRkVGV4dChtb2RlQnVmZmVyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICAgIHRvcC5rZXl3b3JkUGF0dGVyblJlLmxhc3RJbmRleCA9IDA7XG4gICAgICBsZXQgbWF0Y2ggPSB0b3Aua2V5d29yZFBhdHRlcm5SZS5leGVjKG1vZGVCdWZmZXIpO1xuICAgICAgbGV0IGJ1ZiA9IFwiXCI7XG5cbiAgICAgIHdoaWxlIChtYXRjaCkge1xuICAgICAgICBidWYgKz0gbW9kZUJ1ZmZlci5zdWJzdHJpbmcobGFzdEluZGV4LCBtYXRjaC5pbmRleCk7XG4gICAgICAgIGNvbnN0IHdvcmQgPSBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlID8gbWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA6IG1hdGNoWzBdO1xuICAgICAgICBjb25zdCBkYXRhID0ga2V5d29yZERhdGEodG9wLCB3b3JkKTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICBjb25zdCBba2luZCwga2V5d29yZFJlbGV2YW5jZV0gPSBkYXRhO1xuICAgICAgICAgIGVtaXR0ZXIuYWRkVGV4dChidWYpO1xuICAgICAgICAgIGJ1ZiA9IFwiXCI7XG5cbiAgICAgICAgICBrZXl3b3JkSGl0c1t3b3JkXSA9IChrZXl3b3JkSGl0c1t3b3JkXSB8fCAwKSArIDE7XG4gICAgICAgICAgaWYgKGtleXdvcmRIaXRzW3dvcmRdIDw9IE1BWF9LRVlXT1JEX0hJVFMpIHJlbGV2YW5jZSArPSBrZXl3b3JkUmVsZXZhbmNlO1xuICAgICAgICAgIGlmIChraW5kLnN0YXJ0c1dpdGgoXCJfXCIpKSB7XG4gICAgICAgICAgICAvLyBfIGltcGxpZWQgZm9yIHJlbGV2YW5jZSBvbmx5LCBkbyBub3QgaGlnaGxpZ2h0XG4gICAgICAgICAgICAvLyBieSBhcHBseWluZyBhIGNsYXNzIG5hbWVcbiAgICAgICAgICAgIGJ1ZiArPSBtYXRjaFswXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3NzQ2xhc3MgPSBsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzW2tpbmRdIHx8IGtpbmQ7XG4gICAgICAgICAgICBlbWl0S2V5d29yZChtYXRjaFswXSwgY3NzQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBidWYgKz0gbWF0Y2hbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEluZGV4ID0gdG9wLmtleXdvcmRQYXR0ZXJuUmUubGFzdEluZGV4O1xuICAgICAgICBtYXRjaCA9IHRvcC5rZXl3b3JkUGF0dGVyblJlLmV4ZWMobW9kZUJ1ZmZlcik7XG4gICAgICB9XG4gICAgICBidWYgKz0gbW9kZUJ1ZmZlci5zdWJzdHJpbmcobGFzdEluZGV4KTtcbiAgICAgIGVtaXR0ZXIuYWRkVGV4dChidWYpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NTdWJMYW5ndWFnZSgpIHtcbiAgICAgIGlmIChtb2RlQnVmZmVyID09PSBcIlwiKSByZXR1cm47XG4gICAgICAvKiogQHR5cGUgSGlnaGxpZ2h0UmVzdWx0ICovXG4gICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgaWYgKHR5cGVvZiB0b3Auc3ViTGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICghbGFuZ3VhZ2VzW3RvcC5zdWJMYW5ndWFnZV0pIHtcbiAgICAgICAgICBlbWl0dGVyLmFkZFRleHQobW9kZUJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IF9oaWdobGlnaHQodG9wLnN1Ykxhbmd1YWdlLCBtb2RlQnVmZmVyLCB0cnVlLCBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0pO1xuICAgICAgICBjb250aW51YXRpb25zW3RvcC5zdWJMYW5ndWFnZV0gPSAvKiogQHR5cGUge0NvbXBpbGVkTW9kZX0gKi8gKHJlc3VsdC5fdG9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGhpZ2hsaWdodEF1dG8obW9kZUJ1ZmZlciwgdG9wLnN1Ykxhbmd1YWdlLmxlbmd0aCA/IHRvcC5zdWJMYW5ndWFnZSA6IG51bGwpO1xuICAgICAgfVxuXG4gICAgICAvLyBDb3VudGluZyBlbWJlZGRlZCBsYW5ndWFnZSBzY29yZSB0b3dhcmRzIHRoZSBob3N0IGxhbmd1YWdlIG1heSBiZSBkaXNhYmxlZFxuICAgICAgLy8gd2l0aCB6ZXJvaW5nIHRoZSBjb250YWluaW5nIG1vZGUgcmVsZXZhbmNlLiBVc2UgY2FzZSBpbiBwb2ludCBpcyBNYXJrZG93biB0aGF0XG4gICAgICAvLyBhbGxvd3MgWE1MIGV2ZXJ5d2hlcmUgYW5kIG1ha2VzIGV2ZXJ5IFhNTCBzbmlwcGV0IHRvIGhhdmUgYSBtdWNoIGxhcmdlciBNYXJrZG93blxuICAgICAgLy8gc2NvcmUuXG4gICAgICBpZiAodG9wLnJlbGV2YW5jZSA+IDApIHtcbiAgICAgICAgcmVsZXZhbmNlICs9IHJlc3VsdC5yZWxldmFuY2U7XG4gICAgICB9XG4gICAgICBlbWl0dGVyLl9fYWRkU3VibGFuZ3VhZ2UocmVzdWx0Ll9lbWl0dGVyLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NCdWZmZXIoKSB7XG4gICAgICBpZiAodG9wLnN1Ykxhbmd1YWdlICE9IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzc1N1Ykxhbmd1YWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzS2V5d29yZHMoKTtcbiAgICAgIH1cbiAgICAgIG1vZGVCdWZmZXIgPSAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzY29wZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVtaXRLZXl3b3JkKGtleXdvcmQsIHNjb3BlKSB7XG4gICAgICBpZiAoa2V5d29yZCA9PT0gXCJcIikgcmV0dXJuO1xuXG4gICAgICBlbWl0dGVyLnN0YXJ0U2NvcGUoc2NvcGUpO1xuICAgICAgZW1pdHRlci5hZGRUZXh0KGtleXdvcmQpO1xuICAgICAgZW1pdHRlci5lbmRTY29wZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7Q29tcGlsZWRTY29wZX0gc2NvcGVcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW1pdE11bHRpQ2xhc3Moc2NvcGUsIG1hdGNoKSB7XG4gICAgICBsZXQgaSA9IDE7XG4gICAgICBjb25zdCBtYXggPSBtYXRjaC5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkgPD0gbWF4KSB7XG4gICAgICAgIGlmICghc2NvcGUuX2VtaXRbaV0pIHsgaSsrOyBjb250aW51ZTsgfVxuICAgICAgICBjb25zdCBrbGFzcyA9IGxhbmd1YWdlLmNsYXNzTmFtZUFsaWFzZXNbc2NvcGVbaV1dIHx8IHNjb3BlW2ldO1xuICAgICAgICBjb25zdCB0ZXh0ID0gbWF0Y2hbaV07XG4gICAgICAgIGlmIChrbGFzcykge1xuICAgICAgICAgIGVtaXRLZXl3b3JkKHRleHQsIGtsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb2RlQnVmZmVyID0gdGV4dDtcbiAgICAgICAgICBwcm9jZXNzS2V5d29yZHMoKTtcbiAgICAgICAgICBtb2RlQnVmZmVyID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb21waWxlZE1vZGV9IG1vZGUgLSBuZXcgbW9kZSB0byBzdGFydFxuICAgICAqIEBwYXJhbSB7UmVnRXhwTWF0Y2hBcnJheX0gbWF0Y2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFydE5ld01vZGUobW9kZSwgbWF0Y2gpIHtcbiAgICAgIGlmIChtb2RlLnNjb3BlICYmIHR5cGVvZiBtb2RlLnNjb3BlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGVtaXR0ZXIub3Blbk5vZGUobGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlc1ttb2RlLnNjb3BlXSB8fCBtb2RlLnNjb3BlKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RlLmJlZ2luU2NvcGUpIHtcbiAgICAgICAgLy8gYmVnaW5TY29wZSBqdXN0IHdyYXBzIHRoZSBiZWdpbiBtYXRjaCBpdHNlbGYgaW4gYSBzY29wZVxuICAgICAgICBpZiAobW9kZS5iZWdpblNjb3BlLl93cmFwKSB7XG4gICAgICAgICAgZW1pdEtleXdvcmQobW9kZUJ1ZmZlciwgbGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlc1ttb2RlLmJlZ2luU2NvcGUuX3dyYXBdIHx8IG1vZGUuYmVnaW5TY29wZS5fd3JhcCk7XG4gICAgICAgICAgbW9kZUJ1ZmZlciA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS5iZWdpblNjb3BlLl9tdWx0aSkge1xuICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgbW9kZUJ1ZmZlciBzaG91bGQganVzdCBiZSB0aGUgbWF0Y2hcbiAgICAgICAgICBlbWl0TXVsdGlDbGFzcyhtb2RlLmJlZ2luU2NvcGUsIG1hdGNoKTtcbiAgICAgICAgICBtb2RlQnVmZmVyID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b3AgPSBPYmplY3QuY3JlYXRlKG1vZGUsIHsgcGFyZW50OiB7IHZhbHVlOiB0b3AgfSB9KTtcbiAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb21waWxlZE1vZGUgfSBtb2RlIC0gdGhlIG1vZGUgdG8gcG90ZW50aWFsbHkgZW5kXG4gICAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaCAtIHRoZSBsYXRlc3QgbWF0Y2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hQbHVzUmVtYWluZGVyIC0gbWF0Y2ggcGx1cyByZW1haW5kZXIgb2YgY29udGVudFxuICAgICAqIEByZXR1cm5zIHtDb21waWxlZE1vZGUgfCB2b2lkfSAtIHRoZSBuZXh0IG1vZGUsIG9yIGlmIHZvaWQgY29udGludWUgb24gaW4gY3VycmVudCBtb2RlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIG1hdGNoLCBtYXRjaFBsdXNSZW1haW5kZXIpIHtcbiAgICAgIGxldCBtYXRjaGVkID0gc3RhcnRzV2l0aChtb2RlLmVuZFJlLCBtYXRjaFBsdXNSZW1haW5kZXIpO1xuXG4gICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICBpZiAobW9kZVtcIm9uOmVuZFwiXSkge1xuICAgICAgICAgIGNvbnN0IHJlc3AgPSBuZXcgUmVzcG9uc2UobW9kZSk7XG4gICAgICAgICAgbW9kZVtcIm9uOmVuZFwiXShtYXRjaCwgcmVzcCk7XG4gICAgICAgICAgaWYgKHJlc3AuaXNNYXRjaElnbm9yZWQpIG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgd2hpbGUgKG1vZGUuZW5kc1BhcmVudCAmJiBtb2RlLnBhcmVudCkge1xuICAgICAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbW9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gZXZlbiBpZiBvbjplbmQgZmlyZXMgYW4gYGlnbm9yZWAgaXQncyBzdGlsbCBwb3NzaWJsZVxuICAgICAgLy8gdGhhdCB3ZSBtaWdodCB0cmlnZ2VyIHRoZSBlbmQgbm9kZSBiZWNhdXNlIG9mIGEgcGFyZW50IG1vZGVcbiAgICAgIGlmIChtb2RlLmVuZHNXaXRoUGFyZW50KSB7XG4gICAgICAgIHJldHVybiBlbmRPZk1vZGUobW9kZS5wYXJlbnQsIG1hdGNoLCBtYXRjaFBsdXNSZW1haW5kZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBtYXRjaGluZyBidXQgdGhlbiBpZ25vcmluZyBhIHNlcXVlbmNlIG9mIHRleHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsZXhlbWUgLSBzdHJpbmcgY29udGFpbmluZyBmdWxsIG1hdGNoIHRleHRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb0lnbm9yZShsZXhlbWUpIHtcbiAgICAgIGlmICh0b3AubWF0Y2hlci5yZWdleEluZGV4ID09PSAwKSB7XG4gICAgICAgIC8vIG5vIG1vcmUgcmVnZXhlcyB0byBwb3RlbnRpYWxseSBtYXRjaCBoZXJlLCBzbyB3ZSBtb3ZlIHRoZSBjdXJzb3IgZm9yd2FyZCBvbmVcbiAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWVbMF07XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byBtb3ZlIHRoZSBjdXJzb3IsIHdlIHN0aWxsIGhhdmUgYWRkaXRpb25hbCByZWdleGVzIHRvIHRyeSBhbmRcbiAgICAgICAgLy8gbWF0Y2ggYXQgdGhpcyB2ZXJ5IHNwb3RcbiAgICAgICAgcmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHRoZSBzdGFydCBvZiBhIG5ldyBwb3RlbnRpYWwgbW9kZSBtYXRjaFxuICAgICAqXG4gICAgICogQHBhcmFtIHtFbmhhbmNlZE1hdGNofSBtYXRjaCAtIHRoZSBjdXJyZW50IG1hdGNoXG4gICAgICogQHJldHVybnMge251bWJlcn0gaG93IGZhciB0byBhZHZhbmNlIHRoZSBwYXJzZSBjdXJzb3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb0JlZ2luTWF0Y2gobWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxleGVtZSA9IG1hdGNoWzBdO1xuICAgICAgY29uc3QgbmV3TW9kZSA9IG1hdGNoLnJ1bGU7XG5cbiAgICAgIGNvbnN0IHJlc3AgPSBuZXcgUmVzcG9uc2UobmV3TW9kZSk7XG4gICAgICAvLyBmaXJzdCBpbnRlcm5hbCBiZWZvcmUgY2FsbGJhY2tzLCB0aGVuIHRoZSBwdWJsaWMgb25lc1xuICAgICAgY29uc3QgYmVmb3JlQ2FsbGJhY2tzID0gW25ld01vZGUuX19iZWZvcmVCZWdpbiwgbmV3TW9kZVtcIm9uOmJlZ2luXCJdXTtcbiAgICAgIGZvciAoY29uc3QgY2Igb2YgYmVmb3JlQ2FsbGJhY2tzKSB7XG4gICAgICAgIGlmICghY2IpIGNvbnRpbnVlO1xuICAgICAgICBjYihtYXRjaCwgcmVzcCk7XG4gICAgICAgIGlmIChyZXNwLmlzTWF0Y2hJZ25vcmVkKSByZXR1cm4gZG9JZ25vcmUobGV4ZW1lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld01vZGUuc2tpcCkge1xuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgaWYgKCFuZXdNb2RlLnJldHVybkJlZ2luICYmICFuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YXJ0TmV3TW9kZShuZXdNb2RlLCBtYXRjaCk7XG4gICAgICByZXR1cm4gbmV3TW9kZS5yZXR1cm5CZWdpbiA/IDAgOiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSB0aGUgcG90ZW50aWFsIGVuZCBvZiBtb2RlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoIC0gdGhlIGN1cnJlbnQgbWF0Y2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb0VuZE1hdGNoKG1hdGNoKSB7XG4gICAgICBjb25zdCBsZXhlbWUgPSBtYXRjaFswXTtcbiAgICAgIGNvbnN0IG1hdGNoUGx1c1JlbWFpbmRlciA9IGNvZGVUb0hpZ2hsaWdodC5zdWJzdHJpbmcobWF0Y2guaW5kZXgpO1xuXG4gICAgICBjb25zdCBlbmRNb2RlID0gZW5kT2ZNb2RlKHRvcCwgbWF0Y2gsIG1hdGNoUGx1c1JlbWFpbmRlcik7XG4gICAgICBpZiAoIWVuZE1vZGUpIHsgcmV0dXJuIE5PX01BVENIOyB9XG5cbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRvcDtcbiAgICAgIGlmICh0b3AuZW5kU2NvcGUgJiYgdG9wLmVuZFNjb3BlLl93cmFwKSB7XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgZW1pdEtleXdvcmQobGV4ZW1lLCB0b3AuZW5kU2NvcGUuX3dyYXApO1xuICAgICAgfSBlbHNlIGlmICh0b3AuZW5kU2NvcGUgJiYgdG9wLmVuZFNjb3BlLl9tdWx0aSkge1xuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIGVtaXRNdWx0aUNsYXNzKHRvcC5lbmRTY29wZSwgbWF0Y2gpO1xuICAgICAgfSBlbHNlIGlmIChvcmlnaW4uc2tpcCkge1xuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghKG9yaWdpbi5yZXR1cm5FbmQgfHwgb3JpZ2luLmV4Y2x1ZGVFbmQpKSB7XG4gICAgICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAob3JpZ2luLmV4Y2x1ZGVFbmQpIHtcbiAgICAgICAgICBtb2RlQnVmZmVyID0gbGV4ZW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkbyB7XG4gICAgICAgIGlmICh0b3Auc2NvcGUpIHtcbiAgICAgICAgICBlbWl0dGVyLmNsb3NlTm9kZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9wLnNraXAgJiYgIXRvcC5zdWJMYW5ndWFnZSkge1xuICAgICAgICAgIHJlbGV2YW5jZSArPSB0b3AucmVsZXZhbmNlO1xuICAgICAgICB9XG4gICAgICAgIHRvcCA9IHRvcC5wYXJlbnQ7XG4gICAgICB9IHdoaWxlICh0b3AgIT09IGVuZE1vZGUucGFyZW50KTtcbiAgICAgIGlmIChlbmRNb2RlLnN0YXJ0cykge1xuICAgICAgICBzdGFydE5ld01vZGUoZW5kTW9kZS5zdGFydHMsIG1hdGNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmlnaW4ucmV0dXJuRW5kID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0NvbnRpbnVhdGlvbnMoKSB7XG4gICAgICBjb25zdCBsaXN0ID0gW107XG4gICAgICBmb3IgKGxldCBjdXJyZW50ID0gdG9wOyBjdXJyZW50ICE9PSBsYW5ndWFnZTsgY3VycmVudCA9IGN1cnJlbnQucGFyZW50KSB7XG4gICAgICAgIGlmIChjdXJyZW50LnNjb3BlKSB7XG4gICAgICAgICAgbGlzdC51bnNoaWZ0KGN1cnJlbnQuc2NvcGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiBlbWl0dGVyLm9wZW5Ob2RlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge3t0eXBlPzogTWF0Y2hUeXBlLCBpbmRleD86IG51bWJlciwgcnVsZT86IE1vZGV9fX0gKi9cbiAgICBsZXQgbGFzdE1hdGNoID0ge307XG5cbiAgICAvKipcbiAgICAgKiAgUHJvY2VzcyBhbiBpbmRpdmlkdWFsIG1hdGNoXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dEJlZm9yZU1hdGNoIC0gdGV4dCBwcmVjZWRpbmcgdGhlIG1hdGNoIChzaW5jZSB0aGUgbGFzdCBtYXRjaClcbiAgICAgKiBAcGFyYW0ge0VuaGFuY2VkTWF0Y2h9IFttYXRjaF0gLSB0aGUgbWF0Y2ggaXRzZWxmXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0xleGVtZSh0ZXh0QmVmb3JlTWF0Y2gsIG1hdGNoKSB7XG4gICAgICBjb25zdCBsZXhlbWUgPSBtYXRjaCAmJiBtYXRjaFswXTtcblxuICAgICAgLy8gYWRkIG5vbi1tYXRjaGVkIHRleHQgdG8gdGhlIGN1cnJlbnQgbW9kZSBidWZmZXJcbiAgICAgIG1vZGVCdWZmZXIgKz0gdGV4dEJlZm9yZU1hdGNoO1xuXG4gICAgICBpZiAobGV4ZW1lID09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgLy8gd2UndmUgZm91bmQgYSAwIHdpZHRoIG1hdGNoIGFuZCB3ZSdyZSBzdHVjaywgc28gd2UgbmVlZCB0byBhZHZhbmNlXG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2hlbiB3ZSBoYXZlIGJhZGx5IGJlaGF2ZWQgcnVsZXMgdGhhdCBoYXZlIG9wdGlvbmFsIG1hdGNoZXJzIHRvIHRoZSBkZWdyZWUgdGhhdFxuICAgICAgLy8gc29tZXRpbWVzIHRoZXkgY2FuIGVuZCB1cCBtYXRjaGluZyBub3RoaW5nIGF0IGFsbFxuICAgICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yMTQwXG4gICAgICBpZiAobGFzdE1hdGNoLnR5cGUgPT09IFwiYmVnaW5cIiAmJiBtYXRjaC50eXBlID09PSBcImVuZFwiICYmIGxhc3RNYXRjaC5pbmRleCA9PT0gbWF0Y2guaW5kZXggJiYgbGV4ZW1lID09PSBcIlwiKSB7XG4gICAgICAgIC8vIHNwaXQgdGhlIFwic2tpcHBlZFwiIGNoYXJhY3RlciB0aGF0IG91ciByZWdleCBjaG9rZWQgb24gYmFjayBpbnRvIHRoZSBvdXRwdXQgc2VxdWVuY2VcbiAgICAgICAgbW9kZUJ1ZmZlciArPSBjb2RlVG9IaWdobGlnaHQuc2xpY2UobWF0Y2guaW5kZXgsIG1hdGNoLmluZGV4ICsgMSk7XG4gICAgICAgIGlmICghU0FGRV9NT0RFKSB7XG4gICAgICAgICAgLyoqIEB0eXBlIHtBbm5vdGF0ZWRFcnJvcn0gKi9cbiAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYDAgd2lkdGggbWF0Y2ggcmVnZXggKCR7bGFuZ3VhZ2VOYW1lfSlgKTtcbiAgICAgICAgICBlcnIubGFuZ3VhZ2VOYW1lID0gbGFuZ3VhZ2VOYW1lO1xuICAgICAgICAgIGVyci5iYWRSdWxlID0gbGFzdE1hdGNoLnJ1bGU7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgbGFzdE1hdGNoID0gbWF0Y2g7XG5cbiAgICAgIGlmIChtYXRjaC50eXBlID09PSBcImJlZ2luXCIpIHtcbiAgICAgICAgcmV0dXJuIGRvQmVnaW5NYXRjaChtYXRjaCk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnR5cGUgPT09IFwiaWxsZWdhbFwiICYmICFpZ25vcmVJbGxlZ2Fscykge1xuICAgICAgICAvLyBpbGxlZ2FsIG1hdGNoLCB3ZSBkbyBub3QgY29udGludWUgcHJvY2Vzc2luZ1xuICAgICAgICAvKiogQHR5cGUge0Fubm90YXRlZEVycm9yfSAqL1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lIFwiJyArIGxleGVtZSArICdcIiBmb3IgbW9kZSBcIicgKyAodG9wLnNjb3BlIHx8ICc8dW5uYW1lZD4nKSArICdcIicpO1xuICAgICAgICBlcnIubW9kZSA9IHRvcDtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaC50eXBlID09PSBcImVuZFwiKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IGRvRW5kTWF0Y2gobWF0Y2gpO1xuICAgICAgICBpZiAocHJvY2Vzc2VkICE9PSBOT19NQVRDSCkge1xuICAgICAgICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZWRnZSBjYXNlIGZvciB3aGVuIGlsbGVnYWwgbWF0Y2hlcyAkIChlbmQgb2YgbGluZSkgd2hpY2ggaXMgdGVjaG5pY2FsbHlcbiAgICAgIC8vIGEgMCB3aWR0aCBtYXRjaCBidXQgbm90IGEgYmVnaW4vZW5kIG1hdGNoIHNvIGl0J3Mgbm90IGNhdWdodCBieSB0aGVcbiAgICAgIC8vIGZpcnN0IGhhbmRsZXIgKHdoZW4gaWdub3JlSWxsZWdhbHMgaXMgdHJ1ZSlcbiAgICAgIGlmIChtYXRjaC50eXBlID09PSBcImlsbGVnYWxcIiAmJiBsZXhlbWUgPT09IFwiXCIpIHtcbiAgICAgICAgLy8gYWR2YW5jZSBzbyB3ZSBhcmVuJ3Qgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcFxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgLy8gaW5maW5pdGUgbG9vcHMgYXJlIEJBRCwgdGhpcyBpcyBhIGxhc3QgZGl0Y2ggY2F0Y2ggYWxsLiBpZiB3ZSBoYXZlIGFcbiAgICAgIC8vIGRlY2VudCBudW1iZXIgb2YgaXRlcmF0aW9ucyB5ZXQgb3VyIGluZGV4IChjdXJzb3IgcG9zaXRpb24gaW4gb3VyXG4gICAgICAvLyBwYXJzaW5nKSBzdGlsbCAzeCBiZWhpbmQgb3VyIGluZGV4IHRoZW4gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmdcbiAgICAgIC8vIHNvIHdlIGJhaWxcbiAgICAgIGlmIChpdGVyYXRpb25zID4gMTAwMDAwICYmIGl0ZXJhdGlvbnMgPiBtYXRjaC5pbmRleCAqIDMpIHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCwgd2F5IG1vcmUgaXRlcmF0aW9ucyB0aGFuIG1hdGNoZXMnKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgV2h5IG1pZ2h0IGJlIGZpbmQgb3Vyc2VsdmVzIGhlcmU/ICBBbiBwb3RlbnRpYWwgZW5kIG1hdGNoIHRoYXQgd2FzXG4gICAgICB0cmlnZ2VyZWQgYnV0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQuICBJRSwgYGRvRW5kTWF0Y2hgIHJldHVybmVkIE5PX01BVENILlxuICAgICAgKHRoaXMgY291bGQgYmUgYmVjYXVzZSBhIGNhbGxiYWNrIHJlcXVlc3RzIHRoZSBtYXRjaCBiZSBpZ25vcmVkLCBldGMpXG5cbiAgICAgIFRoaXMgY2F1c2VzIG5vIHJlYWwgaGFybSBvdGhlciB0aGFuIHN0b3BwaW5nIGEgZmV3IHRpbWVzIHRvbyBtYW55LlxuICAgICAgKi9cblxuICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWU7XG4gICAgICByZXR1cm4gbGV4ZW1lLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKGxhbmd1YWdlTmFtZSk7XG4gICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgZXJyb3IoTEFOR1VBR0VfTk9UX0ZPVU5ELnJlcGxhY2UoXCJ7fVwiLCBsYW5ndWFnZU5hbWUpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsYW5ndWFnZTogXCInICsgbGFuZ3VhZ2VOYW1lICsgJ1wiJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWQgPSBjb21waWxlTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAvKiogQHR5cGUge0NvbXBpbGVkTW9kZX0gKi9cbiAgICBsZXQgdG9wID0gY29udGludWF0aW9uIHx8IG1kO1xuICAgIC8qKiBAdHlwZSBSZWNvcmQ8c3RyaW5nLENvbXBpbGVkTW9kZT4gKi9cbiAgICBjb25zdCBjb250aW51YXRpb25zID0ge307IC8vIGtlZXAgY29udGludWF0aW9ucyBmb3Igc3ViLWxhbmd1YWdlc1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgb3B0aW9ucy5fX2VtaXR0ZXIob3B0aW9ucyk7XG4gICAgcHJvY2Vzc0NvbnRpbnVhdGlvbnMoKTtcbiAgICBsZXQgbW9kZUJ1ZmZlciA9ICcnO1xuICAgIGxldCByZWxldmFuY2UgPSAwO1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgbGV0IGl0ZXJhdGlvbnMgPSAwO1xuICAgIGxldCByZXN1bWVTY2FuQXRTYW1lUG9zaXRpb24gPSBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIWxhbmd1YWdlLl9fZW1pdFRva2Vucykge1xuICAgICAgICB0b3AubWF0Y2hlci5jb25zaWRlckFsbCgpO1xuXG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBpdGVyYXRpb25zKys7XG4gICAgICAgICAgaWYgKHJlc3VtZVNjYW5BdFNhbWVQb3NpdGlvbikge1xuICAgICAgICAgICAgLy8gb25seSByZWdleGVzIG5vdCBtYXRjaGVkIHByZXZpb3VzbHkgd2lsbCBub3cgYmVcbiAgICAgICAgICAgIC8vIGNvbnNpZGVyZWQgZm9yIGEgcG90ZW50aWFsIG1hdGNoXG4gICAgICAgICAgICByZXN1bWVTY2FuQXRTYW1lUG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9wLm1hdGNoZXIuY29uc2lkZXJBbGwoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9wLm1hdGNoZXIubGFzdEluZGV4ID0gaW5kZXg7XG5cbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHRvcC5tYXRjaGVyLmV4ZWMoY29kZVRvSGlnaGxpZ2h0KTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm1hdGNoXCIsIG1hdGNoWzBdLCBtYXRjaC5ydWxlICYmIG1hdGNoLnJ1bGUuYmVnaW4pXG5cbiAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcblxuICAgICAgICAgIGNvbnN0IGJlZm9yZU1hdGNoID0gY29kZVRvSGlnaGxpZ2h0LnN1YnN0cmluZyhpbmRleCwgbWF0Y2guaW5kZXgpO1xuICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZENvdW50ID0gcHJvY2Vzc0xleGVtZShiZWZvcmVNYXRjaCwgbWF0Y2gpO1xuICAgICAgICAgIGluZGV4ID0gbWF0Y2guaW5kZXggKyBwcm9jZXNzZWRDb3VudDtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzTGV4ZW1lKGNvZGVUb0hpZ2hsaWdodC5zdWJzdHJpbmcoaW5kZXgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhbmd1YWdlLl9fZW1pdFRva2Vucyhjb2RlVG9IaWdobGlnaHQsIGVtaXR0ZXIpO1xuICAgICAgfVxuXG4gICAgICBlbWl0dGVyLmZpbmFsaXplKCk7XG4gICAgICByZXN1bHQgPSBlbWl0dGVyLnRvSFRNTCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2VOYW1lLFxuICAgICAgICB2YWx1ZTogcmVzdWx0LFxuICAgICAgICByZWxldmFuY2UsXG4gICAgICAgIGlsbGVnYWw6IGZhbHNlLFxuICAgICAgICBfZW1pdHRlcjogZW1pdHRlcixcbiAgICAgICAgX3RvcDogdG9wXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbGxlZ2FsJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2VOYW1lLFxuICAgICAgICAgIHZhbHVlOiBlc2NhcGUoY29kZVRvSGlnaGxpZ2h0KSxcbiAgICAgICAgICBpbGxlZ2FsOiB0cnVlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBfaWxsZWdhbEJ5OiB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgY29udGV4dDogY29kZVRvSGlnaGxpZ2h0LnNsaWNlKGluZGV4IC0gMTAwLCBpbmRleCArIDEwMCksXG4gICAgICAgICAgICBtb2RlOiBlcnIubW9kZSxcbiAgICAgICAgICAgIHJlc3VsdFNvRmFyOiByZXN1bHRcbiAgICAgICAgICB9LFxuICAgICAgICAgIF9lbWl0dGVyOiBlbWl0dGVyXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKFNBRkVfTU9ERSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZU5hbWUsXG4gICAgICAgICAgdmFsdWU6IGVzY2FwZShjb2RlVG9IaWdobGlnaHQpLFxuICAgICAgICAgIGlsbGVnYWw6IGZhbHNlLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBlcnJvclJhaXNlZDogZXJyLFxuICAgICAgICAgIF9lbWl0dGVyOiBlbWl0dGVyLFxuICAgICAgICAgIF90b3A6IHRvcFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIGEgdmFsaWQgaGlnaGxpZ2h0IHJlc3VsdCwgd2l0aG91dCBhY3R1YWxseSBkb2luZyBhbnkgYWN0dWFsIHdvcmssXG4gICAqIGF1dG8gaGlnaGxpZ2h0IHN0YXJ0cyB3aXRoIHRoaXMgYW5kIGl0J3MgcG9zc2libGUgZm9yIHNtYWxsIHNuaXBwZXRzIHRoYXRcbiAgICogYXV0by1kZXRlY3Rpb24gbWF5IG5vdCBmaW5kIGEgYmV0dGVyIG1hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlXG4gICAqIEByZXR1cm5zIHtIaWdobGlnaHRSZXN1bHR9XG4gICAqL1xuICBmdW5jdGlvbiBqdXN0VGV4dEhpZ2hsaWdodFJlc3VsdChjb2RlKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgdmFsdWU6IGVzY2FwZShjb2RlKSxcbiAgICAgIGlsbGVnYWw6IGZhbHNlLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgX3RvcDogUExBSU5URVhUX0xBTkdVQUdFLFxuICAgICAgX2VtaXR0ZXI6IG5ldyBvcHRpb25zLl9fZW1pdHRlcihvcHRpb25zKVxuICAgIH07XG4gICAgcmVzdWx0Ll9lbWl0dGVyLmFkZFRleHQoY29kZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICBIaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBkZXRlY3Rpb24uIEFjY2VwdHMgYSBzdHJpbmcgd2l0aCB0aGUgY29kZSB0b1xuICBoaWdobGlnaHQuIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gIC0gbGFuZ3VhZ2UgKGRldGVjdGVkIGxhbmd1YWdlKVxuICAtIHJlbGV2YW5jZSAoaW50KVxuICAtIHZhbHVlIChhbiBIVE1MIHN0cmluZyB3aXRoIGhpZ2hsaWdodGluZyBtYXJrdXApXG4gIC0gc2Vjb25kQmVzdCAob2JqZWN0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGZvciBzZWNvbmQtYmVzdCBoZXVyaXN0aWNhbGx5XG4gICAgZGV0ZWN0ZWQgbGFuZ3VhZ2UsIG1heSBiZSBhYnNlbnQpXG5cbiAgICBAcGFyYW0ge3N0cmluZ30gY29kZVxuICAgIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gW2xhbmd1YWdlU3Vic2V0XVxuICAgIEByZXR1cm5zIHtBdXRvSGlnaGxpZ2h0UmVzdWx0fVxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRBdXRvKGNvZGUsIGxhbmd1YWdlU3Vic2V0KSB7XG4gICAgbGFuZ3VhZ2VTdWJzZXQgPSBsYW5ndWFnZVN1YnNldCB8fCBvcHRpb25zLmxhbmd1YWdlcyB8fCBPYmplY3Qua2V5cyhsYW5ndWFnZXMpO1xuICAgIGNvbnN0IHBsYWludGV4dCA9IGp1c3RUZXh0SGlnaGxpZ2h0UmVzdWx0KGNvZGUpO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGxhbmd1YWdlU3Vic2V0LmZpbHRlcihnZXRMYW5ndWFnZSkuZmlsdGVyKGF1dG9EZXRlY3Rpb24pLm1hcChuYW1lID0+XG4gICAgICBfaGlnaGxpZ2h0KG5hbWUsIGNvZGUsIGZhbHNlKVxuICAgICk7XG4gICAgcmVzdWx0cy51bnNoaWZ0KHBsYWludGV4dCk7IC8vIHBsYWludGV4dCBpcyBhbHdheXMgYW4gb3B0aW9uXG5cbiAgICBjb25zdCBzb3J0ZWQgPSByZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIC8vIHNvcnQgYmFzZSBvbiByZWxldmFuY2VcbiAgICAgIGlmIChhLnJlbGV2YW5jZSAhPT0gYi5yZWxldmFuY2UpIHJldHVybiBiLnJlbGV2YW5jZSAtIGEucmVsZXZhbmNlO1xuXG4gICAgICAvLyBhbHdheXMgYXdhcmQgdGhlIHRpZSB0byB0aGUgYmFzZSBsYW5ndWFnZVxuICAgICAgLy8gaWUgaWYgQysrIGFuZCBBcmR1aW5vIGFyZSB0aWVkLCBpdCdzIG1vcmUgbGlrZWx5IHRvIGJlIEMrK1xuICAgICAgaWYgKGEubGFuZ3VhZ2UgJiYgYi5sYW5ndWFnZSkge1xuICAgICAgICBpZiAoZ2V0TGFuZ3VhZ2UoYS5sYW5ndWFnZSkuc3VwZXJzZXRPZiA9PT0gYi5sYW5ndWFnZSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKGdldExhbmd1YWdlKGIubGFuZ3VhZ2UpLnN1cGVyc2V0T2YgPT09IGEubGFuZ3VhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gb3RoZXJ3aXNlIHNheSB0aGV5IGFyZSBlcXVhbCwgd2hpY2ggaGFzIHRoZSBlZmZlY3Qgb2Ygc29ydGluZyBvblxuICAgICAgLy8gcmVsZXZhbmNlIHdoaWxlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIG9yZGVyaW5nIC0gd2hpY2ggaXMgaG93IHRpZXNcbiAgICAgIC8vIGhhdmUgaGlzdG9yaWNhbGx5IGJlZW4gc2V0dGxlZCwgaWUgdGhlIGxhbmd1YWdlIHRoYXQgY29tZXMgZmlyc3QgYWx3YXlzXG4gICAgICAvLyB3aW5zIGluIHRoZSBjYXNlIG9mIGEgdGllXG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcblxuICAgIGNvbnN0IFtiZXN0LCBzZWNvbmRCZXN0XSA9IHNvcnRlZDtcblxuICAgIC8qKiBAdHlwZSB7QXV0b0hpZ2hsaWdodFJlc3VsdH0gKi9cbiAgICBjb25zdCByZXN1bHQgPSBiZXN0O1xuICAgIHJlc3VsdC5zZWNvbmRCZXN0ID0gc2Vjb25kQmVzdDtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIG5ldyBjbGFzcyBuYW1lIGZvciBibG9jayBnaXZlbiB0aGUgbGFuZ3VhZ2UgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY3VycmVudExhbmddXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVzdWx0TGFuZ11cbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZUNsYXNzTmFtZShlbGVtZW50LCBjdXJyZW50TGFuZywgcmVzdWx0TGFuZykge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gKGN1cnJlbnRMYW5nICYmIGFsaWFzZXNbY3VycmVudExhbmddKSB8fCByZXN1bHRMYW5nO1xuXG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiaGxqc1wiKTtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoYGxhbmd1YWdlLSR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYSBET00gbm9kZSBjb250YWluaW5nIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7SGlnaGxpZ2h0ZWRIVE1MRWxlbWVudH0gZWxlbWVudCAtIHRoZSBIVE1MIGVsZW1lbnQgdG8gaGlnaGxpZ2h0XG4gICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1lbnQoZWxlbWVudCkge1xuICAgIC8qKiBAdHlwZSBIVE1MRWxlbWVudCAqL1xuICAgIGxldCBub2RlID0gbnVsbDtcbiAgICBjb25zdCBsYW5ndWFnZSA9IGJsb2NrTGFuZ3VhZ2UoZWxlbWVudCk7XG5cbiAgICBpZiAoc2hvdWxkTm90SGlnaGxpZ2h0KGxhbmd1YWdlKSkgcmV0dXJuO1xuXG4gICAgZmlyZShcImJlZm9yZTpoaWdobGlnaHRFbGVtZW50XCIsXG4gICAgICB7IGVsOiBlbGVtZW50LCBsYW5ndWFnZSB9KTtcblxuICAgIC8vIHdlIHNob3VsZCBiZSBhbGwgdGV4dCwgbm8gY2hpbGQgbm9kZXMgKHVuZXNjYXBlZCBIVE1MKSAtIHRoaXMgaXMgcG9zc2libHlcbiAgICAvLyBhbiBIVE1MIGluamVjdGlvbiBhdHRhY2sgLSBpdCdzIGxpa2VseSB0b28gbGF0ZSBpZiB0aGlzIGlzIGFscmVhZHkgaW5cbiAgICAvLyBwcm9kdWN0aW9uICh0aGUgY29kZSBoYXMgbGlrZWx5IGFscmVhZHkgZG9uZSBpdHMgZGFtYWdlIGJ5IHRoZSB0aW1lXG4gICAgLy8gd2UncmUgc2VlaW5nIGl0KS4uLiBidXQgd2UgeWVsbCBsb3VkbHkgYWJvdXQgdGhpcyBzbyB0aGF0IGhvcGVmdWxseSBpdCdzXG4gICAgLy8gbW9yZSBsaWtlbHkgdG8gYmUgY2F1Z2h0IGluIGRldmVsb3BtZW50IGJlZm9yZSBtYWtpbmcgaXQgdG8gcHJvZHVjdGlvblxuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5pZ25vcmVVbmVzY2FwZWRIVE1MKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIk9uZSBvZiB5b3VyIGNvZGUgYmxvY2tzIGluY2x1ZGVzIHVuZXNjYXBlZCBIVE1MLiBUaGlzIGlzIGEgcG90ZW50aWFsbHkgc2VyaW91cyBzZWN1cml0eSByaXNrLlwiKTtcbiAgICAgICAgY29uc29sZS53YXJuKFwiaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy93aWtpL3NlY3VyaXR5XCIpO1xuICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgZWxlbWVudCB3aXRoIHVuZXNjYXBlZCBIVE1MOlwiKTtcbiAgICAgICAgY29uc29sZS53YXJuKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMudGhyb3dVbmVzY2FwZWRIVE1MKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBIVE1MSW5qZWN0aW9uRXJyb3IoXG4gICAgICAgICAgXCJPbmUgb2YgeW91ciBjb2RlIGJsb2NrcyBpbmNsdWRlcyB1bmVzY2FwZWQgSFRNTC5cIixcbiAgICAgICAgICBlbGVtZW50LmlubmVySFRNTFxuICAgICAgICApO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZSA9IGVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgY29uc3QgcmVzdWx0ID0gbGFuZ3VhZ2UgPyBoaWdobGlnaHQodGV4dCwgeyBsYW5ndWFnZSwgaWdub3JlSWxsZWdhbHM6IHRydWUgfSkgOiBoaWdobGlnaHRBdXRvKHRleHQpO1xuXG4gICAgZWxlbWVudC5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgdXBkYXRlQ2xhc3NOYW1lKGVsZW1lbnQsIGxhbmd1YWdlLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIGVsZW1lbnQucmVzdWx0ID0ge1xuICAgICAgbGFuZ3VhZ2U6IHJlc3VsdC5sYW5ndWFnZSxcbiAgICAgIC8vIFRPRE86IHJlbW92ZSB3aXRoIHZlcnNpb24gMTEuMFxuICAgICAgcmU6IHJlc3VsdC5yZWxldmFuY2UsXG4gICAgICByZWxldmFuY2U6IHJlc3VsdC5yZWxldmFuY2VcbiAgICB9O1xuICAgIGlmIChyZXN1bHQuc2Vjb25kQmVzdCkge1xuICAgICAgZWxlbWVudC5zZWNvbmRCZXN0ID0ge1xuICAgICAgICBsYW5ndWFnZTogcmVzdWx0LnNlY29uZEJlc3QubGFuZ3VhZ2UsXG4gICAgICAgIHJlbGV2YW5jZTogcmVzdWx0LnNlY29uZEJlc3QucmVsZXZhbmNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZpcmUoXCJhZnRlcjpoaWdobGlnaHRFbGVtZW50XCIsIHsgZWw6IGVsZW1lbnQsIHJlc3VsdCwgdGV4dCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGhpZ2hsaWdodC5qcyBnbG9iYWwgb3B0aW9ucyB3aXRoIHRoZSBwYXNzZWQgb3B0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8SExKU09wdGlvbnM+fSB1c2VyT3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gY29uZmlndXJlKHVzZXJPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IGluaGVyaXQob3B0aW9ucywgdXNlck9wdGlvbnMpO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlIHYxMiwgZGVwcmVjYXRlZFxuICBjb25zdCBpbml0SGlnaGxpZ2h0aW5nID0gKCkgPT4ge1xuICAgIGhpZ2hsaWdodEFsbCgpO1xuICAgIGRlcHJlY2F0ZWQoXCIxMC42LjBcIiwgXCJpbml0SGlnaGxpZ2h0aW5nKCkgZGVwcmVjYXRlZC4gIFVzZSBoaWdobGlnaHRBbGwoKSBub3cuXCIpO1xuICB9O1xuXG4gIC8vIFRPRE86IHJlbW92ZSB2MTIsIGRlcHJlY2F0ZWRcbiAgZnVuY3Rpb24gaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpIHtcbiAgICBoaWdobGlnaHRBbGwoKTtcbiAgICBkZXByZWNhdGVkKFwiMTAuNi4wXCIsIFwiaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpIGRlcHJlY2F0ZWQuICBVc2UgaGlnaGxpZ2h0QWxsKCkgbm93LlwiKTtcbiAgfVxuXG4gIGxldCB3YW50c0hpZ2hsaWdodCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBhdXRvLWhpZ2hsaWdodHMgYWxsIHByZT5jb2RlIGVsZW1lbnRzIG9uIHRoZSBwYWdlXG4gICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRBbGwoKSB7XG4gICAgLy8gaWYgd2UgYXJlIGNhbGxlZCB0b28gZWFybHkgaW4gdGhlIGxvYWRpbmcgcHJvY2Vzc1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgd2FudHNIaWdobGlnaHQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwob3B0aW9ucy5jc3NTZWxlY3Rvcik7XG4gICAgYmxvY2tzLmZvckVhY2goaGlnaGxpZ2h0RWxlbWVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBib290KCkge1xuICAgIC8vIGlmIGEgaGlnaGxpZ2h0IHdhcyByZXF1ZXN0ZWQgYmVmb3JlIERPTSB3YXMgbG9hZGVkLCBkbyBub3dcbiAgICBpZiAod2FudHNIaWdobGlnaHQpIGhpZ2hsaWdodEFsbCgpO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIGFyZSBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudFxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGJvb3QsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxhbmd1YWdlIGdyYW1tYXIgbW9kdWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZU5hbWVcbiAgICogQHBhcmFtIHtMYW5ndWFnZUZufSBsYW5ndWFnZURlZmluaXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobGFuZ3VhZ2VOYW1lLCBsYW5ndWFnZURlZmluaXRpb24pIHtcbiAgICBsZXQgbGFuZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGxhbmcgPSBsYW5ndWFnZURlZmluaXRpb24oaGxqcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IkMSkge1xuICAgICAgZXJyb3IoXCJMYW5ndWFnZSBkZWZpbml0aW9uIGZvciAne30nIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkLlwiLnJlcGxhY2UoXCJ7fVwiLCBsYW5ndWFnZU5hbWUpKTtcbiAgICAgIC8vIGhhcmQgb3Igc29mdCBlcnJvclxuICAgICAgaWYgKCFTQUZFX01PREUpIHsgdGhyb3cgZXJyb3IkMTsgfSBlbHNlIHsgZXJyb3IoZXJyb3IkMSk7IH1cbiAgICAgIC8vIGxhbmd1YWdlcyB0aGF0IGhhdmUgc2VyaW91cyBlcnJvcnMgYXJlIHJlcGxhY2VkIHdpdGggZXNzZW50aWFsbHkgYVxuICAgICAgLy8gXCJwbGFpbnRleHRcIiBzdGFuZC1pbiBzbyB0aGF0IHRoZSBjb2RlIGJsb2NrcyB3aWxsIHN0aWxsIGdldCBub3JtYWxcbiAgICAgIC8vIGNzcyBjbGFzc2VzIGFwcGxpZWQgdG8gdGhlbSAtIGFuZCBvbmUgYmFkIGxhbmd1YWdlIHdvbid0IGJyZWFrIHRoZVxuICAgICAgLy8gZW50aXJlIGhpZ2hsaWdodGVyXG4gICAgICBsYW5nID0gUExBSU5URVhUX0xBTkdVQUdFO1xuICAgIH1cbiAgICAvLyBnaXZlIGl0IGEgdGVtcG9yYXJ5IG5hbWUgaWYgaXQgZG9lc24ndCBoYXZlIG9uZSBpbiB0aGUgbWV0YS1kYXRhXG4gICAgaWYgKCFsYW5nLm5hbWUpIGxhbmcubmFtZSA9IGxhbmd1YWdlTmFtZTtcbiAgICBsYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXSA9IGxhbmc7XG4gICAgbGFuZy5yYXdEZWZpbml0aW9uID0gbGFuZ3VhZ2VEZWZpbml0aW9uLmJpbmQobnVsbCwgaGxqcyk7XG5cbiAgICBpZiAobGFuZy5hbGlhc2VzKSB7XG4gICAgICByZWdpc3RlckFsaWFzZXMobGFuZy5hbGlhc2VzLCB7IGxhbmd1YWdlTmFtZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgbGFuZ3VhZ2UgZ3JhbW1hciBtb2R1bGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlTmFtZVxuICAgKi9cbiAgZnVuY3Rpb24gdW5yZWdpc3Rlckxhbmd1YWdlKGxhbmd1YWdlTmFtZSkge1xuICAgIGRlbGV0ZSBsYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXTtcbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGFsaWFzZXMpKSB7XG4gICAgICBpZiAoYWxpYXNlc1thbGlhc10gPT09IGxhbmd1YWdlTmFtZSkge1xuICAgICAgICBkZWxldGUgYWxpYXNlc1thbGlhc107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gTGlzdCBvZiBsYW5ndWFnZSBpbnRlcm5hbCBuYW1lc1xuICAgKi9cbiAgZnVuY3Rpb24gbGlzdExhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm5zIHtMYW5ndWFnZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IGFsaWFzTGlzdCAtIHNpbmdsZSBhbGlhcyBvciBsaXN0IG9mIGFsaWFzZXNcbiAgICogQHBhcmFtIHt7bGFuZ3VhZ2VOYW1lOiBzdHJpbmd9fSBvcHRzXG4gICAqL1xuICBmdW5jdGlvbiByZWdpc3RlckFsaWFzZXMoYWxpYXNMaXN0LCB7IGxhbmd1YWdlTmFtZSB9KSB7XG4gICAgaWYgKHR5cGVvZiBhbGlhc0xpc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICBhbGlhc0xpc3QgPSBbYWxpYXNMaXN0XTtcbiAgICB9XG4gICAgYWxpYXNMaXN0LmZvckVhY2goYWxpYXMgPT4geyBhbGlhc2VzW2FsaWFzLnRvTG93ZXJDYXNlKCldID0gbGFuZ3VhZ2VOYW1lOyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gbGFuZ3VhZ2UgaGFzIGF1dG8tZGV0ZWN0aW9uIGVuYWJsZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBuYW1lIG9mIHRoZSBsYW5ndWFnZVxuICAgKi9cbiAgZnVuY3Rpb24gYXV0b0RldGVjdGlvbihuYW1lKSB7XG4gICAgY29uc3QgbGFuZyA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIHJldHVybiBsYW5nICYmICFsYW5nLmRpc2FibGVBdXRvZGV0ZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGVzIHRoZSBvbGQgaGlnaGxpZ2h0QmxvY2sgcGx1Z2lucyB0byB0aGUgbmV3XG4gICAqIGhpZ2hsaWdodEVsZW1lbnQgQVBJXG4gICAqIEBwYXJhbSB7SExKU1BsdWdpbn0gcGx1Z2luXG4gICAqL1xuICBmdW5jdGlvbiB1cGdyYWRlUGx1Z2luQVBJKHBsdWdpbikge1xuICAgIC8vIFRPRE86IHJlbW92ZSB3aXRoIHYxMlxuICAgIGlmIChwbHVnaW5bXCJiZWZvcmU6aGlnaGxpZ2h0QmxvY2tcIl0gJiYgIXBsdWdpbltcImJlZm9yZTpoaWdobGlnaHRFbGVtZW50XCJdKSB7XG4gICAgICBwbHVnaW5bXCJiZWZvcmU6aGlnaGxpZ2h0RWxlbWVudFwiXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHBsdWdpbltcImJlZm9yZTpoaWdobGlnaHRCbG9ja1wiXShcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHsgYmxvY2s6IGRhdGEuZWwgfSwgZGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChwbHVnaW5bXCJhZnRlcjpoaWdobGlnaHRCbG9ja1wiXSAmJiAhcGx1Z2luW1wiYWZ0ZXI6aGlnaGxpZ2h0RWxlbWVudFwiXSkge1xuICAgICAgcGx1Z2luW1wiYWZ0ZXI6aGlnaGxpZ2h0RWxlbWVudFwiXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHBsdWdpbltcImFmdGVyOmhpZ2hsaWdodEJsb2NrXCJdKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBibG9jazogZGF0YS5lbCB9LCBkYXRhKVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtITEpTUGx1Z2lufSBwbHVnaW5cbiAgICovXG4gIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4pIHtcbiAgICB1cGdyYWRlUGx1Z2luQVBJKHBsdWdpbik7XG4gICAgcGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtITEpTUGx1Z2lufSBwbHVnaW5cbiAgICovXG4gIGZ1bmN0aW9uIHJlbW92ZVBsdWdpbihwbHVnaW4pIHtcbiAgICBjb25zdCBpbmRleCA9IHBsdWdpbnMuaW5kZXhPZihwbHVnaW4pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHBsdWdpbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtQbHVnaW5FdmVudH0gZXZlbnRcbiAgICogQHBhcmFtIHthbnl9IGFyZ3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpcmUoZXZlbnQsIGFyZ3MpIHtcbiAgICBjb25zdCBjYiA9IGV2ZW50O1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbihwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW5bY2JdKSB7XG4gICAgICAgIHBsdWdpbltjYl0oYXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogREVQUkVDQVRFRFxuICAgKiBAcGFyYW0ge0hpZ2hsaWdodGVkSFRNTEVsZW1lbnR9IGVsXG4gICAqL1xuICBmdW5jdGlvbiBkZXByZWNhdGVIaWdobGlnaHRCbG9jayhlbCkge1xuICAgIGRlcHJlY2F0ZWQoXCIxMC43LjBcIiwgXCJoaWdobGlnaHRCbG9jayB3aWxsIGJlIHJlbW92ZWQgZW50aXJlbHkgaW4gdjEyLjBcIik7XG4gICAgZGVwcmVjYXRlZChcIjEwLjcuMFwiLCBcIlBsZWFzZSB1c2UgaGlnaGxpZ2h0RWxlbWVudCBub3cuXCIpO1xuXG4gICAgcmV0dXJuIGhpZ2hsaWdodEVsZW1lbnQoZWwpO1xuICB9XG5cbiAgLyogSW50ZXJmYWNlIGRlZmluaXRpb24gKi9cbiAgT2JqZWN0LmFzc2lnbihobGpzLCB7XG4gICAgaGlnaGxpZ2h0LFxuICAgIGhpZ2hsaWdodEF1dG8sXG4gICAgaGlnaGxpZ2h0QWxsLFxuICAgIGhpZ2hsaWdodEVsZW1lbnQsXG4gICAgLy8gVE9ETzogUmVtb3ZlIHdpdGggdjEyIEFQSVxuICAgIGhpZ2hsaWdodEJsb2NrOiBkZXByZWNhdGVIaWdobGlnaHRCbG9jayxcbiAgICBjb25maWd1cmUsXG4gICAgaW5pdEhpZ2hsaWdodGluZyxcbiAgICBpbml0SGlnaGxpZ2h0aW5nT25Mb2FkLFxuICAgIHJlZ2lzdGVyTGFuZ3VhZ2UsXG4gICAgdW5yZWdpc3Rlckxhbmd1YWdlLFxuICAgIGxpc3RMYW5ndWFnZXMsXG4gICAgZ2V0TGFuZ3VhZ2UsXG4gICAgcmVnaXN0ZXJBbGlhc2VzLFxuICAgIGF1dG9EZXRlY3Rpb24sXG4gICAgaW5oZXJpdCxcbiAgICBhZGRQbHVnaW4sXG4gICAgcmVtb3ZlUGx1Z2luXG4gIH0pO1xuXG4gIGhsanMuZGVidWdNb2RlID0gZnVuY3Rpb24oKSB7IFNBRkVfTU9ERSA9IGZhbHNlOyB9O1xuICBobGpzLnNhZmVNb2RlID0gZnVuY3Rpb24oKSB7IFNBRkVfTU9ERSA9IHRydWU7IH07XG4gIGhsanMudmVyc2lvblN0cmluZyA9IHZlcnNpb247XG5cbiAgaGxqcy5yZWdleCA9IHtcbiAgICBjb25jYXQ6IGNvbmNhdCxcbiAgICBsb29rYWhlYWQ6IGxvb2thaGVhZCxcbiAgICBlaXRoZXI6IGVpdGhlcixcbiAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgYW55TnVtYmVyT2ZUaW1lczogYW55TnVtYmVyT2ZUaW1lc1xuICB9O1xuXG4gIGZvciAoY29uc3Qga2V5IGluIE1PREVTKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0eXBlb2YgTU9ERVNba2V5XSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGVlcEZyZWV6ZShNT0RFU1trZXldKTtcbiAgICB9XG4gIH1cblxuICAvLyBtZXJnZSBhbGwgdGhlIG1vZGVzL3JlZ2V4ZXMgaW50byBvdXIgbWFpbiBvYmplY3RcbiAgT2JqZWN0LmFzc2lnbihobGpzLCBNT0RFUyk7XG5cbiAgcmV0dXJuIGhsanM7XG59O1xuXG4vLyBPdGhlciBuYW1lcyBmb3IgdGhlIHZhcmlhYmxlIG1heSBicmVhayBidWlsZCBzY3JpcHRcbmNvbnN0IGhpZ2hsaWdodCA9IEhMSlMoe30pO1xuXG4vLyByZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBoaWdobGlnaHRlciB0byBiZSB1c2VkIGZvciBleHRlbnNpb25zXG4vLyBjaGVjayBodHRwczovL2dpdGh1Yi5jb20vd29vb3JtL2xvd2xpZ2h0L2lzc3Vlcy80N1xuaGlnaGxpZ2h0Lm5ld0luc3RhbmNlID0gKCkgPT4gSExKUyh7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaGlnaGxpZ2h0O1xuaGlnaGxpZ2h0LkhpZ2hsaWdodEpTID0gaGlnaGxpZ2h0O1xuaGlnaGxpZ2h0LmRlZmF1bHQgPSBoaWdobGlnaHQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///33\n"); /***/ }), /* 34 */ /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 35); var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 36); var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ 37); var construct = __webpack_require__(/*! ./construct.js */ 38); function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return construct(Class, arguments, getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return setPrototypeOf(Wrapper, Class); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _wrapNativeSuper(Class); } module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 35 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _getPrototypeOf(o) { module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _getPrototypeOf(o); } module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 36 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _setPrototypeOf(o, p) { module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _setPrototypeOf(o, p); } module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 37 */ /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 38 */ /*!**********************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/construct.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 36); var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 39); function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; } else { module.exports = _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) setPrototypeOf(instance, Class.prototype); return instance; }, module.exports.__esModule = true, module.exports["default"] = module.exports; } return _construct.apply(null, arguments); } module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 39 */ /*!*************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 40 */ /*!**************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ 41); var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ 42); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 43); var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ 45); function _slicedToArray(arr, i) { return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 41 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 42 */ /*!*********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 43 */ /*!***************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 44); function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); } module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 44 */ /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 45 */ /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 46 */ /*!*********************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/inherits.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 36); function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) setPrototypeOf(subClass, superClass); } module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 47 */ /*!**************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ 48); function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return assertThisInitialized(self); } module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 48 */ /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 49 */ /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 50); var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 51); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 43); var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 52); function _toConsumableArray(arr) { return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); } module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 50 */ /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 44); function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return arrayLikeToArray(arr); } module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 51 */ /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 52 */ /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 53 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 54 */ /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 55 */ /*!******************************************************************************************************!*\ !*** /Users/future/Desktop/uniapp/uni-h5-chatgpt/h5_chatgpt/pages/highlight.js/lib/languages/xml.js ***! \******************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n var regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n var TAG_NAME_RE = regex.concat(/(?:[A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])/, regex.optional(/(?:[\\x2D\\.0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])*:/), /(?:[\\x2D\\.0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])*/);\n var XML_IDENT_RE = /(?:[\\x2D\\.0-:A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])+/;\n var XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n var XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [{\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }]\n };\n var XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n var APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {\n className: 'string'\n });\n var QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'string'\n });\n var TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /`]+/\n }]\n }]\n }]\n };\n return {\n name: 'HTML, XML',\n aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist', 'wsf', 'svg'],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [{\n className: 'meta',\n begin: //,\n relevance: 10,\n contains: [XML_META_KEYWORDS, QUOTE_META_STRING_MODE, APOS_META_STRING_MODE, XML_META_PAR_KEYWORDS, {\n begin: /\\[/,\n end: /\\]/,\n contains: [{\n className: 'meta',\n begin: //,\n contains: [XML_META_KEYWORDS, XML_META_PAR_KEYWORDS, QUOTE_META_STRING_MODE, APOS_META_STRING_MODE]\n }]\n }]\n }, hljs.COMMENT(//, {\n relevance: 10\n }), {\n begin: //,\n relevance: 10\n }, XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [{\n begin: /<\\?xml/,\n relevance: 10,\n contains: [QUOTE_META_STRING_MODE]\n }, {\n begin: /<\\?[a-z][a-z0-9]+/\n }]\n }, {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n ')/,\n end: />/,\n keywords: {\n name: 'style'\n },\n contains: [TAG_INTERNALS],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: ['css', 'xml']\n }\n }, {\n className: 'tag',\n // See the comment in the